Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
authorDominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 21 Jan 2010 18:18:20 +0000
changeset 0 89d6a7a84779
child 1 25a17d01db0c
Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385
Symbian3/SDK/LICENSE.txt
Symbian3/SDK/Source/GUID-00025EAD-C4B6-5408-96A3-FFDBBBDC7CAB.dita
Symbian3/SDK/Source/GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293.dita
Symbian3/SDK/Source/GUID-0010EB39-8C23-5453-BE96-4EFC520B6F81.dita
Symbian3/SDK/Source/GUID-00113601-193D-5214-9DFB-1C67456B7039.dita
Symbian3/SDK/Source/GUID-001F6216-48AE-57D4-8985-65CF77B26F19.dita
Symbian3/SDK/Source/GUID-00363030-AAE2-5231-8407-AC609DA0F496.dita
Symbian3/SDK/Source/GUID-00552575-AB10-4CB3-A37B-D83AE5975811.dita
Symbian3/SDK/Source/GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita
Symbian3/SDK/Source/GUID-006C503D-1E52-450D-A4DA-8C19B141E09F.dita
Symbian3/SDK/Source/GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita
Symbian3/SDK/Source/GUID-008F9006-8548-443D-A7ED-4A8233E051C6.dita
Symbian3/SDK/Source/GUID-00B82F15-0ACC-59A9-AB9C-E4342ABE64D3.dita
Symbian3/SDK/Source/GUID-00DE7E90-4C6B-577A-85E1-76698CA2AB69.dita
Symbian3/SDK/Source/GUID-00FFF2B3-F8E4-5CBF-B031-240D98BB2111.dita
Symbian3/SDK/Source/GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita
Symbian3/SDK/Source/GUID-010627ED-7BCD-4AF1-BECB-661E21015E6E.dita
Symbian3/SDK/Source/GUID-01103A66-532B-54ED-9D4D-39B81327E783.dita
Symbian3/SDK/Source/GUID-0116F567-D005-5480-AB37-9799398C0E6F.dita
Symbian3/SDK/Source/GUID-011D0974-CC37-5335-A8EB-7ECF4FC30F93.dita
Symbian3/SDK/Source/GUID-0129AE17-B171-5CD5-8542-1DB738CBAB8B.dita
Symbian3/SDK/Source/GUID-0142B290-DA6C-5574-83D7-7555D804D9B5.dita
Symbian3/SDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38-master.jpg
Symbian3/SDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e231612_href.jpg
Symbian3/SDK/Source/GUID-01677FF9-8FA1-5F0D-8223-46EDD20E3075.dita
Symbian3/SDK/Source/GUID-0174CE72-AEF6-5DA9-A9C5-074781BD544F.dita
Symbian3/SDK/Source/GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98.dita
Symbian3/SDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB-master.png
Symbian3/SDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e217409_href.png
Symbian3/SDK/Source/GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita
Symbian3/SDK/Source/GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita
Symbian3/SDK/Source/GUID-01E7AE98-024C-4119-87D0-5BB9D53DA119.dita
Symbian3/SDK/Source/GUID-01F0F2D6-CB67-45B4-B0E4-1A85D113396B_d0e56401_href.png
Symbian3/SDK/Source/GUID-01F6E612-B151-5FC3-B08A-E17A7987F029.dita
Symbian3/SDK/Source/GUID-02200D23-E8ED-432A-9D71-694A4558BD20.dita
Symbian3/SDK/Source/GUID-023268BB-8C52-51A1-9E3B-4C7E265DFDAB.dita
Symbian3/SDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70-master.jpg
Symbian3/SDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e284687_href.jpg
Symbian3/SDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73-master.png
Symbian3/SDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e313957_href.png
Symbian3/SDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85-master.png
Symbian3/SDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e253000_href.png
Symbian3/SDK/Source/GUID-026164D5-6A32-5688-9D28-926DC0A61F35.dita
Symbian3/SDK/Source/GUID-02659624-4C27-573C-BE2E-0250D860BEA3.dita
Symbian3/SDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022-master.png
Symbian3/SDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e3275_href.png
Symbian3/SDK/Source/GUID-026E865E-12FA-59A9-B923-309B65790E23.dita
Symbian3/SDK/Source/GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A.dita
Symbian3/SDK/Source/GUID-02C9C31A-6563-59E4-BF46-129F4ED95087.dita
Symbian3/SDK/Source/GUID-02E674F7-86F1-5A9C-8189-F4CEE80D9FBD.dita
Symbian3/SDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306-master.png
Symbian3/SDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e367220_href.png
Symbian3/SDK/Source/GUID-03194FB8-CC3F-5B8D-8719-3756FAC88102.dita
Symbian3/SDK/Source/GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita
Symbian3/SDK/Source/GUID-03494D84-7E6D-5128-A8CF-2F6E25543591.dita
Symbian3/SDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9-master.png
Symbian3/SDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e386672_href.png
Symbian3/SDK/Source/GUID-0368678A-6963-5558-8DC2-0E618B927538.dita
Symbian3/SDK/Source/GUID-036FCEAE-8137-5764-A512-DA1EE06DFCB8.dita
Symbian3/SDK/Source/GUID-03708BB2-68CF-4EFB-BE2F-C92DAD59F7F2.dita
Symbian3/SDK/Source/GUID-037225BC-AC45-540E-A899-1B8AB9112D6E.dita
Symbian3/SDK/Source/GUID-03866ADB-5916-5B31-BCF0-44F94E12B740.dita
Symbian3/SDK/Source/GUID-038747F2-E5A2-5739-BFF5-69B6BD0DCEB2.dita
Symbian3/SDK/Source/GUID-0387B02E-9B81-5E61-A33E-D644251424A2.dita
Symbian3/SDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e53395_href.png
Symbian3/SDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e62355_href.png
Symbian3/SDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C-master.png
Symbian3/SDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e189390_href.png
Symbian3/SDK/Source/GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita
Symbian3/SDK/Source/GUID-03D132BE-5B90-50E1-88D3-D66289C02444.dita
Symbian3/SDK/Source/GUID-03DE8DB5-BF37-4E02-BFB7-D14BD8B3E1BA.dita
Symbian3/SDK/Source/GUID-0422EDC4-E17C-5E58-BB37-03CCA79ED3E9.dita
Symbian3/SDK/Source/GUID-042868E6-88BF-5797-BB53-8E34283DCF16.dita
Symbian3/SDK/Source/GUID-0446FD98-E0A0-5E6A-B056-AF54172B7453.dita
Symbian3/SDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A-master.png
Symbian3/SDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e2109_href.png
Symbian3/SDK/Source/GUID-047E3462-F806-4C54-9DC5-6B78907CA949.dita
Symbian3/SDK/Source/GUID-049A089E-FF08-5706-8485-8C9A5A0BCF6F.dita
Symbian3/SDK/Source/GUID-04C294A2-C63B-55A7-82DE-379BBFA05EF9.dita
Symbian3/SDK/Source/GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita
Symbian3/SDK/Source/GUID-04F076C4-AFFF-571C-8B73-B8589B58EC56.dita
Symbian3/SDK/Source/GUID-04FB9E08-DDFE-53B1-B8E1-687A1AEC4286.dita
Symbian3/SDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F-master.png
Symbian3/SDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e166912_href.png
Symbian3/SDK/Source/GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A.dita
Symbian3/SDK/Source/GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01.dita
Symbian3/SDK/Source/GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita
Symbian3/SDK/Source/GUID-0554452F-856D-51A1-A1A5-C44EEFF7A3D4.dita
Symbian3/SDK/Source/GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e61984_href.png
Symbian3/SDK/Source/GUID-056165A7-E8A1-4868-8051-9EC58C5A3342.dita
Symbian3/SDK/Source/GUID-056736E0-3DF0-49FE-A44D-1A8E47FE45A0.dita
Symbian3/SDK/Source/GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita
Symbian3/SDK/Source/GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita
Symbian3/SDK/Source/GUID-05785721-C090-50C6-BE5E-46EF14222FFF.dita
Symbian3/SDK/Source/GUID-057F1F82-56AF-5696-853E-79196A3D567E.dita
Symbian3/SDK/Source/GUID-0584846D-D4D9-5093-8FE5-764CCFBA813F.dita
Symbian3/SDK/Source/GUID-058D9E7F-5F4B-5656-BA49-16ED2D1451AE.dita
Symbian3/SDK/Source/GUID-05931546-C3C9-4085-8D5F-6B6C3F21D24C.dita
Symbian3/SDK/Source/GUID-059326DB-E7A4-5CB8-BCA7-FF0C71D9D1C7.dita
Symbian3/SDK/Source/GUID-05A3E75B-25F9-54AC-8AF8-3E97F832E626.dita
Symbian3/SDK/Source/GUID-05D6AB1C-8548-58C6-AA6C-EE362FF49247.dita
Symbian3/SDK/Source/GUID-05DA872F-F70E-5085-8AA9-12B6A0B71917.dita
Symbian3/SDK/Source/GUID-05DE2202-C0A4-4612-8EA0-7DA8B3DEA331.dita
Symbian3/SDK/Source/GUID-05E3ED3B-41F8-5FC2-87A2-627BD5E6BB04.dita
Symbian3/SDK/Source/GUID-05FDC28B-F033-5FDC-8F41-71BD212C27E2.dita
Symbian3/SDK/Source/GUID-06031510-2089-55A1-98A2-9045D1D07E4E.dita
Symbian3/SDK/Source/GUID-06676D89-FDE7-58FD-9D2E-3C984CD24BAC.dita
Symbian3/SDK/Source/GUID-06730728-30C5-51FD-BD37-FB62F2958D28.dita
Symbian3/SDK/Source/GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita
Symbian3/SDK/Source/GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB.dita
Symbian3/SDK/Source/GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864.dita
Symbian3/SDK/Source/GUID-06DD6077-2ABD-5268-878E-9B26A3C4BE20.dita
Symbian3/SDK/Source/GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292.dita
Symbian3/SDK/Source/GUID-07045409-4714-5800-89EF-73590D4F0F37.dita
Symbian3/SDK/Source/GUID-0715E8B9-8F43-5C7B-BDC6-4E8FA5352714.dita
Symbian3/SDK/Source/GUID-071A1E59-FE77-5D4D-B4D1-E6ECDF68BB03.dita
Symbian3/SDK/Source/GUID-0747B7D8-86B4-51DE-BC71-7FACE61EB5E2.dita
Symbian3/SDK/Source/GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita
Symbian3/SDK/Source/GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita
Symbian3/SDK/Source/GUID-078492C7-7E25-5D6E-B6BE-3A5DAA4522DA.dita
Symbian3/SDK/Source/GUID-078E6232-31FA-5582-84B8-F5E3E4B14A05.dita
Symbian3/SDK/Source/GUID-07A31FD0-304A-57CA-8FFE-4DAD8EE9B30F.dita
Symbian3/SDK/Source/GUID-07A42662-87A1-4537-89B9-F87DFC8481E8.dita
Symbian3/SDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D-master.jpg
Symbian3/SDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e303514_href.jpg
Symbian3/SDK/Source/GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B.dita
Symbian3/SDK/Source/GUID-07CBDD99-CA8F-5CF9-B957-933C36D47195.dita
Symbian3/SDK/Source/GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita
Symbian3/SDK/Source/GUID-07DD47FD-86B7-4AFD-BEDB-DF6EA12DFC6C.dita
Symbian3/SDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3-master.png
Symbian3/SDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e215188_href.png
Symbian3/SDK/Source/GUID-07FA8EC8-151F-574A-89F2-34C4AE2D1F0B.dita
Symbian3/SDK/Source/GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6.dita
Symbian3/SDK/Source/GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e8048_href.png
Symbian3/SDK/Source/GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita
Symbian3/SDK/Source/GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita
Symbian3/SDK/Source/GUID-082E47B3-8AAB-51B7-93F9-3C528B97D0A9.dita
Symbian3/SDK/Source/GUID-08304A3F-4331-5936-984E-74A1F35905B8.dita
Symbian3/SDK/Source/GUID-08427065-B8E5-5194-B095-3B5213836BED.dita
Symbian3/SDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0-master.png
Symbian3/SDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e195209_href.png
Symbian3/SDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254-master.png
Symbian3/SDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e102675_href.png
Symbian3/SDK/Source/GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita
Symbian3/SDK/Source/GUID-088DC096-0CC7-5510-8D71-7DAF5961A681.dita
Symbian3/SDK/Source/GUID-08937880-C381-4C8B-AC17-7162C1243E23_d0e61946_href.png
Symbian3/SDK/Source/GUID-089FE9FA-44C8-48D5-A473-9486BF763283.dita
Symbian3/SDK/Source/GUID-08A6A034-5609-58B0-8EA7-943B2A937B40.dita
Symbian3/SDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3-master.png
Symbian3/SDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e379988_href.png
Symbian3/SDK/Source/GUID-08B878D0-C0DA-46CC-ACC2-E576E5A3D937.dita
Symbian3/SDK/Source/GUID-08CCCF43-A742-547B-A0E0-F5F6176DABCE.dita
Symbian3/SDK/Source/GUID-08CEB0E8-7E94-545F-AA0C-E27CED08C167.dita
Symbian3/SDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9-master.png
Symbian3/SDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e211993_href.png
Symbian3/SDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7-master.png
Symbian3/SDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e215495_href.png
Symbian3/SDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549-master.png
Symbian3/SDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e165370_href.png
Symbian3/SDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D-master.png
Symbian3/SDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D_d0e417162_href.png
Symbian3/SDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita
Symbian3/SDK/Source/GUID-093516F2-9076-5A96-9BEF-F5A77F75239C.dita
Symbian3/SDK/Source/GUID-0957A663-B00E-48CC-B5E3-7B8C0F33FDF7_d0e62257_href.png
Symbian3/SDK/Source/GUID-0970A970-6E56-556C-B032-B7EAF8ABBBA6.dita
Symbian3/SDK/Source/GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e50244_href.png
Symbian3/SDK/Source/GUID-0995EBF6-D203-57B3-9F53-972AEB8F3D3C.dita
Symbian3/SDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7-master.png
Symbian3/SDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e333788_href.png
Symbian3/SDK/Source/GUID-09D1DB3C-DA2D-4E16-8EEB-2195F765BE22.dita
Symbian3/SDK/Source/GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita
Symbian3/SDK/Source/GUID-09FC1F03-B5EB-5228-832B-C64D95AEA05B.dita
Symbian3/SDK/Source/GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F.dita
Symbian3/SDK/Source/GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita
Symbian3/SDK/Source/GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita
Symbian3/SDK/Source/GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4.dita
Symbian3/SDK/Source/GUID-0A9D11FB-6A24-5115-A39C-23FDE864DF6A.dita
Symbian3/SDK/Source/GUID-0AA6186C-DD10-5811-940F-D26A7D34C66F.dita
Symbian3/SDK/Source/GUID-0AB9B221-38AE-576E-AC5A-C4C106E3D93B.dita
Symbian3/SDK/Source/GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631.dita
Symbian3/SDK/Source/GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01.dita
Symbian3/SDK/Source/GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita
Symbian3/SDK/Source/GUID-0AF14EE0-D4FD-53EA-B7E5-10724E3FA0DF.dita
Symbian3/SDK/Source/GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita
Symbian3/SDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0-master.png
Symbian3/SDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e65930_href.png
Symbian3/SDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7-master.png
Symbian3/SDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e307727_href.png
Symbian3/SDK/Source/GUID-0B2245C5-766B-5CF1-8A0C-DD98CEEEBB05.dita
Symbian3/SDK/Source/GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita
Symbian3/SDK/Source/GUID-0B5DB521-831C-5016-BD38-EC7E86F41513.dita
Symbian3/SDK/Source/GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23-master.png
Symbian3/SDK/Source/GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23_d0e46390_href.png
Symbian3/SDK/Source/GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23_d0e52501_href.png
Symbian3/SDK/Source/GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160.dita
Symbian3/SDK/Source/GUID-0B94F027-6524-54D1-9A5C-3849DA41FCB7.dita
Symbian3/SDK/Source/GUID-0B95131E-6B7E-57A0-98B1-0B405207E0C4.dita
Symbian3/SDK/Source/GUID-0B97A12D-4EA8-5B08-9D59-4A3C892D01D4.dita
Symbian3/SDK/Source/GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita
Symbian3/SDK/Source/GUID-0BE71FC3-4759-50FC-A74F-C3DD42C9FCED.dita
Symbian3/SDK/Source/GUID-0BF25E2A-99B9-5558-B805-019430409518.dita
Symbian3/SDK/Source/GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e240538_href.png
Symbian3/SDK/Source/GUID-0C02D927-0B06-49BD-8738-149DCDDB23FC.dita
Symbian3/SDK/Source/GUID-0C0A85D1-BC15-502F-9DD1-A48C0A908CED.dita
Symbian3/SDK/Source/GUID-0C19D3F1-CF60-4760-8A77-242E14647738.dita
Symbian3/SDK/Source/GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita
Symbian3/SDK/Source/GUID-0C6CCACF-84B2-5715-BCF3-12330E6F05D4.dita
Symbian3/SDK/Source/GUID-0C71B9C6-0782-5667-932A-07D770748DCE.dita
Symbian3/SDK/Source/GUID-0C8389B8-91DF-58A1-A2A1-945A18CCBB10.dita
Symbian3/SDK/Source/GUID-0C85D5DE-D78D-4DDB-BA00-6278690C1047.dita
Symbian3/SDK/Source/GUID-0CA63AEB-9A80-51C6-AE7F-E747D6B3B789.dita
Symbian3/SDK/Source/GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita
Symbian3/SDK/Source/GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita
Symbian3/SDK/Source/GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e240595_href.png
Symbian3/SDK/Source/GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita
Symbian3/SDK/Source/GUID-0CD273A2-434C-52E0-B840-CCF24B2853B8.dita
Symbian3/SDK/Source/GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e46046_href.png
Symbian3/SDK/Source/GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e52048_href.png
Symbian3/SDK/Source/GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e60110_href.png
Symbian3/SDK/Source/GUID-0CDA8FCA-AABE-5988-9467-30AA1AECCC90.dita
Symbian3/SDK/Source/GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E.dita
Symbian3/SDK/Source/GUID-0D093C3D-4D85-455E-B685-064A9B25B1FE.dita
Symbian3/SDK/Source/GUID-0D16866C-F46B-5A2B-B974-324278588A1B.dita
Symbian3/SDK/Source/GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5.dita
Symbian3/SDK/Source/GUID-0D2456BA-0737-5AB4-9C5E-F8CD70F4DCF6.dita
Symbian3/SDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8-master.png
Symbian3/SDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e65088_href.png
Symbian3/SDK/Source/GUID-0D5692FB-305E-58B2-B105-B309BB9AE38D.dita
Symbian3/SDK/Source/GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita
Symbian3/SDK/Source/GUID-0D619063-F2DB-53FC-A5E6-BC09AD915FA4.dita
Symbian3/SDK/Source/GUID-0D61EBFF-F513-5911-B234-09F36E5E3DC8.dita
Symbian3/SDK/Source/GUID-0DA1FA9A-0F61-580D-922F-02B33CEA09D6.dita
Symbian3/SDK/Source/GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita
Symbian3/SDK/Source/GUID-0DBB2379-6FCB-5D1D-AE5A-2DC7C498F479.dita
Symbian3/SDK/Source/GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195.dita
Symbian3/SDK/Source/GUID-0DEC4D1B-2CD6-49BC-92E4-F0CB0BCBFA9D-master.jpg
Symbian3/SDK/Source/GUID-0DEC4D1B-2CD6-49BC-92E4-F0CB0BCBFA9D_d0e61865_href.jpg
Symbian3/SDK/Source/GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita
Symbian3/SDK/Source/GUID-0DF9E318-BE97-531E-AB39-A7B5E8787C87.dita
Symbian3/SDK/Source/GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C.dita
Symbian3/SDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627-master.png
Symbian3/SDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e319099_href.png
Symbian3/SDK/Source/GUID-0E226657-1A19-5601-B392-4E9A0BDB4014.dita
Symbian3/SDK/Source/GUID-0E3E2FAD-FC85-5995-8B5C-8F1C1A4186D0.dita
Symbian3/SDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51-master.jpg
Symbian3/SDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e284607_href.jpg
Symbian3/SDK/Source/GUID-0E695106-4139-4335-A11F-BD04418DD583.dita
Symbian3/SDK/Source/GUID-0E6C7017-E430-51C0-A5D6-1798B0DCC6BC.dita
Symbian3/SDK/Source/GUID-0E785F9A-F349-4941-B0B1-CFEE8A961464.dita
Symbian3/SDK/Source/GUID-0E7D9177-E722-4906-BA75-667AF390A476-master.png
Symbian3/SDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE-master.png
Symbian3/SDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e256954_href.png
Symbian3/SDK/Source/GUID-0EAB8D75-AA27-5548-8D0B-FC394AC79358.dita
Symbian3/SDK/Source/GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita
Symbian3/SDK/Source/GUID-0ECBFCA7-D398-53CE-BAF4-86CFB0124A0E.dita
Symbian3/SDK/Source/GUID-0EDFDB1E-B851-5871-B235-453A2B2F6BFB.dita
Symbian3/SDK/Source/GUID-0EE3180B-4814-517E-A6DD-748136C17D55.dita
Symbian3/SDK/Source/GUID-0EECEF02-EC6A-53D5-8B27-C0732DA0160A.dita
Symbian3/SDK/Source/GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita
Symbian3/SDK/Source/GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita
Symbian3/SDK/Source/GUID-0F1D1BC4-C8FB-55BE-83FE-DD604C4A9CA3.dita
Symbian3/SDK/Source/GUID-0F3E543D-CFEE-5CD8-8BAB-19B3A993388F.dita
Symbian3/SDK/Source/GUID-0F4DE9E0-4A98-5914-9AB1-DD6CE1A5A1F3.dita
Symbian3/SDK/Source/GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita
Symbian3/SDK/Source/GUID-0F647342-E069-5444-9370-58520375543A.dita
Symbian3/SDK/Source/GUID-0F784804-8452-4C92-ABB3-56B81BAED744.dita
Symbian3/SDK/Source/GUID-0F875AD4-F3A1-5AAA-81D3-E60436472443.dita
Symbian3/SDK/Source/GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita
Symbian3/SDK/Source/GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita
Symbian3/SDK/Source/GUID-0FB7E59D-F81A-4B6F-B9E7-C97FDA5B7925_d0e56403_href.png
Symbian3/SDK/Source/GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E.dita
Symbian3/SDK/Source/GUID-0FE4CC82-F638-5CDC-AC3F-096A05807480.dita
Symbian3/SDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308-master.png
Symbian3/SDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e66374_href.png
Symbian3/SDK/Source/GUID-100F41B4-67BE-5978-99DA-C9B6DE8760F7.dita
Symbian3/SDK/Source/GUID-106B5A31-012E-503D-A972-A745ECADC1E7.dita
Symbian3/SDK/Source/GUID-107AE89E-901E-535F-8D1A-EE347D7822B1.dita
Symbian3/SDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5-master.png
Symbian3/SDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e256671_href.png
Symbian3/SDK/Source/GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita
Symbian3/SDK/Source/GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF.dita
Symbian3/SDK/Source/GUID-10A50B7C-63DB-599B-86C1-17989595CBD2.dita
Symbian3/SDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4-master.png
Symbian3/SDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e195902_href.png
Symbian3/SDK/Source/GUID-10CF321F-3298-4527-BFF5-0351085C7C8C.dita
Symbian3/SDK/Source/GUID-10E19876-85CA-5D45-854B-1F2C5A45A333.dita
Symbian3/SDK/Source/GUID-10F1D390-2CB6-584B-B760-E6A6E1D8FDDA.dita
Symbian3/SDK/Source/GUID-10F30EB2-1431-5219-B1F8-95895FD5A448.dita
Symbian3/SDK/Source/GUID-110A0151-5719-51BC-8506-C18BE57FB400.dita
Symbian3/SDK/Source/GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita
Symbian3/SDK/Source/GUID-114C52FE-C8C5-4418-9C73-CEBB228C7542.dita
Symbian3/SDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C-master.png
Symbian3/SDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e313840_href.png
Symbian3/SDK/Source/GUID-116AB921-B063-5CC2-962F-A74562F20EAE.dita
Symbian3/SDK/Source/GUID-1171C47F-D7F3-5A49-B191-DB6CB7C84DC8.dita
Symbian3/SDK/Source/GUID-118C8F84-2BB3-5F60-B6AB-22F0F1B3349E.dita
Symbian3/SDK/Source/GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita
Symbian3/SDK/Source/GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783.dita
Symbian3/SDK/Source/GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita
Symbian3/SDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01-master.png
Symbian3/SDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e92600_href.png
Symbian3/SDK/Source/GUID-11E05C4A-CC94-5A0E-9D07-1863FB03747F.dita
Symbian3/SDK/Source/GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e9926_href.png
Symbian3/SDK/Source/GUID-11EEFB3D-0414-5BEB-9D78-56A4B9154008.dita
Symbian3/SDK/Source/GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita
Symbian3/SDK/Source/GUID-120163D6-2E49-5D91-A746-2C8C4C944461.dita
Symbian3/SDK/Source/GUID-1261F3A3-6F27-5A85-81FF-A6858F03F711.dita
Symbian3/SDK/Source/GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita
Symbian3/SDK/Source/GUID-1277D793-4A0A-50A7-9414-AEE93E906E80.dita
Symbian3/SDK/Source/GUID-128F20B1-4293-59C5-99B5-83BF43CA2F01.dita
Symbian3/SDK/Source/GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita
Symbian3/SDK/Source/GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita
Symbian3/SDK/Source/GUID-129FCE62-5498-4717-864B-7DC6A5C5944D.dita
Symbian3/SDK/Source/GUID-12A754EE-7D90-56C8-BDA7-3293F34BE456.dita
Symbian3/SDK/Source/GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita
Symbian3/SDK/Source/GUID-12CB6E0E-69CD-51A6-8966-3621CB26E1CD.dita
Symbian3/SDK/Source/GUID-12D1EE2F-AF1E-4C53-ADC8-D8BC205BD063.dita
Symbian3/SDK/Source/GUID-12D1F61B-6BC6-5215-A832-E84C0F480765.dita
Symbian3/SDK/Source/GUID-12D5C140-DFDA-549B-9CCF-EF7488B832AE.dita
Symbian3/SDK/Source/GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita
Symbian3/SDK/Source/GUID-12E2AFC9-0010-5ACE-9635-6EBC4036E36A.dita
Symbian3/SDK/Source/GUID-12FF05BE-F06E-58F0-909D-05CB6F7FA03E.dita
Symbian3/SDK/Source/GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita
Symbian3/SDK/Source/GUID-130D7E96-2AEF-559B-B5F1-D4B6754519C9.dita
Symbian3/SDK/Source/GUID-132DBA2F-B913-5565-9720-015777630C22.dita
Symbian3/SDK/Source/GUID-133999E8-0ACB-5929-949E-82BB16F8E267.dita
Symbian3/SDK/Source/GUID-13574CBC-893F-5756-825F-1E14A85E9C90.dita
Symbian3/SDK/Source/GUID-1361A508-D3DB-53F8-B1A1-34646F777B88.dita
Symbian3/SDK/Source/GUID-136540F0-108A-5794-A0FE-D95260F4E59B.dita
Symbian3/SDK/Source/GUID-139E7235-4F23-5F0E-A969-6D7165AE5298.dita
Symbian3/SDK/Source/GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605.dita
Symbian3/SDK/Source/GUID-13BDBFA4-49FE-4D62-8B5F-BE3DF3ABAF3E.dita
Symbian3/SDK/Source/GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita
Symbian3/SDK/Source/GUID-13D2B45C-3A2A-497A-8D6A-87BE34D1DE69.dita
Symbian3/SDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B-master.png
Symbian3/SDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e369649_href.png
Symbian3/SDK/Source/GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita
Symbian3/SDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324-master.png
Symbian3/SDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e262696_href.png
Symbian3/SDK/Source/GUID-141633B8-A3D4-5BBB-97C5-3D928746ECE7.dita
Symbian3/SDK/Source/GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e267376_href.png
Symbian3/SDK/Source/GUID-14A0FC93-2AD9-5B33-B423-2CCAD3C96B5F.dita
Symbian3/SDK/Source/GUID-14BAAB7C-35CD-5A43-B362-79F88C7712DE.dita
Symbian3/SDK/Source/GUID-14BBFDA8-7765-5939-9E47-36E299841F50.dita
Symbian3/SDK/Source/GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita
Symbian3/SDK/Source/GUID-1501D056-D068-5DE4-9408-17B530D75FC3.dita
Symbian3/SDK/Source/GUID-152B5CE8-B689-5E99-885F-79FB0654B7D6.dita
Symbian3/SDK/Source/GUID-152BF5C3-CE32-5174-A043-1B2D5D8168C3.dita
Symbian3/SDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A-master.png
Symbian3/SDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e153880_href.png
Symbian3/SDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC-master.png
Symbian3/SDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e319026_href.png
Symbian3/SDK/Source/GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita
Symbian3/SDK/Source/GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita
Symbian3/SDK/Source/GUID-157445C2-BFF7-5733-B87C-CC249D8506CD.dita
Symbian3/SDK/Source/GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0.dita
Symbian3/SDK/Source/GUID-15967AB3-B03C-5DAA-A784-D25ABFFC995E.dita
Symbian3/SDK/Source/GUID-15A686A8-942E-54F8-BFD4-402323979C5A.dita
Symbian3/SDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484-master.png
Symbian3/SDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e313553_href.png
Symbian3/SDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF-master.png
Symbian3/SDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e17282_href.png
Symbian3/SDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC-master.png
Symbian3/SDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e94885_href.png
Symbian3/SDK/Source/GUID-15F35B7F-8CDD-49BA-A015-475C0F6221B8_d0e54972_href.png
Symbian3/SDK/Source/GUID-1614B24F-5DB2-43AA-9A18-723BD61B8B4C.dita
Symbian3/SDK/Source/GUID-162A4409-1ABB-51A1-B7F1-75A31A5DEA63.dita
Symbian3/SDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C-master.png
Symbian3/SDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e163553_href.png
Symbian3/SDK/Source/GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E.dita
Symbian3/SDK/Source/GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita
Symbian3/SDK/Source/GUID-16A1C613-288D-471C-8551-51B61290E28F.dita
Symbian3/SDK/Source/GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita
Symbian3/SDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60-master.png
Symbian3/SDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e354652_href.png
Symbian3/SDK/Source/GUID-16BA7B80-DC75-512C-AAEC-F571B5B73F09.dita
Symbian3/SDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B-master.png
Symbian3/SDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e351531_href.png
Symbian3/SDK/Source/GUID-16D0854D-55EF-4E22-B7D2-72603699BC59.dita
Symbian3/SDK/Source/GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita
Symbian3/SDK/Source/GUID-16E7CF5D-4364-5F42-94FF-9F79BB52523D.dita
Symbian3/SDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B-master.png
Symbian3/SDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e313175_href.png
Symbian3/SDK/Source/GUID-1708D9F8-1277-59B9-8130-BBEFFFF1F481.dita
Symbian3/SDK/Source/GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita
Symbian3/SDK/Source/GUID-17273087-B962-5E8A-8715-055C8BF34A5D.dita
Symbian3/SDK/Source/GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita
Symbian3/SDK/Source/GUID-1733B4E1-3264-58DF-957B-F5C0AE1E0644.dita
Symbian3/SDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452-master.png
Symbian3/SDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e347864_href.png
Symbian3/SDK/Source/GUID-1747534D-063A-45B0-8636-E7767F984BB0.dita
Symbian3/SDK/Source/GUID-174D98FF-6782-564E-9FDF-1AE32F770591.dita
Symbian3/SDK/Source/GUID-176913BA-3877-58E2-9E12-3606EE697813.dita
Symbian3/SDK/Source/GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita
Symbian3/SDK/Source/GUID-179099DA-1CD9-5912-B41B-363C132C7A86.dita
Symbian3/SDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB-master.png
Symbian3/SDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e312839_href.png
Symbian3/SDK/Source/GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita
Symbian3/SDK/Source/GUID-17F3FFF4-00B8-492F-95BD-11AFF02CAAB2.dita
Symbian3/SDK/Source/GUID-18182059-859D-51CF-A940-D230D9F9CF8C.dita
Symbian3/SDK/Source/GUID-1824B323-AAA8-5403-A4CF-D1F530CBDAF5.dita
Symbian3/SDK/Source/GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita
Symbian3/SDK/Source/GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita
Symbian3/SDK/Source/GUID-183D31B7-992E-4537-9831-C859EB61D10F.swf
Symbian3/SDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E-master.png
Symbian3/SDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e376399_href.png
Symbian3/SDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404-master.png
Symbian3/SDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e183595_href.png
Symbian3/SDK/Source/GUID-186B9876-2A08-5F23-BB49-49EC34C51507.dita
Symbian3/SDK/Source/GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita
Symbian3/SDK/Source/GUID-188F9462-F805-522A-84FF-770EAB045504.dita
Symbian3/SDK/Source/GUID-189DA86A-BA77-4314-9597-E3C92B3C82D9.dita
Symbian3/SDK/Source/GUID-189DCEF1-EBCD-5971-9D7C-109F0C910802.dita
Symbian3/SDK/Source/GUID-189FBB0E-0A47-5CCC-9209-DC69E76DE6B3.dita
Symbian3/SDK/Source/GUID-18CB4763-5EEE-5D0C-A293-D84563F06DB1.dita
Symbian3/SDK/Source/GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita
Symbian3/SDK/Source/GUID-18D92465-3F62-55CF-8229-EE811FD5F568.dita
Symbian3/SDK/Source/GUID-18EF9CFA-5080-5F89-89EC-C64897612D6B.dita
Symbian3/SDK/Source/GUID-1903F18A-F095-5494-AF32-423AE7F27252.dita
Symbian3/SDK/Source/GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita
Symbian3/SDK/Source/GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita
Symbian3/SDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB-master.jpg
Symbian3/SDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e247255_href.jpg
Symbian3/SDK/Source/GUID-19450648-4400-57A3-95FB-FC8AE73CD0A8.dita
Symbian3/SDK/Source/GUID-1955F591-2D2C-42EE-AF03-7BBBEE1A4005.dita
Symbian3/SDK/Source/GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita
Symbian3/SDK/Source/GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita
Symbian3/SDK/Source/GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita
Symbian3/SDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39-master.png
Symbian3/SDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e253361_href.png
Symbian3/SDK/Source/GUID-19CF4B7B-EA55-566D-B68C-0A25DCADCA6C.dita
Symbian3/SDK/Source/GUID-19E03D48-50DB-5C1B-AD1E-12194D51AC76-master.jpg
Symbian3/SDK/Source/GUID-1A03B210-4175-4BE0-A5B3-647E7FA8E573_d0e55282_href.png
Symbian3/SDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402-master.png
Symbian3/SDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e168955_href.png
Symbian3/SDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e170634_href.png
Symbian3/SDK/Source/GUID-1A22E574-831B-5D00-98BD-0DFFA9CC09A0.dita
Symbian3/SDK/Source/GUID-1A26BD9E-5B8E-4E6D-904E-B8354B14E111.dita
Symbian3/SDK/Source/GUID-1A28F76D-ACEF-51A3-96DF-9DFF2F5C2ACF.dita
Symbian3/SDK/Source/GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4.dita
Symbian3/SDK/Source/GUID-1A43A45B-80AE-56A0-A94C-64BA75519C67.dita
Symbian3/SDK/Source/GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762.dita
Symbian3/SDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395-master.png
Symbian3/SDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e215503_href.png
Symbian3/SDK/Source/GUID-1A8B20B3-CA6D-58A6-9DA0-8EB3965EDE7A.dita
Symbian3/SDK/Source/GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita
Symbian3/SDK/Source/GUID-1A94AA49-3954-581B-92EE-C9BDA253508F.dita
Symbian3/SDK/Source/GUID-1A9B3BB8-9F68-5C71-9534-A59638BBCD1E.dita
Symbian3/SDK/Source/GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita
Symbian3/SDK/Source/GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita
Symbian3/SDK/Source/GUID-1AC942E2-58C7-45C1-A122-3D07407A07D9.dita
Symbian3/SDK/Source/GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita
Symbian3/SDK/Source/GUID-1AFD6B2D-C6CD-5BBF-A968-F68CCDFDA927.dita
Symbian3/SDK/Source/GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita
Symbian3/SDK/Source/GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita
Symbian3/SDK/Source/GUID-1B363B7B-35E9-5CD9-BC44-A19D94DA1D21.dita
Symbian3/SDK/Source/GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971.dita
Symbian3/SDK/Source/GUID-1B58FBA8-4E2C-5A99-A4B7-D7475E1B8F96.dita
Symbian3/SDK/Source/GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254.dita
Symbian3/SDK/Source/GUID-1BAF17A9-B71B-5003-AEB5-4631F019C6AC.dita
Symbian3/SDK/Source/GUID-1BB546C1-2795-55D9-97B6-AC3F6AB79389.dita
Symbian3/SDK/Source/GUID-1BD987D8-B018-51B7-80B2-4E1988841BC2.dita
Symbian3/SDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16-master.jpg
Symbian3/SDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e224881_href.jpg
Symbian3/SDK/Source/GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35.dita
Symbian3/SDK/Source/GUID-1C025957-258C-54C0-94A5-AD60C14E6D76.dita
Symbian3/SDK/Source/GUID-1C0707F8-9E2A-58C6-997B-23B57C7EFA93.dita
Symbian3/SDK/Source/GUID-1C0CA7AD-0F04-5346-AA51-4F9EB852FD38.dita
Symbian3/SDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE-master.png
Symbian3/SDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e190784_href.png
Symbian3/SDK/Source/GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita
Symbian3/SDK/Source/GUID-1C3888E3-33D4-5057-8819-CB6D97398031.dita
Symbian3/SDK/Source/GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita
Symbian3/SDK/Source/GUID-1C683226-C142-5C7B-BD20-060058352B08.dita
Symbian3/SDK/Source/GUID-1C7A0C22-90C6-5F54-8B43-342EE460C055.dita
Symbian3/SDK/Source/GUID-1C7F6DBA-7113-5542-AEF1-179FDD980443.dita
Symbian3/SDK/Source/GUID-1C802DBD-1453-5C69-94D5-FB0229C544D6.dita
Symbian3/SDK/Source/GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita
Symbian3/SDK/Source/GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita
Symbian3/SDK/Source/GUID-1D0E418B-09D4-5A6E-A1A8-A46F9F9CF371.dita
Symbian3/SDK/Source/GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9.dita
Symbian3/SDK/Source/GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita
Symbian3/SDK/Source/GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita
Symbian3/SDK/Source/GUID-1D6DD213-1EEC-58D2-8311-7A1AF77960C1.dita
Symbian3/SDK/Source/GUID-1D836FB1-9BCA-53B5-8334-08CD59064227.dita
Symbian3/SDK/Source/GUID-1D9376CD-3160-5CD8-A138-B94C5F7A50F8.dita
Symbian3/SDK/Source/GUID-1D9EA46B-CF0B-4779-97F9-5BECA3622777.dita
Symbian3/SDK/Source/GUID-1DCA2F4D-ABE6-52A0-AC4E-5AAC1AB5909D.dita
Symbian3/SDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0-master.png
Symbian3/SDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e166418_href.png
Symbian3/SDK/Source/GUID-1DE160DB-8054-5522-95F7-4CE5D8FFBF2E.dita
Symbian3/SDK/Source/GUID-1DE5CDAD-8D71-5384-9E98-5665D5A4C792.dita
Symbian3/SDK/Source/GUID-1DF2D6EC-C445-5A0C-80C4-9C46AAA6EE44.dita
Symbian3/SDK/Source/GUID-1DF62CB5-FB81-5802-9071-E492B0C81065.dita
Symbian3/SDK/Source/GUID-1E158DE6-33F5-4B45-8923-28117EBAB68A.dita
Symbian3/SDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011-master.png
Symbian3/SDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e292029_href.png
Symbian3/SDK/Source/GUID-1E2DB50A-D8D7-595D-8448-77F057655E82.dita
Symbian3/SDK/Source/GUID-1E446762-AFE2-4198-8CD7-8C4466392543.dita
Symbian3/SDK/Source/GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C.dita
Symbian3/SDK/Source/GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita
Symbian3/SDK/Source/GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita
Symbian3/SDK/Source/GUID-1E8904E3-43AC-5332-A2EF-F11F5728DBE8.dita
Symbian3/SDK/Source/GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032.dita
Symbian3/SDK/Source/GUID-1EB9BF25-DFF4-42CA-926C-D26409A2868E_d0e60551_href.png
Symbian3/SDK/Source/GUID-1EB9BF25-DFF4-42CA-926C-D26409A2868E_d0e61050_href.png
Symbian3/SDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445-master.png
Symbian3/SDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e162719_href.png
Symbian3/SDK/Source/GUID-1ECCCAA0-2E27-5E46-968D-4EBC4E5CE259.dita
Symbian3/SDK/Source/GUID-1EDE641E-EF8C-542D-A7B3-7C496D41EF3D.dita
Symbian3/SDK/Source/GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita
Symbian3/SDK/Source/GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041.dita
Symbian3/SDK/Source/GUID-1F68D172-1090-5930-BD7B-AE7276667104.dita
Symbian3/SDK/Source/GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita
Symbian3/SDK/Source/GUID-1F755804-70D6-5635-B2F7-06F03C8D4B74.dita
Symbian3/SDK/Source/GUID-1F809632-82B0-5B4C-92DB-9C4D1316AF03.dita
Symbian3/SDK/Source/GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita
Symbian3/SDK/Source/GUID-1FB321DE-4A02-5468-9AF1-F3786EB678CF.dita
Symbian3/SDK/Source/GUID-1FBC290C-74C3-5618-A2B7-52181CDFE0F0.dita
Symbian3/SDK/Source/GUID-1FC0156C-7BDB-5D5B-9860-837DAB431D24.dita
Symbian3/SDK/Source/GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita
Symbian3/SDK/Source/GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C.dita
Symbian3/SDK/Source/GUID-1FFE4ED5-7B2E-58A0-9D08-A096F53F37AB.dita
Symbian3/SDK/Source/GUID-200647EF-B9CA-5EEA-8760-71A9C1B063CE.dita
Symbian3/SDK/Source/GUID-200BA7B9-70A1-5D15-8CFF-FBD18930757D.dita
Symbian3/SDK/Source/GUID-2016EF4B-F001-5EB2-8095-6048582511D6.dita
Symbian3/SDK/Source/GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971.dita
Symbian3/SDK/Source/GUID-2022F702-9899-5798-8932-D70119C7177D.dita
Symbian3/SDK/Source/GUID-2045A3D6-88DB-41ED-905B-079A8DC35E24.dita
Symbian3/SDK/Source/GUID-204627D4-3818-5DE7-8969-C335DBA5B153.dita
Symbian3/SDK/Source/GUID-204B4155-AE35-5C53-867B-299AF7E5D16A.dita
Symbian3/SDK/Source/GUID-2052461A-DF29-5DD0-A7D2-B46A50EAD762.dita
Symbian3/SDK/Source/GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98.dita
Symbian3/SDK/Source/GUID-2068DA42-AE77-5213-B3CF-C3AB7F2188BE.dita
Symbian3/SDK/Source/GUID-208B15EA-ACDF-5305-A38C-D18AD79576A2.dita
Symbian3/SDK/Source/GUID-209F3620-2361-4AED-9F7A-02E72F9EE8FE.dita
Symbian3/SDK/Source/GUID-20B2C96A-9742-4CB0-A37F-19B65765E826.dita
Symbian3/SDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD-master.png
Symbian3/SDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e178759_href.png
Symbian3/SDK/Source/GUID-20DDA21D-B5DE-5D24-9E75-69C68EAF1782.dita
Symbian3/SDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327-master.png
Symbian3/SDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e212448_href.png
Symbian3/SDK/Source/GUID-210606BE-A36C-4B65-B083-93F71024196C.dita
Symbian3/SDK/Source/GUID-210A181E-5EB6-4626-9E7E-8761A2272D79.dita
Symbian3/SDK/Source/GUID-2139B04C-6ED6-599B-A018-D92451B8353E.dita
Symbian3/SDK/Source/GUID-214A7085-185B-5D40-A613-E82E68968AAB.dita
Symbian3/SDK/Source/GUID-215935B4-8AA8-4A87-B70F-E43ADB70B1D2.dita
Symbian3/SDK/Source/GUID-215D2BD2-1757-5869-A589-98BE332EB4E2.dita
Symbian3/SDK/Source/GUID-2161BD64-889B-5EAB-B023-1162FE9619DB.dita
Symbian3/SDK/Source/GUID-21740D07-5F49-5D9C-9FEA-92958AF3805B.dita
Symbian3/SDK/Source/GUID-218DB978-929C-5701-869F-8415FF6CE62D.dita
Symbian3/SDK/Source/GUID-21909CF6-B810-599A-A486-01BA1BF21F35.dita
Symbian3/SDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F-master.jpg
Symbian3/SDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e228361_href.jpg
Symbian3/SDK/Source/GUID-21A43565-FC69-553E-9617-4832AB776004.dita
Symbian3/SDK/Source/GUID-21C03739-FF80-5874-A32B-F22DED13D18D.dita
Symbian3/SDK/Source/GUID-21C04887-9F9C-5066-AA1D-B30C433CC0AE.dita
Symbian3/SDK/Source/GUID-21C4398F-0519-5107-A735-A7137A1595E0.dita
Symbian3/SDK/Source/GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita
Symbian3/SDK/Source/GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita
Symbian3/SDK/Source/GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1.dita
Symbian3/SDK/Source/GUID-21DAC50D-7737-42B6-BBDA-E12E8779741B.dita
Symbian3/SDK/Source/GUID-21E26B07-7E4D-50E0-97BE-C05CCD88B89F.dita
Symbian3/SDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF-master.png
Symbian3/SDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e258906_href.png
Symbian3/SDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89-master.png
Symbian3/SDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e167044_href.png
Symbian3/SDK/Source/GUID-21F0026B-58EF-4E19-834D-C3C08BB89CB1_d0e46472_href.png
Symbian3/SDK/Source/GUID-21F0026B-58EF-4E19-834D-C3C08BB89CB1_d0e62207_href.png
Symbian3/SDK/Source/GUID-21F92FAD-1EF1-4E36-9157-9214E7C6BB01.dita
Symbian3/SDK/Source/GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita
Symbian3/SDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420-master.png
Symbian3/SDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e304340_href.png
Symbian3/SDK/Source/GUID-220E5E6A-B55D-57BB-AC1A-CE06EB01F661.dita
Symbian3/SDK/Source/GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1.dita
Symbian3/SDK/Source/GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-5-1-7-1-6-1-7-1.dita
Symbian3/SDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420-master.png
Symbian3/SDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420_d0e335124_href.png
Symbian3/SDK/Source/GUID-226EDECC-BE24-412C-945D-7EABE566282A.dita
Symbian3/SDK/Source/GUID-2273C35F-C8FD-5321-BAE8-4995C5B374E5.dita
Symbian3/SDK/Source/GUID-22746579-EB41-5C76-96D0-606C132E824A.dita
Symbian3/SDK/Source/GUID-2277BB1C-C04D-56C8-9B9B-FBC2EDCA9B07.dita
Symbian3/SDK/Source/GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita
Symbian3/SDK/Source/GUID-229C2057-F187-5019-AE21-AAA5803DD0ED.dita
Symbian3/SDK/Source/GUID-22A4F33C-4F93-572E-91CD-E93CD0B69B09.dita
Symbian3/SDK/Source/GUID-22B535FA-6C8A-5B39-9CD7-6E85A86B7C2C.dita
Symbian3/SDK/Source/GUID-22BE45B9-7788-41B5-9E81-E0420CB956C7_d0e46446_href.png
Symbian3/SDK/Source/GUID-22BE45B9-7788-41B5-9E81-E0420CB956C7_d0e52568_href.png
Symbian3/SDK/Source/GUID-22D7E6E9-D47D-52F0-A9DF-C69075DBEEC8.dita
Symbian3/SDK/Source/GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita
Symbian3/SDK/Source/GUID-22F74DA4-2CAB-5CA9-877C-0FC2F891E259.dita
Symbian3/SDK/Source/GUID-23014C8A-2A0B-5F6A-9BB2-6642E1EC0462.dita
Symbian3/SDK/Source/GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita
Symbian3/SDK/Source/GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e7325_href.png
Symbian3/SDK/Source/GUID-232E2D33-8BC1-5CC3-A4DF-2C99900E1083.dita
Symbian3/SDK/Source/GUID-2332AFD7-30F2-5B4D-BBA9-3EA36D8F5E81.dita
Symbian3/SDK/Source/GUID-2364CAB0-E19E-5EBB-837F-F6484642C2E4.dita
Symbian3/SDK/Source/GUID-236D3822-13C3-5AD8-B0FB-C28732E17CF7.dita
Symbian3/SDK/Source/GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita
Symbian3/SDK/Source/GUID-2382F758-35CF-4378-A5D5-183121E3BF6A.dita
Symbian3/SDK/Source/GUID-238D6070-96AC-5D8A-86EA-488C59DF2AE3.dita
Symbian3/SDK/Source/GUID-2393237A-E60F-5556-8657-B0AA6470225C.dita
Symbian3/SDK/Source/GUID-239AA6F5-30CE-5FF0-9C36-93D39FECE1DD.dita
Symbian3/SDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575-master.png
Symbian3/SDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e99444_href.png
Symbian3/SDK/Source/GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita
Symbian3/SDK/Source/GUID-23E18D4B-FB09-5BA9-9D31-E4875A0F8955.dita
Symbian3/SDK/Source/GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87.dita
Symbian3/SDK/Source/GUID-2418E86F-BF82-4F2A-A056-5F1D0682C410.dita
Symbian3/SDK/Source/GUID-243CF1A9-F3CF-5562-8746-1CB392CDB73A.dita
Symbian3/SDK/Source/GUID-24414E32-94DC-5870-847B-A797C495F756.dita
Symbian3/SDK/Source/GUID-24477051-265A-5FE5-B479-ACB3EE27B825.dita
Symbian3/SDK/Source/GUID-24508C2D-31B9-5CC2-9EB8-F00AD39D8AA0.dita
Symbian3/SDK/Source/GUID-2458916B-55B2-5E08-A825-4EBDB3503E67.dita
Symbian3/SDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912-master.png
Symbian3/SDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e195225_href.png
Symbian3/SDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95-master.png
Symbian3/SDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e171376_href.png
Symbian3/SDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8-master.png
Symbian3/SDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e190953_href.png
Symbian3/SDK/Source/GUID-24860917-0FE2-5C8F-B436-96928350996E.dita
Symbian3/SDK/Source/GUID-2488FA07-BCAB-55DC-8724-C1C3C0DEC0AD.dita
Symbian3/SDK/Source/GUID-248D480D-2406-5FFD-8E3B-09CA67D1BE69.dita
Symbian3/SDK/Source/GUID-24A149FA-B82A-53A2-83E6-4F625D7041D7.dita
Symbian3/SDK/Source/GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e114448_href.png
Symbian3/SDK/Source/GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431.dita
Symbian3/SDK/Source/GUID-24D509E8-CF46-58D3-85E9-27DA7AB22012.dita
Symbian3/SDK/Source/GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita
Symbian3/SDK/Source/GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita
Symbian3/SDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707-master.png
Symbian3/SDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e241834_href.png
Symbian3/SDK/Source/GUID-24FD00A1-CD09-5845-ACD5-4E4FF25084B3.dita
Symbian3/SDK/Source/GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita
Symbian3/SDK/Source/GUID-255653B8-DACF-552C-8F33-7F6552824F4F.dita
Symbian3/SDK/Source/GUID-255B6815-8CC8-5E4A-9999-9BC083BCCD83.dita
Symbian3/SDK/Source/GUID-257212F5-A414-4F17-A786-DB3168218139_d0e53418_href.png
Symbian3/SDK/Source/GUID-257E223F-1612-5978-982A-38DE8E08211C.dita
Symbian3/SDK/Source/GUID-25A005BF-731B-58DB-8EF7-AB7840DA563F.dita
Symbian3/SDK/Source/GUID-25C3CDBE-8D53-5F1A-A4CA-993E1151AD93.dita
Symbian3/SDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D-master.png
Symbian3/SDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e189453_href.png
Symbian3/SDK/Source/GUID-25F853BF-BA95-5348-809E-670C04734AB7.dita
Symbian3/SDK/Source/GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita
Symbian3/SDK/Source/GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita
Symbian3/SDK/Source/GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita
Symbian3/SDK/Source/GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9.dita
Symbian3/SDK/Source/GUID-2632A013-AA87-485E-855D-C50E211057D6.dita
Symbian3/SDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05-master.png
Symbian3/SDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05_d0e62863_href.png
Symbian3/SDK/Source/GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7.dita
Symbian3/SDK/Source/GUID-2663ED06-8C97-5867-B7F6-6167EBFEA223.dita
Symbian3/SDK/Source/GUID-2676BA6B-4BEB-5E2A-AD18-D2199465B121.dita
Symbian3/SDK/Source/GUID-2699B8C9-54A0-4023-B92C-717208A82029-master.png
Symbian3/SDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE-master.png
Symbian3/SDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e316101_href.png
Symbian3/SDK/Source/GUID-26D7BC6E-509C-51C5-9B86-437F3AEEB2EA.dita
Symbian3/SDK/Source/GUID-26FC16BB-47D8-5DF6-9ABE-07526286597A.dita
Symbian3/SDK/Source/GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita
Symbian3/SDK/Source/GUID-27009193-6170-42B4-A258-E7B694EEC8EB.dita
Symbian3/SDK/Source/GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita
Symbian3/SDK/Source/GUID-270FC83E-1D47-4CF9-A560-FB5DDA53111E.dita
Symbian3/SDK/Source/GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16.dita
Symbian3/SDK/Source/GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita
Symbian3/SDK/Source/GUID-27340D18-A31D-512E-920A-B06C784A978A.dita
Symbian3/SDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1-master.png
Symbian3/SDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e239585_href.png
Symbian3/SDK/Source/GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413.dita
Symbian3/SDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A-master.png
Symbian3/SDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e279533_href.png
Symbian3/SDK/Source/GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659.dita
Symbian3/SDK/Source/GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita
Symbian3/SDK/Source/GUID-277BD68B-70CF-5798-A77D-E2B901FA613B.dita
Symbian3/SDK/Source/GUID-27895B0A-4C0F-403D-A839-F15B2F102A21.dita
Symbian3/SDK/Source/GUID-27897E0D-D9D6-4007-A45E-62C366F1267C.dita
Symbian3/SDK/Source/GUID-27A2AE45-AFAC-5325-A9A9-4A8C69921EE3.dita
Symbian3/SDK/Source/GUID-27A393D5-C7DF-5541-855A-2CB0E4C46D6D.dita
Symbian3/SDK/Source/GUID-27AAD3D5-AEC0-5A33-B14A-2E8B8D21CDAA.dita
Symbian3/SDK/Source/GUID-27C3F32C-4B66-539A-8561-EF442E0F0A77.dita
Symbian3/SDK/Source/GUID-27C933F7-4634-57C8-B3D2-45C5563FECA4.dita
Symbian3/SDK/Source/GUID-27E38FBB-F417-56C8-BFCF-B32215668902.dita
Symbian3/SDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08-master.png
Symbian3/SDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e263086_href.png
Symbian3/SDK/Source/GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita
Symbian3/SDK/Source/GUID-27F39152-0AF2-577A-A367-BCEE9060902E.dita
Symbian3/SDK/Source/GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita
Symbian3/SDK/Source/GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE.dita
Symbian3/SDK/Source/GUID-2822DEF4-F7E2-5795-BD67-14BF77C1EB85.dita
Symbian3/SDK/Source/GUID-282CE322-923F-58F6-804D-E125ABACB025.dita
Symbian3/SDK/Source/GUID-28604BBC-1C43-56F3-8667-DAF869F38BDB.dita
Symbian3/SDK/Source/GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita
Symbian3/SDK/Source/GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita
Symbian3/SDK/Source/GUID-288C200C-760D-52A2-8FC7-E179E5FB1A2A.dita
Symbian3/SDK/Source/GUID-28AD51DC-C101-5E6E-9EC3-C2B61400D8CD.dita
Symbian3/SDK/Source/GUID-28B9B737-AA79-5595-8DDE-7DD52402C0B9.dita
Symbian3/SDK/Source/GUID-28D13F63-9D72-5D70-BE81-3B4E54B3A8C1.dita
Symbian3/SDK/Source/GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita
Symbian3/SDK/Source/GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita
Symbian3/SDK/Source/GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita
Symbian3/SDK/Source/GUID-29272C8D-A0F6-4861-90FB-D1637D0D8CD8.dita
Symbian3/SDK/Source/GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita
Symbian3/SDK/Source/GUID-294E84BB-65D0-5275-848E-1960B201A371.dita
Symbian3/SDK/Source/GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F.dita
Symbian3/SDK/Source/GUID-295341D9-A5FA-4F25-B681-C5B3264165AF.dita
Symbian3/SDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72-master.png
Symbian3/SDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e317091_href.png
Symbian3/SDK/Source/GUID-2992031D-E176-5BC8-8B89-A5DC2A4B35AA.dita
Symbian3/SDK/Source/GUID-2999C8D1-5C95-5474-BB02-11182CC3A407.dita
Symbian3/SDK/Source/GUID-29AE56A8-DA08-5FB3-89F1-26B4308336BC.dita
Symbian3/SDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D-master.png
Symbian3/SDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e195217_href.png
Symbian3/SDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687-master.png
Symbian3/SDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687_d0e189052_href.png
Symbian3/SDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F-master.png
Symbian3/SDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e279548_href.png
Symbian3/SDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540-master.png
Symbian3/SDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e355049_href.png
Symbian3/SDK/Source/GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita
Symbian3/SDK/Source/GUID-2A39CCBD-CADB-56B7-872A-1EC617AC7D93.dita
Symbian3/SDK/Source/GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita
Symbian3/SDK/Source/GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4.dita
Symbian3/SDK/Source/GUID-2A6C43A6-D5D3-5DC1-871C-C1428D2DB2E6.dita
Symbian3/SDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99-master.png
Symbian3/SDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e188964_href.png
Symbian3/SDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB-master.png
Symbian3/SDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e237865_href.png
Symbian3/SDK/Source/GUID-2AC1C0B6-0405-5F1D-A813-39DA35808182.dita
Symbian3/SDK/Source/GUID-2AD64552-440B-5439-885B-BE71DE0E8F1F.dita
Symbian3/SDK/Source/GUID-2AE024D5-B34B-5E7E-BC7E-8C45E80173C5.dita
Symbian3/SDK/Source/GUID-2B026328-010F-5245-B3A1-6E8C97BA4BAE.dita
Symbian3/SDK/Source/GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e44021_href.png
Symbian3/SDK/Source/GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita
Symbian3/SDK/Source/GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita
Symbian3/SDK/Source/GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita
Symbian3/SDK/Source/GUID-2B8D3611-5B97-50E7-A9DD-23626A8EFB45.dita
Symbian3/SDK/Source/GUID-2BB17FB4-07A9-52E3-A650-570A16FA771D.dita
Symbian3/SDK/Source/GUID-2BC2A35E-634D-5F70-8279-C1822C0E4F3F.dita
Symbian3/SDK/Source/GUID-2BD20EF8-B6B8-4A1B-8B0D-3326B839FD37.dita
Symbian3/SDK/Source/GUID-2BF409EA-82BF-407C-B048-DA0973B7F61D.dita
Symbian3/SDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584-master.png
Symbian3/SDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e14680_href.png
Symbian3/SDK/Source/GUID-2C17B7CA-39A3-5E2B-9B8E-239158A94F5C.dita
Symbian3/SDK/Source/GUID-2C1DB75C-FB12-520C-85B1-57F1EDB61E3B.dita
Symbian3/SDK/Source/GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita
Symbian3/SDK/Source/GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita
Symbian3/SDK/Source/GUID-2C5D53A3-0211-5C14-BD7F-E89EB27BAD2A.dita
Symbian3/SDK/Source/GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797.dita
Symbian3/SDK/Source/GUID-2C68AC8D-6767-5865-B684-CB627C20C6DC.dita
Symbian3/SDK/Source/GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita
Symbian3/SDK/Source/GUID-2C767F68-2150-55C1-B801-AB6EB58FD97C.dita
Symbian3/SDK/Source/GUID-2C7AF56F-F741-5C9B-83B9-46C175330ED1.dita
Symbian3/SDK/Source/GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita
Symbian3/SDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB-master.jpg
Symbian3/SDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e303784_href.jpg
Symbian3/SDK/Source/GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9.dita
Symbian3/SDK/Source/GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita
Symbian3/SDK/Source/GUID-2CE8544C-470C-5693-8ED6-27B01DD9548B.dita
Symbian3/SDK/Source/GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita
Symbian3/SDK/Source/GUID-2CF4F12C-DF30-43EB-BD3D-A6AF8BAB407A_d0e54988_href.png
Symbian3/SDK/Source/GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita
Symbian3/SDK/Source/GUID-2D390781-4467-403D-8FFC-8ED5B2319993.dita
Symbian3/SDK/Source/GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita
Symbian3/SDK/Source/GUID-2D6689C2-F17D-48A8-8EC9-3D83BCAA3681.dita
Symbian3/SDK/Source/GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC.dita
Symbian3/SDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503-master.png
Symbian3/SDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e120681_href.png
Symbian3/SDK/Source/GUID-2D8093D7-58A8-59CD-96EF-5B0AAE029478.dita
Symbian3/SDK/Source/GUID-2D8A7DCE-47A2-4326-BF2F-B4901F1723A0.dita
Symbian3/SDK/Source/GUID-2D93660B-8206-5D20-85F5-6FFCF4549127.dita
Symbian3/SDK/Source/GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita
Symbian3/SDK/Source/GUID-2DC4EAD5-98D3-5B17-AEBD-6ADE481CBD94.dita
Symbian3/SDK/Source/GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita
Symbian3/SDK/Source/GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF.dita
Symbian3/SDK/Source/GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita
Symbian3/SDK/Source/GUID-2DDEF473-B804-51DF-874F-ADF46CB03ABA.dita
Symbian3/SDK/Source/GUID-2E085BAD-AAD7-5D1A-89A7-287EE42D1069.dita
Symbian3/SDK/Source/GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita
Symbian3/SDK/Source/GUID-2E253B30-2611-546D-AE5B-1752556FC8E8.dita
Symbian3/SDK/Source/GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita
Symbian3/SDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668-master.jpg
Symbian3/SDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e150630_href.jpg
Symbian3/SDK/Source/GUID-2E3BE23C-B9DC-5B5D-A56A-1DB819EFC9A6.dita
Symbian3/SDK/Source/GUID-2E96D6CC-1C1F-5C30-A315-9729D07D1605.dita
Symbian3/SDK/Source/GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita
Symbian3/SDK/Source/GUID-2EAAE194-FAE1-5545-A678-72973E9B72A7.dita
Symbian3/SDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC-master.png
Symbian3/SDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e178839_href.png
Symbian3/SDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452-master.png
Symbian3/SDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e367018_href.png
Symbian3/SDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858-master.png
Symbian3/SDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e196257_href.png
Symbian3/SDK/Source/GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita
Symbian3/SDK/Source/GUID-2F42DC8F-E489-5EA4-8413-784D34965497.dita
Symbian3/SDK/Source/GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita
Symbian3/SDK/Source/GUID-2F64B579-73D3-548A-9104-16483AF77BCB.dita
Symbian3/SDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331-master.png
Symbian3/SDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e218167_href.png
Symbian3/SDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53-master.png
Symbian3/SDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e251555_href.png
Symbian3/SDK/Source/GUID-2F987147-1435-55F1-B61C-8413C4AD8424.dita
Symbian3/SDK/Source/GUID-2F9BCBC4-A657-5B16-824E-5E96DA22AD00.dita
Symbian3/SDK/Source/GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita
Symbian3/SDK/Source/GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F.dita
Symbian3/SDK/Source/GUID-2FED5145-58E4-5560-8E52-6BD499EECE13.dita
Symbian3/SDK/Source/GUID-30066989-4A0F-5000-9488-AA7E50E2B871.dita
Symbian3/SDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD-master.png
Symbian3/SDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e301630_href.png
Symbian3/SDK/Source/GUID-301193C2-666C-5A57-B898-A04EBB63E533.dita
Symbian3/SDK/Source/GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita
Symbian3/SDK/Source/GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D.dita
Symbian3/SDK/Source/GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita
Symbian3/SDK/Source/GUID-30647807-A0D2-4D96-975A-BF1800749977.dita
Symbian3/SDK/Source/GUID-3074D4E5-25EA-5DA0-877D-6E3086DCBDB5.dita
Symbian3/SDK/Source/GUID-308A3F78-3DD6-443A-B021-B8E2C2DFEE4D.dita
Symbian3/SDK/Source/GUID-308A481C-2280-59CE-AE85-83047B11BBE4.dita
Symbian3/SDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B-master.png
Symbian3/SDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e92570_href.png
Symbian3/SDK/Source/GUID-30B2AF3F-E120-5D47-AAA2-529555625B55.dita
Symbian3/SDK/Source/GUID-30BB4435-C95C-5016-A86B-4E98311F9FE2.dita
Symbian3/SDK/Source/GUID-30CAE438-6CC7-5532-8727-781B8E83574A.dita
Symbian3/SDK/Source/GUID-30DBE93F-1255-533F-9B02-4E19E248D065.dita
Symbian3/SDK/Source/GUID-30EB4252-4CBA-5174-9133-E79AC9AEAEBF.dita
Symbian3/SDK/Source/GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD.dita
Symbian3/SDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita
Symbian3/SDK/Source/GUID-3101392C-A9FF-5F56-8872-5A03D053565E.dita
Symbian3/SDK/Source/GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita
Symbian3/SDK/Source/GUID-31371091-A28D-5203-BE6A-0F182F99582D.dita
Symbian3/SDK/Source/GUID-314992D7-F6E1-5335-9EDA-DE89E67CDF57.dita
Symbian3/SDK/Source/GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita
Symbian3/SDK/Source/GUID-315452C2-A1E2-5888-A694-6D2DE73A3F5E.dita
Symbian3/SDK/Source/GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e6515_href.png
Symbian3/SDK/Source/GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22.dita
Symbian3/SDK/Source/GUID-31A28040-6C8E-5C65-A697-04B30B441686.dita
Symbian3/SDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1-master.png
Symbian3/SDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e63486_href.png
Symbian3/SDK/Source/GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita
Symbian3/SDK/Source/GUID-31C265DA-5B54-5E6B-98E4-EE90A2AAF4D5.dita
Symbian3/SDK/Source/GUID-31E9F790-8A47-588C-A515-D2C8CD367ADE.dita
Symbian3/SDK/Source/GUID-31EB55B1-5A52-5ED1-92D3-C4B0222749B3.dita
Symbian3/SDK/Source/GUID-321F406B-2C77-5F2B-9FDA-F25726188CE2.dita
Symbian3/SDK/Source/GUID-322459CD-68DD-43CE-A422-853F31F6450E_d0e58430_href.png
Symbian3/SDK/Source/GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita
Symbian3/SDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886-master.png
Symbian3/SDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e262752_href.png
Symbian3/SDK/Source/GUID-324107D1-6E0B-56DD-BDC0-7296F688A9CF.dita
Symbian3/SDK/Source/GUID-325D8E31-584B-5B10-902C-F004641A614D.dita
Symbian3/SDK/Source/GUID-326D4D50-5AD9-5CA2-8422-AA45AE0712D6.dita
Symbian3/SDK/Source/GUID-32756B46-DAB7-44FA-B710-33EC36E1409F.dita
Symbian3/SDK/Source/GUID-3291A4CF-3CCD-53BD-BBB5-4F2389765B08.dita
Symbian3/SDK/Source/GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita
Symbian3/SDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D-master.png
Symbian3/SDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e92530_href.png
Symbian3/SDK/Source/GUID-32E29020-1956-461A-B79A-1492E06049E7.dita
Symbian3/SDK/Source/GUID-32F00078-6084-5288-9D3F-9F8D70514799.dita
Symbian3/SDK/Source/GUID-330FBB90-E622-4FD1-A189-64656F68A10D.dita
Symbian3/SDK/Source/GUID-3313A7E0-B10A-5CDE-8DA3-FB9C48FC80CA.dita
Symbian3/SDK/Source/GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita
Symbian3/SDK/Source/GUID-33180489-18DE-5705-A2DF-E44148C3A820.dita
Symbian3/SDK/Source/GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita
Symbian3/SDK/Source/GUID-3321A4E7-8652-511F-8A17-E816F5731E94.dita
Symbian3/SDK/Source/GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita
Symbian3/SDK/Source/GUID-33488ED1-32F6-5D39-B264-5CDE3FEDFD2B.dita
Symbian3/SDK/Source/GUID-335A4B77-20C4-52B9-88AA-58540269E321.dita
Symbian3/SDK/Source/GUID-33716081-180C-5DDB-A5D2-0EC61357250D.dita
Symbian3/SDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6-master.png
Symbian3/SDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e63111_href.png
Symbian3/SDK/Source/GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita
Symbian3/SDK/Source/GUID-33BFC72A-2246-5366-81D7-72AB5B730F8F.dita
Symbian3/SDK/Source/GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita
Symbian3/SDK/Source/GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita
Symbian3/SDK/Source/GUID-33FEE8F8-CD21-52EA-8EE2-502B12B3C463.dita
Symbian3/SDK/Source/GUID-3405FD7F-6AE8-430A-914D-72DCC2D7829D_d0e61646_href.png
Symbian3/SDK/Source/GUID-341CE215-056C-45B6-ABE2-C75442605147_d0e55750_href.png
Symbian3/SDK/Source/GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita
Symbian3/SDK/Source/GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita
Symbian3/SDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D-master.jpg
Symbian3/SDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e116900_href.jpg
Symbian3/SDK/Source/GUID-348E8B54-88D9-5D66-AD11-09131EC387F9.dita
Symbian3/SDK/Source/GUID-34A5AEFE-B785-58B0-9A75-5898EDFD6834.dita
Symbian3/SDK/Source/GUID-34B36F04-D707-5357-8073-3B9FF7B95B22.dita
Symbian3/SDK/Source/GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE.dita
Symbian3/SDK/Source/GUID-34E19A27-F61D-5190-8709-151523CB0BE1.dita
Symbian3/SDK/Source/GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita
Symbian3/SDK/Source/GUID-3527AAEE-210F-524B-A655-A65F1CE86C80.dita
Symbian3/SDK/Source/GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita
Symbian3/SDK/Source/GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita
Symbian3/SDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B-master.png
Symbian3/SDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e295604_href.png
Symbian3/SDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD-master.png
Symbian3/SDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e169274_href.png
Symbian3/SDK/Source/GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5.dita
Symbian3/SDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC-master.png
Symbian3/SDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e229930_href.png
Symbian3/SDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3-master.png
Symbian3/SDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e3307_href.png
Symbian3/SDK/Source/GUID-3584C6F0-0B9E-5490-9CDB-86FA218A2E26.dita
Symbian3/SDK/Source/GUID-35AF5E92-7103-5A86-A3CC-B2CED7E9793B.dita
Symbian3/SDK/Source/GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita
Symbian3/SDK/Source/GUID-35D7EEFC-B2E4-5444-8875-2A24790E08C2.dita
Symbian3/SDK/Source/GUID-35DE6C87-0C47-5D06-AC8E-3C39DC463F0C.dita
Symbian3/SDK/Source/GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita
Symbian3/SDK/Source/GUID-3631971E-424B-5B10-B44C-98FB7C265843.dita
Symbian3/SDK/Source/GUID-3637DBF8-BABF-4F84-9A7D-8FF66A118261_d0e60574_href.png
Symbian3/SDK/Source/GUID-3637DBF8-BABF-4F84-9A7D-8FF66A118261_d0e61285_href.png
Symbian3/SDK/Source/GUID-36539894-580E-5774-AA79-7F640E8C59E1.dita
Symbian3/SDK/Source/GUID-365BB311-8FC8-5DA5-B80D-C22D4AB35AEE.dita
Symbian3/SDK/Source/GUID-36718217-C9F7-5ACF-8DE7-7D83FBF435DB.dita
Symbian3/SDK/Source/GUID-36743EC8-5A64-5FF5-8632-56CBBD04EC12.dita
Symbian3/SDK/Source/GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita
Symbian3/SDK/Source/GUID-3690B530-BFFC-554E-9692-3D7C4C0BC803.dita
Symbian3/SDK/Source/GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita
Symbian3/SDK/Source/GUID-36AF783B-A56A-5C16-A055-9075ED4396C5.dita
Symbian3/SDK/Source/GUID-36BD6059-6547-5754-8BE0-F8051A838C14.dita
Symbian3/SDK/Source/GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita
Symbian3/SDK/Source/GUID-36C5768D-896B-521C-B4D2-C41C0AD85F3C.dita
Symbian3/SDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E-master.png
Symbian3/SDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e208547_href.png
Symbian3/SDK/Source/GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418.dita
Symbian3/SDK/Source/GUID-37057FD5-7ED0-5B18-9C28-39F6816D7627.dita
Symbian3/SDK/Source/GUID-370F4A51-EC67-4B6C-B14A-5C640A58688B_d0e38551_href.png
Symbian3/SDK/Source/GUID-3715E8EE-FF0A-4344-90F1-1609D54C166B.dita
Symbian3/SDK/Source/GUID-3729C075-4958-4874-9DD7-02A68D17E043.dita
Symbian3/SDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758-master.png
Symbian3/SDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e5472_href.png
Symbian3/SDK/Source/GUID-377C3A77-6C89-4C44-A33A-852CFB7ADE58.swf
Symbian3/SDK/Source/GUID-377F7C19-C799-45CE-9ADA-4BB884B422BA.dita
Symbian3/SDK/Source/GUID-3786D8E6-17A9-52E4-A8DF-CFCDC3039854.dita
Symbian3/SDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF-master.png
Symbian3/SDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e279563_href.png
Symbian3/SDK/Source/GUID-37934768-50D0-52A8-B594-B47D5E27722B.dita
Symbian3/SDK/Source/GUID-3799F0DA-B99C-55BB-B44F-63B971DF1865.dita
Symbian3/SDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2-master.png
Symbian3/SDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e304617_href.png
Symbian3/SDK/Source/GUID-37CB6D0C-41F0-5C52-A925-978FAC30D311.dita
Symbian3/SDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E-master.png
Symbian3/SDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e195991_href.png
Symbian3/SDK/Source/GUID-37D7019C-E3EF-5841-8691-5A865A2B5FD2.dita
Symbian3/SDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D-master.jpg
Symbian3/SDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e303838_href.jpg
Symbian3/SDK/Source/GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita
Symbian3/SDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9-master.png
Symbian3/SDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e255697_href.png
Symbian3/SDK/Source/GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita
Symbian3/SDK/Source/GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF.dita
Symbian3/SDK/Source/GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita
Symbian3/SDK/Source/GUID-383A617C-474B-509D-BA37-3515BCC5F1D1.dita
Symbian3/SDK/Source/GUID-383C128C-15EB-4C64-9A1F-F1EA826323D0.dita
Symbian3/SDK/Source/GUID-384A25D6-EC89-576E-857F-D8D26292FED9.dita
Symbian3/SDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05-master.png
Symbian3/SDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e154214_href.png
Symbian3/SDK/Source/GUID-385BB488-5C32-58A7-8401-F3F0A0707DD9.dita
Symbian3/SDK/Source/GUID-38679CA2-0066-589C-988F-AC14B7E2F107.dita
Symbian3/SDK/Source/GUID-386A94C7-BCB4-55B5-843E-E4AC03A2E230.dita
Symbian3/SDK/Source/GUID-386FD0B9-D502-577C-BED2-5F31D9CA67CC.dita
Symbian3/SDK/Source/GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita
Symbian3/SDK/Source/GUID-387DB01C-EA48-5A10-A960-9706F3D2D0B1.dita
Symbian3/SDK/Source/GUID-389F1390-5752-5F2E-B2F6-724F9543BB35.dita
Symbian3/SDK/Source/GUID-38A656D3-F830-5E26-8167-3638B6BC5DF6.dita
Symbian3/SDK/Source/GUID-38B11AE2-DB91-517F-BFE4-E72ACE96EDF5.dita
Symbian3/SDK/Source/GUID-38BA60AA-074D-59CC-9B16-F7E5B10248FD.dita
Symbian3/SDK/Source/GUID-38BE7105-309E-5372-98EE-BCA0ADD0ACBA.dita
Symbian3/SDK/Source/GUID-38C37BA5-B972-5C8B-B8DE-B2FECF2A3C3C.dita
Symbian3/SDK/Source/GUID-38CF8A8E-4778-5374-8AC6-5F9486A2B7FB.dita
Symbian3/SDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD-master.png
Symbian3/SDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e188918_href.png
Symbian3/SDK/Source/GUID-39186342-960A-46A4-BC35-851F53665FA8.dita
Symbian3/SDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE-master.png
Symbian3/SDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e355968_href.png
Symbian3/SDK/Source/GUID-397239F9-7EE8-52CF-9B37-328AE307BAA0.dita
Symbian3/SDK/Source/GUID-3978E21E-9B7A-4BEA-9B0A-10C247F6451B_d0e58793_href.png
Symbian3/SDK/Source/GUID-3987D040-27F7-5226-96AC-D578ECA4C0A2.dita
Symbian3/SDK/Source/GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita
Symbian3/SDK/Source/GUID-39897348-B27A-5C02-B65C-C26D122BCAE4.dita
Symbian3/SDK/Source/GUID-39958349-2761-5532-A87F-EABB9EB68D10.dita
Symbian3/SDK/Source/GUID-399AE85E-9A5F-5748-864E-51C3F417D45B.dita
Symbian3/SDK/Source/GUID-399EAC59-643D-5DED-AB67-9F021CA5687A.dita
Symbian3/SDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A-master.png
Symbian3/SDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e279593_href.png
Symbian3/SDK/Source/GUID-39A995DC-F047-4B41-A60D-27063CE329BE.dita
Symbian3/SDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B-master.png
Symbian3/SDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e219728_href.png
Symbian3/SDK/Source/GUID-39B459CD-8210-59B5-95F4-85CE36676735.dita
Symbian3/SDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita
Symbian3/SDK/Source/GUID-39C9DD69-504A-529C-ABD3-A73DCAD3F8E9.dita
Symbian3/SDK/Source/GUID-39FA0ECE-D403-5F02-AC5D-7BC8E1669E8E.dita
Symbian3/SDK/Source/GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita
Symbian3/SDK/Source/GUID-3A14EB6E-2F28-51F6-9D80-1AFCFFBDDF9D.dita
Symbian3/SDK/Source/GUID-3A42464E-CAA2-5A8C-B52F-2A6B1D095544.dita
Symbian3/SDK/Source/GUID-3A4947BD-1BEB-521C-BEDF-738064E83FE6.dita
Symbian3/SDK/Source/GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e42859_href.png
Symbian3/SDK/Source/GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita
Symbian3/SDK/Source/GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita
Symbian3/SDK/Source/GUID-3AB05112-0580-5FD2-AD61-5721090062F8.dita
Symbian3/SDK/Source/GUID-3AB8E95D-4270-5CDE-994E-404BCBEC57B6.dita
Symbian3/SDK/Source/GUID-3ABE9420-2668-507E-B857-E62DC50654BD.dita
Symbian3/SDK/Source/GUID-3AD20E0C-F364-533F-9FBC-227478CA9982.dita
Symbian3/SDK/Source/GUID-3AD215CA-AF7D-561C-9D9E-FAFB50F1E37F.dita
Symbian3/SDK/Source/GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita
Symbian3/SDK/Source/GUID-3AF6CE70-DDBE-53F3-ABB6-7E78A300F14B.dita
Symbian3/SDK/Source/GUID-3AFA592E-ED32-5AC6-B331-E7191CF2D5E2.dita
Symbian3/SDK/Source/GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita
Symbian3/SDK/Source/GUID-3B0BF8FF-88AB-5BF4-9F04-5F82A3998699.dita
Symbian3/SDK/Source/GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita
Symbian3/SDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6-master.png
Symbian3/SDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e241392_href.png
Symbian3/SDK/Source/GUID-3B2FB34B-B4FC-5273-AE35-DADA2FA4C419.dita
Symbian3/SDK/Source/GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.dita
Symbian3/SDK/Source/GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita
Symbian3/SDK/Source/GUID-3B7D05F9-2BCA-4B53-AE9F-99B0B3B7C4A2.dita
Symbian3/SDK/Source/GUID-3B945B72-EC12-4CC0-B7DA-1FC517A9B14D_d0e38139_href.png
Symbian3/SDK/Source/GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90.dita
Symbian3/SDK/Source/GUID-3BC54F46-5F81-5F2D-ACF8-E8E0A0D5A345.dita
Symbian3/SDK/Source/GUID-3BCA55F8-3867-579B-8D81-C540A32A8462.dita
Symbian3/SDK/Source/GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86.dita
Symbian3/SDK/Source/GUID-3C2E0C1A-DC7A-55F7-8005-39CEE71CD0A0.dita
Symbian3/SDK/Source/GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita
Symbian3/SDK/Source/GUID-3C552587-B983-5725-898D-81CC31458DE8.dita
Symbian3/SDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300-master.png
Symbian3/SDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e302567_href.png
Symbian3/SDK/Source/GUID-3CA039D8-A74D-4C9E-B4F5-6E153C7F65A1.dita
Symbian3/SDK/Source/GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita
Symbian3/SDK/Source/GUID-3CAD7211-2164-5F93-9EA7-7167E1C14012.dita
Symbian3/SDK/Source/GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita
Symbian3/SDK/Source/GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC.dita
Symbian3/SDK/Source/GUID-3CE3D01D-3EA1-5D44-B9DE-350F9E88F9C9.dita
Symbian3/SDK/Source/GUID-3D10DAFD-BE83-4892-B5E0-2ED7CF047788.dita
Symbian3/SDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229-master.png
Symbian3/SDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e172746_href.png
Symbian3/SDK/Source/GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE.dita
Symbian3/SDK/Source/GUID-3D73DD8F-8D23-5D47-A4F7-3673C993EF8F.dita
Symbian3/SDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C-master.png
Symbian3/SDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e63035_href.png
Symbian3/SDK/Source/GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita
Symbian3/SDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9-master.png
Symbian3/SDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e162410_href.png
Symbian3/SDK/Source/GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572.dita
Symbian3/SDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6-master.png
Symbian3/SDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e404700_href.png
Symbian3/SDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF-master.png
Symbian3/SDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e188950_href.png
Symbian3/SDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71-master.png
Symbian3/SDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e118282_href.png
Symbian3/SDK/Source/GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita
Symbian3/SDK/Source/GUID-3E7193C2-143E-58EF-B21F-9C0E1C65226F.dita
Symbian3/SDK/Source/GUID-3EB1C34E-584E-595D-A339-DE170A96AEBC.dita
Symbian3/SDK/Source/GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita
Symbian3/SDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18-master.png
Symbian3/SDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e110029_href.png
Symbian3/SDK/Source/GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D.dita
Symbian3/SDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A-master.png
Symbian3/SDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e235933_href.png
Symbian3/SDK/Source/GUID-3F1FA838-4B65-5692-8B73-AFB9896E5F10.dita
Symbian3/SDK/Source/GUID-3F1FF06E-4190-5AC7-86C6-6732B632BA1A.dita
Symbian3/SDK/Source/GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita
Symbian3/SDK/Source/GUID-3F69590C-B1FB-4E73-B3D3-FD09C894BC60_d0e60587_href.png
Symbian3/SDK/Source/GUID-3F69590C-B1FB-4E73-B3D3-FD09C894BC60_d0e61414_href.png
Symbian3/SDK/Source/GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA.dita
Symbian3/SDK/Source/GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita
Symbian3/SDK/Source/GUID-3FAB9077-3EC3-5539-B391-D11456362513.dita
Symbian3/SDK/Source/GUID-3FAECE72-FCC6-5C58-B724-C9A9DE485788.dita
Symbian3/SDK/Source/GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita
Symbian3/SDK/Source/GUID-3FB8AC96-209B-5B1E-8139-BA2D858CBF2F.dita
Symbian3/SDK/Source/GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita
Symbian3/SDK/Source/GUID-3FD2EADD-DC46-516D-B88D-DA523F51C5E3.dita
Symbian3/SDK/Source/GUID-3FD5C609-3727-53B6-900F-ACBE59F62E4A.dita
Symbian3/SDK/Source/GUID-3FE04A31-C35F-47E2-B615-6C1202FB8485.dita
Symbian3/SDK/Source/GUID-3FE54688-2CDE-5359-9ABB-B83BFA025A81.dita
Symbian3/SDK/Source/GUID-3FEEFC4D-19B5-502A-8310-40646B9C34BC.dita
Symbian3/SDK/Source/GUID-4008963F-F4DF-4628-97D4-5B005D699E4B.dita
Symbian3/SDK/Source/GUID-400E4702-973A-5CAC-9F9C-3A10121F856A.dita
Symbian3/SDK/Source/GUID-40113BA1-FFDD-535C-B487-8C9F569E2BC7.dita
Symbian3/SDK/Source/GUID-401A07E7-97CF-57BD-B37D-F6412762BBCB.dita
Symbian3/SDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46-master.png
Symbian3/SDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e337428_href.png
Symbian3/SDK/Source/GUID-402B5633-1E3A-5F24-8C4F-DA5F04D2557C.dita
Symbian3/SDK/Source/GUID-402C3EE7-8852-49B6-BE62-8588753FAC8F.dita
Symbian3/SDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9-master.png
Symbian3/SDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e172894_href.png
Symbian3/SDK/Source/GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita
Symbian3/SDK/Source/GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e7551_href.png
Symbian3/SDK/Source/GUID-40671EEC-DACC-5F0B-978C-2794FB206E62.dita
Symbian3/SDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1-master.png
Symbian3/SDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e165946_href.png
Symbian3/SDK/Source/GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita
Symbian3/SDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3-master.png
Symbian3/SDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e172844_href.png
Symbian3/SDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE-master.png
Symbian3/SDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e223038_href.png
Symbian3/SDK/Source/GUID-40CA47C0-76F9-42FE-AF9D-0B1BF42ACCB7.dita
Symbian3/SDK/Source/GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita
Symbian3/SDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0-master.png
Symbian3/SDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e219835_href.png
Symbian3/SDK/Source/GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita
Symbian3/SDK/Source/GUID-4102F39E-6215-44AD-9E30-6D8E86114D7D.dita
Symbian3/SDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB-master.png
Symbian3/SDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e92428_href.png
Symbian3/SDK/Source/GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita
Symbian3/SDK/Source/GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita
Symbian3/SDK/Source/GUID-412CB101-A92C-54E1-9518-79E94DD40A08.dita
Symbian3/SDK/Source/GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita
Symbian3/SDK/Source/GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita
Symbian3/SDK/Source/GUID-419BD5DC-6264-59FB-8EF4-E5652440A060.dita
Symbian3/SDK/Source/GUID-41A36790-CB11-4620-A2D5-1981077E5753.dita
Symbian3/SDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561-master.png
Symbian3/SDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e281230_href.png
Symbian3/SDK/Source/GUID-41D80358-473F-5B50-A09A-4F5601EAC4A9.dita
Symbian3/SDK/Source/GUID-41F1AED1-7BE6-42CF-BC4A-E913A6F2D5E6.dita
Symbian3/SDK/Source/GUID-41F33130-7968-5016-9ACE-9E9F906118DB.dita
Symbian3/SDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798-master.png
Symbian3/SDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e262473_href.png
Symbian3/SDK/Source/GUID-4263CC05-EF13-5A2C-875C-72F3C2F6AB57.dita
Symbian3/SDK/Source/GUID-426BADE5-64CF-525A-B4E3-21C40D7B4AB2.dita
Symbian3/SDK/Source/GUID-426DECE8-311A-5720-88BB-F2A4805648D6.dita
Symbian3/SDK/Source/GUID-42833109-F8C2-57FC-9995-0461698A19FF.dita
Symbian3/SDK/Source/GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita
Symbian3/SDK/Source/GUID-42C94E3D-93DE-543E-A0D2-8B705C668BE0.dita
Symbian3/SDK/Source/GUID-42CB471F-B882-45D4-A1D3-20D3FF0C336E_d0e38135_href.png
Symbian3/SDK/Source/GUID-42CF6D55-CAD2-5049-A1B6-35479404C273.dita
Symbian3/SDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9-master.png
Symbian3/SDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e12299_href.png
Symbian3/SDK/Source/GUID-43080A86-72D3-5422-953E-A5EF79961D7B.dita
Symbian3/SDK/Source/GUID-432FF981-010F-540B-834F-FF924238AA2A.dita
Symbian3/SDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6-master.png
Symbian3/SDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e283467_href.png
Symbian3/SDK/Source/GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita
Symbian3/SDK/Source/GUID-436B6DFE-D279-44BF-B099-B2547D50610A.dita
Symbian3/SDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377-master.png
Symbian3/SDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e312757_href.png
Symbian3/SDK/Source/GUID-4384066E-158A-5F63-A823-7793DAE680BF.dita
Symbian3/SDK/Source/GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita
Symbian3/SDK/Source/GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita
Symbian3/SDK/Source/GUID-43CE4DCB-F498-5878-A2EE-7831BBB4D288.dita
Symbian3/SDK/Source/GUID-4406BDE0-8256-5F97-9FC5-BBFD11D9C4A3.dita
Symbian3/SDK/Source/GUID-4407F7CA-6D08-4B9C-A0CE-37AFC8BB20B2.dita
Symbian3/SDK/Source/GUID-440FDF7D-B9A0-5767-9FF8-412803C0D2A9.dita
Symbian3/SDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E-master.png
Symbian3/SDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e219441_href.png
Symbian3/SDK/Source/GUID-442F2E69-87B5-54E7-B62A-70B742432372.dita
Symbian3/SDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC-master.png
Symbian3/SDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e380090_href.png
Symbian3/SDK/Source/GUID-44927609-CFD1-5D09-BA78-7A5AB981DD2E.dita
Symbian3/SDK/Source/GUID-4492D5C1-C64E-5561-8A3F-8D887603B6FB.dita
Symbian3/SDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73-master.png
Symbian3/SDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e100901_href.png
Symbian3/SDK/Source/GUID-44B0C58F-B938-4F69-B80A-1EB632EFD434.ditamap
Symbian3/SDK/Source/GUID-44CF5471-564E-5790-935B-51193A4978D6.dita
Symbian3/SDK/Source/GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita
Symbian3/SDK/Source/GUID-44F4089F-7184-5F73-A01E-E0F639D32EA1.dita
Symbian3/SDK/Source/GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita
Symbian3/SDK/Source/GUID-457628C5-2972-4432-A03F-CD8CC0E1B60A.dita
Symbian3/SDK/Source/GUID-4576A9FC-10EF-5D3A-9AFC-3BF9CE10EE2F.dita
Symbian3/SDK/Source/GUID-457CC544-EC3B-4863-A5C4-DC7046614929.dita
Symbian3/SDK/Source/GUID-45A03C42-652C-59BD-9A21-6346A96310DB.dita
Symbian3/SDK/Source/GUID-45B7FE73-2AB2-54CA-89D7-FFCAFD3B7915.dita
Symbian3/SDK/Source/GUID-45D4F2D1-A433-4289-A627-D0ECD97489DD_d0e60529_href.png
Symbian3/SDK/Source/GUID-45D4F2D1-A433-4289-A627-D0ECD97489DD_d0e60803_href.png
Symbian3/SDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4-master.png
Symbian3/SDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e100907_href.png
Symbian3/SDK/Source/GUID-45E1953A-DEFB-5E48-AC96-443A3234F913.dita
Symbian3/SDK/Source/GUID-46047253-4471-502D-B48E-E1990E7F7962.dita
Symbian3/SDK/Source/GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita
Symbian3/SDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED-master.png
Symbian3/SDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e162681_href.png
Symbian3/SDK/Source/GUID-462239D1-4B40-4342-92DA-32AB0AF0D2F2.dita
Symbian3/SDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240-master.png
Symbian3/SDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e66039_href.png
Symbian3/SDK/Source/GUID-46813F51-370B-5853-917C-6916925A347D.dita
Symbian3/SDK/Source/GUID-468EDD07-3868-550B-B1C9-E79FD728F9B9.dita
Symbian3/SDK/Source/GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita
Symbian3/SDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD-master.jpg
Symbian3/SDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e316513_href.jpg
Symbian3/SDK/Source/GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita
Symbian3/SDK/Source/GUID-46C56A16-E548-59B1-88DF-3DAF3FF68751.dita
Symbian3/SDK/Source/GUID-46D6DF29-38F7-5842-9FDD-82754AE8D9A0.dita
Symbian3/SDK/Source/GUID-46E12D78-5F1F-55B8-B7E8-1B4862CC70E8.dita
Symbian3/SDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5-master.png
Symbian3/SDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e321845_href.png
Symbian3/SDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54-master.jpg
Symbian3/SDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e284504_href.jpg
Symbian3/SDK/Source/GUID-47419CFB-163D-5A4E-8A00-C73773353BDF.dita
Symbian3/SDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044-master.png
Symbian3/SDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e205743_href.png
Symbian3/SDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5-master.png
Symbian3/SDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e177925_href.png
Symbian3/SDK/Source/GUID-47851718-8DCA-57F5-8520-7044048A5852.dita
Symbian3/SDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69-master.png
Symbian3/SDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e62935_href.png
Symbian3/SDK/Source/GUID-47A4949C-61B3-5B91-9845-F40A9BC157C4.dita
Symbian3/SDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C-master.png
Symbian3/SDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e63044_href.png
Symbian3/SDK/Source/GUID-47F14C10-3ACD-583C-9E7D-84641229A771.dita
Symbian3/SDK/Source/GUID-481D4689-C4DA-50FB-9529-081EB9BD7901.dita
Symbian3/SDK/Source/GUID-4820CA37-982D-57BC-8829-498192801B1E.dita
Symbian3/SDK/Source/GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita
Symbian3/SDK/Source/GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita
Symbian3/SDK/Source/GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita
Symbian3/SDK/Source/GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita
Symbian3/SDK/Source/GUID-485B1284-9DB0-5AF7-906A-89A830B9FE44.dita
Symbian3/SDK/Source/GUID-4860A4E6-1641-47D9-8243-C03779276C6D.dita
Symbian3/SDK/Source/GUID-486981A0-1F0E-5935-8E9A-9C6D4CCF34A7.dita
Symbian3/SDK/Source/GUID-487F5A5B-E2D1-5138-8063-82940879D3D0.dita
Symbian3/SDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C-master.jpg
Symbian3/SDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e303096_href.jpg
Symbian3/SDK/Source/GUID-48B61662-0A11-4356-9882-7523B04FFD96.dita
Symbian3/SDK/Source/GUID-48BD628F-F47F-535B-B148-7425A6704FC2.dita
Symbian3/SDK/Source/GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830.dita
Symbian3/SDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA-master.png
Symbian3/SDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e355013_href.png
Symbian3/SDK/Source/GUID-48ED7013-B1B7-5E86-AC09-599C4499191D.dita
Symbian3/SDK/Source/GUID-4911D998-5B1A-53E1-B1A7-920748489CD0.dita
Symbian3/SDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667-master.png
Symbian3/SDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e190442_href.png
Symbian3/SDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558-master.png
Symbian3/SDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e241603_href.png
Symbian3/SDK/Source/GUID-49363088-CE0B-558D-8E86-48400E4F7C2F.dita
Symbian3/SDK/Source/GUID-49397CFD-955A-5DF6-9251-368C44224966.dita
Symbian3/SDK/Source/GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita
Symbian3/SDK/Source/GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita
Symbian3/SDK/Source/GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271.dita
Symbian3/SDK/Source/GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9.dita
Symbian3/SDK/Source/GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita
Symbian3/SDK/Source/GUID-497930CE-4D61-50EE-A63B-3656158EE29C.dita
Symbian3/SDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4-master.jpg
Symbian3/SDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e147274_href.jpg
Symbian3/SDK/Source/GUID-49882982-0DA2-5021-BAC8-7DC77BDFD27C.dita
Symbian3/SDK/Source/GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita
Symbian3/SDK/Source/GUID-49A7E8FD-72DA-5D56-86BE-74AA9AAF7C02.dita
Symbian3/SDK/Source/GUID-49C93C36-D86B-4EEE-A8AB-4279312DF4BC.dita
Symbian3/SDK/Source/GUID-4A21335F-7752-5134-98C5-D21D4657E094.dita
Symbian3/SDK/Source/GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita
Symbian3/SDK/Source/GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.dita
Symbian3/SDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9-master.png
Symbian3/SDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e154981_href.png
Symbian3/SDK/Source/GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita
Symbian3/SDK/Source/GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213.dita
Symbian3/SDK/Source/GUID-4A9255D1-42A4-57FA-A4B4-42C552964047.dita
Symbian3/SDK/Source/GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita
Symbian3/SDK/Source/GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita
Symbian3/SDK/Source/GUID-4ACEA6B0-CA7C-5751-A1B6-283287552A31.dita
Symbian3/SDK/Source/GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita
Symbian3/SDK/Source/GUID-4ADDDAFE-0941-4787-B07B-F5B7D8D5B1AA.dita
Symbian3/SDK/Source/GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita
Symbian3/SDK/Source/GUID-4B03733F-D84D-5A28-B772-2E256D86ABC7.dita
Symbian3/SDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4-master.png
Symbian3/SDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e215415_href.png
Symbian3/SDK/Source/GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita
Symbian3/SDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67-master.png
Symbian3/SDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e65850_href.png
Symbian3/SDK/Source/GUID-4B885E13-AC1E-5208-9F07-E6219E214626.dita
Symbian3/SDK/Source/GUID-4B8AEE55-1601-5CF8-9DD1-492DAE18F0F8.dita
Symbian3/SDK/Source/GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita
Symbian3/SDK/Source/GUID-4BB03B97-9AD0-50D0-AAE5-B7AB2415716E.dita
Symbian3/SDK/Source/GUID-4BB85136-0E46-47BD-83FD-A918DECF7CDD_d0e60351_href.png
Symbian3/SDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573-master.png
Symbian3/SDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e167020_href.png
Symbian3/SDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406-master.png
Symbian3/SDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e196472_href.png
Symbian3/SDK/Source/GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita
Symbian3/SDK/Source/GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita
Symbian3/SDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C-master.png
Symbian3/SDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e172000_href.png
Symbian3/SDK/Source/GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita
Symbian3/SDK/Source/GUID-4C1F3DB3-039C-57D6-987F-4A26E1E056E6.dita
Symbian3/SDK/Source/GUID-4C31BFCC-BC2A-55B1-8D3B-3355032E2062.dita
Symbian3/SDK/Source/GUID-4C35C86A-D57F-503B-8E55-5D235E0D6DA0.dita
Symbian3/SDK/Source/GUID-4C406E49-7726-5620-AAAA-84C33DADAF4B.dita
Symbian3/SDK/Source/GUID-4C47ADC7-3624-5C39-B632-F227452C420A.dita
Symbian3/SDK/Source/GUID-4C4B6098-38B4-5BD0-8E58-712511EBE074.dita
Symbian3/SDK/Source/GUID-4C7ABD1C-B42C-590A-AD24-7FA6C3A8D18C.dita
Symbian3/SDK/Source/GUID-4CBFA2E3-0EFC-5E10-A960-57A8FF9A6025.dita
Symbian3/SDK/Source/GUID-4CD6C5CC-A91B-56BE-825F-5B10B63627DA.dita
Symbian3/SDK/Source/GUID-4CE10DED-31B2-50B5-9D38-85CE86E8A8DE.dita
Symbian3/SDK/Source/GUID-4CE611C7-1FD8-5DAA-AA04-5B80804D6DD7.dita
Symbian3/SDK/Source/GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita
Symbian3/SDK/Source/GUID-4CF02F12-7030-5E49-B0CC-593F02EF6FA7.dita
Symbian3/SDK/Source/GUID-4CF8E6BC-3E2A-5773-A296-6321573B967E.dita
Symbian3/SDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029-master.png
Symbian3/SDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e177854_href.png
Symbian3/SDK/Source/GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita
Symbian3/SDK/Source/GUID-4D4CB4DC-9B9A-5256-B949-C5E9F369D9C6.dita
Symbian3/SDK/Source/GUID-4D5B0B16-329F-5932-995D-DB43E6641EF9.dita
Symbian3/SDK/Source/GUID-4D6C478A-33BA-4D74-9B82-7133ABFFB0D2_d0e59973_href.png
Symbian3/SDK/Source/GUID-4D82B904-71BF-4945-85ED-655AF8879FF9_d0e53548_href.png
Symbian3/SDK/Source/GUID-4D94A4B8-392D-5657-BD71-F1EA54318C47.dita
Symbian3/SDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12-master.png
Symbian3/SDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e94025_href.png
Symbian3/SDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26-master.png
Symbian3/SDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e251796_href.png
Symbian3/SDK/Source/GUID-4DBE9AD9-2942-450B-B43C-3F2B47777357.dita
Symbian3/SDK/Source/GUID-4DC2D055-E522-51C4-8BF9-1361089F0E4A.dita
Symbian3/SDK/Source/GUID-4DEC6706-6189-4E91-AEA9-479DDF04B955_d0e53591_href.png
Symbian3/SDK/Source/GUID-4E195F2A-78AE-5664-A115-AD65BF457AB1.dita
Symbian3/SDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953-master.png
Symbian3/SDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e169388_href.png
Symbian3/SDK/Source/GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita
Symbian3/SDK/Source/GUID-4E45570C-A0EF-522C-BD67-FC31E4092740.dita
Symbian3/SDK/Source/GUID-4E4C842F-1AF6-505D-B378-2043FDD8985C.dita
Symbian3/SDK/Source/GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita
Symbian3/SDK/Source/GUID-4E838A77-C7B5-5B1F-93F5-F3577901914B.dita
Symbian3/SDK/Source/GUID-4E985144-C4E6-5114-B88F-B9C92F313D91.dita
Symbian3/SDK/Source/GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita
Symbian3/SDK/Source/GUID-4F004877-DFDD-5282-B8B6-7F36D892B122.dita
Symbian3/SDK/Source/GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita
Symbian3/SDK/Source/GUID-4F2F254A-1A81-507A-B364-BE4088D3B3AE.dita
Symbian3/SDK/Source/GUID-4F4B97FD-B0C7-5FDD-AC50-9611B240A11E.dita
Symbian3/SDK/Source/GUID-4F5E644B-B2DD-5CD3-B763-E134F1916E62.dita
Symbian3/SDK/Source/GUID-4F703F85-080F-5B77-B94D-5449764828F3.dita
Symbian3/SDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5-master.png
Symbian3/SDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e287503_href.png
Symbian3/SDK/Source/GUID-4F882837-0DA1-5243-BA7B-696B418A160E.dita
Symbian3/SDK/Source/GUID-4F8B0675-AC8D-529A-903D-DA31C8236A98.dita
Symbian3/SDK/Source/GUID-4F901F56-7F0E-4869-85CA-6109ED0AF5B7.dita
Symbian3/SDK/Source/GUID-4FB4CAD4-52BD-5DC1-9B20-34DA77F70A9D.dita
Symbian3/SDK/Source/GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita
Symbian3/SDK/Source/GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C.dita
Symbian3/SDK/Source/GUID-4FCF605D-52D9-5B2D-80CF-80C940F680CA.dita
Symbian3/SDK/Source/GUID-4FE4B515-EE2B-47DB-BECE-E390E4EB2C3E.dita
Symbian3/SDK/Source/GUID-4FFA793B-9E57-5D59-B9A7-528F11C4852E.dita
Symbian3/SDK/Source/GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita
Symbian3/SDK/Source/GUID-50196C0E-39AF-5E94-888B-9901C934CCE7.dita
Symbian3/SDK/Source/GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita
Symbian3/SDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C-master.jpg
Symbian3/SDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e304218_href.jpg
Symbian3/SDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242-master.jpg
Symbian3/SDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e253544_href.jpg
Symbian3/SDK/Source/GUID-506642C2-A14F-55F2-9377-43DDB14F4053.dita
Symbian3/SDK/Source/GUID-5072BE46-B1B4-5C3A-BF55-BEA7443E7657.dita
Symbian3/SDK/Source/GUID-508DD478-1876-5DE2-9271-BDD99F51F579.dita
Symbian3/SDK/Source/GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita
Symbian3/SDK/Source/GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5.dita
Symbian3/SDK/Source/GUID-50BA6AEB-E968-5CCA-8F5D-A65969263D90.dita
Symbian3/SDK/Source/GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita
Symbian3/SDK/Source/GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita
Symbian3/SDK/Source/GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita
Symbian3/SDK/Source/GUID-50F216D0-242A-5796-BDCC-7AAB28535458.dita
Symbian3/SDK/Source/GUID-50FD71BF-2DDA-5E80-9904-82DC90FCE6DD.dita
Symbian3/SDK/Source/GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita
Symbian3/SDK/Source/GUID-511A0F2D-AD60-56C5-808C-8F8570C19C3A.dita
Symbian3/SDK/Source/GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226.dita
Symbian3/SDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6-master.png
Symbian3/SDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e2138_href.png
Symbian3/SDK/Source/GUID-51621C76-17B5-5829-B4EC-86B453442CDC.dita
Symbian3/SDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB-master.png
Symbian3/SDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e190709_href.png
Symbian3/SDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C-master.png
Symbian3/SDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e120695_href.png
Symbian3/SDK/Source/GUID-517F4D7A-5959-57E6-9C5C-3584FBA4EA42.dita
Symbian3/SDK/Source/GUID-519AEE28-D3A8-5430-88CA-178CA338D592.dita
Symbian3/SDK/Source/GUID-51AB13C3-755C-45CD-841D-1CDF45338A2F_d0e46350_href.png
Symbian3/SDK/Source/GUID-51AB13C3-755C-45CD-841D-1CDF45338A2F_d0e52443_href.png
Symbian3/SDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D-master.jpg
Symbian3/SDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e246946_href.jpg
Symbian3/SDK/Source/GUID-51C6E337-9E68-542A-B785-670417A55CEF.dita
Symbian3/SDK/Source/GUID-51CD4B23-F4C1-4CD2-8CDB-6335365CE44B.dita
Symbian3/SDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C-master.png
Symbian3/SDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e317224_href.png
Symbian3/SDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7-master.png
Symbian3/SDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e93876_href.png
Symbian3/SDK/Source/GUID-51F43258-B3D8-5EC9-85EF-67F09499C253.dita
Symbian3/SDK/Source/GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e62069_href.png
Symbian3/SDK/Source/GUID-51FF9F99-8005-4480-9645-64476B953C57.dita
Symbian3/SDK/Source/GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita
Symbian3/SDK/Source/GUID-520F620F-03CE-5C4E-9783-745D2740F648.dita
Symbian3/SDK/Source/GUID-52151070-626D-5F14-B53F-7B46BCBD633E.dita
Symbian3/SDK/Source/GUID-521837E2-583C-5C7D-85F7-D936C77AA84C.dita
Symbian3/SDK/Source/GUID-5219F0F7-4BFA-5B1B-999C-FBE4E2228588.dita
Symbian3/SDK/Source/GUID-521C2463-A72B-4C48-8815-61689264F2C1-master.jpg
Symbian3/SDK/Source/GUID-521C2463-A72B-4C48-8815-61689264F2C1_d0e52001_href.jpg
Symbian3/SDK/Source/GUID-521C2463-A72B-4C48-8815-61689264F2C1_d0e52646_href.jpg
Symbian3/SDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6-master.png
Symbian3/SDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e248943_href.png
Symbian3/SDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412-master.png
Symbian3/SDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e400779_href.png
Symbian3/SDK/Source/GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita
Symbian3/SDK/Source/GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita
Symbian3/SDK/Source/GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita
Symbian3/SDK/Source/GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482.dita
Symbian3/SDK/Source/GUID-52D2B0A4-1535-5D41-BF4C-06745C0588F6.dita
Symbian3/SDK/Source/GUID-53017B71-9399-548B-BD1D-C68FC535A543.dita
Symbian3/SDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1-master.png
Symbian3/SDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e337015_href.png
Symbian3/SDK/Source/GUID-530DBEB3-2379-5567-BB10-45D21D6FF80A.dita
Symbian3/SDK/Source/GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita
Symbian3/SDK/Source/GUID-5329AE68-39E0-55E7-9878-2D8FF9E29B21.dita
Symbian3/SDK/Source/GUID-5329C067-60B8-4E0E-A2B3-9423B75E189D.dita
Symbian3/SDK/Source/GUID-533EC918-BF5B-5D0B-8860-1E8746A05EE3.dita
Symbian3/SDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069-master.png
Symbian3/SDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e289732_href.png
Symbian3/SDK/Source/GUID-535793F2-08F1-5B4E-AD32-783985C53124.dita
Symbian3/SDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046-master.png
Symbian3/SDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e62950_href.png
Symbian3/SDK/Source/GUID-535954FD-2501-5C80-AD86-AC73A86B18B5.dita
Symbian3/SDK/Source/GUID-5365F75F-647F-4225-B63B-35675EBD6038_d0e54980_href.png
Symbian3/SDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050-master.png
Symbian3/SDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e92264_href.png
Symbian3/SDK/Source/GUID-5373B575-F284-5774-9C73-2A18C4A912A2.dita
Symbian3/SDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656-master.png
Symbian3/SDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e205824_href.png
Symbian3/SDK/Source/GUID-539C4AA4-FF3F-4D6B-90A5-677092DBE54E.dita
Symbian3/SDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22-master.png
Symbian3/SDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e256631_href.png
Symbian3/SDK/Source/GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita
Symbian3/SDK/Source/GUID-53C0A250-287E-57E1-80BC-F66F9F9DD478.dita
Symbian3/SDK/Source/GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C.dita
Symbian3/SDK/Source/GUID-53E1EBAB-758B-58DF-9568-8CC682C0F74F.dita
Symbian3/SDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6-master.png
Symbian3/SDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e204099_href.png
Symbian3/SDK/Source/GUID-542550FA-F9F1-46D6-8182-6E7FAA013572.dita
Symbian3/SDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072-master.jpg
Symbian3/SDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e146660_href.jpg
Symbian3/SDK/Source/GUID-54417A4F-710D-5257-BF49-13D9F28C92B9.dita
Symbian3/SDK/Source/GUID-545DA961-217E-49CA-A90E-7A41E2C03A99.dita
Symbian3/SDK/Source/GUID-546FD573-8136-4C58-878B-C2F643B333AA.dita
Symbian3/SDK/Source/GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita
Symbian3/SDK/Source/GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita
Symbian3/SDK/Source/GUID-548CC331-8E38-5627-A925-EA386BE90258.dita
Symbian3/SDK/Source/GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita
Symbian3/SDK/Source/GUID-54D1B7E1-39A5-5BB9-BC33-1047FDE941D9.dita
Symbian3/SDK/Source/GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita
Symbian3/SDK/Source/GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D.dita
Symbian3/SDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9-master.png
Symbian3/SDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e168668_href.png
Symbian3/SDK/Source/GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90.dita
Symbian3/SDK/Source/GUID-55165C57-0F32-5363-A2EC-E37B5B36B6E1.dita
Symbian3/SDK/Source/GUID-5544728C-A53D-57F0-B8D8-F7B694C8B5CA.dita
Symbian3/SDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F-master.png
Symbian3/SDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e317348_href.png
Symbian3/SDK/Source/GUID-5578DF32-65ED-47F9-8A10-7538206AC473.dita
Symbian3/SDK/Source/GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita
Symbian3/SDK/Source/GUID-5580195F-3DE7-55FA-B2C1-91A950A39C6E.dita
Symbian3/SDK/Source/GUID-5592E9C1-D490-538F-9B11-5EFB72DEDBE2.dita
Symbian3/SDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E-master.png
Symbian3/SDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e62601_href.png
Symbian3/SDK/Source/GUID-55A1A47A-A7DD-5B1A-88E1-4818CB65B782.dita
Symbian3/SDK/Source/GUID-55A6DA94-FAE6-442D-BBA8-82F92D4C63F2.dita
Symbian3/SDK/Source/GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6.dita
Symbian3/SDK/Source/GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita
Symbian3/SDK/Source/GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1.dita
Symbian3/SDK/Source/GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita
Symbian3/SDK/Source/GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita
Symbian3/SDK/Source/GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita
Symbian3/SDK/Source/GUID-5642F824-DDEB-43D1-B838-6C19AFFEBD9C_d0e55965_href.png
Symbian3/SDK/Source/GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita
Symbian3/SDK/Source/GUID-565386C7-A6D4-59E2-A9CF-89F424750476.dita
Symbian3/SDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92-master.png
Symbian3/SDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e305304_href.png
Symbian3/SDK/Source/GUID-567AB683-5D92-533D-B4D8-813E70316DA3.dita
Symbian3/SDK/Source/GUID-567D36A2-1097-5D44-B1B2-896F0F812A32.dita
Symbian3/SDK/Source/GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F.dita
Symbian3/SDK/Source/GUID-56841E07-1A4A-5572-BF3F-F80069FD5D59.dita
Symbian3/SDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A-master.png
Symbian3/SDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e117992_href.png
Symbian3/SDK/Source/GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita
Symbian3/SDK/Source/GUID-56EA1BD6-DE61-5541-993A-2B60D1DE41AC.dita
Symbian3/SDK/Source/GUID-56EE13F0-CAEE-5E1C-99CD-2FEC8C3BCA6B.dita
Symbian3/SDK/Source/GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita
Symbian3/SDK/Source/GUID-573420CD-E8E0-4E98-B3E2-1388F4B1137D_d0e55804_href.png
Symbian3/SDK/Source/GUID-57412030-6B02-592A-81D5-54D2767ED131.dita
Symbian3/SDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769-master.png
Symbian3/SDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e132437_href.png
Symbian3/SDK/Source/GUID-575CDD9C-ED6E-510E-AE11-46CA7EB7B74C-master.png
Symbian3/SDK/Source/GUID-575CDD9C-ED6E-510E-AE11-46CA7EB7B74C_d0e117702_href.png
Symbian3/SDK/Source/GUID-576BA55E-3CD3-5867-B55D-60CE137595F2.dita
Symbian3/SDK/Source/GUID-5777D16D-71FA-5929-9557-4C532C59ECBF.dita
Symbian3/SDK/Source/GUID-577F42BA-299E-5071-8C7A-FA0CBADCECAE.dita
Symbian3/SDK/Source/GUID-579D7C32-B6C8-5C77-88A5-B3078729E1BA.dita
Symbian3/SDK/Source/GUID-57A73F9C-5E72-4445-BF2C-9D44A3EC88B5.dita
Symbian3/SDK/Source/GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita
Symbian3/SDK/Source/GUID-57A909F3-EAEA-5FE2-B620-E21204794497.dita
Symbian3/SDK/Source/GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita
Symbian3/SDK/Source/GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e266789_href.png
Symbian3/SDK/Source/GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A.dita
Symbian3/SDK/Source/GUID-57DD8365-E60F-55C6-BB24-8D215A31A8AF.dita
Symbian3/SDK/Source/GUID-57F29787-B425-53EA-9DB4-372B77543584.dita
Symbian3/SDK/Source/GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita
Symbian3/SDK/Source/GUID-5801535A-3A7E-4E35-97F5-0DC6C7730952_d0e46861_href.png
Symbian3/SDK/Source/GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita
Symbian3/SDK/Source/GUID-580471E3-7DFD-5325-A8B9-B3E7FABF872D.dita
Symbian3/SDK/Source/GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita
Symbian3/SDK/Source/GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita
Symbian3/SDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070-master.png
Symbian3/SDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e92651_href.png
Symbian3/SDK/Source/GUID-5822CE94-C8AF-5F81-AB3F-E95B44265065.dita
Symbian3/SDK/Source/GUID-5829247E-2E8E-502F-9051-A59DA8EE71B0.dita
Symbian3/SDK/Source/GUID-582CAA4A-1240-5138-983D-D9C6EEAF5566.dita
Symbian3/SDK/Source/GUID-58318BAB-2EC4-4C9E-A7CA-580E701EE54F.dita
Symbian3/SDK/Source/GUID-5872329F-2B52-5F52-83C1-205F2F933877.dita
Symbian3/SDK/Source/GUID-5875C752-12A9-5819-90D9-CAAE48F1A5C5.dita
Symbian3/SDK/Source/GUID-58ACE248-BF26-57BB-B5D2-C772FC046222.dita
Symbian3/SDK/Source/GUID-58CA15F8-D984-5D07-8C00-161FA16A8FD3.dita
Symbian3/SDK/Source/GUID-58F65411-CF08-5F46-8222-3FDB9E571FCC.dita
Symbian3/SDK/Source/GUID-591552AB-D708-5CB5-9597-A0AF3D303178.dita
Symbian3/SDK/Source/GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita
Symbian3/SDK/Source/GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita
Symbian3/SDK/Source/GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita
Symbian3/SDK/Source/GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita
Symbian3/SDK/Source/GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita
Symbian3/SDK/Source/GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1.dita
Symbian3/SDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4-master.png
Symbian3/SDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e195746_href.png
Symbian3/SDK/Source/GUID-5986717C-C777-590D-8487-CB8ED488E975.dita
Symbian3/SDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797-master.png
Symbian3/SDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e13148_href.png
Symbian3/SDK/Source/GUID-59BBEA98-6501-5415-A4B5-3AE8E33957D3.dita
Symbian3/SDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9-master.png
Symbian3/SDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e215220_href.png
Symbian3/SDK/Source/GUID-59D2B677-63D7-5FE7-98F4-549D9C235E56.dita
Symbian3/SDK/Source/GUID-59DB0115-053A-5D23-8C40-E2428C096BBC.dita
Symbian3/SDK/Source/GUID-59ED6D14-0976-58AE-8DDC-73F051866406.dita
Symbian3/SDK/Source/GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e46754_href.png
Symbian3/SDK/Source/GUID-59FFCA8F-5F2C-55F9-B864-AFA1CC18722D.dita
Symbian3/SDK/Source/GUID-5A292526-5B71-4076-9DBD-1385CD1FFD37.dita
Symbian3/SDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C-master.png
Symbian3/SDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e163491_href.png
Symbian3/SDK/Source/GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita
Symbian3/SDK/Source/GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita
Symbian3/SDK/Source/GUID-5A9CBB5B-DE6A-42D6-9244-3F151B79BDCD.dita
Symbian3/SDK/Source/GUID-5AA3E9E4-9727-5B54-81CB-DADA73DEC51E.dita
Symbian3/SDK/Source/GUID-5AAE8371-E146-562B-B8AF-149FF981693C.dita
Symbian3/SDK/Source/GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita
Symbian3/SDK/Source/GUID-5AF0B573-4351-5735-92A1-4F29BCF9A164.dita
Symbian3/SDK/Source/GUID-5B1A7CBF-40DE-56F9-B145-948C6F72B647.dita
Symbian3/SDK/Source/GUID-5B26AB8E-E20A-4C15-B4F8-812ED9A4A96C.dita
Symbian3/SDK/Source/GUID-5B2D6FE7-A09A-5DB1-A0B6-D1A1397D845F.dita
Symbian3/SDK/Source/GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita
Symbian3/SDK/Source/GUID-5B43ED43-21B4-54C6-8637-76554769E6FE.dita
Symbian3/SDK/Source/GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita
Symbian3/SDK/Source/GUID-5B451D6F-1F3D-5B54-BBC4-212D04F9977F.dita
Symbian3/SDK/Source/GUID-5B50E929-5C29-5920-965E-24F6CB616AC9.dita
Symbian3/SDK/Source/GUID-5B63D14D-007D-566F-A065-1A25FE4B97A3.dita
Symbian3/SDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF-master.png
Symbian3/SDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e351317_href.png
Symbian3/SDK/Source/GUID-5B6BF7FA-21D2-5A63-8217-6D36F6B8C033.dita
Symbian3/SDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE-master.png
Symbian3/SDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e297911_href.png
Symbian3/SDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15-master.png
Symbian3/SDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e113139_href.png
Symbian3/SDK/Source/GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita
Symbian3/SDK/Source/GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita
Symbian3/SDK/Source/GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita
Symbian3/SDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA-master.png
Symbian3/SDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e205879_href.png
Symbian3/SDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9-master.jpg
Symbian3/SDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e362837_href.jpg
Symbian3/SDK/Source/GUID-5BCF45C6-B2F7-4078-AE6F-052128AC7FF7_d0e38954_href.png
Symbian3/SDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1-master.png
Symbian3/SDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e51823_href.png
Symbian3/SDK/Source/GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita
Symbian3/SDK/Source/GUID-5BE31242-78A2-584B-BF00-B7805C219E40.dita
Symbian3/SDK/Source/GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita
Symbian3/SDK/Source/GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e50688_href.png
Symbian3/SDK/Source/GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita
Symbian3/SDK/Source/GUID-5C4922C8-3AE3-424A-A2E7-5C6DA323FFA6.dita
Symbian3/SDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0-master.jpg
Symbian3/SDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e316648_href.jpg
Symbian3/SDK/Source/GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446.dita
Symbian3/SDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF-master.png
Symbian3/SDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e242014_href.png
Symbian3/SDK/Source/GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita
Symbian3/SDK/Source/GUID-5C678281-46F3-53C8-8D5A-93E51EC9E3CF.dita
Symbian3/SDK/Source/GUID-5C79E34A-4048-57C4-A7CF-2D56DC9702FB.dita
Symbian3/SDK/Source/GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246.dita
Symbian3/SDK/Source/GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita
Symbian3/SDK/Source/GUID-5CF5B8D6-C477-55D2-A036-2C090FA41D33.dita
Symbian3/SDK/Source/GUID-5CFA3F21-3E42-5B53-8EC1-BC0F7F0E8136.dita
Symbian3/SDK/Source/GUID-5CFC075C-8F53-5E1B-A111-C6F4567DFD1E.dita
Symbian3/SDK/Source/GUID-5D14ADEC-ED83-5FA4-B551-C57CAE4F79BE.dita
Symbian3/SDK/Source/GUID-5D47DBF8-3DFE-5D0B-95B2-63302E91C423.dita
Symbian3/SDK/Source/GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347.dita
Symbian3/SDK/Source/GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita
Symbian3/SDK/Source/GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita
Symbian3/SDK/Source/GUID-5D5BF7E5-4105-572E-81B5-0E61E1AA443E.dita
Symbian3/SDK/Source/GUID-5D712F4A-E956-543D-BCC0-91107C6E4717.dita
Symbian3/SDK/Source/GUID-5DACAB53-6D32-5250-9BC2-3E8597C3E2B2.dita
Symbian3/SDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143-master.png
Symbian3/SDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e15375_href.png
Symbian3/SDK/Source/GUID-5DC419C8-FD1B-534F-B33D-0D4EBBC6B506.dita
Symbian3/SDK/Source/GUID-5DD1010C-1648-5086-BA80-BC25F3C7A2C4.dita
Symbian3/SDK/Source/GUID-5E10D5B7-C407-51E0-8C16-466A8BC89106.dita
Symbian3/SDK/Source/GUID-5E1C24CA-2F82-5E30-8981-0F343FF2BD89.dita
Symbian3/SDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2-master.png
Symbian3/SDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e256679_href.png
Symbian3/SDK/Source/GUID-5E522208-E8ED-5E95-946C-5D87CF303F1D.dita
Symbian3/SDK/Source/GUID-5E6B86D0-8C9D-58E9-83EC-F76DC2A8E7B6.dita
Symbian3/SDK/Source/GUID-5E7A1041-B0E1-47E3-A3BF-6C9AE221B98F.dita
Symbian3/SDK/Source/GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita
Symbian3/SDK/Source/GUID-5E8C5D5C-8B84-4126-A8A8-F61F7DA0AD32_d0e58746_href.png
Symbian3/SDK/Source/GUID-5E95D090-582E-536A-AE93-8C5312618E76.dita
Symbian3/SDK/Source/GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8.dita
Symbian3/SDK/Source/GUID-5EBA3C03-2E4E-5DBA-BB5B-0D40DAB3C39B.dita
Symbian3/SDK/Source/GUID-5EC09CBB-9EDC-549C-9C4D-036261BE8A4B.dita
Symbian3/SDK/Source/GUID-5F1E5D73-27B5-5C08-848D-361AC2F15B96.dita
Symbian3/SDK/Source/GUID-5F3B814F-30B2-5325-A83F-A48ACCF095EB.dita
Symbian3/SDK/Source/GUID-5F4510C9-5B16-593A-A225-37606800915B.dita
Symbian3/SDK/Source/GUID-5F5F9DF5-E08E-47F9-B35C-E07180524864_d0e43117_href.png
Symbian3/SDK/Source/GUID-5F641F7A-AEAA-5C3E-9179-C3707F10E6DC.dita
Symbian3/SDK/Source/GUID-5F749184-C804-41FC-BA81-038783BDC967.dita
Symbian3/SDK/Source/GUID-5F822B8B-3440-5AA3-998E-B15E929F7A70.dita
Symbian3/SDK/Source/GUID-5F9E2762-855A-4DE6-A11B-A5F0D51E19D9_d0e42268_href.png
Symbian3/SDK/Source/GUID-5F9E2762-855A-4DE6-A11B-A5F0D51E19D9_d0e53650_href.png
Symbian3/SDK/Source/GUID-5FB2141F-8B2F-5DAE-8FDF-58D7351C5848.dita
Symbian3/SDK/Source/GUID-5FBA9BB1-94A2-470C-9932-C4255E3774C0.dita
Symbian3/SDK/Source/GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e266838_href.png
Symbian3/SDK/Source/GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita
Symbian3/SDK/Source/GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita
Symbian3/SDK/Source/GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72.dita
Symbian3/SDK/Source/GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e113379_href.png
Symbian3/SDK/Source/GUID-60141F31-6061-5C65-809D-FE7A4F8414F7.dita
Symbian3/SDK/Source/GUID-6021BE18-3416-55DF-A628-0071024D7586.dita
Symbian3/SDK/Source/GUID-6025A68F-625B-570A-87D7-2C11E66044D4.dita
Symbian3/SDK/Source/GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54.dita
Symbian3/SDK/Source/GUID-6061361C-01F7-5BB1-87E1-46CBF9CCC44C.dita
Symbian3/SDK/Source/GUID-609A4E83-F074-5A5D-A0DF-A95A7CDC8D2C.dita
Symbian3/SDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059-master.png
Symbian3/SDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e369668_href.png
Symbian3/SDK/Source/GUID-60B979FB-43BD-480E-8E17-1D3DA2002CB1.dita
Symbian3/SDK/Source/GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita
Symbian3/SDK/Source/GUID-60BBE390-0CA5-4064-86E5-39A31CE2AB82_d0e46869_href.png
Symbian3/SDK/Source/GUID-60BF8840-CB87-5A39-A46E-76F8D4EDB50C.dita
Symbian3/SDK/Source/GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE.dita
Symbian3/SDK/Source/GUID-60E8185C-04EC-5541-8392-5457808B9774.dita
Symbian3/SDK/Source/GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita
Symbian3/SDK/Source/GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC.dita
Symbian3/SDK/Source/GUID-6113CC3B-F994-4AA8-81E9-50433A3266E2.dita
Symbian3/SDK/Source/GUID-61376760-C576-51E0-85F2-34718F8DC321.dita
Symbian3/SDK/Source/GUID-61459132-3AC2-55D3-AC28-D6FA689409E6.dita
Symbian3/SDK/Source/GUID-6163197B-7983-5FB7-9B92-02E490A900FB.dita
Symbian3/SDK/Source/GUID-6167C2F2-BC5B-5B10-BD5D-7702BE4112F6.dita
Symbian3/SDK/Source/GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita
Symbian3/SDK/Source/GUID-6180B291-1862-5F1F-AF05-85E42B37B172.dita
Symbian3/SDK/Source/GUID-619A607D-CA89-5A98-887D-5B1D2A5F921C.dita
Symbian3/SDK/Source/GUID-61B965D9-B85E-5F40-8D56-1C0FA77D2492.dita
Symbian3/SDK/Source/GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e42756_href.png
Symbian3/SDK/Source/GUID-61DEE78D-4E78-5367-BC8A-F99D3B4E9D5A.dita
Symbian3/SDK/Source/GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita
Symbian3/SDK/Source/GUID-61E219A3-7D9D-5AAA-B6B3-61F0749E12B3.dita
Symbian3/SDK/Source/GUID-62166BC9-D0BC-5070-BC57-2A1F4948BAFE.dita
Symbian3/SDK/Source/GUID-62195532-3FD0-5A3B-90E6-D624C4A60594.dita
Symbian3/SDK/Source/GUID-623CA1EE-4D25-495A-BD2F-BA7BF95D6D9C.dita
Symbian3/SDK/Source/GUID-625FFD05-5660-4A8B-A543-BABB5E7A5503.dita
Symbian3/SDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE-master.png
Symbian3/SDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e92200_href.png
Symbian3/SDK/Source/GUID-6285AC85-C16B-4EAF-87EB-2080B24D943F_d0e45965_href.png
Symbian3/SDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59-master.png
Symbian3/SDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e252086_href.png
Symbian3/SDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7-master.png
Symbian3/SDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e313053_href.png
Symbian3/SDK/Source/GUID-629AB2C9-BEDD-5166-8B09-F8DFF7527C03.dita
Symbian3/SDK/Source/GUID-62D5E0F0-0041-436C-AEF3-3F1C32ABFC1A_d0e47456_href.png
Symbian3/SDK/Source/GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita
Symbian3/SDK/Source/GUID-62E8D3DF-7DF8-5FCA-8D7D-AA30EB0B8962.dita
Symbian3/SDK/Source/GUID-634F4945-D92C-58D6-BF68-B8A770B2EF17.dita
Symbian3/SDK/Source/GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143.dita
Symbian3/SDK/Source/GUID-63730EBD-E5C1-5BA9-AB71-8FF668ECEF00.dita
Symbian3/SDK/Source/GUID-63816E09-46C7-503A-ADA0-E350C7ACF3C4.dita
Symbian3/SDK/Source/GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e7305_href.png
Symbian3/SDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7-master.png
Symbian3/SDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e11541_href.png
Symbian3/SDK/Source/GUID-63C60154-2A50-5A39-A188-515A607F498B.dita
Symbian3/SDK/Source/GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita
Symbian3/SDK/Source/GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1.dita
Symbian3/SDK/Source/GUID-6408C26A-2736-59A9-B785-6B119143619B.dita
Symbian3/SDK/Source/GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita
Symbian3/SDK/Source/GUID-6425B722-4095-56E3-9198-70BA3E06C617.dita
Symbian3/SDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6-master.png
Symbian3/SDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e162398_href.png
Symbian3/SDK/Source/GUID-643BECA3-FC08-58D0-8E1B-D3ECAEB25CB5.dita
Symbian3/SDK/Source/GUID-6457E7C4-1203-47B6-8AD3-A6998798943B.dita
Symbian3/SDK/Source/GUID-6468F3CB-7828-5746-A868-AD525EB7D6BD.dita
Symbian3/SDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5-master.png
Symbian3/SDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e96763_href.png
Symbian3/SDK/Source/GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita
Symbian3/SDK/Source/GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita
Symbian3/SDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7-master.png
Symbian3/SDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e237989_href.png
Symbian3/SDK/Source/GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341.dita
Symbian3/SDK/Source/GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69.dita
Symbian3/SDK/Source/GUID-6501FAFF-6E21-5BC8-BA85-B1B4CE1AC6A7.dita
Symbian3/SDK/Source/GUID-651C2913-2AB9-5873-B296-5C4233967F21.dita
Symbian3/SDK/Source/GUID-651DA4DA-F8DF-5412-970C-86F45C877FDC.dita
Symbian3/SDK/Source/GUID-65282D5B-E911-5C7E-8571-0FCDCD1C1713.dita
Symbian3/SDK/Source/GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita
Symbian3/SDK/Source/GUID-653A92FB-F752-5210-8C98-9F107D74DC67.dita
Symbian3/SDK/Source/GUID-6565B222-4036-5C3D-8319-4CDDA3F2098D.dita
Symbian3/SDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0-master.jpg
Symbian3/SDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e262349_href.jpg
Symbian3/SDK/Source/GUID-657CAC8A-5524-4D76-9CAB-056191D3A318_d0e42011_href.png
Symbian3/SDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF-master.png
Symbian3/SDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e289206_href.png
Symbian3/SDK/Source/GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita
Symbian3/SDK/Source/GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579.dita
Symbian3/SDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7-master.png
Symbian3/SDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e64237_href.png
Symbian3/SDK/Source/GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita
Symbian3/SDK/Source/GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita
Symbian3/SDK/Source/GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393.dita
Symbian3/SDK/Source/GUID-66022FF4-3044-51E6-88CE-FE3B1283C0CB.dita
Symbian3/SDK/Source/GUID-66231EA2-BDEF-582D-A4B9-F356B590038D.dita
Symbian3/SDK/Source/GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita
Symbian3/SDK/Source/GUID-66470976-7B8B-582B-B32B-4010C95052FF.dita
Symbian3/SDK/Source/GUID-667E7F90-D6C2-55CE-AE60-6C938072FB9C.dita
Symbian3/SDK/Source/GUID-6690CEFF-AE08-4881-AF52-70C097EB2871.dita
Symbian3/SDK/Source/GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita
Symbian3/SDK/Source/GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE.dita
Symbian3/SDK/Source/GUID-66C1493D-5B85-558A-9A39-454E6EBA307B.dita
Symbian3/SDK/Source/GUID-66C1F45B-FA94-5724-AD8F-371EAE92B7E9.dita
Symbian3/SDK/Source/GUID-66CF3E59-DA9C-4287-8A49-5655E83E2F84.dita
Symbian3/SDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF-master.png
Symbian3/SDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e330986_href.png
Symbian3/SDK/Source/GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita
Symbian3/SDK/Source/GUID-675D02F1-E7B1-4869-9213-8D0C2E0CC50D.dita
Symbian3/SDK/Source/GUID-67718111-07FB-59CC-A9C2-86593F868C2C.dita
Symbian3/SDK/Source/GUID-679390E8-1DE6-55F0-9A0C-60D58956A1E3.dita
Symbian3/SDK/Source/GUID-6796BA71-47A7-5465-89F2-BD0AEF2E4EE7.dita
Symbian3/SDK/Source/GUID-67ADD402-0741-5FFC-BF53-B6172C438E88.dita
Symbian3/SDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-3-1.dita
Symbian3/SDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1.dita
Symbian3/SDK/Source/GUID-6822E7FA-D055-5693-8872-8D0E8554A734.dita
Symbian3/SDK/Source/GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita
Symbian3/SDK/Source/GUID-6849E256-6719-5788-BCB2-7557F09AAAD0.dita
Symbian3/SDK/Source/GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita
Symbian3/SDK/Source/GUID-685CF352-372F-5393-97AF-1FA17DC57BA8.dita
Symbian3/SDK/Source/GUID-687AFC9D-ADB7-5190-A535-C54B835825DD.dita
Symbian3/SDK/Source/GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita
Symbian3/SDK/Source/GUID-68A55CD5-EF01-5DE2-8119-EFA39589960F.dita
Symbian3/SDK/Source/GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita
Symbian3/SDK/Source/GUID-68BA05D8-BC78-583A-9958-553424EE3C9B.dita
Symbian3/SDK/Source/GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8.dita
Symbian3/SDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357-master.png
Symbian3/SDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e165199_href.png
Symbian3/SDK/Source/GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita
Symbian3/SDK/Source/GUID-69438F28-E2E9-5BFA-B644-08FB59D50A39.dita
Symbian3/SDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F-master.png
Symbian3/SDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e165915_href.png
Symbian3/SDK/Source/GUID-695B292F-114C-528F-9F71-1D03801D2203.dita
Symbian3/SDK/Source/GUID-695FCEB8-EA04-5C1C-A197-648275BA0281.dita
Symbian3/SDK/Source/GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita
Symbian3/SDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390-master.png
Symbian3/SDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e66774_href.png
Symbian3/SDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076-master.png
Symbian3/SDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e62802_href.png
Symbian3/SDK/Source/GUID-699E6012-92E0-56A2-943A-B6282E6A86B5.dita
Symbian3/SDK/Source/GUID-69B005F8-9038-546F-8ADF-8499984A18E1.dita
Symbian3/SDK/Source/GUID-69B46D92-8D07-5B42-B603-3F725977AA4A.dita
Symbian3/SDK/Source/GUID-69B5906E-63F5-59C6-A82C-DA4386B20F9F.dita
Symbian3/SDK/Source/GUID-69CFCFF4-68C7-5345-ADF6-449E9E98297D.dita
Symbian3/SDK/Source/GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482.dita
Symbian3/SDK/Source/GUID-6A0D353D-A9B0-46EA-8FDC-1FBBD4A20CFB.dita
Symbian3/SDK/Source/GUID-6A2160F0-6062-4E77-ABA3-B829AF9689FA.dita
Symbian3/SDK/Source/GUID-6A28C9DE-6EAC-4F39-921A-083198C89004_d0e46216_href.png
Symbian3/SDK/Source/GUID-6A28C9DE-6EAC-4F39-921A-083198C89004_d0e52277_href.png
Symbian3/SDK/Source/GUID-6A37628A-C732-5765-9DC5-3AC691C2CD50.dita
Symbian3/SDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897-master.png
Symbian3/SDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e331643_href.png
Symbian3/SDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE-master.png
Symbian3/SDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e178718_href.png
Symbian3/SDK/Source/GUID-6A5FAD55-DE84-569D-B5EB-1474DD2AF392.dita
Symbian3/SDK/Source/GUID-6A6D5DC5-3B5C-5A26-8D7F-C280AA4D5F18.dita
Symbian3/SDK/Source/GUID-6A770434-EF8A-5ECC-BB74-2E7FC4A9E360.dita
Symbian3/SDK/Source/GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita
Symbian3/SDK/Source/GUID-6A78F618-09A9-56A7-8C58-98C353BF0788.dita
Symbian3/SDK/Source/GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita
Symbian3/SDK/Source/GUID-6A8A4910-681B-5E5A-AEA9-FD8BDBD84EDD.dita
Symbian3/SDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B-master.png
Symbian3/SDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e265989_href.png
Symbian3/SDK/Source/GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita
Symbian3/SDK/Source/GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita
Symbian3/SDK/Source/GUID-6AE2F937-69BB-5330-A2B5-44D37FA1DE16.dita
Symbian3/SDK/Source/GUID-6AE6AEA2-7330-433B-9994-3BC2EC5ECD38_d0e60516_href.png
Symbian3/SDK/Source/GUID-6AE6AEA2-7330-433B-9994-3BC2EC5ECD38_d0e60608_href.png
Symbian3/SDK/Source/GUID-6B50C0B9-C3CB-4524-909D-7FD096A3F894.dita
Symbian3/SDK/Source/GUID-6B6532D0-6346-51E4-BC7A-6E8487EF8BA1.dita
Symbian3/SDK/Source/GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita
Symbian3/SDK/Source/GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115.dita
Symbian3/SDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD-master.png
Symbian3/SDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e313129_href.png
Symbian3/SDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C-master.png
Symbian3/SDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e219996_href.png
Symbian3/SDK/Source/GUID-6BD23C4F-CBF7-584D-81D9-EB8D14DC3081.dita
Symbian3/SDK/Source/GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3.dita
Symbian3/SDK/Source/GUID-6BDF4599-B89B-5C4B-9795-B4C5C5F5CB5B.dita
Symbian3/SDK/Source/GUID-6BE03135-6192-5520-AE8F-80BDB3187259.dita
Symbian3/SDK/Source/GUID-6BF09365-09D7-5596-B802-1BE1757F51F6.dita
Symbian3/SDK/Source/GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita
Symbian3/SDK/Source/GUID-6C07F513-66D5-5901-94A6-9ADA16987225.dita
Symbian3/SDK/Source/GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita
Symbian3/SDK/Source/GUID-6C1D941B-ADD1-5BD3-9045-53B66253316B.dita
Symbian3/SDK/Source/GUID-6C1E4B3D-0FBF-5CEA-9A30-B4C5CB4CAC3E.dita
Symbian3/SDK/Source/GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita
Symbian3/SDK/Source/GUID-6C7B7778-9B2E-5D8C-B2D8-74AC1DEEDF61.dita
Symbian3/SDK/Source/GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita
Symbian3/SDK/Source/GUID-6C8F9EF9-F323-5423-B73E-4E26BCD2737E.dita
Symbian3/SDK/Source/GUID-6CB40FC5-5CBF-592C-B27D-29922C3815DC.dita
Symbian3/SDK/Source/GUID-6CC45734-E497-40A7-AB23-37A24EBAF339.dita
Symbian3/SDK/Source/GUID-6CD0F7B8-3DB2-5332-A206-BD7A1C840614.dita
Symbian3/SDK/Source/GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita
Symbian3/SDK/Source/GUID-6CE12919-FF81-5254-BA12-385F589FEA44.dita
Symbian3/SDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9-master.png
Symbian3/SDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e65069_href.png
Symbian3/SDK/Source/GUID-6CEAFE12-EB30-5231-94F4-2D097E79BFE0.dita
Symbian3/SDK/Source/GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B.dita
Symbian3/SDK/Source/GUID-6D1A830E-F0F1-5C0F-8EEB-70922C0EF6B8.dita
Symbian3/SDK/Source/GUID-6D28A0C6-7D1A-5C71-B61C-EE3F9E29DC5D.dita
Symbian3/SDK/Source/GUID-6D59E35B-6572-519A-8CFD-CB7781DDE631.dita
Symbian3/SDK/Source/GUID-6D6C54E2-66DA-5626-A75D-5597469D5BE0.dita
Symbian3/SDK/Source/GUID-6D6DFC3A-8940-531A-A319-922317D19B51.dita
Symbian3/SDK/Source/GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5.dita
Symbian3/SDK/Source/GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita
Symbian3/SDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8-master.png
Symbian3/SDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e336246_href.png
Symbian3/SDK/Source/GUID-6DA81F01-FBD7-4167-B722-832888DEC0AD.dita
Symbian3/SDK/Source/GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita
Symbian3/SDK/Source/GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita
Symbian3/SDK/Source/GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita
Symbian3/SDK/Source/GUID-6E144992-AF5B-5CA3-9CC1-CFB5941103A9.dita
Symbian3/SDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC-master.jpg
Symbian3/SDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e247199_href.jpg
Symbian3/SDK/Source/GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita
Symbian3/SDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B-master.jpg
Symbian3/SDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e247075_href.jpg
Symbian3/SDK/Source/GUID-6E385BCC-8AD8-5CCD-9378-86127443B407.dita
Symbian3/SDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048-master.png
Symbian3/SDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e92718_href.png
Symbian3/SDK/Source/GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita
Symbian3/SDK/Source/GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita
Symbian3/SDK/Source/GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita
Symbian3/SDK/Source/GUID-6EE0CB66-A759-5E0C-884D-90895F35F267.dita
Symbian3/SDK/Source/GUID-6EF91E47-F931-5AB3-9050-C545D9225E03.dita
Symbian3/SDK/Source/GUID-6F120C75-4D58-405C-8713-0626EE22E5DF.dita
Symbian3/SDK/Source/GUID-6F2BFFD4-9A2A-5EEC-87A2-3B60CB7F9CD5.dita
Symbian3/SDK/Source/GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita
Symbian3/SDK/Source/GUID-6F6AEFB5-4D0E-5324-A3CD-1E533002DB45.dita
Symbian3/SDK/Source/GUID-6F6B6C23-D5CF-5BE7-A001-EE87BC76A65D.dita
Symbian3/SDK/Source/GUID-6F716E31-490E-5CA1-871A-D8D1661E3078.dita
Symbian3/SDK/Source/GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA.dita
Symbian3/SDK/Source/GUID-6F78B032-00EC-4638-8B65-88CA99075B4F.dita
Symbian3/SDK/Source/GUID-6FA036F6-F4C7-50CA-B08F-7D5F8B7FB6B5.dita
Symbian3/SDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63-master.png
Symbian3/SDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e335381_href.png
Symbian3/SDK/Source/GUID-6FCAB5DC-D3E9-5406-8B9E-E1B1CF18C73F.dita
Symbian3/SDK/Source/GUID-6FCB023F-E9E0-5C3D-A8BA-92B1B4733258.dita
Symbian3/SDK/Source/GUID-6FD4E7A4-D215-4CFB-BC7A-23065DE95C5C.dita
Symbian3/SDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e53377_href.png
Symbian3/SDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e62337_href.png
Symbian3/SDK/Source/GUID-6FE94423-9563-5F31-95EB-504479144B05.dita
Symbian3/SDK/Source/GUID-6FED83FE-1360-5468-B938-0BDFF7D62C43.dita
Symbian3/SDK/Source/GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita
Symbian3/SDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012-master.png
Symbian3/SDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e154425_href.png
Symbian3/SDK/Source/GUID-7022455A-E738-574E-897E-33243482D69A.dita
Symbian3/SDK/Source/GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita
Symbian3/SDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1-master.png
Symbian3/SDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e213982_href.png
Symbian3/SDK/Source/GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita
Symbian3/SDK/Source/GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita
Symbian3/SDK/Source/GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-5-1-7-1-6-1-4-1.dita
Symbian3/SDK/Source/GUID-708FC2C8-19BB-5EFC-A8CD-B0E9E96A5409-master.png
Symbian3/SDK/Source/GUID-708FC2C8-19BB-5EFC-A8CD-B0E9E96A5409_d0e360594_href.png
Symbian3/SDK/Source/GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita
Symbian3/SDK/Source/GUID-70B9796F-8CF3-5DC4-93B4-0B1FED936169.dita
Symbian3/SDK/Source/GUID-70CD9D74-8592-45F2-A91F-AD34ED93CB3D.dita
Symbian3/SDK/Source/GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita
Symbian3/SDK/Source/GUID-710FADA2-7A6C-5D60-BCE5-8772071F2BD4.dita
Symbian3/SDK/Source/GUID-711C387D-E10C-5469-872A-5B2BDACC9B91.dita
Symbian3/SDK/Source/GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita
Symbian3/SDK/Source/GUID-71909C6D-297C-50A9-99BB-FEBC67389954.dita
Symbian3/SDK/Source/GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita
Symbian3/SDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2-master.png
Symbian3/SDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e177233_href.png
Symbian3/SDK/Source/GUID-71F33868-0C59-5CE8-95BD-304066DB8946.dita
Symbian3/SDK/Source/GUID-71F41FAA-E549-55EF-B9F7-5F349EE96D63.dita
Symbian3/SDK/Source/GUID-72151EF7-52C0-5DF4-AC69-07087F31D9E8.dita
Symbian3/SDK/Source/GUID-722180B8-0032-5C3F-AEB2-A9B1261450D8.dita
Symbian3/SDK/Source/GUID-7226154E-2387-5D14-A009-2A1A60617970.dita
Symbian3/SDK/Source/GUID-7226DB6E-93E9-57E6-B7AB-043E1C5E2A7F.dita
Symbian3/SDK/Source/GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita
Symbian3/SDK/Source/GUID-7250950C-5502-5ACE-864B-0EFD5C253053.dita
Symbian3/SDK/Source/GUID-72511204-FC90-54AA-9E2E-833318020318.dita
Symbian3/SDK/Source/GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita
Symbian3/SDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11-master.png
Symbian3/SDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e120785_href.png
Symbian3/SDK/Source/GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita
Symbian3/SDK/Source/GUID-728F278B-30C8-5FA8-AD03-4C759690416E.dita
Symbian3/SDK/Source/GUID-729289F7-D0CD-5B50-AA8D-A86C35034076.dita
Symbian3/SDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365-master.png
Symbian3/SDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e165342_href.png
Symbian3/SDK/Source/GUID-72986B3C-047C-5411-8F15-BC9C65C3289C.dita
Symbian3/SDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52-master.png
Symbian3/SDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e204155_href.png
Symbian3/SDK/Source/GUID-72C2E618-C33D-5770-908D-E1A99E5D1B1D.dita
Symbian3/SDK/Source/GUID-72E1F91B-173B-5F45-B9FF-42FD5F45438C.dita
Symbian3/SDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC-master.png
Symbian3/SDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e177987_href.png
Symbian3/SDK/Source/GUID-730E1E2B-BB8B-4C66-8A70-0FBCE7680B66.dita
Symbian3/SDK/Source/GUID-7324A06C-981B-568D-BDFA-EFE21049431C.dita
Symbian3/SDK/Source/GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita
Symbian3/SDK/Source/GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita
Symbian3/SDK/Source/GUID-7366AE99-DE25-5DE0-BF9A-58E7742DA952.dita
Symbian3/SDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF-master.png
Symbian3/SDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e33692_href.png
Symbian3/SDK/Source/GUID-737ADA8D-5B7E-5408-9929-3EB9A3B4FCB1.dita
Symbian3/SDK/Source/GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita
Symbian3/SDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48-master.png
Symbian3/SDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e340217_href.png
Symbian3/SDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F-master.jpg
Symbian3/SDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e304011_href.jpg
Symbian3/SDK/Source/GUID-73DD8A9B-6F7A-4BF5-87A1-5D86662B30D3.dita
Symbian3/SDK/Source/GUID-74248E6A-0EA7-4F69-85AD-2D49B02D0212_d0e61586_href.png
Symbian3/SDK/Source/GUID-743D2832-E73A-5184-A85D-306B2A6FFACC.dita
Symbian3/SDK/Source/GUID-7440BE0A-6E4A-493D-8105-80DDABD6F3EB.dita
Symbian3/SDK/Source/GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita
Symbian3/SDK/Source/GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51.dita
Symbian3/SDK/Source/GUID-74A4A88D-768E-51B9-B50B-81CF35D5D692.dita
Symbian3/SDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4-master.png
Symbian3/SDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e165934_href.png
Symbian3/SDK/Source/GUID-74C1C345-823C-5CD5-8FC5-214A55734E94.dita
Symbian3/SDK/Source/GUID-74C7B8E1-0A02-5242-A8C9-5CDD410102CC.dita
Symbian3/SDK/Source/GUID-74CBD580-01F8-5C68-A5FD-6331AAE7DF62.dita
Symbian3/SDK/Source/GUID-74D3B534-B209-5884-B38F-DEDFB23B64CF.dita
Symbian3/SDK/Source/GUID-74E3A687-18BD-5255-9CB9-F4B01878A1E1.dita
Symbian3/SDK/Source/GUID-74E69324-7BCC-591F-B2A9-2932A3790966.dita
Symbian3/SDK/Source/GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03.dita
Symbian3/SDK/Source/GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE.dita
Symbian3/SDK/Source/GUID-74FB4D67-ECCC-51DE-9F9F-6D3B43E01179.dita
Symbian3/SDK/Source/GUID-7510C121-A23F-50E0-8130-16AF552BC497.dita
Symbian3/SDK/Source/GUID-75132B6C-2305-57B1-B969-B4F639B29852.dita
Symbian3/SDK/Source/GUID-7514DD31-E82B-49FD-916F-A9DF12D97204.dita
Symbian3/SDK/Source/GUID-751F057B-BF6D-5B28-A47A-3E99B25731CF.dita
Symbian3/SDK/Source/GUID-752E6C04-D4AC-556C-84D5-E3D9D4BB6CB4.dita
Symbian3/SDK/Source/GUID-7536307B-10B7-5866-8A21-9DA352DF1928.dita
Symbian3/SDK/Source/GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita
Symbian3/SDK/Source/GUID-756D831F-F302-594C-8116-144358DD8442.dita
Symbian3/SDK/Source/GUID-7572B1F0-66CD-53B8-A479-4A078C9CB28A.dita
Symbian3/SDK/Source/GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita
Symbian3/SDK/Source/GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1.dita
Symbian3/SDK/Source/GUID-75A70663-4DF2-4055-BF3E-8D9D8D0FEFB3.dita
Symbian3/SDK/Source/GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA.dita
Symbian3/SDK/Source/GUID-75B0B7C7-37B7-57D1-8EAA-8303A915A9DD.dita
Symbian3/SDK/Source/GUID-75C5A614-CEC1-5832-ACEA-E3C31B8A0DE8.dita
Symbian3/SDK/Source/GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99.dita
Symbian3/SDK/Source/GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita
Symbian3/SDK/Source/GUID-7636F898-8390-5C32-964D-66CEA62A60F4.dita
Symbian3/SDK/Source/GUID-763A2636-D448-5353-9E31-F61FE7EB39DA.dita
Symbian3/SDK/Source/GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita
Symbian3/SDK/Source/GUID-7651FA57-4C0E-5EB6-8DB1-AAF23D39CD7C.dita
Symbian3/SDK/Source/GUID-765A6D87-5C2C-4E79-9EA5-9F8930062ED0.dita
Symbian3/SDK/Source/GUID-765F43E2-39E8-53F5-881F-593F379623CA.dita
Symbian3/SDK/Source/GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF.dita
Symbian3/SDK/Source/GUID-766F8505-4536-57A6-A788-EFCD8CCF875F.dita
Symbian3/SDK/Source/GUID-7681734D-1291-59A3-B226-BC58403FA8A0.dita
Symbian3/SDK/Source/GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE.dita
Symbian3/SDK/Source/GUID-768E599C-3EDA-5AC9-8D27-7C6240B0CC63.dita
Symbian3/SDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e46157_href.png
Symbian3/SDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e52196_href.png
Symbian3/SDK/Source/GUID-7690509A-C5EA-5835-9298-11E22F49FC2F.dita
Symbian3/SDK/Source/GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita
Symbian3/SDK/Source/GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-4-1-6-1.dita
Symbian3/SDK/Source/GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1.dita
Symbian3/SDK/Source/GUID-76D1438E-445E-5864-BA9D-27BC61D72C1B.dita
Symbian3/SDK/Source/GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita
Symbian3/SDK/Source/GUID-770EF3C4-15D3-5A0F-B5DF-A95B27A0DB05.dita
Symbian3/SDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431-master.png
Symbian3/SDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e313765_href.png
Symbian3/SDK/Source/GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita
Symbian3/SDK/Source/GUID-772DFFA1-4BBC-516F-909D-47CB773760F5.dita
Symbian3/SDK/Source/GUID-772F9CC3-71B3-53F0-9307-91D35B133810.dita
Symbian3/SDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7-master.png
Symbian3/SDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e189632_href.png
Symbian3/SDK/Source/GUID-77459C3C-F747-4A9A-93F6-D19E518DACBB_d0e58615_href.png
Symbian3/SDK/Source/GUID-7750D4BE-9FBA-5D29-806D-B80911170ECD.dita
Symbian3/SDK/Source/GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1.dita
Symbian3/SDK/Source/GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859.dita
Symbian3/SDK/Source/GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita
Symbian3/SDK/Source/GUID-77AC5975-D36F-585F-BC0B-DC1C2357BBF2.dita
Symbian3/SDK/Source/GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita
Symbian3/SDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1-master.png
Symbian3/SDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e154167_href.png
Symbian3/SDK/Source/GUID-77ECD89F-84BB-55F1-9876-382E043F0C0D.dita
Symbian3/SDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5-master.png
Symbian3/SDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e96066_href.png
Symbian3/SDK/Source/GUID-7800A00C-5BD3-46FA-9D0A-9DF29A5C057E.dita
Symbian3/SDK/Source/GUID-7809407D-EDC0-5907-B932-0D5726A7ECA2.dita
Symbian3/SDK/Source/GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C.dita
Symbian3/SDK/Source/GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB.dita
Symbian3/SDK/Source/GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE.dita
Symbian3/SDK/Source/GUID-7821C498-70A2-5D3C-989A-58CEBAE9162B.dita
Symbian3/SDK/Source/GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8.dita
Symbian3/SDK/Source/GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7.dita
Symbian3/SDK/Source/GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita
Symbian3/SDK/Source/GUID-785B2F0B-E7E6-5DAE-98F1-6C32BED25964.dita
Symbian3/SDK/Source/GUID-786984BD-ADE8-5EF1-A819-F402F5703A80.dita
Symbian3/SDK/Source/GUID-786A8188-AB4D-5C65-8BEF-50E45FDBE9A5.dita
Symbian3/SDK/Source/GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita
Symbian3/SDK/Source/GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita
Symbian3/SDK/Source/GUID-788031A5-75C1-420E-9E2B-71E09FF08ADF.dita
Symbian3/SDK/Source/GUID-78865979-D519-5476-91FE-9EF3386AC8F5.dita
Symbian3/SDK/Source/GUID-788BC010-536D-4089-9B12-4A43A9C1C82B.dita
Symbian3/SDK/Source/GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e50615_href.png
Symbian3/SDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902-master.png
Symbian3/SDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e66332_href.png
Symbian3/SDK/Source/GUID-78AC068A-C858-41E9-94A8-32C8A8581BF8_d0e62098_href.png
Symbian3/SDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8-master.png
Symbian3/SDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e171454_href.png
Symbian3/SDK/Source/GUID-78FB26E2-AA60-5531-B2FE-4FA6C88F2D47.dita
Symbian3/SDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B-master.png
Symbian3/SDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e162657_href.png
Symbian3/SDK/Source/GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita
Symbian3/SDK/Source/GUID-79370E26-4549-5F31-99A3-8D0341F58F08.dita
Symbian3/SDK/Source/GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita
Symbian3/SDK/Source/GUID-7953ECE8-3935-57E1-86C2-D53132930B71.dita
Symbian3/SDK/Source/GUID-795ED4C0-7C82-41DE-AD5B-AC69A426E2A5.dita
Symbian3/SDK/Source/GUID-7965B998-0D1A-50F8-B2F9-D2A71744DF86.dita
Symbian3/SDK/Source/GUID-7971886A-8ED0-5924-9BC0-A163BA499888.dita
Symbian3/SDK/Source/GUID-7984F8F7-DC7B-56E0-A5DA-071A3D87714A.dita
Symbian3/SDK/Source/GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita
Symbian3/SDK/Source/GUID-79B4468A-2CF6-45E2-BC05-064CA300C12C.dita
Symbian3/SDK/Source/GUID-79B699F5-5EDE-5561-A385-19ED02248398.dita
Symbian3/SDK/Source/GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita
Symbian3/SDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48-master.png
Symbian3/SDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e165808_href.png
Symbian3/SDK/Source/GUID-79CE15C5-B595-5336-AE87-DE92990F6D47.dita
Symbian3/SDK/Source/GUID-79CFCC01-7418-5ECA-AF65-1DCAD97AA7A6.dita
Symbian3/SDK/Source/GUID-79E8BE3D-9EF7-5275-A245-3CF689E58DE9.dita
Symbian3/SDK/Source/GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita
Symbian3/SDK/Source/GUID-7A1B0CAC-BA12-512A-98B0-86CD317E4B24.dita
Symbian3/SDK/Source/GUID-7A22FBD7-F306-578C-BD54-BCF74B7343CF.dita
Symbian3/SDK/Source/GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita
Symbian3/SDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2-master.png
Symbian3/SDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e382893_href.png
Symbian3/SDK/Source/GUID-7A71CD0B-84C7-5A77-B573-C61F67C382DA.dita
Symbian3/SDK/Source/GUID-7A7254E3-A03A-5B38-B2B5-FFEEE70F5E93.dita
Symbian3/SDK/Source/GUID-7A9FBE3A-D75E-59FC-9ACD-196670F0F9C8.dita
Symbian3/SDK/Source/GUID-7AAAC6EA-784D-51E6-AD6B-521C9F5C4DBD.dita
Symbian3/SDK/Source/GUID-7AB66E79-1B75-50FE-ADA2-07B92B11D478.dita
Symbian3/SDK/Source/GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7.dita
Symbian3/SDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30-master.png
Symbian3/SDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e13258_href.png
Symbian3/SDK/Source/GUID-7AE34C8A-50C6-49BA-9E43-AE76873B5E12.dita
Symbian3/SDK/Source/GUID-7AE4913D-18CE-5F17-A6B1-6E3F6975A178.dita
Symbian3/SDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1-master.png
Symbian3/SDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e165940_href.png
Symbian3/SDK/Source/GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576.dita
Symbian3/SDK/Source/GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita
Symbian3/SDK/Source/GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita
Symbian3/SDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD-master.jpg
Symbian3/SDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e284591_href.jpg
Symbian3/SDK/Source/GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita
Symbian3/SDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853-master.png
Symbian3/SDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e205732_href.png
Symbian3/SDK/Source/GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E.dita
Symbian3/SDK/Source/GUID-7B863846-7666-4FBF-90B2-52F847710C45.dita
Symbian3/SDK/Source/GUID-7BB38C3E-BEA9-545B-AEC2-5E9078D0B8A2.dita
Symbian3/SDK/Source/GUID-7BB6C3A0-7FCF-5614-9940-B3630E5FC114.dita
Symbian3/SDK/Source/GUID-7BC512C8-55F5-4753-8299-7D3776EB3464_d0e62287_href.png
Symbian3/SDK/Source/GUID-7BCA8B7A-E250-5452-9837-26C60F71F14F.dita
Symbian3/SDK/Source/GUID-7BE7AC77-4EF5-46BD-A491-1DDBBA20AFE6_d0e42099_href.png
Symbian3/SDK/Source/GUID-7BE83158-B818-57E4-9A8C-43E5D2C84687.dita
Symbian3/SDK/Source/GUID-7BFEEDF7-3DB8-42FF-9D7A-F98E536F7686.dita
Symbian3/SDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE-master.png
Symbian3/SDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e218128_href.png
Symbian3/SDK/Source/GUID-7C197DC1-43CA-5146-B81D-36B685A1D0C9.dita
Symbian3/SDK/Source/GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita
Symbian3/SDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED-master.png
Symbian3/SDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e166439_href.png
Symbian3/SDK/Source/GUID-7C645FF2-4785-5716-9674-B3A224F6C0D9.dita
Symbian3/SDK/Source/GUID-7C6D3479-2159-5A9B-9970-0B3E625442A6.dita
Symbian3/SDK/Source/GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita
Symbian3/SDK/Source/GUID-7C7DC797-3600-5EF8-A3E4-B44A7BCEE373.dita
Symbian3/SDK/Source/GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C.dita
Symbian3/SDK/Source/GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722.dita
Symbian3/SDK/Source/GUID-7CE86E8C-0187-5679-B87D-71ABDE479048.dita
Symbian3/SDK/Source/GUID-7CF7D29B-14A4-432E-BBB2-E3AF283E45E3.dita
Symbian3/SDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281-master.png
Symbian3/SDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e242212_href.png
Symbian3/SDK/Source/GUID-7D1E2DBD-004B-5047-BDA5-21CD55D0A95C.dita
Symbian3/SDK/Source/GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita
Symbian3/SDK/Source/GUID-7DB86BF1-0485-5CBA-9554-4C474B0EC1FB.dita
Symbian3/SDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6-master.png
Symbian3/SDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e262733_href.png
Symbian3/SDK/Source/GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041.dita
Symbian3/SDK/Source/GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita
Symbian3/SDK/Source/GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1.dita
Symbian3/SDK/Source/GUID-7E2891DB-372F-517C-95A4-D706EF1DB8B3.dita
Symbian3/SDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D-master.png
Symbian3/SDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e36515_href.png
Symbian3/SDK/Source/GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e46298_href.png
Symbian3/SDK/Source/GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e52381_href.png
Symbian3/SDK/Source/GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e55518_href.png
Symbian3/SDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598-master.png
Symbian3/SDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e3380_href.png
Symbian3/SDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D-master.png
Symbian3/SDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e2078_href.png
Symbian3/SDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED-master.png
Symbian3/SDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e51370_href.png
Symbian3/SDK/Source/GUID-7E967B81-2DBF-5A89-B74B-93FEA5515685.dita
Symbian3/SDK/Source/GUID-7EA8047F-BD30-5100-9284-9A684500BFE6.dita
Symbian3/SDK/Source/GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736.dita
Symbian3/SDK/Source/GUID-7EFA2113-3C4A-5C52-AC28-BBD512466302.dita
Symbian3/SDK/Source/GUID-7EFBEEAD-3E74-5165-B305-313F7DE4BEB4.dita
Symbian3/SDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49-master.jpg
Symbian3/SDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e171843_href.jpg
Symbian3/SDK/Source/GUID-7F2C1C45-43FA-5F19-81E3-4DBC0328E4A7.dita
Symbian3/SDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6-master.png
Symbian3/SDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e162512_href.png
Symbian3/SDK/Source/GUID-7F4692A0-1801-5D91-8F28-06075AC45DE2.dita
Symbian3/SDK/Source/GUID-7F476137-5E7F-5288-9F4A-6C20F0A1AD9B.dita
Symbian3/SDK/Source/GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita
Symbian3/SDK/Source/GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3.dita
Symbian3/SDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539-master.png
Symbian3/SDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e155184_href.png
Symbian3/SDK/Source/GUID-7F8F830A-990C-5DDF-9D8F-28C89BFA755A.dita
Symbian3/SDK/Source/GUID-7F9F0EB3-8F0E-55BB-9864-C80FE6FC1528.dita
Symbian3/SDK/Source/GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81.dita
Symbian3/SDK/Source/GUID-7FA9E730-DBE6-52DD-87FE-B2D01EFAAE12.dita
Symbian3/SDK/Source/GUID-7FAE6FE0-D5CB-55D4-94B0-ADD545577CA7.dita
Symbian3/SDK/Source/GUID-7FB1B44E-B3FF-4765-88E3-A7FDB4FA8413.dita
Symbian3/SDK/Source/GUID-7FCDAC24-BFEF-590B-B569-04AA262EBF06.dita
Symbian3/SDK/Source/GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita
Symbian3/SDK/Source/GUID-7FD05006-09C1-4EF4-A2EB-AD98C2FA8866.dita
Symbian3/SDK/Source/GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita
Symbian3/SDK/Source/GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita
Symbian3/SDK/Source/GUID-7FF63B82-B719-5E42-B007-94E2FB9548CB.dita
Symbian3/SDK/Source/GUID-803ABB5A-2E34-5F71-A5A9-0D475041185B.dita
Symbian3/SDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541-master.png
Symbian3/SDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e375697_href.png
Symbian3/SDK/Source/GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita
Symbian3/SDK/Source/GUID-806298E8-3196-5A1B-A392-7D5A903C3F57.dita
Symbian3/SDK/Source/GUID-807B5CEE-CC1E-5A40-911F-3C5D5FA3633A.dita
Symbian3/SDK/Source/GUID-809D428D-5BF6-57FF-952D-2FDF88E50833.dita
Symbian3/SDK/Source/GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita
Symbian3/SDK/Source/GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita
Symbian3/SDK/Source/GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017.dita
Symbian3/SDK/Source/GUID-80F2DEC8-152F-4681-A9D0-8EB776131313.dita
Symbian3/SDK/Source/GUID-80F83F9C-2B58-5238-AE38-1193BAE72CB0.dita
Symbian3/SDK/Source/GUID-810043A5-62FF-55D3-A908-973FFB72DA4A.dita
Symbian3/SDK/Source/GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47.dita
Symbian3/SDK/Source/GUID-81253CA0-2B57-5A3E-9ACD-469D4B922047.dita
Symbian3/SDK/Source/GUID-81424A53-F598-4E25-BA0A-E2FFA8BCDF2B.dita
Symbian3/SDK/Source/GUID-817C43E8-9169-4750-818B-B431D138D71A.dita
Symbian3/SDK/Source/GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita
Symbian3/SDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A-master.png
Symbian3/SDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e191988_href.png
Symbian3/SDK/Source/GUID-81BE3473-E3E4-55F1-897F-635A197AF1DF.dita
Symbian3/SDK/Source/GUID-81C1F6BE-B2CE-5A2B-A6D4-DC1ABBBED0DE.dita
Symbian3/SDK/Source/GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita
Symbian3/SDK/Source/GUID-82074583-C3A3-5168-8225-C60D52F403F0.dita
Symbian3/SDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4-master.png
Symbian3/SDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e292804_href.png
Symbian3/SDK/Source/GUID-82438A0F-819C-5CDC-81DC-A8BFE3AA4A6A.dita
Symbian3/SDK/Source/GUID-82499F0B-2791-59B6-9BAE-F9F87234FBF1.dita
Symbian3/SDK/Source/GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita
Symbian3/SDK/Source/GUID-82762D6D-7EF5-5061-9393-BBDCCC7212CD.dita
Symbian3/SDK/Source/GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0.dita
Symbian3/SDK/Source/GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita
Symbian3/SDK/Source/GUID-829D80B6-7F14-5006-94C5-2609565D7BCB.dita
Symbian3/SDK/Source/GUID-82ABFD08-D354-5955-8F95-9F22859FCE2A.dita
Symbian3/SDK/Source/GUID-82AF5F49-EE25-54C7-AEE9-D1F41BD5190F.dita
Symbian3/SDK/Source/GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9.dita
Symbian3/SDK/Source/GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita
Symbian3/SDK/Source/GUID-82C53275-6F7C-5B3D-9A07-FA4801D42403.dita
Symbian3/SDK/Source/GUID-82ECE53F-FF7B-4DFB-874D-24487E6BB5BD_d0e46371_href.png
Symbian3/SDK/Source/GUID-82ECE53F-FF7B-4DFB-874D-24487E6BB5BD_d0e52475_href.png
Symbian3/SDK/Source/GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita
Symbian3/SDK/Source/GUID-831F9AA3-0209-53DC-96C4-04157F22870C.dita
Symbian3/SDK/Source/GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita
Symbian3/SDK/Source/GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita
Symbian3/SDK/Source/GUID-83676985-070A-5CE9-BF36-D7C56C5025F9.dita
Symbian3/SDK/Source/GUID-837333EB-8BD1-551A-BFB4-05BE2056E2DA.dita
Symbian3/SDK/Source/GUID-837EF355-9154-506B-AE4F-4290FC9DBDC9.dita
Symbian3/SDK/Source/GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita
Symbian3/SDK/Source/GUID-83A4D862-368E-5DCC-998E-90144BE18A22.dita
Symbian3/SDK/Source/GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08.dita
Symbian3/SDK/Source/GUID-83E4F989-0B73-5E83-8547-AB3070492CBF.dita
Symbian3/SDK/Source/GUID-8411E1C9-C6CC-5B0A-BEBA-74D0B8AABF35.dita
Symbian3/SDK/Source/GUID-842D8124-554F-5D89-9E20-8B48EA539D2F.dita
Symbian3/SDK/Source/GUID-842D8557-076B-4A6E-B823-81164368FD86.dita
Symbian3/SDK/Source/GUID-843B3C4E-153D-5673-95EA-88322D689297.dita
Symbian3/SDK/Source/GUID-844C335C-E8FD-5DF8-8E05-7DB1DF4C3360.dita
Symbian3/SDK/Source/GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita
Symbian3/SDK/Source/GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita
Symbian3/SDK/Source/GUID-84921F68-9449-564A-8527-203FA84AF2AF.dita
Symbian3/SDK/Source/GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4.dita
Symbian3/SDK/Source/GUID-84AD87E9-B21A-52FC-B1E1-7287BA8A30D4.dita
Symbian3/SDK/Source/GUID-84B088C0-7013-4B6A-BA34-8F022E38E822_d0e61914_href.png
Symbian3/SDK/Source/GUID-84C20E6E-C5DF-5346-84A3-2D8C701303C8.dita
Symbian3/SDK/Source/GUID-84C75561-E082-4EFF-89A7-901361612CCA_d0e58408_href.png
Symbian3/SDK/Source/GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e7445_href.png
Symbian3/SDK/Source/GUID-85372267-C352-4389-8FC9-32B8E1622BC9.dita
Symbian3/SDK/Source/GUID-8579426F-C443-558B-9380-FED79D4BA8F4.dita
Symbian3/SDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F-master.jpg
Symbian3/SDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e225353_href.jpg
Symbian3/SDK/Source/GUID-85873CBE-6077-4917-B2B0-5D00C6647CC8_d0e46080_href.png
Symbian3/SDK/Source/GUID-85873CBE-6077-4917-B2B0-5D00C6647CC8_d0e52095_href.png
Symbian3/SDK/Source/GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita
Symbian3/SDK/Source/GUID-85AA0FD4-3BD1-50A7-B241-AE3908ACCF30.dita
Symbian3/SDK/Source/GUID-85CA1089-3F58-5E82-86A4-4674C893B25F.dita
Symbian3/SDK/Source/GUID-85CE1EC7-E791-57B6-99BA-720699ABC880.dita
Symbian3/SDK/Source/GUID-85D9878E-4FEF-5E45-9F87-53634CD171E0.dita
Symbian3/SDK/Source/GUID-85E1E45B-DD05-5B7D-84E7-9911E0A3E3CC.dita
Symbian3/SDK/Source/GUID-85EAD2EA-6ADB-5866-9784-5E2B30E661AF.dita
Symbian3/SDK/Source/GUID-86086CA3-9A2E-4024-BE80-1763614A5079.dita
Symbian3/SDK/Source/GUID-862D3B3B-3369-5FF4-B81A-ED5BE415B035.dita
Symbian3/SDK/Source/GUID-863AD171-B40B-5056-96B1-A7B995DB3524.dita
Symbian3/SDK/Source/GUID-8661A7E0-F19A-41F8-9062-FBFAE70CF658.dita
Symbian3/SDK/Source/GUID-8675AC01-E2D8-425C-899F-12BE99345AA9.dita
Symbian3/SDK/Source/GUID-868C1A38-3CD0-4082-8106-DC3EE1F815D8.dita
Symbian3/SDK/Source/GUID-868D5B32-1CC4-506E-9C49-C86428B9A50F.dita
Symbian3/SDK/Source/GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita
Symbian3/SDK/Source/GUID-86E704A2-FB15-5D78-BFD2-0E7117360342.dita
Symbian3/SDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C-master.png
Symbian3/SDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e402615_href.png
Symbian3/SDK/Source/GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita
Symbian3/SDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B-master.png
Symbian3/SDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e361961_href.png
Symbian3/SDK/Source/GUID-876EE000-01B7-4457-AE9C-CE56E48CFF11_d0e53301_href.png
Symbian3/SDK/Source/GUID-879B4D94-2614-4515-9947-B1329F62E90A_d0e52830_href.png
Symbian3/SDK/Source/GUID-87AA5195-AFC4-42C9-B9BC-B31008CA3882_d0e54417_href.png
Symbian3/SDK/Source/GUID-87BEA6F9-B236-50CF-9DB3-36234A6EB797.dita
Symbian3/SDK/Source/GUID-87C81097-A892-5E45-A3CC-BE2C65A2FA70.dita
Symbian3/SDK/Source/GUID-87CD8C58-F6B9-5D6B-9D7B-862979DE3B6F.dita
Symbian3/SDK/Source/GUID-87DB3E71-AAE1-57B6-BC79-CBAF8382614A.dita
Symbian3/SDK/Source/GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita
Symbian3/SDK/Source/GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita
Symbian3/SDK/Source/GUID-8845AFD6-F238-43FF-BD7B-902CD8CD3973.dita
Symbian3/SDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D-master.png
Symbian3/SDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e380028_href.png
Symbian3/SDK/Source/GUID-88917386-AD48-4C76-A1C7-46F0B1E85A18.dita
Symbian3/SDK/Source/GUID-88E610C1-6662-5A12-B950-B695A7EB776C.dita
Symbian3/SDK/Source/GUID-88FDEE3B-83DF-5635-92FC-CF291D1D6C2D.dita
Symbian3/SDK/Source/GUID-8905A627-1D13-5066-ABC4-7E0AF07D96A5.dita
Symbian3/SDK/Source/GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita
Symbian3/SDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F-master.png
Symbian3/SDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e167058_href.png
Symbian3/SDK/Source/GUID-8933D7D5-F84D-5BF2-BF2A-832DA183E26B.dita
Symbian3/SDK/Source/GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita
Symbian3/SDK/Source/GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita
Symbian3/SDK/Source/GUID-896A155F-2EAD-54BD-8D25-A484122576BB-master.png
Symbian3/SDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC-master.png
Symbian3/SDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e196056_href.png
Symbian3/SDK/Source/GUID-898FF7CE-969C-5FE1-9346-34BCBE637A57.dita
Symbian3/SDK/Source/GUID-89AD2E29-DF29-5B2B-9894-B7ECD62854F4.dita
Symbian3/SDK/Source/GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita
Symbian3/SDK/Source/GUID-89B12BB4-877E-4157-9BD1-81AD02EE3543.dita
Symbian3/SDK/Source/GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita
Symbian3/SDK/Source/GUID-89C83394-5F37-4AE5-AC5F-6006D2DD47DA.dita
Symbian3/SDK/Source/GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F.dita
Symbian3/SDK/Source/GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita
Symbian3/SDK/Source/GUID-89EC9CD3-A41E-4CD6-90FE-0BECF44920B8_d0e54434_href.png
Symbian3/SDK/Source/GUID-89EDF464-8DC5-5A2A-9135-3FE82EF40FF4.dita
Symbian3/SDK/Source/GUID-89F383B6-3730-51DF-8C41-CF2564B4D003.dita
Symbian3/SDK/Source/GUID-8A2029C7-1258-5B12-B217-DE3EE4340B72.dita
Symbian3/SDK/Source/GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita
Symbian3/SDK/Source/GUID-8A58670C-D805-5E97-9B88-70C40CD011D4.dita
Symbian3/SDK/Source/GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita
Symbian3/SDK/Source/GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita
Symbian3/SDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B-master.png
Symbian3/SDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e336934_href.png
Symbian3/SDK/Source/GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita
Symbian3/SDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE-master.png
Symbian3/SDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e334987_href.png
Symbian3/SDK/Source/GUID-8B28B8BB-6935-5332-B4D3-4183FDA3D202.dita
Symbian3/SDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA-master.png
Symbian3/SDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e11590_href.png
Symbian3/SDK/Source/GUID-8B37D53D-77E1-58C6-9A44-3376A450228B.dita
Symbian3/SDK/Source/GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27.dita
Symbian3/SDK/Source/GUID-8B57B733-C418-5623-AFAD-34935FED1743.dita
Symbian3/SDK/Source/GUID-8B7ABDB0-B016-5106-824E-D823F1D2959F.dita
Symbian3/SDK/Source/GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita
Symbian3/SDK/Source/GUID-8B938FEF-4D70-4589-921C-C99667193E20.dita
Symbian3/SDK/Source/GUID-8BD6B29C-D905-5D2B-992A-A04AAD9ABBE3.dita
Symbian3/SDK/Source/GUID-8BE1690A-F331-5AD0-BC22-3122CA4C4E01.dita
Symbian3/SDK/Source/GUID-8C0900A8-1783-4C34-9ABD-27DC92D0AD4A-master.png
Symbian3/SDK/Source/GUID-8C0900A8-1783-4C34-9ABD-27DC92D0AD4A_d0e46496_href.png
Symbian3/SDK/Source/GUID-8C1DF426-C85B-5124-970D-96119491926F.dita
Symbian3/SDK/Source/GUID-8C4EB8E0-78F0-553D-91AE-EC070A47B0EE.dita
Symbian3/SDK/Source/GUID-8C5A65E6-D753-472F-B885-FD0409589036.dita
Symbian3/SDK/Source/GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita
Symbian3/SDK/Source/GUID-8C8B97BF-E769-5C7B-A6E0-B8CA7F12071C.dita
Symbian3/SDK/Source/GUID-8C94EE15-82EA-4A95-9044-C3404F95BD51.dita
Symbian3/SDK/Source/GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita
Symbian3/SDK/Source/GUID-8CEB9CF3-2F33-58E3-B948-565B61A37BC3.dita
Symbian3/SDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61-master.jpg
Symbian3/SDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e228489_href.jpg
Symbian3/SDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733-master.png
Symbian3/SDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e167315_href.png
Symbian3/SDK/Source/GUID-8D130FC5-3AB8-5C70-A9D2-C753957E729F.dita
Symbian3/SDK/Source/GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC.dita
Symbian3/SDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2-master.jpg
Symbian3/SDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e370366_href.jpg
Symbian3/SDK/Source/GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita
Symbian3/SDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F-master.png
Symbian3/SDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e195812_href.png
Symbian3/SDK/Source/GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495.dita
Symbian3/SDK/Source/GUID-8D7E5566-E297-5418-AC65-2FCA50FD1908.dita
Symbian3/SDK/Source/GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita
Symbian3/SDK/Source/GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-5-1-7-1-6-1-5-1.dita
Symbian3/SDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590-master.jpg
Symbian3/SDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e316963_href.jpg
Symbian3/SDK/Source/GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita
Symbian3/SDK/Source/GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita
Symbian3/SDK/Source/GUID-8DF1C625-7963-55E9-BEEC-C9E37936F8CF.dita
Symbian3/SDK/Source/GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita
Symbian3/SDK/Source/GUID-8E158109-AE22-5216-90E8-63A4BD4CC90B.dita
Symbian3/SDK/Source/GUID-8E160B29-18C4-574B-9259-9A8E958CDA91.dita
Symbian3/SDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F-master.jpg
Symbian3/SDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e284739_href.jpg
Symbian3/SDK/Source/GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita
Symbian3/SDK/Source/GUID-8E2FA5CC-C582-4321-88BB-C5CE3AA047FE.dita
Symbian3/SDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7-master.jpg
Symbian3/SDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e247185_href.jpg
Symbian3/SDK/Source/GUID-8E363123-A85E-521C-BC10-96C59130E45C.dita
Symbian3/SDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E-master.png
Symbian3/SDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e367004_href.png
Symbian3/SDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254-master.png
Symbian3/SDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e95877_href.png
Symbian3/SDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755-master.jpg
Symbian3/SDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e108810_href.jpg
Symbian3/SDK/Source/GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita
Symbian3/SDK/Source/GUID-8E7CCFD7-F820-596E-BACB-AE43878C6CD8.dita
Symbian3/SDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4-master.png
Symbian3/SDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e318126_href.png
Symbian3/SDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF-master.png
Symbian3/SDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e205603_href.png
Symbian3/SDK/Source/GUID-8EAB97D5-267A-58CC-BC3E-5CB1D72CB7ED.dita
Symbian3/SDK/Source/GUID-8EAF5A96-EB48-4A58-82D7-0583A22A51D0.dita
Symbian3/SDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC-master.png
Symbian3/SDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e288487_href.png
Symbian3/SDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2-master.png
Symbian3/SDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e133724_href.png
Symbian3/SDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B-master.jpg
Symbian3/SDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e318241_href.jpg
Symbian3/SDK/Source/GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita
Symbian3/SDK/Source/GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita
Symbian3/SDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B-master.png
Symbian3/SDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e375907_href.png
Symbian3/SDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378-master.jpg
Symbian3/SDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e303441_href.jpg
Symbian3/SDK/Source/GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04.dita
Symbian3/SDK/Source/GUID-8F2D8656-B7F4-4BDA-81CB-8440A2FDDD82.dita
Symbian3/SDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B-master.png
Symbian3/SDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e170339_href.png
Symbian3/SDK/Source/GUID-8F6D6934-8FF0-5045-8AB1-74384BE792EA.dita
Symbian3/SDK/Source/GUID-8FC2BA94-2374-5BFE-B4CF-624A6B0056BC.dita
Symbian3/SDK/Source/GUID-8FDCABBB-AD6D-513D-9FBF-631DC1846D20.dita
Symbian3/SDK/Source/GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA.dita
Symbian3/SDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD-master.png
Symbian3/SDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e62981_href.png
Symbian3/SDK/Source/GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita
Symbian3/SDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2-master.png
Symbian3/SDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e96205_href.png
Symbian3/SDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99-master.png
Symbian3/SDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e172684_href.png
Symbian3/SDK/Source/GUID-9057474B-1ADB-4761-879B-6A03B61E6E00.dita
Symbian3/SDK/Source/GUID-9058F379-C495-4B22-B270-FF6A80E450B8.dita
Symbian3/SDK/Source/GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita
Symbian3/SDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834-master.png
Symbian3/SDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e386628_href.png
Symbian3/SDK/Source/GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita
Symbian3/SDK/Source/GUID-9102DB10-3B93-4E79-9125-25791CEEBEFB.dita
Symbian3/SDK/Source/GUID-910780A3-D6AB-5EE2-966A-5F228AC5804F.dita
Symbian3/SDK/Source/GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB.dita
Symbian3/SDK/Source/GUID-911CD800-2D1B-5D7B-A67C-66E01F91062C.dita
Symbian3/SDK/Source/GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita
Symbian3/SDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE-master.png
Symbian3/SDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE_d0e240271_href.png
Symbian3/SDK/Source/GUID-913E38E4-F227-4976-B7DB-42163D52907C-master.png
Symbian3/SDK/Source/GUID-913E38E4-F227-4976-B7DB-42163D52907C_d0e52681_href.png
Symbian3/SDK/Source/GUID-9142B2F6-8D93-5366-9B3A-4932D2C7988E.dita
Symbian3/SDK/Source/GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita
Symbian3/SDK/Source/GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7.dita
Symbian3/SDK/Source/GUID-9169062F-3B6D-544C-847C-BA859DAB33B9.dita
Symbian3/SDK/Source/GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita
Symbian3/SDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6-master.jpg
Symbian3/SDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e128501_href.jpg
Symbian3/SDK/Source/GUID-91874A4A-57A4-54F9-966C-7D65D3782220.dita
Symbian3/SDK/Source/GUID-9189A3F5-3016-5AF5-9D84-4E066A62D8DD.dita
Symbian3/SDK/Source/GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita
Symbian3/SDK/Source/GUID-91EBB6E0-932D-506D-B041-7FB8A531EFDD.dita
Symbian3/SDK/Source/GUID-91ED5F9C-216D-539D-B4D0-E6F2E087773E.dita
Symbian3/SDK/Source/GUID-91F971B6-CA7A-5FE4-B10A-6CADC935C3B4.dita
Symbian3/SDK/Source/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita
Symbian3/SDK/Source/GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA.dita
Symbian3/SDK/Source/GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e50349_href.png
Symbian3/SDK/Source/GUID-9208E03A-CC7A-57A9-84BD-778B99040842.dita
Symbian3/SDK/Source/GUID-92156269-0645-54AB-9075-EE7708D333F4.dita
Symbian3/SDK/Source/GUID-922442FC-D9E0-53BD-B8AD-011A724C96FF.dita
Symbian3/SDK/Source/GUID-92281C52-4F2E-4D9A-9D5A-E0C5F0433339.dita
Symbian3/SDK/Source/GUID-923C50A1-813A-5B51-A630-FACFB8B35B3B.dita
Symbian3/SDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78-master.png
Symbian3/SDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e190846_href.png
Symbian3/SDK/Source/GUID-926EFFB3-B0E0-5627-87C5-20F8B4A56028.dita
Symbian3/SDK/Source/GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita
Symbian3/SDK/Source/GUID-92A4F66E-252D-5C90-AE59-1B1991002D7B.dita
Symbian3/SDK/Source/GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692.dita
Symbian3/SDK/Source/GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita
Symbian3/SDK/Source/GUID-92D6CC11-C597-5D00-AAE5-866289B7462F.dita
Symbian3/SDK/Source/GUID-93069514-BC40-5E53-B126-F5C5C43C3D83.dita
Symbian3/SDK/Source/GUID-93086866-F6E1-5715-A3BE-EEACF8A760DB.dita
Symbian3/SDK/Source/GUID-9309D482-8931-58FC-9B34-D0E5E942E404.dita
Symbian3/SDK/Source/GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita
Symbian3/SDK/Source/GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita
Symbian3/SDK/Source/GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita
Symbian3/SDK/Source/GUID-9331EE17-1831-5D9F-A090-438E3D6D1375.dita
Symbian3/SDK/Source/GUID-93491DAE-4D2D-5F5F-97E7-91B265E9951E.dita
Symbian3/SDK/Source/GUID-934AEB9C-77EA-5F50-BB84-2446DDD432C8.dita
Symbian3/SDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32-master.png
Symbian3/SDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e189670_href.png
Symbian3/SDK/Source/GUID-935DF48C-F014-5E2A-8BE6-29B00C4FD31D.dita
Symbian3/SDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F-master.png
Symbian3/SDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e154379_href.png
Symbian3/SDK/Source/GUID-9372CB71-2C75-5B3D-81EA-B4257C3162C7.dita
Symbian3/SDK/Source/GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita
Symbian3/SDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B-master.jpg
Symbian3/SDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e245569_href.jpg
Symbian3/SDK/Source/GUID-939C0EE6-0931-4898-842B-9D0C9D61DD2F.dita
Symbian3/SDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF-master.png
Symbian3/SDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e178906_href.png
Symbian3/SDK/Source/GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF.dita
Symbian3/SDK/Source/GUID-93EF4862-2395-5ED7-8446-A7FDA60535B1.dita
Symbian3/SDK/Source/GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita
Symbian3/SDK/Source/GUID-93F53961-9DA3-5D01-A881-D28E0EBF8B3C.dita
Symbian3/SDK/Source/GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e54661_href.png
Symbian3/SDK/Source/GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita
Symbian3/SDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C-master.jpg
Symbian3/SDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e114928_href.jpg
Symbian3/SDK/Source/GUID-940E3C48-D0ED-419A-9172-E4856C6CA809.dita
Symbian3/SDK/Source/GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita
Symbian3/SDK/Source/GUID-94215E49-605B-51BA-B215-10BDA1A0C013.dita
Symbian3/SDK/Source/GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita
Symbian3/SDK/Source/GUID-9444E57C-1C2F-5EAC-B162-25FC27BB9516.dita
Symbian3/SDK/Source/GUID-9452D60C-CD3E-570D-885F-F329264AB6F4.dita
Symbian3/SDK/Source/GUID-945FAA13-A302-55F5-917C-EAD2C9D960E9.dita
Symbian3/SDK/Source/GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita
Symbian3/SDK/Source/GUID-9473F793-29ED-42ED-933B-A995E56E71CB.dita
Symbian3/SDK/Source/GUID-947F448A-34D1-570F-9017-ED7B70674FBC.dita
Symbian3/SDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599-master.jpg
Symbian3/SDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e399939_href.jpg
Symbian3/SDK/Source/GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita
Symbian3/SDK/Source/GUID-94D67092-5EB3-4D83-A164-CA628F2E2DB0.dita
Symbian3/SDK/Source/GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2.dita
Symbian3/SDK/Source/GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita
Symbian3/SDK/Source/GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E.dita
Symbian3/SDK/Source/GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita
Symbian3/SDK/Source/GUID-95448841-5E5B-54C4-85A7-DCE6D078E036.dita
Symbian3/SDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita
Symbian3/SDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522-master.png
Symbian3/SDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e253309_href.png
Symbian3/SDK/Source/GUID-956E7DD6-C7FA-5F0A-9C86-D7FE58373A25.dita
Symbian3/SDK/Source/GUID-9574041E-183D-5C3F-8429-A62323B97739.dita
Symbian3/SDK/Source/GUID-95954813-A4BC-5557-9E42-EB1AB1A6F381.dita
Symbian3/SDK/Source/GUID-95B744FB-CCC0-433F-8314-CB0637F55803_d0e53568_href.png
Symbian3/SDK/Source/GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita
Symbian3/SDK/Source/GUID-95C188D0-EDB2-46D0-ACDE-19AAD524C9F4.dita
Symbian3/SDK/Source/GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita
Symbian3/SDK/Source/GUID-95D75C36-4691-45E0-AF76-B344119C51D5-master.png
Symbian3/SDK/Source/GUID-95DD1440-01C9-4997-8DD4-FFD33D7DEAFF.dita
Symbian3/SDK/Source/GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932.dita
Symbian3/SDK/Source/GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita
Symbian3/SDK/Source/GUID-95EA435B-918A-4B68-8983-1D22B7840BA7.dita
Symbian3/SDK/Source/GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita
Symbian3/SDK/Source/GUID-9620407B-0560-5D95-A862-5AE406C48983.dita
Symbian3/SDK/Source/GUID-96228425-F2C8-4767-95AD-520C655B73C5.dita
Symbian3/SDK/Source/GUID-9636A30F-39EB-54E6-8125-4487D4002FE0.dita
Symbian3/SDK/Source/GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2.dita
Symbian3/SDK/Source/GUID-9652782C-D5A7-584F-A61C-1340D49478A2.dita
Symbian3/SDK/Source/GUID-9660B072-9BD6-5A84-B45A-636F0D06D467.dita
Symbian3/SDK/Source/GUID-9665C072-EA52-54B8-87A3-A7F818940DCD.dita
Symbian3/SDK/Source/GUID-9668ADA2-7170-57AC-A5D7-1350894413FF.dita
Symbian3/SDK/Source/GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e46332_href.png
Symbian3/SDK/Source/GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e52421_href.png
Symbian3/SDK/Source/GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e55534_href.png
Symbian3/SDK/Source/GUID-96AB1D5A-932E-55BE-A025-F01608546B99.dita
Symbian3/SDK/Source/GUID-96B8657D-FC07-5D5C-8ADE-3B2167A9229E.dita
Symbian3/SDK/Source/GUID-96BCE05D-2984-4A85-9633-69ECE5BE945E.dita
Symbian3/SDK/Source/GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644.dita
Symbian3/SDK/Source/GUID-96C49728-8C78-4D82-876D-6B1196362D44.dita
Symbian3/SDK/Source/GUID-96C7CBD4-4B25-5AA1-A54F-1764B54FDC7E.dita
Symbian3/SDK/Source/GUID-96CE7427-83DB-47DE-83FB-A65920EE0319.dita
Symbian3/SDK/Source/GUID-971C9B81-1D6F-59E7-9416-385A0787D642.dita
Symbian3/SDK/Source/GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094.dita
Symbian3/SDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3-master.jpg
Symbian3/SDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e245297_href.jpg
Symbian3/SDK/Source/GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita
Symbian3/SDK/Source/GUID-975F53E5-1C13-5063-B817-795F2623737B.dita
Symbian3/SDK/Source/GUID-9761C39D-30E9-5BFA-ABF0-2C2377E3EADB.dita
Symbian3/SDK/Source/GUID-9770F3B4-998D-474F-9A82-1B134A4C2869_d0e267623_href.png
Symbian3/SDK/Source/GUID-97712509-84AD-462F-8FFB-E1E6D8278938.dita
Symbian3/SDK/Source/GUID-9782BF84-B91C-5D7C-BFAD-6B7E6A9ADD02.dita
Symbian3/SDK/Source/GUID-978DFDB1-4B20-5302-A9E4-9C7404A7CB16.dita
Symbian3/SDK/Source/GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0.dita
Symbian3/SDK/Source/GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16.dita
Symbian3/SDK/Source/GUID-97C0A5B1-99AE-5F71-9092-A6976E54AEA7.dita
Symbian3/SDK/Source/GUID-97CCEF05-8F3D-5802-A33A-ED349084D524.dita
Symbian3/SDK/Source/GUID-97E8BB93-DFEC-558F-BF7A-0F5FF0D16F06.dita
Symbian3/SDK/Source/GUID-97EC9722-242B-5DF4-99E9-B63AC4BA97DA.dita
Symbian3/SDK/Source/GUID-97F83011-BE3C-512C-9599-028CBB92BD51.dita
Symbian3/SDK/Source/GUID-97FFA8D2-4515-448B-8107-61151F252048.dita
Symbian3/SDK/Source/GUID-983C5DB9-85EF-541E-B494-19E3E617914A.dita
Symbian3/SDK/Source/GUID-98499337-5CB4-5A9C-907A-95FF57775983.dita
Symbian3/SDK/Source/GUID-988CE67F-F5EB-52DB-95B8-A0AB48307EE0.dita
Symbian3/SDK/Source/GUID-98903A01-CD04-5345-84AE-2E440CE06E11.dita
Symbian3/SDK/Source/GUID-98AC61E5-57C9-445E-98CB-79C6642CB041_d0e38543_href.png
Symbian3/SDK/Source/GUID-98B0A83B-0064-598E-BE88-84305CA6A4F1.dita
Symbian3/SDK/Source/GUID-98B85D7F-7BD9-5056-A99F-0BC99D921B87.dita
Symbian3/SDK/Source/GUID-98F104F6-8850-4417-907E-113F2166EBD9.dita
Symbian3/SDK/Source/GUID-98FBEA7E-78BA-5A64-90D6-4641418003B4.dita
Symbian3/SDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF-master.png
Symbian3/SDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e63540_href.png
Symbian3/SDK/Source/GUID-9903E2AB-9D96-5005-8DC5-26653F93616C.dita
Symbian3/SDK/Source/GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita
Symbian3/SDK/Source/GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF.dita
Symbian3/SDK/Source/GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67.dita
Symbian3/SDK/Source/GUID-998DCA78-2488-5D6D-B5B3-D86C52F32823.dita
Symbian3/SDK/Source/GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita
Symbian3/SDK/Source/GUID-99ACBD00-2F61-5984-BE77-91D5EF547289.dita
Symbian3/SDK/Source/GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita
Symbian3/SDK/Source/GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita
Symbian3/SDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA-master.png
Symbian3/SDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e215204_href.png
Symbian3/SDK/Source/GUID-99F36ADE-EBBF-5EE7-B4C9-A540D4CA1776.dita
Symbian3/SDK/Source/GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita
Symbian3/SDK/Source/GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita
Symbian3/SDK/Source/GUID-9A3E0279-4F87-594D-A987-66DC77F408A0.dita
Symbian3/SDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755-master.png
Symbian3/SDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e237755_href.png
Symbian3/SDK/Source/GUID-9A5D0303-6C22-53A1-86DA-0431F726010B.dita
Symbian3/SDK/Source/GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita
Symbian3/SDK/Source/GUID-9AA99D27-D646-54D0-92B9-204FDA1F3162.dita
Symbian3/SDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E-master.jpg
Symbian3/SDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e284626_href.jpg
Symbian3/SDK/Source/GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita
Symbian3/SDK/Source/GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita
Symbian3/SDK/Source/GUID-9B428B4E-83B7-5EE3-8D63-E2B0602D1D91.dita
Symbian3/SDK/Source/GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita
Symbian3/SDK/Source/GUID-9B8655A7-2F6D-53E0-8855-78D88BB84643.dita
Symbian3/SDK/Source/GUID-9BADA8E9-15AA-5867-BF14-DB8C4D9B40A6.dita
Symbian3/SDK/Source/GUID-9BAEF0E8-5414-597C-B0B7-5F6E02DBF3C5.dita
Symbian3/SDK/Source/GUID-9BB736AD-1224-587B-AC8C-355E7C8AEDC6.dita
Symbian3/SDK/Source/GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita
Symbian3/SDK/Source/GUID-9BE3DEBE-A1CE-5A2F-9746-1E6F2B5B050E.dita
Symbian3/SDK/Source/GUID-9BF04EB2-7050-51D2-9559-66BC47ECC5B1.dita
Symbian3/SDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0-master.png
Symbian3/SDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e403048_href.png
Symbian3/SDK/Source/GUID-9BF78E98-E376-5EE4-9350-C77BF9F540E6.dita
Symbian3/SDK/Source/GUID-9C251352-B5CD-5BD2-B420-E14E40E137B1.dita
Symbian3/SDK/Source/GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita
Symbian3/SDK/Source/GUID-9C36CF76-6ED2-5674-908F-A3DF8930CEB0.dita
Symbian3/SDK/Source/GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita
Symbian3/SDK/Source/GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita
Symbian3/SDK/Source/GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-7-1-1-5-1-4-1.dita
Symbian3/SDK/Source/GUID-9C5A86D2-E602-55AE-B54B-8511E70CD23D.dita
Symbian3/SDK/Source/GUID-9C6D94B2-8F03-5A4D-9AEC-7C3FEA0E1ACA.dita
Symbian3/SDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE-master.png
Symbian3/SDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e355954_href.png
Symbian3/SDK/Source/GUID-9C848E60-DD02-4787-90F3-1857AC3C3D1A_d0e62025_href.png
Symbian3/SDK/Source/GUID-9CA1C115-2DA3-59A8-AAE7-E99928B889BE.dita
Symbian3/SDK/Source/GUID-9CB10936-3201-546D-BC81-B53293EE1933.dita
Symbian3/SDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D-master.png
Symbian3/SDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e237829_href.png
Symbian3/SDK/Source/GUID-9D00655C-AFBA-5DF7-B11B-6B2355BDF08D.dita
Symbian3/SDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87-master.png
Symbian3/SDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e239986_href.png
Symbian3/SDK/Source/GUID-9D278187-8B5E-581D-9869-EE8861048F93.dita
Symbian3/SDK/Source/GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B.dita
Symbian3/SDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1-master.jpg
Symbian3/SDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e315122_href.jpg
Symbian3/SDK/Source/GUID-9D56FF77-A20B-5BFB-8DE6-19CC4535DFED.dita
Symbian3/SDK/Source/GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita
Symbian3/SDK/Source/GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita
Symbian3/SDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802-master.png
Symbian3/SDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e375965_href.png
Symbian3/SDK/Source/GUID-9D6E0EB4-CBF8-48BC-A76F-FE6366D4D96E.dita
Symbian3/SDK/Source/GUID-9D871368-ADB9-5588-A1F3-39A432F4F32E.dita
Symbian3/SDK/Source/GUID-9D9A67E0-CA0D-51B9-BD0D-3F474E90808D.dita
Symbian3/SDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5-master.png
Symbian3/SDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e186197_href.png
Symbian3/SDK/Source/GUID-9DCD2076-0F73-5BB7-85BF-580567E0AB53.dita
Symbian3/SDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0-master.jpg
Symbian3/SDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e247227_href.jpg
Symbian3/SDK/Source/GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629.dita
Symbian3/SDK/Source/GUID-9DFB1340-FA1E-530E-9372-DB6509CECA2B.dita
Symbian3/SDK/Source/GUID-9E00A9B2-9656-5569-B164-B7EFD2B2A9F6.dita
Symbian3/SDK/Source/GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e60273_href.png
Symbian3/SDK/Source/GUID-9E0CBB66-A573-5BBE-9788-95B313325C7E.dita
Symbian3/SDK/Source/GUID-9E0DCB19-5775-5E23-B758-163D747A71C9.dita
Symbian3/SDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0-master.jpg
Symbian3/SDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e284722_href.jpg
Symbian3/SDK/Source/GUID-9E2AEFF3-6C6E-5F09-B5C0-A70AECB421B0.dita
Symbian3/SDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79-master.png
Symbian3/SDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e336549_href.png
Symbian3/SDK/Source/GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita
Symbian3/SDK/Source/GUID-9E6822BE-BDF0-5710-9E60-A8DB14622C55.dita
Symbian3/SDK/Source/GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita
Symbian3/SDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC-master.jpg
Symbian3/SDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e253528_href.jpg
Symbian3/SDK/Source/GUID-9EA7B72B-8394-48B8-A0CC-4BB34CBDB01C.dita
Symbian3/SDK/Source/GUID-9EBF45BC-79C3-56B3-B52A-A4C3D615602C.dita
Symbian3/SDK/Source/GUID-9EE405E2-2D58-525B-8C33-B1EAC0C5A71A.dita
Symbian3/SDK/Source/GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita
Symbian3/SDK/Source/GUID-9EF1B1D2-7048-5198-8BC2-3FC960F073E4.dita
Symbian3/SDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3-master.png
Symbian3/SDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e378239_href.png
Symbian3/SDK/Source/GUID-9F22E663-8BC4-5502-879F-E6B790465E74.dita
Symbian3/SDK/Source/GUID-9F82E4D3-DDD4-50A5-AB12-50B216B73368.dita
Symbian3/SDK/Source/GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita
Symbian3/SDK/Source/GUID-9F96807F-25DC-5DE1-B327-3E339665FF64.dita
Symbian3/SDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954-master.png
Symbian3/SDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e92515_href.png
Symbian3/SDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F-master.png
Symbian3/SDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e64017_href.png
Symbian3/SDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F-master.png
Symbian3/SDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e317076_href.png
Symbian3/SDK/Source/GUID-A0122085-369E-46EF-9CA1-0269982A5284.dita
Symbian3/SDK/Source/GUID-A035B592-F423-5980-8E7E-E726CF24CF3E.dita
Symbian3/SDK/Source/GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita
Symbian3/SDK/Source/GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B.dita
Symbian3/SDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-5-1-4-1.dita
Symbian3/SDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-6-1-4-1.dita
Symbian3/SDK/Source/GUID-A05F0124-AE28-5088-8AFE-22956D1549AD.dita
Symbian3/SDK/Source/GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita
Symbian3/SDK/Source/GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-5-1-7-1-6-1-6-1.dita
Symbian3/SDK/Source/GUID-A09AFA5C-7B2A-503C-A218-987F2F9BF7B8.dita
Symbian3/SDK/Source/GUID-A09EAA46-47B4-5E3B-85F9-F6256B8B10CF.dita
Symbian3/SDK/Source/GUID-A0E75BD9-E3C6-5D28-B53C-B76260F63B89.dita
Symbian3/SDK/Source/GUID-A0F56EA1-49BA-5306-9ADC-A0647270F720.dita
Symbian3/SDK/Source/GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e46281_href.png
Symbian3/SDK/Source/GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e52361_href.png
Symbian3/SDK/Source/GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e55510_href.png
Symbian3/SDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41-master.png
Symbian3/SDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e212325_href.png
Symbian3/SDK/Source/GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita
Symbian3/SDK/Source/GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0.dita
Symbian3/SDK/Source/GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita
Symbian3/SDK/Source/GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita
Symbian3/SDK/Source/GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita
Symbian3/SDK/Source/GUID-A1598248-EE3D-5ED5-A431-02DCEBEDF472.dita
Symbian3/SDK/Source/GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita
Symbian3/SDK/Source/GUID-A16508C2-2743-5E36-BCFB-C509ACCD372F.dita
Symbian3/SDK/Source/GUID-A168E5EB-4CF7-4B74-B67C-EDFD5378C5BF.dita
Symbian3/SDK/Source/GUID-A18153C0-230C-51FB-9384-A48BB4E42F03.dita
Symbian3/SDK/Source/GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita
Symbian3/SDK/Source/GUID-A19A1F43-E42B-5FC2-AE58-A7BC67B6733A.dita
Symbian3/SDK/Source/GUID-A1BD83F8-C6DB-5737-8052-7B710B19147F.dita
Symbian3/SDK/Source/GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita
Symbian3/SDK/Source/GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita
Symbian3/SDK/Source/GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05.dita
Symbian3/SDK/Source/GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita
Symbian3/SDK/Source/GUID-A2031A61-3319-4FBA-BC71-AC1327182053.dita
Symbian3/SDK/Source/GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB.dita
Symbian3/SDK/Source/GUID-A24491E4-867F-4006-9798-07281553EA51.dita
Symbian3/SDK/Source/GUID-A248C2C0-5F64-5484-85B2-57C86E3499E1.dita
Symbian3/SDK/Source/GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita
Symbian3/SDK/Source/GUID-A257C677-7155-413A-AC5C-1DDF71DF1187.dita
Symbian3/SDK/Source/GUID-A25E730C-F34D-5464-BE78-650B3DEA4A88.dita
Symbian3/SDK/Source/GUID-A278C1A2-0724-5800-B353-46809C44C142.dita
Symbian3/SDK/Source/GUID-A2793EFD-F765-5392-8471-C8A0C2FFC163.dita
Symbian3/SDK/Source/GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44.dita
Symbian3/SDK/Source/GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F.dita
Symbian3/SDK/Source/GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita
Symbian3/SDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2-master.png
Symbian3/SDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e36820_href.png
Symbian3/SDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6-master.jpg
Symbian3/SDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e141139_href.jpg
Symbian3/SDK/Source/GUID-A30C1204-F130-501E-BD2D-1EE1537BEFC3.dita
Symbian3/SDK/Source/GUID-A32FFE7A-A531-48D4-AD23-1CC13CB7F4B7.dita
Symbian3/SDK/Source/GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA.dita
Symbian3/SDK/Source/GUID-A3320A1E-E85E-508D-A47E-E35824C947A3.dita
Symbian3/SDK/Source/GUID-A3449F37-89BB-5208-8FD5-F4DF73F7E71A.dita
Symbian3/SDK/Source/GUID-A34D9893-C9AE-5C43-85D3-E14BC5DE2A92.dita
Symbian3/SDK/Source/GUID-A36C2DE6-21D8-5558-B223-1E81CEB16891.dita
Symbian3/SDK/Source/GUID-A399508A-DE6A-490D-9BFB-4FCF56FF9D4C.dita
Symbian3/SDK/Source/GUID-A3AF142B-F9DF-43FD-9D3F-788A74D0C575.dita
Symbian3/SDK/Source/GUID-A3B5381F-7D81-52D5-97DE-CCF56C2A49A9.dita
Symbian3/SDK/Source/GUID-A3B58436-07E4-565B-800B-86435D205461.dita
Symbian3/SDK/Source/GUID-A3BCC33F-D11B-4F98-BCC3-9A06381A02E7.dita
Symbian3/SDK/Source/GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita
Symbian3/SDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita
Symbian3/SDK/Source/GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita
Symbian3/SDK/Source/GUID-A40376B6-8B2B-551A-B72F-CFCADBC84BE7.dita
Symbian3/SDK/Source/GUID-A432469D-F594-4A94-8889-142AB39A795D_d0e46138_href.png
Symbian3/SDK/Source/GUID-A432469D-F594-4A94-8889-142AB39A795D_d0e52170_href.png
Symbian3/SDK/Source/GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita
Symbian3/SDK/Source/GUID-A4560E99-C124-49A1-ADA1-D1B1F18EE539.dita
Symbian3/SDK/Source/GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita
Symbian3/SDK/Source/GUID-A4726E90-4F72-5986-947A-D948A8029240.dita
Symbian3/SDK/Source/GUID-A4761D73-E2EA-512A-863B-D19F8698C69A.dita
Symbian3/SDK/Source/GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita
Symbian3/SDK/Source/GUID-A4B391F0-058F-5B51-8D28-6A7B5C4A1BB9.dita
Symbian3/SDK/Source/GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita
Symbian3/SDK/Source/GUID-A4C26317-9F76-587E-A4B6-D94892ACF11B.dita
Symbian3/SDK/Source/GUID-A4D8326E-E72F-443D-9CA5-7835D6AE171F.dita
Symbian3/SDK/Source/GUID-A4ECB450-02DA-5E85-91AC-4C8BDE0B9B58.dita
Symbian3/SDK/Source/GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita
Symbian3/SDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E-master.jpg
Symbian3/SDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e314506_href.jpg
Symbian3/SDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941-master.png
Symbian3/SDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e162764_href.png
Symbian3/SDK/Source/GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita
Symbian3/SDK/Source/GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita
Symbian3/SDK/Source/GUID-A51FE292-3E9D-52FE-B751-246C64F30BBC.dita
Symbian3/SDK/Source/GUID-A52E8853-9A8A-5B66-A2B0-F943B32AA5C6.dita
Symbian3/SDK/Source/GUID-A5693758-495B-598E-A514-24C48D459BB6.dita
Symbian3/SDK/Source/GUID-A56D550A-BF08-5D9C-A64C-67E8654F449B.dita
Symbian3/SDK/Source/GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita
Symbian3/SDK/Source/GUID-A578ECBB-28C5-51C6-A040-4AE65AD38C07.dita
Symbian3/SDK/Source/GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita
Symbian3/SDK/Source/GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6.dita
Symbian3/SDK/Source/GUID-A5C1DDAC-C8D5-4966-8102-8F052B91CE1F_d0e47496_href.png
Symbian3/SDK/Source/GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e38364_href.png
Symbian3/SDK/Source/GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita
Symbian3/SDK/Source/GUID-A60BFFE4-E527-547C-AF4D-30BB7A1C0D07.dita
Symbian3/SDK/Source/GUID-A60C4549-9FAA-496A-B743-D395A461B61F.dita
Symbian3/SDK/Source/GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita
Symbian3/SDK/Source/GUID-A626197A-3FA7-588C-B649-E33CCA990B99.dita
Symbian3/SDK/Source/GUID-A62E89DE-0762-5827-856D-F20EEF46EE4B-GENID-1-6-1-3-1-1-7-1-7-1-4-1.dita
Symbian3/SDK/Source/GUID-A63025D1-7FD4-5120-8A1F-537D6B70103D.dita
Symbian3/SDK/Source/GUID-A636C1B3-8AB2-52D7-BB19-4CC93F4BDD97.dita
Symbian3/SDK/Source/GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita
Symbian3/SDK/Source/GUID-A658690F-8F46-56F7-8CF6-06757C550A9A.dita
Symbian3/SDK/Source/GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita
Symbian3/SDK/Source/GUID-A668C70B-1AFF-5D58-9527-8530E2472227.dita
Symbian3/SDK/Source/GUID-A68D1F27-FE7E-503E-B5B6-7BD555B88558.dita
Symbian3/SDK/Source/GUID-A6A6BC5B-4988-45B4-863D-0E3733B77EA2.dita
Symbian3/SDK/Source/GUID-A6B5CB55-9928-580E-AE62-6017211457B8.dita
Symbian3/SDK/Source/GUID-A6CF0AD2-BDE4-548C-A165-581FCD019D7C.dita
Symbian3/SDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21-master.png
Symbian3/SDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e338995_href.png
Symbian3/SDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB-master.png
Symbian3/SDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e367032_href.png
Symbian3/SDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253-master.png
Symbian3/SDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e163209_href.png
Symbian3/SDK/Source/GUID-A721FC4A-03C6-59F7-A0D2-565C4828E5E1.dita
Symbian3/SDK/Source/GUID-A748041F-5925-54F8-AA21-C1CE8E0473AA.dita
Symbian3/SDK/Source/GUID-A7498DE3-E9A1-5921-9867-4254685CAC18.dita
Symbian3/SDK/Source/GUID-A7884A6F-384E-5A52-B2F4-C2FA1B3BAC29.dita
Symbian3/SDK/Source/GUID-A7D95E53-67DA-54C7-B093-995CA9CC39B5.dita
Symbian3/SDK/Source/GUID-A7DFDC4F-56C2-46B3-8B76-A6488BE4ABE0.dita
Symbian3/SDK/Source/GUID-A7E39E45-02BA-58F4-8807-EFABB8F6E5D0.dita
Symbian3/SDK/Source/GUID-A80ED7B2-4A58-570A-A671-4F4B1BB9FDAF.dita
Symbian3/SDK/Source/GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8.dita
Symbian3/SDK/Source/GUID-A81854C9-25F1-5C3B-AF3F-ECB7CFA26677.dita
Symbian3/SDK/Source/GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita
Symbian3/SDK/Source/GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita
Symbian3/SDK/Source/GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita
Symbian3/SDK/Source/GUID-A84EDC63-0A74-4B93-BED2-7BE273A6DDB3.dita
Symbian3/SDK/Source/GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45.dita
Symbian3/SDK/Source/GUID-A87610FF-2FBC-4BA3-8F6B-0BBB441F8066.dita
Symbian3/SDK/Source/GUID-A88F4A4E-49D7-4F92-8047-CA287C54B964.dita
Symbian3/SDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57-master.png
Symbian3/SDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e337257_href.png
Symbian3/SDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63-master.jpg
Symbian3/SDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e284554_href.jpg
Symbian3/SDK/Source/GUID-A8EADD99-561C-5077-834F-DFC2CC4AE6E2.dita
Symbian3/SDK/Source/GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita
Symbian3/SDK/Source/GUID-A8EE55C2-0636-44E2-8B2B-05EA8D4A96A4.dita
Symbian3/SDK/Source/GUID-A928E956-9800-5277-B0D3-34BBB2707AE1.dita
Symbian3/SDK/Source/GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita
Symbian3/SDK/Source/GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita
Symbian3/SDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38-master.jpg
Symbian3/SDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e251491_href.jpg
Symbian3/SDK/Source/GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita
Symbian3/SDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666-master.png
Symbian3/SDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e221479_href.png
Symbian3/SDK/Source/GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita
Symbian3/SDK/Source/GUID-A96ABD2C-A338-58E5-A674-E840B1F53670.dita
Symbian3/SDK/Source/GUID-A97250DA-A80C-4971-97DA-1C3E6520A44E.dita
Symbian3/SDK/Source/GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita
Symbian3/SDK/Source/GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita
Symbian3/SDK/Source/GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita
Symbian3/SDK/Source/GUID-A996FAAF-DB18-4F78-A8DA-873ACD771560.dita
Symbian3/SDK/Source/GUID-A9A49E91-B4EC-5D92-A021-7D08F4ED094C.dita
Symbian3/SDK/Source/GUID-A9A8C0C1-4B89-40FE-917E-7D4F7387DDA9.dita
Symbian3/SDK/Source/GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita
Symbian3/SDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400-master.png
Symbian3/SDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e313619_href.png
Symbian3/SDK/Source/GUID-A9DBE9E4-8239-526C-9D57-447DA628EE59.dita
Symbian3/SDK/Source/GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e6837_href.png
Symbian3/SDK/Source/GUID-A9EA16CE-2F80-5344-827D-0C2ED5812788.dita
Symbian3/SDK/Source/GUID-AA02BFA9-E62E-56FC-BF22-8FE092ABD9DA.dita
Symbian3/SDK/Source/GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita
Symbian3/SDK/Source/GUID-AA49FB68-22A1-417F-AB57-9C22CE016B21.dita
Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e46028_href.png
Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e46234_href.png
Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e52023_href.png
Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e52301_href.png
Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e60459_href.png
Symbian3/SDK/Source/GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita
Symbian3/SDK/Source/GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita
Symbian3/SDK/Source/GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e46315_href.png
Symbian3/SDK/Source/GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e52401_href.png
Symbian3/SDK/Source/GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e55526_href.png
Symbian3/SDK/Source/GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E.dita
Symbian3/SDK/Source/GUID-AA978F65-C25B-59DC-82BC-6892228EA3F9.dita
Symbian3/SDK/Source/GUID-AAA27EE5-E323-5822-A339-690316C2D9B4.dita
Symbian3/SDK/Source/GUID-AAA2ABA4-5555-5E4B-AEFF-3DF61462B170.dita
Symbian3/SDK/Source/GUID-AAAC7887-93A8-5F8D-98D4-44FAD26C228A.dita
Symbian3/SDK/Source/GUID-AAE39139-B377-5122-A2B0-98708EA00614.dita
Symbian3/SDK/Source/GUID-AB0A3E87-6725-5E83-B462-1219CE205187.dita
Symbian3/SDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7-master.png
Symbian3/SDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e162776_href.png
Symbian3/SDK/Source/GUID-AB3D07E6-83C9-4948-A13F-75A65498F444.dita
Symbian3/SDK/Source/GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E.dita
Symbian3/SDK/Source/GUID-AB68F150-1005-54AE-8F71-A88949463FDD-master.png
Symbian3/SDK/Source/GUID-AB705D21-87A3-5F32-A4B9-17B7593DD5C3.dita
Symbian3/SDK/Source/GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita
Symbian3/SDK/Source/GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41.dita
Symbian3/SDK/Source/GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita
Symbian3/SDK/Source/GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita
Symbian3/SDK/Source/GUID-ABD45929-DEA1-5500-B64A-B32F623B6A06.dita
Symbian3/SDK/Source/GUID-ABD741AE-7F66-564C-895C-6E4682308CEA.dita
Symbian3/SDK/Source/GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita
Symbian3/SDK/Source/GUID-AC39AA12-4F39-58DB-BE67-C624C0A96DE2.dita
Symbian3/SDK/Source/GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950.dita
Symbian3/SDK/Source/GUID-AC5665B4-8E33-58A3-824B-6CC40E13160A.dita
Symbian3/SDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2-master.png
Symbian3/SDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e162018_href.png
Symbian3/SDK/Source/GUID-AC6FCBB0-E4FD-4D30-B000-1F652B2EE96A.dita
Symbian3/SDK/Source/GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita
Symbian3/SDK/Source/GUID-AC99E9ED-2C02-561A-ABA4-DCDD415E8653.dita
Symbian3/SDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495-master.png
Symbian3/SDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e132376_href.png
Symbian3/SDK/Source/GUID-ACB3786B-38EB-58F4-87B6-6A46A390B154.dita
Symbian3/SDK/Source/GUID-ACC71D0D-32C4-5DAF-B4D9-66013A073FD4.dita
Symbian3/SDK/Source/GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita
Symbian3/SDK/Source/GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita
Symbian3/SDK/Source/GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita
Symbian3/SDK/Source/GUID-ACE7D63F-9544-56DB-A72D-FFB0A35661EC.dita
Symbian3/SDK/Source/GUID-ACF6C0A2-87ED-55B3-B22A-9B331D9940AC.dita
Symbian3/SDK/Source/GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33.dita
Symbian3/SDK/Source/GUID-AD5F35EC-4459-589F-9C46-94901562E05F.dita
Symbian3/SDK/Source/GUID-AD6587AD-A5B2-5369-9217-D752A37490C4.dita
Symbian3/SDK/Source/GUID-AD6A057D-D514-4145-B7A6-E43959543E92.dita
Symbian3/SDK/Source/GUID-AD6CF225-CFF9-5F76-AA00-3535EA7D6FF1.dita
Symbian3/SDK/Source/GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita
Symbian3/SDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755-master.png
Symbian3/SDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e128205_href.png
Symbian3/SDK/Source/GUID-ADAD07E4-3539-52DC-B117-7078B3045B74.dita
Symbian3/SDK/Source/GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e42127_href.png
Symbian3/SDK/Source/GUID-ADB9AD91-37A2-4FE6-B378-C43CD0A7B513.dita
Symbian3/SDK/Source/GUID-ADDF9C0F-32D3-5CB1-B3B5-2FAD3A4EC278.dita
Symbian3/SDK/Source/GUID-ADF4BBBC-E771-5A12-A246-B5EA8EEE8D79.dita
Symbian3/SDK/Source/GUID-AE31B2A5-40BA-5FD4-9CCA-2CDF5B00DFDC.dita
Symbian3/SDK/Source/GUID-AE3BE603-21ED-5DEA-B1E9-0F1ADBED06D0.dita
Symbian3/SDK/Source/GUID-AE5432AE-C699-4403-BCFC-474515C9BEC8.dita
Symbian3/SDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19-master.png
Symbian3/SDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e403017_href.png
Symbian3/SDK/Source/GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita
Symbian3/SDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066-master.png
Symbian3/SDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e143159_href.png
Symbian3/SDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA-master.jpg
Symbian3/SDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e263269_href.jpg
Symbian3/SDK/Source/GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5.dita
Symbian3/SDK/Source/GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e7734_href.png
Symbian3/SDK/Source/GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita
Symbian3/SDK/Source/GUID-AED57265-6106-4217-ADE6-1327CA3FDE7E.dita
Symbian3/SDK/Source/GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD.dita
Symbian3/SDK/Source/GUID-AF26E3D3-D0CD-4715-B9F6-FBB1BCF2DDE2.dita
Symbian3/SDK/Source/GUID-AF28D930-6BD1-5DC5-9BE5-7512241E90CD.dita
Symbian3/SDK/Source/GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita
Symbian3/SDK/Source/GUID-AF30D941-BFD8-5260-9588-C5DA6983F558.dita
Symbian3/SDK/Source/GUID-AF408E56-D2CB-557C-9D04-C6F7CE1A5424.dita
Symbian3/SDK/Source/GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita
Symbian3/SDK/Source/GUID-AF65EC50-0922-57DD-809B-DB8970C8E4C6.dita
Symbian3/SDK/Source/GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD.dita
Symbian3/SDK/Source/GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808.dita
Symbian3/SDK/Source/GUID-AFAB4B17-1E9B-562D-AC36-48C4B0FFDD50.dita
Symbian3/SDK/Source/GUID-AFBD4ED6-9588-531C-8EDF-566DB1D03088.dita
Symbian3/SDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC-master.png
Symbian3/SDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e163163_href.png
Symbian3/SDK/Source/GUID-AFD7E241-7DC5-5C7B-A7FB-D0B6DCF95ECD.dita
Symbian3/SDK/Source/GUID-AFE0238A-D6A4-5D07-BB99-85E8CF97BD26.dita
Symbian3/SDK/Source/GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita
Symbian3/SDK/Source/GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita
Symbian3/SDK/Source/GUID-AFF0B669-E0D8-5533-A105-0F5EBC6AF5E1.dita
Symbian3/SDK/Source/GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita
Symbian3/SDK/Source/GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita
Symbian3/SDK/Source/GUID-B01427FA-B857-532B-B2F3-BD90CA042233.dita
Symbian3/SDK/Source/GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita
Symbian3/SDK/Source/GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita
Symbian3/SDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF-master.png
Symbian3/SDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e188712_href.png
Symbian3/SDK/Source/GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita
Symbian3/SDK/Source/GUID-B0492A3A-A7F6-5F41-AE5C-4B31AC85769B.dita
Symbian3/SDK/Source/GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita
Symbian3/SDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E-master.png
Symbian3/SDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e162640_href.png
Symbian3/SDK/Source/GUID-B088B74A-9A6D-4C72-9069-391ECAD38514.dita
Symbian3/SDK/Source/GUID-B0C99FFF-DAF8-5E0D-9EE0-60CBAEF6E8D7.dita
Symbian3/SDK/Source/GUID-B0D76734-1DB7-5465-91AE-BB3521599A75.dita
Symbian3/SDK/Source/GUID-B0E6F296-1340-4458-B9F6-EDC13BBF20E9_d0e54374_href.png
Symbian3/SDK/Source/GUID-B0E6F296-1340-4458-B9F6-EDC13BBF20E9_d0e55123_href.png
Symbian3/SDK/Source/GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita
Symbian3/SDK/Source/GUID-B0F7EFB9-3502-50F7-BBE1-FD0DD7A360F8.dita
Symbian3/SDK/Source/GUID-B0F9CDEC-A953-51D0-B7A3-8B341A7C784A.dita
Symbian3/SDK/Source/GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita
Symbian3/SDK/Source/GUID-B10B6363-9FB9-562C-8DCA-42FEF8D5413B.dita
Symbian3/SDK/Source/GUID-B11304D7-284A-5165-9565-F9CC4405E258.dita
Symbian3/SDK/Source/GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita
Symbian3/SDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575-master.png
Symbian3/SDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e336622_href.png
Symbian3/SDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9-master.png
Symbian3/SDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e188883_href.png
Symbian3/SDK/Source/GUID-B142FB0F-518F-436A-83D1-57BDE9671E44_d0e55158_href.png
Symbian3/SDK/Source/GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01.dita
Symbian3/SDK/Source/GUID-B16A0370-F18F-4035-B3D6-ED550D8D68F9.dita
Symbian3/SDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC-master.png
Symbian3/SDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e321822_href.png
Symbian3/SDK/Source/GUID-B1800856-3516-5D22-B1C5-556866CDDF46.dita
Symbian3/SDK/Source/GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita
Symbian3/SDK/Source/GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita
Symbian3/SDK/Source/GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2.dita
Symbian3/SDK/Source/GUID-B1C79738-0449-5C26-BA8A-4612C6BF652F.dita
Symbian3/SDK/Source/GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita
Symbian3/SDK/Source/GUID-B1D5B680-00E3-5702-985A-94256180E2D8.dita
Symbian3/SDK/Source/GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03.dita
Symbian3/SDK/Source/GUID-B1DD21A3-674A-5193-95CF-F533FDBBD319.dita
Symbian3/SDK/Source/GUID-B2089965-546C-5FF2-8596-13A2221E02E6.dita
Symbian3/SDK/Source/GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita
Symbian3/SDK/Source/GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita
Symbian3/SDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E-master.png
Symbian3/SDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e99068_href.png
Symbian3/SDK/Source/GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita
Symbian3/SDK/Source/GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita
Symbian3/SDK/Source/GUID-B24F1029-39FE-539F-847E-1296A1574F95.dita
Symbian3/SDK/Source/GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita
Symbian3/SDK/Source/GUID-B2737D23-936F-4968-99DE-7FAB28968AA9.dita
Symbian3/SDK/Source/GUID-B29D55DC-D2EE-5F05-A0BF-7C7C30615479.dita
Symbian3/SDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19-master.png
Symbian3/SDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e163220_href.png
Symbian3/SDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1-master.png
Symbian3/SDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e154368_href.png
Symbian3/SDK/Source/GUID-B3248893-9944-5544-84EA-0F4D40992152.dita
Symbian3/SDK/Source/GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF.dita
Symbian3/SDK/Source/GUID-B340078C-9EFC-4017-8F43-B0BBCE4935DC.dita
Symbian3/SDK/Source/GUID-B36F47DC-0A62-5B8F-A761-2717B921A339.dita
Symbian3/SDK/Source/GUID-B3760707-2810-4CD9-82C7-6A40DE638D36.dita
Symbian3/SDK/Source/GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita
Symbian3/SDK/Source/GUID-B386CA7A-F527-5584-9455-371E623DCF76.dita
Symbian3/SDK/Source/GUID-B38EBDBA-2A30-5595-9639-6AE58C530DCB.dita
Symbian3/SDK/Source/GUID-B394A824-8745-505E-8429-8B9B6D418387.dita
Symbian3/SDK/Source/GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita
Symbian3/SDK/Source/GUID-B4039418-6499-555D-AC24-9B49161299F2.dita
Symbian3/SDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F-master.png
Symbian3/SDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e15352_href.png
Symbian3/SDK/Source/GUID-B419D99E-8312-5336-9693-3ED8DFCD0559.dita
Symbian3/SDK/Source/GUID-B4218FA6-5BE0-4000-BC85-3078892EDADA.dita
Symbian3/SDK/Source/GUID-B432A48B-46CE-4FD4-880E-DA15AA304CAA.dita
Symbian3/SDK/Source/GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita
Symbian3/SDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674-master.png
Symbian3/SDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674_d0e256663_href.png
Symbian3/SDK/Source/GUID-B45B4D81-E2DF-436F-8138-8DAB6BAB27C9_d0e42350_href.png
Symbian3/SDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1-master.png
Symbian3/SDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e21417_href.png
Symbian3/SDK/Source/GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e50755_href.png
Symbian3/SDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807-master.png
Symbian3/SDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e67151_href.png
Symbian3/SDK/Source/GUID-B4A54501-4AA4-5ACB-96D7-4427C7752639.dita
Symbian3/SDK/Source/GUID-B4C8B3D8-0272-577D-A669-C0AE84D035B4.dita
Symbian3/SDK/Source/GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita
Symbian3/SDK/Source/GUID-B507490F-6BD3-5DF5-97E4-EFDFEA2B4EDD.dita
Symbian3/SDK/Source/GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB.dita
Symbian3/SDK/Source/GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27.dita
Symbian3/SDK/Source/GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita
Symbian3/SDK/Source/GUID-B54E84A4-2F81-57C2-BEDC-48C6B3F6A023.dita
Symbian3/SDK/Source/GUID-B5509C73-9A72-5E4D-B9BB-733B10EF842E.dita
Symbian3/SDK/Source/GUID-B5576E47-CBB6-5E50-91BD-1CA1425EACE8.dita
Symbian3/SDK/Source/GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863.dita
Symbian3/SDK/Source/GUID-B5696711-C79B-5239-B587-33507BF2B3BE.dita
Symbian3/SDK/Source/GUID-B57857D6-F00B-458A-8194-42CACA0BF131.dita
Symbian3/SDK/Source/GUID-B57D7C53-DFDB-4590-8227-EA251D1ABBC7.dita
Symbian3/SDK/Source/GUID-B57ECD51-85EF-50EA-B3EE-62A85CD9C382.dita
Symbian3/SDK/Source/GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563.dita
Symbian3/SDK/Source/GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita
Symbian3/SDK/Source/GUID-B58D93D7-597C-5200-82ED-F434B297CAC9.dita
Symbian3/SDK/Source/GUID-B58DEF65-B08F-5D0B-98E7-EB8DB7082F8B.dita
Symbian3/SDK/Source/GUID-B5BB6A00-7CD8-4322-ACD4-B9F0E1EEA6B2.swf
Symbian3/SDK/Source/GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita
Symbian3/SDK/Source/GUID-B5F98445-3CFF-5067-B89A-AC80F56C40C3.dita
Symbian3/SDK/Source/GUID-B6088C0A-20AE-5108-A28C-9CA884205493.dita
Symbian3/SDK/Source/GUID-B60A4401-56C0-5C70-BAA9-020321FEDCBB.dita
Symbian3/SDK/Source/GUID-B6101F63-280D-5CF7-92EC-337FEDF5E148.dita
Symbian3/SDK/Source/GUID-B61EA8C5-0966-51DE-AC73-01DD34C7D3CC.dita
Symbian3/SDK/Source/GUID-B61F5B98-E76E-52BF-ACB6-0C68314F190E.dita
Symbian3/SDK/Source/GUID-B641E030-E605-5A51-9C95-D9A23A38AF20.dita
Symbian3/SDK/Source/GUID-B659AD98-FB73-5C3C-8E13-D2CDBD2B84A2.dita
Symbian3/SDK/Source/GUID-B661DFBC-9779-597D-A1DA-4FE085DAA61A.dita
Symbian3/SDK/Source/GUID-B66323BB-7AC0-5303-BC3A-DD577D28CF16.dita
Symbian3/SDK/Source/GUID-B67DB652-A489-55C7-A3A2-D00C43BE161E.dita
Symbian3/SDK/Source/GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita
Symbian3/SDK/Source/GUID-B68FF699-923B-530E-A877-86507B1D42F1.dita
Symbian3/SDK/Source/GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76.dita
Symbian3/SDK/Source/GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita
Symbian3/SDK/Source/GUID-B6D4AEE9-5C17-51D9-BBDE-7CCB5218279D.dita
Symbian3/SDK/Source/GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita
Symbian3/SDK/Source/GUID-B70E22E6-CF28-58A0-9D1E-C9A12D1FBC72.dita
Symbian3/SDK/Source/GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita
Symbian3/SDK/Source/GUID-B71F0B0C-CFEB-583F-841D-07340DD6B9CE.dita
Symbian3/SDK/Source/GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita
Symbian3/SDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0-master.png
Symbian3/SDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e356080_href.png
Symbian3/SDK/Source/GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08.dita
Symbian3/SDK/Source/GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita
Symbian3/SDK/Source/GUID-B76CF2DF-8705-5C44-BBE5-29706957578D.dita
Symbian3/SDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D-master.png
Symbian3/SDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e181268_href.png
Symbian3/SDK/Source/GUID-B798C19D-4030-564A-A208-D84738259D72.dita
Symbian3/SDK/Source/GUID-B79B6DD2-40C5-591B-AF56-5ACD167C66F5.dita
Symbian3/SDK/Source/GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita
Symbian3/SDK/Source/GUID-B7B7F611-BCA0-498F-BEC1-16B276F680D5.dita
Symbian3/SDK/Source/GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2.dita
Symbian3/SDK/Source/GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita
Symbian3/SDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1-master.png
Symbian3/SDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e93852_href.png
Symbian3/SDK/Source/GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita
Symbian3/SDK/Source/GUID-B80ADD0D-2834-4478-A4AD-1FEBC0112A43.dita
Symbian3/SDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC-master.png
Symbian3/SDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e177877_href.png
Symbian3/SDK/Source/GUID-B82829FB-1F3D-53C9-8E3B-E9F8E3820E24.dita
Symbian3/SDK/Source/GUID-B82FBA26-6B34-4387-A5BC-758B74F37E5F.dita
Symbian3/SDK/Source/GUID-B830A1F7-9220-5879-80BE-C494A4CD155B.dita
Symbian3/SDK/Source/GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita
Symbian3/SDK/Source/GUID-B85CA4E7-3DF5-5D5C-BF7B-5D0DDCD468AE.dita
Symbian3/SDK/Source/GUID-B861091F-DFD7-5BDD-B73C-52833F972CBD.dita
Symbian3/SDK/Source/GUID-B876D548-FD40-4369-B328-7427002B4851.dita
Symbian3/SDK/Source/GUID-B89D2828-0FEE-5206-97D2-C7D4BBD35799.dita
Symbian3/SDK/Source/GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita
Symbian3/SDK/Source/GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026.dita
Symbian3/SDK/Source/GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F.dita
Symbian3/SDK/Source/GUID-B8E16769-0B82-57BB-8DA0-FEB4E181FA84.dita
Symbian3/SDK/Source/GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e7648_href.png
Symbian3/SDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89-master.png
Symbian3/SDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e222082_href.png
Symbian3/SDK/Source/GUID-B93D6BAE-B9B9-5118-92DF-5E566E5BE8EB.dita
Symbian3/SDK/Source/GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita
Symbian3/SDK/Source/GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita
Symbian3/SDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8-master.png
Symbian3/SDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e310419_href.png
Symbian3/SDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED-master.png
Symbian3/SDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e304279_href.png
Symbian3/SDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365-master.jpg
Symbian3/SDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e284714_href.jpg
Symbian3/SDK/Source/GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita
Symbian3/SDK/Source/GUID-B998B8FC-3DC3-57B5-A4E6-C4D903B4ACF9.dita
Symbian3/SDK/Source/GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita
Symbian3/SDK/Source/GUID-B9F07057-4B31-5FE8-BE4C-98CC8151CD29.dita
Symbian3/SDK/Source/GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita
Symbian3/SDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A-master.png
Symbian3/SDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e279578_href.png
Symbian3/SDK/Source/GUID-BA13D0D6-DE42-43D3-BCA8-5B83181B009E_d0e42119_href.png
Symbian3/SDK/Source/GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita
Symbian3/SDK/Source/GUID-BA362536-C9C9-5BA4-BEE3-0E1AD7FA45F1.dita
Symbian3/SDK/Source/GUID-BA49FDC0-808B-5E05-81AC-98637214F304.dita
Symbian3/SDK/Source/GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita
Symbian3/SDK/Source/GUID-BA8806CC-BE7C-4927-ACF6-DA0CB6E96AAA.dita
Symbian3/SDK/Source/GUID-BA89F4DF-E2F6-5E0B-BF20-F8898FC5D5F8.dita
Symbian3/SDK/Source/GUID-BA96913A-38D2-4E57-BA95-52F1642A6D06.dita
Symbian3/SDK/Source/GUID-BA9A7DF9-258A-5822-9115-E1102D609749.dita
Symbian3/SDK/Source/GUID-BAAB73D8-EF7F-5F62-B819-25EB2F5CCE3E.dita
Symbian3/SDK/Source/GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita
Symbian3/SDK/Source/GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita
Symbian3/SDK/Source/GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931.dita
Symbian3/SDK/Source/GUID-BB149ADF-3F4C-426C-8852-78FF4C144AD5.dita
Symbian3/SDK/Source/GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita
Symbian3/SDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69-master.jpg
Symbian3/SDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e303118_href.jpg
Symbian3/SDK/Source/GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9.dita
Symbian3/SDK/Source/GUID-BB67D4AA-EE75-559D-8180-D1BE923F22D8.dita
Symbian3/SDK/Source/GUID-BB6C60B4-9D34-5AC0-A4FD-3B604A35B8BD.dita
Symbian3/SDK/Source/GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita
Symbian3/SDK/Source/GUID-BB9760B4-4F3F-5326-81FB-B644C82F0E65.dita
Symbian3/SDK/Source/GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140.dita
Symbian3/SDK/Source/GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita
Symbian3/SDK/Source/GUID-BBBFC0AF-2E35-5F5C-A3A5-57C4196A6CDA.dita
Symbian3/SDK/Source/GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita
Symbian3/SDK/Source/GUID-BBC49BE2-5147-5988-93FD-9CECF90BB223.dita
Symbian3/SDK/Source/GUID-BC191AA8-696F-51A2-801F-B3F952037F54.dita
Symbian3/SDK/Source/GUID-BC3207BF-9E9F-4BA0-8F01-B72228110A61.dita
Symbian3/SDK/Source/GUID-BC32CC7C-99BA-59E8-A268-42F411CF336F.dita
Symbian3/SDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64-master.png
Symbian3/SDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e297675_href.png
Symbian3/SDK/Source/GUID-BC627588-E8C7-4DDB-8313-7C57E0CCD93B.dita
Symbian3/SDK/Source/GUID-BC67F13E-4B5A-5078-AE9B-826304BC14FD.dita
Symbian3/SDK/Source/GUID-BC9001F9-BA41-5916-B2B2-175E37D6F880.dita
Symbian3/SDK/Source/GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita
Symbian3/SDK/Source/GUID-BCC6F8D1-9F6C-41C4-A2FB-AB7528B03F8D.dita
Symbian3/SDK/Source/GUID-BD11A724-2364-5D40-A9D1-2774993BA4A4.dita
Symbian3/SDK/Source/GUID-BD463EF4-2538-51AF-8946-BFEC902A2DD0.dita
Symbian3/SDK/Source/GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A.dita
Symbian3/SDK/Source/GUID-BD7C45B2-11BF-5162-9F9B-B84E51C5C6D4.dita
Symbian3/SDK/Source/GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita
Symbian3/SDK/Source/GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita
Symbian3/SDK/Source/GUID-BD988DF9-45CA-53F3-816F-6DB81185CE40.dita
Symbian3/SDK/Source/GUID-BD9CBBE8-9389-50F9-98B1-0A07F7E2891C.dita
Symbian3/SDK/Source/GUID-BDB622BF-1CFA-5F1C-81FB-5579C8599689.dita
Symbian3/SDK/Source/GUID-BDC03973-45B0-54BD-99D1-298F4F59DB95.dita
Symbian3/SDK/Source/GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita
Symbian3/SDK/Source/GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita
Symbian3/SDK/Source/GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita
Symbian3/SDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94-master.png
Symbian3/SDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e302302_href.png
Symbian3/SDK/Source/GUID-BE26CD1E-C566-572D-9B2D-B6CFCA647C72.dita
Symbian3/SDK/Source/GUID-BE3B53A8-B06D-53C4-8FC0-85B3BA4F39EF.dita
Symbian3/SDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E-master.png
Symbian3/SDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e289045_href.png
Symbian3/SDK/Source/GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita
Symbian3/SDK/Source/GUID-BE70DCBF-366A-5054-B0F1-7FCEF45FC735.dita
Symbian3/SDK/Source/GUID-BE871265-147B-45F3-8772-A4E091223EDB.dita
Symbian3/SDK/Source/GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita
Symbian3/SDK/Source/GUID-BEA5E4F1-B355-47A1-99DC-8E8EDB7B1CB3.dita
Symbian3/SDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E-master.jpg
Symbian3/SDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e303317_href.jpg
Symbian3/SDK/Source/GUID-BEC25BA5-A994-48B6-B781-26900B04C8BE.dita
Symbian3/SDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2-master.png
Symbian3/SDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e208130_href.png
Symbian3/SDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8-master.png
Symbian3/SDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e190046_href.png
Symbian3/SDK/Source/GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita
Symbian3/SDK/Source/GUID-BF3767E9-054E-4894-9216-00866FC9C3D8.dita
Symbian3/SDK/Source/GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita
Symbian3/SDK/Source/GUID-BF6ECC83-C7A0-4183-B835-6299CC2114AF.dita
Symbian3/SDK/Source/GUID-BF796290-E9BC-5A18-AC59-9848823FBE34.dita
Symbian3/SDK/Source/GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e114460_href.png
Symbian3/SDK/Source/GUID-BF990E15-8B41-5C34-8CE0-04660A475043.dita
Symbian3/SDK/Source/GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita
Symbian3/SDK/Source/GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita
Symbian3/SDK/Source/GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C.dita
Symbian3/SDK/Source/GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645.dita
Symbian3/SDK/Source/GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita
Symbian3/SDK/Source/GUID-C00FBDE4-EF59-5FED-BA92-625414AF45AE.dita
Symbian3/SDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930-master.png
Symbian3/SDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e189606_href.png
Symbian3/SDK/Source/GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E.dita
Symbian3/SDK/Source/GUID-C05374FC-CF33-58C2-9442-B9EE78C81A4F.dita
Symbian3/SDK/Source/GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5.dita
Symbian3/SDK/Source/GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita
Symbian3/SDK/Source/GUID-C08CE95C-E1D4-5C43-93FB-21B6E86F4565.dita
Symbian3/SDK/Source/GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita
Symbian3/SDK/Source/GUID-C0C19F93-D804-5AED-90E4-A814FA6A3732.dita
Symbian3/SDK/Source/GUID-C0C1E654-8A7B-4745-A2A9-252B8E57B0E2_d0e54910_href.png
Symbian3/SDK/Source/GUID-C0C1E654-8A7B-4745-A2A9-252B8E57B0E2_d0e58682_href.png
Symbian3/SDK/Source/GUID-C0C93B8A-C63C-424E-9C30-5D69C1578660.dita
Symbian3/SDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61-master.png
Symbian3/SDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e192037_href.png
Symbian3/SDK/Source/GUID-C0D38954-2FC5-4E8B-BC11-229464DCF16C.dita
Symbian3/SDK/Source/GUID-C0E7CBC4-C525-4CA8-8D21-E7E2ABE396CE.dita
Symbian3/SDK/Source/GUID-C119A79A-D705-50B3-B174-70F517947BBD.dita
Symbian3/SDK/Source/GUID-C11AF871-56C8-4EA4-A1E0-E2B23372EF84.dita
Symbian3/SDK/Source/GUID-C11D2D1A-F901-5439-BEAF-37E4BDE13EF7.dita
Symbian3/SDK/Source/GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita
Symbian3/SDK/Source/GUID-C14D29C2-EDE6-4AB2-A346-668591B7ED3C_d0e46198_href.png
Symbian3/SDK/Source/GUID-C14D29C2-EDE6-4AB2-A346-668591B7ED3C_d0e52252_href.png
Symbian3/SDK/Source/GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita
Symbian3/SDK/Source/GUID-C15F56E3-753C-55CA-B3EF-63B2D139BCE4.dita
Symbian3/SDK/Source/GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD.dita
Symbian3/SDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E-master.jpg
Symbian3/SDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e370338_href.jpg
Symbian3/SDK/Source/GUID-C1A5C1C5-2D97-516E-9B0F-CCE02C33B47D.dita
Symbian3/SDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381-master.png
Symbian3/SDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381_d0e268269_href.png
Symbian3/SDK/Source/GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21.dita
Symbian3/SDK/Source/GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita
Symbian3/SDK/Source/GUID-C1BCBA03-4E64-5188-8D33-25B4121C1582.dita
Symbian3/SDK/Source/GUID-C1C0E7DF-6519-5648-AE5E-6D149AF1A89A.dita
Symbian3/SDK/Source/GUID-C1F71368-E35A-512D-A9DF-F81491F35E62.dita
Symbian3/SDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA-master.jpg
Symbian3/SDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e247241_href.jpg
Symbian3/SDK/Source/GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita
Symbian3/SDK/Source/GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita
Symbian3/SDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A-master.png
Symbian3/SDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e18553_href.png
Symbian3/SDK/Source/GUID-C258D231-4B08-51C4-BA09-8C61239666E0.dita
Symbian3/SDK/Source/GUID-C25DEDBC-83B8-5502-BD2A-9561F81551A0.dita
Symbian3/SDK/Source/GUID-C2608BF5-CDA7-530A-B67A-0414C7FA585D.dita
Symbian3/SDK/Source/GUID-C2709212-FD91-5245-9A1D-0E8114D7B202.dita
Symbian3/SDK/Source/GUID-C290FA5E-8E41-5D19-B8C1-F88491EE6388.dita
Symbian3/SDK/Source/GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita
Symbian3/SDK/Source/GUID-C2A203B1-3D30-5CC0-BAF8-0624E9A8B2A9.dita
Symbian3/SDK/Source/GUID-C2BF3044-CC37-554D-9496-C7B18AE94561.dita
Symbian3/SDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484-master.jpg
Symbian3/SDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e284697_href.jpg
Symbian3/SDK/Source/GUID-C2E24953-3D83-59FB-8B7A-C850474406DB.dita
Symbian3/SDK/Source/GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita
Symbian3/SDK/Source/GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita
Symbian3/SDK/Source/GUID-C3018CEE-865B-595A-A735-40E11665E50A.dita
Symbian3/SDK/Source/GUID-C302BD91-12AB-5888-98AC-33EB7A146312.dita
Symbian3/SDK/Source/GUID-C3086910-D7B4-5549-BF65-374C8B602E8F.dita
Symbian3/SDK/Source/GUID-C3290344-486B-554D-97FC-42DF48E150AA.dita
Symbian3/SDK/Source/GUID-C32D14AD-CC99-59D6-BA22-321F705418AF.dita
Symbian3/SDK/Source/GUID-C33BAB87-9CFA-58F4-95B7-7A05AB529708-master.png
Symbian3/SDK/Source/GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita
Symbian3/SDK/Source/GUID-C3846503-BEFE-5539-B7ED-FD1915D38380.dita
Symbian3/SDK/Source/GUID-C38E6D35-43DF-54E6-809B-A7B871258944.dita
Symbian3/SDK/Source/GUID-C39CA508-86F7-5B99-9390-56980DD0EFFB.dita
Symbian3/SDK/Source/GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C.dita
Symbian3/SDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B-master.png
Symbian3/SDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e289578_href.png
Symbian3/SDK/Source/GUID-C3AC4F95-67E9-5F1D-8CF0-F6B209319EC0.dita
Symbian3/SDK/Source/GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita
Symbian3/SDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27-master.png
Symbian3/SDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e176468_href.png
Symbian3/SDK/Source/GUID-C3D309CB-EA9E-4D8D-8C88-3EBC5695385F.dita
Symbian3/SDK/Source/GUID-C3FC557E-72B4-5714-AE21-930F421204D6.dita
Symbian3/SDK/Source/GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita
Symbian3/SDK/Source/GUID-C459D462-772A-58FC-8C46-B7559436C12C.dita
Symbian3/SDK/Source/GUID-C467E6CD-6656-55F6-BDDF-BFA4F187B14F.dita
Symbian3/SDK/Source/GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita
Symbian3/SDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880-master.png
Symbian3/SDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e219907_href.png
Symbian3/SDK/Source/GUID-C48890DD-BBFD-53FA-95D6-7F39D9C3C263.dita
Symbian3/SDK/Source/GUID-C49F63A4-BA9D-5C99-8C82-EB3163E30D3E.dita
Symbian3/SDK/Source/GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita
Symbian3/SDK/Source/GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984.dita
Symbian3/SDK/Source/GUID-C4CC3CA3-8C02-5F73-A482-4F849DD08111.dita
Symbian3/SDK/Source/GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita
Symbian3/SDK/Source/GUID-C501E703-E39D-598C-B962-7A32AC9091DD.dita
Symbian3/SDK/Source/GUID-C5103B39-6F67-47E3-938A-32933E75F98E.dita
Symbian3/SDK/Source/GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9.dita
Symbian3/SDK/Source/GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita
Symbian3/SDK/Source/GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51.dita
Symbian3/SDK/Source/GUID-C55D1D74-B764-5DD1-8C43-5A5138578EAC.dita
Symbian3/SDK/Source/GUID-C585871E-BE82-49EF-A4B9-4340A7154264.dita
Symbian3/SDK/Source/GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita
Symbian3/SDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE-master.png
Symbian3/SDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e205684_href.png
Symbian3/SDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F-master.png
Symbian3/SDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e295130_href.png
Symbian3/SDK/Source/GUID-C5E7D88B-C73D-56D8-A8F4-2393E5EEDC8E-master.png
Symbian3/SDK/Source/GUID-C5E99BB6-0CBE-51AE-882D-37D004106A2F.dita
Symbian3/SDK/Source/GUID-C5F4CF0F-EC1B-595D-8C95-41891CB5930D.dita
Symbian3/SDK/Source/GUID-C5F9AAD3-5183-57E5-A33B-032DE3C063AE.dita
Symbian3/SDK/Source/GUID-C6086C67-963B-455F-8BA6-58DC568084F0_d0e53206_href.png
Symbian3/SDK/Source/GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita
Symbian3/SDK/Source/GUID-C60DC070-572B-5960-B394-550426FDB909.dita
Symbian3/SDK/Source/GUID-C61A6E8E-F295-53B4-ACC6-CFE1D9117895.dita
Symbian3/SDK/Source/GUID-C61B979A-921A-5756-8D7E-691C3DDD3437.dita
Symbian3/SDK/Source/GUID-C642BA79-0E9B-5C62-9DC7-C64759830CD4.dita
Symbian3/SDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4-master.png
Symbian3/SDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e313865_href.png
Symbian3/SDK/Source/GUID-C668AEF1-B7E2-53BB-A7EF-B92CA253DE2F.dita
Symbian3/SDK/Source/GUID-C670D31C-82A7-519C-8506-3C4B99294B21.dita
Symbian3/SDK/Source/GUID-C676C4E6-93AF-59E9-886D-74D59F154490.dita
Symbian3/SDK/Source/GUID-C67A7554-256C-5392-8309-A0138CC4EBF2.dita
Symbian3/SDK/Source/GUID-C6AB2B3A-BBFC-5B57-BECB-F46C96250502.dita
Symbian3/SDK/Source/GUID-C6B65A53-BE0A-4C35-B355-379D9FE494F8_d0e59665_href.png
Symbian3/SDK/Source/GUID-C6D3827F-8F73-593E-A339-B510EEB9771F.dita
Symbian3/SDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F-master.png
Symbian3/SDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e243532_href.png
Symbian3/SDK/Source/GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C.dita
Symbian3/SDK/Source/GUID-C6E3A784-EE17-5A3C-9D81-9662114FD923.dita
Symbian3/SDK/Source/GUID-C6E9D609-E82C-4FAC-9265-F6A4FF61049C.dita
Symbian3/SDK/Source/GUID-C705B0D5-055A-5DAA-9C6E-2FC3519FA50C.dita
Symbian3/SDK/Source/GUID-C71311A7-F747-57EB-B31F-6E634D5976A3.dita
Symbian3/SDK/Source/GUID-C7213C52-F867-574E-B99A-93BA92A1FE2F.dita
Symbian3/SDK/Source/GUID-C72CF928-F32E-55CF-A4B0-B51CD7D14F8A.dita
Symbian3/SDK/Source/GUID-C73318E7-44E2-5F42-BDB0-AAE9BD72BF5C.dita
Symbian3/SDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76-master.jpg
Symbian3/SDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e247213_href.jpg
Symbian3/SDK/Source/GUID-C7589C93-B517-4251-ACFB-B03E07993242.dita
Symbian3/SDK/Source/GUID-C762E5B4-A7E3-5CAD-B639-A31F5D1899D3.dita
Symbian3/SDK/Source/GUID-C7786266-FCE7-5A96-AA92-9A71486D3B6C.dita
Symbian3/SDK/Source/GUID-C79B3D8C-499C-58B8-9DF4-B2D41CC82186.dita
Symbian3/SDK/Source/GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita
Symbian3/SDK/Source/GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA.dita
Symbian3/SDK/Source/GUID-C7E37B5D-C7AA-5624-B34F-B3CA44516E1D.dita
Symbian3/SDK/Source/GUID-C7FB54C4-43C9-562A-A18C-2818AF624774.dita
Symbian3/SDK/Source/GUID-C82A6822-DDC5-5372-A830-6BCF517F1526.dita
Symbian3/SDK/Source/GUID-C83D7112-0CF4-588D-8A0C-D27AB387F4D3.dita
Symbian3/SDK/Source/GUID-C85B4EA2-0184-52AF-B097-152E4A023CEF.dita
Symbian3/SDK/Source/GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita
Symbian3/SDK/Source/GUID-C8674786-6C09-45C2-BA5D-4F69EBD8E42F.dita
Symbian3/SDK/Source/GUID-C87DB5C9-160E-5D58-8782-6ADA833ED24F-master.png
Symbian3/SDK/Source/GUID-C87EED5E-8000-5F73-875D-5C82117339A2.dita
Symbian3/SDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03-master.jpg
Symbian3/SDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e119354_href.jpg
Symbian3/SDK/Source/GUID-C893C9E6-47B8-5149-9808-0274C61CF3D7.dita
Symbian3/SDK/Source/GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F.dita
Symbian3/SDK/Source/GUID-C8C2645A-F5A4-53F0-8F43-485FC0B472DC.dita
Symbian3/SDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7-master.png
Symbian3/SDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e163101_href.png
Symbian3/SDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179-master.png
Symbian3/SDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179_d0e314095_href.png
Symbian3/SDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C-master.png
Symbian3/SDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e3336_href.png
Symbian3/SDK/Source/GUID-C90FE253-B88B-5F01-AC8B-E89249083C93.dita
Symbian3/SDK/Source/GUID-C93D021E-D99A-5839-AB54-3D8D7620214A.dita
Symbian3/SDK/Source/GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e39244_href.png
Symbian3/SDK/Source/GUID-C9823942-CE52-53E3-B183-3B1F6509749F.dita
Symbian3/SDK/Source/GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita
Symbian3/SDK/Source/GUID-C9A1CC1E-2398-5887-8C64-7B8EE0B22022.dita
Symbian3/SDK/Source/GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita
Symbian3/SDK/Source/GUID-C9D4D586-58BF-5676-A53F-9C3A51101430.dita
Symbian3/SDK/Source/GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita
Symbian3/SDK/Source/GUID-C9F4AF3A-158C-4438-930D-9E351B89280C.dita
Symbian3/SDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2-master.png
Symbian3/SDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e405579_href.png
Symbian3/SDK/Source/GUID-CA35A708-C6D9-51D7-873B-A79606FFAF66.dita
Symbian3/SDK/Source/GUID-CA4C11C4-CDD3-4154-B401-B37A88676322_d0e46178_href.png
Symbian3/SDK/Source/GUID-CA4C11C4-CDD3-4154-B401-B37A88676322_d0e52225_href.png
Symbian3/SDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35-master.jpg
Symbian3/SDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e225553_href.jpg
Symbian3/SDK/Source/GUID-CABA0B4D-11E4-5659-B949-C4277FB63804.dita
Symbian3/SDK/Source/GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita
Symbian3/SDK/Source/GUID-CAD36EEF-42CF-52AE-A619-64F988FF342D.dita
Symbian3/SDK/Source/GUID-CADAABB4-C957-502E-BA4D-E9614C0D3878.dita
Symbian3/SDK/Source/GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074.dita
Symbian3/SDK/Source/GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita
Symbian3/SDK/Source/GUID-CB1E1921-9CF7-55B7-9F70-6AD61A961208.dita
Symbian3/SDK/Source/GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D.dita
Symbian3/SDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE-master.jpg
Symbian3/SDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e303388_href.jpg
Symbian3/SDK/Source/GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita
Symbian3/SDK/Source/GUID-CB568D14-1B0C-568F-B9CA-DDD15C53EEF3.dita
Symbian3/SDK/Source/GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita
Symbian3/SDK/Source/GUID-CBBE4BF7-B6E7-5607-95DC-F1C7D3711BD0.dita
Symbian3/SDK/Source/GUID-CBC43846-22BB-5AAF-89FE-3CF4F11B76F6.dita
Symbian3/SDK/Source/GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita
Symbian3/SDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD-master.png
Symbian3/SDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e150560_href.png
Symbian3/SDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2-master.png
Symbian3/SDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e181877_href.png
Symbian3/SDK/Source/GUID-CBFDD753-BAE3-5C40-B947-EB8CDA11CD23.dita
Symbian3/SDK/Source/GUID-CC5A1C8D-55AA-5FAE-A446-4CBF949C9003.dita
Symbian3/SDK/Source/GUID-CC686E6C-FECB-548E-984A-15F7B9742DCB.dita
Symbian3/SDK/Source/GUID-CC8EA664-FF2E-40FB-BC1C-89FB1255A9C9.dita
Symbian3/SDK/Source/GUID-CC96F41D-5AC9-5D11-BD4D-073548EA5CC8.dita
Symbian3/SDK/Source/GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita
Symbian3/SDK/Source/GUID-CCCEC352-3A49-534C-9551-A4CAE1A3475E.dita
Symbian3/SDK/Source/GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614.dita
Symbian3/SDK/Source/GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita
Symbian3/SDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073-master.png
Symbian3/SDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e296593_href.png
Symbian3/SDK/Source/GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita
Symbian3/SDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B-master.png
Symbian3/SDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e300923_href.png
Symbian3/SDK/Source/GUID-CCFF2755-02EC-510B-A052-33ABA318B922.dita
Symbian3/SDK/Source/GUID-CD0EF6F2-9515-5884-B979-C3C391B7DA07.dita
Symbian3/SDK/Source/GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita
Symbian3/SDK/Source/GUID-CD3B2B7D-BAE5-5F99-A5F5-74AFC678D986.dita
Symbian3/SDK/Source/GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita
Symbian3/SDK/Source/GUID-CD516F8E-EC7B-5949-BD03-713637CC866D.dita
Symbian3/SDK/Source/GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita
Symbian3/SDK/Source/GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E.dita
Symbian3/SDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A-master.png
Symbian3/SDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e229882_href.png
Symbian3/SDK/Source/GUID-CD87FAF6-A11D-4260-9472-CABA18BF86B1.dita
Symbian3/SDK/Source/GUID-CD8A3420-6C9B-5774-86FA-85CFE062C400.dita
Symbian3/SDK/Source/GUID-CDBBD44F-C5F6-4D51-B4BA-23DA9BB58D69.dita
Symbian3/SDK/Source/GUID-CDDF6758-C995-5FC8-AC8C-63298B65BBDE.dita
Symbian3/SDK/Source/GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita
Symbian3/SDK/Source/GUID-CDF9F944-814E-47EF-A6B5-E75300C228DD.dita
Symbian3/SDK/Source/GUID-CE011029-0F2B-50D4-B793-A24C7ECFC21E.dita
Symbian3/SDK/Source/GUID-CE18D940-FEB9-5678-A3CC-AA8A979AD4DA.dita
Symbian3/SDK/Source/GUID-CE60D453-624B-4CCB-847D-E1E425E896E2.swf
Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05-master.png
Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e325727_href.png
Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326160_href.png
Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326239_href.png
Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326412_href.png
Symbian3/SDK/Source/GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978.dita
Symbian3/SDK/Source/GUID-CE7CF024-4898-551A-841B-38EC57A3EC82.dita
Symbian3/SDK/Source/GUID-CEB1E9D7-3FAB-58D4-BD07-E924D0B87555.dita
Symbian3/SDK/Source/GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita
Symbian3/SDK/Source/GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita
Symbian3/SDK/Source/GUID-CF34D34E-FF17-5395-A1CD-768414E0B014.dita
Symbian3/SDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0-master.png
Symbian3/SDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e13986_href.png
Symbian3/SDK/Source/GUID-CF4F515D-433C-4E9D-AA20-56AF6572D5BF_d0e61549_href.png
Symbian3/SDK/Source/GUID-CF6014E9-FB59-4715-B245-5826090DDF28.dita
Symbian3/SDK/Source/GUID-CF6C76A5-AC87-4EBD-AECF-35B456219B94.dita
Symbian3/SDK/Source/GUID-CF8287B9-2063-5316-A1BF-7DFC58FCDE30.dita
Symbian3/SDK/Source/GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita
Symbian3/SDK/Source/GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita
Symbian3/SDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971-master.png
Symbian3/SDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e182376_href.png
Symbian3/SDK/Source/GUID-CFA21FBA-593F-58DB-AADA-C9D6D676AEEE.dita
Symbian3/SDK/Source/GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96.dita
Symbian3/SDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27-master.png
Symbian3/SDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e400761_href.png
Symbian3/SDK/Source/GUID-CFE3A216-E637-51C1-B258-2ADF4E0F4150.dita
Symbian3/SDK/Source/GUID-CFFA84F1-2A5E-5E73-B168-C79C2E4DC75D.dita
Symbian3/SDK/Source/GUID-D009C6A6-3388-554F-BCB5-4F438E7F9E99.dita
Symbian3/SDK/Source/GUID-D01C4682-619E-501E-8992-9F7FA35D7682.dita
Symbian3/SDK/Source/GUID-D01CC090-60D1-5D1D-AF87-C77D5DE46BAC.dita
Symbian3/SDK/Source/GUID-D02B5AF1-B1C3-560D-9654-971A5CC1A904.dita
Symbian3/SDK/Source/GUID-D0318BB6-0B9F-5A1C-AB0B-61BA22D28661.dita
Symbian3/SDK/Source/GUID-D038D77F-A6B8-5A18-8978-4981AE8D0F35.dita
Symbian3/SDK/Source/GUID-D049392D-2DA4-5E9C-8E3E-FEDF79BC5086.dita
Symbian3/SDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C-master.png
Symbian3/SDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e171521_href.png
Symbian3/SDK/Source/GUID-D099551B-6E99-5210-B44A-693012A29DD1.dita
Symbian3/SDK/Source/GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90.dita
Symbian3/SDK/Source/GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita
Symbian3/SDK/Source/GUID-D0C84E1D-A625-4F79-8515-399B8153727B.dita
Symbian3/SDK/Source/GUID-D0CD890F-36DB-5265-B2C1-8D632EAF736B.dita
Symbian3/SDK/Source/GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita
Symbian3/SDK/Source/GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita
Symbian3/SDK/Source/GUID-D0FE1B14-706E-4E4D-902E-AB2B25F02464_d0e53021_href.png
Symbian3/SDK/Source/GUID-D1303B75-607C-5C75-B8DB-39571E182C7F.dita
Symbian3/SDK/Source/GUID-D131F72E-AB21-443E-8661-5F6A509323BC-master.png
Symbian3/SDK/Source/GUID-D131F72E-AB21-443E-8661-5F6A509323BC_d0e47448_href.png
Symbian3/SDK/Source/GUID-D14CD452-BFCE-5EBA-B73B-61AA045D23E4.dita
Symbian3/SDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E-master.png
Symbian3/SDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e334574_href.png
Symbian3/SDK/Source/GUID-D157C4D3-FC2F-47DD-BD33-F8BA6156833D.dita
Symbian3/SDK/Source/GUID-D158746C-6043-4ED4-833B-85C82831A66B.dita
Symbian3/SDK/Source/GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita
Symbian3/SDK/Source/GUID-D1ADAF9A-62BD-5B68-980F-524FF440FEE1.dita
Symbian3/SDK/Source/GUID-D1BCE2D9-04B5-5C39-A50B-C5BBDAAFEFED.dita
Symbian3/SDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41-master.png
Symbian3/SDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e180248_href.png
Symbian3/SDK/Source/GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita
Symbian3/SDK/Source/GUID-D201143F-2B35-5633-8572-C5CAE556FC75.dita
Symbian3/SDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA-master.png
Symbian3/SDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e5557_href.png
Symbian3/SDK/Source/GUID-D21191CC-965A-4F92-9792-4B34D54114DA.dita
Symbian3/SDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259-master.png
Symbian3/SDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e380474_href.png
Symbian3/SDK/Source/GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita
Symbian3/SDK/Source/GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C.dita
Symbian3/SDK/Source/GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF.dita
Symbian3/SDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2-master.png
Symbian3/SDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e331150_href.png
Symbian3/SDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29-master.png
Symbian3/SDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e305210_href.png
Symbian3/SDK/Source/GUID-D2E19490-4179-548F-9DA8-9AE637FAC9E2.dita
Symbian3/SDK/Source/GUID-D30B09D1-6537-58B4-B94E-13EAD5A28EE0.dita
Symbian3/SDK/Source/GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita
Symbian3/SDK/Source/GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita
Symbian3/SDK/Source/GUID-D358120E-6755-5D0F-8754-DAB4E2A52E00.dita
Symbian3/SDK/Source/GUID-D36660AA-1DC1-49B4-870E-F3BA66A734BC_d0e55427_href.png
Symbian3/SDK/Source/GUID-D37576D8-1BD6-520B-9C69-60F2F89E4452.dita
Symbian3/SDK/Source/GUID-D37E0579-0F3B-5EE4-8264-1358E493672B.dita
Symbian3/SDK/Source/GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita
Symbian3/SDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85-master.png
Symbian3/SDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e346119_href.png
Symbian3/SDK/Source/GUID-D38C47AD-ED05-5693-A734-498788B9B85B.dita
Symbian3/SDK/Source/GUID-D3DD5F07-A383-5285-8C68-9F6C1C3E715B.dita
Symbian3/SDK/Source/GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita
Symbian3/SDK/Source/GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B.dita
Symbian3/SDK/Source/GUID-D43BBBF3-841E-51A7-A2B2-0695594C821A.dita
Symbian3/SDK/Source/GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita
Symbian3/SDK/Source/GUID-D4668FE9-52BF-581A-B403-CEC69D5219D9.dita
Symbian3/SDK/Source/GUID-D468BDDD-FC61-5571-A4E2-334B6BB9C1E3.dita
Symbian3/SDK/Source/GUID-D4A78D68-0812-532C-9AF9-85F1483EF3EA.dita
Symbian3/SDK/Source/GUID-D4AA635F-DF24-541A-A452-192DDBEE4142.dita
Symbian3/SDK/Source/GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C.dita
Symbian3/SDK/Source/GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita
Symbian3/SDK/Source/GUID-D4E06508-4346-5294-995A-64B403467EC5.dita
Symbian3/SDK/Source/GUID-D51600DD-B79A-5A4D-B2D1-36C0A9F9D115.dita
Symbian3/SDK/Source/GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita
Symbian3/SDK/Source/GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita
Symbian3/SDK/Source/GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita
Symbian3/SDK/Source/GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita
Symbian3/SDK/Source/GUID-D542B24D-5A17-516C-85B0-66A5E8A97946.dita
Symbian3/SDK/Source/GUID-D553D41C-D724-510A-A239-66CC158D6984.dita
Symbian3/SDK/Source/GUID-D557CC2C-C045-5818-B2F7-9BD8BC39257D.dita
Symbian3/SDK/Source/GUID-D5987006-A871-5F4E-AEA0-5A3B092D996A.dita
Symbian3/SDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4-master.png
Symbian3/SDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e180696_href.png
Symbian3/SDK/Source/GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF.dita
Symbian3/SDK/Source/GUID-D5AA9C67-CCE3-53BE-A50E-FAE73699E68F.dita
Symbian3/SDK/Source/GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB.dita
Symbian3/SDK/Source/GUID-D5B8DC2A-E2BA-54FE-A359-1496356AF93F.dita
Symbian3/SDK/Source/GUID-D5F57D81-6B59-5C7E-A2C8-A5E29873346B.dita
Symbian3/SDK/Source/GUID-D5FD665E-333B-50FF-A46F-6B22C0877285.dita
Symbian3/SDK/Source/GUID-D60B55FA-D8C1-559A-9D99-48845BE32A6C.dita
Symbian3/SDK/Source/GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C.dita
Symbian3/SDK/Source/GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita
Symbian3/SDK/Source/GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita
Symbian3/SDK/Source/GUID-D65D1EDC-5CB4-58C1-99B5-4495B6DA511F.dita
Symbian3/SDK/Source/GUID-D664843A-0741-5E38-88D0-D8BEC9C732EB.dita
Symbian3/SDK/Source/GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2.dita
Symbian3/SDK/Source/GUID-D68E0A64-0E8A-5C52-9C5B-93BA3B80C200.dita
Symbian3/SDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D-master.jpg
Symbian3/SDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e228222_href.jpg
Symbian3/SDK/Source/GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita
Symbian3/SDK/Source/GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF.dita
Symbian3/SDK/Source/GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita
Symbian3/SDK/Source/GUID-D6BED357-F10B-5C00-9F8E-2CA3A584C4E1.dita
Symbian3/SDK/Source/GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita
Symbian3/SDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9-master.png
Symbian3/SDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e302544_href.png
Symbian3/SDK/Source/GUID-D730D796-F640-4100-BD41-32515EF086F1.dita
Symbian3/SDK/Source/GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita
Symbian3/SDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D-master.png
Symbian3/SDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e371869_href.png
Symbian3/SDK/Source/GUID-D7600D93-CFB8-565D-8200-7082B2CF1791.dita
Symbian3/SDK/Source/GUID-D76B1999-E118-585B-A6B4-8AE8CCCB6F8B.dita
Symbian3/SDK/Source/GUID-D76D4788-E65A-59A8-8DD9-7A8096E115D5.dita
Symbian3/SDK/Source/GUID-D78B510E-3F5C-4B5D-B53F-917F2DAF6C6A.dita
Symbian3/SDK/Source/GUID-D78DCB72-7CEE-5075-A6FA-58D57AB5BA73.dita
Symbian3/SDK/Source/GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita
Symbian3/SDK/Source/GUID-D7A8E007-CCCD-5E4F-A7DE-4D474C864104.dita
Symbian3/SDK/Source/GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita
Symbian3/SDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1-master.png
Symbian3/SDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e65485_href.png
Symbian3/SDK/Source/GUID-D80D6D46-27B7-500E-A83C-63EF038606BF.dita
Symbian3/SDK/Source/GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e7676_href.png
Symbian3/SDK/Source/GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita
Symbian3/SDK/Source/GUID-D86B83B5-298E-510A-B984-7307CCA1AE1C.dita
Symbian3/SDK/Source/GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita
Symbian3/SDK/Source/GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita
Symbian3/SDK/Source/GUID-D88AA184-6E22-5069-A249-5AD83F548C56.dita
Symbian3/SDK/Source/GUID-D8900275-FCD4-5296-A27A-75A1C5744D7F.dita
Symbian3/SDK/Source/GUID-D89D1809-0A64-4331-BA5C-2B82187BEFB6.dita
Symbian3/SDK/Source/GUID-D8A18789-3A3E-4E4A-9D34-35F83BF71449.dita
Symbian3/SDK/Source/GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3.dita
Symbian3/SDK/Source/GUID-D8D30C70-C6ED-4E4C-9815-BF7993262ABF.dita
Symbian3/SDK/Source/GUID-D8D698FF-08CD-56B4-A6BF-E185A25F6988.dita
Symbian3/SDK/Source/GUID-D91DC379-947A-52CB-A154-7922AF334527.dita
Symbian3/SDK/Source/GUID-D932955F-30AA-40C7-9653-63E48C38BECB.dita
Symbian3/SDK/Source/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita
Symbian3/SDK/Source/GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697.dita
Symbian3/SDK/Source/GUID-D98E984D-69A5-5BA8-89E7-A7CC9FD0C584.dita
Symbian3/SDK/Source/GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e7076_href.png
Symbian3/SDK/Source/GUID-D99D9DA3-AB82-5513-85C3-FFF254CB9B0B.dita
Symbian3/SDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827-master.png
Symbian3/SDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e242567_href.png
Symbian3/SDK/Source/GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita
Symbian3/SDK/Source/GUID-D9D2A600-89C6-5D82-8BC0-2C60D8F6517A.dita
Symbian3/SDK/Source/GUID-D9EA2B10-B789-5CC1-9BD0-23B4FA7E0821.dita
Symbian3/SDK/Source/GUID-D9EE6C26-B0F0-58B9-BC17-4E18136187F8.dita
Symbian3/SDK/Source/GUID-D9F25AAD-18A1-43AC-B59B-82396DAA68F9.dita
Symbian3/SDK/Source/GUID-D9F8B338-5CFA-472F-8A16-B5251B1B5A81.dita
Symbian3/SDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D-master.png
Symbian3/SDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e66123_href.png
Symbian3/SDK/Source/GUID-DA09248E-E299-596E-9860-B709F7C6529A.dita
Symbian3/SDK/Source/GUID-DA0F4990-DDC4-5B0A-A446-A3C8672DA95A.dita
Symbian3/SDK/Source/GUID-DA1D89FF-52BD-5876-B7A1-300F5EBB9884.dita
Symbian3/SDK/Source/GUID-DA204619-9F02-5854-80BE-0AC6BB80D730.dita
Symbian3/SDK/Source/GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita
Symbian3/SDK/Source/GUID-DA37516F-874F-49B0-A176-73277BB86FD3.dita
Symbian3/SDK/Source/GUID-DA4160B0-7B63-5C84-B3C6-190100530EDE.dita
Symbian3/SDK/Source/GUID-DA6BB8BB-DD92-57A7-AD1B-F9CFF8CD433F.dita
Symbian3/SDK/Source/GUID-DA793067-32DD-5D4D-A0E6-E05DF9047529.dita
Symbian3/SDK/Source/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita
Symbian3/SDK/Source/GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita
Symbian3/SDK/Source/GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita
Symbian3/SDK/Source/GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita
Symbian3/SDK/Source/GUID-DB1D3045-2DC5-5C50-B430-526674369DC6.dita
Symbian3/SDK/Source/GUID-DB220677-5998-529C-BE35-0D66F588E057.dita
Symbian3/SDK/Source/GUID-DB453F9B-55B6-50C7-984D-7154F1E84AE6.dita
Symbian3/SDK/Source/GUID-DB51983B-9991-57F3-85E6-F770C35A9023.dita
Symbian3/SDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4-master.png
Symbian3/SDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e66504_href.png
Symbian3/SDK/Source/GUID-DB6AF6D3-38B6-51EF-A830-388961A3BF04.dita
Symbian3/SDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81-master.png
Symbian3/SDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81_d0e408994_href.png
Symbian3/SDK/Source/GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99.dita
Symbian3/SDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4-master.png
Symbian3/SDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e66246_href.png
Symbian3/SDK/Source/GUID-DBD4964D-7728-5E57-8BBA-824F98D0CCF8.dita
Symbian3/SDK/Source/GUID-DBF88873-21B1-5493-8EBF-C9071D314A09.dita
Symbian3/SDK/Source/GUID-DC011D9C-6C39-5BB9-A7CC-4447AB97A2D2.dita
Symbian3/SDK/Source/GUID-DC0E3782-82EF-5104-937C-41F24DF1E1CA.dita
Symbian3/SDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04-master.png
Symbian3/SDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e3354_href.png
Symbian3/SDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC-master.jpg
Symbian3/SDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e110354_href.jpg
Symbian3/SDK/Source/GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD.dita
Symbian3/SDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e46114_href.png
Symbian3/SDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e52140_href.png
Symbian3/SDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e56297_href.png
Symbian3/SDK/Source/GUID-DC59BEAD-0047-4D7A-96D1-C5E3EC4F982B.dita
Symbian3/SDK/Source/GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita
Symbian3/SDK/Source/GUID-DC704CA7-401C-54D5-85DA-B5EBF4362806.dita
Symbian3/SDK/Source/GUID-DC890B80-18F4-5D4A-8476-DBEB5FA20842.dita
Symbian3/SDK/Source/GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita
Symbian3/SDK/Source/GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita
Symbian3/SDK/Source/GUID-DCA8273C-84EC-503B-9776-F141113B5CA7.dita
Symbian3/SDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680-master.png
Symbian3/SDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e262810_href.png
Symbian3/SDK/Source/GUID-DCFD4CA0-6FB2-5339-BCFF-5B48E3E7E455.dita
Symbian3/SDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B-master.png
Symbian3/SDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e372138_href.png
Symbian3/SDK/Source/GUID-DD13AA8E-BDAD-57EC-81EC-49C8D6D30A86.dita
Symbian3/SDK/Source/GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita
Symbian3/SDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0-master.png
Symbian3/SDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e162344_href.png
Symbian3/SDK/Source/GUID-DD27A452-8B0F-5C6D-A2E6-FC21145468B6.dita
Symbian3/SDK/Source/GUID-DD3411FE-D95B-5153-8C90-442618920E20.dita
Symbian3/SDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448-master.png
Symbian3/SDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e15512_href.png
Symbian3/SDK/Source/GUID-DD6CB072-E152-4683-83B3-DB4BBFD6C4B6_d0e38484_href.png
Symbian3/SDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924-master.png
Symbian3/SDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e337199_href.png
Symbian3/SDK/Source/GUID-DD7D33BD-0DDB-584C-9362-AEECFA1EA9A7.dita
Symbian3/SDK/Source/GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita
Symbian3/SDK/Source/GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita
Symbian3/SDK/Source/GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita
Symbian3/SDK/Source/GUID-DDBE3874-60B0-5CAB-A782-294A32412C0B.dita
Symbian3/SDK/Source/GUID-DDE06BD5-2515-59FD-B91F-4C78A768533D.dita
Symbian3/SDK/Source/GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita
Symbian3/SDK/Source/GUID-DDF4EA2E-59D6-5FE0-9C61-C5A9CBD8D4FE.dita
Symbian3/SDK/Source/GUID-DE099071-8401-5DD0-B72A-672B307463A2.dita
Symbian3/SDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A-master.png
Symbian3/SDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e180054_href.png
Symbian3/SDK/Source/GUID-DE17BEA2-C821-50B8-9128-9C4D35D95599.dita
Symbian3/SDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C-master.jpg
Symbian3/SDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e303230_href.jpg
Symbian3/SDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732-master.png
Symbian3/SDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e334283_href.png
Symbian3/SDK/Source/GUID-DE9CB4F7-5129-5450-A6D6-9B0BA253FC81.dita
Symbian3/SDK/Source/GUID-DE9E76F8-AE17-5962-A2BB-5006C6AB5C82.dita
Symbian3/SDK/Source/GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita
Symbian3/SDK/Source/GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita
Symbian3/SDK/Source/GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E.dita
Symbian3/SDK/Source/GUID-DF1C3E6D-9133-530B-B318-66F0E6CDB3AD.dita
Symbian3/SDK/Source/GUID-DF37DAC3-8B86-5674-B025-931F743ED888-master.png
Symbian3/SDK/Source/GUID-DF37DAC3-8B86-5674-B025-931F743ED888_d0e109814_href.png
Symbian3/SDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4-master.png
Symbian3/SDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e12840_href.png
Symbian3/SDK/Source/GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita
Symbian3/SDK/Source/GUID-DF4C1226-E4D1-5701-BA55-8701754129D1.dita
Symbian3/SDK/Source/GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita
Symbian3/SDK/Source/GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E.dita
Symbian3/SDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788-master.png
Symbian3/SDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e65751_href.png
Symbian3/SDK/Source/GUID-DFDDF0C5-0E66-4394-A746-7FE35EEA4E6A.dita
Symbian3/SDK/Source/GUID-DFF9DFC5-1BE0-5CA2-A2B9-27FA2DECFF59.dita
Symbian3/SDK/Source/GUID-E0284006-9173-5BC5-A899-E0873CA1AE1F.dita
Symbian3/SDK/Source/GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita
Symbian3/SDK/Source/GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita
Symbian3/SDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F-master.jpg
Symbian3/SDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e283775_href.jpg
Symbian3/SDK/Source/GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD.dita
Symbian3/SDK/Source/GUID-E0C21636-657A-413F-A905-A08608B60768.dita
Symbian3/SDK/Source/GUID-E0D10091-1F66-428A-919C-BE8C95DEACD1.dita
Symbian3/SDK/Source/GUID-E0D622CE-5D10-5C6E-9998-545C016575F0.dita
Symbian3/SDK/Source/GUID-E10A3336-9C4C-59A5-B94F-6CECA92FFB9F.dita
Symbian3/SDK/Source/GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita
Symbian3/SDK/Source/GUID-E1410365-7254-5326-B3F7-D7100D31E59F.dita
Symbian3/SDK/Source/GUID-E14C1D1E-B7E5-5244-8BE7-386C542AAB58.dita
Symbian3/SDK/Source/GUID-E16070E5-379A-5818-81CC-B00059A40084.dita
Symbian3/SDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita
Symbian3/SDK/Source/GUID-E1634502-483A-51F3-9F5D-C863C8C9465A.dita
Symbian3/SDK/Source/GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita
Symbian3/SDK/Source/GUID-E173DF0D-DBE3-45DE-8763-453940DF3E5B.dita
Symbian3/SDK/Source/GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita
Symbian3/SDK/Source/GUID-E18584A9-4F16-51D0-89CB-96275A588F54.dita
Symbian3/SDK/Source/GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita
Symbian3/SDK/Source/GUID-E1A2872E-6E8D-4C02-B3C0-23213FD56106.dita
Symbian3/SDK/Source/GUID-E1CF82AA-D1CB-59A6-96B6-17235278E2F9.dita
Symbian3/SDK/Source/GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita
Symbian3/SDK/Source/GUID-E1EF7223-02EA-5875-84E6-6415E7081F6E.dita
Symbian3/SDK/Source/GUID-E1FFE8AB-9C4C-51DB-AC08-F0A18C33D735.dita
Symbian3/SDK/Source/GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E.dita
Symbian3/SDK/Source/GUID-E211C047-FCF9-5B48-B9D9-97C3D093E19B.dita
Symbian3/SDK/Source/GUID-E21287EF-7211-590B-A1E3-E0B37069FCB2.dita
Symbian3/SDK/Source/GUID-E2252589-DCFB-5272-8FB3-701712D7F417.dita
Symbian3/SDK/Source/GUID-E23CC708-1DD1-5DFC-992A-997AA107A616.dita
Symbian3/SDK/Source/GUID-E23D699C-D087-5ADA-BD46-BA5D68DD0047.dita
Symbian3/SDK/Source/GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita
Symbian3/SDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A-master.png
Symbian3/SDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e178502_href.png
Symbian3/SDK/Source/GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita
Symbian3/SDK/Source/GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita
Symbian3/SDK/Source/GUID-E29CAFA8-523D-57D2-AC1B-D6D01741550B.dita
Symbian3/SDK/Source/GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita
Symbian3/SDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4-master.png
Symbian3/SDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e120285_href.png
Symbian3/SDK/Source/GUID-E2B67F14-EC4E-41B6-9F8E-AB58B9E8D7B6.dita
Symbian3/SDK/Source/GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3.dita
Symbian3/SDK/Source/GUID-E2D4973C-FE93-5DE7-B04E-19B7701621C3.dita
Symbian3/SDK/Source/GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita
Symbian3/SDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4-master.png
Symbian3/SDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e348208_href.png
Symbian3/SDK/Source/GUID-E3210353-EEC2-56CB-AD75-309E5DCDEDD1.dita
Symbian3/SDK/Source/GUID-E326C00B-6E07-5902-AB19-F00D1761795C.dita
Symbian3/SDK/Source/GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita
Symbian3/SDK/Source/GUID-E332F544-0759-4C10-B29C-14AA5EAEBD49.dita
Symbian3/SDK/Source/GUID-E339A683-94E2-54E8-BB2B-286B11B0FCE3.dita
Symbian3/SDK/Source/GUID-E34D0F11-4B34-575C-BE78-8EAD13E9CD64.dita
Symbian3/SDK/Source/GUID-E3A80D62-09A5-502D-AB55-6AB2A5623465.dita
Symbian3/SDK/Source/GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita
Symbian3/SDK/Source/GUID-E3ADCC42-ACFC-49FC-88FF-8196CE61014B.dita
Symbian3/SDK/Source/GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita
Symbian3/SDK/Source/GUID-E3D2A6ED-8192-563D-8966-DD96B3AF1783.dita
Symbian3/SDK/Source/GUID-E3DD768F-752F-5414-9E9A-86E046806903.dita
Symbian3/SDK/Source/GUID-E3E19113-AAEE-55C2-8016-11D492123762.dita
Symbian3/SDK/Source/GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita
Symbian3/SDK/Source/GUID-E3F403EE-717B-5EA6-BC4E-6840097CAC10.dita
Symbian3/SDK/Source/GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita
Symbian3/SDK/Source/GUID-E41C4E77-C48B-548E-A2F5-14FA5CC68982.dita
Symbian3/SDK/Source/GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita
Symbian3/SDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275-master.png
Symbian3/SDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e312814_href.png
Symbian3/SDK/Source/GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A.dita
Symbian3/SDK/Source/GUID-E477BB63-FE72-4460-AB42-D82FFFCE4CF0_d0e43239_href.png
Symbian3/SDK/Source/GUID-E4874B22-474B-56D0-8A8A-C60411D3CBCB.dita
Symbian3/SDK/Source/GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e54256_href.png
Symbian3/SDK/Source/GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita
Symbian3/SDK/Source/GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E.dita
Symbian3/SDK/Source/GUID-E4A76562-E030-51A5-BD14-C734457443CA.dita
Symbian3/SDK/Source/GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita
Symbian3/SDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23-master.png
Symbian3/SDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e115649_href.png
Symbian3/SDK/Source/GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754.dita
Symbian3/SDK/Source/GUID-E4D47AED-5FCA-535B-9B8B-3267A4CD01C2.dita
Symbian3/SDK/Source/GUID-E4E656BF-E5F7-5125-AE88-60C3E9FCF0D2.dita
Symbian3/SDK/Source/GUID-E50EC0B4-A434-4C30-A1A9-1A976185FF28.dita
Symbian3/SDK/Source/GUID-E50FC36D-949A-42E0-97A6-64D336DF8057.dita
Symbian3/SDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7-master.png
Symbian3/SDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e178166_href.png
Symbian3/SDK/Source/GUID-E525E177-1FE5-5845-9BF8-B76D434B838D.dita
Symbian3/SDK/Source/GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita
Symbian3/SDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313-master.jpg
Symbian3/SDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e303164_href.jpg
Symbian3/SDK/Source/GUID-E530CBB9-C20D-5426-89AA-DC0281C05381.dita
Symbian3/SDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4-master.png
Symbian3/SDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e180021_href.png
Symbian3/SDK/Source/GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C.dita
Symbian3/SDK/Source/GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita
Symbian3/SDK/Source/GUID-E58FA02A-D721-42FC-941F-1D8E5BCD96BC_d0e53523_href.png
Symbian3/SDK/Source/GUID-E59A469E-A2B5-5DF0-BA7E-C50D4A38CCAA.dita
Symbian3/SDK/Source/GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita
Symbian3/SDK/Source/GUID-E5B5C3CA-B256-5B29-AB90-590676444C85.dita
Symbian3/SDK/Source/GUID-E5CDDA05-CD86-5C44-B9DA-3249D9C14396.dita
Symbian3/SDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B-master.png
Symbian3/SDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e48187_href.png
Symbian3/SDK/Source/GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2.dita
Symbian3/SDK/Source/GUID-E632CCD2-EE53-5546-9603-E9A01A65614A.dita
Symbian3/SDK/Source/GUID-E634E701-0DA2-572E-852B-8A1F88F05E5A.dita
Symbian3/SDK/Source/GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita
Symbian3/SDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794-master.png
Symbian3/SDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e64030_href.png
Symbian3/SDK/Source/GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F.dita
Symbian3/SDK/Source/GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205.dita
Symbian3/SDK/Source/GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e53450_href.png
Symbian3/SDK/Source/GUID-E64C06D7-B138-5BCC-A814-3F9E2C517404.dita
Symbian3/SDK/Source/GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5.dita
Symbian3/SDK/Source/GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF.dita
Symbian3/SDK/Source/GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA.dita
Symbian3/SDK/Source/GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita
Symbian3/SDK/Source/GUID-E6788741-EF34-57B7-B4D4-8AAC21B25774.dita
Symbian3/SDK/Source/GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita
Symbian3/SDK/Source/GUID-E6AD5C21-493F-59ED-9617-B348013BDCE5.dita
Symbian3/SDK/Source/GUID-E6B3E575-80E3-58E3-9950-E0A5F6798861.dita
Symbian3/SDK/Source/GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita
Symbian3/SDK/Source/GUID-E6D9F8CA-F293-5CE6-93C4-5FEC5EBCB2E9.dita
Symbian3/SDK/Source/GUID-E71D8907-236E-5948-9594-E14E34A31DC8.dita
Symbian3/SDK/Source/GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC.dita
Symbian3/SDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F-master.png
Symbian3/SDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e315155_href.png
Symbian3/SDK/Source/GUID-E72E2602-0492-58F9-A01F-D72BCC3FFFD5.dita
Symbian3/SDK/Source/GUID-E736B50D-F671-5CCB-A245-BA9791ADA395.dita
Symbian3/SDK/Source/GUID-E764B4A3-4CEE-461D-B555-C8969A62130A.dita
Symbian3/SDK/Source/GUID-E76DBFC7-E15E-5AB6-AE8D-72CA1808DBA2.dita
Symbian3/SDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB-master.png
Symbian3/SDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e317911_href.png
Symbian3/SDK/Source/GUID-E79D47D6-3FF2-5858-B092-29D39A1CA2B6.dita
Symbian3/SDK/Source/GUID-E7ACEC20-27C9-5124-A46E-2812A64E3E4B.dita
Symbian3/SDK/Source/GUID-E7BB0B0F-FC27-5428-81C0-1AB9CA426571.dita
Symbian3/SDK/Source/GUID-E7C41361-C0B9-5341-A864-B59770FB7C9B.dita
Symbian3/SDK/Source/GUID-E7D29464-05E1-5039-8A02-62CB27B5FF21.dita
Symbian3/SDK/Source/GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita
Symbian3/SDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6-master.png
Symbian3/SDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e102739_href.png
Symbian3/SDK/Source/GUID-E80AA33B-E5E0-5F4B-9A7F-65B357F7161C.dita
Symbian3/SDK/Source/GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC.dita
Symbian3/SDK/Source/GUID-E8266924-FA52-5171-BD73-423A46227A74.dita
Symbian3/SDK/Source/GUID-E82FABA9-9CCC-548F-99DB-EF2B9036B405.dita
Symbian3/SDK/Source/GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita
Symbian3/SDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD-master.png
Symbian3/SDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e241289_href.png
Symbian3/SDK/Source/GUID-E865E677-1219-500C-89CF-0A2835B91834.dita
Symbian3/SDK/Source/GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita
Symbian3/SDK/Source/GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9.dita
Symbian3/SDK/Source/GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita
Symbian3/SDK/Source/GUID-E8BD8844-3297-5848-BDF0-F6D595367145.dita
Symbian3/SDK/Source/GUID-E8BEE049-6814-543B-8A88-889E434A5D92.dita
Symbian3/SDK/Source/GUID-E8DF12FC-DCA9-57EA-833A-C1E8D6DAF405.dita
Symbian3/SDK/Source/GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita
Symbian3/SDK/Source/GUID-E8F8A9BE-4DCE-5CB9-BFC7-9BC00A7845F7.dita
Symbian3/SDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5-master.png
Symbian3/SDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e96211_href.png
Symbian3/SDK/Source/GUID-E92BEA67-CF92-5E0E-8B0D-F918178CE9E8.dita
Symbian3/SDK/Source/GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41.dita
Symbian3/SDK/Source/GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita
Symbian3/SDK/Source/GUID-E93E577A-0BDF-5472-B79F-DA60841C30CC.dita
Symbian3/SDK/Source/GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita
Symbian3/SDK/Source/GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita
Symbian3/SDK/Source/GUID-E97C2A7E-8E8F-58E6-99D4-288589385B44.dita
Symbian3/SDK/Source/GUID-E9B97347-D703-4758-A5CE-423A6CB4E474.dita
Symbian3/SDK/Source/GUID-E9C608C0-AC22-5267-BEC4-207C9758F968.dita
Symbian3/SDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A-master.png
Symbian3/SDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e386650_href.png
Symbian3/SDK/Source/GUID-E9C896AE-62B4-54DC-9958-913D19D14DC6.dita
Symbian3/SDK/Source/GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita
Symbian3/SDK/Source/GUID-E9E26499-1102-578E-93F6-A8E14181A25C.dita
Symbian3/SDK/Source/GUID-E9E2783E-44A0-5BA6-BBF3-D13C8D67B53E.dita
Symbian3/SDK/Source/GUID-E9E5556C-101B-48F2-B9AA-9DBEF5D85D5E.dita
Symbian3/SDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11-master.png
Symbian3/SDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e259139_href.png
Symbian3/SDK/Source/GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita
Symbian3/SDK/Source/GUID-E9FF94D2-AFFD-54A4-A6C2-00929BC70DB0.dita
Symbian3/SDK/Source/GUID-EA0A4F6E-CA82-59A4-ABCB-70632CDC2714.dita
Symbian3/SDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita
Symbian3/SDK/Source/GUID-EA15E87C-6A24-50B1-9FAC-9ACE8911ABD5.dita
Symbian3/SDK/Source/GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E.dita
Symbian3/SDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F-master.png
Symbian3/SDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e204127_href.png
Symbian3/SDK/Source/GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47.dita
Symbian3/SDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED-master.png
Symbian3/SDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e363824_href.png
Symbian3/SDK/Source/GUID-EA6965FB-5BB6-5110-9A16-B5403E1983D4.dita
Symbian3/SDK/Source/GUID-EA71F52C-DB4C-500D-9051-31BEF29E171D.dita
Symbian3/SDK/Source/GUID-EA7C8C95-A4D5-5E90-B0B8-C35D8C7423F1.dita
Symbian3/SDK/Source/GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita
Symbian3/SDK/Source/GUID-EA83150B-8076-5EA5-BE78-962FB450E848.dita
Symbian3/SDK/Source/GUID-EA98D77C-743B-5BA5-B131-A327B12A099C.dita
Symbian3/SDK/Source/GUID-EA9C4CF0-F39B-4FBB-924D-F78320E08F2C.dita
Symbian3/SDK/Source/GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita
Symbian3/SDK/Source/GUID-EAC5F9E8-9B7E-4A56-B6C0-E426637BBC3B.swf
Symbian3/SDK/Source/GUID-EAD6B365-DCB9-51AD-AF21-0B8262B468A2.dita
Symbian3/SDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9-master.png
Symbian3/SDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e162593_href.png
Symbian3/SDK/Source/GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita
Symbian3/SDK/Source/GUID-EAE7819B-45C6-579F-BC01-82CB70294153.dita
Symbian3/SDK/Source/GUID-EAEE54D0-4580-5BE7-AA16-4ABC216B4EB0.dita
Symbian3/SDK/Source/GUID-EAFDBBC4-0F65-5BA9-9967-EE8D50BBCCB6.dita
Symbian3/SDK/Source/GUID-EB15EC74-BCCE-591D-8308-210C22CDDDDA.dita
Symbian3/SDK/Source/GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita
Symbian3/SDK/Source/GUID-EB286BFD-6A84-5F12-8CC5-1A347685634A.dita
Symbian3/SDK/Source/GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita
Symbian3/SDK/Source/GUID-EB6A14CF-05DA-5EAD-AB68-F6511907DF05.dita
Symbian3/SDK/Source/GUID-EB76BA4B-D6A2-5651-A310-647E1D2CDEBC.dita
Symbian3/SDK/Source/GUID-EB82A2C8-EF92-5276-B503-687DEBF82EA4.dita
Symbian3/SDK/Source/GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita
Symbian3/SDK/Source/GUID-EBFE8B29-86AD-5785-8041-BCED2E90472E.dita
Symbian3/SDK/Source/GUID-EC21A1A2-FD5A-5764-A69A-18D74090BA92.dita
Symbian3/SDK/Source/GUID-EC33FF66-F15E-5316-8828-C6CFD57DB9E5.dita
Symbian3/SDK/Source/GUID-EC366CB0-AFC8-4501-867C-4FBD2CFE6235_d0e46963_href.png
Symbian3/SDK/Source/GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita
Symbian3/SDK/Source/GUID-EC4CE675-3EE7-58F7-A872-E72548B0C9A5.dita
Symbian3/SDK/Source/GUID-EC567597-093B-50C8-90FF-300A439A99A5.dita
Symbian3/SDK/Source/GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita
Symbian3/SDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461-master.png
Symbian3/SDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e255459_href.png
Symbian3/SDK/Source/GUID-EC861957-FF3A-5C3E-8713-145DD505996F.dita
Symbian3/SDK/Source/GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita
Symbian3/SDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087-master.png
Symbian3/SDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e155285_href.png
Symbian3/SDK/Source/GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita
Symbian3/SDK/Source/GUID-ECE93783-F571-51DA-AB92-EDDA8618A85C.dita
Symbian3/SDK/Source/GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C.dita
Symbian3/SDK/Source/GUID-ECF9E432-EA93-5284-B0E6-A1211289CBD8.dita
Symbian3/SDK/Source/GUID-ED109E7B-EFCA-59B9-92D9-EBFBC0F8BF21.dita
Symbian3/SDK/Source/GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita
Symbian3/SDK/Source/GUID-ED2D5BEA-AD2A-51CE-8CBC-8B5E33DD6356.dita
Symbian3/SDK/Source/GUID-ED2F48EA-8C31-5729-B312-E925B7EC3B24.dita
Symbian3/SDK/Source/GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita
Symbian3/SDK/Source/GUID-ED373BF9-A555-50E9-974C-82522206EFE6.dita
Symbian3/SDK/Source/GUID-ED6ED5E6-5A95-54F2-B5B2-6145A10F44BE.dita
Symbian3/SDK/Source/GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita
Symbian3/SDK/Source/GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita
Symbian3/SDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e48280_href.png
Symbian3/SDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e49094_href.png
Symbian3/SDK/Source/GUID-ED91B1F0-552D-46A1-97CD-7E1CD7AFE358-master.png
Symbian3/SDK/Source/GUID-ED91B1F0-552D-46A1-97CD-7E1CD7AFE358_d0e56354_href.png
Symbian3/SDK/Source/GUID-EDA831F7-7248-5C00-B6BE-B7F44097C9B6.dita
Symbian3/SDK/Source/GUID-EDAF2886-5296-53BD-B847-0E0D9B5FBF7E.dita
Symbian3/SDK/Source/GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita
Symbian3/SDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11-master.png
Symbian3/SDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e167069_href.png
Symbian3/SDK/Source/GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9.dita
Symbian3/SDK/Source/GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita
Symbian3/SDK/Source/GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita
Symbian3/SDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA-master.jpg
Symbian3/SDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e315113_href.jpg
Symbian3/SDK/Source/GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e47077_href.png
Symbian3/SDK/Source/GUID-EE79D90C-CC71-5C2B-8715-A9764A48F40D.dita
Symbian3/SDK/Source/GUID-EE8ABE8F-A25D-509E-8B0C-9101F61F998D.dita
Symbian3/SDK/Source/GUID-EEA5F7C6-8916-5FB9-8367-002F41A576D4.dita
Symbian3/SDK/Source/GUID-EEAB5A2F-AD1F-57B9-98AA-20DEEA23C3C2.dita
Symbian3/SDK/Source/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651.dita
Symbian3/SDK/Source/GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita
Symbian3/SDK/Source/GUID-EF4423F9-05A5-5DD5-BDB6-C7D8F7901396.dita
Symbian3/SDK/Source/GUID-EF49C43F-E9ED-5B4D-B9C4-376B9A4E3FA6.dita
Symbian3/SDK/Source/GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita
Symbian3/SDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C-master.png
Symbian3/SDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e119617_href.png
Symbian3/SDK/Source/GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita
Symbian3/SDK/Source/GUID-EF87F8F8-1521-5C50-85A9-94038A99021C.dita
Symbian3/SDK/Source/GUID-EFA822E0-BE80-5EB8-82E5-1659BDB1BDD9.dita
Symbian3/SDK/Source/GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C.dita
Symbian3/SDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A-master.png
Symbian3/SDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e63579_href.png
Symbian3/SDK/Source/GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita
Symbian3/SDK/Source/GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita
Symbian3/SDK/Source/GUID-F03A323A-2FCC-5247-909F-4AB2701B1C45.dita
Symbian3/SDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B-master.png
Symbian3/SDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e195024_href.png
Symbian3/SDK/Source/GUID-F066FEA3-94E7-5D79-B427-E247A2D1EBB8.dita
Symbian3/SDK/Source/GUID-F06A89D5-EBC5-59BF-BE92-CE5C5076C3C9.dita
Symbian3/SDK/Source/GUID-F07B3B53-0C4D-4472-8E00-34A4C8501C5E_d0e60397_href.png
Symbian3/SDK/Source/GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita
Symbian3/SDK/Source/GUID-F0923110-D5D9-56D7-8CBC-82CAE062BC1A.dita
Symbian3/SDK/Source/GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita
Symbian3/SDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C-master.png
Symbian3/SDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e46010_href.png
Symbian3/SDK/Source/GUID-F0D5C8DB-3AD0-53F1-8301-C0F69A4F13C1.dita
Symbian3/SDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC-master.png
Symbian3/SDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e405286_href.png
Symbian3/SDK/Source/GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita
Symbian3/SDK/Source/GUID-F13D4492-4E0C-5D7A-A30D-9E79F092CF72.dita
Symbian3/SDK/Source/GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita
Symbian3/SDK/Source/GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7.dita
Symbian3/SDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita
Symbian3/SDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520-master.jpg
Symbian3/SDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e362491_href.jpg
Symbian3/SDK/Source/GUID-F18D0E06-2FB8-5339-AF31-02CC7D5A8010.dita
Symbian3/SDK/Source/GUID-F1BDE1DB-2749-52F4-AC9B-74A5D9A32A67.dita
Symbian3/SDK/Source/GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita
Symbian3/SDK/Source/GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e48070_href.png
Symbian3/SDK/Source/GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita
Symbian3/SDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176-master.png
Symbian3/SDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e161979_href.png
Symbian3/SDK/Source/GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita
Symbian3/SDK/Source/GUID-F2289115-B1F0-595D-AA1C-3E01F08911CA.dita
Symbian3/SDK/Source/GUID-F2397B5A-0700-46D5-8E07-CBB9F769DA01.dita
Symbian3/SDK/Source/GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita
Symbian3/SDK/Source/GUID-F2489DE2-18E2-5C5B-A174-49B5B7A64A7C.dita
Symbian3/SDK/Source/GUID-F25862A3-51E5-581A-9CC9-964791781E69.dita
Symbian3/SDK/Source/GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita
Symbian3/SDK/Source/GUID-F27A92CB-1C02-562B-A93D-57675C53BFEB-master.png
Symbian3/SDK/Source/GUID-F27A92CB-1C02-562B-A93D-57675C53BFEB_d0e14771_href.png
Symbian3/SDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3-master.png
Symbian3/SDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e315964_href.png
Symbian3/SDK/Source/GUID-F2A793F1-A5B5-526B-B147-771D440B13A2.dita
Symbian3/SDK/Source/GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita
Symbian3/SDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1-master.png
Symbian3/SDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e102769_href.png
Symbian3/SDK/Source/GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita
Symbian3/SDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C-master.png
Symbian3/SDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e166448_href.png
Symbian3/SDK/Source/GUID-F3090A98-267F-5310-83F4-93FD5CB760D6.dita
Symbian3/SDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7-master.png
Symbian3/SDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e162576_href.png
Symbian3/SDK/Source/GUID-F3262DF6-39CA-4E96-AD0E-C1FFDE9B0A61.dita
Symbian3/SDK/Source/GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita
Symbian3/SDK/Source/GUID-F3406651-0B57-50FD-81CA-A3D4000D5625.dita
Symbian3/SDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62-master.png
Symbian3/SDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e188860_href.png
Symbian3/SDK/Source/GUID-F3520C6E-1B3A-5CB2-95F8-AB430D4BA327.dita
Symbian3/SDK/Source/GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita
Symbian3/SDK/Source/GUID-F370A917-6963-58F6-8876-160A1DC42040.dita
Symbian3/SDK/Source/GUID-F370FDA8-6DB7-531A-A057-B773F1729C46.dita
Symbian3/SDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2-master.png
Symbian3/SDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e195201_href.png
Symbian3/SDK/Source/GUID-F3CB6985-A9AA-4E01-B157-5AB8DDC7951B.dita
Symbian3/SDK/Source/GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita
Symbian3/SDK/Source/GUID-F4099885-55A0-5ACF-A73B-9C647B02B142.dita
Symbian3/SDK/Source/GUID-F40E34F4-5B8B-523E-82B6-7717D8FD26AB.dita
Symbian3/SDK/Source/GUID-F411736E-09FE-4F46-8185-DF013E950069.dita
Symbian3/SDK/Source/GUID-F4163874-3F97-506B-AC93-EA2321D3BEC1.dita
Symbian3/SDK/Source/GUID-F4320746-68DF-50B6-817A-24E46DFBF77B.dita
Symbian3/SDK/Source/GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita
Symbian3/SDK/Source/GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita
Symbian3/SDK/Source/GUID-F446E658-B717-5257-9C5C-442B07B19565.dita
Symbian3/SDK/Source/GUID-F45EA14E-F857-5D59-BFBA-E2F563287359.dita
Symbian3/SDK/Source/GUID-F46D5A5B-EC44-53B0-9A11-886735B28610.dita
Symbian3/SDK/Source/GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita
Symbian3/SDK/Source/GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita
Symbian3/SDK/Source/GUID-F48CC072-66A0-5DBA-99A2-2F3BABF83BEB.dita
Symbian3/SDK/Source/GUID-F49A5630-0BDE-5214-99F9-E4DAC9C5B548.dita
Symbian3/SDK/Source/GUID-F4B61436-5496-4913-A769-794318C6B964.dita
Symbian3/SDK/Source/GUID-F4BD69B6-008E-51DB-ABFF-1E17E10B053F.dita
Symbian3/SDK/Source/GUID-F4C3DDE1-F7D3-5256-BABD-34759DCA57BF.dita
Symbian3/SDK/Source/GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita
Symbian3/SDK/Source/GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita
Symbian3/SDK/Source/GUID-F50003D0-402A-59E1-8F6F-8C999DC81735.dita
Symbian3/SDK/Source/GUID-F51062B0-90BB-5659-9F23-2FF25116D78A.dita
Symbian3/SDK/Source/GUID-F532D96F-7CB0-5CC7-9382-0CF44F7C0234.dita
Symbian3/SDK/Source/GUID-F535B464-3125-549B-9130-E59B64C4B865.dita
Symbian3/SDK/Source/GUID-F575F364-4BCA-42C7-BE00-7B31D8B55AE1.dita
Symbian3/SDK/Source/GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita
Symbian3/SDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A-master.png
Symbian3/SDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e312976_href.png
Symbian3/SDK/Source/GUID-F5B0FE6A-6DE6-56B5-89A5-684CD2602B40.dita
Symbian3/SDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB-master.png
Symbian3/SDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e153891_href.png
Symbian3/SDK/Source/GUID-F5D49215-B34A-5FCC-A7E1-0AF3275694B3.dita
Symbian3/SDK/Source/GUID-F5DC1A03-6F07-5E60-B912-429DDC820875.dita
Symbian3/SDK/Source/GUID-F5F981E4-6910-5440-AE8E-2EFAB2D01EE9.dita
Symbian3/SDK/Source/GUID-F61D1710-2D52-5B9B-A25F-6DFA606DAC0F.dita
Symbian3/SDK/Source/GUID-F620A451-9135-5CFD-9F76-F02AE830E094.dita
Symbian3/SDK/Source/GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita
Symbian3/SDK/Source/GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita
Symbian3/SDK/Source/GUID-F6625E22-BFB2-5367-A1A8-916252999B78.dita
Symbian3/SDK/Source/GUID-F6780E5A-26DA-5453-B9BE-11039CFA4FFB.dita
Symbian3/SDK/Source/GUID-F67F8930-7F8A-5497-AAD9-D7789B437478.dita
Symbian3/SDK/Source/GUID-F681C857-086F-527A-9946-A91560601658-master.jpg
Symbian3/SDK/Source/GUID-F681C857-086F-527A-9946-A91560601658_d0e377073_href.jpg
Symbian3/SDK/Source/GUID-F684F363-B361-5868-9195-41305428AB2D.dita
Symbian3/SDK/Source/GUID-F686965A-13E5-5C0A-AED1-55EC91C79433.dita
Symbian3/SDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F-master.png
Symbian3/SDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e304892_href.png
Symbian3/SDK/Source/GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E.dita
Symbian3/SDK/Source/GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita
Symbian3/SDK/Source/GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita
Symbian3/SDK/Source/GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita
Symbian3/SDK/Source/GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB.dita
Symbian3/SDK/Source/GUID-F6C2C8D4-D3B0-5441-BF2D-6F42489198D6.dita
Symbian3/SDK/Source/GUID-F6CF2920-9095-568B-B332-D5F4A05BD23A.dita
Symbian3/SDK/Source/GUID-F6F9B2AC-A47E-5B0B-A1E2-EE2B31B59F2A.dita
Symbian3/SDK/Source/GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita
Symbian3/SDK/Source/GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F.dita
Symbian3/SDK/Source/GUID-F77578A2-3B11-5C29-9D00-43B971561876.dita
Symbian3/SDK/Source/GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita
Symbian3/SDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793-master.png
Symbian3/SDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e150867_href.png
Symbian3/SDK/Source/GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita
Symbian3/SDK/Source/GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita
Symbian3/SDK/Source/GUID-F79EE68F-FFC3-541E-AE3A-D7203034DA43.dita
Symbian3/SDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E-master.png
Symbian3/SDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e65781_href.png
Symbian3/SDK/Source/GUID-F7C9824F-0598-56A1-AC2B-24904E997588.dita
Symbian3/SDK/Source/GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita
Symbian3/SDK/Source/GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita
Symbian3/SDK/Source/GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita
Symbian3/SDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E-master.png
Symbian3/SDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e178556_href.png
Symbian3/SDK/Source/GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita
Symbian3/SDK/Source/GUID-F854D45A-A8CD-5B9F-9A59-C30A87F0955A.dita
Symbian3/SDK/Source/GUID-F86CFD79-88B1-55E0-AF81-4666D97B7AF5.dita
Symbian3/SDK/Source/GUID-F87A1381-3E71-5723-B8B6-3F4E0FF368CE.dita
Symbian3/SDK/Source/GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE.dita
Symbian3/SDK/Source/GUID-F89F92BA-763D-5531-BF74-C6BF36A589CD.dita
Symbian3/SDK/Source/GUID-F8A26275-883A-5299-9C37-9DDCC2F62108.dita
Symbian3/SDK/Source/GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e46254_href.png
Symbian3/SDK/Source/GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e52322_href.png
Symbian3/SDK/Source/GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e53932_href.png
Symbian3/SDK/Source/GUID-F8C8CE42-E7C9-5AFC-86BC-B78F677F1B05.dita
Symbian3/SDK/Source/GUID-F8D12BC4-82C6-59CD-93C9-506FF872C622.dita
Symbian3/SDK/Source/GUID-F9184A82-A467-5022-B02F-2FDF52258618.dita
Symbian3/SDK/Source/GUID-F9455FE8-5247-58D5-ACEF-52753B88444F.dita
Symbian3/SDK/Source/GUID-F9471A5D-D239-5B24-A116-2B5B2C1F5C61.dita
Symbian3/SDK/Source/GUID-F94CEC6D-C602-550F-9B12-856493F3C509.dita
Symbian3/SDK/Source/GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita
Symbian3/SDK/Source/GUID-F9605837-2209-500D-AB62-48A433489C5E.dita
Symbian3/SDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC-master.png
Symbian3/SDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e63799_href.png
Symbian3/SDK/Source/GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita
Symbian3/SDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2-master.png
Symbian3/SDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e400785_href.png
Symbian3/SDK/Source/GUID-F9C12192-EDA8-4220-87DF-E7F1EA50CDEF.dita
Symbian3/SDK/Source/GUID-F9E10A82-88E9-57AA-AFEE-3C1A21BF05BC.dita
Symbian3/SDK/Source/GUID-F9F45DE7-6688-5C31-90F0-0BEA72E74034.dita
Symbian3/SDK/Source/GUID-F9F53050-AAFA-4685-8C62-033E585F061B.dita
Symbian3/SDK/Source/GUID-F9FCE3FC-42E4-5E9E-9AFC-A9B02E2612A2.dita
Symbian3/SDK/Source/GUID-FA120B3F-4EC4-5A0A-8A36-D5CD032CF1B0.dita
Symbian3/SDK/Source/GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita
Symbian3/SDK/Source/GUID-FA18838A-F0C6-5241-8913-BFB46571D908.dita
Symbian3/SDK/Source/GUID-FA6E3270-C20A-5B05-9FFC-F3D4D8B35999.dita
Symbian3/SDK/Source/GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita
Symbian3/SDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83-master.png
Symbian3/SDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e315036_href.png
Symbian3/SDK/Source/GUID-FACE863C-8667-5726-B668-C39AA0FBFC68.dita
Symbian3/SDK/Source/GUID-FAE3F35C-04C1-5CF4-8090-9DF58AD1C02A.dita
Symbian3/SDK/Source/GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita
Symbian3/SDK/Source/GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C.dita
Symbian3/SDK/Source/GUID-FB185094-9868-5CBB-9CDE-51D7AB029450.dita
Symbian3/SDK/Source/GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita
Symbian3/SDK/Source/GUID-FB2E1BFB-A06C-58D8-B175-1E7B10BCCB72.dita
Symbian3/SDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6-master.png
Symbian3/SDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e154935_href.png
Symbian3/SDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0-master.png
Symbian3/SDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e189756_href.png
Symbian3/SDK/Source/GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita
Symbian3/SDK/Source/GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita
Symbian3/SDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF-master.png
Symbian3/SDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e62848_href.png
Symbian3/SDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505-master.jpg
Symbian3/SDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e304106_href.jpg
Symbian3/SDK/Source/GUID-FBCBF8A0-7922-5881-A1C5-5DB41630E75A.dita
Symbian3/SDK/Source/GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita
Symbian3/SDK/Source/GUID-FC043A7B-8990-52C8-85F5-10FF1B8EA36D.dita
Symbian3/SDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590-master.png
Symbian3/SDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e315048_href.png
Symbian3/SDK/Source/GUID-FC24C65C-0DCB-5E07-9A68-9001D34664DD.dita
Symbian3/SDK/Source/GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2.dita
Symbian3/SDK/Source/GUID-FC46AA09-3E04-426B-BAC0-A992EA1AE0B6.dita
Symbian3/SDK/Source/GUID-FC639517-F138-5E84-B57A-6347F5A47B88.dita
Symbian3/SDK/Source/GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C.dita
Symbian3/SDK/Source/GUID-FC735256-6CB5-5EED-8E7D-42EFA039E6FD.dita
Symbian3/SDK/Source/GUID-FC7F8CFE-F9AD-4442-9289-CCEFEC62DF68.dita
Symbian3/SDK/Source/GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita
Symbian3/SDK/Source/GUID-FCBEE38E-FA6D-5C09-8B17-F18EF3E2E826.dita
Symbian3/SDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD-master.png
Symbian3/SDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e286618_href.png
Symbian3/SDK/Source/GUID-FCCE497D-1DA8-544B-A973-831E97DB5569.dita
Symbian3/SDK/Source/GUID-FCE138BF-A471-5864-AE4C-8D89EF5F2BB9.dita
Symbian3/SDK/Source/GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E.dita
Symbian3/SDK/Source/GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita
Symbian3/SDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244-master.png
Symbian3/SDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e190901_href.png
Symbian3/SDK/Source/GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita
Symbian3/SDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389-master.png
Symbian3/SDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e362142_href.png
Symbian3/SDK/Source/GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e49771_href.png
Symbian3/SDK/Source/GUID-FD273259-2282-5353-847D-853D483C37BC.dita
Symbian3/SDK/Source/GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita
Symbian3/SDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC-master.png
Symbian3/SDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e334925_href.png
Symbian3/SDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e46063_href.png
Symbian3/SDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e50171_href.png
Symbian3/SDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e52073_href.png
Symbian3/SDK/Source/GUID-FD530B98-B17D-54CD-A86E-B6FFF701D19C.dita
Symbian3/SDK/Source/GUID-FD5C6057-C6D3-5C1A-888C-7B7A3C89CD67.dita
Symbian3/SDK/Source/GUID-FD622CE6-42D0-534D-9D0E-7AED5453F35A.dita
Symbian3/SDK/Source/GUID-FD733414-DDB2-5748-A193-6758FADEFEC1.dita
Symbian3/SDK/Source/GUID-FD85921E-AC9F-481F-8A58-0D03D56661C0_d0e47154_href.png
Symbian3/SDK/Source/GUID-FD8AD44E-271D-514C-A52A-513E7C8AD207.dita
Symbian3/SDK/Source/GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita
Symbian3/SDK/Source/GUID-FDD42A61-9FFE-53F5-A0B3-D8087270C7F6.dita
Symbian3/SDK/Source/GUID-FDD68915-5B6F-4091-A99A-64F91D508B3E.dita
Symbian3/SDK/Source/GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1.dita
Symbian3/SDK/Source/GUID-FDF3546D-1A16-5F71-B9E4-8DA0F02CC7A3.dita
Symbian3/SDK/Source/GUID-FE138F1A-1F52-5E9A-8EB2-5A8945A9CF30.dita
Symbian3/SDK/Source/GUID-FE14D954-4712-5DCE-998E-A39D79500ABF.dita
Symbian3/SDK/Source/GUID-FE2E8E58-6656-534E-A052-095AF559A482.dita
Symbian3/SDK/Source/GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita
Symbian3/SDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196-master.png
Symbian3/SDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e162673_href.png
Symbian3/SDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518-master.png
Symbian3/SDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e164328_href.png
Symbian3/SDK/Source/GUID-FE76E172-6B94-47CC-9551-6DD62C04368D.dita
Symbian3/SDK/Source/GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita
Symbian3/SDK/Source/GUID-FE888721-C479-5D8A-810F-1A79575A1D58.dita
Symbian3/SDK/Source/GUID-FE89E799-4F19-4C22-96B7-8006EB55812E_d0e41980_href.png
Symbian3/SDK/Source/GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita
Symbian3/SDK/Source/GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita
Symbian3/SDK/Source/GUID-FE922294-380D-447D-AC46-A46EFAD79168.dita
Symbian3/SDK/Source/GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita
Symbian3/SDK/Source/GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita
Symbian3/SDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813-master.png
Symbian3/SDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e164353_href.png
Symbian3/SDK/Source/GUID-FF0330E8-81CA-52F3-AD60-89360B74B25D.dita
Symbian3/SDK/Source/GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438.dita
Symbian3/SDK/Source/GUID-FF28B015-DFC5-5656-9066-FBCCBA2818AF.dita
Symbian3/SDK/Source/GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A.dita
Symbian3/SDK/Source/GUID-FF39192E-9C93-593F-8F47-DB18DB876F6F.dita
Symbian3/SDK/Source/GUID-FF410602-8408-555E-B918-C0CF484535E7.dita
Symbian3/SDK/Source/GUID-FF48E99A-551E-58E2-84C4-1985B557CCA4.dita
Symbian3/SDK/Source/GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita
Symbian3/SDK/Source/GUID-FF6846AA-7E8B-40DC-B6EC-32A8550F4942.dita
Symbian3/SDK/Source/GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita
Symbian3/SDK/Source/GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita
Symbian3/SDK/Source/GUID-FF82B80D-18CA-5333-83EB-3AB94F696016.dita
Symbian3/SDK/Source/GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita
Symbian3/SDK/Source/GUID-FFA5956E-0632-42F5-A2F9-0503888EF72B.dita
Symbian3/SDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE-master.png
Symbian3/SDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e66617_href.png
Symbian3/SDK/Source/GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1.dita
Symbian3/SDK/Source/GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2.dita
Symbian3/SDK/Source/GUID-FFE69A34-2FF8-5FC9-A295-5D3C05A2D7D7.dita
Symbian3/SDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048-master.png
Symbian3/SDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e318604_href.png
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/LICENSE.txt	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,224 @@
+
+    Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+*1. DEFINITIONS*
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the Program
+under their own license agreement, and (ii) are not derivative works of
+the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+*2. GRANT OF RIGHTS*
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent license
+under Licensed Patents to make, use, sell, offer to sell, import and
+otherwise transfer the Contribution of such Contributor, if any, in
+source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the
+Contribution is added by the Contributor, such addition of the
+Contribution causes such combination to be covered by the Licensed
+Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+*3. REQUIREMENTS*
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or conditions
+of title and non-infringement, and implied warranties or conditions of
+merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+*4. COMMERCIAL DISTRIBUTION*
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program, the
+Contributor who includes the Program in a commercial product offering
+should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in
+a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the
+Program in a commercial product offering. The obligations in this
+section do not apply to any claims or Losses relating to any actual or
+alleged intellectual property infringement. In order to qualify, an
+Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial
+Contributor to control, and cooperate with the Commercial Contributor
+in, the defense and any related settlement negotiations. The Indemnified
+Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+*5. NO WARRANTY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
+ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES
+OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR
+A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program
+and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program
+errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+*6. DISCLAIMER OF LIABILITY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+*7. GENERAL*
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including
+a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails
+to comply with any of the material terms or conditions of this Agreement
+and does not cure such failure in a reasonable period of time after
+becoming aware of such noncompliance. If all Recipient's rights under
+this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's
+obligations under this Agreement and any licenses granted by Recipient
+relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and may
+only be modified in the following manner. The Agreement Steward reserves
+the right to publish new versions (including revisions) of this
+Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the
+initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is
+published, Contributor may elect to distribute the Program (including
+its Contributions) under the new version. Except as expressly stated in
+Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
+to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in
+the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than
+one year after the cause of action arose. Each party waives its rights
+to a jury trial in any resulting litigation.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00025EAD-C4B6-5408-96A3-FFDBBBDC7CAB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-00025EAD-C4B6-5408-96A3-FFDBBBDC7CAB"><title>How to read and write a file</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Reading transfers data from a file to a descriptor, and writing transfers data from a descriptor to a file. </p> <p>Use <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-94CCC141-8E26-3FA3-A222-D9A658AEA8A9"><apiname>RFile::Read()</apiname></xref> to read, and <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-325997F1-3252-358E-B278-44D3A5418FAC"><apiname>RFile::Write()</apiname></xref> to write. </p> <codeblock id="GUID-28737C7A-70BA-5AA8-A4DC-0075A59CCB59" xml:space="preserve">// Open file1
+_LIT(KMyFile,"c:\\documents\\file1");
+RFile myFile;
+User::LeaveIfError(myFile.Open(fs,KMyFile,EFileShareExclusive|EFileWrite
+));
+
+// Write to current file position: start of file
+_LIT8(KWriteBuf,"write data");
+myFile.Write(KWriteBuf);
+
+// Read from position 0: start of file
+TBuf8&lt;6&gt; readBuf1;
+myFile.Read(0,readBuf1); // readBuf1 is now "write "
+
+// Read from current position
+TBuf8&lt;4&gt; readBuf2;
+myFile.Read(readBuf2);      // readBuf2 is now "data"
+
+</codeblock> <section><title>Notes</title> <ul><li id="GUID-3F823A12-E192-5381-B8CC-FF377B1CEC0D"><p>In all cases, the file data is treated as binary and byte descriptors are used (TDes8, TDesC8). Thus, file operations are not dependent on the Unicode/non-Unicode build variant. </p> </li> <li id="GUID-0A6255A4-12EC-5F60-9071-E001EA137585"><p>There are several variants of both <codeph>Read()</codeph> and <codeph>Write()</codeph>. The basic <codeph>Read(TDes8&amp; aDes)</codeph> and <codeph>Write(const TDesC8&amp; aDes)</codeph> are supplemented by variants allowing the descriptor length to be overridden, or the seek position of the first byte to be specified, or asynchronous completion, or any combination. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293" xml:lang="en"><title>Message
+Queue Overview</title><shortdesc>This topic describes the message queue overview.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A message queue is a mechanism for passing data: </p>
+<ul>
+<li id="GUID-B4740898-D06D-5B19-A3AD-E8FE3B72C397"><p>between threads within
+a process </p> </li>
+<li id="GUID-F9F8E8FF-02F7-5E11-BC57-61FFE1122DB1"><p>between threads that
+run in separate processes. </p> </li>
+</ul>
+<p>The mechanism provides a way to send data (messages) to an interested party
+without needing to know whether anyone is listening nor needing to know the
+identity of a recipient. </p>
+<p>A message is an object, usually an instance of a class, that is placed
+into a queue for delivery to recipients. A queue is normally created to deal
+with messages of a given type. This means that a queue is created to deal
+with messages of a defined (fixed) length. The size of a queue, i.e. the maximum
+number of messages, or slots, it can contain is defined and fixed when the
+queue is created. The size of message for which a queue is created, and the
+size of the queue is arbitrary, being limited only by system resources. </p>
+<p>A single queue can be shared by many readers and writers. Several threads
+may be reading from and writing to the same message queue, but only one thread
+can access the queue at a time. If multiple clients attempt to read from the
+message queue a panic will be raised. </p>
+<p>A message queue is represented by a <codeph>DMsgQueue</codeph> kernel side
+object, to which the reader and the writer can open a handle, a <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref> object.
+A message queue is a reference counted object, being derived from <codeph>CObject</codeph>,
+which means that it is not persistent; it is deleted when the last handle
+to it is closed. The queue itself is simply a block of memory divided into
+slots, managed by the <codeph>DMsgQueue</codeph> object. </p>
+<fig id="GUID-BDA4A786-57B2-529D-BDFB-72D2B2B30670">
+<image href="GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e218128_href.png" placement="inline"/>
+</fig>
+<section id="GUID-1D2EF848-8068-56B9-850B-56AE88E192DE"><title>Handle to a
+message queue</title> <p>A message queue is created, opened, written to and
+read from through a message queue handle, an <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref> object.
+This is a templated class, where the template parameter defines the message
+type. </p> <p> <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref> is derived from <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref>,
+which together form a thin template class/base class pair. <codeph>RMsgQueueBase</codeph> provides
+the implementation, while <codeph>RMsgQueue</codeph> provides type safety.
+An <codeph>RMsgQueueBase</codeph> object is a valid message queue handle,
+but does not offer the type safety that <codeph>RMsgQueue</codeph> does. </p> <fig id="GUID-B9685695-0E07-5CC1-AFED-0ABF4DC93ACB">
+<image href="GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e218167_href.png" placement="inline"/>
+</fig> <p>Message queues are used for one-way, one to one communications only.
+The message queue is therefore unicast. If there are multiple readers of the
+message queue only one will receive the message. </p> </section>
+<section id="GUID-910216A9-EE2D-5C45-8AB3-E1CBEF3B7514"><title>Visibility
+of a message queue</title> <p>A message queue can be: </p> <ul>
+<li id="GUID-A773AF82-EACC-57DB-9A6F-31F74A9EDF94"><p>named and be visible
+to all processes - a global queue </p> </li>
+<li id="GUID-9EFB0165-798F-5B5F-8537-199C9C16CE33"><p>local to the current
+process, i.e. not visible to any other process - a local queue </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0010EB39-8C23-5453-BE96-4EFC520B6F81.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0010EB39-8C23-5453-BE96-4EFC520B6F81" xml:lang="en"><title>Unified Certificate Store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Unified Certificate Store provides the means by which applications can access the certificates in the device.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00113601-193D-5214-9DFB-1C67456B7039.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-00113601-193D-5214-9DFB-1C67456B7039" xml:lang="en"><title>About the Symbian
+Developer Library</title><shortdesc>The following sections are about the Symbian Developer Library
+- what it contains, who should read it, and how it is organised.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-001F6216-48AE-57D4-8985-65CF77B26F19.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-001F6216-48AE-57D4-8985-65CF77B26F19" xml:lang="en"><title>Character
+Encoding and Conversion Plug-ins Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Charconv Plug-ins component contains plug-in converters for Charconv. </p>
+<p>The character converters built into the Charconv Framework are used for
+most languages. However the range of languages can be increased by adding
+additional Character Encoding and Conversion plug-ins. Symbian provides a
+number of plug-ins. Device creators may also create plug-ins. </p>
+<section id="GUID-AF6B01E0-09FA-4920-98F6-EE861C40F844"><title>Architecture </title> <p>The Charconv Plug-ins component is
+part of the Character Conversion (Charconv) Framework collection. It contains
+ECom plug-ins which implement the <codeph>CCharacterSetConverterPluginInterface</codeph> interface
+for use with the Charconv Framework. Each <xref href="GUID-93491DAE-4D2D-5F5F-97E7-91B265E9951E.dita">library</xref> in
+the Plug-ins component is a plug-in converter for a specific character encoding. </p> </section>
+<section id="GUID-74C42671-A14C-5E38-8618-06CD8AFB5C70"><title>Libraries (plug-in
+converters)</title> <p>The following table lists the plug-in converters and
+the target scripts. Each converter is identified by a Unique Identifier (UID).
+The UIDs are defined in the <filepath>charconv.h</filepath> header file. </p> <table id="GUID-D20EFCE4-C157-57FE-B18B-1C06C3B89356">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Converter Name</b>  </p> </entry>
+<entry><p> <b>Target script</b>  </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-6 </p> </entry>
+<entry><p>Arabic </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-13 </p> </entry>
+<entry><p>Baltic </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-14 </p> </entry>
+<entry><p>Celtic </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-2 </p> </entry>
+<entry><p>Central European </p> </entry>
+</row>
+<row>
+<entry><p>GB2312 </p> </entry>
+<entry><p>Chinese (Simplified) </p> </entry>
+</row>
+<row>
+<entry><p>GBK </p> </entry>
+<entry><p>Chinese (Simplified) </p> </entry>
+</row>
+<row>
+<entry><p>HZ </p> </entry>
+<entry><p>Chinese (Simplified) </p> </entry>
+</row>
+<row>
+<entry><p>GB18030</p></entry>
+<entry><p>Chinese (Simplified) GB18030</p></entry>
+</row>
+<row>
+<entry><p>Big5 </p> </entry>
+<entry><p>Chinese (Traditional) </p> </entry>
+</row>
+<row>
+<entry><p>GB12345 </p> </entry>
+<entry><p>Chinese (Traditional) </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-5 </p> </entry>
+<entry><p>Cyrillic </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-7 </p> </entry>
+<entry><p>Greek </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-8 </p> </entry>
+<entry><p>Hebrew </p> </entry>
+</row>
+<row>
+<entry><p>eucJP </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>ISO-2022-JP </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>ISO-2022-JP1 </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>JIS </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>JIS X 0201 </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>JIS X 0208 </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>JIS X 0212 </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>J5 DoCoMo </p> </entry>
+<entry><p>Japanese encoding for DoCoMo </p> </entry>
+</row>
+<row>
+<entry><p>Shift-JIS DoCoMo </p> </entry>
+<entry><p>Japanese encoding for DoCoMo </p> </entry>
+</row>
+<row>
+<entry><p>J5 KDDI </p> </entry>
+<entry><p>Japanese encoding for KDDI </p> </entry>
+</row>
+<row>
+<entry><p>Shift-JIS KDDI </p> </entry>
+<entry><p>Japanese encoding for KDDI </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-10 </p> </entry>
+<entry><p>Nordic </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-4 </p> </entry>
+<entry><p>Northern European </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-3 </p> </entry>
+<entry><p>South European </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-9 </p> </entry>
+<entry><p>Turkish </p> </entry>
+</row>
+<row>
+<entry><p>Default GSM7 Turkish Single </p> </entry>
+<entry><p>Turkish </p> </entry>
+</row>
+<row>
+<entry><p>Turkish Locking GSM7 Extension </p> </entry>
+<entry><p>Turkish </p> </entry>
+</row>
+<row>
+<entry><p>Turkish Locking Single </p> </entry>
+<entry><p>Turkish </p> </entry>
+</row>
+<row>
+<entry><p>Default GSM 7bit &amp; Portuguese Single Shift </p> </entry>
+<entry><p>Portuguese </p> </entry>
+</row>
+<row>
+<entry><p>Portuguese Locking Shift &amp; GSM 7Bit Extension </p> </entry>
+<entry><p>Portuguese </p> </entry>
+</row>
+<row>
+<entry><p>Portuguese Locking Shift &amp; Single Shift </p> </entry>
+<entry><p>Portuguese </p> </entry>
+</row>
+<row>
+<entry><p>Default GSM 7 bit &amp; Spanish Single Shift </p> </entry>
+<entry><p>Spanish </p> </entry>
+</row>
+<row>
+<entry><p>Extended SMS </p> </entry>
+<entry><p>Eastern European </p> </entry>
+</row>
+<row>
+<entry><p>UCS-2 </p> </entry>
+<entry><p>Universal (Unicode) </p> </entry>
+</row>
+<row>
+<entry><p>ISO 8859-15 </p> </entry>
+<entry><p>Western European / US </p> </entry>
+</row>
+<row>
+<entry><p>CP 850 </p> </entry>
+<entry><p>Western European / US </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-08151014-5360-4016-981C-26D0C3667B25"><title>Typical uses</title> <p>Charconv Plug-ins can be used to do
+character conversion for target scripts. Each plug-in converter converts text
+between a foreign encoding and Unicode. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00363030-AAE2-5231-8407-AC609DA0F496.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-00363030-AAE2-5231-8407-AC609DA0F496" xml:lang="en"><title>Backup
+and Restore on Scheduled Tasks in Persistent Schedules</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When scheduling tasks in persistent schedules, special consideration must
+be given to the effects of backup and restore operations. Persistent schedules
+and tasks associated with them are backed up during a backup operation. This
+results in the storage of their status at the time of backup. When the data
+is restored on the same phone or another phone, the persistent scheduled tasks
+are recreated. This results in the overwrite of any existing persistent schedule
+and task on the phone. </p>
+<p> <b>Note:</b> Transient schedule and tasks are affected by the backup or
+restore process. </p>
+<section><title>Impact of backup and restore on persistent schedules and tasks</title> <p>State
+information associated with a phone, such as date, time and conditions are
+not backed up with schedules and tasks, during a phone backup. The date or
+time of a phone at the time of a backup is always likely to be different from
+the date or time of the target phone during restore. The conditions that are
+based on <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> values that indicate the various states
+of a phone might also be different between the time of backup and the time
+of restore. One example is the network status, which may be unavailable at
+the time of backup, but available at the time of restore. </p> <p><b>Possible
+problems</b> </p> <p>When a task is scheduled in a persistent schedule, its
+execution depends on a specific time or condition to become due. If the phone
+is backed up before the schedule is due, the schedule information is also
+part of the backup. Later, when the time or condition is satisfied, the task
+is executed on the phone. But, when a phone restore is done after the task
+is executed on the phone, the schedule may be due again and the task may get
+executed, if the same time or condition is satisfied again. </p> <p>For example,
+assume that a condition-based task is created to send an SMS when the network
+is available. In addition, assume that when this task is created the network
+is unavailable and a phone backup is taken. After the backup, the phone network
+may become available and the SMS may be sent. In this scenario, when a phone
+restore is done the SMS may be sent again when the network is available, which
+can result in additional SMS costs. </p> <p><b>Recommended alternatives</b> </p> <p>The
+non-repeatable nature of the tasks cannot be determined by the task scheduler
+automatically, and there is no mechanism for setting per-schedule backup options.
+For this reason, clients that create non-repeatable tasks must be aware of
+backup and restore implications and consider this fact in their designs. </p> <p>Clients
+can use transient schedules for non-repeatable tasks, which eliminates this
+problem because transient schedules are not backed up or restored. If the
+use of a persistent schedule is necessary, clients can choose to become backup-aware
+by registering for notifications through <xref href="GUID-DC57CA2E-0EDF-3AF2-BC65-50D71665333B.dita"><apiname>CBaBackupSessionWrapper</apiname></xref> or
+using the <xref href="GUID-0FE60A65-6CB6-50AB-B85F-2B60FE96ECFE.dita">Secure Backup
+Engine</xref> APIs, and taking appropriate actions. These actions might be
+to delete the non-repeatable task before backup or after restore, or rescheduling
+it after restore to a different time for time-based schedules. </p> <p> <b>Note:</b> Any
+schedule that expires or becomes ready to execute when a backup or restore
+is in progress is delayed, and is only executed when the backup or restore
+process is completed. </p> </section>
+</conbody><related-links>
+<link href="GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC.dita"><linktext>Task Scheduler
+Overview</linktext></link>
+<link href="GUID-74C1C345-823C-5CD5-8FC5-214A55734E94.dita"><linktext>Developing
+Programs with Task Scheduling Capabilities</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00552575-AB10-4CB3-A37B-D83AE5975811.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-00552575-AB10-4CB3-A37B-D83AE5975811" xml:lang="en"><title>HTTP
+session ID</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>HTTP session ID is an optional non-negative integer which is attached to
+the session and any sockets it creates. The session ID is set on sockets by
+using <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-0DD7A667-7043-3D6B-A086-32DD222C199B"><apiname>RSocket::SetOpt()</apiname></xref>. </p>
+<p>With this session ID, clients can specify an integer ID for an HTTP session,
+which is assigned to subsequent sockets. An ID that is set applies to subsequent
+socket connections. </p>
+<p>HTTP session ID can be accessed using a Flow hook implementing the <codeph>SetFlowOption()</codeph> method,
+which is called whenever <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-0DD7A667-7043-3D6B-A086-32DD222C199B"><apiname>RSocket::SetOpt()</apiname></xref> is called. The
+Flow hook helps determine if a socket came from a specific session. </p>
+<p>The session ID is set when the socket is created and is not changed. To
+find the session ID of a socket, the flow object must look for Set Option
+commands that request setting session ID. The ID that is set can be saved
+in the Flow hook object, and used later when needed. This can be done using
+an <codeph>iSessionId</codeph> variable to hold the value, as shown in the
+following example: </p>
+<codeblock id="GUID-11827E76-ECD4-52E7-89B0-0152A4CF5A47" xml:space="preserve">#include &lt;HTTPSocketConstants.h&gt; // option consts defined here.... 
+class CMip4Protocol : public CIp6Hook 
+{ 
+public: 
+... 
+virtual TInt SetFlowOption(TUint aLevel, TUint aName, const TDesC8 &amp;aOption, CFlowContext &amp;aFlow); 
+private: 
+...
+TInt iSessionId; // session ID is stored here. Should be initialized to KErrNotFound
+};</codeblock>
+<p>The HTTP session ID, <codeph>HTTP::ESessionId</codeph>, when set, is accessed
+using the session’s connection info object. For example: </p>
+<codeblock id="GUID-E46A1152-E4CC-5FFE-8686-68605C6D4909" xml:space="preserve">RHTTPSession session;
+...
+RHTTPConnectionInfo ConnectionInfo = session.ConnectionInfo();
+</codeblock>
+<p>To access the value, <codeph>RString</codeph> must first be extracted from
+the string pool. For example: </p>
+<codeblock id="GUID-C833CEEC-A8E8-5687-8F47-C1836FCD0933" xml:space="preserve">RStringF sessionId = session.StringPool().StringF(HTTP::ESessionId, RHTTPSession::GetTable());
+sessionId.Close();</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631" xml:lang="en"><title>Calendar Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-006C503D-1E52-450D-A4DA-8C19B141E09F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-006C503D-1E52-450D-A4DA-8C19B141E09F" xml:lang="en"><title>Introduction
+to Intermixing C and C++</title><shortdesc>When porting an open source application or any C (or C++) applications
+on top of Symbian/S60 using P.I.P.S., the developer will come across situations
+where C and C++ (and Symbian C++ as well) codes will be used together. The
+open source community implements a vast number of libraries that export C
+APIs to the user of such libraries.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-6-1-10-1-1-5-1-3-1-7-1-4-1-4-1-3-1">       <title>When
+and why to use C linkage</title>       <p>While porting such applications,
+if developers have to intermix C and C++ code, they then have to depend on
+C++ language features like extern "C" for giving C linkage to some set of
+APIs. This is required because C and C++ compilers handle function prototype
+in a different way. C++ compilers use name mangling, (or name decoration)
+to generate unique names for identifiers in a program. It is because of this
+technique, in C++, that it is possible to overload any functions (this requires
+that all the overloaded functions should have a different argument list).
+The C++ mangled name for any identifier contains all the necessary information
+that may be needed by the linker, such as linkage type, scope, calling convention,
+and others.</p><p>All identifiers (function names or variable names) declared
+or defined in C++ source or headers are subject to name mangling. When it
+comes to C, however, there is nothing called name mangling or overloading.
+It applies when the developer tries to use C APIs by including corresponding
+headers. To avoid name mangling, the developer should mention explicitly that
+those APIs are C APIs, by using the extern "C" keyword.  </p>     </section>
+<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-6-1-10-1-1-5-1-3-1-7-1-4-1-4-1-3-2">       <title>Syntax
+of extern C</title>       <p>The syntax of extern "C" is shown below: </p><codeblock xml:space="preserve">extern "C" declaration ;
+</codeblock><p>The declaration (or definition) that immediately follows extern
+"C" has the C linkage. </p><codeblock xml:space="preserve">extern "C" { 
+   declaration ; 
+   declaration ; 
+   ... 
+}</codeblock><p>Everything between the curly braces has C linkage, unless
+declared otherwise. </p>     </section>
+<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-6-1-10-1-1-5-1-3-1-7-1-4-1-4-1-3-3">       <title>How
+to use extern C</title>       <p>While writing header files with C functions
+which will be included by both C and C++ source files, the user must use extern
+"C" properly. See the example below: </p><codeblock xml:space="preserve">/*File: GoodCHeader.h */
+/* Can be used by C/C++ header and source files directly */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* Write C function declarations here */
+void Function1(int, int);
+char* Function3(char*, int);
+int Function2(int);
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+</codeblock><p>Using <codeph>ifdef __cplusplus</codeph> is required since
+C does not support or recognize the <codeph>extern</codeph> keyword. It is
+C++ that provides the mechanisms for mixing C and C++ codes in the same program.
+To be precise, C++ supports mixing codes that are compiled by C and C++ compatible
+compilers in the same program.</p><p>If the C header is already defined and
+it does not have all the APIs defined under extern "C", then while including
+such a header in C++ source or header files, extern "C" should be used as
+in the example below:  </p><codeblock xml:space="preserve">*File: PureCHeader.h */
+/* If C++ header/source files need to include this header, extern "C" should be used*/
+/* Define all C APIs here*/
+void Function1(int, int);
+char* Function3(char*, int);
+int Function2(int);
+#endif
+
+
+//File: CSource.cpp
+// C++ source file using PureCHeader.h
+extern "C" {
+#include "PureCHeader.h"
+}
+void Foo() {
+   // use those C APIs here
+   int ret = Function2(10);
+}
+</codeblock>     </section>
+<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-6-1-10-1-1-5-1-3-1-7-1-4-1-4-1-3-4">       <title>Mixing
+C and C++ features using extern "C"</title>       <p>The developer
+can use all the features of C++ except templates within C by giving those
+functions extern "C" linkage. See the example below:</p><codeblock xml:space="preserve">#include &lt;iostream&gt;
+using namespace std;
+
+extern "C" {
+
+//Can give C linkage to this class!!
+class Sample{
+public:
+   Sample(int a = 10) : iMem(a) { }
+   void Display() { cout&lt;&lt;"iMem is : "&lt;&lt;iMemend1; }
+private:
+   int iMem;
+};
+
+/*
+//Can not  give C linkage to template!!
+//If we uncomment this code, then it will give a compilation error.
+template&lt;class DataType&gt; void Foo(DataType data) {
+}*/
+}</codeblock>     </section>
+<section id="GUID-9AC33F43-5B75-4994-899F-02CD3CE43E5C"><title>Extending C
+codes with C++ Codes</title><p>Using C linkage, C codes like structures and
+functions that manipulate those structures can be extended efficiently in
+a C++ source file as in the example below:  </p><codeblock xml:space="preserve">/* File: CHeader.h */
+typedef struct{
+   char* name;
+   int id;
+   float price;
+} Item;
+
+int Push(Item* item);
+int Pop(Item* item);
+
+
+
+/* File: CppHeader.h */
+//Give external linkage to C structure
+extern "C" {
+# include "CHeader.h"
+}
+
+class MyStack : public Item {
+public:
+   MyStack(char* aName, int aId, float aPrice) : name(aName), id(aId), price(aPrice) { }
+   int PushOnToStack() { return Push(this);}
+   int PopFromStack() { return Pop(this); }
+};
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-00764271-AD6B-5F41-AF72-843107EBF95F"><title> File Server Plugin implementation tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document contains guidelines for writing a file server plugin for Symbian OS. </p> <p>This document is split into three sections: </p> <ul><li id="GUID-56E1538B-5EA5-542B-873B-A620D26DC183"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-CE12FAD4-531B-5AAB-B37B-9C61AF61205E">Writing a plugin</xref>, </p> </li> <li id="GUID-1CBFE144-BF63-5184-9677-5730A1CFBC1C"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-7AFFCF4E-B247-59FB-BA0C-4A548DF6D7CB">Loading and mounting a plugin</xref>, </p> </li> <li id="GUID-77348F5C-D42E-572F-A878-19153729C8E4"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-5E29C798-17A7-568F-B35C-1D8D10A03B80">Communicating with plugins</xref>. </p> </li> </ul> <section id="GUID-CE12FAD4-531B-5AAB-B37B-9C61AF61205E"><title>Writing a plugin</title> <p>A file server plugin is made up of at least two classes: </p> <ul><li id="GUID-C6DF4F62-C13B-5CDC-972D-C46A88C0D612"><p>a factory class derived from the <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-89CF85BE-784F-5237-9F78-69D603B650C4">CFsPluginFactory</xref> base class, </p> </li> <li id="GUID-B9E3CC8E-B7E1-5964-976D-ADD67BCBDD6C"><p>a plugin class derived from the <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-0994B2F1-23FE-524B-939E-1F83C766924B">CFsPlugin</xref> base class. </p> </li> </ul> <p>Each plugin must <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-06B294FF-4F84-5181-AB30-71C3292B9107">register to intercept messages</xref>. To <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-248CA470-6939-55C3-8D93-B41ECD7D5D28">make internal requests</xref> call the functions RFilePlugin, RDirPlugin or RFsPlugin. </p> <p>Each plugin DLL must export a plugin entry point function with the prototype: </p> <codeblock id="GUID-73D95801-F3C7-5EB2-9767-25F0634DFE63" xml:space="preserve">CFsPluginFactory* CreateFileSystem();</codeblock> <p>The loader calls this function when a client wishes to install a file server plugin and creates an instance of the factory class. For example: </p> <codeblock id="GUID-99E3309A-52CA-58AF-B46C-D4DCA43B865E" xml:space="preserve">extern "C" {
+
+EXPORT_C CFsPluginFactory* CreateFileSystem()
+    {
+    return(new CMyPluginFactory());
+    }
+} </codeblock>  <p id="GUID-89CF85BE-784F-5237-9F78-69D603B650C4"><b>CFsPluginFactory</b> </p> <p>The <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginFactory</apiname></xref> base class follows the standard factory pattern as used in other file server DLLs. <codeph>CFsPluginFactory</codeph> creates <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPlugin</apiname></xref> derived objects. </p> <p>Plugin authors must provide implementations of the pure virtual functions: </p> <ul><li id="GUID-A1BC45F3-96F1-5261-B4AE-9D7D9AC7871E"><p> <codeph>Install()</codeph>  </p> <p>This function is called by the file server in response to a call to <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::AddPlugin()</apiname></xref> and installs the plugin factory. </p> <p>This function must set the name of the plugin factory with a call to <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CObject::SetName()</apiname></xref>. The plugin name is used when mounting, dismounting and unloading plugins. Optionally, <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::AddPlugin()</apiname></xref> can perform other plugin specific initialisation, for example setting <codeph>iSupportedDrives</codeph> to indicate which drives the plugin will operate on, as required by the plugin factory. See <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-DB21C0FD-46F8-5E4F-9288-69AE8609482B">drive selection</xref>. </p> </li> <li id="GUID-75D6526F-30EA-51DC-89D3-C4A30B431751"><p> <codeph>NewPluginL()</codeph>  </p> <p>This is called by the file server in response to a call to <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::MountPlugin()</apiname></xref>, this function creates a new <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPlugin</apiname></xref> derived object and returns a pointer to it. </p> </li> <li id="GUID-961B38B5-C459-539F-9918-DB4F83F40424"><p> <codeph>UniquePosition()</codeph>  </p> <p>This function returns the unique ID of the plugin. This is used to identify the plugin and to specify the location of the plugin in the chain. See <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-90FC1AD9-D709-5105-A445-0AA3D7BA85B7">unique position</xref>. </p> </li> <li id="GUID-D7457283-699D-54BA-B375-F16443792D2D"><p> <codeph>Remove()</codeph> (overriding this virtual function is optional as it is not a pure virtual function) </p> <p>This is called just before the plugin factory object is destroyed and allows any clean up to be carried out. </p> <p>The default implementation just returns <codeph>KErrNone</codeph>. Implementations should return an error code on error detection. </p> </li> </ul> <p>The <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginfactory</apiname></xref> base class also has the following member variables: </p> <ul><li id="GUID-388D1206-5AE5-52FF-A1CF-3CB66D5ADB4A"><p>iSupportedDrives </p> <p>This member holds a bit mask that indicates which drives the plugin created by this factory supports being mounted on. Bits 0 to 25 correspond to 26 drive letters lettered from A to Z. </p> <p>Plugin authors should use the the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>SetSupportedDrives()</apiname></xref> API in order to correctly set up which drives their plugin should be mounted on. Set the drive number to <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>KPluginSupportAllDrives</apiname></xref> to indicate that the plugin needs to be mounted on all drives. </p> <p>If you are using Symbian OS prior to version 9.5, <codeph>iSupportedDrives</codeph> is assigned to by plugin writers directly. However, this is now discouraged in favour of using SetSupportedDrives. </p> </li> <li id="GUID-72C4595A-9E95-5082-935D-40D2818A9055"><p>iUniquePos </p> <p>This member stores the unique position identifier. If this member is used then plugin authors should implement the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>UniquePosition()</apiname></xref> function to return the variable. </p> </li> </ul> <p>An example skeleton implementation of a <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginFactory</apiname></xref> derived class is as follows: </p> <codeblock id="GUID-06314778-EB27-573E-A1B5-E10C64CBF1D1" xml:space="preserve">class CMyPluginFactory : public CFsPluginFactory
+    {
+public:
+    CMyPluginFactory();
+    virtual TInt Install();            
+    virtual CFsPlugin* NewPluginL();
+    virtual TInt UniquePosition();
+    virtual TInt Remove();
+    };
+
+CMyPluginFactory::CMyPluginFactory()
+    {
+    // Constructor for the plugin factory
+    }
+
+TInt CMyPluginFactory::Install()
+    {
+    // Install function for the plugin factory
+    iUniquePos = 0x2000001;
+    // Mount on all drives
+    SetSupportedDrives(KPluginSupportAllDrives);
+    return SetName(_L("MyPluginName"));
+    }
+
+CFsPlugin* CMyPluginFactory::NewPluginL()
+    {
+    // plugin factory function, creates the plugin
+    return CMyPlugin::NewL();
+    }
+
+TInt CMyPluginFactory::UniquePosition()
+    {
+    // Return’s the unique position identifier for plugins created by this factory class.
+    return iUniquePos;
+    }
+
+TInt CMyPluginFactory::Remove()
+    {
+    // Clean up function for the plugin factory
+    return KErrNone;
+    }</codeblock>  <p id="GUID-0994B2F1-23FE-524B-939E-1F83C766924B"><b>CFsPlugin</b> </p> <p>This is the base class for the file server plugin and is defined in <filepath>f32plugin.h</filepath>. </p> <p>Plugins must register to intercept particular types of file server requests. See <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-06B294FF-4F84-5181-AB30-71C3292B9107">Registering a plugin to intercept messages</xref>. </p> <p>Plugin authors need to provide an implementation of the pure virtual method <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DoRequestL()</apiname></xref> and can optionally override the virtual functions: </p> <ul><li id="GUID-C9814092-F5CB-5FE6-A233-5ED43269CE8F"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-64373962-7AB0-597B-BF2E-0D336AFBB545">SessionDisconnect()</xref> - virtual, </p> </li> <li id="GUID-8DDC108F-A379-58D6-98E8-20983B0B64FB"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-5371EF5C-F02E-556D-8BC4-6E0D8D9B35D2">InitialiseL()</xref> - virtual, </p> </li> <li id="GUID-1B536E1D-974A-584F-B2C6-36DEDFA6B55B"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-97427151-C6E4-5FE4-8197-0D7C58EDB29F">Deliver()</xref> - virtual, </p> </li> <li id="GUID-49E41C16-6653-5719-93B9-43C639D0444F"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-CE67C69C-1E85-59FC-8E2B-1802F65D94F3">NewPluginConnL()</xref> - virtual, </p> </li> <li id="GUID-DB7354C0-9587-5D6E-BF6C-6C0DBF3C7582"><p> <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-8E1D4416-DE65-516F-92CD-D18C2166B279">DoRequestL()</xref> - pure virtual, </p> </li> </ul> <p id="GUID-64373962-7AB0-597B-BF2E-0D336AFBB545"><b>SessionDisconnect()</b> </p> <p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>SessionDisconnect()</apiname></xref> is called by the file server when a file server session is disconnected. </p> <p>The default implementation just returns <codeph>KErrNone</codeph>. Overriding this function allows plugins to free up any resources prior to the outstanding operations being cancelled. </p> <p id="GUID-5371EF5C-F02E-556D-8BC4-6E0D8D9B35D2"><b>InitialiseL()</b> </p> <p>The default implementation of <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>InitialiseL()</apiname></xref> does nothing. Override this implementation to perform a plugin specific initialisation, for example <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-06B294FF-4F84-5181-AB30-71C3292B9107">registering intercepts</xref>. If the plugin cannot be initialised this function must leave with a suitable error code. </p> <p id="GUID-97427151-C6E4-5FE4-8197-0D7C58EDB29F"><b>Deliver()</b> </p> <p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>Deliver()</apiname></xref> is called in the context of the previous thread that originated or processed the request (either the file server main thread or another plugin thread) before the request is dispatched to the plugin’s thread. </p> <p>The default implementation delivers the request to the end of the plugin thread's request queue. Requests that require priority handling (usually those sent using an <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RPlugin</apiname></xref> session) are delivered to the front of the queue. See <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-5E29C798-17A7-568F-B35C-1D8D10A03B80">Communicating with plugins</xref>. </p> <p>Overriding this function allows plugins to perform operations within the context of the original thread (like validation of request parameters or filtering requests) before the request is sent to the plugin’s main thread or passed to the next plugin or drive thread. </p> <p> <codeph>Deliver()</codeph> is called from outside the context of the plugin’s main thread so care must be taken as the plugin main thread may still be processing the previous request. </p> <ul><li id="GUID-DAA3DBC2-4C31-51B9-B071-E36F44A7BFDE"><p>If <codeph>KErrNone</codeph> is returned then the base class implementation of this function must be called to ensure that the request is dispatched to the plugin’s thread for further processing in <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DoRequestL()</apiname></xref>. </p> </li> <li id="GUID-9A2229A2-D17D-5BE4-A8C1-66FCBD4447F6"><p> <codeph>KPluginMessageForward</codeph> indicates that the request has been processed synchronously and should be passed down to the next plugin in the stack (bypassing the current plugin’s <codeph>DoRequestL()</codeph> function). This is used for pre-intercepts. </p> </li> <li id="GUID-D10FB123-B30D-5CE0-B3EB-CDBA78CF2A8D"><p> <codeph>KPluginMessageComplete</codeph> indicates that the request has been processed synchronously and should be passed up to the previous plugin in the stack (bypassing the current plugin’s <codeph>DoRequestL()</codeph> function). This is used for post-intercepts. </p> </li> </ul> <p id="GUID-CE67C69C-1E85-59FC-8E2B-1802F65D94F3"><b>NewPluginConnL()</b> </p> <p>The function <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>NewPluginConnL()</apiname></xref> is the default implementation and it returns <codeph>KErrNotSupported</codeph>. Override this implementation to create a <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginConn</apiname></xref> derived object to enable direct communication between a client application and a plugin using <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RPlugin</apiname></xref>. See <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-5E29C798-17A7-568F-B35C-1D8D10A03B80">Communicating with plugins</xref>. </p> <p id="GUID-8E1D4416-DE65-516F-92CD-D18C2166B279"><b>DoRequestL()</b> </p> <p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DoRequestL()</apiname></xref> is the main entry point for messages intercepted by a plugin. Individual plugins are usually single-threaded and must process requests in the order that they arrive. However, the plugin framework is not single-threaded. While a plugin is handling a request all other plugins are also able to handle requests. The drive thread is also able to handle requests forwarded to it by plugins. <codeph>DoRequestL()</codeph> is called in the context of the plugin’s main thread and must be implemented to intercept file server requests in this context. </p> <p>The current request must have finished all processing before <codeph>DoRequestL()</codeph> has completed. If a plugin has multiple threads and the request is handled in a thread other than the main thread then the <codeph>DoRequestL()</codeph> function must be blocked until the request has been processed. This is because when <codeph>DoRequestL()</codeph> exits, the plugin framework forwards the message to the next plugin in the chain. Unpredictable behaviour may occur if the plugin has not finished processing a request before it is passed to the next plugin/file system. </p> <p>Errors returned by this function are propagated back to the client. If this function leaves then the client thread panics. <b>Note</b>: Do not return from this function until the request has been fully processed. This is because after returning from this function the request is passed onto the next plugin in the chain. This means that you cannot pass the request to a separate thread and return immediately in order to implement a multi-threaded plugin. </p> <p> <codeph>KErrCompletion</codeph> indicates that all processing for this request has been completed by this plugin. Post-intercept is then enabled and the flow of execution is up the plugin stack towards the client, starting at the previous plugin. </p> <p>When a plugin intercepts a file read or file write request and does an early completion (i.e. returns <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>KErrCompletion</apiname></xref> in pre-intercept) then the plugin author should call <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest::SetSharePos()</apiname></xref> to allow share position to be updated after early read/write completion. </p> <p id="GUID-14773530-7C15-52E2-A542-72A0B2163461"><b>TFsPluginRequest</b> </p> <p>The <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest</apiname></xref> class encapsulates the intercepted file server request and is passed as a reference to the plugin's <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DoRequestL()</apiname></xref> function. <codeph>TFsPluginRequest</codeph> provides APIs that extract request specific information such as: </p> <ul><li id="GUID-D5FE21A2-F05A-5509-8A4B-21D95B79B4AE"><p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DriveNumber()</apiname></xref> - returns the target drive number. The drive number is in the range of zero to 25, which corresponds to drive letters A to Z, </p> </li> <li id="GUID-9EDB9144-38EC-5117-A029-268658BE6877"><p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>Function()</apiname></xref> - the type of request as defined in <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsMessage</apiname></xref>, </p> </li> <li id="GUID-96068F44-2CC3-5361-8814-2CDBD13C30C7"><p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>IsPostOperation()</apiname></xref> - returns <codeph>ETrue</codeph> or <codeph>EFalse</codeph> to indicate if the request being intercepted is in post-intercept mode (<codeph>ETrue</codeph>) or pre-intercept. </p> </li> </ul> <p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest</apiname></xref> acts as a utility class for plugins. This class has two main functions <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest::Read()</apiname></xref> and <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest::Write()</apiname></xref>, which allow a plugin to read from and write to the message arguments of a request. </p> <p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest::Read()</apiname></xref> has various overloads for <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TInt</apiname></xref>, <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TUint</apiname></xref>, <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>Tint64</apiname></xref> and descriptor data types, all of which take as their first argument a <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TF32ArgType</apiname></xref> object. </p> <p>The <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TF32ArgType</apiname></xref> is an enumeration which defines the type of data that is requested. For example, <codeph>EPosition</codeph>, <codeph>ELength</codeph>, <codeph>EData</codeph> for getting the position, length and data arguments from the request. <codeph>TF32ArgType</codeph> is defined as follows: </p> <codeblock id="GUID-E8DCEB67-BFA0-52AD-A554-C8C76645E3CC" xml:space="preserve">enum TF32ArgType
+    {
+    EPosition,
+    ELength,
+    EData,
+    ESize,
+    EName,
+    ENewName,
+    EEntry,
+    ETime,
+    ESetAtt,
+    EClearAtt,
+    EMode,
+    EAtt,
+    EAttMask,
+    EUid,
+    EEntryArray,
+    ENewPosition,
+    };</codeblock> <p> <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsPluginRequest::Write()</apiname></xref> only has two overloads, both of these take descriptor types and the argument <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TF32ArgType</apiname></xref>. Many functions do not use descriptor types, it will be necessary to package data for these inside a descriptor. </p> <p>The following provides an example of how to do this for <codeph>Entry</codeph>: </p> <codeblock id="GUID-ECF1B967-6588-5D4C-95A1-FA108E3D0417" xml:space="preserve">    TPckgC&lt;TEntry&gt; entryPckg(entry);
+    err = aRequest.Write(EEntry, entryPckg);</codeblock> <p id="GUID-248CA470-6939-55C3-8D93-B41ECD7D5D28"><b>Sending internal requests to the file server</b> </p> <p>The classes <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFilePlugin</apiname></xref>, <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RDirPlugin</apiname></xref> and <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFsPlugin</apiname></xref>, defined in <filepath>F32Plugin.h</filepath>, are the classes that plugin authors should use to send internal requests to the file server. The APIs for these classes are mostly identical from their client side (<xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFile</apiname></xref>, <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RDir</apiname></xref> and <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs</apiname></xref>) counter-parts. </p> <p>Before a plugin can perform any requests on a file it must first either perform an <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>Open()</apiname></xref> or <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>AdoptFromClient()</apiname></xref>. When an <codeph>AdoptFromClient()</codeph> is performed the <codeph>RFilePlugin</codeph> instance opens the file associated with the client request. <codeph>Open()</codeph> can be used to open the same file (potentially with different parameters than those supplied by the client) and it can be used to open an entirely different file. </p> <p> <codeph>RFilePlugin</codeph> has the following public functions: </p> <codeblock id="GUID-FC3DCDA2-964C-50F9-A0C9-97A3F00E3DDC" xml:space="preserve">class RFilePlugin : private RFile
+    {
+public:
+    IMPORT_C RFilePlugin(TFsPluginRequest&amp; aRequest, TBool aDirectToDrive = EFalse);
+
+    // open a NEW file using same session as passed request
+    IMPORT_C TInt Open(const TDesC&amp; aName,TUint aMode);
+    IMPORT_C TInt Create(const TDesC&amp; aName,TUint aFileMode);
+    IMPORT_C TInt Replace(const TDesC&amp; aName,TUint aFileMode);
+    IMPORT_C TInt Temp(const TDesC&amp; aPath,TFileName&amp; aName,TUint aFileMode);
+
+    // re-open SAME file as client's request
+    IMPORT_C TInt AdoptFromClient();
+    // Transfer the plugin's open file to the client
+    IMPORT_C TInt TransferToClient();
+
+    IMPORT_C void Close();
+
+    // RFile overloads
+    IMPORT_C TInt Read(TInt64 aPos,TDes8&amp; aDes) const;
+    IMPORT_C TInt Read(TInt64 aPos,TDes8&amp; aDes,TInt aLength) const;
+    IMPORT_C TInt Write(TInt64 aPos,const TDesC8&amp; aDes);
+    IMPORT_C TInt Write(TInt64 aPos,const TDesC8&amp; aDes,TInt aLength);
+    IMPORT_C TInt Lock(TInt64 aPos,TInt64 aLength) const;
+    IMPORT_C TInt UnLock(TInt64 aPos,TInt64 aLength) const;
+    IMPORT_C TInt Seek(TSeek aMode,TInt64&amp; aPos) const;
+    IMPORT_C TInt Flush();
+    IMPORT_C TInt Size(TInt64&amp; aSize) const;
+    IMPORT_C TInt SetSize(TInt64 aSize);
+    IMPORT_C TInt Att(TUint&amp; aAttValue) const;
+    IMPORT_C TInt SetAtt(TUint aSetAttMask,TUint aClearAttMask);
+    IMPORT_C TInt Modified(TTime&amp; aTime) const;
+    IMPORT_C TInt SetModified(const TTime&amp; aTime);
+    IMPORT_C TInt Set(const TTime&amp; aTime,TUint aSetAttMask,TUint aClearAttMask);
+    IMPORT_C TInt ChangeMode(TFileMode aNewMode);
+    IMPORT_C TInt Rename(const TDesC&amp; aNewName);
+    ...</codeblock> <p id="GUID-06B294FF-4F84-5181-AB30-71C3292B9107"><b>Registering a plugin to intercept messages</b> </p> <p>The base class <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPlugin</apiname></xref>, has functions that allow a plugin to register to intercept specific types of file server request. This is explained in more detail under <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-50F7CD3A-A051-5498-8886-B4501523FD1D">Interception of file server requests</xref>. </p> <p><b>RegisterIntercept()</b> </p> <p>The function <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RegisterIntercept()</apiname></xref> registers a plugin to intercept a specified <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsMessage</apiname></xref>. The second parameter of <codeph>RegisterIntercept()</codeph> allows plugin authors to specify whether the intercept is processed before, after or both before and after the request is processed by the drive thread. See <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TInterceptAtts</apiname></xref>. </p> <p><b>UnregisterIntercept()</b> </p> <p>Un-register an intercept with <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>UnregisterIntercept()</apiname></xref>. <codeph>UnregisterIntercept()</codeph> takes <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TFsMessage</apiname></xref>, which is the ID of the message and <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>TInterceptAtts</apiname></xref>, which is the type of intercept that you no longer wish to intercept. </p> </section> <section id="GUID-7AFFCF4E-B247-59FB-BA0C-4A548DF6D7CB"><title>Loading and mounting a plugin</title> <p>A plugin must be loaded and mounted before it can intercept requests. </p> <p id="GUID-84812368-5915-5E30-A29C-FBC05C51E8F0"><b>Loading and unloading a plugin</b> </p> <p>Before a plugin can be used by the file server the library (<filepath>.PXT</filepath>) that contains the plugin needs to be loaded into the file server process by the loader. Do this using the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::AddPlugin()</apiname></xref> function defined in <filepath>f32file.h</filepath>. </p> <p> <codeph>AddPlugin()</codeph> can be called by any user side application with the relevant <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-0B7B373D-41ED-5C91-ACC4-393A8669815A">platform security capabilities</xref>. </p> <p>Unload a plugin using the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::RemovePlugin()</apiname></xref> function also defined in <filepath>f32file.h</filepath>. </p> <p> <b>Note</b>: Refer to the device manufacturer if you want to load plugins automatically at system startup time. </p> <p id="GUID-BED54BD9-2F3F-588E-854B-C28745C8F30A"><b>Mounting and unmounting a plugin</b> </p> <p>File Server plugins are mounted using the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::MountPlugin()</apiname></xref> function defined in <filepath>f32file.h</filepath>. The plug in must have already been loaded using <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::AddPlugin()</apiname></xref>. </p> <p>There are various overloads of the <codeph>MountPlugin()</codeph> function. Those functions which do not take a drive parameter are mounted using <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>KPluginAutoAttach</apiname></xref>. </p> <p>Call <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RFs::DismountPlugin()</apiname></xref> to dismount the file server plugin. Dismount the plugin when you no longer need it to intercept file server requests. </p> <p>Before a plugin can be dismounted all resources owned by the plugin must be closed. A plugin can intercept the request to dismount it and use this to free resources and close down cleanly. If the plugin owns resources on behalf of a client (for example, a client has a file open that is using the decompression plugin) then the plugin can reject the request to dismount by returning one of the system wide error codes. </p> </section> <section id="GUID-5E29C798-17A7-568F-B35C-1D8D10A03B80"><title>Communicating with plugins</title> <p>The file server provides a standard logical channel based mechanism that enables a trusted application to communicate with a file server plugin. For example, a virus scanning plugin can present a user interface for the device user. <b>Note</b>: <codeph>DiskAdmin</codeph> capabilities are required in order to load a plugin. See <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-0B7B373D-41ED-5C91-ACC4-393A8669815A">platform security capabilities</xref>. </p> <p><b>Data transfer </b> </p> <p>The class <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginConnRequest</apiname></xref> is an information container for asynchronous requests that the client application wants performed. <codeph>CFsPluginConnRequest</codeph> also provides functions that enable data to be transferred between the plugin and the application. The following examples show how to use <codeph>CFsPluginConnRequest</codeph>. </p> <p id="GUID-D0B1C6A0-4952-51C3-9DCF-7B8344D60333"><b>User-side application</b> </p>       <p id="GUID-285326AB-9D14-5DE2-BDD5-C418B755F57B"><b>Plugin side</b> </p> <p>This is the plugin side of the communication. This must be implemented in order to communicate with the application side class <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RPlugin</apiname></xref> above. The plugin side is a class derived from the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginConn</apiname></xref> class. The plugin’s <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>NewPluginConnL()</apiname></xref> function is called from the file server when <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RPlugin::Open()</apiname></xref> is called by the client. </p> <p>Synchronous (<xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DoControl()</apiname></xref>) and asynchronous (<xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>DoRequest()</apiname></xref>) requests sent from the <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>RPlugin</apiname></xref> class are routed directly to the associated plugin's <xref href="GUID-F6FC1ECC-A86C-32EB-8DAC-219FED424197.dita"><apiname>CFsPluginConn</apiname></xref> derived class. The following code shows a basic implementation: </p> <codeblock id="GUID-4B07F646-AEC0-5923-9647-E827D111E587" xml:space="preserve">class CMyPluginConn : public CFsPluginConn
+    {
+    virtual TInt DoControl(CFsPluginConnRequest&amp; aRequest);
+    virtual void DoRequest(CFsPluginConnRequest&amp; aRequest);
+    virtual void DoCancel(TInt aReqMask);
+    };
+
+// From the CFsPlugin derived class
+CFsPluginConn* CMyPlugin::NewPluginConnL()
+    {
+    CMyPluginConn* thePluginConn = new(ELeave) CMyPluginConn();
+    return thePluginConn;
+    }
+
+TInt CMyPluginConn::DoControl(CFsPluginConnRequest&amp; aRequest)
+    {
+    TInt r = KErrNotSupported;
+    CMyPlugin&amp; myPlugin = *(CMyPlugin*)Plugin();
+    switch(aRequest.Function())
+       {
+       case RMyPlugin::EEnable:
+          r = myPlugin.Enable();
+          break;
+       case RLoggerConn::EDisable:
+          r = myPlugin.Disable();
+          break;
+       default:
+          break;      
+       }
+    return r;
+    }
+
+void CMyPluginConn::DoRequest(CFsPluginConnRequest&amp; aRequest)
+    {
+    return KErrNotSupported;
+    }
+
+void DoCancel(TInt aReqMask)
+    {
+    // Not required as no asynchronous request support
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-008F9006-8548-443D-A7ED-4A8233E051C6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-008F9006-8548-443D-A7ED-4A8233E051C6" xml:lang="en"><title>Implement
+the ECom framework code</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Converters must provide the standard ECom factory code
+to create an instance of the converter. For example,</p> <codeblock xml:space="preserve">CConverterBase2* CExampleConverter::NewL()
+    {
+    CConverterBase2* conv = new( ELeave ) CExampleConverter();
+    return conv;
+    }
+// Standard ECOM factory code
+const TImplementationProxy ImplementationTable[] =
+    {    
+    IMPLEMENTATION_PROXY_ENTRY( KExampleConvImplementationUid, CExampleConverter::NewL )
+    };
+// Standard ECOM factory code
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt&amp; aTableCount )
+    {
+    aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
+    return ImplementationTable;
+    }
+</codeblock><p> For more details on ECom factory code, see <xref href="GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita">Exporting the implementation
+factories</xref>.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00B82F15-0ACC-59A9-AB9C-E4342ABE64D3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-00B82F15-0ACC-59A9-AB9C-E4342ABE64D3" xml:lang="en"><title>Serial Communications Server Example Code</title><shortdesc>This describes the example code for the Serial Communications Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00DE7E90-4C6B-577A-85E1-76698CA2AB69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-00DE7E90-4C6B-577A-85E1-76698CA2AB69"><title>How to move a file </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can move a single file to a different directory without renaming it, using <codeph>RFs::Rename()</codeph>. </p> <codeblock id="GUID-22477BFA-4A5B-5558-81A1-00640762CE3F" xml:space="preserve">
+// Move file.txt from dir1 to dir2
+_LIT(KFileSource,"\\dir1\\file.txt");
+_LIT(KFileTarget,"\\dir2\\file.txt");
+User::LeaveIfError(fsSession.Rename(KFileTarget,KFileSource));
+</codeblock> <section><title>Notes</title> <ul><li id="GUID-F50D0B59-846A-519D-BE67-8F0C6544AC6E"><p><codeph>RFs::Replace()</codeph> can also be used to move a file. The difference between the two functions is that <codeph>Rename()</codeph> will return an error if a file with the new name already exists in the target directory whereas <codeph>Replace()</codeph> will overwrite it. Another way to move files is to use <codeph>CFileMan::Move()</codeph>. This may be used to move multiple files.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-00FFF2B3-F8E4-5CBF-B031-240D98BB2111.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-00FFF2B3-F8E4-5CBF-B031-240D98BB2111"><title>External Programs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>External programs are executables built outside but which can be launched from the Zsh command prompt. </p> <p>If the command is neither built-in, nor specified with an absolute pathname, the shell will look in the <filepath>\sys\bin</filepath> on each drive in reverse alphabetical order (<filepath>y:</filepath>, <filepath>x:</filepath>,... to <filepath>b:</filepath>, <filepath>a:</filepath> and later <filepath>z:</filepath>) and execute the first external program found. </p> <p>To execute the external program directly give the following command at the command-prompt: </p> <p><userinput>command &lt;ext_pgm&gt;</userinput> </p> <p>where <codeph>ext_pgm</codeph> is the name of the external program. </p> <p>For example: </p> <p>The program below reads input from Zsh and writes data to Zsh which can then be redirected back to the Telnet client. </p> <codeblock id="GUID-2A92BFF9-D69D-5C18-B657-9D7D5738EA22" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &lt;unistd.h&gt;
+
+int  main()
+    {
+    char userData[20]; char ch; int x=0;
+    
+    memset(userData,0,20);
+    x=read(0,userData, 20);    
+        
+    while(strcmp(userData, "quit"))
+        {
+        write(1, userData, x);
+        memset(userData,0,20);
+        x=read(0,userData, 20);        
+        }        
+    return 0;                 
+    }
+</codeblock> <section><title>Limitations</title> <p>P.I.P.S. applications and native Symbian applications can be launched from the Telnet client. However, to view the output of the program or interact with it, the standard input and output of the program must be accessible to the Telnet server. This is only possible with P.I.P.S. applications. With native applications you will only be able to retrieve the termination status; you will not be able to view the output or interact with the program. </p> <p>Permission will be denied for external programs that does not have the required capabilities to access directories that contain <filepath>/sys</filepath> and <filepath>/private</filepath> in their directory path. </p> <p> <b>Note:</b> For more information about the external commands supported by Zsh, see the <xref href="GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita">Zsh Command Syntax</xref> section. </p> </section> <section><title>See also</title> <p>For information on porting Standard C applications to Symbian platform see the <xref href="GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita">P.I.P.S. Guide</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-01029B52-55E0-5598-994F-BB5DE73D37EE"><title>What are Layers</title><shortdesc>This topic describes the concept of a <i>Layer</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Layer is a horizontal division of functionality in a stack. </p> <p>A Layer matches the concept of the Layer in the seven-layer International Organization for Standardization's OSI Model. A Layer also matches the concept of the Layer in the five layer model used to describe TCP/IP. </p> <p>A Layer can contain a single Communications Protocol. A Layer can also contain a number of related protocols collected into a single unit. TLS, TCP, IP, Ethernet are examples of the protocols. </p> <p>The concept of a Layer allows device creators to have different implementations in a given Layer. When a data connection starts or when the environment changes, the best protocol can be selected. </p> <p>The following diagram shows the concept. The diagram also shows the position of the Sockets Server Client APIs. </p> <fig id="GUID-B1EA40DF-E7D2-5326-9516-0DA2A917DC02"><title>
+          Layers in the Communications Framework 
+        </title> <image href="GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e62935_href.png" placement="inline"/></fig> <p>Although each Layer contains a different protocol, the Communications Framework allows separate protocols to make a single Layer. For example: NCP, LCP and HDLC together make the PPP protocol. TCP, UDP, ICMP, IP together make the TCP/IP group of protocols. Each of these groups of protocols can be put together into a single Layer. </p> <p>The number of Layers only depends on the configuration of the Communications Stack. The top Layer has the Sockets Server. The bottom Layer has the drivers for the communication hardware . Each Layer interacts only with the Layer immediately above and the Layer immediately below. </p> <p>The framework APIs that connect the protocols in each Layer are consistent across the Communications Framework. All protocols share a common method of communication that is independent of protocol behaviour. A common method of communication allows protocols to be stacked. The Communications Framework provides flexibility in the configuration of the protocol stacks for each device. The following diagram shows a number of protocols at each Layer. </p> <fig id="GUID-D4A66FE7-8163-5383-A500-A8591CA9538E"><title>
+          Protocols arranged in Layers in the Communications Framework 
+        </title> <image href="GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e62950_href.png" placement="inline"/></fig> </conbody><related-links><link href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita"><linktext>Socket Server</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-010627ED-7BCD-4AF1-BECB-661E21015E6E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-010627ED-7BCD-4AF1-BECB-661E21015E6E" xml:lang="en"><title>Password
+query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A specific case of the Data query is the Password query, used for confidential
+information such as passwords or PINs. It uses the password editor, which
+functions much like any other editor, except that instead of the actual data,
+a dummy character (asterisk) represents each input character. In case of a
+numeric-only password, the asterisks appear as soon as characters are entered.
+In case of alphanumeric input, to support typing characters by repeated presses
+of the same numeric key, the character is displayed normally for a short time,
+and then changed into an asterisk.</p>
+<section><title>Using password queries
+in C++ applications</title><p>For implementation information, see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01103A66-532B-54ED-9D4D-39B81327E783.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-01103A66-532B-54ED-9D4D-39B81327E783" xml:lang="en"><title>Multimedia
+Device Framework Collection</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Multimedia Device Framework collection provides a framework for hardware
+accelerated access to media services. </p>
+</conbody><related-links>
+<link href="GUID-1DE5CDAD-8D71-5384-9E98-5665D5A4C792.dita"><linktext>Multimedia
+  Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0116F567-D005-5480-AB37-9799398C0E6F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0116F567-D005-5480-AB37-9799398C0E6F" xml:lang="en"><title> Setting
+sub-connection parameters: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> This topic describes how to set parameters
+on a subconnection. Parameters are set on a subconnection using <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita#GUID-0AFDA357-EE44-3788-9CAB-162B874134BF/GUID-FA1056C6-FAE7-3E0F-9375-9F5A6315AE24"><apiname>RSubConnection::SetParameters()</apiname></xref>.
+The <codeph>SetParameters</codeph> function takes an instance of the <xref href="GUID-27AA9BD2-9754-3BAE-8C2D-59937E1924CF.dita"><apiname>RSubConParameterBundle</apiname></xref> class
+as a parameter. <codeph>RSubConParameterBundle</codeph> specifies the parameters. <codeph>RSubConParameterBundle</codeph> is
+a container for at least one <xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref> object.
+The <codeph>CSubConParameterFamily</codeph> objects are referred to as parameter
+families. </section>
+<section><title>Procedure</title> <p> An <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> is
+updated by filling in an <xref href="GUID-27AA9BD2-9754-3BAE-8C2D-59937E1924CF.dita"><apiname>RSubConParameterBundle</apiname></xref> and calling <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita#GUID-0AFDA357-EE44-3788-9CAB-162B874134BF/GUID-FA1056C6-FAE7-3E0F-9375-9F5A6315AE24"><apiname>RSubConnection::SetParameters()</apiname></xref>.
+When the <xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref> constructor is called,
+it adds the family to the named bundle automatically. The bundle takes ownership
+of the family and when the bundle is destroyed, it will destroy the parameter
+family. </p><p> For example, a particular bundle may contain a QoS family.
+The QoS family may contain (for example) one generic and two extension parameter
+sets. Each of those parameter sets may exist as <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref>, <xref href="GUID-754AF65B-376E-3A75-97F0-8ECF4560BCEF.dita"><apiname>EAcceptable</apiname></xref>,
+and <xref href="GUID-12DF975A-B43E-336F-817E-FDD099F7060A.dita"><apiname>EGranted</apiname></xref>. The <xref href="GUID-12DF975A-B43E-336F-817E-FDD099F7060A.dita"><apiname>EGranted</apiname></xref> parameter
+set is created and updated by the underlying communications link and so should
+not be changed by your application. </p> <p> An instance of a parameter bundle
+can only be applied as a single action. That is, if one parameter family is
+added to the bundle and a call is made to <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita#GUID-0AFDA357-EE44-3788-9CAB-162B874134BF/GUID-FA1056C6-FAE7-3E0F-9375-9F5A6315AE24"><apiname>RSubConnection::SetParameters()</apiname></xref>;
+to add another family or an additional extension set to the existing parameter
+family, it must be added to the original <xref href="GUID-27AA9BD2-9754-3BAE-8C2D-59937E1924CF.dita"><apiname>RSubConParameterBundle</apiname></xref> instance
+and another call made to <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita#GUID-0AFDA357-EE44-3788-9CAB-162B874134BF/GUID-FA1056C6-FAE7-3E0F-9375-9F5A6315AE24"><apiname>RSubConnection::SetParameters()</apiname></xref>.
+If the original parameter bundle is not available you may create a totally
+new parameter bundle and (optionally) make a call to <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita#GUID-0AFDA357-EE44-3788-9CAB-162B874134BF/GUID-6E4D49A9-CBD3-3A1C-8CDC-C33E8E26928F"><apiname>RSubConnection::GetParameters()</apiname></xref> to
+obtain the current settings. When a family is added to the bundle, the bundle
+will take ownership of that object. All added <xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref> objects
+will be destroyed when the parameter bundle is destroyed. </p> <p>The <codeph>GetParameters() </codeph> and <codeph>SetParameters()</codeph> methods
+are used to retrieve and set bundles of properties on the sub-connection. <codeph>GetParameters()</codeph> will
+return <xref href="GUID-51298FCE-7857-39F8-BFAB-49AF5556D0CC.dita"><apiname>KErrNotReady</apiname></xref> if no properties have been negotiated.
+This may not happen until the sub-connection has been used. The <codeph>SetParameters()</codeph> method,
+like the <codeph>Add()</codeph> and <codeph>Remove()</codeph> methods returns
+an error code indicating the success or failure of the request to perform
+the action. Upon negotiation of the properties either the <xref href="GUID-AA6CFA1E-0B17-3603-9065-34D05322C0A5.dita"><apiname>CSubConGenEventParamsGranted</apiname></xref> or <xref href="GUID-7103CFA3-2119-3356-9460-B26D88036FEB.dita"><apiname>CSubConGenEventParamsRejected</apiname></xref> event will be notified for each family within the parameter bundle. A call
+to the <codeph>SetParameters()</codeph> method may not result in any negotiation
+until such time as the sub-connection is used. </p> <p>Remember that an <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> is
+updated by filling in an <xref href="GUID-27AA9BD2-9754-3BAE-8C2D-59937E1924CF.dita"><apiname>RSubConParameterBundle</apiname></xref> and calling <codeph>RSubConnection::SetParameters()</codeph>.
+This means that changes to parameter sets will only be applied when <codeph>SetParameters()</codeph> is
+called. Also note that retrieving the <xref href="GUID-12DF975A-B43E-336F-817E-FDD099F7060A.dita"><apiname>EGranted</apiname></xref> parameters
+will only be effective once the sub-connection is used and the <xref href="GUID-AA6CFA1E-0B17-3603-9065-34D05322C0A5.dita"><apiname>CSubConGenEventParamsGranted</apiname></xref> event
+has been sent. </p></section>
+<section/>
+<section><title>Using RSubConParameterBundle</title> <p>The <codeph>AddFamilyL()</codeph> and <codeph>FindFamily()</codeph> methods
+do just as their names suggest. It is unlikely that the <codeph>AddFamilyL()</codeph> call
+will ever be required since the constructor of <xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref> adds
+the family to the passed in parameter bundle automatically. It is present
+mainly for internal use. </p> <p>The <codeph>ClearAllParameters()</codeph> method
+will clear parameters of the given parameter set type from all families that
+the bundle owns. </p> <p>The <codeph>Load()</codeph> and <codeph>Store()</codeph> methods
+are used for serialisation of the parameter bundle, whilst <codeph>Length()</codeph> will
+return the number of bytes the serialised data will occupy. </p> </section>
+<section><title>Using CSubConParameterFamily</title> <p>An application could
+add a parameter set of the type <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref> to request an
+ideal level of bandwidth and latency, and a parameter set type of <xref href="GUID-754AF65B-376E-3A75-97F0-8ECF4560BCEF.dita"><apiname>EAcceptable</apiname></xref> could
+be added to indicate the bare minimum required for the application to operate.
+A parameter set of the type <xref href="GUID-12DF975A-B43E-336F-817E-FDD099F7060A.dita"><apiname>EGranted</apiname></xref> must never be added
+by an application. The sub-connection's parameter bundle will be updated with
+parameter sets of this (granted) type when the negotiated settings change,
+such as when the sub-connection is established/used. </p> <p>Before a call
+to <codeph>SetParameters()</codeph> is made on the sub-connection the family
+must at least contain a parameter set of the type <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref>.
+If the parameter set type <xref href="GUID-754AF65B-376E-3A75-97F0-8ECF4560BCEF.dita"><apiname>EAcceptable</apiname></xref> is omitted the requested
+values will used as the acceptable values. This means that if you request
+a bandwidth of 256k and only 128k is available, an event will be returned
+saying that the requested bandwidth is not available (<xref href="GUID-7103CFA3-2119-3356-9460-B26D88036FEB.dita"><apiname>CSubConGenEventParamsRejected</apiname></xref>).
+Any parameter sets of the type <xref href="GUID-12DF975A-B43E-336F-817E-FDD099F7060A.dita"><apiname>EGranted</apiname></xref> will be ignored
+by a call to <codeph>SetParameters()</codeph>. </p> <p>When a generic or extension
+set is added to the family, the parameter family object will take ownership
+of that parameter set. All added parameter sets will be deleted along with
+the parameter family. </p> <p>The <codeph>LoadL()</codeph> method is used
+to create a new <xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref> from a previously
+serialised object. It will be added to the given bundle, which will taken
+ownership of the new family. </p> <p>The <codeph>SetGenericSetL()</codeph> and <codeph>AddExtensionSetL()</codeph> methods
+are used to add parameter sets to the family. If the type of parameter set
+added/set is the same as a parameter set type already contained by the <xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref> the
+method will leave with <xref href="GUID-D1D25122-F2B8-3C78-8599-84905BFD47B8.dita"><apiname>KErrAlreadyExists</apiname></xref>. For example,
+if an extension set is added for the type <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref>, then
+another extension set (of the same type) is also added for <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref> the
+method will leave. </p> <p>The <codeph>GetGenericSet()</codeph> and <codeph>FindExtensionSet()</codeph> methods
+are used to retrieve a parameter set from the parameter family. If there is
+no generic set or extension set of the specified type then NULL is returned. </p> <p>The <codeph>ClearAllParameters()</codeph> method
+will clear both generic and extension parameter sets of the given parameter
+set type from the family. </p> <p> <codeph>Id()</codeph> will return the family
+identifier. </p> <p>The <codeph>Load()</codeph> and <codeph>Store()</codeph> methods
+are used for serialisation of the parameter family, whilst <codeph>Length()</codeph> will
+return the number of bytes the serialised data will occupy. </p> </section>
+<section><title>See Also</title> <p> <xref href="GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita#GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280/GUID-7803B89A-6ABF-529C-A0B8-CA06BA410F3B">RSubConnection
+Events</xref> Reference </p> <p> <xref href="GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita#GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280/GUID-7F057E16-0E56-5989-8647-7DAFF6E343D3">RSubConnection
+QoS Parameters</xref> Reference </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-011D0974-CC37-5335-A8EB-7ECF4FC30F93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-011D0974-CC37-5335-A8EB-7ECF4FC30F93" xml:lang="en"><title>Cleanup
+for heap arrays</title><shortdesc>C++ arrays are allocated on the heap and require their own particular
+cleanup.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>C++ arrays are allocated on the heap using <codeph>operator new[]</codeph>.
+The cleanup rules for such arrays are as follows:</p>
+<ul>
+<li id="GUID-41AA28AA-1D48-5B50-9065-A283CCAAD83F"><p>if it is not necessary
+to protect against leaves, such as when the array is a class member, or no
+leaves can occur in the lifetime of the array, then always delete the array
+using <codeph>operator delete[]</codeph> (not <codeph>operator delete</codeph>).</p> </li>
+<li id="GUID-B4EA79E7-EEDC-531D-90DB-7041F3650356"><p>if it is necessary to
+protect against leaves, push the array to the cleanup stack using the utility
+template function <codeph>CleanupArrayDeletePushL()</codeph>. This ensures
+that if a leave occurs, the array is deleted correctly using <codeph>operator
+delete[]</codeph>.</p> <p>Arrays should <i>not</i> be pushed to the cleanup
+stack using the standard <codeph>CleanupStack::PushL()</codeph>, as this will
+result in <codeph>operator delete</codeph> rather than <codeph>operator delete[]</codeph> being
+used for cleanup.</p> </li>
+</ul>
+<p><b>Note on compiler behaviour</b> </p>
+<p>Of the compilers used with Symbian platform, Metrowerks CodeWarrior is
+the most sensitive to the rules for array deletion. If an array is deleted
+with a simple <codeph>delete</codeph> rather than <codeph>delete[]</codeph>,
+then a USER 42 panic (invalid heap cell) can occur. </p>
+<p>This panic in fact occurs for arrays in which the class has either a constructor
+or a destructor. For such arrays, CodeWarrior reserves space at the start
+of the array storage to hold the number of elements in the array: this means
+the first heap cell is not the start of a deletable object. GCC and MSVC C++
+only reserve such extra space if the class has a destructor.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0129AE17-B171-5CD5-8542-1DB738CBAB8B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0129AE17-B171-5CD5-8542-1DB738CBAB8B" xml:lang="en"><title>Libxml2 Libraries Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section gives an overview of the Libxml2 libraries component. The core of XML collection is Libxml2 component which is a wrapper for the standard Libxml2 C library. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0142B290-DA6C-5574-83D7-7555D804D9B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0142B290-DA6C-5574-83D7-7555D804D9B5" xml:lang="en"><title>How
+to initialise array RESOURCE members</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><i><codeph>&lt;array-initialiser&gt;</codeph></i> </p>
+<p><b>array-initialiser ::=</b>     </p>
+<p><b> {</b> <i><codeph>&lt;array-initialiser-item-comma-list&gt;</codeph></i><b> }</b> <i><codeph>&lt;array-initialiser-item&gt;</codeph></i> </p>
+<p><b>array-initialiser-item ::=</b>     </p>
+<p><codeph><i>&lt;initialiser&gt;</i></codeph></p>
+<p><b>Fixed-length arrays</b> </p>
+<p>If a member is declared as a fixed-length array in the <codeph>STRUCT</codeph> or <codeph>RESOURCE</codeph> definition,
+for example,</p>
+<codeblock id="GUID-B2D4E3E1-2F01-53A4-92AE-AB99E3D2A680" xml:space="preserve">WORD elements[10]</codeblock>
+<p>then you must not specify any more items than were given in the length. </p>
+<p>If fewer items are specified in the default initialisation (i.e. in the <codeph>STRUCT</codeph> definition),
+then an error also results. </p>
+<p>Note that no values will be given to unspecified elements at the end of
+the array, even if they have been default initialised in the <codeph>STRUCT</codeph> definition.
+Take the following example:</p>
+<codeblock id="GUID-02A51707-F693-588B-9B84-35D5F04E26EB" xml:space="preserve">STRUCT SAMPLE
+ {
+ BYTE bts[3]={1,2,3};
+ }</codeblock>
+<p>In the following resource:</p>
+<codeblock id="GUID-D1C8604D-6877-54EA-A880-14316BC11008" xml:space="preserve">RESOURCE SAMPLE default
+ {}</codeblock>
+<p>the output will be the whole default array</p>
+<codeblock id="GUID-6CA06CBD-03A3-5CA9-8E66-69E8F703470D" xml:space="preserve">0x01 0x02 0x03</codeblock>
+<p>but in this resource:</p>
+<codeblock id="GUID-4B3D2892-C408-547F-9D83-40963CF68D19" xml:space="preserve">RESOURCE SAMPLE first_specified
+ {
+ bts={5};
+ }</codeblock>
+<p>the output is:</p>
+<codeblock id="GUID-DE3C3486-1084-5A69-8BAE-0DDC0975D8B6" xml:space="preserve">0x05</codeblock>
+<p>with the second and third elements lost. </p>
+<p>If you specify only the second element in the <codeph>RESOURCE</codeph> definition,
+then the first element is taken from the default initialisation, the second
+from the explicit initialisation and the third element is lost. The following
+resource:</p>
+<codeblock id="GUID-0A8BB7DF-64BC-5399-921C-82E304B0F58D" xml:space="preserve">RESOURCE SAMPLE  second_specified
+ {
+ bts[1]=5;
+ }</codeblock>
+<p>results in the 2-byte output:</p>
+<codeblock id="GUID-90DEAE7C-41E3-5D14-B074-A9BDC3862363" xml:space="preserve">0x01 0x05</codeblock>
+<p>If, however, you explicitly initialise an element in the middle of an array
+without having supplied default values for array members before it, then an
+error will result.</p>
+<section><title>Using expressions to initialise array elements</title> <p>You
+may initialise array elements with expressions. You must explicitly initialise
+each member component of the array otherwise the expressions will be evaluated
+incorrectly. The following resource:</p> <codeblock id="GUID-59A9B709-7E44-51BE-A690-7E126EBF4483" xml:space="preserve">RESOURCE SAMPLE correct_expression
+ {
+ bts[0]=3+1;
+ bts[1]=2;
+ bts[2]=3;
+ }</codeblock> <p>will generate the correct output <codeph>0x04  0x02 0x03</codeph>.
+However, if you use the following syntax:</p> <codeblock id="GUID-943761CA-D4ED-5B8E-9997-17785E1881FB" xml:space="preserve">RESOURCE SAMPLE incorrect_expression
+ {
+ bts={3+1,2,3};
+ }</codeblock> <p>the output will be <codeph>0x03 0x02 0x03</codeph>. This
+is because the pre-processor treats <codeph>3+1</codeph> as a literal string
+that is then interpreted by the compiler as 3. In the resource <codeph>correct_expression</codeph> above
+the ‘=‘ sign forces the pre-processor to evaluate the expression.</p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e231612_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01677FF9-8FA1-5F0D-8223-46EDD20E3075.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-01677FF9-8FA1-5F0D-8223-46EDD20E3075"><title>LString</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname> LString</apiname></xref> is a convenient, general-purpose string class derived from <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>. LString adds automatic cleanup and on-demand buffer resize facilities. Like an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>, an LString can be passed to any function that is prototyped to take a <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> or a <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> reference. Again like an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>, an LString maintains its string data in a heap buffer. </p> <section><title>Need for LString</title> <p>While being simpler to use than existing descriptors in many cases, LString's use of heap allocation and it’s resizing variant methods clearly come with associated costs. Their use in performance-critical code should be carefully considered. On the other hand, LString's small stack footprint and ability to better-handle inputs of unpredictable size may make them a better choice when the alternative is a large, fixed-max-size <xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf</apiname></xref> or <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>. </p> </section> <section><title>Variants of LString</title> <p>The concrete <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString </apiname></xref> classes provided are <xref href="GUID-C788743B-AD3C-3508-83CD-942EFA243B26.dita"><apiname>LString8</apiname></xref> and <xref href="GUID-C5A68FFA-9AED-319D-B29D-723F9AA7FFD7.dita"><apiname>LString16</apiname></xref> for 8 and 16 bit data respectively. Two convenient Typedefs are also provided: </p> <p>LString for <xref href="GUID-C5A68FFA-9AED-319D-B29D-723F9AA7FFD7.dita"><apiname>LString16</apiname></xref> and LData for <xref href="GUID-C788743B-AD3C-3508-83CD-942EFA243B26.dita"><apiname>LString8</apiname></xref>  </p> </section> <section><title> Library and header file</title> <p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> is part of the EUser High Level library which is found in <xref href="GUID-6A6706AB-8859-3D2C-90B2-EE9E20B494BE.dita"><apiname>euserhl.dll</apiname></xref>. To use <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> you must link <filepath>euserhl.lib</filepath> library and include <filepath>estring.h</filepath> header file. </p> </section> <section><title> Characteristics of LString</title> <p>The following are the characteristics of LString: </p> <ul><li id="GUID-BD07F012-83A8-5A10-964C-DA710D73CAD9"><p> <b>Automatic in-place resizing:</b> LString replaces standard descriptor APIs with a corresponding leaving method that automatically expands the underlying buffer on-demand. </p> </li> <li id="GUID-986A6AD5-E6F4-51E1-B6CB-5B2E58A19954"><p> <b>Automatic Growth:</b> LString supports automatic growth when being manipulated directly as an LString. When an LString is passed to a function accepting a <xref href="GUID-AD7087EB-7922-3959-8C3C-D31B09A77540.dita"><apiname>TDes()</apiname></xref> that function will operate on it as if it is a fixed-max-length descriptor. </p> </li> <li id="GUID-DAC97247-345B-5E11-8E32-1A08920CB765"><p> <b>Compression:</b> It is difficult to predict the use of an LString object and therefore auto-compression would likely result in further allocations and be inefficient. If compression is desired this must be done manually via <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita#GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC/GUID-48151B50-C8C4-3011-9A76-8242EB7E1DDC"><apiname>LString::Compress()</apiname></xref>. </p> </li> </ul> </section> <section><title>LString APIs</title> <p>The following are the LString APIs: </p> <ul><li id="GUID-44F43752-D692-5A53-AFD9-D0F81C21ECD0"><p> <xref href="GUID-B7878C32-D093-3B15-A5B6-E91DA3A0961E.dita"><apiname>SetMaxLengthL()</apiname></xref>  </p> <codeblock id="GUID-507C3A66-1670-5AC4-88EE-FA84D1D1E08F" xml:space="preserve">void LStringX::SetMaxLength(TInt aMaxLength)</codeblock> <p> <b>Description:</b> This method sets the storage space allocated to this descriptor to the specified value by growing or compressing its buffer size. If the current length of the descriptor is greater than the specified max length, length is truncated to max length. </p> </li> <li id="GUID-29DA153C-459B-5ADD-919F-4BBCD50B0116"><p> <xref href="GUID-A3EE1898-D58C-3C15-8A98-7BEF85963AEB.dita"><apiname>ReserveFreeCapacityL()</apiname></xref>  </p> <codeblock id="GUID-54E2FE69-15A5-505C-A6D2-0E4217BF5359" xml:space="preserve">void LStringX::ReserveFreeCapacityL(TInt aExtraSpaceRequired)</codeblock> <p> <b>Description:</b> This method ensures that the remaining unused space is more than the supplied value. It may reallocate a larger storage space to meet the requirement. As a result MaxLength() and Ptr() may return different values afterwards, and any existing raw pointers to into the descriptor data may be invalidated. </p> </li> <li id="GUID-A75B4E77-51ED-5F83-AAB8-234C6D184C68"><p> <xref href="GUID-E016AEA6-D901-3AF4-AE52-CBE4308E962C.dita"><apiname>Compress()</apiname></xref>  </p> <codeblock id="GUID-33D642D8-E1A0-5004-A014-334DF9E2B7BE" xml:space="preserve">void LStringX::Compress()</codeblock> <p> <b>Description:</b> This method re-allocates a smaller descriptor buffer space to the current descriptor length. This may cause the string descriptor's heap buffer to be reallocated in order to accommodate the new data. As a result, MaxLength() and Ptr() may return different values afterwards, and any existing raw pointers to into the descriptor data may be invalidated. </p> </li> <li id="GUID-0824D4AC-6978-5455-B65F-06CEAB3A0CEF"><p> <xref href="GUID-ABC0096D-A6DD-3AAA-8AA6-57474737983A.dita"><apiname>Reset()</apiname></xref>  </p> <codeblock id="GUID-ACA006B1-ED9B-5EB9-BFA5-9249354D6399" xml:space="preserve">void LStringX::Reset()</codeblock> <p> <b>Description:</b> This method re-initialises the descriptor destroying its payload. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita">EUser High Level Library Overview</xref>  </p> <p><xref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita">EUser High Level Library Tutorials</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0174CE72-AEF6-5DA9-A9C5-074781BD544F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0174CE72-AEF6-5DA9-A9C5-074781BD544F" xml:lang="en"><title>Window
+Server Sessions</title><shortdesc>Each application uses a Window Server session to communicate with
+the Window Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Through the session, the application may control and interrogate </p>
+<ul>
+<li id="GUID-81DEE250-87BC-5C47-91E5-B8E480884111"><p>its own windows </p> </li>
+<li id="GUID-7F8F429D-AD79-5634-A815-CE7DB12F2866"><p>which events it wishes
+to receive </p> </li>
+<li id="GUID-E86BCF17-F124-5CE5-B07B-704BBD020F97"><p>all other window groups
+connected to the Window Server </p> </li>
+</ul>
+<p>The Window Server session provides a low-level interface for application
+programs’ use, using asynchronous services. To support an application framework,
+these services should be made higher-level, and the asynchronous services
+should be encapsulated into active objects. This function is performed by
+the UI control framework. The control framework is the basis for the GUI.
+Each event is then handled by the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive::RunL()</apiname></xref> member
+function of an active object. </p>
+<p>The <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>RWsSession</apiname></xref> class represents a <keyword>session</keyword> from
+the client to the Window Server. Through an <codeph>RWsSession</codeph>, the
+client program controls all its own windows, issues asynchronous requests
+for up to three types of event, and may in addition control certain system-wide
+Window Server behavior. </p>
+<p>The <codeph>RWsSession</codeph> is a client-server session derived from <codeph>RSessionBase</codeph>.
+In a typical application, an <codeph>RWsSession</codeph> owns a single <keyword>window
+group</keyword>, but the Window Server architecture allows more than one window
+group per session. An application owns several windows. See <xref href="GUID-D68E0A64-0E8A-5C52-9C5B-93BA3B80C200.dita">Window
+Groups and Applications</xref>. </p>
+<p>The Window Server session delivers events to the application via three
+event streams. A typical application handles each stream using an active object.
+See <xref href="GUID-08427065-B8E5-5194-B095-3B5213836BED.dita">Window Server Client-Side
+Events</xref>. </p>
+<p>The application draws to its windows using a <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CWindowGc</apiname></xref>.
+Draw functions are buffered in a client-side buffer in order to minimize client/server
+context switches. This buffer is flushed in certain circumstances by the Window
+Server and can also be flushed explicitly by the application. The <codeph>Flush()</codeph> and <codeph>SetAutoFlush()</codeph> functions
+are part of the <codeph>RWsSession</codeph> API. The <codeph>RWsBuffer</codeph> is
+privately owned by an <codeph>RWsSession</codeph> and is not as such part
+of the API. See <xref href="GUID-E5CDDA05-CD86-5C44-B9DA-3249D9C14396.dita">Client-Side
+Buffer</xref>  </p>
+</conbody><related-links>
+<link href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita"><linktext>Active objects</linktext>
+</link>
+<link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server
+Client-Side Library                 Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98"><title>EZLib Interface</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform implements compression and decompression with the open source ZLib library, which uses dynamic Huffman encoding and LZ77 compression. </p> <p>The user needs to know about the below: </p> <ul><li id="GUID-54501213-E449-5554-BF69-2C5A9FAB5B69"><p><xref href="GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98.dita#GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98/GUID-E1C36B5E-1750-5225-92CC-CE9DF8D6C981">About EZLib interfaces</xref>  </p> </li> <li id="GUID-26FF852D-5F70-52D6-9C62-E406CA9138E5"><p><xref href="GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98.dita#GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98/GUID-2D4AD89D-501C-52DB-83E9-691F9FA86095">How to select an EZLib interface</xref>  </p> </li> </ul> <section id="GUID-E1C36B5E-1750-5225-92CC-CE9DF8D6C981"><title>About EZLib interfaces</title> <p>The EZLib interfaces accomodates the following libraries: </p> <ul><li id="GUID-E730EA7A-1C78-592D-AFB1-15BC4178E5FE"><p>ZLib : It is the original open source code, written in C and slightly modified to run on Symbian platform. </p> </li> <li id="GUID-C3AD9FDD-A3CA-50FE-B93D-75845C8E1F97"><p>EZLib : It consists of a direct interface to the original C API and a C++ wrapper round that same API. </p> <p>Earlier versions of EZLib are still supported in Symbian platform but are deprecated for new development. The current implementation is backwards compatible with previous ones. </p> </li> </ul> <p>EZLib consists of the following dlls: </p> <ul><li id="GUID-421EBE71-9F2E-57C8-9989-437781822668"><p>libz.dll, a set of C APIs with the functionality of ZLib version 1.2.3. </p> </li> <li id="GUID-7108B065-C9CD-5DC6-89CA-2F81F847BEF0"><p>ezlib.dll, a set of C++ APIs with the same functionality as the C APIs, packaged to offer different variations of the functionality. </p> </li> <li id="GUID-7445BFDB-D54E-5ED2-9081-5975709F7C98"><p>ezip.dll, a set of C++ APIs with the same functionality as the C APIs, packaged to offer different variations of the functionality. </p> </li> </ul> </section> <section id="GUID-2D4AD89D-501C-52DB-83E9-691F9FA86095"><title>How to select an EZLib interface</title> <p>DLLs are used to implement the EZLib interface features. </p> <p>Symbian Developers must therefore decide about the interfaces (C or C++) and DLLs to be used. </p> <ul><li id="GUID-0AB51ACE-999E-5EB2-BF67-443BD60F790B"><p>If you want to read from a zip archive you must use C++ and include ezip.dll because this functionality is specific to Symbian platform and is not part of the open source ZLib library. </p> </li> <li id="GUID-59EE6445-2DA3-5716-90BC-C2EE6DF4BE51"><p>If you are writing client applications to run purely on Symbian platform you must use C++. </p> </li> <li id="GUID-2E16494D-7DDE-5063-A3B0-640F359DF4D1"><p>If you are integrating an existing application which already interfaces to the open source version of zlib you must choose C. </p> </li> <li id="GUID-768ADF17-B2B1-5933-91ED-6E5759E14255"><p>If you are writing a cross-platform application to run on various platforms including Symbian platform you should probably choose C. </p> </li> <li id="GUID-915F6514-1421-53C8-B11C-0DC73C1B9C3D"><p>If you simply want the compression and decompression functionality without file input and output you should include ezlib.dll. This DLL excludes the API functions with names beginning in gz such as gzread() and gzwrite() supplying the I/O functionality known as gzio. Symbian platform which previously used EZlib does not use gzio and you should chooose ezlib.dll when working with it. </p> </li> <li id="GUID-9AB5CEB8-19FB-574E-B56E-E7312CF53815"><p>If you want gzio input and output functionality you should choose libz.dll. However, use of this DLL entails memory and performance overheads so you should only use it if you definitely need the additional functionality. </p> </li> </ul> <p>The appropriate header file must be included in the application to implement your choice of DLL. </p> </section> </conbody><related-links><link href="GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita"><linktext>Zip Compression Library Overview</linktext> </link> <link href="GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4.dita"><linktext>Compressing and Decompressing
+                File - Zip Format </linktext> </link> <link href="GUID-548CC331-8E38-5627-A925-EA386BE90258.dita"><linktext>Compressing and Decompressing
+                File - GZip Format </linktext> </link> <link href="GUID-C3086910-D7B4-5549-BF65-374C8B602E8F.dita"><linktext>Compressing and
+                Decompressing Memory Streams </linktext> </link> <link href="GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1.dita"><linktext>Decompressing File Archives</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e217409_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-01979029-C009-5FD3-9925-2B7945FB96A6"><title>Restarting a Network Connection Tutorial</title><shortdesc>This section describes the steps used to start a network connection that was stopped due to contention. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-6799E3F3-353E-5C00-A38C-D32F888392AA-GENID-1-6-1-19-1-1-5-1-4-1-5-1-8-1-3-1"><title>Introduction</title> <p>A low priority connection is terminated when a contention issue occurs and the incoming connection has a higher priority. The low priority connection can be restarted when the higher priority connection is complete. For example, if an always-on Internet connection is terminated to enable the user to send an MMS, the Internet connection is restarted when the message is sent. </p> </section> <section><title>Introduction</title> <ol id="GUID-409D0186-1BE4-5F7B-999D-0A9FFDED5F14"><li id="GUID-99D5A504-3DE4-59A1-AFC0-A49D13A8B7F5"><p>To terminate the high priority connection on of the following occurs: </p> <ol id="GUID-CF81E2BE-E5E4-5143-AA5C-B0355FB9F9BE"><li id="GUID-E8FE9288-9E3C-58CC-B7AA-435FB1D8DFBF"><p>The Connection Provider (CPR) receives a <codeph>TStopNormal</codeph> message to terminate the process. </p> </li> <li id="GUID-DC6D3CEA-8CD1-5B36-856A-A20AEED6DA0E"><p>The connection remains idle and is automatically terminated. </p> </li> </ol> </li> <li id="GUID-9F56D151-DD81-5706-B82B-3194FA85DAD0"><p>The PDP Tier Manager does the following: </p> <ol id="GUID-E813DD8A-5F6C-5D92-9F99-B596FC7CB8D7"><li id="GUID-6D80A333-6517-5314-B8CA-797AF13D21C3"><p>Indicates to the PDP Meta-Connection Provider (MCPR) of the low priority connection that it can restore the connection. </p> </li> <li id="GUID-D14D495F-5C98-5C80-8A90-50C22806ADC3"><p>The PDP MCPR sends an availability notification to the <codeph>CConnection</codeph> of the low priority connection. </p> </li> </ol> </li> <li id="GUID-AA69E7A9-F16C-5284-9406-C6874569C897"><p> <codeph>CConnection</codeph> of the low priority connection receives the availability notification and uses <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-C7F27821-BE25-3560-B1A9-74D1A2BB38A9"><apiname>RConnection::Start(TConnPrefList)</apiname></xref> to establish the connection. </p> </li> </ol>  </section> <section><title>Restoring a connection </title> <p>Use the following code to ensure a stopped connection is restored when the higher priority connection has completed. </p> <codeblock id="GUID-92251970-53D1-5DE7-A67E-BC392C43B470" xml:space="preserve">
+
+    TConnPrefList* prefs = TConnPrefList::NewL();
+    CleanupStack::PushL(prefs);
+    TConnAPPref* APPref = TConnAPPref::NewL(iSnapNumber);
+    CleanupStack::PushL(APPref);
+    TConnAutoStartPref* autoPref = TConnAutoStartPref::NewL();
+    CleanupStack::PushL(autoPref);
+    prefs-&gt;AppendL(APPref);
+    prefs-&gt;AppendL(autoPref);
+
+    error = iConnection-&gt;Start(*prefs);  //Synchronous start. 
+    // For asynchronous variant iConnection-&gt;Start(*iPrefs,  iStatus), you need to     // store “prefs” as a class member and delete them in RunL .
+
+    delete APPref;
+    delete autoPref;
+    prefs-&gt;Remove(0);
+    prefs-&gt;Remove(0);
+    delete prefs;
+
+</codeblock> </section> </conbody><related-links><link href="GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E.dita"><linktext>What is Contention?</linktext> </link> <link href="GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C.dita"><linktext>What is Contention
+                Management?</linktext> </link> <link href="GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita"><linktext>What are Access Point
+                Priorities?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D"><title>Disconnecting ACL links</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A link layer level <codeph>ioctl</codeph> is provided to disconnect an baseband link without first closing the open sockets using that link. This provides the ability to quickly disconnect one or all current Bluetooth asynchronous connection-oriented links (ACL) open on a device. </p> <section><title>How to disconnect ACL links</title> <p>The <xref href="GUID-8C16D394-89A5-3D26-84C0-B1E27CB93D82.dita"><apiname>TLMDisconnectACLIoctl</apiname></xref> structure contains the device address of the remote device to be disconnected and the reason code to be supplied during the disconnection. </p> <p><b>Basic Procedure</b> </p> <p>To directly disconnect individual Bluetooth ACL links: </p> <ol id="GUID-3C90E888-F916-5C02-892E-23B8EFBF5611"><li id="GUID-43EEBD38-73D0-5435-BCB3-8E68F8A5EA86"><p>Create a <xref href="GUID-C9F64608-D4E1-3CD4-A25D-22F26D8E81EF.dita"><apiname>TLMDisconnectACLBuf</apiname></xref> packaged structure, which contains the address of the Bluetooth device to be disconnected and the reason to be given to the other device for its disconnection. </p> </li> <li id="GUID-048AC487-6C80-52D7-AA98-A66FBC9B05FE"><p>Call the <codeph>KLMDisconnectACLIoctl</codeph> ioctl on the socket with the link manager level <codeph>KSolBtLM</codeph>, passing the package buffer. </p> </li> </ol> <p><b>Example: Disconnecting ACL links</b> </p> <p>Here is a simple disconnect example. </p> <ol id="GUID-DCC41584-154F-5D87-9FE8-84780EA77DB9"><li id="GUID-982FF396-8845-5850-B969-42D5238A4471"><p>Starting with an open socket </p> <codeblock id="GUID-B492479C-BFAA-5925-A63E-300739D1DD16" xml:space="preserve">RSocket sock;
+ret=sock.Open(ss,pInfo.iAddrFamily,pInfo.iSockType,pInfo.iProtocol);</codeblock> </li> <li id="GUID-20985159-E0C5-56FA-BD3C-BC57CEE334AA"><p>Identify the Bluetooth device to be disconnected and provide a reason for the disconnect. </p> <codeblock id="GUID-994ED249-45D0-5519-8425-6C697FCEF60F" xml:space="preserve">TLMDisconnectACLBuf aclConnBuf;
+aclConnBuf().iDevAddr = devAddr; // devAddr is a TBTDevAddr
+aclConnBuf().iReason = 0x13; // Remote User Ended Connection
+TRequestStatus stat;</codeblock> </li> <li id="GUID-25D62E85-3017-5762-8545-7279B5B019A4"><p>Send <codeph>Ioctl</codeph> command to disconnect. </p> <codeblock id="GUID-98010DF4-BCE1-5165-A286-65E37C8BCDC9" xml:space="preserve">sock.Ioctl(KLMDisconnectACLIoctl, stat,  &amp;aclConnBuf, KSolBtLM);
+User::WaitForRequest(stat);</codeblock> </li> </ol> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-F8A5A2B6-E93D-5615-BC8E-FF8A4C54D30C"><p> <xref href="GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita">Listening for Incoming Bluetooth Connections</xref>  </p> </li> <li id="GUID-B2107098-26AA-5B59-AEBE-2D39363AEB8A"><p> <xref href="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita">Handling the Local Device Name</xref>  </p> </li> <li id="GUID-3D789CC2-B228-5710-8DA1-5C23DDEF4D27"><p> <xref href="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita">Performing Low-level Configuration</xref>  </p> </li> <li id="GUID-D758F0E1-DBF4-5189-91EF-3D58E7F212EA"><p> <xref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita">Debugging the Host Controller</xref>  </p> </li> <li id="GUID-7BE63877-6C7E-5F57-9E2F-D585AD3C6986"><p> <b>Disconnecting ACL links</b> - This document </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01E7AE98-024C-4119-87D0-5BB9D53DA119.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-01E7AE98-024C-4119-87D0-5BB9D53DA119" xml:lang="en"><title>Introduction
+to <codeph>libgmodule</codeph></title><shortdesc><codeph>libgmodule</codeph> has APIs that provide a portable method
+for dynamically loading 'plug-ins' or, in other words, DLLs. Any program that
+wants to dynamically load modules must be linked to <codeph>libgmodule</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In order to use the <codeph>libgmodule</codeph> APIs, the user must check
+whether dynamic loading of DLLs is supported by the platform by using the <codeph>g_module_supported()</codeph> API
+which returns TRUE if the dynamic loading of modules is supported. P.I.P.S.
+provides the implementation of <codeph>libdl</codeph>, where dynamic loading
+of modules is supported, but to write code which runs across platforms the
+user must do a check before using the <codeph>libgmodule</codeph> APIs.  </p>
+<p>If the dynamic loading of DLLs is supported, use <codeph>g_module_open()</codeph> to
+open the module. It takes the name of the module as the first argument and
+the flags as the second argument.</p>
+<note><codeph>G_MODULE_BIND_LOCAL</codeph> is the only flag currently supported.
+The other flags are not supported. If the user specifies any other flag, the
+module is loaded using the flag <codeph>G_MODULE_BIND_LOCAL</codeph> and not
+by the user-specified flag.</note>
+<p><b><codeph>GModule * g_module_open(const gchar *file_name, GModuleFlags
+flags);</codeph></b></p>
+<ul>
+<li><p><b><codeph>file_name</codeph>:</b> The name of the file containing
+the module.</p></li>
+<li><p><b><codeph>flags</codeph>:</b> The flags used for opening the module. </p></li>
+</ul>
+<p>Once the module is opened, the user can find the module symbols (for example,.
+function names) using the function </p>
+<p><codeph>g_module_symbol()</codeph>.</p>
+<p><b><codeph>gboolean g_module_symbol (GModule *module, const gchar *symbol_name,
+gpointer *symbol);</codeph></b></p>
+<ul>
+<li><p><b><codeph>*module</codeph>:</b> This is a pointer returned when a
+module is opened using <codeph>g_module_open()</codeph>.</p></li>
+<li><p><b><codeph>symbol_name</codeph>:</b> This is the ordinal number of
+the symbol that one wants to open. There is a difference between Symbian GLib
+and OSS GLib; as in Linux the <codeph>symbol_name</codeph> is the name of
+the symbol and not a number. The ordinal number must be passed as a string
+and not a number.</p></li>
+<li><p><b><codeph>symbol</codeph>:</b> This is the pointer to the symbol value </p></li>
+</ul>
+<p>The <codeph>GModule</codeph> can be closed by using the <codeph>g_module_close()</codeph> API.
+This API returns TRUE if it successfully closed the module; else it returns
+FALSE.</p>
+<p><b><codeph>gboolean g_module_close(GModule *module);</codeph></b></p>
+<ul>
+<li><p><b><codeph>*module</codeph></b> The <codeph>GModule</codeph> to close. </p></li>
+</ul>
+<p>The following example code explains the usage of the <codeph>libgmodule</codeph> APIs.
+It opens a module <filepath>libmoduletestplugin_a.dll</filepath> and uses
+its <codeph>gplugin_a_func1()</codeph> API which is ordinal number 1. Finally,
+the module is closed.</p>
+<codeblock xml:space="preserve">#include &lt;gmodule.h&gt;
+#include &lt;glib.h&gt;
+typedef int (*SimpleFunc) (void);
+
+int main()
+{
+  GModule *module = NULL;
+  gpointer func;
+  SimpleFunc f_a;
+  int retVal;
+  
+  if (!g_module_supported())
+  {
+        g_print ("Dynamic Opening of modules is not supported");
+        return 1;
+  }
+  
+  /* G_MODULE_BIND_LAZY is overridden and the module is opened with
+   * flag G_MODULE_BIND_LOCAL
+   */
+  module = g_module_open("libmoduletestplugin_a.dll",G_MODULE_BIND_LAZY);
+  
+  // 1 is the ordinal number for gplugin_a_func1
+  if(module &amp;&amp; g_module_symbol(module, "1" ,&amp;func)) 	
+  {
+        f_a = (SimpleFunc)func;
+        retVal = f_a();	
+        g_print("Function at ordinal number 1 of module libgmodule_a returns %d",retVal);
+  }
+  else
+  {
+        g_print("Error quering symbol at ordinal number 1");
+        return 1;
+  }
+  
+  return 0;
+}</codeblock>
+<p>See the <b>Libgmodule APIs</b> section in <xref href="GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita">Differences
+between OSS and Symbian GLib</xref> for more details about <codeph>libgmodule</codeph> limitations
+in the Symbian GLib implementation.  </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-01F0F2D6-CB67-45B4-B0E4-1A85D113396B_d0e56401_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-01F6E612-B151-5FC3-B08A-E17A7987F029.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-01F6E612-B151-5FC3-B08A-E17A7987F029"><title>Snmtool Command Syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <filepath>snmtool</filepath> utility is used to create plug-in data files (SNM files) which contain mappings between standard character set identifiers and their corresponding Symbian UIDs. </p> <p>SNM stands for Standard Names and MIB enums. Application developers can pass the standard name or MIB enum value of the character set to <codeph>CCnvCharacterSetConverter::ConvertStandardNameOfCharacterSetToIdentifierL()</codeph> or <codeph>CCnvCharacterSetConverter::ConvertMibEnumOfCharacterSetToIdentifierL()</codeph> respectively. The function uses the SNM files to generate the converter UID. </p> <section><title>Syntax</title> <p> <b>Invocation syntax</b>  </p> <p> <codeph>snmtool</codeph>  <varname>input file</varname>  <varname>output
+          file</varname>  </p> <p> <b>Arguments</b>  </p> <table id="GUID-845AADE5-FFC3-5A1E-9643-04F5EB6505E0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <varname>input file</varname>  </p> </entry> <entry><p>The filename of the input text file. </p> </entry> </row> <row><entry><p> <varname>output file</varname>  </p> </entry> <entry><p>The filename of the output binary SNM file. This must be installed in the <filepath>\system\charconv\</filepath> directory. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Example</title> <p><userinput>snmtool d:\charconvfiles\basicsnm.txt d:\charconvfiles\basics.snm</userinput> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-02200D23-E8ED-432A-9D71-694A4558BD20.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-02200D23-E8ED-432A-9D71-694A4558BD20" xml:lang="en"><title>Many
+simultaneous soft notifications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Soft notifications are stacked in case there are more than one pending
+at a time: after the topmost one is discarded, the one following it will be
+displayed. Each notification has a priority value that determines the order
+of the notifications.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-023268BB-8C52-51A1-9E3B-4C7E265DFDAB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-023268BB-8C52-51A1-9E3B-4C7E265DFDAB"><title>-wrap</title><prolog><metadata><keywords/></metadata></prolog><conbody><codeblock id="GUID-1B836AA0-6B54-57A7-BF00-7D117924FBA0" xml:space="preserve">-wrap[=&lt;value&gt;]</codeblock> <p>A static analysis tool can be invoked if <codeph>[=&lt;value&gt;]</codeph> is not specified. For example, <codeph>-wrap</codeph>. </p> <p>The name of the static analysis tool executable is set using the environment variable <codeph>ABLD_COMPWRAP</codeph>. For more information, see <xref href="GUID-61459132-3AC2-55D3-AC28-D6FA689409E6.dita">How to invoke a static analysis tool using abld</xref>. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e284687_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73-master.png has changed
Binary file Symbian3/SDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e313957_href.png has changed
Binary file Symbian3/SDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e253000_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-026164D5-6A32-5688-9D28-926DC0A61F35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-026164D5-6A32-5688-9D28-926DC0A61F35"><title>grep</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>grep [options] PATTERN [FILE...]</userinput> </p> <p><userinput>grep [options] [-e PATTERN | -f FILE] [FILE...]</userinput> </p> <p>The <codeph>grep</codeph> command searches the named input files for lines containing a match to a given pattern. For more information about using the <codeph>grep</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://www.freebsd.org/cgi/man.cgi</xref> by specifying <codeph>grep</codeph> as the search keyword and by selecting the <b>FreeBSD 6.2-Release</b> option from the release list. </p> <p>The following options are <b>not</b> supported by the Symbian version of the <codeph>grep</codeph> command: </p> <ul><li id="GUID-F3DD8A54-B824-5107-88D6-7403DBE40A3E"><p> <codeph>-b, --byte-offset</codeph> </p> </li> <li id="GUID-D32B2C4A-C9D9-59D3-80E2-4BDDBDC84446"><p> <codeph>--binary-files=TYPE </codeph> </p> </li> <li id="GUID-9E651087-6C7D-5857-9235-E42CE80ACC8B"><p> <codeph>--colour[=WHEN], --color[=WHEN] </codeph> </p> </li> <li id="GUID-F07614AC-1E71-5012-9F59-4EF29A6BE44C"><p> <codeph>-D ACTION, --devices=ACTION </codeph> </p> </li> <li id="GUID-47F601AE-1C05-52F9-ADEB-0269801826E9"><p> <codeph>-P, --perl-regexp </codeph> </p> </li> <li id="GUID-A1C5C7A2-839E-5A3B-9A9A-78F6C4542AE0"><p> <codeph>-f FILE, --file=FILE </codeph> </p> </li> <li id="GUID-B70DF847-D213-50C8-BF36-B40DCF7CC302"><p> <codeph> -G, --basic-regexp </codeph> </p> </li> <li id="GUID-C142C809-E176-5C92-A654-EB28C86C51EA"><p> <codeph>--help </codeph> </p> </li> <li id="GUID-96CAB075-F0DD-592F-B4BA-0E69C77372CB"><p> <codeph>-I </codeph> </p> </li> <li id="GUID-287961A7-A211-555B-9E72-67D48A2B4E23"><p> <codeph>--label=LABEL </codeph> </p> </li> <li id="GUID-189537DE-5357-5A24-BEEF-764994BF93BE"><p> <codeph>--line-buffered </codeph> </p> </li> <li id="GUID-9EC6035D-D3D6-5212-BC6A-E9E41F9464B6"><p> <codeph> -U, --binary </codeph> </p> </li> <li id="GUID-1CFD495F-70CE-5803-AAE1-8116F0B831BD"><p> <codeph> -u, --unix-byte-offsets </codeph> </p> </li> <li id="GUID-9148735A-1002-5B02-9F5F-0E524C29D08A"><p> <codeph> -V, --version </codeph> </p> </li> <li id="GUID-7B97DA61-C80E-56FF-87FA-6B120DBC30FA"><p> <codeph>-y </codeph> </p> </li> <li id="GUID-165E0027-3FCE-5701-8D1A-EFD3710D4BF8"><p> <codeph>--null </codeph> </p> </li> <li id="GUID-F29032AC-55A4-5799-A42C-CFF475327689"><p> <codeph>-Z, --decompress </codeph> </p> </li> <li id="GUID-48EA4689-E555-5BE1-9559-30DE63E896C6"><p> <codeph> -J, --bz2decompress </codeph> </p> </li> </ul> <p> <b>Note:</b> You cannot use the <codeph>grep</codeph> command to search for patterns by taking input from a standard input. </p> <section><title>Copyright information</title> <p>For information about documentation copyrights associated with the <codeph>grep</codeph> command, see <xref scope="external" href="http://www.freebsd.org/copyright/freebsd-doc-license.html">http://www.freebsd.org/copyright/freebsd-doc-license.html</xref> and <xref scope="external" href="http://www.gnu.org/licenses/fdl.html">http://www.gnu.org/licenses/fdl.html</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-02659624-4C27-573C-BE2E-0250D860BEA3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-02659624-4C27-573C-BE2E-0250D860BEA3"><title>Media Client Video Display Overview</title><shortdesc>This document provides an overview of the Media Client Video Display library that is used by the Video Client library in the Multimedia Framework component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Media Client Video Display library allows you to display video in a window and to support a graphic surface. </p> </section> <section><title>Media Client Video Display library details</title> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-95C28A17-6CB2-5FAC-A687-30CB0D597683"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short description</entry> </row> </thead> <tbody><row><entry><p> <filepath>mediaclientvideodisplay.dll</filepath>  </p> </entry> <entry><p> <filepath>mediaclientvideodisplay.lib</filepath>  </p> </entry> <entry><p>These files are used to implement the display video functionality and support graphics surfaces. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architecture</title> <p>Media Client Video Display is a standalone library used by the <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client</xref> library to support video display. This allows you to use video display functionality separately from the client utilities. The class diagram for<xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita"><apiname>CMediaClientVideoDisplay</apiname></xref> is as follows: </p> <fig id="GUID-F8823BC8-AACB-5B7A-A751-11C1C326B71E"><image href="GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e295604_href.png" placement="inline"/></fig> </section> <section><title>Description</title> <p>The Media Client Video Display library is a client interface to access display functions. The display functions are as follows: </p> <ul><li id="GUID-188BF5BC-EE01-5593-B7BD-57253F0C465E"><p>Adding a new window </p> </li> <li id="GUID-08928C55-2B49-5EFC-B1E1-35AB5271A6C3"><p>Redrawing the window </p> </li> <li id="GUID-69333E32-73A4-5354-9513-7D91FFF6D6D5"><p>Setting the video data for automatic and specified dimension scaling </p> </li> <li id="GUID-A53EAB56-691A-5A5C-AF0E-60B4F67B6997"><p>Rotating the video image </p> </li> <li id="GUID-D63B8851-2A38-5DF2-A2A8-5EDD3BB6A198"><p>Clipping the window </p> </li> <li id="GUID-A8A4DF2F-AC7A-5005-A5DD-AF996740557E"><p>Setting the video extension on the screen that is relative to the window. </p> </li> </ul> <p>The Media Client Video Display library allows you to perform rendering of video to graphics surfaces. It provides APIs to: </p> <ul><li id="GUID-4235EB20-E591-5A83-9380-799122774221"><p>Create the graphic surface </p> </li> <li id="GUID-4E7AF838-3DAD-5A28-B4FF-7AF9882A2716"><p>Update the graphic surface </p> </li> <li id="GUID-4A154439-4857-5A1D-97D6-0DB1E18BAAD3"><p>Surface parameters changed during video play back </p> </li> <li id="GUID-66212705-E07F-55BB-8404-EE7F392F08AE"><p>Remove the graphic surface. </p> </li> </ul> </section> <section><title>APIs</title> <p>The key class of Media Client Video Display is as follows: </p> <table id="GUID-65E3B808-88AF-569A-847F-DE3ABE4CCC1B"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita"><apiname>CMediaClientVideoDisplay</apiname></xref>  </p> </entry> <entry><p>This class is an interface to add or remove video display windows. The <codeph>CMediaClientVideoDisplay</codeph> class supports graphics surfaces and provides display handling functions like video extension, scaling and rotation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Using Media Client Video Display</title> <p>Clients use <codeph>CMediaClientVideoDisplay</codeph> to: </p> <ul><li id="GUID-104EE148-7167-5F88-B9BB-42BA7A39B08F"><p>Display video in a window </p> </li> <li id="GUID-962251B9-D784-5DB9-AB52-293039E78F9A"><p>Support graphics surfaces. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-152BF5C3-CE32-5174-A043-1B2D5D8168C3.dita"><linktext>Media Client Video Display
+                Tutorial</linktext> </link> <link href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita"><linktext>Video Client Overview</linktext> </link> <link href="GUID-ADA8CECB-0E70-5B9C-8F36-0714AAF0CD13.dita"><linktext>Graphics Composition
+                Surfaces</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e3275_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-026E865E-12FA-59A9-B923-309B65790E23.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-026E865E-12FA-59A9-B923-309B65790E23" xml:lang="en"><title>Creating
+a FAT Filename Conversion Plug-in</title><shortdesc>This section describes how to create a FAT Filename Conversion
+plug-in DLL. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>This tutorial assumes that you have an understanding of the following: </p> <ul>
+<li id="GUID-09E0AD13-A9EA-5A1B-956F-2AC4812F99FC"><p><xref href="GUID-66231EA2-BDEF-582D-A4B9-F356B590038D.dita">FAT
+Filename Conversion Plug-ins Overview</xref> introduces Windows code page
+and the main purpose of the Plug-ins component. </p> </li>
+</ul> </prereq>
+<context><p>The flowchart below shows the steps to create a Fat Filename Conversion
+plug-in DLL. </p> <fig id="GUID-B3799729-B2DB-55E3-AE09-E045A9E1AE8B">
+<image href="GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e399939_href.jpg" placement="inline"/>
+</fig> <p> <b>Note</b>: To create the plug-in DLL, the <filepath>unicodeconv.cpp</filepath> file
+is needed. It provides the functions to convert text between Unicode and a
+foreign encoding. It is available on the <xref href="https://developer.symbian.org/xref/sfl/xref/MCL/sf/os/kernelhwsrv/userlibandfileserver/fatfilenameconversionplugins/src/" scope="external">Symbian Foundation</xref> web site. </p><p>This tutorial
+uses the example of <codeph>CP1250</codeph> to explain the process of creating
+a plug-in DLL. </p> </context>
+<steps id="GUID-8037DE6A-A5AB-575A-A9F5-0A6CB42651D4">
+<step id="GUID-21741F55-882F-51B9-BA77-EBFFED6B7D5E"><cmd>Create a source
+file using a text editor and save it as, for example <filepath>d:\charconvfiles\data\cp1250.txt</filepath>.
+This file contains pairs of hexadecimal numbers. The first number in each
+pair is the encoding of a character in CP1250 and the second is the Unicode
+encoding of the same character. </cmd>
+<stepxmp><codeblock id="GUID-D6C46177-19BC-5AB6-9E0D-FEC339F71948" xml:space="preserve">...
+0x00    0x0000    #NULL
+0x01    0x0001    #START OF HEADING
+0x02    0x0002    #START OF TEXT
+0x03    0x0003    #END OF TEXT
+0x04    0x0004    #END OF TRANSMISSION
+0x05    0x0005    #ENQUIRY
+0x06    0x0006    #ACKNOWLEDGE
+...</codeblock> </stepxmp>
+<info>The source file has the same syntax as a cnvtool source file. For more
+information about the syntax, refer to <xref href="GUID-6796BA71-47A7-5465-89F2-BD0AEF2E4EE7.dita">Cnvtool
+Source File</xref>. </info>
+</step>
+<step id="GUID-10B9D3BB-7B21-5AC0-89B0-5E89C5796F11"><cmd/>
+<info>Start a command prompt to run the ConversionTable tool on the source
+as follows:<p><userinput><cmdname>cd </cmdname><parmname>d:\Symbian\epoc32\tools</parmname></userinput></p><p><userinput><cmdname>ConversionTable.pl </cmdname><parmname>d:\charconvfiles\data\cp1250.txt</parmname></userinput></p> </info>
+<info>This process generates a C++ source code file called <filepath>cp1250.cpp</filepath>.
+It is referred to as the ConversionTableTool-generated cpp file, which contains
+the data structure. The data structure is used by <filepath>unicodeconv.cpp</filepath> for
+the encoding conversion. </info>
+</step>
+<step id="GUID-D4F5D984-62E2-53F2-944E-E6E387ACA697"><cmd/>
+<info>Create an mmp file which is used to build the plug-in DLL. </info>
+<stepxmp><codeblock id="GUID-468B6E29-27BB-547B-A00A-5FF05D0A6E2C" xml:space="preserve">TARGET            cp1250.dll
+CAPABILITY            All
+TARGETTYPE            dll
+
+UID        0x100039e6 0x10206A9C
+VENDORID     0x70000001
+
+OS_LAYER_SYSTEMINCLUDE
+USERINCLUDE            ../inc
+
+SOURCEPATH            ../src
+SOURCE            unicodeconv.cpp
+
+SOURCEPATH            +/build/generated/fatcharsetconv
+SOURCE            cp1250.cpp
+
+DEFFILE             fatCnv.def
+
+LIBRARY            euser.lib
+
+SMPSAFE</codeblock> </stepxmp>
+</step>
+</steps>
+<postreq><p>Build the plug-in DLL and install it into the <filepath>\sys\bin\</filepath> directory.
+The DLL is then available to be loaded and called by the File Server.</p></postreq>
+</taskbody><related-links>
+<link href="GUID-2068DA42-AE77-5213-B3CF-C3AB7F2188BE.dita"><linktext>Using a FAT
+Filename Conversion Plug-in</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A" xml:lang="en"><title>Transparent
+Windows</title><shortdesc>This topic introduces the window transparency feature, which you
+can use to create semi-transparent UI content over other UI content. In ScreenPlay
+you can also use transparent windows to create semi-transparent UI content
+over external content, such as video and OpenGL ES. For example, in ScreenPlay
+you can display a semi-transparent dialog box over an OpenGL ES game. Transparent
+windows are implemented using alpha compositing, which means that the transparency
+information is embedded within the drawing commands. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <i>Note</i>: Semi-transparent UI content over content provided by Direct
+Screen Access (DSA) has never been supported and ScreenPlay does not change
+this. </p>
+<p> <b>Variant</b>: ScreenPlay and non-ScreenPlay. <b>Target audience</b>:
+Application developers. </p>
+<section><title>Alpha compositing</title> <p>In alpha compositing, an alpha
+channel is used to store opacity information along with the color values for
+each pixel. For example, if the color is represented as RGB values, the pixel
+values are typically stored as RGBA, where the final value is the alpha value.
+This represents the percentage opacity. Like the RGB values, the alpha value
+is frequently expressed in the range of 0 (completely transparent) to 255
+(fully opaque). For example, (0, 0, 0, 0) represents fully transparent black
+and (255, 255, 255, 127) represents white that has 50% opacity. </p> <p>Each
+of the RGB values are multiplied by the alpha percentage to give the opacity
+of the pixel. In order to reduce the need for multiplication during the compositing
+process, the RGB values are sometimes multiplied by the alpha value before
+storage. This is known as <b>premultiplied alpha</b> format. For example,
+a premultiplied alpha representation of white that has 50% opacity is (127,
+127, 127, 127). </p> </section>
+<section><title>Enabling transparency</title> <p>To enable transparency, call
+the <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::SetTransparencyAlphaChannel()</apiname></xref> method
+on the window (which must be an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> type)
+before it is activated. The transparency is then determined by the alpha values
+of the content rendered to the window. Typically you set the background to
+be fully or partially transparent, as shown in the following example: </p> <codeblock id="GUID-C33B91C2-D83C-5A6D-91A5-AB29B8EF46A0" xml:space="preserve">// Set transparency mode on.
+iWindow.SetTransparencyAlphaChannel();
+    
+// Set the background to be fully transparent black.
+iWindow.SetBackgroundColor(TRgb(0,0,0,0)); 
+    
+// Activate the window.
+iWindow.Activate();
+    
+// Begin drawing to the window.
+...  </codeblock></section>
+<section><title>Note</title><p>In earlier versions of the Symbian
+platform, it was possible to create transparent windows using a mask and the <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> class's <codeph>SetTransparencyFactor()</codeph>, <codeph>SetTransparencyBitmap()</codeph> and <codeph>SetTransparencyWsBitmap()</codeph> methods. <b>This mechanism is now deprecated and these methods are no longer
+functional</b>.</p><p>A new application and UI framework is planned for Symbian^4
+(S^4). In order for AVKON applications (and clients that draw using <xref href="GUID-5FAF3401-9EC6-3411-9AB3-BBDB4A448C65.dita"><apiname>CWindowGC</apiname></xref>)
+to work correctly on this new framework, the main view must be opaque. See <xref href="GUID-29272C8D-A0F6-4861-90FB-D1637D0D8CD8.dita">How will the New Application
+Architecture Affect my Applications?</xref> for more information.</p> </section>
+</conbody><related-links>
+<link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext>
+</link>
+<link href="GUID-29272C8D-A0F6-4861-90FB-D1637D0D8CD8.dita"><linktext>How will
+the New Application Architecture Affect my Applications?</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-02C9C31A-6563-59E4-BF46-129F4ED95087.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-02C9C31A-6563-59E4-BF46-129F4ED95087" xml:lang="en"><title>SQLite 3</title><shortdesc>The SQLite 3 component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-02E674F7-86F1-5A9C-8189-F4CEE80D9FBD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-02E674F7-86F1-5A9C-8189-F4CEE80D9FBD" xml:lang="en"><title>How
+to remove elements</title><shortdesc>It is possible to remove one or several contiguous elements from
+any array. Deleting elements from an array may not automatically free up memory.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Elements can be removed from an array.</p>
+<p>The following code fragment shows the deletion of the second <codeph>TElement</codeph> object
+from a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> array:</p>
+<codeblock id="GUID-B76A9F01-85DA-5BE3-A89E-67AEA5011A5F" xml:space="preserve">class TElement
+ {
+public :
+ TElement();
+public :
+ TBuf&lt;4&gt; iData;
+ };</codeblock>
+<codeblock id="GUID-97D12B24-E03C-549F-975D-E2DD72A11A81" xml:space="preserve">CArrayFixFlat&lt;TElement&gt;* fixflat;
+fixflat = new (ELeave) CArrayFixFlat&lt;TElement&gt;(3);
+...
+...        // elements added to the array at some point
+...
+fixflat-&gt;Delete(1);</codeblock>
+<p>To delete what are now the third and fourth elements from the array, i.e.
+the two contiguous elements starting at position two, use <codeph>Delete()</codeph> and
+specify both the starting position and the number of elements:</p>
+<codeblock id="GUID-041A95DA-A332-5CBE-8D28-D0257DCC5255" xml:space="preserve">fixflat-&gt;Delete(2,2);</codeblock>
+<section id="GUID-B9040865-C163-4A0B-B509-DAFA8BC39CE2"><title>Notes</title> <ul>
+<li id="GUID-AFA7DA8D-26A5-5FCA-A4F8-25627D209CE8"><p>Deleting elements from
+an array does not automatically compress the array buffer; the space allocated
+to the array buffer remains unchanged. This means that adding an element to
+a <i>same length</i> type array <i>after</i> deleting an element is <i>guaranteed</i> not
+to fail. However, this is <i>not</i> true for a variable length array and
+is only true for a packed array if the size of the new element is less than
+or equal to the size of the deleted element.</p> </li>
+<li id="GUID-3DE5FD87-8557-586C-84E7-7F2105483296"><p>Excess space in the
+array buffer can be removed using the <codeph>Compress()</codeph> member function.
+This reduces the capacity of the array. For a same length flat array, an attempt
+to add an element after compression causes re-allocation of the flat buffer.
+To compress the array:</p> </li>
+</ul> <codeblock id="GUID-A9C18AD8-1D3B-5F2A-80A6-FD06846C1D0C" xml:space="preserve">fixflat-&gt;Compress();</codeblock> <ul>
+<li id="GUID-7595C77D-73A7-539C-B18B-2E1DE51EF4BA"><p>All elements within
+an array can be deleted using the <codeph>Reset()</codeph> function. This
+function also compresses the array. Compressing the array when it is empty
+causes the memory allocated to the array buffer to be freed.</p> </li>
+<li id="GUID-00AADD5C-E4E0-5C68-B1D3-4906973A6299"><p>For an array of pointers
+to <codeph>CBase</codeph> derived objects (i.e. a <codeph>CArrayPtrFlat</codeph> or
+a <codeph>CArrayPtrSeg</codeph> type array), some care should be taken when
+deleting elements from the array. The following code fragment deletes the
+last two elements from <codeph>ptrflat</codeph> (a <codeph>CArrayPtrFlat</codeph> array)
+and deletes the objects that those elements point to:</p> </li>
+</ul> <codeblock id="GUID-B853D5EE-11A0-50C7-9CC6-6705A5118AC3" xml:space="preserve">TInt      index;
+CElement* ptr;
+...
+index = ptrflat-&gt;Count();
+...
+ptr = (*ptrflat)[--index];
+ptrflat-&gt;Delete(index);
+delete ptr;
+...
+ptr = ptrflat-&gt;At(--index);
+ptrflat-&gt;Delete(index);
+delete ptr;</codeblock> <ul>
+<li id="GUID-0C733A40-7B7D-518B-B27F-5E25DB73435A"><p>In general, before the
+elements of this kind of array are deleted, the <codeph>CBase</codeph> derived
+objects to which those elements point should be destroyed. If they are not
+destroyed, then a separate copy of those elements (i.e. the pointers), <i>must</i> be
+taken to avoid orphaning the <codeph>CBase</codeph> derived objects on the
+heap.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306-master.png has changed
Binary file Symbian3/SDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e367220_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03194FB8-CC3F-5B8D-8719-3756FAC88102.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-03194FB8-CC3F-5B8D-8719-3756FAC88102"><title>rm</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>rm [OPTION]... FILE... </userinput> </p> <p>Remove files or directories. </p> <p>Opions can be one of the following: </p> <table id="GUID-7B89EC5A-7116-59A6-98CA-BBA079596CE4"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p> <codeph>--force </codeph>. </p> <p>Ignore nonexistent files, never prompt. </p> </entry> </row> <row><entry><p> <codeph>-r</codeph>, <codeph>-R</codeph>  </p> </entry> <entry><p> <codeph>--recursive </codeph>. </p> <p>Remove directories and their contents recursively. </p> </entry> </row> <row><entry><p> <codeph>-i</codeph>  </p> </entry> <entry><p> <codeph>--interactive </codeph>. </p> <p>Prompt before any removal. </p> </entry> </row> <row><entry><p> <codeph>-d</codeph>  </p> </entry> <entry><p> <codeph>--directory </codeph>. </p> <p>Unlink <codeph>FILE</codeph>, even if it is a non-empty directory. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8" xml:lang="en"><title>Universal
+indicators</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Universal indicators are small graphical icons. They inform the user about
+issues such as unread messages, waiting voice mail, selected phone line, IR
+and Bluetooth connection status, set clock alarm, home zone, and locked keypad.
+Each status indicator has a priority number, which determines which icons
+are displayed in case there are more of them than fit on the screen simultaneously.</p>
+<p>In the Idle state and in the Phone application, the universal indicators
+are displayed in the universal indicator area in the top-right corner (next
+to the battery pane) in the status pane (see figure below).</p>
+<p>Within applications other than Phone, status indicators appear in the universal
+status indicator pane, which is combined with the clock display. Due to the
+small size of this area, and also to avoid displaying unimportant things in
+general, only the most important status indicators are displayed. </p>
+<fig id="GUID-1BD648F8-7AE3-46A5-838C-01F175C9E354">
+<title>Universal status indicators displayed in the top-right corner</title>
+<image href="GUID-7BC512C8-55F5-4753-8299-7D3776EB3464_d0e62287_href.png" scale="40" placement="inline"/>
+</fig>
+<section><p>The universal indicators
+are not accessible to applications.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03494D84-7E6D-5128-A8CF-2F6E25543591.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-03494D84-7E6D-5128-A8CF-2F6E25543591" xml:lang="en"><title>Power
+States API Tutorial </title><shortdesc>This tutorial describes how to use the Power State API of HWRM.
+The client applications subscribes to one or more of the three keys published
+by this API. It is notified via the publish and subscribe framework
+whenever the key is updated. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-1E4A8512-08CA-57D7-A4DC-9809C54BB07E"><title>Introduction</title> <p>A
+key represents one of the parameters of the battery such as charging state,
+battery level and battery state, hence there are three keys published by the
+Power State API. The client applications can subscribe to any or all three
+keys published, depending on the type of information the client requires.
+Each key is updated by the HWRM server whenever there has been a change in
+the hardware state of the battery level, battery state or charging state. </p> <p>Refer
+to <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita">Power States API</xref> section
+to get more information about the keys published by the Power States API. </p> </section>
+<example id="GUID-8FC57C06-8147-54E9-9FE6-3EBD08632D69"><title>Procedure</title> <p>The
+following steps explains a simple example of how an active object may be created
+to subscribe to the battery level Publish and Subscribe key: </p> <ol id="GUID-00B23E06-ECDD-5893-9DC3-B5F508C48D32">
+<li id="GUID-AFAC3B2F-D079-52CD-9823-1B599C15D300"><p>Create an instance of <codeph>CBattLevelWatch</codeph> using <codeph>NewL()</codeph>. </p> </li>
+<li id="GUID-C3BDBE99-52B2-569A-B3F3-614E68468E3D"><p> <codeph>NewL()</codeph> calls <codeph>ConstructL()</codeph> and
+completes the 2-phase construction. </p> </li>
+<li id="GUID-9FBDAE7D-DF0C-539F-9531-171CB9F5CB05"><p> <codeph> RunL()</codeph> is
+called, which subscribes to battery level status. </p> </li>
+</ol> <p>Once the battery level is obtained asynchronously, you can switch
+to the appropriate battery level. </p> </example>
+<section><title>Example</title> <p>Header file: </p> <codeblock id="GUID-31A57213-9337-567A-B1A8-2E77C01CDA4A" xml:space="preserve">// Active object that tracks changes to the ‘BatteryLevel’ property
+class CBattLevelWatch : public CActive
+    {
+    enum {EPriority=0};
+    public:
+        static CBattLevelWatch* NewL();
+    private:
+        CBattLevelWatch();
+        void ConstructL();
+        ~CBattLevelWatch();
+        void RunL();
+        void DoCancel(); 
+    private:
+        RProperty iProperty;
+    };</codeblock> <p>Source file: </p> <codeblock id="GUID-8A464018-4CFE-5722-A56D-A42012B48A37" xml:space="preserve">
+CBattLevelWatch* CBattLevelWatch::NewL()
+    {
+    CBattLevelWatch* me=new( ELeave ) CBattLevelWatch;
+    CleanupStack::PushL( me );
+    me-&gt;ConstructL();
+    CleanupStack::Pop( me );
+    return me;
+    }
+
+CBattLevelWatch::CBattLevelWatch()
+    :CActive( EPriority )
+    {}
+
+void CBattLevelWatch::ConstructL()
+    {
+    User::LeaveIfError( iProperty.Attach( KPSUidHWRMPowerState,KHWRMBatteryLevel ) );
+    CActiveScheduler::Add( this );
+    // initial subscription and process current property value
+    RunL();
+    }
+
+CBattLevelWatch::~CBattLevelWatch()
+    {
+    Cancel();
+    iProperty.Close();
+    }
+
+void CBattLevelWatch::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+
+void CBattLevelWatch::RunL()
+    {
+    // resubscribe before processing new value to prevent missing updates
+    iProperty.Subscribe( iStatus );
+    SetActive();
+
+    // property updated, get new value
+    TInt batteryLevel;
+    if( iProperty.Get( batteryLevel )==KErrNotFound )
+        {
+        // property deleted, do necessary actions here...
+        . . .
+        }
+    else
+        {
+        // use new value battery level...
+        switch( batteryLevel )
+            {
+            case EBatteryLevelUnknown:
+                {
+                // Handle uninitialized or some other error value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel0:
+                {
+                // Handle Lowest battery level value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel1:
+                {
+                // Handle battery level 1 value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel2:
+                {
+                // Handle battery level 2 value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel3:
+                {
+                // Handle battery level 3 value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel4:
+                {
+                // Handle battery level 4 value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel5:
+                {
+                // Handle battery level 5 value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel6:
+                {
+                // Handle battery level 6 value
+                . . .
+                break;
+                }
+            case EBatteryLevelLevel7:
+                {
+                // Handle Highest battery level value
+                . . .
+                break;
+                }
+            default:
+                {
+                // Handle UNKNOWN BATTERY LEVEL!
+                break;
+                }
+            }
+        }
+    }
+</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita"><linktext>Publish and
+Subscribe documentation</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e386672_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0368678A-6963-5558-8DC2-0E618B927538.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0368678A-6963-5558-8DC2-0E618B927538"><title>whence</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>whence [ -vcwfm ] name ... </userinput> </p> <p>For each <codeph>name</codeph>, indicate how it would be interpreted if used as a command name. </p> <table id="GUID-02468761-EBEC-5CBA-BBE5-6D8CCA4504C2"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-v</codeph>  </p> </entry> <entry><p>Produce a more verbose report. </p> </entry> </row> <row><entry><p> <codeph>-c</codeph>  </p> </entry> <entry><p>Print the results in a <codeph>csh-like</codeph> format. This takes precedence over <codeph>-v</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-w</codeph>  </p> </entry> <entry><p>For each <codeph>name</codeph>, print <codeph>name</codeph>: <codeph>word</codeph> where <codeph>word</codeph> is one of <xref href="GUID-69CFCFF4-68C7-5345-ADF6-449E9E98297D.dita">alias</xref>, <xref href="GUID-729289F7-D0CD-5B50-AA8D-A86C35034076.dita">builtin</xref>, <xref href="GUID-22D7E6E9-D47D-52F0-A9DF-C69075DBEEC8.dita">command</xref>, <xref href="GUID-B76CF2DF-8705-5C44-BBE5-29706957578D.dita">functions</xref>, <codeph>reserved</codeph> or none, according as <codeph>name</codeph> corresponds to an alias, a built-in command, an external command, a shell function, a reserved word, or is not recognised. This takes precedence over <codeph>-v</codeph> and <codeph>-c</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p>Causes the contents of a shell function to be displayed, which would otherwise not happen unless the <codeph>-c</codeph> flag were used. </p> </entry> </row> <row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>The arguments are taken as patterns (should be quoted), and the information is displayed for each command matching one of these patterns. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Note:</b> Due to capability limitations of Zsh, external commands are not recognised by the <codeph>whence</codeph> command and its derivatives. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-036FCEAE-8137-5764-A512-DA1EE06DFCB8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-036FCEAE-8137-5764-A512-DA1EE06DFCB8"><title>Messaging Principles</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The design of the Messaging architecture is based on the following principles. </p> <section><title>Dynamic extensibility</title> <p>The Messaging architecture allows message client applications to discover at run-time which message types (that is, MTMs) are available, and to be notified if new MTMs are installed. Each MTM offers interfaces that allow message client applications to find its capabilities, and to obtain how the MTM’s services must be offered to the user through the UI, so that appropriate commands can be dynamically added to menus. </p> </section> <section><title>Multiple simultaneous message client applications</title> <p>The Messaging architecture can support multiple message client applications having simultaneous access to message data. Examples of such potential message client applications are email clients, PC mail synchronisation utilities, and messaging-aware applications sending documents as messages. </p> </section> <section><title>Generic message description and operations</title> <p>The Messaging architecture allows message client applications to perform common operations, such as copying, moving, and sorting messages, without knowing the particular message type. There is a generic message description structure to allow message properties to be obtained. These features help message client applications to be designed without foreknowledge of the messaging protocols that may later be used. </p> </section> <section><title>Memory-efficiency</title> <p>Message client applications can load particular MTM components when they are required as a result of user actions. The architecture of the Message Server operates in a similar way, dynamically loading and unloading components to handle particular message types. </p> <p>With SQL database implementation for storing index entries, the RAM can be used effectively. For more information on the usage of SQLite database, see <xref href="GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita#GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107/GUID-10265557-F31B-50B3-A955-A548A5A78D7B">Operating with the SQL database</xref>. </p> </section> </conbody><related-links><link href="GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita"><linktext>Messaging Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03708BB2-68CF-4EFB-BE2F-C92DAD59F7F2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-03708BB2-68CF-4EFB-BE2F-C92DAD59F7F2" xml:lang="en"><title>Options
+template</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The order of items in an Options menu should follow the template presented
+below (in specific cases, when there are strong arguments against the order
+in the template, the order can be changed.)</p>
+<p>The option names listed here are generic names, not the actual texts used
+in the products. The texts may even vary between applications even though
+the logical item is the same.</p>
+<p>Items that should appear in every full Options menu opened from the left
+softkey are labeled mandatory. However, these items are not required in context
+sensitive Options menus.</p>
+<p>For other than the mandatory items, only the items needed in each context
+shall appear in the Options menu.</p>
+<p>Items specific to the context can be added among the common items, in the
+places where they best fit, considering the importance and probable usage
+frequency. The places where context-specific items may appear are represented
+as +++ in the list.</p>
+<p>Submenu titles are indicated with ? and are followed by the submenu items.</p>
+<table id="GUID-21D14852-30D2-44B3-BB5E-1A200B73072D"><title>Options menu
+item order</title>
+<tgroup cols="3"><colspec colname="col1" colwidth="0.19*"/><colspec colname="col2" colwidth="0.61*"/><colspec colname="col3" colwidth="2.21*"/>
+<thead>
+<row>
+<entry>Menu </entry>
+<entry>item</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry nameend="col2" namest="col1"><p>Active applications</p></entry>
+<entry><p>Access to task swapper.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Open / Select /Change</p></entry>
+<entry><p>Mandatory when the Selection key performs an Open/Select function.
+Change is used in setting lists. Same as the Selection key function.</p></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Call now</p></entry>
+<entry><p>For immediate calling when a phone number is available.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Send now</p></entry>
+<entry><p>Opens a messaging editor when an address for immediate sending is
+available, or is used for immediate sending when such data is available (for
+example in message editor)</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Send &gt;</p></entry>
+<entry><p>Open a Send list query that contains the following Send options.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Message</p></entry>
+<entry><p>Send object via message.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Audio message</p></entry>
+<entry><p>Send object via audio message.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>E-mail</p></entry>
+<entry><p>Send object via e-mail.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>SyncML mail</p></entry>
+<entry><p>Send object via SyncML mail.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Postcard</p></entry>
+<entry><p>Send object via Postcard.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>MMS Upload Services</p></entry>
+<entry><p>Service provider item for uploading. All MMS upload services are
+displayed consecutively before local connectivity items.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Bluetooth</p></entry>
+<entry><p>Send object via Bluetooth.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>IR</p></entry>
+<entry><p>Send object via Infrared.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Other installed MTMs</p></entry>
+<entry><p>Send objects via some other available MTM.</p></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Create new</p></entry>
+<entry><p>Initiates the creation of a new item (for example a message in the
+Messaging application or a calendar event in Calendar). When more than one
+type of item can be created, a submenu may be used to select the type. </p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Edit item</p></entry>
+<entry><p>Enables editing of the current item, for example a form, or an individual
+item on a list.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Edit text &gt;</p></entry>
+<entry><p>Opens a submenu for text editing options.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Copy text</p></entry>
+<entry><p>Start text copying (copy mode).</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Cut text</p></entry>
+<entry><p>Start text cutting (copy mode)</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Copy</p></entry>
+<entry><p>Copy the selected (highlighted) text.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Cut </p></entry>
+<entry><p>Cut the selected (highlighted) text.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Paste</p></entry>
+<entry><p>Paste text.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Delete</p></entry>
+<entry><ul>
+<li><p>Deletes the item(s) in focus (or marked) on a list.</p></li>
+<li><p>Deletes the current item being viewed.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>View info (1)</p></entry>
+<entry><p>View detailed information about the current item. The item is placed
+in this location in applications where this is a high-priority function.</p></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Move</p></entry>
+<entry><p>Move an item to a different location within the list or grid.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Move to folder</p></entry>
+<entry><p>Move item(s) into a folder.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>New folder</p></entry>
+<entry><p>Create a new folder.</p></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Edit list &gt;</p></entry>
+<entry><p>A submenu for list editing options.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Copy item data</p></entry>
+<entry><p>Copy data from a list item (for example, copy a phone number from
+Phonebook's view onto Clipboard).</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Mark / Unmark</p></entry>
+<entry><p>Mark or unmark the current item, depending on the current state.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Mark all</p></entry>
+<entry><p>Mark all items in a list.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Unmark all</p></entry>
+<entry><p>Remove marks from all marked items in a list.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Rename</p></entry>
+<entry><p>Rename the item in focus.</p></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Add to contacts &gt;</p></entry>
+<entry><p>A submenu for functions used to add contact information into Phonebook.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Create new</p></entry>
+<entry><p>Create a new contact item.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Update existing</p></entry>
+<entry><p>Add new field(s) to an existing contact item.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Find item &gt;</p></entry>
+<entry><p>A submenu for functions used to extract contact information from
+text in viewers and browsers.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Phone number</p></entry>
+<entry><p>Find a telephone number among text.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Email address</p></entry>
+<entry><p>Find an e-mail address among text.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>URL</p></entry>
+<entry><p>Find and URL among text.</p></entry>
+</row>
+<row>
+<entry align="center" nameend="col3" namest="col1"><p>+ + +</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>View info (2)</p></entry>
+<entry><p>View detailed information about the current item. The item is placed
+in this location in applications where this is a low-priority function.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Add to Favourites</p></entry>
+<entry><p>For adding a link to the current application or a document to pinboard.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Text size &gt;</p></entry>
+<entry><p>Change the text size in application-specified views (see <xref href="GUID-B16A0370-F18F-4035-B3D6-ED550D8D68F9.dita">Presentation
+of text</xref> for more information on content zooming). Opens a submenu with
+an indicator.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Automatic (default value)</p></entry>
+<entry><p>Uses the text size setting value currently set in General Settings.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Large</p></entry>
+<entry><p>View text in large size. Overrides the setting value set in General
+Settings.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Normal</p></entry>
+<entry><p>View text in normal size. Overrides the setting value set in General
+Settings.</p></entry>
+</row>
+<row>
+<entry/>
+<entry><p>Small</p></entry>
+<entry><p>View text in small size. Overrides the setting value set in General
+Settings.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Settings</p></entry>
+<entry><p>Access to application settings or context-dependent settings.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Advanced</p></entry>
+<entry><p>A submenu containing rarely used items.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Extra functions</p></entry>
+<entry><p>For displaying extra functions provided by application interworking.
+If more than one extra function is available, they are displayed in a submenu.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Writing language</p></entry>
+<entry><p>Changes the input language in editors.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Help</p></entry>
+<entry><p>Opens Context Sensitive Help.</p></entry>
+</row>
+<row>
+<entry nameend="col2" namest="col1"><p>Exit</p></entry>
+<entry><p>Mandatory. Exits the application.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-037225BC-AC45-540E-A899-1B8AB9112D6E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-037225BC-AC45-540E-A899-1B8AB9112D6E"><title>Unified Certificate Store Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Certificate storage uses the interface defined by the crypto token framework. The unified certificate store (unified certstore) unifies all the available implementations of the certstore interface. If a product manufacturer implements one of the certstore interfaces using, for example, a WIM, then it will automatically be picked up by the unified certstore. </p> <p>The unified certstore offers: </p> <ul><li id="GUID-0C8C3223-4BB6-504A-8308-4D0C95C5DEF6"><p>The <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita"><apiname>CUnifiedCertStore</apiname></xref> API to access the certificates stored on the device </p> </li> <li id="GUID-0560028C-D7BA-52A1-8C44-080FB72E4FCC"><p>Assignment of trust status to a certificate on an application by application basis </p> </li> <li id="GUID-622CC0E3-63FD-50A9-82D4-4E2C47A542F3"><p>Certificate chain construction and validation. </p> </li> </ul> <section id="GUID-3E780226-644B-5978-8886-B2601411F355"><title>Supported certificate types</title> <p>The certstore APIs support X.509, WTLS, and X.968 certificates. Certificates can be physically present in the store (as is normally the case), or they can be referenced by a URL. When clients retrieve or add certificates they have to indicate which kind of certificate they are interested in retrieving or which kind of certificate they are adding. They do this using <codeph>TCertificateFormat</codeph>, an enumeration which currently has one of the following (self-descriptive) values: </p> <table id="GUID-B506F035-4253-5430-B2C1-4D68F4F0FA1F"><tgroup cols="1"><colspec colname="col0"/><thead><row><entry>Value</entry> </row> </thead> <tbody><row><entry><p> <codeph>EX509Certificate</codeph>  </p> </entry> </row> <row><entry><p> <codeph>EWTLSCertificate</codeph>  </p> </entry> </row> <row><entry><p> <codeph>EX968Certificate</codeph>  </p> </entry> </row> <row><entry><p> <codeph>EX509CertificateUrl</codeph>  </p> </entry> </row> <row><entry><p> <codeph>EWTLSCertificateUrl</codeph>  </p> </entry> </row> <row><entry><p> <codeph>EX968CertificateUrl</codeph>  </p> </entry> </row> <row><entry><p> <codeph>EUnknownCertificate</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p>This enables the certstore to commit only to the interface offered by <xref href="GUID-116AB921-B063-5CC2-962F-A74562F20EAE.dita">crypto.dll</xref>, so that new certificate specifications can be kept in the store without changing it. </p> <p>Also, there are three supported owner types defined by the <codeph>TCertificateOwnerType</codeph> enumeration: </p> <table id="GUID-DD4B474A-EEE4-500A-9A17-1B1DAFE1D2A7"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Owner type</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>ECACertificate</codeph>  </p> </entry> <entry><p>CA certificates are used as trust roots when validating certificate chains </p> </entry> </row> <row><entry><p> <codeph>EUserCertificate</codeph>  </p> </entry> <entry><p>User certificates are used to establish the user's identity with a remote server </p> </entry> </row> <row><entry><p> <codeph>EPeerCertificate</codeph>  </p> </entry> <entry><p>Peer certificates are a third party's user certificates </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita"><linktext>Unified Certificate Store Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03866ADB-5916-5B31-BCF0-44F94E12B740.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-03866ADB-5916-5B31-BCF0-44F94E12B740" xml:lang="en"><title>Pluggable Advanced Image Editing Libraries Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-038747F2-E5A2-5739-BFF5-69B6BD0DCEB2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-038747F2-E5A2-5739-BFF5-69B6BD0DCEB2" xml:lang="en"><title>abld command syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0387B02E-9B81-5E61-A33E-D644251424A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0387B02E-9B81-5E61-A33E-D644251424A2" xml:lang="en"><title>Layout
+management</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Many factors have to be taken into consideration when laying out controls.
+Component controls are normally laid out within their containers according
+to the prevailing UI policy, skin, font, text style, zoom-factor and the sizes
+and shapes of the controls themselves. A change to any one of these might
+necessitate a new layout. </p>
+<p>The Control Framework supports run-time layout management with the <xref href="GUID-A622B8C7-60F4-38E8-B102-14883BCBA249.dita"><apiname>MCoeLayoutManager</apiname></xref> interface.
+Each compound control knows which layout manager to call when it changes size.
+The layout manager then takes responsibility for making any adjustments to
+the layout. </p>
+<p>A layout manager is associated with a compound control using: </p>
+<codeblock id="GUID-B2CAA11F-EAEF-5583-A86D-BEF8A279EF22" xml:space="preserve"> IMPORT_C virtual void SetLayoutManagerL(MCoeLayoutManager* aLayout);</codeblock>
+<p>Note that this call passes 'ownership' so the caller does not need to retain
+a pointer. A layout manager may be attached to more than one control so it
+must implement its own reference count and delete itself when the count becomes
+zero. <codeph>SetLayoutManagerL()</codeph> is also used to dissociate a layout
+manager from a control by passing either NULL or a pointer to a different
+layout manager. </p>
+<p>The Control Framework does not provide any concrete layout managers. This
+is the responsibility of the UI variant library or the application developer. </p>
+<p>Though layout managers are now built into the control framework their use
+is optional. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e53395_href.png has changed
Binary file Symbian3/SDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e62355_href.png has changed
Binary file Symbian3/SDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e189390_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8" xml:lang="en"><title>Creating
+and Signing an Installation File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>A Software Installation (SIS) file
+can be generated as an unsigned file, a self-signed or signed file. Self-signed
+and unsigned packages are considered to be <i>unknown</i>, and are installed
+by the Software Installer, depending on the security policy of the Symbian
+device. </p> <p>If the <filepath>SIS</filepath> file is signed, the Software
+Installer validates the certificate chains and based on verification, installs
+the <filepath>SIS</filepath> file or aborts the installation. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-F956C034-BA59-5811-9043-BF0D77F10677">
+<li id="GUID-9842671A-A9BE-5CC1-A957-D2AA09B2B6D0"><p>Create a private key-public
+key pair and certificate request using the <xref href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita">MakeKeys</xref> tool.
+For details, see <xref href="GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita">MaKeKeys
+Tutorial</xref>. </p> </li>
+<li id="GUID-030DB6CF-22B6-529A-9915-38A4AD2A8A92"><p>Submit the certificate
+request to a Certificate Authority (CA) and receive an authenticated digital
+certificate. </p> </li>
+<li id="GUID-F8CDA8A6-4FD1-5F96-9D50-E2B7323504B5"><p>Create a package (PKG)
+file containing all the elements required to create the installation file.
+For details see <xref href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita">PKG
+File Format</xref> . </p> </li>
+<li id="GUID-80F3E1E2-7E61-53B7-948F-651BA163469E"><p>Run <xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">MakeSIS</xref> at
+the command prompt to create an unsigned SIS file. Specify the PKG file as
+input argument, as shown in the following example: </p> <p><codeblock id="GUID-44397CFA-9650-5C19-8F47-015A3BC90D88" xml:space="preserve">makesis mypackage.pkg</codeblock> </p> <p> <codeph>MakeSIS</codeph> generates an unsigned SIS file. </p> </li>
+<li id="GUID-C1190F84-8E02-5C57-90BE-3C3CCB0AAE04"><p>Run <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref> at
+the command prompt to sign the unsigned SIS file. Specify the unsigned SIS
+file as input, and public key certificate and private key as arguments, as
+shown in the following example: </p> <p><codeblock id="GUID-A674816E-D8AF-5B9F-839B-3D53C337D481" xml:space="preserve">signsis trustedchain.pem eecertkey.key mypackage.sis</codeblock> </p> <p>Based on the certificate provided as input, <codeph>SignSiS</codeph> generates
+a signed SIS file. For details, see <xref href="GUID-AFBD4ED6-9588-531C-8EDF-566DB1D03088.dita">Signing</xref>  </p> </li>
+</ol><note> As an alternative to step 4 and 5, run the <xref href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita">CreateSIS</xref> tool
+at the command prompt to generate and sign the installation file. Specify
+the trusted certificate-key pairs as arguments, as shown in the following
+example: <codeblock xml:space="preserve">createsis create -cert trustedchain.pem -key eecertkey.key mypackage.pkg
+</codeblock></note><p>The process of creating an installation file can be
+understood using the following illustration:</p><fig id="GUID-DB0D2E8C-E8B6-46C8-8CF4-1970EA1B3A03">
+<image href="GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e21417_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Notes</title> <p>While creating a SIS file using the <b>CreateSIS</b> tool,
+if you do not specify the key or certificate on the command line the <codeph>create</codeph> method
+generates a key and a matching self-signed certificate, and uses it to sign
+the resulting SIS file. </p> <p>The generated certificate and key is dumped
+into the current working directory as <filepath>cert-gen.cer</filepath> and <filepath>key-gen.key</filepath> files.
+If <filepath>key-gen.key</filepath> exists, the certificate and key filenames
+are indexed incrementally. That is, <filepath>cert-genx.cer</filepath> and <filepath>key-genx.key</filepath>,
+where <i>x</i> is the incremental index. </p> <p> <b> Note:</b> The passphrase
+encryption is not an option. It must be provided with the <codeph>-pass</codeph> option.
+If this option is not specified, <b>CreateSIS</b> prompts for the passphrase
+during key generation. </p> </section>
+</conbody><related-links>
+<link href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita"><linktext>CreateSIS</linktext>
+</link>
+<link href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita"><linktext>MakeSIS</linktext>
+</link>
+<link href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita"><linktext>SignSIS</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03D132BE-5B90-50E1-88D3-D66289C02444.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-03D132BE-5B90-50E1-88D3-D66289C02444" xml:lang="en"><title>Audio Client Tutorials</title><shortdesc>This section describes how to use the Audio Client library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-EB15EC74-BCCE-591D-8308-210C22CDDDDA.dita"><linktext>Audio
+  Client Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-03DE8DB5-BF37-4E02-BFB7-D14BD8B3E1BA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-03DE8DB5-BF37-4E02-BFB7-D14BD8B3E1BA" xml:lang="en"><title>Forms
+without the options softkey</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In case a form does not need any context-specific functions in the Options
+menu, the softkey interface can be the same as in queries: the left softkey
+is Done and the right softkey is Cancel. Done accepts the contents and returns,
+whereas the Cancel function discards all changes in the form and returns.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0422EDC4-E17C-5E58-BB37-03CCA79ED3E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0422EDC4-E17C-5E58-BB37-03CCA79ED3E9"><title>How to wait for a given time period</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Once the timer has been created and initialised, a request can be set up.</p> <ul><li id="GUID-252BD68A-05F6-57D0-98E1-4BE2B0B7D2D6"><p>start the timer to complete after a set period by calling <codeph>After()</codeph>, passing the required period in microseconds</p> </li> <li id="GUID-7D5F4F30-6AD5-5532-A9BE-015EE4632842"><p>call <codeph>User::WaitForRequest()</codeph> to wait for completion</p> </li> </ul> <p>In the following example, the thread is suspended for a 1 second. <codeph>timerStatus</codeph> is a <codeph>TRequestStatus</codeph>.</p> <codeblock id="GUID-4F3CC22C-220D-5B29-8335-2757C47C8763" xml:space="preserve">timer.After(timerStatus,1000000);
+User::WaitForRequest(timerStatus); 
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-042868E6-88BF-5797-BB53-8E34283DCF16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-042868E6-88BF-5797-BB53-8E34283DCF16" xml:lang="en"><title>Image Processor Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Image Processor library. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0446FD98-E0A0-5E6A-B056-AF54172B7453.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0446FD98-E0A0-5E6A-B056-AF54172B7453" xml:lang="en"><title>Using
+CArrayPak&lt;TAny&gt;</title><shortdesc>The class is useful for constructing an array of variable length
+buffers, where the length is decided at run time. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-65CC02B4-A4FD-4A7C-9D93-BF92A1B9DDAB"><title>Arrays whose type is not known until class instantiation</title> <p>The
+class is useful for constructing an array of variable length buffers, where
+the length is decided at run time. It is also useful as a data member of a
+base class in a thin template class/base class pair, where the type of the
+array element is not known until the owning thin template class is instantiated.</p> <p>For
+example, to implement a stack of packed (variable length) objects of type <codeph>T</codeph>.</p> <codeblock id="GUID-C6370DDF-44D6-52BA-A0C3-898F66918210" xml:space="preserve">class CExampleBase : public CBase
+ {
+public :
+ ...
+protected :
+ ...
+ void  PushL(const TAny* aPtr);
+ TAny* Pop();
+private :
+ CArrayPak&lt;TAny&gt; iArray;
+ }</codeblock> <codeblock id="GUID-0D3E2CBC-E9E5-551B-8704-A48D63D5901A" xml:space="preserve">template &lt;class T&gt;
+class CExample : public CExampleBase
+ {
+public :
+ ...
+ inline void PushL(const T* aPtr);
+ inline T*   Pop();
+ }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e2109_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-047E3462-F806-4C54-9DC5-6B78907CA949.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-047E3462-F806-4C54-9DC5-6B78907CA949" xml:lang="en"><title>Derive
+a class and implement the appropriate observer functions</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Derive a class from one or more of the observer interfaces
+above, and implement the appropriate observer functions.</p><p>The following
+code snippet demonstrates how to derive a class and implement the appropriate
+functions.</p><codeblock id="GUID-FF4BD289-9ECC-5E01-A38C-3E428817883E" xml:space="preserve">#include HWRMPower.h
+Class CPowerApp : public CBase,
+                  public MHWRMBatteryPowerObserver,
+                  public MHWRMBatteryChargingStatusObserver
+{
+public:
+    CPowerApp(); //constructor
+    ~CPowerApp();  //destructor
+    void ConstructL();
+    static CPowerApp* NewL();
+    // from MHWRMBatteryPowerObserver
+    virtual void PowerMeasurement( TInt aErr,
+                                   TInt aMeasurement );
+    // from MHWRMBatteryChargingStatusObserver
+    virtual void ChargingStatusChange( Tint aErrCode,
+                                       CHWRMPower::TBatteryChargingStatus aChrgStatus );
+
+private:
+    CHWRMPower* iPower;
+};
+
+
+//Implementation of MHWRMBatteryPowerObserver::PowerMeasurement()
+
+void CPowerApp::PowerMeasurement( TInt aErr,
+                                  TInt aMeasurement )
+    {
+    if( aErrorCode == KErrNone )
+         {
+         INFO_PRINTF2( _L( "INFO: Power Consumption Measurement Received,
+                            measurement=%d" ), aMeasurement );
+         }
+    else
+         {
+         INFO_PRINTF2( _L( "INFO: Power Consumption Measurement Error,
+                            error=%d" ), aErr );
+         }
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-049A089E-FF08-5706-8485-8C9A5A0BCF6F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-049A089E-FF08-5706-8485-8C9A5A0BCF6F"><title>Symbian Emulator build output locations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In versions of the OS from v9.0, all executable files (exes and libraries) are built on the Symbian emulator to <filepath>epoc32\release\winscw\udeb\</filepath> (or <filepath>urel\</filepath> for release builds). This location is the equivalent to <filepath>\sys\bin\</filepath> on target devices. </p> <p>Resource files and other non-executable files are built to the location specified in the mmp file below <filepath>epoc32\release\winscw\</filepath> <varname>udeb or
+        urel</varname> <filepath>\z\</filepath>, for example, <filepath>epoc32\release\winscw\</filepath> <varname>udeb or
+        urel</varname> <filepath>\z\resource\apps\</filepath> for GUI application resources. </p> <p>A copy of the built resources etc. is also put under <filepath>epoc32\data\Z\</filepath>, which is used when building for any target, Symbian emulator or ARM. Because the same resource files apply to all build targets, it makes sense for them to be located in a common directory. </p> <p>To run an executable file, start the Symbian emulator <filepath>epoc32\release\winscw\</filepath> <varname>udeb or
+        urel</varname> <filepath>\epoc.exe</filepath>, and run the program from whatever shell program the UI being used provides. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-04C294A2-C63B-55A7-82DE-379BBFA05EF9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-04C294A2-C63B-55A7-82DE-379BBFA05EF9"><title>Creating an Animation DLL Object</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides information about implementing <codeph>CreateCAnimDllL()</codeph>. </p> <p>Use <xref href="GUID-B5CB2B61-980F-3BFB-ADDD-EC2B9EED6FAC.dita"><apiname>CreateCAnimDllL()</apiname></xref> to construct the <xref href="GUID-9E598CDA-6483-3AE3-ABFF-0F701A47AB84.dita"><apiname>CAnimDll</apiname></xref> derived server side DLL class. For example, for a DLL class called <codeph>CExampleAnimDll</codeph> the following code would appear in the DLL source file: </p> <codeblock id="GUID-B487BC48-D824-5080-9AC5-37459AE0432B" xml:space="preserve">// the only exported function in the DLL
+IMPORT_C CAnimDll* CreateCAnimDllL();
+EXPORT_C CAnimDll* CreateCAnimDllL(){return new(ELeave) CExampleAnimDll;}</codeblock> <p>The use of both IMPORT_C and EXPORT_C statements is required to satisfy different compiler conventions. </p> <p>Because this interface is defined by the Window Server, an animation DLL class must be linked against the Window Server definitions, otherwise linkage will fail. The mechanism is straightforward — include the following in your project <codeph>mmp</codeph> file: </p> <codeblock id="GUID-EAF24F81-2C5D-5F85-AB71-D7DAC6A2ECB9" xml:space="preserve">TARGETTYPE ani
+UID 268450594</codeblock> </conbody><related-links><link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-04D917A1-E1A0-5149-9660-80A1146D0984" xml:lang="en"><title>OpenGLES
+Collection Overview</title><shortdesc>OpenGL ES is a cross-platform API for 2D and 3D graphics on embedded
+systems. It consists of a subset of desktop OpenGL, which is a widely adopted
+2D and 3D graphics API, creating a low-level interface between software and
+graphics acceleration. OpenGL ES includes profiles for floating-point and
+fixed-point systems and the EGL specification for portably binding to native
+windowing systems. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p>
+<p>The Symbian platform supports two versions of OpenGL ES: </p>
+<ul>
+<li id="GUID-09B72D5B-EF77-5317-90C9-B048241D8569"><p>OpenGL ES 1.X, which
+is for fixed function hardware and offers acceleration, image quality and
+performance. </p> </li>
+<li id="GUID-F9E98024-8198-586D-8E97-C00EB090158E"><p>OpenGL ES 2.X, which
+is for programmable hardware and enables fully programmable 3D graphics and
+shader objects. </p> </li>
+</ul>
+<p>OpenGL ES is an open standard developed by the Khronos Group (<xref href="http://www.khronos.org/" scope="external">www.khronos.org</xref>). </p>
+<p>The following diagram shows the direct use of OpenGL ES by an application
+through the public OpenGL ES interface together with EGL. On the Symbian platform,
+both OpenGL ES and EGL have a component (shown in blue) that declares the
+interface, and both require an implementation that implements that interface
+(shown in green). </p>
+<fig id="GUID-41677786-E59F-5DF7-97BB-05D7FDA0950C">
+<title>           OpenGLES component relationships          </title>
+<image href="GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e180696_href.png" placement="inline"/>
+</fig>
+<p>It is possible for the OpenGL ES and EGL implementations to communicate
+through a private interface that is not standardized by Symbian. </p>
+<ul>
+<li id="GUID-537E019E-A415-5C6B-A144-D5AD3494E35B"><p>The <xref href="GUID-CBC43846-22BB-5AAF-89FE-3CF4F11B76F6.dita">OpenGLES
+Interface component</xref> provides a consistent interface to OpenGL ES on
+the Symbian platform, enabling cross-device compatibility. The component includes
+the Khronos-released header files (which incorporate some minor changes, such
+as in-source comments). It also provides some Symbian-specific header files
+and LIB, DEF and MMP files and UIDs. It does not provide any implementations
+of the APIs. </p> </li>
+<li id="GUID-712E1F08-6F6F-5E84-A9F1-3EC06D089E62"><p><xref href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita">EGL</xref> is
+an interface between rendering APIs such as OpenGL ES or OpenVG and an underlying
+native platform window system. </p> </li>
+
+</ul>
+</conbody><related-links>
+<link href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita"><linktext>OpenGLES
+Collection</linktext></link>
+<link href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita"><linktext>EGL     
+           Collection</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-04F076C4-AFFF-571C-8B73-B8589B58EC56.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-04F076C4-AFFF-571C-8B73-B8589B58EC56"><title>Limitations of Clocks and Timers</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following are some of the limitations of the clocks and timers feature supported on Symbian platform: </p> <ul><li id="GUID-5998F7A9-741F-51C8-8942-5B7BB05BE1C9"><p>The clock and timer APIs of the Librt library provide the same level of resolution as that of the Symbian platform APIs, such as <xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita#GUID-8A423EA2-4264-30C9-9579-0466994E6E88/GUID-3F302410-5CC2-3CCB-82F4-47E953E7A29B"><apiname>RTimer::At()</apiname></xref>, <xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita#GUID-8A423EA2-4264-30C9-9579-0466994E6E88/GUID-C2BD996C-81E3-3309-917A-731B0BD2C450"><apiname>RTimer::After()</apiname></xref> and <xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita#GUID-8A423EA2-4264-30C9-9579-0466994E6E88/GUID-EB3B05D9-5EEF-34A2-99F9-9FEA31EF3005"><apiname>RTimer::HighRes()</apiname></xref>. Any requests beyond the functionality provided by these APIs will be considered as invalid. </p> </li> <li id="GUID-91D21D58-8590-5498-9F1E-C8720AAC96DB"><p>Symbian platform does not support process level clocks and therefore all clock and timer solutions are based on the clock available to the user level process. The clock has a <codeph>clock_id</codeph> of <codeph>CLOCK_REALTIME</codeph>, and can be retrieved using <xref href="GUID-D4D30F8D-82D9-3919-9711-DFEE78946DBE.dita"><apiname>clock_getcpuclockid()</apiname></xref> by passing <b>0</b> in the <codeph>pid_t</codeph> parameter. </p> </li> <li id="GUID-F4E57415-4006-520A-9FA1-71BBE7EBFC06"><p>An application or library that uses the Librt library clock functions must link to <filepath>librt.dll</filepath> prior to all other libraries in the link order. This is because both <filepath>libc.dll</filepath> and <filepath>librt.dll</filepath> provide similar clock interfaces but only the Librt library is modified to behave according to the LSB 3.1 specification. </p> </li> </ul> </conbody><related-links><link href="GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita"><linktext>Librt Overview</linktext> </link> <link href="GUID-29AE56A8-DA08-5FB3-89F1-26B4308336BC.dita"><linktext>Modifying a Clock Time</linktext> </link> <link href="GUID-B4039418-6499-555D-AC24-9B49161299F2.dita"><linktext>Raising a Periodic Timer
+                Request</linktext> </link> <link href="GUID-21740D07-5F49-5D9C-9FEA-92958AF3805B.dita"><linktext>Raising an Absolute Timer
+                Request</linktext> </link> <link href="GUID-8B37D53D-77E1-58C6-9A44-3376A450228B.dita"><linktext>Shared Memory Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-04FB9E08-DDFE-53B1-B8E1-687A1AEC4286.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-04FB9E08-DDFE-53B1-B8E1-687A1AEC4286"><title>Security Tools Overview</title><shortdesc>The security tool, <codeph>certapp</codeph>, is a PC-side tool that creates and manages Symbian certificate stores. It can be configured to run as a standalone tool on both Windows and Linux platforms. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Symbian platform provides implementations of two types of certificate store, the native Software Install (SWI) Certificate Store (swicertstore) and the File Certificate Store (filecertstore). The <codeph>certapp</codeph> tool enables the creation, augmenting, dumping and debugging of both the certificate stores. In addition, the tool also enables the dumping of certificates. </p> </section> <section><title>Required background</title> <p>To use <codeph>certapp</codeph> effectively, you must have a basic understanding of the following: </p> <ul><li id="GUID-CD7F87A4-328E-5CDB-8D29-FFBC2B29496C"><p><xref href="GUID-C3290344-486B-554D-97FC-42DF48E150AA.dita">Certificate and Key Management</xref>  </p> </li> <li id="GUID-77239220-2108-5DA8-A57B-5E70D6E9DD80"><p><xref href="GUID-A5DCCEB1-77DA-53C9-A1A3-07615DFCD403.dita">File-based Certificate and Key Stores</xref>  </p> </li> <li id="GUID-7F0756F4-C3D3-59E5-8262-DE6C9F3B250D"><p><xref href="GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA.dita">Root Certificates</xref>  </p> </li> </ul> </section> <section><title>Key concepts and terms</title> <dl><dlentry><dt>Certificate</dt> <dd><p>A certificate is an electronic document that binds a user's identity to a particular public or private key pair. It is commonly used to authenticate cryptographic public keys. </p> <p>Certificates are issued by a Certification Authority (CA). They usually include information such as a label, serial number, validity period, certificate format (for example, X.509) and algorithm type (for example, MD2RSA). </p> <p>The certificate files managed by <codeph>certapp</codeph> must be in one of the following formats: </p> <ul><li id="GUID-7AE7D892-72AD-5783-BDB7-BCD83ACCDE25"><p>X.509 Privacy Enhanced Mail (PEM) </p> </li> <li id="GUID-4A79E164-75BC-547E-9DC4-2C9882B87B1E"><p>X.509 Distinguished Encoding Rules (DER) </p> </li> <li id="GUID-54C08B28-6959-5C0F-B140-D6A27900AFE9"><p>Wireless Transport Layer Security (WTLS) </p> </li> </ul> </dd> </dlentry> <dlentry><dt>Certificate Store</dt> <dd><p>A certificate store is a database file that can store and manipulate certificates. The certificate store handles operations such as storing and retrieving certificates, assigning trust status to certificates on an application-by-application basis, constructing and validating certificate chains and checking online certificate revocation. </p> </dd> </dlentry> <dlentry><dt>File Certificate Store</dt> <dd><p>The file certificate store holds certificates for use by various applications that involve some authentication process. For example, it may contain certificates suitable for SSL/TLS server authentication. </p> <p>The file certificate store is implemented as a software plug-in which accesses two files that must be included in a device’s ROM, and are copied to the C: drive on first use. They are: </p> <ul><li id="GUID-EE62E763-27DC-53AA-965C-1DFF15484C23"><p> <codeph>cacerts.dat</codeph>: The physical file certificate store itself which holds the actual certificates and their associated metadata, including the application UIDs, to which the certificates apply. . </p> </li> <li id="GUID-E4C18725-415E-5023-A275-E53BA1229C8A"><p> <codeph>certclients.dat</codeph>: The certificate applications store that holds a list of the human-readable names and UIDs of applications that trust the certificates held in <codeph>cacerts.dat</codeph>. </p> </li> </ul> </dd> </dlentry> <dlentry><dt>Software Install (SWI) Certificate Store</dt> <dd><p>A SWI certificate store holds the trust anchors necessary to validate all SIS files that will be installed on the device. Physically, the certificates are held in a data file, <codeph>swicertstore.dat</codeph>. There are two parts to the SWI certificate store, an immutable store held in ROM and a writeable store that may be updated post market. </p> </dd> </dlentry> </dl> </section> <section><title>Description</title> <p>The <codeph>certapp</codeph> tool reads a series of input files containing certificate details, merges the input file data in memory, and writes the merged data into appropriate certificate store output files. Run the tool from the command line by specifying the input and output file names as arguments. For details of the command line arguments, see <xref href="GUID-C83D7112-0CF4-588D-8A0C-D27AB387F4D3.dita">certapp Reference</xref>. </p> <p>The tool accepts data files as inputs for operations such as creating a certificate store, dumping a certificate store or certificates to human-readable form and augmenting a certificate store. The data files can be in either binary or human-readable forms. These files typically contain details of individual certificates and the applications that the certificates validate. Many such data files can be merged together using the <codeph>certapp</codeph> tool to create one or more certificate store database files. </p> <p>Database files are typically the certificate store files created as output when you provide data files as inputs to the tool. The database files can be created for both the SWI certificate store (<codeph>swicertstore.dat</codeph>) and the file certificate store (<codeph>cacerts.dat</codeph> and <codeph>certclients.dat</codeph>). </p> <p> <b>Notes:</b>  </p> <ul><li id="GUID-34C11E84-7578-515B-A57B-178623E20CEB"><p>The input files for the various certificate stores must follow specific formats. For details, see <xref href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita">Certificate Store Human-Readable File Formats</xref>. </p> </li> <li id="GUID-D8865349-2E8E-5746-A51C-9C598D49CF6B"><p>For information on how the <codeph>certapp</codeph> tool processes the information given in the input files to generate output files, see <xref href="GUID-C119A79A-D705-50B3-B174-70F517947BBD.dita">How certapp Processes Input File Information</xref>. </p> </li> </ul> </section> <section><title>Typical uses</title> <p>The <codeph>certapp</codeph> tool helps in performing the following tasks: </p> <ul><li id="GUID-8F3CE8C2-0509-5390-BB25-6A3771270EF8"><p>Creating a certificate store </p> </li> <li id="GUID-B029F2F9-916B-5481-8059-A745ECEF365A"><p>Dumping a certificate store to human-readable form </p> </li> <li id="GUID-D52776CF-0AFD-5C0D-9A8E-C9F4CEBCA2C3"><p>Augmenting a certificate store </p> </li> </ul> <p>For details, see <xref href="GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C.dita">Using certapp</xref>. </p> </section> </conbody><related-links><link href="GUID-6BD23C4F-CBF7-584D-81D9-EB8D14DC3081.dita"><linktext>Security Tools Reference</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e166912_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A" xml:lang="en"><title>Using Singly Linked Lists</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01"><title>Introduction to dictionary stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A dictionary store is a store where all streams are accessed through a UID, rather than directly by stream ID.</p> <p>A dictionary store contains streams in the usual way but, in addition, the root stream is a stream dictionary, i.e. the external representation of a <codeph>CStreamDictionary</codeph> object, a list of two-way associations between UIDs and stream ids.</p> <p>The following diagram illustrates the concept of the dictionary store.</p> <fig id="GUID-6EEADFD0-FFCD-513F-BC26-99B46B54D600"><title>Dictionary store</title> <image href="GUID-22699952-D032-5B69-B38A-43347A40A420_d0e335124_href.png" placement="inline"/></fig> <p>The interface to a dictionary store is provided by the <codeph>CDictionaryStore</codeph> abstract class. The classes for concrete dictionary stores are derived from this abstract class; for example, <codeph>CDictionaryFileStore</codeph> is a concrete dictionary store class which is implemented using a file store. </p> <p>Note that a dictionary store does not derive from <codeph>CStreamStore</codeph>, but owns a persistent store, a <codeph>CPersistentStore</codeph> type, and a stream dictionary, a <codeph>CStreamDictionary</codeph> type, as part of its implementation.</p> <p><b>See also</b> </p> <p><xref href="GUID-5592E9C1-D490-538F-9B11-5EFB72DEDBE2.dita">File based dictionary store</xref> </p> <p><xref href="GUID-F535B464-3125-549B-9130-E59B64C4B865.dita">Stream dictionaries</xref> </p> <p><xref href="GUID-A928E956-9800-5277-B0D3-34BBB2707AE1.dita">Stream ID</xref> </p> <p><xref href="GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932.dita">UID manipulation</xref> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE" xml:lang="en"><title>MultiRead1:
+Reading Multiple Resource Files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-5302ab24-0d11-4619-a5cc-95426e08359f.zip" scope="external">MultiRead1.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-5302ab24-0d11-4619-a5cc-95426e08359f.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.  </section>
+<section><title>Description</title> <p> <filepath>MultiRead1</filepath> is
+an example of a class that is capable of using more than one resource file; <filepath>MultiRead1</filepath> however
+uses only a single resource file. </p> <p>This example, together with <xref href="GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB.dita">MultiRead2</xref> (which
+uses more than one resource file), shows how to use multiple resource files
+with cross-referenced resources. </p> <p>It introduces the class <codeph>CMultipleResourceFileReader</codeph>,
+capable of reading resources from multiple resource files. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref></p><p><xref href="GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3.dita"><apiname>CArrayFixFlat</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0554452F-856D-51A1-A1A5-C44EEFF7A3D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0554452F-856D-51A1-A1A5-C44EEFF7A3D4" xml:lang="en"><title>SWI
+Analysis Toolkit Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <b>SWI Analysis Toolkit</b> enables you to extract information from
+SWIcertstore and software installation registry for analysis. It also enables
+you to validate the certificate chains and extract capability details associated
+with a SIS file. </p>
+<section><title>Required background</title> <p>Before you start, you must
+be familiar with the following: </p> <ul>
+<li id="GUID-869B83DD-1607-50DE-82AF-82F25B266597"><p><xref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita">Public
+Key Cryptography</xref>  </p> </li>
+<li id="GUID-13E4E4CD-FCB1-5B77-9FAA-B4301BBCC807"><p><xref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita">Digital
+Certificates</xref>  </p> </li>
+<li id="GUID-C0E53EA7-16DE-5858-831A-956A1F53388C"><p><xref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita">Certificate
+Chaining and Chain Validation</xref>  </p> </li>
+</ul> </section>
+<section><title>Typical Uses</title> <p>The SWI Analysis Toolkit component
+enables you to use: </p> <ul>
+<li id="GUID-52BD95AE-5625-56F7-A021-AC829D65D34D"><p><xref href="GUID-F370FDA8-6DB7-531A-A057-B773F1729C46.dita">DumpChainValidityTool</xref> to
+validate the signing certificate-chain information associated with a SIS file
+and display a unified list of capabilities that are supported by the validated
+chains. </p> </li>
+<li id="GUID-2863769E-C5F6-5D13-9697-DE65167264EC"><p><xref href="GUID-6A8A4910-681B-5E5A-AEA9-FD8BDBD84EDD.dita">DumpInstallFileStatusTool</xref> to
+retrieve missing capabilities corresponding to each executable associated
+with a SIS file. </p> </li>
+<li id="GUID-8745C46F-5D3F-5A7C-9F3C-BED5609D9E33"><p><xref href="GUID-49D979C8-C9B5-55A4-A496-9B62FC569D05.dita">DumpSWICertStoreTool</xref> to
+extract certificate related information such as capabilities and mandatory
+status for all the certificates from SWI certificate stores. </p> </li>
+<li id="GUID-D2557E95-FC32-55EB-9CF1-F601EE8A0911"><p><xref href="GUID-ABD45929-DEA1-5500-B64A-B32F623B6A06.dita">DumpSWIRegistryTool</xref> to
+retrieve the controller information for a specific package. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-8E160B29-18C4-574B-9259-9A8E958CDA91.dita"><linktext>Secure Software
+Install Tools</linktext></link>
+<link href="GUID-1C7F6DBA-7113-5542-AEF1-179FDD980443.dita"><linktext>SWI Analysis
+Toolkit Reference </linktext></link>
+<link href="GUID-0E231D3E-D21F-5527-8FA5-5CF19A42B5B7.dita#GUID-0E231D3E-D21F-5527-8FA5-5CF19A42B5B7/GUID-221EC596-E062-5BE0-8D3A-EDA1F403919D">
+<linktext>Writable Swicertstore</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e61984_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-056165A7-E8A1-4868-8051-9EC58C5A3342.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-056165A7-E8A1-4868-8051-9EC58C5A3342" xml:lang="en"><title>Usability
+considerations</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-E4B60228-49E7-415D-AFF1-9E9B622D2197"> <p>All touch and
+gestural interfaces have to appear competent and safe. The interface needs
+to look as though it is not going to misuse users' personal data or break
+down. Optimizing system performance is critical here. Low screen refresh rate
+and latent images do not give the impression of a trustworthy touch UI. The
+use of touch screen and sensors may also increase battery consumption of mobile
+devices.</p><note><p>Touch screens consume most power during touch operations,
+and reducing unnecessary user interaction can help increase power efficiency.
+Specifically with resistive touch screens, avoiding excessively long touch
+and drag user actions is recommended. The continuous touch event flow keeps
+the CPU busy. The screen lock turns off the touch completely. To learn more
+about both optimizing system performance and battery life in Symbian applications,
+see the <xref href="http://www.forum.nokia.com/main/resources/user_experience/power_management/" scope="external">Power Management</xref> section at Forum Nokia.</p></note><p>The
+best products predict the needs of their users and then fulfill those needs
+in unexpectedly pleasing ways. Adaptive targets are one way to do this.  Controls
+that match the users actions well are another way devices can be clever.</p> <p><b>Interaction
+design</b></p><p>Use appropriate and simple interaction logic:</p><ul>
+<li><p>Navigation and controls should be clear and meaningful to prevent mistakes:
+strokes along the touch panel should produce a logical outcome. </p></li>
+<li><p>The coolest interaction in the world is empty unless it has clear meaning
+for the person performing it. When using indirect controls, the UI response
+should relate to the action the user is performing. </p></li>
+<li><p>Meaningful controls are easier to learn and remember. </p></li>
+</ul> <p>Touch UI can employ direct or indirect controls, or a combination
+of both:</p><ul>
+<li><p>Direct controls allow users to simply tap the item they want to manipulate
+right on the screen itself, move it, make it bigger, scroll it, and so on.
+For more information, see <xref href="GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita">UI
+components</xref> and <xref href="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita">Touch
+support for common UI components</xref>. </p></li>
+<li><p>Indirect controls use some other means to manipulate an object, for
+example, shaking, tilting, flipping, waving and so on. For more information,
+see <xref href="GUID-AE979B97-5610-42F3-99A7-5A3D66D3C2E6.dita">Sensor interaction</xref>.</p></li>
+<li><p>While the Symbian style provides for the use of scroll bars, it is
+common to reverse the page scrolling orientation in applications such as browser.
+In absence of scroll bars, users will flick or drag the page upwards rather
+than pull a scroller down to move the page up, that is, to scroll down. In
+this case, scroll bars are used as navigation indicators.</p></li>
+</ul><fig id="GUID-604A80CE-CB23-45A9-BC29-A01395CD6A2F">
+<image href="GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e47077_href.png" scale="60" placement="inline"/>
+</fig><p>Direct taps and strokes are far easier for the user to understand
+and pick up than abstract, indirect ones. A single view should always employ
+only a few indirect strokes, so that the controls do not confuse the user. </p><p><b>Visual
+design</b></p><p>On touch screens, it is important to make a clear distinction
+between touchable areas, and non-touchable areas, such as text. </p><ul>
+<li><p>Borders, glow effects, or other indicators can be used to highlight
+the interaction. </p></li>
+<li><p>Note that theme design alone is not sufficient for indicating touch
+functionality: where one theme may indicate touch, another may not.</p></li>
+</ul><p>See also:</p><ul>
+<li><p><xref href="GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita">Scale and positioning
+of controls</xref></p></li>
+<li><p><xref href="GUID-3CA039D8-A74D-4C9E-B4F5-6E153C7F65A1.dita">Finger vs. stylus</xref></p></li>
+<li><p><xref href="GUID-7BFEEDF7-3DB8-42FF-9D7A-F98E536F7686.dita">Sensor interaction</xref></p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-056736E0-3DF0-49FE-A44D-1A8E47FE45A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-056736E0-3DF0-49FE-A44D-1A8E47FE45A0" xml:lang="en"><title>Switching
+OFF the lights</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The<codeph> LightOffL()</codeph> method call switches OFF
+the specified target light. Multiple light targets can be specified by using
+bitwise-or.</p><p>The following code snippet demonstrates how to switch lights
+OFF for infinite duration for multiple targets. Lights are switched OFF with
+fade-out.</p><codeblock xml:space="preserve">iLight-&gt;LightOffL( CHWRMLight::EPrimaryDisplay | CHWRMLight::EPrimaryKeyboard );</codeblock><p>The
+following code snippet demonstrates how to switch OFF lights for the specified
+duration for one target (Lights are switched OFF with fade-out):</p><codeblock xml:space="preserve">// aDuration = 5000 milliseconds
+light-&gt;LightOffL( CHWRMLight::ESecondaryDisplay, 5000 );</codeblock><p>After
+the duration expires, if there has not been a previous infinite time duration
+call in this session, the light state for target is changed to whatever state
+was caused by the last infinite time duration call, or default state determined
+by inactivity timer.</p><p>The following code snippet demonstrates how to
+switch OFF lights for the specified duration for one target (fade-out is also
+controlled):</p><codeblock xml:space="preserve">// aDuration = 5000 milliseconds
+// aFadeOut = EFalse means that lights turn off instantly and fade-out is not used, 
+// ETrue means that lights smoothly fade-out.
+light-&gt;LightOnL( CHWRMLight::ESecondaryDisplay, 5000, EFalse );</codeblock><note> All
+devices do not support fade-out. In such scenario, the device behaves in its
+default state.</note></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F" xml:lang="en"><title>SemaphoreExample:
+thread synchronisation using semaphores</title><shortdesc>Explains how to use Semaphores to achieve thread synchronization.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>It is recommended to use semaphores instead of thread priorities for the
+following reasons:<ul>
+<li><p> In a uniprocessor environment, setting the thread priorities does
+not guarantee prioritized or serialized execution.</p></li>
+<li><p>In a multiprocessor or SMP environment, thread priorities are irrelevant
+as multiple threads can run simultaneously.</p></li>
+</ul></p>
+<section id="GUID-48668C9B-6B42-4FE8-899B-403D5EB5FB53"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-34775913-c5c2-41ba-a591-827039bbe7af.zip" scope="external">SemaphoreExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-34775913-c5c2-41ba-a591-827039bbe7af.html" scope="peer">browse</xref> to view the example code. </p></section>
+<section id="GUID-2E531F3D-EEC8-40FD-9F32-2071FDECAE61"><title>Description: </title><p> The example creates a database containing
+a table of three columns with integer entries.</p><p> The example creates
+two threads:</p><ul>
+<li><p><codeph>WriterThread</codeph>: This thread calls a periodic function
+at an interval of one second, and in each iteration it inserts one row of
+integers in the table. </p></li>
+<li><p><codeph>ReaderThread</codeph>: This thread also calls a periodic function
+at an interval of one second, and in each iteration it reads one row of integers
+following the last row read.</p></li>
+</ul><p> The example uses a macro <codeph>USE_SEMAPHORE</codeph> to show the
+difference between the code using semaphores and the code which doesn't use
+semaphores. When not using semaphores, it is not guaranteed that the <codeph>ReaderThread</codeph> will
+be able to read the database because in an SMP environment, data may not yet
+have been written by the <codeph>WriterThread</codeph>.</p><p>Using a semaphore
+serializes the thread execution. The read operation waits on the semaphore
+until it gets a signal from the write operation. This ensures that the <codeph>ReaderThread</codeph> only
+reads a row from the database after the <codeph>WriterThread</codeph> has
+written it. </p></section>
+<section id="GUID-07CAD3CA-86DB-4245-8565-C618E59718A5"><title>Class summary</title><ul>
+<li><p><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> - A handle to a thread.</p></li>
+<li><p><xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref> - DBMS Store database implementation</p></li>
+<li><p><xref href="GUID-AED27A76-3645-3A04-B80D-10473D9C5A27.dita"><apiname>RSemaphore</apiname></xref> - Used for thread synchronization. </p></li>
+</ul></section>
+<section id="GUID-863B0EDF-F3F8-4345-9FEE-824350A2DBCE"><title>Building and configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-037442C7-2436-5152-9A3E-9DC0B4283A9C-GENID-1-6-1-13-1-1-4-1-4-1-25-1-31-1-3-5-3-1"><p>The example builds an
+executable called <filepath>semaphoreexample.exe</filepath> in the standard
+location. </p> </li>
+<li id="GUID-B7C849B9-0885-5253-A78B-71854F86D772-GENID-1-6-1-13-1-1-4-1-4-1-25-1-31-1-3-5-3-2"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+</ul> </section>
+<section id="GUID-278DD8CF-28AF-4826-B938-20EC19F3A5B0"><title>Running the example</title> <p>The example code contains a
+macro<codeph>USE_SEMAPHORE</codeph> in the <filepath>mmp</filepath> file.
+By default it is commented out and on execution the example runs without using
+semaphores; the macro should be uncommented to use semaphores. The console
+output will generally look the same whether using semaphores or not if there
+is a single processor, but differences will occur in an SMP environment. Run
+the example following the instructions provided in the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC"><title>Dial a Call Tutorial </title><shortdesc>This tutorial describes how to dial a call with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-2F1A2A69-B31A-52E1-AC45-2466E9A0F373"> <step id="GUID-3813B8DE-531C-5103-AA0D-D5DC352F442D"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-5168AF6C-BB5B-5A9F-81A4-2BDA74B810BB"><cmd/><info>dial a call with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::DialNewCall()</apiname></xref>  </info> <info>pass the number to dial in a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TTelNumber</apiname></xref>.<codeph>CTelephony::DialNewCall()</codeph> returns a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallId</apiname></xref> that identifies the call. This will be either <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EISVCall1</apiname></xref> or <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EISVCall2</apiname></xref>. You need this ID to place a call on hold and terminate a call. </info> </step> <step id="GUID-AB6F0698-70C8-5B1E-84B6-BEF9D8C0CFE9"><cmd/><info>pass <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::DialNewCall()</apiname></xref> a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallParamsV1</apiname></xref> object to specify an option for your identity. You have three options: </info> <substeps id="GUID-382BCFFE-5EF4-5EB7-B07E-FD6C5E049CB1"><substep id="GUID-40C52D42-0FBA-57AD-BF6C-75BA26ECD933"><cmd/><info>hide your identity </info> </substep> <substep id="GUID-C9A2E428-A7C1-5654-AFC2-358C91D4BA3E"><cmd/><info>display your identity </info> </substep> <substep id="GUID-08814A8F-806A-56F2-9A4D-7FA4B66151BA"><cmd/><info>use default setting </info> </substep> </substeps> </step> <step id="GUID-082D70CE-00A9-56E0-880E-9E634935A3F7"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EDialNewCallCancel</apiname></xref> to cancel the dial request. </info> </step> </steps> <example id="GUID-32181D81-A35C-5EB9-9FBE-7601A63B7378"><title>Dial a call example</title> <p>This example dials the number <codeph>123456789</codeph> and allows the remote party to see the phone's number: </p> <codeblock id="GUID-9E980E83-B70E-560C-8C83-934D490ABACE" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+_LIT(KTheNumber, "123456789");
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallId;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    CTelephony::TTelNumber telNumber(KTheNumber);
+
+    CTelephony::TCallParamsV1 callParams;
+    callParams.iIdRestrict = CTelephony::ESendMyId;
+    CTelephony::TCallParamsV1Pckg callParamsPckg(callParams);
+
+    iTelephony-&gt;DialNewCall(iStatus, callParamsPckg, telNumber, iCallId);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The call has been dialled successfully;
+          // iCallId contains the call's ID, needed when controlling the call.
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EDialNewCallCancel);
+    }
+</codeblock> </example> <postreq id="GUID-8A1C0CE1-31F8-5B78-9FDC-D2BF46B2924F"><p>This describes how to dial a second call while another is in progress. </p> <ol id="GUID-4A03E748-F7D6-56AF-89C6-51D2D440994D"><li id="GUID-A9B4B84F-10B9-5709-AA88-FFACCC93815E"><p>Put the first call on hold. </p> <p>For more information. See <xref href="GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita">Call Hold Tutorial</xref>. </p> <p>If the first call was not dialled or answered by you then you cannot control it, and so you cannot put it on hold. If it is not on hold already then you will have to wait until the it is put on hold. The <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Voice line status</xref> changes to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EStatusHold</apiname></xref>. </p> </li> <li id="GUID-5613B91D-7C01-54D1-9F78-ADDE9455FA71"><p>Dial the second call. </p> <p>This is the same as dialling a call in the <xref href="GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita">Dial a Call Tutorial</xref>. <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::AnswerIncomingCall()</apiname></xref> will return a different call ID to the first call. </p> <p>Remember that to dial a call is an asynchronous operation. </p> </li> <li id="GUID-CC8C65D1-1C89-591B-B540-376C388CD4AA"><p>If the operation fails, remember to resume the first call, see <xref href="GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1.dita">Call Resume Tutorial</xref>. </p> </li> </ol> <p>As a result, the first call is on hold, and the phone user is connected to the second caller. </p> </postreq> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05785721-C090-50C6-BE5E-46EF14222FFF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-05785721-C090-50C6-BE5E-46EF14222FFF" xml:lang="en"><title>8
+bit variant, 16 bit variant and build independence</title><shortdesc>This document describes 8 bit variant, 16 bit variant and build
+independence.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Descriptors are supplied in two variants:</p>
+<ul>
+<li id="GUID-6CAEBC92-A518-5623-8DE4-A685091CBD5B"><p>the 16 bit variant for
+handling Unicode strings and double byte valued data</p> </li>
+<li id="GUID-9D9C6C04-FFC2-5E41-8E55-E62DCC04CB31"><p>the 8 bit variant for
+handling non-Unicode strings and single byte valued data (binary data).</p> </li>
+</ul>
+<p>Descriptors are also supplied as build independent types. These are used
+whenever descriptors are used to represent text strings. By using build independent
+types, the appropriate variant, either 16 bit or 8 bit, is selected at build
+time depending on whether the <codeph>_UNICODE</codeph> macro has been defined
+or not.</p>
+<p>Binary data always requires the 8 bit variant, regardless of the build,
+and this should be explicitly used in program code.</p>
+<p>Explicit use of the 16 bit variant is rare.</p>
+<p>With a few exceptions, the behaviour of both 8 bit and 16 bit variants
+is the same.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-057F1F82-56AF-5696-853E-79196A3D567E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-057F1F82-56AF-5696-853E-79196A3D567E" xml:lang="en"><title>SIP</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0584846D-D4D9-5093-8FE5-764CCFBA813F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0584846D-D4D9-5093-8FE5-764CCFBA813F" xml:lang="en"><title>FAT Filename Conversion Plug-ins</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> Each plug-in converts file names (FAT or FAT32) between Unicode and a Windows code page.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-058D9E7F-5F4B-5656-BA49-16ED2D1451AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-058D9E7F-5F4B-5656-BA49-16ED2D1451AE" xml:lang="en"><title>UIDs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Hash algorithm UIDs</title> <table id="GUID-419E5D6D-17A7-5454-92A1-E7EDEF618ED6">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry>UID</entry>
+<entry>Description</entry>
+<entry>Value</entry>
+<entry>RFC standard</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>KMd2Uid </p> </entry>
+<entry><p>MD2, Message-Digest Algorithm </p> </entry>
+<entry><p>0x10283173 </p> </entry>
+<entry><p> <xref href="http://www.ietf.org/rfc/rfc1319.txt" scope="external">RFC
+1319</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KMd4Uid </p> </entry>
+<entry><p>MD4, Message-Digest Algorithm (Output: 128 bit message digest) </p> </entry>
+<entry><p>0x2000B341 </p> </entry>
+<entry><p> <xref href="http://www.ietf.org/rfc/rfc1320.txt" scope="external">RFC
+1320</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KMd5Uid </p> </entry>
+<entry><p>MD5 ,Message-Digest Algorithm (output:128-bit "fingerprint" or "message
+digest) </p> </entry>
+<entry><p>0x10283174 </p> </entry>
+<entry><p> <xref href="http://www.ietf.org/rfc/rfc1321.txt" scope="external">RFC
+1321</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KSha1Uid </p> </entry>
+<entry><p>Secure Hash Algorithm(output: 160-bit message digest) </p> </entry>
+<entry><p>0x10283175 </p> </entry>
+<entry><p> <xref href="http://www.itl.nist.gov/fipspubs/fip180-1.htm" scope="external">FIPS
+180-1</xref> and <xref href="http://www.ietf.org/rfc/rfc3174.txt" scope="external">RFC
+3174</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KSha224Uid </p> </entry>
+<entry><p>Sha224 algorithm </p> </entry>
+<entry><p>0x2000E258 </p> </entry>
+<entry><p> <xref href="http://all.net/books/standards/NIST-CSRC/csrc.nist.gov/publications/fips/fips180-2/FIPS180-2_changenotice.pdf" scope="external">FIPS 180-2 (with change notice)</xref>, <xref href="http://www.ietf.org/rfc/rfc3874.txt" scope="external">RFC3874</xref> and <xref href="http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf" scope="external">FIPS 180-3</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KSha256Uid </p> </entry>
+<entry><p>Sha256 algorithm </p> </entry>
+<entry><p>0x2000E259 </p> </entry>
+<entry><p> <xref href="http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf" scope="external">FIPS 180-2</xref> and <xref href="http://tools.ietf.org/html/rfc4634" scope="external">RFC 4634 </xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KSha384Uid </p> </entry>
+<entry><p>Sha384 algorithm </p> </entry>
+<entry><p>0x2000E25A </p> </entry>
+<entry><p> <xref href="http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf" scope="external">FIPS 180-2</xref> and <xref href="http://tools.ietf.org/html/rfc4634" scope="external">RFC 4634 </xref>  </p> </entry>
+</row>
+<row>
+<entry><p>KSha512Uid </p> </entry>
+<entry><p>Sha512 algorithm </p> </entry>
+<entry><p>0x2000E25B </p> </entry>
+<entry><p> <xref href="http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf" scope="external">FIPS 180-2</xref> and <xref href="http://tools.ietf.org/html/rfc4634" scope="external">RFC 4634 </xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The hash algorithm UIDs are used by the following APIs: </p> <ul>
+<li id="GUID-FAD44CE7-B0C3-523C-895F-DB58122ACA9D"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CHashFactory::CreateHashL()</apiname></xref>  </p> </li>
+<li id="GUID-B206FCF6-A9B4-5330-AC91-148D2A18C292"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CRuleSelector::CreateHashL()</apiname></xref>  </p> </li>
+<li id="GUID-DE3E3CC4-7041-5D50-9C38-409D37858CA0"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CCryptoPluginEntry::CreateHashL()</apiname></xref>  </p> </li>
+<li id="GUID-17E00247-8550-53C2-9484-3BD0B7BB8350"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CHashFactory::CreateAsyncHashL()</apiname></xref>  </p> </li>
+<li id="GUID-3FAA4591-64B1-55BF-9A07-D8E4318F9DA7"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CRuleSelector::CreateAsyncHashL()</apiname></xref>  </p> </li>
+</ul> </section>
+<section><title>Random algorithm UIDs</title> <table id="GUID-7080EBEE-F16E-58E7-86D4-55B06AEE3F9C">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>UID</entry>
+<entry>Description</entry>
+<entry>Value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>KRandomUid </p> </entry>
+<entry><p>Random algorithm UID </p> </entry>
+<entry><p>0x10283178 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The random algorithm UIDs are used by the following APIs: </p> <ul>
+<li id="GUID-60CD845B-520E-5A92-9D98-7060DFAFBE2A"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CRandomFactory::CreateRandomL()</apiname></xref>  </p> </li>
+<li id="GUID-F78A3F91-F0FC-5B97-B09C-377B84DAB442"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname> CryptoSpi::CRuleSelector::CreateRandomL()</apiname></xref>  </p> </li>
+<li id="GUID-43703C40-4FB3-5233-BF18-34320FC50D8E"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CRandomFactory::CreateAsyncRandomL()</apiname></xref> </p> </li>
+<li id="GUID-E98800A8-4C96-52CE-AE42-0D780065FBDE"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CRuleSelector::CreateAsyncRandomL()</apiname></xref> </p> </li>
+</ul> </section>
+<section><title>Symmetric key algorithm UIDs</title> <table id="GUID-21816DBD-BC04-5F12-9972-8FEF5CEA3F5A">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>UID</entry>
+<entry>Description</entry>
+<entry>Value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>KDesUid </p> </entry>
+<entry><p>Des algorithm UID </p> </entry>
+<entry><p>0x10283179 </p> </entry>
+</row>
+<row>
+<entry><p>K3DesUid </p> </entry>
+<entry><p>3Des algorithm UID </p> </entry>
+<entry><p>0x1028317a </p> </entry>
+</row>
+<row>
+<entry><p>KRc2Uid </p> </entry>
+<entry><p>RC2 algorithm UID </p> </entry>
+<entry><p>0x1028317b </p> </entry>
+</row>
+<row>
+<entry><p>KArc4Uid </p> </entry>
+<entry><p>ARC4 algorithm UID </p> </entry>
+<entry><p>0x1028317c </p> </entry>
+</row>
+<row>
+<entry><p>KAesUid </p> </entry>
+<entry><p>AES algorithm UID </p> </entry>
+<entry><p>0x1028317d </p> </entry>
+</row>
+<row>
+<entry><p>KMisty1Uid </p> </entry>
+<entry><p>Misty1 algorithm UID </p> </entry>
+<entry><p>0x102831be </p> </entry>
+</row>
+<row>
+<entry><p>KMisty2Uid </p> </entry>
+<entry><p>Misty2 algorithm UID </p> </entry>
+<entry><p>0x102831bf </p> </entry>
+</row>
+<row>
+<entry><p>KKasumiUid </p> </entry>
+<entry><p>Kasumi algorithm UID </p> </entry>
+<entry><p>0x102831c0 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The symmetric key algorithm UIDs are used by the following API: </p> <ul>
+<li id="GUID-CF4CBD6B-F8AE-5034-9A3D-7D85D35DDCC4"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CSymmetricCipher::CSymmetricCipher()</apiname></xref> </p> </li>
+</ul> </section>
+<section><title>Asymmetric key algorithm UIDs</title> <table id="GUID-FB96DF5A-16F9-535F-B754-52FCEE1337C5">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>UID</entry>
+<entry>Description</entry>
+<entry>Value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>KRsaCipherUid </p> </entry>
+<entry><p>RSA Cipher algorithm UID </p> </entry>
+<entry><p>0x1028317e </p> </entry>
+</row>
+<row>
+<entry><p>KRsaSignerUid </p> </entry>
+<entry><p>RSA Signer algorithm UID </p> </entry>
+<entry><p>0x1028317f </p> </entry>
+</row>
+<row>
+<entry><p>KDsaSignerUid </p> </entry>
+<entry><p>DSA Signer algorithm UID </p> </entry>
+<entry><p>0x10283180 </p> </entry>
+</row>
+<row>
+<entry><p>KDHAgreementUid </p> </entry>
+<entry><p>DH Agreement algorithm UID </p> </entry>
+<entry><p>0x10283183 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The asymmetric key algorithm UIDs are used by the following API: </p> <ul>
+<li id="GUID-6121C646-5898-51C4-A51D-063A6841BDF7"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CAsymmetricCipher::CAsymmetricCipher()</apiname></xref> </p> </li>
+</ul> </section>
+<section><title>Operation modes</title> <table id="GUID-58122807-15E8-5919-BE4B-6E52BB425319">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>UID</entry>
+<entry>Description</entry>
+<entry>Value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>KOperationModeNoneUid </p> </entry>
+<entry><p>None Mode UID </p> </entry>
+<entry><p>0x10283190 </p> </entry>
+</row>
+<row>
+<entry><p>KOperationModeECBUid </p> </entry>
+<entry><p>ECB Mode UID </p> </entry>
+<entry><p>0x10283191 </p> </entry>
+</row>
+<row>
+<entry><p>KOperationModeCBCUid </p> </entry>
+<entry><p>CBC Mode UID </p> </entry>
+<entry><p>0x10283192 </p> </entry>
+</row>
+<row>
+<entry><p>KOperationModeOFBUid </p> </entry>
+<entry><p>OFB Mode UID </p> </entry>
+<entry><p>0x10283193 </p> </entry>
+</row>
+<row>
+<entry><p>KOperationModeCFBUid </p> </entry>
+<entry><p>CFB Mode UID </p> </entry>
+<entry><p>0x10283194 </p> </entry>
+</row>
+<row>
+<entry><p>KOperationModeCTRUid </p> </entry>
+<entry><p>CTR Mode UID </p> </entry>
+<entry><p>0x10283195 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The operation modes are used by the following APIs: </p> <ul>
+<li id="GUID-809C4C15-873A-51CE-B1E8-CCFAAD66C8A7"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname>CryptoSpi::CHashFactory::CreateHashL()</apiname></xref>  </p> </li>
+<li id="GUID-D6732C41-74A4-59A3-A099-D7CA9AE2C634"><p> <xref href="GUID-48BB2346-6840-3A26-B43C-4DF70A322B17.dita"><apiname> CryptoSpi::CHashFactory::CreateAsyncHashL()</apiname></xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05931546-C3C9-4085-8D5F-6B6C3F21D24C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-05931546-C3C9-4085-8D5F-6B6C3F21D24C" xml:lang="en"><title>Location
+Triggering API</title><shortdesc>The Location Triggering API enables a client application to create
+and manage location based triggers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Location based triggers notify a client application when a device enters
+or leaves a specified geographical area. For example, an end user could set
+a trigger so that their device notifies them when they are in the vicinity
+of a specific train station. </p>
+<p>A trigger has various attributes, including a triggering condition and
+a system reaction. The triggering condition determines when the trigger is
+fired. The system reaction determines how the client application is notified
+when the triggering condition is met.</p>
+<p>Typical use cases include:</p>
+<ul>
+<li><p>Creating a trigger</p></li>
+<li><p>Modifying a trigger</p></li>
+<li><p>Deleting a trigger</p></li>
+<li><p>Handling a trigger firing event.</p></li>
+</ul>
+</conbody><related-links>
+<link href="GUID-D0318BB6-0B9F-5A1C-AB0B-61BA22D28661.dita"><linktext>Location
+Acquisition API</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-059326DB-E7A4-5CB8-BCA7-FF0C71D9D1C7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-059326DB-E7A4-5CB8-BCA7-FF0C71D9D1C7" xml:lang="en"><title>How
+to access elements</title><shortdesc>The elements of an array can be accessed by specifying the position
+of the element in the array.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The elements of an array can be referenced using the indexing  <codeph>operator[]</codeph> and
+specifying the position of the element.</p>
+<p>For all arrays <i>except</i> the <codeph>RArray&lt;class T&gt;</codeph> and <codeph>RPointerArray&lt;class T&gt;</codeph> types,
+the <codeph>At()</codeph> member function can also be used.</p>
+<p>All of the following code fragments use a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> array.</p>
+<p>This code constructs a fixed flat array containing the required number
+of <codeph>TInt</codeph> type elements - in this case four.</p>
+<p>The indexing operator is used to fetch the value of the second element.
+This element is then changed, showing two different methods for changing the
+element: the <codeph>At()</codeph> function and the <codeph>[]</codeph> operator.</p>
+<codeblock id="GUID-44519EEA-85BA-54CF-9F4A-E67B043C8837" xml:space="preserve">CArrayFixFlat&lt;TInt&gt;* array;
+array = new CArrayFixFlat&lt;TInt&gt;(4);
+...
+for (TInt value = 0; value &lt; 4; value++)
+ array-&gt;AppendL(value);
+...
+TInt somevalue = (*array)[1];  //fetch the element
+TInt somevalue = array-&gt;At(1);  //... alternative way
+(*array)[1]    = 21;    //change the element
+array-&gt;At(1)   = 21;    // ... alternative way</codeblock>
+<section id="GUID-DD4808A9-0989-4A2E-B83C-B735BEDE0677"><title>Accessing functions</title> <p>If the array elements are objects
+of a class with member functions, these functions can be easily accessed as
+shown in the following code fragment:</p> <codeblock id="GUID-DD0C968E-B164-5EAA-9188-F0A323197652" xml:space="preserve">class TMyClass
+ {
+public :
+ void SetValue(TInt aval);
+ TInt GetValue();
+private
+ TUint iValue;
+ };</codeblock> <codeblock id="GUID-39DDFF64-B1FC-5D93-8552-9D0FF4E5B6BD" xml:space="preserve">CArrayFixFlat&lt;TMyClass&gt;* array;          // an array of
+                                         // TMyClass objects
+TMyClass myclass;
+array = new CArrayFixFlat&lt;TMyClass&gt;(1);
+array-&gt;AppendL(myclass);
+(*array)[0].SetValue(21);</codeblock> </section>
+<section id="GUID-B2AE92D8-239C-4711-AA85-EEE9D333288C"><title>Accessing functions of CBase derived objects</title> <p>Where
+the elements are pointers to <codeph>CBase</codeph> derived objects (i.e.
+elements of an array of type <codeph>CArrayPtrFlat</codeph> or <codeph>CArrayPtrSeg</codeph>),
+the members of those <codeph>CBase</codeph> derived objects can easily be
+accessed. For example, an array of pointers to <codeph>CElement</codeph> objects
+can be accessed as follows:</p> <codeblock id="GUID-D35D517A-0DB1-59A8-A6A3-BFDDF1C4610B" xml:space="preserve">CArrayPtrFlat&lt;CElement&gt;* ptrflat;
+...
+ptrflat = new (ELeave) CArrayPtrFlat&lt;CElement&gt;(16)
+...
+...   // add elements to ptrflat
+...
+(*ptrflat)[0]-&gt;SetTextL(_LIT("New text for the first CElement"));
+ptrflat-&gt;At(1)-&gt;SetTextL(_LIT("New text for the second CElement"));</codeblock> <p>(where <codeph>SetTextL()</codeph> is
+a member function of <codeph>Celement)</codeph>.</p> <p>Note that both <codeph>At()</codeph> and
+the index <codeph>operator[]</codeph> return a reference to the object in
+the array. </p> </section>
+<section id="GUID-C8FB1FAE-F331-4B1D-9FEA-982A14986E42"><title>Refreshing the pointer</title> <p>If a pointer to the referenced
+object is taken, be aware that the pointer value may become invalid once elements
+are added to, or removed from the array. In this event, always refresh the
+pointer. </p> <codeblock id="GUID-FE89CB4A-821E-515D-B963-58D4C288E385" xml:space="preserve">class TMyClass
+ {
+public :
+ void SetValue(TInt aval);
+ TInt GetValue();
+private
+ TUint iValue;
+ };</codeblock> <codeblock id="GUID-D727EFF4-DA87-54F8-8E4C-761F11E5726A" xml:space="preserve">CArrayFixFlat&lt;TMyClass&gt;* array;
+...
+TMyClass myclass;
+array = new CArrayFixFlat&lt;TMyClass&gt;(16);
+...
+for (TInt val = 0; val &lt; 10; val++)
+ {
+ myclass.SetValue(val)
+ array-&gt;AppendL(myclass;
+ }
+...
+TMyClass* myptr;
+myptr = &amp;(array-&gt;At(9));
+myptr-&gt;GetValue();  // references the tenth element
+array-&gt;Delete(0,4); // Delete first four elements
+array-&gt;Compress();  
+myptr-&gt;GetValue();  // myptr is invalid. An exception may occur
+...</codeblock> <p>After deleting the first four elements, <codeph>myptr</codeph> points
+to a location outside the logical array. Once the array has been compressed,
+the pointer is invalid. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05A3E75B-25F9-54AC-8AF8-3E97F832E626.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-05A3E75B-25F9-54AC-8AF8-3E97F832E626" xml:lang="en"><title>XML DOM Engine</title><shortdesc>The XML DOM Engine provides an API for manipulating XML data with
+DOM. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links>
+<link href="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita"><linktext>libxml2 Overview</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05D6AB1C-8548-58C6-AA6C-EE362FF49247.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-05D6AB1C-8548-58C6-AA6C-EE362FF49247" xml:lang="en"><title>Bitmap
+Animation Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-44C21503-6654-4590-996F-969D5B8B6869"><title>Purpose</title> <p>This document shows you how to create an
+animation using the Bitmap Animation framework. </p> </section>
+<section id="GUID-3968A450-B383-4F55-A89D-817908FD67BE"><title>Architectural relationships</title> <p>The Bitmap Animation
+framework (<filepath>bmpanim.dll</filepath>) uses the font and bitmap server
+(<filepath>fbscli.dll</filepath>) to provide the bitmap images (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> s). </p> <p>An
+animation DLL (<filepath>bmpansrv.dll</filepath>), loaded by the Window Server,
+is used to perform the animation. </p> <p>The animation DLL uses the bitgdi
+component (<filepath>bitgdi.dll</filepath>) to draw the bitmaps. </p> </section>
+<section id="GUID-0CE251DB-D48D-43D2-AF0D-420D7AAF6414"><title>Description</title> <p>To use a bitmap animation in your application
+you need to: </p> <ul>
+<li id="GUID-F6367722-F765-550C-8B85-65FFEA38369A"><p>define one or more animation
+frames, each of which owns a bitmap, </p> </li>
+<li id="GUID-7B1EB74D-0057-52D6-8560-A96A301F0ED3"><p>assign the frames to
+an animation container, </p> </li>
+<li id="GUID-4C005026-80CE-59B4-A9EE-DAFD2EB71DFA"><p>create an animation
+player object and pass the animation container to it. This communicates with
+the window server to start and stop playing the animation inside a window. </p> </li>
+</ul> <p>Collectively, these steps make up the Bitmap Animation framework.
+The key client side classes that are involved in these steps are: </p> <ul>
+<li id="GUID-64D5B1E5-7FDD-5AD1-BD0F-906D27B118B1"><p> <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita"><apiname>CBitmapFrameData</apiname></xref>, </p> </li>
+<li id="GUID-0F881880-38C8-5E94-869E-835D90960C45"><p> <xref href="GUID-780B280B-A3D9-31C8-9F82-55353DC7E056.dita"><apiname>CBitmapAnimClientData</apiname></xref>, </p> </li>
+<li id="GUID-7330A56E-0371-5AE7-942F-E461F7D697F1"><p> <xref href="GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48.dita"><apiname>RBitmapAnim</apiname></xref>. </p> </li>
+</ul> <p>The rest of this document describes each of these steps, starting
+with the animation frame. </p> </section>
+<section id="GUID-112ED5AB-2CFA-415A-8CA2-9B327BADC99A"><title>Defining an animation frame</title> <p>The <codeph>CBitmapFrameData</codeph> class
+represents a single frame in an animation. The following properties of a frame
+can be set: </p> <ul>
+<li id="GUID-DEC005F2-FBAC-59AA-BA41-E4B3B025B19C"><p>the bitmap image, </p> </li>
+<li id="GUID-D1829CD2-786B-55DF-AF9A-49EBC2765906"><p>the mask, which is used
+for making parts of the image transparent, </p> </li>
+<li id="GUID-1371D69B-D45F-5A1E-8BA5-37210ED0FABA"><p>the time the frame is
+displayed, in milliseconds, </p> </li>
+<li id="GUID-8290AB20-F4E2-5FBC-84FA-BD55D4AE8EB4"><p>the position in the
+window where the frame is displayed. </p> </li>
+</ul> <p>These properties can either be set in <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita#GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594/GUID-83DBA551-0023-399B-8791-EC4CEB4BEF53"><apiname>CBitmapFrameData::NewL()</apiname></xref> or
+by calling various setter functions, described below. </p> <p><b>Setting the
+image and mask bitmaps </b> </p> <p>The following code loads the bitmap and
+mask from a multi bitmap file, and constructs the frame, setting its bitmap
+and mask, which it takes ownership of: </p> <codeblock id="GUID-2B408AB3-8816-51B6-95DD-6848EB83EC84" xml:space="preserve">CFbsBitmap* bitmap=new (ELeave) CFbsBitmap; // load the image bitmap from an mbm file 
+CleanupStack::PushL(bitmap);
+User::LeaveIfError(bitmap-&gt;Load(KMBMFileName, EMbmAnimFrame1));
+CFbsBitmap* mask=new (ELeave) CFbsBitmap; // load the mask from the same mbm file
+CleanupStack::PushL(mask);
+User::LeaveIfError(mask-&gt;Load(KMBMFileName, EMbmAnimFrameMask1));
+CBitmapFrameData* frame1 = CBitmapFrameData::NewL(bitmap, mask);
+CleanupStack::Pop(2); // bitmap, mask</codeblock> <p> <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita#GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594/GUID-E1FFD12D-5139-3532-8207-1D94C75ACBE8"><apiname>CBitmapFrameData::SetBitmap()</apiname></xref> and <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita#GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594/GUID-D7EB7A35-006B-3A89-9EBA-3BFD28D02518"><apiname>CBitmapFrameData::SetMask()</apiname></xref> could alternatively be used. </p> <p>An animation can have multiple frames,
+each of which has an image and mask bitmap. Each frame stores a flag to indicate
+whether or not it owns the bitmaps. If the frame owns the bitmaps, they are
+deleted in the frame’s destructor. This flag can be set or unset by calling <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita#GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594/GUID-15F4E778-0D5C-3653-8722-9352F4386C76"><apiname>CBitmapFrameData::SetBitmapsOwnedExternally()</apiname></xref>.
+By default, bitmaps are owned by the frame. </p> <p>The mask is used in the
+standard way for a bitmap mask, so pixels in the bitmap image that map to
+black pixels in the mask are drawn, while pixels that map to white pixels
+in the mask are not, so appear transparent. </p> <p><b>Setting the time interval </b> </p> <p>The
+time period for the frame to be displayed on the screen is set in milliseconds: </p> <codeblock id="GUID-7D886BE6-2660-5937-83F6-740D98E9A002" xml:space="preserve">frame1-&gt;SetInterval(125);</codeblock> <p>Note
+that a default time interval can be set in the frame container (described
+in the next section) by calling <xref href="GUID-780B280B-A3D9-31C8-9F82-55353DC7E056.dita#GUID-780B280B-A3D9-31C8-9F82-55353DC7E056/GUID-A7CEB917-12B5-38E8-9BBA-5F42B695EA92"><apiname>CBitmapAnimClientData::SetFrameInterval()</apiname></xref>.
+Any value set in the container will apply to frames that have not set an interval
+themselves. </p> <p><b>Setting the frame’s position </b> </p> <p>The position
+of the frame relative to the animation window is set using <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita#GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594/GUID-EA74CED1-0AE0-30D2-9FFF-AAB321FC119C"><apiname>CBitmapFrameData::SetPosition()</apiname></xref>: </p> <codeblock id="GUID-2344FB5E-F8DC-54C1-8995-A2B21DDA5D24" xml:space="preserve">TPoint framePos(3,6);
+frame1-&gt;SetPosition(framePos);</codeblock> <p>Note that the position can also
+be specified in <xref href="GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48.dita"><apiname>RBitmapAnim</apiname></xref>; if so, this value applies
+to all frames. </p> <p>When you have finished defining the animation frame(s),
+use the frame container class, <xref href="GUID-780B280B-A3D9-31C8-9F82-55353DC7E056.dita"><apiname>CBitmapAnimClientData</apiname></xref>, to
+create the animation. </p> </section>
+<section id="GUID-598D3A59-6DC6-40C9-9CFA-30D5AB656040"><title>Defining an animation</title> <p>Frames are grouped into an
+animation frame container (<xref href="GUID-780B280B-A3D9-31C8-9F82-55353DC7E056.dita"><apiname>CBitmapAnimClientData</apiname></xref>), which
+allows the following behaviour to be set: </p> <ul>
+<li id="GUID-3DB97BEC-DE20-5514-AE79-D21D6B3C257D"><p>append frames to the
+container, </p> </li>
+<li id="GUID-13AA19C6-45E7-5AEC-A202-2D8FCA16BC4D"><p>set a default display
+interval for all frames, (note that the time interval set by an individual
+frame takes precedence, for that frame, over the default interval), </p> </li>
+<li id="GUID-CC7DA6F4-DDA9-5296-8348-9FA4D2D9B203"><p>set one of the following
+play modes for the animation: play once, loop or bounce (plays forwards and
+backwards), </p> </li>
+<li id="GUID-B32243AD-62F2-547D-B31B-C8B520F71D78"><p>set the animation to
+flash, </p> </li>
+<li id="GUID-F8251606-6004-5752-B74A-23CF280248B9"><p>provide an additional
+bitmap frame to use for the background to the animation (explained below). </p> </li>
+</ul> <p><b>Appending frames </b> </p> <p>First, create the frame container,
+and append the frame(s) to it in the correct sequence: </p> <codeblock id="GUID-67B754F6-1802-5361-9CB9-40E6D025AB04" xml:space="preserve">CBitmapAnimClientData* animFrames=CBitmapAnimClientData::NewL();
+CleanupStack::PushL(animFrames);
+animFrames-&gt;AppendFrameL(*frame1);
+animFrames-&gt;AppendFrameL(*frame2); // etc.</codeblock> <p><b>Setting the default
+display interval </b> </p> <p>A default display interval can be set for the
+animation: </p> <codeblock id="GUID-126F763A-DB9C-50F4-BEB5-70093895CB03" xml:space="preserve">animFrames-&gt;SetFrameInterval(100);</codeblock> <p>This
+applies only to frames which have not specified their own interval (using <xref href="GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594.dita#GUID-D88261C5-BCD8-36C4-9A46-6DA0A7FB5594/GUID-4EE6A625-B3AD-3389-93F0-D92D6FC3FC68"><apiname>CBitmapFrameData::SetInterval()</apiname></xref>).
+In this example, the default interval for frames without their own interval
+is 100 milliseconds (0.1 second). It can be used to ensure that all frames
+are displayed for the same length of time. </p> <p><b>Setting the play mode </b> </p> <p>There
+are three play modes: play once, play repeatedly in the same direction ('loop')
+and play forwards and backwards repeatedly ('bounce'). This code sets the
+animation to play once: </p> <codeblock id="GUID-13F860DF-A4E7-505E-AAD3-92C7BDF68886" xml:space="preserve">animFrames-&gt;SetPlayMode(CBitmapAnimClientData::EPlay);</codeblock> <p><b>Other properties </b> </p> <p> <xref href="GUID-780B280B-A3D9-31C8-9F82-55353DC7E056.dita#GUID-780B280B-A3D9-31C8-9F82-55353DC7E056/GUID-E1BDF09C-2154-3E60-BFBD-B4400C3EA295"><apiname>CBitmapAnimClientData::SetFlash()</apiname></xref> and <xref href="GUID-780B280B-A3D9-31C8-9F82-55353DC7E056.dita#GUID-780B280B-A3D9-31C8-9F82-55353DC7E056/GUID-C2B4666A-A755-313D-BAC5-CEF74C09BDB2"><apiname>CBitmapAnimClientData::SetBackgroundFrame()</apiname></xref> are used to set/unset the flash flag and the background frame, respectively.
+The flash flag determines whether the animation should flash or not. </p> <p>The
+background frame, which is optional, is used to clear the current frame before
+drawing the next one. If no background frame is provided by the client, the
+window server creates its own background frame using the original screen contents,
+and updates it when the animation window is redrawn. </p> <p>If the client-provided
+background frame contains an image bitmap and a mask, the background image
+used is a combination of the screen contents and the supplied background bitmap.
+If the client-provided background frame has a bitmap but no mask, the bitmap
+is used as the background. </p> </section>
+<section id="GUID-7299DDF6-52E7-43FB-A940-DD8D3059AE6E"><title>Playing the animation</title> <p>When the animation is ready
+to play, it must be packaged and sent to the window server’s animation DLL.
+This is done through an animation player (<xref href="GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48.dita"><apiname>RBitmapAnim</apiname></xref>)
+object. </p> <p> <codeph>RBitmapAnim</codeph> allows you to do the following: </p> <ul>
+<li id="GUID-FE236CAC-38D1-5A3C-BE6A-35897F564592"><p>specify the window in
+which the animation is displayed, </p> </li>
+<li id="GUID-C0D41155-63B9-5038-924E-D7F3193FF65F"><p>associate the animation
+with an <xref href="GUID-800B3667-F45F-391F-A8A9-F876FB4ABC34.dita"><apiname>RAnimDll</apiname></xref> object, which provides a connection to
+the window server, </p> </li>
+<li id="GUID-301E0D0B-2010-56CF-8780-FBE322CD9FDA"><p>pass the animation object
+to the window server’s animation DLL, </p> </li>
+<li id="GUID-610C8A64-4BC6-5E59-8DC4-809B47328F02"><p>specify the number of
+times the animation should play, </p> </li>
+<li id="GUID-2384FF48-9281-5D4E-9298-D822B7566E52"><p>start and stop playing
+the animation. Optionally the animation can start playing from a particular
+frame. </p> </li>
+</ul> <p>Note that after the animation object has been set up and passed to
+the window server, the general attributes of the animation, namely the flash
+property, the default display time for each frame and the play mode can still
+be changed, using the following <codeph>RBitmapAnim</codeph> functions: </p> <ul>
+<li id="GUID-8DA50426-3BD1-5B8E-B8D7-B0D8F19409DF"><p> <codeph>SetFlashL()</codeph>, </p> </li>
+<li id="GUID-C237DFD6-427F-5953-AFB6-0AA64B0D97FE"><p> <codeph>SetFrameIntervalL()</codeph>, </p> </li>
+<li id="GUID-8020158F-10BA-554E-9088-E51CE00DBBC6"><p> <codeph>SetPlayModeL()</codeph>. </p> </li>
+</ul> <p>Any changes to these properties made using <codeph>RBitmapAnim</codeph> will
+override the values previously set in <codeph>CBitmapAnimClientData</codeph>. </p> <p><b>Constructing
+the animation player </b> </p> <p> <xref href="GUID-800B3667-F45F-391F-A8A9-F876FB4ABC34.dita"><apiname>RAnimDll</apiname></xref> is a handle
+to the server-side animation DLL. It is used to load the window server animation
+DLL, <filepath>bmpansrv.dll</filepath>, which provides the functions that
+perform the frames animation. The <codeph>RAnimDll</codeph> instance is passed
+to the <codeph>RBitmapAnim</codeph> constructor. </p> <codeblock id="GUID-04E123E6-306B-5C8B-9A0B-A415E6EBC74A" xml:space="preserve">RAnimDll animDLL(iEikonEnv-&gt;WsSession()); // session is used to interact with the window server
+_LIT(KDllName, "BMPANSRV.DLL"); 
+User::LeaveIfError(animDll.Load(KDllName)); 
+RBitmapAnim animPlayer(animDLL);
+animPlayer.ConstructL(Window());</codeblock> <p><b>Passing the animation object
+to the window server </b> </p> <p>The animation frame container (<codeph>CBitmapAnimClientData</codeph>)
+should be passed via the <codeph>RBitmapAnim</codeph> object to the window
+server. This is done using the function <codeph>SetBitmapAnimDataL()</codeph>.
+Note that calling this function does not cause the animation to start playing: </p> <codeblock id="GUID-F8CCC483-9B1F-58A4-AF93-E8E967A535B1" xml:space="preserve">animPlayer.SetBitmapAnimDataL(*animFrames);</codeblock> <p><b>Setting
+the number of cycles </b> </p> <p>If the animation should play more than once,
+the number of cycles should be set: </p> <codeblock id="GUID-549751F2-770E-54C4-8C78-7AFF633D9A4D" xml:space="preserve">animPlayer.SetNumberOfCyclesL(10);</codeblock> <p>Note that if the animation's play mode is 'bounce', the number of cycles
+must be set to at least two to ensure a complete animation routine. </p> <p><b>Setting
+the position </b> </p> <p>To set the animation’s position, use <codeph>SetPositionL()</codeph>.
+This value is an offset from the origin of the animation window. </p> <codeblock id="GUID-3F4E29C5-A456-5BFC-AA10-0A7E29EAAB97" xml:space="preserve">TPoint animPos(20,40);
+animPlayer.SetPositionL(animPos);</codeblock> <p><b>Starting/stopping the
+animation </b> </p> <p>The <xref href="GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48.dita#GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48/GUID-E7C514C8-0335-3903-A997-C226170798C5"><apiname>RBitmapAnim::StartL()</apiname></xref> and <xref href="GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48.dita#GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48/GUID-DD8AFC9D-E742-36E7-8816-37E61392DEDF"><apiname>RBitmapAnim::StopL()</apiname></xref> functions
+send commands to the animation DLL to start/stop the animation routine. </p> <p>Calling <xref href="GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48.dita#GUID-0282B941-2A58-3F3D-8875-DFBA72F46F48/GUID-1E2FCA51-21BF-3C21-8D96-753E27F277B1"><apiname>RBitmapAnim::DisplayFrameL()</apiname></xref> before
+the animation has started sets the frame from which the animation should start
+playing. </p> <p><b>Freeing resources </b> </p> <p>After they have been finished
+with, <codeph>Close()</codeph> should be called on the <codeph>RAnimDll</codeph> and <codeph>RBitmapAnim</codeph> objects. </p> <codeblock id="GUID-E7E87F97-9040-50F1-99F2-35AF517993E1" xml:space="preserve">animPlayer.Close();
+animDLL.Close();</codeblock> </section>
+<section id="GUID-CF40984F-2CA8-4EEE-98AD-C8F3E074407F"><title>See also</title> <ul>
+<li><p><xref href="GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE.dita">Animation Overview</xref></p></li>
+<li><p><xref href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita">Introduction
+to the Font and Bitmap Server</xref></p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05DA872F-F70E-5085-8AA9-12B6A0B71917.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-05DA872F-F70E-5085-8AA9-12B6A0B71917"><title>Using TDbQuery class</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The design of this class is chosen so that the descriptor containing the SQL can be passed in the place of the <codeph>TDbQuery</codeph> object, which will be implicitly constructed with normal text comparison. So given</p> <codeblock id="GUID-5CE628CD-6B02-570B-8C08-858455D2E694" xml:space="preserve">TPtrC sql=_L("select * from Personnel where Name like 'A*'");
+RDbView view;</codeblock> <p>Then</p> <codeblock id="GUID-152661DA-ACC2-57E5-AA4E-252A8FF42E89" xml:space="preserve">view.Prepare(database,sql);</codeblock> <p>is equivalent to</p> <codeblock id="GUID-F0E34B77-A117-58E9-9CDE-3AB22289DE31" xml:space="preserve">view.Prepare(database,TDbQuery(sql,EDbCompareNormal));</codeblock> <p>To specify any other comparison type, the query object must be explicitly constructed:</p> <codeblock id="GUID-7386D1EC-7611-5C1F-BC11-F826396D6D12" xml:space="preserve">view.Prepare(database,TDbQuery(sql,EDbCompareFolded));</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05DE2202-C0A4-4612-8EA0-7DA8B3DEA331.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-05DE2202-C0A4-4612-8EA0-7DA8B3DEA331" xml:lang="en"><title>Copyright
+Acknowledgments for Standard C++ (STLport v4) and Boost Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-E1BF4AD0-E0BE-465B-8C6E-B0ECF7949D8A"><title>Standard
+C++ (STLport v4)</title><p>---------------------------------------------------------------------</p><p> STLport
+License</p><p> ---------------------------------------------------------------------</p><p>Boris
+Fomitchev grants Licensee a non-exclusive, non-transferable, royalty-free</p><p>license
+to use STLport and its documentation without fee.</p><p>By downloading, using,
+or copying STLport or any portion thereof, Licensee agrees</p><p>to abide
+by the intellectual property laws and all other applicable laws of the</p><p>United
+States of America, and to all of the terms and conditions of this Agreement.</p><p/><p>Licensee
+shall maintain the following copyright and permission notices on STLport 
+sources and its documentation unchanged:</p><p/><p>Copyright 1999, 2000
+Boris Fomitchev</p><p/><p>This material is provided "as is", with absolutely
+no warranty expressed or implied.</p><p>Any use is at your own risk. Permission
+to use or copy this software for any purpose</p><p>is hereby granted without
+fee, provided the above notices are retained on all copies.</p><p>Permission
+to modify the code and to distribute modified code is granted, provided the </p><p>above
+notices are retained, and a notice that the code was modified is included
+with</p><p>the above copyright notice.</p><p/><p>The Licensee may distribute
+binaries compiled with STLport (whether original or modified)</p><p>without
+any royalties or restrictions.</p><p/><p>The Licensee may distribute original
+or modified STLport sources, provided that:</p><p>The conditions indicated
+in the above permission notice are met;</p><p>The following copyright notices
+are retained when present, and conditions provided</p><p>in accompanying permission
+notices are met:</p><p/><p>Copyright 1994 Hewlett-Packard Company</p><p>Copyright
+1996,97 Silicon Graphics Computer Systems, Inc.</p><p>Copyright 1997 Moscow
+Center for SPARC Technology.</p><p>Permission to use, copy, modify, distribute
+and sell this software and its</p><p>documentation for any purpose is hereby
+granted without fee, provided that</p><p>the above copyright notice appear
+in all copies and that both that copyright</p><p>notice and this permission
+notice appear in supporting documentation. Hewlett-Packard</p><p>Company makes
+no representations about the suitability of this software for any purpose.</p><p>It
+is provided "as is" without express or implied warranty.</p><p>Permission
+to use, copy, modify, distribute and sell this software and its documentation</p><p>for
+any purpose is hereby granted without fee, provided that the above copyright
+notice</p><p>appear in all copies and that both that copyright notice and
+this permission notice appear</p><p>in supporting documentation. Silicon Graphics
+makes no representations about the suitability</p><p>of this software for
+any purpose. It is provided "as is" without express or implied warranty.</p><p>Permission
+to use, copy, modify, distribute and sell this software and its documentation
+for</p><p>any purpose is hereby granted without fee, provided that the above
+copyright notice appear</p><p>in all copies and that both that copyright notice
+and this permission notice appear in</p><p>supporting documentation. Moscow
+Center for SPARC Technology makes no representations</p><p>about the suitability
+of this software for any purpose. It is provided "as is" without</p><p>express
+or implied warranty. </p></section>
+<section id="GUID-45863E44-7810-4639-B53A-8C5E93A6A412"><title>Boost Libraries</title><p/><p>/*------------------------------------------------------------------</p><p/><p>Boost
+Software License - Version 1.0 - August 17th, 2003</p><p/><p>--------------------------------------------------------------------*/</p><p/><p>Permission is hereby granted, free of charge, to any person or organization</p><p>obtaining
+a copy of the software and accompanying documentation covered by</p><p>this
+license (the "Software") to use, reproduce, display, distribute,</p><p>execute,
+and transmit the Software, and to prepare derivative works of the</p><p>Software,
+and to permit third-parties to whom the Software is furnished to</p><p>do
+so, all subject to the following:</p><p/><p>The copyright notices in the
+Software and this entire statement, including</p><p>the above license grant,
+this restriction and the following disclaimer,</p><p>must be included in all
+copies of the Software, in whole or in part, and</p><p>all derivative works
+of the Software, unless such copies or derivative</p><p> works are solely
+in the form of machine-executable object code generated by</p><p>a source
+language processor.</p><p/><p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
+WARRANTY OF ANY KIND, EXPRESS OR</p><p>IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY,</p><p>FITNESS FOR A PARTICULAR PURPOSE,
+TITLE AND NON-INFRINGEMENT. IN NO EVENT</p><p>SHALL THE COPYRIGHT HOLDERS
+OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE</p><p>FOR ANY DAMAGES OR OTHER
+LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,</p><p>ARISING FROM, OUT
+OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER</p><p>DEALINGS IN
+THE SOFTWARE.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05E3ED3B-41F8-5FC2-87A2-627BD5E6BB04.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-05E3ED3B-41F8-5FC2-87A2-627BD5E6BB04"><title> Attaching to an existing RConnection connection: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following example shows how an application can attach to an existing connection in order to gather information on the connection. </p> <p>Note that error checking is included in this example. </p> <codeblock id="GUID-32123F0F-45CC-5966-AD0B-E0895D316D3F" xml:space="preserve">
+//Open a session with the socket server
+RSocketServ socketServer;
+TInt err(KErrNone);
+err = socketServer.Connect();
+if(err != KErrNone) return err;
+
+//Open a subsession with the socket server for the RConnection
+RConnection myConnection;
+err = myConnection.Open(socketServer);
+if(err != KErrNone) return err;
+
+//Start or attach the RConnection to an interface on the server
+TUint connectionCount;
+//Enumerate currently active connections across all socket servers
+err = myConnection.EnumerateConnections(connectionCount);
+if(err != KErrNone) return err;
+if(connectionCount == 0) // if no connections are started
+{
+            err = myConnection.Start();
+}
+else
+{
+            TPckgBuf&lt;TConnectionInfoV2&gt; connectionInfo;
+            err = myConnection.GetConnectionInfo(1, connectionInfo); // 1 = first active connection
+            if(err!=KErrNone) return err;
+            err = myConnection.Attach(connectionInfo, RConnection::EAttachTypeMonitor);
+}</codeblock> <p>At this point <codeph>myConnection</codeph> points to a specific connection. Obviously the code snippet above could be expanded in several ways such as getting connection information for all connections and selecting a connection based on the information rather than simply selecting the first connection, as in this case. </p> <p>Note for this and the next section that the number of connections and subconnections are not constant and can be expected to change during execution. </p> <codeblock id="GUID-F9F6D0DB-BA01-5610-BFDD-B15A61DF0757" xml:space="preserve">
+//Store subconnection information
+
+TUint subConnectionCount(0);
+err = myConnection.EnumerateSubConnections(subConnectionCount);
+if(err != KErrNone) return err;
+
+//TSubConnectionInfoGprsUmts is a superclass of TSubConnectionInfo, so we will use it
+//to hold either GPRS/UMTS or CSD connection information as required. (CSD connection 
+//information is held in a plain TSubConnectionInfo object).
+TPckgBuf&lt;TSubConnectionInfoGprsUmts&gt; subConnectionInfo[subConnectionCount];
+//note that for a CSD connection the subConnectionCount will be 1
+
+for (TUint i=0; i&lt;subConnectionCount; i++)
+{
+            err = myConnection.GetSubConnectionInfo(i, subConnectionInfo[i]);
+            if(err != KErrNone) return err;
+}</codeblock> <p>Once the connection has been attached it is possible to start querying individual subconnections. </p> <p>From this point the client has access to <codeph>subConnectionInfo().iSubConnectionUniqueId</codeph>, which is the unique identifier for the subconnection that has been queried. Now that this value is available the client can make any further calls to subconnection specific functionality within the <codeph>RConnection</codeph>, for example querying the amount of data currently transferred by the specified subconnection. </p> <codeblock id="GUID-436EFBF5-3338-55C1-B864-1A32B115EAD0" xml:space="preserve">
+TUint connectionuplinkVolume(0);
+TUint connectiondownlinkVolume(0);
+TUint subconnectionuplinkVolume(0);
+TUint subconnectiondownlinkVolume(0);
+TPckg&lt;TUint&gt; connectionUplinkVolume(connectionuplinkVolume);
+TPckg&lt;TUint&gt; connectionDownlinkVolume(connectiondownlinkVolume);
+TPckg&lt;TUint&gt; subConnectionUplinkVolume(subconnectionuplinkVolume);
+TPckg&lt;TUint&gt; subConnectionDownlinkVolume(subconnectiondownlinkVolume);
+TRequestStatus status;
+
+//Query data transfer over the connection
+myConnection.DataTransferredRequest(connectionUplinkVolume, connectionDownlinkVolume, status);
+
+//Query data transfer over a specified subconnection
+myConnection.DataTransferredRequest(subConnectionInfo[0]().iSubConnectionUniqueId, connectionUplinkVolume, connectionDownlinkVolume, status);
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-05FDC28B-F033-5FDC-8F41-71BD212C27E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-05FDC28B-F033-5FDC-8F41-71BD212C27E2"><title>Access modes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A named database supports three access modes:</p> <ul><li id="GUID-BFF0FE8F-FCA1-57E4-BA1B-EB6B26955067"><p>Exclusive read/write access</p> </li> <li id="GUID-81273D9E-7999-5C7D-A8F9-5F13C8DE5A5A"><p>Shared read-only access</p> </li> <li id="GUID-F04D5329-85C3-551A-8A32-26E6170CA69D"><p>Shared read/write access</p> </li> </ul> <p>The first two access modes are implemented through a file server session which provides the necessary file access modes while shared read/write access must be done through the DBMS server.</p> <p>Creating a database through the <codeph>Create()</codeph> and <codeph>Replace()</codeph> member functions of <codeph>RDbNamedDatabase</codeph>, initiates client-side access to the database and does not require a connection to the DBMS server.</p> <p><codeph>RDbNamedDatabase</codeph> offers two <codeph>Open()</codeph> functions, one for client-side access and the other for client-server access. Client-side access is preferred over client-server access as data retrieval is faster than indirecting via the DBMS server.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06031510-2089-55A1-98A2-9045D1D07E4E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-06031510-2089-55A1-98A2-9045D1D07E4E"><title>File systems</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A file system operates within the file server to provide services which deliver the required function to the client API. The <filepath>elocal.fsy</filepath> file system, a core part of the operating system, drives the local media—ROM, RAM and CF card. A <keyword>VFAT</keyword> file system is used in each case, which maps directly onto the client API.</p> <p>Other file systems may be implemented, for example to support remote file systems over a network. Such file systems may be installed dynamically without any reboot. They may also be uninstalled dynamically, and so free up resources.</p> <p>Installable file systems must present a Symbian OS native interface for clients, no matter what the interface and specification of the remote file system. This is trivial for Windows, OS/2 and DOS, since Symbian OS maps these directly. For Unix, minor changes such as swapping directory separators between <filepath>/</filepath> and <filepath>\</filepath> are needed. For systems such as IBM's mainframes, and DEC's VMS, more radical mappings are needed, to transform between the remote file system's record-based architecture, and Symbian OS's byte-based architecture.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06676D89-FDE7-58FD-9D2E-3C984CD24BAC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-06676D89-FDE7-58FD-9D2E-3C984CD24BAC" xml:lang="en"><title>Embedded
+applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Embedded applications are required by the application architecture. These
+applications’ root controls should have a <i>z</i> -order that causes only
+the currently-active application to be displayed, and only that application
+to be able to receive pointer events.</p>
+<p>Additionally, only the currently active application — with its menu bar,
+active dialogs, etc — should be able to process key events.</p>
+<p>The requirements of embedded applications are supported by stack-like behavior
+at each priority level within the controls maintained by the app UI.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06730728-30C5-51FD-BD37-FB62F2958D28.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-06730728-30C5-51FD-BD37-FB62F2958D28" xml:lang="en"><title>Calendar
+Conversion Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes date conversion between Gregorian and Chinese calendars. </p>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-1d985cd3-8a52-41ae-b048-fdc92b4152a7.zip" scope="external">Calcon.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-1d985cd3-8a52-41ae-b048-fdc92b4152a7.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Architectural Relationships</title> <p>The <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime</apiname></xref> class
+is used to represent the Gregorian calendar date. The class <xref href="GUID-FD63BD10-1C14-39DF-8B3A-5D76C0DFAFDD.dita"><apiname>TChineseDate</apiname></xref> is
+used to represent the Chinese calendar date. <xref href="GUID-2F253853-79EB-316F-9E8D-D54AC6DDE06C.dita"><apiname>CChineseCalendarConverter</apiname></xref> is
+used for conversion in either direction between a Gregorian date and a Chinese
+date. </p> <p>The <codeph>CChineseCalendarConverter</codeph> interface is
+implemented by a separate plug-in, which is not provided by this component.
+If the plug-in is not available the interface returns an error. </p> </section>
+<section><title>Description</title> <p>The API consists of two calendar classes: <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime</apiname></xref> and <xref href="GUID-2F253853-79EB-316F-9E8D-D54AC6DDE06C.dita"><apiname>CChineseCalendarConverter</apiname></xref>, which converts between <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime</apiname></xref> and <xref href="GUID-FD63BD10-1C14-39DF-8B3A-5D76C0DFAFDD.dita"><apiname>TChineseDate</apiname></xref> formats
+in both directions. Chinese dates are calculated using the -2636 epoch. This
+is equivalent to 2637 BCE (Before Common Era). </p> </section>
+<section><title>Class summary</title> <ul>
+<li id="GUID-A8C05086-F2E1-5501-8261-36CA12C09B78"><p> <xref href="GUID-2F253853-79EB-316F-9E8D-D54AC6DDE06C.dita"><apiname>CChineseCalendarConverter</apiname></xref> </p> </li>
+<li id="GUID-ACAE410D-F7E9-51F8-A3AC-E739750307C4"><p> <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime</apiname></xref> </p> </li>
+<li id="GUID-D13CA6CB-B67C-5B8E-BD39-9D148424AB3A"><p> <xref href="GUID-FD63BD10-1C14-39DF-8B3A-5D76C0DFAFDD.dita"><apiname>TChineseDate</apiname></xref> </p> </li>
+<li id="GUID-A1DBD6FF-B548-5AC5-9B07-8BAADDC864A1"><p> <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime</apiname></xref> </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E"><title>Twip to Pixel Mapping</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an introduction to two classes that embody the important GUI features of device independence and the ability to zoom. </p> <p>Two desirable facilities of a GUI are: </p> <ul><li id="GUID-BD40B76E-A127-5E3D-B166-8D875EA8DEA9"><p>device independence </p> </li> <li id="GUID-9440091B-CE23-568D-9A32-062A627A40C8"><p>zooming to reveal greater levels of detail or, conversely, more of a document </p> </li> </ul> <p>These two facilities are embodied in the two classes <codeph>MGraphicsDeviceMap</codeph> and <codeph>TZoomFactor</codeph>. </p> <p>Device independence is facilitated by storing drawings and text in device-independent form and then converting the device-independent units (twips) into device-dependent units (pixels) for different devices such as screens and printers. The conversion interface is <codeph>MGraphicsDeviceMap</codeph>, and it is implemented by graphics devices. </p> <p> <codeph>TZoomFactor</codeph> also implements this interface. It takes a mapping between twips and pixels, and then also applies a zooming factor: the larger the zooming factor, the more pixels per twip. The relationship between the classes is shown below: </p> <fig id="GUID-FE1CA913-3E44-506E-B8A6-253D169946F7"><image href="GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e178166_href.png" placement="inline"/></fig> <p>Note that <codeph>TZoomFactor</codeph> not only implements <codeph>MGraphicsDeviceMap</codeph> but also uses it. The point is that the <codeph>MGraphicsDeviceMap</codeph> -supporting object used can either be a graphics device, or another <codeph>TZoomFactor</codeph>. This allows zooming to be applied to an already zoomed mapping. </p> </conbody><related-links><link href="GUID-6AE2F937-69BB-5330-A2B5-44D37FA1DE16.dita"><linktext>Using TZoomFactor and
+                MGraphicsDeviceMap</linktext> </link> <link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>Graphics Device Interface Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB"><title>Audio Component Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Audio Component Library (ACL) API. </p> <section><title>Purpose</title> <p>The ACL API is an open-ended library of audio processing units. The ACL API is used to define the audio processing units which can be built into an audio stream. </p> <p><b>Audio Component Library API Library Details</b> </p> <p>The ACL API is implemented using a plugin pattern. </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-F7967E7D-066E-5341-9660-D565319B83DC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath> audiocontextfactory.dll</filepath>  </p> </entry> <entry><p> <filepath> audiocontextfactory.lib</filepath>  </p> </entry> <entry><p>These files are used for implementing the ACL API. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>This API is part of the Advanced Audio Adaptation Framework (A3F). A3F provides a new standardised implementation of DevSound which is configured by default from Symbian OS v9.5 onwards. A3F interacts with a specially customised DevSound (configured as optional) through the ACL API and the <xref href="GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita">Audio Component Framework (ACF) API</xref>. </p> </section> <section><title>Description</title> <p>Audio processing units are logical entities (not directly related to any specific audio hardware) that represent basic audio functions. The ACL API is an open-ended library of such logical audio processing units. The list of audio processing units in the ACL includes: </p> <ul><li id="GUID-8CC2DEB6-99AC-59AF-BE96-666B37B55824"><p>buffer source and sink </p> </li> <li id="GUID-ED8E27D5-C7E2-56CC-8486-6909408E317E"><p>audio device source and sink </p> </li> <li id="GUID-FAF60CA3-3C8D-55EC-A429-A91852EEB4DB"><p>audio codec. </p> </li> </ul> <p>An audio stream links together several audio processing units. The ACL API enables the client to specify an audio stream and the individual audio processing units that it contains. An audio stream represents a connection between: </p> <ul><li id="GUID-EFCC02B3-24C0-59A7-AD12-9BD6AFD5A676"><p>1 source </p> </li> <li id="GUID-9B840546-808A-5586-91B1-6298AFD3C2FD"><p>1 codec (either a decoder or an encoder) </p> </li> <li id="GUID-AE746B34-C3B9-58C4-BB5B-657937DC58C1"><p>0 or 1 gain control </p> </li> <li id="GUID-71FE34AD-B300-5307-8C7A-3125E17B4A67"><p>1 sink. </p> </li> </ul> <p>An audio stream is also responsible for executing audio processing states as requested by the client. The audio processing units contained in an audio stream adapt to state changes as required. The possible states of an audio stream are: </p> <ul><li id="GUID-848DE516-9A98-540F-B31B-7AF5E89B5BA6"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname> EUninitialized</apiname></xref> - the state an audio stream is in initially. </p> </li> <li id="GUID-2AF888AA-9478-567D-B28F-A403C0326753"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname> EInitialized</apiname></xref> - the state after a successful initialization request. </p> </li> <li id="GUID-3136A4AF-BFA5-52AA-BA3A-D72485F840DF"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname> EIdle</apiname></xref> - all resources have been allocated but use no CPU time (other than that expended to put the audio stream into the <codeph>EIdle</codeph> state) is consumed. </p> </li> <li id="GUID-6E0A30BB-CCE3-5FD4-AE22-74836A74B48D"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>EPrimed</apiname></xref> - as with <codeph>EIdle</codeph>, but the audio stream can consume CPU time by filling its buffers. Note that no sound can be played when the audio stream is in <codeph>EPrimed</codeph> state. </p> </li> <li id="GUID-2309CA33-E091-5FB2-BC6C-177F9B1839BC"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname> EActive</apiname></xref> - all resources have been allocated, as with EIdle and EPrimed, but the audio stream has also started to process the actions requested by the client. </p> </li> <li id="GUID-AB6EAC1B-C87D-5EA4-AE56-ED20CB72973C"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname> EDead</apiname></xref> - the audio stream can no longer function due to a fatal error. </p> </li> </ul> </section> <section><title>Key Audio Component Library API Classes</title> <p>The ACL API comprises the following key classes: </p> <ul><li id="GUID-D5A112BE-C36C-5BEE-B5C6-66670BCF5F7A"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>MAudioStream</apiname></xref> - the main control interface for the state of an audio stream. </p> </li> </ul> </section> <section><title>Using Audio Component Library API</title> <p>The ACL API can be used to: </p> <ul><li id="GUID-332A1636-54F0-57A9-92F1-4B5233D6D39D"><p>Request that the state of an audio stream is changed to another state. The main state transitions are requested using the following methods: </p> <ul><li id="GUID-21E351C1-6177-57F4-9989-8BCF7077C81F"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Initialize()</apiname></xref> - requests a transition to the <codeph>EInitialized</codeph> state. </p> </li> <li id="GUID-B49E5BA7-BE2C-5A08-B6B3-B848564C89BB"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Load()</apiname></xref> - requests a transition to the <codeph>EIdle</codeph> state. </p> </li> <li id="GUID-8336AC1A-0AE5-5984-888A-8BBFCD7BB559"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Activate()</apiname></xref> - starts the audio processing. </p> </li> <li id="GUID-05EDA606-DAE4-50C1-85BE-270E50B4107C"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Stop()</apiname></xref> - requests a transition to the <codeph>EIdle</codeph> state. </p> </li> <li id="GUID-515E479F-8FF9-5865-8DEA-110C1397AF36"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Unload()</apiname></xref> - prepares the audio stream for releasing the resources reserved for it. </p> </li> <li id="GUID-FF553EB2-D02F-5A2E-A21F-0205F41ABB62"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Uninitialize()</apiname></xref> - requests a transition to the <codeph>EUnitialized</codeph> state. </p> </li> <li id="GUID-5D84D8C6-50B6-56AE-A28C-1658B29F9B76"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>Prime()</apiname></xref> - requests a transition to the <codeph>EPrimed</codeph> state. </p> </li> </ul> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita">Audio Component Framework Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864"><title>SubConnection Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives an introduction to using the <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API. </p> <p>The <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API creates a channel ("subconnection") within a connection (<xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>). Sockets can be attached to this channel and will then be bound by the properties of that channel, such as Quality of Service (values such as minimum bandwith, latency limits etc.). Depending on the state of the channel, it may not be possible to bind arbitary sockets into it. Attempting to bind sockets from different protocol families to a single channel is an error, as each channel can only be used by one protocol family. </p> <p>Note: The sub-connection can represent an end-to-end channel and/or a channel from this device to an intermediate device (e.g an access server such as a GGSN using UMTS and PDP contexts.) Properties can be specified simultaneously on protocol and link level. In the case of GPRS/UMTS network interfaces, sub-connections correspond to Primary and Secondary PDP Contexts. Before using any of these services, a connection to a socket server session must have been made and the connection must be open. </p> <p>An <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> contains one or more sub-connections (a default sub-connection, which is created automatically with the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> plus any added <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> s). Each sub-connection has properties. To set those properties you apply an <xref href="GUID-27AA9BD2-9754-3BAE-8C2D-59937E1924CF.dita"><apiname>RSubConParameterBundle</apiname></xref> to the <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. The parameter bundle consists of families of parameters. A "family" is a connected set of parameters, such as QoS. At present only two families are defined, Quality of Service (<xref href="GUID-022ECBFB-911A-330B-B197-3BDAE6493981.dita"><apiname>KSubConQoSFamily</apiname></xref>) and Authorisation (<xref href="GUID-B2567E44-BD9B-39B3-BB97-385124CFD973.dita"><apiname>KSubConAuthorisationFamily</apiname></xref>). </p> <p>Quality of Service (QoS) in Symbian OS is implemented by setting parameters on the sub-connection. </p> <p>The <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API provides the functionality to divide a Connection (provided by the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> API) into channels that have properties such as bandwidth and latency. </p> <p>Each family of parameters can consist of the values you would like to have (<xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref>) and the minimum you're willing to accept (<xref href="GUID-754AF65B-376E-3A75-97F0-8ECF4560BCEF.dita"><apiname>EAcceptable</apiname></xref>). If you don't specify the <xref href="GUID-754AF65B-376E-3A75-97F0-8ECF4560BCEF.dita"><apiname>EAcceptable</apiname></xref> then the <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref> will be used as the minimum acceptable. When the parameters have been applied and the sub-connection is used then the parameter family will be updated with a third set of values, the <xref href="GUID-12DF975A-B43E-336F-817E-FDD099F7060A.dita"><apiname>EGranted</apiname></xref> (which will be somewhere between the <xref href="GUID-754AF65B-376E-3A75-97F0-8ECF4560BCEF.dita"><apiname>EAcceptable</apiname></xref> and the <xref href="GUID-ADF08336-B43B-31CB-9548-E265E1001F27.dita"><apiname>ERequested</apiname></xref>) or an event will be raised to say that the parameters have been rejected/could not be granted. As this may be some time after the initial request, asynchronous event notification is used to tell your application what has been negotiated. Your application must monitor for the granted/rejected event notification. </p> <p>There is an overlap between the <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API and the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> API as both provide sub-connection management. The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> API provides overall sub-connection management for an entire connection whereas the <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API allows the individual setting of properties of a sub-connection as well as the ability to associate sockets (<xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>) with sub-connections. The sockets are then able to take advantage of the sub-connection's properties when they send and receive data. </p> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> API can be created with a sub-connection as well as a connection. A client is able to start a sub-connection via <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> and associate individual <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> objects with that sub-connection. This ensures that all data flowing over those objects uses the particular sub-connection previously started by the application. This is implemented using a new <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-89C92445-FFCA-37F0-88D0-BF9B1B41BA2F"><apiname>RSocket::Open(…)</apiname></xref> method which takes an additional argument specifying the sub-connection to use for the object in question. The socket will not actually be added to the sub-connection until such time as the socket is used. </p> <p>As well as opening sub-connections explicitly via <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>, applications may also attach to the default sub-connection (e.g. in GPRS, the default could be the Primary PDP context without a TFT), and modify and retrieve its properties. </p> <p>Parameters that apply to an <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> are grouped together into "families" (<xref href="GUID-5181C974-94F7-3C7D-9FFE-F38BD11001EB.dita"><apiname>CSubConParameterFamily</apiname></xref>). Each parameter family contains parameter sets that are either "generic" (parameters that are independent of the underlying technology) or "extension" (a group of parameters specific to a technology). There will always be one generic parameter set in a family and there will be zero or more extension parameter sets. </p> <section><title>Historical Note</title> <p>RSubConnection was introduced in Symbian OS 9.1. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06DD6077-2ABD-5268-878E-9B26A3C4BE20.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-06DD6077-2ABD-5268-878E-9B26A3C4BE20"><title>type</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>type [ -wfpams ] name ... </userinput> </p> <p>Equivalent to <xref href="GUID-0368678A-6963-5558-8DC2-0E618B927538.dita">whence</xref> <codeph>
+        -v</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292"><title>Character Conversion (Charconv) Framework Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the terminology used often in character conversions, such as BMP and Charconv converters. </p> <section><title>Character sets </title> <p>Textual data in electronic devices is stored in terms of a character set. A character set is a group of characters, each of which is encoded as a different number. The appearance of each character is not a property of the character set, but rather of the font. So a character may be rendered using many different glyphs, but will always have the same numeric value within its character set. Other properties which can also be included in a character set’s definition are the direction of writing, and the way in which sets of characters are combined. </p> </section> <section><title>Unicode, UCS and UCS-2</title> <p>Character sets, and the ways of encoding them, have proliferated with the increasing acceptance of computers and communicators throughout the world. This has led to an international standard character set, which encompasses all commonly used character sets, including Eastern ideograms, in a single character set, Unicode, defined by the Unicode Consortium (http://www.unicode.org). </p> <p>UCS is the name for Unicode Character Set. Unicode characters are generally encoded using one 16-bit value but written to files in two bytes. This is referred to as UCS-2 encoding formats. There are also other Unicode encoding formats such as UTF-16 and UTF-8 for different purposes. For the full definition of these formats, see The Unicode Standard published by the Unicode Consortium. </p> </section> <section><title>BMP</title> <p>Unicode points between U+0000 to U+FFFF are called Basic Multilingual Plane (BMP). BMP covers almost all characters in different languages. Code points outside the BMP must be encoded using a "surrogate pair", which consists of two 16-bit values. Symbian platform currently does not support scripts with characters mapped to code points above U+FFFF. Code points above U+FFFF are also known as supplementary characters. </p> </section> <section><title> UTF-16</title> <p>UTF-16 is one of the Unicode encoding formats. It supports characters within and outside BMP using a number of 16-bit characters. </p> <p>In the text-processing subsystem, Symbian platform uses UTF-16 Unicode format. This means that any input to the text-processing subsystem must be in UTF-16. Different character converters can be used to convert text from other encoding formats to UTF-16. </p> </section> <section><title>Transformation formats </title> <p>The UCS-2 format of the Unicode character set encodes each character as 2 bytes (16 bits total). However it does not specify which of the bytes is most significant. The byte order, or endian-ness, is left up to the discretion of a particular operating system. </p> <p>While this is not important within a system, it does mean that text encoded as UCS-2 cannot easily be shared between systems using a different endian-ness. To overcome this problem the Unicode Consortium has defined two transformation formats for sharing Unicode text. The transformation formats explicitly specify byte order, and cannot be misinterpreted by computers using a different byte order. </p> <p>The two transformation formats, UTF-7 and UTF-8, are described below. For the full definition of these formats, see The Unicode Standard published by the Unicode Consortium. </p> <p> <b>UTF-7</b>  </p> <p>UTF-7 allows Unicode characters to be encoded and transmitted as 8-bit bytes, of which only 7 bits are used. UTF-7 divides the set of Unicode characters into three subsets, which are encoded and transmitted differently. </p> <ul><li id="GUID-8E1A1C8B-8234-57C3-93D4-5A0A4E8C1374"><p>Set D, is the set of characters which are encoded as a single byte. It includes lower and upper case A to Z, the numeric digits, and nine other characters. </p> </li> <li id="GUID-3E19560B-4087-575E-A091-64FCFD24C811"><p>Set O includes the characters <b>! " # $ % &amp; * ; &lt; = &gt; @ [ ] ^ _ </b> <b>{</b> <b> | </b> <b>}</b>. These characters can be encoded as a single byte, or with the modified <keyword>base
+                64</keyword>  encoding used for set B characters. When encoded as a single byte, set O characters can be misinterpreted by some applications — encoding as modified base 64 overcomes this problem. </p> </li> <li id="GUID-01E822AE-71CC-5F0B-BC60-53F914600A5E"><p>Set B comprises the remaining characters, which are encoded as an <keyword>escape byte</keyword> followed by 2 or 3 bytes. The encoding format is a modified form of base 64 encoding. </p> </li> </ul> <p> <b>UTF-8</b>  </p> <p>UTF-8 encodes and transmits Unicode characters as a string of 8-bit bytes. All the ASCII characters 0 to 127 are encoded without change; the most significant bit being set to zero is a signal that they have not been changed. Unicode characters U0080 to U07FF are encoded in two bytes, the remaining Unicode characters — except for the surrogates — are encoded in three bytes. The Unicode surrogate characters are supported by the Character Conversion API, but are not currently supported by all Symbian platform components. </p> <p>A variant of UTF-8 used internally by Java differs from standard UTF-8 in two ways. First, the specific case of the NULL character (0x0000) is encoded in the two-byte format, and second, only the one-, two- and three-byte formats are used, not the four-byte format which is normally used for Unicode surrogate-pairs. An argument to <codeph>ConvertFromUnicodeToUtf8</codeph> controls whether the UTF-8 generated by this is the Java variant. Support for this was removed in v6.0. </p> </section> <section id="GUID-5E593C5A-882B-5B11-AD6E-CFD10EA6700B"><title>Charconv converter</title> <p>Each converter implements a conversion between a single foreign character encoding and UTF-16, and is identified by a Unique Identifier (UID). Symbian platform provides the following two types of converter: </p> <ul><li id="GUID-8A1AFA7F-E330-5309-9ED7-26A4A46411CB"><p>built into the Framework component and used by most languages </p> </li> <li id="GUID-E7A3FD30-37E0-5B01-B2BE-7DE313045D9F"><p>implemented as Ecom plug-ins in the Plug-ins component and used by certain languages. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07045409-4714-5800-89EF-73590D4F0F37.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07045409-4714-5800-89EF-73590D4F0F37" xml:lang="en"><title>Links</title><shortdesc>Each element of a singly linked list must contain a link object.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An element in a singly linked list can be any kind of object. For an object
+to be an element of a singly linked list, the class of that object must include
+a <i>link</i> object as a component.</p>
+<p>A link object has a data member containing a pointer which points forwards
+to the next link object. A link object also has function members to implement
+the behaviour expected of link objects, for example, connecting itself to
+another link object.</p>
+<p>A link is an instance of the <codeph>TSglQueLink</codeph> class.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0715E8B9-8F43-5C7B-BDC6-4E8FA5352714.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0715E8B9-8F43-5C7B-BDC6-4E8FA5352714" xml:lang="en"><title>Cleanup
+following trap harnesses</title><shortdesc>Some cleanup requirements must be handled by the cleanup code after
+the trap harness.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Some cleanup requirements must be handled by the cleanup code after the
+trap harness, on discovering that the leave code is not <codeph>KErrNone</codeph>.
+The cleanup requirements may include:</p>
+<ul>
+<li id="GUID-3F81400F-8343-50A9-9076-D342AB8FA85C"><p>rolling back changes
+to restore an object to the state it was in before the function which left
+was invoked</p> <p>For instance, a “set font” command might have been issued
+for some characters in a line, and might fail because of lack of memory: the
+line should be restored to its previous state.</p> <p>Rollback is not always
+easy. Often, it’s simpler to prepare a change that would be guaranteed to
+work, and apply it if the change was prepared successfully. If a leave occurred
+in the act of preparing a change, the change can be destroyed. It’s usually
+easier to destroy a change than to roll it back.</p> </li>
+</ul>
+<ul>
+<li id="GUID-CD29C562-17AE-50D6-A629-FFCE70B60545"><p>destroying a partially-constructed
+object</p> <p>Most requirements for destroying partially-constructed objects
+will be dealt with by the cleanup stack. There may be a requirement to destroy
+some partially-constructed objects as part of rollback processing. </p> </li>
+</ul>
+<ul>
+<li id="GUID-4E8F6B7C-009E-5EC6-BBB9-A737B16CDBBD"><p>closing files and other
+such resources, where this is not encapsulated in use of the cleanup stack.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-071A1E59-FE77-5D4D-B4D1-E6ECDF68BB03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-071A1E59-FE77-5D4D-B4D1-E6ECDF68BB03" xml:lang="en"><title>Bluetooth Collection</title><shortdesc>The Bluetooth collection contains the SDP, GAVDP and Notifiers Support components. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0747B7D8-86B4-51DE-BC71-7FACE61EB5E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0747B7D8-86B4-51DE-BC71-7FACE61EB5E2"><title>Database encryption</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Database data can be encrypted by a key that is generated by DBMS. Access to this key is protected by encryption and decryption keys that are provided by the client. This allows a client to change (for example) the user password without requiring the entire database to be re-encrypted.</p> <p>It is not possible to turn a secure database into a plain-text database and vice-versa—this can only be done by copying the data from one database to another</p> <p>It is important to note that encrypting a database has an impact on performance.</p> <p>The <codeph>RDbStoreDatabase</codeph> and <codeph>RDbNamedDatabase</codeph> classes provide variants of the <codeph>Create()</codeph> and <codeph>Open()</codeph> functions that can create and open a secure database. The access key can be changed using the <codeph>ChangeSecurity()</codeph> member function of the <codeph>RDbDatabase</codeph> base class.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B"><title>Externalising a Swizzle</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Typically, externalizing a Swizzle is a two stage process which involves:</p> <ul><li id="GUID-EB65444C-7693-53BB-B3B8-D072F80B0CFD"><p>externalizing the in-memory object which the Swizzle represents, to its own stream</p> </li> <li id="GUID-90A275E2-B9C2-5162-ADBA-1035102A93E1"><p>externalizing the resulting stream ID.</p> </li> </ul> <p>For example, given a container type object, <codeph>CClassABC</codeph>, with a data member <codeph>TSwizzle&lt;CClassB&gt; iB</codeph> representing a <codeph>CClassB</codeph> object in memory, the diagram below illustrates the result of storing the container object.</p> <fig id="GUID-E32084CE-13EE-5F32-A62E-A57C30768AE2"><image href="GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e337015_href.png" placement="inline"/></fig> <p>The following code fragments illustrates the process.</p> <p><codeph>iB</codeph> is a <codeph>CClassB</codeph> type component of a class <codeph>CClassABC</codeph>, and is represented by a Swizzle. The data member is defined as:</p> <codeblock id="GUID-9751293C-D5CD-5397-97F3-C0E5F4A877DF" xml:space="preserve">class CCClassABC : public CBase
+    {
+    ...
+    TSwizzle&lt;CClassB&gt; iB;
+    ...
+    }
+</codeblock> <p>Typically, a <codeph>CClassB</codeph> object is constructed and assigned to <codeph>iB</codeph>; this uses the Swizzle’s assignment operator:</p> <codeblock id="GUID-02F520BA-6A07-5E2B-97A9-191914623592" xml:space="preserve">iB = CClassB::NewL();</codeblock> <p>The Swizzle now represents the <codeph>CClassB</codeph> object by pointer.</p> <p>The <codeph>StoreL()</codeph> member function of <codeph>CClassABC</codeph> constructs a store map, an object of type <codeph>CStoreMap</codeph>, before calling <codeph>StoreComponentsL()</codeph> to externalise the swizzled <codeph>CClassB</codeph> object to its own stream.</p> <codeblock id="GUID-CDF0EC55-46A6-508A-8709-9B7108FCD0FE" xml:space="preserve">TStreamId CClassABC::StoreL() const
+    {
+    CStoreMap* map=CStoreMap::NewLC(iStore);
+       StoreComponentsL(*map);
+ 
+       RStoreWriteStream stream(*map);
+       TStreamId id=stream.CreateLC(iStore);
+       ExternalizeL(stream);
+       stream.CommitL();
+
+       map-&gt;Reset();
+       CleanupStack::PopAndDestroy(2);
+       return id;
+       }</codeblock> <p>The variable <codeph>iStore</codeph> is a member of <codeph>CClassABC</codeph> containing a reference to the store.</p> <p><codeph>StoreComponentsL()</codeph> externalises the swizzled <codeph>CClassB</codeph> object by calling <codeph>CClassB</codeph> ’s own <codeph>StoreL()</codeph> member function which constructs a stream, externalises itself to the stream and returns the ID of that stream:</p> <codeblock id="GUID-79BAEB04-48E0-5741-AD12-7D7D85728FBE" xml:space="preserve">void CClassABC::StoreComponentsL(CStoreMap&amp; aMap) const
+          {
+          ...
+          TStreamId id;
+          if (iB)
+                {
+                id = iB-&gt;StoreL(iStore); // Id of the CClassB stream 
+                aMap.BindL(iB,id);
+                }
+          ...
+          }</codeblock> <p>The Swizzle must represent the <codeph>CClassB</codeph> type object as a pointer, i.e. the swizzled object must be in memory. The <codeph>operator-&gt;</codeph> applied to the Swizzle <codeph>iB</codeph> gives access to the <codeph>StoreL()</codeph> member function of the <codeph>CClassB</codeph> object.</p> <p>The condition <codeph>if (iB)</codeph> is equivalent to <codeph>if
+        (iB.IsPtr())</codeph> and returns true only if the Swizzle represents the <codeph>CClassB</codeph> object as a pointer . The act of externalizing the <codeph>CClassB</codeph> object, does not, and need not change the way that the Swizzle represents that object. Here, the <codeph>CClassB</codeph> object remains in memory and the Swizzle maintains its representation of it as a pointer, even after it has been externalised.</p> <p>The Stream ID of the externalised <codeph>CClassB</codeph> object is stored in the store map along with the associated Swizzle using <codeph>CStoreMap</codeph> ’s <codeph>BindL()</codeph> member function .The store map is used again later when the stream ID is externalised as part of <codeph>CClassABC</codeph> ’s data.</p> <p>The <codeph>ExternalizeL()</codeph> member function of <codeph>CClassABC</codeph> externalises <codeph>CClassABC</codeph>'s member data. This includes the stream ID of the externalised <codeph>CClassB</codeph> object which is externalised by applying the templated stream <codeph>operator&lt;&lt;</codeph> to the Swizzle <codeph>iB</codeph>.</p> <codeblock id="GUID-8F144C77-D4CE-58BD-8155-65BCCFA31DA2" xml:space="preserve">void CCompound::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    ...
+    aStream &lt;&lt; iB
+    ...
+    }
+</codeblock> <p>At this point, the Swizzle still represents the <codeph>CClassB</codeph> object as a pointer, and the object itself is still in memory.</p> <p>The mechanism underlying the implementation of the stream <codeph>operator&lt;&lt;</codeph>, assumes that the stream ID associated with the Swizzle has been placed in the store map. It also assumes that the <codeph>RStoreWriteStream</codeph> object has been constructed, specifying the store map as an externalizer.</p> <p>The end result of the operation <codeph>aStream &lt;&lt; iB;</codeph>, is to externalise, to the stream, the stream ID associated with the Swizzle <codeph>iB</codeph>. The following diagram shows this:</p> <fig id="GUID-0958AA91-661B-54EA-B540-067DB933169D"><image href="GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e337199_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02" xml:lang="en"><title>MClasses1-3:
+abstract interface classes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p>The three examples show the use of
+‘M’ (abstract interface) classes, the only type of multiple inheritance used
+on the Symbian platform. </p> <p>They show how interfaces can be used to define
+a protocol. The interface is implemented by a protocol provider, and called
+by a protocol user. The user is not supposed to know anything about the provider's
+implementation, only about the protocol it's interested in. </p> </section>
+<section><title>Download</title> <p>Click on the following links to download
+the examples: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-58f282fd-d552-4f00-a0db-9d15054c1f1b.zip" scope="external">MClasses1.zip </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7c247e26-e8e4-4d94-9dc8-287b73e6ccb7.zip" scope="external">MClasses2.zip </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e67b5701-f1ec-4c9a-85f0-a44117c97673.zip" scope="external">MClasses3.zip </xref></p><p>Click on the following link to
+download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.zip" scope="external">CommonFramework.zip</xref>.</p><p>Click the following links
+to view the example code.</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-58f282fd-d552-4f00-a0db-9d15054c1f1b.html" scope="peer">MClasses1 </xref> </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7c247e26-e8e4-4d94-9dc8-287b73e6ccb7.html" scope="peer">MClasses2 </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e67b5701-f1ec-4c9a-85f0-a44117c97673.html" scope="peer">MClasses3 </xref> </p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.html" scope="peer">browse CommonFramework</xref> to view the additional
+files.</p> </section>
+<section><title>Build</title> <p>The examples each include the two project
+files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian platform build
+process</xref> describes how to build these applications. They results in
+executables called: </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or           udeb&gt;\MCLASSES1.EXE</filepath>. </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or           udeb&gt;\MCLASSES2.EXE</filepath>. </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or           udeb&gt;\MCLASSES3.EXE</filepath>. </p> </section>
+<section><title>Usage</title> <p>Run the executables <filepath>MCLASSES1.EXE</filepath>, <filepath>MCLASSES2.EXE</filepath> and <filepath>MCLASSES3.EXE</filepath>. </p> <p>Executables for the emulator targets <filepath>wins</filepath> and <filepath>winscw</filepath> can
+be run on your PC. Executables for ARM targets must be copied to your target
+platform before being run. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-078492C7-7E25-5D6E-B6BE-3A5DAA4522DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-078492C7-7E25-5D6E-B6BE-3A5DAA4522DA" xml:lang="en"><title>Using
+Alarm Server</title><shortdesc>This tutorial explains how clients can use the services provided
+by Alarm Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<section><title>Introduction</title> <p>Using the <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita"><apiname>RASCliSession</apiname></xref> class
+of Alarm Server, clients can add, delete and update alarms, set alarm status,
+and so on. The procedure section lists and explains how to use the services
+provided by Alarm Server.</p> </section>
+<section><title>Procedure</title> <ul>
+<li id="GUID-2FA3AB5B-B9FE-5ECC-AE3B-2AA659C34E70"><p><xref href="GUID-70CD9D74-8592-45F2-A91F-AD34ED93CB3D.dita">Adding
+an alarm</xref> </p> </li>
+<li id="GUID-7E652E63-8436-5CBC-815A-0F11903A1BC2"><p><xref href="GUID-F4B61436-5496-4913-A769-794318C6B964.dita">Updating
+an alarm</xref>  </p> </li>
+<li id="GUID-5771E46F-06F0-57D2-A0B9-FD56860A73A7"><p><xref href="GUID-41F1AED1-7BE6-42CF-BC4A-E913A6F2D5E6.dita">Deleting
+an alarm</xref>  </p> </li>
+<li id="GUID-2B15C9D3-02F4-520C-9289-6809812F96FE"><p><xref href="GUID-A8EE55C2-0636-44E2-8B2B-05EA8D4A96A4.dita">Obtaining
+Alarm ID or category list</xref>  </p> </li>
+<li id="GUID-159C659F-6989-5E12-8041-20CD261CA373"><p><xref href="GUID-E173DF0D-DBE3-45DE-8763-453940DF3E5B.dita">Setting
+alarm status</xref>  </p> </li>
+<li id="GUID-429B94B1-F23E-5785-BDA8-8AF84295DFCA"><p><xref href="GUID-D158746C-6043-4ED4-833B-85C82831A66B.dita">Retrieving
+alarm information</xref> </p> </li>
+<li id="GUID-4BB42820-2115-5AFC-8338-D0333AA8D7B3"><p><xref href="GUID-7440BE0A-6E4A-493D-8105-80DDABD6F3EB.dita">Requesting
+change notification</xref>  </p> </li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-CFE3A216-E637-51C1-B258-2ADF4E0F4150.dita"><linktext>Alarm Server
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-078E6232-31FA-5582-84B8-F5E3E4B14A05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-078E6232-31FA-5582-84B8-F5E3E4B14A05" xml:lang="en"><title>How
+to start a heartbeat timer</title><shortdesc>Provides code snippet to show you how to start a heartbeat timer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A heartbeat timer, <codeph>CHeartbeat</codeph>, invokes a function at regular
+intervals. You must define a class that implements the <codeph>MBeating</codeph> interface
+to define:</p>
+<ul>
+<li id="GUID-5B54CE88-DE53-5635-BBF4-639B693C5BEC"><p>a function <codeph>Beat()</codeph> that
+is called if the heartbeat timer is in synchronisation with the system clock</p> </li>
+<li id="GUID-E20AD2FD-B847-52B6-8D1E-F01B2A971ABA"><p>a function <codeph>Synchronize()</codeph> that
+is called if the heartbeat timer has got out of synchronisation with the system
+clock</p> </li>
+</ul>
+<p>First, we define a class <codeph>CHeartbeatRunner</codeph> class that derives
+from <codeph>MBeating</codeph>. </p>
+<codeblock id="GUID-6D0B8C93-7F24-5002-A8FF-5C9F4C41EE7B" xml:space="preserve">class CHeartbeatRunner: public MBeating
+    {
+public:
+    // Implement MBeating
+    void Beat();
+    void Synchronize();
+
+    // Start timer
+    void StartTimer();
+private:
+    CHeartbeat* iHeartbeat;
+};</codeblock>
+<p>Then, we can start the heartbeat timer. We pass the time interval for the
+beats (allowable intervals are defined in 1/12s of a second by <codeph>TTimerLockSpec</codeph>),
+and the object implementing <codeph>MBeating</codeph>.</p>
+<codeblock id="GUID-C0BD2194-9FED-5C2B-B900-A028210CF78C" xml:space="preserve">void CHeartbeatRunner::StartTimer()
+    {
+    iHeartbeat=CHeartbeat::NewL(0); // neutral priority
+    iHeartbeat-&gt;Start(ETwelveOClock,this); // 1 second intervals
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07A31FD0-304A-57CA-8FFE-4DAD8EE9B30F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07A31FD0-304A-57CA-8FFE-4DAD8EE9B30F" xml:lang="en"><title>Maths
+Overview</title><shortdesc>Provides operations relating to real numbers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-CDDE17DC-90A2-4061-A669-D39013079368"><title>Architectural
+relationships</title> <p>Types for integer and single-precision and double-precision
+floating-point numbers are defined by the Basic Types API.</p> <p>The Descriptors
+API provides functions that convert real numbers to strings.</p> </section>
+<section id="GUID-F0A7C7AF-74AB-4824-A581-86EFAB02930E"><title>Description</title> <p>Functionality
+is provided by a number of APIs. Use them as follows:</p> <p><xref href="GUID-CDDF6758-C995-5FC8-AC8C-63298B65BBDE.dita">Maths
+Services Overview</xref> </p> <p>Provides advanced mathematical operations
+on real numbers.</p> <p><xref href="GUID-EA98D77C-743B-5BA5-B131-A327B12A099C.dita">Character
+Representation Of Real Numbers Overview</xref> </p> <p>Defines the format
+of a real number type when it is converted into a string.</p> </section>
+<section id="GUID-E68B0409-89EB-49A7-BEEB-2C775F8A81B1"><title>See also</title> <p><xref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita">Basic Types Overview</xref> </p> <p><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07A42662-87A1-4537-89B9-F87DFC8481E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07A42662-87A1-4537-89B9-F87DFC8481E8" xml:lang="en"><title>Signal
+and battery indicators</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The top-left area of the screen is used for the cellular signal strength
+indicator, and the corresponding top-right area for the battery level indicator.</p>
+<fig id="GUID-DF681F66-0CB3-4D53-A853-6BA9DF1D4BA2">
+<title>Signal and battery indicators on the sides of the status pane. Other
+status indicators are visible below the Navi pane.</title>
+<image href="GUID-0957A663-B00E-48CC-B5E3-7B8C0F33FDF7_d0e62257_href.png" scale="40" placement="inline"/>
+</fig>
+<p>The signal indicator is a part of the Status pane, and it is displayed
+in all states where the Status pane exists. Indicators consist of a bar graph
+that indicates the current battery or signal level and an icon that describes
+battery or in signal indicator connected cellular network and its connection
+state.</p>
+<section><p>The signal and battery indicators
+are not accessible to applications.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e303514_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B" xml:lang="en"><title>Resource file source format</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07CBDD99-CA8F-5CF9-B957-933C36D47195.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07CBDD99-CA8F-5CF9-B957-933C36D47195" xml:lang="en"><title>JPEG Image Transform Extension</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955" xml:lang="en"><title>Implementing
+framework requirements</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<fig id="GUID-9F184193-87DA-40F1-B946-BE7D101626DA"><title>Application menu</title><image href="GUID-98AC61E5-57C9-445E-98CB-79C6642CB041_d0e38543_href.png"/></fig>
+<p>In the Symbian platform, mobile device users start applications from
+the application menu. When the mobile device user selects an application,
+the application framework calls the application's entry point to launch the
+application. In some cases, applications can also be started by other executables.</p>
+<fig id="GUID-5A76CBEA-8AF3-4F68-B2FB-9F402D748DF3"><title>Application launch</title><image href="GUID-370F4A51-EC67-4B6C-B14A-5C640A58688B_d0e38551_href.png"/></fig>
+<p>When an application starts, objects are created in the following order:</p>
+<ol>
+<li id="GUID-BC07E865-8B42-4654-90F9-4644B202EDBC"><p>application
+(<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref>)</p></li>
+<li id="GUID-0B6D8737-8FC7-486B-B3ED-6F91CFA69670"><p>document (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref>)</p>
+</li>
+<li id="GUID-FAAD10CF-2F0F-4589-B2B8-A2A8A3696CA5"><p>UI controller
+(<xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita"><parmname>CAknAppUI</parmname></xref> or <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita"><parmname>CAknAppViewUI</parmname></xref> depending
+upon your approach)</p></li>
+<li id="GUID-ED56D892-18C4-447C-A7AB-811E1D90C2DA"><p>in <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">Symbian
+view applications</xref> , view controller (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>)</p>
+</li>
+<li id="GUID-5BFF07E4-6575-4B23-9FA5-824DB057A55C"><p>view (<xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>)</p></li>
+</ol>
+<section id="GUID-B8AA011F-23EB-4BA5-9FA6-1382D37E13A9"><title>Entry point</title>
+<p>The two methods that you need to implement for the entry point are as
+follows:</p>
+<ul>
+<li><p>an entry point for the application, with the following syntax:</p>
+<itemgroup>
+<codeblock id="GUID-F09C226F-B1D6-4435-8983-7DD62D1BBD26" xml:space="preserve">GLDEF_C TInt E32Main()
+	{
+	return EikStart::RunApplication( NewApplication );
+	}</codeblock>
+<p>where:</p>
+<p><parmname>E32Main()</parmname> is the entry point method called by the
+application framework</p>
+<p><parmname>return EikStart::RunApplication(NewApplication )</parmname> calls <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/EikStartClass.html#%3a%3aEikStart%3a%3aRunApplication%28%29" format="application/java-archive"><parmname>EikStart::RunApplication</parmname></xref></p>
+</itemgroup>
+</li>
+<li><p>a non-leaving factory method that creates a new instance
+of the application class, or <parmname>NULL</parmname> if the class cannot
+be instantiated. The expected syntax is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-D1F8BE18-84A5-4F32-9BC8-D5458455492A" xml:space="preserve">LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CMyAppClass;
+    }</codeblock>
+<p>where:</p>
+<p><parmname>NewApplication()</parmname> is a method that returns a pointer
+to a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Architecture/CApaApplicationClass.html" format="application/java-archive"><parmname>CApaApplication</parmname></xref> object.</p>
+<p><parmname>return new CMyAppClass</parmname> returns an instance of the
+application class as created by the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref> derived
+class</p>
+<p>The application framework expects the factory method to have exactly
+this prototype. In other words, the factory function should be like the above
+code fragment.</p>
+</itemgroup>
+</li>
+</ul>
+</section>
+<section id="GUID-63C94373-F55D-4B58-9637-7BA0E1B14ACF"><title>CAknApplication</title>
+<p>You must implement at least the following two methods in your <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref> derived
+class:</p>
+<ul>
+<li><p>a method that returns the application UID. The syntax is
+as follows:</p>
+<codeblock id="GUID-77921F31-5A36-4A6B-AD2C-E9364A50E0F6" xml:space="preserve">TUid CMyAppClass::AppDllUid() const
+    {
+    return KUidMyApp;
+    }</codeblock>
+<p>where:</p>
+<itemgroup>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Architecture/CApaApplicationClass.html#%3a%3aCApaApplication%3a%3aAppDllUid%28%29const" format="application/java-archive">CApaApplication::AppDllUid()</xref> is used to get the application
+UID</p>
+<p><parmname>KUidMyApp</parmname> is the UID for your application, which
+is typically declared in an application header file</p>
+</itemgroup>
+<p>The application framework calls the <parmname>AppDllUid()</parmname> method
+to get the application UID. The application framework checks to see if there
+is an instance of the application with the same UID already running. If so,
+then the application framework switches to the already existing application. </p>
+<note>
+<p>You must return the same UID that you declared for the UID3 in the <xref href="GUID-1F7E1476-D7A3-49E4-B05B-F3A0FD6333B6.dita"><parmname>mmp</parmname></xref> and <xref href="GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita">registration</xref> files.</p>
+</note>
+</li>
+<li><p>a factory function for creating an object of the document
+class for your application. The expected syntax is as follows:</p>
+<codeblock id="GUID-C56EAA45-A671-47D6-8FE6-492B154813BF" xml:space="preserve">CApaDocument* CMyAppClass::CreateDocumentL()
+    {
+    return CMyAppDocument::NewL( *this );
+    }
+</codeblock>
+<p>where:</p>
+<itemgroup>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Architecture/CApaApplicationClass.html#%3a%3aCApaApplication%3a%3aCreateDocumentL%28CApaProcess%20%2a%29" format="application/java-archive"><parmname>CEikApplication::CreateDocumentL</parmname></xref> is called
+by the application framework</p>
+<p> <parmname>return CMyAppDocument::NewL( *this )</parmname> returns an
+instance of the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref> derived
+class of your application. It represents the data that relates to a particular
+instance of the application and owns the application <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref>.</p>
+</itemgroup>
+</li>
+</ul>
+<note>
+<p>The application framework owns the document object and is responsible
+for destroying it.</p>
+</note>
+</section>
+<section id="GUID-73A8D2EE-F22A-483D-A23A-5E46D709A718"><title>CAknDocument</title>
+<p>You must implement a <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref> derived
+class for your application, even if you do not store data, as this is the
+class that owns the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref> for your application. The expected syntax for creating the
+UI controller class is as follows:</p>
+<codeblock id="GUID-C016DB83-2B28-4DEC-8027-A9291E380191" xml:space="preserve">CEikAppUi* CMyAppDocument::CreateAppUiL()
+    {
+    return new ( ELeave ) CMyAppAppUi;
+    }</codeblock>
+<p>where:</p>
+<ul>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikDocumentClass.html#%3a%3aCEikDocument%3a%3aCreateAppUiL%28%29" format="application/java-archive"><parmname>CEikDocument::CreateAppUiL</parmname></xref> carries out the first phase construction of the UI controller</p>
+</li>
+<li><p><parmname>new ( ELeave ) CMyAppAppUi </parmname> is a method
+that creates an instance of the UI controller class of your application</p>
+</li>
+</ul>
+<p>The application framework owns the UI controller object of the application
+and is responsible for destroying it. There are two alternate classes from
+which you can derive your UI controller class, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref> or <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref>.</p>
+<p>For more information on the UI controller options, see <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller</xref></p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07DD47FD-86B7-4AFD-BEDB-DF6EA12DFC6C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07DD47FD-86B7-4AFD-BEDB-DF6EA12DFC6C" xml:lang="en"><title>Using
+button states</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The states can also be added to button dynamically. To add button states
+as required, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#656fd550a246e6c2b77bf96939dad6d2" format="application/java-archive"><codeph>AddStateL()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref>. </p>
+<codeblock xml:space="preserve">// Add state with button text and help text 
+HBufC* stateText = StringLoader::LoadLC( R_MYAPP_BUTTON_TEXT );    
+HBufC* stateHelpText = StringLoader::LoadLC( R_MYAPP_BUTTON_TEXT ); 
+button-&gt;AddStateL( 0, 0, 0, 0, *stateText, *stateHelpText, 0 ); 
+CleanupStack::PopAndDestroy( 2 ); // stateText, stateHelpText 
+
+// Add state with icon 
+… 
+#include &lt;avkon.mbg&gt; 
+… 
+TPtrC8 pathPtr( ( TUint8* ) AVKON_BITMAP_FILE ); 
+HBufC *filePath = HBufC::NewLC( pathPtr.Length() ); 
+filePath-&gt;Des().Copy( pathPtr ); 
+button-&gt;AddStateL( *filePath, 
+                   EMbmAvkonQgn_indi_volume_arrow_down, 
+                   EMbmAvkonQgn_indi_volume_arrow_down_mask, 
+                   0, 0, 
+                   EMbmAvkonQgn_indi_volume_arrow_down, 
+                   EMbmAvkonQgn_indi_volume_arrow_down_mask, 
+                   0, 0, 
+                   KNullDesC, KNullDesC, 0, 
+                   KAknsIIDQgnIndiVolumeArrowDown, 
+                   KAknsIIDQgnIndiVolumeArrowDownInactive, 
+                   KAknsIIDQgnIndiVolumeArrowDownSelected, 
+                   KAknsIIDDefault ); 
+CleanupStack::PopAndDestroy( filePath ); 
+</codeblock>
+<p>The following sample code defines three different kinds of buttons with
+button states in a resource file.</p>
+<codeblock xml:space="preserve">#include &lt;avkon.mbg&gt; 
+#include &lt;aknsconstants.hrh&gt; 
+
+… 
+
+RESOURCE AVKON_BUTTON r_myapp_command_button 
+    { 
+    flags  = 0; 
+    states = 
+        { 
+        AVKON_BUTTON_STATE 
+            { 
+            bmpfile = AVKON_BITMAP_FILE; 
+            bmpid = EMbmAvkonQgn_indi_volume_arrow_down; 
+            bmpmask = EMbmAvkonQgn_indi_volume_arrow_down_mask; 
+            press_bmpid = EMbmAvkonQgn_indi_volume_arrow_down; 
+            press_bmpmask = EMbmAvkonQgn_indi_volume_arrow_down_mask; 
+            helptxt = "Volume down"; 
+            // Skinning support for state icon 
+            extension = r_myapp_command_button_extension; 
+            } 
+        }; 
+    } 
+
+RESOURCE AVKON_BUTTON_STATE_EXTENSION r_myapp_command_button_extension 
+    { 
+    bmbSkinIdMajor = EAknsMajorGeneric; 
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiVolumeArrowDown; 
+    } 
+
+RESOURCE AVKON_BUTTON r_myapp_onoff_button 
+    { 
+    flags  = 0; 
+    states = 
+        { 
+        AVKON_BUTTON_STATE 
+            { 
+            txt = "Off"; 
+            helptxt = "Turn on"; 
+            }, 
+            AVKON_BUTTON_STATE 
+            { 
+            flags = KAknButtonStateHasLatchedFrame; 
+            txt = "On"; 
+            helptxt = "Turn off"; 
+            } 
+        }; 
+    } 
+
+RESOURCE AVKON_BUTTON r_myapp_mode_button 
+    { 
+    flags  = 0; 
+    states = 
+        { 
+        AVKON_BUTTON_STATE 
+            { 
+            txt = "Mode 1"; 
+            helptxt = "Switch to 2"; 
+            }, 
+        AVKON_BUTTON_STATE 
+            { 
+            txt = "Mode 2"; 
+            helptxt = "Switch to 3"; 
+            }, 
+        AVKON_BUTTON_STATE 
+            { 
+            txt = "Mode 3"; 
+            helptxt = "Switch to 1"; 
+            } 
+        }; 
+    } 
+
+</codeblock>
+<p>To set current state for the button, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#19d9e952ed9002fcb6fc3f15dfe5583a" format="application/java-archive"><codeph>SetCurrentState()</codeph></xref> in the class <codeph>CAknButton</codeph>.
+To get a pointer to the current state of the button, use <codeph>State()</codeph> method.
+The index of the current state can be acquired with the method <codeph>CAknButton::StateIndex()</codeph>.</p>
+<codeblock xml:space="preserve">if ( button-&gt;StateIndex() == 0 ) 
+{ 
+      button-&gt;SetCurrentState( 1, ETrue ); 
+}</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3-master.png has changed
Binary file Symbian3/SDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e215188_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-07FA8EC8-151F-574A-89F2-34C4AE2D1F0B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-07FA8EC8-151F-574A-89F2-34C4AE2D1F0B" xml:lang="en"><title>How
+to find elements</title><shortdesc>There are two methods for searching for data in an array. Sequentially
+and binary chop.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A search can be made for elements based on the value of a key. A search
+can be done in one of two ways: </p>
+<ul>
+<li id="GUID-1C8D05FB-E5CA-5237-9666-CE4EF72A0920"><p>Sequentially through
+the array, starting with the first element — performed using the <codeph>Find()</codeph> member
+function</p> </li>
+<li id="GUID-B4727A94-2FA9-5F98-B0E2-DA63AF73191B"><p>Using a binary search
+(binary chop) technique — performed using the <codeph>FindIsq()</codeph> member
+function. This technique assumes that the array elements are in key sequence.</p> </li>
+</ul>
+<p>Both functions indicate the success or failure of the search and, if successful,
+supply the position of the element within the array.</p>
+<p>Note that where an array has elements with <i>duplicate keys</i>:</p>
+<ul>
+<li id="GUID-EB9FCE02-B203-525D-AED7-5D5E6E2E054C"><p><codeph>Find()</codeph> only
+supplies the position of the <i>first</i> element in the array with that key.</p> </li>
+<li id="GUID-B084BCB6-18C7-5EE1-8184-AB17A525967F"><p><codeph>FindIsq()</codeph> cannot
+guarantee which element, with the given key value, it will return; except
+that it will find one of them.</p> </li>
+</ul>
+<p>The elements of arrays can be sorted. This is done by the <codeph>Sort()</codeph> member
+function for <codeph>CArrayFixFlat&lt;class T&gt;</codeph>, <codeph>CArrayFixSeg&lt;class T&gt;</codeph>, <codeph>CArrayVarFlat&lt;class T&gt;</codeph> and <codeph>CArrayVarSeg&lt;class T&gt;</codeph> arrays. You must use the <codeph>SortL()</codeph> member
+function for the <codeph>CArrayPakFlat&lt;class T&gt;</codeph> array. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6" xml:lang="en"><title>Preventing
+Plug-in Overriding </title><shortdesc>The plug-in framework supports two methods to prevent a RAM based
+plug-in from overriding a ROM based plug-in. The first method is to use the
+ROM-only resolver and the second method is to explicitly prevent a ROM-based
+implementation from being overridden by a RAM-based implementation. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-E05FFD46-A6C4-5BBF-8597-044CB0CA9F4B"><p>Using the ROM-only
+resolver restricts the search of the framework plug-ins to the ROM only. </p> <p>Alternatively,
+to prevent a RAM-based implementation from overriding a ROM-based implementation,
+set the <codeph>rom_only</codeph> variable to 1 in the <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">resource
+registration file</xref> for the implementation. </p> </context>
+<steps-unordered id="GUID-67BE5671-24BB-5946-A711-6C6095B17D6D">
+<step id="GUID-B321E521-7AB6-41C0-939B-803BB26A9417"><cmd>Using the ROM-only resolver  </cmd>
+<stepxmp><p>Use <codeph>KRomOnlyResolverUid</codeph> as the <codeph>CResolver
+UID</codeph> passed to those variants of <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-AE9D4F24-8554-3151-AAF3-D63F400821C4"><apiname>REComSession::ListImplementationsL()</apiname></xref> and <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> that take the <codeph>TUid aResolverUid</codeph> parameter.  </p><p>If an
+installable upgrade to a ROM-based plug-in is correctly supplied by a vendor,
+then the ROM-only resolver finds and uses the upgrade. Platform security controls
+are used to ensure that the upgrade is secure. For details, see How to upgrade
+ROM-based plug-ins securely.  </p></stepxmp>
+</step>
+<step id="GUID-0F6E0347-82B1-42E5-8AC8-983BDF86858C"><cmd>Preventing a ROM-based implementation from being overridden:  </cmd>
+<stepxmp><p>If the ROM-based plug-ins must be prevented from being overridden
+by a RAM-based plug-in, use the <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">version
+2 resource file format</xref>. </p><p>In the <filepath>.rss</filepath> file,
+the <codeph>rom_only</codeph> member of the <codeph>IMPLEMENTATION_INFO</codeph> structure
+must be set to 1.  </p><p><codeph>rom_only</codeph> set to 1 indicates the
+ROM-based implementation must be used. </p><p><codeph>rom_only</codeph> set
+to 0 indicates the ROM-based implementations can be overridden.  </p><note> For
+all implementations using the version 2 resource file format, the<codeph>rom_only</codeph> member
+must be set explicitly. </note></stepxmp>
+</step>
+</steps-unordered>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e8048_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E" xml:lang="en"><title>Descriptors
+Overview</title><shortdesc>This document provides an overview of descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-B9DAC214-E22A-4E05-AC39-CE994E87C8CA"><title>Purpose</title> <p>Manipulates
+string and data buffers. </p> </section>
+<section id="GUID-A49ACEBD-15DA-4525-BAA7-C15635518D52"><title>Description</title> <p>Descriptors
+are a family of classes that are used in Symbian platform for string handling.
+They are used in preference to NULL-terminated C strings. The same classes
+are used for general binary data. </p> <p>The basic classification of descriptor
+types is given below. Concrete descriptor classes implement variations on
+these basic types for different data widths and for different abilities to
+modify the data. The names of the concrete classes follow certain naming conventions
+that modify the basic name given in the table. </p> <p><b>Basic
+classification</b> </p> <table id="GUID-F074AE70-AC9D-53E5-AD5F-BB391CD32831">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>Type</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+<entry><p> <b>Basic name</b>  </p> </entry>
+</row>
+<row>
+<entry><p>abstract </p> </entry>
+<entry><p>Base interface: allows descriptors of different types to be use
+polymorphically </p> </entry>
+<entry><p> <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>buffer </p> </entry>
+<entry><p>Stack based: contains the data as part of itself. Buffer descriptors
+have a maximum length set at compile time. </p> </entry>
+<entry><p> <xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>pointer </p> </entry>
+<entry><p>Refer to data stored elsewhere that is not owned by the descriptor </p> </entry>
+<entry><p> <xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>heap </p> </entry>
+<entry><p>Refers to data stored on the heap that is owned by the descriptor.
+The maximum length of this data can be set and changed dynamically. </p> </entry>
+<entry><p> <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>  </p> <p> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Width</b> </p> <p>Descriptor
+types can store 8-bit or 16-bit data. These types are indicated by the convention
+of appending 8 or 16 on the basic name, e.g. <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref>. In
+practice, the basic names correspond to 16-bit types, for example <xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf</apiname></xref> is
+defined to be <xref href="GUID-EF25E407-26DF-3D97-B725-2DD0345975BA.dita"><apiname>TBuf16</apiname></xref>. </p> <p><b>Modifiable and non-modifiable</b> </p> <p>Modifiable descriptor types
+have an interface that allows callers to alter their contents, such as appending
+characters. </p> <p>Non-modifiable descriptor types can have their contents
+reset, but not modified. The convention is for non-modifiable types to append
+a C on the basic name, e.g. <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>. </p> <p>Heap type descriptors
+are an exceptional case: they are available only in the non-modifiable form,
+but can, nevertheless, be modified through use of a pointer: see <codeph>HBufC::Des()</codeph>.
+Alternatively, you can use the <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> descriptor, which is
+simpler to use than <codeph>HBufC</codeph>. The general rule is: </p> <ul>
+<li id="GUID-82384688-B4EB-545B-869D-9BF5C0BC3DD2"><p>use <codeph>HBufC</codeph> for
+data that rarely changes. </p> </li>
+<li id="GUID-A15A3A8B-4B8A-58FB-A972-91242331502D"><p>Use <codeph>RBuf</codeph> for
+data that changes frequently. </p> </li>
+</ul> </section>
+<section id="GUID-72EDBF0F-A0EB-4D93-85D0-55D0EA4740BB"><title>See also</title> <p> <xref href="GUID-EA98D77C-743B-5BA5-B131-A327B12A099C.dita">Character Representation
+Of Real Numbers Overview</xref>  </p> <p> <xref href="GUID-C15F56E3-753C-55CA-B3EF-63B2D139BCE4.dita">Dynamic
+Buffers Overview</xref>  </p> <p> <xref href="GUID-106B5A31-012E-503D-A972-A745ECADC1E7.dita">Literals
+Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F" xml:lang="en"><title>Selection
+list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A selection list is a common means of displaying and accessing data in
+applications. When a selection list is displayed, the application is typically
+in a permanent state, which means that the user can leave the application,
+open another application, and later return to the same state. Selection lists
+are displayed in the main pane.</p>
+<p>Typically, the user can open items in a selection list, leading into another,
+more detailed view of the item within the application. In addition to browsing
+and selecting items, other functions are available in the Options menu (see <xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options menu</xref>).</p>
+<p>The usage of the Selection key in selection lists deserves special attention.
+Depending on the case, it can do the following actions:</p>
+<ul>
+<li><p>Selects the item in focus. This should happen whenever it is assumed
+that it is clear to the user what happens. Selecting can mean:</p><ul>
+<li><p>Opening an item, such as a folder or a date in Calendar, leading to
+a detailed view.</p></li>
+<li><p>Executing a command when the focused item is a command.</p></li>
+</ul></li>
+<li><p>Opens the context sensitive Options menu. This should only happen when
+the user cannot be assumed to know what happens if the Selection key is pressed.
+The menu should contain only high-priority options associated with the item
+in focus, not general items such as Settings, Help, or Exit. The maximum amount
+of options in the context sensitive Options menu is four.</p></li>
+</ul>
+<p>The two types of Selection key actions should not be mixed within one list;
+one or the other should happen for every item in the list.</p>
+<fig id="GUID-63BEF19B-2754-4AE4-BC37-BCBF767319B4">
+<title>Select action opens a view</title>
+<image href="GUID-15F35B7F-8CDD-49BA-A015-475C0F6221B8_d0e54972_href.png" scale="40" placement="inline"></image>
+</fig>
+<fig id="GUID-EB8B5041-9CBF-4580-AEBE-69AF79A11198">
+<title>Select action performs a command</title>
+<image href="GUID-5365F75F-647F-4225-B63B-35675EBD6038_d0e54980_href.png" scale="40" placement="inline"></image>
+</fig>
+<fig id="GUID-4F9A7034-DA55-4577-BB41-8BF0B5885242">
+<title>Context sensitive Options menu opened with the Selection key</title>
+<image href="GUID-2CF4F12C-DF30-43EB-BD3D-A6AF8BAB407A_d0e54988_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The keypad functions for selection lists are as follows:</p>
+<table id="GUID-2AF81DA9-8C20-47AE-87DE-8252CC1DAF59"><title>Default key events
+in selection list</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<tbody>
+<row>
+<entry><p>Arrow up / down</p></entry>
+<entry><p>Moves the focus in the list.</p></entry>
+</row>
+<row>
+<entry><p>Arrow left / right</p></entry>
+<entry><p>May be ignored, or may have navigation functions associated with
+them (see <xref href="GUID-EEF2F892-8900-475F-926B-A49D0D98C1C6.dita">Navigation</xref>).</p></entry>
+</row>
+<row>
+<entry><p>Selection key</p></entry>
+<entry><p>Selects the item; see the discussion above.</p></entry>
+</row>
+<row>
+<entry><p>Left softkey (Options)</p></entry>
+<entry><p>Opens the Options menu (see <xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options
+menu</xref>).</p></entry>
+</row>
+<row>
+<entry><p>Right softkey (Back; Exit)</p></entry>
+<entry><p>Back stepping (see<xref href="GUID-EEF2F892-8900-475F-926B-A49D0D98C1C6.dita">Navigation</xref>).</p></entry>
+</row>
+<row>
+<entry><p>Clear</p></entry>
+<entry><p>Deletes the item if it can be deleted (confirmation from the user
+is required); otherwise ignored.</p></entry>
+</row>
+<row>
+<entry><p>Edit</p></entry>
+<entry><p>Ignored, or a marking function if the list is markable (see <xref href="GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita">Markable list</xref>).</p></entry>
+</row>
+<row>
+<entry><p>Numeric keypad</p></entry>
+<entry><p>May be ignored, or may have specific functions within the state.</p></entry>
+</row>
+<row>
+<entry><p>Other keys</p></entry>
+<entry><p>Do the default action of the key.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<fig id="GUID-02393CD0-886F-4628-97CE-9FA6DD034634">
+<title>Selection lists </title>
+<image href="GUID-B0E6F296-1340-4458-B9F6-EDC13BBF20E9_d0e55123_href.png" scale="40" placement="inline"></image>
+</fig>
+<section><title>Using selection lists
+in C++ applications</title><p>The API to use for selection lists is the Lists
+API. For implementation information, see Using
+the Lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-082E47B3-8AAB-51B7-93F9-3C528B97D0A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-082E47B3-8AAB-51B7-93F9-3C528B97D0A9"><title>How to Export Contact and Calendar Data</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The versit API provides support for exporting contact and calendar data to a stream. For example, suppose you want to make changes to an existing contact or calendar entry, and export the same to an external file store. To do so, again create the appropriate parser objects. That is, <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita"><apiname>CParserVCard</apiname></xref> and <xref href="GUID-6BEFF6A7-FBD8-306D-98A4-8711E788C702.dita"><apiname>CParserVCal</apiname></xref> objects to export vCards and/or vCalendars. For more information on importing vCard and vCalendar, refer to <xref href="GUID-2A39CCBD-CADB-56B7-872A-1EC617AC7D93.dita">How to Import Contact and Calendar Data</xref>. </p> <p>Let us assume that, you want to add a new property to the vCard called <i>EMAIL</i> with the parameters <i>ENCODING</i> and <i>CHARSET</i>, and the property value of <i>foo@bar.org</i>. To do so, you need to create objects of <xref href="GUID-895C3D03-FE10-329C-9437-2948686509C5.dita"><apiname>CParserProperty</apiname></xref>, an array of <xref href="GUID-4A02E5BD-39D3-34AD-B70B-8177144FF12C.dita"><apiname>CParserParam</apiname></xref> to hold parameter information, and <xref href="GUID-76E6CCFA-5BAC-34F1-A5B2-FB505A68E784.dita"><apiname>CParserPropertyValue</apiname></xref> to hold the property values. </p> <codeblock id="GUID-B97F4C10-25A1-504E-A072-5E65EA5EEB73" xml:space="preserve">// String literals representing the property and its value.
+_LIT(KPName,"EMAIL");
+_LIT(KEmail,"foo@bar.org");
+
+// String literals representing the property parameters and their values.
+_LIT(KParam1,"ENCODING");
+_LIT(KValue1,"QUOTED-PRINTABLE");
+_LIT(KParam2,"CHARSET");
+_LIT(KValue2,"US-ASCII");
+
+CParserPropertyValue* value=CParserPropertyValueHBufC::NewL(KEmail); // The property value.
+
+// Array to hold parameters of EMAIL property.
+CArrayPtr&lt;CParserParam&gt;* arrayOfParams = new(ELeave)CArrayPtrFlat&lt;CParserParam&gt;(2);
+
+// Parameters with their corresponding values are added to the array.
+CParserParam* parserParam1=CParserParam::NewL(KParam1,KValue1);
+arrayOfParams-&gt;AppendL(parserParam1);
+CParserParam* parserParam2=CParserParam::NewL(KParam2,KValue2);
+arrayOfParams-&gt;AppendL(parserParam2);
+
+// Associate the property params and property value with the EMAIL property
+CParserProperty* property=CParserProperty::NewL(*value,KPName,arrayOfParams);
+
+// Finally add the EMAIL property to the vCard using the parser object.
+vCardParser-&gt;AddPropertyL(property);
+
+// Set the character set as ASCII (7-bit) for transformation.
+vCardParser-&gt;SetDefaultCharSet(Versit::EUSAsciiCharSet);</codeblock> <p> <i>Note that you should include proper error checks in the above given code before using it for production.</i>  </p> <p>Once you have added the EMAIL property, you can externalize (export) the vCard. This time you have to open the file in write mode to externalize the vCard data. </p> <codeblock id="GUID-639AAC10-2332-5408-86F8-24045A3F0094" xml:space="preserve">TInt err = file.Replace(iFsSession, KVCardFileJIS, EFileWrite) // Replace the file with modified information.
+// Check if there is any error reported before exporting the vCard.
+if(err == KErrNone)
+   vCardParser-&gt;ExternalizeL(file);</codeblock> <p>Same procedure could be followed if you want to modify a vCalendar using the <codeph>CParserVCal</codeph> object. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08304A3F-4331-5936-984E-74A1F35905B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-08304A3F-4331-5936-984E-74A1F35905B8"><title>Media Client Image Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Media Client Image library functionality. </p> <section id="GUID-6CA7B577-8C33-589B-BB37-1D26C97A5E6B"><title>Purpose</title> <p>Media Client Image is an interface to set image conversion utility functions. This interface is also used for the bitmap image rotation and the bitmap image re-scaling operations. </p> <p><b>Media Client Image Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-349F7833-B969-5B36-91E3-4ACB2DFD9D8F"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-9DD75050-328B-36BD-9840-E4F228415686.dita"><apiname>mediaclientimage.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-1B95D366-6E86-37FB-8373-EE671F64A17A.dita"><apiname>mediaclientimage.lib </apiname></xref>  </p> </entry> <entry><p>These files are used for implementing Media Client Image operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Media Client Image is a mixin functionality and it is intended to be inherited by the client function which observe the image conversion operations. </p> </section> <section><title>Description</title> <p>Media Client Image functionality is invoked when you want to construct image conversion utility, image rotation and image re-scaling operations. </p> </section> <section><title>Key Media Client Image Classes</title> <p>The key classes are: </p> <ul><li id="GUID-3F17A10E-6256-58E8-B692-AEC68B2CB72B"><p> <xref href="GUID-9082F8F8-AC9C-397E-9D41-07C6191D0F32.dita"><apiname>CMdaImageUtility</apiname></xref> This class provides an interface to perform the image conversion operation. In the image conversion operation for decoding <xref href="GUID-5ED4AA23-0FB7-3738-9564-1861FB8E17B0.dita"><apiname>CMdaImageDataReadUtility</apiname></xref> is used and for encoding <xref href="GUID-149BA9EE-F7C2-3073-8B9C-2B08382A9730.dita"><apiname>CMdaImageDataWriteUtility</apiname></xref> is used. </p> </li> <li id="GUID-9C4626D3-95DA-5F5D-A681-874D8244E650"><p> <xref href="GUID-0A899D09-5AB0-3115-AD71-9E3318B1A00E.dita"><apiname>CMdaBitmapRotator</apiname></xref> Provides rotation for the bitmap image in clockwise direction by 90 degree increments. </p> </li> <li id="GUID-9863BC2A-C205-586A-8146-CE8DBBC29C33"><p> <xref href="GUID-63EE95C6-C15C-3383-B303-72E8DB765EB3.dita"><apiname>CMdaBitmapScaler</apiname></xref> Provides re-scaling for the bitmap image. </p> </li> </ul> </section> <section><title>Using Media Client Image</title> <p>The Media Client Image functionality is used for the following: </p> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Library Overview</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transform Library
+                Overview</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display Library Overview</linktext> </link> <link href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita"><linktext>Bitmap Transform Library
+                Overview</linktext> </link> <link href="GUID-257E223F-1612-5978-982A-38DE8E08211C.dita"><linktext> Gifscaler Library Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08427065-B8E5-5194-B095-3B5213836BED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-08427065-B8E5-5194-B095-3B5213836BED" xml:lang="en"><title>Window Server
+Client-Side Events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Applications function by waiting for events and handling them. This section
+provides information about common Window Server client-side events and how
+to handle them. </p>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Application developers. </p>
+</conbody><related-links>
+<link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server
+Client-Side Library</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e195209_href.png has changed
Binary file Symbian3/SDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254-master.png has changed
Binary file Symbian3/SDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e102675_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-086939FA-D381-5705-BEE6-6DF2D3624849" xml:lang="en"><title>Timers
+and Timing Services Example Code</title><shortdesc>This example describes how to use <apiname>RTimer</apiname> functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-9D1268CE-9D9F-5B51-A578-772937196CD7"><p> <xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita#GUID-086939FA-D381-5705-BEE6-6DF2D3624849/GUID-3205DDD3-D057-56BF-8F64-CF1AFF52619B">BasicTimer: the asynchronous timer</xref> </p> </li>
+<li id="GUID-044A87AB-3F8E-575F-9220-6C07FB0BC952"><p> <xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita#GUID-086939FA-D381-5705-BEE6-6DF2D3624849/GUID-0554FACD-5075-5C8D-8634-F60D31D1EDB7">Periodic: a periodic timer and a heartbeat timer</xref> </p> </li>
+</ul>
+<section id="GUID-3205DDD3-D057-56BF-8F64-CF1AFF52619B"><title>BasicTimer:
+the asynchronous timer</title> <p><b>Download</b> </p> <p>Click the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-0feaa43f-bf66-4a6c-b61b-f768f6524d22.zip" scope="external">BasicTimer.zip</xref>.</p><p>Click the following link to
+download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-0feaa43f-bf66-4a6c-b61b-f768f6524d22.html" scope="peer">browse BasicTimer</xref> to view the example code.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse CommonFramework </xref> to view additional files.</p> <p><b>Description</b> </p> <p>This
+example demonstrates the asynchronous timer, <codeph>RTimer</codeph>. The
+example does <i>not</i> use active objects. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita"><apiname>RTimer</apiname></xref> - Asynchronous timer services.</p></li>
+<li><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> - Indicates the completion status
+of a request made to a service provider.</p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-0554FACD-5075-5C8D-8634-F60D31D1EDB7"><title>Periodic: a
+periodic timer and a heartbeat timer</title> <p><b>Download</b> </p> <p>Download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3195c0fc-704f-4fd4-8c99-407f795abc5f.zip" scope="external">Periodic.zip</xref>. </p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3195c0fc-704f-4fd4-8c99-407f795abc5f.html" scope="peer">browse</xref>. View the additional file: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref></p> <p><b>Description</b> </p> <p>The example demonstrates
+a periodic and a heartbeat timer and shows the differences between them. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-8D6075C7-A340-36A6-A152-0E3E76070311.dita"><apiname>CHeartBeat</apiname></xref></p></li>
+<li><p><xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic</apiname></xref> - Periodic timer active object.</p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-088DC096-0CC7-5510-8D71-7DAF5961A681.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-088DC096-0CC7-5510-8D71-7DAF5961A681"><title>Using Critical Sections</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Critical sections are provided to serialise access to shared resources. They are Kernel objects and, as such, are managed by the Kernel.</p> <p>A critical section can only be used by threads within the same process; it <i>cannot</i> be used to control access to a resource shared by threads across different processes. To serialise access to a resource shared by threads across more than one process, use a mutex.</p> <p>While a critical section is used to serialise access to a general resource, it is used, typically, to serialise access to a section of re-entrant code which cannot be executed concurrently by more than one thread within a process. A critical section only allows one thread into a controlled section, forcing other threads, that try to gain access to that critical section, to wait until the first thread has exited from that section.</p> <p>Note that threads which do not attempt to gain access to the critical section are not blocked.</p> <p>A critical section is implemented using a semaphore.</p> <p>Access to a critical section object is through an <codeph>RCriticalSection</codeph> handle.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-08937880-C381-4C8B-AC17-7162C1243E23_d0e61946_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-089FE9FA-44C8-48D5-A473-9486BF763283.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-089FE9FA-44C8-48D5-A473-9486BF763283" xml:lang="en"><title>Setting
+properties for button states</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The state-specific properties and the methods used for setting them for
+the generic button include the following: </p>
+<table id="GUID-D566BDC2-4D12-4878-8970-2B8BC88550C9">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.37*"/><colspec colname="col2" colwidth="1.63*"/>
+<thead>
+<row>
+<entry><p>Property</p></entry>
+<entry><p>Method in <codeph>CAknButtonState</codeph></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Text</p></entry>
+<entry><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#bcf1d51ebf4177465387f76584078f0c" format="application/java-archive"><codeph>SetTextL()</codeph></xref></p></entry>
+</row>
+<row>
+<entry><p>Icon</p></entry>
+<entry><ul>
+<li><p>Dimmed state: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#7c0f428eb5b32eea76bc0f103d73c82c" format="application/java-archive"><codeph>SetDimmedIcon()</codeph></xref></p></li>
+<li><p>Normal state: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#440bc20e739fbfe2cfe88ac05dd1935d" format="application/java-archive"><codeph>SetIcon()</codeph></xref></p></li>
+<li><p>Pressed-down state: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#cfb323f7e74e5f0e2dc04d42a8d9b8a1" format="application/java-archive"><codeph>SetPressedIcon()</codeph></xref></p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Flags</p></entry>
+<entry><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#0637dd54230fd8a733261f1803bfeade" format="application/java-archive"><codeph>SetFlags()</codeph></xref></p></entry>
+</row>
+<row>
+<entry><p>Help text</p></entry>
+<entry><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#3aa033c14f22fc44efd11e6177249b75" format="application/java-archive"><codeph>SetHelpTextL()</codeph></xref></p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<codeblock xml:space="preserve">// Set second state as having latched frame 
+button-&gt;State( 1 )-&gt;SetFlags( KAknButtonStateHasLatchedFrame ); 
+
+// Set text and help text to second state 
+HBufC* buttonText = StringLoader::LoadLC( R_MYAPP_BUTTON_TEXT );    
+HBufC* buttonHelpText = StringLoader::LoadLC( R_MYAPP_BUTTON_HELP_TEXT );    
+button-&gt;State( 1 )-&gt;SetTextL( *buttonText ); 
+button-&gt;State( 1 )-&gt;SetHelpTextL( *buttonHelpText ); 
+CleanupStack::PopAndDestroy( 2 ); // buttonText, buttonHelpText </codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08A6A034-5609-58B0-8EA7-943B2A937B40.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-08A6A034-5609-58B0-8EA7-943B2A937B40" xml:lang="en"><title>Displayable
+Windows</title><shortdesc>The<codeph>RWindowBase</codeph> class is the abstract
+base class for all windows that can be displayed. These windows further subdivide
+into two types: windows that can be drawn to (<codeph>RDrawableWindow</codeph> abstract
+class), and blank windows (<codeph>RBlankWindow</codeph> class).</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>:
+Application developers. </p>
+<p>Displayable windows introduce several attributes and associated functions: </p>
+<ul>
+<li id="GUID-9432F9B6-29F1-547C-A6B0-8A380C4F3E36"><p>All windows have a rectangle
+that defines the area in which they are contained. Most windows fill all of
+this area, but you can set rounded corners or specify any arbitrary region
+for the window's area. </p> </li>
+<li id="GUID-81D8BEA8-5CD8-56A5-8A9C-5B18BA0B44E4"><p>Whether the window is
+visible or not, controlled by the <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita#GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34/GUID-A028954C-B8A7-3954-B0F7-47E79ACF5DD7"><apiname>RWindowBase::SetVisible()</apiname></xref> function. </p> </li>
+<li id="GUID-840930B6-6955-5A43-9A23-8678EA7ADABC"><p>For pointer event control,
+see <xref href="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita">Pointer Handling</xref>. </p> </li>
+</ul>
+<p>The Window Server maintains the screen display taking into account the
+region, ordinal position and visibility requirements of all displayable windows. </p>
+<section id="GUID-626A91B0-451B-4034-B3F4-DE024140E76D"><title>Standard windows</title> <p>The <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> class
+is derived from <codeph>RDrawableWindow</codeph>. These windows require very
+little RAM and are therefore the most common type of window used by Symbian
+applications. </p> <p>Provided drawing operations to an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> are
+performed as <xref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita">redraw
+drawing</xref>, the Window Server stores the sequence of drawing commands
+that represent the window contents in redraw stores. Then when the Window
+Server needs to repaint the window (because, for example, a dialog box popped
+up over it and has now closed) it simply replays the sequence of stored commands,
+rather than sending a redraw request to the client. This minimises the number
+of client-server transactions and means that windows are repainted as soon
+as the Window Server detects that they are needed. </p> </section>
+<section id="GUID-1FCF8A1B-36A9-404E-8950-B5E88EC04100"><title>Backed-up windows</title> <p>This feature is deprecated in
+Symbian^3. </p> <p>A backed-up window is provided by the <xref href="GUID-27A95595-F74D-32B2-A960-0CA290C8A3B3.dita"><apiname>RBackedUpWindow</apiname></xref> class.
+The Window Server stores the window contents in a bitmap rather than as a
+sequence of draw operations in redraw stores. When the window needs to be
+redrawn, the Window Server blits the bitmap to the window. This usually consumes
+much more memory than storing the drawing operations in the redraw store.
+For example, to store the drawing operations for a simple window would typically
+require fewer than 100 bytes. Storing the bitmap for the equivalent window
+would typically require hundreds of kilobytes. </p> <p>There are two different
+approaches to working with backed-up windows: </p> <ul>
+<li id="GUID-45934BD6-928C-5780-AB79-4F53612865D7"><p>The direct bitmap access
+functions allow the application to directly access the bitmap used by the
+Window Server for backing up the window. By default, areas of a backed-up
+window that are currently visible on the screen are not backed up. When a
+region of the window is covered by another window, that region's contents
+are copied to the bitmap before being covered over on the screen. </p> </li>
+<li id="GUID-CA85FC82-8009-5D33-B3B4-669ADBDD8F7F"><p>An alternative approach
+is provided by the <xref href="GUID-27A95595-F74D-32B2-A960-0CA290C8A3B3.dita#GUID-27A95595-F74D-32B2-A960-0CA290C8A3B3/GUID-28A5B6DD-3471-3F74-8D7B-808750018968"><apiname>RBackedUpWindow::MaintainBackup()</apiname></xref> function.
+This causes the backup bitmap to contain a copy of the entire window contents
+at all times. However, it may produce a reduction in performance, because
+the Window Server must subsequently carry out all drawing commands on both
+the screen and the bitmap. The more drawing-intensive an application, the
+more severe this degradation in performance is. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3-master.png has changed
Binary file Symbian3/SDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e379988_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08B878D0-C0DA-46CC-ACC2-E576E5A3D937.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-08B878D0-C0DA-46CC-ACC2-E576E5A3D937" xml:lang="en"><title>Main
+pane</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The main pane is the principal area of the screen where an application
+can display its data.</p>
+<p>There are a number of standard components for applications to use in the
+main pane.</p>
+<table id="GUID-72C9D280-C5DB-4BD8-ACA5-B4D0BCAE8EDA"><title>Standard components
+for applications to use in main pane</title>
+<tgroup cols="2"><colspec colname="col1" colwidth="0.34*"/><colspec colname="col2" colwidth="1.66*"/>
+<thead>
+<row>
+<entry>Pane</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>List</p></entry>
+<entry><p>There are several standard list types to choose from (see <xref href="GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita">Lists and grids</xref> for
+a detailed description of the list types).</p><p>In the landscape mode, two
+row lists are most commonly stretched to be displayed in one row, which enables
+displaying more items in landscape. List stretching is ON by default,
+but application can decide to disable it.</p></entry>
+</row>
+<row>
+<entry><p>Grid</p></entry>
+<entry><p>Items can be presented on a two-directional grid.</p></entry>
+</row>
+<row>
+<entry><p>Find pane</p></entry>
+<entry><p>The Find pane is used together with a list, and it allows the user
+to search list items alphabetically (see <xref href="GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita">Find
+pane</xref> for more information about the Find pane).</p></entry>
+</row>
+<row>
+<entry><p>Status indicators</p></entry>
+<entry><p>Status indicators are displayed in the Universal indicator pane.
+See <xref href="GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita">Universal indicators</xref> for
+more details on Status indicators.</p></entry>
+</row>
+<row>
+<entry><p>Soft indicators</p></entry>
+<entry><p>Soft indicators only exist in the Idle state. See <xref href="GUID-BA8806CC-BE7C-4927-ACF6-DA0CB6E96AAA.dita">Indicators</xref> for
+more information on status indicators and soft indicators.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>Applications can also use the main pane area to freely draw whatever is
+needed. In that case, however, the responsibility for the look and feel is
+entirely on the application's designer. </p>
+<section id="GUID-A0156C63-94CE-4194-9751-235807B93415"><p>For
+information on how to implement your application using the Symbian application
+and UI frameworks, see <xref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita">Application
+and UI frameworks</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08CCCF43-A742-547B-A0E0-F5F6176DABCE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-08CCCF43-A742-547B-A0E0-F5F6176DABCE"><title>Configuring and Customising the Serial Port</title><shortdesc>Serial ports can be configured in the following ways using the C32 Serial Server environment: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-0467AD16-C175-5657-9D8B-89336E405589"><p>Provide a specialised plug-in to the C32 Serial Server which defines how the port can be accessed and behaves. The plug-ins to the C32 Serial Server are known as CSYs (Comms SYstem plug-ins) and they allow configuration of aspects such as: </p> <ul><li id="GUID-14ECCE86-0628-5B10-AA8C-5CF661594A02"><p>the prefix name for the ports. For example, the ECUART CSY ports have the prefix "COMM" while the USB ports have the prefix ECACM" </p> </li> <li id="GUID-BDF2458A-7C43-5E77-8E1D-A7E96B910B94"><p>the actual port numbers the CSY services. For example, by default the ECUART CSY shipped with Symbian OS will accept connections only on ports 0 and 1 ("COMM::0" and "COMM::1") </p> </li> <li id="GUID-81E9969B-D5FE-53D1-AAE7-5F74408B2CC7"><p>the security requirements that a client must meet to access the ports, such as a minimum set of capabilities or a specific process ID, or list of allowed Vendor IDs and Secure IDs. </p> </li> <li id="GUID-0640D1F6-7E47-5FD7-8607-FC73B61AFD6C"><p>the priority of this CSY when it is running in the same thread as other CSYs. This is defined by the priority of the active objects within the CSY </p> </li> </ul> <p>An overview of writing serial CSY plug-ins is available in the <xref href="GUID-ED2F48EA-8C31-5729-B312-E925B7EC3B24.dita">Serial Protocol Modules (CSYs) Developer Tutorial</xref>. CSYs interact with the LDD and PDD that implements the serial port. </p> </li> <li id="GUID-8D8D5244-4292-56D3-AA99-5A7F3B4D3EF3"><p>Configure the ports at run-time using the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref> API. For more information see <xref href="GUID-EA83150B-8076-5EA5-BE78-962FB450E848.dita">How to Configure a Port: Tutorial</xref>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-08CEB0E8-7E94-545F-AA0C-E27CED08C167.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-08CEB0E8-7E94-545F-AA0C-E27CED08C167"><title>Copyright information</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Overview</title> <p>Parts of the C Standard library code are covered by one or more of the following copyright notices. </p> </section> <section><title>Berkeley copyright messages </title> <p>Redistribution and use in source and binary forms are permitted provided that this notice is preserved and that due credit is given to the University of California at Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. This software is provided "as is" without express or implied warranty. </p> <p>All rights reserved. </p> <p>Copyright (c) 1982, 1986 Regents of the University of California. </p> <p>Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. </p> <p>All rights reserved. </p> <p>Copyright (c) 1990 The Regents of the University of California. </p> <p>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. </p> <p>"This product includes software developed by the University of California, Berkeley and its contributors." </p> <p>3. All advertising materials mentioning features or use of this software must display the following acknowledgement: </p> <p>2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. </p> <p>1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. </p> <p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: </p> <p>All rights reserved. </p> <p>Copyright (c) 1988 Regents of the University of California. </p> </section> <section><title>FreeBSD copyright messages</title> <p>THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. </p> <p>Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies, and that the name of Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the document or software without specific, written prior permission. </p> <p>Portions Copyright (c) 1993 by Digital Equipment Corporation. </p> <p>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. </p> <p>This product includes software developed by the University of California, Berkeley and its contributors. </p> <p>3. All advertising materials mentioning features or use of this software must display the following acknowledgement: </p> <p>2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. </p> <p>1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. </p> <p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: </p> <p>The Regents of the University of California. All rights reserved. </p> <p>Copyright (c) 1980, 1983, 1988, 1993 </p> </section> <section><title>Sun Microsystems copyright message</title> <p>Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. Developed at SunPro, a Sun Microsystems, Inc. business. Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e211993_href.png has changed
Binary file Symbian3/SDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e215495_href.png has changed
Binary file Symbian3/SDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549-master.png has changed
Binary file Symbian3/SDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e165370_href.png has changed
Binary file Symbian3/SDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D_d0e417162_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-092C18D4-A525-5562-9BF6-41435E400290" xml:lang="en"><title>LibpThread
+Example - Using P.I.P.S OECORE </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application shows, using a P.I.P.S. (P.I.P.S. Is POSIX on
+Symbian OS) program, the use of the LibpThread library to demonstrate simple
+multi-threading and synchronisation. </p>
+<p>The purpose is to create a basic multithreading example showing the usage
+of the LibpThread APIs. This example also shows how multi-threading is used
+to achieve concurrency in tasks and sharing of resources. </p>
+<section id="GUID-026FD8D6-6C4A-5958-B289-775D4AE1E756"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-84e8baf2-57f1-4255-aeb8-a6ed0ed2145e.zip" scope="external"> LibpThreadExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-84e8baf2-57f1-4255-aeb8-a6ed0ed2145e.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p>The following sections provide more
+information about the steps that the example performs. </p> <p><b> Thread
+Synchronisation</b> </p> <p>The example creates three threads named ThreadOne,
+ThreadTwo and ThreadThree. The threads write "One", "Two" and "Three" five
+times in a text file. The text file, located in <filepath>epoc32\winscw\c\newfile.txt</filepath>,
+is used as a shared resource for all three threads. A mutex is used to ensure
+that first ThreadOne writes in the file, then ThreadTwo and then ThreadThree.
+If the mutex is not used all the threads can simultaneously write in the file.
+This can be seen by commenting out <codeph>pthread_mutex_lock</codeph> and <codeph>pthread_mutex_unlock</codeph> in
+the code. </p> </section>
+<section><title>Related APIs</title><p><xref href="GUID-736D5209-CD86-324C-BAB0-7B15C3D1862D.dita"><apiname>pthread_mutex_lock</apiname></xref> </p><p><xref href="GUID-9D7CD10C-F958-3792-8888-B7F39B148302.dita"><apiname>pthread_mutex_unlock</apiname></xref> </p><p><xref href="GUID-3A89E849-DD7F-3381-9469-6CD89892E616.dita"><apiname>pthread_join</apiname></xref></p><p><xref href="GUID-889CB456-6980-3B92-9350-0C6C8C9AC435.dita"><apiname>pthread_mutex_t</apiname></xref></p></section>
+<section><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian
+OS build process</xref> describes how to build this example application. </p> <p>The
+example builds an executable called <filepath>LibpThreadExample.exe</filepath> in
+the standard locations. </p> <p>To run the example, start <filepath>LibpThreadExample.exe</filepath> from
+the file system or from your IDE. After launching the executable, depending
+on the emulator you are using, you may need to navigate away from the application
+launcher or shell screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-093516F2-9076-5A96-9BEF-F5A77F75239C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-093516F2-9076-5A96-9BEF-F5A77F75239C" xml:lang="en"><title>SIP
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-EFBD7A9F-1F43-480E-B122-BFA457674AAC"><title>Purpose</title> <p>The Multimedia Protocols Session Initiation
+Protocol (SIP) framework supports SIP, Session Description Protocol (SDP),
+and Signaling Compression (SigComp). SIP is an application layer signaling
+protocol that creates, modifies, and terminates sessions with the users. This
+overview describes the use of SIP as defined in <xref href="http://www.ietf.org/rfc/rfc3261.txt?number=3261" scope="external">RFC 3261</xref>. It provides the information about the use
+of SDP, SigComp and also the implementation-specific mechanisms like the Client
+Resolver and Profile Agent engines. </p> </section>
+<section id="GUID-06DB8B97-9395-4BA6-AA42-6E630B3D1244"><title>Required background</title> <p>This overview does not describe
+how the SIP protocol works, but assumes that the user knows about SIP, SDP,
+and associated protocols that set up multimedia sessions for use cases such
+as VoIP. </p> </section>
+<section id="GUID-1C54AC1A-F2F3-40B9-A4B3-855EAA3D0870"><title>Key concepts</title> <dl>
+<dlentry>
+<dt>Session Initiation Protocol</dt>
+<dd><p>SIP is an application layer signaling protocol used to create, modify,
+and terminate sessions with the users. The SIP subsystem architecture is based
+on the generic Session Initiation Protocol, <xref href="http://www.ietf.org/rfc/rfc3261.txt?number=3261" scope="external">RFC 3261</xref>. It indicates that the 3GPP IMS specific
+SIP message flows. SIP message semantics are the responsibility of the clients,
+with the 3GPP Release 5 IMS specific security mechanism implemented as an
+ECOM plug-in. </p> </dd>
+</dlentry>
+</dl> <p>The following components or subsystems are part of the Symbian SIP
+framework: </p> <ul>
+<li id="GUID-122A91B3-55E3-5521-B1B3-065F5E744A21"><dl>
+<dlentry>
+<dt>Session Description Protocol (SDP)</dt>
+<dd><p>SDP provides a standard representation for multimedia information and
+a standard method to transport that information. The SDP is implemented as
+an independent component and is used with transport mechanisms such as SIP.
+The SDP Codec subsystem provides services to convert SDP descriptions to internal
+representation and internal representations to SDP descriptions. SDP provides
+an API for its clients to encode or decode SDP descriptions and to set or
+get the SDP field values. For more information about the APIs supported by
+the SDP Codec subsystem, see <xref href="GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita">SDP
+Codec API</xref>. </p> </dd>
+</dlentry>
+</dl> </li>
+<li id="GUID-809DA7AA-1AFB-52AC-AA67-EDD218C34831"><dl>
+<dlentry>
+<dt>Signaling Compression</dt>
+<dd><p>The Signaling Compression component provides services to compress and
+decompress the text based protocols such as SIP, SDP, and Real Time Session
+Protocol (RTSP). Compressors that use different compression algorithms are
+dynamically determined and loaded at run-time using the ECOM architecture.
+UDVM provides the decompression functionality and runs the uploaded decompression
+algorithms. The component architecture allows new compressors that use a plug-in
+mechanism and static dictionaries to be included in the implementation. </p> </dd>
+</dlentry>
+</dl> </li>
+<li id="GUID-C2040FE1-CC4A-52AB-8832-C6D6B64D52F0"><dl>
+<dlentry>
+<dt>SIP Client Resolver</dt>
+<dd><p>The SIP Client Resolver defines the architecture for resolving or identifying
+the target client when it receives the SIP request from a default port. For
+information about the SIP Client Resolver API, see <xref href="GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita">SIP
+Client Resolver API</xref>. </p> </dd>
+</dlentry>
+</dl> </li>
+</ul> </section>
+<section id="GUID-981591E6-A9E0-4576-8CD3-FA5F1D445FDD"><title>API summary</title> <p>The following are some of the main
+APIs used in SIP communication. </p> <table id="GUID-F4063A91-4F8E-5965-9DBA-9CA72AC4A6BC">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-C5CBB74D-0EC0-3E22-8CF2-B3F61E1EB79E.dita"><apiname>SIP Client API</apiname></xref>  </p> </entry>
+<entry><p>An API that manages SIP transactions and SIP dialogs. It sets the
+security mechanism parameters, receives connection state change events, queries
+supported security mechanism and signaling compression support. For more information,
+see <xref href="GUID-E339A683-94E2-54E8-BB2B-286B11B0FCE3.dita">SIP Client API</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3433DBD2-6444-32C7-88F9-EFE0629EC3F3.dita"><apiname>SIP Codec API</apiname></xref>  </p> </entry>
+<entry><p>An API that provides services for managing SIP requests and responses.
+This means it sets and obtains the headers and field values. For more information,
+see <xref href="GUID-CD0EF6F2-9515-5884-B979-C3C391B7DA07.dita">SIP Codec API</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-390AECC6-C8FF-34ED-8717-7BFCC4CF92BE.dita"><apiname>SDP Codec API</apiname></xref>  </p> </entry>
+<entry><p>An API that provides a mechanism to encode or decode SDP messages.
+For more information, see <xref href="GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita">SDP
+Codec API</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A346DFC5-5528-342D-89E2-A9A710AB377F.dita"><apiname>SIP Profile API</apiname></xref>  </p> </entry>
+<entry><p>An API that is used to get SIP profile parameters. If a profile
+is not configured for automatic registration it registers or deregisters the
+specific SIP profile. It also creates, uses, or terminates SIP transactions
+and dialogs using profile information. For more information, see <xref href="GUID-399EAC59-643D-5DED-AB67-9F021CA5687A.dita">SIP
+Profile API</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-8696D110-FF44-3ABA-B9F8-C314B8AFB6AC.dita"><apiname>SIP Client Resolver API</apiname></xref>  </p> </entry>
+<entry><p>An ECOM plug-in API that is used by applications that use the SIP
+stack to receive out of dialog incoming request, for example an Incoming VoP
+call. For more information, see <xref href="GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita">SIP
+Client Resolver API</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-09F69A21-5F66-3344-BD04-69D02555E9F1.dita"><apiname>SIP High Level API</apiname></xref>  </p> </entry>
+<entry><p>An API that encapsulates the SIP call flows inside the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> APIs.
+For more information, see <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita">SIP
+High Level API</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-8EB2C029-3C84-406A-BB2B-FD76398B89D8"><title>Typical uses</title> <p><b>When to use which API</b> </p><p>The
+following table describes when to use which API. </p><table id="GUID-AA11D59D-4373-4878-82A5-BFB2C8C3C336">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry valign="top"><p>API name</p></entry>
+<entry valign="top"><p>Usage</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>SIP Client API </p></entry>
+<entry><p>Use the SIP Client API to send and receive SIP messages, create
+registrations, form and tear down dialogs initiated by INVITE, REFER and SUBSCRIBE
+requests. For more information, see SIP Client API. </p></entry>
+</row>
+<row>
+<entry><p>SIP Codec API </p></entry>
+<entry><p>Use the SIP Codec API to encode and decode SIP headers and their
+fields. For more information, see SIP Codec API.</p></entry>
+</row>
+<row>
+<entry><p>SDP Codec API </p></entry>
+<entry><p>Use the SDP Codec API to encode SDP descriptions into an internal
+form, decode the descriptions from an internal form, set and get the SDP field
+values. For more information, see SDP Codec API.</p></entry>
+</row>
+<row>
+<entry><p>SIP Profile API </p></entry>
+<entry><p>Use the SIP Profile API to register through a profile. For more
+information, see SIP Profile API.</p></entry>
+</row>
+<row>
+<entry><p>SIP Client Resolver API </p></entry>
+<entry><p>Use the SIP Client Resolver API to resolve or identify
+the target client when SIP requests are received from the default port. For
+more information, see SIP Client Resolver API. </p></entry>
+</row>
+<row>
+<entry><p>SIP High Level API </p></entry>
+<entry><p>Use the SIP High Level API to register with the SIP server, invite
+a session and subscribe to events. For more information, see SIP High Level
+API.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-A373C1D8-0678-4A45-BAAC-CA37324A4426"><title>See also</title> <ul>
+<li id="GUID-0E00CD92-FCD1-5EFE-87E0-847D3216401F"><p> <xref href="http://www.ietf.org/rfc/rfc3261.txt?number=3261" scope="external">SIP: Session Initiation Protocol, RFC 3261</xref>  </p> </li>
+<li id="GUID-F8278257-C4CE-5FBD-9DCB-C7B47A8C5273"><p> <xref href="http://www.3gpp.org/" scope="external">3GPP TS 24.228 v.5.2.0 Signaling flows for the IP multimedia
+call control based on SIP and SDP; Stage 3</xref>  </p> </li>
+<li id="GUID-F7AF8C36-7D6D-557D-91BA-015DE811FDEA"><p> <xref href="http://www.3gpp.org/" scope="external"> 3GPP TS 24.229 v.5.4.0 Internet Protocol (IP) multimedia
+call control protocol based on Session Initiation Protocol (SIP) and Session
+Description Protocol (SDP); Stage 3</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0957A663-B00E-48CC-B5E3-7B8C0F33FDF7_d0e62257_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0970A970-6E56-556C-B032-B7EAF8ABBBA6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0970A970-6E56-556C-B032-B7EAF8ABBBA6" xml:lang="en"><title>How
+to use CleanupReleasePushL()</title><shortdesc><codeph>CleanupReleasePushL()</codeph> pushes a <codeph>TCleanupItem</codeph> onto
+the cleanup stack ready for <codeph>CleanupStack::PopAndDestroy()</codeph> to
+release.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>CleanupReleasePushL()</codeph> templated function constructs
+and pushes a <codeph>TCleanupItem</codeph> onto the cleanup stack. When <codeph>CleanupStack::PopAndDestroy()</codeph> is
+called, the <codeph>Release()</codeph> member function of the object encapsulated
+by the <codeph>TCleanupItem</codeph> is called.</p>
+<codeblock id="GUID-5CBFFD7F-68B3-55E5-9518-2A2899710AAA" xml:space="preserve">...
+RTestThree three;
+CleanupReleasePushL(three);
+...
+CleanupStack::PopAndDestroy();
+...
+</codeblock>
+<p>The <codeph>TCleanupItem</codeph> object encapsulates a reference to the <codeph>RTestThree</codeph> object;
+the cleanup operation is the static function <codeph>Release()</codeph> of
+the templated class <codeph>CleanupRelease&lt;class T&gt;</codeph>. This is implemented
+by simply calling the <codeph>Release()</codeph> member function of <codeph>RTestThree</codeph>.
+This means that <codeph>RTestThree</codeph> must define or inherit a member
+function <codeph>Release()</codeph> which performs whatever clean up is required.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e50244_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0995EBF6-D203-57B3-9F53-972AEB8F3D3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0995EBF6-D203-57B3-9F53-972AEB8F3D3C"><title>Memory Metrics</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes the metrics provided by a Comms pond. </p> <p>A Comms pond creates and manages pools of Comms buffers (MBufs). Each pool contain buffers of a specified size. The pond provides information about the size of these buffers and the memory utilisation of the pools. </p> <table id="GUID-4AC39ECB-83A6-576D-B239-2857B791E477"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Metric method</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita#GUID-F5B96520-E8A6-3775-9059-DF5A1668043B/GUID-DEFA47F2-5B36-397C-B1FE-3000BD208B08"><apiname>RCommsBufPond::NextBufSize()</apiname></xref>  </p> </entry> <entry><p>Returns the next MBuf size that is strictly larger than the specified parameter, or <codeph>KErrNotFound</codeph> if there is no pool with larger buffers. The return value is independent from the number of free buffers of that size. </p> <p>To obtain the first size, pass 0 as the parameter. </p> </entry> </row> <row><entry><p> <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita#GUID-F5B96520-E8A6-3775-9059-DF5A1668043B/GUID-AA451DD4-F367-3494-B646-FC9064568F92"><apiname>RCommsBufPond::LargestBufSize()</apiname></xref>  </p> </entry> <entry><p>Returns the largest buffer size in the pond. The return value is independent from the amount of free buffers in the largest-size pool. </p> </entry> </row> <row><entry><p> <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita#GUID-F5B96520-E8A6-3775-9059-DF5A1668043B/GUID-23667793-9546-3813-9457-C889E33AD342"><apiname>RCommsBufPond::BytesAvailable()</apiname></xref>  </p> </entry> <entry><p>Returns the sum of the amount of available memory in all the pools. </p> </entry> </row> <row><entry><p> <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita#GUID-F5B96520-E8A6-3775-9059-DF5A1668043B/GUID-D5DE5000-37A1-307E-906C-3BD8D063D6E5"><apiname>RCommsBufPond::BytesAvailable(TInt aSize)</apiname></xref>  </p> </entry> <entry><p>Returns the amount of available memory in the first pool of the specified buffer size. To get the number of free buffers in the pool, divide the return value by the buffer size. </p> </entry> </row> </tbody> </tgroup> </table> <p>To get the list of the existing buffer sizes, call <codeph>NextBufSize()</codeph> as in the following example: </p> <codeblock id="GUID-3CD782B5-CE2D-5172-A895-EF2F5920AC77" xml:space="preserve">
+RMBufAllocator allocator;
+
+TInt size = 0;
+
+do 
+    {
+    // Get the next size
+    size = allocator.NextBufSize(size);
+            
+                // error 
+    if(size &lt;0)
+        {
+        // no pool of bigger buffers, or error: end iteration
+        break;
+        }
+    RDebug::Printf(“%d”,size);
+    }
+while(true);
+</codeblock> <p>Note that the example uses a <xref href="GUID-5E763DBF-2C22-3335-9D80-89783095D5AA.dita"><apiname>RMBufAllocator</apiname></xref> object instead of the pond: this optimisation is explained in the <xref href="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita">TLS Look-up Reduction Tutorial</xref>.  </p> </conbody><related-links><link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> <link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf)
+                and Comms Chains</linktext> </link> <link href="GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita"><linktext>Allocation tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e333788_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-09D1DB3C-DA2D-4E16-8EEB-2195F765BE22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-09D1DB3C-DA2D-4E16-8EEB-2195F765BE22" xml:lang="en"><title>Using
+Exported Global Variables for GLib</title><shortdesc>GLib on Linux has many global variables like <codeph>g_idle_funcs</codeph> exported
+from the <filepath>.so</filepath> file. Symbian platform does not support
+exporting global variables from the DLL. Therefore, the global variable of
+GLib cannot be exported and hence used directly.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The users must include the header <filepath>glib_global.h</filepath> for <codeph>libglib</codeph> global
+variables and <filepath>gobject_global.h</filepath> for <codeph>libgobject</codeph> global
+variables. The other two DLLs - <codeph>libgmodule</codeph> and <codeph>libgthread</codeph> -
+do not have any exported global variables.</p>
+<note>The header must be included only after all the other headers in the
+file.</note>
+<p>The following example code snippet explains the usage. This is a code that
+prints the version of GLib being used.</p>
+<p>The variables listed below are <codeph>libglib</codeph> global variables:</p>
+<ul>
+<li><p><codeph>glib_major_version</codeph></p></li>
+<li><p><codeph>glib_minor_version</codeph></p></li>
+<li><p><codeph>glib_micro_version</codeph></p></li>
+</ul>
+<codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;glib.h&gt;
+#include &lt;glib_global.h&gt; // Always include as the last include 
+
+int main()
+{
+    /* glib_major_version,glib_minor_version and 
+     * glib_micro_version are libglib global variables
+     */
+    printf("The version of glib that you are using is %d.%d.%d",
+            glib_major_version,glib_minor_version,glib_micro_version);
+    getchar();
+    return 0;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10" xml:lang="en"><title>Listening
+for Channel Changes</title><shortdesc>The sensor channel APIs enable you to receive notifications when
+a sensor channel is added or removed. This ensures that you are informed of
+changes to sensor channels whenever there is a change. For example, you can
+receive notifications when a specific proximity sensor channel is added.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-03B31784-B731-43C4-B2DC-38DD4898AE22">       <p>Before listening
+for channel changes, you must <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88">open
+the sensor channel</xref>.</p>     </prereq>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-9-1-3-2">
+<step id="GUID-B454B117-4FC5-4B19-B512-7B4A213E4C51"><cmd>Create a channel
+listener implementation for the <parmname>MSensrvChannelListener</parmname> interface.</cmd>
+<stepxmp><codeblock xml:space="preserve">class ChannelListener:public MSensrvChannelListener
+    {
+    public:    
+    void ChannelChangeDetected(const TSensrvChannelInfo &amp;aDetectedChannel, TSensrvChannelChangeType aChangeType)
+        {
+        ...
+         //Implementation
+        }
+    void ChannelDetectionError(CSensrvChannelFinder aChannelFinder, TSensrvErrorSeverity aError)
+        {
+        ...
+         //Implementation
+        }
+    void GetChannelListenerInterfaceL(TUid aInterfaceUid, TAny *aInterface)
+        {
+        ...
+         //Implementation
+        }
+    };</codeblock></stepxmp>
+</step>
+<step id="GUID-CB0E18F1-21C3-4B51-88C8-ABCBD083304D"><cmd>Start channel listening
+by passing an instance of the channel listener implementation, using <xref href="GUID-5F108D03-C8A6-3EF9-B103-2E8916633602.dita#GUID-5F108D03-C8A6-3EF9-B103-2E8916633602/GUID-FFB9A53F-CAD2-3CC7-9FAD-D254E15F83CF"><apiname>CSensrvChannelFinder::SetChannelListenerL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">//Instance of the channel listener implementation
+ChannelListener channelListener;
+//Channel search parameters
+TSensrvChannelInfo &amp;searchParameters
+...
+CSensrvChannelFinder* finder = CSensrvChannelFinder::NewLC();
+...
+channel-&gt;SetChannelListenerL(channelListener, searchParameters);
+...</codeblock></stepxmp>
+<info><p>This listens for channels that meet the supplied search parameters.
+When a channel change occurs, a <parmname>ChannelChangeDetected</parmname> notification
+is delivered through the <parmname>MSensrvChannelListener</parmname> interface.</p></info>
+</step>
+<step id="GUID-E9FF2158-0E82-4AB8-A9C0-8FE5A2651FE8"><cmd>Stop channel listening
+by passing a NULL parameter to the <xref href="GUID-5F108D03-C8A6-3EF9-B103-2E8916633602.dita#GUID-5F108D03-C8A6-3EF9-B103-2E8916633602/GUID-FFB9A53F-CAD2-3CC7-9FAD-D254E15F83CF"><apiname>CSensrvChannelFinder::SetChannelListenerL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">ChannelListener channelListener=NULL;
+finder-&gt;SetChannelListenerL(channelListener, searchParameters);</codeblock></stepxmp>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-09FC1F03-B5EB-5228-832B-C64D95AEA05B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-09FC1F03-B5EB-5228-832B-C64D95AEA05B" xml:lang="en"><title>Locale
+Settings Example Code</title><shortdesc>Example that explains how to use locale settings.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-8EF87F29-926A-507D-9629-61DDBCFCFF31"><title>Currency: locale-dependent
+currency representation</title> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-434ec81b-0581-4fa7-ba82-cf14c843341c.zip" scope="external">Currency.zip</xref> </p><p>Download some additional files
+required by the example:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref> </p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-434ec81b-0581-4fa7-ba82-cf14c843341c.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>This example
+shows locale-dependent currency representation. The way currency values and
+symbols are printed depends on the locale's settings. </p><p><b>Class summary</b></p><p>Examples
+of APIs</p><ul>
+<li><p> <xref href="GUID-53299759-C2DD-3ABC-A055-9AFE7C5081C6.dita"><apiname>TLocale</apiname></xref> - Sets and gets the system's locale settings.</p></li>
+<li><p><xref href="GUID-0AD9F258-392E-3F4E-8986-23D30920E77F.dita"><apiname>TCurrencySymbol</apiname></xref> - Gets a copy of the currency symbol(s)
+in use by the current locale.</p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F" xml:lang="en"><title>Window
+Server Client-Side Library Overview</title><shortdesc>The Window Server keeps track of window sizes, positions, visibility
+and validity (keeping window content up to date). It also receives and distributes
+user input in the form of key presses and pointer events. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Note that much of the Window Server API is low-level and is encapsulated
+in the UI Control Framework API. </p>
+<section id="GUID-E1891417-0C8F-46FE-BC4D-23C1E1BB750E"><title>Window Server client-side library details</title> <p>The following
+table shows the DLLs that provides the functionality and the library to which
+your code must link. </p> <table id="GUID-D5750916-4A95-5944-9ADB-05E35D47592B">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>DLL</entry>
+<entry>LIB</entry>
+<entry>Short description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>ws32_nga.dll</filepath>  </p> </entry>
+<entry><p> <filepath>ws32.lib</filepath>  </p> </entry>
+<entry><p>The Window Server client-side library for the <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> variant. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>ws32_nonnga.dll</filepath>  </p> </entry>
+<entry> <p> <filepath>ws32.lib</filepath>  </p></entry>
+<entry><p>The Window Server client-side library for the <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref> variant. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The details of the client-side API are very similar in the two
+variants. There are some additional features in the ScreenPlay variant for
+displaying surfaces.</p> </section>
+<section id="GUID-D5B8436F-D7AA-4A72-A967-FC2BB8D8EB0B"><title>Architecture</title> <p>The Window Server is used by all applications
+that have a user interface. The primary user input for these applications
+comes from the keyboard and pointer, and their primary user-visible output
+is to the screen. These input and output devices are shared between all applications
+on the system. Each client thread opens a session to the server, and issues
+requests for service. </p> <fig id="GUID-4EEE0DBF-A4DC-59A1-8310-504BF05204C7">
+<title>              Window Server            </title>
+<desc><p>The Window Server controls access by many client applications, to
+the machine’s screen, keyboard and pointer. </p> </desc>
+<image href="GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e164328_href.png" placement="inline"/>
+</fig> <p>The Window Server thread runs at a higher priority than any application;
+only the kernel runs at a higher priority. Therefore, all applications' requests
+for screen updates, and all handling of machine events such as pointers and
+keys, are handled at higher priority than any individual application. </p> <p>Each
+client application runs in its own thread. The Window Server presents an interface
+to client applications such that they can run without direct interaction with
+the other applications on the machine. Drawing is clipped to the visible area
+of the application’s windows. Pointer events are only received if they are
+related to the application’s windows. Similarly, keyboard events are only
+given to an application whose window group has focus or to one that has captured
+them. A client application may ignore the majority of events relating to other
+applications. It won't even be told about most of them. </p> <p>Each client
+application communicates with the Window Server using a Window Server session,
+or other object created from the session. The application waits to receive
+events by setting up one or more active objects. Events include user input
+and requests that windows be redrawn. Applications may create systems of windows
+and draw to them. </p> </section>
+<section id="GUID-A8BCF1C1-A637-4DDC-9249-BCEF4E23BA06"><title>Window server client-side API</title> <p>The following diagram
+shows the key classes in the Window Server client-side library. Below the
+diagram we provide a summary of the key concepts. </p> <fig id="GUID-A84A2706-1AF0-598B-976E-0980AD69E6E7">
+<title>             Window Server client-side API classes            </title>
+<image href="GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e164353_href.png" placement="inline"/>
+</fig> <table id="GUID-37EDAB58-6F7B-526A-8E46-891598924120">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Concept</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>Session</b>  </p> </entry>
+<entry><p>A Window Server session allows an application to control and interrogate
+its windows, the events it wishes to receive, and all other window groups
+connected to the Window Server. A session is encapsulated by <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Events</b>  </p> </entry>
+<entry><p>Applications function by waiting for events and handling them. Common
+events are user input, and requests that windows be redrawn. The Window Server
+session is used to request and obtain events. Most events (such as key and
+point events) are encapsulated in <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent</apiname></xref>. </p> <p>A redraw
+event tells the application what screen area needs redrawing. It is encapsulated
+in <xref href="GUID-B5F16BF3-569D-3985-AAB7-439E3410468D.dita"><apiname>TWsRedrawEvent</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Window group</b>  </p> </entry>
+<entry><p>A window group is special non-displayable type of window, which
+can be considered as the root window of an application. Keyboard events and
+focus are associated with it, and it can have a name, used for such things
+as lists of running applications. A window group is provided by <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Drawable windows</b>  </p> </entry>
+<entry><p>Drawable windows allow applications to draw to the screen. They
+have operations to control size, position, visibility, scrolling, z-order,
+and parent/child relationships. In a standard drawable window, areas that
+become invalid (e.g. when an overlaying window is removed) must be redrawn
+by the client application. It is provided by <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>. </p> <p>A
+backed-up drawable window's content is stored by the Window Server, and redrawn
+by the server when it becomes invalid. It is provided by <xref href="GUID-27A95595-F74D-32B2-A960-0CA290C8A3B3.dita"><apiname>RBackedUpWindow</apiname></xref>. </p> <p>These
+window types are derived from a sequence of base classes, <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref>, <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWindowBase</apiname></xref>,
+and <xref href="GUID-FDF4BB7E-8750-3564-982A-0124A977C82E.dita"><apiname>RDrawableWindow</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Graphics</b>  </p> </entry>
+<entry><p>Applications draw to drawable windows through a windows graphics
+context provided by a windows graphics device. These implement the abstract
+graphics context and graphics device interfaces respectively, as defined in
+the Graphics API. </p> <p>The windows graphics context is provided by <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>;
+the windows graphics device by <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref>. The bitmap
+class, <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>, is extended for most efficient use with
+the Window Server by <xref href="GUID-17150D76-BB82-3A4B-8B1A-8BA93CB1A9EF.dita"><apiname>CWsBitmap</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Sprites and cursors</b>  </p> </entry>
+<entry><p>A sprite is an arbitrary-shaped bitmap that can be moved without
+applications having to redraw the underlying screen. It has one or more sprite
+members, each containing a bitmap image and a time interval for that bitmap
+to be displayed. The sprite class is <xref href="GUID-75C09150-E93B-323D-AFBF-E42C7BD78229.dita"><apiname>RWsSprite</apiname></xref>; the sprite
+member class is <xref href="GUID-7F4E749E-D08D-3771-A3F1-9AEC5D16B78C.dita"><apiname>TSpriteMember</apiname></xref>. </p> <p>A specialized sprite
+type is provided for pointer cursors, which automatically track the position
+of a pointer. It is provided by <xref href="GUID-6E71A7F9-E980-3D99-ACB0-6743A0D13EBF.dita"><apiname>RWsPointerCursor</apiname></xref>. </p> <p>Text
+cursors are handled by the class <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref>. They can take
+the form of a text or a line cursor. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Animation client</b>  </p> </entry>
+<entry><p>Third-parties can write Window Server plug-in DLLs, as defined in
+the Animation API, that perform animations. Providers of such animation DLLs
+must also provide a client-side interface to allow applications to control
+the animation. The base class for an animation client-side interface is <xref href="GUID-4180CDBA-E9A5-3A4B-9778-26D172FAFD10.dita"><apiname>RAnim</apiname></xref>. </p> <p>Clients
+must request an animation DLL to be loaded before the animations provided
+by it can be used. This is done through <xref href="GUID-800B3667-F45F-391F-A8A9-F876FB4ABC34.dita"><apiname>RAnimDll</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Transparent windows</b>  </p> </entry>
+<entry><p>Transparent windows enable you to display semi-transparent bitmaps
+on a window. The window must be an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>. Methods to
+create transparent windows can be found in the <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> class. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Surfaces</b>  </p> </entry>
+<entry><p>In ScreenPlay, applications (such as games and video) that use a
+rendering API that can potentially benefit from hardware acceleration (depending
+on hardware) can render directly to graphics <i>surfaces</i>. A surface is
+a hardware independent buffer for holding an image or part of a scene. Surfaces
+are identified using a 128 bit surface ID in a <xref href="GUID-11F60AEB-003B-3E8D-BDB9-D97F698627DF.dita"><apiname>TSurfaceId</apiname></xref> class. </p> <p>The
+Window Server delegates the composition of surfaces to a composition engine
+which has an adaptation part that enables device creators to take advantage
+of graphics processing hardware if it is available. However, this is largely
+transparent to application developers. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Direct Screen Access (DSA)</b>  </p> </entry>
+<entry><p>Mainly used in the non-ScreenPlay variant, DSA enables applications
+that require high frame rates (such as video and games) to bypass the Window
+Server and write to the screen directly. This avoids client-server communication
+and as a result is faster. However, some interaction with the Window Server
+is needed to prevent the application from drawing over other application's
+data. </p> <p>In ScreenPlay, Symbian recommends the use of external surfaces
+in preference to DSA for most use cases. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server
+Client-Side Library</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,795 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052" xml:lang="en"><title>Migrating
+to V2 client-server APIs</title><shortdesc>Describes how to modify client-server implementations to use the
+new Version 2 client-server APIs instead of the deprecated Version 1 APIs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The new APIs have been introduced as part of the effort to provide a more
+secure interface for client-server communications, and form an essential component
+of Platform Security in Symbian platform. </p>
+<ul>
+<li id="GUID-C53A38E9-A821-577A-930A-F478954FF806"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-35D3BD7A-8C16-50C3-80AD-2422E3B92AAB">General points</xref>  </p> </li>
+<li id="GUID-FD82A424-BDB5-5DE7-8904-C579C7683CA1"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-0FA5EC5C-8F7B-5E95-BE28-CD0DB6BDCBEE">The Version 1 client-server APIs</xref>  </p> </li>
+<li id="GUID-63746CDF-E64B-5BA0-A133-8DFD0FA9FCF5"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-8BDFF94E-80E6-5CAF-8CC0-04D7F74FAF43">The Version 2 client-server APIs</xref>  </p> </li>
+<li id="GUID-87719C35-00EB-51BE-8D01-6955535C6B4A"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-C5A1C9BA-7637-53EB-9898-A58336F87389">Changes to the client interface</xref>  </p> </li>
+<li id="GUID-CFDDD4B4-DD54-5F9C-B60D-D361EA621670"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-450BE510-C3C9-5988-853B-1A03A84F0875">Changes to the server interface</xref>  </p> </li>
+<li id="GUID-30E36FBF-25EA-5347-810E-D2C85F853CCD"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-07F7FFA6-D421-54E2-90F7-69F002702C46">Using RMessagePtr2</xref>  </p> </li>
+<li id="GUID-A2E1CEF3-BD6F-594D-B4DC-098FBABBC6F4"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-1ABF5DC6-A957-5623-93AB-CD7631A36A33">Migration quick reference</xref>  </p> </li>
+</ul>
+<section id="GUID-35D3BD7A-8C16-50C3-80AD-2422E3B92AAB"><title>General points</title> <p>The
+user library, EUSER.DLL, makes both the Version 1 and Version 2 client-server
+APIs available. However, it is possible to 'hide' the Version 1 APIs during
+compilation by defining the C pre-processor macro <codeph>__HIDE_IPC_V1__</codeph>. </p> <p>For
+example, by adding the following line to a component's MMP file: </p> <codeblock id="GUID-048E20E3-1E8C-5F08-9E40-CE0A43849AD5" xml:space="preserve">macro __HIDE_IPC_V1__</codeblock> <p>This
+can also be done globally for all components in Symbian platform by defining
+the macro in the platform's HRH file: </p> <codeblock id="GUID-30C6F786-CB13-5962-80E5-5ACBB5879B8C" xml:space="preserve">#define __HIDE_IPC_V1__</codeblock> <p>In
+addition, the EUSER header files define the macro <codeph>__IPC_V2_PRESENT__</codeph>,
+which allows source code that still needs to compile with older Symbian platform
+releases, to detect the presence of the new APIs, and use conditional compilation
+as appropriate. </p> </section>
+<section id="GUID-0FA5EC5C-8F7B-5E95-BE28-CD0DB6BDCBEE"><title>The Version
+1 client-server APIs</title> <p>The following classes and functions are defined
+as constituting the Version 1 client-server APIs: </p> <codeblock id="GUID-339D79DC-B401-5F09-B5A2-3D3EE10B3D63" xml:space="preserve">class CSharableSession
+class CSession
+class CServer
+class RMessagePtr
+class RMessage
+class RServer
+
+RSessionBase::Share(TAttachMode aAttachMode=EExplicitAttach)
+RSessionBase::Attach()
+RSessionBase::Send(TInt aFunction,TAny* aPtr)
+RSessionBase::SendReceive(TInt aFunction,TAny* aPtr,TRequestStatus&amp; aStatus) 
+RSessionBase::SendReceive(TInt aFunction,TAny* aPtr)
+
+RSubSessionBase::CreateSubSession(RSessionBase&amp;,TInt aFunction,const TAny* aPtr)
+RSubSessionBase::Send(TInt aFunction,const TAny* aPtr)
+RSubSessionBase::SendReceive(TInt aFunction,const TAny* aPtr,TRequestStatus&amp;)
+RSubSessionBase::SendReceive(TInt aFunction,const TAny* aPtr)
+
+RThread::GetDesLength(const TAny* aPtr)
+RThread::GetDesMaxLength(const TAny* aPtr)
+RThread::ReadL(const TAny* aPtr,TDes8&amp; aDes,TInt anOffset)
+RThread::ReadL(const TAny* aPtr,TDes16 &amp;aDes,TInt anOffset)
+RThread::WriteL(const TAny* aPtr,const TDesC8&amp; aDes,TInt anOffset)
+RThread::WriteL(const TAny* aPtr,const TDesC16&amp; aDes,TInt anOffset)</codeblock> <p>The
+following functions are considered part of the client-server Version 1 APIs,
+when the target thread is in another process. Note that these APIs are <i>not</i> hidden
+by the <codeph>__HIDE_IPC_V1__</codeph> macro. </p> <codeblock id="GUID-BDAF69BC-F736-5E2F-9E7C-37B9AAC75A0E" xml:space="preserve">RThread::RequestComplete(TRequestStatus*&amp; aStatus,TInt aReason)
+RThread::Kill(TInt aReason)
+RThread::Terminate(TInt aReason)
+RThread::Panic(const TDesC&amp; aCategory,TInt aReason)
+      </codeblock> </section>
+<section id="GUID-8BDFF94E-80E6-5CAF-8CC0-04D7F74FAF43"><title>The Version
+2 client-server APIs</title> <p>The following classes and functions are defined
+as constituting the Version 2 client-server APIs. </p> <codeblock id="GUID-E2EDBA7A-5668-52F4-BCF1-18F53A2DD1E9" xml:space="preserve">class CSession2
+class CServer2
+class RMessagePtr2
+class RMessage2
+class RServer2
+class TIpcArgs
+
+RSessionBase::Send(TInt aFunction,const TIpcArgs&amp; aArgs)
+RSessionBase::SendReceive(TInt aFunction,const TIpcArgs&amp; aArgs, TRequestStatus&amp;)
+RSessionBase::SendReceive(TInt aFunction, const TIpcArgs&amp; aArgs)
+RSessionBase::ShareAuto()
+
+RSubSessionBase::CreateSubSession(RSessionBase&amp;,TInt aFunction,const TIpcArgs&amp;)
+RSubSessionBase::Send(TInt aFunction,const TIpcArgs&amp; aArgs)
+RSubSessionBase::SendReceive(TInt aFunction,const TIpcArgs&amp; aArgs, TRequestStatus&amp;)
+RSubSessionBase::SendReceive(TInt aFunction,const TIpcArgs&amp; aArgs)</codeblock> </section>
+<section id="GUID-C5A1C9BA-7637-53EB-9898-A58336F87389"><title>Changes to
+the client interface</title> <p>The client interface to a server consists
+of a class derived either from <codeph>RSessionBase</codeph> or <codeph>RSubSessionBase</codeph>.
+This section lists the changes required to the use of these classes. </p> <ul>
+<li id="GUID-65CF4ED6-3133-5452-800C-F1EDA040B7C2"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-F5FB0FB3-6868-5B26-99A5-62082BFA87FD">RSessionBase::Share()</xref> </p> </li>
+<li id="GUID-93211175-EBE0-5C2E-9F67-3BFF6E50E5DD"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-68B92D5D-7786-51CD-9A3D-7C835FD64496">RSessionBase::Attach()</xref> </p> </li>
+<li id="GUID-596E1B2A-E1FF-553B-A257-A4091DD15F1A"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-8AF1B8B3-F598-5318-B9F9-5C74EEE8FCC9">RSessionBase::Send() &amp; RSessionBase::SendReceive()</xref>  </p> </li>
+<li id="GUID-E88F13D3-C4C9-5624-A90B-2CC3EA841D5D"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-449D6257-772B-5E08-8E4B-40C11EAF8FBA">RSubSessionBase::CreateSubSession()</xref>  </p> </li>
+<li id="GUID-B28619D3-BDE6-5434-AB33-3016BA200633"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-858A58D1-A539-55FB-855E-50B997BA9A41">RSubSessionBase::Send() &amp; RSubSessionBase::SendReceive()</xref>  </p> </li>
+</ul> <p id="GUID-F5FB0FB3-6868-5B26-99A5-62082BFA87FD"><b>RSessionBase::Share()</b> </p> <table id="GUID-175135E8-8583-53E4-8829-88738EEFA357">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 functions: </p> </entry>
+<entry><codeblock id="GUID-3A5C2CAB-646B-5C1F-BA30-9808202B61E5" xml:space="preserve">Share()
+Share(EExplicitAttach)
+Share(EAutoAttach)</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-D946029A-A553-5BB3-B868-5348D06CF11E" xml:space="preserve">ShareAuto()</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In Version 1, the two different share modes existed for historical
+reasons. All sessions created with new Version 2 servers behave like the Version
+1 <i>auto attach</i> sessions; there is no <i>explicit attach</i> sharing
+mode. The new <codeph>ShareAuto()</codeph> function should be used to replace
+all occurrences of <codeph>Share()</codeph>. </p> <p id="GUID-68B92D5D-7786-51CD-9A3D-7C835FD64496"><b>RSessionBase::Attach()</b> </p> <table id="GUID-43575561-41F7-5F61-ADF2-06892D06941B">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-4E94517B-AAD4-5A7C-8B67-19E2DABF99BF" xml:space="preserve">Attach()</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><p>NONE </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>There is no explicit attach mode in the Version 2 API, (see <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-F5FB0FB3-6868-5B26-99A5-62082BFA87FD">RSessionBase::Share()</xref>).
+This means that all occurrences of <codeph>Attach()</codeph> must be removed
+from your code when migrating. </p> <p id="GUID-8AF1B8B3-F598-5318-B9F9-5C74EEE8FCC9"><b>RSessionBase::Send() &amp;
+RSessionBase::SendReceive()</b> </p> <table id="GUID-BA09FDB1-4DF3-5D73-B314-1333E479FF35">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 functions: </p> </entry>
+<entry><codeblock id="GUID-7117993F-8620-598F-818B-769B91A94E02" xml:space="preserve">Send(TInt aFunction,TAny* aPtr)
+SendReceive(TInt aFunction,TAny* aPtr,TRequestStatus&amp; aStatus)
+SendReceive(TInt aFunction,TAny* aPtr)</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 functions: </p> </entry>
+<entry><codeblock id="GUID-0A9B8E34-708E-531F-B6C3-2AD2EF9A831B" xml:space="preserve">Send(TInt aFunction,const TIpcArgs&amp; aArgs)
+SendReceive(TInt aFunction,const TIpcArgs&amp; aArgs, TRequestStatus&amp; aStatus)
+SendReceive(TInt aFunction, const TIpcArgs&amp; aArgs)</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>These are functions for sending request messages to a server.
+Each of these messages can take up to <codeph>KMaxMessageArguments</codeph> arbitrary
+arguments (i.e. 4 arguments), and it is the packaging of these arguments which
+has been changed in the Version 2 APIs. </p> <p>The Version 1 APIs take a <codeph>TAny*</codeph>,
+which points to a C array containing a <codeph>KMaxMessageArguments</codeph> number
+of 32-bit quantities, usually <codeph>TAny</codeph> * or <codeph>TInt</codeph> types.
+This is an example Version 1 client function: </p> <codeblock id="GUID-5FF9D271-11EC-5144-A3ED-8D0B65DD43E1" xml:space="preserve">TInt RMySession::Write(TDes8C&amp; aDes, TInt aLength, TInt aMode)
+    {
+    TAny* args[KMaxMessageArguments];
+    args[0]=&amp;aDes;
+    args[1]=(TAny*)aLength;
+    args[2]=(TAny*)aMode;
+    return SendReceive(ERequestWrite, &amp;args[0]);
+    }</codeblock> <p>The Version 2 APIs package all of the arguments into
+a <codeph>TIpcArgs</codeph> object. This has templated constructors that take
+between 0 and 4 objects. The above example would be implemented like this
+using the Version 2 APIs: </p> <codeblock id="GUID-3AD69C4D-B00D-5384-9455-4529235ADC0B" xml:space="preserve">TInt RMySession::Write(TDes8&amp; aDes, TInt aLength, TInt aMode)
+    {
+    TIpcArgs args(&amp;aDes, aLength, aMode);
+    return SendReceive(ERequestWrite, args);
+    }</codeblock> <p>This could also be written in a shorter way: </p> <codeblock id="GUID-9F904E6F-C2BE-57C9-B287-F25D4C743B54" xml:space="preserve">TInt RMySession::Write(TDes8C&amp; aDes, TInt aLength, TInt aMode)
+    {
+    return SendReceive(ERequestWrite, TIpcArgs(&amp;aDes, aLength, aMode) );
+    }</codeblock> <p>The <codeph>TIpcArgs</codeph> object stores additional
+type information for each argument, and this is used to validate a server's
+usage of the arguments with the various <codeph>RMessagePtr2::Read()</codeph> and <codeph>RMessagePtr2::Write()</codeph> functions. </p> <p>If
+you need to explicitly send an empty or unused argument to a server, then
+use the <codeph>ENothing</codeph> enumeration. For example: </p> <codeblock id="GUID-1AFAE8D7-6EF1-531C-9605-249952DD3414" xml:space="preserve">TIpcArgs args(arg1, TIpcArgs::ENothing, arg3);</codeblock> <p>The
+second argument will have an undefined value when the server receives the
+message. </p> <p id="GUID-449D6257-772B-5E08-8E4B-40C11EAF8FBA"><b>RSubSessionBase::CreateSubSession()</b> </p> <table id="GUID-D11D839A-A6DC-56F6-A375-715C3C20DB58">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-C10014FE-A269-55B4-8D7C-AFA726A7468D" xml:space="preserve">CreateSubSession(RSessionBase&amp; aSession,TInt aFunction,const TAny* aPtr)</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-4EDF33FA-B99D-5089-AB2E-F6DD29814FA7" xml:space="preserve">CreateSubSession(RSessionBase, TInt aFunction, const TIpcArgs&amp; aArgs)</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The message arguments supplied to this function use a <codeph>TIpcArgs</codeph> object
+in Version 2. This is for the same reason as described in <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-8AF1B8B3-F598-5318-B9F9-5C74EEE8FCC9">RSessionBase::Send() &amp; RSessionBase::SendReceive()</xref>. </p> <p id="GUID-858A58D1-A539-55FB-855E-50B997BA9A41"><b>RSubSessionBase::Send()
+&amp; RSubSessionBase::SendReceive()</b> </p> <table id="GUID-3357BA2C-42CF-5590-94EE-0AC5C46C463B">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 functions: </p> </entry>
+<entry><codeblock id="GUID-4CCEAB86-160A-50DD-B2AD-63BAD6E865C7" xml:space="preserve">Send(TInt aFunction,const TAny* aPtr)
+SendReceive(TInt aFunction,const TAny* aPtr,TRequestStatus&amp;)
+SendReceive(TInt aFunction,const TAny* aPtr)</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 functions: </p> </entry>
+<entry><codeblock id="GUID-0E7FE44C-19E2-5F5C-98A7-04F9F7129C70" xml:space="preserve">Send(TInt aFunction,const TIpcArgs&amp; aArgs)
+SendReceive(TInt aFunction,const TIpcArgs&amp; aArgs, TRequestStatus&amp;)
+SendReceive(TInt aFunction,const TIpcArgs&amp; aArgs)</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The message arguments supplied to this function use a <codeph>TIpcArgs</codeph> object
+in Version 2. This is for the same reason as described in <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-8AF1B8B3-F598-5318-B9F9-5C74EEE8FCC9">RSessionBase::Send() &amp; RSessionBase::SendReceive()</xref>. </p> </section>
+<section id="GUID-450BE510-C3C9-5988-853B-1A03A84F0875"><title>Changes to
+the server interface</title> <p>This section details the changes required
+to migrate a server implementation to the Version 2 APIs. These APIs have,
+in nearly all cases, been implemented using the same class names as in Version
+1, but with the addition of the suffix '2'. For example, <codeph>CServer2</codeph> implements
+the Version 2 APIs corresponding to the Version 1 functionality provided by <codeph>CServer</codeph>. </p> <ul>
+<li id="GUID-F2E4AB18-F24A-5EEF-B5CC-F8FBF947DE4E"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-43CF1E50-8E60-5633-97B7-B030D1DEC182">CServer</xref>  </p> </li>
+<li id="GUID-7A262AF7-DBBD-5765-8179-F72E288304B2"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-B05AFD51-FF98-5972-9F40-107D8F8FEA5A">CServer::NewSessionL()</xref> </p> </li>
+<li id="GUID-1E1E1D8C-5BA5-5116-99B0-41453000DEE5"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-77592C37-AF3E-59DE-981E-AF23B442163B">CSharableSession</xref> </p> </li>
+<li id="GUID-C02F715E-6DF6-5AB0-A607-D740F32ADCEF"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-1616B87E-A4C3-509B-AF79-D4A964032BF1">CSharableSession::CreateL()</xref> </p> </li>
+<li id="GUID-3D09C142-DCF5-5FC6-99CC-A54D2FBECFBF"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-868E4703-DD82-5145-809D-91908237266C">CSharableSession::ResourceCountMarkEnd()</xref> </p> </li>
+<li id="GUID-38A6E9AB-4804-5852-907D-264F0CDA6D0B"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-54BF8797-7AE5-57E0-B5FD-C36C45D8CFFB">CSharableSession::RMessage()</xref> </p> </li>
+<li id="GUID-69440B22-6333-5783-A129-AFFFF7639068"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-F62D83DD-2A1C-5745-9813-E6646FF167BB">CSession</xref>  </p> </li>
+<li id="GUID-12DC701E-E313-5CFA-9113-077423AE1CFE"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-F0C1B0F6-BF72-5A52-84D1-E7E748D3E1A5">CSession::CSession()</xref> </p> </li>
+<li id="GUID-D1DE193D-A5E7-5A80-B317-2E657008B174"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-F2BB351E-73DA-522A-96ED-361F2EB1A379">RMessage</xref>  </p> </li>
+<li id="GUID-606187D7-226C-5919-86D9-7881540D30D6"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-B0431DFE-C0E5-5767-A299-564EC502B01E">RMessage::Client()</xref> </p> </li>
+<li id="GUID-06E2F69F-ABEE-5AB8-9751-45E285C3B494"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-4EEFEF47-D875-5C16-8836-98DD03C0A91D">RMessage::MessagePtr()</xref> </p> </li>
+<li id="GUID-73BB6C0D-FEE3-5C9A-B2E6-7BFCD2C59C1B"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-8754F52F-371C-546B-9290-B5369E915318">RMessage::descriptor access methods</xref>  </p> </li>
+<li id="GUID-CE72E73D-4BA9-566B-ABA0-6FC52F1E17EC"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-49869449-4440-5D20-97ED-32C14C5D1DAF">RMessagePtr</xref>  </p> </li>
+<li id="GUID-F91895A2-E211-56AF-9DA8-372D312E5E1B"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-A94A9960-319C-51B5-B693-2538D3985004">RThread</xref>  </p> </li>
+<li id="GUID-4C8AF2A5-72D9-5367-9A7E-3721CC94401F"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-9DA5C542-44B6-5277-837D-1D9150F43B10">RThread::RequestComplete()</xref> </p> </li>
+</ul> <p id="GUID-43CF1E50-8E60-5633-97B7-B030D1DEC182"><b>CServer</b> </p> <table id="GUID-BD8385C6-AEAA-5379-87F3-F3B3A9CA5397">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 class: </p> </entry>
+<entry><codeblock id="GUID-48ECE79F-22EA-5DE5-A52F-1F6689969E3C" xml:space="preserve">CServer</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 class: </p> </entry>
+<entry><codeblock id="GUID-F213E0FA-2708-5365-92F5-551D0A3B15FB" xml:space="preserve">CServer2</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Simply replace <codeph>CServer</codeph> with <codeph>CServer2</codeph>. </p> <p id="GUID-B05AFD51-FF98-5972-9F40-107D8F8FEA5A"><b>CServer::NewSessionL()</b> </p> <table id="GUID-1755D610-F3C5-50A8-9CE4-BE357883373B">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-0E800CBB-6A25-5338-940C-93FD1D5EAB12" xml:space="preserve">CSharableSession* CServer::NewSessionL(const TVersion&amp; aVersion) const</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-515A05BB-AB3C-5231-B32A-C8812A55B414" xml:space="preserve">CSession2* CServer2::NewSessionL(const TVersion&amp; aVersion,const RMessage2&amp; aMessage) const</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In Version 1, <codeph>CServer::NewSessionL()</codeph> is implemented
+by a class derived from <codeph>CServer</codeph>. In Version 2, your derived
+class uses <codeph>CServer2</codeph> as the base class. </p> <p>The <codeph>RMessage2</codeph> argument
+in Version 2 is the 'connect' message from the client. It has been added to
+allow implementations to check identity and security information about the
+new client. </p> <p>This message argument can be ignored when migrating code
+from the Version 1 APIs. </p> <p id="GUID-77592C37-AF3E-59DE-981E-AF23B442163B"><b>CSharableSession</b> </p> <table id="GUID-3FE15D11-51FA-5B24-B153-47EF5B20C925">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 class: </p> </entry>
+<entry><codeblock id="GUID-067FF488-35CE-585F-94FE-BF350B0DA2E1" xml:space="preserve">CSharableSession</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 class: </p> </entry>
+<entry><codeblock id="GUID-241A9E7D-2FC5-5202-A9F1-FC17D5CA8F38" xml:space="preserve">CSession2</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Simply replace <codeph>CSharableSession</codeph> with <codeph>CSession2</codeph>. </p> <p id="GUID-1616B87E-A4C3-509B-AF79-D4A964032BF1"><b>CSharableSession::CreateL()</b> </p> <table id="GUID-7805C54A-7534-5C20-BE26-09575363F9C2">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-D484349C-7B49-5DFE-8B0E-92AD511CC615" xml:space="preserve">void CSharableSession::CreateL(const CServer&amp; aServer)</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-7B9C9D6D-A20C-571A-A533-3A4359067B84" xml:space="preserve">void CSession2::CreateL()</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In Version 1, <codeph>CSharableSession::CreateL()</codeph> can
+be re-implemented by a class derived from <codeph>CSharableSession</codeph>.
+In Version 2, your derived class uses <codeph>CSession2</codeph> as the base
+class. </p> <p>The Version 2 <codeph>CreateL()</codeph> function has no arguments.
+If a derived session object overrides this function, then it will need modifying. </p> <p id="GUID-868E4703-DD82-5145-809D-91908237266C"><b>CSharableSession::ResourceCountMarkEnd()</b> </p> <table id="GUID-0E84FAD2-8007-5EA6-BCBB-659E67B0E94D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-52CC1805-86C8-5B3F-8AC2-D53020B93DDF" xml:space="preserve">void CSharableSession::ResourceCountMarkEnd()</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-037656C1-A71D-52BA-80BE-9647B12D2E6E" xml:space="preserve">void CSession2::ResourceCountMarkEnd(const RMessage2&amp; aMessage)</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In Version 2, the function requires a reference to the client
+message that requested the resource check. This message is used to panic the
+client if the check fails. </p> <p id="GUID-54BF8797-7AE5-57E0-B5FD-C36C45D8CFFB"><b>CSharableSession::RMessage()</b> </p> <table id="GUID-342A2BD3-8446-5437-B785-47BD8071B307">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-86D3741D-F30E-5A9A-A211-5A1C008B70B2" xml:space="preserve">const RMessage&amp; CSharableSession::Message() const</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><p>No equivalent function. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In Version 1. this function returns a reference to the last message
+delivered to the server. It is usually used by a session implementation to
+mean <i>the current message being processed by the session</i>. </p> <p>This
+function is not available in Version 2. When a session needs to manipulate
+a message delivered to it, it should use the <codeph>RMessage2</codeph> argument
+passed to <codeph>ServiceL()</codeph>, instead. Achieving this may require
+passing this reference as an argument between function calls, or if that is
+complex, then storing a reference to the message in the session object. </p> <p id="GUID-F62D83DD-2A1C-5745-9813-E6646FF167BB"><b>CSession</b> </p> <table id="GUID-DB57B8A0-66D6-59CF-8DF6-15DBF0EDE488">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 class: </p> </entry>
+<entry><codeblock id="GUID-44314564-FEE3-57B5-8878-A989125074EB" xml:space="preserve">CSession</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 class: </p> </entry>
+<entry><codeblock id="GUID-18D7BC87-81E7-54D0-A4E0-E4BDAB172FD8" xml:space="preserve">CSession2</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Replace <codeph>CSession</codeph> with <codeph>CSession2</codeph>. </p> <p>The
+changes applicable to <codeph>CSharableSession</codeph> derived classes also
+apply to <codeph>CSession</codeph> derived classes. See: </p> <ul>
+<li id="GUID-5C5C37DF-5D39-571C-8998-43A3ECB48DA2"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-1616B87E-A4C3-509B-AF79-D4A964032BF1">CSharableSession::CreateL()</xref> </p> </li>
+<li id="GUID-F40EFC23-D7A3-5814-8660-DEE9E9CE7762"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-868E4703-DD82-5145-809D-91908237266C">CSharableSession::ResourceCountMarkEnd()</xref> </p> </li>
+<li id="GUID-74ED0DB9-10A1-5616-9CFE-3FE2A37F1905"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-54BF8797-7AE5-57E0-B5FD-C36C45D8CFFB">CSharableSession::RMessage()</xref> </p> </li>
+</ul> <p>In addition, if you use the following <codeph>CSession</codeph> functions,
+then you will need to change your code to use the equivalent functions in
+the <codeph>RMessage2</codeph> and/or <codeph>RMessagePtr2</codeph> classes.
+See <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-07F7FFA6-D421-54E2-90F7-69F002702C46">Using
+RMessagePtr2</xref>. </p> <codeblock id="GUID-97AE07E6-AA05-59D2-9F6E-4D063C40BAD2" xml:space="preserve">void ReadL(const TAny* aPtr,TDes8&amp; aDes) const;
+void ReadL(const TAny* aPtr,TDes8&amp; aDes,TInt anOffset) const;
+void ReadL(const TAny* aPtr,TDes16&amp; aDes) const;
+void ReadL(const TAny* aPtr,TDes16&amp; aDes,TInt anOffset) const;
+void WriteL(const TAny* aPtr,const TDesC8&amp; aDes) const;
+void WriteL(const TAny* aPtr,const TDesC8&amp; aDes,TInt anOffset) const;
+void WriteL(const TAny* aPtr,const TDesC16&amp; aDes) const;
+void WriteL(const TAny* aPtr,const TDesC16&amp; aDes,TInt anOffset) const;
+void Panic(const TDesC&amp; aCategory,TInt aReason) const;
+void Kill(TInt aReason) const;
+void Terminate(TInt aReason) const;</codeblock> <p id="GUID-F0C1B0F6-BF72-5A52-84D1-E7E748D3E1A5"><b>CSession::CSession()</b> </p> <table id="GUID-8EE0CBE3-B5C4-54A4-9027-0DD37C00EDBD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-E445EA4B-C26A-5F19-BD11-8C420C005C9E" xml:space="preserve">CSession::CSession(RThread aClient)</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><p>No equivalent constructor. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The Version 1 <codeph>CSession</codeph> object stores a handle
+for the client thread. This should no longer be required after moving over
+to Version 2, and indeed, a constructor taking a thread handle as an argument
+is not supplied. </p> <p id="GUID-F2BB351E-73DA-522A-96ED-361F2EB1A379"><b>RMessage</b> </p> <table id="GUID-AE303124-F8E6-5814-ABF3-86CE010AEB0D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 class: </p> </entry>
+<entry><codeblock id="GUID-97B0E175-06DD-56D5-B72D-F248AA327E28" xml:space="preserve">RMessage</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 class: </p> </entry>
+<entry><codeblock id="GUID-F4DEABFB-9B23-5CA1-B8B4-2A83FA36F787" xml:space="preserve">RMessage2</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Replace <codeph>RMessage</codeph> with <codeph>RMessage2</codeph>. </p> <p>Note
+that <codeph>RMessage2</codeph> derives from <codeph>RMessagePtr2</codeph> and
+that most of the functions that were members of the Version 1 class <codeph>RMessage</codeph> are
+now implemented in the Version 2 class <codeph>RMessagePtr2</codeph>. </p> <p id="GUID-B0431DFE-C0E5-5767-A299-564EC502B01E"><b>RMessage::Client()</b> </p> <table id="GUID-D8B43D00-689F-5A63-B2D8-89D74E2D5ACE">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-2E080CC6-801E-5E91-9146-BE08338C7F2E" xml:space="preserve">const RThread&amp; RMessage::Client() const</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-6FC3BD1F-11BC-5309-AFE3-EC3043B162E6" xml:space="preserve">TInt RMessage2::Client(RThread&amp; aClient, TOwnerType aOwnerType=EOwnerProcess) const</codeblock> <p>(Note that the function is implemented by the <codeph>RMessagePtr2</codeph> base
+class.) </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In Version 1, the kernel maintains a handle to the client thread
+which can be extracted from a message by calling <codeph>RMessage::Client()</codeph>. </p> <p>In
+Version 2, this special handle is not present; instead, a function is provided
+that explicitly opens a handle on the client thread. This should be treated
+just like any other thread handle, i.e. <codeph>Close()</codeph> should be
+called on the handle when it is no longer needed. </p> <p>Here's an example
+of its usage: </p> <codeblock id="GUID-60EB6ACF-4A2D-5EEA-9008-265DDEF3E332" xml:space="preserve">void CMySession::ServiceL(const RMessage2&amp; aMessage)
+    {
+    ...
+    RThread clientThread;
+    // Open a handle on the client thread. Leaving if there is an error.
+    User::LeaveIfError(aMessage.Client(clientThread));
+    // Do something with the handle. (Print its ID in this example)
+    RDebug::Print(_L("Client Thread ID = %n"),clientThread.Id());
+    // Close handle
+    clientThread.Close();
+    ...
+    }</codeblock> <p> <b>You need to carefully examine all uses of RMessage::Client(),
+as most servers should not need to use this function after migrating to the
+Version 2 APIs. This is because the use of thread handles in a Version 1 server
+is likely to involve those functions that have been removed from the Version
+2 APIs.</b> See <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-A94A9960-319C-51B5-B693-2538D3985004">RThread</xref> for
+more information. </p> <p id="GUID-4EEFEF47-D875-5C16-8836-98DD03C0A91D"><b>RMessage::MessagePtr()</b> </p> <table id="GUID-C4466017-A740-505D-BFF2-90CCE1014878">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-D771DA22-E50F-532E-AE35-16FCFD1194B9" xml:space="preserve">const RMessagePtr RMessage::MessagePtr() const</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><p>No equivalent function. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <codeph>RMessage2</codeph> derives from <codeph>RMessagePtr2</codeph>,
+therefore an <codeph>RMessagePtr2</codeph> can be simply constructed or assigned
+directly from an <codeph>RMessage2</codeph>. There is no need for an explicit
+method of construction as was the case in the Version 1 APIs. </p> <p id="GUID-8754F52F-371C-546B-9290-B5369E915318"><b>RMessage::descriptor access
+methods</b> </p> <table id="GUID-E584453B-6BC7-56C1-9FDB-E531A3BC0A8C">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 functions: </p> </entry>
+<entry><codeblock id="GUID-9C3A91D8-FABE-5D70-91F0-0103FAD39E63" xml:space="preserve">void RMessage::ReadL(const TAny* aPtr,TDes8&amp; aDes) const;
+void RMessage::ReadL(const TAny* aPtr,TDes8&amp; aDes,TInt anOffset) const;
+void RMessage::ReadL(const TAny* aPtr,TDes16&amp; aDes) const;
+void RMessage::ReadL(const TAny* aPtr,TDes16&amp; aDes,TInt anOffset) const;
+void RMessage::WriteL(const TAny* aPtr,const TDesC8&amp; aDes) const;
+void RMessage::WriteL(const TAny* aPtr,const TDesC8&amp; aDes,TInt anOffset) const;
+void RMessage::WriteL(const TAny* aPtr,const TDesC16&amp; aDes) const;
+void RMessage::WriteL(const TAny* aPtr,const TDesC16&amp; aDes,TInt anOffset) const;</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 functions: </p> </entry>
+<entry><p>These functions are replaced by functions that take a message argument
+index instead of a <codeph>TAny*</codeph>. See <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-07F7FFA6-D421-54E2-90F7-69F002702C46">Using
+RMessagePtr2</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-49869449-4440-5D20-97ED-32C14C5D1DAF"><b>RMessagePtr</b> </p> <table id="GUID-D7F81784-48AD-5896-8DFF-F71CCE379E1D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 class: </p> </entry>
+<entry><codeblock id="GUID-BF9BEDE9-DB54-5CEB-B66E-4ACA8D97AA92" xml:space="preserve">RMessagePtr</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 class: </p> </entry>
+<entry><codeblock id="GUID-AD8BAE63-C125-5912-8B97-FAEE0F41CB58" xml:space="preserve">RMessagePtr2</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Replace <codeph>RMessagePtr</codeph> with <codeph>RMessagePtr2</codeph>. </p> <p>See <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-07F7FFA6-D421-54E2-90F7-69F002702C46">Using
+RMessagePtr2</xref>. </p> <p id="GUID-A94A9960-319C-51B5-B693-2538D3985004"><b>RThread</b> </p> <p>Calls
+to the following functions need to be changed to use the equivalent functions
+in a <codeph>RMessage2</codeph> /<codeph>RMessagePtr2</codeph> class. See <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-07F7FFA6-D421-54E2-90F7-69F002702C46">Using
+RMessagePtr2</xref>. </p> <codeblock id="GUID-589B9378-3AF1-5AFF-99A1-ADF44D7AB575" xml:space="preserve">TInt RThread::GetDesLength(const TAny* aPtr) const
+TInt RThread::GetDesMaxLength(const TAny* aPtr)
+void RThread::ReadL(const TAny* aPtr,TDes8&amp; aDes,TInt anOffset) const
+void RThread::ReadL(const TAny* aPtr,TDes16 &amp;aDes,TInt anOffset) const
+void RThread::WriteL(const TAny* aPtr,const TDesC8&amp; aDes,TInt anOffset) const
+void RThread::WriteL(const TAny* aPtr,const TDesC16&amp; aDes,TInt anOffset) const
+void RThread::Kill(TInt aReason)
+void RThread::Terminate(TInt aReason)
+void RThread::Panic(const TDesC&amp; aCategory,TInt aReason)</codeblock> <p id="GUID-9DA5C542-44B6-5277-837D-1D9150F43B10"><b>RThread::RequestComplete()</b> </p> <table id="GUID-CB602E73-0C6F-51DC-88BB-CC2D334008DD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Version 1 function: </p> </entry>
+<entry><codeblock id="GUID-0338C808-E3B3-567E-95AE-EA577E286A7B" xml:space="preserve">void RThread::RequestComplete(TRequestStatus*&amp; aStatus,TInt aReason) const</codeblock> </entry>
+</row>
+<row>
+<entry><p>Version 2 function: </p> </entry>
+<entry><codeblock id="GUID-6201C836-1533-5252-B68A-2AEE7CFA59D9" xml:space="preserve">void RMessagePtr2::Complete(TInt aReason) const</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>With the Version 2 APIs, the only way of signalling a client's
+request status in a different process is by completing a message sent by the
+client to the session. This means that a call to <codeph>RThread::RequestComplete()</codeph> should
+be replaced by a call to <codeph>RMessagePtr2::Complete()</codeph>. This requires
+some minor changes to the internal architecture of the server. </p> <p>An
+example of a call to <codeph>RThread::RequestComplete()</codeph> is where
+a server implements a kind of notification service, where a client asks to
+be signalled when some event or change of state occurs. </p> <p><b>A
+version 1 server implementation</b> </p> <p>In a Version 1 server implementation,
+the notification scheme is often implemented with code similar to this: </p> <p>Client
+function: </p> <codeblock id="GUID-97208CAC-12F1-5871-A7FE-C9CD465B2C5E" xml:space="preserve">TInt RMySession::NotifyChanges(TRequestStatus&amp; aStatus)
+    {
+    TAny* args[KMaxMessageArguments];
+    args[0]=&amp;aStatus;
+    return SendReceive(ERequestNotifyChanges, &amp;args[0]);
+    }</codeblock> <p>The server processes the request like this: </p> <codeblock id="GUID-34777BB5-E58B-5EA2-BF62-6CF96CBECA94" xml:space="preserve">void CMySession::ServiceL(const RMessage&amp; aMessage)
+    {
+    ...
+    // Get arguments needed to signal client
+    RThread clientThread = aMessage.Client();
+    TRequestStatus* clientStatus = (TRequestStatus*)aMessage.Ptr0();
+    // Make notify object
+    TMyNotifyChanges notifyObject(clientThread,clientStatus);
+    // Add notify object to list of all requests
+    TInt result=AddNotification(notifyObject);
+    // Complete request message
+    aMessage.Complete(result);
+    ...
+    }</codeblock> <p>When the event happens, clients are notified: </p> <codeblock id="GUID-E45B2795-EA7D-51EF-8892-0516E0BF53DB" xml:space="preserve">void CMySession::SignalNotifications(TInt aResult)
+    {
+    TMyNotifyChanges* notifyObject;
+    while(notifyObject=RemoveNotifyObject())
+        {
+        // Complete each NotifyChanges object
+        RThread clientThread = notifyObject-&gt;ClientThread();
+        TRequestStatus* clientStatus = notifyObject-&gt;ClientStatus();
+        clientThread.RequestComplete(clientStatus,aResult);
+        }
+    }</codeblock> <p><b>A
+version 2 server implementation</b> </p> <p>In a Version 2 server implementation,
+the notification scheme could be implemented using the Version 2 APIs like
+this: </p> <p>Client function: </p> <codeblock id="GUID-0FC0A82A-1C12-5455-BD31-1439C1BC89E2" xml:space="preserve">void RMySession::NotifyChanges(TRequestStatus&amp; aStatus)
+    {
+    TIpcArgs args();   // No arguments
+    // Use asynchronous SendReceive for request
+    SendReceive(ERequestNotifyChanges, args, aStatus);
+    // void return type because errors will be signalled through aStatus
+    }</codeblock> <p>The server processes the request like this: </p> <codeblock id="GUID-A27E21CB-C83E-5FA5-B06C-C7326B219314" xml:space="preserve">void CMySession::ServiceL(const RMessage2&amp; aMessage)
+    {
+    ...
+    RMessagePtr2 messagePtr = aMessage;
+    // Make notify object
+    TMyNotifyChanges notifyObject(messagePtr);
+    // Add notify object to list of all requests
+    TInt result=AddNotification(notifyObject);
+    // Complete request message (only if error)
+    if(result!=KErrNone)
+        {
+        aMessage.Complete(result);
+        }
+    ...
+    }</codeblock> <p>When the event happens, clients will be notified: </p> <codeblock id="GUID-3CFBE6E0-226F-5893-BB8B-978D739A2379" xml:space="preserve">void CMySession::SignalNotifications(TInt aResult)
+    {
+    TMyNotifyChanges* notifyObject;
+    while(notifyObject=RemoveNotifyObject())
+        {
+        // Complete each NotifyChanges object
+        RMessagePtr2 messagePtr = notifyObject-&gt;MessagePtr();
+        messagePtr.Complete(aResult)
+        }
+    }</codeblock> </section>
+<section id="GUID-07F7FFA6-D421-54E2-90F7-69F002702C46"><title>Using RMessagePtr2</title> <p>In
+Version 2, a server's interaction with its clients is channelled through <codeph>RMessagePtr2</codeph>,
+from which <codeph>RMessage2</codeph> is derived. An <codeph>RMessagePtr2</codeph> object
+acts as a handle to the message that the client has sent. The details of the
+original message are maintained within the kernel so that it can enforce correct
+use of the <codeph>RMessagePtr2</codeph> functions. </p> <p>The <codeph>RThread</codeph> and <codeph>RSession</codeph> functions
+for accessing descriptors, panicking the client and completing requests are
+not available in Version 2. Instead, this functionality is provided by <codeph>RMessagePtr2</codeph>.
+Because of this, server implementations may need to have a reference to the
+message available in many places. This may be done by passing such references
+as arguments between functions or by storing a reference in the session object
+processing the request. </p> <ul>
+<li id="GUID-522FC7B3-A4BA-5507-9BD3-05CBAE0DDED8"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-5D18833F-55D6-50C1-94DB-569F5CA30ECB">Descriptor access functions</xref>  </p> </li>
+<li id="GUID-D78F8B64-0E73-56EC-A40D-FC7E8FB1D722"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-4BCF7E62-3ACA-535C-B201-84E570F95DE1">RMessagePtr2::Complete()</xref> </p> </li>
+<li id="GUID-5DFDDBFB-41AE-5EBC-943A-528C1C42312F"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-460A24B8-6BA3-5059-BE3B-FF9287ACF965">RMessagePtr2::Kill()</xref> </p> </li>
+<li id="GUID-A21E615F-A19C-5673-A7A0-372309AC944F"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-FD417FCA-8EC2-568F-A848-1F5712828E7D">RMessagePtr2::Terminate()</xref> </p> </li>
+<li id="GUID-CC7E6514-B7C0-507D-902C-2FE3F8EE1D36"><p> <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-3005E91E-1930-5092-B89D-60772D5BD9CA">RMessagePtr2::Panic()</xref> </p> </li>
+</ul> <p id="GUID-5D18833F-55D6-50C1-94DB-569F5CA30ECB"><b>Descriptor access functions</b> </p> <codeblock id="GUID-959C66E7-9219-54F7-A104-374CCF8B9D5A" xml:space="preserve">TInt RMessagePtr2::GetDesLength(TInt aParam) const;
+TInt RMessagePtr2::GetDesMaxLength(TInt aParam) const;
+void RMessagePtr2::ReadL(TInt aParam,TDes8&amp; aDes,TInt aOffset=0) const;
+void RMessagePtr2::ReadL(TInt aParam,TDes16 &amp;aDes,TInt aOffset=0) const;
+void RMessagePtr2::WriteL(TInt aParam,const TDesC8&amp; aDes,TInt aOffset=0) const;
+void RMessagePtr2::WriteL(TInt aParam,const TDesC16&amp; aDes,TInt aOffset=0) const;
+TInt RMessagePtr2::Read(TInt aParam,TDes8&amp; aDes,TInt aOffset=0) const;
+TInt RMessagePtr2::Read(TInt aParam,TDes16 &amp;aDes,TInt aOffset=0) const;
+TInt RMessagePtr2::Write(TInt aParam,const TDesC8&amp; aDes,TInt aOffset=0) const;
+TInt RMessagePtr2::Write(TInt aParam,const TDesC16&amp; aDes,TInt aOffset=0) const</codeblock> <p>These
+are used in the same way as the equivalent <codeph>RThread</codeph> functions
+in the Version 1 APIs, except that instead of referring to the descriptor
+by an address in the client, the <codeph>aParam</codeph> argument is used.
+This is a value between 0 and 3 and indicates which of the four arguments
+in the original client message contains the pointer to the descriptor. </p> <p>For
+example, if a client sends a message using code like this </p> <codeblock id="GUID-CF62ABBF-824D-5E84-A39B-58068C85C38F" xml:space="preserve">TInt RMySession::Write(TDes8C&amp; aDes, TInt aLength)
+    {
+    return SendReceive(ERequestWrite, TIpcArgs(&amp;aDes, aLength) );
+    }</codeblock> <p>then the server would access <codeph>aDes</codeph> using
+an <codeph>aParam</codeph> value of 0. </p> <codeblock id="GUID-B608F856-8443-58DC-BBAE-D3253E911EA5" xml:space="preserve">void CMySession::ServiceL(const RMessage2&amp; aMessage)
+    {
+    ...
+    TInt length=aMessage.Int1();  // Get length from message param 1
+    TPtr8 buffer=MyNewBufferL(length);  // Make a new buffer for the data
+    aMessage.ReadL(0,buffer);  // Read data from client descriptor (param 0)
+    ...</codeblock> <p>Because <codeph>TIpcArgs</codeph> also stores type
+information about arguments, the kernel knows that argument 0 in the above
+message is an 8-bit constant descriptor. On Symbian OS platforms using the
+EKA2 kernel, this information is used to enforce correct usage of descriptor
+access methods; in this case, trying to write to <codeph>aDes</codeph>, or
+treating it as a 16-bit descriptor would fail with <codeph>KErrBadDescriptor</codeph>.
+(The latter case would have allowed access to data beyond the length of the
+8- bit descriptor. </p> <p>Note, both leaving and non-leaving versions of
+the <codeph>Read()</codeph> and <codeph>Write()</codeph> functions are provided.
+This allows the removal of some TRAP statements in code after migration to
+the Version 2 APIs. </p> <p id="GUID-4BCF7E62-3ACA-535C-B201-84E570F95DE1"><b>RMessagePtr2::Complete()</b> </p> <codeblock id="GUID-D0231B69-B33C-5EF5-89D3-0D332C840518" xml:space="preserve">void RMessagePtr2::Complete(TInt aReason) const;</codeblock> <p>This
+function signals completion of the client request, in the same way that <codeph>RMessage::Complete()</codeph> does
+in Version 1. After completion, the <codeph>iHandle</codeph> member is set
+to zero, and this means that <codeph>RMessagePtr2::Handle()</codeph> returns
+zero, and <codeph>RMessagePtr2::IsNull()</codeph> returns True. </p> <p>It
+is important to note that once a message has been completed, it cannot be
+used by the server, and any such attempt results in a KERN-EXEC 44 panic (Bad
+Message Handle). To avoid this situation, implementations may need to check <codeph>RMessagePtr2::IsNull()</codeph>,
+but be aware that any copies of the message made before completion will not
+have had their handles nulled. For this reason, it is best to avoid making
+copies of <codeph>RMessage2</codeph> or <codeph>RMessagePtr2</codeph> objects,
+this includes passing them as arguments to other functions 'by value'. Use
+references instead. </p> <p id="GUID-460A24B8-6BA3-5059-BE3B-FF9287ACF965"><b>RMessagePtr2::Kill()</b> </p> <codeblock id="GUID-E3A4E634-BCA5-5680-96F8-8D83429BB832" xml:space="preserve">void RMessagePtr2::Kill(TInt aReason) const;</codeblock> <p>This
+function is used in the same way as the equivalent <codeph>RMessage</codeph> or <codeph>RThread</codeph> functions
+in Version 1. Note that this function also performs the action of <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-4BCF7E62-3ACA-535C-B201-84E570F95DE1">RMessagePtr2::Complete()</xref>, so care must be taken that the message is
+not used again. </p> <p id="GUID-FD417FCA-8EC2-568F-A848-1F5712828E7D"><b>RMessagePtr2::Terminate()</b> </p> <codeblock id="GUID-69309A0B-36C9-5F5F-9C9B-DD0C318B35DB" xml:space="preserve">void RMessagePtr2::Terminate(TInt aReason) const;</codeblock> <p>This
+function is used in the same way as the equivalent <codeph>RMessage</codeph> or <codeph>RThread</codeph> functions
+in Version 1. Note that this function also performs the action of <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-4BCF7E62-3ACA-535C-B201-84E570F95DE1">RMessagePtr2::Complete()</xref>, so care must be taken that the message is
+not used again. </p> <p id="GUID-3005E91E-1930-5092-B89D-60772D5BD9CA"><b>RMessagePtr2::Panic()</b> </p> <codeblock id="GUID-F31F59D2-D286-57F6-A685-C255225B45C8" xml:space="preserve">void RMessagePtr2::Panic(const TDesC&amp; aCategory,TInt aReason) const;</codeblock> <p>This
+function is used in the same way as the equivalent <codeph>RMessage</codeph> or <codeph>RThread</codeph> functions
+in Version 1. Note that this function also performs the action of <xref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita#GUID-0A332D6E-E712-5186-8CD0-D5022FA54052/GUID-4BCF7E62-3ACA-535C-B201-84E570F95DE1">RMessagePtr2::Complete()</xref>, so care must be taken that the message is
+not used again. </p> </section>
+<section id="GUID-1ABF5DC6-A957-5623-93AB-CD7631A36A33"><title>Migration quick
+reference</title> <p>This is a quick reference to show you which Version 2
+APIs you should use to replace the Version 1 APIs. </p> <table id="GUID-0DAF9004-8A70-5F88-899D-996CC96090CC">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Version 1 (where used)</b>  </p> </entry>
+<entry><p> <b>Version 2 (replace with...)</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CSharableSession</codeph>  </p> </entry>
+<entry><p> <codeph>CSession2</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CSession</codeph>  </p> </entry>
+<entry><p> <codeph>CSession2</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CServer</codeph>  </p> </entry>
+<entry><p> <codeph>CServer2</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RMessagePtr</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RMessage</codeph>  </p> </entry>
+<entry><p> <codeph>RMessage2</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RServer</codeph>  </p> </entry>
+<entry><p> <codeph>RServer2</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::GetDesLength(const TAny* aPtr)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::GetDesLength(TInt aParam)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::GetDesMaxLength(const TAny* aPtr)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::GetDesMaxLength(TInt aParam)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::ReadL(const TAny* aPtr,TDes8&amp; aDes,TInt  
+                anOffset)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::ReadL(TInt aParam,TDes8&amp; aDes,TInt  
+                aOffset=0)</codeph>  </p> <p>Note: use of <codeph>RThread::ReadL()</codeph> enclosed
+in a TRAP statement can be replaced by the non-leaving <codeph>RMessagePtr2::Read()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::ReadL(const TAny* aPtr,TDes16&amp; aDes,TInt 
+                 anOffset) </codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::ReadL(TInt aParam,TDes16&amp; aDes,TInt 
+                 aOffset=0)</codeph>  </p> <p>Note: use of <codeph>RThread::ReadL()</codeph> enclosed
+in a TRAP statement can be replaced by the non-leaving <codeph>RMessagePtr2::Read()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::WriteL(const TAny* aPtr,const TDesC8&amp;    
+              aDes,TInt anOffset) </codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::WriteL(TInt aParam,const TDesC8&amp;    
+              aDes,TInt aOffset=0)</codeph>  </p> <p>Note: use of <codeph>RThread::WriteL()</codeph> enclosed
+in a TRAP statement can be replaced by the non-leaving <codeph>RMessagePtr2::Write()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::WriteL(const TAny* aPtr,const TDesC16&amp;   
+               aDes,TInt anOffset)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::WriteL(TInt aParam,const TDesC16&amp;   
+               aDes,TInt aOffset=0)</codeph>  </p> <p>Note: use of <codeph>RThread::WriteL()</codeph> enclosed
+in a TRAP statement can be replaced by the non-leaving <codeph>RMessagePtr2::Write()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::RequestComplete(TRequestStatus*&amp; aStatus,TInt
+                  aReason)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::Complete(TInt aReason)</codeph>  </p> <p>Note:
+the only way of signalling the client thread is by completing a message which
+the client sent to the session. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::Kill(TInt aReason)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::Kill(TInt aReason)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::Terminate(TInt aReason)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::Terminate(TInt aReason)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RThread::Panic(const TDesC&amp; aCategory,TInt        
+          aReason)</codeph>  </p> </entry>
+<entry><p> <codeph>RMessagePtr2::Panic(const TDesC&amp; aCategory,TInt   
+               aReason)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSessionBase::Share()</codeph>  </p> <p>or </p> <p> <codeph>RSessionBase::Share(EExplicitAttach)</codeph>  </p> <p>or </p> <p> <codeph>RSessionBase::Share(EAutoAttach)</codeph>  </p> </entry>
+<entry><p> <codeph>RSessionBase::ShareAuto()</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSessionBase::Attach()</codeph>  </p> </entry>
+<entry><p>Not required in Version 2. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSessionBase::Send(TInt aFunction,TAny* aPtr)</codeph>  </p> </entry>
+<entry><p> <codeph>RSessionBase::Send(TInt aFunction,const TIpcArgs&amp; 
+                 aArgs)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSessionBase::SendReceive(TInt aFunction,TAny*        
+          aPtr,TRequestStatus&amp; aStatus)</codeph>  </p> </entry>
+<entry><p> <codeph>RSessionBase::SendReceive(TInt aFunction,const        
+          TIpcArgs&amp; aArgs, TRequestStatus&amp; aStatus)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSessionBase::SendReceive(TInt aFunction,TAny* aPtr)</codeph> </p> </entry>
+<entry><p> <codeph>RSessionBase::SendReceive(TInt aFunction, const       
+           TIpcArgs&amp; aArgs)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSubSessionBase::CreateSubSession(RSessionBase&amp;   
+               aSession,TInt aFunction,const TAny* aPtr)</codeph>  </p> </entry>
+<entry><p> <codeph>RSubSessionBase::CreateSubSession(RSessionBase, TInt  
+                aFunction, const TIpcArgs&amp; aArgs);</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSubSessionBase::Send(TInt aFunction,const TAny*      
+            aPtr)</codeph>  </p> </entry>
+<entry><p> <codeph>RSubSessionBase::Send(TInt aFunction,const TIpcArgs&amp;
+                  aArgs)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSubSessionBase::SendReceive(TInt aFunction,const TAny*
+                  aPtr,TRequestStatus&amp;)</codeph>  </p> </entry>
+<entry><p> <codeph>RSubSessionBase::SendReceive(TInt aFunction,const     
+             TIpcArgs&amp; aArgs, TRequestStatus&amp;)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RSubSessionBase::SendReceive(TInt aFunction,const TAny*
+                  aPtr)</codeph>  </p> </entry>
+<entry><p> <codeph>RSubSessionBase::SendReceive(TInt aFunction,const     
+             TIpcArgs&amp; aArgs)</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566"><title>How to Configure Multithreaded C32 Serial Comms: Tutorial</title><abstract><shortdesc>This page describes how a device manufacturer can configure the grouping of CSYs into various threads. </shortdesc> <p>The Serial Server on Symbian OS supports the use of multiple threads in order to separate the serial plug-in CSY modules. The first section provides a brief migration guide, while the subsequent sections provide more detail on the specific parameters and behaviour, and other advanced information. </p> </abstract><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-4109EB99-A9A8-597B-BF42-89CF6AD7DB73"><title>Introduction</title> <p>The Comms Configurator (<codeph>c32start</codeph>) uses a configuration Comms Module Ini file (.CMI) to load Comms Provider Modules (CPMs) into the Rootserver process. Each CMI file represents exactly one CPM loaded inside Rootserver. CPMs are the name given to threads running inside the Rootserver process, since they extend the thread concept by adding a wrapper of extra information and functionality used to manage the threads. </p> <p>The Comms Configurator searches for the CMI files in the <codeph>\private\101f7988</codeph> folders by searching from Y: to A: and then Z:. The folder <filepath>101f7988</filepath> is the secure area for the Comms Configurator process and its name derives from the UID for the process - as specified by the requirements for <xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-03558B99-2B98-579C-AD59-CF66BD98F69F">Data Caging</xref>. If the files are found in the ROM (usually Z:) they are <i>not</i> then copied to any other drive but only read in-place. Thus, a later configuration of CMI files installed on another media/drive other than the ROM drive can be used to override the original ROM configuration. The Configurator reads these files only once during boot so any further changes will not take effect until the next system boot. </p> </section> <section><title>Quick Migration Guide</title> <p>This section provides a brief description of how to migrate a configuration from the old single-threaded C32 Serial Server to the new multi-threaded server. As there are numerous potential configurations with the multi-threaded server, this migration guide should be used as a first step to getting any old settings migrated over and thus allowing the server to continue working after an upgrade of Symbian OS. </p> <p>Once migrated, the other sections in this article provide further useful information regarding configuring CMI files for better performance in line with the requirements of the particular device. </p> <p>The quick migration involves two steps: </p> <ul><li id="GUID-07F882AE-797F-5326-A4C3-DC596F3BC888"><p>apply any special configuration used with the previous single-threaded C32 Serial Server to the new configuration files supplied with the multi-threaded server </p> </li> <li id="GUID-423E4236-73EA-51CA-B9E3-03761078DF86"><p>adjust the default set of configuration files supplied with the multi-threaded server to suit the particular serial plug-ins in use </p> </li> </ul> <p>These two steps are explained in more detail in the following sections. </p> <p><b>Migrating settings</b> </p> <p>The original single-threaded Serial Server was controlled by a single configuration file called (by default) <filepath>c32.cmi</filepath>, located in <filepath>\private\101f7988</filepath>. A default version of this file shipped with Symbian OS, although a device manufacturer could change this file. The default version of this file was: </p> <codeblock id="GUID-897E8787-4E34-5D80-B04F-85E94EE5B570" xml:space="preserve">## Comms Configurator config file for the C32 server
+
+[Loader]
+Name=CCommServer
+FileName=c32.dll
+ThreadFunctionOrdinal=87
+IsServer=1
+IsSticky=1
+Priority=EPriorityMuchMore
+StackSize=8192
+ScaledStartupState=0x1085
+HeapOption=EDefaultHeap
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCritical=1</codeblock> <p>The multi-threaded C32 Serial Server (C32MT) ships by default with five configuration files, since by default it supports five different threads. These configuration files are: </p> <codeblock id="GUID-AE8071D9-1ECD-58EF-AC33-713B42EDB7F8" xml:space="preserve">\private\101f7988\c32.cmi
+\private\101f7988\c32_first.cmi
+\private\101f7988\c32_second.cmi
+\private\101f7988\c32_third.cmi
+\private\101f7988\c32_fourth.cmi</codeblock> <p>They are an extended version of the original CMI file that shipped with the single-threaded C32. For example, the first of these configuration files (c32.cmi) looks like: </p> <codeblock id="GUID-6B6FF51B-A9CC-5D9D-99B0-A98BA1634FA2" xml:space="preserve"># c32_main - Comms Configurator config file forming part of the Default C32 server configuration
+
+[Loader]
+Name=C32_Main
+FileName=c32.dll
+ThreadFunctionOrdinal=87
+IsSticky=0
+IsServer=1
+Priority=EPriorityMuchMore
+StackSize=16384
+ScaledStartupState=0x1085
+HeapOption=ENewHeap
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCritical=1
+Group=C32SerComms
+OnDemand=0
+# Don't check heap if shutting down with EImmediate (KCF_ModuleImmediateNoCheck)
+ControlFlags=4
+[IniData]
+Role=Dealer
+WorkerId=0</codeblock> <p>The first step in migrating is to ensure that any unique configuration used with the old server is migrated across to the new server. The particular parameters that should be considered in this procedure are: </p> <codeblock id="GUID-8E2C24C0-8770-57CD-8064-5D85F4096DAE" xml:space="preserve">Priority
+StackSize
+ScaledStartupState
+MinHeapSize
+MaxHeapSize
+SystemCritical</codeblock> <p>These parameters would need migrating to each of the five new CMI files. The following notes relate to deliberate changes to parameter values between the single and multi-threaded servers: </p> <dl><dlentry><dt><b>HeapOption</b> </dt> <dd><p>The value of <codeph>HeapOption</codeph> is different between the old and new files - this was made to aid in debugging the new multi-threaded server by separating its memory from the rest of the comms system. It can be safely changed back if desired. </p> </dd> </dlentry> <dlentry><dt><b>IsSticky</b> </dt> <dd><p>The value of <codeph>IsSticky</codeph> has changed from 1 to 0. The <codeph>IsSticky</codeph> parameter is normally unused in a production system for the Serial Server since the server runs as a <codeph>SystemCritical</codeph> thread and thus cannot be shutdown and, if it panics, the phone would reboot. The change was made to facilitate testing, since in a test environment the Serial Server can be shutdown, and to facilitate this the value of <codeph>IsSticky</codeph> must be set to 0. </p> </dd> </dlentry> <dlentry><dt><b>StackSize</b> </dt> <dd><p>The value of <codeph>StackSize</codeph> has increased from 8192 for the single-threaded C32 to 16384 for C32MT. This change is due to the increased stack usage of the multi-threaded C32. The value used - 16384 - was based on the value proven to work with the similar ESock multi-threaded server. It is possible that this value could be trimmed back towards 8192 to save memory depending on the CSYs being used, since the ECUART CSY has been tested to work with the multi-threaded C32 server with a stack size of just 8192, and CSYs are usually much less memory-demanding than the protocols being used in ESock. </p> </dd> </dlentry> </dl> <p><b>Assigning CSY plug-ins to threads</b> </p> <p>The second part of migration to the new multi-threaded serial server is to alter the default set of CMI files to match the plug-ins (CSYs) in use and the desired operation. This step is not mandatory since by default C32 will load all plug-ins correctly. But, it is worth considering at this stage whether the default configuration needs some changes to match the requirements of the device. </p> <p>There are three broad configurations available, which are defined by whether one or more CSYs are run in the main thread for efficiency. The default configuration supplied with Symbian OS runs all the CSYs outside the main thread since this ensures that no CSY can deny service to the main server thread. It is expected that this configuration will suit most situations, but for more information on the other configurations, see the later section <xref href="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita#GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566/GUID-5A5FEA44-F43B-51BE-9736-7FC76901DB02">Typical Thread Configuration Examples</xref>. </p> <p>As mentioned earlier, the default configuration uses five threads. The description for each of these is given in the following table: </p> <table id="GUID-0F03B8CD-0142-595A-874F-A35C80F8C991"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry>Worker ID</entry> <entry>Summary</entry> <entry>CMI file</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Main thread </p> </entry> <entry><p> <filepath>c32.cmi</filepath>  </p> </entry> <entry><p>Runs the serial server to service client requests and pass on to the CSYs, possibly in other threads. This thread is expected to be started at device boot. </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>USB thread </p> </entry> <entry><p> <filepath>c32_first.cmi</filepath>  </p> </entry> <entry><p>Runs the USB CSY (ECACM). This is separated from all other threads so that USB can run at high-speed uninterrupted. This thread is only started when a client requires a USB connection. </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Baseband thread </p> </entry> <entry><p> <filepath>c32_second.cmi</filepath>  </p> </entry> <entry><p>Runs the RS232 CSY (ECUART). This thread runs the ECUART plug-in separately since ECUART is sometimes used to connect to the baseband. If a different CSY is being used to connect to the baseband, it can be added to this CMI file and ECUART either moved to another thread, or removed altogether. As the baseband requires a high speed and fast response time, it is recommended that the baseband CSY should be run in this thread to separate it from all other CSYs. This thread is only started when a client requires the CSY. </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Bluetooth and IrDA thread </p> </entry> <entry><p> <filepath>c32_third.cmi</filepath>  </p> </entry> <entry><p>Runs the Bluetooth and IrDA CSYs. These CSYs usually do not have high requirements for throughput or response and thus can run together. This thread is only started when one of its CSYs is required by a client. </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Default thread </p> </entry> <entry><p> <filepath>c32_fourth.cmi</filepath>  </p> </entry> <entry><p>Runs any unlisted CSYs. If C32 is asked to load a CSY for which no thread has been identified in a CMI file, then C32 will load the CSY in this thread. This thread is only started when required. </p> </entry> </row> </tbody> </tgroup> </table> <p>For a particular device, the above configuration may need to be changed to address the requirements of the device. Typical adjustments to consider are: </p> <ol id="GUID-FB351652-6FBA-5176-9C51-AAC40752C333"><li id="GUID-EA20A49C-FB32-5BC6-B47A-24F0487F65FD"><p>Change the CSY name for Worker ID 2 to match the baseband CSY, and then either move ECUART to Worker ID 3 or into its own new thread, or don't add it to any CMI file if the device doesn't use the ECUART CSY </p> </li> <li id="GUID-E08331AD-4AEA-5CAA-8C28-8B3001E1FAEC"><p>Add any extra low-performance CSYs to Worker ID 3 so that they run together with Bluetooth and IrDA. Extra CSYs could be run in a new separate thread but there is a memory cost for each new thread added so this should be considered (8K is typically allocated to a new thread, see <xref href="GUID-49379616-C235-598D-AE43-668998AD072B.dita#GUID-49379616-C235-598D-AE43-668998AD072B/GUID-5A573FEB-A274-5C0F-A6B6-87D5BAD8A21C">Process, thread, stack and memory useful information</xref>, and there is a limit to the number of threads with their own heaps that can be started in the Root Server). </p> </li> <li id="GUID-45D296E1-654C-5181-A38E-4D0AFC23A4A6"><p>For any extra high-performance CSYs, create a new CMI file so that these can run separately from the other CSYs. See <xref href="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita#GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566/GUID-C8EA2AA7-28CB-5F89-A0CC-CF20EF21AE6D">Creating A New CMI</xref> below </p> </li> <li id="GUID-BC119A2C-445A-5EF7-92DF-17D7E28A1A3B"><p>Prioritise important threads (or reduce the priority of lesser threads). Candidates for increased priority would be the Main, USB and Baseband threads. Care should be taken when adjusting thread priorities since these affect the whole Comms system - more guidance on setting thread priorities is available in the document <i>How To Assign Thread Priorities</i> elsewhere in this developer library. </p> </li> </ol> <p>When making these adjustments note that there is no cost involved with mentioning CSYs that may never be loaded. </p> </section> <section><title>Overview of the C32 multi-threaded CMI files</title> <p>C32 Multithreading uses the same Dealer/Player terminology/concepts as Esock Multithreading. The <b>Dealer</b> is the main C32 Comms Provider Module (CPM) which runs the C32 server; a Player is a C32 CPM that only runs one or more CSYs and takes the client requests from the Dealer module. </p> <p>For example: </p> <p> <b>C32.cmi</b>  </p> <codeblock id="GUID-569AA81E-8689-5B15-A2C8-24E9163398A7" xml:space="preserve">[Loader]
+Name=C32_Main
+FileName=c32.dll
+ThreadFunctionOrdinal=87
+IsServer=1
+IsSticky=0
+ThreadPriority=EPriorityMuchMore
+StackSize=16384
+ScaledStartupState=0x1085
+HeapOption=ENewHeap
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCritical=1
+Group=C32SerComms
+OnDemand=0
+[IniData]
+Role=Dealer
+WorkerId=0
+</codeblock> <p>The <xref href="GUID-83297976-F146-3B82-BE1C-C1E8F8B9DEE5.dita"><apiname>ThreadFunctionOrdinal</apiname></xref> identifier must refer to the correct ordinal number of the main thread function for the DLL file containing the Comms Provider Module. Due to binary compatibility considerations this must be placed at ordinal "87" in the export table. A Comms Provider Module/CPM is essentially a thread managed by the Comms Configurator. </p> <p>The description of each of the settings under <codeph>[Loader]</codeph> that are specific to C32 and the settings under <codeph>[IniData]</codeph> are described in further detail below. </p> <p>As well as the C32 server thread, any other CPMs that C32 needs must also have their own CMI file. One such example file is: </p> <p> <b>C32_Default.cmi</b>  </p> <codeblock id="GUID-7E488DEF-535C-5C13-9DEA-246B11DF39E4" xml:space="preserve">[Loader]
+Name=C32_Default
+FileName=c32.dll
+ThreadFunctionOrdinal=87
+IsServer=1
+IsSticky=0
+ThreadPriority=EPriorityMuchMore
+StackSize=16384
+ScaledStartupState=0x3040
+HeapOption=EShareHeap
+SharedHeapName=C32_Main
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCritical=0
+Group=C32SerComms
+OnDemand=1
+Binding0=C32_Default:4,C32_Main:0,ECustom,42,42
+[IniData]
+Role=Player
+WorkerId=4
+CSYList=*</codeblock> </section> <section id="GUID-AEEFD832-108E-5CC2-AD5D-5CF6414CA720"><title>C32 CMI Parameter Descriptions</title> <p>This section gives details about the parameters available in the CMI file relevant to C32. The CMI file has two sections - a <codeph>[Loader]</codeph> section and an <codeph>[IniData]</codeph> section. The <codeph>[Loader]</codeph> section parameters are defined for the CPM, and the ones relevant to C32MT are detailed below. The <codeph>[IniData]</codeph> section contains parameters specific to a CPM. If further information on the format of the CMI file itself or the <codeph>[Loader]</codeph> parameters is required, please refer to the document <i>Comms Process Starter/Config Design Document</i> section <i>3.1.1</i>. This document is located in this developer library as well as in the <filepath>comms-infras\rootserver\Documentation</filepath> folder. </p> <p><b>A note on CMI processing</b> </p> <p>No mechanism is provided to change CMI files at run-time, since they are designed to be configured for inclusion in a ROM and then not changed through the life of a phone product. After-market changing of the configuration is supported via the installation of CMI files in a non-ROM folder which then take precedence over the ROM files when the device is next rebooted. Thus, any CMI configuration file problems should become apparent during the early stages of phone development. </p> <p>A bad configuration will panic in debug builds to signal the user to change/edit the <codeph>.CMI</codeph> files in order to make a desired and correct configuration. In <codeph>urel</codeph> builds a bad configuration may survive (unless the <codeph>.CMI</codeph> files are very malformed) but at a cost that all CSYs are loaded in the Dealer Thread (<codeph>Workerid=0</codeph>) making it in effect a single threaded system. </p> <p>The panic numbers used by the C32 Serial Server for internal server faults are defined in the enum <xref href="GUID-FED70722-0258-3B96-A941-1F7C13699002.dita"><apiname>TECommFault</apiname></xref>. </p> <p><b> CMI [Loader] Parameters relevant to C32</b> </p> <p><b>OnDemand </b> </p> <p>This indicates whether the CPM is started as part of the Configurator’s CPM load on boot ("0"), or whether the CPM should only be loaded via an explicit request to Configurator ("1"). The default value is "0". The <codeph>OnDemand</codeph> parameter for the main thread can only be "0" if mentioned. For Player modules the setting can be either "0" or "1". If a Player thread is not marked as <codeph>OnDemand=1</codeph> then it will load during the boot sequence. If the main thread (<codeph>Workerid=0</codeph>) is marked as <codeph>OnDemand=1</codeph>, then this is a configuration error and C32 can never be started (although in theory this is possible - see <xref href="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita#GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566/GUID-6350761E-18F6-53B7-98F8-C6E2EB5DA942">Footnote 1</xref> below). Players marked to load at boot up do not load any CSYs implicitly as part of the boot load. </p> <p>All Player modules for C32 must be marked with <codeph>OnDemand=1</codeph> since the C32 Dealer must instigate a Player load. If a Player thread is not marked as <codeph>OnDemand=0</codeph> then it will load during the boot sequence. </p> <p><b>Group </b> </p> <p>All CMI files for C32 must map to the same Group ID. The actual Group ID for the C32 group is <codeph>C32SerComms</codeph>. CMI files for C32 Players that do not have a Group member will never be loaded by C32 (assuming <codeph>OnDemand=1</codeph> is set for the Player threads). </p> <p>If there is no group defined in any CMI files and therefore no <b>[IniData]</b> is processed for any of them, then C32 will simply assign all CSYs to load into the Dealer thread. </p> <p> <b>Name</b>  </p> <p>This parameter is used to identify the CPM to the Configurator and is used to name the thread for the kernel. It is stored by C32 for all CMI files in the C32SerComms group for use when requesting Configurator to load or unload a CPM. As this value is easily configurable and is used to name the thread to the kernel, software should not rely on the name of any C32 thread being any particular string. Prior to the multithreaded C32 (C32MT), the C32 thread was conventionally known as <codeph>CCommServer</codeph>. However, with C32 now potentially having a multiplicity of threads, other schemes are probable such as <codeph>C32_Main, C32_USB and C32_BaseBand</codeph> or <codeph>C32_BT-IR and
+             C32_Default</codeph>  </p> <p>The Dealer and all Players in the C32 group can have any name since C32 will find them as part of the same group (see Group above). The names in the C32 group should all be unique – if the same name is found twice or more C32 will panic in debug builds but attempt to recover in release builds by only processing the first that it finds. This is still a highly risky situation since if C32 needs to start that module in order to accommodate a CSY, Configurator may load the wrong CMI file when creating the new thread. </p> <p>When introducing new CMIs, care should be taken to change the <codeph>BindingN</codeph> line in CMI to reflect the new modulename and WorkerId. </p> <p><b>CMI [IniData] Parameters relevant to C32</b> </p> <p>In the case where C32 has a CMI file that loads the C32 binary during boot up, but the CMI file does not have an <codeph>[IniData]</codeph> section, C32 will assume that this CMI is for the main thread and that the CMI is a pre-C32MT file. However, for C32MT, this is an undesired configuration and should be rectified. Old versions of <codeph>c32.cmi</codeph> are only kept in the source distribution to support backwards compatibility and should not be used in a system which has C32MT present. In such backwards-compatible modes of C32MT, the main thread will host a Player in case no other CMI files are present. </p> <p> <b>Role</b>  </p> <p>The value for this parameter should be either <codeph>Dealer</codeph> or <codeph>Player</codeph>. Only one <codeph>Dealer</codeph> can exist in a C32 system, but there can be any number of <codeph>Player</codeph> s. If there are two or more <codeph>Dealer</codeph> CMI files, the <codeph>ScaledStartupState</codeph> determines which Dealer CMI starts first. If both the CMIs have the same <codeph>ScaledStartupState</codeph>, then they are loaded in alphabetical order. Configurator is guaranteed to start a C: CMI file before the Z: one. If they both have the same module name then it is safe since Rootserver will refuse the load of the second module with the same name failing with <codeph>KErrAlreadyExists</codeph>. However, if the module name is different Rootserver will load them both and C32 will detect that an instance of itself is already running and exit the second thread. Only the IniData for the CMI file that was used to start the Dealer will be processed, with all other Dealer CMI files being ignored. If the main thread is to include a co-resident Player, the iniData should include the <codeph>CSYList</codeph> key-value pair discussed below. </p> <p> <b>WorkerId</b>  </p> <p>The ID number of this thread inside the C32 system. The Id numbers should be a positive integer or "0" in the case of the main thread (In case CMI file of <codeph>WorkerId=0</codeph> has anything else than Dealer as role, it is overridden with Role=Dealer, logging a warning). The system expects subsequent ID numbers to be incremented up from the main thread's ID. Where a CMI file in the C32 group does not have a WorkerId, it is a bad configuration and will panic in debug builds. Allocating the next higher number is not possible as this Player needs to be bound with the Dealer using the <codeph>BindingN</codeph> line which accepts <codeph>WorkerId</codeph> parameter. In case of duplicate <codeph>WorkerId</codeph>, a panic occurs as the second module cannot be bound to the Dealer as the binding for the main thread has already been done. </p> <p> <b>CSYList</b>  </p> <p>A comma-separated list of the filenames of the CSYs this thread will own. All CMIs in the C32 group must have a CSY list, except for the Dealer which can optionally have a <codeph>CSYList</codeph>. A Player with no <codeph>CSYList</codeph> represents a bad configuration as a Player’s sole purpose is to load CSYs. Such a Player with no CSY list will never be started by C32. A Dealer with no CSY list will act purely as a Dealer. A Dealer with a CSY list becomes a Dealer with a co-resident Player inside its thread. <codeph>CSYList</codeph> param determines if the CPM will host a Player or not. </p> <p>If a CSY appears in more than one CMI file, then the CSY will be assigned to one thread, but not necessarily that with the least number of CSYs in it. </p> <p>The comma-separated list should not have any spaces or other white space in it, and each CSY name must be an alphanumeric string. The CSY name is not case sensitive, and should not have the <codeph>.CSY</codeph> extension. C32 does not check whether the supplied CSY names actually exist as binaries, since it only refers to the list when a client asks to load a particular CSY. </p> <p>If an asterix ("*") appears as a CSY name in the CSY list, this is inferred by C32 as meaning that this thread is also to be used to load any CSYs not mentioned in any CMI file, and is known as the <i>default</i> thread. If two different CMI files in the C32 group have the wildcard then only one CMI file will be marked as being the host for unknown CSYs – it is not defined as to which one. If no CMI file has a wildcard then C32 will assign the wildcard to an unused Player thread so that all unlisted CSYs are isolated into their own thread. This is overridden if the only CMI file is for the Dealer, in which case the Dealer will load all CSYs into its own co-resident Player, since the Dealer cannot request the Configurator to start a module for which there is not an associated CMI file. </p> </section> <section id="GUID-8E49AE8A-E940-52F3-ADA5-0332DA1D58D2"><title>Important Notes</title> <p>Field names in the <codeph>[IniData]</codeph> are case sensitive, but fields values are not. </p> <p>The <codeph>BindingN</codeph> line is responsible for binding the Player CPM with Dealer. If you leave out the <codeph>BindingN</codeph> line from the CMI then the new Player will in essence remain as an island and no requests for loading or any subsequent operation can be passed to it from Dealer. This will not result in a panic. </p> <p>The <codeph>C32_Main.cmi</codeph> doesn’t have a <codeph>BindingN</codeph> line since it is a Dealer and thus does not need to bind to another Dealer. </p> </section> <section id="GUID-C8EA2AA7-28CB-5F89-A0CC-CF20EF21AE6D"><title>Creating A New CMI</title> <p>To create a new CMI file, copy an existing Player CMI file, rename it and change the necessary parameters as detailed below. The examples below assume that the base CMI used was the supplied <codeph>c32_fourth.cmi</codeph>. The following parameters need to be changed to make a valid configuration file: </p> <p>In <b>[Loader] </b> section are: </p> <ul><li id="GUID-6C3E5830-9A7A-5D84-B4A5-FCA7FD66E31A"><p> <b>Name</b> - This is the module name of CPM. </p> </li> <li id="GUID-D5BDBEAC-A417-5D39-BB85-4E5AB9DDD36A"><p> <b>BindingN</b> - BindingN line is changed to reflect the new module name and <codeph>WorkerId</codeph> value </p> </li> </ul> <p>In<b> [IniData] </b> section: </p> <ul><li id="GUID-3855C593-297D-5360-9926-0A1BFFAC3B12"><p> <b>WorkerId</b> - This value is numeric and must be unique </p> </li> <li id="GUID-EA091203-C0E9-5303-9FD5-924F3C67FB55"><p> <b>CSYList</b> - Contains CSYs which you want to load in this new CPM, separated by commas, no white spaces allowed. </p> </li> </ul> <p>Since the additional CMI being added is a <codeph>Player</codeph>, the Role field remains the same and it can not be changed to <codeph>Dealer</codeph> as the CPM with <codeph>WorkerId=0</codeph> is the one and only Dealer in the C32MT. </p> <codeblock id="GUID-8722A0B7-FB88-5516-846B-BCC4E11D0EEE" xml:space="preserve">[Loader]
+# Change the Name value to your CSY name
+Name=C32_Default  // </codeblock> <p>Change the <codeph>Name</codeph> value to the name of your CSY, e.g. </p> <codeblock id="GUID-EDCEA3C0-D4E6-5075-9FDE-65425194D6E5" xml:space="preserve">Name=C32_MyCSYs</codeblock> <codeblock id="GUID-B7D87670-C791-533F-A8F1-6135050387E2" xml:space="preserve">FileName=c32.dll
+ThreadFunctionOrdinal=87
+ThreadPriority=EPriorityMuchMore
+StackSize=16384
+ScaledStartupState=0x3040
+HeapOption=ENewHeap
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCritical=1
+Group=C32SerComms
+OnDemand=1</codeblock> <p>Change the BindingN line to refer to your CSY, for example change from </p> <codeblock id="GUID-81BEFC33-67EE-5547-8C7C-E473F902F145" xml:space="preserve"># Change the BindingN line to refer to your CSYs
+Binding0=C32_Default:4,C32_Main:0,ECustom,42,42</codeblock> <p>to </p> <codeblock id="GUID-2B7683AF-E01F-5C7A-896B-E3E4F37FAF23" xml:space="preserve">Binding0=C32_MyCSYs:5,C32_Main:0,ECustom,42,42</codeblock> <p>And in the <b>[IniData]</b> section: </p> <codeblock id="GUID-A0AA8BA4-AA45-5FAE-95D4-24764695F04B" xml:space="preserve">[IniData]
+# Make sure Role is set to "Player"
+Role=Player</codeblock> <p>Change the <b>WorkerId</b>, for example from <codeph>WorkerId=4</codeph> to </p> <codeblock id="GUID-D334F3C3-38B7-578F-8E9C-2C4FBBB05C06" xml:space="preserve">WorkerId=5</codeblock> <p>and change the <b>CSYList</b> to specify your CSYs, e.g. change "CSYList=XX,YY,zz" to </p> <codeblock id="GUID-9AAAD2C9-A0D0-5733-8EFC-1CB848DB8785" xml:space="preserve">CSYList=MyCSY1,MyCSY2</codeblock> </section> <section id="GUID-5A5FEA44-F43B-51BE-9736-7FC76901DB02"><title>Typical Thread Configuration Examples</title> <p>This section describes the three broad configurations for threading available for the C32 Serial Server. Each has different potential effects on the performance of C32. </p> <p>The three broad configurations available, with a summary of their costs and benefits, are detailed in the following table: </p> <table id="GUID-5552EBC6-3387-59E6-85AC-9585F31C6ABB"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry/><entry>Configuration</entry> <entry>Advantages</entry> <entry>Disadvantages</entry> </row> </thead> <tbody><row><entry><p>1</p> </entry> <entry><p>Run all CSYs outside the main thread <b>[Default supplied CMI set]</b>  </p> </entry> <entry><ul><li id="GUID-3BD88C6F-9C4E-5001-B7D1-2A9DC3BBE649"><p>Some CSYs can be promoted ahead of others using thread priorities </p> </li> <li id="GUID-1C1C0DF2-5EED-5AE4-820A-B3020AF66AE6"><p>Main thread cannot ever stall when any CSY stalls </p> </li> <li id="GUID-F4331549-9283-5E78-AEE1-32C4CF0F11E3"><p>Stackable CSYs are possible: a CSY can connect to another CSY through the C32 API as long as both are in different threads </p> </li> </ul> </entry> <entry><ul><li id="GUID-898ED70D-CCB3-5D56-A9A9-49C19BC3C5DC"><p>Operations on CSYs are a bit slower due to increased overhead of inter-thread communication </p> </li> <li id="GUID-DA120612-E01B-51A4-8B77-F582D8170318"><p>Complex to debug </p> </li> </ul> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Run some CSYs in the main thread </p> </entry> <entry><ul><li id="GUID-70EFC61A-5D52-55D1-B364-096F84D0EBDF"><p>CSYs in the main thread avoid the overhead of inter-thread communication </p> </li> <li id="GUID-63D0CE88-5B6D-5787-A2B4-936B48D16FB2"><p>Some CSYs can be promoted ahead of others using thread priorities </p> </li> <li id="GUID-71641750-5882-53FC-9B40-0421050E5355"><p>Main thread cannot stall when a CSY in a separate thread stalls </p> </li> <li id="GUID-88EEE21E-42CF-5401-B985-427E7B3641E9"><p>Stackable CSYs are possible: a CSY can connect to another CSY through the C32 API as long as both are in different threads </p> </li> </ul> </entry> <entry><ul><li id="GUID-70FDC4C2-FACB-592F-AA96-9C3F980FA842"><p>If any CSY in the main thread stalls, the whole server stalls </p> </li> <li id="GUID-E5F158D5-4720-5869-9B67-7FC3001B75F2"><p>No means to prioritise one CSY ahead of others (without changing the CSY code) </p> </li> <li id="GUID-A773FE9F-AC77-59B0-AECB-FB5C8174583C"><p>Operations on CSYs outside the main thread are a bit slower due to the increased overhead of inter-thread communication </p> </li> <li id="GUID-C0505A00-C777-582A-8B98-C1E53AC094B7"><p>Complex to debug </p> </li> </ul> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Run all CSYs in the main thread <b>[Default configuration when any CMI files are corrupt]</b>  </p> </entry> <entry><ul><li id="GUID-537C35E5-041E-5BDC-9298-26F89CE5E51F"><p>Simplest to debug since no inter-thread communication </p> </li> <li id="GUID-EFDEEA79-10D8-5FBF-B630-268F14362C0D"><p>All CSYs avoid the overhead of inter-thread communication </p> </li> </ul> </entry> <entry><ul><li id="GUID-F0C2BD50-CFAD-5E99-AFDF-65BF96B5BB67"><p>If any CSY stalls, the whole server stalls </p> </li> <li id="GUID-83EDBE8F-17BD-514A-B0D5-5A6020A8DF56"><p>No means to prioritise one CSY ahead of others (without changing the CSY code) </p> </li> <li id="GUID-BE4157B4-0D0D-5520-8E85-A6C4755410B3"><p>No stackable CSYs are possible </p> </li> </ul> </entry> </row> </tbody> </tgroup> </table> <p>The default set of CMI files supplied with Symbian OS is based on the first broad configuration since it was decided that the small cost of running all CSYs outside the main thread is justified by the increased reliability to the whole C32 system of ensuring no CSY can deny service to the C32 server. Each of these configurations is explained in more detail below. </p> <fig id="GUID-BC275667-5D19-56CA-ABD9-68265A852282"><title>
+             Figure 1 - No CSYs in main thread: RootServer with 4 C32 CPMs 
+          </title> <image href="GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e102675_href.png" placement="inline"/></fig> <p>Referring to Figure 1, the following can be observed: </p> <ol id="GUID-DA3BC841-1BE9-5483-8EC0-7BA479D85C14"><li id="GUID-EAD7752C-A094-51CA-903C-52DCF2AB5353"><p>The Main Thread has <codeph>WorkerId=0</codeph>, Role as Dealer and is configured to load no CSY </p> </li> <li id="GUID-CE4A7176-2BD6-5149-B24A-45DCD0945C76"><p>The Player Thread 1 has <codeph>WorkerId=1</codeph>, Role as Player and is configured to load ECACM CSY </p> </li> <li id="GUID-A327174B-CA1A-5AD8-92E9-9895363D7851"><p>The Player Thread 2 has <codeph>WorkerId=2</codeph>, Role as Player and is configured to load ECUART CSY </p> </li> <li id="GUID-6015DA12-C259-5B9F-9D72-CFF86AA91435"><p>The Player Thread 3 has <codeph>WorkerId=3</codeph>, Role as Player and is configured to load <i>unlisted</i> csy. What unlisted csy means here is that apart from ECACM and ECUART, if any new csy is to be loaded, it will get loaded in this thread. </p> </li> </ol> <p>The <b>[IniData]</b> section for the above CPMs would look like: </p> <codeblock id="GUID-CE1D7541-5103-5E9B-A20A-11A6C17ABFCA" xml:space="preserve">[IniData]
+Role=Dealer
+WorkerId=0
+</codeblock> <codeblock id="GUID-51C4FC4E-1F85-59D3-9F9D-FC6868042363" xml:space="preserve">[IniData]
+Role=Player
+WorkerId=1
+CSYList=ECACM
+</codeblock> <codeblock id="GUID-F21BBEC3-482A-59C4-BBE7-9B304F07EDB3" xml:space="preserve">[IniData]
+Role=Player
+WorkerId=2
+CSYList=ECUART
+</codeblock> <codeblock id="GUID-74C70C5D-2B37-5AF8-B703-4072610C6C3E" xml:space="preserve">[IniData]
+Role=Player
+WorkerId=3
+CSYList=*
+</codeblock> <fig id="GUID-92921AF5-D056-52A9-B10E-80760DE9CD2F"><title>
+             Figure 2 - All CSYs in main thread: RootServer with single C32 CPM 
+          </title> <image href="GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e102739_href.png" placement="inline"/></fig> <p>In Figure 2 the CPM loads any CSYs, and so should contain <codeph>CSYList</codeph> tag in the IniData section. </p> <p>The Main Thread has <codeph>WorkerId=0</codeph>, Role as Dealer and is configured to load <i>any</i> CSY. In this configuration since it is a single thread, all the CSYs will be loaded in the same thread. </p> <p>The <b>[IniData]</b> section for above CPM would look like: </p> <codeblock id="GUID-BCDEB67F-85D0-560A-AC5B-7D05B807B857" xml:space="preserve">[IniData]
+Role=Dealer
+WorkerId=0
+CSYList=*
+</codeblock> <fig id="GUID-8F658644-2E07-53A3-A003-C1F015E1396B"><title>
+                Figure 3 - Some CSYs in main thread: RootServer with 3 CPMs 
+             </title> <image href="GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e102769_href.png" placement="inline"/></fig> <p>From Figure 3, the following can be observed. </p> <ol id="GUID-E945237B-900A-588A-A3FF-C0B75A43BB4A"><li id="GUID-0A3CEB52-2C0F-5BB9-A271-756F9F374111"><p>The Main Thread has <codeph>WorkerId=0</codeph>, Role as Dealer and is configured to load HSDPA csy </p> </li> <li id="GUID-34EF4E58-A6DB-5EFB-8C13-EE8064A7E3F7"><p>The Player Thread 1 has <codeph>WorkerId=1</codeph>, Role as Player and is configured to load ECACM csy </p> </li> <li id="GUID-BFF9FDF7-C714-5D0A-B8B3-DC4CCB2EC8FB"><p>The Player Thread 2 has <codeph>WorkerId=2</codeph>, Role as Player and is configured to load an unlisted csy </p> </li> </ol> <p>The IniData section for above CPMs would look like: </p> <codeblock id="GUID-E5A77235-60E5-526D-A95C-750FCDCA96BE" xml:space="preserve">[IniData]
+Role=Dealer
+WorkerId=0
+CSYList=HSDPA
+</codeblock> <codeblock id="GUID-ED3EE5DE-65C4-50CB-AEA1-59D89FBC0EF3" xml:space="preserve">[IniData]
+Role=Player
+WorkerId=1
+CSYList=ECACM</codeblock> <codeblock id="GUID-00F4F479-B153-5F05-8E13-D2276D70B605" xml:space="preserve">[IniData]
+Role=Player
+WorkerId=2
+CSYList=*</codeblock> </section> <section id="GUID-6350761E-18F6-53B7-98F8-C6E2EB5DA942"><title>Footnotes</title> <dl><dlentry><dt><b>Footnote 1</b> </dt> <dd><p>In theory the C32 main thread (<codeph>Workerid=0</codeph>) could be marked as on-demand and started by the first client to connect to it. This might be useful since it would save device boot time for a device that does not need serial comms as part of boot up. The process would require the client to connect to Configurator and load the C32 main module explicitly. For this to work the main Module’s name would have to be fixed (the reference system uses “<codeph>C32_Main</codeph> ”) so that the client can identify it to Configurator - which is not a big problem, and the client would need the appropriate capabilities (also not a big problem as the client could well be inside Rootserver too). The other problem is that making it on-demand requires that it is still started by a priviledged process before any unpriviledged process attempts to use the C32 API (since this will fail unless no CSYs require any capabilities). Therefore, for on-demand main thread-loading to work, intimate details about the specific configuration of CSYs for a device and their potential clients would be needed. </p> </dd> </dlentry> </dl> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4" xml:lang="en"><title>How
+to use the SIP Codec API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides the information about the protocol and error handling
+related to the SIP Codec API. </p>
+<section id="GUID-6ED042DA-40C0-5FC2-931B-2B9A0B3D7182"><title>Protocol</title><p>The
+following illustration shows the steps for creating a CSIPContactHeader instance.
+  </p><fig id="GUID-6E4ECB08-CAED-4062-BCF3-AE2210317B52">
+<title>Creating a Contact Header </title>
+<image href="GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e315155_href.png" placement="inline"/>
+</fig></section>
+<section id="GUID-1E82D5DB-9B70-5C2F-A2E8-B777727F8468"><title>Error handling</title><p>If
+an error occurs during a synchronous operation initiated by the client, the
+function that is called exits with the correct error code.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0A9D11FB-6A24-5115-A39C-23FDE864DF6A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0A9D11FB-6A24-5115-A39C-23FDE864DF6A" xml:lang="en"><title>How
+to complete requests</title><shortdesc>This document describes how to complete a request for a service.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If you are a service provider, you can complete a request using either <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-2F263A1B-BB71-396C-8C45-B0D062327FFA"><apiname>User::RequestComplete()</apiname></xref>,
+or <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-34A51DFD-CE91-356E-96B1-008121C4E73A"><apiname>RThread::RequestComplete()</apiname></xref>, passing the request status
+object and the service provider's return code, a value other than <codeph>KRequestPending</codeph>.
+This results in the active object's <codeph>iStatus</codeph> member being
+set to the return code value and a signal that the request is complete. </p>
+<p>The current thread calls <codeph>User::RequestComplete()</codeph> to complete
+a request that originated in the current thread. </p>
+<p>The current thread calls <codeph>RThread::RequestComplete()</codeph> to
+complete a request that originated in a different thread, i.e. the thread
+represented by the <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> object. Note that in this case,
+the target thread <i>must</i> be in the same process as the current thread.
+Any attempt to complete a request on a thread in another process is a security
+violation, resulting in a KERN-EXEC 46 panic. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0AA6186C-DD10-5811-940F-D26A7D34C66F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0AA6186C-DD10-5811-940F-D26A7D34C66F"><title>Text and Text Attributes Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Stores editable text and the formatting attributes which are applied to it.</p> <p>The API does not store the layout information needed to display the text. This is done by a separate API called Text Views.</p> <p>Text content is a string of Unicode characters separated into words and paragraphs by space characters and paragraph delimiters. The text is stored in the order used to input the text. A wide range of paragraph and character formatting attributes is supported, including paragraph alignment and character font, etc.</p> </section> <section><title>Architectural relationships</title> <p>Text and Text Attributes uses the Text Views API to format the text for display. Text Views objects contain the layout information, but not the text itself or the attributes. These are obtained via an abstract interface class.</p> <p>Text and Text Attributes classes are used for implementing editable text windows. UI-level objects like editable text windows typically own an editable text object to hold the rich text and attributes, and a Text Views object to store the layout and draw the text.</p> </section> <section><title>Description</title> <p>The API has five key concepts: global text and rich text, document position and range, setting/sensing formatting, format layering and the <xref href="GUID-51B3C34F-2F8E-3181-93C4-00F073B1207C.dita"><apiname>MLayDoc</apiname></xref> interface.</p> <p><b>Global text and rich text</b> </p> <p>Global text is text in which formatting is applied globally, so that the same character and paragraph formatting applies throughout the document. Rich text is text with rich formatting, so that formatting can apply to any portion of the document. Paragraph styles may be applied to rich text but not to global text, and pictures may be inserted into rich text but not global text.</p> <p>The interface to global text is provided by <xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita"><apiname>CGlobalText</apiname></xref>. The interface to rich text is provided by <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref>.</p> <p><b>Document position and range</b> </p> <p>When editing an editable text object, many functions require a start position and a length to be specified. These values indicate the range of characters to which the function should apply. The range usually has to be valid: that is, it must not extend beyond the bounds of the document. Document position zero is before the first character in the document. If the document contains n characters, position n is after the last character. Valid document positions are therefore between zero and the length of the document, inclusive.</p> <p><b>Setting/sensing formatting</b> </p> <p>When setting or sensing a text object's formatting, a mask and a container are specified. The container has data members which store the value for every format attribute. The mask indicates which attributes are relevant to the operation.</p> <p>The paragraph and character formatting containers are provided by <xref href="GUID-2F795E02-0704-39AE-8EC6-06CB5D5D670F.dita"><apiname>CParaFormat</apiname></xref> and <xref href="GUID-3518B92C-D1BD-36D1-B447-728A1052292F.dita"><apiname>TCharFormat</apiname></xref> respectively, and the corresponding masks are provided by <xref href="GUID-C4220B5C-1037-342E-A409-B62F0429E7F2.dita"><apiname>TParaFormatMask</apiname></xref> and by <xref href="GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D.dita"><apiname>TCharFormatMask</apiname></xref>.</p> <p><b>Format layering</b> </p> <p>Formatting is stored in format layers. Format layers are owned by the text object. A format layer may own a pointer to another format layer. This pointer is called a based-on link. The effective formatting of a text object is the set of attributes specified in its two format layers, as well as any attributes inherited from the layers' chain of based-on links. Note that in rich text, additional formatting may be applied on top of the two owned format layers. This additional formatting is referred to as "specific formatting".</p> <p>The <xref href="GUID-7BEFAAD5-15C3-35A0-BDEF-BC56380D6CE5.dita"><apiname>CCharFormatLayer</apiname></xref> class represents the character format layer and the <xref href="GUID-C5A6B3D4-1BDE-35B4-AC6B-DF517A4D4147.dita"><apiname>CParaFormatLayer</apiname></xref> class represents the paragraph format layer.</p> <p><b>The MLayDoc interface</b> </p> <p>The text and its attributes are stored separately from the layout information. Text Views objects (which calculate and store the layout information) access the text and its attributes via an abstract interface class called <codeph>MLayDoc</codeph>. This class provides all the information needed by the text layout engine to lay out the text for display. By viewing the text object purely in terms of the <xref href="GUID-51B3C34F-2F8E-3181-93C4-00F073B1207C.dita"><apiname>MLayDoc</apiname></xref> interface, the layout engine is insulated from any editable text implementation issues.</p> <p>The <xref href="GUID-51B3C34F-2F8E-3181-93C4-00F073B1207C.dita"><apiname>MLayDoc</apiname></xref> interface is implemented by classes <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> and <xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita"><apiname>CGlobalText</apiname></xref>.</p> </section> <section><title>See also</title> <p><xref href="GUID-3E7193C2-143E-58EF-B21F-9C0E1C65226F.dita">Text Views Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0AB9B221-38AE-576E-AC5A-C4C106E3D93B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0AB9B221-38AE-576E-AC5A-C4C106E3D93B"><title> Graphics Device Interface (GDI) Component Overview</title><shortdesc>The GDI component provides abstract base classes that represent the graphics device and the context through which graphics and text can be drawn to it. The context maintains 'settings', such as the pen and brush colors and styles in use, and provides a rich API of drawing commands for creating graphical and textual output. The component also provides abstract device-independent APIs for a variety of graphics-related functions, such as for handling fonts, pictures and printers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The API's embedding functionality provides a concept of a picture object, independent of whether it is a bitmap or drawing, and support for storing and restoring pictures. In device families that support document embedding, as defined in the Application Architecture Framework API, a picture is used to draw a representation of the embedded document's content (called a glass door). Rich text, as defined in the Text And Text Attributes API, can also contain pictures. </p> <p>The API also provides printing to printer devices. Printing is treated as drawing to a graphics context, with the printer represented by a specialized graphics device. An application that supports printing should store its view data in (device-independent) twips, only converting into pixels when drawing to either the screen or a printer. Symbian can print to a range of printers, and has a framework for providing printer drivers. This API allows the installed drivers to be listed, and the appropriate one selected. UI variants may provide stock printing dialogs for users to initiate and control print jobs. It is normal for applications that provide printing to supply print job setup (from the Print Framework API) and their printing implementation (the band printing interface described below) to these dialogs, which can then use them as appropriate. </p> <section><title>Architectural relationships</title> <p>The Font and Bitmaps Server provides bitmap storage and bitmap fonts. The Window Server Client Side API extends the API's classes in turn for drawing in windows (the normal case). For some applications, this polymorphism can be important, as it allows shared code for screen drawing and printing. </p> <p>Most drawing takes place within a control, as defined in the UI Control Framework. That API provides support functions for using graphics contexts. </p> </section> <section><title>Description</title> <p><b>Graphics device </b> </p> <p>A graphics device represents the medium being drawn to. It is the provider of graphics contexts through which drawing is done. </p> <p>The base class for graphics devices is <xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref>. Concrete devices implement derived classes. </p> <p><b>Bitmap graphics device </b> </p> <p>This specializes a graphics device (<xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref>) for bitmaps graphics. </p> <p>The abstract interface is defined by <codeph>CBitmapDevice</codeph>. The <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window Server Client-Side API</xref> provides one implementation, <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref>, for screen drawing. The <xref href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita">BitGDI component</xref> provides the <xref href="GUID-71D27EBD-26B8-3D51-9798-1EAD461BCBCF.dita"><apiname>CFbsBitmapDevice</apiname></xref> implementation for drawing to in-memory bitmaps and the <xref href="GUID-B229156F-2344-3F46-8542-AC65882D80DE.dita"><apiname>CFbsScreenDevice</apiname></xref> implementation, which is used (rarely) to access the screen directly, without the mediation of the Window Server. </p> <p><b>Graphics context </b> </p> <p>A graphics context provides a large number of drawing operations, with some state settings defining how the drawing is performed. The settings are: </p> <ul><li id="GUID-0E356741-F861-5FB5-9559-5FDE99C46601"><p>a pen, for drawing shape outlines and text, with color, line size and style settings </p> </li> <li id="GUID-B8E6303A-E98B-58A0-8E4B-CF5DD8B30F0D"><p>a brush, for filling areas, with color, style and origin settings </p> </li> <li id="GUID-F60A8400-DA9F-5AC5-9B58-17AFBE31394E"><p>for text, a current font and justification mode </p> </li> <li id="GUID-0205A7FA-CA6F-5861-A8B3-998629F7F273"><p>a drawing mode, which controls how colors drawn interact with the screen color </p> </li> <li id="GUID-27534CB0-7321-55AB-A5F9-91141F8A78D4"><p>a co-ordinate origin, typically the top left corner of the screen </p> </li> <li id="GUID-A8292E3D-A086-5715-848C-D6CA70403B83"><p>an internal drawing position, for relative drawing operations </p> </li> </ul> <p>Operations include drawing shapes (points, lines, polylines, arcs, rectangles, polygons, ellipses, rounded rectangles and pie slices), text, and bitmaps. </p> <p>The base class for graphics contexts is <xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref>. Concrete devices provide derived classes that can provide additional operations suitable to the device. </p> <p><b>Bitmap graphics context </b> </p> <p>This specializes a graphics context (<xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref>) for bitmaps graphics. It provides additional operations for clearing and copying rectangular areas, and bitmap block transfer. </p> <p>The abstract interface is defined by <xref href="GUID-FC746873-0570-3900-AD89-42B205FDC0D3.dita"><apiname>CBitmapContext</apiname></xref>. The <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window Server Client-Side API</xref> provides one implementation, <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>, used for screen drawing. The <xref href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita">BitGDI component</xref> provides another implementation, <xref href="GUID-4A501086-7EFF-376D-8901-6D9B2EB4EFF2.dita"><apiname>CFbsBitGc</apiname></xref> for drawing to in-memory bitmaps. </p> <p><b>Basic geometry classes </b> </p> <p>Point: a pair of (x,y) co-ordinates. It is provided by <xref href="GUID-339EC4C5-89DC-3972-9579-6DD38D418317.dita"><apiname>TPoint</apiname></xref>. </p> <p>Size: a width and height. It is provided by <xref href="GUID-938244B2-5E1A-39F7-8ACA-E6DE4C44A313.dita"><apiname>TSize</apiname></xref>. </p> <p>Rectangle: described by the co-ordinates of its top-left and bottom-right corners, or by its top-left hand corner and its size. It is provided by <xref href="GUID-101762DC-E498-3325-88AB-B0FF17DC62B6.dita"><apiname>TRect</apiname></xref>. </p> <p>Region: defines an area made up of a collection of rectangles. They are handled by a family of classes derived from <xref href="GUID-740A218E-76FB-31BF-BD91-BA6780AC4DEE.dita"><apiname>TRegion</apiname></xref>. </p> <p><b>Color </b> </p> <p>A color is specified by a 24-bit color value. The system then maps these values into device-level values. The color class is <xref href="GUID-F84C7F40-6DEB-39D1-B172-CB0CC3918E27.dita"><apiname>TRgb</apiname></xref>. </p> <p><b>Units conversion and zooming </b> </p> <p>Graphics code can be written in a device-independent way by handling lengths/positions using twips (1/1440th inch), and only converting into pixels when actually drawing. Graphic devices implement a twips/pixels mapping interface for this conversion. The interface is defined by <xref href="GUID-4791F2C1-C351-3824-8784-3161F5B65DCA.dita"><apiname>MGraphicsDeviceMap</apiname></xref>. </p> <p>You might want drawing code to draw at different possible levels of magnification (zoom). In that case, the mapping is performed by a <xref href="GUID-DDE4C9C0-7218-385E-B239-0DEFDE19FCCC.dita"><apiname>TZoomFactor</apiname></xref>, which also implements <xref href="GUID-4791F2C1-C351-3824-8784-3161F5B65DCA.dita"><apiname>MGraphicsDeviceMap</apiname></xref>. </p> <p><b>Font specification </b> </p> <p>A font specification is used to specify a desired font in device-independent terms. This can include the typeface, font style (posture, weight, and position), and height. </p> <p>It is provided by <xref href="GUID-052E4F6B-71C5-304C-B387-07A2F6F9900B.dita"><apiname>TFontSpec</apiname></xref>. The font style is provided by <xref href="GUID-E35C6B6B-CF60-3B91-A174-1B09077CBD76.dita"><apiname>TFontStyle</apiname></xref>. </p> <p><b>Device-independent font interface </b> </p> <p>Applications obtain font objects from a graphics device by providing a font specification. The interface is device-independent, and is implemented by providers of fonts for particular devices. </p> <p>The interface is <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref>. Obtained fonts can be cached for quick retrieval through <xref href="GUID-B68B7BC8-CFBA-32F4-A0BE-8378F0C105DA.dita"><apiname>CFontCache</apiname></xref>. </p> <p><b>Typeface </b> </p> <p>A typeface is a group of related fonts of various sizes that share the same typeface name and typeface attributes (e.g. proportional/non-proportional, serif/sans-serif). </p> <p>Typeface information is encapsulated in a <xref href="GUID-BC6BFC0A-B748-3545-8A14-D79F98338CBA.dita"><apiname>TTypefaceSupport</apiname></xref>, including a <xref href="GUID-91F0F645-F565-3B8A-8FB1-FF4751AB0928.dita"><apiname>TTypeface</apiname></xref> class member. </p> <p><b>Typeface store </b> </p> <p>A typeface store allows you to discover the typefaces provided by a graphics device. </p> <p>A device-independent interface is defined by <xref href="GUID-0CA79D2D-827F-3A20-A10C-1CC9C576E803.dita"><apiname>CTypefaceStore</apiname></xref>. The <xref href="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita">Font and Bitmap Server component</xref> provides bitmap fonts and implements this interface for bitmap devices. </p> <p><b>Picture </b> </p> <p>The picture interface defines a drawable item that can be stored and restored, and possibly cropped and scaled. Derived classes implement the interface for particular types of picture. </p> <p>The interface is provided by <xref href="GUID-829D57CD-9659-347B-AAE9-5F0A0ECD555C.dita"><apiname>CPicture</apiname></xref>. The capabilities class, <xref href="GUID-912E395D-934D-39B0-89D7-520BB8A04424.dita"><apiname>TPictureCapability</apiname></xref>, encapsulates whether the picture supports cropping and scaling. </p> <p><b>Picture header </b> </p> <p>When a picture is stored, a picture header must be as well. The header identifies (through a UID) which concrete picture class should be used to restore the picture's data, and how to access the picture's data (through a swizzle). </p> <p>The picture header is provided by <xref href="GUID-B92F8FF8-6940-389D-96F4-2271ECCF15D1.dita"><apiname>TPictureHeader</apiname></xref>. </p> <p><b>Picture factory </b> </p> <p>The picture factory is an abstract interface for instantiating and restoring new <xref href="GUID-829D57CD-9659-347B-AAE9-5F0A0ECD555C.dita"><apiname>CPicture</apiname></xref> -derived objects. A concrete derived class creates pictures of one or more specific types. Supplied with information from a picture header, a picture factory creates an instance of the appropriate picture class, and tells the instance to InternalizeL the picture data from the store. </p> <p>The interface is provided by <xref href="GUID-F991FEDD-DF42-390F-97E4-4204EB05AAB8.dita"><apiname>MPictureFactory</apiname></xref>. </p> <p><b>Printer model list </b> </p> <p>The printer model list gives the possible printers, obtained from the installed printer drivers. To create a printer device, a particular model must be chosen. </p> <p>The printer model list is provided by <xref href="GUID-9A34F369-5968-376F-A758-4ED310FD84E9.dita"><apiname>CPrinterModelList</apiname></xref>. An entry in the list is a <xref href="GUID-5283437A-25EA-330E-9B93-F4288907A6E2.dita"><apiname>TPrinterModelEntry</apiname></xref>. </p> <p><b>Printer device </b> </p> <p>This encapsulates the printer being used as a graphics device. Applications draw to this device to print their output. It has: </p> <ul><li id="GUID-22E300DB-2DD2-58ED-84D9-2359B5E6C0EC"><p>a page specification, giving the page orientation and the size (<xref href="GUID-EAD42D35-CABC-3E21-AF87-DD87EF5BF835.dita"><apiname>TPageSpec</apiname></xref>) </p> </li> <li id="GUID-892B884E-6E1D-5963-99B9-A583F4A688A6"><p>a printer control, which controls the progress and termination of the print job (<xref href="GUID-2E0F522C-2A42-3E2E-ADE8-43398BB86906.dita"><apiname>CPrinterControl</apiname></xref>) </p> </li> <li id="GUID-5B89E00F-24C6-54CD-9F55-396627EE56E1"><p>possibly, associated custom print setup dialogs (base class <xref href="GUID-409C6A2C-1F51-36AA-8ADA-2B8657A111B1.dita"><apiname>CPrinterDriverUI</apiname></xref>) </p> </li> </ul> <p>It is provided by <xref href="GUID-02E9DA67-8CC0-3785-B917-A14C8AA7E714.dita"><apiname>CPrinterDevice</apiname></xref>. </p> <p><b>Printer port </b> </p> <p>Some printer models require a port to be specified (e.g. file, serial, parallel). The base class for ports is <xref href="GUID-4ED9EBF1-D6CB-3075-9E61-E4F26FD3DF15.dita"><apiname>CPrinterPort</apiname></xref>. </p> <p><b>Band printing interface </b> </p> <p>Pages are printed in regions of a page, called bands. An application implements the band printing interface to draw the requested region to the printer device. The class is <xref href="GUID-2C4DA17D-16ED-35C7-B936-1FF121C86FB2.dita"><apiname>MPageRegionPrinter</apiname></xref>. The attributes of the band to be printed are passed in a <xref href="GUID-32521573-2959-31BD-A7AD-F62AC649BE33.dita"><apiname>TBandAttributes</apiname></xref> object. </p> </section> </conbody><related-links><link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>GDI Concepts</linktext> </link> <link href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita"><linktext>GDI Tutorials</linktext> </link> <link href="GUID-B6D4AEE9-5C17-51D9-BBDE-7CCB5218279D.dita"><linktext>GDI
+                Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631"><title>Software Behaviour in a Debug Environment</title><abstract><shortdesc>To aid debugging the Comms software is designed to behave differently for release and debug binary files if certain configuration parameters are set. </shortdesc> <p>The following is a list of some of the behavioural changes: </p> </abstract><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-03213A90-9140-53FC-9CD5-89A4279047C2"><p> <b>Errors may panic in debug builds</b> - Release builds do not panic for most error conditions since panicking results in the loss of the service due to thread termination. If the thread is a SystemCritical the device reboots when the thread is panicked. Debug builds often panic when an error is detected. For example, if the debug version of the software detects an error in a configuration file it panics the thread to draw attention to the mismatched configuration. In a release build the software uses a default configuration to work around the problem. Other such events include failed internal consistency checks, failed internal connections between components, and cleanup failures. </p> </li> <li id="GUID-94F65C60-C228-514A-A35F-98934085BAD6"><p> <b>TestMode parameter controls thread panic behaviour</b> - The <codeph>TestMode</codeph> parameter is available in the <codeph>c32start.ini</codeph> file located in <codeph>&lt;drive&gt;\private\101f7988</codeph>. If the parameter is absent or set to 0, the Rootserver does nothing. If the parameter is set to 1 (<codeph>TestMode=1</codeph>), the Rootserver overrides and disables the SystemCritical setting for its threads. As a result, when any Rootserver thread terminates, it does not cause the device to reboot. This parameter was designed to be used during testing of cases which involve shutting down the Comms servers. The SystemCritical setting is configured in the CMI files, for more information see <xref href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita">CMI files - thread configuration</xref>. </p> </li> <li id="GUID-1C260CF4-390E-5D6C-B587-FB551C5864BD"><p> <b>Servers can be shutdown to help detect memory leaks</b> - For more information see <xref href="GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631.dita#GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631/GUID-B8A8B315-8C46-551A-B8F6-29BD24F45435">Detecting Memory Leaks</xref>  </p> </li> <li id="GUID-AD2E73D1-0BCE-565B-9F66-BB901CCEDEE1"><p> <b>Serial ports may require further configuration</b> - The process of testing, debugging and logging may require extra serial ports, so existing serial-port clients such as Bluetooth and C32 clients might be affected if there is contention. For more information about configuring comms serial ports see <xref href="GUID-B93D6BAE-B9B9-5118-92DF-5E566E5BE8EB.dita">Configuring Comms</xref>. For more information on configuring the RDebug port see <xref href="GUID-F3272004-B899-58A3-A654-27E47362D21A.dita">Writing trace code using RDebug::Print</xref>. </p> </li> <li id="GUID-8199B221-7C35-5FA4-AAD5-3C16FBAAF85A"><p> <b>Commdb/Commsdat</b> - The Comms Database contains the largest number of parameters to configure the Comms system. For more information see <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms Database</xref>. </p> <p> <b>Note:</b> Check the Comms Database configuration used to ensure that there are no mistaked in the configuration. </p> </li> </ul> <section id="GUID-B8A8B315-8C46-551A-B8F6-29BD24F45435"><title>Detecting Comms memory leaks</title> <p>The multi-threaded nature of much of the Comms software complicates the detection of memory leaks. This is because for some of the Comms software memory leaks can only be detected once all the handles are closed, a condition usually only reached during shutdown. As most Comms servers never shutdown, because doing so would reboot the device, the leaks in Comms software and plug-in software such as CSYs and NIFs can go unnoticed. Detecting these leaks requires a special shutdown command for the Comms servers in association with the <codeph>TestMode</codeph> parameter and then the inspection of the logged output for any leak information. </p> <p>During shutdown, memory leaks are logged using the "<codeph>LOG RSModule
+          Leak</codeph> " CDU tags so make sure these are enabled before shutdown. </p> <p>When a potential memory leak is found the separate Hooklogger tool, which runs on MS Windows™, is used to track the memory leak. The process is as follows: </p> <ul><li id="GUID-24109F28-62A5-5F1E-87C5-DEAD9E4690D7"><p>Setup the Hooklogger application and attach its hooks to the kernel binary files </p> </li> <li id="GUID-12FAE5EE-0E75-5C1B-91DB-4BFF17481AD6"><p>Start the Hooklogger application and instruct it to capture memory allocations </p> </li> <li id="GUID-025613F9-EBBE-5B91-BA14-DEAA0F48D36E"><p>Performing the server shutdown and wait for it to complete </p> </li> <li id="GUID-E1A8D430-D5AB-5581-B290-439310B78BBB"><p>Find the addresses of the leaked memory cells in the log file by checking all logging which was tagged with "<codeph>RSModule</codeph> " </p> </li> <li id="GUID-7D8394CE-7CEB-5963-AB40-6F1986F1D173"><p>Search the Hooklogger captured data for each leaked cell </p> </li> <li id="GUID-BD619424-8D30-5295-A009-F29433FC2B57"><p>Hooklogger's data will indicate where the leaked cell was allocated in the source code </p> </li> </ul> <p>For more information on Hooklogger, see the separate topic <xref href="GUID-6A6A6648-6573-5EE4-A191-32B3C207305B.dita">Memory leak detection</xref>. </p> <p>For more information about ESock's shutdown procedure see section <i>6.3 Unloading ESOCK</i> of <i>ESOCK "How-to"</i>. </p> <p>For more information about the use of heap checking to detect and debug memory leaks within the server and its plug-in <keyword>CSY</keyword> s see the <i>C32 Heap Check Migration Document</i>. There is no document which describes shutting down the C32 Serial Server, but C32's shutdown was modelled on ESock's shutdown so the principles are the same and the scripts are named <codeph>te_c32_test_unloadc32*.script</codeph> in the folder <codeph>..\ser-comms\c32\Test\TE_C32\util\scriptfiles\</codeph>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01" xml:lang="en"><title>Managing
+the RTCP packets and reports</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes how to send various types of RTCP packets, set the
+stream parameters, get stream statistics and close the session. </p>
+<section id="GUID-663C6781-3137-5D48-A836-6ADDD4474805"><title>Sending various
+RTCP packets</title><p>To automatically send SR, RR, or SDES packets, call <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-B32E14CD-DE13-3E89-96B4-5713CB7217A7"><apiname>RRtpSession::SetRTCPAutoSend()</apiname></xref> with
+its paramter set to ETrue. For more information about these packets, see Managing
+send and receive reports.</p><codeblock xml:space="preserve">session.SetRTCPAutoSend(ETrue);
+</codeblock><p>Set the RTCP auto-send time interval in microseconds by calling <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-506A9D47-03DE-36D0-8466-D7BFB725FBB1"><apiname>RRtpSession::SetRtcpInterval()</apiname></xref>.</p><codeblock xml:space="preserve">session.SetRtcpInterval(1000);
+</codeblock><p>If auto-sending is set to EFalse, call <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-7AF454C8-6943-3986-BC82-CF6BFB27AF7A"><apiname>RRtpSession::SendRTCPPacketL()</apiname></xref> to
+send a packet.</p><codeblock xml:space="preserve">//aPacket is a valid RTCP packet session.SendRTCPPacketL(aPacket);
+</codeblock><p>For more information, see the definition of TRtpSendPacketType.
+ </p><codeblock xml:space="preserve">Call RRtpSession::SendAppL() to send an APP packet.</codeblock><p>For
+an SDES RTP packet, call <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-1D4254AC-043A-3BA7-ABF7-B008DC9F4D01"><apiname>RRtpSession::SetSDESL()</apiname></xref> to set
+the SDES details such as CNAME, NAME, PHONE, EMAIL and so on. You must set
+these details before the packet is sent. The CNAME must be unique for an RTP
+session.   <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-0B04130D-585C-31D9-A1F0-B4166BC26A92"><apiname>RRtpSession::GetSDES()</apiname></xref> enables you to fetch
+the data associated with the specified SDES item.  </p><p> You can set the
+data associated with a PRIV (Private Extensions) SDES item by calling <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-D7E02919-E39A-3CA0-A8C7-BE77504C0948"><apiname>RRtpSession::SetPRIVL()</apiname></xref>.
+ PRIV (Private Extensions) SDES is not supported.   Call <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-00D4DBEA-3EDB-3F88-90B8-374D2CECB383"><apiname>RRtpSession::ByeL()</apiname></xref> to
+send an RTCP Bye packet.  </p> </section>
+<section><title>Setting the stream parameters </title> <p>The <xref href="GUID-8420B7F8-7BE3-30C0-BFC4-05F7A13361B6.dita"><apiname>SetRtpStreamParameters()</apiname></xref> method
+sets the following stream parameters: </p> <ul>
+<li id="GUID-60CD5E08-6829-5675-AC64-6CAA3C6D53D9"><p>maximum number of sequential
+packets that must be received for a good stream. </p> </li>
+<li id="GUID-8ED20A24-B6D0-5CE4-A115-459FED0E885C"><p>maximum number of dropped
+packets to be considered a dropout. </p> </li>
+<li id="GUID-688E9BB0-96E9-5090-B80F-1E75D27D2FCD"><p>maximum number of packets
+by which a packet can be delayed to be considered as dropped. </p> </li>
+</ul> <codeblock id="GUID-601FA412-12EA-571F-913C-7F4E383EE8BD" xml:space="preserve">SetRtpStreamParameters(1,100,3000);// set MinSequential, MaxMisorder &amp; MaxDropout </codeblock> </section>
+<section><title>Getting the stream statistics</title> <p>The <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita#GUID-97FC8566-E4AD-3881-8669-134798A88779/GUID-63B8D608-D078-3F8E-9ABD-2CD29F1396F5"><apiname>RRtpSession::RtcpStatistics()</apiname></xref> method
+provides sending and receiving statistics about the current active RTP session.
+The statistics depend on the contents of the latest Sender Report (SR) packets
+and Receiver Report (RR) packets. The returned <xref href="GUID-53671562-A0BB-379D-AC1A-0006F70A4513.dita"><apiname>TRtcpStatistics</apiname></xref> structure
+contains the following statistics: </p> <table id="GUID-82B41FFA-00C1-5477-9727-2C3DBCA754D5">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Direction </entry>
+<entry>Statistic </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Sending </p> </entry>
+<entry><p>Total number of packets sent from the beginning of the RTP session
+to the latest SR. </p> </entry>
+</row>
+<row>
+<entry><p>Total number of payload octets sent from the beginning of the RTP
+session to the latest SR. </p> </entry>
+</row>
+<row>
+<entry><p>Receiving </p> </entry>
+<entry><p>Inter-arrival jitter. </p> </entry>
+</row>
+<row>
+<entry><p>Total number of packets lost since the beginning of the RTP session. </p> </entry>
+</row>
+<row>
+<entry><p>Fraction of packets lost since the previous SR or RR. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>For more information about these statistics, see the RTP standard
+in <xref href="http://www.ietf.org/rfc/rfc3550.txt" scope="external">RFC 3550</xref>. </p> </section>
+<section><title>Closing a session</title> <p> <codeph>Close()</codeph> closes
+the RTP session. All the send and receive streams are disconnected after this
+call. </p> <codeblock id="GUID-6723F7F1-DDBE-5912-BF72-8B0902CDE681" xml:space="preserve">session.Close(); 
+delete session;</codeblock> </section>
+<section><title>See also</title> <p><xref href="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita#GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432/GUID-352B33B6-D02B-5ECB-B154-6CB06C21A377">Types
+of RTCP packets</xref>  </p> <p><xref href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita">Creating
+and Managing an RTP session</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC"><title>Redraw Stores</title><shortdesc>Redraw stores store the sequence of drawing commands representing window contents. Whenever possible, the Window Server performs server-initiated redraws by repeating the sequence of stored commands, rather than by sending redraw requests to the client. This minimises the number of client-server transactions and means that redraws are done as soon as the server detects that they are needed. This topic explains some of the background to redraw stores. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>: Device creators. </p> <p>The classes involved with redraw stores are as follows: </p> <fig id="GUID-85C23EC3-BADE-5DE1-872D-0D8399209874"><title>
+          Redraw stores class diagram 
+        </title> <image href="GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e172894_href.png" placement="inline"/></fig> <p> <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>CWsRedrawMsgWindow</apiname></xref> is the class representing a redraw store. Draw commands are stored in a number of segments, stored in the nested class <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>CRedrawSegment</apiname></xref>. </p> <p>Redraw drawing takes place as follows: </p> <ol id="GUID-2C26C7D9-1C38-55E1-BF14-A36A9F9F05F3"><li id="GUID-2FCE8CBF-6BF3-5033-8BB7-935D0B276F7C"><p>A call to <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>RWindow::Invalidate()</apiname></xref> causes either the whole window, or a rectangle within it, to be marked as invalid. </p> </li> <li id="GUID-EB4CAD7F-1B3C-5D2A-85FD-31D0C7F9503D"><p>Next, a call to <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>RWindow::BeginRedraw()</apiname></xref> is made, either for the whole window or for a rectangle within it. </p> </li> <li id="GUID-88AF657A-8C5E-5CE8-BEF9-F8C1E34F6174"><p>Draw operations take place. </p> </li> <li id="GUID-58BC4A48-5035-582D-BE17-C15A885F4B5F"><p>Finally there is a call to <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>RWindow::EndRedraw()</apiname></xref>. </p> </li> </ol> <p>In this sequence, the draw operations within the <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> brackets are interpreted as <i>replacing</i> whatever drawing was previously present in the affected rectangle. </p> <p>It is important to bracket all drawing within <codeph>BeginRedraw(TRect)</codeph> and <codeph>EndRedraw(TRect)</codeph> calls. In ScreenPlay, the Window Server ignores all drawing not within <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> brackets and triggers a full-window redraw. In debug builds, there is an option to panic clients violating this convention. </p> <p>For more information, see <xref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita">Redraw Drawing</xref>. </p> <section><title>Redraw segments and non-redraw handling</title> <p>When the Window Server receives a batch of redraw drawing, everything between a BeginRedraw/EndRedraw bracket is stored in a single <b>redraw segment</b>. The segment is marked as <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>ESegmentTypePendingRedraw</apiname></xref> while it is being received, and <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>ESegmentTypeRedraw</apiname></xref> once it is complete. </p> <p>Redraw segments have a region to which they apply. For <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>ESegmentTypeRedraw</apiname></xref>, the region is initially set to be the rectangle passed into the <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>BeginRedraw()</apiname></xref> call. When a new <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>ESegmentTypeRedraw</apiname></xref> is created, its region is subtracted from the regions of all existing segments. This reflects the fact that redraw drawing <i>replaces</i> existing drawing. If, as a consequence of new redraw drawing, the region of an existing segment becomes empty, that segment is discarded. Its drawing has been replaced everywhere, so it is no longer needed. </p> <p>What happens to drawing that is received between an <codeph>EndRedraw</codeph> and the next <codeph>BeginRedraw</codeph> —and which is therefore <b>non-redraw drawing</b> —depends on which variant is in use: </p> <ul><li id="GUID-0B29AC2F-AD48-5EAB-B3BE-B8FC296B092A"><p>In ScreenPlay, non-redraw drawing is not stored in a segment but instead triggers the Window Server to invalidate the entire window. This means that the client application must then perform a full window redraw. </p> </li> <li id="GUID-B592A6D0-68B7-5A16-B179-9F78C5FCDBB3"><p>In the non-ScreenPlay variant, non-redraw drawing is stored in a segment marked as <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>ESegmentTypeNonRedraw</apiname></xref>. For these segments the region is initially set to be the whole window and does not affect the regions of existing segments, because non-redraw drawing is drawn over existing drawing. </p> </li> </ul> </section> <section><title> Redraw store playback</title> <p>When playback is required, the redraw store goes through the redraw segments and replays them if the region for the segment intersects the region that is to be redrawn. It follows from the way that they are managed that the regions of redraw segments are mutually disjoint. This means that in ScreenPlay they can be replayed in any order. This is also true in the non-ScreenPlay when there are only redraw segments present. </p> <p>In the non-ScreenPlay variant, any non-redraw segments are replayed in earliest-first order, because they draw on top of earlier drawing. </p> </section> <section><title> Aging of non-redraw segments</title> <p> <b>Variant</b>: Non-ScreenPlay only. </p> <p>Non-redraw segments can cause inefficient operation of redraw stores. For this reason, in the non-ScreenPlay variant where non-redraw segments are still used, the Window Server "ages" them. That is, non-redraw segments are considered to have a finite lifetime, after which they are discarded. When a non-redraw segment is discarded, the Window Server makes a redraw request to the client asking it to provide new draw operations for the invalid region. </p> <p>The lifetime for non-redraw segments is set in the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">WSINI.INI file</xref> using the parameter <codeph>NONREDRAWAGELIMIT</codeph>, followed by a duration in microseconds. If this line is not present in the <codeph>WSINI.INI</codeph>, a default of one second is used. </p> </section> <section><title>Atomic Redraws</title> <p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). </p> <p>Another <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">WSINI.INI file</xref> setting that affects redraw storing is <codeph>ATOMICREDRAWS</codeph>. If this parameter is present, new draw operations received after a <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>BeginRedraw()</apiname></xref> are not considered valid until the corresponding <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>EndRedraw()</apiname></xref> is received. In particular, a new segment does not replace existing segments until it is complete. This has the consequence that if redraw store playback is required before the <xref href="GUID-29A3C74B-1599-3F6A-8B47-DADD2A220D6F.dita"><apiname>EndRedraw()</apiname></xref> for a new segment is received, draw operations from old segments for that region are used instead. Thus drawing within <codeph>Begin/EndRedraw</codeph> brackets can be considered as an atomic operation. This eliminates one potential source of flicker. </p> </section> </conbody><related-links><link href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita"><linktext>Graphics and Drawing </linktext> </link> <link href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita"><linktext>The wsini.ini File
+                Reference</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0AF14EE0-D4FD-53EA-B7E5-10724E3FA0DF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0AF14EE0-D4FD-53EA-B7E5-10724E3FA0DF" xml:lang="en"><title>How
+to resize an array</title><shortdesc>For fixed flat and fixed segmented arrays, it is possible to resize
+the array. If the array is shortened, then the trailing elements are deleted.
+If the array is extended, then new blank elements are created using the default
+constructor.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> or a <codeph>CArrayFixSeg&lt;class T&gt;</codeph> array,
+the number of elements in an array can be changed, either decreased or increased,
+using the <codeph>ResizeL()</codeph> function.</p>
+<p>In the following code fragment, <codeph>ResizeL()</codeph> changes the
+size of an array so that it contains only one element. If the array originally
+had more than one element, then this call to <codeph>ResizeL()</codeph> deletes
+all elements from position one onwards, leaving only the element at position
+zero.</p>
+<codeblock id="GUID-EB765A8F-D630-50A1-8CF4-707DFAAC5862" xml:space="preserve">CArrayFixFlat&lt;TElement&gt;* fixflat;
+fixflat = new (ELeave) CArrayFixFlat&lt;TElement&gt;(3);
+...
+fixflat-&gt;ResizeL(1);</codeblock>
+<p>Call <codeph>ResizeL()</codeph> again to change the size of the array to
+contain a greater number of elements, in this case three. If the array originally
+had only one element (for example), this call to <codeph>ResizeL()</codeph> constructs
+two new elements at positions one and two. In this example, the new elements
+inserted at positions one and two are <codeph>TElement</codeph> type objects,
+constructed using the <codeph>TElement</codeph>  <i>default constructor</i>.
+It is therefore essential that a default constructor exists before using this
+function.</p>
+<codeblock id="GUID-BCE6F87D-D2EB-5A38-8CAF-675DBFE9E6B6" xml:space="preserve">fixflat-&gt;ResizeL(3);</codeblock>
+<p>There is an overloaded variant of <codeph>ResizeL()</codeph> which takes
+a reference to a <codeph>TElement</codeph> object. A bit-wise copy of this
+referenced object supplies the new elements. In the following code fragment
+the two extra elements are bit-wise copies of the <codeph>theElement</codeph> object.</p>
+<codeblock id="GUID-EA125434-F6B2-598B-8143-55BE1F2D2996" xml:space="preserve">_LIT(KTextXXX,"XXX");
+theElement.iData = KTextXXX;
+fixflat-&gt;ResizeL(5,theElement);</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0AF47934-0A16-51A2-9254-992D7C6B322B" xml:lang="en"><title>Application Installation Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Application Installation guide provides detailed information about secure software installation services and the tools required to create and manage installation files.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e65930_href.png has changed
Binary file Symbian3/SDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e307727_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B2245C5-766B-5CF1-8A0C-DD98CEEEBB05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0B2245C5-766B-5CF1-8A0C-DD98CEEEBB05" xml:lang="en"><title>Random Number Generation (RNG)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Random Number Generation (RNG) generates cryptographically strong random numbers for use by cryptographic applications such as one-time pads and Initialization Vectors. The applications rely on RNG for its randomness, unpredictability and irreproducibility.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Snapshot API. </p> <section><title>Purpose</title> <p>This API allows the client to request snapshot data in a specified image format for both still images and video. The client can specify the properties of the snapshot, such as size, background colour and position to be used. For example, details about whether the snapshot has been scaled. </p> <p><b>Snapshot API Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-2842BA4C-19BB-5641-9D92-C76DCA01AF00"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-74692ABF-B1FF-3ED6-BAED-BFBA2E89CFD1.dita"><apiname>ecamsnapshot.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-645E6782-2610-3E79-A6A8-66A65C325E5F.dita"><apiname>euser.lib </apiname></xref>  </p> <p> <xref href="GUID-EA31C23F-8081-3A82-ABAA-168F970B5381.dita"><apiname>ecampluginsupport.lib </apiname></xref>  </p> <p> <xref href="GUID-AE2B970C-BCE8-3A17-AB2B-D5D51AB9F29E.dita"><apiname>ecamhistogram.lib </apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Snapshot APIs. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>This is part of the camera component. </p> </section> <section><title>Description</title> <p>The client application using this API should provide <codeph>McameraObserver2 </codeph> interface to be signalled, with event <codeph>KuidECamEventCameraSnapshot</codeph>, when snapshot data is available to be retrieved from the Ecam server. The client can then retrieve the snapshot data from the server. </p> </section> <section><title>Key Snapshot API Classes</title> <p>The key classes that make up the Snapshot API are as follows: </p> <ul><li id="GUID-5A404626-6602-5203-9735-37E1801BF2B0"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7DB06650-199E-3B00-A19A-1B48D671E46E"><apiname> CCamera::CCameraSnapshot </apiname></xref>  </p> <p>This class allows a client to request snapshot data in a specified image format for both still images and video. </p> <ul><li id="GUID-5A8FEB02-3EE7-5D68-9533-8E557B53B9F6"><p> <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-AB58C0C8-2C2E-3A83-9022-F2E7A356F877"><apiname> CCameraSnapshot::SupportedFormats() </apiname></xref>  </p> <p>Gets a list of the camera formats for which the server supports snapshots. </p> </li> <li id="GUID-2A68E999-85DA-54C3-8FBF-5F0CA0C68A52"><p> <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-0379784D-339B-3962-AD73-D2140518F39E"><apiname> CCamera::CCameraSnapshot::PrepareSnapshotL()
+                     </apiname></xref>  </p> <p>Selects snapshot parameters. The following example shows how to do this: </p> <codeblock id="GUID-219108F7-389A-52C3-BBCF-91976A227B84" xml:space="preserve">// Gets the list of supported formats for snapshots
+TUint suppFormats = snap-&gt;SupportedFormats();
+        
+CCamera::TFormat format = CCamera::EFormatJpeg;
+if(suppFormats &amp; format)
+    {
+    // Sets the properties of the snapshot data including 
+    // background colour and the position of the snapshot  
+    TSize sShotSize(90,50);
+    TRgb bgrndColor(100,100,100);
+    TBool aspectRatio = ETrue;
+    TPoint orgPos(2,2);
+     
+    snap-&gt;PrepareSnapshotL(format, orgPos, sShotSize, bgrndColor,aspectRatio);
+</codeblock> </li> <li id="GUID-9782C5D8-B43D-5506-8E49-B188AAC7D810"><p> <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-BCC10C00-8EBC-3A9D-A399-7AAA13824E0D"><apiname>
+                     CCamera::CCameraSnapshot::IsSnapshotActive()</apiname></xref>  </p> <p>Determines if the snapshot feature is active. </p> </li> <li id="GUID-8979122B-FEA6-54B8-80CC-1B439A2C60A5"><p> <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-A6AD9EBB-CC0C-38B6-A2C4-8DADD2B4B729"><apiname> CCamera::CCameraSnapshot::StartSnapshot()
+                     </apiname></xref>  </p> <p>Request notifications from the Camera. </p> </li> <li id="GUID-DF449145-0A9C-5B4B-8648-F9F29C543C1A"><p> <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-40F3FFA0-736A-3E47-8BBA-ABAE8C44BD84"><apiname> CCamera::CCameraSnapshot::StopSnapshot() </apiname></xref> </p> <p>Stops receiving snapshot notifications. </p> </li> <li id="GUID-9B6FFA13-5523-5006-84DD-5F50E8DA6337"><p> <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-FD954C76-308F-3405-A553-6D47D9C67D4D"><apiname> CCamera::CCameraSnapshot::SnapshotDataL()
+                     </apiname></xref>  </p> <p>Returns the snapshot data from server to the client. </p> </li> </ul> </li> <li id="GUID-58145F88-1AD2-57EF-A0B0-CD133BF37BF3"><p> <xref href="GUID-B0E7BDE5-2303-3547-93FB-DE0F2BC8E5FA.dita"><apiname>McameraSnapshot</apiname></xref>  </p> </li> <li id="GUID-CC7F1791-2FEC-5747-90D2-8F2A3CCD4065"><p> <xref href="GUID-6106F1FD-B3E9-3C0C-85A8-02E3C9D60D51.dita"><apiname>McameraSnapshot2</apiname></xref>  </p> </li> <li id="GUID-7E2ED929-5F16-5B7F-98F3-D18F275C58BF"><p> <xref href="GUID-928182A8-809C-3968-9203-75142146E100.dita"><apiname>CCameraDirectSnapshot</apiname></xref>  </p> </li> <li id="GUID-4C5EF5B0-5D64-5703-8ED4-0787166106D2"><p> <xref href="GUID-1A18F853-86BE-35C8-846B-77A412F65AE7.dita"><apiname>McameraDirectSnapshot</apiname></xref>  </p> </li> </ul> </section> <section><title>Using Snapshot API</title> <p>Clients can use the Snapshot API to: </p> <ul><li id="GUID-0ABF1882-0A95-500D-AD8E-5A8801816B79"><p>Create snapshots for still images and video. </p> </li> <li id="GUID-46E79542-004F-5B0C-80C8-6E2B00160FEE"><p>View the captured images on the display instantly. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Overview</xref> of the Camera component </p> <p>The <xref href="GUID-FD530B98-B17D-54CD-A86E-B6FFF701D19C.dita">Snapshot</xref> tutorial </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B5DB521-831C-5016-BD38-EC7E86F41513.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-0B5DB521-831C-5016-BD38-EC7E86F41513" xml:lang="en"><title>Reference</title><shortdesc>This section provides a summary of documents related to DHCP that
+you can refer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-A4EF7DE7-E35A-413B-B4B5-4FA17CA79B79"><p>The following table explains the various constants used to extract
+the DHCP options available in Symbian platform. </p> </section>
+<table id="GUID-D1DC6D41-F1FB-5EDE-938C-113EF7CC1E59">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>Constant</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+<entry><p> <b>Version Supported</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-C31641DD-17C8-312B-A700-4F267F1B6125.dita"><apiname>KConnGetCurrentAddr</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the current IP address that the host uses. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-69EEB521-4987-39FB-B20D-54C04A4A3F7C.dita"><apiname>KConnGetServerAddr</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the DHCP IP address of the server. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-2B40B801-353B-34E1-A544-74D703EE7901.dita"><apiname> KConnGetAddrLeaseTimeRemain</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the remaining lease time of the current IP address. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-42842D3A-C957-3D29-9994-D917E46AA9FF.dita"><apiname>KConnAddrRelease</apiname></xref>  </p> </entry>
+<entry><p>Releases the current IP address. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-013EA689-1417-34E1-8653-27C05B412527.dita"><apiname>KConnAddrRenew</apiname></xref>  </p> </entry>
+<entry><p>Renews the current lease of the IP address. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-8530A427-8B0B-3E98-A99C-AC1278EBC524.dita"><apiname>KConnGetDhcpRawOptionData</apiname></xref>  </p> </entry>
+<entry><p>Retrieves raw data from the DHCP messages. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A5473E87-D8C9-3115-933A-6C4A3AE16C12.dita"><apiname>KConnGetSipServerAddr</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the SIP server address. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-FC3DED28-B14B-34F5-98FA-94BA583E826A.dita"><apiname>KConnGetSipServerDomain</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the SIP server domain name. </p> </entry>
+<entry><p>IPv4 and IPv6 </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-84090B89-AEA7-31C5-A8E5-7FACA300913C.dita"><apiname>KConnGetDhcpHdrSname</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the host name of next available DHCP server. </p> </entry>
+<entry><p>IPv4 only </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D3921873-7EF1-3CD8-A29D-ED670284E264.dita"><apiname>KConngetDhcpHdrSiaddr</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the IP address of next available DHCP server. </p> </entry>
+<entry><p>IPv4 only </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-CF70542A-F5EA-3A74-8EF4-14653F74FD90.dita"><apiname>KConnGetTftpServerAddr</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the IP address of the TFTP server. </p> </entry>
+<entry><p>IPv4 only </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-5B39ECDB-7907-3E99-9849-E16F5404A2C3.dita"><apiname>KConnDhcpGetMultipleParams</apiname></xref>  </p> </entry>
+<entry><p>Retrieves multiple option code data in raw format. </p> </entry>
+<entry><p>IPv4 only </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-5EB4D73D-B71A-3841-B6A0-5B3EF910AD49.dita"><apiname>KConnGetTftpServerName</apiname></xref>  </p> </entry>
+<entry><p>Retrieves the host name of the TFTP server. </p> </entry>
+<entry><p>IPv4 only </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section id="GUID-C87E13BE-0190-4BF2-A8C1-833BF89B5A1C"><title>Comms Database Configuration for DHCP</title> <p>To use the
+DHCP, the following records have to be modified in the Comms Database <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-7230C019-50CA-52A6-A21B-EED1C6D7E60C">service
+table</xref>. </p> <table id="GUID-DCEE5CA8-6C91-5E1B-B8DD-00ED85C48F0E">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>Record name</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+<entry><p> <b>Value</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ConfigDaemonName</codeph>  </p> </entry>
+<entry><p>Name of the DHCP daemon to be loaded by the Nifman. </p> </entry>
+<entry><p>DhcpServ </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IpAddrFromServ</codeph>  </p> </entry>
+<entry><p>Determines if an IP address is required from the DHCP server. </p> </entry>
+<entry><p>TRUE </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IfNetworks</codeph>  </p> </entry>
+<entry><p>The protocols supported by the connection. </p> </entry>
+<entry><p>ip for IPv4 networks or ip6 for IPv6 networks </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>If the <codeph>IpAddrFromServ</codeph> field is set to <b>FALSE</b>,
+the <codeph>IPAddr</codeph> field must be set with a static IP address. </p> <p>The
+DHCP daemon in the comms database configures the following DHCP related fields: </p> <table id="GUID-AABD79CB-40C0-57E3-B107-72095BB091C8">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Record name</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p>IpAddrLeaseValidFrom </p> </entry>
+<entry><p>The start time of the IP address. </p> </entry>
+</row>
+<row>
+<entry><p>IpAddrLeaseValidTo </p> </entry>
+<entry><p>The end time of the IP address. </p> </entry>
+</row>
+<row>
+<entry><p>IpAddr </p> </entry>
+<entry><p>The IP address of the device. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23_d0e46390_href.png has changed
Binary file Symbian3/SDK/Source/GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23_d0e52501_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160" xml:lang="en"><title>Using
+TDes16 class</title><shortdesc>Use TDes16 for Interfaces which take wide (Unicode) text regardless
+of the build variant.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D4D5A59E-C9E5-5729-8730-5365C7922CFE"><title>Using in a
+function interface</title> <p>An interface which needs to access and modify
+Unicode text, regardless of the build variant, uses a <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref> as
+the argument type. All 16 bit concrete descriptors are derived from <codeph>TDes16</codeph> which
+means that the interface can accept any 16 bit descriptor.</p> <p>The following
+code fragment shows the most common function prototype pattern.</p> <codeblock id="GUID-70EBC544-5308-52AA-8777-0DFB5D73F7D0" xml:space="preserve">void ClassX::foo(TDes16&amp; anArg);</codeblock> <p>The
+use of <codeph>TDes16</codeph> means that data can be accessed and modified
+through the descriptor.</p> <p>In practice, nearly all code uses the build
+independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>, unless an explicit
+8 bit or 16 bit build variant is required.</p> </section>
+<section id="GUID-C1F88768-4489-5A99-8512-7BE80C80EB25"><title>Accessing individual
+data items</title> <p>The code fragment illustrates the use of <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>operator[]()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>.</p> <codeblock id="GUID-CBB66254-2E53-5F18-A547-941CDE264B30" xml:space="preserve">_LIT16(KAtoG,"abcdefg");
+TChar ch;
+...
+str.Length();           // returns 7
+ch = str[0];            // ch contains the character 'a'
+ch = str[3];            // ch contains the character 'd'
+...
+str[0] = 'z';           // changes str to "zbcdefg"
+str[3] = 'z';           // changes str to "abczefg"
+...
+ch = str[7];            // Panic !!
+str[7] = 'z';           // Panic !!</codeblock> </section>
+<section id="GUID-3E72CE9C-4C1A-5861-BCEE-B481809F5837"><title>Copying data</title> <p>The
+code fragment shows the <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Copy()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-31357819-E92C-5D81-936D-8A31291CCCFD" xml:space="preserve">_LIT16(Kabcdefg,"abcdefg");
+_LIT16(Kabc,"abc");
+_LIT16(Kabcdefghi,"abcdefghi");
+...
+TBuf16&lt;8&gt; str;
+...
+str.Copy(Kabcdefg);     // copies "abcdefg" to str
+str.Length();           // returns 7
+str.MaxLength();        // returns 8
+...
+str.Copy(Kabc);         // copies "abc" to str
+str.Length();           // returns 3
+str.MaxLength();        // returns 8
+...
+str.Copy(Kabcdefghi));  // Panics !!</codeblock> </section>
+<section id="GUID-109A36A8-9FC0-59F0-96F5-A3BC86E07795"><title>Copying data
+with repetition</title> <p>The code fragment shows the <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Repeat()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-02ABA404-871E-555B-BBC7-B7A2C5796D0F" xml:space="preserve">_LIT16(Kab,"ab");
+_LIT16(Kabc,"abc");
+_LIT16(Kabcde,"abcde");
+...
+TBuf16&lt;8&gt; tgt(8);            // length of tgt is the same as the
+...                          // maximum which is 8
+...                          // following strings generated in tgt
+...
+tgt.Repeat(Kab);             // "abababab"
+tgt.Repeat(Kabc);            // "abcabcab"
+tgt.Repeat(Kabcde);          // "abcdeabc"
+...
+...                          // changing length to 7 has the
+...                          // following effect
+tgt.SetLength(7);
+tgt.Repeat(Kab);             // "abababa"
+tgt.Repeat(Kabc);            // "abcabca"
+tgt.Repeat(Kabcde);          // "abcdeab"</codeblock> </section>
+<section id="GUID-C7A4D40E-F4D3-5683-91DE-91FE2C5D63DE"><title>Copying data
+and justifying</title> <p>The code fragments show the <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Justify()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-E8EEC5B9-846F-5352-9072-E7F19D751BFB" xml:space="preserve">_LIT16(Kabc,"abc");
+TBuf16&lt;16&gt; tgt(Kabc);
+...
+tgt.Justify(_L("xyz"),8,ECenter,'@');</codeblock> <p>The descriptor <codeph>tgt</codeph> has
+a maximum length of 16 and initially holds the string "abc". After the call
+to <codeph>Justify()</codeph>, the content of <codeph>tgt</codeph> changes
+to <codeph>@@xyz@@@</codeph>.</p> <p>The content of the source descriptor
+is taken to form a field of length 8 which replaces the original content of
+the descriptor <codeph>tgt</codeph>. The characters <codeph>xyz</codeph> are
+centred within the new field and padded on both sides with the fill character <codeph>@</codeph>.</p> <p>Setting
+the alignment to <codeph>ELeft</codeph> would change the content of <codeph>tgt</codeph> to <codeph>"xyz@@@@@"</codeph> while
+setting the alignment to <codeph>ERight</codeph> would change the content
+of <codeph>tgt</codeph> to<codeph> "@@@@@xyz"</codeph>.</p> <p>In all three
+cases, the length of the descriptor <codeph>tgt</codeph> changes from 3 to
+8.</p> <codeblock id="GUID-084D5402-03A8-5A6C-ACBE-150594CC995F" xml:space="preserve">_LIT16(Kabc,"abc");
+_LIT16(Kxyz,"xyz");
+TBuf16&lt;8&gt; tgt(Kabc);
+...
+tgt.Justify(Kxyz,9,ECenter,'@');</codeblock> <p>This call to <codeph>Justify()</codeph> panics
+because the resulting length of data in <codeph>tgt</codeph> exceeds the maximum
+length of <codeph>tgt</codeph>.</p> <codeblock id="GUID-620AA4E5-F6E8-5A68-B7D1-3D1D4549A5F6" xml:space="preserve">_LIT16(Kabc,"abc");
+_LIT16(KRtoZ,"rstuvwxyz");
+TBuf16&lt;16&gt; tgt(Kabc);
+...
+tgt.Justify(KRtoZ,8,ECenter,'@');</codeblock> <p>In this call to <codeph>Justify()</codeph>,
+the content of <codeph>tgt</codeph> changes to "rstuvwxy". Only eight of the
+nine characters in the source literal<codeph>KRtoZ</codeph> are copied.</p> </section>
+<section id="GUID-73C9CA90-5D00-5CD3-853C-9C03AE44D052"><title>Copying conversion
+from signed integer to decimal character</title> <p>The following code fragment
+illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Num()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-B57E9FE0-17F7-55EB-96DA-C1BEDA29A11C" xml:space="preserve">TBuf16&lt;16&gt; tgt;
+...
+TInt numpos(176);
+TInt numneg(-176);
+..                      // generates the following strings:
+tgt.Num(numpos);        // "176"
+tgt.Num(numneg);        // "-176"</codeblock> </section>
+<section id="GUID-9C8DC02F-C399-51EB-A675-FFF021626D88"><title>Copying conversion
+from unsigned integer to specified number system</title> <p>The following
+code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Num()</apiname></xref> and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>NumUC()</apiname></xref>.</p> <p>The behaviour is the same for the
+build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-EE8FAF1C-F74E-5CCB-B5D2-92298BE2B0A5" xml:space="preserve">TBuf16&lt;16&gt; tgt;    // generates the following strings:
+...
+TUint number(170);
+...
+tgt.Num(number,EBinary);     // "10101010"
+tgt.Num(number,EOctal);      // "252"
+tgt.Num(number,EDecimal);    // "170"
+tgt.Num(number,EHex);        // "aa"   &lt;-NB hex value in lower case
+tgt.NumUC(number,EHex);      // "AA"   &lt;-NB hex value in UPPER case
+tgt.Num(number);             // "170"  &lt;--EDecimal taken as default</codeblock> </section>
+<section id="GUID-E0D95020-9E74-5FE1-8A84-74FFE8C2CB1E"><title>Formatting
+text</title> <p>The following code fragments illustrate the various possibilities
+of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Format()</apiname></xref>.</p> <p>The behaviour is the
+same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-39F9392D-32CD-5CDF-B5B8-DBDDD708738F" xml:space="preserve">TBuf16&lt;256&gt; tgt;
+...
+_LIT16(KFormat1,"[%b %c %d %o %u %x]");
+tgt.Format(KFormat1,65,65,65,65,65,65);//generates:
+...                                  //[1000001 A 65 101 65 41]
+...
+_LIT16(KFormat2,"[%04x]");           // pad char="0", field width=4
+tgt.Format(KFormat2,65);             //generates:
+...                                  //[0041]
+...
+_LIT16(KFormat3,"[%4x]");            // pad char=default, field width=4
+tgt.Format(KFormat3,65);             //generates:
+...                                  //[  41]
+...                                  // Note use of blanks as default pad chars.
+...
+_LIT16(KFormat4,"[%*x]");            // fixed field width, taken from the arguments list
+tgt.Format(KFormat4,4,65);           //generates:
+...                                  //[  41]
+...
+...
+_LIT16(KFormat5,"[%+$4d.00 %S]");    // pad char="$", field width=4, right aligned
+_LIT16(KOver,"over");                
+tgt.Format(KFormat5,65,&amp;KOver);      //generates:
+...                                  //[$$65.00 over]
+...
+_LIT16(KFormat6,"[%+4d.00 %S]");     // pad char=default, field width=4
+tgt.Format(KFormat6,65,&amp;KOver);      //generates:
+...                                  //[  65.00 over]
+...                                  //   note no pad char specified, defaults
+...                                  //   to blank
+...
+_LIT16(KFormat7,"[% 4d.00 %S]");     // pad char=" ", field width=4, alignment=default
+tgt.Format(KFormat7,65,&amp;KOver);      //generates:
+...                                  //[  65.00 over]
+...                                  //   note default right hand alignment and
+...                                  //   blank pad char
+...
+_LIT16(KFormat8,"[%+0*S]");          // right aligned, pad char="0", fixed field width
+_LIT16(KFred,"fred");                
+tgt.Format(KFormat8,10,&amp;KFred);      //generates:
+...                                  //[000000fred]
+...                                  // Note: 10 characters generated
+...
+_LIT16(KFormat9,"[%=*6x]");          // centre aligned, pad char taken from arguments list, field width=6
+tgt.Format(KFormat9,'*',65);         //generates:
+...                                  //[**41**]
+...
+_LIT16(KFormat10,"[%+**d]");         // right aligned, pad char and field width taken from arguments list
+tgt.Format(KFormat10,'.',10,(-65));  //generates:
+...                                  //[.......-65]
+...
+_LIT16(KFormat11,"[%-A4p]");         // left aligned, field width=4, pad char="A"
+tgt.Format(KFormat11,65);            //generates
+...                                  //[AAAA]
+...                                  //   and makes no use of the argument list
+...
+_LIT16(KFormat12,"[%m]");            //generates:
+tgt.Format(KFormat12,4660);          //   the char '['
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by the char ']'
+_LIT16(KFormat13,"[%M]")
+tgt.Format(KFormat13,4660);          //generates:
+...                                  //   the char '['
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by the char ']'
+...
+_LIT16(KFormat14,"[%w]");            //generates:
+tgt.Format(KFormat14,4660);          //   the char '['
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by the char ']'
+..
+_LIT16(KFormat15,"[%w]");            //generates:
+tgt.Format(KFormat15,4660);          //   the char '['
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by the char ']'
+...
+_LIT16(KFormat16,"[%6.2e]");         
+tgt.Format(KFormat16,3.4555);        //generates:
+...                                  //[3.46E+00]
+_LIT16(KFormat17,"[%6.2f]");         
+tgt.Format(KFormat17,3.4555);        //generates:
+...                                  //[  3.46]
+_LIT16(KFormat18,"[%6.2g]");         
+tgt.Format(KFormat18,3.4555);        //generates:
+                                     //[3.4555]
+...
+// Variable  argument positions
+_LIT16(KFormat19,"[%d %d]");          // implicit ordering
+tgt.Format(KFormat19,9,5);           // generates:
+...                                  // [9 5]
+...
+_LIT16(KFormat20,"[%$2$d %$1$d]");    // explicit ordering
+tgt.Format(KFormat20,9,5);           // generates:
+...                                  // [5 9]
+...
+_LIT16(KFormat21,"[%$1$d %$2$d]");    // explicit ordering (same as the implicit order)
+tgt.Format(KFormat21,9,5);           // generates:
+...                                  // [9 5]
+
+// Using argument blocks (a many-to-one mapping between arguments and conversion specifiers)
+_LIT16(KFormat22,"[%0*d %d %d]");     // implicit ordering
+tgt.Format(KFormat22,3,9,5,12);      // generates:
+...                                  // [009 5 12]
+...
+_LIT16(KFormat23,"[%$2$d %$1$0*d %d]"); // mixed explicit and implicit ordering
+tgt.Format(KFormat23,3,9,5,12);      // generates:
+...                                  // [5 009 12]
+...                                  
+_LIT16(KFormat24,"[%$3$d %$1$0*d %$2$d]"); // explicit ordering
+tgt.Format(KFormat24,3,9,5,12);      // generates:
+...                                  // [12 009 5]
+
+</codeblock> </section>
+<section id="GUID-6500B0CB-54FF-5358-A27F-16F42C4111C8"><title>Inserting data</title> <p>The
+code fragment shows the <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Insert()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-BB71E3D6-2BE0-5687-A030-1C030D1D4D7A" xml:space="preserve">_LIT16(Kabc,"abc")
+_LIT16(KUVWXYZ,"UVWXYZ")
+_LIT16(KVWXYZ,"VWXYZ")
+_LIT16(KWXYZ,"WXYZ")
+_LIT16(KXYZ,"XYZ)
+...
+TBuf16&lt;8&gt; tgt(3);
+...                              // generates the strings:
+tgt = Kabc;
+tgt.Insert(0,kXYZ);              // "XYZabc"
+...
+tgt = Kabc;
+tgt.Insert(1,KXYZ);              // "aXYZbc"
+...
+tgt = Kabc;
+tgt.Insert(tgt.Length(),KXYZ);   // "abcXYZ"
+...
+tgt = Kabc;
+tgt.Insert(tgt.Length()+1,KXYZ); // ----&gt; Panic !!
+...
+tgt = Kabc;
+tgt.Insert(1,KWXYZ);             // "aWXYZbc"
+...
+tgt = Kabc;
+tgt.Insert(1,KVWXYZ);            // "aVWXYZbc"
+...
+tgt = Kabc;
+tgt.Insert(1,KUVWXYZ);           // ----&gt; Panic !!</codeblock> </section>
+<section id="GUID-1A3976EB-6A46-5F6F-B190-ACEA13474EBD"><title>Replacing data</title> <p>The
+following code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Replace()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-13F5FDC8-07DA-5818-A2DF-7F58757C4558" xml:space="preserve">_LIT16(Kabcd,"abcd");
+_LIT16(Ku,"u");
+_LIT16(Kuv,"uv");
+_LIT16(Kuvw,"uvw");
+_LIT16(Kuvwxyz,"uvwxyz");
+...
+TBuf16&lt;8&gt; tgt(4);
+...                          // generates the strings:
+tgt = Kabcd;
+tgt.Replace(0,1,Ku));        // "ubcd"
+...
+tgt = Kabcd;
+tgt.Replace(0,1,Kuv);        // "uvbcd"
+...
+tgt = Kabcd;
+tgt.Replace(0,1,Kuvw);       // "uvwbcd"
+...
+tgt = Kabcd;
+tgt.Replace(0,1,Kuvwxyz);    // ----&gt; Panics !!
+...
+tgt = Kabcd;
+tgt.Replace(1,2,Ku);         // "aud"
+...
+tgt = Kabcd;
+tgt.Replace(1,2,KNullDesC16);// "ad"
+...
+tgt = Kabcd;
+tgt.Replace(1,4,Kuvw);       // ----&gt; Panics !!
+...
+tgt = Kabcd;
+tgt.Replace(3,1,Kuvw);       // "abcuvw"
+...
+tgt = Kabcd;
+tgt.Replace(4,0,Kuvw);       // "abcduvw"</codeblock> </section>
+<section id="GUID-1F92A7F4-2206-5B60-B020-AFAB4720DC54"><title>Swapping data</title> <p>This
+code fragment shows the <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Swap()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-79B2CD79-D203-5958-9738-4DD9EF91D659" xml:space="preserve">_LIT16(Kabcde,"abcde");
+_LIT16(Kxyz,"xyz");
+_LIT16(K0to9,"0123456789");
+...
+TBuf16&lt;8&gt;  buf1(Kabcde);
+TBuf16&lt;8&gt;  buf2(Kxyz);
+TBuf16&lt;16&gt; buf3(K0to9);
+...
+buf1.Swap(buf2);    // contents of buf1 and buf2 swapped OK
+buf1.Swap(buf3);    // Panic !!</codeblock> </section>
+<section id="GUID-883167BC-E97D-5826-AA1A-41D1C3F0BF18"><title>Deleting data</title> <p>The
+following code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Delete()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-0EB429E5-BAC6-502B-B73C-16EC701AA439" xml:space="preserve">_LIT16(Kabcd,"abcd");
+...
+TBuf16&lt;8&gt; tgt(4);
+...                         // generates the strings:
+tgt = Kabcd;
+tgt.Delete(0,1);            // "bcd"
+...
+tgt = Kabcd;
+tgt.Delete(0,2);            // "cd"
+...
+tgt = Kabcd;
+tgt.Delete(0,4);            // ""
+...
+tgt = Kabcd;
+tgt.Delete(1,2);            // "ad"
+...
+tgt = Kabcd;
+tgt.Delete(2,2);            // "ab"
+...
+tgt = Kabcd;
+tgt.Delete(2,3);            // "ab"
+...
+tgt = Kabcd;
+tgt.Delete(2,256);          // "ab"
+...
+tgt = Kabcd;
+tgt.Delete(5,1);            // ----&gt; Panics !!
+...
+tgt = Kabcd;
+tgt.Delete(-1,1);           // ----&gt; Panics !!</codeblock> </section>
+<section id="GUID-19E04508-8752-50BC-9570-4DF826461F8B"><title>Deleting leading
+spaces</title> <p>The following code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TrimLeft()</apiname></xref>.</p> <p>The behaviour is the same for
+the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-95FD982B-0398-5BA8-AA26-79EB6CEC0193" xml:space="preserve">_LIT16(KData1,"  abcd  ");
+_LIT16(KData2," a b ");
+...
+TBuf16&lt;8&gt; str1(KData1);
+TBuf16&lt;8&gt; str2(KData2);
+...
+str1.Length();          // returns 8
+str1.TrimLeft();        // "abcd  "
+str1.Length();          // returns 6
+...
+str2.Length();          // returns 5
+str2.TrimLeft();        // "a b "
+str2.Length();          // returns 4</codeblock> </section>
+<section id="GUID-2EB9B1C4-A39A-5696-B0F0-9CC6DFD8AE44"><title>Deleting trailing
+spaces</title> <p>The following code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TrimRight()</apiname></xref>.</p> <p>The behaviour is the same for
+the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-EC730EBE-BD56-5E95-AAA3-B704CA19C189" xml:space="preserve">_LIT16(KData1,"  abcd  ");
+_LIT16(KData2," a b ");
+...
+TBuf16&lt;8&gt; str1(KData1);
+TBuf16&lt;8&gt; str2(KData2);
+...
+str1.Length();          // returns 8
+str1.TrimRight();       // "  abcd"
+str1.Length();          // returns 6
+...
+str2.Length();          // returns 5
+str2.TrimRight();       // " a b"
+str2.Length();          // returns 4</codeblock> </section>
+<section id="GUID-94016BAD-FED1-5BDB-875A-E9C03D1C400F"><title>Deleting leading
+and trailing spaces</title> <p>The following code fragment illustrates the
+use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>Trim()</apiname></xref>.</p> <p>The behaviour is the
+same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-6446EB8B-AF08-53B4-8554-5DE6639BDD5C" xml:space="preserve">_LIT16(KData1,"  abcd  ");
+_LIT16(KData2," a b ");
+...
+TBuf16&lt;8&gt; str1(KData1);
+TBuf16&lt;8&gt; str2(KData2);
+...
+str1.Length();          // returns 8
+str1.Trim();            // "abcd"
+str1.Length();          // returns 4
+...
+str2.Length();          // returns 5
+str2.Trim();            // "a b"
+str2.Length();          // returns 3</codeblock> </section>
+<section id="GUID-804382DD-9790-5E11-A6F4-112DA7C30C1E"><title>Deleting leading,
+trailing and internal spaces</title> <p>The following code fragment illustrates
+the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TrimAll()</apiname></xref>.</p> <p>The behaviour
+is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-101C5202-1FCA-5720-AA6C-6006229BBAE7" xml:space="preserve">_LIT16(KData1,"  abcd  ");
+_LIT16(KData2," a b ");
+_LIT16(KData3,"a  b   c");
+...
+TBuf16&lt;8&gt; str1(KData1);
+TBuf16&lt;8&gt; str2(KData2);
+TBuf16&lt;8&gt; str2(KData3);
+...
+str1.Length();          // returns 8
+str1.TrimAll();         // "abcd"
+str1.Length();          // returns 4
+...
+str2.Length();          // returns 5
+str2.TrimAll();         // "a b"
+str2.Length();          // returns 3
+...
+str3.Length();          // returns 8
+str3.TrimAll();         // "a b c"
+str3.Length();          // returns 5</codeblock> </section>
+<section id="GUID-B84DE2E8-6E4B-509C-9A43-F1134736BA04"><title>Append and
+justify</title> <p>The following code fragments illustrate the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendJustify()</apiname></xref>.</p> <p>The behaviour is the same
+for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-88672250-8C80-5AA4-B26A-44E73FD2C90E" xml:space="preserve">_LIT16(Kabc,"abc");
+_LIT16(Kxyz, "xyz");
+...
+TBuf16&lt;16&gt; tgt(Kabc);
+tgt.AppendJustify(Kxyz,8,ECenter,'@');</codeblock> <p>The descriptor <codeph>tgt</codeph> has
+a maximum length of 16 and initially holds the string "<codeph>abc</codeph>".
+After the call to <codeph>AppendJustify()</codeph>, the content of <codeph>tgt</codeph> changes
+to "<codeph>abc@@xyz@@@</codeph>".</p> <p>The content of the source descriptor <codeph>Kxyz</codeph> is
+taken to form a field of length 8 which is appended to the content of the
+descriptor <codeph>tgt</codeph>. The characters "<codeph>xyz</codeph>" are
+centred within the new field and padded on both sides with the fill character <codeph>'@'.</codeph></p> <p>Setting
+the alignment to <codeph>ELeft</codeph> would change the content of <codeph>tgt</codeph> to
+"<codeph>abcxyz@@@@@</codeph>" while setting the alignment to <codeph>ERight</codeph> would
+change the content of <codeph>tgt</codeph> to "<codeph>abc@@@@@xyz</codeph>".</p> <p>In
+all three cases, the length of the descriptor <codeph>tgt</codeph> changes
+from 3 to 11.</p> <codeblock id="GUID-F5C0525B-CAAD-5068-8C54-28A7EFBA02A3" xml:space="preserve">_LIT16(KAtoK,"abcdefghik");
+_LIT16(K0to6,"0123456");
+...
+TBuf16&lt;16&gt; tgt(KAtoK);
+tgt.AppendJustify(K0to6,7,ECenter,'@');</codeblock> <p>This call to <codeph>AppendJustify()</codeph> panics
+because the resulting length of <codeph>tgt</codeph> exceeds its maximum length.</p> </section>
+<section id="GUID-A6018CB3-8452-5A6E-876A-337D7496D2A3"><title>Append and
+justify with explicit length</title> <p>The following code fragments illustrate
+the use of the overloaded version of <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendJustify()</apiname></xref> which
+specifies an explicit length.</p> <p>The behaviour is the same for the build
+independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-D5496168-D727-574C-A2C3-C23ABCC3DA23" xml:space="preserve">_LIT16(Kabc,"abc");
+_LIT16(Kxyz0to9,"xyz0123456789");
+...
+TBuf16&lt;16&gt; tgt(Kabc);
+tgt.AppendJustify(Kxyz0to9,3,8,ECenter,'@');</codeblock> <p>The descriptor <codeph>tgt</codeph> has
+a maximum length of 16 and initially holds the string "<codeph>abc</codeph>".
+After the call to <codeph>AppendJustify()</codeph>, the content of <codeph>tgt</codeph> changes
+to "<codeph>abc@@xyz@@@</codeph>".</p> <p>In this example, the first three
+characters of the eleven characters "<codeph>xyz0123456789</codeph>" are taken
+to form an eight character field which is appended to the existing content
+of the descriptor <codeph>tgt</codeph>. The three characters "<codeph>xyz</codeph>"
+are centred within the new field and padded on both sides with the fill character <codeph>'@'.</codeph></p> <p>Setting
+the alignment to <codeph>ELeft</codeph> would change the content of <codeph>tgt</codeph> to <codeph>"abcxyz@@@@@"</codeph> while
+setting the alignment to <codeph>ERight</codeph> would change the content
+of <codeph>tgt</codeph> to "<codeph>abc@@@@@xyz</codeph>".</p> <p>In all three
+cases, the length of the descriptor <codeph>tgt</codeph> changes from 3 to
+11.</p> <codeblock id="GUID-7ADD1986-D57E-55B3-8C78-EDF7E8C97F3A" xml:space="preserve">_LIT16(Kabc,"abc");
+_LIT16(K0to9,"0123456789");
+...
+TBuf16&lt;16&gt; tgt(Kabc);
+tgt.AppendJustify(K0to9,9,8,ECenter,'@');</codeblock> <p>In this example,
+the call to <codeph>AppendJustify()</codeph> changes the content of <codeph>tgt</codeph> to
+"<codeph>abc01234567</codeph>". As the specified length is greater than the
+specified width, the length is truncated so that only eight characters are
+copied from the source descriptor.</p> <codeblock id="GUID-DC7F6C77-14D0-5922-AD4A-C5CCE2B99A81" xml:space="preserve">_LIT16(KAtoK,"abcdefghik");
+_LIT16(K0to9,"0123456789");
+...
+TBuf16&lt;16&gt; tgt(KAtoK);
+tgt.AppendJustify(K0to9,3,7,ECenter,'@');</codeblock> <p>This call to <codeph>AppendJustify()</codeph> panics
+because the resulting length of <codeph>tgt</codeph> exceeds its maximum length.</p> </section>
+<section id="GUID-E844DB49-2BDA-56BD-92AB-5FB23D2274D2"><title>Append data
+operator</title> <p>The following code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>operator+=()</apiname></xref>.</p> <codeblock id="GUID-F8E72C51-2DAA-5AB9-ADB3-AA1830020116" xml:space="preserve">_LIT16(Kabc,"abc");
+TBuf16&lt;16&gt; tgt(Kabc);
+...
+tgt+=(_L("0123456789"));         // generates "abc0123456789"
+tgt+=(_L("0123456789qwerty"));   // Panics !!</codeblock> </section>
+<section id="GUID-F056485E-28FF-5E20-82D7-884D486174E3"><title>Append conversion
+from signed integer to decimal character</title> <p>The following code fragment
+illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendNum()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-14953E84-47E5-5BA5-8EB8-11E4A062A8A9" xml:space="preserve">_LIT16(Kabc,"abc");
+TInt numpos(176);
+TInt numneg(-176);
+...
+TBuf16&lt;16&gt; tgt(Kabc));       // generates the following strings:
+tgt.AppendNum(numpos);       // "abc176"
+tgt.AppendNum(numneg);       // "abc-176"</codeblock> </section>
+<section id="GUID-0B59128B-2152-5CB3-8363-457CDB18768D"><title>Append conversion
+from unsigned integer to specified number system</title> <p>The following
+code fragment illustrates the use of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendNum()</apiname></xref> and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendNumUC()</apiname></xref>.</p> <p>The behaviour is the same
+for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-0DBF2078-5B45-5865-9B15-14ED2C29DC27" xml:space="preserve">_LIT16(Kabc,"abc");
+TBuf16&lt;16&gt; tgt(Kabc);  // generates the following strings:
+...
+TUint num(170);
+...
+tgt.AppendNum(num,EBinary);  // "abc10101010"
+tgt.AppendNum(num,EOctal);   // "abc252"
+tgt.AppendNum(num,EDecimal); // "abc170"
+tgt.AppendNum(num,EHex);     // "abcaa"   &lt;-hex value in lower case
+tgt.AppendNumUC(num,EHex);   // "abcAA"   &lt;-hex value in UPPER case
+tgt.AppendNum(num);          // "abc170"  &lt;-EDecimal taken as default</codeblock> </section>
+<section id="GUID-7A61CC57-7AC3-5AFD-9E3F-1FFAD4D9EF3E"><title>Append fixed
+width conversion</title> <p>The following code fragment illustrates the use
+of<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendNumFixedWidth()</apiname></xref> and<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>AppendNumFixedWidthUC()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>_LIT</apiname></xref>,
+and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf16</apiname></xref> with<xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-344F9FBD-83BC-599C-A762-ED7CBD5ED060" xml:space="preserve">_LIT16(Kabc,"abc");
+TBuf16&lt;16&gt; tgt(Kabc);  // generates the following strings:
+...
+TUint num(170)
+...
+tgt.AppendNumFixedWidth(num,EBinary,8);     // "abc10101010"
+tgt.AppendNumFixedWidth(num,EOctal,8);      // "abc00000252"
+tgt.AppendNumFixedWidth(num,EDecimal,8);    // "abc00000170"
+tgt.AppendNumFixedWidth(num,EHex,8);        // "abc000000aa"
+tgt.AppendNumFixedWidthUC(num,EHex,8);      // "abc000000AA"</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B94F027-6524-54D1-9A5C-3849DA41FCB7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0B94F027-6524-54D1-9A5C-3849DA41FCB7" xml:lang="en"><title>The
+Process Type</title><shortdesc>Each process can be given a unique identity, known as the process
+type, in order to differentiate one process from another.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The process type is defined as a <codeph>TUidType</codeph> which can be
+constructed from one, two or three <codeph>TUid</codeph> components.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B95131E-6B7E-57A0-98B1-0B405207E0C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0B95131E-6B7E-57A0-98B1-0B405207E0C4" xml:lang="en"><title>Forwarding
+or Replying to Email Messages Stored as Plain Text</title><shortdesc>This tutorial explains how to forward email messages that are stored
+as plain text.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <ol id="GUID-584429B6-7ACF-5771-8B39-D7B320CC56EA">
+<li id="GUID-C569807C-68DB-5D45-9F30-83DEBD6AC626"><p>Use the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-5C13FD54-1C93-353C-9BDB-2A30A14BD159"><apiname>CImEmailOperation::CreateForwardL()</apiname></xref> method
+or <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-EF24AB12-F3E9-3AB4-95E9-AB4D2946CDEC"><apiname>CImEmailOperation::CreateReplyL()</apiname></xref> method to forward
+or reply to an email. </p> <p>The newly created email will be stored in the
+same format as the original email. In this case, it is the plain text format. </p> </li>
+<li id="GUID-76E8681F-3967-5E9C-9872-5EED9037DF6B"><p>Use the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-38E7EABD-1300-3DF2-B9DF-B65EEABD8A31"><apiname>CImEmailOperation::ProgressL()</apiname></xref> method
+to obtain the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> parameter of the newly created email.
+This is returned through a <xref href="GUID-36B29964-420D-38D0-AF08-4DA70BED8B6E.dita"><apiname>TPckgC</apiname></xref> &lt;<xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> &gt;
+descriptor. </p> </li>
+<li id="GUID-60F7030B-7BB1-5388-961C-EFC2A468DF6B"><p>Use the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+to create a <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class. </p> </li>
+<li id="GUID-8A4D568F-DADC-527C-92B5-8BC0D995A477"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class
+to create a <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-0BB83271-69F0-5122-B55E-2EBD573184AD"><p>Use the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-57CA3F50-33EA-359B-AABB-4E4E15AF2A18"><apiname>CImEmailMessage::GetBodyTextL()</apiname></xref> function
+to get the body text of the message that is being replied to, or forwarded.
+This will return a <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class. </p> </li>
+<li id="GUID-8D7CD76E-250A-58A5-AF9A-E2DDBCDA5244"><p>If you want to store
+the email message as plain text, complete the following steps from 1 to 3.
+If you want to store the email message as rich text, complete the following
+step 4. </p> <ol id="GUID-0477BD69-206A-596C-B6CB-9DBB4AD5EDB3">
+<li id="GUID-468B0727-2523-5094-BAFD-68D13C6984E1"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-B99E759E-E0D6-3A10-B81C-5BFCAF631B7D"><apiname>CImEmailMessage::OpenPlainBodyTextForWriteL()</apiname></xref> function
+to get <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref>. </p> </li>
+<li id="GUID-E855C798-F93F-5EC4-9DC7-F5A3ED3B8814"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-DFD5B13A-3CE5-35D9-B8F3-31D3DFA0DB41"><apiname>CImPlainBodyText::StoreRichTextAsPlainTexL()</apiname></xref> function
+and pass the edited <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> to store the message. </p> </li>
+<li id="GUID-313CA628-0785-553A-8039-4B9A3BCC34F7"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-022C7A37-91EF-3363-A760-865A1F980917"><apiname>CImPlainBodyText::CommitL()</apiname></xref> function
+to complete the operation. </p> </li>
+<li id="GUID-BB49F1EF-26E3-5BC2-AD3B-DAE4091B1ED6"><p>Edit the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class
+and call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-791117B4-C946-3D43-AE1E-68DDC10F85A3"><apiname>CImEmailMessage::StoreBodyTextL()</apiname></xref> function
+to store the edited message body text. </p> </li>
+</ol> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using  POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0B97A12D-4EA8-5B08-9D59-4A3C892D01D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0B97A12D-4EA8-5B08-9D59-4A3C892D01D4"><title>noglob</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>noglob simple command </userinput> </p> <p>Filename generation (globbing) is not performed on any of the words. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080" xml:lang="en"><title>Introduction</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When you send an SMS message all of the characters in the message are encoded
+as 7-bit GSM code or Unicode Character Set-2 (UCS-2). The message is then
+sent in one or more Protocol Data Units (PDU). A PDU contains information
+about the control, address and data to deliver an SMS message. </p>
+<p>The 7-bit encoding cannot represent all characters. UCS-2 includes all
+of the characters within the Basic Multilingual Plane, but it reduces the
+number of characters in one PDU from 160 to 70. Users are often charged by
+the PDU. A message encoded using UCS-2 can be more expensive than the one
+encoded using 7-bit GSM. There are four types of SMS encodings to encode an
+SMS message: </p>
+<ul>
+<li id="GUID-B548C03F-BCCF-58EC-8043-844372B5A91E"><p><xref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita#GUID-FE94596E-B5BB-51FE-BE38-069840323915/GUID-F7D1E6C8-9605-57FA-9788-AF7FC72BD94C">7-bit GSM encoding</xref>  </p> </li>
+<li id="GUID-C486071F-F184-5DD8-BA4A-51444548DD38"><p><xref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita#GUID-FE94596E-B5BB-51FE-BE38-069840323915/GUID-918FF2E3-B9F4-5C61-8DBA-F9143DB16460">Lossy 7-bit encoding</xref>  </p> </li>
+<li id="GUID-EE33620C-7D69-5BDE-8CBB-ADE2D0CE6BAD"><p><xref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita#GUID-FE94596E-B5BB-51FE-BE38-069840323915/GUID-D2F0E6BE-932E-545D-A0C8-39017E3D67B4">16-bit Unicode encoding</xref>  </p> </li>
+<li id="GUID-1B9705DF-2187-5F43-9615-C43D58417A3C"><p><xref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita#GUID-FE94596E-B5BB-51FE-BE38-069840323915/GUID-93B3DDF2-8EB1-5853-9DFD-3ABF42ADCB40">National language encoding.</xref>  </p> </li>
+</ul>
+<p>The following character converters are used in the SMS encodings: </p>
+<ul>
+<li id="GUID-822C740E-9A27-5D82-BD68-B7094113B535"><p><xref href="GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita">Standard
+SMS Converter</xref>  </p> </li>
+<li id="GUID-E0633334-73B7-5A72-835B-080E78655703"><p><xref href="GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita">Extended
+SMS Converter</xref>  </p> </li>
+<li id="GUID-87BA0ABD-13E7-58B8-8335-7BCE105AD68C"><p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita">Turkish
+National Language Support</xref>. </p> </li>
+<li><p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita">Portuguese National
+Language Support</xref></p></li>
+<li><p><xref href="GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213.dita">Spanish National
+Language Support</xref></p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0BE71FC3-4759-50FC-A74F-C3DD42C9FCED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-0BE71FC3-4759-50FC-A74F-C3DD42C9FCED" xml:lang="en"><title>Languages
+Supported</title><abstract><p>The languages statement lists the languages supported by the
+SIS file. It is a comma separated list of language identifiers preceded by
+an ampersand(<codeph>&amp;</codeph>) character.</p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title> <codeblock id="GUID-FC4E9BCD-F15B-5451-B232-3BA46C3E511E" xml:space="preserve">&amp;lang-code [(dialect-ID)], lang-code [(dialect-ID)], ...
+</codeblock> <ul>
+<li id="GUID-42549C49-E603-56AF-9226-94D1E437143B"><p> <b> lang-code </b> -
+is a two character language abbreviation used to specify the supported language
+variants. </p> <p>It defines the order in which the localized vendor names,
+package-header, options-list, language-specific files and dependency components
+must be specified in a PKG file. </p> </li>
+<li id="GUID-0B8BC35D-6B95-5A5A-B271-B56E82206AAA"><p> <b> dialect-ID </b> -
+is optionally added as a number, defined by the device creators, in parentheses
+after a <codeph>lang-code</codeph>. </p> </li>
+</ul> </refsyn>
+<example><title>Examples</title> <ul>
+<li id="GUID-18883991-4F12-5073-9B1B-4B925ED47CD1"><p>In the following example,
+English, French, and Zulu are specified as the languages suppported by the
+SIS file. Accordingly, the localised vendor name, package header and install
+files are specified for each supported language. </p> <codeblock id="GUID-BBA65FD2-705F-5223-8B5E-73D84ADB7855" xml:space="preserve">
+&amp;EN,FR,ZU(1024)
+
+%{"Vendorname-EN", "Vendorname-FR, Vendorname-ZU"}
+
+#{"MyApp-EN", "MyApp-FR", "MyApp-ZU"}, (0x1000001F), 1, 2, 3, TYPE=SA
+
+{"text\englishfile.txt" "text\frenchfile.txt" "text\zulufile.txt"} - "C:\private\E800005A\file.txt"
+        </codeblock> </li>
+<li id="GUID-A27E52A0-AE40-5665-8E82-45FA1D931167"><p>The following example
+package file illustrates the usage of multiple languages and dialect codes.
+Two dialects are specified for each supported language. </p> <codeblock id="GUID-0767BC0D-C8E2-5DEF-97DE-B316F7033CF4" xml:space="preserve">; This package file shows the dialects feature
+
+&amp;EN(1024),EN(2048),FR(1024),FR(2048),GE(1024),GE(2048)
+
+#{"English-1024","English-2048","French-1024","French-2048","German-1024","German-2048"}, (0x1000001F), 1, 2, 3, TYPE=SA
+
+%{"Vendor","Vendor","Vendeur","Vendeur","Verkaufer","Verkaufer"}
+:"Vendor"
+
+"dialect-3lang-2dial.txt"-"",FT,TC
+{"text\english-1024.txt" "text\english-2048.txt" "text\french-1024.txt" "text\french-2048.txt" "text\german-1024.txt" "text\german-2048.txt"}-"$:\private\10000020\import\dialect.txt"
+</codeblock> </li>
+</ul> </example>
+</refbody><related-links>
+<link href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita"><linktext>Language-Neutral
+Files</linktext></link>
+<link href="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita"><linktext>Language
+Dependent Files</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0BF25E2A-99B9-5558-B805-019430409518.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0BF25E2A-99B9-5558-B805-019430409518"><title>SBSv1 and SBSv2 Build Systems</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian provides two command line build systems, called SBSv1 and SBSv2, to build Symbian platform and applications developed for Symbian platform. </p> <p>SBSv1 is the name that is now given to the <codeph>bldmake</codeph> and <codeph>abld</codeph> build tools that have been provided on Symbian platform kits since Symbian OS v6. In SBSv1 , <codeph>bldmake</codeph> first generates top-level makefiles for a component, then <codeph>abld</codeph> builds the component. The <codeph>bldmake</codeph> and the <codeph>abld</codeph> commands must be run from the directory containing the <filepath>bld.inf</filepath> file. The documentation for the these tools is provided in the Symbian Developer Library. For more information, see <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref>. </p> <p>SBSv2 is a newer build system. Its advantages over SBSv1 include: </p> <ul><li id="GUID-FAA52CDF-408E-54E5-A7A5-2E96BC48FB27"><p>It can run on both Microsoft Windows and Linux operating systems. </p> </li> <li id="GUID-C266954C-BC42-5030-B3CA-E002CAECBAC7"><p>It can use third-party make engine to run parallel builds. </p> </li> <li id="GUID-84C7E8AD-9380-5683-BE6D-4512CB0FB404"><p>It can build the entire Symbian platform from a system definition file. </p> </li> <li id="GUID-F6888067-D5D5-560A-87D1-AA973AD9FEE2"><p>It generates and builds the makefiles in a single step. </p> </li> <li id="GUID-F6555FF3-11C8-50B8-8C7C-0D63AFC30B8C"><p>It can be used from any directory location. </p> </li> </ul> <p>Though SBSv2 uses the same build metadata files (<filepath>bld.inf</filepath> and <filepath>.mmp</filepath>) as SBSv1 for building Symbian platform, SBSv2 can help achieve improved build speed over SBSv1. </p> <p>For more information about SBSv2, see the <i>Symbian Build System v2</i> documentation that is provided with the Platform Developer Toolkit. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e240538_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C02D927-0B06-49BD-8738-149DCDDB23FC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C02D927-0B06-49BD-8738-149DCDDB23FC" xml:lang="en"><title>Preparation
+of the MMP and <filepath>bld.inf</filepath> Files</title><shortdesc>At the end of this phase, Symbian port should have the <filepath>bld.inf</filepath> and
+MMP files.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-8FAD2820-D96D-4AA8-8653-B5A947713788">       <title>MMP
+file</title>       <p>An <filepath>.mmp</filepath> project definition file
+specifies the properties of a project in a platform and compiler-independent
+way. The MMP file is very similar to ‘Makefile’ of Linux. MMP file exists
+per <filepath>.SO</filepath>, <filepath>.A</filepath>, or <filepath>.EXE</filepath>.</p><p>The
+contents of a sample MMP file created for <codeph>libjpeg</codeph> are shown
+below: </p><codeblock xml:space="preserve">TARGET	libjpeg.dll
+TARGETTYPE	DLL
+UID             	0x1000008d 0x0xE0000100 
+CAPABILITY All -Tcb
+EpocAllowDllData
+
+USERINCLUDE	.
+
+SYSTEMINCLUDE	\epoc32\include\stdapis
+SYSTEMINCLUDE	\epoc32\include
+
+SOURCEPATH	.
+// LIBSOURCES
+SOURCE	jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c
+SOURCE	jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c
+SOURCE	jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c
+SOURCE	jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c
+SOURCE	jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c
+SOURCE	jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c
+SOURCE	jfdctint.c jidctflt.c jidctfst.c jidctint.c jidctred.c jquant1.c
+SOURCE	jquant2.c jutils.c jmemmgr.c
+// SYSDEPSOURCES
+SOURCE	jmemansi.c
+LIBRARY	euser.lib
+
+LIBRARY	libc.lib
+MACRO	HAVE_CONFIG_H
+MACRO 	__SYMBIAN32__ </codeblock><p>The following table gives a brief introduction
+to the MMP file keywords found in above file.</p><table id="GUID-367FB69E-EE9B-4100-8E44-6B102430297A">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><b>Keyword</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+<row>
+<entry><codeph>TARGETTYPE</codeph></entry>
+<entry><p>Target type.Can be DLL, EXE, or LIB. Other types are also supported.</p></entry>
+</row>
+<row>
+<entry><codeph>TARGET</codeph></entry>
+<entry><p>Name of the target.</p></entry>
+</row>
+<row>
+<entry><codeph>UID</codeph></entry>
+<entry><p>Unique identifier of the target. It is recommended to use test UIDs
+from the range <codeph>0xE0000000-0xEFFFFFFF</codeph> which is targeted for
+development use only. For production quality code, UIDs must be requested
+from Symbian (<xref href="https://www.symbiansigned.com/app/page" scope="external">https://www.symbiansigned.com/app/page</xref>)
+before the application can be sent for signing. </p></entry>
+</row>
+<row>
+<entry><codeph>CAPABILITY</codeph></entry>
+<entry><p>Capability requirement of the target. </p><note>Even if the example
+uses All-TCB capabilities, it is strongly recommended to use a more narrow
+set of capabilities to have the application successfully signed.</note></entry>
+</row>
+<row>
+<entry><codeph>EpocAllowDllData</codeph></entry>
+<entry><p>Allow global static data in the target</p></entry>
+</row>
+<row>
+<entry><codeph>USERINCLUDE</codeph></entry>
+<entry><p>Local file include path. The compiler will look in this path for
+the files included with “ ”. For example, <codeph>#include "config.h"</codeph></p></entry>
+</row>
+<row>
+<entry><codeph>SYSTEMINCLUDE</codeph></entry>
+<entry><p>System file include path. The compiler will look in this path for
+the files included with<codeph> &lt; &gt;</codeph>. For example, <codeph>#include
+&lt;stdio.h&gt;</codeph></p></entry>
+</row>
+<row>
+<entry><codeph>SOURCEPATH</codeph></entry>
+<entry><p>Source path for the source files.</p></entry>
+</row>
+<row>
+<entry><codeph>SOURCE</codeph></entry>
+<entry><p>Source file listing.</p></entry>
+</row>
+<row>
+<entry><codeph>LIBRARY</codeph></entry>
+<entry><p>Dependent DLL library file list.</p></entry>
+</row>
+<row>
+<entry><codeph>STATICLIBRARY</codeph></entry>
+<entry><p>Dependent static library file list.</p></entry>
+</row>
+<row>
+<entry><codeph>MACRO</codeph></entry>
+<entry><p>Preprocessor declarations. Makefile declares these preprocessor
+declarations using <codeph>–D</codeph> flag. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-C55666DD-4B7F-4913-9D5D-7A5992406422"><title>bld.inf</title><p><filepath>bld.inf</filepath> is
+a component definition file, used by <codeph>bldmake</codeph> to define the <filepath>abld.bat</filepath> file
+and <codeph>makefiles</codeph> to be created. <filepath>bld.inf</filepath> can
+be loosely compared to configure script of Linux. There is one <filepath>bld.inf</filepath> for
+entire the OSS. If the project is divided into more than one module, each
+module can have an individual <filepath>bld.inf</filepath> file. Have a look
+at the contents of the sample MMP file below created for <codeph>libjpeg</codeph>. </p><codeblock xml:space="preserve">PRJ_PLATFORMS
+default
+
+PRJ_MMPFILES
+jpeg.mmp
+
+PRJ_EXPORTS
+jpeglib.h   \epoc32\include\jpeg-6b\jpeglib.h
+jconfig.h   \epoc32\include\jpeg-6b\jconfig.h
+jmorecfg.h  \epoc32\include\jpeg-6b\jmorecfg.h
+jerror.h    \epoc32\include\jpeg-6b\jerror.h
+</codeblock><p>The following table gives a brief introduction to the <filepath>bld.inf</filepath> keywords.</p><table id="GUID-644E05C0-1E42-447D-8223-EC089FF34117">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><b>Keyword</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+<row>
+<entry><codeph>PRJ_PLATFORMS</codeph></entry>
+<entry><p>Platform to which <codeph>makefiles</codeph> will be created.</p></entry>
+</row>
+<row>
+<entry><codeph>PRJ_MMPFILES</codeph></entry>
+<entry><p>MMP file list.</p></entry>
+</row>
+<row>
+<entry><codeph>PRJ_EXPORTS</codeph></entry>
+<entry><p>List of public header files for target library users. This list
+can be prepared by looking at the include directory in Linux installation. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C0A85D1-BC15-502F-9DD1-A48C0A908CED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C0A85D1-BC15-502F-9DD1-A48C0A908CED" xml:lang="en"><title>Text Shell (Zsh) and Telnet Daemon</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Z Shell (Zsh) is a powerful UNIX® shell ported for Symbian platform. It is a command interpreter for UNIX systems and has useful features of other UNIX text shells, such as bash, tcsh, and ksh. </p> <p>Telnet Daemon (TelnetD) and zsh run on the device. The combination of zsh and TelnetD allows users to create and run a Unix-like shell on a Symbian platform device using a PC (or similar) running a Telnet client as a remote terminal. The connection is established using the IP address of the TelnetD (device). </p> <p> <b>Note:</b> All instances of the word <i>device</i> in this section refer to a <i>production phone</i>. </p> <p>This section describes the features of zsh and the commands that it supports. It also provides information about TelnetD, which transfers characters between the shell and a Telnet client. </p> <p>This section contains the following topics: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C19D3F1-CF60-4760-8A77-242E14647738.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C19D3F1-CF60-4760-8A77-242E14647738" xml:lang="en"><title>Touch
+UI observer interfaces</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To support the touch functionality in existing UI components too, S60 5th
+Edition introduced new observer interfaces to the existing components. These
+are:</p>
+<ul>
+<li><p><i>Navigation decorator observer</i></p><p>The navigation decorator
+observer interface is used in the navigation pane. The interface receives
+an event indicating that the decorator’s right or left arrow has been tapped
+(or the navi label), and then the observer implementation can perform an action
+(for example, raise the volume or change focus to the next tab). This might
+be useful if you implement custom controls to be included in the navigation
+control.</p><p>It is defined by <codeph>MAknNaviDecoratorObserver</codeph>.
+The observer can be set by <codeph>CAknNavigationDecorator::SetNaviDecoratorObserver</codeph>.</p> </li>
+<li><p><i>Long tap detector</i></p><p>The long tap detector (<codeph>CAknLongTapDetector</codeph>)
+is an Avkon component that an application or control can use to receive long
+tap events.</p><p>The long tap handler must inherit from <codeph>MAknLongTapDetectorCallBack</codeph> and
+implement the <codeph>HandleLongTapEventL</codeph> call back function for
+long tap events.</p> <p>When the stylus is held down in the same position,
+an animation starts in about 0.15 s to show that the long tap functionality
+has started. Animation is provided by AVKON and cannot be changed by the application
+or control. However, animation can be turned off using the class <codeph>CAknLongTapDetector</codeph> in
+the Touch UI utilities API.</p> <p>For implementation infomation, see the <xref href="GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita">Touch UI utilities API specification</xref>.</p></li>
+<li><p><i>Double-click support in lists</i></p><p>In order to receive double-click
+events from a list or grid, the object that wishes to be informed must implement
+and register the <codeph>MEikListBoxObserver</codeph> interface via <codeph>CEikListBox::SetListBoxObserver</codeph>. </p></li>
+<li><p><i>Title pane touch observer</i></p><p>The title pane touch observer
+enables you to provide functionality for title pane touch events. For implementation
+information, see the <xref href="GUID-B876D548-FD40-4369-B328-7427002B4851.dita">Title
+pane touch observer API specification</xref>.</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0" xml:lang="en"><title>Window Server
+Component</title><shortdesc>The Window Server component manages the use of the screen by applications
+and handles key and pointer events. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The CBR package name for the Window Server component is <filepath>graphics_wserv</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita"><linktext>Windowing
+Collection</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C6CCACF-84B2-5715-BCF3-12330E6F05D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C6CCACF-84B2-5715-BCF3-12330E6F05D4" xml:lang="en"><title>Using Front
+End Processor (FEPBASE)</title><shortdesc>This section explains Front End Processor (FEP), and its implementations
+and events.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C71B9C6-0782-5667-932A-07D770748DCE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C71B9C6-0782-5667-932A-07D770748DCE" xml:lang="en"><title>TextMTM
+utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In addition to the MTM component DLLs, a number of other programs are provided. </p>
+<section><title>Example Code</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.zip" scope="external">TextMTM.zip </xref>  </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.html" scope="peer">browse</xref> to view the example code. </p> <p>The files reproduced
+here are the main files contained in the examples directory. Some extra files
+may be needed to run the examples, and these will be found in the appropriate
+examples directory </p> </section>
+<section><title>Common classes: txut</title> <p>The <filepath>txut</filepath> project
+provides source for a small utilities DLL, which holds code that must be shared
+between the Client and the Server-side Text MTM components. </p> <ul>
+<li id="GUID-193A94E1-21B8-58E0-9196-8B99B315F657"><p> <codeph>TTxtProgress</codeph> encapsulates
+progress information. The Server-side MTM records its progress using this
+class when performing copy and move operations. The User Interface MTM can
+extract information from the class for display to the user. </p> </li>
+<li id="GUID-3A70D7CE-A8EB-5016-9EEB-C9D320B2778D"><p> <codeph>CMTMTxtSettings</codeph> encapsulates
+access to the MTM's settings as they are stored in the central repository. <codeph>TMTMTxtSetting</codeph> encapsulates
+the settings for a single TextMTM service. This contains only a single property:
+the folder to which the service is mapped. </p> </li>
+<li id="GUID-ECA2F381-18F1-5BE8-9B6F-390A9AACF02F"><p> <codeph>TxtUtils</codeph> provides
+static utility functions. </p> </li>
+</ul> </section>
+<section><title>Classes used</title><p><xref href="GUID-AE4CD271-25CD-3115-9D49-F7A28CC83430.dita"><apiname>TTxtProgressCMTMTxtSettings </apiname></xref> <xref href="GUID-E035803A-FFDA-36A7-B159-E2BABECF6F7B.dita"><apiname>TMTMTxtSettingTxtUtils</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C8389B8-91DF-58A1-A2A1-945A18CCBB10.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C8389B8-91DF-58A1-A2A1-945A18CCBB10" xml:lang="en"><title>Using
+TLitC operators</title><shortdesc>Explains how to use <codeph>TLitC</codeph> operations.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>TLitC</codeph> class offers four operators, two of which are
+conversion operators.</p>
+<p>The conversion operators are invoked by the compiler when a <codeph>TLitC&lt;TInt&gt;</codeph> type
+is passed to a function which takes the following argument types:</p>
+<ul>
+<li id="GUID-BEF085A9-56B5-579F-A316-B68C108BED9B"><p>a reference by value,
+i.e. a <codeph>TRefByValue&lt;class              T&gt;</codeph> type</p> </li>
+<li id="GUID-911E904A-83F8-52B1-BAA1-0C993683BAD3"><p>a const reference to
+a descriptor, i.e. a <codeph>const              TDesC&amp;</codeph> type</p> </li>
+</ul>
+<p>The other two operators return:</p>
+<ul>
+<li id="GUID-B42C7636-5E8F-5BD6-98C8-1EF0E7AD388D"><p>a pointer to a constant
+descriptor, i.e. a <codeph>const              TDesC*</codeph> type</p> </li>
+<li id="GUID-141D07F5-4D60-5940-A404-2718494D6CCB"><p>a reference to a constant
+descriptor, i.e. a <codeph>const              TDesC&amp;</codeph> type</p> </li>
+</ul>
+<p>The following code fragments show the situations where the operators are
+called on a <codeph>TLitC</codeph>. The fragments are similar for both <codeph>TLitC8</codeph> and <codeph>TLitC16</codeph>.</p>
+<section id="GUID-AF4A4619-1C5A-4022-9700-4EB09C9001FE"><title>Reference by value conversion operator operator const __TRefDesC()</title> <p>The
+following code fragment shows the operator in use:</p> <codeblock id="GUID-63CE5630-61CB-5428-8F7C-EB84445FD63A" xml:space="preserve">...
+TBuf&lt;256&gt; x;
+...
+_LIT(KTxtFormat,"There are %d cm in a metre");
+x.Format(KTxtFormat,100);
+...
+</codeblock> </section>
+<section id="GUID-6B904805-4C60-4721-B02D-6999CA18E2F5"><title>Const descriptor reference conversion operator operator const
+TDesC&amp;</title> <p>The following code fragment shows the operator in use:</p> <codeblock id="GUID-8D7F387D-B675-5EC4-B88D-4389F4D5B961" xml:space="preserve">...
+_LIT(KSomeData,"Some data");
+...
+TPtrC x(KSomeData);</codeblock> </section>
+<section id="GUID-6389D8D4-CC0E-45AA-81EC-43E86C28A7AE"><title>Address of operator operator&amp;()</title> <p>The following
+code fragment shows the operator in use:</p> <codeblock id="GUID-1AE87D87-53AD-5E88-864A-785D95598D02" xml:space="preserve">class CX...
+ {
+ void Foo(const TDesC* aDesC);
+ };
+
+...
+_LIT(KLiteral,"some text");
+...
+CX* anx;
+...
+anx-&gt;Foo(&amp;KLiteral);
+...</codeblock> </section>
+<section id="GUID-52E52945-1FFD-4B49-96C0-2D423B829033"><title>Reference operator operator()</title> <p>The following code
+fragment shows the operator in use:</p> <codeblock id="GUID-2A7C5828-7C2B-58F2-819E-9EAAD6071457" xml:space="preserve">...
+_LIT(KKeywordSelect,"select");
+if (KKeywordSelect().CompareF(token)&lt;0)
+...</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0C85D5DE-D78D-4DDB-BA00-6278690C1047.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0C85D5DE-D78D-4DDB-BA00-6278690C1047" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Touch UI utilities API is an SDK API and first released in S60 5th
+Edition. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0CA63AEB-9A80-51C6-AE7F-E747D6B3B789.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0CA63AEB-9A80-51C6-AE7F-E747D6B3B789" xml:lang="en"><title>Feature Manager</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Feature Manager is used to customise software by manipulating feature flags.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454" xml:lang="en"><title>Setting
+Channel Properties</title><shortdesc>The channel properties can be configured using the <apiname>CSensrvChannel::SetProperty()</apiname> function.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-578E2FA5-5265-4AF7-88EC-9BA5C143DDF7">       <p>Before setting
+channel properties, you must <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88">open
+the sensor channel</xref>.</p>     </prereq>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-7-1-3-2">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-4-1-4-1-7-1-3-2-1"><cmd>Create a <parmname>TSensrvProperty</parmname> property
+object for setting the <parmname>KSensrvPropIdDataRate</parmname> property
+using the <parmname>TSensrvProperty(const TSensrvPropertyId,const TInt,const
+TInt)</parmname> constructor.</cmd>
+<stepxmp><codeblock xml:space="preserve">...
+TInt val=2;
+TSensrvProperty sensrvProperty(KSensrvPropIdDataRate,KSensrvItemIndexNone,val);
+...</codeblock></stepxmp>
+</step>
+<step id="GUID-3AC7711D-8CBB-427A-BEA1-800539AC1377"><cmd>Set the <parmname>KSensrvPropIdDataRate</parmname> property
+value by passing the property object that you created to <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-B69100DD-522F-3B5A-AC65-DE1950A673F0"><apiname>CSensrvChannel::SetProperty()</apiname></xref>.</cmd>
+<stepxmp><codeblock xml:space="preserve">...
+CSensrvChannel* channel;
+...
+TInt ret;
+ret=channel-&gt;SetProperty(sensrvProperty);
+...</codeblock></stepxmp>
+</step>
+</steps>
+<example><p>The following example explains how to set the x-axis of accelerometer
+channel status from activated to deactivated. </p><p>The axis active property <parmname>KSensrvPropIdAxisActive</parmname> is
+first retrieved using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-1E9D960B-23C4-30DF-A184-7E978AC9AC1B"><apiname>CSensrvChannel::GetPropertyL()</apiname></xref> function.
+If the axis is active, the new <b>deactivated</b> value is set in the retrieved
+property object. Then the channel is updated with this updated property object
+by using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-B69100DD-522F-3B5A-AC65-DE1950A673F0"><apiname>CSensrvChannel::SetProperty()</apiname></xref> function.</p><codeblock xml:space="preserve">TSensrvProperty property;
+    TInt err( KErrNone );
+    TInt axisActive( 0 );
+    iSensorChannel-&gt;GetPropertyL( KSensrvPropIdAxisActive,
+                                  TSensrvAccelerometerAxisData::Index::iAxisX,
+                                  property );
+    property.GetValue( axisActive );
+    if( 1 == axisActive )
+        {
+        property.SetValue( 0 ); // A value other than 1 means that sensor axis is deactivated.
+        err = iSensorChannel-&gt;SetProperty( property );
+        if( KErrNone == err )
+            {
+            //Accelerometer x-axis was successfully deactivated
+            }
+       }
+    else
+        {
+        //Accelerometer x-axis is already inactive
+        }</codeblock></example>
+<postreq id="GUID-5155648B-6A69-4BF4-A5C2-83A8611F2B22"><p>End the session
+with the sensor channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-0B8F50A6-2CA1-316A-82AB-AA026005E810"><apiname>CSensrvChannel::CloseChannel()</apiname></xref> function.</p></postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66" xml:lang="en"><title>BIOMessageMgr:
+BIO Message manager using the message server</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The BIO Message manager example comprises two projects <filepath>BIOMessage.exe</filepath> and <filepath>BIOParser.dll</filepath>.
+The <filepath>BIOMessage.exe</filepath> example connects to the message server,
+creates a BIO message and sends the registered parser DLL and message entry
+to <filepath>BIOParser.dll</filepath>. </p>
+<section id="GUID-BBF66472-C97E-5C14-85BB-30AD56703E83"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-34a2835d-797c-4d05-8919-03fc43821825.zip" scope="external">Biomsgexample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-34a2835d-797c-4d05-8919-03fc43821825.html" scope="peer"> browse</xref> to view the example code. </p> </section>
+<section><title>BIOMessage: BIO messaging using the message server</title> <p><b>Description</b> </p> <p>This
+example code demonstrates BIO messaging using <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> and <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> and
+other supporting classes as mentioned in the <xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita#GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66/GUID-5048F691-DBA0-52DC-BBBA-922EE5DDE8D5">Class
+Summary</xref> below. </p> <p>The <filepath>BIOMessage</filepath> example
+code provides the following functionality: </p> <p><b>Creating a session </b> </p> <codeblock id="GUID-822DA39D-0568-54D9-A8EA-D49ABAB6D4D5" xml:space="preserve">void CBioMessage::Connect();</codeblock> <p>Creates
+a session with the message server using <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref>. </p> <p>The
+generated console output looks like this: </p> <fig id="GUID-3F7EFDA7-7103-58F2-819B-F50A564F67F9">
+<image href="GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e262696_href.png" placement="inline"/>
+</fig> <p><b>Creating a BIO message </b> </p> <codeblock id="GUID-898B2AF1-6B24-516A-A8CF-CE210D9136EC" xml:space="preserve">void CBioMessage::Create(RSendAsMessage&amp; aMessage);</codeblock> <p>This function does the following: </p> <ul>
+<li id="GUID-3B28353D-8885-56A2-9000-B2B481045A4A"><p>creates a BIO message
+of VCard type </p> </li>
+<li id="GUID-B8FE7FB1-D904-5520-9762-A0BAE0D53833"><p>sets the message body
+text </p> </li>
+<li id="GUID-AE681720-90EE-5AEE-9D98-54C41DD19E49"><p>adds the message recipients
+for the message to be sent. </p> </li>
+</ul> <p>The generated console output looks like this: </p> <fig id="GUID-7E3F4DA5-BFC3-5393-A04A-FDE944A89815">
+<image href="GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e262733_href.png" placement="inline"/>
+</fig> <p><b>Sending the BIO message </b> </p> <codeblock id="GUID-AA6C86D7-1657-5E3D-A025-43EB77FD3D31" xml:space="preserve">void CBioMessage::Send(RSendAsMessage&amp; aMessage);</codeblock> <p>Sends the message to the recipients. </p> <p>The generated console output
+looks like this: </p> <fig id="GUID-75B51188-D5AA-5BBD-90CA-3C33D2CF3744">
+<image href="GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e262752_href.png" placement="inline"/>
+</fig> <p><b>Creating the parser </b> </p> <codeblock id="GUID-0E38D4C7-B9D8-5F6E-A0AB-315447101C1D" xml:space="preserve">CBioParser::NewL(CMsvEntry* aEntry);</codeblock> <p>Creates a <codeph>CBioParser</codeph> object based on the message entry. </p> <p><b>Parsing
+the BIO message </b> </p> <codeblock id="GUID-BF605939-E297-5131-AFFA-DFED793492DF" xml:space="preserve">CBioParser::ParserL();</codeblock> <p>This
+function does the following: </p> <ul>
+<li id="GUID-A05F6576-7677-5D92-A9C4-1697D64CBAF3"><p>calls <codeph>ExtractMessageBodyL()</codeph> to
+extract the message body text from <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref>, the message
+store </p> </li>
+<li id="GUID-ADAB322E-2354-52C5-9B7C-A4335E84B6EF"><p>finds, loads and maintains
+a reference count of client processes for a BIO parser DLL </p> </li>
+<li id="GUID-5F5D6BE4-EECE-5E70-82C6-2EB92133A2AF"><p>parses the message body
+text. </p> </li>
+</ul> <p>The generated console output looks like this: </p> <fig id="GUID-2E3907F9-E810-5B1F-A6A0-60484FE004DF">
+<image href="GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e262810_href.png" placement="inline"/>
+</fig><p><b>Class Summary</b></p><p><xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref></p><p> <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref></p><p> <xref href="GUID-CB2BB982-F91D-3E06-8D66-56731AA60EB8.dita"><apiname>CSendAsMessageTypes</apiname></xref></p><p> <xref href="GUID-90C4FDEE-3E4D-32B3-85E1-52C157AC4AC4.dita"><apiname>CSendAsAccounts</apiname></xref></p><p> <xref href="GUID-49738A1E-D452-30F3-9044-6528CABBD5D4.dita"><apiname>CRegisteredParserDll</apiname></xref></p><p> <xref href="GUID-115327CD-43D1-324B-84D7-8DFB6226C42A.dita"><apiname>CBIODatabase</apiname></xref></p><p> <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref></p> </section>
+<section><title>BIOParser: BIO message parsing</title> <p><b>Description</b> </p> <p>This
+example code demonstrates the parsing of the message. <codeph>CBIOExampleParser</codeph> is
+the wrapper class which uses <xref href="GUID-7A187B0D-79D6-3EAD-8181-FE2EBB9043DC.dita"><apiname>CBaseScriptParser2</apiname></xref> and other
+supporting classes mentioned in the <xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita#GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66/GUID-E9472DA3-DA7B-5F4B-ACBF-770D3DE81580">Class
+Summary</xref> below. </p> <p>The <filepath>BIOParser</filepath> example code
+provides the following functionality: </p> <p><b>Creating the parser </b> </p> <codeblock id="GUID-C4ED1683-524A-55DA-88CB-D321C2AA59C2" xml:space="preserve">CBIOExampleParser* CBIOExampleParser::NewL(CRegisteredParserDll&amp; aRegisteredParserDll, CMsvEntry&amp; aEntry, RFs&amp; aFs);</codeblock> <p>Creates a <codeph>CBIOExampleParser</codeph> object based on the registered
+parser DLL and the message entry. </p> <p><b>Parsing the BIO message </b> </p> <codeblock id="GUID-6F493EBE-BD8C-5982-B1AB-B592A3BAD1F4" xml:space="preserve">void CBIOExampleParser::ParseL();</codeblock> <p>Parses
+the BIO message. </p> <p><b>Processing the BIO message </b> </p> <codeblock id="GUID-106E21B6-CDFE-51AB-9C91-C263033B60AE" xml:space="preserve">CBIOExampleParser::ProcessL();</codeblock> <p>Processes
+the parsed data. </p> <p id="GUID-E9472DA3-DA7B-5F4B-ACBF-770D3DE81580"><b>Class
+Summary</b> </p><p><xref href="GUID-7A187B0D-79D6-3EAD-8181-FE2EBB9043DC.dita"><apiname>CBaseScriptParser2</apiname></xref></p> </section>
+<section><title>Build</title> <p>The <filepath>BIOMessageMgr</filepath> example
+code includes the following project files for building the application: <filepath>BIOParser.mmp</filepath>, <filepath>BIOMessage.mmp</filepath> and <filepath>bld.inf</filepath>. </p> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian
+OS build process</xref> describes how to build this application. </p> <p>In
+CodeWarrior: firstly, 'make' the <filepath>BIOParser.mcp</filepath> which
+creates <filepath>BIOParser.dll</filepath> and <filepath>BIOParser.lib</filepath> in <filepath>\epoc32\release\winscw\</filepath>  <i>&lt;build_variant&gt;</i>, then secondly, make <filepath>BIOMessage.exe</filepath> in the same directory.
+Run <filepath>BIOMessage.mcp</filepath>, which runs <filepath>BIOMessage.exe</filepath> thus
+launching the emulator. </p> </section>
+<section><title>Usage</title> <p>Launch the target. For emulator targets,
+run: <filepath>\epoc32\release\&lt;wins or winscw&gt;\&lt;urel or           udeb&gt;\BIOMessage.exe</filepath>.
+If TechView emulator is used, to run the application go to System menu and
+click on Open files / programs window. Start the "BIO Messaging Example" application. </p> <p>Step
+through each phase of the example by pressing the space bar or by tapping
+on the window drawn by the example. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e240595_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8"><title>Standard SMS Converter</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Standard SMS Converter and the alphabet it supports. </p> <section><title>Introduction</title> <p>The Standard SMS Converter is a built-in converter based on the GSM 7-bit encoding. This converter is identified by the <codeph>KCharacterSetIdentifierSms7Bit</codeph> UID, which is defined in the <filepath>charconv.h</filepath> header file. To better understand the different character set of each SMS converter, the Standard SMS Converter is set as the baseline. Any differences or additions to the character set of Standard SMS Converter are listed. </p> <p>For all of the converters, any undefined Unicode is converted to a question mark (?)–GSM code <codeph>0x37</codeph>. Any code outside GSM <codeph>0x00</codeph> ~<codeph>0x7F</codeph> is converted to the Unicode replacement character <codeph>0xFFFD</codeph>. </p> </section> <section id="GUID-2EE2587C-16F2-524C-B350-E22A75F86F3A"><title>Alphabet</title> <p>The highlighted boxes in Figure 1 illustrate the alphabet of the standard SMS converter: </p> <ul><li id="GUID-16BD53E0-8C2B-503B-82BE-0A1D3D0AF2F1"><p>GSM 7-bit default alphabet </p> </li> <li id="GUID-16D5929D-8A03-5082-9B82-F68D863D69A1"><p>GSM 7-bit default alphabet extension table </p> </li> <li id="GUID-743F9057-8A3E-520B-8F8A-C6FBA3DFEEDD"><p>Extra lossy conversions–shown as Lossy Characters 1 in Figure 4. </p> </li> </ul> <p>Figure 1 </p> <fig id="GUID-51217C83-4B41-5A05-B5FB-100C89996B6B"><title>
+             Alphabet of the Standard SMS Converter 
+          </title> <image href="GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e380474_href.png" placement="inline"/></fig> <p>For information about the GSM 7-bit default alphabet and extension table, see 3GPP TS 23.038 V8.1.0. The table below lists the extra lossy conversions supported by the standard converter. </p> <table id="GUID-6CCD9755-6504-590B-B061-57B4B5C67DED"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><tbody><row><entry><p> <b>Character</b>  </p> </entry> <entry><p> <b>Unicode</b>  </p> </entry> <entry><p> <b>GSM</b>  </p> </entry> <entry><p> <b>Converted Character</b>  </p> </entry> </row> <row><entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry> <entry><p>0x00E7 </p> </entry> <entry><p>0x09 </p> </entry> <entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry> </row> <row><entry><p>δ GREEK SMALL LETTER DELTA </p> </entry> <entry><p>0x03B4 </p> </entry> <entry><p>0x10 </p> </entry> <entry><p>Δ GREEK CAPITAL LETTER DELTA </p> </entry> </row> <row><entry><p>φ GREEK SMALL LETTER PHI </p> </entry> <entry><p>0x03C6 </p> </entry> <entry><p>0x12 </p> </entry> <entry><p>Φ GREEK CAPITAL LETTER PHI </p> </entry> </row> <row><entry><p>ϕ GREEK PHI SYMBOL </p> </entry> <entry><p>0x03D5 </p> </entry> <entry><p>0x12 </p> </entry> <entry><p>Φ GREEK CAPITAL LETTER PHI </p> </entry> </row> <row><entry><p>γ GREEK SMALL LETTER GAMMA </p> </entry> <entry><p>0x03B3 </p> </entry> <entry><p>0x13 </p> </entry> <entry><p>Γ GREEK CAPITAL LETTER GAMMA </p> </entry> </row> <row><entry><p>λ GREEK SMALL LETTER LAMDA </p> </entry> <entry><p>0x03BB </p> </entry> <entry><p>0x14 </p> </entry> <entry><p>Λ GREEK CAPITAL LETTER LAMDA </p> </entry> </row> <row><entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> <entry><p>0x03A9 </p> </entry> <entry><p>0x15 </p> </entry> <entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> </row> <row><entry><p>ω GREEK SMALL LETTER OMEGA </p> </entry> <entry><p>0x03C9 </p> </entry> <entry><p>0x15 </p> </entry> <entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> </row> <row><entry><p>ώ GREEK SMALL LETTER OMEGA WITH TONOS </p> </entry> <entry><p>0x03CE </p> </entry> <entry><p>0x15 </p> </entry> <entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> </row> <row><entry><p>Ω OHM SIGN </p> </entry> <entry><p>0x2126 </p> </entry> <entry><p>0x15 </p> </entry> <entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> </row> <row><entry><p>π GREEK SMALL LETTER PI </p> </entry> <entry><p>0x03C0 </p> </entry> <entry><p>0x16 </p> </entry> <entry><p>Π GREEK CAPITAL LETTER PI </p> </entry> </row> <row><entry><p>∏ N-ARY PRODUCT </p> </entry> <entry><p>0x220F </p> </entry> <entry><p>0x16 </p> </entry> <entry><p>Π GREEK CAPITAL LETTER PI </p> </entry> </row> <row><entry><p>ψ GREEK SMALL LETTER PSI </p> </entry> <entry><p>0x03C8 </p> </entry> <entry><p>0x17 </p> </entry> <entry><p>Ψ GREEK CAPITAL LETTER PSI </p> </entry> </row> <row><entry><p>ς GREEK SMALL LETTER FINAL SIGMA </p> </entry> <entry><p>0x03C2 </p> </entry> <entry><p>0x18 </p> </entry> <entry><p>Σ GREEK CAPITAL LETTER SIGMA </p> </entry> </row> <row><entry><p>σ GREEK SMALL LETTER SIGMA </p> </entry> <entry><p>0x03C3 </p> </entry> <entry><p>0x18 </p> </entry> <entry><p>Σ GREEK CAPITAL LETTER SIGMA </p> </entry> </row> <row><entry><p>∑ N-ARY SUMMATION </p> </entry> <entry><p>0x2211 </p> </entry> <entry><p>0x18 </p> </entry> <entry><p>Σ GREEK CAPITAL LETTER SIGMA </p> </entry> </row> <row><entry><p>θ GREEK SMALL LETTER THETA </p> </entry> <entry><p>0x03B8 </p> </entry> <entry><p>0x19 </p> </entry> <entry><p>Θ GREEK CAPITAL LETTER THETA </p> </entry> </row> <row><entry><p>ϑ GREEK THETA SYMBOL </p> </entry> <entry><p>0x03D1 </p> </entry> <entry><p>0x19 </p> </entry> <entry><p>Θ GREEK CAPITAL LETTER THETA </p> </entry> </row> <row><entry><p>ξ GREEK SMALL LETTER XI </p> </entry> <entry><p>0x03BE </p> </entry> <entry><p>0x1A </p> </entry> <entry><p>Ξ GREEK CAPITAL LETTER XI </p> </entry> </row> <row><entry><p>(FORM FEED) </p> </entry> <entry><p>0x000C </p> </entry> <entry><p>0x1B0A </p> </entry> <entry><p>(PAGE BREAK) </p> </entry> </row> <row><entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry> <entry><p>0x00C0 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry> <entry><p>0x00C1 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry> <entry><p>0x00C2 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry> <entry><p>0x00C3 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Ά GREEK CAPITAL LETTER ALPHA WITH TONOS </p> </entry> <entry><p>0x0386 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Α GREEK CAPITAL LETTER ALPHA </p> </entry> <entry><p>0x0391 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>ά GREEK SMALL LETTER ALPHA WITH TONOS </p> </entry> <entry><p>0x03AC </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>α GREEK SMALL LETTER ALPHA </p> </entry> <entry><p>0x03B1 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Β GREEK CAPITAL LETTER BETA </p> </entry> <entry><p>0x0392 </p> </entry> <entry><p>0x42 </p> </entry> <entry><p>B LATIN CAPITAL LETTER B </p> </entry> </row> <row><entry><p>β GREEK SMALL LETTER BETA </p> </entry> <entry><p>0x03B2 </p> </entry> <entry><p>0x42 </p> </entry> <entry><p>B LATIN CAPITAL LETTER B </p> </entry> </row> <row><entry><p>ϐ GREEK BETA SYMBOL </p> </entry> <entry><p>0x03D0 </p> </entry> <entry><p>0x42 </p> </entry> <entry><p>B LATIN CAPITAL LETTER B </p> </entry> </row> <row><entry><p>È LATIN CAPITAL LETTER E WITH GRAVE </p> </entry> <entry><p>0x00C8 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry> <entry><p>0x00CA </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ë LATIN CAPITAL LETTER E WITH DIAERESIS </p> </entry> <entry><p>0x00CB </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Έ GREEK CAPITAL LETTER EPSILON WITH TONOS </p> </entry> <entry><p>0x0388 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ε GREEK CAPITAL LETTER EPSILON </p> </entry> <entry><p>0x0395 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>έ GREEK SMALL LETTER EPSILON WITH TONOS </p> </entry> <entry><p>0x03AD </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>ε GREEK SMALL LETTER EPSILON </p> </entry> <entry><p>0x03B5 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ή GREEK CAPITAL LETTER ETA WITH TONOS </p> </entry> <entry><p>0x0389 </p> </entry> <entry><p>0x48 </p> </entry> <entry><p>H LATIN CAPITAL LETTER H </p> </entry> </row> <row><entry><p>Η GREEK CAPITAL LETTER ETA </p> </entry> <entry><p>0x0397 </p> </entry> <entry><p>0x48 </p> </entry> <entry><p>H LATIN CAPITAL LETTER H </p> </entry> </row> <row><entry><p>ή GREEK SMALL LETTER ETA WITH TONOS </p> </entry> <entry><p>0x03AE </p> </entry> <entry><p>0x48 </p> </entry> <entry><p>H LATIN CAPITAL LETTER H </p> </entry> </row> <row><entry><p>η GREEK SMALL LETTER ETA </p> </entry> <entry><p>0x03B7 </p> </entry> <entry><p>0x48 </p> </entry> <entry><p>H LATIN CAPITAL LETTER H </p> </entry> </row> <row><entry><p>Ì LATIN CAPITAL LETTER I WITH GRAVE </p> </entry> <entry><p>0x00CC </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry> <entry><p>0x00CD </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX </p> </entry> <entry><p>0x00CE </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ï LATIN CAPITAL LETTER I WITH DIAERESIS </p> </entry> <entry><p>0x00CF </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ί GREEK CAPITAL LETTER IOTA WITH TONOS </p> </entry> <entry><p>0x038A </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS </p> </entry> <entry><p>0x0390 </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ι GREEK CAPITAL LETTER IOTA </p> </entry> <entry><p>0x0399 </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA </p> </entry> <entry><p>0x03AA </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>ί GREEK SMALL LETTER IOTA WITH TONOS </p> </entry> <entry><p>0x03AF </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>ι GREEK SMALL LETTER IOTA </p> </entry> <entry><p>0x03B9 </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA </p> </entry> <entry><p>0x03CA </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Κ GREEK CAPITAL LETTER KAPPA </p> </entry> <entry><p>0x039A </p> </entry> <entry><p>0x4B </p> </entry> <entry><p>K LATIN CAPITAL LETTER K </p> </entry> </row> <row><entry><p>κ GREEK SMALL LETTER KAPPA </p> </entry> <entry><p>0x03BA </p> </entry> <entry><p>0x4B </p> </entry> <entry><p>K LATIN CAPITAL LETTER K </p> </entry> </row> <row><entry><p>Μ GREEK CAPITAL LETTER MU </p> </entry> <entry><p>0x039C </p> </entry> <entry><p>0x4D </p> </entry> <entry><p>M LATIN CAPITAL LETTER M </p> </entry> </row> <row><entry><p>μ GREEK SMALL LETTER MU </p> </entry> <entry><p>0x03BC </p> </entry> <entry><p>0x4D </p> </entry> <entry><p>M LATIN CAPITAL LETTER M </p> </entry> </row> <row><entry><p>Ν GREEK CAPITAL LETTER NU </p> </entry> <entry><p>0x039D </p> </entry> <entry><p>0x4E </p> </entry> <entry><p>N LATIN CAPITAL LETTER N </p> </entry> </row> <row><entry><p>ν GREEK SMALL LETTER NU </p> </entry> <entry><p>0x03BD </p> </entry> <entry><p>0x4E </p> </entry> <entry><p>N LATIN CAPITAL LETTER N </p> </entry> </row> <row><entry><p>Ò LATIN CAPITAL LETTER O WITH GRAVE </p> </entry> <entry><p>0x00D2 </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry> <entry><p>0x00D3 </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry> <entry><p>0x00D4 </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry> <entry><p>0x00D5 </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ό GREEK CAPITAL LETTER OMICRON WITH TONOS </p> </entry> <entry><p>0x038C </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ο GREEK CAPITAL LETTER OMICRON </p> </entry> <entry><p>0x039F </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>ο GREEK SMALL LETTER OMICRON </p> </entry> <entry><p>0x03BF </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>ό GREEK SMALL LETTER OMICRON WITH TONOS </p> </entry> <entry><p>0x03CC </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ρ GREEK CAPITAL LETTER RHO </p> </entry> <entry><p>0x03A1 </p> </entry> <entry><p>0x50 </p> </entry> <entry><p>P LATIN CAPITAL LETTER P </p> </entry> </row> <row><entry><p>ρ GREEK SMALL LETTER RHO </p> </entry> <entry><p>0x03C1 </p> </entry> <entry><p>0x50 </p> </entry> <entry><p>P LATIN CAPITAL LETTER P </p> </entry> </row> <row><entry><p>Τ GREEK CAPITAL LETTER TAU </p> </entry> <entry><p>0x03A4 </p> </entry> <entry><p>0x54 </p> </entry> <entry><p>T LATIN CAPITAL LETTER T </p> </entry> </row> <row><entry><p>τ GREEK SMALL LETTER TAU </p> </entry> <entry><p>0x03C4 </p> </entry> <entry><p>0x54 </p> </entry> <entry><p>T LATIN CAPITAL LETTER T </p> </entry> </row> <row><entry><p>Ù LATIN CAPITAL LETTER U WITH GRAVE </p> </entry> <entry><p>0x00D9 </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry> <entry><p>0x00DA </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX </p> </entry> <entry><p>0x00DB </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Χ GREEK CAPITAL LETTER CHI </p> </entry> <entry><p>0x03A7 </p> </entry> <entry><p>0x58 </p> </entry> <entry><p>X LATIN CAPITAL LETTER X </p> </entry> </row> <row><entry><p>χ GREEK SMALL LETTER CHI </p> </entry> <entry><p>0x03C7 </p> </entry> <entry><p>0x58 </p> </entry> <entry><p>X LATIN CAPITAL LETTER X </p> </entry> </row> <row><entry><p>Ý LATIN CAPITAL LETTER Y WITH ACUTE </p> </entry> <entry><p>0x00DD </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS </p> </entry> <entry><p>0x038E </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>Υ GREEK CAPITAL LETTER UPSILON </p> </entry> <entry><p>0x03A5 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA </p> </entry> <entry><p>0x03AB </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS </p> </entry> <entry><p>0x03B0 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>υ GREEK SMALL LETTER UPSILON </p> </entry> <entry><p>0x03C5 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA </p> </entry> <entry><p>0x03CB </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ύ GREEK SMALL LETTER UPSILON WITH TONOS </p> </entry> <entry><p>0x03CD </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ϒ GREEK UPSILON WITH HOOK SYMBOL </p> </entry> <entry><p>0x03D2 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ϓ GREEK UPSILON WITH ACUTE AND HOOK SYMBOL </p> </entry> <entry><p>0x03D3 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ϔ GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL </p> </entry> <entry><p>0x03D4 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>Ζ GREEK CAPITAL LETTER ZETA </p> </entry> <entry><p>0x0396 </p> </entry> <entry><p>0x5A </p> </entry> <entry><p>Z LATIN CAPITAL LETTER Z </p> </entry> </row> <row><entry><p>ζ GREEK SMALL LETTER ZETA </p> </entry> <entry><p>0x03b6 </p> </entry> <entry><p>0x5A </p> </entry> <entry><p>Z LATIN CAPITAL LETTER Z </p> </entry> </row> <row><entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry> <entry><p>0x00E1 </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry> <entry><p>0x00E2 </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry> <entry><p>0x00E3 </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry> <entry><p>0x00EA </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>ë LATIN SMALL LETTER E WITH DIAERESIS </p> </entry> <entry><p>0x00EB </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry> <entry><p>0x00ED </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>î LATIN SMALL LETTER I WITH CIRCUMFLEX </p> </entry> <entry><p>0x00EE </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>ï LATIN SMALL LETTER I WITH DIAERESIS </p> </entry> <entry><p>0x00EF </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry> <entry><p>0x00f3 </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry> <entry><p>0x00F4 </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry> <entry><p>0x00F5 </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry> <entry><p>0x00FA </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>û LATIN SMALL LETTER U WITH CIRCUMFLEX </p> </entry> <entry><p>0x00FB </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>ý LATIN SMALL LETTER Y WITH ACUTE </p> </entry> <entry><p>0x00FD </p> </entry> <entry><p>0x79 </p> </entry> <entry><p>y LATIN SMALL LETTER Y </p> </entry> </row> <row><entry><p>ÿ LATIN SMALL LETTER Y WITH DIAERESIS </p> </entry> <entry><p>0x00FF </p> </entry> <entry><p>0x79 </p> </entry> <entry><p>y LATIN SMALL LETTER Y </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>See also</title> <p> <xref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita">SMS Encodings and Converters Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0CD273A2-434C-52E0-B840-CCF24B2853B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0CD273A2-434C-52E0-B840-CCF24B2853B8" xml:lang="en"><title>Generating
+Random Bytes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example shows how the <codeph>CRandom::GenerateRandomBytesL()</codeph> method
+is used to populate a descriptor with a series of random bytes. </p>
+<codeblock id="GUID-69C4E8AB-CF2F-59C4-B96D-5B540602E7A6" xml:space="preserve">
+using namespace CryptoSpi;
+
+//Create a pointer to store the factory-generated random implementation object
+CRandom* randomImpl = NULL;
+
+//Calling the CreateRandomL() method of the random factory class 
+//creates a new CRandom object    
+TRAPD(err, CRandomFactory::CreateRandomL(randomImpl, KRandomUid, NULL));
+
+if(randomImpl &amp;&amp; (err == KErrNone))
+    {    
+    //Create an 8 bit descriptor 50 bytes long with a max length of 50 bytes
+    TBuf8&lt;50&gt; randomStr(50);
+ 
+    //Passing the 8 bit descriptor to the CRandom::GenerateRandomBytesL() 
+    //method fills it with random bytes. If there is no memory available 
+    //or any problems occur, the method may leave.    
+    randomImpl-&gt;GenerateRandomBytesL(randomStr); 
+    }
+
+//Destroy the random implementation object    
+delete randomImpl;
+randomImpl = NULL;</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e46046_href.png has changed
Binary file Symbian3/SDK/Source/GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e52048_href.png has changed
Binary file Symbian3/SDK/Source/GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e60110_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0CDA8FCA-AABE-5988-9467-30AA1AECCC90.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-0CDA8FCA-AABE-5988-9467-30AA1AECCC90"><title>Creating and Deleting a Session: Tutorial</title><shortdesc>This tutorial shows you how to create and delete a session with the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-120922C5-07D1-504F-ABA7-9ECDE4BE5CFA"><p>Before you start, you must understand: </p> <ul><li id="GUID-E663CC7F-6F20-5425-9FDE-39645B22F292"><p>the general concept of the Comms Database </p> </li> <li id="GUID-1E784DD6-CE6B-58B3-BCF6-EE8578A46211"><p>the specific concept of Comms Database Sessions </p> </li> <li id="GUID-60084A0B-78DF-54C1-AEB3-A93415FFE77D"><p>how to write and build application code to run on Symbian OS </p> </li> </ul> </prereq> <context id="GUID-13169F3C-A14A-56F2-9805-315510A1ED6D"><p>You create a session with the Comms Database before you start to read and write the data. You can also set the access attributes for the session. </p> </context> <steps id="GUID-D7867EDD-C29B-573E-AF0C-7BA32B35F9EF"><step id="GUID-E7217733-86F3-5085-B194-049A795AB5B5"><cmd>Include the header files, define namespaces, and declare constants. </cmd> <info>The<filepath>CommsDatTypesV1_1.h</filepath> header file defines the classes and API items that the tool or application requires. This header file includes all other required header files. </info> <info>Define the CommsDat namesapce. </info> <info>Define a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TVersion</apiname></xref> set with the version information. </info> <info>The location of this code depends on the structure of the tool or application. </info> <stepxmp><codeblock id="GUID-A73251F7-AF1B-582C-8BA5-28E71CFD3307" xml:space="preserve">#include &lt;CommsDatTypesV1_1.h&gt; 
+
+// Add a declaration like this for each specific version you need.
+// In this example, the major version number, the minor version number
+// and the build number are all 1.
+#define KCDVersion1_1 TVersion(1,1,1) 
+
+using namespace CommsDat;
+
+...</codeblock> </stepxmp> </step> <step id="GUID-68B7A254-9E14-5E1D-8A48-8848F33C3F5E"><cmd>Create the session. </cmd> <info>You select the version of the interface when you create the session. </info> <stepxmp><codeblock id="GUID-69C6C0FE-E5F1-59CE-A8D8-665D5E35CC01" xml:space="preserve">...
+// for the version 1.1.1 defined in step 1
+CMDBSession* iDb = CMDBSession::NewL(KCDVersion1_1); 
+...</codeblock> </stepxmp> </step> <step id="GUID-75A1BC43-4A18-5CC6-BA43-6B4F33357ADC"><cmd>Set the access attributes for the session. </cmd> <info>This is an optional step. </info> <stepxmp>The following code allows the tool or application to see the elements that are marked as hidden in the Comms Database. The <codeph>ECHidden</codeph> symbol is an enum value of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TCDAttributeFlags</apiname></xref> enum. You can also set the other access attributes, but the hidden attribute is the most common use case. </stepxmp> <stepxmp><codeblock id="GUID-CF73F37B-369C-5FC1-B8D8-79C6A50CA96D" xml:space="preserve">...
+iDb-&gt;SetAttributeMask(ECDHidden); 
+...</codeblock> </stepxmp> </step> <step id="GUID-8AD04100-7ACD-5B93-A0F9-94BFDD5B464C"><cmd>Delete the session object after the tool or application has finished its use of the Comms Database </cmd> <stepxmp><codeblock id="GUID-3674B821-9EFC-523F-8980-0D0EF214094A" xml:space="preserve">...
+delete iDb;</codeblock> </stepxmp> </step> </steps> </taskbody><related-links><link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database concepts</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E"><title>SQL Optimisation Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Several best practice tips have been created as a response to customer experience feedback. Use this guide to decide where to start optimizing. </p> <section id="GUID-4AF79E32-4BC9-5A13-BF0E-F7F329982F1C"><title> Optimisation issues</title> <p>SQL performance can be optimised by following good practice in the design of databases, formulation of SQL queries, use of indexes and other techniques. </p> <p id="GUID-828B8B44-8CC3-5CCA-A4C9-BF90353B2002"><b> Transient tables</b> </p> <p>Transient tables are created by the database engine to compute intermediate results. </p> <p>Transient tables are stored on disk by default, which may result in unexpected I/O calls that will probably have a negative impact on database performance. </p> <p id="GUID-0F43181C-2C32-5B5D-8AA2-4588D3DAF171-GENID-1-6-1-20-1-1-6-1-1-10-1-7-1-5-1-3-1-2-2-6"><b>Prevent datafile corruption</b> </p> <p>Datafile corruption is corruption of the file containing a database with invalid data. </p> <p>Datafile corruption can occur after a system crash or loss of power. SQLite maintains files called rollback journals from which the last valid state of a database can be reconstructed. However, if a rollback journal is removed or renamed during recovery from a crash, for instance in the course of application recovery the database will remain corrupted. </p> <p id="GUID-0F43181C-2C32-5B5D-8AA2-4588D3DAF171-GENID-1-6-1-20-1-1-6-1-1-10-1-7-1-5-1-3-1-2-2-9"><b>SQL index tips</b> </p> <p>Indexes are added either manually or automatically to columns of a data table to speed up SELECT operations. </p> <p>Indexes greatly speed up the performance of SELECT statements but can impact on insertions, updates and deletions and memory usage. It is not efficient to index all columns regardless of their purpose and under certain circumstances indexes decrease performance. They are best added to a database at the last stage of development. </p> <p><b>SQL insertion tips</b> </p> <p>INSERT, like UPDATE and DELETE, is an inherently fast operation but it can execute slowly if each individual operation is wrapped in a transaction, which is the default behaviour. </p> <p>Multiple insertion statements should be grouped into transactions by explicit use of the COMMIT statement or else by use of TEMP tables which can be inserted into the database as a batch in a single operation, and by reuse of prepared statements. Insert statements should use bound parameters for reasons of efficiency and to prevent SQL injection attacks. </p> <p><b>SQL schema tips</b> </p> <p>A database schema is a definition of its structure including the tables, data types and keys. </p> <p>The design of a database can impact on the efficiency of the SQL queries run on it. Correct ordering of columns in a table and use of keys makes a database more efficient, while it is inefficient to store numerous large data structures such as BLOBs directly in a database. Schemas are best kept small. </p> <p><b>SQL expressions</b> </p> <p>An expression is the part of an SQL statement which uses operators to combine values to form new values. </p> <p>Some ways of writing an expression are more efficient than others because of the way the SQLite optimiser rewrites operators. It is also important to use constant subexpressions within subqueries. </p> <p><b>SQL statement tips</b> </p> <p>Certain SQL statements have special case optimisations. </p> <p>There are special rules for using the MIN and MAX functions, the UNION and UNION ALL operators and OFFSET clauses efficiently within SELECT statements. </p> <p><b>SQL joins</b> </p> <p>SQL joins are used to combine multiple tables into virtual tables. </p> <p>A join on multiple tables involves reordering their columns to construct the combined virtual table. The optimiser attempts to perform this ordering in the most efficient way but is not always successful. You can override the optimiser by using the CROSS JOIN operator. </p> <p><b>ANALYZE command</b> </p> <p>The ANALYZE command is used to provide statistics about the distribution of values in a populated database. </p> <p>The ANALYZE command creates a table SQLITE_STAT1 containing the statistical profile of the database at the time when it was run. The optimiser uses that data to choose between implementation options. Developers can also use the data to make their own optimisations and they can modify the table to influence the behaviour of the optimiser. </p> <p><b>SQL WHERE clause tips</b> </p> <p>The SQL WHERE clause restricts the effect of an SQL statement to rows satisfying the expression which it contains. </p> <p>The performance of a WHERE clause can be improved by following certain rules. It is inefficient to use expressions within WHERE clauses instead of indexed column names. Also, the AND operator should always be preferred to the OR operator. </p> </section> </conbody><related-links><link href="GUID-831F9AA3-0209-53DC-96C4-04157F22870C.dita"><linktext>SQL Developer Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D093C3D-4D85-455E-B685-064A9B25B1FE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0D093C3D-4D85-455E-B685-064A9B25B1FE" xml:lang="en"><title>Touch
+UI user experience</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In general, the touch UI in Symbian emulates the functionality of the Arrow
+and Selection keys, but there are many deviations to this general principle.
+Touch interaction design is a success if mobile device users choose to use
+the stylus or finger even if all the same tasks could be done on the hardware
+keys. All Symbian common components are touch-enabled, allowing full use with
+a finger.</p>
+<p>The touch UI is designed to enable full task flow with touch, without the
+need to switch to hardware keys. Thus, the design ensures that users can complete
+a task with the chosen interaction method (keys or touch) from start to finish.
+However, the touch user interface offers some usability benefits compared
+with keyboard use.</p>
+<p>Observe the following guidelines when designing applications for touch
+use:</p>
+<ul>
+<li><p>Base design decisions on real use cases.</p></li>
+<li><p>Enable touch only for obvious functions to make sure that users can
+find them.</p></li>
+<li><p>Keep in mind that not every item on the screen has to have a functionality
+attached to it and that the functionality should not be too surprising or
+radical.</p></li>
+<li><p>Keep in mind that theme design alone is not sufficient as means of
+indicating touch functionality; where one theme may indicate touch, another
+may not.</p></li>
+</ul>
+<p>In touch interaction, touch refers to pressing the finger or stylus against
+the touch screen, tap corresponds to touch and release, while touch and drag
+means touching and moving the finger or stylus along the screen. Basic touch
+interaction is achieved through a short tap and long tap. In the short tap,
+users place down and lift up a finger on the same item within a short period
+of time. For example, when selecting items from a list, the first short tap
+moves the focus to an item and the second short tap performs the Set function.
+There is no time dependency between the taps. A long tap performs some specific
+actions (described in more detail in <xref href="GUID-C11AF871-56C8-4EA4-A1E0-E2B23372EF84.dita">Touch
+down and hold</xref>)
+when users hold down the finger on a component for a set amount of time. The
+following table lists the actions that take place on various finger movements. </p>
+<note><p>The touch and drag functionality is not supported by Symbian
+as an integrated part of the style, but it is supported in some selected applications
+like moving items in the <xref href="GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita">Menu</xref>.
+You can use it in 3rd party applications.</p></note>
+<table id="GUID-1A7C0B14-3A0D-4CC1-B6C4-377AC4615E2F"><title>Touch events</title>
+<tgroup cols="2"><colspec colname="col1" colwidth="0.47*"/><colspec colname="col2" colwidth="1.53*"/>
+<thead>
+<row>
+<entry>Touch type</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Touch</p></entry>
+<entry><p>The following actions take place on touch: </p><ul>
+<li><p>The component or control under the finger takes active focus. </p></li>
+<li><p>The button under the finger changes its appearance to the pressed down
+status. </p></li>
+<li><p>Scrolling is activated if the finger is on a scrollbar.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Tap</p></entry>
+<entry><p>The following actions take place on a tap (touch and release): </p><ul>
+<li><p>The menu command under the finger is activated. </p></li>
+<li><p>The button that was pressed down is released and the corresponding
+function is performed (unless it is a latching button as in a toolbar).</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Touch and cancel</p></entry>
+<entry><p>Users can cancel any action on the objects on which they place the
+finger by dragging the finger outside the object area before lifting it. If
+the users drag the finger back onto the object before they lift it, the action
+is performed.</p></entry>
+</row>
+<row>
+<entry><p>Touch and drag</p></entry>
+<entry><p>Users can place the finger on the screen and move it on the screen
+without lifting it. This kind of dragging can be used to: </p><ul>
+<li><p>Scroll lists and grids. </p></li>
+<li><p>Select multiple objects in lists (see <xref href="GUID-D9F25AAD-18A1-43AC-B59B-82396DAA68F9.dita">Touch
+based multiple selection</xref>). </p></li>
+<li><p>Browse menu items. When the finger moves on a menu item, the item is
+focused and opens possible submenu panes. Lifting the finger performs the
+focused menu command. </p></li>
+<li><p>Highlight text in appropriate editor fields (<i>paint</i> it). </p></li>
+<li><p>Perform application-specific functions, such as drawing lines or dragging
+selections.</p></li>
+</ul></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section id="GUID-48D98CA8-47ED-4E6D-8A43-388D8A0293E5"><title>Using
+touch events in C++ applications</title><p>For implementation information
+on using the <xref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita">application
+and UI frameworks</xref> for receiving touch events, see <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">Window
+server events</xref> and <xref href="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita">Pointer
+events</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D16866C-F46B-5A2B-B974-324278588A1B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0D16866C-F46B-5A2B-B974-324278588A1B"><title>XML Framework Concept</title><shortdesc>This section explains the concept of String Dictionary in XML Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>WBXML requires use of string dictionaries to store the element strings specific to the WBXML. The XML Framework allows strings to be stored for a particular DTD, XML namespace or WBXML codepage in an ECOM plug-in that can be accessed when required by the Parser and Client. These plug-ins are refered as String Dictionary plug-ins and they are all managed through a String Dictionary Collection object . </p> </section> <section><title>String dictionary</title> <p>String dictionary is a concept of holding strings, and mapping them to token values. For example, string dictionaries allow the WBXML parser to parse various types (encodings) of WBXML documents, such as WML, Service Indication, etc. It must be provided for each different encoding of WBXML document. </p> <p>String dictionaries are mainly used by the WBXML parser as the documents they parse are tokenised. They can also be used by other parsers within the same process as the strings are also loaded into the string pool (a collection of string groups). In these cases, there are no mappings associated. The string pool avoids string duplication and allows for fast comparisons. </p> <p>All string comparisons within the WBXML and XML parsers are case-sensitive. If the string in the XML document does not match the case of the strings in the <codeph>.st</codeph> file, they are not matched. For WBXML, there are pre-defined DTDs, and hence, strings are pre-defined for both parser and client. </p> <p>A string dictionary may either be loaded into the string dictionary collection prior to parsing or while parsing. The strings within the dictionary are linked into the string table statically at compile time and then loaded into the String Pool at runtime. For example, a string dictionary is provided by the WBXML component for static linkage into the program. When the parser parses, any string it comes across that are not statically linked are added to the string pool; these are called Dynamic Strings. Dynamic strings do not belong to any string dictionary and therefore are not in the string dictionary collection. </p> <p>For XML, load the string dictionary prior to parsing because the XML parser has no concept of string dictionaries and does not understand what or how to load them; it only creates <codeph>RStrings</codeph>. These <codeph>RStrings</codeph> are passed back to the client as a function call (callback) on a client supplied object that encounters a published API specified by the XML Framework. </p> <p> <b>NOTE</b>: The user who implements the callback must also have access to this same String Pool for the comparisons to work. </p> </section> </conbody><related-links><link href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita"><linktext>XML Framework Overview</linktext> </link> <link href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita"><linktext>String Pools</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5"><title>What are fields</title><shortdesc>This topic describes the structure of a field. A field is an item that can be stored in the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <p>A field is a container and an element. A field is the basic unit of information in the Comms Database. </p> <p>A field is represented by the templated class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;T&gt;</codeph>. The template parameter defines the type of data that the field contains. For example <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TInt</apiname></xref>, <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TDesC</apiname></xref>, <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TBool</apiname></xref>   </p> <p>Fields are collected into records. </p> <fig id="GUID-39CDC3FB-156B-539B-A513-7B725A97D3B9"><image href="GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e66123_href.png" placement="inline"/></fig> <p><b>Getting data from a field </b> </p> <p>An overloaded conversion operator converts the data value in a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;T&gt;</codeph> object to the template type. The template type is the type defined by the characters <codeph>T</codeph>. The operator allows you to use a <codeph>CMDBField&lt;T&gt;</codeph> object on the right-hand side of an assignment call. The operator also allows you to pass a <codeph>CMDBField&lt;T&gt;</codeph> object into a function that requires items of the template type. </p> <p>The value of a field in memory is NULL: </p> <ul><li id="GUID-1500B567-B899-5769-97D8-E7949B6034CA"><p>if the caller has not set the value </p> </li> <li id="GUID-2766C253-443B-5BD1-977F-69EB4E2349CD"><p>if the field as not been loaded from the Comms Database </p> </li> </ul> <p>If the value of a field is NULL after the field has been successfully loaded from the Comms Database, the field has been explicitly set to NULL by the writer of the record. </p> <p><b>Setting data into a field </b> </p> <p>A field has an assignment operator. A type <codeph>T</codeph> field accepts a type <codeph>T</codeph> item on the right-hand side of an assignment. </p> <p>A descriptor has variable length data. You need to set the size of the buffer that the field uses to store data. You must call <codeph>SetMaxLengthL()</codeph> on the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;T&gt;</codeph> object and pass the length of the data to be added. You then use the assignment operator. The length that you set must be enough or the assignment operator does not work. The <codeph>SetL()</codeph> function is an alternative method. This function calculates the length of a descriptor parameter for a descriptor field type and performs the allocation and assignment. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D2456BA-0737-5AB4-9C5E-F8CD70F4DCF6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0D2456BA-0737-5AB4-9C5E-F8CD70F4DCF6"><title>Incremental Matcher</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>An incremental matcher compares two text buffers from left-to-right. For example, the match between "garage" and "gander" is "ga". </p> <p>It has four key concepts - incremental matcher base class, buffer matcher, pointer to descriptor matcher and resizable buffer matcher. </p> <section><title>Incremental matcher base class</title> <p>The base class provides the interface to get and set the text to be matched, and also to perform match tests. </p> <p>The base class is <xref href="GUID-A735CD33-ABE9-30BA-95D3-16F3B17F82C3.dita"><apiname>RIncrMatcherBase</apiname></xref>. </p> </section> <section><title>Buffer matcher</title> <p>Derived from <xref href="GUID-A735CD33-ABE9-30BA-95D3-16F3B17F82C3.dita"><apiname>RIncrMatcherBase</apiname></xref>, the buffer matcher class incrementally matches text against a modifiable descriptor buffer (<codeph>TBuf</codeph>). </p> <p>It is provided by <xref href="GUID-C7341971-5224-3446-A6F5-0B66EEA74342.dita"><apiname>RIncrMatcherBuf</apiname></xref>. </p> </section> <section><title>Pointer to descriptor matcher</title> <p>Derived from <xref href="GUID-A735CD33-ABE9-30BA-95D3-16F3B17F82C3.dita"><apiname>RIncrMatcherBase</apiname></xref>, the pointer to descriptor matcher class incrementally matches text against a descriptor accessed via a pointer. </p> <p>It is provided by <xref href="GUID-401277A8-94D8-3A07-9414-A828077DEDDC.dita"><apiname>RIncrMatcherPtr</apiname></xref>. </p> </section> <section><title>Resizable buffer matcher</title> <p>Derived from <xref href="GUID-A735CD33-ABE9-30BA-95D3-16F3B17F82C3.dita"><apiname>RIncrMatcherBase</apiname></xref>, the resizable buffer matcher class incrementally matches text against a text buffer with variable maximum length. </p> <p>It is provided by <xref href="GUID-988254C9-B869-3F25-874B-9A077CCE8CEB.dita"><apiname>RIncrMatcherTextBuf</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e65088_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D5692FB-305E-58B2-B105-B309BB9AE38D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-0D5692FB-305E-58B2-B105-B309BB9AE38D"><title>Location Acquisition API Reference</title><shortdesc>This document lists the main classes of the Location Acquisition API with links to reference documentation. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><title>Purpose</title> <p>This document provides a list of the main classes and types that are part of the Location Acquisition API. Each section gives a brief description of the purpose of the classes. The links can be followed to: </p> <ul><li id="GUID-93600B21-94FC-5EB4-B265-EEFCD2D366C2"><p>Full reference documentation describing each class </p> </li> <li id="GUID-C4CD6ADF-C8F2-531F-8DFD-EE576627A44A"><p>Guide material describing how to use the classes </p> </li> </ul> </section> <section><title>API classes and types</title> <p>This section describes the most important classes of the Location Acquisition API. </p> <p><b>Client/server interaction classes</b> </p> <p> <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita"><apiname>RPositionServer</apiname></xref> is the class used to make a connection to the location server. </p> <p> <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita"><apiname>RPositioner</apiname></xref> is the class used to create a sub-session with the location server for the purpose of obtaining the current position. </p> <p><b>See also </b> </p> <p><xref href="GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita">Location Acquisition API Overview</xref>  </p> <p><xref href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita">How to Get Location Information</xref>  </p> <p><b>Position data classes</b> </p> <p> <xref href="GUID-DDCBA817-9D88-3332-ABD3-1DDC6E397851.dita"><apiname>TCoordinate</apiname></xref> is the class that holds the basic coordinates of a location (latitude, longitude and altitude). </p> <p> <xref href="GUID-17A40F7C-E4CD-3F82-832A-AA8142973053.dita"><apiname>TLocality</apiname></xref> is the class that adds an error estimate for the horizontal and vertical accuracy of a <xref href="GUID-DDCBA817-9D88-3332-ABD3-1DDC6E397851.dita"><apiname>TCoordinate</apiname></xref>. </p> <p> <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> is the standard data structure for retrieving location data. It adds a timestamp to the inherited <xref href="GUID-17A40F7C-E4CD-3F82-832A-AA8142973053.dita"><apiname>TLocality</apiname></xref> information. </p> <p><b>See also </b> </p> <p><xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">Position Data and Info Classes</xref>  </p> <p><xref href="GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita">Position Data</xref>  </p> <p><b>Data retrieval classes</b> </p> <p> <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref> is the standard class for getting a <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> location fix from the location server. </p> <p><b>See also </b> </p> <p><xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">Position Data and Info Classes</xref>  </p> <p><xref href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita">How to Get Location Information</xref>  </p> <p><b>Extended data retrieval classes</b> </p> <p> <xref href="GUID-E66165C3-6391-39CF-BF88-99A61D69E6FA.dita"><apiname>TCourse</apiname></xref> is the class used to hold information about the current speed and direction of the device. </p> <p> <xref href="GUID-B4CD3637-0FC6-38B8-AE89-C03EEC83C50D.dita"><apiname>TPositionCourseInfo</apiname></xref> is the class for getting <xref href="GUID-E66165C3-6391-39CF-BF88-99A61D69E6FA.dita"><apiname>TCourse</apiname></xref> data from the location server. </p> <p> <xref href="GUID-5440B1A0-98B0-3689-AC0B-27D5A35BFDA1.dita"><apiname>TSatelliteData</apiname></xref> is the class that holds satellite data. </p> <p> <xref href="GUID-54AE0674-C49D-3329-8B77-3A58EFFC03D7.dita"><apiname>TPositionSatelliteInfo</apiname></xref> is the class for getting <xref href="GUID-5440B1A0-98B0-3689-AC0B-27D5A35BFDA1.dita"><apiname>TSatelliteData</apiname></xref> from the location server. </p> <p> <xref href="GUID-C0D87E5C-315E-37E6-829E-73F93E83748E.dita"><apiname>HPositionGenericInfo</apiname></xref> is the class for passing extended position data between a client and the Location Server. </p> <p><b>See also </b> </p> <p><xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">Position Data and Info Classes</xref>  </p> <p><b>Module information</b> </p> <p> <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita"><apiname>TPositionModuleInfo</apiname></xref> is the class that holds information on position modules. This information includes the capabilities of the module, such as whether it can supply altitude or satellite data and the quality of position described by a <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita"><apiname>TPositionQuality</apiname></xref> object. </p> <p> <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita"><apiname>TPositionQuality</apiname></xref> is the class that describes the quality of position that a positioning module can deliver. </p> <p><b>See also </b> </p> <p><xref href="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita">Positioning Modules</xref>  </p> <p><xref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita">How to Use Module Information</xref>  </p> <p><b>Module updates, status and events</b> </p> <p> <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita"><apiname>TPositionModuleStatus</apiname></xref> is the class that describes a positioning module's status, such as whether it is ready or disabled. </p> <p> <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> is the class used to indicate that a module status change has occurred. </p> <p> <xref href="GUID-E60595B9-B6E2-38E1-BE1E-A82113C7EC94.dita"><apiname>TPositionUpdateOptions</apiname></xref> is the class used by a client to set position update options such as a request timeout and whether partial updates are accepted. </p> <p><b>See also </b> </p> <p><xref href="GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita">Positioning Module Status</xref>  </p> <p><xref href="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita">How to Get Module Status Changes</xref>  </p> <p><b>Privacy requester classes</b> </p> <p> <xref href="GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA.dita"><apiname>CRequestor</apiname></xref> defines a privacy requester (such as a service or contact) that is requesting location information. </p> <p> <xref href="GUID-BAB32310-D928-3314-B253-9685721EABE0.dita"><apiname>RRequestorStack</apiname></xref> defines a stack of <codeph>CRequestors</codeph> and is used when requester acts on behalf of another to request location information. </p> <p><b>See also </b> </p> <p><xref href="GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita">Privacy Requester Classes</xref>  </p> </section> <section><title>Header files and libraries</title> <p>To use the Location Acquisition API, client applications do the following: </p> <ul><li id="GUID-BBAE358D-BD42-5021-8F37-095FACF8F797"><p>Include the appropriate header files defined in table 1 below. </p> <table id="GUID-B7F5B72B-FF87-5619-9562-D2D239BE706B"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Header file</entry> <entry>Contents</entry> </row> </thead> <tbody><row><entry><p> <filepath> lbs.h</filepath>  </p> </entry> <entry><p>Main client/server classes </p> </entry> </row> <row><entry><p> <filepath> lbsclasstypes.h</filepath>  </p> </entry> <entry><p>Enumerated types used in the API </p> </entry> </row> <row><entry><p> <filepath>lbscommon.h</filepath>  </p> </entry> <entry><p>API constants, positioning module status and quality classes </p> </entry> </row> <row><entry><p> <filepath> lbscriteria.h</filepath>  </p> </entry> <entry><p>Positioning module criteria classes </p> </entry> </row> <row><entry><p> <filepath> lbserrors.h</filepath>  </p> </entry> <entry><p>API error and panic codes </p> </entry> </row> <row><entry><p> <filepath> lbsfieldids.h</filepath>  </p> </entry> <entry><p>Field ids used by extended data class <codeph>HPositionGenericInfo</codeph>  </p> </entry> </row> <row><entry><p> <filepath> lbsfields.h</filepath>  </p> </entry> <entry><p> <codeph>HPositionGenericInfo</codeph> definition. </p> </entry> </row> <row><entry><p> <filepath> lbsipc.h</filepath>  </p> </entry> <entry><p>Values used for client/server IPC </p> </entry> </row> <row><entry><p> <filepath> lbsipc.hrh</filepath>  </p> </entry> <entry><p>Values used for client/server IPC </p> </entry> </row> <row><entry><p> <filepath> lbsposition.h</filepath>  </p> </entry> <entry><p>Position data classes <codeph>TPosition</codeph>, <codeph>TCourse</codeph> etc. </p> </entry> </row> <row><entry><p> <filepath> lbspositioninfo.h</filepath>  </p> </entry> <entry><p>Position info classes <codeph>TPositionInfo</codeph> etc. </p> </entry> </row> <row><entry><p> <filepath> lbsrequestor.h</filepath>  </p> </entry> <entry><p>Privacy requester classes. </p> </entry> </row> <row><entry><p> <filepath> lbssatellite.h</filepath>  </p> </entry> <entry><p>Classes for satellite data and info. </p> </entry> </row> </tbody> </tgroup> </table> <p>Table 1. Location Acquisition API header files. </p> </li> <li id="GUID-A4C5A97C-DE7A-55F3-A251-C5DC53CBE2AF"><p>link against the library <filepath>lbs.dll</filepath> (import library is <filepath>lbs.lib</filepath>). </p> </li> </ul> <p> </p> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,489 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57" xml:lang="en"><title>Example
+of a SIP Client Resolver Plug-in</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is an example of a SIP Client Resolver plug-in called <codeph>CSimpleAppLauncher</codeph>. </p>
+<p>In this example, the plug-in capabilities are not defined in a resource
+file but are defined in the implementation as the <codeph>KCapabilities</codeph> literal
+descriptor. </p>
+<p>If capabilities are defined in the resource file instead of within the
+implementation, they are defined in the <codeph>opaque_data</codeph> field
+in XML format. See <xref href="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita#GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57/GUID-2B6A49E7-B483-59E2-B679-9828B483AB52">Example
+of capabilities definition in XML format</xref>. </p>
+<section id="GUID-1DF21E5C-9D66-5BBD-A1FD-91B5043D5D72"><title>Implementation
+of CSimpleAppLauncher using CSIPResolvedClient interface</title> <p><b> CSimpleAppLauncher.H </b> </p> <codeblock id="GUID-25F9D5DF-0D59-5236-8E04-641F36C0DEF8" xml:space="preserve">#include "SipResolvedClient.h"
+
+class CSimpleAppLauncher : public CSIPResolvedClient
+{
+public:    // Constructors and destructor
+/**
+ * Static constructor
+ * @return An initialized instance of this class.
+ */
+static CSimpleAppLauncher* NewL();
+
+/// Destructor
+~CSimpleAppLauncher();
+
+public: // from CSIPResolvedClient
+TUid ChannelL(RStringF aMethod, 
+      const TDesC8&amp; aRequestUri,
+      const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+      const TDesC8&amp; aContent,
+      const CSIPContentTypeHeader* aContentType=0);
+
+void ConnectL(TUid aUid);
+
+const TDesC8&amp; Capabilities();
+
+private: // Constructors
+
+inline CSimpleAppLauncher() {}
+
+// Second phase constructor
+void ConstructL(); 
+};
+</codeblock> <p><b> CSimpleAppLauncher.CPP </b> </p> <codeblock id="GUID-D7CF3E31-D2E1-5CF6-AAD0-6CE028EB9412" xml:space="preserve">#include "CSimpleAppLauncher.h"
+
+const TUid KMyApplicationUid = { 0x101F5D45 }; 
+
+_LIT8(KCapabilities,
+"&lt;SIP_CLIENT ALLOW_STARTING=\"YES\"&gt;&lt;SIP_HEADERS&gt;\
+&lt;ACCEPT value=\"text/plain\"/&gt;&lt;/SIP_HEADERS&gt;&lt;/SIP_CLIENT&gt;");
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher::NewL
+// -----------------------------------------------------------------------------
+//
+CSimpleAppLauncher* CSimpleAppLauncher::NewL()
+{
+CSimpleAppLauncher* self = new( ELeave ) CSimpleAppLauncher;
+CleanupStack::PushL( self );
+self-&gt;ConstructL();
+CleanupStack::Pop( self );
+return self;
+}
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSimpleAppLauncher::ConstructL()
+{
+}
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher::~CSimpleAppLauncher
+// -----------------------------------------------------------------------------
+//
+CSimpleAppLauncher::~CSimpleAppLauncher()
+{
+}
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher::ChannelL
+// -----------------------------------------------------------------------------
+//
+TUid CSimpleAppLauncher::ChannelL(RStringF /*aMethod*/,
+const TDesC8&amp; /*aRequestUri*/,
+const RPointerArray&lt;CSIPHeaderBase&gt;&amp; /*aHeaders*/,
+const TDesC8&amp; /*aContent*/,
+const CSIPContentTypeHeader* /*aContentType*/)
+{
+// In the basic case application wants all the requests to itself
+return KMyApplicationUid;
+
+}
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher::ConnectL
+// -----------------------------------------------------------------------------
+//
+void CSimpleAppLauncher::ConnectL(TUid aUid)
+{
+// application specific starting logic that leads to 
+// the connection with the SIP. The same UID must be
+// provided to SIP while invoking CSIP::NewL().
+}
+    
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher::Capabilities
+// -----------------------------------------------------------------------------
+//
+const TDesC8&amp; CSimpleAppLauncher::Capabilities()
+{
+// if an application did not provide capabilities in the
+// ECOM rsc-file this function will be invoked by the 
+// resolution logic implementation.
+return KCapabilities;
+}
+</codeblock> <p><b> 00000001.RSS </b> </p> <codeblock id="GUID-BA39D436-55CD-54AC-99F6-0AFDBE825E3F" xml:space="preserve">00000001.RSS 
+#include &lt;RegistryInfo.rh&gt;
+
+RESOURCE REGISTRY_INFO theInfo
+   {
+   // UID for the DLL
+   dll_uid = 0x00000001;
+   // Declare array of interface info
+   interfaces = 
+      {
+      INTERFACE_INFO
+         {
+         // UID of interface that is implemented
+         interface_uid = 0x102010DD;
+         implementations = 
+            {
+            IMPLEMENTATION_INFO
+               {
+               implementation_uid = 0x00000001;
+               version_no = 1;
+               default_data = "101F5D45"; // SIP client application UID SIPTestUI in this case)
+               }
+            };
+         }
+     };
+ }</codeblock> <p id="GUID-2B6A49E7-B483-59E2-B679-9828B483AB52"><b>Example
+of capabilities definition in XML format</b> </p> <p>This is an example of
+defining capabilities in XML format. </p> <codeblock id="GUID-AD845CAF-ADC0-5C53-BF4A-E02D9D5E6A15" xml:space="preserve">&lt;SIP_CLIENT ALLOW_STARTING="YES"&gt;
+&lt;SIP_HEADERS&gt;
+&lt;ACCEPT_CONTACT value="*;mobility="mobile";media="audio"" /&gt; 
+&lt;ALLOW_EVENTS value="presence" /&gt; 
+&lt;ACCEPT value="somecontent/type" /&gt; 
+&lt;ACCEPT value="application/sdp" /&gt; 
+&lt;/SIP_HEADERS&gt;
+&lt;SDP_LINES&gt;
+&lt;LINE name="m" value="audio 30000 RTP/AVP 98" /&gt; 
+&lt;/SDP_LINES&gt;
+&lt;/SIP_CLIENT&gt;
+</codeblock> <p> <b>Note:</b> This XML file is an example to demonstrate how
+to define capabilities in XML format. The contents of this file are not related
+to the <codeph>CSimpleAppLauncher</codeph> example plug-in in anyway, as the
+capabilities for the example plug-in is proved. </p> </section>
+<section><title>Implementation of CSimpleAppLauncher2 using CSIPResolvedClient2
+interface</title> <p>This is an example of SIP Client Resolver plug-in named <codeph>CSimpleAppLauncher2</codeph>. </p> <p><b>CSimpleAppLauncher2.h</b> </p> <codeblock id="GUID-AC545323-9326-506E-984C-CF831A3A6828" xml:space="preserve">#include "SipResolvedClient2.h"
+
+class CSimpleAppLauncher2 : public CSIPResolvedClient2
+      {
+      public: // Constructors and destructor
+
+/**
+* Static constructor
+* @return An initialized instance of this class.
+*/
+static CSimpleAppLauncher2* NewL();
+
+/// Destructor
+~CSimpleAppLauncher2();
+
+       public: // from CSIPResolvedClient2
+
+TBool MatchAcceptContactsL(
+            RStringF aMethod,
+            const CUri8&amp; aRequestUri,
+            const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+            const TDesC8&amp; aContent,
+            const CSIPContentTypeHeader* aContentType,
+            TUid&amp; aClientUid);
+
+           TBool MatchEventL(
+                RStringF aMethod,
+                const CUri8&amp; aRequestUri,
+                const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+                const TDesC8&amp; aContent,
+                const CSIPContentTypeHeader* aContentType,
+                TUid&amp; aClientUid);
+
+    TBool MatchRequestL(
+                RStringF aMethod,
+                const CUri8&amp; aRequestUri,
+                const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+                const TDesC8&amp; aContent,
+                const CSIPContentTypeHeader* aContentType,
+                TUid&amp; aClientUid );
+
+    TBool ConnectSupported() ;
+
+    void ConnectL( const TUid&amp; aClientUid );
+
+    void CancelConnect( const TUid&amp; aClientUid );
+
+    RPointerArray&lt;CSIPContentTypeHeader&gt; SupportedContentTypesL();
+
+    RPointerArray&lt;CSdpMediaField&gt; SupportedSdpMediasL();
+
+    void AddClientSpecificHeadersForOptionsResponseL(
+                                        RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders );
+
+       private: // Constructors
+
+inline CSimpleAppLauncher2(){}
+
+// Second phase constructor
+void ConstructL(); 
+      
+       private: //Data
+
+    RPointerArray&lt;CSIPAcceptContactHeader&gt; iAcceptContactHeaders;
+    CSIPEventHeader*      iEvent;
+    CSIPExtensionHeader*  iExtensionHeader; 
+};
+</codeblock> <p><b>CSimpleAppLauncher2.cpp</b> </p> <codeblock id="GUID-C65A4DFA-C332-5096-B885-017E9C8E7722" xml:space="preserve">#include "CSimpleAppLauncher2.h"
+
+const TUid KResolvedClient2PluginUID = { 0x23456789 };
+
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::NewL
+// -----------------------------------------------------------------------------
+//
+CSimpleAppLauncher2* CSimpleAppLauncher2::NewL()
+    {
+    CSimpleAppLauncher2* self = new( ELeave ) CSimpleAppLauncher2;
+    CleanupStack::PushL( self );
+    self-&gt;ConstructL();
+    CleanupStack::Pop( self );
+    return self;    
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSimpleAppLauncher2::ConstructL()
+    {
+    _LIT8(KACValue, "*;+resolvedexample2");
+    iAcceptContactHeaders = CSIPAcceptContactHeader::DecodeL(KACValue());
+    _LIT8(KEventValue,"precense.winfo.jinfo.kinfo");
+    iEvent = CSIPEventHeader::DecodeL(KEventValue());
+    iExtensionHeader = CSIPExtensionHeader::NewL( _L8("ExtraHeader"),
+    _L8("resolvedClient2"));
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::~CSimpleAppLauncher2
+// -----------------------------------------------------------------------------
+//
+CSimpleAppLauncher2::~CSimpleAppLauncher2()
+    {
+    iAcceptContactHeaders.ResetAndDestroy();
+    delete iEvent;
+    delete iExtensionHeader;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::MatchAcceptContactsL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//
+TBool CSimpleAppLauncher2::MatchAcceptContactsL(
+    RStringF /*aMethod*/,
+    const CUri8&amp; /*aRequestUri*/,
+    const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+    const TDesC8&amp; /*aContent*/,
+    const CSIPContentTypeHeader* /*aContentType*/,
+    TUid&amp; aClientUid)
+    {
+    
+    TBool match = EFalse;
+    if ( iAcceptContactHeaders.Count() )
+        {
+        CSIPAcceptContactHeader* acceptContact = 
+           static_cast&lt;CSIPAcceptContactHeader*&gt;(iAcceptContactHeaders[0]);
+           for (TInt i = 0;i &lt; aHeaders.Count() &amp;&amp; !match;i++)
+                {
+                CSIPAcceptContactHeader* ac = 
+                      static_cast&lt;CSIPAcceptContactHeader*&gt;(aHeaders[i]);
+                 if ( ac == acceptContact )
+                     {
+                     match = ETrue;
+                     aClientUid.iUid = 0x23456789;
+                     }
+                }
+        }
+    return match;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::MatchEventL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//
+TBool CSimpleAppLauncher2::MatchEventL(
+    RStringF /*aMethod*/,
+    const CUri8&amp; /*aRequestUri*/,
+    const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+    const TDesC8&amp; /*aContent*/,
+    const CSIPContentTypeHeader* /*aContentType*/,
+    TUid&amp; aClientUid)
+    {
+    TBool match = EFalse;
+    if ( iEvent )
+        {
+           for (TInt i = 0;i &lt; aHeaders.Count() &amp;&amp; !match;i++)
+                {
+                CSIPEventHeader* event = 
+                        static_cast&lt;CSIPEventHeader*&gt;(aHeaders[i]);
+                if ( event == iEvent )
+                    {
+                    match = ETrue;
+                    aClientUid.iUid = 0x23456789;
+                    }
+                }
+        }
+    return match;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::MatchRequestL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//
+TBool CSimpleAppLauncher2::MatchRequestL(
+    RStringF /*aMethod*/,
+    const CUri8&amp; /*aRequestUri*/,
+    const RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders,
+    const TDesC8&amp; /*aContent*/,
+    const CSIPContentTypeHeader* /*aContentType*/,
+    TUid&amp; aClientUid)
+    {
+    TBool match = EFalse;
+    if ( iExtensionHeader )
+        {
+           for (TInt i = 0;i &lt; aHeaders.Count() &amp;&amp; !match;i++)
+                 {
+                 CSIPExtensionHeader* extension = 
+                        static_cast&lt;CSIPExtensionHeader*&gt;(aHeaders[i]);
+                 if ( iExtensionHeader-&gt;Name() == extension-&gt;Name() )
+                     {
+                     match = ETrue;
+                     aClientUid.iUid = 0x23456789;
+                    }
+                 }
+        }
+    return match;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::ConnectSupported
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//
+TBool CSimpleAppLauncher2::ConnectSupported()
+    {
+    return ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::ConnectL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//
+void CSimpleAppLauncher2::ConnectL( 
+    const TUid&amp; aClientUid )
+    {
+    // application specific starting logic that leads to 
+    // the connection with the SIP. The same UID must be
+    // provided to SIP while invoking CSIP::NewL().
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::CancelConnect
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//        
+void CSimpleAppLauncher2::CancelConnect(
+    const TUid&amp; /*aClientUid*/ )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::SupportedContentTypesL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//        
+RPointerArray&lt;CSIPContentTypeHeader&gt; 
+        CSimpleAppLauncher2::SupportedContentTypesL()
+    {
+    RPointerArray&lt;CSIPContentTypeHeader&gt; headers;
+    _LIT8 (KAppWithSdp, "application/sdp");
+    CSIPContentTypeHeader* contentTypeHeader = 
+    CSIPContentTypeHeader::DecodeL(KAppWithSdp());
+    CleanupStack::PushL( contentTypeHeader );
+    headers.AppendL( contentTypeHeader );
+    CleanupStack::Pop( contentTypeHeader );
+    return headers;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::SupportedSdpMediasL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//        
+RPointerArray&lt;CSdpMediaField&gt; 
+        CSimpleAppLauncher2::SupportedSdpMediasL()
+    {
+    RStringPool sdpStrPool = SdpCodecStringPool::StringPoolL();
+    RStringF media = sdpStrPool.OpenFStringL(_L8("audio"));
+    CleanupClosePushL(media);
+    RStringF protocol = sdpStrPool.OpenFStringL(_L8("RTP/AVP"));
+    CleanupClosePushL(protocol);
+    CSdpMediaField* mediafield = 
+    CSdpMediaField::NewL(media,0,protocol,_L8("formatlist"));
+    CleanupStack::Pop(2);//media,protocol
+    media.Close();
+    protocol.Close();
+    CleanupStack::PushL(mediafield);
+    RPointerArray&lt;CSdpMediaField&gt; headers;
+    headers.AppendL(mediafield);
+    CleanupStack::Pop(mediafield);
+    return headers;
+    }
+
+// -----------------------------------------------------------------------------
+// CSimpleAppLauncher2::AddClientSpecificHeadersForOptionsResponseL
+// From CSIPResolvedClient2
+// -----------------------------------------------------------------------------
+//        
+void CSimpleAppLauncher2::AddClientSpecificHeadersForOptionsResponseL( 
+                    RPointerArray&lt;CSIPHeaderBase&gt;&amp; aHeaders )
+    {
+    CSIPExtensionHeader* extHeader =  
+        CSIPExtensionHeader::NewL( _L8("ExtraHeader"),   
+    _L8("resolvedClient2"));
+    CleanupStack::PushL( extHeader );
+    TBool found(EFalse);
+    for ( TInt i = 0;i &lt; aHeaders.Count() &amp;&amp; !found;i++ )
+        {
+        if ( aHeaders[i]-&gt;IsExtensionHeader() )
+            {
+              //It is plug-ins responsibility to check that the new extension 
+              //header is not yet exsisiting in aHeaders array.
+
+            if ( (static_cast &lt;CSIPExtensionHeader*&gt; (aHeaders[i]) )-&gt;Value() 
+                   == extHeader-&gt;Value() &amp;&amp;(static_cast &lt;CSIPExtensionHeader*&gt; 
+                             (aHeaders[i]) )-&gt;Name() == extHeader-&gt;Name() )
+                {
+                found = ETrue;
+                CleanupStack::Pop( extHeader );
+                delete extHeader;
+                }
+            }
+        }
+    if ( !found )
+        {
+        aHeaders.AppendL( extHeader );
+        CleanupStack::Pop( extHeader );
+        }
+    }
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D619063-F2DB-53FC-A5E6-BC09AD915FA4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0D619063-F2DB-53FC-A5E6-BC09AD915FA4" xml:lang="en"><title>Resource
+member initialisation overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The resource initialiser has different forms depending on whether a single,
+simple, member is being initialised, or whether a struct or an array is being
+initialised:</p>
+<codeblock xml:space="preserve">&lt;resource-initialiser&gt;
+<b>resource-initialiser ::</b>=
+	&lt;member-name&gt; [ (&lt;length-limit&gt;) ] = &lt;initialiser&gt;&lt;initialiser&gt;
+<b>initialiser :</b>:=
+	&lt;simple-initialiser&gt; | &lt;struct-initialiser&gt; | &lt;array-initialiser&gt;</codeblock>
+<p>Resource members may be initialised by default (in the struct definition)
+or explicitly initialised (in the resource definition).</p>
+<p>In general,</p>
+<ul>
+<li id="GUID-E712BF25-9F6A-5E9E-8F85-7ACBF010F7C1"><p>If a member is initialised
+in a <codeph>RESOURCE</codeph> statement, then that is its value.</p> </li>
+<li id="GUID-FF416E99-A21F-5525-B01C-BEA51B216E25"><p>If a member is initialised
+in a <codeph>STRUCT</codeph> statement, then that is its value for all resources
+which do not explicitly initialise it.</p> </li>
+<li id="GUID-CA918017-F0C1-5E1F-8D8A-893653C2D94E"><p>If a member is <i>neither</i> initialised
+in a <codeph>RESOURCE</codeph> statement <i>nor</i> a <codeph>STRUCT</codeph> statement,
+then: <codeph>BYTE</codeph>, <codeph>WORD</codeph> and <codeph>DOUBLE</codeph> members
+contain zero; <codeph>TEXT</codeph>, <codeph>LTEXT</codeph> and <codeph>BUF</codeph> members
+contain an empty string.</p> </li>
+<li id="GUID-590BD79C-AB1B-537C-9A23-3F0902539B3A"><p>It is an error for <codeph>LINK</codeph> and <codeph>LLINK</codeph> members
+to have no explicit value, so they must be initialised, either by default
+(in the <codeph>STRUCT</codeph> statement) or explicitly (in the <codeph>RESOURCE</codeph> statement).</p> </li>
+<li id="GUID-F0C0C9CB-625B-5307-81EF-F78AC284CB0B"><p><codeph>SRLINK</codeph> members
+may not be initialised (either in the <codeph>STRUCT</codeph> statement or
+a <codeph>RESOURCE</codeph> statement) since they are automatically assigned
+the resource id of the resource in which they appear.</p> </li>
+<li id="GUID-23FBAA84-2826-5972-9D75-AEB2082A01D7"><p>Members which are themselves <codeph>STRUCT</codeph> s
+may not be default initialised. They can only be initialised in the <codeph>RESOURCE</codeph> definition.
+If they are not explicitly initialised, they will take up zero bytes in the
+resource file. For example, given the following <codeph>STRUCT</codeph> definition:</p> <codeblock id="GUID-82D529DD-EF78-56B6-96CC-D245C0C5C046" xml:space="preserve">STRUCT TEST2 
+ {
+ WORD    value;
+ STRUCT  tester;
+ }</codeblock> <p>The following <codeph>RESOURCE</codeph> statement only generates
+the two bytes <codeph>0xFF 0x00</codeph>.</p> <codeblock id="GUID-B97A619C-8299-5FC9-AD49-658F21568E2F" xml:space="preserve">RESOURCE TEST2 item
+ {
+ value=255;
+ }</codeblock> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0D61EBFF-F513-5911-B234-09F36E5E3DC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0D61EBFF-F513-5911-B234-09F36E5E3DC8" xml:lang="en"><title>User Library Example Code</title><shortdesc>This describes the example code for the User Library component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0DA1FA9A-0F61-580D-922F-02B33CEA09D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0DA1FA9A-0F61-580D-922F-02B33CEA09D6" xml:lang="en"><title>Reading
+Email Messages Using the Plain Text API</title><shortdesc>This tutorial explains how to read email messages using the plain
+text API.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>You can download and
+store email messages using the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> API, and
+read them using the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref> API. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-DF33FDBB-6DE8-565D-BA78-DAABEA214EA6">
+<li id="GUID-3AB85720-EB0B-59AE-897D-88C472BDC5BA"><p>Use the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+of the downloaded email to create the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class. </p> </li>
+<li id="GUID-160A66AF-092E-58C4-879D-FF1E7D23A911"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class
+to create the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-D58CE6D1-E97C-5BAC-AD33-A921A5BE5F02"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-E20991B9-52D4-3952-A748-41A65E321952"><apiname>CImEmailMessage::OpenPlainBodyTextForReadL()</apiname></xref> function
+to get the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> instance, passing in the number
+of characters that will be populated for each read operation. </p> </li>
+<li id="GUID-7DED1564-5F11-5E97-9B39-5AA5C71AD0F8"><p>Use the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-1BD29476-4C4B-3C62-8EC9-23803231E9C2"><apiname>CImPlainBodyText::NextChunkL()</apiname></xref> function
+or the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-CFCAA0D3-BF63-31A2-9037-E08AF82252DB"><apiname>CImPlainBodyText::PreviousChunkL()</apiname></xref> function to retrieve
+the body text of the message. </p> <p> Note: The <xref href="GUID-977B99AD-A5FB-3606-9043-824E22905604.dita"><apiname>NextChunkL()</apiname></xref> function
+is used to get the data of the email message in chunks and in sequential order
+from the beginning of the body text to the end of it. <xref href="GUID-64806D92-CDB6-31A9-8F08-D0E876B5CF18.dita"><apiname>PreviousChunkL()</apiname></xref> is
+used to get the chunk that is previously retrieved by the <xref href="GUID-977B99AD-A5FB-3606-9043-824E22905604.dita"><apiname>NextChunkL()</apiname></xref> function.
+The size of the chunk is specified in the call to the <xref href="GUID-E1CBCDE3-FF5F-3CBA-B3DD-1AB9F58D98F6.dita"><apiname>OpenPlainBodyTextForReadL()</apiname></xref> function. </p> <p>Email
+applications must check the length of the chunk populated. If the length is
+zero (0) it indicates that it has reached the last chunk of the previous read
+operation. </p> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-0DA6722B-0700-5612-884A-F3B7733E5252" xml:lang="en"><title>Voice
+Line Status Tutorial</title><shortdesc>This tutorial describes how to get the voice line status with the
+telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+
+
+<context id="GUID-BAC8D4B3-FAB2-4EE9-B20F-41810AEBD84E"><p>The <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> functions provide a detailed
+ information on the voice line status. The detailed call information provides
+ the information about: </p><ul>
+<li><p>call status  </p></li>
+<li><p> date of the call  </p></li>
+<li><p> time of the call  </p></li>
+<li><p> duration of the call  </p></li>
+<li><p>destination number  </p></li>
+<li><p>caller identification  </p></li>
+<li><p>dynamic call capabilities  </p></li>
+</ul></context>
+<steps id="GUID-F9E13043-8D2A-57BC-B9C0-ADD51F3AA449">
+<step id="GUID-7BA25A70-5F62-5668-8A64-D5F90FD72504"><cmd>create a new instance
+of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </cmd>
+</step>
+<step id="GUID-382DD7F5-8555-5B06-9596-08D1C4684714"><cmd>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetLineStatus()</apiname></xref> to
+get the simple voice line status</cmd>
+</step>
+<step id="GUID-2B2692FB-88FF-5F40-8FC0-A30D7146C757"><cmd>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCallStatus()</apiname></xref> to
+get the status of any voice call owned by the client application </cmd>
+</step>
+<step id="GUID-C46FB87F-B7FB-5347-9199-D27CA9634E6F"><cmd>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCallInfo()</apiname></xref> to
+get the detailed call information about the call </cmd>
+<info>pass the following parameters for the required information </info>
+<stepxmp><table id="GUID-9FDDE4F7-130C-55C9-8205-CF8C96575665">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Parameter</entry>
+<entry>Function</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>TCallStatus </p> </entry>
+<entry><p>To get the status of a call like idle, on-hold, dialling and ringing </p> </entry>
+</row>
+<row>
+<entry><p>TDateTime </p> </entry>
+<entry><p>To get the data and time of a call </p> </entry>
+</row>
+<row>
+<entry><p>TTimeIntervalSeconds </p> </entry>
+<entry><p>To get the duration of a call </p> </entry>
+</row>
+<row>
+<entry><p>TTelAddress </p> </entry>
+<entry><p>To get the destination number </p> </entry>
+</row>
+<row>
+<entry><p>TPhoneNetworkSecurity </p> </entry>
+<entry><p>To get the ciphering information from the network </p> </entry>
+</row>
+<row>
+<entry><p>TCallRemoteIdentityStatus </p> </entry>
+<entry><p>To determine if the remote caller status is available </p> </entry>
+</row>
+<row>
+<entry><p>TCallDirection </p> </entry>
+<entry><p>To determine the call direction </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </stepxmp>
+</step>
+<step id="GUID-0604B8F5-98CA-57B1-98D9-2B91708CF29C"><cmd>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>GetCallDynamicCaps()</apiname></xref> to
+get the dynamic capability information about the call.</cmd>
+</step>
+</steps>
+<example id="GUID-6F8987BC-703D-549F-85F7-11BDB3EAC319"><title>Voice call
+information example</title> <p>The example code describes the steps to get
+the detailed call information. </p> <codeblock id="GUID-5B4EF60C-66A0-5862-9E72-6759532AC776" xml:space="preserve">CTelephony* telephony = CTelephony::NewLC();
+
+CTelephony::TCallInfoV1 callInfoV1;
+CTelephony::TCallInfoV1Pckg callInfoV1Pckg( callInfoV1 );
+
+CTelephony::TCallSelectionV1 callSelectionV1;
+CTelephony::TCallSelectionV1Pckg callSelectionV1Pckg( callSelectionV1 );
+
+CTelephony::TRemotePartyInfoV1 remotePartyInfoV1;
+CTelephony::TRemotePartyInfoV1Pckg remotePartyInfoV1Pckg( remotePartyInfoV1  );
+
+callSelectionV1.iLine = CTelephony::EVoiceLine;
+callSelectionV1.iSelect = CTelephony::EActiveCall;
+
+telephony-&gt;GetCallInfo( callSelectionV1Pckg, callInfoV1Pckg, remotePartyInfoV1Pckg );
+
+CleanupStack::PopAndDestroy( telephony );</codeblock> </example>
+<postreq id="GUID-3A6FA503-E4A8-5013-A155-E8F80844281B"><p>The example code
+to get the dynamic call capability information </p> <codeblock id="GUID-53DB7E1D-B6FA-5497-9140-28EB10EF242C" xml:space="preserve">CTelephony::TCallCapsV1 callCapsV1;
+CTelephony::TCallCapsV1Pckg callCapsV1Pckg( callCapsV1 );
+
+telephony-&gt;GetCallDynamicCaps( callId, callCapsV1Pckg );
+TUint32 caps = callCapsV1.iControlCaps;
+if( caps &amp; CTelephony::KCapsHold )
+   {} // The call represented by 'callId' can be put on hold</codeblock> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0DBB2379-6FCB-5D1D-AE5A-2DC7C498F479.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0DBB2379-6FCB-5D1D-AE5A-2DC7C498F479"><title>PAN-NAP Role Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Network Access Point (NAP) role of the PAN profile allows a device to access networking resources such as a LAN or the internet over a Bluetooth® wireless connection via a NAP enabled device. </p> <section><title>Purpose</title> <p>The NAP enabled device acts as a bridge between networks, such as the Piconet and the LAN or Internet, for routing Ethernet packets. </p> <p>This document provides you with background details necessary to set up and configure a Symbian device to act as a NAP. </p> </section> <section><title>Key concepts/terms</title> <ul><li id="GUID-243E6E5C-1370-577B-87D2-179F81F5B215"><p> <b>Network Address and Port Translation (NAPT) Protocol</b>  </p> <p>NAPT is a variation of NAT (Network Address Translation). It translates the IP address of network traffic from an internal IP address to an external IP address. </p> </li> <li id="GUID-63E00973-D04D-5304-A5A4-9D9DA0DA76FA"><p> <b>Dynamic Host Configuration Protocol (DHCP) Client / Server</b>  </p> <p>The DHCP server on the PAN-NAP device assigns the authorized internal IP address to the PANU device. The DHCP Client makes a request to a DHCP Server on a device on an external network for configuration and assignment of an authorized IP address. </p> </li> <li id="GUID-45A513BF-1642-5017-AA3F-0CA96694B87D"><p> <b>Uplink</b>  </p> <p>This is a reference to the external network uplink (via a GPRS or WIFI connection, for example) from the NAP device. The UPLINK IAP will need to be configured. If the uplink is provided over WIFI then DHCP is used, with a GPRS connection DHCP is not used, GPRS provides its own addressing mechanism. </p> </li> <li id="GUID-6404BDE8-08F7-517B-A43D-C0D0F1E443B1"><p> <b>Notifiers</b>  </p> <p>Standard Symbian OS notifiers. The Uplink Authorization notifiers allows a policy for granting access to uplink connections based on user interaction or some automated response determined by the device manufacturer. </p> </li> <li id="GUID-BE043FDD-8AED-5E96-9196-218E1B82EC55"><p> <b>IP Hooks</b>  </p> <p>This is a generic mechanism for adding functionality to the IP stack. Both <i>NAPT</i> and <i>PAN-NAP IP hooks</i> are added to the IP stack using IP hooks. </p> </li> <li id="GUID-9CAF4B98-B6BD-5357-B857-A4319B1C80EF"><p> <b>IP Forwarding</b>  </p> <p>The ability to forward between two different interfaces on the IP stack. IP forwarding must be enabled in order that NAPT can forward data between the internal and external networks. </p> </li> </ul> </section> <section><title>Typical uses</title> <p>The PAN profile NAP role may be used as follows: </p> <ul><li id="GUID-5B254BF8-F3A4-51DB-9D3A-1EACD8A2F406"><p> <b>Bridging networks</b> - for example, connecting a laptop to the Internet over a NAP enabled phone </p> </li> <li id="GUID-2931BD9A-1C87-56D2-8D66-284B1AAFFEE8"><p> <b>Managing a small network</b> - for example, playing networked games using a NAP enabled phone as the network manager </p> </li> <li id="GUID-19B8B1B7-118F-5E5C-8FA4-C1EBF4345E50"><p> <b>Some combination of the above</b>  </p> </li> </ul> <p><b>Configuring the PAN-NAP Role</b> </p> <p><b> PAN-NAP listening</b> </p> <p>As with other PAN roles plus an entry is required in the PANServiceExtensions table for NAP services. </p> <codeblock id="GUID-9879973F-0BAC-5628-8167-EFCB6FF7075C" xml:space="preserve">NapServiceEnabled=TRUE</codeblock> <p>Setting this value to true advertises availability of PAN-NAP and PANU on the device and allows DHCP to act as in its Server role, responding to DHCP configuration requests as required. </p> <p><b>Additional NAP related configuration details</b> </p> <ul><li id="GUID-3D2F6BF8-DB07-5435-8341-D52C00936AD1"><p> <b> Listening IAP</b>  </p> <p>As with other PAN profiles but for the NAP role to be used with the listening IAP <codeph>NapServiceEnabled</codeph> must be set to <codeph>TRUE</codeph>. </p> </li> <li id="GUID-8572CCA2-467A-5575-B92D-48004C6D2C84"><p> <b>Outgoing connection IAP</b>  </p> <p>There are no special considerations for an outgoing connection. </p> </li> <li id="GUID-141877C0-5954-580C-940E-522DE1F35BD0"><p> <b> Uplink IAP</b>  </p> <p>An IAP for WIFI, GPRS or some other uplink mechanism. PAN notifiers will decide if an uplink is required. The device may have a policy in place to automatically deal with uplink requests in some way or it may have a policy to prompt the user to decide how to proceed with uplink requests. </p> </li> <li id="GUID-8E7D00EB-DEF8-597D-8EDA-F1158FED5A92"><p> <b>DHCP</b>  </p> <p>The listener IAP contains an entry reference to a specific LANService table entry which will contain the DHCP configuration details. </p> <codeblock id="GUID-6725C2BF-BD3A-53E2-9290-F3145C3BF073" xml:space="preserve">...
+ConfigDaemonManagerName=NetCfgExtnDhcp
+ConfigDaemonName=!DhcpServ
+IpAddr=172.16.0.1
+...</codeblock> <p>The DHCP server provides only a single IP address, meaning only one device can have access to the uplink at a time. </p> <p>These configuration details must be correctly set for each IAP. </p> </li> </ul> <p><b>Default PAN configuration</b> </p> <p>This configuration reverts the device to the default setting whereby PANU and PAN-GN are supported roles and the device may connect to a PAN-NAP device but can not accept a PAN-NAP connection request. </p> <p>The following is used to set up a standard (Pre PAN-NAP) PAN listener. </p> <codeblock id="GUID-335CE017-8919-5718-818E-9C056D69ED4A" xml:space="preserve">NapServiceEnabled=FALSE</codeblock> <p>If <codeph>NapServiceEnabled</codeph> is set to <codeph>FALSE</codeph> the device will advertise PANU and PAN-GN roles only and DHCP will be configured in the Client role. </p> <p><b>Notifiers </b> </p> <p>A PAN agent notifier is used to decide how to deal with a request for an uplink. Either the user will be prompted or an automated policy will be used to to decide how to handle the uplink request. There are three possible return values for an uplink request: </p> <ul><li id="GUID-436C3CEB-CF44-53EE-9A0C-909BD5FD6EE9"><p> <codeph>EDisallowNewConnection</codeph>  </p> <p>The PAN connection is not allowed and the temporary connection is severed. </p> </li> <li id="GUID-CD81D820-3023-5436-B3CF-C6CC1DBF06C5"><p> <codeph>EAcceptNapConnectionAllowUplinkAccess</codeph>  </p> <p>The connection will be allowed and the access will be granted to the uplink. Any other active connections will be automatically disconnected. </p> </li> <li id="GUID-F0226C23-0FA9-5A36-A63E-F5107FFD39A7"><p> <codeph>EAcceptNapConnectionDisallowUplinkAccess</codeph>  </p> <p>The connection will be allowed but no access will be given to the uplink. </p> </li> </ul> <p><b> Managing network communications </b> </p> <p>The PAN-NAP IP hook is used to ensure the DHCP server is properly used and to enforce the requirement that only approved clients are granted access to the uplink. Since the DHCP server only supports assigning a single IP address the IP hook ensures that that address is given to the correct device. Packets are tagged as having access to the uplink. Attempts to send packets through the DHCP server that are not properly tagged will be ignored. Please see the tutorial to learn how to load an IP hook. </p> <p><b> Loading the NAPT protocol </b> </p> <p>Create a standard socket as NAPT and configure it at required providing: </p> <ul><li id="GUID-0EC5FF5C-FA9C-55A7-B5F5-7066E78AD800"><p>Internal IP address </p> </li> <li id="GUID-EE7F0AE7-E2F0-54C3-B2F7-1DC6C1F3C348"><p>External IP address </p> </li> <li id="GUID-7AF5F187-E509-5823-8018-37E854DA59CA"><p>Bluetooth IAP Id </p> </li> <li id="GUID-7C5BB258-3180-5C42-A20D-3140EF63FC6B"><p>Uplink IAP ID </p> </li> </ul> <p>For example: </p> <codeblock id="GUID-C02161C8-F87C-5EFC-B0AE-D0A7A4122D45" xml:space="preserve">...
+RSocket iNaptSocket;
+TBool iStartNapt;
+TInt iIapsStarted;
+...
+TInt err = KErrNone;
+if ((err = iNaptSocket.Open(iSockServ, _L("napt"))) == KErrNone)
+    {
+    iNaptInfo().iPublicIap = iUplinkIapHelper-&gt;IapId();
+    iNaptInfo().iPublicIp.SetAddress(publicAddr);
+
+    iNaptInfo().iPrivateIap = iPanIapHelper-&gt;IapId();
+    iNaptInfo().iPrivateIp.SetAddress(privateAddr);
+    
+    iNaptInfo().iNetmaskLength = 16;
+    
+    iNaptSocket.SetOpt(KSoNaptSetup, KSolNapt, iNaptInfo);
+    
+    iStartNapt = EFalse;
+    }
+else
+  {
+  // some error
+     }
+// NAPT addressing configured and started.
+...</codeblock> <p>loads NAPT as follows: </p> <ul><li id="GUID-0AAE7359-4198-5207-AE9C-410E7CB3324F"><p> <b>Internal IP address:</b>  </p> <codeblock id="GUID-971E2BA9-9C11-5165-9A3B-4E4A504607FE" xml:space="preserve">    iNaptInfo().iPrivateIp.SetAddress(privateAddr);</codeblock> </li> <li id="GUID-D124FAB8-83FD-5BAB-839A-048CE63A6B80"><p> <b>External IP address:</b>  </p> <codeblock id="GUID-4F2AD3C7-BD69-5247-8199-719F3B887F71" xml:space="preserve">    iNaptInfo().iPublicIp.SetAddress(publicAddr);</codeblock> </li> <li id="GUID-3E14F84A-5661-5A14-A7B8-B44EC9F31D9E"><p> <b>Bluetooth PAN IAP Id:</b>  </p> <codeblock id="GUID-DEAC3C75-780A-51F6-B120-E3B9DC02861C" xml:space="preserve">    iNaptInfo().iPrivateIap = iPanIapHelper-&gt;IapId();</codeblock> </li> <li id="GUID-9DB78C08-E851-5DCE-8286-C2A992DC9815"><p> <b>Uplink IAP ID:</b>  </p> <codeblock id="GUID-31FD8E51-CDEA-5F5D-984D-5C84498D2645" xml:space="preserve">    iNaptInfo().iPublicIap = iUplinkIapHelper-&gt;IapId();</codeblock> </li> </ul> </section> <section><title>See also</title> <p>Please refer to the following for more information: </p> <ul><li id="GUID-B6863B55-AACF-5CBF-B136-55A11752BCF5"><p> <xref href="GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita#GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902/GUID-0066861F-2219-55ED-8BCA-9E7FDB7B3B68">PAN Profile Overview</xref>  </p> </li> <li id="GUID-EE747EA0-ABC5-54D7-A181-4DF53D34C8C8"><p> <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-D7338D15-E269-54A5-B4E1-D5F0AACA9F32">Bluetooth Profiles</xref>  </p> </li> <li id="GUID-4B47955E-4E68-5B20-A2DF-BCCA1F26F0FA"><p> <xref href="GUID-7640F878-2D99-52C8-ACBE-8B77A714E081.dita">Bluetooth Protocols</xref>  </p> </li> <li id="GUID-3FE650D1-E2C5-5C21-8C46-76053074AC71"><p> <b>Bluetooth PAN Tutorial series</b>  </p> <ul><li id="GUID-0D84E550-0404-57C4-AE7F-B4C430067CD3"><p> <xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita">Creating a Personal Area Network</xref>  </p> </li> <li id="GUID-B68DA623-F8A5-51ED-8FE0-92BF754C06FC"><p> <xref href="GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita">Adding a device to the PAN</xref>  </p> </li> <li id="GUID-39D73100-FC9A-5404-95E5-BDEF7B7D888D"><p> <xref href="GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita">Removing a device from the PAN</xref>  </p> </li> <li id="GUID-F1275679-1BFA-52BA-A332-09316BC3ADEC"><p> <xref href="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita">Closing the PAN</xref>  </p> </li> </ul> </li> </ul> <p><b>Related Items</b> </p>  </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195"><title>Drawing Polylines and Polygons</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate how to draw a polyline and how to draw and fill a self-crossing polygon. </p> <p>The example code assumes the array of points used when drawing these shapes is defined as follows: </p> <codeblock id="GUID-9DACC372-C21C-5C99-9026-C5505B7C2B5A" xml:space="preserve">...
+// set up an array of points for drawing a polyline and a polygon etc.
+// will be used relative to top left of rectangle
+TPoint point1(20,20);
+TPoint point2(100,190);
+TPoint point3(110,90);
+TPoint point4(50,150);
+TPoint point5(200,150);
+CArrayFix&lt;TPoint&gt;* mypoints = new CArrayFixFlat&lt;TPoint&gt;(5);
+CleanupStack::PushL(mypoints);
+mypoints-&gt;AppendL(point1);
+mypoints-&gt;AppendL(point2);
+mypoints-&gt;AppendL(point3);
+mypoints-&gt;AppendL(point4);
+mypoints-&gt;AppendL(point5);
+...
+    
+// switch statement with example cases
+...
+CleanupStack::PopAndDestroy(); // mypoints</codeblock> <section><title>Drawing a polyline</title> <p>You can draw a polyline using <codeph>DrawPolyLine()</codeph> from an array of points. </p> <codeblock id="GUID-96082027-6F7C-52C3-A1E1-B41569851D97" xml:space="preserve">...
+// draw a polyline
+gc.DrawPolyLine(mypoints);
+...</codeblock> </section> <section><title>Drawing a polygon</title> <p>The following example code illustrates how to draw a filled polygon from an array of points. The polygon is self-crossing. Self-crossing polygons can be filled according to one of two rules, <codeph>TFillRule::EAlternate</codeph> (the default), or <codeph>TFillRule::EWinding</codeph>. These rules work with the concept of a winding number, as shown in the following figure: </p> <fig id="GUID-DCCC82D0-04BD-5CE5-B21E-1DF921F7E956"><title>
+             Winding numbers 
+          </title> <image href="GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e178906_href.png" placement="inline"/></fig> <p> <codeph>EWinding</codeph> fills all areas, while <codeph>EAlternate</codeph> only fills areas with odd winding numbers. </p> <p><b>Drawing a polygon using the EWinding fill rule</b> </p> <ol id="GUID-40875382-97F3-5BBA-9CE7-C49A6418ECCD"><li id="GUID-8A0BBCBF-BAB2-59A0-BE7B-F27875318DF5"><p>Use <codeph>SetBrushStyle()</codeph> to set a cross-hatched brush style. </p> </li> <li id="GUID-C7845F63-2332-5FA4-A750-0223ECFED056"><p>Use <codeph>DrawPolygon()</codeph> to draw the polygon with the <codeph>EWinding</codeph> fill rule. </p> </li> </ol> <codeblock id="GUID-893413B0-E8AA-5317-95B1-A8970D63FFC9" xml:space="preserve">...
+// draw self-crossing polygon using the winding fill rule
+gc.SetBrushStyle(CGraphicsContext::ESquareCrossHatchBrush);
+gc.SetBrushColor(black);
+gc.DrawPolygon(mypoints,CGraphicsContext::EWinding);
+...</codeblock> <p><b>Drawing a polygon using the EAlternate fill rule</b> </p> <ol id="GUID-A41D3FCD-9C7D-5400-B0EF-3CC287193B9B"><li id="GUID-0949D505-AF72-5CA6-B93B-7A6D34BC1B5E"><p>Use <codeph>SetBrushStyle()</codeph> to set a diamond cross-hatched brush style. </p> </li> <li id="GUID-F5382106-FFEB-55EA-98DF-751E07050568"><p>Use <codeph>DrawPolygon()</codeph> to draw the polygon with the <codeph>EAlternate</codeph> fill rule. </p> </li> </ol> <codeblock id="GUID-CBF5948B-BC44-5803-B00B-86D231D44169" xml:space="preserve">...
+// draw self-crossing polygon using the alternate fill rule
+gc.SetBrushStyle(CGraphicsContext::EDiamondCrossHatchBrush);
+gc.SetBrushColor(black);
+gc.DrawPolygon(mypoints,CGraphicsContext::EAlternate);
+...</codeblock> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0DEC4D1B-2CD6-49BC-92E4-F0CB0BCBFA9D-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-0DEC4D1B-2CD6-49BC-92E4-F0CB0BCBFA9D_d0e61865_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-0DEDC917-05C9-5D43-B839-73C043624BE9" xml:lang="en"><title> circularbuffer:
+Circular Buffer Example</title><shortdesc>This example demonstrates the how to use the circular buffer classes <apiname>CCirBuf</apiname> and <apiname>CCirBuffer</apiname>. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-4AF25C42-D4E3-54AC-A493-F17995CF27A0"><title>Purpose</title> <p>This
+example application shows how to construct and make use of circular buffers
+containing integers, objects of user defined classes and objects of an R class. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-07c0d4d4-3e5e-4329-a0c5-e569e89d3a9e.zip" scope="external">circularbuffer .zip</xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-07c0d4d4-3e5e-4329-a0c5-e569e89d3a9e.html" scope="peer"> browse </xref> to view the example code.</p> </section>
+<section><title>class summary</title><p><xref href="GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623.dita"><apiname>CCirBuffer </apiname></xref> <xref href="GUID-1D73835F-4361-3216-8EFC-669364E3F5E7.dita"><apiname>CCirBuf</apiname></xref> </p></section>
+<section id="GUID-2B02964A-812A-5838-9A6F-64E4C8D069EF"><title>Design and
+implementation</title> <p>Class diagram: </p> <fig id="GUID-1424998B-6CBC-5CEF-9A2D-4DBB286F409B">
+<title>              Circular buffers example class diagram            </title>
+<image href="GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e224881_href.jpg" placement="inline"/>
+</fig> <p>The example creates a circular buffer of integers using <xref href="GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623.dita#GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623/GUID-600BE94B-72FF-3A44-92EC-3806B7F5E4E5"><apiname>CCirBuffer::Put()</apiname></xref> to
+add elements and <xref href="GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623.dita#GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623/GUID-112CD6F9-DAB4-30E5-9E5C-B636F8AEEC08"><apiname>CCirBuffer::Get()</apiname></xref> to remove an element.
+To demonstrate the circular nature of the buffer, the example: </p> <ul>
+<li id="GUID-950580F8-9810-5172-95AD-7B3C2B933818"><p>adds four elements until
+the buffer is full, </p> </li>
+<li id="GUID-28BD6FC5-80AC-5567-94E6-4592A0BD2751"><p>tries to adds another
+element to the buffer, which fails with a buffer full error message, </p> </li>
+<li id="GUID-AAB4C513-DB1C-5BEF-9C2E-9CED284A2C58"><p>removes elements 1 and
+2 from the buffer, leaving elements 3 and 4, </p> </li>
+<li id="GUID-3DE3EB5E-5080-527B-8C69-92535A6CB6CC"><p>adds two new elements
+(5 and 6) to the buffer, </p> </li>
+<li id="GUID-A7CDA10E-DF03-5460-BA7A-1E85B3FC66D8"><p>removes all elements
+(3, 4, 5 and 6) from the buffer. </p> </li>
+</ul> <p>Similar steps are performed using <xref href="GUID-1D73835F-4361-3216-8EFC-669364E3F5E7.dita"><apiname>CCirBuf</apiname></xref> to add
+(<xref href="GUID-1D73835F-4361-3216-8EFC-669364E3F5E7.dita#GUID-1D73835F-4361-3216-8EFC-669364E3F5E7/GUID-1EE35B7E-6E95-3B6A-9EE4-B5CCFA4F772D"><apiname>CCirBuf::Add()</apiname></xref>) and remove (<xref href="GUID-1D73835F-4361-3216-8EFC-669364E3F5E7.dita#GUID-1D73835F-4361-3216-8EFC-669364E3F5E7/GUID-FFCCB7E3-B69F-3CC8-B38C-0179915C1E20"><apiname>CCirBuf::Remove()</apiname></xref>)
+user-defined objects, and objects of an <codeph>R</codeph> class to and from
+the buffer. </p> <p>After removing R class objects from the circular buffer,
+they must be closed in order to release the resource held by the R Class objects. </p> </section>
+<section id="GUID-6CB8757B-66CF-577C-A490-99CBBC10E2B5"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-48DC5748-F246-57CB-9568-4B49E09A2CAA"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-DEEF2C1B-2D81-5DA7-BE70-EAD7496B16FA"><p>For the emulator, the
+example builds an executable called <filepath>circularbuffer.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section id="GUID-BC504F56-2676-5CBB-8DC1-57B3D9DD3950"><title>Running the
+example</title> <p>The user is prompted to press a key in order to progress
+from one function to the next. </p> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0DF9E318-BE97-531E-AB39-A7B5E8787C87.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0DF9E318-BE97-531E-AB39-A7B5E8787C87" xml:lang="en"><title>User Library and File Server</title><shortdesc>Provides a framework for accessing file systems. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p id="GUID-017B63B7-2793-52B8-9C31-04D4F9A5B925"> The User Library and File Server collection of components provides access to user-side code to the services provided by Kernel Architecture 2, and completes low-level operating system support. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C" xml:lang="en"><title>What
+is Contention Management?</title><shortdesc>This topic describes contention management and the contention management
+process flow. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a contention issue arises the Access Point priorities of the incoming
+connection and the existing connections are compared. If the incoming Access
+Point has a higher priority than an existing Access Point the existing Access
+Point connection is stopped and the new Access Point connection is started.
+If the incoming Access Point priority is lower than or equal to an existing
+Access Point connection the incoming Access Point is ignored. </p>
+<section><title>Contention Management Process Flow</title> <p>This section
+outlines the contention management process flow and the associate components. </p> <p>The
+following diagram describes the Contention Management Process Flow. </p><p>The following steps describe what happens when a PDP context contention issue
+occurs in the system: </p> <ol>
+<li id="GUID-F614DD0D-491E-4E4A-B255-90A50B0CAB8E"><p>The PDP Meta-Connection Provider (MCPR) of the starting connection
+calls the <codeph>HandleContentionL</codeph> function of the PDP Tier Manager.</p></li>
+<li id="GUID-E77116E5-E364-47CF-9878-502DD869804A"><p>The PDP Tier Manager has an <codeph>iPDPContentionManagement</codeph> instance
+of the <codeph>CPDPContentionManagement</codeph> class. The contention request
+is added to <codeph>iPDPContentionManagement</codeph>. </p></li>
+<li id="GUID-8DAF207F-3320-4DF4-A69E-9824DA800D12"><p>The ContentionManager starts processing the asynchronous contention
+request. The priorities assigned to all active connections in the system are
+extracted from the MCPR Access Points. The ContentionManager delivers the
+extracted priorities to the Contention Management Activity. </p></li>
+<li id="GUID-D1DD47FC-F6EA-4F00-A684-FE67DC02AE26"><p>The existing connection priorities are compared with the new connection
+priority and one of the following occurs:</p></li>
+<li id="GUID-0254D697-B9B0-4D24-8262-BB94C3294016"><p>If the priority of the new connection is lower than those of the existing
+connection, the new connection is not permitted.</p></li>
+<li id="GUID-D1A41F47-9CFA-4755-BA82-DC05E6F100A7"><p>If the priority of the new connection is higher than one of the existing
+connections, the lowest priority connection is stopped and the new connection
+is permitted and started.</p></li>
+<li id="GUID-E4E8C34B-5305-46B3-AB17-F1CEB6BC741F"><p>Each connection relates to a single application on the mobile device.
+One of the following occurs when the connection and application is terminated: </p></li>
+<li id="GUID-54B99BA1-16C3-45FC-8400-C37F354B651A"><p>If the application that uses the stopped connection is contention-aware
+it calls <codeph>RConnection::Start()</codeph> with the <codeph>TConnAutStartPref</codeph> parameter.
+The application starts when the contention is finished.</p></li>
+<li id="GUID-BD9CF0F3-D080-42AE-BA18-537E8DA9AD35"><p>If the application that uses the stopped connection is not contention-aware
+a disconnection notification is sent to the user without an error message
+stating why the connection stopped. </p></li>
+</ol></section>
+</conbody><related-links>
+<link href="GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E.dita"><linktext>What is Contention?</linktext>
+</link>
+<link href="GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita"><linktext>What are
+Access Point                 Priorities?</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e319099_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0E226657-1A19-5601-B392-4E9A0BDB4014.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0E226657-1A19-5601-B392-4E9A0BDB4014"><title>Introduction to Mapping between Symbian UIDs and vCard Properties</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian OS uses unique IDs to identify vCard properties and property parameters. The mapping between vCard properties and Symbian OS-specific constants is done by the <xref href="GUID-9CB3D05D-D0CE-3BCF-9F33-4D3AF2D99E09.dita"><apiname>cntvcard</apiname></xref> component <xref href="GUID-51E145D7-DA4F-33FC-B336-79A127A97D68.dita"><apiname>cntvcard.dll</apiname></xref> (see <xref href="GUID-92156269-0645-54AB-9075-EE7708D333F4.dita">UIDs that Identify vCard Properties</xref>). </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0E3E2FAD-FC85-5995-8B5C-8F1C1A4186D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0E3E2FAD-FC85-5995-8B5C-8F1C1A4186D0"><title>Troubleshooting Tips for RVCT v3.1</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section is intended to help you troubleshoot the errors that may occur after migrating to RealView Compilation Tools (RVCT) v3.1. It provides a list of common problems that you may face while building your component using RVCT v3.1, with possible causes and ways to troubleshoot the problems. </p> <table id="GUID-0909177E-FB3B-592E-9225-88056198100B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Problem</entry> <entry>Possible cause</entry> <entry>Possible solution</entry> </row> </thead> <tbody><row><entry><p>Error: L6410W: Symbol &lt;<varname>symbol_name</varname> &gt; with non <codeph>STV_DEFAULT</codeph> visibility <codeph>STV_HIDDEN</codeph> should be resolved statically, cannot use definition in &lt;<varname>dso_file_name</varname> &gt; </p> </entry> <entry><p>The linker is aware that the symbol (function) is present in another DLL, but in at least one of the source files of your component the symbol (function) has been declared without the <codeph>IMPORT_C</codeph> modifier. </p> </entry> <entry><p>Identify such source files and prefix the symbol declaration with the <codeph>IMPORT_C</codeph> modifier. </p> </entry> </row> <row><entry><p>elf2e32 : Error: E1036: Symbol &lt;<varname>symbol_name</varname> &gt; Missing from ELF file: &lt;<varname>file_name</varname> &gt; </p> </entry> <entry><p>The symbol (function) is present in the generated ELF DLL, but it is not visible externally. This is because the symbol (function) definition is not annotated with <codeph>EXPORT_C</codeph>, or when callers within the DLL does not prefix the function declaration with the <codeph>IMPORT_C</codeph> modifier. </p> </entry> <entry><p>Identify such symbol definitions and annotate them with the <codeph>EXPORT_C</codeph> modifier. Prefix the function declaration with the <codeph>IMPORT_C</codeph> modifier if you are trying to call a function in another DLL. </p> </entry> </row> </tbody> </tgroup> </table> <p>If you are unable to troubleshoot the problems listed in this table, perform the following steps: </p> <ol id="GUID-B672622E-1D57-50F9-A96D-CAFCC3187867"><li id="GUID-6F7500C5-4C34-5BD9-B11E-238E4213CDA6"><p>Browse to the directory where the object files of your component are stored. </p> </li> <li id="GUID-5C71DFDF-E76C-5098-AAE4-D33E9C668399"><p>Create a dump of the symbol table for each object file using the command, <codeph>fromelf -s &lt;object_filename&gt;</codeph> and locate the problematic function. If the function does not have the <codeph>STV_DEFAULT</codeph> visibility, then you have found the cause, or at least have identified the source file that is causing the problem. </p> </li> <li id="GUID-4C3C0F3B-D190-57F7-9F4D-2DC238E62F26"><p>If you are still unable to identify the cause of the problem, check the pre-processed source file to find out the cause. Perform the following steps to pre-process the source file: </p> <ol id="GUID-8063B78C-824E-5AF1-A431-EF04FD4CEDC0"><li id="GUID-58C05FC4-F81B-5317-9E8F-C78A86A10197"><p>Identify the <codeph>armcc</codeph> command (copy from the log file) that compiled the object. </p> </li> <li id="GUID-CD8F60F9-A0DE-5AA5-99C6-F7C10FE63D31"><p>Run the command after replacing <codeph>-c</codeph> with <codeph>-E</codeph> and specifying the output file as an argument to the -o option. </p> </li> <li id="GUID-8C26FD2C-776A-5493-AC43-5AFF9D16EBE2"><p>Check whether the function has been annotated with <codeph>__declspec(dllimport)</codeph>, which is the expansion of <codeph>IMPORT_C</codeph>. </p> <p> <b>Note:</b> If the function declaration is incorrect in more than one place, then repeat this whole procedure until all instances are identified. </p> </li> </ol> </li> </ol> </conbody><related-links><link href="GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254.dita"><linktext>Overview of the
+                native build targets</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e284607_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0E695106-4139-4335-A11F-BD04418DD583.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-0E695106-4139-4335-A11F-BD04418DD583" xml:lang="en"><title>Multi-selection
+list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Multi-selection lists are used when the purpose is to emphasize that it
+is possible to select several items from a list at the same time. Typically,
+there is an on-going operation that expects one or more items as input. An
+example of this is when the user is creating a group, and a list of names
+is offered as a multi-selection list.</p>
+<p>In a multi-selection list, the user can browse the items and check and
+uncheck any number of them. The state of each item is indicated in a checkbox
+adjacent to the item. When the user accepts the list, information about the
+marked items is passed to the application.</p>
+<p>Items are checked and unchecked using the Selection key, and the list is
+accepted with the left softkey Done/OK. Note that unlike in a markable list,
+the Options softkey is not available: one can only check and uncheck items
+and then accept or cancel the list.</p>
+<fig id="GUID-073BC74E-AB7F-4C22-B6E1-B5C4749B28B3">
+<title>Multi-selection lists: in the main pane (left) and in a setting editor
+(right)</title>
+<image href="GUID-1A03B210-4175-4BE0-A5B3-647E7FA8E573_d0e55282_href.png" scale="60" placement="inline"></image>
+</fig>
+<p>The keypad functions for multi-selection lists are as follows:</p>
+<table id="GUID-94AC7390-A39D-48A4-AF4E-FF34EBE44593"><title>Default key event
+in multi-selection list</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Key</entry>
+<entry>Action</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Arrow up / down</p></entry>
+<entry><p>Moves the focus in the list.</p></entry>
+</row>
+<row>
+<entry><p>Arrow left / right</p></entry>
+<entry><p>Ignored (can be used to control tabs).</p></entry>
+</row>
+<row>
+<entry><p>Selection key</p></entry>
+<entry><p>Marks / unmarks the current item; toggle.</p></entry>
+</row>
+<row>
+<entry><p>Left softkey (Done)</p></entry>
+<entry><p>Accepts the list, passes the selections to the application.</p></entry>
+</row>
+<row>
+<entry><p>Right softkey (Cancel)</p></entry>
+<entry><p>Cancels the list, returns to the previous state.</p></entry>
+</row>
+<row>
+<entry><p>Clear, Edit, Call creation</p></entry>
+<entry><p>Ignored.</p></entry>
+</row>
+<row>
+<entry><p>Numeric keypad</p></entry>
+<entry><p>Ignored.</p></entry>
+</row>
+<row>
+<entry><p>Other keys</p></entry>
+<entry><p>Do the default action of the key.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section><title>Using multi-selection
+lists in C++ applications</title><p>The API to use for multi-selection lists
+is the Lists
+API. For implementation information, see Using
+the Lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0E6C7017-E430-51C0-A5D6-1798B0DCC6BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-0E6C7017-E430-51C0-A5D6-1798B0DCC6BC"><title>Handshaking Configuration Options</title><shortdesc>This section describes the configuration that can be set to define the handshaking for a port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><title>Introduction</title> <p>In general, the speed at which data is transmitted is deliberately set to be faster than the speed with which it can be processed by the receiver. This results in a highly efficient utilisation of the available bandwidth and data transfers complete faster. When transmitting data over a line leased by time, such as a phone line, the higher utilisation results in a saving of money. </p> <p>Consequently, input buffers linked to reliable flow control mechanisms are essential for effective communications, as the receiver needs a mechanism for throttling back the transmitter and telling it to stop sending data. The <codeph>TCommConfig</codeph> package enables flow control to be configured at the driver level, and so applications do not need their own flow control. This reference page describes the handshaking options available to control the flow of data. </p> <p>Since multiple handshaking mechanisms may be active simultaneously, the handshaking is defined by a bit field called <xref href="GUID-36D2446E-E288-332B-9356-3DA0C3D8C989.dita"><apiname>TCommConfig.iHandshake</apiname></xref>. See the tutorials for examples which use this bitmask, for example <xref href="GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F.dita">How to Terminate Write Requests Early: Tutorial</xref>. </p> </section> <section><title>iHandshake bit field</title> <p>The <xref href="GUID-FA42F645-D2A8-384B-9FE6-6495EACFA479.dita#GUID-FA42F645-D2A8-384B-9FE6-6495EACFA479/GUID-268250D5-7943-39ED-ABF4-77E6539DFEF2"><apiname>TCommConfigV01::iHandshake</apiname></xref> field is a bit field that can be used to set the handshaking for a port. The format of the bit field is: </p> <table id="GUID-287F6E31-8C77-5CED-BC87-46DF1C81485C"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry> Bit </entry> </row> <row><entry> Description </entry> </row> <row><entry> Terminal</entry> </row> </thead> <tbody><row><entry><p> <codeph>0x08</codeph>  </p> </entry> <entry><p> <codeph>0x04</codeph>  </p> </entry> <entry><p> <codeph>0x02</codeph>  </p> </entry> <entry><p> <codeph>0x01</codeph>  </p> </entry> </row> <row><entry><p> <codeph>KConfigFailCTS</codeph>  </p> </entry> <entry><p> <codeph>KConfigObeyCTS</codeph>  </p> </entry> <entry><p> <codeph>KConfigSendXoff</codeph>  </p> </entry> <entry><p> <codeph>KConfigObeyXoff</codeph>  </p> </entry> </row> <row><entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> </row> </tbody> </tgroup> </table> <p> </p> <table id="GUID-78EB8319-9C95-5275-B5CE-1CD2F2255979"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry> Bit </entry> </row> <row><entry> Description </entry> </row> <row><entry> Terminal</entry> </row> </thead> <tbody><row><entry><p> <codeph>0x80</codeph>  </p> </entry> <entry><p> <codeph>0x40</codeph>  </p> </entry> <entry><p> <codeph>0x20</codeph>  </p> </entry> <entry><p> <codeph>0x10</codeph>  </p> </entry> </row> <row><entry><p> <codeph>KConfigFailDCD</codeph>  </p> </entry> <entry><p> <codeph>KConfigObeyDCD</codeph>  </p> </entry> <entry><p> <codeph>KConfigFailDSR</codeph>  </p> </entry> <entry><p> <codeph>KConfigObeyDSR</codeph>  </p> </entry> </row> <row><entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> </row> </tbody> </tgroup> </table> <p> </p> <table id="GUID-9EC32691-4B38-5AE5-87E3-FE1B039DED7B"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry> Bit </entry> </row> <row><entry> Description </entry> </row> <row><entry> Terminal</entry> </row> </thead> <tbody><row><entry><p> <codeph>0x800</codeph>  </p> </entry> <entry><p> <codeph>0x400</codeph>  </p> </entry> <entry><p> <codeph>0x200</codeph>  </p> </entry> <entry><p> <codeph>0100</codeph>  </p> </entry> </row> <row><entry><p> <codeph>KConfigFailDTR</codeph>  </p> </entry> <entry><p> <codeph>KConfigObeyDTR</codeph>  </p> </entry> <entry><p> <codeph>KConfigFreeDTR</codeph>  </p> </entry> <entry><p> <codeph>KConfigFreeRTS</codeph>  </p> </entry> </row> <row><entry><p>DCE </p> </entry> <entry><p>DCE </p> </entry> <entry><p>DTE </p> </entry> <entry><p>DTE </p> </entry> </row> </tbody> </tgroup> </table> <p> </p> <table id="GUID-A575C70A-09AA-5B65-8BFC-F61F41A8DB76"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry> Bit </entry> </row> <row><entry> Description </entry> </row> <row><entry> Terminal</entry> </row> </thead> <tbody><row><entry><p> <codeph>0x8000</codeph>  </p> </entry> <entry><p> <codeph>0x4000</codeph>  </p> </entry> <entry><p> <codeph>0x2000</codeph>  </p> </entry> <entry><p> <codeph>01000</codeph>  </p> </entry> </row> <row><entry><p> <codeph>KConfigFreeCTS</codeph>  </p> </entry> <entry><p> <codeph>KConfigFreeDSR</codeph>  </p> </entry> <entry><p> <codeph>KConfigFailRTS</codeph>  </p> </entry> <entry><p> <codeph>KConfigObeyRTS</codeph>  </p> </entry> </row> <row><entry><p>DCE </p> </entry> <entry><p>DCE </p> </entry> <entry><p>DCE </p> </entry> <entry><p>DCE </p> </entry> </row> </tbody> </tgroup> </table> <p> </p> <table id="GUID-6C7A78E2-E612-592F-B222-91A5F6E501AE"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry> Bit </entry> </row> <row><entry> Description </entry> </row> <row><entry> Terminal </entry> </row> </thead> <tbody><row><entry><p> <codeph>0x80000000</codeph>  </p> </entry> <entry><p>Bits 0x40000 to </p> </entry> <entry><p> <codeph>0x20000</codeph>  </p> </entry> <entry><p> <codeph>0x10000</codeph>  </p> </entry> </row> <row><entry><p> <codeph>KConfigWriteBufferedComplete</codeph>  </p> </entry> <entry><p>0x40000000 unused </p> </entry> <entry><p> <codeph>KConfigFreeRI</codeph>  </p> </entry> <entry><p> <codeph>KConfigFreeDCD</codeph>  </p> </entry> </row> <row><entry/><entry/><entry><p>DCE </p> </entry> <entry><p>DCE </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Flow control when sending</title> <p>The first four of the handshaking bitmasks control what type of flow control is obeyed when sending data. Any combination of hardware flow control and software flow control can be set up. </p> <p>Hardware flow control causes transmission to stop when any specified permutation of the modem input line <keyword>CTS</keyword>, <keyword>DSR</keyword> or <keyword>DCD</keyword> are low and the flow is only resumed when the relevant lines go high. </p> <p>Software flow control causes transmission to stop when a configurable <keyword>XOFF</keyword> character is received and transmission is only resumed when the corresponding <keyword>XON</keyword> character is received. </p> <p>The most common form of flow control for transmitted data is CTS handshaking. CTS handshaking causes flow to stop when the CTS input is low. </p> </section> <section><title>Flow control when receiving </title> <p>The next three of the handshaking bitmasks controls the type of flow control when receiving data, in the expectation that the transmitter will stop sending when instructed to. Any combination of hardware flow control or software flow control can be set. </p> <p>Hardware flow control is where we drop the signal levels on one or both of the modem outputs <keyword>DTR</keyword> and <keyword>RTS</keyword> to stop the incoming data and then raise the signals again to restart. </p> <p>Software flow control is where we transmit our XOFF character to stop the incoming data and then transmit XON when we are ready to resume. Software flow control is enforced by setting the <codeph>KConfigSendXoff</codeph> bit of <codeph>iHandshake</codeph>, while hardware flow control is enabled by setting either one or both of the <codeph>KConfigFreeRTS</codeph> and <codeph>KConfigFreeDTR</codeph> bits, which indicate whether or not the RTS and DTR outputs are under driver control or follow the user-defined settings. See <xref href="GUID-B6392845-B724-35FF-80A5-3911B64535B9.dita"><apiname>SetSignals()</apiname></xref> for more information. </p> <p>The most common form of flow control when receiving data is RTS handshaking. In RTS handshaking we lower our RTS output when we are not able to receive anything and then raise it when we are once again in a position to handle incoming data. </p> </section> <section><title>Flow control thresholds</title> <p>Since the rate at which data is being placed in the input buffer can exceed the rate at which it is being taken out, it is probable that the buffer will gradually fill up. When a particular point (the <keyword>high water
+          mark</keyword>), is reached and a suitable handshaking mode is enabled, a flow control event is triggered. This could be the transmission of an XOFF character or the lowering of either the RTS or DTR output signals, or any combination of these events. </p> <p>Whatever action is taken will be taken as a signal by the transmitter, which will stop sending. The inward flow of data will then stop, and the buffer will begin to empty. When a particular point (the <keyword>low water
+          mark</keyword>) is reached, a matching flow control event is triggered, which could be the transmission of an XON character or the raising of the RTS or DTR signals, or any combination of these events. </p> <ul><li id="GUID-3311BE0E-1D5A-5A51-A5C7-86EE0EA5BFAC"><p>If hardware flow control is the only kind enabled for reception, the high water mark is normally set at the 75% full level, at which point one or both of the output signal will be lowered. </p> </li> <li id="GUID-934E819E-CD25-55E2-9969-0DBED0F44EBE"><p>If XON/XOFF software flow control is enabled for reception (even if hardware handshaking is also enabled), the high water mark is set to be 5 bytes below the 50% full level, at which point an XOFF character is transmitted for every other character received. This more stringent level is deemed necessary because it normally takes longer for a transmitter to respond when software handshaking is being used </p> </li> <li id="GUID-F08D93E3-9714-5E80-9454-CDB1442C9CC5"><p>It is possible to force the serial drivers to use this more stringent high water mark when using hardware flow control. </p> </li> <li id="GUID-4F977649-CC0B-5050-B399-4996D826C4F7"><p>In all cases, the low water mark is set at the 25% full level. Depending on the type of flow control enabled, any combination of sending an XON character or raising one or both of the output signals will occur at this point. </p> </li> </ul> </section> <section><title>Handshaking latency and buffer sizes</title> <p>It takes a finite amount of time to respond to flow control and other handshaking events. The term <keyword>latency</keyword> is generally used in this context to refer to the time taken between the occurrence of a particular event and the response to it. The maximum handshaking latency in ultimately depends on the frequency of the system clock. </p> <p>However, the high and low watermarks for inward flow control need to allow for the response times of the systems with which our serial port is communicating rather than the latency associated with our own responses. Suppose it takes one second for a system to which we are connected to respond to a request to stop sending data, and suppose our serial port is running at 38400 bps. This means that we should have at least 3840 bytes free in our buffer when the high water mark is reached, otherwise we may lose incoming data if our buffer overflows. </p> <p>The input buffer levels at which these flow control events occur are not something that can be altered. Instead, the recommended way of adjusting the precise times at which flow control events will occur is to alter the size of the receive buffer using the member function <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-A82AF127-0CCC-364B-9331-E0E40874FA4B"><apiname>RComm::SetReceiveBufferLength()</apiname></xref>. In the situation just described, we would need to set a receive buffer size of around 16K to guarantee no data loss. </p> <p>(In practise, it may well be possible to get away with a smaller buffer than this even when the sending system takes one second to respond, as we will almost certainly be removing data from the buffer during the latency period. However, the precise calculations would clearly depend on the processing requirements of the receiving application.) </p> </section> <section><title>Internal FIFO Buffer Control</title> <p>As well as the buffers in the serial port drivers, the components used to implement many RS232 ports include a small internal <keyword>FIFO</keyword> buffer which can be switched on or off. The presence of such an internal buffer is signified by the <codeph>iFifo</codeph> byte in <codeph>TCommCaps</codeph> being set, and the FIFO can be enabled or disabled by setting or clearing the <codeph>iFifo</codeph> byte in <codeph>TCommConfig</codeph> as appropriate. The default state is for any FIFOs to be automatically enabled, as even a 16 byte FIFO (the usual size) significantly reduces the load on the processor during serial i/o operations, and applications should not disable this without good reason. </p> </section> <section><title>Software Flow Control and Binary Data</title> <p>A problem with Software Flow Control is that the characters that are inserted in the data to control the flow may also appear in the original data. Hardware flow control is the recommended handshaking method whenever there is a requirement for the transfer of binary data in either direction. </p> <p>Different policies are used for solving Software Flow Control when transmitting binary data. The policy depends on the direction in which the handshaking operates: </p> <ul><li id="GUID-C3F42B0B-E2F9-597B-BA72-A9777850C257"><p>Enabling software flow control when sending does not affect the transmitted data but it can affect the received data. When either of the flow control characters are received, they are acted on by the serial drivers as required and are not passed through to the client application. This policy can be used to send data to a device such as a printer which implements XON/XOFF handshaking. This policy is not recommended to receive binary data from a modem. Set the <codeph>KConfigObeyXoff</codeph> bit in <codeph>iHandshake</codeph> to enable software flow control when sending. </p> </li> <li id="GUID-86E3CB07-E515-5480-9A4A-6F5AEB1F82ED"><p>Enabling software flow control only when receiving has no effect on data transferred in either direction. This does not prevent an application either receiving or transmitting XON or XOFF. If an application uses XON and XOFF characters, the meaning of these characters embedded in binary data being sent is not going to be clear. Set the <codeph>KConfigSendXoff</codeph> bit in <codeph>iHandshake</codeph> to enable software flow control only when receiving. </p> </li> </ul> </section> <section><title>Changing software flow control characters</title> <p>The default software flow control characters are ASCII DC1 (decimal 17) for XON and DC3 (decimal 19) for XOFF. </p> <p>Change the <codeph>iXonChar</codeph> and <codeph>iXoffChar</codeph> fields of <codeph>TCommConfig</codeph> to change the default software flow control characters. Changing the defaults is not recommended. Setting the defaults to zero is not recommended since this can cause unpredictable behaviour. Disabling flow control must be done through the <codeph>iHandshake</codeph> field. </p> </section> <section><title>Cancellation of reads and writes</title> <p>The next three of the handshaking bitmasks are named <codeph>KConfigFailxxx</codeph>, and can be used to set up the conditions under which pending data transfers are automatically cancelled. For example, this can manage attempts to send data over a cable that has been pulled out, or disconnection of a modem during a file download. </p> <p>An <codeph>RComm</codeph> send or receive request can be set to terminate early with a <xref href="GUID-4F00C029-B015-3BD6-A492-BAA6F4F6ED1B.dita"><apiname>KErrCommsLineFail</apiname></xref> error if any specified combination of the control lines fail. To enable this, set one or more of the handshaking bits <xref href="GUID-89B7755D-693B-3AA4-9FB9-456AC2DB64C3.dita"><apiname>KConfigFailCTS</apiname></xref>, <xref href="GUID-DA744B94-D03B-3D99-B4E2-769A6AB6AB45.dita"><apiname>KConfigFailDSR</apiname></xref>, and <xref href="GUID-E9728D97-73CF-3F9A-8C92-94F3D1AC49B8.dita"><apiname>KConfigFailDCD</apiname></xref>. If multiple failure conditions are enabled, an application can use <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-B2A751BB-6784-31B8-8808-F5BFC087427B"><apiname>RComm::Signals()</apiname></xref> to discover the reason for the comms line failure. </p> </section> <section><title>Handshaking capability checks</title> <p>As with the speed and data format, it is possible to use <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4A6ECC68-EBC7-3B6C-94AE-9272669F6FF2"><apiname>RComm::Caps()</apiname></xref> to find out whether a specified handshaking mode is supported or not. Set the matching bitmasks with the <xref href="GUID-8FD727E7-68D6-3E80-913D-6ACBEB092559.dita"><apiname>TCommCaps.iHandshake</apiname></xref> field to discover specific capabilities of the port. </p> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0E785F9A-F349-4941-B0B1-CFEE8A961464.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0E785F9A-F349-4941-B0B1-CFEE8A961464" xml:lang="en"><title>Registering
+your optimiser</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You must register your optimiser (<codeph>MHTTPDataOptimiser</codeph>)
+with the HTTP Framework to enable support for Web Acceleration. You can enable
+the optimiser for a complete session or a particular transaction. Once the
+optimiser is enabled the HTTP framework calls the <codeph>EncodeL()</codeph> and <codeph>DecodeL()</codeph> functions
+automatically when HTTP data is sent and received respectively. The subsequent
+sections describe how to enable the optimiser for a session or transaction. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0E7D9177-E722-4906-BA75-667AF390A476-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e256954_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0EAB8D75-AA27-5548-8D0B-FC394AC79358.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0EAB8D75-AA27-5548-8D0B-FC394AC79358"><title>cp</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>cp</userinput> </p> <p>The <codeph>cp</codeph> command copies files and directories. For more information about using the <codeph>cp</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://www.freebsd.org/cgi/man.cgi</xref> by specifying <codeph>cp</codeph> as the search keyword and by selecting the <b>FreeBSD 6.2-Release</b> option from the release list. </p> <p>The following options are <b>not</b> supported by the Symbian version of the <codeph>cp</codeph> command: </p> <ul><li id="GUID-CB0ED9A1-3723-594C-96E2-34857700E3E3"><p> <codeph> -H</codeph>  </p> </li> <li id="GUID-2FF3A1D7-D53E-5B7F-A0AC-B230E799E5A9"><p> <codeph>-L</codeph>  </p> </li> <li id="GUID-48C3DADD-2752-5F52-8CD8-4224C0CCC6D5"><p> <codeph>-P</codeph>  </p> </li> <li id="GUID-699BDC14-7083-5485-952B-53C062157577"><p> <codeph>-l</codeph>  </p> </li> <li id="GUID-5649C045-28A3-523B-980E-745DB151C10F"><p> <codeph>-n</codeph>  </p> </li> <li id="GUID-64A0AB62-5969-5644-85F8-08741C896B11"><p> <codeph>-v</codeph>  </p> </li> </ul> <p>The following options of the <codeph>cp</codeph> command work differently on Symbian platform. </p> <ul><li id="GUID-9A60A837-C114-5E01-8122-96DA2927642D"><p> <b>-p:</b> This option is used to copy and preserve the time stamp of a file. </p> </li> <li id="GUID-9ABA5917-EC12-5CB9-BCA8-C4B8DF4BD926"><p> <b>-R:</b> This option operates on the contents of directories recursively. </p> </li> </ul> <section><title>Copyright information</title> <p>For information about documentation copyrights associated with the <codeph>cp</codeph> command, see <xref scope="external" href="http://www.freebsd.org/copyright/freebsd-doc-license.html">http://www.freebsd.org/copyright/freebsd-doc-license.html</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731" xml:lang="en"><title>Dynamic
+Resolution Switching</title><shortdesc>ScreenPlay provides support for externally connected displays,
+such as TV-out. Previous versions of Symbian and the non-ScreenPlay variant
+consider the size of all displays to be fixed, assuming them to be built into
+the phone. However, for High-Definition Multimedia Interface (HDMI) and composite
+video connectors, there is a range of resolutions that can change dynamically.
+ScreenPlay provides an optional feature that supports switching between resolutions
+at runtime. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. </p>
+<section id="GUID-374864AA-3757-4BD9-A5EB-4AC0E6DDD198"><title>The pre-ScreenPlay background</title> <p>Early devices typically
+had a screen size of 220 x 176 pixels. Over time, these were followed by higher
+resolution screens, such as 440 x 252 pixels. Applications that were designed
+for 220 x 176 pixel screens could run on 440 x 252 pixel screens because the
+Window Server simply scaled the pixels by a factor of two. </p> <p>However,
+this approach did not work when phones with 320 x 240 pixel screens were introduced,
+because each axis required a different scaling factor. Symbian introduced
+the <b>screen mode</b> feature to handle this and similar use cases. Device
+creators define in the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini
+file</xref> a number of screen modes for each physical screen on the device.
+For each screen mode the device creator defines parameters to control the
+offset from the top left corner of the screen, the height and width in both
+pixels and twips, <i>X</i> and <i>Y</i> axis scaling factors and so on. The
+Window Server uses these to position and scale old applications so that they
+can run on new phones with higher resolutions, as shown in the following diagram
+(which is not drawn to scale). The screen mode is still used in the same way
+in the <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay
+variant</xref>. </p> <fig id="GUID-FF86B974-1B1E-5EE1-A88A-9CD11B213A9B">
+<title>The screen mode enables old applications to run on new            
+ phones with higher resolutions            </title>
+<image href="GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e163163_href.png" placement="inline"/>
+</fig> <p>There are several similar use cases, such as swapping between portrait
+and landscape orientations and flip phones that have a flap that, when closed,
+partially obscures the main screen. The Window Server uses the screen mode
+parameters to display applications differently depending on whether the phone
+is in portrait or landscape orientation and whether the flap is open or closed.
+The screen mode represents the area that is presented to the application and
+is available to application developers through <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-8E1B5729-FD1C-3D4A-AC73-C6364E7D5BBF"><apiname>CWsScreenDevice::SizeInPixels()</apiname></xref>. </p> <p>Defining
+the screen modes in the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini
+file</xref> in this way means that all possible screen sizes and resolutions
+must be fixed and known at ROM building time. This approach has limitations
+when working with technologies such as HDMI and composite video connectors,
+where there is a very wide range of possible resolutions that may not be known
+until runtime. </p> </section>
+<section id="GUID-139F6C69-85CD-4796-AE8D-A48EEAEB5294"><title>The ScreenPlay approach</title> <p>In ScreenPlay the actual
+resolution of the full composition/display area can be determined at runtime.
+The full UI area is mapped to fill this display area but may be a lower virtual
+resolution, which is scaled. The render stage chain handles the
+scaling and positioning of applications and any external surfaces within the
+UI, and the composition engine performs the scaling of the pixel data to the
+actual display area at physical resolution. This has the advantage that the
+scaling can be handled by the graphics acceleration hardware, if it is available. </p> <p>Another
+advantage of this approach is that it enables dynamic scaling of the pixels.
+Usually pixels are square on a mobile phone display, but not square on many
+external displays. When the square pixels from the device are displayed on
+such a display, they may need to be scaled by different arbitrary factors
+on each axis. This is called <b>anisotropic scaling</b>. In contrast, <b>isotropic
+scaling</b> means that both pixel axes are scaled by the same arbitrary factor. </p> <p>The
+following diagram illustrates how the full UI area is mapped to fill the display/composition
+area. The application's area (which corresponds to the screen mode) is referred
+to as the <b>application extent</b> in ScreenPlay. </p> <fig id="GUID-724DB4EE-1F45-58D9-889C-B42ECEE7208D">
+<title>Coordinate spaces in ScreenPlay            </title>
+<image href="GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e163209_href.png" placement="inline"/>
+</fig> <p>ScreenPlay handles application sizing and positioning in a fundamentally
+different way from the non-ScreenPlay variant. Using a fixed offset to position
+the application within the screen is inadequate when connecting to an external
+HDMI display, for example, when the resolution may not be known until runtime.
+For example, the offset designed for a QVGA display does not position the
+application correctly in a higher resolution display, as shown in the following
+diagram, where the red cross indicates the offset for a QVGA display. </p> <fig id="GUID-A2816D08-B61F-5605-B6AF-A9D186F6BED5">
+<title>A fixed offset and several display resolutions (not drawn         
+    to scale)            </title>
+<image href="GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e163220_href.png" placement="inline"/>
+</fig> <p>In ScreenPlay there is no scaling of the application extent relative
+to the full UI area—there is always a 1:1 pixel correspondence between them.
+In addition, although supported, the screen mode offset is not necessarily
+used. Instead, the render stage chain selects an appropriate virtual resolution
+and handles the positioning—for example, centering it and using a best fit
+algorithm so that it takes up as much of the screen as possible or using the
+offset as a minimum margin size. The device creator can choose how to implement
+this in the render stages. In order to position the application correctly
+within the UI area, the Window Server gets the positioning information from
+the first render stage in the chain when the configuration or screen mode
+changes. </p> <p>ScreenPlay supports fixed screen modes in the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini
+file</xref>, although the scaling parameters are not used. However, the screen
+mode width and height in pixels and twips when specified and used together,
+provide the pixel aspect ratio. In order to maintain backwards compatibility,
+render stages should respect this aspect ratio whenever possible. </p> <p>It
+is possible for applications to determine and draw to the UI area outside
+the application extent using the APIs described below. However, <b>dynamic
+screen modes</b> provide an alternative mechanism for existing applications
+to access the full UI area. This is particularly suitable for HDMI and similar
+technologies where the resolution may not be known until runtime. To use this
+approach, the device creator must define one or two screen modes in the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini file</xref> and
+set their height and width in pixels to -1. One dynamic screen mode then represents
+the current display configuration and the other one, if present, represents
+the configuration when the screen is rotated by 90º or 270º. Using dynamic
+screen modes means that the display configuration can be changed at runtime
+according to the hardware that is available and detected by the composition
+engine. </p> <p>When a dynamic screen mode is used, the application extent
+always fills the full UI space and the area returned by <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-8E1B5729-FD1C-3D4A-AC73-C6364E7D5BBF"><apiname>CWsScreenDevice::SizeInPixels()</apiname></xref> always
+matches the actual resolution that is in use. </p>  </section>
+</conbody><related-links>
+<link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics
+Concepts</linktext></link>
+
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0ECBFCA7-D398-53CE-BAF4-86CFB0124A0E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0ECBFCA7-D398-53CE-BAF4-86CFB0124A0E"><title>Copying a Screen Area</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an example that shows how to use <codeph>CBitmapContext::CopyRect()</codeph> to copy from one screen area to another. </p> <codeblock id="GUID-C3E6CD4C-AF8B-593C-B411-A9B07CD5BD48" xml:space="preserve">...
+TPoint screenOrigin(0,0); // top left of the screen
+TSize area1(100,100); // size of area to copy
+rect.SetRect(screenOrigin,area1); // set rectangle to copy
+TPoint offset(area1.iWidth,0); // target area to right of copied area
+gc.CopyRect(offset,rect); // copy rect to target
+...</codeblock> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0EDFDB1E-B851-5871-B235-453A2B2F6BFB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0EDFDB1E-B851-5871-B235-453A2B2F6BFB" xml:lang="en"><title>MMS
+Settings Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>MMS Settings provides a generic way to store settings for Multimedia Message
+Service (MMS) messaging. </p>
+<p>Multimedia Messaging Service (MMS) is a standard for telephone messaging
+systems for sending messages that include multimedia objects (images, audio,
+video, rich text). </p>
+<section><title>Purpose</title> <p>Settings functionality is provided by the <filepath>mmsgenericsettings.dll</filepath> file
+to allow a messaging client to persist MMS settings in the Central Repository.
+The settings functionality is also used by the Server MTM to retrieve the
+setting information before sending and receiving messages. </p> </section>
+<section><title>Key terms</title> <dl>
+<dlentry>
+<dt>IAP</dt>
+<dd><p>Internet Access Point (IAP) offers dial-up access to Internet. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>WAP</dt>
+<dd><p>Wireless Application Protocol (WAP) is a secure specification that
+allows users to access information instantly through handheld wireless devices
+such as mobile phones. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>WSP</dt>
+<dd><p>Wireless Session Protocol (WSP) provides the upper-level application
+layer of WAP with a consistent interface for connection-mode session service
+and connectionless session service. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Central Repository</dt>
+<dd><p>The Central Repository provides a user interface to allow one or more
+clients to open repositories, and to provision and retrieve information from
+those repositories. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Description</title> <p>The <filepath>mmsgenericsettings.dll</filepath> file
+provides message settings encapsulation classes to manage MMS settings. The
+MMS settings are stored in the central repository and MMS are stored in the
+Message Store. </p> <p>The following settings are supported by <filepath>mmsgenericsettings.dll</filepath> to
+manage MMS settings: </p> <ul>
+<li id="GUID-A505F5BF-6604-520F-9B22-63404BD04F2D"><p>MMSC (MMS server) address </p> </li>
+<li id="GUID-6F7A3C4D-36BD-5AD6-A892-0713D95D18AB"><p>WSP or HTTP transport
+(the HTTP or WSP transport can be selected at the run-time). </p> </li>
+<li id="GUID-6515A2F5-9DE3-58D3-B64C-F2424ACD90FF"><p>Automatically get messages
+on notification </p> </li>
+<li id="GUID-22EDBCFF-861F-5C59-9143-575F23DDB79B"><p>Request delivery reports </p> </li>
+<li id="GUID-C62BC75D-DAE8-51E9-8097-24D2A76DF513"><p>Preferred IAP for the
+MMS network connection </p> <p>If connection fails with the preferred IAP
+or WAP account, a connection using the second choice option, if present, is
+made. The transport selection (WSP or HTTP) determines whether the WAP or
+HTTP account preferences are applied. </p> </li>
+</ul> </section>
+<section><title>API summary</title> <p>The following APIs are used for MMS
+settings: </p> <ul>
+<li id="GUID-A83F08BF-9443-5264-BFA7-94B0CB3511BD"><p>The <xref href="GUID-45F828BF-DC03-3C82-89B5-010687BDE91D.dita"><apiname>CMmsAccounts</apiname></xref> class
+is used to store and restore the configuration settings. </p> </li>
+<li id="GUID-5D775323-165D-539F-AF3A-9E6458C60E90"><p>The <xref href="GUID-1E1BA9E3-52E1-3AE6-BC62-3EBDA577107F.dita"><apiname>CMmsSettings</apiname></xref> class
+is used to specify and retrieve configuration settings. Messaging clients
+must use an instance of this class along with the <xref href="GUID-45F828BF-DC03-3C82-89B5-010687BDE91D.dita"><apiname>CMmsAccounts</apiname></xref> class
+to store and restore the configuration settings. </p> </li>
+<li id="GUID-8D4045E2-B720-5E15-A929-750054FB5226"><p>The <xref href="GUID-C79B080E-8BE7-3126-93B9-BA59B90C2200.dita"><apiname>MMmsSettingsObserver</apiname></xref> class
+is used to provide the interface for notification of changes that occur in
+the Central Repository. </p> </li>
+</ul> <p><b> Message encapsulation </b> </p> <p>The classes above provide
+message access functionality which is used to create, store, restore and read
+messages. The following are the functions of the message classes: </p> <ul>
+<li id="GUID-A3DF991D-2A3E-5B39-ACBF-EC9F8F651CC1"><p>Adding media objects
+to the message. </p> </li>
+<li id="GUID-AA60377A-0656-56F3-9962-468DD6ED6CB1"><p>Enumerating through
+media objects. </p> </li>
+<li id="GUID-8C5AB526-139C-5F07-90E1-CBC40DB962D8"><p>Adding recipients and
+a subject line to a message. </p> </li>
+<li id="GUID-07D074D7-A3E4-59EF-9BAD-E7B1FB47435B"><p>Adding other headers
+to the message. For example, expiry date. </p> </li>
+<li id="GUID-9365FAB8-5F61-510D-9FBA-3CB14B06E5DD"><p>Finding the appropriate
+media object for a given Uniform Resource Identifier (URI) in the Synchronized
+Multimedia Integration Language (SMIL). </p> </li>
+</ul> <p>The message data is stored in the central repository using one entry
+per message regardless of the number of media objects added to the message.
+This is preferable to using multiple message entries as it is faster and uses
+less disk space. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0EE3180B-4814-517E-A6DD-748136C17D55.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0EE3180B-4814-517E-A6DD-748136C17D55" xml:lang="en"><title>Video Client Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Video Client library. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0EECEF02-EC6A-53D5-8B27-C0732DA0160A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0EECEF02-EC6A-53D5-8B27-C0732DA0160A" xml:lang="en"><title>How to
+replace a C++ array with a wrapper</title><shortdesc>This document shows briefly how to replace a C++ array with a Symbian
+platform object.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>C++ arrays can always be replaced with a <codeph>TFixedArray&lt;class T,TInt
+S&gt;</codeph>. For example:</p>
+<codeblock id="GUID-5DFFA9D5-C18B-5BF9-B3A4-77B7ABB4CD1B" xml:space="preserve">TChar iSeparators[EMaxSeparators];
+CCoeControl* iControls[ENumControls];</codeblock>
+<p>becomes:</p>
+<codeblock id="GUID-388DFDE7-4E2F-5E69-8F12-48A337B1A206" xml:space="preserve">TFixedArray&lt;TChar,EMaxSeparators&gt; iSeparators;
+TFixedArray&lt;CCoeControl*,ENumControls&gt; iControls;</codeblock>
+<p>The contained class <i>must</i> have a default constructor. The array can
+also be initialised from a C++ array (using a bitwise copy).</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF"><title>Textual Logging</title><shortdesc>This topic describes the textual logging mechanisms available to help debugging the Communication-related components. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Most Comms components can output debugging information. These components must be configured to output information, with the configuration procedure dependent on the logging mechanism used by the component. The following mechanisms are used to log the information: </p> <ul><li id="GUID-726B089B-F8E0-5893-9D3F-4AEBD1751BF1"><p> <b>Flogger</b> - This logging mechanism is a file logger. It used to be the standard mechanism for Comms logging, but it is being replaced by CDU (below). </p> </li> <li id="GUID-FC40C065-ED23-5F49-AAA7-F557BD12CD58"><p> <b>Comms Debug Utility (CDU)</b> - This logging mechanism is currently used for the majority of Comms logging. It is the successor to Flogger and adds a two-phase logging system to give flexibility in debugging problems which are difficult to reproduce in debug binary files. It unifies Comms logging into one text file and allows the output to be redirected to RDebug for easier on-target debugging, or on emulator to the fast Windows Debug port. For more information see <xref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita#GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF/GUID-34383668-480A-50DF-A3DB-8DE17D49ED30">Post-processing CDU log files</xref>, <xref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita#GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF/GUID-217068A5-CC0A-5548-898E-C392F2031647">Default CDU</xref> and <xref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita#GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF/GUID-3F3CDC4F-A2C4-5DD4-8E7C-24D67DA8DA3B">Interpreting the log files</xref>. </p> <p> <b>Note:</b> The CDU API is not published and so its APIs cannot be used for adding new logging. </p> </li> <li id="GUID-FBD09686-A6AD-5781-BA2D-E1041B0B4D47"><p> <b>Unified Trace/UTrace/ULogger</b> - This logging mechanism is currently used for a small amount of Comms logging. For more information see <xref href="GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita">How to Use ULogger with Comms</xref>  </p> </li> <li id="GUID-EBC721D3-8EF5-5C5D-8AC7-F606B809E4E2"><p> <b>Proprietary</b> - This logging mechanism belongs to the component itself. A few components still use their own logging mechanisms, but these usually behave similarly to Flogger in that to obtain the logs the appropriate folder needs to exist while the component is running. </p> </li> </ul> <p> <b> Note:</b> When you enable logging for a component, the component may run significantly slower as it performs the logging. This could make reproducing a problem more difficult if the reduced component execution performance changes the sequence of events leading to the problem. </p> <section id="GUID-34383668-480A-50DF-A3DB-8DE17D49ED30"><title>Post-processing CDU log files</title> <p>The CDU log file format is designed to be viewed unprocessed. However, in some cases post-processing is required. Two post-processing tools are available: </p> <ul><li id="GUID-7C6331FC-D651-5813-B8EF-9762600682BB"><p> <b>Splitlog</b> - is supplied in <codeph>epoc32\tools</codeph> and splits the single <codeph>log.txt</codeph> file into multiple files by each unique tag combination. This tool is used to extract embedded binary logging such as that for PPP described below in <xref href="GUID-935DF48C-F014-5E2A-8BE6-29B00C4FD31D.dita">Component-Specific Debugging Help</xref>. </p> </li> <li id="GUID-27AF2B6F-5108-5A98-AD3E-23445E1ED87C"><p> <b>Networking Message Sequence Display Tool</b> - processes a standard <codeph>log.txt</codeph> file to extract the Comms Framework messages and generates HTML/SVG output files for display on a suitable SVG-enabled browser. </p> <fig id="GUID-02A86F64-2278-5B46-82A4-7243C4790107"><title>
+                  Figure 1 - Example SVG output from the Message Sequence Display
+                  Tool 
+                </title> <image href="GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e65069_href.png" placement="inline"/></fig> </li> </ul> </section> <section id="GUID-217068A5-CC0A-5548-898E-C392F2031647"><title>Default CDU</title> <p>CDU provides a default configuration file which lists all the known components which use it, and also provides a reference listing of <keyword>iby</keyword> files and their respective component source code and log tags. Figure 2 provides a snapshot of the configuration file: </p> <fig id="GUID-22A390A6-F81E-5ECF-8A48-07D51ABD9037"><title>
+             Figure 2 - The default commsdbg.ini file 
+          </title> <image href="GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e65088_href.png" placement="inline"/></fig> <p>The default CDU file is located at <filepath>..\comms-infras\commsdebugutility\group\commsdbgdefault.ini</filepath> and is available for the emulator in <filepath>epoc32\&lt;data|release\winscw\&lt;udeb|urel&gt;&gt;\z\resource\commsdbg.ini</filepath>. </p> </section> <section id="GUID-3F3CDC4F-A2C4-5DD4-8E7C-24D67DA8DA3B"><title>Interpreting the log files</title> <p>Comms components have specific log file schemes with some similarities. The following are guidelines for interpreting the files: </p> <ul><li id="GUID-54407D7D-E1FC-50C2-BFF5-961E699C02DE"><p> <b>Errors are logged</b> - when a panic or other serious error condition is encountered. Often the last few log lines includes where the critical condition was reached, since usually the panic code or error code alone is not enough. If not, then often searching for "warning" or "error" in the earlier logging will identify where the problem began. </p> </li> <li id="GUID-26C4961B-BA78-53B0-BEE4-E591D1C1717C"><p> <b>Multi-threaded module output prefixes thread number</b> - ESock and the C32 Serial Server prefix the log lines with the thread number within the specific thread numbering scheme. For example: </p> <codeblock id="GUID-6E3B1FF9-8FC2-5C5A-87E0-7D2BA45BFDCA" xml:space="preserve">esock   esock   a 2e W0: CWorkerThread::ConstructL Init RS ChannelHandler
+esock   esock   a    32    W4: SocketServer::InitL() Done!
+esock   Booting a 32 W4: CWorkerThread::ConstructL Init ProtocolManager
+</codeblock> <p>The log lines indicate that ESock's Worker zero - the main thread - has initiated construction of its Rootserver (RS) communications channel, while Worker four has started constructing the Protocol Manager. </p> <p> <b>Note:</b> The "2e" and "32" numbers are the kernel's own numbers for these threads. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B"><title>Editing media files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use the MVS to edit media files (or "clips"). You can either crop a newly recorded file before saving it, or specify that only a portion of a saved file should play. </p> <section><title>Cropping a file</title> <p>You can crop a file - remove a specified number of seconds from the beginning or end of a file open for record - before saving it. </p> <p>Note: The audio or video cropped is deleted from the file and cannot be retrieved. </p> <p>To crop a file: </p> <ol id="GUID-E1702588-76EB-5658-9E41-58C321AB0238"><li id="GUID-C529BFF0-0C77-551F-BCEF-9CAFC45B91D5"><p>In the <i>Edit</i> menu, click <i>SetCropWindow</i>. The <i>Crop This Clip</i> dialog box is displayed. </p> <fig id="GUID-4B84821D-D691-5D9A-9CBF-91139A6D6527"><image href="GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e303784_href.jpg" placement="inline"/></fig> </li> <li id="GUID-385C53A9-2E7E-545E-AA68-0DF92192DE31"><p>Select the position of the <i>Crop</i>: offset from either the beginning or the end of the clip. </p> </li> <li id="GUID-2390AFE2-4A30-578E-9A01-C31C81FD7411"><p>Enter the <i>Cropping Point</i>: the offset in seconds. </p> </li> <li id="GUID-08C1E43C-563B-5DDA-8532-CD77766BBC12"><p>Click <i>Crop!</i> to crop the clip. </p> </li> </ol> </section> <section><title> Selecting a portion of a file to play</title> <p>Before you play a media file you can specify that you want to play only a portion of it. </p> <p>To select a portion of clip for playing: </p> <ol id="GUID-BA9788F7-8EC9-5CC9-8B46-7A7EF656E391"><li id="GUID-477D1475-0503-59EE-818A-CBF2EE56B577"><p>In the <i>Edit</i> menu, click <i>Set PlayWindow</i>. This displays the <i>Set PlayWindow</i> dialog box. </p> <fig id="GUID-00172882-B439-5834-9EC4-B2631C527E78"><image href="GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e303838_href.jpg" placement="inline"/></fig> </li> <li id="GUID-A1571A8E-CF88-5DF0-B574-81165B85CF45"><p>Enter the <i>Start</i> and <i>End</i> times of the portion in milliseconds. </p> </li> <li id="GUID-C383DC7C-86D5-5B87-BF4A-99C2E32C11D1"><p>Click <i>OK</i> to confirm the clip length. </p> <p>When you play the clip, only the selected portion is played. </p> </li> </ol> <p><b>Clearing a selected portion </b> </p> <p>To set the portion to play back to its original value (entire clip): from the <i>Edit</i> menu, click <i>ClearPlayWindow</i>. </p> </section> <section><title>See Also</title> <p> <xref href="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita">Introduction to the MVS</xref> </p> <p> <xref href="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita">MVS GUI layout</xref> </p> <p> <xref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita">Recording media files</xref> </p> <p> <xref href="GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita">Playing media files</xref> </p> <p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita">Configuring and clearing files</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F1D1BC4-C8FB-55BE-83FE-DD604C4A9CA3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0F1D1BC4-C8FB-55BE-83FE-DD604C4A9CA3"><title>Importing and Exporting Entries</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Calendar entries can be imported and exported in the vCalendar format using <xref href="GUID-CA818BA3-8A3B-33C8-974E-12F1C6E1FFE9.dita"><apiname>CCalDataExchange</apiname></xref>. </p> <p>To import a calendar entry, call <xref href="GUID-CA818BA3-8A3B-33C8-974E-12F1C6E1FFE9.dita#GUID-CA818BA3-8A3B-33C8-974E-12F1C6E1FFE9/GUID-4582DAA4-F5DB-3609-81C8-289958FC078C"><apiname>CCalDataExchange::ImportL()</apiname></xref>, specifying the data format (currently vCalendar) and the read stream that contains the data. </p> <p>To export a calendar entry, call <xref href="GUID-CA818BA3-8A3B-33C8-974E-12F1C6E1FFE9.dita#GUID-CA818BA3-8A3B-33C8-974E-12F1C6E1FFE9/GUID-EB4E6EA1-674B-399B-9C06-4DE895C6D889"><apiname>CCalDataExchange::ExportL()</apiname></xref>, specifying the data format (currently vCalendar), the write stream, and an array of entries to export. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F3E543D-CFEE-5CD8-8BAB-19B3A993388F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0F3E543D-CFEE-5CD8-8BAB-19B3A993388F" xml:lang="en"><title>PAN Profile</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Personal Area Networking (PAN) profile provides for networking over Bluetooth. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F4DE9E0-4A98-5914-9AB1-DD6CE1A5A1F3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0F4DE9E0-4A98-5914-9AB1-DD6CE1A5A1F3"><title>Unified Stores Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Symbian platform device may contain zero or more individual certificate stores, and zero or more key stores. Software implementations for both of these are supplied, and device creators may add their own, perhaps using special hardware on the device - for example, using a WIM. The certificate store and key store classes act as central interfaces for certificate and key management, so that application writers do not need to know details of the specific implementations present. These classes automatically discover all implementations of the relevant interface on the device using the crypto token framework. </p> <p>The certificate and key stores centralize and amalgamate the individual certstore and keystore implementations. The stores are unified in the sense that client requests, which relate to all store implementations (such as "list keys" or "list certificates"), are passed to every implementation in turn, and the results collated. Requests that relate to a specific store are routed to the correct implementation. </p> <p>Clients should only use the certificate store and key store classes to access certificates and keys. There is no need to use the crypto token framework directly, and although this is possible, it is not recommended. </p> <section><title>Programming with the Certificate Store and the Key
+          Store</title> <p>The ctframework component provides the interfaces for key store and certificate store implementations, and the unified stores themselves are implemented in Certificate Management's (certman's) certstore component. Programs wishing to use the unified stores should therefore be linked against both <codeph>certstore.lib</codeph> and <codeph>ctframework.lib</codeph>. Note that <codeph>certstore.lib</codeph> provides both the <xref href="GUID-0010EB39-8C23-5453-BE96-4EFC520B6F81.dita">unified certificate store</xref> and the <xref href="GUID-695FCEB8-EA04-5C1C-A197-648275BA0281.dita">unified key store</xref>. </p> <p>The software certificate store implementation supplied with Symbian platform is provided by <codeph>filecertstore.dll</codeph>, and this runs entirely in the client application. The software key store runs in a separate server process - this is implemented by <codeph>fstokenserver.exe</codeph>, and the client side part that communicates with the server is provided by <codeph>fstokencli.dll</codeph>. The unified stores use the ECom framework to load these DLLs automatically, so there is no need to link against them in client applications. </p> <p>Within the header files for the Unified Certificate Store and the Unified Key Store, most of the functions are asynchronous and this means that clients need to be implemented as active objects to work. All calls to asynchronous functions must be called from the context of active objects - the active scheduler will call the client's <codeph>RunL()</codeph> function when the asynchronous function completes. </p> <p>This means that the following code will not work: </p> <codeblock id="GUID-6D87CFA3-44ED-5B24-B17C-6A5A77854688" xml:space="preserve"> 
+// Broken!
+TRequestStatus status;
+certStore-&gt;DoSomething(parameters, status);
+User::WaitForRequest(&amp;status);
+</codeblock> </section> <section><title>APIs</title> <p>The following table provides information on the APIs for the unified certificate store and the unified key store. </p> <table id="GUID-09857F72-9410-5F5A-BE8E-61D5BD04D01D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita"><apiname>CUnifiedCertStore</apiname></xref>  </p> </entry> <entry><p>This class provides a unified view of all the certificate store implementations in the device. </p> </entry> </row> <row><entry><p> <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita"><apiname>CUnifiedKeyStore</apiname></xref>  </p> </entry> <entry><p>This class provides a unified view of all the certificate store implementations in the device. </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701" xml:lang="en"><title>UI concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The UI (User Interface) in devices based on the Symbian platform consists
+of at least one display for showing output to mobile device users and keys
+that allow mobile device users to enter input. The number, size, and resolution
+of displays varies among <xref href="http://www.forum.nokia.com/devices/matrix_s60_1.html" scope="external">devices based on the Symbian platform</xref>, as do the keys available for input.</p>
+<fig id="GUID-84A0AF11-85F9-45E1-B723-47A696C42619"><title>Symbian UI</title><image href="GUID-FE89E799-4F19-4C22-96B7-8006EB55812E_d0e41980_href.png"/></fig>
+<p>The display consists of different elements, for which the following
+terms are used:</p>
+<ul>
+<li><p>window - an area on the display. There are windows that take
+up the entire display, and other windows that only take up part of the display.
+For example, pop-up windows do not cover the entire display. Pop-up windows
+have frames and typically the underlying window is partly visible behind the
+pop-up window. Access to windows is gained through <xref href="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita"><i>controls</i></xref>.</p>
+</li>
+<li><p>pane - this is a subelement of a window that is dedicated
+to a specific purpose. Windows may contain several panes, and panes may contain
+subpanes. </p></li>
+</ul>
+<section id="GUID-4D941E4F-5954-4132-AAB4-CD4A725862EE"><title>Windows</title>
+<p>The following figure illustrates a typical window for an application:</p>
+<fig id="GUID-0E232F07-32AC-42B7-B94C-D959FF35AB68"><title>Symbian UI window</title><image href="GUID-657CAC8A-5524-4D76-9CAB-056191D3A318_d0e42011_href.png"/></fig>
+<p>Typically, windows contain a status pane, a main pane, and a control
+pane.</p>
+<p>Note that the Symbian UI can rotate between portrait and landscape layouts.
+For more information on the design implications of this feature, see Chapter
+7 of the S60 UI Style Guide available for download from <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/04c58d5a-84c3-42db-83d5-486c1cf3e6b3/S60_UI_Style_Guide_v1_3_en.pdf.html" scope="external">Forum Nokia</xref>.</p>
+<p>By default, the <i>status</i> pane:</p>
+<ul>
+<li><p>occupies the top part of the display</p></li>
+<li><p>shows information on the current application and state, and
+general information about the device status, such as signal and battery strength</p>
+</li>
+<li><p>contains five subpanes: <i>title pane</i>, <i>context pane</i>, <i>navi
+pane</i>, <i>signal pane</i>, and <i>battery pane/universal indicator pane</i></p>
+</li>
+</ul>
+<p>The <i>main</i> pane is in the middle of the display and is where applications
+show their application state.</p>
+<p>By default, the <i>control</i> pane:</p>
+<ul>
+<li><p>occupies the bottom part of the display</p></li>
+<li><p>displays the labels associated with the two softkeys</p>
+</li>
+<li><p>appears even when pop-up windows are on the display, although
+they are not contained in the pop-up window.</p></li>
+</ul>
+<p>Mobile device users navigate through applications based on input from
+selections in the <i>control pane</i> or key presses. The traditional hierarchical
+tree structure forms the basis for navigation, with mobile device users moving
+from one node, which represents a state, to another. </p>
+<p>The figure below illustrates an example of a basic state hierarchy.</p>
+<fig id="GUID-C8A1E4B5-8737-4378-A44A-21EB14882EF5"><title>Example of a basic state hierarchy in an application</title><image href="GUID-7BE7AC77-4EF5-46BD-A491-1DDBBA20AFE6_d0e42099_href.png"/></fig>
+</section>
+<section id="GUID-1ADE27AA-CFB6-42C2-8AE2-E7EDD4EC627A"><title>Tabs</title>
+<p>The Symbian UI supports tabs, which allow you to collect information
+for a state onto different pages. These tabs exist in the same node of the
+navigation hierarchy. The concept of tabs is related to the term <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita"><i>view</i></xref>.</p>
+<p>The following figure illustrates the use of tabs in an application.</p>
+<fig id="GUID-19AFDF8B-AC92-4214-BC40-DFEC8F32B6FE"><title>Windows with tabs</title><image href="GUID-BA13D0D6-DE42-43D3-BCA8-5B83181B009E_d0e42119_href.png"/></fig>
+<p>The following figures indicates how tabs appear in the navigation hierarchy.</p>
+<fig id="GUID-F595A77A-00A2-484F-85E5-3318749979E7"><title>Example of a hierarchy with tabs</title><image href="GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e42127_href.png"/></fig>
+<p>See also:</p>
+<ul>
+<li><p><xref href="GUID-A4560E99-C124-49A1-ADA1-D1B1F18EE539.dita">Relationship
+between framework and applications</xref></p>
+</li>
+<li><p><xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">Scalability</xref></p>
+</li>
+<li><p><xref href="GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita">Themes</xref></p>
+</li>
+</ul>
+<p>The following concepts are also relevant in this context:</p>
+<ul>
+<li><p><xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller</xref></p>
+</li>
+<li><p><xref href="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita">Controls</xref></p>
+</li>
+<li><p><xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">Views</xref></p>
+</li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F647342-E069-5444-9370-58520375543A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0F647342-E069-5444-9370-58520375543A" xml:lang="en"><title>Telephony Utilities</title><shortdesc>The Telephony Utilities is a collection of components that provides small utility libraries related to telephony. The collection also includes the component that implements the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F784804-8452-4C92-ABB3-56B81BAED744.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0F784804-8452-4C92-ABB3-56B81BAED744" xml:lang="en"><title>Sensor
+Services Overview</title><shortdesc>The Sensor Services collection is a group of components that provide
+APIs for extending sensors by means of plug-ins and providing channel-based
+communication with the sensor hardware.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A6D94351-3A27-40CA-876A-B47B69AFD48C"><title>Key Concepts
+and Terms</title><dl>
+<dlentry>
+<dt>Sensor</dt>
+<dd><p>A sensor is a hardware measuring device connected to the Symbian
+device, which measures a physical quantity in its immediate vicinity and converts
+that quantity into small sets of numeric digital values.</p></dd>
+</dlentry>
+<dlentry>
+<dt>Sensor Subsystem (SSY)</dt>
+<dd><p>Sensor Subsystems are plug-ins that connect the sensor hardware with
+the sensor server.</p></dd>
+</dlentry>
+</dl>           </section>
+<section id="GUID-567734D1-EDE0-4799-8851-B798BB7ACF50"><title>Architecture</title> 
+     <fig id="GUID-BD0DC0F8-9DA8-40D2-ABE5-F6D7D36BB4B6">
+<title>Sensor Services Architecture</title>
+<image href="GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e113139_href.png" placement="inline"/>
+</fig><p>The Sensor Services collection consists of the following components:</p><ul>
+<li><p><b>Sensor Framework</b>, which provides sensor server and plug-in interfaces
+for adding any new sensor plug-in as required. The framework also provides
+sensor channel APIs for creating a medium (sensor channel) of exchange between
+the client applications and the sensor hardware. The sensor plug-ins retrieve
+data from sensor hardware (through sensor channels) and enable the client
+applications to use the data for specific requirements. </p></li>
+<li><p><b>Data Compensator</b>, which uses data provided by the sensor plug-ins
+to correct the sensor axis data based on the current orientation of the Symbian
+device. This data can be used by the client applications to display the pages
+in portrait or landscape views.</p></li>
+
+</ul>     </section>
+<section id="GUID-1ADD99BC-6ECF-464F-9E05-0BEA28F67A2B"><title>Typical Uses</title><ul>
+<li><p><xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita">Using Sensor
+Channel APIs</xref>.</p></li>
+<li><p><xref href="GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita">Compensating
+Sensor Data for Display Orientation</xref></p></li>
+
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F875AD4-F3A1-5AAA-81D3-E60436472443.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0F875AD4-F3A1-5AAA-81D3-E60436472443" xml:lang="en"><title>Online Certificate
+Status Protocol</title><shortdesc>Online Certificate Status Protocol (OCSP) determines
+the revocation status of certificates. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84" xml:lang="en"><title>Application
+framework concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The application framework contains a set of libraries and components
+provided by the Symbian platform to make common functions available to applications.
+Examples of the available functionality include: </p>
+<ul>
+<li><p><xref href="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita">application
+launching</xref></p></li>
+<li><p><xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">event
+handling</xref></p></li>
+<li><p><xref href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita">internationalization
+and localization</xref></p></li>
+<li><p><xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">keyboard</xref> and <xref href="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita">pointer</xref> support</p>
+</li>
+</ul>
+<p>All GUI-based applications use the application framework architecture,
+which means you need to derive the application classes from base classes provided
+by AVKON. For more information on the classes involved in the application
+framework, see <xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">Framework
+requirements for GUI applications</xref>.
+For more information on the UI, see <xref href="GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita">UI concepts</xref>.</p>
+<p>In addition, the following concepts are relevant in the context of the
+application framework:</p>
+<ul>
+<li><p><xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">Resources</xref></p>
+</li>
+<li><p><xref href="GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita">Registration</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B" xml:lang="en"><title>Managing
+resource files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In the Symbian platform, <xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">resource</xref> files
+are used to define UI components such as status panes, <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA
+(Control Button Area) buttons</xref>, <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">menu
+bars</xref>, <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">views</xref>,
+dialogs, strings, and constants used in applications. The UI components consist
+of data structures that are defined in resource files, and then are called
+from the classes controlling the UI implementation. When UI component implementation
+is split into these two approaches, it means that resources can be recompiled,
+for example for new languages, without having to recompile the application
+code (unless you change the resource identifiers).</p>
+<p>This section includes the following:</p>
+<ul>
+<li><p><xref href="GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita">How resource
+files work</xref></p>
+</li>
+<li><p><xref href="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita">Resource
+file structure</xref></p>
+</li>
+<li><p><xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">Precompiled
+resource values available from the Symbian platform</xref></p>
+</li>
+<li><p><xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita">Required
+resource file statements</xref></p>
+</li>
+<li><p><xref href="GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita">Optional
+resource file statements</xref></p>
+</li>
+<li><p><xref href="GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita">Resource
+string handling</xref></p>
+</li>
+<li><p><xref href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita">Creating
+registration resource files</xref></p>
+</li>
+<li><p><xref href="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita">Defining
+localizable registration information</xref></p>
+</li>
+<li><p><xref href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita">Creating
+resource header files</xref></p>
+</li>
+<li><p><xref href="GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita">Resource
+management example: HelloWorldBasic</xref></p>
+</li>
+</ul>
+<note>
+<p>For demonstration purposes, the sections on resources contain examples
+with arbitrary values. In your own code, it is recommend that you use a system
+of easy to remember value names.</p>
+</note>
+<p>For an introduction to the UI, see <xref href="GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita">UI concepts</xref>.</p>
+<p>For more information on resources, resource files, and their use in
+the Symbian OS, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/System-Libraries-subsystem-guide/bafl94/InterfaceToResourceFiles/InterfaceToResourceFilesOverview.guide.html" format="application/java-archive">Resource
+Files</xref>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0FB7E59D-F81A-4B6F-B9E7-C97FDA5B7925_d0e56403_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E"><title>Advanced Camera Settings</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial gives you information about Advanced Camera Settings. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to provide detailed descriptions of various advanced settings of Camera. </p> <p><b>Introduction</b> </p> <p>Every individual camera setting is identified by a UID to facilitate integration in the camera messaging mechanism. Each change of a parameter value causes an event notification containing the UID of the setting to be sent to all <codeph>MCameraObserver2</codeph> clients of the camera. If additional information is required, clients would use the related getter function to identify the new value of the setting. Some settings may have a dependency on others. In this respect a particular setting value may disable a related supported setting. </p> </section> <section><title>Using Advanced Camera Settings </title> <p>The Following tasks will be covered in this tutorial: </p> <ul><li id="GUID-B729949E-B77E-5905-B72D-FF56B1E58495"><p>Creating the <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object </p> </li> <li id="GUID-A6EEAB43-E51E-546E-8BFF-BFBCDF318677"><p>Setting Camera Details </p> </li> <li id="GUID-8D716D56-9143-5695-A25B-E493C6D8B850"><p>Operating in stabilization mode </p> </li> <li id="GUID-0283EFB5-6B41-55DA-AE6A-7475DDD03AB6"><p>Operating in Flash Mode </p> </li> <li id="GUID-00389D42-E64A-50A4-92D9-1A9E25A9C385"><p>Operating in Focus Mode. </p> </li> </ul> <p><b>Basic Procedure for Creating the Advance Settings Object</b> </p> <p>The high level steps to perform specific advance settings are shown here: </p> <ul><li id="GUID-AD1B9FE6-5BD8-52D4-8D56-BE622B34B216"><p>Create the <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object. </p> </li> <li id="GUID-FE4DDF73-35E5-5B1E-896B-FC22D6E5E277"><p>Provide a reference to a <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> object. This returns a pointer to a fully constructed <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object. </p> <p> <codeph>CCamera::CCameraAdvancedSettings*
+                  CCamera::CCameraAdvancedSettings::NewL</codeph>. </p> <p> <b>Note</b>: Creation of <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> also involves creation of the corresponding M classes; <xref href="GUID-8B30B504-513B-387D-9389-4C26DCEE8372.dita"><apiname>MCameraAdvancedSettings</apiname></xref>, <xref href="GUID-6CC4140E-1061-31E9-B477-089B1342A8A5.dita"><apiname>MCameraAdvancedSettings2</apiname></xref>, <xref href="GUID-73E02E93-8618-37F9-AA4E-13D53BF60609.dita"><apiname>MCameraAdvancedSettings3</apiname></xref> and <xref href="GUID-1E82B9DC-C853-335C-BE03-B2FD4D917CB9.dita"><apiname>MCameraAdvancedSettings4</apiname></xref> derived classes. Licensee provide concrete implementation for these M classes. <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> is a facade which forwards the setting calls to respective M classes methods. </p> </li> </ul> <p> </p> <p> <b>Note</b>: Clients using <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita"><apiname>MCameraObserver</apiname></xref> are not recommended to use this extension class, since they cannot handle events. </p> <p><b>Basic Procedure for Setting Camera Details</b> </p> <p>The high level steps to set Camera details are shown here: </p> <ul><li id="GUID-DB312A12-D840-5032-8A0F-4DD74A67EA41"><p>Get the information about the type of the Camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-6C99156B-A23F-32C8-AA84-F7005EDEBD3E"><apiname>CCamera::CCameraAdvancedSettings::TCameraType</apiname></xref>. </p> </li> <li id="GUID-32F54779-C4EC-56A2-A168-3083F1207078"><p>Check whether the current camera is present using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-9FDAFDB4-1F00-3F6E-8285-C7DF3BCF9A0D"><apiname>CCamera::CCameraAdvancedSettings::IsCameraPresent()</apiname></xref>. </p> </li> <li id="GUID-62959E45-6CF1-551D-B5DC-4C831B6CE6AC"><p>Get the unique index of the current camera that identifies the camera on the device using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-709070F9-C1C0-3A1B-933F-E06C98264CD8"><apiname>CCamera::CCameraAdvancedSettings::CameraIndex().</apiname></xref>. </p> </li> </ul> <p><b>Basic Procedure for operating in Stabilization Mode</b> </p> <p>The high level steps to set Camera in stabilization mode are shown here: </p> <ul><li id="GUID-654F95E4-3CB0-5217-B567-5CDA68545BD0"><p>Get all the supported stabilization modes on the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-374DE9A9-8523-3CE7-B276-903C09905CE5"><apiname>CCamera::CCameraAdvancedSettings::SupportedStabilizationModes()</apiname></xref>. </p> </li> <li id="GUID-DAD7736E-7C86-57C2-8A2A-4718CE41E4D2"><p>Get current stabilization mode on the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-7F60B6AD-F188-3437-B6C5-38F5AAE0465D"><apiname>CCamera::CCameraAdvancedSettings::StabilizationMode()</apiname></xref>. </p> </li> <li id="GUID-70DF64DC-FCC9-5EEE-A9CD-71F3B808B231"><p>Set a specific stabilization mode on the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-4E16E533-067E-3090-A407-59FCE1BD7E38"><apiname>CCamera::CCameraAdvancedSettings::SetStabilizationMode()</apiname></xref>. </p> <p>The client receives the notifications of the settings asynchronously through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref> with UID <xref href="GUID-CD67A688-8E6C-3774-AE34-6F2CAFD30733.dita"><apiname>KUidECamEventCameraSettingStabilizationMode</apiname></xref>. </p> <p> <b>Note</b>: <xref href="GUID-8B30B504-513B-387D-9389-4C26DCEE8372.dita#GUID-8B30B504-513B-387D-9389-4C26DCEE8372/GUID-62E8BCC8-76CB-3FF4-A1BF-B322F35F9002"><apiname>MCameraAdvancedSettings::SetStabilizationMode()</apiname></xref> concrete implementation implements the actual setting of stabilization mode. </p> </li> </ul> <p><b>Basic Procedure for operating in Flash Mode</b> </p> <p>The high level steps to set Camera in flash mode are shown here: </p> <ul><li id="GUID-89535F4F-162C-5CBA-873F-BF6C8768CC71"><p>Get the list of supported flash mode using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-34EC67ED-9810-30F6-B6A9-4F106DE4C2AD"><apiname>CCamera::CCameraAdvancedSettings::SupportedFlashModes()</apiname></xref> method and get the current flash mode using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-C6CF3333-C7D8-3A8F-B6B0-097E99E387BC"><apiname>CCamera::CCameraAdvancedSettings::FlashMode()</apiname></xref> method. </p> </li> <li id="GUID-FACB7B1D-D328-5FEA-A8E3-FCB538B93E7F"><p>Set the flash mode using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-13227745-5E7B-33F3-A785-16676B37D52E"><apiname>CCamera::CCameraAdvancedSettings::SetFlashMode()</apiname></xref>. This triggers a <xref href="GUID-F5771285-A08F-3CBE-8F3F-83CFD2E13ED1.dita"><apiname>KUidECamEventCameraSettingFlashMode</apiname></xref> event to all camera <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2</apiname></xref> clients. </p> </li> <li id="GUID-9983601E-5A55-5CDB-98E1-8A2198DB0A81"><p>Check if the flash red eye reduction is switched on using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-CFCBE1CC-97ED-31D2-965C-BDCB2F5CAB9F"><apiname>CCamera::CCameraAdvancedSettings::RedEyeReduceOn()</apiname></xref>. It returns <i>ETrue</i> for switched ON and <i>EFalse</i> for switched OFF at current state. </p> <p>Red Eye Reduce is a special mode of flash that can be set in two ways: </p> <ul><li id="GUID-C37A7F7F-6473-5920-82F0-A771E71BD5D0"><p> <codeph>CCamera::CCameraAdvancedSettings::SetFlashMode(CCamera::EFlashRedEyeReduce)</codeph> </p> </li> <li id="GUID-4696BEB7-A5F3-571D-9592-0778FC06316F"><p> <codeph>CCamera::CCameraAdvancedSettings::SetRedEyeReduceOn(ETrue)</codeph> </p> </li> </ul> <p>This allows the client to set two flashes simultaneously. In such scenario, if <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-C6CF3333-C7D8-3A8F-B6B0-097E99E387BC"><apiname>CCamera::CCameraAdvancedSettings::FlashMode()</apiname></xref> is used, the flash mode set using <xref href="GUID-0926A429-8151-36D2-83D3-C63245A50006.dita"><apiname>SetFlashMode()</apiname></xref> is retrieved. </p> </li> <li id="GUID-E6B7C1E1-B269-5150-A482-D7DF3BBCD80F"><p>Set the flash type as listed under <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-36ED3D9F-B246-3CCC-8BDB-53141F8FB423"><apiname>CCamera::Tflash</apiname></xref> to <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-30D25AA3-2885-3702-AF8C-62ED42202014"><apiname>CCamera::EFlashVideoLight</apiname></xref> to have constant emission of light during video mode. </p> </li> <li id="GUID-E0E8A4C4-1F7A-5506-A2D1-E75D5435DF1B"><p>Use <xref href="GUID-E2D461B6-9373-31B2-95C8-EB929C7B1E6A.dita"><apiname>EPCWFlashOverheated</apiname></xref> method to indicate that flash is overheated. </p> </li> <li id="GUID-C79BC6D4-B087-542C-8159-2CBD916B3B60"><p>Use <xref href="GUID-76B142E7-C617-3521-9C44-B0D1FA7BECBB.dita"><apiname>EPCWFlashNotNeeded</apiname></xref> method to indicate that flash cannot be used because of enough ambient light. </p> </li> </ul> <p>When the clients subscribe for PreCaptureWarnings, concrete implementation issues PreCaptureWarnings. <xref href="GUID-1D6F9085-1DAD-3B43-B496-6C43A83EF5CF.dita"><apiname>SubscribeToPreCaptureWarningL</apiname></xref> is one such method that is used for subscription. </p> <p>Subsequent to subscription, if Ecam adaptation identifies any unfavourable conditions prior to image or video capture, it issues the event <xref href="GUID-AAF5EF91-7192-3ED8-B15A-64E0C167EB45.dita"><apiname>KUidECamEventCameraSettingPreCaptureWarning</apiname></xref>. <xref href="GUID-6A60F684-76BF-3001-ABB8-E6A8DB32663B.dita"><apiname>TECAMEvent2</apiname></xref> class should be used to provide the status of every PreCaptureWarning. </p> </section> <section><title>See also</title> <p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Overview</xref> for the advanced settings of Camera </p> <p><xref href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita">Advanced Settings for Focus, Drive Modes, and Bracket Modes</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-0FE4CC82-F638-5CDC-AC3F-096A05807480.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-0FE4CC82-F638-5CDC-AC3F-096A05807480"><title>rmdir</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>rmdir &lt;directory name&gt;</userinput> </p> <p>Removes a directory (or directories), if it is empty. For more information about using the <codeph>rmdir</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://zsh.dotsrc.org/Doc/Release/zsh_21.html</xref> by specifying <codeph>rmdir</codeph> as the search keyword. </p> <p> <b>Note:</b> All options of this command are supported by the Symbian version of the <codeph>rmdir</codeph> command. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308-master.png has changed
Binary file Symbian3/SDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e66374_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-100F41B4-67BE-5978-99DA-C9B6DE8760F7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-100F41B4-67BE-5978-99DA-C9B6DE8760F7" xml:lang="en"><title>Secure Software Install SIS Tools Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides detailed information about the syntax and usage of Secure Software Install SIS Tools. It also details the format of a PKG file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-106B5A31-012E-503D-A972-A745ECADC1E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-106B5A31-012E-503D-A972-A745ECADC1E7" xml:lang="en"><title>Literals
+Overview</title><shortdesc>This document provides an overview of literals.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A81FC587-4840-4CE6-A406-1950B7A89094"><title>Purpose</title> <p>Allows
+the simple creation of descriptors that contain read-only literal text.</p> </section>
+<section id="GUID-5F6E544F-40B0-4F94-9231-48A16F99B53F"><title>Architectural
+relationships</title> <p>Literal descriptors are not strictly part of the
+Descriptors API, as they are not derived from the descriptor type base class <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>.
+However, they have conversion operators so that they can be passed to any
+functions which take <codeph>const TDesC&amp;</codeph> or <codeph>const TRefByValue&lt;const
+TDesC&gt;</codeph> parameters.</p> </section>
+<section id="GUID-447AF8F6-E23F-4644-8698-A6787DD7989A"><title>Description</title> <p>The
+API has two key concepts: literal descriptor, and literal descriptor constructor
+macro. </p> <p><b>Literal
+descriptor</b> </p> <p>The literal descriptor stores literal text and provides
+operators to convert the text into a standard descriptor.</p> <p><b>Literal descriptor constructor macro</b> </p> <p>The literal descriptor
+constructor macro provides a simple way to create a literal descriptor.</p> <p>The
+constructor macro is provided by <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> for wide strings,
+and <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> for narrow strings. In Unicode builds, <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref> is
+equivalent to <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref>.</p> </section>
+<section id="GUID-D3FEE75C-1736-4228-B13B-6CC8F08EC1BA"><title>See also</title> <p><xref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita">Basic Types Overview</xref> </p> <p><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-107AE89E-901E-535F-8D1A-EE347D7822B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-107AE89E-901E-535F-8D1A-EE347D7822B1"><title>Architecture</title><shortdesc>This topic describes the architecture of the Serial Communications Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Serial Communications Server uses the Symbian OS client/server framework. Clients use <codeph>R</codeph> classes that send requests to the Serial Communications Server. The server in turn passes requests to an appropriate plug-in module that handles the particular communication protocol. These plug-in modules are known as <i>Serial Protocol Modules</i> or <i>CSYs</i>. The Serial Protocol Modules are loaded by the Serial Communications server, and are not directly accessed by client applications. A Symbian OS phone may include a number of Serial Protocol Modules as standard, such as for handling RS232 and infra-red serial communications. The Serial Protocol Module API allows new Serial Protocol Modules modules to be developed. </p> <p>The Serial Communications Server provides a publishedAll API to access the serial ports of the device. The Serial Communications Server provides functionality such as timeouts and port sharing for all Serial Protocol Modules. The Serial Protocol Modules provide the specific protocol and communicate with the serial device driver. To communicate with the serial device driver, the Serial Protocol Modules use publishedPartner APIs such as <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RBusDevComm</apiname></xref>. The <codeph>RBusDevComm</codeph> API provides a handle to a channel to the serial device driver. This device driver only implements the basic data transfer and break operations, and is not intended for use directly by client applications. The device driver is implemented using a Physical Device Driver (PDD) and a Logical Device Driver (LDD). The PDD and LDD must be loaded before a Serial Protocol Module can be used. For a device being tested, the application client may need to load the PDD and LDD. For a device that is shipped, the boot sequence normally loads the LDDs and PDDs. Figure 1 below shows the architecture and the appropriate APIs at each level. Figure 2 below shows the architecture with three Serial Protocol Modules loaded. </p> <fig id="GUID-4F316E33-41C6-5BF4-AAE1-2750C58CC1AA"><title>
+          Figure 1 - The architecture and the appropriate APIs at each level
+        </title> <image href="GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e100901_href.png" placement="inline"/></fig> <fig id="GUID-5B17051E-C4E7-5657-BB62-26072FB13D83"><title>
+          Figure 2 - The architecture with three CSYs loaded
+        </title> <image href="GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e100907_href.png" placement="inline"/></fig> <p>Each serial port has a limited availability when multiple clients attempt to use the port. The Serial Communications Server provides some functionality to mediate between competing clients. This mediation is provided by the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm::Open()</apiname></xref> and <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm::OpenWithAvailable()</apiname></xref> APIs. However, the first client to access a port has control. If a client must get access to a serial port, then that client must ensure it connects to the serial port before other clients. The reliable method of ensuring access to a serial port is for a client to connect as part of the device boot procedure. If a client must have access to a serial port, then the device manufacturer should specify which clients access ports during device boot. </p> <section><title>Historical Notes</title> <ol id="GUID-920828D6-9304-5E44-B82D-671097029B21"><li id="GUID-EE61E2E6-EABB-58D1-AE5A-E452589F5D3C"><p>The framework supplied by the Serial Communications Server for Serial Protocol Modules has a narrower set of capabilities compared to the Socket Server for protocol developers. This design decision was taken because prior to Symbian OS 8.0 the Serial Communications Server was originally expected to run for the lifetime of the device while the Socket Server was not. To save resources, for example memory, the Serial Communications Server was designed to load and unload modules as required. </p> <p>Since the introduction of RootServer in Symbian OS 8.0, the Socket Server was changed to run for the lifetime of the device. </p> </li> <li id="GUID-DB979584-6BBE-56AA-8068-FC5650D40A46"><p>In Symbian OS 9.5, the Serial Communications Server was converted into a multi-threaded server. The Serial Protocol Modules can be run in separate threads. This change did not change the behaviour of the Serial Communications Server except for three changes: </p> <ol id="GUID-0BCD64C0-448E-5ACA-9928-AC30E42A59CF"><li id="GUID-5EFB6685-D6E8-53D9-B3B6-5E1A944F4247"><p>A serial protocol module which blocks does not stop other Serial Protocol Modules from running </p> </li> <li id="GUID-71E76203-BA35-5854-AC89-E105BEBDB6B3"><p>A serial protocol module can run faster than other modules by changing the configured thread priority </p> </li> <li id="GUID-B844EEB9-B241-553B-8631-622BDA0B7A84"><p>A serial protocol module can use the Serial Communications Server API and request services of another serial protocol module </p> </li> </ol> </li> </ol> </section> </conbody><related-links><link href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita"><linktext>
+                Client/Server Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e256671_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC" xml:lang="en"><title>Using
+area registry based feedback</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To use area registry based feedback, you must usually first call <codeph>MTouchFeedback::Instance</codeph> (unless
+you get a reference to it via another class).</p>
+<p>It is recommended that you store the returned pointer as a member variable
+in those places where it is needed frequently. This is because the pointer
+is fetched from thread local storage, which can be somewhat time-consuming. </p>
+<p>To add feedback areas to the area registry, use the <codeph>SetFeedbackArea</codeph> function.
+Usually the best place to do this is <codeph>SizeChanged</codeph> function,
+because that is also the place to update feedback areas in case of a layout
+change.</p>
+<note><p>You can also use the same <codeph>SetFeedbackArea</codeph> function
+for updating the feedback area (the API implementation adds the area to the
+registry on the first time, and then just does updates on subsequent calls
+to this function). </p></note>
+<p>If you want to change the feedback area or type without giving all the
+parameters again, use the functions <codeph>ChangeFeedbackArea</codeph> and <codeph>ChangeFeedbackType</codeph> for
+the updates. </p>
+<p>Also notice that you have to be prepared in case your control is moved
+with <codeph>CCoeControl::SetPosition</codeph> function. For this you need
+to override <codeph>CCoeControl::PositionChanged</codeph>, and update the
+feedback area there the same way as in the <codeph>SizeChanged</codeph> function.
+Moreover, notice that this is necessary only for those non-window-owning controls,
+which produce area registry based feedback. </p>
+<p>Feedback areas of a specific control will be automatically disabled in
+case the control becomes dimmed by <codeph>CCoeControl::SetDimmed( ETrue )</codeph> or
+invisible by <codeph>CCoeControl::MakeVisible( EFalse )</codeph>. Feedback
+will be re-enabled again when control becomes both undimmed and visible. This
+functionality is based on using the object provider hierarchy, and thus it
+does not work in case the object provider parent has not been set for the
+control.</p>
+<p> If you need to disable a control’s feedback area temporarily (for other
+reasons than dimming or visibility), call <codeph>EnableFeedbackForControl</codeph> with
+second parameter <codeph>EFalse</codeph> to disable the feedback. You can
+then re-enable feedback by calling <codeph>EnableFeedbackForControl</codeph> with
+second parameter <codeph>ETrue</codeph>. Disabling of control’s feedback also
+affects direct feedback if it is generated with the overloaded version, which
+takes the control’s pointer as the second parameter. </p>
+<p>In some special cases it may be necessary to only disable audio- or vibra
+feedback for some controls. For this purpose there is a specific overload
+of <codeph>EnableFeedbackForControl</codeph> function.</p>
+<p>You must remove your control's feedback areas at the latest when you destroy
+the control. To do this, call the function <codeph>RemoveFeedbackForControl</codeph> .
+This also resets the feedback disabling information for the deleted control.
+If needed, you can remove individual feedback areas with the <codeph>RemoveFeedbackArea</codeph> function
+any time, but you must still call <codeph>RemoveFeedbackForControl</codeph> you
+destroy the control.</p>
+<p>The example below illustrates using tactile feedback based on the area
+registry. </p>
+<ol>
+<li id="GUID-95E49C03-19A2-4E39-BBDE-A907EAC87D3A"><p>Add the library <codeph>touchfeedback.lib</codeph> into
+your<codeph> .mmp</codeph> file, and then add the following include to your <codeph>.cpp</codeph> file: </p><codeblock xml:space="preserve">#include &lt;touchfeedback.h&gt;</codeblock></li>
+<li id="GUID-0E48DB87-9B6B-4E4A-A18D-62CBCD755949"><p>Update the area registry
+in the <codeph>SizeChanged</codeph> function. </p><note><p>You don’t need
+to check if you have already the area added to the registry or not, because
+you can use the <codeph>SetFeedbackArea</codeph> function anyway. (On the
+first time this function adds area to the registry, and on the second it updates
+the area.) </p></note><codeblock xml:space="preserve">MTouchFeedback* feedback = MTouchFeedback::Instance();
+
+if ( feedback )
+    {
+    feedback-&gt;SetFeedbackArea( 
+        this,
+        0, 
+        Rect(), 
+        ETouchFeedbackBasic,
+        ETouchEventStylusDown );
+    }
+</codeblock><p>The second parameter given to the <codeph>SetFeedbackArea</codeph> function
+is an index number, which is used to distinguish the feedback areas of same
+control from each other (in case the control has many feedback areas). You
+can choose the index numbers freely. It is recommended that you always use
+zero as the index if your control only has one feedback area.</p></li>
+</ol>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF"><title>CMI File Format</title><shortdesc>This section describes the format of the files loaded at startup by the Root Server Configurator. The files are known as Comms Module Ini (CMI) files and are used to describe Comms Provider Modules to be started by Root Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><p>The files have an extension of <filepath>.cmi</filepath>. </p> <p>Each Comms Module Ini file represents one Comms Provider Module for the Root Server Configurator to load. </p> </section> <section><title>File Location</title> <p>Comms Module Ini files can be stored in the ROM of the device by placing the file in the <filepath>\private\101f7988</filepath> folder. For example <filepath>z:\private\101f7988\etel.cmi</filepath>. </p> <p>Comms Module Ini files can also be stored on other drives by placing the file in the same <filepath>\private\101f7988</filepath> folder on the required drive. For example <filepath>c:\private\101f7988\esock_ir.cmi</filepath>. </p> <p>The Comms Configurator searches for the Comms Module Ini files in the <filepath>\private\101f7988</filepath> folders by searching from Y: to A: and then Z:. The folder <filepath>101f7988</filepath> is the secure area for the Comms Configurator process and its name derives from the UID for the process - as specified by the requirements for <xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-03558B99-2B98-579C-AD59-CF66BD98F69F">Data Caging</xref>. If the files are found in the ROM (usually Z:) they are <i>not</i> then copied to any other drive but only read in-place. Thus, a later configuration of Comms Module Ini files installed on another media/drive other than the ROM drive can be used to override the original ROM configuration. The Configurator reads these files only once during startup so any further changes will not take effect until the next time the system is started. </p> </section> <refsyn><title>Syntax</title> <p>Every Comms Module Ini file contains a <codeph>[Loader]</codeph> section, which contains the parameters that the Root Server Configurator must process. Optionally the Comms Module Ini files can also contain a <codeph>[IniData]</codeph> section which is read and sent in 8 bit form to the Comms Provider Module as part of the parameters to the main thread function. </p> <p>Note: The data in the <codeph>[IniData]</codeph> does not need to follow the Comms Module Ini file format, since everything from the section header to the end of the file is passed verbatim to the Comms Provider Module. </p> <p>The format of the <codeph>[Loader]</codeph> section of the file is: </p> <p> <i>Key</i>  <codeph>=</codeph>  <i>Value</i>  </p> <p>For example </p> <codeblock id="GUID-5437281B-25B2-5D59-859D-7F226BC0E951" xml:space="preserve">FileName=etel.dll</codeblock> <p>The keywords for the Loader section are summarised in the following table. </p> <table id="GUID-6D680272-D684-51E9-A2FA-A4A04265F4EE"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry>Keyword</entry> <entry>Requirement</entry> <entry>Default</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>Name</codeph>  </p> </entry> <entry><p>Mandatory </p> </entry> <entry/><entry><p>The value specifies the server or CPM name to use in all references to this module, e.g. when enumerating loaded modules. This must be unique. </p> </entry> </row> <row><entry><p> <codeph>Filename</codeph>  </p> </entry> <entry><p>Mandatory </p> </entry> <entry/><entry><p>The host DLL containing the server or module </p> </entry> </row> <row><entry><p> <codeph>IniData</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>When present, the value is the name of an initialisation file whose contents are loaded into a descriptor and passed to the CPM as part of the parameters to the main thread function. The usage of this key overrides the usage of a <codeph>IniData</codeph> section within this file. </p> </entry> </row> <row><entry><p> <codeph>IsSticky</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry><p>0 - Module can be unloaded </p> </entry> <entry><p>When present and with a value other than 0, specifies that clients cannot request the module to be shut down. The RootServer will return <xref href="GUID-CF080900-A9A4-391E-AC95-B93EBFB23DE3.dita"><apiname>KErrLocked</apiname></xref> on such requests. </p> </entry> </row> <row><entry><p> <codeph>ThreadFunctionOrdinal</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>If not specified, or set to 0, it is assumed that the main thread function of the CPM is the default ordinal (which is the first ordinal in the export table - ordinal 1). If set to an integer number &gt;0, the corresponding ordinal of the CPM DLL will be used as the main thread function. Anything else than 0 or a positive number is illegal. </p> </entry> </row> <row><entry><p> <codeph>Priority</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>When present, the value is an string value corresponding to the <xref href="GUID-8708AFB7-92CC-34FC-9FBB-E6B16472B99D.dita"><apiname>TThreadPriority</apiname></xref> enumerated type. The results of setting it to any other value will result in a <xref href="GUID-253F06EA-F14E-3A8E-BA4C-8E787B5F0670.dita"><apiname>KErrCorrupt</apiname></xref> error code. </p> </entry> </row> <row><entry><p> <codeph>StackSize</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>When present, the value is the integer size for the module’s main thread’s stack in bytes. </p> </entry> </row> <row><entry><p> <codeph>StartSequence</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>When present, the value is the integer start sequence. This is the legacy way of controlling the module start-up point and is translated into the ScaledStartupState. </p> </entry> </row> <row><entry><p> <codeph>HeapOption</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry><p>Load into default heap </p> </entry> <entry><p>When present, controls whether the module is loaded with a new heap, attempts to share a heap, or simple uses the Root Server's heap. Values: </p> <ol id="GUID-06FB91FD-0580-5757-B73C-EBD674A2DB86"><li id="GUID-D572E800-5A15-543D-A679-AD5142BA74B1"><p> <codeph>EDefaultHeap</codeph>, use the default shared heap for the process. </p> </li> <li id="GUID-A7687931-0794-5FCA-B2EA-60513629858E"><p> <codeph>EShareHeap</codeph>, use the same heap as module defined by the option <codeph>ShareHeapWith</codeph>. </p> </li> <li id="GUID-9134D543-B1A5-5017-8436-0B0710B02A1C"><p> <codeph>ENewHeap</codeph>, create module with a new heap. </p> </li> </ol> </entry> </row> <row><entry><p> <codeph>MinHeapSize</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>If <codeph>HeapOption</codeph> is not <codeph>ENewHeap</codeph> this section is ignored. When present, specifies the minimum size in bytes of the Comms Provider Module's heap. </p> </entry> </row> <row><entry><p> <codeph>MaxHeapSize</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>If <codeph>HeapOption</codeph> is not <codeph>ENewHeap</codeph> this section is ignored. Specifies the maximum size in bytes of the Comms Provider Module's heap. </p> </entry> </row> <row><entry><p> <codeph>ShareHeapWith</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>If <codeph>HeapOption</codeph> is not specified as <codeph>EShareHeap</codeph>, this section is ignored, otherwise it is mandatory. When present specifies which CPM to share a heap with. </p> </entry> </row> <row><entry><p> <codeph>BindingN</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>Specify a Binding between two modules </p> </entry> </row> <row><entry><p> <codeph>ScaledStartupState</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>When present the value is the integer SSA start-up state, scaled up by <codeph> KC32StartupStateScalingFactor</codeph> (0x100). </p> </entry> </row> <row><entry><p> <codeph>SystemCritical</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry><p>0</p> </entry> <entry><p>If set to 1, the Comms Provider Module runs as a System Critical thread. </p> </entry> </row> <row><entry><p> <codeph>SystemCriticalAfterInit</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry><p>0</p> </entry> <entry><p>If set to 1, the Comms Provider Module runs as a System Critical thread once the Root Server Configurator has started all non-on-demand Comms Provider Modules. </p> </entry> </row> <row><entry><p> <codeph>OnDemand</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>Only load this Comms Provider Module when a client specifically requests it. Available only to Serial Communications Server files. </p> </entry> </row> <row><entry><p> <codeph>Group</codeph>  </p> </entry> <entry><p>Optional </p> </entry> <entry/><entry><p>The value contains the name of a group in which this Comms Provider Module belongs. Available only to Serial Communications Server files. </p> </entry> </row> </tbody> </tgroup> </table> </refsyn> <example><title>CMI File Format Examples</title> <p>The following example shows a CMI file to load the Telephony Server: </p> <codeblock id="GUID-8A4DA27E-FF8C-574E-8256-E2A8A32164A4" xml:space="preserve">## Comms Configurator config file for the ETel server
+
+[Loader]
+Name=CTelServer
+FileName=etel.dll
+ThreadFunctionOrdinal=233
+IsSticky=1
+IsServer=1
+Priority=EPriorityNormal
+StackSize=16384
+ScaledStartupState=0x1085
+HeapOption=ENewHeap
+MinHeapSize=256
+MaxHeapSize=786432
+SystemCritical=1
+ControlFlags=1</codeblock> <p>The following example shows a CMI file to load the IP thread for the Socket Server: </p> <codeblock id="GUID-1C0B5CF9-2483-58F2-AC01-34D1EF505B00" xml:space="preserve"># Comms Configurator config file for the ESock IP Data worker
+
+[Loader]
+Name=ESock_DIP
+FileName=esocksvr.dll
+ThreadFunctionOrdinal=1
+IsSticky=0
+IsServer=1
+Priority=EPriorityMuchMore
+StackSize=16384
+ScaledStartupState=0x3040
+HeapOption=ENewHeap
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCritical=0
+SystemCriticalAfterInit=1
+Binding0=ESock_DIP:1,ESock_Main:0,ECustom,15,15
+# Dont check heap if shutting down with EImmediate (KCF_ModuleImmediateNoCheck)
+ControlFlags=4
+[IniData]
+Role=DealerPlayer
+WorkerId=1
+EskMask=IP.*.ESK
+PlayerRole=0x0001      # Hosting only data</codeblock> <p>The following example shows a CMI file to load the ECUART CSY into the second thread for the Serial Communications Server: </p> <codeblock id="GUID-5A63D90D-7B02-5D21-8659-092147D73EB7" xml:space="preserve"># c32_second - Comms Configurator config file forming part of the Default C32 server configuration
+
+
+[Loader]
+Name=C32_BaseBand
+FileName=c32.dll
+ThreadFunctionOrdinal=87
+IsSticky=0
+IsServer=1
+Priority=EPriorityMuchMore
+StackSize=16384
+ScaledStartupState=0x1087
+HeapOption=ENewHeap
+MinHeapSize=256
+MaxHeapSize=524288
+SystemCriticalAfterInit=1
+Group=C32SerComms
+OnDemand=1
+Binding0=C32_BaseBand:2,C32_Main:0,ECustom,42,42 
+# Dont check heap if shutting down with EImmediate (KCF_ModuleImmediateNoCheck)
+ControlFlags=4
+[IniData]
+Role=Player
+WorkerId=2
+CSYList=ECUART</codeblock> </example> </refbody><related-links><link href="GUID-282CE322-923F-58F6-804D-E125ABACB025.dita"><linktext>What is the System Critical Parameter?</linktext> </link> <link href="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita"><linktext> How
+                to Configure Multithreaded C32 Serial Comms: Tutorial</linktext> </link> </related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10A50B7C-63DB-599B-86C1-17989595CBD2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-10A50B7C-63DB-599B-86C1-17989595CBD2"><title>Equivalent Languages Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <xref href="GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930.dita"><apiname>BaflUtils</apiname></xref> provides functions to get equivalent and nearest languages for a given language. This section describes the equivalent languages in detail. </p> <section><title>Introduction</title> <p>Equivalent languages usually come from the same language family and sometimes interchangeable. For example, American English, British English and Canadian English are considered as equivalent languages. They are used in different regions with some differences in spelling, pronunciation and format. </p> </section> <section><title>Equivalent languages</title> <p>This section shows the table which contains equivalent languages: </p> <ul><li id="GUID-34A7159A-36A1-5951-A544-443364EE8723"><p>Each value listed in the table is defined in the <xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref> enumeration. </p> </li> <li id="GUID-E20306ED-1EE7-5BF3-9F0F-A25EE5031B82"><p>Each row contains two columns: a given language and its equivalent language list. </p> </li> <li id="GUID-24CC98E0-B98E-5A07-927D-0CCEEEB61A13"><p>Each equivalent language list starts with the given language itself and ends with <codeph>ELangNone</codeph>. </p> </li> <li id="GUID-2CAC81A1-3E80-5B9C-903E-0591B5FF2BDF"><p>Each equivalent language list is ordered with high priority languages in the front. </p> </li> <li id="GUID-C904FD24-650D-53AA-B358-F789A9CA9A19"><p>If a language defined in <xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref> is not shown as a give language in the table, its equivalent language list includes itself and <codeph>ELangNone</codeph>. </p> </li> </ul> <p>For information about how to get an equivalent language list and a nearest equivalent language, refer to <xref href="GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita">Getting Equivalent and Nearest Languages</xref>. </p> <table id="GUID-46A446CF-7EC9-50B9-8099-3639E80EA4EA"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Given language </entry> <entry> Equivalent language list </entry> </row> </thead> <tbody><row><entry><p>ELangCanadianEnglish </p> </entry> <entry><p>ELangCanadianEnglish, ELangAmerican, ELangEnglish, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangAustralian, ELangNewZealand, ELangInternationalEnglish, ELangSouthAfricanEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangAmerican </p> </entry> <entry><p>ELangAmerican, ELangEnglish, ELangCanadianEnglish, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangAustralian, ELangNewZealand, ELangInternationalEnglish, ELangSouthAfricanEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangAustralian </p> </entry> <entry><p>ELangAustralian, ELangEnglish, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangInternationalEnglish, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangSouthAfricanEnglish </p> </entry> <entry><p>ELangSouthAfricanEnglish, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangInternationalEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangInternationalEnglish </p> </entry> <entry><p>ELangInternationalEnglish, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_Apac </p> </entry> <entry><p>ELangEnglish_Apac, ELangEnglish, ELangAustralian, ELangAmerican, ELangInternationalEnglish, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_Taiwan </p> </entry> <entry><p>ELangEnglish_Taiwan, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangInternationalEnglish, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_HongKong </p> </entry> <entry><p>ELangEnglish_HongKong, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangInternationalEnglish, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_Prc </p> </entry> <entry><p>ELangEnglish_Prc, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangInternationalEnglish, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand,ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_Japan </p> </entry> <entry><p>ELangEnglish_Japan, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangInternationalEnglish, ELangEnglish_Thailand, ELangEnglish_India, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_Thailand </p> </entry> <entry><p>ELangEnglish_Thailand, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac, ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangInternationalEnglish, ELangEnglish_India, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangEnglish_India </p> </entry> <entry><p>ELangEnglish_India, ELangEnglish, ELangAustralian, ELangAmerican, ELangEnglish_Apac,ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangInternationalEnglish, ELangNewZealand, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangNewZealand </p> </entry> <entry><p>ELangNewZealand, ELangEnglish, ELangAmerican, ELangEnglish_Apac,ELangEnglish_Taiwan, ELangEnglish_HongKong, ELangEnglish_Prc, ELangEnglish_Japan, ELangEnglish_Thailand, ELangEnglish_India, ELangAustralian, ELangInternationalEnglish, ELangSouthAfricanEnglish, ELangCanadianEnglish, ELangNone </p> </entry> </row> <row><entry><p>ELangInternationalFrench </p> </entry> <entry><p>ELangInternationalFrench, ELangFrench, ELangSwissFrench, ELangBelgianFrench, ELangCanadianFrench, ELangNone </p> </entry> </row> <row><entry><p>ELangBelgianFrench </p> </entry> <entry><p>ELangBelgianFrench, ELangFrench, ELangInternationalFrench, ELangSwissFrench, ELangCanadianFrench, ELangNone </p> </entry> </row> <row><entry><p>ELangCanadianFrench </p> </entry> <entry><p>ELangCanadianFrench, ELangFrench, ELangInternationalFrench, ELangSwissFrench, ELangBelgianFrench, ELangNone </p> </entry> </row> <row><entry><p>ELangFrench </p> </entry> <entry><p>ELangFrench, ELangInternationalFrench, ELangSwissFrench, ELangBelgianFrench, ELangCanadianFrench, ELangNone </p> </entry> </row> <row><entry><p>ELangSwissFrench </p> </entry> <entry><p>ELangSwissFrench, ELangFrench, ELangInternationalFrench, ELangBelgianFrench, ELangCanadianFrench, ELangNone </p> </entry> </row> <row><entry><p>ELangSwissGerman </p> </entry> <entry><p>ELangSwissGerman, ELangGerman, ELangAustrian, ELangNone </p> </entry> </row> <row><entry><p>ELangAustrian </p> </entry> <entry><p>ELangAustrian, ELangGerman, ELangSwissGerman, ELangNone </p> </entry> </row> <row><entry><p>ELangGerman </p> </entry> <entry><p>ELangGerman, ELangSwissGerman, ELangAustrian, ELangNone </p> </entry> </row> <row><entry><p>ELangSerbian </p> </entry> <entry><p>ELangSerbian, ELangCroatian, ELangNone </p> </entry> </row> <row><entry><p>ELangCroatian </p> </entry> <entry><p>ELangCroatian, ELangSerbian, ELangNone </p> </entry> </row> <row><entry><p>ELangRomanian </p> </entry> <entry><p>ELangRomanian, ELangMoldavian, ELangNone </p> </entry> </row> <row><entry><p>ELangMoldavia </p> </entry> <entry><p>ELangMoldavia, ELangRomanian, ELangNone </p> </entry> </row> <row><entry><p>ELangBelgianFlemish </p> </entry> <entry><p>ELangBelgianFlemish, ELangDutch, ELangNone </p> </entry> </row> <row><entry><p>ELangDutch </p> </entry> <entry><p>ELangDutch, ELangBelgianFlemish, ELangNone </p> </entry> </row> <row><entry><p>ELangAfrikaans </p> </entry> <entry><p>ELangAfrikaans, ELangDutch, ELangNone </p> </entry> </row> <row><entry><p>ELangMalay_Apac </p> </entry> <entry><p>ELangMalay_Apac, ELangMalay, ELangNone </p> </entry> </row> <row><entry><p>ELangIndonesian_Apac </p> </entry> <entry><p>ELangIndonesian_Apac, ELangIndonesian, ELangNone </p> </entry> </row> <row><entry><p>ELangSpanish </p> </entry> <entry><p>ELangSpanish, ELangInternationalSpanish, ELangLatinAmericanSpanish, ELangNone </p> </entry> </row> <row><entry><p>ELangLatinAmericanSpanish </p> </entry> <entry><p>ELangLatinAmericanSpanish, ELangSpanish, ELangInternationalSpanish, ELangNone </p> </entry> </row> <row><entry><p>ELangInternationalSpanish </p> </entry> <entry><p>ELangInternationalSpanish, ELangSpanish, ELangLatinAmericanSpanish, ELangNone </p> </entry> </row> <row><entry><p>ELangCyprusGreek </p> </entry> <entry><p>ELangCyprusGreek, ELangGreek, ELangNone </p> </entry> </row> <row><entry><p>ELangGreek </p> </entry> <entry><p>ELangGreek, ELangCyprusGreek, ELangNone </p> </entry> </row> <row><entry><p>ELangSwissItalian </p> </entry> <entry><p>ELangSwissItalian, ELangItalian, ELangNone </p> </entry> </row> <row><entry><p>ELangItalian </p> </entry> <entry><p>ELangItalian, ELangSwissItalian, ELangNone </p> </entry> </row> <row><entry><p>ELangBrazilianPortuguese </p> </entry> <entry><p>ELangBrazilianPortuguese, ELangPortuguese, ELangNone </p> </entry> </row> <row><entry><p>ELangPortuguese </p> </entry> <entry><p>ELangPortuguese, ELangBrazilianPortuguese, ELangNone </p> </entry> </row> <row><entry><p>ELangFinlandSwedish </p> </entry> <entry><p>ELangFinlandSwedish, ELangSwedish, ELangNone </p> </entry> </row> <row><entry><p>ELangSwedish </p> </entry> <entry><p>ELangSwedish, ELangFinlandSwedish, ELangNone </p> </entry> </row> <row><entry><p>ELangCyprusTurkish </p> </entry> <entry><p>ELangCyprusTurkish, ELangTurkish, ELangNone </p> </entry> </row> <row><entry><p>ELangTurkish </p> </entry> <entry><p>ELangTurkish, ELangCyprusTurkish, ELangNone </p> </entry> </row> <row><entry><p>ELangHongKongChinese </p> </entry> <entry><p>ELangHongKongChinese, ELangTaiwanChinese, ELangPrcChinese, ELangNone </p> </entry> </row> <row><entry><p>ELangTaiwanChinese </p> </entry> <entry><p>ELangTaiwanChinese, ELangHongKongChinese, ELangPrcChinese, ELangNone </p> </entry> </row> <row><entry><p>ELangPrcChinese </p> </entry> <entry><p>ELangPrcChinese, ELangHongKongChinese, ELangTaiwanChinese, ELangNone </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita"><linktext>Getting Equivalent and Nearest Languages</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e195902_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10CF321F-3298-4527-BFF5-0351085C7C8C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-10CF321F-3298-4527-BFF5-0351085C7C8C" xml:lang="en"><title>Item
+type combinations</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A list can only be composed of items of the same type. However, it is possible
+to use some item types for different purposes. An example is a setting list
+that contains an item for accessing a sub-list of settings. In this item,
+the value box is omitted so that the item looks like a regular selection item,
+and selecting it opens another list. Similar techniques are possible with
+other double item types, too.</p>
+<fig id="GUID-4B95B534-90BC-42B9-ACAF-ED4BC30E19A2">
+<title>Setting list containing a non-setting item (My today applications)
+to access another view</title>
+<image href="GUID-322459CD-68DD-43CE-A422-853F31F6450E_d0e58430_href.png" scale="40" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10E19876-85CA-5D45-854B-1F2C5A45A333.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-10E19876-85CA-5D45-854B-1F2C5A45A333"><title>Overlay</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial introduces you to the overlay functionality of the Ecam component. </p> <section><title>Purpose</title> <p>This document describes the various APIs used with overlay. </p> <p><b>Introduction</b> </p> <p>Overlay is an image which is superimposed on top of the main image with a required transparency. The main image can be a single image during image capture mode (still image/ burst/ bracket), video image frame, snapshot image, or image frames for viewfinder (direct or client-based). </p> <p>The client can use it to overlay an image onto the viewfinder, snapshots, still images and video. A client can create multiple overlays, where each overlay can be in a different format. The properties of an overlay can be changed after it has been created. </p> </section> <section><title>See also</title> <p><xref href="GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E.dita">Overview</xref> of the overlay functionality </p> <p><xref href="GUID-8B7ABDB0-B016-5106-824E-D823F1D2959F.dita">Working with Overlay</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10F1D390-2CB6-584B-B760-E6A6E1D8FDDA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-10F1D390-2CB6-584B-B760-E6A6E1D8FDDA"><title>C++ pre-processor statements</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following pre-processor statements are supported by the resource compiler:</p> <ul><li id="GUID-B6A111FB-FFA2-531C-91EE-35DB9AF19A9A"><p><codeph>#define</codeph> </p> </li> <li id="GUID-C0EF333E-FE70-5EF3-BE14-04A89AF99C85"><p><codeph>#undef</codeph> </p> </li> <li id="GUID-7BAC9B37-F0A3-5578-A9BC-6DEB4A2D2E94"><p><codeph>#line</codeph> </p> </li> <li id="GUID-99F8E077-BB0B-56BD-AFFA-337E2B5956FF"><p><codeph>#include</codeph> </p> </li> <li id="GUID-A47F1114-2DAB-5D15-AE12-4505D527D8E3"><p><codeph>#ifdef</codeph> </p> </li> <li id="GUID-FDD096E0-E286-5CF0-89A3-F9F82E2FE506"><p><codeph>#ifndef</codeph> </p> </li> <li id="GUID-D8A7A176-582C-5A50-B7D7-FE6CD744F709"><p><codeph>#if</codeph> </p> </li> <li id="GUID-749EED33-0711-5E12-B3B3-C4F48A249775"><p><codeph>#else</codeph> </p> </li> <li id="GUID-A03EA147-F9F4-575A-BE46-79BDA3C4BB4A"><p><codeph>#endif</codeph> </p> </li> </ul> <p>The following sections give more detail on the use of the <codeph>#ifdef</codeph> and <codeph>#include</codeph> statements.</p> <section id="GUID-934725A2-90C8-522F-9E25-5E2993049976"><title>Conditional compilation in resource files</title> <p>The resource compiler supports conditional compilation such as</p> <codeblock id="GUID-24DB03FA-A503-5E14-8A78-3A011F4CE634" xml:space="preserve">#ifdef SOMETHING 
+// do something 
+#else 
+// do something else 
+#endif</codeblock> <p>or</p> <codeblock id="GUID-8CE01535-672E-5FBE-BBD9-2DB6FCE44959" xml:space="preserve">#ifndef WHATEVER 
+// do something 
+#endif</codeblock> </section> <section><title>Include files within a source file</title> <p>You can include files within the source file by using a <codeph>#include</codeph> directive, for example:</p> <codeblock id="GUID-E96237E1-93C5-51DF-92E1-E7CC86E9DA42" xml:space="preserve">#include &lt;eikdef.rh&gt;</codeblock> <p>or </p> <codeblock id="GUID-C2587C86-8839-593E-B33A-AC8368DD6B61" xml:space="preserve">#include "eikdef.hrh"</codeblock> <p>The searching algorithm used by the resource compiler depends on whether the item to be included is enclosed in double-quotes or angled brackets.</p> <p>If the filename is enclosed in double-quotes, the resource compiler searches for that file through the following directories in the following order:</p> <ul><li id="GUID-FCCC6197-6ECA-5CAD-9620-071D9A2438EE"><p>the <i>current</i> directory</p> </li> <li id="GUID-06833D1D-FB68-56FB-85FA-CCD1FA149C9C"><p>the relative directory <filepath>..\inc</filepath> </p> </li> <li id="GUID-E6A7515D-B1DE-5279-808A-AD1D9F8D3459"><p>the absolute directory <varname>epocroot</varname> <filepath>\epoc32\include</filepath> </p> </li> </ul> <p>If the filename is enclosed in angled brackets, the resource compiler searches for that file through the following directories in the following order:</p> <ul><li id="GUID-A9F5D3C9-C143-5A94-B31D-58AB83485F72"><p>the relative directory <filepath>..\inc</filepath> </p> </li> <li id="GUID-D33154C8-E215-588C-B186-C3FF2C00ABE9"><p>the absolute directory <varname>epocroot</varname> <filepath>\epoc32\include</filepath> </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-10F30EB2-1431-5219-B1F8-95895FD5A448.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-10F30EB2-1431-5219-B1F8-95895FD5A448"><title>export</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>export [ name[=value] ... ] </userinput> </p> <p>The specified names are marked for automatic export to the environment of subsequently executed commands. Equivalent to <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref> <codeph> -gx</codeph>. If a parameter specified does not already exist, it is created in the global scope. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-110A0151-5719-51BC-8506-C18BE57FB400.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-110A0151-5719-51BC-8506-C18BE57FB400" xml:lang="en"><title>Plug-in Framework Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The plug-in framework has three distinct users : framework or application designers, plug-in writers and plug-in users. Each type of user requires to understand and implement plug-in specifications differently.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E" xml:lang="en"><title>Using Dynamic Buffers</title><shortdesc>Topics related to the dynamic buffers and how to use them.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-114C52FE-C8C5-4418-9C73-CEBB228C7542.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-114C52FE-C8C5-4418-9C73-CEBB228C7542" xml:lang="en"><title>List
+types</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Based on the functionality, the following list categories can be identified:</p>
+<ul>
+<li><p><xref href="GUID-6B50C0B9-C3CB-4524-909D-7FD096A3F894.dita">Menu list</xref> </p></li>
+<li><p><xref href="GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita">Selection list</xref></p></li>
+<li><p><xref href="GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita">Markable list</xref> </p></li>
+<li><p><xref href="GUID-0E695106-4139-4335-A11F-BD04418DD583.dita">Multi-selection
+list</xref></p></li>
+<li><p><xref href="GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita">Setting list</xref> </p></li>
+<li><p><xref href="GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita">Hierarchical
+list</xref> </p></li>
+<li><p><xref href="GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita">Hierarchical
+colum list</xref></p></li>
+<li><p><xref href="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita">Forms</xref></p></li>
+</ul>
+<p>Lists belonging to one category may have different graphical appearances.
+See <xref href="GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita">List layouts</xref> for
+information about different looking list items.</p>
+<p>On the whole, list items and command should not be mixed, but in cases
+where some command in a list would significantly boost efficiency and user
+experience, it is perfectly acceptable to add one command onto the list. It
+is important that there is no more than one command per list, and that the
+command is placed as the first item on that list.</p>
+<section><title>Using different list
+types in C++ applications</title><p>The APIs to use for lists are the Lists
+API (for menu, selection, markable, and multi-selection lists) and
+the Hierarchical
+lists API (for hierarchical and hierarchical column lists). For implementation
+information, see Using
+the Lists API and Using
+the Hierarchical lists API.</p><p>For forms, the API is the Form API. For implementation information, see Using
+the Form API</p><p>For list types other than the hierarchical lists,
+the flags used to create the different list types in resource files, are described
+in Listbox
+types in listbox resource definition.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e313840_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-116AB921-B063-5CC2-962F-A74562F20EAE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-116AB921-B063-5CC2-962F-A74562F20EAE"><title>Crypto (crypto.dll)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Crypto (<filepath>crypto.dll</filepath>) is provided for general use in certificate management: any certificate specification will use some or all of its functionality. </p> <p>Elements of a certificate which are common across different certificate formats are implemented in this DLL as a set of abstract base classes. Thus DLLs implementing a particular certificate specification such as X.509 or WTLS (i.e. <filepath>X509.dll</filepath>, <filepath>WTLSCert.dll</filepath>) are expected to link to this DLL and derive its own specific classes from these, as well as adding any classes which only exist in that specification (X.509 extensions for example). </p> <p>Classes defined here are agnostic about the particular encoding scheme used for objects so do not include any constructors for initialisation from binary data. So derived classes for a given specification will add constructors to initialise the objects from encoded binary data. </p> <p>This DLL also helps localise the interface between certificate management and the cryptographic algorithms supporting it. It is called <filepath>crypto.dll</filepath> rather than <filepath>cert.dll</filepath> because its role expands beyond certificates. </p> <p>Of the public classes defined, the following are intended for direct use by client code: </p> <ul><li id="GUID-8AFFCCD5-2135-5CEC-B4D8-EB50C5E35944"><p> <codeph>TAlgorithmId</codeph> — an enumeration of the asymmetric and digest algorithms supported. </p> </li> <li id="GUID-3FAF1E36-3060-541E-AFDA-834F68935B20"><p> <codeph>CValidityPeriod</codeph> — consists of a start time and an end time, with accessors for each. </p> </li> <li id="GUID-304C96BD-CE42-5288-A9E6-A460CAC657FB"><p> <codeph>CAlgorithmIdentifier</codeph> — includes the <codeph>TAlgorithmId</codeph> for the algorithm and the parameters in their encoded form. Also implements an equality operator. </p> </li> <li id="GUID-EE602B91-C887-5CFD-B4A9-11534E4630BD"><p> <codeph>CSigningAlgorithmIdentifier</codeph> — consists of two <codeph>CAlgorithmIdentifier</codeph> classes, one for the digest algorithm and one for the asymmetric algorithm. Also implements an equality operator. </p> </li> <li id="GUID-62E1D06D-937B-5E18-A79B-0274E0B7CEBA"><p> <codeph>CSubjectPublicKeyInfo</codeph> — consists of an algorithm identifier and the encoded key. </p> </li> <li id="GUID-7453FBB5-C4ED-5E50-AC18-6B721C092C97"><p> <codeph>CSignedObject</codeph> — this class implements a function to verify its signature given an encoded key. It also implements an <codeph>ExternalizeL</codeph> function which simply streams out the encoding of the entire object which enables the fingerprint (and the signed data) to be regenerated on restoring. Accessors are provided to return pointer descriptors to the encoding of the signed data, the encoding of the signature, the fingerprint and the signing algorithm used. The fingerprint returned is the MD5 hash of the encoding of the entire object. </p> </li> <li id="GUID-B7F751C6-3A06-5E64-AB9E-D0E01B0E61AB"><p> <codeph>CCertificate</codeph> — this is a subclass of <codeph>CSignedObject</codeph>. It adds a serial number, validity period and subject public key along with corresponding accessors. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1171C47F-D7F3-5A49-B191-DB6CB7C84DC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1171C47F-D7F3-5A49-B191-DB6CB7C84DC8" xml:lang="en"><title>Where
+to put trap harnesses?</title><shortdesc>Describes the criteria that should be taken into account when deciding
+where to put a trap harness.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Trap harnesses can be nested. If a function leaves, control goes to the
+most recent trap harness in the call stack. This allows independent sub-modules
+to do their own exception handling. Effective trap programming requires that
+the unit of recovery be correctly identified. </p>
+<p>The most basic option is to rely on the top-level trap harness provided
+as part of the application framework for all GUI programs. If a leave occurs,
+and it is not handled by any explicitly coded harness, the framework displays
+an error message corresponding to the leave code.</p>
+<p>For some applications, the unit of recovery may be the processing of any
+user command. In a particular application, the unit of recovery may be associated
+with part of the processing of a particular command — a much finer-grain
+approach.</p>
+<p>Coding a coarse-grain unit of recovery has the advantage of only one trap
+harness and recovery code, but the disadvantage that recovery code may be
+general and complex, and the danger that a small error leads to catastrophic
+results for a user (e.g. if not enough memory to apply bold formatting resulted
+in termination of the word processor with loss of data!).</p>
+<p>Coding too fine-grain units of recovery results in many trap harnesses,
+lots of recovery code which may require individual attention in each case,
+and potentially significantly increased code size.</p>
+<p>The correct choice is application-specific. For large applications, there
+may be a single course-grain unit of recovery, with other harnesses in particular
+places. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-118C8F84-2BB3-5F60-B6AB-22F0F1B3349E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-118C8F84-2BB3-5F60-B6AB-22F0F1B3349E"><title>Types of rowset</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Database application programs use a <keyword>rowset</keyword>, which maintains a <keyword>cursor</keyword> on a current row within that set. The rowset provides an abstract interface, two types are provided:</p> <ul><li id="GUID-87C3A645-D3F9-5D16-8B4C-CA3FE80AA7D3"><p>a table is an entire table in a database. Row ordering is either undefined, or by one of the table’s indexes. Fast key-based retrieval using an index can be performed on a table. The table is encapsulated in the derived class <codeph>RDbTable</codeph>.</p> </li> <li id="GUID-BC628D8C-BCC4-50AF-B1E3-93428CDB8506"><p>an SQL view is a rowset generated by an <keyword>SQL</keyword> query on a database, currently restricted to a single table. Cursor navigation is implemented by evaluating the view as necessary. Since evaluation may be expensive, a pre-evaluation window may be specified, allowing the rowset to be evaluated once and navigated quickly. The desired window is described by the <codeph>TDbWindow</codeph> class. Rowsets can also be evaluated in steps. The SQL view is encapsulated in the derived class <codeph>RDbView</codeph>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-11B69814-5B3E-42AE-844E-998A7A08E654" xml:lang="en"><title>Permanent
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section><p>Permanent notes remain
+on the screen for an indefinite time. The user cannot dismiss them. For example, <uicontrol>Insert
+SIM card</uicontrol>. </p></section>
+<section>       <title>Using permanent
+notes in C++ applications</title>      <p>The API to use for the permanent
+note component is the Notes
+API. To use a permanent note with the default icon, text, sound, and
+duration, create an instance of the note class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStaticNoteDialog.html" format="application/java-archive"><codeph>CAknStaticNoteDialog</codeph></xref>.</p><p>You can change the icon or text
+displayed in the note, use a different kind of sound, or change the note duration
+using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p>     </section>
+
+</conbody><related-links>
+<link href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita"><linktext>Confirmation
+note</linktext></link>
+<link href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita"><linktext>Information
+note</linktext></link>
+<link href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita"><linktext>Warning note</linktext>
+</link>
+<link href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita"><linktext>Error note</linktext>
+</link>
+<link href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita"><linktext>Wait note</linktext>
+</link>
+<link href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita"><linktext>Progress
+note</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783" xml:lang="en"><title>ENUM
+statement</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;enum-statement&gt;
+enum-statement ::= 
+enum [&lt;enum-label&gt; ] { &lt;enum-list&gt; };</codeblock>
+<p>Use an <codeph>enum</codeph> (or an <codeph>ENUM</codeph>) statement to
+define a set of integer values. The values are associated with symbols defined
+in the <codeph>enum-list</codeph>; the syntax and the semantics are compatible
+with those of C++ enumerations. Note that the final semi-colon in an <codeph>enum</codeph> may
+be omitted; however, to retain compatibility with the C++ compiler, it is
+advisable to retain it.</p>
+<p>Each member of the <codeph>enum-list</codeph> is followed by a comma except
+for the last one. The syntax of a member is defined as:</p>
+<codeblock xml:space="preserve">&lt;enum-member&gt;
+enum-member ::= 
+&lt;member-name&gt; [ = &lt;initialiser&gt; ] </codeblock>
+<p>The defined enumerator symbols can be used in both C++ code and resource
+scripts and are commonly defined in files which have the conventional file
+extension <filepath>hrh</filepath>. The <filepath>.hrh</filepath> files are
+included in both C++ files and resource source files.</p>
+<p>In general, each enumerator can be assigned a specific value. If no value
+is explicitly assigned, the value generated by the resource compiler is the
+value of the previous enumerator plus one. If the first enumerator is not
+assigned an explicit value, it defaults to <codeph>0</codeph>.</p>
+<p>The assigned value can be coded in either hexadecimal or plain decimal
+notation.</p>
+<example><p>The <codeph>enum</codeph> definition:</p><codeblock id="GUID-838045EF-9C35-5864-B327-D486D8A87E3D" xml:space="preserve">enum
+ {
+ EExampleCmdIdFirst=0x100,
+ EExampleCmdIdSecond,
+ EExampleCmdIdThird,
+ EExampleCmdIdFourth
+ };</codeblock><p>defines the enumerators <codeph>EExampleCmdIdFirst</codeph>, <codeph>EExampleCmdIdSecond</codeph> etc.
+and assigns values to them. <codeph>EExampleCmdIdFirst</codeph> is assigned
+the value <codeph>0x100</codeph> (decimal 256), <codeph>EExampleCmdIdSecond</codeph> is
+assigned the value <codeph>0x101</codeph> (decimal 257) etc.</p><codeblock id="GUID-47858CC6-812E-5668-A82E-612C9708D2E2" xml:space="preserve">enum {
+ testvalue1=10,
+ testvalue2,
+ testvalue3=20,
+ testvalue4
+ }; 
+
+STRUCT TEST1
+ {
+ BYTE b1;
+ BYTE b2;
+ BYTE b3;
+ BYTE b4;
+ } 
+
+RESOURCE TEST1 test
+ {
+ b1=testvalue1;
+ b2=testvalue2;
+ b3=testvalue3;
+ b4=testvalue4;
+ }</codeblock><p>In this example the resource generated is: <codeph>0x0A 0x0B
+0x14 0x15</codeph> </p></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E" xml:lang="en"><title>Scroll
+pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>With any list, grid or other component that can be scrolled vertically,
+a scrollbar appears on the right-hand side of the component. The scrollbar
+is displayed also on pop-up components.</p>
+<fig id="GUID-BD8A5FCD-048E-41AF-BA17-A38B689141D9">
+<title>Scroll pane with scrollbar</title>
+<image href="GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e53932_href.png" scale="33" placement="inline"></image>
+</fig>
+<ul>
+<li><p>The placement of the scroll handle on the scrollbar reflects the position
+of the focus on the scrolling content.</p></li>
+<li><p>The size of the scroll handle reflects the number of displayed items
+relative to the total number of items on the scrolled component.</p></li>
+<li><p>The scrollbar is displayed even when all items on the component can
+be displayed in the same view without scrolling. When this is the case, the
+scroll handle is displayed at the maximum size. The only exception is the
+Application Shell, where scrollbar is not displayed if all items fit the same
+view.</p></li>
+</ul>
+<section id="GUID-054FE843-7681-40D9-ACA7-47122BC3107B"><title>Scrollbars
+in Touch UI</title><p>In touch devices based on the Symbian platform,
+scrollbars (vertical and horizontal) have a touch-enabled scroll box. The
+hardware keys (Arrow keys) can also be used for scrolling when the scrollbars
+are visible. The scrolling movement on the screen is smooth.</p><p>In order
+for the scrollbar to be more usable with touch, the actual scrollbar area
+is wider than the visible scrollbar. When the user scrolls, the scrollbar
+has a related effect to indicate the scrolling. Because the actual area of
+scrollbar is wider, the items appearing on that area in scrollable list, grids,
+viewers etc. cannot be touch-enabled, e.g. list icons in column D cannot be
+tapped.</p></section>
+<section id="GUID-87093F25-CFC3-4D71-A5EF-006C6425C65D"><title>Using
+scrollbars in C++ applications</title><p>The API to use for creating the scrollbar
+component is the Scroller
+API.</p><p>To use a scrollbar in your application, first create a scrollbar
+frame using the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikScrollBarFrame.html" format="application/java-archive"><codeph>CEikScrollbarFrame</codeph></xref>. All scrollbar operations are executed via this scrollbar frame.
+These operations include creating and destroying the scrollbar, setting its
+visibility, and adjusting the scrollbar's model. The scrollbar itself can
+be created using the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikScrollBarFrame.html#81980f8db36253fc89fb7ebbfa316b4d" format="application/java-archive"><codeph>CreateDoubleSpanScrollBarsL()</codeph></xref> in the class <codeph>CEikScrollBarFrame</codeph>.
+The class for the scrollbar is <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDoubleSpanScrollBar.html" format="application/java-archive"><codeph>CAknDoubleSpanScrollBar</codeph></xref>. For implementation information, see Creating
+a scrollbar.</p><p>Scrollbar models encapsulate the range of integers
+which a scrollbar can represent, from zero to n, and the current position
+of the scrollbar thumb within that range. To set the scrollbar model, use
+the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classTAknDoubleSpanScrollBarModel.html" format="application/java-archive"><codeph>TAknDoubleSpanScrollbarModel</codeph></xref>. For information on updating the scrollbar's position and size using
+the scrollbar model, see Updating
+ArrowHead scrollbar attributes and Updating
+DoubleSpan scrollbar attributes.</p><p>You can control the scrollbar
+visibility using the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikScrollBarFrame.html#63d2cba6f1261f9c56dd7a98499fceda" format="application/java-archive"><codeph>SetScrollbarVisibilityL()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikScrollBarFrame.html" format="application/java-archive"><codeph>CEikScrollbarFrame</codeph></xref>.</p><p>To observed scrollbar events,
+use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMEikScrollBarObserver.html" format="application/java-archive"><codeph>MEikScrollbarObserver</codeph></xref>. For implementation information, see Observing
+scrollbar events.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01-master.png has changed
Binary file Symbian3/SDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e92600_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-11E05C4A-CC94-5A0E-9D07-1863FB03747F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-11E05C4A-CC94-5A0E-9D07-1863FB03747F" xml:lang="en"><title>Bluetooth Manager</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Bluetooth Manager provides a way to store and access information about devices on the registry. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e9926_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-11EEFB3D-0414-5BEB-9D78-56A4B9154008.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-11EEFB3D-0414-5BEB-9D78-56A4B9154008" xml:lang="en"><title>Using Descriptors</title><shortdesc>This is a list of documents that describe how to use descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-11FE772A-E662-4B88-B871-97A40A40FBAB" xml:lang="en"><title>Handling
+EEikCmdExit</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If your Symbian GUI-based application should close, for example, in
+out of memory situations, you must handle the <parmname>EEikCmdExit</parmname> command
+ID in your override of <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aHandleCommandL%28%29" format="application/java-archive"><parmname>CEikAppUi::HandleCommandL</parmname></xref>. The UI architecture of your application determines where you
+override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aHandleCommandL%28%29" format="application/java-archive"><parmname>CEikAppUi::HandleCommandL</parmname></xref>. A typical implementation
+is as follows:</p>
+<codeblock id="GUID-80E7C5FF-A507-42FA-ACF0-808539FFF6A5" xml:space="preserve">void CMyCommandHandlingAppUi::HandleCommandL(TInt aCommand)
+    {
+    	
+    switch(aCommand)
+        {
+        case EEikCmdExit:
+        case EAknSoftkeyExit:
+            Exit();
+            break;
+       
+        default:
+            break;
+        }
+    }
+</codeblock>
+<p>where <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aExit%28%29" format="application/java-archive"><parmname>CEikAppUI::Exit()</parmname></xref> closes the application. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi" format="application/java-archive"><parmname>CEikAppUI</parmname></xref> also provides <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aSaveAnyChangesL%28%29" format="application/java-archive"><parmname>SaveAnyChangesL</parmname></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aSaveL%28%29" format="application/java-archive"><parmname>SaveL</parmname></xref> methods
+in case you need to save the application document.</p>
+<note>
+<p>In Symbian view architecture applications, the <parmname>EEikCmdExit</parmname> command
+must be only handled once: either in the UI controller or in a view. Since
+the exit command is an application wide command, it is recommended that it
+be handled in the UI controller implementation.</p>
+</note>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aExit%28%29" format="application/java-archive"><parmname>CEikAppUI::Exit()</parmname></xref> exits the application.
+If the application is embedded, control returns to the parent, which should
+also exit. The application framework sends an <parmname>EEikCmdExit</parmname> command
+ID to each application in this chain to support this behavior.</p>
+<note>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aExit%28%29" format="application/java-archive"><parmname>CEikAppUI::Exit()</parmname></xref> is guaranteed not to
+return. This means that you should not trap this method. Among other things,
+do not call another method when you handle the command ID that triggers an
+exit.</p>
+</note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-120163D6-2E49-5D91-A746-2C8C4C944461.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-120163D6-2E49-5D91-A746-2C8C4C944461"><title>DBMS incremental operations overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Allows long-running database operations to be performed in steps, so that a user program can remain responsive to other events.</p> </section> <section><title>Description</title> <p>The API has two key concepts: database incremental operations, and DML statement incremental execution. </p> <p><b>Database incremental operations</b> </p> <p>This allows long-running database operations—table alteration and discard, database compaction and recovery, index creation and discard, DDL (SQL schema update) statement execution—to be performed in incremental steps.</p> <p>While an incremental operation is in progress, the database cannot be used for any other operations such as opening tables or preparing views. Beginning an incremental operation also requires that no rowsets are open on the database, and that no data manipulation transactions are pending a commit. </p> <p>If no explicit transaction has been started by the database, an automatic transaction is begun when any incremental operation is started and is committed when complete, or rolled back if the operation fails or is abandoned prior to completion.</p> <p>Database incremental operations are provided by <xref href="GUID-B07C2FDC-357E-31F8-B67E-0A252EEF2187.dita"><apiname>RDbIncremental</apiname></xref>.</p> <p><b>DML statement incremental execution</b> </p> <p>A class is provided, similar to <xref href="GUID-B07C2FDC-357E-31F8-B67E-0A252EEF2187.dita"><apiname>RDbIncremental</apiname></xref>, for performing DML (SQL data update) statements incrementally. This is <xref href="GUID-B9D43EA2-F1F1-3830-A16A-F73F06C2BB3D.dita"><apiname>RDbUpdate</apiname></xref>.</p> </section> <section><title>See also</title> <p><xref href="GUID-EACA05F0-7291-535C-82BC-16DF3AAA417E.dita">Interface to DBMS databases overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1261F3A3-6F27-5A85-81FF-A6858F03F711.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1261F3A3-6F27-5A85-81FF-A6858F03F711"><title>Single and Multiple Threads</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the threads used in C programs. </p> <section><title>Threads</title> <p>The POSIX interface is designed for a single thread of execution within a process. Many aspects of this interface do not apply to a typical Symbian program in which multiple threads of execution share the same address space. For information about threads and processes, see <xref href="GUID-BBBFC0AF-2E35-5F5C-A3A5-57C4196A6CDA.dita">Threads and processes</xref>. </p> <p>STDLIB allows for multiple threads, but each thread owns its own instance of the <codeph>_reent</codeph> structure which contains private data such as the thread's <codeph>errno</codeph> variable. Each thread's STDIO <codeph>FILE</codeph> structures are completely separate from other threads', even if those structures eventually share the same underlying file descriptor. A consequence of this is that different threads will buffer their output to <codeph>stdout</codeph> separately, even though the eventual output will be combined together when the STDIO layer flushes the buffers out to the corresponding file descriptor. </p> <p>It is unclear how some POSIX functions should be used in a multiple thread environment. An example is the <codeph>exit()</codeph> function. Although each thread should have separate <codeph>atexit()</codeph> processing, which should include closing all open STDIO files, it is unclear whether closing the STDIO file should also close the underlying descriptor. STDLIB's current implementation is to close the files, as would be expected to happen in a normal POSIX process. However, this implementation may be changed. Note that <codeph>exit()</codeph> does not attempt to free memory which was obtained by <codeph>malloc()</codeph>. </p> <p>The user of STDLIB can take control over thread termination by implementing <codeph>exit()</codeph>, <codeph>_exit()</codeph>, <codeph>abort()</codeph> and <codeph>_assert()</codeph> in their own program, so that all of the user's own code which calls these functions will invoke the user's routines instead of the STDLIB versions. A helper function, <codeph>_atexit_processing_r()</codeph>, can be called from the user's version of <codeph>exit()</codeph> to do the normal <codeph>atexit</codeph> processing, if desired. See <codeph>stdlib_r.h</codeph> for details. </p> </section> <section><title>Single-threaded programs</title> <p>Simple C programs may not need to support file descriptors shared between threads, or the execution of sub-processes. Such programs may use the default implementation of STDLIB, in which the library code opens files, sockets etc. in the context of the calling thread, and provides a per-thread table of open file descriptors. </p> <p>Multiple threads may still be used, but each thread's resources are private and cannot be shared with other threads. For example, a <codeph>setenv()</codeph> call in one thread will not be seen by a <codeph>getenv()</codeph> call in another and each thread will have a separate console window (created on demand when the console is first read from or written to). </p> </section> <section><title>Multi-threaded programs; the CPosixServer</title> <p>More complex programs may need to use process-wide resources. This is often true of programs which assume the existence of support for multiple threads within a POSIX process. To meet this requirement, STDLIB can operate in a mode in which all shareable resources are owned by a single <codeph>CPosixServer</codeph> thread. In this mode, library routines such as <codeph>open()</codeph>, <codeph>read()</codeph> and <codeph>write()</codeph> operate by passing an appropriate request to the <codeph>CPosixServer</codeph>. </p> <p>The program's mode of operation is determined when it first tries to use STDLIB's services. If a <codeph>CPosixServer</codeph> is running for the Symbian platform process, the thread will use it; otherwise the program will operate in the single-threaded mode. </p> <p>The <codeph>CPosixServer</codeph> is a Symbian platform active object, and can be started either in the context of an existing active scheduler, or by spawning a separate thread to run an active scheduler. The functions for doing this have a C++ interface, defined in <codeph>estlib.h</codeph>. For more information on active objects in Symbian platform, see <xref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita">active objects</xref>. </p> <p>Communication between <codeph>CPosixServer</codeph> s is used to establish the POSIX process hierarchy and to communicate resources from parent to child. Programs which require multiple processes must use the multi-threaded mode of operation. </p> </section> </conbody><related-links><link href="GUID-BBBFC0AF-2E35-5F5C-A3A5-57C4196A6CDA.dita"><linktext>Threads and
+                processes</linktext> </link> <link href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita"><linktext>Active
+                objects</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B"><title>SQL Statement Tips</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This guide provides tips for using certain SQL statements. </p> <section><title>Introduction</title> <p>There are several techniques for improviding use of certain SQL statements. SQLite includes some special case optimizations for the <codeph>MIN()</codeph> and <codeph>MAX()</codeph> aggregate functions. Where possible, you should use UNION ALL instead of UNION. And you should avoid using OFFSET for scrolling cursors. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-4DFE36ED-1FB2-5EFF-A562-CA4C8A3B8099"><title>The MIN and MAX Optimization</title> <p>SQLite includes some special case optimizations for the <codeph>MIN()</codeph> and <codeph>MAX()</codeph> aggregate functions. The normal way of evaluating a <codeph>MIN()</codeph> or <codeph>MAX()</codeph> aggregate function is to run the entire query, examine every row of the result set, and pick the largest or smallest value. Hence, the following two queries take roughly the same amount of work: </p> <codeblock id="GUID-6CA7EED2-1AE3-5924-80D1-FB4B2CDBCA11" xml:space="preserve">
+SELECT x FROM demo326 WHERE y&gt;11.5;
+SELECT min(x) FROM demo326 WHERE y&gt;11.5;
+</codeblock> <p>The only difference in the above two SELECT statements is that the first returns every possible value for “x” whereas the second only returns the smallest. Both require about the same amount of time to run. </p> <p>But there are some special cases where <codeph>MIN()</codeph> and <codeph>MAX()</codeph> are very fast. If the result set of a SELECT consists of only the <codeph>MIN()</codeph> function or the <codeph>MAX()</codeph> function and the argument to that function is an indexed column or the RowID and there is no WHERE or HAVING or GROUP BY clause then the query runs in logarithmic time. So these two queries are very quick: </p> <codeblock id="GUID-D5ECCFCC-E829-5F92-9FC4-2C54D9BEB925" xml:space="preserve">
+SELECT min(x) FROM demo326;
+SELECT max(x) FROm demo326;
+</codeblock> <p>Note that the result set must contain a single column. The following query is much slower: </p> <codeblock id="GUID-A951F3EF-E950-52E1-847B-F26F4E1ABDEE" xml:space="preserve">
+SELECT min(x), max(x) FROM demo326;
+</codeblock> <p>If you need the results from this last query quickly, you can rewrite it as follows: </p> <codeblock id="GUID-CC4414E4-A98A-5AF2-82C2-3525939CD26E" xml:space="preserve">
+SELECT (SELECT min(x) FROM demo326), (SELECT max(x) FROM dem326);
+</codeblock> <p>In other words, break the query up into two subqueries both of which can be optimized using the MIN/MAX optimization. </p> <p>Note also that the result set must not be an expression on <codeph>MIN()</codeph> or <codeph>MAX()</codeph> - it needs to be a plain <codeph>MIN()</codeph> or <codeph>MAX()</codeph> and nothing else. So the following query is slower: </p> <codeblock id="GUID-9D95BA42-9C6F-5BB3-992F-291126FC7B4B" xml:space="preserve">
+SELECT max(x)+1 FROM demo326;
+</codeblock> <p>As before, achieve the same result quickly using a subquery: </p> <codeblock id="GUID-8D5BF677-70E0-5475-BE09-D168C106509A" xml:space="preserve">
+SELECT (SELECT max(x) FROM demo326)+1;
+</codeblock> </section> <section id="GUID-1D3D05CA-4F9F-5AAF-B6D1-D8B6F250BD95"><title>Use UNION ALL in Place of UNION where Possible</title> <p>SQLite, in accordance with the SQL standard, allows two or more SELECT statements to be combined using operators UNION, UNION ALL, INTERSECT, or EXCEPT. The first two, UNION and UNION ALL, are the subject of this section. </p> <p>The UNION and UNION ALL operators do very nearly the same thing, but with one important difference. Both operators return the union of all rows from their left and right queries. The difference is that the UNION operator removes duplicates whereas the UNION ALL operator does not. To look it another way, the following two queries are equivalent: </p> <codeblock id="GUID-3C67BF6E-F3DD-5F3D-B64D-F158A5E3D3F1" xml:space="preserve">
+SELECT * FROM tableA UNION SELECT * FROM tableB;
+SELECT DISTINCT * FROM (SELECT * FROM tableA UNION ALL SELECT * FROM tableB);
+</codeblock> <p>When you look at it this way, you should clearly see that UNION is just UNION ALL with some extra work to compute the DISTINCT operation. You should also see that UNION ALL is noticeably faster than UNION and uses less temporary storage space too. </p> <p>If you need uniqueness of output values then by all means use UNION. It is there for you and it works. But if you know in advance that your results will be unique or if you do not care, UNION ALL will almost always run faster. </p> </section> <section id="GUID-212C03E7-CC54-5C48-AB9D-B25DC0978513"><title>Avoid Using OFFSET for Scrolling Cursors</title> <p>A common design pattern is to show the results of a large query result in a scrolling window. The query result might contain hundreds or thousands of rows, but only a handful are shown to the user at one time. The user clicks the “Up” or “Down” buttons or drags a scrollbar to move up and down the list. </p> <p>A common example of this is in media players where a user has requested to see all “albums” of a particular “genre”. There might be 200 such albums stored on the device, but the display window is only large enough to show 5 at a time. So the first 5 albums are displayed initially. When the user clicks the Down button the display scrolls down to the next 5 albums. When the user presses the Up button the display scrolls back up to the previous 5 albums. </p> <p>The naïve approach for implementing this behaviour is to keep the index of the topmost album currently displayed. When the user presses Up or Down this index is decremented or incremented by 5 and a query like this is run to refill the display: </p> <codeblock id="GUID-0B46D8A9-213A-58DA-99D7-F46BE4A7FCE5" xml:space="preserve">
+SELECT title FROM album WHERE genre='classical' ORDER BY title LIMIT 5 OFFSET ?
+</codeblock> <p>The bound parameter on the offset field would be filled in with the index of the topmost album to be displayed and the query is run to generate five album titles. Presumably the album table is indexed in such a way that both the WHERE clause and the ORDER BY clause can be satisfied using the index so that no accumulation of results and sorting is required. Perhaps the index looks like this: </p> <codeblock id="GUID-3B67B9DA-DC18-59B1-AFAA-3008A33A8581" xml:space="preserve">
+CREATE INDEX album_idx1 ON album(genre, title);
+</codeblock> <p>This approach works find as long as the offset value is small. But the time needed to evaluate this query grows linearly with the offset. So as the user scrolls down towards the bottom of the list, the response time for each click becomes longer and longer. </p> <p>A better approach is to remember the top and bottom title currently being displayed. (The application probably has to do this already in order be able to display the titles). To scroll down, run this query: </p> <codeblock id="GUID-E659EDB4-A3F9-513F-8A46-85C11A2C9DA7" xml:space="preserve">
+SELECT title FROM album WHERE genre='classical' AND title&gt;:bottom
+    ORDER BY title ASC LIMIT 5;
+</codeblock> <p>And to scroll back up, use this query: </p> <codeblock id="GUID-6D62E7D4-3932-5F0F-88E6-D1BD22FF4822" xml:space="preserve">
+SELECT title FROM album WHERE genre='classical' AND title&lt;:top
+    ORDER BY title DESC LIMIT 5;
+</codeblock> <p>For the scrolling down case the addition of the “title&gt;:bottom” term (where :bottom is a parameter which is bound to the title of the bottom element currently displayed) causes SQLite to jump immediately to the first entry past the current display. There is no longer a need for an OFFSET clause in the query, though we still include “LIMIT 5”. The same index will still work to optimize both the WHERE clause and the ORDER BY clause. </p> <p>The scrolling up case is very similar, although in this case we are looking for titles that are less than the current top element. We have also added the “DESC” tag to the ORDER BY clause so that titles will come out in “descending” order. (The sort order is descending, but the order is ascending if you are talking about the order in which the titles are displayed in the scrolling window). As before, the same album_idx1 index is able handle both terms of the WHERE clause and the descending ORDER BY clause. </p> <p>Both of these queries should be much faster than using OFFSET, especially when the OFFSET is large. OFFSET is convenient for use in ad hoc queries entered on a workstation, but it is rarely helpful in an embedded application. An indexing scheme such as described here is only slightly more complex to implement but is much faster from user's perspective. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-36DF4CE7-ECDC-5542-A00F-CFFAC307BD6C.dita"><linktext>SQL Memory
+                Tips</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link><linktext/></link><link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1277D793-4A0A-50A7-9414-AEE93E906E80.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1277D793-4A0A-50A7-9414-AEE93E906E80"><title>Sockets Server Architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the architecture of the Sockets Server and the framework that implements sockets in Symbian OS. </p> <p>The sockets are similar in concept to Berkeley Software Distribution (BSD) sockets from the University of California at Berkeley. The sockets provide a generic interface to network level communications protocols for common operations in network computing. Common operations are: </p> <ul><li id="GUID-3CFD5267-2254-5816-9443-E4256579E01D"><p>establish a connection </p> </li> <li id="GUID-C1061692-C402-5EB1-91E9-EEB3BD3410CE"><p>send data </p> </li> <li id="GUID-445FF07E-FC13-589A-B375-DED728F88E06"><p>receive data </p> </li> <li id="GUID-BBC3CE6E-01FA-52E6-BE5E-A53A2E5423AC"><p>configure network protocols </p> </li> </ul> <p>The Sockets Client API provides access to other network facilities. Examples of network facilities are: </p> <ul><li id="GUID-E77E0241-2D8F-531B-93D3-78BD910BCEB4"><p>hostname resolution </p> </li> <li id="GUID-EB93A7E8-33BC-5A82-9CD7-8AB7065CDB1B"><p>service resolution </p> </li> <li id="GUID-439CE845-2A89-5886-81DD-9F3DD0537346"><p>information about protocols </p> </li> <li id="GUID-2AE98676-FEAC-5B49-BB39-1BD635F24FDF"><p>byte manipulation utilities </p> </li> </ul> <section><title>Required Background</title> <p>A working knowledge of socket based communications is recommended in order to understand how Symbian OS implements sockets. </p> <p>A knowledge of the selected protocol is also required if the application is going to set or get values specific to the protocol. For example, the knowledge is required to understand the data returned from <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-1B597C97-2AEB-32D1-B225-5C1E24F6470F"><apiname>RSocketServ::GetProtocolInfo()</apiname></xref>. The knowledge is also required if the application sets <xref href="GUID-9A20701F-5744-5F5F-BB0C-AB58EFB7D087.dita">Quality of Service</xref> (QoS) values. </p> </section> <section><title>Key Concepts/Terms</title> <p>The Sockets Server starts when Symbian OS starts, and receives requests for socket based communications. If a request is received for a particular protocol, the Sockets Server loads the appropriate protocol modules to handle that request. </p> </section> <section><title>Architectural relationships</title> <p>The Sockets Server provides a generic client interface, and a server to which particular protocol modules can be plugged in. A client uses a particular protocol by supplying protocol-specific parameters to Sockets API functions. </p> <fig id="GUID-253611E8-9893-5261-830F-28B888FFA15B"><title>
+             Figure 1 - The Socket Server's position in the Communications
+             Framework Architecture. 
+          </title> <image href="GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e95877_href.png" placement="inline"/></fig> <p>The TCP/IP API enables clients to use sockets for TCP/IP, including UDP, TCP, ICMP, IPv4, IPv6, ARP, and DNS. </p> <p>The IrDA Sockets API enables clients to use sockets for IrDA infra-red. </p> <p>The Bluetooth Sockets API enables clients to use sockets for Bluetooth. </p> <p>The SMS PRT API provides the GSM SMS Protocol stack and the WAP protocol stack over SMS. </p> </section> <section><title>Historical Note</title> <p>Prior to Symbian OS 9.5, the Sockets Server would load protocol modules to provide protocol functionality. The protocol modules were known as <i>PRT</i> s. Each protocol module could contain several protocols (e.g. the TCP/IP PRT handled UDP, TCP, ICMP, IP (IPv4 and IPv6), and DNS). In Symbian OS 9.5 a new architecture was added as an alternative to the PRT architecture. This new architecture loads several plug-ins for each protocol. </p> <p>In Symbian OS 9.5 all existing PRTs are included and used by the Communications Framework. In future, all PRTs may be replaced with plug-ins for the new architecture. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-128F20B1-4293-59C5-99B5-83BF43CA2F01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-128F20B1-4293-59C5-99B5-83BF43CA2F01"><title>List of Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following classes are available as a part of the SIP Client API: </p> <p> <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref>, <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref>, <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref>, <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref>, <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref>, <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements</apiname></xref>, <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref>, <xref href="GUID-A40E3FE5-B7BE-39CD-ADBF-A38A21B1CF8D.dita"><apiname>CSIPreferDialogAssoc</apiname></xref>, <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref>, <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref>, <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref>, <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref>, <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref>, <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita"><apiname>CSIPHttpDigest</apiname></xref>, <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref>, <xref href="GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF.dita"><apiname>MSIPHttpDigestChallengeObserver</apiname></xref>, <xref href="GUID-64AD3756-2FEC-37CB-9A31-838738DEC03D.dita"><apiname>MSIPHttpDigestChallengeObserver2</apiname></xref>, <xref href="GUID-C6FF4A83-0097-3A82-B4ED-802E1FEA05D1.dita"><apiname>MSIPObserver</apiname></xref>, <xref href="GUID-F0663140-8AF3-3831-A741-483D276BF91C.dita"><apiname>MSIPRegistrationContext</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1293DE8C-E803-4ADF-9FA8-862519337331" xml:lang="en"><title>Software installer</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>End users can install new software from a variety of sources: through e-mail, Internet downloads, multimedia messaging service (MMS) and WAP push messages, infrared and Bluetooth connections, PC Suite, and removable memory cards. The diversity of software vendors and delivery channels requires a sophisticated system for managing installed software.</p>
+<p>The Symbian <i>Software Installer</i> uses <i>digital signatures</i> and <i>certificates</i> to authenticate that the application being installed on a mobile device is from a known vendor. The signature can be obtained through the <xref href="https://www.symbiansigned.com/app/page" scope="external">Symbian Signed</xref> process, and the default certificates installed in the mobile device act as root certificates. During installation the signature is validated against the certificates. If they match, the application is installed and the requested <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capabilities</xref> are stored in the executable, assuming that the root certificate can grant the capabilities. Only <i>user capabilities</i> can be granted to unsigned or self-signed applications, and these are always confirmed by the user. </p>
+<note>
+<p>The end users have an option to cancel the installation if they detect that the vendor of the software package and certificate authority are not trustworthy. This is especially important when installing security-related components (for example, VPN clients, firewalls and virus scanners) or other business-related software.</p>
+</note>
+<p>The Software Installer ensures that no two applications have the same <xref href="GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita#GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC652">SID</xref> value on a particular target device. The Software Installer has the <codeph>TCB</codeph> capability to read and modify content in the <xref href="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita"><codeph>\sys</codeph> </xref> folder and all its subfolders, which means that you can write to third-party application executables in the <codeph>\sys\bin</codeph> folder when they are installed through the Software Installer.</p>
+<p>For more information on the Software Installer, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Installing/index.html" format="application/java-archive">About the Software Installation Toolkit</xref>.</p>
+<p>The following figure illustrates the steps of software installation:</p>
+<fig id="GUID-98820420-7C7A-46EC-9DE4-EA3F5FFD39A8"><title>Installation process for signed packages</title><image href="GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e7445_href.png"/></fig>
+<p>The Software Installer can install the following types of packages:</p>
+<ul>
+<li><p>signed <codeph>sis</codeph> packages</p></li>
+<li><p>Java archives (JAR) run by a Java virtual machine</p></li>
+<li><p>Web Runtime widgets</p></li>
+</ul>
+<p>The Software Installer recognizes different devices, which allows you to define the platforms and devices to which the software can be installed.</p>
+<p>Software can be installed to or from removable media. For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Installing/MediaCardIssues.html" format="application/java-archive">How to install to/via a media card</xref>.</p>
+<p>If you receive an error message when using the Software Installer, see <xref href="http://wiki.forum.nokia.com/index.php/S60_SW_installer_troubleshooting" scope="external">S60 SW installer troubleshooting</xref> in Forum Nokia.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98" xml:lang="en"><title>Asynchronous
+Services Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-6F9E9225-A8E2-41C9-B7B5-A89E2800445C"><title>Purpose</title> <p>Provides low-level and high-level idioms
+by which one thread or process in Symbian platform can request services from
+another.</p> <p>Client programs typically use these idioms when accessing
+system services such as windowing, or telephony. This process is so fundamental
+that the basic structure of nearly all Symbian platform applications is based
+on its encapsulation in the active object framework.</p> </section>
+<section id="GUID-CA918B24-FFC7-47C1-A683-F8AE01192ED3"><title>Architectural relationships</title> <p>Asynchronous services
+are used throughout Symbian platform, most commonly as encapsulated in the
+client/server architecture. Some APIs may in turn wrap client/server relationships
+in framework classes, so that it is not immediately obvious that a client
+program is using asynchronous services. The most important case of this is
+the UI application framework, which wraps client requests to be informed of
+user interface events.</p> </section>
+<section id="GUID-78BD76F0-7785-4238-A17F-40B7117BEB39"><title>Description</title> <p><b>General
+properties</b> </p> <p>Client programs must often request access to services
+provided by other threads or processes. For example, most application programs
+will request the system's window server process to inform it of keyboard input.
+A thread or process that provides such services is called an <i>asynchronous
+service provider</i>.</p> <p>When a function call to an asynchronous service
+provider returns, it means only that the request has been despatched. The
+asynchronous service provider informs the requester that it has actually completed
+the request through a signalling mechanism.</p> <ul>
+<li id="GUID-E6B20563-4114-5896-A80E-1D2195631346"><p>Low-level asynchronous
+service handling shows the basic asynchronous services concepts.</p> </li>
+<li id="GUID-A84879C4-703D-5681-934D-D7649440A67F"><p>High-level asynchronous
+service handling shows the Symbian platform framework that encapsulates asynchronous
+service handling.</p> </li>
+</ul> <p><b>Low-level
+asynchronous service handling</b> </p> <p>Low-level asynchronous service handling
+has two key concepts, asynchronous request status, and thread request semaphore.</p> <p><b>Asynchronous request status</b> </p> <p>An asynchronous request status
+indicates the completion status of a request to a service provider. When a
+thread makes a request, it passes an asynchronous request status as a parameter.
+When the provider completes the request, it stores a success or error code
+in the request status.</p> <p>The asynchronous request status is provided
+by <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref>.</p> <p><b>Thread
+request semaphore</b> </p> <p>A thread request semaphore is the means by which
+a provider signals a requester that it has completed a request. Client code
+can then determine which request has completed, and call an appropriate function
+to handle completion of the request. </p> <p>Functions to signal a thread
+request semaphore, and to wait until it has been signalled are provided by
+the System Static Functions API <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> class.</p> <p><b>High-level asynchronous service handling</b> </p> <p>High-level asynchronous
+service handling has two key concepts, active object, and active scheduler.</p> <p><b>Active object</b> </p> <p>An active object encapsulates the general behavior
+of making requests to asynchronous service provider, and handling the completion
+of requests. Particular asynchronous service provider typically supply active
+object based classes as interfaces by which clients to access them. </p> <p>The
+active object interface is provided by <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref>.</p> <p><b>Active scheduler</b> </p> <p>A thread which uses asynchronous services
+must have a main loop that waits on the thread’s request semaphore for any
+outstanding requests to complete. The active scheduler encapsulates this wait
+loop. An active scheduler is provided for all GUI programs. A high-level view
+of a GUI application is therefore is that it is a set of active objects to
+handle request completion events fed it by its active scheduler.</p> <p>The
+active scheduler interface is provided by <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler</apiname></xref>.</p> </section>
+<section id="GUID-67C2E21D-8F63-4637-832F-9EBD4B2FF4AF"><title>See also</title> <p><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server
+Overview</xref> </p> <p><xref href="GUID-E865E677-1219-500C-89CF-0A2835B91834.dita">Semaphores
+Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System
+Static Functions Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-129FCE62-5498-4717-864B-7DC6A5C5944D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-129FCE62-5498-4717-864B-7DC6A5C5944D" xml:lang="en"><title>Removing
+feedback from a control</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use the funtion <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#d0f710410fe791b93ed963b64abe3a07" format="application/java-archive"><codeph>RemoveFeedbackForControl</codeph></xref> to remove feedback from a control.</p>
+<p>When the control given as parameter to the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#581c289397617d8b8e08e94c61ac7a3f" format="application/java-archive"><codeph>SetFeedbackArea</codeph></xref> function is destroyed, then the <codeph>RemoveFeedbackForControl</codeph> function
+must be called, giving the same control as parameter again. This is necessary
+for removing all the feedback areas, and also for resetting the state information
+stored by the API implementation.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12A754EE-7D90-56C8-BDA7-3293F34BE456.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-12A754EE-7D90-56C8-BDA7-3293F34BE456"><title>Playing a Tone Sequence</title><shortdesc>This tutorial describes how to play a sequence of tones. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context id="GUID-AF70F5DC-DF94-56FB-AA54-3FEE4C54E15E"><p>You have to configure DevSound for playing a tone sequence. </p> <p>The following settings can be configured before or during tone play: </p> <ul><li id="GUID-3CC1E36E-B934-5920-A4CC-B3DB5A0F3715"><p>To change the volume of the audio device to a specific value, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C93E8531-F569-3F6B-AE65-A36749FCE7DF"><apiname>CMMFDevSound::SetVolume()</apiname></xref> function. The volume can be set to any value from 0 to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1BFCB3CB-17C7-399B-9089-3ADFF43044BA"><apiname>CMMFDevSound::MaxVolume()</apiname></xref>. </p> <p>To define a period over which the volume rises from 0 to the normal volume level, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF47B65D-DEFA-3D11-B6AB-2DC876D25EF7"><apiname>CMMFDevSound::SetVolumeRamp()</apiname></xref> function. </p> <p> <b>Note:</b> The <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF47B65D-DEFA-3D11-B6AB-2DC876D25EF7"><apiname>CMMFDevSound::SetVolumeRamp()</apiname></xref> function is only available during tone play. </p> </li> <li id="GUID-1C82D0A6-6D44-56F0-970B-4CF1FF8F9401"><p>To set the speaker balance, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0D55BCC4-9882-3F49-B1AD-922B48264F79"><apiname>CMMFDevSound::SetPlayBalanceL()</apiname></xref> function. This function has two parameters: </p> <ul><li id="GUID-4468CBE6-AD40-5B56-94BA-F070A0A45B64"><p> <codeph>aLeftPercentage</codeph> - the left speaker volume percentage. </p> </li> <li id="GUID-A3C8E4FD-F7AE-595C-9CD5-8950C14221E3"><p> <codeph>aRightPercentage</codeph> - the right speaker volume percentage. </p> </li> </ul> </li> <li id="GUID-B2CC953C-CC77-54D2-B710-EA3EC10824DC"><p>To set the priority setting for this instance of DevSound to access the audio device, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1B3B1694-EED8-3B33-B424-C48DDAFBE75A"><apiname>CMMFDevSound::SetPrioritySettings()</apiname></xref> method. Priority settings are used by the Audio Policy component to resolve multiple requests to access the audio hardware. </p> </li> </ul> </context> <steps-unordered id="GUID-6080B137-1DF1-50E1-BA7B-659114F628FA"><step id="GUID-E7AE6985-7474-5302-8568-45492F65810F"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-2B48CD01-DBD9-3669-8F79-0812FA03B0D3"><apiname>CMMFDevSound::PlayToneSequenceL(const TDesC8
+                &amp;)</apiname></xref> function to start playing a tone sequence. </info> <info>This method has one parameter, <codeph>&amp;aData</codeph>, the tone sequence that is to be played. </info> </step> <step id="GUID-3F5A56CC-89E1-5335-B24C-FFA099C571D5"><cmd/><info>Call the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-8AD3FCA2-84C3-3BFC-B0A9-CEAF132D0BF5"><apiname>MDevSoundObserver::ToneFinished(TInt)</apiname></xref> function to complete successfully a tone sequence playing. If a tone sequence is not valid, <codeph>MDevSoundObserver::ToneFinished(TInt)</codeph> returns with an error of <codeph>KErrCorrupt</codeph>. </info> <info> Note: Further calls to <codeph>CMMFDevSound::PlayToneSequenceL(const TDesC8 &amp;)</codeph> can be made both before and after the <codeph>MDevSoundObserver::ToneFinished(TInt)</codeph> callback is received. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita"><linktext>Pausing and
+                Resuming a Tone</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280"><title>Socket Server Reference</title><shortdesc>This topic provides a summary of related documentation for the ESock APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><p>Socket Server APIs: </p> </section> <table id="GUID-C269B63A-A1D7-5A4B-8608-65462143CBA6"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry>Server session APIs</entry> <entry/><entry>Header</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>  </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> </entry> <entry><p> </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>RSocketServ establishes and reserves resources for the base communication session to the socket server. All other client interfaces require a valid session to be opened </p> </entry> </row> <row><entry><p> <b>RSocketServ Subsession APIs</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>  </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>End point for all socket-based communications. </p> </entry> </row> <row><entry><p> <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>  </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>Makes host name resolution queries. </p> </entry> </row> <row><entry><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>  </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>Used to startup and manage active connections. It is possible to start a connection either implicitly, via the RSocket or RHostResolver APIs, or explicitly via the RConnection API. The RConnection creates a default subconnection. </p> <p> <xref href="GUID-5CFC075C-8F53-5E1B-A111-C6F4567DFD1E.dita">RConnection API Reference</xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>  </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>Used to organise channels within a connection and manage Quality of Service. Multihoming-aware applications must use this API. Only valid in the context of an RConnection. </p> </entry> </row> <row><entry><p> <xref href="GUID-7489739B-3608-3F9F-BB02-DE65D7AA53A2.dita"><apiname>RNetDatabase</apiname></xref>  </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>Interface for network database access. </p> </entry> </row> <row><entry><p> <xref href="GUID-DDD32F28-BA89-3CA1-93B0-355CDD9CD92D.dita"><apiname>RServiceResolver</apiname></xref>  </p> </entry> <entry><p>ES_SOCK.H </p> </entry> <entry><p>Provides an interface to resolve service names and ports. </p> </entry> </row> <row><entry><p> <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref>  </p> </entry> <entry/><entry><p>ES_SOCK.H </p> </entry> <entry><p>Provides access to the Comms Management Plane, including Access Point queries. </p> </entry> </row> </tbody> </tgroup> </table> <section><p>Bearer Mobility APIs </p> </section> <table id="GUID-DDBADF88-8197-5C9A-AC0E-42099252DC93"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Bearer mobility APIs</entry> <entry>Header</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita"><apiname>CActiveCommsMobilityApiExt</apiname></xref>  </p> </entry> <entry><p>es_mobility_apiext.h </p> </entry> <entry><p>Comms Mobility API extension for application client running an Active Scheduler. </p> </entry> </row> <row><entry><p> <xref href="GUID-D5F43DFB-5143-3563-8655-16E245A9735F.dita"><apiname>RCommsMobilityApiExt</apiname></xref>  </p> </entry> <entry><p>es_mobility_apiext.h </p> </entry> <entry><p>Comms Mobility API extension for application client not running an Active Scheduler. </p> </entry> </row> <row><entry><p> <xref href="GUID-9A3979A9-F882-3053-B5B1-E0E125774271.dita"><apiname>MMobilityProtocolResp</apiname></xref>  </p> </entry> <entry><p>es_mobility_apiext.h </p> </entry> <entry><p>Interface to be implemented by the application client to support mobility API extension. See <xref href="GUID-CB1E1921-9CF7-55B7-9F70-6AD61A961208.dita">Bearer Mobility Client</xref>. </p> </entry> </row> </tbody> </tgroup> </table> <section><p>How APIs related to the 3-Plane Comms Architecture. </p> <fig id="GUID-FC69453E-CA12-5CDB-A7E6-B2FA542BBE06"><title>
+          Figure 1 - How ESock APIs related to the 3-Plane Comms Architecture 
+        </title> <image href="GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e99444_href.png" placement="inline"/></fig> <p>The Sockets Client API also defines a number of support classes used in conjunction with the above interfaces. These encapsulate: </p> <ul><li id="GUID-A1132B04-61D5-53E5-85A5-E7BBFA598B72"><p> <i>Addresses</i>: a base address class <xref href="GUID-66228064-B6E7-3CE9-8F5E-5DED4CD9A49B.dita"><apiname>TSockAddr</apiname></xref> is defined. Specific protocol address classes are derived from this. Each address can be identified by its Protocol Family, an integer which identifies protocol suites from others. </p> </li> <li id="GUID-BBD21B5C-20EE-5BC9-BEE4-00CB1565DE1E"><p> <i>Resolution queries</i>: queries made through <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref> objects are packaged in <xref href="GUID-C625E339-6726-3FB9-8F8A-F4DB0CAC15FF.dita"><apiname>TNameEntry</apiname></xref> descriptors. These are packages for <xref href="GUID-567CF5B5-464F-37B7-A91E-6A672C39BA44.dita"><apiname>TNameRecord</apiname></xref> objects that contain <xref href="GUID-66228064-B6E7-3CE9-8F5E-5DED4CD9A49B.dita"><apiname>TSockAddr</apiname></xref> objects to pass in addresses. </p> </li> <li id="GUID-EFB76FB6-00D2-5C01-BE59-B748CAAAC61E"><p> <i>Protocol information</i>: a comprehensive description of a protocol’s capabilities and properties can be dynamically obtained through the <xref href="GUID-0FB20F20-67EE-3948-B9F6-E1D679AC3D0F.dita"><apiname>TProtocolDesc</apiname></xref> class. Capabilities are identified by constants. </p> </li> <li id="GUID-4BD6B3AA-4711-55BE-8F34-88B28EC2657F"><p> <i>Endian issues</i>: <xref href="GUID-8183BE9B-6118-3472-A271-8409751CA5EF.dita"><apiname>BigEndian</apiname></xref>, <xref href="GUID-55FDB45E-2759-3192-AEE2-D600B232682B.dita"><apiname>LittleEndian</apiname></xref>, and <xref href="GUID-A934C24D-0E90-3D33-B4FC-654FB9004CFC.dita"><apiname>ByteOrder</apiname></xref> can be used to order integers to and from network order. </p> </li> </ul> </section> <section id="GUID-7803B89A-6ABF-529C-A0B8-CA06BA410F3B"><title>RSubConnection Events</title> <p> <b>CSubConGenEventDataClientJoined</b>, <b>CSubConGenEventDataClientLeft</b>  </p> <p>These two events derive from <xref href="GUID-1C0CC85E-38A7-3E7A-9246-940DCCE44EB0.dita"><apiname>CSubConGenEventDataClientBase</apiname></xref>, which provides the functionality for both. The source and destination end points of the data client are presented with this event, along with the IAP ID of the connection on which it was created. </p> <p> <b>CSubConNotificationEvent</b>  </p> <p>Both generic and extension sub-connection events derive from this class. The rules for generic and extension events are the same as for parameter sets. That is, a generic event MUST be able to be understood by all technologies. </p> <p>The <codeph>IsGeneric()</codeph> method identifies whether the event is generic. </p> <p>The <codeph>GroupId()</codeph> method returns the UID of the factory that contains the event, and <codeph>Id()</codeph> returns the class type Id within that factory. These two pieces of information comprise the <xref href="GUID-FEE87408-3FAA-31BB-A0C2-4BDEB279D4BA.dita"><apiname>STypeId</apiname></xref> of the event. </p> <p> <b>CSubConGenEventParamsGranted</b>  </p> <p>Notification of this event occurs after a request to <codeph>SetParameters()</codeph> has been made and negotiation with the network has been completed. A notification will be received for each family contained in the parameter bundle that was negotiated successfully. This event presents a generic set and zero or more extension sets (providing they are supported by the underlying sub-connection provider technology) of the parameter family identified by the Id returned from <codeph>GetFamily()</codeph>. </p> <p> <b>CSubConGenEventParamsRejected</b>  </p> <p>Notification of this event occurs after a request to <codeph>SetParameters()</codeph> has been made and negotiation with the network has failed for some reason. It could be an error within the handset software/configuration, or that the network could not provide the acceptable (minimum) level of QoS. The reason for failure and the parameter family are presented by the accessor methods <codeph>Error()</codeph> and <codeph>FamilyId()</codeph>. Like the <xref href="GUID-AA6CFA1E-0B17-3603-9065-34D05322C0A5.dita"><apiname>CSubConGenEventParamsGranted</apiname></xref> event, a notification for <xref href="GUID-7103CFA3-2119-3356-9460-B26D88036FEB.dita"><apiname>CSubConGenEventParamsRejected</apiname></xref> is received for each family in the parameter bundle that could not be negotiated successfully. </p> <p> <b>CSubConGenEventParamsChanged</b>  </p> <p>This event occurs when the properties of a parameter family has been renegotiated due to some event on the network. It is not sent in response to a request to change the properties. The change could be the result of an error or just that the level of QoS has improved/worsened. If a new set of parameters are available they’ll be presented as with the <xref href="GUID-AA6CFA1E-0B17-3603-9065-34D05322C0A5.dita"><apiname>CSubConGenEventParamsGranted</apiname></xref> event. The error status is presented via the <codeph>Error()</codeph> method. </p> <p> <b>CSubConGenEventSubConDown</b>  </p> <p>This event occurs when the underlying sub-connection has been lost. This could be due to request for it to be closed, or some error on the network. The error status is presented via the <codeph>Error()</codeph> method. </p> </section> <section id="GUID-7F057E16-0E56-5989-8647-7DAFF6E343D3"><title>RSubConnection QoS Parameters</title> <p> <b>CSubConQosGenericParamSet</b>  </p> <table id="GUID-227CFC6C-C38B-516F-AB6D-C3C2D51EA4A3"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Parameter </entry> <entry> Description </entry> <entry>Directions</entry> </row> </thead> <tbody><row><entry><p>Bandwidth </p> </entry> <entry><p>Bandwidth the client requires </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Maximum Burst Size </p> </entry> <entry><p>Maximum size of a burst of data the client can handle </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Average Packet Size </p> </entry> <entry><p>Average packet size required (e.g. codec use) </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Maximum Packet Size </p> </entry> <entry><p>Maximum packet size the client can handle </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Delay </p> </entry> <entry><p>Acceptable Delay/Latency </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Delay Variation </p> </entry> <entry><p>Acceptable variation in delay (also known as jitter) </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Priority </p> </entry> <entry><p>Relative priority the client expects to give this channel compared to it’s other channels </p> </entry> <entry><p>Uplink / Downlink </p> </entry> </row> <row><entry><p>Header mode </p> </entry> <entry><p>Specify whether the header size should be calculated by the QoS module or specified by the client. Default is to let the QoS module calculate it. </p> </entry> <entry><p>N/A </p> </entry> </row> <row><entry><p>Name </p> </entry> <entry><p>Identity of a “well known” set of QoS Parameters. </p> </entry> <entry><p>N/A </p> </entry> </row> </tbody> </tgroup> </table> <p>If an extension parameter set is added to the family that contains conceptually identical parameters to those in the generic set, it is recommended that you set both instances (generic and extension) of those parameters. </p> <p> <b>CSubConQosIPLinkR99ParamSet</b> / <b>CSubConQosR99ParamSet</b>  </p> <p>Getter and setter methods are provided for each parameter. </p> <p> <b>Note: </b> The constants used for it are <xref href="GUID-04E17A74-BFAB-3DB7-998B-5BCB8A5FB4CC.dita"><apiname>KSubConIPParamsUid</apiname></xref> and <xref href="GUID-41202CC9-3547-3404-AF6C-678A36BAE7D9.dita"><apiname>KSubConQosIPLinkR99ParamsType</apiname></xref>. </p> <p>The following parameter sets are available in Symbian OS v9.3 onwards. </p> <p> <b>CSubConQosR5ParamSet</b>  </p> <p>It inherits from the release 4/99 set <codeph>CSubConQosR99ParamSet</codeph>. Although it is possible to add both this parameter set and the R4/R99 one, it is not necessary and should not be done. </p> <p> <b>CSubConIMSExtParamSet</b>  </p> <p>This class contains the IM CN Signalling Indicator flag. </p> </section> <section><title>Test programs</title> <p>None </p> </section> <section><title>Historial Node</title> <p> <b>Note: </b> In Symbian OS v9.2, the <xref href="GUID-BE599F52-46BD-3BB4-8B18-E149633AD0E5.dita"><apiname>CSubConQosR99ParamSet</apiname></xref> class replaced the <xref href="GUID-D378B4C3-C1DD-3B79-9608-6BC53835E1A3.dita"><apiname>CSubConQosIPLinkR99ParamSet</apiname></xref> class. </p> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12CB6E0E-69CD-51A6-8966-3621CB26E1CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-12CB6E0E-69CD-51A6-8966-3621CB26E1CD"><title>DBMS rowsets overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Allows data contained in a database to be retrieved, searched, and modified.</p> </section> <section><title>Description</title> <p>The API has three key concepts: rowset base, table rowset, and SQL view. </p> <p><b>Rowset base</b> </p> <p>Rowsets provide the following:</p> <ul><li id="GUID-5EC6A9C9-2C0F-5141-A600-815C61FA5DC8"><p>retrieving data from a database</p> </li> <li id="GUID-145F724B-4AFF-5987-9DC1-C94D5FE9C54C"><p>navigating the rowset with a cursor</p> </li> <li id="GUID-BD487F4B-D14F-5575-95BB-2A1A5ECBC020"><p>row finding and matching </p> </li> <li id="GUID-56F7E17F-3009-5E2C-A015-CF09D03C98F1"><p>updating or inserting rows</p> </li> <li id="GUID-FE9D6B32-74CE-54C7-8DBB-C7578673282F"><p>getting the schema of the rows within the rowset</p> </li> <li id="GUID-FA52E8CD-8943-560F-8613-BF7D0E6A05A8"><p>extracting and setting columns in a row</p> </li> </ul> <p>A base class is defined for all rowset types by <xref href="GUID-F861EB8F-F621-3E77-8F9A-5E4EFC4E9C2F.dita"><apiname>RDbRowSet</apiname></xref>. Concrete types of rowset derive from this.</p> <p><b>Table rowset</b> </p> <p>This provides all the rows and columns of a table as a rowset. Indexes can be used to order the rowset, and to provide fast key-based row retrieval from the table. It is encapsulated in <xref href="GUID-90ABFA73-6374-367C-BAA9-88CD810035CC.dita"><apiname>RDbTable</apiname></xref>. </p> <p><b>SQL view</b> </p> <p>This provides a rowset based on an SQL query. It is provided by <xref href="GUID-AE1BEF00-5AA7-3F03-95B0-9E40395EDA6C.dita"><apiname>RDbView</apiname></xref>. An SQL query is encapsulated in <xref href="GUID-A7C9FEFA-A9A9-357F-AF66-FA3A288AF925.dita"><apiname>TDbQuery</apiname></xref>.</p> <p>For large rowsets, it can be useful to define the balance between memory usage (greatest if the view stores the complete rowset) and speed (slowest if the rowset is evaluated for each cursor navigation). This is called the pre-evaluation window, and is provided by <xref href="GUID-E53A90DF-3589-34BD-B7C3-02371567AF41.dita"><apiname>TDbWindow</apiname></xref>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12D1EE2F-AF1E-4C53-ADC8-D8BC205BD063.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-12D1EE2F-AF1E-4C53-ADC8-D8BC205BD063" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12D1F61B-6BC6-5215-A832-E84C0F480765.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-12D1F61B-6BC6-5215-A832-E84C0F480765" xml:lang="en"><title>Communications Framework Utilities</title><shortdesc>Comms Framework Utilities provides the infrastructure that allows communication between Communications threads and processes. The utilities also provide specialised memory management behaviour that meets the requirements of Communications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12D5C140-DFDA-549B-9CCF-EF7488B832AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-12D5C140-DFDA-549B-9CCF-EF7488B832AE"><title>OpenGLES Interface Overview</title><shortdesc>The OpenGLES Interface component provides the Symbian platform with an interface to the open-source, cross-platform OpenGL ES APIs defined by the Khronos Group. The component includes the Khronos-released header files, some Symbian-specific header files, LIB, DEF and MMP files and UIDs. It does not provide any implementations of the APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p> <section><title>Supported APIs</title> <p>The OpenGL ES specifications are defined by the Khronos Group (<xref scope="external" href="http://www.khronos.org/">http://www.khronos.org/</xref>). The following table provides links to the relevant specifications. </p> <table id="GUID-62367673-DC27-5C8C-92E5-859B868E0D63"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Specification Version</entry> <entry>Location</entry> </row> </thead> <tbody><row><entry><p>OpenGL ES 1.1.10 </p> </entry> <entry><p> <xref scope="external" href="http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.10.pdf">http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.10.pdf</xref> </p> </entry> </row> <row><entry><p>OpenGL ES 2.0 </p> </entry> <entry><p> <xref scope="external" href="http://www.khronos.org/files/opengles_spec_2_0.pdf">http://www.khronos.org/files/opengles_spec_2_0.pdf</xref> </p> </entry> </row> </tbody> </tgroup> </table> <p>The OpenGLES Interface component includes the Khronos-released header files that conform to these specifications. The header files incorporate some minor changes, such as in-source comments. </p> <p>These header files are derived from the official Khronos Subversion Repository (<xref scope="external" href="https://cvs.khronos.org/svn/repos/">https://cvs.khronos.org/svn/repos/</xref>) as shown in the following table. </p> <table id="GUID-E32EA3AA-47A0-58C4-B4A8-5A665631CF2F"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Specification Version</entry> <entry>Repository</entry> </row> </thead> <tbody><row><entry><p>OpenGL ES 1.X </p> </entry> <entry><p> <filepath>/ogles/branches/1.X/src/include/GLES/</filepath>  </p> </entry> </row> <row><entry><p>OpenGL ES 2.0 </p> </entry> <entry><p> <filepath> /ogles/trunk/src/include/GLES2/</filepath>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Profiles supported</title> <p>The following OpenGL ES profiles are supported: </p> <ul><li id="GUID-24D0587A-D3C9-5E94-9C18-C23A7C22AC61"><p>OpenGL ES 1.X Common Profile (CM) </p> </li> <li id="GUID-9DC90BBD-6A94-5624-B49A-9A5DB15ECDE5"><p>OpenGL ES 1.X Common-Lite Profile (CL) </p> </li> <li id="GUID-829CA7B3-2776-5C6B-A645-D12B45BC368C"><p>OpenGL ES 2.0. There is only one profile, therefore only one version exists. </p> </li> </ul> </section> <section><title>Extensions supported</title> <p>OpenGL ES implementations can expose implementation-specific functionality by using the standard extension mechanisms. </p> <ul><li id="GUID-FE9F33D6-74B2-5A8F-A211-C13C740493F0"><p>The OpenGL ES 1.X extensions, which are defined by Khronos, are located in <filepath>/epoc32/include/GLES/glext.h</filepath>. </p> </li> <li id="GUID-F14417AB-02C4-5C84-A30F-658CACEEF3A7"><p>The OpenGL ES 2.0 extensions, which are defined by Khronos, are located in <filepath>/epoc32/include/GLES2/gl2ext.h</filepath>. </p> </li> </ul> <p>Implementers can disable extensions by using <filepath>glextplatform.h</filepath> and <filepath>gl2extplatform.h</filepath>, respectively. </p> <p>Implementers edit the Symbian-supplied <filepath>/epoc32/include/GLES/glextplatform.h</filepath> by defining an appropriate define guard. For example, defining <codeph>GL_OES_draw_texture</codeph> in <filepath>glextplatform.h</filepath> prevents definition of <codeph>GL_TEXTURE_CROP_RECT_OES</codeph> in <filepath>glext.h</filepath>. </p> </section> <section><title>Organization of file names and directories</title> <p>Khronos defines the file names and directories for OpenGL ES in the <xref scope="external" href="http://www.khronos.org/registry/implementers_guide.html">Khronos API Implementers Guide</xref>. </p> </section> <section><title>Library files</title> <p>For each profile, the OpenGLES Interface component provides a library file as shown in the following table. The library filenames are specified by Khronos. </p> <table id="GUID-BC6E0960-7C41-553D-A964-9E0F4B7B0EF1"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Library Name</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p>libGLES_CM.lib </p> </entry> <entry><p>OpenGL ES 1.1 Common Profile with EGL </p> </entry> </row> <row><entry><p>libGLES_CL.lib </p> </entry> <entry><p>OpenGL ES 1.1 Common-Lite Profile with EGL </p> </entry> </row> <row><entry><p>libGLESv1_CM.lib </p> </entry> <entry><p>OpenGL ES Common Profile without EGL (known as OpenGL ES 1.1 v1) </p> </entry> </row> <row><entry><p>libGLESv2.lib </p> </entry> <entry><p>OpenGL ES 2.0 </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Note</b>: OpenGL ES 1.1 v1 is not another version of OpenGL ES. It is instead another form of packaging for the OpenGL ES 1.1 API. </p> </section> <section><title>Definition files</title> <p>The following definition (<filepath>DEF</filepath>) files are delivered by the OpenGLES Interface component in order to ensure binary compatibility. </p> <table id="GUID-55CF6C4A-C21F-5866-B85D-8226EEF0A03E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Name and path</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p> <filepath>
+                  /epoc32/include/platform/def/&lt;plat&gt;/openglesu.def</filepath>  </p> </entry> <entry><p>OpenGL ES 1.0 with EGL (CM profile) </p> </entry> </row> <row><entry><p> <filepath>
+                  /epoc32/include/platform/def/&lt;plat&gt;/opengles11u.def</filepath>  </p> </entry> <entry><p>OpenGL ES 1.1 with EGL (CM profile) </p> </entry> </row> <row><entry><p> <filepath>
+                  /epoc32/include/platform/def/&lt;plat&gt;/libglesv1_cm11u.def</filepath>  </p> </entry> <entry><p>OpenGL ES 1.1 without EGL (CM profile) </p> </entry> </row> <row><entry><p> <filepath>
+                  /epoc32/include/platform/def/&lt;plat&gt;/libglesv2u.def</filepath>  </p> </entry> <entry><p>OpenGL ES 2.0 </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita"><linktext>OpenGLES Collection</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-12D8C373-5199-5B89-9910-00F769AC164A" xml:lang="en"><title>How
+to build EXEs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An .EXE program typically has a single executable component. Unlike GUI
+application targets there is no application information file, and in most
+cases a resource file will not be needed.</p>
+<p>Under WINS/WINSCW, the C++ source is compiled to object files in the build
+directory; these are then linked, together with standard libraries, into the
+release directory. You may run the program directly from the release directory.</p>
+<p>Under ARM targets, the C++ source is compiled using a native compiler,
+and then linked into a <filepath>.exe</filepath> in the release directory.
+You may then transfer the program to the target machine and execute it.</p>
+<section><title>mmp project specification</title><p>For an EXE
+target, only a minimum of essential information need be specified:</p><ul>
+<li id="GUID-A0E2ED12-C5F4-5F6D-BDBB-B3B87B09F502"><p>Specify the <codeph>TARGETTYPE</codeph> line
+as:</p> <codeblock id="GUID-02CE2D53-6886-5263-812D-BCD24186C3DE" xml:space="preserve">TARGETTYPE    exe</codeblock> </li>
+<li id="GUID-2FFB1967-3C8D-5235-89D0-6D8D5971F54E"><p>Specify the <codeph>UID</codeph> as
+zero in a <codeph>UID</codeph> line:</p> <codeblock id="GUID-F813D71D-300B-5C3C-80DC-08F136A1F7F3" xml:space="preserve">UID   0</codeblock> <p>EXEs
+do not strictly speaking need a UID value. However specifying zero suppresses
+a build tools warning.</p> </li>
+</ul></section>
+<example><p>An example of the project file for a console program is given
+below</p><codeblock id="GUID-05B15418-43DB-5192-9B93-042B08499724" xml:space="preserve">TARGET        HelloWorld.exe
+TARGETTYPE    exe
+UID           0
+SOURCEPATH    .
+SOURCE        HelloWorld.cpp
+USERINCLUDE   .
+USERINCLUDE   ..\CommonFramework
+SYSTEMINCLUDE \Epoc32\include
+LIBRARY       euser.lib</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12E2AFC9-0010-5ACE-9635-6EBC4036E36A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-12E2AFC9-0010-5ACE-9635-6EBC4036E36A"><title>continue</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>continue [n]</userinput> </p> <p>Resume the next iteration of the enclosing <codeph>for</codeph>, <codeph>while</codeph>, <codeph>until</codeph>, <codeph>select </codeph> or <codeph>repeat</codeph> loop. If <codeph>n</codeph> is specified, break out of <codeph>n-1</codeph> loops and resume at the n<sup>th</sup> enclosing loop. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-12FF05BE-F06E-58F0-909D-05CB6F7FA03E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-12FF05BE-F06E-58F0-909D-05CB6F7FA03E"><title>Code Efficiency</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Attention paid to making code efficient in speed and particularly in resource use is always worthwhile. This topic suggests some methods that should become familiar to Symbian developers for this platform. </p> <section><title>Stack usage</title> <p>Each thread in an application has a limited standard stack space of 8Kb, which should be carefully managed. Therefore: </p> <ul><li id="GUID-C8B30A14-5135-5594-A440-C8B4F78E4F0B"><p>avoid copy-by-value, except for basic types </p> </li> <li id="GUID-03380EB3-E1A7-573C-9CD5-9E7055885341"><p>create any large object or array on the heap rather than the stack </p> </li> <li id="GUID-F72CAEC5-FF15-59E9-8452-1324BBB61C7D"><p>minimise the lifetime of automatic variables by appropriately scoping them </p> </li> </ul> <p>The last point can be illustrated with the following example: </p> <codeblock id="GUID-DFFA3ADD-1FB3-5CAC-8B9E-7A141A958E22" xml:space="preserve">void ABadFunction()
+    {
+    TBigObject Object1;
+    TBigObject Object2;
+    TBigObject Object3;
+    
+    GetTwoObjectValues(Object1,Object2);
+    Object3=SumObjects(Object1,Object2);
+    FunctionWithUnknownStackOverhead(Object3);
+    }</codeblock> <p>In the above code, <codeph>Object1</codeph> and <codeph>Object2</codeph> persist, using stack space, throughout the lifetime of the call to <codeph>FunctionWithUnknownStackOverhead()</codeph>, although they are not required by that time. They should be removed from the stack before the call is made. This can be achieved as follows: </p> <codeblock id="GUID-46DB7A9B-6186-565E-AFF7-47C6A5E24CB3" xml:space="preserve">void ABetterFunction()
+    {
+    TBigObject Object1;
+
+    GetTotalObjectValues(Object1);    
+    FunctionWithUnknownStackOverhead(Object1);
+    }
+
+void GetTotalObjectValues(TBigObject &amp;aObject)
+    {
+    TBigObject Object1;
+    TBigObject Object2;
+
+    GetTwoObjectValues(Object1,Object2);
+    aObject=SumObjects(Object1,Object2);
+    }</codeblock> <p>By splitting the code into two functions, you ensure that the stack is used no more than required. </p> </section> <section><title>Function overloads</title> <p>If a function definition has default arguments, and if that function often gets called with the caller assuming the default arguments, consider providing an overloaded function that doesn't have the additional arguments. This is because every time the compiler supplies a default parameter, it generates additional code where the function is called. </p> <p>For example, if you have </p> <codeblock id="GUID-AA858DE5-FDAC-5021-8581-88EEDA399671" xml:space="preserve">void FunctionOne(TInt aInt=0);</codeblock> <p>which often gets called in code by the line </p> <codeblock id="GUID-660E507A-AD70-508D-A8B2-A9AA5A367996" xml:space="preserve">FunctionOne();</codeblock> <p>then consider supplying </p> <codeblock id="GUID-B6DEAF81-0C9C-59D4-A0B3-2E3D6ECD4AB1" xml:space="preserve">void FunctionOne();</codeblock> <p>the contents of which might be: </p> <codeblock id="GUID-96ED9FA0-6C91-5298-8F28-F75C717C3D4E" xml:space="preserve">void FunctionOne()
+    {
+    FunctionOne(0);
+    }</codeblock> </section> <section><title>Pointers and references</title> <p>Using a reference as a function argument may be more efficient than using a pointer. This is because the compiler has to preserve the value of the null pointer through all conversions. </p> <p>Imagine a class <codeph>CXxx</codeph> which derives from a mixin class <codeph>MYyy</codeph>, as in </p> <codeblock id="GUID-5F86BE77-45BF-5D9B-A205-283B5D234889" xml:space="preserve">class CXxx : public CBase,public MYyy {...};</codeblock> <p>Then, to pass a pointer to a <codeph>CXxx</codeph> to a function taking a <codeph>MYyy</codeph>, the compiler has to add <codeph>sizeof(CBase)</codeph> to the pointer, except when that pointer is <codeph>NULL</codeph>. If <codeph>cp</codeph> is a <codeph>CXxx*</codeph>, and <codeph>Func()</codeph> a function taking an <codeph>MYyy*</codeph>, then what happens in a call like <codeph>Func(cp)</codeph> is something like this: </p> <codeblock id="GUID-E192FCB5-7F8D-56FC-B474-674B750C82B6" xml:space="preserve">Func((MYyy* aM)(cp==NULL ? NULL : (TUint8*)cp+sizeof(CBase)));</codeblock> <p>Null references are not possible, so no test for <codeph>NULL</codeph> is necessary when they are used. On ARM, converting from <codeph>CXxx*</codeph> to <codeph>MYyy*</codeph> takes 8 instructions, whereas the <codeph>CXxx&amp;</codeph> to <codeph>MYyy&amp;</codeph> conversion takes only two. </p> </section> <section><title>Floating point maths</title> <p>Floating point maths is sufficiently slow that it is worth looking to see if an alternative algorithm using only integer maths is available. </p> <p>For example, given two <codeph>TInts</codeph>, <codeph>aTop</codeph>, and <codeph>aBottom</codeph>, instead of: </p> <codeblock id="GUID-170883FB-40FD-5295-A545-2FE7F05D6813" xml:space="preserve">TReal a = (TReal)aTop;
+TReal b = (TReal)aBottom;
+TReal c = a/b+0.5;
+TReal result;
+Math::Round(result,c,0);
+return (TInt)result;</codeblock> <p>you should use </p> <codeblock id="GUID-CF3DC494-14DE-51B2-9F2C-5916F3E8AA84" xml:space="preserve">return((2*aTop+aBottom)/(2*aBottom));</codeblock> </section> <section><title>Inline functions</title> <p>Inline functions are intended to speed up code by avoiding the expense of a function call, but retain its modularity by disguising operations as functions. Before using them, however, there are two issues that you should check: </p> <ul><li id="GUID-5381813A-ACF4-57FE-B70E-CCB4AA6AF5BC"><p>code compactness: limited memory resources may mean that the speed cost of a function call is preferable to large bodies of inline code </p> </li> <li id="GUID-58841335-10A8-5E09-B7D6-DB011B95FDA1"><p>binary compatibility: changing the implementation of an inline function can break binary compatibility. This is important if your code is going to be used by other Symbian developers. </p> </li> </ul> <p>The most common cases where inline functions are acceptable are: </p> <ul><li id="GUID-61970E70-8C53-5CCA-A214-4CEF87817FA8"><p>getter and setters for one- or two-machine word quantities: for example, </p> </li> </ul> <codeblock id="GUID-683E842C-DBF7-516E-8B33-FC6FF3DCE2A9" xml:space="preserve">inline ConEnv() const { return iConEnv; };</codeblock> <ul><li id="GUID-261BCAD0-CCD0-502A-9DC3-E8FC5E2217C7"><p>trivial constructors for <codeph>T</codeph> classes: </p> </li> </ul> <codeblock id="GUID-F906F1B0-E5AC-5F03-A432-61EAEA5C5C11" xml:space="preserve">inline TPoint::TPoint(TInt aX, TInt aY) { iX=aX; iY=aY; }; </codeblock> <ul><li id="GUID-672214E8-5B5F-5879-BEFF-FF3E50B3280B"><p>in the thin-template idiom: see <xref href="GUID-497930CE-4D61-50EE-A63B-3656158EE29C.dita">Thin templates</xref>  </p> </li> <li id="GUID-D1627362-04CD-55FD-AB66-3DD8A4FFCABD"><p>certain other operators and functions, possibly templated, whose definition, not subject to change, is to map one operation onto another, for example, </p> </li> </ul> <codeblock id="GUID-D737320C-4153-5E34-93F7-7E89E377CDD5" xml:space="preserve">template &lt;class T&gt; inline T Min(T aLeft,T aRight)
+{ return(aLeft&lt;aRight ? aLeft : aRight); }</codeblock> </section> <section><title>No test for NULL pointer when deleting object</title> <p>C++ specifies that <codeph>delete 0</codeph> does nothing, so that you need never write code such as </p> <codeblock id="GUID-9897710D-7202-5290-9454-EAC5B0129D70" xml:space="preserve">if (iX)
+    delete iX;</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C" xml:lang="en"><title>Simultaneous
+Call Tutorial</title><shortdesc>This tutorial describes how to handle two call with the telephony
+API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-02566DCB-EFC4-4C74-A9FD-98417AC0AF9D"><p>This state diagram shows how to dial or answer one or two calls
+at a time. </p> <fig id="GUID-3603A3BF-5E3F-5945-B762-42411EF4B497">
+<title>              Simultaneous Call State Diagram            </title>
+<image href="GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e36515_href.png" placement="inline"/>
+</fig> <p>The boxes are states. The enumeration value in each box is the status
+of the voice line. <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Voice
+line status</xref> describes these states and their meaning. The arrows show
+events that trigger a change of state. In these events, a word in <b>bold</b> indicates
+a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> method that you can call. </p> </context>
+<steps id="GUID-20511421-E888-5AA6-8C8A-8B03AF9532EA">
+<step id="GUID-207F7101-D6BC-54B3-A6FD-BE4FA0C44CE4"><cmd/>
+
+<substeps id="GUID-3C223BD1-B3D3-54BF-9CE2-4CF0397C26A6">
+<substep id="GUID-D333CDDA-E565-5009-BB68-364FDFAEE537"><cmd/>
+<info>check the <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Voice
+line status</xref> for other calls </info>
+<info><ul>
+<li id="GUID-6E5035AE-AA11-5D46-A6FA-FCFF600C3964"><p>if the line is <i>Idle</i> (<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-52E51C0C-8C27-311D-8B6B-223F899DB2C9"><apiname>CTelephony::EStatusIdle</apiname></xref>)
+then no calls are in progress </p> </li>
+<li id="GUID-0B35A0D6-2BB1-54ED-A562-653031ECBE91"><p>if the line is <i>on
+hold</i> (<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7F347F6A-0B02-34BC-B082-3449EA63A148"><apiname>CTelephony::EStatusHold</apiname></xref>) then there is another
+call in progress, but it is on hold and you can still dial or answer a second
+call. Now go to point four below </p> </li>
+<li id="GUID-A939F59B-59A4-56CE-8949-5DE28588EE57"><p>if another call is active,
+you must wait until it completes before you can dial or receive a call. </p> </li>
+</ul> </info>
+</substep>
+<substep id="GUID-DEF3414F-6836-57E2-96A9-6E824696F29A"><cmd/>
+<info> <xref href="GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita"> Dial a call</xref>  </info>
+<info>while no calls are in progress, the line's status is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-52E51C0C-8C27-311D-8B6B-223F899DB2C9"><apiname>CTelephony::EStatusIdle</apiname></xref>.
+To dial a call, use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-E7A25EB6-B7FD-31DF-9A03-F100F93D7138"><apiname>CTelephony::DialNewCall()</apiname></xref>. If dialling
+was successful and the remote party answers the call then the line's status
+will become <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-641B7EAB-56C6-3E9C-A53C-EE382925E1CE"><apiname>CTelephony::EStatusConnected</apiname></xref>. </info>
+</substep>
+<substep id="GUID-1D1F2233-367B-57E7-B4A5-A36CD4C53C8C"><cmd/>
+<info> <xref href="GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita">Answer a call</xref>  </info>
+<info>while no calls are in progress, the line's status is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-52E51C0C-8C27-311D-8B6B-223F899DB2C9"><apiname>CTelephony::EStatusIdle</apiname></xref>.
+When a remote party calls your phone, the voice line's status will change
+to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7632FB7B-0272-39CB-B71A-C3C09EEB5E88"><apiname>CTelephony::EStatusRinging</apiname></xref>. </info>
+<info>When the status is <codeph>CTelephony::EStatusRinging</codeph>, use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-6D12DBA4-8902-3649-B144-47C91F16C4B3"><apiname>CTelephony::AnswerIncomingCall()</apiname></xref> to
+answer the call. The status will change to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-641B7EAB-56C6-3E9C-A53C-EE382925E1CE"><apiname>CTelephony::EStatusConnected</apiname></xref> and
+the phone user can talk to the remote party. </info>
+</substep>
+<substep id="GUID-A96B6019-65E1-5D10-9639-0F2D65E8FAE1"><cmd/>
+<info> <xref href="GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB.dita">Terminate the
+call</xref> </info>
+</substep>
+<substep id="GUID-C60ABD8F-C3D0-51F6-9A31-C1A9CDA27B24"><cmd/>
+<info>detect <xref href="GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita">Remote
+Termination</xref> of a call </info>
+</substep>
+<substep id="GUID-EF4ECB49-F37F-54C7-96C8-9105D54AEA43"><cmd/>
+<info> <xref href="GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita">Hold a Call</xref>  </info>
+</substep>
+<substep id="GUID-BB6D7BB5-4BEF-5D4D-B763-2EA7E8828D0F"><cmd/>
+<info> <xref href="GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1.dita">Resume a call</xref>  </info>
+</substep>
+<substep id="GUID-75078A44-B3EE-50CB-A746-C79D78228398"><cmd/>
+<info> <xref href="GUID-9C5A86D2-E602-55AE-B54B-8511E70CD23D.dita">Send DTMF tones
+down the line</xref>  </info>
+</substep>
+<substep id="GUID-4B8ED301-CAA2-5629-A697-73E6E0122F5E"><cmd/>
+<info> <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Line and call
+information</xref>  </info>
+</substep>
+<substep id="GUID-8CB212E7-2B55-580E-9DD4-D5A1694B94FA"><cmd/>
+<info> <xref href="GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita#GUID-D6334249-E61D-55E7-9D0E-95231DC3621F/GUID-19AC29A6-3A34-57E8-A0BE-8242CF60BF86">Answer
+a second call</xref>  </info>
+<info>at some point, a remote party might try to ring your phone. It is answered
+in the same way as the first </info>
+<info>The voice line state will change to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7632FB7B-0272-39CB-B71A-C3C09EEB5E88"><apiname>CTelephony::EStatusRinging</apiname></xref>.
+You can receive notification when this occurs; see <xref href="GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita">Detect
+an incoming call</xref>. Before answering the second call, you must put the
+original call on hold. This is shown in the diagram above. </info>
+</substep>
+<substep id="GUID-E4B328AF-66D5-5E21-BF74-7057D58694E6"><cmd/>
+<info> <xref href="GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita#GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC/GUID-8A1C0CE1-31F8-5B78-9FDC-D2BF46B2924F">Dial
+a second call</xref>  </info>
+<info>you can also dial a second call in the same way as the first. Once again,
+you must put your original call on hold before dialling the second call </info>
+</substep>
+<substep id="GUID-B8904540-FBA9-5351-B298-11681E3C9AA9"><cmd/>
+<info>a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-86D48DF2-1AA1-337A-A270-6703FF29C958"><apiname>CTelephony::TCallId</apiname></xref> will be given to you when you
+successfully connect a second call. You will also have a <codeph>CTelephony::TCallId</codeph> from
+the first call. Now you will be the owner of two calls: at any one time, one
+will always be active and one will always be on hold. </info>
+<info>Now you can: </info>
+<info><ul>
+<li id="GUID-B1B06B62-725A-5ACC-92AB-169F8C83EF2F"><p> <xref href="GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB.dita">Terminate
+either call</xref>. If you terminate the <b>active</b> call then you will
+be left with a call on hold. If you terminate the <b>on-hold</b> call then
+you will be left with an active call. </p> </li>
+<li id="GUID-590E8FC0-A09F-5CE5-BAE4-958439E35968"><p> <xref href="GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita">Detect
+remote party terminating either call</xref>. Once again, if the <b>active</b> call
+ends then you will be left with a call on hold and vice versa. </p> </li>
+<li id="GUID-1638D67F-33E6-50EA-A122-FA54D08E6213"><p> <xref href="GUID-E2D4973C-FE93-5DE7-B04E-19B7701621C3.dita">Swap
+held and active calls</xref>. </p> </li>
+</ul> </info>
+</substep>
+</substeps>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita"><linktext>Single Call
+                Tutorial</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-130D7E96-2AEF-559B-B5F1-D4B6754519C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-130D7E96-2AEF-559B-B5F1-D4B6754519C9"><title>Comments</title><shortdesc>Comments are sequence of characters preceded by a semi-colon that are ignored by the SIS creation tools. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><refsyn><title>Syntax</title> <codeblock id="GUID-AB795AE1-DA95-52A2-A3CB-9FE3981DC8F2" xml:space="preserve">
+; this is an example of a comment
+</codeblock> </refsyn> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-132DBA2F-B913-5565-9720-015777630C22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-132DBA2F-B913-5565-9720-015777630C22" xml:lang="en"><title>Log Engine Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-133999E8-0ACB-5929-949E-82BB16F8E267.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-133999E8-0ACB-5929-949E-82BB16F8E267" xml:lang="en"><title>Writing
+a UI MTM </title><abstract><p>This section explains the initial set up steps to be performed
+to write a UI MTM. It does not explain the implementation of all <xref href="GUID-EB76BA4B-D6A2-5651-A310-647E1D2CDEBC.dita">UI
+MTM functionality</xref>, however, you can see the <xref href="GUID-385BB488-5C32-58A7-8401-F3F0A0707DD9.dita">UI
+MTM example</xref>for detailed implementation steps.</p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The most basic functionality required in a UI MTM is to open a
+message (for viewing or editing) and close it again. The <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-0DD6B979-0473-3AAD-AE14-F1B0AC1E73C5"><apiname>CBaseMtmUi::OpenL()</apiname></xref> function
+opens the current context; the actual behaviour is dependent on the entry
+that the context points at. </p> <p>The base class of UI MTM, <xref href="GUID-2AD22359-BB98-31D2-8138-4E5F17A4BFE7.dita"><apiname>CBaseUiMtm</apiname></xref>,
+defines functions that return <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> objects for
+control of asynchronous operations. Implementers of these functions are required
+to provide suitable classes that are derived from <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref>.
+For example, if <xref href="GUID-2AD22359-BB98-31D2-8138-4E5F17A4BFE7.dita#GUID-2AD22359-BB98-31D2-8138-4E5F17A4BFE7/GUID-59FD3DB0-9F10-3052-B4F6-F9CF59854B8B"><apiname>CBaseUiMtm::EditL()</apiname></xref> is implemented to provide
+message editing, a derived <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> class must be
+provided that completes when the editing operation is complete. </p> </context>
+<steps id="GUID-DD170CFC-0DD8-5B20-856C-E9269FD98F29">
+<step id="GUID-23F7AF46-A909-5802-8168-8416EF531AF1"><cmd/>
+<info>Derive a class from the <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref> class. </info>
+</step>
+<step id="GUID-A37BCDA1-14CB-5FF2-931D-F32A8B92478B"><cmd/>
+<info>Register it using the <xref href="GUID-0D5D7FAC-4F14-3046-92FB-873B8350FF4C.dita"><apiname>CRegisteredMtmDll</apiname></xref> parameter. </info>
+</step>
+<step id="GUID-694A8171-AD7B-5671-86AA-87CC470213CE"><cmd/>
+<info>Create the <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> -based classes for performing
+the different operations that are required for your Messaging protocol. </info>
+</step>
+</steps>
+<example><title>UI MTM example</title><codeblock xml:space="preserve">//
+// CTextMtmUi: User Interface MTM
+//
+
+CTextMtmUi* CTextMtmUi::NewL(CBaseMtm&amp; aBaseMtm, CRegisteredMtmDll&amp; aRegisteredMtmDll)
+    {
+    CTextMtmUi* self=new(ELeave) CTextMtmUi(aBaseMtm, aRegisteredMtmDll);
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+CTextMtmUi::CTextMtmUi(CBaseMtm&amp; aBaseMtm, CRegisteredMtmDll&amp; aRegisteredMtmDll)
+    :   CBaseMtmUi(aBaseMtm, aRegisteredMtmDll)
+    {
+ 
+   }</codeblock> <p>For more details on implementing all the
+UI MTM functions, see <xref href="GUID-385BB488-5C32-58A7-8401-F3F0A0707DD9.dita">example
+code</xref>. </p> </example>
+</taskbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM overview</linktext>
+</link>
+<link href="GUID-EB76BA4B-D6A2-5651-A310-647E1D2CDEBC.dita"><linktext>User Interface
+MTM</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-13574CBC-893F-5756-825F-1E14A85E9C90.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-13574CBC-893F-5756-825F-1E14A85E9C90" xml:lang="en"><title>Advanced Camera Settings</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1361A508-D3DB-53F8-B1A1-34646F777B88.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1361A508-D3DB-53F8-B1A1-34646F777B88"><title>How to Add Email Type Values</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose and Scope</title> <p>This document describes how to use the contact model for adding an Email field to a contact item using the Contacts API. The Email field can be further described through the use of field types. This document shows how to add the field types representing CELL, HOME and WORK. It also describes the role of the INTERNET type in the Email field. </p> </section> <section><title>Overview</title> <p>The cntmodel provides the data engine for creating contact items that can contain fields. New fields can be added which can have fieldtypes and a mapping. The contact items can be import vCards and also export vCards. The cntvcard library provides the functionality to import and export vCards. The contact item mapping is associated with the properties of a vCard. The field type is typically associated with the type parameters of the property. </p> </section> <section><title>How to add an Email field with a CELL type</title> <p>The following code snippet describes how to add a contact item with an email field and a CELL field type. The corresponding EMAIL property, if the contact item is exported, is also shown. </p> </section> <section><title>Add contact item</title> <codeblock id="GUID-1D5D17AB-B3F0-5B53-BDD4-F030625C7C36" xml:space="preserve">// Adds a contact item to the contact database. The important lines are in bold.
+
+LOCAL_C void AddEntryL()
+    {
+    _LIT(KForename,"John"); 
+    _LIT(KSurname,"Smith"); 
+    _LIT(KPhoneNumber,"+441617779700"); 
+    _LIT(KEmailAddress,"john.smith@symbian.com"); 
+    
+    // Create a  contact card to contain the data
+    CContactCard* newCard = CContactCard::NewLC();
+    
+    // Create the firstName field and add the data to it
+    CContactItemField* firstName = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldGivenName);
+    firstName-&gt;TextStorage()-&gt;SetTextL(KForename);
+    newCard-&gt;AddFieldL(*firstName);
+      CleanupStack::Pop(firstName);
+      
+    // Create the lastName field and add the data to it
+     CContactItemField* lastName= CContactItemField::NewLC(KStorageTypeText, KUidContactFieldFamilyName);
+      lastName -&gt;TextStorage()-&gt;SetTextL(KSurname);
+      newCard-&gt;AddFieldL(*lastName);
+      CleanupStack::Pop(lastName);
+      
+    // Create the emailAddress field and add the data to it
+    +++CContactItemField* emailAddr = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldEMail);
+    +++emailAddr-&gt; AddFieldTypeL(KUidContactFieldVCardMapCELL);
+    +++emailAddr-&gt;SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+      emailAddr -&gt;TextStorage()-&gt;SetTextL(KEmailAddress);
+      newCard-&gt;AddFieldL(*emailAddr);
+      CleanupStack::Pop(emailAddr);
+        
+    // Create the phoneNo field and add the data to it
+      CContactItemField* phoneNumber = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldPhoneNumber);
+    phoneNumber-&gt;SetMapping(KUidContactFieldVCardMapTEL);
+    phoneNumber -&gt;TextStorage()-&gt;SetTextL(KPhoneNumber);
+    newCard-&gt;AddFieldL(*phoneNumber);
+      CleanupStack::Pop(phoneNumber);
+    
+    // Add newCard to the database
+    const TContactItemId contactId = db-&gt;AddNewContactL(*newCard);
+      CleanupStack::PopAndDestroy(newCard);
+    }
+</codeblock> </section> <section><title>Exported EMAIL property</title> <p>EMAIL;CELL;ENCODING=QUOTED-PRINTABLE:john.smith=40symbian.com </p> </section> <section><title>Add a contact item with an email field and HOME type</title> <p>The following code snippet describes how to add an email field and a HOME field type. The corresponding EMAIL property, if the contact item is exported, is also shown. </p> </section> <section><title>Creating an email field</title> <codeblock id="GUID-6C8B889D-8C34-5B38-8DDA-79D2388CCF6E" xml:space="preserve">// Create the emailAddress field and add the data to it
+    CContactItemField* emailAddr = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldEMail);
+    emailAddr-&gt; AddFieldTypeL(KUidContactFieldVCardMapHOME);
+    emailAddr-&gt;SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+    emailAddr -&gt;TextStorage()-&gt;SetTextL(KEmailAddress);
+    newCard-&gt;AddFieldL(*emailAddr);
+    CleanupStack::Pop(emailAddr);
+</codeblock> </section> <section><title>Exported EMAIL property</title> <p>EMAIL;HOME;ENCODING=QUOTED-PRINTABLE:john.smith=40symbian.com </p> </section> <section><title>Add a contact item with an email field and WORK type</title> <p>The following code snippet describes how to add an email field and a WORK field type. The corresponding EMAIL property, if the contact item is exported, is also shown. </p> </section> <section><title>Creating an email field</title> <codeblock id="GUID-8A7F81A1-9EF1-5854-8A99-39C1372EFA78" xml:space="preserve"> // Create the emailAddress field and add the data to it
+    CContactItemField* emailAddr = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldEMail);
+    emailAddr-&gt; AddFieldTypeL(KUidContactFieldVCardMapWORK);
+    emailAddr-&gt;SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+    emailAddr -&gt;TextStorage()-&gt;SetTextL(KEmailAddress);
+    newCard-&gt;AddFieldL(*emailAddr);
+    CleanupStack::Pop(emailAddr);
+</codeblock> </section> <section><title>Exported EMAIL property</title> <p>EMAIL;WORK;ENCODING=QUOTED-PRINTABLE:john.smith=40symbian.com </p> </section> <section><title>Add a contact item with an email field and INTERNET type</title> <p>The following code snippet describes how to add an email field and an INTERNET field type. The corresponding EMAIL property, if the contact item is exported, is also shown. There are two ways of creating an email field with an internet type. </p> </section> <section><title> Creating an email field</title> <codeblock id="GUID-C44C4639-655E-5EE8-8149-4B7D7C519F33" xml:space="preserve">The first one is:
+// Create the emailAddress field and add the data to it
+    CContactItemField* emailAddr = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldEMail);
+    // Do not add another fieldtype!
+    emailAddr-&gt;SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+    emailAddr -&gt;TextStorage()-&gt;SetTextL(KEmailAddress);
+    newCard-&gt;AddFieldL(*emailAddr);
+    CleanupStack::Pop(emailAddr);
+This would have the effect of adding an INTERNET field type by default. 
+
+The second method is to explicitly add:
+// Create the emailAddress field and add the data to it
+    CContactItemField* emailAddr = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldEMail);
+    emailAddr-&gt; AddFieldTypeL(KUidContactFieldVCardMapINTERNET);
+    emailAddr-&gt;SetMapping(KUidContactFieldVCardMapEMAILINTERNET);
+    emailAddr -&gt;TextStorage()-&gt;SetTextL(KEmailAddress);
+    newCard-&gt;AddFieldL(*emailAddr);
+    CleanupStack::Pop(emailAddr);
+</codeblock> </section> <section><title>Exported EMAIL property</title> <p>EMAIL;INTERNET;ENCODING=QUOTED-PRINTABLE:john.smith=40symbian.com </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-136540F0-108A-5794-A0FE-D95260F4E59B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-136540F0-108A-5794-A0FE-D95260F4E59B" xml:lang="en"><title>How to use text views</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-139E7235-4F23-5F0E-A969-6D7165AE5298.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-139E7235-4F23-5F0E-A969-6D7165AE5298"><title>-inv or -invariant</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>By default all DLLs are considered to be variant across all feature variant builds. </p> <p>To disable considering all DLLs as variants, use <codeph>-inv</codeph> or <codeph>-invariant</codeph> option. </p> <p> <codeph>abld -inv build armv5.myvar</codeph>  </p> <p>A DLL marked as <codeph>FEATUREVARIANT</codeph> in its <filepath>.mmp</filepath> file remains variant, even if <codeph>-invariant</codeph> or <codeph>-inv</codeph> option is specified in the <codeph>abld</codeph> command. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605"><title>srcdbg</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>srcdbg</codeph>  </p> <p>Use the <codeph>srcdbg</codeph> statement to disable the use of optimisation in debug builds. This makes it significantly easier to step through the execution of code with a source-level debugger.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-13BDBFA4-49FE-4D62-8B5F-BE3DF3ABAF3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-13BDBFA4-49FE-4D62-8B5F-BE3DF3ABAF3E" xml:lang="en"><title>Converting
+a Certificate Store into Human-Readable Form</title><abstract><p>To view details of the certificates that comprise the certificate
+store, it is necessary to convert the certificate store files in binary form
+to human-readable form. </p><p>The following examples show how to use certapp
+to convert a certificate store into human-readable form:</p><ul>
+<li><p>This example converts a file certificate store (<codeph>cacerts.dat</codeph>)
+into human-readable form (<codeph>cacerts.txt</codeph>). The input files are <codeph>cacerts.dat</codeph> and <codeph>cerclients.dat</codeph>,
+which maps the application UIDs in the certificates to application description
+strings.  </p><p><cmdname> &gt; certapp --bcertclients=certclients.dat --bfilecertstore=cacerts.dat
+--out --hcertclients=certclients.txt --hfilecertstore=cacerts.txt</cmdname> </p></li>
+<li><p>The following example shows how to convert the SWI certificate store
+file into human-readable form for a device which also has a writable data
+file (<codeph>writable.dat</codeph>) installed. </p><p><cmdname>&gt; certapp
+--bcertclients=certclients.dat --bswicertstore=swicertstore.dat --bswicertstore=writable.dat
+--out --hcertclients=certclients.txt --hswicertstore=swicertstore.txt</cmdname> </p><p>Specify
+the SWI certificate store files in ascending priority order, that is, specify
+the base SWI certificate store file first and then the writable SWI certificate
+store file. The tool automatically processes the writable SWI certificate
+store file before the base SWI certificate store file. </p></li>
+</ul><p><b>Notes:</b></p><ul>
+<li><p>Along with the certificate store file, separate files are also created
+for the certificates of the store. The certificate file types depend on the
+output file type. For example, if the output file is <codeph>certclients.txt</codeph>,
+x509 certificates are dumped in files with names like <codeph>certclients_certN.der</codeph>,
+where N is the entry number. If you specify the <codeph>--pemout</codeph> command-line
+option, then the extension of the certificate file is <codeph>.pem</codeph>.
+If the certificate type is not <codeph>EX509Certificate</codeph>, then the
+extension is <codeph>.dat</codeph>. </p></li>
+<li><p>For details of the formats followed by the various certificate store
+files, see <xref href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita">Certificate
+Store Human-Readable File Formats</xref>. </p></li>
+</ul></abstract><prolog><metadata><keywords/></metadata></prolog><related-links>
+<link href="GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C.dita"><linktext>Using certapp</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED"><title>DBMS Overview</title><shortdesc>Provides an interface to relational databases. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p id="GUID-844F756E-1670-5D24-8D63-2092ABE3354C"> The DBMS component provides an interface to relational databases. It enables you to create and access databases either from a single client or from multiple clients sharing access over a server. </p> </section> <section><title>Required background</title> <p>To use DBMS you need a knowledge of relational databases and the SQL query language. </p> </section> <section><title>Key concepts and terms</title> <dl><dlentry><dt>Store database </dt> <dd><p>A client-side single client database stored in permanent file stores, implemented by <xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>Named database </dt> <dd><p>A database allowing simultaneous read/write access by multiple clients, implemented by <xref href="GUID-6433D7F9-B4C7-39DA-BEF4-5EA22B8478A2.dita"><apiname>RDbNamedDatabase</apiname></xref>  </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>DBMS defines a general relational database access API, and allows different database implementations to be provided of which there are two: a small and relatively lightweight client-side implementation; and, for when multiple clients must have write access to a database, a client-server implementation. </p> <p>When multiple clients can access the same database, transactions ensure that only one client can change data at a time. </p> <p>The <xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores</xref> API defines a sophisticated file storage, called permanent file stores, that allows individual entries in a file to be modified. The database implementations use these stores for the underlying data storage. </p> <fig id="GUID-6907C48E-3E72-5FED-B5E5-67C6F6922ED9"><title>
+             DBMS Class Diagrams
+          </title> <image href="GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e331643_href.png" placement="inline"/></fig> </section> <section><title>DBMS Summary</title> <p>DBMS provides the following: </p> <ul><li id="GUID-CA46F9A6-15C2-5584-A907-9D1DD79C8711"><p> <b>Database Management System Library</b>  </p> <p> <filepath>edbms.dll</filepath>  </p> </li> <li id="GUID-8D01F878-BCA7-5F88-AC31-BEA68B0739CD"><p> <b>Database Management System Server</b>  </p> <p> <filepath>edbsrv.exe</filepath>  </p> </li> </ul> </section> <section><title>APIs</title> <table id="GUID-E682487D-23AC-5A0A-89F5-568D73452AF1"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-E11B1981-CA78-3660-AE09-AD3B4D453733.dita"><apiname>RDbDatabase</apiname></xref>  </p> </entry> <entry><p>Abstract database class. </p> </entry> </row> <row><entry><p> <xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref>  </p> </entry> <entry><p>Implements <codeph>RDbDatabase</codeph> as a store database. </p> </entry> </row> <row><entry><p> <xref href="GUID-6433D7F9-B4C7-39DA-BEF4-5EA22B8478A2.dita"><apiname>RDbNamedDatabase</apiname></xref>  </p> </entry> <entry><p>Implements a named database. </p> </entry> </row> <row><entry><p> <xref href="GUID-F861EB8F-F621-3E77-8F9A-5E4EFC4E9C2F.dita"><apiname>RDbRowSet</apiname></xref>  </p> </entry> <entry><p>The base class for all rowset types. </p> </entry> </row> <row><entry><p> <xref href="GUID-90ABFA73-6374-367C-BAA9-88CD810035CC.dita"><apiname>RDbTable</apiname></xref>  </p> </entry> <entry><p>Provides access to table data as a rowset. </p> </entry> </row> <row><entry><p> <xref href="GUID-AE1BEF00-5AA7-3F03-95B0-9E40395EDA6C.dita"><apiname>RDbView</apiname></xref>  </p> </entry> <entry><p>Generates rowsets from an SQL query. </p> </entry> </row> <row><entry><p> <xref href="GUID-A7C9FEFA-A9A9-357F-AF66-FA3A288AF925.dita"><apiname>TDbQuery</apiname></xref>  </p> </entry> <entry><p>A wrapper for an SQL string combined with a text comparison mode. </p> </entry> </row> <row><entry><p> <xref href="GUID-E53A90DF-3589-34BD-B7C3-02371567AF41.dita"><apiname>TDbWindow</apiname></xref>  </p> </entry> <entry><p>Describes the desired shape of a view's pre-evaluation window. </p> </entry> </row> <row><entry><p> <xref href="GUID-53AB4535-A859-3A8C-8344-53865B2FE0B4.dita"><apiname>RDbNotifier</apiname></xref>  </p> </entry> <entry><p>Provides notification of database changes to clients. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>DBMS is very well suited to applications with small to medium-sized datasets, where the total record count is less than 10,000 and the database size is less than 512KB. It scales reasonably well to larger datasets with total record counts less than 100,000 and database sizes less than 10MB. </p> <p>DBMS is a suitable database engine for applications such as: </p> <ul><li id="GUID-3638AC16-C761-5FEE-BFE1-C516C5674C88"><p>address books </p> </li> <li id="GUID-7C3E01B0-898A-5FC0-9C48-EB7D998C878D"><p>call logs </p> </li> <li id="GUID-B8F92167-446A-5CB0-A5A6-998B2E1ED9A4"><p>message stores. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita"><linktext>Persistent Storage Overview</linktext> </link> <link href="GUID-EACA05F0-7291-535C-82BC-16DF3AAA417E.dita"><linktext>Interface to DBMS databases
+                overview</linktext> </link> <link href="GUID-12CB6E0E-69CD-51A6-8966-3621CB26E1CD.dita"><linktext>DBMS rowsets overview</linktext> </link> <link href="GUID-7BE83158-B818-57E4-9A8C-43E5D2C84687.dita"><linktext>DBMS columns, column sets, and
+                keys overview</linktext> </link> <link href="GUID-C61B979A-921A-5756-8D7E-691C3DDD3437.dita"><linktext>DBMS sharing databases
+                overview</linktext> </link> <link href="GUID-120163D6-2E49-5D91-A746-2C8C4C944461.dita"><linktext>DBMS incremental operations
+                overview</linktext> </link> <link href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita"><linktext>File stores overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-13D2B45C-3A2A-497A-8D6A-87BE34D1DE69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-13D2B45C-3A2A-497A-8D6A-87BE34D1DE69" xml:lang="en"><title>Implement
+the observer functions</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>An application can register as an observer of a view by implementing
+the following observer interfaces. Observers can register with the View Server
+as activation observers, deactivation observers or as generic observers.</p><table id="GUID-7159BD7C-6466-4CA8-9211-FD33273C9784">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top"><p>Interface</p></entry>
+<entry valign="top"><p>Notification</p></entry>
+<entry valign="top"><p>Method to override</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><codeph>MCoeViewActivationObserver </codeph></p></entry>
+<entry><p>View activation notification for the specified view.</p></entry>
+<entry><p><codeblock xml:space="preserve">IMPORT_C void NotifyNextActivation(TVwsViewId&amp; aViewId,  MCoeViewActivationObserver&amp; aViewActivationObserver)
+</codeblock></p></entry>
+</row>
+<row>
+<entry><p><codeph>MCoeViewActivationObserver </codeph></p></entry>
+<entry><p>View activation notification for any view registered with view server.</p></entry>
+<entry><p><codeblock xml:space="preserve">IMPORT_C void NotifyNextActivation(MCoeViewActivationObserver&amp; aViewActivationObserver)
+</codeblock></p></entry>
+</row>
+<row>
+<entry><p><codeph>MCoeViewDeactivationObserver </codeph></p></entry>
+<entry><p>View deactivation notification for the specified view.</p></entry>
+<entry><p><codeblock xml:space="preserve">IMPORT_C void NotifyNextDeactivation (TVwsViewId&amp; aViewId, MCoeViewDeactivationObserver&amp; aViewDeactivationObserver)
+</codeblock></p></entry>
+</row>
+<row>
+<entry><p><codeph>MCoeViewDeactivationObserver </codeph></p></entry>
+<entry><p>View deactivation notification for any view registered with view
+server.</p></entry>
+<entry><p><codeblock xml:space="preserve">IMPORT_C void NotifyNextDeactivation (MCoeViewDeactivationObserver&amp; aViewDeactivationObserver)
+</codeblock></p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>The following code snippet shows implementing the <codeph>MCoeViewActivationObserver</codeph> observer
+interface class:</p><codeblock xml:space="preserve">/** 
+CMCoeViewActivationObserver  - implements the MCoeViewActivationObserver interface for notifications only
+*/
+CMCoeViewActivationObserver* CMCoeViewActivationObserver::NewL()    
+    {
+    CMCoeViewActivationObserver* self=new( ELeave ) CMCoeViewActivationObserver();
+    return self;
+    }
+void CMCoeViewActivationObserver::HandleViewActivation( const TVwsViewId&amp; aNewlyActivatedViewId,
+                                                        const TVwsViewId&amp; aViewIdToBeDeactivated )    
+    {_
+    LIT( Kmessage, "Notified MCoeViewActivationObserver::HandleViewActivation: Newly Active View: 0x%x - Deactivate 0x%x" )    
+    INFO_PRINTF2( Kmessage, aNewlyActivatedViewId.iViewUid.iUid, aViewIdToBeDeactivated.iViewUid.iUid );
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e369649_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01" xml:lang="en"><title>List query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A List query offers a list of predefined choices for the user. It can be
+used when more than two options must be offered to the user. There is a prompt
+text (optional) on top of the window, and a list of options to choose from.</p>
+<p>The list in a List query is a menu list: the user can select an item or
+dismiss the query; the Options menu is not available. The default softkey
+labels are OK on the left and Cancel on the right, the actual texts can be
+specific to the context. The Selection key causes the same action as the left
+softkey.</p>
+<p>Any list item layout suitable for menu lists can be used; see <xref href="GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita">List
+layouts</xref>.</p>
+<fig id="GUID-C40BEE37-FF71-442B-A1CF-7E6CCA2157F6">
+<title>List query </title>
+<image href="GUID-84B088C0-7013-4B6A-BA34-8F022E38E822_d0e61914_href.png" scale="40" placement="inline"/>
+</fig>
+<p>The number of items in the list should be kept low, so that all items can
+be seen without scrolling.</p>
+<section><title>Using list queries in
+C++ applications</title><p>For implementation information, see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324-master.png has changed
Binary file Symbian3/SDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e262696_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-141633B8-A3D4-5BBB-97C5-3D928746ECE7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-141633B8-A3D4-5BBB-97C5-3D928746ECE7" xml:lang="en"><title>Resource
+localisable strings</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Resource localisable strings (RLS) are defined in the resource files. Each
+RLS item definition is a new-line separated entry in the resource file, using
+literals to define a localisable string, number or character. </p>
+<p><b>Defining RLS items </b> </p>
+<p>The following literals can be used to define an RLS item: </p>
+<table id="GUID-F30AE1BF-B383-5A66-99C1-AD2110C41368">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <i>rls_string</i>  </p> </entry>
+<entry><p>Use this literal to define a 16-bit Unicode string </p> </entry>
+</row>
+<row>
+<entry><p> <i>rls_string8</i>  </p> </entry>
+<entry><p>Use this literal to define an 8-bit Unicode string </p> </entry>
+</row>
+<row>
+<entry><p> <i>rls_byte</i>  </p> </entry>
+<entry><p>Use this literal to define an 8-bit number </p> </entry>
+</row>
+<row>
+<entry><p> <i>rls_word</i>  </p> </entry>
+<entry><p>Use this literal to define a 16-bit number </p> </entry>
+</row>
+<row>
+<entry><p> <i>rls_long</i>  </p> </entry>
+<entry><p>Use this literal to define a long number </p> </entry>
+</row>
+<row>
+<entry><p> <i>rls_double</i>  </p> </entry>
+<entry><p>Use this literal to define a decimal number </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p><b>BNF description </b> </p>
+<p><i><codeph>&lt;rls-file&gt;</codeph></i>
+</p>
+<p><b>rls-file ::=</b>
+    </p>
+<p><i><codeph>&lt;rls-entry&gt;* &lt;rls-entry&gt;</codeph></i>
+</p>
+<p><b>rls-entry ::=</b>
+   </p>
+<p> <i><codeph>&lt;rls-item&gt; &lt;rls-item&gt;</codeph></i>
+</p>
+<p><b>rls-item ::=</b>
+    </p>
+<p><i><codeph>&lt;type&gt;[&lt;length&gt; &lt;cardinality&gt;] &lt;symbolic-identifier&gt;
+&lt;value&gt; &lt;type&gt;</codeph></i>
+</p>
+<p><b>type ::=</b>
+   </p>
+<p><b><codeph> rls_string | rls_string8 | rls_byte | rls_word | rls_long |
+rls_double</codeph></b> <i><codeph>&lt;value&gt;</codeph></i>
+</p>
+<p><b>value ::=</b>
+   </p>
+<p> <i><codeph>&lt;text&gt; | &lt;number&gt;</codeph></i></p>
+<p>where, </p>
+<table id="GUID-1B30B956-E495-5EE7-B5FA-33A336712087">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <varname>length</varname>  </p> </entry>
+<entry><p>The optional maximum length of the <codeph>text</codeph> applicable
+to <codeph>rls_string</codeph> or <codeph>rls_string8</codeph> types only </p> </entry>
+</row>
+<row>
+<entry><p> <varname>cardinality</varname>  </p> </entry>
+<entry><p>You can use the optional keyword qualifier "multi", which indicates
+that the localisable item may be used by more than one resource </p> </entry>
+</row>
+<row>
+<entry><p> <varname>symbolic-identifier</varname>  </p> </entry>
+<entry><p>A unique ID for the localisable string or number </p> </entry>
+</row>
+<row>
+<entry><p> <varname>text</varname>  </p> </entry>
+<entry><p>This is a string expression, which may include a string enclosed
+in double quotes (") and a character code enclosed in angle brackets (&lt;&gt;) </p> </entry>
+</row>
+<row>
+<entry><p> <varname>number</varname>  </p> </entry>
+<entry><p>A numeric value for the literals <codeph>rls_byte</codeph>, <codeph>rls_word</codeph>, <codeph>rls_long</codeph> and <codeph>rls_double</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>The following example shows how to define an RLS string and number: </p>
+<codeblock id="GUID-2B139C40-7B9C-502B-A709-ABEC93D3200E" xml:space="preserve">rls_string&lt;32&gt; STRING_1 "Example menu item"&lt;0x2026&gt;
+rls_byte multi NUMBER_1 17
+</codeblock>
+<p>Characters are declared using the RLS type identifiers <codeph>rls_byte</codeph>, <codeph>rls_word</codeph> or <codeph>rls_long</codeph>.
+The type identifier to be used depends on the type of the structure member
+they will be included into. However, the value can be declared within single
+quotes. For example: </p>
+<codeblock id="GUID-A6595588-C05D-5883-B2A7-A7645270F657" xml:space="preserve">
+    rls_long hotkey_zoomin 'M'</codeblock>
+<p><b>Commenting RLS items </b> </p>
+<p>RLS items can be tagged with appropriate comments, which are placed just
+before each RLS item declaration. Optionally, if a <codeph>RESOURCE</codeph> declaration
+contains localisable data, a comment can precede the <codeph>RESOURCE</codeph> declaration. </p>
+<p>These comments save time and cost in localisation, and improve quality
+of localised text. If you supply more context information to the translators
+(maximum string length allowed, the details of the GUI in which their text
+will be displayed), the quality of the localised text is better. This will
+also reduce the need for re-translating the text. </p>
+<p>The localisation comments must be enclosed within the comment brackets
+/*&amp;...*/. These comment brackets include a set of tags to provide more
+details about the RLS item. </p>
+<p>The resource compiler (<codeph>epocrc</codeph>) can warn if comments are
+missing. A Symbian platform licensee can configure the <codeph>epocrc</codeph> tool
+to emit warnings for missing comments through the <xref href="GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita#GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0/GUID-014671B6-C19E-528A-984C-D8226375AC5A">epocrc configuration file</xref>. </p>
+<p>The following is a list of tags used within the comment brackets: </p>
+<ul>
+<li id="GUID-23B9063B-ED0F-538C-AAB2-6AAE1E2993E5"><p> <codeph>@localize</codeph>:
+This is an optional tag used to specify whether to allow the translator to
+change the string or not. The translator is allowed to change the RLS item,
+only if the tag is set to '<codeph>yes</codeph>'. To disallow any change to
+the RLS item, set it to '<codeph>no</codeph>'. By default, the translator
+is allowed to change an RLS item, if the corresponding localisation comment
+does not include this tag. </p> <p>For example: </p> <codeblock id="GUID-1FCD24E2-7F1A-59DA-BF72-6612D9ABF22A" xml:space="preserve">/*&amp;
+@localize yes
+*/
+rls_string STRING_1 "Device locked"
+</codeblock> </li>
+<li id="GUID-C674C795-950D-5432-8908-89F20F85A891"><p> <codeph>@description</codeph>:
+This is mandatory tag used to provide a description about the RLS item. This
+tag is used to provide the following information to the translator: </p> <ul>
+<li id="GUID-D0519085-B8A6-5658-A7F5-D2891B033B89"><p>The context in which
+the string is used and the purpose of the dialog or views using the string. </p> </li>
+<li id="GUID-9591133E-65C3-5D7B-9B72-DE1D1B790FEE"><p>Its relationships with
+other strings. </p> </li>
+<li id="GUID-E8405E4E-A0AC-53B9-A6B5-630B276B7B7E"><p>If the localisable strings
+represent file names or URIs that must point to existing objects, describe
+those objects briefly. </p> </li>
+<li id="GUID-11F95E12-CECE-5311-8800-673FF4B3C059"><p>If the RLS items are
+tagged with <codeph>@restriction other</codeph>, describe the restriction. </p> </li>
+</ul> </li>
+<li id="GUID-A84221B4-5327-551A-8F92-ECC5B8D13F33"><p> <codeph>@restriction</codeph>:
+This is an optional tag used to specify the scope of the RLS item. The possible
+values for this tag are: </p> <ul>
+<li id="GUID-4C0C8F25-F6D0-550C-9A31-B96B483AD408"><p> <codeph>uri</codeph> to
+specify that the localisable item is an URI. If the URI changes, the resulting
+URI should be a valid URI pointing to the correct object. The description
+in the comment bracket can be used to give more details about the URI. </p> </li>
+<li id="GUID-F5FEC94D-DA1C-509E-A0BD-E35260F399E6"><p> <codeph>file</codeph> to
+specify that the localisable item is a file name. If the file changes, the
+ROM must be rebuilt to accommodate the change. If the full path of the file
+is not given, the description for the localisable item can be used to provide
+more details. </p> </li>
+<li id="GUID-1115504D-14E8-5997-9FF8-F79EC650943A"><p> <codeph>trademark</codeph> to
+specify that the localisable item is a trademark. The trademark differs from
+country to country, but any change to it must be subject to trademark owner's
+rules. The description for the localisable item can be used to provide more
+details. </p> </li>
+<li id="GUID-FF6ABAD0-2BC3-5445-842A-282CBEC7DBFE"><p> <codeph>other</codeph> to
+specify that the localisable item is none of the above. In such a case, the
+description should include the effects of changing the localisable item and
+the constraints. </p> </li>
+</ul> <p>For example: </p> <codeblock id="GUID-BD4F8548-23BD-5945-882E-54ABE0AF4468" xml:space="preserve">/*&amp; @description Must point to the happy bugle wave file, used as a ring tone and displayed to the user in the ring-tone selection dialog.
+@localize yes
+@restriction file
+*/
+rls_string STRING_2 "happy bugle.wav"
+</codeblock> </li>
+<li id="GUID-E2630A48-BC17-51FD-B6F0-EA425DD64318"><p> <codeph>@uicontext</codeph>:
+This is a mandatory tag for RLS items defined using <codeph>rls_string</codeph> and <codeph>rls_string8</codeph>.
+It is used to specify the type of widget in which the localisable item is
+used. There is a list of UI contexts for Symbian developers, which are extended
+by the platform suppliers. The Symbian developers must use the values defined
+for the platforms on which they are developing. </p> <p>The possible values
+for this tag are: </p> <ul>
+<li id="GUID-E21387AA-B4DA-59CD-9C96-783DEA10529B"><p> <codeph>notvisible</codeph> to
+specify that the item does not appear in the UI. </p> </li>
+<li id="GUID-800536F2-9524-5A8F-8919-A57962346F91"><p> <codeph>pluginname</codeph> to
+specify that the string is the name of an ECOM (or other) plug-in. </p> </li>
+<li id="GUID-26670A96-7A7C-558F-8747-5D77F24EA2EE"><p> <codeph>system</codeph> to
+specify that the item may appear in the UI, but the component that supplies
+the UI does not mandate where. </p> </li>
+<li id="GUID-1E32422C-C7AE-59CE-9E55-956614395349"><p> <codeph>errortext</codeph> to
+specify that the string is used by the error resolver. </p> </li>
+<li id="GUID-C3AAA814-0117-5083-A272-81968E7399E9"><p> <codeph>fragment</codeph> to
+specify that the item is part of a string that appears in the UI. For example,
+a list separator. </p> </li>
+<li id="GUID-4A0EADED-7CB0-5105-AEBF-B0ACC10A1F21"><p> <codeph>appname</codeph> to
+specify the application name in the <codeph>APP_REGISTRATION_INFO</codeph> structure. </p> </li>
+<li id="GUID-7527BBBE-3AA6-5CCD-A124-4977316B5814"><p> <codeph>appgroup</codeph> to
+specify the application group in the <codeph>APP_REGISTRATION_INFO</codeph> structure. </p> </li>
+</ul> <p>For example: </p> <codeblock id="GUID-876F09BF-98DA-5CFD-8E8F-C5CB57A60A52" xml:space="preserve">/*&amp;
+@uicontext pluginname
+*/
+rls_string STRING_1 "Device locked"
+</codeblock> </li>
+<li id="GUID-9E1F9CBA-14EC-52F1-8A8B-6AA3C6B07762"><p> <codeph>@group</codeph>:
+This is an optional tag used to group strings together. For example, you can
+group all strings that appear in the same view together. To group strings
+under a group, you have to define a group using the following syntax: </p> <codeblock id="GUID-05A63AFD-99A4-5C8E-9C62-8BB8F70D10DD" xml:space="preserve">@tagvalue group &lt;your-group-name&gt; [group-description]</codeblock> <p>Where, <varname>your-group-name</varname> is a name for the group, and <varname>group-description</varname> is an
+optional description about the group. </p> <p>For example, </p> <codeblock id="GUID-425EEBDF-432B-5D2E-A524-EBF0DB8A7187" xml:space="preserve">/*&amp;
+@tagvalue group lock_dialog
+*/
+</codeblock> <p>You can use the group defined above as follows: </p> <codeblock id="GUID-1A81832F-679D-5DC0-A237-C4496A3610CA" xml:space="preserve">/*&amp;
+@localize yes
+@group lock_dialog
+*/
+rls_string STRING_1 "Device locked"
+</codeblock> </li>
+<li id="GUID-A2E5B5EB-8EC1-5632-A576-DFBE1DD879C5"><p> <codeph>@uispec</codeph>:
+This is an optional tag used to specify where in the specifications document
+the RLS item appears. </p> <p>For example: </p> <codeblock id="GUID-E7E2A822-6840-5F69-A5F7-864882AABC4F" xml:space="preserve">/*&amp;
+@uispec    UIQ/ringtones-specification.doc/4.31
+*/
+rls_string STRING_2 "happy bugle.wav"
+</codeblock> </li>
+</ul>
+<p><b>Creating new RLS comment tags </b> </p>
+<p>Apart from the pre-defined set of tags listed above, you can also declare
+a new tag and use it in the localisation comments. Tags are declared in resource
+header files (<filepath>.rh</filepath>). You can configure the <codeph>epocrc</codeph> tool
+to recognise the comment definitions from such files through the <filepath>epocrc.config</filepath> configuration
+file. For more information, refer to <xref href="GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita#GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0/GUID-014671B6-C19E-528A-984C-D8226375AC5A">epocrc
+configuration file format</xref>. </p>
+<p>The following is the BNF description for declaring a new tag: </p>
+<p><i><codeph>&lt;tag-declaration&gt;</codeph></i>
+</p>
+<p><b>tag-declaration ::=</b>
+    </p>
+<p><b><codeph>@declaretag </codeph></b><i><codeph>&lt;tag-type&gt; &lt;new-tag-name&gt;
+[&lt;description&gt;] &lt;tag-type&gt;</codeph></i>
+</p>
+<p><b>tag-type ::=
+</b>    </p>
+<p><b><codeph>single | multiple | text | void</codeph></b></p>
+<p>Where, <varname>tag-type</varname> is used to specify the type value the
+tag can take. If you want the tag to take a single value, use "<codeph>single</codeph> "
+as the tag type. If you want the tag to take a single value from a set of
+values, use "<codeph>multiple</codeph> " as the tag type. For example, the <codeph>@uicontext</codeph> tag
+is of <codeph>multiple</codeph> type. If you want the tag not to take any
+value, use "<codeph>void</codeph> " as the tag type. If you want the tag to
+take free text, use "<codeph>text</codeph> " as the tag type. For example,
+the <codeph>@description</codeph> tag is of <codeph>text</codeph> type. </p>
+<p>For example, the following declares a tag called “visible” of type single: </p>
+<codeblock id="GUID-8C1F4921-CF51-57FA-8DDB-A9106B0AAF26" xml:space="preserve">@declaretag single visible</codeblock>
+<p>If you had declared the tag as <codeph>single</codeph> or <codeph>multiple</codeph>,
+you must declare its values. Value declaration is not required for other tag
+types. </p>
+<p>The following is the BNF description for declaring values for a tag: </p>
+<p><i><codeph>&lt;tag-value-declaration&gt;</codeph></i></p>
+<p>
+<b>tag-value-declaration ::=</b></p>
+<p>
+    <b>@tagvalue</b> <i><codeph>&lt;tag-name&gt; &lt;list-of-values&gt;</codeph></i></p>
+<p>Where, <varname>tag-name</varname> is the name of the tag declared earlier.
+If the tag is of multiple type, the <varname>list-of-values</varname> lists
+a set of values for the tag, otherwise a single value must be specified. </p>
+<p>For example, the following declares that the permitted value for the visible
+tag is "yes": </p>
+<codeblock id="GUID-EE092FF4-FA7A-591B-9103-5875CE422224" xml:space="preserve">@tagvalue visible yes</codeblock>
+<p>After declaring the values for the tag, you must specify whether the tag
+is required or optional for an RLS item. The BNF description for this is as
+follows: </p>
+<p><i><codeph>&lt;tag-required-statement&gt;</codeph></i></p>
+<p><b>
+tag-required-statement ::=</b></p>
+<p>
+    <b>@tagrequired</b><i><codeph> &lt;tag-name&gt; &lt;rls-type-identifier&gt;
+&lt;tag-optional-statement&gt;</codeph></i>
+</p>
+<p><b>tag-optional-statement ::=</b></p>
+<p>
+    <b>@tagoptional</b> <i><codeph>&lt;tag-name&gt;=[&lt;default-value&gt;] &lt;rls-type-identifier&gt;
+&lt;rls-type-identifier&gt;</codeph></i>
+</p>
+<p><b>rls-type-identifier ::=</b></p>
+<p>
+    <b><codeph>rls_string | rls_string8 | rls_byte | rls_word | rls_long |
+rls_double</codeph></b></p>
+<p>Where, <varname>tag-name</varname> is the name of the declared tag, <varname>default-value</varname> is
+the default value used for optional tags. </p>
+<p>For example, the following declares that the visible tag is optional, and
+has a default value of “yes” for rls_string items: </p>
+<codeblock id="GUID-8793CE31-6D00-5607-AD69-77E7FC7B5D54" xml:space="preserve">@tagoptional visible=yes rls_string</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e267376_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-14A0FC93-2AD9-5B33-B423-2CCAD3C96B5F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-14A0FC93-2AD9-5B33-B423-2CCAD3C96B5F"><title>clean</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>clean</codeph>  <codeph> ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) </codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>This command will erase all the files created by the corresponding <codeph>abld
+          target</codeph> command.</p> <p><codeph>abld clean</codeph> makes use of the <codeph>clean</codeph> targets provided in makefiles generated by <filepath>makmake</filepath>. </p> <p>The files that are removed by this command include all the intermediate files created during compilation and all the executables and import libraries created by the linker.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-14BAAB7C-35CD-5A43-B362-79F88C7712DE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-14BAAB7C-35CD-5A43-B362-79F88C7712DE"><title>Playing Tones</title><shortdesc>This document describes how to play various types of tones and how to pause and resume a tone. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-4551AE94-5BD1-5698-977D-14F410097137"><p>Before you start playing a tone, you must: </p> <ol id="GUID-DB7D349C-093B-5BE9-B731-160229C453F0"><li id="GUID-A22C52EF-68B8-5A02-9106-3F36D38438A3"><p>Construct a new instance of DevSound using the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-088CC167-C46D-3A2B-BE00-D7AEB98254AE"><apiname>CMMFDevSound::NewL()</apiname></xref> function. </p> </li> <li id="GUID-0543907D-3EF5-55C0-8FB7-3AFF755B724F"><p>Initialize DevSound using the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> function. </p> <p>This function requires that you specify the DevSound observer class to handle callbacks. Once initialization has completed, successfully or otherwise, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-089CF9C1-92EF-3F40-8669-A5EF5C064AD4"><apiname>MDevSoundObserver::InitializeComplete()</apiname></xref> function. </p> </li> <li id="GUID-2782B303-BDE7-5F9C-9989-6D46AE123332"><p>Configure DevSound according to the tone you select to play. </p> <p> <b>Note:</b> The configuration differs according to the tone played. </p> </li> </ol> </prereq> <context id="GUID-CAE51F18-C77B-59E9-8138-7A06CA8E444F"><p>The tone is a simple ring tone. You can play tones by calling the following functions: </p> <ul><li id="GUID-73B1F7B2-B630-537F-9351-87075731F071"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0849016F-D457-3521-A53A-85023D8561B8"><apiname>CMMFDevSound::PlayToneL(TInt,const
+                TTimeIntervalMicroSeconds &amp;)</apiname></xref> plays a single tone. </p> </li> <li id="GUID-E05EB3EE-ADAD-5F34-A5E8-3C336BF2FDBF"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D2C197B2-BB55-3B46-8F4D-FEDEE846B166"><apiname>CMMFDevSound::PlayDualToneL(TInt,TInt,const
+                TTimeIntervalMicroSeconds &amp;)</apiname></xref> plays a dual tone. </p> </li> <li id="GUID-DBF5A55C-07AB-5A9E-A784-D1C3C254E2AD"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-B7D94866-D31C-3537-856C-441495940354"><apiname>CMMFDevSound::PlayDTMFStringL(const TDesC &amp;) plays a
+                DTMF (Dual and Multi-Frequency)</apiname></xref> tone. </p> </li> <li id="GUID-31735F6E-1D36-5FDF-9529-3C8ACFBBCDEF"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-2B48CD01-DBD9-3669-8F79-0812FA03B0D3"><apiname>CMMFDevSound::PlayToneSequenceL(const TDesC8
+                &amp;)</apiname></xref> plays a sequence of tones. </p> </li> </ul> </context> <steps id="GUID-8F9CB81A-3BBF-54AB-8F9C-89AEFD4DDE0D"><step id="GUID-6BA1553A-4C68-5609-8B83-F858D7F7AD31"><cmd/><info><xref href="GUID-A748041F-5925-54F8-AA21-C1CE8E0473AA.dita">Playing a Tone</xref>   </info> </step> <step id="GUID-ADB09852-5E7E-5302-A524-93DDC07500B5"><cmd/><info><xref href="GUID-3AB05112-0580-5FD2-AD61-5721090062F8.dita">Playing a DTMF Tone</xref>   </info> </step> <step id="GUID-95BB7981-F0A5-510C-BEA5-EDED50C95258"><cmd/><info><xref href="GUID-12A754EE-7D90-56C8-BDA7-3293F34BE456.dita">Playing a Tone Sequence</xref>   </info> </step> <step id="GUID-1B30569A-B6C8-5CA8-8F3A-A19155E81B53"><cmd/><info><xref href="GUID-93EF4862-2395-5ED7-8446-A7FDA60535B1.dita">Playing a Fixed Tone Sequence</xref>   </info> </step> <step id="GUID-44CA5AE2-4DBD-5EF7-B66A-8804322423C8"><cmd/><info><xref href="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita">Pausing and Resuming a Tone</xref>   </info> </step> </steps> </taskbody><related-links><link href="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita"><linktext>Playing Audio Tutorial</linktext> </link> <link href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita"><linktext>Recording Audio
+                Tutorial</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-14BBFDA8-7765-5939-9E47-36E299841F50.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-14BBFDA8-7765-5939-9E47-36E299841F50" xml:lang="en"><title>How
+to use the cleanup stack</title><shortdesc>This document describes how to use the cleanup stack when a function
+leaves.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The cleanup stack is used as follows: </p>
+<ol id="GUID-BAC73597-5165-55A6-B5E7-12FA156785DF">
+<li id="GUID-9C056803-25F8-557C-B630-0B40D38EFABA"><p>Use <codeph>CleanupStack::PushL()</codeph> <b>  </b> to
+push a pointer to the object onto the cleanup stack before any operation which
+might leave is performed </p> </li>
+<li id="GUID-F5F7946D-9E99-54B7-AF13-C76317296442"><p>Use <codeph>CleanupStack::Pop()</codeph> to
+pop the pointer from the cleanup stack when all operations that might leave
+have completed </p> </li>
+</ol>
+<p>If a function leaves, then part of leave processing is to pop <i>and destroy</i> all
+objects on the cleanup stack. Thus, the cleanup stack may be used to prevent
+objects becoming orphaned if a leave occurs. </p>
+<codeblock id="GUID-4692E277-85DD-5178-B7AF-57539C9CA2E8" xml:space="preserve">void doExampleL()
+ {
+ // allocate with checking
+ CExample* myExample = new (ELeave) CExample;
+
+ // do something that cannot leave
+ myExample-&gt;iInt = 5; // cannot leave: no protection needed
+
+ // do something that can leave: use cleanup stack
+ CleanupStack::PushL(myExample); // pointer on cleanup stack
+ myExample-&gt;DoSomethingL(); // something that might leave
+ CleanupStack::Pop(); // it didn't leave: pop the pointer
+
+ // delete
+ delete myExample;
+ }</codeblock>
+<section id="GUID-9DCA8E7D-9F8B-4597-9743-1793458DCB9B"><title>Notes</title> <ul>
+<li id="GUID-AFBFF014-D03C-56A5-AA09-EB7BCF54A22A"><p>The cleanup stack is
+necessary here because the <codeph>CExample</codeph> would be orphaned on
+the heap if a leave occurred. This is because the <codeph>CExample</codeph> is
+referred to only by an automatic pointer <codeph>myExample</codeph>, which
+itself becomes orphaned on the stack when the leave occurs. If the <codeph>CExample</codeph> ’s
+address had been stored in an object which was <i>not</i> orphaned by the
+leave, then it would not be necessary to use the cleanup stack to ensure that
+it is cleaned up correctly. </p> </li>
+<li id="GUID-2B0103C5-991E-54AF-B21C-E68205212510"><p>The <codeph>CleanupStack::PushL()</codeph> operation
+itself may leave because more memory may be needed for more cleanup stack
+frames. It is guaranteed that the object is pushed to the stack before any
+attempt is made to allocate more stack space. Thus, a failure of <codeph>CleanupStack::PushL()</codeph> will
+cause the object that was being pushed to be cleaned up properly. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9" xml:lang="en"><title>Descriptor
+Example Code</title><shortdesc>Examples that explains how to use descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-A0CE5E5F-9436-5499-AB97-7D26B785BE2A"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-90645A43-313B-55FC-91D0-547C237B680B">BinaryData: handling general binary data with descriptors</xref>  </p> </li>
+<li id="GUID-B42110C1-038D-55E8-A6A3-390C357477C9"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-FC2B9B70-F849-5F19-9F3C-25D5FDCC576D">Buffer: basic buffer descriptors</xref>  </p> </li>
+<li id="GUID-E935308D-FB46-5113-A90E-FDFA134DBB2F"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-5040249B-55ED-5ACD-837B-6B0FD4AF24FE">InFunct: using descriptors in function interfaces</xref>  </p> </li>
+<li id="GUID-6C9C2E14-FEF8-5DA7-B9C5-70C356648F4A"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-CE601E1E-AF03-56E8-B7FB-0CDFF4EA4386">HeapBuffer: heap buffer descriptors</xref>  </p> </li>
+<li id="GUID-BD6288C3-B2F5-51FF-92DE-420019239E3F"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-C79042EB-4ACF-5972-9F57-E7C0F37DECF6">Modifier: modifiable descriptors</xref>  </p> </li>
+<li id="GUID-CC9EB05B-899D-5471-BD3D-D9BCF90CFC99"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-927CFF04-C0D1-5BDE-B221-4245113924F7">NonModifier: non-modifiable descriptors</xref>  </p> </li>
+<li id="GUID-A71AB00F-EEE9-5696-B91E-DB7781B50586"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-5AEFA6EB-A100-5B96-935D-2537EEFB56F5">Pointer: basic pointer descriptors</xref>  </p> </li>
+<li id="GUID-0D06F662-BF6C-5F29-A5EB-1F17D9455368"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-1636C0BB-9B23-5C47-8F26-CF080DBE64EB">WriteToFile: writes "Hello World!" to a file</xref>. </p> </li>
+</ul>
+<section id="GUID-90645A43-313B-55FC-91D0-547C237B680B"><title>BinaryData:
+handling general binary data with descriptors</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c4df8866-07d0-4b84-8715-6dacf56406ae.zip" scope="external">BinaryData .zip </xref>.</p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c4df8866-07d0-4b84-8715-6dacf56406ae.html" scope="peer"> browse </xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>The example
+shows how descriptors can handle general binary data by explicitly using the
+8 bit descriptor class variants <codeph>TBufC8&lt;TInt&gt;</codeph>, <codeph>TBuf8&lt;TInt&gt;</codeph>, <codeph>TPtr8</codeph> etc. </p> <p>Contrast
+this with examples where descriptors contain text. These examples almost always
+use the non-explicit forms <codeph>TBufC&lt;TInt&gt;</codeph>, <codeph>TBuf&lt;TInt&gt;</codeph>, <codeph>TPtr</codeph> etc;
+these are typedef'd to the 16 bit variant. </p><p><b>Class summary</b></p><p><xref href="GUID-78E993D5-A845-32B4-B41A-947ABEF16AA0.dita"><apiname>TBuf8</apiname></xref></p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-FC2B9B70-F849-5F19-9F3C-25D5FDCC576D"><title>Buffer: basic
+buffer descriptors</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-454779b7-0369-4010-8d98-8b0f11bad653.zip" scope="external">Buffer .zip </xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-454779b7-0369-4010-8d98-8b0f11bad653.html" scope="peer"> browse </xref> . View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>This example
+shows the basic idea of buffer descriptors and how they are used. </p><p><b>Class
+summary</b></p><p><xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf </apiname></xref>  <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC </apiname></xref>  <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC </apiname></xref> <xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr </apiname></xref> <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname> TDes</apiname></xref> </p> <p><b>Security issues</b> </p> <p>The example requires no specific
+capabilities in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-5040249B-55ED-5ACD-837B-6B0FD4AF24FE"><title>InFunct: using
+descriptors in function interfaces</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3c092b34-8554-49d7-9a0a-8b6eaeb6cbcf.zip" scope="external"> InFunct.zip </xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3c092b34-8554-49d7-9a0a-8b6eaeb6cbcf.html" scope="peer">browse</xref> . View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>This example
+shows how descriptors can be used in function interfaces. Specifically, it
+shows the use of: </p> <ul>
+<li id="GUID-2ABA16E0-95CB-5792-B08C-E26F45B27E2C"><p> <codeph>const TDesC&amp;
+aString</codeph>  </p> </li>
+<li id="GUID-E4787B9F-BC31-52D4-AD4E-1A7F72958CD8"><p> <codeph>TDes&amp;</codeph>  </p> </li>
+<li id="GUID-1DF4E7EB-1531-5CFD-882F-B9A38B1C58EC"><p> <codeph>const TDesC8&amp;
+aBuffer</codeph>  </p> </li>
+<li id="GUID-8FC40660-48C9-5A75-A9B6-37EA23C3F4CC"><p> <codeph>TDes8&amp;
+aBuffer</codeph>. </p> </li>
+</ul> <p>as function arguments. </p><p><b>Class summary</b></p><p> <xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf </apiname></xref> <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC </apiname></xref>  <xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr </apiname></xref> <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC </apiname></xref> <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname> HBufC</apiname></xref>  </p> <p><b>Security issues</b> </p> <p>The
+example requires no specific capabilities in order to run - and does not demonstrate
+any security issues. </p> </section>
+<section id="GUID-CE601E1E-AF03-56E8-B7FB-0CDFF4EA4386"><title>HeapBuffer:
+heap buffer descriptors</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-85049b4c-d60e-490d-bd13-78355faa760a.zip" scope="external">HeapBuffer .zip </xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-85049b4c-d60e-490d-bd13-78355faa760a.html" scope="peer"> browse </xref>.  View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>The example
+shows use of the <codeph>HBufC</codeph> heap buffer descriptor and: </p> <ul>
+<li id="GUID-92C829F9-9697-57B2-A4F7-BD9D9AC4DBBF"><p>how it can be created
+using the <codeph>HBufC::NewL()</codeph> static function </p> </li>
+<li id="GUID-EED79AF9-AA29-532A-83BD-63C5DBCDF0A0"><p>how it can be reallocated
+using the <codeph>ReAllocL()</codeph> function </p> </li>
+<li id="GUID-7CD4D38E-B726-58CA-8027-DE73CF415A8F"><p>how its data can be
+changed through a <codeph>TPtr</codeph> constructed by calling the <codeph>Des()</codeph> function </p> </li>
+</ul><p><b>class summary</b></p><p><xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC </apiname></xref> <xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr </apiname></xref> <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref> </p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-C79042EB-4ACF-5972-9F57-E7C0F37DECF6"><title>Modifier: modifiable
+descriptors</title> <p><b>Download</b> </p> <p>Click on the following link
+to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-46410e6f-1ea3-42db-8966-9870bd3659da.zip" scope="external">Modifier .zip </xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code:
+ <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-46410e6f-1ea3-42db-8966-9870bd3659da.html" scope="peer"> browse </xref>.  View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>The example
+shows the usage of descriptor functions which can modify the descriptor. These
+are the functions defined and implemented by the <codeph>TDes</codeph> class:
+for example <codeph>SetLength()</codeph>, <codeph>Copy()</codeph> and <codeph>Insert()</codeph>. </p><p><b>Class
+summary</b></p><p> <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes </apiname></xref> <xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf </apiname></xref> <xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr</apiname></xref>  </p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-927CFF04-C0D1-5BDE-B221-4245113924F7"><title>NonModifier:
+non-modifiable descriptors</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-9f4be784-fb23-4a66-9f7f-d44b28fe98c1.zip" scope="external">NonModifier .zip </xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code:
+ <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-9f4be784-fb23-4a66-9f7f-d44b28fe98c1.html" scope="peer"> browse </xref> . View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>The example
+shows the use of descriptor functions which do not modify the descriptor.
+These are the functions defined and implemented by the <codeph>TDesC</codeph> class;
+for example <codeph>Length()</codeph>, <codeph>Size()</codeph> and <codeph>Compare()</codeph>. </p><p><b>Class
+summary</b></p><p> <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC </apiname></xref> <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC </apiname></xref> <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname> TPtrC</apiname></xref>  </p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-5AEFA6EB-A100-5B96-935D-2537EEFB56F5"><title>Pointer: basic
+pointer descriptors</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-00b1bc4a-bf04-4964-81b0-82cbbf393a03.zip" scope="external">Pointer .zip </xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code:
+ <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-00b1bc4a-bf04-4964-81b0-82cbbf393a03.html" scope="peer"> browse </xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p><p><b>Description</b> </p> <p>The example shows
+the basic idea of pointer descriptors and how they are used. </p><p><b>Class
+summary</b></p><p> <xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr </apiname></xref><xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC </apiname></xref> <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8 </apiname></xref> <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref>  </p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-1636C0BB-9B23-5C47-8F26-CF080DBE64EB"><title>WriteToFiles:
+writes:"Hello World!" to a file</title> <p><b>Download</b> </p> <p>Click on
+the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4a96349b-7287-40b7-99dd-64f3a2dc20a3.zip" scope="external">WriteToFiles .zip </xref></p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the example code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4a96349b-7287-40b7-99dd-64f3a2dc20a3.html" scope="peer"> browse </xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>This writes
+the text "Hello World!" to a file. It is used as the basis of all examples
+which depend on just the Base and the file server. </p><p><b>Class summary</b></p><p><xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname> RFs </apiname></xref>  <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile </apiname></xref>  <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User </apiname></xref>  <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref>  </p> <p><b>Security issues</b> </p> <p>The
+example writes files to the executable's process private directory: <filepath>C:\private\0FFFFF00\</filepath>. </p> <p>The
+second UID in the <filepath>.mmp</filepath> file is defined as <codeph>0x0FFFFF00</codeph> and
+this is used as the secure ID on which the name of the private directory is
+based. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1501D056-D068-5DE4-9408-17B530D75FC3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1501D056-D068-5DE4-9408-17B530D75FC3"><title>How to implement scrolling</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The code in this section demonstrates horizontal and vertical scrolling using <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-12D47A64-3236-37D0-9513-1B1ED817679A"><apiname>CTextView::ScrollDisplayL()</apiname></xref>. This function can be used to scroll text horizontally (left or right and to the start or end of a <keyword>line</keyword>), and vertically (page or line up, page or line down). Note that scrolling down means that the text appears to move upwards, scrolling left means it appears to move rightwards.</p> <section><title>Scroll left</title> <p>The following code scrolls the display left by 40 pixels, causing the text to move right. If no horizontal scroll jump value is set, the scroll jump will be the default value of 20 pixels.</p> <codeblock id="GUID-5FAEF14C-D6B9-54B3-A343-57BC9677DAFD" xml:space="preserve">iTextView-&gt;SetHorizontalScrollJump(40); // scroll jump is 40 pixels
+iTextView-&gt;ScrollDisplayL(TCursorPosition::EFLeft); // scroll left</codeblock> </section> <section><title>Scroll down</title> <p>The following example scrolls the display downwards. </p> <ul><li id="GUID-06405640-5C83-56BD-AAB4-58FEB4A5F27A"><p>Use <codeph>ScrollDisplayL()</codeph> until the end of the document is reached, at which point <codeph>ScrollDisplayL()</codeph> returns zero.</p> </li> <li id="GUID-83C0BCD3-0F16-5AE4-BCCD-2531F1D287CA"><p>Here, the scroll includes blank space (the second argument is <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita#GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF/GUID-6B04A5DA-7AE9-3E57-B9C8-F429995CD44E"><apiname>CTextLayout::EFAllowScrollingBlankSpace</apiname></xref>), so scrolling continues until the last line in the document reaches the top of the display. By default, blank space is not scrolled, in which case the scroll ends when the last line appears at the bottom of the display.</p> </li> </ul> <codeblock id="GUID-37067073-ED67-5E5C-B437-5A1FC8444076" xml:space="preserve">TInt pixelsScrolled;
+do pixelsScrolled=iTextView-&gt;ScrollDisplayL
+    (TCursorPosition::EFLineDown,CTextView::EFAllowScrollingBlankSpace);
+while (pixelsScrolled);</codeblock> <p><b>Note</b> </p> <ul><li id="GUID-7C8BFA2E-8ABC-58ED-8B4B-04CB199596B9"><p>Vertical scrolling can also be carried out using <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-58307513-AAFA-3984-A603-B8CD94637804"><apiname>CTextView::ScrollDisplayPixelsL()</apiname></xref>, <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-A06D2AE8-2470-3CC2-B115-F645234A76C9"><apiname>CTextView::ScrollDisplayLinesL()</apiname></xref>, or <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-7EFDA6BC-161B-3219-911A-5994FEC714FD"><apiname>CTextView::ScrollDisplayParagraphsL()</apiname></xref> to move the text by a number of pixels, lines and paragraphs respectively.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-152B5CE8-B689-5E99-885F-79FB0654B7D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-152B5CE8-B689-5E99-885F-79FB0654B7D6" xml:lang="en"><title>Reference</title><shortdesc>This section provides reference information for the Serial Communications Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-152BF5C3-CE32-5174-A043-1B2D5D8168C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-152BF5C3-CE32-5174-A043-1B2D5D8168C3"><title>Media Client Video Display Tutorial</title><shortdesc>This tutorial introduces how to use the Media Client Video Display library for different functions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-5651699A-CC2F-514F-848E-5FF6B8F5F886"><p>Before you start: </p> <ul><li id="GUID-536C284E-1CFE-525A-9D4C-DCF5B3DD653C"><p>Understand the <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview </xref>. </p> </li> <li id="GUID-843063AD-E283-5681-9677-89C030EAC581"><p>Understand the concept of <xref href="GUID-B54E84A4-2F81-57C2-BEDC-48C6B3F6A023.dita">Video Player Utility 2 Tutorials </xref>. </p> </li> </ul> </prereq> <context id="GUID-04B39912-E914-547C-B974-BBEFD297819E"><p>The <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita"><apiname>CMediaClientVideoDisplay</apiname></xref> class is used to provide video display functionality for the video client APIs. The <codeph>CMediaClientVideoDisplay</codeph> class allows you to use as a standalone video display APIs from the client utilities. </p> </context> <steps-unordered id="GUID-6CAAFEE1-F967-5631-A6FD-AD9686DD92A7"><step id="GUID-7E21CFFA-72DA-51F8-9AAC-A3A9F8EA0E36"><cmd/><info>  Displaying video data  </info> <info>To display new video data on a window, call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-6D68FC67-9CA5-3ABD-9836-E4C630F4EAE8"><apiname>CMediaClientVideoDisplay::NewL(TInt)</apiname></xref> to initialize a new instance of the video client data. </info> <info>If you have already created the graphics surface with <codeph>TSurfaceId</codeph>, you must call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-32393101-A81D-3E77-865F-906C5C49AFBF"><apiname>CMediaClientVideoDisplay::NewL(TInt,const TSurfaceId &amp;,const
+                TRect &amp;,TVideoAspectRatio)</apiname></xref> to intialize a new instance of the video client data. </info> </step> <step id="GUID-020D0B83-A5DF-5A4D-BC36-233506158D61"><cmd/><info> Assigning values to the video surface parameters  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-1E6476BF-0D49-3B89-A46E-12A25C235D0A"><apiname>CMediaClientVideoDisplay::SurfaceCreated(const
+                TSurfaceId &amp;,const TRect &amp;,TVideoAspectRatio,const TRect
+                &amp;)</apiname></xref> to assign values to the following video surface parameters: </info> <substeps id="GUID-B9C8B568-85EC-5FCA-B936-3D6CB5364342"><substep id="GUID-5236372A-78CB-5ACE-9441-7CA92184E316"><cmd/><info>Surface ID (Identity) </info> </substep> <substep id="GUID-42C01E46-B169-5385-9698-B264919D0025"><cmd/><info>Dimensions of the crop rectangle for the video image </info> </substep> <substep id="GUID-47AF38B4-8BF0-515C-B977-EBDE78A69174"><cmd/><info>Pixel aspect ratio that is defined by the <xref href="GUID-1D3336FD-853E-3AD4-8F82-4A066F1C3F16.dita"><apiname>TVideoAspectRatio</apiname></xref> function. </info> </substep> <substep id="GUID-B352BD3C-9980-55C4-B4E0-406780EE8A3C"><cmd/><info>Dimensions of the crop region for the video image </info> </substep> </substeps> <info>If the video surface parameter changes, you can call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-EAF9E995-8A54-34FB-8D65-0ECDDB90C2AF"><apiname>CMediaClientVideoDisplay::SurfaceParametersChanged(const TSurfaceId
+                &amp;,const TRect &amp;,TVideoAspectRatio)</apiname></xref> to assign the changed values. </info> </step> <step id="GUID-8CFFA728-593B-5395-B0FA-F78F1BCF9D28"><cmd/><info> Removing the graphics surface  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-E884FCBE-7A8C-3C2C-A731-75CED072FF93"><apiname>CMediaClientVideoDisplay::RemoveSurface()</apiname></xref> to remove the graphics surface that is not needed for the video display. </info> </step> <step id="GUID-315A56C1-CA80-5FCB-85B2-2310E0344B30"><cmd/><info> Adding a new window  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-17152DEB-CC1D-364F-8410-A3A75EF0F1CA"><apiname>CMediaClientVideoDisplay::AddDisplayWindowL(const
+                RWindowBase *,const TRect &amp;,const TRect &amp;,const TRect
+                &amp;,TReal32,TReal32,TVideoRotation,TAutoScaleType,TInt,TInt,RWindow
+                *)</apiname></xref> to add a new window for displaying the video picture. </info> </step> <step id="GUID-DBBC17CD-34AE-5B0A-BF4C-80DC081F57D0"><cmd/><info> Redrawing the window  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-BBCDE8A8-0224-3493-BC95-675F376ECE63"><apiname>CMediaClientVideoDisplay::RedrawWindows(const TRect
+                &amp;)</apiname></xref> to redraw all the windows with new crop region. </info> </step> <step id="GUID-976C1F80-1BC9-5419-8E23-48D182499D0D"><cmd/><info>  Setting the video data for automatic scaling   </info> <info>To set the video data for automatic scaling: </info> <substeps id="GUID-96791692-1CDC-5B3C-8C65-96D78C6F8B95"><substep id="GUID-D42089A3-BCED-59C5-9C0F-DA4334657424"><cmd/><info>If the new window is displayed, you can then call the <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-AC2CC1B8-4FAA-3DCB-A06E-E40FC045C1D8"><apiname>CMediaClientVideoDisplay::SetAutoScaleL(const RWindowBase
+                     &amp;,TAutoScaleType,TInt,TInt,const TRect &amp;)</apiname></xref> function. </info> <info>When automatic video scaling is active, the video image is scaled automatically to match the video window, based on the scaling type, and positioned according to the video data parameters. </info> <info> Note: All video controller do not support automatic scaling. </info> </substep> <substep id="GUID-C8E3293B-783D-5899-9BA6-06748FC9A7EC"><cmd/><info>When the video data is already opened, you can call the <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-505F47B8-017D-3986-B736-A5A792E4EB1D"><apiname>CMediaClientVideoDisplay::SetAutoScaleL(TAutoScaleType,TInt,TInt,const
+                     TRect &amp;)</apiname></xref> function. </info> <info>This function related to the function <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita#GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F/GUID-0E2F30EE-470C-306D-991A-2C9FF9EA53D6"><apiname>CVideoPlayerUtility2::SetAutoScaleL(const RWindow
+                     &amp;,TAutoScaleType)</apiname></xref> in <codeph>CVideoPlayerUtility2</codeph>. </info> </substep> </substeps> </step> <step id="GUID-A3B52D02-956C-59EA-868B-0D1A0341AC7C"><cmd/><info> Setting the video data for specified scaling  </info> <info>To scale the video image for a specified dimension from its original size within the window: </info> <substeps id="GUID-9A73D43A-6442-54BC-B440-FD4F3A746A0C"><substep id="GUID-8652B266-1BB1-5C6A-8BAD-DDB163BEFB38"><cmd/><info>If you open a new window, you can then call the <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-521D0999-54A6-32A8-889E-1350EA329055"><apiname>CMediaClientVideoDisplay::SetScaleFactorL(const RWindowBase
+                     &amp;,TReal32,TReal32,const TRect &amp;)</apiname></xref> function. </info> </substep> <substep id="GUID-8797660F-EE6E-5B39-8DBE-6D1A950F6894"><cmd/><info>When the video clip is already opened, you can then call the <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-AA3EF745-AE8E-3542-ADDD-83137C936C48"><apiname>CMediaClientVideoDisplay::SetScaleFactorL(TReal32,TReal32,TBool)</apiname></xref> function. </info> </substep> </substeps> </step> <step id="GUID-8B2D922A-2B36-5D76-909B-ED4FB7479B12"><cmd/><info> Retrieving the scale feature  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-A3C8860D-1543-32A1-8B7F-76EE5244A042"><apiname>CMediaClientVideoDisplay::GetScaleFactorL(const
+                RWindowBase &amp;,TReal32 &amp;,TReal32 &amp;)</apiname></xref> to retrieve the scale feature currently set for a window. </info> <info>This function is preferred to use with <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref>. </info> </step> <step id="GUID-934AA6AD-61C2-5011-8822-CB64FCB2A0D6"><cmd/><info> Rotating the video image  </info> <info>To rotate the video image within the window: </info> <substeps id="GUID-9B8DD422-3E6F-501D-A3F4-9346ABBCD949"><substep id="GUID-DC485027-3710-5FC9-AEBE-855BD830D0A7"><cmd/><info>If the new window is displayed, you can then call the <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-9CEEAEDA-8644-32CF-B99F-20F3DFD17AB8"><apiname>CMediaClientVideoDisplay::SetRotationL(const RWindowBase
+                     &amp;,TVideoRotation,const TRect &amp;)</apiname></xref> function. </info> </substep> <substep id="GUID-16F9CD4D-27F5-5B34-8804-EC822CF51258"><cmd/><info>When the video data is already opened, you can call the <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-5CDEB3B0-3995-3943-B924-A17B7CFC64EF"><apiname>CMediaClientVideoDisplay::SetRotationL(TVideoRotation,const TRect
+                     &amp;)</apiname></xref> function. </info> </substep> </substeps> <info>Both the rotation functions can replace the function <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita#GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F/GUID-0E906869-D5BD-3548-BEE3-8B4C46EDDF6C"><apiname>CVideoPlayerUtility2::SetRotationL(const RWindow
+                &amp;,TVideoRotation)</apiname></xref> in <codeph>CVideoPlayerUtility2</codeph> and the function <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-8352B854-9B4F-37E9-9012-3F932F06ADF3"><apiname>CVideoPlayerUtility::SetRotationL(TVideoRotation)</apiname></xref> in <codeph>CVideoPlayerUtility</codeph>. </info> </step> <step id="GUID-7CE53CF1-0AF2-5205-955D-7846FB4CA860"><cmd/><info> Retrieving the rotation feature  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-23B20C1C-21C1-326B-85E9-2E1DD09455E7"><apiname>CMediaClientVideoDisplay::RotationL(const
+                RWindowBase &amp;)</apiname></xref> to retrieve the video rotation set for a window. </info> <info>This function is preferred to use with <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref>. </info> </step> <step id="GUID-8DC62749-D9DB-5DAC-819F-461DBB6D208E"><cmd/><info> Clipping the window  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-EED73482-1C5A-346D-978A-57914638DB26"><apiname>CMediaClientVideoDisplay::SetWindowClipRectL(const
+                RWindowBase &amp;,const TRect &amp;,const TRect &amp;)</apiname></xref> to set the window clipping rectangle that is relative to the window. </info> </step> <step id="GUID-F8D597D1-1ECD-5E15-A542-566CAF46BD3D"><cmd/><info> Setting the video extension  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-1C883167-72AE-37B1-A5B7-4AF9C696D889"><apiname>CMediaClientVideoDisplay::SetVideoExtentL(const
+                RWindowBase &amp;,const TRect &amp;,const TRect &amp;)</apiname></xref> to set the video extension on the screen that is relative to the window. </info> </step> <step id="GUID-523A2133-9E31-54D0-92E3-63D031D27254"><cmd/><info> Removing the window  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-B55A9003-4C22-38F3-AF23-7DE3A1B3E5B1"><apiname>CMediaClientVideoDisplay::RemoveDisplayWindow(const
+                RWindowBase &amp;)</apiname></xref> to removes a window that is currently being used to display the video picture. </info> </step> <step id="GUID-4EE90AA5-91C8-5D31-97F1-696BE2695E32"><cmd/><info> Closing the video data  </info> <info>Call <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita#GUID-2BE86C43-A982-39BC-B881-C190966A7E77/GUID-A0372F30-C805-340B-BC0F-635622FFFB26"><apiname>CMediaClientVideoDisplay::~CMediaClientVideoDisplay()</apiname></xref> to close the video data instance before you leave the <codeph>CMediaClientVideoDisplay</codeph> function. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D.dita"><linktext>Video Player Utility
+                Tutorials</linktext> </link> </related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e153880_href.png has changed
Binary file Symbian3/SDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e319026_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B"><title>Target Types</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-2254E482-D730-5661-9878-6B90F17977F4"><p><xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation of STDEXE, STDDLL and STDLIB</xref>  </p> </li> <li id="GUID-F57FF724-6A83-5746-B85E-7548B8BD911A"><p><xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-801FC48D-BCE4-51A1-8D27-F66505A6C6AA">WCHARENTRYPOINT - new keyword</xref>  </p> </li> <li id="GUID-D9117869-204F-51ED-8E40-F6D5F4D5889B"><p><xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-21D63C00-362C-50AE-BCAF-65572BF23F5E">External functions and symbols exported by default</xref>  </p> </li> </ul> <section id="GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B"><title>Generation of STDEXE, STDDLL and STDLIB</title> <p>The introduction of two new Symbian platform target types, <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph>, was required to enable the specific options for compilers and linkers to generate P.I.P.S. executables. </p> <p>P.I.P.S. executables are implemented using native Symbian platform executables linked statically to the glue code. The target types <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> make symbol information available for lookup by name. </p> <p>For each new target type the following library files, system files and include paths are included <i>by default</i>. The table below shows the additional libraries and paths for the new target types. </p> <table id="GUID-8C82882E-0F2A-5CD0-B318-04FD5FC88A01"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><tbody><row><entry><p> <b>Target Type</b>  </p> </entry> <entry><p> <b>File/Path</b>  </p> </entry> <entry><p> <b>Purpose</b>  </p> </entry> </row> <row><entry><p> <codeph>STDEXE</codeph>  </p> </entry> <entry><p> <filepath>libcrt0.lib</filepath>  </p> </entry> <entry><p>Multithreaded 'glue code' library. Provides the <xref href="GUID-92602438-C8AC-3E15-ABB1-DCB8E8771E0C.dita"><apiname>E32Main()</apiname></xref> entry point for a <filepath>.exe</filepath> that uses the char <xref href="GUID-13E4A48A-07DB-34E6-B220-C4B134D6DF13.dita"><apiname>main()</apiname></xref> function. </p> </entry> </row> <row><entry><p> <codeph>STDEXE</codeph>  </p> </entry> <entry><p> <filepath>libwcrt0.lib</filepath>  </p> </entry> <entry><p>Multithreaded 'glue code' library. Provides the <codeph>E32Main()</codeph> entry point for a <filepath>.exe</filepath> that uses the wide char <codeph>main()</codeph> function. </p> </entry> </row> <row><entry><p> <codeph>STDEXE</codeph> | <codeph>STDDLL</codeph> | <codeph>STDLIB</codeph>  </p> </entry> <entry><p> <filepath>euser.lib</filepath>, <filepath>backend.lib</filepath>  </p> </entry> <entry><p>Fundamental libraries that are linked by default for <codeph>STDEXE</codeph> s and <codeph>STDDLL</codeph> s. </p> </entry> </row> <row><entry><p> <codeph>STDEXE</codeph> | <codeph>STDDLL</codeph> | <codeph>STDLIB</codeph>  </p> </entry> <entry><p> <filepath>\epoc32\include\stdapis</filepath>  </p> </entry> <entry><p>Location of standard header files for P.I.P.S.. </p> </entry> </row> </tbody> </tgroup> </table> <p>The new target types for P.I.P.S. are <codeph>STDEXE</codeph>, <codeph>STDDLL</codeph> and <codeph>STDLIB</codeph> (<codeph>STDLIB</codeph> s are the P.I.P.S. static libraries). For <codeph>STDLIB</codeph> s, the user need not annotate source with <xref href="GUID-2F78C3AC-7330-34C0-8A83-75D7345F2DC8.dita"><apiname>EXPORT_C</apiname></xref> or <xref href="GUID-BD292953-36BF-3C7D-AA93-98E6CB38968E.dita"><apiname>IMPORT_C</apiname></xref>. All symbols with <codeph>extern</codeph> linkage are: </p> <ol id="GUID-9D6A6BB0-C2DC-50F5-B5D4-97CBD381D10A"><li id="GUID-7828C346-6ED2-5B6A-B89D-12D988FED39E"><p>exported if they are defined in the module, and </p> </li> <li id="GUID-42BFE700-719A-5DE9-8732-30E82DBAE304"><p>imported if they are referred to but not defined. </p> </li> </ol> <p>The compiler marks the symbols imported/exported for <codeph>STDLIB</codeph> s, while for native Static Libraries the user explicitly needs to specify <codeph>EXPORT_C</codeph> /<codeph>IMPORT_C</codeph>. </p> </section> <section id="GUID-801FC48D-BCE4-51A1-8D27-F66505A6C6AA"><title>WCHARENTRYPOINT - new keyword</title> <p>The user should include the new keyword <codeph>WCHARENTRYPOINT</codeph> in MMP files to select the <xref href="GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita#GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D/GUID-49C7F951-8317-5F41-B1B9-9F7B8803E655">Glue code (CRT0)</xref> library for the wide char main entry point, <filepath>libwcrt0.lib</filepath>. This option is valid only for the <codeph>STDEXE</codeph> target type and will be ignored if used with other target types. </p> </section> <section id="GUID-21D63C00-362C-50AE-BCAF-65572BF23F5E"><title>External functions and symbols exported by default </title> <p>With a <codeph>STDDLL</codeph> library, functions and data with external linkage are exported by default, without any requirement for the <xref href="GUID-BD292953-36BF-3C7D-AA93-98E6CB38968E.dita"><apiname>IMPORT_C</apiname></xref> and <xref href="GUID-2F78C3AC-7330-34C0-8A83-75D7345F2DC8.dita"><apiname>EXPORT_C</apiname></xref> declarations in header or source files. It is important to note that in the Linux world all symbols with external linkage are visible outside a shared object. </p> <p>When porting C APIs to Symbian platform, the user should use the new <codeph>STDDLL</codeph> target type to indicate to the tool chain that all functions and global data should be exported. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C"><title>Feature Manager Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Feature Manager component is a set of classes used to manipulate feature flags. </p> <section id="GUID-66C95D4D-FC7C-5EFE-973B-9E8A4C4A9D37"><title>About Feature Manager</title> <p>Third party developers using the SDK only have the ability to report the availability of features. </p> <p>Feature Manager supersedes the component Feature Registry in earlier versions of Symbian platform. Feature Manager has the capacity to modify feature flags at runtime. Feature Registry lacked this capacity and is now deprecated. </p> </section> <section><title>What is a feature?</title> <p>A feature can be any item of functionality supplied with a phone. Examples of features include: </p> <ul><li id="GUID-8261F6C0-96CE-5289-AE5A-E01186381264"><p>the presence or absence of particular hardware, for instance the presence of an MMC slot, </p> </li> <li id="GUID-9E687D45-9E86-5714-909E-7BF0237F9C29"><p>the presence or absence of a particular software component, DLL or individual function, or </p> </li> <li id="GUID-CAA18099-322C-562B-B2DE-2DA89DA5DD8D"><p>the presence or absence of a network connection. </p> </li> </ul> </section> <section><title>How is a feature included?</title> <p>A feature may be included on a phone in various ways: </p> <ul><li id="GUID-1C060016-4961-5B7D-B3B7-98D6E7054770"><p>at phone build time, </p> </li> <li id="GUID-8B617BE1-E593-5866-A142-51C3AFC5A694"><p>when software is installed after the build, or </p> </li> <li id="GUID-7BAC9528-9E7C-577E-AD49-9D8949CCF7E8"><p>when functionality such as a connection is discovered at run time. </p> </li> </ul> <p>Features may be queried, enabled, disabled and modified. </p> </section> <section><title>What functionality is supplied with Feature Manager?</title> <p>Two subsets of functionality are published: a minimal one for third parties is supplied with the SDK, and a fuller one is published to Symbian partners. The third party SDK requires the <xref href="GUID-2C9E6E72-2858-37A1-9D43-4E8086569520.dita"><apiname>CFeatureDiscovery</apiname></xref> class to be used, while partners also have the <xref href="GUID-F6AAAC24-4A62-383A-86C6-2E46335C3FD4.dita"><apiname>RFeatureControl</apiname></xref>. WriteDeviceData capability is required to use <xref href="GUID-F6AAAC24-4A62-383A-86C6-2E46335C3FD4.dita"><apiname>RFeatureControl</apiname></xref> to modify feature flags. </p> </section> <section><title>How are features represented?</title> <p>Every feature is assigned a unique Uid which the Feature Manager API uses to access it. Full data about a feature is held in the class <codeph>TFeatureEntry</codeph>, which contains the Uid, the status of the feature, and feature data. </p> <p>The status of a feature is the availability of the feature. A feature may be: </p> <ul><li id="GUID-6E9A9A6A-A19C-5C91-8B81-55A0131B5D29"><p>supported, meaning that the feature is present or supported on the device, </p> </li> <li id="GUID-261E84FE-2D0A-5064-A3C5-30B0B68DDC1A"><p>modifiable, meaning that the feature may be modified using the API, </p> </li> <li id="GUID-57C9C783-C20B-514A-A369-4A55B44AB61F"><p>blacklisted, meaning that the feature is frozen and may not be overridden in later ROM section, or via a plugin, or through the API, </p> </li> <li id="GUID-1D89C433-7B80-595F-8FDE-E549321748DC"><p>uninitialised, meaning that the supported status was not set at device creation, and </p> </li> <li id="GUID-5AC6A30E-BCD4-5E00-A859-284E2CEBF10F"><p>persisted, meaning that the feature will be persisted so as to be restored on restart. </p> </li> </ul> <p>The status of a feature is represented by a 32-bit integer whose bits are boolean flags named in the enumeration <codeph>TFeatureFlags</codeph>. Some combinations of features cannot be true simultaneously either at build time or run time: for instance <codeph>EFeatureUninitialised</codeph> is incompatible with <codeph>EFeatureModifiable</codeph> or <codeph>EFeaturePersisted</codeph>. </p> <p>Feature data is user-defined data referring to the feature. Feature data is held in a 32-bit integer which is usually a reference to a repository or database. </p> <p>A group of features is represented by an array. The individual features may be identified simply by their Uids, in which case you use the data type <xref href="GUID-E8FE48BB-6832-3B20-9814-72BE01198EEF.dita"><apiname>RFeatureUidArray</apiname></xref>, which is an array of <codeph>TUid</codeph>. They may also be represented as <xref href="GUID-80C51259-F2C4-3877-97B4-EC0C85DE93DE.dita"><apiname>TFeatureEntry</apiname></xref> objects, in which case you use the data type <xref href="GUID-144E257F-A162-3680-B1C5-C28BEAA902BC.dita"><apiname>RFeatureArray</apiname></xref>, which is an array of <xref href="GUID-80C51259-F2C4-3877-97B4-EC0C85DE93DE.dita"><apiname>TFeatureEntry</apiname></xref> objects. </p> </section> <section><title>How are features queried and modified?</title> <p>Feature Manager provides two classes which you use to interface to the feature tags database to query the existence and status of a feature: </p> <ul><li id="GUID-6C2888F0-9BDB-5AF0-9AB3-2CCB17CE3369"><p> <codeph>CFeatureDiscovery</codeph>  </p> </li> <li id="GUID-055FCE12-03D9-5DAE-9686-51A12C2DA3E0"><p> <codeph>RFeatureControl</codeph>  </p> </li> </ul> <p> <codeph>CFeatureDiscovery</codeph> is an active object which can only be used to query features and is supplied to third-party developers. <codeph>RFeatureControl</codeph> is used to query features and to modify their status and associated data: it is only supplied to Symbian partners. Both classes use Uids and <codeph>TFeatureEntry</codeph> to access feature data. <codeph>RFeatureControl</codeph> is always used dynamically: that is you must construt an instance and call its functions within the lifetime of that instance. <codeph>RFeatureControl</codeph> has more powerful functionality but <codeph>CFeatureDiscovery</codeph> allows static calls which can be more efficient. <codeph>CFeatureDiscovery</codeph> must only be used by clients which can support leaving code: otherwise they must use <codeph>RFeatureControl</codeph>. </p> </section> <section><title>Notification of change to features</title> <p>The capability to modify feature status and feature data at runtime creates the need for notification of such changes. <codeph>CFeatureNotifier</codeph> provides functions to set up and cancel notification of various types of change to a given feature. The interface <codeph>MFeatureObserver</codeph> defines functionality for handling changes: the exact way in which change is handled depends on the implementation. The notification functions of <codeph>RFeatureControl</codeph> are called from within an implementation of <codeph>MFeatureObserver</codeph>. </p> </section> </conbody><related-links><link href="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita"><linktext>Feature Manager Client
+                Overview</linktext> </link> <link href="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita"><linktext>Feature Discovery Overview</linktext> </link> <link href="GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita"><linktext>Feature Manager Server Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-157445C2-BFF7-5733-B87C-CC249D8506CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-157445C2-BFF7-5733-B87C-CC249D8506CD"><title>Style behaviour</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The style of a paragraph may be changed with a call to the function <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita#GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934/GUID-FDED0ADC-0490-3003-9A4E-137EE52626B4"><apiname>CRichText::ApplyParagraphStyleL()</apiname></xref>. This function may also optionally remove the specific paragraph or character formatting that exists on the specified paragraphs. Do this by specifying an appropriate value for the <xref href="GUID-37304E7C-A6B0-3766-B4C3-0A40EEF40018.dita#GUID-37304E7C-A6B0-3766-B4C3-0A40EEF40018/GUID-1D487E84-C2AB-3970-B595-623830FEF873"><apiname>CParagraphStyle::TApplyParaStyleMode</apiname></xref> argument.</p> <p>Where specific formatting exists on a paragraph that has a style applied, the specific formatting always overrides the style formatting. For example, if the style sets bold character formatting and right-alignment of the paragraph, specific character formatting can be used to specify certain parts of the text as non-bold, and specific paragraph formatting can set the alignment to centre-aligned.</p> <p>Two styles may not simultaneously apply to one paragraph. The style applied first will cease to apply as soon as the second style is applied.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0" xml:lang="en"><title>Application Architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Application Architecture (APPARC) manages and registers applications with the device and provides access to a cached list of applications, and their properties. APPARC also provides support for the server applications which can be invoked to provide services as that of server.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-15967AB3-B03C-5DAA-A784-D25ABFFC995E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-15967AB3-B03C-5DAA-A784-D25ABFFC995E" xml:lang="en"><title>File
+Stores example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>These examples demonstrate aspects of streaming and file stores. </p>
+<section><title>Download</title> <p>Download the examples: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-9f94a7e6-3189-40ed-abfd-65ee28cba96c.zip" scope="external">WriteDirectFS.zip</xref>, <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-756e5358-63aa-4a1a-927f-363114b2c8e3.zip" scope="external">WritePermFS1.zip</xref> and <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-85ccfa50-732b-4080-993e-f6b025543326.zip" scope="external">WritePermFS2.zip</xref></p><p>Download the additional
+files required for all the examples: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref>.</p> </section>
+<section id="GUID-8C6125A5-AB9A-5D5D-BED6-7EE040400CA4"><title>WriteDirectFS:
+externalising a network of objects to a direct file store</title> <p><b>Example
+code</b> </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-9f94a7e6-3189-40ed-abfd-65ee28cba96c.html" scope="peer">browse</xref> to view the example code.</p><p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">CommonFramework</xref>.</p> <p><b>Description</b> </p> <p>This
+example externalises a network of objects to a direct file store and then
+internalises them again. It demonstrates the persistence of a direct file
+store and the idea of the root stream. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+<li><p><xref href="GUID-8B713854-7858-3E02-8A1C-B3E6C1C9EA85.dita"><apiname>CDirectFileStore</apiname></xref> - Direct file store.</p></li>
+</ul> </section>
+<section id="GUID-BB30B109-E407-5253-841F-5BBBA4079A06"><title>WritePermFS1:
+externalising a network of objects to a permanent file store</title> <p><b>Example
+code</b> </p><p> Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-756e5358-63aa-4a1a-927f-363114b2c8e3.html" scope="peer">browse</xref> to view the example code.</p> <p><b>Description</b> </p> <p>This
+example constructs and writes a network of objects to a permanent file store.
+Each object is then loaded back in, one at a time, its content displayed at
+the console and then destroyed. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+<li><p><xref href="GUID-A61CA45C-B19A-33FC-8233-76530DCDF03C.dita"><apiname>CPermanentFileStore</apiname></xref> - Permanent file store.</p></li>
+</ul> </section>
+<section id="GUID-394D948C-13AB-505F-97E8-5AB3DCAEED45"><title>WritePermFS2:
+externalising a network of objects to a permanent file store</title> <p><b>Example
+code</b> </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-85ccfa50-732b-4080-993e-f6b025543326.html" scope="peer">browse </xref> to view the example code.</p><p><b>Description</b> </p> <p>This
+example shows further use of a permanent file store. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+<li><p><xref href="GUID-A61CA45C-B19A-33FC-8233-76530DCDF03C.dita"><apiname>CPermanentFileStore</apiname></xref> - Permanent file store.</p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-15A686A8-942E-54F8-BFD4-402323979C5A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-15A686A8-942E-54F8-BFD4-402323979C5A"><title>Message Services</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A service is an abstraction that collects settings information—usually to set up communication protocols, such as ISP settings—and specific folders for a single instance of an MTM. The behaviour can be different in different MTMs. For example, for SMTP a service typically relates to a single mail account. </p> <p>If a service can contain entries, opening the service from within a message client application should display these entries. </p> <p>Users can normally edit service settings using a dialog. It is up to the MTM to provide a dialog for entering and editing settings, and to store them in a suitable stream. In order that settings can be easily accessed both by server-side and client-side MTM components, the code to store and access settings is normally implemented in a separate library. </p> <p>If the user no longer wants to send or retrieve messages using the service, the user can delete a service entry, which deletes the settings associated with it are removed. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484-master.png has changed
Binary file Symbian3/SDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e313553_href.png has changed
Binary file Symbian3/SDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e17282_href.png has changed
Binary file Symbian3/SDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e94885_href.png has changed
Binary file Symbian3/SDK/Source/GUID-15F35B7F-8CDD-49BA-A015-475C0F6221B8_d0e54972_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1614B24F-5DB2-43AA-9A18-723BD61B8B4C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1614B24F-5DB2-43AA-9A18-723BD61B8B4C" xml:lang="en"><title>Handling
+key events in your application</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The application framework offers key events to UI controls on the control
+stack by calling <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aOfferKeyEventL%28const%20TKeyEvent%20%26amp%3b%2cTEventCode%29" format="application/java-archive"><parmname>CCoeControl::OfferKeyEventL()</parmname></xref> for each
+UI control until the key event is consumed or until there are no more UI controls
+on the control stack. To handle an event in a UI control, you must override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aOfferKeyEventL%28const%20TKeyEvent%20%26amp%3b%2cTEventCode%29" format="application/java-archive"><parmname>CCoeControl::OfferKeyEventL()</parmname></xref>. If a UI
+control is a compound control, then forward key events to other controls within
+the compound control. The control that consumes the event must be a <xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">window-owning control</xref>.
+An example of an implementation is as follows:</p>
+<codeblock id="GUID-D93EBAD0-6C04-4E97-ABE2-9999EAA6F442" xml:space="preserve">KeyResponse CMyAppView::OfferKeyEventL(const TKeyEvent&amp; aKeyEvent, TEventCode aType)
+    {
+    TKeyResponse response = EKeyWasNotConsumed;
+    //Check first that event type is EEventKey. It could be also
+    //EEventKeyUp or EEventKeyDown which just inform that some key
+    // is pressed or released.
+    if( aType == EEventKey )
+        {
+        // Take out the code of the key
+        TInt code = aKeyEvent.iCode;
+        TBuf&lt; KMessageLength &gt; buf;
+        buf.AppendNum( code );
+        // Show the code
+        iEikonEnv-&gt;InfoMsg(buf);
+        // Forward the key event to the focused control
+        if( iListBox-&gt;IsFocused() )
+            {
+            response = iListBox-&gt;OfferKeyEventL( aKeyEvent, aType );
+            }
+        else if( iEditView-&gt;IsFocused() )
+            {
+            response =
+            iEditView-&gt;OfferKeyEventL( aKeyEvent, aType );
+            }
+        }
+        // Return the key consumption status
+        return response;
+    }
+</codeblock>
+<p><parmname>CMyAppView</parmname> is a window-owning compound control
+and <parmname>iListBox</parmname> and <parmname>iEditView</parmname> are controls
+inside <parmname>CMyAppView</parmname>. Key events are offered to controls
+depending on the focus.</p>
+<p>If your implementation consumes the event handed to it, you must return <parmname>EKeyWasConsumed</parmname>.
+If your implementation does not process the event, your code must return <parmname>EKeyWasNotConsumed</parmname>.
+The application framework continues to offer the event to controls registered
+with the control stack from top to bottom until the event is consumed or until
+there are no more controls, in which case the event is handed to the UI controller
+by calling <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleKeyEventL%28const%20TKeyEvent%20%26amp%3b%2cTEventCode%29" format="application/java-archive"><parmname>CCoeAppUI::HandleKeyEventL()</parmname></xref> for the UI
+controller. </p>
+<p>Handle key events in your UI controller by overriding <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleKeyEventL%28const%20TKeyEvent%20%26amp%3b%2cTEventCode%29" format="application/java-archive"><parmname>CCoeAppUI::HandleKeyEventL()</parmname></xref>. An example
+of an implementation is as follows:</p>
+<codeblock id="GUID-3A2D3630-C28F-4165-8589-73AA4627D008" xml:space="preserve">TKeyResponse CMyViewAppUi::HandleKeyEventL( const TKeyEvent&amp; aKeyEvent,TEventCode /*aType*/)
+    {
+    if( iTabGroup == NULL )
+        {
+        return EKeyWasNotConsumed;
+        }
+
+    TInt active = iTabGroup-&gt;ActiveTabIndex();
+    TInt count = iTabGroup-&gt;TabCount();
+
+    switch( aKeyEvent.iCode )
+        {
+        case EKeyLeftArrow:
+            if ( active &gt; 0 )
+                {
+                active--;
+                iTabGroup-&gt;SetActiveTabByIndex( active );
+                // ActivateLocalViewL() is used to change the view. 
+                // To change view from another application we would use ActivateViewL()
+                // Send an empty message
+                ActivateLocalViewL( TUid::Uid( iTabGroup-&gt;TabIdFromIndex( active ) ) );
+                }
+            break;
+        case EKeyRightArrow:
+            if( ( active + 1 ) &lt; count )
+                {
+                active++;
+                iTabGroup-&gt;SetActiveTabByIndex( active );
+                // ActivateLocalViewL() is used to change the view. 
+                // To change view from another application we would use ActivateViewL()
+                ActivateLocalViewL( TUid::Uid( iTabGroup-&gt;TabIdFromIndex( active ) ) );
+                }
+            break;
+        default:
+            return EKeyWasNotConsumed;
+            break;
+        }
+
+    return EKeyWasConsumed;
+    }
+</codeblock>
+<p><parmname>CMyAppView</parmname> is a UI controller that is using key
+events from the selection key of a mobile device to switch between two <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+views. <parmname>EKeyLeftArrow</parmname> and <parmname>EKeyRightArrow</parmname> are
+codes enumerated in <parmname>TKeyCode</parmname> and are contained in <parmname>KeyEvent.iCode</parmname>.</p>
+<note>
+<p>The above code snippet was taken from the <i>MyView</i> example application
+provided in the <parmname>S60 Platform: Platform Application Views</parmname> package
+available from <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/9c5f21fd-2162-42da-aaf6-17a59b943475/S60_Platform_Application_Views_v2_0_en.zip.html" scope="external">Forum Nokia</xref> . </p>
+</note>
+<p>For more information on <parmname>TKeyCode</parmname>, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/e32keys.hGlobals.html#%3a%3aTKeyCode" format="application/java-archive"><parmname>TKeyCode</parmname></xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-162A4409-1ABB-51A1-B7F1-75A31A5DEA63.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-162A4409-1ABB-51A1-B7F1-75A31A5DEA63" xml:lang="en"><title>Using
+CIdle</title><shortdesc>This document describes how to use the CIdle class to implement
+long running background tasks.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An instance of the <codeph>CIdle</codeph> class, an idle time active object,
+can be used to perform low-priority processing when no higher-priority active
+objects are ready to run. </p>
+<p>An idle time active object together with its associated callback function
+may be used to implement potentially long running background tasks, such as
+spreadsheet recalculation and word processor repagination. </p>
+<p>A typical example is a background re-calculation in a spreadsheet. Assume
+that the spreadsheet is encapsulated by some class <codeph>CSheet</codeph>. </p>
+<codeblock id="GUID-01DE940E-BAA9-51C6-A6B2-5B251382428B" xml:space="preserve">class CSheet
+ {
+ ...
+ TInt LaunchReCalcL();
+ TInt DoBackgroundRecalc();
+ static TInt BackgroundRecalc(TAny *aSheet);
+ ...
+private:
+ CIdle* iRecalc;
+ ...
+ };</codeblock>
+<p>Assume that a <codeph>CSheet</codeph> object has been created and that,
+as a result of user interaction or some other event, a background re-calculation
+is launched by a call to <codeph>LaunchReCalc()</codeph>. The implementation
+of this function would construct a <codeph>CIdle</codeph> object, specifying
+a suitably low priority. The value <codeph>CActive::EPriorityIdle</codeph> is
+recommended: </p>
+<codeblock id="GUID-20F61F7A-325B-53AA-B51F-575EA69B6CD3" xml:space="preserve">TInt CSheet::LaunchReCalcL()
+ {
+ ...
+ if (!(iRecalc))
+  {
+  iRecalc = CIdle::NewL(CActive::EPriorityIdle);
+  }
+ ...
+ iRecalc-&gt;Start(TCallBack(BackgroundRecalc,this)); 
+ ...
+ };</codeblock>
+<p>To start the background recalculation which is performed by the <codeph>DoBackGroundRecalc()</codeph> member
+function of <codeph>CSheet</codeph>, start by coding: </p>
+<codeblock id="GUID-08FC5576-EFA4-5527-851E-9E03531ED596" xml:space="preserve">iRecalc-&gt;Start(TCallBack(BackgroundRecalc,this));</codeblock>
+<p> <codeph>CIdle::Start()</codeph> requires a <codeph>TCallBack</codeph> object
+to encapsulate the function to be called and a pointer to be passed as a parameter
+to that function. As the encapsulated function must either be static or a
+non-member function, the easiest way to handle this is to pass the static
+function <codeph>BackgroundRecalc()</codeph> and a pointer to the sheet object
+itself. <codeph>BackgroundRecalc()</codeph> then calls the non-static <codeph>DoBackgroundRecalc()</codeph>: </p>
+<codeblock id="GUID-A4122F78-A32B-5592-9A65-B05EDBF30EF5" xml:space="preserve">TInt Sheet::BackgroundRecalc(TAny* aSheet)
+ {
+ return ((CSheet*)aSheet)-&gt;DoBackgroundRecalc();
+ }</codeblock>
+<p> <codeph>BackgroundRecalc()</codeph> is called when there are no higher
+priority active objects with events to process. It does a small amount of
+recalculation before returning. </p>
+<p>If the function has further work to do, it returns a true value to ensure
+that it is called again when there is no other higher priority event to handle.
+When the function finally completes its recalculation task, it returns a false
+value; the function is not called again. </p>
+<p>Typically, an object such as <codeph>CSheet</codeph> or some other object
+accessible from <codeph>CSheet</codeph>, keeps track of the state of the re-calculation. </p>
+<p>It is important for application responsiveness that each iteration of the
+idle time object take only a short time. All other events handled by the active
+scheduler, even high-priority ones, cannot be processed until the idle time
+object's callback function returns. </p>
+<p>When the background recalculation is complete, the callback function is
+not called again. The idle time active object can be destroyed or left until
+needed again. </p>
+<p>If <codeph>Cancel()</codeph> is called, the callback function is not called
+again. An application would need to implement appropriate cleanup. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e163553_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E"><title>staticlibrary</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>staticibrary</codeph>  <varname>filename-list</varname> </p> <p>Use the <codeph>staticlibrary</codeph> statement to specify static libraries.</p> <p>The <codeph>staticibrary</codeph> statement may specify any number of files, and there may be many <codeph>library</codeph> statements. Specify the entire filename, e.g. <filepath>euser.lib</filepath>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-16950F22-F5DE-4D52-8414-544105BA3200" xml:lang="en"><title>Hierarchical
+list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The hierarchical list component (a "tree list") is available for use in
+dialogs that deal with moving items to and from (or copying them) from one
+folder to another. The main use situation for the component is the File Manager
+folder and file browsing, when the actual data is being showed in the same
+view. The hierarchical list component allows users to browse through their
+folder content by having a list and its content available simultaneously:
+the user can simply expand a listed item (folder) to show its content.</p>
+<p>Unlike the other Symbian list types, the hierarchical list
+component is not structured on the A   D column structure. Visually, the hierarchical
+levels are connected with vertical lines (see the figure below), and the folders
+in each hierarchy level are shown before files on that same level. Scroll
+bars function as usual (vertical bar is always present, horizontal bar is
+available when necessary), and the list does not loop by default, although
+it is possible to enable looping. Marquee scrolling is supported, but if not
+used, the names of folders and files are truncated where necessary. The height
+and the vertical distribution of the folder/file texts on the list is the
+same as in normal lists. Hierarchical lists can be used both in the main pane
+and as pop-ups.</p>
+<fig id="GUID-5CC170B7-72AA-422E-8C44-AFB135C596D6">
+<title>Hierarchical list component</title>
+<image href="GUID-341CE215-056C-45B6-ABE2-C75442605147_d0e55750_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>Owing to the need for horizontal scrolling, it is not possible to use tabs
+in the Navi pane. Typically the hierarchical list component is capable of
+showing three hierarchy levels in portrait orientation, but this may vary
+according to the display sizes and resolutions as well as the display orientation.
+The order of folders (sorting order) on each level is defined by the application.</p>
+<p><b>General navigation:</b></p>
+<ul>
+<li><p>Arrow keys either expand collapsed folders (Arrow right, the focus
+does not move yet), collapse expanded folders (Arrow left: one press to move
+the focus onto the parent folder when there is one, second press to collapse
+the contents), or move the focus into the direction of scrolling. </p></li>
+<li><p>The Selection key expands collapsed (or vice versa) folders or opens
+files under focus. </p></li>
+<li><p>Commands for expanding, collapsing and opening folders or files are
+also available in the <b>Options</b> menu.</p></li>
+</ul>
+<section id="GUID-E507585F-2B77-49BC-B982-76E143E7BF2A"><title>Using
+hierarchical lists in C++ applications</title><p>The API to use for hierarchical
+lists is the Hierarchical
+lists API. For implementation information, see Using
+the Hierarchical lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16A1C613-288D-471C-8551-51B61290E28F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-16A1C613-288D-471C-8551-51B61290E28F" xml:lang="en"><title>Application
+Start-Up Time Optimization</title><shortdesc>It is important that phone users do not have to wait long for applications
+to start. This document summarizes the techniques for optimizing application
+start-up time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section>       <title>Introduction</title>       <p>The techniques discussed
+in this document are limited in scope to application programming. In other
+words, they do not require modification of any core OS components or servers.
+Some of the techniques are general good practice and are useful to developers
+at all levels. </p>     <p>The techniques can be summarized as follows:</p><ul>
+<li><p>Avoid causing unnecessary code to be executed as an effect of your
+code.</p></li>
+<li><p>Defer construction of objects, loading of dynamic libraries (for example,
+the application model), and starting servers until you need to use them.</p></li>
+<li><p>Write efficient code!</p></li>
+</ul><note>There is an inevitable trade-off between shortening the start-up
+time and introducing latency elsewhere in the application. For example, if
+you don’t connect to a server at start-up, you will have to do it later on,
+when the application needs to use the server. This may be overcome by a central
+component that coordinates background connections, or construction, such as
+the view server.</note></section>
+<section><title>Measure start-up time before you start optimizing</title><p>Do
+not assume you know which methods take the most time. Pay close attention
+to iterative and recursive operations. Many useful tools and techniques are
+available to help identify poorly performing code:</p><ul>
+<li><p>Software analysis tools, for instance <xref href="http://www.glowcode.com.dita">GlowCode</xref> and
+MetroWerks <xref href="http://www.metrowerks.com/MW/Develop/AMC/CodeTEST/default.htm.dita">CodeTEST</xref></p></li>
+<li><p>The Symbian profiling tool, profiler.exe, which is supplied on DevKits </p></li>
+<li><p>The RDebug class provides some profiling functions </p></li>
+<li><p>The TTime class can be used to time blocks of code, but beware of context
+switches, otherwise you may end up timing other threads!</p></li>
+<li><p>Deliberately slowing down suspect blocks of code can reveal whether
+or not optimizing it would bring a significant performance improvement. </p></li>
+</ul></section>
+<section><title>Defer construction of the application model and other data
+members</title><p>Many applications instantiate their components, for instance
+error handlers, dialogs and menus, during start-up. In turn, each of these
+components may instantiate other components, for instance menu resources and
+icons. This can bring some benefits, for instance reducing application complexity,
+revealing memory allocation problems at start-up rather than after the application
+has been running for some time and improving the runtime performance of the
+application. However, to minimize application start-up time, it is recommended
+to avoid this behavior. Your goal should be to only do what is immediately
+necessary during start-up. </p></section>
+<section><title>Draw the application as quickly as possible</title><p>During
+application start-up, only construct UI components that appear in the application’s
+initial view. This applies especially to the application's implementations
+of <xref href="GUID-05A12A50-93A3-3F3E-842F-81EF47D78F7F.dita#GUID-05A12A50-93A3-3F3E-842F-81EF47D78F7F/GUID-172521B0-E7C8-3214-AA4D-814A9C98216C"><apiname>CXxxApplication::CreateDocumentL()</apiname></xref>, <xref href="GUID-8001206A-3B19-381F-96F6-350336FDFBF2.dita#GUID-8001206A-3B19-381F-96F6-350336FDFBF2/GUID-453AFFB0-6711-3881-97E6-0BB9E5185E06"><apiname>CXxxDocument::ConstructL()</apiname></xref> and <xref href="GUID-8001206A-3B19-381F-96F6-350336FDFBF2.dita#GUID-8001206A-3B19-381F-96F6-350336FDFBF2/GUID-DCC1BAD5-95AB-3308-9132-2780852BA913"><apiname>CXxxDocument::CreateAppUiL()</apiname></xref>, all of which are called before <xref href="GUID-3C72B6B6-F1B3-3C36-B69A-5074E5EDC32A.dita#GUID-3C72B6B6-F1B3-3C36-B69A-5074E5EDC32A/GUID-5C26B1AB-6917-3133-9CD8-34AFCA9524B9"><apiname>CXxxAppUi::ConstructL()</apiname></xref>.
+Do not read bitmaps, resources, or any other data associated with the UI from
+files unless it is necessary.</p><p>In <xref href="GUID-3C72B6B6-F1B3-3C36-B69A-5074E5EDC32A.dita#GUID-3C72B6B6-F1B3-3C36-B69A-5074E5EDC32A/GUID-5C26B1AB-6917-3133-9CD8-34AFCA9524B9"><apiname>CXxxAppUi::ConstructL()</apiname></xref>,
+make sure <xref href="GUID-6965379F-00B9-38DB-9AF3-9DAD55DEBBB7.dita"><apiname>ActivateL()</apiname></xref> and <xref href="GUID-0F226BB0-2D2F-3BD5-A439-C25F7DEACE85.dita"><apiname>DrawNow()</apiname></xref> are
+called on all controls that must be drawn when the application is launched.
+Also ensure that the client-side window server command buffer is flushed by
+calling <xref href="GUID-09D06EF8-E231-3A76-A4F0-267B9CD83B54.dita"><apiname>Flush(</apiname></xref>) on the application's window server session.
+This ensures that there aren't any drawing commands left in the client-side
+buffer, after <xref href="GUID-0F226BB0-2D2F-3BD5-A439-C25F7DEACE85.dita"><apiname>DrawNow()</apiname></xref> has completed. </p></section>
+<section><title>Minimize the number of bitmaps used by GUI components</title><p>Often,
+when a large number of small images are required by an application, the overhead
+associated with loading each bitmap outweighs any benefit associated with
+their size. Some possible ways to avoid this are: </p><ul>
+<li><p>use text instead, </p></li>
+<li><p>for very simple graphics, draw directly using drawing primitives rather
+than loading a bitmap,  </p></li>
+<li><p>concatenate many small bitmaps into one large bitmap file to reduce
+the need to search for and load multiple files.</p></li>
+</ul></section>
+<section><title>Reduce the number of redraws</title><p>Some GUI components
+redraw themselves every time their data changes. This may not always be necessary.
+Complicated GUI components should implement their <xref href="GUID-AC3B79CA-A2FE-395E-9BCE-4630AF6910AC.dita"><apiname>Draw()</apiname></xref> method
+to only update the area of the screen that has changed. For example, there
+is no point in redrawing a whole list box every time a new item is appended
+to it. In such cases, a GUI API should allow you to switch off redrawing.
+Beware of GUI methods that cause the object they are called upon to redraw
+itself.</p><p>Use <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-811046A4-4272-3B29-80D9-CB897C4E1DD0"><apiname>CCoeControl::DrawDeferred(</apiname></xref>) in preference
+to <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-70FF46AE-5ACC-36F1-97F0-CBD847779C19"><apiname>CCoeControl::DrawNow(</apiname></xref>) if possible, because excessive
+use of <xref href="GUID-65BA28DB-77C6-3075-80E7-84E98780FD19.dita"><apiname>DrawNow(</apiname></xref>) can cause GUI flicker. For an explanation,
+see the documentation for <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-9FB682AC-0209-302A-83F3-7BCB1162B998"><apiname>CCoeControl::DrawDeferred()</apiname></xref>. </p></section>
+<section><title>Use ROM-based bitmaps rather than filestore bitmaps</title><p>Uncompressed
+ROM-based bitmaps that can be used in place from ROM are approximately three
+times faster to use than filestore bitmaps. Using them can bring a significant
+reduction in application start-up time.   </p><p>Specifying bitmap= instead
+of file= in the .OBY and .IBY files when building the ROM causes bitmaps to
+be uncompressed before inclusion in the ROM. Other bitmaps need to be uncompressed
+at runtime, which impacts performance.   </p><p>The drawback of such bitmaps
+is that they are large (up to 3 times larger than file based) and cannot be
+compressed, although decompressing bitmaps should probably be avoided during
+start-up anyway due to the extra processing required.   </p><p>If ROM space
+is limited, consider using such ROM-based bitmaps only if they are displayed
+during application start-up. </p></section>
+<section><title>Color depth matching</title><p>When bitmaps are drawn to the
+screen, optimum performance is achieved by ensuring that:</p><codeph>Bitmap
+color depth = Window color depth = Screen device color depth </codeph><p>If
+this is the case, no palette mapping between the different color depths is
+needed. On real hardware, this optimization has been found to improve drawing
+speed by up to ten times. However, in order to match the screen
+and window color depth, bitmaps may need to increase in size and so this optimization
+is only possible if the increase in ROM or RAM usage is acceptable. </p></section>
+<section><title>Minimize access to the file system</title><p>The file server
+can be a major bottleneck during start-up when virtually all threads are searching
+for and loading data, libraries and plug-ins. Therefore reducing file access
+is one of the most effective ways to improve performance. </p></section>
+<section><title>Minimize the use of resource files</title><p>Resource files
+are used for localization and allow modifications to be made to an application
+without the need to rebuild it, but they are expensive to use because they
+require access to the file system. </p></section>
+<section><title>Do not specify a default document filename for non document-based
+applications</title><p>Many applications on a smartphone do not need to use
+documents, for example Telephony, Contacts (this uses the contacts database),
+Browser and Messaging.   </p><p>By not specifying a default document filename,
+hundreds of milliseconds can potentially be saved from such applications'
+start-up time.   </p><p>If an application uses a document file, application
+start-up may involve the following steps: </p><ul>
+<li><p>reading the name of the last used document file from the application’s
+.ini file,</p></li>
+<li><p>opening the document file, or if one doesn't exist, creating a default
+document file, after reading its name from the application's resource file, </p></li>
+<li><p>writing the name of the last used file to the application’s .ini file
+(which is created if it doesn’t exist),  </p></li>
+<li><p>writing an entry to the most recently used file list (mru.dat), </p></li>
+<li><p>additional document-related processing within <xref href="GUID-96CA3B4B-993F-36C0-9A5B-DF5CC74EE20E.dita#GUID-96CA3B4B-993F-36C0-9A5B-DF5CC74EE20E/GUID-E2A40307-6EB6-3ABC-B97A-63B77F565CCF"><apiname>CEikonEnv::ConstructAppFromCommandLineL()</apiname></xref>. </p></li>
+</ul><p>The default document's name is read from the application's resource
+file by <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita#GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E/GUID-5D851D0B-6399-3BD8-ADB5-63AD48494D47"><apiname>CEikAppUi::ProcessCommandParametersL()</apiname></xref>. There are
+two ways of preventing the application from using a default document file: </p><ul>
+<li><p>Give the default document a NULL name in the resource file:</p><codeph>RESOURCE
+TBUF { buf=""; }</codeph></li>
+<li><p>Override <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita#GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E/GUID-5D851D0B-6399-3BD8-ADB5-63AD48494D47"><apiname>CEikAppUi::ProcessCommandParametersL()</apiname></xref> to
+zero the document name and return EFalse. This method is slightly more efficient
+because it avoids reading the default document name from the resource file
+altogether: </p><codeblock xml:space="preserve">TBool CMyAppUi::ProcessCommandParametersL(TApaCommand /*aCommand*/, TFileName&amp; aDocumentName, const TDesC8&amp; /*aTail*/){aDocumentName.Zero();return EFalse;}</codeblock></li>
+</ul></section>
+<section><title>Drive scanning</title><p>This can be a cause of unnecessary
+file server use.   </p><p>To prevent excessive drive access and scanning,
+always specify a drive letter in file paths, if known. The omission of a drive
+letter will cause all available drives to be searched in the standard Symbian
+OS order, in which Z: is always searched last. </p></section>
+<section><title>Only make server requests if you need to</title><p> Server
+requests involve context switching and may cause the server to run instead
+of the application. In the worse case if you make a request to a server that
+has not yet been started you may cause the server to start. This will involve
+creating a new thread (and possibly process) and running any server initialization
+code.</p></section>
+<section><title>Use asynchronous server requests instead of synchronous server
+requests</title><p> Synchronous operations or methods (particularly for server
+requests) can cause general application slowness, and in particular, a significant
+reduction in responsiveness. Synchronous requests to servers mean your thread
+is waiting, so that no start-up progress is being made.   </p><p>No 'Golden
+Rule' exists about when to avoid synchronous requests. However, if an asynchronous
+version of a method exists, it is a good indication that the synchronous method
+could potentially take some time. Whilst it may take a little extra effort
+to handle asynchronous versions of method calls, you should consider very
+carefully any decision to use the synchronous version. It’s often easier to
+change from using an asynchronous version to synchronous than vice versa. 
+ </p><p>Note that in some situations, you might know that the server is implementing
+your asynchronous request synchronously. If this is the case, and the server
+runs with a higher priority than your application, then both versions of the
+API may have the same performance. However, using the synchronous version
+in this case has the drawback that it relies upon knowledge of the server's
+implementation, which could potentially change. </p></section>
+<section><title>Do not repeatedly open and close connections to the same server</title><p> Opening
+a connection to a server is an expensive operation. If an application uses
+a server frequently then it should create one connection and leave it open
+until the application is destroyed. R classes declared as temporaries (on
+the stack, in other words) within a method may be a sign of this behavior. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E" xml:lang="en"><title>Power
+State API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Power State API provides the Publish and Subscribe (P&amp;S) power state
+keys that are updated by HWRM server. </p>
+<p>The P&amp;S power state keys provide up-to-date information on the charging
+status, battery level and battery state of the device. Any application may
+subscribe to these keys that are updated to receive notifications for any
+change in state. This interface is provided by three Publish and Subscribe
+keys. For details on using the P&amp;S API, refer to the <xref href="GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita">Publish
+and Subscribe documentation</xref>. </p>
+<p>P&amp;S is used by HW Resource Manager to globally publish the power state
+information. The P&amp;S UID is <codeph>KPSUidHWRMPowerState</codeph> and
+provides the following keys: </p>
+<ul>
+<li id="GUID-B0F5D317-6B63-52C0-85A8-EC30053866BB"><p><xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-576EAE06-666F-5903-B006-EA923B7000B5">KHWRMBatteryLevel</xref>  </p> </li>
+<li id="GUID-5E41F5AE-C3C2-54AA-8959-0A90E4785E90"><p><xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-5C7D4483-D58A-522B-8B38-D30117698381">KHWRMBatteryStatus</xref>  </p> </li>
+<li id="GUID-A3C5C6AF-EDB6-5EFD-A713-802F6E8A8DD7"><p><xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-C4B24C0C-762F-5319-90B9-5BE8C8E94ABC">KHWRMChargingStatus</xref>  </p> </li>
+</ul>
+<section id="GUID-576EAE06-666F-5903-B006-EA923B7000B5"><title>KHWRMBatteryLevel</title> <p>P&amp;S
+key to represent the battery level of the device. It also relates to the number
+of battery bars displayed. This property is updated only when battery level
+changes. Valid values are defined by the <codeph>EPSHWRMBatteryLevel</codeph> enumeration
+and ranges from -1 to 7. </p> <p>If an error occurs or the battery level is
+not initialized, the enumeration value of <codeph>EBatteryLevelUnknown</codeph> is
+used. In all other scenarios, the battery level is used with level 0 being
+the lowest (battery empty) and level 7 the highest (battery full). </p> <p>Refer
+to the <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-CD1197EA-3FDF-53A5-B808-F01F18468121">Keys</xref> and <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-AC5B84A9-1393-5473-8C87-A226CFDB6544">Enumerations</xref> section
+for more information. </p> </section>
+<section id="GUID-5C7D4483-D58A-522B-8B38-D30117698381"><title>KHWRMBatteryStatus</title> <p>P&amp;S
+key to represent the battery status of the device. For example, <b>Uninitialized</b>, <b>Ok</b>, <b>Low</b>, <b>Empty</b>.
+This property may be updated to same status as previously, to indicate that
+the note in question must be displayed again. </p> <p> <codeph>EPSHWRMBatteryStatus</codeph> enumeration
+defines the valid values as shown in the following table: </p> <table id="GUID-A339E622-0E97-5020-94A8-18DAED60D8C3">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>EPSHWRMBatteryStatus</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EBatteryStatusUnknown</codeph>  </p> </entry>
+<entry><p>Battery status is unknown or some error has occurred in retrieving
+the battery status. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryStatusOk</codeph>  </p> </entry>
+<entry><p>Battery level is normal. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryStatusLow</codeph>  </p> </entry>
+<entry><p>Battery level is low, and the user can be notified with a message
+warning them that battery is low. This value is updated approximately ten
+times before battery is completely empty and updated comes at approximately
+10-minute intervals. If phone is in-call mode, update comes at approximately
+1-minute intervals. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryStatusEmpty</codeph>  </p> </entry>
+<entry><p>Battery level is empty. This value is updated slightly before the
+phone must be powered down automatically because of insufficient battery power. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Refer to the <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-CD1197EA-3FDF-53A5-B808-F01F18468121">Keys</xref> and <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-AC5B84A9-1393-5473-8C87-A226CFDB6544">Enumerations</xref> section
+for more information. </p> </section>
+<section id="GUID-C4B24C0C-762F-5319-90B9-5BE8C8E94ABC"><title>KHWRMChargingStatus</title> <p>P&amp;S
+key to represent the charging status of the device. For example, <b>Charging</b>, <b>NotCharging</b>, <b>ChargingComplete</b>.
+This property is updated only when charging status changes. </p> <p> <codeph>EPSHWRMChargingStatus</codeph> enumeration
+defines the valid values as shown in the following table: </p> <table id="GUID-EE9B5750-B531-5AE4-8FA3-6997105CDB72">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>EPSHWRMChargingStatus</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EChargingStatusError</codeph>  </p> </entry>
+<entry><p>An error occurred when the charger is connected to the device. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusNotConnected</codeph>  </p> </entry>
+<entry><p>A charger has not been connected to the device. This also represents
+the uninitialized value if no charger has been initialized. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusCharging</codeph>  </p> </entry>
+<entry><p>Charger is connected to the device and charging is ongoing. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusNotCharging</codeph>  </p> </entry>
+<entry><p>Charger is connected to the device but the device is not charging,
+for example, due to battery being full. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusAlmostComplete</codeph>  </p> </entry>
+<entry><p>Device is charging and the battery is almost full. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusChargingComplete</codeph>  </p> </entry>
+<entry><p>Charging has just been completed, and hence a notification may be
+shown to the user if required. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusChargingContinued</codeph>  </p> </entry>
+<entry><p>Special case where charging was interrupted briefly but is now continuing,
+for example, when a dynamo type of charger is used. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Refer to the <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-CD1197EA-3FDF-53A5-B808-F01F18468121">Keys</xref> and <xref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita#GUID-16A42EB3-4F45-5623-9981-1DEE3234471E/GUID-AC5B84A9-1393-5473-8C87-A226CFDB6544">Enumerations</xref> section
+for more information. </p> </section>
+<section id="GUID-CD1197EA-3FDF-53A5-B808-F01F18468121"><title>Keys </title> <table id="GUID-99D595A4-685F-5ABA-A684-4AB137368F10">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry> Keys </entry>
+<entry>Valid Values</entry>
+<entry> Description </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>KHWRMBatteryLevel</codeph>  </p> </entry>
+<entry><p>0x00000001 </p> </entry>
+<entry><p>P&amp;S key representing battery level of device. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KHWRMBatteryStatus</codeph>  </p> </entry>
+<entry><p>0x00000002 </p> </entry>
+<entry><p>P&amp;S key representing battery status of device. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KHWRMChargingStatus</codeph>  </p> </entry>
+<entry><p>0x00000003 </p> </entry>
+<entry><p>P&amp;S key representing charging status of device. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-AC5B84A9-1393-5473-8C87-A226CFDB6544"><title> Enumerations</title> <p> <b>Battery
+level of device</b>  </p> <p>Interpreted as <codeph>EPSHWRMBatteryLevel</codeph> enumeration
+and can be related to the number of battery bars displayed by the device. </p> <table id="GUID-9DB20436-D945-5363-9089-1B312FE2AD86">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry> EPSHWRMBatteryLevel </entry>
+<entry>Valid Values</entry>
+<entry> Description </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EBatteryLevelUnknown</codeph>  </p> </entry>
+<entry><p>-1 </p> </entry>
+<entry><p>Uninitialized or some other error. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel0</codeph>  </p> </entry>
+<entry><p>0</p> </entry>
+<entry><p>Lowest battery level. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel1</codeph>  </p> </entry>
+<entry><p>1</p> </entry>
+<entry><p>Battery Level 1. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel2</codeph>  </p> </entry>
+<entry><p>2</p> </entry>
+<entry><p>Battery Level 2. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel3</codeph>  </p> </entry>
+<entry><p>3</p> </entry>
+<entry><p>Intermediate levels </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel4</codeph>  </p> </entry>
+<entry><p>4</p> </entry>
+<entry><p>Battery Level 4. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel5</codeph>  </p> </entry>
+<entry><p>5</p> </entry>
+<entry><p>Battery Level 5. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel6</codeph>  </p> </entry>
+<entry><p>6</p> </entry>
+<entry><p>Battery Level 6. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryLevelLevel7</codeph>  </p> </entry>
+<entry><p>7</p> </entry>
+<entry><p>Highest battery level. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Battery status of device</b>  </p> <p>Interpreted as <codeph>EPSHWRMBatteryStatus</codeph> enumeration
+and can be related to the battery status of the device. </p> <table id="GUID-E8331299-6047-579D-B4AD-8DF3B0C7028E">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry> EPSHWRMBatteryStatus </entry>
+<entry>Valid Values</entry>
+<entry> Description </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EBatteryStatusUnknown</codeph>  </p> </entry>
+<entry><p>-1 </p> </entry>
+<entry><p> <systemoutput>Uninitialized</systemoutput> or some other error. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryStatusOk</codeph>  </p> </entry>
+<entry><p>0</p> </entry>
+<entry><p>This can also be used during charging. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryStatusLow</codeph>  </p> </entry>
+<entry><p>1</p> </entry>
+<entry><p>Show "<systemoutput>Battery low</systemoutput> " note to user . </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EBatteryStatusEmpty</codeph>  </p> </entry>
+<entry><p>2</p> </entry>
+<entry><p>Show "<systemoutput>Recharge battery</systemoutput> " note to user. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Charging status of device</b>  </p> <p>Interpreted as enumeration <codeph>EPSHWRMChargingStatus</codeph> and
+can be related to the charging status of the device. </p> <table id="GUID-1BC438C0-8110-53C7-9F4E-77060CFE9202">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry> EPSHWRMChargingStatus </entry>
+<entry>Valid Values</entry>
+<entry> Description </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EChargingStatusError</codeph>  </p> </entry>
+<entry><p>-1 </p> </entry>
+<entry><p>Some error has occurred when charger is connected or charging. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusNotConnected</codeph>  </p> </entry>
+<entry><p>0</p> </entry>
+<entry><p>Charger uninitialized or not connected. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusCharging</codeph>  </p> </entry>
+<entry><p>1</p> </entry>
+<entry><p>Device is charging. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> EChargingStatusNotCharging</codeph>  </p> </entry>
+<entry><p>2</p> </entry>
+<entry><p>Charger is connected, device not charging. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusAlmostComplete</codeph>  </p> </entry>
+<entry><p>3</p> </entry>
+<entry><p>Charging almost completed. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusChargingComplete</codeph>  </p> </entry>
+<entry><p>4</p> </entry>
+<entry><p>Charging completed. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EChargingStatusChargingContinued</codeph>  </p> </entry>
+<entry><p>5</p> </entry>
+<entry><p>Charging continued after brief interruption. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita"><linktext>Power State
+API Tutorial</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60-master.png has changed
Binary file Symbian3/SDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e354652_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16BA7B80-DC75-512C-AAEC-F571B5B73F09.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-16BA7B80-DC75-512C-AAEC-F571B5B73F09" xml:lang="en"><title>Cryptography API guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The cryptography API provides cryptographic services to the user software through a standard Symbian platform interface. </p> <p> <i>Note: The strong cryptography API guide is not publically available.</i>  </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e351531_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16D0854D-55EF-4E22-B7D2-72603699BC59.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-16D0854D-55EF-4E22-B7D2-72603699BC59" xml:lang="en"><title>Empty
+lists and grids</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If there are no items to be displayed in a list or grid, the pane contains
+a text informing the user about the empty list. The information displayed
+in the list should be designed to provide as much help and guidance to the
+user as possible. Instead of merely stating that a list is empty, the text
+should point the user to some useful direction in the application in order
+to add content.</p>
+<fig id="GUID-05A6F907-D7C3-44F5-B866-E070D872CECA">
+<title>Empty list: the primary font used for informing of an empty list (left),
+the secondary font (right) used in addition to provide the user with further
+information (used only in cases when genuinely useful additional information
+is available)</title>
+<image href="GUID-89EC9CD3-A41E-4CD6-90FE-0BECF44920B8_d0e54434_href.png" scale="40" placement="inline"/>
+</fig>
+<p>Depending on the case, the text may be aligned to prompt the user to create
+the first item for an empty list.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1" xml:lang="en"><title>Cleanup
+Support Example Code</title><shortdesc>Example codes that explain how to use various cleanup functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-30B853A0-380E-5355-9D3C-F854BC77924D"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-9CAE0C86-537A-500F-B361-D555DD39954B">ErrorOnFail: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-21C594C4-57D2-56E1-88B9-2A9F37F2EFA6"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-E80C29CC-0282-5350-8077-BB298B7590C0">LeaveOnFail: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-D6653D68-E236-5C53-A07B-E72EAAC85F23"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-279FBD9A-0E61-50ED-9618-BAB24AC3163C">ELeaveOnFail: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-79C5A5BB-2A14-5148-9C17-7FE508BC7D17"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-C7E94BD9-9B77-548C-A3C2-D5A396F20EF0">TrapD: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-024B1B3E-19A5-5494-B382-482576A27E3E"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-12F30817-5CE0-5B6E-A850-7179BE915539">PushLAndPop: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-58BD5628-8D27-52D2-BFB3-9FBF5B6A97B9"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-548F79C2-3394-5D86-8E70-B219E49288C7">PushLPopDest: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-2F40CF99-E993-58D3-8C9E-517DB54BB237"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-5975C52F-726D-5DB1-8CE4-7F52DC202B43">NewL: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-9B4A5102-5C64-5E22-9D55-C6A53E48137A"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-53F042FC-401F-5AD7-8F60-ECD15EB1069F">NewLC: cleanup, TRAPD and leaving</xref> </p> </li>
+<li id="GUID-1DE76860-6FA4-5AA2-9C9B-8C7DCE01F97A"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-4559C2AC-0DA8-5788-A33C-2E20EFEF6D58">SimpleOOM—cleaning up compound classes</xref> </p> </li>
+<li id="GUID-94377071-3329-53C8-9EA2-ACFE90FB0413"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-2E3E6224-BE1C-5DA1-BEA0-D28CD7DA40E8">MemLeakOOM: cleaning up compound classes</xref> </p> </li>
+<li id="GUID-D099EA48-EC8D-5081-8A2F-E12FDB1B73F4"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-068C17E6-0E3C-571B-92D1-421EEF42E6A0">TwoPhaseOOM: cleaning up compound classes</xref> </p> </li>
+<li id="GUID-2D4E0AA0-3768-5E0D-B4FA-0E376BDB71DE"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-D0A1DF34-2499-5F7E-80D1-0BFF74882EA6">TAnyRObjects1: cleaning up TAny* and "R" type objects</xref> </p> </li>
+<li id="GUID-1EBC2006-351E-58EE-9611-98C260FD1A2C"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-C42BF40F-94C4-5845-B449-164AD4578691">TAnyRObjects2: cleaning up TAny* and "R" type objects</xref> </p> </li>
+<li id="GUID-EFAF518A-F1A7-5633-8CCA-2B3152F96919"><p> <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-C4F81443-E41D-52C6-9305-A1B7E45A1DC5">Utilities: cleanup utilities</xref>. </p> </li>
+</ul>
+<section id="GUID-9CAE0C86-537A-500F-B361-D555DD39954B"><title>ErrorOnFail:
+cleanup, TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-2d7621ab-71a7-4a6f-bcd2-5c2e05888d00.zip" scope="external">ErrorOnFail.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-2d7621ab-71a7-4a6f-bcd2-5c2e05888d00.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example attempts to construct an object, and on failure it returns an appropriate
+error code. </p> <p>This example shows use of the <codeph>TRAPD</codeph> macro,
+the cleanup stack and its functions <codeph>PushL()</codeph>, <codeph>PopAndDestroy()</codeph> and
+the process of leaving. It also uses the heap debugging macro <codeph>__UHEAP_SETFAIL</codeph>. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-E80C29CC-0282-5350-8077-BB298B7590C0"><title>LeaveOnFail:
+cleanup, TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-1e56dfe1-13ea-4e14-82b6-e7da3a8453f5.zip" scope="external">LeaveOnFail.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-1e56dfe1-13ea-4e14-82b6-e7da3a8453f5.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>As
+with the <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-9CAE0C86-537A-500F-B361-D555DD39954B">ErrorOnFail</xref> example,
+this example also attempts to construct an object, however on failure it simply
+leaves. </p> <p>This example shows use of the <codeph>TRAPD</codeph> macro,
+the cleanup stack and its functions <codeph>PushL()</codeph>, <codeph>PopAndDestroy()</codeph> and
+the process of leaving. It also uses the heap debugging macro <codeph>__UHEAP_SETFAIL</codeph>. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-279FBD9A-0E61-50ED-9618-BAB24AC3163C"><title>ELeaveOnFail:
+cleanup, TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-16210a7c-3129-4176-a062-2a08b9947caf.zip" scope="external">ELeaveOnFail.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-16210a7c-3129-4176-a062-2a08b9947caf.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>This
+example attempts to construct an object using the overloaded <codeph>new</codeph> operator <codeph>new
+(ELeave)</codeph>. Specifying <codeph>(ELeave)</codeph> will cause a leave
+to occur if it was unable to allocate memory for the new object. </p> <p>This
+example shows use of the <codeph>TRAPD</codeph> macro, the cleanup stack and
+its functions <codeph>PushL()</codeph>, <codeph>PopAndDestroy()</codeph> and
+the process of leaving. It also uses the heap debugging macro <codeph>__UHEAP_SETFAIL</codeph>. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-C7E94BD9-9B77-548C-A3C2-D5A396F20EF0"><title>TrapD: cleanup,
+TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-de1a3a49-8773-46c3-8469-be9777f09870.zip" scope="external">TrapD.zip</xref></p><p>click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-de1a3a49-8773-46c3-8469-be9777f09870.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example shows the use of the <codeph>TRAPD</codeph> macro. It shows how a
+newly created object can be protected by the <codeph>TRAPD</codeph> macro. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-12F30817-5CE0-5B6E-A850-7179BE915539"><title>PushLAndPop:
+cleanup, TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-50fd89b6-237a-4f9d-bed1-21678cc5ab5b.zip" scope="external">PushLAndPop.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-50fd89b6-237a-4f9d-bed1-21678cc5ab5b.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example shows the use of the cleanup stack and its functions <codeph>PushL()</codeph> and <codeph>Pop()</codeph>. </p> <p>The
+example also uses the heap debugging macro <codeph>__UHEAP_SETFAIL.</codeph>  </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-548F79C2-3394-5D86-8E70-B219E49288C7"><title>PushLPopDest:
+cleanup, TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-03d19c0a-a64a-4e18-ba8c-7d563e6df331.zip" scope="external">PushLPopDest.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-03d19c0a-a64a-4e18-ba8c-7d563e6df331.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example shows the use of the cleanup stack and its functions <codeph>PushL()</codeph> and <codeph>PopAndDestroy()</codeph>. </p> <p>The
+example also uses the heap debugging macro <codeph>__UHEAP_SETFAIL</codeph>. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-5975C52F-726D-5DB1-8CE4-7F52DC202B43"><title>NewL: cleanup,
+TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-ed6e0d71-cada-4370-b55e-e7239e75b707.zip" scope="external">NewL.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-ed6e0d71-cada-4370-b55e-e7239e75b707.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example shows use of the <codeph>NewL()</codeph> static function. </p> <p>The
+example also uses the heap debugging macro <codeph>__UHEAP_SETFAIL</codeph>. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-53F042FC-401F-5AD7-8F60-ECD15EB1069F"><title>NewLC: cleanup,
+TRAPD and leaving</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a3ff31ac-53a8-4719-aa9c-f45874214852.zip" scope="external">NewLC.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a3ff31ac-53a8-4719-aa9c-f45874214852.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example shows use of the <codeph>NewLC()</codeph> static function. </p> <p>The
+example also uses the heap debugging macro <codeph>__UHEAP_SETFAIL</codeph>. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-4559C2AC-0DA8-5788-A33C-2E20EFEF6D58"><title>SimpleOOM—cleaning
+up compound classes</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-71eeb97f-c662-46cb-b5b8-aefd8aa4439e.zip" scope="external">SimpleOOM.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-71eeb97f-c662-46cb-b5b8-aefd8aa4439e.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>This
+example shows cleanup handling for compound classes. The robustness of a simple
+class on Out Of Memory (OOM) is tested. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-2E3E6224-BE1C-5DA1-BEA0-D28CD7DA40E8"><title>MemLeakOOM:
+cleaning up compound classes</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-873c620d-c7f2-48f5-9472-2ad61a5c7594.zip" scope="external">MemLeakOOM.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-873c620d-c7f2-48f5-9472-2ad61a5c7594.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>This
+example shows cleanup handling for compound classes. The robustness of a compound
+class on Out Of Memory (OOM) is tested. It also shows how memory leaks can
+occur. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-068C17E6-0E3C-571B-92D1-421EEF42E6A0"><title>TwoPhaseOOM:
+cleaning up compound classes</title> <p><b>Download</b> </p> <p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-77965fa6-4624-42dc-8104-dd973dff7132.zip" scope="external">TwoPhaseOOM.zip</xref></p><p>click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-77965fa6-4624-42dc-8104-dd973dff7132.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>These
+examples show cleanup handling for compound classes. The robustness of a compound
+class on Out Of Memory (OOM) is tested. It also shows the use of the two phase
+construction technique. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-D0A1DF34-2499-5F7E-80D1-0BFF74882EA6"><title>TAnyRObjects1:
+cleaning up TAny* and ‘R’ type objects</title> <p><b>Download</b> </p> <p>Download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4aeb7aba-6ce4-4ec4-bc80-04722c55fd73.zip" scope="external">TAnyRObjects1.zip</xref> </p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref> , <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-306f220f-1980-4b1c-914e-d643a49f9d97.zip" scope="external">HeaderFile.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4aeb7aba-6ce4-4ec4-bc80-04722c55fd73.html" scope="peer">browse</xref> . View the additional files:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">CommonFramework</xref> , <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-306f220f-1980-4b1c-914e-d643a49f9d97.html" scope="peer">HeaderFile</xref></p> <p><b>Description</b> </p> <p>The example
+shows how cleanup can be implemented for <codeph>TAny*</codeph> type objects
+and 'R' type (resource type) objects. </p> <p>This example shows the use of <codeph>TAny*</codeph> cleanup
+type, for pushing a buffer to the cleanup stack. The buffer data is read from
+a file. </p> <p>Class <filepath>RFileWithCleanup</filepath> is derived from
+class <filepath>RFile</filepath>, to show how to add cleanup support to a
+general <filepath>R</filepath> class. </p> <p>This example adds cleanup support
+to the <filepath>RFile</filepath>. </p><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+<li><p><xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example writes files to the executable's
+process private directory on the writable drive: <filepath>\private\0FFFFF01\</filepath>. </p> <p>The
+second UID in the <filepath>.mmp</filepath> file is defined as <codeph>0x0FFFFF01</codeph> and
+this is used as the secure ID on which the name of the private directory is
+based. </p> </section>
+<section id="GUID-C42BF40F-94C4-5845-B449-164AD4578691"><title>TAnyRObjects2:
+cleaning up TAny* and ‘R’ type objects</title> <p><b>Download</b> </p> <p>Download
+the example:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-2a8a3745-6fc5-4b7e-bceb-c975b9126318.zip" scope="external">TAnyRObjects2.zip</xref> </p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref> , <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-306f220f-1980-4b1c-914e-d643a49f9d97.zip" scope="external">HeaderFile.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-2a8a3745-6fc5-4b7e-bceb-c975b9126318.html" scope="peer">browse</xref> . View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">CommonFramework</xref> , <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-306f220f-1980-4b1c-914e-d643a49f9d97.html" scope="peer">HeaderFile</xref>.</p> <p><b>Description</b> </p> <p>The example
+shows how cleanup can be implemented for <codeph>TAny</codeph> * type objects
+and 'R' type (resource type) objects. </p> <p>This example is similar to the <xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-D0A1DF34-2499-5F7E-80D1-0BFF74882EA6">TAnyRObjects1</xref> example.
+However, it enhances the interface to include an <codeph>OpenLC()</codeph> which
+opens the file, and pushes it on to the cleanup stack in one function call. </p><p><b>Class
+summary</b></p><ul>
+<li><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p></li>
+<li><p><xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref></p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example writes files to the executable's
+process private directory: <filepath>C:\private\0FFFFF02\</filepath>. </p> <p>The
+second UID in the <filepath>.mmp</filepath> file is defined as <codeph>0x0FFFFF02</codeph> and
+this is used as the secure ID on which the name of the private directory is
+based. </p> </section>
+<section id="GUID-C4F81443-E41D-52C6-9305-A1B7E45A1DC5"><title>Utilities:
+cleanup utilities</title> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-cd5a50ad-f191-4f0f-a266-a76d1d633092.zip" scope="external">Utilities.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-cd5a50ad-f191-4f0f-a266-a76d1d633092.html" scope="peer">browse</xref>.  View the additional file: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref></p> <p><b>Description</b> </p> <p>This example
+shows how the cleanup utilities (the templated functions <codeph>CleanupDeletePushL()</codeph>, <codeph>CleanupClosePushL()</codeph> and <codeph>CleanupReleasePushL()</codeph>, and <codeph>CleanupArrayDeletePushL()</codeph>) can be used. </p><p><b>Class
+summary</b></p><p> In addition to the templated functions:</p><ul>
+<li><p><xref href="GUID-2ECB3F11-6299-351C-B9D0-488C06559A6D.dita"><apiname>CleanupDeletePushL()</apiname></xref></p></li>
+<li><p> <xref href="GUID-16B0008A-0F85-3C1E-89E1-E7431E2C93B9.dita"><apiname>CleanupClosePushL() </apiname></xref></p></li>
+<li><p><xref href="GUID-B432961B-2613-3DAE-9260-67F53CC6B751.dita"><apiname>CleanupReleasePushL() </apiname></xref></p></li>
+<li><p> <xref href="GUID-145951D8-0A0F-31D2-B272-F46C037449E0.dita"><apiname>CleanupArrayDeletePushL()</apiname></xref></p></li>
+</ul><p>the examples implicitly use the templated classes:</p><p>Examples
+of APIs</p><ul>
+<li><p>CleanupDelete&lt;class T&gt;</p></li>
+<li><p>CleanupClose&lt;class T&gt;</p></li>
+<li><p>CleanupRelease&lt;class T&gt;</p></li>
+<li><p>CleanupArrayDelete&lt;class T&gt;</p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-16E7CF5D-4364-5F42-94FF-9F79BB52523D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-16E7CF5D-4364-5F42-94FF-9F79BB52523D" xml:lang="en"><title>Animation</title><shortdesc>This section explains how to create basic client-side animation
+and server-side sprite animation using the Animation framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e313175_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1708D9F8-1277-59B9-8130-BBEFFFF1F481.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1708D9F8-1277-59B9-8130-BBEFFFF1F481" xml:lang="en"><title>Media Client Image Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA" xml:lang="en"><title>A3F DevSound Component</title><shortdesc>The A3F DevSound component provides hardware accelerated access to audio functionality on the Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-17273087-B962-5E8A-8715-055C8BF34A5D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-17273087-B962-5E8A-8715-055C8BF34A5D" xml:lang="en"><title>Media Client Video Display Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Media Client Video Display library that belongs to the Multimedia Framework component. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D"><title>Creating and Preparing a Video Player</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to get started with the video player utility. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to create a new video player utility and prepare it for playing video data. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video player utility is used to open, play, and obtain information from sampled video data. This functionality is implemented by the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> class. The video data can be supplied either in a file, a descriptor or a URL. </p> </section> <section><title>Using Video Player Utility</title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-DB660B71-77EE-5A67-A49A-6A150E3A6698"><p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita#GUID-172F46C1-6066-57FA-A815-5AC23ACE159D/GUID-8A89116A-3D6E-5BB4-8A93-D37C0F654CBE">Create a Utility Object</xref>  </p> </li> <li id="GUID-DB5E2060-F2D3-5F84-A280-C7C4E4DE725F"><p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita#GUID-172F46C1-6066-57FA-A815-5AC23ACE159D/GUID-8D395F1B-3C5A-5B5F-BB3F-87FE551D0670">Open a Video Source</xref>  </p> </li> <li id="GUID-5ABA016B-A90A-5591-8435-1E2D4E24E72B"><p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita#GUID-172F46C1-6066-57FA-A815-5AC23ACE159D/GUID-A65713A3-2373-5DF0-85C6-5ADD83667C5C">Prepare to Play</xref>  </p> </li> </ul> <p id="GUID-8A89116A-3D6E-5BB4-8A93-D37C0F654CBE"><b>Creating a Utility Object</b> </p> <p>The high level steps to construct a video player utility object are shown here: </p> <ul><li id="GUID-B00A14AB-CB00-527B-B6FF-8B480362230F"><p>Create an object of this utility class using the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-012D95E1-609D-32FC-A8A4-2B109D51054D"><apiname>CVideoPlayerUtility::NewL</apiname></xref> function. </p> </li> </ul> <p id="GUID-8D395F1B-3C5A-5B5F-BB3F-87FE551D0670"><b>Opening a Video Source</b> </p> <p>The high level steps to open a video source are shown here: </p> <ol id="GUID-02B0CD7B-D2CF-57C7-898B-28E19A14FDB9"><li id="GUID-D4A33F3D-4E9B-5EA9-A0F6-88E10FDF2DC2"><p>Unlike <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility</apiname></xref>, video clips cannot be opened during instantiation of the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> class. Hence all the video clips must be opened using one of the following open functions: </p> <ul><li id="GUID-E2DF42A3-ADE6-5937-833F-D64439FB42E4"><p> <b>From a file </b>  </p> <codeblock id="GUID-814C00CA-4CFE-5801-8AE3-183F87526BE6" xml:space="preserve">OpenFileL(const TDesC&amp; aFileName, TUid aControllerUid=KNullUid);
+</codeblock> <p>This method opens the video clip from a file. It uses an optionally specified plugin in the argument to load a controller. If no controller plugin is specified, it searches through the list of available plugins and attempts to use each one until successful or the end of the list is reached. </p> <p> <b>Note:</b> There is also another method to open a video clip from a file. It is strongly recommended to use this method. </p> <codeblock id="GUID-195F9272-6DD0-5914-BC7F-D921A82F7CD2" xml:space="preserve">OpenFileL(const TMMSource&amp; aSource, TUid aControllerUid);</codeblock> <p>Where <codeph>aSource</codeph> is a filename or an open handle to a file containing the video clip and <codeph>aControllerUid</codeph> is an optionally specified plugin. If specified, it will force the video player to use the controller with the given UID. If no controller plugin is specified, this function searches through a list of all available plugins and attempts to use each one until successful or the end of the list is reached. </p> </li> <li id="GUID-A990A556-819C-53B7-80DE-D414C18A9B4F"><p> <b>From a descriptor</b>  </p> <codeblock id="GUID-97A4E430-C3AD-5F63-9D74-99E36C2F7107" xml:space="preserve">OpenDesL(const TDesC8&amp; aDescriptor, TUid aControllerUid=KNullUid);</codeblock> <p>This method opens the video clip from a descriptor. It opens the video clip contained as binary data in a descriptor using an optionally specified plugin in the argument to load a controller. If no controller is specified, it searches through the list of available plugins and attempts to use each one until successful or the end of the list is reached. </p> </li> <li id="GUID-8FB9CAE7-B050-57A0-855D-62F9F364FDF9"><p> <b>From an URL</b>  </p> <codeblock id="GUID-DA97F2DF-A98C-5DEF-87B8-83088B45A095" xml:space="preserve">OpenUrlL(const TDesC&amp; aUrl, TInt aIapId = KUseDefaultIap, const TDesC8&amp; aMimeType=KNullDesC8, TUid aControllerUid=KNullUid);</codeblock> <p>This method opens the video clip from the specified URL and identified by the MIME type. In addition a plugin can be specified if necessary. If no controller plugin is specified, this function searches through a list of all available plugins and attempts to use each one until successful or the end of the list is reached. </p> </li> </ul> </li> <li id="GUID-662E06BE-A7E6-565F-80AF-266E6424B717"><p>As the opening of the video clip is complete, successfully or otherwise, the callback function <xref href="GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9.dita#GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9/GUID-E728A509-8651-365A-89BA-86486DD70D16"><apiname>MVideoPlayerUtilityObserver::MvpuoOpenComplete()</apiname></xref> is called. This notifies the client whether the video clip was successfully opened or not. </p> </li> </ol> <p> <b>Note:</b> To open and automatically play video clips, use the following open functions: </p> <codeblock id="GUID-DEA0B952-1B0E-5DE4-863A-107E2BCEEFFF" xml:space="preserve">OpenAndPlayFileL(const TDesC&amp; aFileName, TUid aControllerUid=KNullUid);
+
+OpenAndPlayDesL(const TDesC8&amp; aDescriptor, TUid aControllerUid=KNullUid);
+
+OpenAndPlayUrlL(const TDesC&amp; aUrl, TInt aIapId = KUseDefaultIap, const TDesC8&amp; aMimeType=KNullDesC8, TUid aControllerUid=KNullUid);</codeblock> <p id="GUID-A65713A3-2373-5DF0-85C6-5ADD83667C5C"><b>Preparing to Play</b> </p> <p>The high level steps to prepare to play video are shown here: </p> <ol id="GUID-2FA8DE8B-59DB-5C90-9CD4-CDEFFFD99F30"><li id="GUID-AE8AE61F-D2EC-587C-8065-74E7D702AF11"><p>Once the video data is ready, call the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B4FB00AA-A85B-3A3F-91BE-C5347462BA95"><apiname>CVideoPlayerUtility::Prepare()</apiname></xref> function. </p> <codeblock id="GUID-EDB242D1-96E8-591A-9E56-CA931EF9C42F" xml:space="preserve">void CVideoPlayerUtility::Prepare()
+    {
+    iBody-&gt;Prepare();
+    }</codeblock> </li> <li id="GUID-E8D26EAD-AA50-5691-AED3-97BB99CCE348"><p>When the client receives the <xref href="GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9.dita#GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9/GUID-54AAEF56-60B8-3951-A8C6-5DD225CF8D30"><apiname>MVideoPlayerUtilityObserver::MvpuoPrepareComplete()</apiname></xref> callback, the video player utility will be in configured state. </p> </li> </ol> </section> <section><title>See Also</title> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1733B4E1-3264-58DF-957B-F5C0AE1E0644.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1733B4E1-3264-58DF-957B-F5C0AE1E0644" xml:lang="en"><title>Retrieving
+Keystores</title><shortdesc>This section explains how to retrieve keystore implementations. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Keystores can be used in manager mode or user mode. In manager
+mode, modifications to an existing keystore can be performed through the <xref href="GUID-89FFDC49-F722-3A68-8601-C461AD2FBDF2.dita"><apiname>MCTKeyStoreManager</apiname></xref> interface.
+In user mode, a keystore can be viewed using the <xref href="GUID-2B3202F8-469D-3253-90E8-B553506AD47A.dita"><apiname>MCTKeyStore</apiname></xref> interface. </p><p> The
+following steps explain the process of retrieving keystores:</p> </context>
+<steps id="GUID-D16D66C2-BD90-584D-BD2E-0096D85A8C15">
+<step id="GUID-EE9F9F53-52F2-59C3-A65D-0569ABECBCB2"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-1CFCBA6B-7BAC-5994-BFB0-5AA63703BA06"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-4E386CB7-118B-5E5D-AE61-A4911719E029"><cmd/>
+<info>Retrieve the keystore in either of the following modes. </info>
+<substeps id="GUID-019BBF0F-33B9-5A7D-B245-D65C2463F1B4">
+<substep id="GUID-6B9577C5-15C8-50FC-B553-E9B8EB7BAC1E"><cmd/>
+<info>Read/write mode </info>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-AB8E29A7-8C56-3B54-A1F1-A1BB140F4DD3"><apiname>CUnifiedKeyStore::KeyStoreManager()</apiname></xref> function
+to get the required <xref href="GUID-89FFDC49-F722-3A68-8601-C461AD2FBDF2.dita"><apiname>MCTKeyStoreManager</apiname></xref> object using an
+appropriate index of the keystore. </info>
+</substep>
+<substep id="GUID-4A2D4A9C-BF5B-58AB-91B8-3703F9AE5F4D"><cmd/>
+<info>Read-only mode </info>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-534E9428-E03F-3C90-948E-9456365B1D67"><apiname>CUnifiedKeyStore::KeyStore()</apiname></xref> function to
+get the required <xref href="GUID-2B3202F8-469D-3253-90E8-B553506AD47A.dita"><apiname>MCTKeyStore</apiname></xref> object using an appropriate
+index of the keystore. </info>
+</substep>
+</substeps>
+</step>
+</steps>
+<result><p>Returns a keystore, which can be used to perform operations. </p><p>The
+following code snippet shows how to retrieve keystores in manager mode. </p> <codeblock id="GUID-E4C9D64F-F1DB-5C81-9574-5E0C149C4756" xml:space="preserve">
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs); 
+
+...
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+...
+
+
+//Retrieve the keystore present at the specified index
+//If the keystore index is invalid 
+//or the specified keystore cannot be opened in manager mode
+//then the manager object is NULL
+
+MCTKeyStoreManager&amp; manager = keyStore-&gt;KeyStoreManager(0);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </result>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e347864_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1747534D-063A-45B0-8636-E7767F984BB0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1747534D-063A-45B0-8636-E7767F984BB0" xml:lang="en"><title>Generating
+a Certificate Request</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Create a private key and a self signed certificate as explained
+in the <xref href="GUID-55A6DA94-FAE6-442D-BBA8-82F92D4C63F2.dita">Creating a Private
+Key and Self Signed Certificate</xref>. </p></prereq>
+<steps-unordered id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-4-1-1-4-1-4-1-4-1-6-1-2-2">
+<step id="GUID-F4C2AD1D-476E-4E7E-887F-0678A1F5346F"><cmd>Run MakeKeys at
+the command prompt using the <codeph>-req</codeph> option.</cmd>
+<info><p>The following is the syntax: </p><codeblock xml:space="preserve">&gt; makekeys -req [-v] [-password &lt;password&gt;] -dname &lt;distinguished-name-string&gt; &lt;private-key-file&gt; &lt;public-key-cert&gt;&lt;cert-request-file&gt;</codeblock><note type="important">The <codeph>&lt;cert-request-file&gt;</codeph> must specify
+a name for the output certificate request file with <codeph>.p10</codeph> extension.</note></info>
+<stepxmp><p>For example, </p><codeblock xml:space="preserve">&gt; makekeys -req -dname "CN=Symbian Foundation Developer O=Symbian Foundation C=GB" HelloWorld.key HelloWorld.cer HelloWorldreq.p10
+</codeblock><p>Here, the <codeph>-dname</codeph> provides a simple distinguished
+name string to the MakeKeys tool. <codeph>HelloWorld.key</codeph> is the private
+key file and <codeph>HelloWorld.cer</codeph> is the public key self-signed
+certificate file that were created previously using MakeKeys. <codeph>Helloworldreq.p10</codeph> is
+the name of the output certificate request file. </p></stepxmp>
+</step>
+</steps-unordered>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-174D98FF-6782-564E-9FDF-1AE32F770591.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-174D98FF-6782-564E-9FDF-1AE32F770591" xml:lang="en"><title>Sound
+Device Collection Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Sound Device collection provides a common interface for all audio functionality. </p>
+<section><title>Purpose</title> <p>The Sound Device collection represents
+a framework for hardware accelerated access to audio functionality on the
+Symbian platform. </p> </section>
+<section><title>Architectural relationship</title> <p>The Sound Device collection
+interacts with audio plug-ins and audio processing hardware. </p> </section>
+<section><title>Description</title> <p>The Sound Device collection includes
+a client API for audio and a plug-in interface, where plug-ins correspond
+to a particular accelerated function, such as MP3 decoding. </p> </section>
+<section><title>Components</title> <p>The Sound Device collection comprises
+the following components: </p> <ul>
+<li id="GUID-064C2E4F-113B-5C0B-9662-2DAD5D574F71"><p>DevSound API - the common
+API for all audio functionality. </p> </li>
+<li id="GUID-EF2413F1-9747-54B8-8EB4-23C736540C37"><p>Advanced Audio Adaptation
+Framework (A3F) - an alternative implementation of DevSound. </p> </li>
+<li id="GUID-401DEFD4-7506-5EA8-8B93-C70E4BD11F66"><p>DevSound Plug-in Support
+- provides support for loading plug-in implementations. </p> </li>
+<li id="GUID-4BC07079-DB38-5C39-B065-3F440C0DF081"><p>Reference DevSound Plug-ins
+- provides a DevSound reference implementation. </p> </li>
+</ul> </section>
+<section><title>Using Sound Device</title> <p>The Sound Device collection
+offers the following functionality: </p> <ul>
+<li id="GUID-726C6682-0C6D-5B3F-B1E0-2C1782048C50"><p>Playing and recording
+audio data. </p> </li>
+<li id="GUID-4EC6B4F5-3CAD-5D65-9511-972B3690F398"><p>Loading audio plug-ins. </p> </li>
+<li id="GUID-C0E3EFF7-B9B0-53E6-8480-B0427A6C47CE"><p>Implementing a DevSound. </p> </li>
+</ul> </section>
+<section><title>See also</title> <p><xref href="GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita">A3F
+DevSound</xref>  </p> <p><xref href="GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita">Advanced
+Audio Adaptation Framework Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-176913BA-3877-58E2-9E12-3606EE697813.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-176913BA-3877-58E2-9E12-3606EE697813"><title> Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces to the Advanced Camera Settings library in Ecam. The Advanced Camera Settings library is used by application developers to enable camera users to configure camera settings and by device creators to define default and mandatory software and hardware configuration settings. </p> <section><title>Purpose</title> <p>Advanced Camera Settings provides domain specific getters and setters for well known camera hardware settings. Image or video format, sizes and video frame rates are already well defined in the general <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita"><apiname>Ccamera</apiname></xref> API. </p> <p><b>Advanced Camera Settings Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-9C053250-4959-5DB9-9646-6E50A3EDDE87"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-EC265726-FA8D-3D91-9ECC-F68E5D444534.dita"><apiname>ecamadvsettings.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-B4E2E996-CFBE-3156-B02D-D0F2F634B3C7.dita"><apiname>ecam.lib</apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Advanced Settings. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The Advanced Settings is a part of the camera component. </p> </section> <section><title>Description</title> <p>The advanced settings class, <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E31AEB11-B7A0-3637-BB31-866306F78118"><apiname>CCamera::CCameraAdvancedSettings</apiname></xref>, provides access to common camera hardware settings related to image acquisition for still images and video. </p> <p>To allow the settings to be both flexible and rich enough to work with different camera hardware, settings are identified by UID values. You can get a list of UIDs of the supported and currently active settings, so that a user interface of the available options can be updated accordingly. The class also allows the range of possible values for a setting to be obtained. </p> </section> <section><title>Key Advanced Settings API Classes</title> <p>The key classes that make up the Advanced Settings are as follows: </p> <ul><li id="GUID-64ACC4F4-4001-573D-B561-A1DBC1A1C3BD"><p> <xref href="GUID-055FE6AE-0489-325A-BC84-C387E946D50D.dita"><apiname>MCameraPresets</apiname></xref>  </p> </li> <li id="GUID-D54D56F3-0666-51FF-8A5C-17A9822FB1B0"><p> <xref href="GUID-8B30B504-513B-387D-9389-4C26DCEE8372.dita"><apiname>MCameraAdvancedSettings</apiname></xref>  </p> </li> <li id="GUID-FB3E0B7F-5815-5D4B-B8E6-C1F6CF87D53F"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E31AEB11-B7A0-3637-BB31-866306F78118"><apiname>CCamera::CCameraAdvancedSettings</apiname></xref>  </p> </li> </ul> </section> <section><title>Using Advanced Camera Settings</title> <p>Clients can use the Advanced Settings to: </p> <ul><li id="GUID-81F86379-88CF-522B-81C3-C0D6E34C1023"><p>Build up a configuration set for a camera including: </p> <ul><li id="GUID-61F644CD-BC21-51BF-A976-EE340AF19350"><p>Camera type. <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-6C99156B-A23F-32C8-AA84-F7005EDEBD3E"><apiname>CCamera::CCameraAdvancedSettings::TCameraType</apiname></xref>  </p> </li> <li id="GUID-24923284-C4D4-5910-A990-7B3725A8DC7F"><p>Stabilization mode. <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-48DF3436-E92C-341B-ABA2-73B7A32CEDCD"><apiname>CCamera::CCameraAdvancedSettings::TStabilizationMode</apiname></xref>  </p> </li> <li id="GUID-0370445E-0DFF-5BB6-B1FA-BD8991529898"><p>Focus Mode. <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-877A6E33-8F63-3EFC-8D8C-F77857457B80"><apiname>CCamera::CCameraAdvancedSettings::TFocusMode</apiname></xref>  </p> </li> <li id="GUID-F09295E4-82A7-5D23-B2B6-0E29E6B3EF60"><p>plus several other configuration specifiers such as <xref href="GUID-FAF63EED-08F8-3374-AFF6-4FBD6F17CD3F.dita"><apiname>TDriveMode</apiname></xref>, <xref href="GUID-BF21D32B-91D3-321D-A900-96F6FC61D414.dita"><apiname>TBracketMode</apiname></xref>, <xref href="GUID-69C6A109-EF78-3A36-9E77-2B2007477B6B.dita"><apiname>TPictureOrientation</apiname></xref> and several others. </p> </li> </ul> </li> <li id="GUID-056CAC6B-4A4E-5A95-8988-0FB9E3C298F7"><p>List the UIDs of the supported and currently active settings, so that the user interface can be updated accordingly. </p> </li> <li id="GUID-58963101-6552-5FCD-AD8A-C94705F71279"><p>Support the continuous digital zooming functionality. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Overview</xref> of Camera Framework </p> <p><xref href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita">Advanced Settings for Focus, Drive Modes, and Bracket Modes</xref>  </p> <p><xref href="GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita">Continuous Digital Zooming</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4" xml:lang="en"><title>CreateStaticDLL
+and UseStaticDLL: using a statically linked DLL</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p>The example shows how a class implemented
+in a statically linked DLL is used. The DLL is built by <filepath>CreateStaticDLL</filepath> and
+is used by <filepath>UseStaticDLL</filepath>. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-2e2b4dbb-291f-428c-82bf-fe796b4f50f4.zip" scope="external">StaticDLL.zip</xref></p><p>Click on the following link to
+download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.zip" scope="external">CommonFramework.zip</xref>.</p><p>Click<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-2e2b4dbb-291f-428c-82bf-fe796b4f50f4.html" scope="peer"> browse StaticDLL</xref> to view the example code. </p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.html" scope="peer">browse CommonFramework</xref>  to view additional
+files.</p> </section>
+<section><title>Build and Usage</title> <p>It may be in the directory in which
+you installed Symbian platform, or it may be in <filepath>src\common\developerlibrary\</filepath>.
+It includes the project files needed for building: <filepath>bld.inf</filepath> and
+two <filepath>.mmp</filepath> files. </p> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian platform build process</xref> describes how to build Symbian programs.
+To run this example: </p> <ol id="GUID-C12016AA-4582-5812-BD1B-4D36A27679EB">
+<li id="GUID-9CC286FF-4935-5C53-A5D5-486A280E4437"><p>Build <filepath>CreateStaticDLL</filepath> project,
+which results in the following: </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or                 udeb&gt;\CREATESTATICDLL.DLL</filepath>. </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or                 udeb&gt;\CREATESTATICDLL.lib</filepath>. </p> <p>They are
+needed by the <filepath>UseStaticDLL</filepath> project. </p> </li>
+<li id="GUID-BE21E3AF-9D89-5CC3-915E-1688BCC49866"><p>Build <filepath>UseStaticDLL</filepath>,
+which results in: </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or                 udeb&gt;\USESTATICDLL.EXE</filepath>. </p> <p>This project
+use the DLL created in the previous steps. </p> </li>
+<li id="GUID-E857288D-77D6-58E5-971A-7FFF8B95E843"><p>Run the executable <filepath>USESTATICDLL.EXE</filepath>. </p> <p>Executables
+for the <filepath>winscw</filepath> target can be run on your PC. Executables
+for ARM targets must be copied to a phone before being run. </p> </li>
+</ol> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-179099DA-1CD9-5912-B41B-363C132C7A86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-179099DA-1CD9-5912-B41B-363C132C7A86" xml:lang="en"><title>Processing Email in Chunks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to process email in chunks. </p> </conbody><related-links><link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method to Process
+  Emails</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e312839_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B" xml:lang="en"><title>BIO
+Messaging Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The BIO Messaging Framework provides a framework supports plug-ins which
+receive, parse and process BIO messages </p>
+<p>Bearer Independent Objects (BIO) messages contain data that can be received
+and interpreted by the device. Unlike conventional messages—such as, SMS and
+email, BIO messages does not depend on the type of transport over which it
+is received. not intended to be read by the user in their raw form. BIO messages
+can be received over a number of bearers: IR, Bluetooth, SMS and WAP Push. </p>
+<section><title>Purpose</title> <p>Plug-ins supported by the framework handle
+incoming BIO messages received by a phone. BIO messages are sent to the system
+to update attributes on the system. </p> <p>Examples of BIO messages are vCards
+vCals, device settings, ringtones, graphical logos and icons, Internet access
+point setup messages and Over the Air (OTA) configuration messages. vCards
+are parsed and then displayed to the user, and when accepted they modify the
+user’s contact database. OTA configuration messages are parsed before they
+are displayed to the user, and if accepted they create email accounts or internet
+access points. </p> </section>
+<section id="GUID-6E7D52CF-F18C-5C92-9DB2-611EDD018048"><title>Key terms</title> <dl>
+<dlentry>
+<dt>vCard</dt>
+<dd><p>An electronic business card, which is a collection of properties. Properties
+can be a property name, one or more property parameters. and a property value. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>vCal</dt>
+<dd><p>An electronic calendar entry, which consists of a collection of properties. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>BIO Messaging Framework comprises
+of three main components—<xref href="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita#GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B/GUID-BA671884-B143-52B0-9F48-1801F465F6D6">BIO
+MTM</xref>, <xref href="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita#GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B/GUID-38031091-ED66-51CF-A025-85C7CEEC3D7D">BIO
+database</xref> and <xref href="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita#GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B/GUID-9C9FDAE8-B89A-57EF-8F56-E0C84D9E5837">BIO
+parser</xref>. </p> <p>BIO messages are not received by the BIO Message Framework
+directly. They come over other subsystems to the BIO database. For example,
+the SMS watchers receive BIO messages from the SMS stack and use BIO Messaging
+Framework to tag the messages with the correct BIO ID. </p> <p>The following
+figure illustrates the BIO Messaging Framework architecture: </p> <fig id="GUID-2CEE40B9-2559-5CF3-B98F-2472F6B4D35D">
+<title>              BIO Messaging Framework architecture            </title>
+<image href="GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e262473_href.png" placement="inline"/>
+</fig> <p id="GUID-38031091-ED66-51CF-A025-85C7CEEC3D7D"><b>BIO database</b> </p> <p>The
+BIO database is used to identify the type of BIO messages. It maps message
+attributes, such as port number, MIME type, or leading string to a BIO type.
+These attributes are then used by clients of the BIO Message Framework to
+determine what ports to listen for messages. For example, SMS messages which
+start with that string and, when storing these messages in the inbox, tag
+them with the BIO ID associated with that leading string. </p> <p><b>BIO watcher</b> </p> <p>BIO
+watcher is part of the <xref href="GUID-4603D4ED-966F-5F70-B991-D10495BC2D7E.dita">Watcher
+Framework</xref>, which handles BIO messages that come from the SMS and WAP
+stack. It firsts identifies the type of BIO message using the BIO database,
+and then creates a BIO message in a Message Store using the messaging APIs. </p> <p><b>BIF
+files and utilities</b> </p> <p>BIO Information Files (BIF) are resource files
+that are read by the BIO database to provide registration information of BIO
+message types. There is one BIF file for every BIO message type. They encapsulate
+the information required for identifying BIO messages. The information may
+include the expected port number, MIME type or leading string. Different BIO
+watchers use different information. </p> <p>BIF files can be one of two formats.
+The first format is a resource file and the second format is a custom binary
+format for representing the data fields in the BIF file. The BIF utilities
+(<filepath>bifu.dll</filepath>) provide the functionality to read information
+in BIF files of both formats. </p> <p id="GUID-BA671884-B143-52B0-9F48-1801F465F6D6"><b>BIO
+MTM</b> </p> <p>The BIO Client MTM is responsible for loading the BIO database
+and BIO utilities to handle parse or process requests from messaging clients.
+It is called by a messaging client to parse or process a BIO message that
+is saved in a Message Store. If the client is trusted with the correct capabilities,
+the BIO parser DLLs are loaded successfully. Without the right capabilities,
+the DLLs will not run. A BIO watcher saves the BIO message with the BIO flag
+and the appropriate BIO type set. </p> <p>The BIO MTM does not support sending
+messages and therefore does not support reply or forward of BIO messages.
+Forwarding and replying to BIO messages is supported by the MTM that the message
+is sent over, for example SMS. </p> <p id="GUID-9C9FDAE8-B89A-57EF-8F56-E0C84D9E5837"><b>BIO
+parser and utilities</b> </p> <p>BIO parsers are plug-ins (DLLs) that provide
+parsing and processing functionality for incoming BIO messages. The parser
+uses BIO utilities to provide base functionality. BIO utilities that load
+the BIO parser use the DLL filename and load the DLLs from the <filepath>\sys\bin</filepath> location. </p> <p>Each
+BIO parser implements the <xref href="GUID-2DBFC4F4-3675-32DD-ACF7-B075827C4181.dita"><apiname>ParseL</apiname></xref> and <xref href="GUID-1451C2B5-426E-30F3-AD30-C05ECA1BF4EF.dita"><apiname>ProcessL</apiname></xref> functions.
+The level of functionality varies between parsers. Some parsers update the
+final repository with the received data. For example, the WAP parser updates
+the <codeph>CommDb</codeph> with the received settings. Some parsers save
+data in an unparsed state for processing by another component. This secondary
+parsing is not part of BIO Messaging Framework and must be initiated by a
+messaging client. For example, when generic file parser (GFP) saves a vCard
+data as a file to update the contact database, the UI must then invoke the
+Versit parser to parse the vCard and commit it to the contact database. </p> <p>It
+is possible to add new BIO parsers to provide support for different types
+of BIO message. The following are the types of parsers provided by Symbian: </p> <ul>
+<li id="GUID-884D2387-313D-5408-A72B-607036AAA67A"><p> <b>Generic file parser
+(GFP):</b> The generic file parser can be used to identify and save a variety
+of BIO data types, for example, vCards and vCals. The generic file parser
+does not process the data, it saves it in the message store for processing
+by another component. The file is saved as an attachment of the message entry
+that is parsed. </p> </li>
+<li id="GUID-732BB8B0-DD6D-5808-A260-598343727228"><p> <b>OTA parser (WAPP):</b> The
+WAPP parser decodes Nokia OTA messages and updates CommDb to reflect the received
+settings. </p> </li>
+<li id="GUID-5A42A060-4B0C-5581-A584-A34914F6B972"><p> <b>Internet Access
+Parser (IACP):</b> The IACP parser decodes Nokia smart messages and updates
+the CommDb and messaging settings where appropriate. </p> </li>
+</ul> </section>
+<section><title>API summary</title> <p> <xref href="GUID-B752DB50-DF39-3FE2-975C-D49318426F93.dita"><apiname>CBIOClientMtm</apiname></xref>, <xref href="GUID-115327CD-43D1-324B-84D7-8DFB6226C42A.dita"><apiname>CBIODatabase</apiname></xref> and <xref href="GUID-7A187B0D-79D6-3EAD-8181-FE2EBB9043DC.dita"><apiname>CBaseScriptParser2</apiname></xref> are the main APIs of BIO Message Framework. </p> </section>
+</conbody><related-links>
+<link href="GUID-4603D4ED-966F-5F70-B991-D10495BC2D7E.dita"><linktext>Watcher Framework</linktext>
+</link>
+<link href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita"><linktext>Example code</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-17F3FFF4-00B8-492F-95BD-11AFF02CAAB2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-17F3FFF4-00B8-492F-95BD-11AFF02CAAB2" xml:lang="en"><title>Adding
+items to the choice list</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use the method <codeph>CAknChoiceList::AddItemL()</codeph> to add items
+to the choice list one by one. You can also add items in an array, or from
+resources. With this method, the items are added to the end of the list.</p>
+<codeblock xml:space="preserve">_LIT( KListItemNew, "New Item" );
+TInt index = iChoiceList-&gt;AddItemL( &amp;KListItemNew );</codeblock>
+<p>To add items to a specified location in the list, use the method <codeph>CAknChoiceList::InsertItemL()</codeph>.
+Note that in order to do this, you need to know the index of the location
+you want to add the item to. For details on how the list items are indexed,
+see <xref href="GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita">Using the Choice
+list API</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-18182059-859D-51CF-A940-D230D9F9CF8C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-18182059-859D-51CF-A940-D230D9F9CF8C" xml:lang="en"><title>How
+to allocate and de-allocate cleanup stacks</title><shortdesc>This document describes when and how a cleanup stack should be
+allocated and de-allocated.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The main categories of programs (GUI applications and servers) both have
+cleanup stacks created for them as part of their respective frameworks. Simple
+console programs for test and demonstration purposes though require a cleanup
+stack to be explicitly allocated. </p>
+<p>Allocate the stack at the beginning of the thread as follows:</p>
+<codeblock id="GUID-204BB8EA-016F-53CA-BB22-17B685BFF18A" xml:space="preserve">TheTrapCleanup=CTrapCleanup::New();</codeblock>
+<p>De-allocate the cleanup stack at the end of the thread as follows:</p>
+<codeblock id="GUID-C8A45849-E86C-5DA6-B1A5-88113B06C2B7" xml:space="preserve">delete TheTrapCleanup;</codeblock>
+<section id="GUID-9E86AB70-D551-4356-9001-749FBE8B2DCE"><title>Notes</title> <ul>
+<li id="GUID-37929EEE-F608-5754-9324-6731FEA5B1B2"><p>This explicit allocation
+and de-allocation is necessary for threads which use cleanup processing. Threads
+which do not use cleanup stack processing need not allocate a cleanup stack. </p> </li>
+<li id="GUID-6B30E7F5-1D29-50EF-8896-0CD8400BBBCF"><p>Note that the cleanup
+stack variable name (<codeph>TheTrapCleanup</codeph> in this case) is only
+used to reference the stack when it needs to be destroyed. Therefore the user
+is at liberty to give the stack any valid variable name. Multiple cleanup
+stacks are supported: the system holds a stack of cleanup stacks, of which
+the top item is the current cleanup stack. As such, when a new stack is created
+it is pushed onto the stack of cleanup stacks, making it the current cleanup
+stack. When it is destroyed, it is pushed off the stack of cleanup stacks
+making the previously stacked cleanup stack the current one.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1824B323-AAA8-5403-A4CF-D1F530CBDAF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1824B323-AAA8-5403-A4CF-D1F530CBDAF5"><title>Introduction to space reclamation and compaction</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When a stream is replaced or deleted, the space it occupies is not immediately available for re-use by other streams. There are two things you can do about this:</p> <ul><li id="GUID-4DDE58C7-78C8-5356-A7EA-FA1D24BFE327"><p>reclaim unused space; this makes it available for re-use by the store</p> </li> <li id="GUID-FBC8264B-B808-57D3-91FA-60A5C5074226"><p>compact; this makes unused space available for re-use by the relevant system pool; for example, the filing system in the case of file-based stores.</p> </li> </ul> <p>Space reclamation and compaction are only supported by the permanent file store, <codeph>CPermanentFileStore</codeph>, and are not supported by embedded or direct file stores. Because permanent file stores must maintain their integrity, even when a transaction fails, normal operations use a relatively conservative approach to update these stores without overwriting old data. Therefore, applications using permanent file stores must compact them regularly.</p> <p>The task of both space reclamation and compaction can be approached in one of two general ways:</p> <ul><li id="GUID-4F10D740-C890-51AB-80A6-6DC76FFC39AA"><p>as a single, possibly long-running, job</p> </li> <li id="GUID-53D117F5-809C-5AB2-97E8-5AD087ABB434"><p>incrementally, as a series of small steps, running either synchronously or asynchronously.</p> </li> </ul> <section><title>See also</title> <p><xref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita">File stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB" xml:lang="en"><title> Connecting
+and Disconnecting a Remote Host Tutorial</title><shortdesc>This topic describes how to connect and disconnect a remote host. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<section><title>Introduction</title><p>To send and receive the data packets,
+a connection must be established with a remote host. This tutorial describes
+the following: </p><ul>
+<li><p> <xref href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita#GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB/GUID-E832AD84-7441-5AC2-9884-AAC0C736CCBE">How
+to Connect to a Remote Host</xref>  </p> </li>
+<li><p>  <xref href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita#GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB/GUID-A1FD6397-0110-50FE-89E2-CB0734FD5D22">How
+to Disconnect from a Remote Host</xref>  </p> </li>
+<li><p>  <xref href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita#GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB/GUID-D1876052-357C-5D1B-AC2D-23536CC60FF6">How
+to Listen to a Connect Request</xref> </p> </li>
+<li><p>  <xref href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita#GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB/GUID-90E124C2-4B2C-51FE-AF07-923853C617B7">How
+to Accept a Connect Request</xref>  </p> </li>
+<li><p>  <xref href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita#GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB/GUID-7727C0A0-5D80-5325-991E-0BA627B1356C">How
+to Shut down a Connection</xref>  </p> </li>
+</ul> </section>
+<section><title>How
+to Connect to a Remote Host</title><p>The high level steps to connect to a
+remote host are as follows:</p> <ol id="GUID-46E4E5C3-E121-5B53-8E52-E00C6FE664AB">
+<li id="GUID-84078269-543D-533E-B0C8-F571AFD0B049"><p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref> function
+connects to a remote host. The <codeph>RSocket::Connect()</codeph> parameters
+identifies the required type of socket connection. For more information, see <xref href="GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F.dita#GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F/GUID-EB1C5A5A-E40C-559B-82E9-D19F8E4F4B49">important
+parameters</xref> . </p> <p>For TCP sockets </p> <ol id="GUID-FCF6E01D-A632-595C-A79C-A17D13A9EE63">
+<li id="GUID-D10BD1B0-549C-5766-B81E-D5B88B2C9F9F"><p>An active connection
+is made to the remote host. When the socket call completes successfully, the
+socket can send and receive data. To create a connection, the protocol must
+establish a network interface and a route to the destination. For more information
+about this process and return values, see the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref> function. </p> </li>
+</ol> </li>
+<li id="GUID-37CC6747-BC8D-5C6E-8358-4EEEB5BC90C8"><p>For UDP </p> <ol id="GUID-1D9019A5-43C9-5D62-ABBC-8589472D24A1">
+<li id="GUID-54B60EA0-F3B1-5261-B795-E67A8D616C93"><p>UDP is a connectionless
+protocol which means the <codeph>RSocket::Connect()</codeph> does not have
+to be called before writing data with <codeph>RSocket::SendTo()</codeph>.
+It can be used to set the address for all data sent from the socket. In this
+case, <codeph>Send()/Write()</codeph> function can be used in addition to <codeph>SendTo()</codeph> function. </p> </li>
+</ol> </li>
+</ol><title>How to Disconnect from a Remote Host</title><p> For cancelling
+the connection  </p><p> The <codeph>RSocket::CancelConnect()</codeph> function
+cancels the outstanding connect operation with a remote host. This function
+also cancels any outstanding <codeph>RSocket::Ioctl()</codeph> calls. After
+this call, a socket can be reconnected by <codeph>RSocket::Connect()</codeph> function.
+ </p><title>How to Listen to a Connect Request</title><p> A TCP socket can
+be set to listen with <codeph>RSocket::Listen()</codeph>. The <codeph>aDataOut</codeph> argument
+is ignored.  </p><title>How to Accept a Connect Request</title><p> A connection
+request to a listening socket can be accepted with <codeph>RSocket::Accept()</codeph>.
+An <codeph>aConnectData</codeph> argument cannot be specified.  </p><title>How
+to Shut down a Connection</title><p> Use <codeph>RSocket::Shutdown()</codeph> to
+asynchronously shut down a TCP. Disconnection data is not supported.  </p><p> The
+following table describes the effects of different types of shut down for
+TCP:  </p><table id="GUID-278A0CA9-6C8E-4909-9D69-4535C025C51D">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><b>Type</b></entry>
+<entry><b>Action</b></entry>
+</row>
+<row>
+<entry><codeph>ENormal</codeph></entry>
+<entry>Blocked reads and writes are terminated. No further data is accepted
+from the remote source and TCP disconnect is initiated. </entry>
+</row>
+<row>
+<entry><codeph>EStopInput</codeph></entry>
+<entry>Blocked reads are terminated. No further data is accepted from the
+remote source.</entry>
+</row>
+<row>
+<entry><codeph>EStopOutput</codeph></entry>
+<entry>Blocked writes are terminated. TCP disconnect is initiated.</entry>
+</row>
+<row>
+<entry><codeph>Eimmediate</codeph></entry>
+<entry>Blocked reads and writes are terminated. The connection is terminated
+by sending a reset.</entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B"><title>Reading to a Data Stream</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to copy data from a database into a data stream. </p> <section><title>Introduction</title> <p>You can read data from the table into a data stream in one chunk or in bits as desired. </p> </section> <section><title>Basic procedure</title> <p>The high level steps to read the data into a data stream are shown here: </p> <ol id="GUID-E30DA5B1-CC4E-59CD-ADF0-8C8A36BB5F3F"><li id="GUID-61A9000A-4915-51DF-9F85-8D99BDF5B526"><p>Configure your SQL statement and data stream. </p> </li> <li id="GUID-63659491-43A0-5020-9A95-F41124A14D5B"><p>Read data to a stream. </p> </li> <li id="GUID-750CC613-90F8-5832-B75D-28B7EC00A1D0"><p>Clean up. </p> </li> </ol> </section> <section><title>Detailed steps</title> <p>To read the data into a data stream, do the following: </p> <p><b>Configure your SQL statement and data stream</b> </p> <ol id="GUID-DBC563EC-623B-547A-B3F8-56AF2CAF9A40"><li id="GUID-2206671E-AA58-561D-ACA9-4636DE315D72"><p>As a first step instantiate an object of the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> and <xref href="GUID-35BF7B4A-C4F7-3215-B5DF-6D0682247976.dita"><apiname>RSqlColumnReadStream</apiname></xref> class. Also declare the variables as required. </p> <codeblock id="GUID-B752FF8C-23C3-564D-ADEE-29110F302E0B" xml:space="preserve">RSqlStatement myStatement;
+TInt err;
+TInt myColumnIndex;
+RSqlColumnReadStream myStream;
+</codeblock> </li> <li id="GUID-E5804513-1415-57F8-8672-A37E5510D749"><p>Clean up the stack. </p> <codeblock id="GUID-5EE16CEF-EFA0-5502-A6E8-4B79902FCE08" xml:space="preserve">CleanupClosePushL(myStream);</codeblock> </li> </ol> <p><b>Read data to a stream</b> </p> <ol id="GUID-0F218E4B-5A86-5F4B-A9E3-E9269FB35337"><li id="GUID-8B1F5CBB-98EC-541C-8808-3CF0A81FABFF"><p>Open the stream for read and associate the data with it. </p> <codeblock id="GUID-216077E0-F2C9-5933-8A19-EBCD7BDE65CC" xml:space="preserve">User::LeaveIfError(myStream.ColumnBinary(myStatement,myColumnIndex));</codeblock> </li> <li id="GUID-CD79E4F4-3EE4-54F9-BB8A-C37C5BC22FDB"><p>Determine the column size. </p> <codeblock id="GUID-B0D283A9-B8E7-560E-80CA-13E8DB845BA7" xml:space="preserve">TInt size = myStatement.ColumnSize(myColumnIndex);</codeblock> </li> <li id="GUID-0DFC9A61-78CA-5FB3-B949-01CB10B5D3B0"><p>Instantiate an object of the <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> class. Create a buffer of the size of the column. Then read the data into the buffer. </p> <codeblock id="GUID-6BBE596B-7C9B-540B-966D-90547E4ACDD8" xml:space="preserve">RBuf buf;
+        buf.CreateL(size);
+        CleanupClosePushL(buf);
+        myStream.ReadL(buf,size);
+</codeblock> </li> <li id="GUID-526F67C0-B219-509A-8B4F-328527C3984F"><p>Close the buffer. </p> <codeblock id="GUID-9D50E196-598F-51CC-B3D8-830E26C1B2B6" xml:space="preserve">CleanupStack::PopAndDestroy();</codeblock> </li> </ol> <p><b> Clean up</b> </p> <p>Close the stream. </p> <codeblock id="GUID-EF2E397B-7176-58CE-B577-011A0DB7191D" xml:space="preserve">CleanupStack::PopAndDestroy();</codeblock> </section> <section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying a Database</xref>  </p> <p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting a Row into a Table</xref>  </p> <p> <xref href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita">Deleting Rows from a Table</xref>  </p> <p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a Buffer</xref>  </p> <p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"> Reading to Memory </xref>  </p> <p>Reading to a Data Stream - This document </p> <p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref>  </p> <p> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-183D31B7-992E-4537-9831-C859EB61D10F.swf has changed
Binary file Symbian3/SDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e376399_href.png has changed
Binary file Symbian3/SDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404-master.png has changed
Binary file Symbian3/SDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e183595_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-186B9876-2A08-5F23-BB49-49EC34C51507.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-186B9876-2A08-5F23-BB49-49EC34C51507"><title>Using Signals to Terminate Processes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A P.I.P.S. process can terminate another P.I.P.S process by sending a <codeph>SIGKILL</codeph> or a <codeph>SIGTERM</codeph> signal to it using <xref href="GUID-16DC4A9D-44BC-36E2-AB97-5E9E7521937D.dita"><apiname>kill()</apiname></xref> or <xref href="GUID-3C70BF0B-CD6E-3A30-A9E6-4CCF11D47EEC.dita"><apiname>sigqueue()</apiname></xref>. </p> <p> <codeph>SIGKILL</codeph> terminates a process without any notification. Typically it used by a parent process to manage its children, or by a system utility to terminate other applications. </p> <p> <b>Note:</b> Your process must have the <b>PowerMangement</b> capability to send a SIGKILL signal to another process. </p> <p> <codeph> SIGTERM</codeph> is a request for termination. The receiving process can choose to shutdown gracefully or ignore the request. The following example code demonstrates how you can handle a <codeph>SIGTERM</codeph> signal and shutdown a process: </p> <codeblock id="GUID-F07EC689-C3DD-51BF-BFA8-6A430D42814A" xml:space="preserve">#include &lt;signal.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+void sighandler(int signum)
+    {
+    if(signum == SIGTERM)
+        {
+        // Perform clean up
+        exit(-1);
+        }
+    else
+        printf(“Error: Unknown signal”);
+    }
+int main()
+    {
+    signal(SIGTERM,sighandler); // When SIGTERM arrives, invoke sighandler()
+    // program logic
+    return 0;
+    }</codeblock> </conbody><related-links><link href="GUID-66C1493D-5B85-558A-9A39-454E6EBA307B.dita"><linktext>Signal Emulation on Symbian
+                Platform</linktext> </link> <link href="GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA.dita"><linktext>Using Signals to Handle Exceptions</linktext> </link> <link href="GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B.dita"><linktext>Using Signals to Handle Asynchronous
+                Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1879BEEB-9945-55F4-817E-8D6117055B1D"><title>nocompresstarget</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>nocompresstarget</codeph> </p> <p>Use the <codeph>nocompresstarget</codeph> statement to specify that the target executable should not be compressed (see <xref href="GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita">compresstarget</xref> for details of the compression option).</p> <p>If neither <codeph>nocompresstarget</codeph> nor <codeph>compresstarget</codeph> is specified, then the default for the platform is selected.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-188F9462-F805-522A-84FF-770EAB045504.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-188F9462-F805-522A-84FF-770EAB045504" xml:lang="en"><title>An
+example registration file and icon/caption file</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>This document describes two methods
+of defining application registration information. In both cases, a minimal
+example registration file called <filepath>HelloWorld_reg.rss</filepath> is
+used. In the first method, the icon/caption information is defined in its
+own file. In the second, it is defined in the application's UI resource file.
+The registration file is largely the same in both cases. </p> </section>
+<section><title>Registration file with an icon/caption definition file</title> <p><b>The
+registration file </b> </p> <p>A registration file is a resource file that
+is compiled by the resource compiler in the standard way, by including lines
+like the following in the application's mmp file: </p> <codeblock id="GUID-CA21DAF9-C789-54D3-B768-212F03EB8EAB" xml:space="preserve">START RESOURCE    HelloWorld_reg.rss
+TARGETPATH        \private\10003a3f\apps
+END</codeblock> <p>This will cause <filepath>HelloWorld_reg.rss</filepath> to
+be compiled, creating <filepath>HelloWorld_reg.rsc</filepath>. On the Symbian
+emulator, all registration files should be located in <filepath>\private\10003a3f\apps</filepath>.
+This is also true on real hardware for registration files built into the ROM.
+For applications installed onto a phone using the standard software installation
+method, their registration files should be installed into <filepath>\private\10003a3f\import\apps</filepath>.
+In all cases, the registration file must be located on the same drive as the
+application. </p> <p>A minimal registration file looks like this: </p> <codeblock id="GUID-386B4305-538A-58B7-9908-34104EE20814" xml:space="preserve">#include &lt;appinfo.rh&gt;
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x10004299 // application UID
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "HelloWorld";
+    localisable_resource_file = "\\resource\\apps\\HelloWorld_loc";
+ }</codeblock> <p>All registration files must define <codeph>UID2</codeph>,
+which is always <codeph>KUidAppRegistrationResourceFile</codeph>, and <codeph>UID3</codeph>,
+which is the application's UID, and an <codeph>APP_REGISTRATION_INFO</codeph> resource
+that minimally needs to provide the name of the application binary (using
+the <codeph>app_file</codeph> statement). All registration files need to <codeph>#include</codeph>  <filepath>appinfo.rh</filepath>. </p> <p>If
+a localisable icon/caption definition file is provided, as in this example,
+its full path and filename must be specified, excluding the drive letter and
+file extension. </p> <p><b>The localisable icon/caption definition
+file </b> </p> <p>This file defines the application's captions and the name
+of the icon file. It is built to the <filepath>\resource\apps\</filepath> directory
+on the same drive as the registration file; this applies both on the Symbian
+emulator and target phone. By convention it has the same filename as the application,
+but with a <filepath>_loc</filepath> suffix. </p> <p>It is a standard localisable
+Symbian resource file, so it is compiled by the resource compiler by including
+lines like the following in the application's mmp file: </p> <codeblock id="GUID-FB3180D0-086E-5B3B-BC73-51BA723512D6" xml:space="preserve">start resource    HelloWorld_loc.rss
+targetpath        \resource\apps
+lang            01 02
+end</codeblock> <p>These lines cause two versions of the file to be compiled,
+called <filepath>HelloWorld_loc.r01</filepath> and <filepath>HelloWorld_loc.r02</filepath>. <filepath>HelloWorld_loc.rss</filepath> looks
+like this: </p> <codeblock id="GUID-BFADC6C8-6D06-50A6-BB0E-CCE40C7D12D0" xml:space="preserve">#include &lt;appinfo.rh&gt;
+#ifdef LANGUAGE_01
+#include "HelloWorld01.rls"
+#elif defined LANGUAGE_02
+#include "HelloWorld02.rls"
+#endif
+RESOURCE LOCALISABLE_APP_INFO
+    {
+    short_caption = STRING_r_short_caption;
+    caption_and_icon =
+        {
+        CAPTION_AND_ICON_INFO
+            {
+            caption = STRING_r_caption;
+            number_of_icons = 3; // each icon must be a bitmap/mask pair
+            icon_file = STRING_r_icon_file;
+            }
+        };                            
+    }</codeblock> <p>Unlike most resource files, because there is only one
+resource defined in the file, it does not need to include a four character <codeph>NAME</codeph> or
+an <codeph>RSS_SIGNATURE</codeph> resource, and the <codeph>LOCALISABLE_APP_INFO</codeph> resource
+does not need an ID. </p> <p>The captions and the icon filename are referred
+to by symbolic identifiers rather than by the strings themselves. The strings
+are defined in <filepath>.rls</filepath> files (resource localisable string
+files), as shown below and conditional compilation statements are used to
+include the appropriate <filepath>.rls</filepath> file. For more information,
+on localising strings in resource files, see <xref href="GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita">How
+to localise resources</xref>. </p> <p> <filepath>HelloWorld01.rls</filepath> contains: </p> <codeblock id="GUID-CC264837-CE3D-514A-A35A-032CE6F040C1" xml:space="preserve">rls_string STRING_r_short_caption "Hello"
+rls_string STRING_r_caption "Hello World"
+rls_string STRING_r_icon_file "z:\\resource\\apps\\Hello.mbm"</codeblock> <p> <filepath>HelloWorld02.rls</filepath> contains: </p> <codeblock id="GUID-941FDCF8-FAE9-5E3B-A5AA-FC85A6D6B9FA" xml:space="preserve">rls_string STRING_r_short_caption "Bonjour"
+rls_string STRING_r_caption "Bonjour tout le monde"
+rls_string STRING_r_icon_file "z:\\resource\\apps\\Bonjour.mbm"</codeblock> <p>The
+mbm icon files are built by adding <xref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita">start
+bitmap</xref> statements to the mmp file, for instance: </p> <codeblock id="GUID-B73430EF-510C-583E-B721-E82BB4BE1784" xml:space="preserve">START BITMAP    Hello.mbm
+TARGETPATH        \Resource\Apps
+SOURCE            c8,1 icon24.bmp icon24m.bmp icon32.bmp icon32m.bmp icon48.bmp icon48m.bmp
+END</codeblock> </section>
+<section><title>Registration file without an icon/caption definition file</title> <p>As
+an alternative to defining the icon/caption information in an icon/caption
+definition file, it can be defined in the application's existing UI resource
+definition file. In this case, the <codeph>LOCALISABLE_APP_INFO</codeph> resource
+must be given an ID, because it is no longer the only resource defined in
+the file. The registration file is as before, except that it must now specify
+the ID of the <codeph>LOCALISABLE_APP_INFO</codeph> resource as well as the
+name and location of the UI resource file. In other words, the line: </p> <codeblock id="GUID-08AEB128-25E5-52DA-AD3E-C8733BA660A1" xml:space="preserve">localisable_resource_file = "\\resource\\apps\\HelloWorld_loc";</codeblock> <p>needs
+to be changed to: </p> <codeblock id="GUID-3EE8477E-4FB1-51F9-AF42-42107FFA6933" xml:space="preserve">localisable_resource_file = "\\resource\\apps\\HelloWorld";
+localisable_resource_id = R_LAI;</codeblock> <p>where <codeph>R_LAI</codeph> is
+the ID of the <codeph>LOCALISABLE_APP_INFO</codeph> resource. Because the
+registration file needs to give the resource ID, it must <codeph>#include</codeph> the
+application's generated resource header file, <filepath>HelloWorld.rsg</filepath>.
+Also, the UI resource file needs to <codeph>#include</codeph>  <filepath>AppInfo.rh</filepath> for
+the <codeph>LOCALISABLE_APP_INFO</codeph> definition. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-189DA86A-BA77-4314-9597-E3C92B3C82D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-189DA86A-BA77-4314-9597-E3C92B3C82D9" xml:lang="en"><title>Promoting <codeph>char</codeph> in
+comparison with RVCT</title><shortdesc>The default <codeph>char</codeph> will be promoted to <codeph>int</codeph> on <codeph>WINSCW</codeph> and <codeph>unsigned</codeph> on
+the RVCT compiler. Due to this promotion, comparison c != EOF will not become
+true on hardware and it will loop infinite. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>RVCT treats plain <codeph>char</codeph> type as <codeph>unsigned</codeph> by
+default. There is a command line option "<codeph>--signed_chars</codeph>"
+that forces RVCT to treat plain char type as a signed char. Using this option,
+the example will compile and run the way it is expected to. But
+this option must be applied with care, since using the switch universally
+may have other ramifications elsewhere in the source base.</p>
+<p>The MMP file can be modified as: </p>
+<codeblock xml:space="preserve">OPTION armcc  --signed_chars</codeblock>
+<p>Example: </p>
+<codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+int main()
+{
+  FILE *fp;
+  char c;
+  fp=fopen("test.txt","w"); 
+  fprintf(fp,"%s","ab");
+  fclose(fp);
+  fp=fopen("test.txt","r"); 
+  c=getc(fp);
+  while(c != EOF)
+  {
+     c = getc(fp);
+  }
+  printf("\nOut of loop");
+  fclose(fp);
+  getchar();
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-189DCEF1-EBCD-5971-9D7C-109F0C910802.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-189DCEF1-EBCD-5971-9D7C-109F0C910802"><title>Basic SQL Example: BLD.INF </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A copy of the bld.inf file for the basic SQL example application. </p> <section><title>Introduction</title> <p>The bld.inf file tells the compiler which project file to use when building the application. </p> </section> <section><title>Code</title> <p>Identifies the project file. </p> <codeblock id="GUID-71B68141-648B-5338-98F7-5C72EB6F057D" xml:space="preserve">// BLD.INF
+// 
+// 
+// Copyright (c) Nokia Ltd 2009. All rights reserved.
+//
+
+PRJ_MMPFILES
+basicsqlexample.mmp</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-189FBB0E-0A47-5CCC-9209-DC69E76DE6B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-189FBB0E-0A47-5CCC-9209-DC69E76DE6B3" xml:lang="en"><title>Boolean</title><shortdesc>This document describes the Boolean data types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> represents a Boolean whose value may be <codeph>ETrue</codeph> or <codeph>EFalse</codeph>.
+It is implemented as a natural machine-word integer.</p>
+<p>The C language defines logical expressions to <i>produce</i> 0 for false,
+1 for true, and to <i>interpret</i> 0 as false, non-zero as true. This confusion
+cannot be altogether avoided with <codeph>TBool</codeph>. It is possible,
+but strongly deprecated, to assign numeric values to a <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref>.</p>
+<p>In general, a <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> should be tested using</p>
+<codeblock id="GUID-BF6AF640-D03A-5335-B67B-3852C2808833" xml:space="preserve">if (x) ...</codeblock>
+<p>or</p>
+<codeblock id="GUID-D00FBCFD-57C2-5D1E-999A-0567AFBAA258" xml:space="preserve">if (!x) ...</codeblock>
+<p>rather than</p>
+<codeblock id="GUID-41D4B777-217D-5BA5-B44A-59C2419FB2D6" xml:space="preserve">if (x==ETrue) ...</codeblock>
+<p>or</p>
+<codeblock id="GUID-72F416BC-213F-5731-B26A-8ECE2916935B" xml:space="preserve">if (x==EFalse) ...</codeblock>
+<p>The <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> uses a whole machine word. When a class has
+a number of flags, they should be encoded in a flags byte, and suitable getter/setter
+functions, taking <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> s, should be coded to access that
+flags byte.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-18CB4763-5EEE-5D0C-A293-D84563F06DB1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-18CB4763-5EEE-5D0C-A293-D84563F06DB1"><title>float</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>float [ {+|-}EFHghlprtux ] [ name[=value] ... ] </userinput> </p> <p>Equivalent to <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref> <codeph>-E</codeph>, except that options irrelevant to floating point numbers are not permitted. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2"><title>Recording Video Data</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to record video data. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to use the video recorder to control video recording. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video recorder utility is used to record video clips to files, descriptors or URLs and manipulate embedded meta data. This functionality is implemented by the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> class. </p> <p>The sequence diagram below explains the different functionalities of the video recorder utility: </p> <fig id="GUID-ADEA2E56-8601-55C2-9887-C35B366C3C87"><title>
+                Video recorder sequence diagram 
+             </title> <image href="GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e295130_href.png" placement="inline"/></fig> </section> <section><title>Using Video Recording </title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-120128C4-C7E9-5DD6-84CA-7798CCE7AB01"><p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita#GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2/GUID-5378C592-9E29-554C-A4CB-90A9D8210239"> Record Video Data</xref>  </p> </li> </ul> <p id="GUID-5378C592-9E29-554C-A4CB-90A9D8210239"><b>Basic Procedure</b> </p> <p>The high level steps to record video data are shown here: </p> <ol id="GUID-B0CCE7C7-7428-5198-A5AD-BDB45D73D19D"><li id="GUID-5A3C0168-F27E-5136-B1EC-635827F51A80"><p>If you are using an audio clip, the recording gain must be set using the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-411D9EF8-93AA-3BC6-85CF-38BFF142D379"><apiname>CVideoRecorderUtility::SetGainL()</apiname></xref> function before recording because the initial gain is undefined or may also have been modified by another client application. </p> </li> <li id="GUID-93560BD5-6FAD-5939-9C7B-9FBE5E22F4F8"><p>The specific functions to record and perform related tasks are as follows: </p> <ul><li id="GUID-A2E04F54-BE9C-5AC8-A2C3-A8421E03E829"><p>To start recording video data to the specified file, descriptor or URL, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-0336E439-275D-3766-9840-37F4C8218F5A"><apiname>CVideoRecorderUtility::Record()</apiname></xref> function. </p> <codeblock id="GUID-A5C5F5F6-5137-5742-ADF6-E99DC00A9FCC" xml:space="preserve">void CRecordVideo::Record()
+    {
+    iVideoRecordUtility-&gt;Record();
+    }</codeblock> </li> <li id="GUID-1B3162D7-A0A6-5556-B81B-21BE3AB21F1C"><p>To pause recording, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-394D2DB5-7545-390B-8CB8-C321EA897298"><apiname>CVideoRecorderUtility::PauseL()</apiname></xref> function. The position within the video clip is maintained in case a subsequent <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-0336E439-275D-3766-9840-37F4C8218F5A"><apiname>CVideoRecorderUtility::Record()</apiname></xref> is called. </p> <codeblock id="GUID-1D3CFFBF-8040-534A-B878-AAE2F29A70EC" xml:space="preserve">void CRecordVideo::PauseL()
+    {
+    iVideoRecordUtility-&gt;PauseL();
+    }</codeblock> </li> <li id="GUID-CA27950D-7E70-5947-9067-ADFFECE08DD0"><p>To stop recording, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-BAD9B7BB-94E5-3584-9B59-E4FB92206FF7"><apiname>CVideoRecorderUtility::Stop()</apiname></xref> function. If the video format supports audio tracks and if audio is enabled, this function also stops recording the audio data. </p> <codeblock id="GUID-2CC808B5-7A0C-5886-ABCC-76D8E30AFCFA" xml:space="preserve">TInt CRecordVideo::Stop()
+    {
+    TInt err = iVideoRecordUtility-&gt;Stop();
+    return err;
+    }</codeblock> </li> <li id="GUID-3673BD16-3AE1-591B-B8A8-0C8BB6F4BDFC"><p>To close all related video and audio controllers, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-8572BA1E-9EFA-30F3-B7A0-6E750E94F846"><apiname>CVideoRecorderUtility::Close()</apiname></xref> function. </p> <codeblock id="GUID-0F8E11A0-50A4-5614-B08E-30AEB6CF7538" xml:space="preserve">void  CRecordVideo::Close()
+    {
+    iVideoRecordUtility-&gt;Close();
+    }</codeblock> </li> </ul> </li> </ol> </section> <section><title>See Also</title> <p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita">Creating and Preparing a Video Recorder</xref>  </p> <p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita">Configuring the Video Recorder</xref>  </p> <p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita">Enabling/Disabling Video Recording</xref>  </p> <p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita">Controlling Video Recording Quality</xref>  </p> <p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita">Setting Video Metadata</xref>  </p> <p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita">Controlling the Video Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-18D92465-3F62-55CF-8229-EE811FD5F568.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-18D92465-3F62-55CF-8229-EE811FD5F568"><title>Stream networks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When a store stream is created, a stream ID is generated. This ID can be used to open the stream later. Stream IDs can be externalised into another stream, and this allows streams in a store to be built into a network.</p> <p>An object that is saved to a store may use a network of streams, typically starting with a single head stream.</p> <p>An object stores itself using a function of the form:</p> <codeblock id="GUID-A150BE2B-BCC6-52DC-BEB4-826FDDB28C09" xml:space="preserve">streamId=object.StoreL(store);</codeblock> <p>Given the correct stream ID, the object may be restored using a function of the form:</p> <codeblock id="GUID-2F6D9176-0ED8-5696-9FF8-D347084B9CFB" xml:space="preserve">object.RestoreL(store,streamId)</codeblock> <p>where <codeph>store</codeph> is a reference or pointer to a store.</p> <p>The function names <codeph>StoreL()</codeph> and <codeph>RestoreL()</codeph> are conventional for this purpose.</p> <p>The following diagram shows the idea of stream networks:</p> <fig id="GUID-970A4AE3-62C2-5BFD-990D-96D76735049A"><image href="GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e336246_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-18EF9CFA-5080-5F89-89EC-C64897612D6B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-18EF9CFA-5080-5F89-89EC-C64897612D6B" xml:lang="en"><title>How
+to clean up non-CBase classes</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-DDB53FB1-7E70-45C6-93F8-76FBE03CA6FA"><title>Cleanup for a TAny*</title> <p>This example code shows cleanup
+for a <codeph>TAny*</codeph>, in this case a <codeph>TText</codeph>. </p> <codeblock id="GUID-62C1326A-2C9F-5F57-AA1C-EA557D0FF4FE" xml:space="preserve">TText* buffer=(TText*) User::Alloc(100*sizeof(TText)); 
+// create a buffer 
+CleanupStack::PushL(buffer);
+// push it to the cleanup stack: treated as TAny*
+TPtr8 bufferPtr(buffer,100);  // create a pointer to the buffer
+...
+// use the buffer
+useBufferL(bufferPtr);
+...
+// destroy the buffer on the cleanup stack
+CleanupStack::PopAndDestroy();  
+</codeblock> </section>
+<section id="GUID-B2DF0D27-9520-4B7D-A8BC-1B4B1A80A714"><title>Cleanup support for an R class</title> <p>This example code
+shows how to provide cleanup stack support for an <codeph>R</codeph> class.
+To do this, a <codeph>TCleanupItem</codeph> object must be constructed with
+a pointer to the object to clean up, and a pointer to a function that provides
+cleanup for that object. The most effective way to do this is to define a <codeph>TCleanupItem</codeph> cast
+operator in the class. </p> <codeblock id="GUID-FEFC12E2-0BE9-5AEF-89AE-E812651D8AD1" xml:space="preserve">// TCleanupItem operator for objects of this class
+RExampleClass::operator TCleanupItem()
+ {
+ return TCleanupItem(Cleanup,this);
+ }</codeblock> <codeblock id="GUID-5D448C6A-C919-5251-9AC1-139A6F3703FC" xml:space="preserve">...</codeblock> <codeblock id="GUID-92812389-ADAF-554B-BF5E-AA515DF4BFB5" xml:space="preserve">// cleanup function for use by cleanup stack
+static void RExampleClass::Cleanup(TAny *aPtr)
+ { 
+ // Invoke the Close member on the RExampleClass at aPtr
+ testConsole.Printf(_L("Doing cleanup.\n"));
+ (static_cast&lt;RExampleClass*&gt;(aPtr))-&gt;Close();
+ }
+
+// Show use
+void DoTheExampleL()
+ {
+ RExampleClass r;
+ r.Open();
+ // Because RExampleClass has an operator TCleanupItem()
+ // pushing it is OK
+ CleanupStack::PushL(r);
+
+ // ...use r
+ // possibly some operations that leave
+
+ // PopAndDestroy() invokes RExampleClass::Cleanup()
+ CleanupStack::PopAndDestroy();
+ }
+ </codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-E8C0A2EF-AD7D-55C9-9805-ADA6072C18F0"><p>The operator returns
+a <codeph>TCleanupItem</codeph> object which is constructed from a pointer
+to the static member function which performs the class’s cleanup processing,
+and a pointer to the object to be cleaned up. </p> </li>
+<li id="GUID-83B10F9E-E07F-59BD-A1A4-62795F6EFF19"><p>The static member function
+which provides the class’s cleanup processing must cast the <codeph>TAny*</codeph> pointer
+into a pointer of the class to be cleaned up. This allows the class member
+function to perform the cleanup </p> </li>
+<li id="GUID-61BAAE8E-C8B4-5034-B4D1-3E31F790B54C"><p> <codeph>CleanupStack::PopAndDestroy()</codeph> removes
+the item from the cleanupstack and invokes the cleanup function defined in
+the <codeph>TCleanupItem</codeph> object. </p> </li>
+<li id="GUID-53F43DCE-9260-5A71-9D59-AABD7916AE9E"><p>Remember that the <codeph>TCleanupItem</codeph> does <i>not</i> go
+onto the cleanupstack. the <codeph>TCleanupItem</codeph> is a container for
+the object that goes onto the cleanupstack. In this example, a pointer to
+the <codeph>RExampleClass</codeph> is put on the cleanupstack. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1903F18A-F095-5494-AF32-423AE7F27252.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1903F18A-F095-5494-AF32-423AE7F27252"><title>Drawing Points</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate how to draw a single pixel and how to draw a point with a pen three-pixels wide. </p> <section><title>Drawing a single pixel</title> <p>Use <codeph>Plot()</codeph> to draw a single point in the center of the screen. </p> <codeblock id="GUID-6E4A0CA6-312A-5814-93A6-718A122C1134" xml:space="preserve">...
+TPoint screenCenterPoint=rect.Center(); // the center of the screen
+...
+    
+// draw a single pixel point in the center of the screen
+gc.Plot(screenCenterPoint);
+...</codeblock> </section> <section><title>Drawing a point three pixels wide</title> <ol id="GUID-43C673EC-EB23-5889-B8EF-4A4016650F9F"><li id="GUID-4FDD7566-38E0-5E99-82C2-145991DE6D12"><p>Define a size for the pen tip as a <codeph>TSize</codeph>. </p> </li> <li id="GUID-22D376B1-5B3A-56A6-8D81-E71C85A7F6A3"><p>Use <codeph>SetPenSize()</codeph> to increase the pen width from the default (single pixel). This shows how a plotted point three pixels wide is much easier to see than a single pixel. It is in fact drawn as a "+" shape. </p> </li> <li id="GUID-5D7C9D20-AE9B-5CA8-9D99-E99A208A2ECC"><p>Use <codeph>Plot()</codeph> to draw a point in the center of the screen. </p> </li> </ol> <codeblock id="GUID-2E4ECC66-0B0B-5E09-B1D4-4451944CFEDA" xml:space="preserve">...
+TPoint screenCenterPoint=rect.Center(); // the center of the screen
+...
+    
+// Set up a "bold" size for the pen tip to (default is 1,1)
+TSize penSizeBold(3,3);
+...
+    
+// draw a "bold" point 3 pixels across
+gc.SetPenSize(penSizeBold);
+gc.Plot(screenCenterPoint);
+...</codeblock> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74"><title>Call Hold Tutorial </title><shortdesc>This tutorial describes how to place a call on hold with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-579AD00E-9CCB-5C1E-85D7-D223535A4C7A"> <step id="GUID-BA54B3E5-B284-55C8-9709-082ADB8E1C5D"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-B48E2268-6BFE-57A4-A46A-3913B65234BE"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCallDynamicCaps()</apiname></xref> to check if the device supports hold function </info> </step> <step id="GUID-15ADB36E-8D94-57EF-BBAA-6A7958A854CD"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::Hold()</apiname></xref> to place a call on hold </info> <info>Pass it the ID of the call to hold. The ID is the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallId</apiname></xref> returned when you dialled or answered the call. </info> </step> <step id="GUID-82771AAC-9CBA-5029-98DA-9D95552E90F4"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EHoldCancel</apiname></xref> to cancel the asynchronous request </info> </step> </steps> <example id="GUID-6068EFDB-D572-5D49-880E-FAF76EC44408"><title>Call hold example</title> <codeblock id="GUID-32D588C0-A809-5BC1-8DF4-1B9F494C19DE" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallId;
+
+public:
+    CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId);
+    TInt SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallId(aCallId)
+    {
+    //default constructor
+    }
+
+TInt CClientApp::SomeFunction()
+    {
+    // Check that the phone supports holding calls.
+    CTelephony::TCallCapsV1 callCapsV1;
+    CTelephony::TCallCapsV1Pckg callCapsV1Pckg(callCapsV1);
+    iTelephony-&gt;GetCallDynamicCaps(iCallId, callCapsV1Pckg);
+
+    if( callCapsV1.iControlCaps &amp; CTelephony::KCapsHold )
+       {
+       // The call represented by 'iCallId' can be put on hold
+       iTelephony-&gt;Hold(iStatus, iCallId);
+       SetActive();
+       return KErrNone;
+       }
+    else
+       {
+       // The call cannot be put on hold; 
+       // return an error indicate this.
+       return KErrNotSupported;
+       }
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The call has been held successfully;
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EHoldCancel);
+    }
+</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719" xml:lang="en"><title>Migrating
+from STLport v4 to v5</title><shortdesc>If you are using STLport v4, it is recommended that you migrate
+to the latest version of Standard C++ Library (STLport v5 ) available from
+Symbian^3 to make use of it's latest features.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-FFA3AFA4-7417-4B3E-85FC-8FB5613B764D">       <p>To migrate
+to STLport v5, application developers can retain the existing sources, but
+must make changes to the MMP files. More than just linking against STLport
+v5, application developers can make use of latest features available from
+STLport v5 onwards and also make use of tools support added in Symbian^3.</p> 
+   </prereq>
+<context id="GUID-829B7AE0-8480-45AE-A611-BDE659FF01B9">       <p>To migrate
+from STLport v4 to v5, perform the following steps:</p>     </context>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-10-1-1-5-1-4-1-9-1-3-3">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-5-1-4-1-9-1-3-3-1"><cmd/>
+<info><p>Replace the <codeph>LIBRARY</codeph> entry in the <filepath>.MMP</filepath> file
+from <filepath>libstdcpp.lib</filepath> to <filepath>libstdcppv5.lib</filepath>.</p></info>
+</step>
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-5-1-4-1-9-1-3-3-2"><cmd/>
+<info><p>Replace the <codeph>SYSTEMINCLUDE</codeph> path in the <filepath>.MMP</filepath> file
+from <filepath>\epoc32\include\stdapis\stlport</filepath> to <filepath>\epoc32\include\stdapis\stlportv5</filepath>.</p></info>
+</step>
+<step id="GUID-4721BCB0-9D9D-44CF-8FCA-0F0AB760D7C0"><cmd/>
+<info><p>Add the <codeph>STDCPP</codeph> keyword to the <filepath>.MMP</filepath> file,
+if you are using the global operator <codeph>new</codeph> and your target
+type is not an STD target type. </p></info>
+<stepresult><p><note> As Carbide currently has a defect associated with the <codeph>STDCPP</codeph> keyword,
+it is recommended that you build code from command line instead of using Carbide. </note></p></stepresult>
+</step>
+</steps>
+<postreq id="GUID-243E4595-F067-46A4-B7D5-99ED4703D19E"><p><b>Note</b>: For
+more information about using STLport v5 on Symbian platform, see <xref href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita">Standard
+C++ Support on Symbian Platform</xref>.</p></postreq>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e247255_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-19450648-4400-57A3-95FB-FC8AE73CD0A8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-19450648-4400-57A3-95FB-FC8AE73CD0A8" xml:lang="en"><title>How
+to Shutdown the DNS Proxy Server</title><shortdesc>Describes how to shutdown the DNS Proxy server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-56FFFC69-D14C-4B99-9BFB-AB4ACDD36953"><p>The DNS Proxy server shuts down with the DHCP server. If an IAP
+is configured to shutdown the DHCP server, it shuts down the DHCP server which
+in turn shuts down the DNS Proxy server. DNS Proxy server frees all its resources
+and deletes all the host name entries present in the DNS local database before
+shutdown. DNS Proxy server stops receiving DNS requests on the interface when
+it is shutting down. </p> <p><note> DNS Proxy server supports handling of
+multiple requests coming from a single interface and does not support receiving
+DNS requests on multiple interfaces.</note> </p><p/><p>The high level steps
+to shutdown the DNS Proxy server are shown here:  </p> </context>
+<steps id="GUID-2E2295AD-39EE-57EC-BB8C-707303A00139">
+<step id="GUID-9256B919-76FC-5551-8829-06CE069B52E0"><cmd>When the interface
+configured to start the DHCP server shuts down, the DNS Proxy server also
+shuts down. </cmd>
+<info> Note: The DNS Proxy server frees all its resources, that is, deletes
+the pending requests from its processing queue, stops all communication channels
+and deletes all the host name entries present in the DNS local database before
+shutdown. </info>
+</step>
+</steps>
+<result id="GUID-3F9350B0-2E4C-464B-9AF1-857F1D178A86"><p>The DNS Proxy server is shutdown and deletes all the host name
+entries present in the DNS local database. </p> </result>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1955F591-2D2C-42EE-AF03-7BBBEE1A4005.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-1955F591-2D2C-42EE-AF03-7BBBEE1A4005" xml:lang="en"><title>Grid
+types</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Grids are in many ways analogous to lists. However, there are some things
+worth noticing:</p>
+<ul>
+<li>In grids, the Arrow left and Arrow right keys are always used for moving
+the focus; they cannot be used in any other way that may be possible with
+lists. <p></p></li>
+<li><p>Grid layouts are not as standardized as lists; the layouts must be
+designed case by case for the applications. Typically, grid items occupy less
+screen space than list items. This results in grid items having fewer elements
+than list items. A grid item may in general have one text, or one graphic,
+or a text and a graphic.</p></li>
+</ul>
+<p>The following grid types can be used, and they are analogous to the corresponding
+list types:</p>
+<table id="GUID-77A41D48-C4F8-4E2D-8BCC-11C8A233EC89"><title>Grid types</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Grid</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Menu grid</p></entry>
+<entry><p>For selecting one item; no Options menu.</p></entry>
+</row>
+<row>
+<entry><p>Selection grid</p></entry>
+<entry><p>Permanent state; can be left pending, the Options menu is available.</p></entry>
+</row>
+<row>
+<entry><p>Markable grid</p></entry>
+<entry><p>A selection grid with the marking function.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>There are no grid types corresponding to a multi-selection list, a setting
+list or a form.</p>
+<section id="GUID-D51BDE18-D03E-42DC-BC41-551BB0DBBAD7"><title>Using
+grids in C++ applications</title><p>The APIs to use for grids are the Grids
+API and the Lists
+API. For implementation information, see Using
+the Grids API and Using
+the Lists API.</p><p>The <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGrid.html" format="application/java-archive"><codeph>CAknGrid</codeph></xref> class
+is used to set up the basic parameters of a layout in terms of number of columns
+and rows, cell size, and orientation. After this, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classAknListBoxLayouts.html" format="application/java-archive"><codeph>AknListBoxLayouts</codeph></xref> is used to set up detailed parameters for
+graphics and text in the cell. The following cell parameters can be set:</p><ul>
+<li><p>Location and size of bitmaps</p></li>
+<li><p>Location and size of text string</p></li>
+<li><p>Font and its color </p></li>
+<li><p>Text align in the allocated space</p></li>
+</ul><p>Bitmaps are loaded manually, as an icon array.</p><p>Other parameters
+of visual elements (for example, highlighted text color) are used from the
+Symbian Developer Platform standard look and feel module; these
+should not be overridden unless you've instantiated your own class. </p><p>Several specialized
+grid classes can be found in Avkon.</p><p>Use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknCaleMonthStyleGrid.html" format="application/java-archive"><codeph>CAknCaleMonthStyleGrid</codeph></xref> to show a month view. The
+first row shows the day and the first column shows the week number. The following
+data can be set for an item:</p><ul>
+<li><p>Outlined icon to show border, dimension 21 x 9 pixels</p></li>
+<li><p>Marking icon in the bottom right corner of a cell, dimension 5 x 5
+pixels</p></li>
+<li><p>Two-digit number</p></li>
+</ul><p>Use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknPinbStyleGrid.html" format="application/java-archive"><codeph>CAknPinbStyleGrid</codeph></xref> to show application shortcuts in a 5 x 5 cells grid. For every item, an
+icon is specified that is displayed in the center of a cell. In addition,
+two small icons, 13 x 13 pixels, can be specified. The first one is displayed
+in the top-right corner for marking. The second one is displayed in the bottom-left
+corner to show the target application. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408"><title>Light API</title><shortdesc>Light API is a library API that provides the ability to control various light targets of the device. It also provides methods to retrieve the current light status and the supported light targets of the device. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>It uses synchronous method calls which block the client application until a response is received from the plug-in. The API consists of <codeph>CHWRMLight</codeph> and <codeph>MHWRMLightObserver</codeph> classes. </p> <fig id="GUID-CA2D2394-FF93-54F9-880A-7AD56CFB1BDE"><title>
+          Light API Interfaces 
+        </title> <image href="GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e110029_href.png" placement="inline"/></fig> <p>The client creates an instance of <codeph>CHWRMLight</codeph> using <xref href="GUID-93132FF9-512F-30EC-8AB0-BD3E98F668E6.dita"><apiname>NewL()</apiname></xref>. If the client requires status information, it must also provide a callback pointer of the <xref href="GUID-54A448DF-6C1A-347F-9B11-734DAA813268.dita"><apiname>MHWRMLightObserver</apiname></xref> implementing class for the <xref href="GUID-93132FF9-512F-30EC-8AB0-BD3E98F668E6.dita"><apiname>NewL()</apiname></xref> method. </p> <p>Usually HWRM Light interface supports restoring the previous or default light state (ON/OFF/BLINK). The already supported (reservation controller) functionality in existing HWRM light APIs is extended to restore the previous or default color of the LED as well. </p> <p>HWRM also supports automatic reserve and release the targets depends on the client application foreground observer notification through an UI plugin. During these states the light state with color value would be stored and restored automatically. This means if the client application window comes on the foreground then the reserved target’s state will be restored. </p> <section><title>Definitions</title> <table id="GUID-62DF1B4F-EC68-53EB-B620-0D1AC8EC8D35"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Term</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p>Light target </p> </entry> <entry><p>A separate entity that can be lighted in the device. For example, the primary display of the device is a light target. </p> </entry> </row> <row><entry><p>Lights frozen state </p> </entry> <entry><p>Whenever lights are released, their current state is stored as frozen state. On next reserve, the user can specify that frozen state be restored. </p> </entry> </row> <row><entry><p>Lights default state </p> </entry> <entry><p>Lights default state is determined by device inactivity time and relevant general settings. </p> </entry> </row> <row><entry><p>Lights base state </p> </entry> <entry><p>It is the state of the light target set for infinite duration (after all the time-based operation is completed). </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-D4E06508-4346-5294-995A-64B403467EC5.dita"><linktext>Light API Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-197648C4-A42C-5769-82B7-F8BA510631D9"><title>Disconnecting a PAN member</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>So far in this tutorial series we have looked at the steps involved in creating a Personal Area Network and adding devices to that PAN. Now we will look at disconnecting devices from the PAN. </p> <p><b>Using the Tutorial </b> </p> <p>The code fragments in this tutorial are derived from the Bluetooth Example application available in <filepath>/src/COMMON/DEVELOPERLIBRARY/examples/Bluetooth/BTExample1</filepath>. Although the code has been reformatted to the requirements of the tutorial there is always enough information included with the code to find the actual example code. </p> <p><b>Intended Audience: </b> </p> <p>This tutorial is designed for Symbian licensees only. Several APIs mentioned ad used throughout this tutorial series are only available in a device creators kit environment. </p> <p><b>Basic procedure: </b> </p> <p>The high level steps to remove a device from a PAN are: </p> <ul><li id="GUID-0B26D9AB-15AB-58AB-8A7F-94DBEB6A75C9"><p>Request the connection be closed. </p> </li> <li id="GUID-325B2E51-D296-5FCC-A664-71B1FEAE6CD6"><p>Extract the device address for the connection being closed. </p> </li> <li id="GUID-F4A48DCC-2220-55F9-897F-C0698F175D2A"><p>Disconnect the device from the PAN. </p> </li> </ul> <section><title>Request the disconnection</title> <p>The user will select the option to 'Remove current active device' from the PAN. This will cause to prompt the user to select a device. The result of this operation is that the Bluetooth device address is known. See "<xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita#GUID-91C4F00B-E241-57DC-8520-8C16A302C983/GUID-DE57E5EA-1C46-5AE4-86CF-06AC92203383">Finding the Bluetooth Device Address</xref> " for more. </p> </section> <section><title>Identify the device being removed</title> <p>As the device being removed is the currently active device the following will get its Bluetooth address: </p> <codeblock id="GUID-E8F217B7-F687-502F-9E50-2E96340CAF5C" xml:space="preserve">...
+else if(iActivePanConn != KErrNotFound)
+{
+    TPtr8 ptr = iActiveConnections[iActivePanConn].Des();</codeblock> <p>It is also possible that instead of a device removing itself from the PAN the host can eject a member. The user of the PAN host device would need to be presented with a list of the active members where selecting the member would pass the device address details to the disconnect function. </p> </section> <section><title>Disconnect from PAN</title> <p>Regardless of how the disconnect function has been called you have a Bluetooth device address that has been added to the <codeph>ptr</codeph> pointer (above). The following will remove the device from the PAN: </p> <codeblock id="GUID-0E5B4B6F-900B-551B-A1B8-FC6C4D69FA03" xml:space="preserve"> ...
+ rerr = iConnection.Control(KCOLAgent, KCOAgentPanDisconnectDevice, ptr);
+ ...
+}
+return rerr;</codeblock> <p>The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-28A35F19-1B05-3922-8E80-36F00DF3DB65"><apiname>RConnection::Control()</apiname></xref> function contains three parameters. They are explained here: </p> <table id="GUID-72AA9C66-5316-5B69-8D38-D30CCB0A4B19"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Attribute</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>KCOLAgent</codeph>  </p> </entry> <entry><p>Sets the scope of the Control() function to the agent. </p> </entry> </row> <row><entry><p> <codeph>KCOAgentPanDisconnectDevice</codeph>  </p> </entry> <entry><p>The actual command being passed to the <codeph>RConnection</codeph>. In this case the connection is being told to disconnect the device identified by <codeph>ptr</codeph>. </p> </entry> </row> <row><entry><p> <codeph>ptr</codeph>  </p> </entry> <entry><p>The pointer to the Bluetooth device address. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>What's next?</title> <p>Having created a PAN and added and removed devices from the PAN you will need learn about closing the PAN. The following will help: </p> <ul><li id="GUID-D4A977E1-F9C2-5DE9-B520-D727943B2D96"><p> <xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita">Creating a Personal Area Network</xref>  </p> </li> <li id="GUID-AB96A936-A6B7-5CBD-B2AE-E38A75B20899"><p> <xref href="GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita">Adding a device to the PAN</xref>  </p> </li> <li id="GUID-FF22F925-6459-5352-A266-B718EDD05F36"><p> <b>Removing a device from the PAN</b> - This document </p> </li> <li id="GUID-ED407CD5-E216-51C2-A107-1D27538A2B88"><p> <xref href="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita">Closing the PAN</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-198DCED1-F429-5C95-A51D-53AE416687E8" xml:lang="en"><title>File Server Client Side</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39-master.png has changed
Binary file Symbian3/SDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e253361_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-19CF4B7B-EA55-566D-B68C-0A25DCADCA6C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-19CF4B7B-EA55-566D-B68C-0A25DCADCA6C" xml:lang="en"><title>Control
+contexts</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Prior to Symbian OS v9.1 controls were able to share a graphics context
+using the <codeph>MCoeControlContext</codeph> API. This was used primarily
+in compound controls to achieve a common solid background color and was necessary
+because controls were required to clear and redraw their own rectangles. Now,
+with improvements to flicker free drawing and improved framework mechanisms
+for drawing patterned (skinned) backgrounds, parents and containers are able
+to provide backgrounds. </p>
+<p> <b>The MCoeControlContext API is now deprecated for UIQ.</b> A description
+of the migration process is described below. </p>
+<p>S60 and MOAP do not use the new background framework. </p>
+<section id="GUID-321057E8-417E-4D8C-8C53-3AE1C80C3ED6"><title/><p><b>Control
+Contexts </b> </p> <p>Control contexts allow a group of controls to share
+graphics context settings for drawing. Each control may use a control context,
+a class derived from <xref href="GUID-298C4B9D-4DB7-322A-99AB-15816C0F0247.dita"><apiname>MCoeControlContext</apiname></xref>. By using the same
+control context a group of controls can share common settings. A typical use
+is for components of a compound control to use the same control context to
+ensure that they use the same background color settings. </p> <p>Functions
+defined by <xref href="GUID-298C4B9D-4DB7-322A-99AB-15816C0F0247.dita"><apiname>MCoeControlContext</apiname></xref> are called from within the
+control framework when a control is about to be drawn. These functions can
+be implemented to initialize graphics settings to common values. By using
+the same control context a group of controls can all be made to use the same
+graphics settings. </p> <p>The context is set for all controls that wish to
+use it by setting their <codeph>iContext</codeph> members, either directly,
+by using <codeph>CCoeControl::SetControlContext(),</codeph> or by copying
+with <codeph>CCoeControl::CopyControlContextFrom()</codeph>. Whenever a control
+is about to be drawn the control framework checks if the control has its <codeph>iContext</codeph> member
+set and, if so, calls <codeph>MCoeControlContext::ActivateContext()</codeph>.
+This function has a default implementation that calls <codeph>MCoeControlContext::PrepareContext()</codeph>,
+which should have been implemented to initialize the graphics settings. </p> <p>The
+control framework provides one concrete control context class, <codeph>CCoeBrushAndPenContext</codeph>,
+which sets graphics context brush and pen settings. Applications derive other
+control context classes as required. </p> <p>The control framework automatically
+propagates a compound control’s context to all of its components when the
+components set their container with <codeph>CCoeControl::SetContainerWindowL()</codeph>. </p> <p> </p> <p><b>The
+following section describes how code written for older versions of Symbian
+platform must be updated. </b> </p> <p>The following changes need to be made
+to existing code: </p> <ul>
+<li id="GUID-71F1C167-CD12-5D00-9F16-73732BD698CB"><p>Remove all code referring
+to the <codeph>CCoeControl::iContext</codeph> variable. </p> </li>
+<li id="GUID-3B13DB08-A7B9-5B2D-9A6D-FBA8D9B3A6B0"><p>Remove all calls to <codeph>CCoeControl’s
+                SetControlContext()</codeph>, <codeph>CopyControlContextFrom()</codeph> and <codeph>ControlContext()</codeph>. </p> </li>
+<li id="GUID-4CD48156-C053-5DF0-9ACC-9AF5415C3104"><p>Remove all implementations
+of the <codeph>MCoeControlContext</codeph> from all custom controls, i.e.
+remove all <codeph>ActivateContext()</codeph>, <codeph>ResetContext()</codeph> and <codeph>PrepareContext()</codeph> implementations
+from custom controls. </p> </li>
+<li id="GUID-AD956F60-78C0-5A77-AE7E-FED2FAA096E8"><p>Remove all use of the <codeph>CCoeBrushAndPenContext</codeph> and <codeph>MCoeControlBrushContext</codeph> APIs. </p> </li>
+<li id="GUID-8519E952-7A86-5CE5-BE18-2DA081AA16B9"><p>Remove all calls to <codeph>MCoeControlContext</codeph> ’s <codeph>ActivateContext()</codeph>, <codeph>ResetContext()</codeph> and <codeph>PrepareContext()</codeph>. </p> </li>
+<li id="GUID-C27D37C8-7E49-5A62-B7F9-966D66FF1DB5"><p>Remove all code that
+clears the area surrounding the controls’ actual graphical representation. </p> </li>
+<li id="GUID-1A5941C7-74BC-584C-9733-609EF79CEC19"><p>Change
+the draw code of compound controls so that the parent of children correctly
+updates the area behind the children. </p> </li>
+</ul> <p>This stage 7 will not work for window-owning controls as the Window
+Server will prevent the parent from drawing behind the child's window. See <xref href="GUID-88936D48-B801-3D9C-8A9D-3498807937CE.dita"><apiname>MCoeControlBackground</apiname></xref> and <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-FF7DB067-24AD-50C3-BF52-952F836609B0">how
+to write a control</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-19E03D48-50DB-5C1B-AD1E-12194D51AC76-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-1A03B210-4175-4BE0-A5B3-647E7FA8E573_d0e55282_href.png has changed
Binary file Symbian3/SDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e168955_href.png has changed
Binary file Symbian3/SDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e170634_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A22E574-831B-5D00-98BD-0DFFA9CC09A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1A22E574-831B-5D00-98BD-0DFFA9CC09A0" xml:lang="en"><title>Feature
+Manager Querying Tutorial</title><shortdesc>This document introduces tutorials on the use of Feature Manager
+to query features. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-B5BB1644-5B69-5D9B-B520-3600B711A467"><p>Before you start,
+you must: </p> <ul>
+<li id="GUID-B7D6398D-2AC8-519A-988C-446B60744E0D"><p>Understand what is meant
+by a feature, feature sets and feature data in Symbian platform. </p> </li>
+<li id="GUID-7313BFC1-A411-5A2E-A280-EF09D64499BD"><p>Understand when to use <xref href="GUID-2C9E6E72-2858-37A1-9D43-4E8086569520.dita"><apiname>CFeatureDiscovery</apiname></xref> or <xref href="GUID-F6AAAC24-4A62-383A-86C6-2E46335C3FD4.dita"><apiname>RFeatureControl</apiname></xref> to perform feature queries and handle feature notification. </p> </li>
+</ul> </prereq>
+<context id="GUID-A31B2A8E-8702-5ADC-8F8B-5AB8C851C566"><p>A feature on Symbian
+platform encapsulates information such as the presence or absence of some
+item of hardware or software on the device. These tutorials explain how to
+use Feature Manager to query that information. </p> </context>
+</taskbody><related-links>
+<link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+Overview</linktext></link>
+<link href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita"><linktext>Feature Manager
+Guide</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A26BD9E-5B8E-4E6D-904E-B8354B14E111.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1A26BD9E-5B8E-4E6D-904E-B8354B14E111" xml:lang="en"><title>Constructing
+views in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The call on the first phase constructor method of the view occurs in <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller</xref>. The
+view serves as the top-level window under the UI controller.</p>
+<p>The methods you need to implement for your <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+view are as follows:</p>
+<ul>
+<li><p>C++ default constructor, which cannot contain code that leaves.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-7A108F7C-AD2E-4CDA-9758-5FD6ED477917" xml:space="preserve">
+CMyAppView* CMyAppView::NewL( const TRect&amp; aRect )
+    {
+    CMyAppView* self = CMyAppView::NewLC( aRect );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+CMyAppView* CMyAppView::NewLC( const TRect&amp; aRect )
+    {
+    CMyAppView* self = new ( ELeave ) CMyAppView;
+    CleanupStack::PushL( self );
+    self-&gt;ConstructL( aRect );
+    return self;
+    }
+
+CMyAppView::CMyAppView()
+    {
+    // No implementation required
+    }</codeblock>
+<p>The declarations for <parmname>CMyAppView::NewL</parmname> and <parmname>CMyAppView::NewLC</parmname> in
+the class header file needs to be public to support the construction method
+required.</p>
+<p>In this approach, <parmname>CMyAppView::NewL</parmname> is called from
+the UI controller. It creates a view object by calling <parmname>CMyAppView::NewLC</parmname>. <parmname>CMyAppView::NewLC</parmname> calls
+new (ELeave) on the C++ default constructor <parmname>CMyAppView</parmname> to
+create the object (and leave if it cannot), <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CCleanupClass.html#%3a%3aCCleanup%3a%3aPushL%28CBase%20%2a%29" format="application/java-archive">pushes</xref> a pointer to the clean-up stack in case the second phase construction method
+leaves, and then calls the second phase construction method of the object.
+When it returns to <parmname>CMyAppView::NewL</parmname>, the pointer pushed
+to the cleanup stack is <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CCleanupClass.html#%3a%3aCCleanup%3a%3aPop%28%29" format="application/java-archive">removed</xref>.</p>
+</itemgroup>
+</li>
+<li><p>Symbian 2nd phase constructor with code that might leave.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-32125111-6ACB-4539-8CD0-39ED5629789F" xml:space="preserve">
+void CMyAppView::ConstructL( const TRect&amp; aRect )
+    {
+    // Create a window for this application view
+    CreateWindowL();
+
+     //add construction for other controls if required
+
+	   // Set the windows size
+    SetRect( aRect );
+
+    // Activate the window, which makes it ready to be drawn
+    ActivateL();
+    }</codeblock>
+<p><parmname>CMyAppView::ConstructL</parmname> is a private class providing
+the second phase construction that accepts the rectangle the view is drawn
+to.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCreateWindowL%28%29" format="application/java-archive"><parmname>CCoeControl::CreateWindowL</parmname></xref> creates a window
+for the control. Note that this window is a child of the UI controller. This
+method makes the control a <xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">window-owning
+control</xref>. While, the use of window-owning controls is discouraged to
+prevent the taxing of run-time resources, this is the top-level window for
+the UI controller.</p>
+<p>While this is a simple control that does not contain other controls,
+other controls could be added to the control between <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCreateWindowL%28%29" format="application/java-archive"><parmname>CCoeControl::CreateWindowL</parmname></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetRect%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetRect(aRect)</parmname></xref>. For more information,
+see <xref href="GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A.dita">Compound
+controls in the view architecture</xref>.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetRect%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetRect(aRect)</parmname></xref> sets the window
+size according to the requirements of the mobile device. The top-level control
+rectangle is set to the area that the framework provides for the application.
+Calling <parmname>SetRect</parmname> calls the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSizeChanged%28%29" format="application/java-archive"><parmname>CCoeControl::SizeChanged</parmname></xref> method, where the control should set the position and size
+for any child controls and thus adjust the control layout to the UI.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aActivateL%28%29" format="application/java-archive"><parmname>CCoeControl::ActivateL</parmname></xref> sets the control
+as ready to be drawn.</p>
+</itemgroup>
+</li>
+</ul>
+<p>If required for your application, you may need to implement other methods
+for your control. For top-level windows, you would need to implement <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSizeChanged%28%29" format="application/java-archive"><parmname>CCoeControl::SizeChanged</parmname></xref> to respond to
+changes to the size and position of the contents of this control. This is
+called by the Symbian platform when a change occurs. A typical implementation
+for a compound control is:</p>
+<codeblock id="GUID-6F100E69-F0BB-4637-A1AA-57024AF20CF4" xml:space="preserve">void CMyAppView::SizeChanged()
+    {
+    // Control resize code
+    iControl-&gt;SetExtent( const TPoint &amp;aPosition, const TSize &amp;aSize);
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A28F76D-ACEF-51A3-96DF-9DFF2F5C2ACF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1A28F76D-ACEF-51A3-96DF-9DFF2F5C2ACF" xml:lang="en"><title>HTTP Client</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4"><title>win32_library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>win32_library</codeph>  <varname>filename-list</varname> </p> <p>Use <codeph>win32_library</codeph> to specify Win32 libraries in the same way that other libraries are specified with the <codeph>library</codeph> statement. </p> <p>If any Win32 system libraries are specified, directories specified by the <codeph>INCLUDE</codeph> environmental variable will be searched for system-included header files that are not found in the system include paths specified for the project.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A43A45B-80AE-56A0-A94C-64BA75519C67.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1A43A45B-80AE-56A0-A94C-64BA75519C67" xml:lang="en"><title>Messaging Application
+Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Messaging Application module provides APIs for SMS, email, MMS and
+OBEX messaging. This guide provides detailed information about the Messaging
+Application module. </p>
+<p>The Messaging Application module consists of the following collections:</p>
+</conbody><related-links>
+<link href="GUID-5DD1010C-1648-5086-BA80-BC25F3C7A2C4.dita"><linktext>Messaging
+Middleware Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762"><title>User Prompt Service Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>User Prompt Service (UPS) allows device creators to specify whether requests made by applications to access services, such as a request to make a telephone call, are processed silently or whether they require the user to be prompted. </p> <section><title>Purpose</title> <p>An application requests a service. The service provider (a system server) requests a decision from the UPS. The UPS searches for a matching policy file and policy. Based on the policy for the service, the service request may be immediately accepted or denied or it may need to receive a decision from the user, in which case it is accepted or denied after several further steps are carried out. </p> <p>Device creators can customize the circumstances under which prompts are generated by configuring policies. Policies are made up of details about the service being requested as well as information about whether to accept or deny silently or to ask the user. They are defined in policy lists. Each service has one policy list defining any number of policies. In cases where the policy specifies that a user prompt is required, ECom plug-ins called <xref href="GUID-43080A86-72D3-5422-953E-A5EF79961D7B.dita">Policy Evaluators</xref> and <xref href="GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8.dita">Dialog Creators</xref>, written by device creators. </p> </section> <section><title>Key concepts</title> <p>The component has the following key concepts: </p> <dl><dlentry><dt>Policy</dt> <dd><p>Policies specify whether application requests to access services should be processed silently or whether the user should be prompted for a decision. Policies may be general or specific – for example a policy may be specific to a single application, a group of applications or a class of applications (For example, those with unprotected secure ids). Policies are defined in policy lists. Device creators define policies. </p> </dd> </dlentry> <dlentry><dt>UPS policy file</dt> <dd><p>A UPS policy file is a compiled resource file containing all of the policies for a given service. The policies are ordered from most specific to least specific. </p> <p>Because policies are matched in order, each service may have only one policy file. To define a policy safely, you need to know which other policies have been defined. If you place a general policy near the beginning of the list of policies, you prevent other policies from being evaluated. </p> </dd> </dlentry> <dlentry><dt>Policy evaluator</dt> <dd><p>Policy evaluators are Ecom plug-ins, which are responsible for generating fingerprints (see below) used to locate previous decision records related to the request. Device creators define policy evaluators. </p> </dd> </dlentry> <dlentry><dt>Dialog creator</dt> <dd><p>Dialog creators are Ecom plug-ins, which display and generate dialog prompts. Device creators define dialog creators. </p> </dd> </dlentry> <dlentry><dt>Fingerprint</dt> <dd><p>A fingerprint is a collection of data to do with the service being requested. The fingerprint usually includes the destination string supplied by the service that is matched to the destination string of a policy in the policy file. It might be a phone number, domain name, access point etc. A fingerprint is used to search the decision database for a match and to add a record to the decision database if a match was not found in the initial search. Device creators define the <codeph>GenerateFingerprints()</codeph> function in the Policy Evaluator plug-in. </p> <p>A fingerprint serves two purposes: </p> <ul><li id="GUID-2F6022DE-F9C0-5560-A966-F77F5F8077AC"><p>The UPS uses it to search the decision database for a match. </p> </li> <li id="GUID-2BB4C56D-055D-5E79-97D7-CCC2E0D69700"><p>If the UPS finds no record of a previous user decision and the user selects "always" or "never" in response to the UPS prompt, it uses the fingerprint to create a new record in the decision database. </p> </li> </ul> <p>It is possible to specify one or many policy evaluators. It is also possible not to specify a policy evaluator and to depend on the default policy evaluator. </p> </dd> </dlentry> <dlentry><dt>Decision database</dt> <dd><p>A decision database stores the phone user's choice of whether a request is always granted or never granted. Decisions stored in the decision database persist across reboots of the device. The decision database is provided by Symbian. </p> <p>The decision database may not be accessed directly. However, records may be retrieved and deleted via the management APIs. This might be used by a control-panel application. </p> </dd> </dlentry> </dl> </section> <section><title>Architectural relationships</title> <p>The UPS provides <xref href="GUID-F1FE58C4-2703-3651-8721-D018865BA169.dita"><apiname>CDialogCreator</apiname></xref> and <xref href="GUID-FDE91CAC-1588-3EED-B509-08168F4B881B.dita"><apiname>CPolicyEvaluator</apiname></xref> interfaces for device creators to implement. </p> <fig id="GUID-66482906-10D7-5536-87CE-0B97C1DFBB16"><title>
+             UPS components 
+          </title> <image href="GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e355954_href.png" placement="inline"/></fig> </section> <section><title>API summary</title> <p>The following diagram shows the relationships between some of the key classes in the UPS. </p> <fig id="GUID-2D2DB4F6-6526-585A-835F-FD78E43B5079"><title>
+             Class diagram of key classes in UPS 
+          </title> <image href="GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e355968_href.png" placement="inline"/></fig> <table id="GUID-3A54E48E-35CF-5B20-8139-BF63B7EF3EDB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Class Name</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D.dita#GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D/GUID-179AD3F9-8121-3F65-B393-CA3924A3111B"><apiname>UserPromptService::CClientEntity</apiname></xref>  </p> </entry> <entry><p>Class representing an entity executing within a client process. For example, a script. </p> </entry> </row> <row><entry><p> <xref href="GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D.dita#GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D/GUID-0F7D8FF7-6176-32F8-8469-253D81848090"><apiname>UserPromptService::CDialogCreator</apiname></xref>  </p> </entry> <entry><p>Abstract base class for dialog creator Ecom plug-ins. Dialog creators are responsible for generating and displaying prompt dialogs. </p> </entry> </row> <row><entry><p> <xref href="GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D.dita#GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D/GUID-2E49A95A-8CAC-36B9-BAC8-A9DED4AE7CFE"><apiname>UserPromptService::CFingerprint</apiname></xref>  </p> </entry> <entry><p>Class that represents the fingerprint data for a stored decision. </p> </entry> </row> <row><entry><p> <xref href="GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D.dita#GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D/GUID-490A81F4-B763-3D01-AAAC-61B94793B0CB"><apiname>UserPromptService::CPolicy</apiname></xref>  </p> </entry> <entry><p>Class for a single policy record. </p> </entry> </row> <row><entry><p> <xref href="GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D.dita#GUID-0A4AFA03-0424-3384-AFEC-083B31C86B5D/GUID-65A2A57C-E9BB-3957-BC16-5579BF105329"><apiname>UserPromptService::CPolicyEvaluator</apiname></xref>  </p> </entry> <entry><p>Abstract base class for a policy evaluator Ecom plug-in. Policy evaluators are primarily responsible for generating the fingerprints used to locate previous decision records related to the current request. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The following diagram shows the sequence of activities performed by the UPS after it receives a request from a server: </p> <fig id="GUID-4FE4A657-5299-5D20-8E23-90C3EEC67462"><title>
+             Diagram showing activities for a single request 
+          </title> <image href="GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e356080_href.png" placement="inline"/></fig> <p>As is shown in the above diagram, the UPS returns a decision to the system server as in the following use cases: </p> <ul><li id="GUID-E414AB08-85A4-5686-88F1-584E17244DA9"><p>processing silently </p> </li> <li id="GUID-DFC214C2-D97C-550D-80EE-62653BDD9FFB"><p>finding a stored decision in the decision database </p> </li> <li id="GUID-266A70E9-67C4-5FA5-9E02-CB4ECC6E53E2"><p>prompting the user in a dialog and resulting in a "one-shot" or "session" (non-persistent) decision by the user </p> </li> <li id="GUID-25813297-93CD-5668-9DB2-1A0C7DC06A26"><p>prompting the user in a dialog and resulting in an "always" or "never" (persistent) decision by the user </p> </li> </ul> <p>The Policy Evaluator allows device creators to customize the behaviour of the UPS at run-time. Policy Evaluators may: </p> <ul><li id="GUID-281ACA0D-0927-5D0B-9F09-71256343ACC8"><p>Allow security decisions to be specific to the data on which the service acts instead of simply granting full access to the service, for example "Allow application X to send SMS messages to 01234567". This is supported via the fingerprint functionality. </p> </li> <li id="GUID-027E0704-7766-5742-AB35-3B49D9DEBEC6"><p>Allow a security decision to be specific to an individual script executing within a scripting host. This is supported via the client entity field. </p> </li> <li id="GUID-B20E7021-251F-59BD-ADBC-02EFEA09F5F2"><p>Allow a prompt to be displayed even if the user selected "Always" or "Never". This could be based on a usage threshold or simply as additional confirmation if the user selected "Never". This is supported via the force prompt functionality. </p> </li> </ul> </section> <section><title>Typical uses</title> <p>The UPS component provides interfaces to perform the following tasks: </p> <ul><li id="GUID-7D89C9F6-82E6-5B5C-9652-C8749E2BF759"><p><xref href="GUID-85D9878E-4FEF-5E45-9F87-53634CD171E0.dita">Integrating a System Server with UPS</xref>  </p> </li> <li id="GUID-B2633E58-3B5C-5763-A4AC-1BA0B624DAE3"><p><xref href="GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99.dita">Writing a UPS Policy File</xref>  </p> </li> <li id="GUID-CDDBA2CE-A80B-5B7C-8865-D059052BD33C"><p><xref href="GUID-43080A86-72D3-5422-953E-A5EF79961D7B.dita">Writing a UPS Policy Evaluator</xref>  </p> </li> <li id="GUID-69F5480D-3575-5124-AE14-F458FC03A578"><p><xref href="GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8.dita">Writing a UPS Dialog Creator</xref>  </p> </li> <li id="GUID-5B659B40-818D-55F7-87AD-4144427DA52F"><p><xref href="GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614.dita">Using UPS management APIs</xref>  </p> </li> <li id="GUID-AAC1FF6D-6D4C-5548-B385-B672622A799D"><p>Example code at <filepath>\sf\os\security\authorisation\userpromptservice\examples\</filepath> location. </p> </li> </ul> </section> <section><title>See also</title> <p>For related information, see <xref href="GUID-6849E256-6719-5788-BCB2-7557F09AAAD0.dita">UPS Configuration</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e215503_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A8B20B3-CA6D-58A6-9DA0-8EB3965EDE7A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1A8B20B3-CA6D-58A6-9DA0-8EB3965EDE7A"><title>How to detach and re-attach a file</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The file associated with a file store may be detached from the file store and later re-attached. This behaviour is useful in cases where the file needs to be closed and later re-opened ; for example, to give up a write lock for backup purposes.</p> <p>It is very important that the contents of the file should <i>not change</i> while it is detached.</p> <p>In the following code fragment, the file associated with the file store is detached and closed; the file is then re-opened and re-attached to the file store.</p> <ol id="GUID-4E6D29CD-40E8-596A-B443-A6B5C1154AE5"><li id="GUID-3EF9488A-3B84-5D17-B32A-CB7EE21A428E"><p>Use the <codeph>File()</codeph> member function to retrieve a copy of the <codeph>RFile</codeph> object from the file store.</p> </li> <li id="GUID-81CF873E-51CD-509C-ABD7-E5A9DADE4181"><p>Use the <codeph>Detach()</codeph> member function to detach the file store from the file and, in effect, give up ownership of the file.</p> </li> <li id="GUID-1ABA76DD-EAE1-5E3C-83FE-00F8DA6B256D"><p>Use the <codeph>Reattach()</codeph> member function to re-attach a file to the file store and, in effect, take ownership of that file.</p> </li> </ol> <codeblock id="GUID-494F23D9-6A61-53A0-995F-70CF227667B9" xml:space="preserve">LOCAL_C void doUseL(const TDesC&amp; aName)
+    {
+    TParse filestorename;
+    ...
+    fsSession.Parse(aName,filestorename);
+    CFileStore* store = CPermanentFileStore::OpenLC (fsSession, filestorename.FullName(),EFileRead|EFileWrite );
+    RFile thefile = store-&gt;File();
+    store-&gt;Detach();
+    thefile.Close();
+    ...
+    thefile.Open(fsSession, filestorename.FullName(),EFileRead|EFileWrite );
+    store-&gt;Reattach(thefile);
+    ...
+    }</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B"><title>OpenVG Collection Overview</title><shortdesc>OpenVG is a royalty-free, cross-platform API that provides a low-level hardware acceleration interface for vector graphics libraries such as Flash and SVG. OpenVG is targeted primarily at handheld devices that require portable acceleration of high-quality vector graphics for user interfaces and text on small screen devices—while enabling hardware acceleration to provide fluidly interactive performance at very low power levels. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p> <p>OpenVG is an open standard developed by the Khronos Group (<xref scope="external" href="http://www.khronos.org">www.khronos.org</xref>). OpenVG features include: </p> <ul><li id="GUID-B267EBF8-8507-5200-A988-E9473421C7AE"><p>Coordinate systems and transformations (image drawing uses a 3x3 perspective transformation matrix) </p> </li> <li id="GUID-9DD01326-63A6-548E-A245-61118D1751D1"><p>Viewport clipping, scissoring and alpha masking </p> </li> <li id="GUID-E265A325-F47B-5D5E-B98E-4DC7113000FB"><p>Paths </p> </li> <li id="GUID-AAB66D89-68F2-59A5-BB29-E49932FEFB13"><p>Images and image filters </p> </li> <li id="GUID-DEB27EED-13F2-5B2D-AADD-2BA0F2A4A872"><p>Paint (gradient and pattern) </p> </li> <li id="GUID-9CC84B3A-2891-5D2C-909E-F0C12F96569E"><p>Blending. </p> </li> </ul> <p>In addition, the associated VGU utility library provides features such as higher-level geometric primitives and image warping. </p> <section><title>Architecture</title> <p>OpenVG only defines rendering functionality and therefore cannot be used in isolation. It requires EGL to establish an environment in which OpenVG can be used. For example, EGL tells OpenVG where its rendered output should go. OpenVG depends on a standalone implementation of EGL. </p> <p>The following diagram shows the direct use of OpenVG by an application through the public OpenVG interface together with EGL. On the Symbian platform, both OpenVG and EGL have a component (shown in blue) that declares the interface, and both require an implementation that implements that interface (shown in green). </p> <fig id="GUID-2BCC3100-9644-55D1-A26E-C3510A148E66"><title>
+             OpenVG external relationships 
+          </title> <image href="GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e181268_href.png" placement="inline"/></fig> <p>It is possible for the OpenVG and EGL implementations to communicate through a private interface that is not standardized by Symbian. </p> <p>The <xref href="GUID-C2E24953-3D83-59FB-8B7A-C850474406DB.dita">OpenVG Interface</xref> provides a consistent interface to OpenVG on the Symbian platform, enabling cross-device compatibility. The component includes the Khronos-released header files (which incorporate some minor changes, such as to the comments). It also provides some Symbian-specific header files and some other files (such as LIB, DEF and MMP files) and UIDs. It does not provide any implementations of the APIs. </p> </section> <section><title>Description</title> <p>OpenVG is designed to be the primary 2D and vector graphics API for use by mobile devices. By providing a consistent interface to OpenVG, the Symbian platform allows OpenVG applications and middleware (such as an SVG engine) to automatically benefit from hardware acceleration when it is present without losing compatibility when it is not available. In addition device and hardware manufacturers benefit from a standard Hardware Adaptation Interface (HAI) to plug into. This means that OpenVG has the potential to provide end users with improved quality and responsiveness of graphics features. </p> </section> </conbody><related-links><link href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita"><linktext>OpenVG Collection</linktext> </link> <link href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita"><linktext>EGL
+                Collection</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A94AA49-3954-581B-92EE-C9BDA253508F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1A94AA49-3954-581B-92EE-C9BDA253508F" xml:lang="en"><title>How
+to create a generic array</title><shortdesc>Arrays can be created using a templated class. This allows a degree
+of polymorphism to be used without needing to know the data type in the array.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Arrays can be accessed in a limited way using a <codeph>TArray&lt;class T&gt;</codeph> object.
+This is a templated class which can be constructed by any of the templated
+array classes: <codeph>CArrayFixFlat&lt;class T&gt;</codeph>, <codeph>CArrayFixSeg&lt;class T&gt;</codeph>, <codeph>CArrayVarFlat&lt;class T&gt;</codeph>, <codeph>CArrayVarSeg&lt;class T&gt;</codeph> and <codeph>CArrayPakFlat&lt;class T&gt;</codeph>.</p>
+<p>It allows a degree of polymorphism amongst the array classes. It permits
+the <codeph>operator[]</codeph> and the <codeph>Count()</codeph> member functions
+of an array to be invoked without knowing the type of that array.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1A9B3BB8-9F68-5C71-9534-A59638BBCD1E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1A9B3BB8-9F68-5C71-9534-A59638BBCD1E" xml:lang="en"><title>Floating-point
+numbers</title><shortdesc>This document describes the floating-point data types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-2D851BBB-15A1-309A-813D-E397D55A6431.dita"><apiname>TReal</apiname></xref> is a 64-bit double-precision type, used as the
+argument type for all math functions, and the default type of floating-point
+literals.</p>
+<p><xref href="GUID-E694921E-0449-3B0B-81DC-5A9FCC07B345.dita"><apiname>TReal64</apiname></xref> and <xref href="GUID-58CA4B68-0A0F-31E2-A624-0F78F47EE458.dita"><apiname>TReal32</apiname></xref> are available
+when the precise size is important.</p>
+<p>Symbian platform floating-point arithmetic conforms to the IEEE754 specification.</p>
+<p>Most Symbian platform implementations do not have hardware floating-point
+support. As a result, floating-point arithmetic is noticeably less efficient
+than integer arithmetic. It should be avoided unless demanded by the problem
+type.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B" xml:lang="en"><title>Forms</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A form is a specific kind of selection list, where all items (fields) have
+some editable content.</p>
+<p>A form can be in the View state or in the Edit state. The item layouts
+and functionality are different in these states:</p>
+<ul>
+<li><p>In the View state, the items are not editable. The form functions and
+looks exactly like a similar selection list. Items can be selected to perform
+an application-specific function. </p></li>
+<li><p>In the Edit state, the user can edit all the fields. Forms can contain
+text fields (alphanumeric or numeric content), pop-up fields and sliders.</p><p></p></li>
+</ul>
+<p>The user can switch from the View state to the Edit state using the Edit
+command in the Options menu.In the Edit state, the contents of the form can
+be accepted using the right softkey labeled as Done. The form then returns
+to the View state.</p>
+<section><title>Using forms in C++ applications</title><p>The
+API to use for creating forms is the Form
+API. For implementation information, see Using
+the Form API.</p><p>Typically, a form will be derived from the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknForm.html" format="application/java-archive"><codeph>CAknForm</codeph></xref> and
+the methods <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknForm.html#b90bd30d42503d5f0464e9ff1ce3b830" format="application/java-archive"><codeph>SaveFormDataL()</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknForm.html#6ff9f54d5d8a08da0c6f6574389b787a" format="application/java-archive"><codeph>DoNotSaveFormData()</codeph></xref> will be implemented by the developer. These are called when users
+switch from edit mode to view mode and are prompted by the form as to whether
+they wish to save their modifications.</p><p>For customization, the class <codeph>CAknForm</codeph> provides
+a single-line or double-line layout and it is possible to use icons on forms. </p><p>In
+the following example, the form is pushed on the cleanup stack before <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknForm.html#a7108b30a367ecb940f57e0dd35973bd" format="application/java-archive"><codeph>ConstructL()</codeph></xref> (a
+potentially leaving method) is called, and popped off before <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDialog.html#2bb826c038d23806445872d768e7d151" format="application/java-archive"><codeph>ExecuteLD()</codeph></xref>. </p><codeblock xml:space="preserve">CAknExFormAdd* form = new(ELeave) CAknExFormAdd;
+CleanupStack::PushL(form);
+form-&gt;ConstructL();
+CleanupStack::Pop();
+form-&gt;ExecuteLD(R_AKNEXFORM_TEXT_FIELD_DIALOG);
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB" xml:lang="en"><title>Writing
+a MIME Recognizer</title><abstract><p>The Mime Recognizers provide the implementation for data type
+(MIME Type) recognition using the MIME recognition framework. </p><p>Each
+MIME recognizer specifies the MIME type it supports along with the priority
+and confidence of recognition. A MIME recognizer reads a small piece of data
+and identifies the data type. Once the data type is identified, it is passed
+to the <xref href="GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0.dita">Application
+Architecture </xref> (AppArc). AppArc launches the application
+that best handles the identified data type.  </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-6799E3F3-353E-5C00-A38C-D32F888392AA-GENID-1-6-1-10-1-1-6-1-5-1-4-1-3-1-3-1"><p>Symbian OS v9.1
+and onwards, MIME recognizers are <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECOM</xref> plug-ins.
+They are located in <b>\sys\bin\</b>. </p> <p>Each MIME recognizer is loaded
+by the <xref href="GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0.dita">Application
+Architecture (AppArc)</xref> during the startup sequence. </p> </context>
+<steps id="GUID-45E4FFC7-5C92-5101-B21B-581C2AFB9CF0">
+<step id="GUID-016BE2C1-DFB1-51B0-9A5C-C3A926C48E33"><cmd/>
+<info>Create a project file (<filepath>.mmp</filepath>) for the MIME recognizer
+and ensure the following parameters are set. </info>
+<stepxmp><table id="GUID-8A194C7E-8927-5A8A-B1EA-EB9D7A23CF0C">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>Variable Name</b>  </p> </entry>
+<entry><p> <b>Value</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TargetType</codeph>  </p> </entry>
+<entry><p> <codeph>plugin</codeph>  </p> </entry>
+<entry><p>Specifies the type of binary. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Resource</codeph>  </p> </entry>
+<entry><p>Use the block <codeph>start resource ... end</codeph>  </p> </entry>
+<entry><p>The variable <codeph>Resource</codeph> is set to the registration
+resource file (<filepath>.rss)</filepath>)of the MIME recognizer. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>UID</codeph>  </p> </entry>
+<entry><p> <codeph>0x10009D8D</codeph> and the <codeph>DLL UID</codeph>  </p> </entry>
+<entry><p>The variable <codeph>UID</codeph> requires two values. The first
+value is 0x10009D8D and is constant for all MIME recognizers. The second value
+is the UID of the DLL. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Capability</codeph>  </p> </entry>
+<entry><p> <codeph>Protserv</codeph>  </p> </entry>
+<entry><p>The AppArc server has <codeph>protserv</codeph> capability.The MIME
+recognizers are loaded by the AppArc server on requirement. The MIME recognizers
+must have <codeph>protserv</codeph> capability to be loaded by the AppArc
+server. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </stepxmp>
+<info>For more details, refer <xref href="GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita">Creating
+a Project File</xref>. </info>
+<info>The code below shows a sample <filepath>.mmp</filepath> file with the
+above parameters set. </info>
+<stepxmp><codeblock id="GUID-B21A3AEB-C21C-5C9B-8BE3-715336ECBFD0" xml:space="preserve">target exampleRecognizer.dll
+
+capability          Protserv
+targettype          plugin
+uid                    0x10009d8d 0x1d1f75ed
+vendorid            0x70000001
+
+sourcepath          .
+source                 exampleRecognizer.cpp
+systeminclude       \EPOC32\INCLUDE
+systeminclude       \EPOC32\INCLUDE\ECOM 
+
+library                EUSER.LIB APMIME.LIB 
+
+start resource   1d1f75ed.rss
+target           exampleRecognizer.rsc
+end</codeblock> </stepxmp>
+</step>
+<step id="GUID-98A72A42-24D2-5A16-A0DE-15223FD1A685"><cmd/>
+<info>Export the factory code function of the MIME recognizer as shown below.
+This is required to create an instance of the MIME recognizer. </info>
+<info>The class <codeph>CExampleRecognizer</codeph> is derived from <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita"><apiname>CApaDataRecognizerType</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-F61F7E5E-37E0-5F4B-8E9A-E4C106005554" xml:space="preserve">const TInt KImplementationUID = 0x101F7DA1;
+
+CApaDataRecognizerType* CExampleRecognizer::CreateRecognizerL()
+       {
+         return new (ELeave) CExampleRecognizer;
+       }
+
+const TImplementationProxy ImplementationTable[] = 
+       {
+        IMPLEMENTATION_PROXY_ENTRY(KImplementationUID,CExampleRecognizer::CreateRecognizerL);
+       }
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+       {
+        aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+        return ImplementationTable;
+    }
+</codeblock> </stepxmp>
+<info>For more details refer <xref href="GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita">Exporting
+Implementation Factories.</xref>  </info>
+</step>
+<step id="GUID-B06E4D48-5CC2-5BEB-8C28-8DE5EFF62FE1"><cmd/>
+<info>Implement <codeph>CApaDataRecognizerType</codeph> polymorphic interface. </info>
+<substeps id="GUID-C29E1469-92CF-53D6-867F-FA73E223929C">
+<substep id="GUID-B670112D-ACEB-5001-8F60-F16DF4240CE7"><cmd/>
+<info>The code below shows a sample constructor implementation. </info>
+<stepxmp><codeblock id="GUID-F8BD0190-4751-5731-BBF8-BD41644755F5" xml:space="preserve">const TUid KExampleUid = {0x1d1f75ed};
+
+const TInt KNumDataTypes = 1;
+
+CExampleRecognizer::CExampleRecognizer() : CApaDataRecognizerType(KExampleUid,CApaDataRecognizerType::EHigh) 
+
+  { 
+     iCountDataTypes = KNumDataTypes;
+ 
+  } 
+
+</codeblock> </stepxmp>
+<info>Specify a UID (the <codeph>DLL UID</codeph> as specified in the plug-in
+project definition file) and a <xref href="GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita">priority</xref> in
+the constructor. </info>
+<info>The <codeph>iCountDataTypes</codeph> variable, represents the number
+of data types supported by the recognizer can also be set in the constructor.
+The value set for this variable should match the implementation of <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita#GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0/GUID-FBCE07F2-9566-3AD1-B943-2FFF5C5AAE67"><apiname>CApaDataRecognizerType::SupportedDataTypeL()</apiname></xref>. </info>
+</substep>
+<substep id="GUID-5F36C1F6-3EDA-5817-801D-9B5C6F9F4927"><cmd/>
+<info>Implement the pure virtual function <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita#GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0/GUID-FBCE07F2-9566-3AD1-B943-2FFF5C5AAE67"><apiname>CApaDataRecognizerType::SupportedDataTypeL()</apiname></xref>.
+It returns the MIME types that the recognizer is capable of recognizing. </info>
+<info>The code below shows a sample implementation of <codeph>SupportedDataTypeL()</codeph> for
+supporting MIME type/ subtype "text/example". </info>
+<stepxmp><codeblock id="GUID-D2DDF2A2-2897-544A-ACA7-DA3A60FB27E9" xml:space="preserve">
+_LIT8(KExampleTextMimeType, "text/example"); 
+
+
+TDataType CExampleRecognizer::SupportedDataTypeL(TInt aIndex) const
+
+    {
+        return TDataType(KExampleTextMimeType);
+
+    }</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-4C2CD90F-17AB-53B5-883A-7022E1231E2E"><cmd/>
+<info>Implement <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita#GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0/GUID-74ED8BEA-52AA-3AC4-92D9-5E4FB4F25DDD"><apiname>CApaDataRecognizerType::DoRecognizeL()</apiname></xref>.
+This function executes data type recognition. </info>
+<info>The code below shows a sample implementation of <codeph>DoRecognizeL()</codeph> for
+recognizing the MIME type <codeph>"/text/example"</codeph> contained in files
+with <filepath>.example</filepath> extension with maximum confidence. </info>
+<stepxmp><codeblock id="GUID-C8F82861-AF59-5E23-9F1D-8656B2D1EE54" xml:space="preserve">void CExampleRecognizer::DoRecognizeL(const TDesC&amp; aName, const TDesC8&amp; aBuffer)
+    {
+    _LIT8(KExampleData, "example");
+    _LIT(KDotExample, ".Example");
+
+    TParse parse;
+    parse.Set(aName,NULL,NULL);
+    TPtrC ext=parse.Ext(); // extract the extension from the filename
+
+    if (ext.CompareF(KDotExample)==0 &amp;&amp; aBuffer.FindF(KExampleData)!=KErrNotFound)
+         {
+          iConfidence=ECertain;
+          iDataType=TDataType(KExampleTextMimeType); 
+        }
+    }</codeblock> </stepxmp>
+</substep>
+</substeps>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1AC942E2-58C7-45C1-A122-3D07407A07D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1AC942E2-58C7-45C1-A122-3D07407A07D9" xml:lang="en"><title>Copyright
+Acknowledgments for GLib</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>GBSearchArray - Binary Searchable Array implementation</p>
+<p/>
+<p>Copyright (C) 2000-2003 Tim Janik</p>
+<p/>
+<p>This software is provided "as is"; redistribution and modification is permitted,
+provided that the following disclaimer is retained.  This software is distributed
+in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+In no event shall the authors or contributors be liable for any direct, indirect,
+incidental, special, exemplary, or consequential damages (including, but not
+limited to, procurement of substitute goods or services; loss of use, data,
+or profits; or business interruption) however caused and on any theory of
+liability, whether in contract, strict liability, or tort (including negligence
+or otherwise) arising in any way out of the use of this software, even if
+advised of the possibility of such damage.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6" xml:lang="en"><title>Use Cases
+for Writing Standard C++ Code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following topics describe the use cases based on which you can write
+Standard C++ code on Symbian platform: </p>
+<ul>
+<li id="GUID-FE4675CC-A3B2-5487-8318-996810CED805"><p><xref href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita#GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6/GUID-20DCAC0E-D335-55A7-ADDE-17245D591970">Standard C++ code using STL or Standard C</xref>  </p> </li>
+<li id="GUID-6AE48560-9481-511F-9165-FA9F15E36D2F"><p><xref href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita#GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6/GUID-4024FCCD-7A54-50EE-BCDD-72BC23A34CD8">Standard C++ code calling Symbian C++ functions</xref>  </p> </li>
+<li id="GUID-84E464CC-B1D3-51FD-85B3-2984F042204E"><p><xref href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita#GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6/GUID-B6F7FA56-D3DD-5638-A1E9-676B7C4354BD">Symbian C++ code calling Standard C++ functions</xref>  </p> </li>
+</ul>
+<section id="GUID-20DCAC0E-D335-55A7-ADDE-17245D591970"><title> Standard C++
+code using STL or Standard C</title> <p>You can write a pure Standard C++
+application or library that does not use Symbian C++ directly. When you write
+Standard C++ code using STL or Standard C ensure that you adhere to the following
+guidelines: </p> <ol id="GUID-19F8A9FD-550E-5CEE-A481-24A82BC70DD0">
+<li id="GUID-5107C1FB-E3B8-5680-8295-FD6860A76710"><p>Use the <codeph>STDCPP</codeph> keyword
+in the <filepath>.mmp</filepath> file or you target type must be an <codeph>STD</codeph> target
+type. </p> </li>
+<li id="GUID-1E1A166A-F7A9-5B6A-A7BC-F143FCDCACED"><p>Use only the Standard
+C++ semantics of the global <codeph>operator                 new</codeph>. </p> </li>
+<li id="GUID-32B3C42A-9291-57C5-8030-F3966FC64AF4"><p>Your code must not depend
+on One Definition Rule (ODR) across DLL boundaries. For more information,
+see the <xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-A85386B3-3E37-5303-8FBF-211551D5CB71">Use
+of one definition rule</xref> section. </p> </li>
+</ol> <p> <b>Notes:</b>  </p> <ul>
+<li id="GUID-32BC5E8B-3C8C-59C5-A361-6184B0123563"><p>If these guidelines
+are not followed, it can result in problems described in the <xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita">Possible
+Problems</xref> section. </p> </li>
+<li id="GUID-F75F3E1A-195B-5326-8A7D-4667D43BEF0A"><p>Before you write a Standard
+C++ library, see the <xref href="GUID-C9D4D586-58BF-5676-A53F-9C3A51101430.dita">Guidelines
+for Writing Standard C++ Libraries</xref> section. </p> </li>
+</ul> </section>
+<section id="GUID-4024FCCD-7A54-50EE-BCDD-72BC23A34CD8"><title>Standard C++
+code calling Symbian C++ functions</title> <p>When you write Standard C++
+code that calls Symbian C++ functions ensure that you adhere to the following
+guidelines: </p> <ol id="GUID-FABDAF1D-3BBE-55CA-9F8B-9AE140A4B556">
+<li id="GUID-6CC66050-575D-50FD-BF22-68BE09721B9D"><p>Use the <codeph>STDCPP</codeph> keyword
+in the <filepath>.mmp</filepath> file or have an <codeph>STD</codeph> target
+type. </p> </li>
+<li id="GUID-2C217279-A018-5F11-A4D9-F69CDBD84EEA"><p>Use only the Standard
+C++ semantics of the global <codeph>operator                 new</codeph>. </p> </li>
+<li id="GUID-13155A1C-7E78-5036-AFD8-C0458DCEBE9D"><p>Your code must not depend
+on One Definition Rule (ODR) across DLL boundaries. For more information,
+see the <xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-A85386B3-3E37-5303-8FBF-211551D5CB71">Use
+of one definition rule</xref> section. </p> </li>
+<li id="GUID-9A449F22-6905-54AF-B7AA-F07737368126"><p>Use <xref href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita#GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6/GUID-A37EF5D8-67AD-5DC3-983C-A9E37A3E9D3C">barrier mechanisms</xref> while calling leaving functions of Symbian C++.
+Here barrier mechanisms are barriers for exception propagation in terms of
+TRAPs. </p> </li>
+</ol> <p> <b>Note:</b> Before you write a Standard C++ library, see the <xref href="GUID-C9D4D586-58BF-5676-A53F-9C3A51101430.dita">Guidelines for Writing Standard
+C++ Libraries</xref> section. </p> <p id="GUID-A37EF5D8-67AD-5DC3-983C-A9E37A3E9D3C"><b> Barrier
+mechanisms for writing Standard C++ code</b> </p> <p>Leaving functions of
+Symbian C++ that are called from Standard C++ code must be called under a
+TRAP as shown in the following code: </p> <codeblock id="GUID-D1A75E6A-4BFC-51EC-8E50-4C1C2D09175F" xml:space="preserve">TRAPD (err, GetAnotherK1LC());</codeblock> <p>This enables a leaving function to have the items on the cleanup stack removed
+that were added by this function itself (or any of its callees). Otherwise,
+this can cause problems illustrated in the <xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-6CE49D59-46BB-5145-B346-6FD3EA8BC011">Standard
+C++ calling Symbian C++ functions</xref> section. </p> <p> <b>Note:</b> For
+more information about the leave-idiom on Symbian C++, see the <b>Lifetimes
+in Symbian platform</b> topic under the <xref href="GUID-1FFE4ED5-7B2E-58A0-9D08-A096F53F37AB.dita">Object
+lifetimes and cleanup</xref> section. </p> <p>The error code <codeph>err</codeph> can
+then be translated to throw a corresponding Standard C++ exception using the <codeph>TranslateSymErrorToCppException</codeph> utility
+function. This function is declared in <filepath>stdcpp_support.h</filepath>. </p> <p>Alternatively,
+you can also use the following utility macro: </p> <codeblock id="GUID-0216AF20-BB11-561E-8F2A-C9F2E17EF23B" xml:space="preserve">TRANSLATE_SYM_CPP_LEAVES (CallSymbianOSCppL());</codeblock> <p>This macro calls the leaving function under a TRAP and if there is error,
+it throws the corresponding Standard C++ exception. The following table illustrates
+the mapping between an error and an exception: </p> <table id="GUID-A037AA99-8D1B-595E-B36E-E6BCEB7C8E25">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Error</entry>
+<entry>Exception</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>KErrNoMemory</codeph>  </p> </entry>
+<entry><p> <codeph>std::bad_alloc</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KErrArgument</codeph>  </p> </entry>
+<entry><p> <codeph>std::invalid_argument</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KErrOverflow</codeph>  </p> </entry>
+<entry><p> <codeph>std::overflow_error</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KErrUnderflow</codeph>  </p> </entry>
+<entry><p> <codeph>std::underflow_error</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p>Other errors </p> </entry>
+<entry><p> <codeph>Symbian_error</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-B6F7FA56-D3DD-5638-A1E9-676B7C4354BD"><title>Symbian C++
+code calling Standard C++ functions</title> <p>When you write Symbian C++
+code that calls Standard C++ functions ensure that you adhere to the following
+guidelines: </p> <ol id="GUID-B2C94D28-6AF6-565B-A575-0B950B9B46B1">
+<li id="GUID-C0B7A2DE-9FF2-55E0-AB15-C90AAA76B997"><p>Use the Symbian C++
+semantics of the global <codeph>operator                 new</codeph>. </p> </li>
+<li id="GUID-A89D2A48-2885-5E7C-81AB-DEA4E75A8034"><p>Use <xref href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita#GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6/GUID-0D05436A-6B25-5D48-A13F-D959762860D3">barrier mechanisms</xref> while calling Standard C++ functions. Here, barrier
+mechanisms are barriers for exception propagation in terms of catch handlers
+or exception-specification (of a function) </p> </li>
+</ol> <p id="GUID-0D05436A-6B25-5D48-A13F-D959762860D3"><b> Barrier mechanisms
+for writing Symbian C++ code</b> </p> <p>A Standard C++ function that can
+throw must be called using a catch-handler. You can use catch-handlers for
+non-leaving functions as illustrated in the following code: </p> <codeblock id="GUID-75C0497D-2E80-5440-B3A4-CD9A9D0465D0" xml:space="preserve">void SymbianCppFunction()
+    {
+    try
+        {
+        // This is calling a StdC++ function that may throw any exception.
+        CppCallee(aK1, anotherK1);
+        }
+    catch (std::exception aException)
+        {    
+        // Catch all the standard C++ exceptions and translate them 
+        // to an appropriate Symbian platform error code using the following 
+        //utility function
+        error = TranslateCppExceptionToSymError(aException);
+        }
+    catch (X aX)
+        {
+        // The barrier can look for any call site specific exceptions that it
+        // knows about and wants to treat specially
+        }
+    catch (...)
+        {
+        // catch all 
+        }
+    }</codeblock> <p>You can use catch-handlers for leaving functions as illustrated
+in the following code: </p> <codeblock id="GUID-770BA39D-C188-512C-9285-E93E2BCA3D2E" xml:space="preserve">void SymbianCppFunctionL()
+    {
+    try
+        {
+        // This is calling a StdC++ function that may throw any exception.
+        CppCallee(aK1, anotherK1);
+        }
+    catch (std::exception aException)
+        {    
+        // Catch all the standard C++ exceptions and translate them 
+        // to an appropriate Symbian platform error code using the following 
+        //utility function
+         TInt error = TranslateCppExceptionToSymError(aException);
+        User::Leave(error);
+        }
+    catch (X aX)
+        {
+        // The barrier can look for any call site specific exceptions that it
+        // knows about and wants to treat specially
+        TInt error;
+        //set the error here
+        User::Leave(error);
+        }
+    catch (...)
+        {
+        // catch all 
+        TInt error;
+        //set the error here
+        User::Leave(error);
+        }
+    }</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright
+Acknowledgments for Standard C++ (STLport)</linktext></link>
+<link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard
+C++ Library Overview</linktext></link>
+<link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext> Standard
+C++ Support on Symbian Platform</linktext></link>
+<link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building
+a Standard C++ Application or Library</linktext></link>
+<link href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita"><linktext>Possible
+Problems</linktext></link>
+<link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext>
+</link>
+<link href="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita"><linktext>Troubleshooting</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1AFD6B2D-C6CD-5BBF-A968-F68CCDFDA927.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1AFD6B2D-C6CD-5BBF-A968-F68CCDFDA927" xml:lang="en"><title>Multimedia Utility Library Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Multimedia Utility Library component provides shared utilities for other Multimedia components. </p> </conbody><related-links><link href="GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita"><linktext>Multimedia APIs and
+  Frameworks Collection</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the ideas that underly the Comms Database. </p> <p>The Comms Database provides system wide storage for communications related settings. The Comms Database holds information about Internet Access Providers (IAPs), Internet Service Providers (ISPs), GPRS, modems, locations, charge-cards, proxies, WAP settings etc. The Comms Database holds this information as a set of related tables. </p> <p>Symbian OS defines the format of this information, but the Comms Database can also contain user-defined data. Symbian support for user-defined data is limited to backup and security. </p> <p>Tools and applications that manage voice and data transmissions use the Comms Database. </p> <p>The Comms Database is a persistent store. Tools and applications use the CommsDat API to access the data in the Comms Database. The CommsDat API hides the structure of the data on the database. The CommsDat API also hides the implementation of the database, and allows the implementation to change in future versions of Symbian OS without a change to client code. </p> <p>The current version of Symbian OS implements the Comms Database in the Central Repository. </p> <p>The Comms Database is available on all Symbian platforms. </p> <fig id="GUID-51EC89D3-B9BF-5074-95C7-8C8304626F6E"><image href="GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e65751_href.png" placement="inline"/></fig> </conbody><related-links><link href="GUID-00696F18-F1C8-5810-A9F9-E7215CA451A4.dita"><linktext>Configuring comms database using CED</linktext> </link> <link href="GUID-A0948145-32C3-5754-B76D-AD7A8AF001A2.dita"><linktext>Comms database configuration file format</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49" xml:lang="en"><title>OpenVG Collection</title><shortdesc>The components within the OpenVG collection provide access to OpenVG
+on the Symbian platform. OpenVG, an open standard developed by the Khronos
+Group, provides an API for hardware accelerated two-dimensional (2D) vector
+and raster graphics. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p>
+</conbody><related-links>
+<link href="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita"><linktext>Khronos API
+  Support</linktext></link>
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1B363B7B-35E9-5CD9-BC44-A19D94DA1D21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1B363B7B-35E9-5CD9-BC44-A19D94DA1D21" xml:lang="en"><title>Removing
+attachments from messages</title><shortdesc>The messaging framework allows you to remove attachments from messages. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-E21AD703-A9AA-5153-B0EE-D068D6295257"><p>Attachments to
+a message may be removed. </p> </context>
+<steps id="GUID-F9F2F6BC-DC86-5931-BA0F-9E20212640ED">
+<step id="GUID-38716981-EE99-52C2-9522-082D188776C9"><cmd>Get the details
+of the message to which you want to add an attachment using <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-1864B96D-CB22-3EE1-8E73-023F12C68CB0"><apiname>CMsvEntry::EditStoreL()</apiname></xref>. </cmd>
+<info>This function returns <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> in writable mode. </info>
+</step>
+<step id="GUID-98B33831-888B-5354-80B6-9628C32F05C8"><cmd>Get an <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> attachment
+manager for the message entry, using <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-73CE27F3-855B-3F87-AE11-4B4F2B8F8825"><apiname>CMsvStore::AttachmentManagerL()</apiname></xref>. </cmd>
+</step>
+<step id="GUID-DCE18F1F-1314-581E-A6A9-06EFF8FF102D"><cmd/>
+<info>Remove an attachment using the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-3BD2E3BF-AD83-3BFA-9C8D-D823F4F9D71E"><apiname>MMsvAttachmentManager::RemoveAttachmentL()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-A70E9B23-6962-5347-8C4A-D79E7CD514E6" xml:space="preserve">void CFoo::RemoveAttachL(TInt aNum)
+    {
+    ...
+    
+    TRequestStatus status;
+    
+    // Remove attachment with index aNum
+    attManager.RemoveAttachmentL(aNum, status);
+    
+    // Wait for request to complete
+    User::WaitForRequest(status);
+    
+    ...
+    }</codeblock> </stepxmp>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-1963A487-D6A7-4225-8D0C-EC5FAB746854.dita"><linktext>Attachment
+Tutorial</linktext></link>
+<link href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita"><linktext>Messaging
+Framework Overview</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971"><title>Examples Showing the use of the SIP Codec API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following sections describe the use of the SIP Codec API. </p> <ul><li id="GUID-57701C66-D973-5F0B-96A0-1E99C347B7EA"><p> <xref href="GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971.dita#GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971/GUID-F124CB52-955C-53B5-9A43-E0D9B04F539C">Decoding a Contact Header using the SIP stack</xref>  </p> </li> <li id="GUID-4E087736-B5E4-594E-9877-7F4CB6C7F292"><p> <xref href="GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971.dita#GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971/GUID-96C179ED-FAFF-58CE-8BBF-58A5BE82FA2F">Decoding several Contact Headers using the SIP stack </xref>  </p> </li> <li id="GUID-C3B0A1C3-9224-5E48-9112-5DB58941E99D"><p> <xref href="GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971.dita#GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971/GUID-3A587908-769D-569E-9A6A-C23CFF38DCD6">Creating a CSIPContactHeader using the SIP stack</xref>  </p> </li> </ul> <section id="GUID-F124CB52-955C-53B5-9A43-E0D9B04F539C"><title> Decoding a Contact Header using the SIP stack</title> <p>The following code snippet shows how an application decodes a Contact header that uses the SIP stack: </p> <codeblock id="GUID-4E53526F-764D-500B-B7BC-F530CDF8C1B8" xml:space="preserve">RPointerArray&lt;CSIPContactHeader&gt; headers;
+_LIT8 (KThreeParams, "sip:user@localhost;expires=0;q=1.0;p=value");
+headers = CSIPContactHeader::DecodeL(KThreeParams);
+TInt count = headers.Count(); //count == 1
+iSIPContactHeader = headers[0];
+headers.Reset();
+iSIPContactHeader-&gt;ExpiresParameter();//return zero
+iSIPContactHeader-&gt;QParameter();//return 1.0
+delete iSIPContactHeader; iSIPContactHeader = 0;
+</codeblock> </section> <section id="GUID-96C179ED-FAFF-58CE-8BBF-58A5BE82FA2F"><title> Decoding several Contact Headers using the SIP stack </title> <p>The following code snippet shows how an application decodes the Contact headers that use the SIP stack: </p> <codeblock id="GUID-EBA24C46-ED9F-5105-B3FD-45E85AAE6930" xml:space="preserve">RPointerArray&lt;CSIPContactHeader&gt; headers;
+_LIT8 (KHeaders1, "&lt;sip:u1@host&gt;, u2 &lt;sip:u2@host&gt; , sip:host  ");
+headers = CSIPContactHeader::DecodeL(KHeaders1);
+headers.Count();//return 3
+headers.ResetAndDestroy();
+</codeblock> </section> <section id="GUID-3A587908-769D-569E-9A6A-C23CFF38DCD6"><title>Creating a CSIPContactHeader using the SIP stack </title> <p>The following code snippet shows how an application creates <codeph>CSIPContactHeader</codeph> that uses the SIP stack : </p> <codeblock id="GUID-A467810F-B774-511F-8679-5125D3073E87" xml:space="preserve">TUriParser8 parser;
+_LIT8 (KValue, "sip:user@host1");
+User::LeaveIfError(parser.Parse(KValue));
+CUri8* uri8 = CUri8::NewLC(parser);
+CSIPAddress* sipAddress = CSIPAddress::NewL(uri8);
+CleanupStack::Pop(); // uri8, ownership given to sipAddress
+CleanupStack::PushL(sipAddress);
+CSIPContactHeader* contactHeader = CSIPContactHeader::NewL(sipAddress);
+CleanupStack::Pop(); // sipAddress, ownership given to contactHeader
+</codeblock> <p> <b> Note:</b> Open the string pool before you use it. All the predefined SIP constants are in the string table, which are accessed by the string pool. At the end of handling, the SIP Codec string pool must be closed. </p> <codeblock id="GUID-2C9C0A6B-9FA6-5CE0-AF92-40C5F99D51EF" xml:space="preserve">#include "sipstrings.h"
+SIPStrings::OpenL();
+RStringPool pool = SIPStrings::Pool();</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1B58FBA8-4E2C-5A99-A4B7-D7475E1B8F96.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1B58FBA8-4E2C-5A99-A4B7-D7475E1B8F96"><title>How to use wrapping</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>After any operation which resizes the <keyword>text
+        area</keyword>, the wrapping width may need to be changed. The code in this section resets the view rectangle, and then resets the wrapping width accordingly.</p> <ul><li id="GUID-0027B472-465C-537F-8F40-641997F362A1"><p>Resize the view rectangle (an instance of class <xref href="GUID-101762DC-E498-3325-88AB-B0FF17DC62B6.dita"><apiname>TRect</apiname></xref>) by shrinking it by forty pixels in both directions.</p> </li> <li id="GUID-49E7E1FD-C954-5097-B11F-AE0FF9ED9384"><p>Reset the view rectangle using <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-3D04D758-B829-34C6-9B22-C51F58D0316C"><apiname>CTextView::SetViewRect()</apiname></xref>.</p> </li> </ul> <codeblock id="GUID-1F0FBF4A-BF54-5926-A7B6-564E8136646B" xml:space="preserve">iViewRect.Shrink(40,40);
+iTextView-&gt;SetViewRect(iViewRect);
+iTextView-&gt;HandleGlobalChangeL(); 
+    // update formatting and draw the completely revamped view</codeblock> <p>The following code sets the wrapping width to be the width of the new view rectangle minus the total margin width, so that text wraps at the right hand edge of the view rectangle.</p> <ul><li id="GUID-BF3388F7-13D4-5C72-959E-751CDA7D9C10"><p>To ensure that text wrapping is set, use <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita#GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF/GUID-B8C93ECC-1BEA-321F-AF2A-AF534212900F"><apiname>CTextLayout::DisableWrapOverride(EFalse)</apiname></xref>. By default, wrapping is set.</p> </li> <li id="GUID-B27EE3E1-0716-563B-9063-5A3463412636"><p>As the wrapping width is a global document characteristic, changes to it may be handled using <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-903D1087-42CB-32EB-8379-7B019936AD16"><apiname>CTextView::HandleGlobalChangeL()</apiname></xref>.</p> </li> </ul> <codeblock id="GUID-C92925E0-AE52-507E-93AA-7653BE7107B9" xml:space="preserve">// Wrap text to new view rectangle
+TInt labelsWidth,lineCursorWidth;
+// Get both margin widths
+iTextView-&gt;MarginWidths(labelsWidth,lineCursorWidth);
+// New wrap width = new view rect width minus total margin width
+iLayout-&gt;SetWrapWidth(iViewRect.Width()-(labelsWidth+lineCursorWidth));
+iLayout-&gt;DisableWrapOverride(EFalse); // Ensure wrapping on
+iTextView-&gt;HandleGlobalChangeL();</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254"><title>Overview of the native build targets</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform natively runs on ARM processors that use the standard Application Binary Interface (ABI) to run the binary code. This standard interface enable the binaries created by different compilers (that meet the ABI standard) to operate together. For more information about the ABI specification, see <xref scope="external" href="http://www.arm.com/products/DevTools/ABI.html">http://www.arm.com/products/DevTools/ABI.html</xref>. </p> <p>The Symbian platform build tools define native build targets that use either the ARM's RealView Compilation Tools (RVCT), or the GNU Compiler Collection (GCC), known as GCCE. Where, ARM RVCT (<xref scope="external" href="http://www.arm.com/products/DevTools/RealViewDevSuite.html">http://www.arm.com/products/DevTools/RealViewDevSuite.html</xref>) is particularly intended for licensees building ROMs for phones. GCCE is delivered on Symbian platform kits, and is also freely available from <xref scope="external" href="http://www.codesourcery.com">http://www.codesourcery.com</xref>. </p> <p>There are two versions of the ARM ABI, referred to as v1 and v2 respectively. RVCT can be used to build for either of these ABI versions, and GCCE can only be used to build for ARM ABI v2. </p> <p>In addition, the toolchain supports building to three versions of the ARM architecture; v5, v6, and v7. See <xref scope="external" href="http://www.arm.com/products/CPUs/architecture.html">http://www.arm.com/products/CPUs/architecture.html</xref> for details of the ARM architectures. </p> <p>The build targets are intended to generate generic code suitable for execution on processors based on these architectures. The toolchain allows customisation by licensees, for example, in order to target a specific processor more closely: see <xref href="GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita">ARMV5 build customisation</xref>. </p> <p>A summary of the available targets is shown below: </p> <table id="GUID-2FC9F5F7-2EE6-5E78-9BD9-9FB6FD23E7E8"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><tbody><row><entry><p> <b>Target name</b>  </p> </entry> <entry><p> <b>Instruction set</b>  </p> </entry> <entry><p> <b>Compiler</b>  </p> </entry> <entry><p> <b>ABI</b>  </p> </entry> </row> <row><entry><p> <codeph>ARMV5</codeph>  </p> </entry> <entry><p>v5 </p> </entry> <entry><p>RVCT 2.2 </p> </entry> <entry><p>v1 </p> </entry> </row> <row><entry><p> <codeph>ARMV5_ABIv2</codeph>  </p> </entry> <entry><p>v5 </p> </entry> <entry><p>RVCT 2.2 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>ARMV6</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>RVCT 2.2 </p> </entry> <entry><p>v1 </p> </entry> </row> <row><entry><p> <codeph>ARMV6_ABIv2</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>RVCT 2.2 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>ARMV6t2</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>RVCT 2.2 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>ARMV7</codeph>  </p> </entry> <entry><p>v7 </p> </entry> <entry><p>RVCT 3.1 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>GCCE</codeph>  </p> </entry> <entry><p>v5 </p> </entry> <entry><p>GCCE 3.4 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>GCCEV6</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>GCCE 3.4 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>GCCEv6t2</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>GCCE 3.4 </p> </entry> <entry><p>v2 </p> </entry> </row> <row><entry><p> <codeph>GCCEv7</codeph>  </p> </entry> <entry><p>v7 </p> </entry> <entry><p>GCCE 4.2 </p> </entry> <entry><p>v2 </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Notes:</b>  </p> <ul><li id="GUID-0FA4F759-AF53-5012-B918-3DB7BFF079D1"><p>The Symbian platform that you build using RVCT 4.0 provides run-time support for executables built using the RVCT 2.2, RVCT 3.1 and RVCT 4.0 toolchains. </p> </li> <li id="GUID-967925CD-6B72-5EEB-9F7E-774C80F5EEC3"><p>From Symbian OS v9.4 onwards, the target names to build a binary conforming to ABIv2 are <codeph>ARMV5</codeph> and <codeph>ARMV6</codeph>, and for ABIv1 they are <codeph>ARMV5_ABIv1</codeph> and <codeph>ARMV6_ABIv1</codeph>. You can switch back to the conventional approach described in the table above. For more details, refer to <xref href="GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita">Switching between ABI modes</xref>. </p> </li> </ul> <p>For details of these targets, see: </p> <ul><li id="GUID-57982C1A-37D5-5003-886C-3C9CB0114523"><p><xref href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita">ARMV5 build targets</xref> </p> </li> <li id="GUID-41352C9E-196F-5484-BFEF-7F6135D955F1"><p><xref href="GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita">ARMV6 build targets</xref> </p> </li> <li id="GUID-E7C4D7F2-91DC-57AA-BE3B-0849B914BFBA"><p><xref href="GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7.dita">ARMV7 build target</xref> </p> </li> <li id="GUID-D21C0880-4108-5E77-BB44-319A132C362D"><p><xref href="GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita">GCCE build targets</xref> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1BAF17A9-B71B-5003-AEB5-4631F019C6AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1BAF17A9-B71B-5003-AEB5-4631F019C6AC" xml:lang="en"><title>Fixed
+and Floating Windows</title><shortdesc>This section explains the fixed and floating FEP windows.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-0DE8957D-8462-4662-A89F-501C7B3B4DA8"><title>The fixed window</title><p>The
+FEP architecture does not enable FEP to negotiate with the application beneath
+them for division of screen area. </p></section>
+<section id="GUID-C1D818DC-1422-451B-9052-D1C35F64524D"><title>The floating
+window</title> <p>To make the control of FEP window float above the application,
+and even above any dialogs or pop-up windows that the application launches,
+use the following code in the  construction of control routine: </p> <codeblock id="GUID-C7EB4E51-4B26-5F2B-B4D4-29C8E6AE6B35" xml:space="preserve">DrawableWindow()-&gt;SetOrdinalPosition(0, ECoeWinPriorityFep);</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1BB546C1-2795-55D9-97B6-AC3F6AB79389.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1BB546C1-2795-55D9-97B6-AC3F6AB79389" xml:lang="en"><title>Controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In the Symbian platform UI Control Framework, all UI elements (with a few
+exceptions) are <keyword>controls</keyword>. A control is a rectangular area
+of the screen that may respond to user input events. Buttons, menus, text
+input boxes and application views displaying application-specific data are
+all examples of controls. </p>
+<p>All controls are implemented by deriving from the <codeph>CCoeControl</codeph> class.
+Concrete implementations of controls are provided by a user interface library,
+or by the application programmer. The control framework itself provides no
+concrete controls. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1BD987D8-B018-51B7-80B2-4E1988841BC2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1BD987D8-B018-51B7-80B2-4E1988841BC2" xml:lang="en"><title>How
+to cancel requests</title><shortdesc>This document describes how to cancel a previously scheduled request.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>CActive</codeph> class provides the <codeph>Cancel()</codeph> member
+function to cancel an active object’s request.</p>
+<p>If no request has been issued, <codeph>Cancel()</codeph> does nothing,
+otherwise it calls <codeph>DoCancel()</codeph>. This is a pure virtual function
+that must be provided by derived classes and which handles specific cancellation
+as required by the service provider. <codeph>Cancel()</codeph> then waits
+for the completion of that request and sets the active request flag to false.</p>
+<p>The service provider must guarantee that the cancellation operation completes
+in a very short period of time.</p>
+<p>For example, a specialized timer active object, derived from <codeph>CTimer</codeph> which
+is derived from <codeph>CActive</codeph>, might implement this as:</p>
+<codeblock id="GUID-2454885F-9410-5E9F-A72E-618E78D32500" xml:space="preserve">void CTimedMessenger::DoCancel()
+    {
+      // Base class
+    CTimer::DoCancel(); 
+      // Reset variable - needed if the object is later re-activated
+    iTicksDone = 0;
+    ...
+    }</codeblock>
+<p>Note that an active object's destructor should ensure that any outstanding
+requests are cancelled. If the class implements a DoCancel() function, then
+the destructor must call the <codeph>Cancel()</codeph> member function. For
+example:</p>
+<codeblock id="GUID-1C265422-8C45-5ED2-A2F8-DFF68C08BF9C" xml:space="preserve">CTimedMessenger::~CTimedMessenger()
+    {
+    Cancel();
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e224881_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35"><title>Application registration files</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>An application registration file defines information about an application that is required by the application launcher or system shell. This includes the application’s name, UID and properties. Other information required by the shell, for instance the icons and captions, is defined separately; the location of the icon/caption definitions is provided in the registration file. Before v8.1, all of this information was provided by aif files. In v8.1, both aif files and registration files are supported, but from v9.0 onwards, only registration files are supported. </p> <fig id="GUID-25C677B0-097F-5E86-A6C3-92DF092A0C9A"><title>
+             Registration files
+          </title> <desc><p>This diagram shows: </p> </desc> <image href="GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81_d0e408994_href.png" placement="inline"/></fig> <p>A registration file is required by every application, even if it has default properties, icons and caption. Minimally, it must specify the application's UID and the name of the application’s executable. </p> <p>For an example, see <xref href="GUID-188F9462-F805-522A-84FF-770EAB045504.dita">An example registration file and icon/caption file</xref>. </p> </section> <section><title>Registration information</title> <p>A registration file defines the following non-localisable application information; in other words, information that never varies according to the phone’s language setting: </p> <ul><li id="GUID-0AC456CA-D202-5476-A250-2EDF16847DED"><p>the application’s properties, such as whether it is embeddable or hidden, </p> </li> <li id="GUID-7EFFB70B-3F42-5379-B1CD-9B52B56AC895"><p>a group name; this may be used to categorize applications. Note that a group name may also be defined in the localisable file. If so, the localisable version will take precedence. </p> </li> <li id="GUID-493468C8-CE59-56CF-9BA6-FACBF43F8AEA"><p>a number which identifies the screen on which the application is displayed (if the phone has multiple screens). </p> </li> <li id="GUID-9E7AAF73-890E-5BF6-83DC-A8B11B19EE1E"><p>the MIME types supported by the application, and the priority of support for each, </p> </li> <li id="GUID-88039BB3-D3B5-5CFC-8389-1683BB6C267F"><p>a list of files owned by the application, </p> </li> <li id="GUID-2C12A4CC-4B76-5787-98F1-DD7415A27364"><p>a flag that identifies non-standard types of application, </p> </li> <li id="GUID-AA15C72C-F69D-5642-9C08-5E92FC7A0380"><p>for server applications only, a list of the services provided. </p> </li> </ul> <p>All of these properties are defined using an <codeph>APP_REGISTRATION_INFO</codeph> resource struct. See its declaration in <filepath>AppInfo.rh</filepath> for the default values. For more information about these properties, see <xref href="GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita">Defining application icons, captions and properties</xref>. </p> <p>Most applications also need to define localisable information, for instance non-default captions and icons and possibly a group name (described above). The registration file specifies its location. This can be done in one of two ways: </p> <ul><li id="GUID-7E5B8B94-5889-57F1-9620-B28DD7CEA092"><p>as the name and path (excluding drive letter and extension) of a <xref href="GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA.dita">localisable icon/caption definition file</xref>, </p> </li> <li id="GUID-CEFEEBC7-B20E-560E-947A-D7D49DB36AF8"><p>as the ID of a <codeph>LOCALISABLE_APP_INFO</codeph> resource struct defined in the application’s UI resource file. In this case, the name and path of the application’s UI resource file (excluding drive letter and extension) must also be provided. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C025957-258C-54C0-94A5-AD60C14E6D76.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1C025957-258C-54C0-94A5-AD60C14E6D76" xml:lang="en"><title>External Surfaces</title><shortdesc>This section introduces external surfaces, and related APIs and
+features such as zoom, flipping, rotation and display. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links>
+<link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server
+Client-Side   Library</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C0707F8-9E2A-58C6-997B-23B57C7EFA93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1C0707F8-9E2A-58C6-997B-23B57C7EFA93"><title>Working with Snapshots </title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>Snapshot shows the captured images on the display almost instantaneously. Snapshots may be created for video as well and the client may further specify the video frames from which the snapshot can be generated. </p> <p>The client can specify the properties of the snapshot, such as size, background colour and position to be used if the snapshot has been scaled and so on. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following are the setup and configuration requirements you need to follow before doing snapshot implementation: </p> <ul><li id="GUID-CE84B0A7-DF2A-5EAF-AFBB-FC9FC2EA97E7"><p>Make sure that you provide a concrete implementation of <xref href="GUID-B0E7BDE5-2303-3547-93FB-DE0F2BC8E5FA.dita"><apiname>McameraSnapshot</apiname></xref> interface class, which provides the functionality. </p> </li> <li id="GUID-DC3C6970-C967-5E33-90AB-5F0EE981DFE9"><p>Make sure that providers of the extension API for camera direct snapshot provides the implementation of <xref href="GUID-E75CBA2D-933F-33CF-9F66-0868D6BC0649.dita"><apiname>MCameraDirectSnapshot</apiname></xref> mixin class. </p> </li> </ul> </section> <section><title> Snapshot Implementation</title> <p>The <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7DB06650-199E-3B00-A19A-1B48D671E46E"><apiname>CCamera::CCameraSnapshot</apiname></xref> class allows a client to request snapshot data in a specified image format for both still images and video. The following tasks will be covered during snapshot implementation: </p> <ol id="GUID-EC9A66AE-DC72-5A3A-8F14-8D536EE24831"><li id="GUID-A2C0332D-B266-5763-910A-08B18D30D66A"><p>Create specific snapshot object using <codeph>CCamera::CCameraImageCapture::GetSnapshotHandleL(TInt
+                aClientViewFinderId)</codeph> or <codeph>CCamera::CCameraVideoCaptureControl::GetSnapshotHandleL(TInt
+                aClientViewFinderId)</codeph>. Each client snapshot is linked to a specific client viewfinder handle. </p> </li> <li id="GUID-3058595E-7668-50B8-8E17-ED3D30870E11"><p>Concrete implementation for <xref href="GUID-BC75A950-7188-3A8B-BB25-49A119F23E06.dita"><apiname>MCameraImageCapture</apiname></xref> or <xref href="GUID-11495CEA-9F67-3B9A-A35C-E7555ED28316.dita"><apiname>MCameraVideoCaptureControl</apiname></xref> provides the implementation factory used to retrieve concrete implementation for <xref href="GUID-CBB8D575-A12F-32C4-BC19-55AEB51D2601.dita"><apiname>MCameraSnapshot</apiname></xref> and <xref href="GUID-A048086C-0481-3E68-9B96-70943917B3FB.dita"><apiname>MCameraSnapshot2</apiname></xref> based on the values of the passed UIDs . </p> <p>The UID values can be <xref href="GUID-3822F287-490F-3753-8929-17AC67B9F7F0.dita"><apiname>KECamMCameraSnapshotUid</apiname></xref> and <xref href="GUID-8672CBE3-4037-30C7-92A3-496CB36BBB77.dita"><apiname>KECamMCameraSnapshot2Uid</apiname></xref>. </p> </li> <li id="GUID-D2F2EE28-0322-519B-8CA4-FB220175174B"><p>Snapshot data is passed to the client using the observer callbacks <xref href="GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8.dita#GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8/GUID-0D0984E6-D2CD-3079-8BD8-568403346E70"><apiname>MCaptureImageObserver::ClientSnapshotForImageReady()</apiname></xref> and <xref href="GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB.dita#GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB/GUID-91CCC70F-5EE9-30C4-912E-CB9D11EA5C74"><apiname>MCaptureVideoObserver::ClientSnapshotReady()</apiname></xref>. </p> </li> <li id="GUID-408CDAC6-2F0A-5E0E-9756-9323B591610F"><p>After the snapshot is instantiated, client can request for camera formats supported by the snapshot feature in the camera. </p> </li> <li id="GUID-31746768-33D8-58F4-AEE5-F5F3DAC31033"><p>Set the properties of the snapshot using <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-B8A44662-C452-3B3F-8B7E-58E1F2902356"><apiname>CCameraSnapshot::PrepareSnapshotL</apiname></xref> call. Use <codeph>PrepareSnapshotL(const CCamera::CCameraSnapshot::TSnapshotParameters&amp;
+                aSnapshotParameters)</codeph> to set the properties of snapshot. </p> <p>The following example shows how to do this: </p> <codeblock id="GUID-9DFEFA71-9475-54DF-B940-B15D420343A9" xml:space="preserve">// Gets the list of supported formats for snapshots
+TUint suppFormats = snap-&gt;SupportedFormats();
+  
+    snap-&gt;PrepareSnapshotL(aSnapshotParameters);
+</codeblock> </li> <li id="GUID-BF654290-2A23-5D29-834E-DE2BAABB3453"><p>The client uses <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-9CE4346E-AE44-3D23-83F9-A4FB6AF8DF8E"><apiname>CCameraSnapshot::EnableSnapshotL</apiname></xref> API to activate snapshot feature and to get snapshot notifications from Ecam implementation. </p> <p>If a call to <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-9CE4346E-AE44-3D23-83F9-A4FB6AF8DF8E"><apiname>CCameraSnapshot::EnableSnapshotL</apiname></xref> is made without a successful call to , then the callback returns <xref href="GUID-25493BDC-2D2E-3CC5-A5FE-A36804A4388A.dita"><apiname>KErrBadHandle</apiname></xref>. </p> </li> <li id="GUID-6F2459E2-4007-5B60-B707-8AA221E60448"><p>Client should implement the observers; <xref href="GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8.dita"><apiname>MCaptureImageObserver</apiname></xref> and <xref href="GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB.dita"><apiname>MCaptureVideoObserver</apiname></xref>. </p> <p> <b>Note</b>: Snapshot notifications will be send to the clients through these observers and not through events. </p> </li> <li id="GUID-C894DBBA-57E3-5666-8DA4-7E1D64BCFC29"><p>Snapshot data is retrieved using <xref href="GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8.dita#GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8/GUID-0D0984E6-D2CD-3079-8BD8-568403346E70"><apiname>MCaptureImageObserver::ClientSnapshotForImageReady()</apiname></xref> or <xref href="GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB.dita#GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB/GUID-91CCC70F-5EE9-30C4-912E-CB9D11EA5C74"><apiname>MCaptureVideoObserver::ClientSnapshotReady()</apiname></xref> depending on whether snapshot is for image or video. </p> </li> <li id="GUID-121C6D12-AA94-57A7-8749-C72716C661A2"><p>The client uses <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-475C869C-2C6E-33C4-9B5C-26ADB000D992"><apiname>CCameraSnapshot::DisableSnapshotL</apiname></xref> call to stop getting notifications from Ecam implementation. It deactivates the snapshot feature if active. </p> </li> </ol> <p>You can also perform the above tasks using direct snapshot. The high level steps are explained below: </p> <ul><li id="GUID-7F798D1B-4B9D-5C8E-B701-1D2623EB01A8"><p>Create a new direct snapshot object using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-AA8DE98A-6720-379B-AD6E-FF7AE67C170A"><apiname>CCamera::CCameraDirectSnapshot::CreateL</apiname></xref>. </p> </li> <li id="GUID-85B08C9B-F982-500C-9E89-454818F2B303"><p>Retrieve the information about the direct viewfinder object for which direct snapshot is created using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-06315048-5BCE-3F1C-87E8-4F80C72FD08E"><apiname>CCamera::CCameraDirectSnapshot::GetDirectViewFinderL</apiname></xref> method. </p> </li> <li id="GUID-DF6AAC2E-612F-5E8C-BE44-9040BC52F493"><p>Enable direct snapshot using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-723AC69A-2D8E-3088-8615-420109250982"><apiname>CCamera::CCameraDirectSnapshot::EnableDirectSnapshotL</apiname></xref>. </p> </li> <li id="GUID-FA031B49-B6EB-5BA4-A0D0-A2BE46B10935"><p>Disable direct snapshot using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-C7CCB37D-5EB3-3661-B2C0-AB5E08336F95"><apiname>CCamera::CCameraDirectSnapshot::DisableDirectSnapshot</apiname></xref>. </p> </li> <li id="GUID-5E3EFC74-4AB6-5CD2-8FE8-EA98223F59DD"><p>Get the current state of the direct snapshot using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-EEE03403-7919-3DFB-932E-C40908072BC4"><apiname>CCamera::CCameraDirectSnapshot::GetDirectSnapshotStateL</apiname></xref>. </p> </li> <li id="GUID-2A55C006-E2BB-5BB3-AA04-B4A825FC9461"><p>Retrieve the direct snapshot parameters using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-E0B87B4C-57ED-3E35-8FFD-C45846E28B1A"><apiname>CCamera::CCameraDirectSnapshot::GetDirectSnapshotParametersL</apiname></xref>. </p> </li> <li id="GUID-B6C4857D-66B4-5B92-9026-55EA8FCC1462"><p>Set the direct snapshot parameters using <xref href="GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE.dita#GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE/GUID-68726125-8244-329A-8534-C3AA3C5D6EC4"><apiname>CCamera::CCameraDirectSnapshot::SetDirectSnapshotParametersL</apiname></xref>. </p> </li> </ul> <p>You can create the following types of snapshots: </p> <ul><li id="GUID-B40ADDDD-7C1E-5A13-8729-6EEE14DEE42A"><p>Direct snapshot for still images </p> </li> <li id="GUID-29DC32E9-9AA9-54A7-8E37-986469FE7CA9"><p>Client snapshot for still images </p> </li> <li id="GUID-7A3DB8CC-D4A5-5D57-A549-F9112DD86D55"><p>Client snapshot for video </p> </li> </ul> <p> <b> Note</b>: You cannot create direct snapshot for video. </p> <p><b>Direct snapshot for still images</b> </p> <p>This section explains how the implementation notifies about display for direct snapshot for still images. </p> <ul><li id="GUID-E926FD01-3D47-5531-8180-927DAA369EE0"><p>The client enables the direct snapshot through successful call of <xref href="GUID-7447D695-51D8-3F41-A4FA-EAA01DC8555D.dita#GUID-7447D695-51D8-3F41-A4FA-EAA01DC8555D/GUID-7D34F144-E777-3881-992D-A0DFA6FBC9FC"><apiname>Ccamera::CCameraDirectSnapshot::EnableDirectSnapshotL()</apiname></xref>. If the implementation displays the snapshot for individual still images, it notifies the client through observer <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-380EC4D1-B944-331F-8FB5-A7509E75EFE5"><apiname>MDirectViewFinderObserver::DirectSnapshotForImageDisplayed()</apiname></xref>. </p> </li> <li id="GUID-A4D6E76A-A458-52FA-99C2-1E3BB007B2A0"><p>This provides reference to <xref href="GUID-A1E81FF5-3F58-3D41-8FE2-9D6D21004B08.dita"><apiname>CCameraV2DirectViewFinder</apiname></xref> class object which refers a particular direct viewfinder on which the direct snapshot data for still images have been displayed. </p> </li> <li id="GUID-C266C2CD-0211-5F24-9411-39AD676496A4"><p>Identify the specific still image for which the direct snapshot is displayed using<codeph>CCamera::CCameraImageCapture&amp;</codeph> and <xref href="GUID-6579058A-1B31-3F85-AD35-274DA4CF7E69.dita"><apiname>TPostCaptureControlId</apiname></xref>. </p> </li> </ul> <p><b>Client snapshot for still images</b> </p> <p>In client snapshot, the buffer containing snapshot data is sent to the camera client, and you can view the still image captured in the client side. </p> <ul><li id="GUID-8D4643D9-8521-51BB-BBC4-A67FBDF2F778"><p>Display the captured still image in the client side using <xref href="GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8.dita#GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8/GUID-AA613F13-7C04-3FBC-9CDF-385E02DE419E"><apiname>MCaptureImageObserver::ClientSnapshotForImageReady</apiname></xref> callback. </p> </li> <li id="GUID-905D9686-3323-5F73-8DAC-697B5C45D9F2"><p>This provides reference to <xref href="GUID-992BCFCD-9F06-35A5-B166-3058F650E360.dita"><apiname>CCameraImageCapture</apiname></xref> class object which was used to issue the capture image operation. </p> </li> <li id="GUID-840E3DC6-9B9F-5C70-A3AE-D6F19936F640"><p>This provides a pointer to <xref href="GUID-3662B571-F84F-34F5-BC8A-AB3B36DEA23E.dita"><apiname>MCameraBuffer2</apiname></xref> which retrieves the snapshot data for the individual still image. </p> </li> <li id="GUID-3A0A532B-73CE-5023-A1D8-AA934F5A2A19"><p>Identify the individual still image for which the implementation has provided the snapshot data using <xref href="GUID-6579058A-1B31-3F85-AD35-274DA4CF7E69.dita"><apiname>TPostCaptureControlId</apiname></xref>. </p> </li> </ul> <p><b>Client snapshot for video</b> </p> <p>In client snapshot, the buffer containing snapshot data is sent to the camera client, and you can view the video captured in the client side. </p> <ul><li id="GUID-2BFAF378-9E39-5D4D-AE7C-615D9AA5A211"><p>Notify the client about the snapshot data for the captured video using <xref href="GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB.dita#GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB/GUID-61D01CF2-182D-3C64-9518-7708F193963C"><apiname>MCaptureVideoObserver::ClientSnapshotReady</apiname></xref> callback. </p> </li> <li id="GUID-D23E5237-0CD6-5302-84E7-33E09C7DC86D"><p>This provides pointer to <xref href="GUID-3662B571-F84F-34F5-BC8A-AB3B36DEA23E.dita"><apiname>MCameraBuffer2</apiname></xref> class object which retrieves the snapshot for the video being captured. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita">Overview</xref> of Camera SnapShot </p> <p><xref href="GUID-F89F92BA-763D-5531-BF74-C6BF36A589CD.dita">Creating Snapshots</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C0CA7AD-0F04-5346-AA51-4F9EB852FD38.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1C0CA7AD-0F04-5346-AA51-4F9EB852FD38"><title>Directories</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <codeph>RDir</codeph> class reads through a directory, one entry at a time. Often, it is more efficient to read a directory many entries at a time, to minimise client-server interaction. <codeph>RFs</codeph> functions and the associated <codeph>CDir</codeph> class support this requirement.</p> <p>A directory entry is represented by the <codeph>TEntry</codeph> class which may represent a directory, file or even a volume label. Attributes such as archive, hidden, system and read-only are available, as in <keyword>VFAT</keyword>.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e190784_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80" xml:lang="en"><title>Graphics Device Interface Concepts</title><shortdesc>This section introduces some important GDI concepts, such as the graphics context (GC), pictures (which in this context are objects that can be drawn to a graphics context and can be stored and restored), and twips and zooming. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics Device Interface
+  Collection</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C3888E3-33D4-5057-8819-CB6D97398031.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1C3888E3-33D4-5057-8819-CB6D97398031" xml:lang="en"><title>Font and Bitmap Server Example Code</title><shortdesc>Example code for the Font and Bitmap Server collection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB"><title>Audio Input Streaming Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to use Audio Input Streaming. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to open, read and then close an audio input stream. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita">Audio Input Streaming Overview</xref> provides an introduction to Audio Input Streaming. </p> <p><b>Introduction</b> </p> <p>The audio input stream interface class, <xref href="GUID-92BDB3AF-D9DB-35E2-AC6F-6435D3D1A4D8.dita"><apiname>CMdaAudioInputStream</apiname></xref>, enables MMF client applications to: </p> <ul><li id="GUID-577E976A-11CC-5054-ABDE-522A30B5FDCF"><p>stream audio data from the low level audio controller (which has collected it from a hardware device, such as a microphone) to specified buffers (record audio). </p> </li> <li id="GUID-71E21858-E184-5B07-AE02-EFBE8F823B6E"><p>specify the priority of the audio stream relative to other clients trying to use the same audio hardware </p> </li> <li id="GUID-BA394ADC-BC3F-5896-BAD0-EB24759DBD36"><p>set the sample rate and the number of channels to use for recording. </p> </li> <li id="GUID-1CEAC638-A49F-5A21-91FC-90B6B56522EA"><p>change the gain and channel balance of the input stream. </p> </li> </ul> <p>The low level audio controller stores the audio data in buffers. <xref href="GUID-92BDB3AF-D9DB-35E2-AC6F-6435D3D1A4D8.dita"><apiname>CMdaAudioInputStream</apiname></xref> reads these buffers incrementally and does not have to wait until capture is complete. </p> </section> <section><title>Using Audio Input Streaming </title> <p>Typically, using an audio input stream involves the following steps as shown in the sequence diagram below: </p> <fig id="GUID-FC960A5D-EDE5-5245-A736-6A6C00A0AC33"><image href="GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e289206_href.png" placement="inline"/></fig> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-1E1A247E-3740-5CAB-AEB7-171F455EE429"><p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita#GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB/GUID-196AFBAE-8264-5DE2-994D-F2F06CF5CF3A"> Constructing an audio input stream</xref>  </p> </li> <li id="GUID-2744A8AE-A82C-5DAC-8C12-87D9B5ADCA6F"><p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita#GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB/GUID-51B28404-61E7-54E8-9F4E-730315308EA2">Opening an audio input stream</xref>  </p> </li> <li id="GUID-98480431-5F02-57D0-9564-7F0FFF2782C8"><p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita#GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB/GUID-4EAC65E0-E108-5BAA-B338-5B19B82D5057"> Getting and setting the stream properties</xref>  </p> </li> <li id="GUID-C03B920D-396F-5A44-9A76-77709CE45D2B"><p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita#GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB/GUID-BD91C4E9-9BBA-5442-A72E-01B42160DBDA"> Reading an audio input stream</xref>  </p> </li> <li id="GUID-91F3BEEE-52D7-504C-B74D-5C2FB8D59004"><p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita#GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB/GUID-5811A2A0-5793-5FBB-B01A-AD94590955A8">Stopping an audio input stream</xref>  </p> </li> </ul> <p id="GUID-196AFBAE-8264-5DE2-994D-F2F06CF5CF3A"><b>Basic Procedure to Construct an Audio Input Stream</b> </p> <p>The high level step to construct an audio input stream is shown here: </p> <ul><li id="GUID-DDD98263-FD3A-5057-8E35-72D237807343"><p>The client application creates an audio input stream object using the static function <xref href="GUID-92BDB3AF-D9DB-35E2-AC6F-6435D3D1A4D8.dita#GUID-92BDB3AF-D9DB-35E2-AC6F-6435D3D1A4D8/GUID-D534A585-D2B7-3906-AD82-E14A5FC1D501"><apiname>CMdaAudioInputStream::NewL()</apiname></xref>. The input stream class provides two versions of the constructor: one with the default priority and preferences, and another with specified priority and preferences. The client application must also implement the observer class <xref href="GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0.dita"><apiname>MMdaAudioInputStreamCallback</apiname></xref> to notify it about audio input streaming progress. </p> <p>The following code constructs an audio input stream: </p> <codeblock id="GUID-0749EB33-33FA-5B58-856B-99F96AB9E3A2" xml:space="preserve">CMdaAudioInputStream* aInputStream;
+aInputStream = CMdaAudioInputStream::NewL(aCallback, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality);</codeblock> <p>where, <codeph>aCallback</codeph> is an <xref href="GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0.dita"><apiname>MMdaAudioInputStreamCallback</apiname></xref> object. </p> </li> </ul> <p id="GUID-51B28404-61E7-54E8-9F4E-730315308EA2"><b>Basic Procedure to Open an Audio Input Stream</b> </p> <p>The high level steps to open an audio input stream are shown here: </p> <ol id="GUID-67E0F7C7-E2E3-5882-A21F-254CB2EEBDA3"><li id="GUID-B3AE7481-9750-5352-B10B-D51D1A220F97"><p>To open an input stream, use the <xref href="GUID-20D0D10F-3401-3F72-8AF6-DC35F6025DC2.dita"><apiname>Open()</apiname></xref> member function, which provides a pointer to the <xref href="GUID-06892E22-2EAC-305A-9D3A-F24E7F903427.dita"><apiname>TMdaPackage</apiname></xref> object with the required audio settings. You can also open the stream without the audio settings. For example: </p> <codeblock id="GUID-96065C5F-54F6-59D7-B6F1-BDE71EF46303" xml:space="preserve">aInputStream-&gt;Open(NULL);</codeblock> </li> <li id="GUID-8D443EF2-2FD1-5DBD-BEB3-21C5B7855978"><p>Once the stream is open, a <xref href="GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0.dita#GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0/GUID-1F9A4EAF-EE58-3FA4-8707-D8C5EDFC0664"><apiname>MMdaAudioInputStreamCallback::MaiscOpenComplete()</apiname></xref> is issued to indicate that the stream is ready for use. </p> <codeblock id="GUID-20F93B48-6662-59F1-A61B-374565A2FCB2" xml:space="preserve">void CIOStreamAudio::MaiscOpenComplete(TInt aError)
+    {
+    ASSERT(iState==EStateOpeningInput);
+    if (aError!=KErrNone)
+        {
+        Complete(aError);
+        }
+    else
+        {
+        iMainBuffer.Zero();
+        iState = EStateReading;
+        ReadNextBlock(KNullDesC8); // kick off a new read - KNullDesC8 for first buffer
+        }
+    }</codeblock> </li> </ol> <p id="GUID-4EAC65E0-E108-5BAA-B338-5B19B82D5057"><b>Basic Procedure to Get and Set Stream Properties </b> </p> <p>The high level steps to get and set stream properties are shown here: </p> <ol id="GUID-98A49133-59B7-5681-9EC0-C19B1D71E9DD"><li id="GUID-DD84E50F-B44A-5ADC-ADF5-5DDE561D9AFD"><p>To set the sampling rate and number of audio channels, use the <xref href="GUID-38034819-8999-3EBE-9833-479D96D5DAB6.dita"><apiname>SetAudioPropertiesL()</apiname></xref> member function. You can do this only if the stream is open and if data is not being streamed. Values must be specified as enum values. For example, <xref href="GUID-CF54F882-E290-3C68-9352-79C6B7303FDF.dita#GUID-CF54F882-E290-3C68-9352-79C6B7303FDF/GUID-681C1220-0CDD-34BF-848F-9DC82CB001DB"><apiname>TMdaAudioDataSettings::ESampleRate8000Hz</apiname></xref> and not <codeph>8000</codeph> (Hz). The following code sets the sampling rate to 8000Hz and audio channel to mono: </p> <codeblock id="GUID-EBC071A0-A461-5000-80E5-D3579E690D18" xml:space="preserve">aInputStream-&gt;SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate8000Hz,TMdaAudioDataSettings::EChannelsMono));</codeblock> </li> <li id="GUID-EE508886-465A-581D-9FAF-76B5C522433F"><p>The <xref href="GUID-F4CC52C5-414A-3CA9-8472-A5C5298AC412.dita"><apiname>Gain()</apiname></xref> and <xref href="GUID-C2B76645-A50F-3DFF-943B-4F3D5A33ED31.dita"><apiname>GetBalanceL()</apiname></xref> member functions let you determine the current gain and balance settings. </p> </li> <li id="GUID-AEABCD16-7828-5DA1-B234-58BF44FB9C0E"><p>The <xref href="GUID-54851704-F44B-3C2C-B3C9-2B4537AD1472.dita"><apiname>SetGain()</apiname></xref> and <xref href="GUID-D1856981-6A17-3CD9-80B5-65781A803BA4.dita"><apiname>SetBalanceL()</apiname></xref> member functions let you set the gain and balance respectively. You can use them while the stream is open, with the new settings taking immediate effect. </p> </li> </ol> <p id="GUID-BD91C4E9-9BBA-5442-A72E-01B42160DBDA"><b>Basic Procedure to Read an Audio Input Stream</b> </p> <p>The high level steps to read an audio input stream are shown here: </p> <ol id="GUID-D78033B0-4918-51B8-8DC0-8B55F0172AC3"><li id="GUID-47C7BE03-0EAA-5C19-8FBB-7723B2AA9DEC"><p>To record the audio stream, use the <xref href="GUID-D7A48ABE-33F7-333E-8F57-0E673DA4B6F5.dita"><apiname>ReadL()</apiname></xref> member function, specifying the buffer to use. The first <xref href="GUID-D7A48ABE-33F7-333E-8F57-0E673DA4B6F5.dita"><apiname>ReadL()</apiname></xref> after a successful <xref href="GUID-20D0D10F-3401-3F72-8AF6-DC35F6025DC2.dita"><apiname>Open()</apiname></xref>, starts audio recording. Once the buffer is successfully recorded, a pointer to it is returned by <xref href="GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0.dita#GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0/GUID-FB4EC66A-4B6D-331B-B5A1-4605084343B0"><apiname>MMdaAudioInputStreamCallback::MaiscBufferCopied()</apiname></xref> callback. </p> <codeblock id="GUID-362E4E39-294E-57B9-912D-D0EB2C7B0B9B" xml:space="preserve">void CIOStreamAudio::MaiscBufferCopied(TInt aError, const TDesC8&amp; aBuffer)
+    {
+    ASSERT(iState==EStateReading);
+    if (aError!=KErrNone)
+        {
+        if (aError!=KErrAbort) // aborts happen on Stop as buffers are recovered, need to ignore
+            {
+            Complete(aError);
+            }
+        }
+    else
+        {
+        ReadNextBlock(aBuffer);
+        }
+    }</codeblock> </li> <li id="GUID-CD08610E-0AFE-5730-BC3A-8F112FF54EE5"><p>The following code reads the next audio block into the buffer in an array of descriptors: </p> <codeblock id="GUID-7E4D79D2-34DC-5691-865A-6C472B766BF8" xml:space="preserve">void CIOStreamAudio::ReadNextBlock(const TDesC8&amp; aBuffer)
+    {
+    ASSERT(iState==EStateReading);
+    // buffer will be tail of iMainBuffer. Shift latter's length and get the next bit
+    TInt lengthRecorded = iMainBuffer.Length()+aBuffer.Length();
+    iMainBuffer.SetLength(lengthRecorded);
+    iBufferPtr.Set(const_cast&lt;TUint8*&gt;(iMainBuffer.Ptr())+lengthRecorded, 0, iMainBuffer.MaxLength()-lengthRecorded);
+    TRAPD(error, iInputStream-&gt;ReadL(iBufferPtr));
+    if (error!=KErrNone)
+        {
+        Complete(error);
+        }
+    }</codeblock> </li> </ol> <p id="GUID-5811A2A0-5793-5FBB-B01A-AD94590955A8"><b>Basic Procedure to Stop an Audio Input Stream</b> </p> <p>The high level steps to stop an audio input stream are shown here: </p> <ul><li id="GUID-43677A50-198B-59D5-8F58-39C96CFAC5A4"><p>To stop recording the audio stream, use the <xref href="GUID-7CBDCF0D-1D11-34D1-BF5C-1E5B50DA75B5.dita"><apiname>Stop()</apiname></xref> member function. Two callbacks are issued after a <codeph>Stop()</codeph>. </p> <ol id="GUID-591B7B4E-899D-5D28-B33D-3EFC2DE1B4D6"><li id="GUID-EE9F9106-E0E8-5C20-8D8E-CB2A9FCCD0C4"><p>An <xref href="GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0.dita#GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0/GUID-FB4EC66A-4B6D-331B-B5A1-4605084343B0"><apiname>MMdaAudioInputStreamCallback::MaiscBufferCopied()</apiname></xref> pointing to a buffer that contains the last of the recorded audio data (and an <codeph>aError</codeph> value of <codeph>KErrAbort</codeph>). </p> </li> <li id="GUID-E3EBC7BE-C12C-527C-BF33-3EF787D8F9F4"><p>An <xref href="GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0.dita#GUID-6A1EAD31-95CA-3CAC-8897-791E9D522DF0/GUID-23F823E5-46A4-34D1-A7DD-DF6B18C37445"><apiname>MMdaAudioInputStreamCallback::MaiscRecordComplete()</apiname></xref>, indicating successful closure of the audio stream. </p> <codeblock id="GUID-A9CE4580-E981-56E8-B98B-05C84E3C746E" xml:space="preserve">void CIOStreamAudio::MaiscRecordComplete(TInt aError)
+    {
+    ASSERT(iState==EStateReading &amp;&amp; aError!=KErrNone);
+    Complete(aError);
+    }</codeblock> </li> </ol> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita">Audio Output Streaming Tutorial</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C683226-C142-5C7B-BD20-060058352B08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1C683226-C142-5C7B-BD20-060058352B08"><title>Central Repository Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes key concepts of the Central Repository. </p> <section><title>Purpose </title> <p>The Central Repository is a collection of data structures which retains the setup of an application or component from one session to another. It is a fast, flexible mechanism for the persistence of data and, being global to Symbian OS, is preferable to the use of separate .ini files for each application. It is typically used by applications such as messaging services to retrieve logins, localisation data and information needed for interprocess communication. </p> </section> <section><title> Architecture </title> <p>An individual data structure referring to a particular application or component is termed a repository. An item of information in a repository is termed a setting. Conceptually, the Central Repository is comparable to a folder, an individual repository to a file and a setting to a line in a file. In fact repositories are implemented as binary files held at various locations in memory and are accessed through C++ classes which encapsulate them with a single API. For some purposes developers can safely think in terms of the folder/file/lines model, but for other purposes an understanding of implementation is necessary. </p> </section> <section><title> Usage: how not to use the Central Repository </title> <p>An important feature of the Central Repository is best illustrated by a brief guide to how not to use it. </p> <p>In your application code, create a C++ CCentralRepository object. At runtime, call its read function to retrieve the settings of your application. You will find that the object has nothing to read from because the repository it encapsulates has not previously been created. Try calling the create repository function of the CCentralRepository object. You will find that it has not got one. </p> <p>Go back to square one. Create the repository from an initialisation file and convert it to binary format, as explained in this guide. Now call the read function of the CCentralRepository object. You will find that you cannot read or write to the repository: this is because you didn't previously create an access policy for the repository. </p> <p>Go back to square one. Define an access policy, as explained in this guide. Rewrite the initialisation file and proceed as before. This time you may find that the data you are trying to read has been lost because you didn't previously provide for it to be backed up. </p> <p>Go back to square one. Define a backup mechanism - No! Better still, throw this useless documentation out of the window. And if it bounces back at you, that is because you didn't previously open the window. </p> <p>The point is that use of the Central Repository to persist application settings involves work at the design stage of the application. You cannot first create the application and procede to interface to the Central Repository as an afterthought. When an existing application with a different persistence mechanism is migrated to the Central Repository, substantial rewriting of the application code may be necessary. </p> </section> <section><title>Structure of the Central Repository</title> <p>In the simplest case, a repository holds an unordered list of items and the same application reads, writes and backs up the data. However, a use case as simple as that would be unusual. More often, the data has an internal structure which must also be persisted. For instance, it might reflect the contents of a number of C++ classes, of a number of data tables or of a number of arrays of different data types. It is also common for data to be written to a repository by one application and retrieved by another (this requires a mechanism for notification of changes). Backup might be the responsibility of a different application or component entirely. </p> </section> <section><title>Structure of the initialisation file</title> <p>Repositories are created from a text file called an initialisation file: the following is an example of one. The structure of an initialisation file is the key to understanding the functionality of the Central Repository. </p> <codeblock id="GUID-61573358-F16F-5C98-96A0-20D04FE5F7FD" xml:space="preserve"># 00000001.txt
+# Test config file for central repository
+
+cenrep
+version 1
+
+[owner]
+0x12345
+
+[defaultMeta]
+0x00000010
+0x100 0x400 0x00000020
+0x1000 mask = 0x04 0x00000040
+
+[platsec]
+# default capabilities for this repository
+cap_rd=ReadDeviceData cap_wr = WriteDeviceData
+
+[main]
+
+1 int 1 0
+2 real 2.732 0xa
+5 string "test\\\"string\"" 2
+6 int 12 0xf
+8 real 1.5 1
+11 string string 0x305
+12 string8 string 0x305
+
+0x11 real 1.5 12
+0x101 int 100 0
+
+</codeblock> <p>The lines beginning with # are comments. The actual data consists of five sections in this order: header, owner, default metadata, platform security and main. </p> <p><b>The header </b> </p> <p>The header consists of the lines </p> <codeblock id="GUID-AD034D33-C9E5-5BCF-ABDD-D7C5E4325F69" xml:space="preserve">cenrep
+version 1
+</codeblock> <p>This is obligatory and the same for every repository. Cenrep means Central Repository and version 1 refers to the file format: only version 1 exists. </p> <p><b>Owner </b> </p> <p>This section specifies a particular application as the owner of the repository. It is the owning application which backs a repository up. This section is optional: it is not obligatory to specify an owner. </p> <p><b>Default metadata </b> </p> <p>The default metadata section is optional. It supplements the metadata specified in the main section and uses the key space mechanism also used in the main section. </p> <p><b>Platform security </b> </p> <p>This section is theoretically optional. However, if you omit it the application being persisted will have neither read nor write permissions on the repository. The section assigns permissions to particular applications and components or groups of them. The content of the platform security section is called a security policy and its structure is explained below. </p> <p><b>Main </b> </p> <p>This section is mandatory and it holds the initial data to be written to the repository when it is created. The lines consist of attribute value pairs and related data in a format which is partly laid down in the Central Repository specification and partly user-defined. An understanding of this format is required to use the library functions which read and modify the repository once it is created. Each line of the section refers to a setting or group of settings to be persisted and consists of four fields, for instance </p> <codeblock id="GUID-EE86ABAB-7FF5-5A09-9775-846B4CFFFF13" xml:space="preserve">0x11 real 1.5 12</codeblock> <p>called key, type, value and metadata. </p> <p>The key field (0x11) represents an attribute name. The type field (real) is the data type of its value: this must be one of int, real, string, string8 or binary. The value field (1.5) is the actual value. The metadata field (12) is a supplementary value, the metadata value. </p> <p>The key field is the one which is difficult to understand. It represents an attribute name such as 'password' or 'country code' which has been converted into a numerical value using a translation scheme called a key space. (The virtue of numerical values is that they improve retrieval times.) The key space is specific to an application and is defined when the application is being designed. </p> <p><b>Use of decimal and hexadecimal numbers </b> </p> <p>Numbers used to identify settings and values in initialisation files may be written either in decimal or hexadecimal notation (hexadecimal numbers take the prefix "0x"). Both notations will be encountered in the examples given here. Use of decimal or hexadecimal notation is purely a matter of convenience: hexadecimal notation is often used for keys in order to reflect their internal structure. </p> </section> <section id="GUID-01177FE1-7AED-54FD-B0C1-F29A6389F93A"><title>Key spaces</title> <p>The Central Repository API accesses data items in a repository by their keys. In source code, the data items which correspond to settings have meaningful names such as pluginName and userID: the purpose of a key space is to translate names into numerical keys for speed of retrieval. As part of the design process of your application you identify the settings to be persisted and also identify their dependencies. Then you construct a key space to represent them. A key consists of 32 binary digits (bits): a key space imposes a structure on the digits. You might use the 32 bits to represent pairs of 16 bit integers, or reserve eight of them as binary flags and use the rest to represent 24 bit integers, or define four key spaces using only 30 bits and use the other two bits to indicate which of those four key spaces the key belongs to. </p> <p>Why would you want to do this? The simplest use for 32 bits is to represent an integer between 0 and 2<sup>32</sup>. If the data to be persisted consists of a simple list, this is the right thing to do. For instance you might have a list of telephone numbers representing missed calls and simply want to store and retrieve them. In such a case, all you need to do is label the data items with an integer: missed call 0, missed call 1, missed call 2 and so on up to missed call 2<sup>32</sup> if necessary. This is also the appropriate strategy if you are persisting a list of fixed size and various data types, for instance an enumeration of userName, userID, password and the like. Data sets of this kind would be stored in a data table as either a single column or a single row. </p> <p>More commonly, the data to be persisted is comparable to the contents of a data table with many columns and many rows. In C++ data sets of this kind are often held as arrays of class objects. A register of missed calls would probably not just list telephone numbers but also data such as the time of the call and the name of the caller: a definite number of data items information (table columns, class members) relating to an indefinite number of missed calls (table rows, array items). To encode this information in a key space we need to reserve part of the key to represent the column names as 0, 1, 2... Suppose that there are 16 columns (2<sup>4</sup>). Four bits of the key are required to represent the column names leaving another 28 to represent row numbers (missed call 0, missed call 1 etc as before). This keyspace can conveniently be written as eight hexadecimal numbers, one representing the column names and the rest representing the row numbers. </p> <p>A further level of complexity arises when the data to be persisted is comparable to the contents of several data tables. To extend our example of the missed telephone calls, we might also want to persist data concerning calls actually received. A record representing received calls would be different from one representing a missed call: we should want to know the length of the call and information such as the tariff, the network used and so on. In such a case you need to represent three separate items of data: the table name, the column name and the row number. If there are four tables, you need two bits of the key to represent the table names, leaving 30 bits to represent the rows and columns. It is important to know that you do not have to allocate the 30 bits identically for each of the four tables. One of them might have many columns, say 256, requiring eight bits to hold the column names and 22 to hold the row numbers. The others might only have 16 columns, requiring four bits to hold the column names and 26 to hold the row numbers. </p> <p>For the sake of simplicity the examples just given involve numbers which are exact powers of two. In practice this will not usually be so, and a certain amount of rounding up will be needed. </p> <p>You sometimes want to refer to a group of settings without specifying each individual key. There are two ways of doing this. One is to specify a range of contiguous keys by simply naming the first and last key in the range: for instance the pair 0x00000011 0x0000001F identifies a range of sixteen keys from 0x11 to 0x1F (17 to 31) inclusive. The other way is to use a pattern matching mechanism to specify sets of keys which are not necessarily contiguous. </p> <p>Suppose you have a key representing two 16 bit integers encoding columns and rows of a data table, and you want to set or retrieve all the row values for a particular column. In hexadecimal notation the keys you want look like this. </p> <codeblock id="GUID-338B5AA2-0F87-51C7-B6BA-CDEA7CA2E71C" xml:space="preserve">
+0x00080001
+0x00080002
+0x00080003
+</codeblock> <p>In this example, you want the first four hexadecimal digits of the key to match a pattern which you specify and the last four to match any values. To do this you construct two hexadecimal numbers: a key mask and a partial key. The key mask is a sequence of Fs and 0s in which the Fs mark the mandatory fields and the 0s mark the non-mandatory ones: </p> <codeblock id="GUID-136AB57E-7F53-5076-930D-94FC01046A44" xml:space="preserve">0xFFFF0000</codeblock> <p>The partial key is the pattern to be matched: where no values are to be matched you write 0 instead: </p> <codeblock id="GUID-A258EB7B-686D-5BB4-BE72-AC0E0A2A21DE" xml:space="preserve">0x00080000</codeblock> <p>These two numbers, key mask and partial key, taken together specify a list of all the repository keys whose first four hexadecimal digits are 0008. Key mask and partial key pairs are passed as parameters to API functions and are used in the initialisation file to identify groups of keys. </p> </section> <section id="GUID-07777876-8E76-57BD-8858-55EF3AD7641E"><title>Identifying applications</title> <p>You need to specify which applications may access your repository. Applications may be identified by individual secure IDs (SIDs) or as groups by capabilities. The SID is the unique identifier of an application which is given to it by Symbian Signed. Capabilities are categories to which Symbian OS assigns applications and components for purposes of security classification. Each capability has a mnemonic, and is also defined by an individual enum value of the <xref href="GUID-604DA570-08AC-300D-A7CE-1DA984556B10.dita"><apiname>TCapability</apiname></xref> enum. Follow the link to the individual <xref href="GUID-604DA570-08AC-300D-A7CE-1DA984556B10.dita"><apiname>TCapability</apiname></xref> enum value: </p> <table id="GUID-4A0AD7D5-7016-51AE-B5EE-FA05BD9BA4BE"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Capability mnemonic</b>  </p> </entry> <entry><p> <b>TCapability Enum value</b>  </p> </entry> </row> <row><entry><p>TCB (trusted computing base) </p> </entry> <entry><p> <xref href="GUID-0C19208D-732F-3B2B-9B0F-81CB1CB56DFC.dita"><apiname>ECapabilityTCB</apiname></xref>  </p> </entry> </row> <row><entry><p>CommDD (communications device drivers) </p> </entry> <entry><p> <xref href="GUID-2714B609-120A-31C1-9415-235A2FEB9D9A.dita"><apiname>ECapabilityCommDD</apiname></xref>  </p> </entry> </row> <row><entry><p>PowerMgmt (power management) </p> </entry> <entry><p> <xref href="GUID-76F4383B-4EA5-391A-A271-A8F65ED77EC0.dita"><apiname>ECapabilityPowerMgmt</apiname></xref>  </p> </entry> </row> <row><entry><p>MultimediaDD (multimedia device drivers) </p> </entry> <entry><p> <xref href="GUID-48AA1686-C619-3C36-B4B5-6C5DE1F50B0A.dita"><apiname>ECapabilityMultimediaDD</apiname></xref>  </p> </entry> </row> <row><entry><p>ReadDeviceData </p> </entry> <entry><p> <xref href="GUID-1AC4E327-14CE-382D-AA1A-1A7EDBA1863E.dita"><apiname>ECapabilityReadDeviceData</apiname></xref>  </p> </entry> </row> <row><entry><p>WriteDeviceData </p> </entry> <entry><p> <xref href="GUID-C607209F-6FC5-31DE-8034-E5B799B857A8.dita"><apiname>ECapabilityWriteDeviceData</apiname></xref>  </p> </entry> </row> <row><entry><p>DRM (digital rights management) </p> </entry> <entry><p> <xref href="GUID-C0EF5A59-F716-313A-911F-2D3D773DF597.dita"><apiname>ECapabilityDRM</apiname></xref>  </p> </entry> </row> <row><entry><p>TrustedUI </p> </entry> <entry><p> <xref href="GUID-AFB7AB40-B829-37B8-AAB1-7A6FAED9671B.dita"><apiname>ECapabilityTrustedUI</apiname></xref>  </p> </entry> </row> <row><entry><p>ProtServ (server registered with a protected name </p> </entry> <entry><p> <xref href="GUID-200CA018-2CB3-3E4A-A505-085FAD2E3E8B.dita"><apiname>ECapabilityProtServ</apiname></xref>  </p> </entry> </row> <row><entry><p>DiskAdmin </p> </entry> <entry><p> <xref href="GUID-99D8A4E8-BC4F-39FF-A3DF-832CF0411629.dita"><apiname>ECapabilityDiskAdmin</apiname></xref>  </p> </entry> </row> <row><entry><p>NetworkControl </p> </entry> <entry><p> <xref href="GUID-4AFB561B-34D7-3570-A4C9-24B4952C787A.dita"><apiname>ECapabilityNetworkControl</apiname></xref>  </p> </entry> </row> <row><entry><p>AllFiles </p> </entry> <entry><p> <xref href="GUID-89631CF3-4AEE-3C2F-8AAE-5D9C3EB3B373.dita"><apiname>ECapabilityAllFiles</apiname></xref>  </p> </entry> </row> <row><entry><p>SwEvent (software key and pen events) </p> </entry> <entry><p> <xref href="GUID-369B6584-AB7F-3AA2-B912-E912D2BCBE98.dita"><apiname>ECapabilitySwEvent</apiname></xref>  </p> </entry> </row> <row><entry><p>NetworkServices </p> </entry> <entry><p> <xref href="GUID-07A09CBA-CB4E-3CBE-9FA3-930C455F3B0C.dita"><apiname>ECapabilityNetworkServices</apiname></xref>  </p> </entry> </row> <row><entry><p>LocalServices </p> </entry> <entry><p> <xref href="GUID-7D0E447B-EC32-355B-8BBF-F074A1B10D8A.dita"><apiname>ECapabilityLocalServices</apiname></xref>  </p> </entry> </row> <row><entry><p>ReadUserData </p> </entry> <entry><p> <xref href="GUID-4897D21D-5ACF-30A5-A38C-371A3983814D.dita"><apiname>ECapabilityReadUserData</apiname></xref>  </p> </entry> </row> <row><entry><p>WriteUserData </p> </entry> <entry><p> <xref href="GUID-8908E5F7-AC6A-333B-8F65-6DDC46798F48.dita"><apiname>ECapabilityWriteUserData</apiname></xref>  </p> </entry> </row> <row><entry><p>Location (physical location, not locale) </p> </entry> <entry><p> <xref href="GUID-1B530864-C77B-3CDE-B761-83C2EED44DB8.dita"><apiname>ECapabilityLocation</apiname></xref>  </p> </entry> </row> <row><entry><p>SurroundingsDD </p> </entry> <entry><p> <xref href="GUID-8A207675-B0CF-314E-A4AD-12D839A01A4B.dita"><apiname>ECapabilitySurroundingsDD</apiname></xref>  </p> </entry> </row> <row><entry><p>UserEnvironment </p> </entry> <entry><p> <xref href="GUID-05F13261-5EDF-319A-93D6-0247F8C468A3.dita"><apiname>ECapabilityUserEnvironment</apiname></xref>  </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita"><linktext>Central Repository Overview</linktext> </link> <link href="GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita"><linktext>Central Repository Access Guide</linktext> </link> <link href="GUID-C86A7929-DC0F-50FA-93CB-662A22C4CD35.dita"><linktext>Device Variant Using Multiple Keyspace
+                Files</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C7A0C22-90C6-5F54-8B43-342EE460C055.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1C7A0C22-90C6-5F54-8B43-342EE460C055" xml:lang="en"><title>Timers and Timing Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C7F6DBA-7113-5542-AEF1-179FDD980443.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1C7F6DBA-7113-5542-AEF1-179FDD980443" xml:lang="en"><title>SWI Analysis ToolKit Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides detailed information about the syntax and usage of the tools available in the SWI Analysis ToolKit.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1C802DBD-1453-5C69-94D5-FB0229C544D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1C802DBD-1453-5C69-94D5-FB0229C544D6"><title>Uikon Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides the top-layer of the framework for applications. The framework is fundamental to all GUI applications.</p> </section> <section><title>Architectural relationships</title> <p>Uikon provides a UI library layer that is common to all Symbian OS phones. UI variants add further UI libraries that can include controls that derive from the ones provided by Uikon. Application developers can use the Uikon APIs directly, though they should check that there is not a more appropriate phone-specific API available in the UI variant's own libraries. </p> <p>The Uikon application framework extends two lower frameworks:</p> <ul><li id="GUID-6941969D-7625-5376-A5D6-5E5B0378D0E7"><p>the Application Architecture Framework: handles application start-up and accessing the application data (its <i>document</i>). </p> </li> <li id="GUID-F1AA0F97-5205-537C-994A-6A3FA811AA72"><p>UI Control Framework: provides the framework for drawing and handling input to screen controls</p> </li> </ul> <p> Uikon ties these two frameworks together to provide the framework for the standard application design. </p> <p>Uikon's framework classes are extended in turn by:</p> <ul><li id="GUID-EF33F5C8-6EA8-5D8A-AE53-A35C692E291A"><p>applications, to implement appropriate behaviour for their type of data, and for their types of command</p> </li> <li id="GUID-66353589-7D6B-548E-81A0-3A3515CF8BD8"><p>possibly by UI variant-specific libraries, to add UI variant-specific behaviour to the application framework</p> </li> </ul> </section> <section><title>Description</title> <p>The API has five key concepts: application (<codeph>CEikApplication</codeph>), document (<codeph>CEikDocument</codeph>), app UI (<codeph>CEikAppUi</codeph>), UI Environment (<codeph>CEikonEnv</codeph>), and utilities (<codeph>EikFileUtils</codeph>).</p> <p><b>Application</b> </p> <p>The application class defines properties of the application, such as UID and caption, and creates a new document.</p> <p>The application base class is provided by <xref href="GUID-E36E2F07-09E7-32BC-BB83-14DF9232E7D9.dita"><apiname>CEikApplication</apiname></xref>.</p> <p><b>Document</b> </p> <p>The document class represents the data model for the application. In file-based applications, it stores and restores the application's data. It handles requests to edit a document by creating an app UI.</p> <p>The document base class is provided by <xref href="GUID-B33A8A56-D1BE-3E3D-B5AC-F644A5C764DB.dita"><apiname>CEikDocument</apiname></xref>.</p> <p><b>App UI</b> </p> <p>The app UI is the central user interface class. It creates and owns controls to display the application data, and centralises handling of command input from standard controls such as menus and toolbars.</p> <p>The app UI base class is provided by <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref>, which can be customised by using the resource structure <xref href="GUID-77DF8122-9267-36A6-B5C5-AC989828F2EA.dita"><apiname>EIK_APP_INFO</apiname></xref>.</p> <p><b>UI Environment</b> </p> <p>The UI Environment provides a large number of assorted UI functionality, particularly simple access to information and query dialogs, and access to standard system UI resources (bitmaps and fonts). Every object in a GUI application can access a UI Environment (through <xref href="GUID-96CA3B4B-993F-36C0-9A5B-DF5CC74EE20E.dita#GUID-96CA3B4B-993F-36C0-9A5B-DF5CC74EE20E/GUID-3587E866-F434-30BA-9CFC-0D40EF8D47FE"><apiname>CEikonEnv::Static()</apiname></xref>), as a pointer to it is stored in thread-local storage.</p> <p>The UI Environment is provided by <xref href="GUID-96CA3B4B-993F-36C0-9A5B-DF5CC74EE20E.dita"><apiname>CEikonEnv</apiname></xref>.</p> <p><b>Utilities</b> </p> <p>Utility classes provide easy access for applications to frequently-used functionality. Notable are <xref href="GUID-EF4568CF-947B-3931-B860-2A63A6B7C275.dita"><apiname>EikFileUtils</apiname></xref> for file access, and <xref href="GUID-C886511D-1922-3703-843D-1936018788AC.dita"><apiname>EikResourceUtils</apiname></xref> for resource access.</p> </section> <section><title>See also</title> <p><xref href="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita">UI Control Framework Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9" xml:lang="en"><title>XML
+DOM Engine Node Reference</title><shortdesc>This topic lists the node classes of the XML DOM Engine. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><p>The following diagram describes all the node classes of the XML
+DOM Engine. Refer to the links below for more information about each class. </p> <fig id="GUID-C6E93943-CF46-5583-93DF-BDE4CCE3BC7C">
+<title>           XML DOM Engine classes          </title>
+<image href="GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e405286_href.png" scale="75" placement="inline"/>
+</fig> <ul>
+<li id="GUID-22EF7178-178A-52BA-A51E-1B1140DB0668"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDocument</apiname></xref>  </p> </li>
+<li id="GUID-C5634D5A-28E5-50AE-993F-CC0210D1E376"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngElement</apiname></xref>  </p> </li>
+<li id="GUID-BD4FE99D-913D-5FAA-832A-8B437BD19BE2"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngAttr</apiname></xref>  </p> </li>
+<li id="GUID-3A448CC7-D344-58E8-A26E-A863F5E20C6E"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TTextXmlEngNode</apiname></xref>  </p> </li>
+<li id="GUID-E7F70FFA-89B6-5D4B-A680-8809B1E79A80"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngComment</apiname></xref>  </p> </li>
+<li id="GUID-7AD06387-6368-5ACC-81CA-2ACA9ECCF735"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngEntityReference</apiname></xref>  </p> </li>
+<li id="GUID-713C0FF3-1B8D-5E08-B501-754F9D54BF10"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngCharacterData</apiname></xref>  </p> </li>
+<li id="GUID-2E0550F9-0A95-570D-8031-97CA827D3E73"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngProcessingInstruction</apiname></xref>  </p> </li>
+<li id="GUID-01F8114C-3F9C-5EB4-9E8C-F0409A16CE2D"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngCDATASection</apiname></xref>  </p> </li>
+<li id="GUID-D9183E10-DDB6-555E-B342-FF3C5D279553"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngDocumentFragment</apiname></xref>  </p> </li>
+<li id="GUID-9C07431D-FA83-5982-A1AD-E0C8BA597B42"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngNamespace</apiname></xref>  </p> </li>
+<li id="GUID-487D05BE-6619-58A9-8B74-E5AE1B324D47"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngNodeList</apiname></xref> <codeph>&lt;T&gt;</codeph>  </p> </li>
+<li id="GUID-7898E31B-42F3-506F-B9CE-0E1158B29A13"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDOMImplementation</apiname></xref>  </p> </li>
+<li id="GUID-40A5F223-4EF9-50CD-B47E-F45B03F0BBF6"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngDataContainer</apiname></xref>  </p> </li>
+<li id="GUID-87172A0F-97D2-568F-88A4-52B8D6CCCCC1"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngFileContainer</apiname></xref>  </p> </li>
+<li id="GUID-0D4E6124-DA51-511F-85D6-06E43889DA0B"><p> <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngChunkContainer</apiname></xref>  </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita"><linktext>XML DOM Engine
+Overview</linktext></link>
+<link href="GUID-326D4D50-5AD9-5CA2-8422-AA45AE0712D6.dita"><linktext>Implementation
+of W3C Types</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362" xml:lang="en"><title>Subsessions
+within a session</title><shortdesc>Describes subsessions within a session.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Once a client has established a session with a server, it can then establish
+a number of subsessions with that server. Each subsession represents an independent
+channel of communication within the current session. </p>
+<p>Subsessions are useful if a single client needs to establish many channels
+of communication with the server. This is because subsessions have a much
+lower overhead than a full session. The main cost of a subsession is slightly
+increased programming complexity on the server side. </p>
+<p>The main points are: </p>
+<ul>
+<li id="GUID-66581D72-861A-5F70-B3F3-348C31615EA5"><p>the client has an <xref href="GUID-1BBE1448-1DF8-33C4-BF9E-5A5F427AEE35.dita"><apiname>RSubSessionBase</apiname></xref> handle
+to the subsession </p> </li>
+<li id="GUID-7EEEB011-CB41-5E20-BF91-C6D01B4F71EE"><p>the server uses a <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> derived
+class to represent the subsession. </p> </li>
+</ul>
+<p>As a subsession is always referenced by a handle on the client side, the
+corresponding subsession object on the server side must generate a handle. </p>
+<p>For ordinary sessions, the generation of handles is done by the server
+framework. </p>
+<p>For subsessions, server side code must be explicitly written to do this.
+The <codeph>CObject</codeph> class and its associated container (<codeph>CObjectCon</codeph>)
+and index (<codeph>CObjectIx</codeph>) classes provide the behaviour to achieve
+this. </p>
+<section id="GUID-4F58EC0B-5AC3-4961-B04F-2CE64185ECEF"><title>Server side requirements</title> <p>Each subsession is represented
+by an instance of a <codeph>CObject</codeph> derived class. </p> <p>Subsession
+objects must be held in an object container, an instance of <codeph>CObjectCon</codeph>.
+This means that the server 's <codeph>CServer2</codeph> derived class must
+construct and maintain a <codeph>CObjectCon</codeph> object. </p> <p>Object
+containers are constructed by and held in an object container index, an instance
+of a <codeph>CObjectConIx</codeph>. This means that the server 's <codeph>CServer2</codeph> derived
+class must construct and maintain a <codeph>CObjectConIx</codeph> object. </p> <p>A
+unique handle number for a subsession object is generated when the subsession
+object is added to an object index, an instance of a <codeph>CObjectIx</codeph>.
+This means that the server's <codeph>CServer2</codeph> derived class must
+construct and maintain a <codeph>CObjectIx</codeph> object. </p> <p>The handle
+number is a combination of a unique id assigned to the object's container
+and a number generated by the object index. </p> <fig id="GUID-14035881-8AD5-50B5-A285-5DD2D7E68FDA">
+<image href="GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e212325_href.png" placement="inline"/>
+<p>Subsession within a session</p>
+</fig> </section>
+<section id="GUID-93D80DDA-8E2E-462F-8A67-0982B456A8A6"><title>Note</title> <ul>
+<li id="GUID-49B41D98-027F-534F-86D7-3774CAC884F9"><p>Depending on the purpose
+of the server, more than one object container (a <codeph>CObjectCon</codeph>)
+and more than one object index (a <codeph>CObjectIx</codeph>) may be used.
+However, the server must have <i>one and only one</i> object container index
+(a <codeph>CObjectConIx</codeph>) from which all object containers are generated. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D0E418B-09D4-5A6E-A1A8-A46F9F9CF371.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1D0E418B-09D4-5A6E-A1A8-A46F9F9CF371" xml:lang="en"><title>Example code</title><shortdesc>These pages list the example code applications available for the
+Symbian platform, by package and by use case. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9"><title>A simple HTTP client session</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes each of the stages needed to use HTTP for a single, simple transaction. The code fragments are taken from <filepath>HTTPEXAMPLECLIENT</filepath>. </p> <section id="GUID-01BCEE83-E671-4A92-B8FA-DC81A27C3CAA"><title>Opening a session</title> <p>A new HTTP Client session is started by declaring an <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref> object, which must remain in scope for the duration of the session, and invoking the <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita#GUID-651801A5-5473-3856-9647-46823598C5C1/GUID-77EA1EAA-F1E5-397D-BA5C-7BD3A5404B10"><apiname>RHTTPSession::OpenL()</apiname></xref> method. Usually, the <codeph>RHTTPSession</codeph> handle is a data member of a client class: </p> <p>From the example header file <filepath>httpexampleclient.h</filepath>: </p> <codeblock id="GUID-062810B9-419F-5EF3-B11F-67E88A8812EB" xml:space="preserve">class CHttpClient : public CBase, ...
+    {
+    ...
+private:
+    RHTTPSession iSess;
+    ...
+    };</codeblock> <p>From the example implementation file <filepath>httpexampleclient.cpp</filepath>: </p> <codeblock id="GUID-C94B7759-D61F-5079-94D3-544F1195B65E" xml:space="preserve">void CHttpClient::ConstructL()
+    {
+    ...
+    iSession.OpenL();
+    ...
+    }</codeblock> </section> <section id="GUID-63503283-9642-428C-B57E-8E3436D8BC87"><title>Creating a transaction</title> <p>To create a new transaction within the session, the client must specify a URI, an HTTP method, and a callback object that is used to receive events that arise during the transaction. The callback object must implement the <xref href="GUID-F34F7481-00CF-3A1B-8D45-D053AD6769A8.dita"><apiname>MHTTPTransactionCallback</apiname></xref> interface. </p> <p>The <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita"><apiname>RHTTPTransaction</apiname></xref> handle returned by the session uniquely identifies the new transaction. It may be stored in a class data member, but this is not mandatory. </p> <codeblock id="GUID-59E8A81E-EE08-5770-9F59-773EA7613B89" xml:space="preserve">void CHttpClient::InvokeHttpMethodL(const TDesC8&amp; aUri, RStringF aMethod)
+    {
+    ...
+    TUriParser8 uri; 
+    uri.Parse(aUri);  
+    iTrans = iSess.OpenTransactionL(uri, *iTransObs, aMethod);
+    ...
+    };</codeblock> <p>The second parameter to <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita#GUID-651801A5-5473-3856-9647-46823598C5C1/GUID-02249363-7FB0-39A5-8F43-7FC35E05E318"><apiname>RHTTPSession::OpenTransactionL()</apiname></xref> provides the transaction callback. The class which implements the callback is separate in <filepath>HTTPEXAMPLECLIENT</filepath>. From the header file <filepath>httpexampleclient.h</filepath>: </p> <codeblock id="GUID-2F967212-258B-5F06-A62C-2BB50BF4F564" xml:space="preserve">class CHttpEventHandler : public CBase, public MHTTPTransactionCallback
+    {
+public:
+ ...
+    //
+    // methods from MHTTPTransactionCallback
+    //
+    virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent);
+    virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent);
+ ...
+ };</codeblock> <p>The two callback methods are inherited from <xref href="GUID-57216A14-97B8-324C-BB00-63CA880CC779.dita"><apiname>MHTTPFilterBase</apiname></xref>: hence the MHF prefix to their names. This is an interesting feature of the HTTP Client design where the client code is treated as a filter. The use of these methods is described subsequently. </p> </section> <section id="GUID-B5AECC45-F560-40E7-B8E6-6E48CED6C8FE"><title>Setting request headers</title> <p>After opening the transaction, the client may set request headers, if required. Note that the use of request headers is optional for very simple transactions, as the few headers that RFC 2616 describes as mandatory for HTTP/1.1 are automatically generated. </p> <p>To access the headers associated with a transaction's request or response, the <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita"><apiname>RHTTPHeaders</apiname></xref> class is used. The handle is obtained from either the <xref href="GUID-8D952FEE-0EA0-3DBC-AADB-6F4200B82687.dita"><apiname>RHTTPRequest</apiname></xref> or <xref href="GUID-BA9EA976-E4CF-37D7-9E73-420A6D50203F.dita"><apiname>RHTTPResponse</apiname></xref> objects associated with the transaction. </p> <p>From the implementation file <filepath>httpexampleclient.cpp</filepath>: </p> <codeblock id="GUID-1C49573C-00B3-5563-B422-9E4A94F39BBD" xml:space="preserve">RHTTPHeaders hdr = iTrans.Request().GetHeaderCollection();
+    // Add headers appropriate to all methods
+    SetHeaderL(hdr, HTTP::EUserAgent, KUserAgent);
+    SetHeaderL(hdr, HTTP::EAccept, KAccept);
+...
+
+void CHttpClient::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8&amp; aHdrValue)
+    {
+    RStringF valStr = iSess.StringPool().OpenFStringL(aHdrValue);
+    CleanupClosePushL(valStr);
+    THTTPHdrVal val(valStr); 
+    aHeaders.SetFieldL(iSess.StringPool().StringF(aHdrField,RHTTPSession::GetTable()), val);
+    CleanupStack::PopAndDestroy(&amp;valStr);
+    }</codeblock> <p>Note that the header field types are specified using enumerations from the <xref href="GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04.dita"><apiname>HTTP</apiname></xref> namespace, e.g. <xref href="GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04.dita#GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04/GUID-600E343A-5081-3D42-95A2-B1957BE9719A"><apiname>HTTP::EUserAgent</apiname></xref>. The class used to hold the header field value, <xref href="GUID-DEE8279A-3BEC-316F-97B8-6C49FEDBD5B3.dita"><apiname>THTTPHdrVal</apiname></xref>, is like a C++ union, that is, it can hold different data types. In this example, it holds an <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> value which is initialized using the session's string-pool from the supplied descriptor. These must be 8-bit strings, as the RFC 2616 assumes a 7-bit encoding for all transmissions. </p> </section> <section id="GUID-435FE7DC-9BEA-4D70-B8D1-7189E546242D"><title>Starting the transaction</title> <p>When headers have been set, a simple transaction with no request body can be started immediately. This is the case for HTTP methods such as GET, HEAD, and TRACE. Some other HTTP methods include a body in the request, for example, POST. The data supplier that the client uses to supply request body data must be associated with the transaction before the transaction is started. </p> <p>In <filepath>HTTPEXAMPLECLIENT</filepath>, the <codeph>CHttpClient</codeph> class also acts as its own data supplier when the POST method is chosen in the menu. See <xref href="GUID-81253CA0-2B57-5A3E-9ACD-469D4B922047.dita">Handling request body data</xref> for examples of code that provides a request body. </p> <p>When the transaction ready to start, the client calls <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-F3A8B916-5618-319D-89D8-9B7B04A8A2FC"><apiname>RHTTPTransaction::SubmitL()</apiname></xref> to indicate that the request should be submitted. From the implementation file <filepath>httpexampleclient.cpp</filepath>: </p> <codeblock id="GUID-A0564DB5-E381-5E08-A7A1-BA7568B06235" xml:space="preserve">...
+    // submit the transaction
+    iTrans.SubmitL();
+    // Start the scheduler, once the transaction completes or is cancelled on an error the scheduler will be
+    // stopped in the event handler
+    CActiveScheduler::Start();</codeblock> <p>The <filepath>HTTPEXAMPLECLIENT</filepath> application is implemented as a synchronous client, hence the local <codeph>CActiveScheduler</codeph>. When <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita#GUID-B4C76104-EA1B-3FC3-A31E-86A976598171/GUID-B59D1017-1D81-3D5E-B0A2-73FC9C06194B"><apiname>CActiveScheduler::Stop()</apiname></xref> is called after completion of the transaction, execution continues from this point. More complex applications will have an active scheduler elsewhere that should already be running. </p> </section> <section id="GUID-B5520BFB-59D1-4800-80AB-901538216313"><title>Receiving transaction events</title> <p>The transaction is now processed by HTTP. All processing by the internal HTTP core and protocol and transport handlers is done in the client's thread. As data is received from the HTTP server, events are generated internally and passed back to the client using the session filters. When an event reaches the client, HTTP invokes the transaction callback. </p> <p>From the implementation file <filepath>httpexampleclient.cpp</filepath>: </p> <codeblock id="GUID-D555D720-4AEB-5877-A8CC-315E84F5EA35" xml:space="preserve">void CHttpEventHandler::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent)
+    {
+    switch (aEvent.iStatus)
+        {
+        case THTTPEvent::EGotResponseHeaders:
+            {
+            ...
+            } 
+            break;
+        case THTTPEvent::EGotResponseBodyData:
+            {
+            ...
+            } 
+            break;
+        case THTTPEvent::EResponseComplete:
+            {
+            ...
+            } 
+            break;
+        case THTTPEvent::ESucceeded:
+            {
+            ...
+            } 
+            break;
+        case THTTPEvent::EFailed:
+            {
+            ...
+            } 
+            break;
+  case THTTPEvent::ERedirectedPermanently:
+            {
+            ...
+            } 
+            break;
+  case THTTPEvent::ERedirectedTemporarily:
+            {
+            ...
+            } 
+            break;
+        default:
+            {
+            ...
+            } 
+            break;
+        }
+    }</codeblock> <p>Events are processed in turn by the client. They arrive in the order shown in the preceding example code. The following list describes the events: </p> <ul><li id="GUID-8C726FB1-8448-5C52-9235-FA3977270A8D"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-C2FB5091-13B7-305A-A14A-CA4BF23F0CF0"><apiname>THTTPEvent::EGotResponseHeaders</apiname></xref> indicates that the response status is known, and that the headers from the response are ready for access by the client. This event will always be the first received, unless an error condition has arisen. </p> </li> <li id="GUID-4F5623D8-BE02-5EEF-8A9E-8B9BDC76C0B2"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-FED66222-97A9-376C-B35D-488C24477FF9"><apiname>THTTPEvent::EGotResponseBodyData</apiname></xref> indicates that some body data is ready for processing. Response bodies are generally large enough to require splitting into smaller pieces (due to the use of fixed-size internal buffers), so the event will arrive as many times as there are pieces, until the whole body has been retrieved. </p> </li> <li id="GUID-D0480035-1AA9-5046-828E-ABAF488E7D67"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-0056851B-2933-3701-BFE2-E28162F4EE5B"><apiname>THTTPEvent::EResponseComplete</apiname></xref> indicates that the transaction's response has been completely received. The client can now expect to be told whether the transaction was successful or not. </p> </li> <li id="GUID-3E48FCA6-3571-540A-BBC8-11796B7E4450"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-619AC671-5679-3036-82C9-DAAF5B892100"><apiname>THTTPEvent::ESucceeded</apiname></xref> is one of two possible final messages: it indicates success of the transaction. </p> </li> <li id="GUID-D945439E-973D-58A6-BEA4-CDA568463336"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-6BC33448-9CB9-3488-87DD-EFB0C5435044"><apiname>THTTPEvent::EFailed</apiname></xref> is the second of the two possible final messages: it indicates failure of the transaction. </p> </li> <li id="GUID-B3BC98DE-A314-51A2-8C0A-B1C61911D7B0"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-0A71A2A1-E5CC-33F2-A11A-94A998AA32C5"><apiname>THTTPEvent::ERedirectedPermanently</apiname></xref> indicates that the transaction has been redirected and the HTTP origin server indicated that it was a permanent redirection. The URI for the transaction is now the redirected location. </p> </li> <li id="GUID-7FF792D8-7B84-5827-B499-C2FFC2FA9007"><p> <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-DEB91CA2-ECFA-3443-9489-AA9E2D50337B"><apiname>THTTPEvent::ERedirectedTemporarily</apiname></xref> indicates that the transaction has been redirected and the HTTP origin server indicated that it was a temporary redirection. </p> </li> <li id="GUID-B5BFE6F9-96D3-5942-BA9F-E2C2B6A52D73"><p> <codeph> default</codeph>: an unrecognised event. Negative values indicate an error propogated from filters or lower comms layers. If not understood by the client, error values may be safely ignored as a <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-6BC33448-9CB9-3488-87DD-EFB0C5435044"><apiname>THTTPEvent::EFailed</apiname></xref> event is guaranteed to follow. Positive values are used for warning conditions. </p> </li> </ul> </section> <section id="GUID-2F0853C8-6764-40EC-A57C-E770A5D39859"><title>Obtaining the response status</title> <p>To obtain the response status code and text description, the transaction response is used: </p> <codeblock id="GUID-A5FB04A3-905A-5C0E-996E-B0CB0ED91BA8" xml:space="preserve">case THTTPEvent::EGotResponseHeaders:
+    {
+    RHTTPResponse resp = aTransaction.Response();
+    TInt status = resp.StatusCode();
+    RStringF statusStr = resp.StatusText();</codeblock> </section> <section id="GUID-225CEAAB-C9C1-4D80-A4E5-4267E5B123A5"><title>Obtaining the response headers</title> <p>The response headers can be iterated using the <xref href="GUID-9C6B4D0A-8499-36D6-8F07-A3C3DB6615DC.dita"><apiname>THTTPHdrFieldIter</apiname></xref> class. Individual header fields can be queried as shown in the following example: </p> <codeblock id="GUID-3643D54F-7430-56BE-B641-1C0F539DF8D9" xml:space="preserve">RHTTPResponse resp = aTrans.Response();
+    RStringPool strP = aTrans.Session().StringPool();
+    RHTTPHeaders hdr = resp.GetHeaderCollection();
+    THTTPHdrFieldIter it = hdr.Fields();
+
+    TBuf&lt;KMaxHeaderNameLen&gt;  fieldName16;
+    TBuf&lt;KMaxHeaderValueLen&gt; fieldVal16;
+
+    while (it.AtEnd() == EFalse)
+    {
+    // Get the name of the next header field
+    RStringTokenF fieldName = it();
+    RStringF fieldNameStr = strP.StringF(fieldName);
+
+    // Check it does indeed exist
+    THTTPHdrVal fieldVal;
+    if (hdr.GetField(fieldNameStr,0,fieldVal) == KErrNone)
+        {
+        ...
+        // Display realm for WWW-Authenticate header
+        RStringF wwwAuth = strP.StringF(HTTP::EWWWAuthenticate,RHTTPSession::GetTable());
+        if (fieldNameStr == wwwAuth)
+            {
+            // check the auth scheme is 'basic'
+            RStringF basic = strP.StringF(HTTP::EBasic,RHTTPSession::GetTable());
+            RStringF realm = strP.StringF(HTTP::ERealm,RHTTPSession::GetTable());
+            THTTPHdrVal realmVal;
+            if ((fieldVal.StrF() == basic) &amp;&amp; 
+            // check the header has a 'realm' parameter 
+            (!hdr.GetParam(wwwAuth, realm, realmVal)))
+                {
+                RStringF realmValStr = strP.StringF(realmVal.StrF());
+                fieldVal16.Copy(realmValStr.DesC());
+                iUtils.Test().Printf(_L("Realm is: %S\n"), &amp;fieldVal16);
+                realmValStr.Close();
+                }
+            }
+            basic.Close();
+            realm.Close();
+        }
+        // Advance the iterator
+        ++it;
+        // Close all RStrings
+        fieldName.Close();
+        fieldNameStr.Close();
+        wwwAuth.Close();
+    }
+    resp.Close();
+    strP.Close();
+    hdr.Close();</codeblock> </section> <section id="GUID-6FA09592-E909-4A24-81F0-A71F666B01C8"><title>Obtaining the response body</title> <p>To access the response body, the data supplier contained in the transaction response must be used. When the client has finished processing each piece of body data, the data must be released: </p> <codeblock id="GUID-60298F6A-BF73-5CB1-A31D-C34114F04E90" xml:space="preserve">case THTTPEvent::EGotResponseBodyData:
+    {
+    // Get the body data supplier
+    iRespBody = aTransaction.Response().Body();
+
+    // Some (more) body data has been received (in the HTTP response)
+    if (iVerbose)
+            DumpRespBody(aTransaction);
+    else
+            iUtils.Test().Printf(_L("*"));
+    // Append to the output file if we're saving responses
+    if (iSavingResponseBody)
+            {
+            TPtrC8 bodyData;
+            TBool lastChunk = iRespBody-&gt;GetNextDataPart(bodyData);
+            iRespBodyFile.Write(bodyData);
+            if (lastChunk)
+                iRespBodyFile.Close();
+            }
+ // Done with that bit of body data
+    iRespBody-&gt;ReleaseData();
+    } break;</codeblock> <p>The <xref href="GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5.dita#GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5/GUID-D4E82D9A-7C88-30B4-B50B-D3CAF39B22F2"><apiname>MHTTPDataSupplier::OverallDataSize()</apiname></xref> method can be used to find out how large the entire body is before processing the body data. The value returned is based on the HTTP response Content-Length header. However, not all responses will include this header. For example, when the HTTP server is using the 'chunked' transfer encoding. In that case, the overall data size will be returned as <codeph>KErrNotFound</codeph>. </p> <p>Regardless of that, the final piece of body data will always cause <xref href="GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5.dita#GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5/GUID-F8D21ACA-E984-3686-9E45-44ECDEAA4B70"><apiname>MHTTPDataSupplier::GetNextDataPart()</apiname></xref> to return <codeph>ETrue</codeph>. </p> </section> <section id="GUID-AFE19311-E6A2-425F-B51F-4CFC287FC7A9"><title>Completing the transaction</title> <p>In <filepath>HTTPEXAMPLECLIENT</filepath>, the final completion of the transaction (indicated with a success or failure message) stops the local active scheduler. The <codeph>EResponseComplete</codeph> code is not used for anything here. Since each transaction is guaranteed to send either an <codeph>ESucceeded</codeph> event or an <codeph>EFailed</codeph> event, they can be used as a signal to finish. </p> <codeblock id="GUID-A212D790-98D1-527C-A269-B1722D1F053F" xml:space="preserve">case THTTPEvent::EResponseComplete:
+            {
+            // The transaction's response is complete
+            iUtils.Test().Printf(_L("\nTransaction Complete\n"));
+            } break;
+        case THTTPEvent::ESucceeded:
+            {
+            iUtils.Test().Printf(_L("Transaction Successful\n"));
+            aTransaction.Close();
+            CActiveScheduler::Stop();
+            } break;
+        case THTTPEvent::EFailed:
+            {
+            iUtils.Test().Printf(_L("Transaction Failed\n"));
+            aTransaction.Close();
+            CActiveScheduler::Stop();
+            } break;
+        case THTTPEvent::ERedirectedPermanently:
+            {
+            iUtils.Test().Printf(_L("Permanent Redirection\n"));
+            } break;
+        case THTTPEvent::ERedirectedTemporarily:
+            {
+            iUtils.Test().Printf(_L("Temporary Redirection\n"));
+            } break;</codeblock> <p>The transaction is closed using <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-0ABF9404-EA7F-3CB3-B08B-D9154EF6F2D8"><apiname>RHTTPTransaction::Close()</apiname></xref>. This internally frees the resources associated with that transaction. The transaction should not be used again. </p> </section> <section id="GUID-8E708D45-31C2-4C6B-9BEF-260CBF94CDDF"><title>Terminating the session</title> <p>When the client is ready to terminate, the session is closed: </p> <codeblock id="GUID-DF6E28A1-A70A-52BF-B841-F85049F12D3A" xml:space="preserve">CHttpClient::~CHttpClient()
+    {
+    iSess.Close();
+    ...
+    }</codeblock> <p>When the session is closed, all resources are returned to the system. Transactions that were not complete are immediately cancelled. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-1D35F788-A470-5269-93E0-7C33A0013489"><title>Creating a Table </title><shortdesc>This tutorial shows you how to create a Symbian SQL table. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <context id="GUID-6799E3F3-353E-5C00-A38C-D32F888392AA-GENID-1-6-1-20-1-1-6-1-1-10-1-8-1-5-1-3-1"><p>This tutorial uses code from the <xref href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita">Basic SQL example application</xref>. </p> <p><b>Assumptions </b> </p> <p>You have a database. The database has no tables and therefore no data. </p> <p><b>SQL statements </b> </p> <p>The following SQL statements are used for this example: </p> <p><userinput>CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT)</userinput> </p> <p>The <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase::Exec</apiname></xref> function provides a mechanism for executing Symbian SQL statements. </p> </context> <steps id="GUID-CF509D01-A43D-5B06-86B3-2F3F27E56DD1"><step id="GUID-8C01D480-6297-5663-B7B2-54988FABD459"><cmd>Create a table </cmd> <info>The steps required to create a table are shown here: </info> <substeps id="GUID-1A0FC730-B110-5EE6-8EB6-9CC10750CE9F"><substep id="GUID-4B88DCB9-FF03-5D4E-A061-FE5D8F686FC9"><cmd>Declare a constant to hold the table handle: </cmd> <stepxmp><codeblock id="GUID-98F9AF2B-5599-5490-A90A-6299814EE1FB" xml:space="preserve">_LIT(KTabCreate,"CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT);");</codeblock> </stepxmp> <stepresult> <codeph>KTabCreate</codeph> will be used later by the SQL EXECUTE command. </stepresult> </substep> <substep id="GUID-A7BAF541-EF41-5A75-8560-2553B81B35CC"><cmd>Instantiate the required objects: </cmd> <stepxmp><codeblock id="GUID-69EC7894-C3C9-5BE3-B54A-66651C1647E1" xml:space="preserve">RSqlDatabase db;
+CConsoleBase* iConsole;</codeblock> </stepxmp> <info>This creates an RSqlDatabase object, which is needed to execute the SQL statement. </info> </substep> <substep id="GUID-98878406-01F8-5162-818A-2A53BE5FF96B"><cmd>Execute the SQL statement: </cmd> <stepxmp><codeblock id="GUID-4E02D739-ABF7-54E5-89FF-3EDD943A8231" xml:space="preserve">db.Exec(KTabCreate)</codeblock> </stepxmp> <info>This will execute the SQL statement to create the table. </info> </substep> </substeps> <stepresult>The table now exists and you can begin adding data to it. </stepresult> </step> </steps> <result id="GUID-D697ACB5-9E8C-5F6A-972F-8D150AD5D469"><p>Your database now has at least one table. You can begin to add data to the table and you can query and edit it. </p> </result> <example id="GUID-630D1DAD-F3AA-58D1-9E92-7A07097D9DEF"><title>Create table example</title> <p>The following code snippet is from the example used for this tutorial: </p> <codeblock id="GUID-76426336-3BF5-5126-8224-C7E372E2CA29" xml:space="preserve">_LIT(KTabCreate,"CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT);");
+_LIT(KCreateTable,"\nCreating a table\n");
+...
+CConsoleBase* iConsole;
+...
+RSqlDatabase db;
+iConsole-&gt;Printf(KCreateTable);
+...
+User::LeaveIfError(db.Exec(KTabCreate));
+...</codeblock> </example> <postreq id="GUID-AE41BAEA-E1DB-53B1-B289-3CD020CA0B4B"><p>Now that you have created a table you need to populate it with some data. The following tasks will show you how to populate a table: </p> <ul><li id="GUID-B9AC3160-267B-57AD-B29A-19013EC2E05E"><p> <xref href="GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita">Querying Databases: Basic</xref>  </p> </li> <li id="GUID-92B5719B-D8C3-5215-B6EF-F7820F4514BD"><p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting Data into a Table</xref> </p> </li> <li id="GUID-F518E95A-3E3E-588A-831A-774B4F0540DB"><p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing from a Data Stream</xref>  </p> </li> </ul> </postreq> </taskbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita"><linktext>Basic SQL Example
+                Application</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,911 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69" xml:lang="en"><title>The
+wsini.ini File Reference</title><shortdesc>This topic provides a reference to the <filepath>wsini.ini</filepath> file
+parameters. Some of the parameters are general, some are screen-specific and
+some are specific to individual plug-ins. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-51E0A97A-10CB-4C8A-8404-9D92BB3F075D"><title>Introduction</title> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Device creators. </p> <p>This topic divides the parameters into
+four groups: </p> <ul>
+<li id="GUID-406BCA6A-6E81-5FE8-BC08-1D85098BD299"><p><xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita#GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69/GUID-751AB9E9-B8C3-5BE3-B1D5-C334E68106F2">General parameters</xref>  </p> </li>
+<li id="GUID-207497F2-A83C-5C9B-A781-EE0F170E8424"><p><xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita#GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69/GUID-794DD7D2-83DD-50E8-822C-A8AC0D123EE5"> Screen-specific parameters</xref>  </p> </li>
+<li id="GUID-04044E59-4DFE-5184-BBEC-23A72159A7A6"><p><xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita#GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69/GUID-71ABB4DF-8C79-598F-BD4C-AC1EDD52AA04"> Plug-in specific parameters</xref>  </p> </li>
+<li id="GUID-BD479EED-324F-5702-9B0F-F58C038F680A"><p><xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita#GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69/GUID-635178C9-CFF1-5261-8A72-CC291DE98531">Obsolete and deprecated parameters</xref>  </p> </li>
+</ul> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-9252F124-EF48-54D9-9244-7A7EC30C7E58"><p>Although most of these
+parameters apply to the Window Server in both the ScreenPlay (NGA) variant
+and the non-ScreenPlay (non-NGA) variant, some of them apply to only one variant
+or the other. For the general and screen-specific parameters, there is an
+extra column on the right of the table that shows which variant the parameter
+applies to—<i>both</i> meaning both ScreenPlay and non-ScreenPlay variants. </p> </li>
+<li id="GUID-414DD0AE-E974-54C5-873E-A392F7AF915E"><p>You must specify all
+of the parameters using all uppercase letters. </p> </li>
+</ul> </section>
+<section id="GUID-751AB9E9-B8C3-5BE3-B1D5-C334E68106F2"><title>General parameters</title> <p>These
+are general parameters—that is, parameters that are not screen-specific or
+plug-in specific. Put these parameters first in the <filepath>wsini.ini</filepath> file,
+optionally under the <codeph>[DEFAULT]</codeph> section heading keyword. This
+first section can also include any screen-related parameters that apply to
+all screens. </p> <table id="GUID-D4597226-B6F0-501E-B871-433F3399FA7D">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Parameter </entry>
+<entry>Description </entry>
+<entry>Variant </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>ABSOLUTEFADING</codeph>  </p> </entry>
+<entry><p>If this is specified, the Window Server uses absolute fading. If
+not specified, the Window Server uses counted fading. Counted fading means
+that the Window Server maintains a count in order to support the nesting of <codeph>SetFaded()</codeph> calls.
+This mechanism provides support for nested pop-ups (where pop-ups cause the
+background to fade). </p> <p>In absolute fading, Window Server uses a <codeph>TBool</codeph> value
+instead, so that <codeph>SetFaded(ETrue/EFalse)</codeph> fades or unfades
+the window, regardless of nesting. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ANIMATIONGRACEPERIOD</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Specifies the grace period (in microseconds) for animations. The
+grace period is the length of time that the Window Server waits between animation
+frames. If not specified, the grace period defaults to 35 milliseconds, in
+order to allow other threads to run. The animation grace period is a minimum
+period—the Window Server attempts to go faster if there is nothing else using
+the system. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ATOMICREDRAWS</codeph>  </p> </entry>
+<entry><p>Specify this parameter to enable atomic redraws. </p> <p>Client
+redrawing is often performed as sequences of Begin/End redraw commands. If
+the screen is redrawn when the Window Server is part way through receiving
+the draw commands (that is between the Begin and End commands), the screen
+update is often incomplete or incorrect. This can result in flicker. </p> <p>Enabling
+atomic redraws ensures that the draw commands that are enclosed within the
+Begin/End redraw are drawn onto the screen only when the whole section of
+commands has been received by the Window Server. </p> <p>See <xref href="GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita">Redraw
+Stores</xref> for more information. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BACKGROUNDALPHA</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Sets the alpha value of the default background color for all windows.
+To override this default value for a specific window, set its background color
+explicitly. </p> <p>Specify <i>value</i> as an integer in the range 0–255.
+If this parameter is not specified, the default value is 0xFF or completely
+opaque. </p> <p>Note that a background alpha value of zero means that the
+window background color is not drawn at all. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BACKGROUNDCOLOR</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Sets the default window background color. Enter <i>value</i> in
+the form: <codeph>0x</codeph> <i>rrggbb</i>. For example, the following specifies
+a red default background color: </p> <codeblock id="GUID-7EC633DA-ACF8-5DD4-BF47-C89E744FC0C8" xml:space="preserve">BACKGROUNDCOLOR 0xff0000</codeblock> <p>If
+this parameter is not specified, the default background color is white. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DEBUGBAR</codeph>  </p> </entry>
+<entry><p>Turns on the Window Server’s debug bar. This overlays the normal
+UI and displays information about the current performance and behavior of
+the Window Server over two lines like this: </p> <codeblock id="GUID-679C6692-BE11-508C-A0A6-70418588A3E3" xml:space="preserve">KeyEvents 0; 0; WServ 0.0%; Drawing 0.0%; Reclaimed 0.0%
+RedrawStore size 0B; updates 0/s, pixels 0/s</codeblock> <ul>
+<li id="GUID-BC6FE170-EF64-58DB-BB4E-854C4E37F6AE"><p> <codeph>KeyEvents</codeph> shows
+the total number of key events and scheduler requests. </p> </li>
+<li id="GUID-568A332B-285B-520A-AEA6-51A518570199"><p> <codeph>Wserv</codeph> shows
+the percentage of scheduler activity occupied by the Window Server. </p> </li>
+<li id="GUID-1C57720D-65BA-516D-BADB-F2834891FFE0"><p> <codeph>Drawing</codeph> shows
+the percentage of Window Server activity that is spent drawing. </p> </li>
+<li id="GUID-C3A79CAD-AEB0-5689-8E2A-89DED30EE6EC"><p> <codeph>Reclaimed</codeph> shows
+the percentage of idle time reclaimed by the Window Server to perform drawing
+when there are is no higher priority activity. </p> </li>
+<li id="GUID-EA6E5DBB-7F1D-5CD9-A0F4-A2FE469CC906"><p> <codeph>RedrawStore
+size</codeph> shows the size in bytes of the redraw store—that is, the sum
+of the sizes of every redraw segment of every window currently owned by the
+Window Server. </p> </li>
+<li id="GUID-83A14FFE-5ED8-5C66-9FBB-251A462C9A5A"><p> <codeph>Updates</codeph> shows
+the number of screen updates per second. </p> </li>
+<li id="GUID-7310FFB7-5264-5E5C-9FC5-387920E2AEAF"><p> <codeph>Pixels</codeph> shows
+the number of pixels updated per second—that is, the pixel fill rate. </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISABLEIDLEANIMATION</codeph>  </p> </entry>
+<entry><p>The Window Server attempts to detect when the CPU is under light
+load and allows animations to go faster than the grace period under such circumstances.
+This feature is called <i>idle animation</i> and this parameter disables it. </p> <p>Symbian
+recommends that you always use this parameter, because there are numerous
+very short idle periods during application start up and running animations
+during these short idle periods slows down application start time. </p> <p>This
+parameter has no effect in the ScreenPlay variant, because idle animation
+is disabled by default in the ScreenPlay variant. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DSAANIMATIONGRACEPERIOD</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Specifies the grace period (in microseconds) for Direct Screen Access
+(DSA) animations. The grace period is the length of time that the Window Server
+waits between DSA animation frames. If not specified this defaults to 35 milliseconds,
+in order to allow other threads to run. The animation grace period is a minimum
+period—the Window Server attempts to go faster if there is nothing else using
+the system. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FADEDISABLE</codeph>  </p> </entry>
+<entry><p>Disables fading, which means that calls to the following functions
+have no visual effect on the Window Server's drawing: </p> <ul>
+<li id="GUID-C2F0C04F-E3D2-5EE9-A6DB-B0BDEFE92030"><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-16A33BE1-0181-3E2C-B563-20CD4C52049B"><apiname>RWsSession::SetSystemFaded()</apiname></xref>  </p> </li>
+<li id="GUID-3CA1AA40-2215-517F-B63F-072298B602C8"><p> <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita#GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34/GUID-8B107A61-143A-39D0-B150-A724BDE12487"><apiname>RWindowBase::FadeBehind()</apiname></xref>  </p> </li>
+<li id="GUID-947CA5D2-5227-51DB-A98E-60EADAC9519D"><p> <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita#GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D/GUID-317255C3-6CB3-3608-8104-53706BDBAFA0"><apiname>RWindowTreeNode::SetFaded()</apiname></xref>  </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FINISHEVERYFLUSH</codeph>  </p> </entry>
+<entry><p>Configures the behavior of <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-B83C6F44-1A3E-3959-910C-CBBF66C4A3D4"><apiname>RWsSession::Flush()</apiname></xref>,
+so that the Window Server synchronizes the message buffer and forces the screen
+to update. If this parameter is not present, <codeph>Flush()</codeph> synchronizes
+the message buffer and does not guarantee to present any drawing commands
+within the buffer to the screen. </p> <p>Before the introduction of the Window
+Server improvements known as WSERV2, the Window Server, <codeph>Flush()</codeph> did
+two distinct things: </p> <ol id="GUID-73787DDB-B7B8-55A1-B5A0-D8A6FFD36D67">
+<li id="GUID-9F73848F-F6D7-5A00-B150-208AD0540481"><p>Flushed the session's
+command buffer. </p> </li>
+<li id="GUID-7DAE082F-3768-589E-9287-A0A9D6852C3E"><p>Forced the presentation
+of any drawing commands to the screen. (This is a previously undocumented
+side effect of the old Window Server’s drawing behavior.) </p> </li>
+</ol> <p>By default <codeph>Flush()</codeph> now does the first of these steps
+only. Use <codeph>FINISHEVERYFLUSH</codeph> to cause <codeph>Flush()</codeph> to
+continue the previous behavior. </p> <p>In the improved Window Server (WServ2),
+there are two new methods that explicitly separate these two behaviors. The
+methods are <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-1789E2F1-1291-39DE-861B-1851857A02AB"><apiname>RWsSession::SyncMsgBuf()</apiname></xref> and <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-B431DC60-D11F-3239-8F52-4257B9B0E0C9"><apiname>RWsSession::Finish()</apiname></xref>. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FRAMECAPTURE</codeph>  </p> </entry>
+<entry><p>This parameter is for use when debugging render stage plug-ins.
+When specified, the Window Server captures frame bitmaps and saves them in <filepath>frame_&lt;timestamp&gt;.mbm</filepath> files.
+These are located in the <filepath>epoc32\winscw\c</filepath> folder for winscw
+and <filepath>e:\storyboard\</filepath> for H4 boards. </p> <p>This option
+takes effect only when the Window Server and its plug-ins are compiled with
+the <codeph>USE_DEBUG_FRAME_CAPTURE</codeph> macro defined. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IGNORESWITCHOFFEVENT</codeph>  </p> </entry>
+<entry><p>When specified and no shutdown manager is registered, all events
+that the Window Server passes to clients as OFF events are ignored. These
+events are <codeph>EEventSwitchOff</codeph>, <codeph>EEventCaseClosed</codeph>, <codeph>EEventKeySwitchOff</codeph> or <codeph>EEventRestartSystem</codeph>. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYCLICKPLUGIN</codeph>  <i>filename</i>  </p> </entry>
+<entry><p>The Window Server attempts to load the named key or pointer click
+plug-in DLL. If this fails or if this keyword does not appear, a plug-in is
+not used and key and pointer clicks are not enabled. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYCLICKPLUGINFIXED</codeph>  </p> </entry>
+<entry><p>Stops Window Server clients from removing or changing the key or
+pointer click plug-in. Hardware manufacturers can use this keyword to disallow
+key or pointer clicks or force only one plug-in to be used. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LOG</codeph>  <i>string</i>  </p> </entry>
+<entry><p>Specifies the type of logging that is required. Loads one of the
+three logging DLLs, as specified by <i>string</i>. Possible values of <i>string</i> are: </p> <ul>
+<li id="GUID-901E83F0-F21E-56C2-AD2D-BAE394BF80C9"><p> <codeph>FL</codeph> —
+log to file </p> </li>
+<li id="GUID-AE205ACC-2A13-5950-B058-B552DA238B54"><p> <codeph>SR</codeph> —
+log to the serial port (MARM only) </p> </li>
+<li id="GUID-5FF305A9-1D2D-55CC-A970-3ED9EB9536BD"><p> <codeph>WN</codeph> —
+log to another WIN32 window (emulator only) </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LOGENABLE</codeph>  <i>value</i>  </p> </entry>
+<entry><p>If specified, enables logging from boot-up. You can optionally specify
+a value that must be one of the following: </p> <ul>
+<li id="GUID-A365CDBE-A9E7-5D7B-8E0A-7A3835E0D04E"><p>9 — Enables limited
+logging of Window Server messages, of the following types: loading of animation
+DLLs, application panics and all messages from the client side. </p> </li>
+<li id="GUID-C2DAFB31-E51C-58ED-B3D3-6123F3B96E46"><p>5 — Enables intermediate
+logging. This includes all the messages logged using limited logging, and
+adding and removing Window Server clients. </p> </li>
+<li id="GUID-3B61EC1F-2AA5-5EE6-891E-AA80BEA317E1"><p>1 — Enables full logging
+of all messages to and from the Window Server. This is the most commonly used
+option and is the default. </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LOGP</codeph>  <i>filespec</i>  </p> </entry>
+<entry><p>The fully qualified file name of the output log file. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MEMORYRESERVE</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Sets the amount of memory that the Window Server's memory manager
+holds in reserve for use during critical sequences where the use is expected
+to be temporary. The memory reserve is not used for memory allocation failures
+and is currently used by the Window Server’s inner composition loop. </p> <p>If
+this parameter is not specified, the memory manager allocates 1024 bytes of
+memory to hold as its reserve. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MULTIFOCUSPOLICY</codeph>  </p> </entry>
+<entry><p>Selects the Window Server multi-focus policy. This means that one
+window group on each screen all have focus. When this policy is not set, only
+one window group on one screen has focus. </p> <p>When a window group has <i>focus</i>,
+it means that the last focus event it received was a focus gained event rather
+than a focus lost event. The window group with focus is always the front-most
+focusable window group on its screen. </p> <p>This setting does not change
+the key event channeling policy. Key events are sent only to the focused window
+group on the focused screen (unless they are captured by another window). </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NOBLANKSCREEN</codeph>  </p> </entry>
+<entry><p>Use this keyword if, at boot time, you need to delay blanking the
+screen until the shell has started a session with the Window Server. </p> <p>Note
+that you specify the name of the shell by using the <codeph>STARTUP</codeph> parameter. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NONREDRAWAGELIMIT</codeph>  <i>duration</i>  </p> </entry>
+<entry><p>The lifetime in microseconds of non-redraw segments within the <xref href="GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita">redraw stores</xref> in the
+non-ScreenPlay variant only. </p> <p>Non-redraw drawing (that is, drawing
+commands that are issued outside of Begin/End Redraw) are placed into a special
+non-redraw segment in the redraw store. To prevent these non-redraw segments
+from growing indefinitely as non-redraw commands are added to them, a limit
+is imposed on their life time within the redraw store. When adding non-redraw
+commands to the redraw store, the Window Server: </p> <ul>
+<li id="GUID-0257C4CF-7DCB-5F67-9A22-5F59347992A2"><p>checks the ages of the
+non-redraw segments within the store </p> </li>
+<li id="GUID-B923ED52-EF59-520F-9DC1-1C564858F12C"><p>discards any old non-redraw
+segments and if necessary requests a client-side redraw </p> </li>
+<li id="GUID-D0D64A40-8E46-5153-97EA-75C929C9B2E0"><p>creates a new non-redraw
+segment for new non-redraw commands. </p> </li>
+</ul> <p>The <codeph>NONREDRAWAGELIMIT</codeph> parameter allows for the customization
+of the age limit. If not defined, a default of 1,000,000 microseconds or 1
+second is used. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ONINACTIVE</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Specifies what happens when there is no key or pointer activity
+for a period of time. Possible values are: </p> <ul>
+<li id="GUID-051742BE-A01D-5C50-8C7D-2F0A494B3B7E"><p> <codeph>STOPANIMATION</codeph> —
+this means continue client-side redraws and stop all server-side drawing.
+This is the most obvious option. </p> </li>
+<li id="GUID-77282032-A0F8-5264-A03B-137C9B56B90D"><p> <codeph>STOPALLDRAWING</codeph> —
+this stops both client-side and server-side drawing. </p> </li>
+<li id="GUID-5C4F0C0C-6200-5F0D-B314-30717D859655"><p> <codeph>IGNORE</codeph> —
+this means ignore the inactivity and draw as normal. </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PLUGINS</codeph>  <i>string</i>  </p> </entry>
+<entry><p>Specifies the complete list of plug-ins that the Window Server’s
+plug-in manager is to load. For each plug-in that you specify, create a separate
+section in the <filepath>wsini.ini</filepath> file to specify its details
+(such as UID and type). See <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita#GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69/GUID-71ABB4DF-8C79-598F-BD4C-AC1EDD52AA04">Plug-in
+Parameters</xref> for more information. </p> <p>If not specified, the plug-in
+manager loads the default plug-ins. In the ScreenPlay variant, these are <i>flickerbuffer</i> and <i>display</i>.
+In the non-ScreenPlay variant, they are <i>flickerbuffer</i>, <i>std </i> and <i>defaultfader</i>. </p> <p>If
+the default plug-ins are required, include them in the plug-in list. For example,
+in ScreenPlay, the following instructs the plug-in manager to load a custom
+plug-in called <i>newplugin</i> in addition to the default plug-ins: </p> <codeblock id="GUID-E4314976-ABD7-597B-883E-567AB824BB00" xml:space="preserve">PLUGINS flickerbuffer display newplugin</codeblock> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PROTECTEDKEY</codeph>  <i>keyvalue</i>  </p> <p> <codeph>PROTECTEDKEYWINDOWNAME</codeph> <i>windowgroupname</i>  </p> </entry>
+<entry><p>'Protects' a key, so that it can only be captured (by calling <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-433AD95D-5F34-3AB2-A077-E9AED2CF0AED"><apiname>RWindowGroup::CaptureKey()</apiname></xref> or <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-7FCBF67B-8E89-39D2-8E3E-8F4606C06F66"><apiname>RWindowGroup::CaptureKeyUpAndDowns()</apiname></xref>) by the window group identified by the <codeph>PROTECTEDKEYWINDOWNAME</codeph> parameter. </p> <p>Only
+one key can be protected in this way. This means that these two parameters
+must not appear more than once in the <filepath>wsini.ini</filepath> file. </p> <p>When
+a client attempts to capture a standard key event (rather than a key up or
+down event), <i>keyvalue</i> is matched against the key code (as defined in
+the <xref href="GUID-B67B6ED5-6C8F-3B36-934C-B47A109A515F.dita"><apiname>TKeyCode</apiname></xref> enum in <filepath>e32keys.h</filepath>) to
+see if the key is protected or not. </p> <p>When a client attempts to capture
+an up or down key event, <i>keyvalue</i> is matched against the scan code
+(as defined in the <xref href="GUID-4D92CE24-E651-3584-BDE0-F26046B4175B.dita"><apiname>TStdScanCode</apiname></xref> enum in <filepath>e32keys.h</filepath>)
+to see if the key is protected or not. </p> <p>Note that for many keys, the
+scan code and key code are the same, so this mechanism can by used to protect
+against the capture of both standard events and up/down events for these keys. </p> <p>You
+can specify <i>keyvalue</i> as a hexadecimal or decimal number. </p> <p> <i>windowgroupname</i> is
+the window group name (see <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-FD28C803-2C90-3B73-91C5-869A85A2FEE8"><apiname>RWindowGroup::SetName()</apiname></xref>) or
+a substring of it. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>REBOOT</codeph>  <i>value</i>  </p> </entry>
+<entry><p>The shell reboot mode. The following values are defined: </p> <ul>
+<li id="GUID-64F0EE9D-6E79-5BCA-932E-E68843037FA8"><p>0 — the Window Server
+tries to restart the shell as soon as the shell dies or exits. </p> </li>
+<li id="GUID-9F6B4509-2948-52E8-98AB-9E1D0C9E9608"><p>1 — the Window Server
+tries to restart the shell only if all other Window Server clients have exited.
+The Window Server detects an application exiting by its Window Server session
+being closed. However, in rare cases, an application may not have a Window
+Server session, or it may close its session without exiting. In such cases,
+the shell may restart even though some applications are still running. </p> </li>
+<li id="GUID-BA62D1DA-BC1C-5F1F-B225-077D3F20FEB0"><p>2 — the Window Server
+shuts down the machine as soon as the shell dies or exits — <b>for use during
+development only</b> . </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>REDRAWGRACEPERIOD</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Specifies the grace period (in microseconds) for redraws within
+the Window Server. The redraw grace period is the length of time the Window
+Server waits before performing a redraw. If not specified, the grace period
+defaults to zero, which means that the Window Server endeavors to perform
+redraws immediately. The redraw grace period is a minimum time—the Window
+Server attempts to go faster if there is nothing else using the system. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>REPEATROLLOVER</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Specify this parameter with value of 1 in order to allow key repeat
+rollovers. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ROOTBACKGROUNDALPHA</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Sets the alpha value of the background color of the root window
+independently from the alpha value of the default background color of other
+windows. In the non-ScreenPlay variant, you can use this to make the initial
+background in the Window Server frame buffer transparent. If any windows in
+front are also transparent, this may lead to transparent pixels in the Window
+Server frame buffer at the end of rendering. This provides a technique for
+showing effects (such as particle effects) behind the Window Server frame
+buffer. </p> <p>This parameter is not used in the ScreenPlay variant, because
+this and similar use cases can be achieved by adding a background surface
+to a window. This results in that window's area in the frame buffer (now called
+the UI surface) being transparent. </p> <p>Specify <i>value</i> as an integer
+in the range 0–255. If this parameter is not specified, the alpha value of
+the root window’s background color is set to the alpha value of the default
+background color—that is, the value set by <codeph>BACKGROUNDALPHA</codeph> or <codeph>0xFF</codeph>,
+if it is not specified. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ROOTBACKGROUNDCOLOR</codeph>  <i>value</i>  </p> </entry>
+<entry><p>The background color of the root window, if you want to set it independently
+from the default background color of other windows. </p> <p>If not used, the
+root window’s background color is set to the default background window value—that
+is, the value set by <codeph>BACKGROUNDCOLOR</codeph> or <codeph>KRgbWhite</codeph> if
+it is not specified. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SHELLCMD</codeph>  <i>string</i>  </p> </entry>
+<entry><p>Specifies the command line argument to pass when starting the shell.
+This is similar to DOS command parameters under Microsoft Windows. </p> <p>Defaults
+to an empty string. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>STARTUP</codeph>  <i>string</i>  </p> </entry>
+<entry><p>Specifies the name of the shell to use. Defaults to <filepath>shell</filepath>. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-794DD7D2-83DD-50E8-822C-A8AC0D123EE5"><title>Screen-specific
+parameters</title> <p>These parameters are screen specific and you can specify
+them separately for each screen. Do this by creating a section for each screen
+and use the <codeph>[SCREEN</codeph> <i>n</i> <codeph>]</codeph> keyword to
+indicate the start of each section. </p> <p>In a single-screen device, put
+these parameters in the first (<codeph>[DEFAULT]</codeph>) section and not
+in a separate section. In a multi-screen phone, you can put any screen-related
+parameters that apply to all screens in the first (<codeph>[DEFAULT]</codeph>)
+section. </p> <p>Each screen can have several <i>screen modes</i> (such as
+portrait and landscape), identified by a zero-based index. Some of the screen-specific
+parameters relate to the screen mode. For example, in the non-ScreenPlay variant
+you can use the <codeph>SCR_LEFT</codeph>, <codeph>SCR_TOP</codeph>, <codeph>SCR_XSCALE</codeph> and <codeph>SCR_YSCALE</codeph> parameters
+to change the origin of top-level windows and a scaling factor for each mode
+of every screen. Some of these parameters are not supported or work differently
+in ScreenPlay. See <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic
+Resolution Switching</xref> for more information. </p> <table id="GUID-4FF083DC-0AF1-56F9-A8BE-7F1E0F510359">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Keyword/Parameter </entry>
+<entry>Description </entry>
+<entry>Variant </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>[SCREEN</codeph> <i>n</i> <codeph>]</codeph>  </p> </entry>
+<entry><p>A <filepath>wsini.ini</filepath> file may be divided into sections
+to support phones with multiple screens. Each section that is preceded by
+this keyword contains the parameters whose value applies to one screen only. </p> <p>The <i>n</i> value
+is a number that indicates which screen the section applies to. For instance, <codeph>[SCREEN0]</codeph> is
+the first screen, <codeph>[SCREEN1]</codeph> the second. </p> <p>If the device
+does not support multiple screens, this keyword should not appear in the <filepath>wsini.ini</filepath> file. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AUTOCLEAR</codeph>  <i>value</i>  </p> </entry>
+<entry><p>When an <codeph>RWindow</codeph> is manipulated by an application,
+this parameter determines whether the invalid region is cleared to its background
+color (as set by either variant of <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-6608DEE5-8F59-33B4-A998-73C23FDBBFAA"><apiname>RWindow::SetBackgroundColor()</apiname></xref>)
+before being redrawn. The possible values are: </p> <ul>
+<li id="GUID-A2E47136-EB18-5DE5-AEF9-FC5C6090A487"><p>0 — the background is
+not cleared, even if a background color has been set. This is for use in debugging
+only. </p> </li>
+<li id="GUID-2CC9C730-33F8-5F8E-9439-358F66555DCD"><p>1 — the default. The
+background is cleared if a background color has been set, but not if no background
+color has been set. </p> </li>
+</ul> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BACKLIGHTCONTROL</codeph>  </p> </entry>
+<entry><p>Enables calls to <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-F23C4215-C8B3-3E4D-9CC8-4D56BEC1E503"><apiname>CWsScreenDevice::SetBackLight()</apiname></xref>.
+If this parameter is not specified, this function returns <codeph>KErrPermissionDenied</codeph>. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BLANKSCREENONROTATION</codeph>  </p> </entry>
+<entry><p>Causes the Window Server to blank the screen after changing the
+orientation. If this parameter is not specified, screen content persists when
+the orientation changes. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BLTOFFSCREENBITMAP</codeph>  </p> </entry>
+<entry><p>If this is specified in the non-ScreenPlay variant, the invalid
+region of the offscreen bitmap is not set to white or the background color,
+but is instead copied from the screen. </p> <p>This might reduce flicker if
+not all the pixels in the invalid region are redrawn. Users should be aware,
+however, that fading and shadowing are applied when copying from the off-screen
+buffer to the screen. It is possible that some pixels may be doubly shadowed
+or doubly faded when using this keyword. Another possible side-effect is that
+artefacts of sprites may get left behind. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CHANGETRACKING</codeph>  </p> </entry>
+<entry><p>Changes the mode of the Window Server rendering loop from the default
+dirty-rectangle mode to change-tracking mode. Typically change-tracking mode
+is used only when a transition effects (TFX) render stage is in use, which
+builds up its own visuals stores. See <xref href="GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita">Window
+Server Rendering Loop</xref> for more information. </p> </entry>
+<entry><p>ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CHROMAKEYCOLOR</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Specifies the chroma key color that the composition engine considers
+transparent for chroma keying transparency. The specified color must not be
+used in images on the layer other than to indicate transparency. </p> <p>Enter
+the value in the form <codeph>0xff</codeph> <i>rrggbb</i>, where <i>rr</i> is
+the hex value for red, <i>gg</i> for green and <i>bb</i> for blue. For example: </p> <codeblock id="GUID-3693500F-FCBE-53FC-B74B-899CA1105049" xml:space="preserve">CHROMAKEYCOLOR 0xFF123456</codeblock> <p>If
+this parameter is not specified, the default value is 0. </p> <p>Note: Chroma
+key transparency is not used in <codeph>EColor16MA</codeph> and <codeph>EColor16MAP</codeph> display
+modes. This is because they are RGBA modes and therefore have an alpha value
+in addition to the RGB value. </p> </entry>
+<entry><p>ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DEBUGOSB</codeph>  </p> </entry>
+<entry><p>Enables you to use Win32-dependent code for debugging the Window
+Server offscreen buffer and UI surface for each screen on the emulator. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DP_SCALING</codeph>  <i>string</i>  </p> </entry>
+<entry><p>This is used by the ScreenPlay render stage plug-ins that are supplied
+in the Window Server Plugins component. This parameter may therefore not be
+used—for example, if the supplied render stages are replaced. When it is used,
+it controls the type of scaling that the render stages perform. The value
+can be one of the following: </p> <ul>
+<li id="GUID-B8BC842B-CC3F-5E8E-8460-8BEE036A213C"><p>integer — this allows
+only virtual resolutions that are integer divisors of the physical resolution
+and sets a limit of four; that is, ½, 1/3 and 1/4. For example, for a real
+resolution dimension of 720 pixels, virtual resolution dimensions of 360,
+240 and 180 are allowed. </p> </li>
+<li id="GUID-DBE122E0-E894-5C43-B724-67AC96A43A99"><p>isotropic — this allows
+any scaling factor, not only integer ones. However, the horizontal and the
+vertical scaling factors are the same. </p> </li>
+<li id="GUID-210D6671-E0CF-51CF-B5A6-18A1B8641A77"><p>anisotropic — this allows
+any scaling factor and does not restrict the relationship between the horizontal
+and vertical scaling factors. </p> </li>
+</ul> <p>Any other value is taken to mean no scaling. </p> </entry>
+<entry><p>ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FADER</codeph>  <i>string</i>  </p> </entry>
+<entry><p>Specifies a custom fader plug-in to be used. If not specified the
+default fader plug-in implementation is used. This simply performs a BitGDI <codeph>FadeArea</codeph> when
+windows are faded. </p> <p>In the non-ScreenPlay variant, handset manufacturers
+can create custom fader plug-ins to create different fading effects. (In the
+ScreenPlay variant, fading effects can be created using render stage plug-ins.)
+Fader plug-ins must also be specified using the <codeph>PLUGINS</codeph> parameter
+in order to be loaded. </p> <p>Fader plugins are specified per screen so it
+is possible to use different fading effects on different screens. Here is
+a simplified example: </p> <codeblock id="GUID-42879770-B76E-5F15-8EC0-ACA6ACC6AB93" xml:space="preserve">PLUGINS flickerbuffer std defaultfader customfaderA customfaderB
+SCREEN[0]
+FADER customfaderA
+SCREEN[1]
+FADER customfaderB
+</codeblock> <p> <b>Note</b>: Fading is essentially disabled in the non-ScreenPlay
+variant if a custom fader is not specified using the <codeph>FADER</codeph> parameter
+and the <codeph>PLUGINS</codeph> command is overridden so that the default
+fader plugin is not loaded. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FLICKERBUFFERMODE</codeph>  <i>value</i>  </p> </entry>
+<entry><p>The <codeph>TDisplayMode</codeph> of the flicker buffer if one is
+in use. If not specified, the flicker buffer has the same color depth as the
+screen. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NUMSCREENMODES</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Removes the requirement that screen mode indexes must be consecutive.
+This enables UI factories to implement sparse index schemes and allows the
+screen mode index to have a particular meaning within the context of a UI. </p> <p>The <i>value</i> is
+a positive integer which specifies the highest screen mode index that is defined
+in the <filepath>wsini.ini</filepath> file. </p> <p>For example, in the following
+example, the last 3 lines would be ignored, unless <codeph>NUMSCREENMODES
+3</codeph> was specified beforehand: </p> <codeblock id="GUID-90042EF5-30BC-5864-A310-58043BE8A190" xml:space="preserve">SCR_WIDTH1 800
+SCR_HEIGHT1 600
+SCR_ROTATION1 180
+SCR_WIDTH3 240
+SCR_HEIGHT3 160
+SCR_ROTATION3 270</codeblock> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RENDERSTAGES</codeph>  <i>string</i>  </p> </entry>
+<entry><p>Specifies the type and order of the render stages to be used by
+the Window Server. </p> <p>If not defined, this defaults to <codeph>flickerbuffer
+                  display</codeph> in the ScreenPlay variant and <codeph>flickerbuffer
+std</codeph> in the non-ScreenPlay variant. This means that by default, the
+Window Server pipes its drawing through the flicker buffer render stage and
+then on to the <i>display</i> (called <i>std</i> in the non-ScreenPlay variant)
+render stage, which draws it to the screen. </p> <p>The render stages are
+plug-ins and you must also specify them in the <codeph>PLUGINS</codeph> parameter
+in order to be loaded. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCREENMODE COLOR</codeph><i>value</i> ¦ <codeph>GRAY</codeph><i>value</i> </p> </entry>
+<entry><p>Specifies the display mode to be used for the screen device. The <codeph>COLOR</codeph> or <codeph>GRAY</codeph> prefix
+plus <i>value</i> must correspond to a member of the <xref href="GUID-19EFD25B-30D5-3BC3-80FB-2E4769203EDF.dita"><apiname>TDisplayMode</apiname></xref> enumerated
+type but without the initial <codeph>E</codeph>. </p><p>For example, <codeph>SCREENMODE
+COLOR16M</codeph> corresponds to <codeph>EColor16M</codeph> and gives a display
+mode of 16 million colors.</p> <p>If this parameter is not specified,
+or a screen device cannot be created in the specified depth, the default is
+the highest color mode available, up to <codeph>Color16MAP</codeph>. </p><p> <b>Note</b>:
+This parameter replaces the deprecated <codeph>WINDOWMODE</codeph> parameter. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_LEFT</codeph> <i>n</i>  <i>value</i>  </p> </entry>
+<entry><p>The horizontal offset in pixels for a particular screen mode. Moves
+the screen's contents to the left. By default this is zero. </p> <p> <i>n</i> is
+an integer greater than zero that identifies the screen mode. <i>value</i> is
+the offset in pixels (greater than zero). </p> <p>In ScreenPlay, this parameter
+may be ignored (or used as a minimum margin hint) by the render stage chain,
+in order to position the screen mode more appropriately. However, it may be
+important to specify the offset for screen modes hosting legacy applications
+because it is also used for the DSA buffer for backwards compatibility reasons.
+See <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic Resolution
+Switching</xref> for more information. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_TOP</codeph> <i>n</i>  <i>value</i>  </p> </entry>
+<entry><p>The vertical offset in pixels for a particular screen mode. Moves
+the screen's contents upwards. By default this is zero. </p> <p> <i>n</i> is
+an integer greater than zero that identifies the screen mode. <i>value</i> is
+the offset in pixels (greater than zero). </p> <p>In ScreenPlay, this parameter
+may be ignored (or used as a minimum margin hint) by the render stage chain,
+in order to position the screen mode more appropriately. However, it may be
+important to specify the offset for screen modes hosting legacy applications
+because it is also used for the DSA buffer for backwards compatibility reasons.
+See <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic Resolution
+Switching</xref> for more information. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_XSCALE</codeph> <i>n</i>  <i>factor</i> </p> </entry>
+<entry><p>The horizontal screen scaling factor for a particular screen mode. </p> <p> <i>n</i> is
+the screen mode and <i>factor</i> is the scaling factor (a positive integer).
+1 (the default) means no scaling. For example, specifying the following means
+that in the first screen mode, everything is drawn four times larger: </p> <codeblock id="GUID-51F8C455-837F-5664-A691-AB1EEAC7CF32" xml:space="preserve">SCR_XSCALE1 2
+SCR_YSCALE1 2</codeblock> <p>In other words, drawing to logical pixel (0,0)
+causes physical pixels (0,0), (0,1), (1,0) and (1,1) to change. </p> <p>Note
+that on the emulator, screen scaling only works if the display mode is <codeph>Color256</codeph>. </p> <p>If
+an offset is specified (using <codeph>SCR_LEFT</codeph> or <codeph>SCR_TOP</codeph>)
+as well as a scaling factor, the offset is applied in unscaled coordinates.
+For example, suppose the following values are specified: </p> <codeblock id="GUID-7DF011F5-C559-5E85-8F99-77FA5FD9DB37" xml:space="preserve">SCR_LEFT1 5
+SCR_XSCALE1 2</codeblock> <p>This means that the mapping between logical and
+physical pixels for the first screen mode is as follows: </p> <p><table id="GUID-696B38E9-CED3-58BF-A512-99586644F71E">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Logical</b>  </p> </entry>
+<entry><p> <b>Physical</b>  </p> </entry>
+</row>
+<row>
+<entry><p>x=0 </p> </entry>
+<entry><p>x=5,6 </p> </entry>
+</row>
+<row>
+<entry><p>x=1 </p> </entry>
+<entry><p>x=7,8 </p> </entry>
+</row>
+<row>
+<entry><p>x=2 </p> </entry>
+<entry><p>x=9,10 </p> </entry>
+</row>
+<row>
+<entry><p>x=-1 </p> </entry>
+<entry><p>x=3,4 </p> </entry>
+</row>
+<row>
+<entry><p>x=-2 </p> </entry>
+<entry><p>x=1,2 </p> </entry>
+</row>
+<row>
+<entry><p>x=-3 </p> </entry>
+<entry><p>x=0 </p> </entry>
+</row>
+<row>
+<entry><p>x=45 </p> </entry>
+<entry><p>x=95,96 </p> </entry>
+</row>
+<row>
+<entry><p>x=46 </p> </entry>
+<entry><p>x=97,98 </p> </entry>
+</row>
+<row>
+<entry><p>x=47 </p> </entry>
+<entry><p>x=99 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </p> <p>In this example, there are 51 addressable logical pixels. </p> <p>See
+also <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-F442A58F-E559-3308-B6D9-9675447ED223"><apiname>CWsScreenDevice::GetScreenModeScale()</apiname></xref>, <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-A8BD6475-3EC1-380D-88F9-AFE6B5DAA9E8"><apiname>CWsScreenDevice::GetCurrentScreenModeScale()</apiname></xref>  </p> <p>This
+parameter is not used in ScreenPlay, because the UI pixel buffers (in the
+full UI area) are not scaled relative to the application's view. Instead the
+full UI area is mapped to the full composition/display area, if necessary
+using a virtual resolution. This provides a better facility and is completely
+under the control of the render stage chain rather than Window Server. See <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic Resolution Switching</xref> for
+more information. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_YSCALE</codeph> <i>n</i>  <i>factor</i> </p> </entry>
+<entry><p>The vertical screen scaling factor for a particular screen mode.
+See <codeph>SCR_XSCALE</codeph> for a description. </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_ROTATION</codeph> <i>n rotations</i>  </p> </entry>
+<entry><p>Specifies a list of screen rotations for a particular screen mode. </p> <p>The <i>n</i> value
+is a positive integer which corresponds to a particular screen mode. </p> <p>The <i>rotations</i> value
+is a comma separated list that specifies, in degrees, the rotation values
+available for the given screen mode. For example: </p> <codeblock id="GUID-1258D3A3-F067-57E1-AF1C-38206D74D1E7" xml:space="preserve">SCR_ROTATION2 90,270</codeblock> <p>Note: While rotation is supported on the Symbian platform, it requires support
+in the UI to render screen furniture correctly. For example, Techview shows
+proof-of-concept rotation to profile screens. However, it is designed with
+a landscape orientation, which means that in other orientations it does not
+render the toolbar, and some menus are truncated. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_WIDTH</codeph> <i>n</i>  <i>width</i>  </p> </entry>
+<entry><p>The screen width in pixels for a particular screen mode. The screen
+mode is set by <i>n</i> and <i>width</i> is the width in pixels. </p> <p>For
+example, the following sets a width of 240 pixels for screen mode 2: </p> <codeblock id="GUID-81982D9B-993A-5A69-B1D0-C894395C5D32" xml:space="preserve">SCR_WIDTH2 240</codeblock> <p>In
+the non-ScreenPlay variant, this value should be the same as, or smaller than,
+the actual screen size as defined by the screen driver, after taking into
+account the rotation, the top-left offset and any scaling. </p> <p>In ScreenPlay,
+to define a dynamic screen mode, set this and <codeph>SCR_HEIGHT</codeph> <i>n</i> to
+-1. See <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic Resolution
+Switching</xref> for more information. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_HEIGHT</codeph> <i>n</i>  <i>height</i> </p> </entry>
+<entry><p>The screen height in pixels for a particular screen mode. The screen
+mode is set by <i>n</i> and <i>height</i> is the height in pixels. </p> <p>In
+the non-ScreenPlay variant, this value should be the same as or smaller than
+the actual screen size as defined by the screen driver, after taking into
+account the rotation, the top-left offset and any scaling. </p> <p>In ScreenPlay,
+to define a dynamic screen mode, set this and <codeph>SCR_WIDTH</codeph> <i>n</i> to
+-1. See <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic Resolution
+Switching</xref> for more information. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_TWIP_WIDTH</codeph> <i>n</i> <i>width</i>  </p> </entry>
+<entry><p>The screen width in twips for a particular screen mode. The screen
+mode is set by <i>n</i> and <i>width</i> is the width in twips. </p> <p>For
+dynamic screen modes in ScreenPlay, do not specify the size in twips if you
+want the current resolution's size in twips to be used. If you do specify
+the size in twips for a dynamic screen mode, it overrides the current resolution
+setting when you call <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-167EAE21-C9D5-3B54-BA3F-F2F83B2FD073"><apiname>CWsScreenDevice::SizeInTwips()</apiname></xref>. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SCR_TWIP_HEIGHT</codeph> <i>n</i> <i>height</i>  </p> </entry>
+<entry><p>The screen height in twips for a particular screen mode. The screen
+mode is set by <i>n</i> and <i>height</i> is the height in twips. </p> <p>For
+dynamic screen modes in ScreenPlay, do not specify the size in twips if you
+want the current resolution's size in twips to be used. If you do specify
+the size in twips for a dynamic screen mode, it overrides the current resolution
+setting when you call <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-167EAE21-C9D5-3B54-BA3F-F2F83B2FD073"><apiname>CWsScreenDevice::SizeInTwips()</apiname></xref>. </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SIZE_MODE</codeph> <i>n</i>  <i>value</i>  </p> </entry>
+<entry><p>The screen mode enforcement for a particular screen mode. This is
+read when the system starts up. The screen mode is set by <i>n</i> and <i>value</i> is
+an integer corresponding one of the screen mode enforcement flags defined
+in TScreenModeEnforcement. If it is not set, a value of 0 (<codeph>ESizeEnforcementNone</codeph>)
+is used. </p> <p>See also: <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-0E9358D4-023D-3B04-B0B8-D974AAA50D73"><apiname>CWsScreenDevice::ScreenModeEnforcement()</apiname></xref>, <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-183BF89D-92A6-3E8A-930B-ADCFB1A03A1B"><apiname>CWsScreenDevice::SetScreenModeEnforcement()</apiname></xref>  </p> </entry>
+<entry><p>Both </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-71ABB4DF-8C79-598F-BD4C-AC1EDD52AA04"><title>Plug-in specific
+parameters</title> <p>These parameters relate to Window Server plug-ins. For
+each plug-in, create a separate section in the <filepath>wsini.ini</filepath> file.
+Specify the plug-in name in square brackets (for example, <codeph>[MYPLUGIN]</codeph>)
+to indicate the start of the section. The plug-ins must also be specified
+in the first or <codeph>[DEFAULT]</codeph> section by using the <codeph>PLUGINS</codeph> parameter. </p> <p>The
+plug-in specific parameters are the same in both ScreenPlay and non-ScreenPlay
+variants. </p> <table id="GUID-B42CA314-CAB4-5FCD-8DB1-4007A1ED2084">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Parameter </entry>
+<entry>Description </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>[</codeph> <i>name</i> <codeph>]</codeph>  </p> </entry>
+<entry><p>Specifies the name of the plug-in and indicates the start of a section
+that relates to that plug-in. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ID</codeph>  <i>value</i>  </p> </entry>
+<entry><p>The UID of the plug-in DLL. The Window Server plug-in framework
+uses this to search for the DLL to load. For example, if the <codeph>ID</codeph> is
+12345678, the Window Server searches for a DLL called <i>12345678.dll</i>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DATA</codeph>  <i>value</i>  </p> </entry>
+<entry><p>Can be used to pass arbitrary data to the plug-in. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TYPE</codeph>  <i>value</i>  </p> </entry>
+<entry><p>The type of the plug-in. For example, <codeph>CTestRenderStage</codeph>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-635178C9-CFF1-5261-8A72-CC291DE98531"><title>Obsolete and
+deprecated parameters</title> <p>The following table lists <filepath>wsini.ini</filepath> file
+parameters that were used in earlier versions of Symbian but which are now
+obsolete, deprecated or should not be used. Documentation for these parameters
+can be found in earlier versions of the Symbian Developer Library. </p> <table id="GUID-0E0BE51D-A1A2-5ABC-892D-FCB94DB2D2DA">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Parameter</entry>
+<entry>Status</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>ALLOWPARTIALREDRAWSTORING</codeph>  </p> </entry>
+<entry><p>Obsolete </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FLICKERFREEREDRAW</codeph>  </p> </entry>
+<entry><p>Obsolete </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NOREDRAWSTORING</codeph>  </p> </entry>
+<entry><p>Obsolete </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>OPT_LEVEL</codeph>  </p> </entry>
+<entry><p>Planned for deprecation in S^4. Do not change the default value
+(1). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PRESERVESTOREDCOMMANDS</codeph>  </p> </entry>
+<entry><p>Obsolete </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>REMOVEFADINGONFOCUSGAIN</codeph>  </p> </entry>
+<entry><p>Deprecated </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TRANSPARENCY</codeph>  </p> </entry>
+<entry><p>Obsolete </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>WINDOWMODE</codeph> <codeph>COLOR</codeph> <i>value</i> ¦<codeph>GRAY</codeph> <i>value</i> </p> </entry>
+<entry><p>Deprecated </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-152B59F6-E7F1-4A32-A5EA-E07B0C42EE58"><title>Example</title> <p>This
+is an example of a <filepath>wsini.ini</filepath> file that configures an
+emulator with two screens for the non-ScreenPlay variant. The comments refer
+to the notes below. </p> <codeblock id="GUID-6B545480-53FE-5AF7-BB3A-2FB085CF7008" xml:space="preserve">LOG FL        // 1
+LOGP \DATA\WSERV.LOG
+LOGENABLE 9
+REBOOT 1
+STARTUP WSHELL
+KEYCLICKPLUGIN CLICK
+PLUGINS TESTRENDERSTAGE FLICKERBUFFER DISPLAY 
+
+[SCREEN0] // 2
+AUTOCLEAR 1
+SCR_WIDTH1 0
+SCR_HEIGHT1 0
+SCR_ROTATION1 0,180
+SCR_WIDTH2 240
+SCR_HEIGHT2 80
+SCR_ROTATION2 90
+RENDERSTAGES TESTRENDERSTAGE FLICKERBUFFER DISPLAY 
+
+[SCREEN1] // 3
+AUTOCLEAR 0  SCR_WIDTH1 800
+SCR_HEIGHT1 600
+SCR_ROTATION1 180
+SCR_WIDTH2 240
+SCR_HEIGHT2 160
+SCR_ROTATION2 270
+
+[TESTRENDERSTAGE]  // 4
+TYPE CTestRenderStage</codeblock> <p><b>Notes</b>: </p> <ol id="GUID-A85361C9-9D55-539A-A9DE-ADCF9AACA87B">
+<li id="GUID-7A71C13C-9C1E-5955-9B52-82624ABDB26C"><p>The logging parameters
+are not specific to the screen and so are placed in the first section. </p> </li>
+<li id="GUID-7F9D89E8-90B2-5383-8B07-D7266D710E76"><p>These keywords apply
+only to the first screen. </p> </li>
+<li id="GUID-F80D77DF-DC87-5E10-A761-D89BE08FF552"><p>These keywords apply
+only to the second screen. </p> </li>
+<li id="GUID-9250D069-A419-55AC-A471-322CC3443C56"><p>The section for the <codeph>testrenderstage</codeph> plug-in </p> </li>
+</ol> </section>
+</refbody><related-links>
+<link href="GUID-AA02BFA9-E62E-56FC-BF22-8FE092ABD9DA.dita"><linktext>The wsini.ini
+File</linktext></link>
+<link href="GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita"><linktext>Setting Up
+Window Server                 Logging</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D6DD213-1EEC-58D2-8311-7A1AF77960C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1D6DD213-1EEC-58D2-8311-7A1AF77960C1" xml:lang="en"><title>How
+to issue requests</title><shortdesc>This document describes how an active object issues a request for
+a service.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Once the active object has been constructed, a request can be issued. In
+the following code fragment, the active object provides the function <codeph>IssueRequest()</codeph> to
+invoke the encapsulated service function.</p>
+<codeblock id="GUID-9C89E661-AD2E-520A-8E8D-F6D4E667706A" xml:space="preserve">void CExampleActiveObject::IssueRequest()
+    {
+        // Request the service
+    iServiceProvider-&gt; RequestTheService(iStatus);
+        // Indicate request has been issued
+    SetActive();
+    }</codeblock>
+<ul>
+<li id="GUID-8359DED4-C349-51AF-8771-111716DC49B3"><p>Pass the <codeph>TRequestStatus</codeph> object,
+provided by the active objects's <codeph>CActive</codeph> base class, to the
+service function. As part of its processing, the service function sets this
+to <codeph>KRequestPending</codeph>, indicating that the request has been
+issued but is not yet complete.</p> </li>
+<li id="GUID-E3652D72-749D-577D-8ED3-9FCEDCB2CCA9"><p>Set the base class's
+active request flag, using the function <codeph>SetActive()</codeph>, to indicate
+that the active object is currently active. The flag is reset by the active
+scheduler before handling a completed request, or by the active object base
+class as part of the cancellation protocol.</p> </li>
+</ul>
+<section id="GUID-213A1B18-AD81-478A-BC14-F8030F9AF095"><title>Completing a request</title> <p>At some point, the service
+provider's processing completes and it calls <codeph>RThread::RequestComplete()</codeph> passing
+the request status object and the service provider's return code, a value
+other than <codeph>KRequestPending</codeph>. This results in the active object's <codeph>iStatus</codeph> member
+being set to the return code value and a signal that the request is complete.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D836FB1-9BCA-53B5-8334-08CD59064227.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1D836FB1-9BCA-53B5-8334-08CD59064227"><title>What are transactions</title><shortdesc>This topic describes the purpose of transactions when accessing the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <p>The CommsDat API provides the behaviour known as transactions. Tools and applications use transactions to make sure that read and write operations are consistent. </p> <p>More than one application can use the Comms Database at the same time. Transactions implement a lock that allows applications to perform a set of read and write operations safely. In a transaction, other applications cannot change the data. </p> <p>The <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession</apiname></xref> class provides the functions that implement transactions. </p> <p>You must create a session with the Comms Database before you start your first transaction. </p> <p>A transaction starts with a call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::OpenTransactionL()</apiname></xref>, and ends with a call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::CommitTransactionL()</apiname></xref> or <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::RollbackTransactionL()</apiname></xref>. </p> <p>A call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::OpenTransactionL()</apiname></xref> starts a transaction. </p> <p>A call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::CommitTransactionL()</apiname></xref> or <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::RollbackTransactionL()</apiname></xref> ends a transaction. </p> <p>Between the start and end of a transaction, the CommsDat API makes sure that: </p> <ul><li id="GUID-B5C8B70D-00D0-5494-B5F4-F9AACD9EFD82"><p>a write operation started by another session cannot interrupt a read operation or a read/write operation started by this session. </p> </li> <li id="GUID-5B44CDC8-8209-5D0D-AEEB-93561B8BAFC6"><p>all read/write operations succeed after a succesful call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::CommitTransactionL()</apiname></xref>. </p> </li> <li id="GUID-E11D6C59-92AB-54A6-BFFE-D2252ADDC531"><p>all read/write operations are discarded after a successful call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::RollbackTransactionL()</apiname></xref> / </p> </li> <li id="GUID-70FC20C5-F311-5565-84D5-39364B0A44FC"><p>the changes are visible only to the tool or application that started the transaction. To the tool or application, the changes appear to have been written to the Comms Database. </p> </li> <li id="GUID-95086549-87D6-5B4D-B9C1-182512CE0603"><p>other users of the Comms Database cannot see the changes made by a transaction until that transaction is committed. </p> </li> </ul> <p>The CommsDat API cannot make other guarantees. Tools and applications must not make assumptions about the lock mechanism used by the implementation of the Comms Database. </p> <p>Tools and applications must make sure that transactions are short. The Comms Database is a shared resource, and long transactions cause performance problems. The Comms Database implements a timeout to protect the database. The Comms Database can terminate very long transactions. The timeout does not affect the normal operation. </p> <p>It is more efficient to wrap several write operations in one transaction, because data is only written to the Comms Database in a call to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::CommitTransactionL()</apiname></xref>. Tools and applications must not hold a transaction open for longer than is necessary. </p> <p>All read and write functions provided by <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> use transactions internally and are consistent. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D9376CD-3160-5CD8-A138-B94C5F7A50F8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1D9376CD-3160-5CD8-A138-B94C5F7A50F8" xml:lang="en"><title>Using
+MUTABLE_CAST macro</title><shortdesc>This topic explains how to cast away the constant of the counter
+variable.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In the example code below, the class has a simple const getter function <codeph>Var()</codeph>.
+It uses <codeph>MUTABLE_CAST</codeph> to cast away the <codeph>const</codeph> -ness
+of the counter variable <codeph>iGetCounter</codeph>, which allows that variable
+to be changed.</p>
+<codeblock id="GUID-8EA00511-AA50-5401-B13D-D21C4611B22F" xml:space="preserve">class TMutableDemo 
+ {
+public:
+ TMutableDemo(TUint a=0):iVar(a),iGetCounter(0) {};
+ TUint Var() const;
+ 
+private:
+ TUint iVar;
+ __MUTABLE TUint iGetCounter;
+ };
+
+TUint TMutableDemo::Var() const 
+ {
+ MUTABLE_CAST(TMutableDemo*,this)-&gt;iGetCounter++;
+ return iVar; 
+ }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1D9EA46B-CF0B-4779-97F9-5BECA3622777.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1D9EA46B-CF0B-4779-97F9-5BECA3622777" xml:lang="en"><title>Enabling
+MHTTPDataOptimiser for a transaction </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You must use the <codeph>RHTTPTransaction::SetupHTTPDataOptimiser()</codeph> function
+of the <codeph>RHTTPTransaction</codeph> class to enable the <codeph>MHTTPDataOptimiser</codeph> implementation
+for a particular transaction. The following code illustrates the <codeph>RHTTPTransaction</codeph> class: </p>
+<codeblock id="GUID-81EA4D70-7157-5C17-9B3F-B6B197434642" xml:space="preserve">class RHTTPTransaction
+{    
+public:
+……
+
+RHTTPTransaction::SetupHTTPDataOptimiser (MHTTPDataOptimiser&amp; aHTTPOptimiser);
+
+MHTTPDataOptimiser* RHTTPTransaction::HTTPDataOptimiser ();
+
+};</codeblock>
+<p> <b>Note:</b> For more information about how to enable the <codeph>MHTTPDataOptimiser</codeph> implementation
+for a transaction, see the <xref href="GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita#GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231/GUID-F8AA1DE9-791E-5954-84E8-ACCBDFB8D3E3">HTTP
+Whole Message Filter example</xref> section. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1DCA2F4D-ABE6-52A0-AC4E-5AAC1AB5909D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1DCA2F4D-ABE6-52A0-AC4E-5AAC1AB5909D" xml:lang="en"><title>Text and Localization Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Find everything you need to know about the Symbian Text and Localization package in this section.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e166418_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1DE160DB-8054-5522-95F7-4CE5D8FFBF2E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1DE160DB-8054-5522-95F7-4CE5D8FFBF2E"><title>What is Serial Port Contention?</title><shortdesc>Serial Port Contention occurs when ports are not available to open client applications. This topic outlines problems and suggests solutions that Serial Port Contention raises with the C32 Serial Server Client. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Root Server process includes a server which allows access to the serial ports of a device. This server is known as C32 Serial Server and it sits on top of the Kernel <xref href="GUID-FF55CA91-883E-3FC3-849D-6C69EBBD1FE5.dita"><apiname>RBusDevComm</apiname></xref> APIs. The <codeph>RBusDevComm</codeph> APIs provide access to the serial ports. Serial port configuration is important because each device has a specific hardware configuration and serial ports are highly susceptible to contention issues. </p> <section><title>Serial port co-operation and contention</title> <p>The first client to open a serial port effectively owns that port and can then choose to share it or keep exclusive access. This logic can cause problems for C32 Serial server clients. C32 Serial server clients cannot use <codeph>RBusDevComm</codeph> to track clients that use the serial ports directly. In these circumstances, C32 can only see that the port is in use and reports this to all of its clients. </p> <p>To ensure a specified process can access a serial port, do one of the following: </p> <ul><li id="GUID-DA3D42DF-1E53-5811-83D4-79C9747D53C2"><p>Configure the device startup so that the specified process can open the serial port before all other applications. </p> </li> <li id="GUID-F331356C-8C75-5651-8702-FB5E47FBAEF0"><p>Implement the serial port driver so that only the specified process can access it. For example, the driver might require that the client has a particular process ID. </p> </li> </ul> <p>Both of these solutions require an understanding of the serial port hardware and potential client software before the solutions can be implemented. For C32 Serial Server the device boot order is very important since it affects both solutions. </p> <p>The C32 Serial Server is started after Root Server starts. The Root Server and C32 startups are specified in each associated CMI file. They are started early in the boot process, but the serial ports might be ready for use by <codeph>RBusDevComm</codeph> at an earlier stage. If the strategy of guaranteeing port access is based on the client opening the port using the C32 Serial Server, then no other client can open a port using RBusDevComm before C32 starts. </p> <p>The C32 Serial Server loads plug-ins that act as high-level drivers for each serial port. You can implement any requirements for access within these plug-ins, such as requiring the client to have a specific process ID. This strategy only works within the C32 Serial Server, since any client using the serial port through <codeph>RBusDevComm</codeph> does not load the C32 Serial Server plug-in. </p> </section> </conbody><related-links><link href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita"><linktext>What are CMI files?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1DE5CDAD-8D71-5384-9E98-5665D5A4C792.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1DE5CDAD-8D71-5384-9E98-5665D5A4C792" xml:lang="en"><title>Multimedia Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Find everything you need to know about the Symbian platform Multimedia Subsystem in this section. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1DF2D6EC-C445-5A0C-80C4-9C46AAA6EE44.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1DF2D6EC-C445-5A0C-80C4-9C46AAA6EE44" xml:lang="en"><title>Message Server and Store Example Code</title><shortdesc>This describes the example code for the Message Server and Store component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1DF62CB5-FB81-5802-9071-E492B0C81065.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1DF62CB5-FB81-5802-9071-E492B0C81065" xml:lang="en"><title>ReadText:
+Reads "Hello world!" from a Resource File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-297cf759-ee63-40ab-b6c2-69b588e02225.zip" scope="external">ReadText.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-297cf759-ee63-40ab-b6c2-69b588e02225.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.   </section>
+<section><title>Description</title> <p> <filepath>ReadText</filepath> demonstrates
+reading text ("hello world!") from a resource file and writing the text to
+a console. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E158DE6-33F5-4B45-8923-28117EBAB68A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1E158DE6-33F5-4B45-8923-28117EBAB68A" xml:lang="en"><title>Location
+Based Services Concepts</title><shortdesc>This section provides concept material that relates to the Location
+Based Services module.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e292029_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E2DB50A-D8D7-595D-8448-77F057655E82.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-1E2DB50A-D8D7-595D-8448-77F057655E82" xml:lang="en"><title>Writing
+a Client MTM</title><abstract><p>This section describes the initial steps to be performed to write
+a Client MTM. It does not explain the implementation of all <xref href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita">Client
+MTM functionality</xref>. You can refer the <xref href="GUID-232E2D33-8BC1-5CC3-A4DF-2C99900E1083.dita">Client
+MTM example</xref> for detailed implementation steps </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The main function of the Client MTM is to load the entry currently
+referred to by the MTM’s context, and save it once any changes have been made
+to it. An individual entry’s store is represented by the <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> class.
+Finally, after any changes are made to a store that stores the message body, <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-F1D4FE2A-8BB9-3CC2-9C30-DC053848A6B5"><apiname>CMsvStore::CommitL()</apiname></xref> must
+be called to commit those changes. </p> </context>
+<steps id="GUID-6A78327C-5D21-5913-9404-7153B2002264">
+<step id="GUID-BC043CD5-E41A-5534-A2ED-0C6003723004"><cmd/>
+<info>Derive a class from the <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref> class. </info>
+</step>
+<step id="GUID-7A80C910-9012-57FF-8A7A-4A63631BBE33"><cmd/>
+<info>Register it using the <xref href="GUID-0D5D7FAC-4F14-3046-92FB-873B8350FF4C.dita"><apiname>CRegisteredMtmDll</apiname></xref> parameter. </info>
+</step>
+<step id="GUID-B0606F56-C9D4-532F-B866-2D2AF54EC71C"><cmd/>
+<info>Create a session with Message Server using the <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref> parameter. </info>
+</step>
+<step id="GUID-72F50006-EA9B-5BF3-8A8F-BC51C4434F9D"><cmd/>
+<info>Create the <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> -based classes for performing
+the different operations that are required for your Messaging protocol. See <xref href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita#GUID-E180D222-CC4F-5007-93FC-C339BBE708BC/GUID-6DD0912E-1E82-5BAD-889C-5FA79E5E800C">Client-side
+operations</xref>. </info>
+</step>
+</steps>
+<example><title>Client MTM example</title><codeblock xml:space="preserve">// 
+// CTextMtmClient
+//      Implements CBaseMtm to provide Client-side Text MTM     
+//
+
+EXPORT_C CTextMtmClient* CTextMtmClient::NewL(CRegisteredMtmDll&amp; aRegisteredMtmDll, CMsvSession&amp; aMsvSession)
+// Factory function
+    {
+    CTextMtmClient* self = new (ELeave) CTextMtmClient(aRegisteredMtmDll,aMsvSession);
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }</codeblock> <p>For more details on implementing all Client
+MTM functions, see <xref href="GUID-232E2D33-8BC1-5CC3-A4DF-2C99900E1083.dita">example
+code</xref>. </p> </example>
+</taskbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM overview</linktext>
+</link>
+<link href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita"><linktext>Client MTM</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E446762-AFE2-4198-8CD7-8C4466392543.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1E446762-AFE2-4198-8CD7-8C4466392543" xml:lang="en"><title>Choice
+list API class structure</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The class structure for the Choice list API consists of the class <codeph>CAknChoiceList</codeph> and
+observer interface <codeph>McoeControlObserver</codeph>. The class structure
+is depicted in the figure below.</p>
+<fig id="GUID-F3AE7068-6277-4A02-B057-8324487F5D2F">
+<title>Choice list API classes</title>
+<image href="GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e50244_href.png" scale="50" placement="inline"/>
+</fig>
+<p>The <codeph>CAknChoiceList</codeph> class provides an interface for controlling
+the choice list. You need to create separate instances of this class for each
+choice list. </p>
+<p>When you use the choice list component in your application, you must implement
+the <codeph>McoeControlObserver</codeph> interface. This interface is used
+as a callback hook between the client application and the actual choice list.
+The client application receives a notification through this interface when
+the choice list is closed. This enables you to determine what to do with the
+changed selection from the choice list in your client application.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C" xml:lang="en"><title>Power
+API </title><shortdesc>Power API is a library API and provides the ability to request
+the detailed information of the following: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-E59636F9-45A9-5423-A2F6-5610EF320C28"><p><xref href="GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C.dita#GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C/GUID-EB45C8E3-2DFB-58CB-9C5A-231F1BD09393">Battery information</xref></p></li>
+<li id="GUID-66BB4E68-B07D-595F-92F2-EE0BE03C41BB"><p><xref href="GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C.dita#GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C/GUID-49E784AB-D439-54A3-8DF5-A88FFB9B58E5">Battery voltage and current consumption</xref>  </p> </li>
+</ul>
+<section id="GUID-EB45C8E3-2DFB-58CB-9C5A-231F1BD09393"><title>Battery information</title> <p>The
+following are the battery information and is obtained from the battery driver: </p> <ul>
+<li id="GUID-52148B48-BF74-5D79-848F-A66DD4B1BCEC"><p>Nominal battery capacity
+- Maximum battery capacity and it decreases with time from usage and numbers
+of recharges. </p> </li>
+<li id="GUID-BC63C6AC-37C3-568A-B2A9-B456BD582431"><p>Remaining battery capacity
+- Present battery capacity. </p> </li>
+<li id="GUID-89308E1D-6DB3-5A2D-873D-88C4939597A3"><p>Remaining battery percentage </p> </li>
+</ul> </section>
+<section id="GUID-49E784AB-D439-54A3-8DF5-A88FFB9B58E5"><title>Battery voltage
+and current consumption</title> <p>Power API simultaneously provides the following
+battery voltage and current consumption information: </p> <ul>
+<li id="GUID-3804FD0C-409E-50CD-BA55-8A11BBB9250F"><p>Average battery voltage
+- the API returns the average battery voltage over a specified time interval. </p> </li>
+<li id="GUID-0A7504A4-55D5-557B-9266-AC56AA980E35"><p>Minimum battery voltage
+- minimum voltage on a battery that is required to drive the circuit. </p> </li>
+<li id="GUID-4632964E-9827-5595-AA22-3F01B0F81ADD"><p>Maximum battery voltage
+- maximum voltage that a battery can have. </p> </li>
+<li id="GUID-CE6C4CA4-281A-5E6C-B352-FAC4E3F8247F"><p>Battery current consumption
+- average current consumed between specified start and end times. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita"><linktext>Power API
+Tutorial</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617" xml:lang="en"><title>Graphics Device Interface Tutorials</title><shortdesc>This section provides examples of working with the GDI API to perform various drawing operations, to store and restore pictures and to zoom. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics Device Interface
+  Collection</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,789 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B" xml:lang="en"><title>Symbian
+OS v9 Security Architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This documents contains a high level description of the platform security
+model implemented in Symbian OS v9.x and beyond. </p>
+<section id="GUID-80B8E189-3F47-5684-A6CC-37E30B3A73F5"><title>Contents</title> <ul>
+<li id="GUID-372B5FEC-6E92-5EFA-BD15-4CAF14FEDC7B"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-E103331E-23BE-5829-9C2A-795D98AA4A4A">1 Introduction</xref>  </p> </li>
+<li id="GUID-3927F321-92C4-5172-859B-206E75C5CAE2"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-C462ED45-0B3F-5BEA-9AF6-D03F6CD7B373">2 Symbian Platform Security Background</xref>  </p> <ul>
+<li id="GUID-FBE958D4-B137-5757-AE21-571197439131"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-6B05D4C8-7BBA-5DAF-BEDE-343926A8DC72">2.1 Symbian Security Policy Requirements</xref>  </p> <ul>
+<li id="GUID-D9C80AF7-B2A8-59B9-A0A2-8A9CF17B5C47"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-255CAE5E-8342-593E-BCB2-B3257EAB9C13">2.1.1 Prevention</xref>  </p> </li>
+<li id="GUID-41874D6C-4EC7-5FF6-A7D8-D2C3F57CFAE5"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-764EA8A8-2768-5B12-8D38-6C031E27F6D3">2.1.2 Detection</xref>  </p> </li>
+<li id="GUID-6D68D224-4FAE-5BE5-85AC-C5C0FBBB6511"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-F2B08632-CBBB-5698-B852-5FAFE5A94114">2.1.3 Reaction</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-C95D8F9E-7FBB-503E-BDD1-D8D19DAFF04A"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-6A22DD08-25C6-58B5-B8DF-B9C94BFBC651">2.2 The Security Architecture</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-107B388D-16EF-53AC-A431-7FB6B20EF0C9"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-CEC2A903-E69B-5F0F-B1FB-AF13B368B1EF">3 Security Architectural Countermeasures</xref>  </p> <ul>
+<li id="GUID-9A5DE41D-AA37-5BE9-91A7-B7A02C2AE3D7"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-9750B6A9-33E5-5470-A505-52646E7D8648">3.1 Trusted Computing Platform</xref>  </p> <ul>
+<li id="GUID-EC4EB7C9-3752-5B84-955D-4F44EF40061A"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-BB6A8038-7230-5EF8-A2E7-2F6DB2A69A6D">3.1.1 Trusted Computing Base</xref>  </p> </li>
+<li id="GUID-0173F5DE-0C2E-59C3-B2D1-7E671670293D"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-3469D51F-A7E2-54B8-A5EB-CB2842C1A3F3">3.1.2 Trusted Computing Environment</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-C36D4525-F356-5921-A898-0379A33E38E6"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-CA023029-C0F8-5803-8A38-A6161B3E6A6F">3.2 Process Capabilities</xref>  </p> <ul>
+<li id="GUID-4E80D166-0ACA-5210-B626-AF226B22854C"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-1EC03F83-6724-552C-BC95-2DB13C7E632B">3.2.1 Mapping system permissions – System Capabilities</xref>  </p> </li>
+<li id="GUID-9EACD773-1344-5EBA-917A-A0FC0EC2B080"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-E10EF8B9-7AC8-521D-B195-6BB7E88BED02">3.2.2 Mapping real-world permissions – User Capabilities</xref>  </p> </li>
+<li id="GUID-30F298F8-BE1F-59BF-95F0-27AAD7049B53"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-861A61E2-A364-51B3-B53D-BA8D08874AE4">3.2.3 Assigning capabilities to a process</xref>  </p> </li>
+<li id="GUID-63079CA3-44F2-5E4A-8E20-2399A3E7CA92"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-3ED27AA2-9198-59B7-B776-BC43F5FA3119">3.2.4 Capability Permission lifetime</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-117A47DF-B8E2-5E52-AFEC-649252629CDF"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-F90646D0-321E-5552-9942-BF7A985C46A1">3.3 Process Identification</xref>  </p> <ul>
+<li id="GUID-337A27E6-32FE-5C3F-8BF2-A2C4721C8760"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-07FAE266-EB4B-5462-A2A7-6962D4CCED24">3.3.1 Secure Identifier (SID)</xref>  </p> </li>
+<li id="GUID-58910FB5-BC54-5FB3-954C-EC705F6F933B"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-088EA3F8-5209-56F4-9B24-90BF819D10E3">3.3.2 Vendor Identifier (VID)</xref>  </p> </li>
+<li id="GUID-EC4FC13D-AB17-5C6E-8EC6-4817BE64EE09"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-0F55AE1B-0407-5CD8-A678-D0AE39D81406">3.3.3 Kernel’s &amp; Loader’s role</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-69F5BEFF-9A5C-5507-BC37-310DB1D31593"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-03558B99-2B98-579C-AD59-CF66BD98F69F">3.4 Data Caging</xref>  </p> <ul>
+<li id="GUID-5FA43EF4-5CAD-5D5E-8D28-232348E1E640"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-394AF3B0-FA51-5C99-8FBD-73A707AB177C">3.4.1 Caging processes</xref>  </p> </li>
+<li id="GUID-48CB6C12-511F-5878-BE25-A8CD5B2DEADC"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-93AD2587-56D2-5553-84D4-C98FC6BA951C">3.4.2 Removable media</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-079E308D-3FBA-5B3A-B635-9592B6C91225"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-6478908A-06BB-5FF6-BBFA-4ECE3B815A8A">3.5 SWInstall – Enhancing perimeter security</xref>  </p> <ul>
+<li id="GUID-18EEAB03-A6E8-59F4-A585-C35532949458"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-6F7D320F-97C3-5792-9D48-B960489A0A2B">3.5.1 Software validation</xref>  </p> </li>
+<li id="GUID-6766B8B5-2C1E-5ED0-8D6E-0B1CE3972268"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-5C6114AC-F485-5720-BB97-9AEAA8F04E75">3.5.2 Capability calculation</xref>  </p> </li>
+<li id="GUID-E60A7D50-5287-5E6F-B572-3BE69F2DDA63"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-FAD0881C-EF83-5B0A-BD9E-B18AC6529A4F">3.5.3 Configuring the installer</xref>  </p> </li>
+<li id="GUID-077943D6-65F9-5047-A684-F579C4FB7E5A"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-F63BC928-31A0-5FD1-B846-48B678F06BFE">3.5.4 Installation in place or dual phase installation</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-75C6CD9B-AB63-509B-84D3-9AAFB37DD3AC"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-9527DAD1-61F3-56FA-AA64-0E58FB187495">3.6 Secure backup and restore</xref>  </p> <ul>
+<li id="GUID-7A4BABCD-E7DF-54AA-B2D4-25BA58FAAE2E"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-6BADA2AA-519B-5A79-A2FA-EC9B6648BD1F">3.6.1 Active Backup and Restore for Private Data</xref>  </p> </li>
+<li id="GUID-0B9BD3E2-CF85-541F-9E11-47AE71F0C4D9"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-D122D4DC-0D32-5252-9B67-B3D66F3737D8">3.6.2 Backup and Restore of Executables via Software Install</xref>  </p> </li>
+</ul> </li>
+</ul> </li>
+<li id="GUID-BC48319D-4B20-5FEF-B5BF-96F5C5EB5AEB"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-830F2821-5614-5083-868C-0D6CEF6D4B0D">4 Additional information</xref>  </p> <ul>
+<li id="GUID-359012B4-E556-5AB1-85BB-897CE023C66C"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-CAC87EF9-34AB-5B4B-BF5C-35D96730C12E">4.1 References</xref>  </p> </li>
+<li id="GUID-DD6CEA74-A6B9-59DC-A4A3-E96F04EF8C3D"><p><xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-6A8792B7-03AD-505D-892A-1D08ED4C81AB">4.2 Glossary</xref>  </p> </li>
+</ul> </li>
+</ul> </section>
+<section id="GUID-E103331E-23BE-5829-9C2A-795D98AA4A4A"><title>1 Introduction</title> <p>A
+platform security model was introduced in Symbian OS v9. Developers can read
+this paper to get a high level view of the model and what it means for how
+they implement programs. </p> <p>Some brief background information about security
+and mobile phones is provided in section 2. The document does not describe
+what infrastructure is needed to support the security model in the operating
+system, such as application signing programs, security incident processes,
+etc. </p> </section>
+<section id="GUID-C462ED45-0B3F-5BEA-9AF6-D03F6CD7B373"><title>2 Symbian Platform
+Security Background</title> <p>Symbian platform security covers the philosophy,
+architecture and implementation of the platform defence mechanisms against
+malicious or badly implemented code. The scope of platform security requires
+a holistic perspective of some complex system services and their interactions.
+This paper focuses on the architectural elements required to support the platform
+defence mechanisms. Specifically, we examine a number of architectural countermeasures
+that collectively constitute the <b>Symbian Platform Security Architecture</b>.
+We also look at the substantial number of issues that the adoption of such
+platform security architecture poses. </p> <p id="GUID-6B05D4C8-7BBA-5DAF-BEDE-343926A8DC72"><b>2.1
+Symbian Security Policy Requirements</b> </p> <p>A security policy allows
+you to determine effective countermeasures to threats in three ways: protection,
+detection and reaction. These three aspects need to be enforced by different
+mechanisms that are outlined in the following subsections. </p> <p id="GUID-255CAE5E-8342-593E-BCB2-B3257EAB9C13"><b>2.1.1
+Prevention</b> </p> <p>There is a need to prevent badly written applications
+from doing things they are not intended to do on the platform. This involves
+first of all determining whether the application is sufficiently trustworthy
+to be installed and then subsequently protecting the platform from errant
+behaviour once it is installed. In terms of determining trust, third party
+applications are categorised according to the degree of trust associated with
+their authors. The binding between trust and authorship is encapsulated within
+digital certificates issued by a Certificate Authority (CA). The CA performs
+a role within a PKI which is the organisational infrastructure used to establish
+and mediate the trust relationships. Individual third party applications are
+furthermore granted differing degrees of capability at install time within
+the context of the platform environment on the basis of the perceived degree
+of trust bestowed upon them by the PKI. </p> <p>As said in [4], <i>mandatory
+security mechanisms may be used both to limit trusted applications to the
+minimal set of privileges required for their function and to confine the damage
+caused by any misuse of their privileges</i>. For this reason it is important
+to understand that the security architecture must be also applied to Symbian
+and licensees code even on a closed environment where new code cannot be installed.
+As for the MMU (Memory Management Unit) it will bring us several benefits
+like decreasing the impact of a flaw, enforcing good design and reducing dependencies
+between components. </p> <p id="GUID-764EA8A8-2768-5B12-8D38-6C031E27F6D3"><b>2.1.2
+Detection</b> </p> <p>The detection of errant application behaviour on the
+platform includes ensuring that incidents are logged and reported promptly.
+This means continuous monitoring of relevant incident tracking sources and
+first level categorisation of security breaches as being minor, significant
+or major. It may also include support of intrusion detection systems on the
+platform such as virus scanners. Detection also covers tracking the security
+flaws in standards we implement as well as security flaws in the platform
+security architecture. Finally it involves the detection of compromises in
+the public key infrastructure supporting application signing programs. </p> <p id="GUID-F2B08632-CBBB-5698-B852-5FAFE5A94114"><b>2.1.3 Reaction</b> </p> <p>There
+is a need to respond to incidents promptly and effectively. The consequence
+of having no coherent response to major incidents may be a catastrophic loss
+of confidence in the security of the Symbian platform among our customers
+and users. Even if the full response mechanism is out of the scope of the
+Symbian platform, the security architecture should provide support to implement
+part of it as capability revocation and upgrade mechanisms. </p> <p id="GUID-6A22DD08-25C6-58B5-B8DF-B9C94BFBC651"><b>2.2
+The Security Architecture</b> </p> <p>The main security threat Symbian addresses
+with this platform security architecture is to prevent viral distribution
+of malicious applications; for this reason hardware attacks are not specifically
+addressed. </p> <p>The architecture focuses in delivering prevention mechanisms.
+Detections and reactions rely heavily on services provided by an infrastructure
+external to the phone and its operating system and are not addressed in this
+document. The basic outline of the security architecture is analogue to a
+medieval castle defences. In a similar fashion it employs simple and staggered
+layers of security above and beyond the software installer perimeter. The
+key threats that the model is trying to address are those that are linked
+with unauthorised access to user data and to system services in particular
+the phone stack. The phone stack is especially important in the context of
+a phone because it will be controlling a permanent data connection to the
+Internet. There are two key design drivers lying behind the model: </p> <ul>
+<li id="GUID-DCA4E741-016D-5B4F-A1FF-9D3E4B1A7D41"><p> <b>Firewall protection</b> of
+key system servers through the use of <b>capability-based access control</b>.
+The capability model is deliberately limited to a small number of capabilities. </p> </li>
+<li id="GUID-6A5211F8-DAA6-54BB-B091-9B74DD352D64"><p> <b>Data caging </b> which
+creates a protected part of the file system which rogue apps are not able
+to access. </p> </li>
+</ul> <p>There is a certain minimum amount of architectural work that had
+to be done to put the security architecture in place. However, there was also
+a requirement to minimise the impact of any scheme to the architecture of
+the Symbian platform. Adding platform security with minimal impact was hard
+to do but this desire had influenced a lot of the architectural ideas. </p> <p>On
+the plus side, the security architecture has some distinct advantages over
+other approaches. It offers us the chance to get a competitive advantage by
+putting in place the right security architecture for a phone platform. This
+in turn would mean that our licensees would see the Symbian platform as a
+more attractive option than the competition partly because the premiums they
+would have to pay for device security insurance would be lower. In addition,
+they will have increased trust that deployment of the Symbian platform in
+their products will not ruin their reputation and brand. </p> <p>All these
+points should be borne in mind as we move on to detail the architectural aspects
+of the model in the next section. </p> </section>
+<section id="GUID-CEC2A903-E69B-5F0F-B1FB-AF13B368B1EF"><title>3 Security
+Architectural Countermeasures</title> <p>It is inherently difficult to work
+out how to partition a holistic architecture such as that required to support
+platform wide security. The approach we have taken here is to present a series
+of different views on the architectural countermeasures from various perspectives
+each of which highlight a particular functional element within the system.
+The security architecture is a combination of these elements. </p> <p>The
+main concept of all the security countermeasures described below is to control
+what a process can do rather than what a user can do. This approach is quite
+different to well-known operating systems as Unix. The main reasons for which
+we made this choice are: </p> <ul>
+<li id="GUID-F2DB9FD3-4D02-50BD-93E5-97D575BC4A20"><p>The very nature of the
+Symbian platform is to be mono-user. </p> </li>
+<li id="GUID-74DA1B3D-737D-5B90-93B6-89CB4CD56876"><p>The Symbian platform
+provides services through independent server processes. They always run and
+are not attach to a user session. As long as power is supplied, the Symbian
+platform is always on even if no user is logged on. </p> </li>
+<li id="GUID-893338DD-7249-5DB8-97A8-BBA773048CFC"><p>The Symbian platform
+is aimed to be used in devices used by a large public with no technology knowledge.
+When installing software, the user may not have the skills to decide what
+permissions to grant to an application. Furthermore, with always-connected
+devices, the consequences of a wrong or malevolent decision may impact a domain
+much larger than the device itself. </p> </li>
+</ul> <p>To avoid any confusion while reading this document, please pay attention
+to the following definitions: </p> <ul>
+<li id="GUID-A3CF9AE1-1550-5CF1-9F59-7C1818C0ABB5"><p>An <b>executable</b> is
+a file containing Symbian executable code. This can be a library (DLL) or
+a program (EXE). </p> </li>
+<li id="GUID-91387A05-431F-514D-905A-AA7DC5AEDB4F"><p>A <b>program</b> is
+an executable that once, loaded will trigger the creation of a <b>process.</b>  </p> </li>
+<li id="GUID-C1949968-5B03-56A6-BEE1-D37AF8C43B70"><p>A <b>library</b> is
+an executable that is linked to another executable or that processes can dynamically
+load. </p> </li>
+</ul> <p id="GUID-9750B6A9-33E5-5470-A505-52646E7D8648"><b>3.1 Trusted Computing
+Platform</b> </p> <p id="GUID-BB6A8038-7230-5EF8-A2E7-2F6DB2A69A6D"><b>3.1.1
+Trusted Computing Base</b> </p> <p>A trusted computing base is a basic architectural
+requirement for robust platform security. The trusted computing base would
+consist of a number of architectural elements that cannot be subverted and
+that guarantee the integrity of the device. It is important to keep this base
+as small as possible and to apply the principle of least privilege to ensure
+system servers and applications do not have to be given privileges they do
+not need to function. On closed devices, the TCB consists of the Symbian platform
+kernel and F32, on open devices the software installer (SWInstall) is also
+required. All these processes are system-wide trusted and have therefore full
+access to the device. This trusted core would run with a “Tcb” system capability
+not available to other platform code. </p> <p>There is one other important
+element of the trusted computing base, namely the hardware. One important
+recent paper [6] has outlined a hardware design that does not take operating
+system security into account. In particular, with devices that hold trusted
+computing base functionality in flash ROM, it is necessary to provide a secure
+boot loader to ensure that it is not possible to subvert the trusted computing
+base with a malicious ROM image. Providing such a secure boot loader is explicitly
+excluded from the scope of this architecture, and it is a requirement on the
+base port for specific hardware platforms to provide for this. </p> <p id="GUID-3469D51F-A7E2-54B8-A5EB-CB2842C1A3F3"><b>3.1.2
+Trusted Computing Environment</b> </p> <p> <i>“There are always system components
+&lt;…&gt; that must be able to read and write at all levels &lt;…&gt;. The practical
+outcome is that an uncomfortably large part of the operating system (plus
+utilities, plus windowing system, plus database) often ends up in the trusted
+computing base” Ross Anderson</i>  </p> <p>Beyond the core, other system components
+are granted restricted orthogonal system capability and constitute the Trusted
+Computing Environment, for instance, these include servers providing sockets,
+telephony, certificate management, database access, and windowing services.
+Each server just has the capabilities it requires, for instance the windowing
+server is not granted phone stack access and the communications servers is
+not granted direct access to keyboard events. These system capabilities are
+only available to third party code that is appropriately signed. By limiting
+the number and combination of system capabilities allocated to any single
+component, a limit is placed on the potential damage that can be caused by
+any vulnerability or misuse of privileges. </p> <p>This is a very natural
+evolution of the client/server system architecture that has been widely utilised
+in the operating system since its very inception, and aligns well with the
+strengths of that architecture. </p> <p id="GUID-CA023029-C0F8-5803-8A38-A6161B3E6A6F"><b>3.2
+Process Capabilities</b> </p> <p>A capability is an access token that corresponds
+to a permission to undertake a sensitive action or group of actions. The Symbian
+platform security architecture purpose is to control access to sensitive system
+resources. The most important resource that requires access control is the
+kernel executive itself and a <i>system</i> capability is required by a client
+to access certain functionality through the kernel API. All other resources
+reside in user-side servers accessed via inter-process communication (IPC)
+(eg. the telephony server). A limited number of basic capabilities are defined
+to police specific client actions on the servers. For example, possession
+of the “network services” capability allows a client to place phone calls
+via the telephony server. It is the responsibility of the server to police
+client access to the resources that it provides. </p> <p>The key features
+of the process capability model are: </p> <ul>
+<li id="GUID-B3DA2817-97C8-55A7-8462-C1498772EFC2"><p>It is primarily focused
+around Symbian platform system servers and client-server IPC interactions
+between processes. </p> </li>
+<li id="GUID-2A22A61B-BAAD-5CA7-974B-7D6FCFD11BF0"><p>Capabilities are associated
+with processes not threads. Threads in the same process share the same address
+space and memory access permissions. This means that any data being used by
+one thread can be read and modified by all other threads in the same process.
+In addition, threads in the same process can write to each other’s stacks
+and thereby divert one another’s execution path. </p> </li>
+<li id="GUID-257E42BE-1E6F-5863-BE26-8EF23C4C642B"><p>When the code is not
+running, capabilities are stored inside of executables. Capabilities stored
+in executables are not modifiable, as they would be stored during installation
+in a location that is only accessible by the Trusted Computing Base. See subsection
+3.4 for the details on how this works. </p> </li>
+<li id="GUID-CDAF1309-850A-5130-856D-62535F086776"><p>Not all servers would
+have to handle client capabilities. </p> </li>
+<li id="GUID-54441D51-F433-55DC-B4E8-F3BE32BE56C8"><p>The only cryptography
+involved in this scheme is at the software installation stage where certificates
+are checked off against the appropriate root certificates, if necessary, before
+code is granted any requested capabilities. In some scenarios it is possible
+for third party developers to dispense with the use of certificates altogether,
+in which case users would be responsible for granting the requisite capabilities.
+The subsection 3.5 goes into the details of this. </p> </li>
+</ul> <p id="GUID-1EC03F83-6724-552C-BC95-2DB13C7E632B"><b>3.2.1 Mapping system
+permissions – System Capabilities</b> </p> <p> <i>System permissions are never
+exposed to the user and are therefore mandatory. Without it, a process cannot
+perform a protected operation. One of the main goals of this architecture
+for the Symbian platform is to protect what is really vital for the integrity
+of the System and to minimise the number of critical operations. For this
+reason, some Symbian components have been designed to avoid the need to restrict
+access to some operations without, of course, compromising their integrity.</i>  </p> <p> <b> Tcb </b> Used
+by the Trusted Computing Base only, it gives access to the location executables
+are stored and therefore they can change their capabilities. Only the Symbian
+platform kernel, the file server (including the loader), and the software
+installer are granted this privilege. </p> <p> <b> CommDD </b> Grants direct
+access to all communication device drivers, including phone baseband software. </p> <p> <b> PowerMgmt </b> Grants
+the right to kill any process in the system, to switch the machine into standby
+state, wake it up again or power it down completely. </p> <p> <b> MultimediaDD </b> Grants
+direct access to all multimedia device drivers </p> <p> <b> ReadDeviceData </b> Grants
+read access to device, network operator, and phone manufacturer confidential
+settings or data. </p> <p> <b> WriteDeviceData </b> Grants write access to
+settings that control the behaviour of the device. Note this is NOT necessarily
+symmetric with ReadDeviceData, and in practice is required significantly more
+often than that capability. </p> <p> <b> Drm </b> Grants access to rights-protected
+content </p> <p> <b> TrustedUI </b> Grants the right to create a trusted UI
+session, and therefore to display dialogs in a secure UI environment. </p> <p> <b> ProtServ </b> Grants
+the right to a server to register within the protected name space – to limit
+scope for malware to spoof sensitive system servers. </p> <p> <b> DiskAdmin </b> Grants
+access to disk administration operations that affect more than one file or
+one directory (or overall filesystem integrity/behaviour, etc). </p> <p> <b> NetworkControl </b> Grants
+the right to modify or access network protocol controls, in a way that might
+affect more than one client application or transport connection / session. </p> <p> <b> AllFiles </b> Grants
+read access to entire file system. Grants write access to other processes'
+private directories. </p> <p> <b> SwEvent </b> Grants the right to generate
+software key &amp; pen events and to capture any of them regardless of the
+foreground status of the application </p> <p> <b> SurroundingsDD </b> Grants
+access to device drivers that provide input information about the surroundings
+of the device. </p> <p id="GUID-E10EF8B9-7AC8-521D-B195-6BB7E88BED02"><b>3.2.2
+Mapping real-world permissions – User Capabilities</b> </p> <p>The process
+of identified these capabilities was a lengthy and involved one. First we
+attempted to identify those accesses that require policing and then tried
+to map those requirements into something that is meaningful for a user. In
+addition, more capabilities means greater complexity and complexity is widely
+recognised as being the chief enemy of security. A solution based on capabilities
+should therefore seek to minimise the overall number deployed. These map fairly
+broadly onto the main threats which are unauthorised access to the outside
+world and preserving the confidentiality/integrity of user data. We assert
+that any permission requirement can be expressed in terms of some combination
+of those. In a sense, these capabilities represent orthogonal groupings because
+they police different kinds of access together. The capabilities identified
+today are as follows: </p> <p> <b> NetworkServices </b>  <b>  </b> Grants
+access to remote services without any restriction on its physical location.
+Typically, this location is unknown to the phone user. Also such services
+may incur cost for the phone user. This typically implies routed protocols.
+Voice calls, SMS, internet services are good examples of such network services.
+They are supported by GSM, CDMA and all IP transport protocols including Bluetooth
+profiles over IP. </p> <p> <b> LocalServices </b>  <b>  </b> Grants access
+to remote services in the close vicinity of the phone. The location of the
+remote service is well-known to the phone user.In most cases, such services
+will not incur cost for the phone user. This typically implies a non-routed
+protocol. An application with this capability can normally send or receive
+information through Serial port, USB, IR and point-to-point Bluetooth profiles.
+Examples of services are IR beaming with the user's PC, Bluetooth gaming,
+file transfer. </p> <p> <b> ReadUserData </b> Grants read access to data belonging
+to the phone user. This capability supports the <i>confidentiality </i> of<i>  </i> user
+data. Today, Contacts, messages and calendar data are always seen as user
+confidential data. For other content types such as images or sounds, it may
+depend on context, and ultimately be up to the application owning the data
+to define. </p> <p> <b> WriteUserData </b> Grants write access to user data.
+This capability supports the management of the <i>integrity </i> of user data.
+Note that this capability is not necessarily symmetric with ReadUserData.
+For instance, one may wish to prevent rogue applications from deleting music
+tracks but may not wish to restrict read access to them. </p> <p> <b> Location </b> Grants
+access to the live location of the device. This capability supports the management
+of user’s privacy regarding the phone location. Location information protected
+by this capability can include map co-ordinates and street address, but not
+regional or national scale information. </p> <p> <b> UserEnvironment </b> Grants
+access to live confidential information about the user and his/her immediate
+environment.This capability also protects the user's privacy. Examples are
+audio, picture and video recording, biometrics (such as blood pressure) recording. </p> <p>We
+acknowledge that user-exposed capabilities are relatively coarse-grained but
+the assertion is that expanding on these levels is undesirable at this time,
+for reasons previously given. Only these capabilities may be exposed to users
+during software installation of unsigned code as discussed in section 3.5. </p> <p>Security
+policies requiring Tcb and system capabilities are always mandatory. Their
+strict control ensures the integrity of Symbian Trusted Computing Platform.
+However the way servers check user-exposed capabilities or interpret them
+may be fully flexible and even user-discretionary, for example allowing user
+prompting if a sensitive action fails due to lack of capability. </p> <p id="GUID-861A61E2-A364-51B3-B53D-BA8D08874AE4"><b>3.2.3
+Assigning capabilities to a process</b> </p> <p>The association of a run-time
+capability with a process requires a modification to Symbian executable loader
+behaviour. The loader must transform the static capability settings associated
+with individual executables into a run-time capability that the kernel can
+use to police IPC and user/kernel interface. There are two fundamental rules
+that govern the way the loader must work. They seem simple in their description
+but have far-reaching security consequences as they bring to light the trust
+relationship between DLLs and EXEs. </p> <ol id="GUID-8770138F-B858-570C-98F0-8CAF365AA656">
+<li id="GUID-D41EEC0F-FFBC-57BA-91C7-72312512AC6A"><p> <b> The capabilities
+of a process never change.</b>  There is no way of adding capabilities to
+a process, nor of removing capabilities from a process. All DLL code runs
+at the capability level of the process that loads it. </p> </li>
+<li id="GUID-732F0118-3C18-50A0-9D57-A7136F39B0CE"><p> <b> A process cannot
+load a DLL with less capability than itself.</b>  The need for this constraint
+follows from the fact that all DLL code runs at the capability level of the
+loading process and therefore must be at least as trusted at the loading process.
+DLL capabilities only reflect the level of trust that the loading process
+can place in them; they don’t actually authorise anything. </p> </li>
+</ol> <p>What this implies is that it is the EXE that ultimately holds the
+responsibility for what happens within the process which is created from it.
+The capabilities allocating to the EXE grant a level of authorisation to the
+process to perform its roles and responsibilities. As part of its execution,
+it may use shared library code. It must not be allowed to use library code
+that is less trusted than it itself is. This is expressed, in terms of capabilities,
+in rule 2. However, regardless of what library code it uses, the process will
+never gain authorisation to perform actions beyond those originally entrusted
+to it: this is rule 1. The consequence of this is, the more capable a process,
+the more restrictions will be placed on the DLLs it may load; conversely an
+process with no capability is free to use any shared library on the system,
+at its own discretion. </p> <p id="GUID-3ED27AA2-9198-59B7-B776-BC43F5FA3119"><b>3.2.4
+Capability Permission lifetime</b> </p> <p>There are two possible alternatives
+for interpretation of the presence of a user-exposed capability at capability-aware
+servers: </p> <p> <b>Blanket permission</b>: Capability is granted as a one
+off act. If the capability is not present when the process is created, the
+request fails. All access requiring system capability will be policed this
+way. For example, the file server will just fail any clients attempting to
+access functionality in the event that they don't possess this capability.
+The capability would persist as long as the application is installed or until
+revoked. Revocation mechanisms would be introduced in several steps as they
+may require extra public key infrastructure from licensees and network operators. </p> <ul>
+<li id="GUID-A56156C5-3B8C-5566-8F74-BAC190C849C9"><p> <b>Single action permission</b>:
+Capability is checked upon each sensitive API call to the server. This means
+that one each access to the sensitive API call, a security notifier is thrown
+asking the user if they wish to grant that action. The permission only lasts
+for the duration of the corresponding sensitive action. </p> </li>
+</ul> <p>The user perception of the kind of permission must not be confused
+with when a server will check a required capability. For instance, an application
+may be granted NetworkServices as blanket permission but the telephony server
+will check NetworkServices capability at each relevant call made by this application.
+But as the user will not be asked to make a decision (to grant or not to grant
+NetworkServices for this call), this security check is transparent to the
+user. </p> <p>The advantages of this design are: </p> <ul>
+<li id="GUID-76BB16EB-7469-515F-9F30-040AE2A91950"><p>To maintain the time
+of check as close as the time of use as possible (to avoid any TOCTOU flaws) </p> </li>
+<li id="GUID-567F2967-2988-5652-B4A2-9A9B8C2ED6B5"><p>To avoid the server
+storing capability-related information for a process. </p> </li>
+</ul> <p>The great majority of Symbian platform servers behave in blanket
+permission mode. The reason behind this design decision is the majority of
+Symbian platform servers provide low level services where the intent and the
+context of an application’s requests are to some degree unknown. Therefore
+it would be difficult to ask the user a question with enough understandable
+information to let her make a well-informed decision. </p> <p id="GUID-F90646D0-321E-5552-9942-BF7A985C46A1"><b>3.3
+Process Identification</b> </p> <p>Symbian Platform Security model is essentially
+based on capability to reduce the need of identifying applications. It allows
+servers to control access to their APIs without knowing their requesters and
+therefore avoid the need of maintaining an access control list. However in
+some circumstances, it is necessary to identify an application uniquely (see
+data caging below) and even its source i.e. the vendor. To satisfy these needs
+the two following concepts have been introduced. </p> <p id="GUID-07FAE266-EB4B-5462-A2A7-6962D4CCED24"><b>3.3.1
+Secure Identifier (SID)</b> </p> <p>Each executable contains a secure identifier.
+It is guaranteed to be locally unique (i.e. in the phone where it is installed)
+however there is a subset of restricted SIDs where a global uniqueness can
+be guaranteed. The restricted SID space will be explicitly reserved for signed
+applications and each SID from this range will be cross-referenced to Vendor
+ID to ensure that each individual SID is authorised to use that particular
+Vendor ID. </p> <p>The SID can be explicitly specified for a particular executable
+or the UID can be used instead. However those two identifiers are always different
+entities in the kernel implementation. It is proposed that SIDs will come
+from a specified range of UID values, and that Symbian will provide a new
+mechanism to allocate suitable values. </p> <p id="GUID-088EA3F8-5209-56F4-9B24-90BF819D10E3"><b>3.3.2
+Vendor Identifier (VID)</b> </p> <p>Executables can contain a vendor identifier
+that allows unique identification of the source of the executable. It is expected
+that the VID will be used for genuine cases like restricting a tentative server
+API from a specific vendor to its applications. While there is a potential
+danger that this VID would be used for anti-competitive purposes only, we
+recognise that there are enough real cases where it would be useful, and that
+it would therefore be better for the platform to deliver a standard framework
+rather than risking developers to implement their own solutions. To prevent
+stealth of vendors’ identity, the software installer will reject the installation
+of executables with VIDs delivered in an unsigned installation package. </p> <p id="GUID-0F55AE1B-0407-5CD8-A678-D0AE39D81406"><b>3.3.3 Kernel’s &amp; Loader’s
+role</b> </p> <p>As for capabilities, the kernel is responsible for holding
+both the application and vendor identity for each process. When a process
+is created, these properties are read from the associated program, held in
+kernel’s memory and are guaranteed not to change during its lifetime. However,
+unlike capabilities, there is no rules model to be followed regarding shared
+library. Each process is free to load shared libraries with any value of Secure
+ID and Vendor ID, regardless of the identifier values in the EXE from which
+the process was created. For this reason, capabilities are the core of the
+security architecture; process identifiers are intended for use in tandem
+with, rather than as a replacement for, capabilities. </p> <p id="GUID-03558B99-2B98-579C-AD59-CF66BD98F69F"><b>3.4
+Data Caging </b> </p> <p id="GUID-394AF3B0-FA51-5C99-8FBD-73A707AB177C"><b>3.4.1
+Caging processes </b> </p> <p id="GUID-9C9307AE-4B3C-5CE8-B66C-FE3E40A2C1C4"><b>3.4.1.1
+Location-based concept</b> </p> <p>Data caging involves separating code from
+data in the file system such that a simple trusted path is created on the
+platform. </p> <ul>
+<li id="GUID-C7AB7740-5EEA-5513-8FEC-6F96C7E52AB2"><p>A new <codeph>/sys</codeph> directory
+hierarchy is created, with all executable code residing in the <codeph>/sys/bin</codeph> subdirectory.
+The central idea is that by “caging” non-TCB processes into their own part
+of the file system, the <codeph>/sys </codeph> directory becomes hidden to
+them. The kernel and file server would check that a client process had Tcb
+or AllFiles capability before allowing any access to the <codeph>/sys</codeph> sub-tree.
+In addition, the loader would disallow any attempt to execute code residing
+elsewhere than <codeph>/sys/bin</codeph>. </p> </li>
+<li id="GUID-D710C501-9913-565A-9BD1-FCE531AA7BC5"><p>A new <codeph>/resource</codeph> directory
+is created, which is public, but read-only for non-TCB processes. The purpose
+is to allow read-only files to be publicly shared without compromising their
+integrity. </p> </li>
+<li id="GUID-4C6FB170-58EF-580B-B787-3E27DA422CAF"><p>All executable applications
+have got access to their own restricted area of the file system, which consists
+of the sub-tree below the secure directory <codeph>/private/&lt;app_SID&gt;</codeph>,
+where SID is a Secure Identifier used to distinguish between the <codeph>/private</codeph> sub-directories.
+Applications can, for example, use their sub-tree to hold various private
+data files. </p> </li>
+</ul> <p>Directories not under <codeph>/sys</codeph> or <codeph>/private</codeph> or <codeph>/resource</codeph> are
+public and can be read from and written to by any program. This allows the
+use of standard file system hierarchies that may be available on removable
+media. In essence, data caging involves caging processes by default into their
+own small part of the file system. This means that there is default protection
+of per-application and per-server data from other processes. Without data
+caging, it would become necessary to introduce access control lists into the
+file system to prevent rogue apps bypassing the capability model and simply
+reading databases directly from files. In addition, the scheme affords further
+protection against the threat of malicious replacement of executables in <codeph>/sys/bin</codeph>.
+In that sense, data caging is a simpler and more robust. </p><table id="GUID-1F570514-0235-4164-9EE4-93C2748768F0"><title>Data
+caging – capabilities for data caging</title>
+<tgroup cols="11"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/><colspec colname="col9"/><colspec colname="col10"/><colspec colname="col11"/>
+<tbody>
+<row>
+<entry/>
+<entry nameend="col3" namest="col2"><filepath>/resource</filepath></entry>
+<entry nameend="col5" namest="col4"><filepath>/sys</filepath></entry>
+<entry nameend="col7" namest="col6"><filepath>/private/ownSID</filepath></entry>
+<entry nameend="col9" namest="col8"><filepath>/private/anyOther</filepath></entry>
+<entry nameend="col11" namest="col10"><filepath>/anyOther</filepath></entry>
+</row>
+<row>
+<entry>Capabilities  </entry>
+<entry>Read</entry>
+<entry>Write</entry>
+<entry>Read</entry>
+<entry>Write</entry>
+<entry>Read</entry>
+<entry>Write</entry>
+<entry>Read</entry>
+<entry>Write</entry>
+<entry>Read</entry>
+<entry>Write</entry>
+</row>
+<row>
+<entry>None</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+<entry>No</entry>
+<entry>No</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+<entry>No</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+</row>
+<row>
+<entry>AllFiles</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+</row>
+<row>
+<entry>TCB</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+<entry>No</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+</row>
+<row>
+<entry>AllFiles+TCB</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Note that data caging is not a huge conceptual leap from the previous
+version of the Symbian platform. Historically only the kernel had an unrestricted
+view of the real machine running the Symbian platform. Each Symbian platform
+process had its own view of the processor’s address space that was independent
+of all other processes. This was arranged and policed by the kernel and MMU
+hardware. </p> <p>For simplicity it has been decided that the filing system
+is not aware of the meaning of “private user data”. A file cannot be flagged
+as so. It is the responsibility of each process dealing with user data to
+manage ReadUserData and WriteUserData capabilities. Furthermore in case of
+databases, the file itself can contain user private and public data and therefore
+trying to assign a level of privacy to a file is not obvious. </p> <p id="GUID-89E1EC84-A373-53AF-A586-D5FF635B0B62"><b>3.4.1.2
+Import directory concept</b> </p> <p>Many Symbian frameworks support the concept
+of plug-ins: they allow new code to contribute to existing native frameworks.
+Application recognisers are a good example of such plug-ins. In order to be
+identified as valid plug-ins they often provide a resource file that must
+be read by process users. When the process user is unique, it makes to place
+this resource file under its private directory. However, following the rules
+previously stated that should be impossible. To conciliate both points of
+view without compromising security, the rules described below have been defined: </p> <ul>
+<li id="GUID-B457A88B-AABA-5F44-B054-A9C2873D3693"><p>If an import directory
+exists immediately under the private path of a process, Software Install is
+allowed to put files in it from any installation package file. </p> </li>
+<li id="GUID-9A510686-D67A-5B1C-8FC7-F47FE9D64D38"><p>If there is no import
+directory immediately under the private path of a process, Software Install
+rejects the installation of any file not extracted from this process installation
+package. </p> </li>
+<li id="GUID-3E197C12-3108-50CF-95EA-28E70C95F51A"><p>A process having an
+import directory under its private directory accepts that these files might
+be malevolent and are not part of its own installation package. The correct
+level of trust that can be given to those files is process dependent. </p> </li>
+<li id="GUID-2DAF2C55-178F-573F-860E-CFD7C6149A1A"><p>The creation of an import
+directory is under the responsibility of the process developer. </p> </li>
+</ul> <p id="GUID-C79F6795-744F-5ED0-8F3F-5720FF1BE229"><b>3.4.1.3 Sharing
+files and data</b> </p> <p>To help share data across processes, current operating
+system features have been enhanced and new ones have been implemented. File
+handles and memory chunks can be shared between processes. These methods can
+be used to get temporary access to a specific file or memory area that is
+otherwise private. The recipient of the shared handle will only be able to
+use the file in the mode chosen by the file opener. Also a highly efficient
+public &amp; subscribe service has been implemented to enable secure asynchronous,
+fast distribution of data. </p> <p id="GUID-93AD2587-56D2-5553-84D4-C98FC6BA951C"><b>3.4.2
+Removable media</b> </p> <p>Executables installed by the device on removable
+media will be hashed. This hash as well as the executable’s capability set
+are securely stored on the device. At load time, the loader verifies the hash
+before accepting to perform the operation. If the verification fails, the
+executable will not be loaded. If the executable is unknown (no associated
+hash), the executable is loaded without any capability and its SID and VID
+are assigned to unknown. </p> <p>Although it is out of the scope of Symbian
+Secure Architecture, some hardware features can increase the level of security
+of removable media when off the device. For instance, a password-protected
+card will prevent a desktop rogue application to get or modify information
+stored on card without the consent of the user. </p> <p>As a result Symbian
+Secure Architecture does not guarantee integrity and confidentiality of files
+stored under ‘/private’ and /resource when off the device. Each program should
+decide what integrity checks are appropriate and what level of confidentiality
+they may provide. </p> <p id="GUID-6478908A-06BB-5FF6-BBFA-4ECE3B815A8A"><b>3.5
+SWInstall – Enhancing perimeter security</b> </p> <p>The software installer
+has been changed substantially to support the process capability model and
+data caging. In addition, SWInstall now conforms to an appropriate Public
+Key Infrastructure. As different manufacturers and network operators may have
+different security policy, SWInstall has been redesigned to support a number
+of different security policies. </p> <p id="GUID-6F7D320F-97C3-5792-9D48-B960489A0A2B"><b>3.5.1
+Software validation</b> </p> <p>A SIS file may contain zero or more signatures,
+and the set of capabilities that it needs. The software installer verifies
+each signature and constructs a certificate chain back to a trusted root.
+A configuration setting controls whether the software installer will check
+the revocation status of the certificate using OCSP. In addition, it is possible
+to mark SW Install root certificates as 'mandatory' certificates. If a mandatory
+certificate exists, then all installable packages must be signed with it,
+or installation fails. This enables the holder of the associated key to hold
+a 'veto' over what software may be installed.  </p> <p id="GUID-5C6114AC-F485-5720-BB97-9AEAA8F04E75"><b>3.5.2
+Capability calculation</b> </p> <p>Each SW Install root certificate is associated
+with a set of the capabilities that it is allowed to grant, called ‘meta-capabilities’.
+The installer calculates the largest set of capabilities that the installable
+may be granted as the union of the meta-capabilities associated with all successfully
+validated signatures. </p> <p>A configuration setting determines which additional
+capabilities the user is allowed to grant if the set of permitted capabilities
+is less than the capabilities requested in the SIS file.The installer will
+never install software with less than its requested set of capabilities: it
+is either installed with all of them, or it is not installed at all. </p> <p id="GUID-FAD0881C-EF83-5B0A-BD9E-B18AC6529A4F"><b>3.5.3 Configuring the installer</b> </p> <p>At
+product build time, all configuration settings may be freely determined. In
+the field configuration settings may be altered to a more limited degree.
+For instance, the device manufacturer may decide or not to let the user the
+freedom to grant some capabilities at install time. It should be noted that
+a key feature of the scheme is that install packages don’t necessarily have
+to be signed in order to be installed and granted capabilities. This is something
+that OEMs may not want to permit but at least we provide the option should
+the system integrator (manufacturer or potentially network operator) want
+to permit such an installation option. This might be an attractive option
+for developers wishing to avoid the hassle of code signing. </p> <p id="GUID-F63BC928-31A0-5FD1-B846-48B678F06BFE"><b>3.5.4
+Installation in place or dual phase installation</b> </p> <p>Symbian installation
+package files include a <i>SISSignedController</i> element which contains
+the information needed to install the files, together with a separate hash
+for each of the installable files. This is signed, and this signature is verified
+at installation time against one of the root certificates always present on
+the device. The integrity of the SISSignedController, and, by extension, of
+the hashes of the files in the archive, is therefore guaranteed by its signature,
+and Software Install keeps the SISSignedController for each installation on
+the device. For secure installation of executables provided on removable media,
+where the executables don’t need to be installed, the SISSignedController
+part of the installation can be provided on the card by itself, enabling Software
+Install’s standard authentication and other security measure to proceed as
+normal. </p> <p id="GUID-9527DAD1-61F3-56FA-AA64-0E58FB187495"><b>3.6 Secure
+backup and restore </b> </p> <p>Symbian is primarily concerned with the integrity
+of the backup, not with the confidentiality of any data that might be stored
+within it. Confidentiality of data, both during the transfer to the host computer
+and also on the host once backed-up, is out of the scope of the Symbian Security
+Architecture described in this document. </p> <p>The security architecture
+needs to consider three different types of files in the context of backup
+and restore. </p> <ol id="GUID-EB24EA75-D1CC-5792-8EEB-0F12AA327006">
+<li id="GUID-DC0AAA67-0969-5AA0-8DCF-0822DD6FF33E"><p> <i>Public files</i> are
+those stored in public directories. They can’t pose any threats to the integrity
+of the platform, and no special security measures need to be taken from the
+point of view of Platform Security when they are backed up and restored. They
+can be backed up using the traditional method of backup, known as <i>passive
+backup</i>. This requires no extra code on the part of the Symbian platform
+or on the part of any applications that might create or own public files. </p> </li>
+<li id="GUID-DC14C663-D4A9-58EA-B0A6-0E14CFB732F9"><p> <i>Private files</i> are
+those belonging to particular applications which store them in the <codeph>/private/</codeph> file
+hierarchy. The Symbian platform itself can’t know what these files are or
+what their sensitivity level might be, so the backup and restore policy regarding
+them is left under the control of each individual owning application. Applications
+can either specify in their resource files which private directories or files
+that they want copied via passive backup. Alternatively, they may make use
+of the <i>active backup</i> facilities provided by the secure platform. This
+enables those applications that wish to take advantage of them to backup and
+restore their private files securely, and are discussed in section 3.6.1 below. </p> </li>
+<li id="GUID-6B7B6670-9F95-5DA1-8945-BF79052A3509"><p> <i>Executable binaries</i> are
+those stored in the <codeph>/sys/bin/</codeph> directory. Were these to be
+restored from a backup in the same way as a simple restore of public files,
+this would represent a significant threat to the security of the device as
+Software Install would be fully bypassed and there would be no way of guaranteeing
+that executables had not been interfered with while they were stored off the
+secure device. The solution to this problem, discussed further in section
+3.6.2 below, is to use Software Install’s own mechanisms to back up executables
+and ensure their integrity on restore. </p> </li>
+</ol> <p id="GUID-6BADA2AA-519B-5A79-A2FA-EC9B6648BD1F"><b>3.6.1 Active Backup
+and Restore for Private Data</b> </p> <p>A process that owns private data
+and wants to use active backup and restore has to be able to provide all of
+the data that they wish to backup, and has to be able to receive the data
+for restore. In order to minimise the code and maintenance overheads, a standard
+set of reference functions will be provided in the OS that externalise from
+a directory tree and internalise to a directory tree. A process using active
+backup should use these functions to externalise its data on a stream for
+backup and signal when it has finished. For restoration it will internalise
+from a similar stream. The functions provided should be adequate for most
+data owning processes. Any processes which want more selective access will
+have to implement their own functions. </p> <p id="GUID-D122D4DC-0D32-5252-9B67-B3D66F3737D8"><b>3.6.2
+Backup and Restore of Executables via Software Install</b> </p> <p>As described
+in <xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita#GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B/GUID-F63BC928-31A0-5FD1-B846-48B678F06BFE">3.5.4</xref> each
+installation package file includes a <i>SISSignedController</i> with all the
+information needed to install the files in the SIS archive and the integrity
+of the SISSignedController is guaranteed by its signature. Since the only
+way to install something in <codeph>\sys\bin</codeph> is via Software Install,
+the stored SISSignedController elements can therefore be used during a backup
+operation to recreate versions of the SIS files originally used to install
+every executables present in <codeph>\sys\bin</codeph>. During the corresponding
+restore operation, the SISSignedController can once again be used to verify
+the integrity of the executable being restored and the validity of its digital
+signature against one of the root certificates always present on the device. </p> </section>
+<section id="GUID-830F2821-5614-5083-868C-0D6CEF6D4B0D"><title>4 Additional
+information</title> <p id="GUID-CAC87EF9-34AB-5B4B-BF5C-35D96730C12E"><b>4.1
+References</b> </p> <p>[1] High Level Requirements for Release 7.0 of the
+Symbian Platform v0.04, Mark Wilce, Symbian, March 2001. </p> <p>[2] “Creating
+a Secure WinCE 3.0 Device”, Maricia Alforque, Microsoft Corp., © October 2000, <xref href="http://msdn.microsoft.com/library/techart/winsecurity.htm" scope="external">http://msdn.microsoft.com/library/techart/winsecurity.htm</xref> </p> <p>[3] Mobile Station Application Execution Environment (MExE): Functional
+Description, Stage 2, 3GPP TS 23.057 v4.0.0, <xref href="ftp://ftp.3gpp.org/Specs/2000-12/Rel-4/23_series/23057-400.zip" scope="external">ftp://ftp.3gpp.org/Specs/2000-12/Rel-4/23_series/23057-400.zip</xref> </p> <p>[4]
+The -Inevitability of Failure: The Flawed Assumption of Security in Modern
+Computing Environments, Loscocco et al, National Security Agency, October
+1998, <xref href="http://www.cs.utah.edu/flux/fluke/html/inevitability.htm" scope="external">http://www.cs.utah.edu/flux/fluke/html/inevitability.htm</xref> </p> <p>[5] <xref href="http://www.theregister.co.uk/content/4/17821.html" scope="external">http://www.theregister.co.uk/content/4/17821.html</xref> </p> <p>[6]
+Security Analysis of the Palm Operating System and its Weaknesses Against
+Malicious Code Threats, Kingpin and Mudge, @Stake, April 2001 formerly at <xref href="http://www.atstake.com/research/reports/security_analysis_palm_os.pdf" scope="external">http://www.atstake.com/research/reports/security_analysis_palm_os.pdf</xref> but
+now at <xref href="http://www.quands.info/pdf/security_analysis_palm_os.pdf" scope="external">www.quands.info/pdf/security_analysis_palm_os.pdf</xref>. </p> <p id="GUID-6A8792B7-03AD-505D-892A-1D08ED4C81AB"><b>4.2 Glossary</b> </p> <table id="GUID-60365022-B96D-50EA-BA49-94AB5AD85CD5">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Term</entry>
+<entry>Meaning</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>API </p> </entry>
+<entry><p>Application Programming Interface </p> </entry>
+</row>
+<row>
+<entry><p>CA </p> </entry>
+<entry><p>Certificate Authority </p> </entry>
+</row>
+<row>
+<entry><p>DLL </p> </entry>
+<entry><p>Dynamic Link Library </p> </entry>
+</row>
+<row>
+<entry><p>executable </p> </entry>
+<entry><p>A file containing native code: libraries (DLL) and programs (EXE) </p> </entry>
+</row>
+<row>
+<entry><p>F32 </p> </entry>
+<entry><p>The Symbian Platform File Server </p> </entry>
+</row>
+<row>
+<entry><p>IPC </p> </entry>
+<entry><p>Inter Process Communication </p> </entry>
+</row>
+<row>
+<entry><p>OEM </p> </entry>
+<entry><p>Original Equipment Manufacturer </p> </entry>
+</row>
+<row>
+<entry><p>PKI </p> </entry>
+<entry><p>Public Key Infrastructure </p> </entry>
+</row>
+<row>
+<entry><p>SWInstall </p> </entry>
+<entry><p>Software Install – provides service of native application installation. </p> </entry>
+</row>
+<row>
+<entry><p>UI </p> </entry>
+<entry><p>User Interface </p> </entry>
+</row>
+<row>
+<entry><p>UID </p> </entry>
+<entry><p>Unique Identifier. In the Symbian platform this is a 32-bit word
+which is used to uniquely identify an object or its type. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1E8904E3-43AC-5332-A2EF-F11F5728DBE8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1E8904E3-43AC-5332-A2EF-F11F5728DBE8" xml:lang="en"><title>Application Layer Protocols</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032"><title>Reading Remote SDP Service Attributes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The data for a service record is contained in attributes. Each attribute has a well-known ID, a type, and a value. </p> <p>Attribute requests take service record handles found as a result of service searches and return attributes. You can limit the attributes returned to a specific attribute, or to a range of IDs. </p> <section><title>How to read service attributes</title> <p>As with a service search, service attribute search results are returned through asynchronous callbacks to an <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> interface, which the querier must implement. </p> <p><b>Basic Procedure</b> </p> <p>The steps to read attributes are as follows: </p> <ol id="GUID-57B7E72F-16E6-5304-B860-900325A5F403"><li id="GUID-46729165-B8B4-58E6-AD3F-59A33C2083F9"><p>Create a <xref href="GUID-7DA0506B-F2C1-374B-847F-8DF070BD2FE9.dita"><apiname>CSdpAttrIdMatchList</apiname></xref> object in which to specify the attributes to be retrieved (called the match list). </p> </li> <li id="GUID-AEFC4866-2957-573D-A65A-F705FD5F6EB8"><p>Add the attribute IDs to the match list using <xref href="GUID-7DA0506B-F2C1-374B-847F-8DF070BD2FE9.dita#GUID-7DA0506B-F2C1-374B-847F-8DF070BD2FE9/GUID-69FF9400-A3F9-3DCA-8231-8EAF019014F2"><apiname>CSdpAttrIdMatchList::AddL()</apiname></xref>. IDs are wrapped in a <xref href="GUID-E2E5E504-FB8E-38B3-80C8-C6C4946AD8C5.dita"><apiname>TAttrRange</apiname></xref> type, which can specify a single attribute or a range of IDs. </p> </li> <li id="GUID-81920A53-C0D4-57DF-BBDA-77FC6CDFA77B"><p>Start the query by calling <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita#GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6/GUID-5D0C3302-1D4B-3B55-94F8-29F97D74643A"><apiname>CSdpAgent::AttributeRequestL()</apiname></xref>. As well as the match list, specify the record handle of interest. </p> </li> </ol> <p><b>Reading Remote Attributes</b> </p> <p>The following code fragements may be used, in an appropriate context, to query a remote device's SDP database for the attribute indicated by the attribute UUID. The steps are given here: </p> <ol id="GUID-E445C4DC-DA70-5F68-A726-954D5B46C31B"><li id="GUID-2E12E6AA-E32B-55B4-98CA-2B8DBE654461"><p>Create a match list. </p> <p>The following code fragements assume <codeph>agent</codeph> is a <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita"><apiname>CSdpAgent</apiname></xref>, and <codeph>serviceHandle</codeph> a service record handle </p> <codeblock id="GUID-8BAF374C-EE7C-5255-A247-3087F041C584" xml:space="preserve">CSdpAttrIdMatchList* matchList = CSdpAttrIdMatchList::NewL();
+CleanupStack::PushL(matchList);</codeblock> </li> <li id="GUID-9A72886D-4E70-53FE-B806-6B8F4338979A"><p>Add an attribute ID to match list. </p> <codeblock id="GUID-E2842F48-2567-582A-A3EB-ED431C965E12" xml:space="preserve">matchList-&gt;AddL(TAttrRange(0x1000));</codeblock> </li> <li id="GUID-11A32341-09A3-5A25-9CAC-2F1A682772D3"><p>Set the match list on the agent. </p> <codeblock id="GUID-90E25C49-23B6-542A-B590-65DFCD3F30CA" xml:space="preserve">agent-&gt;AttributeRequestL(serviceHandle, *matchList);
+
+CleanupStack::PopAndDestroy(); //matchList</codeblock> </li> </ol> <p><b>Note </b> </p> <p> <codeph>CSdpAgent::AttributeRequestL()</codeph> is an overloaded function. Some of the overloads allow you to supply an <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita"><apiname>MSdpElementBuilder</apiname></xref> object: if it is supplied, then the object will be called with each type found in the response. </p> </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Agent tutorials are shown below: </p> <ul><li id="GUID-96E64157-9833-538C-AA29-AE0AA0A2CD7F"><p> <xref href="GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659.dita">Querying the SDP database</xref>  </p> </li> <li id="GUID-0FAD2FB2-A6BF-571B-9D4C-0AB05B4C8574"><p> <b>Reading remote SDP service attributes</b> - This document </p> </li> <li id="GUID-DE096F8B-F1F8-5AD5-BC9F-A698129CC59F"><p> <xref href="GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393.dita">Handling SDP query results</xref>  </p> </li> </ul> <p>Also refer to the <xref href="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita">Bluetooth Service Discovery Agent Overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-1EB9BF25-DFF4-42CA-926C-D26409A2868E_d0e60551_href.png has changed
Binary file Symbian3/SDK/Source/GUID-1EB9BF25-DFF4-42CA-926C-D26409A2868E_d0e61050_href.png has changed
Binary file Symbian3/SDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445-master.png has changed
Binary file Symbian3/SDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e162719_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1ECCCAA0-2E27-5E46-968D-4EBC4E5CE259.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1ECCCAA0-2E27-5E46-968D-4EBC4E5CE259" xml:lang="en"><title>Application
+Framework Example Code</title><shortdesc>Example code for Application Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1EDE641E-EF8C-542D-A7B3-7C496D41EF3D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1EDE641E-EF8C-542D-A7B3-7C496D41EF3D" xml:lang="en"><title>Thread
+and Process ID</title><shortdesc>Each thread and process is allocated an ID which is unique across
+all threads and processes.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> The ID is allocated when the thread or process is created. The main motivation
+for the ID is to provide assistance for debuggers; it provides an easy way
+to identify threads and processes.</p>
+<p>In general, applications and servers can use IDs for thread and process
+identification or, indeed, for whatever purpose that suits them.</p>
+<p>While a thread ID is a property of the thread, it can be retrieved from
+the thread by calling <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-4B001A02-9F18-376E-868E-A2BB69637ED5"><apiname>RThread::Id()</apiname></xref>. The ID is encapsulated
+by a <codeph>TThreadId</codeph> object that is returned by the function.</p>
+<p>The <codeph>TThreadId</codeph> class provides <codeph>==</codeph> and <codeph>!=</codeph> operators
+for comparing two thread IDs.</p>
+<p>The process ID is similar; it can be retrieved from the process by calling <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-F35D5AF1-46CC-3F24-AFE6-4539EE470E3D"><apiname>RProcess::Id()</apiname></xref>,
+and is encapsulated by a <codeph>TProcessId</codeph> object returned by the
+function.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1F12E3F5-45B2-55EC-B021-00338277C608"><title>SQL DB overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Used to access and query relational databases using the SQL query language. </p> <section><title>Purpose</title> <p>The SQL DB library allows developers to access and query relational databases using the SQL query language. It also provides functionality for securing databases and maintaining data integrity. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> <p><b>SQL DB library details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-590E4683-542E-54D2-95FC-7FF83C728B95"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath>sqldb.dll</filepath>  </p> </entry> <entry><p> <filepath>sqldb.lib</filepath>  </p> </entry> <entry><p>The Symbian OS implementation of SQL. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural relationship</title> <p>The SQL database service is implemented using the standard Symbian OS client-server model. </p> <p><b>Description</b> </p> <p>The SQL DB library allows you to access and query databases. </p> <p><b>Accessing and querying databases</b> </p> <p>By accessing a database is meant creating, opening and closing it. By querying a database is meant any read or write operation performed by an SQL query, not just data retrieval. </p> <p><b>Accessing databases</b> </p> <p>Database access operations include </p> <ul><li id="GUID-4176F81A-CC3E-5253-8CC3-BBBD99D69DD2"><p>creating and deleting databases </p> </li> <li id="GUID-A667905B-7B29-5B97-886E-2104762E9105"><p>creating security policies and applying them to databases, </p> </li> <li id="GUID-DC874CD5-B54D-58EE-B538-BCA7EBA2F238"><p>attaching and detaching databases to each other, and </p> </li> <li id="GUID-7B127B9A-608E-53CC-A81B-CC406D8AD8EC"><p>opening and closing databases. </p> </li> </ul> <p><b>Querying databases</b> </p> <p>Database query operations include: </p> <ul><li id="GUID-E343FB81-F15E-50CF-BC37-B42A0CFAAB25"><p>preparing an SQL query for use within Symbian OS, </p> </li> <li id="GUID-D8815872-91E6-529D-8FD0-21C5EE4263B9"><p>indexing variables inside the query to correspond to data table columns, </p> </li> <li id="GUID-2FD10588-2F4C-5069-95CE-681F948A35E0"><p>binding values to variables inside the query, and </p> </li> <li id="GUID-AA74A3A6-5905-5A18-B632-AC71D4F720C0"><p>executing the query, </p> </li> <li id="GUID-519C582D-11DC-51AC-AB29-B66891542451"><p>using the result of the query, and </p> </li> <li id="GUID-FEE60608-AABF-5D86-9B2D-98FECBE38E32"><p>closing the query. </p> </li> </ul> </section> <section><title>Key SQL DB classes</title> <p>The key classes that make up the SQL DB component are as follows: </p> <ol id="GUID-E1BC7A5F-7F6A-596C-AE24-F618B323B38B"><li id="GUID-352B4A83-96FC-5ABB-BBF3-9A16DFFA2818"><p> <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref>  </p> <p>This class represents a database and provides the functionality to: </p> <ul><li id="GUID-206EF4BF-091B-5D41-BBF7-45C5E6341762"><p>creates a secure shared, non-secure shared or private database </p> </li> <li id="GUID-05F39286-2C6D-5389-8196-8168105CACFD"><p>opens and closes named (and previously created) databases </p> </li> <li id="GUID-B3BDE645-F6E5-52B2-AB6D-7D29C48AE7E8"><p>attaches/detaches existing databases </p> </li> <li id="GUID-BEDF12B3-EFD0-50D5-803B-43570BD5CDBE"><p>copies named databases </p> </li> <li id="GUID-E8FFDA2B-44CA-5052-A268-BF9F00A52F0D"><p>deletes named databases </p> </li> <li id="GUID-B551CE70-E201-509B-9182-71677BA41854"><p>retrieves the security policy </p> </li> <li id="GUID-46BC8711-582F-50D4-B426-E3E153EA690A"><p>sets the isolation level (currently supported levels - <xref href="GUID-26BE2671-7C38-3EC4-A742-5DBADBC97377.dita"><apiname>EReadUncommited</apiname></xref>, <xref href="GUID-0B361830-BE3B-3199-B62F-7EFB4490D70E.dita"><apiname>ESerializable</apiname></xref>) </p> </li> <li id="GUID-48139D95-1994-589B-9F69-F37E6D3E013B"><p>Executes SQL statements (however, this functionality is intended for SQL statements that do not return data rows – see RSqlStatement for executing queries that return data). </p> </li> <li id="GUID-34DB38FF-1937-5AC5-9D21-58AAE9816967"><p>retrieves database file size and free space </p> </li> <li id="GUID-643F5EE3-6765-57BE-8A73-A99EA0D9081B"><p>compacts the database </p> </li> <li id="GUID-1C010A50-2E2E-50E5-80F6-DA4CA9C99FAD"><p>manages reserved drive space </p> </li> </ul> <p>The main responsibilities of this class are: </p> <ol id="GUID-AE265DBB-47F8-582B-8DEB-A4B968474780"><li id="GUID-BDF4F7EE-3381-54E2-9760-638903BD0D3A"><p>create a secure or a non-secure new database, </p> </li> <li id="GUID-66E15DB8-6D7D-5C43-9580-21A0F54871CA"><p>open an existing database, </p> </li> <li id="GUID-6135E1FD-70AF-5FFD-933D-8465BF0FD775"><p>close a database, </p> </li> <li id="GUID-3ED09A98-48DC-597F-BB84-CCFD6CE4DBB7"><p>copy a database, </p> </li> <li id="GUID-81E2B7ED-F6D4-5B8D-89CE-7900DE2787B7"><p>delete a database, </p> </li> <li id="GUID-A3BB27E4-94B9-5E31-91AB-952DE1A23476"><p>attach a secondary database to a primary database, </p> </li> <li id="GUID-07ED62FB-5E9F-575D-A871-385455A737D7"><p>detach a secondary database from a primary database. </p> </li> </ol> </li> <li id="GUID-EC9C979B-16C9-553B-9D03-7F389724C6CC"><p> <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref>  </p> <p>This class represents an SQL statement and provides the functionality to: </p> <ol id="GUID-39440DE3-644C-5C6F-90AB-A9C59C2CBFF4"><li id="GUID-A346CC62-85D6-5A55-AA21-DC9860A83761"><p>preparing SQL statements for execution </p> </li> <li id="GUID-A536460E-B827-5030-ACD5-685D27BD4E6E"><p>resetting previously prepared SQL statements </p> </li> <li id="GUID-1EA39BCD-538B-5D8D-855E-3A9DEDE7CFF9"><p>closing SQL statements </p> </li> <li id="GUID-A8966577-28CA-5F5F-95F3-2944EFDF3808"><p>binding substitutable parameters into prepared SQL statements </p> </li> <li id="GUID-BC969EDD-8F21-5B22-940B-AC81C223F77D"><p>executing prepared SQL statements (two methods provided: (a) Next() for SELECT statements and (b) Exec() for everything else) </p> </li> <li id="GUID-A1015C1C-E59B-5CB6-9098-C96B4658AC76"><p>iteration through the result set. </p> </li> <li id="GUID-664F550D-4EBE-5270-AEB7-18229F4D050A"><p>Retrieving the column count of the retrieved record(s) </p> </li> <li id="GUID-55C6C2FA-7C00-5091-B775-CAB43114564B"><p>Retrieving the type, declared type, index, size and value of a particular column of the retrieved record(s) </p> </li> </ol> <p>The main responsibilities of this class are: </p> <ul><li id="GUID-002C6394-E32A-5EA3-BA89-58B8FCA541FD"><p>prepare a statement, </p> </li> <li id="GUID-8DD88F58-D8A5-5CCD-9C81-8004C41A7F3A"><p>index parameters of a statement to columns of a data table, </p> </li> <li id="GUID-E4D81BB3-9674-5AB4-A4B8-8B500A7D5F1B"><p>bind values to parameters of the statement, </p> </li> <li id="GUID-A16AD4D3-D7D6-5351-93E1-4C64AC94C07B"><p>reset the values of parameters of the statement, </p> </li> <li id="GUID-2C17E9DF-D64E-577E-A56F-5F59FBF3C98D"><p>execute the statement, </p> </li> <li id="GUID-C0FE1771-9276-5D66-9E48-66DBEA5264D2"><p>read the result of the statement, </p> </li> <li id="GUID-3C603506-470D-5F24-88AF-FA23F77DB899"><p>close the statement. </p> </li> </ul> </li> <li id="GUID-EC6E7C22-C3C3-5C1A-9456-24349A64EE2F"><p> <xref href="GUID-56C52D43-C4A9-3B31-B154-CA1E77693F57.dita"><apiname>RSqlSecurityPolicy</apiname></xref>  </p> <p>This class holds the collection of user permissions that make up a security policy for a secure database. </p> </li> </ol> </section> <section><title>Using SQL DB</title> <p>The main uses of the SQL DB are: </p> <ul><li id="GUID-6FD03738-53E7-550A-8A03-9793D7CA0E36"><p>access a database (create or opening an existing database), </p> </li> <li id="GUID-811B026A-65A4-597E-B783-0D62A1F92659"><p>give a database a security policy, if needed, </p> </li> <li id="GUID-F777C9E5-CD9B-5705-B119-A6D96FA5B4BE"><p>query a database (select, insert, modify and delete data), </p> </li> <li id="GUID-78E18949-3725-5661-BE09-45594453959E"><p>close a database (and possibly delete it). </p> </li> </ul> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>Symbian SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041" xml:lang="en"><title>How to
+allocate buffers</title><shortdesc>Explains the functions to create and allocate flat and segmented
+buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Allocating buffers is simple: use the desired class’s static <codeph>NewL()</codeph> function.
+You must specify a <i>granularity</i>, whose meaning is particular to the
+buffer type.</p>
+<section id="GUID-35823578-F609-41ED-B4A3-00BAE20C4AAC"><title>Flat buffer</title> <p>To allocate a flat buffer, use <codeph>CFlatBuf::NewL()</codeph>.
+The granularity in this case means the number of bytes by which the buffer
+will be re-allocated, whenever expansion is necessary. If expansion by a greater
+amount than this is required, the next highest multiple of the granularity
+will be used.</p> <p>In this example, the buffer pointer is pushed to the
+cleanup stack for the lifetime of the buffer. If any operation involving the
+buffer should leave, the buffer will be destroyed. In real use, the buffer
+pointer would be stored as member data, and care should be taken to ensure
+that the consequences of a leave are not fatal to the application. For example,
+if the buffer is being used to store a word processor document, an attempt
+to add a character may fail due to lack of memory. This should never cause
+the entire document to be destroyed! Instead, the editing code should function
+in such a way that the update is either implemented successfully, or no change
+is made to the document.</p> <p>The function <codeph>StandardBufferStuffL()</codeph> is
+one which takes a <codeph>CBufBase</codeph> type.</p> <codeblock id="GUID-EF6F9CDB-0D9A-5AB8-9BBC-958DEE5C382E" xml:space="preserve"> // do flat buffer tests
+ CBufFlat* flatBuf=CBufFlat::NewL(4);
+ CleanupStack::PushL(flatBuf);
+ StandardBufferStuffL(flatBuf);
+ CleanupStack::PopAndDestroy();</codeblock> </section>
+<section id="GUID-0E671A5E-99A9-4ED6-9CA1-519BA5E3A8D9"><title>Segmented buffer</title> <p>A segmented buffer is allocated
+in a similar way to a flat buffer. The granularity in this case specifies
+the size of each segment. During buffer operations, each segment may contain
+less data than the granularity. After a compress, data is optimally distributed
+to segments, so that all segments except possibly the last one are full.</p> <p>During
+their lifetime, all standard buffer operations can be performed on either
+flat or segmented buffers. This is shown in the examples above by calling <codeph>standardBufferStuffL()</codeph> with
+both a flat and a segmented buffer pointer. The argument to this function
+is a <codeph>CBufBase*</codeph>.</p> <p>The granularities chosen for these
+examples are much smaller than would be used in most real applications. </p> <codeblock id="GUID-70676BB5-F806-5860-A96D-77EF0897FFA7" xml:space="preserve"> // do segmented buffer tests
+ CBufSeg* segBuf=CBufSeg::NewL(4);
+ CleanupStack::PushL(segBuf);
+ standardBufferStuffL(segBuf);
+ CleanupStack::PopAndDestroy();</codeblock> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-E3DD768F-752F-5414-9E9A-86E046806903.dita">Space management
+and granularity</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F68D172-1090-5930-BD7B-AE7276667104.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1F68D172-1090-5930-BD7B-AE7276667104"><title>How to create streams</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Write streams</title> <p>The following code fragment shows how a write stream is created. A write stream is represented by an instance of the <codeph>RStoreWriteStream</codeph> class and an object of this type can be created on the program stack.</p> <p>Use the <codeph>CreateL()</codeph> or <codeph>CreateLC()</codeph> member function of <codeph>RStoreWriteStream</codeph> to create a new stream in a store and return its stream ID.</p> <codeblock id="GUID-959ABC13-9EFE-5CD5-834E-DE744E1D506B" xml:space="preserve">...
+RStoreWriteStream outstream;
+TStreamId id = outstream.CreateLC(*store);
+...
+CleanupStack::PopAndDestroy();
+...</codeblock> <p><codeph>store</codeph> is a pointer to an already opened stream store.</p> <p>Some stores allow their existing streams to be modified, for example, by overwriting or appending. To open an existing stream for overwriting, use <codeph>OpenL()</codeph> or <codeph>OpenLC()</codeph> and identify both the store and the stream:</p> <codeblock id="GUID-3815630B-ADCE-5251-8283-CF4488C9E2BF" xml:space="preserve">...
+RStoreWriteStream outstream;
+TStreamId id;
+...
+outstream.CreateLC(*store,id);
+...
+CleanupStack::PopAndDestroy();
+...</codeblock> <p>In this code fragment, the id of the stream must be known before calling <codeph>CreateLC()</codeph>.</p> <p>Note that not all store types support the modification of existing streams. An attempt to open an existing stream for modification for these store types will <i>fail</i>. A direct file store is an example of a store which does <i>not</i> support the modification of existing streams. </p> </section> <section><title>Read streams</title> <p>The following code fragment shows how a read stream is created. A read stream is represented by an instance of the <codeph>RStoreReadStream</codeph> class and an object of this type can be created on the program stack.</p> <p>Use the <codeph>OpenL()</codeph> or <codeph>OpenLC()</codeph> member function of <codeph>RStoreReadStream</codeph> to open a stream for reading.</p> <codeblock id="GUID-DD8E19E5-0478-53D1-B370-9DA0E838B84F" xml:space="preserve">RStoreReadStream instream;
+TStream id;
+...
+instream.OpenLC(*store,id);
+...</codeblock> <p><codeph>store</codeph> is a pointer to an already opened stream store.</p> <p><codeph>id</codeph> identifies the stream to be opened.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1F6DA049-AC03-5122-8B91-32C007A41526" xml:lang="en"><title>SecureServerExample:
+Implementing the Policy Server Framework</title><shortdesc>This example demonstrates the use of the policy server framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> The example shows you how a server checks messages from a client against
+a security policy. It also shows you how to deal with the result of a security
+check. </p>
+<p>The following sections provide more information about this example application: </p>
+<section id="GUID-14AB89A0-C5AD-5598-ABA3-F1243CA00D97"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a84e1714-2cf0-4023-b3d3-d35217f4159d.zip" scope="external">SecureServer.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a84e1714-2cf0-4023-b3d3-d35217f4159d.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-D8761EA7-00C3-5273-A082-C3DE4AC2BFB9"><title>Description</title> <p>The
+server contains a simple counter. It can change the value of the counter.
+It can also write the value of the counter to a file. The server offers the
+following services to a client: </p> <ul>
+<li id="GUID-79AEF61F-24B7-55FC-88F2-73A3CA124597"><p>Increase the value of
+the counter by any number greater than 1. </p> </li>
+<li id="GUID-67736263-0785-558E-8FAA-B73CD05F3511"><p>Decrease the value of
+the counter by any number greater than 1. </p> </li>
+<li id="GUID-A7FE0EFE-EDA3-5394-AA6C-D34FFEBB2CD4"><p>Increase the value of
+the counter by 1. </p> </li>
+<li id="GUID-191ADD33-2EDC-5493-9F3B-F25AE2AF0708"><p>Decrease the value of
+the counter by 1. </p> </li>
+<li id="GUID-3B10E37A-7172-56EC-A6A2-50C3BC84A029"><p>Reset the counter to
+its default value. </p> </li>
+<li id="GUID-305441F7-6797-52C5-92F2-353C45A7260B"><p>Reset the counter to
+the value in the file <filepath>counter.dat</filepath>. </p> </li>
+<li id="GUID-9744CA5A-3D99-57F3-B596-D8145CC66494"><p>Save the counter value
+in the file <filepath>counter.dat</filepath>. </p> </li>
+<li id="GUID-42C92895-BD40-58C3-ABB2-0D3DD40CA78E"><p>Send the current value
+of the counter to a client. </p> </li>
+<li id="GUID-D6FF0681-5DC7-5605-83F2-4C225EF7520B"><p>Create, initialise and
+close a subsession. </p> </li>
+<li id="GUID-78587766-2027-5A3D-BE90-6FBF512DD252"><p>Send the current number
+of open subsessions to a client. </p> </li>
+</ul> <p>The client sends a message to the server to request one of these
+services. The server checks each request against its security policy. If the
+request fails the security check, the request is rejected. </p> <p>The security
+policy has the following rules: </p> <ul>
+<li id="GUID-AF85DEBB-0A7D-5794-912E-9382D31834CE"><p>If a client asks the
+server to increase the counter value by more than 10, the client ‘s SID value
+must be less than or equal to 0x70fffff5. </p> </li>
+<li id="GUID-007E3288-B47F-5E2C-AA3A-E21FE1251B41"><p>If a client asks the
+server to decrease the counter value by more than 10, the client ‘s SID value
+must be less than or equal to 0x70fffff5. </p> </li>
+<li id="GUID-2C3B7481-478F-5248-98D2-423D288D12C6"><p>If a client asks the
+server for the number of open subsessions, the client’s SID value must be
+0x70fffff0. </p> </li>
+<li id="GUID-BBBDAF33-5DC0-5D01-AEAF-89D36C834045"><p>If a client asks the
+server to save the counter value to the file <filepath>counter.dat</filepath>,
+the client must have both <codeph>ReadDeviceData</codeph> and <codeph>WriteDeviceData</codeph> capabilities. </p> </li>
+<li id="GUID-9D5144DB-D113-5AF9-9FBC-F31E9E5BA96F"><p>If a client asks the
+server to reset the counter value from the file <filepath>counter.dat</filepath>,
+the client must have both <codeph>ReadDeviceData</codeph> and <codeph>WriteDeviceData</codeph> capabilities. </p> </li>
+</ul> <p>The example application shows how you to code security policies.
+It also shows you the constants and classes that you must define to use the
+policy server framework. </p> </section>
+<section id="GUID-DD984CA6-90E7-4B7D-9876-356A7BBFEA26"><title>Class summary</title><p>This example demonstrates the following
+classes:<ul>
+<li><p><xref href="GUID-5BDFF5B1-DC1F-393A-879B-9D8DE080B4E2.dita"><apiname>CPolicyServer</apiname></xref></p></li>
+<li><p><xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref></p></li>
+<li><p><xref href="GUID-D82DEC7A-71C2-3004-BFC2-C82C009A2715.dita"><apiname>TVersion</apiname></xref></p></li>
+<li><p><xref href="GUID-D7D422D3-65E5-378B-8F52-6485BC5603A0.dita"><apiname>RMessage2</apiname></xref></p></li>
+<li><p><xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref></p></li>
+<li><p><xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref></p></li>
+<li><p><xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref></p></li>
+<li><p><xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita"><apiname>CObjectIx</apiname></xref></p></li>
+<li><p><xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase</apiname></xref></p></li>
+<li><p><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref></p></li>
+<li><p><xref href="GUID-1BBE1448-1DF8-33C4-BF9E-5A5F427AEE35.dita"><apiname>RSubSessionBase</apiname></xref></p></li>
+</ul></p></section>
+<section id="GUID-B9CD5974-18AA-5581-8BA5-8A1F2CFBC4E7"><title>Build</title> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian OS build process</xref> describes
+how to build this example. </p> <p>The <codeph>SecureServer</codeph> example
+builds the following binaries in the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath>)
+for Carbide.c++. </p> <ul>
+<li id="GUID-AAFBE9F2-D78B-53FD-8A3C-EF9A43EA6052"><p> <filepath>secureclient.exe</filepath>:
+This is the client executable file. It starts the server and shows the behaviour
+of the client. </p> </li>
+<li id="GUID-758E4591-2A54-5868-A73A-FCE5C31A2C70"><p> <filepath>secureserver.dll</filepath>:
+This is the DLL that contains the code for the server. This executable file
+must be built before <filepath>secureclient.exe</filepath> file. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F755804-70D6-5635-B2F7-06F03C8D4B74.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1F755804-70D6-5635-B2F7-06F03C8D4B74" xml:lang="en"><title>IMAP4
+MTM Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of the Internet Message Access Protocol
+(IMAP4) MTM. </p>
+<section><title>Purpose</title> <p>Provides retrieval and management of email
+on a remote Internet Message Access Protocol (IMAP4) server. </p> </section>
+<section><title>Architectural relationships</title> <p>The Messaging Middleware
+architecture defines a framework in which modules (MTMs) can be implemented
+that provide support for particular messaging protocols. A client MTM provides
+the API for application engines to use the protocol. The IMAP4 MTM API provides
+the Client MTM API, plus supporting classes for IMAP4, see <xref href="GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita">Email
+Overview</xref>. </p> </section>
+<section><title>Description</title> <p>The API has two key concepts: IMAP4
+Client MTM, and IMAP4 service settings. </p> <p><b>IMAP4 Client MTM</b> </p> <p>The
+IMAP4 Client MTM provides IMAP-specific operations, the most important of
+which are synchronising with a remote server, or folder on a remote server.
+Some generic messaging operations, such as sending messages (for which you
+should use SMTP), are not supported by the MTM. Extra functions are provided
+for obtaining and setting IMAP4 service settings. </p> <p>The IMAP4 Client
+MTM class is <xref href="GUID-2DEC2EBD-EC94-3BAF-AD9D-8900FCD1CABE.dita"><apiname>CImap4ClientMtm</apiname></xref> and it does not support many
+of the generic functions defined by the <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref> base class.
+The IMAP4 Client MTM implements the standard Client MTM APIs and extensions
+for the following operations: </p> <ul>
+<li id="GUID-BD531DC9-0308-5A6E-A6BD-8A21E7F83DD7"><p> <b>Connecting, disconnecting,
+synchronising, subscribing and unsubscribing folders </b>  </p> <p>These operations
+are accessible as commands available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. They are implemented as calls to the IMAP4 Server MTM. </p> </li>
+<li id="GUID-15A978DB-B7D0-5DD6-BE57-2A79B020B8FA"><p> <b>Send on next connection</b>  </p> <p>If
+the Client MTM gets a request to connect to an email server, it checks for
+the IMAP4 settings. . If the send on next connection option is set, the Client
+MTM launches the <filepath>autosend.exe</filepath> executable that handles
+sending messages waiting in the outbox. </p> </li>
+<li id="GUID-FD1C41EF-2B1D-5850-B14A-DC50CE94A053"><p> <b> Reply to and forward
+messages</b>  </p> <p>These are accessible through the <xref href="GUID-4E0F9B6F-C46B-34BA-BB8C-0A75014D31FD.dita"><apiname>ReplyL()</apiname></xref> and <xref href="GUID-3BBE6922-4F08-36AB-BAA9-2F37D6819794.dita"><apiname>ForwardL()</apiname></xref> classes
+of a Client MTM and are implemented as calls to the email utilities <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita"><apiname>CImEmailOperation</apiname></xref> class. </p> </li>
+<li id="GUID-7F025996-0ABD-50DE-BC2F-908AE7D3AB7D"><p> <b>Reply to, forward,
+create new, create receipt and forward as attachment </b>  </p> <p>These are
+accessible as commands available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. They are implemented as calls to <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita"><apiname>CImEmailOperation</apiname></xref>. </p> </li>
+<li id="GUID-78221799-2E57-5082-A66E-FF19BACD90AF"><p> <b>Querying connection
+status</b>  </p> <p>These commands let clients know whether the IMAP4 Server
+MTM is connected to an email server and whether it is currently processing
+a request. They are available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. The Client MTM requests the information from the Server
+MTM. </p> </li>
+<li id="GUID-850927D5-5A35-5468-904A-EA71FE11C5F8"><p> <b>Compound connection
+and synchronisation </b>  </p> <p>The IMAP4 Client MTM provides a compound
+operation that connects and synchronises with an IMAP4 server. This operation
+is implemented as a client-side object that combines requests to the IMAP4
+Server MTM. The client-side operation can complete the client request either:
+after the connection; after the connection and synchronisation; or after the
+connection, synchronisation, and disconnection. The client keeps requesting
+that the inbox be resynchronised at a configurable interval so new messages
+received in the inbox on the server appears under the IMAP4 inbox. The <xref href="GUID-1D7F2733-BC6F-30EA-A40D-C8573545CCB0.dita"><apiname>CImapConnectAndSyncOp</apiname></xref> class
+handles these compound operations. </p> </li>
+<li id="GUID-F666A79F-9623-5E93-8CB0-133CAA07FE83"><p> <b>Compound connect
+and copy, move or populate messages </b>  </p> <p>The IMAP4 Client MTM provides
+a compound operation that connects to an IMAP4 server and copies, moves, or
+populates messages. The implementation is provided by the <xref href="GUID-B9209668-D191-35F0-A02A-DABD6B1A706C.dita"><apiname>CImImap4GetMail</apiname></xref> class
+which makes callbacks into the IMAP4 Client MTM. </p> </li>
+<li id="GUID-1C58BE15-59F9-5915-8F5F-01374C87D071"><p> <b> Offline operations</b>  </p> <p>The
+IMAP4 Client MTM has a command to cancel offline operations. This is available
+through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> API of the Client MTM.
+The Client MTM passes the request to the Server MTM. </p> </li>
+</ul> <p><b>IMAP4 service settings</b> </p> <p>Settings for a service are
+associated with a service-type entry in the Message Server's Message Store.
+IMAP service settings, such as the user name and password, synchronisation
+strategy, and the maximum number of messages to synchronise are specified
+in this object. This is used by many IMAP components. </p> <p>The settings
+are loaded when a connection is made to the server. However, the settings
+are not actually stored in the message store, but in the device's Central
+Repository data store. </p> <p>Encapsulation of service settings is provided
+by the <xref href="GUID-55F11633-988C-39D5-ADE7-23C4966FD995.dita"><apiname>CImImap4Settings</apiname></xref> class. </p> <p><b>Get mail helper</b> </p> <p>The
+helper wraps up many individual IMAP operations into a single call. A large
+number of options are available, which fall into the following groups: </p> <ul>
+<li id="GUID-CFAEF51C-65F1-5AC4-BF2D-DFEACA5899A7"><p>get mail when already
+connected </p> </li>
+<li id="GUID-D9BBC7C4-24C8-5E99-A2A9-CFA1214734C4"><p>connect, get mail and
+then disconnect </p> </li>
+<li id="GUID-C3FB09F4-09F4-5E97-9269-91A0E4AD03E5"><p>connect, get mail and
+then stay online </p> </li>
+</ul> <p>The get mail helper class is <xref href="GUID-B9209668-D191-35F0-A02A-DABD6B1A706C.dita"><apiname>CImImap4GetMail</apiname></xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type
+Module</linktext></link>
+<link href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita"><linktext>Bearer Mobility
+Overview</linktext></link>
+<link href="GUID-E56E21A9-B545-5217-A877-E64D30275157.dita"><linktext>Using the
+Policy Evaluator Plug-in</linktext></link>
+<link href="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita"><linktext>Email   
+             Settings</linktext></link>
+<link href="GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita"><linktext>Email Tutorials</linktext>
+</link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Example code</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F809632-82B0-5B4C-92DB-9C4D1316AF03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1F809632-82B0-5B4C-92DB-9C4D1316AF03"><title>read</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>read [ -rszpqAclneE ] [ -t [ num ] ] [ -k [ num ] ] [ -d delim ] [ -u n ] [ name[?prompt] ] [ name ... ]</userinput> </p> <p>Read one line and break it into fields using the characters in <codeph>$IFS</codeph> as separators, except as noted below. The first field is assigned to the first <codeph>name</codeph>, the second field to the second <codeph>name</codeph>, and so on, with leftover fields assigned to the last <codeph>name</codeph>. If <codeph>name</codeph> is omitted then REPLY is used for scalars and reply for arrays. </p> <table id="GUID-B061F101-FEDC-535A-8293-79ADF690695D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-r</codeph>  </p> </entry> <entry><p>Raw mode: a <codeph>\</codeph> at the end of a line does not signify line continuation and backslashes in the line don't quote the following character and are not removed. </p> </entry> </row> <row><entry><p> <codeph>-s</codeph>  </p> </entry> <entry><p>Don't echo back characters if reading from the terminal. Currently does not work with the <codeph>-q</codeph> option. </p> </entry> </row> <row><entry><p> <codeph>-q</codeph>  </p> </entry> <entry><p>Read only one character from the terminal and set <codeph>name</codeph> to <codeph>y</codeph> if this character was <codeph>y</codeph> or <codeph>Y</codeph> and to <codeph>n</codeph> otherwise. With this flag set the return value is zero only if the character was <codeph>y</codeph> or <codeph>Y</codeph>. Note that this always reads from the terminal, even if used with the<codeph> -p </codeph> or <codeph>-u</codeph> or <codeph>-z </codeph> flags or with redirected input. This option may also be used within <codeph>zle</codeph> widgets. </p> </entry> </row> <row><entry><p> <codeph>-k[num]</codeph>  </p> </entry> <entry><p>Read only one (or <codeph>num</codeph>) characters. All are assigned to the first <codeph>name</codeph>, without word splitting. This flag is ignored when <codeph>-q </codeph> is present. Input is read from the terminal unless one of <codeph>-u</codeph> or <codeph>-p</codeph> is present. This option may also be used within <codeph>zle</codeph> widgets. </p> </entry> </row> <row><entry><p> <codeph>-z</codeph>  </p> </entry> <entry><p>Read one entry from the editor buffer stack and assign it to the first <codeph>name</codeph>, without word splitting. Text is pushed onto the stack with <codeph>print -z</codeph> or with <codeph>push-line</codeph> from the line editor. This flag is ignored when the <codeph>-k</codeph> or <codeph>-q</codeph> flags are present. </p> </entry> </row> <row><entry><p> <codeph>-A</codeph>  </p> </entry> <entry><p>The first <codeph>name</codeph> is taken as the <codeph>name</codeph> of an array and all words are assigned to it. </p> </entry> </row> <row><entry><p> <codeph>-n</codeph>  </p> </entry> <entry><p>Together with <codeph>-c</codeph>, the number of the word the cursor is on is read. With <codeph>-l</codeph>, the index of the character the cursor is on is read. Note that the command <codeph>name</codeph> is word number 1, not word 0, and that when the cursor is at the end of the line, its character index is the length of the line plus one. </p> </entry> </row> <row><entry><p> <codeph>-u n</codeph>  </p> </entry> <entry><p>Input is read from file descriptor <codeph>n</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-d delim </codeph>  </p> </entry> <entry><p>Input is terminated by the first character of <codeph>delim</codeph> instead of by newline. </p> </entry> </row> <row><entry><p> <codeph>-t [ num ] </codeph>  </p> </entry> <entry><p>Test if input is available before attempting to read. If <codeph>num</codeph> is present, it must begin with a digit and will be evaluated to give a number of seconds, which may be a floating point number; in this case the read times out if input is not available within this time. If <codeph>num</codeph> is not present, it is taken to be zero, so that read returns immediately if no input is available. If no input is available, return status 1 and do not set any variables. </p> <p>This option is not available when reading from the editor buffer with<codeph> -z</codeph>, when called from within completion with <codeph>-c</codeph> or <codeph>-l</codeph>, with <codeph>-q</codeph> which clears the input queue before reading, or within <codeph>zle</codeph> where other mechanisms should be used to test for input. </p> <p>Note: <codeph>read</codeph> does not attempt to alter the input processing mode. The default mode is canonical input, in which an entire line is read at a time, so usually <codeph>read -t</codeph> will not read anything until an entire line has been typed. However, when reading from the terminal with <codeph>-k</codeph> input is processed one key at a time; in this case, only availability of the first character is tested, for example <codeph>read -t -k
+                2</codeph> can still block on the second character. Use two instances of <codeph>read -t -k</codeph> if this is not what is wanted. </p> </entry> </row> <row><entry><p> <codeph>?</codeph>  </p> </entry> <entry><p>If the first argument contains a <codeph>?</codeph>, the remainder of this word is used as a prompt on standard error when the shell is interactive. </p> </entry> </row> </tbody> </tgroup> </table> <p>The value (exit status) of <codeph>read</codeph> is 1 when an end-of-file is encountered, or as described for <codeph>-q</codeph>. Otherwise the value is 0. </p> <p>The behavior of some combinations of the <codeph>-k</codeph>, <codeph>-p</codeph>, <codeph>-q</codeph>, <codeph>-u</codeph> and <codeph>-z</codeph> flags is undefined. Presently <codeph>-q</codeph> cancels all the others, <codeph>-p</codeph> cancels <codeph>-u</codeph>, <codeph>-k</codeph> cancels <codeph>-z</codeph>, and otherwise <codeph>-z</codeph> cancels both <codeph>-p</codeph> and <codeph>-u</codeph>. </p> <p> <b>Note:</b> Symbian platform does not support the use of <codeph>-c</codeph> or <codeph>-l</codeph> option. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F" xml:lang="en"><title>Window Server
+Client-Side Library Concepts</title><shortdesc>This section introduces some important concepts that relate to
+the Window Server client-side library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Target audience</b>: Application developers. </p>
+</conbody><related-links>
+<link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server
+Client-Side   Library</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1FB321DE-4A02-5468-9AF1-F3786EB678CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1FB321DE-4A02-5468-9AF1-F3786EB678CF" xml:lang="en"><title>Common Application Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1FBC290C-74C3-5618-A2B7-52181CDFE0F0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1FBC290C-74C3-5618-A2B7-52181CDFE0F0" xml:lang="en"><title>How to use simple timers</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1FC0156C-7BDB-5D5B-9860-837DAB431D24.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1FC0156C-7BDB-5D5B-9860-837DAB431D24" xml:lang="en"><title>How to
+implement and use NewLC()</title><shortdesc>This document describes how to destroy objects created with <codeph>NewLC()</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When an object is created through <codeph>NewLC()</codeph>, use <codeph>CleanupStack::PopAndDestroy()</codeph> to
+destroy the object when its use is complete.</p>
+<codeblock id="GUID-34A7790B-1FA9-58FA-83D9-A2CF6C07F2F2" xml:space="preserve">static CExample* CExample::NewLC()
+    {
+    CExample* self = new (ELeave) CExample();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    return self;
+    }</codeblock>
+<codeblock id="GUID-421A377A-7192-5908-A1C6-E3941046D489" xml:space="preserve">void doExampleL()
+    {
+    // allocate and push to cleanup stack - leave if failed
+    CExample* myExample = CExample::NewLC();
+    // do something that might leave
+    myExample-&gt;DoSomethingL();  
+    // pop from cleanup stack and destroy
+    CleanupStack::PopAndDestroy(); 
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E"><title>Exif Utility Library Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Exif (Exchangeable image file format) is a standard specifying rules for storing metadata in digital image files, mainly those using JPEG compression. </p> <section id="GUID-3333CA2A-EF84-5E7B-B9BE-8FF00523897F-GENID-1-6-1-17-1-1-5-1-6-1-8-1-4-1-2-2"><title>Purpose</title> <p>Exif enhances the JPEG and TIFF specifications with the addition of metadata tags to hold information such as the camera settings used to take the picture. </p> </section> <section><title>Exif Overview</title> <p>The Exif standard defines a wide range of metadata tags, some of which are listed below: </p> <ul><li id="GUID-55D72AF0-DEB5-55FE-AD34-52B14DD39590"><p>Date and time information of the image captured. </p> </li> <li id="GUID-DE117EE6-9465-59CD-A5C2-1FAECBF6DFE0"><p>Camera settings like camera model and make, and information that varies with each image such as orientation, aperture, shutter speed, focal length, metering mode, and film speed information. </p> </li> <li id="GUID-6F02CD74-00C5-5574-A3A2-45DB997F9AD4"><p>A thumbnail for previewing the picture on camera LCD. </p> </li> <li id="GUID-BB16459B-A734-5E3D-A632-CF8AFB31398F"><p>Copyright information. </p> </li> </ul> <p><b> Accessing Exif Metadata</b> </p> <p>Access to Exif metadata is provided through an abstract interface available in all the main ICL APIs. This interface can be implemented and managed through an ICL plugin, exhibiting the functionality to the client through the plugin extension mechanism. </p> <p>The <xref href="GUID-D3846471-6576-3080-A0C0-C1531DD6DAA3.dita"><apiname>MExifMetaData</apiname></xref> class is a generic interface for accessing the Exif metadata. To access a specific item of a metadata, both tag ID and the primary Image File Directory [IFD] number must be provided in the <xref href="GUID-D3846471-6576-3080-A0C0-C1531DD6DAA3.dita"><apiname>MExifMetaData</apiname></xref> access method, as some tags may appear in more than one IFD. The primary IFD number may either be 0 or 1. The main image tags are grouped together under IFD 0 and the tags for the thumbnail images are grouped under IFD 1 in the Exif metadata. The tags under these IFD can be further classified into sub IFD: </p> <p>For example : Tags related to the GPS can be sorted to form a group. </p> <p>The <xref href="GUID-D3846471-6576-3080-A0C0-C1531DD6DAA3.dita"><apiname>MExifMetaData</apiname></xref> is compounded by two classes as mentioned below: </p> <ul><li id="GUID-607A6DAE-75E0-56CD-8601-E360272D4CB3"><p> <xref href="GUID-B742FC40-2D88-3E71-8F89-FCB15A2C6619.dita"><apiname>MExifMetadataReader</apiname></xref> : This provides more generic functionalitites to read the tags from the Exif Metadata. The user is expected to provide the tag id and the primary IFD for the tags that needs to be read. </p> </li> <li id="GUID-0174AF96-9024-5FC1-BC04-4799C4F04CC0"><p> <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> : This is a generic way to write or set the tags of the Exif metadata. Here also the user is expected to render the key inputs like tag id and IFD for the data that needs to be written or modified. </p> </li> </ul> <p>The access provided by <xref href="GUID-D3846471-6576-3080-A0C0-C1531DD6DAA3.dita"><apiname>MExifMetaData</apiname></xref> is quite low level. The users are expected to know the tag IDs defined in the Exif specification in order to use it. Hence more user friendly classes as listed below are made available to access these tags. </p> </section> <section><title>Examples</title> <p>This section contains code snippets showing how Exif metadata is accessed in several situations. </p> <p><b>JPEG Exif Plugin</b> </p> <ul><li id="GUID-0D60F5DD-FFCD-51F5-BC57-9FB04500147F"><p> <xref href="GUID-8AA987C9-456B-3E7C-95C2-C5578EE977B9.dita"><apiname>TExifReaderUtility</apiname></xref> : This class provides a user friendly interface for reading the metadata in Exif encoded image files. The following example code illustrates its use: </p> <codeblock id="GUID-15B5C5BE-4021-55A9-99AD-77745A571863" xml:space="preserve">void CIclExample::AccessToEXIFMetadataL(const TDesC&amp; aFileName)
+    {
+    HBufC8* buffer8Bit=NULL;
+    
+    // If the image is not recognised or valid then the call will leave with an error
+    CJPEGExifDecoder* exifdecoder =  static_cast&lt;CJPEGExifDecoder*&gt;(CJPEGExifDecoder::FileNewL(iFs, aFileName/*,CImageDecoder::EOptionNone, KNullUid, KNullUid, KUidICLJpegEXIFInterface*/));
+       CleanupStack::PushL(exifdecoder);
+    
+    // Create a MExifMetadata object and Initializes to metadata associated with the CJPEGExifDecoder    
+    MExifMetadata* metaData=exifdecoder-&gt;ExifMetadata();
+
+    // Create a TExifReaderUtility object and pass the metadata to read it
+    if(metaData != NULL)
+        {
+        TExifReaderUtility reader(metaData);    
+        User::LeaveIfError(reader.GetImageDescription(buffer8Bit));
+        }
+
+    delete buffer8Bit;
+    CleanupStack::PopAndDestroy(exifdecoder);
+    }</codeblock> </li> <li id="GUID-07517C00-052C-5E88-9ED6-B4F87B95470C"><p> <xref href="GUID-62EA502C-FBE8-39A8-AEC6-3104C15F18C9.dita"><apiname> TExifWriterUtility</apiname></xref> : This class provides a user friendly interface for writing the metadata in Exif encoded image files. The following example code illustrates its use: </p> <codeblock id="GUID-71F45182-4C2E-57D0-94D9-DF71B05D31AF" xml:space="preserve">void CIclExample::AddEXIFDataToJPEGFileL()
+{
+    TInt err = KErrNone;
+      
+    HBufC8 *encodedImageDescriptor = NULL;
+   
+    // Create the encoder, passing a buffer to store the encoded image
+    CJPEGExifEncoder* exifencoder = static_cast&lt;CJPEGExifEncoder*&gt;(CImageEncoder::DataNewL(encodedImageDescriptor,CImageEncoder::EOptionNone,KImageTypeJPGUid));
+    
+    // Create a MExifMetadata object and initializes to metadata associated with CJPEGExifEncoder  
+    MExifMetadataWriter* metaData=exifencoder-&gt;ExifMetadata(); 
+    CleanupStack::PushL(exifencoder);
+    
+    // Create a TExifWriterUtility object to write the metadata in to the image
+      TExifWriterUtility exifWriteUtility(metaData);
+
+    HBufC8*    buf8ParamWriteVersion=KBuf8ParamWriteVersion().Alloc();
+
+    User::LeaveIfError(exifWriteUtility.SetImageDescription(buf8ParamWriteVersion));
+   
+       delete encodedImageDescriptor;
+      encodedImageDescriptor = NULL;
+      
+      delete buf8ParamWriteVersion;
+      buf8ParamWriteVersion = NULL;
+       
+    CleanupStack::PopAndDestroy(exifencoder);
+
+    }</codeblock> </li> </ul> <p>The access to the Exif metadata in image decoder/encoder will be provided through the <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata</apiname></xref> interface. The extended object <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder</apiname></xref> of the public class <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> provides the mechanism to access the custom Exif interface, by allowing the client to request a reference to the MExifMetadata interface. Once the source image has been set, and the client has acquired a reference to <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata</apiname></xref>, the data associated with the Exif tags can be accessed at any time before or after a decoding process has taken place. </p> <p>The client can request the main image or the thumbnail image as the source for the decode operation using the function <xref href="GUID-6F675985-A77B-3ADB-891A-B5B24D749DBC.dita"><apiname>SetImageTypeL()</apiname></xref>. These are the only arguments SetImageTypeL() will accept. Any other argument provided will cause the function to leave with error KErrArgument. The plugin assumes the main image to be the source unless otherwise specified. The plugin will ignore the function call if the image requested is unavailable. </p> <codeblock id="GUID-E7E96B7B-7BED-56A0-BBBD-C2F7B6F355FF" xml:space="preserve">imageDecoder-&gt;SetImageTypeL(CImageDecoder::EImageTypeThumbnail);</codeblock> <p>Unlike decoding, encoding is a one step procedure that requires all the Exif data to be set before the event is initiated. Any unspecified parameters must be populated by the default values. The call to the SetImageTypeL() determines whether an embedded image will be included in the encoded image or not. The client must furnish an optional parameter EImageTypeThumbnail along with the EImageTypeMain included in the bitfield to denote the inclusion of a thumbnail in the encoded image. Any other parameter specified aberrant from this specification will result in the function leaving with KErrArgument error. The thumbnail generated will conform to the DCF standards. </p> <p id="GUID-93EB3782-FECC-5151-A052-F922BEEA6479"><b> Exif support in CImageDisplay</b> </p> <p>In this scenario, the <xref href="GUID-204C95AA-803F-322F-A43D-4E1622180EF6.dita"><apiname>ExifMetadata()</apiname></xref> returns a pointer to the object that implements the <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata</apiname></xref> interface. The Exif metadata can be extracted, once the source image has been set. This provides a read only access to the metadata. It is illustrated as follows: </p> <codeblock id="GUID-9953D8E8-B8A6-53FF-93B3-294371948E88" xml:space="preserve">void CIclExample::AccessToEXIFMetadataL(const TDesC&amp; aFileName)
+    {
+    HBufC8* buffer8Bit=NULL;
+    
+    // Create the decoder, passing in the image memory. The image is recognised by the 
+    // Image Conversion Library, an appropriate codec plugin loaded and the image 
+    // headers parsed.
+    // If the image is not recognised or valid then the call will leave with an error
+    CJPEGExifDecoder* exifdecoder =  static_cast&lt;CJPEGExifDecoder*&gt;(CJPEGExifDecoder::FileNewL(iFs, aFileName/*,CImageDecoder::EOptionNone, KNullUid, KNullUid, KUidICLJpegEXIFInterface*/));
+       CleanupStack::PushL(exifdecoder);
+    
+    // Create a MExifMetadata object and Initializes to metadata associated with the CJPEGExifDecoder    
+    MExifMetadata* metaData=exifdecoder-&gt;ExifMetadata();
+
+    // Create a TExifReaderUtility object and pass the metadata to read it
+    if(metaData != NULL)
+        {
+        TExifReaderUtility reader(metaData);    
+        User::LeaveIfError(reader.GetImageDescription(buffer8Bit));
+        }
+
+    delete buffer8Bit;
+    CleanupStack::PopAndDestroy(exifdecoder);
+    }</codeblock> <p id="GUID-A0B37BD4-05E2-58DA-8D25-F1E4A116AE79"><b>Exif support in CimageTransform</b> </p> <p>In this scenario, the <xref href="GUID-204C95AA-803F-322F-A43D-4E1622180EF6.dita"><apiname>ExifMetadata()</apiname></xref> returns a pointer to the object that implements the <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata</apiname></xref> interface. It is illustrated as follows: </p> <codeblock id="GUID-581E936E-BDDC-5C7F-9645-B3911A2A6F6F" xml:space="preserve">void CIclExample::AddEXIFDataToJPEGFileL()
+{
+    TInt err = KErrNone;
+      
+    HBufC8 *encodedImageDescriptor = NULL;
+   
+    // Create the encoder, passing a buffer to store the encoded image
+    CJPEGExifEncoder* exifencoder = static_cast&lt;CJPEGExifEncoder*&gt;(CImageEncoder::DataNewL(encodedImageDescriptor,CImageEncoder::EOptionNone,KImageTypeJPGUid));
+    
+    // Create a MExifMetadata object and initializes to metadata associated with CJPEGExifEncoder  
+    MExifMetadataWriter* metaData=exifencoder-&gt;ExifMetadata(); 
+    CleanupStack::PushL(exifencoder);
+    
+    // Create a TExifWriterUtility object to write the metadata in to the image
+      TExifWriterUtility exifWriteUtility(metaData);
+
+    HBufC8*    buf8ParamWriteVersion=KBuf8ParamWriteVersion().Alloc();
+
+    User::LeaveIfError(exifWriteUtility.SetImageDescription(buf8ParamWriteVersion));
+   
+       delete encodedImageDescriptor;
+      encodedImageDescriptor = NULL;
+      
+      delete buf8ParamWriteVersion;
+      buf8ParamWriteVersion = NULL;
+       
+    CleanupStack::PopAndDestroy(exifencoder);
+
+    }</codeblock> <p>The <xref href="GUID-204C95AA-803F-322F-A43D-4E1622180EF6.dita"><apiname>ExifMetadata()</apiname></xref> provides functions to scale still images. Additionally, it has the ability to scale only a subset of the original image by setting a clipping rectangle. This acts as if the source image outside the region does not exist causing the clipped image to be resized to the size specified. </p> <p>Furthermore, a thumbnail can be added to the JPEG file as shown in the code below: </p> <codeblock id="GUID-F7E532F5-14AC-5F4B-B98E-3A471C6DEA30" xml:space="preserve">void CIclExample::AddThumbnailToJPEGFileL(const TDesC&amp; aFileName)
+    {
+        TInt err = KErrNone;
+                 TInt soiOffset=0;
+                 TInt thumbnailLength = 0;
+     TInt size = 0;
+     Const TInt KConstStartOffset = 12;
+           HBufC8 *desData= NULL;
+  
+     TPtr8 imageFromFilePtr = LoadImageIntoMemoryL(aFileName);
+
+     // Create a CImageTransform object and push it on to the cleanup stack
+     CImageTransform* imageTransform=CImageTransform::NewL(iFs);
+     CleanupStack::PushL(imageTransform);
+
+     // Call SetSourceFilenameL() function of CImageTransform to set the source to file
+     imageTransform-&gt;SetSourceFilenameL(aFileName);
+     
+     // Call SetDestDataL() function of CImageTransform to set the destination size in pixels
+     imageTransform-&gt;SetDestDataL(desData);
+     
+     // Call SetDestSizeInPixelsL() function of CImageTransform to set the destination size in pixels
+     imageTransform-&gt;SetDestSizeInPixelsL(TSize(160, 120), ETrue);
+     
+     // Call SetOptionsL() to add the thumbnail
+     imageTransform-&gt;SetOptionsL(CImageTransform::EThumbnail);
+     
+     //Call SetupL() to setup the ImageTransform
+     imageTransform-&gt;SetupL();
+    
+   // encode the image
+     CActiveListener* activeListener = CreateAndInitializeActiveListenerLC();
+     imageTransform-&gt;Transform(activeListener-&gt;iStatus);
+     CActiveScheduler::Start();
+     User::LeaveIfError(activeListener -&gt; iStatus.Int());    
+     
+     // Create a CJPEGExifDecoder
+  CJPEGExifDecoder* exifdecoder = static_cast&lt;CJPEGExifDecoder*&gt;(CJPEGExifDecoder::DataNewL(iFs, imageFromFilePtr));
+  CleanupStack::PushL(exifdecoder);
+     
+     // Get the thumbnail from the image
+     MExifMetadata* metaData=exifdecoder-&gt;ExifMetadata();        
+
+     // Get the offset to the thumbnail image (i.e. the value of tag 0x0201)
+  metaData-&gt;GetIntegerParam(0x0201, 1, soiOffset);
+        
+     // Get the length of the thumbnail image    (i.e. the value of tag 0x0202)
+     metaData-&gt;GetIntegerParam(0x0202, 1, thumbnailLength);
+     
+     // Add thumbnail to image    
+     RFile file;
+     file.Open(iFs,KbitmapFile,EFileShareReadersOnly|EFileStream|EFileRead);
+     CleanupClosePushL(file);
+     file.Size(size);
+
+     HBufC8* buffer = HBufC8::NewMaxLC(size);
+     TPtr8 bufferDes(buffer-&gt;Des());
+     file.Read(bufferDes);
+ 
+  TPtrC8 thumbnailData = bufferDes.Mid(KConstStartOffset + soiOffset,thumbnailLength);
+     
+  // Write thumbnail data to image
+     User::LeaveIfError(file.Write(thumbnailData));
+
+     file.Close();
+  delete desData;
+  
+     CleanupStack::PopAndDestroy(6);// buffer,exifdecoder,activeListener,imageTransform,desData,iImageInMemory
+    }</codeblock> <p><b>Exif extension to support YUV image format</b> </p> <p>An extension to Exif is provided in the ICL to support encoding and decoding uncompressed YUV data images to and from the JPEG data format. The advantage of YUV format over RGB is that it reduces the amount of information required to reproduce a satisfactory video image. This is achieved by some of the components in YUV corresponding to more than one pixel. </p> <p>For example, the pixel does not necessarily have its own set of Y,U,V components, but may share the U and V components with other pixels as shown below: </p> <ul><li id="GUID-0ECC419B-DD45-5AC9-A645-2ABB7879A948"><p>YUV 4:4:4 - Each pixel has a Y, U, and V component. </p> </li> <li id="GUID-AC35BF13-7982-5F41-B9B2-5307FC6CEF90"><p>YUV 4:2:2 - Each horizontal pair of pixels has a Y component per pixel but only one U and V component per pair. </p> </li> <li id="GUID-7AE81F82-1379-5129-89DB-9B2DEB3D7352"><p>YUV 4:2:0 - Each 2*2 block of pixels has a Y component per pixel but only one U and one V component per block. </p> </li> </ul> <p>Note: The YUV bitmap layout may differ from the RGB bitmap layout in the sense that the RGB pixel components are rendered in the same buffer as opposed to YUV bitmaps which may have different layouts. </p> <p>The conversion between RGB and 4:4:4 YUV is pretty straight forward. The <xref href="GUID-BD22C221-5362-3E3B-A32C-56F43433D2FB.dita"><apiname>CFbsBitmaps</apiname></xref> are capable of encapsulating YUV data presented in its basic 4:4:4 YUV interleaved format. However, the existing <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> does not support all possible YUV bitmap formats and layouts. This limitation is overcome by the <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref> class which allows the image data to be stored in the memory in any format or layout as long as it is uniquely identified. This is achieved by using format code UID's. </p> <codeblock id="GUID-270015D5-6359-5720-8EF0-494DA64A24FC" xml:space="preserve">    CImageFrame* imageFrame= CImageFrame::NewL(&amp;chunk, imageSizeInBytes, KRChunkSize);</codeblock> </section> </conbody><related-links><link href="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita"><linktext>Exif Utility Overview</linktext> </link> <link href="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita"><linktext>JPEG Exif Plugin</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transformation</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C" xml:lang="en"><title>Designing
+applications for touch UI</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-98B5BA8E-A71D-44C3-B7F3-91FBF9599E0B"> <p>In S60 5th edition,
+the software platform supports traditional keypads, and touch screen UI. Touch
+screen enables direct manipulation of content and objects, allowing for far
+more natural interaction with the device. This means a completely different
+user experience and interaction style compared to using a hardware keypad.</p><fig id="GUID-0895B1BD-27D2-4824-A02C-F89137A16E53">
+<image href="GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e46754_href.png" scale="60" placement="inline"/>
+</fig><p>All S60 5th edition applications should be touch-enabled, meaning
+they can be used with the touch screen alone, regardless of the presence of
+a keypad. There are only three mandatory hardware keys in touch devices based
+on the Symbian platform: Send, End, and Multitasking key.</p><p>However, the
+touch UI is by no means the definitive feature of the whole platform. Any
+knowledge gained from previous Symbian development is still relevant. The
+core of the Symbian platform still remains its scalability, wide range of
+options, the wealth of multimedia features, and language support. </p><p><b>The
+application features must follow the platform support for different hardware.</b> When
+designing a touch-enabled Symbian application, the UI must be designed so
+that everything can be accomplished by using the touch screen interface, as
+the potential target devices may or may not have a hardware keyboard.  </p> <p>The
+touch UI in the Symbian platform is based on the use of resistive and capacitive
+touch screens. In <b>resistive touch screen</b> technology, two conductive
+and resistive layers are separated by a thin space. When an object touches
+this kind of touch panel, the layers are connected at a certain point, and
+a touch event is registered. This allows efficient stylus control, in addition
+to finger touch - unlike capacitive panels, which usually register only finger
+touch. Additionally, resistive touch screen offers a higher resolution and
+more durability. In <b>capacitive touch screen</b> technology, the panel consists
+of an insulator such as glass, coated with a transparent conductor (such as
+indium tin oxide (ITO)). When an object touches the surface of the screen,
+it results in a distortion of the local electrostatic field, measurable as
+a change in capacitance. Then a touch controller measures the frequency variations
+to ascertain the co-ordinates of the object's touch.</p><p>The
+hardware is supported by a number of </p><ul>
+<li><p>touch-specific components (see <xref href="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita">Touch
+support for common UI components</xref>)</p></li>
+<li><p>component and UI behavior changes</p></li>
+<li><p>layout changes, and</p></li>
+<li><p>additions to the interaction style.</p></li>
+</ul><p>The touch UI is designed to enable full task flow with touch, with
+minimal need to switch to hardware keys. Thus, the design ensures that users
+can complete a task with the chosen interaction method from start to finish. </p><p>When
+designing and implementing applications for touch screen devices based on
+the Symbian platform, consider which interactions benefit the most from the
+touch UI.  </p> <p>If you can apply direct manipulation of the UI, for example
+when moving items from one place to another, or scrolling a page, do not confine
+the user with unnecessary scroll bars or have the user resort to options list
+commands.</p> <p>Instead, enable the user to view pages larger than a screen
+by panning them directly, and dragging and dropping items rather than marking
+them and using menu options. </p><ul>
+<li><p>Remember that the most intuitive touch screen interactions that can
+be performed using a finger are tapping, stroking up/down/left/right, and
+the long tap. </p></li>
+<li><p>Utilize strokes that are easily discovered to the users in the given
+context. It should be explicit to the user where strokes can be performed. </p></li>
+<li><p>Design to ensure that users can complete a task with the same interaction
+method from start to finish: touch or hardware keys, stylus, or finger, and
+using one hand or both hands.</p></li>
+<li><p>Aim to optimize system performance and battery consumption to provide
+a fluid and reliable touch user experience. </p></li>
+</ul><p>In this section:</p><ul>
+<li><p><xref href="GUID-41A36790-CB11-4620-A2D5-1981077E5753.dita">Touch strategies</xref></p></li>
+<li><p><xref href="GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita">Touch-enabled
+vs. touch-optimized</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-1FFE4ED5-7B2E-58A0-9D08-A096F53F37AB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-1FFE4ED5-7B2E-58A0-9D08-A096F53F37AB"><title>Object Lifetimes and Cleanup</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Object lifetime is a fundamental concept. This topic contains a summary of object lifetime idioms in Symbian platform C++. </p> <section><title>Overview</title> <p>In some operating systems, the object lifetime can be neglected, because the stack and heap are destroyed when a program terminates. On the Symbian platform, programs may run for months. It is therefore important that objects be cleaned up as soon as their lifetime ends, whether they are allocated on stack or heap, and whether their lifetime ended through normal processing or through an error condition. </p> <p>On both stack and heap, objects have a lifetime that runs approximately as follows: </p> <ol id="GUID-0CF65C93-161A-5E6A-A41A-E3360122D8EB"><li id="GUID-092C9503-16F6-546F-BEBE-2B0D7BE3D13C"><p>allocate memory for the object [on stack or heap] </p> </li> <li id="GUID-07E6B1C2-ABE4-527A-A34B-E391A79AE6DE"><p>initialise: i.e., set the contents of that memory to usable values </p> </li> <li id="GUID-80B1C90A-B26A-59E2-B8C1-6262DD1C1E13"><p>use the object </p> </li> <li id="GUID-74A5297F-CD48-5C64-BFBE-10A2A1930147"><p>clean up: i.e., free up any other resources that might have been used by that object </p> </li> <li id="GUID-16D4FDD6-0E2F-57BE-A17C-E2AC31E8EE86"><p>de-allocate memory [from stack or heap] </p> </li> </ol> </section> <section><title>Lifetimes in C</title> <p>On the C stack, an object’s lifetime, for a user of that object, might look like this: </p> <codeblock id="GUID-B725D30E-0EF9-592A-A2B8-5B15D5E8C122" xml:space="preserve">#include "s.h"</codeblock> <codeblock id="GUID-28EFD521-310D-5EC8-A4F1-EA56D6A74A14" xml:space="preserve">void foo()
+    {
+    S s;
+    sInitialize(&amp;s, p1,p2);
+    sUse(&amp;s, p3,p4);
+    sCleanup(&amp;s);
+    }</codeblock> <p>Memory for the <codeph>S</codeph> is allocated on entry to the function, and de-allocated on exit. The functions <codeph>sInitialize()</codeph> and <codeph>sCleanup()</codeph> have been defined as part of the API for an <codeph>S</codeph>, in <filepath>s.h</filepath> (in fact, C programmers are not always as disciplined as this, and expect the users of their objects to do their own initialisation, in an ad hoc way). The function <codeph>sUse()</codeph> represents a use of the <codeph>S</codeph>. Note that the <codeph>S</codeph> is passed by pointer: its address must be taken whenever it is used as a function parameter. </p> <p>On the C heap, an object's lifetime might look like this: </p> <codeblock id="GUID-93293B5E-C266-529F-8237-5A3FCAF55238" xml:space="preserve">void foo()
+    {
+    S* s=(S*)malloc(sizeof(S));
+        // should really check this succeeded!!
+    sInitialize(s, p1,p2);
+    sUse(s, p3,p4);
+    sCleanup(s);
+    free(s);
+    }</codeblock> <p>This time, a pointer is used to refer to the <codeph>S</codeph>: as a result, the syntax of passing an <codeph>S</codeph> is slightly more pleasant, because you don’t have to take its address. </p> <p>On the other hand, the allocation and de-allocation of memory is done using <codeph>malloc()</codeph>, whose syntax is extremely ugly, and <codeph>free()</codeph>. </p> <p>Mostly, the lifetime of a heap-based object would not be contained within a single function like this: it might be created from one function, used from another, and destroyed from another. </p> </section> <section><title>Lifetimes in C++</title> <p>One way of looking at C++ is as a neat way to control object lifetimes. C++ allows functions to be associated directly with objects, which means that you do not need a special naming convention to indicate that a function is loosely associated with an object. Two special functions are the constructor and the destructor: the constructor is called every time the C++ system knows that an object’s lifetime begins, and the destructor is called every time the C++ system knows that an object’s lifetime ends. Finally, C++ defines <codeph>operator new()</codeph>, which is much nicer than <codeph>malloc()</codeph>, and <codeph>operator delete</codeph>, which is somewhat nicer than <codeph>free()</codeph>. </p> <p>On the C++ stack, an object’s lifetime looks like this: </p> <codeblock id="GUID-F71A9ED7-B9D4-5C23-B4C6-0A7CED45B0F1" xml:space="preserve">void foo()
+    {
+    S s(p1,p2); // invokes constructor
+    s.Use(p3,p4); // nice syntax!
+    } // invokes destructor</codeblock> <p>Memory is allocated on function entry, and the constructor is invoked when processing reaches the declaration. The use of member functions makes the syntax of using everything much more pleasant: there is no need to pass a reference to the <codeph>S</codeph>, because that is done implicitly. </p> <p>Crucially, C++ causes the destructor to be invoked when the function terminates. There is no need for the user of the class to do anything to cause this to happen — all that’s necessary is that the provider of the class provided a destructor. </p> <p>Note, though, that in some exception conditions — for instance, if the <codeph>Use()</codeph> function fails in some way — the function may not return normally, and the destructor will therefore not be invoked. We will shortly discuss how the Symbian platform addresses this. </p> <p>On the C++ heap, object lifetime looks like this: </p> <codeblock id="GUID-E2998E56-C725-567A-845E-F3BD4D5AEB26" xml:space="preserve">void foo()
+    {
+    S* s=new S(p1,p2); // allocate, construct - should really check
+    s-&gt;Use(p3,p4);
+    delete s; // destruct, de-allocate
+    }</codeblock> <p>Again, the syntax is much nicer. Only one thing cannot be provided by C++: the user of a class must still remember to delete the object at the end of its lifetime. </p> </section> <section><title>Lifetimes in Symbian</title> <p>Symbian platform idioms for object lifetime on the stack look very similar to standard C++. The control of object lifetimes on the heap is, however, very different, as shown in the following code: </p> <codeblock id="GUID-F43C60C2-DA07-56B2-9F49-35ED3AA8A9C8" xml:space="preserve">void FooL()
+    {
+    CS* s=new (Eleave) CS; // allocate and check
+    CleanupStack::PushL(s); // push, just in case
+    s-&gt;ConstructL(p1,p2);    // finish constructing - might leave
+    s-&gt;UseL(p3,p4); // use - might leave
+    CleanupStack::PopAndDestroy();    // destruct, de-allocate
+    }</codeblock> <p>This code fragment shows four vital things: </p> <ul><li id="GUID-AB53EB00-02A6-5792-99F1-CD1936D1D4FE"><p>all heap-based classes have names beginning with <codeph>C</codeph>: they are in fact derived from a single base class, <codeph>CBase</codeph>, which exists solely to support easy cleanup </p> </li> <li id="GUID-F9AE98B6-73B4-5367-8896-72E155DA3CAF"><p>a cleanup stack is used to hold references to objects: if a leave occurs due to out-of-memory or some other error, objects held on the cleanup stack are popped from it, and destroyed. In the case of <codeph>CBase*</codeph> objects pushed to the stack, they are destroyed by calling their C++ destructor. The <codeph>CBase</codeph> class has a virtual destructor (<codeph>CBase::~CBase()</codeph>) which makes this possible. </p> </li> <li id="GUID-3D6958DA-9B6C-5E31-BE3A-A6A53A6F3E5A"><p>any function which might leave is designated by a trailing <codeph>L</codeph> in its name. When you see a function that might leave, you must <i>always</i> ask what would happen if it did leave, and what would happen if it did not. The operating system provides all the program infrastructure required to allow objects to be de-allocated even when a leave occurs, but without burdening the programmer. </p> </li> <li id="GUID-AE0B0553-E708-5172-A0B8-A5D366EDAF5D"><p> <codeph>new (ELeave)</codeph> is an overloaded <codeph>operator
+                new()</codeph> function, which will leave if it fails to allocate the required memory. It never returns a null pointer. </p> </li> </ul> <p>Two other things are worthy of note: </p> <ul><li id="GUID-36F6B5B6-0772-5656-8C6F-04DD9477F53F"><p>since the cleanup stack itself requires memory allocation for each stack frame, a push might leave. The <codeph>PushL()</codeph> function reflects this in its name. The cleanup stack is guaranteed to have a free slot before a <codeph>CleanupStack::PushL()</codeph>, so that the object reference will always be successfully stored on the stack. If a leave occurs when allocating the next stack frame, the object will be popped and destroyed as normal. </p> </li> <li id="GUID-2825BDD3-28BB-5005-8216-9B3617289326"><p> <i>the C++ constructor must not leave</i>. For objects whose construction requires resource allocation or any other operation that might fail, this means that construction must be separated into a C++ constructor that does not leave, and another initialisation function that might leave, which is conventionally called <codeph>ConstructL()</codeph>. </p> </li> </ul> <p>The cleanup stack, <codeph>CBase</codeph>, and two-phase construction, are at the heart of the operating system. A very few rules govern cleanup stack programming, and they are relatively easy to learn. See <xref href="GUID-E7D29464-05E1-5039-8A02-62CB27B5FF21.dita">Cleanup Stack Basics</xref> for more on this. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-200647EF-B9CA-5EEA-8760-71A9C1B063CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-200647EF-B9CA-5EEA-8760-71A9C1B063CE"><title>SQL Tutorial</title><shortdesc>This tutorial set shows you how to perform many of the most common Symbian SQL tasks. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-2774F7AC-B5CD-5539-9D7C-7721BD6ACCEE"><p>Before you start, you must: </p> <ul><li id="GUID-F0C9936C-D1E3-50B4-9500-3AF766E5848D"><p>Review the code from the <xref href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita">Basic SQL example application</xref>. </p> </li> <li id="GUID-9A1F5841-42A1-5549-B1B1-2A8FF68217D7"><p>Be familiar with SQLite 3. </p> </li> </ul> </prereq> <context id="GUID-4189BBC8-D9A6-54AC-8294-01B85E213C04"><p>The tutorials in this set introduce you to the basic tasks involved in creating an SQL aware or capable application for a Symbian OS device. </p> </context> <steps id="GUID-3D018462-88E6-57D4-8707-5B66ED333632"><step id="GUID-B28CE62D-4063-50EF-8942-7311947DA24B"><cmd/><info> <xref href="GUID-B38EBDBA-2A30-5595-9639-6AE58C530DCB.dita">Creating a Database</xref> </info> </step> <step id="GUID-446C2F25-796B-5B35-B5BA-77B33623DE0A"><cmd/><info> <xref href="GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita">Creating a Table</xref>  </info> </step> <step id="GUID-D9BE05D7-FFC9-523E-9229-FDD66EFB6510"><cmd/><info> <xref href="GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita">Querying Databases: Basic</xref> </info> </step> <step id="GUID-7DFEE192-8A0C-5BA5-9A93-B486FF00F40F"><cmd/><info> <xref href="GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita">Querying the Database</xref>  </info> </step> <step id="GUID-3AE3B077-BD2F-5602-86CD-66B0B5D9D517"><cmd/><info> <xref href="GUID-B61EA8C5-0966-51DE-AC73-01DD34C7D3CC.dita">Deleting Data from the Table</xref>  </info> </step> <step id="GUID-FA211396-616B-5016-ADBB-C1985BE329ED"><cmd/><info> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref> </info> </step> <step id="GUID-51810361-2261-564A-9E87-AB786C27C469"><cmd/><info> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a Buffer</xref> </info> </step> <step id="GUID-F97C2A80-6C3F-532C-BE1D-20963D270D3B"><cmd/><info> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"> Reading to Memory </xref> </info> </step> <step id="GUID-912FF38F-F6FF-579E-B266-98DEBE9D6D41"><cmd/><info> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref> </info> </step> <step id="GUID-2863BF0C-F569-597E-A841-DCEDE91AE7C2"><cmd/><info> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting a Row into a Table</xref> </info> </step> <step id="GUID-00A5C4F3-88BE-5602-9F93-246CE7408935"><cmd/><info> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </info> </step> </steps> </taskbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita"><linktext>Basic SQL Example
+                Application</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-200BA7B9-70A1-5D15-8CFF-FBD18930757D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-200BA7B9-70A1-5D15-8CFF-FBD18930757D"><title>Change Notification</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>As data changes clients such as UI-level applications need to respond to the updates. The Contacts Model calls a Change Notifier class (<xref href="GUID-140725B3-8D52-3D2B-9E72-CAF76962B95A.dita"><apiname>CContactChangeNotifier</apiname></xref>) which allows clients to receive notification of changes made to contact items. Change events are sent in the order that they occur. </p> <p>Change event details are contained in <xref href="GUID-AC58DE73-3BD6-31CC-8CD3-31260A325B24.dita"><apiname>TContactDbObserverEvent</apiname></xref> and include: </p> <ul><li id="GUID-E5357DFB-C0D5-5DFF-9F23-C887121E5904"><p>Changes to a contact item, template, group or own card </p> </li> <li id="GUID-61FE83A9-EBA3-5BE9-92EA-DA9172C44605"><p>Recovery from a damaged database </p> </li> <li id="GUID-768035B9-F035-56A2-ABBF-37C80D988D4A"><p>Rollback from a change to the database has completed </p> </li> <li id="GUID-6075E47F-C74C-5F8E-AFC4-6703BF268BD1"><p>Changes to the current database </p> </li> <li id="GUID-3FC6D932-5E0F-52FE-8E5A-3B0A27731F78"><p>Changes to Speed Dials </p> </li> <li id="GUID-9451A48E-71F3-59C4-ADAC-9A4778477955"><p>Changes to the sort order of a contact list </p> </li> </ul> <p>Each notification event specifies the UID of the contact changed, and of the client who made the change (to allow clients to ignore their own changes). </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2016EF4B-F001-5EB2-8095-6048582511D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2016EF4B-F001-5EB2-8095-6048582511D6" xml:lang="en"><title>P.I.P.S. Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>P.I.P.S. concepts provide high-level information about common Symbian platform terminologies and how they fit into the P.I.P.S. environment. The concepts describe in detail how these concepts differ when you develop of port applications using the P.I.P.S. environment.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971"><title>How to write a meta file</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A meta file is an additional information file associated with each template extension makefile. It is used to set values to attributes to specify the build platform, makefile type and default option values for the extension. The meta file name is same as that of the associated template extension makefile, except the <codeph>.mk</codeph> suffix is replaced with <codeph>.meta</codeph>. </p> <p>The following provides a step-by-step explanation to write a meta file: </p> <ol id="GUID-B26671F6-0D9E-51F2-979D-856C3DDDC8A5"><li id="GUID-31BD0842-CE03-5FA7-BDC4-D86D8119E25E"><p>Specify whether the makefile is of type <codeph>gnumake</codeph> (GCC make format) or <codeph>nmake</codeph> (Microsoft make format) using the keyword <codeph>makefile</codeph>. It is recommended to use <codeph>gnumake</codeph>, as most of the templates are based on GNU <codeph>make</codeph> format. The value <codeph>nmake</codeph> is not recommended as use of <codeph>nmake</codeph> is deprecated. </p> </li> <li id="GUID-7C06A926-88BD-515A-9FC1-88D83F8969F2"><p>Specify the platform using the keyword <codeph>platform</codeph> which is optional. it is useful to specify the platform, if you want to build for a specific platform such as WINSCW, ARMV5 and so on. </p> </li> <li id="GUID-B7B48487-D5B0-5938-8AD8-E2E34727F203"><p>Specify the default values for options specific to the extension, using the keyword <codeph>option</codeph> which is optional. These default values can be changed in the <filepath>bld.inf</filepath> file within the <codeph>START
+             EXTENSION ... END</codeph> block. For more information on <codeph>START
+             EXTENSION</codeph>, refer to <xref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita">prj_extensions</xref>. </p> </li> </ol> <p>For more information on meta file syntax, refer to <xref href="GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita">Meta Files</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2022F702-9899-5798-8932-D70119C7177D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2022F702-9899-5798-8932-D70119C7177D"><title>Setting Up A Log Engine Client </title><shortdesc>This tutorial describes how to set up a Log Engine client. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-4EAACF43-7B17-522C-A617-96C15971EBCA"><title>Introduction</title> <p>If you are certain that you are coding for a platform with logging functionality you create a custom class with some such name as <xref href="GUID-3016DE27-6C94-3119-B174-831B67B09B27.dita"><apiname>CMyLogEngine</apiname></xref>. It should have members of the classes <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref>, <xref href="GUID-3A3E6F09-0F78-38E1-95F5-00C743F41073.dita"><apiname>CLogViewEvent</apiname></xref>, <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref> and <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref> and an observer of some kind. The functions of your custom class will use the functionality of these classes by calls to the member objects. </p> <p>If you are not certain that your platform will provide logging functionality you must use a log wrapper framework. Write a custom class to use the log wrapper functionality with some such name as <codeph>myLogWrapper</codeph>. It should have two members which own <xref href="GUID-146D719E-BDD6-3F20-80B1-EDE09081A6EA.dita"><apiname>CLogWrapper</apiname></xref> and <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> objects. In the constructor function of <codeph>myLogWrapper</codeph> call the <xref href="GUID-51862DAE-2285-352F-B66E-B2544638E30E.dita"><apiname>ClientAvailable()</apiname></xref> function of <xref href="GUID-146D719E-BDD6-3F20-80B1-EDE09081A6EA.dita"><apiname>CLogWrapper</apiname></xref> to determine whether logging functionality is present. If so, construct the <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> member: if not, leave. The effect of this is that calls to the log client functionality of <codeph>myLogWrapper</codeph> will access an actual log client if the functionality is available. However, if the functionality is not available calls to the log client functionality will either have no effect or else leave as in this example code. </p> </section> <section><title>Procedure</title> <ol id="GUID-F8F83C3B-A722-5C79-B286-F48F51019524"><li id="GUID-7F2D3FBF-E541-530D-9A56-3C49A1D006E2"><p>Create a custom class <xref href="GUID-3016DE27-6C94-3119-B174-831B67B09B27.dita"><apiname>CMyLogEngine</apiname></xref>  </p> </li> <li id="GUID-DFCDEC1F-3B62-5A65-97DB-E63DC68BFEED"><p>Declare the members <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref>, <xref href="GUID-3A3E6F09-0F78-38E1-95F5-00C743F41073.dita"><apiname>CLogViewEvent</apiname></xref>, <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref> and <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref> in the header file of the client application </p> </li> <li id="GUID-3471D668-8369-5458-B436-FD8344988065"><p>Declare <xref href="GUID-BD2669C7-AE36-3AA8-AAAE-A2F01A319369.dita"><apiname>ConstrucL()</apiname></xref> function in the header file of the client application </p> </li> <li id="GUID-5B55236A-F7C8-54FB-B0E9-D3CAC99ADDF0"><p>Implement <xref href="GUID-C8E0575D-5A7F-3D00-9BE5-AD8D6DBCF2F7.dita"><apiname>ConstructL()</apiname></xref> function </p> <ol id="GUID-B6FFC684-372C-5FC3-9035-B7A0FF4B884E"><li id="GUID-8FAB2EEA-79D9-5572-B2F2-15057B860366"><p>Establish a connection to the Log Engine </p> <p><codeblock id="GUID-CDFA500C-FB18-5713-B4F9-7D355D107122" xml:space="preserve">    iLogClient = CLogClient::NewL(iFs);</codeblock> </p> </li> <li id="GUID-E8DFFAD0-506E-5752-B51D-52153AEADD37"><p>get the log events using <codeph>CLogViewEvent</codeph>  </p> <p><codeblock id="GUID-55F3DE8A-FAC5-5C9F-8931-55CA7838A8F2" xml:space="preserve">iLogViewEvent = CLogViewEvent::NewL(*iLogClient);</codeblock> </p> </li> <li id="GUID-7CF80109-CA54-549F-A46D-3C950DAC1711"><p>get the log of recent events using <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref>  </p> <p><codeblock id="GUID-3406E92A-432B-57E6-B6A2-3D63C4EC0B72" xml:space="preserve">iLogViewRecent = CLogViewRecent::NewL(*iLogClient);</codeblock> </p> </li> <li id="GUID-F9DB43F5-F69D-50D1-B287-EFC85DA9828E"><p>add a log filter using <xref href="GUID-F7EB6F45-0FBE-39E7-B146-8E500356B5BE.dita"><apiname>ClogFilter</apiname></xref>  </p> <p><codeblock id="GUID-F90E0B70-AC53-54B9-93B4-26B33A919B33" xml:space="preserve">iLogFilter = CLogFilter::NewL();</codeblock> </p> </li> </ol> </li> </ol>  </section> <section><title>Result</title> <p>The client applications can use the log events to be displayed to the user or for other used as a data for further processing. </p> </section> <example id="GUID-22EAC40F-881C-5AC0-B919-016E502CC7E6"><title>Log engine client example</title> <p>Example code for a Log Engine client on a platform with logging functionality </p> <codeblock id="GUID-2C393B78-BAA0-5893-9A6A-9DC9D76749B6" xml:space="preserve">void CMyLogEngine::ConstructL()
+    {
+    
+    // Establish connection to log engine
+    iLogClient = CLogClient::NewL(iFs);
+ 
+    // Log view and view for recent events events with standard priority
+    iLogViewEvent = CLogViewEvent::NewL(*iLogClient);
+    iLogViewRecent = CLogViewRecent::NewL(*iLogClient);
+
+    // Filter for events
+    iLogFilter = CLogFilter::NewL();
+</codeblock> <p>Example code for a Log Engine client using a wrapper framework </p> <codeblock id="GUID-A409E255-3B0B-51C9-9633-010608E07122" xml:space="preserve">void CMyLogWrapper::ConstructL(RFs&amp; aFs)
+     {
+     
+     // create the CLogWrapper to forward requests to.
+     iLogWrapper = CLogWrapper::NewL(aFs);
+ 
+     if (iLogWrapper-&gt;ClientAvailable())
+         {
+         iLogClient = static_cast&lt;CLogClient*&gt;(&amp;iLogWrapper-&gt;Log());
+         }
+     else
+         {
+         User::Leave(KErrNotSupported);
+         }
+     }
+
+</codeblock> <p>You can now use <codeph>myLogWrapper</codeph> as if it was a log client. </p> </example> </conbody><related-links><link href="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita"><linktext>Maintaining Log Events</linktext> </link> <link href="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita"><linktext>Requesting Log Engine Notifications</linktext> </link> <link href="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita"><linktext>Displaying Log Events</linktext> </link> <link href="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita"><linktext>Configuring Log Engine </linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2045A3D6-88DB-41ED-905B-079A8DC35E24.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2045A3D6-88DB-41ED-905B-079A8DC35E24" xml:lang="en"><title>Handling
+user command selection</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#35c34ef4a35ad96d9807406d16606b29" format="application/java-archive"><codeph>HandleControlEventL()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref> to handle events that occur when user
+selects a menu item.</p>
+<p><draft-comment time="2008-05-19T11:19" translate="no">Add sample code on handling user
+command selection here.</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-204627D4-3818-5DE7-8969-C335DBA5B153.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-204627D4-3818-5DE7-8969-C335DBA5B153"><title>File management with CFileMan</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-848AF5C4-9EC6-566C-BE5F-7901D0E89573"><p> <xref href="GUID-204627D4-3818-5DE7-8969-C335DBA5B153.dita#GUID-204627D4-3818-5DE7-8969-C335DBA5B153/GUID-BE295C9C-37BC-5CCE-9957-4DD5D0DF0672">Overview</xref>  </p> </li> <li id="GUID-64A906F7-3FF5-5B13-903C-938A55574E47"><p> <xref href="GUID-204627D4-3818-5DE7-8969-C335DBA5B153.dita#GUID-204627D4-3818-5DE7-8969-C335DBA5B153/GUID-EC9DAE8B-FB85-5E7F-925F-B03D2F1D584D">Using CFileMan</xref>  </p> </li> <li id="GUID-6D2CF059-A571-5C12-86DD-43211876F9BF"><p> <xref href="GUID-204627D4-3818-5DE7-8969-C335DBA5B153.dita#GUID-204627D4-3818-5DE7-8969-C335DBA5B153/GUID-41F2D8B1-8350-533F-B8BA-4583A6E1C695">Notes</xref>  </p> </li> </ul> <section id="GUID-BE295C9C-37BC-5CCE-9957-4DD5D0DF0672"><title>Overview</title> <p>The <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref> class provides file management functionality, but unlike the corresponding functionality provided by class <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref>, <codeph>CFileMan</codeph> can operate on files and directories located throughout a directory hierarchy. </p> <p> <codeph>CFileMan</codeph> lets you: </p> <ul><li id="GUID-009066F1-2047-5BEF-A3A0-FB4FC341753D"><p>copy files </p> </li> <li id="GUID-4777CAC8-8537-5AF6-87D0-D9C2AAE9DAB4"><p>move files </p> </li> <li id="GUID-7DA9BBBD-49E8-59F4-8A7C-B6C8D06FA981"><p>delete files </p> </li> <li id="GUID-03AF9640-CAC3-58F0-9FB3-A9227505D50B"><p>rename files </p> </li> <li id="GUID-44356ACA-0562-5B1D-BFE6-3ED20275FFBA"><p>delete directories and their contained files and sub-directories </p> </li> <li id="GUID-7703AEF1-64EE-54C5-8DD5-6F5D67B59A68"><p>set and clear file attributes. </p> </li> </ul> <p>The functions provided by the class accept the use of wildcards, and means that some operations may take time to complete. The class, however, provides both synchronous and asynchronous variants. </p> <p>All of the file manipulation functions except <codeph>Rename()</codeph> can operate recursively, and all can operate non-recursively. When operating recursively, these functions will act on all matching files located throughout the source directory's hierarchy. When operating non-recursively, these functions act upon files contained in the single top level source directory only. Recursion is set or unset using the switch parameter to these functions. </p> </section> <section id="GUID-EC9DAE8B-FB85-5E7F-925F-B03D2F1D584D"><title>Using CFileMan</title> <p>Typically, a <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref> operation can result in a number of file/directory manipulation operations, especially if wild cards are used. Some operations, such as copying files, can take a (relatively) long time, especially if such files are large. </p> <p>Symbian OS provides a file notification observer interface that you can implement to provide notification of events resulting from <codeph>CFileMan</codeph> operations. The interface is defined by the <xref href="GUID-E608485F-B3E3-3310-A80E-169D8B9D2234.dita"><apiname>MFileManObserver</apiname></xref> class, and you provide an implementation for the functions: </p> <ul><li id="GUID-EFEAD891-17C8-56E9-9D1B-89E26CC60AD4"><p> <xref href="GUID-E608485F-B3E3-3310-A80E-169D8B9D2234.dita#GUID-E608485F-B3E3-3310-A80E-169D8B9D2234/GUID-54D77B42-2AD9-3F82-89A7-3E651FAC2670"><apiname>MFileManObserver::NotifyFileManStarted()</apiname></xref>  </p> </li> <li id="GUID-012EAF53-723B-5A60-822B-B33F8BEE3F1B"><p> <xref href="GUID-E608485F-B3E3-3310-A80E-169D8B9D2234.dita#GUID-E608485F-B3E3-3310-A80E-169D8B9D2234/GUID-8D17D294-DE4A-3382-A832-9D318F522DE6"><apiname>MFileManObserver::NotifyFileManOperation()</apiname></xref>  </p> </li> <li id="GUID-41626506-7665-5931-A3BA-931A863486AC"><p> <xref href="GUID-E608485F-B3E3-3310-A80E-169D8B9D2234.dita#GUID-E608485F-B3E3-3310-A80E-169D8B9D2234/GUID-A73812AF-0877-3322-90C9-8A8F43708C8E"><apiname>MFileManObserver::NotifyFileManEnded()</apiname></xref>. </p> </li> </ul> <p>Symbian OS calls the notification functions before or after each file or directory entry has been processed, or during a file copy or move operation. You can use the notification to provide information about the state of the operation, such as error codes, the names of the target and destination files, and the number of bytes transferred during a copy operation. This information is available to your implementation by calling the public functions in <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref> and its base class <xref href="GUID-C1C0C7F9-2665-3475-B70F-61C41291BB4D.dita"><apiname>CFileBase</apiname></xref>: </p> <ul><li id="GUID-F374F903-8456-57E0-B990-50ADEDB62CC8"><p> <xref href="GUID-C1C0C7F9-2665-3475-B70F-61C41291BB4D.dita#GUID-C1C0C7F9-2665-3475-B70F-61C41291BB4D/GUID-5EAB13D4-F93B-388B-92DE-F1987FBF2967"><apiname>CFileBase::GetLastError()</apiname></xref>  </p> </li> <li id="GUID-473260BD-F9E1-54B2-BB2B-6D0DB397B774"><p> <xref href="GUID-C1C0C7F9-2665-3475-B70F-61C41291BB4D.dita#GUID-C1C0C7F9-2665-3475-B70F-61C41291BB4D/GUID-96D7B25A-DFF6-3D30-86E0-1393EE0EA301"><apiname>CFileBase::GetMoreInfoAboutError()</apiname></xref>  </p> </li> <li id="GUID-86E140C6-A65E-524D-B40C-8D22A3174217"><p> <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-4D489875-CAAB-3022-BE81-DF53B961BD9E"><apiname>CFileMan::CurrentAction()</apiname></xref>  </p> </li> <li id="GUID-18116CCF-BEF7-5B47-B6C8-F08C8E2DE8D2"><p> <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-9DB0E0B7-7100-3FB1-81FA-1075E6E9E609"><apiname>CFileMan::GetCurrentTarget()</apiname></xref>  </p> </li> <li id="GUID-F3100AE7-4234-5B9C-9F29-C46EC74B6408"><p> <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-CF653BC4-8480-3774-AD87-05E4DDCBC1DE"><apiname>CFileMan::GetCurrentSource()</apiname></xref>  </p> </li> <li id="GUID-F2C0B561-6E6C-5223-8428-026D56125807"><p> <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-351464A4-E108-39C4-9F40-6C099DC89F0A"><apiname>CFileMan::BytesTransferredByCopyStep()</apiname></xref>  </p> </li> </ul> <p>You can also use the notification function to cancel, retry or continue processing a file or directory, or to abort the whole operation, by returning a suitable <xref href="GUID-E608485F-B3E3-3310-A80E-169D8B9D2234.dita#GUID-E608485F-B3E3-3310-A80E-169D8B9D2234/GUID-077D82DD-0D4F-38DB-B2F9-EDE6806DBA7A"><apiname>MFileManObserver::TControl</apiname></xref> value. </p> <p>This mechanism provides a way for an application to provide feedback, or to give control over such operations to an end-user through its user interface. </p> <p><b>Example code (1)</b> </p> <p>The following example code shows how you might use this. It is not a complete example, but it gives you an idea of what's possible. The example attempts to copy all files from directory <filepath>C:\path1</filepath> to <filepath>c:\path2</filepath> synchronously. </p> <p>You would need to elaborate on this to make it part of a real application, and you would probably need the use of active objects, especially if using the asynchronous versions of the <codeph>CFileMan</codeph> functions. </p> <codeblock id="GUID-F23E9F4C-750D-5019-A38A-5A5EAF27DA48" xml:space="preserve">    ...
+    _LIT(KSourcePath,"C:\\path1\\*.*");
+    _LIT(KDestinationPath,"C:\\path2");
+
+    // Connect session
+    RFs fsSession;
+    User::LeaveIfError(fsSession.Connect()); 
+    
+    // Create file management object
+    CFileMan* fileMan = CFileMan::NewL(fsSession);
+    CleanupStack::PushL(fileMan); 
+
+    // Create file management notification object and set to observe
+    TFileCopyProgressMonitor fileCopyProgressMonitor(*fileMan);
+    fileMan-&gt;SetObserver(&amp;fileCopyProgressMonitor);
+    
+    // Do copy (here synchronously)
+    fileMan-&gt;Copy(KSourcePath,KDestinationPath);
+    
+    // Clean up
+    CleanupStack::PopAndDestroy(); 
+    
+    // close file server session
+    fsSession.Close();
+    ...
+    </codeblock> <codeblock id="GUID-FD9D41C0-EF79-5F5A-92FE-E4128E652B5A" xml:space="preserve">class TFileCopyProgressMonitor : public MFileManObserver
+    {
+public :
+    TFileCopyProgressMonitor(CFileMan&amp; aFileMan);
+public : // implement the interface
+    TControl NotifyFileManStarted();
+    TControl NotifyFileManOperation();
+    TControl NotifyFileManEnded();
+public :
+    CFileMan&amp; iFileMan;
+    }
+     </codeblock> <codeblock id="GUID-3DFCEC35-FDCE-57AC-B940-4F6A5467246D" xml:space="preserve">TFileCopyProgressMonitor::TFileCopyProgressMonitor(CFileMan&amp; aFileMan)
+    :iFileMan(aFileMan)
+    {    
+    }
+
+// Called when a copy operation started
+MFileManObserver::TControl TFileCopyProgressMonitor::NotifyFileManStarted()
+    {
+    TFileName&amp; aFile
+    
+    // Get name of file we are copying.
+    // you might want to do something with this, such as display in a UI,
+    // or save in a data member of this object for later use.
+    iFileMan.GetCurrentSource(aFile);
+
+    // Allow the operation to continue.
+    return EContinue;
+    }
+
+// Called while a copy operation is in progress
+MFileManObserver::TControl TFileCopyProgressMonitor::NotifyFileManOperation()
+    {
+    TInt bytesTransferred;
+    
+    // number of bytes copied so far for the file. 
+    bytesbytesTransferred = iFileMan.BytesTransferredByCopyStep();
+    
+    // Allow the operation to continue.
+    // You would choose to do something different; for example, you could 
+    // return ECancel to cancel the operation if you had a reason to do so,
+    return EContinue;
+    }
+    
+// Called when a copy operation is complete
+MFileManObserver::TControl TFileCopyProgressMonitor::NotifyFileManEnded()
+    {
+    TInt lasterror;
+    
+    // Allow operations to continue if all is well. 
+    lasterror = iFileMan.GetLastError();
+    if (lasterror == KErrNone)
+        {
+        return EContinue;
+        }
+    
+    // Operation has not completed properly, so you might want to get
+    // more information, and proceed accordingly.
+    TFileManError filemanerror;
+    
+    filemanerror = iFileMan.GetMoreInfoAboutError();
+    if (filemanerror==ESrcOpenFailed)
+        {
+        ...
+        return EAbort;
+        }
+        
+    if (filemanerror==ETrgOpenFailed)
+        {
+        ...
+        return EAbort;
+        }
+      
+    ... // you might want to check for other conditions etc.
+    }
+     </codeblock> <p><b>Example code (1)</b> </p> <p>This code fragment shows a use of the <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-53411800-9145-38CA-8C8C-B8C6F97E8FEE"><apiname>CFileMan::Attribs()</apiname></xref> functions. </p> <codeblock id="GUID-DFE5FD10-DDCC-5882-A8C1-256B3CB5E42B" xml:space="preserve">_LIT(KDirText,"\\TopDir\\");
+...
+fileMan.Attribs(KDirText,KEntryAttHidden|KEntryAttReadOnly,
+    KEntryAttArchive,TTime(0),CFileMan::ERecurse);
+...</codeblock> <p>This sets the hidden and read-only attributes, and clears the archive attribute for all files located in the hierarchy below <filepath>\TopDir\</filepath>. The time of their last modification will be unchanged. </p> </section> <section id="GUID-41F2D8B1-8350-533F-B8BA-4583A6E1C695"><title>Notes</title> <ol id="GUID-D1790FF2-8C3C-55ED-98D8-D095227D5B83"><li id="GUID-602606F3-D537-580F-BEB7-1E25F1760B8A"><p>If you use <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-9456C8B9-C975-356C-B3A4-755928DE2AC3"><apiname>CFileMan::Move()</apiname></xref>, be aware that the behaviour of this operation is sensitive to the presence (or absence) of a trailing backslash ("\") character on the end of the source path: </p> <ul><li id="GUID-E542B9BE-888B-55DE-95A1-A9B00810FD11"><p>if there is a trailing backslash ("\") character, then the operation moves the content of the last directory level only. </p> </li> <li id="GUID-C6A158E1-612C-596D-8C26-88377E3B7AC1"><p>if there is no trailing backslash ("\") character, then the operation moves both the last directory level and its content, but note that you also need to specify <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-8FD6F114-0D4C-3701-ACCF-4748129B1F79"><apiname>CFileMan::ERecurse</apiname></xref> in the switches passed to the function. </p> </li> </ul> <p>For example, if the directory level "b" contains the files <filepath>F1</filepath>, <filepath>F2</filepath> and <filepath>F3</filepath>, then: </p> <codeblock id="GUID-A08081B3-213E-527D-B413-42A05B54CF0D" xml:space="preserve">CFileMan fm;
+...
+fm-&gt;Move(_L("C:\a\b\"), _L("C:\x\y\"), CFileMan::ERecurse);</codeblock> <p>results in files <filepath>F1</filepath>, <filepath>F2</filepath> and <filepath>F3</filepath> being moved from <filepath>C:\a\b</filepath> to <filepath>C:\x\y</filepath>, leaving the path <filepath>C:\a\b</filepath> unchanged, except that it no longer contains the files <filepath>F1</filepath>, <filepath>F2</filepath> and <filepath>F3</filepath>. </p> <p>If there is no trailing backslash character, for example: </p> <codeblock id="GUID-6A5A2B8F-67C4-5278-9A43-FDFC5D849C78" xml:space="preserve">CFileMan fm;
+...
+fm-&gt;Move(_L("C:\a\b"), _L("C:\x\y\"), CFileMan::ERecurse);</codeblock> <p>then both the directory level "b" and its contents are moved. This means that there is no longer a directory "b" under <filepath>C:\\a</filepath>. Instead there is a new directory structure <filepath>C:\x\y\b</filepath> and the files <filepath>F1</filepath>, <filepath>F2</filepath> and <filepath>F3</filepath> now exist under <filepath>C:\x\y\b</filepath>. Also if "b" contains subdirectories, then these are also moved along with "b". </p> </li> <li id="GUID-3CAC4CA6-AB36-56AC-81AB-032DF70D99B7"><p>If you use <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-633C2FF5-4077-346D-B7B6-4CC04F887D7B"><apiname>CFileMan::Copy()</apiname></xref>, the behaviour of this function does <i>not</i> depend on the presence or absence of a trailing backslash ("\") character on the end of the source path. This pattern of behaviour is in <i>contrast</i> to that of <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-9456C8B9-C975-356C-B3A4-755928DE2AC3"><apiname>CFileMan::Move()</apiname></xref>. You can only copy the content of the source path. You cannot request that the last directory level plus its content be copied to the target path, by adding a trailing backslash ("\") character onto the end of the source path. This means that both of the following copy operations produce identical results: </p> <codeblock id="GUID-75B4FA7B-BB08-5322-A8C6-ACFD4C860D1D" xml:space="preserve">CFileMan fm;
+...
+fm-&gt;Copy(_L("C:\a\b\"), _L("C:\x\y\"), CFileMan::ERecurse);
+fm-&gt;Copy(_L("C:\a\b"), _L("C:\x\y\"), CFileMan::ERecurse);</codeblock> </li> <li id="GUID-A17CB3FD-39BA-5D57-816B-1AB70C746E3F"><p>It is possible to pass <xref href="GUID-5A096F1A-B316-3B40-BB4B-F9F12099DC91.dita"><apiname>KNullDesC</apiname></xref>, the null (or empty) descriptor, to the <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-71056B22-AC2A-3E91-8896-8A6F2FB9B619"><apiname>CFileMan::Delete()</apiname></xref> functions as the path name. Although you might expect these functions to treat this as a null request, i.e. to delete nothing, they interpret the null descriptor as the string <filepath>\*.*</filepath>. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-204B4155-AE35-5C53-867B-299AF7E5D16A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-204B4155-AE35-5C53-867B-299AF7E5D16A" xml:lang="en"><title>Device
+driver services</title><shortdesc>Describes asynchronous services provided by device drivers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Some asynchronous services are provided directly by device drivers.</p>
+<p>As with services provided by the client-server framework, device driver
+provided services are presented to clients through a client API known as the
+user-side device driver. This is typically an <codeph>R</codeph> class, derived
+from <codeph>RLogicalChannel</codeph>. </p>
+<p>When the <codeph>RLogicalChannel</codeph> is opened, the device driver
+is initialised and the client’s thread id is noted. Request functions are
+converted into a message which encapsulates all the parameters, and sent to
+the Kernel-side driver. Completion of a request function usually corresponds
+closely with completion of a device operation. On completion, the driver posts
+the request status and signals the client thread’s request semaphore.</p>
+<p>Device drivers often have limited capability. For instance, an inability
+to be opened by multiple client threads simultaneously. Therefore, devices
+are often handled by specially tailored server threads. These servers present
+a client API with more sophistication, sharing and checking. </p>
+<p>Usually, therefore, clients use the server-provided classes rather than
+the user-side device driver directly.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2052461A-DF29-5DD0-A7D2-B46A50EAD762.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2052461A-DF29-5DD0-A7D2-B46A50EAD762"><title>Cursor navigation</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The rowset cursor can navigate to all available rows in the rowset. The available rows depends on how the rowset is generated, and particularly on whether the rowset is an SQL view using an evaluation window. </p> <p>The cursor has two valid locations outside of the actual rowset, known as the Beginning and the End. Initially and also following a reset, the cursor is positioned at the beginning.</p> <p>As regards navigating to next and previous rows, the beginning is considered to lie immediately prior to the first row, and end is immediately following the last row. Navigating to the first row is equivalent to navigating to the next row from the beginning, which in an empty set takes the cursor to the end of the set (maybe not immediately obvious). A similar process holds for navigating to the last row of a set.</p> <p>When updating or inserting a row, the cursor is in a special state which prevents navigation until the update or insertion is completed.</p> <p>The cursor may also end up in two other states</p> <ul><li id="GUID-91DD7C42-E668-579D-B58D-2F45FDF61DDF"><p>after deletion of the current row it is "in limbo" between the two neighbouring rows. Navigating to next and previous will move to the respective row.</p> </li> <li id="GUID-17BA2F54-A1FD-5796-AA2B-D59BF66CBBCD"><p>it may become invalid after an error during navigation: either due to failure in the store or file system, or due to loss of context when multiple rowsets are concurrently updating a table. Navigating to any fixed position (i.e. not next or previous) will restore the cursor.</p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98"><title> Writing a Source/Sink Plugin </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Multimedia Framework (MMF) data source and data sink plugins are software abstractions for a source and sink of multimedia data. Data source and data sink plugins are <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> plugins that are intended to be used in conjunction with an MMF controller plugin. Examples of MMF source plugins include: audio input plugins for a microphone, a camera, an RTP stream, a file and a descriptor. Examples of MMF sink plugins include: audio output for a speaker, a display, an RTP stream, a file and a descriptor. The MMF provides standard source plugins for an audio input, a file and a descriptor. It is possible to develop source plugins for other sources of multimedia data provided they conform to the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> API. The MMF also provides standard sink plugins for an audio output, a file and a descriptor. It is possible to develop sink plugins for other sinks of multimedia data provided they conform to the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> API. </p> <p>Sources and sinks are owned by the controller framework and are added to the controller, but not owned by the controller. See <xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-215B50CF-605A-58BA-8E87-CAB942F11741">writing a controller plugin</xref> for more information. </p> <p>To write a MMF Source/Sink Plugin, the following needs to be done: </p> <ul><li id="GUID-204DAAE6-11E1-5628-A577-F1DE21FD9190"><p>Write the appropriate source <codeph>.cpp</codeph> and <codeph>.h</codeph> files that make up the implementation of the source/sink plugin. See <xref href="GUID-B998B8FC-3DC3-57B5-A4E6-C4D903B4ACF9.dita">Creating a Source Plugin</xref> and <xref href="GUID-21E26B07-7E4D-50E0-97BE-C05CCD88B89F.dita">Creating a Sink Plugin</xref>. </p> </li> <li id="GUID-1A27B783-5AF9-544B-9D04-82F7292A2609"><p>Write a <xref href="GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98.dita#GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98/GUID-943F1B90-792A-5288-AE2E-B5F5EE76973D">resource file</xref> defining the formats available in the plugin DLL. </p> </li> <li id="GUID-47CC8C97-38A7-59C5-B8A1-B2DB5C98906C"><p>Write the appropriate <xref href="GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98.dita#GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98/GUID-13D02B99-4BD2-554D-83D3-DD81628E7AAF">build files</xref>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2068DA42-AE77-5213-B3CF-C3AB7F2188BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-2068DA42-AE77-5213-B3CF-C3AB7F2188BE" xml:lang="en"><title>Using
+a FAT Filename Conversion Plug-in</title><shortdesc>This section describes how to dynamically load and call a FAT Filename
+Conversion plug-in to convert file names between Unicode and Windows code
+page. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>This tutorial assumes that you have an understanding of the following: </p> <ul>
+<li id="GUID-DB5761AA-9988-5D61-B42B-9DA5AF0B154B"><p><xref href="GUID-66231EA2-BDEF-582D-A4B9-F356B590038D.dita">FAT
+Filename Conversion Plug-ins Overview</xref> introduces Windows code page
+and the main purpose of the Plug-ins component. </p> </li>
+</ul> </prereq>
+<steps id="GUID-FA2D288A-1D18-504A-86EA-C89876400630">
+<step id="GUID-3706C5D9-0767-528C-A071-7597C8EE8780"><cmd>Load
+the FAT Filename Conversion plug-in DLL. </cmd>
+<stepxmp><codeblock id="GUID-996C058A-7F99-5B20-A6D3-027DB9722421" xml:space="preserve">_LIT(KName,"cp1250");  //The name of the plug-in DLL
+const TUid KPluginUid={0x10206A9C}; //DLL UID acquired from Symbian
+RLibrary lib;
+
+//Encapsulate the UID of this DLL in TUidType.
+const TUidType serverUid(KNullUid,KNullUid,KPluginUid);    
+
+//load the DLL
+User::LeaveIfError(lib.Load(KName,serverUid));</codeblock> </stepxmp>
+<info><p>In this example, <filepath>cp1250.dll</filepath> is dynamically loaded.
+A function is then called to convert a character from Unicode to CP1250.  </p></info>
+</step>
+<step id="GUID-3DB9A9F0-244D-5037-82DA-458C89EF80F2"><cmd/>
+<info>Get the exported function from the DLL. </info>
+<stepxmp><codeblock id="GUID-F85F30A1-C528-5299-AC35-E698CB350771" xml:space="preserve">// Function at ordinal 1 converts text from a Unicode to CP1250.
+TLibraryFunction function1 = lib.Lookup(1);
+
+typedef void (*TConvertFromUnicodeL)(TDes8&amp;, const TDesC16&amp;);    
+TConvertFromUnicodeL aConvertFromUnicodeL = 
+                            reinterpret_cast &lt;TConvertFromUnicodeL&gt; (function1);</codeblock> </stepxmp>
+</step>
+<step id="GUID-CD49317B-9C3D-565C-B31E-0471109FA1A7"><cmd/>
+<info>Call the function to convert the text from Unicode to CP1250. </info>
+<stepxmp><codeblock id="GUID-2259D92B-5BAA-503D-9E80-6B19A38B8877" xml:space="preserve">TBuf8&lt;15&gt; foreign1;
+_LIT16(Uni_1, "\x0053\x0059\x004D\x0042\x0049\x0041\x004E\xFFFD\x20AC\x02C7\x2015");
+const TDesC16&amp; unicode1(Uni_1);
+(*aConvertFromUnicodeL)(foreign1, unicode1);
+...</codeblock> </stepxmp>
+</step>
+<step id="GUID-7E911758-4430-5507-829F-6096564611F2"><cmd/>
+<info>Close the DLL. </info>
+<stepxmp><codeblock id="GUID-59C882FD-A92F-518C-B69D-F1C0FB151B3A" xml:space="preserve">lib.Close();</codeblock> </stepxmp>
+</step>
+</steps>
+<result><p>The parameter <codeph>foreign1</codeph> is returned with the value <codeph>"\0x53\0x59\0x4D\0x42\0x49\0x41\0x4E\0x81\0x80\0xA1\0x5F"</codeph> which is in the CP1250 encoding. </p> </result>
+</taskbody><related-links>
+<link href="GUID-026E865E-12FA-59A9-B923-309B65790E23.dita"><linktext>Creating
+a FAT Filename Conversion                 Plug-in</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-208B15EA-ACDF-5305-A38C-D18AD79576A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-208B15EA-ACDF-5305-A38C-D18AD79576A2"><title>popd</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>popd [ {+|-}n ] </userinput> </p> <p>Remove an entry from the directory stack, and perform a <xref href="GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita">cd</xref> to the new top directory. With no argument, the current top entry is removed. </p> <table id="GUID-7848E575-47A8-5E9A-AEED-CCFA9D0EAA8E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>+n</codeph>  </p> </entry> <entry><p>Identifies a stack entry by counting from the left of the list shown by the <xref href="GUID-3F1FA838-4B65-5692-8B73-AFB9896E5F10.dita">dirs</xref> command, starting with zero. </p> </entry> </row> <row><entry><p> <codeph>-n</codeph>  </p> </entry> <entry><p>Counts from the right. </p> </entry> </row> </tbody> </tgroup> </table> <p>If the <codeph>PUSHD_MINUS </codeph> option is set, the meanings of <codeph>+</codeph> and <codeph>-</codeph> in this context are swapped. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-209F3620-2361-4AED-9F7A-02E72F9EE8FE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-209F3620-2361-4AED-9F7A-02E72F9EE8FE" xml:lang="en"><title>Parent
+and Child without IPC</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In this scenario, the parent process creates the child, but there is no
+subsequent communication between the two (except maybe the parent waiting
+for termination of the child via use of the <xref href="GUID-8F5C89A4-7813-32C7-973E-F7F0F3690BC6.dita"><apiname>waitpid()</apiname></xref> function).</p>
+<p>Rather than use the <codeph>fork()</codeph>/<codeph>exec()</codeph> combination
+to achieve this the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> API can be used instead.
+This API will create a process by a single API call. Additionally, actions
+can be performed on inherited file descriptors to change access before the
+child's main is called. For more detailed information on the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> function
+consult the relevant Open Group standard pages available at <xref href="http://www.opengroup.org" scope="external">http:\\www.opengroup.org</xref>.</p>
+<p><b>Parent process <codeph>fork()</codeph> and <codeph>exec()</codeph> functions</b></p>
+<p>The following code shows how the creation of a child process can be implemented
+using the <codeph>fork()</codeph> and <codeph>exec()</codeph> functions. Note
+that inclusion of header files has been omitted for clarity. </p>
+<codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+  pid_t Childpid = fork();
+     
+  if(Childpid == 0)
+  {
+      //Running in Child process
+
+      //exec() to replace the child process executable
+      char execFileName[] = "/root/PortDoc/Example0_c/Posix/child/ChildProg";
+
+      execl(execFileName,NULL);
+  }
+  else
+  {
+     //Running in parent process
+
+     //Wait for the child process to terminate
+     waitpid(Childpid,NULL,0);
+     
+     printf("\r\n*** Child process finished ***\r\n");
+     
+  }
+   
+  return EXIT_SUCCESS;
+}
+</codeblock>
+<p><b>Using the <codeph>posix_spawn()</codeph> function</b></p>
+<p>The following code shows how the above can be modified to use the <codeph>posix_spawn()</codeph> operation.</p>
+<codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+   pid_t Childpid;
+   char execFileName[] = "/root/PortDoc/Example0_c/Symbian/child/ChildProg";
+   
+   int RetVal= posix_spawn(&amp;Childpid,execFileName,NULL,NULL,NULL,NULL);
+   
+   (void)waitpid(Childpid,NULL,0);
+   
+   printf("\r\n*** Child process finished ***\r\n");
+    
+   return EXIT_SUCCESS;
+}
+</codeblock>
+<p><b>Child process example</b></p>
+<p>The child code shown is unaffected by the mechanism used to spawn it, that
+is, <codeph>fork()</codeph>/<codeph>exec()</codeph> or <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref>,
+but an example is shown below for completeness.</p>
+<codeblock xml:space="preserve">int main(void)
+{
+    printf("\r\n*** Child Running ***\r\n");
+    
+    return EXIT_SUCCESS;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-20B2C96A-9742-4CB0-A37F-19B65765E826.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-20B2C96A-9742-4CB0-A37F-19B65765E826" xml:lang="en"><title>Implementing
+the MHTTPDataOptimiser Interface</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To enable support for Web Acceleration, you must implement your own custom
+encoding and decoding mechanisms by implementing the functions of the interface <codeph>MHTTPDataOptimiser</codeph>.
+The following code illustrates the <codeph>MHTTPDataOptimiser</codeph> interface
+that consists of the <codeph>EncodeL()</codeph> and <codeph>DecodeL()</codeph> methods: </p>
+<codeblock id="GUID-E9CE6DD9-B772-5A5E-9B07-538F07C3DEC5" xml:space="preserve">class MHTTPDataOptimiser
+{
+
+public:
+
+virtual void EncodeL(const TDesC8&amp; aHTTPData, HBufC8*&amp; aEncodedData) = 0;
+    
+virtual void DecodeL(const TDesC8&amp; aData, HBufC8*&amp; aHTTPData, TBool&amp;     aTransFail) = 0;
+
+};</codeblock>
+<section id="GUID-6E64E5BA-0FA7-5B9D-987E-09F2D5F53AE8-GENID-1-6-1-12-1-1-3-1-3-1-13-1-4-1-4-1-2-3"> <title>The EncodeL()
+method</title><p>This method converts HTTP request data (to your selected
+network optimisation protocol format) before it is sent across the TCP connection.
+This method has the following parameters: </p><ul>
+<li id="GUID-5B67C5B3-3112-5E1E-9BCD-4665BAE0F013"><p> <b>aHTTPData: </b> Contains
+HTTP request data in standard HTTP format. </p> </li>
+<li id="GUID-2C903A38-1C76-54E0-84A1-01F35C1C9C09"><p> <b>aEncodedData:</b> On
+return contains encoded HTTP request data in a network optimisation protocol
+format. </p> </li>
+</ul><p> <b> Note:</b> It is assumed that you define a custom optimisation
+mechanism to encode the HTTP request data by implementing the <codeph>EncodeL()</codeph> method. </p> </section>
+<section id="GUID-6E64E5BA-0FA7-5B9D-987E-09F2D5F53AE8-GENID-1-6-1-12-1-1-3-1-3-1-13-1-4-1-4-1-2-4"> <title>The DecodeL()
+method</title><p>This method converts the HTTP response data in your selected
+network optimisation protocol format back to the standard HTTP response data
+format. This method has the following parameters: </p><ul>
+<li id="GUID-D07BB5C7-1E33-5DD3-94D3-1FC8C72053DA"><p> <b>aData:</b> Contains
+the raw data in a network optimisation protocol format received over the TCP
+connection. </p> </li>
+<li id="GUID-BFD2C0BC-20E8-5DE7-84F3-D79FADBEAA3B"><p> <b> aHTTPData:</b> On
+return of this method the <codeph>aHTTPData</codeph> parameter contains the
+HTTP response data. </p> </li>
+<li id="GUID-FE67D081-A66E-54A4-BCB3-5EB6E8D5AF57"><p> <b> aTransFail:</b> When
+you set this parameter value to <codeph>ETrue</codeph> it sends the <codeph>KErrHTTPOptimiserFailsTrans</codeph> event
+to the mobile browser application. </p> </li>
+</ul><p> <b>Note:</b> In a scenario where the HTTP response data is split
+across various packets (for example, when the network bandwidth is low), the <codeph>MHTTPDataOptimiser::DecodeL()</codeph> method
+is called for every data packet received. In this scenario, to ensure successful
+parsing of the HTTP response data, the <codeph>aTransFail</codeph> parameter
+must be set to <codeph>EFalse</codeph> for every call made to <codeph>MHTTPDataOptimiser::DecodeL()</codeph>,
+until the final transaction is encountered. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e178759_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-20DDA21D-B5DE-5D24-9E75-69C68EAF1782.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-20DDA21D-B5DE-5D24-9E75-69C68EAF1782"><title>Expanded Search Capabilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Searches by text field</title> <p> <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref> can search all text fields. It is supported by <xref href="GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E.dita#GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E/GUID-AD325212-39DA-3703-8C1B-5E73FE5F2883"><apiname>CalCommon::TCalSearchBehaviour</apiname></xref>. </p> <p>The following fields are searchable: </p> <ul><li id="GUID-85E95DFC-C916-53C3-80FB-7E84ED757FD0"><p>Summary </p> </li> <li id="GUID-848B3B16-EAFF-5A0F-BD74-C2D3B6EF1C8F"><p>Description </p> </li> <li id="GUID-BA0B4130-F335-5F0A-B4C2-4C4FC4DB2E7C"><p>Location </p> </li> <li id="GUID-3EC81270-B95B-55F7-B64B-AB543F21D2EA"><p>Organizer Common Name </p> </li> <li id="GUID-EC81F09C-446F-5444-8005-54DF9948FA31"><p>Organizer Address </p> </li> <li id="GUID-4D64D415-8BD4-50C9-BFA3-AD0904FB7F5C"><p>Organizer Sent-By </p> </li> <li id="GUID-BC0A6A03-2A2D-5E4E-9554-C4823C17AAE5"><p>Attendee Common Name </p> </li> <li id="GUID-00A96037-E8BB-5850-81F9-8FD3320B44B1"><p>Attendee Address </p> </li> <li id="GUID-2C53D207-932B-5641-861C-32D15C23CC0A"><p>Attendee Sent-By </p> </li> </ul> <p>The search string only needs to match one of the fields specified in the filter for it to be considered a matching instance. </p> <p>It is important to note that an entry can have multiple attendees. This means that searching the attendee fields may become quite expensive for a large meeting. </p> <p>Once the flag is added to <xref href="GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E.dita#GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E/GUID-AD325212-39DA-3703-8C1B-5E73FE5F2883"><apiname>CalCommon::TCalSearchBehaviour</apiname></xref>, it is passed to the constructor of <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-29AFDCA1-FCD9-3C3B-9749-1548AF9A04E3"><apiname>CCalInstanceView::TCalSearchParams</apiname></xref>. The latter is a search parameter used when instances are found by using the API <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref>. </p> </section> <section><title>Searches using filters and time ranges</title> <p>The enum <xref href="GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E.dita#GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E/GUID-36EB8FC9-6EF7-3A80-A6B1-00B18C16937B"><apiname>CalCommon::TCalViewFilterFlags</apiname></xref> is used in entry view and instance view to specify entries that are of interest to the client. Class <xref href="GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E.dita#GUID-519A4EAF-499B-3AAE-A2E1-51A7B247CB0E/GUID-1FCA6E9A-1C8B-3599-B247-B6EC0AF6F695"><apiname>CalCommon::TCalTimeRange</apiname></xref> is used to define the time range within which instances fall. </p> </section> <section><title>Searches using an iterator</title> <p>An instance iterator is used to fetch instances and return them to the client one at a time. The iterator can be obtained via the API: </p> <codeblock id="GUID-A3271B59-EDC6-5B6B-B7E4-161F907C0B32" xml:space="preserve">CCalInstanceIterator* CCalInstanceView::FindInstanceL(const CCalFindInstanceSettings&amp; aSettings) const</codeblock> <p> </p> <p> <xref href="GUID-BB7C2921-86A6-30B3-8092-4338A88C36CE.dita"><apiname>CCalFindInstanceSettings</apiname></xref> is an extensible class containing all search parameters. <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita"><apiname>CCalInstanceIterator</apiname></xref> is the iterator object which contains search results and the methods used to retrieve the instance. </p> <p>The initial search operation finds all instances and caches the results as instance IDs on the client. As the iterator is called to fetch entries, the instances are cached on the client and returned to the user, one at a time. </p> <p>This procedure is advantageous because less time and RAM are used to retrieve a large number of instances. </p> <p> <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita"><apiname>CCalInstanceIterator</apiname></xref> has these exported functions: </p> <codeblock id="GUID-55F11326-35B1-57B3-8FD2-0A65B5206C05" xml:space="preserve">EXPORT_C ~CCalInstanceIterator() 
+// The destructor for the instance iterator </codeblock> <codeblock id="GUID-77814002-571A-5FC5-ACD3-F308924FE4FE" xml:space="preserve">EXPORT_C CCalInstance* NextL() 
+// Fetches the next instance in the iterator. It returns ownership of instance and the iterator moves to the next instance in its results list.</codeblock> <codeblock id="GUID-999383AA-6F01-5A2A-BEF6-96BA7347805E" xml:space="preserve">EXPORT_C CCalInstance* PreviousL() 
+// Fetches the previous instance in the iterator. It returns ownership of the instance and the iterator moves to the previous instance in its results list.</codeblock> <codeblock id="GUID-E68D6B31-2920-5A70-B171-5E8CA3563E09" xml:space="preserve">EXPORT_C TBool HasMore() const 
+// Checks to see if there are any more results in the iterator to be returned by calling NextL.</codeblock> <codeblock id="GUID-6E9DCFAC-4903-562C-B744-CA41A09EC8FD" xml:space="preserve">EXPORT_C TInt Count() const 
+// Returns the total number of instances found by the iterator.</codeblock> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e212448_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-210606BE-A36C-4B65-B083-93F71024196C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-210606BE-A36C-4B65-B083-93F71024196C" xml:lang="en"><title>Setting
+the item selected when the choice list is opened</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can set the list item that is initially selected when the choice list
+is shown to the user. This feature can be used with a choice list of the type <codeph>EAknChoiceListWithCurrentSelection</codeph>. </p>
+<p>If you do not set the selected item, the first item in the list is initially
+selected by default.</p>
+<p>For details on how the choice list items are indexed, see <xref href="GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita">Using
+the Choice list API</xref>.</p>
+<codeblock xml:space="preserve">void CMyAppContainer::CreateChoiceListL()
+    {
+    // Create empty Choice list
+    iChoiceList = CAknChoiceList::NewL( this, NULL );
+    
+    // Add items from resource
+    iChoiceList-&gt;SetItemsL( R_CHOICELISTEX_ITEM_ARRAY );
+    
+    // Set the default selected item
+    iChoiceList-&gt;SetSelectedIndex( KDefaultIndex );
+        
+    iChoiceList-&gt;SetObserver( this );
+    iChoiceList-&gt;SetRect( ChoiceListRect() );
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-210A181E-5EB6-4626-9E7E-8761A2272D79.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-210A181E-5EB6-4626-9E7E-8761A2272D79" xml:lang="en"><title>Set
+a view as a default view</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>An application can set a specific registered view as the
+default view. The default view is displayed when the application is launched
+or brought to the foreground. Also, a system default view can be set, which
+is used when an unrecoverable error occurs during view activation or when
+the application exits. </p><ul>
+<li><p>Application default view </p><codeblock xml:space="preserve">CCoeAppUi::SetDefaultViewL( MCoeView&amp; aView )</codeblock><p>Sets
+the specified view as the default view for the application. If the application
+already has the default view set, then the specified view overrides existing
+default view.</p></li>
+<li><p>System default view.</p><ul>
+<li><codeblock xml:space="preserve">CCoeAppUi::SetSystemDefaultViewL( const TVwsViewId &amp; )</codeblock><p>Sets
+the system default view for default screen device mode, which is <codeph>0</codeph>.</p></li>
+<li><codeblock xml:space="preserve">CCoeAppUi::SetSystemDefaultViewL( const TVwsViewId &amp;,TInt )</codeblock><p>Sets
+the specified view as system default view for a given screen mode.</p></li>
+</ul><note> An application must have the <codeph>ECapabilityWriteDeviceData</codeph> capability
+to set a view as a system default view. If the system default view is already
+set, then the specified view overrides existing default view.  </note></li>
+</ul><p> The following code snippet shows setting a view as the default view
+for an application:</p><codeblock xml:space="preserve">iCCoeAppUi-&gt;SetDefaultViewL( iViewId );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2139B04C-6ED6-599B-A018-D92451B8353E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2139B04C-6ED6-599B-A018-D92451B8353E" xml:lang="en"><title>Data Communications Server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Data Communications Server collection contains the components that provide the frameworks for sockets communications, and for starting network connections. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-214A7085-185B-5D40-A613-E82E68968AAB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-214A7085-185B-5D40-A613-E82E68968AAB"><title>Cnvtool Command Syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <filepath>cnvtool</filepath> utility creates a C++ file which contains the character set conversion data (in an <codeph>SCnvConversionData</codeph> struct) and optionally a function returning the replacement for unconvertible Unicode characters. Both are used in a Charconv plug-in DLL. </p> <section><title>Descriptions</title> <p>The input to <filepath>cnvtool</filepath> are two text files which are known as the source file and the control file. The source file contains a table of pairs of hexadecimal numbers. The first number in each pair is the encoding of a character in the foreign character set, and the second is the Unicode encoding of the same character. The control file specifies the conversion algorithms to convert (both ways) between ranges of characters, and other information. </p> <p>The <codeph>SCnvConversionData</codeph> data structure and the optional function generated by the tool can be accessed from hand-written C++ code. </p> <p>The <filepath>cnvtool</filepath> -generated C++ file is compiled along with the hand-written C++ file to <xref href="GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita">create a Charconv plug-in DLL</xref>. </p> </section> <section><title>Syntax</title> <p> <b> Invocation syntax </b>  </p> <p> <codeph>cnvtool -generateSourceCode</codeph> <varname>control-file</varname>  <varname>source-file</varname> <varname>output-file</varname> [<codeph>options</codeph>] </p> <p> <b>Arguments </b>  </p> <table id="GUID-CABD8A7C-5428-5032-A6E9-B02AD8A5C43A"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <codeph>-generateSourceCode</codeph>  </p> </entry> <entry><p>This must be specified. </p> </entry> </row> <row><entry><p> <varname>control-file</varname>  </p> </entry> <entry><p>The filename of the control file. </p> </entry> </row> <row><entry><p> <varname>source-file</varname>  </p> </entry> <entry><p>The filename of the source text file. </p> </entry> </row> <row><entry><p> <varname>output-file</varname>  </p> </entry> <entry><p>The filename of the generated cpp file. </p> </entry> </row> <row><entry><p>[<codeph>options</codeph>] </p> </entry> <entry><p>See table below. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Optional arguments</b>  </p> <p>The optional arguments may be positioned anywhere in the parameter list. Each has a short and a long form, as shown in the table below separated by a '<codeph>|</codeph>'. </p> <table id="GUID-780A0C08-169F-59BC-AE0A-D9093C318ACC"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <codeph>-c</codeph> | <codeph>-columns</codeph> (<varname>number-of-columns</varname>: <varname>column-of-foreign-character-set-codes</varname>, <varname>column-of-Unicode-codes</varname>) </p> </entry> <entry><p>This must be used if the source file consists of a non-standard number of columns, or if the columns are in a non-standard order. 1 (rather than 0) is the first column. If this flag is not used, then <codeph>-columns(2:
+                  1, 2)</codeph> is assumed. </p> </entry> </row> <row><entry><p> <codeph>-r |
+                  -omitReplacementForUnconvertibleUnicodeCharacters</codeph>  </p> </entry> <entry><p>This must be specified if the replacement for unconvertible Unicode characters specified in the control file is not going to be used by the plug-in DLL. </p> </entry> </row> <row><entry><p> <codeph>-p |
+                  -cutOutAnyPrivateUseUnicodeCharacterSlotsBeingUsed</codeph>  </p> </entry> <entry><p>If this is not used and one or more private-use Unicode character slots are being used, a warning is generated. </p> </entry> </row> <row><entry><p> <codeph>-u | -sourceFilesToSubtract</codeph> (<varname>source-file-1</varname>, <varname>source-file-2</varname>, ...) </p> </entry> <entry><p>This is for use when only a subset of the source file is to be used; the conversion pairs contained in the source files listed under this flag being subtracted from the conversion pairs obtained from the actual source file. </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-215935B4-8AA8-4A87-B70F-E43ADB70B1D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-215935B4-8AA8-4A87-B70F-E43ADB70B1D2" xml:lang="en"><title>Constructing
+the UI controller in traditional architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The call on the first phase constructor method of the UI controller
+occurs in the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref>-derived
+class of application. For more information, see <xref href="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita">Implementing
+framework requirements</xref>.</p>
+<p>The methods you need to implement for your <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUI</parmname></xref>-derived
+UI controller are as follows:</p>
+<ul>
+<li><p>C++ default constructor, which cannot contain any code that
+might leave. A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-277B178E-63D3-4201-A9EB-041E597CA455" xml:space="preserve">CMyAppAppUi::CMyAppAppUi()
+    {
+    // No implementation required
+    }</codeblock>
+<p>The class declaration for this constructor in the class header file
+needs to be public to support the construction method required.</p>
+</itemgroup>
+</li>
+<li><p>Symbian 2nd phase constructor with code that might leave.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-D6CB5AB6-012E-43ED-A25A-A903532BB650" xml:space="preserve">
+void CMyAppAppUi::ConstructL()
+    {
+    // Initialise app UI with skins enabled.
+    BaseConstructL(EAknEnableSkin);
+
+    // Create view object
+    iAppView = CMyAppView::NewL( ClientRect() );
+
+    }
+</codeblock>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aConstructL%28%29" format="application/java-archive"><parmname>CEikAppUi::ConstructL</parmname></xref> completes the construction
+of the object. It is a public constructor in the header file.</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html#ebd48f5819a517d45755391fd3497b3b" format="application/java-archive"><parmname>CAknAppUi::BaseConstructL</parmname></xref> initializes the application with standard Symbian platform
+UI application values, including the color scheme look and feel for all UI
+controls, the status pane, and the <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">menus</xref> . <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html#ebd48f5819a517d45755391fd3497b3b" format="application/java-archive"><parmname>CAknAppUi::BaseConstructL</parmname></xref> can accept flags enumerated in <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi" format="application/java-archive"><parmname>CEikAppUi</parmname></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref>.
+In particular, the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUiBase.html#68986ab776eb5d6b5a809a1c005a73008d94047a388aa6a9fa6381f45d548ffe" format="application/java-archive"><parmname>CAknAppUi::EAknEnableSkin</parmname></xref> flag enables <xref href="GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita">themes</xref> in
+the application.</p>
+<p><parmname>iAppView = CMyAppView::NewL( ClientRect() )</parmname> where <parmname>NewL</parmname> is
+a two-phase constructor for the view. The view object is owned by the UI controller
+and must be included in the class destructor to free the reserved resources.</p>
+</itemgroup>
+</li>
+</ul>
+<p>The UI controller automatically supports <xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">scalability</xref>.</p>
+<p>You must implement other methods to support <xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">key
+event handling</xref>, <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref>, <xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">layout
+change support</xref>, and other possible <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">events</xref>,
+as well as overriding default <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">control
+pane</xref> and status pane behavior.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-215D2BD2-1757-5869-A589-98BE332EB4E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-215D2BD2-1757-5869-A589-98BE332EB4E2" xml:lang="en"><title>find</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><userinput>find [-d | -s ] [pathname ...] expression</userinput> </p>
+<p>The <codeph>find</codeph> command recursively descends the directory tree
+for each pathname listed, evaluating an expression (composed of the <b>Primaries</b> and <b>Operands</b> listed
+in the following sections) in terms of each file in the tree. </p>
+<p>The <codeph>find</codeph> command supports the following options: </p>
+<table id="GUID-B4D4105E-188A-51CB-A7AC-C88BCC474DD5">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.42*"/><colspec colname="col1" colwidth="1.58*"/>
+<thead>
+<row>
+<entry><p><b>Option</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>-d</codeph>  </p> </entry>
+<entry><p>Cause <codeph>find</codeph> to perform a depth-first traversal,
+that is directories are visited in post-order and all entries in a directory
+will be acted on before the directory itself. By default, <codeph>find</codeph> visits
+directories in pre-order, that is before their contents. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-s</codeph>  </p> </entry>
+<entry><p>Cause <codeph>find</codeph> to traverse the file hierarchies in
+lexicographical order, that is alphabetical order within each directory. </p> <p> <b>Notes:</b>  </p> <ul>
+<li id="GUID-EC32CF84-4AA1-5803-9D9C-6E5DAB1B646D"><p>The <codeph>find -s</codeph> and <codeph>find
+| sort</codeph> commands may give different results. </p> </li>
+<li id="GUID-F90A1413-0E6D-5E8B-A999-30577E647E8E"><p>When the <codeph>-d</codeph> and <codeph>-s</codeph> options
+are not used, the <codeph>find</codeph> command traverses the directory in
+pre-order, that is the directories will be listed first followed by the files
+in that directory. </p> </li>
+</ul> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p> <b>Note:</b> For more information about using the <codeph>find</codeph> command,
+search <xref href="http://www.freebsd.org/cgi/man.cgi" scope="external">http://www.freebsd.org/cgi/man.cgi</xref> by
+specifying <codeph>find</codeph> as the search keyword and selecting the <b>FreeBSD
+6.2-Release</b> option from the release list. </p>
+<section><title>Primaries</title> <p>The following primaries are supported
+by the <codeph>find</codeph> command: </p> <table id="GUID-57FEB8A9-6307-52C9-A151-11EA1AC43494">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.42*"/><colspec colname="col1" colwidth="1.58*"/>
+<thead>
+<row>
+<entry><p><b>Primary</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>-amin n</codeph>  </p> </entry>
+<entry><p>True if the difference between the file last access time and the
+time <codeph>find</codeph> was started, rounded up to the next full minute,
+is <codeph>n</codeph> minutes. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-anewer file</codeph>  </p> </entry>
+<entry><p>File was last accessed more recently than file was modified. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-atime n</codeph>  </p> </entry>
+<entry><p>If no units are specified, this primary evaluates to true if the
+difference between the file last access time and the time <codeph>find</codeph> was
+started, rounded up to the next full 24-hour period, is <codeph>n</codeph> 24-hour
+periods. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-cmin n</codeph>  </p> </entry>
+<entry><p>True if the difference between the time of last change of file status
+information and the time <codeph>find</codeph> was started, rounded up to
+the next full minute, is <codeph>n</codeph> minutes. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-cnewer file</codeph>  </p> </entry>
+<entry><p>True if the current file has been changed more recently than the
+changed time of the file named by the pathname file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-ctime n</codeph>  </p> </entry>
+<entry><p>If no units are specified, this primary evaluates to true if the
+difference between the time of last change of file status information and
+the time <codeph>find</codeph> was started, rounded up to the next full 24-hour
+period, is <codeph>n</codeph> 24-hour periods. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-delete</codeph>  </p> </entry>
+<entry><p>Deletes the files specified as an argument to the <codeph>delete</codeph> option. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-depth </codeph>  </p> </entry>
+<entry><p>Always true. This option is similar to the <codeph>-d</codeph> option. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-empty </codeph>  </p> </entry>
+<entry><p>True if the current file or directory is empty. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-exec utility [argument ...] {} +</codeph>  </p> </entry>
+<entry><p>The primary evaluates as true if the invoked utility returns a zero
+value as exit status. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-iname pattern</codeph>  </p> </entry>
+<entry><p>This option is similar to <codeph>-name</codeph>, but the match
+is case insensitive. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-links n</codeph>  </p> </entry>
+<entry><p>True if the file has <codeph>n</codeph> links. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-ls </codeph>  </p> </entry>
+<entry><p>This primary always evaluates to true. The following information
+for the current file is written to standard output; inode number, size in
+512-byte blocks, file permissions, number of hard link, size in bytes, last
+modification time, and pathname. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-maxdepth n</codeph>  </p> </entry>
+<entry><p>Always true; descend at most <codeph>n</codeph> directory levels
+below the command line arguments. If any <codeph>-maxdepth</codeph> primary
+is specified, it applies to the entire expression even if it would not normally
+be evaluated. <codeph>-maxdepth</codeph> 0 limits the whole search to the
+command line arguments. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-mindepth n</codeph>  </p> </entry>
+<entry><p>Always true; do not apply any tests or actions at levels less than <codeph>n</codeph>.
+If any <codeph>-mindepth</codeph> primary is specified, it applies to the
+entire expression even if it would not normally be evaluated. <codeph>-mindepth</codeph> 1
+processes all but the command line arguments. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-mtime n</codeph>  </p> </entry>
+<entry><p>If no units are specified, this primary evaluates to true if the
+difference between the file last modification time and the time <codeph>find</codeph> was
+started, rounded up to the next full 24-hour period, is <codeph>n</codeph> 24-hour
+periods. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-name pattern</codeph>  </p> </entry>
+<entry><p>True if the last component of the pathname being examined matches <codeph>pattern</codeph>.
+Special shell pattern matching characters <b>[</b>, <b>]</b>, <b>*</b>, and <b>?</b> may
+be used as part of <codeph>pattern</codeph>. These characters may be matched
+explicitly by escaping them with a backslash (<b>\</b>). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-newer file</codeph>  </p> </entry>
+<entry><p>True if the current file has a more recent last modification time
+than <codeph>file</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-path pattern</codeph>  </p> </entry>
+<entry><p>True if the pathname being examined matches <codeph>pattern</codeph>.
+Special shell pattern matching characters <b>[</b>, <b>]</b>, <b>*</b>, and <b>?</b> may
+be used as part of <codeph>pattern</codeph>. These characters may be matched
+explicitly by escaping them with a backslash (<b>\</b>). Slashes (<b>/</b>)
+are treated as normal characters and do not have to be matched explicitly. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-print</codeph>  </p> </entry>
+<entry><p>This primary always evaluates to true. It prints the pathname of
+the current file to standard output. If none of <codeph>-exec</codeph>, <codeph>-ls</codeph>, <codeph>-print0</codeph>,
+or <codeph>-ok</codeph> is specified, the given expression shall be effectively
+replaced by <codeph>( given expression )           -print</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-print0</codeph>  </p> </entry>
+<entry><p>This primary always evaluates to true. It prints the pathname of
+the current file to standard output, followed by an ASCII NUL character (character
+code 0). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-printx</codeph>  </p> </entry>
+<entry><p>This primary always evaluates to true. It prints the pathname of
+the current file to standard output in a new line. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-prune </codeph>  </p> </entry>
+<entry><p>This primary always evaluates to true. It causes <codeph>find</codeph> to
+not descend into the current file. Note, the <codeph>-prune</codeph> primary
+has no effect if the <codeph>-d</codeph> option was specified. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-size n[c]</codeph>  </p> </entry>
+<entry><p>True if the file's size, rounded up, in 512-byte blocks is <codeph>n</codeph>.
+If <codeph>n</codeph> is followed by a <codeph>c</codeph>, then the primary
+is true if the file's size is <codeph>n</codeph> bytes (characters). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-type t</codeph>  </p> </entry>
+<entry><p>True if the file is of the specified type. Possible file types are
+as follows: </p> <ul>
+<li id="GUID-97C7E16D-608B-51A7-AD08-4C241BAA39CB"><p> <b>b:</b> Block special </p> </li>
+<li id="GUID-38CB8D36-3029-505E-BC8D-473DD9E11A7A"><p> <b>c:</b> Character
+special </p> </li>
+<li id="GUID-F9FC28B8-068E-5477-BA54-A9AC6C1D3EED"><p> <b>d:</b> Directory </p> </li>
+<li id="GUID-555704A1-D975-59BF-8E66-730206EE2DE9"><p> <b>f:</b> Regular file </p> </li>
+<li id="GUID-B884FFCD-714A-5F06-BE33-F6230B4E96C8"><p> <b>p:</b> FIFO </p> </li>
+<li id="GUID-8A00A407-CD09-5958-B2B1-926C6F4660D4"><p> <b>s:</b> Socket </p> </li>
+</ul> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>All primaries which take a numeric argument allow the number to
+be preceded by a plus sign (<b>+</b>) or a minus sign (<b>-</b>). A preceding
+plus sign means <b>more than n</b>, a preceding minus sign means <b>less than
+n</b> and neither means <b>exactly n</b>. </p> <p> <b>Note:</b> The following
+primaries are not supported by the Symbian version of the <codeph>find</codeph> command: </p> <ul>
+<li id="GUID-805044AB-3DE8-5B8F-98D7-55FB2225EEBD"><p><codeph>-exec exe {}
+\;</codeph> </p> </li>
+<li id="GUID-0EDF9DA7-E700-5856-A435-9CE89599F08A"><p><codeph>-fstype</codeph> </p> </li>
+<li id="GUID-13BE7836-F93B-591F-826B-B601B205F59D"><p><codeph>-group</codeph> </p> </li>
+<li id="GUID-2E82D489-6421-55C7-8B03-C6B87D4923F1"><p><codeph>-inum</codeph> </p> </li>
+<li id="GUID-29C2484B-E991-5872-AB04-FAD73815F178"><p><codeph>-iregex</codeph> </p> </li>
+<li id="GUID-DA21023E-0ED4-5400-9DCD-53FEE6F8E35D"><p><codeph>-nouser</codeph> </p> </li>
+<li id="GUID-E8A96727-BD43-5FEA-A298-2DD253A15A8D"><p><codeph>-nogroup</codeph> </p> </li>
+<li id="GUID-1A8880CF-1F34-56B8-8F75-89CB27D9A51A"><p><codeph>-perm,</codeph> </p> </li>
+<li id="GUID-189A601F-5065-5A0B-85B8-BC55CF34D5B3"><p><codeph>-user</codeph> </p> </li>
+</ul> </section>
+<section><title>Operators</title> <p>The primaries may be combined using the
+following operators. The operators are listed in order of decreasing precedence. </p> <table id="GUID-FB435821-5475-50A3-8DA1-6A8457CFD3ED">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.49*"/><colspec colname="col1" colwidth="1.51*"/>
+<thead>
+<row>
+<entry><p><b>Operator</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>( expression ) </codeph>  </p> </entry>
+<entry><p>This evaluates to true if the parenthesized expression evaluates
+to true. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>! expression</codeph>  </p> </entry>
+<entry><p>This is the unary NOT operator. It evaluates to true if the expression
+is false. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>expression -and expression</codeph>  </p> </entry>
+<entry><p>The <codeph>-and</codeph> operator is the logical AND operator.
+As it is implied by the juxtaposition of two expressions it does not have
+to be specified. The expression evaluates to true if both expressions are
+true. The second expression is not evaluated if the first expression is false. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>expression -or expression</codeph>  </p> </entry>
+<entry><p>The <codeph>-or</codeph> operator is the logical OR operator. The
+expression evaluates to true if either the first or the second expression
+is true. The second expression is not evaluated if the first expression is
+true. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>All operands and primaries must be separate arguments to <codeph>find</codeph>.
+Primaries which themselves take arguments expect each argument to be a separate
+argument to <codeph>find</codeph>. </p> </section>
+<section><title>Copyright notice</title> <p>For information about documentation
+copyrights associated with the <codeph>find</codeph> command, see <xref href="http://www.freebsd.org/copyright/freebsd-doc-license.html" scope="external">http://www.freebsd.org/copyright/freebsd-doc-license.html</xref>. </p> <p><b>The
+FreeBSD Documentation License</b> </p> <p>Copyright 1994-2006 The FreeBSD
+Project. All rights reserved. </p> <p>Redistribution and use in source (SGML
+DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth)
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-8477E6A8-CC08-5A9D-B03B-AE68C44FD987">
+<li id="GUID-BD106442-7374-5E61-BDF8-8DBAB72BED55"><p>Redistributions of source
+code (SGML DocBook) must retain the above copyright notice, this list of conditions
+and the following disclaimer as the first lines of this file unmodified. </p> </li>
+<li id="GUID-F49490B2-7096-5365-9245-33E83CAB1562"><p>Redistributions in compiled
+form (transformed to other DTDs, converted to PDF, PostScript, RTF and other
+formats) must reproduce the above copyright notice, this list of conditions
+and the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2161BD64-889B-5EAB-B023-1162FE9619DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2161BD64-889B-5EAB-B023-1162FE9619DB" xml:lang="en"><title>How
+to use multiple active objects</title><shortdesc>This document illustrates how to use one active object to control
+another.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following example code fragments show how to construct a program with
+two active objects, where one controls the initiation and cancellation of
+the other.</p>
+<p>In these examples:</p>
+<p><codeph>CActiveConsole</codeph> is an active object and contains a pointer
+to a <codeph>CConsoleBase</codeph> object which is a service provider. Through
+this service provider, the active object provides the facility to request
+a character from the keyboard.</p>
+<p><codeph>RunL()</codeph> delegates the handling of completed requests to
+the pure virtual function <codeph>ProcessKeyPress()</codeph>, which must be
+provided by a derived class.</p>
+<p><codeph>CMessageKeyProcessor</codeph> is further derived from <codeph>CActiveConsole</codeph> and
+contains a pointer to another active object <codeph>CExampleActiveObject</codeph>,
+which requires input from the keyboard.</p>
+<p>Depending on the input character, the <codeph>CMessageKeyProcessor</codeph> active
+object does one of the following:</p>
+<ul>
+<li id="GUID-9151F698-3D4F-5C3D-A758-194018FC053C"><p>issues a request to
+the <codeph>CExampleActiveObject</codeph> active object</p> </li>
+<li id="GUID-FBF8743F-0147-502B-BBE8-824DB727F791"><p>cancels any outstanding
+request to the <codeph>CExampleActiveObject</codeph> active object</p> </li>
+<li id="GUID-2E714DE6-AAE1-5926-8026-9B6E1C09C5C7"><p>does nothing</p> </li>
+</ul>
+<p>The implementation of the <codeph>CExampleActiveObject</codeph> active
+object is not relevant to the example and is not shown.</p>
+<p>The following diagram shows the relationship between the classes.</p>
+<fig id="GUID-AF998428-D142-56F8-8967-AF66AF9119F8">
+<image href="GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e208130_href.png" placement="inline"/>
+</fig>
+<section id="GUID-5E2A6378-546D-46C5-8081-6425A96FAAFF"><title>Encapsulating the service provider</title> <p>The class <codeph>CActiveConsole</codeph> encapsulates
+the provision of basic keyboard services. Its <codeph>iConsole</codeph> data
+member is a pointer to the service provider, the <codeph>CConsoleBase</codeph> object.</p> <p>The
+active object class is defined as:</p> <codeblock id="GUID-DC98E432-1927-55F5-94A3-68D2493B75E8" xml:space="preserve">class CActiveConsole : public CActive
+    {
+public:
+    CActiveConsole(CConsoleBase* aConsole);
+    void ConstructL();
+    ~CActiveConsole();
+    void RequestCharacter();
+    void RunL();
+    void DoCancel();
+    virtual void ProcessKeyPress(TChar aChar)=0;
+protected:
+    CConsoleBase* iConsole; 
+    };</codeblock> <p>The class constructor takes a pointer to a <codeph>CConsoleBase</codeph> object
+as its single argument and initializes its <codeph>iConsole</codeph> data
+member to this value:</p> <codeblock id="GUID-2C5C49DB-AE88-5F84-82D7-BA5680A286C8" xml:space="preserve">CActiveConsole::CActiveConsole(CConsoleBase* aConsole)
+    : iConsole(aConsole)
+    {}</codeblock> <p>The <codeph>ConstructL()</codeph> function adds the
+active object to the active scheduler:</p> <codeblock id="GUID-CE947B19-9664-5774-ABFB-17E79A112131" xml:space="preserve">void CActiveConsole::ConstructL()
+    {
+    CActiveScheduler::Add(this);
+    }</codeblock> <p>The destructor cancels any outstanding request before
+destroying the active object:</p> <codeblock id="GUID-0120EE92-2BD8-5B2E-841A-DC366B3BED12" xml:space="preserve">CActiveConsole::~CActiveConsole()
+    {
+    Cancel();
+    }</codeblock> <p><codeph>DoCancel()</codeph> is implemented to cancel
+the request to <codeph>iConsole</codeph>.</p> <p>The <codeph>RequestCharacter()</codeph> function
+makes a request for a key press to the service provider by calling <codeph>iConsole-&gt;Read(iStatus)</codeph> and
+setting the active request flag:</p> <codeblock id="GUID-EF731B8D-7001-503F-8167-7A10697D5202" xml:space="preserve">void CActiveConsole::RequestCharacter()
+    {
+    iConsole-&gt;Read(iStatus);
+    SetActive();
+    }</codeblock> <p>The <codeph>RunL()</codeph> function makes a call to
+the <codeph>ProcessKeyPress()</codeph> function. This is a pure virtual function
+that derived classes must implement to handle the key press and to reissue
+the request:</p> <codeblock id="GUID-DF9F07BB-2099-5310-8921-3A290580B4AF" xml:space="preserve">void CActiveConsole::RunL()
+    {
+    ProcessKeyPress(TChar(iConsole-&gt;KeyCode()));
+    }</codeblock> </section>
+<section id="GUID-FFD3321F-3A46-4C40-A779-39C142DC79C3"><title>Further deriving from the active object</title> <p>The class <codeph>CMessageKeyProcessor</codeph> is
+a concrete class, derived from <codeph>CActiveConsole</codeph>. It provides
+an implementation for the<codeph>ProcessKeyPress()</codeph> function and can
+issue or cancel requests to a<codeph>CExampleActiveObject</codeph> active
+object.</p> <p>This active object class is defined as:</p> <codeblock id="GUID-C5F51E0D-517C-523D-BADA-4B3CDCA53073" xml:space="preserve">class CMessageKeyProcessor : public CActiveConsole
+    {
+public:
+    ...
+    CMessageKeyProcessor(CConsoleBase* aConsole, CExampleActiveObject* iExampleObject);
+    void ProcessKeyPress(TChar aChar);
+private:
+    CExampleActiveObject* iExampleObject;
+    };</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-2341BA65-3806-5354-9F9D-EB1A8FD3FD61"><p>The first constructor
+parameter specifies a <codeph>CConsoleBase</codeph> which will be used to
+provide asynchronous keyboard input.</p> </li>
+<li id="GUID-E9CAAF35-C404-5418-9720-F560C4CED53D"><p>the second constructor
+parameter specifies a <codeph>CExampleActiveObject</codeph> which will be
+controlled by this <codeph>CMessageKeyProcessor</codeph>.</p> </li>
+</ul> <p>The behaviour of the <codeph>ProcessKeyPress()</codeph> function
+depends on the key code value:</p> <codeblock id="GUID-8081A453-4D44-5F2B-BAF3-7A43A1417BEF" xml:space="preserve">void CMessageKeyProcessor::ProcessKeyPress(TChar aChar)
+    {
+    if (aChar == 'm' || aChar == 'M')
+        {
+        iExampleObject-&gt;Cancel();
+        iExampleObject-&gt;IssueRequest();
+        }
+    if (aChar == 'c' || aChar == 'C')
+        {
+        iExampleObject-&gt;Cancel();
+        }
+    if (aChar != EKeyEscape)
+        {
+        RequestCharacter();
+        }
+    else
+        {
+        iExampleObject-&gt;Cancel();
+        CActiveScheduler::Stop();
+        }
+    }</codeblock> </section>
+<section id="GUID-91B9EF85-A595-479D-8D57-40CC427C19E7"><title>Enhanced framework</title> <p>In the code fragment below,
+an active scheduler is created to which both a <codeph>CMessageKeyProcessor</codeph> active
+object and a<codeph>CExampleActiveObject</codeph> active object are added:</p> <codeblock id="GUID-830AA24C-7781-505A-9DD1-4A042040688D" xml:space="preserve">LOCAL_C void doExampleL()
+    {
+    CActiveScheduler* exampleScheduler=new (ELeave) CActiveScheduler;
+    CleanupStack::PushL(exampleScheduler);
+    CActiveScheduler::Install(exampleScheduler);
+
+    CExampleActiveObject* iExampleObject =
+            CExampleActiveObject::NewLC();
+    CMessageKeyProcessor* keyProcessor=
+             CMessageKeyProcessor::NewLC(console, iExampleObject);
+
+    keyProcessor-&gt;RequestCharacter();
+    CActiveScheduler::Start();
+    CleanupStack::PopAndDestroy(3);
+    }</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-1FB2DB58-C282-5B21-A070-DEC020E98059"><p>An instance of the active
+scheduler, <codeph>exampleScheduler</codeph> is pushed onto the cleanup stack
+and installed as the current active scheduler.</p> </li>
+<li id="GUID-3404475D-4044-5DB4-BEDF-5A308B2521CA"><p>An instance of the <codeph>CExampleActiveObject</codeph> active
+object is created.</p> </li>
+<li id="GUID-F7C3C84D-66E5-5F8D-8213-8DC3864D659D"><p>An instance of the <codeph>CMessageKeyProcessor</codeph> active
+object is created and this is in control.</p> </li>
+<li id="GUID-DA61DFD2-B057-50C9-8FD1-C53E884A4A0E"><p><codeph>keyProcessor-&gt;RequestCharacter()</codeph> issues
+a request for keyboard input.</p> </li>
+<li id="GUID-5BFAEEED-051C-5741-BAA0-96AFC3EA5A02"><p><codeph>CActiveScheduler::Start()</codeph> starts
+the active scheduler. At least one outstanding request is necessary before
+the wait loop is started, otherwise the thread hangs. All further request
+issuing and servicing occurs within this function. The wait loop continues
+until one of the active objects’ <codeph>RunL()</codeph> calls<codeph>CActiveScheduler::Stop()</codeph>.</p> </li>
+<li id="GUID-E3FB7738-DC6C-5472-8CBF-FAAD47C440D5"><p>The active objects and
+the active scheduler are popped from the cleanup stack and destroyed.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21740D07-5F49-5D9C-9FEA-92958AF3805B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-21740D07-5F49-5D9C-9FEA-92958AF3805B"><title>Creating an Absolute Timer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use an absolute timer to signal a process at an absolute time, for example at 10:00am tomorrow. </p> <p>When you create an absolute timer (or a periodic timer) you can set the timer expiry mechanism as one of the following using the <codeph>sigev_notify</codeph> member of the <xref scope="external" href="http://opengroup.org/onlinepubs/007908799/xsh/signal.h.html">sigevent</xref> structure: </p> <ul><li id="GUID-039A6CB0-2A59-5CFF-A6D3-D98D76BFD7F4"><p> <b>A notification function:</b> Using the notification type, <codeph>SIGEV_THREAD</codeph>. For example, you can configure a thread function as an expiry notification. </p> </li> <li id="GUID-5B5AB3FD-25DA-530C-B1F3-23E3A1C09E47"><p> <b>A queued signal:</b> Using the notification type, <codeph>SIGEV_SIGNAL</codeph>. For example, you can configure a <codeph>SIGUSR1</codeph> signal as an expiry notification. </p> <p> <b>Note:</b> For more information about using signals, see <xref href="GUID-41F33130-7968-5016-9ACE-9E9F906118DB.dita">POSIX Signals</xref>. </p> </li> <li id="GUID-D17F4247-D449-56F0-8C6E-E71CA5660362"><p> <b>No asynchronous notification:</b> Using the notification type, <codeph>SIGEV_NONE</codeph>. In this case nothing happens after timer expiry. </p> </li> </ul> <p> <b>Note:</b> For more information about these notification types, see <xref scope="external" href="http://opengroup.org/onlinepubs/007908799/xsh/signal.h.html">Open Group</xref>. </p> <p>The following example code demonstrates how to create an absolute timer that expires after ten seconds from the time it is set. It also configures the <codeph>SIGUSR1</codeph> signal as an expiry notification using <codeph>SIGEV_SIGNAL</codeph>. </p> <p>The following example code performs the following tasks: </p> <ol id="GUID-FCB2E7FA-0C97-5041-BAA0-00BDE025493D"><li id="GUID-6A563E0E-B9AE-5141-AEE5-4C66B0FD4E28"><p>Creates a signal handling function that must be invoked after timer expiry. </p> </li> <li id="GUID-6DCC64B3-77F7-5ADE-A006-5E5D41183E7A"><p>Creates a timer based on the current system time (<codeph>CLOCK_REALTIME</codeph>) and an asynchronous signal (<codeph>struct sigevent
+             sig</codeph>) that must be invoked when the timer expires. </p> </li> <li id="GUID-09F2C14C-2B04-564A-BB55-1C280DCDC0A5"><p>Gets the current system time and stores it in <codeph>newtime</codeph>. </p> </li> <li id="GUID-7192B210-FE9E-5484-91BF-8FD38F9F0A9D"><p>Defines the input values for <xref href="GUID-344F836B-FAC8-344A-B458-0CEFB714ADEB.dita"><apiname>timer_settime()</apiname></xref>. (Sets an alarm that expires after ten seconds from the time it is set) </p> </li> <li id="GUID-746DA2F6-9248-5D27-B2EE-E8D7FF44C22D"><p>Sets the absolute timer using <xref href="GUID-344F836B-FAC8-344A-B458-0CEFB714ADEB.dita"><apiname>timer_settime()</apiname></xref>. </p> </li> <li id="GUID-9482E2CC-4CB9-5B4C-A7EA-BF600ED85C95"><p>Uses <codeph>sleep()</codeph> to pause execution until the timer expires. </p> </li> </ol> <codeblock id="GUID-B5CC2E12-5DC8-5893-9767-9136EAB51745" xml:space="preserve">#include &lt;time.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;signal.h&gt;
+#include &lt;pthread.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;errno.h&gt;
+#include &lt;string.h&gt;
+static int I = 0;
+
+//Signal handler function to be invoked when the absolute timer expires
+void sig_handler (int val)
+    {
+    printf("The timer expired and has entered signal handler: Value: %d\n", val);
+    }
+int main()
+    {
+    int Ret;
+
+    struct sigevent sig;
+    sig.sigev_notify = SIGEV_SIGNAL;
+    sig.sigev_signo = SIGUSR1;
+    signal(SIGUSR1, sig_handler);
+    
+    //create a new timer.
+    timer_t timerid; //Stores the ID of the timer
+    Ret = timer_create(CLOCK_REALTIME, &amp;sig, &amp;timerid);
+    if (Ret == 0)
+        {
+        struct timespec newtime; //Stores the current system time
+        struct itimerspec in, out; //Input values for the timer
+        memset(&amp;newtime, 0, sizeof (struct timespec)); 
+        clock_gettime(CLOCK_REALTIME, &amp;newtime);
+        in.it_value.tv_sec = newtime.tv_sec + 10;
+        in.it_value.tv_nsec = 0;
+        in.it_interval.tv_sec = 0;
+        in.it_interval.tv_nsec = 0;
+        
+        //issue the absolute timer request here.
+        Ret = timer_settime(timerid, 1, &amp;in, &amp;out);
+        if(Ret == 0)
+            sleep(11);
+        else
+            printf("timer_settime() failed with %d\n", errno);
+        //delete the timer.
+        timer_delete(timerid);
+        }
+    else
+    printf("timer_create() failed with %d\n", errno);
+    return Ret;
+}</codeblock> <p>The output of the above program is: </p> <codeblock id="GUID-4A17444A-F748-5A41-B23F-11B751621769" xml:space="preserve">The timer expired and has entered signal handler: Value: 30</codeblock> </conbody><related-links><link href="GUID-29AE56A8-DA08-5FB3-89F1-26B4308336BC.dita"><linktext>Modifying a Clock Time</linktext> </link> <link href="GUID-B4039418-6499-555D-AC24-9B49161299F2.dita"><linktext>Creating a Periodic Timer</linktext> </link> <link href="GUID-04F076C4-AFFF-571C-8B73-B8589B58EC56.dita"><linktext>Limitations of Clocks and
+                Timers</linktext> </link> <link href="GUID-8B37D53D-77E1-58C6-9A44-3376A450228B.dita"><linktext>Shared Memory Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-218DB978-929C-5701-869F-8415FF6CE62D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-218DB978-929C-5701-869F-8415FF6CE62D"><title>Using RFormat</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-9D7E765B-6872-3EB9-9D5B-1503FA466EC1.dita"><apiname>RFormat</apiname></xref> class formats a device, one step at a time. </p> <p>The object must first be opened on a device, and then each track is formatted using <codeph>Next()</codeph>. The following code fragment shows how this is done: </p> <codeblock id="GUID-AAC0A2B2-4C5A-55F8-9DA4-820D42C27457" xml:space="preserve">...
+_LIT(KDriveA,"A:");
+...
+RFs fs;
+User::LeaveIfError(fs.Connect());
+...
+RFormat format;
+TInt tracksRemaining;
+User::LeaveIfError(format.Open(fs,KDriveA,EHighDensity,tracksRemaining));
+while (tracksRemaining)
+    {
+    User::LeaveIfError(format.Next(tracksRemaining));
+    }
+format.Close();</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21909CF6-B810-599A-A486-01BA1BF21F35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21909CF6-B810-599A-A486-01BA1BF21F35" xml:lang="en"><title>Introduction</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The TextMTM is an example MTM project, which shows many aspects of dealing
+with the Messaging APIs. Developers can use it as a basis for experimenting
+with the MTM architecture, and for studying the MTM interfaces. </p>
+<p>Rather than implementing a real message transport protocol, the TextMTM
+simulates this by treating the local file system as a remote mail server.
+The TextMTM allows a user to create a service representing a folder in the
+file system. The service then contains entries for each folder and file under
+that folder, so functioning as a mirror of the folder contents. </p>
+<p>The UI MTM component allows users to get messages from the "remote" server,
+to edit the contents of a text message, and to copy messages back to a TextMTM
+service. Moving and deleting messages is also allowed. </p>
+<section id="GUID-147AEBF3-2F87-5AA1-AC42-32EEA1FF8315"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.zip" scope="external">TextMTM.zip </xref>  </p> </section>
+<section id="GUID-32E4981D-BBEA-570F-9770-B5E9F5E15C4A"><title>TextMTM projects</title> <p>The
+TextMTM is made up of a number of components, and so the source has a number
+of projects. </p> <p>The following project is a utility project, used for
+deploying the MTM. </p> <table id="GUID-C760358C-B3D1-54DF-B11D-D029E3C1F3BA">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Project</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>txin</filepath>  </p> </entry>
+<entry><p>Utility application for MTM installation </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following projects supply the source for the MTM. </p> <table id="GUID-9A6B5470-F988-5100-BD3F-7A2074DE2470">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Project</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>txtc</filepath>  </p> </entry>
+<entry><p>Client-side MTM implementation. This defines the methods required
+for a <codeph>CBaseMtm</codeph> -derived class. It is instantiated by a client
+application to perform MTM-specific tasks. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>txti</filepath>  </p> </entry>
+<entry><p>UI Data MTM implementation. This presents the messaging application
+with useful information, without the need for actually fully loading all the
+DLLs necessary to handle text messages. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>txts</filepath>  </p> </entry>
+<entry><p>Server-side MTM implementation. This provides all the functionality
+to handle messages on the server side, and supports moving, copying, deleting,
+and creating of entries. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>txtu</filepath>  </p> </entry>
+<entry><p>User Interface MTM implementation. This is loaded when the user
+decides to actually perform some MTM-specific task, such as editing a message. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>txut</filepath>  </p> </entry>
+<entry><p>A small utilities DLL where code resides that has to be shared between
+the MTM implementations. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e228361_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21A43565-FC69-553E-9617-4832AB776004.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21A43565-FC69-553E-9617-4832AB776004" xml:lang="en"><title>Introduction
+to Threads and Processes</title><shortdesc>Programs consist of a number of processes, each of which contains
+one or more conceptually concurrent threads of execution.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p/>
+<p>A thread is the unit of execution within a process. Every time a process
+is initialized, a primary thread is created. For many applications the primary
+thread is the only one that the application requires; however, processes can
+create additional threads.</p>
+<p>Each user process has its own private address space, i.e. a collection
+of memory regions which that process can access. A user process cannot directly
+address memory areas in the address space of another process. There is also
+a special process, the Kernel process, whose threads run at supervisor privilege
+level. This process normally contains two threads:</p>
+<ul>
+<li id="GUID-00725755-A077-58CA-9AFE-1EDABCD56274"><p>the Kernel server thread,
+which is the initial thread whose execution begins at the reset vector, and
+which is used to implement all Kernel functions requiring allocation or de-allocation
+on the Kernel heap. This is the highest priority thread in the system.</p> </li>
+<li id="GUID-085FA786-6536-5778-A041-FD06BEF5D200"><p>the null thread, which
+runs only when no other threads are ready to run. The null thread places the
+processor into idle mode to save power.</p> </li>
+</ul>
+<p>Threads execute individually and are unaware of other threads in a process.
+The scheduling of threads is pre-emptive, i.e. a currently executing thread
+may be suspended at any time to allow another thread to run. </p>
+<p>Each thread is assigned a priority; at any time, the thread running is
+the highest priority thread which is ready to run. Threads with equal priority
+are time-sliced on a round-robin basis. Context switching between threads
+involves saving and restoring the state of threads. This state includes not
+only the processor registers (the thread context) but also the address space
+accessible to the thread (the process context). The process context only needs
+switching if a reschedule is between threads in different processes.</p>
+<p>Compare this with active objects which allow non pre-emptive multi-tasking
+within a single thread.</p>
+<p>A thread can suspend, resume, panic and kill another thread.</p>
+<p>When a thread is created it is put into a suspended state, it does not
+begin to run until that thread’s <codeph>Resume()</codeph> member function
+is called.</p>
+<p>When a thread is created, it is given the priority <codeph>EPriorityNormal</codeph> by
+default. The fact that a thread is initially put into a suspended state means
+that the thread priority can be changed (RThread::SetPriority()) before the
+thread is started (RThread::Resume()).</p>
+</conbody><related-links>
+<link href="GUID-5FBA9BB1-94A2-470C-9932-C4255E3774C0.dita"><linktext>Use Of Shared
+Memory Between Threads</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21C03739-FF80-5874-A32B-F22DED13D18D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-21C03739-FF80-5874-A32B-F22DED13D18D"><title>Message Folders</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Folders are used by the architecture to hold groups of other entries. Folders can be of the following types: </p> <ul><li id="GUID-F023AC2A-80A8-51ED-BD9E-A8B1027B5851"><p> <b>Local folders:</b> These are folders on the phone, containing messages that have been composed locally, or copied or moved from a remote source. These folders are not intended for synchronisation with a remote server. </p> </li> <li id="GUID-1C3164F9-8F94-5A2E-93DA-94FE7527AD43"><p> <b>Remote folders:</b> These are folders that are present on a remote mail server. The index can hold a complete or incomplete copy of a remote folder. </p> </li> <li id="GUID-F5401351-5215-5029-9924-8A2484EC29D5"><p> <b>Standard folders:</b> These are folders that are always present, and are created by the Message Server when it starts. </p> </li> <li id="GUID-DE9286F1-E1D0-5D8E-89A8-68696505CC3D"><p> <b>User folders:</b> These are folders that can be deleted, renamed, created, and moved by the user. User folders can be created within the root Local folder, and within other user folders. They can be nested as required. Few messaging protocols, such as IMAP4, may allow user folders on remote servers to be manipulated. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21C04887-9F9C-5066-AA1D-B30C433CC0AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21C04887-9F9C-5066-AA1D-B30C433CC0AE" xml:lang="en"><title>Circular
+Buffers Overview</title><shortdesc>This document is an overview of circular buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-3A4A5CC7-45A8-4EEB-9CDE-4C9E1FC9FEB4"><title>Purpose</title> <p>Provides a fixed length first-in first-out
+queue of fixed-size objects. </p> </section>
+<section id="GUID-4C160263-5EA7-4AB8-BDB1-A5649654A9C3"><title>Description</title> <p>Note the following properties of circular
+buffers:</p> <ul>
+<li id="GUID-03692D38-C81C-51AA-B250-C5A47C0F415D"><p>only simple add, remove,
+and reset operations are available</p> </li>
+<li id="GUID-491610AC-DFBF-5B61-B7F2-706DAF8E2BB3"><p>elements are added to
+the head of the queue and removed from the tail of the queue</p> </li>
+<li id="GUID-357A29E1-5447-5638-97D5-5B3C9E61E6E8"><p>all elements in a circular
+buffer must be objects of the same type</p> </li>
+</ul> <p>Circular buffers are provided by <xref href="GUID-1D73835F-4361-3216-8EFC-669364E3F5E7.dita"><apiname>CCirBuf</apiname></xref> .</p> <p>A
+predefined circular buffer of unsigned integers is provided by <xref href="GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623.dita"><apiname>CCirBuffer</apiname></xref>.</p> </section>
+<section id="GUID-732C72C7-02E9-46F8-943F-19ECBD3283F2"><title>See also</title> <p><xref href="GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita">Doubly
+Linked Lists Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21C4398F-0519-5107-A735-A7137A1595E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-21C4398F-0519-5107-A735-A7137A1595E0"><title>C++ API items for Device Creators</title><shortdesc>This topic lists the C++ API items that make the Serial Communications Server API for Device Creators. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section/> <table id="GUID-7267B037-9692-5BD5-9335-A829036D42EB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Item</entry> <entry>Header</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita"><apiname>CSerial</apiname></xref>  </p> </entry> <entry><p>CS_PORT.H </p> </entry> </row> <row><entry><p> <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita"><apiname>CPort</apiname></xref>  </p> </entry> <entry><p>CS_PORT.H </p> </entry> </row> <row><entry><p> <xref href="GUID-D50A2924-3BAF-3045-914D-0B9FE477F021.dita"><apiname>CommTimer</apiname></xref>  </p> </entry> <entry><p>CS_PORT.H </p> </entry> </row> </tbody> </tgroup> </table> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079"><title>File Stores Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides file-based structured data storage, using networks of streams.</p> </section> <section><title>Architectural relationships</title> <p>The File Stores API is based on the abstract store types defined by the Stores API. The underlying file handling is provided by the File Server.</p> <p>The permanent file stores defined in this API are used by the relational database API, DBMS, for data storage.</p> </section> <section><title>Description</title> <p>The API has five key concepts: file store base (<codeph>CFileStore</codeph>), direct file store (<codeph>CDirectFileStore</codeph>), permanent file store (<codeph>CPermanentFileStore</codeph>), dictionary file store (<codeph>CDictionaryFileStore</codeph>), and file streams (<codeph>RFileWriteStream</codeph> and <codeph>RFileReadStream</codeph>).</p> <p><b>File store base</b> </p> <p>This abstract base class provides basic behaviour for file stores, such as reading a store from a specified file. </p> <p>File stores are derived from the persistent store base (<codeph>CPersistentStore</codeph>) provided by the Stores API. This means that they have a root stream, from which all other streams within the store can be found.</p> <p>The file store base class is <codeph>CFileStore</codeph>.</p> <p><b>Direct file store</b> </p> <p>A direct file store implements a file store in which once the streams have been committed and closed, they cannot subsequently be changed. They are used by the type of application that treats the in-memory copy of its data as its prime copy, and on saving, replaces the entire store. </p> <p>The direct file store is a concrete type, derived from <codeph>CFileStore</codeph>, and is provided by <codeph>CDirectFileStore</codeph>.</p> <p><b>Permanent file store</b> </p> <p>A permanent file store implements a file store in which existing streams within the store can be changed. They are used by the type of application which treats the data in the store as its prime copy. Typically, the object network comprising the application’s data is structured so that sections of data can be loaded in, and, if changed, written back to the store. Memory is used as a workplace for changing data.</p> <p>The permanent file store is a concrete type, derived from <codeph>CFileStore</codeph>, and is provided by <codeph>CPermanentFileStore</codeph>.</p> <p><b>Dictionary file store</b> </p> <p>The dictionary file store implements a dictionary store, a network of streams each of which can be accessed via a UID, in file storage.</p> <p>The dictionary file store is a concrete type, derived from <codeph>CDictionaryStore</codeph>, and is provided by <codeph>CDictionaryFileStore</codeph>.</p> <p><b>File streams</b> </p> <p>File streams allow standard files (<xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> objects as defined in the File Server Client Side API), not file stores, to be written to as streams. This can be simpler and more efficient than using the equivalent <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> functions. </p> <p>The file stream classes are <codeph>RFileReadStream</codeph> and <codeph>RFileWriteStream</codeph>.</p> </section> <section><title>See also</title> <p><xref href="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita#GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED/GUID-844F756E-1670-5D24-8D63-2092ABE3354C">DBMS Overview</xref> </p> <p><xref href="GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76.dita">File Server Client Side Overview</xref> </p> <p><xref href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita">Streaming Overview</xref> </p> <p><xref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita">Store Streams Overview</xref> </p> <p><xref href="GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8.dita">Stores Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1" xml:lang="en"><title>AudioClientEx:
+Multimedia audio example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>AudioClientEx</filepath> demonstrates
+the use of the Multimedia Framework's client audio interfaces. It allows the
+user to: </p> <ul>
+<li id="GUID-2C0B7945-13C3-552A-BE5E-094C3D3528B5-GENID-1-6-1-17-1-1-4-1-4-1-2-1-3-1"><p>choose a tone to play </p> </li>
+<li id="GUID-EBD81D06-4A94-5795-B037-86C0A8140E61-GENID-1-6-1-17-1-1-4-1-4-1-2-1-3-2"><p>choose a file to play </p> </li>
+<li id="GUID-177DF4AF-2671-54E0-AE43-88B13466BA84-GENID-1-6-1-17-1-1-4-1-4-1-2-1-3-3"><p>choose a file to convert
+to another format </p> </li>
+<li id="GUID-F12B8E97-ABBE-5E87-B859-5BFEA2AACF8C-GENID-1-6-1-17-1-1-4-1-4-1-2-1-3-4"><p>record to a file </p> </li>
+<li id="GUID-2F274F02-1A18-5BF8-93E2-7383062A8BE9-GENID-1-6-1-17-1-1-4-1-4-1-2-1-3-5"><p>play a streaming source </p> </li>
+<li id="GUID-A9F3BBF1-D06B-5CEA-8695-C2EDDBBCC1E1-GENID-1-6-1-17-1-1-4-1-4-1-2-1-3-6"><p>set the volume </p> </li>
+</ul> <p>The Multimedia Framework APIs are called by the example's engine
+class, <codeph>CMediaClientEngine</codeph>. This also implements the various
+callback interfaces required by the APIs in order to report progress and error
+conditions. Each of the play options (tone, file, stream) is handled by a
+separate overload of the <codeph>PlayL()</codeph> function. Recording is started
+through <codeph>RecordL()</codeph>. The current operation can always be terminated
+through <codeph>Stop()</codeph>. </p> <p>The engine is driven through the
+example's UI class <codeph>CMediaClientAppUi</codeph>. The engine notifies
+the UI of significant events by calling its <codeph>HandleEngineState()</codeph> function.
+The UI uses this to update text describing the current activity appropriately. </p> <p>Interaction
+between the UI and engine is in most cases simple. Streaming however is more
+complex. To simulate a streaming data source (e.g. an audio stream being received
+over the Internet), the UI creates a timer object that periodically passes
+slices of data (read from a file) to the engine. </p> </section>
+<section id="GUID-7FDD920B-524F-5EF4-B87F-EB78A83FB789-GENID-1-6-1-17-1-1-4-1-4-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-90b3674d-2812-418b-8f00-74916bca2b55.zip" scope="external"> AudioClient.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-90b3674d-2812-418b-8f00-74916bca2b55.html" scope="peer">browse </xref>to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility </apiname></xref>  <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility </apiname></xref> <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility </apiname></xref> <xref href="GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D.dita"><apiname>CMdaAudioOutputStream </apiname></xref>  <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility </apiname></xref>  <xref href="GUID-CF54F882-E290-3C68-9352-79C6B7303FDF.dita"><apiname>TMdaAudioDataSettings </apiname></xref>  <xref href="GUID-9DFD6F28-AFA9-3819-8EEC-EC69BD4BC35A.dita"><apiname>RMetaDataArray </apiname></xref> <xref href="GUID-18E540DE-8CAC-390D-8A0B-1C24D3D30693.dita"><apiname>TFormatOptions TRecordFormatOptions </apiname></xref> </p></section>
+<section><title>Usage</title> <p>Commands are given to the example through
+its Actions and Options menus. For tone play, the user is asked to specify
+a pitch and duration; for file play, conversion, and recording, the user is
+asked to specify a file, and any available format options. The audio data
+source for streaming in the example is a preset file, so this command does
+not require further input. </p> <p>A sample file, <filepath>note.wav</filepath> is
+put by the example on the emulator's C drive for file play. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1" xml:lang="en"><title>AudioClientEx:
+Multimedia audio example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>AudioClientEx</filepath> demonstrates
+the use of the Multimedia Framework's client audio interfaces. It allows the
+user to: </p> <ul>
+<li id="GUID-2C0B7945-13C3-552A-BE5E-094C3D3528B5-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-1-3-1"><p>choose a tone to play </p> </li>
+<li id="GUID-EBD81D06-4A94-5795-B037-86C0A8140E61-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-1-3-2"><p>choose a file to play </p> </li>
+<li id="GUID-177DF4AF-2671-54E0-AE43-88B13466BA84-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-1-3-3"><p>choose a file to convert
+to another format </p> </li>
+<li id="GUID-F12B8E97-ABBE-5E87-B859-5BFEA2AACF8C-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-1-3-4"><p>record to a file </p> </li>
+<li id="GUID-2F274F02-1A18-5BF8-93E2-7383062A8BE9-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-1-3-5"><p>play a streaming source </p> </li>
+<li id="GUID-A9F3BBF1-D06B-5CEA-8695-C2EDDBBCC1E1-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-1-3-6"><p>set the volume </p> </li>
+</ul> <p>The Multimedia Framework APIs are called by the example's engine
+class, <codeph>CMediaClientEngine</codeph>. This also implements the various
+callback interfaces required by the APIs in order to report progress and error
+conditions. Each of the play options (tone, file, stream) is handled by a
+separate overload of the <codeph>PlayL()</codeph> function. Recording is started
+through <codeph>RecordL()</codeph>. The current operation can always be terminated
+through <codeph>Stop()</codeph>. </p> <p>The engine is driven through the
+example's UI class <codeph>CMediaClientAppUi</codeph>. The engine notifies
+the UI of significant events by calling its <codeph>HandleEngineState()</codeph> function.
+The UI uses this to update text describing the current activity appropriately. </p> <p>Interaction
+between the UI and engine is in most cases simple. Streaming however is more
+complex. To simulate a streaming data source (e.g. an audio stream being received
+over the Internet), the UI creates a timer object that periodically passes
+slices of data (read from a file) to the engine. </p> </section>
+<section id="GUID-7FDD920B-524F-5EF4-B87F-EB78A83FB789-GENID-1-6-1-17-1-1-5-1-7-1-6-1-3-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-90b3674d-2812-418b-8f00-74916bca2b55.zip" scope="external"> AudioClient.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-90b3674d-2812-418b-8f00-74916bca2b55.html" scope="peer">browse </xref>to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility </apiname></xref>  <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility </apiname></xref> <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility </apiname></xref> <xref href="GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D.dita"><apiname>CMdaAudioOutputStream </apiname></xref>  <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility </apiname></xref>  <xref href="GUID-CF54F882-E290-3C68-9352-79C6B7303FDF.dita"><apiname>TMdaAudioDataSettings </apiname></xref>  <xref href="GUID-9DFD6F28-AFA9-3819-8EEC-EC69BD4BC35A.dita"><apiname>RMetaDataArray </apiname></xref> <xref href="GUID-18E540DE-8CAC-390D-8A0B-1C24D3D30693.dita"><apiname>TFormatOptions TRecordFormatOptions </apiname></xref> </p></section>
+<section><title>Usage</title> <p>Commands are given to the example through
+its Actions and Options menus. For tone play, the user is asked to specify
+a pitch and duration; for file play, conversion, and recording, the user is
+asked to specify a file, and any available format options. The audio data
+source for streaming in the example is a preset file, so this command does
+not require further input. </p> <p>A sample file, <filepath>note.wav</filepath> is
+put by the example on the emulator's C drive for file play. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21DAC50D-7737-42B6-BBDA-E12E8779741B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21DAC50D-7737-42B6-BBDA-E12E8779741B" xml:lang="en"><title>Feedback</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-612FFD40-0116-4D25-B16D-9B65144A82C4"> <p>Visual feedback
+is the most important sensory feedback when entering characters on screen.
+Visual feedback can be, for example, button effects, color changes, status
+indicators, touch/release state changes, or clearing the screen when transitioning
+to next screen.</p> <p>With audio feedback, lower clicks and tones are preferred
+over loud beeps, though most people turn audio feedback off anyway.</p> <p>Vibration
+is used as tactile feedback for touch screen interaction or input. Tactile
+feedback gives the user an immediate response that the touch event has been
+registered, and can even be given in noisy environments.</p> <p>With the Symbian
+touch UI, tactile feedback is used in the following situations:</p><ul>
+<li><p><b>Sensors: </b>a double tap on the device by hand provides tactile
+feedback to the user in case of a successful interaction</p></li>
+<li><p><b>Touch interaction (touch screen):</b> to indicate to the user that
+an interaction event has been successful. For example, when the user presses
+a button on the touch screen</p></li>
+</ul><p><note>Tactile feedback is included in those common UI components where
+it has been seen as beneficial. When creating new applications and designing
+custom components, tactile feedback is to be included where found useful.
+For example, in any button type of UI component, the tactile feedback is naturally
+beneficial.</note></p><p>For more information, see <xref href="GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita">Tactile
+feedback</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21E26B07-7E4D-50E0-97BE-C05CCD88B89F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21E26B07-7E4D-50E0-97BE-C05CCD88B89F" xml:lang="en"><title>Creating
+a Sink Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A data sink plugin needs to implement the pure virtual (and where appropriate
+override the virtual) base class mixin functions. This section describes how
+to implement the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> base class.</p>
+<p>Note that it is possible for a single source/sink plugin to be both a source
+and a sink, i.e. derive from both <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref>. </p>
+<p>See <xref href="GUID-B998B8FC-3DC3-57B5-A4E6-C4D903B4ACF9.dita">Creating a Source
+Plugin</xref> for information on source/sink negotiation and data transfer.</p>
+
+
+<p><b> Sink Plugin Instantiation</b> </p>
+<p>A client application instantiates a sink plugin using the <xref href="GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841.dita#GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841/GUID-2D177C9B-51F7-30EE-862E-F282E28B3633"><apiname>RMMFController::AddDataSink()</apiname></xref> method,
+passing in the UID of the sink as one of the parameters. The controller framework
+instantiates a sink via the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-04B8016D-E8A3-3F00-8367-6D20C407A240"><apiname>MDataSink::NewSinkL()</apiname></xref> method
+rather than the more conventional <codeph>NewL()</codeph> method. This is
+because, in some cases, a plugin can be both a sink and a sink of multimedia
+data in which case the instantiation methods for sinks and sinks need to be
+distinct. The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> base class instantiation methods
+are described below followed by how to write the instantiation methods in
+the derived class. </p>
+<p>The derived data sink needs to implement <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-04B8016D-E8A3-3F00-8367-6D20C407A240"><apiname>MDataSink::NewSinkL()</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-AEC3FEB6-ED46-3E73-85D6-FD298CE1DE6C"><apiname>MDataSink::ConstructSinkL()</apiname></xref> for
+instantiation. The constructor of a data sink plugin needs to specify what
+type of data sink it is. This is achieved by passing a type UID into the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> constructor. </p>
+<p>If the sink has additional methods, that are not part of the base <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> class,
+then a further layer of instantiation is required. For example, suppose <codeph>CAcmeDataSink</codeph> had
+some extra methods that were not part of the base class then an additional
+mxin interface for this class is required. For example:</p>
+<codeblock id="GUID-D81EF01A-7C6C-5EBF-BCC9-3A45378C0466" xml:space="preserve">class MAcmeDataSink : public MDataSink
+    {
+public:
+    inline static MAcmeDataSink* NewAcmeDataSinkL(TUid aImplemetationUid, const TDesC8&amp; aInitData);
+    //This allows dynamic linkage to the Class:
+    }
+</codeblock>
+<p>The <codeph>NewAcmeDataSinkL</codeph> should be implemented as follows:</p>
+<codeblock id="GUID-CDA802E2-20C6-5FEF-9429-0ED3B45322C8" xml:space="preserve">MAcmeDataSink* retPtr = static_cast&lt;MAcmeDataSink*&gt;(MDataSink::NewSinkL(aImplementationUid, aInitData));</codeblock>
+<p>The class should derive from the <codeph>MAcmeDataSink</codeph> rather
+than <codeph>MDataSink</codeph> as follows:</p>
+<codeblock id="GUID-C06D0D2C-C24A-59B6-9775-0521509C8F5B" xml:space="preserve">class CAcmeDataSink: public CBase, public MAcmeDataSink
+    {
+public:
+ MDataSink* NewSinkL();
+</codeblock>
+
+
+<p><b>Sink Plugin Buffer Creation</b> </p>
+<p>Buffers are required to transfer data between a source and a sink. These
+buffers may be created by the source and/or sink. The methods below are for
+the sink buffer creation.</p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-774C8837-30F7-39C5-ACC9-0AEC1757070C"><apiname>MDataSink::CanCreateSinkBuffer()</apiname></xref> method must be
+implemented by the data sink plugin. Most sinks should be capable of creating
+their own buffer and so would return <codeph>ETrue</codeph>. Note that just
+because a sink can create a buffer, this does not guarantee that the framework
+will actually use the buffer created by the sink. Which buffer is used depends
+on factors such as whether a null codec is used and whether the source is
+the reference buffer, in either of these cases the sink buffer will not be
+used.</p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-8D998E91-9AF2-3734-A11A-985BD15E324C"><apiname>MDataSink::CreateSinkBufferL()</apiname></xref> method is called
+by the framework to create a buffer from the sink. This method should create
+a buffer of length 0 bytes and a maximum length of an appropriate size for
+the sink. The meaning of 'appropriate' in this context depends on sink specifics,
+such as whether the sink data ultimately comes from hardware that supplies
+buffers of a certain size. Generally a larger buffer size means a smaller
+number data transfers between the sink and sink are required. The returned
+buffer must derive from <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer</apiname></xref> but will be a derived
+buffer eg <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname>CMMFDataBuffer</apiname></xref> or a video frame buffer.</p>
+<p>The overloaded <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-8D998E91-9AF2-3734-A11A-985BD15E324C"><apiname>MDataSink::CreateSinkBufferL()</apiname></xref> method,
+which has an additional <codeph>aSinkBuffer</codeph> parameter, is optional.
+The default implementation is identical to the standard <codeph>CreateSinkBufferL</codeph> above.
+This overloaded version is used where the nature of the sink buffer may impact
+the created sink buffer. This method should only be overridden if the size
+and/or type of the sink buffer can influence the size and/or type of the created
+sink buffer.</p>
+
+
+<p><b>Sink State Methods</b> </p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> mixin provides a number of state-related
+functions used to inform a source/sink that the data path (via the controller)
+has made a transition to a particular state. These state transition methods
+are usually called on the source/sink from the datapath and so will be called
+on the data source/sink plugin. These methods are not pure virtual and so
+it is not compulsory to implement them. </p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-A6CD1868-BAF7-332E-8C35-BE3F494E3D2D"><apiname>MDataSink::SinkThreadLogon()</apiname></xref> method indicates to
+the sink that it can perform any thread specific initialisation. This is so
+that the thread in which the data sink is instantiated is not necessarily
+the same thread in which the actual transfer of data between the source and
+the sink takes place. Any thread-specific sink initialisation cannot take
+place in the <codeph>NewSinkL()</codeph> method and must instead be performed
+in the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-A6CD1868-BAF7-332E-8C35-BE3F494E3D2D"><apiname>MDataSink::SinkThreadLogon()</apiname></xref> method which is always
+called in the thread in which the data transfer between sink and sink is to
+take place.</p>
+<p>The <xref href="GUID-8512F793-107A-3166-A62F-750696D942CE.dita"><apiname>MAsyncEventHandler</apiname></xref> must also be passed into the
+sink in the same thread in which the sink is to transfer data. If the sink
+can generate events during a data transfer, then it must keep the reference
+to event handler.</p>
+<p>It is only necessary to provide an implementation of <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-A6CD1868-BAF7-332E-8C35-BE3F494E3D2D"><apiname>MDataSink::SinkThreadLogon()</apiname></xref> if
+the sink has thread specific initialisation and/or can generate events during
+data transfer.</p>
+<p>Implementation of the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-17E785C1-D177-317F-82D1-D9727CE56399"><apiname>MDataSink::SinkPrimeL()</apiname></xref>, <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-63057BF2-4730-3042-AA32-1D06F455AE17"><apiname>MDataSink::SinkPlayL()</apiname></xref>, <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-5E0447D4-A48D-35B3-AEDF-758EB249FAE2"><apiname>MDataSink::SinkPauseL()</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-E8627DBE-5709-388E-ABB1-0FC2DB8683D2"><apiname>MDataSink::SinkStopL()</apiname></xref> methods is optional. They
+are called when a controller performs a transition to the corresponding state.
+For example, if the controller starts, or resumes, playing then <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-63057BF2-4730-3042-AA32-1D06F455AE17"><apiname>MDataSink::SinkPlayL()</apiname></xref> is
+called.</p>
+<p>Implementation of the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-67D5D509-E5C1-3A93-B4E8-E6083E16E7A5"><apiname>MDataSink::SouceThreadLogoff()</apiname></xref> method
+is optional. This method is called when the controller has finished with the
+data sink and is called in the same thread as the data transfer. This allows
+the data sink to perform any thread specific destruction such as the closure
+of handles. </p>
+
+
+<p><b>Sink Data Types</b> </p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-04666F46-042D-311C-828D-A85B65DE992E"><apiname>MDataSink::SinkDataTypeCode()</apiname></xref> method must be implemented
+by the data sink. It should return the data type of the sink for the specified
+media ID. Some data sinks may need their data type to be explicitly set, via
+the <codeph>SetSinkDataTypeCode</codeph> method or via negotiation with a
+data sink, in which case this function should either return a default <codeph>FourCC</codeph> code,
+or a <codeph>NULL</codeph> code, to indicate that the data type is not yet
+known.</p>
+<p>Implementation of the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-BB031D9F-2345-3519-88D0-D6EE0CBFEE57"><apiname>MDataSink::SetSinkDataTypeCode()</apiname></xref> method
+is optional. It should be implemented where the sink can support multiple
+data types.</p>
+
+
+<p><b>Sink Custom Commands</b> </p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-EBF981DD-9C18-3417-BAC6-57DA837D4CEA"><apiname>MDataSink::SinkCustomCommand()</apiname></xref> method facilitates
+the use of custom commands. An example implementation is shown below:</p>
+<codeblock id="GUID-C04BBBD3-9991-5478-9920-E7FFE28DB166" xml:space="preserve">void CAcmeDataSink::SinkCustomCommand(TMMFMessage&amp; aMessage)
+    {
+    // First, check we can handle message by checking its interface id
+    if (aMessage.InterfaceId() != KUidAcmeDatasinkCustomCommandInterface)
+        {
+        aMessage.Complete(KErrNotSupported);
+        return;
+        }
+
+    // Next, dispatch the command to the appropriate method.
+    TInt error = KErrNone;
+    switch (aMessage.Function())
+        {
+    case EAcmeDatasinkCustomCommandOne:
+       error = HandleCustomCommandOne(aMessage);
+       break;
+    case EAcmeDataSinkCustomCommandTwo:
+       error = HandleCustomCommandTwo(aMessage);
+       break;
+    default:
+       error = KErrNotSupported;
+       break;
+       }
+    aMessage.Complete(error);
+    }
+</codeblock>
+<p>Use of the custom command mechanism is preferable to adding extra methods
+as it avoids extra casting.</p>
+
+
+<p><b>Sink Priority Settings</b> </p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-B045F6E3-7D43-3EB0-8AA7-1DF58AC7AFF5"><apiname>MDataSink::SetSinkPrioritySettings()</apiname></xref> method is optional.
+It is used to provide a mechanism to determine which sink should have priority
+in cases where more than one client wishes to use the same physical sink.
+An example might be an audio output, although several audio output sinks can
+be created, the actual hardware may only have one physical speaker. Therefore,
+if one audio output is being used to play music, and another is being used
+to play a ring tone due to an incoming call, then the latter needs to take
+precedence. <xref href="GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3.dita"><apiname>TMMFPrioritySettings</apiname></xref> contains an <codeph>iPriority
+TInt</codeph> data member, where 100 is maximum priority, 0 is normal and
+-100 is minimum priority. The <xref href="GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3.dita#GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3/GUID-3B14D763-139C-3A4E-9640-CABBC3427D6E"><apiname>TMMFPrioritySettings::TMdaPriorityPreference</apiname></xref> and <xref href="GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3.dita#GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3/GUID-A2E1FCFD-2058-3E1D-9FEF-C562F613C65D"><apiname>TMMFPrioritySettings::TMMFStateA</apiname></xref> data members provide further information which may be used if required.
+These specify whether the priority applies to recording or playing.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e258906_href.png has changed
Binary file Symbian3/SDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89-master.png has changed
Binary file Symbian3/SDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e167044_href.png has changed
Binary file Symbian3/SDK/Source/GUID-21F0026B-58EF-4E19-834D-C3C08BB89CB1_d0e46472_href.png has changed
Binary file Symbian3/SDK/Source/GUID-21F0026B-58EF-4E19-834D-C3C08BB89CB1_d0e62207_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-21F92FAD-1EF1-4E36-9157-9214E7C6BB01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-21F92FAD-1EF1-4E36-9157-9214E7C6BB01" xml:lang="en"><title>Host
+name resolution</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Sometimes it is necessary to authenticate the remote device that is
+connected through a public IP network. You can do this by querying and comparing
+the <i>domain name system</i> (DNS) name of the device to its IP address.
+To perform host resolve queries to both directions, use the <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/ESock_Server/RHostResolverClass.html" format="application/java-archive">RHostResolver</xref></codeph> class. </p>
+<p>Note that this is not a secure way to authenticate remote devices, because
+some clients (for example, in a local network) may not have DNS names at all
+. For reliable authentication and secure communication, use stronger methods
+like key exchange or secure protocol solutions.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-22093E74-EFE7-5642-93DE-1573E18F7C08" xml:lang="en"><title>The
+Window Server Rendering Loop</title><shortdesc>This topic provides a brief introduction to the Window Server's
+rendering loop, which takes place in two stages, known as the upper loop and
+the lower loop. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Device creators. </p>
+<p>The following diagram provides a simplified representation of the upper
+and lower loops. </p>
+<fig id="GUID-9CC782B3-568B-56A4-9AF7-0E2D4EABD7A7">
+<title>The Window Server's upper and lower rendering loops</title>
+<image href="GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e172684_href.png" placement="inline"/>
+</fig>
+<p> </p>
+<p>The <b>upper loop</b> is the process by which the Window Server’s scene
+state information is updated based on commands from the client. There are
+two types of scene state updates: window tree updates (such as when a window
+is moved) and redraw store updates (such as when new drawing operations are
+sent for a particular window). </p>
+<p>The <b>lower loop</b> is the process by which updates are made to what
+the user sees on the screen. The lower loop runs after the upper loop. </p>
+<p>The two most important APIs on the client side are: </p>
+<ul>
+<li id="GUID-441D76AB-340A-52E4-ABDE-8093C511694D"><p> <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>,
+which is the class through which a client controls a window. Its main functions
+enable a client to create and destroy windows, move and resize them, make
+them visible or invisible, and send them to the foreground or background. </p> </li>
+<li id="GUID-F0F159ED-73A2-57A3-9077-8B56E756A53B"><p> <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>,
+which is the class through which a client issues draw operations. At any given
+time, a <codeph>CWindowGc</codeph> is activated on a particular window. The <codeph>CWindowGc</codeph> functions
+that are used most frequently are <codeph>DrawBitmap()</codeph> and <codeph>BitBlt()</codeph>,
+for drawing a skin bitmap as a background, and <codeph>DrawText()</codeph>. </p> </li>
+</ul>
+<fig id="GUID-7103B894-51DE-5051-899F-F1FF2BD0749E">
+<title>The main participants in the ScreenPlay Window Server rendering loop</title>
+<image href="GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e172746_href.png" placement="inline"/>
+</fig>
+<p>On the client side, <codeph>RWindow</codeph> and <codeph>CWindowGc</codeph> commands
+are converted to opcodes that are stored in a command buffer. When the command
+buffer is full, it is automatically <b>flushed</b>, which means that it is
+transferred across to a corresponding server-side command buffer. The client
+can also explicitly request a flush using <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-B83C6F44-1A3E-3959-910C-CBBF66C4A3D4"><apiname>RWsSession::Flush()</apiname></xref>. </p>
+<p>On the server side: </p>
+<ul>
+<li id="GUID-8553F184-A167-5285-91F5-203A8B0D707A"><p>The upper loop processes
+the server-side command buffers. <codeph>RWindow</codeph> commands are processed
+as updates to the <b>window tree</b>. <codeph>CWindowGc</codeph> commands
+are processed as updates to the <b>redraw stores</b>. </p> </li>
+<li id="GUID-894B970D-E8F4-52D4-996C-D72378C48EEF"><p>The lower loop ultimately
+causes the updates to be drawn to the UI surface. However, the updates do
+not go straight to the UI surface. Instead they go through an additional level
+of indirection called <b>render stages</b>. These are replaceable plug-ins
+to the Window Server, which enable the customization of the final stages of
+the rendering pipeline. </p> </li>
+</ul>
+<p>The details of the upper and lower loops vary depending on whether dirty-rectangle
+tracking or change tracking is in use. </p>
+<p><b>Dirty-rectangle tracking mode </b> </p>
+<p>Dirty-rectangle tracking mode is always used in the non-ScreenPlay variant
+and is the default mode in ScreenPlay. </p>
+<p>Updates to both the window tree and the redraw stores typically mean that
+the current contents of the screen become invalid. Therefore, when processing <codeph>RWindow</codeph> or <codeph>CWindowGc</codeph> commands,
+the upper loop adds the affected regions to a list of dirty rectangles that
+need to be redrawn. The list includes transparent windows that are on top
+of other windows and excludes windows that are obscured. The upper loop then
+starts a scheduler, which eventually causes the dirty rectangles to be redrawn. </p>
+<p>Some time later the scheduler runs the lower loop. The task of the lower
+loop is to clean any dirty rectangles by playing (or replaying) the drawing
+operations from the redraw stores into the first render stage. This is done
+for all of the visible windows, starting at the back and working forwards. </p>
+<p><b>Change tracking mode </b> </p>
+<p>Change tracking mode is only available in ScreenPlay. To enable change
+tracking mode, add the <codeph>CHANGETRACKING</codeph> parameter to the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini file</xref>. This
+parameter is set on a per-screen basis. </p>
+<p>In change tracking mode, the upper loop keeps a list of all of the windows
+for which there are new or changed drawing operations, regardless whether
+the window is obscured or not. The list does not include transparent windows
+that have not changed and which are on top of other windows. As in dirty-rectangle
+tracking mode, changes cause the upper loop to start the scheduler which eventually
+causes the lower loop to run. This plays the drawing operations for all of
+the windows in the list of changed windows into the first render stage. </p>
+<p>Typically you enable change tracking mode only if you are creating a transition
+effects (TFX) render stage that is building up its own visuals stores. Visual
+stores are replicas of the redraw stores and are often used with a visuals
+tree. A visuals tree is a replica of the Window Server's window tree, into
+which the render stage may add nodes that the Window Server does not "know"
+about. In addition, these render stages typically introduce transition effects
+which may change the visibility of windows that the Window Server does know
+about. For example, the following diagram shows a transition effect in which
+a window slides onto the screen from the top and temporarily obscures an existing
+window on the screen. </p>
+<fig id="GUID-761A5E99-D289-5F58-9747-BBECF0BFB2F2">
+<title> A transition effect temporarily obscures a window on the screen</title>
+<image href="GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e172844_href.png" placement="inline"/>
+</fig>
+<p>In this and similar scenarios, the Window Server does not know whether
+a window is obscured or visible. Therefore dirty-rectangle tracking is not
+effective. </p>
+<p>Each screen on the device has a separate render stage chain.
+Because you set the <codeph>CHANGETRACKING</codeph> parameter on a per-screen
+basis, it is possible to have a sophisticated TFX on one screen and a simple
+display render stage on another screen. </p>
+</conbody><related-links>
+<link href="GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita"><linktext>Redraw Stores</linktext>
+</link>
+<link href="GUID-E29CAFA8-523D-57D2-AC1B-D6D01741550B.dita"><linktext>Window Server
+Internals: Concepts</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420-master.png has changed
Binary file Symbian3/SDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e304340_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-220E5E6A-B55D-57BB-AC1A-CE06EB01F661.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-220E5E6A-B55D-57BB-AC1A-CE06EB01F661" xml:lang="en"><title>How
+to construct an active object</title><shortdesc>This document describes how to construct an active object to encapsulate
+a service provider.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following examples outline the practical framework required when implementing
+an active object</p>
+<section id="GUID-72356539-28E2-53C4-BB8C-A181FD1DF0B3"><title>Active objects
+framework</title> <p>The following example code demonstrates how to construct
+the framework for a simple active object which encapsulates a service-provider.</p> <p>First
+define and implement the service-provider class. The following code shows
+the typical features:</p> <codeblock id="GUID-F2E43707-9A97-5B5E-8356-8359FBA955A2" xml:space="preserve">class CExampleServiceProvider
+    {
+public:
+    ...
+    void RequestTheService(TRequestStatus&amp; aStatus);
+    void CancelTheRequest();
+private:
+    TInt iResult ;
+    };</codeblock> <p>Now define and implement the active object which wraps
+around the service provider. The following code shows the main features of
+an active object class.</p> <ul>
+<li id="GUID-E3F867F0-4172-5477-AB38-624687856385"><p>Provide a constructor.</p> </li>
+<li id="GUID-1F0BD2F9-6B34-52A3-B5D8-241D070639EE"><p>Provide a <codeph>RunL()</codeph> function
+to handle the completion of an asynchronous request.</p> </li>
+<li id="GUID-49FCE50F-CEF6-5637-9A41-721C85841E8B"><p>Provide a <codeph>DoCancel()</codeph> function
+to implement a cancellation request.</p> </li>
+<li id="GUID-F91E76BD-238B-58AA-8948-34881A302FC0"><p>Provide a <codeph>RunError()</codeph> function
+to implement recovery and cleanup if the <codeph>RunL()</codeph> function
+leaves. Note that this is not available in v5.</p> </li>
+</ul> <codeblock id="GUID-E38A48A2-F62D-518C-BE66-E8CA841EBEA1" xml:space="preserve">class CExampleActiveObject : public CActive;
+    {
+public:
+    CExampleActiveObject(CExampleServiceProvider* aServiceProvider);
+    ~CExampleActiveObject;
+    void IssueRequest();
+private:
+    void DoCancel();
+    void RunL();
+    TInt RunError(TInt aError);
+private:
+    CExampleServiceProvider* iServiceProvider ;
+    };</codeblock> <p>When the class codes a <codeph>DoCancel()</codeph> then
+the destructor must call the <codeph>Cancel()</codeph> member function of
+the active object.</p> </section>
+<section id="GUID-C12409DF-5921-5C4A-92A1-1C93CADC44DF"><title>How to construct
+an active object</title> <p>The following code shows the typical elements
+required when constructing an active object.</p> <codeblock id="GUID-6696494D-3FFB-5BE5-973D-6B661FE5B6BB" xml:space="preserve">CExampleActiveObject::CExampleActiveObject(CExampleServiceProvider* aServiceProvider) : CActive(EPriorityStandard)
+    {
+    iServiceProvider = aServiceProvider; // Store pointer to service provider
+    CActiveScheduler::Add(this) ;        // add to active scheduler
+    }</codeblock> <ul>
+<li id="GUID-C8A38D47-424C-5E46-B687-DFDE920C1C05"><p>Set the active object’s
+priority using one of the <codeph>CActive::Tpriority</codeph> enumeration
+values.</p> </li>
+<li id="GUID-0BA9E845-4911-52C8-9DC6-AC6EDC2927F0"><p>Retain a handle to the
+required service provider, so that request functions can pass on a request
+to the asynchronous service provider.</p> </li>
+<li id="GUID-6455A36F-0274-5901-8935-065BBDB77457"><p>Use <codeph>add()</codeph> to
+add the active object to the active scheduler, in order to ensure that its
+requests are handled.</p> </li>
+</ul> <p>In practice there are many variations on this basic construction
+theme.</p> <ul>
+<li id="GUID-F90B7B68-87AF-5B4E-B991-47CBEA834638"><p>Most active objects
+set the priority within the constructor and this is almost always the <codeph>EPriorityStandard</codeph> or
+zero value. In some cases, the choice of priority value is decided by the
+caller or by the constructor of a class further derived from this one.</p> </li>
+<li id="GUID-E9340ED6-61EB-51CF-8B65-9FC0027BB8E1"><p>In many situations,
+the service provider is constructed by the active object itself, instead of
+being passed in. Often this is done as part of a two stage construction process.
+For example, the <codeph>CTimer</codeph> active object has a simple constructor
+and a function <codeph>ConstructL()</codeph> which completes the construction
+of the object:</p> </li>
+</ul> <codeblock id="GUID-EEE316CB-BA6B-56CD-BA2E-141FB1BCD6AF" xml:space="preserve">CTimer::CTimer(TInt aPriority)
+    : CActive(aPriority)
+    {
+    }</codeblock> <codeblock id="GUID-8314023A-D749-5544-9D0E-1DE76F5A2263" xml:space="preserve">void CTimer::ConstructL()
+    {
+    TInt r=iTimer.CreateLocal();
+    if (r!=KErrNone)
+        {
+        User::Leave(r);
+        }
+    }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1" xml:lang="en"><title>MmfExSinkSource:
+Multimedia Framework sink/source plug-ins example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>MmfExSinkSource</filepath> demonstrates
+how to implement sink and source plug-ins for the Multimedia Framework. A
+sink is an object that can receive multimedia data; a source is an object
+that can supply it. This example implements a sink and a source as descriptor
+objects. </p> <p>Both the sink and source are implemented in a single class, <codeph>CMMFExDescriptor</codeph>,
+that derives from <codeph>CMMFClip</codeph>. <codeph>CMMFClip</codeph> represents
+a multimedia clip (i.e. not a stream or hardware device), which, in turn,
+derives from the ECom sink interface <codeph>MDataSink</codeph>, and the source
+interface <codeph>MDataSource</codeph>. </p> <p>Both the example source and
+sink are passed on creation a packaged <codeph>TMMFExDescriptorParams</codeph> object,
+which specifies the descriptor to read/write, and the thread to which the
+descriptor belongs. </p> <p>Note that the default audio controller only uses
+the default sink/sources, and returns "not supported" if you attempt to use
+other sink/sources with it. </p> </section>
+<section id="GUID-567F55C9-E20D-57DD-8469-99F3AA9FAEA6-GENID-1-6-1-17-1-1-4-1-11-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4d052924-992d-4dc8-9c32-6360d8ca7ba5.zip" scope="external"> MmfExSinkSource.zip file</xref></p><p>Click:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4d052924-992d-4dc8-9c32-6360d8ca7ba5.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread </apiname></xref>  <xref href="GUID-815970B5-302C-317E-8CAF-4A6589D25694.dita"><apiname>CMMFClip </apiname></xref>  <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink </apiname></xref>  <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource </apiname></xref>  <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer </apiname></xref>  </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-5-1-7-1-6-1-7-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-5-1-7-1-6-1-7-1" xml:lang="en"><title>MmfExSinkSource:
+Multimedia Framework sink/source plug-ins example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>MmfExSinkSource</filepath> demonstrates
+how to implement sink and source plug-ins for the Multimedia Framework. A
+sink is an object that can receive multimedia data; a source is an object
+that can supply it. This example implements a sink and a source as descriptor
+objects. </p> <p>Both the sink and source are implemented in a single class, <codeph>CMMFExDescriptor</codeph>,
+that derives from <codeph>CMMFClip</codeph>. <codeph>CMMFClip</codeph> represents
+a multimedia clip (i.e. not a stream or hardware device), which, in turn,
+derives from the ECom sink interface <codeph>MDataSink</codeph>, and the source
+interface <codeph>MDataSource</codeph>. </p> <p>Both the example source and
+sink are passed on creation a packaged <codeph>TMMFExDescriptorParams</codeph> object,
+which specifies the descriptor to read/write, and the thread to which the
+descriptor belongs. </p> <p>Note that the default audio controller only uses
+the default sink/sources, and returns "not supported" if you attempt to use
+other sink/sources with it. </p> </section>
+<section id="GUID-567F55C9-E20D-57DD-8469-99F3AA9FAEA6-GENID-1-6-1-17-1-1-5-1-7-1-6-1-7-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4d052924-992d-4dc8-9c32-6360d8ca7ba5.zip" scope="external"> MmfExSinkSource.zip file</xref></p><p>Click:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4d052924-992d-4dc8-9c32-6360d8ca7ba5.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread </apiname></xref>  <xref href="GUID-815970B5-302C-317E-8CAF-4A6589D25694.dita"><apiname>CMMFClip </apiname></xref>  <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink </apiname></xref>  <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource </apiname></xref>  <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer </apiname></xref>  </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420-master.png has changed
Binary file Symbian3/SDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420_d0e335124_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-226EDECC-BE24-412C-945D-7EABE566282A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-226EDECC-BE24-412C-945D-7EABE566282A" xml:lang="en"><title>Editing
+indicators in pop-up windows</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>When a pop-up window contains an editor that needs editing indicators,
+it is not feasible to use the Navi pane for the indicators. For this purpose,
+a specific area in the pop-up window, above the editing field, can be used
+for displaying the editing indicators (see <xref href="GUID-7A552BC6-419F-4FD9-8D63-828E37982FD8.dita">Editing
+indicators</xref> for an example).</p>
+<section><title>Using editing indicators
+in pop-up windows in C++ applications</title><p>The APIs to use
+are the Indicators
+API and the Popups
+API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2273C35F-C8FD-5321-BAE8-4995C5B374E5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2273C35F-C8FD-5321-BAE8-4995C5B374E5"><title>-what</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option creates a list of files in exactly the same way as option <codeph>-check</codeph>. The list of files is then piped to STDOUT.</p> <p>The option could be useful to find out where a particular build step is creating files, or for creating a zip file containing the releasables for a component by piping the list of files to a file and then having a zip utility process this file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22746579-EB41-5C76-96D0-606C132E824A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-22746579-EB41-5C76-96D0-606C132E824A" xml:lang="en"><title>Other file-related components</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2277BB1C-C04D-56C8-9B9B-FBC2EDCA9B07.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2277BB1C-C04D-56C8-9B9B-FBC2EDCA9B07"><title>How to externalise and internalise compound objects</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Compound objects can be externalised and internalised. The only assumption is that all component objects (and their component objects) must be capable of being externalised and internalised.</p> <p>In this example, a compound object, an instance of the <codeph>CCompound</codeph> class, is externalised to, and internalised from, a single stream. The class is defined as:</p> <codeblock id="GUID-E6ACB6CF-C933-5C11-A773-F25EB05F8E73" xml:space="preserve">class CCompound : public CBase
+    {
+public :
+    void ExternalizeL(RWriteStream&amp; aStream) const;
+    void ExternalizeL(RReadStream&amp; aStream);
+    ...
+    CClassA* iCa;
+    CClassB* iCb;
+    TClassC  iTc;
+    };</codeblock> <section><title>Externalising</title> <p>The preferred implementation of the <codeph>ExternalizeL()</codeph> function is:</p> <codeblock id="GUID-ED0746BB-7D2F-5274-BAF6-3FBF1781A0C3" xml:space="preserve">void CCompound::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    aStream &lt;&lt; *iCa;
+    aStream &lt;&lt; *iCb;
+    aStream &lt;&lt; iTc;
+    }</codeblock> <p>The following implementation is also correct:</p> <codeblock id="GUID-2939633F-6FEB-596C-AE2F-DBBDB879B3E3" xml:space="preserve">void CCompound::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    iCa-&gt;ExternalizeL(aStream);
+    iCb-&gt;ExternalizeL(aStream);
+    iTc.ExternalizeL(aStream);
+    }</codeblock> </section> <section><title>Internalising</title> <p>The preferred implementation of the <codeph>InternalizeL()</codeph> function is:</p> <codeblock id="GUID-60D0A0F9-A716-5EE2-AF31-D9927723BA12" xml:space="preserve">void CCompound::InternalizeL(RReadStream&amp; aStream)
+    {
+    aStream &gt;&gt; *iCa;
+    aStream &gt;&gt; *iCb;
+    aStream &gt;&gt;  iTc;
+    }</codeblock> <p>The following implementation is also correct:</p> <codeblock id="GUID-E3DF0907-BE25-5D4E-A6FD-720CD70F9033" xml:space="preserve">void CCompound::InternalizeL(RReadStream&amp; aStream)
+    {
+    iCa-&gt;InternalizeL(aStream);
+    iCb-&gt;InternalizeL(aStream);
+    iTc.InternalizeL(aStream);
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-22844C28-AB5B-5A6F-8863-7269464684B4"><title>Symbian SQL Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Symbian OS implementation of the Structured Query Language(SQL). </p> <section><title>Purpose</title> <p>SQL is: the syntax for creating, modifying and deleting databases and the data they contain; an engine or server that understands that syntax; the commands and operations that allow the SQL engine to process the syntatical elements. Developers who know one varient of SQL can easily work in another. </p> </section> <section><title>Required background</title> <p>Relational databases, the SQL query language, database programming fundamentals. </p> </section> <section><title>Key concepts/terms</title> <p>The SQL component includes these key concepts: </p> <ul><li id="GUID-BA38B572-000A-5798-B10E-0E54FB5300DC"><p>Relational database </p> <p>A structured collection of data organised as tables (relations). </p> </li> <li id="GUID-37E36881-7760-5269-B11A-128C81FE5741"><p>SQL </p> <p>A standard language for querying relational databases. </p> </li> <li id="GUID-AFC25A9E-C040-548A-9C62-C8D03C5F1055"><p>Security policy </p> <p>A specification of user permissions on a database. </p> </li> </ul> </section> <section><title>Architectural relationships</title> <p>The SQL component is a free standing component that can be accessed by any application and from anywhere in Symbian OS. </p> <p>It is has a client-server architecture. Applications interface with the client API. The server side is an executable running in its own process and is not directly accessible to client applications. It can only be reached via the client-side interface. </p> <fig id="GUID-79734111-15D9-51E2-A1CE-09A4F72D1B21"><title>
+             This image depicts the client / server nature of Symbian SQL 
+          </title> <image href="GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e338995_href.png" placement="inline"/></fig> </section> <section><title>API summary</title> <p>The SQL component client consists of three APIs which are used to access, query and secure a database. </p> <p><b>SQL APIs </b> </p> <ul><li id="GUID-74A5E9C2-A9CA-5595-8249-E311054EBFE6"><p>The SQL database API, which you use to access a database. </p> </li> <li id="GUID-4FE61907-6DBA-5B59-B923-F2AB623BE3B2"><p>The SQL statement API, which you use to query a database. </p> </li> <li id="GUID-1530DA5D-3E75-5C71-9AA9-72EA342AF3E6"><p>The SQL security policy API, which you use to create a secure database. </p> </li> </ul> <table id="GUID-89A08BF1-F7CB-594A-9693-42CB5AE4B499"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref>  </p> </entry> <entry><p>The SQL database API </p> </entry> </row> <row><entry><p> <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref>  </p> </entry> <entry><p>The SQL statement API </p> </entry> </row> <row><entry><p> <xref href="GUID-56C52D43-C4A9-3B31-B154-CA1E77693F57.dita"><apiname>RSqlSecurityPolicy</apiname></xref>  </p> </entry> <entry><p>The SQL security policy API </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>Relational databases and the SQL query language are fundamentals of application development with numerous uses. </p> <p><b>SQL Users </b> </p> <ul><li id="GUID-747924C7-5E24-5EA5-9E11-8FB216822A0B"><p>Application developers needing to access databases. </p> </li> </ul> <p><b>SQL tasks</b> </p> <p>The SQL component is used to: </p> <ul><li id="GUID-79CD646D-0E08-5F17-ADDF-D245D0CEEF74"><p>create, </p> </li> <li id="GUID-98666D77-DA2F-58B5-BEAB-3FFC149425EE"><p>delete, </p> </li> <li id="GUID-D7D164C6-FF45-5A2B-AB3F-B011F04BCF3F"><p>access, </p> </li> <li id="GUID-012D297E-74B7-5B53-98C8-8ECF97C16141"><p>query, and </p> </li> <li id="GUID-8CCECFDE-1D8E-5A66-A1CE-DBEB5777EC76"><p>modify relational databases. </p> </li> </ul> <p><b>Creating and deleting a relational database</b> </p> <p>The SQL component is used to create and delete relational databases. They may be secure or insecure. </p> <p><b>Accessing a relational database</b> </p> <p>Use the SQL component to open and close databases and to attach a secondary database to a primary one. </p> <p><b>Querying and modifying a relational database</b> </p> <p>Use the SQL component to query a database using SQL. Queries can read, write, modify and delete data in a database. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE.dita"><linktext>Persistent Storage</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-229C2057-F187-5019-AE21-AAA5803DD0ED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-229C2057-F187-5019-AE21-AAA5803DD0ED"><title>Reference</title><shortdesc>This section provides a summary of documents related to the TCP/IP that you can refer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><table id="GUID-B447E2E4-64FA-568F-9EE0-FDA6E3AA6850"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Item</entry> <entry>Header</entry> </row> </thead> <tbody><row><entry><p>dns_qry.h Global variables </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>eui_addr.h Global variables </p> </entry> <entry><p>eui_addr.h </p> </entry> </row> <row><entry><p>in6_if.h Global variables </p> </entry> <entry><p>in6_if.h </p> </entry> </row> <row><entry><p>in6_opt.h Global variables </p> </entry> <entry><p>in6_opt.h </p> </entry> </row> <row><entry><p>in_sock.h Global variables </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>inet6err.h Global variables </p> </entry> <entry><p>inet6err.h </p> </entry> </row> <row><entry><p>INET_ADDR </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>SE64Addr </p> </entry> <entry><p>eui_addr.h </p> </entry> </row> <row><entry><p>SInet6Addr </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>SInetAddr </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TDnsQryRespBase </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsQuery </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsQueryBuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespA </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespAAAA </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespAAAABuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespABuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespMX </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespMXBuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespNAPTR </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespNAPTRBuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespPTR </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespPTRBuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespSRV </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TDnsRespSRVBuf </p> </entry> <entry><p>dns_qry.h </p> </entry> </row> <row><entry><p>TE64Addr </p> </entry> <entry><p>eui_addr.h </p> </entry> </row> <row><entry><p>TEui64Addr </p> </entry> <entry><p>eui_addr.h </p> </entry> </row> <row><entry><p>TEuiPanic </p> </entry> <entry><p>eui_addr.h </p> </entry> </row> <row><entry><p>TIfStatus </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TInetAddr </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TInetAddrClass </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TInetAddressInfo </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TInetNeighbourInfo </p> </entry> <entry><p>in6_opt.h </p> </entry> </row> <row><entry><p>TInetScopeIds </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TIp6Addr </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TIp6Mreq </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TNameRecordFlags </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TRouteState </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TRouteType </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TSoIfInfo6 </p> </entry> <entry><p>in6_if.h </p> </entry> </row> <row><entry><p>TSoInet6IfConfig </p> </entry> <entry><p>in6_if.h </p> </entry> </row> <row><entry><p>TSoInet6InterfaceInfo </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TSoInetCachedRouteInfo </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TSoInetIfQuery </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TSoInetInterfaceInfo </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TSoInetLastErr </p> </entry> <entry><p>in_sock.h </p> </entry> </row> <row><entry><p>TSoInetRouteInfo </p> </entry> <entry><p>in_sock.h </p> </entry> </row> </tbody> </tgroup> </table> </refbody><related-links><link href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita"><linktext>Sockets
+                Server</linktext> </link> </related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22A4F33C-4F93-572E-91CD-E93CD0B69B09.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-22A4F33C-4F93-572E-91CD-E93CD0B69B09" xml:lang="en"><title>SQLite Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The SQLite library. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22B535FA-6C8A-5B39-9CD7-6E85A86B7C2C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-22B535FA-6C8A-5B39-9CD7-6E85A86B7C2C"><title>Basic SQL Example: basicsqlexample.cpp </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A copy of the basicsqlexample.cpp file for the basic SQL example application. </p> <section><title>Introduction</title> <p>The functions demonstrate how to perform several SQL operations. </p> </section> <section><title>Code</title> <p>Defines the functions. </p> <codeblock id="GUID-7DB281F3-2F11-542A-BE71-DDFBDD113A6C" xml:space="preserve">// basicsqlexample.cpp
+//
+// Copyright (c) Nokia Ltd 2009. All rights reserved.
+//
+/** This example application demonstrates several SQL operations including:
+&lt;ul&gt;
+&lt;li&gt;Creating and managing a database&lt;/li&gt;
+&lt;li&gt;Creating and managing tables&lt;/li&gt;
+&lt;li&gt;Querying a database&lt;/li&gt;
+&lt;/ul&gt;
+
+@file basicsqlquery.cpp
+*/
+#include &lt;e32cons.h&gt;
+#include &lt;SqlDb.h&gt;
+#include "basicsqlexample.h"
+/*  ***************************************************  */
+
+/* SQL Statements: */
+_LIT(KTabCreate,"CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT);");
+
+/* An INSERT statement. Long version. */
+        //Pets of Jon Doe
+_LIT(KTabInsert1,"INSERT INTO Pets (person, cat, dog, rodent, bird) VALUES ('Jon Doe', 0, 1, 1, 0);");
+
+/* Simplified insert statement text. */
+//Pets of Jane Roe
+_LIT(KTabInsert2,"INSERT INTO Pets VALUES ('Jane Roe',2,1,0,0);");
+//Pets of Tom Moe
+_LIT(KTabInsert3,"INSERT INTO Pets VALUES ('Tom Moe',1,0,0,3);");
+
+/* SQL SELECT Statements. */
+_LIT(KSelect1,"SELECT person FROM Pets WHERE cat &gt;= 1;");
+_LIT(KSelect2,"SELECT person FROM Pets WHERE cat &gt;= 1 AND dog &gt;= 1;");
+_LIT(KSelect3,"SELECT person FROM Pets WHERE rodent &gt;= 1;");
+
+/* Various messages */
+_LIT(KTitle, "Basic SQL example");
+_LIT(KTextPressAKey, "\n\nPress any key to step through the example\n");
+_LIT(KExit,"Press any key to exit the application\n");
+_LIT(KPressAKey,"\nPress a key to continue\n");
+_LIT(KDatabaseMsg,"\nCreating a database\n");
+_LIT(KOpen,"Opening the database\n");
+_LIT(KClose,"Closing the database\n");
+_LIT(KCreateTable,"\nCreating a table\n");
+_LIT(KInsert,"Inserting records into the table\n");
+_LIT(KPrepare,"Preparing a query\n");
+_LIT(KExecute,"Executing a query\n");
+
+/* Constants used with the SQL operations. */
+_LIT(KDatabaseName, "\\Basic_db.db");
+_LIT(KPerson,"person");
+_LIT(KCat,"cat");
+_LIT(KDog,"dog");
+_LIT(KRodent,"rodent");
+_LIT(KBird,"bird");
+
+/* End of SQL Statements. */
+
+/*  ***************************************************  */
+/**
+Allocates and constructs a CBasicSqlExample object and 
+leaves it on the cleanup stack.
+Initialises all member data to their default values.
+*/    
+CBasicSqlExample* CBasicSqlExample::NewLC()
+    {
+    CBasicSqlExample* rep = new(ELeave) CBasicSqlExample();
+    CleanupStack::PushL(rep);
+    rep-&gt;ConstructL();
+    return rep;
+    }
+/*  ***************************************************  */
+    
+/**
+Constructor
+*/
+CBasicSqlExample::CBasicSqlExample()
+    {
+    }    
+
+void CBasicSqlExample::ConstructL()
+    {
+    iConsole = Console::NewL(KTitle,TSize(KConsFullScreen,KConsFullScreen));
+    }
+/*  ***************************************************  */
+
+/**
+Destructor
+*/
+CBasicSqlExample::~CBasicSqlExample()
+    {
+    iPetDb.Close();
+
+    Prompt(KExit);
+    delete iConsole;
+    }
+/*  ***************************************************  */
+
+void CBasicSqlExample::Prompt()
+    {
+    iConsole-&gt;Printf(KPressAKey);
+    iConsole-&gt;Getch();
+    }
+void CBasicSqlExample::Prompt(const TDesC&amp; aText)
+    {
+    iConsole-&gt;Printf(aText);
+    iConsole-&gt;Printf(KPressAKey);
+    iConsole-&gt;Getch();
+    }
+
+/** Creates a Database 
+@leave KErrNotFound, KErrAbort, KErrPermissionDenied,
+KErrArgument, system-wide error codes.
+*/
+void CBasicSqlExample::CreateDatabaseL()
+    {
+    RSqlDatabase db;
+
+    iConsole-&gt;Printf(KDatabaseMsg);
+    //create the database
+    User::LeaveIfError(db.Create(KDatabaseName));
+
+    iConsole-&gt;Printf(KDatabaseName);
+    CleanupClosePushL(db);
+    
+    User::LeaveIfError(db.Exec(KTabCreate));
+    CleanupStack::PopAndDestroy(1);
+    
+    Prompt(KClose);
+    }
+/*  ***************************************************  */
+
+
+/** Add a few rows to the table.
+This function shows how to insert data in a table. 
+*/
+void CBasicSqlExample::PopulateDatabaseL()
+    {
+    RSqlDatabase db;
+
+    // Open the database that was created earlier.
+    User::LeaveIfError(db.Open(KDatabaseName));
+    CleanupClosePushL(db);
+    Prompt(KOpen);
+    
+    // Inserts the first row.
+    User::LeaveIfError(db.Exec(KTabInsert1));
+    Prompt(KTabInsert1);
+    
+    // Inserts the second row.
+    User::LeaveIfError(db.Exec(KTabInsert2));
+    Prompt(KTabInsert2);
+    
+    // Inserts the third row.
+    User::LeaveIfError(db.Exec(KTabInsert3));
+    Prompt(KTabInsert3);
+    
+    // Close the database.
+    // cleanup the database.
+    Prompt(KClose);
+    CleanupStack::PopAndDestroy(1);
+    }
+/*  ***************************************************  */
+
+/** Querying the database.
+This function shows how to get information from the database.
+It provides a basic query.
+*/
+void CBasicSqlExample::SqlQueryL(const TDesC&amp; aStatement)
+    {
+    RSqlStatement stmt;
+    iConsole-&gt;Printf(_L("Running Query:\n%S\n"), &amp;aStatement);
+    
+    User::LeaveIfError(stmt.Prepare(iPetDb, aStatement));
+    CleanupClosePushL(stmt);
+    
+    TInt personIndex = stmt.ColumnIndex(KPerson); // index.  This doesn't change after query preparation.
+    TInt rc = KErrNone;
+    while ((rc = stmt.Next()) == KSqlAtRow)
+        {
+        // Do something with the results 
+        TPtrC myData = stmt.ColumnTextL(personIndex); // read return data
+        iConsole-&gt;Printf(_L("Person=%S\n"), &amp;myData);
+        }
+    if (rc != KSqlAtEnd)
+        {
+        _LIT(KErrSQLError, "Error %d returned from RSqlStatement::Next().");
+        iConsole-&gt;Printf(KErrSQLError, rc);
+        }
+    Prompt();
+    CleanupStack::PopAndDestroy(1);
+    }
+
+void CBasicSqlExample::OpenDatabaseL()
+    {
+    User::LeaveIfError(iPetDb.Open(KDatabaseName));
+    }
+
+void CBasicSqlExample::CloseDatabase()
+    {
+    iPetDb.Close();
+    }
+
+void CBasicSqlExample::DeleteDatabase()
+    {
+    // should be safe if db closed, catch if db left open.
+    iPetDb.Close();
+    iPetDb.Delete(KDatabaseName);
+    }
+
+void CBasicSqlExample::ExampleL()
+    {
+    TRAPD(err, DoExampleL());
+    // Remove database file for next run of example.
+    DeleteDatabase();
+    User::LeaveIfError(err);
+    }
+
+void CBasicSqlExample::DoExampleL()
+    {
+    // Create a database
+    CreateDatabaseL();
+    
+    // Add table and data
+    PopulateDatabaseL();
+
+    // Query the data
+    OpenDatabaseL();
+    SqlQueryL(KSelect1);
+    SqlQueryL(KSelect2);
+    SqlQueryL(KSelect3);
+    CloseDatabase();
+    }
+
+/*  ***************************************************  */
+
+template &lt;class T&gt;class TRunExample
+    {
+public:
+    static void RunExample(){
+        // Create an Active Scheduler to handle asychronous calls
+        CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
+        CleanupStack::PushL(scheduler);
+        CActiveScheduler::Install( scheduler );
+        T* app = T::NewLC();
+        app-&gt;ExampleL();
+        CleanupStack::PopAndDestroy(2); //app, scheduler
+        };
+    };
+
+GLDEF_C TInt E32Main()
+    {
+    __UHEAP_MARK;
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    if(cleanup == NULL)
+        {
+        return KErrNoMemory;
+        }
+    TRunExample&lt;CBasicSqlExample&gt; example;
+    // TRunExample&lt;CComplexSqlExample&gt; example2;
+    // TRunExample&lt;CEvenMoreComplexSqlExample&gt; example3;
+    
+    TRAPD(err, example.RunExample());
+    // TRAP(err, example2.RunExample());
+    // TRAP(err, example3.RunExample());
+    
+    if(err != KErrNone)
+        {
+        User::Panic(_L("Failed to complete"),err);
+        }
+    delete cleanup;
+    __UHEAP_MARKEND;
+    return KErrNone;
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-22BE45B9-7788-41B5-9E81-E0420CB956C7_d0e46446_href.png has changed
Binary file Symbian3/SDK/Source/GUID-22BE45B9-7788-41B5-9E81-E0420CB956C7_d0e52568_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22D7E6E9-D47D-52F0-A9DF-C69075DBEEC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-22D7E6E9-D47D-52F0-A9DF-C69075DBEEC8"><title>command</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>command [ -pvV ] simple command </userinput> </p> <p>The simple <codeph>command</codeph> argument is taken as an external command instead of a function or builtin and is executed. If the <codeph>POSIX_BUILTINS</codeph> option is set, builtins will also be executed but certain special properties of them are suppressed. </p> <table id="GUID-96819D00-0244-5A0E-A657-F687D16492FD"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-p</codeph>  </p> </entry> <entry><p>Causes a default path to be searched instead of that in <codeph>$path</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-v</codeph>  </p> </entry> <entry><p>Similar to <xref href="GUID-0368678A-6963-5558-8DC2-0E618B927538.dita">whence</xref>. </p> </entry> </row> <row><entry><p> <codeph>-V</codeph>  </p> </entry> <entry><p>Equivalent to <xref href="GUID-0368678A-6963-5558-8DC2-0E618B927538.dita">whence</xref> -v. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1" xml:lang="en"><title>Write
+a converter DLL project file</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Project file defines the location of the source files that
+required are to build a plug-in.</p><p>To write a converter DLL project file,
+specify the following in the <codeph>.mmp</codeph> file:</p><ul>
+<li><p>The extension of the target file as <codeph>.dll</codeph>.</p></li>
+<li><p>The <codeph>TARGETTYPE</codeph> as <codeph>plugin</codeph>.</p></li>
+<li><p>The second UID as <codeph>0x10009d8d</codeph>. This value identifies
+the DLL as an ECom plug-in. The third UID (<codeph>0xE800009B</codeph> in
+this example) must be unique and properly allocated. See the <xref href="https://www.symbiansigned.com/app/page.dita">Symbian
+Signed</xref>Symbian Signed web site for information on how to allocate UIDs.</p></li>
+<li><p>The library section must include <codeph>conarc.lib</codeph>. </p></li>
+</ul><p>The following is an example of an <codeph>.mmp</codeph> file that
+builds a converter DLL called <codeph>EXAMPLECONV.dll</codeph>:</p><codeblock xml:space="preserve">// ExampleConv.MMP
+target      exampleconv.dll
+targettype  plugin
+UID     0x10009d8d 0xE800009B
+VENDORID    0x70000001
+CAPABILITY  All -Tcb
+sourcepath  .
+start resource E800009B.rss
+target exampleconv.rsc
+end
+start resource E80000AC.rss
+targetpath /resource/convert
+end
+userinclude .
+systeminclude   . /epoc32/include
+systeminclude  /epoc32/include/ecom
+source      ExampleConv.CPP
+library     euser.lib
+library     conarc.lib estor.lib
+</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-22F74DA4-2CAB-5CA9-877C-0FC2F891E259.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-22F74DA4-2CAB-5CA9-877C-0FC2F891E259"><title>Dictionary write streams</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Applications must construct an <codeph>RDictionaryWriteStream</codeph> object before they can write to a stream located in a dictionary store.</p> <p>To prepare a stream for writing, use the <codeph>RDictionaryWriteStream::AssignL()</codeph> or <codeph>RDictionaryWriteStream::AssignLC()</codeph> functions, passing a reference to the dictionary store and the UID associated with the stream.</p> <p>If no stream is associated with the UID, then a new stream is created. An association is made between the resulting stream ID and the UID.</p> <p>If a stream is currently associated with the specified UID, then the existing stream is prepared for replacement.</p> <p>The following code fragment is typical. <codeph>store</codeph> is a pointer to an opened dictionary store. <codeph>RDictionaryWriteStream::AssignLC()</codeph> opens the stream associated with the UID <codeph>theuid</codeph> and prepares the stream for writing:</p> <codeblock id="GUID-48CA0DB4-44D8-5E1C-8211-1EB21F2CBACD" xml:space="preserve">...
+TUid theuid;
+CDictionaryStore* store;
+...
+RDictionaryWriteStream outstream;
+outstream.AssignLC(*store,theuid);
+TSomeData data;
+...
+outstream &lt;&lt; data;
+outstream.CommitL()
+CleanupStack::PopAndDestroy(); // cleanup the write stream
+...
+store-&gt;CommitL(); // commit changes to the dictionary store
+...</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-23014C8A-2A0B-5F6A-9BB2-6642E1EC0462.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-23014C8A-2A0B-5F6A-9BB2-6642E1EC0462" xml:lang="en"><title>Using
+Content Processor</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains how to implement the <codeph>MContentProcessor</codeph> interface
+to parse, validate and autocorrect an XML document. </p>
+<section><title>Introduction</title> <p>The parsed document can also be validated
+against a specification and auto-corrected for spelling errors in the validated
+text. This can be done by writing three applications - a parser, a validator
+and an autocorrector. These applications must implement the <xref href="GUID-7942EDC6-6571-3423-8ECA-D3DB68A78CB6.dita"><apiname>MContentProcessor</apiname></xref> interface. </p> <p>Writing
+a content processor is similar to writing a content handler as explained in <xref href="GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808.dita">Parsing an XML Document</xref>. <xref href="GUID-7942EDC6-6571-3423-8ECA-D3DB68A78CB6.dita"><apiname>MContentProcessor</apiname></xref> is
+an extension of <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref>. Each application is writen
+by implementing the callback functions of <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref>.
+The only difference is that <xref href="GUID-7942EDC6-6571-3423-8ECA-D3DB68A78CB6.dita"><apiname>MContentProcessor</apiname></xref> has a mechanism
+for directing output, so that the output of the parser is the input to the
+validator, and the output of the validator is the input to the autocorrector. </p> <p>Direct
+output of a content processor by implementing the <xref href="GUID-DCF5D3DD-C7FC-3ED0-86E8-63C5E85795B8.dita"><apiname>SetContentSink()</apiname></xref> function,
+so that the parser outputs to the validator and the validator outputs to the
+autocorrector. A sequence of several applications linked in this way is called
+a <b>Plug-in Chain</b>. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-F18654E9-0325-5111-9D00-5196196BD0D5">
+<li id="GUID-324DEAF3-690F-5DA0-9DD0-C16533114B0E"><p>Implement the <codeph>MContentProcessor</codeph> interface. </p> </li>
+<li id="GUID-97B4EA3B-3CF1-582E-864C-73EF0FA1A1EC"><p>Implement the <xref href="GUID-7942EDC6-6571-3423-8ECA-D3DB68A78CB6.dita#GUID-7942EDC6-6571-3423-8ECA-D3DB68A78CB6/GUID-F33A8F75-B1FB-30DF-B829-DFC6D2CD29E1"><apiname>MContentProcessor::SetContentSink()</apiname></xref> function. </p> </li>
+<li id="GUID-6A95E431-C203-5442-BDD8-AEF0FD19AE72"><p>Perform the actual parsing. </p> <p>Use
+a <codeph>CParser</codeph> object as explained in <xref href="GUID-E16070E5-379A-5818-81CC-B00059A40084.dita">Choosing
+a Parser Plug-in</xref>. To ensure that parsing is followed by validation
+and autocorrection, associate the <codeph>CParser</codeph> object with the
+plug-in chain. This can be done by calling <xref href="GUID-667DBD60-ABF3-326B-8FF9-86BC7DC7662F.dita"><apiname>SetProcessorChainL()</apiname></xref> function
+of the <codeph>CParser</codeph> object with a list of the items in the plugin
+chain as a parameter. </p> <p>The following code illustrates how to validate
+and autocorrect the parsed document: </p> <codeblock id="GUID-39142F60-28D0-55FF-B9B3-DB5149638C2C" xml:space="preserve">RFs fs;
+User::LeaveIfError( fs.Connect() );
+CleanupClosePushL( fs );
+
+_LIT8( KXmlMimeType, "text/xml" );
+TSimpleContentHandler sax; // You’ll have to implement this class…
+
+CParser* parser = CParser::NewLC( KXmlMimeType, sax );
+
+RContentProcessorUids uids;
+uids.Append( KValidatorUid ); // The ECOM implementation UID of a validator plug-in
+CleanupClosePushL( uids );
+
+// Sets up the chain of call-back events from the parser through to the
+// validating plug-in and then the client.
+parser-&gt;SetProcessorChainL( uids );
+
+parser-&gt;ParseFileL( fs, KMyFile );
+
+CleanupStack::PopAndDestroy( 3 );</codeblock> </li>
+</ol> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-231840A2-255B-5200-8AD1-1D7667FCB448"><title>What are records</title><shortdesc>This topic describes the structure of record. A record is an item that can be stored in the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>A record is a container and an element. A record refers to a set of fields in a defined order. A set or records that has the same fields in the same order can be called a recordset or a table. Fields in a given position make a column. A column is conceptual. The CommsDat API has no C++ item defined as a column. </p> <p>There are two types of record: </p> <ul><li id="GUID-5989B5E3-1995-5E12-8BB6-30136BA7DA09"><p>records defined at system compile time - these records have named fields and are defined by Symbian OS. </p> </li> <li id="GUID-E5B40BE7-13D4-5EE1-B005-1D00EAB0A7BC"><p>records defined by the user - these records are defined at run time - they are not known to Symbian OS when Symbian OS is built. </p> </li> </ul> <section><title>Records defined at system compile time</title> <p> </p> <p>The class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDRecordBase</apiname></xref> represents a Symbian OS defined record. All Symbian OS defined records inherit from <codeph>CCDRecordBase</codeph>. An individual named record is an instance of a class derived from <codeph>CCDRecordBase</codeph>. Symbian OS creates an individual named record and assigns a unique numeric Id. Symbian OS defines the class and the unique Id before the system is built. </p> <p>The class defines a schema for the record. A schema is a pattern for the record that all records of this type follow. The class contains a set of fields and links to other records. </p> <fig id="GUID-A331560C-9996-55E8-8C64-7BB2D5D0C1C6"><image href="GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e66246_href.png" placement="inline"/></fig> <p>For example, Symbian OS defines the class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDIAPRecord</apiname></xref>. The class represents an Internet Access Point (IAP) record. A set of IAP records form an IAP table. Symbian OS assigns the unique numeric Id <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPRecord</apiname></xref> to a record of this type. </p> <p>The public data members of this class are the fields and links that make the record. The following code shows part of the class definition. Some parts are omitted - this is not the complete class definition. </p> <codeblock id="GUID-3F6A91C8-BF0E-50E9-B49B-C363816179E5" xml:space="preserve">class CCDIAPRecord : public CCDRecordBase
+    {
+    public:
+        CMDBField&lt;TDesC&gt;                        iServiceType;
+        CMDBRecordLink&lt;CCDServiceRecordBase&gt;    iService;
+        CMDBField&lt;TDesC&gt;                        iBearerType;
+        CMDBRecordLink&lt;CCDBearerRecordBase&gt;     iBearer;
+        CMDBRecordLink&lt;CCDNetworkRecord&gt;        iNetwork;
+        CMDBField&lt;TUint32&gt;                      iNetworkWeighting;
+        CMDBRecordLink&lt;CCDLocationRecord&gt;       iLocation;
+        ...
+    }
+ </codeblock> <p>To create an instance of a Symbian OS defined record in memory, use the factory function: <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::RecordFactoryL()</apiname></xref>. </p> <p>Tools and applications can also create an instance of a Symbian OS defined record in memory, and copy it from another record. Use the factory function: <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::CreateCopyRecord()</apiname></xref>. </p> <p>Fields are public data members of a Symbian OS defined record. Tools and applications access the fields directly. </p> <p>Tools and applications can use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::GetFieldByNameL()</apiname></xref> or <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::GetFieldByIdL()</apiname></xref> functions to find fields in a Symbian OS defined record. These methods are <i>not</i> recommended. It is more efficient to access the fields directly. </p> </section> <section><title>Records defined by the user</title> <p>The class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBGenericRecord</apiname></xref> represents a user defined record. All user defined records inherit from <codeph>CMDBGenericRecord</codeph>. User defined records do not have named fields. A tool or application supplies a schema at run time. The schema defines the structure of the record. </p> <p>A schema is an array of <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>SGenericRecordTypeInfo</apiname></xref> objects. Each item in the array defines the fields in the record in order. </p> <p>Tools and applications can use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBGenericRecord::InitializeL()</apiname></xref> function to initialise a record in memory. Tools and Applications can also get use the <codeph>LoadL()</codeph> and <codeph>FindL()</codeph> functions to get the the table schema from the Comms Database. </p> <fig id="GUID-BCE5A2B5-C328-594A-A213-C4AFB48BBF68"><image href="GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e66332_href.png" placement="inline"/></fig> <p> </p> <p>You use the same methods to create, store and access user defined records that Symbian OS defined records use. Symbian OS backs up user defined data and secures user defined data with Platform Security. Symbian OS does not maintain user defined data formats. </p> <p>Tools and applications must use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::GetFieldByNameL()</apiname></xref> or <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::GetFieldByIdL()</apiname></xref> functions to find fields in a user defined record. It is more efficient to use <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::GetFieldByIdL()</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e7325_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-232E2D33-8BC1-5CC3-A4DF-2C99900E1083.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-232E2D33-8BC1-5CC3-A4DF-2C99900E1083" xml:lang="en"><title>Client-side
+MTM implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Example Code</title> <p><b>Download</b></p><p>Click on the
+following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.zip" scope="external">TextMTM.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.html" scope="peer">browse</xref> to view the example code. </p> <p>The files reproduced
+here are the main files contained in the examples directory. Some extra files
+may be needed to run the examples, and these will be found in the appropriate
+examples directory. </p><p> The subproject <filepath> txtc</filepath> demonstrates
+a Client-side MTM. The central class is <codeph>CTextMtmClient</codeph>,</p><p> derived
+from the Client-side MTM base class <codeph>CBaseMtm</codeph>.</p><p><filepath> txtc</filepath> implements
+all mandatory Client-side MTM functionality, and the following optional MTM
+functionality:<ul>
+<li><p> find: this searches the body text of a local entry, or its description
+or details</p></li>
+<li><p>message forwarding: this copies a message to another folder</p></li>
+<li><p> MTM-specific operations: <codeph>txtc</codeph> accepts requests for
+an asynchronous service Refresh operation, and passes such requests to the
+Server-side Text MTM.</p></li>
+</ul></p> </section>
+<section><title> Class Summary</title><p><xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref><xref href="GUID-2058E86A-53E6-3E6C-81E6-F6223E78CDE5.dita"><apiname> CMTMTxtsetings </apiname></xref><xref href="GUID-A78AE62C-A8C8-393D-81CD-126CC5513577.dita"><apiname>TMTMTxtSettings</apiname></xref></p><p> The
+following optional functionality is not implemented: <ul>
+<li><p> address handling: addresses are not relevant to this MTM </p></li>
+<li><p>subject field </p></li>
+<li><p> replying</p></li>
+</ul></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2332AFD7-30F2-5B4D-BBA9-3EA36D8F5E81.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-2332AFD7-30F2-5B4D-BBA9-3EA36D8F5E81" xml:lang="en"><title>Call
+Barring Status </title><shortdesc>This tutorial describes how to get the call barring status information
+with the telephony API for applications </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The call barring is a supplementary service. The client applications
+can determine the status of the service with the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> functions.
+ </p></context>
+
+
+<steps id="GUID-2BA7DD2F-8ECE-5F05-A534-FA8A213C2E04">
+<step id="GUID-ADD96618-3A97-59A3-9A18-C34B46D36CDF"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-41E8A873-C810-5C80-95C4-4247CBAA4952"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCallBarringStatus()</apiname></xref> to
+get the supplementary services status information. </info>
+<info>pass a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TCallBarringCondition</apiname></xref> object. </info>
+</step>
+<step id="GUID-F7F6B090-1A10-5902-8470-BB1A2A3E6A5E"><cmd/>
+<info>cancel the request with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetCallBarringStatusCancel</apiname></xref> enumeration. </info>
+</step>
+</steps>
+<example id="GUID-C64CDE2B-344E-5341-88B0-624059E85CE5"><title>Call barring
+example</title> <codeblock id="GUID-873ED2A9-3B8F-57F5-8A35-46EBD87350B7" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallBarringSupplServicesV1 iCallBarringSupplServicesV1;
+    CTelephony::TCallBarringSupplServicesV1Pckg iCallBarringSupplServicesV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallBarringSupplServicesV1Pckg(iCallBarringSupplServicesV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    CTelephony::TCallBarringCondition condition = CTelephony::EBarAllOutgoing;
+    iTelephony-&gt;GetCallBarringStatus(iStatus, condition, iCallBarringSupplServicesV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if( iCallBarringSupplServicesV1.iCallBarring == CTelephony::EStatusActive )
+          {} // The call barring condition is active; 
+             // all outgoing calls are barred.
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetCallBarringStatusCancel);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2364CAB0-E19E-5EBB-837F-F6484642C2E4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2364CAB0-E19E-5EBB-837F-F6484642C2E4" xml:lang="en"><title>Headers</title><shortdesc>A header forms the anchor point for a singly linked list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A header forms the anchor point for a singly linked list. In common with
+the elements of the list, the header includes <i>link</i> objects as components.</p>
+<p>The header includes the following functionality:</p>
+<ul>
+<li id="GUID-813BAAF4-F526-5E08-8165-5361D641A097"><p>allows elements to be
+added to the start and end of a singly linked list, but <i>not</i> to the
+middle.</p> </li>
+<li id="GUID-5001CEBA-CCBE-5F6C-B0CD-A15DF0BDB8B9"><p>tests if an element
+is at the start or end of a list.</p> </li>
+<li id="GUID-7E459E1C-2BA8-54D6-9C1C-02AA13C8A77A"><p>returns pointers to
+elements at the start or the end of a list.</p> </li>
+<li id="GUID-01A424E1-AFA9-55D1-B61E-DA1DE372F9D0"><p>removes elements from
+the list.</p> </li>
+</ul>
+<p>A header is an instance of the templated class <codeph>TSglQue&lt;class
+T&gt;</codeph>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-236D3822-13C3-5AD8-B0FB-C28732E17CF7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-236D3822-13C3-5AD8-B0FB-C28732E17CF7"><title>What is Root Server and the C32exe Process?</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Root Server manages the process into which all Communications Servers are loaded. The process is called <i>C32exe</i> after the name of the process file <filepath>c32exe.exe</filepath>. The process is also known as <i>C32</i>. </p> <p>Root Server runs as the main thread in the C32exe process. Root Server's role is to manage the threads in the C32exe process. A thread in the Root Server process is known as a Comms Provider Module (CPM). Root Server provides the <xref href="GUID-CB35FDB6-33C2-3724-9BC7-4E8722D507A3.dita"><apiname>RRootServ</apiname></xref> API to allow an application to request Root Server services. Services provided by Root Server include: </p> <ul><li id="GUID-0A85A608-9521-55E1-973F-C2E25B095E53"><p>Set the <xref href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita">MBuf</xref> pool size for the C32exe process. </p> </li> <li id="GUID-0DB54B46-5E77-5BF5-AB2F-A65ADED75573"><p>Creating a Comms Provider Module in the C32exe process </p> </li> <li id="GUID-731E2905-0281-5FB8-A610-610FB8B97F7C"><p>Remove a Comms Provider Module </p> </li> <li id="GUID-4D42B6B8-10E6-59A2-AFD7-0CC91602F448"><p>Bind and unbind Comms Provider Modules </p> </li> <li id="GUID-8F36F176-4660-5467-9913-4908ED148561"><p>Query information about the current Comms Provider Modules </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35"><title>Registering Services</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Services must be registered in the SDP database before they can be found by an SDP Agent query. </p> <section><title>How to register a service in the database</title> <p>After <xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">connecting to the SDP database</xref>, a service record can be created. You do this by supplying the UUID for the service class of the record. As the service class may be a single UUID or a list of UUIDs in the form of a DES, there are two overloaded functions. </p> <p>The steps to register a service are as follows: </p> <ol id="GUID-AFA9213B-869F-5DDB-9572-181F4B058626"><li id="GUID-CD2C1B73-F3C0-5A9E-AA50-7E29B7D9C84E"><p>Create a blank service record object, <xref href="GUID-9DDF886B-1556-30A2-A417-1919BA6D255A.dita"><apiname>TSdpServRecordHandle</apiname></xref>. </p> </li> <li id="GUID-60B2CB64-CAC7-5FF6-88B3-84D32A9C05F5"><p>If the service class attribute should be a single UUID, create and set a <xref href="GUID-FAD6BB78-84B7-335A-9D9C-3ADE7CF0958F.dita"><apiname>TUUID</apiname></xref> object. If the attribute should be a list of UUIDs, create a attribute list object, <xref href="GUID-7AF08589-F6E5-36A1-AD2C-84D3CB877451.dita"><apiname>CSdpAttrValueDES</apiname></xref> or <xref href="GUID-74C4154F-9C20-3C23-86EB-D4B602E79DC1.dita"><apiname>CSdpAttrValueDEA</apiname></xref>, and call <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita#GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD/GUID-F073DB29-EF75-3D5D-A6D9-D7BC9ABFB4C3"><apiname>MSdpElementBuilder::BuildUUIDL()</apiname></xref> repeatedly to add UUIDs to the list. </p> </li> <li id="GUID-BD149ABF-42AD-5B2F-AF55-4FDF317B0D5A"><p>Call <xref href="GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC.dita#GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC/GUID-1B940D59-432C-3460-80E4-09A5CBE0FD49"><apiname>RSdpDatabase::CreateServiceRecordL()</apiname></xref> on an open subsession. On return, the record handle object holds a handle to the service record. </p> </li> </ol> </section> <section><title>Registering a single service class</title> <p>The following example creates a service record with a single service class. </p> <ol id="GUID-41928671-1E4F-56FD-99E1-3F8FCF2343AA"><li id="GUID-B6A06A7A-D068-5929-8E5C-315656738811"><p>Create blank record handle </p> <codeblock id="GUID-B51ED203-67B5-57AB-A29A-E757DF1364AF" xml:space="preserve">// Assumes sdpSession is an open session to the database
+TSdpServRecordHandle recordHandle = 0;</codeblock> </li> <li id="GUID-E1AB9D3B-DDEB-50A0-A92A-B541FD6341C1"><p>Create the service class UUIDs </p> <codeblock id="GUID-298CDC04-2834-5865-81BD-B794CEDE7DCF" xml:space="preserve">TUUID uuid(0x20000);</codeblock> </li> <li id="GUID-1E51A67C-5E03-5CE9-B7C0-F17C1C74CC50"><p>Enter record into the database </p> <codeblock id="GUID-8BB40857-9D30-5197-9C8A-9D65D2785244" xml:space="preserve">sdpSubSession.CreateServiceRecordL(uuid, recordHandle);</codeblock> </li> </ol> </section> <section><title>Registering a service class list</title> <p>The following example creates a service record with a list of service classes. </p> <ol id="GUID-C8474C59-C646-521E-AE94-DF156211002A"><li id="GUID-B435DA33-BC38-5659-9F18-05EE93E6B2C5"><p>Create a blank record handle </p> <codeblock id="GUID-97417E17-47DA-53B8-899A-556B79F7A2A9" xml:space="preserve">TSdpServRecordHandle recordHandle = 0;</codeblock> </li> <li id="GUID-50FA6B1F-101C-523A-966B-FD818EB34BE4"><p>Create a list of service class UUIDs </p> <codeblock id="GUID-EA278AE6-7486-556D-BDBE-DEC42C4C0E23" xml:space="preserve">CSdpAttrValueDES* UUIDlist = CSdpAttrValueDES::NewDESL(NULL);
+CleanupStack::PushL(UUIDlist);
+UUIDlist
+    -&gt;StartListL()
+        -&gt;BuildUUIDL(TUUID(TUint32(0x20002000)))
+        -&gt;BuildUUIDL(TUUID(TUint32(0x11112222), TUint32(0x33334444), 
+                              TUint32(0x55556666), TUint32(0x77778888)))
+        -&gt;BuildUUIDL(TUUID(TUint32(0x40000)))
+    -&gt;EndListL();
+</codeblock> </li> <li id="GUID-3204B6B6-46AD-5C3E-A586-A1494B7C6D0B"><p>Enter record into the database </p> <codeblock id="GUID-558C43FB-FBDE-58BA-87CD-E0900A4EBFB9" xml:space="preserve">sdpSubSession.CreateServiceRecordL(*UUIDlist, recordHandle);
+CleanupStack::PopL(); // UUIDlist</codeblock> </li> </ol> <p><b>Note </b> </p> <p>The examples shows UUIDs of varying length. Both 16- and 32-bit integers may be used, which are assumed to be offsets from the Bluetooth base UUID. </p> </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Database tutorials are shown below: </p> <ol id="GUID-1ADEBB09-347F-53DD-8CD0-355BA707D7BA"><li id="GUID-9B76001A-F7EE-5FC7-8F87-A9B5143AE36A"><p> <xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">Connecting to the service discovery database</xref>  </p> </li> <li id="GUID-E5587A96-B45F-590F-BCA0-4AD46B293C5B"><p> <xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">Handling SDP attributes</xref>  </p> </li> <li id="GUID-82C85B76-5E78-507A-A61A-44B228528063"><p> <b>Registering Services</b> - This document </p> </li> <li id="GUID-DA18FDFD-CDAD-559C-8B7C-F075F9178F03"><p> <xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">Setting service record attributes</xref>  </p> </li> <li id="GUID-196905A6-7D11-535D-87C0-F75C5F686F0A"><p> <xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP Service records and attributes</xref>  </p> </li> </ol> <p>Also refer to the <xref href="GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita">Bluetooth Service Discovery Database overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2382F758-35CF-4378-A5D5-183121E3BF6A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-2382F758-35CF-4378-A5D5-183121E3BF6A" xml:lang="en"><title>Releasing
+the instance</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>When the <codeph>CHWRMLight</codeph> instance is not required
+anymore, it must be released. If some target is still reserved to the client,
+the target is released when the instance is released.</p><p>The following
+code snippet demonstrates how to release the instance created using <codeph>NewLC()</codeph>:</p><codeblock xml:space="preserve">CleanupStack::PopAndDestroy( light );</codeblock><p>The following code snippet demonstrates how to release the instance created
+using <codeph>NewL()</codeph>: </p><codeblock xml:space="preserve">CLightStatusObserver::~CLightStatusObserver()
+    {
+    delete iLight;
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-238D6070-96AC-5D8A-86EA-488C59DF2AE3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-238D6070-96AC-5D8A-86EA-488C59DF2AE3" xml:lang="en"><title>Detecting
+Changes in the Environment</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-829626B3-7A91-4A78-8608-9C9F35C96A5F"><title>Introduction</title> <p>There
+are two classes defined in <filepath>epoc32\include\COEMAIN.H</filepath> that
+enable FEPs to be notified about changes in their environment: <xref href="GUID-2CAC79B0-8BD3-3961-A162-75B004AEE5FC.dita"><apiname>MCoeForegroundObserver</apiname></xref> and <xref href="GUID-E591B7D7-ED56-3CEF-883F-7091D5833731.dita"><apiname>MCoeFocusObserver</apiname></xref>. <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> derives from both of these classes, but does not itself
+implement any of their virtual functions. </p> </section>
+<section id="GUID-357E255E-69AC-4A2C-B098-F1F0353A4F21"><title>Using the MCoeForegroundObserver class</title><p> <xref href="GUID-2CAC79B0-8BD3-3961-A162-75B004AEE5FC.dita"><apiname>MCoeForegroundObserver</apiname></xref> has
+two (pure) virtual functions whose signatures are as follows: </p> <codeblock id="GUID-123B7768-7C63-5398-9285-5F94436D8924" xml:space="preserve">virtual void HandleGainingForeground()=0;
+virtual void HandleLosingForeground()=0;</codeblock> <p>The purpose of this
+class is to enable notification of when the application (in whose thread the
+client of this class is running) goes into the foreground or background. FEPs
+that have a window owning control should include the following code at the
+start of their implementation of <codeph>HandleGainingForeground()</codeph>: </p> <codeblock id="GUID-994FECF5-2EF2-5F29-A0CE-9C3225311812" xml:space="preserve">DrawableWindow()-&gt;MoveToGroup(iCoeEnv-&gt;WsSession().GetFocusWindowGroup());</codeblock> <p>This
+code switches the FEP to the window group that has gained focus. Doing this
+also enables FEPs to work with applications that have more than one window
+group. The <codeph>HandleGainingForeground()</codeph> and <codeph>HandleLosingForeground()</codeph> virtual
+functions might also be of use to a FEP if, for example, it is required to
+be invisible when the application underneath it is in the background. </p></section>
+<section id="GUID-C24BDB34-DBBE-4E7A-B07C-BC3E225683F3"><title>Using the MCoeFocusObserver class</title><p> <xref href="GUID-E591B7D7-ED56-3CEF-883F-7091D5833731.dita"><apiname>MCoeFocusObserver</apiname></xref> has
+two (pure) virtual functions whose signatures are as follows: </p> <codeblock id="GUID-36F6FD47-99F1-57B0-A3E9-4CB866272C09" xml:space="preserve">virtual void HandleChangeInFocus()=0;
+virtual void HandleDestructionOfFocusedItem()=0;</codeblock> <p>The purpose
+of this class is to enable notification of when controls under the FEP gain
+or lose focus. This notification is useful to FEPs that need to know about
+the input capabilities of their target control. See the next section for information
+on input capabilities. </p></section>
+<section id="GUID-5B6859ED-764F-4635-8457-91DDC29FBA7E"><title>Using the TCoeInputCapabilities class</title><p>The public
+parts of <codeph>TCoeInputCapabilities</codeph> (which is defined in <filepath>epoc32\include\COEINPUT.H</filepath>)
+are as follows: </p> <codeblock id="GUID-CF002ADB-2946-5D3A-9749-796D88D3C718" xml:space="preserve">class TCoeInputCapabilities
+    {
+public:
+    enum
+        {
+        ENone=0,
+        EWesternNumericIntegerPositive=0x00000001,
+        EWesternNumericIntegerNegative=0x00000002,
+        EWesternNumericReal=0x00000004,
+        EWesternAlphabetic=0x00000008,
+        EJapaneseHiragana=0x00000010,
+        EJapaneseKatakanaHalfWidth=0x00000020,
+        EJapaneseKatakanaFullWidth=0x00000040,
+        EDialableCharacters=0x00000080,
+        ESecretText=0x00000100,
+        EAllText=0x01000000,
+        ENavigation=0x02000000
+        };
+    class MCoeFepSpecificExtensions; // to be defined by concrete FEPs, declared here
+public:
+    IMPORT_C TCoeInputCapabilities(TUint aCapabilities);
+    IMPORT_C TCoeInputCapabilities(TUint aCapabilities, MCoeFepAwareTextEditor* aFepAwareTextEditor, MCoeCaptionRetrieverForFep* aCaptionRetrieverForFep);
+    IMPORT_C TCoeInputCapabilities(TUint aCapabilities, MCoeFepAwareTextEditor* aFepAwareTextEditor,  MCoeCaptionRetrieverForFep* aCaptionRetrieverForFep,  TUid aFepUid, MCoeFepSpecificExtensions* aFepSpecificExtensions);
+    IMPORT_C TCoeInputCapabilities(const TCoeInputCapabilities&amp; aAnother);
+    IMPORT_C TCoeInputCapabilities&amp; operator=(const TCoeInputCapabilities&amp; aAnother);
+    IMPORT_C TBool operator==(const TCoeInputCapabilities&amp; aAnother) const;
+    IMPORT_C TBool operator!=(const TCoeInputCapabilities&amp; aAnother) const;
+    IMPORT_C void MergeWith(const TCoeInputCapabilities&amp; aAnother);
+    IMPORT_C void SetCapabilities(TUint aCapabilities);
+    IMPORT_C TUint Capabilities() const;
+    IMPORT_C TBool IsNone() const;
+    IMPORT_C TBool SupportsWesternNumericIntegerPositive() const;
+    IMPORT_C TBool SupportsWesternNumericIntegerNegative() const;
+    IMPORT_C TBool SupportsWesternNumericReal() const;
+    IMPORT_C TBool SupportsWesternAlphabetic() const;
+    IMPORT_C TBool SupportsJapaneseHiragana() const;
+    IMPORT_C TBool SupportsJapaneseKatakanaHalfWidth() const;
+    IMPORT_C TBool SupportsJapaneseKatakanaFullWidth() const;
+    IMPORT_C TBool SupportsDialableCharacters() const;
+    IMPORT_C TBool SupportsSecretText() const;
+    IMPORT_C TBool SupportsAllText() const;
+    IMPORT_C TBool SupportsNavigation() const;
+    IMPORT_C MCoeFepAwareTextEditor* FepAwareTextEditor() const;
+    IMPORT_C MCoeCaptionRetrieverForFep* CaptionRetrieverForFep() const;
+    IMPORT_C MCoeFepSpecificExtensions* FepSpecificExtensions(TUid aFepUid) const;
+    IMPORT_C MObjectProvider* ObjectProvider() const;
+    IMPORT_C void SetObjectProvider(MObjectProvider* aObjectProvider);
+    };</codeblock> <p>The following code initializes <codeph>inputCapabilities</codeph> to
+the merged input capabilities of all the currently focused controls: </p> <codeblock id="GUID-E82A2E62-B8BF-5D8C-B56C-B67CC4B34CCF" xml:space="preserve">TCoeInputCapabilities inputCapabilities(STATIC_CAST(CCoeAppUi*, iCoeEnv-&gt;AppUi())-&gt;InputCapabilities());</codeblock> <p>The best place for this code is inside the overrides of <xref href="GUID-E591B7D7-ED56-3CEF-883F-7091D5833731.dita"><apiname>MCoeFocusObserver</apiname></xref> ’s
+virtual functions. </p> <p>By calling <xref href="GUID-BB7D0D56-1713-3DC0-BDA0-3CA1F0462BE2.dita"><apiname>TCoeInputCapabilities</apiname></xref>'s
+inquiry functions, the FEP can vary its behaviour according to the input capabilities
+of the target control. The <codeph>Supports</codeph> <i>Xxxxx</i> <codeph>()</codeph> member
+functions indicate what sort of key events should be sent by the FEP to the
+target control. It is important for the FEP to behave appropriately for the
+capabilities of the target control(s). For example, a FEP should not allow
+the user to compose a large amount of text, only to pass it on to a control
+that does not support it. The <codeph>FepAwareTextEditor()</codeph>, <codeph>CaptionRetrieverForFep()</codeph> and <codeph>FepSpecificExtensions()</codeph> member functions return pointers to objects of the interface classes <xref href="GUID-A5D563D6-A99A-31DF-B844-5F94EF5FFE87.dita"><apiname>MCoeFepAwareTextEditor</apiname></xref>, <xref href="GUID-68C16461-68A4-37D2-888E-DD4A6917442A.dita"><apiname>MCoeCaptionRetrieverForFep</apiname></xref> and <xref href="GUID-03D3A775-F899-30F1-8A4F-25D60439C11E.dita"><apiname>MCoeFepSpecificExtensions</apiname></xref> respectively. In each case,
+a NULL return value indicates that the interface is not supported by any of
+the currently focused controls. </p> <p> <xref href="GUID-A5D563D6-A99A-31DF-B844-5F94EF5FFE87.dita"><apiname>MCoeFepAwareTextEditor</apiname></xref> (which
+is defined in <filepath>epoc32\include\FEPBASE.H</filepath>) is an important
+and complex class, and is discussed in <xref href="GUID-38679CA2-0066-589C-988F-AC14B7E2F107.dita#GUID-38679CA2-0066-589C-988F-AC14B7E2F107/GUID-9C16757D-DC75-5223-A555-550B8D3C1DB4">Close
+interaction with text editor controls</xref> below. </p> <p> <xref href="GUID-68C16461-68A4-37D2-888E-DD4A6917442A.dita"><apiname>MCoeCaptionRetrieverForFep</apiname></xref>,
+which is also defined in <filepath>epoc32\include\FEPBASE.H</filepath>, has
+a single member function whose signature is as follows: </p> <codeblock id="GUID-AD620A06-25B2-5E2D-B9F0-AB4D7686F96D" xml:space="preserve">virtual void GetCaptionForFep(TDes&amp; aCaption) const=0;</codeblock> <p>This sets <codeph>aCaption</codeph> to the caption of the target control.
+An example of a caption is the non-editable prompt displayed alongside each
+item in a dialog. </p> <p> <xref href="GUID-03D3A775-F899-30F1-8A4F-25D60439C11E.dita"><apiname>MCoeFepSpecificExtensions</apiname></xref> is
+declared in <filepath>epoc32\include\COEINPUT.H</filepath> within the scope
+of the <xref href="GUID-BB7D0D56-1713-3DC0-BDA0-3CA1F0462BE2.dita"><apiname>TCoeInputCapabilities</apiname></xref> class, although it is not
+defined by any component in Symbian OS. It is to be defined by concrete FEPs
+rather than by the FEP architecture. The intention of this is to allow applications
+to communicate specialized input capabilities with a particular FEP that they
+know about. The concrete FEP would define the class in a public header file
+which then can be used by the relevant applications. Note that the <xref href="GUID-BB7D0D56-1713-3DC0-BDA0-3CA1F0462BE2.dita"><apiname>TCoeInputCapabilities</apiname></xref> constructor
+which takes a <xref href="GUID-03D3A775-F899-30F1-8A4F-25D60439C11E.dita"><apiname>MCoeFepSpecificExtensions</apiname></xref> pointer, and also
+the inquiry function returning a <xref href="GUID-03D3A775-F899-30F1-8A4F-25D60439C11E.dita"><apiname>MCoeFepSpecificExtensions</apiname></xref> pointer
+both require the UID of the FEP defining this class to be passed. This is
+to ensure that the FEP and the application are both assuming the same definition
+of the <xref href="GUID-03D3A775-F899-30F1-8A4F-25D60439C11E.dita"><apiname>MCoeFepSpecificExtensions</apiname></xref> class. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2393237A-E60F-5556-8657-B0AA6470225C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2393237A-E60F-5556-8657-B0AA6470225C" xml:lang="en"><title>option</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>option</codeph>  <varname>keyword</varname> <varname>compiler-options</varname> </p>
+<p>Use the <codeph>option</codeph> statement to specify additional compiler
+options. </p>
+<p> <varname>keyword</varname> specifies the compiler. Possible values are <codeph>ARMCC</codeph> for
+ARM RVCT, <codeph>CW</codeph> for CodeWarrior, <codeph>GCC</codeph> for GCC, <codeph>GCCE</codeph> for
+GCCE, and <codeph>MSVC</codeph> for MS Visual C++. </p>
+<example><p>The following statement turns warnings off in CodeWarrior
+builds. </p><codeblock id="GUID-3CFD8D50-4BE0-5EB0-A1E3-FAEEC2F386BF" xml:space="preserve">OPTION CW -w off</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-239AA6F5-30CE-5FF0-9C36-93D39FECE1DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-239AA6F5-30CE-5FF0-9C36-93D39FECE1DD" xml:lang="en"><title>How
+to switch heaps</title><shortdesc>After a call to <codeph>User::SwitchHeap()</codeph>, any new request
+for memory is satisfied from the new heap.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A thread can switch between heaps using <codeph>User::SwitchHeap()</codeph>. </p>
+<p>After a call to this function, any new request for memory is satisfied
+from the new heap.</p>
+<p>When freeing memory, it is <b>extremely important</b> that the current
+heap is the heap from which it was allocated. Trying to free a memory cell
+from a heap when it was allocated from a different heap has undefined consequences.</p>
+<codeblock id="GUID-8265D4CF-CDCE-51EF-AC31-765830961D8E" xml:space="preserve">Thing* mything = new Thing;                // Allocate on current heap
+RHeap* oldHeap = User::SwitchHeap(newHeap);// Change heaps
+...                                        // Use new heap
+User::SwitchHeap(oldHeap);                 // Change to old heap
+delete mything;                            // before deleting.</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575-master.png has changed
Binary file Symbian3/SDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e99444_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7" xml:lang="en"><title>Required
+resource file statements</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>As noted in <xref href="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita">Resource
+file structure</xref>,
+if the <parmname>NAME</parmname> is given, it must be the first statement
+in the resource file.</p>
+<p>After the <parmname>NAME</parmname> statement, resource files must begin
+with the following three <parmname>RESOURCE</parmname> statements: </p>
+<ul>
+<li><p><parmname>RESOURCE RSS_SIGNATURE</parmname></p></li>
+<li><p><parmname>RESOURCE TBUF</parmname></p></li>
+<li><p><parmname>RESOURCE TBUF RESOURCE EIK_APP_INFO</parmname></p>
+</li>
+</ul>
+<section id="GUID-4283E4EE-4553-4684-B19E-E22BA3248A72"><title>RESOURCE RSS_SIGNATURE</title>
+<p>The <parmname>RSS_SIGNATURE</parmname> resource is used to declare the
+version number of the resource file. Leave this blank. The syntax is as follows:</p>
+<codeblock id="GUID-AA3B4D8C-55DA-4328-82D9-42F1A7BD18F6" xml:space="preserve">RESOURCE RSS_SIGNATURE
+{
+signature = value
+}</codeblock>
+<p>where signature is a <parmname>LONG</parmname> value.</p>
+<p>By default the signature is set to 0.</p>
+<p>For an example, see <xref href="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita">helloworldbasic.rss</xref>.</p>
+<p>For more information on RSS_STRUCTURE, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-resource/bafl/BA_RSS_SIGNATUREStruct.html#BA_RSS_SIGNATURE" format="application/java-archive">BA_RSS_SIGNATURE</xref>.</p>
+</section>
+<section id="GUID-CB1C2A65-73EA-4130-923C-AABA2878D93F"><title>RESOURCE TBUF</title>
+<p>The <parmname>TBUF</parmname> resource may be used to declare a file
+name for use by the document class if it is stated that the <parmname>StoreL</parmname> and <parmname>RestoreL</parmname> of
+the document class is called. Otherwise, it may be left blank. The syntax
+is as follows:</p>
+<codeblock id="GUID-79FD4FE0-2D55-4090-B342-FDFA288DC0A5" xml:space="preserve">RESOURCE TBUF
+{
+buf="NAME";
+}</codeblock>
+<p>where <parmname>buf</parmname> is one non-zero terminating string.</p>
+<p>For an example, see <xref href="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita">helloworldbasic.rss</xref>.</p>
+<p>Note that the TBUF structure is declared in <parmname>badef.rh</parmname>,
+which is included in the <parmname>uikon.rh</parmname> file. For more information
+on the TBUF resource, see  <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-resource/bafl/TBUFStruct.html#TBUF" format="application/java-archive"><parmname>TBUF</parmname></xref>.</p>
+</section>
+<section id="GUID-3687D483-9834-401B-B389-6C615B60AB87"><title>RESOURCE EIK_APP_INFO</title>
+<p>The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-resource/uikon/EIK_APP_INFO.html#EIK_APP_INFO" format="application/java-archive"><parmname>EIK_APP_INFO</parmname></xref> resource defines the objects
+used in the application GUI. Note that not all possible objects need to be
+declared. The syntax is as follows:</p>
+<codeblock id="GUID-7930019A-52B6-449F-861C-81EE003A2DB2" xml:space="preserve">RESOURCE EIK_APP_INFO
+{
+menubar = value2;
+cba = value5;
+status_pane = value6;
+}</codeblock>
+<p>where:</p>
+<ul>
+<li><p><parmname>menubar</parmname> defines the menubar resource</p>
+</li>
+<li><p><parmname>cba</parmname> defines the softkeys resource</p>
+</li>
+<li><p><parmname>status_pane</parmname> defines the status pane
+resource</p></li>
+</ul>
+<p>All values refer to resources defined either in the resource file or
+in a generated resource header file (<parmname>.rsg</parmname>) included in
+the resource file. Note that if an element is not defined, then it is not
+used. For example:</p>
+<codeblock id="GUID-52146026-2265-43B2-BD2D-B3589CA7E9A9" xml:space="preserve">RESOURCE EIK_APP_INFO
+{
+menubar=r_name4;
+cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT;
+}</codeblock>
+<p>sets the application to use the menu bar defined by the <parmname>RESOURCE</parmname> statement
+with the name<parmname>r_name4</parmname>, and creates the softkey options <parmname>Options</parmname> and <parmname>Exit</parmname> in
+the control button area. </p>
+<p>For an example, see <xref href="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita">helloworldbasic.rss</xref>.</p>
+<p>For more information on the control button area softkeys provided by
+the Symbian platform, see <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">Precompiled
+resource values available from the Symbian platform</xref>. </p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-23E18D4B-FB09-5BA9-9D31-E4875A0F8955.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-23E18D4B-FB09-5BA9-9D31-E4875A0F8955"><title>How to get system colours for use in text views</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To get system colours for use in text views, use the <xref href="GUID-D62C2BEF-6614-39F8-827A-4014534F8364.dita#GUID-D62C2BEF-6614-39F8-827A-4014534F8364/GUID-868366FB-4FA0-3783-9D68-D091ABB58850"><apiname>MFormParam::SystemColor()</apiname></xref> function.</p> <p>This example implementation of <codeph>SystemColor()</codeph> uses the <xref href="GUID-3919B5BF-E028-3496-8DDD-4D4927B10AF9.dita"><apiname>TLogicalColor</apiname></xref> indices (defined in gulcolor.h), and assumes a <codeph>CColorList* iColor</codeph> member.</p> <codeblock id="GUID-DCD6077A-2674-5647-8914-C0D54B497B50" xml:space="preserve">TRgb CMyFormParam::SystemColor(TUint aColorIndex,TRgb aDefaultColor) const
+ {
+ // handle default indices
+ if (aColorIndex == TLogicalRgb::ESystemForegroundIndex)
+  return iColorList-&gt;Color(EColorWindowText);
+ else if (aColorIndex == TLogicalRgb::ESystemBackgroundIndex)
+  return iColorList-&gt;Color(EColorWindowBackground);
+ // handle indices defined by gulcolor.h
+ aColorIndex--;
+ if (aColorIndex &gt;= 0 &amp;&amp; aColorIndex &lt;= EColorLabelHighlightFullEmphasis)
+  return iColorList-&gt;Color(aColorIndex - 1)
+ else
+  return aDefaultColor;
+ }</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87" xml:lang="en"><title>Relationship
+between window controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a control draws in the window of another control, the position
+is relative to that window. If a control owns a window that is a child of
+another window, that control's position is relative to the parent window;
+however, if that control is a compound control, its child control's coordinates
+are relative to its own parent control window position. Top-level window-owning
+controls are displayed using a position relative to the display. In other
+words, it uses the physical coordinates of the display.</p>
+<p>The following figure illustrates this relationship.</p>
+<fig id="GUID-9D373EB7-096D-4C84-8060-577F33D462EE"><title>Relative positions of three controls where the top-level parent owns
+the window</title><image href="GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e42756_href.png"/></fig>
+<p>Consider three controls, <b>A</b>, <b>B</b>, and <b>C</b> (shown in
+the figure above):</p>
+<ul>
+<li><p><b>A</b> is a top-level control and owns a window</p>
+</li>
+<li><p>Child controls <b>B</b> and <b>C</b> do not create their
+own windows in this example.</p></li>
+<li><p><b>B</b>, a child control of <b>A</b>, does not create a
+window, and it has a child control, <b>C</b>. </p>
+<itemgroup>
+<p><b>B</b>'s window is set calling the <parmname>CCoeControl::SetContainerWindowL(A)</parmname> method
+and <b>C</b>'s window is set with <parmname>CCoeControl::SetContainerWindowL(B)</parmname>.
+Then <b>C</b>'s position (p) is relative to <b>A</b>, since it is the actual
+window owner. <b>A</b>'s position (m) is relative to the display position.</p>
+</itemgroup>
+</li>
+</ul>
+<p>However, if <b>B</b> is a child control of <b>A</b> but also has a window
+of its own, it is a child window of <b>A</b>'s window (as shown in the following
+figure). Then if <b>C</b> is a child of <b>B</b> and sets its window by calling <parmname>CCoeControl::SetContainerWindowL(B)</parmname>,
+the position of <b>C</b> (p') is relative to <b>B</b>'s window.</p>
+<fig id="GUID-5884BDB6-6ED0-4EF6-A64F-3EEAAAEE2FF0"><title>Relative positions of three controls where a child owns a window</title><image href="GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e42859_href.png"/></fig>
+<p>As the example illustrates, a control position depends on the window
+in which it is drawn. Therefore, you need to know the drawing window for each
+control. It is an important issue when designing a UI layout. There are some
+common controls that optionally may have their own window, such as menus,
+dialogs, and scroll bars. The application framework handles drawing these
+controls, as long as the appropriate resources and flags have been set. The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aOwnsWindow%28%29const" format="application/java-archive"><parmname>CCoeControl::OwnsWindow</parmname></xref> call can be used
+to detect whether a control owns a window or not.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2418E86F-BF82-4F2A-A056-5F1D0682C410.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2418E86F-BF82-4F2A-A056-5F1D0682C410" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Stylus pop-up menu API is an SDK API and first released in S60 5th
+Edition.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-243CF1A9-F3CF-5562-8746-1CB392CDB73A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-243CF1A9-F3CF-5562-8746-1CB392CDB73A"><title>List of Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following classes are available as a part of the SIP Codec API: </p> <p> <xref href="GUID-5AE56A31-A7E4-34D1-8F7B-0C5D443E7923.dita"><apiname>CSIPAcceptContactHeader</apiname></xref>, <xref href="GUID-F53FC9DB-9804-367F-B1BE-593B200AF9AC.dita"><apiname>CSIPAcceptEncodingHeader</apiname></xref>, <xref href="GUID-0DD72283-51C7-3105-A9FD-B91E0676FE22.dita"><apiname>CSIPAcceptHeader</apiname></xref>, <xref href="GUID-EDFA0F84-03E3-3E47-BE52-C28F4BB168D7.dita"><apiname>CSIPAcceptLanguageHeader</apiname></xref>, <xref href="GUID-F8BF1190-F5D4-31EF-B060-A1430AA07DAC.dita"><apiname>CSIPAddress</apiname></xref>, <xref href="GUID-10E79E17-0867-3F61-B953-3248C48411B0.dita"><apiname>CSIPAddressHeaderBase</apiname></xref>, <xref href="GUID-DA6DFEA8-F880-3636-8CFF-064323915B88.dita"><apiname>CSIPAllowEventsHeader</apiname></xref>, <xref href="GUID-77CD31ED-14E4-32A9-A9E0-C9E07490950D.dita"><apiname>CSIPAllowHeader</apiname></xref>, <xref href="GUID-D3DD76B0-1B51-3B7F-9DCB-AB67AABEDE16.dita"><apiname>CSIPCallIDHeader</apiname></xref>, <xref href="GUID-80650638-B1B6-3AE5-A914-04ABE64BBD6E.dita"><apiname>CSIPContactHeader</apiname></xref>, <xref href="GUID-EB7F958F-83FC-3BA4-8BB3-8B9FEF4F6556.dita"><apiname>CSIPContentDispositionHeader</apiname></xref>, <xref href="GUID-AA2D2C15-9860-369B-A482-9AFA2459DEAC.dita"><apiname>CSIPContentEncodingHeader</apiname></xref>, <xref href="GUID-F9F9E15E-3E4F-3FBB-865D-FBBF3017C862.dita"><apiname>CSIPContentTypeHeader</apiname></xref>, <xref href="GUID-F1D275B7-98B9-3268-B9AF-242BCB411F6A.dita"><apiname>CSIPCSeqHeader</apiname></xref>, <xref href="GUID-0496BF94-7EE7-3663-A2CF-231D6A722E19.dita"><apiname>CSIPEventHeader</apiname></xref>, <xref href="GUID-411698F5-9555-3552-BADE-8CF9FEF023F1.dita"><apiname>CSIPExpiresHeader</apiname></xref>, <xref href="GUID-5E7AA28B-3A8E-3387-91CB-89B5CA7F6E8B.dita"><apiname>CSIPExtensionHeader</apiname></xref>, <xref href="GUID-AFEC85BE-5971-3043-B9A9-24048346AADE.dita"><apiname>CSIPFromHeader</apiname></xref>, <xref href="GUID-795156A2-522C-3DF1-A50B-8A0B58B01364.dita"><apiname>CSIPFromToHeaderBase</apiname></xref>, <xref href="GUID-024E2C1F-8B6F-316E-BAD5-8B27D81DE859.dita"><apiname>CSIPHeaderBase</apiname></xref>, <xref href="GUID-6B5E267F-467D-3B0C-B10E-6CBEA01D0D02.dita"><apiname>CSIPParameterHeaderBase</apiname></xref>, <xref href="GUID-DAC484F1-37E9-32A8-8FBC-F36725E3908A.dita"><apiname>CSIPPAssociatedURIHeader</apiname></xref>, <xref href="GUID-4AC13A81-4AC8-36BB-80E1-86196937C71C.dita"><apiname>CSIPProxyRequireHeader</apiname></xref>, <xref href="GUID-F82F371F-DEF8-3DBC-B894-1E735CCCD8E8.dita"><apiname>CSIPRAckHeader</apiname></xref>, <xref href="GUID-E9D03606-61ED-3B16-BCE5-E24D3236053D.dita"><apiname>CSIPReferToHeader</apiname></xref>, <xref href="GUID-20494491-FB9B-3B46-83A8-783E01DD884A.dita"><apiname>CSIPReplyToHeader</apiname></xref>, <xref href="GUID-7F975FCE-0FB8-35DE-8FB2-1B4ADD90FD0E.dita"><apiname>CSIPRequireHeader</apiname></xref>, <xref href="GUID-4C26E7CA-B3EB-3227-93A1-DFD874D05EAA.dita"><apiname>CSIPRetryAfterHeader</apiname></xref>, <xref href="GUID-6717F60D-0D2A-380B-98CF-8AF853524688.dita"><apiname>CSIPRouteHeader</apiname></xref>, <xref href="GUID-06B9A8BC-7E81-3E61-B1F1-F536582A8CA6.dita"><apiname>CSIPRouteHeaderBase</apiname></xref>, <xref href="GUID-26FF2689-DE0E-3D89-9194-8173CF962D78.dita"><apiname>CSIPRSeqHeader</apiname></xref>, <xref href="GUID-2D5DB79B-6635-347B-9C5A-77F7D9DA0580.dita"><apiname>CSIPSecurityClientHeader</apiname></xref>, <xref href="GUID-D9A7398F-B004-3DDC-B6E7-56F1AB240331.dita"><apiname>CSIPSecurityHeaderBase</apiname></xref>, <xref href="GUID-55CC6468-1D08-3EFD-872F-E1303830C49C.dita"><apiname>SIPStrings</apiname></xref>, <xref href="GUID-65943653-C8AF-3AF4-91B6-F48F55854B2F.dita"><apiname>CSIPSubscriptionStateHeader</apiname></xref>, <xref href="GUID-4C379AE6-F596-3962-8AE1-D4B468BA4ADD.dita"><apiname>CSIPSupportedHeader</apiname></xref>, <xref href="GUID-3EF19668-E30B-3099-9890-F9E2984BFF1D.dita"><apiname>CSIPTimestampHeader</apiname></xref>, <xref href="GUID-7B5D0432-5C2C-3EFB-B9FA-8B4A0AA68FC0.dita"><apiname>CSIPToHeader</apiname></xref>, <xref href="GUID-373630F1-B111-36EC-A5C5-5504B93A6F2D.dita"><apiname>CSIPTokenHeaderBase</apiname></xref>, <xref href="GUID-0001C4C9-1AFC-36F6-8272-8D8EF2857365.dita"><apiname>CSIPUnsupportedHeader</apiname></xref>, <xref href="GUID-49D348C5-534A-3000-A0F4-BB1FE93F569F.dita"><apiname>CSIPUnsignedIntHeaderBase</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24414E32-94DC-5870-847B-A797C495F756.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24414E32-94DC-5870-847B-A797C495F756" xml:lang="en"><title>SMS
+Settings</title><shortdesc>The global settings that are applied to SMS MTM are known as the
+SMS service settings. Each SMS message entry has its own individual group
+of settings known as SMS message settings. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title> SMS service settings</title> <p>An SMS service entry contains
+the following two types of settings that are handled through member functions
+of <xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref>: </p> <ul>
+<li id="GUID-6C6423F8-22E6-582A-8EAD-FDC64CB07A61"><p>General settings for
+sending and retrieving SMS messages. </p> </li>
+<li id="GUID-C6E0E838-E449-59E2-9BFF-C11506FD594C"><p>Default settings applied
+to new outgoing messages. </p> </li>
+</ul> <p>Clients must use the set of <xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref> member
+functions. SMS settings can hold a configuration for one or more SMS service
+centres. The SMS service centre details are encapsulated in <xref href="GUID-9BD25A7F-4A9E-3469-BA7F-F016E2ED8BFC.dita"><apiname>CSmsServiceCenter</apiname></xref> objects,
+and the functions access these objects. An SMS service is stored as a message
+entry with the characteristics that are be set by the MTM for an SMS service. </p> <p>Settings
+such as reply options, alert on delivery, language indicator and so on are
+set on a new message from the defaults for message settings specified in the
+SMS service. </p> <table id="GUID-78EE4442-6C3E-5988-97A9-4B828A81761B">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Setting</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Add or remove service centre to the list of service centres </p> </entry>
+<entry><p>The SMS service settings maintain a list of service centres. The
+default service centre used to send SMS messages to be set from this list. </p> </entry>
+</row>
+<row>
+<entry><p>Set default service centre </p> </entry>
+<entry><p>The set the default service centre to which SMS messages are sent
+is from the list of service centres. </p> </entry>
+</row>
+<row>
+<entry><p>Delivery scheduling </p> </entry>
+<entry><p>The SMS plug-in supports sending an SMS message at a scheduled time,
+upon request or when other SMS messages are being sent. </p> </entry>
+</row>
+<row>
+<entry><p>Quoted reply </p> </entry>
+<entry><p>A reply message to a received SMS message may contain the body of
+the original message. </p> </entry>
+</row>
+<row>
+<entry><p>Status report handling </p> </entry>
+<entry><p>Received status reports may be stored as an invisible or visible
+message in the global inbox or they may be discarded altogether. Along with
+each of these storage options status reports may be optionally matched to
+the message that they refer to. The message is updated to reflect the delivery
+status. The SMS plug-in may also be configured to not receive the status reports
+at all from the SMS Stack. </p> </entry>
+</row>
+<row>
+<entry><p>Special message handling </p> </entry>
+<entry><p>Received special messages may be stored as an invisible or visible
+message in the global inbox, or they may be discarded altogether. The SMS
+plug-in may also be configured to not receive these messages at all from the
+SMS Stack. </p> </entry>
+</row>
+<row>
+<entry><p>Store service centre information in the Comms database. </p> </entry>
+<entry><p>This option allows the default service centre and the validity period
+to be stored in the Comms database when the SMS service settings are stored
+in the Message Store. </p> </entry>
+</row>
+<row>
+<entry><p>Store bearer information in the Comms database. </p> </entry>
+<entry><p>This option allows the current bearer information to be stored in
+the Comms database when the SMS service settings are stored in the Message
+Store. </p> </entry>
+</row>
+<row>
+<entry><p>Bearer setting </p> </entry>
+<entry><p>The bearer setting allows the selection of the underlying data layer.
+A packet or circuit switch data layer may be either mandated or preferred. </p> </entry>
+</row>
+<row>
+<entry><p>Class 2 folder </p> </entry>
+<entry><p>The location of the class 2 folder is configurable. It may set to
+be the global inbox. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title> SMS message settings</title> <p>Each SMS message has a Message
+Store index entry that can be accessed through <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref>.
+The index entry allows an application quick access to important properties
+of a message. See <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> for detailed information on
+the functions and member variables of that can be set by the SMS MTM. </p> <table id="GUID-68A80135-FBB9-518A-AA71-C546180F7F16">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Setting</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Validity period </p> </entry>
+<entry><p>The message validity period indicates how long a sent message may
+remain in the service centre pending deliver to the recipient. </p> </entry>
+</row>
+<row>
+<entry><p>Duplicate handling </p> </entry>
+<entry><p>Duplicate messages that are received may be rejected. </p> </entry>
+</row>
+<row>
+<entry><p>Delivery report </p> </entry>
+<entry><p>A delivery report may be requested when sending a message. </p> </entry>
+</row>
+<row>
+<entry><p>Reply path </p> </entry>
+<entry><p>Specifies if SMS messages must be sent with the reply path set.
+The reply path is the service centre to which replies to the sent SMS message
+can be sent to. </p> </entry>
+</row>
+<row>
+<entry><p>Message conversion </p> </entry>
+<entry><p>Defines the conversion set which the message must be encoded as
+when sent over the air. The conversion sets are not defined by the SMS plug-in. </p> </entry>
+</row>
+<row>
+<entry><p>Concatenation </p> </entry>
+<entry><p>This setting indicates whether the message can be concatenated into
+more than one SMS PDU. </p> </entry>
+</row>
+<row>
+<entry><p>Character set </p> </entry>
+<entry><p>The character set of the SMS message can be configured. </p> <p>The
+supported char sets are not defined by the SMS plug-in. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-A2408186-1927-45F4-8972-C9273E5135CF.dita"><linktext>SMS     
+           Tutorial</linktext></link>
+<link href="GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita"><linktext>SMS     
+           MTM</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24477051-265A-5FE5-B479-ACB3EE27B825.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24477051-265A-5FE5-B479-ACB3EE27B825" xml:lang="en"><title>Synchronisation
+Techniques</title><shortdesc>Describes the use of <apiname>RThread::Rendezvous()</apiname> to
+synchronize threads.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>There are a number of techniques to synchronize or coordinate the activities
+of your threads with one another: </p>
+<ul>
+<li id="GUID-E5EC8F8C-2129-5750-AFDC-F4B15E3874C9"><p> <xref href="GUID-24477051-265A-5FE5-B479-ACB3EE27B825.dita#GUID-24477051-265A-5FE5-B479-ACB3EE27B825/GUID-68FCE30C-5487-501E-842C-6895717FD636">Thread Rendezvous</xref> </p> </li>
+</ul>
+<section id="GUID-68FCE30C-5487-501E-842C-6895717FD636"><title>Thread Rendezvous</title> <p>The <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-83AADCC6-1AD8-32D8-A6E6-B86B47C97DC2"><apiname>RThread::Rendezvous()</apiname></xref> function
+allows a thread to signal that it has reached a point in its execution. This
+works in a similar way to the <xref href="GUID-77B673ED-F7EE-3D50-88A7-F8FBFCB2D64E.dita"><apiname>Logon()</apiname></xref> function, except
+that <xref href="GUID-77B673ED-F7EE-3D50-88A7-F8FBFCB2D64E.dita"><apiname>Logon()</apiname></xref> signals the termination of a thread, and <xref href="GUID-45C22917-DC6E-3C95-BFE5-B8E9B316D4E3.dita"><apiname>Rendezvous()</apiname></xref> signals
+that a particular point within the thread has been reached. </p> <p>The classic
+use for this function is in a server, where the main thread must wait until
+the initialisation of the server thread has completed before continuing. </p> </section>
+<section id="GUID-7A87E7D5-255B-4626-ADB0-7A8F3F839C3C"><title>Using Rendezvous</title> <p>The following example shows code
+a function creating a thread and then waiting for it to reach a certain point
+before continuing. The code shown here is taken from <filepath>…\examples\base\threadsandprocesses\Rendezvous\</filepath>,
+which you can build and run. </p> <codeblock id="GUID-292F2672-390D-5D14-9615-8894315A1645" xml:space="preserve">      // create threads to wait for
+    RThread thread;
+
+        // indicate completion status
+    TRequestStatus myThreadRendezvousStatus;
+
+        // pass 500 as the parameter to MyThread        
+    TInt r=thread.Create(KMsgMyThreadName, MyThread, KDefaultStackSize, KHeapSize,KHeapSize,(TAny*) 2000000, EOwnerThread); 
+    if (r!=KErrNone)
+        {   
+        console-&gt;Printf(KMsgCreateThreadFailed);
+            return;
+        }
+        // create rendezvous
+    thread.Rendezvous(myThreadRendezvousStatus);
+
+        //EXCECUTE THREAD!
+    console-&gt;Printf(KMsgStartThread);                    
+    thread.Resume();
+
+    User::WaitForRequest(myThreadRendezvousStatus);
+    if(myThreadRendezvousStatus==KErrNone)
+        {
+        console-&gt;Printf(KMsgThreadRendezvousReached);
+        }
+        else
+        {
+        console-&gt;Printf(KMsgSomethingIsWrong);   
+        }   
+        
+    thread.Close();
+    console-&gt;Printf(KMsgEndOfTest);</codeblock> <p>The following function
+is the <codeph>MyThread()</codeph> function created in the previous example.
+The <codeph>MyThread()</codeph> function calls the rendezvous function to
+signal that the rendezvous point has been reached, <codeph>MyThread()</codeph> can
+then continue. </p> <codeblock id="GUID-94F0244E-B3E8-54F0-9BD8-6BB8942BA30F" xml:space="preserve">TInt MyThread(TAny* aParameter)
+    {
+        // simulate some processing
+    User::After((TInt)aParameter);      
+            
+            // signal Rendezvous
+    RThread::Rendezvous(KErrNone);
+    
+        // simulate some processing
+    User::After((TInt)aParameter);      
+    
+    return(KErrNone);
+    }</codeblock> <note><p> <codeph>MyThread()</codeph> can fail before signalling
+the <xref href="GUID-251A11AD-1D92-3F9C-AAEF-3D0FC9728C7E.dita"><apiname>Rendezvous</apiname></xref>, for example, if <codeph>MyThread()</codeph> panics
+with a <codeph>KERN-EXEC 3</codeph>, then the <xref href="GUID-251A11AD-1D92-3F9C-AAEF-3D0FC9728C7E.dita"><apiname>Rendezvous</apiname></xref> completes
+with the reason code <codeph>KErrDied</codeph> or another system wide error
+code other than <codeph>KErrNone</codeph>. </p></note><p>If <xref href="GUID-B3606A64-D3FB-3B92-8675-FBFD57675564.dita"><apiname>MyThread()</apiname></xref> enters
+a never ending loop before the rendezvous is reached, then this situation
+cannot be detected and results in the calling thread waiting indefinitely
+for the rendezvous. This can be avoided by careful programming. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24508C2D-31B9-5CC2-9EB8-F00AD39D8AA0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24508C2D-31B9-5CC2-9EB8-F00AD39D8AA0" xml:lang="en"><title>Notification
+Services Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4AA259E4-5A4F-4E4B-A7DB-B27440D12FF9"><title>Purpose</title> <p>Provides miscellaneous low-level
+services for notifying programs of environment changes and of thread deaths,
+and for putting simple messages on screen. </p> </section>
+<section id="GUID-8EE8F255-609E-4050-8DD1-D4BEE036543B"><title>Description</title> <p>The API has three key concepts: change
+notifier, thread-death notifier, and simple screen output service. </p> <p><b>Change
+notifier</b> </p> <p>The change notifier signals the requesting thread's request
+semaphore when a change in the environment occurs, such as a switch in locale,
+or system time being reset. </p> <p>The change notifier interface is provided
+by <xref href="GUID-1D10173D-17C1-3EA3-923E-6C7017F1F56F.dita"><apiname>RChangeNotifier</apiname></xref>. </p> <p>Note that the Environment Change
+Notifier API provides the same service, wrapped in an active object. </p> <p><b>Thread-death notifier</b> </p> <p>The thread-death notifier signals the
+requesting thread's request semaphore when a specified other thread terminates. </p> <p>The
+thread-death notifier interface is provided by <xref href="GUID-71F198F3-DE2D-3A15-B4E8-EE5B52BA0DDE.dita"><apiname>RUndertaker</apiname></xref>. </p> <p><b>Simple screen output service</b> </p> <p>The simple screen output service
+allows either a single line message or a simple dialog box to be displayed
+on the screen. It is typically used for debug messages. </p> <p>The simple
+screen output service interface is provided by <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita"><apiname>RNotifier</apiname></xref>,
+which also provides access to the UI-specific plug-in notifiers, via the <xref href="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita">Extended Notifier Framework</xref>. </p> </section>
+<section id="GUID-671F40D4-4C90-484E-830B-85AB4E61533D"><title>See also</title> <p> <xref href="GUID-AFE6FB6B-E7FC-50A2-8374-B046AA709EB5.dita">Environment
+Change Notifier Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2458916B-55B2-5E08-A825-4EBDB3503E67.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2458916B-55B2-5E08-A825-4EBDB3503E67"><title>Class types</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Symbian platform uses four general kinds of class, and uses naming conventions to indicate to which kind a class belongs. </p> <p>The kinds are: </p> <ul><li id="GUID-D8338E4A-1EF1-5EFC-88EB-4709663F9A00"><p>value classes, or types, whose name begins with <codeph>T</codeph>. They do not own any external object, either directly (by pointer) or indirectly (by handle). </p> </li> <li id="GUID-04DA916C-7E54-519E-BDAA-70FD40464051"><p>heap-allocated classes, whose name begins with <codeph>C</codeph>. All such classes are derived from class <codeph>CBase</codeph>. </p> </li> <li id="GUID-ACB1D77E-7256-50D1-AFDB-2E9C70EC1662"><p>resource classes, whose name begins with <codeph>R</codeph>. <codeph>R</codeph> objects are handles to a real resource which is maintained elsewhere. </p> </li> <li id="GUID-B97DC80C-5261-5774-A6FF-531595770631"><p>interface classes, whose name begins with <codeph>M</codeph>. They define abstract protocol definitions that are implemented by derived classes. </p> </li> </ul> <p>These types are closely related to the requirements of cleanup support, which is described in more detail in <xref href="GUID-E93E577A-0BDF-5472-B79F-DA60841C30CC.dita">Cleanup requirements</xref>. </p> <section id="GUID-A2117C25-ED3E-59E9-AAFA-B057837130B7"><title>Value types: T classes</title> <p>The most fundamental types are value types. These are given type, or class, names beginning with <codeph>T</codeph>. </p> <ul><li id="GUID-6D34C2A2-FEA1-5E9F-9CBD-0E85DDB764B9"><p> <codeph>T</codeph> types contain their value. They do not own any external object, either directly (by pointer) or indirectly (by handle). </p> </li> <li id="GUID-A7A8D552-929D-50D1-83F0-19D92852C144"><p> <codeph>T</codeph> types may be allocated either on the stack (C++ automatic variables) or as members of other classes. </p> </li> </ul> <p>The consequences of these fundamental characteristics are explored below. </p> <p><b>Constructor</b> </p> <p>Many <codeph>T</codeph> types are simple enough not to need a constructor. Those that do, use the constructor to initialise member data. </p> <p><b>Copy constructor and assignment operator</b> </p> <p>A copy constructor (<codeph>TX(const TX&amp;)</codeph>) or assignment operator (<codeph>TX&amp; operator=(const TX&amp;)</codeph>) are rarely needed. This is because copying is always shallow, and almost always involves only a memberwise copy of the source <codeph>T</codeph> object to the destination. This is the default behaviour for the compiler-generated C++ copy constructor and assignment operator. </p> <p>These functions may be needed if the <codeph>T</codeph> class is a templated class, parameterised by an integer length, which is also contained as a member of the class. Then, copying or assigning a <codeph>TX&lt;32&gt;</codeph> to a <codeph>TX&lt;40&gt;</codeph> would require more sophistication than a bitwise copy, so a copy constructor and assignment operator would have to be explicitly coded. </p> <p><b>Destructor</b> </p> <p> <codeph>T</codeph> types have no C++ destructor. None is needed, because no external resources need to be cleaned up when a <codeph>T</codeph> object goes out of scope. </p> <p><b>Orphaning</b> </p> <p> <codeph>T</codeph> types may safely be orphaned on the stack. Orphaning implies that the memory is deallocated without calling the destructor. Because <codeph>T</codeph> types do not own external resources, no external resources can become inaccessible when a <codeph>T</codeph> object is orphaned. </p> <p><b>Function arguments</b> </p> <p> <codeph>T</codeph> types may be passed by value, as well as by reference, in function arguments. </p> <p><b>Data members</b> </p> <p> <codeph>T</codeph> types may contain other <codeph>T</codeph> type objects. In addition, they may contain <codeph>R</codeph> objects, or pointers to <codeph>C</codeph> objects, provided these objects are owned by another class or function, which is responsible for these objects’ cleanup. In practice, this rarely occurs. </p> <p><b>Built-in C++ types</b> </p> <p>All built-in C++ types satisfy the criteria for <codeph>T</codeph> classes. Built-in types are given <codeph>typedef</codeph> names beginning with <codeph>T</codeph>, e.g. <codeph>TInt</codeph>. </p> </section> <section id="GUID-D959B368-F735-5885-9D1F-1FB9B6B52810"><title>Standard class hierarchy: C classes and class CBase</title> <p>Most classes that are not <codeph>T</codeph> classes are <codeph>C</codeph> classes, which are derived, directly or indirectly, from class <codeph>CBase</codeph>. </p> <p> <codeph>CBase</codeph> -derived classes have the following properties: </p> <ul><li id="GUID-6C85FF48-ED87-577C-8F6E-A3DF2F2BF2C1"><p>they are allocated on the heap not on the stack, and not as members of other classes </p> </li> <li id="GUID-C38F15C6-BB1F-594B-880E-E91F6B2B5F6B"><p>the allocator used for this class hierarchy initialises all member data to binary zeroes </p> </li> <li id="GUID-6D320CFE-5146-5729-81BC-177A1D72AD8D"><p>they are passed by pointer, or reference, and so do not need an explicit copy constructor or assignment operator unless there is clear intention that a particular class support copying </p> </li> <li id="GUID-92936C23-C4A4-5526-85B5-72B16EDD8D85"><p>they have non-trivial construction and, because of the possibility that a leave might occur during the construction process, a two-phase construction protocol is used, in which the C++ constructor is only used for aspects of construction which cannot leave, and a <codeph>ConstructL()</codeph> function is used for aspects of construction which might leave </p> </li> <li id="GUID-8AB4B4B3-2BD6-5468-800A-FEC53CA269CC"><p>they have a virtual destructor, which is used for standard cleanup processing </p> </li> <li id="GUID-ED392BD1-22F4-5724-B2EE-A4CCEFD15E2F"><p>because of the virtual destructor, it is simple to support cleanup of <codeph>C</codeph> objects using the cleanup stack; additionally, because <codeph>C</codeph> objects are allocated on the heap, they <i>must</i> be cleaned up if a leave occurs: this imposes a requirement for cleanup consciousness when dealing with all <codeph>C</codeph> classes </p> </li> </ul> <p>The requirements of <codeph>C</codeph> classes are documented in <xref href="GUID-5EBA3C03-2E4E-5DBA-BB5B-0D40DAB3C39B.dita">Two Phase Construction</xref>. </p> </section> <section id="GUID-313E6618-D75E-56DE-952C-C8F78116360A"><title>Resource types: R classes</title> <p> <codeph>R</codeph> classes are proxies for objects owned elsewhere. There are two main motivations for this: </p> <ul><li id="GUID-2D062038-0D0C-5621-B8C4-F048DA2494A8"><p>the real object is owned by a server in a different thread or address space, or </p> </li> <li id="GUID-9FD2364F-E438-58D1-A149-CCE40B0FD925"><p>the real object’s implementation must be hidden from the client </p> </li> </ul> <p>The following are key characteristics of <codeph>R</codeph> objects: </p> <ul><li id="GUID-4F15304D-68BB-5D44-8368-739A94E0FE79"><p>they contain a handle that is used to pass on requests to other objects </p> </li> <li id="GUID-5EA19A65-928E-5182-8420-34DF63CC9AAC"><p>they are opened using an "open" function particular to the <codeph>R</codeph> class, and closed using a "close" function particular to the class. An <codeph>R</codeph> object must be closed once if it has been opened. Generally, the resource associated with an <codeph>R</codeph> object is closed automatically if the thread which opened the object terminates. </p> </li> <li id="GUID-C44F1410-5B08-5BE4-95F3-BCB83A25F847"><p>they may be freely bitwise copied </p> </li> <li id="GUID-52691656-81E8-5649-A9CA-86DE175D45AD"><p>they have no explicit constructor, destructor, copy constructor or assignment operator </p> </li> </ul> <p> <codeph>R</codeph> classes use a variety of protocols to meet these needs: </p> <ul><li id="GUID-EF4E2F44-15BB-5F47-B3BB-B5BC1C1336A1"><p>the nature of the handle may differ from <codeph>R</codeph> class to <codeph>R</codeph> class </p> </li> <li id="GUID-1C83B717-29EE-5AFA-9051-DF75BA12A425"><p>there is no common base class for all <codeph>R</codeph> classes </p> </li> <li id="GUID-9B8AA46E-0441-5F75-A7E6-63A8C1A7967E"><p>the initialisation function has a variety of names: also possible are <codeph>Open()</codeph>, <codeph>Create()</codeph>, <codeph>Allocate()</codeph>, etc. </p> </li> <li id="GUID-098D9747-C0BD-5866-B43F-B930100D1D46"><p>the termination function has a variety of names: also possible are <codeph>Close()</codeph>, <codeph>Destroy()</codeph>, <codeph>Free()</codeph>, etc. </p> </li> <li id="GUID-60F5ED1D-9D66-5BB2-B232-97AAD4B0DB07"><p>since <codeph>R</codeph> classes own external resources, there is a requirement for cleanup: this is handled in various ways depending on the class </p> </li> </ul> </section> <section><title>Inteface types: M classes</title> <p> <codeph>M</codeph> classes define abstract protocols, or interfaces. Concrete implementations of an interface defined by an <codeph>M</codeph> class are provided by derived protocol provider classes. </p> <p> <codeph>M</codeph> classes have the following restrictions: </p> <ul><li id="GUID-01C1BC0A-3C9F-5D28-8601-817B7180022B"><p>they should contain no member data </p> </li> <li id="GUID-DB75508B-E563-5D16-9687-2759E212BC5B"><p>they should not contain constructors or destructors, or overloaded operators such as <codeph>=</codeph>  </p> </li> </ul> <p> <codeph>M</codeph> classes often contain pure virtual functions that define a fully abstract interface. Some <codeph>M</codeph> classes implement some or all member functions, though within the restrictions given above. </p> <p> <codeph>M</codeph> classes are the only use of multiple inheritance on the Symbian platform. For details of this, see <xref href="GUID-9E0DCB19-5775-5E23-B758-163D747A71C9.dita">Multiple inheritance and interfaces</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912-master.png has changed
Binary file Symbian3/SDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e195225_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e171376_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e190953_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24860917-0FE2-5C8F-B436-96928350996E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24860917-0FE2-5C8F-B436-96928350996E" xml:lang="en"><title>Bearer
+Mobility Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Bearer mobility allows the email Message Type Modules (MTM) to non-seamlessly
+switch between networking bearers, such as, GPRS, WiFi, CDMA, GSM, and so
+on. Switching between network bearers enables destination networks to connect
+without dropping the connection with the remote server. </p>
+<p>The POP3, IMAP4 and SMTP email server MTMs support this functionality. </p>
+<section id="GUID-973000BE-9CE1-526D-ACC4-EA0ECFF3D93E"><title>Description</title> <p>The
+bearer mobility must be enabled in the Networking bearer mobility framework
+to provide bearer mobility functionality in the Messaging Application module. </p> <p>After
+the bearer mobility is set for the email server MTMs at the client-side using
+the <xref href="GUID-7E4A95AA-1614-3058-B08C-B81878C37489.dita"><apiname>SetBearerMobility</apiname></xref> function, the bearer mobility manager
+registers with the bearer mobility framework in the Networking subsystem.
+This informs the bearer mobility manager about any change in the bearers. </p> <p>The
+bearer mobility plug-in gets the notifications about the change in the bearer.
+When the required bearer is available, the server MTMs uses this plug-in to
+get notifications. The following illustration shows the architecture of the
+bearer mobility implementation in the Messaging Application module. </p> <fig id="GUID-3C8EB55A-9740-5249-8E82-1E6CD0B47F01">
+<title>              Architecture of Bearer Mobility            </title>
+<image href="GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e248943_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Settings</title> <p>The email client MTM <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> interfaces
+are enhanced to configure the email account settings. These settings modify
+the behaviour of the relevant server MTMs for the following functionality: </p> <p><b>Non-seamless
+bearer mobility</b> </p> <p>The IMAP4, POP3, and SMTP server MTMs are extended
+to allow messaging applications to use the non-seamless network bearer mobility
+when connecting to a destination network using the respective protocols. The
+following functions are added to the <xref href="GUID-3EDD3DFA-AE8A-3941-960A-8BD2733E74C3.dita"><apiname>CImBaseEmailSettings</apiname></xref> (<xref href="GUID-6A7DFCF7-7268-3013-A5B6-5B77B6233329.dita"><apiname>CImPop3Settings</apiname></xref>, <xref href="GUID-55F11633-988C-39D5-ADE7-23C4966FD995.dita"><apiname>CImImap4Settings</apiname></xref>, and <xref href="GUID-DFE18962-0022-3833-A8F0-6E4C969177C0.dita"><apiname>CImSmtpSettings</apiname></xref>) class: </p> <ul>
+<li id="GUID-2ED9D4E8-83F0-5264-88A0-3FC26A2DE9ED"><p> <xref href="GUID-7E4A95AA-1614-3058-B08C-B81878C37489.dita"><apiname>SetBearerMobility</apiname></xref>  </p> </li>
+<li id="GUID-5653C643-85E3-57BD-ABF8-259AC244E52A"><p> <xref href="GUID-D3E8B8A1-1E78-369E-B09A-E4C6CDACED8A.dita"><apiname>BearerMobility()</apiname></xref>  </p> </li>
+</ul> <p id="GUID-CC4028E7-ECD9-5045-9057-5BC687C3DF3A"><b>Per bearer-type
+configuration for IMAP email accounts</b> </p> <p>Specifically for IMAP email
+accounts, the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class enables the following
+per bearer-type configuration that affect the behaviour of IMAP accounts: </p> <ul>
+<li id="GUID-EA24F6E4-D656-5053-996E-F75D645F318D"><p> <b>Download rules</b>  </p> <p>Download
+rules specify which parts of message to automatically download (according
+to bearer type) when synchronising the contents of an IMAP email account.
+You can configure an IMAP email account for IMAP download rules on each bearer
+type and for each account using the <xref href="GUID-1838902F-9077-36D8-AD22-5E36E0AFD51D.dita"><apiname>CImapSyncDownloadRules</apiname></xref> class. </p> <p>When
+synchronising an IMAP email account you can do the following: </p> <ul>
+<li id="GUID-B69ADD91-E4FC-57F1-8713-E1FD3539C16D"><p>Indicate that a list
+of email download rules for each type of bearer must be used during the email
+account synchronisations. </p> </li>
+<li id="GUID-D5518521-4D23-53A1-A3B0-2925CB6DEC7A"><p>Retrieve emails during
+the synchronisation using the mail options specified in the list for the bearer
+type that is currently in use by the connection to the server. </p> </li>
+</ul> <p>The <xref href="GUID-1838902F-9077-36D8-AD22-5E36E0AFD51D.dita"><apiname>CImapSyncDownloadRules</apiname></xref> class is used to store
+per IMAP account sync download rules. This class describes the download rules
+that provide the ability to automatically get the email content. This is configurable
+on a per account and per bearer-type basis. </p><ul>
+<li id="GUID-65E160D0-F45C-5B98-A11A-3EB1919EBF1B"><p>Different download rules
+can be specified for different bearers. For example, you can specify that
+all text and attachments should be retrieved when connecting through a WiFi
+connection; whereas, only text parts should be retrieved when connecting over
+GPRS connection. </p> </li>
+<li id="GUID-8A4F7179-3E5A-5833-A12D-5E95EE927CA0"><p>Synchronisation is performed
+in two stages: the email header synchronisation is performed first followed
+by the email content retrieval. If the email account settings indicate that
+the per-bearer-type list should not be used, or no per-bearer-type list is
+defined, or the current bearer type is not listed in the per-bearer-type list,
+then during the synchronisation the email headers for inbox and personal folders
+are downloaded. </p> <p> <b>Note:</b> The per-bearer-type list is a set of
+IMAP download and transport buffer size rules defined for each type of bearer. </p> </li>
+<li id="GUID-692023AF-B834-584F-BD2F-78CFEF6A1D98"><p>Messages that are not
+previously populated are retrieved using this method. So a message that has
+been populated according to GPRS settings will not be retrieved again according
+to WiFi settings, if a subsequent connection is made. </p> </li>
+<li id="GUID-DF7A0844-5A4E-5BB0-B5CF-329171E0E185"><p>Messages that arrive
+on the server while IMAP is in the <codeph>IDLE</codeph> state are also automatically
+downloaded according to the Inbox download rules for the connected bearer
+type. </p> </li>
+<li id="GUID-694C4DDD-1579-5142-909B-9AB76BD8BBA9"><p>A single instance of
+a set of download rules is applicable to multiple bearer types. </p> </li>
+</ul> </li>
+<li id="GUID-41D6D5F0-D9AF-5AAB-B45B-F69D62DA8DBA"><p> <b>Transport buffer
+size</b>  </p> <p>Transport buffer size specifies the size of the data transferred
+from server to client to get email body and attachments from an IMAP server
+using a per bearer-type list of transport buffer sizes. You can configure
+an IMAP account for IMAP transport buffer size on each bearer type using the <xref href="GUID-1CB521CD-BD46-37BE-B2BB-4817DFF73D73.dita"><apiname>CImapTransportBufferSizes</apiname></xref> class. </p><note> The
+per-bearer-type list is a set of IMAP download and transport buffer size rules
+defined for each type of bearer. </note> <p>This class allows a client to
+configure transport buffer sizes of IMAP accounts according to the bearer
+type for retrieving large message parts. It is possible to specify in the
+following: </p> <ul>
+<li id="GUID-9A27E24F-53E9-5962-A89E-4913B0BBF1CB"><p>Maximum retrieve size.
+Default is 20480 octets. </p> </li>
+<li id="GUID-751BA805-0E64-5B8A-AEA2-D814CE5355D1"><p>Maximum outstanding
+retrieve requests. Default is two outstanding requests. </p> </li>
+</ul> <p> <b>Important considerations</b>  </p> <ul>
+<li id="GUID-2EDE94E1-8AC0-5AAA-A46A-D0317FF8874F"><p>If there are is no bearer
+type specific list defined, or the current bearer type is not listed in the
+per-bearer-type list of transport buffer sizes, then the maximum retrieve
+request size specified in the email account settings is used. The maximum
+and default number of outstanding retrieve requests is two. </p> </li>
+<li id="GUID-4BBAAD4D-CA00-5E42-922C-D2456DD21212"><p>The transport buffer
+sizes that can be specified are the maximum retrieve request size sent in
+IMAP retrieve requests. </p> </li>
+<li id="GUID-574B5003-E293-5ED2-932E-0F78188F2348"><p>Download email body
+and attachments from an IMAP server using the retrieve request buffer size
+specific to the bearer type that the server connection is using. </p> </li>
+<li id="GUID-DCA1350E-9C6B-56F0-AF70-2A5C91C9149B"><p>Download email body
+and attachments from an IMAP server using the maximum number of outstanding
+retrieve requests specific to the bearer type that the server connection is
+using. </p> </li>
+<li id="GUID-DC672952-3FE1-5D72-8C6B-716FBF000222"><p>A single instance of
+a set of transport buffer sizes is applicable to multiple bearer types. </p> </li>
+</ul> </li>
+</ul> <p><b>Bearer mobility policy plug-in</b> </p> <p>The bearer mobility
+policy plug-in enables you to customise the migration behaviour of email accounts,
+the bearer mobility policy plug-in is provided. It consists of an ECOM interface
+class (<xref href="GUID-D3ED20A6-A16E-368E-98AD-820A469613EE.dita"><apiname>CImMobilityPolicyPlugin</apiname></xref>) and a call-back class (<xref href="GUID-73ABAC20-D43E-31B3-A6CB-95572D3140D2.dita"><apiname>MImMobilityPolicyHandler</apiname></xref>),which
+allows the plug-in to issue policy decisions on an individual mobility events. </p> </section>
+<section id="GUID-24BF7108-9229-5F0D-A3B0-27A8E419ABFF"><title>Important considerations</title> <ul>
+<li id="GUID-F200A31C-6293-586A-AA4B-A9E052520DEE"><p>To enable bearer mobility,
+you must first enable it at the Networking bearer mobility framework. </p> </li>
+<li id="GUID-AF2642E1-8B84-505B-BFCC-C093DDF17ACE"><p>Bearer mobility is possible
+only on the connections that are established using a SNAP preference list. </p> </li>
+<li id="GUID-B9D2EF4B-EA15-5574-8DC1-2892349636D4"><p>To use the bearer mobility,
+you must configure the email account settings to specify the SNAP preference
+when creating the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> notification (events). </p> </li>
+<li id="GUID-84593BD5-376E-5302-8C9D-FBBBCB04BECD"><p>Multiple SNAP preferences
+for each service entry is not supported. </p> </li>
+<li id="GUID-BD5A6C40-B77A-5BBF-BB29-758391652A4B"><p>It is not possible to
+specify both IAPs and a SNAP for a single email account. The API for setting
+a SNAP preference clears any provisioned IAPs. Likewise, the API for setting
+IAPs are updated to clear any SNAP preference that is set. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-EBFE8B29-86AD-5785-8041-BCED2E90472E.dita"><linktext>SNAP Preferences</linktext>
+</link>
+<link href="GUID-786984BD-ADE8-5EF1-A819-F402F5703A80.dita"><linktext>Configuring
+Non-seamless Bearer Mobility</linktext></link>
+<link href="GUID-43CE4DCB-F498-5878-A2EE-7831BBB4D288.dita"><linktext>Configuring
+TLS or SSL Socket</linktext></link>
+<link href="GUID-A602A5BA-6C1F-5D8A-A6E7-50DECA1C64CC.dita"><linktext>SMTP Account
+Override Settings</linktext></link>
+<link href="GUID-75B1B1DF-4EC2-59BC-8BE0-A8AD681798C5.dita"><linktext>IMAP Account
+Settings</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2488FA07-BCAB-55DC-8724-C1C3C0DEC0AD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2488FA07-BCAB-55DC-8724-C1C3C0DEC0AD"><title>Internalising</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The process of internalising an object involves internalising its data from a stream. </p> <p>For a class instance, this involves internalising each of its data members and components from a stream in the same order that they were originally externalised. This process is encapsulated by the <codeph>InternalizeL()</codeph> member function of the class.</p> <p>A class always defines <codeph>InternalizeL()</codeph> as:</p> <codeblock id="GUID-D35F2448-0283-56CA-81CB-EEBD2666D3C3" xml:space="preserve">void InternalizeL(RReadStream&amp; aStream);</codeblock> <p>and uses the read stream interface class, <codeph>RReadStream</codeph>.</p> <p>Note that <codeph>InternalizeL()</codeph> is not virtual and there is no implication that a class that requires an <codeph>InternalizeL()</codeph> function must be derived from any particular base class.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-248D480D-2406-5FFD-8E3B-09CA67D1BE69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-248D480D-2406-5FFD-8E3B-09CA67D1BE69"><title>Colors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>All colors are specified in terms of a 24-bit color value, represented by the class <codeph>TRgb</codeph>. This 24 bit value is mapped down to device-level values by the graphics device or printer driver. </p> <p>Note that: </p> <ul><li id="GUID-F34D5AC8-75C4-5925-9DC5-FBC2C18DCDD5"><p>Colors can be specified logically (for example the window background color), as well as physically. The UI Graphics Utilities API contains a list of logical Colors (<codeph>TLogicalColor</codeph>) and provides the means to convert them into RGB values. </p> </li> <li id="GUID-C0A41D47-C159-5318-9C75-710F92FB29C7"><p>The window server defines display modes that represent color resolutions. In each display mode, as enumerated by <codeph>TDisplayMode</codeph>, a unique index can represent each physical color supported. <codeph>TRgb</codeph> can map such indices onto a full RGB value. </p> </li> </ul> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24A149FA-B82A-53A2-83E6-4F625D7041D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-24A149FA-B82A-53A2-83E6-4F625D7041D7"><title>Error codes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Store database makes full use of file store functionality, and any errors produced by <codeph>CPermanentFileStore</codeph>, its stream objects and particularly the underlying file system may be returned by a DBMS function where indicated. Also many of the functions require memory to be dynamically allocated, and so can fail with <codeph>KErrNoMemory</codeph>.</p> <p>The errors returned by DBMS functions are mostly documented with those functions. There are a few general errors which can be returned by most of the API to indicate certain states that the database or rowsets have encountered.</p> <ul><li id="GUID-27B4049F-3F3D-5B86-89B7-33BE8FEDA6C0"><p><codeph>KErrAccessDenied</codeph> - The database cannot mix data definition and data manipulation, or combine them in a single transaction. i.e.</p> <ul><li id="GUID-838469A1-5415-53C4-A4ED-03D538AEFC54"><p>A rowset or data manipulation transaction is open on the database when attempting data definition or recovery.</p> </li> <li id="GUID-B29C8C26-298D-50F4-BAA5-425B46B85A89"><p> A data definition transaction is still open when attempting to create a rowset. </p> </li> <li id="GUID-91184D4A-1BCD-531F-914C-5756C4F08A2D"><p>Any incremental operation is open on the database.</p> </li> </ul> <p><codeph> KErrDied</codeph> - A transaction has been aborted, because an update or commit failed. In this state, the database and all associated rowsets become unusable. In this situation, all rowsets which are currently updating or inserting a row must be cancelled, and, if the transaction was begun explicitly, it must be rolled back. The database is now ready for use again.</p> </li> <li id="GUID-DFD729AD-B8EC-5A4A-962D-DBCC87C4C261"><p><codeph>KErrNotReady</codeph> - This is returned by all rowsets following a rollback on the database. The rowset is invalid and must at least be reset and re-evaluated if necessary, but can be closed and re-opened if preferred.</p> </li> <li id="GUID-EE40A750-1B31-5F2B-A33E-341F1DD9F2A8"><p><codeph>KErrCorrupt</codeph> - This is returned when an attempt is made to use an index which has been damaged due to a rollback. Rowsets which were using such an index fail on the first attempt to navigate their cursor. The database continues to be operational, but must be recovered to regain use of damaged indexes.</p> <p>This can also be returned in the unlikely event that corruption is detected in any of the streams which make up the database. Such damage cannot have been caused by DBMS itself, and cannot be repaired.</p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e114448_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431" xml:lang="en"><title>How
+to form links</title><shortdesc>To be an element of a list, each element needs to contain a link
+object.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To form a singly linked list of <codeph>CMyClass</codeph> objects, include
+the link object <codeph>TSglQueLink</codeph> as a component of <codeph>CMyClass</codeph>:</p>
+<codeblock id="GUID-C4ED06AA-9187-5EE6-96C5-39F41C218437" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TSglQueLink iSlink;
+    ...
+    };</codeblock>
+<fig id="GUID-C1BDFB57-AAD9-55A2-8E02-D9277BCCE122">
+<title>Two elements in a linked list</title>
+<image href="GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e189606_href.png" placement="inline"/>
+</fig>
+<p>Although any kind of object can be an element of a linked list, most lists
+consist of elements which are all of the same type.</p>
+<p>An object can participate in more than one list. For example, to allow <codeph>CMyClass</codeph> objects
+to participate in two singly linked lists, include two separate <codeph>TSglQueLink</codeph> objects
+as components of <codeph>CMyClass</codeph>:</p>
+<codeblock id="GUID-A16512BF-ACB8-5E7E-B4B1-FD76208E0FBD" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TSglQueLink iSlink1;
+    ...
+    TSglQueLink iSlink2;
+    };</codeblock>
+<fig id="GUID-AA2CB21D-B848-5ADF-8B0E-7E2928C84DBE">
+<title>An example of two elements, in two lists where they are consecutive
+elements in both lists</title>
+<image href="GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e189632_href.png" placement="inline"/>
+</fig>
+<p>Elements can also be objects constructed from a variety of classes, all
+ultimately derived from the same base class, where that base class includes
+the link object as a component. For example, if <codeph>CBc</codeph> is a
+base class for <codeph>CDc1</codeph> which, in turn, is a base class for <codeph>CDc2</codeph>,
+then the elements of the list can consist of a mix of <codeph>CBc</codeph> or <codeph>CDc1</codeph> or <codeph>CDc2</codeph> objects.</p>
+<codeblock id="GUID-A4624B83-5DF4-5923-A3C4-4C67E6FCF47C" xml:space="preserve">class CBc : public CBase
+    {
+    ...
+    TSglQueLink iSlink;
+    ...
+    };</codeblock>
+<codeblock id="GUID-2139FC00-2ADF-5E70-9293-93D347DAF41A" xml:space="preserve">class CDc1 : public CBclass
+    {
+    ...
+    }
+</codeblock>
+<codeblock id="GUID-4A170483-64BF-559A-B2B1-6F31F8A7F82B" xml:space="preserve">class CDc2 : public CDc1
+    {
+    ...
+    }
+</codeblock>
+<fig id="GUID-408F856C-86C0-5ED2-A61D-2F81B41566DD">
+<title>Example of a linked list of different element types</title>
+<image href="GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e189670_href.png" placement="inline"/>
+</fig>
+<p>Note that the link object is at the same offset in each element in this
+list.</p>
+<p>New link elements can be inserted at the beginning or the end of the list,
+but not into the middle of the list. The functionality for this is provided
+by the header <codeph>TSglQue&lt;class T&gt;</codeph>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24D509E8-CF46-58D3-85E9-27DA7AB22012.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-24D509E8-CF46-58D3-85E9-27DA7AB22012" xml:lang="en"><title>Constructing
+a Static String Table</title><shortdesc>A static string table can be built in any <codeph>.mmp</codeph> file;
+the most common use is as part of building an application.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-522E1898-F5A8-522F-BFC1-6FF4D7547B71">
+<step id="GUID-E113FD8F-BAA7-5E8E-9A26-297151674B89"><cmd/>
+<info>Add the following lines to the <codeph>.mmp</codeph> file: </info>
+<stepxmp><codeblock id="GUID-C24ECE5F-06A6-5555-8DAE-9D495B119F03" xml:space="preserve">START STRINGTABLE ExampleStringTable.st
+EXPORTPATH    /epoc32/include
+END</codeblock> </stepxmp>
+<info>This code: <ol>
+<li id="GUID-C5B75902-2B29-4877-A635-CC1ECF66015C"><p>generates the <codeph>.cpp</codeph> file
+and the <codeph>.h</codeph> file </p></li>
+<li id="GUID-238CE0F1-088D-4697-AC97-E559B5FC6F9C"><p>copies the generated <codeph>.h</codeph> file
+to epoc/include </p></li>
+<li id="GUID-9ED42789-193B-4B16-9837-1603D25B4FA4"><p>handles the generated <codeph>.cpp</codeph> file
+as part of the source of the overall executable. </p></li>
+</ol></info>
+</step>
+<step id="GUID-123E3BC4-B651-5E1E-AAAD-4F2D56377D1E"><cmd/>
+<info>Include the following in the <codeph>bld.inf</codeph> file: </info>
+<stepxmp><codeblock id="GUID-595765F3-2AB5-5BAA-91D0-5318EC61DFED" xml:space="preserve">PRJ_MMPFILES
+.\StringTableExample.mmp</codeblock> </stepxmp>
+</step>
+</steps>
+<example><title>Static string table example</title> <p>The following is an
+example <codeph>.mmp</codeph> file, <codeph>StringTableExample.mmp</codeph>: <filepath/>  </p> <codeblock id="GUID-7227206D-F3D6-5A08-9323-B434E32DD3D9" xml:space="preserve">// StringTableExample.MMP
+
+
+TARGET          StringTableExample.exe
+TARGETTYPE      exe
+
+SYSTEMINCLUDE   \epoc32\include
+
+SOURCEPATH .
+SOURCE StringTableExample.cpp
+
+START STRINGTABLE ExampleStringTable.st
+EXPORTPATH    /epoc32/include
+END
+
+LIBRARY EUSER.LIB BAFL.LIB
+VENDORID 0x70000001</codeblock> <p> <b>Note</b>: The previous example <codeph>.mmp</codeph> file
+builds the following <codeph>.cpp</codeph> file that uses the string pool: </p> <codeblock id="GUID-6C97F6E5-0C11-5D47-9C1E-B1D9846E0809" xml:space="preserve">// StringTableExample.cpp
+
+#include "e32base.h"
+#include "e32svr.h"
+#include "StringPool.h"
+#include "ExampleStringTable.h"
+
+void StartL()
+    {
+    TBuf&lt;100&gt; buf;
+    RStringPool pool;
+    pool.OpenL( ExampleStringTable::Table );
+    buf.Copy( pool.StringF( ExampleStringTable::EApple,ExampleStringTable::Table ).DesC() );
+    RDebug::Print( buf );
+    }
+
+// main loop
+//
+GLDEF_C TInt E32Main()
+    {
+    // Install exception handler
+    CTrapCleanup* theCleanup = CTrapCleanup::New(); 
+    TRAPD( err,StartL() );
+    delete theCleanup;
+    return( KErrNone );
+    }</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita"><linktext>String Pools</linktext>
+</link>
+<link href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita"><linktext>Using string
+pool</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C" xml:lang="en"><title>Notes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A note is a feedback component that informs the user about the current
+situation. A note contains a text and possibly a graphical element. The softkey
+labels are typically empty (wait and progress notes are an exception
+to this).</p>
+<section><p/><table id="GUID-62CEFB32-E051-489A-BFE9-C1944FACBFEB">
+<tgroup cols="2"><colspec colname="col2"/><colspec colname="COLSPEC0" colwidth="1.00*"/>
+<tbody>
+<row>
+
+<entry><xref href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita">Confirmation
+note</xref></entry>
+<entry><fig id="GUID-D4384AB5-6C02-43DE-931B-D622CA279188">
+<image href="GUID-6AE6AEA2-7330-433B-9994-3BC2EC5ECD38_d0e60516_href.png" scale="33" placement="inline"/>
+</fig></entry>
+</row>
+<row>
+<entry><xref href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita">Information
+note</xref></entry>
+<entry><fig id="GUID-293B5221-7C7A-427D-9A56-704E6DB4BF3D">
+<image href="GUID-45D4F2D1-A433-4289-A627-D0ECD97489DD_d0e60529_href.png" scale="33" placement="inline"/>
+</fig></entry>
+</row>
+<row>
+<entry><xref href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita">Warning note</xref></entry>
+<entry/>
+</row>
+<row>
+<entry><xref href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita">Error note</xref></entry>
+<entry><fig id="GUID-EAF28005-BB43-4C88-BD62-3076AC32F758">
+<image href="GUID-1EB9BF25-DFF4-42CA-926C-D26409A2868E_d0e60551_href.png" scale="33" placement="inline"/>
+</fig></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita">Permanent
+note</xref></p></entry>
+<entry/>
+</row>
+<row>
+<entry><xref href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita">Wait note</xref></entry>
+<entry><fig id="GUID-B8BB63C8-54BD-429E-8887-0E59743FE2F1">
+<image href="GUID-3637DBF8-BABF-4F84-9A7D-8FF66A118261_d0e60574_href.png" scale="33" placement="inline"/>
+</fig></entry>
+</row>
+<row>
+<entry><xref href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita">Progress note</xref></entry>
+<entry><fig id="GUID-CDA47486-C48A-46D1-BC18-13BD170E974B">
+<image href="GUID-3F69590C-B1FB-4E73-B3D3-FD09C894BC60_d0e60587_href.png" scale="33" placement="inline"/>
+</fig></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24EFD1EC-333C-537C-89FF-A77627D962C3" xml:lang="en"><title>LocaleUpdateExample:
+Using the Locale Functionality</title><shortdesc>This example demonstrates how to get different locale settings
+from the locale DLLs in the system. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-DDFC3596-480B-4918-A60A-E1801BBB1BEA"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-5a60c198-2dac-4ef7-883a-b282bd9a42f9.zip" scope="external">localeupdate.zip</xref>.</p> <p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-5a60c198-2dac-4ef7-883a-b282bd9a42f9.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-72B5059D-9D34-5383-814B-45A1DAD2FC90"><title>Description</title> <p>An
+object of the <xref href="GUID-454ACAB5-1573-323C-820E-AF542B149D2A.dita"><apiname>TExtendedLocale</apiname></xref> class is used to load a number
+of locale DLLs from the system. For each locale DLL, it gets the following
+locale settings: </p> <ul>
+<li id="GUID-F96BD378-38D1-5414-9B8D-4F7449CE29C7"><p>Calendar settings </p> </li>
+<li id="GUID-06311328-53F6-57EA-B09F-E6D6C015E640"><p>Country code </p> </li>
+<li id="GUID-30E90860-AE49-53DE-B50B-3999FEE7F4A2"><p>Collation method </p> </li>
+<li id="GUID-9C94D6B0-5388-5F75-BCC8-E7F6D9969222"><p>Currency format </p> </li>
+<li id="GUID-A02DFDC3-90B7-56A7-BD68-CF841FFA1D9B"><p>Date and time format </p> </li>
+<li id="GUID-541F9EA0-3012-5C88-B35B-4B00F3FF3C72"><p>Numeric value settings </p> </li>
+<li id="GUID-9AC24D0E-93A8-57F4-B622-82863EBBE894"><p>Time zone information </p> </li>
+<li id="GUID-662C9AB4-72A0-5EA5-8813-83A51D0EE981"><p>Units of measurement. </p> </li>
+</ul> <p id="GUID-80E7114C-3BFD-551E-A76D-385AE2657EA0"><b>See also</b> </p> <p><xref href="GUID-C497F36F-BCA8-569D-826A-64EAD75C887C.dita">Locale Settings</xref>  </p> </section>
+<section id="GUID-91B57370-D63E-4635-BE62-A6B86FF1E421"><title>Class summary</title><ul>
+<li><p><xref href="GUID-454ACAB5-1573-323C-820E-AF542B149D2A.dita"><apiname>TExtendedLocale</apiname></xref> - Extended locale class.</p></li>
+<li><p><xref href="GUID-53299759-C2DD-3ABC-A055-9AFE7C5081C6.dita"><apiname>TLocale</apiname></xref> - Sets and gets the system's locale settings.</p></li>
+<li><p><xref href="GUID-BF1B2D81-9EC0-3345-9EFF-27341F1E5CEF.dita"><apiname>TDay</apiname></xref> - Defines the days of the week.</p></li>
+<li><p><xref href="GUID-78C4965C-BFCD-3E7E-8F46-2EE3D1BAF6EC.dita"><apiname>TCollationMethod</apiname></xref> - Defines a collation method.</p></li>
+<li><p><xref href="GUID-FFC6932E-2FFF-315E-975B-9E9A7A8CBF2F.dita"><apiname>TDateFormat</apiname></xref> - Defines the date formats.</p></li>
+<li><p><xref href="GUID-7F61AE3B-579D-32E3-8134-81BFAAD4807E.dita"><apiname>TTimeFormat</apiname></xref> - Defines the time formats as either
+12 hour or 24 hour. </p></li>
+<li><p><xref href="GUID-E13F49BA-BB0F-3ECA-A1F6-158E5C80F799.dita"><apiname>TDaylightSavingZone</apiname></xref> - Defines the daylight saving
+zones.</p></li>
+<li><p><xref href="GUID-4B94449F-05D7-376E-94EF-D11AB200E543.dita"><apiname>TUnitsFormat</apiname></xref> - Enumerates the units of measurement
+as either Imperial or Metric.</p></li>
+</ul></section>
+<section id="GUID-2421D907-91C7-590C-BEE3-A84526C9FFE3"><title>Build</title> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian OS build process</xref> describes
+how to build this example. </p> <p>The <codeph>localeupdate</codeph> example
+builds the <filepath>localeupdate.exe</filepath> executable file in the standard
+location (<filepath>\epoc32\release\winscw\ &lt;build_variant&gt;</filepath>)
+for Carbide.c++. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707-master.png has changed
Binary file Symbian3/SDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e241834_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-24FD00A1-CD09-5845-ACD5-4E4FF25084B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-24FD00A1-CD09-5845-ACD5-4E4FF25084B3" xml:lang="en"><title>Heap
+Management Guide</title><shortdesc>This document describes Heap management. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-55CC7147-D437-4579-ADD9-F8418E19E7AC"><title>Purpose</title> <p>The heap is the area of memory used for
+dynamic memory allocation. Each thread has a chunk which contains that thread's
+program stack. For the main thread of a process, this chunk also contains
+the thread's heap. A request for memory is allocated from this heap. </p> </section>
+<section id="GUID-D2FA14DD-D30F-4E7C-945B-BCD081FAFF3D"><title>Description</title> <p>The following are the Heap management
+APIs: </p> <ul>
+<li id="GUID-1CB48994-7F7D-5108-843B-ED0F7296F9E6"><p>Heap Management is provided
+by <xref href="GUID-EFAFDD75-7E59-306A-882D-317F5564979E.dita"><apiname>RHeap</apiname></xref>  </p> </li>
+<li id="GUID-A1551D95-6B6E-5CDA-A064-D2E0C9DCEEF2"><p> <xref href="GUID-9DB4A58C-6FC8-3292-A547-4C161BD188FC.dita"><apiname>RAllocator</apiname></xref> is
+the base class for <xref href="GUID-EFAFDD75-7E59-306A-882D-317F5564979E.dita"><apiname>RHeap</apiname></xref>  </p> </li>
+</ul> <p>There are three <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> functions that implement
+the <codeph>RHeap</codeph> functionality, they are shown here: </p> <ol id="GUID-B67B7A5B-F895-5B08-9C37-490F5E853182">
+<li id="GUID-B62CFCE3-C729-558F-AD2E-B9F5B363D82E"><p>To allocate a block
+of memory: <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96661CE0-03D4-3F0D-A725-4B5CD49CAD2D"><apiname>User:: AllocL()</apiname></xref> </p> </li>
+<li id="GUID-CF3BB275-A11F-52DB-9ABC-1D5C2AB95BC3"><p>To free a block of allocated
+memory: <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-A1B58B92-E9B2-3C0F-89B3-BA3230A1E14F"><apiname>User::Free()</apiname></xref> (Do not attempt to use this block
+of memory again). </p> </li>
+<li id="GUID-B992EBC5-3FAB-55F4-ACA0-701F58109BF6"><p>To manage an allocated
+block of memory to either grow or shrink the memory block as required: <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-076A396B-D9F1-3CB9-8D93-AF2E1D0C9415"><apiname>User::ReAlloc()</apiname></xref>.
+This will preserve the data of the allocated block and move it into the new
+resized block. </p> </li>
+</ol> </section>
+<section id="GUID-16FCE4DE-D650-423B-AAED-5AADCEA10B1E"><title>Managing Heaps</title> <p>Managing heaps is very important
+to the increase the efficiency of virtual memory usage when performing heap
+allocation. This reduces the virtual memory fragmentation caused by heap allocation.
+The best way to manage heaps is to increment the initially defined heaps to
+make an memory allocation. There by an entirely new heap is created. The newly
+created heap may be added to the pool of heaps from which an allocation may
+be made. The additional heaps are of a constant, relatively large, size thereby
+reducing the risk of virtual memory fragmentation. </p> <p><b>Accessing
+Heap</b> </p> <p>A constant unsigned integer <xref href="GUID-42DFD47A-05B0-3A63-B5E7-FDA41C701BF8.dita"><apiname>RHeapMinCellSize</apiname></xref> is
+defined to specify the minimum heap cell size that can be allocated and also
+the minimum size needed to split the cell and add it to free list. It is exported
+both from the kernel (<filepath>EKERN.EXE</filepath>) as well as from the
+user side (<filepath>EUSER.DLL</filepath>). This can be configured during
+the rom build time using patchdata (tool support). An entry needs to be added
+in OBY / IBY file. </p> <p><b> Heap
+Balancing</b> </p> <p>Memory heap balancing controls a size of a plurality
+of memory heaps. The macros <filepath>__UHEAP_MARK</filepath> and <filepath>__UHEAP_MARKEND</filepath> are
+used to enclose a section of code where you need to check whether the heap
+is balanced. The description of these defined macros are listed below. </p> <p>__UHEAP_MARK
+- to record the number of cells allocated in the heap </p> <p>__UHEAP_MARKEND
+- a panic occurs to indicating a memory leak, if the heap does not have the
+same number of cells allocated at the point of call </p> <p><b>Monitoring Memory Leaks</b> </p> <p>Monitoring heap usage for user-side
+processes is chosen by the Memory Monitor client and provides the client with
+data about the monitored processes dynamic memory usage of the following events:
+allocation, de-allocation, reallocation, allocation failure, reallocation
+failure, and heap corruption. </p> <p><b>How
+it works</b> </p> <p>The EUser library contains the dynamic memory allocation
+functions used by all applications on the device. These have been instrumented
+such that they can optionally output Binary Trace log events to a kernel-side
+buffer whenever the dynamic memory functions are called by an application. </p> <p>The
+traces are enabled by the use of a special shim library <filepath>eexe_monitor_heap.lib</filepath> which
+must be linked with the application which is to be monitored. At run-time,
+the Symbian OS Memory Monitor uses the ULogger tool to configure the Binary
+Trace system to record dynamic memory event traces from applications, and
+to retrieve the dynamic memory events from the BTrace buffer when they occur.
+These events are then made available to Client Analyser programs via a client/server
+interface upon request. The SOMM does not require any special code to be compiled
+into application and can be used on debug targets (real device and emulator)
+as well as release targets. </p> </section>
+<section id="GUID-9545237F-A0A6-4CB5-8D55-052A7FB1DEB6"><title>Using Heap Manager</title> <p>Memory management is provided
+through the <xref href="GUID-EFAFDD75-7E59-306A-882D-317F5564979E.dita"><apiname>RHeap</apiname></xref> memory allocator implementation, an implementation
+of <xref href="GUID-9DB4A58C-6FC8-3292-A547-4C161BD188FC.dita"><apiname>RAllocator</apiname></xref>. In most cases though you would use the User
+functions that implement the <codeph>RHeap</codeph> functions, which are far
+easier to use. Much of the overhead involved in using <codeph>RHeap</codeph> directly
+is hidden away under the <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> implementation. </p> <p>Use
+the heap manager to: </p> <ul>
+<li id="GUID-599F41F7-9FB9-5220-A780-CDD7B5596989"><p>allocate memory blocks </p> </li>
+<li id="GUID-A28C8217-8577-5022-9625-E03122D306C0"><p>release memory blocks
+that are no longer required by the program </p> </li>
+<li id="GUID-B7625FD0-FB67-5FE6-9F2B-812AB807FC4B"><p>return the number of
+blocks and the number of bytes currently allocated. </p> </li>
+<li id="GUID-E680FD7A-F975-50F0-BD81-93D9EE6B73A8"><p>return the number of
+bytes that are unused and the largest allocation that would succeed without
+requesting more pages of memory. </p> </li>
+<li id="GUID-7C9B9299-914A-5B74-9DAB-05DAD1B96E84"><p>change the size of the
+allocated memory block. </p> </li>
+</ul> <p id="GUID-0FD6F35E-2EB8-56BA-995C-23304EEBD4E0"><b>Allocate a memory block</b> </p> <p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-67554CF1-F7D1-37E3-8088-1625B3FCEBB4"><apiname>User::Alloc()</apiname></xref> Is
+used to allocate a block of memory of the size indicated by the single parameter. </p> <p><b>Usage</b> </p> <p>Use <codeph>User::AllocL()</codeph> to: </p> <ul>
+<li id="GUID-E5972E33-7060-59A8-ABF3-8CC9E89F4670"><p>allocate and commit
+a region of the size requested. </p> </li>
+</ul> <p><b>Free
+allocated memory</b> </p> <p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-A1B58B92-E9B2-3C0F-89B3-BA3230A1E14F"><apiname>User::Free()</apiname></xref> Is used to release
+a block of memory that had previously been allocated. Once freed a program
+cannot use the same physical memory block. </p> <p><b>Usage</b> </p> <p>Use <codeph>User::Free()</codeph> to: </p> <ul>
+<li id="GUID-D390DE7A-BCBC-5762-977A-E14E2E0D49CF"><p>release an allocated
+block of memory. </p> </li>
+</ul> <p><b>Modify
+allocated memory</b> </p> <p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-076A396B-D9F1-3CB9-8D93-AF2E1D0C9415"><apiname>User::ReAlloc()</apiname></xref> Is used to
+allocate a block of memory of the size indicated by the single parameter. </p> <p><b>Usage</b> </p> <p>Use <codeph>User::ReAllocL()</codeph> to: </p> <ul>
+<li id="GUID-E737B5FF-ACC8-593F-9650-C73C69D8FC88"><p>change the current size
+of an allocated memory block. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-9636A30F-39EB-54E6-8125-4487D4002FE0.dita"><linktext>Memory  
+              Management</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-25035286-5134-51F6-A3B6-C0DF0E802719"><title>The Linear DDA</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Linear Digital Differential Analyzers (DDAs) are used by various functions to construct straight lines and to calculate bitmap stretching and compression. </p> <section><title>Line construction </title> <p>The linear DDA constructs a pixel line between the start point and end point, using the straight geometric line between these points. </p> <p>In the example below Line A has a start point (3,10) and end point (22,6). The x-delta is therefore 22-3+1=20. The y-delta is 10-6+1=5. 5 goes into 20 exactly four times, so each step of the pixel line has four pixels in it. </p> <fig id="GUID-7FCC7B03-5EC0-5F5B-852B-2D372B8DABD5"><image href="GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e177854_href.png" placement="inline"/></fig> <p>The distribution of pixels is fairly straightforward if the x-delta is an exact multiple of the y-delta, or vice versa. In this case there are the same number of pixels in each pixel line step (as in the case of line A). When the x-delta is <i>not</i> an exact multiple of the y-delta, (or vice versa) the pixels in the pixel line cannot be distributed evenly so the pixel line steps each have differing numbers of pixels (as in the case of line B). </p> </section> <section><title>Scaling bitmaps </title> <p>When a bitmap is to be displayed it often has to be stretched or compressed to fit the desired display area. </p> <p>The linear DDA constructs an imaginary pixel line between the start point and end point, using the straight geometric line between these points. This is then used to stretch or compress the original bitmap prior to display. </p> <p>The example below uses linear DDA to do a 400% horizontal scaling of a bitmapped "6" character. In most situations two linear DDAs would be needed, one for horizontal and one for vertical scaling. </p> <fig id="GUID-AF1CACFD-09B3-5C0B-9FF0-01A55F543D8E"><image href="GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e177877_href.png" placement="inline"/></fig> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-255653B8-DACF-552C-8F33-7F6552824F4F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-255653B8-DACF-552C-8F33-7F6552824F4F"><title>Embedded SIS</title><shortdesc>An embedded SIS file is a file that is embedded in another SIS files. A SIS file can contain multiple embedded SIS files. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><refsyn><title>Syntax</title> <p>To include a SIS file within another SIS file, the PKG file must specify the name and location of the embedded install files along with their package UID, prefixed with the <codeph>@</codeph> symbol. </p> <codeblock id="GUID-CAF95CA2-823E-5D3F-9AA1-5C43FBE56D04" xml:space="preserve">@"source-filename", (package-uid)</codeblock> <p>For example: </p> <codeblock id="GUID-F861B457-A92F-5B2C-9833-AE182580BADD" xml:space="preserve">IF NOT package(0xE8000097)
+; install minimal.sis only if not already installed
+@"minimal.sis", (0xE8000097)
+endif</codeblock> <p>During installation, <filepath>minimal.sis</filepath> is extracted and installed, unless it has already been installed. </p> <p>The <codeph>package()</codeph> function must be used only if you have to install an embedded package if it has not already been installed. For more information on Embedded SIS files see, <xref href="GUID-7A7254E3-A03A-5B38-B2B5-FFEEE70F5E93.dita">Embedded SIS Files</xref>. </p> <p>Language-specific embedded SIS files can be included in a language block, as shown in the following example: </p> <codeblock id="GUID-D09CD6DF-A680-5370-AA1C-6B2CE740D965" xml:space="preserve">{
+@"foo_en.sis"
+@"foo_fr.sis"
+@"foo_ge.sis"
+},(0x11223344)</codeblock> </refsyn> <section id="GUID-CA9350B6-832E-5CD0-95A6-8564FAD2DB6D"><title>Example</title> <ul><li id="GUID-E4AA1E8E-E421-5EA5-8565-CF4F6E9B1F78"><p>Example to illustrate an embedded SIS file within the parent SIS file </p> <codeblock id="GUID-B6DEBB50-2183-599A-AD74-694242296FD8" xml:space="preserve">; A SIS file which embeds another
+
+;Languages
+&amp;EN,GE
+
+;Header
+#{"Embedding-EN", "Embedding-GE"}, (0x10000017), 1, 2, 3
+
+%{"Vendor", "Verkaufer"}
+:"Vendor"
+
+;Embedded component
+IF NOT package(0x80000002)
+@"sub.sis",(0x80000002)
+endif
+
+;Ordinary file to system drive
+{
+"text\englishfile.txt"
+"text\germanfile.txt"
+}-"$:\private\10000018\import\lang.txt"
+
+;Ordinary file to selected drive
+"text\file1.txt"-"!:\private\10000018\import\file1.txt"
+
+;Display a text file
+"text\textfilec.txt"-"", FT, TC</codeblock> </li> <li id="GUID-C0917322-85C3-5D5C-8B8F-3944F8EB4A89"><p>Example to illustrate the format of the SIS file that needs to be embedded into another file </p> <codeblock id="GUID-9AC3E987-EA8E-53D0-80F8-F9CA56F0781B" xml:space="preserve">; A SIS file which is embedded in another
+
+;Languages
+&amp;EN,GE
+
+;Header
+#{"Sub-EN", "Sub-GE"}, (0x80000002), 1, 2, 3
+
+%{"Vendor", "Verkaufer"}
+:"Vendor"
+
+;Ordinary file to fixed drive
+{
+"text\englishfile.txt"
+"text\germanfile.txt"
+}-"C:\private\80000003\import\InstTest\sub-lang.txt"
+
+;Ordinary file to selected drive
+"text\file1.txt"-"!:\private\80000003\import\InstTest\sub-file1.txt", FF
+
+;Display a text file
+"text\textfilesc.txt"-"", FT, TC</codeblock> </li> </ul> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-255B6815-8CC8-5E4A-9999-9BC083BCCD83.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-255B6815-8CC8-5E4A-9999-9BC083BCCD83" xml:lang="en"><title>Using
+__ASSERT_ALWAYS</title><shortdesc>This topic explains how to panic on an illegal value.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This simple example of the use of <codeph>__ASSERT_ALWAYS</codeph> shows
+how to panic on an illegal value. </p>
+<p>Suppose the member function <codeph>F()</codeph> in class <codeph>CMyClass</codeph>,
+takes a <codeph>TInt</codeph> argument which must always be zero or positive. </p>
+<codeblock id="GUID-21213FE1-90B2-5218-BD0C-E2D598962AD6" xml:space="preserve">void CMyClass::F(TInt aValue)
+ {
+ _LIT(KMyPanicDescriptor, "My panic text");
+
+ __ASSERT_ALWAYS(aValue &gt;= 0,User::Panic(KMyPanicDescriptor, aValue));
+ ...
+ /* main body of the function */
+ ...
+ }</codeblock>
+<p>If the caller passes a value which is negative, the current thread is panicked. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-257212F5-A414-4F17-A786-DB3168218139_d0e53418_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-257E223F-1612-5978-982A-38DE8E08211C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-257E223F-1612-5978-982A-38DE8E08211C"><title> Gifscaler Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Gifscaler library functionality. </p> <section id="GUID-7CD260AE-8FE3-57A5-914D-D0CCC18C562A"><title>Purpose</title> <p>The GifScaler functionality provides scaling and colour quantization of bitmaps as asynchronous operations. </p> <p><b>Gifscaler Library Details</b> </p> <p>You must obtain necessary binaries in the form of DLL file to implement the Gifscaler function. </p> <table id="GUID-071830E2-B4E2-551B-8CB1-F7E54F3350E7"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath> gifscaler.dll</filepath>  </p> </entry> <entry><p> <filepath>gifscaler.lib</filepath>  </p> </entry> <entry><p>These files are used for implementing Gifscaler operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Gifscaler function plays an important role in Imaging Frameworks to provide bitmaps suitable for gif encoding. </p> </section> <section><title>Description</title> <p>Gifscaler is used to provide bitmaps suitable for gif encoding. The target bitmap is a 256 colours bitmap using a custom palette created by the GifScaler.dll. The transparency information is provided in the form of a mask bitmap. If transparency information is present the output palette contains 255 colours, the remaining palette entry is used for the transparent pixels. </p> </section> <section><title>Key Gifscaler Classes</title> <p>The key class is: </p> <ul><li id="GUID-3A0DDCF7-8A2F-5273-ABDA-16E506D27067"><p> <xref href="GUID-4CBAE460-BF54-3F8B-8E5D-BB7EA8633160.dita"><apiname>CGifScaler</apiname></xref> Provides scaling and colour quantization of bitmaps as asynchronous operations. It provides the client interface functionality to the GifScaler.dll. </p> </li> </ul> </section> <section><title>Using Gifscaler</title> <p>The Gifscaler functionality is used for the following: </p> <ul><li id="GUID-B4789044-9B9D-5A1C-BE15-5673BC51F69C"><p>To provide bitmaps suitable for gif encoding. </p> </li> <li id="GUID-C41824F6-7A49-5D87-B7E9-6D8627457A79"><p>To provide scaling of bitmaps as asynchronous operations. </p> </li> <li id="GUID-A47DB84B-C1D0-5347-A134-4CB0B9FE7259"><p>To provide colour quantization of bitmaps as asynchronous operations. </p> </li> <li id="GUID-1AA748D3-B321-5B3D-A4C7-61CD46BBDC61"><p>To use fast colour quantizer for the small bitmaps. </p> </li> <li id="GUID-1447F801-1A2A-5C2D-BCFA-AB576F655594"><p>To provide no memory allocation during the colour quantization process and therefore no <codeph>RunError()</codeph> method is required. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Library Overview</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transform Library
+                Overview</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display Library Overview</linktext> </link> <link href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita"><linktext>Bitmap Transform Library
+                overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext>Guide to Symbian supplied Codecs</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-25A005BF-731B-58DB-8EF7-AB7840DA563F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-25A005BF-731B-58DB-8EF7-AB7840DA563F" xml:lang="en"><title>Hardware Resource
+Manager Concepts</title><shortdesc>This section provides a summary of related concepts and functionality
+for Hardware Resource Manager such as plug-ins and policies, and the functions
+used for controlling phone resources. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-25C3CDBE-8D53-5F1A-A4CA-993E1151AD93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-25C3CDBE-8D53-5F1A-A4CA-993E1151AD93" xml:lang="en"><title>SQL DB Library</title><shortdesc>The Symbian SQL database library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e189453_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-25F853BF-BA95-5348-809E-670C04734AB7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-25F853BF-BA95-5348-809E-670C04734AB7" xml:lang="en"><title>How
+to Choose a Real-time Thread Priority</title><shortdesc>Explains the factors to consider when choosing real time thread
+priority.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-5CF494FB-C569-5B38-AB43-23F489C6F41F"><p> <xref href="GUID-25F853BF-BA95-5348-809E-670C04734AB7.dita#GUID-25F853BF-BA95-5348-809E-670C04734AB7/GUID-80550A0E-CB7D-5988-B07D-4A1542501EF2">Real-time categories</xref> </p> </li>
+<li id="GUID-A81CB275-5C5B-5155-821A-ED6E803FC322"><p> <xref href="GUID-25F853BF-BA95-5348-809E-670C04734AB7.dita#GUID-25F853BF-BA95-5348-809E-670C04734AB7/GUID-AEE56C03-9346-54AF-9E80-A00F5856663D">Guidelines for writing real-time code</xref> </p> </li>
+</ul>
+<section id="GUID-80550A0E-CB7D-5988-B07D-4A1542501EF2"><title>Real-time categories</title> <p>Real-time
+tasks divide into two categories: </p> <ul>
+<li id="GUID-C773539E-F061-59A0-9777-D41175DF2475"><p> Hard real-time </p> </li>
+<li id="GUID-8340689D-F9AB-561F-BAA1-C966EB07F352"><p> Soft real-time </p> </li>
+</ul> </section>
+<section id="GUID-13F43E08-7E46-4A66-BF36-7516399838DC"><title>Hard real-time</title><p>Hard real-time tasks <i>must</i> complete
+within a fixed amount of time otherwise they fail. </p> <p>Audio playback
+provides a good example of a hard real-time task. During audio playback the
+soundcard driver reads data from an audio buffer to transfer to the soundcard.
+The audio application uses a thread to re-fill this buffer before it empties,
+and failure to do this before the deadline causes an audible break in the
+sound. </p> <p>Telephony applications are another example of hard real-time
+tasks. </p> <p>Symbian platform gives no real-time scheduling guarantees to
+user processes. Instead, system threads such as those running device drivers
+are designed to be efficient and well behaved for their priorities. The following
+list gives the estimated deadline ranges other threads are likely to meet
+reliably for a given priority on a busy system: </p> <table id="GUID-86D3C2BE-C5B4-5926-91C3-712E37C91968">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b> Deadline range </b>  </p> </entry>
+<entry><p> <b> True thread priority value</b>  </p> </entry>
+</row>
+<row>
+<entry><p>&gt; 100ms </p> </entry>
+<entry><p>24-26 </p> </entry>
+</row>
+<row>
+<entry><p>&gt; 20ms </p> </entry>
+<entry><p>27 </p> </entry>
+</row>
+<row>
+<entry><p>2-20ms </p> </entry>
+<entry><p>28-31 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>These figures rely on real-time threads completing their work
+in less time than the deadline itself, otherwise other threads may fail to
+meet their deadlines. These deadline ranges appear conservative because they
+are based on what is a achievable on a busy system. Use of lower <i>true</i> priorities
+than those in the above table are recommended whenever the implications of
+failing to meet a deadline are not very serious and the incidence of failure
+is acceptably low in practical testing. </p> </section>
+<section id="GUID-AB70E058-6910-4ECB-A84C-1639D56381C9"><title>Soft real-time</title><p>Soft real-time tasks <i>try</i> to
+complete within a fixed amount of time. In contrast to hard real-time, exceeding
+this time is not considered a failure, although it may affect the user experience
+in some way. </p> <p>Soft real-time tasks generally have a quality of service
+target expressed as a percentage that is less than 100% (where 100% represents
+hard real-time). This value is the percentage of tasks that must complete
+within the deadline to satisfy the expected service levels. Usually the programmer
+implements a recovery strategy to cope with a thread missing the deadline. </p> <p>Examples
+of soft real-time tasks include the responsiveness of the system to user events
+and communications protocols. In the case of responsiveness to user events,
+an arbitrary deadline is aimed for that is ‘close enough to instantaneous’;
+in the case of communication protocols, failure to process data in time causes
+it to be retransmitted – possibly at extra cost to the user – but is otherwise
+not a catastrophic failure. </p> </section>
+<section id="GUID-AEE56C03-9346-54AF-9E80-A00F5856663D"><title>Guidelines
+for writing real-time code</title> <p>When developing real-time code follow
+these rules: </p> <ul>
+<li id="GUID-23007425-8BA8-5AD3-B7CE-7EEB56FDA701"><p>Do the minimum amount
+of work required to meet your deadline at the required priority. </p> </li>
+<li id="GUID-DDB7AF0E-9245-5511-A6C0-FCA5B6928E9E"><p>For hard real-time tasks,
+use the lowest priority you can to achieve your goals within the task deadline. </p> </li>
+<li id="GUID-2732E0E6-5CAA-502A-882D-195F497019BF"><p>Avoid using lower priority,
+non real-time services, for example file I/O in high priority threads. This
+sacrifices the benefit of using a high priority real-time thread. </p> </li>
+<li id="GUID-6EC4A4CB-4EBE-5F5B-BC42-C6A926181FAC"><p>For soft real-time tasks
+choose a priority above which no significant performance differences are observed
+once the required service level is met. </p> </li>
+<li id="GUID-329AD22C-052C-5E81-A79B-8747E2D4586E"><p>For typical applications
+that respond to user interaction, soft real-time priorities start at values
+based on the <xref href="GUID-1054385C-7168-31ED-89D9-4C33E28836A0.dita"><apiname>EPriorityAbsoluteForegroundNormal</apiname></xref> process
+priority, but are more often based on the <xref href="GUID-8995D880-69B7-3C31-891B-7A2C57E372FE.dita"><apiname>EPriorityHigh</apiname></xref> process
+priority. </p> </li>
+<li id="GUID-EC60209A-BFCF-58E2-BD80-8A1DA754CA96"><p>For tasks that will
+use all available CPU by the sheer frequency that the thread is scheduled
+(for example, using a very high bandwidth communication channel, or achieving
+high/maximum frame rates in an action game), lower priorities should be used;
+this includes priorities based on the <xref href="GUID-1054385C-7168-31ED-89D9-4C33E28836A0.dita"><apiname>EPriorityAbsoluteForegroundNormal</apiname></xref> process
+priority. </p> </li>
+<li id="GUID-8C832884-41EF-5F80-8EAA-347A320D9015"><p>Escalating priorities
+for soft real-time tasks into the levels normally used for hard real-time
+tasks is dangerous. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457" xml:lang="en"><title>Dynamically
+Loading Link Libraries Overview</title><shortdesc>Description of Polymorphic DLLs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-25D3E357-BE6E-40BD-897D-DA5EB92029C5"><title>Purpose</title> <p>Dynamically load libraries during program
+execution.</p> <p>These interfaces are used by programs that need to load
+libraries at run-time, that have a common interface, but different concrete
+behaviour. Because of this relationship between interface and behaviour, such
+libraries are called <i>polymorphic DLLs</i>. </p> </section>
+<section id="GUID-5444CFD3-5FC2-4160-BD8A-8BD7154402B3"><title>Architectural relationships</title> <p>Many parts of the system
+use polymorphic DLLs. Communications components, such as Sockets and Messaging,
+use architectures in which particular communications protocols are provided
+as polymorphic DLLs, and are loaded as needed. UI application programs are
+also polymorphic DLLs that are loaded when the user starts the program.</p> </section>
+<section id="GUID-2A379537-7B05-445F-83FC-C4396794A3CD"><title>Description</title> <p>The API has three key concepts: polymorphic
+DLL, polymorphic DLL handle, and polymorphic DLL function pointer. </p> </section>
+<section id="GUID-0A0DF81E-94C0-4D91-8F2A-1DFBE542E019"><title>Polymorphic DLL</title> <p>A program that uses a type of polymorphic
+DLLs defines their interface in terms of a single abstract class whose functions
+are declared as pure virtual. Each type of polymorphic DLL is given a unique
+identifier (UID). </p> <p>A particular concrete DLL:</p> <ul>
+<li id="GUID-E073605D-1AC4-55B9-94AA-FD1A761B5448"><p>implements the interface
+by defining and implementing a concrete class derived from the abstract class.</p> </li>
+<li id="GUID-AF95C27B-841D-53B5-836B-A55B4ED3E5F3"><p>exports a function that
+creates an object of the derived class type. All other functions in the DLL
+are virtual and called through the base class interface.</p> </li>
+</ul></section>
+<section id="GUID-825B7916-7E13-42B5-BAE4-A7009679E4F2"><title>Polymorphic DLL handle</title><p>The polymorphic DLL handle
+allows a program to load and close a particular polymorphic DLL. It also allows
+the caller to obtain pointers to functions exported by the DLL. The system
+can check that a polymorphic DLL is of the correct type by checking the type
+UID value.</p> <p>The polymorphic DLL handle interface is provided by <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita"><apiname>RLibrary</apiname></xref>.</p> <p>A
+wildcard file system search for polymorphic DLLs can be done through <xref href="GUID-1B05E2E3-B64E-36A8-BFFF-430028113BA4.dita"><apiname>TFindLibrary</apiname></xref>.</p> </section>
+<section id="GUID-C16BECEC-B59A-4FFE-94F0-548DB602A0BA"><title>Polymorphic DLL function pointer</title> <p>An exported function
+is called through a pointer to function obtained through a polymorphic DLL
+handle.</p> <p>The polymorphic DLL function pointer type is provided by the <xref href="GUID-7E0A7BA7-0EF8-3832-A1EA-B85FFADD1A9B.dita"><apiname>TLibraryFunction</apiname></xref> typedef.
+The caller casts the pointer to the real type of the exported function before
+using it.</p> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-AB705D21-87A3-5F32-A4B9-17B7593DD5C3.dita">UID Manipulation
+Overview</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B"><title>Querying Databases: Basic</title><shortdesc>This tutorial shows you how to create a simple SQL database query. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-BEB231F7-8A23-5650-9933-EC3D030ABA32"><title>Introduction</title> <p>This tutorial shows you how to wrap a SQL query statement into an <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object to query a database. </p> <p>This tutorial uses code from the <xref href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita">Basic SQL example application</xref>. </p> <p><b>Assumptions </b> </p> <p>You have a database. The database has no tables and therefore no data. </p> <p><b>SQL statements </b> </p> <p>The following SQL statements are used for this example: </p> <p><userinput><cmdname>SELECT</cmdname> <parmname>person</parmname>  <cmdname>FROM</cmdname> <parmname>Pets</parmname>  <cmdname>WHERE</cmdname>  <parmname>cat
+          &gt;= 1</parmname>  </userinput> </p> <p>The (<codeph>SELECT</codeph>) results of the query will be the value in the '<codeph>name</codeph>' column <codeph>FROM</codeph> the '<codeph>countries</codeph>' table <codeph>WHERE</codeph> the value of the '<codeph>population</codeph>' column of the same record is <codeph>&gt;</codeph> the value specified. </p> </section> <section><title>Procedure</title> <ol id="GUID-457AA35E-0A23-5FAE-B69E-10D31F40F153"><li id="GUID-6C096309-F5A5-53AB-81E1-2E319D784FEF"><p>Prepare the statement: </p> <p>The steps to prepare a SQL statement are shown here. </p> <ol id="GUID-6E19F9B5-92DC-50C4-9A93-1DC9E10EFECB"><li id="GUID-F28F700F-1D43-5A44-8C01-A117048A6372"><p>Set up some constants used by the SQL statement object to define the SQL query: </p> <p><codeblock id="GUID-55464913-80C8-57C1-9973-34F11ED2CFF3" xml:space="preserve">_LIT(KSelect1,"SELECT person FROM Pets WHERE cat &gt;= 1;");</codeblock> </p> <p>This defines the query parameters. </p> </li> <li id="GUID-5B15A001-4355-5422-88D5-DF457B3F069C"><p>Instantiate the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> SQL statement: </p> <p><codeblock id="GUID-B1C94AEC-EF3B-5447-9D75-5C382EB19302" xml:space="preserve">RSqlStatement stmt;</codeblock> </p> </li> <li id="GUID-A8E185AC-0402-5B62-ABDE-7667E7396621"><p>Prepare the statement: </p> <p><codeblock id="GUID-20A9CAD8-5015-5404-864B-4BF471284D44" xml:space="preserve">User::LeaveIfError(stmt.Prepare(iPetDb, aStatement));</codeblock> </p> <p>Creates a parameterised SQL statement executable. </p> </li> <li id="GUID-28D8E6CC-5A85-5422-9F6E-F4EAA5D80491"><p>Define the indices to be used in the search: </p> <p><codeblock id="GUID-ECF6DD48-2E8B-5A70-B712-2465E2132A20" xml:space="preserve">    TInt personIndex = stmt.ColumnIndex(KPerson);</codeblock> </p> </li> </ol> </li> <li id="GUID-7D9C68FB-A9A3-5FBF-A1F4-B2C900680E62"><p>Execute the SQL query: </p> <p>The Symbian SQL statement is executed by <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement::Next()</apiname></xref>. </p> <ol id="GUID-FD6241DB-56D3-5F28-8CA7-ECC8A527F3F8"><li id="GUID-71EC4F86-F462-5C20-82FA-331FF215A25C"><p>Search the records until a match is found: </p> <p><codeblock id="GUID-4617F6D8-D138-5123-8E61-ADC0B9CF1DDA" xml:space="preserve">TInt rc = KErrNone;
+while ((rc = stmt.Next()) == KSqlAtRow)</codeblock> </p> <p> <codeph>Next()</codeph> fires the executable SQL statement and stops at and returns the matched record. </p> </li> </ol> </li> <li id="GUID-D142E6BD-1FF7-514E-A33E-DA87112AABC6"><p>Do something with the results: </p> <p>The query is done and you have the results. In this section we look at a simple way to do something with the results and we close the SQL statement object. </p> <ol id="GUID-19CF868B-5957-5D68-8E7F-352F924C0426"><li id="GUID-21B13AF8-6052-55B1-9CD0-E0BD8783473A"><p>Get and use the results of the search: </p> <p><codeblock id="GUID-8A2DFE0B-78AB-5D90-B175-05DCAD3965D2" xml:space="preserve">...
+{
+TPtrC myData = stmt.ColumnTextL(personIndex);
+iConsole-&gt;Printf(_L("Person=%S\n"), &amp;myData);
+}</codeblock> </p> </li> <li id="GUID-9EECD8B4-F9D2-5D27-A1C3-32C7337AF8E0"><p>Close the SQL search statement: </p> <p><codeblock id="GUID-121F21FE-0D85-5F13-8D57-0D9B84ECA22E" xml:space="preserve">err = myStatement.Close(); </codeblock> </p> <p>When the database search is finished the object should be closed to free up resources. </p> </li> </ol> </li> </ol> </section> <section id="GUID-CDF77F9C-9ACB-529B-B902-0548E91A026E"><title>Results</title> <p>The tutorial has demonstrated how to query a Symbian SQL database. Looking through the example application you can work out how easily the query can be changed to meet specific requirements and how the results can be used in different ways. </p> </section> <example id="GUID-8DB8048D-082A-51C2-882E-6250D5B3B2D0"><title>Querying example</title> <p>The following code snippet is from the basic example application. </p> <codeblock id="GUID-D2EE1100-6199-5313-B8C5-49CA1AC9C2FD" xml:space="preserve">...
+...
+RSqlStatement stmt;
+iConsole-&gt;Printf(_L("Running Query:\n%S\n"), &amp;aStatement);
+user::LeaveIfError(stmt.Prepare(iPetDb, aStatement));
+CleanupClosePushL(stmt);
+TInt personIndex = stmt.ColumnIndex(KPerson);
+TInt rc = KErrNone;
+while ((rc = stmt.Next()) == KSqlAtRow)
+  {
+  // Do something with the results 
+  TPtrC myData = stmt.ColumnTextL(personIndex); // read return data
+  iConsole-&gt;Printf(_L("Person=%S\n"), &amp;myData);
+  }
+if (rc != KSqlAtEnd)
+  {
+  _LIT(KErrSQLError, "Error %d returned from RSqlStatement::Next().");
+  iConsole-&gt;Printf(KErrSQLError, rc);
+  }
+  ...
+  CleanupStack::PopAndDestroy(1);
+}</codeblock> </example> <section id="GUID-8F3A39B6-6514-5A48-BE2E-7893D7625A9C-GENID-1-6-1-20-1-1-6-1-1-10-1-8-1-6-1-3-5"><p>Now that you have performed a basic database query you can start thinking about more advanced querying options. The following will show you how: </p> <ul><li id="GUID-D2CD5BB5-C085-56F0-B834-7515447CD661"><p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a buffer</xref>  </p> </li> <li id="GUID-B147074E-B791-592E-99C3-474AA5D217F6"><p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita">Reading to memory</xref>  </p> </li> <li id="GUID-029878E1-AAD9-5E1A-B696-67BD3C0D905F"><p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a data stream</xref>  </p> </li> </ul> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita"><linktext>Basic SQL Example
+                Application</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233" xml:lang="en"><title>Descriptors</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Descriptors are self-describing strings that can be used to store binary data and text. Each descriptor object holds the length of the string as well as its type which identifies the underlying memory layout of the data it holds. For more information on different descriptor classes, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/NewStarter/2-essentials.html#gsguide%2eessentials%2edescriptors" format="application/java-archive">Descriptors</xref>.</p>
+<p>There are modifiable and non-modifiable descriptors, the latter type is identified by a "C" suffix in the class name. The length of a non-modifiable descriptor is defined when compiling an application, and the length of a modifiable descriptor can vary within the limits set by <codeph>iMaxLength</codeph>. Nonmodifiable descriptors are more secure, as their length is checked during compilation. The following figure shows the differences between these types.</p>
+<fig id="GUID-A8F9937F-25A6-4E80-845F-35994B7E13E5"><title>Differences between modifiable, nonmodifiable, and pointer descriptors</title><image href="GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e7551_href.png"/></fig>
+<p>When designing applications, avoid using fixed-length buffers as parameters and use base classes (preferably constant base type <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/e32cmn.hGlobals.html#%3a%3aTDesC" format="application/java-archive">TDesC</xref></codeph>) instead. Descriptor objects provide a flexible interface for manipulating the contained string, including size and length checks. Take advantage of these when possible.</p>
+<p>For an example, see <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/3397e4ea-c067-4a4a-bf16-9747e1968b3e/S60_Platform_Descriptor_Example_v2_0_en.zip.html" scope="external">S60 Platform: Descriptor Example</xref> on Forum Nokia.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9" xml:lang="en"><title>Cnvtool
+Control File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The control file is a text file which specifies the conversion algorithms
+used to convert (both ways) between ranges of characters. It is one of the
+input files used by <filepath>cnvtool</filepath> to create a Charconv plug-in
+DLL. </p>
+<p>The control file also specifies the code(s) of the character(s) to use
+to replace unconvertible Unicode characters, the endian-ness of the foreign
+character set (if single characters may be encoded by more than one byte)
+and the preferred character to use when a character has multiple equivalents
+in the target character set. </p>
+<p>The control file is case-insensitive. Comments begin with a # and extend
+to the end of the line. Additional blank lines and leading and trailing whitespace
+are ignored. </p>
+<section><title>Syntax</title> <p>There are four sections in the control file:
+the header, the foreign variable-byte data, the foreign-to-Unicode data and
+the Unicode-to-foreign data. </p> <p><b>The header</b> </p> <p>The header
+consists of two lines in fixed order. Their format is as follows (alternatives
+are separated by a <codeph>|</codeph>, single space characters represent single
+or multiple whitespace characters): </p> <codeblock id="GUID-1AE937FB-E7A5-5ECD-BCD3-2A0C24C8869D" xml:space="preserve">Endianness Unspecified|FixedLittleEndian|FixedBigEndian</codeblock> <codeblock id="GUID-1E1209FC-855C-5764-92C0-F4F984FA727F" xml:space="preserve">ReplacementForUnconvertibleUnicodeCharacters &lt;see-below&gt;</codeblock> <p>The
+value of <codeph>Endianness</codeph> is only an issue for foreign character
+sets where single characters may be encoded by more than one byte. The value
+of <codeph>ReplacementForUnconvertibleUnicodeCharacters</codeph> is a series
+of one or more hexadecimal numbers (not greater than 0xff) separated by whitespace,
+each prefixed with 0x. These byte values are output for each Unicode character
+that has no equivalent in the foreign character set (when converting from
+Unicode to foreign). </p> <p><b>The foreign variable-byte data</b> </p> <p>This
+section is contained within the following lines: </p> <codeblock id="GUID-8AE97A28-7224-53BE-9D65-AAEA02191665" xml:space="preserve">StartForeignVariableByteData</codeblock> <codeblock id="GUID-769E3B0B-B3E3-5685-90A7-77BEEB715CEB" xml:space="preserve">EndForeignVariableByteData</codeblock> <p>In
+between these lines are one or more lines, each consisting of two hexadecimal
+numbers (each prefixed with 0x and not greater than 0xff), followed by a decimal
+number. All three numbers are separated by whitespace. </p> <p>The two hexadecimal
+numbers are the start and end of the range of values for the initial foreign
+byte (inclusive). The decimal number is the number of subsequent bytes to
+make up a foreign character code. The way these bytes are put together to
+make the foreign character code is determined by the value of <codeph>Endianness</codeph> in
+the header of the control file. For example, if the foreign character set
+uses only a single byte per character and its first character has code 0x07
+and its last character has code 0xe6, the foreign variable-byte data would
+be: </p> <codeblock id="GUID-72F31554-6AB7-52F8-ACCA-640C9BAC9F1B" xml:space="preserve">StartForeignVariableByteData
+0x07 0xe6 0
+EndForeignVariableByteData</codeblock> <p><b>The foreign-to-Unicode data</b> </p> <p>This
+section is contained within the following lines: </p> <codeblock id="GUID-C09DAF0F-AC55-5F44-8183-CD50C52A0F9E" xml:space="preserve">StartForeignToUnicodeData</codeblock> <codeblock id="GUID-1AE31BA2-F49E-5287-BC2C-FD9D28ACB3F5" xml:space="preserve">EndForeignToUnicodeData</codeblock> <p>In
+between these two lines are one or more lines in format A (defined below).
+These may be optionally followed by one or more lines in format B (defined
+below), in which case the lines in format A and format B are separated by
+the line: </p> <codeblock id="GUID-1D099346-7111-5367-BE2C-6015F121D5B9" xml:space="preserve">ConflictResolution</codeblock> <p>Each
+line in format A indicates the conversion algorithm to be used for a particular
+range of foreign character codes. Lines in format A contain the following
+fields, each separated by whitespace: </p> <ul>
+<li id="GUID-BEA311EB-3633-57CF-8136-FD5DF64AE054"><p>first field and second
+field–reserved for future use and must be set to zero </p> </li>
+<li id="GUID-7A8CA63C-6C27-5E7B-96A4-BC463BE55AF2"><p>first input character
+code in the range–a hexadecimal number prefixed with 0x </p> </li>
+<li id="GUID-9CC95C68-0DB5-53A3-AE25-AA70D293C096"><p>last input character
+code in the range–a hexadecimal number prefixed with 0x </p> </li>
+<li id="GUID-B18A63F4-0CC8-518B-ADE7-31A86D3DC2F0"><p><xref href="GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9.dita#GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9/GUID-29B10367-F31D-5756-9DAA-8E4840BAB042">algorithm</xref> –one of <codeph>Direct</codeph>, <codeph>Offset</codeph>, <codeph>IndexedTable16</codeph> or <codeph>KeyedTable1616</codeph>  </p> </li>
+<li id="GUID-B8E84CFA-1047-5E98-A831-85F6073BDFD6"><p>parameters–if not applicable
+to any of the current choice of algorithms, set this to <codeph>{}</codeph>. </p> </li>
+</ul> <p>Lines in format B, if present, consist of two hexadecimal numbers,
+prefixed with 0x, separated by whitespace. The first of these is a foreign
+character code which has multiple equivalents in Unicode (according to the
+data in the source file), and the second is the code of the preferred Unicode
+character to which the foreign character should be converted. </p> <p><b>The
+Unicode-to-foreign data</b> </p> <p>This section is structured similarly to
+the foreign-to-Unicode data section. It is contained within the following
+lines: </p> <codeblock id="GUID-5F9DD42E-8676-53CB-B6B4-8CA8574DFD6A" xml:space="preserve">StartUnicodeToForeignData</codeblock> <codeblock id="GUID-5CEAE8E0-D098-54CF-B7AE-71766ADEC3C5" xml:space="preserve">EndUnicodeToForeignData</codeblock> <p>In
+between these two lines are one or more lines in format C (defined below).
+These may be optionally followed by one or more lines in format D (defined
+below), in which case the lines in format C and format D are separated by
+the line: </p> <codeblock id="GUID-DA74F595-BD77-540B-940B-6536A83940A3" xml:space="preserve">ConflictResolution</codeblock> <p>Format
+C is very similar to format A with one exception, which is an additional field
+to specify the size of the output character code in bytes (as this is a foreign
+character code). Each line in format C indicates the conversion algorithm
+to be used for a particular range of Unicode character codes. Lines in format
+C contains the following fields, each separated by whitespace: </p> <ul>
+<li id="GUID-0622493A-08F8-58E1-A7E3-F7F331C14DA7"><p>first field and second
+field–reserved for future use and must be set to zero </p> </li>
+<li id="GUID-DDC93F91-6911-591F-BDA6-4E4099180D12"><p>first input character
+code in the range–a hexadecimal number prefixed with 0x </p> </li>
+<li id="GUID-80C572A0-DB92-5281-AFA0-1215FA899289"><p>last input character
+code in the range–a hexadecimal number prefixed with 0x </p> </li>
+<li id="GUID-010F91D8-C408-5EF8-BEBD-DE5DE57D040F"><p><xref href="GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9.dita#GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9/GUID-29B10367-F31D-5756-9DAA-8E4840BAB042">algorithm</xref> –one of <codeph>Direct</codeph>, <codeph>Offset</codeph>, <codeph>IndexedTable16</codeph> or <codeph>KeyedTable1616</codeph>  </p> </li>
+<li id="GUID-4D6EEC55-A3D1-5193-B9B1-B16CDB4A903F"><p>size of the output character
+code in bytes (not present in format A)–a decimal number </p> </li>
+<li id="GUID-C3DF518F-5624-5618-B2BF-4CF230DAE3DE"><p>parameters–if not applicable
+to any of the current choice of algorithms, set this to <codeph>{}</codeph>. </p> </li>
+</ul> <p>Format D is analogous to format B (described above). Like format
+B, it consists of two hexadecimal numbers prefixed with 0x, separated by whitespace.
+However, the first of these is a Unicode character code which has multiple
+equivalents in the foreign character set (according to the data in the source
+file), and the second is the code of the preferred foreign character to which
+the Unicode character should be converted. </p> </section>
+<section><title>Multiple SCnvConversionData data structures</title> <p>The <filepath>cnvtool</filepath> generates
+the main <codeph>SCnvConversionData</codeph> data structure using the input
+from the source file and the control file. The <codeph>SCnvConversionData</codeph> data
+structure contains the character set conversion data. </p> <codeblock id="GUID-C7959166-28B4-5C77-9979-B0BDDEF85928" xml:space="preserve">
+....
+GLDEF_D const SCnvConversionData conversionData=
+    {
+    SCnvConversionData::EFixedBigEndian,
+        {
+        ARRAY_LENGTH(foreignVariableByteDataRanges),
+        foreignVariableByteDataRanges
+        },
+        {
+        ARRAY_LENGTH(foreignToUnicodeDataRanges),
+        foreignToUnicodeDataRanges
+        },
+        {
+        ARRAY_LENGTH(unicodeToForeignDataRanges),
+        unicodeToForeignDataRanges
+        },
+    NULL,
+    NULL
+    };
+...
+</codeblock> <p>It is sometimes desirable for further objects to be generated
+which provide a view of a subset of the main <codeph>SCnvConversionData</codeph> object.
+This is possible by inserting an extra pair of lines of the following form
+in both the foreign-to-Unicode data and the Unicode-to-foreign data sections
+in the control file: </p> <codeblock id="GUID-6D436751-1392-52C3-95CF-87DC6C440284" xml:space="preserve">StartAdditionalSubsetTable &lt;name-of-SCnvConversionData-object&gt;
+...
+EndAdditionalSubsetTable &lt;name-of-SCnvConversionData-object&gt;</codeblock> <p>These
+lines must be placed around the above pair with a name (<codeph>name-of-SCnvConversionData-object</codeph>).
+Only one pair of these lines can occur in each of the foreign-to-Unicode data
+and the Unicode-to-foreign data sections, and if a pair occurs in one, it
+must also occur in the other. Accessing one of these <codeph>SCnvConversionData</codeph> objects
+from handwritten C++ files is done by adding the following line at the top
+of the relevant C++ file. The named object can then be used as required. </p> <codeblock id="GUID-B6A0EFA5-66B8-5EF3-A42A-DEAF334F664F" xml:space="preserve">GLREF_D const SCnvConversionData &lt;name-of-SCnvConversionData-object&gt;;</codeblock> <p>Below
+is an example control file with subset tables defined in both the foreign-to-Unicode
+data and the Unicode-to-foreign data sections: </p> <codeblock id="GUID-EEB02661-CB3D-5270-8FEA-A86259D4CAC4" xml:space="preserve">
+...
+StartForeignToUnicodeData
+#        IncludePriority    SearchPriority    FirstInputCharacterCodeInRange    LastInputCharacterCodeInRange    Algorithm            Parameters
+    StartAdditionalSubsetTable jisRomanConversionData
+        6                6                0x00                            0x5b                            Direct                {}        # ASCII characters [1]
+        5                2                0x5c                            0x5c                            Offset                {}        # yen sign
+        4                5                0x5d                            0x7d                            Direct                {}        # ASCII characters [2]
+        3                1                0x7e                            0x7e                            Offset                {}        # overline
+        2                4                0x7f                            0x7f                            Direct                {}        # ASCII characters [3]
+    EndAdditionalSubsetTable jisRomanConversionData
+    StartAdditionalSubsetTable halfWidthKatakana8ConversionData
+        1                3                0xa1                            0xdf                            Offset                {}        # half-width katakana
+    EndAdditionalSubsetTable halfWidthKatakana8ConversionData
+EndForeignToUnicodeData
+
+StartUnicodeToForeignData
+#        IncludePriority    SearchPriority    FirstInputCharacterCodeInRange    LastInputCharacterCodeInRange    Algorithm            SizeOfOutputCharacterCodeInBytes    Parameters
+    StartAdditionalSubsetTable jisRomanConversionData
+        6                1                0x0000                            0x005b                            Direct                1                                    {}        # ASCII characters [1]
+        5                2                0x005d                            0x007d                            Direct                1                                    {}        # ASCII characters [2]
+        4                3                0x007f                            0x007f                            Direct                1                                    {}        # ASCII characters [3]
+        3                5                0x00a5                            0x00a5                            Offset                1                                    {}        # yen sign
+        2                6                0x203e                            0x203e                            Offset                1                                    {}        # overline
+    EndAdditionalSubsetTable jisRomanConversionData
+    StartAdditionalSubsetTable halfWidthKatakana8ConversionData
+        1                4                0xff61                            0xff9f                            Offset                1                                    {}        # half-width katakana
+    EndAdditionalSubsetTable halfWidthKatakana8ConversionData
+EndUnicodeToForeignData
+...</codeblock> <p>The generated C++ source file by <filepath>cnvtool</filepath> contains
+multiple <codeph>SCnvConversionData</codeph> data structures: </p> <codeblock id="GUID-A3664842-0671-5C04-9E73-726B64BC8D92" xml:space="preserve">GLDEF_D const SCnvConversionData conversionData=
+    {
+    SCnvConversionData::EFixedBigEndian,
+        {
+        ARRAY_LENGTH(foreignVariableByteDataRanges),
+        foreignVariableByteDataRanges
+        },
+        {
+        ARRAY_LENGTH(foreignToUnicodeDataRanges),
+        foreignToUnicodeDataRanges
+        },
+        {
+        ARRAY_LENGTH(unicodeToForeignDataRanges),
+        unicodeToForeignDataRanges
+        },
+    NULL,
+    NULL
+    };
+
+GLREF_D const SCnvConversionData jisRomanConversionData;
+GLDEF_D const SCnvConversionData jisRomanConversionData=
+    {
+    SCnvConversionData::EFixedBigEndian,
+        {
+        ARRAY_LENGTH(foreignVariableByteDataRanges),
+        foreignVariableByteDataRanges
+        },
+        {
+        5-0,
+        foreignToUnicodeDataRanges+0
+        },
+        {
+        5-0,
+        unicodeToForeignDataRanges+0
+        }
+    };
+
+GLREF_D const SCnvConversionData halfWidthKatakana8ConversionData;
+GLDEF_D const SCnvConversionData halfWidthKatakana8ConversionData=
+    {
+    SCnvConversionData::EFixedBigEndian,
+        {
+        ARRAY_LENGTH(foreignVariableByteDataRanges),
+        foreignVariableByteDataRanges
+        },
+        {
+        6-5,
+        foreignToUnicodeDataRanges+5
+        },
+        {
+        6-5,
+        unicodeToForeignDataRanges+5
+        }
+    };
+</codeblock> <p>Using this technique means that two (or more) foreign character
+sets–where one is a subset of the other(s)–can share the same conversion data.
+This conversion data would need to be in a shared-library DLL which the two
+(or more) plug-in DLLs would both link to. </p> </section>
+<section id="GUID-29B10367-F31D-5756-9DAA-8E4840BAB042"><title>Conversion
+algorithm</title> <p>There are four possible conversion algorithms: </p> <ul>
+<li id="GUID-028531BA-31F0-5D0F-9F1F-CDCDB362F80C"><p> <codeph>Direct</codeph> is
+where each character in the range has the same encoding in Unicode as in the
+foreign character set, </p> </li>
+<li id="GUID-F6124B2A-AA6F-560D-8BAC-1BF88E40EBF4"><p> <codeph>Offset</codeph> is
+where the offset from the foreign encoding to the Unicode encoding is the
+same for each character in the range, </p> </li>
+<li id="GUID-FF176CC1-0BA1-57EA-9F37-34C41601A037"><p> <codeph>Indexed table
+(16)</codeph> is where a contiguous block of foreign character codes maps
+onto a random collection of Unicode character codes (the 16 refers to the
+fact that each Unicode character code must use no more than 16 bits), </p> </li>
+<li id="GUID-202AA338-1610-5F81-B249-74678F6D42C5"><p> <codeph>Keyed table
+(16-16)</codeph> is where a sparse collection of foreign character codes map
+onto a random collection of Unicode character codes (the 16 refers to the
+fact that each foreign character code and each Unicode character code must
+use no more than 16 bits). </p> </li>
+</ul> <p>Of the four conversion algorithms listed above, the keyed table is
+the most general and can be used for any foreign character set. However, it
+is the algorithm requiring the most storage space, as well as being the slowest
+(a binary search is required), therefore it is best avoided if possible. The
+indexed table also requires storage space (although less than the keyed table),
+but is much faster. The direct and offset algorithms are the fastest and require
+negligible storage. It is thus necessary to choose appropriate algorithms
+to minimize storage and to maximize speed of conversion. </p> <p>Ranges of
+characters in the control file are permitted to overlap. This is useful as
+it means that a keyed table whose range is the entire range of the foreign
+character set (or the Unicode character set) can be used at the end of the
+foreign-to-Unicode data (or Unicode-to-foreign data) to <b>catch</b> all the
+characters that were not <b>caught</b> by the preceding ranges, which will
+have used better algorithms. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2632A013-AA87-485E-855D-C50E211057D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2632A013-AA87-485E-855D-C50E211057D6" xml:lang="en"><title>Tactile
+feedback implementation example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is an implementation example of a simple tactile feedback enabled
+control. This example can help give you an overall understanding
+of what methods to implement and what are the typical actions in each function. </p>
+<p>The example control uses area registry for producing basic feedback on
+pointer down events, and instant feedback for producing sensitive feedback
+on drag events when the control’s state changes.</p>
+<p>The header file of the example control is presented below. </p>
+<codeblock xml:space="preserve">#include &lt;coecntrl.h&gt;
+
+class CMyTactileEnabledControl: public CCoeControl
+    {
+public:
+    CMyTactileEnabledControl();
+    virtual ~CMyTactileEnabledControl();
+
+public: // from CCoeControl
+    void HandlePointerEventL( const TPointerEvent&amp; aPointerEvent );
+    void SizeChanged();
+    void PositionChanged();
+    };</codeblock>
+<p>Note that you do not necessarily need to implement any new functions for
+supporting tactile feedback. But for non-window-owning controls that use area
+registry, you have to override <codeph>PositionChanged</codeph>, because otherwise
+you may end up with a situation where the control has been moved, but the
+feedback area still remains in its original place.</p>
+<p>The first part of the source file is presented below.</p>
+<codeblock xml:space="preserve">#include &lt;touchfeedback.h&gt;
+#include "mytactileenabledcontrol.h"
+
+CMyTactileEnabledControl::CMyTactileEnabledControl()
+    {
+    // No Tactile Feedback related actions needed 
+    // when the control is created.
+    }
+
+CMyTactileEnabledControl::~CMyTactileEnabledControl()
+    {
+    // Before destroying the control, you need to call 
+    // RemoveFeedbackForControl, first, for removing all remaining
+    // feedback areas, and, second, for clearing this control's   
+    // state information stored by the Tactile Feedback Client API.
+    MTouchFeedback* feedback = MTouchFeedback::Instance();
+    if ( feedback )
+        {
+        feedback-&gt;RemoveFeedbackForControl( this );
+        } 
+    }
+
+</codeblock>
+<p>The code above illustrates that usually nothing needs to be done (from
+the tactile feedback point of view) when a control is constructed, but you
+must always call <codeph>RemoveFeedbackForControl</codeph> at the destructor
+if you have added any feedback areas with the <codeph>SetFeedbackArea</codeph> function,
+or disabled or enabled feedback with the <codeph>EnableFeedbackForControl</codeph> function.</p>
+<p>Also notice that you must use <codeph>MTouchFeedback::Instance</codeph> in
+the destructor (and not any stored pointer), because in some rare cases the
+feedback system may already have been destroyed before the last controls are
+deleted.</p>
+<p>The remaining part of the source file is displayed below.</p>
+<codeblock xml:space="preserve">void CMyTactileEnabledControl::HandlePointerEventL(
+    const TPointerEvent&amp; aPointerEvent )
+    {
+    TBool stateChanged;
+
+    // (your code here)
+
+    if(aPointerEvent.iType == TPointerEvent::EDrag &amp;&amp; stateChanged)
+        {
+        // Producing sensitive feedback when dragging causes a state
+        // change (this kind of feedback triggering is not possible  
+        // by using area registry).
+        MTouchFeedback* feedback = MTouchFeedback::Instance();
+        if ( feedback )
+            {
+            feedback-&gt;InstantFeedback( ETouchFeedbackSensitive );
+            }
+        }
+    }
+
+void CMyTactileEnabledControl::SizeChanged()
+    {
+    // (your code here)
+    
+    // We have to update all feedback areas when control is resized.
+    // This is also enough for adding the feedback area in the first
+    // place, because SizeChanged is always called after control has
+    // been created and positioned on screen.
+    MTouchFeedback* feedback = MTouchFeedback::Instance();
+    if ( feedback )
+        {
+        feedback-&gt;SetFeedbackArea( 
+            this,
+            0, // Area index, use 0 when only one area in this control
+            Rect(), 
+            ETouchFeedbackBasic,
+            ETouchEventStylusDown );
+        }    
+    }
+
+void CMyTactileEnabledControl::PositionChanged()
+    {
+    // We have to update our feedback area when this control 
+    // is moved. One way to do this is to call SizeChanged here.
+    SizeChanged();    
+    }
+</codeblock>
+<p>You are recommended to put feedback area updates into a new <codeph>UpdateFeedbackAreas</codeph> function,
+and then to call this from both the <codeph>SizeChanged</codeph> and <codeph>PositionChanged</codeph> functions.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05-master.png has changed
Binary file Symbian3/SDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05_d0e62863_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7"><title>Message Store on a Phone </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains how the UI layer displays a Message Store to a phone user. </p> <p>A message centre application displays the structure of the Message Store to the user. Different UIs map the structure to different views. </p> <p> <b>Note:</b> The presentation of folders is done in the UI layer and not the Messaging API. </p> <section><title>Series 60</title> <p>The following figure shows the top level view of a message centre application on a Series 60 phone: </p> <fig id="GUID-10952493-82DF-53F1-8125-F59CA5C9684A"><title>
+             Series 60 message centre 
+          </title> <image href="GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e255459_href.png" placement="inline"/></fig> <p>In the figure, you can see that the message centre has hidden the local service and shows the standard folders at the same level as the services. Also the SMTP, SMS and MMS services are marked as hidden entries in the Message Store, and so do not appear in the message application. The outbox does not retain copies of sent messages, but are saved in the Sent folder. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2663ED06-8C97-5867-B7F6-6167EBFEA223.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2663ED06-8C97-5867-B7F6-6167EBFEA223" xml:lang="en"><title>Crypto Services</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Crypto Services enables handling of cryptographic keys, certificates and certificate applications. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2676BA6B-4BEB-5E2A-AD18-D2199465B121.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2676BA6B-4BEB-5E2A-AD18-D2199465B121" xml:lang="en"><title>Secure
+Software Install Tools Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <b>Secure Software Install Tools</b> collection contains PC-side tools
+which enable you to generate, sign and preinstall Symbian Installation files
+(SIS files). The collection also includes a set of tools, which enable you
+to extract information from SIS files, SWIcertstore and registry entries for
+analysis. </p>
+<section id="GUID-DBF1C87D-7360-54B7-8658-B6659BF77F06-GENID-1-6-1-4-1-1-4-1-3-1-2-2"><title>Components</title> <ul>
+<li id="GUID-C7789048-7132-5006-B4BF-A34FCB9935E0"><p><xref href="GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22.dita">MaKeKeys</xref> is
+a stand-alone tool that enables you to create a private key-public key pair
+and generate certificate requests. </p> </li>
+<li id="GUID-65A99BA9-1BA8-5038-A33C-2DA610FE6EFF"><p>The <xref href="GUID-9903E2AB-9D96-5005-8DC5-26653F93616C.dita">SWI
+Analysis Toolkit</xref> provides command-line tools that enable you to: </p> <ul>
+<li id="GUID-531EAE65-F0E2-5840-95DE-57147B49A603"><p>extract information
+from software install registry entries </p> </li>
+<li id="GUID-9F35AF6B-79A3-53AA-A191-2043CB5087E5"><p>extract certificate
+and its corresponding capabilities from SWIcerstore </p> </li>
+<li id="GUID-B250D3E8-3C29-543B-91B0-7AA50A8A8647"><p>validate certificate
+chains and extract capability details associated with a SIS file. </p> </li>
+</ul> </li>
+
+</ul> </section>
+<section id="GUID-31D8B375-90AF-43DF-A45D-F19C9D001056"><title>Using Secure
+Software Install Tools</title> <p>You can use this collection to perform the
+following tasks: </p> <ul>
+<li id="GUID-A2978F13-8D74-5DEF-8A45-8653A1BA8FD3"><p> <b>Create an installation
+file (SIS)</b>  </p> <p>You can create and sign an installation file. For
+more information, see <xref href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita">Creating
+and Signing an Installation File</xref>. </p> </li>
+
+<li id="GUID-FBB5012B-5439-5F4C-ACB2-7EB410328929"><p> <b> Extract certificate
+information from SWIcertstore</b>  </p> <p>You can extract information about
+certificates and their corresponding capabilities. For more information, see <xref href="GUID-49D979C8-C9B5-55A4-A496-9B62FC569D05.dita">DumpSWICertstoreTool</xref>. </p> </li>
+<li id="GUID-C9860F09-7CC7-5C69-89C4-934826C02A5D"><p> <b> Extract information
+from a Software Install Registry Entry</b>  </p> <p>You can extract information
+such as package UID, package name and vendor name from a registry entry. For
+more information, see <xref href="GUID-ABD45929-DEA1-5500-B64A-B32F623B6A06.dita"> DumpSWIRegistryTool </xref>. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita"><linktext>MakeKeys
+Overview</linktext></link>
+<link href="GUID-0554452F-856D-51A1-A1A5-C44EEFF7A3D4.dita"><linktext> SWI Analysis
+Toolkit                 Overview</linktext></link>
+<link href="GUID-AFE0238A-D6A4-5D07-BB99-85E8CF97BD26.dita"><linktext>Secure Software
+Install SIS Tools                 Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2699B8C9-54A0-4023-B92C-717208A82029-master.png has changed
Binary file Symbian3/SDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e316101_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-26D7BC6E-509C-51C5-9B86-437F3AEEB2EA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-26D7BC6E-509C-51C5-9B86-437F3AEEB2EA" xml:lang="en"><title>Exception Handling </title><shortdesc>Provides tutorials and an introduction to exception handling. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-26FC16BB-47D8-5DF6-9ABE-07526286597A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-26FC16BB-47D8-5DF6-9ABE-07526286597A" xml:lang="en"><title>Bitmap Animation</title><shortdesc>The section explain how to create animations using Bitmap Animation
+framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C"><title> Initializing And Processing an Image Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives you more information about Image Processor. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to initialize and process an image. </p> <p><b>Required background</b> </p> <p>Image Processor features are provided through the Imaging Frameworks and the Imaging Plug-ins components. </p> <p><b>Introduction</b> </p> <p>Every new instance of Image Processor must be initialized before processing. </p> <p><b>Initializing an image </b> </p> <p>You need to choose an input image you want to work with. You can start </p> <ul><li id="GUID-DDB8CA71-838F-539E-93E2-E0A7666573CC"><p>with an image file stored on flash memory or a hard drive </p> </li> <li id="GUID-D8DFE478-7542-5A43-BC51-61D294E5D8D9"><p>with a memory buffer containing an image of any of the supported image formats </p> </li> <li id="GUID-E7FFA3E5-F264-51F2-8420-C4B9CDE538BE"><p>with a Symbian bitmap or image frame </p> </li> <li id="GUID-60E1993A-51A7-5596-8D46-63F0BBB8D172"><p>by only specifying a background colour. </p> </li> </ul> <p>An image stored on file is the most likely option if you are building an editor (most mobile cameras store images in JPEG format on flash memory). If you transfer images from your Digital Still Camera (DSC) or your PC to your mobile phone, the images are probably stored as JPEG files. </p> <p>If you build a camera application, you receive viewfinder data from the camera module. In this case you will use Symbian bitmaps or image frames. </p> <p>If you want to start with an empty image, only specify the background colour. For example, if you want to create a collage of several images, you do not really have a main source image and it is memory efficient to set a ‘blank’ input. </p> <p><b>Processing an image </b> </p> <p>When you process an image, all the operations and settings you specified in your Image Processor instance are performed on your input image. </p> <p>There are three options to choose from to get the output format. In a mobile imaging application there are at least two formats you want your results in. You want to see a preview of the result on the screen of the mobile phone – in which case you render to a bitmap or image frame. When you are satisfied with the preview you want to apply the operations and effects on the source image that is usually significantly larger – you will then render to a file on the flash memory. </p> <p>To see a preview of the image call <xref href="GUID-77F2CAB1-78AC-3527-A8B3-D1B24D730A54.dita#GUID-77F2CAB1-78AC-3527-A8B3-D1B24D730A54/GUID-68B932DF-3E62-3018-BDCC-C720A0B5949C"><apiname>Imageprocessor::TPreview::RenderL()</apiname></xref>. To apply the effects on the source image to get a full resolution result call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-81D98D3A-7B5A-3D2E-81CE-A3F2F3D5BCA5"><apiname>ImageProcessor::CImgProcessor::ProcessL()</apiname></xref> which will render to the output you have set. </p> </section> <section><title>Using the image processor</title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-FEAF6932-E193-5177-BFCD-A2CB6FB8DFF3"><p><xref href="GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita#GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C/GUID-12E1341A-966C-5033-BEB0-6F2C0705CCE3">How to set an input image</xref>  </p> </li> <li id="GUID-1362E175-4652-5645-A1E8-2732F2DF9EE4"><p><xref href="GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita#GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C/GUID-F3DCFD1D-A5E2-5005-8598-621A96646514">How to set an output image</xref>  </p> </li> <li id="GUID-0FBDA00D-1738-52A7-B5F3-74E29E719D04"><p><xref href="GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita#GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C/GUID-681FC188-0A6C-5A18-8073-7CD55A18B010">How to process the image</xref>  </p> </li> </ul> <p id="GUID-12E1341A-966C-5033-BEB0-6F2C0705CCE3"><b>Basic procedure to set an input image</b> </p> <p>The various ways to set an input image are as follows: </p> <ul><li id="GUID-49FACCE8-1728-5E3C-96AF-048B402C563B"><p>To create an internal pixel buffer for an input image use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-F0B8B499-1782-313F-95D2-960A91AA8A3A"><apiname>ImageProcessor::CImgProcessor::CreateInputL(CFbsBitmap&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-8BBB9526-BCF0-5B12-909F-FCF107AE73F0"><p>To create an internal pixel buffer for an input image use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-207ABDE3-158A-340F-B8F1-5F73F2DB70DD"><apiname>ImageProcessor::CImgProcessor::CreateInputL(CImageFrame&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-FF4FA4E8-3090-57F3-B6AB-F2D69E3728D8"><p>To create an internal pixel buffer for an input image using a size and then initialize the source image with a colour use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-278503A5-4D72-305D-BCB0-0DF4FB922CFA"><apiname>ImageProcessor::CImgProcessor::CreateInputL(const TSize&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-9A7EAD5F-7F11-5C9E-944B-08D7A3D1F5E2"><p>To set or update an input image to a specified file name use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-8B07E48A-FF93-3A59-8C29-D37C2FE92B09"><apiname>ImageProcessor::CImgProcessor::SetInputL(const TDesC&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-C13CD1AE-BBDB-58E3-85CE-FBEF7B72DDB0"><p>To set or updated an input image to a file use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-36789050-2FD1-36EE-8B2F-E92EF35732C8"><apiname>ImageProcessor::CImgProcessor::SetInputL(RFile&amp; )</apiname></xref>. </p> </li> <li id="GUID-22F43407-00DE-59F9-BD3B-1CA53981B9E2"><p>To set or update a DRM protected input image use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-A1318F8A-D415-3416-945F-960D4A5F91F7"><apiname>ImageProcessor::CImgProcessor::SetInputL(TMMSource&amp; )</apiname></xref>. </p> </li> <li id="GUID-4FA894C9-857A-5FAC-A6FC-4F6755073980"><p>To set or update an input image from a memory buffer use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-0F3D9FA8-91BB-3C2A-B774-47B12F946991"><apiname>ImageProcessor::CImgProcessor::SetInputL(const TDesC8&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-1214AC4F-E0D9-585E-99B9-E7DCA7BC289C"><p>To set or update an input image from a provided bitmap use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-2A58C2C2-82B8-3FEE-9592-DDA899F5E276"><apiname>ImageProcessor::CImgProcessor::SetInputL(const CFbsBitmap&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-439696FB-08DE-541B-BA86-A13098DB052C"><p>To set or update an input image from a provided image frame use <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-4235276B-51D9-3FC9-94DB-E8055F921341"><apiname>ImageProcessor::CImgProcessor::SetInputL(const CImageFrame&amp;
+                  )</apiname></xref>. </p> </li> </ul> <p id="GUID-F3DCFD1D-A5E2-5005-8598-621A96646514"><b>Basic procedure to set an output image</b> </p> <p>The various ways to set an output image are as follows: </p> <ul><li id="GUID-DAB7C887-94E0-5654-BC42-C926D86D2C7A"><p>To set an output image image to a file call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-E7B8F47A-BCFA-3FC1-8947-D63D65151C2D"><apiname>ImageProcessor::CImgProcessor::SetOutputL(const TDesC&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-579ABD52-B3D8-5E53-A2BA-CB7869B18DDA"><p>To set an output image to a file represented by a file handle call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-C110C8DC-D83F-384E-B2F6-D394D55B7F1E"><apiname>ImageProcessor::CImgProcessor::SetOutputL(RFile&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-111D5DDA-677C-5F08-93D9-CE931CFED288"><p>To set an output image to the memory buffer call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-388BD9E0-FBAB-37E5-835B-0A875C2A0B94"><apiname>ImageProcessor::CImgProcessor::SetOutputL(RBuf8&amp; )</apiname></xref>. </p> </li> <li id="GUID-1B0AF58D-9ADB-59B7-99DD-CFE2701ED6A9"><p>To set an output image to a pixel buffer call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-4ADE2F1C-41C8-34E8-893C-17021849C72D"><apiname>ImageProcessor::CImgProcessor::SetOutputL(CImageFrame&amp;
+                  )</apiname></xref>. </p> </li> <li id="GUID-8534B622-766A-556B-B054-B78B9F2EDAD6"><p>To set an output image to an OS native bitmap call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-18200F37-819C-31C1-83ED-739DA4911EC1"><apiname>ImageProcessor::CImgProcessor::SetOutputL(CFbsBitmap&amp;
+                  )</apiname></xref>. </p> </li> </ul> <p> <b>Note:</b> Rendering is not performed when you set an output image. In case of setting the output image to a memory buffer <codeph>RBuf8</codeph> instance should not contain pre-allocated memory. </p> <p id="GUID-681FC188-0A6C-5A18-8073-7CD55A18B010"><b>Basic procedure to process the image</b> </p> <p>The high level steps to process an image are as follows: </p> <ul><li id="GUID-8DC5181E-E2B2-5767-A369-0F23389ED119"><p>To initialize the Image Processor instance call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-FF3D1D45-1330-3718-920E-D8EB135D2592"><apiname>ImageProcessor::CImgProcessor::InitializeL()</apiname></xref>. </p> <p> <b>Note:</b> By default the initialization of Image Processor is asynchronous. </p> </li> <li id="GUID-0EF128C0-719C-5072-955E-C03E17778D9F"><p>To set an input image call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-0448A658-7DD6-3767-82FC-1EE64B1CBEE3"><apiname>ImageProcessor::CImgProcessor::SetInputL()</apiname></xref>. </p> </li> <li id="GUID-A80B9E4D-EAE8-5F3F-A880-B15022D0AB4E"><p>To set an output image call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-D79E1EEA-5054-355E-8E61-E2AF5C7A229D"><apiname>ImageProcessor::CImgProcessor::SetOutputL()</apiname></xref>. </p> </li> <li id="GUID-74D87831-2393-5A6A-95B8-2F922056D014"><p>To retrieve information about an output image call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-537F658F-3246-3A50-B528-7D801339AD08"><apiname>ImageProcessor::CImgProcessor::TOutputInfo()</apiname></xref>. </p> </li> <li id="GUID-BCF98768-978D-54AF-B056-67A31342C7B8"><p>To set quality for an output image (in the case of JPEG output) call <xref href="GUID-408690CC-6F47-31B2-90B6-95C4049FEFFB.dita#GUID-408690CC-6F47-31B2-90B6-95C4049FEFFB/GUID-24974F21-B5D7-32DD-B8D8-757A2BA0AA55"><apiname>TOutputInfo::SetJpegQualityL(TReal32&amp; )</apiname></xref>. </p> </li> <li id="GUID-D5BCC7BF-8885-5A27-AF86-D06D63CFE8B7"><p>To process an input image and create the output image call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-81D98D3A-7B5A-3D2E-81CE-A3F2F3D5BCA5"><apiname>ImageProcessor::CImgProcessor::ProcessL()</apiname></xref>. </p> </li> </ul> <p><b>Example </b> </p> <codeblock id="GUID-8A927236-96E7-5A32-BD97-29A688BBE6A3" xml:space="preserve">
+
+ ImageProcessor::ImageProcessor::CImgProcessor* imageProcessor = ImageProcessor::ImageProcessor::CImgProcessor::NewL(iFs, observer);
+    CleanupStack::PushL(imageProcessor);
+    
+    // Initialize the Image Processor instance. By default the initialization is asynchronous.
+    // (It might take some time to load Image Processor plugin and initialize it).
+    imageProcessor-&gt;InitializeL();
+
+    // Wait for asynchronous callback
+    CActiveScheduler::Start();
+
+    // Set input and output images
+    imageProcessor-&gt;SetInputL(KInputFileName, KImageTypeJPGUid);
+    imageProcessor-&gt;SetOutputL(KOutputFileName, KImageTypeJPGUid);
+        
+    // Get the TOutputInfo interface
+    TOutputInfo* outputInfo = imageProcessor-&gt;OutputInfoL();
+
+    // Set 0.75 quality for an output image.
+    // (Note. Default quality value for an output image is the same as for the input image.)
+    TReal32 quality = 0.75f;
+    outputInfo-&gt;SetJpegQualityL(quality);
+
+    // Process the input image to an output image. 
+    // an output image size is QVGA and an output image keeps the same aspect ration as the input image.  
+    imageProcessor-&gt;ProcessL(TSize(320, 240), ETrue);
+
+    // Wait for asynchronous callback
+    CActiveScheduler::Start();
+
+    CleanupStack::PopAndDestroy(); //imageProcessor
+
+</codeblock> </section> </conbody><related-links><link href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita"><linktext>Adding Effects And Filters
+                Guide</linktext> </link> <link href="GUID-03866ADB-5916-5B31-BCF0-44F94E12B740.dita"><linktext>Pluggable Advanced Image Editing
+                Libraries</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27009193-6170-42B4-A258-E7B694EEC8EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27009193-6170-42B4-A258-E7B694EEC8EB" xml:lang="en"><title>Types
+of Alarm</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains the various types of alarms that are handled by the
+Alarm Server. </p>
+<p>Session alarms and Non-Session alarms are handled by the Alarm Server after
+creating a session using <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita"><apiname>RASCliSession</apiname></xref> function. </p>
+<section><title>Session Alarms </title> <p>The alarms that are removed from
+the alarm queue when the session disconnects are referred as Session Alarms.
+Session alarms can either be synchronous or asynchronous. </p> <p>The session-based
+alarms are defined by setting an alarm’s characteristics flag as <xref href="GUID-20A42BF7-A0F5-3177-9592-E3AE097B4CF2.dita#GUID-20A42BF7-A0F5-3177-9592-E3AE097B4CF2/GUID-EFA80EA7-423D-3B8E-A4CF-CD34325506E6"><apiname>TAlarmCharacteristics::EAlarmCharacteristicsSessionSpecific</apiname></xref>. </p> <p>Session Alarms are handled on behalf of a session with the Alarm Server.
+Each session is allowed to set only one Session Alarm. The server informs
+the session when to set the next alarm. If the session disconnects, the Session
+Alarm is cancelled. </p> <p>The Session Alarm is completed when the alarm
+expires, is cancelled, or a timing error occurs. </p> <p> <b>NOTE</b>: If
+the client session is closed before the alarm has expired, the Alarm Server
+automatically dequeues the alarm. </p> <p><b>Synchronous Session Alarms</b> </p> <p>To
+add a session alarm to the queue synchronously, use <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-45B0A300-B65E-3503-92AF-441DB44CD5CD"><apiname>RASCliSession::AlarmAdd()</apiname></xref>. </p> <p><b>Asynchronous
+Session Alarms</b> </p> <p>To add a session alarm to the queue asynchronously,
+use <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-D9A2FDAA-D303-349D-B099-A770021720CC"><apiname>RASCliSession::AlarmAddWithNotification()</apiname></xref>. If a client
+decides to cancel a Session Alarm, it must use <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-C8FAE669-D389-3921-8FBF-2D04F90B6CA6"><apiname>RASCliSession::AlarmNotificationCancelAndDequeue()</apiname></xref>.
+This requires that the ID of the alarm object be passed to the Alarm Server,
+so that it can correctly identify the Session Alarm to be removed. </p> </section>
+<section><title>Non-Session Alarms</title> <p>The alarms that continue to
+persist in the alarm queue, even after their session owner which added these
+alarms disconnect, are referred as Non-Session alarms. They are independent
+of the client that set them. </p> <p>Non-Session alarms are also referred
+as Orphaned Session alarms because these alarms are orphaned with no session
+owners. </p> </section>
+<section><title>Wake-Up Alarms</title> <p>An alarm that wakes-up the device,
+if the device is switched OFF when the alarm expires, is referred to as Wake-Up
+alarm. If the device is in the normal state, then it works as a clock alarm. </p> <p>It
+is set using <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-92A40392-98CC-3BEA-AD92-0566C88905D9"><apiname>RASCliSession::SetWakeup</apiname></xref>, by passing the unique
+identifier of the alarm. </p> <p>A wake-up alarm that has been set and not
+started alerting the device user is referred as an active Wake-Up alarm. Alarm
+Server sets <codeph>EActiveWakeupAlarmSet</codeph> value if there are active
+wake-up alarm(s) else, it sets <codeph>EActiveNoWakeupAlarmsSet</codeph> value. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,822 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE" xml:lang="en"><title>Full
+Example Code List</title><shortdesc>This document lists the example code available for each module
+and collection in the OS. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following tables are grouped by module and collection. In each table,
+the left hand column gives a link to the overview for the example. The overviews
+describe the example's purpose, the APIs it demonstrates, how to build and
+run it, and they provide a link to download the example's source code. </p>
+<p>In most cases, the name in the left hand column is the example's mmp filename.
+If the example has more than one mmp file, the name of its directory is used.
+The right hand column gives a summary of the main purpose of the example. </p>
+<section id="GUID-232B69FE-BA35-4F73-9D02-8AA4AF56BF21"><title>Symbian
+OS Fundamentals</title> <table id="GUID-E490B3BF-655E-54B4-9BBA-A611CDE71E84">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita">HelloWorld</xref>  </p> </entry>
+<entry><p>Most basic console application. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita">CClasses</xref>  </p> </entry>
+<entry><p>Shows a basic 'C' class and use of the cleanup stack. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita">TAndRClasses</xref>  </p> </entry>
+<entry><p>Shows a typical 'T' and 'R' class. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita">MClasses1-3</xref> </p> </entry>
+<entry><p>Shows the use of 'M' (abstract interface) classes. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita">StaticDLL</xref>  </p> </entry>
+<entry><p>Shows how a statically linked DLL is used. </p> </entry>
+</row>
+
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-C63FEA4F-7990-4B27-8FC2-61E135D2B9F7"><title>Application
+Framework</title> <table id="GUID-DA03E4DB-2487-5830-8260-6E46A2352CC9">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+
+
+
+
+<row>
+<entry><p><xref href="GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA.dita">BmpAnimGui</xref>  </p> </entry>
+<entry><p>Shows how to create an animation using the Bitmap Animation framework. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita">HelloWorld</xref>  </p> </entry>
+<entry><p>Shows how to create a simple GUI application with a single view. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+
+<section id="GUID-168B118B-60A7-4B3F-8B3C-E5A31C3BB4DD"><title>Communications
+Framework</title>   <p><b>Data Server</b> </p> <table id="GUID-D81EC559-A691-5CAE-B68A-186E9D5327B7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita">Rconnection</xref>  </p> </entry>
+<entry><p>Shows how to use the RConnection API for connection monitoring and
+management. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-4718435B-C311-493F-8573-F41E9DB43C77"><title>Device Services</title> <p><b>System
+State Management</b> </p> <table id="GUID-4CFC79CC-7715-5050-89D4-A667DE47350A">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita">ssmanager</xref>  </p> </entry>
+<entry><p>Shows how to use the System State Manager. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-39EA7ED9-FFAE-49C9-9CA4-D5B9B88F4936"><title>Generic Application
+Support</title> <p><b>Common App Services</b> </p> <table id="GUID-2524D0A4-8C06-56C6-A85F-B817B01E7FBD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-74153585-D483-5761-85B6-2CF2D2615C00.dita">AlarmServerExample</xref>  </p> </entry>
+<entry><p>Shows the client API to the alarm server. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>   </section>
+<section id="GUID-24F27D44-502A-4E44-B1DC-DAD71E919DBB"><title>Generic OS
+Services</title> <p><b>Compression Libraries</b> </p> <table id="GUID-811B841F-02DA-5C33-B681-8E9E13E66566">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita">EzlibExample</xref>  </p> </entry>
+<entry><p>Shows how to use the EZLIB API to do file extraction and compression. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Generic Open Libraries</b> </p> <table id="GUID-20DF4858-3D0D-53C8-8BD8-46E48CF7F4DF">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita">FileAccessExample</xref>  </p> </entry>
+<entry><p>Shows accessing the file system using P.I.P.S. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita">HelloWorldExample</xref>  </p> </entry>
+<entry><p>Creates a simple P.I.P.S. DLL and EXE to demonstrate function lookup
+by name rather than by ordinal. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita">hybridapp</xref>  </p> </entry>
+<entry><p>Shows a P.I.P.S. 'hybrid' application that uses both C and native
+Symbian C++ APIs. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita">IPC</xref>  </p> </entry>
+<entry><p>Shows inter-process communication in P.I.P.S. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-092C18D4-A525-5562-9BF6-41435E400290.dita">LibpThreadExample</xref>  </p> </entry>
+<entry><p>Shows simple multi-threading and synchronisation in P.I.P.S. using <filepath>libpthread.dll</filepath>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita">libmexample</xref>  </p> </entry>
+<entry><p>Shows the P.I.P.S. Standard C maths library, <filepath>libm.dll</filepath>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-C5E99BB6-0CBE-51AE-882D-37D004106A2F.dita">ConsoleApp</xref>  </p> </entry>
+<entry><p>Shows a simple console-based STDLIB (C Standard library) program
+that converts quantities from one unit of measurement into another. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-30DBE93F-1255-533F-9B02-4E19E248D065.dita">GUIApp</xref>  </p> </entry>
+<entry><p>Shows a Techview GUI application whose engine is written using STDLIB. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-F1BDE1DB-2749-52F4-AC9B-74A5D9A32A67.dita">Hello</xref>  </p> </entry>
+<entry><p>The simplest possible STDLIB example. </p> </entry>
+</row>
+<row>
+
+<entry><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">posixsignals</xref></p></entry>
+<entry><p>Shows various signal use cases as supported in P.I.P.S. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Generic Services</b> </p> <table id="GUID-7971259C-075D-5D0D-BD52-7ADF5B724CB7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita">exampleRecognizer</xref>  </p> </entry>
+<entry><p>Shows how to write a simple data recognizer. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita">InetProtUtilExample</xref>  </p> </entry>
+<entry><p>Shows how to use the InetProtUtil API, for instance to
+create and manipulate a URI. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-8B938FEF-4D70-4589-921C-C99667193E20.dita">TaskSchedulerExample</xref>  </p> </entry>
+<entry><p>Shows how to schedule and run tasks using the Task Scheduler
+API. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Low level Libraries and Frameworks</b> </p> <table id="GUID-8E40A60D-C8BE-5C7D-9415-8D8E25F2DD98">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita">Basics</xref>  </p> </entry>
+<entry><p>Shows how to store and restore objects using the clipboard
+API. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">InterfaceClient</xref>  </p> </entry>
+<entry><p>One of a set of three related ECom examples that provide
+an interface definition, a DLL that contains two implementations of that interface,
+and a client program that uses the interface. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E4E656BF-E5F7-5125-AE88-60C3E9FCF0D2.dita">InterfaceDefinition</xref>  </p> </entry>
+<entry><p>See InterfaceClient, above. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-711C387D-E10C-5469-872A-5B2BDACC9B91.dita">InterfaceImplementation</xref>  </p> </entry>
+<entry><p>See InterfaceClient, above. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-1DF62CB5-FB81-5802-9071-E492B0C81065.dita">ReadText</xref>  </p> </entry>
+<entry><p>Most basic resource file example, shows how to read a
+string resource and print it to the console. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E736B50D-F671-5CCB-A245-BA9791ADA395.dita">ReadArray</xref>  </p> </entry>
+<entry><p>Shows how to load data from a resource file into an array. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita">MultiRead1</xref>  </p> </entry>
+<entry><p>Shows how to open a single resource file and read a resource
+from it into a descriptor. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB.dita">MultiRead2</xref>  </p> </entry>
+<entry><p>Shows how to open and read from multiple resource files. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-4820CA37-982D-57BC-8829-498192801B1E.dita">ReadData</xref>  </p> </entry>
+<entry><p>Shows how to use a resource reader to read data of various
+types from a resource file into the data members of a class. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita">EUser
+High Level Library</xref>  </p> </entry>
+<entry><p>Shows how to use EUser High Level library classes and
+APIs </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita">SigCheck</xref>  </p> </entry>
+<entry><p>Shows how the signature of a resource file is checked
+before use. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>XML</b> </p> <table id="GUID-C96C15A1-43A5-54FD-A915-59E294BEBCD4">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita">XmlExample</xref>  </p> </entry>
+<entry><p>Shows how to use the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita"><apiname>Xml</apiname></xref> framework to parse XML
+and WBXML files. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-FE7F12C1-BC54-497F-8C56-47603FFF7E2B"><title>Graphics</title> <p><b>Font
+and Bitmap Server</b> </p> <table id="GUID-771EBF67-9F0D-51F0-ACBD-25065010D510">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita">BitmapsShell</xref>  </p> </entry>
+<entry><p>Shows how to draw and manipulate bitmaps. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>      <p><b>General</b> </p> <table id="GUID-71B3C013-28C3-528A-93D7-2AB2D299FF4D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita">GraphicsShell</xref>  </p> </entry>
+<entry><p>A TechView application that demonstrates drawing points, lines and
+shapes, and zooming a bitmap and text. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-17DB3D43-7E0D-4D82-92ED-74708A633349"><title>High Level
+Internet Protocols</title> <p><b>Application Layer Protocols</b> </p> <table id="GUID-5B118134-BB1C-505C-929C-EAF014205AEF">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita">httpexampleclient</xref>  </p> </entry>
+<entry><p>A console application that provides a menu-driven interface to demonstrate
+the HTTP API. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>IMS and Streaming</b> </p> <table id="GUID-AF7CEA78-D5CD-5290-859E-44FADE28E529">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita">RTPExample</xref>  </p> </entry>
+<entry><p>Shows RTP packet streaming. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-0EC84F5C-D843-4819-8962-EE17367E63F4"><title>Kernel and
+Hardware Services</title>   <p><b>User Library</b> </p> <table id="GUID-7C3C9842-5B1F-58C7-8FE3-61210C6BFBE5">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">AdvancedClientServerExample</xref>  </p> </entry>
+<entry><p>Shows the use of asynchronous and synchronous client/server APIs
+using a logical device driver (LDD) and a physical device driver (PDD). </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-9D95DEED-4E6A-5139-9188-DD7FA0A4B906">SingleRequest</xref>  </p> </entry>
+<entry><p>Shows the basic principles of asynchronous programming by issuing
+and waiting for completion of a single request. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-D9B89770-81F8-52ED-848E-F79A92858C37">WaitLoop</xref>  </p> </entry>
+<entry><p>Shows how a wait loop can be used to identify and handle a completed
+request. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-F6C2B633-E744-5B40-819D-6615406A9664">RealLifeWaitLoop</xref>  </p> </entry>
+<entry><p>Shows how the wait loop can deal with multiple asynchronous service
+providers. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-D3EA20C0-AF5C-5AFE-8014-48CB92851463">RunComplete</xref>  </p> </entry>
+<entry><p>Shows how active objects and an active scheduler can be used to
+handle asynchronous events, using a timer. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-802DB10F-150B-5A76-BFC8-A7E8EB4A68D6">AcceptInput1-2</xref>  </p> </entry>
+<entry><p>Shows how active objects and an active scheduler can be used to
+handle asynchronous events, using keyboard input. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-1BEA3D45-21A2-54AB-ABBD-EF23716FE6B5">AcceptPrintInput</xref>  </p> </entry>
+<entry><p>Shows how active objects and an active scheduler can be used to
+handle accept and print keyboard inputs to a console. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-AD4D25CA-B0BF-54BD-8029-DD495AB56C5E">Fibonacci1-3</xref>  </p> </entry>
+<entry><p>Shows how active objects and an active scheduler can be used to
+handle asynchronous events and long-running services to maintain system responsiveness. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita">circularbuffer</xref>  </p> </entry>
+<entry><p>Shows how to construct and use circular buffers holding different
+types of objects. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-BFDD4BF0-E60A-5996-B83D-4DE3EACA93FD">Simple</xref>  </p> </entry>
+<entry><p>Shows a simple client that has a single session with a server. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-544EE3A6-86A2-57FF-A13B-94658F1DCA16">Complex</xref>  </p> </entry>
+<entry><p>More complex client/server example, where the server supports multiple
+subsessions within a session. </p> </entry>
+</row>
+
+<row>
+<entry><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita#GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71/GUID-8209AA7E-0DFB-512D-9BEB-9063BA617BC5">condvarglobal</xref>  </p> </entry>
+<entry><p>Shows the use of the global condition variable IPC mechanism. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita#GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71/GUID-8CF8C4E2-4D74-54C8-9601-97CC44B9C943">condvarlocal</xref>  </p> </entry>
+<entry><p>Shows the use of the local condition variable IPC mechanism. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-6B6532D0-6346-51E4-BC7A-6E8487EF8BA1.dita">Basics</xref>  </p> </entry>
+<entry><p>Shows date and time handling. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-90645A43-313B-55FC-91D0-547C237B680B">BinaryData</xref>  </p> </entry>
+<entry><p>Shows how descriptors can handle general binary data by explicitly
+using the 8 bit descriptor class variants. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-FC2B9B70-F849-5F19-9F3C-25D5FDCC576D">Buffer</xref>  </p> </entry>
+<entry><p>Shows the basic idea of buffer descriptors and how they are used. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-5040249B-55ED-5ACD-837B-6B0FD4AF24FE">InFunct</xref>  </p> </entry>
+<entry><p>Shows how to use descriptors as function arguments. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-CE601E1E-AF03-56E8-B7FB-0CDFF4EA4386">HeapBuffer</xref>  </p> </entry>
+<entry><p>Shows how to create and use the heap buffer descriptor <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-C79042EB-4ACF-5972-9F57-E7C0F37DECF6">Modifier</xref>  </p> </entry>
+<entry><p>Shows how to use the modifiable descriptor class <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-927CFF04-C0D1-5BDE-B221-4245113924F7">NonModifier</xref> </p> </entry>
+<entry><p>Shows how to use the non-modifiable descriptor class <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-5AEFA6EB-A100-5B96-935D-2537EEFB56F5">Pointer</xref>  </p> </entry>
+<entry><p>Shows how to use pointer descriptors. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-1636C0BB-9B23-5C47-8F26-CF080DBE64EB">WriteToFile</xref>  </p> </entry>
+<entry><p>Basic example that shows how to write text to a file. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">DynamicArrays</xref>  </p> </entry>
+<entry><p>Shows how to construct and use dynamic arrays. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">DynamicBuffers</xref>  </p> </entry>
+<entry><p>Shows how to use the flat and segmented buffer classes. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita">DLLs</xref> </p> </entry>
+<entry><p>Implements two polymorphic DLLs and shows how to load and use them. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-CEB1E9D7-3FAB-58D4-BD07-E924D0B87555.dita">RangeChecking</xref>  </p> </entry>
+<entry><p>Shows how to use the range checking wrapper class for C++ arrays
+(<xref href="GUID-1EC847DC-6858-3BEE-A5B2-F7737F1D50AD.dita"><apiname>TFixedArray</apiname></xref>). </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita">hashtableexample</xref>  </p> </entry>
+<entry><p>Shows how to use the hash table APIs. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-3321A4E7-8652-511F-8A17-E816F5731E94.dita">Lexer</xref>  </p> </entry>
+<entry><p>Shows how to use the lexical analyser, <xref href="GUID-C94AB4F0-AE42-3957-A037-77CB145DDBF8.dita"><apiname>TLex</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita">linkedlist</xref>  </p> </entry>
+<entry><p>Shows how to use singly and doubly linked lists and the delta queue
+class. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-09FC1F03-B5EB-5228-832B-C64D95AEA05B.dita">Currency</xref>  </p> </entry>
+<entry><p>Shows locale-specific representation of currency values and symbols. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita">localeupdate</xref>  </p> </entry>
+<entry><p>Shows how to load a locale DLL and read settings from it. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-9CAE0C86-537A-500F-B361-D555DD39954B">ErrorOnFail</xref> </p> </entry>
+<entry><p>Shows use of the <codeph>TRAPD</codeph> macro, the cleanup stack
+and the process of leaving. Returns an error code on failure. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-E80C29CC-0282-5350-8077-BB298B7590C0">LeaveOnFail</xref> </p> </entry>
+<entry><p>As the <codeph>ErrorOnFail</codeph> example except it leaves on
+failure. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-279FBD9A-0E61-50ED-9618-BAB24AC3163C">ELeaveOnFail</xref>  </p></entry>
+<entry><p>As the <codeph>LeaveOnFail</codeph> example except it calls <codeph>new
+(ELeave)</codeph> rather than <codeph>new</codeph>. </p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-C7E94BD9-9B77-548C-A3C2-D5A396F20EF0">TrapD</xref>  </p> </entry>
+<entry><p>Shows the use of the <codeph>TRAPD</codeph> macro. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-12F30817-5CE0-5B6E-A850-7179BE915539">PushLAndPop</xref> </p> </entry>
+<entry><p>Shows the use of the cleanup stack and its functions <codeph>PushL()</codeph> and <codeph>Pop()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-548F79C2-3394-5D86-8E70-B219E49288C7">PushLPopDest</xref>  </p> </entry>
+<entry><p>Shows the use of the cleanup stack and its functions <codeph>PushL()</codeph> and <codeph>PopAndDestroy()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-5975C52F-726D-5DB1-8CE4-7F52DC202B43">NewL</xref>  </p> </entry>
+<entry><p>Shows use of the <codeph>NewL()</codeph> static function. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-53F042FC-401F-5AD7-8F60-ECD15EB1069F">NewLC</xref>  </p> </entry>
+<entry><p>Shows use of the <codeph>NewLC()</codeph> static function. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-4559C2AC-0DA8-5788-A33C-2E20EFEF6D58">SimpleOOM</xref>  </p> </entry>
+<entry><p>Shows cleanup handling for compound classes. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-2E3E6224-BE1C-5DA1-BEA0-D28CD7DA40E8">MemLeakOOM</xref>  </p> </entry>
+<entry><p>Shows cleanup handling for compound classes, and avoiding memory
+leaks. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-068C17E6-0E3C-571B-92D1-421EEF42E6A0">TwoPhaseOOM</xref>  </p> </entry>
+<entry><p>Shows the two phase construction technique. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-D0A1DF34-2499-5F7E-80D1-0BFF74882EA6">TAnyRObjects1</xref>  </p> </entry>
+<entry><p>Shows how cleanup can be implemented for <codeph>TAny*</codeph> type
+objects and 'R' type (resource type) objects. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-C42BF40F-94C4-5845-B449-164AD4578691">TAnyRObjects2</xref>  </p> </entry>
+<entry><p>As <codeph>TAnyRObjects1</codeph> except it calls <codeph>OpenLC()</codeph> to
+open the file and push it onto the cleanup stack in one function call. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita#GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1/GUID-C4F81443-E41D-52C6-9305-A1B7E45A1DC5">Utilities</xref>  </p> </entry>
+<entry><p>Shows how to use the cleanup functions <codeph>CleanupDeletePushL()</codeph>, <codeph>CleanupClosePushL()</codeph> and <codeph>CleanupReleasePushL()</codeph>, and <codeph>CleanupArrayDeletePushL()</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita">MessageQueueExample</xref>  </p> </entry>
+<entry><p>Shows the use of the message queue in interprocess communication. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita">pubsub</xref>  </p> </entry>
+<entry><p>Shows the Publish and Subscribe IPC mechanism. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita">rbufexample</xref>  </p> </entry>
+<entry><p>Shows how to use the resizable buffer descriptor class <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita">SecureServer</xref>  </p> </entry>
+<entry><p>Shows how to use the policy server framework. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita">tcharexample</xref>  </p> </entry>
+<entry><p>Shows how to use the single character class, <xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita"><apiname>TChar</apiname></xref>,
+and its derived classes. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-47F14C10-3ACD-583C-9E7D-84641229A771.dita">TLS1</xref> </p> </entry>
+<entry><p>Shows the use of thread local storage (TLS) in a DLL, that is set
+and accessed from a separate executable. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita">ThreadRendezvous</xref>  </p> </entry>
+<entry><p>Shows the principle of synchronisation using the thread rendezvous
+technique. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita#GUID-086939FA-D381-5705-BEE6-6DF2D3624849/GUID-3205DDD3-D057-56BF-8F64-CF1AFF52619B">BasicTimer</xref>  </p> </entry>
+<entry><p>Shows the asynchronous timer class <xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita"><apiname>RTimer</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita#GUID-086939FA-D381-5705-BEE6-6DF2D3624849/GUID-0554FACD-5075-5C8D-8634-F60D31D1EDB7">Periodic</xref>  </p> </entry>
+<entry><p>Shows the differences between a periodic and a heartbeat timer. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">resourcemanager</xref>  </p> </entry>
+<entry><p>Shows how to use the Power Resource Manager framework. </p> </entry>
+</row>
+
+<row>
+<entry><p><xref href="GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita">SemaphoreExample</xref></p></entry>
+<entry><p>Shows how to use semaphores for a multithreading application.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-34060D5F-86E7-48CA-B26B-550B45678232"><title>Messaging Middleware</title> <table id="GUID-1DA226AB-62D4-5957-AB83-131545DC9316">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita">TextMTM</xref>  </p> </entry>
+<entry><p>Several example projects that show how to use the Messaging APIs. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">SearchSortExample</xref>  </p> </entry>
+<entry><p>Shows how to use the enhanced search and sort API for message stores. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">BIOMessageMgr</xref>  </p> </entry>
+<entry><p>Shows BIO messaging and parsing the BIO message. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita">SendAs2Example</xref>  </p> </entry>
+<entry><p>Shows how to use the SendAs v2 protocol for sending messages. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-BDABE08F-ACC4-4949-A07A-3D99B2DC29EB"><title>Messaging Applications</title> <table id="GUID-B29214E5-2861-5638-BF15-FB301E67E487">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">smsexample</xref>  </p> </entry>
+<entry><p>Shows how to send and receive SMS messages using the Messaging Framework
+APIs. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">Pop3Example</xref>  </p> </entry>
+<entry><p>Shows how to create SMTP (Simple Mail Transfer Protocol) and POP
+(Post Office Protocol) accounts to send and receive emails. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">Imap4Example</xref>  </p> </entry>
+<entry><p>Shows how to create SMTP and IMAP (Internet Message Access Protocol)
+accounts to send and receive emails. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-22A35A82-E063-46A7-A0A7-6394759E4D8E"><title>Multimedia</title> <p><b>Multimedia
+APIs and Frameworks</b> </p> <table id="GUID-1C3366A7-3443-55AC-BF5C-CDBC6E8024FC">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-4-1-6-1.dita">ICLCodec</xref>  </p> </entry>
+<entry><p>Shows how to implement encoder and decoder plug-ins for the Image
+Converter Library. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">ICLExample</xref>  </p> </entry>
+<entry><p>Shows how to convert still images, stored in files or descriptors,
+to and from bitmap objects using the Image Conversion Library (ICL) API </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita">ImageConv</xref>  </p> </entry>
+<entry><p>Shows how to convert between standard graphics formats to and from <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> s,
+and how to rotate, flip, and zoom images. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita">CameraExample</xref>  </p> </entry>
+<entry><p>Shows how to use the Camera API to capture and control images. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-0F7A7186-770F-40FC-A982-01D951F1CD61"><title>Multimedia
+Middleware</title> <p><b>Multimedia Middleware Frameworks</b> </p> <table id="GUID-19C93D72-DEA0-502B-8DA7-296B8E232DA4">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">AudioClientEx</xref>  </p> </entry>
+<entry><p>Shows how to use the Multimedia Framework's client audio interfaces
+to play and record audio. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita">MmfExCodec</xref>  </p> </entry>
+<entry><p>Shows how to implement a codec plug-in for the Multimedia Framework
+to convert media data. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita">MmfRAWFormat</xref>  </p> </entry>
+<entry><p>Shows how to implement format encoder and decoder plug-ins for the
+Multimedia Framework. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1.dita">MmfExSinkSource</xref>  </p> </entry>
+<entry><p>Shows how to implement sink and source plug-ins for the Multimedia
+Framework. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita">MmfRec</xref> </p> </entry>
+<entry><p>Shows how to record short audio clips using each format that the
+system supports. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+
+<section id="GUID-66B052D5-ACB3-4F1B-95AF-7DF26B5AB321"><title>PC Tools </title> <p><b>Secure
+Software Install Tools</b> </p> <table id="GUID-26626F66-7CE7-555D-9AC0-5E44A7F1C857">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-AED57265-6106-4217-ADE6-1327CA3FDE7E.dita">HelloWorld</xref>  </p> </entry>
+<entry><p>Shows how to create a simple installation file for an application. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita">HelloWorld</xref>  </p> </entry>
+<entry><p>Shows how to create an installation file for a multilingual application. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+
+
+
+<section id="GUID-2B79AC46-4196-420D-89F5-60765B71E479"><title>System GUI
+Framework</title> <p><b>Look-and-Feel Agnostic UI Foundation</b> </p> <table id="GUID-5DFE048E-1B3F-51F8-9687-8EB439A0B477">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+
+<row>
+<entry><p><xref href="GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita">ClockExample</xref>  </p> </entry>
+<entry><p>Shows how to create and display digital and analogue clocks. </p> </entry>
+</row>
+
+
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-B3B98109-68EC-4E00-B365-F34EE1B84EEA"><title>Remote Connectivity</title><table id="GUID-4F10A504-9BE7-4903-8B5A-2E6AA743E171">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+<row>
+<entry><p><xref href="GUID-CE1F63A6-BF8E-4287-BECE-0248420C86AB.dita">MTPDataProvider</xref>  </p></entry>
+<entry><p>Show how to implement a MTP data provider plugin.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-270FC83E-1D47-4CF9-A560-FB5DDA53111E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-270FC83E-1D47-4CF9-A560-FB5DDA53111E" xml:lang="en"><title>Showing
+or hiding the toolbar extension</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The toolbar extension is automatically shown when the extension button
+is pressed. </p>
+<p>The extension button is in a latched down state when the extension is open.
+If the extension button is pressed again, the extension closes and the extension
+button returns to normal state. This also happens if the user clicks somewhere
+outside the extension area.  </p>
+<p>By default, the extension is left open when the user selects an item from
+the extension. You can change this by defining suitable flags to the button.</p>
+<p>The example below shown the definition of a toolbar extension with the
+button closing the extension when selected.</p>
+<codeblock xml:space="preserve">RESOURCE AVKON_TOOLBAR_EXTENSION r_myapp_toolbar_extension
+    {
+    items =
+        {
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdExtFirst;
+            control = AVKON_BUTTON
+                {
+                flags = KAknButtonRequestExitOnButtonUpEvent;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        extension = r_myapp_toolbar_ext_first;
+                        }  
+                    };
+                };
+            },
+…
+            }
+        };
+    }
+</codeblock>
+<p>You can also show or hide the toolbar extension in your application using
+the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknToolbarExtension.html" format="application/java-archive"><codeph>CAknToolbarExtension</codeph></xref>.</p>
+<p>The example below shows how to hide or show the toolbar extension.</p>
+<codeblock xml:space="preserve">void CMyAppView::ChangeToolbarExtensionVisibility( TBool aHide )
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknToolbarExtension* toolbarExtension = toolbar-&gt;ToolbarExtension();
+        if ( toolbarExtension )
+            {
+            if ( aHide )
+                {
+                toolbarExtension-&gt;SetShown( EFalse );
+                }
+            else
+                {
+                toolbarExtension-&gt;SetShown( ETrue );
+                }
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16" xml:lang="en"><title>SqlExample:
+Creating and querying an SQL database</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application demonstrates the use of the SQL API for creating
+and querying a database. </p>
+<section id="GUID-8941D325-DE9F-571B-9EAB-C8F675155EEE"><title>Description</title> <p><b>Creating
+the database</b> </p> <p>You can create two types of databases; secure and
+non-secure. </p> <ul>
+<li id="GUID-3C94A459-7CD3-5B6C-94D9-235F714FD53E"><p> <b>Non-secure database:</b> A
+database that can be accessed and updated by any program since no security
+policy is provided. </p> </li>
+<li id="GUID-1D128D45-7D64-5BB3-A350-FB13CBD4CEE6"><p> <b>Secure database:</b> A
+database with static policy defined and therefore can be accessed by authorised
+clients with specific capabilities. </p> </li>
+</ul> <p><b>Creating a non-secure database</b> </p> <p>The application first
+creates an <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref> object and creates a non-secure
+SQL database using the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-0F4435A7-C28C-342F-AC90-73FABDE6F5DD"><apiname>RSqlDatabase::Create()</apiname></xref> function.
+The database is then closed. Finally the database is deleted using the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-27BE67CC-037F-3533-A3B4-E3CC4879EA1C"><apiname>RSqlDatabase::Delete()</apiname></xref> function. </p> <p>The
+format for naming the non-secure database would be the following: </p> <codeblock id="GUID-B8E067E8-99B1-56EF-9646-589D38156F90" xml:space="preserve">X:&lt;path&gt;&lt;database-name&gt;.db</codeblock> <p>where, <codeph>X</codeph> is
+the writable drive on the device or the emulator. </p> <p>If path is not specified,
+it returns the <codeph>KErrArgument</codeph> error, and if the specified path
+is not writable by SQL server, the application returns <codeph>KErrPermission</codeph> error.
+In this example, the application will create the database in its own data
+area, pass a handle to the database to enable the data manipulation by the
+SQL server. </p> <p> <b>Note:</b> You cannot create two databases with the
+same name in a location </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref> - A handle to a SQL database.</p></li>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-0F4435A7-C28C-342F-AC90-73FABDE6F5DD"><apiname>RSqlDatabase::Create()</apiname></xref></p></li>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-27BE67CC-037F-3533-A3B4-E3CC4879EA1C"><apiname>RSqlDatabase::Delete()</apiname></xref></p></li>
+</ul> <p><b>Creating a secure database</b> </p> <p>To create a secure database,
+you need to provide the following: </p> <ul>
+<li id="GUID-AF260BF8-D103-5A08-8BF4-3B8F9F658DBF"><p>UID of the application </p> </li>
+<li id="GUID-BCA90A2B-241A-5636-9A2C-080DF6EAAF61"><p>security policy </p> </li>
+</ul> <p><b>UID </b> </p> <p>You need to use the UID of the example application
+to name the database. </p> <p>The format for naming the database would be
+the following: </p> <codeblock id="GUID-768E0B87-B08B-5484-AED0-072D3840CC5B" xml:space="preserve">X:&lt;UID&gt;&lt;name&gt;.db</codeblock> <p>where, </p> <ul>
+<li id="GUID-328D11AC-814B-532C-8FEA-A0BB467A0CC2"><p> <codeph>X</codeph> is
+the drive in which the database is created </p> </li>
+<li id="GUID-12C3F6BD-2E50-5FFE-8B1C-2B73A40C88E6"><p> <codeph>UID</codeph> is
+the UID of the application that creates the database </p> </li>
+<li id="GUID-3FA9C3C5-903B-58CD-B509-335686E72BD4"><p> <codeph>name</codeph> is
+any valid database name. You should not specify the complete path of the database. </p> </li>
+</ul> <p>To successfully create and use a secure database, you must have appropriate
+capabilities such as <codeph>READUSERDATA</codeph>, <codeph>WRITEUSERDATA</codeph>.
+The example application uses <codeph>NETWORKCONTROL</codeph> capablity along
+with above specified capabilities. </p> <p> <b>Note:</b> If the given UID
+does not match with that of client application (in this case, the SQL example
+application) the attempts to create the database fails. </p> <p><b>Security
+policy </b> </p> <p>To create a secure database, you need to initially set
+up a container that has a set of security policies (<xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref>),
+and pass it to the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-0F4435A7-C28C-342F-AC90-73FABDE6F5DD"><apiname>RSqlDatabase::Create()</apiname></xref> function. The <xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref> object
+defines what capabilities the calling application must have in order to perform
+a specific database operation. To cross check if the database security policy
+matches with the policy used when the database was created, the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-43E42D5C-62B8-34A7-AF2E-D62432DDB9DE"><apiname>RSqlDatabase::GetSecurityPolicy()</apiname></xref> function
+is called. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-0F4435A7-C28C-342F-AC90-73FABDE6F5DD"><apiname>RSqlDatabase::Create()</apiname></xref></p></li>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-43E42D5C-62B8-34A7-AF2E-D62432DDB9DE"><apiname>RSqlDatabase::GetSecurityPolicy()</apiname></xref></p></li>
+<li><p><xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref> - Class representing a generic security
+policy</p></li>
+</ul> <p><b>Copying one database to another</b> </p> <p>The example copies
+one database to another using the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-D8B48367-D20B-337E-B41A-1E02119D91D6"><apiname>RSqlDatabase::Copy()</apiname></xref> function.
+If the database was created using a specific UID, then only the application
+with same UID, can perform the copy operation. </p> <p> <b>Note:</b> In this
+example, copy function is essentially a <i>file copy</i> as the client does
+a copy within its data cage. The copy operation should ideally fail if the
+destination database already exists. An application with appropriate permissions
+can use the file system to copy the database. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-D8B48367-D20B-337E-B41A-1E02119D91D6"><apiname>RSqlDatabase::Copy()</apiname></xref></p></li>
+</ul> <p><b>Attaching the database</b> </p> <p>The example application then
+demonstrates attaching two databases. In this example, a non-secure database
+is attached to a secure database. The attached database is later read from
+and written to, and the secure database is also written to before the two
+databases are deleted using the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-27BE67CC-037F-3533-A3B4-E3CC4879EA1C"><apiname>RSqlDatabase::Delete()</apiname></xref> function. </p><p><b>Related
+APIs</b></p><ul>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-27BE67CC-037F-3533-A3B4-E3CC4879EA1C"><apiname>RSqlDatabase::Delete()</apiname></xref></p></li>
+</ul> <p><b>Querying the database</b> </p> <p>The example then demonstrates
+how to prepare and execute a query. </p> <p><b>Simple query</b> </p> <p>A
+simple query statement is prepared and executed using the <codeph>CSqlExample::DataTypesQueryL()</codeph> function. </p> <p><b>Query
+with a large parameter and writing using streaming</b> </p> <p>A query with
+a large parameter is prepared, executed and the results are written to <xref href="GUID-6313887C-8DE0-3702-BF4B-0622BAB2EE8E.dita"><apiname>RSqlParamWriteStream</apiname></xref> stream.
+A table containing fields of data types; integer, 64-bit integer, float, text
+and binary is created. It inserts two records into the table and implements
+the <xref href="GUID-E7B775B0-A609-313A-8BFD-375C81D782A5.dita"><apiname>TSqlScalarFullSelectQuery</apiname></xref> function for 64 bit integer
+(F2) and text (F4) fields and checks the returned value. The query for the
+data type which the column does not hold is executed, only to show that this
+is possible. For example, if a column holding the integer value 1000 is queried
+as real, it would return <systemoutput>1000.00</systemoutput>. </p><p><b>Related
+APIs</b></p><ul>
+<li><p><xref href="GUID-6313887C-8DE0-3702-BF4B-0622BAB2EE8E.dita"><apiname>RSqlParamWriteStream</apiname></xref> - The write stream interface.</p></li>
+<li><p><xref href="GUID-E7B775B0-A609-313A-8BFD-375C81D782A5.dita"><apiname>TSqlScalarFullSelectQuery</apiname></xref> - TSqlScalarFullSelectQuery
+interface is used for executing SELECT sql queries, which return a single
+row consisting of a single column value.</p></li>
+</ul> <p><b>Query returning data being read using streaming</b> </p> <p>The
+example lastly demonstrates how to prepare and execute a query which returns
+the data, and read that data from the data stream (<xref href="GUID-35BF7B4A-C4F7-3215-B5DF-6D0682247976.dita"><apiname>RSqlColumnReadStream</apiname></xref>).
+The read stream interface class is used for reading a large amount of binary
+or text data from the column. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-35BF7B4A-C4F7-3215-B5DF-6D0682247976.dita"><apiname>RSqlColumnReadStream</apiname></xref> - The read stream interface.</p></li>
+</ul> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-ef83061e-0e34-482b-bfcf-267d8972e786.zip" scope="external">SqlExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-ef83061e-0e34-482b-bfcf-267d8972e786.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section><title>Class summary</title><ul>
+<li><p><xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref></p></li>
+<li><p><xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref></p></li>
+<li><p><xref href="GUID-35BF7B4A-C4F7-3215-B5DF-6D0682247976.dita"><apiname>RSqlColumnReadStream</apiname></xref></p></li>
+<li><p><xref href="GUID-6313887C-8DE0-3702-BF4B-0622BAB2EE8E.dita"><apiname>RSqlParamWriteStream</apiname></xref></p></li>
+<li><p><xref href="GUID-56C52D43-C4A9-3B31-B154-CA1E77693F57.dita"><apiname>RSqlSecurityPolicy</apiname></xref></p></li>
+<li><p><xref href="GUID-E7B775B0-A609-313A-8BFD-375C81D782A5.dita"><apiname>TSqlScalarFullSelectQuery</apiname></xref></p></li>
+</ul></section>
+<section id="GUID-AC702731-D7EE-563C-8AE9-2CFAB58AD97C"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build an application. </p> <p>The Sql example builds an executable
+called <filepath>sqlexample.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). After launching the executable depending on the emulator, you
+may need to task away from the app launcher or shell screen to view the console. </p> </section>
+<section id="GUID-4FBE56C6-5DCE-56C5-98EA-75C863E5C5D6"><title>See
+also</title><xref href="GUID-582CAA4A-1240-5138-983D-D9C6EEAF5566.dita">SQL Tutorials</xref> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D"><title>Image Display Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Image Display functionality. </p> <section><title>Purpose</title> <p>This function provides an interface to encode image into <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object which can be easily displayed on the screen. </p> <p><b>Image Display Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-21EA8DF4-7F42-5FD7-9DF8-A04E417F2CDC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath>imagedisplay.dll</filepath>  </p> </entry> <entry><p> <filepath>imagedisplay.lib</filepath>  </p> </entry> <entry><p>These files are used for implementing image display operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Image Display function plays an important role for displaying the still image. </p> <p>Furthermore, the <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> also incorporates a function <xref href="GUID-8652E897-DD50-3976-A5A2-2150DA2D7A79.dita"><apiname>ExifMetadata</apiname></xref> in its plugin to access Exif metadata and display it. For more details see <xref href="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita">Exif support in CImageDisplay</xref>. </p> </section> <section><title>Description</title> <p>This functionality is similar to <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref>, but <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> provides some more features which is listed in <xref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita#GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D/GUID-64B1FA61-EB99-5AAA-8077-B9422BA8011D">Using Image Display</xref>. </p> <p>The client application states where the source image is to be taken from. The image can be read either from a descriptor, or a file. The only other mandatory parameter supplied by the client is the size (in pixels) of the destination image. Additional (optional) parameters can be specified such as the designation of a clipping region for pan/zoom, but these are not necessarily supported by all ImageDisplay plugins. </p> </section> <section><title>Key Image Display Classes</title> <p>The key class is: </p> <ul><li id="GUID-CB155D7E-F6D9-5EC8-B8C7-1AE05DDC2504"><p> <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> provides a convenient interface to convert encoded images into internal Symbian platform bitmap objects ready to be displayed on the screen. As part of decoding process scaling and rotation can be done. </p> </li> </ul> </section> <section id="GUID-64B1FA61-EB99-5AAA-8077-B9422BA8011D"><title>Using Image Display</title> <p>The Image Display functionality is used for the following: </p> <ul><li id="GUID-8FA7F198-BA78-52C2-8543-49B54385460A"><p>To encode image into <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object. </p> </li> <li id="GUID-D31183C0-CCA4-5977-A741-E0F1C26ADE6E"><p>Scaling and rotation are provided in the decoding process. </p> </li> <li id="GUID-59F41B2A-F1FC-5B5F-B48C-FFD37A2B9E3E"><p>Progressive decoding is possible; for example, an unscaled (or roughly scaled) image may be displayed temporarily during the scaling process. This feature can be used to improve perceived responsiveness. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transform Overview</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext>Guide to Symbian supplied Codecs</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27340D18-A31D-512E-920A-B06C784A978A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-27340D18-A31D-512E-920A-B06C784A978A"><title>String Pools </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Many systems, components and applications deal with pre-defined, well known string constants. For example, parsing and manipulating text containing structure mostly requires comparisons against standard string constants. </p> <p>In a complex system, composed of a large number of objects, there may also be a need to pass strings between objects, and to route processing depending on the value of some string. The implementation of the HTTP transport framework and the XML framework are examples within Symbian platform where such intense string handling is required. </p> <p>To improve efficiency, Symbian platform uses the idea of the string pool. </p> <p>A string pool is referenced through an <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita"><apiname>RStringPool</apiname></xref>, which is a handle like object. The following diagram illustrates the basic idea: </p> <fig id="GUID-756DB8BA-1D6F-56AE-9C93-66DD3512B4A7"><title>
+          String pool representation 
+        </title> <image href="GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e155184_href.png" placement="inline"/></fig> <p>A string pool is a mechanism for storing strings in a particular way that makes the comparison of strings a very fast operation. It is particularly efficient at handling strings that can be set up at program compile time. For example, strings that identify lexical elements in a structured text. Typically, they are well known strings that are likely to be used very often in a given context. </p> <p>Such strings are organised into tables, and each string within a table can be referenced by an index value, which can be symbolised by an enum. Such tables are referred to as <b>static string tables</b> (See <xref href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita#GUID-27340D18-A31D-512E-920A-B06C784A978A/GUID-8221E235-15F9-55E9-8C17-4015051F70CD">Static string tables</xref>). The basic algorithm used internally ensures that the pool contains only one string of any particular value, and uses a reference counting mechanism to keep track of usage. </p> <p>The advantages of representing string constants in such a way are: </p> <ul><li id="GUID-DE544092-1FA8-5537-8357-62510F42D2EA"><p>avoiding a proliferation of duplicate strings throughout a component or an application; typically there is one string pool per thread, and one copy of a string </p> </li> <li id="GUID-55E5FD27-5E2B-51D6-91AA-435AE1A4421C"><p>allowing string constants to be represented by integer values </p> </li> <li id="GUID-3C5CA539-11E1-53EB-8A1F-69AEF0D9C1F0"><p>allowing strings to be passed between objects by passing integer values, wrapped in a class (any one of the <xref href="GUID-C117EB69-0B1E-3D16-88E1-B44349C716DE.dita"><apiname>String</apiname></xref> and <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> classes) </p> </li> <li id="GUID-559BCA58-B426-5919-A948-DC15ED501397"><p>allowing strings to be compared by comparing the integer values. </p> </li> </ul> <p>Internally, a string pool uses hash tables to reference strings. </p> <p>Static string tables and string constants can be added dynamically to the string pool, for example, at run time. However, there is always a performance penalty while adding either a static or a dynamic string to the string pool as the hash tables need to be updated. This means that it is better to add static string tables at string pool initialisation time, as this is the best time to absorb the overhead. </p> <section><title>Key features of string pool</title> <ul><li id="GUID-39F73513-7F37-57DA-AF7A-D3A7B2B28A76"><p>The string pool as supplied by Symbian platform supports any strings that can be represented by a <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref> descriptor; this includes ASCII or UTF-8 encoded strings. Note that a <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref> type can represent any type of data , including binary data, and means that a string pool can easily handle the extended characters of another encoding. </p> </li> <li id="GUID-8F9BA578-B6B5-54FD-8C29-8C2996AED4D0"><p>Within the string pool, strings are of two types - case sensitive and case insensitive. This affects the way strings are compared. Case insensitivity implies that strings are folded for the purpose of comparison. </p> </li> <li id="GUID-D958763A-70F8-5452-A556-99F92B2B0246"><p>A string pool can contain up to 4,096 static string tables, and each table can represent up 26,2144 strings. </p> </li> </ul> </section> <section id="GUID-8221E235-15F9-55E9-8C17-4015051F70CD"><title>Static string tables</title> <p>Static string tables are defined and built at compile time. They are represented by a <xref href="GUID-91322CD6-6DA0-3868-A5D7-CA561A102074.dita"><apiname>TStringTable</apiname></xref> object. A string table can be added to the string pool by passing the string table reference to a call to: </p> <codeblock id="GUID-2FAB371D-74A4-5D7E-99F1-B7C02BEDA8D5" xml:space="preserve">void RStringTable::OpenL( const TStringTable&amp; aTable );</codeblock> <p>The following diagram illustrates a general picture. Note that the strings in any given string table are deemed to be either case sensitive or case insensitive, and this governs how comparisons are made. </p> <fig id="GUID-D7CEA86C-0643-5BDA-A60E-D80B97008BF2"><image href="GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e155285_href.png" placement="inline"/></fig> <p>As the name implies, a static string table is declared as a <codeph>const
+          TStringTable</codeph> data member of a class with a user-defined name. The class name is defined in a header file while the table itself is implemented in a <codeph>.cpp</codeph> C++ source file. Both the header file and the C++ source file are normally included in the project definition. Typically, a set of enum values are also defined within the scope of the class, and each value is associated with the strings in the table; code in other parts of the program access the strings in the string pool using these enum values. </p> <p>The Perl script, <codeph>stringtable.pl</codeph>, located in <filepath>...\syslibs\bafl\stringtools\</filepath>, can be used to generate these <codeph>.cpp</codeph> and <codeph>.h</codeph> files from a simple text definition. The text definition file simply lists the strings and the enum symbols to be associated with them; the file itself is given a <codeph>.st</codeph> file type. </p> <p>Following is a simple example of <codeph>ExampleStringTable.st</codeph> file: </p> <codeblock id="GUID-5D487C02-D710-55E6-BD8D-769BE4C4E754" xml:space="preserve"># Example String Table
+fstringtable ExampleStringTable
+!// Some types of fruit
+# This comment won't appear in the .h file, but the one above will.
+EApple apple
+EOrange orange
+EBanana banana
+# Some animals
+ECat cat
+EDog dog
+</codeblock> <p>The main points to note are: </p> <ul><li id="GUID-8FCB19B1-7033-5120-98DD-08EECA91C65B"><p>the keyword <i>fstringtable</i> is used to define the name of the class that contains the string table declaration and the enum value symbols. The class name itself follows the keyword. For example, <codeph>ExampleStringTable</codeph>. </p> <p>Note that you can include underscore characters in the class name. For example, <codeph>Example_StringTable</codeph>. </p> </li> <li id="GUID-0E714FA5-859E-597F-9B33-2F0DC3372FCD"><p>the symbols <codeph>EApple</codeph> and <codeph>EOrange</codeph> form the enum value symbols that correspond to the strings <codeph>apple</codeph> and <codeph>orange</codeph> respectively. </p> </li> <li id="GUID-F9F62AD7-5209-5D01-9F60-413C7E161689"><p>all statements starting with a <b>#</b> are comments and are completely ignored. However <b>#</b> characters can appear in a string. For example <codeph>ap#ple</codeph> is a valid string and is not interpreted as a comment. </p> </li> <li id="GUID-F70C2B1A-2029-5B1A-A27D-A65A123A6CA9"><p>all statements starting with a <b>!</b> are comments that are inserted into the generated header file. </p> </li> </ul> <p>Running the Perl script with <codeph>ExampleStringTable.st</codeph> as source generates the header file <codeph>ExampleStringTable.h</codeph> and the C++ source file <codeph>ExampleStringTable.cpp</codeph> as illustrated below: </p> <codeblock id="GUID-7E0263D1-D4A5-5B0A-B355-C2D958247590" xml:space="preserve">// Autogenerated from epoc32\build\generated\example\ExampleStringTable.st by the stringtable tool - Do not edit
+
+#ifndef STRINGTABLE_ExampleStringTable
+#define STRINGTABLE_ExampleStringTable
+
+#include "StringPool.h"
+
+struct TStringTable;
+
+/** A String table */
+class ExampleStringTable 
+       {
+    public:
+           enum TStrings
+              {
+              // Some types of fruit
+              /** apple */
+              EApple,
+              /** orange */
+              EOrange,
+              /** banana */
+              EBanana,
+              /** cat */
+              ECat,
+              /** dog */
+              EDog
+              };
+       static const TStringTable Table;    
+       };
+
+#endif // STRINGTABLE_ExampleStringTable
+</codeblock> <codeblock id="GUID-6447B06C-00EB-527C-8381-7239F2220D61" xml:space="preserve">// Autogenerated from epoc32\build\generated\example\ExampleStringTable.st by the stringtable tool - Do not edit
+#include &lt;e32std.h&gt;
+#include "StringPool.h"
+#include "StringTableSupport.h"
+#include "ExampleStringTable.h"
+#ifdef _DEBUG
+#undef _DEBUG
+#endif
+
+_STLIT8( K1, "apple" );
+_STLIT8( K2, "orange" );
+_STLIT8( K3, "banana" );
+_STLIT8( K4, "cat" );
+_STLIT8( K5, "dog" );
+
+// Intermediate
+const void * const KStringPointers[] =
+       {
+       ( const void* )&amp;K1,
+       ( const void* )&amp;K2,
+       ( const void* )&amp;K3,
+       ( const void* )&amp;K4,
+       ( const void* )&amp;K5
+       };
+
+const TStringTable ExampleStringTable::Table = {5, KStringPointers, EFalse};
+</codeblock> <p>The table itself is the static data member <codeph>Table</codeph> of class <codeph>ExampleStringTable</codeph>. </p> </section> </conbody><related-links><link href="GUID-24D509E8-CF46-58D3-85E9-27DA7AB22012.dita"><linktext>Constructing a Static
+                String Table</linktext> </link> <link href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita"><linktext>Using string pools</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e239585_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413" xml:lang="en"><title>IRPrinting:
+Infrared Printing</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-604c093c-92b0-47fc-8bbc-252008d64c0b.zip" scope="external">ServerClientSide.zip</xref></p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-16f2a07d-2ace-4a32-b383-6f1352dfd72e.zip" scope="external">CommonFiles</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-604c093c-92b0-47fc-8bbc-252008d64c0b.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-16f2a07d-2ace-4a32-b383-6f1352dfd72e.html" scope="peer">browse</xref>. </section>
+<section><title>Description</title> <p>IRPrinting illustrates the use of the <xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial Communications Server</xref> for
+infra-red communications, such as to an IrDA-capable printer. See the IrDA
+Serial Overview for more information. </p> <p>The example: </p> <ul>
+<li id="GUID-BEE653D6-2610-53F9-8FCB-43CDCDB54F37"><p>Creates a connection
+to the Comms server </p> </li>
+<li id="GUID-AABB1768-6DD4-589F-9262-213EC3AC90C7"><p>Loads the Comms server
+module that supports infra-red (“IrCOMM”) </p> </li>
+<li id="GUID-FEF32A75-0089-511C-B2BA-EF108B3EB4A4"><p>Opens a port </p> </li>
+<li id="GUID-33D11CA2-00F1-5E22-A266-FC112F4F2CE5"><p>Writes a short message
+to the port </p> </li>
+<li id="GUID-EB95FD29-2963-5866-92B0-65CF5DAAD437"><p>Closes the port </p> </li>
+<li id="GUID-4489D37F-8C6C-5BFB-9CB6-5F52376C21C7"><p>Closes the Comms server </p> </li>
+</ul> <p>The write operation times out with an error after four seconds if
+it is not successful, as will occur if no receiver is present. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref>: serial port</p><p><xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita"><apiname>RCommServ</apiname></xref>:
+Comms server </p></section>
+<section><title>Build</title> <p>The source code includes the two project
+files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian platform build process</xref> describes
+how to build this application, which results in an executable called <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or udeb&gt;\IRPRINTING.EXE</filepath>. </p> </section>
+<section><title>Usage</title> <p>Run the executable <filepath>IRPRINTING.EXE</filepath>. </p> <p>Executables
+for the emulator targets <filepath>wins</filepath> and <filepath>winscw</filepath> can
+be run on your PC. Executables for ARM targets must be copied to your target
+platform before being run. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e279533_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659"><title>Querying the SDP Database</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Service Discovery Agent is used to perform queries about the Bluetooth services that are available on a specified remote device. It is typically used after the suitable devices that are in range have been identified through the <xref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita">Bluetooth Sockets</xref> API. </p> <section><title>How to query for a remote service</title> <p>A service search returns the record handles of services that are of a specified class or classes (identified by UUID numbers). If the search is for more than one UUID, then all the UUIDs must exist in a service record for it to be considered a match. See "<xref scope="external" href="https://www.bluetooth.org/assigned-numbers/service_discovery.php">Service Discovery Protocol Assigned Numbers</xref> " for the common UUIDs. </p> <p>Service search results are returned through asynchronous callbacks to an <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> interface, which the querier must implement, as discussed later. </p> <p><b>Basic Procedure</b> </p> <p>The steps to perform a service search are as follows: </p> <ol id="GUID-26256320-1DDC-56FC-A8F7-D31A31935EAB"><li id="GUID-39DE1A9A-DA85-53A4-B377-8C49DB4F9461"><p>Create a <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita"><apiname>CSdpAgent</apiname></xref> object, supplying it with an <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> and the device address of the remote Bluetooth device. </p> </li> <li id="GUID-68A80DA4-46AC-5401-9D81-C111BE3F401C"><p>Create a <xref href="GUID-745D8374-1012-356B-A15E-6CBC96E64E95.dita"><apiname>CSdpSearchPattern</apiname></xref> object to specify the service classes to search for. Classes can be added through <xref href="GUID-745D8374-1012-356B-A15E-6CBC96E64E95.dita#GUID-745D8374-1012-356B-A15E-6CBC96E64E95/GUID-9258B4ED-D93C-32F7-BF9B-62D82311CBDE"><apiname>CSdpSearchPattern::AddL()</apiname></xref>. </p> </li> <li id="GUID-934248A1-5D75-56CC-876B-13154C220A95"><p>Set the search pattern on the agent object using <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita#GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6/GUID-971093EE-8913-3E1D-9D2A-3E462E8538FC"><apiname>CSdpAgent::SetRecordFilterL()</apiname></xref>. </p> </li> <li id="GUID-CAB33ADA-BB1C-51E5-B7D1-1FBE37161934"><p>Call <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita#GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6/GUID-1BC85E8A-3F98-37BF-B775-63AC51ABF5D7"><apiname>CSdpAgent::NextRecordRequestL()</apiname></xref> to get search results until results are exhausted, or sufficient results have been obtained. </p> </li> </ol> <p><b>Querying for a service</b> </p> <p>The following code fragements may be used, in an appropriate context, to query a remote device's SDP database for Obex file transfer support (for example). The steps are given here: </p> <ol id="GUID-24853096-35F5-57A6-879F-3270717B7A4F"><li id="GUID-57D61594-1495-5CB1-98D5-4D5066DB200F"><p>Create agent. (Assume rcvr implements <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> and <codeph>devAddr</codeph> is the address of the remote device.) </p> <codeblock id="GUID-A4727E40-3316-548C-B982-031F5E47B641" xml:space="preserve">CSdpAgent* agent = CSdpAgent::NewLC(rcvr, devAddr);</codeblock> </li> <li id="GUID-2B4552ED-8D5C-5ED4-9CF2-BAE23CCFCD11"><p>Create a search pattern and add a service classes to it. </p> <codeblock id="GUID-10D1B740-8EFE-5C62-9539-25E934F6485E" xml:space="preserve">CSdpSearchPattern* list = CSdpSearchPattern::NewL();
+list-&gt;AddL(0x1106);</codeblock> <p>The UUID 0x1106 represents the OBEXFileTransfer service class. </p> </li> <li id="GUID-9AA7ABA8-5EB5-5F04-8A1B-DE38771D9745"><p>Set the search pattern on the agent. </p> <codeblock id="GUID-1F0A13CD-6CCE-5570-895C-81322BA008E0" xml:space="preserve">agent-&gt;SetRecordFilterL(*list);</codeblock> </li> <li id="GUID-CF07DE05-DECA-56F2-9350-BDD55818148B"><p>Get first search result: results in call back to <codeph>rcvr</codeph>. </p> <codeblock id="GUID-1A46411E-9782-5C76-9920-3DF60A6699A7" xml:space="preserve">agent-&gt;NextRecordRequestL();</codeblock> </li> </ol> <p>A positive match indicates a device has been found that supports OBEX file transfer. The above code may serve as a template to search for any service class for which you have the UUID value. </p> </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Agent tutorials are shown below: </p> <ul><li id="GUID-DFC9F42A-AB8F-56A1-ADBF-8BDCCC90D9E8"><p> <b>Querying the SDP database</b> - This document </p> </li> <li id="GUID-6E8CA7F2-1B54-5D2E-8B48-054913523995"><p> <xref href="GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032.dita">Reading remote SDP service attributes</xref>  </p> </li> <li id="GUID-629F4F05-E622-5423-91C7-6D7A5A98FBF3"><p> <xref href="GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393.dita">Handling SDP query results</xref>  </p> </li> </ul> <p>Also refer to the <xref href="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita">Bluetooth Service Discovery Agent Overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE" xml:lang="en"><title>Heap
+descriptors</title><shortdesc>Describes heap descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A heap descriptor provides a fixed length buffer, allocated on the heap,
+to contain and access data. The data is part of the descriptor object. </p>
+<p>The data contained in a heap descriptor can be accessed, but not changed,
+through this descriptor. The data can, however, be completely replaced using
+the assignment operators. </p>
+<p>A heap descriptor also has the important property that it can be made larger
+or smaller, changing the size of the descriptor's buffer. This is achieved
+by reallocating the descriptor. Unlike the behaviour of dynamic buffers, reallocation
+is not done automatically. </p>
+<p>Data is accessed through functions provided by the base class. </p>
+<p>A heap descriptor is supplied in two variants: </p>
+<ul>
+<li id="GUID-7FE093CF-5C0A-58F4-8C5E-63465F1B1B64"><p>the 16 bit variant,
+a <codeph>HBufC16</codeph>, to contain Unicode strings. </p> </li>
+<li id="GUID-2F6606E5-E985-58A2-86DE-DCC69C137F50"><p>the 8 bit variant, a <codeph>HBufC8</codeph>,
+to contain non-Unicode strings and binary data. </p> </li>
+</ul>
+<p>There is also a build independent type, <codeph>HBufC</codeph>. This is
+the type which is most commonly used in program code; the appropriate variant
+is selected at build time. </p>
+<p>An explicit 8 bit variant is chosen for binary data. An explicit 16 bit
+variant is rarely used. </p>
+<p>The base class, <codeph>TDesC</codeph>, contains a data member which holds
+the length of the data. The following drawing shows the layout of a <codeph>HBufC</codeph> object
+initialised with the string of five characters representing the English word
+"Hello". The descriptor object is allocated on the heap. </p>
+<p>Although it is not possible to change the data in the descriptor directly
+through the descriptor member functions, it <i>is</i> possible to do this
+indirectly by using the <codeph>Des()</codeph> member function of <codeph>HBufC</codeph> to
+first create a modifiable <xref href="GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita">pointer
+descriptor</xref>, a <codeph>TPtr</codeph> type, and then to use <i>this</i> descriptor's
+member functions. For this reason, heap descriptors are best suited for data
+that rarely changes. For data that changes frequently, it is much better to
+use the <xref href="GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita">resizable buffer
+descriptor</xref>. </p>
+<fig id="GUID-975888DA-9685-504E-B089-F5F632729921">
+<image href="GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e195902_href.png" placement="inline"/>
+<p>Example of a Heap descriptor</p>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-277BD68B-70CF-5798-A77D-E2B901FA613B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-277BD68B-70CF-5798-A77D-E2B901FA613B"><title>Central Repository Data Access Tutorial</title><shortdesc>This tutorial describes how to access and modify the data in Central Repository at run time on the Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-04C96E61-FBDE-5A4E-AAD9-75FF4BB80531"><p>Before you start, you must: </p> <ul><li id="GUID-5B3953CA-CFC3-52D9-8177-9D08EC7CEF87"><p>understand the <xref href="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita">Central Repository</xref>  </p> </li> <li id="GUID-B2FFA28E-192F-5982-A331-557D8228BF4A"><p>know how to <xref href="GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita">register and use the repositories</xref> in the Central Repository </p> </li> </ul> </prereq> <context id="GUID-58A8A8B0-EAFA-5AEB-B978-10048CE3B821"><p>Repositories cannot be created at runtime. Applications must register with Central Repository using the initialisation file. The Central Repository API is provided by the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> class. Applications access the repository with the UID of the repository. Applications must have appropriate access to the repositories. </p> </context> <steps id="GUID-6E0FE2B1-5AAD-5B2C-B304-6DDCFE312B6A"> <step id="GUID-5F2291E4-C723-5F10-BBCC-0FF996DE8201"><cmd> Open a repository</cmd> <info><p>The repositories are identified by a <codeph>UID</codeph>. To access the data in the Central Repository create a new <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> object with the <codeph>UID</codeph> of the repository. </p> </info> <stepxmp><codeblock id="GUID-A3E4A9D4-FFD0-56A3-944F-FE40B0978CD2" xml:space="preserve">CRepository* repository = CRepository::NewL(KMyRepositoryUid);</codeblock> </stepxmp> <info>One <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> object must be created for each repository. </info> </step> <step id="GUID-B986A80F-A665-563D-9B73-AA60DD6BE395"><cmd> Retrieve data from the repository</cmd> <info><p>The data can be retrieved by using <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Get()</apiname></xref> or <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Find()</apiname></xref> functions of the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> class. </p> </info> <substeps id="GUID-610E555C-C29C-59D4-8931-4E1085943D09"><substep id="GUID-A7BE9113-5ECE-575B-A6F5-2AB183DE7774"><cmd/><info>Use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Get()</apiname></xref> to retrieve an individual value </info> <stepxmp><codeblock id="GUID-11D2654B-688C-5A1C-916F-413469360511" xml:space="preserve">TInt Get(TUint32 aKey, TInt&amp; aVal);    </codeblock> </stepxmp> </substep> <substep id="GUID-D965F3C6-AAC0-5738-AB6B-9632AD7BA0E4"><cmd/><info>Use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Find()</apiname></xref> function to retrieve the values by passing a range of keys </info> <info>The input parameters are a partial key and a key mask and the function returns all the settings that match the input range. </info> <stepxmp><codeblock id="GUID-33F36B37-9305-5244-B704-CE09067BAE24" xml:space="preserve">TInt FindL(TUint32 aPartialKey, TUint32 aKeyMask, RArray&lt;TUint32&gt;&amp; aFoundKeys);</codeblock> </stepxmp> <info> <codeph>aKey</codeph> parameter represents a setting in a 32 bit unsigned integer and <codeph>aVal</codeph> represents the corresponding value of the setting. </info> </substep> </substeps> </step> <step id="GUID-A916E538-CF26-512C-B47E-8A0AFF2AFD93"><cmd>Modify the data of the repository
+                  opened</cmd> <info><p>The <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Set()</apiname></xref> functions of the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> class allows the applications to modify the data in the Central Repository. </p> </info> <info>Set new values using <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Set()</apiname></xref>  </info> <stepxmp><codeblock id="GUID-75CEFCF2-8EDA-5601-831B-FD183434223F" xml:space="preserve">
+TInt Set(TUint32 aKey, TInt aVal);
+</codeblock> </stepxmp> </step> <step id="GUID-54F13AB8-9276-5B96-9355-2D8A5ADF5315"><cmd/><info>  Read the metadata of the repository  </info> <substeps id="GUID-C7CCC06D-A51A-504E-9B48-9568BF9183DB"><substep id="GUID-AD5DE28B-4C8E-5F24-BDED-9C2528D0BAE5"><cmd/><info>Use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>GetMeta()</apiname></xref> to get the metadata of the repository. </info> <info>The eight most significant bits are reserved for internal purpose and clients must not use these values. The value of the reserved bits may change for each <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>GetMeta()</apiname></xref> call. </info> </substep> <substep id="GUID-21F48A2A-F372-5ABF-B067-80D34527D667"><cmd/><info>Applications must use logical AND function with the retun value of <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>GetMeta()</apiname></xref> and the constant <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>KMetaUnreserved</apiname></xref> to retrieve the user bits of the metadata. </info> <info>The constant <codeph>KMetaUnreserved</codeph> is defined in <codeph>centralrepository.h</codeph>. </info> </substep> </substeps> <stepxmp><codeblock id="GUID-AD43EA8A-0808-5F4B-9A92-E2FC84818A59" xml:space="preserve">TInt GetMeta(TUint32 aKey, TUint32&amp; aMeta);</codeblock> </stepxmp> </step> <step id="GUID-92638DAF-1888-5D21-8607-E159637193D5"><cmd> Add a new setting</cmd> <info><p>To add a new setting in the repository use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Create()</apiname></xref>. </p> </info> <stepxmp><codeblock id="GUID-BC3684ED-9898-5AEF-BE12-E9A0FE8DFFF2" xml:space="preserve">TInt Create(TUint32 aKey, TInt aVal);</codeblock> </stepxmp> <info>To delete an existing setting use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Delete()</apiname></xref>  </info> <stepxmp><codeblock id="GUID-CE998E02-C44A-525B-8CE1-97EFF2585848" xml:space="preserve">TInt Delete(TUint32 aKey);</codeblock> </stepxmp> </step> <step id="GUID-47F70785-7460-5052-85F4-C63CC042F77D"><cmd>Move settings</cmd> <info><p>To move one or more settings from one key to another key use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Move()</apiname></xref>  </p> </info> <stepxmp><codeblock id="GUID-37DBA666-26C1-544D-9DC9-0B591A2DA9F0" xml:space="preserve">TInt Move (TUint32 aSourcePartialKey, TUint32 aTargetPartialKey, TUint32 aMask, TUint32 &amp;aErrorKey) ;</codeblock> </stepxmp> <info>The source key, target key and the partial mask must be provided by the clients. </info> </step> <step id="GUID-90C11E03-6017-502C-A569-FDE22C18B753"><cmd/><info> Reset the settings  </info> <substeps id="GUID-749BC68F-C733-5571-8086-E0B9F6E370A8"><substep id="GUID-AE2FCCFC-5E47-5511-917A-4B6F2A5CDDEC"><cmd/><info>To reset the settings of a repository to the default values use <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Reset()</apiname></xref>  </info> <stepxmp><codeblock id="GUID-0F53ECD1-8985-500B-B726-CD85B1ACAF55" xml:space="preserve">TInt Reset();</codeblock> </stepxmp> </substep> <substep id="GUID-5B520C2F-5742-5053-B880-A1333A7A02A2"><cmd/><info>To reset a particular setting, pass the key of the setting as a parameter to the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>Reset()</apiname></xref> function. </info> <stepxmp><codeblock id="GUID-7D9928C4-5769-555A-A896-2A1F4DD61B99" xml:space="preserve">TInt Reset(TUint32 aKey);</codeblock> </stepxmp> <info>Go back to step 2 if you want to modify the settings after a reset or continue to step 8 </info> </substep> </substeps> </step> <step id="GUID-A7CEAD38-A92E-5A06-AC16-8FC91BD6CDF7"><cmd> Close the repository</cmd> <info><p>To close repository, use delete. </p> </info> <stepxmp><codeblock id="GUID-ED364F0C-0267-55FC-8600-885FFABADBB6" xml:space="preserve">delete repository;
+</codeblock> </stepxmp> <info>Each instance of the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> object must be deleted to clean up the resources. </info> </step> </steps> <result id="GUID-6A19D562-87BE-5BAA-A523-4C7B0CC4C01F"><p>The data in a repository will be modified with the new values by the application. </p> </result> </taskbody><related-links><link href="GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita"><linktext>CentRepExample: Using central repository for
+                persistent storage</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27895B0A-4C0F-403D-A839-F15B2F102A21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27895B0A-4C0F-403D-A839-F15B2F102A21" xml:lang="en"><title>Select
+and activate: two short taps</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Because the Symbian OS is fundamentally a focus-based UI,
+there are many places where one tap must move the focus to an item, and then
+a second tap will be required to activate the functionality. In other words,
+it is not possible to open or activate an item from a focusable view directly
+with a single tap unless the focus is already on the given item. For example,
+a tap on a message in the Inbox moves the focus onto it, a tap on <b>Options</b> means
+that the options related to the focused message are presented and can be selected
+(e.g. <b>Delete</b>). The two taps required to select and activate are not
+time-dependant in any way. The only exception to the time dependency is in
+the Touch Dialer special characters pop-up.</p>
+<p>A single short tap in lists is enough when there are only two avenues available
+to proceed to: the softkeys <b>Ok</b> and <b>Cancel</b>. In such a case, a
+tap on an item performs the same function as the left softkey and the Selection
+key. In other words, when a list has the <b>Options</b> menu under the left
+softkey, two taps for focus and activate are necessary.</p>
+<p>Buttons, icons and items within <b>Options</b> menus, etc. operate with
+a short tap. In general, this is how mouse-driven PC UIs work (with mouse
+clicks).</p>
+<section id="GUID-FFF3DEE9-30DD-4E72-826E-E6CC660E4208"><title>Using
+touch events in C++ applications</title><p>For implementation information
+on using the <xref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita">application
+and UI frameworks</xref> for receiving touch events, see <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">Window
+server events</xref> and <xref href="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita">Pointer
+events</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27897E0D-D9D6-4007-A45E-62C366F1267C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27897E0D-D9D6-4007-A45E-62C366F1267C" xml:lang="en"><title>Using
+direct feedback</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Direct feedback means that the application triggers feedback itself based
+on received pointer events. This approach is in general necessary in three
+cases:<ol>
+<li id="GUID-23A79B78-9228-4FD9-ACF9-8031E09A036B">The triggering of feedback
+depends on the state of the control (or application) in such a way that the
+area registry cannot be used. For example: feedback is triggered from each
+new character when the user selects text with the stylus.</li>
+<li id="GUID-85A0716A-15ED-4E02-8E9D-57D2280E00F4">Feedback area is non-rectangular
+and thus area registry cannot be used. For example: the user taps a tab of
+a non-focused view in a view-based application.</li>
+<li id="GUID-5296912E-A665-45E5-A7A5-CD323C449C42">Feedback is triggered from
+pointer repeat events.</li>
+</ol></p>
+<note><p>In the first two cases the feedback must be generated on the pointer
+down event, even though the related action itself would be done only on the
+pointer up event.</p></note>
+<p>In a lot of cases, you may want to use both <xref href="GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita">area
+registry based feedback</xref> and direct feedback in your application. In
+this case you must ensure these two do not overlap, so that direct feedback
+would be generated for some pointer events, which have already triggered feedback
+from the area registry.</p>
+<p>Use the <codeph>InstantFeedback</codeph> function to generate direct feedback.
+This always causes a synchronous client-server transaction immediately. (If
+tactile feedback is not supported in the device, the API implementation ignores
+the function call.)</p>
+<codeblock xml:space="preserve">void CMyTactileEnabledControl::HandlePointerEventL(
+    const TPointerEvent&amp; aPointerEvent )
+    {
+    TBool stateChanged;
+
+    // (your code here)
+
+    if(aPointerEvent.iType == TPointerEvent::EDrag &amp;&amp; stateChanged)
+        {
+        // Produce sensitive feedback when dragging causes a state
+        // change (this kind of feedback triggering is not possible  
+        // by using area registry).
+        MTouchFeedback* feedback = MTouchFeedback::Instance();
+        if ( feedback )
+            {
+            feedback-&gt;InstantFeedback( ETouchFeedbackSensitive );
+            }
+        }
+    }
+</codeblock>
+<p>Also notice that there are two overloads of the <codeph>InstantFeedback</codeph> function:
+The first one only takes the logical feedback type as parameter, and can be
+used for generating feedback at any time, even when no UI controls are involved
+(for e.g. if the AppUi class wants to generate feedback). The second overload
+takes a <codeph>CCoeControl</codeph> pointer as parameter, and it does nothing
+in case feedback is disabled for the given control.</p>
+<p>The latter overload is recommended to be used from UI controls, because
+that gives the owner of the control a possibility to disable both area registry
+based and direct feedback if needed.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27A2AE45-AFAC-5325-A9A9-4A8C69921EE3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27A2AE45-AFAC-5325-A9A9-4A8C69921EE3" xml:lang="en"><title>MMS Setting</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides information about MMS settings encapsulation classes. Client application can use the setting functionality to allow client to persist MMS settings in the Message Store. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27A393D5-C7DF-5541-855A-2CB0E4C46D6D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-27A393D5-C7DF-5541-855A-2CB0E4C46D6D"><title>The DBMS server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A session with the DBMS server provides the basis for sharing databases with other threads; the DBMS server allows shared read/write access to databases by multiple clients.</p> <p>A session with the DBMS server is set up through an instance of the <codeph>RDbs</codeph> class. The behaviour of this class is similar to other session classes, for example, the file server session class, <codeph>RFs</codeph>.</p> <p>A client opens a connection with the DBMS server using the <codeph>Connect()</codeph> member function of <codeph>RDbs</codeph> and closes the connection by calling <codeph>Close()</codeph> on <codeph>RDbs</codeph>.</p> <p>Some useful points to note:</p> <ul><li id="GUID-2CBE14E2-B9B9-59C0-B4A2-ED0A4C4DCFF7"><p>a thread can open any number of simultaneous connections to the DBMS server</p> </li> <li id="GUID-B9F8CA69-3594-5692-9B39-19800D8E8AB8"><p>a session can be used to open any number of databases.</p> </li> <li id="GUID-29CF3CF7-0786-5454-B79D-BD4B451701F1"><p>the same database can be opened many times within a single session; each such database object behaves independently with regard to transactions. </p> </li> <li id="GUID-9436A9F0-D007-5ED6-8E96-713F44EEF4A4"><p>a database cannot be opened for client-side read access and client-server write access at the same time; if write access is required by one client, then all clients must use the DBMS server.</p> </li> <li id="GUID-D52B72B2-699C-561A-B290-9FD1AEA0790F"><p>a session must be kept open until all DBMS objects opened through it have been closed.</p> </li> </ul> <p>Shared databases support all DBMS API functionality except database creation and changing the security key:</p> <ul><li id="GUID-EAD7BB8E-5E08-50B7-A158-2125D32E1539"><p>databases should only be shared once they have a fully constructed schema, otherwise clients may attempt to access a half-created database.</p> </li> <li id="GUID-B65A6BA3-55EA-555D-9FBF-F13D8B916694"><p>using the <codeph>ChangeSecurity()</codeph> member function of <codeph>RDbDatabase</codeph> to change the security key for a secure database makes no sense if the database is currently shared.</p> </li> </ul> <p>The client server interface offers utility functions which allow the client to check the number of allocated DBMS objects.</p> <p>The interface also offers heap debugging support for the server's heap.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27AAD3D5-AEC0-5A33-B14A-2E8B8D21CDAA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27AAD3D5-AEC0-5A33-B14A-2E8B8D21CDAA" xml:lang="en"><title>How
+to use the trailing-C naming convention</title><shortdesc>This document describes how functions named with a trailing C are
+handled on the stack.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The case of allocating an object and pushing it to the cleanup stack is
+sufficiently common that allocation functions are often coded to do both in
+a single operation. For example, there is a <codeph>User::AllocLC()</codeph> whose
+semantics are to call <codeph>User::Alloc()</codeph> to allocate the memory,
+leave if the allocation failed, and push to the cleanup stack if it succeeded.</p>
+<p>The trailing <codeph>C</codeph> indicates that the item is pushed to the
+cleanup stack if successfully allocated: the resulting function can be referred
+to as a <keyword>C function</keyword>: in the great majority of cases, C functions
+are also <keyword>L functions</keyword>. Any function which calls <codeph>User::AllocLC()</codeph> to
+allocate a buffer should also use this naming convention. </p>
+<p>The function that calls a -<codeph>C</codeph> function must pop (and destroy,
+if the -<codeph>C</codeph> function allocated an object) the object from the
+stack when its use is complete.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27C3F32C-4B66-539A-8561-EF442E0F0A77.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-27C3F32C-4B66-539A-8561-EF442E0F0A77"><title>Feature Manager Plugins</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document explains how to use Feature Manager plugins. </p> <section id="GUID-D41B9CDD-A7ED-5D82-87F4-960193AC3C52"><title>About Feature Manager Plugins</title> <p>The Feature Manager provides functionality to manipulate information about features present on a device by querying a server. How does the server acquire that information in the first place? One source of the information is the Feature Manager plugins, the other being <xref href="GUID-DD60D070-122D-528B-B545-248C5BA24E20.dita">feature data files</xref>. Features are associated with items of hardware, software and network connections and items are related to plugins. An example of a feature is the ability to receive a fax message over Bluetooth, this being an item of functionality associated with a network connection. The server queries the plugins about the status of their associated features and the plugins return a response. The Feature Manager updates its collection of feature data at device startup when it detects new connections and newly installed software. </p> </section> <section id="GUID-37890B84-DA0D-551C-B9D3-73BB895138D5"><title>Feature Manager Plugin interface to ECOM</title> <p>Feature Manager uses the <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECOM</xref> framework to discover feature plugins. A plugin implementation must have an interface Uid of 0x10205057 and its own unique implementation Uid. These two Uids are held in the plugin resource file. Feature Manager plugins must reside in ROM for the Feature Manager to discover them. </p> </section> <section id="GUID-1F0CE64B-2909-5414-B23A-9EEC2774910C"><title>Structure of Feature Manager Plugin</title> <p>Feature plugins are implementations of the <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref> interface. Although this class is called an interface, you implement it by creating a subclass. It has a single member object and a single member function. </p> <p>The member object is <xref href="GUID-9784517C-28D0-3A35-97D4-F55DD7532E85.dita"><apiname>iResponseCallback</apiname></xref> of class <xref href="GUID-0C29B43B-EA94-3C1F-8B55-F02CF502AF5D.dita"><apiname>MFeatureInfoPluginCallback</apiname></xref>. This object is protected and is not owned by <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref>. <xref href="GUID-0C29B43B-EA94-3C1F-8B55-F02CF502AF5D.dita"><apiname>MFeatureInfoPluginCallback</apiname></xref> is an interface which is implemented in server side code: <i>you do not implement it yourself</i>. </p> <p>The member function is <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref>. </p> <p>To create a plugin you have to implement <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref> so that <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref> creates the response to a server request for information about features. You then have to return the response to the server using <xref href="GUID-9784517C-28D0-3A35-97D4-F55DD7532E85.dita"><apiname>iResponseCallback</apiname></xref>. The interface <xref href="GUID-0C29B43B-EA94-3C1F-8B55-F02CF502AF5D.dita"><apiname>MFeatureInfoPluginCallback</apiname></xref> provides a function <xref href="GUID-527C2F36-711C-384B-99CA-C9249A914E7C.dita"><apiname>ProcessResponseL</apiname></xref> which you call for this purpose. <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref> has a protected member <xref href="GUID-9784517C-28D0-3A35-97D4-F55DD7532E85.dita"><apiname>iResponseCallback</apiname></xref> of the class <xref href="GUID-0C29B43B-EA94-3C1F-8B55-F02CF502AF5D.dita"><apiname>MFeatureInfoPluginCallback</apiname></xref>: it is not part of the exposed API but you need to know of its existence. The call to <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref> must return before the call to <xref href="GUID-527C2F36-711C-384B-99CA-C9249A914E7C.dita"><apiname>ProcessResponseL</apiname></xref> begins: <i>the two calls must be asynchronous</i>. (The reason for this is the way the server is implemented.) </p> <p>The arguments of <xref href="GUID-527C2F36-711C-384B-99CA-C9249A914E7C.dita"><apiname>ProcessResponseL</apiname></xref> and <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref> are exactly the same. This is their purpose. </p> <ul><li id="GUID-F9C4A4B8-B4B8-5705-9FFE-82BB807A443E"><p> <xref href="GUID-A9D54790-CF5D-36FD-A925-C7823E33A467.dita"><apiname>aCommandId</apiname></xref> is a <xref href="GUID-784A9C71-77DE-34BD-BF4A-E136BA717B83.dita"><apiname>TFeatureInfoCmd</apiname></xref> representing the query sent from the server. </p> </li> <li id="GUID-14F93D1E-766B-51D1-B3CF-B146D19A27CA"><p> <xref href="GUID-960FC028-D8F1-3C2B-B968-41EF9FA8B8EB.dita"><apiname>aTransId</apiname></xref> is a <xref href="GUID-F894527F-13A6-3E6D-BA7B-187812CDF20E.dita"><apiname>TUint8</apiname></xref> representing the transaction Id, which the server requires to keep track of the asynchronous function calls. </p> </li> <li id="GUID-F907E7A9-79CA-5817-B987-D625AC023E85"><p> <xref href="GUID-33D3FD1B-06E6-38A5-9446-571A116894B0.dita"><apiname>aData</apiname></xref> is the data required by the server. In some cases it will be an empty buffer. It is declared as a <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> but in fact must be one of two specific subclasses of <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> explained below. </p> </li> </ul> <p>The third argument of <xref href="GUID-527C2F36-711C-384B-99CA-C9249A914E7C.dita"><apiname>ProcessResponseL</apiname></xref> and <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref> is declared as the address of a <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref>. In fact the data type of this argument depends on the value of the argument <xref href="GUID-A9D54790-CF5D-36FD-A925-C7823E33A467.dita"><apiname>aCommandId</apiname></xref> which is a member of the enumeration of commands <xref href="GUID-784A9C71-77DE-34BD-BF4A-E136BA717B83.dita"><apiname>TFeatureInfoCmd</apiname></xref> and has three possible values. They are </p> <ul><li id="GUID-619D4A09-6BC2-5329-9939-85972C857D8C"><p> <xref href="GUID-3A4CCE53-0A74-35EE-B4CD-71F979A91A38.dita"><apiname>ENoCommandId</apiname></xref>, a null command used in testing which requires <xref href="GUID-33D3FD1B-06E6-38A5-9446-571A116894B0.dita"><apiname>aData</apiname></xref> to be an empty buffer, </p> </li> <li id="GUID-4B069A93-9352-5889-A232-2E94E38ABBEF"><p> <xref href="GUID-4DBDEDEB-6157-30FB-9390-386C29C9DA13.dita"><apiname>ELoadFeatureInfoCmdId</apiname></xref>, which represents a boolean query and requires <xref href="GUID-33D3FD1B-06E6-38A5-9446-571A116894B0.dita"><apiname>aData</apiname></xref> to be a <xref href="GUID-F55853DC-56B3-3C0E-BD6E-60BE6CDFC410.dita"><apiname>TFeatureInfoRespPckg</apiname></xref> (an array of <xref href="GUID-CAC1553D-45FC-36CF-9232-9DA00F2A6528.dita"><apiname>TFeatureInfo</apiname></xref>), and </p> </li> <li id="GUID-2A21845A-C522-5673-BD65-D68130062996"><p> <xref href="GUID-DEF34801-61A1-3C04-8D0C-B90E18A6DC3F.dita"><apiname>ELoadEnhancedFeatureInfoCmdId </apiname></xref>, which represents an enhanced query and requires <xref href="GUID-33D3FD1B-06E6-38A5-9446-571A116894B0.dita"><apiname>aData</apiname></xref> to be a <xref href="GUID-9CFD5071-E1BE-3CE4-9E8F-2AE17CC16A31.dita"><apiname>TEnhancedFeatureInfoRespPckg</apiname></xref> (an array of <xref href="GUID-1983F7CA-1816-3672-8083-8D4FDAC0BE0E.dita"><apiname>TEnhancedFeatureInfo</apiname></xref>). </p> </li> </ul> <p>A boolean query <xref href="GUID-4DBDEDEB-6157-30FB-9390-386C29C9DA13.dita"><apiname>ELoadFeatureInfoCmdId</apiname></xref> simply returns with the presence or absence of the feature on the device. An enhanced query <xref href="GUID-DEF34801-61A1-3C04-8D0C-B90E18A6DC3F.dita"><apiname>ELoadEnhancedFeatureInfoCmdId </apiname></xref> returns the presence or absence of the feature and additional information such as its name and status (e.g. "supported"). You may implement either type of query depending on the nature of the feature information which is to be published. </p> <p>A boolean query returns a <xref href="GUID-F589DC3A-70F3-3A03-845F-A351BA2F5316.dita"><apiname>TFeature</apiname></xref> object for each feature it discovers and those objects are held in an array. That array together with an error code is contained in a <xref href="GUID-CAC1553D-45FC-36CF-9232-9DA00F2A6528.dita"><apiname>TFeatureInfo</apiname></xref> object which is contained in a <xref href="GUID-F55853DC-56B3-3C0E-BD6E-60BE6CDFC410.dita"><apiname>TFeatureInfoRespPckg</apiname></xref>. That package is passed as the third argument of a boolean query. </p> <p>An enhanced query returns a <xref href="GUID-80C51259-F2C4-3877-97B4-EC0C85DE93DE.dita"><apiname>TFeatureEntry</apiname></xref> object for each feature it discovers. An array of these objects together with an error code is contained in a <xref href="GUID-1983F7CA-1816-3672-8083-8D4FDAC0BE0E.dita"><apiname>TEnhancedFeatureInfo</apiname></xref> object packaged as a <xref href="GUID-9CFD5071-E1BE-3CE4-9E8F-2AE17CC16A31.dita"><apiname>TEnhancedFeatureInfoRespPckg</apiname></xref> and returned as the third argument of an enhanced query. </p> <p> <xref href="GUID-80C51259-F2C4-3877-97B4-EC0C85DE93DE.dita"><apiname>TFeatureEntry</apiname></xref> objects are part of the main Feature Manager API: see <xref href="GUID-C8086FF0-891B-5045-AD7A-41D15EFF2252.dita">How to use the Feature Manager</xref>. </p> <p> <xref href="GUID-F589DC3A-70F3-3A03-845F-A351BA2F5316.dita"><apiname>TFeature</apiname></xref> objects are part of the Feature Manager Plugin API. They consist of </p> <ul><li id="GUID-4C88C98E-EA92-51DF-A80C-C9EE6D405F47"><p> <xref href="GUID-269D3D8C-44F9-38C8-8F72-3517ADFC9829.dita"><apiname>iFeatureId</apiname></xref>, a 32 bit Id representing the feature, and </p> </li> <li id="GUID-9A225E33-9029-5D5A-B58B-8F04741109C6"><p> <xref href="GUID-3375282F-3344-39AF-A854-AE8CC5272C3E.dita"><apiname>iValue</apiname></xref>, a boolean set to <xref href="GUID-A759CA2D-8327-348F-9337-4886E619D920.dita"><apiname>EFalse</apiname></xref> if the feature is off and <xref href="GUID-781E8158-805B-3784-8FED-D7A191822FC3.dita"><apiname>ETrue</apiname></xref> if the feature is on. </p> </li> </ul> </section> <section id="GUID-0C3F492C-05AB-53BE-858E-884EF35A7259"><title>A suggested implementation of Feature Manager Plugin</title> <p>The following is a suggested method of implementing a Feature Manager Plugin so as to process the server command and the client response asynchronously. </p> <ul><li id="GUID-46CE7099-0900-5BBD-8011-BEEE7B5785CB"><p>Write a subclass of <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref>. </p> </li> <li id="GUID-EF2A78FE-D346-5F3B-A578-B903D3EF6AC4"><p>Write a timer class. The constructor of the timer should take arguments including an <xref href="GUID-0C29B43B-EA94-3C1F-8B55-F02CF502AF5D.dita"><apiname>MFeatureInfoPluginCallback</apiname></xref> object and the data needed to create the response. </p> </li> <li id="GUID-F8B527AB-1293-50D5-8287-B18001B18124"><p>Implement the <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref> function of <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref> so that it constructs a timer just before it returns. Pass the <xref href="GUID-9784517C-28D0-3A35-97D4-F55DD7532E85.dita"><apiname>iResponseCallback</apiname></xref> member of <xref href="GUID-5A2EDFE5-E46E-3F5E-AF1C-FDA857559C91.dita"><apiname>CFeatureInfoPlugin</apiname></xref> to the constructor of the timer. </p> </li> <li id="GUID-BF08079C-2BCD-5F35-9E32-F2BDB05FA0E7"><p>Have the timer wait a sufficient period to ensure that <xref href="GUID-CBB61EAE-7160-3CC7-BE1D-3157C61F747F.dita"><apiname>ProcessCommandL</apiname></xref> has returned. </p> </li> <li id="GUID-30CEAB3B-FB5C-56DD-B2A8-7B7CE9EF90BD"><p>Have the timer assemble the response data as a package and pass it to the <xref href="GUID-4752E61E-67AC-3E94-88EB-B5CFC8DEEE20.dita"><apiname>ProcessResponseL()</apiname></xref> function of <xref href="GUID-9784517C-28D0-3A35-97D4-F55DD7532E85.dita"><apiname>iResponseCallback</apiname></xref>. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager Overview</linktext> </link> <link href="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita"><linktext>Feature Manager Client
+                Overview</linktext> </link> <link href="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita"><linktext>Feature Discovery Overview</linktext> </link> <link href="GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita"><linktext>Feature Manager Server Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27C933F7-4634-57C8-B3D2-45C5563FECA4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27C933F7-4634-57C8-B3D2-45C5563FECA4" xml:lang="en"><title>How
+to use dynamic arrays</title><shortdesc>This document describes how to create templated arrays; that is,
+an array of a particular type of object.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All array classes are templated; the template value defines the type of
+object which is to form an element of the array. This is true for arrays of
+same length and variable length elements. The following example code constructs
+an array of same length elements of type <codeph>TMyClass</codeph> using the
+flat array buffer <codeph>CArrayFixFlat&lt;class T&gt;</codeph>. The array has
+granularity 16:</p>
+<codeblock id="GUID-E59CB1C7-4BFD-574B-97DD-28B82BEDB9BB" xml:space="preserve">CArrayFixFlat&lt;TMyClass&gt; array;
+...
+array = new (ELeave) CArrayFixFlat&lt;TInt&gt;(16);
+...</codeblock>
+<p>To construct an array of <codeph>TInt</codeph> values with a <i>granularity</i> of
+16, implement code as follows:</p>
+<codeblock id="GUID-6B599A36-21EE-50B0-BF18-00C84AEC50A7" xml:space="preserve">CArrayFixFlat&lt;TInt&gt;* array;
+...
+array = new (ELeave) CArrayFixFlat&lt;TInt&gt;(16);</codeblock>
+<p>After construction, the array contains no elements and no memory is allocated
+to the array buffer.</p>
+<p><codeph>CArrayPtrFlat</codeph> is a specialised array where the elements
+are <i>pointers</i> to <codeph>CBase</codeph> derived objects. To construct
+an array whose elements are pointers to <codeph>CMyClass</codeph> objects:</p>
+<codeblock id="GUID-5F63CDA5-2386-562F-A66D-6963A126314D" xml:space="preserve">CArrayPtrFlat&lt;CMyClass&gt;* array;
+...
+array = new (ELeave) CArrayPtrFlat&lt;CMyClass&gt;(16);</codeblock>
+<p>To construct an array of same length elements of type <codeph>TMyClass</codeph> using <codeph>RArray&lt;class
+T&gt;</codeph>:</p>
+<codeblock id="GUID-13D94D48-B752-5A31-9CC6-BD94DC2DEE3A" xml:space="preserve">RArray&lt;TMyClass&gt; array; // this is on the stack
+...
+...                     // add entries etc
+...
+array.Close();          // called before the array goes out of scope</codeblock>
+<p>To construct an array of pointers to <codeph>CMyClass</codeph> objects
+using <codeph>RPointerArray&lt;class T&gt;</codeph>:</p>
+<codeblock id="GUID-151C2968-19F5-5AA0-BB93-DCBFF023B0DA" xml:space="preserve">RPointerArray&lt;CMyClass&gt; array;  // this is on the stack
+...
+CMyClass* ptr = new (ELeave) CMyClass;
+...
+array.Append(ptr);
+...
+array.ResetAndDestroy();       // called before the array goes
+                               // out of scope</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27E38FBB-F417-56C8-BFCF-B32215668902.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-27E38FBB-F417-56C8-BFCF-B32215668902" xml:lang="en"><title>Using Versit</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08-master.png has changed
Binary file Symbian3/SDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e263086_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72"><title>Timers And Timing Services Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides timers that asynchronously notify an application after an interval or at a specific time.</p> </section> <section><title>Architectural relationships</title> <p>The <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> class in the System Static Functions API provides simple functions to suspend a thread for a given interval or until a specific time.</p> </section> <section><title>Description</title> <p>The API has three key concepts: simple timer, periodic timer, and heartbeat timer. </p> <p><b>Simple timer</b> </p> <p>The simple timer produces an event at a given system time or after a given interval. It is provided by <xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita"><apiname>RTimer</apiname></xref>. This service is wrapped in an active object by <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref>.</p> <p><b>Periodic timer</b> </p> <p>A periodic timer produces a sequence of events at a specified interval. The application is called through a callback (<xref href="GUID-6C5766BC-05DE-32A8-993D-6BB582931F43.dita"><apiname>TCallBack</apiname></xref>) when they occur. It is provided by <xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic</apiname></xref>.</p> <p><b>Heartbeat timer</b> </p> <p>A heartbeat timer is similar to a periodic timer. However, if the application is busy handling another event when the timer event occurs, a periodic timer simple delays delivering the event, while a heartbeat timer will inform the application that it has missed the event. </p> <p>It is provided by <xref href="GUID-12C497F2-DB51-3740-972C-11ACD6501DAB.dita"><apiname>CHeartbeat</apiname></xref>. Applications are alerted to timer events through implementing an interface <xref href="GUID-6DE7027A-54C0-33F1-B184-7070B1A85709.dita"><apiname>MBeating</apiname></xref>.</p> </section> <section><title>See also</title> <p><xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous Services Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System Static Functions Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-27F39152-0AF2-577A-A367-BCEE9060902E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-27F39152-0AF2-577A-A367-BCEE9060902E"><title>SIP Settings in CenRep</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The SIP Settings are configured to be stored in a permanent storage called the Central Repository (CenRep). </p> <p>The organisation of SIP Settings in Cenrep adheres to the below listed rules: </p> <ul><li id="GUID-2FEFD775-5621-5D9F-9DCB-4376D125248A"><p>The SIP Settings are stored across multiple repositories in CenRep. </p> </li> <li id="GUID-7B033E40-063B-563C-983F-790A9972C789"><p>Each repository is identified by an Unique ID (UID). </p> </li> <li id="GUID-61EA9C02-5474-5341-8369-E68574DECC43"><p>Each repository stores a different type of SIP Setting like Profile Settings, Configuration Settings, Stack Settings. </p> </li> <li id="GUID-853EA2E7-D13A-5FB3-A386-F1DA343B633B"><p>Each repository has a Key Space design defined for storage of the SIP Settings. This enhances the flexibility and efficiency of storage. </p> </li> <li id="GUID-616148E9-C359-5D29-A902-66BB8852B51E"><p>SIP settings stored in CenRep can be retrieved and used by applications. </p> <p> </p> </li> <li id="GUID-E2A80179-3164-5B85-87CD-35C3D3E4D7E6"><p>The backup and restore applications can use the standard mechanisms to backup and restore the SIP Settings from CenRep. </p> <p> </p> </li> </ul> <table id="GUID-3957CF98-EFBE-5724-846E-B9C6028E8086"><tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><thead><row><entry>SIP Setting Type </entry> <entry> UID </entry> <entry>Data Stored </entry> <entry>CenRep Keys </entry> <entry>Key Space Design</entry> </row> </thead> <tbody><row><entry><p>Profile Settings </p> </entry> <entry><p>101f413C </p> </entry> <entry><p>SIP Profile </p> </entry> <entry><p> <filepath>csipmanagedprofile.h</filepath>, <filepath>csipprofile.h</filepath>  </p> </entry> <entry><p><xref href="GUID-A1598248-EE3D-5ED5-A431-02DCEBEDF472.dita">Key Space Design for SIP Profiles</xref>  </p> </entry> </row> <row><entry><p>Configuration Settings </p> </entry> <entry><p>0x2001F889 </p> </entry> <entry><p>Configuration Settings of the Profile Server. </p> </entry> <entry><p> <filepath>sipprofileagentextensionparams.h</filepath>, <filepath>sipprofiletypeinfo.h</filepath>  <filepath>sipprofileservercrkeys.h</filepath>  </p> </entry> <entry><p><xref href="GUID-7F8F830A-990C-5DDF-9D8F-28C89BFA755A.dita">Key Space Design for Profile Server Configuration Settings</xref>  </p> </entry> </row> <row><entry><p>SIP Stack Settings </p> </entry> <entry><p>0x101FED88 </p> </entry> <entry><p>SIP Stack Settings </p> </entry> <entry><p> <filepath>sipcrkeys.h</filepath>  </p> </entry> <entry><p><xref href="GUID-53017B71-9399-548B-BD1D-C68FC535A543.dita">Key Space Design for SIP Timers</xref>  </p> </entry> </row> </tbody> </tgroup> </table> <section><title>Creation of Device Variants</title> <p>Storing the SIP settings in CenRep allows the Creation of Device Variants with different SIP configuration settings. </p> <p>The device variant creation allows device variant engineers to configure SIP profiles specific to the device. The device variant engineers can create device variants with different SIP configuration settings. The device variants are shipped with the device. </p> <p>The engineers configure the Keys based on the Key Space design to create the device variants at the time of device creation. The device variants are stored in the device. </p> <p>Standard CenRep based tools can be used to create the device variants. The engineers need to be aware of the Key Space design of the SIP profiles and the associated parameters that need to be provisioned. </p> </section> <section><title>Client Provisioning</title> <p>Storing the SIP settings in CenRep allows the Client Provisioning. </p> <p>Client Provisioning enables the operator to provide SIP settings to the device via Over the Air (OTA) message. The DM\CP technology is used. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C" xml:lang="en"><title>Root
+Certificates</title><shortdesc>To validate a certificate, a client application must have at least
+one certificate which it directly trusts. This is a root certificate. Different
+applications trust different root certificates. For example, TLS might trust
+VeriSign's secure server root, but Software Install may not. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Root Certificate Management and Storage</title> <p><b>The
+file certificate store</b> </p> <p>There is a single 'file' certificate store
+(certstore), <filepath>CACerts.dat</filepath>, initially populated with default
+root certificates, located in <filepath>c:\system\data\</filepath> (or a private
+directory). When a certstore object is constructed it looks for the store
+in this location. If it cannot be found the original store is copied over
+from ROM. </p> <p>A certificate is marked with zero or more UIDs, each of
+which identifies an application that trusts this certificate. These can be
+edited and the resulting entry put back in the store, this changes the trust
+settings for that certificate. </p> <p><b>The certificate applications store</b> </p> <p>The
+certificate applications (certapps) store, <filepath>certclients.dat</filepath>,
+which is used by the file certstore, contains a set of zero or more clients.
+Each client consists of a UID and a human-readable name, and represents an
+application that requires the services of Certificate Management (certman).
+For example, TLS is a client, as is Software Installation. The word 'application'
+is used in its broadest possible sense; the UIDs do not have to be Symbian
+platform application UIDs, although this may be a sensible choice. Each certificate
+is marked as trusted by zero or more of these clients, this is what makes
+it a root certificate for that application. </p> <p>The <codeph>CCertificateAppInfoManager</codeph> class
+(<xref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita#GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C/GUID-10C59313-821D-5AC4-8E45-1650F6305C7A">see
+below</xref>) provides functions to add, remove and list these UID/name pairs.
+A certman application can retrieve the UID/name pairs for all clients of Certificate
+Management. The <codeph>TCertificateAppInfo</codeph> class (<xref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita#GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C/GUID-22FECC82-EFF6-5F89-B730-569350B6CE68">see below</xref>) encapsulates the UID/name pairs. </p> </section>
+<section id="GUID-5B7437DC-D8FD-59E3-B15E-4A16B75991E7"><title>Client registration</title> <p>Clients
+that use certificates register with certificate storage by providing a UID
+and a name. To reiterate, each certificate is marked with zero or more of
+these UIDs, indicating that it is trusted by that particular application.
+This enables a client(s) to mark a certificate as being trusted for use by
+a particular program. </p> <p>In practice, known applications that use certification,
+such as a web browser or the software installer, will already be registered.
+Currently, the following applications/UIDs are defined: </p> <table id="GUID-B5783775-6FB4-50A0-AA29-D25D5D27C953">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Client/Application name </entry>
+<entry>UID</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>SWInstall </p> </entry>
+<entry><p> <codeph>268452523</codeph>, <codeph>0X100042AB</codeph>  </p> </entry>
+<entry><p>Certificate is suitable for software installation (SIS files) </p> </entry>
+</row>
+<row>
+<entry><p>SWInstallOCSP </p> </entry>
+<entry><p> <codeph>268478646</codeph>, <codeph>0X1000A8B6</codeph>  </p> </entry>
+<entry><p>Certificate is suitable for OCSP checking (SIS files) </p> </entry>
+</row>
+<row>
+<entry><p>TLS/SSL </p> </entry>
+<entry><p> <codeph>268441661</codeph>, <codeph>0X1000183D</codeph>  </p> </entry>
+<entry><p>Certificate is suitable for SSL/TLS server authentication. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>These UIDs are stored in <filepath>certclients.dat</filepath>;
+see the <xref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita#GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C/GUID-ABB767AE-0595-5EAE-8DBF-73538CFA756B">Location
+of the certstore and certapps store</xref> section below. </p> <p>An application
+using the certificate validation interface needs to supply the appropriate
+UID to the certificate validation object, which uses this to select the subset
+of certificates that are trusted by that application: these form the set of
+'candidate' root certificates. </p> <p>For a client to work with certificate
+validation, it needs: </p> <ul>
+<li id="GUID-EBAFF1BD-3771-5BF9-9620-1CDF0A1BA1B6"><p>an entry for the application
+added to the list of clients </p> </li>
+<li id="GUID-E9EF1284-5AFD-55D1-81C2-E29A14CE4088"><p>any needed certificates
+added to the store </p> </li>
+<li id="GUID-83A6F618-0290-5976-AB5E-5DAF16C089B3"><p>any of the above certificates
+marked as trusted by the client. </p> </li>
+</ul> <p id="GUID-10C59313-821D-5AC4-8E45-1650F6305C7A"><b>CCertificateAppInfoManager</b> </p> <p>The <codeph>CCertificateAppInfoManager</codeph> class
+provides the following functions for client registration: </p> <ul>
+<li id="GUID-EE258CCA-E411-5D3E-8777-E03405F6B203"><p> <b>Add a new client</b>  </p> <codeblock id="GUID-B17F0BF0-6539-5F96-A4D1-419518D4FCD8" xml:space="preserve">
+IMPORT_C void AddL(const TCertificateAppInfo&amp; aClient);
+</codeblock> <p>Leaves with <codeph>KErrPermissionDenied</codeph> if the caller
+does not have the required capability </p> </li>
+<li id="GUID-AA763F58-D7C6-563E-B9EA-2BF69F6D18C8"><p> <b>Remove an existing
+client</b>  </p> <codeblock id="GUID-83C72B54-C3FD-567D-A15A-C2719C011B43" xml:space="preserve">
+IMPORT_C void RemoveL(const TUid&amp; aUid);
+</codeblock> <p>Leaves with <codeph>KErrNotFound</codeph> if the client does
+not exist, and <codeph>KErrPermissionDenied</codeph> if the caller does not
+have the required capability </p> </li>
+<li id="GUID-B176271E-9B77-5A80-B00F-6F5ABDA951D1"><p> <b>List the registered
+clients</b>  </p> <codeblock id="GUID-6ABD5D35-C336-5AD0-9930-B6D679922AD0" xml:space="preserve">IMPORT_C const RArray&lt;TCertificateAppInfo&gt;&amp; Applications() const;
+</codeblock> <p>The returned array becomes the property of the caller who
+is responsible for its destruction. </p> </li>
+</ul> <p>When a certificate is added to the certstore it is added along with
+a set of trusters: this set can be edited subsequently. Then, when clients
+retrieve sets of certificates they can parameterise the request with a set
+of trusters, and only certificates trusted by those trusters will be retrieved.
+See the sections on adding and retrieving certificates in the <xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita">Unified
+Certificate Store Tutorial</xref>. </p> <p id="GUID-22FECC82-EFF6-5F89-B730-569350B6CE68"><b>TCertificateAppInfo </b> </p> <p>This
+simple class consists of a UID and a name. The UID does not have to be the
+application UID, but must be unique; it is anticipated that this can be ensured
+through the standard UID allocation scheme. Certificate storage does not check
+UIDs for uniqueness. </p> <codeblock id="GUID-7BA95F3B-F481-565D-BECE-09AFD138A16D" xml:space="preserve">
+IMPORT_C TCertManClientInfo(const TUid&amp; aUid, const TName&amp; aName);
+IMPORT_C TCertificateAppInfo(const TUid&amp; aUid, const TName&amp; aName);
+
+IMPORT_C const TUid&amp; Id() const;
+IMPORT_C const TUid&amp; Id() const;
+
+IMPORT_C const TName&amp; Name() const;
+IMPORT_C const TName&amp; Name() const;
+</codeblock> </section>
+<section id="GUID-ABB767AE-0595-5EAE-8DBF-73538CFA756B"><title>Location of
+the certstore and certapps store</title> <ul>
+<li id="GUID-979A23A2-F25E-59A3-9D40-8BDBCA703BCF"><p>Certificates are stored,
+along with suitable trust settings, in a file called <filepath>CACerts.dat</filepath>  </p> </li>
+<li id="GUID-D0D209BC-5717-5746-890D-895267515512"><p>Clients (certificate
+applications, or UID/name pairs) are stored in a separate file called <filepath>certclients.dat</filepath>  </p> </li>
+</ul> <p>These files are located in ROM on a phone. They are necessary for
+applications such as Software Install and SSL/TLS. </p> <p>On a cold boot
+the store is copied over to <filepath>system\data</filepath> (or, in Symbian
+OS v9.0, to a private directory) on the device's internal RAM drive. Subsequently,
+certificate storage will look for the store on that hardcoded path. If the
+store can't be found there, the original will be copied from ROM. </p> </section>
+</conbody><related-links>
+<link href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita"><linktext>Certificate
+Validation in PKIX</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE"><title>About application resources</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Overview</title> <p>Much of the information that defines the appearance, behaviour and functionality of a Symbian platform application is stored externally to the main body of the program, in a <keyword>resource file</keyword>. This is unlike some other programming environments, in which a single executable contains all the code and information used by the application. Resource files can have the advantages that information is loaded only when needed, which can reduce RAM requirements, they can be compressed, and they can be localised without needing to recompile the main program. </p> <p>Resource files are developed as text files written in a Symbian platform-specific resource language. These source files are then compiled into a binary file format that can be loaded and read by programs. The source files can be compiled on their own using the command-line resource builder tool (<filepath>epocrc</filepath>), or as part of the standard project building process either from the command-line or from within an IDE. </p> </section> <section><title>Purposes of resource files</title> <p>Resource files are used for the following purposes: </p> <ul><li id="GUID-82CD9E65-0F3E-53E5-98D3-DF6039383F05"><p>to define the application user interface. The C++ application programming framework requires that some aspects of an application’s layout and behaviour, such as the menu bars and dialogs, are defined in a resource file </p> </li> <li id="GUID-35A884F3-384D-576F-927C-1F6F6F340176"><p>to define application properties that are used by the application launcher or system shell. </p> <p>Until v9.0, (<filepath>.aif</filepath>) files are used to define the application's icon and caption, and various properties, for instance whether the application is exposed to users or hidden, whether the application can be embedded, and the priority at which the application should be associated with MIME data types. Aif files are built from a type of resource file. </p> <p>From v9.0, aif files are replaced by <xref href="GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita">application registration information</xref>. The caption and icon are defined either in a special resource file called a localisable icon/caption definition file, or, if more convenient, in the application's UI resource file. The application's properties and some other information is defined in another type of resource file called a registration file. </p> </li> <li id="GUID-3FEA9285-6F25-538D-B925-30EFF89DE072"><p>Literal strings and other constant data: for example, dialog text and error messages. The resource tool chain provides support for localisation of these. </p> </li> </ul> </section> <section><title>File types reference</title> <p>The resource compilation process uses a number of file types: </p> <table id="GUID-B15BD665-259D-5E38-AF3B-4C0B3111D752"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <filepath>rss</filepath>  </p> </entry> <entry><p>resource source file </p> </entry> </row> <row><entry><p> <filepath>rls</filepath>  </p> </entry> <entry><p>defines localisable strings, for inclusion in the resource source file </p> </entry> </row> <row><entry><p> <filepath>h</filepath>  </p> </entry> <entry><p>header file, for inclusion in C++ file </p> </entry> </row> <row><entry><p> <filepath>rh</filepath>  </p> </entry> <entry><p>resource header, for inclusion in the resource source file </p> </entry> </row> <row><entry><p> <filepath>hrh</filepath>  </p> </entry> <entry><p>common C++ or resource header, for inclusion in either type of source file </p> </entry> </row> <row><entry><p> <filepath>rsg</filepath>  </p> </entry> <entry><p>resource header file output from the resource compiler </p> </entry> </row> <row><entry><p> <filepath>rsc</filepath>  </p> </entry> <entry><p>compiled resource file from the resource compiler </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2822DEF4-F7E2-5795-BD67-14BF77C1EB85.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2822DEF4-F7E2-5795-BD67-14BF77C1EB85"><title>ps</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>ps [-fhsl] [-o]...</userinput> </p> <p>The <codeph>ps</codeph> command lists the details all the processes running on a system. By default, the following details are displayed for each process: </p> <ul><li id="GUID-FED78113-2C99-5022-A24D-3C6105E3036C"><p>Process ID </p> </li> <li id="GUID-8FC71FF6-C921-5AC2-B329-6B148D14146E"><p>Total execution time </p> </li> <li id="GUID-0BB887B0-4732-5BFD-94B2-8FCF2CCED800"><p>Process name </p> </li> </ul> <p> <b>Notes:</b>  </p> <ul><li id="GUID-4A81CC4F-A8C2-5833-A6A9-AAD83D834001"><p>Whenever data is not accessible to the <codeph>ps</codeph> command, a <b>?</b> symbol is displayed. </p> </li> <li id="GUID-F32CBB6C-E6AE-5AA8-BD01-8FF6FA6CA60D"><p>The total execution time is not listed on a Hardware Reference Platform (HRP) or a production device as the monitoring mechanism is optimised out of production ROMs. </p> </li> </ul> <p>The <codeph>ps</codeph> command supports the following options: </p> <table id="GUID-B7FC30FF-E6D2-5394-8F57-6EBEE2D43C93"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p>Lists the details all the processes along with the following information for each process: </p> <ul><li id="GUID-1DADF78F-A392-5946-8E50-98890C896C60"><p>Process ID </p> </li> <li id="GUID-066CE9E2-23F2-51C8-A936-DA321DA7EF34"><p>Total execution time </p> </li> <li id="GUID-6744B988-EF19-5D93-A81F-D922729158C6"><p>Complete path of the executable used by the process </p> </li> </ul> </entry> </row> <row><entry><p> <codeph>-h</codeph>  </p> </entry> <entry><p>Displays help information for the <codeph>ps</codeph> command. </p> </entry> </row> <row><entry><p> <codeph>-s</codeph>  </p> </entry> <entry><p>Lists the names of the servers. </p> </entry> </row> <row><entry><p> <codeph>-l</codeph>  </p> </entry> <entry><p>Lists the details all the processes along with the following information for each process: </p> <ul><li id="GUID-3F6BDB4C-0ABC-5905-BE04-A7A2C2565140"><p>Status of the process </p> </li> <li id="GUID-06E1D31A-1F11-5CD9-8468-F1F46C70D295"><p>Process ID </p> </li> <li id="GUID-1E5CB2AD-C84F-5C78-8582-61A364815361"><p>Priority of the process </p> </li> <li id="GUID-28EEBEE8-77B6-5F3D-9391-B0C4085ECA20"><p>Address of the process </p> </li> <li id="GUID-3016385B-ABA7-5E58-A7AD-AE25F0B877C1"><p>Size of the process </p> </li> <li id="GUID-8DA900DF-BC28-55F8-AC86-B39CA4245439"><p>Total execution time </p> </li> <li id="GUID-CD62477C-3241-53C6-9790-C052D49F5DEB"><p>Name of the process </p> </li> </ul> </entry> </row> <row><entry><p> <codeph>-o</codeph>  </p> </entry> <entry><p>This option enables you to customise the column headers displayed when the details of all the processes are listed. The default column headers are <b>TIME</b>, <b>PID</b>, <b>COMMAND</b> (command arguments for the process), and <b>COMMAND</b> (complete path of the executable used by the process). You can customise these column headers by assigning a value for the following variables: </p> <ul><li id="GUID-5648EA03-FEFC-59B0-B2E5-B034751532BC"><p> <b>time (TIME):</b> Total execution time. </p> </li> <li id="GUID-6D8A79A4-8A6F-510C-8DFC-B78767B00B56"><p> <b>pid (PID):</b> Process ID. </p> </li> <li id="GUID-12AA284C-9B70-5298-9888-ADBC34059FD1"><p> <b>args (COMMAND):</b> Command arguments for the process. The Symbian version of the <codeph>ps</codeph> command does not list any command arguments for a process, instead the complete path of the executable used by the process is displayed within square brackets under the <b>comm</b> column. </p> </li> <li id="GUID-C40D8523-923B-500F-8B0A-750656084C86"><p> <b>comm (COMMAND):</b> Complete path of the executable used by the process. </p> </li> </ul> <p> <b>Examples:</b>  </p> <ul><li id="GUID-8DE4314C-EEFF-5BF9-8E03-5EAC57DCB355"><p>To assign <b>Total Execution Time</b> as column header instead of <b>TIME</b> (the default value), use the following command: </p> <p><userinput>ps -o "time=Total Execution Time"</userinput> </p> <p> <b>Note:</b> You can use a comma (,) to specify multiple values using the <codeph>-o</codeph> option. </p> </li> <li id="GUID-7E2AC6F1-5329-5BDC-BFBA-48AE571C38EE"><p>To view the details of the processes with their default column headers, use the following command: </p> <p><userinput>ps -o comm,time,args,pid</userinput> </p> </li> <li id="GUID-20F0B32A-A757-5699-857F-440B8257326D"><p>To view the details of the processes with their complete path and assign <b>Exec Time</b> as column header for <b>TIME</b>, use the following command: </p> <p><userinput>ps -o comm, time=Exec Time</userinput> </p> </li> </ul> </entry> </row> </tbody> </tgroup> </table> <p>The following table describes the default column headers used be the <codeph>ps</codeph> command: </p> <table id="GUID-367EE044-500B-5062-BCD4-9D076810288E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Column Header</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p>S</p> </entry> <entry><p>Describes the state of the process. The only state supported by Symbian is <b>Running</b>. </p> </entry> </row> <row><entry><p>PID </p> </entry> <entry><p>Indicates the process ID of the process. </p> </entry> </row> <row><entry><p>PRI </p> </entry> <entry><p>Indicates the priority of the process. When the state of the process is suffixed by <b>&lt;</b> it indicates that the process is of high priority. Otherwise, when the status is suffixed by <b>N</b> it indicates that the process is of low priority. </p> </entry> </row> <row><entry><p>ADDR </p> </entry> <entry><p>Indicates the memory address of the process. </p> </entry> </row> <row><entry><p>SZ </p> </entry> <entry><p>The size in blocks of the core image of the process. (1 block = 512 bytes). </p> </entry> </row> <row><entry><p>TIME </p> </entry> <entry><p>The total execution time for the process. This is displayed in the following format: </p> <p> <codeph>[dd-]hh:mm:ss</codeph>  </p> <ul><li id="GUID-DD3E2AEC-742B-594F-8C11-9A82B13B6171"><p> <b>dd:</b> Days </p> </li> <li id="GUID-D2AF0252-CB01-5204-BCC4-548A0DC9B60F"><p> <b>hh:</b> Hours </p> </li> <li id="GUID-977B3E67-569A-5635-B513-7D19A642460F"><p> <b>mm:</b> Minutes </p> </li> <li id="GUID-D7CA229C-AADC-5CB2-986A-C5ADAB04C505"><p> <b>ss:</b> Seconds </p> </li> </ul> </entry> </row> <row><entry><p>CMD </p> </entry> <entry><p>Indicates the command name (complete path of the executable used by the process). The complete path is displayed when you use the <codeph>-f</codeph> option. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-282CE322-923F-58F6-804D-E125ABACB025.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-282CE322-923F-58F6-804D-E125ABACB025"><title>What is the System Critical Parameter?</title><shortdesc>System Critical Parameters allow the OS to reset when a module crashes. A System Critical Parameter compirses 2 distinct paramters. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The System Critical parameter comprises the following 2 parameters: </p> <ul><li id="GUID-E7E65918-6244-5229-9C2D-58D5599F1331"><p> <codeph>SystemCritical</codeph>  </p> </li> <li id="GUID-D7D78976-4E4C-5CC6-A223-19D2E84F2BBD"><p> <codeph>SystemCriticalAfterInit</codeph>  </p> </li> </ul> <p>If neither parameter is in the CMI file or if both parameters are set to zero they have no effect. When either parameter is set to one (<codeph>SystemCritical=1</codeph> or <codeph>SystemCriticalAfterInit=1</codeph>), the CPM runs as a System Critical thread. The <codeph>SystemCriticalAfterInit</codeph> parameter only applies when the CPM has processed its configuration. It allows the user to try a master reset if the device has corrupt configuration files. A System Critical thread forces the device to reboot if the thread terminates. To do this the <xref href="GUID-2B93F513-2631-3783-BECE-5A3AC6D9D6CD.dita#GUID-2B93F513-2631-3783-BECE-5A3AC6D9D6CD/GUID-B1906777-9D49-3AFC-9F2D-B4151E15E056"><apiname>User::SetCritical(User::ESystemPermanent)</apiname></xref> function is called. </p> <p>If the device must be rebooted when the module crashes the CPM must be set as System Critical. </p> </conbody><related-links><link href="GUID-83E4F989-0B73-5E83-8547-AB3070492CBF.dita"><linktext>What is the Comms Database?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-28604BBC-1C43-56F3-8667-DAF869F38BDB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-28604BBC-1C43-56F3-8667-DAF869F38BDB" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2861F3D9-875E-5AB3-9600-B328F042CC38" xml:lang="en"><title>MakeKeys
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <xref href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita">MakeKeys</xref> tool
+is a PC-side command-line tool that enables Symbian application developers
+to create a private key-public key pair and generate certificate requests. </p>
+<section><title>Purpose</title><p>The MakeKeys tool can be used to create
+a private key-public key (in form of a self-signed certificate) pair. The
+private key can then be used by the <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref> tool
+to digitally sign an installation file. The self-signed certificate can be
+used by the MakeKeys tool to create a certificate request file, which can
+then be submitted to a Certification Authority (CA) for signing. </p><note>The
+MakeKeys tool cannot generate Certification Authority (CA) certificates.</note> </section>
+<section><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>Key</dt>
+<dd><p>A key is a constant value applied using a cryptographic algorithm to
+encrypt text or to decrypt encrypted text. </p> <p>Keys are classified as
+symmetric and asymmetric based on the type of algorithm applied. If the same
+key is used for both encryption and decryption, it is symmetric. If different
+keys are used for encryption and decryption, they are asymmetric. Asymmetric
+keys exist in the form of a private key-public key pair, where the public
+key is used for encryption and the private key is used for decryption. For
+more information, see <xref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita">Public
+Key Cryptography</xref>. </p> </dd>
+</dlentry>
+</dl> <dl>
+<dlentry>
+<dt>Certification Authority</dt>
+<dd><p>Certification Authority (CAs) is a trusted third party that provides
+root certificates to users (End Entities). For details, see <xref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita">Certificates</xref>. </p> </dd>
+</dlentry>
+</dl> <dl>
+<dlentry>
+<dt>Digital signature</dt>
+<dd><p>A digital signature is used to verify that a message (or data) actually
+came from the sender (the one who signed the message) and that it has not
+been tampered with. For details, see <xref href="GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446.dita">Digital
+Signatures</xref>. </p> </dd>
+</dlentry>
+</dl> </section>
+</conbody><related-links>
+<link href="GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita"><linktext>MakeKeys
+Tutorials</linktext></link>
+<link href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita"><linktext>MakeKeys
+Reference</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31" xml:lang="en"><title>SDP Codec API</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-288C200C-760D-52A2-8FC7-E179E5FB1A2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-288C200C-760D-52A2-8FC7-E179E5FB1A2A" xml:lang="en"><title>Multimedia example code</title><shortdesc>Example code for the Multimedia module. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-28AD51DC-C101-5E6E-9EC3-C2B61400D8CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-28AD51DC-C101-5E6E-9EC3-C2B61400D8CD" xml:lang="en"><title>Generic Usability Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The EUser High Level library introduces the a new L-class idiom. The ‘L-Class’ idiom provides a clear indication of the new leaving behaviour of these classes, in order to distinguish them from existing Symbian classes and improve usability and understanding. The L prefix denotes that these classes may be Liberal when it comes to Leaving, while being Leave-safe themselves.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-28B9B737-AA79-5595-8DDE-7DD52402C0B9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-28B9B737-AA79-5595-8DDE-7DD52402C0B9" xml:lang="en"><title>Tools
+and file types used in the build process</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This page briefly lists the main Symbian-specific tools and file types
+used in building components. In addition to these tools, the build process
+will use compilers and linkers supplied by various third party companies. </p>
+<p>Tools supplied by Symbian are in <filepath>epoc32\tools\</filepath> directory. </p>
+<section id="GUID-846782B7-C972-4F36-B7CF-DE433985E20D"><title>Tools</title> <table id="GUID-108C8A55-E732-5F1E-9CD7-CCC634A06B61">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Tool</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>bldmake</filepath>  </p> </entry>
+<entry><p>This tool processes a component description file (<filepath>bld.inf</filepath>),
+which describes various aspects of the component, and generates make files
+and a batch file called <filepath>abld.bat</filepath>. This batch file is
+then used to drive the rest of the component build. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>abld</filepath>  </p> </entry>
+<entry><p>Calls the <filepath>.make</filepath> files generated by the <filepath>bldmake</filepath> tool
+to build a component. The make files typically call the <filepath>makmake</filepath> tool
+to create makefiles that specify the required build steps to build the component
+for a particular target. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>makmake</filepath>  </p> </entry>
+<entry><p>Takes a <filepath>.mmp</filepath> project file which lists the elements
+of the project, and produces a makefile for the platform specified. The GCC <filepath>make</filepath> utility
+is then called to execute the make file. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>elf2e32</filepath>  </p> </entry>
+<entry><p>Converts the ELF representation of an executable into an E32Image
+format file, the format required to run on Symbian platform. Used only for
+ARMV5 (ABIv2) target. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>elftran</filepath>  </p> </entry>
+<entry><p>Transforms the ELF representation of an executable into an E32Image
+format file, the format required to run on Symbian platform. Used only for
+ARMV5 (ABIv1) target. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>elf2Inf</filepath>  </p> </entry>
+<entry><p>Gets a list of the symbol names of the exported definitions from
+an ELF file. Its output <filepath>.inf</filepath> file is input to <filepath>makedef</filepath>.
+Used only for ARMV5 (ABIv1) target. </p> </entry>
+</row>
+
+<row>
+<entry><p> <filepath>makedef</filepath>  </p> </entry>
+<entry><p>Maintains or creates DEF files, which record an executable's exported
+symbols by ordinal. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>def2dll</filepath>  </p> </entry>
+<entry><p>Creates binary objects used to implement the Symbian platform DLL
+model. These are a representation (ELF) of the export table (<filepath>.exp</filepath> file),
+and its import library (<filepath>.lib</filepath>). Used only for ARMV5 (ABIv1)
+target. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>epocrc</filepath>  </p> </entry>
+<entry><p>Combines the actions of passing a resource file through the C++
+preprocessor, and then compiling it with the <filepath>rcomp</filepath> tool. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>rcomp</filepath>  </p> </entry>
+<entry><p>Resource compiler. Compiles source <filepath>rss</filepath> resource
+files into compiled resource data files, and a <filepath>rsg</filepath> resource
+header file. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>bmconv</filepath>  </p> </entry>
+<entry><p>Bitmap converter. Takes one or more Microsoft Windows bitmaps <filepath>.bmp</filepath> and
+generates a single multi-bitmap file <filepath>.mbm</filepath>, optimised
+for efficient runtime loading by the GDI. Also a header file <filepath>.h</filepath> with
+symbolic definitions for each bitmap in the file. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>More specialised tools are available for particular types of development,
+e.g. for generating font and printer driver libraries. </p> </section>
+<section id="GUID-A95BD340-3A89-40E6-805E-73C92E6159A7"><title>File types</title> <p>The following file types are involved
+in the build processes: </p> <table id="GUID-D05A7EA1-48E7-5347-BE8D-B8E646580E52">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <filepath>bld.inf</filepath>  </p> </entry>
+<entry><p>component description file, input to <filepath>bldmake</filepath>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.mmp</filepath>  </p> </entry>
+<entry><p>project file: specification of a project, input to <filepath>abld/makmake</filepath>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.&lt;target&gt;</filepath>  </p> </entry>
+<entry><p>a makefile, output from <filepath>makmake</filepath>, used to build
+the project for the specified target. Examples are <filepath>.winscw</filepath> for
+the WINSCW target, <filepath>.armv5</filepath> for the ARMV5 target, etc. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.make</filepath>  </p> </entry>
+<entry><p>build batch makefile, for use by <filepath>abld</filepath> for the
+purposes of building, output from <filepath>bldmake bldfiles</filepath>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.cpp</filepath>  </p> </entry>
+<entry><p>C++ source file </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.h</filepath>  </p> </entry>
+<entry><p>header file, for inclusion in C++ file </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.rss</filepath>  </p> </entry>
+<entry><p>resource source file, for input to <filepath>rcomp</filepath>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.rh</filepath>  </p> </entry>
+<entry><p>resource header, for inclusion in resource file </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.hrh</filepath>  </p> </entry>
+<entry><p>common C++ or resource header, for inclusion in either type of source
+file </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.rsg</filepath>  </p> </entry>
+<entry><p>generated resource header file, output from <filepath>rcomp</filepath>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.rsc</filepath>  </p> </entry>
+<entry><p>generated resource file, output from <filepath>rcomp</filepath>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.bmp</filepath>  </p> </entry>
+<entry><p>bitmap file, in Microsoft Windows format, input to <filepath>bmconv</filepath> (can
+also be output) </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.mbm</filepath>  </p> </entry>
+<entry><p>multi-bitmap file, generated by Symbian platform bitmap compiler,
+output from <filepath>bmconv</filepath> (can also be input) </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.def</filepath>  </p> </entry>
+<entry><p>linker definition file, defining an executable's exports and their
+ordinal positions. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.lib</filepath>  </p> </entry>
+<entry><p>static library file, often containing stub functions for DLL linking. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.map</filepath>  </p> </entry>
+<entry><p>map of entities in an executable, output by linker </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.exe</filepath>  </p> </entry>
+<entry><p>executable that can be loaded and run as a process </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.dll</filepath>  </p> </entry>
+<entry><p>dynamic link library or DLL: executable containing shared functionality
+that can be loaded by other executables </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>.dso</filepath>  </p> </entry>
+<entry><p>ELF format file output by compiler/linkers for ARM targets. Also
+used for linking against DLLs in the ARMV5 ABIv2 target. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-28D13F63-9D72-5D70-BE81-3B4E54B3A8C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-28D13F63-9D72-5D70-BE81-3B4E54B3A8C1" xml:lang="en"><title>DNS
+Proxy Server Initialization Settings </title><shortdesc>This topics describes the initialization settings of the DNS Proxy
+server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>DNS Proxy server on start up reads the initialization information from <filepath>resolver.ini</filepath> file
+which stores the initialization settings. This provides the connection information
+on which the DNS Proxy server starts receiving DNS requests. </p>
+<p>The <filepath>resolver.ini</filepath> file is located in the following
+folder: <filepath>z:\private\200215f1\</filepath>. If there is no file or
+if some values are missing then the DNS proxy starts with the default values. </p>
+<section id="GUID-337E6F01-A404-4DEA-8914-D8FDED392474"><title>Initialization setting parameters</title> <p>The following
+table lists the parameters, description and default values present in the <filepath>.ini</filepath> file. </p> <table id="GUID-C8AEF62F-6FE4-5C3B-B987-631549540716">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Parameters</entry>
+<entry>Description</entry>
+<entry>Default values</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>sessioncount </p> </entry>
+<entry><p>This value represents the maximum number of resolver sessions that
+can handle the incoming queries. </p> </entry>
+<entry><p>1</p> </entry>
+</row>
+<row>
+<entry><p>retries </p> </entry>
+<entry><p>This value represents the number of retries made for resolving the
+query. </p> </entry>
+<entry><p>2</p> </entry>
+</row>
+<row>
+<entry><p>queuesize </p> </entry>
+<entry><p>This value represents the maximum queries that can be handled by
+the DNS Proxy server. Queries are dropped if the queue is full. </p> </entry>
+<entry><p>20 </p> </entry>
+</row>
+<row>
+<entry><p>TTL </p> </entry>
+<entry><p>Time to Live field. This value represents the validity period for
+the local query response measured in seconds. </p> </entry>
+<entry><p>21600 seconds </p> </entry>
+</row>
+<row>
+<entry><p>dbsize </p> </entry>
+<entry><p>This value represents the maximum size of the DNS Proxy server non-persistent
+DB. This is an optional parameter to prevent DoS attacks. </p> </entry>
+<entry><p>10 </p> </entry>
+</row>
+<row>
+<entry><p>timerval </p> </entry>
+<entry><p>This value represents the timer value for the response timer, that
+is, the number of seconds the DNS Proxy server waits for the response before
+timing out. </p> </entry>
+<entry><p>5 seconds </p> </entry>
+</row>
+<row>
+<entry><p>serialnum </p> </entry>
+<entry><p>This value is stored but is not used. </p> </entry>
+<entry><p>10000 </p> </entry>
+</row>
+<row>
+<entry><p>refreshtim </p> </entry>
+<entry><p>This value is stored but is not used. </p> </entry>
+<entry><p>900 seconds </p> </entry>
+</row>
+<row>
+<entry><p>retrytime </p> </entry>
+<entry><p>This value is stored but is not used. </p> </entry>
+<entry><p>600 seconds </p> </entry>
+</row>
+<row>
+<entry><p>expiretime </p> </entry>
+<entry><p>This value is stored but is not used. </p> </entry>
+<entry><p>300 seconds </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <note>All the parameters in the <filepath>.ini</filepath> file
+are optional. </note></p> </section>
+<example><title>DNS Proxy initialization settings example</title> <p>The following
+is an example DNS Proxy section from a <b>resolver.ini</b> file: </p> <codeblock id="GUID-4EFFA9AE-80AA-5C84-BFB5-2202147DB256" xml:space="preserve">
+[proxyresolver]
+sessioncount= 5
+retries= 2
+queuesize= 20
+TTL= 21600
+dbsize= 10
+timerval= 5
+serialnum= 10000
+refreshtim= 900
+retrytime= 600
+expiretime= 86400
+</codeblock> </example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F" xml:lang="en"><title>prj_extensions</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>prj_extensions</codeph>  </p>
+<p> <codeph>start extension</codeph>  <varname>subsystem\ext-template</varname>  </p>
+<p>[<codeph>target</codeph>  <varname>target_file_name</varname>] </p>
+<p>[<codeph>sources</codeph>  <varname>source_file_1 ... source_file_n</varname>] </p>
+<p>[<codeph>dependencies</codeph>  <varname>dependency_file_1 ...        
+dependency_file_n</varname>] </p>
+<p>[<codeph>tool</codeph>  <varname>toolname</varname>] </p>
+<p>[<codeph>option</codeph>  <varname>key_1</varname> <varname>value_1</varname>] </p>
+<p>... </p>
+<p>[<codeph>option</codeph>  <varname>key_n</varname> <varname>value_n</varname>] </p>
+<p> <codeph>end</codeph>  </p>
+<p> <b>Note:</b> The value argument in the option statement is optional. </p>
+<p>The <codeph>prj_extensions</codeph> section lists all the template extension
+makefiles that are to be invoked while building the component. This approach
+is introduced since Symbian OS v9.3 and it deprecates the use of <codeph>makefile</codeph> and <codeph>gnumakefile</codeph> directives
+in <filepath>bld.inf</filepath> files. It is recommend to use <codeph>prj_extensions</codeph> approach
+to call the extension makefile templates. </p>
+<p> <i>Note that a prj_extensions section can have one or more of start extension
+... end blocks.</i>  </p>
+<p> <varname>subsystem/ext-template</varname> specifies the extension makefile
+template name along with its path relative to the <codeph>epoc32</codeph> template
+directory, which is <filepath>\epoc32\tools\makefile_templates\</filepath>.
+The <codeph>.mk</codeph> suffix of the template need not be specified, as
+it is handled automatically. </p>
+<p>The optional <codeph>target</codeph>  <varname>target_file_name</varname> specifies
+the name and location of the target to be built. </p>
+<p>The optional <codeph>sources</codeph>  <varname>source_file_1 ....    
+    source_file_n</varname> specifies the list of source file names along
+with their path, which are required to build the <codeph>target</codeph>. </p>
+<p>The optional <codeph>dependencies</codeph>  <varname>dependency_file_1
+...         dependency_file_n</varname> specifies the list of dependency file
+names along with their path, which are required to build the <codeph>target</codeph>.
+The file extension part of the name need not be specified, as this will be
+automatically supplied. </p>
+<p>The optional <codeph>tool</codeph>  <varname>toolname</varname> specifies
+the tool to be used to build the target. </p>
+<p>The optional <codeph>option</codeph>  <varname>key_1</varname> <varname>value_1</varname> specifies
+the parameter values for the template extension makefile, as key-value pairs.
+These parameters are variables used in the template, and the precise set of
+variables specified here are entirely dependent on the requirement. There
+is no limit to the number of parameters a template extension makefile may
+require and can take. </p>
+<example><p>This example sets <codeph>PREFIX</codeph>, <codeph>HALPATH</codeph> and <codeph>SOURCE</codeph> options
+of the template extension makefile <filepath>config.mk</filepath></p><codeblock id="GUID-E876D415-D71A-51B9-BAF7-4ABE5335947E" xml:space="preserve">PRJ_EXTENSIONS
+start        extension        base\config
+
+option         PREFIX         _SH2_
+option         HALPATH        \..\..\..
+option            SOURCE            \..\hal
+
+end
+</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2922758C-37A4-436E-B0F3-358944F84E2A" xml:lang="en"><title>Pop-up
+windows</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Certain UI components are displayed within pop-up windows. A common characteristic
+for all these components is that they are temporary states  This means that
+typically back stepping from one state to the previous state does not lead
+into pop-up windows; they are skipped.</p>
+<table id="GUID-75280CEE-CE19-48CB-8B23-DB0A0295987B"><title>Pop-up components</title>
+<tgroup cols="2"><colspec colname="col1" colwidth="0.42*"/><colspec colname="col2" colwidth="1.58*"/>
+<thead>
+<row>
+<entry>Component</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Options menu</p></entry>
+<entry><p>The commands and options that are available in the current context
+can be accessed via the <b>Options</b> menu. It is displayed as a list in
+a pop-up window.</p></entry>
+</row>
+<row>
+<entry><p>Query</p></entry>
+<entry><p>A query is a component where the software requests user input. All
+query components are displayed in pop-up windows. They consist of a prompt
+(possibly containing a graphical element) and some kind of an input component.
+Various types of queries exist: </p><ul>
+<li><p>A Confirmation query has either one or two possible input values, given
+by using the softkeys. </p></li>
+<li><p>A List query has a limited number of possible input values, and the
+user selects one from a list. </p></li>
+<li><p>A multi-selection List query has a limited number of possible input
+values, and the user can select zero, one or more of them in one pass. </p></li>
+<li><p>A Data query contains an input field for a numeric or alphanumeric
+value that the user can edit.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Note</p></entry>
+<entry><p>A note is a feedback component that informs the user about the current
+situation. They contain a text and possibly a graphical element, and their
+layout is similar to a Confirmation query. However, the softkey labels do
+typically not exist, as notes do not require user input and by default they
+disappear within a time-out.</p></entry>
+</row>
+<row>
+<entry><p>Soft notification</p></entry>
+<entry><p>Soft notifications are reminders that inform the user of events
+that have typically occurred during the user's absence. Soft notifications
+can only be seen in the Idle state, and the user can acknowledge them. There
+are two types of soft notifications; the layouts resemble those of Confirmation
+queries and List queries: </p><ul>
+<li><p>A single soft notification contains one notification. </p></li>
+<li><p>A grouped soft notification contains a number of information items
+presented as a list, and a title text common to all of the items.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Call window</p></entry>
+<entry><p>Incoming calls and outgoing calls are presented in pop-up windows.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section id="GUID-58FB6AAA-5721-41D2-8593-D1117485563D"><title>Using
+pop-up windows in C++ applications</title><p>For implementation information
+on the pop-up window components, see:</p><ul>
+<li><p><xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options menu</xref></p></li>
+<li><p><xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Query</xref></p></li>
+<li><p><xref href="GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita">Note</xref></p></li>
+<li><p><xref href="GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita">Soft notification</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F" xml:lang="en"><title>EGL
+Functions with Symbian-Specific Behavior</title><shortdesc>This topic describes the EGL functions that are defined as having
+platform-specific behavior and explains their expected behavior on the Symbian
+platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The functions that have Symbian-specific behavior are: </p>
+<ul>
+<li id="GUID-26A32D85-FFC6-5EF8-AF56-D4F2BB809D51"><p> <xref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita#GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F/GUID-4E3AD50C-FBBF-554A-99FE-A637AADAE93C">eglQueryString()</xref>  </p> </li>
+<li id="GUID-04065DA1-A3E1-52C2-9C24-8B48FF3968FE"><p> <xref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita#GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F/GUID-7D3B2473-5BFA-5C8A-B895-7B7E3D9949A8">eglCreatePixmapSurface()</xref> </p> </li>
+<li id="GUID-988AF3F7-D2CD-5993-A980-82C46A6E2D36"><p> <xref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita#GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F/GUID-7FC7E115-F659-5EA0-9BD0-AFFA717C2C00">eglChooseConfig()</xref>  </p> </li>
+<li><p><xref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita#GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F/GUID-E6BE99B1-6C0D-4D0D-B956-E7D3A312D75E">eglSurfaceAttrib()</xref></p></li>
+</ul>
+<section id="GUID-4E3AD50C-FBBF-554A-99FE-A637AADAE93C"><title>eglQueryString()</title> <codeblock id="GUID-3A9B5681-C61C-581F-A72E-10A821C15C3C" xml:space="preserve">const char *eglQueryString(
+                  EGLDisplay dpy,
+                  EGLint name)</codeblock> <p>When <codeph>name</codeph> is <codeph>EGL_EXTENSIONS</codeph>,
+the function returns the list of extensions supported by the implementation.
+The platform-specific strings are as follows: </p> <table id="GUID-969FA7B5-8C7A-5CD0-AA9E-9EA4AB3B34BA">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>String</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EGL_SYMBIAN_COMPOSITION</codeph>  </p> </entry>
+<entry><p>Indicates that the ScreenPlay variant is in use. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>EGL_KHR_reusable_sync</codeph></p></entry>
+<entry><p>Indicates that the EGL reusable sync extension is supported.</p></entry>
+</row>
+<row>
+<entry><codeph>EGL_NOK_resource_profiling</codeph></entry>
+<entry><p>Indicates that the EGL resource profiling extension is supported.</p></entry>
+</row>
+<row>
+<entry><codeph>EGL_NOK_resource_profiling2</codeph></entry>
+<entry><p>Indicates that the EGL resource profiling2 extension is supported.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Example </b> </p> <codeblock id="GUID-D509300C-44C2-5AC1-8C8D-A5F42B55D825" xml:space="preserve">if ( NULL == strstr(eglQueryString(display, EGL_EXTENSIONS), "EGL_SYMBIAN_COMPOSITION") ) 
+    {
+    RDebug::Printf("ScreenPlay not in use.");
+    error = KErrNotSupported;
+    }</codeblock> </section>
+<section id="GUID-7D3B2473-5BFA-5C8A-B895-7B7E3D9949A8"><title>eglCreatePixmapSurface()</title> <codeblock id="GUID-70CE6CC8-4F27-5296-B41C-998FDE11C466" xml:space="preserve">EGLSurface eglCreatePixmapSurface(
+                  EGLDisplay dpy,
+                  EGLConfig config,
+                  EGLNativePixmapType pixmap,
+                  const EGLint *attrib_list)</codeblock> <p> <codeph>EGLNativePixmapType</codeph> is
+a <codeph>CFbsBitmap*</codeph> . See <xref href="GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita">Symbian-Specific
+Behavior</xref> for more information. </p> <p>You must choose <codeph>&lt;config&gt;</codeph> using
+the attribute <codeph>EGL_MATCH_NATIVE_PIXMAP</codeph> when calling <xref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita#GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F/GUID-7FC7E115-F659-5EA0-9BD0-AFFA717C2C00">eglChooseConfig()</xref> in
+order to ensure compatibility with the Symbian pixmap. </p> <p><b>Preconditions </b> </p> <ul>
+<li id="GUID-765C39DC-C244-5D0D-A084-63F8CCD8BC92"><p> <codeph>&lt;pixmap&gt;</codeph> has
+been initialized. </p> </li>
+<li id="GUID-1C249E36-D0F0-599F-8845-CBCEE4A8DC4F"><p>The <codeph>EGL_VG_ALPHA_FORMAT</codeph> attribute
+must be set to <codeph>EGL_VG_ALPHA_FORMAT_PRE</codeph> if the following conditions
+are all true: </p> <ul>
+<li id="GUID-5C0EB569-7768-5DA6-A114-0DB95380A686"><p>The pixel format of <codeph>&lt;pixmap&gt;</codeph> specifies
+premultiplied alpha—such as <codeph>EColor16MAP</codeph>. </p> </li>
+<li id="GUID-C103868C-106E-5BD3-8CD5-792548A7C30E"><p>The <codeph>EGL_RENDERABLE_TYPE</codeph> of <codeph>&lt;config&gt;</codeph> includes <codeph>EGL_OPENVG_BIT</codeph>. </p> </li>
+</ul> </li>
+</ul> <p><b>Error conditions </b> </p> <table id="GUID-9058A877-4E21-52DD-8F07-9785D46B9B4A">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Error</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>EGL_NO_SURFACE</codeph>  </p> </entry>
+<entry><p>Returned if any of the preconditions are violated. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EGL_BAD_NATIVE_PIXMAP</codeph>  </p> </entry>
+<entry><p>Error generated when <codeph>&lt;pixmap&gt;</codeph> is not initialized. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EGL_BAD_MATCH</codeph>  </p> </entry>
+<entry><p>Error generated when any of the following occur: </p> <ul>
+<li id="GUID-7669B73A-8066-5488-A9F0-C8CC151107C0"><p>The attributes of <codeph>&lt;pixmap&gt;</codeph> do
+not correspond to those of <codeph>&lt;config&gt;</codeph>. </p> </li>
+<li id="GUID-C52CFB58-C033-52B6-ADBD-935D2808DD4D"><p> <codeph>&lt;config&gt;</codeph> does
+not support rendering to pixmaps (the <codeph>EGL_SURFACE_TYPE</codeph> attribute
+does not contain the <codeph>EGL_PIXMAP_BIT</codeph>). </p> </li>
+<li id="GUID-FB3EA01C-CD38-5764-8019-FD63B3B673B4"><p>The <codeph>EGL_VG_ALPHA_FORMAT</codeph> attribute
+is not set to <codeph>EGL_VG_ALPHA_FORMAT_PRE</codeph> for the cases described
+in the preconditions section above. </p> </li>
+</ul> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-7FC7E115-F659-5EA0-9BD0-AFFA717C2C00"><title>eglChooseConfig()</title> <codeblock id="GUID-36D7DCCD-C2AA-5A33-B55C-7648E685DC6B" xml:space="preserve">EGLBoolean eglChooseConfig(
+                  EGLDisplay dpy,
+                  const EGLint *attrib_list,
+                  EGLConfig *configs,
+                  EGLint config_size,
+                  EGLint *num_config)</codeblock> <p>The <codeph>EGLNativePixmapType</codeph> value
+corresponding to the <codeph>EGL_MATCH_NATIVE_PIXMAP</codeph> attribute is <codeph>CFbsBitmap*</codeph>.
+See <xref href="GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita">Symbian-Specific
+Behavior</xref> for more information. </p>  <p>The configuration attribute <codeph>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</codeph> is
+set by default on window surfaces. This bit is not relevant to pixmap and
+pbuffer surfaces because they are single-buffered.</p> <p><b>Postconditions </b> </p> <p>The
+following apply to the <codeph>EGLNativePixmapType</codeph> value only. </p> <ul>
+<li id="GUID-37ED30DE-703C-5427-9DE5-9D3E0FBDCDC8"><p>The <codeph>EGL_SURFACE_TYPE</codeph> of
+each matching config contains <codeph>EGL_VG_ALPHA_FORMAT_PRE_BIT</codeph> if
+the following conditions are all true: </p> <ul>
+<li id="GUID-ECCF6C6C-B582-5326-B18B-8FB9FCA87309"><p>The pixel format of
+the pixmap specifies premultiplied alpha—such as <codeph>EColor16MAP</codeph>. </p> </li>
+<li id="GUID-DC7E7D5B-2E6F-5290-A419-C5BD3EFA69E4"><p>The <codeph>EGL_RENDERABLE_TYPE</codeph> of
+the config includes <codeph>EGL_OPENVG_BIT</codeph>. </p> </li>
+</ul> </li>
+</ul> <p> <i>Note</i>: The <codeph>EGL_RENDERABLE_TYPE</codeph> can be used
+as an input to <codeph>eglChooseConfig()</codeph> to further filter the set
+of configs returned. </p> </section>
+<section id="GUID-E6BE99B1-6C0D-4D0D-B956-E7D3A312D75E"><title>eglSurfaceAttrib()</title><codeblock xml:space="preserve">EGLBoolean eglSurfaceAttrib(
+                  EGLDisplay dpy,
+                  EGLSurface surface, 
+                  EGLint attribute,
+                  EGLint value);</codeblock><p>If the <codeph>attribute</codeph> is <codeph>EGL_SWAP_BEHAVIOR</codeph>,
+the value can be one of the following:.</p><ul>
+<li><p><codeph>EGL_BUFFER_DESTROYED</codeph>: Indicates that posting a surface
+with <codeph>eglSwapBuffers()</codeph> changes or destroys the back buffer
+content.</p></li>
+<li><p><codeph>EGL_BUFFER_PRESERVED</codeph>: Indicates that  posting a surface
+with <codeph>eglSwapBuffers()</codeph> preserves the back buffer content.</p></li>
+</ul> <p>The preserve buffer feature is relevant only to window surfaces.
+It is not relevant to pbuffer or pixmap surfaces because they are single-buffered.
+Therefore setting the swap behavior to preserve buffer is not allowed for
+these surface types, as shown in the following table. </p> <table id="GUID-1BB87D88-B15C-4BB5-AAC8-88094B4ADB2A">
+<title>Configuration behaviors</title>
+<tgroup cols="4"><colspec colname="col1" colwidth="1.62*"/><colspec colname="col2" colwidth="0.88*"/><colspec colname="col3" colwidth="0.74*"/><colspec colname="col4" colwidth="0.79*"/>
+<thead>
+<row>
+<entry valign="top">Configuration Mask</entry>
+<entry valign="top">Default EGL_SWAP_BEHAVIOR</entry>
+<entry valign="top">Set Destroyed Allowed?</entry>
+<entry valign="top">Set Preserved Allowed?</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><codeph>EGL_SWAP_BEHAVIOR_PRESERVED_BIT|EGL_WINDOW_BIT </codeph></entry>
+<entry>Destroyed</entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+</row>
+<row>
+<entry><codeph>EGL_WINDOW_BIT</codeph> </entry>
+<entry>Destroyed </entry>
+<entry>Yes</entry>
+<entry>Yes</entry>
+</row>
+<row>
+<entry> <codeph>EGL_PIXMAP_BIT</codeph></entry>
+<entry>Preserved</entry>
+<entry>Yes</entry>
+<entry>No</entry>
+</row>
+<row>
+<entry> <codeph>EGL_PBUFFER_BIT</codeph></entry>
+<entry>Preserved </entry>
+<entry>Yes</entry>
+<entry>No</entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Error conditions </b></p><p>This applies to attempting to set
+the <codeph>EGL_SWAP_BEHAVIOR</codeph> attribute to <codeph>EGL_BUFFER_PRESERVED</codeph>.
+If the surface configuration does not match <codeph>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</codeph>,
+this function returns <codeph>EGL_FALSE</codeph> and generates an error of <codeph>EGL_BAD_MATCH</codeph>. </p></section>
+</conbody><related-links>
+<link href="GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita"><linktext>EGL Interface
+Overview</linktext></link>
+<link href="GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita"><linktext>Symbian-Specific
+Behavior</linktext></link>
+<link href="GUID-46813F51-370B-5853-917C-6916925A347D.dita"><linktext>EGL Tutorial</linktext>
+</link>
+<link href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita"><linktext>EGL Collection
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-29272C8D-A0F6-4861-90FB-D1637D0D8CD8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-29272C8D-A0F6-4861-90FB-D1637D0D8CD8" xml:lang="en"><title>How
+Will the New Application Framework Affect my Applications?</title><shortdesc>A new application and UI framework is planned for Symbian^4 (S^4).
+This topic summarizes what you need to know about how the new framework will
+affect your AVKON applications and any clients that draw using <apiname>CWindowGc</apiname>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The new application and UI framework will provide a modern replacement
+for AVKON and <codeph>CWindowGc</codeph> drawing. However,  AVKON and <codeph>CWindowGc</codeph> drawing
+will continue to be supported, although AVKON may not exist on some devices.
+This means that AVKON applications (and clients that draw using <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>)
+will eventually need to be ported to the new framework. </p>
+<p>Assuming AVKON is present on the device, AVKON applications will continue
+to work correctly on S^4 (although performance may be affected), provided
+their <b>main view is opaque and it covers the entire screen</b>. The same
+is true for any other clients that draw using <codeph>CWindowGc</codeph>.
+These constraints apply only to the application's main view and not to dialogs
+and menus that appear over the main view. </p>
+<p>Applications that of necessity have a transparent main view and/or occupy
+only a section of the screen (for example, a magnifying glass application)
+are not guaranteed to work correctly if they are run on S^4 and later. You
+may therefore want to port these applications to the new framework at the
+earliest opportunity. </p>
+<section id="GUID-92E8CD3E-4B54-41CD-864A-0AFC996D9C05"><title>Ensuring your
+application covers the entire screen</title><p>Use <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita#GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E/GUID-A3F76911-653B-3D0F-8A2D-06063D830715"><apiname>CEikAppUi::ClientRect()</apiname></xref> to
+find out the full area of the screen that is available for drawing. You should
+never hard code any assumptions about the screen size in your code. Here is
+an example that constructs the application's main view in the <codeph>ConstructL()</codeph> of
+the <codeph>CExampleAppUi</codeph> class, which is derived from <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref>. </p><codeblock xml:space="preserve">void CExampleAppUi::ConstructL()
+    {
+    iAppView = CExampleAppView::NewL(ClientRect());
+    }
+</codeblock><p>In this example, the view is constructed using a static function
+that wraps up the two-phase construction as shown below. <codeph>CExampleAppView</codeph> inherits
+from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>. </p><codeblock xml:space="preserve">CExampleAppView* CExampleAppView::NewL(const TRect&amp; aRect)
+    {
+    CExampleAppView* self = new(ELeave) CExampleAppView();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL(aRect);
+    CleanupStack::Pop();
+    return self;
+    }
+
+// Standard initialization for a window-owning control.
+void CExampleAppView::ConstructL(const TRect&amp; aRect)
+    {
+    // Create the window owned by the view.
+    CreateWindowL();
+
+    // Set the view's size and position.
+    SetRect(aRect);
+
+    // Activate the view.
+    ActivateL();
+    }</codeblock><p>Windows are opaque by default, so provided you do not
+make the main view's window transparent, it will automatically be opaque. </p></section>
+</conbody><related-links>
+<link href="GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A.dita"><linktext>Transparent
+Windows</linktext></link>
+<link href="GUID-53E1EBAB-758B-58DF-9568-8CC682C0F74F.dita"><linktext>Screen Handling</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC" xml:lang="en"><title>Application
+and UI frameworks</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The purpose of this section is to explain how to use the features offered
+by the application and UI frameworks when designing and implementing your
+application. </p>
+<p>The table below illustrates different areas used in the Hello World Basic
+sample application included in the S60 5th Edition SDK and provides information
+on how to implement the different areas in your application using the application
+and UI frameworks.</p>
+<p><draft-comment time="2008-07-02T13:50" translate="no">When the library is published, the
+table below will contain Flash animations from the helloworldbasic sample
+application illustrating the different areas of using the application and
+UI FWs, such as the application being launched.</draft-comment></p>
+<table id="GUID-FF83D005-B63E-4A49-B54F-286A0AA141D2">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry><p>Area</p></entry>
+<entry><p>Example from Hello World Basic sample application</p></entry>
+<entry><p>Implementation information</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Launching the application</p></entry>
+<entry><fig id="GUID-69BC4105-83B7-402C-AF0A-2BA5F196E84B">
+<object data="GUID-B5BB6A00-7CD8-4322-ACD4-B9F0E1EEA6B2" height="320" width="184">
+</object>
+</fig></entry>
+<entry><ul>
+<li><p><xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">Framework requirements
+for GUI applications</xref></p></li>
+<li><p><xref href="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita">Implementing
+application framework requirements</xref></p></li>
+<li><p><xref href="GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita">Registering
+your application</xref></p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Handling left softkey events and launching the <uicontrol>Options</uicontrol> menu</p></entry>
+<entry><fig id="GUID-30495722-DF49-45A3-ADBD-799517AC4A11">
+<object data="GUID-183D31B7-992E-4537-9831-C859EB61D10F" height="320" width="184">
+</object>
+</fig></entry>
+<entry><ul>
+<li><p><xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">Event handling</xref></p></li>
+<li><p><xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">Handling commands</xref></p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Handling key and pointer events </p></entry>
+<entry><fig id="GUID-F4D00ADC-F096-4038-B107-9BA5B9A0D0A4">
+<object data="GUID-EAC5F9E8-9B7E-4A56-B6C0-E426637BBC3B" height="320" width="184">
+</object>
+</fig></entry>
+<entry><ul>
+<li><p><xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">Handling window
+server events</xref></p></li>
+<li><p><xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">Handling key
+events</xref></p></li>
+<li><p><xref href="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita">Handling pointer
+events</xref></p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Rotation</p></entry>
+<entry><fig id="GUID-A40E67E5-6CE4-4BB2-AC82-CAE93159849A">
+<object data="GUID-377C3A77-6C89-4C44-A33A-852CFB7ADE58" height="384" width="356">
+</object>
+</fig></entry>
+<entry><p><xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">Handling
+layout change events</xref></p></entry>
+</row>
+<row>
+<entry><p>Internationalization</p></entry>
+<entry><fig id="GUID-749D0090-01D1-4032-BE03-1EFBC3F090ED">
+<image href="GUID-42CB471F-B882-45D4-A1D3-20D3FF0C336E_d0e38135_href.png" scale="33" placement="inline"/>
+</fig><fig id="GUID-549EF163-36CF-4F2D-8B42-1ACB0024BE3B">
+<image href="GUID-3B945B72-EC12-4CC0-B7DA-1FC517A9B14D_d0e38139_href.png" scale="33" placement="inline"/>
+</fig></entry>
+<entry><p><xref href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita">Internationalization
+and localization</xref></p></entry>
+</row>
+<row>
+<entry><p>Exiting the application</p></entry>
+<entry><fig id="GUID-DF5ED5BD-96FE-47DE-A3B5-5587AFF05E01">
+<object data="GUID-CE60D453-624B-4CCB-847D-E1E425E896E2" height="320" width="184">
+</object>
+</fig></entry>
+<entry><p><xref href="GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita">Handling
+EEikCmdExit</xref></p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-294E84BB-65D0-5275-848E-1960B201A371.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-294E84BB-65D0-5275-848E-1960B201A371"><title>Creating and Drawing to an Off-Screen Bitmap</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an example that shows the creation of a bitmap, the creation of an off-screen graphics device and graphics context for it, and the use of that graphics context to draw to the bitmap. Once a graphics context has been established for the bitmap, any of the GDI drawing functions can be used on the bitmap, as if it were the more common graphics context—the screen. </p> <codeblock id="GUID-E7A1651B-4F87-5156-9CDE-F8205323DB8E" xml:space="preserve">// Create a bitmap to be used off-screen.
+CFbsBitmap* offScreenBitmap = new (ELeave) CFbsBitmap();
+CleanupStack::PushL(offScreenBitmap);
+User::LeaveIfError(offScreenBitmap-&gt;Create(TSize(100,100),EColor256));
+     
+// Create an off-screen device and context.
+CGraphicsContext* bitmapContext=NULL;
+CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(offScreenBitmap);
+CleanupStack::PushL(bitmapDevice);
+User::LeaveIfError(bitmapDevice-&gt;CreateContext(bitmapContext));
+CleanupStack::PushL(bitmapContext);
+     
+// Draw something on the bitmap.
+TRect rect(0,0,100,100);
+bitmapContext-&gt;SetBrushColor(KRgbRed);
+bitmapContext-&gt;SetBrushStyle(CGraphicsContext::ESolidBrush);
+bitmapContext-&gt;DrawRect(rect); // a filled red rectangle
+     
+// Now do what you want with it, such as blitting to the screen.
+gc.BitBlt(TPoint(20,20),offScreenBitmap);
+    
+// Cleanup.
+CleanupStack::PopAndDestroy(3);
+...</codeblock> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F" xml:lang="en"><title>How
+to Set when Write Calls Return: Tutorial</title><shortdesc>This tutorial follows on from the tutorial on How to transfer data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>This tutorial follows on from the <xref href="GUID-934AEB9C-77EA-5F50-BB84-2446DDD432C8.dita">How
+to Transfer Data Tutorial</xref>. The <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-27B1F841-8478-33E0-A168-11DC468183C0"><apiname>RComm::Write()</apiname></xref> function
+can return when the data has been queued in the device driver buffer, or when
+the data has been sent by the device driver. 
+</p><p>The <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-27B1F841-8478-33E0-A168-11DC468183C0"><apiname>RComm::Write()</apiname></xref> API can return in one of two
+ways: </p> <ol id="GUID-BC7A5915-ABD9-529C-8443-4F6DB928DE88">
+<li id="GUID-A4A9C4A2-CB14-5CDB-A6F7-51A0A75E1656"><p>As soon as the data
+has been queued with the device driver. </p> <p>This allows the application
+to run while the data is sent so that the application can create the next
+block of data to send. </p> </li>
+<li id="GUID-386A395E-7C39-598C-9D86-E894816DF838"><p>After the device driver
+has sent the data. </p> <p>This is used when the application must wait for
+a response from the remote device after the data is sent. </p> </li>
+</ol> <p>The default value is dependent on the Serial Device Driver. </p> </context>
+<steps id="GUID-AC2224DE-0F1A-5B0F-87AC-6873945BD095">
+<step id="GUID-1BEEB97E-E364-56FB-8EFA-F21CA5FC7DB7"><cmd/>
+<info>Create an object of type <xref href="GUID-BF099B27-4E8A-3765-A6A8-DB88DB4F4F2E.dita"><apiname>TCommConfig</apiname></xref>. </info>
+</step>
+<step id="GUID-EFD51188-3862-5534-8DF2-D5D2BBB7D239"><cmd>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with
+the <codeph>aConfig</codeph> parameter set to the <codeph>TCommConfig</codeph> object. </cmd>
+<info>The <codeph>TCommConfig</codeph> object now contains the port settings. </info>
+</step>
+<step id="GUID-2C12D5F9-619C-5146-AF31-68C351F1540B"><cmd/>
+<info>To set the RComm::Write() API to return early, set the <codeph>KConfigWriteBufferedComplete</codeph> flag
+in the <codeph>iHandshake</codeph> field in the <codeph>TCommconfig</codeph> object. </info>
+<info>To set the RComm::Write() API to return after the data is sent, clear
+the <codeph>KConfigWriteBufferedComplete</codeph> flag in the <codeph>iHandshake</codeph> field
+in the <codeph>TCommconfig</codeph> object. </info>
+</step>
+<step id="GUID-11B0A6EC-F1C3-5B3B-8615-0362EB52B568"><cmd>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-732174E9-930F-37D4-AD7C-1434E5731C50"><apiname>RComm::SetConfig()</apiname></xref> with
+the <codeph>aConfig</codeph> parameter set to the <codeph>TCommConfig</codeph> object. </cmd>
+</step>
+</steps>
+<example><title>Example</title> <codeblock id="GUID-7F596FB2-0F54-5F76-BA6C-F9B664BE196E" xml:space="preserve">TCommConfig portSettings;
+commPort.Config(portSettings);
+portSettings().iHandshake |= KConfigWriteBufferedComplete;     // set early complete
+User::LeaveIfError (commPort.SetConfig(portSettings));
+</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-295341D9-A5FA-4F25-B681-C5B3264165AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-295341D9-A5FA-4F25-B681-C5B3264165AF" xml:lang="en"><title>Text fields</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Stylus usage in text fields is supported. Tapping on a text field moves the text cursor to the tapped point. Blocks of text can be selected by moving the stylus while holding it down against the screen (horizontal dragging). Horizontal dragging can be continued with vertical movement to move content upwards and downwards.</p>
+<section><title>Using text editing in C++ applications</title><p>The API to use for providing text editing functionality is the Editors API. For implementation information, see Using the Editors API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72-master.png has changed
Binary file Symbian3/SDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e317091_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2992031D-E176-5BC8-8B89-A5DC2A4B35AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2992031D-E176-5BC8-8B89-A5DC2A4B35AA"><title>List of Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following classes are available as a part of the SDP Codec API: </p> <p> <xref href="GUID-E584DE0D-4B36-3538-9D29-E4838608A89B.dita"><apiname>CSdpAttributeField</apiname></xref>, <xref href="GUID-FD1DC353-2507-3504-91E2-141D08353120.dita"><apiname>CSdpBandwidthField</apiname></xref>, <xref href="GUID-C94A4F3A-3F76-3616-AA3B-EDCA11385389.dita"><apiname>CSdpCodecStringPool</apiname></xref>, <xref href="GUID-539653CE-E921-3C6D-B1CA-0694ADB0DA65.dita"><apiname>CSdpConnectionField</apiname></xref>, <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref>, <xref href="GUID-C5E3C505-8FB1-32E8-8B0A-E82DF9CE7E4A.dita"><apiname>CSdpFmtAttributeField</apiname></xref>, <xref href="GUID-A9C3DE19-8E2A-3D56-BB22-3A6376522A8A.dita"><apiname>CSdpKeyField</apiname></xref>, <xref href="GUID-EF9629A8-F422-3974-BA38-13B801083FBE.dita"><apiname>CSdpMediaField</apiname></xref>, <xref href="GUID-2E3BFDFB-5D83-3595-B0C3-C7004A5A1D74.dita"><apiname>CSdpOriginField</apiname></xref>, <xref href="GUID-F33F3F19-40E6-3E28-A4D4-46BF584E0E86.dita"><apiname>CSdpRepeatField</apiname></xref>, <xref href="GUID-8405D380-9FF6-39DA-8FC3-90BD11ACC46D.dita"><apiname>CSdpTimeField</apiname></xref>, <xref href="GUID-EAE185AD-A9CF-3E31-946D-A2CBEAC4C58F.dita"><apiname>TSdpRtpmapValue</apiname></xref>, <xref href="GUID-B6D6CC43-CEF5-35F7-9055-32FCA69593F2.dita"><apiname>TSdpTypedTime</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2999C8D1-5C95-5474-BB02-11182CC3A407.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2999C8D1-5C95-5474-BB02-11182CC3A407"><title>Files and clipboard</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The text content model is fully integrated with the stream store. Editable, plain, global and rich text may be stored and restored. Formatting and content use different streams, which makes it relatively easy for a plain text or global text object to restore the (relevant) data from a rich text object.</p> <p>Pictures in rich text are stored using the picture’s own store and restore protocol, as required by concrete <xref href="GUID-829D57CD-9659-347B-AAE9-5F0A0ECD555C.dita"><apiname>CPicture</apiname></xref> implementations.</p> <p>The stream store is typically a file, but by allowing text to be restored into an already-existing document, support for two additional requirements is provided:</p> <ul><li id="GUID-F3840EAB-1923-5964-946D-24E2F93B24BD"><p>the clipboard: text may be copied to the clipboard (and then optionally deleted, to support cut), and pasted in from it</p> </li> <li id="GUID-ECD9124F-5050-5569-9C30-D1BC6D48A1A5"><p>undo buffers: a memory store may be used to hold inserted or deleted text, to achieve the effect of undo/redo</p> </li> </ul> <section><title>Storing and restoring</title> <p>Storing and restoring operations are optimised for efficiency for editable text. For instance, in rich text, <codeph>StoreL()</codeph> and <codeph>RestoreL()</codeph> may be used to store and restore the text content, its formatting, styles, fields and pictures in a single operation. Certain applications may want to store only certain parts of the text model; to save space, for example. Utilities are provided to store and restore certain components independently of each other.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-29AE56A8-DA08-5FB3-89F1-26B4308336BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-29AE56A8-DA08-5FB3-89F1-26B4308336BC"><title>Modifying a Clock Time</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the <xref href="GUID-7FA65BF7-2F4F-3AA9-A52F-2CF655053AB7.dita"><apiname>clock_settime()</apiname></xref> function to modify the clock time. </p> <p> <b>Important:</b> The clock time can be modified only by a process having the <b>WriteDeviceData</b> capability. </p> <p>The following example code demonstrates how the current clock time can be moved forward by a minute. </p> <p>The following example code performs the following tasks: </p> <ol id="GUID-B0FCAD80-A053-54B7-8639-36CE5F5F433E"><li id="GUID-3E194156-6B50-52A5-B778-B1EF64D79EE9"><p>Gets the clock id of the system clock and stores it in <codeph>ClockId</codeph>. </p> </li> <li id="GUID-4E4A0E00-C69A-52DE-8AE8-D749E14A77BF"><p>Gets the current time associated with <codeph>ClockId</codeph> using <xref href="GUID-2E94C94E-6D65-3B18-959D-60E6224E6C40.dita"><apiname>clock_gettime()</apiname></xref> and stores it in <codeph>CurrTime</codeph>. </p> </li> <li id="GUID-D48B1B9E-E14A-57F8-AF87-FA1C20BDF163"><p>Increments current time by a minute. </p> </li> <li id="GUID-FBB32410-DB7F-5810-9990-8E2E2527F733"><p>Sets the current time as <codeph>CurrTime</codeph> using <xref href="GUID-7FA65BF7-2F4F-3AA9-A52F-2CF655053AB7.dita"><apiname>clock_settime()</apiname></xref>. </p> </li> </ol> <codeblock id="GUID-3C3B7BFA-245C-54E1-A9B3-ACC1D35F3384" xml:space="preserve">#include &lt;time.h&gt;
+#include &lt;stdio.h&gt;
+#include&lt;errno.h&gt;
+#include&lt;string.h&gt;
+int main()
+    {
+    int Ret;
+    clockid_t ClockId; //Stores the clock id of the system clock
+    struct timespec CurrTime; //Stores the current time
+    memset(&amp;CurrTime, 0, sizeof (struct timespec)); 
+    
+    //Will return the supported clock id only for the pid_t of 0.
+    Ret = clock_getcpuclockid(0,&amp;ClockId);
+    if (Ret == 0)
+        {
+        //get the current time of ClockId.
+        if(clock_gettime(ClockId, &amp;CurrTime) == 0)
+            {
+            CurrTime.tv_sec+=60; //forward the time by one minute
+            //set the new time for ClockId.
+            Ret = clock_settime(ClockId, &amp;CurrTime);
+            if (Ret != 0)
+                {
+                printf("clock_settime () failed with %d\n", errno);
+                }
+               else
+                {
+                printf("clock_settime() passed\n");
+                }     
+            }
+        else
+            {
+            printf("clock_gettime() failed with %d\n", errno);
+            }
+        }
+    else
+        {
+        printf("clock_getcpuclockid () failed with %d\n", errno);
+        }
+    return Ret;
+    }</codeblock> <p>The output of the above program is: </p> <codeblock id="GUID-DEAFE1C0-9C12-5F02-8EB9-BF55438C3F71" xml:space="preserve">clock_settime() passed</codeblock> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e195217_href.png has changed
Binary file Symbian3/SDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687-master.png has changed
Binary file Symbian3/SDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687_d0e189052_href.png has changed
Binary file Symbian3/SDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e279548_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e355049_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C"><title>SQL Expressions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document explains how the optimizer changes expressions. </p> <section><title>Introduction</title> <p>The way an expression is written really does matter. When written well expressions not only clearly state what is intended but they can also improve the performance of the SQL engine significantly. This document provides several tips designed to help you improve your SQL expressions. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-5E95EACE-CC82-55CD-BF88-C8C92A3222E8"><title>Expression Rewriting Optimizations</title> <p>In an earlier section we described how the optimizer would only make use of an index if one of the columns being indexed occurred on one side of certain equality and comparison operators (“<b>=</b> ”, “<b>IN</b> ”, “<b>&lt;</b> ”, “<b>&gt;</b> ”, “<b>&lt;=</b> ”, “<b>&gt;=</b> ”, and sometimes “<b>IS NULL</b> ”). </p> <p>While this is technically true, prior to the stage of the analysis where the optimizer is looking for these kinds of expressions, it may have first modified the <codeph>WHERE</codeph> clause (or the <codeph>ON</codeph> or <codeph>HAVING</codeph> clause) from what was originally entered by the programmer. </p> <p>The next few paragraphs will describe some of these rewriting rules. </p> <p>The query optimizer always rewrites the <codeph>BETWEEN</codeph> operator as a pair of inequalities. So, for example, if the input SQL is this: </p> <codeblock id="GUID-B864D593-8201-5A83-B8CF-55A4A1B8F42F" xml:space="preserve">
+SELECT * FROM demo324 WHERE x BETWEEN 7 AND 23;
+</codeblock> <p>What the query optimizer ultimately sees is this: </p> <codeblock id="GUID-CC868858-4B31-5626-A85D-78816D033E69" xml:space="preserve">
+SELECT * FROM demo324 WHERE x&gt;=7 AND x&lt;=23;
+</codeblock> <p>In this revised form, the optimizer might be able to use an index on the “x” column to speed the operation of the query. </p> <p>Another rewriting rule is that a disjunction of two or more equality tests against the same column is changed into a single IN operator. So if you write: </p> <codeblock id="GUID-AC72BB25-5BC4-520A-A93E-F8BC9D57A437" xml:space="preserve">
+SELECT * FROM demo324 WHERE x=7 OR x=23 OR x=47;
+</codeblock> <p>The WHERE clause will be rewritten into the following form: </p> <codeblock id="GUID-03269149-6080-5039-8817-A2A2A58195D2" xml:space="preserve">
+SELECT * FROM demo324 WHERE x IN (7,23,47);
+</codeblock> <p>The original format was not a candidate for use of indexes. But after the disjunction is converted into a single IN operator the usual index processing logic applies and the query can be made much faster. </p> <p>In order for this rewriting rule to be applied, however, all terms of the disjunction must be equality comparisons against the same column. It will not work to have a disjunction involving two or more columns or involving expressions. So, for instance, the following statements will not be optimized: </p> <codeblock id="GUID-2D2F87A3-BD6F-5849-819F-BA0226E4E215" xml:space="preserve">
+SELECT * FROM demo324 WHERE x=7 OR y=23;
+SELECT * FROM demo324 WHERE x=7 OR +x=23;
+</codeblock> </section> <section id="GUID-4A75E712-CCF5-568A-894E-2684BA7A9D79"><title> Put Constant Subexpressions inside Subqueries</title> <p>The query parser and compiler in SQLite are designed to be small, fast, and lean. A consequence of this design is that SQLite does not do much in the way of constant folding or common subexpression elimination. SQLite evaluates SQL expressions mostly as written. </p> <p>One way to work around the lack of constant folding in SQLite is to enclose constant subexpressions within a subquery. SQLite does optimize constant subqueries – it evaluates them once, remembers the result, and then reuses that result repeatedly. </p> <p>An example will help clarify how this works. Suppose you have a table that contains a timestamp recorded as the fractional julian day number: </p> <codeblock id="GUID-0A40E590-A590-5AE2-9BC3-9EE627F92207" xml:space="preserve">
+CREATE TABLE demo325(tm DATE, data BLOB);
+</codeblock> <p>A query against this table to find all entries after November 8, 2006 might look like the following: </p> <codeblock id="GUID-89C0CA35-B2FC-5217-9E79-52C6C92CEFF8" xml:space="preserve">
+SELECT data FROM demo325 WHERE tm&gt;julianday('2006-11-08');
+</codeblock> <p>This query works fine. The problem is that the “julianday('2006-11-08')” function gets called repeatedly, once for each row tested, even though the function returns the same value each time. It is much more efficient to call the function one time only and reuse the result over and over. You can accomplish this by moving the function call inside a subquery as follows: </p> <codeblock id="GUID-326760B0-E190-572D-ADD6-03786B6CB4FD" xml:space="preserve">
+SELECT data FROM demo325 WHERE tm&gt;(SELECT julianday('2006-11-08'));
+</codeblock> <p>There are, of course, some cases where multiple evaluations of a function in the WHERE clause is desirable. For example, suppose you want to return roughly one out of every eight records, chosen at random. A suitable query would be: </p> <codeblock id="GUID-1E734B78-91B6-542E-9EDC-52A378944D48" xml:space="preserve">
+SELECT data FROM demo325 WHERE (random()&amp;7)==0;
+</codeblock> <p>In this case, moving the function evaluation into a subquery would not work as desired: </p> <codeblock id="GUID-34B1C0C6-09E7-5994-9DD9-ABB4D5327BA7" xml:space="preserve">
+SELECT data FROM demo325 WHERE (SELECT random()&amp;7)==0;
+</codeblock> <p>In this last example, the result would be either all of the records in the table (probability 12.5%) or none of them (probability 87.5%). The difference here, of course, is that the <codeph>random()</codeph> function is not constant whereas the <codeph>julianday()</codeph> function is. </p> <p>The SQL compiler does not have any way of knowing this so it always assumes the worst: that every function works like <codeph>random()</codeph> and can potentially return a different answer even with the same inputs. Use a subquery if you truly want to make a subexpression constant. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link><linktext/></link><link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2A39CCBD-CADB-56B7-872A-1EC617AC7D93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2A39CCBD-CADB-56B7-872A-1EC617AC7D93"><title>How to Import Contact and Calendar Data</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The versit API can be used to import Contact and/or Calendar data from a file or stream. To do so, appropriate parser objects have to be created. That is, an object of <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita"><apiname>CParserVCard</apiname></xref> class to import vCards (represents contact data) and object of <xref href="GUID-6BEFF6A7-FBD8-306D-98A4-8711E788C702.dita"><apiname>CParserVCal</apiname></xref> class to import vCalendars (represents calendar data) need to be created. </p> <codeblock id="GUID-2CD26D6C-98A3-5741-BDE3-D55D22489355" xml:space="preserve">CParserVCard* vCardParser = CParserVCard::NewL(); //creates a pointer to CParserVCard object
+//OR
+CparserVCal* vCalParser = CParserVCal::NewL(); //creates a pointer to CParserVCal object</codeblock> <p>Once the parser objects are created, specify the stream from which the vCard or vCalendar are to be read. For example, let us assume that you have to import vCard or vCalendar from a file. In that case, create an object of <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> class to read the file, and an object of <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> class to create a file server session. You also have to create an object of <xref href="GUID-90A3AE1D-DCB2-3E98-8BE9-C48C15964E7D.dita"><apiname>RFileReadStream</apiname></xref> class, as the parser class is implemented to read data from a stream. </p> <codeblock id="GUID-7D51C9D8-6E64-5065-8458-7D92D650245C" xml:space="preserve">RFs iFsSession; // To create file server session.
+RFile file; // To access the vCard or vCal file from the file system.
+
+_LIT(KVCardFileJIS,"c:\\charsetJIS.vcf "); // String literal consisting the path of the file to be read.
+
+TInt err=file.Open(iFsSession, KVCardFileJIS, EFileRead); // Open the file to be read.
+
+// Checking for errors if any, before opening the file stream.
+if(err == KErrNone)
+  {
+  RFileReadStream stream(file); // Opens the file stream for the RFile object.
+  
+  vCardParser.InternalizeL(stream) // To import a vCard.
+  // OR
+  vCalParser.InternalizeL(stream) // To import a vCal.
+
+  stream.close(); // Close the file stream once the import is done.
+  }
+</codeblock> <p> <i>Note that you should include proper error checks in the above given code before using it for production.</i>  </p> <p>This code imports vCard and vCalendar data from the file to <codeph>CParserVCard</codeph> and <codeph>CParserVCal</codeph> objects respectively. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC"><title>Audio Processing Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to use the Advanced Audio Adaptation Framework for audio processing. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to play and record audio using the Advanced Audio Adaptation Framework (A3F). </p> <p><b>Required Background</b> </p> <p>To understand this document, you need to be familiar with A3F. For more information, see: </p> <ul><li id="GUID-DFEF3900-032F-5DF6-AB8F-F5C697F41A5E"><p><xref href="GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita">Advanced Audio Adaptation Framework Overview</xref> </p> </li> <li id="GUID-76EA5B9D-DF81-5191-A78D-9419E64F4E67"><p><xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita"> Advanced Audio Adaptation Framework Technology Guide </xref>  </p> </li> </ul> <p><b>Introduction</b> </p> <p>To start using A3F for audio processing, you must: </p> <ol id="GUID-B9F4198E-7322-5AB2-B361-5DC83D6B2D10"><li id="GUID-25A4D909-A969-5879-897A-883639DD3DBB"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-5E3EBCF5-7906-5573-BB8F-39444DAF54DE"> Construct a new Audio Context Factory</xref>. </p> </li> <li id="GUID-EA23F2DA-9D37-5958-9EDC-409FB02A83A4"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-9AB74084-14A1-5470-BB1E-799BD4765DF1"> Initialize an audio stream</xref>. </p> </li> </ol> <p id="GUID-5E3EBCF5-7906-5573-BB8F-39444DAF54DE"><b>Construction</b> </p> <p>Each client that wants to use audio resources must have an instance of <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita"><apiname>CAudioContextFactory</apiname></xref> associated with it. To construct a new instance, use the <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita#GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73/GUID-D8C563D4-34AC-3460-BE6F-A19D3B1D5D23"><apiname>CAudioContextFactory::NewL()</apiname></xref> function: </p> <codeblock id="GUID-C69564C1-54CD-5797-94BD-06DF9F4BAE8F" xml:space="preserve">static IMPORT_C CAudioContextFactory* NewL();</codeblock> <p>Once created, you can use <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita"><apiname>CAudioContextFactory</apiname></xref> to create a reference to an <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioContext</apiname></xref> pointer. To create the reference, call <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita#GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73/GUID-59496D3F-A541-35AA-BADB-28E487503955"><apiname>CAudioContextFactory::CreateAudioContext()</apiname></xref>: </p> <codeblock id="GUID-215B3B74-5339-5B82-9431-6D3DE84C2C25" xml:space="preserve">IMPORT_C TInt CreateAudioContext(MAudioContext*&amp; aContext);</codeblock> <p>To observe the commit cycle, you must register an audio context observer using the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-AE870243-CC91-3259-9525-8BB6A5BECEDA"><apiname>MAudioContext::RegisterAudioContextObserver()</apiname></xref> function: </p> <codeblock id="GUID-5FC122B3-769D-5801-9160-8D9B6E5C0B6E" xml:space="preserve">virtual Tint RegisterAudioContextObserver(MAudioContextObserver&amp; aObserver);</codeblock> <p>For more information about the commit cycle, see <xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita#GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2/GUID-C13977B1-D855-5D46-913C-15059421C225">The Commit Cycle</xref> in the <xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita">Advanced Audio Adaptation Framework Technology Guide</xref>. </p> <p>You use the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioContext</apiname></xref> class to create references to all of the audio components you require. To create an <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>MAudioStream</apiname></xref> reference, call the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-E05FA869-2B49-319C-9172-2A7F40338F92"><apiname>MAudioContext::CreateAudioStream()</apiname></xref> function: </p> <codeblock id="GUID-CFEEAD67-FF15-5C5E-A8CD-E8D55783E50E" xml:space="preserve">virtual Tint CreateAudioStream(MAudioStream*&amp; aAudioStream);</codeblock> <p>You can create other audio components by calling the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-989C9D1A-C208-3515-BD71-E578365B5996"><apiname>MAudioContext::CreateAudioProcessingUnit()</apiname></xref> function: </p> <codeblock id="GUID-B3FEA557-C59B-516E-998D-7C604173FB0A" xml:space="preserve">virtual TInt CreateAudioProcessingUnit(TUid aTypeId, MAudioProcessingUnit*&amp; aProcessingUnit);</codeblock> <p>The supported audio processing unit TypeIDs are defined in <filepath>audioprocessingunittypeuids.h</filepath>. The supported TypeIDs are as follows: </p> <ul><li id="GUID-FF1ED2C4-97CC-50E0-9180-A118C35DD45D"><p> <xref href="GUID-ED0C5B7A-3EBA-3D1D-BA9C-BBB9BB7A2BC1.dita"><apiname>KUidAudioStream</apiname></xref>  </p> </li> <li id="GUID-8E72BEF8-9935-50A6-9969-AA2E52DD4BD6"><p> <xref href="GUID-D8C317BF-A107-3941-9322-14BA06CD9D2E.dita"><apiname>KUidMmfBufferSource</apiname></xref>  </p> </li> <li id="GUID-BE3C9DEB-4F89-5466-8EC7-06F7FA5DABF1"><p> <xref href="GUID-0C9C7FDA-B9AC-3B0A-853B-BA2AD1836C74.dita"><apiname>KUidAudioDeviceSource</apiname></xref>  </p> </li> <li id="GUID-00DA5671-E7B9-5B34-ACF3-6527FFCAF667"><p> <xref href="GUID-430A9FC1-E17A-32C9-8F3D-772A8B1F678F.dita"><apiname>KUidAudioCodec</apiname></xref>  </p> </li> <li id="GUID-FD67D84F-A9E2-57AA-A89B-3AC4B2DB6E5B"><p> <xref href="GUID-F53B4801-B222-3064-89D8-8C14804585B3.dita"><apiname>KUidAudioDecoder</apiname></xref>  </p> </li> <li id="GUID-1ED7CFB2-769A-5474-9A3C-56D31281D438"><p> <xref href="GUID-9160FFFF-4864-35C7-8876-EF3DFF7F4D1C.dita"><apiname>KUidAudioEncoder</apiname></xref>  </p> </li> <li id="GUID-60C2AE00-CF45-541C-BEDD-380FEAB21C70"><p> <xref href="GUID-61D5783B-31F8-3931-9F59-4778033FA28F.dita"><apiname>KUidMmfBufferSink</apiname></xref>  </p> </li> <li id="GUID-2121172B-637A-55F8-8AC5-49459D75C671"><p> <xref href="GUID-7F26E1FD-5094-398C-9E4B-55FBECA8D555.dita"><apiname>KUidAudioDeviceSink</apiname></xref>  </p> </li> <li id="GUID-DF916501-3577-5B6A-A1D3-60B2848C9D40"><p> <xref href="GUID-D4AD30D5-E290-3866-9BEC-37C5F96D28BF.dita"><apiname>KUidAudioGainControl</apiname></xref>  </p> </li> </ul> <p>Before making changes to a stream and committing them, you must set the Process ID that identifies the client. Note that you must do this before making any calls to <codeph>Commit()</codeph>. To set the client information, call the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-AC784D04-E300-3295-9FA0-7D4E3F7BC768"><apiname>MAudioContext::SetClientSettings()</apiname></xref> function: </p> <codeblock id="GUID-2EA5B1A7-3B35-5DEB-BB74-95F4F0FF2E7D" xml:space="preserve">virtual TInt SetClientSettings(const TClientContextSettings&amp; aSettings);</codeblock> <p>Depending on the codec type, you set either the data supplier to be informed about <xref href="GUID-11595177-B5B0-3EEC-8064-0D79F4BF3D2C.dita#GUID-11595177-B5B0-3EEC-8064-0D79F4BF3D2C/GUID-D8819B8E-8EFA-36DA-A6EA-6D534225BC7F"><apiname>MMMFDataSupplier::BufferToBeFilled</apiname></xref> notifications, or the data consumer to be informed about <xref href="GUID-BC675A52-D3B5-3F97-B986-8643A8FEFE59.dita#GUID-BC675A52-D3B5-3F97-B986-8643A8FEFE59/GUID-171DCE0F-2999-3151-8B7F-010C4E1F97AB"><apiname>MMMFAudioDataConsumer::BufferToBeEmptied</apiname></xref> notifications. You must do this before you add the data source or data sink to the audio stream. For a buffer source, using codec type <xref href="GUID-F53B4801-B222-3064-89D8-8C14804585B3.dita"><apiname>KUidAudioDecoder</apiname></xref>, you can set the data supplier by obtaining the <xref href="GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803.dita"><apiname>MMMFBufferSource</apiname></xref> extension interface for the audio source. Once you have the extension interface, use the <xref href="GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803.dita#GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803/GUID-79FB5506-C63C-3672-A25D-21F748237326"><apiname>MMMFBufferSource::SetDataSupplier()</apiname></xref> function for registration: </p> <codeblock id="GUID-1221AC2C-BF14-5405-B9AA-BC9D4D336296" xml:space="preserve">virtual Tint SetDataSupplier(MMMFAudioDataSupplier&amp; aSupplier);</codeblock> <p>For a buffer sink, using codec type <xref href="GUID-9160FFFF-4864-35C7-8876-EF3DFF7F4D1C.dita"><apiname>KUidAudioEncoder</apiname></xref>, you can set the data consumer by obtaining the <xref href="GUID-72D6CC6A-D119-3A88-BADD-106B1D1EE1AA.dita"><apiname>MMMFBufferSink</apiname></xref> extension interface for the audio sink. Once you have the extension interface, use the <xref href="GUID-72D6CC6A-D119-3A88-BADD-106B1D1EE1AA.dita#GUID-72D6CC6A-D119-3A88-BADD-106B1D1EE1AA/GUID-29D1297E-3B8E-39D9-B15B-6019619CCB82"><apiname>MMMFBufferSink::SetDataConsumer()</apiname></xref> function for registration: </p> <codeblock id="GUID-11FD86AE-F27E-5DE9-9B67-9F267EEA7EE2" xml:space="preserve">virtual Tint SetDataConsumer(MMMFAudioDataConsumer&amp; aConsumer);</codeblock> <p>After you have created your audio processing units, you must then add them to an audio stream in order to control them. The following Audio Stream API functions are available for adding audio processing units: </p> <ul><li id="GUID-80F508D6-1BB9-5321-B769-70A35295785E"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-7EEDFC7D-338B-320E-9F5D-86A87ED9C75E"><apiname>MAudioStream::AddSource()</apiname></xref>  </p> <codeblock id="GUID-2EB5A95F-4B35-577C-AE30-5C1C260FBBB5" xml:space="preserve">virtual TInt AddSource(MAudioProcessingUnit* aSource);</codeblock> </li> <li id="GUID-46614A7E-0DC3-5531-8C73-7553A1342034"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-643AD421-6C4B-3B72-A59B-E54CA85B43B3"><apiname>MAudioStream::AddSink()</apiname></xref>  </p> <codeblock id="GUID-B038C60A-A0F9-50B1-843C-275D7858D87C" xml:space="preserve">virtual TInt AddSink(MAudioProcessingUnit* aSink);</codeblock> </li> <li id="GUID-394C930A-5523-5B53-82EA-F3628847D352"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-FF7925E4-4E7D-3996-A1EB-64B8C0F5AE81"><apiname>MAudioStream::AddAudioCodec()</apiname></xref>  </p> <codeblock id="GUID-5C019254-CC30-55E4-835C-3E28849BE2D3" xml:space="preserve">virtual TInt AddAudioCodec(MAudioProcessingUnit* aCodec);</codeblock> </li> <li id="GUID-9BD8DE4B-2303-5F4A-AB26-C7D90D525A3C"><p> <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-34CE5337-61A9-35B7-BCB4-5BB6B2BD6E5B"><apiname>MAudioStream::AddGainControl()</apiname></xref>  </p> <codeblock id="GUID-0B9F11B5-C98B-5706-8677-54D28A0C34C8" xml:space="preserve">virtual TInt AddGainControl(MAudioProcessingUnit* aGainControl);</codeblock> </li> </ul> <p>Before transferring the audio stream to the <codeph>Initialized</codeph> state, you must define the audio format that the codec should use. This requires Audio Processing Unit API functions to fetch the codec extension interface. The TypeID to fetch this interface is <xref href="GUID-430A9FC1-E17A-32C9-8F3D-772A8B1F678F.dita"><apiname>KUidAudioCodec</apiname></xref> and the function for this is <codeph>TAny*
+                Interface(TUid aType);</codeph>. </p> <codeblock id="GUID-09EEE69E-56CD-59CA-8354-0F1592786643" xml:space="preserve">virtual TAny* Interface(TUid aType);</codeblock> <p>You must cast the returned interface to the corresponding extension interface, that is, <xref href="GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8.dita"><apiname>MAudioCodec</apiname></xref>. The <xref href="GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8.dita"><apiname>MAudioCodec</apiname></xref> extension interface allows codec-specific functions like <xref href="GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8.dita#GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8/GUID-B466E6D5-DC68-3E4A-810A-5000954DF767"><apiname>MAudioCodec::SetFormat()</apiname></xref> to be called: </p> <codeblock id="GUID-17DECCDC-0424-5178-9AC8-223DA9A37FFF" xml:space="preserve">virtual TInt SetFormat(TUid aFormat);</codeblock> <p>The audio format UIDs are defined in <filepath>audioformatuids.h</filepath>. </p> <p id="GUID-9AB74084-14A1-5470-BB1E-799BD4765DF1"><b>Initialization</b> </p> <p>When you have finished configuring the required settings for your audio components, you can request that the audio stream be transitioned to the <codeph>Initialized</codeph> state. You use the Audio Stream API <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-1DFCCA16-7AD0-3AAF-87B8-96F0546DF488"><apiname>MAudioStream::Initialize()</apiname></xref> function to prepare the stream to transition from <codeph>EUninitialized</codeph> to <codeph>EInitialized</codeph>: </p> <codeblock id="GUID-02DC6FE2-9528-5AF5-99C1-BAA0A2E76BE9" xml:space="preserve">virtual TInt Initialize();</codeblock> <p>After the required changes have been made to the stream, you must make a call to the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> function. Your request for audio resources is dependent on a successful commit cycle. A successful commit cycle means that you have changed the stream state to <codeph>EInitialized</codeph>. </p> <p>Once <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-1DFCCA16-7AD0-3AAF-87B8-96F0546DF488"><apiname>MAudioStream::Initialize()</apiname></xref> has been successfully committed, A3F calls <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-1EFF05A7-AEF2-3CAB-A899-CA3B8CD3EEA8"><apiname>MAudioStreamObserver::StateEvent()</apiname></xref>: </p> <codeblock id="GUID-093C7E9D-B500-527E-B8BD-EF43CD1F45F6" xml:space="preserve">virtual void StateEvent(MAudioStream&amp; aStream , TInt aReason, TAudioState aNewState)=0;</codeblock> <p>If <xref href="GUID-D80EC952-D551-346A-B115-BD617ECAB8B9.dita"><apiname>aNewState</apiname></xref> is <codeph>EInitialized</codeph>, and <xref href="GUID-3336EC2B-4FB8-3FD0-A702-0CB50DE059B4.dita#GUID-3336EC2B-4FB8-3FD0-A702-0CB50DE059B4/GUID-576DD504-B977-37ED-8EA3-2100685D070A"><apiname>MAudioContextObserver::ContextEvent()</apiname></xref> is called on the <xref href="GUID-3336EC2B-4FB8-3FD0-A702-0CB50DE059B4.dita"><apiname>MAudioContextObserver</apiname></xref> with event <xref href="GUID-570E513B-55CB-31B0-A325-C910D58C3F2C.dita"><apiname>KUidA3FContextUpdateComplete</apiname></xref>, then the process of initialization is complete. Otherwise one of the system wide error codes is returned. </p> <p> <b>Note</b>: <codeph>ContextEvent()</codeph> is a callback in the same thread context as the A3F client. </p> <p>If the transition to <codeph>EInitialized</codeph> fails, it may be caused by one of the following: </p> <ul><li id="GUID-7FCDC39D-469F-503C-B9E4-736A5C06B284"><p>The <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-1EFF05A7-AEF2-3CAB-A899-CA3B8CD3EEA8"><apiname>MAudioStreamObserver::StateEvent()</apiname></xref> callback gives an error code <codeph>KErrNotReady</codeph> if, for example, the codec format is not set when committing the transition to <codeph>EInitialized</codeph>. </p> <p>The <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-1EFF05A7-AEF2-3CAB-A899-CA3B8CD3EEA8"><apiname>MAudioStreamObserver::StateEvent()</apiname></xref> callback provides information about the new state of stream, if the state change was involved with the commit cycle, and an error code if there were any problems with the state change. </p> </li> <li id="GUID-2384281D-D4C9-52F5-B0E3-980733C5B044"><p>The commit cycle can also fail, for example, because of pre-emption. </p> <p>The <xref href="GUID-3336EC2B-4FB8-3FD0-A702-0CB50DE059B4.dita#GUID-3336EC2B-4FB8-3FD0-A702-0CB50DE059B4/GUID-576DD504-B977-37ED-8EA3-2100685D070A"><apiname>MAudioContextObserver::ContextEvent()</apiname></xref> callback indicates the event and an error code if there were any problems with the commit cycle. </p> </li> </ul> </section> <section><title>Using A3F </title> <p>The following sections describe how to manage and manipulate audio streams for audio playing and recording. </p> <p><b>Basic Procedure</b> </p> <p>The high level steps involved in processing audio are shown here: </p> <ol id="GUID-AED76DEC-7246-5A92-B81F-8BC426B56032"><li id="GUID-C355F9D4-CEF0-5A31-AA6C-86DCA277EEDB"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-14D6294E-64FB-58D9-85F8-FAE2A14367B1"> Configuring</xref>  </p> </li> <li id="GUID-4272405E-96AB-5A31-AF5A-E3E1E780EA9C"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-F6BC242F-E977-5A57-B90D-00D8A6AF5BF8"> Playing</xref>  </p> </li> <li id="GUID-00999D8E-8C01-54DC-95EA-06C68EBEC735"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-C91CCA5D-2E5B-58D0-9EEE-B5F6C0095E2A">Recording</xref>  </p> </li> <li id="GUID-D7A791C3-C155-5F22-A483-C3E07FB23450"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-E2FC5EC6-57C0-53BB-9A5F-DC8BDA12E725"> Pausing and Continuing</xref>  </p> </li> <li id="GUID-6B39D2C0-0874-50C7-8213-83252A198801"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-495DC719-47C6-50B0-9A2D-9B00BEBA0E38"> Stopping While Playing</xref>  </p> </li> <li id="GUID-D9D2E80F-5791-5788-A476-43E569D20C49"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-93CB9072-728A-598E-AD61-141D7FC9257E">Stopping While Recording</xref>  </p> </li> <li id="GUID-CF413CE3-A4FD-56BB-9967-A8D4616E791C"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-CBD49226-AC35-5890-81F7-885E97A14E30"> Retrieving the Time Streamed</xref>. </p> </li> </ol> <p id="GUID-14D6294E-64FB-58D9-85F8-FAE2A14367B1"><b> Configuring</b> </p> <p>You can configure the following settings while the stream is in the <codeph>EInitialized</codeph> state: </p> <ul><li id="GUID-1CE3E5CC-472C-5444-B98A-08512C4599E3"><p>To change the channels used for audio processing, use the <xref href="GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8.dita#GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8/GUID-ECD29200-00F9-328D-B301-8281BCD5CDCE"><apiname>MAudioCodec::SetMode()</apiname></xref> function to set the mode: </p> <codeblock id="GUID-32134EBA-B023-5391-BB17-1FF185DCA8C7" xml:space="preserve">virtual Tint SetMode(TUid aMode);</codeblock> </li> <li id="GUID-C8922EA4-E4AB-5928-8C39-C413C7DB5A69"><p>To set the sampling rate, use the <xref href="GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8.dita#GUID-863B02CA-CE78-3F63-AC42-E94D3226FDA8/GUID-54C1EEC1-05D6-31BD-91DB-62AFEA903704"><apiname>MAudioCodec::SetSampleRate()</apiname></xref> function: </p> <codeblock id="GUID-1CFE1C46-E71A-56B6-92D9-575F892042F4" xml:space="preserve">virtual Tint SetSampleRate(Tint aSampleRate);</codeblock> </li> </ul> <p>You can configure the following settings before or during audio processing: </p> <ul><li id="GUID-57842993-925D-524D-9F65-7F08A9B08605"><p>To set the audio priority and preference-related settings for the implementation, use the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-DB79EE0B-128D-3F54-8220-F0860085BF20"><apiname>MAudioStream::SetAudioType()</apiname></xref> function: </p> <codeblock id="GUID-E6C08570-F0D1-5F69-BDD3-E2EA35839B3D" xml:space="preserve">virtual Tint SetAudioType(TAudioTypeSettings&amp; aAudioTypeSettings) const;</codeblock> </li> <li id="GUID-4926C991-1653-5644-91AF-C042315CC858"><p>To change gain settings, fetch the <xref href="GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23.dita"><apiname>MAudioGainControl</apiname></xref> extension interface and use <xref href="GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23.dita#GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23/GUID-A4EA6112-1395-3B57-BFB0-E63D851ECDE8"><apiname>MAudioGainControl::SetGain()</apiname></xref>: </p> <codeblock id="GUID-6A4B7541-BE21-512F-A6F0-0DF8C0CD6682" xml:space="preserve">virtual Tint SetGain(RArray&lt;TAudioChannelGain&gt;&amp; aChannels);</codeblock> <p>The <xref href="GUID-DAF4E3A2-90EC-3DDA-A7C9-4A5C8A7FED7C.dita"><apiname>aRampDuration</apiname></xref> parameter defines the period over which to raise the gain. The <xref href="GUID-577B3EEB-C87A-39DD-BADB-9D5975AC45EF.dita"><apiname>aGain</apiname></xref> value can be any value between zero and <xref href="GUID-1C455D65-DA40-305D-A59D-972626F4ECEC.dita"><apiname>aMaxGain</apiname></xref> (the maximum gain). To obtain <xref href="GUID-1C455D65-DA40-305D-A59D-972626F4ECEC.dita"><apiname>aMaxGain</apiname></xref>, use the <xref href="GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23.dita#GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23/GUID-CE1B2FA0-6DC7-3DCA-842F-6756A48FF70C"><apiname>MAudioGainControl::GetMaxGain()</apiname></xref> function: </p> <codeblock id="GUID-25097B9A-1841-5614-B0B4-7BEF29F2E307" xml:space="preserve">virtual Tint GetMaxGain(TInt&amp; aMaxGain) const</codeblock> <p>Alternatively you can set the gain on a channel-by-channel basis. Setting the gain this way also allows you to define a gain ramp. To set the channel gain with a ramp, use <xref href="GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23.dita#GUID-BA791F19-78BC-3995-BB1E-7F272B7A1A23/GUID-A4EA6112-1395-3B57-BFB0-E63D851ECDE8"><apiname>MAudioGainControl::SetGain()</apiname></xref>: </p> <codeblock id="GUID-950EE839-955B-5E90-97FB-F2490897C545" xml:space="preserve">virtual Tint SetGain(RArray&lt;TAudioChannelGain&gt;&amp; aChannels, TUid aRampOperation, const TTimeIntervalMicroSeconds&amp; aRampDuration);</codeblock> <p>The UID determines how the ramp is interpreted. The following table describes the different ramps: </p> <table id="GUID-72DCEEC7-FE40-5CAB-8F0A-0BC8A5554D60"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <xref href="GUID-707A476C-1790-34DB-B1E5-5435578E01AA.dita"><apiname>KNullUid</apiname></xref>  </p> </entry> <entry><p>The value of <codeph>aRampDuration</codeph> is ignored and the gain changes immediately. </p> </entry> </row> <row><entry><p> <xref href="GUID-CA54ED0F-6B37-32FF-AA70-2033EC3472BB.dita"><apiname>KGainSawTooth</apiname></xref>  </p> </entry> <entry><p>An explicit 0 to <codeph>aGain</codeph> sweep, rising linearly. If the channel is active, the effective gain drops to 0, as soon as possible, after the request. If <codeph>KGainSawTooth</codeph> is used when the stream is not in the <codeph>EActive</codeph> state, then it acts as a fade-in during the subsequent <codeph>Activate()</codeph> transition. </p> </entry> </row> <row><entry><p> <xref href="GUID-010E9327-CD26-3910-B30D-86DB0982B125.dita"><apiname>KGainFadeOut</apiname></xref>  </p> </entry> <entry><p>A drop from the current gain to 0, dropping linearly over the <codeph>aRampDuration</codeph> period. </p> </entry> </row> <row><entry><p> <xref href="GUID-86875DD9-437B-3757-B744-C51274281D52.dita"><apiname>KGainRamped</apiname></xref>  </p> </entry> <entry><p>A gradual change from the current gain value to <codeph>aGain</codeph> over the <codeph>aRampDuration</codeph> period </p> </entry> </row> <row><entry><p> <xref href="GUID-2EFB7E8D-DC62-39E5-A282-819013060B6C.dita"><apiname>KGainContinue</apiname></xref>  </p> </entry> <entry><p>If a previous ramp operation is in progress, then this continues but the concept of “target gain” is updated using the new values. The value of <codeph>aRampDuration</codeph> is ignored and the previous ramp duration is re-used, minus the time already spent ramping. The smoothness of this operation depends on the implementation. If no ramp operation is in progress, then this is the same as <codeph>KNullUid</codeph>. Note that this option is intended as a way of changing gain values without stopping an ongoing ramp operation. </p> </entry> </row> </tbody> </tgroup> </table> </li> </ul> <p>Once you have finished setting configuration values, you must apply them using the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> function: </p> <codeblock id="GUID-74265309-6B3F-5DCF-AE59-BDD53B765D0A" xml:space="preserve">virtual Tint Commit();</codeblock> <p id="GUID-F6BC242F-E977-5A57-B90D-00D8A6AF5BF8"><b>Playing</b> </p> <p>Playing audio starts with the stream in the <codeph>EInitialized</codeph> state. The steps to play audio are shown here: </p> <ol id="GUID-C7587083-F8C2-5D16-A5AE-8FC3845C0BA4"><li id="GUID-0CA63DE5-3065-5952-962C-BF72D1A363DC"><p>Request a transition from <codeph>EInitialized</codeph> to <codeph>EIdle</codeph> using the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-023F6F3A-8ABB-31C6-84C8-AB06CCDC7C3D"><apiname>MAudioStream::Load()</apiname></xref> function: </p> <codeblock id="GUID-8084A363-2B4B-57B2-AFEE-BB3108764692" xml:space="preserve">virtual TInt MAudioStream::Load();</codeblock> <p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> to commit the state change. </p> </li> <li id="GUID-9E2C9B01-78FA-58F1-A2EC-A46DC96F9DAD"><p>Once the commit cycle is complete and <codeph>StateEvent</codeph> is informed about the new state, request a transition to the <codeph>EActive</codeph> state by calling <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-44094278-9D86-3FCE-BB2B-3CD88606BE19"><apiname>MAudioStream::Activate()</apiname></xref>: </p> <codeblock id="GUID-33E76BF5-CDE7-59AE-B86D-269FBF8147CA" xml:space="preserve">virtual TInt Activate();</codeblock> <p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> to commit the state change. The state transition and audio playing take effect once the commit cycle has successfully completed. </p> </li> <li id="GUID-11BA8048-DAA4-512C-A31B-92154ED8FE19"><p>When the first buffer is ready to be filled with audio data, an <xref href="GUID-11595177-B5B0-3EEC-8064-0D79F4BF3D2C.dita#GUID-11595177-B5B0-3EEC-8064-0D79F4BF3D2C/GUID-A029B562-5EB8-3795-B88C-CA8D90E60991"><apiname>MMMFDataSupplier::BufferToBeFilled()</apiname></xref> notification is received: </p> <codeblock id="GUID-82372A29-3565-5970-98B1-432A873162DD" xml:space="preserve">virtual void BufferToBeFilled(CMMFBuffer* aBuffer)=0;</codeblock> </li> <li id="GUID-EF520B84-1BBD-5941-9B26-CFD0D4012802"><p>After filling the buffer, respond by using the <xref href="GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803.dita#GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803/GUID-9E3C1A38-ED76-3954-8B6E-A88286FC841C"><apiname>MMMFBufferSource::BufferFilled()</apiname></xref> extension interface function: </p> <codeblock id="GUID-78AA9109-04CE-5124-84B4-6C1663B97043" xml:space="preserve">virtual Tint BufferFilled(CMMFBuffer* aBuffer);</codeblock> <p>This is similar to the existing <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound</xref> behaviour. For more information, see <xref href="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita">Playing audio</xref>. </p> </li> </ol> <p id="GUID-C91CCA5D-2E5B-58D0-9EEE-B5F6C0095E2A"><b> Recording</b> </p> <p>Recording audio starts with the steam in the <codeph>EInitialized</codeph> state. The steps to record audio are shown here: </p> <ol id="GUID-09916C95-AE95-55A9-B899-A8F208723766"><li id="GUID-4FCE3888-94D3-5EBE-B340-2CB4CD0FC246"><p>Request a transition from <codeph>EInitialized</codeph> to <codeph>EIdle</codeph> using the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-023F6F3A-8ABB-31C6-84C8-AB06CCDC7C3D"><apiname>MAudioStream::Load()</apiname></xref> function: </p> <codeblock id="GUID-CD7F335F-E73F-5035-8F63-9CDD602C20CD" xml:space="preserve">virtual TInt MAudioStream::Load();</codeblock> <p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> to commit the state change. </p> </li> <li id="GUID-8DDCE8FB-6B08-5AE1-B7A2-D1EAFF9E1B5E"><p>Once the commit cycle is complete and <codeph>StateEvent</codeph> is informed about the new state, request a transition to the <codeph>EActive</codeph> state by calling <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-44094278-9D86-3FCE-BB2B-3CD88606BE19"><apiname>MAudioStream::Activate()</apiname></xref>: </p> <codeblock id="GUID-E5D9F936-6193-5551-8F13-F1CF58FC36F7" xml:space="preserve">virtual TInt Activate();</codeblock> <p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> to commit the state change. The state transition and audio recording take effect once the commit cycle has successfully completed. </p> </li> <li id="GUID-6E35385A-718E-5F0E-97E0-EDFD44B93708"><p>When the first buffer is ready to be emptied of audio data, an <xref href="GUID-7752B59D-9E3A-357B-B5DD-C4C89FEE7D5A.dita#GUID-7752B59D-9E3A-357B-B5DD-C4C89FEE7D5A/GUID-36C036D8-B0D9-3439-B009-9684C261DE64"><apiname>MMMFDataConsumer::BufferToBeEmptied()</apiname></xref> notification is received: </p> <codeblock id="GUID-4BF5B98C-F496-5AD9-9C0A-BA6B92FB2CA1" xml:space="preserve">virtual void BufferToBeEmptied(CMMFBuffer* aBuffer)=0;</codeblock> </li> <li id="GUID-3A914F79-837D-5ADD-B8B1-70ACBAB7D2D1"><p>After emptying the buffer, respond by using the <xref href="GUID-72D6CC6A-D119-3A88-BADD-106B1D1EE1AA.dita#GUID-72D6CC6A-D119-3A88-BADD-106B1D1EE1AA/GUID-6724D6C0-AA02-3181-B6D0-6DF40728A257"><apiname>MMMFBufferSink::BufferEmptied()</apiname></xref> extension interface function: </p> <codeblock id="GUID-B3342CF3-0AEA-5356-8076-4DB3A8A53F30" xml:space="preserve">virtual Tint BufferEmptied(CMMFBuffer* aBuffer);</codeblock> <p>This is similar to the existing <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound</xref> behaviour. For more information, see <xref href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita">Recording Audio</xref>. </p> </li> </ol> <p id="GUID-E2FC5EC6-57C0-53BB-9A5F-DC8BDA12E725"><b> Pausing and Continuing</b> </p> <p>To pause the audio currently being processed, use the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-19E9A726-DB06-3080-B685-35ACE8C48ED6"><apiname>MAudioStream::Prime()</apiname></xref> function: </p> <codeblock id="GUID-0E1999ED-FD4C-5632-AE99-0E2B741503B6" xml:space="preserve">virtual Tint Prime();</codeblock> <p>Calling <codeph>Prime()</codeph> requests a transition to the <codeph>EPrimed</codeph> state. After calling <codeph>Prime()</codeph>, the state change must be committed. </p> <p> <codeph>Prime()</codeph> temporarily stops the audio process. To continue audio processing from the <codeph>EPrimed</codeph> state, use the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-44094278-9D86-3FCE-BB2B-3CD88606BE19"><apiname>MAudioStream::Activate()</apiname></xref> function: </p> <codeblock id="GUID-167DD5B0-EF69-50B0-9564-E47BFF615C5A" xml:space="preserve">virtual Tint Activate();</codeblock> <p>After a successful commit cycle, the stream is transitioned to the <codeph>EActive</codeph> state, and processing resumes from the pause point. </p> <p id="GUID-495DC719-47C6-50B0-9A2D-9B00BEBA0E38"><b>Stopping While Playing</b> </p> <p>To stop audio processing while playing audio, use the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-338A5254-F6C0-3F9D-8635-CECF3B18AE26"><apiname>MAudioStream::Stop()</apiname></xref> function: </p> <codeblock id="GUID-AB5032AA-5B2C-5BE5-A7E7-CD77227DE7A9" xml:space="preserve">Virtual Tint Stop();</codeblock> <p> <codeph>Stop()</codeph> can be called while the stream state is <codeph>EActive</codeph> or <codeph>EPrimed</codeph>. </p> <p> <b>Note:</b> After calling <codeph>Stop()</codeph>, do not call <xref href="GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803.dita#GUID-4429668D-1F6F-3C0A-AEFA-45449D80D803/GUID-9E3C1A38-ED76-3954-8B6E-A88286FC841C"><apiname>MMMFBufferSource::BufferFilled()</apiname></xref> for any outstanding <xref href="GUID-11595177-B5B0-3EEC-8064-0D79F4BF3D2C.dita#GUID-11595177-B5B0-3EEC-8064-0D79F4BF3D2C/GUID-A029B562-5EB8-3795-B88C-CA8D90E60991"><apiname>MMMFDataSupplier::BufferToBeFilled()</apiname></xref> callbacks, as the buffer may not be valid anymore. </p> <p id="GUID-93CB9072-728A-598E-AD61-141D7FC9257E"><b>Stopping While Recording</b> </p> <p>To stop audio processing while recording audio, use the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-338A5254-F6C0-3F9D-8635-CECF3B18AE26"><apiname>MAudioStream::Stop()</apiname></xref> function: </p> <codeblock id="GUID-752F4CF7-E84D-52AF-9ED3-2899C639E43F" xml:space="preserve">Virtual Tint Stop();</codeblock> <p> <codeph>Stop()</codeph> can be called while the stream state is <codeph>EActive</codeph> or <codeph>EPrimed</codeph>. </p> <p> <b>Note:</b> Calling <codeph>Stop()</codeph> breaks the recording cycle and some buffers of audio data may be lost. To guarantee that no recorded data is lost when stopping, transition the stream from <codeph>EActive</codeph> to <codeph>EPrimed</codeph>, and wait for <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-1B9E88D3-ACB0-3A50-A18D-217B8F9E4B82"><apiname>MAudioStreamObserver::ProcessingFinished()</apiname></xref> to return. Upon receiving the callback, transition the stream from: </p> <ol id="GUID-21113168-7523-5D39-BBA6-945665B53739"><li id="GUID-C3F11D6B-7F02-507B-A9BB-F850491C8C93"><p> <codeph>EPrimed</codeph> to <codeph>EIdle</codeph>  </p> </li> <li id="GUID-351D09AB-D078-5E55-9B70-193FA9867D76"><p> <codeph>EIdle</codeph> to <codeph>EInitialized</codeph>  </p> </li> <li id="GUID-C32D2D9B-1A15-53A3-BBBC-AF897267E635"><p> <codeph>EInitialized</codeph> to <codeph>EUninitialized</codeph>  </p> </li> </ol> <p id="GUID-CBD49226-AC35-5890-81F7-885E97A14E30"><b>Retrieving the Time Streamed</b> </p> <p>To retrieve the duration of the audio that has been processed, use the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-0C4DBDDA-BE83-35DD-B14E-BF0F3D78EB3B"><apiname>MAudioStream::GetStreamTime()</apiname></xref> function: </p> <codeblock id="GUID-9D927CE5-1646-5A40-A745-E4252C6F458E" xml:space="preserve">virtual TInt GetStreamTime(TTimeIntervalMicroSeconds&amp; aStreamTime);</codeblock> <p>The result returned is the microseconds processed since the last <codeph>EIdle</codeph> state. <codeph>GetStreamTime()</codeph> returns a zero value until audio processing starts. The function returns the time processed when the stream is in the <codeph>EPrimed</codeph> and <codeph>EActive</codeph> states. </p> </section> <section><title>See Also</title> <p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita">Audio Component Framework Tutorial</xref>  </p> <p><xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita">Advanced Audio Adaptation Framework Technology Guide</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4"><title>Client Viewfinder</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial introduces to the Client Viewfinder API of the Ecam component. </p> <section><title>Purpose</title> <p>This documents provides a detailed description about the Client Viewfinder API. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following are the setup and configuration requirements you need to follow before Client Viewfinder implementation: </p> <ul><li id="GUID-FB7B0565-6139-5A1D-B53A-E4F309626131"><p>Client needs to implement the dedicated observer <xref href="GUID-C4F40144-7132-309A-B648-E366786B4DE4.dita"><apiname>MclientViewFinderObserver</apiname></xref> to use the client viewfinder API. </p> <p>The Ecam implementation will issue the call-backs in this observer class, when the client viewfinder operations are ready to be notified. </p> </li> <li id="GUID-A233A435-14CE-5469-A7EB-8A2517F5A045"><p>Licensee must provide concrete implementation for an interface class <xref href="GUID-4C8C5C49-B5DE-363A-93FE-099BB1413844.dita"><apiname>McameraClientViewFinder</apiname></xref> and <xref href="GUID-3B71FBB0-4F32-3CDE-931E-4A1428761E23.dita"><apiname>McameraViewFinder</apiname></xref>. </p> </li> </ul> </section> <section><title>Client Viewfinder </title> <p><b>Client Viewfinder Implementation</b> </p> <p>The following tasks will be covered during Client Viewfinder implementation: </p> <ul><li id="GUID-D84A7292-DC2A-586A-A123-8B98793FAEEB"><p>Create an instance of class <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita"><apiname>CcameraClientViewFinder</apiname></xref> through <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita#GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804/GUID-F94E946B-34DD-377D-A010-766E638D1958"><apiname>CcameraClientViewFinder::NewL()</apiname></xref> factory method. Client also needs to pass the reference to the instance of class for providing concrete implementation of <xref href="GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1.dita"><apiname>MClientViewFinderObserver</apiname></xref>. </p> <p>This class maps the exported call to an internal object of class <xref href="GUID-4C8C5C49-B5DE-363A-93FE-099BB1413844.dita"><apiname>McameraClientViewFinder</apiname></xref>, which provides the camera version2 client viewfinder functionality. </p> </li> <li id="GUID-7475A895-2055-591C-BCD9-2FB9A6EEE48B"><p>In second phase construction for class <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-BF6CDD75-C370-31B0-89A8-6BA3237C1B58"><apiname>Ccamera::CcameraClientViewFinder</apiname></xref>, do the following: </p> <ol id="GUID-CE3B3BC7-665A-5510-973A-0CCF52E5A3E6"><li id="GUID-24C5E026-7DCC-5861-BBF8-9A3729943684"><p>When appropriate UIDs are provided, retrieve the handle to the concrete implementation for <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref> and <xref href="GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C.dita"><apiname>MCameraViewFinder</apiname></xref> through a call to <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-CC199F00-9390-39A3-89C8-6C13EF0B82CB"><apiname>Ccamera::CustomInterface</apiname></xref>. </p> </li> <li id="GUID-A1313257-FCBB-595C-AF5D-FD0DFD29A60F"><p> <xref href="GUID-EE1F2D79-0C38-3A3F-A81E-24872ADF9BFB.dita"><apiname>KECamMCameraClientViewFinderUid</apiname></xref> UID is used to retrieve the handle for concrete implementation of <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref>. </p> <p> <xref href="GUID-23CB6900-72E3-3D32-B799-27F9A1A92AC3.dita"><apiname>KECamMCameraBaseClientViewFinderUid</apiname></xref> UID is used to retrieve the handle to concrete implementation for <xref href="GUID-BCB44358-0774-3D07-BCD8-E54E7055D6F2.dita"><apiname>MCameraViewFinder.</apiname></xref>  </p> </li> <li id="GUID-57130901-B151-5EBF-BF7B-9FA84F72CF5D"><p>Pass the reference to the client viewfinder observer to the concrete implementation of <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref> through <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita#GUID-06A2DDCE-3296-3773-A2D0-74460E216F39/GUID-EB4A2E90-B246-3EFE-9DE9-102A17A83B9C"><apiname>MCameraClientViewFinder::SetClientViewFinderObserver()</apiname></xref>. </p> </li> <li id="GUID-B0F96D78-0F9E-5E09-A41B-075CBD8DE425"><p>Pass the handle of the <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-7ACD280E-0347-3248-970E-22FC22163FBD"><apiname>Ccamera::CcameraClientViewFinder()</apiname></xref> to the concrete implementation of <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref> through <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita#GUID-06A2DDCE-3296-3773-A2D0-74460E216F39/GUID-FF80D575-6449-35C8-B0D7-46883C098C79"><apiname>MCameraClientViewFinder::SetClienttViewFinderHandle()</apiname></xref>. </p> <p>Implementation can use this handle to implement <xref href="GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C.dita#GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C/GUID-A3F93566-047A-3741-A6E4-3E62704E6E7C"><apiname>MCameraViewFinder::GetViewFinderHandleL()</apiname></xref> and provide a unique identity to the given viewfinder handle. </p> <p>Implementation passes this handle to the client through client viewfinder observer callbacks, and allows the client to identify the actual client viewfinder instance that should receive the notification. </p> <p> <b>Note</b>:Implementation should not destroy this object. Client will use <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-C60C6C01-EDE8-3A5D-803C-348FF4263CD3"><apiname>CCameraViewFinder::GetViewFinderHandleL()</apiname></xref> to distinguish a particular client viewfinder instance. </p> </li> </ol> </li> <li id="GUID-7E38BDFE-3575-54EB-82B6-0663CE691D8E"><p>If multiple client viewfinders need to be run, client needs to create a new object for CcameraClientViewFinder each time. </p> </li> <li id="GUID-A0726C56-CC32-57C3-A57F-851D3F4E419E"><p>Ecam implementation keeps track of <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita"><apiname>CcameraClientViewFinder</apiname></xref> object deletion. </p> <p>Makes sure that a call-back is not sent, if the client destroys the particular <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita"><apiname>CcameraClientViewFinder</apiname></xref> class object. </p> <p>This situation may arise when the call-back gets queued by the Ecam implementation in order to send it across to the client. </p> </li> </ul> <p> <b>Note:</b>  </p> <ul><li id="GUID-E568505D-C47C-51A4-B2A1-EEB4BA40A00C"><p>Client retains the ownership of <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita"><apiname>CcameraClientViewFinder</apiname></xref> class object. </p> </li> <li id="GUID-58F6480E-3287-5A14-932C-1E440B77CB7D"><p> <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-E9CFF09B-5B14-3F6B-BC45-92238D6EEA06"><apiname>MCameraObserver2::ViewFinderReady()</apiname></xref> will not be used with <xref href="GUID-ED7C0789-5243-3EB2-8206-98F26DEDEA6D.dita"><apiname>CCameraClientViewFinder</apiname></xref> class. </p> </li> </ul>  <p><b>Working with Client Viewfinder</b> </p> <p>The following steps describes working with client viewfinder: </p> <ol id="GUID-25D4FB61-43F4-5F60-887A-F19864C4565E"><li id="GUID-1352F5AE-2986-57B5-BA96-1907DCE46FB9"><p>Before starting the client viewfinder, client has the following options: </p> <ul><li id="GUID-767FD277-EEAB-5EBB-9C8C-7B44513345E3"><p>Client can use specific histogram over the client viewfinder frame by creating a dedicated histogram object through <xref href="GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC.dita#GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC/GUID-5B1F42C4-8FDF-3DDD-9411-21CFBD88EFE3"><apiname>CCamera::CCameraClientViewFinder::CreateHistogramHandleL()</apiname></xref>. Concrete implementation for <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref> provides the concrete factory handle of type MImplementationFactory, for the histogram implementation of a particular viewfinder. </p> <p>Histogram related callbacks which would eventually be issued to the client are <xref href="GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1.dita#GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1/GUID-8A46D664-C7F6-3ADC-A210-74E678B9D5D4"><apiname>MClientViewFinderObserver::DirectHistogramDisplayed()</apiname></xref> and <xref href="GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1.dita#GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1/GUID-28253408-A559-3E90-91B8-34B408E4B24C"><apiname>MClientViewFinderObserver::ClientHistogramReady()</apiname></xref>. </p> </li> <li id="GUID-F897AF7E-7F7A-5F52-986F-678BC3EAF0F6"><p>Client can also use specific image processing over the client viewfinder frame by creating a dedicated image processing object through <xref href="GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC.dita#GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC/GUID-BD18568F-16B1-3A52-A935-C47B52103629"><apiname>CCamera::CCameraClientViewFinder::GetTransformationHandleL()</apiname></xref>. Concrete implementation for <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref> provides the concrete factory handle of type MImplementationFactory, for the image processing implementation to use it specifically for a particular viewfinder. </p> <p>Image processing related callbacks which would be issued to the client through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref>. </p> </li> </ul> </li> <li id="GUID-8AC79B9B-7AF6-5145-814B-27989B113369"><p>Use <xref href="GUID-ED7C0789-5243-3EB2-8206-98F26DEDEA6D.dita#GUID-ED7C0789-5243-3EB2-8206-98F26DEDEA6D/GUID-FF9702B4-1530-371E-8EA3-75D4117B4ED2"><apiname>CCameraClientViewFinder::StartClientViewFinderL()</apiname></xref> to start client viewfinder and to retrieve viewfinder frames in the specified format and size. Client specifies the format and size for the viewfinder frames. </p> </li> <li id="GUID-0B9E890C-6ED5-5C60-A4EC-7B1E5BAA611B"><p>ECam adaptation owns the buffer that passes the viewfinder frames to the client through <xref href="GUID-2E8D5B41-2E0F-3296-AC3B-762C9E94C66B.dita"><apiname>McameraOberver2</apiname></xref> notification. The client releases the buffers passed to it by the adaptation, when it has handled the viewfinder frame. The adaptation should not reuse the buffers passed, until the client releases them. The Ecam adaptation secures it against the clients that do not release the buffers within a specific time interval. </p> </li> <li id="GUID-549369CC-3335-55CD-B1D4-0B754E8A8D13"><p>Implementation issues callback <xref href="GUID-DAD2AA62-442A-32DF-AD98-2CBC1AD9B7F1.dita"><apiname>ViewFinderBufferReady()</apiname></xref> to notify the client that viewfinder frames of client are available. Implementation passes the viewfinder handle along with the callback. Client identifies the actual client viewfinder object and retrieve the viewfinder data through C<xref href="GUID-8B6B6B32-D6D7-3628-967F-37CF57C9125A.dita#GUID-8B6B6B32-D6D7-3628-967F-37CF57C9125A/GUID-35782E1D-D373-316F-8BCE-9AAD2823AA34"><apiname>CameraClientViewFinder::GetViewFinderBufferL()</apiname></xref>. </p> <p> </p> </li> </ol> <p>A client calls the following functions to control the view finder: </p> <ul><li id="GUID-4AB95DAA-7A85-5E95-A5A3-66BD603C54E3"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-11019EB4-5496-33F9-AB46-0C8A18EC8E57"><apiname>CCamera::StartViewFinderBitmapsL()</apiname></xref>  </p> </li> <li id="GUID-15B17F9D-3BA5-5AA3-BAC5-3AB3A82B0DE8"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-FD7C01CC-8993-33D7-8ADA-9C56FEDEE791"><apiname>CCamera::SetViewFinderMirrorL()</apiname></xref>  </p> </li> <li id="GUID-48E872FB-6441-51CF-B910-54F5A4B0D686"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E762211D-2528-3850-9DE2-84282066644C"><apiname>CCamera::StopViewFinder()</apiname></xref>  </p> </li> </ul> <p>If the implementation finds any error during client viewfinder operation, it stops the specific client viewfinder and issue the callback <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-CD4AF71F-1C85-31A0-B378-FFDD228C1F67"><apiname>MDirectViewFinderObserver::ViewFinderBufferReady()</apiname></xref> with the appropriate error code. </p> </section> <section><title>See also</title> <p><xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita">Overview</xref> of Viewfinder API </p> <p>The <xref href="GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9.dita">Viewfinder</xref> Tutorial </p> <p>The <xref href="GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C.dita">Direct Viewfinder</xref> Tutorial </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2A6C43A6-D5D3-5DC1-871C-C1428D2DB2E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2A6C43A6-D5D3-5DC1-871C-C1428D2DB2E6"><title>How to access reference counting objects in object containers</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following code fragment retrieves a pointer to the reference counting object with the name "Monday". It assumes that such a reference counting object does exist.</p> <codeblock id="GUID-3621E878-0505-5040-B034-6F6937F6D0A1" xml:space="preserve">...
+class CMyobject : public CObject
+    {
+       ...
+       };
+
+_LIT(KMatcher,"Monday");
+...
+CMyobject*  theobject;
+CObjectCon* thecontainer;
+TInt        thefindhandle;
+TName       objname;
+...
+thecontainer-&gt;FindByName(thefindhandle,KMatcher,objname);
+theobject = (CMyObject*)thecontainer-&gt;AtL(thefindhandle);
+...</codeblock> <p>The following code fragment retrieves pointers to all of the reference counting objects whose names end with "day":</p> <codeblock id="GUID-0AA53FC1-FEDA-5C0E-AA68-AAD8D564E4D0" xml:space="preserve">...
+class CMyobject : public CObject
+    {
+       ...
+       };
+
+_LIT(KMatcher,"*day");
+...
+CMyobject*  theobject;
+CObjectCon* thecontainer;
+TInt        thefindhandle;
+TName       objname;
+...
+thefindhandle = 0;
+while (thecontainer-&gt;FindByName(thefindhandle,KMatcher,objname)==KerrNone)
+    {
+    // objname contains the reference counting object's
+    // name, e.g. "Monday" or "Tuesday"
+    ...
+    theobject = (CMyobject*)thecontainer-&gt;AtL(thefindhandle);
+    ...
+    }
+// Now found all matching reference counting objects
+...</codeblock> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e188964_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e237865_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2AC1C0B6-0405-5F1D-A813-39DA35808182.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2AC1C0B6-0405-5F1D-A813-39DA35808182"><title>STDLIB Console and I/O operations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the console and the asynchronous input/output operations of STDLIB. </p> <section><title>Console versus terminals</title> <p>The STDLIB console (encapsulated by class <codeph>CTtyDesc</codeph>, defined in <filepath>fdesc.h</filepath>) is a client of the <codeph>CConsoleBase</codeph> class implemented by <filepath>econs.dll</filepath>. It provides very simple text input and output with no support for embedded control sequences. When STDLIB receives a character from the console it prints it out to the same console, providing a "local echo" facility to make simple command-line interfaces possible. </p> <p>STDLIB does not provide any sort of terminal driver or line-discipline. In particular there is no support for local processing of backspace, nor any line buffering. Neither does it provide termio or termcap facilities. Symbian platform is a graphics-based system and it is recommended that C code be ported into a Symbian program which uses a graphical user interface. </p> </section> <section><title>Asynchronous I/O vs blocking I/O</title> <p>All STDLIB I/O operations are blocking; that is they will suspend the calling thread indefinitely until the I/O completes. Hence, in general, STDLIB I/O must not be used in a Symbian platform active object because it will cause the entire active scheduler to block. A possible way to avoid this problem might be to use <codeph>fcntl()</codeph> for individual file descriptors, but STDLIB does not currently implement this function. </p> <p>Asynchronous I/O can be achieved using a set of C++ functions provided by STDLIB which implement a per-file-descriptor equivalent of the POSIX <codeph>select()</codeph> function. These functions provide a form of the <codeph>ioctl()</codeph> function which takes a <codeph>TRequestStatus&amp;</codeph> as a parameter, together with functions for completing the <codeph>ioctl()</codeph> operation once the status has been signaled or canceling the pending <codeph>ioctl</codeph>. This scheme can be used within an active object to wait for a socket to become ready for reading or writing, so that the subsequent i/o does not block the whole active scheduler. See <filepath>estlib.h</filepath> for the interface to these functions. For more information on active objects and the active scheduler in Symbian platform, see <xref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita">active objects</xref>. </p> <p> <b> NOTE</b>: There are no such blocking problems with I/O to local files, which is essentially a synchronous operation. </p> </section> <section><title>See also</title> <p> <xref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita">Active Objects</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2AD64552-440B-5439-885B-BE71DE0E8F1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2AD64552-440B-5439-885B-BE71DE0E8F1F"><title>Compiler macros</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following macros are defined by the build tools. These macros may be used to control conditional compilation. </p> <table id="GUID-2AB7C1FA-6803-5F48-BA96-054E78D43A83"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <codeph>__SYMBIAN32__</codeph>  </p> </entry> <entry><p>indicates Symbian platform code in general </p> </entry> </row> <row><entry><p> <codeph>__WINS__</codeph>  </p> </entry> <entry><p>indicates the WINS or WINSCW platforms </p> </entry> </row> <row><entry><p> <codeph>__DLL__</codeph>  </p> </entry> <entry><p>if applicable, indicates that a DLL is being built </p> </entry> </row> <row><entry><p> <codeph>__EXE__</codeph>  </p> </entry> <entry><p>if applicable, indicates that a <filepath>.exe</filepath> is being built </p> </entry> </row> <row><entry><p> <codeph>__CW32__</codeph>  </p> </entry> <entry><p>indicates CodeWarrior is the compiler </p> </entry> </row> <row><entry><p> <codeph>__EPOC32__</codeph>  </p> </entry> <entry><p>indicates any target hardware platform, regardless of processor type or hardware architecture </p> </entry> </row> </tbody> </tgroup> </table> <p>Further macros can be defined in project files through the <codeph>MACRO</codeph> statement. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2AE024D5-B34B-5E7E-BC7E-8C45E80173C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2AE024D5-B34B-5E7E-BC7E-8C45E80173C5"><title>freeze</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>abld</codeph> [ test ] <codeph>freeze</codeph>  <codeph>[-k] [-v] </codeph> [ <varname>platform</varname> ] [ <varname>program</varname> ] </p> <p>This command freezes new DLL exports in frozen <filepath>.def</filepath> files using the <codeph>FREEZE</codeph> target provided in makefiles generated by <filepath>makmake</filepath>. </p> <p>The frozen <filepath>.def</filepath> files should be considered part of source for your component. </p> <ul><li id="GUID-3BF285C7-610D-54DD-A37C-4FD10A4A5888"><p>To freeze your component for the first time, having built the component, call this command. </p> </li> <li id="GUID-A172DCF5-63EB-5B0F-B08E-70CB4B7CD467"><p>Next, regenerate the makefiles so that import libraries can be created from the frozen <filepath>.def</filepath> files. </p> </li> </ul> <p>The import libraries can be created explicitly using the <codeph>abld
+        library</codeph> command, or they can be built implicitly through <codeph>abld
+        build</codeph> or <codeph>abld target</codeph>. </p> <ul><li id="GUID-3D13EF55-A849-5D07-9A85-B8635E481E62"><p>To add new exports to a project within your component, having built the component, call this command. </p> </li> <li id="GUID-AD3B066E-07B1-5BBF-9BE3-B91D8D7D9C78"><p>Next, rebuild the import libraries so that they incorporate the new exports. </p> </li> </ul> <p> <b>Limitation:</b>  </p> <p>When freezing functions from the target types, build system can auto generate <filepath>.def </filepath> files only for <codeph>DLL</codeph>, <codeph>EXEDLL</codeph>, <codeph>EXEXP</codeph>, and <codeph>STDDLL</codeph> target types even if, you do not have a <filepath>.def</filepath> file specified in the matching <filepath>.mmp</filepath> file. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2B026328-010F-5245-B3A1-6E8C97BA4BAE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2B026328-010F-5245-B3A1-6E8C97BA4BAE" xml:lang="en"><title>Domain Name
+Server</title><shortdesc>Summary of concepts and tutorials related to the Domain Name Server
+(DNS). </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e44021_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78"><title>Using String Pool</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can perform any of the following tasks on a string pool: </p> <ul><li id="GUID-075FC6AA-FF50-53A5-958D-58887D1C72CF"><p><xref href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita#GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78/GUID-45792D4C-69C0-5E57-A678-870806C3233D">Adding tables to a string pool</xref>  </p> </li> <li id="GUID-C230C949-D94A-50F4-AFD6-C18752A20C11"><p><xref href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita#GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78/GUID-B56DE379-D345-5A7A-9780-B29CA0D28C66">Accessing strings in a string pool</xref>  </p> </li> <li id="GUID-42328498-4535-54D8-BFBF-D7A744A9E1E6"><p><xref href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita#GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78/GUID-CDCAD75A-D210-5B04-B25C-DC8AD6136BDF">Retrieving a string from a string pool </xref>  </p> </li> <li id="GUID-94A9DFA5-71FE-5945-B95F-AE06FC7AE239"><p><xref href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita#GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78/GUID-0DB1030D-E073-5664-960A-A6FA33207D41">Comparing strings in a string pool</xref>  </p> </li> </ul> <section id="GUID-45792D4C-69C0-5E57-A678-870806C3233D"><title>Adding tables to a string pool </title> <ol id="GUID-E3C187AF-3693-5585-8AD3-716544DADFFC"><li id="GUID-140476B0-F437-5166-9193-1C3C8D7F8231"><p>Create a string pool with no static string tables. This is, in effect an empty string pool. Static string tables can be added later. Use the following variant of <codeph>OpenL()</codeph>: </p> <codeblock id="GUID-4C4C9467-342C-5E03-ADA7-F30CE2BA3E66" xml:space="preserve">void RStringPool::OpenL()</codeblock> </li> <li id="GUID-601A7683-6E56-5666-B8B3-115F85234FE4"><p>Add a static string table to the pool by using the following variant of <codeph>OpenL()</codeph>. </p> <codeblock id="GUID-711D9243-CE11-58AD-A156-D6297E2BDBB5" xml:space="preserve">void RStringPool::OpenL( const TStringTable&amp; aTable )</codeblock> <p>This function creates the string pool, if it doesn't already exist, before adding the string table. Use the same function to add further string tables whenever required. </p> </li> </ol> <p>There is a variation on the <codeph>OpenL()</codeph> function that provides a mechanism for notifying when the string pool is being closed. Following is the variant: </p> <codeblock id="GUID-0D22513A-D272-54FD-BFED-F687430DEF23" xml:space="preserve">void OpenL(const TStringTable&amp; aTable, MStringPoolCloseCallBack&amp; aCallBack);</codeblock> <p>Closing the string pool is performed using the <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita#GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B/GUID-A300515C-82B3-3CF1-92B2-363D7D4DC60B"><apiname>RStringPool::Close()</apiname></xref> function. It closes all open references to the string pool. This may be important in environments where asynchronous programming techniques is used. Provide an implementation of the <xref href="GUID-181D6F81-079E-39FD-A795-9274661C80D0.dita"><apiname>MStringPoolCloseCallBack</apiname></xref> to handle the situation. </p> <p> <b>Note:</b> The implementation assumes that the string tables remain in existence and are located at the same address for as long as the string pool remains open. This assumption is almost always justified as the tables are static data. </p> </section> <section id="GUID-B56DE379-D345-5A7A-9780-B29CA0D28C66"><title>Accessing strings in a string pool</title> <p>Accessing strings involves getting a handle to a string in the string pool. These handles are instances of <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> and <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> classes, which are used in the code to represent strings. </p> <p> <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> represents a case-sensitive string. For example, a string that is compared in a case-sensitive manner. </p> <p> <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> represents a case-insensitive string. For example, when you compare two <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> objects where the represented strings only differ in terms of case, the two strings are considered identical. </p> <p>Follow the steps given below to create an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> to represent a specific string: </p> <p> <b>Note</b>: Creating an <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> object is same as creating an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref>. Where <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> is discussed, this information also applies to <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref>: </p> <ol id="GUID-5D61F147-9CB7-5E0B-AEC3-5D3DDEE846E0"><li id="GUID-CB52068B-2D7E-564E-9E85-B1ECD3381D1E"><p>Create an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> to represent a specific string in a static string table by using the variant, </p> <codeblock id="GUID-8C54A1BC-5E7A-5DC4-A3EF-3D6FF861A35F" xml:space="preserve">RString RStringPool::String( TInt aIndex,const TStringTable&amp; aTable ) const;</codeblock> <p>pass the reference to the specific string table and the index number that identifies the string. Based on the example string table illustrated in <xref href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita#GUID-27340D18-A31D-512E-920A-B06C784A978A/GUID-8221E235-15F9-55E9-8C17-4015051F70CD">Static String Tables</xref> section, the following code is a commonly used pattern to generate an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref>. Here we generate an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> to represent the string "banana". The code does no error handling and ignores leave situations. </p> <codeblock id="GUID-CD9A4011-064C-5FCD-9AEC-915971915B6B" xml:space="preserve">#include &lt;&gt;
+
+RStringPool thepool;
+RString thebanana;
+...
+thepool.OpenL( ExampleStringTable::Table );
+thebanana = thepool.String( ExampleStringTable::EBanana,ExampleStringTable::Table );
+...</codeblock> <p>In more sophisticated code, and where there is more than one static string table, use a function or a member function of some class to retrieve that <xref href="GUID-91322CD6-6DA0-3868-A5D7-CA561A102074.dita"><apiname>TStringTable</apiname></xref> reference. The following is a common pattern: </p> <codeblock id="GUID-DCD42818-2975-5EDA-AF29-DD69C4BA395C" xml:space="preserve">void X::Foo( CSomeClass aInstance,... )
+    {
+    ...
+    thebanana = thepool.String( ExampleStringTable::EBanana,aInstance.GetTable() );
+    ...
+    }</codeblock> <p>where <codeph>GetTable()</codeph> is a function that returns a reference to a specific <xref href="GUID-91322CD6-6DA0-3868-A5D7-CA561A102074.dita"><apiname>TStringTable</apiname></xref>. </p> </li> <li id="GUID-79DB61DF-CFD8-573D-B8AE-2A93F41BB0A2"><p>Create an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> to represent a string that may not exist in any existing static string table within the string pool. Use the following function: </p> <codeblock id="GUID-9CA1BF60-4E8C-5012-A9D8-50AF128A1653" xml:space="preserve">RString  RStringPool::OpenStringL( const TDesC8&amp; aString ) const;</codeblock> <p>Following is an example of dynamically adding a string to the pool (which also generates the <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> to represent it). If the string already exists in a static string table, then the string value itself is not added; instead a new reference to the existing string is created. The following is a simple code fragment: </p> <codeblock id="GUID-951A4940-0FC1-5FDB-BF63-57F0B913038B" xml:space="preserve">class X
+    {
+public :
+    ...
+    void Foo( const TDesC8&amp; aString,... );
+    ...
+    }</codeblock> <codeblock id="GUID-758330C2-E442-5212-8AF4-F087CBA2D604" xml:space="preserve">void X::Foo( aString,... )
+    {
+    ...
+    RString theString;
+    theString = thepool.OpenStringL( aString );
+    ...
+    }</codeblock> </li> </ol> </section> <section id="GUID-CDCAD75A-D210-5B04-B25C-DC8AD6136BDF"><title>Retrieving a string from a string pool </title> <p>Given an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> object (or an <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref>), you can retrieve the string value itself. To retrieve the string value, use the <codeph>DesC()</codeph> function that is provided by the <xref href="GUID-0829EF3D-5068-341C-946F-BFCEFD8F42AC.dita"><apiname>RStringBase</apiname></xref> base class of <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> and <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> classes. </p> <p>For example: </p> <codeblock id="GUID-5D3AA9CF-2D8C-5074-9A0E-6AE82882C2DD" xml:space="preserve">class X
+    {
+    public :
+        ...
+        void Foo( RString aString, ... );
+        ...
+    }</codeblock> <codeblock id="GUID-05BD62DD-0100-54C2-9C4D-23C76C6B3210" xml:space="preserve">void X::Foo( aString )
+    {
+    const TDesC8&amp; stringValue = aString.DesC();
+    ...
+    }</codeblock> </section> <section id="GUID-0DB1030D-E073-5664-960A-A6FA33207D41"><title>Comparing strings in a string pool </title> <p>Comparing strings becomes a fast and simple process once an <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> handle (or an <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref>) has been created. A common use is to route processing based on the value of the string, for example: </p> <codeblock id="GUID-ED99681E-A4D6-5C28-854E-C8039A449FC3" xml:space="preserve">class X
+    {
+    public :
+        ...
+        void Foo( RString aString,... );
+        ...
+    }</codeblock> <codeblock id="GUID-96F761B1-5513-52DE-83E1-20537082BA01" xml:space="preserve">void X::Foo( aString,... )
+    {
+    ...
+    switch( aString )
+        {
+        case ExampleStringTable::EBanana :
+            {
+            // do something
+            }
+        case ExampleStringTable::EOrange :
+            {
+            // do something
+            }
+        ...
+        }
+    }</codeblock> </section> </conbody><related-links><link href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita"><linktext>String Pools</linktext> </link> <link href="GUID-24D509E8-CF46-58D3-85E9-27DA7AB22012.dita"><linktext>Constructing a Static String
+                Table</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A" xml:lang="en"><title>How resource
+files work</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In the Symbian platform, <xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">resource</xref> files
+are used to define UI components used in applications. The UI components consist
+of data structures that are defined in resource files, and then are loaded
+by the classes controlling the UI implementation. When UI component implementation
+is split into these two approaches, it means that resources can be recompiled,
+for example for new languages, without having to recompile the application
+code (unless you change the resource identifiers).</p>
+<p>The following resource files are typically used as source files in Symbian
+applications:</p>
+<ul>
+<li><p><codeph>.rss</codeph> – resource source files used for UI
+components in the application. For more information, see <xref href="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita">Resource
+file structure</xref>, <xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita">Required
+resource file statements</xref>, and <xref href="GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita">Optional
+resource file statements</xref>.</p>
+</li>
+<li><p><codeph>_reg.rss</codeph> – resource source file used for
+registration. For more information, see <xref href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita">Creating
+registration resource files</xref>.</p>
+</li>
+<li><p><codeph>.hrh</codeph> – resource header file used to define
+enumerated sets of values. For more information, see <xref href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita">Creating
+resource header files</xref>.</p>
+</li>
+<li><p><codeph>.rls</codeph> – localisation files used as a source
+for UI texts strings in applications, and for managing these texts. For more
+information, see <xref href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita">Internationalization
+and localization</xref>.</p>
+</li>
+</ul>
+<p>The structures and symbolic IDs of these files are used in various ways
+in your code.</p>
+<p> The resource files above are then compiled to yield the following files:</p>
+<ul>
+<li><p><codeph>.rsc</codeph> or <parmname>rNN</parmname>, where
+NN is a two number Symbian locale ID - compiled, machine-readable resource
+files used by the application</p>
+<itemgroup/>
+</li>
+<li><p><codeph>.rsg</codeph> - generated resource header file containing
+the symbolic IDs of the resources for inclusion into your code</p></li>
+<li><p><codeph> _reg.rsc</codeph> or <parmname>_reg.rNN</parmname>,
+where NN is a two number Symbian locale ID - compiled, machine-readable resource
+file used for registration </p></li>
+</ul>
+<p>The <parmname>rsc</parmname>, <parmname>rNN</parmname>, and <parmname>_reg.rsc</parmname> files
+need to be included in your <parmname>sis</parmname> <xref href="GUID-61EE2BE0-7B86-42CD-A03F-857DD8FAC246.dita">installation
+file</xref> so that they are placed in the device when the application is <xref href="GUID-3BB12D99-8CD7-47B0-A788-C85EF206806C.dita">installed</xref>.</p>
+<p>When the application framework launches an application, it loads the
+application resource file. The application framework compares the system locale
+language setting with the available resource files, and loads the resource
+file whose extension matches the locale language code. If there is no match,
+then the system loads the resource file with the extension <parmname>rsc</parmname>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232" xml:lang="en"><title>Numbered
+items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Instead of a small graphic, column A (where used separately) may contain
+a number. This can be used to indicate item numbers in lists where necessary.</p>
+<fig id="GUID-851A7651-5278-4B2D-9BFD-BEA79A1CF6BC">
+<title>Numbered list item</title>
+<image href="GUID-84C75561-E082-4EFF-89A7-901361612CCA_d0e58408_href.png" scale="40" placement="inline"/>
+</fig>
+<p>Numbered items should be used only in lists where numbers are meaningful
+and give added value. There is no specific functionality (such as shortcuts)
+that all numbered lists would have.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2B8D3611-5B97-50E7-A9DD-23626A8EFB45.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2B8D3611-5B97-50E7-A9DD-23626A8EFB45" xml:lang="en"><title>Introduction
+to active objects and the active scheduler</title><shortdesc>This document provides a short introduction to active objects and
+active schedulers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A139EAE2-5471-496C-B584-DE10D7415CD3"><title>Active objects</title> <p>An active object is a convenient
+encapsulation of the behaviour involved in making requests to an asynchronous
+service provider and handling the completion of those requests. Specifically,
+it encapsulates the service provider's request, cancel functions and the function
+which handles the completion of those requests. </p> <p>Some asynchronous
+service providers supply active object based classes as interfaces through
+which clients access them. </p> <p>An active object is an instance of a <codeph>CActive</codeph> derived
+class. </p> </section>
+<section id="GUID-73A2BF4F-AE0A-4357-AE75-EA5AA678109F"><title>The active scheduler</title> <p>An active scheduler encapsulates
+the wait loop which is at the heart of all programs using multiple asynchronous
+services. </p> <p>An active scheduler is an instance of a <codeph>CActiveScheduler</codeph> class
+or, in some circumstances, an instance of a <codeph>CActiveScheduler</codeph> <i>derived</i> class. </p> <p>Active
+objects, together with the active scheduler, provide a system of non pre-emptive
+multi-tasking which runs on a single thread. </p> <p>In Symbian platform,
+it is easier to write a system of co-operating active objects than a system
+of co-operating threads. The run-time cost of an active object is significantly
+less than that of a thread. Creating and destroying active objects is more
+efficient than creating and destroying threads. </p> <p><b>See
+also</b> </p> <p> <xref href="GUID-C0C19F93-D804-5AED-90E4-A814FA6A3732.dita">Low
+Level Asynchronous Service Handling</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2BB17FB4-07A9-52E3-A650-570A16FA771D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2BB17FB4-07A9-52E3-A650-570A16FA771D" xml:lang="en"><title>SecurityConfig
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>Symbian <i>OS Security</i> components use
+configuration files to change their run-time behaviour. The <filepath>SecurityConfig</filepath> component
+is a collection of configuration files for specific OS Security components. </p> </section>
+<section><title>Description</title> <p>The <filepath>SecurityConfig</filepath> component
+includes configuration files for specific OS Security components. The configuration
+files can be used to change the run-time behaviour of the components. </p> <p>Within <filepath>SecurityConfig</filepath>,
+the files associated with each component are stored in a directory with the
+same name as the component. For example, the configuration files for ups is
+stored in <filepath>/securityconfig/ups/</filepath>. </p> <p> <filepath>securityconfig</filepath> contains
+configuration files for the following components: </p> <table id="GUID-B586B456-17FE-51E7-BA08-35637324A208">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry> Component Name</entry>
+<entry>Description of configuration file(s)</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>ocsp</filepath>  </p> </entry>
+<entry><p>Configuration settings for checking the revocation status of the
+digital certificates which use Online Certificate Status Protocol (OCSP). </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>ups</filepath>  </p> </entry>
+<entry><p>An xml file (<filepath>backup.xml</filepath>) which backs up and
+restores the User Prompt Service (UPS) policy files. </p> <p>A package file
+for the UPS server ROM stub SIS file. Device creators must specify the UPS
+policy files on the Z drive in this package file if the policy files are to
+be upgraded post-manufacture. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>You must modify the configuration files and rebuild the <filepath>securityconfig</filepath> component
+to customise the behaviour of specific OS Security components. </p> <p><b>Build
+Dependencies </b> </p> <p>The <i>securityconfig</i> component builds or exports
+files that are used to build other components. </p> <note><ul>
+<li id="GUID-A60953AA-713A-5244-AA74-1BB0F0150D6B"><p>You must be aware of
+possible dependencies on the <filepath>securityconfig</filepath> component,
+if you are building each components separately. </p> </li>
+<li id="GUID-914F1F87-BF39-5FE7-9775-17AAE47B26D2"><p>You must build the <filepath>securityconfig</filepath> component
+before building dependent components. </p> </li>
+<li id="GUID-0BC59BF2-CCE7-551B-8BFD-C94E64354131"><p>Dependencies for the
+entire OS Security module build are handled by the build sequence in the main <filepath>bld.inf</filepath> file. </p> </li>
+</ul></note> </section>
+<section><title>Typical uses</title> <p>The <i>SecurityConfig</i> component
+provides configuration settings for customising the following: </p> <ul>
+<li id="GUID-61C0B043-B554-5D02-8F7B-7A2910AC97BC"><p> <xref href="GUID-6FCAB5DC-D3E9-5406-8B9E-E1B1CF18C73F.dita">OCSP</xref> </p> </li>
+<li id="GUID-05E8BBA5-0E16-5E0E-AAE0-AEE25AA4B5CE"><p> <xref href="GUID-6849E256-6719-5788-BCB2-7557F09AAAD0.dita">UPS</xref> </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2BC2A35E-634D-5F70-8279-C1822C0E4F3F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2BC2A35E-634D-5F70-8279-C1822C0E4F3F"><title>Geometry Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an introduction to the <codeph>TPoint</codeph>, <codeph>TSize</codeph>, <codeph>TRect</codeph> and <codeph>TRegion</codeph> basic graphics classes. </p> <p>A <codeph>TPoint</codeph> stores and provides the means for manipulating conceptual points and sizes. It consists of a pair of (x,y) co-ordinates. </p> <p>A <codeph>TSize</codeph> is described in terms of a width and height. </p> <p>A <codeph>TRect</codeph> represents a rectangle whose sides are parallel with the axes of the co-ordinate system. It is described by the co-ordinates of its top left and bottom right corners, or by its top left hand corner and its size. </p> <p>A <codeph>TRegion</codeph> consists of one or more <codeph>TRect</codeph> s. All <codeph>Draw()</codeph> functions draw to a <codeph>TRect</codeph> rather than to a <codeph>TRegion</codeph> because calculating the dimensions of a <codeph>TRegion</codeph> is too complex for the requirements of most applications. <codeph>TRegion</codeph> s are principally used when drawing sprites. </p> <p>The classes: <codeph>RRegion</codeph>, <codeph>RRegionBuf&lt;class S&gt;</codeph> and <codeph>TRegionFix&lt;class S&gt;</codeph> all derive from <codeph>TRegion</codeph>. </p> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2BD20EF8-B6B8-4A1B-8B0D-3326B839FD37.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-2BD20EF8-B6B8-4A1B-8B0D-3326B839FD37" xml:lang="en"><title>Constructing
+a dialog</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Constructing and running a dialog is quite straightforward:</p>
+<codeblock xml:space="preserve" id="GUID-E91FFC65-C45C-41F0-924F-F8ECE8F4B9AA">void CDlgappAppUi::ConstructL()
+    {
+    BaseConstructL();
+    iAppView = new (ELeave) CDlgAppMainView;
+    iAppView-&gt;ExecuteLD(R_DLGAPP_MAIN_DIALOG); // modeless
+    AddToStackL(iAppView);
+    }
+</codeblock>
+<p>Because the dialog is modeless, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikDialog.html#2bb826c038d23806445872d768e7d151" format="application/java-archive"><parmname>CEikDialog::ExecuteLD()</parmname></xref> returns
+immediately after being called. The dialog can (and must) be added to the
+control stack with the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aAddToStackL%28CCoeControl%20%2a%2cTInt%2cTInt%29" format="application/java-archive"><parmname>CCoeAppUi::AddToStackL()</parmname></xref> method, because
+modeless dialogs do not do this for themselves.</p>
+<p>The application extends the dialog just as it would normally extend
+a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view in order to achieve
+the desired functionality. For more information, see <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">Traditional
+Symbian UI application architecture</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2BF409EA-82BF-407C-B048-DA0973B7F61D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2BF409EA-82BF-407C-B048-DA0973B7F61D" xml:lang="en"><title>Optimizing
+feedback latency</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The general latency requirement for touch feedback is 30 milliseconds.
+For direct feedback it is not always possible to achieve this, as in high
+CPU load cases it may take more than 30 ms already before the pointer event
+reaches the application. </p>
+<p>However, you can also affect the latency in your application: the maximum
+additional latency for direct feedback is as long as it takes for the longest
+running <codeph>RunL</codeph> of any active object running in application’s
+thread to execute. Hence keeping all <codeph>RunL</codeph> functions short
+improves the feedback latency (and of course also improves the overall responsiveness
+of the application). </p>
+<p>Another way of improving the latency is optimizing redrawing in such a
+way that only the necessary area of the screen is drawn. </p>
+<p>For example, if there are 20 buttons in the application and one of them
+is pressed down by a pointer event, then only that button should be redrawn
+and not the whole screen. This optimization improves both direct and area
+registry based feedback, because the window server cannot receive pointer
+events from the touch driver in case it is performing a draw operation, and
+unnecessarily massive draw operations can thus have significant effect on
+the latency.</p>
+<p>Finally, it is recommended that you trigger direct feedback in <codeph>HandlePointerEventL</codeph> as
+the first thing before doing any other processing, such as redrawing.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e14680_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C17B7CA-39A3-5E2B-9B8E-239158A94F5C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2C17B7CA-39A3-5E2B-9B8E-239158A94F5C"><title>Creating Sprites and Pointer Cursors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes the steps for creating a sprite. </p> <p>When an application wants to use a sprite, it typically carries out the following steps: </p> <ul><li id="GUID-64B1FE4E-71C6-57E9-B9A2-B99695722D47"><p>Construct an <xref href="GUID-75C09150-E93B-323D-AFBF-E42C7BD78229.dita"><apiname>RWsSprite</apiname></xref>  </p> </li> <li id="GUID-58E9071A-B1FC-5A67-B6F5-0472B1D38479"><p>Construct the required number of sprite members with bitmaps, bitmap masks, and time intervals </p> </li> <li id="GUID-58FE4FE3-1F6A-5CCA-8B2F-6078CBF7C8C2"><p>Add the sprite members to the sprite using <xref href="GUID-20B1C5E7-8587-3528-9A33-C56D5C2A4C6F.dita#GUID-20B1C5E7-8587-3528-9A33-C56D5C2A4C6F/GUID-79DE992E-1A8E-3974-81BB-285F6A50A920"><apiname>RWsSpriteBase::AppendMember()</apiname></xref>  </p> </li> <li id="GUID-DCC36D98-8408-5D33-A4FB-A1FF4C8C062A"><p>Activate the sprite using <xref href="GUID-20B1C5E7-8587-3528-9A33-C56D5C2A4C6F.dita#GUID-20B1C5E7-8587-3528-9A33-C56D5C2A4C6F/GUID-016BEED8-65E2-3E88-8336-B47C092C5227"><apiname>RWsSpriteBase::Activate()</apiname></xref>. </p> </li> </ul> <p>The sprite's position can be changed after the sprite has been activated using <xref href="GUID-75C09150-E93B-323D-AFBF-E42C7BD78229.dita#GUID-75C09150-E93B-323D-AFBF-E42C7BD78229/GUID-102BCF72-8CC3-39B1-963F-7CB7CFD237A1"><apiname>RWsSprite::SetPosition()</apiname></xref>. The sprite's appearance can also be changed, using <xref href="GUID-20B1C5E7-8587-3528-9A33-C56D5C2A4C6F.dita#GUID-20B1C5E7-8587-3528-9A33-C56D5C2A4C6F/GUID-3EA4BDD1-2065-3F41-B2D4-A30CFCFCE81A"><apiname>RWsSpriteBase::UpdateMember()</apiname></xref>. </p> <p>The procedure for creating a pointer cursor is similar, except that an <xref href="GUID-6E71A7F9-E980-3D99-ACB0-6743A0D13EBF.dita"><apiname>RWsPointerCursor</apiname></xref> is constructed instead of an <codeph>RWsSprite</codeph>. </p> </conbody><related-links><link href="GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F.dita"><linktext>Sprites and Cursors</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C1DB75C-FB12-520C-85B1-57F1EDB61E3B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2C1DB75C-FB12-520C-85B1-57F1EDB61E3B"><title>Feature variants</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform can be built for multiple product configurations (variants). Each variant can include, enable or disable various features </p> <p>A variant-specific <filepath>.hrh</filepath> file is used to configure each different product. For example, the following <filepath>.hrh</filepath> files define features for products <i>phone1</i>, <i>phone2</i> and <i>phone3</i> respectively: </p> <ul><li id="GUID-42422DD8-7B13-5BE6-B28E-5FFC85630EB9"><p> <filepath>/epoc32/include/variant/Phone1.hrh</filepath>  </p> </li> <li id="GUID-90905AC6-1549-50DA-97AF-2487A6637812"><p> <filepath>/epoc32/include/variant/Phone2.hrh</filepath>  </p> </li> <li id="GUID-D1E1F60A-D4FC-5A8A-90BC-ED1CB713C601"><p> <filepath>/epoc32/include/variant/Phone3.hrh</filepath>  </p> </li> </ul> <p>The .hrh files contain macros which are used throughout the Symbian platform source. A DLL containing variant macros may be built differently for certain variants. It may also be common for certain variants. In order to identify variant DLLs, and to establish before compilation whether a variant DLL will be unique, a checksum value is calculated based on the combination of variant macros and appended to the DLL filename. If the checksum matches an existing DLL, already built for a different variant, that DLL is shared. </p> <p>For example, a <codeph>my.dll </codeph> with checksum appended appears as follows: </p> <p> <filepath>/epoc32/release/armv5/urel/my.685dfabca1f1d90889ef4ac115c01a14.dll</filepath> </p> <p>Support for variant builds is included in the Symbian platform build tool-chain as follows: </p> <ul><li id="GUID-F7967EF3-6190-570A-890D-68EAFA686FF3"><p>The configuration information specific to each product is defined in a <filepath>.var</filepath> file. The <filepath>.var</filepath> file is placed in the <filepath>/epoc32/tools/variant/</filepath> folder. For more information on <filepath>.var</filepath> file syntax, refer to <xref href="GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita">variant configuration file syntax</xref>. </p> </li> <li id="GUID-8C5B03C3-226C-55B9-9129-44E34C64456D"><p>The <filepath>.hrh</filepath> file containing the feature macro definitions is placed in the <filepath>/epoc32/include/variant/</filepath> folder, and is referred in the <filepath>.var</filepath> file. </p> </li> <li id="GUID-2795977F-E489-56F6-8BBB-70919DE92127"><p>A DLL for a variant is built by specifying the variant name on the command-line using <codeph>abld</codeph>. For example, the following <codeph>abld</codeph> command builds the DLL for the variant <b>var1</b>: </p> <p><userinput>abld build armv5.var1</userinput> </p> </li> <li id="GUID-E13C1674-38F6-582E-BE21-DD94327A6539"><p>The build tool-chain generates a checksum for each variant (including the default variant) and appends it to the DLL name. </p> </li> <li id="GUID-DF8B6409-E022-5B4B-97B0-B11738111C2B"><p> <codeph>BUILDROM</codeph> is modified to build a ROM image for a variant using the option <codeph>-DFEATUREVARIANT</codeph>. For example, the following command builds ROM image for <b>var1</b>: </p> <p><userinput>buildrom [options] –DFEATUREVARIANT=var1 &lt;obey1&gt; [&lt;obey2&gt; ...]</userinput> </p> </li> </ul> <p>If no <filepath>.var</filepath> file is specified the <filepath>default.var</filepath> file is used. The checksum will still be calculated and appended. You may avoid the checksum calculation by using the <codeph>-invariant</codeph> (or <codeph>-inv</codeph>) option with <codeph>abld</codeph>. This will build a default DLL with no checksum in the filename. If a DLL has <codeph>FEATUREVARIANT</codeph> specified in its <filepath>mmp</filepath> file, however, the <codeph>-invariant</codeph> option will be ignored. </p> <section><title>Notes</title> <ul><li id="GUID-BD7763E8-ECD4-5B1B-BBD9-0CF87E26A541"><p>The <filepath>.var</filepath> file name must be same as the variant name. </p> </li> <li id="GUID-CFD4C439-5D17-5E2C-9B28-CB60FFB3E2BB"><p>If the <filepath>.var</filepath> file does not include an <filepath>.hrh</filepath> file, the build system uses <filepath>default.hrh</filepath> in <filepath>/epoc32/include/variant/</filepath>. </p> </li> <li id="GUID-0EEDDBDF-DEC0-5F09-B2D3-9A93071641F3"><p>A DLL can be explicitly marked as a feature variant using the MMP keyword <xref href="GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita">FEATUREVARIANT</xref>. </p> </li> <li id="GUID-116CAC89-C127-5CEB-A765-2511AA6CA1F6"><p>The DLLs built for a variant are placed in the appropriate folder under <filepath>/epoc32/release/</filepath>. For example, for all urel builds of <codeph>ARMV5</codeph> variants the DLLs are stored in <filepath>/epoc32/release/armv5/urel/</filepath>. </p> </li> <li id="GUID-0DC0B280-F4FE-5A41-815A-C56DB7282DDA"><p>The <codeph>-inv</codeph> or <codeph>-invariant</codeph>  <codeph>abld</codeph> option is effective only if the DLL is not marked as feature variant explicitly. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita"><linktext>How to build feature based
+                variants</linktext> </link> <link href="GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita"><linktext>How to build ROMs with
+                variants</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35" xml:lang="en"><title>Window
+Server Component Overview</title><shortdesc>The Window Server manages the use of the screen and input devices
+by applications and controls and co-ordinates access. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4BE363E2-E630-462D-A958-721B3636792E"><title>Architecture</title> <p>The
+architecture of the Window Server varies depending on whether you are using
+the <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay (NGA)</xref> or <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref> variant.
+However, with a few exceptions, the client-side API is the same in both variants.
+Both variants use an improved version of the Window Server, sometimes known
+as <codeph>WSERV2</codeph>, which was introduced in Symbian^2 (Symbian OS
+v9.4). </p> <p>The following diagram provides an overview of the Window Server
+architecture in ScreenPlay. </p> <fig id="GUID-80DA5DEB-019E-5CE3-812E-496A1D713FFB">
+<title>              The Window Server in ScreenPlay            </title>
+<image href="GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e163553_href.png" placement="inline"/>
+</fig> <p>Below we list some of the key features of the Window Server, including
+differences between the two architectures. The term <b>surface</b> is used
+in ScreenPlay for a hardware-independent memory buffer for holding an image
+or part of a scene. The <b>UI surface</b> is a special surface onto which
+the Window Server renders all of the UI content. It is created automatically
+during system start up. An <b>external surface</b> is any other surface—for
+example, a surface that holds a video or to which OpenGL ES content is rendered. </p> <ul>
+<li id="GUID-A56D68E9-99E0-528A-9DDD-977BECE50A45"><p>The Window Server has
+a render stage framework, which enables the last stage of the Window Server
+rendering to be customizable through plug-ins called <b> render stages</b>.
+These can be chained to form a rendering pipeline, which takes the drawing
+operations that are produced by the Window Server and ultimately passes them
+to the UI surface. Render stages can selectively filter, modify, or redirect
+the draw operation stream, as required—for example, to perform transition
+effects (TFX). </p> </li>
+<li id="GUID-A6589F28-B8B5-5FBA-B241-6E526D6A9BF1"><p>In ScreenPlay, composition
+takes place in two stages. First, the render stages render the drawing to
+the UI surface. Then the composition engine combines the UI surface and any
+external surfaces into elements (sometimes called <b>layers</b>) and composes
+them to the screen. This enables the composition to be performed in software
+or hardware accelerator chips. </p> </li>
+<li id="GUID-BA8D10A1-F0CB-56F7-817B-F1425AC1DA56"><p>In the non-ScreenPlay
+variant, the concept of surfaces is not used and the Window Server composes
+directly onto the <b>frame buffer</b> which is then displayed on the screen. </p> </li>
+<li id="GUID-FC88013B-E5A4-5DD6-9906-A526D137CF43"><p>There are differences
+in the plug-in framework APIs in the two architectures. In addition, in ScreenPlay,
+fading effects are implemented by using render stages, whereas when ScreenPlay
+is not enabled they are implemented by using a separate fader plug-in type
+(not shown on the diagram). </p> </li>
+<li id="GUID-86A8FB36-B9DF-50F2-AE0B-798D717899A6"><p>In ScreenPlay, the Window
+Server provides advanced pointer features, such as support for multiple pointers
+and proximity and pressure coordinates. The non-ScreenPlay variant does not
+provide this support. </p> </li>
+<li id="GUID-46123A93-AF91-5FAB-995E-CDEAE9C8B961"><p>ScreenPlay provides
+support for externally connected displays, such as TV-out. The non-ScreenPlay
+variant considers the size of each display to be fixed. However, for High-Definition
+Multimedia Interface (HDMI) and composite video connectors, there are a range
+of resolutions that can change dynamically. ScreenPlay provides an optional
+feature that supports switching between resolutions at runtime and notifications
+to Window Server clients when there are changes to the resolution and connectedness. </p> </li>
+</ul> </section>
+<section id="GUID-2459A480-EC83-4595-97AA-D090331C9A88"><title>Building the
+ScreenPlay and non-ScreenPlay variants</title> <p>To build the ScreenPlay
+version of the Window Server components, declare the following macros in the <filepath>Symbian_OS.hrh</filepath> file. </p><codeblock xml:space="preserve">SYMBIAN_BUILD_GCE
+SYMBIAN_GRAPHICS_BUILD_OPENWF_WSERV
+</codeblock><p>This causes the ScreenPlay versions of the components in the
+Graphics package to be built in addition to the non-ScreenPlay components.
+Specifically the <codeph>SYMBIAN_BUILD_GCE</codeph> macro causes the ScreenPlay
+version of the Window Server to be built. This means that the <filepath>w32_nga.mmp</filepath> and <filepath>wserv_nga.mmp</filepath> files
+are built. These define a second macro, <codeph>SYMBIAN_GRAPHICS_GCE</codeph>,
+which causes the ScreenPlay Window Server classes to be built. </p> <p>To include the ScreenPlay versions when building
+ROM, use the <codeph>SYMBIAN_GRAPHICS_USE_GCE</codeph> flag. </p> </section>
+<section id="GUID-BEBE7D33-06C7-4B07-837E-9E67633EEFBF"><title>Selecting the
+ScreenPlay variant in the emulator</title><p>To select the ScreenPlay version
+of the component in the emulator, add the following line to the <filepath>epoc.ini</filepath> file: </p> <codeblock id="GUID-E0A64D1F-19B8-5002-8031-06E58AAE0055" xml:space="preserve">SYMBIAN_GRAPHICS_USE_GCE ON</codeblock></section>
+<section id="GUID-F13720C7-A6E1-4A3F-ACAF-10BEF6D2229F"><title>Executables</title> <p>This
+section lists the main Window Server executables. For clarity, these are divided
+into three groups. </p> <p><b>Window Server executable and client-side libraries </b> </p> <table id="GUID-E68F0783-FE52-55F3-8140-0FD527E91775">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Executable</entry>
+<entry>LIB</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>wserv_nga.exe</filepath>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>The ScreenPlay version of the Window Server. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>wserv_nonnga.exe</filepath>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>The non-ScreenPlay version of the Window Server. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>ws32_nga.dll</filepath>  </p> </entry>
+<entry><p> <filepath>ws32.lib</filepath>  </p> </entry>
+<entry><p>The Window Server client-side API library for the ScreenPlay variant.
+See <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window Server Client-Side
+Library</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>ws32_nonnga.dll</filepath>  </p> </entry>
+<entry><p> <filepath>ws32.lib</filepath>  </p> </entry>
+<entry><p>The Window Server client-side API library for the non-ScreenPlay
+variant. See <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window
+Server Client-Side Library</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>wsgraphicdrawer_nga.dll</filepath>  </p> </entry>
+<entry><p> <filepath>wsgraphicdrawer.lib </filepath>  </p> </entry>
+<entry><p>The server-side base classes for Window Server plug-ins in the ScreenPlay
+variant. The plug-ins include graphic drawer plug-ins (which are also known
+as Content Rendering Plug-ins or CRPs) and render stage plug-ins. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>wsgraphicdrawer_nonnga.dll</filepath>  </p> </entry>
+<entry><p> <filepath>wsgraphicdrawer.lib </filepath>  </p> </entry>
+<entry><p>The server-side base classes for Window Server plug-ins in the non-ScreenPlay
+variant. The plug-ins include graphic drawer plug-ins (which are also known
+as Content Rendering Plug-ins or CRPs) and render stage and fader plug-ins. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>remotegc_nga.dll </filepath>  </p> </entry>
+<entry><p> <filepath>remotegc.lib </filepath>  </p> </entry>
+<entry><p>The client-side API library for remote graphic contexts in ScreenPlay.
+Remote graphic contexts store draw operations so that they can be played back
+later. It is "remote" because the draw operations are generally played back
+in a different location from where they are stored. For example, the draw
+operations are frequently stored on the client side and then a transformation
+engine uses them on the server side to make an effect. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>remotegc_nonnga.dll </filepath>  </p> </entry>
+<entry><p> <filepath>remotegc.lib </filepath>  </p> </entry>
+<entry><p>The client-side API library for remote graphic contexts in the non-ScreenPlay
+variant. This has a similar role as in ScreenPlay. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>profilerkeys.dll </filepath>  </p> </entry>
+<entry/>
+<entry><p>Window Server profiling hotkeys library in both ScreenPlay and non-ScreenPlay
+variants. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Logging libraries </b> </p> <table id="GUID-C233B864-B909-5C00-B90A-7C78F3D02AFC">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Executable</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>dlog.dll </filepath>  </p> </entry>
+<entry><p>On-screen logging library </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>dlogfl.dll </filepath>  </p> </entry>
+<entry><p>File logging library </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>dlogrd.dll </filepath>  </p> </entry>
+<entry/>
+</row>
+<row>
+<entry><p> <filepath>dlogsr.dll </filepath>  </p> </entry>
+<entry><p>Serial logging library </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Plug-ins </b> </p> <table id="GUID-E71B0099-14D9-5C44-99FA-1DDB535EB7BF">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Executable</entry>
+<entry>Variant</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>10281922.dll</filepath>  </p> </entry>
+<entry><p>Both </p> </entry>
+<entry><p>This is a standard reference CRP. This type of plug-in is called
+a <i>CWsGraphics</i> ECOM plug-in. Device creators can replace this component. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>2001b70b.dll</filepath>  </p> </entry>
+<entry><p>Non-ScreenPlay </p> </entry>
+<entry><p>This is a prototype reference render stage ECOM plug-in for the
+non-ScreenPlay variant. This type of plug-in is called a <i>CWsPlugin</i>. </p> <p>Note:
+The ScreenPlay render stage ECOM plug-in is delivered in the Window Server
+Plugins component. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>10285c4a.dll </filepath>  </p> </entry>
+<entry><p>ScreenPlay </p> </entry>
+<entry><p>This is a reference ScreenPlay surface-based CRP. Device creators
+can replace this component. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>samplegraphicsurface.dll </filepath>  </p> </entry>
+<entry><p>ScreenPlay </p> </entry>
+<entry><p>Sample ScreenPlay CRP (<i>CWsGraphics</i>) that demonstrates placing
+a surface. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>w32stdgraphic.dll </filepath>  </p> </entry>
+<entry><p>Both </p> </entry>
+<entry><p>Sample CRP (<i>CWsGraphics</i>). </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-439B39AD-4184-4928-BF35-ABAB94A89400"><title>Typical uses</title> <ul>
+<li id="GUID-BF47989B-D205-5ED8-BBCF-44B099E15C97"><p>Application developers
+use the <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">client-side
+library</xref> to control windows in their applications and respond to key
+and pointer events. </p> </li>
+<li id="GUID-51A64C2E-C689-5765-8455-02C6350E4E88"><p>Testers and application
+developers use the <xref href="GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita">logging
+mechanism</xref> to log Window Server events when developing and testing their
+code. </p> </li>
+<li id="GUID-139581CB-1185-569E-878D-58088230CCE8"><p>Device creators create
+Content Rendering Plug-ins (CRPs) for showing customized content on the screen. </p> </li>
+<li id="GUID-75EE03DE-0F78-5114-BCB9-8DD648A7C3A3"><p>Device creators who
+use ScreenPlay, can create render stage plug-ins. These enable the output
+of the Window Server to be combined with auxiliary software subsystems (such
+as a transition effect engine) and hardware-accelerated drawing (for example,
+using OpenVG). </p> </li>
+<li id="GUID-E712A357-5797-5291-829E-C054463FD286"><p>Device creators use
+the <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini file</xref> to
+configure the Window Server to suit the specific requirements of the particular
+device. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita"><linktext>Window Server
+Component</linktext></link>
+
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9" xml:lang="en"><title> Standard C++
+Library (STLport v5)</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A Standard C++ environment with IOStream and STL (Standard Template Library)
+libraries enables you to develop or port Standard C++ applications or libraries
+quickly and easily on Symbian platform. The topics in this guide provide a
+brief overview of Standard C++ support on Symbian platform and also describe
+how to develop applications or libraries based on Standard C++. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C5D53A3-0211-5C14-BD7F-E89EB27BAD2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2C5D53A3-0211-5C14-BD7F-E89EB27BAD2A" xml:lang="en"><title>Active
+Scheduler</title><shortdesc>This document describes how active objects are queued using active
+schedulers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Where multiple asynchronous services are used by a program, a <i>wait loop</i> is
+required. </p>
+<p>The <codeph>CActiveScheduler</codeph> class encapsulates the wait loop. </p>
+<p>Nearly all threads use an active scheduler. Low-level test programs may
+have to construct their own active scheduler, but all server threads and all
+UI programs, have an active scheduler after they have initialized. If an active
+scheduler is present, active objects may be added to it and removed from it
+at will. </p>
+<p>A thread may not have more than one active scheduler. </p>
+<p>Active scheduler provides a non pre-emptive multi-tasking system, using
+which active objects run on a single thread. </p>
+<p>In Symbian platform, it is easier to write a system of co-operating active
+objects than a system of co-operating threads. The run-time cost of an active
+object is also significantly less than that of a thread. Creating and destroying
+active objects is <i>very</i> much more efficient than creating and destroying
+threads. </p>
+<p>When the active scheduler executes its wait loop, the order in which active
+objects are tested for scheduling is determined by their relative priorities.
+Most active objects should have a priority of zero and there should be an
+assumption that their relative position in the queue is irrelevant. No processing
+should ever depend on the order in which active objects are scheduled. </p>
+<section id="GUID-44BB8E7C-F310-42F5-B303-0D824AE86BA2"><title>See also</title> <p> <xref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita">Active
+objects</xref>  </p> <p> <xref href="GUID-9C36CF76-6ED2-5674-908F-A3DF8930CEB0.dita">How
+to renew a request from the active scheduler</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797"><title>SQLite technology guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides background information on the internal workings of SQLite, the database engine used by Symbian SQL. </p> <section><title>Purpose</title> <p>SQLite is a fast efficient database engine freely available to anyone to use in any way the want. The information in this document provides important background information that you will need to know in order to make the most of Symbian SQL and SQLite on Symbian OS. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-612B113B-C89E-5870-A586-F163D333A19B"><title>The Architecture and Operation of SQLite</title> <p>The figure below shows the major modules within SQLite. SQL statements that are to be processed are sent to the SQL Compiler module which does a syntactic and semantic analysis of the SQL statements and generates bytecode for carrying out the work of each statement. The generated bytecode is then handed over to a Virtual Machine for evaluation. </p> <fig id="GUID-370A849E-D1CC-5510-9211-D732C2D1DF6B"><title>
+             Simplified SQLite Architecture 
+          </title> <image href="GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e346119_href.png" placement="inline"/></fig> <p>The Virtual Machine considers the database to be a set of B-Trees, one B-Tree for each table and one B-Tree for each index. The logic for creating, reading, writing, updating, balancing and destroying B-Trees is contained in the B-Tree module. </p> <p>The B-Tree module uses the Pager module to access individual pages of the database file. The Pager module abstracts the database file into zero or more fixed-sized pages with atomic commit and rollback semantics. </p> <p>All interaction with the underlying filesystem and operating system occurs through the OS Adaptation Layer. </p> <p id="GUID-9AEF6B71-B6B6-5A83-9ED2-547BB60A6752"><b>SQL Statements as Computer Programs</b> </p> <p>A key to understanding the operation of SQLite, or any other SQL relational database engine, is to recognize that each statement of SQL is really a small computer program. </p> <p>Users of SQL database engines sometimes fail to grasp this simple truth because SQL is a peculiar programming language. In most other computer languages the programmer must specify exactly <i>how</i> a computation is to take place. But in SQL the programmer specifies <i>what</i> results are needed and lets the SQL Compiler worry about how to achieve them. </p> <p>All SQL database engines contain a SQL Compiler of some kind. The job of this compiler is to convert SQL statements into procedural programs for obtaining the desired result. Most SQL database engines translate SQL statements into tree structures. The Virtual Machine modules of these databases then walk these tree structures to evaluate the SQL statements. A few SQL database engines translate SQL statements into native machine code. </p> <p>SQLite takes an intermediate approach and translates SQL statements into small programs written in a bytecode language. The SQLite bytecode is similar in concept to Java bytecode, the parrot bytecode of Perl, or to the p-code of the UCSD Pascal implementation. SQLite bytecode consists of operators that work with values contained in registers or on a stack. Typical bytecode operators do things like: </p> <ul><li id="GUID-75B81AB2-56C8-5D76-AA4C-D2E1CBF3B868"><p>Push a literal value onto the stack </p> </li> <li id="GUID-4E4C868D-18BD-5B2C-9188-8303EEA062B7"><p>Pop two numbers off of the stack, add them together and push the result back onto the stack </p> </li> <li id="GUID-1B17CC17-D06C-5883-AC1C-768E87E60BF0"><p>Move the top element of the stack into a specific memory register </p> </li> <li id="GUID-B475E9E0-FE03-5C1F-9C2E-F35C866D53B3"><p>Jump to a specific instruction if the top element of the stack is zero </p> </li> </ul> <p>The SQLite bytecode supports about 125 different opcodes. There is a remarkable resemblance between SQLite bytecode and assembly language. The major difference is that SQLite bytecode contains a few specialized opcodes designed to facilitate database operations that commonly occur in SQL. </p> <p>Just as you do not need to understand the details of x86 or ARM7 assembly language in order to make effective use of C++, so also you do not need to know any of the details of SQLite bytecode in order to make the best use of SQLite. The reader need only recognize that the bytecode is there and is being used behind the scenes. </p> <p>Those who are interested can peruse the definitions of the bytecodes in the SQLite documentation. But the details of the various bytecodes are not important to making optimal use of SQLite and so no further details on the bytecodes will be provided in this document. </p> <p id="GUID-AFB97D35-56B8-5B12-8B6A-0AC6A4DC9088"><b>The B-Tree Module</b> </p> <p>A SQLite database file consists of one or more b-trees. Each table and each index is a separate b-tree. </p> <p>A b-tree is a data structure discovered in 1970 by Rudolf Bayer and Edward McCreight and is widely used in the implementation of databases. B-trees provide an efficient means of organizing data stored on an external storage device with fixed-sized blocks, such as a disk drive or a flash memory card. Each entry in a b-tree has a unique key and arbitrary data. The entries are ordered by their key which permits efficient lookup using a binary search. The b-tree algorithm guarantees worst-case insert, update, and access times of O(log N) where N is the number of entries. </p> <p>In SQLite, each table is a separate b-tree and each row of the table is a separate entry. The b-tree key is the RowID or INTEGER PRIMARY KEY for the row and other columns in the row are stored in the data for the b-tree entry. Tables use a variant of the b-tree algorithm call <i>b+trees</i> in which all data is stored on the leaves of the tree. </p> <p>Indexes are also stored as b-trees with one entry in the b-tree for each row of the table being indexed. The b-tree key is composed of the values for the columns being indexed followed by the RowID of the corresponding row in the table. Indexes do not use the data part of the b-tree entry. Indexes use the original Bayer and McCreight b-tree algorithm, not b+trees as tables do. </p> <p>The number of pages in a b-tree can grow and shrink as information is inserted and removed. When new information is inserted and the b-tree needs to grow, the B-Tree Module may reuse pages in the database that have fallen into disuse or it may ask the Pager module to allocate new pages at the end of the database file to accommodate this growth. When a b-tree shrinks and pages are no longer needed, the surplus pages are added to a <i>free-list</i> to be reused by future page requests. The B-Tree module takes care of managing this free-list of unused pages. </p> <p id="GUID-640FDE57-C615-55AF-9579-79B0D718A78E"><b>The Pager Module</b> </p> <p>The Pager module (also called simply “the pager”) manages the reading and writing of raw data from the database file such that reads are always consistent and isolated and so that writes are atomic. </p> <p>The pager treats the database file as a sequence of zero or more fixed-size pages. A typical page size might be 1024 bytes. Within a single database all pages are the same size. The first page of a database file is called page 1. The second is page 2. There is no page 0. SQLite uses a page number of 0 internally to mean “no such page”. </p> <p>When the B-Tree module needs a page of data from the database file, it asks for the page by number from the pager. The pager then returns a pointer to the requested data. The pager keeps a cache of recently accessed database pages so in many cases no disk I/O has to occur to fulfil a page request. </p> <p>The B-Tree module notifies the pager before making any changes to a page and the pager then saves a copy of the original page content in a rollback journal file. The rollback journal is used to restore the database to its original state if a ROLLBACK occurs. </p> <p>After making changes to one or more pages, the B-Tree Module may ask the pager to commit those changes. The pager then goes through a carefully designed sequence of steps that ensure that changes to the database are atomic. If the update process is interrupted by a program crash, a system crash, or even a power failure, the next time the database is accessed it will appear that either all the changes were made or else none of them. </p> <p id="GUID-3C970D41-7611-5AF6-B5B4-C486B5DA3875"><b>Database File Format Summary</b> </p> <p>A SQLite database file consists of one or more fixed-sized pages. The first page contains a 100-byte header that identifies the file as a SQLite database and which contains operating parameters such as the page size, a file format version number, the first page of the free-list, flags indicating whether or not autovacuum is enabled, and so forth. </p> <p>The content of the database is stored in one or more b-trees. Each b-tree has <i>root </i> page which never moves. If the table or index is small enough to fit entirely on the root page, then that one page contains everything there is to know about the table or index. But most tables and indexes require more space and additional pages must be allocated. </p> <p>The root page contains pointers (actually page numbers) to the other pages in the b-tree. So given the root page of a b-tree that implements a table or index, the B-Tree module is able to follow pointers to locate any entry in the b-tree and thus any row in the corresponding table or index. </p> <p> <b>Note:</b> auxiliary pages of a b-tree can be allocated from anywhere within the database file and so the pages numbers of auxiliary pages will change as information is added and removed from the b-tree. But the root page never moves. When a new table or index is created, its root page is assigned and remains unchanged for the lifetime of the table or index. </p> <p>Every SQLite database contains a master table which stores the database schema. Each row of the master table holds information about a single table, index, view or trigger, including the original CREATE statement that created that table, index, view or trigger. Rows that define tables and indexes also record the root page number for the b-tree that stores the table or index. The root page of the master table is always page 1 of the database file, so SQLite always knows how to locate it. And from the master table it can learn the root page of every other table and index in the database and thus locate any information in the database. </p> <p id="GUID-72EACB86-5E22-5DF1-A7E6-1233DC647867"><b>An Example of SQLite in Operation</b> </p> <p>This is what happens inside SQLite during a typical usage scenario: When the SQL server instructs SQLite to open a database, the SQLite library allocates a data structure to hold everything it will ever need to know about that database connection. It also asks the pager to open the database file, but does not immediately try to read anything or even verify that the file is a valid database. </p> <p>The first time you actually try to access the database, SQLite will look at the 100-byte header of the database file to verify that the file is a SQLite database and to extract operating parameters such as the database page size. </p> <p>After checking the header SQLite opens and reads the entire master table. Recall that the master table contains entries for every table, index, view and trigger in the database and that each entry includes the complete text of the CREATE statement that originally created the table, index, view or trigger. </p> <p>SQLite parses these CREATE statements in order to rebuild an internal symbol table holding the names and properties of all tables, indexes, triggers and views in the database schema. </p> <p>Among the values stored in the header of the database is a 32-bit <i>schema cookie</i>. The schema cookie is changed whenever the database schema is modified by creating or dropping a table, index, trigger, or view. </p> <p>When SQLite parses the database schema into its internal symbol table, it remembers the schema cookie. Thereafter, whenever SQLite goes to access the database file, it first compares the schema cookie that it read when it parsed the schema to the current schema cookie value. </p> <p>If they match, everything continues normally, but if the schema cookie has changed that means that some other thread or process may have modified the database schema. When that happens, SQLite has to throw out its internal symbol table and reread and reparse the entire database schema in order to figure out what might have changed. </p> <p> <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname> RSqlStatement</apiname></xref> ’s <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-DF9C2258-9BAA-38F0-9B11-21CD00316912"><apiname>RSqlStatement::Prepare()</apiname></xref> API is used to interface with SQLite’s SQL Compiler. The <codeph>Prepare()</codeph> API triggers tokenizing, parsing, and compilation of a SQL statement into the internal bytecode representation that is used by the Virtual Machine. The generated bytecode is stored in an object returned by SQLite often referred to as a <i>prepared statement</i>. </p> <p>After compiling a SQL statement into a prepared statement you can pass it to the Virtual Machine to be run. This is the job of <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> ’s <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-C8BBAAA8-0468-3330-B601-391443C1C410"><apiname>RSqlStatement::Next()</apiname></xref> and <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-52E3CE72-D495-388F-8829-952E32F0F37D"><apiname>RSqlStatement::Exec()</apiname></xref> APIs. These interfaces cause the bytecode contained in the prepared statement to be run until it either completes or until it hits a breakpoint. </p> <p>A breakpoint is hit whenever a SELECT statement generates a row of result that needs to be returned. When a breakpoint is hit SQLite returns control to the caller. </p> <p>The bytecode in a prepared statement object is such that whenever a breakpoint occurs, a single row of the result of a SELECT statement is contained on the stack of the Virtual Machine. At this point column accessor functions can be used to retrieve individual column values. </p> <p> <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-816FB769-9747-3D36-A94F-BC1DA0BF59D1"><apiname>RSqlStatement:: Reset()</apiname></xref> can be called on a prepared statement at any time. This rewinds the program counter of the Virtual Machine back to the beginning and clears the stack, thus leaving the prepared statement in a state where it is ready to start over again from the beginning. </p> <p> <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname> RSqlStatement</apiname></xref> ’s <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-916A5F7B-9B00-31D9-A945-075353D3915E"><apiname>RSqlStatement::Close()</apiname></xref> API is merely a destructor for the prepared statement object. It calls <codeph>Reset()</codeph> to clear the virtual machine stack if necessary, deallocates the generated bytecode, and frees the container object. </p> <p>Similarly, <xref href="GUID-F3D1D883-6212-3276-9C1F-131A61F2B425.dita"><apiname>RSqlDatabase’</apiname></xref> s <codeph>Close()</codeph> API is just a destructor for a server-side object created by SQLite when the database was opened. SQLite asks the pager module to close the database file, clears the symbol table, and deallocates all associated memory. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE.dita"><linktext>Persistent Storage</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C68AC8D-6767-5865-B684-CB627C20C6DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2C68AC8D-6767-5865-B684-CB627C20C6DC"><title>prj_testmmpfiles</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>prj_testmmpfiles</codeph> </p> <p><varname>mmp_file_1</varname>  <codeph>
+             [tidy] [manual]
+     [support]</codeph>  </p> <p><varname>mmp_file_1</varname> <codeph> [tidy] [manual]
+     [support]</codeph> </p> <p><codeph>makefile</codeph>  <varname>makefile_1</varname>  <codeph>[tidy] [manual]
+     [support]</codeph> </p> <p><codeph>makefile</codeph>  <varname>makefile_n</varname>  <codeph>[tidy] [manual]
+     [support]</codeph> </p> <p>In the <codeph>prj_testmmpfiles</codeph> section, list the <filepath>.mmp</filepath> files contained in your component which define test programs. </p> <p>This section for test <filepath>.mmp</filepath> files has the same syntax as the section for standard <filepath>.mmp</filepath> files, except that two extra <filepath>.mmp</filepath> file attributes are provided: the <codeph>manual</codeph> and <codeph>support</codeph> attributes.</p> <p>If any such tests are listed, <codeph>bldmake
+     bldfiles</codeph> can create batch files for running the test programs for your component. </p> <ul><li id="GUID-22B228DE-4F18-584E-9132-C796C3954D81"><p>For <i>automatic</i> tests, which can be run without any user-intervention, do not specify either attribute.</p> </li> <li id="GUID-14AE493F-29E3-5C07-A1E5-D77405F91DB2"><p>For <i>manual</i> tests, which require user-input in order for them to complete successfully, specify the <codeph>manual</codeph> attribute.</p> </li> <li id="GUID-8F8031D1-13D4-558E-90C1-23A4585E46B6"><p>Specify the <codeph>support</codeph> attribute if the test should not to be included in a batch file.</p> </li> </ul> <p>For each platform, two batch files are created in the <filepath>bldmake</filepath> output directory for your component:</p> <ul><li id="GUID-6ABD5401-5032-52F6-810B-5FDA013DFB5B"><p> For <i>automatic</i> tests, a batch file called <varname>platform-name</varname> <filepath>.auto.bat</filepath> is created.</p> </li> <li id="GUID-FCADEDCF-0F8A-586C-908E-9F0F04D8BEC4"><p>For <i>manual</i> tests, a batch file called <varname>platform-name</varname> <filepath>.manual.bat</filepath> is created.</p> </li> </ul> <p>Note that, in order for the releasable test to be invoked successfully, the basename of the <filepath>.mmp</filepath> file must be the same as the basename of the releasable specified with the <codeph>target</codeph> statement in the <filepath>.mmp</filepath> file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-2C74E932-B1CA-434B-AF96-66D52D689620" xml:lang="en"><title>Optional
+resource file statements</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The resource file statements documented in the following statements
+are optional: you only need to create resource file statements for the UI
+components used by your application for which you do not use the default implementation.</p>
+<p>For more information on resource statements for these components, see:</p>
+<ul>
+<li><p><xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA buttons</xref></p>
+</li>
+<li><p><xref href="GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita">Menu
+bar resource statements</xref></p>
+</li>
+<li><p><xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita">View
+resource statements in the view architecture</xref></p>
+</li>
+<li><p><xref href="GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita">UI components</xref></p>
+<itemgroup>
+<p>Building an Avkon-based application UI is a primary choice for third-party
+add-on applications that do not need advanced customization. Such an approach
+guarantees compatibility across different Series 60 Developer Platform editions,
+but, in turn, puts some limitations on the application UI layout imposed by
+Avkon. Avkon provides a wide choice of well-designed and versatile components,
+but not all of these are easily modifiable.</p>
+<note>
+<p>Avkon or Avkon-derived components should be favoured over custom <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived controls. Avkon UI components <xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">scale</xref> automatically
+according to screen resolution and orientation.</p>
+</note>
+<ul>
+<li><p>Dialogs API</p></li>
+<li><p>Editors API</p></li>
+<li><p>Forms API</p></li>
+<li><p>Grids API</p></li>
+<li><p>Lists API</p></li>
+<li><p>Notes API</p></li>
+<li><p>Setting Pages API</p></li>
+</ul>
+</itemgroup>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C767F68-2150-55C1-B801-AB6EB58FD97C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2C767F68-2150-55C1-B801-AB6EB58FD97C"><title>Storing and restoring protocol</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Storing a compound object, which contains other objects, is more difficult than storing a non compound object. Component objects must be stored first, followed by the containing object. </p> <p>As part of the process of storing components, one or more head streams are created, with corresponding stream IDs. A store map is used to hold the associations between the in-memory component objects and their associated stream IDs.</p> <p>The protocol for storing a compound object can be summarized:</p> <ol id="GUID-70E52B4C-3E5B-575F-8ACC-462378D67629"><li id="GUID-4249A5BD-91A9-53C2-8976-591EEECB66D8"><p>construct a store map</p> </li> <li id="GUID-13A15193-1455-57A6-A30D-BC3C523E51A4"><p>store the components, and store their pointer/stream ID associations in the store map</p> </li> <li id="GUID-15CE3B31-15F2-5978-A0DA-114D148E0068"><p>store the containing object, using the store map to store the stream IDs of its components)</p> </li> <li id="GUID-84B0D752-546A-5133-89DD-0FDF86FF465E"><p>delete the store map.</p> </li> </ol> <section><title>See also</title> <p><xref href="GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21.dita">Store map</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C7AF56F-F741-5C9B-83B9-46C175330ED1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2C7AF56F-F741-5C9B-83B9-46C175330ED1" xml:lang="en"><title>Safe
+data access</title><shortdesc>Describes how the parameters that are passed to the descriptors
+are checked to ensure the they are not accessing illegal data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The parameters that are passed to descriptor functions which access or
+operate on data, are checked to ensure that those operations are correctly
+specified and that no data outside the data area represented by the descriptor
+is accessed or changed.</p>
+<p>It is the programmer’s responsibility to ensure that all accesses to descriptor
+data are within bounds and that descriptors are sufficiently large to contain
+their data, either by making the original allocation large enough at program
+compile time or by dynamically allocating the descriptor at run-time.</p>
+<p>An illegal data access raises an exception, known as a panic, causing immediate
+program termination. In this event, it can be assumed that no illegal access
+of memory has taken place and that no data has been moved or damaged.</p>
+<p>The Format() function which operates on descriptor data is the only case
+where a program is offered the opportunity to handle a potential exception.</p>
+<section id="GUID-6C0DFCF4-2742-4F07-A161-A1A23879F99F"><title>See also</title> <p><xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita#GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507/GUID-EE7DBF18-A16C-3983-924F-20C1907E7AAA"><apiname>TDes8::Format()</apiname></xref> </p> <p><xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita#GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD/GUID-F3ED8A38-74C5-3C4D-AEAF-B405A0C5807D"><apiname>TDes16::Format()</apiname></xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC"><title>Chunk Method to Process Emails</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the chunk method to process email messages. </p> <p>From Symbian OS v9.4 onwards, POP3 and IMAP email MTMs can use the plain text format for storing email messages (in addition to rich text format). The entire email message is not created in the RAM. Only chunks of the message are stored in the RAM at a time, as writing or reading is done asynchronously. This decreases RAM usage and increases the performance of downloading and storing email messages. </p> <p>The <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> class is modified with the following APIs to enable chunk method: </p> <ul><li id="GUID-05C1BD14-71AF-5C19-B102-CBA638F42387"><p> <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref>  </p> </li> <li id="GUID-0D8AC776-1B7F-53A0-A3F1-0BC5160AA301"><p> <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref>  </p> </li> </ul> <section><title>Description</title> <p>A chunk is a substantial amount of an encapsulated email message that is processed in plain text format. The following table provides the default chunk size value that you can have for POP, IMAP, and SMTP. </p> <table id="GUID-039DB124-DF1F-5362-A515-2DD70CF05F70"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Protocol</entry> <entry>Default chunk size</entry> </row> </thead> <tbody><row><entry><p>POP </p> </entry> <entry><p>2000 bytes </p> </entry> </row> <row><entry><p>IMAP </p> </entry> <entry><p>20480 bytes </p> <p>You can modify this value using the <xref href="GUID-C3A55E4C-EA56-35E9-A522-7570161FEA54.dita"><apiname>KImapDefaultFetchSizeBytes</apiname></xref> parameter. </p> </entry> </row> <row><entry><p>SMTP </p> </entry> <entry><p>2000 bytes </p> </entry> </row> </tbody> </tgroup> </table> <p>The chunk method enables you to limit the need for outbound buffering of an email message in RAM on the client side. It modifies (breaks) the body of a message in order to transfer it as a series of chunks. Each chunk contains a size indicator, followed by a flag that contains entity-header fields, which can be used by the recipient to verify if the email message received is complete or partial. </p> <p>The method of processing email messages in chunks (plain text format) is provided in addition to processing email messages in rich text format. Licensees can choose the type of configuration to store and/or restore email messages. If this mechanism is not configured, email messages are stored and/or restored in the rich text format. </p> </section> <section><title>Configuring the IMCM.rss file</title> <p>Set the <codeph>store_plain_body_text</codeph> field to any of the following values at the client-side. This value is used to configure the IMAP and POP3 MTMs to decide the type of storage to be used for storing email messages. </p> <ol id="GUID-6FB0DAA4-3AD6-5227-A38F-877E27AB4C4F"><li id="GUID-E962A61B-4862-5190-AABA-F7D35A6906E8"><p>Locate the <filepath>IMCM.rss</filepath> file at the <filepath>messaging\email\clientmtms\group</filepath> location. </p> </li> <li id="GUID-DE8D48DD-2090-5A92-860D-31954E2B6C23"><p>Set the value of the <codeph>store_plain_body_text</codeph> field to any of the following values: </p> <table id="GUID-C0497074-D326-5DF7-AF7B-7CA370C5676D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Value</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>1</codeph>  </p> </entry> <entry><p>To store the body text of an email message in chunks when messages are downloaded through IMAP and POP3. </p> <p>This is the default value. </p> </entry> </row> <row><entry><p> <codeph>0</codeph>  </p> </entry> <entry><p>To store the entire body text of an email message in the RAM when messages are downloaded through IMAP and POP3. </p> </entry> </row> </tbody> </tgroup> </table> </li> </ol> </section> </conbody><related-links><link href="GUID-6FE94423-9563-5F31-95EB-504479144B05.dita"><linktext>Storing and Restoring Email Messages in Chunks
+                </linktext> </link> <link href="GUID-9A3E0279-4F87-594D-A987-66DC77F408A0.dita"><linktext> Creating and Reading Emails in Chunks </linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e303784_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9"><title>Viewfinder</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial introduces you to the Viewfinder functionality of the Ecam component. </p> <section><title>Purpose</title> <p>This document describes the various APIs used with Viewfinder. </p> <p><b>Introduction</b> </p> <p>The viewfinder classes provides the support for multiple direct and client viewfinder. The image adjustment features such as histograms, image processing and direct snapshot can be used specifically for a given direct viewfinder. Client can get specific histogram or image processing object for client viewfinder. </p> <p>The viewfinder can directly transfer frames from a camera to the display memory. If supported, the client can also implement viewfinder functionality by itself using image data returned in call-backs. </p> <p>Enabling mirroring flips the image horizontally. Devices that allow the user to view themself can then be used as a virtual mirror. The viewfinder should be able to run simultaneously with video or image capture. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>If video or image capture preparation puts the camera into a mode that has an effect on the viewfinder aspect ratio and size, then the recent successful prepare should determine the context for viewfinder operation. </p> <p>It is expected that the viewfinder aspect and size follow the settings in the last image or video prepare call. Multiple viewfinders may run at the same time by the use of new extension classes: <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita"><apiname>CcameraV2DirectViewFinder</apiname></xref> and <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita"><apiname>CcameraClientViewFinder</apiname></xref>. </p> <p>A new instance of these classes needs to be created for every new viewfinder. Dedicated observers: <xref href="GUID-05EEF6CC-E007-348C-8643-AA02D634F90C.dita"><apiname>MdirectViewFinderObserver</apiname></xref> and <xref href="GUID-C4F40144-7132-309A-B648-E366786B4DE4.dita"><apiname>MclientViewFinderObserver</apiname></xref> provide viewfinder related call-backs to the client. Client should implement these observers. </p> <p><b>Types of Viewfinder</b> </p> <p>The client starts a viewfinder, when the camera is powered-on. There are two types of viewfinder. </p> <ul><li id="GUID-6737C827-D2C3-57A1-AE74-F4318DF4E12C"><p> <b> Direct viewfinder</b>  </p> <p>The viewfinder frames are displayed directly to the screen. </p> <p>If the client uses class <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-5E76AB90-FE62-37B2-BAAE-A39EA6CE51DA"><apiname>CCamera::CCameraV2DirectViewFinder</apiname></xref> to start the direct viewfinder, it must implement the observer <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita"><apiname>MDirectViewFinderObserver</apiname></xref> to receive relevant callbacks. For example, a client can identify when the first direct viewfinder frame has been displayed on the screen through callback <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-163D5092-A013-3477-8459-CEC9FFF1EDBA"><apiname>MDirectViewFinderObserver::DirectViewFinderFirstFrameDisplayed()</apiname></xref>. </p> </li> <li id="GUID-C98250AB-FAD8-5444-B420-C9008B96E147"><p> <b> Client viewfinder</b>  </p> <p>The viewfinder frames are sent back to the client through <xref href="GUID-2E8D5B41-2E0F-3296-AC3B-762C9E94C66B.dita"><apiname>McameraOberver2</apiname></xref> notification. Client is responsible for displaying the images to the screen. </p> <p>If the client uses class <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC"><apiname>CCamera::CCameraClientViewFinder</apiname></xref> to start client viewfinder, it must implement the observer <xref href="GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1.dita"><apiname>MClientViewFinderObserver</apiname></xref> and get the viewfinder data through related callbacks, such as <xref href="GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1.dita#GUID-E88979A4-EC0E-3198-8474-38711C8CA5D1/GUID-E42D2312-4D77-3F1E-86D6-64E5C1C274E7"><apiname>MClientViewFinderObserver::ViewFinderBufferReady()</apiname></xref>. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita">Overview</xref> of Viewfinder API </p> <p>The <xref href="GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C.dita">Direct Viewfinder</xref> Tutorial </p> <p>The <xref href="GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4.dita">Client Viewfinder</xref> Tutorial </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2" xml:lang="en"><title>Standard
+C++ Support on Symbian Platform</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the Standard C++ runtime features supported on Symbian^3. </p>
+<ul>
+<li id="GUID-F620B47D-35A9-54DF-89FC-031C3B3A50D4"><p><xref href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita#GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2/GUID-B44FDC08-487F-589B-8355-CF6EAB3F25BC">Global operator new</xref>  </p> </li>
+<li id="GUID-2BF296E4-1204-599D-889B-46CD0FEFCC52"><p><xref href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita#GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2/GUID-ED64EEBA-A52D-5008-8F5F-11019BC5B1E2">new_handler</xref>  </p> </li>
+<li id="GUID-E53A2527-BF8A-5578-AF29-B4E1862E958E"><p><xref href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita#GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2/GUID-FEC1BFE6-0219-5EE8-93D1-C0D5BCFA8A26">Global object destruction</xref>  </p> </li>
+<li id="GUID-303ADDE1-83D6-5449-B508-6C6DBD7DDFC9"><p><xref href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita#GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2/GUID-1D9D2701-FD3E-57D1-952B-FB8C057FE055">STL</xref>  </p> </li>
+</ul>
+<section id="GUID-B44FDC08-487F-589B-8355-CF6EAB3F25BC"><title>Global operator
+new</title> <p>In Standard C++, when dynamic memory allocation (using <codeph>operator
+          new</codeph>) fails and if a handler is not set to handle it, the
+code throws an exception (<codeph>std::bad_alloc</codeph>). But in Symbian
+C++, when dynamic memory allocation fails, the code returns <b>NULL</b>. </p> <p>When
+you write Standard C++ code on Symbian C++ ensure that you either use Symbian
+C++ semantics of operator new or Standard C++ semantics of operator new in
+your code. You can use the global <codeph>operator new</codeph> as per the
+Standard C++ specification on Symbian platform by either: </p> <ul>
+<li id="GUID-3E72A8F5-F68B-5454-8F20-67CC53FDC37F"><p>Building your application
+or library using the STD target type. </p> </li>
+<li id="GUID-40D77F25-4EE4-578A-B51E-451F7655CBA6"><p>Using the <codeph>MMP</codeph> keyword, <codeph>STDCPP</codeph>. </p> </li>
+</ul> <p> <b>Note:</b> For detailed information about problems that can occur
+while using the global <codeph>operator new</codeph>, see <xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-39350E32-26C2-5440-B221-10EE693CCF18">Use of operator new</xref>. </p> <p> <b>Warning:</b> The Symbian build system
+does not permit you to mix the Standard C++ <codeph>operator new</codeph> and
+the Symbian C++ <codeph>operator new</codeph>. </p> <p><b>Example</b> </p> <p>The
+following example code illustrates how to use the global <codeph>operator
+new</codeph> when you write Standard C++ code on Symbian platform and your
+target type is a non-STD target type, for example, <codeph>exe</codeph>. </p> <p>You
+must add the <codeph>MMP</codeph> keyword, <codeph>STDCPP</codeph> in the <filepath>.mmp</filepath> file
+as shown in the following code: </p> <codeblock id="GUID-400432AB-79A2-5F17-9F96-22209524BC84" xml:space="preserve">//operator_new_example.mmp
+Target             operator_new_example.exe
+Targettype        exe
+//The STDCPP keyword specifies Standard C++ 
+STDCPP
+Source            operator_new.cpp
+Systeminclude        /epoc32/include/stdapis/stlportv5
+Systeminclude        /epoc32/include/stdapis
+Library            libstdcppv5.lib libc.lib
+Capability        all -tcb</codeblock> <codeblock id="GUID-D3F3E4C0-D08A-5498-89A8-87A70CC02FD3" xml:space="preserve">//operator_new.cpp
+#include &lt;new&gt;
+int main()
+    {
+    try
+        {
+        int *ptr = new int(0);
+        //do something
+        }
+    catch(std::bad_alloc)
+        {
+        return 1;
+        }
+    delete ptr;
+    return 0;
+    }</codeblock> </section>
+<section id="GUID-ED64EEBA-A52D-5008-8F5F-11019BC5B1E2"><title>new_handler</title> <p>The
+new_handler() function of Standard C++ is fully supported on Symbian platform
+(the global <codeph>operator new</codeph> restrictions are applicable). You
+can use the new_handler function to handle an out of memory scenario caused
+by the global <codeph>operator new</codeph> when dynamic memory allocation
+fails. </p> <p>The following code illustrates how to set and invoke a <codeph>new_handler</codeph>: </p> <codeblock id="GUID-E1CD4479-99AF-5547-B350-00699CD2788D" xml:space="preserve">#include &lt;new&gt;
+int one_huge_chunk = 0xa000;
+int *last_huge_chunk=NULL;
+void foo()
+    {
+    /*
+    * This is the new_handler and it frees the last successful allocation so
+    * that the subsequent call to operator new has some free memory.
+    */
+    delete [] last_huge_chunk;
+    }
+void bar()
+    {
+    last_huge_chunk    = new int[one_huge_chunk];
+    }
+int main()
+    {
+    std::new_handler h_new;
+    try
+        {
+        while(1)
+            {
+            // Keep allocating until we reach OOM (out of memory) condition. At OOM
+            // the default new handler throws std::bad_alloc
+            bar();
+            }
+        }
+    catch(std::bad_alloc ba)
+    {
+    /*
+    * Once the handler is set, failure of 'new' will call the handler to
+    * get some free memory... 
+    */
+    h_new = (std::new_handler)&amp;foo;
+    try
+        {
+        /*
+        * Try once more to see if our handler actually freed up some memory
+        */
+        bar();
+        }
+    catch(...)
+        {
+        }
+    return 0;
+    } 
+    /*Failed to throw std::bad_alloc*/
+    return 1;
+    }</codeblock> <p> <b>Important Note:</b> The <codeph>targettype</codeph> of
+this executable must either be <codeph>STDEXE</codeph> /<codeph>STDDLL</codeph> or
+its <filepath>.mmp</filepath> file must use the <codeph>STDCPP</codeph> keyword. </p> </section>
+<section id="GUID-FEC1BFE6-0219-5EE8-93D1-C0D5BCFA8A26"><title>Global object
+destructors</title> <p>Global objects are supported both in a statically or
+dynamically loaded Standard C++ DLL. Their constructors are invoked when the
+DLL is loaded and their destructors are invoked when the reference count of
+the DLL falls to zero. </p> <p><b>Example</b> </p> <p>The following example
+illustrates the construction and destruction of a global object: </p> <codeblock id="GUID-75012329-3172-5B99-833B-24C2FB658FFF" xml:space="preserve">// glob_data.cpp
+#include &lt;iostream&gt;
+// class definition
+class AClass
+    {
+    AClass()
+        {
+        std::cout &lt;&lt; “ctor()” &lt;&lt; std::endl; // inline constructor
+        }
+    ~AClass()
+        {
+        std::cout &lt;&lt; “dtor()” &lt;&lt;std::endl; // inline destructor
+        }
+    };
+AClass GlobData; // global instance of AClass
+int main()
+    {
+    std::cout &lt;&lt; “main()” &lt;&lt; std::endl;
+    }</codeblock> <p>The output of this example must be: </p> <codeblock id="GUID-0AB81D7E-B310-5CEA-86DD-65E697F4D2C2" xml:space="preserve">ctor
+main
+dtor</codeblock> </section>
+<section id="GUID-1D9D2701-FD3E-57D1-952B-FB8C057FE055"><title>STL</title> <p>Here
+are some key facts about STL support on Symbian platform: </p> <ul>
+<li id="GUID-F0FCA9CA-7417-5D07-A6AA-F679B3A3A41A"><p>The Standard C++ implementation
+on Symbian platform is based on STLPort version 5.1.4. </p> </li>
+<li id="GUID-FB97F095-533F-582D-BD28-667D1BD6863A"><p>The Standard C++ header
+files are available in the <filepath>${EPOCROOT}/epoc32/include/stdapis/stlportv5</filepath> directory. </p> </li>
+<li id="GUID-F6381C75-4C30-5627-8AAA-7D8F1FF53565"><p>The Standard C++ library
+name that you must use is <filepath>libstdcppv5.lib</filepath>. The value
+5 (in the library name) being based on the STL Port version number, which
+is 5. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright
+Acknowledgments for Standard C++ (STLport)</linktext></link>
+<link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard
+C++ Library Overview</linktext></link>
+<link href="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita"><linktext> Developing
+Applications or Libraries                 Using Standard C++</linktext></link>
+<link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building
+a Standard C++ Application or Library</linktext></link>
+<link href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita"><linktext>Possible
+Problems</linktext></link>
+<link href="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita"><linktext>Troubleshooting</linktext>
+</link>
+<link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2CE8544C-470C-5693-8ED6-27B01DD9548B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2CE8544C-470C-5693-8ED6-27B01DD9548B"><title>How to parse a pathname</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Retrieving individual components</title> <p>The following code fragment shows how the individual components are extracted using the <codeph>TParseBase</codeph> functions:</p> <codeblock id="GUID-B1605907-E17B-57F6-B9BB-8D977E02376A" xml:space="preserve">_LIT(KPath,"c:\\wrd\\meeting.wrd");
+...
+TParse p;
+p.Set(KPath,NULL,NULL);
+p.Name();       // gives "meeting"
+p.NameAndExt(); // gives "meeting.wrd"
+...</codeblock> </section> <section><title>Component masking</title> <p><codeph>TParse</codeph> can be used to select components from different file and path specifications. The <codeph>Set()</codeph> function takes three arguments. They are each parsed into four components: drive, path, filename and extension.</p> <p>The example below sets up the <codeph>TParse</codeph> object so that it can be used to yield useful information.</p> <codeblock id="GUID-14D77BE2-C607-5018-A9B5-E7E4A54FB0F1" xml:space="preserve">_LIT(KSpec,"A:file1");
+_LIT(KRelated,"C:\\path1\\related.xxx");
+TParse fp;
+fp.Set(KSpec,&amp;KRelated,NULL);</codeblock> <table id="GUID-31958460-AEB8-5876-806B-08982A62FE97"><tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><tbody><row><entry/><entry><p>drive</p> </entry> <entry><p>path</p> </entry> <entry><p>filename</p> </entry> <entry><p>extension</p> </entry> </row> <row><entry><p>file specification</p> </entry> <entry><p><filepath>A:</filepath> </p> </entry> <entry/><entry><p><filepath>file1</filepath> </p> </entry> <entry/></row> <row><entry><p>related name</p> </entry> <entry><p><filepath>C:</filepath> </p> </entry> <entry><p><filepath>\path1\</filepath> </p> </entry> <entry><p><filepath>related</filepath> </p> </entry> <entry><p><filepath>.xxx</filepath> </p> </entry> </row> <row><entry><p>default name</p> </entry> <entry/><entry/><entry/><entry/></row> <row><entry><p>result</p> </entry> <entry><p><filepath>A:</filepath> </p> </entry> <entry><p><filepath>\path1\</filepath> </p> </entry> <entry><p><filepath>file1</filepath> </p> </entry> <entry><p><filepath>.xxx</filepath> </p> </entry> </row> </tbody> </tgroup> </table> <p>The resulting <codeph>fp.fullname</codeph> will be <codeph>A:\path1\file1.xxx.</codeph> All the components that are specified in the file specification (drive and filename) are put into the result; any missing components (path and extension) are taken from the related file specification which has next order of precedence; nothing is specified in the default.</p> <p>The second example shows how wildcards are allowed in the filename and extension.</p> <codeblock id="GUID-17D1D396-FC67-5097-9165-B159F549BFC1" xml:space="preserve">    TParse fp;
+    _LIT(KSpec,"A:file1");
+    _LIT(KDefault,"C:\\path1\\*.*");
+    fp.Set(KSpec,NULL,&amp;KDefault);</codeblock> <table id="GUID-9CEADC99-16FE-50FD-B401-AB595B91D48C"><tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><tbody><row><entry><p>  </p> </entry> <entry><p>drive</p> </entry> <entry><p>path</p> </entry> <entry><p>filename</p> </entry> <entry><p>extension</p> </entry> </row> <row><entry><p>file specification</p> </entry> <entry><p><filepath>A:</filepath> </p> </entry> <entry/><entry><p><filepath>file1</filepath> </p> </entry> <entry/></row> <row><entry><p>related filename</p> </entry> <entry/><entry/><entry/><entry/></row> <row><entry><p>default filename</p> </entry> <entry><p><filepath>C:</filepath> </p> </entry> <entry><p><filepath>\path1\</filepath> </p> </entry> <entry><p><filepath>*</filepath> </p> </entry> <entry><p><filepath>.*</filepath> </p> </entry> </row> <row><entry><p>result</p> </entry> <entry><p><filepath>A:</filepath> </p> </entry> <entry><p><filepath>\path1\</filepath> </p> </entry> <entry><p><filepath>file1</filepath> </p> </entry> <entry><p><filepath>.*</filepath> </p> </entry> </row> </tbody> </tgroup> </table> <p>The resulting <codeph>fp.fullname</codeph> will be <codeph>A:\path1\file1.*</codeph> </p> <p><b>Parsing with reference to the session default directory</b> </p> <p><codeph>TParse</codeph> operations occur without reference to the file server. Two <codeph>RFs::Parse()</codeph> functions perform a <codeph>TParse::Set()</codeph> using the session path as the <codeph>aDefault</codeph> argument : one of these variants specifies an <codeph>aRelated</codeph>, the other does not. Use these <codeph>RFs::Parse()</codeph> functions to parse filenames with reference to the session path.</p> </section> <section><title>Wildcard characters</title> <p>The <codeph>?</codeph> and <codeph>*</codeph> wildcard characters are supported to indicate a single character, and any sequence of characters. Both wildcard characters can be used any number of times in any part of any component of the file specification, except the drive. Although there is no intention that these will ever change, they are defined as the constants <codeph>KMatchOne</codeph> and <codeph>KMatchAny</codeph>.</p> </section> <section><title>Illegal paths</title> <p>The following restrictions apply to path components. If any are violated, <codeph>TParse</codeph> will return <codeph>KErrBadName</codeph>: </p> <ul><li id="GUID-A1BF9F97-F77C-54D1-AF22-EDB4E06699B6"><p>a path component which is followed by a trailing backslash must also be preceded by a backslash. For example, the following code will return an error because <filepath>DIR\</filepath> is neither a directory nor a file.</p> </li> </ul> <codeblock id="GUID-C7988B04-ECA0-5BED-B90E-2415C66F141B" xml:space="preserve">_LIT(KText,"DIR\\");
+...
+TInt r=parse.Set(KText,NULL,NULL);</codeblock> <ul><li id="GUID-8B2C6A24-A7AD-5210-8B33-F4E4C328BA57"><p>the length of any component (and the total path length) must not exceed 256 characters</p> </li> <li id="GUID-A10B9251-BF06-5FB3-A74F-E2E9F2B9A0EE"><p>spaces between the drive and the first directory in the path are illegal, although there may be spaces between other path components, for instance between the path or drive and filename, or within path components. The following code will return an error:</p> </li> </ul> <codeblock id="GUID-7036B814-8A5F-549F-B580-13383E424B20" xml:space="preserve">_LIT(KBadText,"C: \\DIR\\");
+...
+r=parse.Set(KBadText,NULL,NULL);</codeblock> <ul><li id="GUID-83462E03-77BF-5692-90AF-729ACE4B7C8E"><p>when using <codeph>TParse::SetNoWild()</codeph> no wildcard character may be present in the filename or extension.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F"><title>Camera Plug-in Overview</title><shortdesc>This document introduces you to the Camera Plug-in component overview. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Camera Plug-in component provides an actual implementation for the Camera Framework component. </p> </section> <section><title>Required background</title> <p>The Camera Plug-in component is implemented with the support of <filepath>EcamPluginSupport.dll</filepath>. It is expected that device creators can replace their own Camera Plug-in implementation. </p> <p> </p> </section> <section><title>Architecture</title> <p>The Camera Plug-in component interacts with the Camera Framework component. </p> <p>The architectural relationship between Camera Plug-in and Camera Framework is shown below: </p> <fig id="GUID-4CF11342-2015-59FC-9DFA-6656077D1869"><title>
+             Camera Plug-in Component Architecture 
+          </title> <image href="GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e301630_href.png" placement="inline"/></fig> </section> <section><title>APIs</title> <p>The Camera Plug-in component consists of the following library: </p> <table id="GUID-E6B4D190-F26D-54DD-9DDD-B927158C5868"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <filepath>ecamstubplugin.lib</filepath>  </p> </entry> <entry><p>The Camera Stub Plug-in library is used to support the <filepath>EcamPluginSupport.dll</filepath> which is in the Camera Framework component. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>Camera Plug-in is used as a symbian support implementation for the Camera Framework Ecom plug-ins. </p> </section> </conbody><related-links><link href="GUID-A721FC4A-03C6-59F7-A0D2-565C4828E5E1.dita"><linktext>Camera Stub Plug-in
+                Overview</linktext> </link> <link href="GUID-B4C8B3D8-0272-577D-A669-C0AE84D035B4.dita"><linktext>Camera Plug-in Support</linktext> </link> <link href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita"><linktext>Camera
+                Framework Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2CF4F12C-DF30-43EB-BD3D-A6AF8BAB407A_d0e54988_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952"><title>Setting Video Metadata</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to set video metadata. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to set and retrieve metadata entries for a video clip. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video recorder utility is used to record video clips to files, descriptors or URLs and manipulate embedded meta data. This functionality is implemented by the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> class. </p> </section> <section id="GUID-2E99CC17-7CBB-5591-AA32-C4875ACDEDF1"><title>Using Video Metadata </title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-F171A9C5-D680-5555-ACC7-D834273086CA"><p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita#GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952/GUID-2E99CC17-7CBB-5591-AA32-C4875ACDEDF1">Set and Retrieve Metadata Entries </xref>  </p> </li> </ul> <p><b>Basic Procedure</b> </p> <p>The high level steps to set and retrieve metadata entries are shown here: </p> <ul><li id="GUID-E8722BDE-FDA7-5FA1-9554-38E686F461BE"><p>To set various metadata entries, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-7002D48D-8249-3A61-9BB7-B074C9A54B58"><apiname>CVideoRecorderUtility::AddMetaDataEntryL()</apiname></xref> function. The metadata entries are stored within the clip itself and can be retrieved or modified anytime during the recording.This is usually used to store information such as copyright information, creator, creation date and so on. </p> <p>The following code adds the copyright information to the video clip: </p> <codeblock id="GUID-5AD054E8-2244-5916-8F74-931331745ECA" xml:space="preserve">// Create Meta Entries
+_LIT(name,"&lt;Copyright&gt;");
+_LIT(data,"&lt;Symbian ©) 2002&gt;");
+CMMFMetaDataEntry* metaData = NULL;
+metaData = CMMFMetaDataEntry::NewL(name,data);
+CleanupStack::PushL(metaData);
+// Add the meta data entry
+TRAP(err, iVideoRecorderUtility-&gt;AddMetaDataEntryL(*metaData));</codeblock> </li> <li id="GUID-0A358498-EB7A-5E45-A79F-02D54055CFDF"><p>To retrieve specific metadata entries from a video clip, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-A59D9E32-5F57-3855-AC40-7A700F312808"><apiname>CVideoRecorderUtility::MetaDataEntryL()</apiname></xref> function. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita">Creating and Preparing a Video Recorder</xref>  </p> <p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita">Configuring the Video Recorder</xref>  </p> <p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita">Enabling/Disabling Video Recording</xref>  </p> <p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita">Controlling Video Recording Quality</xref>  </p> <p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref>  </p> <p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita">Controlling the Video Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D390781-4467-403D-8FFC-8ED5B2319993.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2D390781-4467-403D-8FFC-8ED5B2319993" xml:lang="en"><title>Creating
+the toolbar extension</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The toolbar extension is intended for expanding fixed and floating toolbars.
+It is dependent on the parent toolbar it is located in. </p>
+<p>You must define the toolbar extension in resource definitions. You can
+add the extension to your toolbar either in resource definitions or dynamically
+during program execution like other toolbar items.</p>
+<p>Use the <codeph>AVKON_TOOLBAR_EXTENSION</codeph> resource structure when
+defining the toolbar extension. The extension structure should be defined
+in the actual toolbar’s <codeph>TBAR_CTRL</codeph> structure when defining
+the toolbar items in the resources. If you add the extension dynamically to
+the toolbar, use the extension structure resource ID when creating it.</p>
+<p>The example below shows how to add a toolbar extension as the last item
+to the view toolbar.</p>
+<codeblock xml:space="preserve">
+void CMyAppView::AddExtensionToToolbarL()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknToolbarExtension* toolbarExtension = 
+            CAknToolbarExtension::NewL( R_MYAPP_TOOLBAR_EXTENSION );
+        toolbar-&gt;AddItemL( toolbarExtension, EAknCtToolbarExtension, 0, 0 );
+        }
+    }
+</codeblock>
+<p> You can also give the icon bitmap and skin ID information in the resource
+structure. This way you can change the default extension icon to an application
+specific icon. You can give separate bitmap or skin ID definitions to normal,
+pressed, and dimmed states.</p>
+<p>The example below shows the definition of a toolbar extension with a custom
+icon and three extension buttons.</p>
+<codeblock xml:space="preserve">
+RESOURCE AVKON_TOOLBAR_EXTENSION r_myapp_toolbar_extension
+    {
+    
+    bmpFile = AVKON_BITMAP_FILE;
+    bmpId = EMbmAvkonQgn_indi_navi_arrow_left; 
+    bmpMask = EMbmAvkonQgn_indi_navi_arrow_left_mask;
+    bmpSkinIdMajor = EAknsMajorAvkon;
+    bmpSkinIdMinor = EAknsMinorQgnIndiNaviArrowLeft;
+
+    items =
+        {
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdExtFirst;
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        extension = r_myapp_toolbar_ext_first;
+                        }  
+                    };
+                };
+            },
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdExtSecond;
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        extension = r_myapp_toolbar_ext_second;
+                        }
+                    };
+                };
+             },
+         TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdExtThird;
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        extension = r_myapp_toolbar_ext_third;
+                        }  
+                    };
+                };
+            }
+        };
+    }
+</codeblock>
+<p>The toolbar extension events are provided to the observer of the parent
+toolbar in the same manner as the actual toolbar events. Therefore you don't
+need to (or are able to) set an observer to the toolbar extension separately.
+For more information, see <xref href="GUID-7AE34C8A-50C6-49BA-9E43-AE76873B5E12.dita">Handling
+toolbar item events</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7"><title>DevSound Overview </title><shortdesc>This document provides an overview of DevSound. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-2BC87F44-853D-5BA3-A9FC-835FFDCBB3D2"><title>Purpose</title> <p>DevSound provides a common API for all audio functionality. </p> </section> <section><title>DevSound library details</title> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-A97FC7E6-BE18-5396-94D1-85616B733C40"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath>mmfdevsound.dll</filepath>  </p> </entry> <entry><p> <filepath>mmfdevsound.lib</filepath>  </p> </entry> <entry><p>These files are used for implementing DevSound. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural relationship</title> <p>Shown below is a representation of how DevSound interacts with the MMF Controller Framework and other components: </p> <fig id="GUID-3E6084D4-6AAC-5111-BB16-5AAC8C0866C6"><title>
+             DevSound and related components 
+          </title> <image href="GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e307727_href.png" placement="inline"/></fig> <p>DevSound uses the following components: </p> <ul><li id="GUID-3ACA3CEA-E594-5013-A901-46E12B87FEB3"><p>Client - DevSound can be used by the following clients: </p> <ul><li id="GUID-78C197EE-156A-5677-A432-D20031027121"><p>applications </p> </li> <li id="GUID-947D1F4D-1350-5868-AD70-2B0576BB9954"><p>device creator library. </p> </li> </ul> </li> <li id="GUID-C96E468B-0CA8-5A26-9C92-620301AD0CAC"><p>MMF Controller Framework </p> <p>For audio playing, recording, and conversion, the MMF client APIs interact with the lower levels of the MMF, the controller framework. The controller framework helps to manage the interface to DevSound and provides controller plug-ins for playing, recording, and converting audio data. The controller framework has two main classes <xref href="GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841.dita"><apiname>RMMFController</apiname></xref> and <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita"><apiname>CMMFController</apiname></xref>. </p> </li> <li id="GUID-A28BA7E0-DFFA-5149-BC80-5C46728CD1B4"><p>Controller Plug-in </p> <p>Depending on the functionality required by the client, the MMF controller framework loads the appropriate controller plug-ins. The plug-ins perform the required operations by communicating with DevSound and/or DevVideo, codecs and hardware. </p> <p>Custom controller plug-ins can be written to extend the MMF framework. For more information, see <xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-215B50CF-605A-58BA-8E87-CAB942F11741">How to write a controller plug-in</xref>. </p> </li> <li id="GUID-50F1D619-E6CB-5775-9B5E-181533FCB9BA"><p>Audio Policy </p> <p>The Audio Policy component manages requests to access the audio hardware. For example, if DevSound needs to acquire the hardware for playing audio, it makes a request to the Audio Policy component. Depending on the priority of the request, the Audio Policy component grants or denies access to the hardware. DevSound must obey the Audio Policy. </p> </li> <li id="GUID-F62F289A-10FC-5B23-A2D3-8CFE759C6516"><p>Codecs </p> <p>DevSound uses codecs to convert multimedia data between different encodings. </p> <p>Custom codec plug-ins can be written. For more information, see <xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita">How to write a codec plug-in</xref>. </p> </li> <li id="GUID-62CC1178-82A9-54F4-BF35-040549782703"><p>Hardware Device API </p> <p>For audio functionality, the <xref href="GUID-E18CF25C-82DE-3C69-BD86-5DF67579C1A6.dita"><apiname>CMMFHwDevice</apiname></xref> plug-in class acts as the DevSound interface to the audio processing hardware. </p> </li> </ul> </section> <section><title>Description</title> <p>DevSound provides the interface between the Symbian platform and the audio processing hardware for all audio functionality. DevSound is responsible for providing access to audio resources, configuring audio hardware, and audio playback and recording. </p> </section> <section><title>Key DevSound classes</title> <p>The DevSound API comprises the following classes: </p> <ul><li id="GUID-91A3D022-6579-5B12-B875-0F2C1633AA71"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita"><apiname>CMMFDevSound</apiname></xref> is the class which forms the DevSound API. </p> </li> <li id="GUID-6A729721-8110-5080-84F9-8FA3C90D7DB0"><p> <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> provides callbacks to users of the DevSound API. It serves as the method of communication between a client and DevSound. For example, <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> handles completion and cancellation requests for audio playing, recording, and conversion. </p> </li> </ul> </section> <section><title>Using DevSound</title> <p>DevSound offers the following main functions which can be used by DevSound clients: </p> <ul><li id="GUID-19A29FFB-C754-5B17-AEE0-1CFF6E001C14"><p>Audio Settings </p> <p>DevSound can be used to initialise and configure hardware devices, for example, set microphone gain and stereo balance. </p> </li> <li id="GUID-9FD9635B-FFB1-5DBD-AFB4-5A99A4C01DEC"><p>Audio Play </p> <p>DevSound can be used to play buffered audio data. </p> </li> <li id="GUID-88977E75-871D-5AB4-A208-DD9D8338962E"><p>Audio Record </p> <p>DevSound can be used to record audio data. </p> </li> <li id="GUID-30AC0EC2-49E8-54EA-B1EC-3122661017AF"><p>Audio Convert </p> <p>DevSound can be used to convert the type, sample rate and format of audio data. </p> </li> <li id="GUID-EBD316B2-FD0E-5737-89F1-2DB806CB2453"><p>Tone Play </p> <p>DevSound can play a single tone, tone sequence or Dual Tone Multi-Frequency (DTMF) string. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita"><linktext>Playing audio</linktext> </link> <link href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita"><linktext>Recording Audio</linktext> </link> <link href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita"><linktext>Playing tones</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D6689C2-F17D-48A8-8EC9-3D83BCAA3681.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-2D6689C2-F17D-48A8-8EC9-3D83BCAA3681" xml:lang="en"><title>Activate
+a view</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Activation is the process of switching or linking to a
+view. When the new view is activated, the old view is deactivated, and the
+new view is marked as the current view. Applications can have only a single
+view active at any given point of time. The current active view is the view
+that interacts with the user and receives events and menu choices.</p>   
+ <p>Activation of a view is done using any of the following methods: </p><ul>
+<li><p>View activation without custom message. </p><codeblock xml:space="preserve">CCoeAppUi::ActivateViewL( TVwsViewId&amp; aViewId )
+</codeblock></li>
+<li><p>View activation with custom message.</p><codeblock xml:space="preserve">CCoeAppUi::ActivateViewL( TVwsViewId&amp; aViewId TUid aCustomMessageId,
+                          TDesC8&amp; CustomMessage )</codeblock></li>
+</ul><note> Deactivation of view is necessary before exiting from the application,
+if the application UI has an active view. This can be done using the <codeph>CCoeAppUi::DeactivateActiveViewL(
+)</codeph> function.</note><p>The following code snippet shows activating
+a view:</p><codeblock xml:space="preserve">void CNewAppUi::ActivateViewL(const TVwsViewId&amp; aViewId,TUid aCustomMessageId,const TDesC16&amp; aCustomMessage)
+    {
+    HBufC8* narrowMessage = HBufC8::NewLC( aCustomMessage.Size() );
+    TPtr8 ptr=narrowMessage-&gt;Des();
+    ptr.Copy( ( TUint8* )aCustomMessage.Ptr(), aCustomMessage.Size() );
+    CCoeAppUi::ActivateViewL( aViewId,aCustomMessageId,narrowMessage-&gt;Des() );
+    iCCoeAppUi-&gt;NotifyNextActivation( *iViewActivationObserver_Notify );
+    CleanupStack::PopAndDestroy( narrowMessage );
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC"><title>Structure of a Message Store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides information about the Message Store entries. </p> <p>Message Framework provides a tree view of entries in a Message Store. The tree is divided into three levels: root entry, service entry, and folder and message entry, which are provided <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref>. The child entries of the root entry must be service entries. A message client application can begin from the root entry, and by successively finding the children of an entry, can traverse the whole entry tree. The parent of each entry is recorded in the index entry's details. </p> <p>The following figure illustrates how services are placed below a root entry. </p> <fig id="GUID-7832A21A-381A-5B5B-96ED-CF238039944F"><title>
+          Message Store 
+        </title> <image href="GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e253309_href.png" placement="inline"/></fig> <ul><li id="GUID-C5AE5A9E-F382-5D56-9EE3-C70C338E2D02"><p> <b>1:</b>  <b>Root entry</b> —This entry is just present to tie the tree structure together. </p> </li> <li id="GUID-F88FF1E1-D679-5413-BEE8-1574C54C9754"><p> <b>2:</b> <b> Service entry</b> —This level used for settings information, usually to set up communication protocols, for example, ISP settings. There is one local service under which local folders and messages are stored, and zero or more remote services. Remote services represent message accounts. </p> <p>There are two types of service entry: </p> <ul><li id="GUID-34454E69-A768-5102-84CD-D2F172C00BBE"><p> <b>Remote Services:</b> These represent message accounts stored on remote stores such as email servers and the SIM store of SMS messages. </p> </li> <li id="GUID-F4284F86-B486-5056-A3D9-681F07407112"><p> <b>Local Services:</b> There is a single local service under which local folders and messages are stored. </p> <p>The Message Server handles changes to local entries. Internally it may delegate changes to remote entries, such as copying and moving messages to and from a remote service, to the server MTM that owns that service. </p> </li> </ul> <fig id="GUID-E2FBA9E3-6AFB-56F4-A2B4-45FE4E41A024"><title>
+                Remote and local entries 
+             </title> <image href="GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e253361_href.png" placement="inline"/></fig> </li> <li id="GUID-035D9E45-6546-5551-91FF-214AE81DCEE7"><p> <b>3: </b> <b> Folder entries and message entries</b> — Folders entries are used to group a number of message entries. For more information on folders, see <xref href="GUID-21C03739-FF80-5874-A32B-F22DED13D18D.dita">Message folders</xref>. Messages store the content of a message. Message entries can have child entries which represent the structure of a message. </p> <p>Folders and messages under the local service represent messages stored on the device. Folders and messages under remote services represent a local copy of messages that are present on a remote server. For example, under a POP3 email service you can have copies of all the messages present on the POP3 email server, and under an SMS service you can have SMS messages that are stored on a SIM. </p> <p>Each message entry also has an associated service ID. The service ID is associated with a service entry whose settings is used in all Messaging operations on that message entry. </p> </li> </ul> <section><title>Validity of the Message Store</title> <p>The structure of the Message store is considered to be valid only if an index entry conforms to the following rules: </p> <ul><li id="GUID-7DB69487-9E0B-5D8F-BD7A-83A62F1BF4D2"><p>A non-service entry cannot be owned by root and must have its service ID field set. </p> </li> <li id="GUID-207256FE-42CB-56D3-9008-DB8B8F3A3171"><p>A service entry must be owned by root and have the service ID of itself. </p> </li> </ul> <p> <b>Important:</b> The Message Server controls access to the entries in the store. It enforces the three levels; therefore, attempts to create message or folder entries directly under the root entry fails. </p> </section> </conbody><related-links><link href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita"><linktext>Message Server and Store</linktext> </link> <link href="GUID-C290FA5E-8E41-5D19-B8C1-F88491EE6388.dita"><linktext> Messaging Framework</linktext> </link> <link href="GUID-44CF5471-564E-5790-935B-51193A4978D6.dita"><linktext>Message Server and Store
+                Concepts</linktext> </link> <link href="GUID-DD27A452-8B0F-5C6D-A2E6-FC21145468B6.dita"><linktext>Message Server and Store
+                Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e120681_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D8093D7-58A8-59CD-96EF-5B0AAE029478.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2D8093D7-58A8-59CD-96EF-5B0AAE029478"><title>Using Lock()</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>We can ask for a timer event to occur at a particular twelfth in the next second using the <codeph>Lock()</codeph> function.</p> <codeblock id="GUID-E6153332-DB58-55CF-959D-E3D5DC3FD47D" xml:space="preserve">...
+TRequestStatus stat;
+TTimerLockSpec lockspec;
+RTimer timer;
+...
+timer.Lock(lockspec,stat)
+...</codeblock> <p>The current time is A seconds + B milliseconds, then </p> <codeblock id="GUID-DF7B584A-9D21-55A1-883A-1CEA54B733DE" xml:space="preserve">Lock(EThreeOclock, stat);</codeblock> <p>will complete at C seconds + 3/12 milliseconds, where C=A, if B&lt;3/12milliseconds or C=A+1.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D8A7DCE-47A2-4326-BF2F-B4901F1723A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-2D8A7DCE-47A2-4326-BF2F-B4901F1723A0" xml:lang="en"><title>Releasing
+the instance</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>When the <codeph>CHWRMVibra</codeph> instance is not required
+anymore, it must be released. If the vibration feature is still reserved to
+the client it is released when the instance is released. </p><p>The following
+code snippet demonstrates how to release the instance created by using <codeph>NewLC()</codeph>: </p><codeblock xml:space="preserve">CleanupStack::PopAndDestroy( vibra );</codeblock><p>The following code snippet demonstrates how to release the instance created
+by using <codeph>NewL()</codeph>:</p><codeblock xml:space="preserve">CVibraStatusObserver::~CVibraStatusObserver()
+    {    
+    delete iVibra;
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D93660B-8206-5D20-85F5-6FFCF4549127.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2D93660B-8206-5D20-85F5-6FFCF4549127"><title>Persistent stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A store is persistent if you can close it, re-open it, and then gain access to the same data.</p> <p>A persistent store has the concept of a root stream. The root stream is, in effect, the starting point from which all others streams within the store can be found.</p> <p>Before closing a persistent store you have created, you must set the ID of the root stream. After you have opened the persistent store, the first thing you must do is look up the root stream ID. You can then open the root stream and start reading data from the store.</p> <p>Persistent stores are represented by the abstract class <codeph>CPersistentStore</codeph>. This class, derived from <codeph>CStreamStore</codeph> has the root stream ID and expands on the abstract framework provided by <codeph>CStreamStore</codeph>, by adding behaviour for setting and retrieving the root stream ID.</p> <p>File stores are an example of persistent stores.</p> <p>The following diagram shows the idea of a persistent store with a root stream:</p> <fig id="GUID-8A987703-9602-563A-97D9-6DD6012708C4"><image href="GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e334925_href.png" placement="inline"/></fig> <section><title>See also</title> <p><xref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita">File stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D" xml:lang="en"><title>smsexample:
+SMS example</title><shortdesc>This example code demonstrates how to send and receive
+SMS messages using the Messaging Framework APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-81E46301-8C03-5C36-B601-804D25C7C927"><title>Purpose</title> <p>These
+are the use cases demonstrated in this example: </p> <ul>
+<li id="GUID-39FDC2E5-2B51-5884-95CD-A8E4DB557D23"><p>How to create an SMS
+service. </p> </li>
+<li id="GUID-E6031880-AFF1-5BE2-844E-8D6C5584D462"><p>How to create an SMS. </p> </li>
+<li id="GUID-D9F4BEFD-02EF-5108-99B4-E96003655A3B"><p>How to send an SMS. </p> </li>
+<li id="GUID-3F7CD319-B63E-5FF6-8BEB-67FAED970EBB"><p>How to access and display
+SMS messages in the inbox, outbox and sent folders. </p> </li>
+<li id="GUID-0510D38B-A230-5FD3-BB65-6CA568C2D241"><p>How to delete SMS messages. </p> </li>
+</ul> </section>
+<section id="GUID-878E4690-1F02-5C15-8B4E-F53E8EA8719D"><title>Download</title> <p>Click
+on the following link to download the example:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e9c7c7d7-b4a1-4c58-bcbe-37fe6d0f4ce0.zip" scope="external"> smsexample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e9c7c7d7-b4a1-4c58-bcbe-37fe6d0f4ce0.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref></p><p> <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref></p><p> <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref></p><p> <xref href="GUID-681B56F3-B3A2-3147-B25A-FD69451F4A1D.dita"><apiname>CMsvServerEntry</apiname></xref></p><p> <xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref></p><p> <xref href="GUID-790D9BA9-2FB7-3073-AF2F-FFD049C3FD3D.dita"><apiname>CSmsHeader</apiname></xref></p><p> <xref href="GUID-6BC8851B-D913-3CE5-B343-5163661E8AD5.dita"><apiname>CMsvEntrySelection</apiname></xref></p><p> <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref></p><p> <xref href="GUID-4181374F-8545-3AF0-8932-A73138296FD1.dita"><apiname>CSsmCommandListResourceReader</apiname></xref></p><p> <xref href="GUID-B36289AC-769F-3A83-BADB-AE0568E97581.dita"><apiname>MMsvEntryObserver</apiname></xref></p><p> <xref href="GUID-BDE23754-4536-3AF7-8549-3B953F51167C.dita"><apiname>MMsvSessionObserver</apiname></xref></p></section>
+<section id="GUID-F706F06F-EAD0-5028-8875-C56E8C68B307"><title>Design and
+implementation</title> <p>An SMS account is created with a user-specified
+service center name and number. Then a message is composed by the user and
+sent to the user-specified recipient. </p> </section>
+<section id="GUID-2B5D9B09-1ACF-52E5-9FDF-FF6B03096162"><title>Building and
+configuring</title> <ul>
+<li id="GUID-FD731628-CA35-59F5-ABEB-9F6FC097965B"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-DDDF0872-174C-5C68-9068-282EE28B648D"><p>For the emulator, the
+example builds an executable called <filepath>smsexample.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita"><linktext>SMS MTM Overview</linktext>
+</link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2DC4EAD5-98D3-5B17-AEBD-6ADE481CBD94.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-2DC4EAD5-98D3-5B17-AEBD-6ADE481CBD94" xml:lang="en"><title>Call
+in Progress Tutorial</title><shortdesc>This tutorial describes how to get the call progress with the telephony
+API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>The client applications can determine the status of voice, data and
+fax calls with the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> functions.</context>
+
+
+<steps id="GUID-3321492D-D51F-5047-9C62-4E0951726010">
+<step id="GUID-1C4E0B81-25D0-5645-9C85-F2EFAB23BBD8"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-0D3DCBA1-B00C-5EFD-A905-CCF7EE4DFE4C"><cmd/>
+<info>use<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetIndicator()</apiname></xref> to
+get the call progress information </info>
+<info>The function returns a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TIndicatorV1</apiname></xref> object
+that contains the call progress information </info>
+</step>
+<step id="GUID-82FEA69E-58DB-53B2-AD6D-3C7EC5A17BD0"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetIndicatorCancel</apiname></xref> to
+cancel the aynchronous request </info>
+</step>
+<step id="GUID-1A45FD91-3793-5322-829F-4498F841E6E2"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EIndicatorChange</apiname></xref> to
+get the notification of any changes in the call progress information </info>
+</step>
+<step id="GUID-780B4933-9C44-50FC-B020-368B5150A05D"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EIndicatorChangeCancel</apiname></xref> to
+cancel the notification request </info>
+</step>
+</steps>
+<example id="GUID-B43C210D-813A-58D6-8ADE-1FEF7C5FBE58"><title>Call in progress
+example</title> <codeblock id="GUID-8A109B25-F01C-5495-A109-E4424DD3A24E" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TIndicatorV1 iIndicatorV1;
+    CTelephony::TIndicatorV1Pckg iIndicatorV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iIndicatorV1Pckg(iIndicatorV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetIndicator(iStatus, iIndicatorV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if(iIndicatorV1.iCapabilities &amp; CTelephony::KIndCallInProgress)
+          {
+          // We can detect when a call is in progress
+          if(iIndicatorV1.iIndicator &amp; CTelephony::KIndCallInProgress)
+             {} // A call is in progress
+          else
+             {} // A call is not in progress
+          }
+       else
+          {} // We do not know whether a call is in progress
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetIndicatorCancel);
+    }
+</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1"><title>Video Client Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the video client library in the multimedia framework component. </p> <section><title>Purpose</title> <p>The Video Client provides basic video file manipulation features. The Video Client enables you to: </p> <ul><li id="GUID-D5BBB300-FC65-57F2-8B6F-C56D978A8834"><p>Record and play back video clips (with and without attached audio). </p> </li> <li id="GUID-B3B78980-7344-5DD2-ABA7-6C8D93F23DB3"><p>Render video to graphics surfaces (with and without an associated target window). </p> </li> <li id="GUID-0BC8538E-787B-5174-871B-B113D99FD81E"><p>Manipulate video file metadata (if supported by the video format being used). </p> </li> </ul> <p><b>Video Client Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-B893730B-DC80-5C94-86F5-AA1DD33B47FE"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>mediaclientvideo.dll</b>  </p> </entry> <entry><p> <b>mediaclientvideo.lib</b>  </p> </entry> <entry><p>These files are used for implementing the Video Client. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The methods for playing and recording video clips interact with the lower levels of MMF (known as the controller framework). The controller framework is in turn responsible for managing the interface to video and audio hardware. On some phones, this is implemented as a device driver; on others it may be implemented as a connection to lower level hardware controllers. </p> <p>Clients using the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref>, <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> or <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> classes must have an active scheduler running in their thread because the implementations use active objects and callbacks. </p> <p>The <codeph>CVideoPlayerUtility</codeph> function uses <xref href="GUID-2BE86C43-A982-39BC-B881-C190966A7E77.dita"><apiname>CMediaClientVideoDisplay</apiname></xref> to support video display. This allows clients to use video display functionality separately from the client utilities. </p> </section> <section><title>Description</title> <p>The video classes are plug-in based, leaving the list of supported video formats for input and output open ended. Unlike the audio classes, no default video formats/codecs are provided. It is the responsibility of the device creator to develop and implement appropriate video plug-ins. </p> </section> <section><title>Key Video Client Classes</title> <p>The video play and record functionality provided by the Video Client is contained within the following key classes: </p> <ul><li id="GUID-1FC8E8FF-D578-5214-9B4E-2A85D029040D"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> - the video player class. This class provides an interface to play sampled video data. </p> </li> <li id="GUID-4B6CBE5B-43FA-5C63-9D46-107FD9DA8843"><p> <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> - the video player 2 class. This class provides an interface to play sampled video data on graphics surfaces. </p> </li> <li id="GUID-4CCCA725-C6CD-5C38-BACA-4E5BB0E9853A"><p> <xref href="GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9.dita"><apiname>MVideoPlayerUtilityObserver</apiname></xref> - an interface to a set of video player callback functions. </p> </li> <li id="GUID-2C3BFAC6-3C6F-542D-B2CA-82A226B3B281"><p> <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> - the video recorder class. This class provides an interface to record sampled video data. </p> </li> <li id="GUID-954BB4B8-D8B3-5A66-930D-A0BFFA2B4BFD"><p> <xref href="GUID-3DA683D9-644B-3629-901F-96F1B49EE0C7.dita"><apiname>MVideoRecorderUtilityObserver</apiname></xref> - an interface to a set of video recorder callback functions. </p> </li> </ul> </section> <section><title>Using the Video Client</title> <p>Clients can use the Video Client to: </p> <ul><li id="GUID-34E3471F-C697-5F69-AE01-D69FB53689D3"><p><xref href="GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D.dita">Open and play video clips contained in files, descriptors or URLs</xref>. </p> </li> <li id="GUID-AB036EBA-0F1A-5A62-A0E3-7A3322D200DC"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita"> Open and play video data on graphics surfaces</xref>. </p> </li> <li id="GUID-CB4AF1A7-8EC1-5967-A75F-55CEB726345A"><p><xref href="GUID-37934768-50D0-52A8-B594-B47D5E27722B.dita">Open a recording device and record video clips to files, descriptors or URLs, and manipulate embedded metadata</xref>. </p> </li> <li id="GUID-A3BA2E8D-FFDE-5D82-A271-A4C2F374EE32"><p>Display <xref href="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita">video subtitle CRP</xref> artwork on a video window. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita">Video Client Tutorials</xref>  </p> <p><xref href="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita">DevVideo Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF" xml:lang="en"><title>Finding
+your way around</title><shortdesc>Read this page to learn about the contents and structure of the
+library.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-91A35BDC-92E4-47D6-8A04-C6E0C444C484"><title>The platform structure and APIs</title> <p>The <xref href="GUID-32E29020-1956-461A-B79A-1492E06049E7.dita">Symbian
+guide</xref> provides introductory documents to the platform as a whole, and
+guides that describe the major areas of the platform in depth. </p><p>The
+Symbian platform is a large system, and contains hundreds of C++ classes and
+thousands of member functions. Like most complex systems, it is easiest to
+divide it into large areas, and gradually to narrow your focus down to the
+areas that are most important to your tasks. </p><p>The <xref href="http://developer.symbian.org/wiki/index.php/Symbian_System_Model" scope="external">Symbian System Model</xref> organises the components of the
+Symbian platform into a layered software architecture. The guides in this
+library are also structured around this architecture. The guides describe
+the key technology and architectural concepts of the area, and show the key
+ways to use its classes.</p> <p>Note: Before the System Model was introduced,
+the Symbian platform used another architectural view based on large divisions
+called subsystems. Some documentation has not yet been changed to use the
+System Model rather than subsystems. </p> </section>
+<section id="GUID-5C4DC90E-DB65-4EB7-B271-D64D5FC5A065"><title>Newcomers to the Symbian platform</title> <p>For those developing
+on the Symbian platform for the first time, the <xref href="GUID-35D7EEFC-B2E4-5444-8875-2A24790E08C2.dita">Essential
+Idioms</xref> section describes the distinctive programming idioms and conventions
+of the Symbian platform. </p> </section>
+<section id="GUID-0AA83743-82BC-473B-ABFD-20FFD6AB6485"><title>Examples</title> <p>The <xref href="GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita">Examples</xref> section
+gives instructions for building and using the large set of C++ example projects
+that accompany the library. Projects include examples that demonstrate the
+use of fundamental Symbian platform classes, and many examples showing how
+to use particular Symbian platform C++ APIs. </p> <p>Example code is provided
+for illustrative and demonstration purposes, and should not be assumed to
+be useable as product code. </p></section>
+
+<section id="GUID-C5687256-B657-4D29-B280-1837D4F991AE"><title>Tools</title><p>The library does not include documentation
+for most tools, which are usually delivered separately from the Symbian platform
+code. See the <xref href="http://developer.symbian.org/wiki/index.php/Category:Tools" scope="external">Tools</xref> section of the <xref href="http://developer.symbian.org/" scope="external">Symbian Developer Community</xref> website.</p><p>The <xref href="GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita">Symbian Tools And Utilities</xref> section
+documents the tools that are delivered with the platform. In particular, the <xref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita">Build Tools Guide</xref> and
+the <xref href="GUID-49397CFD-955A-5DF6-9251-368C44224966.dita">Build Tools Reference</xref> document
+the <cmdname>abld</cmdname>/<cmdname>bldmake</cmdname> (SBSv1) command line
+build tools, and explain the project file formats. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB" xml:lang="en"><title>Pointer
+descriptors</title><shortdesc>Describes non-modifiable pointer descriptors and modifiable pointer
+descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A pointer descriptor represents data which can live in ROM or RAM and this
+location is separate from the pointer descriptor object itself. </p>
+<p>A pointer descriptor is an instance of a class that encapsulates a pointer
+to the location of the data. </p>
+<p>A pointer descriptor comes in two forms: </p>
+<ul>
+<li id="GUID-A836665F-9AB7-5364-891E-6297D68B291D"><p>a non-modifiable pointer
+descriptor. </p> </li>
+<li id="GUID-C46BB0C8-08ED-5835-9516-D164383D1313"><p>a modifiable pointer
+descriptor. </p> </li>
+</ul>
+<section id="GUID-DE207726-9C75-4DD9-964A-6B7B16226C4A"><title>Non-modifiable pointer descriptor</title> <p>The data represented
+by a non-modifiable pointer descriptor can be accessed, but not changed, through
+this descriptor. </p> <p>Data is accessed through functions provided by the
+base class. </p> <p>A non-modifiable pointer descriptor is supplied in two
+variants: </p> <ul>
+<li id="GUID-CF4D06B5-B5EB-5C4D-BA87-B990053CD15D"><p>the 16 bit variant,
+a <codeph>TPtrC16</codeph>, for representing Unicode strings. </p> </li>
+<li id="GUID-A1005460-2D2A-5DB4-9414-2747056A7DBC"><p>the 8 bit variant, a <codeph>TPtrC8</codeph>,
+for representing non-Unicode strings and binary data. </p> </li>
+</ul> <p>There is also a build independent type, <codeph>TPtrC</codeph>. This
+is the type which is most commonly used in program code; the appropriate variant
+is selected at build time. </p> <p>An explicit 8 bit variant is chosen for
+binary data. The explicit 16 bit variant is rarely used. </p> <p>The base
+class, <codeph>TDesC</codeph>, contains a data member which holds the length
+of the data. The following drawing shows the layout of a <codeph>TPtrC</codeph> object
+for a string of five characters representing the English word "Hello". </p> <fig id="GUID-D3F0600A-D575-5309-8182-CFA98D184E29">
+<image href="GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e195991_href.png" placement="inline"/>
+<p>Non-modifiable pointer descriptor</p>
+</fig> </section>
+<section id="GUID-33072A44-C95A-4688-AB85-019EFDC4F1B2"><title>Modifiable pointer descriptor</title> <p>The data represented
+by a modifiable pointer descriptor can be both accessed and changed through
+this descriptor. </p> <p>The length of the data can vary between zero and
+the maximum length. The maximum length of the descriptor is set by the constructor.
+When the length of the data is less than the maximum, a portion of the data
+area represented by the descriptor is unused. </p> <p>Data is accessed and
+modified through functions provided by the base classes. </p> <p>A modifiable
+pointer descriptor is supplied in two variants: </p> <ul>
+<li id="GUID-2DD694B8-8408-58F8-BE98-1D031666DEC5"><p>the 16 bit variant,
+a <codeph>TPtr16</codeph>, for representing Unicode strings. </p> </li>
+<li id="GUID-5D1EB254-6B9D-576C-9631-3461AC8FFD32"><p>the 8 bit variant, a <codeph>TPtr8</codeph>,
+for representing non-Unicode strings and binary data. </p> </li>
+</ul> <p>There is also a build independent type, <codeph>TPtr</codeph>. This
+is the type which is most commonly used in program code; the appropriate variant
+is selected at build time. </p> <p>An explicit 8 bit variant is chosen for
+binary data. The explicit 16 bit variant is rarely used. </p> <p>The base
+class <codeph>TDesC</codeph>, contains a data member that holds the length
+of the data. The base class <codeph>TDes</codeph>, contains a data member
+that holds the maximum length of the data. The following drawing shows the
+layout of a <codeph>TPtr</codeph> object for a string of five characters representing
+the English word "Hello". The maximum length to be represented by the descriptor
+is 12. </p> <fig id="GUID-B6213E7F-AE00-5854-BBB7-C82BE71CB495">
+<image href="GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e196056_href.png" placement="inline"/>
+<p>Modifiable pointer descriptor</p>
+</fig> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2DDEF473-B804-51DF-874F-ADF46CB03ABA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2DDEF473-B804-51DF-874F-ADF46CB03ABA" xml:lang="en"><title>Formatting</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E085BAD-AAD7-5D1A-89A7-287EE42D1069.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2E085BAD-AAD7-5D1A-89A7-287EE42D1069" xml:lang="en"><title>Arrays And Lists </title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF" xml:lang="en"><title>Lexical
+Analysis Overview</title><shortdesc>Provides string analysis and string-to-number conversions</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A64D2A5B-2A8C-4FEF-9F4A-6AC4F997BB7F"><title>Description</title> <p>The API has two key concepts: lexical
+analyser, and extraction mark. </p> </section>
+<section id="GUID-12BA42C0-484F-46FF-A9EB-8F8968B2F272"><title>Lexical analyser</title><p>The lexical analyser provides facilities
+to identify and extract characters and tokens (substrings delimited by white
+space) from a descriptor or NULL-terminated string. It also provides string-to-number
+conversions.</p> <p>The lexical analyser interface is provided by <xref href="GUID-76BFE569-34F7-3FEC-8F01-38AEC8C29D68.dita"><apiname>TLex16</apiname></xref> for
+wide strings, and <xref href="GUID-5B7955BC-1375-35F1-953D-D7F5C3583756.dita"><apiname>TLex8</apiname></xref> for narrow strings. <xref href="GUID-C94AB4F0-AE42-3957-A037-77CB145DDBF8.dita"><apiname>TLex</apiname></xref> is
+a typedef for <xref href="GUID-76BFE569-34F7-3FEC-8F01-38AEC8C29D68.dita"><apiname>TLex16</apiname></xref>.</p></section>
+<section id="GUID-A1CF4E86-0B08-4D16-A352-2240983CD651"><title>Extraction mark</title><p>The extraction mark allows positions
+in a string that is being analysed to be remembered. Later lexical analysis
+operations can then operate on this position in the string.</p> <p>The extraction
+mark interface is provided by <xref href="GUID-284AF88B-910B-3483-8797-E85ECB08BB2A.dita"><apiname>TLexMark16</apiname></xref> for wide strings,
+and <xref href="GUID-11EFB436-59E4-3E21-8950-B7F3F16FDD92.dita"><apiname>TLexMark8</apiname></xref> for narrow strings. <xref href="GUID-CCFA0F79-F758-3728-AA4E-DDF59D3817C1.dita"><apiname>TLexMark</apiname></xref> is
+a typedef for <xref href="GUID-284AF88B-910B-3483-8797-E85ECB08BB2A.dita"><apiname>TLexMark16</apiname></xref>.</p></section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors Overview</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E253B30-2611-546D-AE5B-1752556FC8E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2E253B30-2611-546D-AE5B-1752556FC8E8" xml:lang="en"><title>SMTP
+Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section section describes the Simple Mail Transfer Protocol (SMTP)
+and its implementation on Symbian platform. </p>
+<section id="GUID-DBF1C87D-7360-54B7-8658-B6659BF77F06-GENID-1-6-1-15-1-1-6-1-7-1-4-1-2-2"><title>SMTP protocol</title> <p>SMTP
+is the most widely used protocol for sending emails. It is a text-based and <b>push</b> protocol
+that cannot <b>pull</b> messages from a remote server on demand. </p> <p>One
+or more recipients of a message are specified in a message along with the
+message text and other encoded objects. The message is then transferred to
+a remote server using a procedure of queries and responses between the client
+and server. Either an end-user's email client (Mail User Agent (MUA)) or a
+relaying server's Mail Transport Agents (MTA) can act as an SMTP client. The
+SMTP client initiates a TCP connection to SMTP server on port 25 (unless overridden
+by configuration). </p> <p>SMTP is more suitable for a machine permanently
+connected to the Internet. To retrieve messages only on demand, which is the
+most common requirement on a single-user computer, a mail client must use
+POP3 or IMAP4. POP3 is mostly preferred when single-user computers connected
+to the Internet only intermittently. </p> </section>
+<section><title>Symbian platform implementation of SMTP</title> <p>SMTP is
+a Mail Transfer Agent (MTA) used to transfer emails to a SMTP server which
+then forwards them on to a specified destination. </p> <p>Sending an email
+generally consists of three phases: connect and authorise to server, send
+emails and quit. </p> <p>The SMTP component is responsible for sending email
+messages composed and stored in the Message Server’s Message Store. </p> <ol id="GUID-8FCD7F76-46FD-58E9-9EBA-B178B98F0782">
+<li id="GUID-A8B5A1FA-DE84-51E8-B2B3-B4FCD073E0D2"><p>The SMTP client initiates
+a connection with the SMTP server. Depending on the user’s email settings,
+this may have been initiated over a secure SSL/TLS socket on port 465. </p> </li>
+<li id="GUID-F18E9E52-DF7A-5127-B6DD-FB08663025E0"><p>Depending on how the
+user has configured the email settings and the capabilities of the SMTP server,
+SMTP authentication may also be required. </p> </li>
+<li id="GUID-74561ABB-4B7A-58E7-B79D-5473C3149476"><p>Mail <b>From</b> and
+recipient <b>To</b> are sent. </p> </li>
+<li id="GUID-7ABADE92-CAF1-524A-A8AB-288E9849BED1"><p>The message header fields
+for the email message stored in the Message Store are then transmitted, each
+one separated by a CRLF. </p> </li>
+<li id="GUID-7932B3D6-270F-5983-8521-8AC83C7AA450"><p>The last CRLF is sent
+to indicate the end of the RFC 2822 header. </p> </li>
+<li id="GUID-2A05FF85-4E42-5EEE-A2C5-4763C887E3D2"><p>The message body and
+encoded attachments are sent. </p> <p>The encoding format (uuencode or MIME,
+character sets) depends on the user’s email settings and locale. </p> </li>
+<li id="GUID-7040A4EB-AA7C-5932-B7FF-89595D9256D0"><p>Finally, the body is
+terminated by a CRLF. </p> <p>CRLF sequence, and the email is queued by the
+SMTP server for sending. </p> </li>
+</ol> </section>
+<section><title>SMTP example</title> <p>For more details on implementing the
+IMAP4 MTM functions, see <xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">example
+code</xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-4F703F85-080F-5B77-B94D-5449764828F3.dita"><linktext>SMTP MTM</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31" xml:lang="en"><title>Home screen</title><shortdesc>The home screen allows mobile device users to quickly access their
+favorite applications and services, as well as view at a glance if they have
+missed calls or new messages. The home screen contains application shortcuts
+as well as an information area and a shortcut area.</shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Home screen is the basic state of the device. Once the user has powered
+the mobile device on, it results in the home screen state after all the startup
+activities have been finalized. The home screen state is the starting point
+(home state) for users, from where they start their tasks. It displays information
+about the current state of the device, including the connection status, battery
+level, and network operator.</p>
+<p>By default, the home screen displays predefined content. Users can add
+to the home screen Web Runtime widgets and C++ applications that have been
+enabled for the home screen. Users can also change the positions of the home
+screen content.</p>
+<fig id="GUID-94438FC7-76A3-450D-BAF7-533FCA3FDA70">
+<title>Home screen</title>
+<image href="GUID-521C2463-A72B-4C48-8815-61689264F2C1_d0e52646_href.jpg" scale="50" placement="inline"></image>
+</fig>
+<section id="GUID-4E9D248E-213E-4796-B60C-C42D261985C2"><title>Enabling
+C++ applications for the home screen</title><p>Application developers must
+enable the applications for the home screen. For more information on how to
+use the Home Screen Publishing API to enable C++ applications for the home
+screen, see Home
+Screen Publishing API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e150630_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E3BE23C-B9DC-5B5D-A56A-1DB819EFC9A6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2E3BE23C-B9DC-5B5D-A56A-1DB819EFC9A6" xml:lang="en"><title>Hardware Resource
+Manager Tutorials</title><shortdesc>This section lists the tutorials which explains how to control
+device lights and vibra, retrieve device battery and status information, and
+publish certain power-state properties. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E96D6CC-1C1F-5C30-A315-9729D07D1605.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2E96D6CC-1C1F-5C30-A315-9729D07D1605"><title>Processing Client Requests</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In the client-server architecture, clients issue requests through session-handle objects to kernel-maintained sessions. Messaging Middleware libraries provide a session-handle class called <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref>. Messaging client applications typically create an instance of this class when they start. Client MTMs, UI MTMs and high-level client library classes typically share the message client application’s session object and make requests as needed. </p> <p>Messaging client applications, Client MTMs and UI MTMs manipulate entries through two classes, <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> and <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref>. The entry currently being operated on is called the context. A message client application can start by setting the context to the root entry. By finding the children of this initial entry, and then their children, it can find any entry. </p> <p>Message type-independent operations are requested by message client applications from and Client MTMs and UI MTMs through <xref href="GUID-BC3D2A73-3E8C-3D0C-8E18-5E35AA431D99.dita"><apiname>CMvsEntry</apiname></xref> or <xref href="GUID-681B56F3-B3A2-3147-B25A-FD69451F4A1D.dita"><apiname>CMsvServerEntry</apiname></xref>. The Message Server performs such operations itself or uses a Server MTM to do them. For more information on how client requests are handled by Message Server, see <xref href="GUID-4CD6C5CC-A91B-56BE-825F-5B10B63627DA.dita">Handling Client Requests</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4" xml:lang="en"><title>Plug-ins</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Plug-ins connect to the system using the EPOC Component Object Model (ECom). ECom is based on client/server architecture and provides services to instantiate, resolve, and destroy instances of plug-ins at run time. For more information, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/System-Libraries-subsystem-guide/ecom/EcomArchitecture/index.html" format="application/java-archive">ECom architecture</xref>.</p>
+<fig id="GUID-C5D783F2-8388-4097-8276-BAC6D5B17C2C"><title>ECom framework</title><image href="GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e7325_href.png"/></fig>
+<p>A hostile or malfunctioning plug-in may cause crashes or security leaks, even on otherwise well-tested applications. The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> architecture protects the processes by verifying that the plug-in has equal or greater set of capabilities than the process in which it is loaded. For more information, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/System-Libraries-subsystem-guide/ecom/EcomArchitecture/EcomPlatSec.html" format="application/java-archive">ECom and the platform security capability model</xref>. </p>
+<p>For examples, see <xref href="http://www.forum.nokia.com/main/resources/technologies/symbian/code_and_examples.html" scope="external">Symbian C++ code and examples</xref> on Forum Nokia.</p>
+<section><title>Communication plug-ins</title>
+<p>It is possible to use plug-ins to implement additional functionality to serial, socket, and messaging frameworks. These plug-ins are especially important for security because they deal with communication.</p>
+<ul>
+<li><p>For serial communication there are serial protocol modules (CSY modules ), which are loaded by the Serial Comms Server. For more information on serial communication, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Serial-Communications-subsystem-guide/SerialCommsServerClientGuide/index.html" format="application/java-archive">Using Serial Communications Server Client-Side</xref>.</p></li>
+<li><p>For socket-based communication there are protocol modules (PRT), which are loaded by the Socket Server. For more information on socket-based communication, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Communications-Infrastructure-subsystem-guide/esock/index.html" format="application/java-archive">Using Socket Server</xref>.</p></li>
+<li><p>For messaging there are Message Type Modules (MTM), which include both client and server components. MTMs are a set of <codeph>dll</codeph>s rather than a single <codeph>dll</codeph>. For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Messaging-subsystem-guide/MessagingGuide/MessagingGuide3/index.html" format="application/java-archive">Message Type Modules</xref>.</p></li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2EAAE194-FAE1-5545-A678-72973E9B72A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2EAAE194-FAE1-5545-A678-72973E9B72A7" xml:lang="en"><title>Handles</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e178839_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e367018_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e196257_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D"><title>Bluetooth Service Discovery Agent Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Enables you to discover the Bluetooth services, and the attributes of those services, that are available on a remote device. </p> </section> <section><title>Architectural relationships</title> <p>The Service Discovery Agent API is one of two APIs that enable you to use the Bluetooth Service Discovery Protocol. The other, the <xref href="GUID-756D831F-F302-594C-8116-144358DD8442.dita">Bluetooth Service Discovery Database</xref>, enables a local service to enter its own properties into a local service database. </p> </section> <section><title>Description</title> <p> <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita"><apiname>CSdpAgent</apiname></xref> is used to make Symbian OS Bluetooth SDP requests to a remote device. There are two basic queries you can make using it: </p> <ul><li id="GUID-F1360383-5474-5FE6-BEFD-29FCE6954C89"><p>Getting the services on the remote device and setting the classes of service for which you want to query using a <xref href="GUID-745D8374-1012-356B-A15E-6CBC96E64E95.dita"><apiname>CSdpSearchPattern</apiname></xref> object </p> </li> <li id="GUID-4FDB699D-E73A-53C7-943C-830D88E3B6F8"><p>Getting the attributes for a specific service and setting a list of attributes to be retrieved using a <xref href="GUID-7DA0506B-F2C1-374B-847F-8DF070BD2FE9.dita"><apiname>CSdpAttrIdMatchList</apiname></xref> object </p> </li> </ul> <p>An application using of <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita"><apiname>CSdpAgent</apiname></xref> must implement the interface <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> to receive the responses to queries. </p> <p>The API also supplies <xref href="GUID-3DE5145D-4D19-3439-A08C-58C0F504B24F.dita"><apiname>CElementParser</apiname></xref>, to parse a raw input buffer containing an attribute value into its constituent data elements. </p> </section> <section><title>Using the Bluetooth Service Discovery Agent</title> <p>The following tutorials will help get you started using the Bluetooth SDP Service Discovery Agent. </p> <ul><li id="GUID-5E4CE295-C84A-58D2-9078-365BF108F07A"><p> <xref href="GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659.dita">Querying the SDP database</xref>  </p> </li> <li id="GUID-810282C3-5B8D-5E38-A4BE-2095A9BD2853"><p> <xref href="GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032.dita">Reading remote SDP service attributes</xref>  </p> </li> <li id="GUID-E75D9121-10E5-5060-A8F6-E8E79BB5AD9B"><p> <xref href="GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393.dita">Handling SDP query results</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2F42DC8F-E489-5EA4-8413-784D34965497.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2F42DC8F-E489-5EA4-8413-784D34965497"><title>UI Control Framework concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Framework is a series of related Object-Oriented base classes with clearly defined responsibilities. UI system and application developers use the framework classes, in particular those representing 'the environment', 'the user interface' and 'the generic control' as the basis for creating concrete classes with the same underlying relationships. Framework functions, virtual functions in the base classes, maintain the relationships and enable the concrete classes to receive messages (events). </p> <p>This page describes the key concepts behind the UI Control Framework. </p> <ul><li id="GUID-87ABE063-A4B2-51D1-8C91-9CAA79343143"><p>to simplify access to the Window Server </p> </li> <li id="GUID-EF3C1D12-284D-587B-BE22-690996B0CBE0"><p>to set a recommended framework for all UI libraries </p> </li> <li id="GUID-1C04861D-667F-561F-A59E-254B63C40980"><p>to do this without imposing a particular user interface look </p> </li> </ul> <section id="GUID-F1C07D3E-AE0A-50BF-9AB9-280C4260A1F2"><title>Simplified access to the Window Server</title> <p>The Window Server provides a low-level API to the system’s user interface devices — screens, keyboard and pointer. The API is extensive and complex. The UI Control Framework hides much of this complexity and provides a simplified API that meets the requirements of most applications. </p> <p>Any client of the Window Server must create a window server session and an active scheduler framework to handle asynchronous inter-process communication (IPC). Events received from the Window Server must be converted into functions calls and passed to the appropriate controls. These complex tasks, which are similar for most applications, are performed by the Control Environment. </p> </section> <section id="GUID-BB5F1E99-8216-5E21-B407-3312D1938FAD"><title>Recommended framework for UI libraries</title> <p>In simplifying the Window Server API, the control framework makes a number of design decisions that are optimised for most applications. </p> <p>One is the framework's concept of controls. By allowing controls to represent both whole windows (window owning) and parts of windows (non-window owning) the framework makes applications run much more efficiently. </p> <p>Another is the prioritising of events. User input events, for instance, are given a higher priority than redraw events. </p> <p>A third feature is the support provided for handling key-press events and pointer events. The Window Server passes key events to the foreground application and pointer events to the window containing the point of contact, which maps to a window-owning control. In each case the Framework provides a mechanism for distributing the event to the appropriate control (normally a simple, non-window-owning control) within the application. </p> </section> <section id="GUID-C9FF4460-2D19-5956-A796-53D3D4DFA183"><title>User Interface policy agnostic</title> <p>Though the Framework provides a substantial amount of any application it imposes very little in the way of user interface policy and no 'Look and Feel' (LAF). It does, however, provide mechanisms for supporting system-wide LAF and for propagating run-time LAF changes. </p> <p>UI policy is provided by the core user interface library, Uikon, and the user interface library provided for a particular UI variant. </p> </section> <section><title>See also</title> <p> <xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Window server</xref>  </p> <p><xref href="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita">UI Control Framework overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5" xml:lang="en"><title>Using
+Message Queue</title><shortdesc>This topic explains the operations that can be performed using
+message queue.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-47D01156-47CE-5E19-9B0D-222E05851555"><p><xref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita#GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5/GUID-D08DB507-7AFD-5ADD-B785-03BF01BE758D">Creating &amp; opening a queue</xref> </p> </li>
+<li id="GUID-4CFC9AD9-5303-597D-A339-26064DDA459F"><p><xref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita#GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5/GUID-2C05D532-9353-5E83-A8D8-1EACB9D44662">Sending data to the queue</xref> </p> </li>
+<li id="GUID-D7A7CB34-16CF-545C-927D-99AF3011C6E7"><p><xref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita#GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5/GUID-683F69D9-CC59-5F8C-A65B-E69D98737A96">Receiving a message from the queue</xref> </p> </li>
+<li id="GUID-3A517EE0-2B17-5EEF-BFEE-FF98FD1BE9BF"><p><xref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita#GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5/GUID-1647018E-85C2-58DC-A97A-F90580D9D4E2">Waiting for messages or space</xref> </p> </li>
+<li id="GUID-5379B30A-4E56-5C7E-A7E3-44C8E5592946"><p><xref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita#GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5/GUID-A5EABF21-FB2C-5B91-9007-40B4FBE04269">Querying a Queue’s Size</xref> </p> </li>
+<li id="GUID-6FD43EA9-4E52-5F60-AD10-314964015F9E"><p><xref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita#GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5/GUID-72033282-9E2F-5E8E-8D78-1B8F6DF42D82">An example of a type specific queue</xref> </p> </li>
+</ul>
+<section id="GUID-D08DB507-7AFD-5ADD-B785-03BF01BE758D"><title>Creating &amp;
+opening a queue</title> <p>A global queue is created by calling <codeph>CreateGlobal()</codeph> on
+a handle object, while a local queue is created by calling <codeph>CreateLocal()</codeph>.</p> <p>A
+global queue is opened by calling <codeph>OpenGlobal()</codeph> on a handle
+object, passing a queue name.</p> <p>All the memory used by the queue is allocated
+when the queue is created, so it is possible for the call that creates a queue
+to fail with out of memory. The queue is deleted when the last open handle
+on it is closed.</p> <p><b> Creating
+a global named queue</b> </p> <codeblock id="GUID-C70F3600-6198-5DFE-AFA9-2A9366472ED9" xml:space="preserve">_LIT(KGLobalName, "GlobalMessageQueue");
+const TInt KNumberOfSlots = 5;
+const TInt KMessageLength = 16;
+RMsgQueueBase queue;
+TInt ret = queue.CreateGlobal(KGLobalName, KNumberOfSlots, KMessageLength, EOwnerProcess);
+        </codeblock> <p>This code fragment creates a global named message
+queue called <codeph>GlobalMessageQueue</codeph> with 5 slots, each capable
+of holding a message of size 16 bytes. Note that we have explicitly used <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref>. <i>In
+practice</i>, you would use the template class <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref>.
+For example:</p> <codeblock id="GUID-79040227-DE95-58AB-BC2E-105085AF89F3" xml:space="preserve">class TMyClass
+    {
+public:
+    TInt iA;
+    TInt iB;
+    TInt iC;
+    TInt iD;
+    }
+
+_LIT(KGLobalName, "GlobalMessageQueue");
+const TInt KNumberOfSlots = 5;
+RMsgQueue&lt;TMyClass&gt; queue;
+TInt ret = queue.CreateGlobal(KGLobalName, KNumberOfSlots, EOwnerProcess);
+        </codeblock> <p>The length of the message is the length of the templated
+class, which in this example is also 16.</p> <p><b>Creating a local message queue</b> </p> <codeblock id="GUID-139E6A88-4F52-5036-AF75-2B3CB91802F0" xml:space="preserve">const TInt KNumberOfSlots = 2;
+RMsgQueueBase queue;
+TInt ret = queue.CreateLocal(KNumberOfSlots, RMsgQueueBase::KMaxLength);
+        </codeblock> <p>This creates a local queue with 2 message slots that
+have the maximum possible message size. <i>In practice</i>, you would use
+the template class <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref> rather than the base class <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref>.</p> <p><b>Opening a named global queue</b> </p> <codeblock id="GUID-9DCB3D58-0690-50BD-A650-DD78FBFA6447" xml:space="preserve">_LIT(KGLobalName, "GlobalMessageQueue");
+RMsgQueueBase queue;
+TInt messageSize = 0;
+TInt ret = queue.OpenGlobal(KGLobalName1);
+If (ret == KErrNone)
+    {
+    messageSize = queue.MessageSize();
+    }
+        </codeblock> <p>This opens the global named message queue called <codeph>GlobalMessageQueue</codeph>.
+The message size used within this queue is queried by calling <codeph>MessageSize()</codeph>.
+If the queue does not exist <codeph>OpenGlobal()</codeph> returns <codeph>KErrNotFound</codeph>.</p> <p>Note
+that using an illegal message size when writing to, or reading from, a queue
+is a programming error. <i>In practice</i>, you would use the templated class <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref> rather
+than the base class <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref> to avoid this problem.</p> </section>
+<section id="GUID-2C05D532-9353-5E83-A8D8-1EACB9D44662"><title>Sending a message
+to the queue</title> <p>A message is sent to a message queue by calling <codeph>Send()</codeph> or <codeph>SendBlocking()</codeph> on
+the message queue handle. <codeph>Send()</codeph> returns the error code <xref href="GUID-F9E0EF8B-4EF5-3E35-811A-00B8F9CCF2FA.dita"><apiname>KErrOverflow</apiname></xref> if
+the queue is full, <codeph>SendBlocking()</codeph> waits until there is space
+in the queue.</p> <p>The following example creates a global named queue, and
+sends 2 integer to values to it. The first call to <codeph>Send()</codeph> returns
+an error if the queue is full, the call to <codeph>SendBlocking()</codeph> waits
+until there is space in the queue. Although the example code uses the base
+class <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref>, <i>in practice</i> you would use the
+templated class <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref>, to avoid the risk of passing
+an invalid length, message size, or an invalid data pointer.</p> <codeblock id="GUID-870BFC97-AB6A-5F44-BE3B-BFE2D979CF15" xml:space="preserve">_LIT(KGLobalName, "GlobalMessageQueue");
+RMsgQueueBase mqueue;
+
+TInt ret = mqueue.CreateGlobal(KGLobalName1, 1, sizeof (TInt));
+if (ret == KErrNone)
+    {
+    TInt src = 45;
+    ret = mqueue.Send(&amp;src, sizeof (TInt));
+    TBool full = (ret == KErrOverflow);
+
+    //blocking send
+    src = 32;
+    mqueue.SendBlocking(&amp;src, sizeof(TInt));
+    mqueue.Close();
+    }
+        </codeblock> </section>
+<section id="GUID-683F69D9-CC59-5F8C-A65B-E69D98737A96"><title>Receiving a
+message from the queue</title> <p>A message is received from a message queue
+by calling <codeph>Receive()</codeph> or <codeph>ReceiveBlocking()</codeph> on
+the message queue handle. <codeph>Receive()</codeph> returns the error code <xref href="GUID-3673F75F-655F-3561-BD56-F7E1C6980810.dita"><apiname>KErrUnderflow</apiname></xref> if
+the queue is empty, <codeph>ReceiveBlocking()</codeph> waits until there is
+data in the queue.</p> <p>The following example opens a global named queue
+and receives 2 integer values from it. The first call to <codeph>Receive()</codeph> returns
+an error if the queue is empty, the call to <codeph>ReceiveBlocking()</codeph> waits
+until there is data available in the queue. Note also that using the base
+class <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref> rather than the templated class <xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname>RMsgQueue</apiname></xref> risks
+raising panics if the length specified is not the same as the message size
+specified when the queue was originally created, or if the pointer to the
+receive buffer is not a valid address.</p> <codeblock id="GUID-9EBE78E0-F7A4-5764-A182-DF7C87E18026" xml:space="preserve">_LIT(KGLobalName, "GlobalMessageQueue");
+RMsgQueueBase mqueue;
+
+TInt ret = mqueue.OpenGlobal(KGLobalName1);
+if (ret == KErrNone)
+    {
+    TInt data;
+    ret = mqueue.Receive(&amp;data, sizeof (TInt));
+    TBool empty = (ret == KErrUnderflow);
+
+    //blocking receive
+    mqueue.ReceiveBlocking(&amp;data, sizeof(TInt));
+    mqueue.Close();
+    }
+        </codeblock> </section>
+<section id="GUID-1647018E-85C2-58DC-A97A-F90580D9D4E2"><title> Waiting for
+messages or space</title> <p>It is possible to be notified:</p> <ul>
+<li id="GUID-C67C5535-12C4-5AA6-9E84-947CF4FABCA9"><p>when a queue has messages,
+by calling <codeph>NotifyDataAvailable()</codeph> on the base class <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref> </p> </li>
+<li id="GUID-307D0C2E-CF65-5572-8BE9-9F9A63B331FC"><p>when a queue has space
+for more messages, by calling <codeph>NotifySpaceAvailable()</codeph> on the
+base class <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref>.</p> </li>
+</ul> <p>Note that the calling <codeph>NotifyDataAvailable()</codeph> when
+such a request is still outstanding or calling <codeph>NotifySpaceAvailable()</codeph> when
+such a request is already outstanding, results in the calling thread being
+panicked</p> <p>Notification requests can be cancelled by calling <codeph>CancelDataAvailable()</codeph> or <codeph>CancelDataAvailable()</codeph> respectively.</p> <codeblock id="GUID-960DCF78-0849-59B7-ADF4-95F24EC5B987" xml:space="preserve">TRequestStatus stat;
+mqueue.NotifyDataAvailable(stat);
+mqueue.CancelDataAvailable();
+User::WaitForRequest(stat);
+        </codeblock> </section>
+<section id="GUID-A5EABF21-FB2C-5B91-9007-40B4FBE04269"><title>Querying a
+Queue’s Size</title> <p>The size of the message slot can be queried by calling <codeph>MessageSize()</codeph> on
+the handle. This is useful when a queue is opened, as the calling thread is
+panicked if the size is out of range on a <codeph>Send()</codeph> or if the
+size is not exact on a <codeph>Receive().</codeph> </p> </section>
+<section id="GUID-72033282-9E2F-5E8E-8D78-1B8F6DF42D82"><title>An example
+of a type specific queue</title> <p>The size of the message is the size of
+the type, and has the same restrictions as the base class, namely it must
+be greater than 0, a multiple of 4 bytes and not greater than <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita#GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2/GUID-2E514C07-6917-3DDD-A2E6-CD09A9CD2A6D"><apiname>RMsgQueueBase::KMaxLength</apiname></xref>.</p> <codeblock id="GUID-88F3E2B6-F4B7-53B1-A275-C4AB6BA53448" xml:space="preserve">class TTemplateTestData
+    {
+public:
+    TTemplateTestData();
+    TTemplateTestData(TInt a, TUint b, TUint8 c, TBool d, TInt e);
+
+public:
+    TInt first;
+    TUint second;
+    TUint8 third;
+    TBool fourth;
+    TInt fifth;
+    };
+
+    {
+    ....
+    RMsgQueue&lt;TTemplateTestData&gt; templateQueue;
+
+    TTemplateTestData ch(1,2,3,ETrue,4);
+    TTemplateTestData ch2;
+    TTemplateTestData ch3;
+
+    templateQueue.CreateLocal(12); 
+    templateQueue.Send(ch);
+    templateQueue.Receive(ch2);
+    ....
+    templateQueue.Close();
+    ...
+    }
+        </codeblock> <p>Note, the size of the type (i.e. the size of the message)
+must be a multiple of 4 bytes.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2F64B579-73D3-548A-9104-16483AF77BCB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2F64B579-73D3-548A-9104-16483AF77BCB" xml:lang="en"><title>Dynamic Arrays</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e218167_href.png has changed
Binary file Symbian3/SDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53-master.png has changed
Binary file Symbian3/SDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e251555_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2F987147-1435-55F1-B61C-8413C4AD8424.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-2F987147-1435-55F1-B61C-8413C4AD8424"><title>Direct file store structure</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The general structure of a direct file store, from the point of view of the physical file containing the store, is illustrated below.</p> <fig id="GUID-B9A986BB-322A-5432-BB12-92B1934954B6"><image href="GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e334574_href.png" placement="inline"/></fig> <p>The header is the content of the descriptor returned by the <codeph>Des()</codeph> member function of <codeph>TCheckedUid</codeph>; this contains the file store type and checksum; the length of the data is the size of a <codeph>TCheckedUid</codeph> object. Note that <codeph>TCheckedUid</codeph> is not part of the public API.</p> <p>The header is followed by the root stream ID. As the value of a stream ID is also the offset of that stream from the start of the host, this gives the offset of the root stream.</p> <p>The root stream ID is followed by all the streams; the root stream is the last stream.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2F9BCBC4-A657-5B16-824E-5E96DA22AD00.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2F9BCBC4-A657-5B16-824E-5E96DA22AD00" xml:lang="en"><title>Search-Sort Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to search and sort messages using the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref> class. </p> <p>You can run a search-sort operation using the following methods in the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref> class: </p> <ul><li id="GUID-431C63C0-A3F5-5E9A-A1F2-E6F78A1BB150"><p>to run a new search-sort query on a particular directory: </p> <codeblock id="GUID-634CD218-428B-5C5E-8D2E-8069CECD8473" xml:space="preserve">IMPORT_C void RequestL (CMsvSearchSortQuery* aQuery, TBool aMarkQuery, TRequestStatus&amp; aQueryStatus, TInt aIterator=0)</codeblock> </li> <li id="GUID-67D5FE7F-3575-5602-BCD2-2333B091308A"><p>to run a search-sort query that has already been performed: </p> <codeblock id="GUID-9A21F428-213D-585B-92D3-F10604188675" xml:space="preserve">IMPORT_C void RequestL (TInt aQueryId , TRequestStatus&amp; aQueryStatus, TInt aIterator=0)</codeblock> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2FAB8281-569A-52BE-8BC8-A2D378068706" xml:lang="en"><title>Caching</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In Symbian OS versions earlier than 9.4, index entries were stored in a
+single index file in a permanent file store and the entire file was loaded
+into RAM on start up. In Symbian OS version 9.5 index entries are stored in
+an SQL database and only the most recently used index entries are cached in
+RAM. </p>
+<p>The following figure shows how a client request is completed using the
+cache functionality in the Message Server. </p>
+<fig id="GUID-43D2AE30-9221-500A-B934-5D3636168273">
+<title>           Caching architecture          </title>
+<image href="GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e256631_href.png" placement="inline"/>
+</fig>
+<section><title>Creating and maintaining free space in memory</title> <p>Memory
+allocation to the cache is done incrementally, to reduce the Message Server
+start up time. When the Message Server starts, only a percentage of the maximum
+cache size (<codeph>MsvMaximumCacheSize</codeph>) is allocated to cache. The
+percentage is specified by the <codeph>MsvInitialCacheCreation</codeph> parameter.
+The next iteration of memory allocation is not initiated until the memory
+threshold (set using the <codeph>MsvCacheThreshold</codeph> parameter) is
+reached. The subsequent memory allocation is always done by a low priority
+active object. </p> <p><b>Example</b> </p> <p>The memory allocation strategy
+is illustrated in the following figures, based on the default values (shown
+in the preceding table). </p> <p>When Message Server starts, the cache is
+created with an initial size of 410KB (40 percent of 1024KB). If 70 percent
+of the free space in the cache gets used the server allocates an additional
+205KB (20 percent of 1024). </p> <fig id="GUID-CA4A08C8-C4E8-575F-8F03-F3D1F6579E5F">
+<image href="GUID-B459E37A-BECE-5087-9827-C93310890674_d0e256663_href.png" placement="inline"/>
+</fig> <p>Message Server can make two further 205KB allocations which it does
+as use reaches 70 percent of the memory already allocated. </p> <fig id="GUID-21A40614-046B-56DD-9DDD-34B2F9681B5C">
+<image href="GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e256671_href.png" placement="inline"/>
+</fig> <p>If more than 70 percent of the first two allocated memory chunks
+is used, an additional 20 percent of memory is added to the free space. </p> <fig id="GUID-EBF4FF85-D6D6-518C-9391-C3AFF8821F83">
+<image href="GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e256679_href.png" placement="inline"/>
+</fig> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F" xml:lang="en"><title>resource</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><codeph>resource</codeph>  <varname>resource-file-list</varname> </p>
+<p><note> From v9.0, applications need to specify the directory
+for the built resource. Use the start resource syntax to do this.</note>.</p>
+<p>Use the <codeph>resource</codeph> statement, to specify resource files
+for application projects. The makefile will build the resource file into the
+target directory.</p>
+<p>Each resource file should be given with its extension, e.g. <filepath>squash.rss</filepath>.</p>
+<p>If more than one language is specified with the <codeph>lang</codeph>,
+then each resource will be compiled multiple times, once for each language
+specified.</p>
+<p>If you have a system project rather than an application, use the <codeph>systemresource</codeph> statement.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-2FED5145-58E4-5560-8E52-6BD499EECE13.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-2FED5145-58E4-5560-8E52-6BD499EECE13" xml:lang="en"><title>Root Server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Root Server managed the C32 process in which all the Communications Servers run inside, including the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Sockets Server</xref>, the <xref href="GUID-D49696D1-4B84-56B5-909D-A15F599F4B6D.dita">Telephony Server</xref> and the <xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial Communications Server</xref>. </p> <p>The Root Server is only of interest to Device Creators since the Root Server does not provide any publishedAll APIs. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30066989-4A0F-5000-9488-AA7E50E2B871.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-30066989-4A0F-5000-9488-AA7E50E2B871"><title>Graphics Context Settings</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an introduction to the graphics context settings. </p> <section><title>Drawing mode</title> <p>This is used to determine the logical operation used to put pen or brush color onto the graphics device. The usual modes are: no effect; write color; and exclusive or. Other possible logical combinations are supported. </p> </section> <section><title>Pen color, line size and style</title> <p>The pen is used for free line and shape outline drawing and also for text. The line styles include solid and various dot and dash combinations. Lines may be drawn in various sizes. </p> </section> <section><title>Brush color, style and origin</title> <p>The brush is used for filling areas drawn with the shape primitives, and also for text background fills. You can specify a color, pattern and style. The brush also has an origin point for the pattern. The way the brush fills depends on the drawing mode. A bitmap pattern may be used and then discarded. </p> </section> <section><title>Text font and a justification mode</title> <p>Font specification allows for a variety of <keyword>typeface</keyword> s and styles for sizes (bold, underline, italic, etc.). Text color (foreground) depends on the pen color and drawing mode. Text background fill depends on the brush settings. Text justification may be set for <keyword>word justification</keyword>, or full <keyword>WYSIWYG</keyword> with <keyword>character
+          justification</keyword>. A font may be used and then discarded. </p> </section> <section><title>Co-ordinate origin</title> <p>All GDI operations take place within a co-ordinate system. By default the pixel in the top left corner of the screen is the origin, and has co-ordinates (0,0). The co-ordinates of the pixel in the bottom right of the screen depend on the dimensions of the display in use. </p> <p>There is a function to set the position of the origin of a graphics context: <codeph>CGraphicsContext::SetOrigin()</codeph>. All subsequent drawing operations are then done relative to this new origin. </p> </section> <section><title>Internal drawing position</title> <p>A graphics context maintains an internal drawing position relative to its origin. This can be set, without drawing, by using: </p> <ul><li id="GUID-F17EB8D8-27B4-5093-91CA-721D339BD73D"><p> <codeph>CGraphicsContext::MoveTo()</codeph>  </p> </li> <li id="GUID-FD179051-4779-56A5-B32E-306A3AAC4826"><p> <codeph>CGraphicsContext::MoveBy()</codeph>  </p> </li> </ul> <p>The internal drawing position is also changed to the last point of the line(s) drawn by the operations: </p> <ul><li id="GUID-7D7B8A79-4593-5021-847F-7625B246A62E"><p> <codeph>CGraphicsContext::DrawLine()</codeph>  </p> </li> <li id="GUID-5CC65017-4AF5-55E0-9724-70E1A9E284DF"><p> <codeph>CGraphicsContext::DrawLineTo()</codeph>  </p> </li> <li id="GUID-64CAE133-66BA-5C17-8131-EBC412D6CD76"><p> <codeph>CGraphicsContext::DrawLineBy()</codeph>  </p> </li> <li id="GUID-FD1F1049-8E24-57F5-A2E3-3E9855BAA400"><p> <codeph>CGraphicsContext::DrawPolyline()</codeph>  </p> </li> </ul> <p>The internal drawing position is used as the start point of the line drawn by: </p> <ul><li id="GUID-E750002C-94E9-56A0-9BE8-2251C67A5128"><p> <codeph>CGraphicsContext::DrawLineTo()</codeph>  </p> </li> <li id="GUID-7D2216F4-7738-5995-A057-040916422B87"><p> <codeph>CGraphicsContext::DrawLineBy()</codeph>  </p> </li> </ul> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e301630_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-301193C2-666C-5A57-B898-A04EBB63E533.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-301193C2-666C-5A57-B898-A04EBB63E533" xml:lang="en"><title>How to
+use a polymorphic interface DLL</title><shortdesc>The example issues a greeting to the person whose name is passed
+in the descriptor <codeph>aName</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following code can use any implementation of the interface defined
+by the example class, <codeph>CMessenger</codeph>, to issue a simple greeting.</p>
+<p> The name of the DLL, which contains the implementation to be used, is
+passed in the descriptor <codeph>aLibraryName</codeph>.</p>
+<codeblock id="GUID-3BBCFE9F-7D77-563A-AE87-4BBE2B7F195E" xml:space="preserve">void UseDllL(const TFileName&amp; aLibraryName,const TDesC&amp; aName)
+    {
+          // Use RLibrary object to interface to the DLL
+    RLibrary library;
+          // Dynamically load the DLL
+    TUidType uidType(KDynamicLibraryUid,KMessengerUid);
+    User::LeaveIfError(library.Load(aLibraryName,uidType));
+          // Function at ordinal 1 creates new CMessenger
+    TLibraryFunction entry=library.Lookup(1);
+          // Call the function to create new CMessenger
+    CMessenger* messenger=(CMessenger*) entry();
+          // Push pointer to CMessenger onto the cleanup stack
+    CleanupStack::PushL(messenger);
+          // Second-phase constructor for CMessenger
+    messenger-&gt;ConstructL(console, aName);
+          // Use Cmessenger object to issue greeting
+    messenger-&gt;ShowMessage();
+          // Pop CMessenger object off cleanup stack and destroy
+    CleanupStack::PopAndDestroy();
+          // Finished with the DLL
+    library.Close();
+    }</codeblock>
+<section id="GUID-738C30CA-1A75-4038-8BB4-68682D3C539C"><title>Notes:</title> <ul>
+<li id="GUID-01B13D4C-7028-5987-B993-213E6FE9E571"><p>the <codeph>RLibrary</codeph> class
+is the interface to dynamically loaded DLLs. It encapsulates a handle to the
+DLL.</p> </li>
+<li id="GUID-726B2AA5-7674-5DA1-B6FA-EB10F85D7D1F"><p>The DLL has a <codeph>TUidType</codeph> which
+is assigned when the DLL is built. This is ensures that the DLL that is loaded
+complies with the <codeph>CMessenger</codeph> protocol.</p> </li>
+<li id="GUID-F5F2DAE3-62B2-5690-92FF-85AF3F8C987F"><p>If a specific implementation
+of the DLL is to be used, then specify a third UID when declaring the TUidType.
+Each specific implementation of the DLL is uniquely identified by the third
+UID.</p> </li>
+<li id="GUID-C24783C0-CCFA-5AF1-9941-7FB5D0504756"><p>A pointer to the ordinal
+1 function in the DLL is fetched by calling the <codeph>Lookup()</codeph> member
+function of <codeph>RLibrary</codeph> and passing it a parameter value of
+1. The returned function has type <codeph>TLibraryFunction</codeph>; such
+a function takes no parameters and returns a <codeph>TAny*</codeph> type.</p> </li>
+<li id="GUID-C1FB1A45-A02A-5B10-B1EA-AE84982DB6BC"><p>The function pointer
+is assigned to the variable called <codeph>entry</codeph> and the function
+itself is called to construct a <codeph>CMessenger</codeph> object and return
+a pointer to that object. The implementation uses the <codeph>new (ELeave)</codeph> operator
+to allocate the new <codeph>CMessenger</codeph> object and invoke the C++
+default constructor.</p> </li>
+<li id="GUID-1A7CBF75-9059-5AED-ABA9-DF649D613988"><p>As no arguments are
+passed to the function, a second-phase constructor, <codeph>ContructL()</codeph>,
+is called to finish off construction.</p> </li>
+<li id="GUID-B58DFA44-368F-578B-B35D-7DBF1C67A83A"><p>The <codeph>CMessenger</codeph> object
+can then be used like any other C++ object. In this example, the <codeph>ShowMessage()</codeph> function
+is used to emit a greeting in whatever way the implementation chooses. In
+more complex cases, the object could have a long lifetime, and create many
+dependent objects.</p> </li>
+<li id="GUID-67D8B0AA-8425-52C1-851A-D022B7847448"><p>When the <codeph>CMessenger</codeph> object
+is no longer needed, the DLL is unloaded using <codeph>RLibrary::Close()</codeph>.
+Do not call any code in the DLL after the library has been closed. It is important
+to note, therefore, that the library must not be closed until the object constructed
+by the DLL, <i>and all its dependent objects</i>, have been destroyed.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00" xml:lang="en"><title>Selecting
+a Remote Device</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Thought should be given to the way in which a remote device will be selected
+for connection before moving on to begin the actual connection. This document
+discusses some of the issues that should be considered. </p>
+<section><title>Methods for selecting a remote device</title> <p> An application
+can determine the remote device to which it should talk in several ways, it
+may be:  </p><ul>
+<li><p> hard-wired,  </p> </li>
+<li><p> a stored preference (application stores a previously selected device
+profile to reuse),  </p> </li>
+<li><p> selected by the user, or  </p> </li>
+<li><p> determined programmatically.  </p> </li>
+</ul><p> Each of these may be appropriate in different situations. In the
+first couple of cases, the address of the remote device is simply retrieved
+from storage. Functionality for the third case is provided by the<xref href="GUID-C49F63A4-BA9D-5C99-8C82-EB3163E30D3E.dita">Bluetooth
+UI</xref> . </p><p> The final case, the program itself determining the remote
+device, could be adopted for the following reasons: </p><ul>
+<li><p> to provide a customised device selection UI to the user  </p> </li>
+<li><p> to select a device based on some other criteria, for example, "use
+the least busy LAN access point"  </p> </li>
+</ul><p> The next page,<xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring
+ About Remote Devices</xref> , discusses in detail how to go about this.  </p></section>
+<section><title>Where Next?</title> <p>This tutorial set takes you through
+all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul>
+<li id="GUID-36903ABB-D4DF-5FFC-B334-063144CC56C8-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-3-3-1"><p> <b>Selecting a Remote
+Device</b> - This document </p> </li>
+<li id="GUID-29C87A1A-3F04-5248-85AC-6F6E055B2F83-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-3-3-2"><p> <xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring
+About Remote Devices</xref>  </p> </li>
+<li id="GUID-C547A603-E73A-57ED-BB70-B3D4510EDFBB-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-3-3-3"><p> <xref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita">Inquiring
+About Services on a Remote Device</xref>  </p> </li>
+<li id="GUID-6E861019-D849-5D8E-B8ED-FB6D9EDBE1F4-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-3-3-4"><p> <xref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita">Connecting
+and Transferring Data to a Remote Device</xref>  </p> </li>
+<li id="GUID-6760B04D-1117-5691-ABDA-62B99DC9CFF4-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-3-3-5"><p> <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">Using
+security on outgoing sockets</xref>  </p> </li>
+</ul> </section>
+<section><title>Where Next?</title> <p>This tutorial set takes you through
+all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul>
+<li id="GUID-36903ABB-D4DF-5FFC-B334-063144CC56C8-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-4-3-1"><p> <b>Selecting a Remote
+Device</b> - This document </p> </li>
+<li id="GUID-29C87A1A-3F04-5248-85AC-6F6E055B2F83-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-4-3-2"><p> <xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring
+About Remote Devices</xref>  </p> </li>
+<li id="GUID-C547A603-E73A-57ED-BB70-B3D4510EDFBB-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-4-3-3"><p> <xref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita">Inquiring
+About Services on a Remote Device</xref>  </p> </li>
+<li id="GUID-6E861019-D849-5D8E-B8ED-FB6D9EDBE1F4-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-4-3-4"><p> <xref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita">Connecting
+and Transferring Data to a Remote Device</xref>  </p> </li>
+<li id="GUID-6760B04D-1117-5691-ABDA-62B99DC9CFF4-GENID-1-6-1-24-1-1-6-1-8-1-3-1-3-1-2-4-3-5"><p> <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">Using
+security on outgoing sockets</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D"><title>ECOM Architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In C++, the existence of abstract base classes and virtual functions allows the programs to call, or access interfaces without knowing the actual implementation. This mechanism gives a flexibility of writing the implementation independent of the interface. The implementations are known as Plug-ins. </p> <p>When an application wishes to use a plug-in, an object is to be instantiated to perform the required processing. The object specifics are not known until run-time. The general characteristics of the processing are known, and these are presented as an interface API. </p> <p>In early versions of Symbian platform, implementations were provided by <xref href="GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita">polymorphic interface DLLs</xref>. All the frameworks within the Symbian platform that needed to use plug-ins had to provide own mechanisms for the clients to discover and instantiate the implementations. The above method resulted in duplication of functionality. </p> <p>The Plug-in (ECom) Framework introduces a generic framework that provides a single mechanism to: </p> <ul><li id="GUID-6460F0E0-26A3-5038-B8C2-0F4706547600"><p>Register and discover interface implementations </p> </li> <li id="GUID-4045CA55-1286-5ACD-A532-240667125469"><p>Select an appropriate implementation </p> </li> <li id="GUID-78AE02BB-13BE-5DA0-B2F3-CC376654589B"><p>Provide version control for plug-ins </p> </li> </ul> <section><title>Essentials of a Plug-In System</title> <p>A client wishes to access an object to perform some processing. The specifics of this object are not known until run-time. The general characteristics of the processing are known, and are defined in an interface, but several variants of required processing could exist, which are provided by implementations that support the interface. </p> <p>There are four clearly-defined roles in such a system. </p> <ul><li id="GUID-B77969AC-EE5C-53C1-8906-07CF3B2BD11A"><p>The <b>Client</b> that wishes to access services. </p> </li> <li id="GUID-2E175B1C-7A50-5A00-BBF6-C54F2FC71FFA"><p>The <b>Interface API</b> that defines how to request services. </p> </li> <li id="GUID-C8F67E1A-2175-5093-BCFD-06BD90EF59C6"><p>The <b>Interface Implementation </b> that provides the required processing. </p> </li> <li id="GUID-A6817508-C5D1-5A7A-B50A-667272292362"><p>The <b>Framework</b> that provides the clients with the required access to the implementations. </p> </li> </ul> <p>The relationships can be represented as follows: </p> <fig id="GUID-185BDADA-4576-5175-B53B-03C2633E9EA0"><title>
+             Plug-in relationships 
+          </title> <image href="GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e150867_href.png" placement="inline"/></fig> <p>The instantiation mechanism forms the backbone of such a system, and is responsible for providing the services that identify, and load the correct interface implementation at run-time. ECom is such a framework. </p> <p>We'll now look at the system from the perspectives in turn of each of the interface client, interface implementation, and interface definition, before summarising the functions of the ECom. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-30382EFD-90D5-570C-A6CD-19D34360F329" xml:lang="en"><title>GraphicsShell:
+drawing and zooming</title><shortdesc>A TechView application that demonstrates drawing points, lines
+and shapes, and zooming a bitmap and text. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c01568a1-21f6-4508-8de7-9733ae2737a1.zip" scope="external">GraphicsShell.zip</xref></p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a92c7d47-fa68-49c6-9e43-c9c2e650f219.zip" scope="external">CommonGraphicsExampleFiles</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c01568a1-21f6-4508-8de7-9733ae2737a1.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a92c7d47-fa68-49c6-9e43-c9c2e650f219.html" scope="peer">browse</xref>.  </section>
+<section><title>Description</title> <p> <filepath>GraphicsShell</filepath> provides
+an application shell, and two concrete controls. </p> <p> <codeph>CGraphicExampleControl</codeph> is
+a control class, derived from <codeph>CCoeControl</codeph>, which links the
+app shell to the particular controls. </p> <p> <codeph>CDrawControl</codeph> illustrates
+the drawing of shapes in a window. The code draws points, lines and shapes;
+this exercises a variety of drawing functions provided by the window graphics
+context such as <codeph>MoveTo()</codeph>, <codeph>DrawLineTo()</codeph>, <codeph>DrawArc()</codeph> etc. </p> <p> <codeph>CZoomControl</codeph> illustrates
+the use of zooming. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-339EC4C5-89DC-3972-9579-6DD38D418317.dita"><apiname>TPoint</apiname></xref></p><p><xref href="GUID-CCD7C54F-C3D6-3F92-B6CC-1B6116170C6C.dita"><apiname>TRectTSize</apiname></xref></p><p><xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref></p><p><xref href="GUID-F84C7F40-6DEB-39D1-B172-CB0CC3918E27.dita"><apiname>TRgb</apiname></xref></p><p><xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref></p><p><xref href="GUID-052E4F6B-71C5-304C-B387-07A2F6F9900B.dita"><apiname>TFontSpec</apiname></xref></p><p><xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref></p><p><xref href="GUID-DDE4C9C0-7218-385E-B239-0DEFDE19FCCC.dita"><apiname>TZoomFactor</apiname></xref></p><p><xref href="GUID-4791F2C1-C351-3824-8784-3161F5B65DCA.dita"><apiname>MGraphicsDeviceMap</apiname></xref></p><p><xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref></p></section>
+<section><title>Build</title> <p>The source code for this example application
+can be found in the directory: </p> <p> <filepath>examples\Graphics\GraphicsShell</filepath>  </p> <p>It
+may be in the directory in which you installed Symbian platform, or it may
+be in <filepath>src\common\developerlibrary\</filepath>. It includes the two
+project files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian platform build
+process</xref> describes how to build this application. For the emulator,
+an application called <filepath>GraphicsShell.exe</filepath> is created in <filepath>epoc32\release\winscw\&lt;udeb
+or urel&gt;\</filepath>. </p> </section>
+<section><title>Usage</title> <ol id="GUID-911BEED5-308F-5700-A32B-C09194AEFBA7">
+<li id="GUID-2E6EB0AA-B311-53DD-B0CA-BE5E4AA04C7B"><p>Launch the emulator: </p> <p> <filepath>\epoc32\release\winscw\&lt;udeb
+or urel&gt;\EPOC.EXE</filepath>. </p> </li>
+<li id="GUID-6ECA1727-FC1E-5659-B805-1AB1EF7C9407"><p>Click on <systemoutput>GRAPHICSSHELL</systemoutput> to
+run the application. If using the <i>TechView</i> emulator, this will be in
+the <i>Extras</i> menu. </p> </li>
+<li id="GUID-F47B863C-2622-5FA7-A19F-61C386763B01"><p>The controls are listed
+on the menu <systemoutput>List of                 Programs</systemoutput>.
+Press the appropriate menu item to select a specific control. </p> </li>
+<li id="GUID-79D02958-B4F8-5635-862E-17B9E0000666"><p>Step through each phase
+of the example by pressing the space bar or by tapping on the window drawn
+by that example. </p> </li>
+</ol> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30647807-A0D2-4D96-975A-BF1800749977.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-30647807-A0D2-4D96-975A-BF1800749977" xml:lang="en"><title>Configuring the application’s
+platform security settings in the emulator</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can adjust certain security settings in the emulator. The emulator's
+platform security settings are all enabled by default.</p>
+<p>Typical use cases include: </p>
+<ul>
+<li><p>Turning platform security diagnostics on or off</p></li>
+<li><p>Turning platform security enforcement on or off</p></li>
+<li><p>Disabling a set of capabilities</p></li>
+</ul>
+<p>Important implementation considerations include:</p>
+<ul>
+<li><p>You need to use the emulator to set platform security settings.
+The feature is not available on production mobile devices.</p></li>
+</ul>
+<section id="GUID-25876C58-7EE1-46F3-8800-E0CD398170B6"><title>Configuring the settings in the emulator</title>
+<p>You can enable or disable platform security settings in the emulator
+through the <b>Tools &gt; Preferences</b> menu or by editing the <codeph>epoc.ini</codeph> file.
+The following illustration shows the options you have in the <b>Platform security</b> tab
+of the Preferences window.</p>
+<fig id="GUID-F4DDFC46-AF97-45B5-816C-D4F94182BA2C"><title>Preferences window in the emulator</title><image href="GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e9926_href.png"/></fig>
+<p>To set the platform security settings:</p>
+<ol>
+<li id="GUID-6ECF89E5-CCF5-431D-9A38-3A472F3B628F"><p>In the emulator,
+open the <b>Tools &gt; Preferences</b> menu and go to the <b>Platform Security</b> tab.</p>
+<p>Alternatively, open the <codeph>epoc.ini</codeph> file which is located
+in the <codeph>...\Epoc32\Data\</codeph> folder on your computer.</p></li>
+<li id="GUID-26508845-D52B-476F-96AC-BE3AB0F64124"><p>Modify the
+desired settings:</p>
+<ul>
+<li><p>To allow platform security to emit a diagnostics message
+when a check fails, tick the <b>Enable security debug messages</b> checkbox
+in the Platform Security tab. </p><p>To enable this setting in the <codeph>Epoc.ini</codeph> file,
+include the line <codeph>PlatSecDiagnostics ON</codeph>. To disable this setting,
+modify the line to <codeph>PlatSecDiagnostics OFF</codeph>. </p><p>When
+the settings is enabled, the diagnostics messages are logged to <xref format="" href="http://wiki.forum.nokia.com/index.php/Epocwind.out" scope="external"><codeph>epocwind.out</codeph></xref> in
+a Windows temporary directory. The following is an example of a diagnostics
+message:</p>
+<codeblock id="GUID-FE9A46AF-D0A4-40D7-847D-9BF67FE1BFBD" xml:space="preserve">153.600	*PlatSec* WARNING - Capability check would have failed - A 
+Message (function number=0x00000000) from Thread 
+Screenshot[20000555]0002::screenshot, sent to Server !MsvServer, was checked by 
+Thread !MsvServer[1000484b]0001::!MsvServer and was found to be missing the 
+capability: ReadUserData.</codeblock>
+</li>
+<li><p>To enable platform security to take action after a check
+fails and a diagnostics message is sent,  tick the <b>Perform capability checks</b> checkbox
+in the Platform Security tab.</p><p>To enable this setting in the <codeph>Epoc.ini</codeph> file,
+include the line <codeph>PlatSecEnforcement ON</codeph>. To disable this setting,
+modify the line to <codeph>PlatSecEnforcement OFF</codeph>.</p></li>
+<li><p>To disable a check for specific capabilities, choose the
+ones you wish to disable in the <b>Granted capabilities for all applications:</b> list
+in the Platform Security tab.</p><p>To disable a check in the <codeph>Epoc.ini</codeph> file,
+include <codeph>PlatSecDisabledCaps</codeph>, followed by the capabilities
+to be disabled. For example, <codeph>PlatSecDisabledCaps ReadUserData+WriteUserData+UserEnvironment</codeph>.</p>
+</li>
+</ul>
+</li>
+</ol>
+<p>For more details on the settings you can determine, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/html/SDL_93/doc_source/ToolsAndUtilities93/Emulator/emulator-ref/EpocIniSyntax.guide.html#Emulator%2dref%2esyntax%2dini%2eplatsec" format="application/java-archive">Emulator configuration file: epoc.ini</xref>.</p>
+</section>
+<section id="GUID-BFB4DE7F-AC98-42AB-8763-FBA6D390D92A"><title>Additional information on platform security settings in the
+emulator</title>
+<p>For information on troubleshooting options, see <xref href="http://wiki.forum.nokia.com/index.php/How_to_troubleshoot_Platform_Security_issues" scope="external">How to troubleshoot Platform Security issues</xref>.</p>
+<p>For more information on the emulator, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/html/SDL_93/doc_source/ToolsAndUtilities93/Emulator/emulator/index.html#emulator%2etoc" format="application/java-archive">Emulator
+guide</xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3074D4E5-25EA-5DA0-877D-6E3086DCBDB5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3074D4E5-25EA-5DA0-877D-6E3086DCBDB5"><title> Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to Histogram. </p> <section><title>Purpose</title> <p>Histogram provides the functionality needed to work with histogram data in a specified format for an image (for example, luminance based histogram or average colour value histogram). </p> <p>The data generated can be application rendered. In this case the application gets histogram frequencies and renders them onto a bitmap. The data can also be camera rendered, meaning it is displayed directly in the viewfinder. In the camera rendered case, the client can specify properties of the histogram such as size, colour and position. </p> <p><b>Histogram Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-4A16C453-F70D-56AF-A438-6676CCB525D2"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-89E287A6-8149-3583-A342-246DA7D9DD98.dita"><apiname>ecamhistogram.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-AE2B970C-BCE8-3A17-AB2B-D5D51AB9F29E.dita"><apiname>ecamhistogram.lib </apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Histogram APIs. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Histogram is part of the camera component. </p> </section> <section><title>Description</title> <p>Histogram allows only one type per object. To allow multiple types of histogram for a given imaging mode, multiple histogram objects need to be created for that imaging mode. Histogram objects are created separately for still images, video, viewfinders and snapshots. Call-backs associated with still images, video and viewfinders notify clients about the generation of histogram data. For client histograms, the data is available in buffers. </p> <p> <xref href="GUID-B63B9FB7-0067-3563-A763-00A255716798.dita"><apiname>MhistogramV2Buffer</apiname></xref> interface provides only one buffer at a time. Unless new histogram data is available through MhistogramV2Buffer, the same histogram data is used for the image modes. </p> </section> <section><title>Key Histogram API Classes</title> <p>The key classes that make up the Histogram are as follows: </p> <ul><li id="GUID-936ED3D3-E2BC-5034-9B1D-18C2E8CE34BC"><p> <xref href="GUID-3EE49C9F-944F-3FA0-9B03-0BDCAE63A103.dita"><apiname>CcameraV2Histogram</apiname></xref>  </p> <p>Exposes an API for the client to get client histogram data and also to display the direct histogram on the screen. </p> </li> <li id="GUID-C04D32AC-2009-51AA-A391-3EF747E58071"><p> <xref href="GUID-32DD14F5-52D7-35F4-A8EE-8375CDC5A3D6.dita"><apiname>CcameraHistogram</apiname></xref>  </p> <p>A facade class, which is used to access camera histogram functionality. </p> </li> <li id="GUID-78978D2C-99C3-5456-816C-5A6DF8BF40DF"><p> <xref href="GUID-4E270B4A-074C-3531-9789-123C8AE899F0.dita#GUID-4E270B4A-074C-3531-9789-123C8AE899F0/GUID-CE9EB364-1142-3F9F-9DFF-7B1FAAC9FED7"><apiname>
+                CCamera::CCameraHistogram::PrepareHistogramL()</apiname></xref>  </p> <p>Set the properties of a histogram </p> </li> <li id="GUID-4390137D-B47C-56AA-A0AF-CDDA48E9DEA1"><p> <xref href="GUID-4E270B4A-074C-3531-9789-123C8AE899F0.dita#GUID-4E270B4A-074C-3531-9789-123C8AE899F0/GUID-CE93EB98-6389-3021-B9CA-05E37ACA2ED4"><apiname>CCamera::CCameraHistogram::StartHistogramL()</apiname></xref>  </p> <p>Request to start receiving histogram data. The camera calls the client's callback <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2</apiname></xref> interface, with event <xref href="GUID-B6C4A086-7DBC-31C1-9973-E4BBFAF9EE32.dita"><apiname>KUidECamEventCameraHistogram</apiname></xref>, when histogram data is available to be retrieved. </p> </li> <li id="GUID-251E1F54-6C79-5AB2-9426-7EB08FC35D5C"><p> <xref href="GUID-4E270B4A-074C-3531-9789-123C8AE899F0.dita#GUID-4E270B4A-074C-3531-9789-123C8AE899F0/GUID-E12BC60D-2AC3-335B-86A7-0E5B6896ABBA"><apiname>CCamera::CCameraHistogram::HistogramDataL() </apiname></xref>  </p> <p>Retrieve the histogram data from the Camera server. The data is returned in an <xref href="GUID-5064D139-1B97-394C-8C7D-417F72444F75.dita"><apiname>MHistogramBuffer</apiname></xref> object. </p> </li> <li id="GUID-C22A6354-A290-5594-91AA-13E045B7521B"><p> <xref href="GUID-4E270B4A-074C-3531-9789-123C8AE899F0.dita#GUID-4E270B4A-074C-3531-9789-123C8AE899F0/GUID-DC1D3897-F460-3378-89EA-1706B260A8DE"><apiname> CCamera::CCameraHistogram::StopHistogramL()</apiname></xref>  </p> <p>Stop receiving histogram notifications. Use <xref href="GUID-4E270B4A-074C-3531-9789-123C8AE899F0.dita#GUID-4E270B4A-074C-3531-9789-123C8AE899F0/GUID-97BF3872-0EFC-31B4-90F9-EFE16B375A7C"><apiname>CCamera::CCameraHistogram::DestroyHistogramL() </apiname></xref> to remove the histogram from the Camera server, and release its resources. </p> </li> <li id="GUID-35FF61D5-CA90-5787-8F81-69717090E901"><p> <xref href="GUID-D1A0B5FD-DFB6-3AE3-8D7A-A57E25C19795.dita"><apiname> McameraHistogram</apiname></xref>  </p> <p>Interface class for which the device creator must provide an implementation. </p> </li> <li id="GUID-F75B908C-4139-5ABC-A207-B44BB2799D3C"><p> <xref href="GUID-5633ECD5-C42B-360A-B74F-11621CA9BB54.dita"><apiname> MhistogramBuffer</apiname></xref>  </p> <p>Interface class to transfer histogram data from server to client. The buffer may contain multiple histograms. The class allows the client to access the data as a descriptor to a kernel. </p> </li> </ul> </section> <section><title>Using Histogram API</title> <p>Clients can use the histogram to: </p> <ul><li id="GUID-67EC0920-E61A-55A4-8D3E-B3D9F6ED212E"><p>Get histogram data of various types. </p> </li> <li id="GUID-5786364A-551A-5F31-99FF-8030C847B5BD"><p>Retrieve and modify the properties of a direct histogram including the background color, histogram color, its size, position and type. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Overview</xref> of Camera Framework </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-308A3F78-3DD6-443A-B021-B8E2C2DFEE4D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-308A3F78-3DD6-443A-B021-B8E2C2DFEE4D" xml:lang="en"><title>Dimming</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Dimming the screen</title><p>The entire screen is dimmed in the background when the <uicontrol>Options</uicontrol> and power menu, floating toolbars, notes, soft notifications, settings editors or queries are displayed.</p></section>
+<section><title>Dimming controls</title><p>In some situations, it may be necessary to dim unavailable controls. This is done on the component level so that a control has a normal and a dimmed state, e.g. toolbar button.</p><p>Dimming indicates that the control is temporarily not available. For example, function is not possible for the focused item, but for the other items in the view. Dimming should not be used if the user never sees the control in active state within that view. In this case unavailable control is to be hidden.</p></section>
+<section><title>Dimming the Options menu items</title><p>The <uicontrol>Options</uicontrol> menu items are never dimmed. Instead, unavailable commands are either simply not shown or an Information note is given explaining why that item cannot be used at the moment.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-308A481C-2280-59CE-AE85-83047B11BBE4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-308A481C-2280-59CE-AE85-83047B11BBE4" xml:lang="en"><title>Bluetooth PAN Profile Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial is designed for Symbian licensees only. Several APIs mentioned and used throughout this tutorial series are only available in a device creators kit environment. </p> <p>Note that some of the APIs demonstrated by this tutorial are classifed as <codeph>publishedPartner</codeph>, which means they are intended for use internally and by Symbian partners only. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e92570_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30B2AF3F-E120-5D47-AAA2-529555625B55.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-30B2AF3F-E120-5D47-AAA2-529555625B55" xml:lang="en"><title>How to use sessions, files, and directories</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30BB4435-C95C-5016-A86B-4E98311F9FE2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-30BB4435-C95C-5016-A86B-4E98311F9FE2" xml:lang="en"><title>Persistent Storage Guides</title><shortdesc>Guide documents for persistent storage. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30CAE438-6CC7-5532-8727-781B8E83574A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-30CAE438-6CC7-5532-8727-781B8E83574A" xml:lang="en"><title>Heap
+Locking in the Font and Bitmap Server </title><shortdesc>The Font and Bitmap Server's heap locking API is deprecated in
+Symbian OS v9.3 and later versions. This topic explains the rationale for
+this and how it affects existing applications that use the <codeph>CFBsBitmap::LockHeap()</codeph>, <codeph>CFBsBitmap::LockHeapLC()</codeph> and <codeph>CFbsBitmap::UnlockHeap()</codeph> functions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Heap locking in previous versions </title> <p>Prior to Symbian
+OS v9.3, the Font and Bitmap Server made a distinction between small bitmaps
+and large bitmaps. The data for large bitmaps was stored in a separate global
+memory heap where a de-fragmentation algorithm was used. When necessary, this
+algorithm moved bitmap data in the virtual address space. As a result it was
+possible for an application to allocate a new bitmap and trigger the de-fragmentation
+algorithm while an unrelated application accessed the data of another bitmap.
+From an application's point of view, this meant that the value returned by <codeph>CFbsBitmap::DataAddress()</codeph> could
+change unpredictably at any time. </p> <p>The solution was to lock the global
+memory heap by calling <codeph>CFbsBitmap::LockHeap()</codeph> or <codeph>CFbsBitmap::LockHeapLC()</codeph> before
+calling <codeph>CFbsBitmap::DataAddress()</codeph>. When the application finished
+accessing the bitmap data, it unlocked the global memory heap by calling <codeph>CFbsBitmap::UnlockHeap().</codeph> Internally
+the Font and Bitmap Server used a global mutual exclusion object to implement
+the heap locking functions and waited on it before performing any operation
+that could trigger the de-fragmentation algorithm. </p> <p>Although it was
+undocumented functionality, multi-threaded applications could use the heap
+locking functions as a way of synchronizing access to bitmaps shared among
+several threads, because calls to <codeph>CFbsBitmap::LockHeap()</codeph> and <codeph>CFbsBitmap::UnlockHeap()</codeph> translated
+into <codeph>Wait()</codeph> and <codeph>Signal()</codeph> operations on the
+global mutual exclusion object. </p> </section>
+<section><title>Removal of heap locking </title> <p><b>Use of a disconnected
+memory chunk </b> </p> <p>From Symbian OS v9.3, all bitmap data is kept in
+a disconnected global memory chunk. This is a new type of chunk that does
+not require the set of pages committed to physical memory to form a contiguous
+block in the virtual address space. A virtual address range much bigger than
+the amount of physical memory is reserved, and pages are committed to physical
+memory when allocating bitmaps and de-committed when freeing them. </p> <p>As
+a result, fragmentation in the reserved virtual address range is not a problem
+and fragmentation in the physical address space is handled transparently by
+the Memory Management Unit (MMU). Therefore, de-fragmentation is not necessary
+and bitmap operations do not need to move data belonging to other bitmaps. </p> <p><b>Removal
+of in-place operations </b> </p> <p>Some bitmap operations, such as <codeph>CFbsBitmap::Resize()</codeph>, <codeph>CFbsBitmap::Compress()</codeph> and <codeph>CFbsBitmap::CompressInBackground()</codeph>, can change the
+value returned by <codeph>CFbsBitmap::DataAddress()</codeph> because they
+may need to re-allocate memory. These functions have a new implementation.
+They now create a new bitmap object inside the Font and Bitmap Server and
+update the reference contained in the <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object.
+The old bitmap is destroyed immediately if it is referenced only by the <codeph>CFbsBitmap</codeph> object
+on which the re-allocating function was called. Otherwise, the old bitmap
+is flagged as <b>dirty</b> and its destruction is deferred until its reference
+count becomes zero. </p> <p>All of the functions in the <codeph>CFbsBitmap</codeph> class
+now check whether the referenced bitmap is dirty before proceeding. If it
+is, the Font and Bitmap Server updates the reference to point to the new bitmap.
+When all of the <codeph>CFbsBitmap</codeph> objects that referenced the old
+bitmap have had their references updated or have been deleted, the reference
+count of the old bitmap becomes zero and it is destroyed. </p> <p>The impact
+on performance of this change is negligible, because the dirty flag is tested
+in the context of the client thread and in most cases bitmaps are "clean". </p> <p>Sometimes
+multiple <codeph>CFbsBitmap</codeph> objects in different client threads reference
+the same bitmap. When a client thread calls a re-allocating function on a
+bitmap while another client thread is accessing the bitmap data through a
+pointer returned by <codeph>CFbsBitmap::DataAddress()</codeph>, there is no
+illegal memory access because the old bitmap still exists. This scenario typically
+occurs when an application calls <codeph>CFbsBitmap::CompressInBackground()</codeph> on
+a bitmap and continues to use it, because the compression is performed asynchronously
+at an unspecified time. </p> <p><b>Deprecation of the heap locking functions </b> </p> <p>The
+use of a disconnected memory chunk and the removal of in-place operations
+allow the Font and Bitmap Server to work without heap locking. Therefore, <codeph>CFbsBitmap::LockHeap()</codeph>, <codeph>CFbsBitmap::UnlockHeap()</codeph> and <codeph>CFbsBitmap::LockHeapLC()</codeph> are no longer necessary and
+have been deprecated.<b> These functions no longer provide any locking functionality
+and cannot be used as a  synchronization mechanism</b>. </p> <p>It is recommended
+that you replace all calls to <codeph>CFbsBitmap::LockHeap()</codeph> and <codeph>CFbsBitmap::UnlockHeap()</codeph> with
+calls to the new functions <codeph>CFbsBitmap::BeginDataAccess()</codeph> and <codeph>CFbsBitmap::EndDataAccess()</codeph>.
+If necessary also add a mutual exclusion object to multi-threaded applications.
+Although not strictly necessary, calling <codeph>CFbsBitmap::BeginDataAccess()</codeph> and <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita#GUID-683A1D42-2764-3EB7-BD19-9E12559199AB/GUID-0C2D1B5F-46A8-32A1-9558-24BC8A413258"><apiname>CFbsBitmap::EndDataAccess()</apiname></xref> ensures
+optimum performance in platforms with graphics hardware acceleration. </p> <p>For
+the benefit of legacy applications that do not require changes, <codeph>CFbsBitmap::LockHeap()</codeph> and <codeph>CFbsBitmap::UnlockHeap()</codeph> now simply call <codeph>CFbsBitmap::BeginDataAccess()</codeph> and <codeph>CFbsBitmap::EndDataAccess()</codeph>,
+respectively. </p> <p>Any number of client threads can now call <codeph>CFbsBitmap::DataAddress()</codeph> and
+manipulate bitmap data at the same time. This does not cause a problem provided
+each client thread accesses a different bitmap. If a multi-threaded application
+shares a bitmap among several threads and assumes that <codeph>CFbsBitmap::LockHeap()</codeph> is
+implemented as a <codeph>Wait()</codeph> operation on a mutual exclusion object,
+you may need to modify the application. </p> <p><b>The impact of the change
+on existing applications </b> </p> <p>The old documentation was ambiguous
+about several aspects of the semantics of the heap locking API. However, because
+the actual implementation used a global mutual exclusion object, it was possible
+for a client thread to call <codeph>CFbsBitmap::LockHeap()</codeph> and prevent
+any other client thread that called <codeph>CFbsBitmap::LockHeap()</codeph> from
+proceeding. This included client threads that attempted to access the same
+bitmap and totally unrelated client threads. Therefore, the heap locking API
+may have been used as a synchronisation mechanism in multi-threaded applications.
+This is no longer possible. </p> <p>The <xref href="GUID-B18430C6-0FC1-3EE6-AC5C-A30B6AE88217.dita"><apiname>SYMBIAN_DEBUG_FBS_LOCKHEAP</apiname></xref> macro
+can be used to help detect multi-threaded applications that share a bitmap
+among several threads and fail to provide their own mutual exclusion mechanism.
+When this macro is defined in debug builds of the Font and Bitmap Server, <codeph>CFbsBitmap::LockHeap()</codeph> and <codeph>CFbsBitmap::UnlockHeap()</codeph> check whether more than one client thread has a call to <codeph>CFbsBitmap::LockHeap()</codeph> on
+the same bitmap at the same time without a corresponding call to <codeph>CFbsBitmap::UnlockHeap()</codeph>.
+When this is detected, a panic FBSCLI 22 is raised. </p> <p>The impact of
+the change on existing multi-threaded applications that use the heap locking
+API as a synchronisation mechanism is reduced, in most of the cases, to the
+possibility of loss of bitmap data changes rather than illegal memory access
+or any other kind of abnormal termination. An exception is the case of existing
+multi-threaded applications that use the heap locking API as a synchronisation
+mechanism where one thread calls <codeph>CFbsBitmap::Resize()</codeph> on
+a bitmap while another thread calls <codeph>CFbsBitmap::SizeInPixels()</codeph> followed
+by <codeph>CFbsBitmap::DataAddress()</codeph> on the same bitmap. This can
+produce an incorrect value for the size in pixels and lead to an illegal memory
+access. </p> </section>
+</conbody><related-links>
+<link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext>Font and
+Bitmap Server Overview</linktext></link>
+<link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext>Font and
+Text Services Collection  Overview </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30DBE93F-1255-533F-9B02-4E19E248D065.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-30DBE93F-1255-533F-9B02-4E19E248D065" xml:lang="en"><title>GUIApp:
+GUI Application with C Engine</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-325cf83e-0845-463d-852a-b5b1a7b77792.zip" scope="external">GUIApp.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-325cf83e-0845-463d-852a-b5b1a7b77792.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p> <filepath>GUIApp</filepath> is an
+example of an GUI application whose engine is written in C. </p> <p>The engine
+is a DLL, produced by project <filepath>GUIAppEng.mmp</filepath>, was taken
+from the FreeBSD <codeph>cksum</codeph> (checksum) utility. The only code
+in the project which was not written in C is the following function, defined
+in file <filepath>GUIAppEng.cpp</filepath>: </p> <codeblock id="GUID-A1A7B8D7-9261-5713-81B9-BA3BDD6A0E36" xml:space="preserve">EXPORT_C TInt E32Dll(TDllReason)</codeblock> <p>This fulfils the requirement that all DLLs need an entry point called <codeph>E32Dll()</codeph>. </p> </section>
+<section><title>Usage</title> <p>The program is operated using the following
+commands on the <systemoutput>File</systemoutput> menu: </p> <ul>
+<li id="GUID-05CD4465-FCE0-5D74-BA49-037116D0D61C"><p> <systemoutput>Calculate
+Checksum...</systemoutput> brings up a file selection dialog. Select a file
+and the program will calculate and show the file's checksum. </p> </li>
+<li id="GUID-ABB1C24C-F234-5295-B782-525A49999CE0"><p> <systemoutput>View
+Checksums...</systemoutput> shows a list of all the files which have been
+selected, and their checksums. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30EB4252-4CBA-5174-9133-E79AC9AEAEBF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-30EB4252-4CBA-5174-9133-E79AC9AEAEBF"><title>Header information source file</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The build tools automatically generates a stub file, <varname>project-name</varname> <filepath>.uid.cpp</filepath>, which is built by the project and which contains the information on the project's UIDs and other properties. This stub file should not be edited, and should be considered as an intermediate file rather than a source file. It has a syntax such as:</p> <codeblock id="GUID-199C847E-0714-540A-AA3D-2719548DBE48" xml:space="preserve">#include &lt;e32cmn.h&gt;
+#pragma data_seg(".SYMBIAN")
+__EMULATOR_IMAGE_HEADER2(0x10000079,0x1000008d,0x08a715f2,EPriorityForeground,0x00000000u,0x00000000u,0x08a715f2,0,0x00010000,0)
+#pragma data_seg()</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD"><title>Creating a Format Decode Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Format decode plugin implementations derive from the <xref href="GUID-765257E7-403F-3D8E-8A5E-E1679F247F33.dita"><apiname>CMMFFormatDecode</apiname></xref> abstract class and several of the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> mixin functions. </p> <ul><li id="GUID-8F040CD5-9E56-5737-BD71-B1D954670757"><p>  <xref href="GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD.dita#GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD/GUID-0E0A6A42-193E-54BD-B9B4-9259CEB423CC">CMMFFormatDecode Implementation</xref> </p> </li> <li id="GUID-D84633EF-DA39-5649-B7B4-1FA6DAA0294A"><p><xref href="GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD.dita#GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD/GUID-A9562774-E94F-5943-BF1C-023F1C74CBFB">Format Decode MDataSource and MDataSink Implementation</xref> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5" xml:lang="en"><title>The
+Symbian build process</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Symbian platform programs are initially developed for a Symbian emulator
+running on Windows, and are then rebuilt for the ARM processor (native) targets
+used in real Symbian platform phones. Building can be performed from the Windows
+command line, or from within an IDE if one is available. The descriptions
+given in this documentation set concentrate on command line building, as documentation
+for using an IDE is normally distributed with the IDE itself. </p>
+<p> <b>Note:</b> This page includes a description of the use of Symbian's
+SBSv1 build system, which provides the <codeph>bldmake</codeph> and <codeph>abld</codeph> command
+line tools. Symbian also provides a newer command line build system, called
+SBSv2, in its Platform Developer Toolkit (PDT) product. SBSv2 can help achieve
+improved build speed over SBSv1. </p>
+<section><title>Build targets</title> <p>This section describes the tools
+and compilers supported on the kits supplied by Symbian. Note that licensees
+or third-parties may supply additional tools, or extend support to additional
+compilers which are not described here. </p> <p>Symbian build their emulator
+code with the Metrowerks CodeWarrior compiler. This is known as the <codeph>WINSCW</codeph> build
+target. Binaries built with this compiler are put in the <filepath>epoc32\release\winscw</filepath> and <filepath>epoc32\winscw</filepath> directory
+trees. </p> <p>You can build your programs for the Symbian emulator using
+Metrowerks CodeWarrior. The build tools also have support for using the Microsoft
+Visual Studio .NET 2003, or Microsoft Visual Studio v6 IDEs. See <xref href="GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita">The
+Symbian emulator build targets</xref> for more details. </p> <p>To build code
+for a phone, a compiler based on the Application Binary Interface (ABI) for
+the ARM Architecture is needed. This is a standard for the interfaces of binary
+code running in ARM environments, and is intended to allow inter-operation
+of binaries produced by different compilers that conform to the standard.
+The specification is published by ARM at <xref href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0038a/index.html" scope="external">http://infocenter.arm.com</xref>. </p> <p>The Symbian platform
+build tools are configured to work with two compilers in particular: </p> <ul>
+<li id="GUID-0F50C5D5-9C66-5414-9952-CFB0B6C3E88C"><p>ARM's own RealView Compiler
+Tools (RVCT). This is particularly intended for licensee's building ROMs for
+phones. For details, see ARM's website at <xref href="http://www.arm.com/products/DevTools/RealViewDevSuite.html" scope="external">http://www.arm.com</xref>. </p> <p>The situation
+is complicated by there existing two versions of the ARM ABI, referred to
+as v1 and v2 respectively. The toolchain allows either to be chosen. </p> </li>
+<li id="GUID-231F1526-3BB8-5602-B867-12B6A7CD11D9"><p>A version of the GNU
+Compiler Collection (GCC) that supports the ABI for the ARM Architecture.
+This compiler is delivered on Symbian platform kits, and is freely available.
+This target is known as <codeph>GCCE</codeph>. It can only be used to compile
+code to v2 of the ARM ABI, not to the earlier v1. </p> </li>
+</ul> <p>See <xref href="GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita">The native
+build targets</xref> for more details. </p> </section>
+<section><title>Project files</title> <p>Because of the variety of targets
+and toolchains available, Symbian platform allows projects to be specified
+in a form not specific to any. These neutral project files are then used by
+Symbian platform tools to create toolchain-specific project files when these
+are required. </p> <p>The key project files are: </p> <ul>
+<li id="GUID-015E5371-C812-5654-84AF-E29715AF9356"><p>a project definition
+file (<filepath>.mmp</filepath> file) that describes a project to be built.
+This is an environment neutral file that can be used by the tools to produce
+make files for any of the supported target environments. It also defines resource
+file and application information files to be built. </p> </li>
+<li id="GUID-1F3FEF0C-98BC-582F-B973-04D51F50E1D4"><p>a component description
+file (<filepath>bld.inf</filepath>), which lists all the projects in a component,
+and gives additional build instructions. </p> </li>
+</ul> <p>When you create a new project, you write these files (or typically
+copy existing similar files and modify them) in a text editor. IDE's may allow
+new projects to be created from existing template projects. </p> <p>See <xref href="GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita">How to build GUI applications</xref>, <xref href="GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita">How to build DLLs</xref>,
+and <xref href="GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita">How to build EXEs</xref> for
+guidance on how to write project files for the three most common types of
+program. See the <xref href="GUID-49397CFD-955A-5DF6-9251-368C44224966.dita">Build
+tools reference</xref> for details on the file formats and syntax. </p> </section>
+<section><title>Building from the command line</title> <p>You can build for
+any target from the command line. The procedure is summarised below. </p> <ol id="GUID-6F57EEBA-7ECA-529C-AC4F-7B22AE90DFC3">
+<li id="GUID-315A168A-926A-57D9-B1DF-CB36F6C8DED2"><p>Create a project specification
+(<filepath>.mmp</filepath>) file. </p> </li>
+<li id="GUID-F3C9187F-AAF6-5D4B-AE0E-135A152011CF"><p>Create a component definition
+file (<filepath>bld.inf</filepath>). In many cases this will specify a single
+project <filepath>mmp</filepath> file. </p> </li>
+<li id="GUID-8641EE54-AA0C-5825-A510-43DA55B36D11"><p>Run <filepath>bldmake</filepath> from
+the directory where the <filepath>bld.inf</filepath> file is located: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p>This creates a <filepath>abld.bat</filepath> batch
+file, which you use in the next step. </p> </li>
+<li id="GUID-B49FCB10-1058-5C0F-A0FD-216C2D1D8A9B"><p>Use <systemoutput>abld
+build</systemoutput> to build the project. </p> <p>This builds the project
+for all valid targets and both release and debug variants. To build for a
+particular target and variant, use <systemoutput>abld                 build
+target-name variant</systemoutput>, for example </p> <p><userinput>abld build
+winscw udeb</userinput> </p> <p>to build for the debug variant of WINSCW. </p> </li>
+</ol> <p>For more details on using the tools, see <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How
+to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How
+to use abld</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3101392C-A9FF-5F56-8872-5A03D053565E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3101392C-A9FF-5F56-8872-5A03D053565E"><title> Using a Management Plane session to query all Access Points: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref> API has to be accessed through the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Sockets Server</xref> client API, so you need to ensure that <filepath>esock.lib</filepath> is included in the MMP file. </p> <section><title>Querying the status of an Access Point</title> <p>The <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita#GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2/GUID-E80C3173-3777-317A-8007-E9C331FAD9AE"><apiname>RConnectionServ::AccessPointStatusQuery()</apiname></xref> function retrieves information about the properties of one or more Access Points from the attached Tier specified earlier using the previous <codeph>Connect()</codeph> function. </p> <p> <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita#GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2/GUID-A2ED3E49-53F0-3BFD-8E77-DE543BAADA93"><apiname>RConnectionServ::AccessPointStatusQuery(const
+          CConnectionServParameterBundle&amp; aQuery, CConnectionServParameterBundle&amp;
+          aResult, TRequestStatus&amp; aStatus)</apiname></xref>  </p> <p>The parameter <codeph>aQuery</codeph> is an ‘In’ parameter. It is created and deleted by the caller, <xref href="GUID-A0741C04-7E9D-3E20-96C0-22CEEFCE3238.dita"><apiname>CConnectionServParameterBundle</apiname></xref>, of this function. The parameter will be deleted after completing the Access Point status query. The parameter contains structured data types in <xref href="GUID-9E2F2DFF-2CBE-38E2-BB8D-423C2228C201.dita"><apiname>CConnectionServParameterSetContainers</apiname></xref> and <xref href="GUID-F4D933B7-A0B4-3D58-BD1E-ECAF4D9953D1.dita"><apiname>XParameterSet</apiname></xref> -derived types. These data types specify the group of Access Points to be returned and the information about the Access Points to be queried. </p> <p>The parameter <codeph>aResult</codeph> is an ‘Out’ parameter. It is created and deleted by the caller, <xref href="GUID-A0741C04-7E9D-3E20-96C0-22CEEFCE3238.dita"><apiname>CConnectionServParameterBundle</apiname></xref>, of this function. The parameter will be deleted after completing the Access Point status query. </p> <p>The time taken to complete the query depends on the implementation of the <xref href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita">Tiers Manager</xref> stack plug-in that serves the request. It is an asynchronous request. There can only be one outstanding query at a time. Further queries before completion of an outstanding query result in <codeph>KErrInUse</codeph>. </p> </section> <section><title>Cancelling an Access Point status query</title> <p> <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita#GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2/GUID-BDF7E376-AC0E-3723-A2FC-1C45D1ED56A4"><apiname>RConnectionServ::CancelAccessPointStatusQuery()</apiname></xref>  </p> <p>This function cancels the current Access Point status query. </p> </section> <section><title>Example Code</title> <p>The following example shows how to find information about all the Access Points that are known to the device. </p> <codeblock id="GUID-79A6D545-BFB4-51E3-9C8A-B0608F36A71C" xml:space="preserve">
+// Start the session as mentioned in starting a session
+ 
+// Create bundle (This bundle is owned by this class so the destructor of this class    
+// must delete the bundle)
+iQueryBundle = CConnectionServParameterBundle::NewL();
+
+
+// Set up the filter for our query
+TAccessPointStatusFilter availFilter;
+
+// a) We want to match against this attribute
+availFilter.Configured(EAccessPointFlagMatchTrue);
+
+// b) Don’t even try to find these things out as we’re not interested at present
+availFilter.Restricted(EAccessPointFlagIgnore);
+availFilter.Available(EAccessPointFlagIgnore);
+availFilter.Started(EAccessPointFlagIgnore);
+
+// Call helper function to create query structure
+iQueryBundle-&gt;AddMatchConditionL(availFilter);
+
+// Call helper function to specify what we want to get for each Access Point
+iQueryBundle-&gt;AddParameterSetToReturnL(XAccessPointGenericParameterSet::TypeId());
+
+// Create container for result
+iStatusBundle = CConnectionServParameterBundle::NewL();
+
+// Make call- the iStatus is a TRequestStatus owned by your active object
+iConnServ.AccessPointStatusQuery(*iQueryBundle, *iStatusBundle, iStatus);
+</codeblock> <p>At this point, a return to the Active Scheduler is necessary because the query uses active objects. So the passed in <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> functions are not completed until those active objects have run. </p> <p>The <codeph>RunL()</codeph> of the active object runs on completion of the <codeph>AccessPointStatusQuery()</codeph> call, as shown below: </p> <codeblock id="GUID-EE660CAC-E120-57CE-9AD4-5B60C61FBB36" xml:space="preserve">
+/*virtual*/
+void CMyActiveObjectClass::RunL()
+  {
+  // Some function to handle errors
+  MyErrorHandler(iStatus.Int());
+
+  // Process results
+  CConnectionServParameterSetContainer* parSetCtr;
+  TInt i=0;
+  while(parSetCtr = iStatusBundle-&gt;GetParamSetContainer(i++))
+    {
+XAccessPointGenericParameterSet* genParamSet =
+       XAccessPointGenericParameterSet::FindInParamSetContainer(parSetCtr);
+
+    if(!genParamSet) continue;
+    TUint apId = genParamSet-&gt;AccessPointInfo().AccessPoint();
+    TAccessPointStatus apStatus = genParamSet-&gt;AccessPointStatus();
+
+    // Your function to process result
+    ProcessResult(apId,apStatus);
+  }
+}
+
+// Later, in the destructor of this class, the bundles must be deleted
+delete iQueryBundle;
+delete iStatusBundle;</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-310A8A9C-98E7-59EE-9376-8E572580190F"><title>File services in Symbian OS</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Like other software systems, Symbian OS can store data so that it is kept when a handset is powered down. To do this, Symbian OS uses the common concepts of <i>file systems</i> and <i>files</i>. This topic describes these concepts. </p> <p>On PCs, a file is kept on magnetic disk or optical media such as CD or DVD. On older generations of personal organisers, a file was often kept in RAM, needing a permanent power supply, and a backup battery to guarantee this. On the most recent telephone handsets, files are normally stored in flash memory, either NOR flash or NAND flash, and also on removable devices such as MultiMediaCard (MMC), Secure Digital card (SD card), Memory Stick or Compact flash (CF). </p> <p>There are more sophisticated services for persisting data such as streams, stores, central repository etc. that applications can use, but they all rely, either directly or indirectly, on the commonly understood idea of the file. </p> <p>The ROM on a typical handset is located in non-volatile flash memory, allowing it to be upgraded by the handset manufacturer after initial production. The location for user data is almost always flash memory (NAND or NOR), on the grounds of cost, although rotating media devices capable of holding large amounts of data are likely in future handsets. </p> <ul><li id="GUID-798E9ED1-24DF-5990-9D1E-CD043B94B722"><p> <xref href="GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita#GUID-310A8A9C-98E7-59EE-9376-8E572580190F/GUID-DD8C4BFB-9816-5EA5-A9F2-5146C64BBC9C">Basic concepts</xref>  </p> </li> <li id="GUID-BBB6D4C2-4AE6-55CD-BC65-416BCF705F31"><p> <xref href="GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita#GUID-310A8A9C-98E7-59EE-9376-8E572580190F/GUID-62387DD0-D8E4-5426-8432-B14696291AF8">Accessing file services</xref>  </p> </li> <li id="GUID-B6AEF9DA-60D3-5728-9C46-59EE5C98346C"><p> <xref href="GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita#GUID-310A8A9C-98E7-59EE-9376-8E572580190F/GUID-9FF4525A-EBFD-5E9F-BD86-C6B75E5C35EF">Security issues</xref>  </p> </li> <li id="GUID-ACF583E3-3FAA-52FE-9A07-8172A4BBBCC9"><p> <xref href="GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita#GUID-310A8A9C-98E7-59EE-9376-8E572580190F/GUID-849F5D6E-7911-55F8-839A-019D1BF16726">File systems and mounting a drive</xref>  </p> </li> </ul> <section id="GUID-DD8C4BFB-9816-5EA5-A9F2-5146C64BBC9C"><title>Basic concepts</title> <p>Symbian OS uses a number of file concepts that are common to most operating systems, for example, drives and directories. </p> <p><b>Drives</b> </p> <p>Symbian OS uses the concept of the <i>drive</i>. This idea is similar to that in other operating systems, i.e. it corresponds to a logical device. A media device such as a MultiMediaCard can be logically split into partitions, and each partition is treated as a separate drive. Symbian OS adopts a DOS-like convention where each drive is identified by a single letter. This means that there can be up to 26 drives on a handset, identified by the letters <filepath>A:</filepath> through to <filepath>Z:</filepath>. In practice, there are far fewer than this, and the number depends on the individual manufacturer's handset </p> <p>Internally, Symbian OS uses the idea of a drive number instead of a letter, and some legacy API items take a drive number as input, or return a drive number as output. However, there are functions that can translate drive numbers to and from drive letters: <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-A0F50C51-A4F0-33C1-BBD4-757DEC4B7F2E"><apiname>RFs::DriveToChar()</apiname></xref> and <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-D545B868-0549-37A9-AACE-288E7C9CE8C3"><apiname>RFs::CharToDrive()</apiname></xref>. </p> <p>The main ROM on a handset is always identified as the <filepath>Z:</filepath> drive. Other drives may be in use: sixteen of the drives <filepath>C:</filepath> to <filepath>R:</filepath> are usually reserved as local drives, i.e. for media devices located within the handset. A common convention is to adopt <filepath>C:</filepath> as the main user data drive. and to designate <filepath>D:</filepath> or <filepath>E:</filepath> as drives for removable media. <i>Be aware</i>, however, that this is a convention that some handset manufacturers may not follow, so you are always advised to check the full SDK that applies to a specific handset for guidance. Indeed, as a matter of principle, you should always use the <xref href="GUID-629AB2C9-BEDD-5166-8B09-F8DFF7527C03.dita">system drive</xref> for user data. </p> <p><b>Volume</b> </p> <p>The concept of the volume applies to removable media. As users insert and remove individual devices, so different volumes are said to be mounted and demounted. For media types that can be split into partitions, each partition corresponds to a separate volume. </p> <p><b>File names and directory structures</b> </p> <p>Files have names, and Symbian OS uses a hierarchical directory structure in which to organise them; this is similar to schemes adopted by other operating systems. For example: </p> <codeblock id="GUID-C4330879-E93B-5939-A810-8D4A1E5B14DB" xml:space="preserve">C:\AAA\BBB\CCC\DDD.EXT</codeblock> <p>There are four main parts to the structure: </p> <ul><li id="GUID-39D18587-8793-511F-B3CC-8CFA6D129F80"><p>the <i>drive</i>; this is always at the top of the hierarchy, and is represented by a drive letter and a colon. </p> </li> <li id="GUID-8F5F5EB0-721F-5C5B-90B6-08E2CB92BA98"><p>the <i>path</i>; this is a list of names, each name representing a level in the hierarchy. Each directory name is separated by a back slash character, and the last directory name is always terminated by a back slash character. </p> </li> <li id="GUID-BD848A50-9BEA-5E08-ACDB-92EDB9C5CA86"><p>the <i>filename</i>; this is everything after the final backslash, and before the dot if there is a file extension. Symbian OS supports long file filenames. </p> </li> <li id="GUID-07E1D5CB-9D9B-5141-AD7B-76F839AA2FC0"><p>the <i>extension</i>, everything after the final dot. There is no restriction on the length of the extension; limits on length apply to the whole structure, not to any single part of it. </p> </li> </ul> <p>You will find that the whole structure is sometimes referred to as the full file name or the full path name. The maximum length of a full file name is limited to 256 characters. Symbian OS does not use the extension to identify the software or application that can access the data. Instead, files have UIDs embedded within them, and the mapping of files to applications is done through these UIDs. See <xref href="GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita">Application registration information</xref>. </p> <p>The case of full path names is always preserved, but operations on names are case insensitive. This means that two files that have the same name but differ only in case are considered to refer to the same file. </p> <p>Full file names are normally manipulated programmatically. Extracting drive names, filenames, file extensions, and changing the names of a directory structure are typical activities. Symbian OS provides you with the <xref href="GUID-E79A3B03-F8CB-37DB-A2A8-1C6C4E4D739A.dita"><apiname>TParse</apiname></xref>, <xref href="GUID-A6268E58-68EC-3041-93FD-5368CD230947.dita"><apiname>TParsePtr</apiname></xref>, and <xref href="GUID-C65BCDAB-0476-3EAC-9BFC-37243AE43FE9.dita"><apiname>TParsePtrC</apiname></xref> classes to help you do this manipulation. </p> <p>See <xref href="GUID-ECF9E432-EA93-5284-B0E6-A1211289CBD8.dita">parsing paths and filenames</xref> . </p> </section> <section id="GUID-62387DD0-D8E4-5426-8432-B14696291AF8"><title>Accessing file services</title> <p>On Symbian OS, file services are a common resource. Like other common or shared resources on Symbian OS, file sevices are handled by a server - the file server. Applications and other software that require access to files, directories and drives are clients of the file server, and send file-related requests using the <xref href="GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita">file server client-side API</xref>. </p> <p>The file server is multithreaded, which allows each logical drive to be accessed concurrently. More than one request can be issued for the same drive, but these requests are handled sequentially. For example, a request to read or write data to a MultiMediaCard can be handled at the same time as a request to read or write data to the main user drive. </p> <p>The file server has a main thread that initially handles all requests. Short requests, such as those that require access to the ROM drive, and those that do not require access to any media, run in the file server. </p> <p>The services provided by the file server can be divided into two types: </p> <ul><li id="GUID-12F7606D-835D-5948-B0F0-EBACC5F6E569"><p>those that give you access to individual files, directories and drives using the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>, <xref href="GUID-12AE154F-7741-38C0-ADFE-9784FCF5E516.dita"><apiname>RDir</apiname></xref> and <xref href="GUID-9D7E765B-6872-3EB9-9D5B-1503FA466EC1.dita"><apiname>RFormat</apiname></xref> classes. </p> <p>See also <xref href="GUID-30B2AF3F-E120-5D47-AAA2-529555625B55.dita">How to use sessions, files, and directories</xref>. </p> </li> <li id="GUID-9E40CF33-C35E-52CE-80B9-8A019F34F305"><p>those that allow you to do higher level longer running operations such as moving, copying and deleting files, using the <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref> class, scanning directory trees using the <xref href="GUID-C657AF2D-1183-3CD2-ACAF-3B0B00FC91BB.dita"><apiname>CDirScan</apiname></xref> class, and tracking the progress of these operations using the <xref href="GUID-E608485F-B3E3-3310-A80E-169D8B9D2234.dita"><apiname>MFileManObserver</apiname></xref> class. </p> <p>See also <xref href="GUID-ACF6C0A2-87ED-55B3-B22A-9B331D9940AC.dita">File management and searching</xref>  </p> </li> </ul> <p>Like most other servers, the client API allows you to make file requests synchronously or asynchronously. </p> <p>See also <xref href="GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54.dita">client-server</xref>. </p> </section> <section id="GUID-9FF4525A-EBFD-5E9F-BD86-C6B75E5C35EF"><title>Security issues</title> <p>Security considerations restrict the parts of a handset's directory structure that an application is allowed to access. The concept is referred to as <i>data caging</i>. </p> <p>There are a number of principles involved: </p> <ul><li id="GUID-21674EE5-40A3-5F71-9973-C089FD838585"><p>The fundamental principle is the separation of executable code from data. Executable code can only reside in the <filepath>/sys/bin/</filepath> directory. Executables cannot be loaded from any location other than <filepath>/sys/bin/</filepath>. Unless an application has the appropriate system capabilities, the <filepath>/sys/</filepath> directory is not visible to that application. System capabilities are a discrete set of 'permissions' that give access to various sensitive system services, and which can only be granted to applications, if justified, through the <xref scope="external" href="https://www.symbiansigned.com/app/page">Symbian Signed</xref> scheme. </p> </li> <li id="GUID-4A1854CE-25CB-5630-A27C-73931D937567"><p>Applications have their own private directory, under which they are free to create further directory structures and files, and to write to those files. This is the directory structure <filepath>/private/&lt;app_SID&gt;/</filepath>. <i>&lt;app_SID&gt;</i> is known as a secure identifier and, in general, is used when verifying an executable's rights of access to system resources. Here, it is used to form the path name for the executable's private directory. The secure identifier is a UID which is allocated to a developer through the <xref scope="external" href="https://www.symbiansigned.com/app/page">Symbian Signed</xref> scheme, and is guaranteed to be unique within the handset on which the application is installed. The UID is coded into the <filepath>mmp</filepath> file(s) that define the application's source files, link requirements, and general characteristics. </p> <p>Other applications have no right of access to an application's private directory. </p> </li> <li id="GUID-2814D086-A660-5294-9952-E6D66243B652"><p>There is a directory <filepath>/resource/</filepath> to which all applications have read access, but no write access. The purpose of this directory is to conatin common read-only files. </p> </li> <li id="GUID-FC6EE81A-59FA-5AC5-8EC4-3034597F8829"><p>All other directories are accessible for both reading and writing. This allows the use of standard file system hierarchies that may be available on removable media. </p> </li> <li id="GUID-95121831-873B-5E79-B07C-410858FC9779"><p>The above principles apply regardless of the drive. </p> </li> </ul> <p>It is possible to pass an open file to another process, or between a client and server, so that the target can access the file without knowing the full path name. The only information that is passed to the target is the filename and extension. </p> <p>You can find more detailed information in the <i>Symbian OS v9 Security Architecture document</i> in <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">Platform security</xref>. </p> </section> <section id="GUID-849F5D6E-7911-55F8-839A-019D1BF16726"><title>File systems and mounting a drive</title> <p>The varying characteristics of media types can mean that different media types require different formats. A common format is VFAT, and typically, this is used for removable media to maintain compatibility with other systems. This also means that long file names are supported. </p> <p>In Symbian OS, format schemes are implemented by what are called file systems; they are constructed as plugins to the file server. This means that the file server itself is independent of the format scheme, and also means that a phone manufacturer is free to add new file systems to a handset. The ROM is an exception - it has its own file system built into the main file server code. </p> <p>A file system must be associated with a drive before the drive can be used. This is known as mounting the drive, and is typically done at system boot time. </p> <p>In practice, an application does not need to concern itself with the format scheme. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-31371091-A28D-5203-BE6A-0F182F99582D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-31371091-A28D-5203-BE6A-0F182F99582D" xml:lang="en"><title>Network Interface Manager (NifMan)</title><shortdesc>The NifMan manages creates and manages network interfaces. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-314992D7-F6E1-5335-9EDA-DE89E67CDF57.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-314992D7-F6E1-5335-9EDA-DE89E67CDF57" xml:lang="en"><title>ASN-PKCS</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The ASN-PKCS component of the Crypto Services collection provides functionality for encoding and decoding PKCS#8 key pairs (including the key pairs encrypted in the PKCS#5 format).</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5" xml:lang="en"><title>Universal
+indicator pane</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><p>Universal indicator pane is used for displaying universal status
+indicators, that is, status indicators that need to be visible regardless
+of the current application. There is room for at least three indicators, although
+depending on the resolution, it may be possible to display more than three.
+The items are prioritized according to their importance.</p><fig id="GUID-249C9534-D1BA-421D-97D0-548625CA352C">
+<title>Universal indicator pane. Indicators are placed side by side at the
+top (above the clock in the image on the right).</title>
+<image href="GUID-95B744FB-CCC0-433F-8314-CB0637F55803_d0e53568_href.png" scale="60" placement="inline"/>
+</fig></section>
+<section><p>The universal indicator pane
+is not accessible to applications.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-315452C2-A1E2-5888-A694-6D2DE73A3F5E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-315452C2-A1E2-5888-A694-6D2DE73A3F5E" xml:lang="en"><title>OS Security
+Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>OS Security provides the fundamental services to make protocols and services
+in Symbian platform secure. It provides frameworks and interfaces that are
+required to fulfill the demands of Symbian OS Platform Security Architecture.
+It includes collections of components that have to be modified or redesigned
+to support Platform Security.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e6515_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22" xml:lang="en"><title>MakeKeys</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The MakeKeys tool enables you to generate private key-public key pairs and certificate requests.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-31A28040-6C8E-5C65-A697-04B30B441686.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-31A28040-6C8E-5C65-A697-04B30B441686" xml:lang="en"><title>FEP
+References</title><shortdesc>This topic introduces miscellaneous guidelines to write a FEP.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-7881D352-F261-4064-8684-6CA76A184257"><title> Handling the
+start of a transaction</title><p>Although applications do not need to be FEP-aware
+in order to work with FEPs, a situation can occur in some applications in
+which the user interface can be improved by the application making use of
+a FEPBASE API to communicate with the FEP above it, if there is one. </p> <p>If
+no FEP is present, the expected behaviour in some UIs when the user presses
+a key is for the application to do two things: firstly, it moves focus to
+a previously non-focused text editor control (possibly, although not necessarily,
+by launching a dialog), and secondly, it 'seeds' that text editor control
+with the character associated with that key. If there is a FEP, by default
+(in other words, without the application being FEP-aware) the focus change
+would only happen when the FEP outputs text to the application. However, if
+the FEP is designed to allow the user to compose a fairly large block of text
+to send to the application (as would be likely in a Japanese FEP), it would
+be better if the focus change occurred when the user starts composing their
+text in the FEP. In order for this to happen, the application needs to be
+FEP-aware, albeit in a fairly trivial way. The way the FEP notifies the application
+that it is starting a transaction is by calling <codeph>CCoeEnv</codeph> ’s
+member function <codeph>ForEachFepObserverCall()</codeph> (<codeph>CCoeEnv</codeph> is
+defined in <filepath>epoc32\include\COEMAIN.H</filepath>), passing in the
+address of the non-member function <codeph>FepObserverHandleStartOfTransactionL()</codeph> (defined
+in <filepath>epoc32\include\FEPBASE.H</filepath>). It is important to note
+that this function should only be called as the last C++ statement executed
+when handling an event. The reason for this that it may take a considerable
+amount of time to return (for example, it may launch a dialog and only return
+when the dialog has been exited). </p> </section>
+<section id="GUID-C32902E0-39A8-493E-9E7F-D48DEE4717CA"><title>Text cursors</title><p>If
+a non-inline-editing FEP has a composition window into which the user types,
+that window should not use a 'real' text cursor (in other words, a cursor
+which is set and unset using <codeph>RWindowGroup</codeph> ’s <codeph>SetTextCursor()</codeph> and <codeph>CancelTextCursor()</codeph> member
+functions). The reason is that the window server only allows a single text
+cursor for the whole system at any one time. If the FEP’s target control is
+a text editor, it should use the window server’s text cursor itself, so the
+FEP should not use it. To solve this problem, the text cursor in the FEP’s
+composition window can be simulated with a sprite. The class <codeph>CTstInsertionPoint</codeph> in
+TFEP1 provides an example of this. </p></section>
+<section id="GUID-5F7D9BFA-F74A-47FE-B589-A4EF49AFB901"><title>Shortcut keys</title><p>As
+FEPs get first refusal of all key events, there is a risk that FEPs can intercept
+shortcut keys (if the UI supports them) which are intended for the application
+to handle. To define a convention for FEP shortcut keys is non-trivial as
+different UIs use different modifier keys and have different policies on using
+them. Matters are simplified greatly if a product has a dedicated on/off key
+for FEPs as this may be used in combination with other keys to carry out different
+functions, as well as on its own to turn the FEP on and off. FEP authors should
+consult the documentation for their target UI. </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e63486_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,1311 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-31C133DE-F245-5992-9A41-20A99291E72A" xml:lang="en"><title>Language
+Codes</title><abstract><p>The languages supported by PKG files correspond to the languages
+enumerated by <xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref> in <filepath>e32lang.h</filepath>. </p> <p>The
+following two tables list the language abbreviations: </p> <ul>
+<li id="GUID-5B070F95-5ADB-59B8-AE8C-CF763410353F"><p><xref href="GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita#GUID-31C133DE-F245-5992-9A41-20A99291E72A/GUID-1F01A43F-64F7-5C90-92D1-974356A6C386">in numerical order according to TLanguage</xref> values, </p> </li>
+<li id="GUID-D189372E-1E80-58E9-96D5-E76B2DDFC36C"><p><xref href="GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita#GUID-31C133DE-F245-5992-9A41-20A99291E72A/GUID-FF7BEF1E-0E48-52F5-9131-C461ABEDFB22"> in alphabetical order according to PKG language-code</xref>. </p> </li>
+</ul></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-1F01A43F-64F7-5C90-92D1-974356A6C386"><title>Language
+abbreviations in TLanguage numerical order </title> <table id="GUID-D6E41DB4-7C59-5CC3-9572-B927375F17A3">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry> Language </entry>
+<entry><codeph>lang-code</codeph> </entry>
+<entry><codeph>TLanguage</codeph> identifier</entry>
+<entry><codeph>TLanguage</codeph> numerical value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>English (UK) </p> </entry>
+<entry><p> <codeph> EN</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish</codeph>  </p> </entry>
+<entry><p>1 </p> </entry>
+</row>
+<row>
+<entry><p>French </p> </entry>
+<entry><p> <codeph> FR</codeph>  </p> </entry>
+<entry><p> <codeph>ELangFrench</codeph>  </p> </entry>
+<entry><p>2 </p> </entry>
+</row>
+<row>
+<entry><p>German </p> </entry>
+<entry><p> <codeph> GE</codeph>  </p> </entry>
+<entry><p> <codeph>ELangGerman</codeph>  </p> </entry>
+<entry><p>3 </p> </entry>
+</row>
+<row>
+<entry><p>Spanish </p> </entry>
+<entry><p> <codeph> SP</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSpanish</codeph>  </p> </entry>
+<entry><p>4 </p> </entry>
+</row>
+<row>
+<entry><p>Italian </p> </entry>
+<entry><p> <codeph> IT</codeph>  </p> </entry>
+<entry><p> <codeph>ELangItalian</codeph>  </p> </entry>
+<entry><p>5 </p> </entry>
+</row>
+<row>
+<entry><p>Swedish </p> </entry>
+<entry><p> <codeph> SW</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSwedish</codeph>  </p> </entry>
+<entry><p>6 </p> </entry>
+</row>
+<row>
+<entry><p>Danish </p> </entry>
+<entry><p> <codeph> DA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangDanish</codeph>  </p> </entry>
+<entry><p>7 </p> </entry>
+</row>
+<row>
+<entry><p>Norwegian </p> </entry>
+<entry><p> <codeph> NO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangNorwegian</codeph>  </p> </entry>
+<entry><p>8 </p> </entry>
+</row>
+<row>
+<entry><p>Finnish </p> </entry>
+<entry><p> <codeph> FI</codeph>  </p> </entry>
+<entry><p> <codeph>ELangFinnish</codeph>  </p> </entry>
+<entry><p>9 </p> </entry>
+</row>
+<row>
+<entry><p>English American </p> </entry>
+<entry><p> <codeph> AM</codeph>  </p> </entry>
+<entry><p> <codeph>ELangAmerican</codeph>  </p> </entry>
+<entry><p>10 </p> </entry>
+</row>
+<row>
+<entry><p>Swiss French </p> </entry>
+<entry><p> <codeph> SF</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSwissFrench</codeph>  </p> </entry>
+<entry><p>11 </p> </entry>
+</row>
+<row>
+<entry><p>Swiss German </p> </entry>
+<entry><p> <codeph> SG</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSwissGerman</codeph>  </p> </entry>
+<entry><p>12 </p> </entry>
+</row>
+<row>
+<entry><p>Portuguese </p> </entry>
+<entry><p> <codeph> PO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangPortuguese</codeph>  </p> </entry>
+<entry><p>13 </p> </entry>
+</row>
+<row>
+<entry><p>Turkish </p> </entry>
+<entry><p> <codeph> TU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTurkish</codeph>  </p> </entry>
+<entry><p>14 </p> </entry>
+</row>
+<row>
+<entry><p>Icelandic </p> </entry>
+<entry><p> <codeph> IC</codeph>  </p> </entry>
+<entry><p> <codeph>ELangIcelandic</codeph>  </p> </entry>
+<entry><p>15 </p> </entry>
+</row>
+<row>
+<entry><p>Russian </p> </entry>
+<entry><p> <codeph> RU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangRussian</codeph>  </p> </entry>
+<entry><p>16 </p> </entry>
+</row>
+<row>
+<entry><p>Hungarian </p> </entry>
+<entry><p> <codeph> HU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangHungarian</codeph>  </p> </entry>
+<entry><p>17 </p> </entry>
+</row>
+<row>
+<entry><p>Dutch </p> </entry>
+<entry><p> <codeph> DU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangDutch</codeph>  </p> </entry>
+<entry><p>18 </p> </entry>
+</row>
+<row>
+<entry><p>Flemish Belgian </p> </entry>
+<entry><p> <codeph> BL</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBelgianFlemish</codeph>  </p> </entry>
+<entry><p>19 </p> </entry>
+</row>
+<row>
+<entry><p>Australian </p> </entry>
+<entry><p> <codeph> AU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangAustralian</codeph>  </p> </entry>
+<entry><p>20 </p> </entry>
+</row>
+<row>
+<entry><p>Belgian French </p> </entry>
+<entry><p> <codeph> BF</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBelgianFrench</codeph>  </p> </entry>
+<entry><p>21 </p> </entry>
+</row>
+<row>
+<entry><p>Austrian </p> </entry>
+<entry><p> <codeph> AS</codeph>  </p> </entry>
+<entry><p> <codeph>ELangAustrian</codeph>  </p> </entry>
+<entry><p>22 </p> </entry>
+</row>
+<row>
+<entry><p>New Zealand </p> </entry>
+<entry><p> <codeph> NZ</codeph>  </p> </entry>
+<entry><p> <codeph>ELangNewZealand</codeph>  </p> </entry>
+<entry><p>23 </p> </entry>
+</row>
+<row>
+<entry><p>French International </p> </entry>
+<entry><p> <codeph> IF</codeph>  </p> </entry>
+<entry><p> <codeph>ELangInternationalFrench</codeph>  </p> </entry>
+<entry><p>24 </p> </entry>
+</row>
+<row>
+<entry><p>Czech </p> </entry>
+<entry><p> <codeph> CS</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCzech</codeph>  </p> </entry>
+<entry><p>25 </p> </entry>
+</row>
+<row>
+<entry><p>Slovak </p> </entry>
+<entry><p> <codeph> SK</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSlovak</codeph>  </p> </entry>
+<entry><p>26 </p> </entry>
+</row>
+<row>
+<entry><p>Polish </p> </entry>
+<entry><p> <codeph> PL</codeph>  </p> </entry>
+<entry><p> <codeph>ELangPolish</codeph>  </p> </entry>
+<entry><p>27 </p> </entry>
+</row>
+<row>
+<entry><p>Slovenian </p> </entry>
+<entry><p> <codeph> SL</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSlovenian</codeph>  </p> </entry>
+<entry><p>28 </p> </entry>
+</row>
+<row>
+<entry><p>Chinese Taiwan </p> </entry>
+<entry><p> <codeph> TC</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTaiwanChinese</codeph>  </p> </entry>
+<entry><p>29 </p> </entry>
+</row>
+<row>
+<entry><p>Hong Kong Chinese </p> </entry>
+<entry><p> <codeph> HK</codeph>  </p> </entry>
+<entry><p> <codeph>ELangHongKongChinese</codeph>  </p> </entry>
+<entry><p>30 </p> </entry>
+</row>
+<row>
+<entry><p>Chinese PRC </p> </entry>
+<entry><p> <codeph> ZH</codeph>  </p> </entry>
+<entry><p> <codeph>ELangPrcChinese</codeph>  </p> </entry>
+<entry><p>31 </p> </entry>
+</row>
+<row>
+<entry><p>Japanese </p> </entry>
+<entry><p> <codeph> JA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangJapanese</codeph>  </p> </entry>
+<entry><p>32 </p> </entry>
+</row>
+<row>
+<entry><p>Thai </p> </entry>
+<entry><p> <codeph> TH</codeph>  </p> </entry>
+<entry><p> <codeph>ELangThai</codeph>  </p> </entry>
+<entry><p>33 </p> </entry>
+</row>
+<row>
+<entry><p>Afrikaans </p> </entry>
+<entry><p> <codeph>AF</codeph>  </p> </entry>
+<entry><p> <codeph>ELangAfrikaans</codeph>  </p> </entry>
+<entry><p>34 </p> </entry>
+</row>
+<row>
+<entry><p>Albanian </p> </entry>
+<entry><p> <codeph>SQ</codeph>  </p> </entry>
+<entry><p> <codeph>ELangAlbanian</codeph>  </p> </entry>
+<entry><p>35 </p> </entry>
+</row>
+<row>
+<entry><p>Amharic </p> </entry>
+<entry><p> <codeph> AH</codeph>  </p> </entry>
+<entry><p> <codeph>ELangAmharic</codeph>  </p> </entry>
+<entry><p>36 </p> </entry>
+</row>
+<row>
+<entry><p>Arabic </p> </entry>
+<entry><p> <codeph> AR</codeph>  </p> </entry>
+<entry><p> <codeph>ELangArabic</codeph>  </p> </entry>
+<entry><p>37 </p> </entry>
+</row>
+<row>
+<entry><p>Armenian </p> </entry>
+<entry><p> <codeph> HY</codeph>  </p> </entry>
+<entry><p> <codeph>ELangArmenian</codeph>  </p> </entry>
+<entry><p>38 </p> </entry>
+</row>
+<row>
+<entry><p>Tagalog </p> </entry>
+<entry><p> <codeph> TL</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTagalog</codeph>  </p> </entry>
+<entry><p>39 </p> </entry>
+</row>
+<row>
+<entry><p>Belarussian </p> </entry>
+<entry><p> <codeph> BE</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBelarussian</codeph>  </p> </entry>
+<entry><p>40 </p> </entry>
+</row>
+<row>
+<entry><p>Bengali </p> </entry>
+<entry><p> <codeph> BN</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBengali</codeph>  </p> </entry>
+<entry><p>41 </p> </entry>
+</row>
+<row>
+<entry><p>Bulgarian </p> </entry>
+<entry><p> <codeph> BG</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBulgarian</codeph>  </p> </entry>
+<entry><p>42 </p> </entry>
+</row>
+<row>
+<entry><p>Burmese </p> </entry>
+<entry><p> <codeph> MY</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBurmese</codeph>  </p> </entry>
+<entry><p>43 </p> </entry>
+</row>
+<row>
+<entry><p>Catalan </p> </entry>
+<entry><p> <codeph> CA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCatalan</codeph>  </p> </entry>
+<entry><p>44 </p> </entry>
+</row>
+<row>
+<entry><p>Croatian </p> </entry>
+<entry><p> <codeph> HR</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCroatian</codeph>  </p> </entry>
+<entry><p>45 </p> </entry>
+</row>
+<row>
+<entry><p>Canadian English </p> </entry>
+<entry><p> <codeph> CE</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCanadianEnglish</codeph>  </p> </entry>
+<entry><p>46 </p> </entry>
+</row>
+<row>
+<entry><p>English International </p> </entry>
+<entry><p> <codeph> IE</codeph>  </p> </entry>
+<entry><p> <codeph>ELangInternationalEnglish</codeph>  </p> </entry>
+<entry><p>47 </p> </entry>
+</row>
+<row>
+<entry><p>South African English </p> </entry>
+<entry><p> <codeph> SA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSouthAfricanEnglish</codeph>  </p> </entry>
+<entry><p>48 </p> </entry>
+</row>
+<row>
+<entry><p>Estonian </p> </entry>
+<entry><p> <codeph> ET</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEstonian</codeph>  </p> </entry>
+<entry><p>49 </p> </entry>
+</row>
+<row>
+<entry><p>Farsi </p> </entry>
+<entry><p> <codeph> FA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangFarsi</codeph>  </p> </entry>
+<entry><p>50 </p> </entry>
+</row>
+<row>
+<entry><p>French Canadian </p> </entry>
+<entry><p> <codeph> CF</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCanadianFrench</codeph>  </p> </entry>
+<entry><p>51 </p> </entry>
+</row>
+<row>
+<entry><p>Gaelic Scots </p> </entry>
+<entry><p> <codeph> GD</codeph>  </p> </entry>
+<entry><p> <codeph>ELangScotsGaelic</codeph>  </p> </entry>
+<entry><p>52 </p> </entry>
+</row>
+<row>
+<entry><p>Georgian </p> </entry>
+<entry><p> <codeph> KA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangGeorgian</codeph>  </p> </entry>
+<entry><p>53 </p> </entry>
+</row>
+<row>
+<entry><p>Greek </p> </entry>
+<entry><p> <codeph> EL</codeph>  </p> </entry>
+<entry><p> <codeph>ELangGreek</codeph>  </p> </entry>
+<entry><p>54 </p> </entry>
+</row>
+<row>
+<entry><p>Greek (Cyprus) </p> </entry>
+<entry><p> <codeph>CG</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCyprusGreek</codeph>  </p> </entry>
+<entry><p>55 </p> </entry>
+</row>
+<row>
+<entry><p>Gujarati </p> </entry>
+<entry><p> <codeph> GU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangGujarati</codeph>  </p> </entry>
+<entry><p>56 </p> </entry>
+</row>
+<row>
+<entry><p>Hebrew </p> </entry>
+<entry><p> <codeph> HE</codeph>  </p> </entry>
+<entry><p> <codeph>ELangHebrew</codeph>  </p> </entry>
+<entry><p>57 </p> </entry>
+</row>
+<row>
+<entry><p>Hindi </p> </entry>
+<entry><p> <codeph> HI</codeph>  </p> </entry>
+<entry><p> <codeph>ELangHindi</codeph>  </p> </entry>
+<entry><p>58 </p> </entry>
+</row>
+<row>
+<entry><p>Indonesian </p> </entry>
+<entry><p> <codeph> IN</codeph>  </p> </entry>
+<entry><p> <codeph>ELangIndonesian</codeph>  </p> </entry>
+<entry><p>59 </p> </entry>
+</row>
+<row>
+<entry><p>Irish </p> </entry>
+<entry><p> <codeph> GA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangIrish</codeph>  </p> </entry>
+<entry><p>60 </p> </entry>
+</row>
+<row>
+<entry><p>Swiss Italian </p> </entry>
+<entry><p> <codeph> SZ</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSwissItalian</codeph>  </p> </entry>
+<entry><p>61 </p> </entry>
+</row>
+<row>
+<entry><p>Kannada </p> </entry>
+<entry><p> <codeph> KN</codeph>  </p> </entry>
+<entry><p> <codeph>ELangKannada</codeph>  </p> </entry>
+<entry><p>62 </p> </entry>
+</row>
+<row>
+<entry><p>Kazakh </p> </entry>
+<entry><p> <codeph> KK</codeph>  </p> </entry>
+<entry><p> <codeph>ELangKazakh</codeph>  </p> </entry>
+<entry><p>63 </p> </entry>
+</row>
+<row>
+<entry><p>Khmer </p> </entry>
+<entry><p> <codeph> KM</codeph>  </p> </entry>
+<entry><p> <codeph>ELangKhmer</codeph>  </p> </entry>
+<entry><p>64 </p> </entry>
+</row>
+<row>
+<entry><p>Korean </p> </entry>
+<entry><p> <codeph> KO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangKorean</codeph>  </p> </entry>
+<entry><p>65 </p> </entry>
+</row>
+<row>
+<entry><p>Laothian </p> </entry>
+<entry><p> <codeph> LO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangLao</codeph>  </p> </entry>
+<entry><p>66 </p> </entry>
+</row>
+<row>
+<entry><p>Latvian </p> </entry>
+<entry><p> <codeph> LV</codeph>  </p> </entry>
+<entry><p> <codeph>ELangLatvian</codeph>  </p> </entry>
+<entry><p>67 </p> </entry>
+</row>
+<row>
+<entry><p>Lithuanian </p> </entry>
+<entry><p> <codeph> LT</codeph>  </p> </entry>
+<entry><p> <codeph>ELangLithuanian</codeph>  </p> </entry>
+<entry><p>68 </p> </entry>
+</row>
+<row>
+<entry><p>Macedonian </p> </entry>
+<entry><p> <codeph> MK</codeph>  </p> </entry>
+<entry><p> <codeph>ELangMacedonian</codeph>  </p> </entry>
+<entry><p>69 </p> </entry>
+</row>
+<row>
+<entry><p>Malay </p> </entry>
+<entry><p> <codeph> MS</codeph>  </p> </entry>
+<entry><p> <codeph>ELangMalay</codeph>  </p> </entry>
+<entry><p>70 </p> </entry>
+</row>
+<row>
+<entry><p>Malayalam </p> </entry>
+<entry><p> <codeph> ML</codeph>  </p> </entry>
+<entry><p> <codeph>ELangMalayalam</codeph>  </p> </entry>
+<entry><p>71 </p> </entry>
+</row>
+<row>
+<entry><p>Marathi </p> </entry>
+<entry><p> <codeph> MR</codeph>  </p> </entry>
+<entry><p> <codeph>ELangMarathi</codeph>  </p> </entry>
+<entry><p>72 </p> </entry>
+</row>
+<row>
+<entry><p>Moldovian </p> </entry>
+<entry><p> <codeph> MO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangMoldavian</codeph>  </p> </entry>
+<entry><p>73 </p> </entry>
+</row>
+<row>
+<entry><p>Mongolian </p> </entry>
+<entry><p> <codeph> MN</codeph>  </p> </entry>
+<entry><p> <codeph>ELangMongolian</codeph>  </p> </entry>
+<entry><p>74 </p> </entry>
+</row>
+<row>
+<entry><p>Norwegian Nynorsk </p> </entry>
+<entry><p> <codeph> NN</codeph>  </p> </entry>
+<entry><p> <codeph>ELangNorwegianNynorsk</codeph>  </p> </entry>
+<entry><p>75 </p> </entry>
+</row>
+<row>
+<entry><p>Brazilian Portuguese </p> </entry>
+<entry><p> <codeph> BP</codeph>  </p> </entry>
+<entry><p> <codeph>ELangBrazilianPortuguese</codeph>  </p> </entry>
+<entry><p>76 </p> </entry>
+</row>
+<row>
+<entry><p>Punjabi </p> </entry>
+<entry><p> <codeph> PA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangPunjabi</codeph>  </p> </entry>
+<entry><p>77 </p> </entry>
+</row>
+<row>
+<entry><p>Romanian </p> </entry>
+<entry><p> <codeph> RO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangRomanian</codeph>  </p> </entry>
+<entry><p>78 </p> </entry>
+</row>
+<row>
+<entry><p>Serbian </p> </entry>
+<entry><p> <codeph> SR</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSerbian</codeph>  </p> </entry>
+<entry><p>79 </p> </entry>
+</row>
+<row>
+<entry><p>Sinhalese </p> </entry>
+<entry><p> <codeph> SI</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSinhalese</codeph>  </p> </entry>
+<entry><p>80 </p> </entry>
+</row>
+<row>
+<entry><p>Somali </p> </entry>
+<entry><p> <codeph> SO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSomali</codeph>  </p> </entry>
+<entry><p>81 </p> </entry>
+</row>
+<row>
+<entry><p>International Spanish </p> </entry>
+<entry><p> <codeph> OS</codeph>  </p> </entry>
+<entry><p> <codeph>ELangInternationalSpanish</codeph>  </p> </entry>
+<entry><p>82 </p> </entry>
+</row>
+<row>
+<entry><p>Latin American Spanish </p> </entry>
+<entry><p> <codeph> LS</codeph>  </p> </entry>
+<entry><p> <codeph>ELangLatinAmericanSpanish</codeph>  </p> </entry>
+<entry><p>83 </p> </entry>
+</row>
+<row>
+<entry><p>Swahili </p> </entry>
+<entry><p> <codeph> SH</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSwahili</codeph>  </p> </entry>
+<entry><p>84 </p> </entry>
+</row>
+<row>
+<entry><p>Finland Swedish </p> </entry>
+<entry><p> <codeph> FS</codeph>  </p> </entry>
+<entry><p> <codeph>ELangFinlandSwedish</codeph>  </p> </entry>
+<entry><p>85 </p> </entry>
+</row>
+<row>
+<entry><p>Tamil </p> </entry>
+<entry><p> <codeph> TA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTamil</codeph>  </p> </entry>
+<entry><p>87 </p> </entry>
+</row>
+<row>
+<entry><p>Telugu </p> </entry>
+<entry><p> <codeph> TE</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTelugu</codeph>  </p> </entry>
+<entry><p>88 </p> </entry>
+</row>
+<row>
+<entry><p>Tibetan </p> </entry>
+<entry><p> <codeph> BO</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTibetan</codeph>  </p> </entry>
+<entry><p>89 </p> </entry>
+</row>
+<row>
+<entry><p>Tigrinya </p> </entry>
+<entry><p> <codeph> TI</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTigrinya</codeph>  </p> </entry>
+<entry><p>90 </p> </entry>
+</row>
+<row>
+<entry><p>Cyprus Turkish </p> </entry>
+<entry><p> <codeph> CT</codeph>  </p> </entry>
+<entry><p> <codeph>ELangCyprusTurkish</codeph>  </p> </entry>
+<entry><p>91 </p> </entry>
+</row>
+<row>
+<entry><p>Turkmen </p> </entry>
+<entry><p> <codeph> TK</codeph>  </p> </entry>
+<entry><p> <codeph>ELangTurkmen</codeph>  </p> </entry>
+<entry><p>92 </p> </entry>
+</row>
+<row>
+<entry><p>Ukrainian </p> </entry>
+<entry><p> <codeph> UK</codeph>  </p> </entry>
+<entry><p> <codeph>ELangUkrainian</codeph>  </p> </entry>
+<entry><p>93 </p> </entry>
+</row>
+<row>
+<entry><p>Urdu </p> </entry>
+<entry><p> <codeph> UR</codeph>  </p> </entry>
+<entry><p> <codeph>ELangUrdu</codeph>  </p> </entry>
+<entry><p>94 </p> </entry>
+</row>
+<row>
+<entry><p>Vietnamese </p> </entry>
+<entry><p> <codeph> VI</codeph>  </p> </entry>
+<entry><p> <codeph>ELangVietnamese</codeph>  </p> </entry>
+<entry><p>96 </p> </entry>
+</row>
+<row>
+<entry><p>Welsh </p> </entry>
+<entry><p> <codeph> CY</codeph>  </p> </entry>
+<entry><p> <codeph>ELangWelsh</codeph>  </p> </entry>
+<entry><p>97 </p> </entry>
+</row>
+<row>
+<entry><p>Zulu </p> </entry>
+<entry><p> <codeph> ZU</codeph>  </p> </entry>
+<entry><p> <codeph>ELangZulu</codeph>  </p> </entry>
+<entry><p>98 </p> </entry>
+</row>
+<row>
+<entry><p>English with terms as used by the device manufacturer, if this needs
+to be distinct from the English used by the UI vendor. </p> </entry>
+<entry><p> <codeph>ME</codeph>  </p> </entry>
+<entry><p> <codeph>ELangManufacturerEnglish </codeph>  </p> </entry>
+<entry><p>100 </p> </entry>
+</row>
+<row>
+<entry><p>South Sotho. A language of Lesotho also called Sesotho. SIL code <codeph>sot</codeph>. </p> </entry>
+<entry><p> <codeph>ST</codeph>  </p> </entry>
+<entry><p> <codeph>ELangSouthSotho</codeph>  </p> </entry>
+<entry><p>101 </p> </entry>
+</row>
+<row>
+<entry><p>English as appropriate for use in Asia-Pacific regions. </p> </entry>
+<entry><p> <codeph>EA</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish_Apac</codeph>  </p> </entry>
+<entry><p>129 </p> </entry>
+</row>
+<row>
+<entry><p>English as appropriate for use in Taiwan. </p> </entry>
+<entry><p> <codeph>YW</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish_Taiwan</codeph>  </p> </entry>
+<entry><p>157 </p> </entry>
+</row>
+<row>
+<entry><p>English as appropriate for use in Hong Kong. </p> </entry>
+<entry><p> <codeph>YH</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish_HongKong</codeph>  </p> </entry>
+<entry><p>158 </p> </entry>
+</row>
+<row>
+<entry><p>English as appropriate for use in the People's Republic of China. </p> </entry>
+<entry><p> <codeph>YP</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish_Prc</codeph>  </p> </entry>
+<entry><p>159 </p> </entry>
+</row>
+<row>
+<entry><p>English as appropriate for use in Japan. </p> </entry>
+<entry><p> <codeph>YJ</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish_Japan</codeph>  </p> </entry>
+<entry><p>160 </p> </entry>
+</row>
+<row>
+<entry><p>English as appropriate for use in Thailand. </p> </entry>
+<entry><p> <codeph>YT</codeph>  </p> </entry>
+<entry><p> <codeph>ELangEnglish_Thailand</codeph>  </p> </entry>
+<entry><p>161 </p> </entry>
+</row>
+<row>
+<entry><p>Malay as appropriate for use in Asia-Pacific regions. </p> </entry>
+<entry><p> <codeph>MA&lt;/codeph&gt;  </codeph></p> </entry>
+<entry><p> <codeph>ELangMalay_Apac</codeph>  </p> </entry>
+<entry><p>326 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-FF7BEF1E-0E48-52F5-9131-C461ABEDFB22"><title>Language abbreviations
+in lang-code alphabetical order</title> <table id="GUID-46F5BBD2-C4C9-54CE-9CA6-C3C7A2A79262">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry><codeph>lang-code</codeph> </entry>
+<entry>Language</entry>
+<entry><codeph>TLanguage</codeph> identifier</entry>
+<entry><codeph>TLanguage</codeph> numerical value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>AF</codeph>  </p> </entry>
+<entry><p>Afrikaans </p> </entry>
+<entry><p> <codeph>ELangAfrikaans</codeph>  </p> </entry>
+<entry><p>34 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AH</codeph>  </p> </entry>
+<entry><p>Amharic </p> </entry>
+<entry><p> <codeph>ELangAmharic</codeph>  </p> </entry>
+<entry><p>36 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AM</codeph>  </p> </entry>
+<entry><p>English (American) </p> </entry>
+<entry><p> <codeph>ELangAmerican</codeph>  </p> </entry>
+<entry><p>10 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AR</codeph>  </p> </entry>
+<entry><p>Arabic </p> </entry>
+<entry><p> <codeph>ELangArabic</codeph>  </p> </entry>
+<entry><p>37 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AS</codeph>  </p> </entry>
+<entry><p>German (Austrian) </p> </entry>
+<entry><p> <codeph>ELangAustrian</codeph>  </p> </entry>
+<entry><p>22 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AU</codeph>  </p> </entry>
+<entry><p>English (Australian) </p> </entry>
+<entry><p> <codeph>ELangAustralian</codeph>  </p> </entry>
+<entry><p>20 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BE</codeph>  </p> </entry>
+<entry><p>Belarussian </p> </entry>
+<entry><p> <codeph>ELangBelarussian</codeph>  </p> </entry>
+<entry><p>40 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BF</codeph>  </p> </entry>
+<entry><p>Belgian French </p> </entry>
+<entry><p> <codeph>ELangBelgianFrench</codeph>  </p> </entry>
+<entry><p>21 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BG</codeph>  </p> </entry>
+<entry><p>Bulgarian </p> </entry>
+<entry><p> <codeph>ELangBulgarian</codeph>  </p> </entry>
+<entry><p>42 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BL</codeph>  </p> </entry>
+<entry><p>Belgian Flemish </p> </entry>
+<entry><p> <codeph>ELangBelgianFlemish</codeph>  </p> </entry>
+<entry><p>19 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BN</codeph>  </p> </entry>
+<entry><p>Bengali </p> </entry>
+<entry><p> <codeph>ELangBengali</codeph>  </p> </entry>
+<entry><p>41 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BO</codeph>  </p> </entry>
+<entry><p>Tibetan </p> </entry>
+<entry><p> <codeph>ELangTibetan</codeph>  </p> </entry>
+<entry><p>89 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BP</codeph>  </p> </entry>
+<entry><p>Brazilian Portuguese </p> </entry>
+<entry><p> <codeph>ELangBrazilianPortuguese</codeph>  </p> </entry>
+<entry><p>76 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CA</codeph>  </p> </entry>
+<entry><p>Catalan </p> </entry>
+<entry><p> <codeph>ELangCatalan</codeph>  </p> </entry>
+<entry><p>44 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CE</codeph>  </p> </entry>
+<entry><p>English (Canadian) </p> </entry>
+<entry><p> <codeph>ELangCanadianEnglish</codeph>  </p> </entry>
+<entry><p>46 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CF</codeph>  </p> </entry>
+<entry><p>French (Canadian) </p> </entry>
+<entry><p> <codeph>ELangCanadianFrench</codeph>  </p> </entry>
+<entry><p>51 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CG</codeph>  </p> </entry>
+<entry><p>Greek (Cyprus) </p> </entry>
+<entry><p> <codeph>ELangCyprusGreek</codeph>  </p> </entry>
+<entry><p>55 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CS</codeph>  </p> </entry>
+<entry><p>Czech </p> </entry>
+<entry><p> <codeph>ELangCzech</codeph>  </p> </entry>
+<entry><p>25 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CT </codeph>  </p> </entry>
+<entry><p>Cyprus Turkish </p> </entry>
+<entry><p> <codeph>ELangCyprusTurkish</codeph>  </p> </entry>
+<entry><p>91 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CY</codeph>  </p> </entry>
+<entry><p>Welsh </p> </entry>
+<entry><p> <codeph>ELangWelsh</codeph>  </p> </entry>
+<entry><p>97 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DA</codeph>  </p> </entry>
+<entry><p>Danish </p> </entry>
+<entry><p> <codeph>ELangDanish</codeph>  </p> </entry>
+<entry><p>7 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DU</codeph>  </p> </entry>
+<entry><p>Dutch </p> </entry>
+<entry><p> <codeph>ELangDutch</codeph>  </p> </entry>
+<entry><p>18 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EA</codeph>  </p> </entry>
+<entry><p>English as appropriate for use in Asia-Pacific regions. </p> </entry>
+<entry><p> <codeph>ELangEnglish_Apac</codeph>  </p> </entry>
+<entry><p>129 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EL</codeph>  </p> </entry>
+<entry><p>Greek </p> </entry>
+<entry><p> <codeph>ELangGreek</codeph>  </p> </entry>
+<entry><p>54 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EN</codeph>  </p> </entry>
+<entry><p>English (UK) </p> </entry>
+<entry><p> <codeph>ELangEnglish</codeph>  </p> </entry>
+<entry><p>1 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ET</codeph>  </p> </entry>
+<entry><p>Estonian </p> </entry>
+<entry><p> <codeph>ELangEstonian</codeph>  </p> </entry>
+<entry><p>49 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FA</codeph>  </p> </entry>
+<entry><p>Farsi </p> </entry>
+<entry><p> <codeph>ELangFarsi</codeph>  </p> </entry>
+<entry><p>50 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FI</codeph>  </p> </entry>
+<entry><p>Finnish </p> </entry>
+<entry><p> <codeph>ELangFinnish</codeph>  </p> </entry>
+<entry><p>9 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FR</codeph>  </p> </entry>
+<entry><p>French </p> </entry>
+<entry><p> <codeph>ELangFrench</codeph>  </p> </entry>
+<entry><p>2 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FS</codeph>  </p> </entry>
+<entry><p>Finland Swedish </p> </entry>
+<entry><p> <codeph>ELangFinlandSwedish</codeph>  </p> </entry>
+<entry><p>85 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GA</codeph>  </p> </entry>
+<entry><p>Irish </p> </entry>
+<entry><p> <codeph>ELangIrish</codeph>  </p> </entry>
+<entry><p>60 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GD</codeph>  </p> </entry>
+<entry><p>Gaelic </p> </entry>
+<entry><p> <codeph>ELangScotsGaelic</codeph>  </p> </entry>
+<entry><p>52 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GE</codeph>  </p> </entry>
+<entry><p>German </p> </entry>
+<entry><p> <codeph>ELangGerman</codeph>  </p> </entry>
+<entry><p>3 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GU</codeph>  </p> </entry>
+<entry><p>Gujarati </p> </entry>
+<entry><p> <codeph>ELangGujarati</codeph>  </p> </entry>
+<entry><p>56 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>HE</codeph>  </p> </entry>
+<entry><p>Hebrew </p> </entry>
+<entry><p> <codeph>ELangHebrew</codeph>  </p> </entry>
+<entry><p>57 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>HI</codeph>  </p> </entry>
+<entry><p>Hindi </p> </entry>
+<entry><p> <codeph>ELangHindi</codeph>  </p> </entry>
+<entry><p>58 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>HK</codeph>  </p> </entry>
+<entry><p>Chinese (Hong Kong) </p> </entry>
+<entry><p> <codeph>ELangHongKongChinese</codeph>  </p> </entry>
+<entry><p>30 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>HR</codeph>  </p> </entry>
+<entry><p>Croatian </p> </entry>
+<entry><p> <codeph>ELangCroatian</codeph>  </p> </entry>
+<entry><p>45 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>HU</codeph>  </p> </entry>
+<entry><p>Hungarian </p> </entry>
+<entry><p> <codeph>ELangHungarian</codeph>  </p> </entry>
+<entry><p>17 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>HY</codeph>  </p> </entry>
+<entry><p>Armenian </p> </entry>
+<entry><p> <codeph>ELangArmenian</codeph>  </p> </entry>
+<entry><p>38 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IC</codeph>  </p> </entry>
+<entry><p>Icelandic </p> </entry>
+<entry><p> <codeph>ELangIcelandic</codeph>  </p> </entry>
+<entry><p>15 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IE</codeph>  </p> </entry>
+<entry><p>English (International) </p> </entry>
+<entry><p> <codeph>ELangInternationalEnglish</codeph>  </p> </entry>
+<entry><p>47 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IF</codeph>  </p> </entry>
+<entry><p>French (International) </p> </entry>
+<entry><p> <codeph>ELangInternationalFrench</codeph>  </p> </entry>
+<entry><p>24 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IN</codeph>  </p> </entry>
+<entry><p>Indonesian </p> </entry>
+<entry><p> <codeph>ELangIndonesian</codeph>  </p> </entry>
+<entry><p>59 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IT</codeph>  </p> </entry>
+<entry><p>Italian </p> </entry>
+<entry><p> <codeph>ELangItalian</codeph>  </p> </entry>
+<entry><p>5 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>JA</codeph>  </p> </entry>
+<entry><p>Japanese </p> </entry>
+<entry><p> <codeph>ELangJapanese</codeph>  </p> </entry>
+<entry><p>32 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KA</codeph>  </p> </entry>
+<entry><p>Georgian </p> </entry>
+<entry><p> <codeph>ELangGeorgian</codeph>  </p> </entry>
+<entry><p>53 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KK</codeph>  </p> </entry>
+<entry><p>Kazakh </p> </entry>
+<entry><p> <codeph>ELangKazakh</codeph>  </p> </entry>
+<entry><p>63 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KM</codeph>  </p> </entry>
+<entry><p>Khmer </p> </entry>
+<entry><p> <codeph>ELangKhmer</codeph>  </p> </entry>
+<entry><p>64 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KN</codeph>  </p> </entry>
+<entry><p>Kannada </p> </entry>
+<entry><p> <codeph>ELangKannada</codeph>  </p> </entry>
+<entry><p>62 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KO</codeph>  </p> </entry>
+<entry><p>Korean </p> </entry>
+<entry><p> <codeph>ELangKorean</codeph>  </p> </entry>
+<entry><p>65 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LO</codeph>  </p> </entry>
+<entry><p>Laothian </p> </entry>
+<entry><p> <codeph>ELangLao</codeph>  </p> </entry>
+<entry><p>66 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LS</codeph>  </p> </entry>
+<entry><p>Latin American Spanish </p> </entry>
+<entry><p> <codeph>ELangLatinAmericanSpanish</codeph>  </p> </entry>
+<entry><p>83 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LT</codeph>  </p> </entry>
+<entry><p>Lithuanian </p> </entry>
+<entry><p> <codeph>ELangLithuanian</codeph>  </p> </entry>
+<entry><p>68 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LV</codeph>  </p> </entry>
+<entry><p>Latvian </p> </entry>
+<entry><p> <codeph>ELangLatvian</codeph>  </p> </entry>
+<entry><p>67 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MA</codeph>  </p> </entry>
+<entry><p>Malay as appropriate for use in Asia-Pacific regions. </p> </entry>
+<entry><p> <codeph>ELangMalay_Apac</codeph>  </p> </entry>
+<entry><p>326 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ME</codeph>  </p> </entry>
+<entry><p>English with terms as used by the device manufacturer, if this needs
+to be distinct from the English used by the UI vendor. </p> </entry>
+<entry><p> <codeph>ELangManufacturerEnglish</codeph>  </p> </entry>
+<entry><p>100 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MK</codeph>  </p> </entry>
+<entry><p>Macedonian </p> </entry>
+<entry><p> <codeph>ELangMacedonian</codeph>  </p> </entry>
+<entry><p>69 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ML</codeph>  </p> </entry>
+<entry><p>Malayalam </p> </entry>
+<entry><p> <codeph>ELangMalayalam</codeph>  </p> </entry>
+<entry><p>71 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MN</codeph>  </p> </entry>
+<entry><p>Mongolian </p> </entry>
+<entry><p> <codeph>ELangMongolian</codeph>  </p> </entry>
+<entry><p>74 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MO</codeph>  </p> </entry>
+<entry><p>Moldovian </p> </entry>
+<entry><p> <codeph>ELangMoldavian</codeph>  </p> </entry>
+<entry><p>73 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MR</codeph>  </p> </entry>
+<entry><p>Marathi </p> </entry>
+<entry><p> <codeph>ELangMarathi</codeph>  </p> </entry>
+<entry><p>72 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MS</codeph>  </p> </entry>
+<entry><p>Malay </p> </entry>
+<entry><p> <codeph>ELangMalay</codeph>  </p> </entry>
+<entry><p>70 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MY</codeph>  </p> </entry>
+<entry><p>Burmese </p> </entry>
+<entry><p> <codeph>ELangBurmese</codeph>  </p> </entry>
+<entry><p>43 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NN</codeph>  </p> </entry>
+<entry><p>Norwegian Nynorsk </p> </entry>
+<entry><p> <codeph>ELangNorwegianNynorsk</codeph>  </p> </entry>
+<entry><p>75 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NO</codeph>  </p> </entry>
+<entry><p>Norwegian </p> </entry>
+<entry><p> <codeph>ELangNorwegian</codeph>  </p> </entry>
+<entry><p>8 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NZ </codeph>  </p> </entry>
+<entry><p>New Zealand English </p> </entry>
+<entry><p> <codeph>ELangNewZealand</codeph>  </p> </entry>
+<entry><p>23 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>OS</codeph>  </p> </entry>
+<entry><p>Spanish (International) </p> </entry>
+<entry><p> <codeph>ELangInternationalSpanish</codeph>  </p> </entry>
+<entry><p>82 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PA</codeph>  </p> </entry>
+<entry><p>Punjabi </p> </entry>
+<entry><p> <codeph>ELangPunjabi</codeph>  </p> </entry>
+<entry><p>77 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PL</codeph>  </p> </entry>
+<entry><p>Polish </p> </entry>
+<entry><p> <codeph>ELangPolish</codeph>  </p> </entry>
+<entry><p>27 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PO</codeph>  </p> </entry>
+<entry><p>Portuguese </p> </entry>
+<entry><p> <codeph>ELangPortuguese</codeph>  </p> </entry>
+<entry><p>13 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RO</codeph>  </p> </entry>
+<entry><p>Romanian </p> </entry>
+<entry><p> <codeph>ELangRomanian</codeph>  </p> </entry>
+<entry><p>78 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RU</codeph>  </p> </entry>
+<entry><p>Russian </p> </entry>
+<entry><p> <codeph>ELangRussian</codeph>  </p> </entry>
+<entry><p>16 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SA</codeph>  </p> </entry>
+<entry><p>English (South African) </p> </entry>
+<entry><p> <codeph>ELangSouthAfricanEnglish</codeph>  </p> </entry>
+<entry><p>48 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SF</codeph>  </p> </entry>
+<entry><p>Swiss French </p> </entry>
+<entry><p> <codeph>ELangSwissFrench</codeph>  </p> </entry>
+<entry><p>11 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SG</codeph>  </p> </entry>
+<entry><p>Swiss German </p> </entry>
+<entry><p> <codeph>ELangSwissGerman</codeph>  </p> </entry>
+<entry><p>12 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SH</codeph>  </p> </entry>
+<entry><p>Swahili </p> </entry>
+<entry><p> <codeph>ELangSwahili</codeph>  </p> </entry>
+<entry><p>84 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SI</codeph>  </p> </entry>
+<entry><p>Sinhalese </p> </entry>
+<entry><p> <codeph>ELangSinhalese</codeph>  </p> </entry>
+<entry><p>80 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SK</codeph>  </p> </entry>
+<entry><p>Slovak </p> </entry>
+<entry><p> <codeph>ELangSlovak</codeph>  </p> </entry>
+<entry><p>26 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SL</codeph>  </p> </entry>
+<entry><p>Slovenian </p> </entry>
+<entry><p> <codeph>ELangSlovenian</codeph>  </p> </entry>
+<entry><p>28 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SO</codeph>  </p> </entry>
+<entry><p>Somali </p> </entry>
+<entry><p> <codeph>ELangSomali</codeph>  </p> </entry>
+<entry><p>81 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SP</codeph>  </p> </entry>
+<entry><p>Spanish </p> </entry>
+<entry><p> <codeph>ELangSpanish</codeph>  </p> </entry>
+<entry><p>4 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SQ</codeph>  </p> </entry>
+<entry><p>Albanian </p> </entry>
+<entry><p> <codeph>ELangAlbanian</codeph>  </p> </entry>
+<entry><p>35 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SR</codeph>  </p> </entry>
+<entry><p>Serbian </p> </entry>
+<entry><p> <codeph>ELangSerbian</codeph>  </p> </entry>
+<entry><p>79 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ST</codeph>  </p> </entry>
+<entry><p>South Sotho. A language of Lesotho also called Sesotho. SIL code <codeph>sot</codeph>. </p> </entry>
+<entry><p> <codeph>ELangSouthSotho</codeph>  </p> </entry>
+<entry><p>101 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SW</codeph>  </p> </entry>
+<entry><p>Swedish </p> </entry>
+<entry><p> <codeph>ELangSwedish</codeph>  </p> </entry>
+<entry><p>6 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SZ</codeph>  </p> </entry>
+<entry><p>Swiss Italian </p> </entry>
+<entry><p> <codeph>ELangSwissItalian</codeph>  </p> </entry>
+<entry><p>61 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TA</codeph>  </p> </entry>
+<entry><p>Tamil </p> </entry>
+<entry><p> <codeph>ELangTamil</codeph>  </p> </entry>
+<entry><p>87 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TC</codeph>  </p> </entry>
+<entry><p>Chinese (Taiwan) </p> </entry>
+<entry><p> <codeph>ELangTaiwanChinese</codeph>  </p> </entry>
+<entry><p>29 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TE</codeph>  </p> </entry>
+<entry><p>Telugu </p> </entry>
+<entry><p> <codeph>ELangTelugu</codeph>  </p> </entry>
+<entry><p>88 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TH</codeph>  </p> </entry>
+<entry><p>Thai </p> </entry>
+<entry><p> <codeph>ELangThai</codeph>  </p> </entry>
+<entry><p>33 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TI</codeph>  </p> </entry>
+<entry><p>Tigrinya </p> </entry>
+<entry><p> <codeph>ELangTigrinya</codeph>  </p> </entry>
+<entry><p>90 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TK</codeph>  </p> </entry>
+<entry><p>Turkmen </p> </entry>
+<entry><p> <codeph>ELangTurkmen</codeph>  </p> </entry>
+<entry><p>92 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TL</codeph>  </p> </entry>
+<entry><p>Tagalog </p> </entry>
+<entry><p> <codeph>ELangTagalog</codeph>  </p> </entry>
+<entry><p>39 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TU</codeph>  </p> </entry>
+<entry><p>Turkish </p> </entry>
+<entry><p> <codeph>ELangTurkish</codeph>  </p> </entry>
+<entry><p>14 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>UK</codeph>  </p> </entry>
+<entry><p>Ukrainian </p> </entry>
+<entry><p> <codeph>ELangUkrainian</codeph>  </p> </entry>
+<entry><p>93 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>UR</codeph>  </p> </entry>
+<entry><p>Urdu </p> </entry>
+<entry><p> <codeph>ELangUrdu</codeph>  </p> </entry>
+<entry><p>94 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>VI</codeph>  </p> </entry>
+<entry><p>Vietnamese </p> </entry>
+<entry><p> <codeph>ELangVietnamese</codeph>  </p> </entry>
+<entry><p>96 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>YH</codeph>  </p> </entry>
+<entry><p>English as appropriate for use in Hong Kong. </p> </entry>
+<entry><p> <codeph>ELangEnglish_HongKong</codeph>  </p> </entry>
+<entry><p>158 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>YJ</codeph>  </p> </entry>
+<entry><p>English as appropriate for use in Japan. </p> </entry>
+<entry><p> <codeph>ELangEnglish_Japan</codeph>  </p> </entry>
+<entry><p>160 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>YP</codeph>  </p> </entry>
+<entry><p>English as appropriate for use in the People's Republic of China. </p> </entry>
+<entry><p> <codeph>ELangEnglish_Prc</codeph>  </p> </entry>
+<entry><p>159 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>YT</codeph>  </p> </entry>
+<entry><p>English as appropriate for use in Thailand. </p> </entry>
+<entry><p> <codeph>ELangEnglish_Thailand</codeph>  </p> </entry>
+<entry><p>161 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>YW</codeph>  </p> </entry>
+<entry><p>English as appropriate for use in Taiwan. </p> </entry>
+<entry><p> <codeph>ELangEnglish_Taiwan</codeph>  </p> </entry>
+<entry><p>157 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ZH</codeph>  </p> </entry>
+<entry><p>Chinese (Peoples Republic of China) </p> </entry>
+<entry><p> <codeph>ELangPrcChinese</codeph>  </p> </entry>
+<entry><p>31 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ZU </codeph>  </p> </entry>
+<entry><p>Zulu </p> </entry>
+<entry><p> <codeph>ELangZulu</codeph>  </p> </entry>
+<entry><p>98 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-31C265DA-5B54-5E6B-98E4-EE90A2AAF4D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-31C265DA-5B54-5E6B-98E4-EE90A2AAF4D5" xml:lang="en"><title>Root Server Configurator</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This server is started during device boot and loads, configures and starts the Communications servers. For example, the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Sockets Server</xref>, the <xref href="GUID-D49696D1-4B84-56B5-909D-A15F599F4B6D.dita">Telephony Server</xref> and the <xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial Communications Server</xref>. </p> <p>The Root Server Configurator is only of interest to Device Creators since the Root Server Configurator does not provide any publishedAll APIs. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-31E9F790-8A47-588C-A515-D2C8CD367ADE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-31E9F790-8A47-588C-A515-D2C8CD367ADE" xml:lang="en"><title>How
+to Terminate Read Requests Early: Tutorial</title><shortdesc>This tutorial explains how to terminate a read request. topic. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>This tutorial assumes a knowledge of the <xref href="GUID-934AEB9C-77EA-5F50-BB84-2446DDD432C8.dita">How
+to transfer data:  Tutorial</xref> topic.</p><p>An application that must respond
+quickly can set termination charactes  that are expected in the data. The
+read requests complete if any termination characters appear in the data.</p><p>If
+an application needs to respond quickly to the content of the data that is
+received, the application can set termination characters. If any termination
+characters are set, the Serial Communications Server inspects the data during
+a read request. If the Serial Communications Server detects a termination
+character during a read request, the Serial Communicatoins Server completes
+the request with the data. </p> <p>For example, an application that is reading
+lines of text can set the termination character to the line end character. </p> </context>
+<steps id="GUID-D81B578F-B7DA-5B12-93FB-8A89D552E0B6">
+<step id="GUID-3FCA89C0-2E9A-52DA-B6D1-EB3522381606"><cmd/>
+<info>Create an object of type <xref href="GUID-BF099B27-4E8A-3765-A6A8-DB88DB4F4F2E.dita"><apiname>TCommConfig</apiname></xref>. </info>
+</step>
+<step id="GUID-30F3B132-DADB-5F4B-8709-6EAA19E6AD13"><cmd>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with
+the <codeph>aConfig</codeph> parameter set to the <codeph>TCommConfig</codeph> object. </cmd>
+<info>The <codeph>TCommConfig</codeph> object now contains the port settings. </info>
+</step>
+<step id="GUID-59D4C184-805F-5847-AB28-9466FA184D05"><cmd/>
+<info>Set the <codeph>iTerminator</codeph> array in the <codeph>TCommconfig</codeph> object
+to the terminator characters. The <codeph>iTerminator</codeph> array can contain
+four characters. If less than four characters are required, set the characters
+from index 0 of the array. </info>
+</step>
+<step id="GUID-FEA59CB4-BBED-5265-AA4A-7B9DAB220A80"><cmd/>
+<info>Set the <codeph>iTerminatorCount</codeph> field in the <codeph>TCommconfig</codeph> object
+to the number of characters set in the <codeph>iTerminator</codeph> array. </info>
+</step>
+<step id="GUID-8D23744E-8BB7-5931-A375-B2B0ECF17141"><cmd>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-732174E9-930F-37D4-AD7C-1434E5731C50"><apiname>RComm::SetConfig()</apiname></xref> with
+the <codeph>aConfig</codeph> parameter set to the <codeph>TCommConfig</codeph> object. </cmd>
+</step>
+</steps>
+<example><title>Example</title> <codeblock id="GUID-481805B3-02BC-5AEC-AC94-07E3D4BF8373" xml:space="preserve">TCommConfig portSettings;
+commPort.Config (portSettings);
+portSettings ().iTerminator[0] = 10;     // LF char
+portSettings ().iTerminatorCount = 1;    // so that we terminate a read when each line feed arrives
+User::LeaveIfError (commPort.SetConfig(portSettings));
+</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-31EB55B1-5A52-5ED1-92D3-C4B0222749B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-31EB55B1-5A52-5ED1-92D3-C4B0222749B3"><title>How to externalise and internalise descriptors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the templated stream operators to externalise and internalise a descriptor. Taking a class, <codeph>TSimple</codeph>, as an example:</p> <codeblock id="GUID-4FE680C8-4225-528F-BC66-B63E4AC33B78" xml:space="preserve">class TSimple
+      {
+public :
+      void ExternalizeL(RWriteStream&amp; aStream) const;
+      ...
+      HBufC*        iBufPtr;
+      TBuf&lt;32&gt;      iBuffer;
+      };
+</codeblock> <section><title>Externalising Descriptors </title> <p>The <codeph>ExternalizeL()</codeph> member function of <codeph>TSimple</codeph> can be implemented as:</p> <codeblock id="GUID-64DDAEC2-8BC6-5762-9C5A-3D3D99814936" xml:space="preserve">void TSimple::ExternalizeL(RWriteStream&amp; aStream) const
+      {
+      aStream &lt;&lt; *iBufPtr;
+      aStream &lt;&lt; iBuffer;
+      }
+</codeblock> <p>In some circumstances, it may be desirable to externalise the maximum length value of the heap descriptor to the stream and to use this value when allocating and internalising that descriptor. To do this, change the <codeph>ExternalizeL()</codeph> member function to:</p> <codeblock id="GUID-B17302A5-43C2-5C1A-8631-F71F5E2541B9" xml:space="preserve">void TSimple::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    aStream.WriteInt32L(iBufPtr-&gt;Des().MaxLength());
+    aStream &lt;&lt; *iBufPtr;
+    aStream &lt;&lt; iBuffer;
+    }</codeblock> </section> <section><title>Internalising descriptors</title> <p>The <codeph>InternalizeL()</codeph> member function of <codeph>TSimple</codeph> can be implemented as:</p> <codeblock id="GUID-5C387905-4225-5DC7-9391-82E54B0935AB" xml:space="preserve">void TSimple::InternalizeL(RReadStream&amp; aStream)
+    {
+    iBufPtr =  HBufC::NewL(aStream,KMaxlen);
+    aStream &gt;&gt; iBuffer;
+    }</codeblock> <p>where <codeph>KMaxlen</codeph> is some constant defining the maximum length for the heap descriptor.</p> <p>If the maximum length value of the heap descriptor had been externalised, then the <codeph>InternalizeL()</codeph> member function could be changed to:</p> <codeblock id="GUID-2812E5FE-DF3F-520C-99F4-8590E8686570" xml:space="preserve">void TSimple::InternalizeL(RReadStream&amp; aStream)
+    {
+    TInt maxlen;
+    maxlen  =  aStream.ReadInt32L();
+    iBufPtr =  HBufC::NewL(aStream,maxlen);
+    aStream &gt;&gt; iBuffer;
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-321F406B-2C77-5F2B-9FDA-F25726188CE2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-321F406B-2C77-5F2B-9FDA-F25726188CE2"><title>Using Symbian SQL Trace Data Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document describes how to use Symbian SQL trace data in Symbian platform applications. </p> <section><title>Analysing Symbian SQL</title> <p>Debugging and optimising database applications involves generic techniques which are not specific to Symbian implementation. This document does not aim to cover them all but illustrates ways of identifying common programming errors by means of SQL tracing. </p> <p><b>Error traces</b> </p> <p>Error tracing identifies function leaves and panics in the client and server. These can occur for numerous reasons. One possible kind of error is <xref href="GUID-1BCF6DC7-8419-3399-9890-627048A74F52.dita"><apiname>KSqlErrSchema</apiname></xref>, which occurs when the database schema has been changed between a call to <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-DF9C2258-9BAA-38F0-9B11-21CD00316912"><apiname>RSqlStatement::Prepare()</apiname></xref> and <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-52E3CE72-D495-388F-8829-952E32F0F37D"><apiname>RSqlStatement::Exec()</apiname></xref> or <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-C8BBAAA8-0468-3330-B601-391443C1C410"><apiname>RSqlStatement::Next()</apiname></xref>. </p> <p><b>Function entry traces</b> </p> <p>A function entry trace generates timestamps indicating the length of time a function took to return. </p> <p>The function entry trace of <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-52E3CE72-D495-388F-8829-952E32F0F37D"><apiname>RSqlStatement::Exec()</apiname></xref> with an SQL statement as argument can be used to identify which SQL statements are executing slowly. Statements can execute slowly for a great many reasons and tracing will not tell you why. A well known example is the inefficiency of storing blobs in a database table instead of storing the blobs elsewhere and their addresses in the database. The purpose of function entry tracing is to give you the data you need to identify cases of this kind. </p> <p>The performance of <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-DF9C2258-9BAA-38F0-9B11-21CD00316912"><apiname>RSqlStatement::Prepare()</apiname></xref> can also be impacted by inefficient SQL statements. For instance, in some cases, <xref href="GUID-2337F32D-8BC3-33BA-9437-E6505314FF08.dita"><apiname>Prepare()</apiname></xref> runs in time O(N<sup>2</sup>) where N is the number of columns in the table. For values of N less than 100 the impact is not significant, but for values above 1000 the effect is very noticeable and data tables with a large number of columns are best avoided. </p> <p><b>Key event traces</b> </p> <p>Key event traces identify events such as IPC calls, startup and close of the SQL server, and the number of full event scans performed by an <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object. </p> <p>Full table scans are particularly important as they are computationally costly and ought to be avoided. One reason for an unnecessary full table scan is the use of an expression in a WHERE clause instead of a column name. If you have a table with an integer primary key called <codeph>id</codeph> there is a big difference in performance between these SELECT statements: </p> <codeblock id="GUID-17F44865-4AEE-5FCC-A199-D9DB83CC394E" xml:space="preserve">SELECT name FROM table WHERE id=?</codeblock> <codeblock id="GUID-F60C0E48-AC75-5603-BA13-A59B54033DEF" xml:space="preserve">SELECT name FROM table WHERE id*1=?</codeblock> <p>Although the two statements are logically identical, the second statement is inefficient because the use of an expression <codeph>id*1</codeph> disables optimisation and forces a full table scan for values satisfying it. </p> <p>Another reason for a full table scan is incorrect use of indexes or simply failure to use them. The purpose of indexes is to search a table rapidly but there are pitfalls associated with their use. For instance, indexes will only be used if they contain 30 or fewer columns and they only speed up the evaluation of a WHERE clause if certain rules are obeyed. </p> <p>A full table scan is also triggered by the use of the operator OR within a WHERE clause. </p> </section> <section><title>See Also</title> <p><xref href="GUID-EC33FF66-F15E-5316-8828-C6CFD57DB9E5.dita">Symbian SQL Tracing Guide</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-322459CD-68DD-43CE-A422-853F31F6450E_d0e58430_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E"><title>Secure Simple Pairing (SSP)</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-D51EB888-7908-5F75-80B7-06B47994F22B"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-226FB791-0EA7-5756-893F-2839D4178E1E">Introduction</xref>  </p> </li> <li id="GUID-F8B04B59-3A9B-54B5-9D64-A64F6A930A9E"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-2891BA26-F6C3-5F3C-A567-34D806A5DAA4">Overview</xref>  </p> </li> <li id="GUID-744E1DDF-2908-569D-9C7A-E29223C6C9E1"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-FC295A44-D8D9-5835-A895-BFB85C5CB8B8">Symbian support for SSP</xref>  </p> </li> <li id="GUID-2C9207CF-8924-568A-93F9-340AB3F2A1E4"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-E6541D2E-7881-5670-B0CF-F57AA64AC032">Implementing SSP notifiers</xref>  </p> </li> <li id="GUID-3703505F-4F60-534C-B492-D83002FA9577"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-E1A7D7D3-891E-5A90-926D-3F946A5448A3">Using the Out of Band API</xref>  </p> </li> <li id="GUID-67BC873E-DC42-5208-AE65-2564B1655C41"><p><xref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita#GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E/GUID-6C20C226-C4CE-5937-93D2-C1A89F00004C">Using the dedicated bonding API</xref>  </p> </li> </ul> <section id="GUID-226FB791-0EA7-5756-893F-2839D4178E1E"><title>Introduction</title> <p>Secure Simple Pairing, introduced into Bluetooth v2.1, simplifies the user experience when pairing Bluetooth devices. </p> <p>This document describes the Symbian OS implementation of SSP. It describes the tasks that must be performed by UI creators to implement SSP and it describes how application developers can use Symbian APIs to pair with Bluetooth enabled devices using SSP. </p> <p><b>Scope</b> </p> <p>This document is intended for Symbian partners and developers implementing SSP on Symbian OS. It assumes that you are familiar with Bluetooth and with developing on Symbian OS. </p> <p><b>Purpose of SSP</b> </p> <p>SSP was introduced to simplify the user experience when pairing Bluetooth devices. Specifically: </p> <ul><li id="GUID-63DD983D-4C9B-55A9-BC1E-B5F590576B51"><p>there is no need for the user to think of a number </p> </li> <li id="GUID-08AFD4B9-4B08-55CD-8A5A-83200F0D75AD"><p>the authentication process may differ for different devices and different services </p> </li> <li id="GUID-AC68A597-36ED-5FE4-8678-21FB8F4498BE"><p>all data transfer is encrypted </p> </li> </ul> </section> <section id="GUID-2891BA26-F6C3-5F3C-A567-34D806A5DAA4"><title>Overview</title> <p><b>The pairing model</b> </p> <p>Pre-SSP pairing is achieved by the user(s) entering a personal identification number (PIN) on one or both devices. Devices with no keypads, such as headsets, have their PINs (typically "0000" or "1234") hard-wired. This is now referred to as Legacy Paring. </p> <p>Under SSP, devices specify their authorisation requirements. The user may have to: </p> <ul><li id="GUID-4B260DAC-E745-5FBE-95D7-3FD721A3F960"><p>press a button in response to a simple yes or no query </p> </li> <li id="GUID-E73EB3E7-5DBC-5326-9728-E086AA58B05A"><p>compare two automatically generated numbers and select 'yes' if they match or 'no' if they do not </p> </li> <li id="GUID-C7AE53AC-037A-5171-AED1-62AB0F0A1953"><p>enter a number on one or both devices </p> </li> <li id="GUID-E4FF8EB0-D0DD-5C39-891E-9732F53B4D7E"><p>do nothing </p> </li> </ul> <p>Once the devices have paired the user may be asked to authorise bonding. Bonded devices can subsequently pair with no user interaction. </p> <p><b>Key concepts</b> </p> <dl><dlentry><dt> Authentication</dt> <dd><p>Verification that a remote device is what it claims to be. Authentication may be unnecessary for some pairings (see Just Works), may require user intervention (see Man in the Middle) or may be performed through another channel (see Out of Band). </p> </dd> </dlentry> <dlentry><dt> Authorisation</dt> <dd><p>In legacy pairing a remote device can be authorised after pairing such that it subsequently connects automatically without user intervention. Authorisation is on a per-service basis. See <b>bonding</b>. </p> </dd> </dlentry> <dlentry><dt>Encryption</dt> <dd><p>Transmission of data between devices after SSP is always encrypted. Under legacy pairing data transmission is not always encrypted. </p> </dd> </dlentry> <dlentry><dt> Man In The Middle (MITM) protection</dt> <dd><p>Authentication explicitly provided by the user before pairing can take place. Under SSP, devices and services have hard-wired authentication requirements as follows: MITM required, MITM not required (see Just Works) and MITM desired (subject to the user interface capabilities of the devices) </p> </dd> </dlentry> <dlentry><dt> Just Works</dt> <dd><p>For some pairings there is little risk of a security breach so SSP provides a mechanism for devices to pair with no explicit user authentication. </p> </dd> </dlentry> <dlentry><dt> Passkey</dt> <dd><p>In the context of a Symbian device, which always has both a display and a keypad, passkey authentication is used when pairing with a remote device which has a keypad but no display. The Symbian device displays a number which the user must enter using the keypad on the remote device </p> </dd> </dlentry> <dlentry><dt> Out Of Band (OOB)</dt> <dd><p>Out of Band authentication is performed using a non-Bluetooth communication channel. The data required to open an MITM protected Bluetooth connection with a remote device is transmitted by other means. </p> </dd> </dlentry> <dlentry><dt> Bonding</dt> <dd><p>Two devices may bond after athentication such that they can reconnect without user intervention. Bonding is achieved on a Symbian device by storing a link key. Symbian devices attempt to bond by default. The user or the remote device may specify that the devices do not bond. </p> </dd> </dlentry> <dlentry><dt> Link key</dt> <dd><p>When a connection is authenticated a link key is created. The link key indicates the strength of authentication (legacy, authenticated or unauthenticated). The link key may be stored by the Symbian device and used to bond (the default behaviour) or discarded when the connection ends. The link key is not displayed to the user. </p> </dd> </dlentry> </dl> </section> <section id="GUID-FC295A44-D8D9-5835-A895-BFB85C5CB8B8"><title>Symbian support for SSP</title> <p><b>Components</b> </p> <p>Support for SSP was added to Symbian OS in v9.5. </p> <p>Most of the changes are internal and transparent to system creators and developers. However, some new APIs added to the Bluetooth User Library allow application developers to use SSP features, and Licensees must implement some SSP specific notifiers. </p> <p>The diagram below shows the interfaces and interface classes required to implement SSP. </p> <p><b> Dedicated Bonding </b> </p> <p>Dedicated bonding is performed by the Bluetooth Pairing Server. Applications can use the <xref href="GUID-8E97F127-DA49-3BB6-B274-348138B425DF.dita"><apiname>RBluetoothDedicatedBondingInitiator</apiname></xref> API to request bonding with a specified Bluetooth device. </p> <p><b> Out of Band Data</b> </p> <p>Out of Band pairing data can be passed to the Bluetooth Pairing Server. The server can use the supplied data to pair with the specified device. Applications can also use the <xref href="GUID-C92BBABD-AE1B-325B-9791-95875272AAAC.dita"><apiname>RBluetoothOobData</apiname></xref> API to retrieve OOB data for the local device to be passed to remote devices. </p> <p><b> Numeric Comparison Notifier </b> </p> <p>The Bluetooth sub-system requires a Numeric Comparison Notifier to be provided by the UI. The notifier must handle <xref href="GUID-D3F5500E-2BCD-3BB9-8B6B-5716C22FAB05.dita"><apiname>TBTNumericComparisonParams</apiname></xref> and return a boolean value which indicates the user's decision. </p> <p><b> Passkey Entry Notifier </b> </p> <p>The Bluetooth sub-system requires a Passkey Entry Notifier to be provided by the UI. The notifier must handle <xref href="GUID-F4DBF857-2192-3177-B431-8499907E41AF.dita"><apiname>TBTPasskeyDisplayParams</apiname></xref> and <xref href="GUID-EB94B14B-F836-3FA1-88CD-51FC0528D76A.dita"><apiname>TBTPasskeyDisplayUpdateParams</apiname></xref>. </p> <p><b> Data Types </b> </p> <p>SSP specific data is stored and manipulated using the following types (significant functions and fields shown only). These types are used in various device and service related APIs. They are defined in <filepath>bt_sock.h</filepath> and <filepath>btdevice.h</filepath>. </p> <p> <codeph>#include &lt;bt_sock.h&gt; </codeph>  </p> <codeblock id="GUID-3CF4FEFE-96AC-5CF3-A522-397754161A50" xml:space="preserve">
+enum TBluetoothMitmProtection
+    {
+    EMitmNotRequired    = 0x0,   // No Man-in-the-Middle authentication is not required.
+    EMitmDesired        = 0x1,      // Man-in-the-Middle authentication should be used where possible. 
+    EMitmRequired        = 0x2      // Man-in-the-Middle authentication is required. 
+    };
+</codeblock> <p> <xref href="GUID-C0341B1C-E358-3C7B-B673-37103E2AF0A3.dita"><apiname>TBTAccessRequirements</apiname></xref>  </p> <codeblock id="GUID-2EA4EA4A-AFC4-5BB2-851F-0891EC42FF6F" xml:space="preserve">
+class TBTAccessRequirements
+    {
+public:
+       ...
+    IMPORT_C void                      SetAuthentication( TBluetoothMitmProtection aPreference );
+    IMPORT_C TBluetoothMitmProtection  MitmProtection() const;
+                ...
+
+    
+private:
+    enum TBTServiceSecuritySettings
+        {
+        EAuthenticate = 0x01,
+        EAuthorise = 0x02,
+        EEncrypt = 0x04,
+        EDenied = 0x08,
+        EMitm = 0x30,      // 2 bit field for MITM
+        };
+    
+    enum TBTAccessRequirementsMitmProtection
+        {
+        EAccessRequirementsMitmUndefined = 0x00,
+        EAccessRequirementsMitmNotRequired = 0x10,
+        EAccessRequirementsMitmDesired = 0x20,
+        EAccessRequirementsMitmRequired = 0x30
+        };
+    };</codeblock> <p> <xref href="GUID-BC29B643-2CE8-30C1-BF41-4D2B5585DC81.dita"><apiname>TBTServiceSecurity</apiname></xref>  </p> <codeblock id="GUID-28168FA1-2CF7-59BE-B77B-484991491810" xml:space="preserve">
+class TBTServiceSecurity
+    {
+public:
+    ...
+    IMPORT_C void                     SetAuthentication( TBluetoothMitmProtection aPreference );
+    IMPORT_C TBool                    AuthenticationRequired() const;
+    IMPORT_C TBluetoothMitmProtection MitmProtection() const;
+    ...
+    
+private:
+    TBTAccessRequirements iSecurityRequirements;    // Whether the service requires authentication, authorisation, encryption or min passkey len.
+    };
+
+typedef TPckgBuf&lt;TBTServiceSecurity&gt; TBTServiceSecurityPckg;    // Package definition for securty settings
+</codeblock> <p> <codeph>#include &lt;btdevice.h&gt; </codeph>  </p> <p> <xref href="GUID-7E0FA8C7-DEB4-3D86-901E-68DAC99DCA40.dita"><apiname>TBTDeviceSecurity</apiname></xref>  </p> <codeblock id="GUID-DCC63DB6-6D3F-5B32-836D-973E65305B13" xml:space="preserve">
+class TBTDeviceSecurity
+    {
+public:
+
+       // Enumeration to provide select MITM protection required. 
+
+    enum TMitmRequired
+        {
+        EMitmUnspecified,      // No specific MITM protection requirements
+        EMitmRequired          // Require the link is MITM protected 
+        };
+    
+public:
+
+    ...
+    IMPORT_C void          SetNoAuthenticate(TBool aDecision);
+    IMPORT_C void          SetMitmRequirements(TMitmRequired aDecision);
+    ...
+    IMPORT_C TBool         NoAuthenticate() const;
+    IMPORT_C TMitmRequired MitmRequirements() const;
+    ...
+
+public:
+    // Enumeration to assist in parsing of security settings.
+    enum TBTDeviceSecuritySettings
+        {
+        ENoAuthenticate            = 0x01,        // Don't authenticate the link @deprecated
+        ENoAuthorise            = 0x02,           // Don't authorise the connection
+        EEncrypt                = 0x04,              // Encrypt the link
+        EBanned                    = 0x08,              // Don't connect to the device
+        EMitmProtectionRequired    = 0x10,  // Require the link is MITM protected
+        };
+    };
+</codeblock> </section> <section id="GUID-E6541D2E-7881-5670-B0CF-F57AA64AC032"><title>Implementing SSP notifiers</title> <p><b>Introdution</b> </p> <p>The Bluetooth sub-system has no user interface. It uses the Symbian <xref href="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita">notifier framework</xref> for user interaction when pairing. The UI system must provide a notifier, in plug-in form, for each user interaction required by SSP. The notifier must receive data in a specified format from the Bluetooth sub-system, display appropriate controls in a dialog on the screen, respond to the user's input and send data back to the Bluetooth sub-system in a specified format. </p> <p>This document assumes that you already have Bluetooth notifiers in your system. It describes the key aspects of adding notifiers for SSP. The structures, types and constants described below are defined in <filepath>BTExtNotifiers.h</filepath>. You can add notifiers to an existing plug-in or create a new plug-in. </p> <p>Notifiers are typically implemented as sleeping dialogs. A sleeping dialog has its resources allocated when its application (in this case the Uikon Server) is started. A sleeping dialog can therefore be displayed (roused) safely under low memory conditions. </p> <p><b>Notes: </b> </p> <ul><li id="GUID-8F9A2CA6-0481-55EB-8458-076AA869CF1E"><p>This document does not describe how to implement an ECOM plug-in or a sleeping dialog. </p> </li> <li id="GUID-0BA5CB89-F09C-5150-82C5-2169503FF961"><p>Customisation Kit Licensees can find an example notifier implementation here: <filepath>sf/mw/classicui/commonuisupport/uikon/examples/notifier1/</filepath>  </p> </li> </ul> <p><b>Numeric Comparison Notifier</b> </p> <p>A numeric comparison notifier is required for SSP Man in the Middle (MITM) authentication when the remote device is capable of displaying a number to the the user and accepting a yes or no response from the user. The notifier must display an automatically generated number and invite the user to confirm (yes or no) that the number is the same as the number displayed on the remote device. The notifier must return the user's response. </p> <p>The Bluetooth Security Manager uses the following code to ask the notifier framework to display the Numeric Comparison Notifier </p> <codeblock id="GUID-C797A612-4AD7-5DE1-854E-3398945A4957" xml:space="preserve">
+
+// defined in header file(s)
+
+TBTDevAddr                      iDevAddr ;
+RNotifier                       iNotifier ;
+TUint32                         iNumericValue ;
+TBool                           iInternallyInitiated ;
+TBTNumericComparisonParamsPckg  iNumericComparisonParamsPckg ;
+TPckgBuf&lt;TBool&gt;                 iResultPckg ;
+// 
+
+void CBTNumericComparator::DoRequest()
+   {
+   // Start the RNotifier plugin that deals with authorisation.
+
+   ...
+
+   TBTDeviceName deviceName = KNullDesC ;
+
+   iNumericComparisonParamsPckg = TBTNumericComparisonParams( iDevAddr, 
+                                                              deviceName, 
+                                                              iNumericValue, 
+                                                              TBTNumericComparisonParams::ERemoteCanConfirm, 
+                                                              iInternallyInitiated);
+
+   iNotifier.StartNotifierAndGetResponse( iStatus, 
+                                          KBTNumericComparisonNotifierUid, 
+                                          iNumericComparisonParamsPckg, 
+                                          iResultPckg);
+   SetActive();
+   }
+</codeblock> <p>From the code above you can see that the Numeric Comparision Notifier is identified by the UID<codeph>KBTNumericComparisonNotifierUid</codeph> and that it must handle data in <xref href="GUID-D3F5500E-2BCD-3BB9-8B6B-5716C22FAB05.dita"><apiname>TBTNumericComparisonParams</apiname></xref> (which is packaged into <codeph>TBTNumericComparisonParamsPckg</codeph> for inter-process transfer). </p> <p>The code fragment below shows how to extract the numeric comparison data within a notifier. </p> <p>NOTE: You will need to implement all of the virtual functions in <xref href="GUID-4E967403-417B-3340-B168-9FAF6565FEFF.dita"><apiname>MEikSrvNotifierBase2.</apiname></xref>  </p> <codeblock id="GUID-36408990-3292-531C-B15E-E88575CD0578" xml:space="preserve">
+class CNumericComparisonNotifier : public CEikDialog, public MEikSrvNotifierBase2
+    {
+public:
+
+    ...
+
+    // from MEikSrvNotifierBase2
+    void StartL ( const TDesC8&amp; aBuffer, TInt aReplySlot, const RMessagePtr2&amp; aMessage ) ;
+ 
+    ...
+
+    void Complete( TBool aDecision, TInt aReason ) ;
+
+private:
+    TInt                iRepySlot ;
+    TNotifierInfo       iInfo ;
+    RMessage2           iMessage ;
+    TBTNumeriComparisonParamsPckg     iNumericComparisonParamsPckg ;
+    TBTDevAddr          iAddr ;
+    TBTDeviceName       iName ;
+    TUint32             iNumericalValue ;
+
+    } ;
+
+
+
+//--------------------------------
+
+...
+
+void CNumericComparisionNotifier::StartL( const TDesC8&amp; aBuffer, TInt aReplySlot, const RMessagePtr2&amp; aMessage )
+    {
+
+    iMessage = RMessage2( aMessage ) ;   // keep a copy ofthe message so that it can be completed later.
+    iReplySlot = aReplySlot ;            // copy the reply slot too
+
+    // Extract the comparison parameters from the buffer
+
+    iNumericComparisonParamsPckg.Copy( aBuffer ) ; 
+
+    iAddr           = iNumericComparisonParamsPckg().DeviceAddress() ;
+    iName           = iNumericComparisonParamsPckg().DeviceName() ;
+    iNumericalValue = iNumericComparisonParamsPckg().NumericalValue() ;
+
+    ...
+
+    RouseSleepingDialog() ; 
+
+    }
+        
+</codeblock> <p>Your dialog must display <codeph>iNumericalValue</codeph> and ask the user if the number displayed is the same as the number displayed on the other Bluetooth device. The user must be able to select 'Yes' or 'No'. </p> <p>The <codeph>StartL()</codeph> function above must return quickly so it must not wait for the user's response. Your notifier must complete the message (<codeph>iMessage</codeph>) as shown below when the user enters a response. </p> <codeblock id="GUID-7C313F8D-F521-541D-8294-686339633F43" xml:space="preserve">
+void CNumericComparisionNotifier::Complete( TBool aDecision, TInt aReason )
+    {
+    if ( aReason == KErrNone )
+        {
+        TInt err = iMessage.Write( iReplySlot, TPckgC&lt;TBool&gt;( aDecision ) ) ;
+        iMessage.Complete( err ) ;
+        }
+     else
+        {
+        iMessage.Complete( aReason ) ;
+        }
+     }
+</codeblock> <p><b>Passkey Notifier</b> </p> <p>A passkey notifier is required for SSP MITM authentication when the user must type a number on a remote device which has a keypad and no display. The notifier displays the number that the user must type. In the code below the notifier also displays a '*' character as the user types each digit into the remote device. </p> <p>The Bluetooth Security Manager uses the following code to ask the Notifier Framework to display the passkey notifier. </p> <codeblock id="GUID-C9F126EB-D3F2-5F08-AF50-64123BB5455F" xml:space="preserve">
+
+// defined in header file(s)
+
+TBTDevAddr                      iDevAddr ;
+RNotifier                       iNotifier ;
+TUint32                         iNumericValue ;   // the passkey number
+TBool                           iInternallyInitiated ;
+TBTPasskeyDisplayParamsPckg     iPasskeyDisplayParamsPckg ;
+TBTDeviceNameUpdateParamsPckg   iDeviceNameUpdateParamsPckg;
+TBuf8&lt;1&gt;                        iResultPckg ;
+
+void CBTPasskeyEntry::DoRequest()
+    {
+    // Start the RNotifier plugin that deals with authorisation.
+
+    ...
+
+    TBTDeviceName deviceName ;    
+    
+    deviceName = KNullDesC ;
+
+    iPasskeyDisplayParamsPckg = TBTPasskeyDisplayParams( iDevAddr, 
+                                                         deviceName, 
+                                                         iNumericValue, 
+                                                         iInternallyInitiated ) ;
+
+    iNotifier.StartNotifierAndGetResponse( iStatus, 
+                                           KBTPasskeyDisplayNotifierUid, 
+                                           iPasskeyDisplayParamsPckg, 
+                                           iResultPckg ) ;
+    SetActive() ;
+
+    }
+
+</codeblock> <p>From the code above you can see that the Passkey Notifier is identified by the UID<codeph>KBTPasskeyNotifierUid</codeph> and that it must handle data in <xref href="GUID-F4DBF857-2192-3177-B431-8499907E41AF.dita"><apiname>TBTPasskeyDisplayParams</apiname></xref> (which is packaged into <codeph>TBTPasskeyDisplayParamsPckg</codeph> for inter-process transfer). </p> <p>As the user enters passkey digits into the remote device the Security Manager also uses <codeph>RNotifier::UpdateNotifierAndGetResponse()</codeph> to send <xref href="GUID-EB94B14B-F836-3FA1-88CD-51FC0528D76A.dita"><apiname>TBTPasskeyDisplayUpdateParams</apiname></xref> (packaged in <xref href="GUID-D6CA0DDB-1CD0-32F1-BBB5-7E280E1C4779.dita"><apiname>TBTPasskeyDisplayUdateParamsPckg</apiname></xref>) to the notifier. Your notifier must use this information to reflect the key presses on the remote device. </p> <p>The code fragment below shows how to extract the passkey data within a notifier. </p> <p>NOTE: You will need to implement all of the virtual functions in <xref href="GUID-4E967403-417B-3340-B168-9FAF6565FEFF.dita"><apiname>MEikSrvNotifierBase2.</apiname></xref>  </p> <codeblock id="GUID-B38F7512-B091-5F93-86F1-EA740DAD7509" xml:space="preserve">
+class CPasskeyNotifier : public CEikDialog, public MEikSrvNotifierBase2
+    {
+public:
+
+    ...
+
+    // from MEikSrvNotifierBase2
+    void   StartL( const TDesC8&amp; aBuffer, TInt aReplySlot, const RMessagePtr2&amp; aMessage ) ;
+    TPtrC8 UpdateL( const TDesC8&amp; aBuffer ) ;  // new information 
+
+    ...
+
+private:
+    TInt                            iRepySlot ;
+    TNotifierInfo                   iInfo ;
+    RMessage2                       iMessage ;
+    TBTPasskeyDisplayParamsPckg     iPasskeyDisplayParamsPckg ;
+    TBTDevAddr                      iAddr ;
+    TBTDeviceName                   iName ;
+    TUint32                         iNumericalValue ;   // the passkey number
+
+    } ;
+
+//--------------------------------
+
+...
+
+void CPasskeyNotifier::StartL( const TDesC8&amp; aBuffer, TInt aReplySlot, const RMessagePtr2&amp; aMessage )
+    {
+
+    iMessage = RMessage2(aMessage);  // keep a copy ofthe message so that it can be completed later.  
+    iReplySlot = aReplySlot ;  // copy the reply slot too
+
+    // Extract the comparison parameters from the buffer
+
+    iPasskeyDisplayParamsPckg.Copy( aBuffer ) ;
+
+    iAddr           = iPasskeyDisplayParamsPckg().DeviceAddress() ;
+    iName           = iPasskeyDisplayParamsPckg().DeviceName() ;
+    iNumericValue   = iPasskeyDisplayParamsPckg().NumericalValue() ;
+
+
+    ...
+
+    RouseSleepingDialog() ;  // display the passkey 
+
+    ...
+
+    }
+
+void CPasskeyNotifier::UpdateL( const TDesC8&amp; aBuffer )
+    {
+
+    // extract the contents of the buffer
+
+    TBTNotifierUpdateParamsPckg2 pckgRaw ;
+    pckgRaw.Copy( aBuffer.Left( pckgRaw.MaxLength() ) ) ;
+
+    // update the dialog to reflect the keys pressed on the remote device
+
+    if ( pckgRaw().Type() == TBTNotifierUpdateParams2::EPasskeyDisplay )
+        {
+        TBTPasskeyDisplayUpdateParamsPckg pckg ;
+        pckg.Copy( aBuffer ) ;
+        HCIPasskeyEntryNotificationType keypressNotification = pckg().KeypressNotification() ;
+
+        switch (keypressNotification)
+            {
+        case EPasskeyEntryStarted :
+            {
+            break ;
+            }
+        case EPasskeyDigitEntered :
+            {
+            // display '*'
+            break ;
+            }
+        case EPasskeyDigitDeleted :
+            {
+            // remove '*', reposition cursor
+            break ;
+            }
+        case EPasskeyCleared :
+            {
+            // clear display, reposition cursor
+            break ;
+            }
+        case EPasskeyEntryCompleted :
+            {
+            // hide the dialog
+            ExitSleepingDialog() ;
+            break;
+            }
+        default :
+            break ;
+        }
+    else if( pckgRaw().Type() == TBTNotifierUpdateParams2::EDeviceName )
+        {
+        // handle name update
+        }
+    return KNullDesC8() ;
+    }
+
+
+
+</codeblock> </section> <section id="GUID-E1A7D7D3-891E-5A90-926D-3F946A5448A3"><title>Out of Band (OOB) authentication</title> <p><b>Introduction</b> </p> <p>Out of Band authentication is achieved using a communication method other than Bluetooth. Once OOB authentication has succeeded an encrypted Bluetooth channel is opened between the two devices. </p> <p>The OOB API, <xref href="GUID-C92BBABD-AE1B-325B-9791-95875272AAAC.dita"><apiname>RBluetoothOobData</apiname></xref>, allows an application handling OOB authentication to provide pairing information for a remote device. </p> <p> <xref href="GUID-C92BBABD-AE1B-325B-9791-95875272AAAC.dita"><apiname>RBluetoothOobData</apiname></xref> allows an application handling OOB authentication to retrieve pairing information for the local device. </p> <p><b>Using the OOB API</b> </p> <p>The OOB data API is provided by the Pairing Server (part of the Security Manager). </p> <codeblock id="GUID-B474C4DA-7FBE-5ABF-9124-BF1B3A899EE0" xml:space="preserve">
+
+#include &lt;pairing.h&gt;
+
+    RBluetoothPairingServer pairingServer ;
+    RBluetoothOobData       OobData ;
+
+
+    // Connect to the Pairing server 
+
+    TInt err = pairingServer.connect() ;
+
+    // Paring session
+
+    err = OobData.Open( iPairingServer ) ;
+
+
+    // Use the API pass hash and randomizer values to and from the pairing server.
+   
+    ...
+
+
+    // Tidy up
+
+    OobData.Close() ;
+    PairingServer.Close() ;
+
+</codeblock> <p>The API has three primary functions: </p> <p> <codeph>RefreshLocalOobData()</codeph> - This function causes the Bluetooth controller to generate new hash and randomizer values for the local device. To retrieve the new values call <codeph>ReadLocalOobData()</codeph>  </p> <p> <codeph>ReadLocalOobData()</codeph> - This function returns the hash and randomizer values that the Bluetooth controller is currently using. </p> <p> <codeph>ProvideRemoteOobData()</codeph> - Use this function to pass OOB data about a remote device to the Bluetooth sub-system. Three versions of the function are available which take slightly different parameters. Information provided using one of these functions can be cleared using <codeph>ClearRemoteOobData()</codeph>. </p> </section> <section id="GUID-6C20C226-C4CE-5937-93D2-C1A89F00004C"><title>Dedicated bonding</title> <p><b>Introduction</b> </p> <p>Dedicated bonding is intended for applications which bond with a specific Bluetooth device. </p> <p><b>Using the dedicated bonding API</b> </p> <codeblock id="GUID-BA1AF395-EFB7-5E12-9E94-D83504876401" xml:space="preserve">
+
+#include &lt;pairing.h&gt;
+
+    RBluetoothPairingServer             pairingServer ;
+    RBluetoothDedicatedBondingInitiator bonder ;
+    TBTDevAddr                          addr ;
+    TRequstStatus                       status ;
+
+
+    // Connect to the Pairing server 
+
+    TInt err = pairingServer.connect() ;
+
+
+    // Use the Bluetooth address of the remote device bonder.Start( pairingServer, addr, status ) ;
+
+
+    // Wait for the request to complete
+
+    User::WaitForRequest(status);
+
+
+    // Close the connection with the bonder (Must be closed before bonding with another device)
+
+    bonder.Close();
+
+    pairingServer.Close() ;
+
+          </codeblock> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e262752_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-324107D1-6E0B-56DD-BDC0-7296F688A9CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-324107D1-6E0B-56DD-BDC0-7296F688A9CF" xml:lang="en"><title>Low Level Libraries and Frameworks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Low Level Libraries and Frameworks is a collection of unrelated components and libraries that provide a plug-in framework and low-level libraries that support utility functions. The plug-in framework enables the process of registering, discovering and loading appropriate plug-ins. The low-level libraries provides a set of application utilities and a EUserHL library that supports better string handling, resource management, and error handling and object creation.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-325D8E31-584B-5B10-902C-F004641A614D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-325D8E31-584B-5B10-902C-F004641A614D"><title>Converting to and from Unicode Using CCnvCharacterSetConverter</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the way in which <codeph>CCnvCharacterSetConverter</codeph> can be used to convert chunks of text from Unicode to another character set, from another character set to Unicode, and from a character set to Unicode when the text is arriving in fragments. </p> <section><title>Introduction</title> <p>The <codeph>CCnvCharacterSetConverter</codeph> class is used for converting text between Unicode (UCS-2) and other character sets. Sixteen-bit descriptors are used to hold text encoded in UCS-2, and eight-bit descriptors are used to hold text encoded in all other character sets — whether these are encoded as a single byte per character, multiple bytes, or a variable number of bytes. There are two main steps in the conversion: </p> <ol id="GUID-C2C52A86-8E62-5FAB-A18A-57625C70694C"><li id="GUID-7A977F62-9E23-5B8A-922B-89C3470AAD67"><p>Define the non-Unicode character set to be converted to or from using <codeph>PrepareToConvertToOrFromL()</codeph>. </p> </li> <li id="GUID-CF98A4FA-21E2-515B-AE40-3B4A817FE760"><p>Convert the text using <codeph>ConvertFromUnicode()</codeph> or <codeph>ConvertToUnicode()</codeph>  </p> </li> </ol> <p>The conversion functions allow piece-by-piece conversion of input strings. Callers do not have to try to guess how big to make the output descriptor for a given input descriptor; they can simply do the conversion in a loop using a small output descriptor. The ability to cope with an input descriptor being truncated is useful if the caller cannot guarantee whether the input descriptor will be complete, e.g. if they themselves are receiving it in chunks from an external source. </p> <p>The conversion does not fail if characters are unknown, which may happen if the input character is not valid in its own character set — unlikely in the case of Unicode — or because there is no equivalent in the selected output character set. Instead, unknown characters are replaced with a default character, or a character which may be specified using one of the utility functions. </p> <p>There is no direct way to convert between two non-Unicode character sets. Though it is possible to convert from one character set to Unicode and then from Unicode to another character set. </p> <p>The first three examples use the simpler variant of <codeph>PrepareToConvertToOrFromL()</codeph>. The final example demonstrates, in code fragment form, the use of the other variant. </p> </section> <section><title>Converting text from Unicode to a non-Unicode character set</title> <p>Converting text in chunks does not need to guess the full size of the converted output text in advance. </p> <ol id="GUID-692F95B8-54ED-5FEC-85A0-D9DB8DA572DB"><li id="GUID-D3B8B2C9-6657-5327-9A07-B29BC92CCBEB"><p>Use <codeph>PrepareToConvertToOrFromL()</codeph> to check whether the nominated character set is supported, and leaves if it is not. </p> <p>This variant of <codeph>PrepareToConvertToOrFromL()</codeph> is preferred here because we are told which character set to convert to, and because the other variant would panic the thread if the character set were not available. The code also creates an output descriptor, and a ‘remainder’ buffer for holding the unconverted Unicode characters. This remainder buffer is initialised with the text in the input descriptor. </p> <codeblock id="GUID-98D7A6A3-B0DC-596B-BAEA-9A15CFB9A3D3" xml:space="preserve">LOCAL_C void ConvertUnicodeTextL(CCnvCharacterSetConverter&amp; aCharacterSetConverter, 
+            RFs&amp; aFileServerSession, TUint aForeignCharacterSet, const TDesC16&amp; aUnicodeText)
+    {
+    // check to see if the character set is supported - if not then leave 
+    if (aCharacterSetConverter.PrepareToConvertToOrFromL(aForeignCharacterSet, 
+                aFileServerSession) != CCnvCharacterSetConverter::EAvailable)
+        User::Leave(KErrNotSupported);
+    // Create a small-ish output buffer. 20 bytes recommended minimum    
+    TBuf8&lt;20&gt; outputBuffer;
+    // Create a buffer for the unconverted text - initialised with input descriptor
+    TPtrC16 remainderOfUnicodeText(aUnicodeText); </codeblock> </li> <li id="GUID-050ACCEB-6A7B-52E2-8BCA-2EDDC7EB5A61"><p>Once the character set is confirmed to be available, convert the text. </p> <p>A loop is set up to convert the text in the remainder buffer— which initially contains all the information in the input descriptor. </p> <p> <codeph>ConvertFromUnicode()</codeph> converts characters from the remainder buffer until the small output buffer is full — the Unicode contents of the output buffer are then safely stored. Then the remainder buffer is reset so that it only contains unconverted text. </p> <p>This process is repeated until the remainder buffer is empty, and the function completes. The code below also checks for corrupted characters. </p> <codeblock id="GUID-8BAF074A-B643-5253-9EB1-F581B4C74E35" xml:space="preserve">    for(;;) // conversion loop
+        {
+        // Start conversion. When the output buffer is full, return the 
+        // number of characters that were not converted
+        const TInt returnValue=aCharacterSetConverter.ConvertFromUnicode(outputBuffer,
+                                        remainderOfUnicodeText);
+        // check to see that the descriptor isn’t corrupt - leave if it is
+        if (returnValue==CCnvCharacterSetConverter::EErrorIllFormedInput)
+            User::Leave(KErrCorrupt);
+        else if (returnValue&lt;0) // future-proof against "TError" expanding
+            User::Leave(KErrGeneral);
+        // Do something here to store the contents of the output buffer. 
+        // Finish conversion if there are no unconverted characters in the remainder buffer
+        if (returnValue==0)
+            break; 
+        // Remove the converted source text from the remainder buffer. 
+        // The remainder buffer is then fed back into loop
+        remainderOfUnicodeText.Set(remainderOfUnicodeText.Right(returnValue));
+        }
+    }</codeblock> </li> </ol> </section> <section><title>Converting text from a non-Unicode character set to Unicode</title> <p>Converting text in chunks does not need to guess the full size of the converted output text in advance. </p> <ol id="GUID-4F713974-26C9-5D71-BB12-06395CA5F445"><li id="GUID-5A203757-6279-56A2-9D11-20AF6B7A8554"><p>Use <codeph>PrepareToConvertToOrFromL()</codeph> to check whether the nominated character set is supported, and leaves if it is not. </p> <p>this variant of <codeph>PrepareToConvertToOrFromL()</codeph> is preferred because we are told which character set to convert from, and because the other variant would panic the thread if the character set were not available. The function also creates an output descriptor, a state variable, and a ‘remainder’ buffer for holding the unconverted characters — this is initialised with the text in the input descriptor. The state variable is initialised with <codeph>CCnvCharacterSetConverter::KStateDefault</codeph> — after initialisation this should not be tampered with, but simply be passed into subsequent calls to <codeph>ConvertToUnicode()</codeph>. </p> <codeblock id="GUID-5EE39B69-34AB-5020-9C81-5B1C79F19B08" xml:space="preserve">LOCAL_C void ConvertForeignTextL(CCnvCharacterSetConverter&amp; aCharacterSetConverter,
+            RFs&amp; aFileServerSession, TUint aForeignCharacterSet, const TDesC8&amp; aForeignText)
+    {
+    // check to see if the character set is supported - if not then leave
+    if (aCharacterSetConverter.PrepareToConvertToOrFromL(aForeignCharacterSet, 
+                    aFileServerSession) != CCnvCharacterSetConverter::EAvailable)
+        User::Leave(KErrNotSupported);
+    // Create a small output buffer 
+    TBuf16&lt;20&gt; outputBuffer;
+    // Create a buffer for the unconverted text - initialised with the input descriptor
+    TPtrC8 remainderOfForeignText(aForeignText);
+    // Create a "state" variable and initialise it with CCnvCharacterSetConverter::KStateDefault
+    // After initialisation the state variable must not be tampered with.
+    // Simply pass into each subsequent call of ConvertToUnicode()
+    TInt state=CCnvCharacterSetConverter::KStateDefault;</codeblock> </li> <li id="GUID-1E6859F6-CFA0-573C-82FC-A6F17EE71E5E"><p>After the character set is confirmed to be available, convert the text. </p> <p>A loop is set up to convert the text in the remainder buffer — which initially contains all the information in the input descriptor. </p> <p> <codeph>ConvertToUnicode()</codeph> converts characters from the remainder buffer until the output buffer is full — the Unicode contents of the output buffer are then safely stored. Then the remainder buffer is reset so that it only contains unconverted text. This process is repeated until the remainder buffer is empty, and the function completes. The code below also checks for corrupted characters. </p> <codeblock id="GUID-13A35832-A4D7-57DE-A6BC-35B76521B1C8" xml:space="preserve">    for(;;)  // conversion loop
+        {
+        // Start conversion. When the output buffer is full, return the number
+        // of characters that were not converted
+        const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(outputBuffer, remainderOfForeignText, state);
+        // check to see that the descriptor isn’t corrupt - leave if it is
+        if (returnValue==CCnvCharacterSetConverter::EErrorIllFormedInput)
+            User::Leave(KErrCorrupt);
+        else if (returnValue&lt;0) // future-proof against "TError" expanding
+            User::Leave(KErrGeneral);
+
+        // Do something here to store the contents of the output buffer.
+        // Finish conversion if there are no unconverted 
+        // characters in the remainder buffer
+        if (returnValue==0)
+            break;
+        // Remove converted source text from the remainder buffer.
+        // The remainder buffer is then fed back into loop
+        remainderOfForeignText.Set(remainderOfForeignText.Right(returnValue));
+        }
+    }
+</codeblock> </li> </ol> </section> <section><title>Converting fragmented text from a non-Unicode character set to Unicode</title> <p>The main difficulty in converting fragmented text is that received chunks may begin or end with bytes from an incomplete character. </p> <p>To overcome this problem, implementations must ensure that the descriptors passed to <codeph>ConvertToUnicode()</codeph> always begin with a complete character (making the output descriptor at least 20 elements long should be enough to ensure this), and that conversions only progress to completion for the final chunk of text — in which the last character is complete. In the function below this is achieved by beginning the buffer for each chunk with a small amount of unconverted text from the previous chunk. The buffer is then guaranteed to begin with a complete character. Any ‘loose’ bytes from the end of the last chunk and the beginning of the new one combine to form a complete character. </p> <p>The function first uses <codeph>PrepareToConvertToOrFromL()</codeph> to check whether the nominated character set is supported, and leaves if it is not. As in the previous examples, this variant of <codeph>PrepareToConvertToOrFromL()</codeph> is preferred because we are told which character set to convert from, and because the other variant would panic the thread if the character set were not available. The function also creates a buffer to hold both the unconverted text fragment from the previous chunk, and the new chunk. </p> <codeblock id="GUID-EFB62089-2ADE-51B8-9A00-02DE1C1E16A1" xml:space="preserve">LOCAL_C void ConvertForeignTextL(CCnvCharacterSetConverter&amp; aCharacterSetConverter,
+            RFs&amp; aFileServerSession, TUint aForeignCharacterSet)
+    {
+    // check to see if the character set is supported - if not then leave
+    if (aCharacterSetConverter.PrepareToConvertToOrFromL(aForeignCharacterSet, 
+            aFileServerSession) != CCnvCharacterSetConverter::EAvailable)
+        User::Leave(KErrNotSupported);
+
+    // Create a buffer for holding non-Unicode text to be converted
+    const TInt KMaximumLengthOfBufferForForeignText=200;
+    TUint8 bufferForForeignText[KMaximumLengthOfBufferForForeignText];
+
+    // Create a variable for indicating the actual amount of text in the buffer
+    TInt lengthOfBufferForForeignText=0;</codeblock> <p>A loop is then set up to get a new chunk and append it to the unconverted text fragment from the previous chunk. The code also contains a placeholder to find out whether the current chunk is the last chunk, and stores this information in a flag. In addition, it creates an output descriptor, a state variable, and a ‘remainder’ buffer for holding the unconverted text. The state variable is initialised with <codeph>CCnvCharacterSetConverter::KStateDefault</codeph> — after initialisation this should not be tampered with, but simply be passed into subsequent calls to <codeph>ConvertToUnicode()</codeph>. </p> <codeblock id="GUID-B3791FEA-88F6-523C-8B92-D112EF2EB2CF" xml:space="preserve">    // Outer loop.
+    // Appends new chunk to fragment from previous chunk
+    // Then passes the buffer to the conversion loop.
+    for (;;)
+        {
+        // Create a modifiable pointer descriptor for the next chunk of non-Unicode text
+        TPtr8 nextChunkOfForeignText(bufferForForeignText+lengthOfBufferForForeignText,
+                    KMaximumLengthOfBufferForForeignText-lengthOfBufferForForeignText);
+
+        // Insert code to load next chunk of non-Unicode text here
+
+        // Calculate the length of the next chunk of text to be processed
+        const TInt lengthOfNextChunkOfForeignText=nextChunkOfForeignText.Length();
+        // Specify the length of the buffer for non-Unicode text
+        lengthOfBufferForForeignText+=lengthOfNextChunkOfForeignText;
+
+        // Set whether this is the last chunk - find out from source of text
+        const TBool isLastChunkOfForeignText= // ?
+            // e.g. the source may define that the last chunk is of length zero, in which case
+            // the expression "(lengthOfNextChunkOfForeignText==0)" would be assigned to 
+            // this variable; note that even if the length of this chunk is zero, 
+            // we can't just exit this function here as bufferForForeignText 
+            // may not be empty (i.e. lengthOfBufferForForeignText&gt;0)</codeblock> <codeblock id="GUID-83B9E61B-5147-552F-A2C9-11FED58BD356" xml:space="preserve">        // Create a small output buffer
+        TBuf16&lt;20&gt; outputBuffer;
+        // Create a remainder buffer for the unconverted text - used in conversion loop
+        TPtrC8 remainderOfForeignText(bufferForForeignText, lengthOfBufferForForeignText);
+        // Create a "state" variable and initialise it with CCnvCharacterSetConverter::KStateDefault
+        // After initialisation the state variable must not be tampered with.
+        // Simply pass into each subsequent call of ConvertToUnicode()
+        TInt state=CCnvCharacterSetConverter::KStateDefault;</codeblock> <p>The remainder buffer is passed to the conversion loop. </p> <p> <codeph>ConvertFromUnicode()</codeph> converts characters from the remainder buffer until the output buffer is full — the Unicode contents of the output buffer are then safely stored. Then the remainder buffer is reset so that it only contains unconverted text. This process is repeated until the remainder buffer contains just less than 20 bytes — 20 is selected to ensure that the function never tries to convert a single partial multi-byte character. The remainder of the unconverted bytes are copied into the main foreign text buffer, and the function returns to the outer loop. The process then repeats itself, with a new chunk being added to the foreign text buffer etc. </p> <p>If the ‘last chunk’ flag is set — in the main loop — then the conversion continues until the remainder buffer is empty. The function then completes. The code fragment below also includes code to check for corrupted characters. </p> <codeblock id="GUID-14415213-D28C-5910-82D2-049E220CFFC9" xml:space="preserve">// The conversion loop. This loop takes chunks of text prepared by the previous loop and converts them
+for(;;)  // conversion loop
+    {
+    const TInt lengthOfRemainderOfForeignText=remainderOfForeignText.Length();
+    if (isLastChunkOfForeignText)
+        {
+        if (lengthOfRemainderOfForeignText==0)
+            return; // the single point of exit of this function
+        }
+    else
+        {
+        // As this isn't the last chunk, ConvertToUnicode should not return
+        // CCnvCharacterSetConverter::EErrorIllFormedInput if the input descriptor ends
+        // with an incomplete sequence - but it will only do this if *none* of the input
+        // descriptor can be consumed. Therefore if the input descriptor is long enough
+        // (20 elements or longer is plenty adequate) there is no danger of this error
+        // being returned for this reason. If it's shorter than that, simply put it
+        // at the start of the buffer so that it gets converted with the next chunk.
+        if (lengthOfRemainderOfForeignText&lt;20)
+            {
+            // put any remaining foreign text at the start of bufferForForeignText
+        lengthOfBufferForForeignText=lengthOfRemainderOfForeignText;
+            Mem::Copy(bufferForForeignText, remainderOfForeignText.Ptr(), lengthOfBufferForForeignText);
+            break;
+            }
+        }
+
+    const TInt returnValue=aCharacterSetConverter.ConvertToUnicode(outputBuffer,
+                        remainderOfForeignText, state);
+    if (returnValue==CCnvCharacterSetConverter::EErrorIllFormedInput)
+        User::Leave(KErrCorrupt);
+    else if (returnValue&lt;0) // future-proof against "TError" expanding
+    User::Leave(KErrGeneral);
+    // Do something here to store the contents of the output buffer.
+remainderOfForeignText.Set(remainderOfForeignText.Right(returnValue));
+        }
+    }</codeblock> </section> <section><title>Using the faster variant of PrepareToConvertL()</title> <p>The faster variant of <codeph>PrepareToConvertL()</codeph> is suitable if the required character set is to be selected by the user from the list of available character sets, or if frequent conversions to/from different character sets are needed. In most cases the other variant is preferred. The code fragments below briefly outline the usage of the faster variant. </p> <p>As with the other variant, a file server session must be passed in — this is used when searching the file system for available character sets. The <codeph>CCnvCharacterSetConverter</codeph> object is created, and used to invoke the <codeph>CreateArrayOfCharacterSetsAvailableLC()</codeph> function. This generates an array containing all the character sets. </p> <codeblock id="GUID-2EF0A557-8893-5AAD-929F-5006C5C21D46" xml:space="preserve">// Set up file server session
+RFs fileServerSession;
+CleanupClosePushL(fileServerSession);
+User::LeaveIfError(fileServerSession.Connect());
+// Create CCnvCharacterSetConverter
+CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
+// Create array of available character sets
+CArrayFix&lt;CCnvCharacterSetConverter::SCharacterSet&gt;* arrayOfCharacterSetsAvailable= 
+    characterSetConverter-&gt;CreateArrayOfCharacterSetsAvailableLC(fileServerSession);</codeblock> <p>The character sets in the array might be displayed using code similar to that below. In the fragment the loop iterates through the array elements and prints the name of each referenced character set. </p> <codeblock id="GUID-6E684A52-CE93-5FE4-880F-078340DD8912" xml:space="preserve">_LIT(KAvailable,"Available:\n");
+_LIT(KFormatting,"    %S\n");
+Console.Printf(KAvailable);
+for (TInt i=arrayOfCharacterSetsAvailable-&gt;Count()-1; i&gt;=0; --i)
+    {
+    const CCnvCharacterSetConverter::SCharacterSet&amp; charactersSet=
+                        (*arrayOfCharacterSetsAvailable)[i];
+    characterSetConverter-&gt;PrepareToConvertToOrFromL(charactersSet.Identifier(),
+                 *arrayOfCharacterSetsAvailable, fileServerSession);
+    TPtrC charactersSetName=charactersSet.Name();
+    Console.Printf(KFormatting, &amp;charactersSetName);
+    }</codeblock> <p>The character set array is passed as an argument to the <codeph>PrepareToConvertToOrFromL()</codeph> function, along with the file server session and the UID for the character set. In the example below it is hard-coded as ASCII. If the character set does not exist, the function panics the thread. </p> <codeblock id="GUID-10691FC6-0BB4-5136-9786-448099DCD6C6" xml:space="preserve">// pass array to PrepareToConvertToOrFromL()
+characterSetConverter-&gt;PrepareToConvertToOrFromL(KCharacterSetIdentifierAscii, 
+    *arrayOfCharacterSetsAvailable, fileServerSession);</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-326D4D50-5AD9-5CA2-8422-AA45AE0712D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-326D4D50-5AD9-5CA2-8422-AA45AE0712D6" xml:lang="en"><title>Implementation
+of W3C Types</title><shortdesc>This topic provides a correspondence between the DOM classes from
+the W3C standard and the XML DOM Engine classes from Symbian. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><table id="GUID-2C2F869B-F93E-5365-BC5C-E54749C1AC5F">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>DOM Level 3</b>  </p> </entry>
+<entry><p> <b>Symbian XML DOM Engine </b>  </p> </entry>
+<entry><p> <b>Notes</b>  </p> </entry>
+</row>
+<row>
+<entry colsep="0"><p> <b>Node interfaces</b>  </p> </entry>
+<entry colsep="0"/>
+<entry colsep="0"/>
+</row>
+<row>
+<entry><p> <codeph>Document</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-87294A6B-4607-3D4A-9D1E-B87B16A06209.dita"><apiname>RXmlEngDocument</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Element</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-D8881922-9016-3E1E-9984-AA90EAED2F0A.dita"><apiname>TXmlEngElement</apiname></xref>  </p> </entry>
+<entry><p>Provides an extended set of methods for creating DOM tree contents
+(child elements, attributes and text). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Attr</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-4CFB00D7-0FBC-3582-98C4-09B5761C4A8B.dita"><apiname>TXmlEngAttr</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Text</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-2F827E35-9457-3228-9996-B5C42F90410F.dita"><apiname>TTextXmlEngNode</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Comment</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-BA2CBDB4-9561-3F7B-8B0D-5FB4E980D104.dita"><apiname>TXmlEngComment</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EntityReference</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-BFF4D5CC-B06A-368F-9DCB-471C2A6D9C06.dita"><apiname>TXmlEngEntityReference</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CharacterData</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-FD05A47D-459F-3AC5-8653-FC13E98F5FC0.dita"><apiname>TXmlEngCharacterData</apiname></xref>  </p> </entry>
+<entry><p>Provides a subset of <codeph>CharacterData</codeph> modification
+methods. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ProcessingInstruction</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-F30A7950-E1BE-3622-88B8-25288CDB8897.dita"><apiname>TXmlEngProcessingInstruction</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CDATASection</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-F25CA9A5-584D-3505-9362-652B455E15E6.dita"><apiname>TXmlEngCDATASection</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DocumentFragment</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-4D4CB050-FF8B-3B65-B4E3-313F1C00999B.dita"><apiname>TXmlEngDocumentFragment</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DocumentType</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Entity</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Notation</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p> <xref href="GUID-EE124A33-4281-3C8A-86DF-B94E1533881C.dita"><apiname>TXmlEngNamespace</apiname></xref>  </p> </entry>
+<entry><p>Specific to the implementation of the XML DOM Engine. </p> </entry>
+</row>
+<row>
+<entry colsep="0"><p> <b>Basic types</b>  </p> </entry>
+<entry colsep="0"/>
+<entry colsep="0"/>
+</row>
+<row>
+<entry><p> <codeph>DOMString</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref>, <xref href="GUID-04EB2F83-C3AD-3451-9C78-105B2C25B0E5.dita"><apiname>TString</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMObject</codeph>  </p> </entry>
+<entry><p> <codeph>void*</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMUserData</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-4530632B-D068-3BCE-91B8-706D7ABB6948.dita"><apiname>MXmlEngUserData</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMTimeStamp</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry colsep="0"><p> <b>Helper interfaces</b>  </p> </entry>
+<entry colsep="0"/>
+<entry colsep="0"/>
+</row>
+<row>
+<entry><p> <codeph>NodeList</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-83C8DD06-5616-37E9-A8C0-8041A18B1CA9.dita"><apiname>RXmlEngNodeList</apiname></xref> <codeph>&lt;T&gt;</codeph>  </p> </entry>
+<entry><p>Provides iterator-based access instead of the index-based access
+of the <codeph>NodeList</codeph> class. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMStringList</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported (only required by the <codeph>DOMConfiguration</codeph> class,
+which is not supported either). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> NameList</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Replaced by alternative access mechanisms. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NamedNodeMap</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Replaced by alternative access mechanisms. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TypeInfo</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMConfiguration</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMImplementation</codeph>  </p> </entry>
+<entry><p> <xref href="GUID-9EE6EEBF-907D-31AC-A0F2-E7E21AC59438.dita"><apiname>RXmlEngDOMImplementation</apiname></xref>  </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>UserDataHandler</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Partial support due to limitations of the libxml2 standard library: <codeph>IMPORTED</codeph>, <codeph>RENAMED</codeph> and <codeph>ADOPTED</codeph> operations do not notify <xref href="GUID-4530632B-D068-3BCE-91B8-706D7ABB6948.dita"><apiname>MXmlEngUserData</apiname></xref> children. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMError</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMErrorHandler</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMException</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMImplementationList</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not applicable in the XML DOM Engine. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DOMLocator</codeph>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Not supported by the libxml2 standard library. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p> <xref href="GUID-708F33AD-2E4F-3D3B-9E0A-E255BB8DEFE7.dita"><apiname>DOMParser</apiname></xref>  </p> </entry>
+<entry><p>Specific to the implementation of the XML DOM Engine. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></refbody><related-links>
+<link href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita"><linktext>XML DOM Engine
+Overview</linktext></link>
+<link href="GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita"><linktext>XML DOM Engine
+Node Reference</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-32756B46-DAB7-44FA-B710-33EC36E1409F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-32756B46-DAB7-44FA-B710-33EC36E1409F" xml:lang="en"><title>List
+browsing</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In a list, browsing is possible in two directions: pressing the Arrow up
+key moves the focus one step up (backward), and pressing the Arrow down key
+moves the focus one step down (forward).</p>
+<p>When browsing, the item in focus must always be visible. The detailed rules
+of moving the focus are as follows:</p>
+<ul>
+<li><p>If the choice item that is becoming focused is already fully visible,
+all the items remain in their current positions, and the highlight is moved
+from the old item to the new item. </p></li>
+<li><p>If the new choice item is not visible, all items are moved in the view
+to the appropriate direction so that the new item becomes fully visible. For
+example, if the focus is moving down and the new item is currently below the
+bottom edge of the view, the items are moved up. </p></li>
+<li><p>When moving the choice items in the view, they are only moved the minimum
+amount necessary. For example, when moving items up to get the next one under
+the bottom edge visible, the item moves to the lowest allowed position in
+the view.</p></li>
+</ul>
+<p>By default, all lists loop. This means that it is possible to browse forward
+from the last choice item, which leads to the first item in the list, and
+vice versa.</p>
+<p>It is possible to specify that a list is a queue. This means that it is
+not allowed to browse forward from the last item or browse backward from the
+first item. If the user attempts this, the list does not react; there is no
+feedback except for the normal keypad tone.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3291A4CF-3CCD-53BD-BBB5-4F2389765B08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3291A4CF-3CCD-53BD-BBB5-4F2389765B08" xml:lang="en"><title>Multimedia
+Software Adaptation Collection</title><shortdesc>The Multimedia Software Adaptation Collection contains one component,
+the Video Renderer, which enables video rendering to a graphics surface. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C" xml:lang="en"><title>Search-Sort
+Introduction</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In Symbian OS versions earlier than 9.4, when a search or sort query is
+made by a client, Message Server searches in the permanent file store (a proprietary
+formatted file), and returns the result to the client. </p>
+<p>From Symbian OS version 9.5 onwards Message Server operates with the SQL
+database to store index entries. With the SQL database implementation the
+Message Server makes a query on the SQL index entry table, and returns the
+result to the client. </p>
+<p>The Messaging Middleware module provides an enhanced API for searching
+and sorting messages. This API can be used only when the SQL database is used
+to store the index entries. The API has the following features: </p>
+<ul>
+<li id="GUID-ACA12109-0146-5E75-A966-7BC6BA760A02"><p>Combined search (combination
+of more than one simple search criteria) </p> </li>
+<li id="GUID-945EFB6D-82CC-5E96-9487-37A6F0687C5A"><p>Search based on whole
+and partial words </p> </li>
+<li id="GUID-AA68CB16-94F8-56D4-98A7-2FB7A0372D24"><p>Case sensitive search </p> </li>
+<li id="GUID-FBDF167C-9DFF-5AF6-9352-17750D4649E3"><p>Wildcard search </p> </li>
+<li id="GUID-82B8AF61-5EE5-5DA1-96C8-EF94267D034D"><p>Count of total search
+results </p> </li>
+<li id="GUID-42BFEC5C-0703-51C5-952B-ACA571BDAFBD"><p>Single level sorting
+of search results </p> </li>
+<li id="GUID-ABDF3B62-0EDC-5256-858C-C958D84D00D1"><p>Iterative mechanism
+for clients to access the search and sort results sequentially. </p> </li>
+</ul>
+<p>The following sections include basic information on the search-sort functionality,
+which is important to understand before using the search-sort APIs: </p>
+<ul>
+<li id="GUID-CF2F2278-378A-5CA8-8E0A-5B7300CDCAA6"><p><xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita#GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C/GUID-F682B9C3-8D9C-586B-94E5-67A24EB90180">Description</xref>  </p> </li>
+<li id="GUID-28C84BAA-BD23-5A95-9D9F-402754208292"><p><xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita#GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C/GUID-98960254-25D6-5F63-9788-255205B6D2BB">Search-sort API summary</xref>  </p> </li>
+<li id="GUID-B928EB9A-8999-5E5F-9C61-C0DFF9EDA401"><p><xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita#GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C/GUID-995B61DB-FB68-591E-8810-1DA96C882435">Advantages</xref>  </p> </li>
+<li id="GUID-89A87B95-6A21-5CBD-B682-439E233AB29E"><p><xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita#GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C/GUID-014C08BD-7FFC-5D2B-A107-316A70D52D12">Limitations</xref>  </p> </li>
+</ul>
+<section id="GUID-F682B9C3-8D9C-586B-94E5-67A24EB90180"><title>Description</title> <p>The
+search-sort functionality is based on the client-server architecture. The
+Messaging Middleware module provides an advanced search-sort capability if
+the index entries are stored in an SQL database. </p> <p>The client creates
+a search-sort query, and passes it to the Message Server. The Message Server
+searches in the search-sort cache to check whether the query is a repetitive
+query (a query that was already requested in the past and for which a query
+ID is maintained in the search-sort cache) or a new query. </p> <p>If it is
+a repetitive query, the Message Server gets the index entry from the SQL database,
+and provides the search result to the client. </p> <p>If it is a new query,
+the Message Server stores the search query in the cache, and passes the query
+to the SQL database. </p> <p>In both the cases, the Message Server gets the
+index entry from the SQL database, passes the result to the client, and maintains
+the query in the search-sort cache. </p> <p>The iterative method can be used
+for searching and sorting a new or a repetitive search query. </p> <p>The
+following table provides detailed information on the fields supported in the
+search-sort operation: </p> <table id="GUID-0A7F291E-2B4E-5632-9D54-7C83CA8D1CE0">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry>Operation</entry>
+<entry>Header</entry>
+<entry>Body</entry>
+<entry>TMsvEntry</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b> Searching</b>  </p> </entry>
+<entry><p>To, cc, bcc, from, subject </p> </entry>
+<entry><p>Body part, whole and partial word (case sensitive and insensitive,
+whole word, wildcard) </p> </entry>
+<entry><p>Attachment type, read, unread, new flag, priority, size, MTM type,
+iDescription, iDetails, and date and time. </p> </entry>
+</row>
+<row>
+<entry><p> <b> Searching with explicit sorting</b>  </p> </entry>
+<entry><p>To, cc, bcc, from, subject </p> </entry>
+<entry><p>-</p> </entry>
+<entry><p>Attachment type, read, unread, new flag, priority, size, MTM type,
+iDescription, iDetails, and date and time. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Sorting</b>  </p> </entry>
+<entry><p>To, cc, bcc, from, subject </p> </entry>
+<entry/>
+<entry><p>Attachment type, read, unread, new flag, priority, size, MTM type,
+iDescription, iDetails, and date and time. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Key terms</b> </p> <dl>
+<dlentry>
+<dt>Iterator</dt>
+<dd><p>An iterator is a method that allows a client to access the search and
+sort results sequentially. An iterator is useful when a client does not want
+to provide the memory to receive an array of results. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Search-sort cache</dt>
+<dd><p>Search-sort cache contains frequently requested search-sort queries.
+By default, this cache is set to 20 percent of the index entry cache. </p> <p>For
+more information the search-sort cache, see <xref href="GUID-45CA1787-F41F-5AA0-9508-B9D683602D41.dita">Search-Sort
+Cache</xref>. </p> </dd>
+</dlentry>
+</dl> </section>
+<section id="GUID-98960254-25D6-5F63-9788-255205B6D2BB"><title>Search-sort
+API summary</title> <p>Use the following APIs available in <filepath>msgs.dll</filepath> for
+searching and sorting messages: </p> <fig id="GUID-B16C2CC4-4269-5F23-88C3-33E87F198D88">
+<title>              High level class diagram of new search-sort API     
+      </title>
+<image href="GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e256954_href.png" placement="inline"/>
+</fig> <ul>
+<li id="GUID-9A2D5945-9D5F-5235-BA4F-500CFE5B2CF0"><p> <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref>  </p> <p>The <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref> class is used in the client application for enhanced search-sort operations
+on the message store. </p> <p>This class can be used for the following: </p> <ul>
+<li id="GUID-7FAD5025-F94D-5824-BFD7-BDFCB83C4F2D"><p>To run a simple or complex
+search-sort request. </p> </li>
+<li id="GUID-94DFA54C-B9B6-5154-BF09-46A45DFCCD1E"><p>To repeat an earlier
+search-sort operation by using the <xref href="GUID-47DEF0FA-908B-31E4-A493-64FE7468F1D1.dita"><apiname>queryId</apiname></xref>. </p> </li>
+<li id="GUID-FBB74619-7822-5EC8-BD69-E7D2F2943896"><p>To receive results either
+in one chunk using an array or one after the other using an iterative method. </p> <note> The
+search-sort results can be received as a list of <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> or <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> objects.</note></li>
+</ul> </li>
+<li id="GUID-B757296A-97BD-5816-99BD-7897900CA1F4"><p> <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita"><apiname>CMsvSearchSortQuery</apiname></xref>  </p> <p>The <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita"><apiname>CMsvSearchSortQuery</apiname></xref> class
+is used in the client application to create a search-sort query. It has an
+interface to add or set the query criteria on various message parts. </p> <p>This
+class provides the following search options: </p> <ul>
+<li id="GUID-F6ABCDEC-C50F-53BA-8817-CA88444765E7"><p>Case sensitive search
+(<xref href="GUID-4F6E4BC7-B77B-390D-BF08-58DF5EF2A959.dita"><apiname>SetCaseSensitiveOption</apiname></xref>) </p> <p>By default this option
+is set to false. </p> </li>
+<li id="GUID-C33F20AC-8F74-5CF6-9446-02227F274E59"><p>Whole word search (<xref href="GUID-D95D1E2A-8D0C-3509-8C51-C36DA28E304D.dita"><apiname>SetWholeWord</apiname></xref>) </p> <p>By
+default this option is set to false. </p> </li>
+<li id="GUID-F9BDA832-A1B8-5596-B619-2A54936D48FB"><p>Wildcard search (<xref href="GUID-BB9B7771-194B-3629-937C-0C829A339463.dita"><apiname>SetWildCardSearch</apiname></xref>) </p> <p>Allow
+the use of the asterisk (*) and question mark (?) wildcards. By default this
+option is set to false. </p> </li>
+<li id="GUID-ACAC32F4-9E34-5A47-A5CB-F9B5D2AE1235"><p>Subfolder search (<xref href="GUID-B06EB103-6ECA-39F0-A3F0-B99D7314CF3C.dita"><apiname>SetSubFolderSearch</apiname></xref>) </p> <p>Include
+the entries within the subfolders in the search result. By default this option
+is set to false. </p> <note> The subfolder option is valid only for a search
+query. </note> </li>
+<li id="GUID-AD053845-DB7D-5447-AD38-A348E51B6DE6"><p>Explicit single level
+sort (using the <codeph>TMsvMessagePart                      aMessagePart</codeph> parameter
+in the <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-D4A0638E-61AE-3F7D-AB84-D3285F2D4539"><apiname>CMsvSearchSortQuery::AddSearchOptionL</apiname></xref> function. </p> <p>Sorting
+on one particular message part. </p> </li>
+</ul> <p>The <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita"><apiname>CMsvSearchSortQuery</apiname></xref> class is used with the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref> class
+when requesting a new search-sort operation. </p> <note type="important"> By
+default, the search query results are not sorted. To receive a result in a
+sorted order, you must send a sort request by using the <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-CE8F4E20-B1A9-32BF-B1FB-6F4E6CB88C2A"><apiname>CMsvSearchSortQuery::AddSortOptionL()</apiname></xref> function.
+Sort options can be used with search options when creating a search-sort query. </note></li>
+<li id="GUID-6DAE4181-212F-5988-AD0E-C1BF20503952"><p> <xref href="GUID-D9BB2EF0-262F-3BCF-8F48-F40FE0D4C107.dita"><apiname>TMsvMessagePart</apiname></xref>  </p> <p>The <xref href="GUID-D9BB2EF0-262F-3BCF-8F48-F40FE0D4C107.dita"><apiname>TMsvMessagePart</apiname></xref> is
+an enumeration type class that contains all parts of the message, including
+index entry and message header. Searching or sorting is done based on the <xref href="GUID-D9BB2EF0-262F-3BCF-8F48-F40FE0D4C107.dita"><apiname>TMsvMessagePart</apiname></xref> class. </p> </li>
+<li id="GUID-EFEB6199-FD8A-55F4-9524-02E5C4A65488"><p> <xref href="GUID-A60B4636-F309-3FD6-8D12-D4EE3AC6BC58.dita"><apiname>TMsvSearchSortResultType</apiname></xref>  </p> <p>The <xref href="GUID-A60B4636-F309-3FD6-8D12-D4EE3AC6BC58.dita"><apiname>TMsvSearchSortResultType</apiname></xref> is an enumeration class. The client uses <xref href="GUID-A60B4636-F309-3FD6-8D12-D4EE3AC6BC58.dita"><apiname>TMsvSearchSortResultType</apiname></xref> to
+specify if the search and sort results are returned as <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> or <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref>. </p> </li>
+<li id="GUID-B07DA71A-4906-5EAB-8A4F-A103EB6F259F"><p> <xref href="GUID-9EC5FF8F-55BF-3D4B-BF1E-6221509E2583.dita"><apiname>TMsvRelationOp</apiname></xref>  </p> <p>The <xref href="GUID-9EC5FF8F-55BF-3D4B-BF1E-6221509E2583.dita"><apiname>TMsvRelationOp</apiname></xref> is
+an enumeration type class that is used to provide relational operations between
+the search criteria value and the value in the message part of a message. </p> <p>For
+example, equal to, greater than, greater than or equal to, less than, and
+less than or equal to. </p> </li>
+<li id="GUID-0DA7A049-9FCA-5F7C-9C69-E357BBD5525D"><p> <xref href="GUID-94A91DF4-2362-3042-A230-79B4B294B2F6.dita"><apiname>TMsvSortOrder</apiname></xref>  </p> <p>The <xref href="GUID-94A91DF4-2362-3042-A230-79B4B294B2F6.dita"><apiname>TMsvSortOrder</apiname></xref> is
+an enumeration type class that is used to provide the sorting options for
+sorting queries. The search or sort results can be sorted in ascending or
+descending order. </p> </li>
+</ul> </section>
+<section id="GUID-995B61DB-FB68-591E-8810-1DA96C882435"><title>Advantages</title> <p>The
+following are the advantages of the enhanced search-sort functionality: </p> <ul>
+<li id="GUID-D6B66EA5-4E18-5065-8502-7FD78C0147C8"><p>Search messages by the
+following fields: </p><note> Most of the following fields are applicable to
+email messages: </note> <ul>
+<li id="GUID-77DB4B4B-DD60-5164-974A-BD892702FD2B"><p>Sender, recipient list
+(cc, to, bcc), subject </p> </li>
+<li id="GUID-C16729FC-8517-59BF-AEE7-CEF4B6929AC9"><p>Mail size and size range </p> </li>
+<li id="GUID-FDA2E776-CE39-55E6-900E-8EBE826EBABC"><p>Date and date range </p> </li>
+<li id="GUID-24535174-207A-5095-ACCB-38F0A2B4704B"><p>Message type (SMS, Email,
+MMS, and BIO message) </p> </li>
+<li id="GUID-C190645B-B338-5C37-B506-BF783144923D"><p>Priority (high, medium,
+and low) </p> </li>
+<li id="GUID-D8804E92-44D5-5730-A09F-BE5EE62FB505"><p>Attachment types (linked
+attachment and file attachment) </p> </li>
+<li id="GUID-68D9C896-B8B1-5FA4-B833-8A7E9E2A09D0"><p>Message status </p> <p>For
+example, New, Read, Unread, and so on. </p> </li>
+</ul> </li>
+<li id="GUID-D381A082-643C-502A-99A9-1813C2FE5B8D"><p>Search messages containing
+a specified string in a specified message part. </p> </li>
+<li id="GUID-CB9D7CD8-41BF-55EA-B867-5C39192FC984"><p>Search within subfolders
+of the parent folder. </p> </li>
+<li id="GUID-194B52B2-B443-51A2-A7CB-4595CEE0101E"><p>Provides combined search
+and sort options to the client. </p> </li>
+<li id="GUID-21C4E9F2-CF3C-552D-8A4E-E2714060DF87"><p>Provides explicit single
+level of sorting with implicit sort by data and time. </p> </li>
+<li id="GUID-2137FD0D-97F5-58DA-BDC0-2E39EFFA750F"><p>Allows client to implement
+more versatile UI views. </p> </li>
+<li id="GUID-CECCA668-AEBD-5A26-AF0A-D591A7128F65"><p>Returns total number
+of search-sort count without sending the resultant data. For example, the
+number of unread messages in the inbox. </p> </li>
+<li id="GUID-308007D7-B0AC-5E6E-8EB9-2CD56214BED1"><p>Provides good RAM performance
+for repetitive search-sort requests, as the Messaging framework maintains
+a search-sort cache for frequently used search-sort requests. </p> </li>
+</ul> </section>
+<section id="GUID-014C08BD-7FFC-5D2B-A107-316A70D52D12"><title>Limitations</title> <p>The
+following are the limitations of the advanced search and sort functionality: </p> <ul>
+<li id="GUID-1361069B-D79B-5F37-B6D2-5730B73152B4"><p>The search-sort operation
+for a specific value in a specific message part is supported, but searching
+for a specific value in all message parts is not supported. </p> </li>
+<li id="GUID-F0E732EC-D4D5-53AE-A2F2-F09ADF134426"><p>Index entry is migrated
+to SQL. The header and body part are yet to be migrated to SQL. So the iterative
+method is supported only if the message parts in the index entry are used
+in creating the search-sort query. </p> </li>
+<li id="GUID-56127926-2AD8-50CE-81F3-E2CC5AE89EB7"><p>The following are not
+supported in the iterative method because the limitations of SQL: </p> <ul>
+<li id="GUID-F61AF937-A39E-5276-AE13-AEA2F48BF0C3"><p>Accessing the next set
+of values, that is, next <b>n</b> values (results). </p> </li>
+<li id="GUID-17F483B6-427F-59CD-8C47-88D5542E765B"><p>Accessing the previous
+value or the previous set of values. </p> </li>
+<li id="GUID-0323A0FD-DED7-5B44-B53E-565727B59E81"><p>Accessing a random value
+or a random set of values. </p> </li>
+</ul> </li>
+<li id="GUID-C567013B-A385-50B4-BC30-325BB2B073DB"><p>Multi level sorting
+is not supported. </p> </li>
+<li id="GUID-B0BB3E72-1C5F-5F44-AA79-170B4BC2CFD2"><p>A search query can use
+a maximum of five message parts as search criteria in a combined search. </p> </li>
+<li id="GUID-AFC8222E-ACF6-5F11-9D2C-773E9149473E"><p>Sorting on message body
+is not supported. </p> </li>
+<li id="GUID-62916475-9920-5196-9DB3-4F9C517F759B"><p>Search-sort operation
+cannot be performed on all the message parts present in index entry. The supported
+list consists of message parts present in message header, message body and
+a partial list of message parts from index entry. See the <xref href="GUID-D9BB2EF0-262F-3BCF-8F48-F40FE0D4C107.dita"><apiname>TMsvMessagePart</apiname></xref> enumeration
+class for the supported message parts. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-45CA1787-F41F-5AA0-9508-B9D683602D41.dita"><linktext>Search-Sort
+Cache</linktext></link>
+<link href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita"><linktext>Example code</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e92530_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-32E29020-1956-461A-B79A-1492E06049E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-32E29020-1956-461A-B79A-1492E06049E7" xml:lang="en"><title>Symbian guide</title><shortdesc>The Symbian Guide describes the architecture and functionality
+of the platform, and provides guides on using its APIs.  </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-32F00078-6084-5288-9D3F-9F8D70514799.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-32F00078-6084-5288-9D3F-9F8D70514799" xml:lang="en"><title>RESOURCE
+statement</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;resource-statement&gt;
+resource-statement ::= 
+RESOURCE &lt;struct-name&gt; [ &lt;resource-name&gt; ] { &lt;resource-initialiser-list&gt; } </codeblock>
+<p>The <codeph>RESOURCE</codeph> statement is used to generate a resource
+in the resource file. The statement specifies three things:</p>
+<ul>
+<li id="GUID-F51FD208-5879-57EF-9E16-914A1F4F1FE7"><p>a <varname>struct-name</varname> which
+denotes the structure that will be used for the resource</p> <p>It must have
+been defined in a previous <codeph>STRUCT</codeph> statement and must be in
+upper case.</p> </li>
+<li id="GUID-1EE96D74-26D0-5BC3-8EDC-19CD924515D0"><p>an optional <varname>resource-name</varname> which
+identifies the resource</p> <p>The <codeph>resource-name</codeph> must be
+in lower case.</p> <p>The <codeph>resource-name</codeph> causes a symbolic
+constant to be generated in the resource compiler’s output header file, so
+that a resource</p> <codeblock id="GUID-505C63EA-20A4-5019-BA34-FEAED516E037" xml:space="preserve">RESOURCE TEST my_test { /* etc */ }</codeblock> <p>will
+result in a definition of the form</p> <codeblock id="GUID-4FBB0DF1-09D6-54CA-AAD4-F29BFCC27A42" xml:space="preserve">#define MY_TEST 1</codeblock> <p>in
+the generated header file.</p> <p>The default ID for the first resource defined
+in the file is one with subsequent resources’ IDs generated in ascending sequence.
+See <xref href="GUID-F9605837-2209-500D-AB62-48A433489C5E.dita">Resource file definition</xref> for
+more information on how resource IDs are generated.</p> <p>If no resource
+name is specified then the resource is generated in the object file and assigned
+a resource ID as usual, but will not be published in the header file. Anonymous
+resources are used mainly for playback scripts where the resources are read
+in sequentially by default, so that assigning names to them would be superfluous.</p> <p>The <codeph>resource-name</codeph> may
+also be used by the resource compiler for <codeph>LINK</codeph> and <codeph>LLINK</codeph> members
+— see <xref href="GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2.dita">Resource identifiers
+for LINKs and LLINKs</xref>.</p> </li>
+<li id="GUID-4F0ED7DA-1A16-53FE-A1E0-98298A9B2BB0"><p>initialisation for members
+of the resource struct, where their default values are not appropriate</p> </li>
+</ul>
+<example><p>As an example, given the struct definition</p><codeblock id="GUID-D2FBD433-0A85-5C0C-9CD2-CFC08F20E14E" xml:space="preserve">STRUCT NCEDIT
+ {
+ WORD current;
+ WORD low;
+ WORD high=65535;
+ }</codeblock><p>you could define a resource:</p><codeblock id="GUID-4B005C45-B0EF-542D-BD63-0D2E02186FFA" xml:space="preserve">RESOURCE NCEDIT memory_size
+ {
+ low=640;
+ high=1024;
+ }</codeblock><p>Thus, in the resource file, <codeph>current</codeph> has
+the value compiler default value of 0, <codeph>low</codeph> has the value
+640 (specified in the resource definition) and <codeph>high</codeph> has the
+value 1024 (specified in the resource definition, overriding the default for
+the struct type).</p></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-330FBB90-E622-4FD1-A189-64656F68A10D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-330FBB90-E622-4FD1-A189-64656F68A10D" xml:lang="en"><title>Displaying
+an image on the screen</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Symbian Image Converter Library (ICL) supports the decoding of image
+files. You can use the ICL architecture to load an image stored in a file
+or a descriptor and convert it to a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Font_and_Bitmap_Server/CFbsBitmapClass.html" format="application/java-archive"><codeph>CFbsBitmap</codeph></xref> object.
+Use this bitmap object, for example, to display the image on the screen of
+the mobile device after the capture.</p>
+<p>For a reference example, see <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/567330dd-130f-4f1d-9380-fac5aec5a6a9/S60_Platform_Image_Converter_Example.html" scope="external">S60 Platform: Image Converter Example</xref> on Forum Nokia.</p>
+<section><title>To convert an image to display on the screen</title>
+<ol>
+<li id="GUID-7A3CD3F3-01AC-4A8F-8502-0E92AF85462A"><p>Use the methods
+of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CImageDecoderClass.html" format="application/java-archive"><codeph>CImageDecoder</codeph></xref> (or <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CBufferedImageDecoderClass.html" format="application/java-archive"><codeph>CBufferedImageDecoder</codeph></xref>) class to construct your application.</p>
+<ul>
+<li><p>Create a <codeph>CImageDecoder</codeph> object using <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CImageDecoderClass.html#%3a%3aCImageDecoder%3a%3aDataNewL%28RFs%20%26amp%3b%2cconst%20TDesC8%20%26amp%3b%2cconst%20TDesC8%20%26amp%3b%2cconst%20TOptions%29" format="application/java-archive"><codeph>CImageDecoder::DataNewL()</codeph></xref> (for descriptor)
+or <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CImageDecoderClass.html#%3a%3aCImageDecoder%3a%3aFileNewL%28RFs%20%26amp%3b%2cconst%20TDesC%20%26amp%3b%2cconst%20TDesC8%20%26amp%3b%2cconst%20TOptions%29" format="application/java-archive"><codeph>CImageDecoder::FileNewL()</codeph></xref> (for file) method.</p>
+</li>
+<li><p>Select a suitable plugin for the actual decoding. For a list
+of available plugins, see the Symbian OS Library.</p></li>
+<li><p>Request information about the image using, for example, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CImageDecoderClass.html#%3a%3aCImageDecoder%3a%3aFrameInfo%28TInt%29const" format="application/java-archive"><codeph>CImageDecoder::FrameInfo()</codeph></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CImageDecoderClass.html#%3a%3aCImageDecoder%3a%3aFrameCount%28%29const" format="application/java-archive"><codeph>CImageDecoder::FrameCount()</codeph></xref>.</p></li>
+<li><p>Decode the image using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Imaging_Frameworks/CImageDecoderClass.html#%3a%3aCImageDecoder%3a%3aConvert%28TRequestStatus%20%2a%2cCFbsBitmap%20%26amp%3b%2cCFbsBitmap%20%26amp%3b%2cTInt%29" format="application/java-archive"><codeph>CImageDecoder::Convert()</codeph></xref> method.</p></li>
+</ul>
+</li>
+<li id="GUID-CB579189-BC23-48E1-BE89-6D0D74792ECB"><p>Include <codeph>ImageConversion.h</codeph> and <codeph>Fbs.h</codeph> header
+files in the appropriate class file(s).</p></li>
+<li id="GUID-04864D68-F3FB-44B4-B80F-1FAC900D4404"><p>Make sure
+you have correct <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capabilities</xref> information
+set for your application. You need at least the <codeph>ReadUserData</codeph> capability.</p>
+</li>
+<li id="GUID-1526129D-7AE3-4A63-BEB8-13C968AF52C0"><p>Make sure <codeph>imageconversion.lib</codeph>, <codeph>bafl.lib</codeph>, <codeph>fbscli.lib</codeph> and <codeph>efsrv.lib</codeph> are accessible to your
+linker when compiling your application by including them in your <codeph>mmp</codeph> file
+or by editing the project properties in your IDE, depending on your build
+environment.</p></li>
+</ol>
+</section>
+<section><title>See also</title>
+<p><xref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita">Image Display
+Library Overview</xref></p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3313A7E0-B10A-5CDE-8DA3-FB9C48FC80CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3313A7E0-B10A-5CDE-8DA3-FB9C48FC80CA" xml:lang="en"><title>Change
+notifier</title><shortdesc>Describes change notifiers and what they are used for.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Change notifiers allow threads to be notified of changes in the environment
+such as a switch in locale, crossing over past midnight etc.; the <codeph>TChanges</codeph> enumerator
+lists the possible events.</p>
+<p>A change notifier is a Kernel object and, as such, is managed by the Kernel.
+Access to a change notifier is through an <codeph>RChangeNotifier</codeph> handle.</p>
+<p>The list of possible events is itemised by the enumerators of the <codeph>TChanges</codeph> enum.</p>
+<p>The change notifier service is not used directly but is an asynchronous
+service provider intended to be part of an active object. For example, the
+Environment Change Notifier API provides a <codeph>CEnvironmentChangeNotifier</codeph> active
+object which uses the services of the change notifier as part of its implementation.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3314123F-205D-5E05-9041-DB9836B7812B" xml:lang="en"><title>File
+Access Example: Accessing the File System Using P.I.P.S.</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application shows, using a P.I.P.S. (P.I.P.S. Is POSIX on
+Symbian platform) program, the restrictions on file access that are imposed
+by the Symbian platform Security model. </p>
+<p>It shows that programs can access their own directories, but cannot, without
+platform security capabilities not available to ordinary programs, access
+the directories of other programs, or the system binary directory <filepath>sys/bin</filepath>. </p>
+<p>This example defines an executable file with no platform security capabilities.
+The program first creates its own secure directory that it can write to and
+read from. It then attempts to use a file in a private directory of another
+program, and then in <filepath>sys/bin</filepath>, and shows that these attempts
+are denied. </p>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-2dae3cca-f112-4219-8f7c-6c48682d1f28.zip" scope="external">FileAccessExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-2dae3cca-f112-4219-8f7c-6c48682d1f28.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p>The following sections provide more
+information about the steps that the example performs. </p> <p><b> Create
+a secure directory</b> </p> <p>The example creates an empty secure directory
+for the program by using the <xref href="GUID-5EA72F64-E826-3B15-9468-902BD57F6AA7.dita"><apiname>mkdir()</apiname></xref> function. </p> <p>This
+empty secure directory is created in <filepath>C:\private\E80000C9</filepath>,
+as 0xE80000C9 is a unique identifier for the program (as specified by the
+third UID in its project file). </p></section>
+<section> <p><b>Write and read a file in the private directory </b> </p> <p>The
+example writes and reads a file in the secure directory using the <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> and
+other file stream functions. </p> <p><b> Write and read a file in the private
+directory of another program </b> </p> <p>The example attempts to write and
+read a file in the secure directory of another program. </p> <p>The <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function
+is expected to return <codeph>NULL</codeph>, indicating that access is not
+possible, as the program has insufficient platform security capabilities. </p><p><b> Write
+and read a file in the sys/bin directory</b> </p> <p>The example attempts
+to write and read a file in the system's <filepath>sys/bin</filepath> directory,
+where program binaries are stored. </p> <p>Again, the <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function
+is expected to return <codeph>NULL</codeph>, indicating that access is not
+possible, as the program has insufficient platform security capabilities. </p> </section>
+<section><title>Releated APIs</title><p><xref href="GUID-5EA72F64-E826-3B15-9468-902BD57F6AA7.dita"><apiname>mkdir()</apiname></xref></p><p><xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref></p></section>
+<section><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian
+platform build process</xref> describes how to build this example application. </p> <p>The
+example builds an executable called <filepath>fileaccessexample.exe</filepath> in
+the standard locations. </p> <p>To run the example, start <filepath>fileaccessexample.exe</filepath> from
+the file system or from your IDE. After launching the executable, depending
+on the emulator you are using, you may need to navigate away from the application
+launcher or shell screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33180489-18DE-5705-A2DF-E44148C3A820.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-33180489-18DE-5705-A2DF-E44148C3A820"><title>Text Operations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A graphics context provides two text drawing primitives. </p> <ul><li id="GUID-BB7E452C-621B-5D58-8D7B-64CD3F5C7B22"><p>Draw text from a co-ordinate point </p> <p>This draws the text from the co-ordinate point toward the right, justified according to the graphics context settings. The <i>x</i> co-ordinate aligns with the left side of the first character; the <i>y</i> co-ordinate with the baseline of the string. </p> </li> <li id="GUID-2C1B9465-7E1D-52E7-A9B4-0E8FD8E9AB7D"><p>Draw text within a box </p> <p>This draws text within a box, justified and aligned according to the graphics context settings and parameters to the function call, and clipped to the box. Any other area within the box is painted with the brush color. </p> </li> </ul> <p>The text is drawn in the pen color and drawing mode. Pen style and pen width are ignored. </p> </conbody><related-links><link href="GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita"><linktext>How to Draw Text</linktext> </link> <link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-33210C48-3198-51BC-9970-8B29F711A8E2"><title>Setting service record attributes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Service records are made up of attributes that collectively describe the service. </p> <section><title>How to set an attribute in a service record</title> <p>Attributes in a service record are set or altered by calling <xref href="GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC.dita#GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC/GUID-43012089-A8EF-3632-BB01-DEF0B4CA7A97"><apiname>RSdpDatabase::UpdateAttributeL()</apiname></xref>. </p> <p><b>Example </b> </p> <p>The following example adds an attribute with ID 0x0102, the attribute that specifies the service provider name (0x0002 for the <i>ProviderName</i> attribute plus the language base offset, which for the primary language is 0x0100), in the service record identified by <codeph>recordHandle</codeph>: </p> <codeblock id="GUID-75061CD8-14C6-5226-8425-3D617DC86C26" xml:space="preserve">// Assumes sdpSubSession is an open subsession to the database,
+// and recordHandle is the service record
+
+_LIT8(KProvName,"Symbian Ltd.");
+CSdpAttrValueString* attrVal = CSdpAttrValueString::NewStringL(KProvName);
+CleanupStack::PushL(attrVal);
+sdpSubSession.UpdateAttributeL(recordHandle, 0x0102, *attrVal);
+CleanupStack::PopAndDestroy();</codeblock> <p><b>Note </b> </p> <p> <codeph>UpdateAttributeL()</codeph> places no constraints on the contents of service records, and allows attributes of any value or content. You should ensure that the correct attribute IDs are used. </p> </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Database tutorials are shown below: </p> <ol id="GUID-E9C58B56-4745-5D93-BF72-3231B713D3BD"><li id="GUID-E9C458D4-911C-5A67-9322-9F65AA2CF02C"><p><xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">Connecting to the service discovery database</xref>  </p> </li> <li id="GUID-AC597924-FE76-57F9-A0AD-A00A7BA32FB2"><p><xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">Handling SDP attributes</xref>  </p> </li> <li id="GUID-9CBDA1B1-CAFD-522E-9E4D-2ABDCCDF39DD"><p><xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">Registering Services</xref>  </p> </li> <li id="GUID-CCC59890-8E3F-5CAD-92A1-486BD5A0E099"><p> <b>Setting service record attributes</b> - This document </p> </li> <li id="GUID-A8796FDF-8F9E-57E3-9CBC-4A26E3512955"><p><xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP Service records and attributes</xref>  </p> </li> </ol> <p>Also refer to the <xref href="GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita">Bluetooth Service Discovery Database overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3321A4E7-8652-511F-8A17-E816F5731E94.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3321A4E7-8652-511F-8A17-E816F5731E94" xml:lang="en"><title>Lexical
+Analysis Example Code</title><shortdesc>The example shows the use of the lexical analyser, <apiname>TLex</apiname>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-35B2A66E-D6EA-544D-8FA6-AB8D85ABD2A7"><title>Lexer: lexical
+analyser</title> <p><b>Download</b> </p> <p>Click on the following link to
+download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-5b790724-c038-4ea5-85d8-0bc69922f417.zip" scope="external">Lexer.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-5b790724-c038-4ea5-85d8-0bc69922f417.html" scope="peer">browse </xref>to view the example code.</p> <p> </p><p><b>Class
+Summary</b></p><p><xref href="GUID-C94AB4F0-AE42-3957-A037-77CB145DDBF8.dita"><apiname>TLex</apiname></xref> - Provides access to general string-parsing
+functions suitable for numeric format .</p> <p><b>Security issues</b> </p> <p>The
+example requires no specific capabilities in order to run - and does not demonstrate
+any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09"><title>Store Overview</title><shortdesc>Provides structured data storage, using networks of streams. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>It is often necessary to persist a data structure such as an object by writing it to memory as a sequence of bytes called a stream. A complex object is persisted as multiple streams collectively known as a store. The Store component provides access to stores in Symbian OS. </p> </section> <section><title>Required background</title> <p>The Store component requires no specific background apart from C++ and Symbian OS. </p> </section> <section><title>Key concepts and terms</title> <p>The API has the following key concepts. </p> <dl><dlentry><dt>stream store</dt> <dd><p>a store consisting of streams, implemented by <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>persistent store</dt> <dd><p>a store which persists beyond the lifetime of the application which creates it, implemented by <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>embedded store</dt> <dd><p>a store which can itself be stored as a stream in another store, implemented by <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>memory store</dt> <dd><p>a store which resides in memory and exists only for the life of the store object, implemented by <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>  </p> </dd> </dlentry> <dlentry><dt>dictionary store base and streams</dt> <dd><p>a sequence of streams accessed by a UID, implemented by <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>  </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>A stream is a representation of a data structure (such as an object) as a sequence of bytes. Structures as complex as most applications require multiple streams to store their state. This is termed a store. Stream types that work with stores are provided by the <xref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita">Store Streams</xref> API. </p> <p>The Stores API defines both base classes that define store abstractions without specifying the storage medium, and some concrete store types. </p> <p>The abstract classes are used as the base classes of separate APIs which use particular storage media. In particular the <xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores</xref> API defines further concrete stores which use file storage. Its base class, <xref href="GUID-9CBA8AB1-5BFC-3719-82AF-22A9BD93C306.dita"><apiname>CFileStore</apiname></xref> extends <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref> and has its own subclasses such as <xref href="GUID-8B713854-7858-3E02-8A1C-B3E6C1C9EA85.dita"><apiname>CDirectFileStore</apiname></xref>. Concrete store types do not have to provide all the stream manipulation functionality defined by the base class interfaces: for example, direct file stores do not support individual deletion of streams within a store. </p> <p>Dictionary stores are accessed by a UID whereas stream stores are accessed by a stream ID. Persistent stores persist beyond the lifetime of the application that created them: they have a root stream from which the other streams in the store can be found. Embedded stores can be stored as streams in other stores: once written they cannot be modified. </p> <p>Stores are integrated with the application architecture as defined in the Uikon Core API. That expects file-based and embeddable applications to handle their data storage through stores. </p> <p>Stores are also the basis of the relational database provided by <xref href="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita">DBMS</xref>. </p> <fig id="GUID-39DD7576-D335-5CD2-92A6-E0B81EF2160A"><image href="GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e333788_href.png" placement="inline"/></fig> </section> <section><title>APIs</title> <table id="GUID-6D27BADC-7CA7-5E39-8308-29CAA1858CAB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>  </p> </entry> <entry><p>Provides the core abstract framework for stores allowing streams to be created and manipulated </p> </entry> </row> <row><entry><p> <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>  </p> </entry> <entry><p>Persistent store abstract base class </p> </entry> </row> <row><entry><p> <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>  </p> </entry> <entry><p>Encapsulates an embedded store </p> </entry> </row> <row><entry><p> <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>  </p> </entry> <entry><p>In-memory non-persistent store </p> </entry> </row> <row><entry><p> <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>  </p> </entry> <entry><p>Dictionary store interface </p> </entry> </row> <row><entry><p> <xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref>  </p> </entry> <entry><p>Supports the opening and manipulation of an existing stream in a store </p> </entry> </row> <row><entry><p> <xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref>  </p> </entry> <entry><p>Supports the writing of a stream to a store </p> </entry> </row> <row><entry><p> <xref href="GUID-418E7956-BE91-39A2-A26D-F1CA88B458AA.dita"><apiname>RFileBuf</apiname></xref>  </p> </entry> <entry><p>A stream buffer hosted by a file </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>A typical use of stores is to write files to memory without using the file server. This is a good thing to do when an application uses embedded documents. </p> </section> </conbody><related-links><link href="GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita"><linktext>Persistent Storage Overview</linktext> </link> <link href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita"><linktext>File Stores Overview</linktext> </link> <link href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita"><linktext>Store Streams
+                Overview</linktext> </link> <link href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita"><linktext>Streaming Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33488ED1-32F6-5D39-B264-5CDE3FEDFD2B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-33488ED1-32F6-5D39-B264-5CDE3FEDFD2B" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-335A4B77-20C4-52B9-88AA-58540269E321.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-335A4B77-20C4-52B9-88AA-58540269E321"><title>Connecting to the Calendar Server</title><prolog><metadata><keywords/></metadata></prolog><conbody> <p>A client can connect to the Calendar server using an already existing <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession</apiname></xref>. The <codeph>CCalSession</codeph> objects can then share the same connection to the server. </p> <p>You must create a session with the Calendar Server using <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession::NewL()</apiname></xref> before accessing a calendar entry. This provides a handle to the calendar file and connects you to the Calendar Server. </p> <codeblock id="GUID-6C04BAD1-2E03-5BFB-AEAF-85570C9394D1" xml:space="preserve">// Create a session with the Calendar Server from an existing session
+CCalSession* CCalSession::NewL(CCalSession&amp; aSessionShared);</codeblock> <p>You use the same session handle to create other Calendar API objects, such as entry view, category, data exchange, iterator and observers. </p> <p>The Calendar Server object lets you perform the following functions: </p> <ul><li id="GUID-7B4FBAE5-BD22-58CA-AAFB-6C8C52FC6C08"><p>create a file using <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession::CreateCalFileL()</apiname></xref>. </p> <codeblock id="GUID-2FADACC5-87FA-54EA-8270-86F877A398BB" xml:space="preserve">_LIT(KFileName,"D:\\MyCalFile");
+session-&gt;CreateCalFileL(KFileName); //pass the descriptor which hold the filename D:\MyCalFile</codeblock> <p> <b>Note:</b> If <filepath>D:\MyCalFile</filepath> already exists, then the function leaves. </p> </li> <li id="GUID-1D65EDDA-DF1F-5BC0-914D-7473175E4183"><p>open a file using <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession::OpenL()</apiname></xref>. </p> <codeblock id="GUID-9FAAD21B-A160-5CAC-B059-32102B479236" xml:space="preserve">_LIT(KFileName,"D:\\MyCalFile");
+session-&gt;OpenL(KFileName); //pass the filename D:\MyCalFile to be opened</codeblock> <p> <b> Note:</b> The session object must be destroyed only after all the objects which were created by referencing it have been destroyed. </p> </li> <li id="GUID-088A87F3-4137-55E4-B1A4-C4B4E9F93A5B"><p>list the files in the server using <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession::ListCalFilesL()</apiname></xref>. </p> </li> <li id="GUID-64B874D2-4F0F-5BB8-8640-AA0AFF908BF1"><p>delete a file using <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession::DeleteCalFileL()</apiname></xref>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33716081-180C-5DDB-A5D2-0EC61357250D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-33716081-180C-5DDB-A5D2-0EC61357250D" xml:lang="en"><title>How
+to use the post-linker (elf2e32)</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The post-linker is a Symbian-specific build tool. Its principal function
+is to create executables (DLLs and EXEs) in the particular format required
+by Symbian platform, known as the <i>E32Image</i> format. Commercial compiler
+and linkers, such as ARM's RVCT and GNU GCC, cannot directly generate that
+format. Such compilers do however support a standard output format called
+the Executable and Linking Format (ELF) (defined at <xref href="http://www.caldera.com/developers/gabi/" scope="external">http://www.caldera.com/developers/gabi/</xref>). A tool is
+therefore needed to convert from the ELF format into the E32Image format,
+and this is the key role of the post-linker. The tool also contains the functionality
+to maintain and create the DEF files used for freezing the exports of libraries. </p>
+<p>In ordinary use, the post-linker is not used directly by users. It is called
+from the makefiles generated by <filepath>abld</filepath> on the command line,
+or from the build commands of an IDE. </p>
+<p>The tool can also be used to <xref href="GUID-6A5D3E05-B1F4-4DF6-9384-3CC471DCC267.dita">output
+a description</xref> of an existing E32Image file for analysis. </p>
+<p>This section contains the following topics:</p>
+<ul>
+<li><xref href="GUID-17C80FD1-0D2D-4A65-B199-FE2405AA7B77.dita">Post Linker Overview</xref></li>
+<li><xref href="GUID-9605B59D-F9DB-4BA3-8C87-1C5205976CBB.dita">How to create executables</xref></li>
+<li><xref href="GUID-5EF18ADF-018B-47BA-B60C-269EF2C9FF48.dita">How to create a
+DSO library file from a DEF file</xref></li>
+<li><xref href="GUID-6A5D3E05-B1F4-4DF6-9384-3CC471DCC267.dita">How to dump an
+E32Image file</xref></li>
+</ul>
+</conbody><related-links>
+<link href="GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita"><linktext>elf2e32 command
+syntax</linktext></link>
+<link href="GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA.dita"><linktext>Troubleshooting
+post-linker (elf2e32) errors</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e63111_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579" xml:lang="en"><title>SMS
+Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Short Messaging Service (SMS) provides short text messaging between mobile
+phones. Messages can be written and read by phone users. This tutorial demonstrates
+the end-to-end procedure for creating and sending SMS messages. </p>
+
+<section><title>Required background</title> <p>Before you start, you must
+understand: </p> <ul>
+<li id="GUID-784C3290-1D72-5F2F-83FE-E1E85F515B71"><p><xref href="GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita">SMS
+MTM</xref>  </p> </li>
+<li id="GUID-72E82D46-00A0-5410-B05A-D8B6703B7132"><p><xref href="GUID-CADAABB4-C957-502E-BA4D-E9614C0D3878.dita">Schedule
+Send</xref>  </p> </li>
+<li id="GUID-CF3038DC-659A-5038-AC70-B6FC6BBF4E52"><p><xref href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita">Message
+Server and Store</xref>  </p> </li>
+<li id="GUID-66775375-1A93-522F-B72F-CE353A566CB5"><p><xref href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita">Message
+Type Module</xref>  </p> </li>
+</ul> </section>
+
+<section><title>Introduction</title> <p>The SMS MTM provides functionality
+for creating, storing and sending an SMS message, replying to a received SMS
+message and forwarding an existing SMS message. A reply to a received SMS
+message may include the original message text, including any EMS components.
+Configurable parameters can apply either at a global level or on an individual
+message basis. See <xref href="GUID-CBFDD753-BAE3-5C40-B947-EB8CDA11CD23.dita">SMS
+concepts</xref> for detailed information on how SMS functionality is implemented
+in the Symbian platform. </p> <p>Global settings that are applied to the SMS
+MTM are known as SMS service settings. Each SMS message entry has its own
+individual group of settings known as SMS message settings. See <xref href="GUID-24414E32-94DC-5870-847B-A797C495F756.dita">SMS
+Settings</xref> for more information. </p> <p>This tutorial explains <xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-21F18C1C-F081-5D6A-BD41-B349346AAFF4">how
+to create and send messages</xref>. It also explains <xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-CB828B5E-4517-538E-9F20-90AEC17C823A">how to handle incoming messages</xref>. </p> </section>
+<section><title>Creating
+and sending messages</title> <ol id="GUID-D5EBB762-72EE-5CFA-834D-597CC61FC76C">
+<li id="GUID-3E213996-72AA-5860-A5E0-C7F80B2AF7A2"><p><xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-AD21D94E-91FA-50D2-B32C-BE4103D97B9B">Get a client MTM object</xref>. </p> </li>
+<li id="GUID-3226C878-5EB0-5511-8CD1-31A966CF0618"><p><xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-89F63F2A-F868-553F-97AE-F5F207DA33CB">Create a message</xref>. </p> </li>
+<li id="GUID-3423C3F4-8CF2-50D7-A57B-BA089C78B171"><p><xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-53C7AD41-91B5-5143-B002-C2F8981B9855">Set the message body</xref>. </p> </li>
+<li id="GUID-77B95197-7981-5FB9-AD02-726EA90EDACC"><p><xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-766E0370-D4B6-55DE-AC30-699665324BD3">Set the message address</xref>. </p> </li>
+<li id="GUID-FE9BA0F1-F921-50B7-921B-A0AD5E67F4DF"><p><xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-0BD23194-9ED1-5F9B-94B5-EC54678B738B">Set the additional message fields, if required</xref>. </p> </li>
+<li id="GUID-183E7CE5-2015-52EC-8D5F-F33E81A51F35"><p><xref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita#GUID-33B590F4-CAE8-58B2-92A9-53123BD42579/GUID-E698D0A6-D312-5759-A2EE-029871BA2076">Send the message</xref>. </p> </li>
+</ol><p><b>Get a client MTM object</b></p><p>The Messaging Framework is based
+around a server program to which a connection (a session) must be made before
+any operation on messaging can be done. The session class is called <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref>,
+and message client applications typically create an instance of this class
+upon start-up.</p><codeblock xml:space="preserve">// Create message server sessioniMsvSession = CMsvSession::OpenSyncL(*this);</codeblock><p>The <xref href="GUID-A7121632-37BA-3CDC-AC80-8C6973F59108.dita"><apiname>OpenSyncL()</apiname></xref> method takes a parameter of type <xref href="GUID-BDE23754-4536-3AF7-8549-3B953F51167C.dita"><apiname>MMsvSessionObserver</apiname></xref>.
+For this code to work, the containing class must implement this observer interface.
+It enables the server to call the client to inform it of significant events,
+such as new MTMs being registered. </p> </section>
+<section id="GUID-CB828B5E-4517-538E-9F20-90AEC17C823A"><title>Handling incoming
+messages </title> <p>Messaging receives SMS messages through a number of watcher
+components. When a message is received its contents are read and a new entry
+for the message is created in the Message Store (in the global inbox folder).
+Typically these messages are then be read by the user through an SMS application,
+but other messaging clients can receive notifications when a new message is
+created in the store and can process the message if appropriate. </p> <p>To
+receive such notifications, a class must implement the <xref href="GUID-BDE23754-4536-3AF7-8549-3B953F51167C.dita"><apiname>MMsvSessionObserver</apiname></xref> session
+observer interface. The interface has just one function: </p> <codeblock id="GUID-0F785EE7-2B7D-5864-A5E1-212B0EB0E9A0" xml:space="preserve">void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)=0;</codeblock> <p>When a new message is created in the store, the framework calls this
+function with <codeph>aEvent</codeph> set to <codeph>EMsvEntriesCreated</codeph>,
+and <codeph>aArg1</codeph> is set to a <codeph>CMsvEntrySelection*</codeph> that
+specifies the IDs of the entries that have been created. The following code
+snippet checks the event type and gets the entry ID selection: </p> <codeblock id="GUID-9FAAFFD2-AFA2-58B4-9FE4-B0126F1B8BCC" xml:space="preserve">void CClientApp::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* , TAny* )
+    {
+    CMsvEntrySelection* entries = NULL;
+
+    switch (aEvent)
+        {
+        case EMsvEntriesCreated:
+            entries = static_cast&lt;CMsvEntrySelection*&gt;(aArg1);
+            break;
+        default:
+            break;
+        }</codeblock> <p>The observer receives notifications for all types
+of entry, so it is necessary to read the message properties to check that
+the entry is appropriate to process. </p> <p>The following code snippet does
+the first stage of checking: </p> <ol id="GUID-75586A5B-9361-56CA-A18E-879FA38F6D3E">
+<li id="GUID-B216D3CF-B462-547A-ABD6-A94696D8545D"><p>Gets the index entry
+for the message. Getting an index entry is quick compared to getting the entire
+message. Therefore, it is recommended that you perform the required checks
+on this first. </p> </li>
+<li id="GUID-2B4F2DBA-E443-5F9A-9BD3-23F184E0E475"><p>Tests if the entry is
+an SMS message, by checking the index entry's <codeph>iMtm</codeph> and <codeph>iType</codeph> fields </p> </li>
+<li id="GUID-3B839895-2DE9-5FD2-A566-23F857800F89"><p>Tests if it is an incoming
+message, by checking that the entry is in the Inbox. </p> </li>
+</ol> <codeblock id="GUID-DF3AB59E-2391-5A44-9BB9-0E9718562511" xml:space="preserve">if (entries)
+    {
+    TInt count = entries-&gt;Count();
+
+    // check each entry to see if we want to process it
+    while (count--)
+        {
+        // get the index entry
+        TMsvId serviceId;
+        TMsvEntry entry;
+        iMtm-&gt;Session().GetEntry((*entries)[count], serviceId, entry);
+        // if the entry is an SMS message
+        if (entry.iMtm == KUidMsgTypeSMS &amp;&amp; entry.iType == KUidMsvMessageEntry
+            // and if it's an incoming message (as its in the inbox)
+            &amp;&amp; entry.Parent() == KMsvGlobalInBoxIndexEntryId)</codeblock> <p>An
+application can now perform further checks, for example, for particular message
+content. </p> <codeblock id="GUID-9A15B728-19AD-5869-9D9A-55B0B9E8D4BB" xml:space="preserve">//    sets the client MTM's context to the message 
+             
+iMtm-&gt;SwitchCurrentEntryL((*entries)[count]);
+iMtm-&gt;LoadMessageL();
+</codeblock> <p>If you determine that your application must process the message,
+you can prevent the user from seeing the message in the Inbox of the standard
+messaging application. To do this, you can set the message entry's visible
+flag to false using <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita#GUID-5A23B804-2C06-3407-9D48-1BFB212D699F/GUID-05E571D2-785A-37AE-9162-DDED472F7B7B"><apiname>TMsvEntry::SetVisible(EFalse)</apiname></xref>. You
+must delete the message once its processing is complete. </p> </section>
+<section><title>SMS example</title> <p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">smsexample:
+SMS example</xref>  </p> </section>
+</conbody><related-links>
+<link href="GUID-9AF990D7-C490-5D60-9816-E84B5165A5B2.dita"><linktext>BIO Watcher
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33BFC72A-2246-5366-81D7-72AB5B730F8F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-33BFC72A-2246-5366-81D7-72AB5B730F8F" xml:lang="en"><title>File Converter Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>File Converter Framework specifies a plug-in interface for file format converters. It also provides the APIs for calling the plug-ins implementing this interface.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010" xml:lang="en"><title>SMS MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The client applications can use the APIs that are provided by SMS MTM to send and receive SMS messages (text). This section provides concepts and functions related to SMS MTM. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25"><title>Libxml2 Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the libxml2 component which is a wrapper for the standard libxml2 C library. </p> <section><title>Purpose</title> <p>The libxml2 component provides XML processing, parsing and validation APIs. You can call its C functions directly or use the C++ wrapper. </p> </section> <section><title>Required background</title> <p>The libxml2 component is based on the standard <xref scope="external" href="http://xmlsoft.org/">libxml2</xref> library. </p> </section> <section><title>Architecture</title> <p>The libxml2 component is the core of the XML collection. Two other components rely on it: the <xref href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita">XML Framework</xref> and the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML DOM Engine</xref>. </p> <fig id="GUID-4EE5466D-6370-5ED5-9BAA-838F5413AAE5"><title>
+             Package diagram for the libxml2 component 
+          </title> <image href="GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e402615_href.png" placement="inline"/></fig> <p>The libxml2 sub-component provides direct access to the C API of the standard libxml2 library. </p> <p>The Utilities sub-component provides object-oriented access to the C functions: it also implements the resource management and error handling capabilities of Symbian Platform. </p> <p>If your Symbian Platform build does not include the libxml2 component, the XML DOM Engine and the libxml2 SAX parser plug-in are automatically excluded. </p> </section> <section><title>APIs</title> <p>The <xref href="GUID-321A32BB-75B1-38B4-A8F5-BF69D1F041FD.dita"><apiname>XMLEngPushL()</apiname></xref> function opens and initializes the libxml2 library parser. The <xref href="GUID-64E53D09-2F54-3188-A1D4-F541BDC40240.dita"><apiname>XMLEngPopAndClose()</apiname></xref> function closes the library parser and frees its resources. You must call the <xref href="GUID-321A32BB-75B1-38B4-A8F5-BF69D1F041FD.dita"><apiname>XMLEngPushL()</apiname></xref> function before any parsing and serialisation operations, and call the <xref href="GUID-64E53D09-2F54-3188-A1D4-F541BDC40240.dita"><apiname>XMLEngPopAndClose()</apiname></xref> function when these operations are completed. </p> <p>The following table lists the most relevant wrapper classes of the libxml2 library. High-level classes are in the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML DOM Engine</xref> component. </p> <table id="GUID-9A8FA78F-CF35-5897-AD8E-B35B7CFF63D9"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-1DA29392-2F71-36CA-865F-B6616E1506F8.dita"><apiname>xmlGlobalState</apiname></xref>  </p> </entry> <entry><p>Global data providing access to most of the libxml2 library: settings, function pointers, and so on. Available through TLS </p> </entry> </row> <row><entry><p> <xref href="GUID-2B22200A-55E0-3428-94FE-332224003D68.dita"><apiname>TXmlEngString</apiname></xref>  </p> </entry> <entry><p>General-purpose string: pointer-sized object containing a zero-terminated UTF-8 string. </p> </entry> </row> <row><entry><p> <xref href="GUID-E0D0625F-C100-3B83-A385-D3702D5AD434.dita"><apiname>TXmlEngConstString</apiname></xref>  </p> </entry> <entry><p>Read-only version of <codeph>TXmlEngString</codeph>. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following table lists the most relevant C structures of the libxml2 library. </p> <table id="GUID-3AE5C214-E832-5331-9243-534265A5DF9F"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-5257133A-35CC-3D8D-B56C-E865B45A95D2.dita"><apiname>_xmlDoc</apiname></xref>  </p> </entry> <entry><p>Document. Provides access to the tree of nodes. </p> </entry> </row> <row><entry><p> <xref href="GUID-870927E4-4D27-3A49-9672-8C336D8817C3.dita"><apiname>_xmlNode</apiname></xref>  </p> </entry> <entry><p>Node. Provides access to its children and chain of attributes. </p> </entry> </row> <row><entry><p> <xref href="GUID-204C12B5-8D50-3BBB-8CFC-20036F3AB787.dita"><apiname>_xmlAttribute</apiname></xref>  </p> </entry> <entry><p>Attribute. </p> </entry> </row> <row><entry><p> <xref href="GUID-354C802A-33D5-3E3B-9FAE-C0CD8CE6329C.dita"><apiname>_xmlElement</apiname></xref>  </p> </entry> <entry><p>Element. </p> </entry> </row> <row><entry><p> <xref href="GUID-3A2A7AE7-C1FF-3534-9319-400D3B57EC85.dita#GUID-3A2A7AE7-C1FF-3534-9319-400D3B57EC85/GUID-59610388-E6CA-3A12-8403-63D12A2D741B"><apiname>xmlAttributeType::_xmlElementContent</apiname></xref>  </p> </entry> <entry><p>Container for the contents of an element. </p> </entry> </row> <row><entry><p> <xref href="GUID-5CF7019B-3D9B-369E-B81C-72D2D2DD1375.dita"><apiname>_xmlSchema</apiname></xref> and <xref href="GUID-2AA3571C-0A78-3C42-8FA2-219E642C2218.dita"><apiname>_xmlDtd</apiname></xref>  </p> </entry> <entry><p>Validation trees. These structures have no C++ wrappers. </p> </entry> </row> <row><entry><p> <xref href="GUID-50CFFAE0-5B6D-342D-B372-642055EF7367.dita"><apiname>_xmlXPathParserContext</apiname></xref>  </p> </entry> <entry><p>XPath evaluation context. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>When porting existing software, use the C functions of the standard libxml2 library and refer to the <xref scope="external" href="http://xmlsoft.org/html/index.html">libxml2 Reference Manual</xref> for more information. </p> <p>To take advantage of the standard types and exception handling provided by Symbian Platform, use the C++ APIs. </p> </section> </conbody><related-links><link href="GUID-77ECD89F-84BB-55F1-9876-382E043F0C0D.dita"><linktext>XML DOM Engine error handling</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-33FEE8F8-CD21-52EA-8EE2-502B12B3C463.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-33FEE8F8-CD21-52EA-8EE2-502B12B3C463" xml:lang="en"><title>Multimedia
+Hardware Adaptation Interfaces Collection</title><shortdesc>The Multimedia Hardware Adaptation Interfaces (HAI) collection
+is an interface to control video components. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-CC96F41D-5AC9-5D11-BD4D-073548EA5CC8.dita">Multimedia Hardware
+Adaptation Interfaces Overview</xref></p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3405FD7F-6AE8-430A-914D-72DCC2D7829D_d0e61646_href.png has changed
Binary file Symbian3/SDK/Source/GUID-341CE215-056C-45B6-ABE2-C75442605147_d0e55750_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-34614E31-45F1-5BD8-963D-9526AAD31734" xml:lang="en"><title>resourcemanager:
+Power Resource Manager Framework example</title><shortdesc>This example demonstrates the Power Resource Manager user side
+APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The example shows how to use the <xref href="GUID-6E1DE1E4-1B09-541C-8708-9126E69B42CE.dita">Power Resource Manager user
+side APIs</xref> provided by the <xref href="GUID-FD3DEFC1-DA39-3A1A-8E00-A46B34B78899.dita"><apiname>RBusDevResManUs</apiname></xref> class. </p> The
+use cases demonstrated are:<ul>
+<li><p>How to get information about power resources.</p></li>
+<li><p>How to get information about other clients registered with the Power
+Resource Manager. </p></li>
+<li><p> How to change the state of a resource.</p></li>
+<li><p>How to get notification when a resource changes state.</p></li>
+</ul></section>
+<section><title>Class summary</title><ol>
+<li id="GUID-BF6BF1A4-061C-4643-95D8-C89388675B91"><p><xref href="GUID-FD3DEFC1-DA39-3A1A-8E00-A46B34B78899.dita"><apiname>RBusDevResManUs</apiname></xref></p></li>
+<li id="GUID-4DD7C3AC-048E-446D-8D52-EE6CFCEB8227"><p><xref href="GUID-A1DDD3E3-C009-3C02-895B-0B2D0EE67A9D.dita"><apiname>TResourceInfo</apiname></xref></p></li>
+<li id="GUID-D1CD4D8A-B58E-46DC-AB17-E19EEC0C7714"><p><xref href="GUID-3BC432D9-6C37-35C0-BE85-DA21E6E520C7.dita"><apiname>TClientInfo</apiname></xref></p></li>
+</ol></section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bca7fbc0-b2fc-48da-adf3-3f0961ac9f88.zip" scope="external">resourcemanager.zip</xref>.</p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bca7fbc0-b2fc-48da-adf3-3f0961ac9f88.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section><title>Design and implementation</title> <p>This example builds a
+console application called <filepath>resourcemanager.exe</filepath>. It requests
+user input, and prints information to the console. </p> <p>The following menu
+options are presented to the user: </p> <ul>
+<li id="GUID-D5D0980D-140F-5142-B002-4986476AB082"><p>Get Power Resource information. </p> </li>
+<li id="GUID-90DE75D2-2F4C-5FEC-BFC0-89BC65A68EA1"><p>Change the state of
+a resource. </p> </li>
+<li id="GUID-AA262888-404A-58B8-85BA-EC10E523F8DD"><p>Notify a change of resource
+state. </p> </li>
+</ul> <p><b>Get Power Resource information</b> </p> <p>This option gets and
+displays information about the clients of the Power Resource Manager framework
+and about the available resources. </p> <p>The following sub-menu options
+are presented: </p> <ul>
+<li id="GUID-0C71EA91-4622-568F-B909-F48E453E3261"><p>1. Get the number of
+available resources. </p> </li>
+<li id="GUID-83B6CD7A-6830-58EE-9AC1-DD59E1320FAA"><p>2. Get information about
+a particular resource. </p> </li>
+<li id="GUID-85B710BA-7EA7-5A6A-8389-34115D094044"><p>3. Get information about
+all the available resources. </p> </li>
+<li id="GUID-D92401B4-0F81-5FF4-A413-1AB3DE0E4EAF"><p>4. Get the state of
+a particular resource. </p> </li>
+<li id="GUID-B7E8C908-5AF7-5C3A-9CD9-4E812BE446A1"><p>5. Get the number of
+clients using a particular resource. </p> </li>
+<li id="GUID-90A8D835-F4D4-5B4E-831A-F4BB6B8D36C7"><p>6. Get the number of
+resources used by a particular client. </p> </li>
+<li id="GUID-CF511B2E-A7A4-5435-8878-8F9332EBEF8C"><p>7. Get information about
+all the resources in use by a particular client. </p> </li>
+<li id="GUID-4E7F9E93-1FFF-56DD-9970-87EAF45CDB7A"><p>8. Get information on
+all clients using a particular resource. </p> </li>
+<li id="GUID-85D80BC5-99E1-5AA9-AE0C-573CAD798B6D"><p>9. Get the names of
+all clients. </p> </li>
+</ul> <p><b>Change the state of a resource</b> </p> <p>This option allows
+the user to change the state of a resource. </p> <p><b>Notify any change of
+resource state</b> </p> <p>This option changes the state of a resource and
+notifies the user about the change. </p> </section>
+<section><title>Building and configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-1724170B-EEB9-5899-AB43-540035CE23F4"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-23AF0285-6E6B-55F4-BF08-49C6E41C1B7D"><p>For the emulator, the
+example builds an executable called <filepath>resourcemanager.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section><title>Running the example</title> <p>To run the example, launch
+the executable <filepath>resourcemanager.exe</filepath>, then choose from
+the menu options. Press <userinput>Esc</userinput> to quit. </p> <p>Note:
+this example requires an LDD, a PDD and a PSL (platform specific layer). If
+these are not provided on the platform you are using, the example will not
+run. </p> </section>
+</conbody><related-links>
+<link href="GUID-6E1DE1E4-1B09-541C-8708-9126E69B42CE.dita"><linktext>Power Resource
+Manager Architecture Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB" xml:lang="en"><title>pubsub:
+Using the Publish and Subscribe IPC Mechanism</title><shortdesc>This example demonstrates the Publish and Subscribe IPC mechanisms
+using the <apiname>RProperty</apiname> class. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-909438A0-5FCA-4FA3-96EF-2666A3C07227"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-b24148a4-d20f-4af6-a0d2-d404f1a5698e.zip" scope="external">pubsub.zip</xref>.</p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-b24148a4-d20f-4af6-a0d2-d404f1a5698e.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-20D6C064-50E0-52EE-8287-1D657C27FF75"><title>Description</title> <p>This
+example demonstrates three types of usage pattern for Publish and Subscribe: </p> <ul>
+<li id="GUID-12170122-3E04-5098-99C3-0C0C6B8C8914"><p>Standard State Publishing </p> <ul>
+<li id="GUID-DA65B928-6F46-5238-AED8-8CE062098621"><p> <b>Publisher:</b> The
+publisher defines a byte-array property and pre-allocates memory to it. It
+interactively updates and re-publishes the value of the property. </p> </li>
+<li id="GUID-0519A68F-E898-5FD7-95C1-A6AA79C5CAE1"><p> <b>Subscriber:</b> The
+subscriber gets the value of the property defined by the publisher by subscribing
+to it. It displays an error and stops running if it fails to get the value
+of the property. </p> </li>
+</ul> </li>
+<li id="GUID-FA0336A7-3402-58BF-A987-BC3273FFB687"><p>Pure Event Distribution </p> <ul>
+<li id="GUID-03D5D3D0-23F5-5E75-840E-70DC8BB74388"><p> <b>Publisher:</b> The
+publisher defines an integer property and publishes a random integer value
+periodically. This value has no significance to the subscriber. </p> </li>
+<li id="GUID-4A3987D9-B916-584A-81C9-DC8079AA1270"><p> <b>Subscriber:</b> The
+subscriber gets a notification when the publisher publishes a value. It exits
+when the property is deleted by the publisher. </p> </li>
+</ul> </li>
+<li id="GUID-FFBD46FD-D0FB-5C9A-98D8-ABA7B8C6E398"><p>Speculative Publishing </p> <ul>
+<li id="GUID-073BA0B9-1682-5642-8929-4B45738F28BD"><p> <b>Publisher:</b> The
+publisher does not define the property. It ignores the <codeph>KErrNotFound</codeph> error
+when it publishes the value of the property. </p> </li>
+<li id="GUID-78B22435-963F-5E5E-9A2B-AC582DD520D4"><p> <b>Subscriber:</b> The
+subscriber defines and subscribes to the property. It ignores the <codeph>KErrAlreadyExists</codeph> error. </p> </li>
+</ul> </li>
+</ul> </section>
+<section id="GUID-63F559E8-36AB-41CD-9A2E-57080EA29601"><title>Class summary</title><ul>
+<li><p><xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> - User side interface to Publish &amp;
+Subscribe.</p></li>
+<li><p><xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> - The core class of the active object abstraction.</p></li>
+</ul></section>
+<section id="GUID-43D665F1-BB55-5D5D-808E-3CBE18D2F6DA"><title>Build</title> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian OS build process</xref> describes
+how to build this example. </p> <p>This example builds the following binaries
+in the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath>)
+for Carbide.c++: </p> <ul>
+<li id="GUID-F06CD099-75C7-5070-89E9-015AAC1F0D9A"><p> <filepath>publishstd.exe</filepath>:
+The publisher process for the Standard State pattern. </p> </li>
+<li id="GUID-772A8A83-743C-5EE5-8D78-F1E8B60B070F"><p> <filepath>subscribestd.exe</filepath>:
+The subscriber process for the Standard State pattern. </p> </li>
+<li id="GUID-19AD84BC-4618-518B-8F46-3DA1B1279B20"><p> <filepath>publishpe.exe</filepath>:
+The publisher process for the Pure Event Distribution pattern. </p> </li>
+<li id="GUID-BDCCB376-3EE5-5F5B-A53D-43F52418E6AA"><p> <filepath>subscribepe.exe</filepath>:
+The subscriber process for the Pure Event Distribution pattern. </p> </li>
+<li id="GUID-9731BBF0-0C21-5739-A9C6-4894E78A6B41"><p> <filepath>publishspec.exe</filepath>:
+The publisher process for the Speculative Publishing pattern. </p> </li>
+<li id="GUID-0897C9AB-A30D-57A7-817C-80750877350C"><p> <filepath>subscribespec.exe</filepath>:
+The subscriber process for the Speculative Publishing pattern. </p> </li>
+</ul> </section>
+<section id="GUID-D8D0CB53-A319-55EA-8650-6F9A74DBDD6C"><title>Running the
+example</title> <p>To run the example, perform the following steps on each
+usage pattern: </p> <ol id="GUID-5BFB2C37-2036-542C-9CD4-672D9D18F25C">
+<li id="GUID-80B81388-C636-50A0-BCCC-8F6F609E410E"><p>Open two eshells. </p> </li>
+<li id="GUID-A1FF28F1-696E-593C-9FFA-54F5C96F32F2"><p>Run the publisher executable
+file in one eshell. </p> </li>
+<li id="GUID-E3227D02-EB36-518A-8A25-59335A27F062"><p>Run the subscriber executable
+file in another eshell. </p> </li>
+</ol> <p> <b>Note</b>: Switch between eshells by pressing <codeph>CTRL+ALT+SHIFT+T</codeph>. </p> </section>
+<section id="GUID-935115E3-FF46-5EC1-8F36-A6AE35356AD4"><title>See also</title> <p>For
+more information, see <xref href="GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita">Publish
+and Subscribe</xref> in <i>Using User Library (E32)</i>. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e116900_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-348E8B54-88D9-5D66-AD11-09131EC387F9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-348E8B54-88D9-5D66-AD11-09131EC387F9"><title>Object Orientation Basics</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform C++ uses the standard object-orientated idioms of encapsulation, inheritance, polymorphism and relationships. This page provides a brief summary of these idioms. </p> <section><title>Encapsulation</title> <p>Encapsulation is the art of exposing the aspects of a class that a user can see, but hiding the parts that should not be seen. C++ provides the <codeph>public</codeph> and <codeph>private</codeph> qualifiers to express this: </p> <codeblock id="GUID-078A33E1-511D-53AF-A3EA-E92AF6649153" xml:space="preserve">class TS
+    {
+public:
+    S(T1 aArg1, T2 aArg2);
+    void Use(T3 aArg1,    T4 aArg2);
+    ~S();
+private:
+    TInt iInt;
+    TText8 iText;
+    TReal iReal;
+    };</codeblock> <p>Often, functions are public, while data is private. This allows a choice of representations for a class. In practical OO programming, classes often have many private functions. For classes whose representation is a fairly basic property and whose functions would provide direct read/write access to member variables, it is quite acceptable to make data public. </p> </section> <section><title>Inheritance</title> <p>Inheritance is used to express an is-a relationship: for instance, “a button is-a bordered control”. This allows taxonomies of objects to be built up. In C++, inheritance is represented by derivation. </p> <codeblock id="GUID-D8E3EFDD-AF22-5FB1-87EA-4A61BE64A667" xml:space="preserve">class CEikButtonBase : public CEikBorderedControl
+    {
+    // etc
+    };</codeblock> <p>Encapsulation is enhanced by the <codeph>protected</codeph> qualifier, which means effectively <codeph>private</codeph> for non-derived classes, but <codeph>public</codeph> for derived classes. </p> <p>Inheritance is often over-used by designers of object-oriented systems. Inheritance should not be used unless it is natural: for instance, no-one would dispute that a button is a bordered control. But in Smalltalk, a process is an ordered collection. Of what?! In cases like this, it is better for a class to <i>use</i> another class, rather than <i>derive</i> from it. </p> </section> <section><title>Polymorphism</title> <p>Polymorphism builds on inheritance to allow an <keyword>abstract</keyword> base class to be defined, from which <keyword>concrete</keyword> derived classes may inherit. But, these concrete objects may be used without knowing anything about them, other than that they are derived from the abstract base class. </p> <codeblock id="GUID-87BA8309-C6E7-5389-8A87-2BA8536F1B74" xml:space="preserve">Foo(CCoeControl* aControl)
+    {
+    aControl-&gt;Draw();
+    }</codeblock> <p>In the code above, for instance, the function knows that a control has a <codeph>Draw()</codeph> function, but it knows nothing about the type of control or how it is drawn. </p> </section> <section><title>Relationships</title> <p>In object oriented systems, the relationships between objects matter very much. Some examples from the Symbian platform include: </p> <ul><li id="GUID-68CCE95A-17AE-5809-B983-B8DE739BDD81"><p>the control environment (<codeph>CCoeEnv</codeph>) has-a window server session (<codeph>RWsSession</codeph>). The lifetime of the window server session is identical to that of the control environment. </p> </li> <li id="GUID-2EB9F004-D6BF-56C9-99F4-652230CE2393"><p>the app UI (<codeph>CEikAppUi</codeph>) uses-a document (<codeph>CEikDocument</codeph>). The document has independent existence: the app UI may come into being for a while, and then be destroyed, but throughout the app UI’s lifetime, it uses the document. </p> </li> </ul> <p>In these relationships, cardinality is important. An app UI uses only one document, and a control environment has only one window server session. But a dialog (<codeph>CEikDialog</codeph>) has any number of lines. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-34A5AEFE-B785-58B0-9A75-5898EDFD6834.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-34A5AEFE-B785-58B0-9A75-5898EDFD6834"><title>true</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>true [ arg ... ]</userinput> </p> <p>Do nothing and return an exit code of 0. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-34B36F04-D707-5357-8073-3B9FF7B95B22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-34B36F04-D707-5357-8073-3B9FF7B95B22" xml:lang="en"><title>Using Calendar Conversion (CALCON)</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE"><title>macro</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>macro</codeph>  <varname>macro-list</varname>  </p> <p>Where, <varname>macro-list</varname> =<varname>macro_name_1</varname> <varname>macro_name_2=value_2</varname>...<varname>macro_name_n</varname>  </p> <p>Use the <codeph>macro</codeph> statement to specify <codeph>#defines</codeph> for the preprocessing of source code. You can specify multiple macros separated by a space. if required, you can also assign values to those macros. </p> <p> <b>Note</b>: It is not mandatory that all the macros listed must have a value. </p> <p>Each macro specified is passed to the complier using the option <codeph>-d</codeph> for preprocessing the C++ source code in your project. </p> <section><title>Example</title> <codeblock id="GUID-5435FAD4-7594-5CB9-B0D1-FBF4FA2A2101" xml:space="preserve">MACRO _MACRO1 _MACRO2=value2</codeblock> <p>To check whether these macros are passed to the compiler or not, use the <xref href="GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33.dita">-verbose</xref> <xref href="GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita">abld</xref> option. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-34E19A27-F61D-5190-8709-151523CB0BE1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-34E19A27-F61D-5190-8709-151523CB0BE1"><title>Reclamation and compaction, incrementally</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Both space reclamation and compaction can be done incrementally, i.e. broken down into smaller steps. This allows an application to alternate reclamation and compaction with other processing and remain responsive to other events.</p> <p>To do this, construct an object of type <codeph>RStoreReclaim</codeph> and call:</p> <ul><li id="GUID-4C8737BC-BCEA-5D06-9F31-5E823EE39C46"><p><codeph>RStoreReclaim::OpenL()</codeph> or <codeph>RStoreReclaim::OpenLC()</codeph> to prepare the <codeph>RStoreReclaim</codeph> object to perform space reclamation.</p> </li> <li id="GUID-49C343FC-1C3F-5D92-A846-FC65EBEBDFA8"><p><codeph>RStoreReclaim::CompactL()</codeph> or <codeph>RStoreReclaim::CompactLC()</codeph> to prepare the <codeph>RStoreReclaim</codeph> object to perform compaction.</p> </li> </ul> <p>Each stage of space reclamation and compaction is performed or initiated by calling the appropriate variant of <codeph>RStoreReclaim::Next()</codeph> or <codeph>RStoreReclaim::NextL()</codeph>. The class provides both synchronous and asynchronous variants of these two functions. The asynchronous versions initiate the next stage of space reclamation and compaction.</p> <p>At any time during space reclamation or compaction, the <codeph>RStoreReclaim::Available()</codeph> returns a running total of free space discovered so far.</p> <p>Compaction and normal access to the store interact in the following ways:</p> <ul><li id="GUID-CE0ADA7E-0790-55A6-B9E3-4A237DACEE1E"><p>if a compaction step is in progress, committing the store causes the compaction step to be abandoned and to complete or leave with <codeph>KErrNotReady</codeph>. All subsequent attempts to initiate a compaction step, complete or leave with <codeph>KErrNotReady</codeph>. Compaction can be restarted by first doing a reset, i.e. by calling <codeph>ResetL()</codeph>.</p> </li> <li id="GUID-86F776A3-D1C0-55DB-A365-C085BFEFA28F"><p>a compaction step which needs to physically move a stream, completes or leaves with <codeph>KErrInUse</codeph>, if any stream within the store is open. The stream must be closed before initiating another compaction step.</p> </li> </ul> <p>Once compaction is complete, the store must be committed.</p> <p>Doing an incremental space reclamation or compaction asynchronously requires the use of active objects. </p> <section><title>See also</title> <p><xref href="GUID-6EE0CB66-A759-5E0C-884D-90895F35F267.dita">Transactions</xref> </p> <p><xref href="GUID-C2608BF5-CDA7-530A-B67A-0414C7FA585D.dita">High level asynchronous service handling</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93" xml:lang="en"><title>Cellular Baseband Services Guide</title><shortdesc>Cellular Baseband Services provide a common interface to telephony services for applications and higher level platform components. The framework is independent of the underlying network services. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04.dita"><linktext>Communications Framework
+  Guide</linktext> </link> <link href="GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01.dita"><linktext>Networking Services
+  Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3527AAEE-210F-524B-A655-A65F1CE86C80.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3527AAEE-210F-524B-A655-A65F1CE86C80" xml:lang="en"><title>How
+to build a resource file</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Resource building is performed by the <filepath>epocrc</filepath> tool.
+It is a three-stage process:</p>
+<ul>
+<li id="GUID-06BFE8CC-6DB9-5FE0-97CF-9176B6832C92"><p>pre-processing</p> </li>
+<li id="GUID-78EF35B1-B93B-54C7-8991-F1DAA1FB2B39"><p>localised string merging</p> </li>
+<li id="GUID-C217A7AC-2919-5587-BB58-5744C1FDF5D8"><p>compilation to binary
+format</p> </li>
+</ul>
+<p>The sections below describe each stage in turn.</p>
+<section><title>Pre-processing</title><p>Resource files can use the familiar
+pre-processor directives. In particular, <codeph>#include</codeph> is used
+to include header files; <codeph>#define</codeph> is used to define macros
+such as numeric constants; and <codeph>#if</codeph> and related directives
+can be used to perform conditional compilation. Pre-processor arguments for
+include file paths and macro definitions can be passed to the pre-processor
+through <filepath>epocrc</filepath>.</p><p>The source file is pre-processed,
+using the <filepath>cpp</filepath> pre-processor, and an output file produced
+with an extension <filepath>.rpp</filepath>.</p></section>
+<section><title>Merging localised strings</title><p>Strings that should be
+localised should not be defined in the resource file itself, but in separate
+files with an <filepath>.rls</filepath> extension. The <filepath>.rpp</filepath> files
+are processed by <filepath>epocrc</filepath> to merge in the localisable strings.</p><p>A
+flag can also be specified to <filepath>epocrc</filepath> that causes it to
+copy the <filepath>.rpp</filepath> files into a <filepath>epoc32\localisation\</filepath> directory,
+from where they can form input into a localisation kit.</p></section>
+<section><title>Compilation to binary format</title><p>The final
+stage is to convert the intermediary <filepath>.rpp</filepath> files into
+the final compiled format. This is done by the <filepath>rcomp</filepath> tool.
+The resource compiler also produces a header file that contains a symbolic
+identifier for each resource.</p><p>The names of the output files are specified
+as parameters to <filepath>epocrc</filepath>. Note though that:</p><ul>
+<li id="GUID-1575F474-7035-55E8-A37D-1E7CF8B825BC"><p> resource files as built
+by the project build tools (<filepath>abld</filepath>) have the default extension <filepath>.rsc</filepath>.
+The additional naming conventions used when you need to supply multiple resource
+files, each for a different locale, are discussed in <xref href="GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita">How
+to localise resources</xref> </p> </li>
+<li id="GUID-8940240B-69E5-51B2-9335-67E63822D6FF"><p> by convention, the
+header file has an extension <filepath>.rsg</filepath> </p> </li>
+</ul><p>The identifiers in the header file provide symbolic names for index
+positions in the resource file, so that your source code can be independent
+of the number and order of resources within the file. For a named resource
+such as:</p><codeblock id="GUID-2FC8E745-72D6-5837-84EC-9C275445FFE5" xml:space="preserve">RESOURCE TBUF r_eik_bafl_error_offset { buf="Wrong format resource file"; }</codeblock><p>the generated header file will have a <codeph>#define</codeph> such as:</p><codeblock id="GUID-39701585-375F-529C-A059-4504B420A61E" xml:space="preserve">#define R_EIK_BAFL_ERROR_OFFSET 0xf3b045</codeblock><p>where
+the number is a resource ID which encodes the resource index, and is suitable
+for passing to the C++ function <codeph>RResourceFile::AllocReadLC()</codeph>.</p><p>In
+the course of project development, changes to the resource file may not always
+result in changes to the set of <codeph>#define</codeph> statements generated.
+If there is no change, the <filepath>rsg</filepath> file is not rebuilt, thereby
+avoiding unnecessary re-compilation and linking.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED" xml:lang="en"><title>Window
+owning and non-window owning controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A403D2F8-7ED3-4DE6-92E8-4B16CC646CA6"><title>Window-owning
+controls</title>
+<p>Window-owning controls have the same size and position as a window in
+the display. Each window has a one-to-one relationship with the control that
+covers it, and shares its behavior with that control.</p>
+<p>Examples of window-owning controls include:</p>
+<ul>
+<li><p>top-level control in <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">Traditional
+Symbian architecture</xref></p></li>
+<li><p>the subpanes in the status pane</p></li>
+<li><p>pop-up windows, when a sense of layering is required</p>
+</li>
+</ul>
+<p>The following code snippet is an example of the second phase construction
+of a window-owning control:</p>
+<codeblock id="GUID-234E4AC3-2FC8-4AD9-8B72-0FBA478E1D5A" xml:space="preserve">CMyControl::ConstructL()
+    {
+    CreateWindowL();    // This makes the control window- 
+                        // owning
+    SetRectL(ClientRect()); // This sets the control’s 
+                            // size
+    ActivateL();        // This must be called before
+                        // the control can be drawn
+    }
+</codeblock>
+<p><parmname>ClientRect()</parmname> returns the screen area available
+to the application for drawing. This typically does not include the space
+that is reserved for the status/control panes.</p>
+<p>For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/RunTimeControlHierarchy.guide.html#ApplicationFrameworkOverview%2eUIControlFrameworkGuide2%2ehierarchy" format="application/java-archive">The run-time control hierarchy</xref></p>
+</section>
+<section id="GUID-13D754E5-EBCF-4058-B3B3-05505289953B"><title>Non-window-owning
+controls</title>
+<p>Non-window-owning controls typically cover only part of a window on
+the display, and must be contained in window-owning controls. They are faster
+and require fewer resources than window-owning controls.</p>
+<p>Examples of non-window-owning controls include:</p>
+<ul>
+<li><p>command buttons</p></li>
+<li><p>edit windows</p></li>
+<li><p>labels</p></li>
+</ul>
+<p>Non-window-owning controls are assigned to window-owning controls by
+calling <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetContainerWindowL%28RBackedUpWindow%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetContainerWindowL</parmname></xref> when the
+control is constructed.</p>
+<p>For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/RunTimeControlHierarchy.guide.html#ApplicationFrameworkOverview%2eUIControlFrameworkGuide2%2ehierarchy" format="application/java-archive">The run-time control hierarchy</xref></p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-354240A8-2DDD-5181-9A36-9A054D239B62"><title>Video Subtitle CRP Support From MMF Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes about enhancing MMF Controller to Support Video Subtitle CRP. </p> <p> </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to enhance MMF Controller to support Video Subtitle CRP. </p> <p><b>Required Background</b> </p> <p> <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> and multimedia framework are extended to support the Video Subtitle CRP functionality. <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> is not extended because subtitle support requires <xref href="GUID-ADA8CECB-0E70-5B9C-8F36-0714AAF0CD13.dita">graphics surfaces</xref> support which may not be present when <xref href="GUID-164490D2-7622-3B09-9EF6-9F463C0796AC.dita"><apiname>CVideoPlayerUtiltiy</apiname></xref> is used. </p> <p><b>Introduction</b> </p> <p>In Video Player Controller <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor</apiname></xref> and <xref href="GUID-4905EA66-9185-3A48-8D00-3ADBFE3F7A9C.dita"><apiname>CMMFVideoPlaySubtitleSupportCustomCommandParser</apiname></xref> classes are registered to allow Video Client API to use Video Subtitle CRP. </p> <p>For information about the architectural relationship between Video Player Controller, Subtitle Decoder and Render; and Video Subtitle CRP see the <xref href="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita#GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09/GUID-845818F1-02CA-59FE-85F8-22623880759D">Video Subtitle CRP Overview-Architectural Relationship</xref> session. </p> </section> <section><title>Using to support Video Subtitle CRP for MMF </title> <p>The following task is covered in this tutorial: </p> <ul><li id="GUID-9B4AD645-7BC2-5B80-A1C9-CE65FC88DBAA"><p><xref href="GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita#GUID-354240A8-2DDD-5181-9A36-9A054D239B62/GUID-8E71E2E4-6FB4-5AB2-997C-F6018427C425">How to enhance MMF Controller to support Video Subtitle CRP</xref>  </p> </li> </ul> <p id="GUID-8E71E2E4-6FB4-5AB2-997C-F6018427C425"><b>Basic Procedure</b> </p> <p>The high-level steps to implement Video Subtitle CRP in MMF Controller are shown here: </p> <ul><li id="GUID-B9761E39-BC47-558E-82FB-43E89309C2F4"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-633D92A6-786D-32ED-B311-4C1975A832D1"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusGetSubtitlesAvailableL(TBool&amp;
+                  )</apiname></xref> to check if a subtitle source is available for an opened video source. </p> </li> <li id="GUID-3AC95E6E-5B51-52CB-A4A9-650E2ABF30C1"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-10C9057C-7E06-335D-9860-7199A9A935DD"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusEnableSubtitlesL()</apiname></xref> to enable subtitle support. </p> <p>The enable subtitle function involves checking if a subtitle source is available and loading the corresponding subtitle decoder. If this function is called during video playback, the subtitle must be displayed when all the required components (such as Subtitle Decoder and Video Subtitle CRP) are ready. </p> </li> <li id="GUID-C75C1ECF-1402-5C6B-8D6C-8D7EDFCB5BA2"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-1B56C375-2236-3488-9B77-4A5821798168"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusDisableSubtitlesL()</apiname></xref> to disable subtitle support. </p> <p>The disable subtitle function involves stopping the subtitle display, unloading the subtitle decoder, and closing the subtitle source if the source is separate from the video source. </p> </li> <li id="GUID-D617586D-E528-5DE8-8920-243161B49DAB"><p>If languages selection is supported in the subtitle source: </p> <ol id="GUID-BD0BAF46-DDF7-5498-B05A-156C115B4EAB"><li id="GUID-ED27DF2B-09BF-5324-8A95-EB74A7FC5AC6"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-B8B73319-D5CB-3370-A828-6A4903A6C86E"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusGetSupportedSubtitleLanguagesL(RArray&lt;TLanguage&gt;&amp;
+                        )</apiname></xref> to get a list of supported languages that are available in the selected subtitle source. </p> </li> <li id="GUID-18D50682-DF82-50F6-AE9E-299E111FE6D8"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-D2CD472D-DCBB-3A7B-9D1E-BCED722BFADE"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusSetSubtitleLanguageL(TLanguage
+                        )</apiname></xref> to set the current subtitle language. </p> </li> <li id="GUID-2DAFA0C8-9464-5A4F-8548-23F0DCA77499"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-B3CC4815-2030-3FB4-8C41-FF9C2D981C12"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusGetSubtitleLanguageL(TLanguage&amp;
+                        )</apiname></xref> to return the current subtitle language selected. </p> </li> </ol> </li> <li id="GUID-2E45DBA4-2AB1-5872-B435-69081BE21DB4"><p>The subtitle configuration data for a window is passed to MMF controller by the <xref href="GUID-014F48C6-EA09-36BA-A2ED-B45BA128A6EC.dita"><apiname>TMMFSubtitleWindowConfig</apiname></xref> class. <codeph>TMMFSubtitleWindowConfig</codeph> is used to send the subtitle window client configuration to Video Player Controller. </p> <p>The subtitle client window configuration is given to Video Player Controller so that the properties of the subtitle artwork CRP can be calculated for each window using the window identity as an identifier. The window clip rectangle can be used to calculate the subtitle region (for example, the subtitle region can be restricted to the bottom one-third of the display area ). The rotation value indicates the angle at which the subtitle text should be rotated such that the text is displayed in the same angle as the video. The <codeph>TMMFSubtitleWindowConfig</codeph> class is shown in the code below: </p> <codeblock id="GUID-A936EF7E-781D-5FF1-A24A-6C28AEEF7B7E" xml:space="preserve">
+
+ class TMMFSubtitleWindowConfig
+    {
+  public:
+     /** Window unique identifier */
+     TInt iWindowId; 
+     /** Video window clip rectangle */
+     TRect iWindowClipRect;
+     /** Video window display mode */
+     TDisplayMode iDisplayMode;
+     /** Video rotation angle */
+     TVideoRotation iRotation;
+ }
+
+</codeblock> <ul><li id="GUID-72726FC6-AF9B-5F20-B353-FEA69429196B"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-B3A167EE-FA21-308F-9AF7-463657EA7035"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusAddSubtitleConfigL(const
+                        TMMFSubtitleWindowConfig)</apiname></xref> to add subtitle configuration data for a window when subtitles are enabled. </p> </li> <li id="GUID-E6444516-E776-52E4-BBFC-5836A95DF74B"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-572D4F35-09B0-39B3-B06A-EAA5A8426778"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusUpdateSubtitleConfigL(const
+                        TMMFSubtitleWindowConfig) </apiname></xref> to update when any of the window configuration values are changed for a window. For example, the update function can be called during video playback if the rotation setting is changed. </p> </li> <li id="GUID-81DBAA0F-0338-590B-AA0B-3BC4CA28F289"><p>Implement <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-11966D68-114C-3034-8A71-4C5ECC7E49C0"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusRemoveSubtitleConfigL()</apiname></xref> to remove window configuration when subtitles are disabled. </p> </li> <li id="GUID-BE488713-AE93-5EE4-BADB-7935B2FDEA9C"><p>When the CRP for an added window or an updated window is ready for display, Video Player Controller sends <xref href="GUID-D60E4CF8-EAD8-3E32-8CFE-967C0131CC82.dita"><apiname>KMMFEventCategoryVideoSubtitleCrpReady</apiname></xref> with the corresponding window identity to Video Client. The window identity is passed by the error code to Video Client: </p> <codeblock id="GUID-EFB08910-6B9F-526B-9428-EC085D387E75" xml:space="preserve">
+const TUid KMMFEventCategoryVideoSubtitleCrpReady = {0x10285C9E};
+</codeblock> </li> <li id="GUID-E6B62291-1840-54E7-9E53-D4030AE13552"><p>After the <codeph>KMMFEventCategoryVideoSubtitleCrpReady</codeph> identifier is sent to the Video Client, the <xref href="GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A.dita#GUID-54D2B15E-E40D-3C65-91BB-2BFEF708FD2A/GUID-6B92F4F8-9D7A-377C-97B9-BF8EBDE1B211"><apiname>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusGetCrpParametersL()</apiname></xref> function is called by MMF Framework to retrieve the Video Subtitle CRP parameters from MMF Controller. </p> <p>The Video Subtitle CRP graphic identity is returned by the <codeph>MMMFVideoPlaySubtitleSupportCustomCommandImplementor::MvpsusGetCrpParametersL()</codeph> function. The Video Subtitle CRP graphic identity is used by the Video Client to send draw request to Window Server. For more information about the graphic identity see the <xref href="GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita">Using Subtitle Graphic</xref> tutorial. </p> </li> </ul> </li> </ul> </section> </conbody><related-links><link href="GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita"><linktext>Subtitle Graphic Library
+                Overview</linktext> </link> <link href="GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita"><linktext> Using Subtitle
+                Graphic</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e295604_href.png has changed
Binary file Symbian3/SDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e169274_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5" xml:lang="en"><title>version</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>version</codeph>  <varname>major.minor</varname> <codeph>[explicit]</codeph>  </p>
+<p>The <codeph>version</codeph> keyword allows a version number to be set
+for a project. The optional keyword, <codeph>explicit</codeph> is used to
+append the specified version number to the <filepath>.exe</filepath> or <filepath>.dll</filepath> output
+file. </p>
+<p>EKA1 will only allow one version of an executable to exist in a Symbian
+platform phone. However, EKA2 supports version numbering. Version numbering
+associates a version number with each executable enabling new and old versions
+of the same executable to be on the device simultaneously. </p>
+<p>The <codeph>version</codeph> keyword takes a major and a minor value separated
+by a full stop. This value is defined as 32 bit, anything exceeding this will
+produce a warning. Failing to enter a value will result in a warning and a
+default value of 10.0 being supplied for binaries built with an EABI compliant
+compiler. Omitting the version keyword altogether will also result in a default
+of 10.0 being applied. The version number can be found at Hexadecimal offset
+70 within the header of the executable file in ROM. </p>
+<p>Usage of the version keyword is optional. One use is to aid eclipsing.
+In order to eclipse a file on ROM successfully the version of the new file
+can be set to a higher value than the version of the file to eclipse. This
+tells the loader that the new file is preferred over the old one. </p>
+<p>See the <xref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita#GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0/GUID-124e78dc-2c94-4901-a90b-20ddc2f3ad66">Important
+Considerations</xref> section for more information. </p>
+<p>The loader will show preference to versions that have a major number that
+is equal to the one requested, and of these the minor numbers
+that are higher are preferred. The loader can assume by the version number
+that the API is compatible, while also being the most up to date version available. </p>
+<p>If the above is not available the loader will look for DLLs with a higher
+major version number than the one requested. Of these it will select the one
+with the lowest major number and the highest minor number. If the executable
+requests exports that no longer exist in this DLL, then the loader cannot
+use it. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e229930_href.png has changed
Binary file Symbian3/SDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3-master.png has changed
Binary file Symbian3/SDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e3307_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3584C6F0-0B9E-5490-9CDB-86FA218A2E26.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3584C6F0-0B9E-5490-9CDB-86FA218A2E26"><title>Loading a Bitmap from a File</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Bitmaps can be stored in multi-bitmap (<filepath>.mbm</filepath>) files, which can be built from <filepath>.bmp</filepath> files as part of the <codeph>abld</codeph> process. This topic provides an example of loading a multi-bitmap file. </p> <p>Loading them has four stages: </p> <ol id="GUID-48EA2A7A-CEEC-587A-A4E3-358F60369183"><li id="GUID-623ACA50-14A7-5573-87AC-BF394ABDBB65"><p>Put the name of the bitmap file into a buffer. </p> </li> <li id="GUID-064AD234-B581-5DEA-8276-DF5E78D1CCF6"><p>Create a bitmap (<codeph>CFbsBitmap</codeph>). </p> </li> <li id="GUID-BA848FFC-23C2-56B9-9AEC-D89945FD1361"><p>Load the bitmap using <codeph>CFbsBitmap::Load()</codeph>. </p> </li> <li id="GUID-48B6560D-96AC-5020-B98D-642549611792"><p>If an error is returned, leave and ensure the bitmap is cleaned up </p> </li> </ol> <codeblock id="GUID-152B03ED-E130-5F78-81AE-3795EBA48208" xml:space="preserve">// set the name of the multi-bitmap file containing the bitmaps
+_LIT(KMBMFileName,"z:\\resource\\apps\\grbmap2.mbm");
+    
+// load the bitmap from an .mbm file
+CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
+CleanupStack::PushL(bitmap);
+User::LeaveIfError(bitmap-&gt;Load(KMBMFileName, EMbmGrbmap2Smiley));
+    
+// EMbmGrbmap2Smiley is the ID of a bitmap in the .mbm file
+...
+    
+// clean up
+CleanupStack::PopAndDestroy();</codeblock> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-35AF5E92-7103-5A86-A3CC-B2CED7E9793B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-35AF5E92-7103-5A86-A3CC-B2CED7E9793B"><title>What are Multi-Threaded Servers?</title><shortdesc>A multi-threaded server is a server that has more than one thread. This topic describes the root server which comprises 2 multi-threaded servers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Root Server comprises two servers, called ESock and C32. Each server uses multiple threads. Each server has several CMI files to define the threads required. For ESock there are threads for protocols such as SMS, TCP/IP and Bluetooth. For C32 there can be threads for comms protocol plug-ins (CSYs) such as IrDA, ECUART and USB. </p> <p>Each CMI file for multi-threaded servers has parameters specific to the multi-threaded system. These parameters define items such as the ID of the CPM in the multi-threaded system and the relationship between the CPMS. These parameters are always specified in the [IniData] section of the CMI file. The parameters specified in the [Loader] section relate to Configurator. </p> </conbody><related-links><link href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita"><linktext>What
+                are CMI files?</linktext> </link> <link href="GUID-1DE160DB-8054-5522-95F7-4CE5D8FFBF2E.dita"><linktext>What is Serial Port Contention?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2" xml:lang="en"><title>GlassTerm:
+glass teletype terminal</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e132f025-ded6-4ae4-8a4d-dc50d344b55b.zip" scope="external">GlassTerm.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-16f2a07d-2ace-4a32-b383-6f1352dfd72e.zip" scope="external">CommonFiles</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e132f025-ded6-4ae4-8a4d-dc50d344b55b.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-16f2a07d-2ace-4a32-b383-6f1352dfd72e.html" scope="peer">browse</xref>. </section>
+<section><title>Description</title> <p>GlassTerm is a terminal application
+with configurable handshaking that illustrates the use of the Serial Communications
+API. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref>: serial port</p><p><xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita"><apiname>RCommServ</apiname></xref>:
+Comms server</p><p><xref href="GUID-076DD315-CE3F-3640-BAB4-0FC51C906820.dita"><apiname>TCommCaps</apiname></xref>: serial port capabilities
+(in package buffer) </p><p><xref href="GUID-BF099B27-4E8A-3765-A6A8-DB88DB4F4F2E.dita"><apiname>TCommConfig</apiname></xref>: serial port configuration
+(in package buffer)  </p><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref>: asynchronous
+request status </p><p><xref href="GUID-A6E4627A-A3AE-3B64-9E5C-710EE15C5595.dita"><apiname>TSerialInfo</apiname></xref>: serial protocol information </p></section>
+<section><title>Build</title> <p>The source code for this example application
+can be found in the directory: </p> <p> <filepath>examples\SerialComms\ServerClientSide\GlassTerm</filepath>  </p> <p>It
+may be in the directory in which you installed Symbian OS, or it may be in <filepath>src\common\developerlibrary\</filepath>.
+It includes the two project files needed for building: <filepath>bld.inf</filepath> and
+the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this application, which
+results in an executable called <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or udeb&gt;\GLASSTERM.EXE</filepath>. </p> </section>
+<section><title>Usage</title> <ol id="GUID-1DB8E591-3818-51E6-BDE0-89FFE8B6F96A">
+<li id="GUID-A399AF4D-E821-5341-9645-B7F0FA42B76A"><p>Run the executable <filepath>GLASSTERM.EXE</filepath>. </p> <p>Executables
+for the emulator targets <filepath>wins</filepath> and <filepath>winscw</filepath> can
+be run on your PC. Executables for ARM targets must be copied to your target
+platform before being run. </p> </li>
+<li id="GUID-BD9D8050-474C-5FD0-8485-08CED5D8AEEF"><p>Once running, the glass
+teletype application performs two simple functions: </p> <ul>
+<li id="GUID-3384ABA3-13A8-57F7-BE4F-7CC322BDA464"><p>Read any key presses
+and send the characters to the serial port. </p> </li>
+<li id="GUID-A44E9991-D87A-5E20-BC01-91454379BFF8"><p>Receive any incoming
+characters from the serial port and display them on screen. </p> </li>
+</ul> <p>It sends and receives at 19200 baud, 8 data bits, no parity, 1 stop
+bit. </p> </li>
+</ol> <p>In order to see the application working, you must make a suitable
+serial port connection. A simple way is to connect a PC and a Symbian OS phone,
+and run the application on both machines simultaneously. (Before doing this,
+make sure to close down any other applications using the serial port on the
+PC, and set the phone's <systemoutput>Link To Desktop</systemoutput> option
+to <systemoutput>Off</systemoutput>). Characters typed on one machine are
+then echoed to the application on the other. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-35D7EEFC-B2E4-5444-8875-2A24790E08C2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-35D7EEFC-B2E4-5444-8875-2A24790E08C2" xml:lang="en"><title>Essential Idioms</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes some of the distinctive programming idioms and conventions
+for the Symbian platform. </p>
+<p>Additional useful information, in particular the Symbian platform's own
+internal coding standards, can be found at <xref href="http://developer.symbian.org/wiki/index.php/Coding_Standards_Quick_Start" scope="external">Coding Standards Quick Start</xref>. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-35DE6C87-0C47-5D06-AC8E-3C39DC463F0C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-35DE6C87-0C47-5D06-AC8E-3C39DC463F0C"><title>C++ API items</title><shortdesc>This topic lists the C++ API items of the Root Server Configurator API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><title>Static Functions</title> </section> <table id="GUID-17A03FBD-97BF-5694-A650-0EA4D8B30954"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Item</entry> <entry>Header</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-CFCBC5A6-FB1F-3DD7-B275-9B9C7389A8A7.dita"><apiname>StartC32()</apiname></xref>  </p> </entry> <entry><p>rsshared.h </p> </entry> </row> <row><entry><p> <xref href="GUID-23477442-5412-3DAF-A096-F45A03D944E1.dita"><apiname>StartC32WithCMISuppressions()</apiname></xref> </p> </entry> <entry><p>rsshared.h </p> </entry> </row> </tbody> </tgroup> </table> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3603126B-661E-509B-8CCF-04A99F9ACE07" xml:lang="en"><title>HelloWorld:
+writes “Hello World!” to the console</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <codeph>HelloWorld</codeph> is a very
+simple piece of code showing how text is written to the console. All other
+examples in <filepath>Basics</filepath> and <filepath>System</filepath> use
+the same technique. </p> <p>The file <filepath>CommonFramework.h</filepath> contains
+the entry point and all code necessary to support the example itself, including
+the construction of the console and the cleanup stack. Putting code into a <filepath>.h</filepath> file
+may not be conventional practice, but it is useful to do so here. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-9a9bd0dd-017a-4460-b7d8-019616ebfa39.zip" scope="external">HelloWorld.zip</xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.zip" scope="external">CommonFramework.zip</xref>.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-9a9bd0dd-017a-4460-b7d8-019616ebfa39.html" scope="peer">browse</xref> to view the example code. </p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.html" scope="peer">browse</xref> to view the additional file.</p> </section>
+<section><title>Build</title> <p>The example includes the two project files
+needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian platform build
+process</xref> describes how to build this application, which results in an
+executable called: </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or udeb&gt;\HELLOWORLD.EXE</filepath>. </p> </section>
+<section><title>Usage</title> <p>Run the executable <filepath>HELLOWORLD.EXE</filepath>. </p> <p>Executables
+for the emulator targets <filepath>wins</filepath> and <filepath>winscw</filepath> can
+be run on your PC. Executables for ARM targets must be copied to your target
+platform before being run. </p> </section>
+<section><title>Classes used</title> <p>The example shows the use of the <codeph>_LIT</codeph> macro
+which is used throughout all of the examples. The macro generates a: </p> <codeblock id="GUID-FD21D75C-AA23-5F83-9076-2F9CA6F313A8" xml:space="preserve">const static TLitC&lt;TInt&gt;</codeblock> <p>object
+and is an efficient and convenient way of generating constant literal text. </p> <p>As
+this is a wide (Unicode) build, <codeph>TLItC&lt;TInt&gt;</codeph> is a typedef
+for <codeph>TLitC16&lt;TInt&gt;.</codeph>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3631971E-424B-5B10-B44C-98FB7C265843.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3631971E-424B-5B10-B44C-98FB7C265843" xml:lang="en"><title>Kernel
+services</title><shortdesc>Describes asynchronous services provided by the kernel.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Many asynchronous services are provided to user threads by the kernel.</p>
+<p>The <codeph>RTimer</codeph> class is an example. It includes functions
+such as:</p>
+<codeblock id="GUID-9BF774FC-9DA2-5426-A4C5-F6A9DCB7E889" xml:space="preserve">After(TRequestStatus &amp;aStatus,TTimeIntervalMicroSeconds32 anInterval);</codeblock>
+<p>This makes a timer request that completes after a given number of microseconds.</p>
+<p>The <codeph>RTimer</codeph> class is a client-side handle to the kernel’s
+timer service. When an <codeph>RTimer</codeph> is opened, using its <codeph>CreateLocal()</codeph> function,
+a Kernel object is created which holds the state of the timer and the ID of
+the client’s thread. When a request function is issued, the client-side handle:</p>
+<ul>
+<li id="GUID-D7D4F444-C1CB-5FEA-B885-FDC6764CE093"><p>sets the passed <codeph>TRequestStatus</codeph> to <codeph>KRequestPending</codeph> </p> </li>
+<li id="GUID-0CB9A142-ED99-5455-B503-B9AB78F43993"><p>sends a message to the
+Kernel identifying the <codeph>RTimer</codeph> client-side handle, the <codeph>TRequestStatus</codeph> object
+and the time interval in microseconds.</p> </li>
+<li id="GUID-04280A19-96A4-526A-9E5A-7295112A16F0"><p>returns to the caller.</p> </li>
+</ul>
+<p>When the Kernel side timer completes, it posts the <codeph>TRequestStatus</codeph> with
+a completion code, normally <codeph>KErrNone</codeph>, and uses the thread
+id stored with the Kernel side timer object to signal the thread’s request
+semaphore.</p>
+<p>Provision of asynchronous services by the Kernel involves sending messages
+between the client thread and the Kernel.</p>
+<p>The Kernel provides the most basic services available. Its main services
+are defined in <filepath>e32std.h</filepath>, including timing, notification
+and the classes used in the client-server framework.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3637DBF8-BABF-4F84-9A7D-8FF66A118261_d0e60574_href.png has changed
Binary file Symbian3/SDK/Source/GUID-3637DBF8-BABF-4F84-9A7D-8FF66A118261_d0e61285_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36539894-580E-5774-AA79-7F640E8C59E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-36539894-580E-5774-AA79-7F640E8C59E1"><title>Central Repository Initialisation Files Guide</title><shortdesc>This topic describes the concepts of initialisation files used by the Central Repository. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Initialisation file properties</title> <p>The mechanisms of key spaces, capabilities and SIDs are used to write the content of an initialisation file. </p> <p><b>Owner </b> </p> <p>The owner of a repository (the application responsible for backing it up) is identified by its SID. Example: </p> <codeblock id="GUID-3057056D-64F4-5A3D-9644-9B1417EFDC89" xml:space="preserve">
+[owner]
+0x12345
+</codeblock> <p><b>Metadata </b> </p> <p>Settings of a repository are given values and also metadata values. The Default Metadata section of a repository gives the settings global default metadata values which may be overridden by individual metadata values assigned in the Main section. A metadata value is held as a 32 bit integer whose binary digits encode separate items of metadata. The most significant eight bits (most significant byte) of the integer are reserved for internal purposes. The other 24 bits of the integer have no reserved significance. Two of the eight bits are exposed for use by application developers. </p> <ul><li id="GUID-65872DE7-F12A-5F1E-892C-937C81053E48"><p>The least significant bit of the most significant byte is set to 1 to indicate that a backup operation applies to the setting. </p> </li> <li id="GUID-A13A915F-EDBC-5E69-8557-D4FC6789CE23"><p>The second least significant bit of the most significant byte is set to 1 to indicate that a restore factory settings operation applies to the setting. </p> </li> </ul> <p>What is meant by least and most significant? An example may help. A hexadecimal number such as 03020100 is stored as a single 32 bit integer. The integer can be analysed as a sequence of four bytes: </p> <p>03 02 01 00 </p> <p>The leftmost byte, 03, is the most significant byte because it represents a larger quantity (03000000) than the other three (02000, 0100 and 00). Each byte consists of eight bits. In binary notation they are </p> <p>00000011 00000010 00000001 00000000 </p> <p>The rightmost bit of the leftmost byte is the least significant bit of the most significant byte because it represents a smaller quantity (1) than its neighbour to the left (10) which is the second least significant bit of the most significant byte. These are the two exposed bits of the metadata value and the hexadecimal integer 03020100 has both of them set to 1. The 32 bits are sometimes referred to by number (32 for the leftmost down to 1 for the rightmost): thus the exposed bits are also called bits 26 and 25. </p> <p>Global default metadata values consist simply of a 32 bit integer. Default metadata values can also be applied to a range of settings by prefixing either a pair of keys representing a continuous range, or else a partial key and a key mask prefixed by "mask=". Example: </p> <codeblock id="GUID-EC5F473A-86AB-58CF-878B-7AFD7EE69779" xml:space="preserve">
+[defaultMeta]
+0x00000010
+0x100 0x400 0x00000020
+0x1000 mask = 0x04 0x00000040
+</codeblock> </section> <section><title>Access policies </title> <p>An access policy grants read or write permissions on a setting or a group of settings to an application or a group of applications. Applications are identified by their SID and groups of applications by their capability name. </p> <p>Decide which applications you want to grant permissions to, and whether you are going to identify them by capability or SID. SIDs are unsigned integers which identify an application and are assigned by Symbian Signed. Identify the settings and groups of settings which are to be written and read: you will need their keys and partial keys. Determine which applications need read or write permissions on which settings. </p> <p>You create an access policy by combining these elements using the following syntax. </p> <ul><li id="GUID-A3E78BC6-7436-59E6-8C6F-B546B638BABB"><p>A capname is one of '<codeph>TCB</codeph>' '<codeph>CommDD</codeph>' etc. A caplist is two or three capnames separated by a comma and whitespace. A read caps statement is "cap_rd" followed by a capname or a caplist. </p> </li> <li id="GUID-5A76E256-BF6B-5CAD-A45C-C07140C4EEEE"><p>A read sid statement is "<codeph>sid_rd</codeph> " followed by an SID. </p> </li> <li id="GUID-0EE23D2A-2EED-5CEA-BF6D-7B23D11E9935"><p>A read policy is a read sid statement or a read caps statement or one of each separated by whitespace. A write policy is the same as a read policy with "_wr" instead of "_rd". An access policy is a read policy or a write policy or one of each separated by whitespace. </p> </li> <li id="GUID-EAB2A33E-99C2-5B40-8333-232761A7BC91"><p>Instead of granting or denying permissions to specified applications, you can create global permissions by using the words 'AlwaysPass' or 'AlwaysFail' in place of an SID. For instance, 'sid_rd AlwaysPass' grants read permissions to all applications, 'sid_wr AlwaysFail' denies write permissions to all applications and so on. </p> </li> </ul> <p>An access policy constructed on these lines with no further qualification creates permissions on all the settings in a repository (this is called a default policy). To create permissions on individual settings (a single policy) or a group of settings (a range policy or a mask policy depending on implementation) we use the keys of those settings. </p> <ul><li id="GUID-F86D7F23-EB24-5169-B072-EED5BEC5925D"><p>A single policy is a default policy prefixed with a key referring to a single setting. </p> </li> <li id="GUID-0F83526E-BF07-5914-887B-E128CFC59775"><p>A range policy is a default policy prefixed with two keys, the lowerkey and the upperkey. The policy assigns permissions on all settings with keys between the lowerkey and the upperkey inclusively. </p> </li> <li id="GUID-BA19291D-8F06-5D6D-932C-8F0B8554DF51"><p>A mask policy is an access policy prefixed with a partial key and then "mask=" and a keymask. </p> </li> <li id="GUID-828D372D-0297-5CDF-93E7-10A63516E698"><p>A custom policy is a single policy, a range policy or a mask policy. A policy list is a custom policy or several custom policies separated by whitespace. </p> </li> </ul> <p>We have now defined the structure of the access policy section of an initialisation file. It consists of a line reading "[PlatSec]" followed by a default policy or a policy list or one of each separated by whitespace. Where several policies in a list apply to the same key, the later policy overrides the earlier. The read policies, each on a separate line, must precede the write policies, each on a separate line. </p> </section> <section><title> Initial values </title> <p>Initial values are assigned to settings in the Main section of an initialisation file. Each line begins with a setting identified by an individual key or a group of settings identified by a pair of keys representing a range or else a keymask and a partial key. Following the key or keys comes the data type of the setting, one of <codeph>int</codeph>, <codeph>real</codeph>, string, <codeph>string8</codeph> or <codeph>binary</codeph>. Next comes the actual initial value of the setting and finally, as an optional item, the metadata value of the setting. Example: </p> <codeblock id="GUID-585347BA-219A-5372-8C62-77E927A5D690" xml:space="preserve">
+[main]
+
+1 int 1 0
+2 real 2.732 0xa
+5 string "test\\\"string\"" 2
+6 int 12 0xf
+8 real 1.5 1
+11 string string 0x305
+12 string8 string 0x305
+
+0x11 real 1.5 12
+0x101 int 100 0
+</codeblock> </section> <section id="GUID-12599A2C-BE97-5B18-9BB9-EB833A40536A"><title>Initialisation file format</title> <p>You use an initialisation file to register a repository by saving it to device memory. Ideally you do this at ROM build time and save to the directory <filepath>z:\private\10202BE9\</filepath> (this is the Central Repository directory, named after its UID). It is also possible to register a repository after build time using the Symbian OS Software Installer to save it to the C drive. This process requires a signed SIS file and is explained below. In either case, the file name of the repository is the same as its UID. </p> <p>A repository may be saved to memory as a text file. The encoding must be UTF-16, no other format being supported. However, you are recommended to convert this text file to binary format and save the binary to device memory for reasons of performance. Retrieval times are an order of magnitude faster using binary files. You convert text to binary with the tool CentRepConv.exe as documented in <xref scope="external" href="id1236097240207">CenRep Converter Tool Tutorial</xref>. CentRepConv.exe can also be used to convert binary files back to text format (in a slightly lossy way due to differences in the specification of the two formats). </p> </section> </conbody><related-links><link href="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita"><linktext>Central Repository
+                Overview</linktext> </link> <link href="GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita"><linktext>Central Repository Guide</linktext> </link> <link href="GUID-53E5C9EA-0A38-54A1-AE24-95B71BFFB4B5.dita"><linktext>CenRep Converter Tool
+                Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-365BB311-8FC8-5DA5-B80D-C22D4AB35AEE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-365BB311-8FC8-5DA5-B80D-C22D4AB35AEE"><title>Sprites and Cursors Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Window Server supports two types of <keyword>sprite</keyword>: one for general use, another for use as a pointer cursor. A sprite is an arbitrary-shaped bitmap which may be moved without applications having to redraw the underlying screen. </p> <p>The ergonomics of pointer cursors differ greatly depending on the input device. The Window Server provides pointer cursor support so that either mouse, tablet or pen may be used effectively as a pointer device. </p> <p>A sprite is made up of one or more sprite members, each of which contains a bitmap image and a time interval for which that bitmap is to be displayed. Animation can be achieved by adding more than one sprite member, each with a different bitmap. The sprite members are displayed in turn in the order in which they were added, continuously returning to the beginning when the last is reached. </p> <p>Pointer cursors are rarely used in pure pen architectures, but they are supported for mouse or tablet use. Pointer cursors do not need to be given a position, as they automatically track the position of the pointer. The position of a sprite, on the other hand, must be set when it is created, and can be changed by the application using <xref href="GUID-75C09150-E93B-323D-AFBF-E42C7BD78229.dita"><apiname>RWsSprite::SetPosition()</apiname></xref>. </p> </conbody><related-links><link href="GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F.dita"><linktext>Sprites and Cursors</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36718217-C9F7-5ACF-8DE7-7D83FBF435DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-36718217-C9F7-5ACF-8DE7-7D83FBF435DB"><title>Store map cleanup support</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The destructor of a <codeph>CStoreMap</codeph> object calls the <codeph>ResetAndDestroy()</codeph> member function. This function deletes from the store all streams whose stream IDs are currently held by the store map.</p> <p>This is of most use:</p> <ul><li id="GUID-1978575F-24D5-5B3A-8FED-5A067ACF5691"><p>in stores which do not support commit and revert, for example, the non-persistent in-memory store <codeph>CBufStore</codeph>.</p> </li> <li id="GUID-C8FBA74B-939B-576B-9443-D55AD9B798EC"><p>where the streams, whose IDs are in the store map, do not contain pointers to other streams.</p> </li> </ul> <p>This behaviour allows a partially complete set of streams to be deleted if a leave occurs part of the way through the building of the set.</p> <p>Note that this behaviour cannot be exploited by stores which do not support the deletion of streams, for example, the direct file store <codeph>CDirectFileStore</codeph>.</p> <p>Stores such as the permanent file store, <codeph>CPermanentFileStore</codeph>, can also use commit and revert to implement this kind of behaviour.</p> <p>Given the example class, <codeph>CCompound</codeph>, defined as:</p> <codeblock id="GUID-84E229C8-624C-5024-B25B-DB5957580775" xml:space="preserve">class CCompound : public CBase
+    {
+    ...
+    TSwizzle&lt;CClassA&gt; iA;
+    TSwizzle&lt;CClassB&gt; iB;
+    TSwizzle&lt;CClassC&gt; iC; 
+    ...
+    }</codeblock> <p>the <codeph>CCompound</codeph> object is stored using its <codeph>StoreL()</codeph> function and the individual components are externalised by the <codeph>StoreComponentsL()</codeph> function:</p> <codeblock id="GUID-10BD78DC-C674-5C28-BECE-685A51324956" xml:space="preserve">TStreamId CCompound::StoreL(CStreamStore&amp; aStore)
+    {
+    CStoreMap* map=CStoreMap::NewLC(aStore);
+    StoreComponentsL(*map);
+       RStoreWriteStream stream(*map);
+    TStreamId id=stream.CreateLC(aStore);
+    ExternalizeL(stream);
+    stream.CommitL();
+    map-&gt;Reset();
+    CleanupStack::PopAndDestroy(2);
+    return id;
+    }</codeblock> <codeblock id="GUID-8D249B61-5858-500D-A1A2-4C17FF9D0D63" xml:space="preserve">void CCompound::StoreComponentsL(CStoreMap&amp; aMap) const
+    {
+    TStreamId id;
+    ...
+    id = iA-&gt;StoreL(iStore);
+    aMap.BindL(iA,id);
+    ...
+    id = iB-&gt;StoreL(iStore);
+    aMap.BindL(iB,id);
+    ...
+    id = iC-&gt;StoreL(iStore);
+    aMap.BindL(iC,id);
+    ...
+    }</codeblock> <p>Once the store map has been created, a cleanup item for it is placed onto the cleanupstack. This means that if, for example, the call to either:</p> <codeblock id="GUID-14BA383C-B2C5-5881-97E8-FD1196B8A459" xml:space="preserve">id = iC-&gt;StoreL(iStore);</codeblock> <p>or</p> <codeblock id="GUID-CFE924DF-2131-51D5-A3B6-DAC756B996CA" xml:space="preserve">aMap.BindL(iC,id);</codeblock> <p>were to fail, then the streams containing the <codeph>CClassA</codeph> and <codeph>CClassB</codeph> objects would be deleted from the store as part of the subsequent destruction of the store map.</p> <p>Once all three components have been successfully externalised and the <codeph>CCompound</codeph>'s other data has also been externalised to its own stream, and no further failure modes are possible, then the store map can be and must be reset, by calling its <codeph>Reset()</codeph> function.</p> <section><title>See also</title> <p><xref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita">File stores</xref> </p> <p><xref href="GUID-6EE0CB66-A759-5E0C-884D-90895F35F267.dita">Transactions</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36743EC8-5A64-5FF5-8632-56CBBD04EC12.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-36743EC8-5A64-5FF5-8632-56CBBD04EC12" xml:lang="en"><title>How
+to initialise simple RESOURCE members</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock id="GUID-5381B771-16F9-5D77-B9AC-610DBC4B6E05" xml:space="preserve">&lt;simple-initialiser&gt;
+simple-initialiser ::=
+     &lt;number&gt; | &lt;string&gt; | &lt;resource-identifier&gt;</codeblock>
+<ul>
+<li id="GUID-59B1A462-A03A-592B-B4BB-07755358187C"><p>A <codeph>BYTE</codeph>, <codeph>WORD</codeph>, <codeph>LONG</codeph> or <codeph>DOUBLE</codeph> member must be initialised with a number. The number can be the result of
+simple expressions such as <codeph>3+1</codeph> or <codeph>NUM1+NUM2</codeph> where <codeph>NUM1</codeph> and <codeph>NUM2</codeph> have
+been <codeph>#defined</codeph> earlier on in the file.</p> </li>
+<li id="GUID-E8153E76-954E-5205-B996-4A45CA09B665"><p>A <codeph>TEXT</codeph>, <codeph>LTEXT</codeph> or <codeph>BUF</codeph> member
+must be initialised with a string. If a <varname>length-limit</varname> has
+been declared for that member in the <codeph>STRUCT</codeph> definition then
+an error will be generated if the <varname>string</varname> is longer than
+the limit. You cannot override this maximum length.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D"><title> Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Viewfinder API. </p> <section><title>Purpose</title> <p>The Viewfinder enables you to pause and resume the direct viewfinder which is currently active and has been started using <codeph>Ccamera</codeph> methods. </p> <p><b>Viewfinder Library Details</b> </p> <p>The DLLs listed below provide the viewfinder functionality and the library to which your code must link is identified below. </p> <table id="GUID-9684EA64-3FEB-5DC2-803C-77E31D474698"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry>DLL</entry> <entry>Classes</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-F4C719BF-F8C8-38FD-9E2B-2E483E9DAC71.dita"><apiname>ECamAdvSettings.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8689F0A2-281F-3F87-B2BB-E36FAC87FB65"><apiname>CCamera::StartViewFinderDirectL()</apiname></xref> starts viewfinder. </p> <p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-144A45FA-EADE-3036-B013-821F65142C82"><apiname>CCamera::CCameraDirectViewFinder</apiname></xref> allows to use direct viewfinder. </p> </entry> <entry><p> <xref href="GUID-645E6782-2610-3E79-A6A8-66A65C325E5F.dita"><apiname>euser.lib</apiname></xref>  </p> <p> <xref href="GUID-EA31C23F-8081-3A82-ABAA-168F970B5381.dita"><apiname>ecampluginsupport.lib </apiname></xref>  </p> </entry> <entry><p>These files are used by ECAM clients to provide a certain type of control over direct viewfinder. </p> <p> </p> </entry> </row> <row><entry><p> <xref href="GUID-E70E98FE-08D2-3657-B653-14EC62B9B8FE.dita"><apiname>Ecam.dll</apiname></xref> and <xref href="GUID-19C20CDB-474E-375E-BB0D-0AAAC5B0E9B2.dita"><apiname>ecamdirectviewfinder.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita"><apiname>CCameraViewFinder</apiname></xref>  </p> <p> <xref href="GUID-A2792673-6B43-3CC8-B93C-3259D72E3EF0.dita#GUID-A2792673-6B43-3CC8-B93C-3259D72E3EF0/GUID-1AB5D236-B39D-3582-BA73-1C95778747E8"><apiname>Camera::CCameraV2DirectViewFinder</apiname></xref> and <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC"><apiname>CCamera::CCameraClientViewFinder</apiname></xref> (for starting multiple viewfinders). </p> </entry> <entry><p> <xref href="GUID-645E6782-2610-3E79-A6A8-66A65C325E5F.dita"><apiname>euser.lib</apiname></xref>  </p> <p> <xref href="GUID-EA31C23F-8081-3A82-ABAA-168F970B5381.dita"><apiname>ecampluginsupport.lib </apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Viewfinder functionalities. </p> <p> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>This is part of the camera component. </p> </section> <section><title>Description</title> <p>The Viewfinder acquires information about the current state of that direct viewfinder. The different possible states are active, paused and inactive. It allows you to pause and resume the direct viewfinder that is currently active and has been started using <codeph>CCamera</codeph> functions. </p> </section> <section id="GUID-FD016694-527F-5009-81FC-B5D8AD1A3A05"><title>Key Viewfinder Classes</title> <p>The key classes that make up the Viewfinder API are as follows: </p> <ul><li id="GUID-90AE695F-6B48-57F4-B705-D0FEC3919C27"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8689F0A2-281F-3F87-B2BB-E36FAC87FB65"><apiname> CCamera::StartViewFinderDirectL()</apiname></xref>  </p> <p>Class <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> is used to start the direct viewfinder using the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8689F0A2-281F-3F87-B2BB-E36FAC87FB65"><apiname>CCamera::StartViewFinderDirectL()</apiname></xref> method. This starts the direct viewfinder and displays viewfinder data to a specified portion of the screen using direct screen access. <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-144A45FA-EADE-3036-B013-821F65142C82"><apiname>CCamera::CCameraDirectViewFinder</apiname></xref> can then be used to pause and resume the viewfinder. </p> <p> <b>Note</b>: Licensees must provide a concrete implementation of <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8689F0A2-281F-3F87-B2BB-E36FAC87FB65"><apiname>CCamera::StartViewFinderDirectL()</apiname></xref>. </p> <codeblock id="GUID-A0F920D1-835E-51DA-954F-475081F2D642" xml:space="preserve"> // Pause direct viewfinder       
+    directviewfinder-&gt;PauseViewFinderDirectL();
+    // Resume direct viewfinder
+    directviewfinder-&gt;ResumeViewFinderDirectL();</codeblock> </li> <li id="GUID-75B2B5A8-322C-5E12-BEE8-D2AAF3B070CE"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-144A45FA-EADE-3036-B013-821F65142C82"><apiname> CCamera::CCameraDirectViewFinder</apiname></xref> class is used to provide support for Direct Viewfinder functions such as pause and resume. </p> <p> <b>Note</b>: Licensees must provide a concrete implementation of <xref href="GUID-01A5E35A-DA26-3CFD-9A79-4DDCE7774CAF.dita"><apiname>MCameraDirectViewFinder</apiname></xref>. </p> <ul><li id="GUID-F24D31A2-F032-56DF-82EE-4010CEEDBF55"><p> <xref href="GUID-144A45FA-EADE-3036-B013-821F65142C82.dita#GUID-144A45FA-EADE-3036-B013-821F65142C82/GUID-9EA70253-1A9E-3767-B3DD-107790B040A1"><apiname>
+                     CCamera::CCameraDirectViewFinder::PauseViewFinderDirectL()</apiname></xref>  </p> <p>Pauses the direct viewfinder. </p> </li> <li id="GUID-61D7044F-0002-5666-94B4-FF581E87B78E"><p> <xref href="GUID-144A45FA-EADE-3036-B013-821F65142C82.dita#GUID-144A45FA-EADE-3036-B013-821F65142C82/GUID-8A599773-B478-35EB-8827-842C636943B3"><apiname>
+                     CCamera::CCameraDirectViewFinder::ResumeViewFinderDirectL() </apiname></xref>  </p> <p>Resumes the direct viewfinder. </p> </li> </ul> </li> </ul> <p>Multiple viewfinders may run at the same time by the use of new extension classes: </p> <ul><li id="GUID-3544A4B0-C417-551E-A55B-97E8BF157F81"><p> <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita"><apiname>CcameraV2DirectViewFinder</apiname></xref>: This provides the necessary framework for multiple direct viewfinder support. The direct viewfinder classes are provided as a part of Version2 direct viewfinder implementation. </p> </li> <li id="GUID-EA6C40B7-3F07-5095-A376-648969602C16"><p> <xref href="GUID-B43EAE70-1B2C-3B41-B9A8-7FBB1A87C804.dita"><apiname>CcameraClientViewFinder</apiname></xref>: This provides the necessary framework for multiple client viewfinder support. The client viewfinder classes are provided as a part of client viewfinder implementation. </p> </li> </ul> <p> <b>Note</b>: Licensees must provide a concrete implementation of <xref href="GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C.dita"><apiname>MCameraViewFinder</apiname></xref>, <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> and <xref href="GUID-06A2DDCE-3296-3773-A2D0-74460E216F39.dita"><apiname>MCameraClientViewFinder</apiname></xref>. </p> </section> <section><title>Using Viewfinder</title> <p>Clients can use the Viewfinder to: </p> <ul><li id="GUID-A593ED1B-A03B-549D-BE9D-DBDEB9FA44C1"><p>Run multiple viewfinders on different displays of camera. It can be executed on TV screen with different orientation based on its topology and on LCD display. </p> </li> <li id="GUID-0CE653F6-145B-5D86-A939-29FE38F86456"><p>Expand or reduce the view of the captured image. </p> </li> <li id="GUID-21CAE2E3-1E9B-54E1-81CB-09F674B37A36"><p>Add region of interest specification and control. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Overview</xref> of Camera Framework </p> <p>The <xref href="GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9.dita">Viewfinder</xref> Tutorial </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3690B530-BFFC-554E-9692-3D7C4C0BC803.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3690B530-BFFC-554E-9692-3D7C4C0BC803"><title>Templated stream operators</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>There are two templated stream operators, <codeph>operator&lt;&lt;</codeph> and <codeph>operator&gt;&gt;</codeph> that can be used to externalise and internalise data of all types. They use a syntax that is familiar to users of C++ iostreams, or Java streams.</p> <p> An object can be externalised to a stream, using a write stream:</p> <codeblock id="GUID-825246E2-9EFF-5D34-9B89-62B0AE8419E8" xml:space="preserve">writeStream &lt;&lt; object;</codeblock> <p>and later, assuming the operation starts from the appropriate place on the stream, the data can be internalised again, using a read stream:</p> <codeblock id="GUID-4D1E6CC5-06D1-5AA9-99A0-DDAC3793DEEA" xml:space="preserve">readStream &gt;&gt; object;</codeblock> <p>The implementation of the operators depends on the type of object on which they are called.</p> <section><title>Implementation for a class defining ExternalizeL() &amp; InternalizeL()</title> <p>For a class that defines and implements the <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph> functions, the Store framework:</p> <ul><li id="GUID-7000A711-4C8F-5522-9981-6975FD563D6B"><p>implements <codeph>operator&lt;&lt;</codeph> by calling the <codeph>ExternalizeL()</codeph> member function of that class.</p> </li> <li id="GUID-D62B7DE5-7179-56AB-A7BC-221459CA7E77"><p>implements <codeph>operator&gt;&gt;</codeph> by calling the <codeph>InternalizeL()</codeph> member function of that class.</p> </li> </ul> </section> <section><title>Implementation for standard types and classes</title> <p>The Store framework provides the necessary implementation for the operators to externalise and internalise the following:</p> <ul><li id="GUID-7FC174ED-C934-5AEA-9149-ED8CB7A9B4C4"><p>The basic types: <codeph>TInt8</codeph>, <codeph>TInt16</codeph>, <codeph>TInt32</codeph>, <codeph>TInt64</codeph>, <codeph>TUint8</codeph>, <codeph>TUint16</codeph>, <codeph>TUint32</codeph>, <codeph>TReal32</codeph> and <codeph>TReal64</codeph>.</p> </li> <li id="GUID-E03896E9-A375-55ED-A4A4-2BD9D39DACE2"><p>The graphics API classes: <codeph>TPoint</codeph>, <codeph>TSize</codeph> and <codeph>TRect</codeph>.</p> </li> <li id="GUID-2ABB347E-A8FD-5D7B-8D83-D15A489DA2A1"><p>The UID Manipulation API class: <codeph>TUid</codeph>.</p> </li> <li id="GUID-F49A0B41-09AB-5802-BECD-E4C855DAF809"><p>The Dynamic Buffers API classes: <codeph>CBufFlat</codeph> and <codeph>CBufSeg</codeph>.</p> </li> </ul> </section> <section><title>Implementation for non-class types</title> <p>For non-class types, for example enumerators, a <i>specialized</i> implementation of the operators must be defined and implemented for that specific non-class type. The definition of the operators must conform to the templated definitions.</p> <p>For example, for a class <codeph>TSimple</codeph> that contains an enumeration of type <codeph>TXxx</codeph> as a data member:</p> <codeblock id="GUID-5B40D0D2-DB8F-57BE-A6F4-C259BDC1190D" xml:space="preserve">    enum  TXxx {EX1,EX2,EX3};</codeblock> <codeblock id="GUID-F6F46E9F-4A96-51C9-B32C-99ACD1303F16" xml:space="preserve">    class TSimple
+          {
+    public :
+          void ExternalizeL(RWriteStream&amp; aStream) const;
+          void InternalizeL(RReadStream&amp; aStream);
+    public :
+          TXxx     iTheEnum;
+          ...
+          TUint    iUintValue;
+          ...
+          };</codeblock> <p>The <codeph>iTheEnum</codeph> data member is externalised using <codeph>operator&lt;&lt;</codeph> and internalised using <codeph>operator&gt;&gt;</codeph>:</p> <codeblock id="GUID-0B46A456-336B-5D97-AEF9-49B1043D9C4A" xml:space="preserve">void TSimple::ExternalizeL(RWriteStream&amp; aStream) const
+          {
+          aStream &lt;&lt; iTheEnum;
+          ...
+          }</codeblock> <codeblock id="GUID-5F1DC34C-9889-5111-AD53-DB58FE31D1B3" xml:space="preserve">void TSimple::InternalizeL(RReadStream&amp; aStream)
+          {
+          aStream &gt;&gt; iTheEnum;
+          ...
+          }</codeblock> <p>As <codeph>TXxx</codeph> is a non-class type, the operators are implemented:</p> <codeblock id="GUID-4A3A0ACC-D6AB-5438-9D73-687DC24F1CFE" xml:space="preserve">RWriteStream&amp; operator&lt;&lt;(RWriteStream&amp; aStream, const TXxx&amp; anXxx)
+          {
+          aStream.WriteInt8L(anXxx);
+          return aStream;
+          }</codeblock> <codeblock id="GUID-C1CE1913-1753-59C0-A192-8D79AE369ACD" xml:space="preserve">RReadStream&amp;  operator&gt;&gt;(RReadStream&amp;  aStream, TXxx&amp; anXxx)
+          {
+          anXxx = TXxx(aStream.ReadInt8L());
+          return aStream;
+          }</codeblock> <p>The enumerator value is written to the stream using <codeph>RWriteStream::WriteInt8L()</codeph>. Implicit here is the assumption that the enumeration can be represented by just 8 bits.</p> </section> <section><title>Implementation for a class without ExternalizeL() &amp; InternalizeL()</title> <p>The operators may be used on class types that do not define and implement <codeph>InternalizeL()</codeph> and <codeph>ExternalizeL()</codeph> functions. This is done by defining and implementing some extra global functions.</p> <p>In practice, it is much simpler to define and implement <codeph>InternlizeL()</codeph> and <codeph>ExternalizeL()</codeph> for a class, and all new classes should include these functions. However, there may be rare situations, for example, when porting classes, where it may be undesirable to define them.</p> <p>To support the use of the operators for such a class, for example, for the class <codeph>TNonStore</codeph> defined as:</p> <codeblock id="GUID-6ACB011D-36B4-5BDF-8866-9B3C8E33A0B4" xml:space="preserve">    class TNonStore
+          {
+    public :
+          void  SetBuffer(const TDesC&amp; aData);
+          TPtrC GetBuffer() const;
+    private :
+          TBuf&lt;32&gt; iBuffer;
+    public :
+          TInt     iIntValue;
+          TUint    iUintValue;
+          TReal    iRealValue;
+          };</codeblock> <ul><li id="GUID-BED64035-9CE4-5EEC-93FB-4D71A9E94F99"><p><i>implement</i> the following <codeph>Externalization()</codeph> and <codeph>Internalization()</codeph> <i>global</i> functions:</p> <codeblock id="GUID-417BE16B-9A96-5A74-BDC0-8BD36226DD55" xml:space="preserve">inline Externalize::Function Externalization(const TNonstore*)
+          {return Externalize::Function();}</codeblock> <codeblock id="GUID-B087C930-27F5-5A0A-BC77-C3AA41539959" xml:space="preserve">inline Internalize::Function Internalization(TNonstore*)
+          {return Internalize::Function();}</codeblock> </li> <li id="GUID-B7ADAB29-0E0A-50F1-AB60-907F142699F5"><p><i>declare</i> the following <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph>  <i>global</i> functions:</p> <codeblock id="GUID-A28A8120-0D38-5A56-820A-41527F260523" xml:space="preserve">void ExternalizeL(const TNonstore&amp; aClass,RWriteStream&amp; aStream);</codeblock> <codeblock id="GUID-42046A8B-0DFD-540E-913E-F3D603D327D6" xml:space="preserve">void InternalizeL(TNonstore&amp; aClass,RReadStream&amp; aStream);</codeblock> </li> <li id="GUID-D34FEE7D-37C1-54D0-B9FB-0D9F86F09115"><p><i>implement</i> the <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph>  <i>global</i> functions to implement the streaming of <codeph>TNonstore</codeph>'s components. For this example class:</p> <codeblock id="GUID-A6D4AED2-6EA5-5345-B744-A79019470EF6" xml:space="preserve">    void ExternalizeL(const TNonStore&amp; aClass,RWriteStream&amp; aStream)
+          {
+          aStream.WriteInt32L(aClass.iIntValue);
+          aStream.WriteUint32L(aClass.iUintValue);
+          aStream.WriteReal64L(aClass.iRealValue);
+          aStream &lt;&lt; aClass.GetBuffer();
+          }
+
+    void InternalizeL(TNonStore&amp; aClass,RReadStream&amp; aStream)
+          {
+          aClass.iIntValue  = aStream.ReadInt32L();
+          aClass.iUintValue = aStream.ReadUint32L();
+          aClass.iRealValue = aStream.ReadReal64L();
+          TBuf&lt;32&gt; temp;
+          aStream &gt;&gt; temp;
+          aClass.SetBuffer(temp);
+          }</codeblock> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E"><title>library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>library</codeph>  <varname>filename-list</varname> </p> <p>Use the <codeph>library</codeph> statement to specify import libraries. </p> <p>The <codeph>library</codeph> statement may specify any number of files, and there may be many <codeph>library</codeph> statements. Specify the entire filename, e.g. <filepath>euser.lib</filepath> or <filepath>euser.dso</filepath> for ARMv5 target builds. </p> <p> <b>Note:</b> When you are building for Symbian OS v9.4 and beyond, you may change the library file extension from <filepath>.lib</filepath> to <filepath>.dso</filepath> in the MMP file. The ABIv2 toolchain will still allow you to link for ARM builds. However, it fails to link when you build for WINSCW target. Therefore, to make it work on both, the ARM and WINSCW build targets, it is recommended that the library file names with <filepath>.lib</filepath> extension be used. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36AF783B-A56A-5C16-A055-9075ED4396C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-36AF783B-A56A-5C16-A055-9075ED4396C5" xml:lang="en"><title>Serial Comms Server Plugins</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the plugins to the Serial Communications Server that are supplied with Communications Framework. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36BD6059-6547-5754-8BE0-F8051A838C14.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-36BD6059-6547-5754-8BE0-F8051A838C14"><title>Using Time-Nudge-Capture Drive Mode </title><shortdesc>This topic describes how to capture an image using Time-Nudge-Capture drive mode in the Ecam API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-B36A21C3-041E-5DBE-A019-705F64A9DCFA"><p>Before you start you should understand the following topics: </p> <ul><li id="GUID-618221F4-A6E6-5F4E-97F7-8528F010887E"><p><xref href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita">Capturing Image</xref>. </p> </li> <li id="GUID-C875638C-B10A-511A-B7DF-8BB6ED543B0E"><p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Advanced Camera Settings Overview</xref>. </p> </li> </ul> </prereq> <context><p>The <codeph>EDriveModeTimeNudgeCapture</codeph> mode allows you to specify the amount of images to be captured both before and after the capture button key press. The numbers of pre- or post-capture images to be captured are set by the <codeph>TDriveModeDependentAttributes</codeph> values, with the total number of images being calculated as follows: </p> <p> <codeph>Total number of captured images = iParam1 + 1 + iParam2 </codeph> where <codeph>iParam1</codeph> and <codeph>iParam2</codeph> represent pre and post capture images respectively, and 1 represents the present image. </p> </context> <steps id="GUID-C600E75D-1C96-5D04-8F72-9EC4DCD406C6"><step id="GUID-10359A66-1222-5C8A-87E6-7E7E1CAD8847"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-C5A323D2-322D-3784-9546-A066B50C4DE1"><apiname>CCamera::New2L(MCameraObserver2
+                &amp;,TInt,TInt)</apiname></xref> to create an instance of <codeph>CCamera</codeph>. </info> </step> <step id="GUID-7AAE2DB9-0A64-55E6-814F-B6204F19BCF1"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58"><apiname>CCamera::CCameraPreImageCaptureControl</apiname></xref> to create an image capture object. </info> </step> <step id="GUID-7686E078-40F5-56E2-B35F-09CC248994AD"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-6446E75C-134A-311D-8724-71F0C962BABB"><apiname>CCamera::PrepareImageCapture(const
+                TPrepareImageParameter&amp;, MCaptureImageObserver&amp;)</apiname></xref> to prepare for capturing the image. <codeph>TPrepareImageParameter</codeph> uses <codeph>TDriveModeDependentAttributes</codeph> to set the number of images before and after the camera capture key press event. The <codeph>iDriveMode</codeph> value in <codeph>TPrepareImageParameter</codeph> should be replaced into the <codeph>EDriveModeTimeNudgeCapture</codeph> value, to support the time-nudge-capture drive mode. </info> <info>If an <codeph>aErrorCode</codeph> occurs while preparing an image, you have to call <xref href="GUID-5B7C6507-040F-3825-9037-7A23A25B26A8.dita#GUID-5B7C6507-040F-3825-9037-7A23A25B26A8/GUID-81907BC4-585A-3199-8210-1E57837CADBD"><apiname>CCamera::PrepareImageComplete(CCamera::CCameraImageCapture*,
+                TInt)</apiname></xref>. </info> <info>Note: The <codeph>PrepareImageComplete()</codeph> callback is deferred until the implementation is ready with the pre-image data saved in the buffer so that you can press the capture key at any time. Meanwhile the implementation continues saving the latest pre-capture images until the <codeph>CaptureImage()</codeph> function is called. </info> </step> <step id="GUID-016FF403-E087-53CA-9EC7-223496A7AE60"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-2BE39D44-2E72-3756-B0DF-9EDEDCEF2FC2"><apiname>CCamera::CaptureImage(CCameraCapture*)</apiname></xref> to capture an image. </info> <info>Note: You can call the <codeph>CaptureImage()</codeph> function to capture the current image exposed to the sensor plus the required number of post-image capture images. </info> </step> <step id="GUID-912DC8A8-51F5-5912-9474-1CE28C51715D"><cmd/><info>Call the <xref href="GUID-FB8D88AD-5F05-363B-94EF-70E3E2E7F386.dita#GUID-FB8D88AD-5F05-363B-94EF-70E3E2E7F386/GUID-F8E63880-7E40-37B1-BDDD-A546FF9A1595"><apiname>MCaptureImageObserver::IndividualImageControlHandle(CCamera::CCameraImageCapture&amp;,
+                TPostCaptureControlId)</apiname></xref> function for each captured image to pass the individual id of each image to the client. </info> </step> <step id="GUID-38DBA9EA-0267-5C31-8D82-E81111636198"><cmd/><info>Call <xref href="GUID-1F521E2D-420C-35AB-865F-29B85AABDABC.dita#GUID-1F521E2D-420C-35AB-865F-29B85AABDABC/GUID-C47D6991-D2BB-382D-B8E1-D4583F9761BB"><apiname>MCaptureImageObserver::ImageCaptureComplete(CCamera::CCameraImageCapture&amp;,
+                TInt) and
+                [a11]CCamera::HandleEvent(KUidECamEventReadyForNextCapture)</apiname></xref> to notify the client that the current capture operation has finished. </info> <info>Note: This must only occur once the implementation has saved another set of pre-image capture images. This is so that the implementation is ready to receive further <codeph>CaptureImage()</codeph> calls. </info> </step> <step id="GUID-94BF1548-C4B1-5BBE-AB08-E0A7521BF0CF"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-3EC050AE-3512-3477-9B89-C98F66234D9F"><apiname>CCamera::CCameraPostImageCaptureControl(TUid,
+                TPostCaptureControlUid)</apiname></xref> to control the post image capture after capturing the desired image. </info> </step> <step id="GUID-CCD9A5F2-0447-5154-ACC5-950CC0EC2512"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-53D971FF-6ECE-3C7D-ABF7-E318D500C5D7"><apiname>CCamera::HandleEvent(KUidECamEventReadyForNextPrepare)</apiname></xref> function when you have deleted the current <codeph>CCameraImageCapture</codeph> object. </info> <info>Note: In this drive mode, only one instance of <codeph>CCameraImageCapture</codeph> can be created at any one time, i.e. <codeph>PrepareImageCapture()</codeph> can only be called once. In order to successfully call <codeph>PrepareImageCapture()</codeph> again and create a new <codeph>CCameraImageCapture</codeph> object, clients must first destroy the previous one. Therefore, the implementation should only issue this callback once the client has deleted the object. </info> </step> </steps> </taskbody><related-links><link href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita"><linktext> Controlling Pre-Image Capture</linktext> </link> <link href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita"><linktext> Controlling Still-Image
+                Capture</linktext> </link> <link href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita"><linktext> Controlling Captured Image</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224"><title> Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides an overview of the Camera Framework. </p> <section><title>Purpose</title> <p>The ECam component supplies a header file (<filepath>.h</filepath>) and library definition files (<filepath>.def</filepath>). These specify the API and binary interfaces that device creators can implement. They provide an interface for cross-platform, compatible camera clients to access the camera on any given device. The Camera Framework supports any concrete ECam implementation only as a ECom plug-in. The ROM plug-in with the highest version number is selected at instantiation phase. The Symbian version of ECam is a stub for easy replacement by an alternate implementation. </p> </section> <section><title>Required background</title> <p>ECam is a component of the Multimedia subsystem. </p> </section> <section><title>Architectural relationships</title> <p>Clients have specific priorities and may pre-empt others in their interactions with the camera. When a camera client needs to share the camera with another client, it creates a handle to the camera and passes this handle to the component. Clients that share with each other are called collaborative clients. </p> <p>Platform security requires that applications have the <codeph>UserEnvironment</codeph> capability to create a Camera object. Clients with the <codeph>MultimediaDD</codeph> capability are given a higher priority. </p> <p> <b>Note</b>: The process by which a client passes a handle to another client is beyond the scope of this Camera Framework guide. </p> <p>Application developers and device creators implement the ECam API for the camera hardware on their phone. All cameras are ECom plug-ins sub-classed from the <xref href="GUID-487CF3A9-6B4B-3140-8A09-70DBEC1B15E2.dita"><apiname>CCameraplugin</apiname></xref> class. </p> </section> <section><title>API summary</title> <p>The Camera Framework includes the following APIs. </p> <p><b>ECam APIs </b> </p> <ul><li id="GUID-A35FED19-B5AE-5134-8EB6-A00F0B7A53C9"><p>Camera </p> <p>This provides functionality to control a digital camera and to request and receive specific image data from it. </p> <p>See also <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita#GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D/GUID-1AC509C3-E1D9-5DB4-9C09-90E0DCE576CB">Key Onboard ECam API Classes</xref>  </p> </li> <li id="GUID-5327CE4E-6BA6-5602-8D17-0ADFDFBEA5DA"><p>Advanced Settings </p> <p>This provides domain specific getters and setters for well known camera hardware settings. This is used to query the camera for the list of supported and currently active hardware settings. For a specific setting, clients can query the camera for the list of supported values. </p> </li> <li id="GUID-646EBF1D-FF4F-5C2E-8D87-DD1CE9072A00"><p>Camera Viewfinder </p> <p>This provides the support for both direct and client viewfinder. It also provides information regarding the current state of that direct viewfinder. The different possible states are active, paused and inactive. </p> <p>See also <xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita#GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D/GUID-FD016694-527F-5009-81FC-B5D8AD1A3A05">Key Viewfinder Classes</xref>  </p> <p> <b>Note</b>: The direct viewfinder is applicable only for viewfinders that use Ccamera viewfinder methods. </p> </li> <li id="GUID-F63B7492-08A2-5129-B89B-06CCC459EF04"><p>Camera Histogram </p> <p>This gets the histogram data in a specified format for an image (for example, luminance based histogram, average colour value histogram and so on). </p> </li> <li id="GUID-EC209FE8-B8B2-59E0-80DA-13801366F03B"><p>Camera Overlay </p> <p>This overlays an image onto the viewfinder, snapshots, still images and video. A client can create multiple overlays, each one with different properties. </p> </li> <li id="GUID-05130CA9-EFCD-59EA-871E-923E89122234"><p>Camera plug-in Support </p> <p>All cameras are ECom plug-ins sub-classed from <xref href="GUID-6C1CF515-15D2-3E7D-8826-CD944352BD91.dita"><apiname>Ccameraplugin</apiname></xref> class and register support for the interface <xref href="GUID-BFD9F9DE-6FFD-342C-BCDD-F30F1FCF39BB.dita"><apiname>KuidOnboardCameraplugin</apiname></xref> in their resource file. Symbian introduced plug-in support for ECam from v9.1 onwards. Before that, device creators were supposed to re-implement ECam, which was effectively reference code. </p> </li> <li id="GUID-EB2D5447-2D4F-5413-B0A8-17AA86982B0A"><p>Camera Snap Shot </p> <p>Clients can use snapshots to show captured images on the display almost instantly (while in the background the image may be processed by using some compression algorithm before storing the data). The client can specify the properties of the snapshot, such as size, background colour and position to be used if the snapshot has been scaled and so on. Snapshot object can be created specifically for still images and video APIs. </p> </li> </ul> </section> <section><title>Typical uses</title> <p><b>Camera Component Users </b> </p> <ul><li id="GUID-D2AD15FD-E2DE-5137-BE77-650CCD5DE9A6"><p>Camera plug-ins </p> </li> <li id="GUID-77873CF0-7319-59D6-9EA6-0B922E7E3A3F"><p>Multimedia Framework plug-ins </p> </li> </ul> <p><b>Camera Component tasks</b> </p> <p>The camera component is used for the following: </p> <ul><li id="GUID-4A7DF7A6-4E35-53DB-9F56-A5D0E2685FBA"><p>Onboard Camera </p> </li> <li id="GUID-DF4050DA-AEC1-5C91-9466-FC685B21EBCC"><p>Camera plug-in Support </p> </li> <li id="GUID-4D9B817A-666C-5A15-B285-5B292C209C5A"><p>Advanced Settings </p> </li> <li id="GUID-E187EEC6-C048-5AB0-944B-BCBFC2CFD986"><p>Camera plug-in </p> </li> <li id="GUID-DD4EB3CF-EEAC-5208-989D-1B9A94320CCF"><p>Histogram </p> </li> <li id="GUID-4F24A091-31CE-592E-9447-A5424FA814C5"><p>Overlay </p> </li> <li id="GUID-7F01D2E4-49E3-53C9-AE0A-D40BB6C8304E"><p>Snapshot </p> </li> <li id="GUID-EBD1D801-E9FE-561D-A656-AE4095B878E4"><p>Viewfinder </p> </li> </ul> <p><b> Onboard Camera </b> </p> <p>The Onboard Camera provides functionality to control a digital camera and to request and receive specific image data from it. </p> <p><b> Advanced Settings </b> </p> <p>The Advanced Settings gets or sets individual setting value as well as retrieve their current ranges. </p> <p><b> Camera plug-in</b> </p> <p>This API, an ECom plug-in, is introduced as an alternative to static linking. This allows the partners to replace the camera implementation more easily. </p> <p><b> Histogram</b> </p> <p>The Histogram provides the functionality needed to work with histogram data in a specified format for an image. </p> <p><b> Overlay</b> </p> <p>The Overlay is used to overlay an image onto the viewfinder, snapshots, still images and video. </p> <p><b> Snapshot</b> </p> <p>The Snapshot allows the client to request snapshot data in a specified image format for both still images and video. </p> <p><b> Viewfinder</b> </p> <p>The Viewfinder enables to pause and resume the direct viewfinder which is currently active and has been started using Ccamera methods. </p> </section> <section><title>See also</title> <p><xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard Camera Overview</xref>  </p> <p><xref href="GUID-F25862A3-51E5-581A-9CC9-964791781E69.dita">Camera Plug-in Support Overview</xref>  </p> <p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Advanced Camera Settings Overview</xref>  </p> <p><xref href="GUID-3074D4E5-25EA-5DA0-877D-6E3086DCBDB5.dita">Histogram Overview</xref>  </p> <p><xref href="GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E.dita">Overlay API Overview</xref>  </p> <p><xref href="GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita">Snapshot API Overview</xref>  </p> <p><xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita">Viewfinder API Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36C5768D-896B-521C-B4D2-C41C0AD85F3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-36C5768D-896B-521C-B4D2-C41C0AD85F3C" xml:lang="en"><title>Modifying
+the SNAP Preference</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to modify the existing SNAP preference used
+by an email account. </p>
+<section><title>Procedure</title> <ol id="GUID-CA540B59-21B2-5D13-AEB3-891B7889D995">
+<li id="GUID-6D750C05-0719-5CAC-A704-1533005443F3"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-427EF435-4D52-5903-AD67-DC8412EB6618"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-DB573D33-DFA2-555B-A89A-2C345BB2FF06"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class. </p> <p>Where, &lt;protocol&gt;
+is either Imap4, Pop3, or Smtp. </p> </li>
+<li id="GUID-54E23E8D-830B-536B-8494-93A9B4AEBF59"><p>Populate the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+and the <codeph>CIm&lt;protocol&gt;Settings</codeph> class from central repository
+(CenRep) using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Load&lt;protocol&gt;SettingsL</codeph> function. </p> </li>
+<li id="GUID-10B6F774-B53C-5AC3-9421-D3452712568D"><p>Use the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita#GUID-9CAB9BE5-7233-3A01-A906-756177CF4460/GUID-39CEA074-06E2-336A-9373-5060019BDCE2"><apiname>CImIAPPreferences::SetSnap()</apiname></xref> function
+to specify the SNAP to be used for connections. </p> </li>
+<li id="GUID-CEEC768C-40E1-5906-96CB-B951D41103E7"><p>Store the updated settings
+classes to CenRep using the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Save&lt;protocol&gt;SettingsL</codeph> function. </p> </li>
+</ol> <note> All instances of &lt;protocol&gt; in the preceding
+steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>, or <codeph>Smtp</codeph>.</note></section>
+<section><title>See also</title> <p> <xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e208547_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418"><title>Contact Items Management</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Contact Item is an element in a Contact Database. Contact Items can be added, read, edited and removed from the database. As the diagram below shows, a Contact Item can be: </p> <ul><li id="GUID-39BF4108-CFC9-54CD-BC88-81C41984601E"><p>a contact card - either generic cards (<xref href="GUID-CCE5DB7C-AD68-3F8C-8720-14CD1FC3D164.dita"><apiname>CContactCard</apiname></xref>) or the device owner's card (<xref href="GUID-942BB679-256F-3DD3-A027-6A40E1DE9C40.dita"><apiname>CContactOwnCard</apiname></xref>) </p> </li> <li id="GUID-06168476-8C2F-5944-A5FD-B37BB2ABB032"><p>a template card (<xref href="GUID-D144F6EE-B50D-3EC8-BAD7-A0E7590CD512.dita"><apiname>CContactTemplate</apiname></xref>) - a card that sets the initial fields for other Contact Items </p> </li> <li id="GUID-7C15AAFE-A236-5036-9C55-E647B6DF46C6"><p>a collection of Contact Items (<xref href="GUID-98A3BF93-A1EF-32C3-B98C-680A515D9985.dita"><apiname>CContactItemPlusGroup</apiname></xref>) - a group that holds a set of associated Contact Item IDs </p> </li> <li id="GUID-21FAB277-889F-52F7-941C-06F803983319"><p>a contact which maps to the device's ICC (<xref href="GUID-BEC62AFD-2CDA-387D-A290-2221D88FD2B8.dita"><apiname>CContactICCEntry</apiname></xref>) or SIM (<xref href="GUID-CCE5DB7C-AD68-3F8C-8720-14CD1FC3D164.dita"><apiname>CContactCard</apiname></xref>). </p> </li> </ul> <p>Each Contact Item is uniquely identified in the database by a Contact Item ID (<xref href="GUID-B1F75A76-9F02-3D88-B76F-1489319B7108.dita"><apiname>TContactItemId</apiname></xref>). More than one Contact Item ID is referred to using a Contact Item ID array (<xref href="GUID-7CACA76F-00E5-3A69-966E-1D40E64F0E27.dita"><apiname>CContactIdArray</apiname></xref>). </p> <fig id="GUID-10046728-05A3-5A02-B9C0-A3AAF33AD8D5"><title>
+          CONTACT ITEM HIERARCHY 
+        </title> <image href="GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e351531_href.png" placement="inline"/></fig> <p>Contact Items have an access count and attributes ('hidden', for example). The access count is a record of the number of objects referencing a Contact Item. A Contact Item cannot be fully deleted until its access count is zero. </p> <p>Note: Fields in a Contact Item also have attributes. Attribute values specified in the Contact Item override those in the contained fields. </p> <p>Contact Items are accessed through the <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita"><apiname>CContactDatabase</apiname></xref> class. Opening a Contact Item (using <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-05A0BF3B-6F83-300C-A70D-3FEB069A3964"><apiname>CContactDatabase::OpenContactL()</apiname></xref>) locks it so that it cannot be edited by another client. Closing the Contact Item (using <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-0D90CADE-D766-3A39-9928-F4E8936B52FB"><apiname>CContactDatabase::CloseContactL()</apiname></xref>) releases the lock on the item without saving any changes made to it. Committing the Contact Item (using <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-35AD302C-659C-3705-961A-3730F2975B25"><apiname>CContactDatabase::CommitContactL()</apiname></xref>) releases the lock and saves any changes made to it. </p> <section id="GUID-D41E051D-CA35-559C-803B-811008FD4089"><title>Contact Item Fields</title> <p>Each Contact Item contains a number of fields (<xref href="GUID-8ECF9E69-5102-37C6-BF4F-E4C543026304.dita"><apiname>CContactItemFieldSet</apiname></xref>). Each field (<xref href="GUID-6466EF81-CAFC-3098-8E2F-D55AB77F2B99.dita"><apiname>CContactItemField</apiname></xref>) in <xref href="GUID-8ECF9E69-5102-37C6-BF4F-E4C543026304.dita"><apiname>CContactItemFieldSet</apiname></xref> has a content type, (<xref href="GUID-96249829-E053-3DB5-ABEC-77C9C8A0BB69.dita"><apiname>CContentType</apiname></xref>), and a storage type, (<xref href="GUID-35235317-4E31-3ED4-9798-1B2621F89265.dita"><apiname>TStorageType</apiname></xref>) and the field data (<xref href="GUID-429B1D62-189C-3DE1-AABD-C162B0593992.dita"><apiname>CContactTextField</apiname></xref>, <xref href="GUID-C44B4C53-417E-330F-A651-FEB97B3FE75F.dita"><apiname>CContactStoreField</apiname></xref>, <xref href="GUID-ABBBE7AC-F837-3039-B2A3-6A7B4E11F82D.dita"><apiname>CContactAgentField</apiname></xref> or <xref href="GUID-F7BC1DB1-C8AA-371A-B930-1DB9B7360949.dita"><apiname>CContactDateField</apiname></xref>). </p> <p>A content type contains at least one UID, using <xref href="GUID-84023E98-6C2C-31CE-9DDC-15D92650AC23.dita"><apiname>TFieldType</apiname></xref>. A storage type identifies the type of data (text, binary, contact agent ID, date/time) stored in a Contact Item field. As numeric field data is not supported all numbers are stored as text. </p> <p>Each field can also have a label which identifies the field to a user, for example, first name, last name. Fields can have attributes assigned to them such as hidden, disabled, synchronised, read only, user added, template and speed dial. </p> </section> <section id="GUID-C8B3F417-57B3-548B-8247-9171ABAECED9"><title>Contact Groups</title> <p>A Contact Group (<xref href="GUID-F823D586-386F-300B-82D2-8365695BA7A0.dita"><apiname>CContactGroup</apiname></xref> class) is a Contact Item which holds a set of associated Contact Item IDs. The members of the group may be contact cards, own cards, or even other groups. The group has a label which identifies the group such as 'family', or 'colleagues' to users. The type of a Contact Group is <xref href="GUID-7770D130-465B-3360-8BB4-0870F81EC8C9.dita"><apiname>KUidContactGroup</apiname></xref>, as returned by <xref href="GUID-F823D586-386F-300B-82D2-8365695BA7A0.dita#GUID-F823D586-386F-300B-82D2-8365695BA7A0/GUID-BE8C8EBC-4402-3E04-ADD4-7843B65AB8A6"><apiname>CContactGroup::Type()</apiname></xref>. </p> <p>It is possible to construct a group using <xref href="GUID-F823D586-386F-300B-82D2-8365695BA7A0.dita#GUID-F823D586-386F-300B-82D2-8365695BA7A0/GUID-61DCBD98-BF07-3DB0-A02B-603A99C7DA58"><apiname>CContactGroup::CreateContactGroupL()</apiname></xref>. These functions create the group, optionally with a label, add it to the database, and return a pointer to it. To create an association between a card and a group, use <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-38EEDF68-F1F8-3286-8525-24822B75FEBC"><apiname>CContactDatabase::AddContactToGroupL()</apiname></xref>. To remove the association, use <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-981C88EC-2089-3CE0-8DDF-03F228EC75F7"><apiname>CContactDatabase::RemoveContactFromGroupL()</apiname></xref>. To find out which groups a card belongs to, use <xref href="GUID-CCE5DB7C-AD68-3F8C-8720-14CD1FC3D164.dita#GUID-CCE5DB7C-AD68-3F8C-8720-14CD1FC3D164/GUID-C67AAC3C-6925-3CE4-9F4D-C7B955A95A9A"><apiname>CContactCard::GroupsJoinedLC()</apiname></xref> or <xref href="GUID-942BB679-256F-3DD3-A027-6A40E1DE9C40.dita#GUID-942BB679-256F-3DD3-A027-6A40E1DE9C40/GUID-4162EB84-E4D1-387B-B92D-DFD4738C5734"><apiname>CContactOwnCard::GroupsJoinedLC()</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-37057FD5-7ED0-5B18-9C28-39F6816D7627.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-37057FD5-7ED0-5B18-9C28-39F6816D7627" xml:lang="en"><title>Arrays
+within structs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A declaration of a struct member may either be a simple <varname>type-name</varname>  <varname>member-name</varname>,
+or it may be an array of values of identical type.</p>
+<p>Arrays are always indicated by square brackets:</p>
+<codeblock id="GUID-4F6A2882-FDF8-5DBA-A01D-6772D5BDF70F" xml:space="preserve">STRUCT HAS_ARRAY
+ {
+ STRUCT elements[];
+ }</codeblock>
+<p>In the example above, the <codeph>HAS_ARRAY</codeph> struct has one array
+member, <codeph>elements</codeph>. Each member of <codeph>elements</codeph> is
+of <codeph>STRUCT</codeph> type.</p>
+<p><b>Array size</b> </p>
+<p>If you specify the array size, inside the square brackets, then the generated
+resource will contain no count of the number of elements. So this resource:</p>
+<codeblock id="GUID-F50D2117-7554-5D80-ABF1-2393E65B54CB" xml:space="preserve">STRUCT FIXED_ARRAY
+ {
+ WORD elements[3];
+ }
+
+RESOURCE FIXED_ARRAY example1
+ {
+ elements={9,8,7};
+ }</codeblock>
+<p>will generate the output</p>
+<codeblock id="GUID-880DF2CB-D042-59CD-AF28-89D971CC6466" xml:space="preserve">0x09 0x00 0x08 0x00 0x07 0x00</codeblock>
+<p>For variable length arrays, a count of the number of elements precedes
+the resource. The default for this is a word, but by prefixing the struct
+definition with <codeph>LEN BYTE</codeph> it will be a byte count. So the
+following resource:</p>
+<codeblock id="GUID-FEAD195C-8C3F-529F-AE2A-AC42F2ACA66F" xml:space="preserve">STRUCT VAR_ARRAY
+ {
+ WORD elements [];
+ }
+
+RESOURCE VAR_ARRAY example2
+ {
+ elements={9,8,7};
+ }</codeblock>
+<p>will generate the output</p>
+<codeblock id="GUID-D21EA8C8-876D-5DD8-9F0C-256288A2B6B1" xml:space="preserve">0x03 0x00 0x09 0x00 0x08 0x00 0x07 0x00 </codeblock>
+<p>whereas this resource:</p>
+<codeblock id="GUID-14A52C15-5D28-5716-AED4-22F02AF23AAE" xml:space="preserve">STRUCT VAR_ARRAY2
+ {
+ LEN BYTE WORD elements[];
+ }
+
+RESOURCE VAR_ARRAY2 example3
+ {
+ elements={9,8,7};
+ }</codeblock>
+<p>will generate this output</p>
+<codeblock id="GUID-3909C1FE-84B3-50D1-9519-417B84DD93B0" xml:space="preserve">0x03 0x09 0x00 0x08 0x00 0x07 0x00</codeblock>
+<p>The compiler allows you to prefix <codeph>LEN BYTE</codeph> or <codeph>LEN
+WORD</codeph> even for fixed length arrays, but it has no effect. Fixed length
+arrays do not generate an element count.</p>
+</conbody><related-links>
+<link href="GUID-0142B290-DA6C-5574-83D7-7555D804D9B5.dita"><linktext>How to initialise
+array RESOURCE members</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-370F4A51-EC67-4B6C-B14A-5C640A58688B_d0e38551_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3715E8EE-FF0A-4344-90F1-1609D54C166B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-3715E8EE-FF0A-4344-90F1-1609D54C166B" xml:lang="en"><title>Blinking
+lights</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>LightBlinkL()</codeph> method call makes the
+specified target light to blink. Multiple light targets can be specified by
+using bitwise-or.</p><p>The following code snippet demonstrates how to make
+lights blink for infinite duration with default intensity for multiple targets:</p><codeblock xml:space="preserve">iLight-&gt;LightBlinkL( CHWRMLight::EPrimaryDisplay | CHWRMLight::EPrimaryKeyboard );</codeblock><p>The following code snippet demonstrates how to make lights blink for the
+specified duration with default intensity for one target.</p><codeblock xml:space="preserve">// aDuration = 5000 milliseconds
+light-&gt;LightOnL( CHWRMLight::ESecondaryDisplay, 5000 );</codeblock><p>After
+the duration expires, if there has not been a previous infinite time duration
+call in this session, the light state for target is changed to whatever state
+was caused by the last infinite time duration call, or default state determined
+by inactivity timer.</p><p>The following code snippet demonstrates how to
+switch ON lights for the specified duration, with specified intensity for
+one target (On-cycle and off-cycle times of the blinking can also be controlled):</p><codeblock xml:space="preserve">// aDuration = 5000 milliseconds
+// aOnDuration = 500 milliseconds
+// aOffDuration = 500 milliseconds
+// aIntensity = 30, intensity can be between KHWRMLightMinIntensity and KHWRMLightMaxIntensity, inclusive.
+light-&gt;LightOnL( CHWRMLight::ESecondaryDisplay, 5000, 500, 500, 30 );</codeblock><p>For
+device default cycle duration, use the <codeph>KHWRMDefaultCycleTime</codeph> value.
+If either <codeph>aOnDuration</codeph> or <codeph>aOffDuration</codeph> is <codeph>KHWRMDefaultCycleTime</codeph>,
+both must be <codeph>KHWRMDefaultCycleTime</codeph>.</p><p><b>NOTE</b>: Some
+devices may not support variable blink cycle times. In such scenarios, default
+value is substituted. All devices may not support user-defined intensity,
+during which the device behaves in its default state.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3729C075-4958-4874-9DD7-02A68D17E043.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3729C075-4958-4874-9DD7-02A68D17E043" xml:lang="en"><title>Other
+window server events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> When an event occurs under the window server, the framework calls the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleWsEventL%28const%20TWsEvent%20%26amp%3b%2cCCoeControl%20%2a%29" format="application/java-archive"><parmname>HandleWsEventL()</parmname></xref> function of the UI controller
+object. To implement an event-handling code for a certain event, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleWsEventL%28const%20TWsEvent%20%26amp%3b%2cCCoeControl%20%2a%29" format="application/java-archive"><parmname>HandleWsEventL()</parmname></xref> must be overridden. In
+order to ensure that the system works correctly, after catching an event in
+the overridden <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleWsEventL%28const%20TWsEvent%20%26amp%3b%2cCCoeControl%20%2a%29" format="application/java-archive"><parmname>HandleWsEventL()</parmname></xref> function the base class
+implementation should be called. The event type is identified by <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/W32STD.HGlobals.html#%3a%3aTEventCode" format="application/java-archive"><parmname>TEventCode</parmname></xref>, which is a data member of the
+window server event, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TWsEventClass.html#_top%20title=" format="application/java-archive"><parmname>TWsEvent</parmname></xref>. </p>
+<codeblock id="GUID-C3C94D39-9BDF-4F89-9DEE-B1078A2AD04E" xml:space="preserve">void HandleWsEventL( const TWsEvent&amp; aEvent, CCoeControl* aDestination )
+</codeblock>
+<p> All the event types are defined in the <parmname>w32std.h</parmname> header.</p>
+<p>Note that some event types are not implemented in the system or are
+not available for third-party applications. All event codes from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/W32STD.HGlobals.html#%3a%3aTEventCode" format="application/java-archive"><parmname>TEventCode:EEventUser</parmname></xref> upwards can be used
+for the application-specific events (discussed in <xref href="GUID-95DD1440-01C9-4997-8DD4-FFD33D7DEAFF.dita">Application-specific
+events</xref>).
+The following is a code example of the usage of a window server event:</p>
+<codeblock id="GUID-CF247807-C0BF-4C84-B8DF-8C636F895043" xml:space="preserve">void CMyAppUi::HandleWsEventL( const TWsEvent&amp; aEvent,
+                               CCoeControl* aDestination )
+    {
+    // Call the base class implementation
+    CEikAppUi::HandleWsEventL( aEvent, aDestination );
+    if( aEvent.Type() == EEventKeyDown )
+        {
+        // Do something
+        iEikonEnv-&gt;InfoMsg( _L( “Key was pressed” ) );
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758-master.png has changed
Binary file Symbian3/SDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e5472_href.png has changed
Binary file Symbian3/SDK/Source/GUID-377C3A77-6C89-4C44-A33A-852CFB7ADE58.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-377F7C19-C799-45CE-9ADA-4BB884B422BA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-377F7C19-C799-45CE-9ADA-4BB884B422BA" xml:lang="en"><title>Browsing and downloading</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The term <i>browsing</i> refers to the ability to browse, for example,
+Web or WAP pages in order to access content. Browser application services
+allow you to create plug-ins for the browser that are registered and available
+when the browser is open. In addition, you can open the browser inside your
+application and handle bookmarks.</p>
+<p>The term <i>downloading</i> refers to the ability of the mobile device
+users to download mobile content, such as ring tones, wallpapers, or games
+to devices from Web sites, for example. The term is also related to the concept
+of <xref href="GUID-5F38F219-B22D-42E6-973A-B4DBBC5984F8.dita">digital rights management
+(DRM)</xref> and reliable download technologies.</p>
+<p>This section comprises:</p>
+<ul>
+<li><p><xref href="GUID-D730D796-F640-4100-BD41-32515EF086F1.dita">Browsing</xref></p>
+</li>
+<li><p><xref href="GUID-9D6E0EB4-CBF8-48BC-A76F-FE6366D4D96E.dita">Downloading</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3786D8E6-17A9-52E4-A8DF-CFCDC3039854.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3786D8E6-17A9-52E4-A8DF-CFCDC3039854" xml:lang="en"><title>Inter Process Communication</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e279563_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-37934768-50D0-52A8-B594-B47D5E27722B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-37934768-50D0-52A8-B594-B47D5E27722B" xml:lang="en"><title>Video Recorder Utility Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to use the Video Recorder Utility. </p> </conbody><related-links><link href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita"><linktext>Video Client Library
+  Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3799F0DA-B99C-55BB-B44F-63B971DF1865.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-3799F0DA-B99C-55BB-B44F-63B971DF1865" xml:lang="en"><title>Cleanup
+Strategy Tutorial</title><shortdesc>This tutorial describes the cleanup strategy and provides details
+on alternative cleanup strategies. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before you start, you must: </p> <ul>
+<li id="GUID-18CD0776-EEA9-56AF-9E5F-E5101BB88643"><p> <b>Deafult cleanup
+strategies:</b> These are based on a template-based implementation of the
+strategy design pattern. </p> </li>
+<li id="GUID-598FF730-0C91-51C4-B9AA-16B74137BB6E"><p> <b>Alternative cleanup
+strategies:</b> These can be specified as an optional template parameter of
+the class templates for automatic resource management. </p> </li>
+</ul> </prereq>
+<context><p>Cleanup strategy is based on a template-based implementation of
+the Strategy design pattern. The strategy design pattern is one of the most
+popular, highly recommended design patterns. The vast majority of the competent
+C++ developers are already familiar with the strategy (Policy) design pattern
+and Policy-based design, which should improve the usability of these class
+templates. </p> <p>Each
+resource management class has a default cleanup strategy that is invoked when
+the managing object goes out of scope. It is however possible to define an
+alternative cleanup strategy when constructing the managing object. It is
+also possible to define a custom cleanup strategy using the <xref href="GUID-CE0F22BA-8789-3659-87C4-164EB5862B4C.dita"><apiname>DEFINE_CLEANUP_FUNCTION</apiname></xref> macro. </p> <p> <b>Note:</b> Although
+the examples below use LCleanedupX classes, the method for definfing how the
+object is cleaned up is equally applicable to LManagedX classes. </p> <p>An
+example code snippet is given below: </p> <codeblock id="GUID-DE45C250-C8C5-5210-B53C-D9256F00194B" xml:space="preserve">
+//Class definition of trivial R-Class
+class RSimple
+    {
+public:
+
+    RSimple(){iData = NULL;}
+
+    void Open(TInt aValue)
+        {
+        iData = new(ELeave) TInt(aValue);
+        }
+
+    //Cleanup function – frees resource
+    void Close()
+        {
+        delete iData;
+        iData = NULL;
+        }
+
+    //Cleanup function – frees resource
+    void Free()
+        {
+        delete iData;
+        iData = NULL;
+        }
+
+    //Cleanup function – frees resource
+    void ReleaseData()
+        {
+        delete iData;
+        iData = NULL;
+        }
+
+    //static cleanup function – frees aRSimple resources
+    static void Cleanup(TAny* aRSimple)
+        {
+        static_cast RSimple* (aRSimple)-&gt;Close();
+        }
+private:
+    Tint* iData;
+
+    };
+
+</codeblock> <p>The above RSimple class has three cleanup member functions,
+Close, Free and ReleaseData. </p> <p>Each resource management class has a
+default cleanup strategy that is invoked when the managing object goes out
+of scope. The default cleanup strategy is dependent on the managing type.
+Consider the example code snippet below: </p> <p> <b>Note:</b> Although the
+examples below use LManagedX classes, the method for defining a custom cleanup
+strategy is equally applicable to LCleanedupX classes. </p> <codeblock id="GUID-7D4F639F-3BEA-59CD-BA75-DF1C25175BA3" xml:space="preserve">
+class CTicker : public CBase
+    {
+public:
+    void Tick() { ++iTicks; }
+    void Tock() { ++iTocks; }
+
+    void Zap() { delete this; }
+
+public:
+    TInt iTicks;
+    TInt iTocks;
+    };
+
+
+class CManagedUserSinglePhase : public CBase
+    {
+public:
+    . . .
+
+    ~CManagedUserSinglePhase()
+        {
+        // The iTicker manager will automatically delete the CTicker
+        // The iTimer manager will automatically Close() the RTimer
+        }
+
+    . . .
+private:
+    // We have to use LManagedXxx for fields, not LCleanedupXxx
+    LManagedPtr CTicker iTicker;
+    LManagedHandle RTimer iTimer;
+    };
+</codeblock> <p>The default cleanup strategy for an LManagedPtr is to delete
+the pointer and this is the action taken in the destructor for CManagedUserSinglePhase. </p> <p>Alternate
+cleanup strategies are pre-defined in <filepath>emanaged.h</filepath> file.
+It is also possible to define a custom alternate cleanup strategy that can
+be passed as the second template parameter to the constructor of an LManagedX
+or LCleanedupX object. </p> <p>Although the examples below use LManagedX classes,
+the method for defining an alternate cleanup strategy is equally applicable
+to LCleanedupX classes. </p> <p>The default cleanup strategy is to call <xref href="GUID-91F3C4E0-5687-366D-9D50-D710E763F0CF.dita#GUID-91F3C4E0-5687-366D-9D50-D710E763F0CF/GUID-29E73AC7-D397-3237-ABF9-C93C0AD39543"><apiname>CTicker::Zap()</apiname></xref> function.
+It is possible however to define a custom alternate cleanup strategy as shown
+below: </p> <codeblock id="GUID-5B268C52-2708-50CF-8070-0896C8CE80C0" xml:space="preserve">
+// Defines a custom pointer cleanup policy that calls the Zap member
+template &lt;class T&gt;
+class TTickerZap 
+    {
+public:
+    static void Cleanup(T* aPtr)
+        {
+        // The general template/class scaffolding remains the same
+        // for all custom cleanups, just this cleanup body varies
+        aPtr-&gt;Zap();
+        test.Printf(_L("Zapped CTicker\n"));
+        }
+    };
+</codeblock> </context>
+</taskbody><related-links>
+<link href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita"><linktext>EUser High
+Level Overview</linktext></link>
+<link href="GUID-A18153C0-230C-51FB-9384-A48BB4E42F03.dita"><linktext>Clean-up
+Strategy</linktext></link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e304617_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-37CB6D0C-41F0-5C52-A925-978FAC30D311.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-37CB6D0C-41F0-5C52-A925-978FAC30D311" xml:lang="en"><title>Implementing
+the Client Side</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The animation framework requires implementers to write server side and
+client side code. On the client side, provided by the Window Server Client-Side
+API, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RAnimDll</apiname></xref> should be derived from
+for DLL level functionality, and for each animation an <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RAnim</apiname></xref> class
+should be derived. The client side classes can be thought of as thin layers
+of code that are used to pass information through to the matching server side
+classes, where the detailed logic is implemented. </p>
+<p>Clients must request an animation DLL to be loaded before the animations
+provided by it can be used. This is done using the <codeph>RAnimDll</codeph>. </p>
+<p> <codeph>RAnim</codeph> provides functions for implementing client side
+behavior. Generally, the client side code is concerned with setting up and
+initializing the server side classes which implement the actual animation
+graphics. The mechanisms that allow information to be packaged on the client
+side, passed through the Window Server, and recovered on the server side,
+are described in <xref href="GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C.dita">Passing
+Arguments from Client to Server</xref>. </p>
+<p>Two kinds of command function are provided, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RAnim::Command()</apiname></xref> and <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RAnim::CommandReply()</apiname></xref>. The choice of which one
+to use depends on whether a return value is required and whether the command
+takes effect immediately or can be cached to the Window Server queue. If leaves
+are possible in code within or called from a command function, a return code
+should be tested and errors handled appropriately. </p>
+<p>The <codeph>CommandReply()</codeph> function forces immediate action. In
+general by the time these functions return, Window Server requests have been
+carried out. The background to this behavior is Window Server buffering of
+the requests it receives. In effect the behavior of these commands is to put
+a request to the Window Server queue and then flush the queue to ensure immediate
+action. The <codeph>Command()</codeph> function is buffered by the Window
+Server. Although these functions return immediately, there is no guarantee
+when the Window Server request will actually be carried out. </p>
+</conbody><related-links>
+<link href="GUID-E5CDDA05-CD86-5C44-B9DA-3249D9C14396.dita"><linktext>Client-Side
+Buffer</linktext></link>
+<link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e195991_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-37D7019C-E3EF-5841-8691-5A865A2B5FD2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-37D7019C-E3EF-5841-8691-5A865A2B5FD2" xml:lang="en"><title>Using
+CCirBuffer</title><shortdesc>This document describes how to use CCirBuffer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4C65D06D-9E80-4C52-8106-954E087AEC47"><title>Before adding/removing objects</title> <p>The buffer itself
+is not allocated until the <xref href="GUID-FA17C8AD-BF8C-3FD4-98AE-43AF55A9D318.dita#GUID-FA17C8AD-BF8C-3FD4-98AE-43AF55A9D318/GUID-4658AA47-E3E6-3325-A4DF-FACADFA5BBB2"><apiname>CCirBufBase::SetLengthL()</apiname></xref> member
+function is called. Therefore, the first steps must always be to construct
+the <xref href="GUID-620EC30F-933F-3073-9E5F-CAC9F2BA4623.dita"><apiname>CCirBuffer</apiname></xref> object and then call its <codeph>SetLengthL()</codeph> member
+function.</p> <p>Also note that <codeph>SetLengthL()</codeph> can leave so
+it's useful to call it under a trap harness.</p> <codeblock id="GUID-3B0EF9D8-0616-5894-92E0-D4CC80CCC876" xml:space="preserve">...
+CCirBuffer* cbInt=new CCirBuffer;
+TRAPD(ret,cbInt-&gt;SetLengthL(3));            // max capacity is 3
+                                            // and allocates buffer
+cbInt-&gt;Put(123);     // Can now start adding/removing integer objects
+cbInt-&gt;Put(12);
+cbInt-&gt;Put(1);
+...
+delete cbInt;</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e303838_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6" xml:lang="en"><title>UI
+Control Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4DB4AA3B-1CC9-4829-9146-B07BBDDEBAC5"><title>Architectural relationships</title> <p>The control framework
+provides an abstract middle layer between the low-level windowing functionality,
+provided by the Window Server, and concrete user interface classes provided
+by Uikon and UI variant-specific libraries. </p> <p>Application developers
+use the API directly to create their own controls and indirectly through derived
+classes provided by Uikon and UI variant libraries. </p> <fig id="GUID-DD81BA7E-07D0-53C7-9B42-7BE263CC82D3">
+<title>              Cone architectural relationships            </title>
+<image href="GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e11541_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-9A9F72A2-0CA0-488A-91DE-35FD0A88B6CD"><title>Description</title> <p><b>Controls</b> </p> <p>A control is
+a rectangular area of a window that may respond to user input. Controls have
+a number of properties that determine their behaviour and their relationships
+to other controls and windows. </p> <p>A control is represented by the class <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>. </p> <p>A <b>simple
+control</b> is one which contains no other controls. </p> <p>A <b>container
+control</b> is one which contains one or more controls. A container control
+is also referred to as a <b>compound control</b>. The contained controls may
+themselves be container controls. When a control is contained in a container
+control it is called a <b>component control</b>. A component control is always
+redrawn when its container control is redrawn. </p> <p>The following diagram
+shows simple controls in orange and container controls in grey. </p> <fig id="GUID-771A429A-B61E-5C45-83A9-4B9F76C40FB9">
+<title>                 Simple and compound controls               </title>
+<image href="GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e11590_href.png" placement="inline"/>
+</fig> <p><b>Controls and Windows </b> </p> <p>A window may be considered
+as a transparent layer. Windows are managed by the Window Server and described <xref href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita">elsewhere</xref>. A control
+provides a means of access to a window - it can be drawn onto the window and
+can receive input. </p> <p>Each window has a one-to-one relationship with
+a single control that covers it precisely. This control is referred to as
+a <b>window-owning control</b>. A window-owning control shares the behavior
+of its window, in particular the parent-child window relationships which govern
+the window's position and overlapping behavior. </p> <p>A <b>non-window-owning
+control</b> typically covers only part of a window. It cannot be moved around
+on the screen independently of its window, cannot draw outside its window
+and is always a component control. </p> <p>You might think of a window-owning
+control as a piece of glass and a non-window-owning control as a sticker on
+a window-owning control. </p> <p><b>Application User Interface (AppUi) framework</b> </p> <p>The
+application user interface framework provides support for the distribution
+of key events to an application's controls. It maintains a control stack to
+which an application must add all the top-level container controls that it
+wishes to handle key events, setting a priority for each. When a key event
+occurs, the framework offers it to each control on the stack in priority order
+until it is consumed. </p> <p>The application user interface framework is
+provided by the base class <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref>. Uikon and UI variants
+specialise CCoeAppUi further. Applications derive from the variant AppUi. </p> <p> <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> provides
+a simplified interface to the <xref href="GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita">View
+Server</xref> which enables seamless switching between different views across
+various applications. </p> <p><b>Control Environment (CoeEnv)</b> </p> <p>The
+Control Environment simplifies the interface to the Window Server and provides
+an environment for creating controls. It is a single instance (a singleton)
+of the class <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> which encapsulates an active scheduler
+and active objects for communicating with the window server. <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> is
+created automatically by the framework and a pointer stored in Thread Local
+Storage (TLS). It is available through <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-BB8AF6C8-F7C8-3478-858A-4E2C68DF1B7A"><apiname>CCoeControl::CoeEnv()</apiname></xref>, <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita#GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90/GUID-6D8B3C54-087B-36C6-81A4-E07E92AA9D72"><apiname>CCoeAppUi::CoeEnv()</apiname></xref> and
+through its own static function, <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita#GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40/GUID-7A9CB8EE-520A-30E2-BA54-5BEFBB56717F"><apiname>CCoeEnv::Static()</apiname></xref>, which
+is less efficient. </p> <p>The control environment also provides simplified
+access to drawing functions, fonts, and resource files which are used by most
+applications. </p> </section>
+<section id="GUID-060D338D-BADE-46A6-B7B1-DB28F07B39D3"><title>See also</title> <p><xref href="GUID-1C802DBD-1453-5C69-94D5-FB0229C544D6.dita">Uikon
+Overview</xref>  </p> <p><xref href="GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita">View
+Server Overview</xref>  </p> <p><xref href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita">Window
+Server</xref>  </p> <p><xref href="GUID-EEAB5A2F-AD1F-57B9-98AA-20DEEA23C3C2.dita">Asynchronous
+Programming (active scheduler &amp; active objects)</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e255697_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9" xml:lang="en"><title>How
+to use UIDs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A UID is a globally unique identifier consisting of a 32-bit number. </p>
+<p>In Symbian platform, objects are identified by a compound identifier, known
+as the <keyword>UID type</keyword>, which is constructed from three 32 bit
+identifiers. The individual UIDs making up the UID type are referred to as <keyword>UID1</keyword>, <keyword>UID2</keyword> and <keyword>UID3</keyword>. </p>
+<p>Symbian platform makes widespread use of UIDs: </p>
+<ul>
+<li id="GUID-CD464385-25EF-5953-AA1F-31F99A12B7F1"><p>UIDs are used to identify
+the types of objects at runtime and loadtime, for example identifying executables,
+DLLs, filestores. </p> </li>
+<li id="GUID-E57A5374-9526-5BEA-BC18-14852DD30423"><p>UIDs are used to verify
+that objects present compatible and expected interfaces at runtime and loadtime,
+for example verifying that DLLs or filestores are of the expected type. </p> </li>
+<li id="GUID-5A2B51EC-DA36-5CC3-A2FA-0F318B80E983"><p>UIDs are fundamental
+to the association of applications with documents. For example, associating
+a document with an application allows the system to launch the application
+when the document is opened. </p> </li>
+</ul>
+<p>A file's three UIDs are stored in the first 12 bytes of the file. </p>
+<p>To program successfully, Symbian developers need to understand why and
+how to use UIDs in their programs. </p>
+<section><title>What UIDs are for</title> <p>From a user's point of view,
+conventional file names are preferable to UIDs for file identification. Symbian
+platform therefore supports a flexible, long filename, file naming scheme. </p> <p>However
+from a system point of view, guaranteed unique, 32-bit numbers provide for
+much safer, systematic, and more lightweight identification. </p> <p>UID1,
+UID2 and UID3 have the following general characteristics: </p> <ul>
+<li id="GUID-251CC75C-E12F-5602-AC72-D61769536325"><p> <keyword>UID1</keyword> indicates
+the structure of the file, for example, whether it is an executable, a DLL
+or a file store. </p> </li>
+<li id="GUID-04F9AE5C-CE1C-5A78-A58E-843CAA821975"><p>The meaning of <keyword>UID2</keyword> depends
+on the type of object it applies to. For polymorphic interface (plug-in framework)
+DLLs, UID2 identifies the interface that the DLL implements. For static interface
+(shared library) DLLs that others link to, the UID2 value is always the same.
+For executables the UID value has to be set to <codeph>KUidApp</codeph> or <codeph>NULL</codeph>. </p> </li>
+<li id="GUID-0C52BBE3-8971-5D13-92D9-1958BD053C90"><p> <keyword>UID3</keyword> distinguishes
+between objects with the same UID2 and can be thought of as a project identifier.
+For example, for an application, the same UID3 is shared by the executable,
+registration file (which defines the application's icon, caption, and some
+capability information), and all documents. </p> <p>The <xref href="GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita">SECUREID</xref> need
+not be explicitly specified in the .mmp file, but if it is omitted, then the
+value of the UID3, specified elsewhere in the .mmp file, is used. If the UID3
+is not specified, then the secureid will take the value <codeph>KNullUID</codeph>.
+This has several consequences, including lack of privacy for data used by
+that application. </p> </li>
+</ul> <p>The UID type is a <codeph>TUidType</codeph> object and is constructed
+from a combination of all or some of the three possible UIDs. The UID type
+can be queried to return its component <keyword>UID1</keyword>, <keyword>UID2</keyword> and <keyword>UID3</keyword> values. </p> <p>If
+no UIDs are attached to an object, then all three component UIDs are returned
+as <codeph>KUidNull</codeph>. </p> </section>
+<section><title>UID1, UID2, UID3, and the no UIDs case</title> <p>An object
+in Symbian platform and more particularly files in Symbian platform may have
+all, some, or none of the three possible UIDs defined. </p> <p>Symbian platform
+predefines all possible UID1 values and the UID2 values used for GUI applications
+and static interface DLLs at system level. Symbian developers refer to them
+by their constant names, although in project (<filepath>.mmp</filepath>) files,
+hexadecimal numbers are used. </p> <ul>
+<li id="GUID-95B7B621-CE04-53DE-A708-FCBD4DB5A36D"><p>UID1: examples include <codeph>KExecutableImageUid</codeph>, <codeph>KDynamicLibraryUid</codeph> and <codeph>KDirectFileStoreLayoutUid</codeph>  </p> </li>
+<li id="GUID-8956CAD8-C680-5BD6-9C3F-86821A268C1B"><p>UID2: examples include <codeph>KSharedLibraryUid</codeph> (0x1000008d)
+for a static interface DLL and <codeph>KUidApp</codeph> (0x100039CE) or NULL
+for a GUI application. <b>Note:</b> Both <codeph>KUidApp</codeph> and NULL
+are acceptable values for UID2 when the application is an EXE, although at
+the present time these values are ignored. At a later stage UID2 may be used
+for other purposes, so setting UID2 to values outside of these values is not
+recommended. </p> </li>
+<li id="GUID-BECDDD3F-58E9-5414-ACC7-25BE2217D81A"><p>Symbian developers are
+responsible for ensuring that where UID3 values are required, they are properly
+allocated. See the <xref href="https://www.symbiansigned.com" scope="external">Symbian
+Signed</xref> web site for information on how to allocate UIDs (free registration
+is required to see the FAQ). </p> </li>
+</ul> <p>Note that in project (<filepath>.mmp</filepath>) files, UID2 and
+UID3 values can be specified, but UID1 values cannot; the UID1 value is implied
+by the project's target type. </p> </section>
+<section><title>EXE targets and UIDs</title> <p>All executable targets have
+a UID1 of <codeph>KExecutableImageUid</codeph>. This is defined by Symbian
+platform and is automatically built into any executable target based on the <codeph>exe</codeph> target
+type declared in the project file. </p> <p>A UID2 value should be specified
+by GUI applications (.EXE) and the application architecture expects this to
+be <codeph>KUidApp</codeph> (0x100039CE) or NULL. Console applications (also
+.EXE), which are often used for testing and as example code, do not need to
+specify a UID2, and if they do, it is ignored. </p> </section>
+<section><title>DLLs and UIDs</title> <p>All DLLs, whether they have static
+or polymorphic interfaces, have a UID1 of <codeph>KDynamicLibraryUid</codeph>.
+This is defined by Symbian platform and is automatically built into any DLL
+target based on the <filepath>dll</filepath> target type declared in the project
+file. </p> <p>For static interface DLLs, the UID2 is <codeph>KSharedLibraryUid.</codeph> The
+UID3, which is used to identify the interface to the library, must be allocated
+by Symbian Signed. </p> <p>For polymorphic DLLs (for instance ECom plugins,
+device drivers and front end processors), UID2 identifies the interface that
+the DLL implements. UID3 (which, if required, must be allocated by Symbian
+Signed) may be used to identify a specific implementation of that interface. </p> </section>
+<section><title>Documents and UIDs</title> <p>In Symbian platform, documents
+are really file-stores: stores which can be closed and re-opened. There are
+two different kinds of file store, <keyword>direct file stores</keyword> which
+are write-once-read-many, and <keyword>permanent file stores</keyword> which
+are write-many-read-many. </p> <p>A document's UID1 will therefore be one
+of <codeph>KDirectFileStoreLayoutUid</codeph> or <codeph>KPermanentFileStoreLayoutUid</codeph>.
+The UID2 and/or UID3 will be application dependent. </p> <p>Every native document
+must have an appropriate UID1 which should be set by the application which
+creates the document. Typically documents may have a UID2 of <codeph>KUidAppDllDoc</codeph> and
+a UID3 shared with the creating application. More precisely, a document’s
+UID3 should match that of the application which will open it. </p> <p>Only
+the UID1 is required, but in most cases Symbian developers will want to specify
+second and third UIDs for the documents their applications create and use.
+These UIDs are used by the application architecture framework to manage associations
+between applications and their documents. This allows an application to be
+found and launched when a file is opened, and it also allows an application
+icon to be associated with documents in system shell displays. Conversely,
+it allows an application, when opening files, to select only applicable files. </p> <p>Symbian
+platform also allows default file associations with the implication that in
+some cases users may want to select a different application to open a file.
+Applications which support this must therefore be able to open documents whose
+third UID differs from their own. </p> <p>Applications may also want to open
+non-native documents which have no UIDs, and may wish to be specified as default
+applications for these documents. </p> </section>
+<section><title>UIDs in package files</title> <p>Package (.PKG) files are
+used in Symbian platform to provide the information required to create Symbian
+installation (.SIS) files. Each SIS file contains a UID, which is defined
+in the package file's <xref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita">package
+header</xref>. This UID should be allocated in the same way
+as other UIDs, through Symbian Signed. </p> </section>
+<section id="GUID-8D9B0F56-4CD1-506C-A8DF-A310DC5F58CE"><title>Uniqueness
+and allocation</title> <p>Because UIDs are fundamental to Symbian platform,
+it is important that they are used correctly when developing programs. To
+ensure uniqueness, it is essential that UIDs are properly allocated. </p> <p>Uniqueness
+is guaranteed by managing allocation centrally from a single database. All
+UIDs must therefore be assigned to users by a central allocating authority. </p> <p>UIDs
+are also split into protected and unprotected ranges. Any UID values falling
+below 0x7FFFFFFF are classed as "protected" and are only intended for use
+with signed applications (or those pre-installed in ROM). The software installer
+will refuse to install an unsigned application if it uses a package UID in
+the protected range. </p> <p>Symbian developers can request UIDs through <xref href="https://www.symbiansigned.com" scope="external">https://www.symbiansigned.com</xref>.
+For more information, see the Symbian Signed FAQ (free registration required).
+Note that from version 9 of Symbian platform, UIDs are no longer requested
+from uid@symbiandevnet.com. </p></section>
+<section><title>Reserved UID range for development only</title><p>During development,
+or for test code, temporary UIDs may be chosen from the unprotected test range
+0xExxxxxxx. These UIDs can be used during development for unsigned applications
+but must not be used in released software. Note that such applications may
+not be installable via a SIS file. See the Symbian Signed website for more
+information. </p> <p>Care must still be taken to avoid clashes within development
+teams and between multiple projects, including old projects which may still
+be installed on a Symbian emulator or native platforms. UID clashes may stop
+a program from loading correctly, typically leading to <systemoutput>Not Found</systemoutput> errors. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF" xml:lang="en"><title>Local
+and global handles</title><shortdesc>This document explains the distinction between local and global
+handles.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is the issue of Kernel side object visibility.</p>
+<p>Handles are said to be local or global.</p>
+<p>A handle is <i>local</i>, if the Kernel object which that handle represents
+is only visible to the thread that created it; no other thread can open a
+handle to the same Kernel object.</p>
+<p>Typically, code constructs the appropriate <codeph>RHandleBase</codeph> derived
+object, e.g. an <codeph>RMutex</codeph>, and calls its <codeph>Create()</codeph>, <codeph>CreateLocal()</codeph> or
+equivalent function to create the corresponding Kernel object.</p>
+<p>A handle is <i>global</i>, if the Kernel object which that handle represents
+is visible to all threads across all processes; any thread in any process
+can open a handle to that same Kernel object. Typically, such a Kernel object
+is intended for sharing.</p>
+<p>For a global handle. the corresponding Kernel object is assigned a name.
+The name gives that Kernel object an identity and is the key property which
+allows other threads to open a handle onto that same object. It is usual to
+use a <codeph>TFindHandleBase</codeph>  <i>derived</i> class to locate a global
+Kernel object. The following diagram shows the general idea.</p>
+<fig id="GUID-01C60CFA-8CA7-51CC-904E-158EC02959DE">
+<image href="GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e205824_href.png" placement="inline"/>
+</fig>
+<p>See also:</p>
+<ul>
+<li id="GUID-56D39619-C90C-51DF-9475-3B75FB189258"><p><xref href="GUID-FC639517-F138-5E84-B57A-6347F5A47B88.dita">Names
+and fullnames</xref> in reference counting objects.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662" xml:lang="en"><title>SendAs
+v2.0</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-9D54D47A-37D9-5229-92D5-B80B442E8B0D"><title>Description</title> <p>The
+application establishes a session with the SendAs server, sets a message entry,
+creates a message, sets its body text, adds a recipient, sends the message
+and closes the session. The sequence of events is detailed in the following
+list: </p> <ul>
+<li id="GUID-ADE16BD9-7B38-5B35-8E72-77E968D1CED2"><p>Create a session with
+the SendAs server using <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-423E2320-FB34-3249-80D9-9AA62C9DDF60"><apiname>CMsvSession::OpenSyncL()</apiname></xref> function. </p> </li>
+<li id="GUID-E1BF3D0E-C278-57F6-9359-4EDC426034BD"><p>Set the message entry
+using the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-139272C1-EF75-3BD9-AB67-3573C5C2D68C"><apiname>CMsvEntry::SetEntryL()</apiname></xref> function. </p> </li>
+<li id="GUID-C89C044C-B1DF-5541-8F0E-81DBA222E126"><p>After setting the entry,
+the application gets a selection containing the IDs of all the context children,
+using the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-80D240A0-5896-35A3-AADD-830046776D35"><apiname>CMsvEntry::ChildrenL()</apiname></xref> function. </p> </li>
+<li id="GUID-B2B5D96F-68F3-5000-B615-3AE7DA32E3A3"><p>The connection to the
+server is made using the default number of message slots available to a session,
+which is 4, (<xref href="GUID-C248C8F6-46F2-39AB-A202-CB2D98FCF760.dita"><apiname>KSendAsDefaultMessageSlots</apiname></xref>). </p> </li>
+<li id="GUID-5469B019-40CD-5864-BF4B-43DEC2FDF34F"><p>The draft folder is
+emptied, before creating a new message. </p> </li>
+<li id="GUID-A1D2D778-42D2-51DA-817C-65E350BABB9C"><p>Fetch the names and
+UIDs for the filtered list of message types using the <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita#GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3/GUID-B94FAE68-3EB9-3E01-97B7-3A77CE5A4740"><apiname>RSendAs::FilteredMessageTypesL()</apiname></xref> function
+to create a SendAs message. Then the UID based on the message type is returned,
+and with the entry set on the drafts folder a SendAs message is created by
+calling the <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita#GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6/GUID-2B52A16E-FD71-3E9E-89A1-E154F01F5A59"><apiname>RSendAsMessage::CreateL()</apiname></xref> function. </p> </li>
+<li id="GUID-8CE79BC4-4240-5E94-851B-2E13DFB3B271"><p>Set a body text for
+the message and specify the recipients. In this example, the body text is
+set using an option, which is read from the user. Option given to the user
+are '1' for 8-bit encoding, '2' for 16-bit encoding and '0' or by default
+its unicode type of encoding. The encoded descriptor is set as the message's
+body text using the <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita#GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6/GUID-6823DF51-D9D6-384C-9FE3-C00D30D3B232"><apiname>RSendAsMessage::SetBodyTextL()</apiname></xref>function. </p></li>
+<li><p>The recipients are added using the <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita#GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6/GUID-9F433FF9-0276-34B0-ADF3-F332E90A9248"><apiname>RSendAsMessage::AddRecipientL()</apiname></xref> function.
+The recipient's address is held in a descriptor. The alias is the displayed
+recipient name.</p></li>
+<li id="GUID-EB161170-E53F-5892-B7A6-6DF4529C924D"><p>The recipient type is
+one of the <xref href="GUID-3DFEC3A5-1DDB-3BF0-871A-91B96F06EC42.dita"><apiname>TSendAsRecipientType</apiname></xref> enumeration values, that
+is, one of the following: </p> <ul>
+<li id="GUID-7D3CA067-B14A-5694-9C80-3FA740E1D3AA"><p> <xref href="GUID-D8B673F7-1367-3228-813A-D74138533BC2.dita"><apiname>ESendAsRecipientTo</apiname></xref> -
+The recipient goes in the 'To' field. </p> </li>
+<li id="GUID-6E67C22D-4C3F-5F77-8454-AF35290C31A6"><p> <xref href="GUID-A990E3D5-E20A-3CDA-9417-15C234E85F57.dita"><apiname>ESendAsRecipientCc</apiname></xref> -
+The recipient goes in the 'Cc' field </p> </li>
+<li id="GUID-0D5D7039-1970-579C-8629-5C41C3B3538D"><p> <xref href="GUID-EF736A4B-685E-3E77-B4A1-E1B06EAD2523.dita"><apiname>ESendAsRecipientBcc</apiname></xref> -
+The recipient goes in the 'Bcc' field </p> </li>
+</ul> <p>If the 'Cc' field is not supported, the recipient will instead be
+added to the 'To' field since these are functionally equivalent. </p> <p>If
+the 'Bcc' field is not supported, this function will return <xref href="GUID-F89DA3F0-2A48-3F9B-8F08-29350E92D0E4.dita"><apiname>KErrNotSupported</apiname></xref>. </p> </li>
+</ul> <p>The example also displays the names of the accounts present in the
+list. </p> <p>To demonstrate this, 3 new accounts are appended and they are
+displayed in a for-loop by calling <xref href="GUID-90C4FDEE-3E4D-32B3-85E1-52C157AC4AC4.dita#GUID-90C4FDEE-3E4D-32B3-85E1-52C157AC4AC4/GUID-1FB61663-625D-3294-84BA-D811044D1235"><apiname>CSendAsAccounts::AccountNames().MdcaPoint(i)</apiname></xref>,
+where the <xref href="GUID-7D6D682B-4ACD-312E-B0BE-D182930182D0.dita"><apiname>MdcaPoint()</apiname></xref> function takes in the integer value
+of the current iteration in the for-loop and indexes into a descriptor array. </p> <p>The
+example also demonstrates how to refine the available message types of the
+connected session using the <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita#GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3/GUID-C87673B0-714F-31C0-9F9E-C095669007AF"><apiname>RSendAs::FilterAgainstCapability()</apiname></xref> function. </p> <p>The <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita#GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6/GUID-28EE1E22-8892-388C-990D-BC0E1F18D88E"><apiname>RSendAsMessage::SendMessage()</apiname></xref> function is used asynchronously to send the message. Finally the <xref href="GUID-2A8E907A-B3AE-3D83-882C-ED0A98B5D39A.dita#GUID-2A8E907A-B3AE-3D83-882C-ED0A98B5D39A/GUID-1EDE87E5-3F1C-34E2-9172-72990783E7E7"><apiname>RsendAs::Close()</apiname></xref> function
+is used to end the session with SendAs server. </p> </section>
+<section id="GUID-5D17C0D4-1D8E-5E85-AEFD-7083A748C728"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-90c56a55-33bb-4ab7-a6b8-8932ba181dc8.zip" scope="external">sendAs.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-90c56a55-33bb-4ab7-a6b8-8932ba181dc8.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> The SendAs v2 example application
+uses the following classes:</p><p><xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry </apiname></xref><xref href="GUID-B36289AC-769F-3A83-BADB-AE0568E97581.dita"><apiname>MMsvEntryObserver </apiname></xref><xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession </apiname></xref><xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs </apiname></xref><xref href="GUID-CB2BB982-F91D-3E06-8D66-56731AA60EB8.dita"><apiname>CSendAsMessageTypes </apiname></xref><xref href="GUID-90C4FDEE-3E4D-32B3-85E1-52C157AC4AC4.dita"><apiname>CSendAsAccounts </apiname></xref> <xref href="GUID-90C4FDEE-3E4D-32B3-85E1-52C157AC4AC4.dita"><apiname>CSendAsAccounts </apiname></xref> <xref href="GUID-1FDBA8F6-D1CC-3AE5-AF48-1256D50C5A4F.dita"><apiname>CMsvOperationWait </apiname></xref><xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname> RSendAsMessage </apiname></xref></p></section>
+<section id="GUID-13FDF5EE-00C2-54D4-AF6C-41E3DBDC2B93"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build an application. </p> <p>The SendAs example builds an executable
+called <filepath>SendAs2Example.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to task away from the app launcher/shell screen to
+view the console. </p> </section>
+<section id="GUID-E9152EC2-A404-549C-B7CA-25CAC97BA686"><title>See also</title> <p>To
+create advanced applications using the SendAs API refer to the complete <xref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita"> SendAs </xref> API reference
+documentation, which details all the features of the API. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-383A617C-474B-509D-BA37-3515BCC5F1D1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-383A617C-474B-509D-BA37-3515BCC5F1D1" xml:lang="en"><title>CHARACTER_SET
+statement</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;character_set-statement&gt;
+character_set-statement ::= 
+CHARACTER_SET &lt;character_set-name&gt;</codeblock>
+<p>Use a <codeph>CHARACTER_SET</codeph> statement to define the character
+set to be used. The permitted values for <varname>character_set-name</varname> are
+defined as:</p>
+<codeblock xml:space="preserve">&lt;character_set-name&gt;
+character_set-name ::= 
+CP1252 | UTF8 
+</codeblock>
+<p>If the <codeph>CHARACTER_SET</codeph> statement is omitted from a resource
+file, character set CP1252 is taken as default.</p>
+<example><codeblock id="GUID-6F615F39-DC76-5824-A505-A55F0B34AFB5" xml:space="preserve">CHARACTER_SET UTF8</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-383C128C-15EB-4C64-9A1F-F1EA826323D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-383C128C-15EB-4C64-9A1F-F1EA826323D0" xml:lang="en"><title>Parent
+and Child IPC Using Named Pipes or FIFOs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An alternative approach to using the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function
+is to use named pipes, or FIFOs. The advantage of using them over the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> mechanism
+is that they allow the code in both the parent and child processes to continue
+to use file descriptors for communication rather than streams (and avoid modification
+to the<codeph> stdin()</codeph>/<codeph>stdout()</codeph> streams of the child
+process). </p>
+<p>In addition, since each created FIFO is referenced as a file in the file
+system, FIFOs allow for more complicated IPC schemes than those offered by
+the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function, for example, inter-child process
+communication. For more information about the use of FIFOs, see <xref href="http://www.opengroup.org" scope="external">http:\\www.opengroup.org</xref>. </p>
+<p><b>Parent process P.I.P.S. example using FIFOs</b></p>
+<p>The following code shows how FIFOs can be used in P.I.P.S. by the parent
+process.</p>
+<codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+   char fifoFileName[] = "/root/PortDoc/Example2_c/Symbian/fifofile";
+
+   int fifoResult = mkfifo(fifoFileName,S_IXGRP);
+  
+   if(fifoResult == -1)
+   {
+      //FIFO creation failure.
+      printf("\n*** failure mkfifo ***\n");
+
+      return EXIT_FAILURE;
+   }
+   else
+   {
+      //FIFO creation successful.
+      
+      //Spawn the child process.
+      pid_t Childpid;
+      char execFileName[] = "/root/PortDoc/Example2_c/Symbian/ChildProg";
+      int RetVal= posix_spawn(&amp;Childpid,execFileName,NULL,NULL,NULL,NULL);
+      
+      if(RetVal != 0)
+      {
+         printf("\n*** failure posix_spawn ***\n");
+
+         return EXIT_FAILURE;
+      }
+      else
+      {
+         //Open the FIFO. Parent reads from the FIFO
+         int ReadFifoFd = open(fifoFileName,O_RDONLY);
+ 
+         if(ReadFifoFd == -1)
+         {
+            //Failed to open the Fifo
+            printf("\n*** failure Fifo Open ***\n");
+
+            return EXIT_FAILURE;
+         }
+         else
+         {
+            //create a receive buffer and clear
+            char RxBuffer[100];
+            memset(RxBuffer,0,sizeof(RxBuffer));
+      
+            //Wait for data from the child process. Child sends a string.
+            int nbytes = read(ReadFifoFd,RxBuffer,sizeof(RxBuffer));
+
+            printf("\nMessage Received by Parent=%s",RxBuffer);
+      
+            //close the FIFO
+            (void)close(ReadFifoFd);
+         }
+
+         //wait for the child process to finish      
+         (void)waitpid(Childpid,NULL,0);
+   
+         //unlink the FIFO
+         unlink(fifoFileName);
+      }
+   }
+   return EXIT_SUCCESS;
+}
+</codeblock>
+<p><b>Child process P.I.P.S. example using FIFOs</b></p>
+<p>The following code shows how FIFOs can be used in P.I.P.S. by the child
+process. </p>
+<codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+   char fifoFileName[] = "/root/PortDoc/Example2_c/Symbian/fifofile";
+
+   //Open the FIFO. child writes to parent
+   int WriteFifoFd = open(fifoFileName,O_WRONLY);
+     
+   if(WriteFifoFd == -1)
+   {
+      //Failed to open the Fifo
+      printf("\n*** child failure Fifo Open ***\n");
+      return EXIT_FAILURE;
+   }
+   else
+   {
+      //create a message to send.
+      char TxMsg[] = "Hello Parent\n";
+       
+      //Wait for data from the child process. Child sends a string.
+      write(WriteFifoFd,TxMsg,sizeof(TxMsg));
+     
+      //close the FIFO
+     (void)close(WriteFifoFd);
+   }
+   return EXIT_SUCCESS;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-384A25D6-EC89-576E-857F-D8D26292FED9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-384A25D6-EC89-576E-857F-D8D26292FED9" xml:lang="en"><title> Importing
+Keys</title><shortdesc>This section describes how to import a key from a file using the
+keystore. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>An externally generated key can be stored in the keystore using
+the import functionality. Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-9A2E3ABC-4992-31F1-B03E-090DB3C6DC66"><apiname>CUnifiedKeyStore::ImportKey()</apiname></xref> function
+to import a key into the keystore. </p><p> The following steps explain the
+process of importing keys:</p> </context>
+<steps id="GUID-7AD9B618-A5E5-5C32-82D4-1B8E18B13C2C">
+<step id="GUID-0349CB41-E21A-5BED-BB0C-5A9AFE3AF7CA"><cmd/>
+<info>Create a file system session using an <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object. </info>
+</step>
+<step id="GUID-72A8537C-75A3-51B4-ACD2-0647A69D5528"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref> function. </info>
+</step>
+<step id="GUID-AF402EF4-C1A5-5124-9C21-4A45B81F1D0C"><cmd/>
+<info>Initialize the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-03708DBC-2367-55CE-B492-1E3CE0F42EA6"><cmd/>
+<info>Open the file in read-only mode using the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> object. </info>
+</step>
+<step id="GUID-00E736F5-E3AA-5537-92EC-8D287790516E"><cmd/>
+<info>Import the key using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-9A2E3ABC-4992-31F1-B03E-090DB3C6DC66"><apiname>CUnifiedKeyStore::ImportKey()</apiname></xref>. </info>
+</step>
+</steps>
+<result><p>The required key is imported into the selected keystore. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+create a file system session object, initialize keystore and member functions,
+and import a key. </p> <codeblock id="GUID-3FB35264-562C-5FD8-B3B6-1770BF5CA28D" xml:space="preserve">
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+...
+
+
+HBufC8* keyData = NULL;
+CleanupStack::PushL(keyData);
+
+
+
+// Specify the path of the file containing the key details
+TDriveUnit sysDrive (RFs::GetSystemDrive());
+TFileName keyDataFile (sysDrive.Name());
+keyDataFile.Append(_LIT("&lt;path where key is located; relative to the system drive in this case.&gt;"));
+
+
+//Specify the filename
+TFileName buf;
+buf.FillZ();
+buf.Copy(aDes); //Filename
+keyDataFile.Append(buf); 
+
+
+//Open the file in read-only mode
+RFile file;
+User::LeaveIfError(file.Open(iFs, keyDataFile, EFileRead));
+CleanupClosePushL(file);
+
+TInt fileSize = 0;
+User::LeaveIfError(file.Size(fileSize));
+HBufC8* iKeyData;
+
+if (fileSize &gt; 0)
+    {
+     iKeyData = HBufC8::NewMaxLC(fileSize);    
+     TPtr8 data(iKeyData-&gt;Des());
+     data.FillZ();
+     User::LeaveIfError(file.Read(data, fileSize));
+    }
+
+
+
+//Import the key into the keystore
+keyStore-&gt;ImportKey(0, iKeyData-&gt;Des(), usage, KLabel, accessType,
+                TTime(0), keyInfo, iStatus);
+
+
+//Clean up
+CleanupStack::Pop(keyData);
+CleanupStack::PopAndDestroy(); // file
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita"><linktext>Unified Keystore</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e154214_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-385BB488-5C32-58A7-8401-F3F0A0707DD9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-385BB488-5C32-58A7-8401-F3F0A0707DD9" xml:lang="en"><title>User
+Interface MTM implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Note:</b> This example is designed to work with Techview and there
+is no guarantee that it will work on other interfaces </p>
+<section><title>Example Code</title> <p>Click on the following link to download
+the example:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.zip" scope="external">.TextMTM.zip</xref> </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.html" scope="peer">browse</xref> to view the example code. </p> <p>The
+files reproduced here are the main files contained in the examples directory.
+Some extra files may be needed to run the examples, and these will be found
+in the appropriate examples directory. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref>  <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname> TMsvId</apiname></xref>  <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname> CMsvOperation</apiname></xref>  <xref href="GUID-ED81FC3E-2BDA-390D-A866-9651DF8CE51D.dita"><apiname> CEikFileSaveAsDialog </apiname></xref>  <xref href="GUID-DC21E927-18B3-3BBF-9B67-496F2D158B03.dita"><apiname>CEikDialog</apiname></xref>   </p></section>
+<section><title>Description</title> <p>The <filepath>txtu</filepath> project
+demonstrates a User Interface MTM. The central class is <codeph>CTextMtmUi</codeph>,
+derived from the User Interface MTM base class <codeph>CBaseMtmUi</codeph>. </p> <p>Note
+that the <filepath>txtu</filepath> project has dependencies on some GUI components
+that might not be present on all Symbian OS licensee SDKs. </p> <p> <filepath>txtu</filepath> implements
+the following MTM functionality: </p> </section>
+<section><title>Basic functions for messages</title> <p> <codeph>Create()</codeph>:
+this creates a new local message in the <systemoutput>Draft</systemoutput> folder,
+with description field set to "New Text", and then invokes edit. </p> <p> <codeph>Edit()</codeph>:
+no UI for editing and viewing text messages is implemented. A simple stub
+is provided that simply appends the text "Edited document" to the message
+and puts up an information message. </p> <p>If an edit command is invoked
+on a remote message entry (an entry under a Text service entry), the MTM offers
+to copy it to the local Inbox first. This is performed by class <codeph>CEditRemoteOperation</codeph>.
+and dialog resource <codeph>r_dialog_refuse_edit_remote_message</codeph>. </p> <p> <codeph>Open()</codeph> and <codeph>View()</codeph>:
+these functions for a message context simply calls the edit function. </p> <p> <codeph>CopyToL()</codeph>, <codeph>MoveToL()</codeph>, <codeph>CopyFromL()</codeph>, <codeph>MoveFromL()</codeph> and <codeph>DeleteL()</codeph>: simple implementations
+of these functions are provided that use the <codeph>CMsvEntry</codeph> copy,
+move and delete functions. These commands are passed to the Message Server,
+which then passes them on to the Server-side Text MTM. </p> <p> <codeph>ReplyL()</codeph> and <codeph>ForwardL()</codeph>:
+there is no UI support for message replies and forwarding. </p> </section>
+<section><title>Basic functions for services</title> <p> <codeph>Create()</codeph> and <codeph>Edit()</codeph>:
+when requested to create a new Text service entry, a dialog pops up allowing
+the user to specify the folder associated with the service. This is performed
+by class <codeph>CTextMtmEditServiceDialog</codeph> and resource <codeph>r_dialog_service_settings</codeph>.
+The service entry can then be edited later on, to change the folder. </p> <p>After
+the service entry is created or changed, an automatic refresh will be triggered. </p> </section>
+<section><title>MTM-specific operations</title> <p>The following MTM-specific
+operations are accepted: </p> <ul>
+<li id="GUID-94BF89D8-80D9-53CD-B3C3-40150B16EF6A"><p>Refresh: this command
+refreshes the currently highlighted service entry. It calls the MTM-specific
+operations provided by the Client-side MTM to do this. </p> </li>
+<li id="GUID-65E9CE09-3968-5CA0-90E4-5421B608080C"><p>Export text to file:
+exports the text contained in a text message to a file. This is performed
+by <codeph>DoExportTextFromMessageL()</codeph>. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38679CA2-0066-589C-988F-AC14B7E2F107.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-38679CA2-0066-589C-988F-AC14B7E2F107" xml:lang="en"><title>Interacting
+with text editor controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-9C16757D-DC75-5223-A555-550B8D3C1DB4"><title>Introduction </title> <p>The
+public parts of the <codeph>MCoeFepAwareTextEditor</codeph> class (which is
+defined in <filepath>epoc32\include\FEPBASE.H</filepath>) are as follows: </p> <codeblock id="GUID-52B6C9B8-1F43-5CBA-85D9-0D472F4F4396" xml:space="preserve">class MCoeFepAwareTextEditor
+    {
+public:
+    virtual void StartFepInlineEditL(const TDesC&amp; aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, TBool aCursorVisibility, const MFormCustomDraw*, MFepInlineTextFormatRetriever&amp;, MFepPointerEventHandlerDuringInlineEdit&amp;)=0;
+    virtual void UpdateFepInlineTextL(const TDesC&amp; aNewInlineText, TInt aPositionOfInsertionPointInInlineText)=0;
+    virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility)=0;
+    IMPORT_C void CommitFepInlineEditL(CCoeEnv&amp; aConeEnvironment);
+    virtual void CancelFepInlineEdit()=0;
+    virtual TInt DocumentLengthForFep() const=0;
+    virtual TInt DocumentMaximumLengthForFep() const=0;
+    virtual void SetCursorSelectionForFepL(const TCursorSelection&amp; aCursorSelection)=0;
+    virtual void GetCursorSelectionForFep(TCursorSelection&amp; aCursorSelection) const=0;
+    virtual void GetEditorContentForFep(TDes&amp; aEditorContent, TInt aDocumentPosition, TInt aLengthToRetrieve) const=0;
+    virtual void GetFormatForFep(TCharFormat&amp; aFormat, TInt aDocumentPosition) const=0;
+    virtual void GetScreenCoordinatesForFepL(TPoint&amp; aLeftSideOfBaseLine, TInt&amp; aHeight, TInt&amp; aAscent, TInt aDocumentPosition) const=0;
+    IMPORT_C MCoeFepAwareTextEditor_Extension1* Extension1();
+private:
+    virtual void DoCommitFepInlineEditL()=0;
+    IMPORT_C virtual MCoeFepAwareTextEditor_Extension1* Extension1(TBool&amp; aSetToTrue);
+    };</codeblock> <p>An implementation of this interface is provided by TechView’s <codeph>CEikEdwin</codeph> class
+(<codeph>CEikEdwin</codeph> was part of Uikon until Symbian OS v7.0s). <codeph>MCoeFepAwareTextEditor</codeph> member
+functions can be divided into two categories: <ul>
+<li><p>Functions for inline editing.</p></li>
+<li><p>Other functions that can broadly be categorized under the title 'context
+awareness'.</p></li>
+</ul></p> </section>
+<section id="GUID-1CE89EC8-5BE8-4F4B-8B39-57ACF40109DB"><title>Inline editing</title><p>Inline
+editing means the text to be sent to the application is composed inside the
+target text editing control, rather than in the FEP’s floating window. This
+requires the cooperation of the target text editing control which must implement
+the <codeph>MCoeFepAwareTextEditor</codeph> interface. An inline editing transaction
+consists of the following sequence: </p> <ul>
+<li id="GUID-817D5DC0-5C98-5BD2-A3C3-832D4220C970"><p>a call to <codeph>StartFepInlineEditL()</codeph>, </p> </li>
+<li id="GUID-961F900F-946A-5053-8063-D6ED8ECBDF7D"><p>zero, one or more calls
+to <codeph>UpdateFepInlineTextL()</codeph>, </p> </li>
+<li id="GUID-6C5F14D2-CA78-5194-8B7D-57FD4DA48DD4"><p>finally, a call to either <codeph>CommitFepInlineEditL()</codeph> or <codeph>CancelFepInlineEdit()</codeph>. (Note that <codeph>CCoeFep::SimulateKeyEventsL()</codeph> is not used at
+all in inline editing: the text is sent to the application via an entirely
+different mechanism.) </p> </li>
+</ul> <p>The second parameter (<codeph>TInt           aPositionOfInsertionPointInInlineText</codeph>)
+to <codeph>StartFepInlineEditL()</codeph> and <codeph>UpdateFepInlineTextL()</codeph> indicates
+where, in the inline text (which is passed as the first parameter), the insertion
+point, or cursor, is to appear. Note that the first parameter to <codeph>UpdateFepInlineTextL()</codeph> must
+be used to pass the <i>entire</i> inline text, not merely any new text to
+be combined with the old inline text. The third parameter (<codeph>TBool aCursorVisibility</codeph>)
+controls whether the insertion point is visible or not. As the types of the
+fourth, fifth and sixth parameters are abstract base classes, the FEP must
+create objects derived from these classes (<xref href="GUID-AF2B465F-EFC3-3205-A6D8-2EE19E738385.dita"><apiname>MFormCustomDraw</apiname></xref>, <xref href="GUID-91C8D439-F28E-3417-87B3-4698BE8571DE.dita"><apiname>MFepInlineTextFormatRetriever</apiname></xref> and <xref href="GUID-E7E10DF8-B419-329B-BB9D-D277E1631B0D.dita"><apiname>MFepPointerEventHandlerDuringInlineEdit</apiname></xref>) and pass references. These object(s) must remain in existence for the entire
+duration of the inline editing transaction. </p> <p>Note that <xref href="GUID-AF2B465F-EFC3-3205-A6D8-2EE19E738385.dita"><apiname>MFormCustomDraw</apiname></xref> pointer
+may NULL. <xref href="GUID-AF2B465F-EFC3-3205-A6D8-2EE19E738385.dita"><apiname>MFormCustomDraw</apiname></xref> belongs to the FORM component
+and is not described here. It enables the FEP to do advanced formatting of
+the inline text. The details of the other two interface classes used in inline
+editing are discussed next. </p> <p> <xref href="GUID-91C8D439-F28E-3417-87B3-4698BE8571DE.dita"><apiname>MFepInlineTextFormatRetriever</apiname></xref> (defined
+in <filepath>epoc32\include\FEPITFR.H</filepath>) has a single (pure) virtual
+function whose signature is as follows: </p> <codeblock id="GUID-06D8A567-223B-5352-B695-6DC3BF1C804A" xml:space="preserve">virtual void GetFormatOfFepInlineText(TCharFormat&amp; aFormat, TInt&amp; aNumberOfCharactersWithSameFormat, TInt aPositionOfCharacter) const=0;</codeblock> <p>The first parameter is to be set by the function to the format of the
+inline text. For example, TFEP1plugin’s implementation of this function sets
+this parameter to red, underlined text. <xref href="GUID-A5D563D6-A99A-31DF-B844-5F94EF5FFE87.dita"><apiname>MCoeFepAwareTextEditor</apiname></xref> provides
+a member function for finding out the ambient <codeph>TCharFormat</codeph> of
+the text editor: <codeph>GetFormatForFep()</codeph>. This can be called inside
+the FEP’s implementation of <codeph>GetFormatOfFepInlineText()</codeph> to
+make any necessary adjustments to the format of the inline text to ensure
+that it differentiates itself from the surrounding text. </p> <p>The second
+and third parameters to <codeph>GetFormatOfFepInlineText()</codeph> enable
+different parts of the inline text to have different formats. Their use is
+best illustrated by an example (albeit an artificial one). Suppose the FEP
+requires the first four characters of the inline text to be red, the next
+two characters (if there are any) to be green, and any subsequent characters
+to be blue, the <codeph>GetFormatOfFepInlineText()</codeph> function would
+look as follows: </p> <codeblock id="GUID-F4A7F35F-5EA1-5D6E-9570-44ADBC9D7AB5" xml:space="preserve">void Xxxxx::GetFormatOfFepInlineText(TCharFormat&amp; aFormat, TInt&amp; aNumberOfCharactersWithSameFormat, TInt aPositionOfCharacter) const
+    {
+    const TInt lengthOfRemainderOfInlineText=iBuffer.Length()-aPositionOfCharacter;
+    aFormat=iBaseFormatForInlineText;
+    aFormat.iFontPresentation.iTextColor.SetRed(0);
+    aFormat.iFontPresentation.iTextColor.SetGreen(0);
+    aFormat.iFontPresentation.iTextColor.SetBlue(0);
+    if (aPositionOfCharacter==0)
+        {
+        // first four characters are red
+        aFormat.iFontPresentation.iTextColor.SetRed(255);
+        aNumberOfCharactersWithSameFormat=Min(4, lengthOfRemainderOfInlineText);
+        }
+    else if (aPositionOfCharacter==4)
+        {
+        // next two characters are green
+        aFormat.iFontPresentation.iTextColor.SetGreen(255);
+        aNumberOfCharactersWithSameFormat=Min(2, lengthOfRemainderOfInlineText);
+        }
+    else if (aPositionOfCharacter==6)
+        {
+        // any subsequent characters are blue
+        aFormat.iFontPresentation.iTextColor.SetBlue(255);
+        aNumberOfCharactersWithSameFormat=lengthOfRemainderOfInlineText;
+        }
+    }</codeblock> <p> <xref href="GUID-E7E10DF8-B419-329B-BB9D-D277E1631B0D.dita"><apiname>MFepPointerEventHandlerDuringInlineEdit</apiname></xref> (which
+is defined in <filepath>epoc32\include\FEPBASE.H</filepath>) gives the FEP
+the opportunity to handle pointer events which occur in the area on the screen
+occupied by the inline text. It has a single (pure) virtual function whose
+signature is as follows: </p> <codeblock id="GUID-3AF75EEB-2FDA-57FD-AC09-7FAE30ACB1FE" xml:space="preserve">virtual void HandlePointerEventInInlineTextL(TPointerEvent::TType aType, TUint aModifiers, TInt aPositionInInlineText)=0;</codeblock> <p>The parameters indicate to the FEP the event’s type (for instance pointer
+down, pointer drag or pointer up), the keyboard modifiers (for instance caps
+lock and shift) and the logical position of the event in the inline text. </p></section>
+<section id="GUID-0BEE5B61-5ACC-4847-996E-E659D518646E"><title>Context awareness</title><p>As
+well as providing support for inline editing, the <xref href="GUID-A5D563D6-A99A-31DF-B844-5F94EF5FFE87.dita"><apiname>MCoeFepAwareTextEditor</apiname></xref> interface
+class enables the FEP to find out information about the text editor control
+with focus. <codeph>DocumentLengthForFep()</codeph> returns the length of
+the text held in the text editor. <codeph>DocumentMaximumLengthForFep()</codeph> returns
+the upper limit (if any) on the length of text that the text editor can hold. <codeph>SetCursorSelectionForFepL()</codeph> selects
+the specified text range in the text editor, and <codeph>GetCursorSelectionForFep()</codeph> sets
+its parameter to the selected text range in the text editor. <codeph>GetEditorContentForFep()</codeph> allows
+the FEP to retrieve any segment of the text held in the text editor. <codeph>GetFormatForFep()</codeph> sets
+its first parameter according to the character format at the position in the
+text editor specified by the second parameter. <codeph>GetScreenCoordinatesForFepL()</codeph> sets
+the first parameter to the screen coordinates of the left end of the baseline
+of the character glyph whose position in the text editor is specified by the
+last parameter. The second and third parameters are set, respectively, to
+the height and ascent of the font used at that document position. This function
+can be used, for example, to position a FEP window as close as possible to
+the text editor’s insertion point (in other words, the cursor position). </p> <p>The <codeph>Extension1()</codeph> member
+function of <xref href="GUID-A5D563D6-A99A-31DF-B844-5F94EF5FFE87.dita"><apiname>MCoeFepAwareTextEditor</apiname></xref> returns a pointer to
+an object of the interface class <xref href="GUID-C8F42D8B-D03B-3559-9E7C-BBE94C4E7F66.dita"><apiname>MCoeFepAwareTextEditor_Extension1
+          </apiname></xref> (defined in <filepath>epoc32\include\FEPBASE.H</filepath>).
+This class has two public (pure) virtual functions whose signatures are as
+follows: </p> <codeblock id="GUID-3E87C57E-AF43-5268-BC0A-AC34B62C8BAA" xml:space="preserve">virtual void SetStateTransferingOwnershipL(CState* aState, TUid aTypeSafetyUid)=0;
+virtual CState* State(TUid aTypeSafetyUid)=0;</codeblock> <p>The <codeph>CState</codeph> class
+is defined within the scope of the <xref href="GUID-C8F42D8B-D03B-3559-9E7C-BBE94C4E7F66.dita"><apiname>MCoeFepAwareTextEditor_Extension1</apiname></xref> class.
+The purpose of the UIDs in the two functions above is to enable the FEP to
+safely downcast the <codeph>CState</codeph> pointer returned by the <codeph>State()</codeph> function
+to a pointer to a derived class known about by the FEP. The <codeph>CState</codeph> class
+is provided to enable FEPs to store state information inside text editor controls,
+where that state information is only of interest to the FEP. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-386A94C7-BCB4-55B5-843E-E4AC03A2E230.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-386A94C7-BCB4-55B5-843E-E4AC03A2E230"><title>Paradigms for Accessing Remote Message Stores </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>There are three paradigms for accessing Message Stores (mailbox) remotely. </p> <ul><li id="GUID-8CB2218C-6516-52E7-B7C8-DF9EA920026F"><p> <b>Offline:</b> In offline operation, a email client application or "mail user agent" (MUA) fetches messages from a mail server to the machine where the mail program is running, and then deletes them from the server. </p> </li> <li id="GUID-5EB8928A-9546-5CA3-90E4-B90DEA2420F8"><p> <b> Online:</b> In online operation, a email client application fetches messages and manipulate them remotely, but messages are left on the mail server. </p> </li> <li id="GUID-E9BDB7FD-17E6-56B4-9E18-E055FE86A1A9"><p> <b>Disconnected:</b> In disconnected operation, a mail client connects to the mail server, makes a cache copy of selected messages, and disconnects from the server. When the application reconnects, it resynchronize with the server. </p> </li> </ul> <p>In both online and disconnected access modes, mail is left on the server, which is important when different computers are used at different times to access messages. Post Office Protocol (POP) and the Internet Message Access Protocol (IMAP) protocols support all the three modes. </p> </conbody><related-links><link href="GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita"><linktext>Email Overview</linktext> </link> <link href="GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita"><linktext>IMAP MTM</linktext> </link> <link href="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita"><linktext>POP3 MTM</linktext> </link> <link href="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita"><linktext>SMTP MTM</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-386FD0B9-D502-577C-BED2-5F31D9CA67CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-386FD0B9-D502-577C-BED2-5F31D9CA67CC"><title>Using TSwizzle operators</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-BE588434-A777-5D14-9BF1-3FF80C4FC054"><title>Using the conversion to T* operator</title> <p>In the following code fragment, the compiler invokes the <codeph>T*()</codeph> operator (because a pointer is required) for the <codeph>TSwizzle&lt;CClassB&gt;</codeph> object <codeph>iB</codeph>, before calling <codeph>delete</codeph>.</p> <codeblock id="GUID-260F2210-D7A7-5314-9E60-9214940B3FB3" xml:space="preserve">CClassABC::~CClassABC()
+    {
+    ...
+    if (iB.IsPtr())
+        delete iB;
+    }</codeblock> </section> <section id="GUID-B0ADBF8D-0FE1-5D8A-AC5D-129E6F900B0D"><title>Using the indirection operator</title> <p>In the following code fragment, the <codeph>*()</codeph> operator returns a reference to the <codeph>CClassB</codeph> object represented by the swizzle <codeph>TSwizzle&lt;CClassB&gt;</codeph> object, <codeph>iB</codeph>.</p> <codeblock id="GUID-0C7D82A7-2314-50FC-8111-7739BE4C0B5D" xml:space="preserve">TStreamId CClassABC::StoreL()
+    {
+    ...
+    outstream  &lt;&lt; *iB;
+    ...
+    }</codeblock> </section> <section id="GUID-7F2959D4-5A4C-5D65-A422-30C234FC7879"><title>Using the indirect component selector</title> <p>In the following code fragment, the operator <codeph>-&gt;</codeph> gives access to the member <codeph>iFixBuf</codeph> of the <codeph>CClassB</codeph> object which is represented by the <codeph>TSwizzle&lt;CClassB&gt;</codeph> swizzle, <codeph>iB</codeph>.</p> <codeblock id="GUID-C625B510-90D8-5845-8727-6041746CA5ED" xml:space="preserve">void CClassABC::ConstructB(...,...,...,...)
+    {
+    iB-&gt;iFixBuf    = aData;
+    ...
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E"><title>Tables for Application Developers and Phone Creators</title><shortdesc>This section lists the public tables that Symbian OS distributes. These tables are available to application developers and phone creators. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><p>Each item in the following list shows the name of a Symbian OS defined table and the purpose of that table. Each item also states if there are limits on the number of records the table can contain. Each entry in the Table Name column links to the details of the structure of a record in that table. </p> </section> <table id="GUID-FF8C06C6-365D-5A0D-A1FF-07194D2C5881"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Table Name</entry> <entry>Description</entry> <entry> Number of records</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point</xref>  </p> </entry> <entry><p>Defines an Access Point. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-D405660A-CC87-5700-90D4-5CC6343386F7">Chargecard</xref>  </p> </entry> <entry><p>Information about the charge or credit card used to pay for the service. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-6C3F3B79-CA04-559F-9D9D-188BE8BBF962">ConnectionPreferences</xref>  </p> </entry> <entry><p>Information about the preferred Access Point. </p> </entry> <entry><p>No limit but only two are used. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-430CB4B1-2AC5-5773-AA59-ED8D275D555A">DialInISP </xref>  </p> </entry> <entry><p>Defines inbound circuit-switched connections from Internet Service Providers. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-430CB4B1-2AC5-5773-AA59-ED8D275D555A">DialOutISP</xref>  </p> </entry> <entry><p>Defines the outbound circuit-switched connectons to Internet Service Providers. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-7383902B-10D2-52F3-8BDB-478CA6FB587D">GlobalSettings</xref>  </p> </entry> <entry><p>Defines global phone settings. </p> </entry> <entry><p>One record only. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-57197DDE-9DE0-5978-8F2F-D2E370489E3C"> IAP</xref>  </p> </entry> <entry><p>Defines Internet Access Point settings. Each Internet Access Point is defined as a specified service using a specified bearer. </p> </entry> <entry><p>One record for each Access Point </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-2C3649AE-AEB1-5625-84AE-8FC2E406F604"> IncomingGPRS</xref>  </p> </entry> <entry><p>Defines the providers for the inbound wireless connection from GPRS service. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-AFCD9E94-411C-51E0-B2E4-F1F490199887">LANBearer </xref>  </p> </entry> <entry><p>Defines connections that use a Local Area Network like Ethernet or Wi-Fi. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-7230C019-50CA-52A6-A21B-EED1C6D7E60C"> LANService </xref>  </p> </entry> <entry><p>Defines lLocal area network services. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-1988731C-4EF5-52E5-88EB-DB4B636B1597">Location</xref>  </p> </entry> <entry><p>Defines location information like country code, area prefix etc. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-3AA68B24-193B-5C17-86E1-DA6909805353">Modembearer </xref>  </p> </entry> <entry><p>Defines modem-based connections like Ethernet, Bluetooth and Infrared. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-303A3C65-3391-540D-B0FB-75E92DC7663E"> Network </xref>  </p> </entry> <entry><p>Defines the information about the available networks. Each record identifies one available network used for multi-homing (maintaining multiple connections, sometimes over multiple technologies). </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-2C3649AE-AEB1-5625-84AE-8FC2E406F604">OutgoingGPRS </xref>  </p> </entry> <entry><p>Defines the providers for the outbound wireless connection to GPRS service. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-14D30617-5B76-50AA-A412-DA26FB994BF5">Proxies </xref>  </p> </entry> <entry><p>Information about the proxy servers. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-437C4AE0-D16B-50B7-8AD8-A4E8FA5F15E5">Tier</xref>  </p> </entry> <entry><p>This table is optional. The Symbian OS reference Tier Manager uses this table. </p> </entry> <entry><p>No limit. </p> </entry> </row> <row><entry><p> <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-4109E59D-03CA-59F9-BEE6-AFD9F5DC9BA4">UmtsR99QoSAndOn</xref>  </p> </entry> <entry><p>Information about Quality of Service (QoS ). </p> </entry> <entry><p>No limit. </p> </entry> </row> </tbody> </tgroup> </table> <section id="GUID-257F5AF4-3833-5994-B891-6E28625CF8E0"><title>Structure of records in the tables</title> <p>This section describes the structure of the records that make the Symbian OS defined tables. </p> <p>Each section contains the following information: </p> <ul><li id="GUID-C8FA6D93-6CC7-584A-82DC-A85E63C303D3"><p>the name of the Symbian OS class that defines the <xref href="GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita">record</xref>. The data members of the class define the fields and the links to other records. </p> </li> <li id="GUID-7C90A227-D85E-588D-A4A4-CE0B76ECEC99"><p>the symbol that defines the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">unique numeric Id</xref> that identifies the table. </p> </li> <li id="GUID-95612672-DC88-5C86-AAAF-0BC0E97403A7"><p>information about each field in the record: </p> <ul><li id="GUID-BB3432AF-0050-5361-94F0-50D4AA09EB07"><p>the name assigned to the field </p> </li> <li id="GUID-6B456F60-A379-54A2-94CE-2957D71A268D"><p>the description of the field </p> </li> <li id="GUID-25F75336-9BB9-5E59-AACC-0C87900FEC2C"><p>the name of the data member that represents the field or the link to another record. </p> </li> <li id="GUID-F042B889-8391-5944-9ECC-76804795D478"><p>the symbol that defines the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">unique numeric Id</xref> that identifies the field. </p> </li> <li id="GUID-AEF4A880-4C1D-5B74-BACF-1C1E10B8C9AA"><p>the type of value that are assigned to the field. For example: Integers, Enums, Booloeans, Text, etc </p> </li> <li id="GUID-71CF4BCF-0E99-5FBA-BB20-2027A67C8488"><p>The range of values or the set of values that the field can hold. </p> </li> </ul> </li> </ul> </section> <section id="GUID-52230909-4652-5613-8E52-6761E948907D"><title>Access Point</title> <p>This table defines an <xref href="GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita">Access Point</xref>. This table replaces the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-57197DDE-9DE0-5978-8F2F-D2E370489E3C">IAP table</xref>. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDAccessPointRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAccessPointRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-48AF7218-D68B-509D-96A0-13BEA7951EFA"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>Tier </p> </entry> <entry><p>The Tier that controls this access point </p> </entry> <entry><p> <codeph>iTier</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdTier</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>The Id of a Tier in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-437C4AE0-D16B-50B7-8AD8-A4E8FA5F15E5">Tier</xref> table. </p> </entry> </row> <row><entry><p>MCpr </p> </entry> <entry><p>A link to the MCPR table </p> </entry> <entry><p> <codeph>iMCpr</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMCpr</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>The Id of an <xref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita">MCpr</xref> in the <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-89580412-F28B-559B-B75E-49A0C8677B03">MCPR table</xref>. </p> </entry> </row> <row><entry><p>Cpr </p> </entry> <entry><p>A link to the CPR table </p> </entry> <entry><p> <codeph>iCpr</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCpr</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>The Id of a <xref href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita">Cpr</xref> in the <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-5EA551C3-CCB1-5BB2-9B27-6AD46FD3DA00">CPR table</xref>. </p> </entry> </row> <row><entry><p>SCpr </p> </entry> <entry><p>A link to the SCPR table </p> </entry> <entry><p> <codeph>iSCpr</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSCpr</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p>The Id of an <xref href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita">SCpr</xref> in the <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-08B57B63-09AB-5823-85E3-4614859BF35E">SCPR table</xref>. </p> </entry> </row> <row><entry><p>Protocol </p> </entry> <entry><p>A link to the Protocol table </p> </entry> <entry><p> <codeph>iProtocol</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocol</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p>The Id of a Protocol (<xref href="GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita#GUID-F8069628-BD32-535C-963A-A1CF8172E275/GUID-832AD765-692C-56BE-92AC-AF8AEFB69413">Flow</xref>) in the <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-38030834-D957-5F72-BFB8-BAFD1AABEA87">Protocol table</xref>. </p> </entry> </row> <row><entry><p>AppSID </p> </entry> <entry><p>An integer that defines the SID (secure Id) of the only client application that can use this Access Point. If this field is null, zero or empty, any client can use this Access Point </p> </entry> <entry><p> <codeph>iAppSID</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAppSID </apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>When not needed, set to zero (0). </p> </entry> </row> <row><entry><p>SelectionPolicy </p> </entry> <entry><p>Optional. Provides the selection policy for this access point. This field replaces IAPSelectionPolicy. The value is interpreted by the MCPR. For example, in the reference MCPRs this value refers to a RecordId in the <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-ED2B57CA-DF29-5157-8DB6-EABCE8446718">AP Priority Selection Policy Table</xref>  </p> </entry> <entry><p> <codeph>iSelectionPolicy</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSelectionPolicy</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Dependent on MCPR implementation. </p> </entry> </row> <row><entry><p>CprConfig </p> </entry> <entry><p>Optional. This field provides additional information about the Layer that is understood by the Layer. For example, it can refer to a row in a table the MCPR knows about that holds meta-data for the MCPR and all the other providers needed to build the layer </p> </entry> <entry><p> <codeph>iCprConfig</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTId CprConfig </apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Dependent on Layer implementation. </p> </entry> </row> <row><entry><p>ConfigAPIdList </p> </entry> <entry><p>Optional. A string that identifies one or more Configuration Access Points for this Access Point </p> </entry> <entry><p> <codeph>iConfigAPIdList</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConfigAPIdList</apiname></xref>  </p> </entry> <entry><p>Short Text </p> </entry> <entry/></row> </tbody> </tgroup> </table> </section> <section id="GUID-D405660A-CC87-5700-90D4-5CC6343386F7"><title>Chargecard table</title> <p>This table contains the details of the user account used to pay for services. This is an optional table. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDChargecardRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdChargecardRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-12159945-B6A4-5104-8ABF-DB30A255B071"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible values</entry> </row> </thead> <tbody><row><entry><p>AccountNumber </p> </entry> <entry><p>The account number of the user. </p> </entry> <entry><p> <codeph>iAccountNumber</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAccountNo</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A valid account number </p> </entry> </row> <row><entry><p>Pin </p> </entry> <entry><p>The PIN of the account. The pin is masked by <b>*</b> characters </p> </entry> <entry><p> <codeph>iPin</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdPin</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A valid PIN </p> </entry> </row> <row><entry><p>LocalRule </p> </entry> <entry><p>A rule that defines the order in which the account information is used for local calls. This depends on the Network operator </p> </entry> <entry><p> <codeph>iLocalRule</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLocalRule</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Operator dependent rule </p> </entry> </row> <row><entry><p>NatRule </p> </entry> <entry><p>A rule that defines the order in which the account information is used for national calls. This depends on the Network operator </p> </entry> <entry><p> <codeph>iNatRule</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNatRule</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Operator dependent rule </p> </entry> </row> <row><entry><p>IntlRule </p> </entry> <entry><p>A rule that defines the order in which the account information is used for international calls. This depends on the Network operator </p> </entry> <entry><p> <codeph>iIntlRule</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIntlRule</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Operator dependent rule </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-14D30617-5B76-50AA-A412-DA26FB994BF5"><title>Proxies</title> <p>This table contains the details of a proxy server. This table is optional and is defined when a proxy server is used. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDProxiesRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProxiesRecord</apiname></xref>  </p> <table id="GUID-C8E7260A-1012-529A-A7B7-7104ED284D15"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible values</entry> </row> </thead> <tbody><row><entry><p>ISP </p> </entry> <entry><p>The information about the ISP </p> </entry> <entry><p> <codeph>iService</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdISP</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the service table specified by the ProxyServiceType field </p> </entry> </row> <row><entry><p>ProxyServiceType </p> </entry> <entry><p>The service table information </p> </entry> <entry><p> <codeph>iServiceType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProxyServiceType</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Name of the service table used such as DialOutISP, IncomingGPRS,etc </p> </entry> </row> <row><entry><p>UseProxyServer </p> </entry> <entry><p>A boolean flag that indicates whether to use a proxy server </p> </entry> <entry><p> <codeph>iUseProxyServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdUseProxyServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p>TRUE - use the proxy server </p> <p>FALSE - do not use the proxy server </p> </entry> </row> <row><entry><p>ProtocolName </p> </entry> <entry><p>The name of the protocol that can be used by the proxy server </p> </entry> <entry><p> <codeph>iProtocolName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined protocol name such as Http </p> </entry> </row> <row><entry><p>ProxyServerName </p> </entry> <entry><p>The name of the proxy server used if any </p> </entry> <entry><p> <codeph>iServerName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdServerName</apiname></xref>  </p> </entry> <entry><p>Long text </p> </entry> <entry><p>Proxy server's URL </p> </entry> </row> <row><entry><p>PortNumber </p> </entry> <entry><p>The port number used by the proxy server </p> </entry> <entry><p> <codeph>iPortNumber</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdPortNumber</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A port number </p> </entry> </row> <row><entry><p>Exceptions </p> </entry> <entry><p>A list of addresses for which the proxy server should not be used </p> </entry> <entry><p> <codeph>iExceptions</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdExceptions</apiname></xref>  </p> </entry> <entry><p>Long text </p> </entry> <entry><p>URL address separated by semicolon </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-6C3F3B79-CA04-559F-9D9D-188BE8BBF962"><title>Connection preferences table</title> <p>The Comms Database has many Internet Access Points (IAP) that represent possible network connections. The Connection Preferences table is lists the IAPs in order of preference. If the device cannot connect to the most preferred network, the device tries to connect to the next network in the list. </p> <p>For example, a device can try a GSM connection if a a GPRS connection is not available. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDConnectionPrefsRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConnectionPrefsRecord</apiname></xref>  </p> <title>List of fields that define a record for this table </title> <table id="GUID-0D95F8B1-C380-514C-9EEC-24D96C2539C4"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry>Possible values</entry> </row> </thead> <tbody><row><entry><p>Ranking </p> </entry> <entry><p>This field defines the order of preference. </p> <p>A value of 1 is the highest; a value of 2 is the next highest etc. </p> <p>A value of 0 means that the connection information is stored in this table. It is not used to make connections. </p> <p>For inbound connections the CommsDat API limits the value to 0 or 1. Only one record with the value 1 is allowed. There is no limit on the number of records with the value 0. </p> <p>For outbound connections the maximum value is the value in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-7383902B-10D2-52F3-8BDB-478CA6FB587D">GlobalSettings</xref> table. Only one record with the value 1 is allowed. Only one record with the value 2 is allowed etc. There is no limit on the number of records with the value 0. </p> <p>Multiple records with the same ranking (except for 0) and the same direction are not allowed. There is no limit on the number of records with the value 0. </p> </entry> <entry><p> <codeph>iRanking</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdRanking</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p><table id="GUID-7B33A1CF-7517-5431-A67A-144146B6E5FB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> CED value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>1</p> </entry> <entry><p>First choice </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Second choice </p> </entry> </row> <row><entry><p>0</p> </entry> <entry><p>Not used </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>Direction </p> </entry> <entry><p>Indicates the direction of the data </p> </entry> <entry><p> <codeph>iDirection</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDirection</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-4E8A1569-B068-585A-8FF9-60DB2C564F38"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>Incoming </p> </entry> <entry><p>Inbound connection </p> </entry> <entry><p>TCommDbConnectionDirection::ECommDbConnectionDirectionIncoming </p> </entry> </row> <row><entry><p>Outgoing </p> </entry> <entry><p>Outbound connection </p> </entry> <entry><p>TCommDbConnectionDirection::ECommDbConnectionDirectionOutgoing </p> </entry> </row> <row><entry><p>UNKNOWN </p> </entry> <entry><p>Connection direction is unknown </p> </entry> <entry><p>TCommDbConnectionDirection::ECommDbConnectionDirectionUnknown </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>BearerSet </p> </entry> <entry><p>Defines the set of bearers that can be used in the connection </p> </entry> <entry><p> <codeph>iBearerSet</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerSet</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-9A5A7BFC-1579-5902-BF1A-9EAAB073A607"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>CSD </p> </entry> <entry><p>Circuit-switched data connection will be used </p> </entry> <entry><p>TCommDbBearer::KCommDbBearerCSD </p> </entry> </row> <row><entry><p>PSD </p> </entry> <entry><p>Packet-switched data connection will be used </p> </entry> <entry><p>TCommDbBearer::KCommDbBearerPSD </p> </entry> </row> <row><entry><p>GPRS </p> </entry> <entry><p>GPRS connection will be used </p> </entry> <entry><p>TCommmDbBearer::KCommDbBearerLAN </p> </entry> </row> <row><entry><p>LAN </p> </entry> <entry><p>Local area network will be used </p> </entry> <entry><p>TCommDbBearer::KCommdbBearerCdma2000 </p> </entry> </row> <row><entry><p>CDMA2000 </p> </entry> <entry><p>CDMA 2000 connection will be used </p> </entry> <entry><p>TCommDbBearer::KCommdbBearerCdma2000 </p> </entry> </row> <row><entry><p>Virtual </p> </entry> <entry><p>Virtual bearer will be used </p> </entry> <entry><p>TCommDbBearer::KCommdbBearerCdma2000 </p> </entry> </row> <row><entry><p>PAN </p> </entry> <entry><p>PAN bearer will be used </p> </entry> <entry><p>TCommDbBearer::KCommdbBearerPAN </p> </entry> </row> <row><entry><p>WCDMA </p> </entry> <entry><p>WCDMA bearer will be used </p> </entry> <entry><p>TCommDbBearer::KCommdbBearerWcdma </p> </entry> </row> <row><entry><p>CSD &amp; WCDMA </p> </entry> <entry><p>Values can be ANDed together to indicate that either of the bearers could be used </p> </entry> <entry/></row> <row><entry><p>CSD &amp; PSD </p> </entry> <entry><p>Values can be ANDed together to indicate that either of the bearers could be used </p> </entry> <entry/></row> <row><entry><p>UNKNOWN </p> </entry> <entry><p>Bearer support is unknown </p> </entry> <entry/></row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>DialogPref </p> </entry> <entry><p>A flag that prompts the user of the connection. It can be set to warn the user of the connection or prompt the user with a menu to choose the connection. </p> </entry> <entry><p> <codeph> iDialogPref</codeph>  </p> </entry> <entry><p>KCDTIdDialogPref </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-C1A67797-0A67-5D9B-97C8-739738217ECC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>PROMPT </p> </entry> <entry><p>Prompts the user with a menu </p> </entry> <entry><p>TCommDbDialogPref::ECommDbDialogPrefPrompt </p> </entry> </row> <row><entry><p>DONOTPROMPT </p> </entry> <entry><p>Does not prompt the user </p> </entry> <entry><p>TCommDbDialogPref::ECommDbDialogPrefDoNotPrompt </p> </entry> </row> <row><entry><p>WARN </p> </entry> <entry><p>Warns the user of the connection </p> </entry> <entry><p>TCommDbDialogPref::ECommDbDialogPrefWarn </p> </entry> </row> <row><entry><p>UNKNOWN </p> </entry> <entry><p>CommDB dialog preferences unknown </p> </entry> <entry><p>TCommDbDialogPref::ECommDbDialogPrefUnknown </p> </entry> </row> <row><entry><p>PROMPTIFWRONG </p> </entry> <entry><p>Prompts the user when in wrong mode </p> </entry> <entry><p>TCommDbDialogPref::ECommDbDialogPrefPromptIfWrongMode </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>IAP </p> </entry> <entry><p>Integer that represents a link to the Access Point record in the IAP table. </p> </entry> <entry><p> <codeph>iDefaultIAP</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPLink</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Record id from the IAP table </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-7383902B-10D2-52F3-8BDB-478CA6FB587D"><title>Global Settings table</title> <p>This table contains the global settings for a device. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDGlobalSettingsRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdGlobalSettingsRecord</apiname></xref>  </p> <title>List of fields that define a record for this table </title> <table id="GUID-8FAF859B-C9D5-5FAD-A859-3B5797422232"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>SmsBearer </p> </entry> <entry><p>The default bearer for SMS </p> </entry> <entry><p> <codeph>iSMSBearer </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSMSBearer</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-E6E7A52B-94D7-5361-BAE3-E1A0EFC6D328"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>SMS will be sent using packet-switched network (GPRS) </p> </entry> <entry><p>TMobileSMSBearer::ESMSBearerPacketOnly </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>SMS will be sent using circuit-switched network (GSM) </p> </entry> <entry><p>TMobileSMSBearer::ESMSBearerCircuitOnly </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>SMS will be sent using packet-switched network (GPRS) if possible otherwise using circuit-switched network (GSM) </p> </entry> <entry><p>TMobileSMSBearer::ESMSBearerPacketPreferred </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>SMS will be sent using circuit-switched network (GSM) if possible otherwise using packet-switched network (GPRS) </p> </entry> <entry><p>TMobileSMSBearer::ESMSBearerCircuitPreferred </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>SmsReceiveMode </p> </entry> <entry><p>If the client receives an unstored new message which the phone has not acknowledged, then the client has the responsibility of attempting to store the message and then either “<codeph>acking</codeph> ” or “<codeph>nacking</codeph> ” that message to the network. If the client receives a new message, which the phone has already stored and has acknowledged, then the client does not have to do anything further </p> </entry> <entry><p> <codeph>iSMSReceiveMode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSMSReceiveMode</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-18DC582A-D96C-57C7-BAC3-5E4A28930BEB"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Receive mode is unspecified </p> </entry> <entry><p>TMobileSMSReceiveMode::EReceiveModeUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Phone will store and acknowledge all incoming messages before passing them onto TSY </p> </entry> <entry><p>TMobileSMSReceiveMode::EReceiveUnstoredPhoneAck </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Phone will acknowledge but NOT store all incoming messages before passing them onto TSY and it's the client's responsibility to store the message </p> </entry> <entry><p>TMobileSMSReceiveMode::EReceiveUnstoredClientAck </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Phone acknowledges and stores the message </p> </entry> <entry><p>TMobileSMSReceiveMode::EReceiveStored </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Phone may pass on either stored or unstored messages to TSY </p> </entry> <entry><p>TMobileSMSReceiveMode::EReceiveEither </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>GPRSAttachMode </p> </entry> <entry><p>Determines when a device attaches to a GPRS network </p> </entry> <entry><p> <codeph>iGPRSAttachMode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdGPRSAttachMode</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-1959AC4B-B104-5693-BD3B-62E1EFB716CB"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>The phone atches to the network whenever a GPRS service is available </p> </entry> <entry><p>TAttachMode::EAttachWhenPossible </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>The phone attaches to the network only when a GPRS service is required </p> </entry> <entry><p>TAttachMode::EAttachWhenNeeded </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>AcceptIncomingGprs </p> </entry> <entry><p>Determines whether or not to accept an incoming GPRS connection when an application is waiting for the service </p> </entry> <entry><p> <codeph>iAcceptincomingGPRS </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAcceptincomingGPRS</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-9A55753A-B4A9-5933-9B8C-42788F97ACE2"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Accepts automatically </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not accepts automatically </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ConnectionAttempts </p> </entry> <entry><p>Maximum number of attempts to connect to the network </p> </entry> <entry><p> <codeph>iMaxConnectionAttempts</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMaxConnectionAttempts</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>1 or 2 </p> <p> <i>2 is the default value</i>  </p> </entry> </row> <row><entry><p>ModemForDataAndFax </p> </entry> <entry><p>Default bearer for data and fax calls </p> </entry> <entry><p> <codeph>iModemForDataAndFax</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdModemDataFax</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the ModemBearer table </p> </entry> </row> <row><entry><p>LocationForDataAndFax </p> </entry> <entry><p>Default location information for data and fax calls </p> </entry> <entry><p> <codeph>iLocationForDataAndFax </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLocationDataFax</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the Location table </p> </entry> </row> <row><entry><p>GPRSClassCBearer </p> </entry> <entry><p>The preferred bearer when the device is forced into GPRS Class C operation. Class C means that the device can be active in either GSM or GPRS mode, but not at the same time </p> </entry> <entry><p> <codeph>iGPRSClassCBearer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdGPRSClasscBearer</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-398A089A-41CB-5C42-B323-E692EDDF0608"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Instructs the phone stack to attach to network whenever it can. </p> </entry> <entry><p>TAttachMode::EAttachWhenPossible </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Instructs the phone stack to attach to network only when required (e.g. activating a connection </p> </entry> <entry><p>GPRS </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>DefaultNetwork </p> </entry> <entry><p>Default network information </p> </entry> <entry><p> <codeph>idefaultNetwork </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDefaultNetwork </apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Reference to the default network record in the network table </p> </entry> </row> <row><entry><p>BearerAvailablityCheckTSY </p> </entry> <entry><p>The TSY used to check for bearer availablity </p> </entry> <entry><p> <codeph>iBearerAvailabilityCheckTSY </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerAvailabilityCheckTSY</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Possible TSY values </p> </entry> </row> <row><entry><p>ModemForPhoneServicesAndSMS </p> </entry> <entry><p>Modem settings for phone and SMS services </p> </entry> <entry><p> <codeph>iModemForPhoneServicesAndSMS</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdModemPhoneServicesSMS</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the ModemBearer table </p> </entry> </row> <row><entry><p>LocationForPhoneServicesAndSMS </p> </entry> <entry><p>Sets the default location from which you are dialling for phone services such as a SMS service </p> </entry> <entry><p> <codeph> iLocationForPhoneServicesAndSMS</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLocationPhoneServicesSMS</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the Location table </p> </entry> </row> <row><entry><p>RedialAttempts </p> </entry> <entry><p>Maximum number of redial attempts when the ISP dailled is busy </p> </entry> <entry><p> <codeph>iMaxRedialAttempts</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMaxRedialAttempts</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> <p> <i>This field cannot have null value</i>  </p> </entry> </row> <row><entry><p>maxMBufHeap </p> </entry> <entry><p>Maximum RMBuf heap size </p> </entry> <entry><p> <codeph>iMaxBufHeap</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMaxMBufHeap</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value specifying maximum size of the buffer (in bytes) </p> </entry> </row> <row><entry><p>DefaultAgent </p> </entry> <entry><p>The default agent to be used </p> </entry> <entry><p> <codeph>iDefaultAgent</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDefaultAgent</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the AgentLookup table </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-57197DDE-9DE0-5978-8F2F-D2E370489E3C"><title>IAP table </title> <p>This table contains configuration information for Internet Access Points (IAPs). </p> <p>One record exists for each Access Point with a specified service and a specified bearer. Some fields in this table link to records in other tables. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDIAPRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <p> <i>All fields in the IAP table can have a null value except the IAPService field. </i>  </p> <table id="GUID-A2E7CE0A-54EC-5FD0-BB4F-C9A30A2115AC"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>IAPServiceType </p> </entry> <entry><p>The type of service that this IAP table uses. </p> </entry> <entry><p> <codeph>iServiceType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPServicetype</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>The name of a service table. For example: <codeph>DialOutISP</codeph>, <codeph>LANService</codeph>, and <codeph>OutgoingGPRS</codeph> </p> </entry> </row> <row><entry><p>IAPService </p> </entry> <entry><p>The specific service used. </p> </entry> <entry><p> <codeph>iService</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPService</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A link to a specified record in the service table. The value 1 means use the first record; the value 2 means use the second record etc. </p> </entry> </row> <row><entry><p>IAPBearerType </p> </entry> <entry><p>The type of bearer that this IAP table uses. </p> </entry> <entry><p> <codeph>iBearerType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPBearerType</apiname></xref>  </p> </entry> <entry><p>Medium text </p> </entry> <entry><p>The name of a bearer table. For example: <codeph>ModemBearer</codeph> and<codeph> LANBearer</codeph>  </p> </entry> </row> <row><entry><p>IAPBearer </p> </entry> <entry><p>The specific bearer used. </p> </entry> <entry><p> <codeph>iBearer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPBearer</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A link to a specified record in the bearer table. </p> </entry> </row> <row><entry><p>IAPNetwork </p> </entry> <entry><p>The network to be used. </p> </entry> <entry><p> <codeph>inetwork</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPNetwork</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A link to a record in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-303A3C65-3391-540D-B0FB-75E92DC7663E">Network</xref> table . </p> </entry> </row> <row><entry><p>IAPNetworkWeighting </p> </entry> <entry><p>If a number of IAPs can connect to the same network, use the value of this field to select which IAP connects first. </p> <p>The IAOP with the highest weighting tries first. </p> <p>Use weighting if ConnectionPreferences ranking is not used </p> </entry> <entry><p> <codeph>inetworkWeighting</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPNetworkWeighting</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>Location </p> </entry> <entry><p>The location information to be used by the Access Point </p> </entry> <entry><p> <codeph>iLocation</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPLocation</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A link to a record in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-1988731C-4EF5-52E5-88EB-DB4B636B1597">Location</xref> table </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-AFCD9E94-411C-51E0-B2E4-F1F490199887"><title>LAN bearer table</title> <p>Set up this table when a device connects to a Local Area Network like Ethernet and Wi-Fi. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDLANBearerRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-3FFF5B23-A9EC-5584-9953-D69F6AB9CA30"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>IfName </p> </entry> <entry><p>Interface name used to implement a network connection protocol such as PPP. </p> </entry> <entry><p> <codeph>iLANBearerNifName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerNifName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined interface name </p> </entry> </row> <row><entry><p>LDDName </p> </entry> <entry><p>Logical device driver (LDD) name used as an interface with lower layer physical device driver (PDD). </p> </entry> <entry><p> <codeph>iLANBearerLddName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerLddName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Name of the driver used </p> </entry> </row> <row><entry><p>PDDName </p> </entry> <entry><p>The name of the physical device driver interacting with the hardware. </p> </entry> <entry><p> <codeph>iLANBearerPddName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerPddName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Name of the driver used </p> </entry> </row> <row><entry><p>LDDFileName </p> </entry> <entry><p>The .<keyword>DLL</keyword> file used by the logical device driver (LDD). </p> </entry> <entry><p> <codeph>iLANBearerLddFileName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerLddFilename</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>.DLL file name </p> </entry> </row> <row><entry><p>PDDFileName </p> </entry> <entry><p>The .<keyword>DLL</keyword> file used by the physical device driver (PDD). </p> </entry> <entry><p> <codeph>iLANBearerPddFileName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerPddFileName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>.DLL file name </p> </entry> </row> <row><entry><p>LastSocketActivityTimeout </p> </entry> <entry><p>Time to stay connected when all socket activity is ceased. </p> </entry> <entry><p> <codeph>iLastSocketActivityTimeout</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANLastSocketActivityTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value in seconds </p> </entry> </row> <row><entry><p>LastSessionClosedTimeout </p> </entry> <entry><p>Time to stay connected when the session is closed. </p> </entry> <entry><p> <codeph>iLastSessionClosedTimeout</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANLastSessionClosedTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value in seconds. </p> </entry> </row> <row><entry><p>LastSocketClosedTimeout </p> </entry> <entry><p>Time to stay online when the socket is closed </p> </entry> <entry><p> <codeph>iLastSocketClosedTimeout</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANLastSocketClosedTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value in seconds. </p> </entry> </row> <row><entry><p>Agent </p> </entry> <entry><p>The file name of the agent used. </p> </entry> <entry><p> <codeph>iBearerAgent</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerAgent</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>The file name with extension such as DummyPSD.agt </p> </entry> </row> <row><entry><p>BearerTechnology </p> </entry> <entry><p>The method used by the bearer to transmit data. </p> </entry> <entry><p> <codeph>iBearerTechnology</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerTechnology</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-095B2110-7862-51C5-9B3C-48BBA88F5842"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>CSD </p> </entry> <entry><p>Bearer establishes circuit-switched connection </p> </entry> </row> <row><entry><p>HSCSD </p> </entry> <entry><p>Bearer establishes high speed circuit-switched connection </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>PacketDriverName </p> </entry> <entry><p>The name of the packet driver. The packet driver is used to initiate access to a specific packet type, to end access to it, to send a packet, to get statistics on the NIF and to get information about the NIF. </p> </entry> <entry><p> <codeph>iPacketDriverName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANBearerPacketDriverName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Name of the packet driver </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-7230C019-50CA-52A6-A21B-EED1C6D7E60C"><title>LAN service table</title> <p>This table contains the details of the gateway server. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDLANServiceRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANServiceRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-EF326FD9-2758-57BC-AEB2-10570494120C"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>IfNetworks </p> </entry> <entry><p>Type of network layer interface used. </p> </entry> <entry><p> <codeph>iIfNetworks</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIfNetworks</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>One of: </p> <p>"<codeph>ip</codeph> " </p> <p>"<codeph>ip6</codeph> " </p> <p>"<codeph>ip,ip6</codeph> " </p> </entry> </row> <row><entry><p>IpNetmask </p> </entry> <entry><p>Netmasking address. </p> </entry> <entry><p> <codeph>iIpNetmask</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpNetmask</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined address </p> </entry> </row> <row><entry><p>IpGateway </p> </entry> <entry><p>Gateway IP address. </p> </entry> <entry><p> <codeph>iIpGateway</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpGateway</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Optional. User defined address. If not set, the value of <codeph>IpAddr</codeph> is used. </p> </entry> </row> <row><entry><p>IpAddrFromServer </p> </entry> <entry><p>Determines whether or not to get IP address from the ISP </p> </entry> <entry><p> <codeph>iIpAddrFromServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-4F55F79A-F28B-53C6-83D6-639B69F656DF"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets IP address from the ISP </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IP address from the ISP </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null. This field should be set to FASLE for using static IP address</i>  </p> </entry> </row> <row><entry><p>IpAddr </p> </entry> <entry><p>IP address of the device. </p> </entry> <entry><p> <codeph>iIpAddr</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpAddr</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined address </p> </entry> </row> <row><entry><p>IpDNSAddrFromServer </p> </entry> <entry><p>Determines whether or not to get DNS address for IPv4 from the ISP. </p> </entry> <entry><p> <codeph>iIpDnsAddrFromServer </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpDNSAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-97D85582-A0D9-5F72-88D0-69982D494B40"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the IPv4 DNS address from the ISP </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IPv4 DNS address from the ISP </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null, may be set to FALSE for using static DNS server address specified in IpNameServer1 and IpNameServer2 fields</i>. </p> </entry> </row> <row><entry><p>Ip6DNSAddrFromServer </p> </entry> <entry><p>Determines whether or not to get DNS address for IPv6 from the ISP. </p> </entry> <entry><p> <codeph>iIp6DNSAddrFromServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIp6DNSAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-4DE9EA5A-35FB-5B93-A196-905E96EF3722"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the IPv6 DNS address from the ISP </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IPv6 DNS address from the ISP </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null, may be set to FALSE for using static DNS server address specified in Ip6NameServer1 and Ip6NameServer2 fields</i>. </p> </entry> </row> <row><entry><p>IpNameServer1 </p> </entry> <entry><p>Static address of the primary IPv4 DNS server. </p> </entry> <entry><p> <codeph>iIpNameServer1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpNameServer1</apiname></xref>  </p> </entry> <entry><p>An IPv4 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IpNameServer2 </p> </entry> <entry><p>Static address of the secondary IPv4 DNS server. </p> </entry> <entry><p> <codeph>iIpNameServer2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpNameserver2</apiname></xref>  </p> </entry> <entry><p>An IPv4 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>Ip6NameServer1 </p> </entry> <entry><p>Static address of the primary IPv6 DNS server. </p> </entry> <entry><p> <codeph>iIp6NameServer1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIp6NameServer1</apiname></xref>  </p> </entry> <entry><p>An IPv6 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>Ip6NameServer2 </p> </entry> <entry><p>Static address of the secondary IPv6 DNS server. </p> </entry> <entry><p> <codeph>iIp6NameServer2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIp6NameServer2</apiname></xref>  </p> </entry> <entry><p>An IPv6 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IpAddrLeaseValidFrom </p> </entry> <entry><p>Address configuration daemon name </p> </entry> <entry><p> <codeph>iIpAddrLeaseValidFrom</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpAddrLeaseValidfrom</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined text values of start date and time of the lease </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IpAddrLeaseValidTo </p> </entry> <entry><p>Start of lease of dynamic address allocated by the ISP </p> </entry> <entry><p> <codeph>iIpAddrLeaseValidTo</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANIpAddrLeaseValidTo</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined text value containing the end date and time of the lease </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>ConfigDaemonManagerName </p> </entry> <entry><p>Name of the ECOM daemon manager plug-in for NIFMAN used to load a specific configuration daemon </p> </entry> <entry><p> <codeph> iConfigDaemonManagerName </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANConfigdaemonManagerName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p> <i>Same as description</i>  </p> </entry> </row> <row><entry><p>ConfigDaemonName </p> </entry> <entry><p>End of lease of dynamic address allocates by the ISP </p> </entry> <entry><p> <codeph>iConfigDaemonName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANConfigDaemonName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p> <i>Same as description</i>  </p> </entry> </row> <row><entry><p>LANServiceExtensionTableName </p> </entry> <entry><p>Name of the extension table </p> </entry> <entry><p> <codeph>iserviceExtensionTablename</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANServiceExtensionTableName</apiname></xref>  </p> </entry> <entry><p> <i>Same as description</i>  </p> </entry> <entry><p> <i>Same as description</i>  </p> </entry> </row> <row><entry><p>LanServiceExtensionTableRecordId </p> </entry> <entry><p>Record of the extension table </p> </entry> <entry><p> <codeph>iServiceExtensionTableRecord</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLANServiceExtensionTableRecordId</apiname></xref>  </p> </entry> <entry><p> <i>Same as description</i>  </p> </entry> <entry><p> <i>Same as description</i>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-3AA68B24-193B-5C17-86E1-DA6909805353"><title>Modem bearer table</title> <p>Set up this table for modem-based connections like Ethernet, Wi-Fi and Bluetooth. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDModemBearerRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdModemBearerRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-9A1FDF96-176A-592E-8C97-F10204AA4BF1"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>IfName </p> </entry> <entry><p>The interface name that is used to implement a networkl layer protocol such as PPP </p> </entry> <entry><p> <codeph>iNifName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNifName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined interface name </p> </entry> </row> <row><entry><p>Agent </p> </entry> <entry><p>The file name of the agent used </p> </entry> <entry><p> <codeph>iBearerAgent</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerAgent</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Filename of the agent with the extension such as <i>DummyPSD.agt</i>  </p> </entry> </row> <row><entry><p>ControlChannelPortName </p> </entry> <entry><p>The modem control channel port name. A Control Channel is used in Optical Burst Switching, which provides the advantages of circuit switching and packet switching data. The channel is dedicated to providing a separate and secured transmission of BHP(Burst Header Packet). </p> </entry> <entry><p> <codeph>iControlChannelPortName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdControlChannelPortName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A port number </p> </entry> </row> <row><entry><p>BCAStack </p> </entry> <entry><p>Baseband Channel Adapter stack (BCA) provides an interface for the hardware adaptation layer (HAL) specifically, it is used to interface the R-Interface data plane transport with a NIF (network interface). </p> </entry> <entry><p> <codeph>iBCAStack</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBCDStack</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A list of BCA's separated by commas </p> </entry> </row> <row><entry><p>PortName </p> </entry> <entry><p>The Comm port name used by the modem </p> </entry> <entry><p> <codeph>iPortName </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdPortName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined port name </p> </entry> </row> <row><entry><p>TSYName </p> </entry> <entry><p>The name of the TSY which provides the hardware specific implementation of the ETEL server interface. </p> </entry> <entry><p> <codeph>iTSYName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdTsyName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A TSY name </p> </entry> </row> <row><entry><p>CSYName </p> </entry> <entry><p>The name of the CSY which implements the comm port specific interface to C32 </p> </entry> <entry><p> <codeph>iCSYName</codeph>  </p> </entry> <entry><p>K<xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CDTIdCsyName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A CSY name </p> </entry> </row> <row><entry><p>DataBits </p> </entry> <entry><p>Number of data bits used for serial port configuration </p> </entry> <entry><p> <codeph> iDataBits</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDataBits</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-6C70EEE6-710A-569B-81A7-F36705D42CD5"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>5</p> </entry> <entry><p>For Baudot code </p> </entry> <entry><p>TDataBits::EData5 </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Rarely used value </p> </entry> <entry><p>TDataBits::EData6 </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>True ASCII value </p> </entry> <entry><p>TDataBits::EData7 </p> </entry> </row> <row><entry><p>8 </p> </entry> <entry><p>For any kind of data </p> </entry> <entry><p>TDataBits::EData8 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>StopBits </p> </entry> <entry><p>Number of stop bits used for serial port configuration </p> </entry> <entry><p> <codeph>iStopBits</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdStopBits</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-3776597E-2CDD-508C-BB8F-B76FE53ADEA6"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>CED value</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>1 </p> </entry> <entry><p>TStopBits::EStop1 </p> </entry> </row> <row><entry><p>2 </p> </entry> <entry><p>TStopBits::Estop2 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>Parity </p> </entry> <entry><p>The type of parity used to detect corrupted data </p> </entry> <entry><p> <codeph>iParity</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdParity </apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-D8A47A4A-87A4-5198-B59E-E38896D321D5"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>NONE </p> </entry> <entry><p>No parity is used </p> </entry> <entry><p>Tparity::EParityNone </p> </entry> </row> <row><entry><p>EVEN </p> </entry> <entry><p>Even parity is used </p> </entry> <entry><p>Tparity::EParityEven </p> </entry> </row> <row><entry><p>ODD </p> </entry> <entry><p>Odd parity is used </p> </entry> <entry><p>Tparity::EParityOdd </p> </entry> </row> <row><entry><p>MARK </p> </entry> <entry><p>The parity bit is always set to mark signal (logical 1) </p> </entry> <entry><p>Tparity::EParityMark </p> </entry> </row> <row><entry><p>SPACE </p> </entry> <entry><p>Space parity transmits the parity bit in the space signal condition </p> </entry> <entry><p>Tparity::EParitySpace </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>Rate </p> </entry> <entry><p>The baud rate of the modem. Measured in bits per second (bps). This specifies the maximum rate that data can be sent on this modem bearer. </p> </entry> <entry><p> <codeph>iRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdRate</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p>50, 110, 134, 150, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800, 7200, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 576000, 1152000 </p> <p> <i>The data rates are specified in bits per second (bps)</i>  </p> <p>The enum value is expressed as TBps::EBps50, TBps::EBps70, etc. </p> <p><table id="GUID-29DF4534-69A0-5E1A-93FC-850F2D99D43A"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>AUTO </p> </entry> <entry><p>- Connection set-up will request auto-bauding. This means the ISP’s receiving device can accept data from a variety of transmitting devices operating at different speeds without needing to establish data rates in advance. </p> </entry> <entry><p>TBps::EBpsAutobaud </p> </entry> </row> <row><entry><p>SPECIAL </p> </entry> <entry><p>- Indicates a data rate defined by the user in SpecialRate field </p> </entry> <entry><p>TBps::EBpsSpecial </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>SpecialRate </p> </entry> <entry><p>A user defined baud rate. This field will be used only if SPECIAL is mentioned in the rate field </p> </entry> <entry><p> <codeph>iSpecialRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpecialRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined value </p> </entry> </row> <row><entry><p>HandShaking </p> </entry> <entry><p>The handshaking process between modems is encapsulated into one integer. This integer can be viewed as a binary bitmask of bits, each bit representing one of the pins inside the RS232 serial cable. The integer value can actually be derived from taking a binary OR of each of the bits </p> </entry> <entry><p> <codeph>iHandshaking</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdHandshaking</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Integer bit mask </p> </entry> </row> <row><entry><p>XOnChar </p> </entry> <entry><p>Character used to signal to the transmitter to resume sending when using XON/XOFF handshaking. This is a type of software flow control - using an agreed-upon set of characters as start and stop signals. XON/XOFF flow control typically assigns the ASCII DC1 character (also known as control-Q) as the start signal and the DC3 character (Device Code3 (control-S)) as the stop signal. Both of these characters are usually reserved for this purpose. There is also the option to choose different characters. Whenever the sender or the receiver wants to interrupt the data flow from the other (e.g. full buffers), it sends an XOFF to stop transmission. When its buffers are able again, it sends an XON to signal that data can be sent again. </p> </entry> <entry><p> <codeph>iXonChar </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdXonChar</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Integer value representing ctrl+Q. The field is set to 0 when the software for handshaking is not used </p> </entry> </row> <row><entry><p>XOffChar </p> </entry> <entry><p>Character used to signal the transmitter to suspend sending when using XON/XOFF handshaking. </p> </entry> <entry><p> <codeph>iXoffChar</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdXoffChar</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Integer value representing ctrl+S. The field is set to 0 when the software for handshaking is not used </p> </entry> </row> <row><entry><p>FaxClassPref </p> </entry> <entry><p>Preferred fax modem class supported by the fax client </p> </entry> <entry><p> <codeph>iFaxClassPref</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdFaxClassPref</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-9352F939-DBEF-571E-A0E1-F0B0F904A925"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>AUTO </p> </entry> <entry><p>Automatic detection of fax class </p> </entry> <entry><p>TFaxClass::EClassAuto </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Fax class 1 </p> </entry> <entry><p>TFaxClass::EClass1 </p> </entry> </row> <row><entry><p>1.0 </p> </entry> <entry><p>Fax class 1.0 </p> </entry> <entry><p>TFaxClass::EClass1point0 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Fax class 2 </p> </entry> <entry><p>TFaxClass::EClass2 </p> </entry> </row> <row><entry><p>2.0 </p> </entry> <entry><p>Fax class 2.0 </p> </entry> <entry><p>TFaxClass::EClass2point0 </p> </entry> </row> <row><entry><p>2.1 </p> </entry> <entry><p>Fax class 2.1 </p> </entry> <entry><p>TFaxClass::EClass2point1 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>SpeakerPref </p> </entry> <entry><p>Preferred speaker mode </p> </entry> <entry><p> <codeph>iSpeakerPref </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerPref</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-CA674172-7BC2-5434-80A0-B1897EA1F6ED"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>NEVER </p> </entry> <entry><p>Speaker off </p> </entry> <entry><p>TCommsDbModemSpeakerSetting::EModemSpeakerSettingNever </p> </entry> </row> <row><entry><p>UNTILCALLANSWERED </p> </entry> <entry><p>Speaker on until the call is answered </p> </entry> <entry><p>TCommsDbModemSpeakerSetting::EModemSpeakerSettingUntilCallAnswered </p> </entry> </row> <row><entry><p>ALWAYS </p> </entry> <entry><p>Speaker is always on </p> </entry> <entry><p>TCommsDbModemSpeakerSetting::EModemSpeakerSettingAlways </p> </entry> </row> <row><entry><p>AFTERDIALUNTILANSWERED </p> </entry> <entry><p>Speaker on after dialling untill answer </p> </entry> <entry><p>TCommsDbModemSpeakerSetting: EModemSpeakerSettingAfterDialUntilAnswer </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>SpeakerVolPref </p> </entry> <entry><p>Preferred speaker volume </p> </entry> <entry><p> <codeph>iSpeakerVolPref</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerVolPref</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-BFB52F11-C31D-569A-95CD-88E23CBCD78B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>QUIET </p> </entry> <entry><p>Speaker off </p> </entry> <entry><p>TCommsDbModemSpeakerVolume::EModemSpeakerVolumeQuiet </p> </entry> </row> <row><entry><p>MEDIUM </p> </entry> <entry><p>Speaker volume set to medium </p> </entry> <entry><p>TCommsDbModemSpeakerVolume::EModemSpeakerVolumeMedium </p> </entry> </row> <row><entry><p>LOUD </p> </entry> <entry><p>Speaker volume set to loud </p> </entry> <entry><p>TCommsDbModemSpeakerVolume::EModemSpeakerVolumeLoud </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ModemInitString </p> </entry> <entry><p>A modem initialisation string. The modem is usually initialised by sending a string of commands, typically Hayes commands. These commands are useful in modem configuration. </p> </entry> <entry><p> <codeph>iModemInitString</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdModemInitString</apiname></xref>  </p> </entry> <entry><p>Binary </p> </entry> <entry><p>Hayes AT commands such as AT, ATZ, etc. </p> </entry> </row> <row><entry><p>DataInitString </p> </entry> <entry><p>Data initialisation string </p> </entry> <entry><p> <codeph>iDataInitString</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDataInitString</apiname></xref>  </p> </entry> <entry><p>Binary </p> </entry> <entry><p>Hayes AT commands such as AT, ATZ, etc. </p> </entry> </row> <row><entry><p>FaxInitString </p> </entry> <entry><p>Fax initialsation string </p> </entry> <entry><p> <codeph>iFaxInitString</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdFaxInitString</apiname></xref>  </p> </entry> <entry><p>Binary </p> </entry> <entry><p>Hayes AT commands such as AT, ATZ, etc. </p> </entry> </row> <row><entry><p>IspInitString </p> </entry> <entry><p>Initialsation string specific to a particular ISP </p> </entry> <entry><p> <codeph>iIspInitString</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIspInitString</apiname></xref>  </p> </entry> <entry><p>Binary </p> </entry> <entry><p>Hayes AT commands such as AT, ATZ, etc. </p> </entry> </row> <row><entry><p>DialPauseLength </p> </entry> <entry><p>Command to modify the pause created during dialling using the comma character (','). </p> </entry> <entry><p> <codeph>iDialPauseLength</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDialPauseLength</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command specifying the pause duration in seconds by setting the S8 register. </p> </entry> </row> <row><entry><p>CarrierTimeOut </p> </entry> <entry><p>Command to set the time out the modem uses when establishing a link before giving up and returning to command mode. </p> </entry> <entry><p> <codeph> iCarrierTimeOut</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCarrierTimeOut</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command specifying the timeout period in seconds usually by setting the value in a S- register, usually the S10 register. </p> </entry> </row> <row><entry><p>AutoAnswerRingCount </p> </entry> <entry><p>Command to set the number of rings before the modem auto answers. </p> </entry> <entry><p> <codeph>iAutoAnswerRingCount </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAutoAnswerRingCount</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command specifying the number of rings, specifically setting the S1 register </p> </entry> </row> <row><entry><p>SpeakerVolControlLow </p> </entry> <entry><p>Command to set the modem speaker volume to low. </p> </entry> <entry><p> <codeph> iSpeakerVolControlLow </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerVolControlLow</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically L0. </p> </entry> </row> <row><entry><p>SpeakerVolControlMedium </p> </entry> <entry><p>Command to set the modem speaker volume to medium. </p> </entry> <entry><p> <codeph>iSpeakerVolControlMedium</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerVolControlMedium</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically L1 </p> </entry> </row> <row><entry><p>SpeakerVolControlHigh </p> </entry> <entry><p>Command to set the modem speaker volume to high. </p> </entry> <entry><p> <codeph> iSpeakerVolControlHigh</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerVolControlHigh</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically L2. </p> </entry> </row> <row><entry><p>SpeakerAlwaysOff </p> </entry> <entry><p>Command to set the modem speaker always off. </p> </entry> <entry><p> <codeph> iSpeakerAlwaysOff</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerAlwaysOff</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically M0. </p> </entry> </row> <row><entry><p>SpeakerOnUntilCarrier </p> </entry> <entry><p>Command to set the modem speaker on untill the carrier. </p> </entry> <entry><p> <codeph> iSpeakerOnUntilCarrier</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerOnUntilCarrier</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically M1. </p> </entry> </row> <row><entry><p>SpeakerAlwaysOn </p> </entry> <entry><p>Command to set the modem speaker on. </p> </entry> <entry><p> <codeph> iSpeakerAlwaysOn </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerAlwaysOn</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically M2 </p> </entry> </row> <row><entry><p>SpeakerOnAfterUntilCarrier </p> </entry> <entry><p>Command to set the modem speaker on except during dialling. </p> </entry> <entry><p> <codeph> iSpeakerOnAfterUntilCarrier</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSpeakerOnAfterUntilCarrier</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically M3. </p> </entry> </row> <row><entry><p>DialToneWaitModifier </p> </entry> <entry><p>The dial command modifier waits for dial tone </p> </entry> <entry><p> <codeph>iDialToneWaitModifier</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDialToneWaitModifier</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically W. </p> </entry> </row> <row><entry><p>CallProgress1 </p> </entry> <entry><p>Disable busy and dial tone detection </p> </entry> <entry><p> <codeph>iCallProgress1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCallProgress1</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically X1. </p> </entry> </row> <row><entry><p>CallProgress2 </p> </entry> <entry><p>Dial tone detection is enabled and busy detection is disabled </p> </entry> <entry><p> <codeph>iCallProgress2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCallProgress2</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically X2. </p> </entry> </row> <row><entry><p>CallProgress3 </p> </entry> <entry><p>Dial tone detection is disabled and busy detection is enabled </p> </entry> <entry><p> <codeph>iCallProgress3 </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCallProgress3</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically X3. </p> </entry> </row> <row><entry><p>CallProgress4 </p> </entry> <entry><p>Both dial tone and busy detection are enabled </p> </entry> <entry><p> <codeph> iCallProgress4</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCallProgress4</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically X4. </p> </entry> </row> <row><entry><p>EchoOff </p> </entry> <entry><p>Switch echo mode off </p> </entry> <entry><p> <codeph>iEchoOff </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdEchoOff</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically E0. </p> </entry> </row> <row><entry><p>VerboseText </p> </entry> <entry><p>Switch verbose mode on </p> </entry> <entry><p> <codeph>iVerboseText</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdVerboseText</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically V1. </p> </entry> </row> <row><entry><p>QuietOff </p> </entry> <entry><p>Switch to quiet mode off </p> </entry> <entry><p> <codeph>iQuietOff</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdQuietOff</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically Q0. </p> </entry> </row> <row><entry><p>QuietOn </p> </entry> <entry><p>Switch to quiet mode on </p> </entry> <entry><p> <codeph>iQuietOn </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdQuietOn</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically Q1. </p> </entry> </row> <row><entry><p>DialCommandStateModifier </p> </entry> <entry><p>Dial command modifier- used to return to command mode after dialling. </p> </entry> <entry><p> <codeph>iDialCommandStateModifier</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDialCommandStateModifier</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically ; </p> </entry> </row> <row><entry><p>OnLine </p> </entry> <entry><p>Enter on-line mode from on-line command mode </p> </entry> <entry><p> <codeph>iOnLine </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdOnLine</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically O </p> </entry> </row> <row><entry><p>ResetConfiguration </p> </entry> <entry><p>Reset the modem configuration </p> </entry> <entry><p> <codeph>iResetConfiguration</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdResetConfiguration</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically Z </p> </entry> </row> <row><entry><p>ReturnToFactoryDefs </p> </entry> <entry><p>Reset the modem configuration to factory defaults </p> </entry> <entry><p> <codeph>iReturnToFactoryDefs</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdReturnToFactoryDefs</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically &amp;F </p> </entry> </row> <row><entry><p>DCDOnDuringLink </p> </entry> <entry><p>Command the modem to only assert DCD when a carrier is actually detected </p> </entry> <entry><p> <codeph>iDcdOnDuringLink</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDcdOnDuringLink</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically &amp;C1 </p> </entry> </row> <row><entry><p>DTRHangUp </p> </entry> <entry><p>Command the modem to hang up the current call when the DTE drops the DTR line </p> </entry> <entry><p> <codeph>iDtrHangUp</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDtrHangUp</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically &amp;D2 </p> </entry> </row> <row><entry><p>DSRAlwaysOn </p> </entry> <entry><p>Command the modem to always assert DSR </p> </entry> <entry><p> <codeph>iDsrAlwaysOn</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDsrAlwaysOn</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically &amp;S0 </p> </entry> </row> <row><entry><p>RTSCTSHandshake </p> </entry> <entry><p>Command the modem to use RTS/CTS flow control </p> </entry> <entry><p> <codeph>iRtsCtsHandshake</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdRtsCtsHandshake</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically &amp;K3 </p> </entry> </row> <row><entry><p>XonXoffHandshake </p> </entry> <entry><p>Command the modem to use software flow control. </p> </entry> <entry><p> <codeph>iXonXoffHandshake</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdXonXoffHandshake</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically &amp;K4 </p> </entry> </row> <row><entry><p>EscapeCharacter </p> </entry> <entry><p>The character used by the DTE to return to command mode from on-line mode. </p> </entry> <entry><p> <codeph>iEscapeCharacter</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdEscapeCharacter</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A single character such as + </p> </entry> </row> <row><entry><p>EscapeGuardPeriod </p> </entry> <entry><p>Command the modem to use a particular escape sequence guard period. </p> </entry> <entry><p> <codeph>iEscapeGuardPeriod</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdEscapeGuardPeriod</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>Hayes AT command, specifically S12 </p> </entry> </row> <row><entry><p>NoDialTone </p> </entry> <entry><p>Modem response when no dial tone is detected. </p> </entry> <entry><p> <codeph>iNoDialTone</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNoDialTone</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>NODIALTONE </p> </entry> </row> <row><entry><p>Busy </p> </entry> <entry><p>Modem response when a busy tone is detected. </p> </entry> <entry><p> <codeph>iBusy</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBusy</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>BUSY </p> </entry> </row> <row><entry><p>NoAnswer </p> </entry> <entry><p>Modem response when no answer is detected. </p> </entry> <entry><p> <codeph> iNoAnswer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNoAnswer</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>NOANSWER </p> </entry> </row> <row><entry><p>Carrier </p> </entry> <entry><p>Carrier report message. </p> </entry> <entry><p> <codeph>iCarrier</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCarrier</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>CARRIER </p> </entry> </row> <row><entry><p>Connect </p> </entry> <entry><p>Connection report message. </p> </entry> <entry><p> <codeph>iConnect</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConnect</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>CONNECT </p> </entry> </row> <row><entry><p>CompressionClass5 </p> </entry> <entry><p>Compression Class 5 report message. </p> </entry> <entry><p> <codeph>iCompressionClass5 </codeph>  </p> </entry> <entry><p>K<xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CDTIdCompressionClass5</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>COMPRESSION:CLASS 5 </p> </entry> </row> <row><entry><p>CompressionV42bis </p> </entry> <entry><p>Compression V.42 bis report message. </p> </entry> <entry><p> <codeph>iCompressionV42bis</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCompressionV42bis</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>COMPRESSION:V.42 bis </p> </entry> </row> <row><entry><p>CompressionNone </p> </entry> <entry><p>No compression report message </p> </entry> <entry><p> <codeph>iCompressionNone</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCompressionNone</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>COMPRESSION:NONE </p> </entry> </row> <row><entry><p>PrototcolLAPD </p> </entry> <entry><p>LAPD protocol report message </p> </entry> <entry><p> <codeph> iProtocolLapd</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolLapd</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>PROTOCOL:LAPD </p> </entry> </row> <row><entry><p>ProtocolALT </p> </entry> <entry><p>ALT protocol report message </p> </entry> <entry><p> <codeph> iProtocolAlt</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolAlt</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>PROTOCOL:ALT </p> </entry> </row> <row><entry><p>ProtocolALTCELLULAR </p> </entry> <entry><p>ALT-CELLULAR report message </p> </entry> <entry><p> <codeph> iProtocolAltcellular</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolAltcellular</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>PROTOCOL:ALT-CELLULAR </p> </entry> </row> <row><entry><p>ProtocolNone </p> </entry> <entry><p>No protocol report message. </p> </entry> <entry><p> <codeph>iProtocolNone</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolNone</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>PROTOCOL:NONE </p> </entry> </row> <row><entry><p>MessageCentreNumber </p> </entry> <entry><p>Phone number of message centre. </p> </entry> <entry><p> <codeph> iMessageCentreNumber</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMessageCentreNumber</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Message Centre telephone number </p> </entry> </row> <row><entry><p>MessageValidityPeriod </p> </entry> <entry><p>Validity period for SMS in minutes </p> </entry> <entry><p> <codeph>iMessageValidityPeriod </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMessageValidityPeriod</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer specifying a time period in minutes </p> </entry> </row> <row><entry><p>MessageDeliveryReport </p> </entry> <entry><p>A boolean flag to specifies whether to produce SMS delivery report </p> </entry> <entry><p> <codeph>iMessageDeliveryReport</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMessageDeliveryReport</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-C9E391B6-1853-52E6-B951-6D70CD9E259E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Delivery report enabled </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Delivery report disabled </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinimumSignalLevel </p> </entry> <entry><p>Minimum signal strength of the modem. This is the minimum signal level required for a connection to succeed. The connection will fail if below this level. Setting the column to null will turn off this functionality. The value must be in dBm with an offset of 10000 added to it </p> </entry> <entry><p> <codeph> iMinSignalLevel </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMinSignalLevel</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value specifying the signal level. </p> </entry> </row> <row><entry><p>LastSocketActivityTimeout </p> </entry> <entry><p>Time (in seconds) to stay online when all socket activity has ceased </p> </entry> <entry><p> <codeph>iLastSocketActivityTimeout </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLastSocketActivityTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer specifying time in seconds </p> </entry> </row> <row><entry><p>LastSessionClosedTimeout </p> </entry> <entry><p>Time (in seconds) to stay online when session has closed </p> </entry> <entry><p> <codeph>iLastSessionClosedTimeout </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLastSessionClosedTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer specifying time in seconds </p> </entry> </row> <row><entry><p>LastSocketClosedTimeout </p> </entry> <entry><p>Time (in seconds) to stay online when socket has closed </p> </entry> <entry><p>C<codeph>iLastSocketClosedTimeout</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLastSocketClosedTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer specifying time in seconds </p> </entry> </row> <row><entry><p>SirSettings </p> </entry> <entry><p>This field sets the serial port's infra-red settings. This enables the range of infrared to be set, to modify the pulse width or even to completely shutdown serial infrared. </p> </entry> <entry><p> <codeph> iSirSettings</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSirSettings</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p><table id="GUID-CC6ACB98-E710-59E4-831A-AC394E215FAE"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Serial infrared is disabled </p> </entry> <entry/></row> <row><entry><p>1</p> </entry> <entry><p>Sets pulse width to maximum </p> </entry> <entry><p>KConfigSIRPulseWidthMaximum </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Sets pulse width to minimum </p> </entry> <entry><p>KConfigSIRPulseWidthMinimum </p> </entry> </row> <row><entry><p>16 </p> </entry> <entry><p>Shutdowns serial IR </p> </entry> <entry><p>KConfigSIRShutDown </p> </entry> </row> <row><entry><p>32 </p> </entry> <entry><p>Selects the minimum IR range </p> </entry> <entry><p>KConfigSIRMinimumRange </p> </entry> </row> <row><entry><p>64 </p> </entry> <entry><p>Selects the medium IR range </p> </entry> <entry><p>KConfigSIRMediumRange </p> </entry> </row> <row><entry><p>128 </p> </entry> <entry><p>Selects the maximum IR range </p> </entry> <entry><p>KConfigSIRMaximumRange </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>CommRole </p> </entry> <entry><p>Specifies whether comm port should be opened in the role of DTE or DCE. The content of this field is a bit mask. The value of this is ANDed with KModemCommRoleDCE. For example, say the value of CommRole is 1 then the role set is DCE, else the role set is DTE. (see KModemCommRoleDCE). </p> </entry> <entry><p> <codeph> iCommRole</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCommRole</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Integer bitmask </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-303A3C65-3391-540D-B0FB-75E92DC7663E"><title>Network table</title> <p>The network table contains the configuration settings for each available network. There is one record for each network. This table is useful for multi-homing. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDNetworkRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNetworkRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-E4C7414B-2656-5A2A-8E4D-8B03320C9435"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry> Possible values</entry> </row> </thead> <tbody><row><entry><p>Name </p> </entry> <entry><p>A name for the network. Each network is given a unique name . This field is configured only to support multi-homing </p> </entry> <entry><p>User defined network name such as Intranet1 </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-437C4AE0-D16B-50B7-8AD8-A4E8FA5F15E5"><title>Tier table</title> <p>This table defines a <xref href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita">Tier</xref>. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDTierRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdTierRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-68366D0A-F83F-5AF8-AC88-DDF20FEFAC30"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>Id </p> </entry> <entry><p>Unique identifier of the Tier. This Id matches the ECom Id of the Tier Plug-in. </p> </entry> <entry><p> </p> </entry> <entry><p> </p> </entry> <entry><p> </p> </entry> <entry><p> </p> </entry> </row> <row><entry><p>TierThreadName </p> </entry> <entry><p>Tier's thread name. This must match the Comms Provider module name for the thread in the <xref href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita">cmi file</xref>. </p> </entry> <entry><p>iTierThreadName </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdTierThreadName</apiname></xref>  </p> </entry> <entry><p>Text </p> </entry> <entry><p>Must match the <i>Name</i> field in the <xref href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita">CMI file</xref>. Eg: <codeph>ESock_IP</codeph>  </p> </entry> </row> <row><entry><p>TierManagerName </p> </entry> <entry><p>Tier's manager name </p> </entry> <entry><p>iTierManagerName </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdTierManagerName</apiname></xref>  </p> </entry> <entry><p>Text </p> </entry> <entry><p>Freeform </p> </entry> </row> <row><entry><p>DefaultAccessPoint </p> </entry> <entry><p>A tier offers one or more Access Points. This field refers to the default Access Point for the tier. </p> </entry> <entry><p>iDefaultAccessPoint </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDefaultAccessPoint</apiname></xref>  </p> </entry> <entry><p>CED: Integer </p> <p>Internal: Record Link </p> </entry> <entry><p>Refers to a record in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>  </p> </entry> </row> <row><entry><p>PromptUser </p> </entry> <entry/><entry><p>iPromptUser </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdPromptUser</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry/></row> </tbody> </tgroup> </table> </section> <section id="GUID-1988731C-4EF5-52E5-88EB-DB4B636B1597"><title>Location table</title> <p>This table holds information about the location of a device. </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDLocationRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLocationRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-8EC083F8-DAE7-5995-94B8-EEE51397D072"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>Mobile </p> </entry> <entry><p>A Boolean flag that indicates if the device is a mobile . </p> </entry> <entry><p> <codeph>iMobile</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMobile</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-5080B015-C112-5463-B340-2187C6BB114C"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>The device is a mobile </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>The device is not mobile </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>UsePulseDial </p> </entry> <entry><p>A Boolean flags that indicates if if the device is to use pulse dialling. </p> </entry> <entry><p> <codeph>iUsePulseDial</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdusePulseDial</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-3E426E8C-09EB-5F7E-9648-FFDEE76CE8D8"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Pulse dial is used </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Pulse dial is not used </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>WaitForDialTone </p> </entry> <entry><p>A Boolean flag that indicates if the device is to wait for a dial tone. </p> </entry> <entry><p> <codeph>iWaitForDialTone</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWaitForDialTone</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-CAB37492-C831-5242-9F77-325A940C611A"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Device waits for the dial tone </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Device does not wait for the dial tone </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>PauseAfterDialOut </p> </entry> <entry><p>An integer value that indicates the time to pause after using the dial-ot code. </p> </entry> <entry><p> <codeph>iPauseAfterDialOut</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdPauseAfterDialOut</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value in seconds </p> </entry> </row> <row><entry><p>IntlPrefixCode </p> </entry> <entry><p>The prefix code used for international calls. </p> </entry> <entry><p> <codeph>iIntlPrefixCode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIntlPrefixCode</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>NatPrefixCode </p> </entry> <entry><p>Prefix code used for national calls. </p> </entry> <entry><p> <codeph>iNatPrefixCode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNatPrefixCode</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>NatCode </p> </entry> <entry><p>The country code. </p> </entry> <entry><p> <codeph>iNatCode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdNatCode</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>AreaCode </p> </entry> <entry><p>The area code. </p> </entry> <entry><p> <codeph>iAreaCode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAreaCode</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>DialOutCode </p> </entry> <entry><p>Number used to dial external line. </p> </entry> <entry><p> <codeph>iDialOutCode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDialOutCode</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>DisableCallWaitingCode </p> </entry> <entry><p>Code used to disable call waiting facility. </p> </entry> <entry><p> <codeph>iDisableCallWaitingCode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDisableCallWaitingCode</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>BearerTechnology </p> </entry> <entry><p>The method used by the bearer to transmit data. </p> </entry> <entry><p> <codeph>iBearerTechnology</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerTechnology</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-A886B177-25BA-5DAE-9691-CCCF25EA9A46"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>CSD </p> </entry> <entry><p>Bearer establishes circuit-switched connection </p> </entry> </row> <row><entry><p>HSCSD </p> </entry> <entry><p>Bearer establishes high speed circuit-switched connection </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-2C3649AE-AEB1-5625-84AE-8FC2E406F604"><title>IncomingGPRS and OutgoingGPRS tables </title> <p>The <codeph>IncomingGPRS</codeph> and<codeph>OutgoingGPRS</codeph> tables have similar fields. These fields contain the settings for the GPRS service. The tables are set for services that use a wireless GPRS connection. </p> <p>Set up the <codeph>IncomingGPRS</codeph> table for inbound connections. </p> <p>Set up the <codeph>OutgoingGPRS</codeph> table for outbound connections. </p> <p>The following table shows the values for an <codeph>IncomingGPRS</codeph> table record. A similar record can be used for the <codeph>OutboundGPRS</codeph> table by changing the values accordingly. </p> <p> <b>Note:</b>  <i>A new table called UmtsR99QosAndOn has been added to list the QoS fields exclusively. The integer field UmtsR99QosAndOn acts as a record link between the UmtsR99QosAndOn table and the existing GPRS tables for QoS related fields. </i>  </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDWCDMAPacketServiceRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the tables</title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIncomingGprsRecord</apiname></xref> for the IncomingGPRS table. </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdOutgoingGprsRecord</apiname></xref> for the OutgoingGPRS table. </p> <title>List of fields that define a record for this table</title> <table id="GUID-A818C672-2311-5EA0-BA96-F5A2F806D6EE"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description of field</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry>Possible values</entry> </row> </thead> <tbody><row><entry><p>APN </p> </entry> <entry><p>Access point name </p> </entry> <entry><p>iGPRSAPN </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAPN </apiname></xref>  </p> </entry> <entry><p>Medium text </p> </entry> <entry><p>User defined text </p> </entry> </row> <row><entry><p>PDPType </p> </entry> <entry><p>Packet data protocol (PDP) used by the packet switching networks to communicate with GPRS </p> </entry> <entry><p> <codeph>iGPRSPDPType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAType</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-F01CD8CD-8D6D-5D55-B647-6C730987D5EF"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>CED values</entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>IPv4 </p> </entry> <entry><p>TProtocolType::EPdpTypeIPv4 </p> </entry> </row> <row><entry><p>IPv6 </p> </entry> <entry><p>TProtocolType::EPdpTypeIPv6 </p> </entry> </row> <row><entry><p>X25 </p> </entry> <entry><p>TProtocolType::EPdpTypeX25 </p> </entry> </row> <row><entry><p>PPP </p> </entry> <entry><p>TProtocolType::EPdpTypePPP </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>PDPAddress </p> </entry> <entry><p>PDP address of the device </p> </entry> <entry><p> <codeph> iGPRSPDPAddress</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAPDPAddress</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined URL or an IP address </p> </entry> </row> <row><entry><p>IfPromptForAuth </p> </entry> <entry><p>A boolean flag to prompt for authentication by the ISP once the conection is established </p> </entry> <entry><p> <codeph>iGPRSIfPromptForAuth</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAIfPromptForAuth</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-C6E3923E-8DC4-54C3-B511-A06DAB2DB24B"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Prompts for authentication </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not prompt for authentication </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>IfParams </p> </entry> <entry><p>Interface parameter string used to specify the lower layer that interface protocol is to use </p> </entry> <entry><p> <codeph> iGPRSIfParams</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAIfParams </apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>IfNetworks </p> </entry> <entry><p>List of network protocols to be used by the network interface (nif) separated by comma </p> </entry> <entry><p> <codeph>iGPRSIfNetworks</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAIfNetworks </apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined. Example IP, IP6 </p> </entry> </row> <row><entry><p>IfAuthName </p> </entry> <entry><p>Prompt user to enter authentication username used in the datalink layer. Example in PPP </p> </entry> <entry><p> <codeph>iGPRSIfAuthName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIfAuthName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>IfAuthPass </p> </entry> <entry><p>Prompt user to enter authentication password used in the datalink layer. Example in PPP </p> </entry> <entry><p> <codeph>iGPRSIfAuthPass</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIfAuthPass</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>AuthRetries </p> </entry> <entry><p>Number of times to retry authentication whenit fails </p> </entry> <entry><p> <codeph>iGPRSAuthRetries</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAAuthRetries</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>EnableLCPExtension </p> </entry> <entry><p>Information regarding LCP extension. LCP extensions include callback option, Time remaining and Identification packets as defined in RFC 1570 </p> </entry> <entry><p> <codeph>iGPRSEnableLCPExtension</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAEnableLCPExtension</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-A9E1578E-0BAB-57C6-9A82-0F3D64BEA625"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>LCP extension is enabled </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>LCP extension is disabled </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>FALSE is the default value.</i>  </p> </entry> </row> <row><entry><p>IpAddrFormServer </p> </entry> <entry><p>Detrmines whether or not to get IP address from the ISP </p> </entry> <entry><p> <codeph>iGPRSIPAddrFromServer </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPAddrFromServer </apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-BA4ACEED-2E55-51E5-AB77-8EFA44C3F25D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the address from the ISP </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the address from the ISP </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>IpDNSAddrFromServer </p> </entry> <entry><p>A boolean flag that detrmines whether or not to get DNS address for IPv4 from the ISP </p> </entry> <entry><p> <codeph>iGPRSIPDNSAddrFromServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPDNSAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-14D1C059-0BA5-53B0-B368-9F2BB5C6E831"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the IPv4 DNS address from the ISP </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IPv4 DNSaddress from the ISP </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>Ip6DNSAddrFromServer </p> </entry> <entry><p>A boolean flag that detrmines whether or not to get DNS address for IPv6 from the ISP </p> </entry> <entry><p> <codeph>iGPRSIP6DNSAddrFromServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIP6DNSAddrFromServer </apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-49D8A95F-2C5A-5FDD-AA5A-81F025D4C106"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the IPv6 DNSaddress from the ISP </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IPv6 DNS address from the ISP </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>IpAddr </p> </entry> <entry><p>Static IP address used by the interface. This address is used when dynamic IP is not allocated by the ISP </p> </entry> <entry><p> <codeph>iGPRSIPAddr </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPAddr</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>IpNetMask </p> </entry> <entry><p>IP netmask of the interface if required </p> </entry> <entry><p> <codeph> iGPRSIPNetmask </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPNetmask</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>IpGateway </p> </entry> <entry><p>Gateway IP address </p> </entry> <entry><p> <codeph>iGPRSIPGateway</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPGateway</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>0.0.0.1 is the default value</i>  </p> </entry> </row> <row><entry><p>IpNameServer1 </p> </entry> <entry><p>Static address of the primary IPv4 DNS server </p> </entry> <entry><p> <codeph>iGPRSIPNameServer1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPNameServer1</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>IpNameServer2 </p> </entry> <entry><p>Static IP address of the secondary IPv4 DNS server </p> </entry> <entry><p> <codeph>iGPRSNameServer2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPNameServer2</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>Ip6NameServer1 </p> </entry> <entry><p>Static IP address of the primary IPv6 DNS server </p> </entry> <entry><p> <codeph> iIP6NameServer1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIP6NameServer1</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>Ip6NameServer2 </p> </entry> <entry><p>Static IP address of the secondary IPv6 DNS server </p> </entry> <entry><p> <codeph>iGPRSIP6Nameserver2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIP6NameServer2</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>ConfigDaemonName </p> </entry> <entry><p>Address configuration daemon name </p> </entry> <entry><p> <codeph>iGPRSConfigDaemonName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAConfigDaemon </apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined. Example DHCP, MobileIP,etc </p> </entry> </row> <row><entry><p>IpAddrLeaseValidFrom </p> </entry> <entry><p>Start of lease of dynamic address allocated by the ISP </p> </entry> <entry><p> <codeph>iGPRSIPAddrleaseValidFrom</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPAddrLeaseValidFrom</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined text values of start date and time of the lease </p> </entry> </row> <row><entry><p>IpAddrLeaseValidTo </p> </entry> <entry><p>End of lease of dynamic address allocates by the ISP </p> </entry> <entry><p> <codeph>iIPAddrLeaseValidTo</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAIPAddrLeaseValidTo</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined text value containing the end date and time of the lease </p> </entry> </row> <row><entry><p>GprsUseEdge </p> </entry> <entry><p>A boolean flag which specifies whether to use EDGE technology. EDGE stands for Enhanced Data rates for GSM Evolution. This technology works in GSM networks, also known as EGPRS. This is a upgrade to GPRS and can function on any network with GPRS, provided the carrier implements the necessary upgrades.. It can outperform GPRS data throughput by 300% </p> </entry> <entry><p> <codeph>iGPRSUseEdge </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAUseEdge</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-DF9C872A-9F4C-5C55-8DEF-2470C698024A"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>EDGE connection is used </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>EDGE connection is not used </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqPrecedence </p> </entry> <entry><p>Requested quality of service precedence class </p> </entry> <entry><p> <codeph>iGPRSReqPrecedence</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdReqPrecedence</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-F59407BF-3847-5EF1-A0BC-333C5DCAACCA"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best effort </p> </entry> <entry><p>TQoSPrecedence::EUnspecifiedPrecedence </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>High priority </p> </entry> <entry><p>TQoSPrecedence::EPriorityHighPrecedence </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Medium priority </p> </entry> <entry><p>TQoSPrecedence::EPriorityMediumPrecedence </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Low priority </p> </entry> <entry><p>TQoSPrecedence::EPriorityLowPrecedence </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqDelay </p> </entry> <entry><p>An enumeration field determining the requested quality of service delay class </p> </entry> <entry><p> <codeph>iGPRSReqDelay</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAReqDelay</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-A463B07F-3EFE-508B-8A96-86F862EB6609"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best effort or subscribed value </p> </entry> <entry><p>TQoSDelay::EUnspecifiedDelayClass </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Delay class 1 </p> </entry> <entry><p>TQoSDelay::EDelayClass1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Delay class 2 </p> </entry> <entry><p>TQoSDelay::EDelayClass2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Delay class 3 </p> </entry> <entry><p>TQoSDelay::EDelayClass3 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Delay class 4 </p> </entry> <entry><p>TQoSDelay::EDelayClass4 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Delay 40 milliseconds </p> </entry> <entry><p>TQoSDelay::EDelay40ms </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Delay 120 milliseconds </p> </entry> <entry><p>TQoSDelay::EDelay120ms </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Delay 360 milliseconds </p> </entry> <entry><p>TQoSDelay::EDelay360ms </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqReliability </p> </entry> <entry><p>An enumeration field determining the requested quality of service reliability class </p> </entry> <entry><p> <codeph>iGPRSReqReliability</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdREqReliability</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-4451010A-C927-53BC-8714-534A3365CE56"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best effort or subscribed value </p> </entry> <entry><p>TQoSReliability::EUnspecifiedReliabilityClass </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Reliability class 1 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Reliability class 2 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Reliability class 3 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass3 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Reliability class 4 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass4 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Reliability class 5 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass5 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqpeakThroughput </p> </entry> <entry><p>An enumeration field determining the requested quality of service peak throughput </p> </entry> <entry><p> <codeph>iGPRSReqThroughput</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdReqThroughput </apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-15ABC95A-F84A-5066-811B-627D1491F5AC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best efoort or subscribed value </p> </entry> <entry><p>TQoSPeakThroughput::EUnspecifiedPeakThroughput </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Peak throughput of 1,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput1000 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Peak throughput of 2,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput2000 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Peak throughput of 4,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput4000 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Peak throughput of 8,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput8000 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Peak throughput of 16,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput16000 </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Peak throughput of 32,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput32000 </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Peak throughput of 64,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput64000 </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Peak throughput of 128,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput128000 </p> </entry> </row> <row><entry><p>9</p> </entry> <entry><p>Peak throughput of 256,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput256000 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqMeanThroughput </p> </entry> <entry><p>An enumeration field determining the requested quality of service mean throughput class </p> </entry> <entry><p> <codeph>iGPRSreqMeanThroughput</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdReqMeanThroughput</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-20A0FA8B-3492-5C72-A4F4-220F0FB3838F"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unsubscribed value </p> </entry> <entry><p>TQoSMeanThroughput::EUnspecifiedMeanThroughput </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Mean throughput of 100 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput100 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Mean throughput of 200 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput200 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Mean throughput of 500 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput500 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Mean throughput of 1,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput1000 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Mean throughput of 2,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput2000 </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Mean throughput of 5,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput5000 </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Mean throughput of 10,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput10000 </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Mean throughput of 20,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput20000 </p> </entry> </row> <row><entry><p>9</p> </entry> <entry><p>Mean throughput of 50,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput50000 </p> </entry> </row> <row><entry><p>10 </p> </entry> <entry><p>Mean throughput of 100,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput100000 </p> </entry> </row> <row><entry><p>11 </p> </entry> <entry><p>Mean throughput of 200,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput200000 </p> </entry> </row> <row><entry><p>12 </p> </entry> <entry><p>Mean throughput of 500,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput500000 </p> </entry> </row> <row><entry><p>13 </p> </entry> <entry><p>Mean throughput of 1,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput1000000 </p> </entry> </row> <row><entry><p>14 </p> </entry> <entry><p>Mean throughput of 2,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput2000000 </p> </entry> </row> <row><entry><p>15 </p> </entry> <entry><p>Mean throughput of 5,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput5000000 </p> </entry> </row> <row><entry><p>16 </p> </entry> <entry><p>Mean throughput of 10,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput10000000 </p> </entry> </row> <row><entry><p>17 </p> </entry> <entry><p>Mean throughput of 20,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput20000000 </p> </entry> </row> <row><entry><p>18 </p> </entry> <entry><p>Mean throughput of 50,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput50000000 </p> </entry> </row> <row><entry><p>19 </p> </entry> <entry><p>Best effort </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughputBestEffort </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinPrecedenceDelay </p> </entry> <entry><p>An enumeration field determining the minimum quality of service reliability class and the values are similar to the in RequiredPrecedence field </p> </entry> <entry><p> <codeph>iGPRSMinPrecedenceDelay</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMinPrecedenceDelay</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-C906E14C-6B94-5E41-9502-B03186292489"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best effort </p> </entry> <entry><p>TQoSPrecedence::EUnspecifiedPrecedence </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>High priority </p> </entry> <entry><p>TQoSPrecedence::EPriorityHighPrecedence </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Medium priority </p> </entry> <entry><p>TQoSPrecedence::EPriorityMediumPrecedence </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Low priority </p> </entry> <entry><p>TQoSPrecedence::EPriorityLowPrecedence </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinDelay </p> </entry> <entry><p>An enumeration field determining the minimum quality of service delay class and the values are similar to the in ReqDelay fields </p> </entry> <entry><p> <codeph> iGPRSMinDelay</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMinDelay</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-962C2FAD-F225-5453-B998-F1AEC68038E2"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best effort or subscribed value </p> </entry> <entry><p>TQoSDelay::EUnspecifiedDelayClass </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Delay class 1 </p> </entry> <entry><p>TQoSDelay::EDelayClass1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Delay class 2 </p> </entry> <entry><p>TQoSDelay::EDelayClass2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Delay class 3 </p> </entry> <entry><p>TQoSDelay::EDelayClass3 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Delay class 4 </p> </entry> <entry><p>TQoSDelay::EDelayClass4 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Delay 40 milliseconds </p> </entry> <entry><p>TQoSDelay::EDelay40ms </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Delay 120 milliseconds </p> </entry> <entry><p>TQoSDelay::EDelay120ms </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Delay 360 milliseconds </p> </entry> <entry><p>TQoSDelay::EDelay360ms </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinReliablility </p> </entry> <entry><p>An enumeration field determining the minimum quality of service reliability class and the field values are similar to the ReqReliability field </p> </entry> <entry><p> <codeph>iGPRSMinReliability</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMinReliability</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-AF0B8CC1-00FC-5392-8605-F8110253EB75"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best effort or subscribed value </p> </entry> <entry><p>TQoSReliability::EUnspecifiedReliabilityClass </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Reliability class 1 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Reliability class 2 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Reliability class 3 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass3 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Reliability class 4 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass4 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Reliability class 5 </p> </entry> <entry><p>TQoSReliability::EReliabilityClass5 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinPeakThroughput </p> </entry> <entry><p>An enumeration field determining the minimum quality of service peak throughput class and the field values are similar to the ReqPeakThroughput field </p> </entry> <entry><p> <codeph>iGPRSMinPeakThroughput</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMinPeakThroughput</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-B21AE793-EF43-55FA-ABD7-1848442979AC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Best efoort or subscribed value </p> </entry> <entry><p>TQoSPeakThroughput::EUnspecifiedPeakThroughput </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Peak throughput of 1,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput1000 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Peak throughput of 2,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput2000 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Peak throughput of 4,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput4000 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Peak throughput of 8,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput8000 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Peak throughput of 16,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput16000 </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Peak throughput of 32,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput32000 </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Peak throughput of 64,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput64000 </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Peak throughput of 128,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput128000 </p> </entry> </row> <row><entry><p>9</p> </entry> <entry><p>Peak throughput of 256,000 octet/h </p> </entry> <entry><p>TQoSPeakThroughput::EPeakThroughput256000 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinMeanThroughput </p> </entry> <entry><p>An enumeration field determining the minimum quality of service mean throughput class and the field values are similar to the ReqMeanThroughput field </p> </entry> <entry><p> <codeph>iGPRSMinMeanThroughput</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMinMeanThroughput</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-06903FF6-C553-55AE-B47F-211A58DBF9C1"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unsubscribed value </p> </entry> <entry><p>TQoSMeanThroughput::EUnspecifiedMeanThroughput </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Mean throughput of 100 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput100 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Mean throughput of 200 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput200 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Mean throughput of 500 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput500 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Mean throughput of 1,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput1000 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Mean throughput of 2,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput2000 </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Mean throughput of 5,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput5000 </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Mean throughput of 10,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput10000 </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Mean throughput of 20,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput20000 </p> </entry> </row> <row><entry><p>9</p> </entry> <entry><p>Mean throughput of 50,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput50000 </p> </entry> </row> <row><entry><p>10 </p> </entry> <entry><p>Mean throughput of 100,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput100000 </p> </entry> </row> <row><entry><p>11 </p> </entry> <entry><p>Mean throughput of 200,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput200000 </p> </entry> </row> <row><entry><p>12 </p> </entry> <entry><p>Mean throughput of 500,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput500000 </p> </entry> </row> <row><entry><p>13 </p> </entry> <entry><p>Mean throughput of 1,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput1000000 </p> </entry> </row> <row><entry><p>14 </p> </entry> <entry><p>Mean throughput of 2,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput2000000 </p> </entry> </row> <row><entry><p>15 </p> </entry> <entry><p>Mean throughput of 5,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput5000000 </p> </entry> </row> <row><entry><p>16 </p> </entry> <entry><p>Mean throughput of 10,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput10000000 </p> </entry> </row> <row><entry><p>17 </p> </entry> <entry><p>Mean throughput of 20,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput20000000 </p> </entry> </row> <row><entry><p>18 </p> </entry> <entry><p>Mean throughput of 50,000,000 octet/h </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughput50000000 </p> </entry> </row> <row><entry><p>19 </p> </entry> <entry><p>Best effort </p> </entry> <entry><p>TQoSMeanThroughput::EMeanThroughputBestEffort </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>UmtsR99QoSAndOn </p> </entry> <entry><p>A record link between the Incoming/Outgoing GPRS table and the UmtsR99QosAndOn table </p> </entry> <entry><p> <codeph>iUmtsR99QoSAndOnTable</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdUmtsR99QoSAndOn</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to a record in the UmtsR99QoSAndOn table </p> </entry> </row> <row><entry><p>DataCompression </p> </entry> <entry><p>A boolean flag to specify data compression </p> </entry> <entry><p> <codeph>iGPRSR5DataCompression </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMADataCompression</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-6BD1B74A-2247-54B2-93D8-B338A6ADC260"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Data compression is enabled </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Data compression is disabled </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>Header Compression </p> </entry> <entry><p>A boolean flag to specify IP header compression </p> </entry> <entry><p> <codeph>iGPRSHeaderCompression</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAHeaderCompression</apiname></xref>  </p> </entry> <entry><p>boolean </p> </entry> <entry><p><table id="GUID-CDFCF2FF-36C0-5F88-AD5B-2DE999D859C3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>IP header compression is enabled </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>IP header compression is disabled </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>AnonymousAccess </p> </entry> <entry><p>A boolean flag specifying whether anonymous access is enabled.Anonymous access allows the device to connect to the network without authentication </p> </entry> <entry><p> <codeph>iGPRSanonymousAccess</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCMAAnonymousAccess</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-229A896C-953E-5FC4-82F1-69E84AE9F941"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Aanonymous access is allowed </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Anonymous access is not allowed </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>GprsAccessPointType </p> </entry> <entry><p>A flag specifying the type of support the ISP provides to the device </p> </entry> <entry><p> <codeph>iGPRSAPType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAPType</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-25609EF7-67D7-5B69-8438-E9992031542E"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>INTERNETONLY </p> </entry> <entry><p>ISP offers HTML only </p> </entry> <entry><p>TCommsDbIspType::EIspTypeInternetOnly </p> </entry> </row> <row><entry><p>WAPONLY </p> </entry> <entry><p>ISP offers WML only </p> </entry> <entry><p>TCommsDbIspType::EIspTypeWAPOnly </p> </entry> </row> <row><entry><p>INTERNETANDWAP </p> </entry> <entry><p>ISP offers both HTML and WML </p> </entry> <entry><p>TCommsDbIspType::EIspTypeInternetAndWAP </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have a null value</i>  </p> </entry> </row> <row><entry><p>QosWarningTimeout </p> </entry> <entry><p>An integer to warn the user when the required QoS is not satisfied </p> </entry> <entry><p> <codeph>iGPRSQOSWarningTimeout</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdQOSWarningTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value in microseconds </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-4109E59D-03CA-59F9-BEE6-AFD9F5DC9BA4"><title>UmtsR99QoSAndOn</title> <p>This table lists QoS related fields. </p> <p>The table supports the R99/R4 revision of 3GPP QoS parameters (as per 3GPP TS 23.107 v.4). </p> <title> Name of the class that defines the structure of a record in this table </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDUmtsR99QoSAndOnTableRecord</apiname></xref>  </p> <title> Symbol that defines the unique numeric ID for the tables</title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdUmtsR99QoSAndOnTableRecord</apiname></xref>  </p> <title>List of fields that define a record for this table</title> <table id="GUID-0D6BB800-D614-5DD7-BAA4-866DA529B9E4"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry>Possible values</entry> </row> </thead> <tbody><row><entry><p>ReqTrafficClass </p> </entry> <entry><p>Information regarding requested traffic class </p> </entry> <entry><p> <codeph> iGPRSReqTrafficClass</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAReqTrafficClass</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-575FBDCF-120F-5478-8486-27F97B56EE0C"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Traffic classs is unspecified </p> </entry> <entry><p>TTrafficClass::ETrafficClassUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Traffic class is conversational </p> </entry> <entry><p>TTrafficClass::ETrafficClassConversational </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Traffic class is streaming </p> </entry> <entry><p>TTrafficClass::ETrafficClassStreaming </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Traffic class is interactive </p> </entry> <entry><p>TTrafficClass::ETrafficClassInteractive </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Traffic class is background </p> </entry> <entry><p>TTrafficClass::ETrafficClassBackground </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinTrafficClass </p> </entry> <entry><p>Minimum acceptable traffic class </p> </entry> <entry><p> <codeph> iGPRSMinTrafficClass </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMinTrafficClass</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-68669105-320D-5347-9FB6-1E310FC7E964"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Traffic classs is unspecified </p> </entry> <entry><p>TTrafficClass::ETrafficClassUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Traffic class is conversational </p> </entry> <entry><p>TTrafficClass::ETrafficClassConversational </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Traffic class is streaming </p> </entry> <entry><p>TTrafficClass::ETrafficClassStreaming </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Traffic class is interactive </p> </entry> <entry><p>TTrafficClass::ETrafficClassInteractive </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Traffic class is background </p> </entry> <entry><p>TTrafficClass::ETrafficClassBackground </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqDeliveryOrder </p> </entry> <entry><p>Requested value for sequential SDU delivery </p> </entry> <entry><p> <codeph>iGPRSReqDeliveryOrder </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAReqDeliveryOrder</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-8EFD406D-1BF3-5A47-8F24-258150369618"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>SDU deliver order is unspecified </p> </entry> <entry><p>TDeliveryOrder::EDeliveryOrderUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>SDU delivery order is required to be in sequence </p> </entry> <entry><p>TDeliveryOrder::EDeliveryOrderRequired </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>SDU delivery order is not required to be in sequence </p> </entry> <entry><p>TDeliveryOrder::EDeliveryOrderNotRequired </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinDeliveryOrder </p> </entry> <entry><p>Acceptable minimum value for sequential SDU delivery </p> </entry> <entry><p> <codeph> iGPRSMinDeliveryOrder</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMinDeliveryOrder </apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-2D17A11A-1AFD-58CD-A5FA-01D95B235A1A"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>SDU deliver order is unspecified </p> </entry> <entry><p>TDeliveryOrder::EDeliveryOrderUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>SDU delivery order is required to be in sequence </p> </entry> <entry><p>TDeliveryOrder::EDeliveryOrderRequired </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>SDU delivery order is not required to be in sequence </p> </entry> <entry><p>TDeliveryOrder::EDeliveryOrderNotRequired </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqDeliveryErroneousSDU </p> </entry> <entry><p>Requested value for erroneous SDU delivery </p> </entry> <entry><p> <codeph> iGPRSDeliverErroneosSDU </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMADeliverErroneousSDU</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-A048556D-EE29-5102-9398-2EB150182B04"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unspecified </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUDeliveryUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Erroneous SDUs are delivered and error detection is not considered. </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUNoDetection </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Erroneous SDUs are delivered and error detection is employed </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUDeliveryRequired </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Erroneous SDUs are discarded ad error detection is employed </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUDeliveryNotRequired </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinDeliveryErroneousSDU </p> </entry> <entry><p>Minimum acceptable value for erroneous SDu delivery </p> </entry> <entry><p> <codeph>iGPRSMinDeliverErroneousSDU</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMinDeliveryOrder</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-CF860AAD-0695-5CC1-A587-67D6C17B5D9C"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unspecified </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUDeliveryUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Erroneous SDUs are delivered and error detection is not considered. </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUNoDetection </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Erroneous SDUs are delivered and error detection is employed </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUDeliveryRequired </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Erroneous SDUs are discarded ad error detection is employed </p> </entry> <entry><p>TErroneousSDUDelivery::EErroneousSDUDeliveryNotRequired </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqMaxSDUSize </p> </entry> <entry><p>Specifies the maximum SDU size </p> </entry> <entry><p> <codeph>iGPRSReqMaxSDUSize</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqMaxSDUSize</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>MinAcceptableMaxSDUsize </p> </entry> <entry><p>Specifies the minimum size of SDU </p> </entry> <entry><p> <codeph>iGPRSMinAcceptableMaxSDUSize</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMinAcceptableMaxSDUSize</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>ReqMinUplinkRate </p> </entry> <entry><p>Specifies minimum requested uplink bitrate </p> </entry> <entry><p> <codeph>iGPRSReqMinUplinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAReqMinUplinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>ReqMaxUplinkRate </p> </entry> <entry><p>Specifies maximum requested uplink bitrate </p> </entry> <entry><p> <codeph>iGPRSReqMaxUplinkRate </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqMaxUplinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>ReqMaxDownlinkRate </p> </entry> <entry><p>Specifies maximum requested downlink rate </p> </entry> <entry><p> <codeph> iGPRSReqMaxDownlinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqMaxDownlinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>ReqMinDownlinkrate </p> </entry> <entry><p>Specifies minimum requested downlink rate </p> </entry> <entry><p> <codeph> iGPRSReqMinDownlinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqMinDownlinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>ReqBER </p> </entry> <entry><p>Specifies target BER </p> </entry> <entry><p> <codeph>iGPRSReqBER </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqBER</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-E49D2A71-0511-5DB4-A13C-C3E6FC907DB8"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unspecified </p> </entry> <entry><p>TBitErrorRatio::EBERUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Target residual BER - 0.05. </p> </entry> <entry><p>TBitErrorRatio::EBERFivePerHundred </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Target residual BER - 0.01. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerHundred </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Target residual BER - 0.005. </p> </entry> <entry><p>TBitErrorRatio::EBERFivePerThousand </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Target residual BER - 0.004. </p> </entry> <entry><p>TBitErrorRatio::EBERFourPerThousand </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Target residual BER - 0.001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerThousand </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Target residual BER - 0.0001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerTenThousand </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Target residual BER - 0.00001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerHundredThousand </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Target residual BER - 0.000001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerMillion </p> </entry> </row> <row><entry><p>9</p> </entry> <entry><p>Target residual BER - 0.00000006. </p> </entry> <entry><p>TBitErrorRatio::EBERSixPerHundredMillion </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MaxBER </p> </entry> <entry><p>Specifies maximum accepted target BER </p> </entry> <entry><p> <codeph> iGPRSMaxBER</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMaxBER</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-A0B2A6CE-B6CE-59F5-97E1-5DC08B062C5D"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unspecified </p> </entry> <entry><p>TBitErrorRatio::EBERUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Target residual BER - 0.05. </p> </entry> <entry><p>TBitErrorRatio::EBERFivePerHundred </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Target residual BER - 0.01. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerHundred </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Target residual BER - 0.005. </p> </entry> <entry><p>TBitErrorRatio::EBERFivePerThousand </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Target residual BER - 0.004. </p> </entry> <entry><p>TBitErrorRatio::EBERFourPerThousand </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Target residual BER - 0.001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerThousand </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Target residual BER - 0.0001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerTenThousand </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Target residual BER - 0.00001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerHundredThousand </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Target residual BER - 0.000001. </p> </entry> <entry><p>TBitErrorRatio::EBEROnePerMillion </p> </entry> </row> <row><entry><p>9</p> </entry> <entry><p>Target residual BER - 0.00000006. </p> </entry> <entry><p>TBitErrorRatio::EBERSixPerHundredMillion </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqSDUErrorRatio </p> </entry> <entry><p>Requested target SDU error ratio </p> </entry> <entry><p> <codeph> iGPRSReqSDUErrorRatio</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqSDUErrorRatio</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-F7DE6F76-6735-5941-BDD5-94F879861C06"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Target value of Erroneous SDUs – Unspecified. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Target SDU error ratio - 0.1. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerTen </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Target SDU error ratio - 0.01. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerHundred </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Target SDU error ratio - 0.007. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioSevenPerThousand </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Target SDU error ratio - 0.001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerThousand </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Target SDU error ratio - 0.0001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerTenThousand </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Target SDU error ratio - 0.00001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerHundredThousand </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Target SDU error ratio - 0.000001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerMillion </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MaxSDUErrorRatio </p> </entry> <entry><p>Maximum acceptable target SDU error ratio </p> </entry> <entry><p> <codeph>iGPRSMaxSDUErrorRatio</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMaxSDUErrorRatio</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-77E125E5-0DA5-5B27-81DD-8B8D939AE22F"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Target value of Erroneous SDUs – Unspecified. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Target SDU error ratio - 0.1. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerTen </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Target SDU error ratio - 0.01. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerHundred </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Target SDU error ratio - 0.007. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioSevenPerThousand </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Target SDU error ratio - 0.001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerThousand </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>Target SDU error ratio - 0.0001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerTenThousand </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Target SDU error ratio - 0.00001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerHundredThousand </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Target SDU error ratio - 0.000001. </p> </entry> <entry><p>TSDUErrorRatio::ESDUErrorRatioOnePerMillion </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqTrafficHandlingPriority </p> </entry> <entry><p>Requested traffic handling priority </p> </entry> <entry><p> <codeph>iGPRSReqTrafficHandlingPriority</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAReqTrafficHandlingPriority</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-35285B68-B7F1-517B-BB15-2763CDFFF4C3"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unspecified </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriorityUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Priority level 1 </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriority1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Priority level 2. </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriority2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Priority level 3. </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriority3 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>MinTrafficHandlingPriority </p> </entry> <entry><p>Minimum acceptable traffic handling priority </p> </entry> <entry><p> <codeph> iGPRSMinTrafficHandlingPriority</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAMinTrafficHandlingPriority</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-959DD97D-1A52-5D86-BB39-2B4EFEFBE5FE"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unspecified </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriorityUnspecified </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Priority level 1 </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriority1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Priority level 2. </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriority2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Priority level 3. </p> </entry> <entry><p>TTrafficHandlingPriority::ETrafficPriority3 </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>ReqTransferDelay </p> </entry> <entry><p>Requested transfer delay </p> </entry> <entry><p> <codeph> iGPRSReqTransferDelay </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqTransferDelay</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined value in milliseconds </p> </entry> </row> <row><entry><p>MaxTransferDelay </p> </entry> <entry><p>Maximum accepted transfer delay </p> </entry> <entry><p> <codeph>iGPRSMinTransferDelay</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMinTransferDelay</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined value in milliseconds </p> </entry> </row> <row><entry><p>ReqGuaranteedUplinkRate </p> </entry> <entry><p>Requested guaranteed uplink rate </p> </entry> <entry><p> <codeph>iGPRSReqGuaranteedUplinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAReqGuaranteedUplinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined bitrate </p> </entry> </row> <row><entry><p>MinGuaranteedUplink </p> </entry> <entry><p>Minimum acceptable guaranteed uplink rate </p> </entry> <entry><p> <codeph>iGPRSMinGuaranteedUplinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAMinGuaranteedUplinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined bitrate </p> </entry> </row> <row><entry><p>ReqGuaranteedDownlinkRate </p> </entry> <entry><p>Requested guaranteed downlink rate </p> </entry> <entry><p> <codeph>iGPRSReqGuaranteedDownlinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAReqGuaranteedDownlinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined bitrate </p> </entry> </row> <row><entry><p>MinGuaranteedDownlinkRate </p> </entry> <entry><p>Minimum acceptable guaranteed downlink rate </p> </entry> <entry><p> <codeph>iGPRSMinGuaranteedDownlinkRate</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMAMinGuaranteedDownlinkRate</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined bitrate </p> </entry> </row> <row><entry><p>SignallingIndication </p> </entry> <entry><p>Specified whether signalling indication is used </p> </entry> <entry><p> <codeph> iGPRSSignallingIndication </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMASignallingIndication</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p>TRUE or FALSE </p> </entry> </row> <row><entry><p>ImCnSignallingIndication </p> </entry> <entry><p>Specifies whether IP multimedia system (IMS) core network (CN) signalling indication is used </p> </entry> <entry><p> <codeph> iGPRS_ImCnSignallingIndication </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdWCDMAImCmSignallingIndication</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p>TRUE or FALSE </p> </entry> </row> <row><entry><p>SourceStatisticsDescriptor </p> </entry> <entry><p>Static source descriptor as defined in 3GPP TS 23.107 and TS 24.008 </p> </entry> <entry><p> <codeph>iGPRSSourceStatisticsDescriptor</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdWCDMASourceStatisticsDescriptor</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-D409842E-6CB6-5FDC-B81D-A0D954C9133A"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Unknown source statistics descriptor. </p> </entry> <entry><p>TSourceStatisticsDescriptor::ESourceStatisticsDescriptorUnknown </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Speech source statistics descriptor. </p> </entry> <entry><p>TSourceStatisticsDescriptor::ESourceStatisticsDescriptorSpeech </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-430CB4B1-2AC5-5773-AA59-ED8D275D555A"><title>DialInISP/DialOutISP tables</title> <p> <codeph>DialInISP</codeph> and <codeph>DialOutISP</codeph> tables have similar fields. These tables contain the settings for the wireline connections. The tables are set for services that use a wireline connection. </p> <p>Set up the <codeph>DialInISP</codeph> table for inbound ISP connections. </p> <p>Set up the <codeph>DialOutISP</codeph> table for outbound ISP connections. </p> <p>The following table shows the values for the <codeph>DialOutISP</codeph> table. A similar record can be used for the <codeph>DialInISP</codeph> table by changing the values. </p> <p> <b>Note:</b>  <i>A new table called UmtsR99QosAndOn has been added to list the QoS fields exclusively. The integer field UmtsR99QosAndOn acts as a record link between the UmtsR99QosAndOn table and the existing GPRS tables for QoS related fields. </i>  </p> <title> Name of the classes that define the structure of records in these tables </title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDDialOutISPRecord</apiname></xref> for the DialOutISP table. </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDDialInISPRecord</apiname></xref> for the DialOutISP table. </p> <title> Symbol that defines the unique numeric ID for the tables</title> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDialInISPRecord</apiname></xref> for the DialInISP table. </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdOutgoingGprsRecord</apiname></xref> for the DialOutISP table. </p> <title>List of fields that define a record for this table</title> <table id="GUID-1E902DF2-BAC1-5698-B433-F71A4C5B643F"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field type</entry> <entry> Possible values</entry> </row> </thead> <tbody><row><entry><p>Description </p> </entry> <entry><p>Description of the ISP </p> </entry> <entry><p> <codeph>iDescription</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDescription</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>A text description of the ISP </p> <p> <i> This field can have null value </i>  </p> </entry> </row> <row><entry><p>DialResolution </p> </entry> <entry><p>Specifies whether to add additional information from the Location table such as AreaCode, NatCode to the ISP number (DefaultTelNum) to be dialled. </p> </entry> <entry><p> <codeph>iDialResolution</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDialResolution</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-FD08A3B2-4936-5D02-A023-27775FC9A79E"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Location inforamtion will be added </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Location inforamtion will not be added </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot have null value and the default value isTRUE </i>  </p> </entry> </row> <row><entry><p id="GUID-BEB3A86E-8925-54B6-AF9C-DA6CEED2C962">  UseLoginScript </p> </entry> <entry><p>Enables the user to login with or without a script </p> </entry> <entry><p> <codeph>iUseLoginScript</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdUseLoginScript</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-92E38503-E273-5EEF-88E0-AF9B7B43F70B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Uses login script to login </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>No login script is required </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot have null value and the default value isTRUE </i>  </p> </entry> </row> <row><entry><p>PromptForLogin </p> </entry> <entry><p>To prompt the user to enter the login information, i.e. username and password </p> </entry> <entry><p> <codeph>iPromptForLogin</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdPromptForLogin</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-FFE8118C-71B7-5EFB-AFBD-E2D64F0CD5B5"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Prompts the user to enter login information </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>No login informationj is required </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null and the default value is TRUE </i>  </p> </entry> </row> <row><entry><p>IfPromptForAuth </p> </entry> <entry><p>A boolean flag to prompt for authentication by the ISP once the conection is established </p> </entry> <entry><p> <codeph>iIfPromptForAuth</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfPromptForAuth</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-81120DCC-722A-5608-B3B4-9DC10243A6F8"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Prompts for authentication </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not prompt for authentication </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null, FALSE is the default value.</i>  </p> </entry> </row> <row><entry><p id="GUID-0F3C539D-1319-5D25-80D5-9C13123037AD">  IpAddrFromServer </p> </entry> <entry><p>Detrmines whether or not to get IP address from the ISP </p> </entry> <entry><p> <codeph>iIpAddrFromServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdIpAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-ABF23268-5D81-5C6A-B86E-89E9445E36E5"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets IP address from the ISP </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IP address from the ISP </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null. This field should be set to FASLE for using static IP address</i>  </p> </entry> </row> <row><entry><p id="GUID-CCEA0DD3-AFEC-53AE-866D-6E8DA1A088DA"> IpDNSAddrFromServer </p> </entry> <entry><p>Detrmines whether or not to get DNS address for IPv4 from the ISP </p> </entry> <entry><p> <codeph>iIpDNSAddrFromServer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdpDNSAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-95177D49-A2A9-55B8-9682-9FA55C20795B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the IPv4 DNS address from the ISP </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IPv4 DNS address from the ISP </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null, may be set to FALSE for using static DNS server address specified in IpNameServer1 and IpNameServer2 fields</i>. </p> </entry> </row> <row><entry><p>Ip6DNSAddrFromServer </p> </entry> <entry><p>Detrmines whether or not to get DNS address for IPv6 from the ISP </p> </entry> <entry><p> <codeph>Ip6DNSAddrromServer </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIp6DNSAddrFromServer</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-12D4A21F-7D5C-582D-97F4-3C0C6FA801FD"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Gets the IPv6 DNS address from the ISP </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Does not get the IPv6 DNS address from the ISP </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field cannot be null, may be set to FALSE for using static DNS server address specified in Ip6NameServer1 and Ip6NameServer2 fields</i>. </p> </entry> </row> <row><entry><p>Type </p> </entry> <entry><p>Information about the browser protocol used like HTML or WML </p> </entry> <entry><p> <codeph>iType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdType</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-BD215F7B-A380-51BF-A25F-E6BBBD840293"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>INTERNETONLY </p> </entry> <entry><p>ISP offers HTML only </p> </entry> <entry><p>TCommsDbIspType::EIspTypeInternetOnly </p> </entry> </row> <row><entry><p>WAPONLY </p> </entry> <entry><p>ISP offers WML only </p> </entry> <entry><p>TCommsDbIspType::EIspTypeWAPOnly </p> </entry> </row> <row><entry><p>INTERNETANDWAP </p> </entry> <entry><p>ISP offers both HTML and WML </p> </entry> <entry><p>TCommsDbIspType::EIspTypeInternetAndWAP </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have a null value</i>  </p> </entry> </row> <row><entry><p>DefaultTelNumber </p> </entry> <entry><p>The ISP telephone number </p> </entry> <entry><p>C<codeph>CDDialOutISP::iDefaultTelNum</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDefaultTelNum</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p id="GUID-D453D067-7A33-5B83-A201-66B1B572CF1A"> LoginScript </p> </entry> <entry><p>The login script used to login to the ISP </p> </entry> <entry><p> <codeph>iLoginScript</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLoginScript</apiname></xref>  </p> </entry> <entry><p>Long text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>LoginName </p> </entry> <entry><p>User name to login with </p> </entry> <entry><p> <codeph>iLoginName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLoginName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>LoginPass </p> </entry> <entry><p>User password to login with </p> </entry> <entry><p> <codeph>iloginPass</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdLoginPass</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>Chargecard </p> </entry> <entry><p>An optional field containing the chargecard or credit card details used to pay for the service by the user </p> </entry> <entry><p> <codeph>iChargecard</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdChargecard</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>A reference to the chargecard table record </p> <p> <i>This is an optional field and can have null value </i> </p> </entry> </row> <row><entry><p>DisplayPCT </p> </entry> <entry><p>A boolean flag used whether or not to display post connection terminal </p> </entry> <entry><p> <codeph>iDisplayPCT</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDisplayPCT</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-3E9D0564-8EBE-5963-A66E-5D7FFB627350"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>PCT information is displayed </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>PCT information is not displayed </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value </i>  </p> </entry> </row> <row><entry><p>IfParams </p> </entry> <entry><p>Interface parameter string used to specify the lower layer that interface protocol is to use </p> </entry> <entry><p> <codeph>iIfParams</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfParams</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IfNetworks </p> </entry> <entry><p>List of network protocols to be used by the network interface (nif) separated by comma </p> </entry> <entry><p> <codeph>iIfNetworks</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfNetworks</apiname></xref>  </p> </entry> <entry><p>Long text </p> </entry> <entry><p>User defined. Example IP, IP6 </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IfAuthName </p> </entry> <entry><p>Prompt user to enter authentication username used in the datalink layer. Example in PPP </p> </entry> <entry><p> <codeph>iIfAuthName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfAuthName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IfAuthPass </p> </entry> <entry><p>Prompt user to enter authentication password used in the datalink layer. Example in PPP </p> </entry> <entry><p> <codeph>iIfAuthPass</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfAuthPass</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>AuthRetries </p> </entry> <entry><p>Number of times to retry authentication when it fails </p> </entry> <entry><p> <codeph>iAuthRetries</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAuthRetries</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined integer value </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IfCallbackEnabled </p> </entry> <entry><p>A boolean flag indicating whether callback is enabled or not </p> <p>The process is as follows: </p> <ul><li id="GUID-46C2D275-216D-5E1E-8E13-8E97ED81F383"><p>User dials a connection to the ISP </p> </li> <li id="GUID-6617D280-3ED7-5C01-8F83-F11D898F2D5B"><p>Once the user's identity is authenticated, the user makes a request to the ISP to terminate the connection </p> </li> <li id="GUID-DCD24656-BA59-5B5F-A000-8700941D68CB"><p>The ISP waits a timeout period before "calling back" the user </p> </li> </ul> </entry> <entry><p> <codeph>iIfCallbackEnabled </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfCallbackEnabled</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-4A88B5AC-F909-5BAF-AAF9-DEC7807FBAC3"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Callback is enabled </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Callback is disabled </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IfCallbacktype </p> </entry> <entry><p>Information regarding the type of callback used as specified by IETF </p> <p>Refer to Callback Control Protocol (CBCP) and Microsoft CBCP </p> </entry> <entry><p> <codeph>iIfCallbackType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfCallBackType</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-3062A168-A572-5D7D-9605-B51646FBE8AD"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Value </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>IETF0 </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>IETF1 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>IETF2 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>IETF3 </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>IETF4 </p> </entry> </row> <row><entry><p>5</p> </entry> <entry><p>IETF5 </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>MSCBCPCLIENTNUM </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>MSCBCPSERVERNUM </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>MSCBCPOVERRIDESERVERNUM </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>0 is the default value</i>  </p> </entry> </row> <row><entry><p>IfCallbackInfo </p> </entry> <entry><p>Callback information such as callback phone number </p> </entry> <entry><p> <codeph>iIfCallbackInfo</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfCallbackInfo</apiname></xref>  </p> </entry> <entry><p>Binary </p> </entry> <entry><p>User defined </p> <p> <i>0 is the default value</i>  </p> </entry> </row> <row><entry><p id="GUID-7B4B1877-A137-5A4B-A45D-4001CEAAD889"> IfServerMode </p> </entry> <entry><p>Enable PPP server mode </p> </entry> <entry><p> <codeph>iIfServerMode</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIfServerMode</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p>TRUE - set PPP into server mode. </p> <p>FALSE - disable functionality to handle incoming PPP. </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>CallbackTimeout </p> </entry> <entry><p>Time duration to wait for ISP to callback in microseconds </p> </entry> <entry><p>C<codeph>iCallbackTimeout</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCallbackTimeout</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined. </p> <p> <i>0 is the default value</i>  </p> </entry> </row> <row><entry><p id="GUID-5938AC16-FDB9-5EE5-8769-6A687E591A47"> IpAddr </p> </entry> <entry><p>Static IP address used by the interface. This address is used when dynamic IP is not allocated by the ISP </p> </entry> <entry><p> <codeph>iIpAddr </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpAddr</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>A static IP address. This field can be null when dynamic IP address is used. </i>  </p> </entry> </row> <row><entry><p>IpNetMask </p> </entry> <entry><p>IP netmask of the interface if required </p> </entry> <entry><p> <codeph>iIpNetmask</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpNetMask</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p id="GUID-9D7462C3-133E-5B76-8C9A-8D848B6B351B"> IpGateway </p> </entry> <entry><p>Gateway IP address </p> </entry> <entry><p> <codeph>iIpGateway</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpGateway</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p id="GUID-4F3C5404-E409-5174-9E6B-BD6024567BE9">  IpNameServer1 </p> </entry> <entry><p>Static address of the primary IPv4 DNS server </p> </entry> <entry><p> <codeph>iIpNameServer1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpNameServer1</apiname></xref>  </p> </entry> <entry><p>An IPv4 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p id="GUID-5081D955-58BF-5B59-AB49-D5D6CBBE2F86"> IpNameServer2 </p> </entry> <entry><p>Static IP address of the secondary IPv4 DNS server </p> </entry> <entry><p> <codeph>iIpNameServer2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpNameServer2</apiname></xref>  </p> </entry> <entry><p>An IPv4 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>Ip6NameServer1 </p> </entry> <entry><p>Static IP address of the primary IPv6 DNS server </p> </entry> <entry><p> <codeph>iIp6NameServer1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIp6NameServer1</apiname></xref>  </p> </entry> <entry><p>An IPv6 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>Ip6NameServer2 </p> </entry> <entry><p>Static IP address of the secondary IPv6 DNS server </p> </entry> <entry><p> <codeph>iIp6NameServer2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIp6NameServer2</apiname></xref>  </p> </entry> <entry><p>An IPv6 address </p> </entry> <entry><p>User defined </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>ConfigDaemonName </p> </entry> <entry><p>Address configuration daemon name </p> </entry> <entry><p> <codeph>iConfigDaemonName</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConfigDaemonName</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined. <i>Example DHCP, MobileIP,etc</i>  </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IpAddrLeaseValidFrom </p> </entry> <entry><p>Start of lease of dynamic address allocated by the ISP </p> </entry> <entry><p> <codeph>iIpAddrLeaseFrom </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpAddrLeaseValidFrom</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined text values of start date and time of the lease </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>IpAddrLeaseValidTo </p> </entry> <entry><p>End of lease of dynamic address allocates by the ISP </p> </entry> <entry><p> <codeph>iIpAddrLeaseValidto</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIpAddrLeaseValidto</apiname></xref>  </p> </entry> <entry><p>Short text </p> </entry> <entry><p>User defined text value containing the end date and time of the lease </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>EnableIPHeaderComp </p> </entry> <entry><p>A boolean value flag determining IP header compression protocol. IP header compression is the process of compress the excess header before transmission and uncompress them at the receiving end </p> </entry> <entry><p> <codeph>iEnableIpHeaderComp</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdEnableIpHeaderComp</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-DE50DF28-5BF9-54EC-A3D8-452B82E2E59F"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>IP header compression is enabled </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>IP header compression is disabled </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>EnableLCPExtension </p> </entry> <entry><p>Information regarding LCP extension. LCP extensions include callback option, Time remaining and Identification packets as defined in RFC 1570. Note that for the DialInISP table the field is called <codeph>EnableLCPExtensions</codeph>. </p> </entry> <entry><p> <codeph>iEnableLCPExtension</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdEnableLCPExtension</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-2FABBD5A-1063-585D-AF7E-060D95E10653"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>LCP extension is enabled </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>LCP extension is disabled </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>FALSE is the default value </i>  </p> </entry> </row> <row><entry><p>DisablePlainTextAuth </p> </entry> <entry><p>Password Authentication Protocol (PAP) uses plain text passwords for authentication of remote server and is the least secure method. Challenge Handshake Authentication Protocol (CHAP) uses similar method but with complex passwords and it is more secure. Plain text passwords or disabled when CHAP is used </p> </entry> <entry><p> <codeph>iDisablePlainTextAuth </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdDisablePlainTextAuth</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-1BD22A91-3A87-51FA-B90F-A0B4A92358DF"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Disable plain text passwords </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Enable plain text passwords </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>EnableSWComp </p> </entry> <entry><p>Information regarding software compression. When this option is enabled the payload is compressed. This is different from header compression </p> </entry> <entry><p> <codeph>iEnableSWComp</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdEnableSWComp</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-D33D752F-29B3-535A-B88D-EAF74D7D15C0"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>Enable compression </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>Disable compression </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>BearerService </p> </entry> <entry><p>Bearer service refers to a service that allows transmission of information signals between network interfaces (NIFs). It defines the correct service to use when setting up the data connection. </p> <p>Enumeration defined in RMobileCall::TMobileCallDataService. Unrestricted data information (UDI) is the ability to transfer any bit pattern over a digital channel and Restricted data information (RDI) is not capable of transferring all data values over a digital channel. For example- the 8-bit value “0” cannot be transmitted. UDI/RDI is the information transfer capability that is set to/from the network. This can be set to either UDI or RDI. The "information transfer rate" for a data call would then be set to "64 kbps". Together, the two parts are used to request 64K IDSN data calls, commonly abbreviated as 64U or 64R calls. </p> <p>Public Land Mobile Network (PLMN)is a generic name for all mobile wireless networks that use land based radio transmitters or base stations. Packet Assembly/Disassembly (PAD) is a device that is used to assemble/disassemble packets which allows mobile phone devices to connect to packet-switched networks. PAD may also carry out buffering tasks. </p> </entry> <entry><p> <codeph>iBearerService </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerService</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-26F09C7A-594A-5D4D-8912-7FB96D8AA039"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0 </p> </entry> <entry><p>- This will use the default service type </p> </entry> <entry><p>TMobileCallDataService::EServiceUnspecified </p> </entry> </row> <row><entry><p>1 </p> </entry> <entry><p>Connection set-up will request a Data circuit asynchronous (UDI or 3.1 KHz, excluding PLMN) service. It can only operate under GSM </p> </entry> <entry><p>TMobileCallDataService::EServiceDataCircuitAsync </p> </entry> </row> <row><entry><p>2 </p> </entry> <entry><p>Connection set-up will request a Data circuit asynchronous (RDI) service. It can only operate under GSM/WCDMA </p> </entry> <entry><p>TMobileCallDataService::EServiceDataCircuitAsyncRdi </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Connection set-up will request a Data circuit synchronous (UDI or 3.1 KHz, excluding PLMN) service. It can only operate under GSM/WCDMA </p> </entry> <entry><p>TMobileCallDataService::EServiceDataCircuitSync </p> </entry> </row> <row><entry><p>4</p> </entry> <entry><p>Connection set-up will request a Data circuit synchronous (RDI) service </p> </entry> <entry><p>TMobileCallDataService::EServiceDataCircuitSyncRdi </p> </entry> </row> <row><entry><p>5 </p> </entry> <entry><p>Connection set-up will request a PAD asynchronous (UDI) service </p> </entry> <entry><p>TMobileCallDataService::EServicePADAsyncUDI </p> </entry> </row> <row><entry><p>6</p> </entry> <entry><p>Connection set-up will request a PAD asynchronous (RDI) service. It can only operate under GSM/WCDMA </p> </entry> <entry><p>TMobileCallDataService::EServicePADAsyncRDI </p> </entry> </row> <row><entry><p>7</p> </entry> <entry><p>Connection set-up will request a Packet Access synchronous (UDI) service </p> </entry> <entry><p>TMobileCallDataService::EServicePacketAccessSyncUDI </p> </entry> </row> <row><entry><p>8</p> </entry> <entry><p>Connection set-up will request a Packet Access synchronous (RDI) service. </p> </entry> <entry><p>TMobileCallDataService::EServicePacketAccessSyncRDI </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>BearerName </p> </entry> <entry><p>Name of the bearer used to establish and transmit data over the connection </p> </entry> <entry><p> <codeph>iBearerName </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerName</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-35F18D7C-456F-5241-AC95-01904C3066C5"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>ASYNCHRONOUS </p> </entry> <entry><p>Bearer transmits data in an asynchronous manner, meaning the transmitter and the receiver’s clock being independent of each other and receive time is not synchronised </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsDataCircuitAsynchronous </p> </entry> </row> <row><entry><p>ASYNCHRONOUSRDI </p> </entry> <entry><p>The bearer transmits data in an asynchronous manner. However data that can be sent is restricted </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsDataCircuitAsynchronousRDI </p> </entry> </row> <row><entry><p>SYNCHRONOUS </p> </entry> <entry><p>The bearer transmits data in a synchronous manner meaning the transmission each time requires an ACK to be sent back to the sender before more data is sent out to the receiver </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsDataCircuitSynchronous </p> </entry> </row> <row><entry><p>SYNCHRONOUSRDI </p> </entry> <entry><p>The bearer transmits data in a synchronous manner. However, data that can be sent is restricted </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsDataCircuitSynchronousRDI </p> </entry> </row> <row><entry><p>PADSYNCUDI </p> </entry> <entry><p>The bearer transmits data in a synchronous manner, as well as assembling/disassembling packets at sender/receiver end. The data that can be transmitted is unrestricted </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsPADAsyncUDI </p> </entry> </row> <row><entry><p>PADSYNCRDI </p> </entry> <entry><p>The bearer transmits data in a synchronous manner, as well as assembling/disassembling packets at sender/receiver end. However data that can be sent is restricted. DADS- AccessSyncUDI </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsPADAsyncRDI </p> </entry> </row> <row><entry><p>ACCESSSYNCRDI- SERVICEEXTENDED </p> </entry> <entry><p>Bearer can support extended data service capabilities, this value is reserved for future use. </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsPacketAccessSyncRDI </p> </entry> </row> <row><entry><p>DADS </p> </entry> <entry><p>The bearer can support packet access (synchronous) UDI </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsPacketAccessSyncUDI </p> </entry> </row> <row><entry><p>SERVICEEXTENDED </p> </entry> <entry><p>Bearer can support extended data service capabilities </p> </entry> <entry><p>TMobileCallDataServiceCaps::KCapsServiceExtended </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>BearerSpeed </p> </entry> <entry><p>Baud rate of the bearer </p> </entry> <entry><p> <codeph>iBearerSpeed</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerSpeed</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-4F7391D3-233F-52C9-A0DE-BAAC98781A89"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database values </entry> </row> </thead> <tbody><row><entry><p>UNSPECIFIED </p> </entry> <entry><p>Connection set-up will request the speed depending on the data carrier (bearer) chosen </p> </entry> <entry><p>TMobileCallDataSpeed::ESpeedUnspecified </p> </entry> </row> <row><entry><p>AUTOBAUDING </p> </entry> <entry><p>Connection set-up will request auto-bauding. This means the ISP’s receiving device can accept data from a variety of transmitting devices operating at different speeds without needing to establish data rates in advance. </p> </entry> <entry><p>TMobileCallDataSpeed::ESpeedAutobauding </p> </entry> </row> </tbody> </tgroup> </table> </p> <p>2400, 4800, 9600, 14400, 19200, 28800, 33600, 38400, 56000, 64000 </p> <p> <i>The data rates are specified in bits per second (bps)</i>. <i>This field can have null value</i>. </p> </entry> </row> <row><entry><p>BearerProtocol </p> </entry> <entry><p>A set of standards governed by the ITU-T allowing different bearers can communicate with each other. Bearer protocol definitions are typically referred to by the letter V followed by a number </p> </entry> <entry><p> <codeph>iBearerProtocol</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerProtocol</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-BE7BE904-F548-5E5C-AA03-B1C17FD72D4D"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Databse value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Protocol is not defined by the user </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolUnspecified </p> </entry> </row> <row><entry><p>UNSPECIFIED </p> </entry> <entry><p>Protocol is not defined by the user </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolUnspecified </p> </entry> </row> <row><entry><p>V22BIS </p> </entry> <entry><p>V.22bis protocol used. </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolV22bis </p> </entry> </row> <row><entry><p>V32 </p> </entry> <entry><p>V.32 protocol used. </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolV32 </p> </entry> </row> <row><entry><p>V34 </p> </entry> <entry><p>V.34 ptotocol used. </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolV34 </p> </entry> </row> <row><entry><p>V110 </p> </entry> <entry><p>V.110 protocol used </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolV110 </p> </entry> </row> <row><entry><p>V120 </p> </entry> <entry><p>V.120 protocol used </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolV120 </p> </entry> </row> <row><entry><p>X31FLAGSTUFFING </p> </entry> <entry><p>X31FlagStuffing standard is used. A frame delimiter is a unique sequence of bits that begins and ends a frame of data. This protocol is based on the idea of stuffing. Stuffing (only for synchronous transmission of data) is used to ensure the data we are trying to send through the bearer is not identical to the flag. </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolX31FlagStuffing </p> </entry> </row> <row><entry><p>PIAFS </p> </entry> <entry><p>Personal Handyphone Internet Access Forum Standard (PIAFS) protocol is used. </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolPIAFS </p> </entry> </row> <row><entry><p>BITTRANSPARENT </p> </entry> <entry><p>A protocol supporting Bit-transparent services is used </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolBitTransparent </p> </entry> </row> <row><entry><p>PSTNMULTIMEDIAVOICEFALLBACK </p> </entry> <entry><p> <b/> - A protocol supporting Bit-transparent services is used </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolPstnMultimediaVoiceFallback </p> </entry> </row> <row><entry><p>PSTNMULTIMEDIA </p> </entry> <entry><p>A protocol supporting PSTN multimedia connections is used </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolPstnMultimedia </p> </entry> </row> <row><entry><p>ISDNMULTIMEDIA </p> </entry> <entry><p>A protocol supporting ISDN multimedia connections is used </p> </entry> <entry><p>TMobileCallDataProtocol::EProtocolIsdnMultimedia </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>BearerCE </p> </entry> <entry><p>Defines the quality of service (QoS) of the connection </p> </entry> <entry><p> <codeph>iBearerCE</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerCE</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-CC829A0E-B093-550A-A53F-7946D9BAE8CC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>UNSPECIFIED </p> </entry> <entry><p>Connection setup will requests its default connection </p> </entry> <entry><p>TMobileCallDataQoS::EQoSUnspecified </p> </entry> </row> <row><entry><p>NONTRANSPARENT </p> </entry> <entry><p>Connection setup will request a non- transparent connection </p> </entry> <entry><p>TMobileCallDataQoS::EQoSNonTransparent </p> </entry> </row> <row><entry><p>TRANSPARENT </p> </entry> <entry><p>Connection setup will request a transparent connection </p> </entry> <entry><p>TMobileCallDataQoS::EQoSTransparent </p> </entry> </row> <row><entry><p>TRANSPARENTPREF </p> </entry> <entry><p>Connection setup will prefer a transparent connection. If not available, will request a non transparent connection </p> </entry> <entry><p>TMobileCallDataQoS::EQosTransparentPreferred </p> </entry> </row> <row><entry><p>NONTRANSPARENTPREF </p> </entry> <entry><p>Connection setup will prefer a non-transparent connection. if not available, will request a transparent connection </p> </entry> <entry><p>TMobileCallDataQoS::EQosNonTransparentPreferred </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value.</i>  </p> </entry> </row> <row><entry><p>BearerType </p> </entry> <entry><p>The method used by the bearer to transmit data </p> </entry> <entry><p> <codeph>iBearerType</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearertype</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-A22F98CB-E109-5802-8555-515D295963E9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database values</entry> </row> </thead> <tbody><row><entry><p>CSD </p> </entry> <entry><p>Bearer establishes circuit-switched connection </p> </entry> <entry><p>TCommsDbBearerType::EBearerTypeCSD </p> </entry> </row> <row><entry><p>HSCSD </p> </entry> <entry><p>Bearer establishes high speed circuit-switched connection </p> </entry> <entry><p>TCommsDbBearerType::EBearerTypeHSCSD </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value.</i>  </p> </entry> </row> <row><entry><p>ChannelCoding </p> </entry> <entry><p>The channel coding used for the connection. This field can only be used when the BearerType field has a value of "HSCSD". Channel coding is a way of reducing information rate through the channel (connection) in order to increase the reliability of the data </p> <p>HSCSD has ability to use at best 4 multiple time slots at a time, giving a potential max transfer rate of 4 X 14.4K </p> </entry> <entry><p> <codeph>iChannelCoding</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdChannelCoding</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-C2C9A963-22BC-5D9F-9EDF-F33D62BD0D38"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>UNSPECIFIED </p> </entry> <entry><p>Data rate unspecified by the user </p> </entry> <entry><p>TMobileCallTchCoding::ETchCodingUnspecified </p> </entry> </row> <row><entry><p>48 </p> </entry> <entry><p>4.8K full rate data traffic channel is used </p> </entry> <entry><p>TMobileCallTchCoding::ETchCoding48 </p> </entry> </row> <row><entry><p>96 </p> </entry> <entry><p>9.6K full rate data traffic channel is used </p> </entry> <entry><p>TMobileCallTchCoding::ETchCoding96 </p> </entry> </row> <row><entry><p>144 </p> </entry> <entry><p>14.4K full rate data traffic channel is used </p> </entry> <entry><p>TMobileCallTchCoding::ETchCoding144 </p> </entry> </row> <row><entry><p>288 </p> </entry> <entry><p>28.8K full rate data traffic channel is used </p> </entry> <entry><p>TMobileCallTchCoding::ETchCoding288 </p> </entry> </row> <row><entry><p>320 </p> </entry> <entry><p>32K full rate data traffic channel is used </p> </entry> <entry><p>TMobileCallTchCoding::ETchCoding320 </p> </entry> </row> <row><entry><p>432 </p> </entry> <entry><p>43.2K full rate data traffic channel is used </p> </entry> <entry><p>TMobileCallTchCoding::ETchCoding432 </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value.</i>  </p> </entry> </row> <row><entry><p>AIUR </p> </entry> <entry><p>The AIUR (Air Interface User Rate) is the rate indicated between a Mobile Terminal (Mobile Station) and the IWF (Interworking Function) for transparent and non-transparent data services </p> <p>The IWF is responsible for connecting circuit-switched data paths of a mobile network with a fixed network such as PSTN or ISDN </p> </entry> <entry><p> <codeph>iAiur</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAiur</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p>UNSPECIFIED </p> <p>9600, 14400, 19200, 28800, 38400, 43200, 57600 </p> <p> <i>The data rates are specified in bits per second (bps)</i>  </p> <p>The database stores the values such as TMobileCallAiur::EAiurBps9600 for the rate of 9600. </p> </entry> </row> <row><entry><p>RlpVersion </p> </entry> <entry><p>Radio Link Protocol (RLP)- is an automatic repeat request (ARQ) protocol used over a wireless air interface. RLP are differentiated by version numbers </p> </entry> <entry><p> <codeph>iRlpVersion</codeph>  </p> </entry> <entry><p>K<xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CDTIdRlpVersion</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-25BE9A42-5420-5057-ABBE-B7B881B9E4BA"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Call set-up will not request RLP version </p> </entry> <entry><p>TMobileCallDataRLPVersion::ERLPNotRequested </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Version 0 will request single link basic RLP establishing one physical line </p> </entry> <entry><p>TMobileCallDataRLPVersion::ERLPSingleLinkVersion0 </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Version 1 is the extended version of Version 0, allowing data compression </p> </entry> <entry><p>TMobileCallDataRLPVersion::ERLPSingleLinkVersion1 </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>Version 2 is the multi link RLP and should support up to 8 substreams on one or more physical links </p> </entry> <entry><p>TMobileCallDataRLPVersion::ERLPSingleLinkVersion2 </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>This field can have null value</i>  </p> </entry> </row> <row><entry><p>InitString </p> </entry> <entry><p>Initialisation string for the bearer, used specifically when a modem is in use. It is used to initialise (init) the modem by sending it a string of commands, typically Hayes commands. These commands configure the modem's options for things like error correction, data compression, flow control, and many other parameters </p> <p>Init strings may be used to improve the connection for example when there is trouble with the connection or it seems too slow </p> </entry> <entry><p> <codeph>iInitString</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdInitstring</apiname></xref>  </p> </entry> <entry><p>Binary </p> </entry> <entry><p>A binary string typically a Hayes command such as AT or ATZ </p> <p> <i>This field can have null value.</i>  </p> </entry> </row> <row><entry><p>IwfToMs </p> </entry> <entry><p>Integer specifying network to MS window size. IWF stands for Interworking Function and MS stands for Mobile Station. </p> </entry> <entry><p> <codeph>iIwfToMs</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIwfToMs</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>MsToIwf </p> </entry> <entry><p>Integer specifying mobile device to network window size </p> </entry> <entry><p> <codeph>iMsToIwf </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMsToIwf</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>RetransmissionAttempts </p> </entry> <entry><p>Specifies number of RLP retransmission attempts </p> </entry> <entry><p> <codeph>iRetransmissionAttempts</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdRetransmissionAttempts</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined </p> </entry> </row> <row><entry><p>ResequencePeriod </p> </entry> <entry><p>Specifies the period when packets are being resequenced </p> </entry> <entry><p> <codeph>iResequencePeriod</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdResequencePeriod</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer specifying time in microseconds </p> <p> <i>0 is the default value</i>  </p> </entry> </row> <row><entry><p>V42Compression </p> </entry> <entry><p>Enumeration specifying whether or not to set V.42 Compression and the direction that compression is used </p> <p>V.42 compression follows the V.42bis protocol which is a data compression protocol used on top of the bearer protocol </p> </entry> <entry><p> <codeph>CDDialOutISP::iV42Compression</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdV42Compression</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-DB61A401-BBE1-5912-850D-C20DEF4F628B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>The V.42 compression is not requested </p> </entry> <entry><p>TMobileCallDataV42bis::EV42bisNeitherDirection </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>The V.42 compression is used in the initiator-responder direction </p> </entry> <entry><p>TMobileCallDataV42bis::EV42bisTxDirection </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>The V.42 compression is used in the responder-initiator direction </p> </entry> <entry><p>TMobileCallDataV42bis::EV42bisRxDirection </p> </entry> </row> <row><entry><p>3</p> </entry> <entry><p>The V.42 compression is used in both directions </p> </entry> <entry><p>TMobileCallDataV42bis::EV42bisBothDirection </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>V42Codewords </p> </entry> <entry><p>Specifies the V.42 codewords if V.42 compression is used. A codeword represents a string of characters in compressed form </p> </entry> <entry><p> <codeph>iV42Codewords</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdV42Codewords</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-93B20A3C-1434-5B05-B5AF-37CAF67B2E02"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> CEDValue </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>There is no preference for Asymmetry Bias </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Downlink Bias is preferred </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Uplink bias is preferred. </p> </entry> </row> </tbody> </tgroup> </table> </p> <p> <i>0 is the default value</i>  </p> </entry> </row> <row><entry><p>V42MaxLength </p> </entry> <entry><p>Specifies the maximum string length of the data before V.42 compression </p> </entry> <entry><p> <codeph>iV42MaxLength</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdV42MaxLength</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>Assymetry </p> </entry> <entry><p>For HSCSD. An enumeration to specify whether </p> <p>1) Asymmetrical bias on the connection is preferred </p> <p>2) Type of asymmetrical bias used. Note The service provided by uplink and downlink is different </p> </entry> <entry><p> <codeph>iAssymetry</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAssymetry</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-68BF2F0D-B957-5CD8-98FB-EA62EA13856C"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> CED value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>There is no preference for Asymmetry Bias </p> </entry> <entry><p>TMobileCallAsymmetry::EAsymmetryNoPreference </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Downlink Bias is preferred </p> </entry> <entry><p>TMobileCallAsymmetry::EAsymmetry EAsymmetryDownlink </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>Uplink bias is preferred </p> </entry> <entry><p>TMobileCallAsymmetry::EAsymmetryEAsymmetryUplink </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>UserInitUpgrade </p> </entry> <entry><p>Specifies whether the user will initialise service upgrade over HSCSD or not </p> </entry> <entry><p> <codeph>iUserInitUpgrade</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdUserInitUpgrade</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-EC3825F0-407B-5A55-B0CB-F83E61E4D434"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>User initialises service upgrade </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>User does not initialise service upgrade </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>UseEdge </p> </entry> <entry><p>Specifies whether to use EDGE technology. EDGE stands for Enhanced Data rates for GSM Evolution. This technology works in GSM networks, also known as EGPRS. This is a upgrade to GPRS and can function on any network with GPRS, provided the carrier implements the necessary upgrades.. It can outperform GPRS data throughput by 300% </p> </entry> <entry><p> <codeph>iUseedge</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdUseEdge</apiname></xref>  </p> </entry> <entry><p>Boolean </p> </entry> <entry><p><table id="GUID-2B1BC720-D3B6-584A-92B6-659886625D68"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Value </entry> <entry> Description </entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>TRUE </p> </entry> <entry><p>EDGE connection is used </p> </entry> <entry><p>ETRUE </p> </entry> </row> <row><entry><p>FALSE </p> </entry> <entry><p>EDGE connection is not used </p> </entry> <entry><p>EFALSE </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p>RequestedTimeSlots </p> </entry> <entry><p>Requested number of time slots for HSCSD </p> </entry> <entry><p> <codeph>iRequestedTimeSlots </codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdRequestedTimeSlots</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>MaximumTimeSlots </p> </entry> <entry><p>Maximum number of time slots for HSCSD which could be requested during the connection </p> </entry> <entry><p> <codeph>iMaximumTimeSlots</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMaximumTimeSlots</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined integer value </p> </entry> </row> <row><entry><p>AckTimer </p> </entry> <entry><p>An integer specifying the RLP acknowledgement timeout </p> </entry> <entry><p> <codeph>iAckTimer</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAckTimer</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>User defined time in microseconds </p> </entry> </row> <row><entry><p>BearerTechnology </p> </entry> <entry><p>Specifies whether the bearer is a CSD/HSCSD bearer </p> </entry> <entry><p> <codeph>iBearerTechnology</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerTechnology</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry><p><table id="GUID-FF150883-C711-572F-983C-9FFEF6164EAA"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CED value</entry> <entry>Description</entry> <entry>Database value</entry> </row> </thead> <tbody><row><entry><p>0</p> </entry> <entry><p>Bearer is CSD </p> </entry> <entry><p>TCommsDbBearerType::EBearerTypeCSD </p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>Bearer is HSCSD </p> </entry> <entry><p>TCommsDbBearerType::EBearerTypeHSCSD </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> </tbody> </tgroup> </table> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-387DB01C-EA48-5A10-A960-9706F3D2D0B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-387DB01C-EA48-5A10-A960-9706F3D2D0B1" xml:lang="en"><title>Activating
+an Alarm on Given Days</title><shortdesc>This tutorial explains the steps required to activate an alarm
+that expires, or goes OFF on one or more days of the week. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>The <codeph>TASShdAlarm</codeph> class
+provides functions that enable an alarm to repeat on specified days of the
+week. This alarm is known as a <i>Daily On Given Days</i> alarm. The alarm
+can be repeated weekly on a single day or on multiple days. The alarms can
+also be repeated at the same time on every specified day. </p> <p>If the user
+changes the system date or time, the alarm expires once. Unlike a <i>Repeat
+Once</i> alarm, a <i>Daily On Given Days</i> alarm is not deleted but rescheduled
+for the next available expiry time. </p> </section>
+<section><title>Procedure</title> <p>Follow the steps given below to create
+a <i>Daily On Given Days</i> alarm that is active on Monday and Wednesday
+of every week: </p> <ol id="GUID-55067C23-0A8E-5EC8-A029-8B2045BDAFC4">
+<li id="GUID-C189432B-4468-56D1-B547-D5A9DBFCF998"><p>Create an alarm with
+the <codeph>TASShdAlarm</codeph> class. </p> </li>
+<li id="GUID-AA3EA741-F3AB-5A4D-B279-AA2C053D7313"><p>Use the<codeph>SetAlarmDays()</codeph> API
+to specify the required days. <codeph>EAlarmDayMonday</codeph> and <codeph>EAlarmDayWednesday</codeph> are
+the parameters to specify that the alarm must repeat on Monday and Wednesday
+as shown in the code fragment. </p> <p> <b>NOTE</b>: <xref href="GUID-1AA25731-023C-315B-8047-8FBFEEF71712.dita"><apiname>SetAlarmDays()</apiname></xref> must
+be specifically used for <codeph>EAlarmRepeatDefinitionRepeatDailyOnGivenDays</codeph> repeat
+definition only. </p> </li>
+<li id="GUID-81AC5FBA-A003-5196-B692-B53632467F01"><p>Use <codeph>RASCliSession</codeph> to
+create a session with the Alarm Server. </p> </li>
+<li id="GUID-A4D4B840-0A7A-58D4-A192-9CBCA12C1493"><p>Add the alarm to the
+Alarm Server using the <xref href="GUID-1AA25731-023C-315B-8047-8FBFEEF71712.dita"><apiname>AlarmAdd()</apiname></xref> API. </p> </li>
+</ol> <p>The following code fragment illustrates how to activate an alarm
+on the given days: </p> <codeblock id="GUID-876EF47E-4699-54C7-B102-518679A7DF3B" xml:space="preserve">
+#include &lt;ASCliSession.h&gt;    // For RASCliSession.
+#include &lt;ASShdAlarm.h&gt;      // For TASShdAlarm.
+
+…
+
+// Create an alarm that is active on Monday and Wednesday.
+TASShdAlarm alarm;
+alarm.RepeatDefinition() = EAlarmRepeatDefinitionRepeatDailyOnGivenDays;
+alarm.SetAlarmDays( EAlarmDayMonday | EAlarmDayWednesday );
+
+// Connect to Alarm Server.
+RASCliSession alarmSession;
+User::LeaveIfError( alarmSession.Connect() );
+CleanupClosePushL( alarmSession );
+
+// Add the alarm to Alarm Server.
+User::LeaveIfError( alarmSession.AlarmAdd( alarm ) );
+
+CleanupStack::PopAndDestroy();
+</codeblock> </section>
+<section><title>Results</title> <p>The alarm is set to repeat every week on
+Monday and Wednesday. </p> </section>
+</conbody><related-links>
+<link href="GUID-114D4F3F-9358-5B50-94DC-45CCBA783DF4.dita"><linktext>Alarm Server
+Overview</linktext></link>
+<link href="GUID-E6788741-EF34-57B7-B4D4-8AAC21B25774.dita"><linktext>Alarm Server
+Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-389F1390-5752-5F2E-B2F6-724F9543BB35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-389F1390-5752-5F2E-B2F6-724F9543BB35" xml:lang="en"><title>Exporting Keys</title><shortdesc>The keystore supports the export of keys in both plain-text and
+encrypted formats. The sections that follow detail the processes of exporting
+a public key and a private key.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38A656D3-F830-5E26-8167-3638B6BC5DF6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-38A656D3-F830-5E26-8167-3638B6BC5DF6"><title>How to restore a compound object</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The protocol for restoring a compound object is the <codeph>RestoreL()</codeph> function. This is true whether the object has been stored in-line or out-of-line, and should be prototyped as:</p> <codeblock id="GUID-AA727C46-3D5E-53D2-8697-721ED1F0D05C" xml:space="preserve">void RestoreL(CStreamStore&amp; aStore,TStreamId anId);</codeblock> <p>The function takes a reference to the store in which streams are stored and a stream ID. In some cases, the design of a class may be such that it maintains a pointer or reference to the store. In this event, the <codeph>CStreamStore</codeph> argument would be redundant.</p> <section><title>Restoring components stored in-line</title> <p>If an object's components have been stored in-line, then all of these components have been written to the same single stream.</p> <p>For the example class <codeph>CCompound</codeph>, defined as:</p> <codeblock id="GUID-1BB27256-2ADE-516E-8213-4B901A64BB30" xml:space="preserve">CCompound class : public CBase
+    {
+    ...
+    TInt         iDdata;
+    CComponentA* iCompA;
+    CComponentB* iCompB;
+    ...
+    }</codeblock> <p>RestoreL() is implemented as: </p> <codeblock id="GUID-AD51C522-3734-5827-938A-0595DD012A79" xml:space="preserve">void CCompound::RestoreL(CStreamStore&amp; aStore,TStreamId anId)
+    {
+    RStoreReadStream instream;
+    instream.OpenLC(aStore,anId);
+    InternalizeL(instream);
+    CleanupStack::PopAndDestroy();
+    }</codeblock> <p>where the stream ID passed to the function is the ID of the single stream containing the data.</p> </section> <section><title>Restoring components stored out-of-line</title> <p>If an object's components have been stored out-of-line, then all of these components have been written to separate streams.</p> <p>For the example class <codeph>CCompound</codeph>, defined as:</p> <codeblock id="GUID-345E2356-1AD3-5CF4-9847-7AE6C383448C" xml:space="preserve">CCompound class : public CBase
+    {
+    ...
+    TInt                  iDdata;
+    TSwizzle&lt;CComponentA&gt; iCompA;
+    TSwizzle&lt;CComponentB&gt; iCompB;
+    ...
+    }</codeblock> <p>RestoreL() is implemented as:</p> <codeblock id="GUID-81FEC5E3-EDDE-5596-BE12-420CC5D19F91" xml:space="preserve">void CCompound::RestoreL(CStreamStore&amp; aStore,TStreamId anId)
+    {
+    RStoreReadStream stream;      // Construct a read stream.
+    stream.OpenLC(aStore,anId);   // Open the head stream.
+    InternalizeL(stream);         // Internalise top level stream containing CCompound
+                                  // and the IDs of its components. 
+    RestoreComponentsL(aStore);   // Restore components.
+    CleanupStack::PopAndDestroy();
+    }
+</codeblock> <p>where the stream ID passed to the function is the ID of the head stream.</p> <p>InternalizeL() internalises CCompound's data members and the stream IDs of its components:</p> <codeblock id="GUID-36C860E3-9552-52C4-AD54-53B614DE7B8A" xml:space="preserve">void CCompound::InternalizeL(RReadStream&amp; aStream)
+    {
+    aStream &gt;&gt; iDataA;
+    aStream &gt;&gt; iCompA;  
+    aStream &gt;&gt; iCompB;
+    }</codeblock> <p><codeph>RestoreComponentsL()</codeph> constructs each component object and restores them from their respective stream networks. </p> <codeblock id="GUID-FD539747-82E8-5EF1-ADF0-E5101AE8EDA3" xml:space="preserve">void CCompound::RestoreComponentsL(CStreamStore&amp; aStore)
+    { 
+    CComponentA* ptrA = new (ELeave) CComponentA;
+    CleanupStack::PushL(ptrA);
+    ptrA-&gt;RestoreL(aStore,iCompA.AsId());
+    iCompA = ptrA;
+    CleanupStack::Pop();
+    CComponentB* ptrB = new (ELeave) CComponentB;
+    CleanupStack::PushL(ptrB);
+    ptrB-&gt;RestoreL(aStore,iCompB.AsId());
+    iCompB = ptrB CleanupStack::Pop();
+    }</codeblock> <p>In general, an application might want to defer the loading of some components. This would mean either changing the implementation of <codeph>RestoreComponents()</codeph> or adding new functionality to the class. The use of Swizzles is important here as they simplify the handling of the dual representation of an object as a pointer to an in-memory object or as an ID of a stream.</p> <p>Typically, an application might use code such as:</p> <codeblock id="GUID-E2D26E4E-02C0-5E89-8D82-0F628101011C" xml:space="preserve">if (iCompA.IsId())
+    {
+    iCompA = CComponentA::NewL(iStore,iCompA.AsId());
+    }</codeblock> <p>to test whether the component is currently represented by a stream ID or by a pointer to an in-memory object. If a stream ID, then the component would be restored. In this small code fragment, an overloaded <codeph>NewL()</codeph> function is used both to construct and to restore the component object. Once this code has executed, the component is represented by a pointer.</p> <p><b>See also</b> </p> <p><xref href="GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21.dita">Store map</xref> </p> <p><xref href="GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita">Swizzles and deferred loading</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38B11AE2-DB91-517F-BFE4-E72ACE96EDF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-38B11AE2-DB91-517F-BFE4-E72ACE96EDF5"><title>Store map as externalizer for Swizzles</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A store map is an externaliser for Swizzles.</p> <p>By constructing an <codeph>RStoreWriteStream</codeph> and specifying the store map as an externalizer, the stream ID associated with a Swizzle can be externalised by applying the templated stream <codeph>operator&lt;&lt;</codeph> to the Swizzle.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38BA60AA-074D-59CC-9B16-F7E5B10248FD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-38BA60AA-074D-59CC-9B16-F7E5B10248FD"><title>List of Constants and Enumerations</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>SIP error messages</title> <p>The following error values are available as a part of the SIP Client API: </p> <p> <xref href="GUID-5982384A-EAB9-32EC-A62D-4BAC0FDE5011.dita"><apiname>KErrSIPMalformedMessage</apiname></xref>, <xref href="GUID-CAE0A3D3-D229-3BFB-9BE0-6452904E707E.dita"><apiname>KErrSIPInvalidRegistrarResponse</apiname></xref>, <xref href="GUID-32BDA636-4217-323C-8A61-9CD48EB7EE0C.dita"><apiname>KErrSIPRequestPending</apiname></xref>, <xref href="GUID-54FDD36E-09D6-335E-A5F9-06EADF9455C2.dita"><apiname>KErrSIPInvalidTransactionState</apiname></xref>, <xref href="GUID-3818AC1F-2F76-32EA-87D3-5F56C514247D.dita"><apiname>KErrSIPInvalidDialogState</apiname></xref>, <xref href="GUID-0DADA4A7-E096-331F-875B-2CA9D76D2A32.dita"><apiname>KErrSIPInvalidDialogRequest</apiname></xref>, <xref href="GUID-6E6A0200-9414-3CF1-8AEA-1777F14B2C90.dita"><apiname>KErrSIPInvalidDialogResponse</apiname></xref>, <xref href="GUID-8B7052E5-927A-3AA2-95BC-844DF5CC9233.dita"><apiname>KErrSIPTransportFailure</apiname></xref>, <xref href="GUID-30463890-35DC-3C94-BFFF-4B7DE8A90BC4.dita"><apiname>KErrSIPNoAckReceived</apiname></xref>, <xref href="GUID-C333C1A7-5EAD-3F00-842C-E0A8442E1148.dita"><apiname>KErrSIPInvalidRegistrationState</apiname></xref>, <xref href="GUID-FEC8C29B-5379-3796-BA38-926DB6BEF833.dita"><apiname>KErrSIPInvalidContact</apiname></xref>, <xref href="GUID-10016E17-3DCD-32A8-B107-88E066314951.dita"><apiname>KErrSIPResourceNotAvailable</apiname></xref>, <xref href="GUID-4A37173B-7789-3AE5-AD0B-1669A15F4F3F.dita"><apiname>KErrSIPResolvingFailure</apiname></xref>, <xref href="GUID-FF8BB656-99F5-369E-A6CE-56684D329AD5.dita"><apiname>KErrSIPForbidden</apiname></xref>, <xref href="GUID-F3DAA1C7-CA6E-370A-9F63-4DE275CC195D.dita"><apiname>KErrSIPMaxCompartmentsInUse</apiname></xref>, <xref href="GUID-D711A918-6BCE-3A6A-988C-1B1917CD19A6.dita"><apiname>KErrSIPTerminatedWithResponse</apiname></xref>, <xref href="GUID-7371C3C4-582E-3DF9-B5A5-9CAC71B61EC6.dita"><apiname>KErrSIPOutboundProxyNotResponding</apiname></xref>, <xref href="GUID-25412911-2C2B-3AD1-9F08-2ED394806F9B.dita"><apiname>KErrSIPInvalidURIType</apiname></xref>, <xref href="GUID-5B9D3E31-D741-3EEA-9EF1-36A9CD390311.dita"><apiname>KCRUidSIP</apiname></xref>. </p> </section> <section><title>SIP Central Repository entries</title> <p>The following are the SIP Central Repository (CenRep) entries: </p> <p> <xref href="GUID-CEEAA209-B0D2-30BC-9212-3C3BA4686E3C.dita"><apiname>KSIPTransactionTimerT1</apiname></xref>, <xref href="GUID-F571A15B-E376-3E1C-AA88-1C3EBE2D3270.dita"><apiname>KSIPTransactionTimerT2</apiname></xref>, <xref href="GUID-5D4EB369-A9CE-3CA4-B78E-F91C0A877E55.dita"><apiname>KSIPTransactionTimerT4</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38BE7105-309E-5372-98EE-BCA0ADD0ACBA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-38BE7105-309E-5372-98EE-BCA0ADD0ACBA"><title>Hybrid Applications</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>P.I.P.S. applications can be written either as pure C or as hybrid applications which mix native Symbian C++ and Standard C. In addition to the core P.I.P.S. libraries, an application can also use P.I.P.S. extensions or third-party C shared libraries. Hybrid applications can also link against native Symbian platform libraries. </p> <p>The use cases for hybrid applications are as follows: </p> <ul><li id="GUID-2FDE4170-7A71-5047-BC65-5089DB717746"><p>Native Symbian <codeph>EXE</codeph> using both Standard C and native Symbian platform C++ APIs </p> </li> <li id="GUID-8D102C96-50B5-51B1-884B-76F9646D7BBF"><p> <codeph>STDEXE</codeph> using both Standard C and native Symbian platform C++ APIs </p> </li> <li id="GUID-240056C6-0296-5C1C-BCB1-281E28F30841"><p>Native Symbian <codeph>EXE</codeph> depending on an <codeph>STDDLL</codeph> which uses Standard C APIs </p> </li> <li id="GUID-8CB831F1-FDB3-5B60-9652-3C2552B1D07C"><p> <codeph>STDEXE</codeph> using a native Symbian <codeph>DLL</codeph> which uses native Symbian platform C++ APIs </p> </li> <li id="GUID-CDA31C5D-0FB0-532D-801F-0E365DD92E6D"><p> <codeph>STDDLL</codeph> using both Standard C and native Symbian platform C++ APIs </p> </li> <li id="GUID-5BB61F60-82AE-580C-82CB-AAADF30B3E75"><p>Native Symbian <codeph>DLL</codeph> using both Standard C and native Symbian platform C++ APIs </p> </li> </ul> <section><title>Threads and hybrid applications</title> <p>The <codeph>pthread</codeph> and <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> APIs do not mix. Symbian platform heaps are managed thread-wise whereas P.I.P.S. heaps are managed process-wise. Mixing <codeph>pthread</codeph> and <codeph>RThread</codeph> <i>may</i> result in panics due to data being lost or orphaned. So, do not mix the two unless you know what you're doing. </p> <p>User libraries or executables written using P.I.P.S. must not allocate resources in the context of the calling thread as the thread might be using a private heap which is inaccessible to other threads and might have a different lifetime. </p> <p>To minimise the risks avoid using <codeph>RThread</codeph> APIs in primarily POSIX applications or libraries (those entering via <codeph>main()</codeph>), and avoid using <codeph>pthread</codeph> in primarily Symbian platform applications or libraries (those entering via <codeph>E32Main()</codeph>). </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38C37BA5-B972-5C8B-B8DE-B2FECF2A3C3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-38C37BA5-B972-5C8B-B8DE-B2FECF2A3C3C"><title>Single Phase Constructor</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Single phase constructor is to push a pointer to the clean-up stack, and then complete its construction. It uses the macro <xref href="GUID-8BB41BAD-5ED4-32E5-B4B4-312E472297CB.dita"><apiname>CONSTRUCTORS_MAY_LEAVE</apiname></xref> that is necessary to ensure whether the cleanup is correctly handled in the event that a constructor may leave beneath a call to new(ELeave). </p> <example><title>Characteristics of single phase constructor</title> <p>The following are the major characteristics of single phase constructor: </p> <ul><li id="GUID-2682874E-E2C1-5985-A1E5-0C802889575B"><p>The implementation of NewL becomes much simpler </p> </li> <li id="GUID-CDFDB865-4BCA-59E5-9E20-60591E04027B"><p>By using RAII classes in fields to manage owned resources, constructor exception-safety can be maintained </p> </li> <li id="GUID-765D89CC-8B72-5A11-8392-82861D056A30"><p>Cleanup stack technology </p> </li> </ul> </example> <section><title>Example</title> <p>The following code snippet implies the usage of single phase constructor using <xref href="GUID-8BB41BAD-5ED4-32E5-B4B4-312E472297CB.dita"><apiname>CONSTRUCTORS_MAY_LEAVE</apiname></xref> macro. </p> <codeblock id="GUID-7A76F800-7980-58A0-9DCA-95502E8D4F3E" xml:space="preserve">
+        class CManagedUserSinglePhase : public CBase
+            {
+            public:
+            CONSTRUCTORS_MAY_LEAVE
+            static CManagedUserSinglePhase* NewL(CTicker* aTicker)
+                {
+                    return new(ELeave) CManagedUserSinglePhase(aTicker);
+                }
+            }
+</codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita">EUser High Level Library Overview</xref>  </p> <p><xref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita">EUser High Level Library Tutorials</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-38CF8A8E-4778-5374-8AC6-5F9486A2B7FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-38CF8A8E-4778-5374-8AC6-5F9486A2B7FB" xml:lang="en"><title>The polymorphic
+interface DLL</title><shortdesc>A polymorphic interface DLL is one which is written to implement
+a programming interface defined elsewhere; for example, a device driver, an
+application or an OPL extension.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The API is defined in terms of a single abstract class whose functions
+are declared as pure virtual. The DLL <i>implements</i> the API by defining
+and implementing a concrete class derived from that abstract class. The DLL
+exports a single function whose sole purpose is to create an object of the
+derived class type; this is always the function at ordinal 1 within the DLL.
+All other functions in the DLL are called through the virtual table mechanism
+(the pointer to the vtable is set up by the constructor in the normal C++
+way).</p>
+<p>At compilation time, application code includes the header file(s) which
+define(s) the API. At link time, the application includes the DLL's module
+definition file, which allows the address of the DLL function to be accessed
+by specifying its ordinal.</p>
+<p>When the application's executable runs, it loads the DLL at the time it
+is required. The address of the single function exported by the DLL is accessed
+indirectly by specifying its ordinal.</p>
+<p>For a given interface, there may be many DLLs which obey the protocol imposed
+by that interface each of which provides a different implementation.</p>
+<p>A DLL of this type is often referred to as a dynamically loaded DLL.</p>
+<p>The user of a dynamically loaded DLL uses an <codeph>RLibrary</codeph> type
+object to load the DLL. The <codeph>RLibrary</codeph> object encapsulates
+a handle to the DLL and must remain in existence while the DLL is in use;
+typically this is for the life of the object provided by the DLL.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e188918_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39186342-960A-46A4-BC35-851F53665FA8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-39186342-960A-46A4-BC35-851F53665FA8" xml:lang="en"><title>Writing
+the Version 3 Registration Resource File</title><shortdesc>The version 3 registration resource file is an evolution of the
+version 2 . This version is evolved to accommodate extended interfaces. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-10-1-1-8-1-4-1-5-1-4-1-5-1-6-1-3-1">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-8-1-4-1-5-1-4-1-5-1-6-1-3-1-1"><cmd>Set Info_format
+to the type of info record that is, <codeph>IMPLEMENTATION_INFO</codeph> or <codeph>BINARY_IMPLEMENTATION_INFO</codeph>.
+ </cmd>
+</step>
+<step id="GUID-BCDAAECA-1C25-4D09-A495-97949B5EF2C8"><cmd><codeph>default_data</codeph>:
+The data identifier field used by the resolver to determine if the implementation
+matches a client request.</cmd>
+<info><p>In <codeph>IMPLEMENTATION_INFO</codeph> structure, the data type
+is changed to accommodate maximum 2 strings with 255 bytes each. </p><p>In <codeph>BINARY_IMPLEMENTATION_INFO</codeph>,
+the data type is changed to accommodate a maximum 512 bytes.  </p></info>
+</step>
+<step id="GUID-7892DD48-0E0A-4209-B463-5DDA71F8021D"><cmd><codeph>opaque_data</codeph>:
+A binary data field that can contain additional data. This additional data
+can be used by the custom resolvers.  </cmd>
+<info><p>In <codeph>IMPLEMENTATION_INFO</codeph> structure, the data type
+is changed to accommodate maximum 2 strings with 255 bytes each. </p><p>In <codeph>BINARY_IMPLEMENTATION_INFO</codeph> structure,
+the data type is changed to accommodate a maximum 512 bytes.  </p></info>
+</step>
+<step id="GUID-3A4E66EE-31A6-4717-A6A6-14C4881E962C"><cmd><codeph>extended_interfaces</codeph> a
+maximum 8 UID's extended interfaces for both <codeph>IMPLEMENTATION_INFO</codeph> structure
+and <codeph>BINARY_IMPLEMENTATION_INFO</codeph> structure.  </cmd>
+</step>
+<step id="GUID-76A1CE8A-169C-43A2-9231-B310FDF8EEC2"><cmd><codeph>FLAG_ROM_ONLY</codeph> changed
+from bool data type to bit flag.  </cmd>
+<info><p><codeph>rom_only</codeph> set to 1 indicates the ROM-only implementation
+must be used.  </p><p><codeph>rom_only</codeph> set to 0 indicates the ROM-only
+implementation can be overidden.</p></info>
+</step>
+<step id="GUID-AF2EFD83-7116-472A-A1AE-4043236EA238"><cmd>In <codeph>REGISTRY_INFO</codeph> structure,
+the resource_format_version must be <codeph>RESOURCE_FORMAT_VERSION_3</codeph> .
+ </cmd>
+</step>
+<step id="GUID-668E4137-3339-4C40-8721-9F9109C936A1"><cmd>In I<codeph>NTERFACE_INFOstructure</codeph>,
+the <codeph>interface_uid</codeph> is renamed to <codeph>instantiation_interface_uid</codeph>. </cmd>
+</step>
+<step id="GUID-C4B7C81E-0472-4401-8CA2-EC46D5E48EC5"><cmd>In <codeph>REGISTRY_INFO</codeph> structure,
+the <codeph>resource_format_version</codeph> must be <codeph>RESOURCE_FORMAT_VERSION_3</codeph>.
+ </cmd>
+</step>
+</steps>
+<example><codeblock xml:space="preserve">#define IMPLEMENTATION_INFO_RECORD_TYPE1 1
+STRUCT IMPLEMENTATION_INFO
+	{
+	BYTE		info_format;		// = IMPLEMENTATION_INFO_RECORD_TYPE1
+	LONG   		implementation_uid;
+	BYTE   		version_no;
+	LTEXT  		display_name;
+	LEN BYTE LTEXT8  default_data[];		// maximum 2 strings with 255 bytes each	
+	LEN BYTE LTEXT8  opaque_data[];		// maximum 2 strings with 255 bytes each
+	LONG   		extended_interfaces[]; 	// maximum 8 extended interfaces 
+	BYTE		flags;			
+	}
+
+#define IMPLEMENTATION_INFO_RECORD_TYPE2 2
+STRUCT BINARY_IMPLEMENTATION_INFO
+	{
+	BYTE	  info_format;		        // = IMPLEMENTATION_INFO_RECORD_TYPE2
+	LONG	  implementation_uid;
+	BYTE	  version_no;
+	LTEXT	  display_name;
+	BYTE      default_data[];			// maximum 512 bytes
+	BYTE 	  opaque_data[];			// maximum 512 bytes
+	LONG	  extended_interfaces[];		// maximum 8 extended interfaces 
+	BYTE	  flags;			
+	}
+
+STRUCT INTERFACE_INFO
+	{
+	LONG	instantiation_interface_uid;
+	STRUCT	implementations[];		// maximum 8 implementations for each interface
+	}
+
+STRUCT REGISTRY_INFO
+	{
+	LONG	resource_format_version;    	// Use RESOURCE_FORMAT_VERSION_3
+	LONG	dll_uid;
+	STRUCT	interfaces[];			// maximum 4 interfaces
+	} </codeblock></example>
+<postreq><p><ul>
+<li><p>Maximum of four<codeph>INTERFACE_INFO</codeph> structures can be defined
+in one resource file.  </p></li>
+<li><p>Maximum of eight <codeph>IMPLEMENTATION_INFO</codeph> or <codeph>BINARY_IMPLEMENTATION_INFO</codeph> structures
+in each <codeph>INTERFACE_INFO</codeph> . Totally eight structures can be
+defined.  </p></li>
+<li><p>Maximum eight extended interfaces in each<codeph> IMPLEMENTATION_INFO</codeph> record. </p></li>
+<li><p>In a <codeph>IMPLEMENTATION_INFO</codeph> record a maximum of two strings
+with 255 bytes each can be used for <codeph>default_data</codeph> or<codeph>opaque_data</codeph> definitions. </p></li>
+<li><p>In a <codeph>BINARY_IMPLEMENTATION_INFO</codeph> record, a maximum
+of 512 bytes each for <codeph>default_data</codeph> or <codeph>opaque_data</codeph> definitions.
+ </p></li>
+</ul></p></postreq>
+</taskbody><related-links>
+<link href="GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita"><linktext>Writing a
+Standard Registration Resource File</linktext></link>
+<link href="GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69.dita"><linktext>Writing the
+Version 2 Registration Resource File</linktext></link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e355968_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-397239F9-7EE8-52CF-9B37-328AE307BAA0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-397239F9-7EE8-52CF-9B37-328AE307BAA0" xml:lang="en"><title>How
+to Open a Port with the IrDA Protocol Module: Tutorial</title><shortdesc>This tutorial shows how to load the Infrared Serial Protocol Module
+and open a serial port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-14CACE10-E139-5015-9382-AD0908E871C5">
+<step id="GUID-BAEFC4D9-74C3-585D-9E88-95A6EB247FE1"><cmd>Call <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita#GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306/GUID-A202EC6D-2B5A-3BEA-BD29-E9E81FFC8803"><apiname>RCommServ::Connect()</apiname></xref> to
+create a session with the Serial communications Server. </cmd>
+</step>
+<step id="GUID-E70B4B44-E823-5314-B4BB-3A82ED2321B4"><cmd/>
+<info>Call <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita#GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306/GUID-F851835B-4585-3C3A-B257-ADAE04CD95AA"><apiname>RCommServ::LoadCommModule()</apiname></xref> with the <codeph>aFileName</codeph> parameter
+set to <codeph>ircomm</codeph>. </info>
+<info> <filepath>ircomm.csy</filepath> is the name of the DLL file for the
+Serial Protocol Module. The extension <filepath>.csy</filepath> is optional
+for the <codeph>LoadCommModule()</codeph> API. </info>
+</step>
+<step id="GUID-B2A9CD4A-7691-5318-A0BA-E3BDEA100BA3"><cmd/>
+<info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-F2CBC6B8-0BE8-3361-8BDA-774BFB245BE6"><apiname>RComm::Open()</apiname></xref> with the <codeph>aName</codeph> parameter
+set to <codeph>IrComm::0</codeph>. <p>It is not recommended to change the
+default settings for the Infrared serial ports.</p></info>
+</step>
+</steps>
+<example><title>Example</title> <codeblock id="GUID-056287A1-CE68-5868-A939-FDAA1DDAEEC7" xml:space="preserve">RCommServ server; 
+server.Connect ();
+server.LoadCommModule (_L ("IRCOMM"));
+RComm commPort;
+commPort.Open (server, _L ("IrCOMM::0"), ECommExclusive); </codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-D8E59924-4E17-56AE-8F6B-07749A2FF0B8.dita"><linktext>IrDA Serial</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3978E21E-9B7A-4BEA-9B0A-10C247F6451B_d0e58793_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3987D040-27F7-5226-96AC-D578ECA4C0A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3987D040-27F7-5226-96AC-D578ECA4C0A2"><title>Callback Interfaces</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The API uses two types of callback interfaces: change notifications, and progress/completion notifications. </p> <section><title>Change notifications</title> <p>The <xref href="GUID-353A4B43-8C06-3181-B2CD-1DC646D0E726.dita"><apiname>MCalChangeCallBack</apiname></xref> interface is implemented to monitor changes to calendar entries, such as the addition, deletion, and update of entries. </p> <p>Call <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita#GUID-609318A7-43F1-3FC1-952B-146B1EA8115D/GUID-6E8C296A-BFBC-34C9-B448-C706393B05C5"><apiname>CCalSession::StartChangeNotification()</apiname></xref> to request change notifications. The following requests notifications of all changes for entries between 1 Jan 2005 and 1 Jan 2006. </p> <codeblock id="GUID-72CA6019-C6A2-5EE1-802C-C660B8399CFA" xml:space="preserve">// set up notification of all changes on all entries in 2005 
+TTime startTime(TDateTime(2005, EJanuary, 0, 0, 0, 0, 0)); // start time
+TTime endTime(startTime + TTimeIntervalYears(1)); // end time 
+// assume this object implements MCalChangeCallBack
+session-&gt;StartChangeNotification(this, EChangeEntryAll, ETrue, startTime, endTime);</codeblock> <p>The observer's implementation of <xref href="GUID-353A4B43-8C06-3181-B2CD-1DC646D0E726.dita#GUID-353A4B43-8C06-3181-B2CD-1DC646D0E726/GUID-593A1DB8-C056-3BC4-A66A-F2433CF1371F"><apiname>MCalChangeCallBack::CalChangeNotification()</apiname></xref> is called whenever a change to the calendar entries occurs that matches the specified criteria. </p> <p>You can disable a change notification by using <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita#GUID-609318A7-43F1-3FC1-952B-146B1EA8115D/GUID-1F42C4AD-FC62-3FAC-A9B3-F1B1BFF482D3"><apiname>CCalSession::StopChangeNotification()</apiname></xref>. </p> </section> <section><title>Progress and completion notifications</title> <p>The <xref href="GUID-1A1D94E6-AD7C-3202-B1BD-A1583FA34A5F.dita"><apiname>MCalProgressCallBack</apiname></xref> interface is used for monitoring the progress and completion of asynchronous tasks, such as the addition, deletion or updating of a calendar entry carried out on the entry view or instance view. <xref href="GUID-1A1D94E6-AD7C-3202-B1BD-A1583FA34A5F.dita#GUID-1A1D94E6-AD7C-3202-B1BD-A1583FA34A5F/GUID-A717C7C7-45BE-3E7F-B054-621751C95787"><apiname>MCalProgressCallBack::Progress()</apiname></xref> reports the percentage completion of the current task. <xref href="GUID-1A1D94E6-AD7C-3202-B1BD-A1583FA34A5F.dita#GUID-1A1D94E6-AD7C-3202-B1BD-A1583FA34A5F/GUID-CDF9D6D4-BE72-3FF3-8E65-2C3D5B5B6230"><apiname>MCalProgressCallBack::Completed()</apiname></xref> is called when the current task is completed. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5" xml:lang="en"><title>SMTP MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides concepts and functions related to SMTP MTM. The client applications can use the APIs that are provided by this MTM to send email messages. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39897348-B27A-5C02-B65C-C26D122BCAE4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-39897348-B27A-5C02-B65C-C26D122BCAE4"><title>Tables</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Two classes and a template class are used to manipulate tables in the database.</p> <p>The <codeph>RDbTable</codeph> class is used to manipulate a named table in the database, providing access to the data as a rowset. A named index can be used to order the rowset, and to provide fast key-based row retrieval from the table.</p> <p>The <codeph>TDbSeekKey</codeph> class is used to pass a key value to <codeph>RDbTable::SeekL()</codeph>, for lookup in the currently active index on that rowset. It can store a key value of any type. </p> <p><codeph>TDbSeekKey</codeph> can only hold a single-column key. Use the <codeph>TDbSeekMultiKey&lt;TInt S&gt;</codeph> templated class to allow multi-column indexes to be searched using multi-column key values. The template parameter <codeph>S</codeph> specifies the maximum number of column values that can be added to the key value.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39958349-2761-5532-A87F-EABB9EB68D10.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-39958349-2761-5532-A87F-EABB9EB68D10" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-399AE85E-9A5F-5748-864E-51C3F417D45B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-399AE85E-9A5F-5748-864E-51C3F417D45B"><title>What are Serial Port Capability Blocks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The serial port capabilities block specifies the capabilities of a serial port. This indicates the possible configuration settings for a port. A client can get the capabilities block for a serial port before configuring it, to ensure that the desired configuration is possible. </p> <p>The serial port capabilities block interface is provided by <xref href="GUID-BDBB61A7-18BC-3C85-A258-77D8B16621AD.dita"><apiname>TCommCapsV01</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-399EAC59-643D-5DED-AB67-9F021CA5687A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-399EAC59-643D-5DED-AB67-9F021CA5687A" xml:lang="en"><title>SIP Profile API</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e279593_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39A995DC-F047-4B41-A60D-27063CE329BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-39A995DC-F047-4B41-A60D-27063CE329BE" xml:lang="en"><title>Planning
+system and software security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Devices based on the Symbian platform are capable of joining both public
+and private networks and often have the functionality of a normal desktop
+computer. However, the average user does not perceive the device as a computer,
+but rather as a regular phone that is safe from security threats. This creates
+an opportunity for hostile attackers to infiltrate the device and wreak severe
+direct or indirect damage (for example, by penetrating into the corporate
+intranet).</p>
+<p>It is, however, possible to anticipate these kinds of threats, and protect
+applications by using the security features offered by the Symbian platform,
+and by expanding <i>security policies</i> to cover mobile devices and services.</p>
+<p>To develop system or software security, repeat the following steps:</p>
+<ol>
+<li id="GUID-98856624-2B55-44FC-9DD9-69850C2B22D9"><p>Define and
+evaluate all critical assets (resources, information).</p></li>
+<li id="GUID-4FE98A61-A0B8-4249-936E-DF319804AA2D"><p>Identify all
+possible threats, vulnerabilities, and potential attacks, and estimate the
+extent of possible damage.</p><p>Areas to examine in the Symbian platform
+are system resources, removable media, and communication between components.</p>
+</li>
+<li id="GUID-43B87274-297C-4AA8-B2A1-872E2BA83F30"><p>Prioritize
+high-risk vulnerabilities, and select and implement corresponding security
+features. If risks are sufficiently low, protective measures may be unnecessary.</p>
+</li>
+<li id="GUID-3D7F3A95-635E-4D9C-9883-BBD36263401D"><p>Repeat these
+steps until the necessary level of protection is achieved.</p></li>
+</ol>
+<p/>
+<fig id="GUID-A41ADA16-6D0B-4EA4-BBF2-67C2CFED68F3"><title>Security development process</title><image href="GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e6515_href.png"/></fig>
+<p>The security development process is guided by <i>cost</i>, <i>efficiency,</i> and <i>usability</i>.
+If security is too tight, this may be expensive and affect both performance
+and the user's experience of the system or software. On the other hand, if
+security is too slack, this may result in severe damage and, in the long run,
+be even more costly.</p>
+<section id="GUID-39A995DC-F047-4B41-A60D-27063CE329BF"><title>Security methods</title>
+<p>The list below contains the most common and important security methods
+used in the mobile world:</p>
+<ul>
+<li><p><i>Ciphering</i> enables confidentiality. Information is
+accessible only by authorized parties. With ciphering it is also possible
+to maintain integrity.</p></li>
+<li><p><i>Hash</i> function (<i>checksum</i>) can be used to verify
+integrity and detect information tampering.</p></li>
+<li><p><i>Signing</i> allows attaching of information to a certain
+source.</p></li>
+<li><p><i>Authentication</i> ensures that the object is what it
+claims to be.</p></li>
+<li><p><i>Access control</i> restricts unauthorized access to resources.</p>
+</li>
+<li><p><i>Authorization</i> is permission to perform tasks on behalf
+of somebody else.</p></li>
+<li><p><i>Certification</i> is provided usually by a third party
+to prove information validity.</p></li>
+<li><p><i>Recovery mechanisms</i> are usually implemented as redundancy
+(duplication of information or routes).</p></li>
+<li><p>In communication it is possible to use, for example, <i>error
+correction</i> to repair transmission failures, <i>random traffic generation</i> to
+keep the line occupied, and <i>packet uniforming</i> to blend important packets
+into traffic.</p></li>
+</ul>
+<p>Some of the methods above are interconnected (for example, certification
+requires that the information is signed) and not all of them are of equal
+importance, since some basic methods form a base for more complicated methods.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e219728_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39B459CD-8210-59B5-95F4-85CE36676735.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-39B459CD-8210-59B5-95F4-85CE36676735" xml:lang="en"><title>Unified Stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Unified Store APIs form the single point of access for applications that require access to certificates, keys and certificate applications in the device.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-39B5850D-EAAD-56BC-B75A-2104033814E6" xml:lang="en"><title>Audio
+Component Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document provides an overview of the Audio Component Framework (ACF)
+API. </p>
+<section><title>Purpose</title> <p>In the Advanced Audio Adaptation Framework
+(A3F) architecture, the client defines the required audio functionality by
+grouping several audio processing units together. Audio processing units are
+logical entities, not directly related to any specific audio hardware, that
+represent basic audio functions. Examples of audio processing units include: </p> <ul>
+<li id="GUID-847A0149-C870-58CD-8E13-E5072E12A3E4"><p>Source - a source of
+multimedia data. </p> </li>
+<li id="GUID-E22F1EEC-4E5F-51BD-89FC-D066485CA144"><p>CODEC - an encoder or
+decoder of multimedia data. </p> </li>
+<li id="GUID-782A83BA-A95A-55B7-955C-9F0440698D67"><p>Sink - a consumer of
+multimedia data. </p> </li>
+</ul> <p>ACF provides a collective notion for the audio processing units being
+grouped together so that they can be considered as a single entity. Audio
+processing units are grouped into audio streams. An audio stream consists
+of at least a source, a codec and a sink. The audio stream allows control
+of the audio processing units connected to the stream, for example, starting
+or pausing, and also provides information about the state of the audio processing
+units connected to it, for example, uninitialized or active. </p> <p>Furthermore,
+one or more audio streams can be grouped into a logical unit called a context.
+The following diagram shows a context which contains two audio streams: </p> <fig id="GUID-3E0CDA7E-7B25-5407-9276-8397C4FFEAFE">
+<title>              Audio streams in a context            </title>
+<image href="GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e305304_href.png" placement="inline"/>
+</fig> <p>Using a context means that, for the purposes of pre-emption, all
+audio streams in the context can be controlled as a single unit. For example,
+if an audio stream needs to be stopped because it uses a resource that is
+required by another higher priority audio stream, then all the other audio
+streams in the context can be stopped at the same time. </p></section>
+<section><title>Audio Component Framework API Library Details</title><p>The
+DLL that provides the functionality and the library to which your code must
+link is identified below. </p><table id="GUID-254DCB0A-F62E-558C-97D2-1A9141AA4AB6">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>DLL</entry>
+<entry>LIB</entry>
+<entry>Short Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath> audiocontextfactory.dll</filepath>  </p> </entry>
+<entry><p> <filepath> audiocontextfactory.lib</filepath>  </p> </entry>
+<entry><p>These files are used for implementing the ACF API. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section><title>Architectural Relationship</title> <p>This API is part of
+the Advanced Audio Adaptation Framework (A3F). A3F provides a new standardised
+implementation of DevSound which is configured by default from Symbian OS
+v9.5 onwards. A3F interacts with a specially customised DevSound (configured
+as optional) through the <xref href="GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB.dita">Audio
+Component Library (ACL) API</xref> and the ACF API. </p> </section>
+<section><title>Description</title> <p>ACF is responsible for delivering transactional
+behaviour. This means ensuring that when a change is applied to one audio
+processing unit in a context, the same change is applied to all the audio
+processing units in the context and if any fail then no change is made. </p> <p>In
+order to apply changes to the audio processing units in a context, the client
+must call the asynchronous <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>Commit()</apiname></xref> method.
+On success, event callbacks are sent to the client to state that the <codeph>Commit()</codeph> was
+properly received and processed. If the <codeph>Commit()</codeph> fails, then
+the implementation is "rolled-back". Alternatively, the client may receive
+an event callback stating that audio resources were lost due to pre-emption
+by a higher priority audio client. </p> </section>
+<section><title>Key Audio Component Framework API Classes</title> <p>ACF comprises
+the following key classes: </p> <ul>
+<li id="GUID-4A037A0A-A46D-518F-99B3-AE3D92BCC871"><p> <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioSource</apiname></xref> -
+generic interface for different types of audio sources. </p> </li>
+<li id="GUID-8C469302-B029-52BB-A1F0-F1E1923DBE47"><p> <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioCodec</apiname></xref> -
+the generic abstract interface for codecs. </p> </li>
+<li id="GUID-2D73E73F-F3F4-5E5E-9A0D-ACEDD7B2572A"><p> <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname> MAudioSink</apiname></xref> -
+generic interface for different types of audio sinks. </p> </li>
+<li id="GUID-40072A7A-5964-5117-8664-866B03A31B90"><p> <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioStream</apiname></xref> -
+the main control interface for the state of an audio stream. </p> </li>
+<li id="GUID-253D92F4-5280-5A3A-8836-F4DA90394901"><p> <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioContext</apiname></xref> -
+the interface to an audio context. The client can use <codeph>MAudioContext</codeph> to
+manage the audio streams and audio processing units contained in a context. </p> </li>
+</ul> </section>
+<section><title>Using Audio Component Framework API</title> <p>ACF can be
+used to: </p> <ul>
+<li id="GUID-1A8CAC71-EB84-5DA6-8A0E-070207721372"><p>Apply changes made to
+the audio processing units in a context. </p> <p>Pending changes are applied
+using the asynchronous <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>Commit()</apiname></xref> call.
+When a <codeph>Commit()</codeph> has been completed, the client is informed
+by the appropriate <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>ContextEvent()</apiname></xref> callback
+of <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioContextObserver</apiname></xref>. </p> </li>
+</ul> </section>
+<section><title>See Also</title> <p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita">Audio
+Component Framework Tutorial</xref>  </p> <p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita">Audio
+Processing Tutorial</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39C9DD69-504A-529C-ABD3-A73DCAD3F8E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-39C9DD69-504A-529C-ABD3-A73DCAD3F8E9"><title>How to connect to the security manager</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To use the security manager, a client must:</p> <ol id="GUID-55BB4F8C-4F70-57B0-9A2B-C1E674C9E8A6"><li id="GUID-3CABDB0B-F343-5C34-9B6C-F9AAC9CB585C"><p>Create a session to the security manager, <xref href="GUID-B7CBABF9-93A1-3275-9CB0-CDF8A6606BB1.dita"><apiname>RBTMan</apiname></xref>, and open a connection.</p> </li> <li id="GUID-1A0A7EFB-40E0-577F-926E-22C4A8C38201"><p>Create a subsession to the security manager, <xref href="GUID-D536FA83-2535-3BF2-AC0D-EA0C7CA806BA.dita"><apiname>RBTSecuritySettings</apiname></xref>, and open it. A client can have multiple subsessions open if required. (Sessions and subsessions are part of Symbian OS's architecture for interprocess communication: see <xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server Overview</xref>).</p> </li> <li id="GUID-972EB63B-4DCB-5589-8755-5C1EFC5D4977"><p>Close subsessions and sessions when they are no longer needed.</p> </li> </ol> <p><b>Example</b> </p> <p>The following example shows how to connect to the security manager:</p> <codeblock id="GUID-5BC3C01F-C320-5853-8F24-5126145B778C" xml:space="preserve">
+// 1. Create and open session to the security manager
+RBTMan secMan;
+User::LeaveIfError(secMan.Connect());
+
+// 2. Create and open a subsession
+RBTSecuritySettings secmanSubSession;
+User::LeaveIfError(secmanSubSession.Open(secMan));
+
+...
+// 3. Cleanup
+secmanSubSession.Close();
+secMan.Close();
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-39FA0ECE-D403-5F02-AC5D-7BC8E1669E8E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-39FA0ECE-D403-5F02-AC5D-7BC8E1669E8E" xml:lang="en"><title>C Standard
+Library Concepts</title><shortdesc>This section explains the concepts and functionality of C Standard
+Library such as the CRT0 library, threads, Unicode support and so on. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3A05CD69-0AB6-5549-B18A-842F49C06874"><title>prj_exports</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>prj_exports</codeph> </p> <p>  <varname>source_file_1</varname>  <varname>[destination_file]</varname>  </p> <p>  <varname>source_file_n</varname>  <varname>[destination_file]</varname>  </p> <p> :zip <varname>zip_file</varname>  <varname>[destination_path]</varname>  </p> <p>In the <codeph>prj_exports</codeph> section, list any files to be copied from the source directories to the releasables’ directories during the building of a component. It is intended mainly for specifying C++ header files to be copied to the directory <filepath>epoc32\include\</filepath>. </p> <p>Specify each file on a separate line. </p> <p>Note that:</p> <ul><li id="GUID-FDAE68CD-E6B0-5984-A833-78C23B9CD77F"><p>If a source file is listed with a relative path, the path will be considered relative to the directory containing the <filepath>bld.inf</filepath> file. </p> </li> <li id="GUID-2CEDC1BA-0BDB-5E09-9B72-366F73F211F6"><p>If a destination file is not specified, the source file will be copied to <filepath>epoc32\include\</filepath>. </p> </li> <li id="GUID-FFDD8517-5778-5CB4-B62B-8FC6ADCB8A72"><p>If a destination file is specified with the relative path, the path will be considered relative to directory <filepath>epoc32\include\</filepath>.</p> </li> <li id="GUID-44667861-4451-5DEB-A1DC-528ED3831692"><p>If a destination begins with a drive letter, then the file is copied to <filepath>epoc32\data\&lt;drive_letter&gt;\&lt;path&gt;</filepath>. For example,</p> <codeblock id="GUID-568BF797-3C9B-58CB-BF60-29E73A2C2F4C" xml:space="preserve">mydata.dat e:\appdata\mydata.dat</codeblock> <p>copies <filepath>mydata.dat</filepath> to <filepath>epoc32\data\e\appdata\mydata.dat</filepath>.</p> <p>You can use any driveletter between A and Z.</p> </li> <li id="GUID-C6CBC7CD-8B6C-585F-8BF0-39C88F2FE659"><p>A line can start with the preface :zip. This instructs the build tools to unzip the specified zip file to the specified destination path. If a destination path is not specified, the source file will be unzipped in the root directory.</p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3A14EB6E-2F28-51F6-9D80-1AFCFFBDDF9D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3A14EB6E-2F28-51F6-9D80-1AFCFFBDDF9D" xml:lang="en"><title>Tutorials</title><shortdesc>This section describes how to use TCP/IP sockets.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3A42464E-CAA2-5A8C-B52F-2A6B1D095544.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3A42464E-CAA2-5A8C-B52F-2A6B1D095544" xml:lang="en"><title>Reference</title><shortdesc>This topic lists the references for the Domain Name Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3A4947BD-1BEB-521C-BEDF-738064E83FE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3A4947BD-1BEB-521C-BEDF-738064E83FE6" xml:lang="en"><title>Cancelling
+an asynchronous request</title><shortdesc>This document describes how to cancel an asynchronous request.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Most asynchronous service providers support a cancel function. This allows
+an outstanding request to be cancelled before it is complete. </p>
+<p>A single thread that is waiting for a single asynchronous request to complete
+cannot cancel that request because the thread is asleep until it completes.
+However, when multiple requests are outstanding, the handling of a request
+completion may involve cancelling some or all of the other outstanding requests.</p>
+<p>In all cases, the correct user protocol for cancellation is:</p>
+<codeblock id="GUID-849238B9-205F-56ED-8958-B28F7604108C" xml:space="preserve">    // only cancel if we know that there is
+    // an outstanding request
+if (requestIssued)
+    {
+        // Issue cancel to service provider
+    provider.cancel();
+
+        // Wait for it complete (it must complete)
+    User::WaitForRequest(requestStatus);
+
+        // Now note that request is no longer outstanding
+    requestIssued=EFalse;
+    }</codeblock>
+<section id="GUID-13C429B3-7FEF-4A2E-991C-767908F0AA5E"><title>Notes</title> <ul>
+<li id="GUID-A905DF5E-2AAA-59F8-B817-D10FBD947B9A"><p>A cancel should only
+be issued from the thread that issued the request.</p> </li>
+<li id="GUID-F4500BC1-6FDF-5D7D-8E62-641246AAE051"><p>It is convention that
+cancel functions provided by asynchronous service providers have <codeph>Cancel</codeph> somewhere
+in the name, but need not necessarily be called <codeph>Cancel()</codeph>.</p> </li>
+<li id="GUID-8383581F-B687-5BBE-8F7E-71EC4360A7E0"><p>An asynchronous service
+provider must make certain guarantees about cancellation:</p> <ul>
+<li id="GUID-0383D830-FB83-5707-9FE3-60360ACA9395"><p>it must complete quickly —
+otherwise, the <codeph>User::WaitForRequest()</codeph> above would take a
+long time to complete, and cause the program to become unresponsive</p> </li>
+<li id="GUID-0266E0CB-DC3B-597F-8662-B9AA4AAF35C3"><p>it must not violate
+the guarantee that each request produces precisely one signal</p> </li>
+</ul> </li>
+<li id="GUID-C7C67368-C52D-5830-98FC-DA0AD31917DC"><p>The service provider
+does not have to guarantee to cancel the actual request: it may already have
+completed — asynchronously, by definition — by the time the client
+thread issues the cancel.</p> </li>
+<li id="GUID-2290B823-B990-5A35-87DB-4BEC312C440E"><p>Although the cancel
+must return quickly, the service initiated by the request may not have completed.
+For instance, if data were requested from a network drive, it may not be returned
+until after the cancel. Because of the cancel, the service provider must discard
+such data.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e42859_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A" xml:lang="en"><title>Calendar
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Calendar component provides access to calendar stores, with functionality
+to fetch, update, save and delete calendar entries. </p>
+<section id="GUID-E6396A88-AAA2-489F-AFDF-5E07229C1690"><title>Purpose and scope </title> <p>Calendar provides access to
+calendar stores, with functionality to fetch, update, save and delete calendar
+entries. This functionality is as the standard RFC 2445, which defines a common
+format for openly exchanging calendar and scheduling information across the
+internet. New functionality includes: attachment support, defining geographic
+locations, logging, expanded search capabilities and support for removable
+media. </p> </section>
+<section id="GUID-9821DA75-4245-411B-AADF-AB7AB98E1D07"><title>Architectural relationship</title> <p>The Calendar component
+uses the Alarm server and TZ (time zone converter) components and merges CalInterimApi
+and AgnModel. </p> <p>Calendar is a single component that contains: Agenda
+Server, AgnModel and CalInterimAPI. CalInterimAPI contains classes that hold
+information about calendar entries. AgnModel is a DLL which is shared across
+the client and the server. Agenda Server provides calendar file management
+on behalf of all clients. </p> <p>Calendar's implementation of import and
+export behaviour is done using the AgnVersit2 plug-in. </p> <fig id="GUID-EFB35AEC-41B2-5DD4-B029-D4BDC8A682DF">
+<title>              Calendar dependencies            </title>
+<image href="GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e348208_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-1E37BF6E-B69F-49AB-BA6A-F60463FACC5A"><title>Description</title> <p>This document describes the following
+key areas: </p> <p id="GUID-BFCC991A-B456-5662-AFDE-5B86AAC6056F"><b>The Calendar Server</b> </p> <p>The
+Calendar Server manipulates calendar files and connects to the
+client when single or multiple sessions (<xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession</apiname></xref>) are
+instantiated. </p> <p id="GUID-69F4F826-D9BC-50D1-A6DA-8CB82891BEB8"><b>Calendar entries</b> </p> <p>A <xref href="GUID-9B428B4E-83B7-5EE3-8D63-E2B0602D1D91.dita">calendar entry</xref>, class <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry</apiname></xref>,
+can be an appointment, a to-do item, an event, a reminder, or an anniversary.
+It contains repeat definition and synchronisation information as well as group
+scheduling data. </p> <p id="GUID-21C9AB08-D5E0-5E2C-91CE-2C8218EF8514"><b>Calendar views</b> </p> <p>The
+API provides the following <xref href="GUID-CD8A3420-6C9B-5774-86FA-85CFE062C400.dita">views</xref> for
+accessing the calendar: </p> <p><b>Entry view </b> </p> <p> <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita"><apiname>CCalEntryView</apiname></xref> allows accessing
+and manipulating calendar entries. For example, you can add, delete update
+and search for a calendar entry, </p> <p><b>Instance view </b> </p> <p> <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita"><apiname>CCalInstanceView</apiname></xref> allows
+individual instance(s) that are generated from an entry to be accessed and
+deleted. </p> <p id="GUID-20ACA14A-954F-58FC-B422-E42B5B19B04E"><b>Calendar user</b> </p> <p> <xref href="GUID-FBFE40BE-BF1A-3A12-A3B6-D2BDB5B6406D.dita"><apiname>CCalUser</apiname></xref> represents
+a <xref href="GUID-62195532-3FD0-5A3B-90E6-D624C4A60594.dita">calendar user</xref>,
+such as a meeting participant. The class provides attributes and methods that
+are common to all the calendar users, including the user’s email address,
+sent-by and common name fields. </p> <p><b>Setting
+the Repeat Rule</b> </p> <p><xref href="GUID-131A9070-AF80-5BC5-91D2-0F1C7019ABF2.dita">Setting
+the repeat rule</xref> allows events to occur regularly at specified intervals. </p> <p><b>Setting the alarm</b> </p> <p>Within a calendar entry <xref href="GUID-211D3640-9862-3F78-98FC-9793578117A9.dita"><apiname>CCalAlarm</apiname></xref> allows
+you to <xref href="GUID-7BB38C3E-BEA9-545B-AEC2-5E9078D0B8A2.dita">set an alarm</xref> of
+a specific type. </p> <p><b>Categorising
+an entry</b> </p> <p><xref href="GUID-710FADA2-7A6C-5D60-BCE5-8772071F2BD4.dita">Categorisation</xref> of
+calendar entries can be done using built-in or user-defined types. </p> <p><b>Importing and Exporting Entries</b> </p> <p>This API enables calendar
+entries to be <xref href="GUID-0F1D1BC4-C8FB-55BE-83FE-DD604C4A9CA3.dita">exported
+and imported</xref> to and from a specific data format. </p> <p id="GUID-EDE3A38D-8B6B-56B6-B301-B6D64BF69181"><b>Callback interfaces</b> </p> <p>The
+API uses two types of <xref href="GUID-3987D040-27F7-5226-96AC-D578ECA4C0A2.dita">callback
+interfaces</xref>: change notifications, and progress/completion notifications.
+Change notifications monitor changes to calendar entries. Progress/completion
+notifications monitor the progress and completion of asynchronous tasks. </p> <p id="GUID-2FED42C3-251E-5713-8A75-AAC6393175EF"><b>Attachment support</b> </p> <p>Calendar
+provides the ability to associate an object with a calendar entry. An <xref href="GUID-32F8114A-B7EF-5B0B-BD9B-0D3C5F09D7E6.dita">attachment</xref> can be
+a URI reference, a file or binary data. </p> <p id="GUID-87AC8BD1-2F12-5A51-9498-9A5BBE5C306A"><b>Removable media support</b> </p> <p>Creates,
+modifies and deletes calendar files on <xref href="GUID-DA0F4990-DDC4-5B0A-A446-A3C8672DA95A.dita">removable
+media</xref>. </p> <p id="GUID-EB0BABDA-2949-5C5D-8F6E-83E9075A236C"><b>GEO property</b> </p> <p>The <xref href="GUID-01299529-4390-5C16-8459-1D9C1B6F3EF3.dita">GEO property</xref> represents
+the geographical location of a calendar entry. </p> <p id="GUID-2C4FA107-1C56-5C44-9B78-AF567ED936B1"><b>TRANSP property</b> </p> <p>The <xref href="GUID-6D29FF23-B034-5FE9-90C3-A62CD54D67D3.dita">TRANSP property</xref> indicates
+whether an entry 'blocks' a calendar busy view. </p> <p><b>iCalendar and vCalendar properties</b> </p> <p>Lists the <xref href="GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C.dita">properties</xref> in
+iCalendar and vCalendar that Calendar supports using the AgnVersit2 plug-in.
+Also details the import and export of time properties. </p> <p id="GUID-E680C30C-BD55-5F1B-9B68-DB07BCA79D05"><b>Expanded search capabilities</b> </p> <p>These
+offer the ability to <xref href="GUID-20DDA21D-B5DE-5D24-9E75-69C68EAF1782.dita">search</xref> all
+text fields, to search entries within a given time frame, and to return results
+in an iterator class. </p> <p id="GUID-4084C15D-CC3C-57F3-8605-10CF62CEDD27"><b>Adding a user-defined 32-bit
+field</b> </p> <p>Calendar entries now allows for creation of a <xref href="GUID-0A66A882-09C8-5BB6-89A2-87133BD63338.dita">user-defined
+32-bit field</xref>. The value of the field is defined by the vendor. Field
+creation, storage and access are carried out by APIs within the <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry</apiname></xref> class. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8" xml:lang="en"><title>Getting
+and Setting IP Addresses Tutorial</title><shortdesc>This topic describes how to get and set IP addresses. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<section><title>Introduction</title> <p>To establish a connection with the
+host, the IP addresses must be determined and set. The IP address can be local
+or remote. This tutorial describes the following: </p> <ul>
+<li id="GUID-7530B431-A110-5871-A1EF-44B58F6A5D32"><p> <xref href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita#GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8/GUID-88793F99-9D35-57B6-BA29-3668D48A2233">How to Get a Local IP Address</xref>  </p> </li>
+<li id="GUID-95D8FD14-584A-5B04-96A3-09CAB7D94AFE"><p> <xref href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita#GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8/GUID-B5AA66C6-DF44-5D48-933C-A546249A35A4">How to Get a Remote IP Address</xref>  </p> </li>
+<li id="GUID-924ACD14-1470-50D8-877A-1DDC95A3B7A7"><p> <xref href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita#GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8/GUID-D005BFE7-92E2-5AF9-9C87-22A5E1F0CA06">How to Set the Local IP Address</xref>  </p> </li>
+</ul> <p> <b>Note:</b> Usually IP address are automatically allocated to client
+applications when a dial-up connection is established. </p> </section>
+<section id="GUID-88793F99-9D35-57B6-BA29-3668D48A2233"><title>How to Get
+a Local IP Address</title> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-810B7445-7328-312D-B11B-49D03E71CD61"><apiname>RSocket::LocalName()</apiname></xref> function
+is used to get the local IP address and the port. </p> </section>
+<section id="GUID-B5AA66C6-DF44-5D48-933C-A546249A35A4"><title>How to Get
+a Remote IP Address</title> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-34569598-5813-3DA6-8F3A-4BC04BF20540"><apiname>RSocket::RemoteName()</apiname></xref> function
+is used to get the remote IP address and the port </p> <p> </p> </section>
+<section id="GUID-D005BFE7-92E2-5AF9-9C87-22A5E1F0CA06"><title>How to Set
+the Local IP Address</title> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-5550C9E4-2A1B-3F52-A6CF-F5822AB9DBC9"><apiname>RSocket::Bind()</apiname></xref> function
+is used to set the local IP address and the port. This call must be made by
+server applications before calling <codeph>RSocket::Listen()</codeph>.  To
+get and set the IP address, the &lt;code&gt;anAddr&lt;/code&gt; argument must be
+of the class . <codeph>TInetAddr</codeph>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AB05112-0580-5FD2-AD61-5721090062F8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-3AB05112-0580-5FD2-AD61-5721090062F8"><title>Playing a DTMF Tone </title><shortdesc>This tutorial describes about how to play a DTMF(Dual and Multi-Frequency) Tone. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context id="GUID-854FEBE3-1B14-58B6-9611-726B35221199"><p>You have to configure DevSound in order to play a DTMF tone. </p> <p>The following settings can be configured before or during DTMF tone play: </p> <ul><li id="GUID-CA520BAE-8D2C-529F-8B7C-86F54C9F9E5F"><p>To set the duration of tone on, tone off and tone pause to be used during the DTMF tone playback, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-4ABD974B-581A-3140-9B77-61DAA415F707"><apiname>CMMFDevSound::SetDTMFLengths()</apiname></xref> method. </p> <codeblock id="GUID-0A41F048-4C1F-5EED-993B-D60AAFCA4FAD" xml:space="preserve">IMPORT_C void SetDTMFLengths(TTimeIntervalMicroSeconds32 &amp;aToneOnLength,
+TTimeIntervalMicroSeconds32 &amp;aToneOffLength, TTimeIntervalMicroSeconds32
+&amp;aPauseLength);</codeblock> <p>This method has three parameters: </p> <ul><li id="GUID-F99B5C58-B8F0-529B-9034-F3F452DA4292"><p> <codeph>&amp;aToneOnLength</codeph> - the period over which the tone is to be played. </p> </li> <li id="GUID-541A2E02-9B7D-591D-A528-7E1061F01D0C"><p> <codeph>&amp;aToneOffLength</codeph> - the period over which no tone is to be played. </p> </li> <li id="GUID-FFED4A25-5CDE-5089-94B2-9C6616DF45CF"><p> <codeph>&amp;aPauseLength</codeph> - the period over which tone playing is to be paused. </p> </li> </ul> <p>The internal configuration set by <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-4ABD974B-581A-3140-9B77-61DAA415F707"><apiname>CMMFDevSound::SetDTMFLengths()</apiname></xref> lasts until it is recalled or for the lifetime of the current DevSound. </p> <p> <b>Note:</b> The <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-4ABD974B-581A-3140-9B77-61DAA415F707"><apiname>CMMFDevSound::SetDTMFLengths()</apiname></xref> function is only available during tone play. </p> </li> <li id="GUID-CA645A0A-8C12-5C23-A204-586F36512811"><p>To change the volume of the audio device to a specific value, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C93E8531-F569-3F6B-AE65-A36749FCE7DF"><apiname>CMMFDevSound::SetVolume()</apiname></xref> function. The volume can be set to any value from 0 to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1BFCB3CB-17C7-399B-9089-3ADFF43044BA"><apiname>CMMFDevSound::MaxVolume()</apiname></xref>. </p> <p>To define a period over which the volume rises from 0 to the normal volume level, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF47B65D-DEFA-3D11-B6AB-2DC876D25EF7"><apiname>CMMFDevSound::SetVolumeRamp()</apiname></xref> function. </p> <p> <b>Note:</b> The <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF47B65D-DEFA-3D11-B6AB-2DC876D25EF7"><apiname>CMMFDevSound::SetVolumeRamp()</apiname></xref> function is only available during tone play. </p> </li> <li id="GUID-050B5D58-E553-5AFB-A2E2-47D18A7348EF"><p>To set the speaker balance, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0D55BCC4-9882-3F49-B1AD-922B48264F79"><apiname>CMMFDevSound::SetPlayBalanceL()</apiname></xref> function. This function has two parameters: </p> <ul><li id="GUID-9BC592DA-3FA0-5E53-9A6B-FCE8E96BE571"><p> <codeph>aLeftPercentage</codeph> - the left speaker volume percentage. </p> </li> <li id="GUID-1665ED4B-A1F5-53A3-9E52-AD1563DE38B5"><p> <codeph>aRightPercentage</codeph> - the right speaker volume percentage. </p> </li> </ul> </li> <li id="GUID-15C166D6-6A38-5ED0-8577-2DA83495D78D"><p>To set the priority setting for this instance of DevSound to access the audio device, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1B3B1694-EED8-3B33-B424-C48DDAFBE75A"><apiname>CMMFDevSound::SetPrioritySettings()</apiname></xref> method. Priority settings are used by the Audio Policy component to resolve multiple requests to access the audio hardware. </p> </li> </ul> </context> <steps-unordered id="GUID-8A80C27C-595F-52F1-A63A-FF51BA577D73"><step id="GUID-D25C17DC-DFC2-52EA-98E7-DD624C9584C4"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-3E9E0095-DC9A-3ABF-90E9-1B2ED469BBC4"><apiname>CMMFDevSound::PlayDTMFStringL(const TDesC
+                &amp;)</apiname></xref> function to start playing a DTMF tone. </info> <info> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-BFB5A0E2-4B6F-3ABA-BC7E-BA125B24FC13"><apiname>CMMFDevSound::PlayDTMFStringL()</apiname></xref> has one parameter, <codeph>&amp;aDTMFString</codeph>, the DTMF sequence in a descriptor. </info> </step> <step id="GUID-B08CA1F1-6F7E-5306-9C3D-E3CB4CD15334"><cmd/><info>If <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-4ABD974B-581A-3140-9B77-61DAA415F707"><apiname>CMMFDevSound::SetDTMFLengths()</apiname></xref> is called during play, it takes effect when the next tone is generated. </info> </step> <step id="GUID-06B40730-06FA-5A08-9AF2-52B771FB6460"><cmd/><info>When an attempt to play DTMF tones has completed, successfully or otherwise, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-8AD3FCA2-84C3-3BFC-B0A9-CEAF132D0BF5"><apiname>MDevSoundObserver::ToneFinished(TInt)</apiname></xref> function. </info> <info> Note: Further calls to <codeph>CMMFDevSound::PlayDTMFStringL(const TDesC &amp;)</codeph> can be made both before and after the <codeph>MDevSoundObserver::ToneFinished(TInt)</codeph> callback is received. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita"><linktext>Pausing and
+                Resuming a Tone</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AB8E95D-4270-5CDE-994E-404BCBEC57B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3AB8E95D-4270-5CDE-994E-404BCBEC57B6"><title> Attaching to the default sub-connection: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how an application can use the <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API to attach to the default sub-connection. </p> <p>In the following example, the application wants to connect to the default sub-connection to set its properties. The application simply tries to connect a socket over the connection (which uses the default sub-connection) after it has set properties on the default sub-connection. An example of parameter creation can be found in the separate tutorial <xref href="GUID-7FAE6FE0-D5CB-55D4-94B0-ADD545577CA7.dita">Creating and setting properties for a Sub-Connection</xref>. </p> <codeblock id="GUID-E57DB0E4-D23D-55E4-A7C5-83C15BDA0E43" xml:space="preserve">RSocketServ ss;
+RConnection conn;
+RSubConnection subconn;
+RSocket sock;
+TRequestStatus status;
+
+// Connect to ESOCK
+ss.Connect();
+
+// Open an Connection
+conn.Open(ss, KAfInet);
+
+// Start the connection
+conn.Start(status);
+User::WaitForRequest(status);
+
+// Attach to the default sub-connection
+subconn.Open(ss, RSubConnection::EAttachToDefault, conn);
+
+// Set Properties of the default sub-connection
+subconn.SetParameters(…);
+
+// Open a TCP socket on the connection (this is the same as using the default sub-connection)
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, conn);
+
+_LIT(KRasAddr,"10.159.24.13");
+const TInt KEchoPort = 7;
+
+TInetAddr destAddr;
+destAddr.Input(KRasAddr);
+destAddr.SetPort(KEchoPort);
+
+// Request the Socket to connect to the destination over the default sub-connection
+sock.Connect(destAddr, status);
+</codeblock> <p> <b>Note:</b> Error handling is not included to aid clarity. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3ABE9420-2668-507E-B857-E62DC50654BD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3ABE9420-2668-507E-B857-E62DC50654BD"><title>Storing and restoring</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>An object in its internal form may consist of just simple data types, for example, a <codeph>TPoint</codeph>, which just has two <codeph>TInt</codeph> values representing its X and Y co-ordinates, or a network of objects, for example, a <codeph>CBufSeg</codeph>. There are two ways of storing the external form of the object:</p> <ul><li id="GUID-38BD713B-FD26-53E5-8C9B-982F286A1BCC"><p> externalising it as part of a stream </p> </li> <li id="GUID-52840A22-541D-5CC0-BE55-F572CC292120"><p>storing it as an entire stream network in a store. </p> </li> </ul> <p>When externalizing an object to a stream, the stream is passed to the the <codeph>ExternalizeL()</codeph> function and, in general, an object has no knowledge of where, in the stream, the data is written.</p> <p>When a whole network of objects is to be externalised it is useful to <i>store</i> an object in its own stream network. This is particularly important if other objects are to be restored without restoring this one. The main reason is that it is very difficult to read past an object's data in a single stream without knowing something about its internal form.</p> <section><title>What to store?</title> <p>You should store an object which you might not wish to load along with its containing object. The following are typical situations where storing is used:</p> <ul><li id="GUID-EC0FC73C-F820-5255-B3B9-06282F58897E"><p>when objects are stored in a database, such as a relational database, various indexes to the database are accessed, but not every object is loaded into RAM when the database is opened.</p> </li> <li id="GUID-3EC34AF1-053F-5EE9-B655-925720527510"><p>embedded objects in documents. An object represented by an iconic door is not loaded until that door is opened; an object represented by a glass door may not be loaded until the glass door is required to be displayed.</p> </li> <li id="GUID-EAC3CD9F-0592-5036-97E9-31A718FD9F86"><p>when there is additional information to allow various levels of access to complex data streams. For example, rich text. The text is stored in one stream, but the formatting information is stored in other streams; this enables global text or even plain text to be read without the details of the rich text formatting interfering with the process.</p> </li> <li id="GUID-7077058B-007F-5CFC-AB8B-0AAD68ED1C5D"><p>when there is additional information for later versions of a program. Additional version-2 information can be stored in a separate stream; then, a version-1 program working on the same store will load only the version-1 information, but the version-2 program will load both.</p> </li> </ul> <p>In general, the decision to <i>store</i> rather than <i>externalise</i> is a fundamental characteristic of the object, and should be taken with care. A compound object, which contains stored component objects, must obey store-related protocols which are more complex than the simple stream-related <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph>. The decisions already taken by system components, such as rich text, and by the application architecture, influence the kinds of things you store in your own applications.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AD20E0C-F364-533F-9FBC-227478CA9982.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3AD20E0C-F364-533F-9FBC-227478CA9982" xml:lang="en"><title>How
+to use TRAP</title><shortdesc>Provides code snippets to show you how to use <codeph>TRAP</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-0CE805F2-226D-4A8C-8CDF-51BF63281B10"><title>Execute leaving functions under a trap harness</title> <p>Functions
+that leave, including functions that call other functions that can leave,
+must be executed under a trap harness. </p> <p>If a call to <codeph>User::Leave()</codeph> occurs
+within the function, control will immediately be returned to the most recent <codeph>TRAP</codeph>.
+A variable is used with every trap to receive the error code specified in
+a leave. </p> <p>If no leave occurs, then when the called function ends, execution
+returns to the <codeph>TRAP</codeph>, and the leave variable has the value <codeph>KErrNone</codeph>. </p> <p>Typically
+after a <codeph>TRAP</codeph>, a function checks the leave variable to test
+whether processing returned normally or by leaving, and acts appropriately.
+Special mechanisms discussed later are provided to handle cleanup after the
+exception. </p> <codeblock id="GUID-AE3B0F19-F632-5E4C-A14A-5AD804472BA3" xml:space="preserve">TInt E32Main() 
+ {  
+ testConsole.Title(); // write out title
+ testConsole.Start(_LIT("Example")); // start a new "test"
+
+ // The leave variable
+ TInt r;
+ // Perform example function. If it leaves,
+ // the leave code is put in r
+ TRAP(r,doExampleL()); 
+ // Test the leave variable
+ if (r) 
+  testConsole.Printf(_LIT("Failed: leave code=%d"), r);
+
+ testConsole.End(); // finish
+ testConsole.Close(); // close it
+ return KErrNone; // and return
+ }</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-DD570EB3-15DA-5615-930C-3CD7FD3A65F2"><p>It is not necessary
+that all L functions be <i>directly</i> invoked by a trap harness. In most
+cases, functions that can leave are called normally by other functions. It
+is only necessary that somewhere above the function in the call chain is a
+trap harness. </p> </li>
+<li id="GUID-E7231292-D852-5DF7-830D-7B2B92F8C3D3"><p>It is not recommended
+to call a function with an <codeph>LC</codeph> suffix from inside a trap harness.
+This is because if the function does not leave, the object that the function
+created and pushed onto the cleanup stack will remain on the cleanup stack
+on exiting from the trap harness. This causes a <codeph>E32USER-CBase 71</codeph> panic,
+unless the object is popped by the caller from within the trap harness, for
+example: </p> <codeblock id="GUID-933B5F12-B729-5B0F-A021-FF999EFF6A79" xml:space="preserve">TRAPD(error, pointer = SomeClass::SomeFunctionLC(); CleanupStack::Pop(pointer));</codeblock> <p>In this code, if <codeph>SomeClass::SomeFunctionLC()</codeph> leaves,
+then <codeph>pointer</codeph> is destroyed as part of leave processing. If
+it does not leave then <codeph>CleanupStack::Pop(pointer)</codeph> is called,
+avoiding the panic. </p> </li>
+</ul> </section>
+<section id="GUID-E21C113D-9931-5E85-9ED5-6F14BD28E042"><title>Using TRAPD</title> <p>For
+convenience, there is a <codeph>TRAPD</codeph> form of the macro which defines
+the variable to be used as the leave code. This saves a line of source code
+in the majority of situations. </p> <codeblock id="GUID-EBC2B054-A961-54A5-BBB8-3C194F208C25" xml:space="preserve">TRAPD(leaveCode,SomeFunctionL()); // call a function
+if (leaveCode!=KErrNone)          // check for error leave code
+ {
+ // some cleanup
+ }</codeblock> </section>
+<section id="GUID-BB8DEAE9-D247-5AAE-80AD-A5FB193786BB"><title>Trap harnesses
+and function return values</title> <p>Trap harnesses can be used when the
+function being called returns a result. </p> <codeblock id="GUID-3848F9FA-72A1-569D-B603-AB6FB4DA042B" xml:space="preserve">TRAPD(leaveCode,value=GetSomethingL()); // get a value
+if (leaveCode!=KErrNone) // check for error leave code
+ {
+ // some cleanup
+ }
+else { // didn’t leave: value valid
+ }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AD215CA-AF7D-561C-9D9E-FAFB50F1E37F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3AD215CA-AF7D-561C-9D9E-FAFB50F1E37F" xml:lang="en"><title>Automatic Speech Recognition Client Utility Library</title><shortdesc>This section describes the Automatic Speech Recognition Client Utility library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775" xml:lang="en"><title>Resource
+Files </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Resource files contain data separated from executable code. The purpose
+of using resource files are to define user interface components and store
+localisable data. </p>
+<p>The application framework defined by the Uikon Core expects features of
+the application UI, such as menus, to be supplied in a resource file. The
+framework reads these resources itself. Other user interface components, such
+as dialogs, can also be easily created from resources, without the application
+needing to use this API itself. </p>
+<p>The API has two key concepts - resource file reader and resource component
+reader. </p>
+<section><title>Resource file reader</title> <p>Resource files contain data
+in numbered resources. The resource file reader allows such files to be opened
+and closed, and individual resources within them, as identified by symbolic
+identifiers, to be read into binary descriptors. Data items are then extracted
+from these descriptors using the resource component reader. </p> <p>The resource
+file can be read using <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref>. </p> </section>
+<section><title>Resource component reader</title> <p>A resource is defined
+as a struct. Struct members can be simple, such as integers and strings, or
+complex, such as other structs, or arrays of structs. The resource component
+reader is used to read these struct members from a binary descriptor holding
+the resource into C++ variables. The application must ensure that it places
+the struct members into variables of appropriate types. </p> <p>The resource
+component header information can be accessed using <xref href="GUID-B375D32E-1F91-30FA-8605-A2E163111F9A.dita"><apiname>TResourceReader</apiname></xref>. </p> </section>
+<section id="GUID-EA9C30E1-AB21-5042-9417-CFDE320C519D"><title>Basic resource
+file use</title> <p>The basic concepts involved with using resource files
+are as follows: </p> <ul>
+<li id="GUID-67FFC98D-2829-5146-B4B6-5DEB3A4966BA"><p>In a resource file,
+define structs or use appropriate pre-defined structs and then define resources
+that use those structs. </p> </li>
+<li id="GUID-C57BD780-2B6F-547F-B008-FAD1F51B565F"><p>Run the resource compiler
+to produce both a generated header file and a resource file. The generated
+header file defines the symbols which a program uses to refer to the resources. </p> </li>
+</ul> <p>A program which requires a resource file then performs the following: </p> <ul>
+<li id="GUID-6E6F8010-F264-5F28-A540-D122530C98ED"><p>Includes the generated
+header file in the appropriate source file to get symbolic access to the IDs
+of the resources contained within the file. </p> </li>
+<li id="GUID-8E1FFF9C-6D4A-5926-AE9E-703E2B224F23"><p>Opens a <codeph>RResourceFile</codeph> object,
+specifying the generated resource file name. </p> </li>
+<li id="GUID-AB22B5E3-1C8E-5994-B4E4-28CCD62297BD"><p>Reads any resource that
+is required. The resource is identified by a symbolic ID which has been <codeph>#define</codeph> d
+as a number; the content of the resource is read into a binary descriptor,
+derived from <codeph>TDesC8</codeph>. </p> </li>
+<li id="GUID-E743799B-77A2-51F6-AC73-1D8A9325FD5E"><p>Converts the binary
+descriptor into whatever target format is appropriate for the data in the
+resource file. </p> </li>
+<li id="GUID-83832E00-F8A1-5F42-80A7-AA29C11D1CFD"><p>Discards the descriptor,
+if appropriate, when the binary descriptor has been fully converted into its
+target format. </p> </li>
+<li id="GUID-8E5F9573-7180-5E44-ABAD-53D4F9608E33"><p>Closes the <codeph>RResourceFile</codeph> when
+all operations on the resource file are complete. </p> </li>
+</ul> <p>The resource text can be changed and the resources recompiled without
+altering or recompiling the C++ program. For example, to alter the language
+used by text strings. </p> </section>
+<section><title>Resource File Interface</title><p>Resource files contain data
+in numbered resources. A resource file has the following format:</p><fig id="GUID-9CFB3B14-9C09-42E2-A87E-ED07BD2E7E36">
+<image href="GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e154935_href.png" placement="inline"/>
+</fig><p>A resource file is generated from text input using the resource compiler.
+The index can be used to efficiently find a resource given its numeric ID.
+There can be 1 to 4095 resources in a resource file. Each resource contains
+binary data whose length is determined by subtracting the start position of
+the resource from the start of the next resource (or from the start of the
+index, for the last resource in the file). </p><p> Functions for handling
+resources in a resource file are encapsulated in the <codeph>RResourceFile</codeph> class.
+This class provides functions for: </p><p><ul>
+<li><p>opening and closing the file</p></li>
+<li><p>reading resources</p></li>
+<li><p>support for using multiple resource files</p></li>
+</ul></p><p>Generally, the process for reading a resource is to read it into
+a buffer of sufficient length, analyse it and place its data into C++ classes.
+Then, if appropriate, release the buffer.   </p><p>The <codeph>TResourceReader</codeph> class
+must be used to simplify the process of resource data analysis.  </p> </section>
+<section id="GUID-3E43B598-5857-5660-B9F0-432FD9AC56AA"><title>File types
+in resource file usage</title> <p>The file types involved in resource file
+usage are defined in the following diagram: </p> <fig id="GUID-4C93BFC7-89BD-5E88-BA68-D6273F13BB8D">
+<title>              File types            </title>
+<image href="GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e154981_href.png" placement="inline"/>
+</fig> <p>These files work together as follows: </p> <ul>
+<li id="GUID-CA9BB1F1-0535-5F18-9CD2-AC2C02DACE8D"><p>the C++ compiler and
+linker, together, take <filepath>.cpp</filepath> source files and produce <filepath>.exe</filepath> output
+(or <filepath>.dll</filepath>, or <filepath>.app</filepath>, or another such
+extension). </p> </li>
+<li id="GUID-D1E44783-4179-5E25-9C2A-715E167E8177"><p>the resource compiler
+takes a <filepath>.rss</filepath> source file containing <codeph>RESOURCE</codeph> statements
+and converts it into a <filepath>.rsc</filepath> resource file which contains
+the resources the executable program will use. It also produces a <filepath>.rsg</filepath> generated
+header file, which contains the symbolic IDs of these resources. </p> </li>
+<li id="GUID-5E468821-D48B-5633-9801-F3ACFA96024C"><p>the <filepath>.rsg</filepath> file
+is <codeph>#include</codeph> d by the <filepath>.cpp</filepath> file, so that
+the C++ compiler has access to the symbolic IDs of the resources that will
+be used. </p> </li>
+<li id="GUID-99F5E649-D5E6-59F0-A6F0-C51A52756FA7"><p>C++ class definitions
+are specified in a <filepath>.h</filepath> file; a typical application will
+include several system header files and usually one or more of its own. </p> </li>
+<li id="GUID-84ED8144-AEBD-51CD-A9CE-240D143A773A"><p>resource structs are
+specified in a <filepath>.rh</filepath> file. A typical application will use
+system-provided resource headers, which define standard controls etc. Only
+if the application requires its own structs, will it include its own <filepath>.rh</filepath> file. </p> </li>
+<li id="GUID-BDDFAD1C-48FD-52F0-85A0-553CB2BAC5AA"><p>flag values are <codeph>#define</codeph> d
+in a file which must be available to both the C++ compiler and the resource
+compiler: the <filepath>.hrh</filepath> extension is used for this and <filepath>.hrh</filepath> files
+are typically <codeph>#include</codeph> d into the <filepath>.h</filepath> file
+that defines the classes (for C++) and the <filepath>.rh</filepath> file that
+defines the structs (for the resource compiler). </p> </li>
+</ul> </section>
+<section id="GUID-41C5ABE7-C081-5259-9814-0436844C85AD"><title>Type safety
+issues</title> <p>Software systems implemented in C++ are designed to be type-safe.
+Proper use of header files, make utilities, type declarations, classes and
+templates makes it difficult to pass data of the wrong type to functions,
+to assign data of the wrong type to variables, or to construct a program whose
+modules are inconsistent with one another. Thus a major source of programming
+errors is detected while the program is being built, before running it. </p> <p>A
+program which uses resources must have a resource file which matches that
+program's requirements. However, the resource file and the executable program
+are only loosely bound together. A variety of errors are possible while dealing
+with resources, which cannot be detected during the build process. Programmers
+should be aware of these and take appropriate measures to avoid them. </p> <p>Additional
+sources of error include: </p> <ul>
+<li id="GUID-C08B03AF-E50C-577A-90F7-1462B223E9D0"><p>Having a program and
+resource file which do not correspond. </p> <p>This can arise because the
+resource file formats were updated, or the program was updated, but the resource
+file was not updated. When the program is run, the resources it loads are
+in the wrong format. </p> </li>
+<li id="GUID-81AB0840-8122-5C34-9DE9-A10DCB02E39D"><p>The structures in the
+resource file may be of a different format from that expected by the C++ program. </p> <p>If
+the C++ program expects a <codeph>LONG</codeph> while a <codeph>WORD</codeph> is
+present in the resource file, then the C++ program will read two extra bytes
+from the data item in the resource file. Any subsequent data read from that
+resource will be an error. </p> <p>This kind of error can only be avoided
+by C++ programs knowing which structs they are dealing with, knowing the data
+layouts of those structs in a resource file and writing code which works in
+that context. </p> </li>
+<li id="GUID-E61214E6-9FC8-5A6E-8EEC-452FF135A89C"><p>Having resources of
+unexpected type. </p> <p>The most likely reason for this to arise is because
+there is no type safety in the resource compiler. Thus, it is possible for
+a programmer to wrongly guess what kind of struct a particular resource must
+use. Appropriate comments in the <filepath>.rh</filepath> files and the documentation
+of the resource file, will help to reduce this kind of error. </p> </li>
+</ul> <p>The resource compiler does provide some elementary safety features: </p> <ul>
+<li id="GUID-736C2471-93C2-5AD6-8E73-CBA30DF5C6C0"><p>All resources are represented
+by a symbolic ID. This ensures that the resource IDs used by the C++ program
+and those expected by the compiler match, if the recommended build procedures
+are followed. </p> </li>
+<li id="GUID-8DE5ABAE-2504-5DC9-BDCC-70C8ABF806AA"><p>Flag values, maximum
+length constants and some other values, may be defined in a <filepath>.hrh</filepath> file.
+This ensures that C++ programs uses correct resource. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita"><linktext>Reading a
+string resource</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AF6CE70-DDBE-53F3-ABB6-7E78A300F14B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3AF6CE70-DDBE-53F3-ABB6-7E78A300F14B" xml:lang="en"><title>Contacts Model</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AFA592E-ED32-5AC6-B331-E7191CF2D5E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-3AFA592E-ED32-5AC6-B331-E7191CF2D5E2" xml:lang="en"><title>Checking
+the Availability of Memory</title><abstract><p>This section explains the System Utility functionality of checking
+the disk space. </p><p>  Perform one or more of the following steps based
+on the requirements: </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps-unordered>
+<step id="GUID-83BADD5E-2C9A-5618-8AAF-85B2622014EA"><cmd/>
+<info>To check whether the disk space is below the critical level in FFS (also
+called the system drive), call <codeph>FFSSpaceBelowCriticalLevelL()</codeph> function. </info>
+</step>
+<step id="GUID-07E3E228-06D4-55C2-A096-3B5A843B9117"><cmd/>
+<info>To check whether the disk space is below the critical level in MMC storage,
+call <codeph>MMCSpaceBelowCriticalLevelL()</codeph> function. </info>
+</step>
+<step id="GUID-6F08817D-06C2-51DA-BB10-9285AE37BC60"><cmd/>
+<info>To check whether the disk space is below the critical level on a disk
+drive, call <codeph>DiskSpaceBelowCriticalLevelL()</codeph> function. </info>
+</step>
+</steps-unordered>
+<result><p>The functions return <codeph>ETrue</codeph> if the number of bytes
+to be written takes the memory below the critical level, else returns <codeph>EFalse</codeph>. </p> </result>
+<example><title>Example</title> <p>The following is an code fragment illustrating
+how to check whether the disk space is below critical level: </p> <codeblock id="GUID-4B885F54-1112-5538-872C-15C3DA8A3B3A" xml:space="preserve">TInt dataSize = 500;
+if ( SysUtil::DiskSpaceBelowCriticalLevelL( &amp;iFsSession, dataSize, EDriveC ) )
+    {
+    // Cannot write the data, there's not enough free space on disk.
+    ...     
+    }
+else
+    {
+    // It's ok to actually write the data.
+    ...
+    }
+</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-ED6ED5E6-5A95-54F2-B5B2-6145A10F44BE.dita"><linktext>System Utilities
+Overview</linktext></link>
+<link href="GUID-79370E26-4549-5F31-99A3-8D0341F58F08.dita"><linktext>Retrieving
+the Software and Language Versions</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C" xml:lang="en"><title>Application registration information</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3B0BF8FF-88AB-5BF4-9F04-5F82A3998699.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3B0BF8FF-88AB-5BF4-9F04-5F82A3998699" xml:lang="en"><title>How
+to store and restore a non-compound object</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title> Storing</title> <p>The basic protocol for storing is the <codeph>StoreL()</codeph> function
+and should be prototyped as:</p> <codeblock id="GUID-112220CB-F74B-59FA-8EF7-BA9D1C616860" xml:space="preserve">TStreamId StoreL(CStreamStore&amp; aStore) const;</codeblock> <p>The function takes a reference to the store in which the stream is to
+be stored and returns the stream ID through which the object can be restored. </p> <p>In
+some cases, the design of a class may be such that it maintains a pointer
+or reference to the store. In this event, the <codeph>CStreamStore</codeph> argument
+would be redundant.</p> <p>To store an object that does not contain any other
+objects:</p> <ol id="GUID-1C25EAB3-DFBB-5486-B58D-45B4939A04FC">
+<li id="GUID-18320343-D11D-59F4-A875-A7306E190864"><p>construct a write stream
+object, i.e. an instance of <codeph>RStoreWriteStream</codeph> </p> </li>
+<li id="GUID-DA4E34C4-CBC3-5C57-A329-CAA63053BC2D"><p>externalise the object</p> </li>
+<li id="GUID-C6137D35-5525-56FF-8906-C5B3E8AD28CE"><p>return the ID of the
+stream</p> </li>
+</ol> <p>The following code fragment shows the canonical form for some general
+class <codeph>CClassA</codeph>:</p> <codeblock id="GUID-3AA0A33A-940C-5315-813E-BC774D7F30A2" xml:space="preserve">TStreamId CClassA::StoreL(CStreamStore&amp; aStore) const
+    {
+    RStoreWriteStream stream;
+    TStreamId id=stream.CreateLC(aStore);
+    ExternalizeL(stream);
+    stream.CommitL();
+    CleanupStack::PopAndDestroy();
+    return id;
+    }</codeblock> </section>
+<section><title>Restoring</title><p>The basic protocol for restoring is the
+&lt;code&gt;RestoreL()&lt;/code&gt;  function and should be prototyped as:
+</p><codeblock xml:space="preserve">void RestoreL(CStreamStore&amp; aStore,TStreamId anId);</codeblock><p>The
+function takes a reference to the store in which the stream is stored and
+the ID that identifies that stream is stored.</p><p>To restore an object that
+does not contain any other objects:</p><ul>
+<li><p>construct a read stream object, i.e. an instance of</p><codeph>RStoreReadStream</codeph></li>
+<li><p>internalise the object.</p></li>
+</ul><p>The following code fragment shows an example for some general class</p><codeph>CClassA</codeph><codeblock xml:space="preserve">     void CClassA::RestoreL(CStreamStore&amp; aStore, TStreamId anId)
+     {
+          RStoreReadStream stream;
+          stream.OpenLC(aStore,anId);
+          InternalizeL(stream);
+          CleanupStack::PopAndDestroy();
+     }</codeblock><p/> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86"><title>Configuring the Video Recorder</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to configure the video recorder. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to make configuration adjustments to video recording parameters. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video recorder utility is used to record video clips to files, descriptors or URLs and manipulate embedded meta data. This functionality is implemented by the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> class. </p> </section> <section><title>Using Video Recording Parameters</title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-209368FC-79E9-57D6-A353-3B6A5FEE151A"><p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita#GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86/GUID-AD571928-46D4-5163-BBCF-2AACBD50C8BD">Configure the Priority</xref>  </p> </li> <li id="GUID-76FE0E0D-3FEC-51AA-9F97-9B96DDF49488"><p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita#GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86/GUID-9A36A69B-4FE4-525E-9667-73ABE7BA232B">Enable Audio Playback</xref>  </p> </li> <li id="GUID-35887162-7744-5569-BB3F-08442753CFB9"><p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita#GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86/GUID-8FFFA630-257E-5423-8EF6-87011D8F89DD">Configure Video Frame Size </xref>  </p> </li> <li id="GUID-40B02DC8-3E90-5905-9026-BDA06F2D0735"><p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita#GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86/GUID-5317B8A4-0BAE-565A-9CE1-0EE83D6DA5D6">Configure MIME Type and Codecs</xref>  </p> </li> <li id="GUID-A30F3077-FC16-5B6D-A0F9-A895A61C66ED"><p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita#GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86/GUID-6177D261-E61B-512C-987B-8E6FDDEF6405">Configure Bit and Frame Rates</xref>  </p> </li> <li id="GUID-ACDC28B3-683C-59F9-905F-D8BB05A95796"><p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita#GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86/GUID-B7616FBC-7F5A-5A01-9126-8D8E2382D05D">Configure Gain</xref>  </p> </li> </ul> <p id="GUID-AD571928-46D4-5163-BBCF-2AACBD50C8BD"><b>Configuring the Priority</b> </p> <p>The high level steps to configure the priority are shown here: </p> <ul><li id="GUID-3981F9B6-F252-5D8A-A750-0313B1EA7B38"><p>To set the priority of the video/audio device, which is used to arbitrate between multiple objects trying to access a controller, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-1B8C11FD-08DD-3E69-8D1E-232EADA2874A"><apiname>CVideoRecorderUtility::SetPriorityL()</apiname></xref> function. </p> <codeblock id="GUID-58C0B5E9-654C-5641-AA8B-C5CCD811A91F" xml:space="preserve">void CRecordVideo::SetPriorityL(TInt aPriority, TMdaPriorityPreference aPref)
+    {
+    iVideoRecordUtility-&gt;SetPriorityL(aPriority, aPref);
+    }</codeblock> </li> <li id="GUID-0BB0DBB4-BAD2-5062-979E-E7BDB6ABC87E"><p>To retrieve the priority setting of the video/audio device, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-4407A583-D78E-310F-A152-5495531B5B37"><apiname>CVideoRecorderUtility::GetPriorityL()</apiname></xref> function. </p> <codeblock id="GUID-82982B5B-20F4-5897-A153-9827E4CFA01E" xml:space="preserve">void CRecordVideo::GetPriorityL(TInt &amp;aPriority, TMdaPriorityPreference &amp;aPref)
+    {
+    iVideoRecordUtility-&gt;GetPriorityL(aPriority, aPref);
+    }</codeblock> </li> </ul> <p id="GUID-9A36A69B-4FE4-525E-9667-73ABE7BA232B"><b>Enabling Audio Playback</b> </p> <p>The high level steps to enable audio playback are shown here: </p> <ul><li id="GUID-5025C56F-05AC-5C72-B856-78203C964BE4"><p>To determine whether an audio track is associated with a video clip, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-ECF76E36-67ED-3919-9D85-53FD04837096"><apiname>CVideoRecorderUtility::AudioEnabledL()</apiname></xref>. This function returns the status of audio support for the video clip currently being recorded. </p> <codeblock id="GUID-C63549DB-A21D-50EF-89DC-4593CDBDAB7D" xml:space="preserve"> TBool CRecordVideo::AudioEnabledL()
+    {
+    return iVideoRecordUtility-&gt;AudioEnabledL();
+    }
+    </codeblock> </li> <li id="GUID-5F1B28B9-EFEF-5419-B8A0-39350D618802"><p>To set whether the current video clip has an audio track associated with it, use clip<xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-01C99875-7FD6-3CC9-8042-EE60F2FEBB9E"><apiname>CVideoRecorderUtility::SetAudioEnabledL()</apiname></xref> function. </p> <codeblock id="GUID-7D922A90-4ADD-5D03-BBFE-2E15E2CF1AC3" xml:space="preserve"> void CRecordVideo::SetAudioEnabledL(TBool aEnabled)
+    {
+    iVideoRecordUtility-&gt;SetAudioEnabledL(aEnabled);
+    }</codeblock> <p> <b>Note</b>: The above listed APIs are relevant only if the video clip is associated with an audio stream. </p> </li> </ul> <p id="GUID-8FFFA630-257E-5423-8EF6-87011D8F89DD"><b> Configuring Video Frame Size</b> </p> <p>The high level steps to configure video frame size are shown here: </p> <ul><li id="GUID-3CE688B5-7A7D-53B8-A3FA-5049E5500A74"><p>To retrieve the current frame size of the video clip, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-AE3BAF2B-5203-3911-8276-2545B4394226"><apiname>CVideoRecorderUtility::GetVideoFrameSizeL()</apiname></xref>. This function returns the video frame size in pixels. </p> <codeblock id="GUID-4E7C092A-BF85-54E4-88AB-4A5863291EF1" xml:space="preserve">
+ void CRecordVideo::GetVideoFrameSizeL(TSize &amp;aSize)
+    {
+    iVideoRecordUtility-&gt;GetVideoFrameSizeL(aSize);
+    }</codeblock> </li> <li id="GUID-C4E93047-8025-5433-8556-429842A49404"><p>To set the video frame to the desired size, use <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-5E957BEB-7EBF-34AA-8EA0-9974BB6CA0DD"><apiname>CVideoRecorderUtility::SetVideoFrameSizeL()</apiname></xref> function. This functions sets the video frame size in pixels. </p> <codeblock id="GUID-A393BBAC-F92E-5AC9-9105-5E6E1D845272" xml:space="preserve"> void CRecordVideo::SetVideoFrameSizeL(const TSize &amp;aSize)
+    {
+    iVideoRecordUtility-&gt;SetVideoFrameSizeL(aSize);
+    }</codeblock> </li> <li id="GUID-059B5B92-4928-5BC9-AEF9-F6B882603C19"><p>To set the video frame size to 176x144, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-5E957BEB-7EBF-34AA-8EA0-9974BB6CA0DD"><apiname>CVideoRecorderUtility::SetVideoFrameSizeL()</apiname></xref> function. </p> <codeblock id="GUID-7105FCBC-8961-51EA-A713-ED29D7CC8891" xml:space="preserve"> TSize frameSize;
+    frameSize.iWidth = 176;
+    frameSize.iHeight = 144;
+    TRAP(err, iVideoRecorderUtility-&gt;SetVideoFrameSizeL(frameSize));</codeblock> </li> </ul> <p id="GUID-5317B8A4-0BAE-565A-9CE1-0EE83D6DA5D6"><b>Configuring MIME Type and Codecs</b> </p> <p>The high level steps to configure MIME type and codecs are shown here: </p> <ul><li id="GUID-740F1F04-F1C0-5BBE-B4E6-8EE214CE6F4E"><p>To retrieve a list of video codecs supported by the currently open video clip, use <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-9360BC10-D38F-380D-82DE-A45373B6F3D7"><apiname>CVideoRecorderUtility::GetSupportedVideoTypesL()</apiname></xref> function. This function returns an array of Four Character Codes representing the video types supported. </p> </li> <li id="GUID-F3695C34-D93A-546C-AAB3-C84416ED2985"><p>To retrieve a list of audio codecs supported by the current video clip, use <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-6447E7C6-393D-3288-9066-56EF564B2802"><apiname>CVideoRecorderUtility::GetSupportedAudioTypesL()</apiname></xref> function. This function returns an array of Four Character Codes representing the audio types supported. </p> </li> <li id="GUID-632E35AB-6998-58E8-8A66-604DF879B109"><p>To retrieve an audio codec currently in use by the video clip, use the and <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-6C93B62E-B91F-35AD-A167-C7DEF54B2EB1"><apiname>CVideoRecorderUtility::AudioTypeL()</apiname></xref> function. This function returns the audio type of the clip. </p> <codeblock id="GUID-1C3D01B8-B9BF-51BB-9EE0-23C71287414C" xml:space="preserve">TFourCC CRecordVideo::AudioTypeL()
+    {
+    return iVideoRecordUtility-&gt;AudioTypeL();
+    }</codeblock> </li> <li id="GUID-9B8AFDE3-F0A8-5C66-8269-35A3E5CD5B0B"><p>To set new video and audio codecs to use when recording data to the video clip, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-5EBF0D7C-CDD8-37BA-A47F-86C85C0B9D9B"><apiname>CVideoRecorderUtility::SetVideoTypeL()</apiname></xref> and <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-55AC49E6-3A93-3278-A29F-B40B0F07C5A3"><apiname>CVideoRecorderUtility::SetAudioTypeL()</apiname></xref> functions. </p> <codeblock id="GUID-5FCF5A51-C0F4-547A-8A84-061062DF7A81" xml:space="preserve">void CRecordVideo::SetVideoTypeL(const TDesC8 &amp;aType)
+    {
+    iVideoRecordUtility-&gt;SetVideoTypeL(aType);
+    }</codeblock> <codeblock id="GUID-96A33BF0-F829-5CBB-8453-0B955289F80C" xml:space="preserve"> void CRecordVideo::SetAudioTypeL(TFourCC aType)
+    {
+    iVideoRecordUtility-&gt;SetAudioTypeL(aType);
+    }</codeblock> </li> </ul> <p id="GUID-6177D261-E61B-512C-987B-8E6FDDEF6405"><b>Configuring Bit and Frame Rates</b> </p> <p>The high level steps to configure bit and frame rates are shown here: </p> <ul><li id="GUID-646A3CBE-D508-52B7-9920-534CEFFE2305"><p>To retrieve or set the video bit rates, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-A38122DF-9511-3D64-979F-9DBF4826E877"><apiname>CVideoRecorderUtility::VideoBitRateL()</apiname></xref> and <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-E937D7A9-AD59-33D4-83E6-3CF24A565A84"><apiname>CVideoRecorderUtility::SetVideoBitRateL()</apiname></xref> functions. </p> <codeblock id="GUID-181AF492-D0F5-5B42-886F-3982ABE68FDA" xml:space="preserve">TInt CRecordVideo::VideoBitRateL()
+    {
+    return iVideoRecordUtility-&gt;VideoBitRateL();
+    }</codeblock> <codeblock id="GUID-B3C1AD94-DB00-527F-BC07-F15F5382238E" xml:space="preserve"> void CRecordVideo::SetVideoBitRateL(TInt aBitRate)
+    {
+    iVideoRecordUtility-&gt;SetVideoBitRateL(aBitRate);
+    }
+</codeblock> </li> <li id="GUID-E4BBC7C5-03A9-5F79-B083-E7C1995B4E81"><p>To retrieve or set the audio bit rates, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-E7A48B75-46E1-32D5-B5B6-BD7D28ADDF69"><apiname>CVideoRecorderUtility::AudioBitRateL()</apiname></xref> and <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-182E3DBB-5C6C-3AB6-85BC-2F11FF941DB8"><apiname>CVideoRecorderUtility::SetAudioBitRateL()</apiname></xref> functions. </p> <codeblock id="GUID-AD51F9A2-D0AD-572A-B80B-88EF13EE2E22" xml:space="preserve">TInt CRecordVideo::AudioBitRateL()
+    {
+    return iVideoRecordUtility-&gt;AudioBitRateL();
+    }</codeblock> <codeblock id="GUID-2DA67EB1-EE1B-5750-9A0A-1AF458293501" xml:space="preserve"> void CRecordVideo::SetAudioBitRateL(TInt aBitRate)
+    {
+    iVideoRecordUtility-&gt;SetAudioBitRateL(aBitRate);
+    }
+</codeblock> </li> <li id="GUID-A4ADA88C-FF95-555E-B6BD-DB0EDEBAB2A7"><p>To retrieve or set the current frame rate of the video, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-15EAA9BB-2D5A-327E-9321-52EDD53D73E5"><apiname>CVideoRecorderUtility::VideoFrameRateL()</apiname></xref> and <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-D9C23FED-218E-36AA-8799-D9D6E42EC665"><apiname>CVideoRecorderUtility::SetVideoFrameRateL()</apiname></xref> functions. </p> <codeblock id="GUID-CDE342CF-AF23-5E0A-A085-6783B6FC174B" xml:space="preserve"> TReal32 CRecordVideo::VideoFrameRateL()
+    {
+    return iVideoRecordUtility-&gt;VideoFrameRateL();
+    }</codeblock> <codeblock id="GUID-6F48741F-DF3E-5D8A-9E69-168D31407917" xml:space="preserve">void CRecordVideo::SetVideoFrameRateL(TReal32 aFrameRate)
+    {
+    iVideoRecordUtility-&gt;SetVideoFrameRateL(aFrameRate);
+    }</codeblock> </li> </ul> <p id="GUID-B7616FBC-7F5A-5A01-9126-8D8E2382D05D"><b>Configuring Gain</b> </p> <p>The high level steps to configure recording gain are shown here: </p> <ul><li id="GUID-7D7228CE-2460-59AC-AFEF-9CB1EFB7E2B1"><p>To return the current recording gain use <xref href="GUID-D6967FA6-1AFE-3AC4-8731-98A655E0A79C.dita"><apiname>GainL()</apiname></xref>. </p> <codeblock id="GUID-51DA45D1-5FE6-58C4-B22C-898E0956796E" xml:space="preserve"> TInt CRecordVideo::GainL() 
+    {
+    return iVideoRecordUtility-&gt;GainL();
+    }</codeblock> </li> <li id="GUID-572D297D-58DC-571F-9212-F8ABD695B99B"><p>To set the audio recording gain use <xref href="GUID-EBF9BAF6-6713-3851-9948-9ED57D6D3715.dita"><apiname>SetGainL()</apiname></xref>. </p> <codeblock id="GUID-2293C0C3-A761-5C1D-8DC0-09CFE24906C0" xml:space="preserve">void CRecordVideo::SetGainL(TInt aGain)
+    {
+    iVideoRecordUtility-&gt;SetGainL(aGain);
+    }</codeblock> </li> <li id="GUID-E468BB7B-61EC-54A2-BCA0-73DC9F7AF4E8"><p>To return the maximum possible setting for the recording gain use <xref href="GUID-8AC6A9FD-1859-37E8-9088-E7D2F42A0652.dita"><apiname>MaxGain()</apiname></xref>. </p> <codeblock id="GUID-468CA726-86BD-5E99-A462-57E2491E284A" xml:space="preserve">TInt CRecordVideo::MaxGainL() 
+    {
+    return iVideoRecordUtility-&gt;MaxGainL();
+    }</codeblock> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita">Creating and Preparing a Video Recorder</xref>  </p> <p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita">Enabling/Disabling Video Recording</xref>  </p> <p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita">Controlling Video Recording Quality</xref>  </p> <p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref>  </p> <p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita">Setting Video Metadata</xref>  </p> <p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita">Controlling the Video Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e241392_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3B2FB34B-B4FC-5273-AE35-DADA2FA4C419.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3B2FB34B-B4FC-5273-AE35-DADA2FA4C419" xml:lang="en"><title>Using
+ClientMessage Framework</title><shortdesc>This section explains how to use the ClientMessage framework to
+sanitize the incoming messages. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <ol id="GUID-99AB8BE4-C585-55A3-B16F-C4B53A9E9E61">
+<li id="GUID-F6B94808-046E-5D80-9BDC-AEEEE1DB694B"><p>Create and initialize
+a <xref href="GUID-8AA6248D-64E4-3C73-8541-03C9880000F0.dita"><apiname>TClientMessageSchema</apiname></xref> structure to represent a single
+message from the client. </p> <p>It defines the function number corresponding
+to the message, the security policy for the message, the number of paramaters
+that are passed to the function and the type and constraint information for
+each of the parameters. </p> <p><codeblock id="GUID-76569264-62A5-53A4-A12F-55067521D309" xml:space="preserve">const TParameterDetails KMessageParams2[1] = {{EParamInt,-10,100}};
+
+const TClientMessageSchema KClientMessages[] = 
+MESSAGE_SCHEMA( EMessage0, KDefaultPolicy, KMessageParams2 );</codeblock> </p> </li>
+<li id="GUID-2BD81806-096B-58F3-A498-733BBC876809"><p>Create and initialize
+a <xref href="GUID-FF1684A9-62FF-3614-BA8D-084CA2FFC3AE.dita"><apiname>TClientMessageServerData</apiname></xref> structure containing an array
+of custom validation functions<xref href="GUID-DA261437-879F-3A8D-9D91-F683BF41CA32.dita"><apiname>TCustomValidationFn</apiname></xref> and <xref href="GUID-8AA6248D-64E4-3C73-8541-03C9880000F0.dita"><apiname>TClientMessageSchema</apiname></xref> structure
+defining a schema for each message that will be accepted by the server. </p> <p><codeblock id="GUID-1B3F0610-C1D9-5354-959A-B4ABDE746350" xml:space="preserve">extern const TClientMessageServerData aServerData=
+    {
+    sizeof( KClientMessages )/sizeof( TClientMessageSchema ),
+    KClientMessages,                                               
+    KCustomValidationFunctions,
+    ( TUint8* )"My Server"
+    }</codeblock> </p> </li>
+<li id="GUID-A3F4C516-B219-5E77-9F3B-6EB0F76944B4"><p>Initialize the framework
+by calling the static function <xref href="GUID-45AFEB13-9D05-365D-A2A6-A34EF48A494D.dita"><apiname>CClientMessage</apiname></xref>::<xref href="GUID-25CE7350-2288-3E55-901C-0F0AAFECCD1B.dita"><apiname>InitialiseFrameworkL</apiname></xref> ()
+and pass it to <xref href="GUID-FF1684A9-62FF-3614-BA8D-084CA2FFC3AE.dita"><apiname>TClientMessageServerData</apiname></xref> structure. </p> <p><codeblock id="GUID-F2AEF771-F37F-5028-99D7-6DD1CE9209E0" xml:space="preserve">IMPORT_C static void InitialiseFrameworkL( const TClientMessageServerData &amp;aServerData );</codeblock> </p> </li>
+</ol> </section>
+<section><title>Results</title> <p>On construction, <codeph>CMessageParameterBase</codeph> objects
+are instantiated using the <codeph>TParameterDetails</codeph> structs in the
+message schema and stored in an <codeph>RPointerArray</codeph>. The objects
+represent the individual message arguments and are used to validate each argument
+against the constraints defined in the message schema. </p> </section>
+<section><title>Example</title> <p>Below is an example schema that defines
+four messages, including two that define custom validation functions. The
+data is passed to the framework through a constant <codeph>TClientMessageServerData</codeph> structure. </p> <codeblock id="GUID-5375E126-8C70-5B45-9202-E1F94A969E4B" xml:space="preserve">#include &lt;bsul/bsul.h&gt;
+using namespace BSUL;
+//This enum defines the custom parameter types used to validate 
+//TPckg&lt;TMyStruct&gt; and TPckg&lt;TMyStruct1&gt; parameters.
+enum TCustomParamType
+    {        
+    EParamCustom1 = ( 0x000 | EParamPckg ),        
+    EParamCustom2 = ( 0x100 | EParamPckg )     
+    };
+//Defines the schema for each message
+const TParamaterDetails KMessage0Params[2] = {{EParamInt,-10,100},
+                                             {EParamInt,0,200}};
+const TParamaterDetails KMessage1Params[2] = {{EParamDes8Read,64,64},
+                                             {EParamInt,0,64}};
+//Parameter is TPckg&lt;TMyStruct&gt;
+const TParamaterDetails KMessage2Params[1] = {{EParamCustom1,sizeof( TMyStruct ), sizeof( TMyStruct )}};
+//Parameter is TPckg&lt;TMyStruct1&gt;
+const TParamaterDetails KMessage3Params[1] = {{EParamCustom2,sizeof( TMyStruct1 ), sizeof( TMyStruct1 )}};
+//Define the security policies for each message
+_LIT_SECURITY_POLICY_PASS( KDefaultPolicy );
+_LIT_SECURITY_POLICY_C2( KMsg2Policy, ECapabilityReadUserData, ECapabilityWriteUserData );
+//This is the array of TClientMessageSchema structs that define the messages that will be accepted by the server.
+const TClientMessageSchema KClientMessages[] =      
+    {
+    {EMessage0,
+    KDefaultPolicy,         
+    sizeof( KMessage0Params )/sizeof( TParamaterDetails ),KMessage0Params},
+    
+    {EMessage1,
+    KDefaultPolicy,
+    sizeof( KMessage1Params )/sizeof( TParamaterDetails ),KMessage1Params},
+    
+    {EMessage2,
+    KMsg2Policy,
+    sizeof( KMessage2Params )/sizeof( TParamaterDetails ),KMessage2Params},
+    
+    {EMessage3,
+    KDefaultPolicy,
+    sizeof( KMessage3Params )/sizeof( TParamaterDetails ),KMessage3Params}
+    };
+//These are the custom validation functions that are used to validate 
+//TPckg&lt;TMyStruct1&gt; and TPckg&lt;TMyStruct1&gt; parameters
+static void CustomValidationFn1L( CMessageParameterBase* aParameter );
+static void CustomValidationFn2L( CMessageParameterBase* aParameter );
+//This is the array of custom validation functions. The index of the function 
+//in the array should match the upper 16 bits of the value defined in 
+//TCustomParamType enum for that parameter type.
+const TCustomValidationFn KCustomValidationFunctions[] = 
+    {
+    &amp;CustomValidationFn1L,
+    &amp;CustomValidationFn2L
+    };
+//This is the initialization data that is passed into the ClientMessage 
+//framework by the server. It contains everything the framework needs to 
+//validate incoming messages
+extern const TClientMessageServerData KServerData =
+    {
+    sizeof( KClientMessages )/sizeof( TClientMessageSchema ),
+    KClientMessages,                                               
+    KCustomValidationFunctions,
+    ( TUint8* )"My Server"
+    };</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-42C94E3D-93DE-543E-A0D2-8B705C668BE0.dita"><linktext>Base Services
+Utility Library Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C" xml:lang="en"><title>Foreground
+events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The application framework calls <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleForegroundEventL%28TBool%29" format="application/java-archive"><parmname>CCoeAppUI::HandleForegroundEventL()</parmname></xref> when the application
+is switched to the foreground or background.</p>
+<p>While the default implementation of this method is empty, it can be,
+for example, used to display messages or pause a game when a focus change
+event occurs.</p>
+<p>An example of such a foreground event implementation is as follows:</p>
+<codeblock id="GUID-ECF10193-AB06-4267-A47F-D5EC2C561D9C" xml:space="preserve">// ------------------------------------------------------------------------------
+// CMyViewAppUi::HandleForegroundEventL(TBool aForeground)
+// This function is called by the  framework when the screen loses or gains focus. 
+// i.e. when it goes to the background or to the foreground. Incoming call 
+// softnote is an example.
+// This event applies to the entire application, all views.
+// ------------------------------------------------------------------------------
+//
+void CMyViewAppUi::HandleForegroundEventL(TBool aForeground)
+    {
+    if( aForeground == TRUE )
+        {
+        iEikonEnv-&gt;InfoMsg( _L( "Foreground true" ) );
+	       }
+    else
+	       {
+	       iEikonEnv-&gt;InfoMsg( _L( "Foreground false" ) );
+	       }
+    }
+</codeblock>
+<p>The <parmname>aForeground</parmname> parameter is true if the application
+is switched to the foreground (is visible) and false if the application has
+gone to the background</p>
+<note>
+<p>The above code snippet uses the <i>MyView</i> example application provided
+in the <i>S60 Platform: Platform Application Views</i> package available from <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/9c5f21fd-2162-42da-aaf6-17a59b943475/S60_Platform_Application_Views_v2_0_en.zip.html" scope="external">Forum
+Nokia</xref> . </p>
+</note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98" xml:lang="en"><title>Process identification</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Sometimes it is useful for security reasons to obtain more information about server or application processes, and identify an application and even its vendor uniquely.</p>
+<ul>
+<li><p>To verify an application's identity, use <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Architecture/RApaLsSessionClass.html" format="application/java-archive">RApaLsSession</xref></codeph> to retrieve the application's name and  <i>Unique Identifier</i> UID, and compare them against known information.</p><p>For more information, see <xref href="GUID-EA05F9B6-52C7-4BD9-8B9A-4BA3456E70B5.dita">UID</xref>.</p></li>
+<li><p>Use the <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Architecture/TApaTaskListClass.html" format="application/java-archive">TApaTaskList</xref></codeph> class to get a list of currently running applications.</p><p>In the platform security architecture there are two different identifiers for applications: Secure Identifier (SID) and Vendor Identifier  (VID).</p></li>
+</ul>
+<p><b id="GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC652">Secure Identifier (SID)</b></p>
+<p>Every executable has its own <i>Secure Identifier</i> (SID), which is used to identify the running process launched from the executable. It can also be used to determine which private directory a process can access. SID is stored in the executable binary, so it has the same security as any executable code. The SID value is not relevant for <codeph>dll</codeph>.</p>
+<p>SID values are requested from the <xref href="http://www.symbiansigned.com" scope="external">Symbian Signed</xref> web site. The <xref href="GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita">Sofware Installer</xref> ensures that no two applications have the same SID value on a particular target device.</p>
+<p>To retrieve the SID of a process, use the <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/RProcessClass.html#%3a%3aRProcess%3a%3aSecureId%28%29const" format="application/java-archive">RProcess::SecureId()</xref></codeph> method . During inter process communication, use the <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TSecurityPolicyClass.html" format="application/java-archive">TSecurityPolicy</xref></codeph> class to specify a security policy consisting of both <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref> and SID checks.</p>
+<p>For information on how to define the SID in the <codeph>mmp</codeph> file, see <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Build-ref/Mmp-ref/secureid.html" format="application/java-archive">secureid</xref></codeph>. If SID is not specified in the <codeph>mmp</codeph> file, the value of UID3 is used as the SID.</p>
+<p><b id="GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC654">Vendor Identifier (VID)</b></p>
+<p>In addition to SID, signed applications have a <i>Vendor Identifier</i> (VID) which can be used to identify the source of the application. Applications from one vendor usually share a common VID, but the vendor may have different VIDs for different product families. VIDs can also be used to group servers and clients into logical groups providing services to each other.</p>
+<p>Note that the VID cannot be reused for any other entity. For example, the Nokia VID (<codeph>0x101FB657</codeph>) is property of Nokia.</p>
+<p>For information on how to define the VID in the <codeph>mmp</codeph> file, see <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Build-ref/Mmp-ref/vendorid.html" format="application/java-archive">vendorid</xref></codeph>.</p>
+<section><title>Secure inter process communication</title>
+<p>Authentication can be done in different ways. The server can decide to request (or not to request) capabilities from the client. The client's options are more limited, the server is usually authenticated by name. The <codeph>ProtServ</codeph> <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref> allows the server to insert an "!" in front of its name, indicating that the server can be trusted. Nameless servers are also possible, but no client can connect to them without a handle to the server. The server can also authenticate the client with SID and VID.</p>
+<p>Every server should define the following security policies:</p>
+<ul>
+<li><p>Which capabilities are required by the calling application</p></li>
+<li><p>Which SID and VID are required by the calling application</p></li>
+<li><p>What actions are possible or must be done with the information provided:</p>
+<ul>
+<li><p>Can input data be trusted?</p></li>
+<li><p>Is user acceptance needed for this operation?</p></li>
+<li><p>Can this server act as a proxy towards other components?</p></li>
+</ul>
+</li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3B7D05F9-2BCA-4B53-AE9F-99B0B3B7C4A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3B7D05F9-2BCA-4B53-AE9F-99B0B3B7C4A2" xml:lang="en"><title>Intermixing
+C and C++</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3B945B72-EC12-4CC0-B7DA-1FC517A9B14D_d0e38139_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90"><title>deffile</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>deffile</codeph>  <varname>filename</varname>  </p> <p>Use the <codeph>deffile</codeph> statement to override the default linker definition file for the project. </p> <p>A <filepath>.def</filepath> file specifies associations between exported function names and their ordinal export number. It is used by the linker when constructing a DLL and (where applicable) when constructing its associated import library. </p> <p>The assignment of ordinals must be controlled by a <filepath>.def</filepath> file in two situations: </p> <ul><li id="GUID-8F33841B-EF81-59DA-A409-231032FA5606"><p>A polymorphic interface <filepath>DLL</filepath> must export a particular function as ordinal 1. In this case, the <filepath>.def</filepath> file is used to specify this association, while other exported functions may have a random order. </p> </li> <li id="GUID-C032173B-7997-5292-80F4-B1325C4CE9A6"><p>A re-released <filepath>DLL</filepath> must be used by clients built against the old version. In this case, the <filepath>.def</filepath> file is used to ensure that all functions exported by the old version of the <filepath>DLL</filepath> are exported with the same ordinal by the new version. </p> </li> </ul> <p>For many polymorphic <filepath>DLL</filepath> s, a special target type is provided so that the build tools can ensure that the correct function is exported as ordinal 1. Where a special target type is provided, the <filepath>.def</filepath> file can be dispensed with. </p> <p> <filepath>.def</filepath> files are sometimes colloquially referred to as freeze files, because they freeze the association between name and ordinal, for exported functions. </p> <p>The RVCT and Microsoft tool chains use different schemes for mangling the names of exported functions. This means that <filepath>.def</filepath> files of the same name must be differentiated by storing them in separate directories. </p> <p>Conventionally, </p> <p> <filepath>..\eabi\</filepath> is used for ARM <filepath>.def</filepath> files, </p> <p>while </p> <p> <filepath>..\bwins\</filepath> is used for WINSCW <filepath>.def</filepath> files. </p> <p>By default, the frozen <filepath>.def</filepath> file takes its basename from the basename of the target for the project. </p> <p>Where the default frozen <filepath>.def</filepath> file is overridden by the <codeph>deffile</codeph> statement, a path to the file can be specified as part of the filename. </p> <p>If no path is specified, the <filepath>.def</filepath> files are expected to be in: </p> <ul><li id="GUID-F592A3E3-2577-5146-B512-04CEADA760D7"><p>directory ..<filepath>\bwins\</filepath> for platforms WINSCW, CW_IDE, VS6 and VS2003 </p> </li> <li id="GUID-EE1052D2-87E9-5C0B-ABA9-492C0F9D302D"><p>directory ..<filepath>\eabi\</filepath> for the ARM platform. </p> </li> </ul> <p>If a path is specified, place the <codeph>deffile</codeph> statement within <codeph>#if defined(</codeph> <varname>identifier</varname> <codeph>)</codeph> so that the same file will not be used during both ARM and non-ARM builds. </p> <p>For example: </p> <codeblock id="GUID-06609D34-4569-555E-984D-6F688A45B3BA" xml:space="preserve">#if defined(WINS)
+deffile-stmt
+#else if defined(MARM)
+deffile-stmt
+#endif</codeblock> <p>Note that the platform name macros used with <codeph>#if
+        defined(</codeph> <varname>identifier</varname> <codeph>)</codeph> must be in upper-case. </p> <p>In most cases, the functions exported from a DLL depend on the build variant. This is common because descriptor class names depend on whether the build is wide or narrow. For such DLLs, different <filepath>.def</filepath> files—differentiated by the <filepath>-u</filepath> suffix—are used. Although narrow builds are no longer supported, the <filepath>-u</filepath> suffix is still in use to maintain backward compatibility with previous versions of the build tools. This suffix behaviour can be removed by using <codeph>nostrictdef</codeph>. </p> <p>Note too that under WINSCW, when using an <codeph>exedll</codeph> target type, the first export is the one which will be called when the DLL is loaded, so you should use a <filepath>.def</filepath> file for the WINSCW variant. </p> <p>Makefiles create the import library associated with an executable (where applicable) directly from the frozen <filepath>.def</filepath> file, so only frozen exported functions will appear in the import library and only these exported functions can be linked against by other components. </p> <p>For ARM platforms, import libraries for compatible ABIs are also created. </p> <p>For example: </p> <ul><li id="GUID-AB341A8F-B9A0-5F01-A453-A99A9825EBF4"><p>if a project is built for <codeph>ARMv5</codeph>, then <codeph>ARMv5_ABIv1</codeph> import libraries will be created. </p> </li> <li id="GUID-58B657D6-0B87-59C3-BEA1-31F1AFA4C00C"><p>if a project is built for <codeph>ARMv5_ABIv2</codeph>, then <codeph>ARMv5_ABIv2</codeph> import libraries will be created. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3BC54F46-5F81-5F2D-ACF8-E8E0A0D5A345.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3BC54F46-5F81-5F2D-ACF8-E8E0A0D5A345"><title>Handles versus File Descriptors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>STDLIB provides a POSIX-like abstraction of file descriptors which unifies the different types of resource and permits a single API to be used across all of them. This is a significantly different approach from Win32 and Symbian platform, both of which have separate APIs for each distinct type of resource. </p> <p>STDLIB supports files stored in the file system, sockets, a console, and a <codeph>/dev/null</codeph> device. The first time STDLIB initialises its internal file descriptor table it creates an emulated console device and attaches it to descriptors 0, 1 and 2. The emulated console device will appear as a window when it is first used (i.e. when the program writes to or reads from the console). </p> <p>The <codeph>open()</codeph> function recognises the following names: </p> <ul><li id="GUID-6093ADF0-5171-5ECC-910A-7F1CDCEBA54F"><p> <codeph>CON:</codeph> is taken to mean a newly-created console. This will never be the same console as the one automatically associated with 0, 1 and 2. </p> </li> <li id="GUID-F99DC14D-ABD1-5B2C-BD93-966986F974B8"><p> <codeph>NUL:</codeph> is taken to mean a <codeph>/dev/null</codeph> device. </p> </li> <li id="GUID-11DF24CF-BF8C-5DBD-87AA-AF667953D8E6"><p> <codeph>TMP:</codeph> is taken to mean a temporary file, which will use the underlying Symbian platform file system facilities to create a uniquely-named temporary file, and will cause the file to be deleted after it has been closed cleanly. </p> </li> <li id="GUID-9D55E093-D3CA-5FDA-B32D-918675840C4A"><p> <codeph>COMx:</codeph> is the serial port where x is a number from 1 to 9. <codeph>COM1:</codeph> corresponds to serial port zero and so on. </p> </li> <li id="GUID-96E9F3A9-9A90-5A27-8B2B-50151CBA045B"><p> <codeph>IRCOMx:</codeph> is the serial port where x is a number from 1 to 9. </p> </li> </ul> <p>The number of open files in the file has no explicit limit. </p> <p>Symbian platform resources such as <codeph>RFile</codeph> s and <codeph>RSocket</codeph> s are derived from class <codeph>RSubSessionBase</codeph>, so are thread specific. This means they cannot be used by any thread other than the one which opened them. In STDLIB however, the <codeph>CPosixServer</codeph>, if running, controls the master file descriptor table. In this case, all STDLIB threads in a process may share their resources, because the STDLIB implementation forwards all I/o requests to the resources owned by that process's <codeph>CPosixServer</codeph> thread. If no <codeph>CPosixServer</codeph> is running, each thread has a separate file descriptor table and the resources are not shareable. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3BCA55F8-3867-579B-8D81-C540A32A8462.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3BCA55F8-3867-579B-8D81-C540A32A8462"><title> build</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>build</codeph>  <codeph> ( ( [-c] | [-w] ) | ( [-s] [-k] [-v] ) )</codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>This command combines the effects of several <filepath>abld</filepath> commands in one, and will probably be all you’ll need to invoke to build your component.</p> <p>The <filepath>abld</filepath> commands that this command combines are <codeph>export</codeph>, <codeph>makefile</codeph>, <codeph>library</codeph>, <codeph>resource</codeph>, <codeph>target</codeph> and <codeph>final</codeph>, which are carried out in turn.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86"><title>Using Calendar Entry Time Iteration</title><shortdesc>This topic introduces Calender iterator classes and describes how device implementers can use instance iterators for searching and sorting. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Required background</title> <p>General knowledge of searching and sorting as well as <xref href="GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita">Calendar</xref>. </p> <p>The following terms are referred to within this topic </p> <dl><dlentry><dt>Iterator</dt> <dd><p>An object that allows a program to move through each element within a range of data. </p> </dd> </dlentry> <dlentry><dt>Instance iterator</dt> <dd><p>For the Calendar component an instance is an occurence of a Calendar entry. Therefore, an instance iterator points to each occurence of a Calendar entry. </p> </dd> </dlentry> <dlentry><dt>Sort criteria</dt> <dd><p>Rules that decide the order in which Calendar instances are arranged. </p> </dd> </dlentry> </dl> </section> <section><title>Introduction</title> <p>Instance iteration is a function of the <xref href="GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita">Calendar</xref> component within the PIM Application Services collection. This document describes the classes within Calendar that enable searching and sorting of Calendar instances. The iterators used for searching and sorting are created using three distinct factory methods of the <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita"><apiname>CCalInstanceView</apiname></xref> class. Each iterator has a different behaviour which is described in the following sections </p> <ul><li id="GUID-769BCC5B-9FEB-5DC2-B085-43B803FB6A38"><p><xref href="GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86.dita#GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86/GUID-C5AD3E96-A40C-5DE2-B0F1-38BF349580DA">Iterating over instances in a time range view</xref>  </p> </li> <li id="GUID-A9549EAC-5440-5AA1-9A13-3DFB29BF775F"><p><xref href="GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86.dita#GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86/GUID-E8A1810A-00EB-59E6-BC0A-17F58C603D31">Iterating over all instances, from a starting instance</xref>  </p> </li> <li id="GUID-EFD4B921-8CD7-5E6C-AC8E-737D87B3CC22"><p><xref href="GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86.dita#GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86/GUID-640721A8-A26E-5C53-9E8F-7AA4DB66902E">Iterating over a repeating meeting schedule, from a starting instance</xref>  </p> </li> </ul> <p><b>CCalInstanceIterator</b> </p> <p>The instance iterator class <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita"><apiname>CCalInstanceIterator</apiname></xref> provides standard functions for iterating through a set of Calendar instances </p> <codeblock id="GUID-9E516778-E6AE-5A76-A0B6-610E22D480F6" xml:space="preserve">CCalInstance* CCalInstanceIterator::NextL();
+CCalInstance* CCalInstanceIterator::PreviousL();
+TBool CCalInstanceIterator::HasMore() const;
+TInt CCalInstanceIterator::Count() const;
+</codeblock> <p> <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita#GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7/GUID-8A6F3455-ED23-3C84-B056-2092A8B7EE18"><apiname>CCalInstanceIterator::NextL()</apiname></xref> returns the next instance in the set. If there are no more instances to be returned then it returns a NULL pointer. </p> <p> <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita#GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7/GUID-82DA6CF2-E7E2-33B8-B4AE-9B42FF784BB4"><apiname>CCalInstanceIterator::PreviousL()</apiname></xref> returns the previous instance in the set. If there are no more instances to be returned then the API returns a NULL pointer. </p> <p> <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita#GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7/GUID-3B6962D3-3833-343D-ADA1-B07158845626"><apiname>CCalInstanceIterator::HasMore()</apiname></xref> returns <codeph>ETrue</codeph> when there are more instances to be returned by <codeph>NextL()</codeph>, and <codeph>EFalse</codeph> when there are not. </p> <p> <b> Note:</b> It is advised that <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita#GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7/GUID-3B6962D3-3833-343D-ADA1-B07158845626"><apiname>CCalInstanceIterator::HasMore()</apiname></xref> is not used. It has no advantage and is less efficient than checking whether the value returned by <codeph>NextL()</codeph> is a NULL pointer or not. </p> <p> <xref href="GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7.dita#GUID-3028274E-F033-3218-BA44-2BC2B0BE58E7/GUID-64E1A2C8-866B-3011-8B65-D9E6C78A1EA4"><apiname> CCalInstanceIterator::Count()</apiname></xref> returns the number of instances that are in the set of instances defined by the parameters that were used to create the iterator. </p> <p> <b> Note:</b> It is advised that <codeph>CCalInstanceIterator::Count()</codeph> is not used because it takes a long time to work out the number of instances in the set. </p> <p>The iterator has been designed for efficient memory usage. The instances that are returned are owned by the calling application and should therefore be deleted by the calling application. So that the calling application benefits from this when iterating, it is recommended that <codeph>CCalInstance</codeph> objects are queried, as needed, and then deleted before the application moves on to the next instance. </p> <p>Please note that the instance iterator has undefined behaviour if changes are made to the Calendar data file after the iterator has been created. Therefore, if an entry is stored, updated, or deleted by your application or another application the iterator should be destroyed and recreated. </p> <p><b>CCalFindInstanceSettings</b> </p> <p>This instance settings class is used to set filtering options when creating two of the iterators. </p> <p>The following functions use the instance settings class </p> <codeblock id="GUID-14F667B6-3B81-5F62-90BF-EF2819D300B6" xml:space="preserve">
+CCalFindInstanceSettings* CCalFindInstanceSettings::NewL(CalCommon::TCalViewFilter aFilter, const CalCommon::TCalTimeRange&amp; aTimeRange);
+void CCalFindInstanceSettings::SetTextSearchL(const CCalInstanceView::TCalSearchParams&amp; aSearchParams);           </codeblock> <p>The constructor of this class takes a time range and a view filter, which describe the types of instances that should be returned. </p> <p>An application can also optionally specify some search text using the <codeph>CCalFindInstanceSettings::SetSearchTextL()</codeph> function. </p> <p>Four APIs in the <codeph>CCalInstanceSettings</codeph> class support customised sorting and filtering by priority and 32-bit user integer </p> <codeblock id="GUID-E168CBBB-CF3D-54BB-B1C0-CAE0DAC27684" xml:space="preserve">// Define the filter for the 32 bit user integer
+void SetUserIntFilter(const CalCommon::TCalUserIntFilter&amp; aUserIntFilter);
+</codeblock> <p>The parameter class <codeph>CalCommon::TCalUserIntFilter</codeph> has two members </p> <ul><li id="GUID-536050CC-8F04-5A0E-80CC-D658438E132C"><p>Mask – specifies which bits are valid in the filter. </p> </li> <li id="GUID-2A6445CA-3299-50DA-B0DE-577705B39BF2"><p>Value – specifies the matched value. </p> </li> </ul> <p>A <xref href="GUID-BB7C2921-86A6-30B3-8092-4338A88C36CE.dita"><apiname>CCalFindInstanceSettings</apiname></xref> object with an empty <codeph>CCalSortCriteria</codeph> object calls <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref>. The instances return with the default sort order. </p> <p>Instances are ordered first by instance time. For instances with equal times the default sort order, applied by <codeph>CCalInstanceView::FindInstanceL()</codeph>, is as follows </p> <ul><li id="GUID-1FE5706F-5A81-5882-BB7C-68BC3F554069"><p>To-do entries. Two or more to-do entries are ordered by due date, priority then start date </p> </li> <li id="GUID-D299087F-0121-54EC-9FB7-8369EEFA5B66"><p>Anniversaries </p> </li> <li id="GUID-7F2AAFDB-E28E-5BF0-A9DA-381EAB1EF690"><p>Day notes </p> </li> <li id="GUID-56F3700D-3542-54A0-8CCA-E6470228A436"><p>Appointments. Two or more appointments are ordered by start time then end time. </p> </li> </ul> <p>If two instances are the same then completed to-do instances appear after non-completed ones. </p> <p><b>CCalSortCriteria</b> </p> <p>The <xref href="GUID-E702E469-D282-3C85-9F78-6E8472EACB9C.dita"><apiname>CCalSortCriteria</apiname></xref> class represents a sort criterion sequence. Items within the sequence are represented by the <xref href="GUID-9AE83544-CC85-3872-8CBA-4D6EBF765E7C.dita"><apiname>CCalSortCriterion</apiname></xref> class. Sequence items are applied to determine the order of the calendar instances. If the first criterion is to order instances by end time and the second criterion is to order instances by priority, the instances are sorted by end time and then by priority. </p> <p>You can fetch the <codeph>CCalSortCriteria</codeph> through <codeph>CCalFindInstanceSettings</codeph> using the following functions </p> <codeblock id="GUID-9F5C391F-3CCF-5C75-90BF-B9FA2B83DEEB" xml:space="preserve">
+CCalSortCriteria&amp; SortCriteria(); 
+const CCalSortCriteria&amp; SortCriteria() const;</codeblock> <p>You can perform operations on <codeph>CCalSortCriteria</codeph> using the functions below. </p> <ul><li id="GUID-C127C9C3-9B98-541F-8D4A-D51657053839"><p>To append a sort criterion to the end of the array of sort criteria, represented by a <codeph>CCalSortCriteria</codeph> object </p> <codeblock id="GUID-48CF9A8C-72D5-5A5E-A7AC-5000886FADDD" xml:space="preserve">void AppendCriterionL(CalCommon::TCalSortAttribute aAttr, CalCommon::TCalSortDirection aDir);</codeblock> </li> <li id="GUID-4C2447A5-E07C-5586-85DF-482A1AC007FA"><p>To return the number of sort orders contained in the <codeph>CCalSortCriteria</codeph> object </p> <codeblock id="GUID-F93DDC7F-567C-5EDD-B602-57374B3ECE4B" xml:space="preserve">TInt Count() const;</codeblock> </li> <li id="GUID-EBDF7C1C-45E8-5F12-A0A8-9C8F455B59D7"><p>To return a sort criterion at the specified index </p> <codeblock id="GUID-9A648625-7CE9-5AC3-9264-12A319F85FAE" xml:space="preserve">const CCalSortCriterion&amp; AtL(TInt aIndex) const;</codeblock> </li> <li id="GUID-2AF9C67A-5306-52F0-81BB-4769B7423890"><p>To set the order to follow when sorting the instances according to their type </p> <codeblock id="GUID-93C9F817-6587-5DEB-93D5-0DC234D84B6A" xml:space="preserve">void SetEntryTypeOrderL(const RArray&lt;CCalEntry::TType&gt;&amp; aTypeOrder);</codeblock> </li> <li id="GUID-665C765F-7B04-5228-8693-62282661FDC0"><p>To return the type order retained by the sort criteria object </p> <codeblock id="GUID-BA85A3B7-8A53-50F6-8824-3020778CBF90" xml:space="preserve">const RArray&lt;CCalEntry::TType&gt;&amp;  EntryTypeOrder() const;</codeblock> </li> </ul> </section> <section id="GUID-C5AD3E96-A40C-5DE2-B0F1-38BF349580DA"><title>Iterating over instances in a time range view</title> <p>This iterator is given as an alternative to using the normal <xref href="GUID-61153F93-1A72-3122-9693-1242235987F7.dita"><apiname>FindInstanceL()</apiname></xref> call to populate a month view. The benefit of using the iterator is that large views can be created without running out of application memory because the application can create only one instance of the view at a time. The disadvantage is that the iterator is not as fast as the normal <codeph>FindInstanceL()</codeph> call. This is a decision that must be made by the application developer. If there are too many instances for the normal <codeph>FindInstanceL()</codeph> call to work without running out of memory then this iterator could be used to populate the view where it was not possible before. </p> <p>This iterator is created through the <codeph>FindInstanceL()</codeph> API </p> <codeblock id="GUID-EE013B7A-6C9E-5291-BF5B-68720006D185" xml:space="preserve">
+CCalInstanceIterator* CCalInstanceView::FindInstanceL(const CCalFindInstanceSettings&amp; aSettings) const;
+</codeblock> <p>Iteration starts from the beginning of the time range and instances are returned in the same order as they are from a <codeph>FindInstanceL()</codeph> call. </p> </section> <section id="GUID-E8A1810A-00EB-59E6-BC0A-17F58C603D31"><title>Iterating over all instances, from a starting instance</title> <p>This iterator enables calendar applications to iterate through all instances in the calendar, but starting from a specified instance. </p> <p>The function below is used to create this version of the iterator </p> <codeblock id="GUID-8146E186-49FF-5738-A782-890AE27085DB" xml:space="preserve">
+CCalInstanceIterator* CCalFindInstanceSettings::FindInstanceL(const
+CCalFindInstanceSettings&amp; aSettings, TCalLocalUid aLocalId, const
+TCalTime&amp; aInstanceTime) const; 
+          </codeblock> <p>Note that <xref href="GUID-BB7C2921-86A6-30B3-8092-4338A88C36CE.dita"><apiname>CCalFindInstanceSettings</apiname></xref> is used here. <codeph>CCalFindInstanceSettings</codeph> requires the application to provide a time range. It is expected that an application will not want to choose a time range because it is not known how far away the next or previous instance is. When specifying the time range in this iterator it is acceptable to use min time to max time. </p> <p>The starting instance is selected by specifying the local UID of the entry that that instance belongs to, and the time of that instance. If either the time of the instance is incorrect or the local UID does not refer to an entry currently in the calendar store then construction leaves with <codeph>KErrNotFound</codeph>. </p> <p>Here is some example code that demonstrates how to use the iterator </p> <codeblock id="GUID-330AB91F-D449-5FBC-9F89-02CA9437A9BD" xml:space="preserve">
+// Find an instance to start from
+CCalInstance&amp; startingInstance = GetInstanceFromMonthView();
+
+// Set up the find instance settings
+TCalTime startRange;
+startRange.SetTimeLocalL(TCalTime::MinTime());
+TCalTime endRange;
+endRange.SetTimeLocalL(TCalTime::MaxTime());
+CalCommon::TCalTimeRange timeRange(startRange, endRange);
+CCalFindInstanceSettings* settings = CCalFindInstanceSettings::NewL(CalCommon::EIncludeAll, timeRange);
+CleanupStack::PushL(settings);
+
+// Create the iterator
+CCalInstanceIterator* iterator = instanceView-&gt;FindInstanceL(*settings, startingInstance.Entry()-&gt;LocalUidL(),    startingInstance.Time());
+CleanupStack::PopAndDestroy(settings);
+CleanupStack::PushL(iterator);
+
+// Find the next instance
+CCalInstance* nextInstance = iterator-&gt;NextL();
+delete nextInstance;
+
+// Find the previous instance
+CCalInstance* previousInstance = iterator-&gt;PreviousL();
+delete previousInstance;
+CleanupStack::PopAndDestroy(iterator);  </codeblock> </section> <section id="GUID-640721A8-A26E-5C53-9E8F-7AA4DB66902E"><title>Iterating over a repeating meeting schedule, from a starting
+          instance </title> <p>This iterator enables applications to iterate through all the instances of a repeating meeting schedule. This means that any instances that are defined by the same guide are considered by the iterator. Instances of other meetings are ignored. For example, this would allow an application to iterate through the instances of a repeating to-do. The user may then mark individual instances as completed. </p> <p>The iterator can be created using the following function </p> <codeblock id="GUID-0781CCA8-6D4C-5B34-88DF-5FD18134A9A0" xml:space="preserve">
+CCalInstanceIterator* CCalInstanceView::FindInstanceByUidL(const TDesC8&amp; aUid, const TCalTime&amp; aInstanceTime) const; </codeblock> <p>In a similar way to the previously described iterator, the starting instance is specified by providing the time of the starting instance. This time, however, the application provides the UID of the repeating meeting schedule and not the local UID of the entry. The provided UID is used when considering which instance should be returned. Only those instances of entries belonging to the specified UID are considered. Again if the instance time is incorrect or the UID does not refer to an entry that is currently in the calendar store then construction of the iterator leaves with <codeph>KErrNotFound</codeph>. </p> <p>Here is a code example that demonstrates this iterator </p> <codeblock id="GUID-8B73994B-208E-57F6-83E6-E3298BE8913E" xml:space="preserve">
+// Find an instance to start from
+CCalInstance&amp; startingInstance = GetInstanceFromMonthView();
+
+// Create the iterator
+CCalInstanceIterator* iterator = instanceView-&gt;FindInstanceByUidL(startingInstance.Entry()-&gt;UidL(), startingInstance.Time());
+CleanupStack::PushL(iterator);
+
+// Find the next instance in the repeat meeting schedule
+CCalInstance* nextInstance = iterator-&gt;NextL();
+delete nextInstance;
+
+// Find the previous instance in the repeat meeting schedule
+CCalInstance* previousInstance = iterator-&gt;PreviousL();
+delete previousInstance;
+CleanupStack::PopAndDestroy(iterator);</codeblock> </section> </conbody><related-links><link href="GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita"><linktext>Calendar</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3C2E0C1A-DC7A-55F7-8005-39CEE71CD0A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3C2E0C1A-DC7A-55F7-8005-39CEE71CD0A0" xml:lang="en"><title>Emulating
+stdin/stdout/stderr in STDLIB</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section briefly describes the process of emulating in STDLIB. </p>
+<section><title>Simple Mode - CCLocalSystemInterface</title><p>The following
+are the steps to emulate in simple mode: </p> <ol id="GUID-726C67E0-2339-5E20-9F44-3A2C821CFD7F">
+<li id="GUID-2E5FBA33-8E7B-5B08-A3AE-B22BE011C95D"><p>Create a single <codeph>CTtyDesc</codeph> object
+per thread and an instance of the basic console object. </p> </li>
+<li id="GUID-C4A3FBCF-2595-5E2C-8B30-BAC50502CCC0"><p>Attach the <codeph>CTtyDesc</codeph> object
+to <codeph>stdin</codeph>, <codeph>stdout</codeph> and <codeph>stderr</codeph>. </p> </li>
+<li id="GUID-09A00AD2-D349-531E-98FF-108CBE2C84B2"><p>Pass the Requests made
+on <codeph>stdin</codeph>, <codeph>stdout</codeph> and <codeph>stderr</codeph> to <codeph>CTtyDesc</codeph>. </p> </li>
+</ol> <p>There is a separate console per thread. Therefore, output is spread
+over a number of different consoles. </p> </section>
+<section><title>Complex Mode - CProcessSystemInterface</title><p>The following
+are the steps to emulate in complex mode: </p> <ol id="GUID-1515247F-07E1-53E9-9479-1B2F1D4C0F61">
+<li id="GUID-4803D30B-CB4D-5153-85CB-C7EE0CDA074D"><p>Start the POSIX server
+in the <codeph>crt0</codeph> glue code. </p> </li>
+<li id="GUID-A5F9DB72-C223-52F6-B24F-C3923CE801EF"><p>Create either a single
+instance of <codeph>CW32StreamDesc</codeph> or <codeph>CReDirDesc</codeph> in
+the POSIX server. </p> </li>
+<li id="GUID-F2D23AC7-A08C-5A1A-A4F0-410D8D14ABBE"><p>Attach it to <codeph>stdin</codeph>, <codeph>stdout</codeph> and <codeph>stderr</codeph>,
+which is used by all threads. </p> <p>Requests made on <codeph>stdin</codeph>, <codeph>stdout</codeph> and <codeph>stderr</codeph> are
+passed to the attached descriptor object. </p> </li>
+<li id="GUID-AAEC5A86-21D6-56DA-A834-A2C1743881E7"><p>Use <codeph>CW32StreamDesc</codeph> for
+the emulator only if the <codeph>RWin32Stream</codeph> server was started
+in the <codeph>crt0</codeph> glue code. </p> <p>If <codeph>CW32StreamDesc</codeph> cannot
+be used or code is compiled for hardware, then use<codeph>CRedirDesc</codeph> instead. </p> </li>
+<li id="GUID-31BC5DCD-4F01-5116-A139-123DBC4E217F"><p> <codeph>CReDirDesc</codeph> connects
+and passes the request to a redirection server. If connection fails the output
+to <codeph>stdout</codeph> and <codeph>stderr</codeph> is lost. Nothing is
+read from <codeph>stdin</codeph>. </p> </li>
+<li id="GUID-1A43C2BC-04D7-5DCF-84E6-CDC53F657564"><p>The client application
+(for example, Java RT or the Test application) starts the redirection server.
+The client also provides an implementation of <codeph>CStreamFactoryBase2</codeph>.
+This implementation deals with standard I/O data in a customised way. </p> </li>
+</ol> <p><b> Stdin/stdout on emulator in complex mode</b> </p> <p>A text EXE
+running on the emulator can either use the <codeph>wcrt0.lib</codeph> or <codeph>wwcrt0.lib</codeph> crt0
+libraries. These automatically start the <codeph>RWin32Stream</codeph> server
+to redirect <codeph>stdin</codeph>, <codeph>stdout</codeph> and <codeph>stderr</codeph> to
+the Win32 console. </p> <p><b>Stdin/stdout on hardware in complex mode</b> </p> <p>A
+test EXE running on target hardware has no default console. The test application
+requires application/client specific C++ code to be written to create a new
+thread and call <codeph>CRedirServer2::NewL()</codeph> to start the redirection
+server along with client specific derived classes to plumb the I/O to wherever
+it is required. The POSIX server will then connect to this server when stdXXX
+streams are used. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883"><title>Controlling Captured Image</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document explains you how to control captured images. </p> <section><title>Purpose</title> <p>This document provides a detailed explanation on the use of <b>Post ImageCapture Control </b> API. </p> <p><b>Introduction</b> </p> <p>This classes provide necessary framework to retrieve the image data from individual images and also to apply control on the captured images individually. </p> </section> <section><title>Using Post ImageCapture Control </title> <p>The following tasks are covered on Post ImageCapture Control implementation: </p> <ol id="GUID-6EEFB87A-E8FF-5EC9-96EB-9F3CE37B87A6"><li id="GUID-7A4FA862-EA26-5D02-8C12-2E1D700AC5A1"><p>Provide concrete implementation of <xref href="GUID-65D8585F-4841-3AF4-9A9D-5EAB188C6754.dita"><apiname>McameraImageCapture</apiname></xref> class to create <xref href="GUID-3ECFEF01-EC6F-35E4-A544-39A345E3D8F2.dita"><apiname>CcameraPostImageCaptureControl</apiname></xref> facade class. </p> </li> <li id="GUID-53BFDBDA-BD18-5E69-AA8D-4A33269668E7"><p>Create object of class <xref href="GUID-752D3B52-5BAD-3551-B832-16D0C47CD4EB.dita"><apiname>CCameraPostImageCaptureControl</apiname></xref> to control each captured still image. </p> </li> <li id="GUID-3AEF9A47-6FEA-5911-87B0-84C2D58C3569"><p>Pass a pointer to <xref href="GUID-ED5F1027-BD98-3DEA-BF1B-0EB1A17B6F43.dita"><apiname>McameraPostImageCaptureControl</apiname></xref> object to the <xref href="GUID-3ECFEF01-EC6F-35E4-A544-39A345E3D8F2.dita"><apiname>CcameraPostImageCaptureControl</apiname></xref> object. </p> </li> <li id="GUID-53EBC94E-A630-5EF0-BAAF-70F2F5BCD49A"><p>Call <xref href="GUID-65D8585F-4841-3AF4-9A9D-5EAB188C6754.dita#GUID-65D8585F-4841-3AF4-9A9D-5EAB188C6754/GUID-065F8E55-564B-33BE-BE9D-C629553AB133"><apiname>McameraImageCapture::
+                CreatePostImageCaptureControlImpl</apiname></xref> method with UID value <xref href="GUID-6EBFCB30-8CDE-3E3F-A552-BC722F4F5B93.dita"><apiname>KECamMCameraPostImageCaptureControlUid</apiname></xref> to get the interface pointer. </p> <p>This creates a newly created interface to represent the individual image. </p> </li> <li id="GUID-D712DE6E-7FB2-56FE-A8D3-1FD66A48471C"><p>Use <xref href="GUID-6EBFCB30-8CDE-3E3F-A552-BC722F4F5B93.dita"><apiname>KECamMCameraPostImageCaptureControlUid</apiname></xref> ID to map the individual image with the <xref href="GUID-752D3B52-5BAD-3551-B832-16D0C47CD4EB.dita"><apiname>CCameraPostImageCaptureControl</apiname></xref> instance. </p> </li> <li id="GUID-D61383B7-DFAE-54C0-AA89-CFA93684C50E"><p>Use <xref href="GUID-752D3B52-5BAD-3551-B832-16D0C47CD4EB.dita"><apiname>CCameraPostImageCaptureControl</apiname></xref> class to control each captured still image. </p> </li> </ol> <p>Use <xref href="GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765.dita#GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765/GUID-7735D08D-6514-3D39-B5D4-08D735BADC9A"><apiname>CCameraImageProcessing::TRelativeFlipping</apiname></xref> to describe the various relative flipping of an image. The image can be flipped horizontally or vertically. </p> <p>Note: </p> <ul><li id="GUID-62442474-2A4A-5D86-963E-371CEF544815"><p> <xref href="GUID-752D3B52-5BAD-3551-B832-16D0C47CD4EB.dita"><apiname>CCameraPostImageCaptureControl</apiname></xref> objects will become unavailable if a new image capture request is issued, while the previous request is still not completed. </p> </li> <li id="GUID-009888BE-88FA-5DF9-A03F-868C84BDF18F"><p>Make sure you destroy <xref href="GUID-752D3B52-5BAD-3551-B832-16D0C47CD4EB.dita"><apiname>CCameraPostImageCaptureControl</apiname></xref> object when individual image cancellation is completed and/or individual image is saved. </p> </li> </ul> <p>The following example code snippets illustrates the use of <b>Post ImageCapture Control </b> classes. </p> <codeblock id="GUID-56F70751-E2CA-5EFC-B109-11E26180FC8B" xml:space="preserve">class MCameraImageCapture
+{
+...
+...
+TAny* CCamImageCapture::CreatePostImageCaptureControlImpl(TUid aInterface, TPostCaptureControlId aPostCaptureControlId)
+...
+}
+
+CCamera::CCameraPostImageCaptureControl* postImageCaptureControl;
+
+CCamPostImageCaptureControl* camPostImageCaptureControl;
+static_cast&lt;MCameraPostImageCaptureControl*&gt;(camPostImageCaptureControl);
+
+if(aInterface.iUid == KECamMCameraPostImageCaptureControlUidValue)
+    camPostImageCaptureControl = CCamPostImageCaptureControl::NewL(const_cast&lt;CCamImageCapture&amp;&gt;(*this));
+
+//Use of CCameraPostImageCaptureControl for Image Capture
+    CCamera::CCameraPostImageCaptureControl* postImgCapt = NULL;</codeblock> <p>Post ImageCapture Control implementation lets you do the following tasks: </p> <ul><li id="GUID-0A6C9D31-6515-5325-B44E-46D8950910AF"><p>retrieve the image data for individual images </p> </li> <li id="GUID-24D3C749-70A4-50E3-8E5D-A556EDC48518"><p>retrieve the post image capture identity for this class object </p> </li> <li id="GUID-23A14BED-AA67-56C1-A237-6B14B6642F27"><p>retrieve the sequence number of the individual image </p> </li> <li id="GUID-30A0DAB3-6018-5A1B-A946-C85306848B23"><p>pause or resume the background processing associated with this individual image </p> </li> <li id="GUID-37D5B6B2-B1A1-5B0A-A5E4-76C3885A999D"><p>retrieve information about the current state of the individual image and/or the current state of the image buffer. </p> </li> <li id="GUID-B6427AFE-2D9D-5E4A-8123-22C0E214BA8E"><p>retrieve the image buffer after notifying the availability of the individual image through associated call-backs. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita"> Controlling Pre-Image Capture</xref>  </p> <p><xref href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita">Controlling Still-image Capture</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3C552587-B983-5725-898D-81CC31458DE8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3C552587-B983-5725-898D-81CC31458DE8"><title>Introduction to streams</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A stream is a sequence of binary data; it is the external representation of one or more objects.</p> <p>A store is a collection of streams, each of which has a unique identity. An object stores itself by externalizing its data to one or more streams using the write stream interface and restores itself by internalizing from the same streams using the read stream interface.</p> <p>An instance of a class can be externalized to a stream, and internalized from a stream, by adding definitions and implementations for the two functions, <codeph>InternalizeL()</codeph> and <codeph>ExternalizeL()</codeph> to that class.</p> <p>A class that defines and implements these functions is a store-aware class.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e302567_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3CA039D8-A74D-4C9E-B4F5-6E153C7F65A1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3CA039D8-A74D-4C9E-B4F5-6E153C7F65A1" xml:lang="en"><title>Finger
+vs. stylus </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section> <p>Consider the use cases of the application when deciding whether
+to use finger or stylus control, or possibly hardware keys. Eliminate the
+need to switch from using a finger or stylus on the touch screen, to using
+any of the hardware keys. Design should enable completing a task with the
+same interaction method as it was started with.</p><note>If your application
+is intended to be used with the stylus, rather than a finger, try to present
+this clearly to the users from the top level. It can be frustrating to start
+using an application with finger touch, then switching to stylus, for example,
+if the components on screen suddenly get smaller. </note><p>Decide whether
+the application is to be used with a single hand, or two hands. Make sure
+users are able to use at least the most important functions with only one
+hand, even though the application is designed to be used mainly with two hands.
+ With touch screen devices, this means that the users should be able to perform
+most basic actions with their thumb.</p> <p>Applications that require the
+use of both hands include:</p><ul>
+<li><p>Applications that require the use of stylus</p></li>
+<li><p>Applications that are intended for landscape mode</p></li>
+<li><p>Applications that require data input </p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B"><title>Speech Recognition Controller Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Speech Recognition Controller (SRC) component. </p> <section><title>Purpose</title> <p>The Speech Recognition Controller component provides speech recognition services for clients requiring speech recognition functionality. The SRC component comprises a client utility, a data handler and a custom commands library. </p> </section> <section><title>Required background</title> <p>Automatic Speech Recognition (ASR) is a technology that enables users to use speech to interact with devices. ASR works by converting speech into a machine-readable form. Voice activated dialling is an example of an ASR application. </p> </section> <section><title>Architectural relationships</title> <p>The ASR Client Utility is dependent on the Multimedia Framework. The MMF acts as the interface between the ASR Client Utility and the low level DevASR. A Speech Recognition Services (SRS) controller plugin is responsible for transporting speech recognition requests from the MMF to the DevASR. For playback, the DevASR implementation uses DevSound to play the recorded speech. </p> <p>The relationship between the SRC component and other multimedia components is shown below. </p> <fig id="GUID-7A60FFE5-51FB-5379-8C78-8EA81C46F91D"><title>
+             SRC component architectural relationship 
+          </title> <image href="GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e296593_href.png" placement="inline"/></fig> </section> <section><title>API summary</title> <p>The SRC component includes the following APIs: </p> <table id="GUID-A7626951-7BF0-5876-B799-F50B3F2DF587"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <b>Automatic Speech Recognition Client Utility</b>  </p> </entry> <entry><p>Client side interface for ASR. </p> <p>For more information, see <xref href="GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita">Automatic Speech Recognition Client Utility Overview</xref>. </p> </entry> </row> <row><entry><p> <b>Automatic Speech Recognition Custom Commands</b>  </p> </entry> <entry><p>Custom commands for ASR. </p> <p>For more information, see <xref href="GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD.dita">Automatic Speech Recognition Custom Commands Overview</xref>. </p> </entry> </row> <row><entry><p> <b>Automatic Speech Recognition Data Handling</b>  </p> </entry> <entry><p>Recognition data handling for ASR. </p> <p>For more information, see <xref href="GUID-F684F363-B361-5868-9195-41305428AB2D.dita">Automatic Speech Recognition Data Handling Overview</xref>. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The SRC component is used for the following: </p> <ul><li id="GUID-9B393CDD-1BF6-5107-98E5-97D2A820A992"><p>Recognising spoken input. </p> </li> <li id="GUID-903CDDE8-CBA3-5ACE-A32E-F15EA3FC68F8"><p>Training a new model. </p> </li> <li id="GUID-C82BD979-3704-5B29-ADB0-BAA26A79B447"><p>Manipulating grammars, lexicons and models. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3CAD7211-2164-5F93-9EA7-7167E1C14012.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3CAD7211-2164-5F93-9EA7-7167E1C14012" xml:lang="en"><title>Porting Applications to EXEs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides step-by-step instructions on how to convert an existing DLL-type application to a new style EXE-type application.</p> <p>The conversion of embeddable applications requires more work than non-embeddable, so the two types are described separately.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565" xml:lang="en"><title>Reading
+to Memory</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial describes how to copy data from the table to a memory location. </p>
+<section><title>Introduction</title> <p>You can avoid making a local copy
+of the data by directly writing the retrieved data into a memory location.
+This can be achieved by copying to an object of the <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> class.
+For more details on copying data to a buffer see <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading
+to a Buffer</xref>. </p> </section>
+<section><title>Basic procedure</title> <p>The high level steps to copy the
+data retrieved from a table to a memory location are shown below: </p> <ol id="GUID-E2B78DD5-841E-526B-A6BE-C8ACCF79FA6D">
+<li id="GUID-7F20C95F-0225-58A9-92EE-86DF83AD9C2B"><p>Configure your SQL statement. </p> </li>
+<li id="GUID-F4A653E4-571E-52D0-960E-98B995666B75"><p>Copy to memory. </p> </li>
+</ol> </section>
+<section><title>Detailed steps</title> <p><b>Configure your SQL statement</b> </p> <p>Instantiate
+an object of the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> class and declare the required
+variables as shown. </p> <codeblock id="GUID-188E5840-729F-5F63-9498-086B8EE5C6D3" xml:space="preserve">RSqlStatement myStatement;
+TInt err;</codeblock> <p><b>Copy to memory</b> </p><p>To retrieve all the
+entries, use a loop.
+</p><p/><p>1.                Instantiate an object of the <xref href="GUID-E884CBEB-A5B5-308E-8E88-9A1543184899.dita"><apiname>TPtrc</apiname></xref> class.
+This object may be used to reference constant strings or data. </p><codeblock xml:space="preserve">...
+while((err = myStatement.Next()) == KSqlAtRow)
+    	{
+    	TPtrC myData;
+ 		TInt err;
+	</codeblock><p>2               Read the data into the specified memory location..</p><codeblock xml:space="preserve"> 		err = myStatement.ColumnBinary(myColumnIndex,myData);
+ 		// process data
+ 		}</codeblock> </section>
+<section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying
+a Database</xref>  </p> <p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting
+a Row into a Table</xref>  </p> <p> <xref href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita">Deleting
+Rows from a Table</xref>  </p> <p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading
+to a Buffer</xref>  </p> <p>Reading to memory - This document </p> <p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref>  </p> <p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref>  </p> <p> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC" xml:lang="en"><title>Task
+Scheduler Overview</title><abstract><p>The Task Scheduler enables clients to schedule tasks for time-based
+and condition-based execution. The Task Scheduler is a <xref href="GUID-A3449F37-89BB-5208-8FD5-F4DF73F7E71A.dita">Startup
+State Aware </xref> component. This ensures no task is initiated
+before all system-level services are up and running. </p><p>The time or condition
+for task execution is defined in a schedule. Schedules and tasks can be persistent
+or transient. Schedules can be created, edited and deleted. </p><p> The Task
+Scheduler participates in a system-wide backup or restore operation initiated
+by the <xref href="GUID-EB624E33-0FB1-33BB-A423-0CB3C0A71548.dita"><apiname>Secure Backup Engine</apiname></xref> as a passive backup client.
+This ensures the persistent schedules are backed up and restored.</p></abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Required background</title> <p>In a condition-based schedule,
+a condition can be user-defined or system condition. User defined conditions
+are published using Publish and Subscribe keys. For more information about
+Publish and Subscribe concept refer <xref href="GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita"> Publish
+and Subscribe.</xref>  </p> </section>
+<section><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>Task</dt>
+<dd><p>The execution of an application or program. </p> </dd>
+</dlentry>
+<dlentry>
+<dt> Schedule</dt>
+<dd><p>A plan for performing a task. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Persistent Schedule</dt>
+<dd><p>The lifetime of a persistent schedule is not limited to the lifetime
+of the tasks associated with it. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Transient Schedule</dt>
+<dd><p>A Transient schedule is created with a new scheduled task and is destroyed
+on task destruction. Transient schedules and tasks are not persisted on disk-based
+storage. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Time-based Schedule</dt>
+<dd><p>A Time-based schedule contains one or more tasks that are due for execution
+at a specified time. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Condition-based Schedule</dt>
+<dd><p>A condition-based schedule contains one or more tasks which are executed
+when either a set of certin Publish and Subscribe conditions are met or a
+default time-out is reached. </p> </dd>
+</dlentry>
+<dlentry>
+<dt> Home-Time based Schedule</dt>
+<dd><p>A home-time based schedule occur at a given local time. Local time
+typically includes changes for time zone and DST. These schedules are referred
+to as ‘floating’ schedules. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Daylight Saving Time (DST)</dt>
+<dd><p>Daylight Saving Time (or summertime as it is called in many countries)
+is a way of utilizing more daylight by advancing the local time by one hour
+during the summer. </p> </dd>
+</dlentry>
+<dlentry>
+<dt> Coordinated Universal Time (UTC) </dt>
+<dd><p>UTC is independent of location. UTC-based schedules occur at a given
+UTC time regardless of the local time. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>The task scheduler is a permanent
+server. It is automatically started when the phone boots or reboots and does
+not shutdown while the phone is running. If the server fails, and cannot be
+automatically restarted, the phone restarts automatically. Persistent schedules
+are stored the permanent file store. Transient schedules are lost if the server
+fails. </p> <p>A client must register with the task scheduler before it can
+schedule a task. </p> </section>
+<section><title>APIs</title> <p>The main APIs of the task scheduler are: </p> <table id="GUID-827B6362-E8E1-5EA3-937F-E655CCEB97D2">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-049FF2D7-8444-3E87-BF2F-DD0EA9B10ED0.dita"><apiname>CScheduledTask</apiname></xref>  </p> </entry>
+<entry><p>A scheduled task </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita"><apiname>RScheduler</apiname></xref>  </p> </entry>
+<entry><p>The client side interface to the Task Scheduler. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The main uses of the task scheduler
+are: </p> <ul>
+<li id="GUID-5A6433D7-73AC-5FCA-AF14-60DFFBA69545"><p>Schedule a sequence
+of tasks to be executed based on time. </p> </li>
+<li id="GUID-F8F7BF9A-A42F-5C1F-A6E3-4DEA2202B4FE"><p>Schedule a sequence
+of tasks to be executed based on conditions. </p> </li>
+</ul> <p>For more information about using the task scheduler APIs, see the <xref href="GUID-74C1C345-823C-5CD5-8FC5-214A55734E94.dita">Developing Programs with
+Task Scheduling Capabilities</xref> section. </p> </section>
+<section><title>See also</title> <p><xref href="GUID-00363030-AAE2-5231-8407-AC609DA0F496.dita">Backup
+and Restore on Scheduled Tasks in Persistent Schedules</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3CE3D01D-3EA1-5D44-B9DE-350F9E88F9C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3CE3D01D-3EA1-5D44-B9DE-350F9E88F9C9"><title>Structure of paths and filenames</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A full filename consists of four components:</p> <ul><li id="GUID-FA2E4BB1-3228-5E88-8F78-0BF7EAB14E8B"><p>the drive: a single letter followed by a colon.</p> </li> <li id="GUID-E98DCE36-6BFA-57E4-A03F-8CAB1CE587D1"><p>the path, starting with a backslash and ending with the final backslash in the name. The backslashes divide the path into components.</p> </li> <li id="GUID-32B125E6-9328-5AF0-AEBE-9D64CA801B61"><p>the file name: everything from the character following the last backslash to the character preceding the final dot.</p> </li> <li id="GUID-33B61BC0-F53C-5D50-840A-1EB1B6015227"><p>the extension, which consists of everything after the final dot.</p> </li> </ul> <p>In "8.3" filing systems such as FAT, the meanings of these components are well understood. In non-8.3 systems, the mapping is straightforward, except for the split of the final component of the name between filename and extension. The rule is that anything following the final dot of this component is the extension, anything preceding it is the filename. If there is no dot, or nothing after the final dot, the entire component is the filename, and there is no extension.</p> <p>The following table shows some sample filenames and their component parts:</p> <table id="GUID-395954AC-FB20-5AED-89B2-ADC20F99E435"><tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><tbody><row><entry><p>Full name</p> </entry> <entry><p>Drive</p> </entry> <entry><p>Path</p> </entry> <entry><p>Filename</p> </entry> <entry><p>Extension</p> </entry> </row> <row><entry><p><filepath>d:\path\fn.ext</filepath> </p> </entry> <entry><p><filepath>d:</filepath> </p> </entry> <entry><p><filepath>\path\</filepath> </p> </entry> <entry><p><filepath>fn</filepath> </p> </entry> <entry><p><filepath>.ext</filepath> </p> </entry> </row> <row><entry><p><filepath>autoexec.bat</filepath> </p> </entry> <entry/><entry/><entry><p><filepath>autoexec</filepath> </p> </entry> <entry><p><filepath>.bat</filepath> </p> </entry> </row> <row><entry><p><filepath>c:\readme</filepath> </p> </entry> <entry><p><filepath>c:</filepath> </p> </entry> <entry><p>\</p> </entry> <entry><p><filepath>readme</filepath> </p> </entry> <entry/></row> <row><entry><p><filepath>c:readme</filepath> </p> </entry> <entry><p><filepath>c:</filepath> </p> </entry> <entry/><entry><p><filepath>readme</filepath> </p> </entry> <entry/></row> <row><entry><p><filepath>.profile</filepath> </p> </entry> <entry/><entry/><entry/><entry><p><filepath>.profile</filepath> </p> </entry> </row> <row><entry><p><filepath>..</filepath> </p> </entry> <entry/><entry/><entry><p><filepath>..</filepath> </p> </entry> <entry/></row> </tbody> </tgroup> </table> <p>Note that not all parts need be present. Note also that the directory navigators <filepath>..</filepath> and <filepath>.</filepath> are not an intrinsic part of the file system model, and are not therefore supported directly in names.</p> <p>A directory is identified by a trailing slash: thus, <filepath>c:\wrd\</filepath> indicates a directory, but <filepath>c:\wrd</filepath> indicates a file with no extension. This mandatory requirement allows parsing to function without ambiguity, and also without reference to any session with the file server.</p> <p>The classes described here are used to handle all filename parsing requirements in a uniform way. Because they handle the logic consistently, and because this logic contains some subtle rules, you should always use them rather than writing your own code.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3D10DAFD-BE83-4892-B5E0-2ED7CF047788.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3D10DAFD-BE83-4892-B5E0-2ED7CF047788" xml:lang="en"><title>UHEAP
+Markers and Panics in GLib-based Applications</title><shortdesc>The 2.10.x version of GLib has introduced a new type of memory
+allocator called slice allocator. These allocators allocate memory in page
+sizes even for a small request of something like 20 bytes. Once a huge chunk
+has been allocated, all the future memory requests are granted using the chunk
+that was allocated for the first memory request. Once the free pool runs out,
+another huge chunk is allocated.  </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Whenever the memory is freed using <codeph>g_slice_free1()</codeph>, the
+memory is not returned to the OS; instead it is maintained by GLib as free
+memory which is used to for future memory requests.  </p>
+<p>The following example explains the issue. The code given below uses slice
+allocators to allocate 10 bytes of memory using <codeph>g_slice_alloc()</codeph> and
+subsequently frees it using <codeph>g_slice_free1()</codeph>. The code panics
+at <codeph>__UHEAP_MARKEND</codeph>, although the memory that has been allocated
+has been deallocated. This is because all the allocated memory on the heap
+has not been deallocated. When the user calls <codeph>g_slice_free1()</codeph> to
+free up, the memory is not freed; instead, GLib will keep it as part of the
+free pool for future allocation.  </p>
+<codeblock xml:space="preserve">#include &lt;glib.h&gt;
+#include &lt;e32base.h&gt;
+
+int main()
+{
+  char *x;
+  __UHEAP_MARK;
+  x = (char *)g_slice_alloc(10);
+  g_slice_free1(10,x);
+  __UHEAP_MARKEND;
+  return 0;
+}
+</codeblock>
+<p>To get around this problem, define an environment variable <codeph>G_SLICE</codeph> and
+set it to “always-malloc”.</p>
+<note>It is necessary that this environment variable is set before any GLib
+call that can cause memory allocation. If the environment variable is set
+after any <codeph>g_slice*</codeph> APIs have been called either from the
+application code or from GLib library code, setting it has not effect.</note>
+<p>The code below demonstrates the usage.</p>
+<codeblock xml:space="preserve">#include &lt;glib.h&gt;
+#include &lt;e32base.h&gt;
+
+int main()
+{
+  char *x;
+  __UHEAP_MARK;
+ 	g_setenv("G_SLICE","always-malloc",1);
+  x = (char *)g_slice_alloc(10);
+  g_slice_free1(10,x);
+ __UHEAP_MARKEND;
+ return 0;
+}
+</codeblock>
+<note><codeph>G_SLICE</codeph> is just a debugging environment variable. Setting
+it to “always-malloc” can help in detecting memory leaks in application code.
+This setting need not and should not be done in the release code since doing
+it overrides the GLib memory allocation mechanism and hence may
+result in loss of efficiency. The slice allocators are used by other GLib
+APIs like <codeph>GList</codeph>, <codeph>GSList</codeph>, <codeph>GNode</codeph>,
+and so on. Thus setting the environment variable is necessary if the application
+makes use of any such APIs that might use slice allocators.</note>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e172746_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE"><title>Animation Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an overview of the Animation API, which third-parties can use to create Window Server plug-in DLLs to perform animations. </p> <section><title>Introduction</title> <p>An animation DLL performs drawing from within the Window Server thread. This makes the continuous updating of graphics possible, because the Window Server thread has high priority and is unlikely to be pre-empted by other threads. Animation DLLs can be used to create animation effects that rely on continual and fast graphic updates—for example, to make a clock second hand sweep smoothly. This approach might even be exploited for video-style animations although its intended use is for drawn rather than bitmap graphics. </p> <p>A distinction between animated graphics and animated bitmaps is worth making. The animation classes are intended primarily for line drawing based animation. Bitmaps can be animated using either the animation classes or sprites, but sprites are usually preferred. Sprites animate arbitrary bitmaps. Typical uses are for cursors, PacMan style games, and so on. Because the Window Server handles much of the complexity, sprites can be thought of as bulletproof. The animation classes on the other hand provide server side speed and great flexibility, but are more complex to use. </p> <p>It is possible to create animation effects using ordinary Window Server clients, for example using active objects on the client side to schedule graphics updates. However, these suffer from the (relatively) lower priority of the client thread and from the fact that active objects are non-preemptively scheduled, which means that the window update can be delayed by other client-side active objects. </p> <p>An animation DLL also provides accurate clock ticks. Suppose you require a one second timer to move the second hand on a clock. If you work on the client side, then drift occurs with the clock losing time very gradually. The animation DLL provides access to timers that do not suffer from this problem. </p> <p>The Animation classes form two pairs across the client/server boundary. One pair provides functions at DLL level and the other at the level of individual animation classes. To create an animation requires a DLL class and a class for each animated object. More accurately, a pair of classes is required for each, with each pair comprising one server side class and one client side class. </p> <p>This general mechanism allows client/server separation while also allowing client side classes to benefit from server side privilege—fast graphical updates made possible by the high priority of the server thread. </p> <p>For efficiency reasons, it makes sense to collect multiple animation classes into a single DLL, even if they are otherwise logically quite separate classes. </p> </section> <section><title>Architectural relationships</title> <p>This API defines a framework for polymorphic DLLs that perform animations. These animation DLLs plug in to the Window Server, and so are run in the Window Server's high-priority thread, rather than the application thread. </p> <p>The Window Server Client-Side API defines base classes for client interfaces that applications use to control animation DLLs. Providers of animation DLLs specialize these client interfaces appropriately. </p> </section> <section><title>Description</title> <p>The API has four key concepts: animation factory, animation base class, window animation base class, and sprite animation base class. </p> <p><b>Animation factory </b> </p> <p>Each animation DLL must define a factory for the animations it provides. The DLL must export at ordinal 1 a function to create an instance of this factory class. </p> <p>The base class for such factories is <xref href="GUID-9E598CDA-6483-3AE3-ABFF-0F701A47AB84.dita"><apiname>CAnimDll</apiname></xref>. </p> <p><b>Animation base class </b> </p> <p>Every animation implements an interface that is called by the Window Server to: </p> <ul><li id="GUID-9BECB813-B5C5-5ABB-A5D5-3191D0A69A48"><p>pass commands from clients </p> </li> <li id="GUID-F71ACC22-D872-5DF6-9F6A-089718C7FA08"><p>perform a step in the animation </p> </li> <li id="GUID-6B7EC297-617F-5745-856F-C4EF99F19E37"><p>pass Window Server events (if required), so that the animation can handle them before the application </p> </li> </ul> <p>This interface is <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref>, with its base class <xref href="GUID-F1B47E38-4585-3903-93C7-0BCB075465AA.dita"><apiname>MEventHandler</apiname></xref>. The operation to perform an animation step is called by the Window Server on a timer. The animation is informed if for any reason timer events are missed or become out of sync. The timing properties are set through an <xref href="GUID-FFE76181-A701-374B-82AA-CEACC5856E91.dita"><apiname>MAnimGeneralFunctions</apiname></xref> member (an abstract interface that is implemented by the Window Server). This also provides other utility functions. </p> <p><b>Window animation base class </b> </p> <p>For animations other than sprites, animation providers derive classes from the window animation base class, <xref href="GUID-70AB2433-00C7-3E49-BD6A-CC90E20DA7AE.dita"><apiname>CWindowAnim</apiname></xref>, based on <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref>. This adds access to an interface for querying and manipulating the window in which the animation takes place, <xref href="GUID-6FB00D2D-3CFB-3CD8-9081-2FBD0E4A9AAF.dita"><apiname>MAnimWindowFunctions</apiname></xref>. </p> <p>A further specialized base class allows animations to be provided that implement their own animation timers. This is <xref href="GUID-BC3E6CD0-4678-36F6-B4D3-AEE4C6672AAE.dita"><apiname>CFreeTimerWindowAnim</apiname></xref>, based on <xref href="GUID-70AB2433-00C7-3E49-BD6A-CC90E20DA7AE.dita"><apiname>CWindowAnim</apiname></xref>, with related utility functions provided by <xref href="GUID-97545C9D-7CC7-36CB-851C-2CD272CA8EFD.dita"><apiname>MAnimFreeTimerWindowFunctions</apiname></xref>. </p> <p><b>Sprite animation base class </b> </p> <p>Sprites are bitmaps that can overlay a window. A sprite animation can be provided by deriving a class from <xref href="GUID-D49CF183-BD61-3E3E-A77F-C63845E6F0DF.dita"><apiname>CSpriteAnim</apiname></xref>, based on <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref>. This adds access to an interface for querying and manipulating a sprite, <xref href="GUID-F1DC2E39-9AB1-397A-BEDD-036BB6C54EC4.dita"><apiname>MAnimSpriteFunctions</apiname></xref>. </p> </section> </conbody><related-links><link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3D73DD8F-8D23-5D47-A4F7-3673C993EF8F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,550 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3D73DD8F-8D23-5D47-A4F7-3673C993EF8F" xml:lang="en"><title>Using
+TDes8 Class</title><shortdesc>Use TDes8 for Interfaces which take binary data or narrow text
+regardless of the build variant.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-8A5FCFAB-9D4A-540B-8958-0B5F43430F51"><title>Using in a
+function interface</title> <p>An interface which needs to access and modify
+binary data or explicit narrow text, regardless of the build variant, uses
+a <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref> as the argument type. All 8 bit
+concrete descriptors are derived from <codeph>TDes8</codeph> which means that
+the interface can accept any 8 bit descriptor.</p> <p>The following code fragment
+shows the most common function prototype pattern.</p> <codeblock id="GUID-937968D8-75F4-57ED-827E-14204E558F6D" xml:space="preserve">void ClassX::foo(TDes8&amp; anArg);</codeblock> <p>The use of <codeph>TDes8</codeph> means that data can be accessed and
+modified through the descriptor.</p> <p>In practice, nearly all code uses
+the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>, unless
+an explicit 8 bit or 16 bit build variant is required.</p> </section>
+<section id="GUID-3D6C304C-E139-5090-BB8C-D05C234C954B"><title>Accessing individual
+data items</title> <p>The code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>operator[]()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref>.</p> <codeblock id="GUID-42F88AC7-8A5D-5B00-A146-22B27651328D" xml:space="preserve">_LIT8(KAtoG,"abcdefg");
+TChar ch;
+...
+str.Length();           // returns 7
+ch = str[0];            // ch contains the character 'a'
+ch = str[3];            // ch contains the character 'd'
+...
+str[0] = 'z';           // changes str to "zbcdefg"
+str[3] = 'z';           // changes str to "abczefg"
+...
+ch = str[7];            // Panic !!
+str[7] = 'z';           // Panic !!_LIT8(KAtoG,"abcdefg");</codeblock> </section>
+<section id="GUID-7C724770-09D1-5216-8FF1-BD7D6158F9EF"><title>Copying data</title> <p>The
+code fragment shows the <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Copy()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-46E1E65D-7F2C-5CCB-9DC3-788B03782521" xml:space="preserve">_LIT8(Kabcdefg,"abcdefg");
+_LIT8(Kabc,"abc");
+_LIT8(Kabcdefghi,"abcdefghi");
+...
+TBuf8&lt;8&gt; str;
+...
+str.Copy(Kabcdefg);     // copies "abcdefg" to str
+str.Length();           // returns 7
+str.MaxLength();        // returns 8
+...
+str.Copy(Kabc);         // copies "abc" to str
+str.Length();           // returns 3
+str.MaxLength();        // returns 8
+...
+str.Copy(Kabcdefghi));  // Panics !!
+...
+</codeblock> </section>
+<section id="GUID-A1F3A661-54AD-5392-8633-0F8745EE1953"><title>Copying data
+with repetition</title> <p>The code fragment shows the <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Repeat()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-82594D00-50EA-54D8-AC4F-05A9D3DE6F7D" xml:space="preserve">_LIT8(Kab,"ab");
+_LIT8(Kabc,"abc");
+_LIT8(Kabcde,"abcde");
+...
+TBuf8&lt;8&gt; tgt(8);            // length of tgt is the same as the
+...                         // maximum which is 8
+...                         // following strings generated in tgt
+...
+tgt.Repeat(Kab);            // "abababab"
+tgt.Repeat(Kabc);           // "abcabcab"
+tgt.Repeat(Kabcde);         // "abcdeabc"
+...
+...                         // changing length to 7 has the
+...                         // following effect
+tgt.SetLength(7);
+tgt.Repeat(Kab);            // "abababa"
+tgt.Repeat(Kabc);           // "abcabca"
+tgt.Repeat(Kabcde);         // "abcdeab"</codeblock> </section>
+<section id="GUID-EED99668-9259-5802-A603-C17DF1F8DFA4"><title>Copying data
+and justifying</title> <p>The code fragments show the<xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Justify()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-8F124889-1DB8-581A-BD7B-533F9429D1DD" xml:space="preserve">_LIT8(Kabc,"abc");
+TBuf8&lt;16&gt; tgt(Kabc);
+...
+tgt.Justify(_L("xyz"),8,ECenter,'@');</codeblock> <p>The descriptor <codeph>tgt</codeph> has
+a maximum length of 16 and initially holds the string "<codeph>abc</codeph>".
+After the call to <codeph>Justify()</codeph>, the content of <codeph>tgt</codeph> changes
+to <codeph>"@@xyz@@@</codeph>".</p> <p>The content of the source descriptor
+is taken to form a field of length 8 which replaces the original content of
+the descriptor <codeph>tgt</codeph>. The characters "<codeph>xyz</codeph>"
+are centred within the new field and padded on both sides with the fill character <codeph>'@'.</codeph></p> <p>Setting
+the alignment to <codeph>ELeft</codeph> would change the content of <codeph>tgt</codeph> to
+"<codeph>xyz@@@@@</codeph>" while setting the alignment to <codeph>ERight</codeph> would
+change the content of <codeph>tgt</codeph> to "<codeph>@@@@@xyz</codeph>"</p> <p>In
+all three cases, the length of the descriptor <codeph>tgt</codeph> changes
+from 3 to 8.</p> <codeblock id="GUID-B4FC6164-2F2A-528E-B803-36B58D13F969" xml:space="preserve">_LIT8(Kabc,"abc");
+_LIT8(Kxyz,"xyz");
+TBuf8&lt;8&gt; tgt(Kabc);
+...
+tgt.Justify(Kxyz,9,ECenter,'@');</codeblock> <p>This call to <codeph>Justify()</codeph> panics
+because the resulting length of data in <codeph>tgt</codeph> exceeds the maximum
+length of <codeph>tgt</codeph>.</p> <codeblock id="GUID-2F3201CD-B184-5338-9715-BD6166AA6F9A" xml:space="preserve">_LIT8(Kabc,"abc");
+_LIT8(KRtoZ,"rstuvwxyz");
+TBuf8&lt;16&gt; tgt(Kabc);
+...
+tgt.Justify(KRtoZ,8,ECenter,'@');</codeblock> <p>In this call to <codeph>Justify()</codeph>,
+the content of <codeph>tgt</codeph> changes to "<codeph>rstuvwxy</codeph>".
+Only eight of the nine characters in the source literal <codeph>KRtoZ</codeph> are
+copied.</p> </section>
+<section id="GUID-B33F6D5B-05BB-5DCA-99B3-52C0A68D3128"><title>Copying conversion
+from signed integer to decimal character</title> <p>The following code fragment
+illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Num()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-329B25B1-DAAB-5CDC-99CF-9CDDB75D8E9F" xml:space="preserve">TBuf8&lt;16&gt; tgt;
+...
+TInt numpos(176);
+TInt numneg(-176);
+..                      // generates the following strings:
+tgt.Num(numpos);        // "176"
+tgt.Num(numneg);        // "-176"</codeblock> </section>
+<section id="GUID-2F66C889-8980-5AE3-BB9C-44C3939D7FD5"><title>Copying conversion
+from unsigned integer to specified number system</title> <p>The following
+code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Num()</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>NumUC()</apiname></xref>.</p> <p>The behaviour is the same for the
+build independent variant,<xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with<xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-07EF83DC-361B-5B24-9A64-9021F5350CC9" xml:space="preserve">TBuf8&lt;16&gt; tgt;               // generates the following strings:
+...
+TUint number(170);
+...
+tgt.Num(number,EBinary);    // "10101010"
+tgt.Num(number,EOctal);     // "252"
+tgt.Num(number,EDecimal);   // "170"
+tgt.Num(number,EHex);       // "aa"   &lt;-NB hex value in lower case
+tgt.NumUC(number,EHex);     // "AA"   &lt;-NB hex value in UPPER case
+tgt.Num(number);            // "170"  &lt;--EDecimal taken as default</codeblock> </section>
+<section id="GUID-3CECD3B4-D14D-5983-9FD5-576D0950389B"><title>Formatting
+text</title> <p>The following code fragments illustrate the various possibilities
+of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Format()</apiname></xref>.</p> <p>The behaviour is the
+same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-0F649A7F-7192-5144-AF0C-B4FAA7FE9364" xml:space="preserve">TBuf8&lt;256&gt; tgt;
+...
+_LIT8(KFormat1,"[%b %c %d %o %u %x]");
+tgt.Format(KFormat1,65,65,65,65,65,65);//generates:
+...                                  //[1000001 A 65 101 65 41]
+...
+_LIT8(KFormat2,"[%04x]");           // pad char="0", field width=4
+tgt.Format(KFormat2,65);             //generates:
+...                                  //[0041]
+...
+_LIT8(KFormat3,"[%4x]");            // pad char=default, field width=4
+tgt.Format(KFormat3,65);             //generates:
+...                                  //[  41]
+...                                  // Note use of blanks as default pad chars.
+...
+_LIT8(KFormat4,"[%*x]");            // fixed field width, taken from the arguments list
+tgt.Format(KFormat4,4,65);           //generates:
+...                                  //[  41]
+...
+...
+_LIT8(KFormat5,"[%+$4d.00 %S]");    // pad char="$", field width=4, right aligned
+_LIT8(KOver,"over");                
+tgt.Format(KFormat5,65,&amp;KOver);      //generates:
+...                                  //[$$65.00 over]
+...
+_LIT8(KFormat6,"[%+4d.00 %S]");     // pad char=default, field width=4
+tgt.Format(KFormat6,65,&amp;KOver);      //generates:
+...                                  //[  65.00 over]
+...                                  //   note no pad char specified, defaults
+...                                  //   to blank
+...
+_LIT8(KFormat7,"[% 4d.00 %S]");     // pad char=" ", field width=4, alignment=default
+tgt.Format(KFormat7,65,&amp;KOver);      //generates:
+...                                  //[  65.00 over]
+...                                  //   note default right hand alignment and
+...                                  //   blank pad char
+...
+_LIT8(KFormat8,"[%+0*S]");          // right aligned, pad char="0", fixed field width
+_LIT8(KFred,"fred");                
+tgt.Format(KFormat8,10,&amp;KFred);      //generates:
+...                                  //[000000fred]
+...                                  // Note - 10 characters generated
+...
+_LIT8(KFormat9,"[%=*6x]");          // centre aligned, pad char taken from arguments list, field width=6
+tgt.Format(KFormat9,'*',65);         //generates:
+...                                  //[**41**]
+...
+_LIT8(KFormat10,"[%+**d]");         // right aligned, pad char and field width taken from arguments list
+tgt.Format(KFormat10,'.',10,(-65));  //generates:
+...                                  //[.......-65]
+...
+_LIT8(KFormat11,"[%-A4p]");         // left aligned, field width=4, pad char="A"
+tgt.Format(KFormat11,65);            //generates:
+...                                  //[AAAA]
+...                                  //   and makes no use of the argument list
+...
+_LIT8(KFormat12,"[%m]");            //generates:
+tgt.Format(KFormat12,4660);          //   the char '['
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by the char ']'
+_LIT8(KFormat13,"[%M]")
+tgt.Format(KFormat13,4660);          //generates:
+...                                  //   the char '['
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by the char ']'
+...
+_LIT8(KFormat14,"[%w]");            //generates:
+tgt.Format(KFormat14,4660);          //   the char '['
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by the char ']'
+..
+_LIT8(KFormat15,"[%w]");            //generates:
+tgt.Format(KFormat15,4660);          //   the char '['
+...                                  //   followed by a byte with 0x34
+...                                  //   followed by a byte with 0x12
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by a byte with 0x00
+...                                  //   followed by the char ']'
+...
+_LIT8(KFormat16,"[%6.2e]");         
+tgt.Format(KFormat16,3.4555);        //generates:
+...                                  //[3.46E+00]
+_LIT8(KFormat17,"[%6.2f]");         
+tgt.Format(KFormat17,3.4555);        //generates:
+...                                  //[  3.46]
+_LIT8(KFormat18,"[%6.2g]");         
+tgt.Format(KFormat18,3.4555);        //generates:
+...                                  //[3.4555]
+...
+// Variable  argument positions
+_LIT8(KFormat19,"[%d %d]");          // implicit ordering
+tgt.Format(KFormat19,9,5);           // generates:
+...                                  // [9 5]
+...
+_LIT8(KFormat20,"[%$2$d %$1$d]");    // explicit ordering
+tgt.Format(KFormat20,9,5);           // generates:
+...                                  // [5 9]
+...
+_LIT8(KFormat21,"[%$1$d %$2$d]");    // explicit ordering (same as the implicit order)
+tgt.Format(KFormat21,9,5);           // generates:
+...                                  // [9 5]
+
+// Using argument blocks (a many-to-one mapping between arguments and conversion specifiers)
+_LIT8(KFormat22,"[%0*d %d %d]");     // implicit ordering
+tgt.Format(KFormat22,3,9,5,12);      // generates:
+...                                  // [009 5 12]
+...
+_LIT8(KFormat23,"[%$2$d %$1$0*d %d]"); // mixed explicit and implicit ordering
+tgt.Format(KFormat23,3,9,5,12);      // generates:
+...                                  // [5 009 12]
+...                                  
+_LIT8(KFormat24,"[%$3$d %$1$0*d %$2$d]"); // explicit ordering
+tgt.Format(KFormat24,3,9,5,12);      // generates:
+...                                  // [12 009 5]
+
+
+
+</codeblock> </section>
+<section id="GUID-DB6927AD-8B34-50CA-AECE-7A679E78854E"><title>Inserting data</title> <p>The
+code fragment shows the <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Insert()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-FE56DF6A-84AA-5A9F-93B6-EEFFA75B76CD" xml:space="preserve">_LIT8(Kabc,"abc")
+_LIT8(KUVWXYZ,"UVWXYZ")
+_LIT8(KVWXYZ,"VWXYZ")
+_LIT8(KWXYZ,"WXYZ")
+_LIT8(KXYZ,"XYZ)
+...
+TBuf8&lt;8&gt; tgt(3);
+...                              // generates the strings:
+tgt = Kabc;
+tgt.Insert(0,kXYZ);              // "XYZabc"
+...
+tgt = Kabc;
+tgt.Insert(1,KXYZ);              // "aXYZbc"
+...
+tgt = Kabc;
+tgt.Insert(tgt.Length(),KXYZ);   // "abcXYZ"
+...
+tgt = Kabc;
+tgt.Insert(tgt.Length()+1,KXYZ); // ----&gt; Panic !!
+...
+tgt = Kabc;
+tgt.Insert(1,KWXYZ);             // "aWXYZbc"
+...
+tgt = Kabc;
+tgt.Insert(1,KVWXYZ);            // "aVWXYZbc"
+...
+tgt = Kabc;
+tgt.Insert(1,KUVWXYZ);           // ----&gt; Panic !!</codeblock> </section>
+<section id="GUID-3E97AA91-4E41-5D30-8D21-61A54A1DEDF5"><title>Replacing data</title> <p>The
+following code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Replace()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-D77F510D-F6C9-5AB8-B749-5D48E6D754A3" xml:space="preserve">_LIT8(Kabcd,"abcd");
+_LIT8(Ku,"u");
+_LIT8(Kuv,"uv");
+_LIT8(Kuvw,"uvw");
+_LIT8(Kuvwxyz,"uvwxyz");
+...
+TBuf8&lt;8&gt; tgt(4);
+...                         // generates the strings:
+tgt = Kabcd;
+tgt.Replace(0,1,Ku));       // "ubcd"
+...
+tgt = Kabcd;
+tgt.Replace(0,1,Kuv);       // "uvbcd"
+...
+tgt = Kabcd;
+tgt.Replace(0,1,Kuvw);      // "uvwbcd"
+...
+tgt = Kabcd;
+tgt.Replace(0,1,Kuvwxyz);   // ----&gt; Panics !!
+...
+tgt = Kabcd;
+tgt.Replace(1,2,Ku);        // "aud"
+...
+tgt = Kabcd;
+tgt.Replace(1,2,KNullDesC8);// "ad"
+...
+tgt = Kabcd;
+tgt.Replace(1,4,Kuvw);      // ----&gt; Panics !!
+...
+tgt = Kabcd;
+tgt.Replace(3,1,Kuvw);      // "abcuvw"
+...
+tgt = Kabcd;
+tgt.Replace(4,0,Kuvw);      // "abcduvw"</codeblock> </section>
+<section id="GUID-9CB5C056-52ED-5307-BA3A-65C3EA99B910"><title>Swapping data</title> <p>This
+code fragment shows the <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Swap()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-C99E6295-EFAC-5B7A-8C01-81D776C64A60" xml:space="preserve">_LIT8(Kabcde,"abcde");
+_LIT8(Kxyz,"xyz");
+_LIT8(K0to9,"0123456789");
+...
+TBuf8&lt;8&gt;  buf1(Kabcde);
+TBuf8&lt;8&gt;  buf2(Kxyz);
+TBuf8&lt;16&gt; buf3(K0to9);
+...
+buf1.Swap(buf2);    // contents of buf1 and buf2 swapped OK
+buf1.Swap(buf3);    // Panic !!</codeblock> </section>
+<section id="GUID-BD7F7862-5C75-52EF-9EF6-5DAC40E7541F"><title>Deleting data</title> <p>The
+following code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Delete()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-F086BB7B-A027-5B3E-B38A-17903D0D813C" xml:space="preserve">_LIT8(Kabcd,"abcd");
+...
+TBuf8&lt;8&gt; tgt(4);
+...                          // generates the strings:
+tgt = Kabcd;
+tgt.Delete(0,1);             // "bcd"
+...
+tgt = Kabcd;
+tgt.Delete(0,2);             // "cd"
+...
+tgt = Kabcd;
+tgt.Delete(0,4);             // ""
+...
+tgt = Kabcd;
+tgt.Delete(1,2);             // "ad"
+...
+tgt = Kabcd;
+tgt.Delete(2,2);             // "ab"
+...
+tgt = Kabcd;
+tgt.Delete(2,3);             // "ab"
+...
+tgt = Kabcd;
+tgt.Delete(2,256);           // "ab"
+...
+tgt = Kabcd;
+tgt.Delete(5,1);             // ----&gt; Panics !!
+...
+tgt = Kabcd;
+tgt.Delete(-1,1);            // ----&gt; Panics !!</codeblock> </section>
+<section id="GUID-31B39F0B-09A0-5638-95DB-2B448D5572D4"><title>Deleting leading
+spaces</title> <p>The following code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TrimLeft()</apiname></xref>.</p> <p>The behaviour is the same for
+the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-73F86C72-1009-5671-9AB1-1B96338C842D" xml:space="preserve">_LIT8(KData1,"  abcd  ");
+_LIT8(KData2," a b ");
+...
+TBuf8&lt;8&gt; str1(KData1);
+TBuf8&lt;8&gt; str2(KData2);
+...
+str1.Length();          // returns 8
+str1.TrimLeft();        // "abcd  "
+str1.Length();          // returns 6
+...
+str2.Length();          // returns 5
+str2.TrimLeft();        // "a b "
+str2.Length();          // returns 4</codeblock> </section>
+<section id="GUID-F7BAEAAE-C9DF-51CF-A0C9-5134D2DA67D5"><title>Deleting trailing
+spaces</title> <p>The following code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TrimRight()</apiname></xref>.</p> <p>The behaviour is the same for
+the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-EF8C715B-8B19-512B-9C97-9BB3F626A2E6" xml:space="preserve">_LIT8(KData1,"  abcd  ");
+_LIT8(KData2," a b ");
+...
+TBuf8&lt;8&gt; str1(KData1);
+TBuf8&lt;8&gt; str2(KData2);
+...
+str1.Length();          // returns 8
+str1.TrimRight();       // "  abcd"
+str1.Length();          // returns 6
+...
+str2.Length();          // returns 5
+str2.TrimRight();       // " a b"
+str2.Length();          // returns 4</codeblock> </section>
+<section id="GUID-51B37E69-860A-55E0-BD25-C618128BB91C"><title>Deleting leading
+and trailing spaces</title> <p>The following code fragment illustrates the
+use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>Trim()</apiname></xref>.</p> <p>The behaviour is the
+same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-D1483F81-72DA-5B7D-8643-148789B14943" xml:space="preserve">_LIT8(KData1,"  abcd  ");
+_LIT8(KData2," a b ");
+...
+TBuf8&lt;8&gt; str1(KData1);
+TBuf8&lt;8&gt; str2(KData2);
+...
+str1.Length();          // returns 8
+str1.Trim();            // "abcd"
+str1.Length();          // returns 4
+...
+str2.Length();          // returns 5
+str2.Trim();            // "a b"
+str2.Length();          // returns 3</codeblock> </section>
+<section id="GUID-CD96A766-8420-5E4C-AFA5-42F1A282C510"><title>Deleting leading,
+trailing and internal spaces</title> <p>The following code fragment illustrates
+the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TrimAll()</apiname></xref>.</p> <p>The behaviour
+is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-91501E4D-C9D1-55F0-A9E0-82B547C0BFEB" xml:space="preserve">_LIT8(KData1,"  abcd  ");
+_LIT8(KData2," a b ");
+_LIT8(KData3,"a  b   c");
+...
+TBuf8&lt;8&gt; str1(KData1);
+TBuf8&lt;8&gt; str2(KData2);
+TBuf8&lt;8&gt; str2(KData3);
+...
+str1.Length();          // returns 8
+str1.TrimAll();         // "abcd"
+str1.Length();          // returns 4
+...
+str2.Length();          // returns 5
+str2.TrimAll();         // "a b"
+str2.Length();          // returns 3
+...
+str3.Length();          // returns 8
+str3.TrimAll();         // "a b c"
+str3.Length();          // returns 5</codeblock> </section>
+<section id="GUID-6565F27E-E838-55C8-AF8C-FEA23DBDD83B"><title>Append and
+justify</title> <p>The following code fragments illustrate the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendJustify()</apiname></xref>.</p> <p>The behaviour is the same
+for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-819F6F50-FB02-56F0-AC60-7A109498DD74" xml:space="preserve">_LIT8(Kabc,"abc");
+_LIT8(Kxyz, "xyz");
+...
+TBuf8&lt;16&gt; tgt(Kabc);
+tgt.AppendJustify(Kxyz,8,ECenter,'@');</codeblock> <p>The descriptor <codeph>tgt</codeph> has
+a maximum length of 16 and initially holds the string "<codeph>abc</codeph>".
+After the call to <codeph>AppendJustify()</codeph>, the content of <codeph>tgt</codeph> changes
+to "<codeph>abc@@xyz@@@</codeph>".</p> <p>The content of the source descriptor <codeph>Kxyz</codeph> is
+taken to form a field of length 8 which is appended to the content of the
+descriptor <codeph>tgt</codeph>. The characters "<codeph>xyz</codeph>" are
+centred within the new field and padded on both sides with the fill character <codeph>'@'.</codeph></p> <p>Setting
+the alignment to <codeph>ELeft</codeph> would change the content of <codeph>tgt</codeph> to
+"<codeph>abcxyz@@@@@</codeph>" while setting the alignment to <codeph>ERight</codeph> would
+change the content of <codeph>tgt</codeph> to "<codeph>abc@@@@@xyz</codeph>".</p> <p>In
+all three cases, the length of the descriptor <codeph>tgt</codeph> changes
+from 3 to 11.</p> <codeblock id="GUID-2B2D253F-F4D2-5FE4-90CE-3B352246ECB2" xml:space="preserve">_LIT8(KAtoK,"abcdefghik");
+_LIT8(K0to6,"0123456");
+...
+TBuf8&lt;16&gt; tgt(KAtoK);
+tgt.AppendJustify(K0to6,7,ECenter,'@');</codeblock> <p>This call to <codeph>AppendJustify()</codeph> panics
+because the resulting length of <codeph>tgt</codeph> exceeds its maximum length.</p> </section>
+<section id="GUID-88473872-CF3A-5D4E-A6F5-24B2F3AE6FF1"><title>Append and
+justify with explicit length</title> <p>The following code fragments illustrate
+the use of the overloaded version of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendJustify()</apiname></xref> which
+specifies an explicit length.</p> <p>The behaviour is the same for the build
+independent variant,<xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-60769FA9-213E-5332-8E47-AA75FB94826C" xml:space="preserve">_LIT8(Kabc,"abc");
+_LIT8(Kxyz0to9,"xyz0123456789");
+...
+TBuf8&lt;16&gt; tgt(Kabc);
+tgt.AppendJustify(Kxyz0to9,3,8,ECenter,'@');</codeblock> <p>The descriptor <codeph>tgt</codeph> has
+a maximum length of 16 and initially holds the string "<codeph>abc</codeph>".
+After the call to <codeph>AppendJustify()</codeph>, the content of <codeph>tgt</codeph> changes
+to "<codeph>abc@@xyz@@@</codeph>".</p> <p>In this example, the first three
+characters of the eleven characters "xyz0123456789" are taken to form an eight
+character field which is appended to the existing content of the descriptor <codeph>tgt</codeph>.
+The three characters "<codeph>xyz</codeph>" are centred within the new field
+and padded on both sides with the fill character <codeph>'@'.</codeph></p> <p>Setting
+the alignment to <codeph>ELeft</codeph> would change the content of <codeph>tgt</codeph> to
+"<codeph>abcxyz@@@@@</codeph>" while setting the alignment to <codeph>ERight</codeph> would
+change the content of <codeph>tgt</codeph> to "<codeph>abc@@@@@xyz</codeph>".</p> <p>In
+all three cases, the length of the descriptor <codeph>tgt</codeph> changes
+from 3 to 11.</p> <codeblock id="GUID-52D44BB4-6FBE-5693-82F0-FEBB1E416B5D" xml:space="preserve">_LIT8(Kabc,"abc");
+_LIT8(K0to9,"0123456789");
+...
+TBuf8&lt;16&gt; tgt(Kabc);
+tgt.AppendJustify(K0to9,9,8,ECenter,'@');</codeblock> <p>In this example,
+the call to <codeph>AppendJustify()</codeph> changes the content of <codeph>tgt</codeph> to
+"<codeph>abc01234567</codeph>". As the specified length is greater than the
+specified width, the length is truncated so that only eight characters are
+copied from the source descriptor.</p> <codeblock id="GUID-2AC4FE0B-0E59-5CBA-9CEB-52BE8852645D" xml:space="preserve">_LIT8(KAtoK,"abcdefghik");
+_LIT8(K0to9,"0123456789");
+...
+TBuf8&lt;16&gt; tgt(KAtoK);
+tgt.AppendJustify(K0to9,3,7,ECenter,'@');</codeblock> <p>This call to <codeph>AppendJustify()</codeph> panics
+because the resulting length of <codeph>tgt</codeph> exceeds its maximum length.</p> </section>
+<section id="GUID-E25AD363-D025-549A-A768-E669054B276A"><title>Append data
+operator</title> <p>The following code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>operator+=()</apiname></xref>.</p> <codeblock id="GUID-F445ADA1-82E5-5612-8342-32F67C21B0F5" xml:space="preserve">_LIT8(Kabc,"abc");
+TBuf8&lt;16&gt; tgt(Kabc);
+...
+tgt+=(_L("0123456789"));         // generates "abc0123456789"
+tgt+=(_L("0123456789qwerty"));   // Panics !!</codeblock> </section>
+<section id="GUID-D8FE4EAA-40B1-5B60-8B3D-0DD4FF0EC01A"><title>Append conversion
+from signed integer to decimal character</title> <p>The following code fragment
+illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendNum()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-C9DA1F31-97FD-5B14-90A2-4A129D95C1A0" xml:space="preserve">_LIT8(Kabc,"abc");
+TInt numpos(176);
+TInt numneg(-176);
+...
+TBuf8&lt;16&gt; tgt(Kabc));        // generates the following strings:
+tgt.AppendNum(numpos);       // "abc176"
+tgt.AppendNum(numneg);       // "abc-176"</codeblock> </section>
+<section id="GUID-73D28A65-48E9-5E77-8BEF-CCAE312AC7D3"><title>Append conversion
+from unsigned integer to specified number system</title> <p>The following
+code fragment illustrates the use of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendNum()</apiname></xref> and<xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendNumUC()</apiname></xref>.</p> <p>The behaviour is the same for
+the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>, replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-1FABB0D8-205F-53C6-82A5-2CE70373E6CC" xml:space="preserve">_LIT8(Kabc,"abc");
+TBuf8&lt;16&gt; tgt(Kabc);        // generates the following strings:
+...
+TUint num(170);
+...
+tgt.AppendNum(num,EBinary); // "abc10101010"
+tgt.AppendNum(num,EOctal);  // "abc252"
+tgt.AppendNum(num,EDecimal);// "abc170"
+tgt.AppendNum(num,EHex);    // "abcaa"   &lt;-hex value in lower case
+tgt.AppendNumUC(num,EHex);  // "abcAA"   &lt;-hex value in UPPER case
+tgt.AppendNum(num);         // "abc170"  &lt;-EDecimal taken as default</codeblock> </section>
+<section id="GUID-7CF714F2-9691-59E2-8178-25D7EC290117"><title>Append fixed
+width conversion</title> <p>The following code fragment illustrates the use
+of <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendNumFixedWidth()</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>AppendNumFixedWidthUC()</apiname></xref>.</p> <p>The
+behaviour is the same for the build independent variant, <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes</apiname></xref>,
+replacing <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>_LIT</apiname></xref> and <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf8</apiname></xref> with <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TBuf</apiname></xref>.</p> <codeblock id="GUID-B5997983-347D-5F85-B7D7-952A9BD170CE" xml:space="preserve">_LIT8(Kabc,"abc");
+TBuf8&lt;16&gt; tgt(Kabc);        // generates the following strings:
+...
+TUint num(170)
+...
+tgt.AppendNumFixedWidth(num,EBinary,8);    // "abc10101010"
+tgt.AppendNumFixedWidth(num,EOctal,8);     // "abc00000252"
+tgt.AppendNumFixedWidth(num,EDecimal,8);   // "abc00000170"
+tgt.AppendNumFixedWidth(num,EHex,8);       // "abc000000aa"
+tgt.AppendNumFixedWidthUC(num,EHex,8);     // "abc000000AA"</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e63035_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930"><title>Image Conversion Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Image Conversion functionality. </p> <section id="GUID-5BECDECD-C1EC-5579-BE91-8F8004CD0DC4"><title>Purpose</title> <p>Image Conversion functionality supports many features like encoding, decoding, scaling, rotating, producing mirror image, flipping and cropping images. </p> <p><b>Image Conversion Library Details</b> </p> <p>To use Image Conversion, you must obtain necessary binaries in the form of DLL file to implement the image encoding and the image decoding functions. </p> <table id="GUID-0F5A5EF5-1839-5A5A-9DCC-3A58CB33A62F"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath>imageconversion.dll</filepath>  </p> </entry> <entry><p> <filepath>imageconversion.lib</filepath>  </p> </entry> <entry><p>These files are used for implementing image conversion operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Image Conversion is primarily used for Image Encoding and Image Decoding. The following diagram shows how the Image Encoding and the Image Decoding interacts with other components. </p> <fig id="GUID-D7706AA7-F1A9-5D87-B9D6-760FB7D7E906"><title>
+             Image Conversion system diagram 
+          </title> <image href="GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e281230_href.png" placement="inline"/></fig> </section> <section><title>Description</title> <p>The Image conversion provides several features to enable the conversion and basic manipulation of images. Conversions can be made from images stored in files or descriptors to <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> objects, or from <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> and <xref href="GUID-27B63129-ABD9-3B6C-882B-6F4501AF8E15.dita"><apiname>CFrameImageData</apiname></xref> objects to files or descriptors. Features of the image conversion function include: </p> <ul><li id="GUID-EA49D943-5B10-56C0-9AE3-5F73283CEB8E"><p>Standard decoders that can decode single or multiframe images, images with bitmasks, images with in-image or in-frame comments. </p> </li> <li id="GUID-80C4DB9F-6273-5656-8A6A-221528128D9C"><p>Support for progressive decoding. </p> </li> <li id="GUID-033F1133-1DFA-5460-9FE8-E95DB53CF38C"><p>Functions to decode images stored in files or descriptors. </p> </li> <li id="GUID-D99568AB-50DB-5B49-892E-A83FD4F4FABC"><p>Standard encoder that can encode single frame images and images with in image comments. </p> </li> <li id="GUID-85F702CC-60C0-5913-890C-08F8F6CAEFF2"><p>Functions to manipulate image properties such as scale, rotation, dithering and progressive decoding. </p> </li> <li id="GUID-94FF0822-C220-5D0C-AF65-16D2A09E7072"><p>Advanced thread control for encoder and decoders. </p> </li> </ul> </section> <section><title>Key Image Conversion Classes</title> <p>The key classes are </p> <dl><dlentry><dt>Image Encoding</dt> <dd><p>Image encoding is the process of taking a bitmap stored in a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>, converting it to a specified format and writing the output to a file or descriptor. Typical sources of bitmap data are cameras and paint applications. The <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref> object is created specifying the source image and encoder plugin as parameters. The <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-E1CADEBF-E502-3F7E-85D1-C6AA63E497FE"><apiname>CImageEncoder::Convert()</apiname></xref> function then encodes the image using the methods provided by the plugin. The results of the conversion are then saved to a file or descriptor. </p> </dd> </dlentry> <dlentry><dt>Image Decoding</dt> <dd><p>Image decoding is the process of taking an image stored in a file or descriptor, converting it from a specified format and writing the output to a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>. The <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> object is created specifying the source image and decoder plugin as parameters. The <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> function then decodes the image using the methods provided by the plugin. The results of the conversion are then saved to a <codeph>CFbsBitmap</codeph>. </p> </dd> </dlentry> <dlentry><dt>Image Processor</dt> <dd><p>Image Processor is an interface to process the decoded image using the <xref href="GUID-E57B96D4-87E2-3BD7-ADA1-B9448A6DFFF6.dita"><apiname>CImageProcessor</apiname></xref> class. </p> </dd> </dlentry> </dl> </section> <section><title>Using Image Conversion</title> <p>The Image Conversion functionality is used for the following: </p> <ul><li id="GUID-1A5A0DC1-EA29-535C-A5BB-5D8EF0F24A5C"><p>Rotate, crop, mirror and flip an image frame during decode operation. </p> </li> <li id="GUID-0F53E15D-1D95-587E-8B4B-2B7E6CBEF2BF"><p>Scaling with reduction factor of an image during decode operation. </p> </li> <li id="GUID-55A5A2CD-ED87-56E7-8A36-8F783454184C"><p>Decode an image by requesting pixel data block by block. </p> </li> <li id="GUID-84E17F61-98DF-5782-8DFF-EE946F61E8DF"><p>Decode an image from a descriptor or a file. </p> </li> <li id="GUID-67885D9D-BA8C-53A4-B5E5-6B57B0ED00A8"><p>Decode an image using a mask for the image with transparency. </p> </li> <li id="GUID-10DF77DC-D6B5-54E7-A8B1-728DA0970558"><p>Decode an image using separate thread. </p> </li> <li id="GUID-A4FA39C1-2965-582D-B9EC-E2FB57646274"><p>Decode a JPEG image thumbnail. </p> </li> <li id="GUID-7D98BCC3-18EF-5EF3-8B1A-99AE0DB2F809"><p>Decode a GIF multi-frame image. </p> </li> <li id="GUID-3710C58E-45F1-5FFC-8DAA-28B5FD4A2A76"><p>Decode an image that supports YUV format into an image frame. </p> </li> <li id="GUID-F25602E2-9EA2-5C08-A445-11911DC1C47F"><p>Turning OFF and ON dithering during decode operation of the image. </p> </li> <li id="GUID-43824E57-1608-5798-BE2B-A28EE0C1670E"><p>Encode a bitmap or an image frame into a descriptor or a file. </p> </li> <li id="GUID-F56A325A-3272-5E0A-99A1-60D29E5EBE50"><p>Encode an image frame by passing pixel data block by block. </p> </li> <li id="GUID-8C57D275-981D-5D70-8D60-3F7FD5DCE2F7"><p>Rotate, mirror and flip an image during encode functionality. </p> </li> <li id="GUID-6D5ACBD5-2471-50BF-AAB5-B71D98F9DF39"><p>Rotate a bitmap image. </p> </li> <li id="GUID-2CE27CA7-4D48-5E04-B307-B5C934918AAE"><p>Scaling a bitmap image with or without a mask. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext>Guide to Symbian supplied Codecs</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e162410_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572" xml:lang="en"><title>Inter-thread
+Data Transfer</title><shortdesc>The mechanism for copying data between threads is called inter-thread
+data transfer and is handled by the four functions provided by the <codeph>RThread</codeph> handle.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Data can be passed between threads. The threads can be in the same process
+or in different processes. The functions provides by the <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> class
+are:</p>
+<ul>
+<li id="GUID-416730EC-5719-5633-A51A-50B0E3AAD8F4"><p><codeph>ReadL()</codeph> </p> </li>
+<li id="GUID-B4EF1893-D469-541A-898E-AEC8DBF1BD3A"><p><codeph>WriteL()</codeph> </p> </li>
+<li id="GUID-7550CBE4-FEBF-51E5-AB0D-80729D7CAC95"><p><codeph>GetDesLength()</codeph> </p> </li>
+<li id="GUID-0B8127FB-9FE1-5EAA-9B8B-3F0BC9F4AAF5"><p><codeph>GetDesMaxLength()</codeph> </p> </li>
+</ul>
+<p>The functions are used in the implementation of the <codeph>RMessage</codeph> class
+which, in turn, is used for passing information between clients and servers.</p>
+<p>The <codeph>ReadL()</codeph> and <codeph>WriteL()</codeph> functions, which
+transfer data, assume that both source and target data are descriptors.</p>
+<p>Typically, code executing in the current thread will have a handle to another
+thread. The code in the <i>current</i> thread copies data <i>from</i> the <i>other</i> thread,
+represented by an <codeph>RThread</codeph> handle, by calling its <codeph>ReadL()</codeph> function.
+Copying data <i>to</i> the <i>other</i> thread is similar, but is done using
+the <codeph>WriteL()</codeph> function. The following diagram illustrates
+this:</p>
+<fig id="GUID-7A4E3725-E6DA-566D-86E0-2941A8D96ACE">
+<image href="GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e223038_href.png" placement="inline"/>
+</fig>
+<p>The source or target location in the <i>other</i> thread is identified
+by pointer. The pointer only has meaning within the context of that thread;
+attempting to reference the pointer directly from within the <i>current</i> thread
+is meaningless and may cause an exception.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e404700_href.png has changed
Binary file Symbian3/SDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e188950_href.png has changed
Binary file Symbian3/SDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e118282_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE" xml:lang="en"><title>Multimedia APIs and Frameworks Collection</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Multimedia APIs and Frameworks collection provides frameworks and APIs for accessing and manipulating audio and video data. </p> </conbody><related-links><link href="GUID-1DE5CDAD-8D71-5384-9E98-5665D5A4C792.dita"><linktext>Multimedia
+  Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3E7193C2-143E-58EF-B21F-9C0E1C65226F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3E7193C2-143E-58EF-B21F-9C0E1C65226F"><title>Text Views Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides access to the layout information needed to format text for display. </p> <p>The text itself and its formatting are accessed separately, using the Text and Text Attributes API. Text views obtain text and formatting information via an abstract interface class (<xref href="GUID-51B3C34F-2F8E-3181-93C4-00F073B1207C.dita"><apiname>MLayDoc</apiname></xref>).</p> </section> <section><title>Architectural relationships</title> <p>Uses the Text and Text Attributes API to store the text content and formatting attributes.</p> <p>The Text Views API is used by the Uikon Core API for editable text windows. Higher-level objects such as editable text windows typically own an editable text object to hold the rich text and attributes, and a Text Views object to store the layout and draw the text.</p> <p>The Graphics API provides a graphics device to draw to, for instance the screen or a printer, and a graphics context (contains the draw functions and the settings they use e.g. pen size and colour).</p> </section> <section><title>Description</title> <p>The API has the following key concepts:</p> <p><b>View and layout</b> </p> <p>The two principal classes in the Text Views API are <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref> and <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref>.</p> <p>Most of the Text Views API is provided by the <codeph>CTextView</codeph> class. It allows clients to do horizontal and vertical scrolling, set a text selection, change the cursor position and appearance and to set margin widths. It also does intelligent scrolling using block transfer (blit) and does automatic redrawing if necessary. It is optimised to reformat the minimum amount necessary. It also does conversion between document positions and x,y coordinates.</p> <p><xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> is a lower level class than <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref>. Many of its functions only exist for the convenience of other classes in the API. It is used by <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref> to calculate the layout information. It should be used by clients to set layout attributes, including the wrap width, the height of the visible portion of the document (the "band"), whether formatting should be set to the band only, or to the whole document, and it sets the text object which is the source of the text and formatting information.</p> <p><b>x-y coordinates</b> </p> <p>As in most bitmapped graphics systems, x coordinates increase rightwards and y coordinates increase downwards.</p> <p>The Text Views API uses two slightly different coordinate systems. In the system used by the <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> class (see for instance <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita#GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF/GUID-9F9DE7DE-FECD-34BF-94EE-296841514154"><apiname>CTextLayout::DocPosToXyPosL()</apiname></xref>), the origin for x-y pixel coordinates is the top left hand corner of the visible area of the body text, to the right of any margins which may have been set, so that the left edge of a non-indented line is at x coordinate 0. These are called layout coordinates.</p> <p>In the system used by the <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref> class, the origin for x-y pixel coordinates is at the top left corner of the view window, to the left of any margins which may have been set. These are called window coordinates.</p> <p><b>Scrolling polarity</b> </p> <p>When scrolling vertically, the Text Views API uses the convention that positive numbers of pixels, lines, paragraphs, pages, etc., mean that the text moves down, and vice versa. When scrolling horizontally, positive numbers of pixels mean that the text moves left and vice versa.</p> <p><b>Band formatting</b> </p> <p>The Text Views API support two format states. In one, the visible portion of a document only is formatted, and in the other, the entire document is formatted. The visible portion of the document is referred to as the band. Setting the formatting to the band may be useful to save memory when displaying large documents. The height of the band also controls the amount of scroll caused by a page up or down.</p> <p><b>Redrawing and scrolling</b> </p> <p>If you need automatic scrolling and redrawing you should use <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref> rather than <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> (see for instance <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-903D1087-42CB-32EB-8379-7B019936AD16"><apiname>CTextView::HandleGlobalChangeL()</apiname></xref>). When using the <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> class, redrawing and scrolling must be done by the user.</p> </section> <section><title>See also</title> <p><xref href="GUID-0AA6186C-DD10-5811-940F-D26A7D34C66F.dita">Text and Text Attributes Overview</xref> </p> <p><xref href="GUID-0AB9B221-38AE-576E-AC5A-C4C106E3D93B.dita">Graphics Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3EB1C34E-584E-595D-A339-DE170A96AEBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3EB1C34E-584E-595D-A339-DE170A96AEBC" xml:lang="en"><title>P.I.P.S. Examples</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A"><title>Communications Framework Quick Start</title><shortdesc>This topic describes the activities that users can do to make use of the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-DBF1C87D-7360-54B7-8658-B6659BF77F06-GENID-1-6-1-7-1-1-5-1-3-1"><title>Getting started with Communications Framework</title> <ul><li id="GUID-2EF077BD-0194-5C6B-B4B6-A226A09DBA5D"><p>To manage communications connections and transfer data, use the client interfaces provided by the Sockets Server, together with additional interfaces that are provided by implementations of specific communications protocols. For example, to communicate over the TCP protocol, use the Sockets Server together with the Internet Sockets libraries provided by Networking Services. </p> </li> <li id="GUID-D57F54F9-8006-54E8-991B-C6180D53F00C"><p>To implement new communications protocols, implement plug-ins that conform to the Comms Architecture. </p> </li> <li id="GUID-7AC9CA5C-7138-5526-8CAE-B42B852B2F8C"><p>To configure the communications set up of a phone, use the Comms Database. </p> </li> <li id="GUID-CE7D99C4-7F70-58D1-8221-66BC71403C49"><p>To communicate over a serial port, such as RS232, and to access other communications protocols that can be used in a similar way, use the Serial Communications Server. </p> </li> </ul> </section> <section><title>Architecture</title> <p>The Communications Framework enables communication in mobile devices. It allows the devices to connect to networks, create and store network settings, manage memory used for communications, and send and receive data. </p> <p>The Communications Framework comprises the following collections: </p> <ul><li id="GUID-E9C6BC79-01AD-53E4-8885-486D7B3E0CDB"><p> <b>Communications Process and Settings</b>  </p> <p>This collection contains the Comms Root Server and Comms Root Server Configurator components. For more information see <xref href="GUID-2FED5145-58E4-5560-8E52-6BD499EECE13.dita">Root Server</xref>. </p> </li> <li id="GUID-08F51E77-4EE3-580C-922D-16D366ADD559"><p> <b>Communications Configuration</b>  </p> <p>This collection contains the Comms Database. The Comms Database contains data about all of the settings in the communication framework. For more information about the Comms Database, see <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms Database</xref>. </p> </li> <li id="GUID-E19E0A03-7B46-51FE-BDFC-0EB0F73F2896"><p> <b>Data Communications Server </b>  </p> <p>This collection contains the ESock Server and ESock Server Configurator components. For more information, see <xref href="GUID-2139B04C-6ED6-599B-A018-D92451B8353E.dita">Data Communications Server</xref>. </p> </li> <li id="GUID-2865D60A-BA76-5937-8A28-09316F5DF699"><p> <b>Communications Framework Utilities </b>  </p> <p>This collection contains the Comms framework, Comms Elements and MBuf Manager. For more information, see <xref href="GUID-12D1F61B-6BC6-5215-A832-E84C0F480765.dita">Communications Framework Utilities</xref>. </p> </li> <li id="GUID-23E59E44-9AC6-5EB4-886A-86549AD875BF"><p> <b>Serial Server and Serial Comms Server Plug-ins </b>  </p> <p>These collections contain the C32 Serial Server and the C32 Serial Server and the Serial Port CSY. For more information, see <xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial Communications Server</xref>. </p> </li> </ul> <p>The following diagram outlines the Communication Framework collections and the components associated with each collection. </p> <fig id="GUID-201CB2BD-3398-57FA-B5D7-B38D1FFE77FD"><image href="GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e62601_href.png" placement="inline"/></fig> </section> <section><title>Technologies</title> <p>The Comms Framework defines the structure and operations of the communications protocol stack in Symbian OS, and allows applications to use the stack through a sockets type API. It defines the concepts, roles, and rules that govern the function of the stack, but does not itself implement specific protocols, such as TCP/IP, in that stack. </p> <p>This section describes the key features and technologies implemented by the Communications Framework. </p> <ul><li id="GUID-2141A1D6-D3F8-5AA8-AE2A-1E6EAC715E04"><p> <b>Comms Database</b>  </p> <p>The Comms database comprises a series of tables which are used to store communications settings. Each table is made up of a set of records. These records are in turn made up of a series of fields. A field is the basic unit of information in the Comms Database. For more information, see <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms Database</xref>. </p> </li> <li id="GUID-64F701EE-FDC3-54EE-A1CB-19B9448F2DA0"><p> <b>Root Server</b>  </p> <p>Root Server manages the process in which all Communications Servers are loaded. The process is called <i>C32exe</i> and is also known as <i>C32</i>. For more information, see <xref href="GUID-236D3822-13C3-5AD8-B0FB-C28732E17CF7.dita">What is Root Server and the C32exe Process?</xref>. </p> </li> <li id="GUID-9299C35C-4EBD-534F-9B72-813D7D6EF981"><p> <b>ESock Server</b>  </p> <p>ESock Server provides a generic interface to communications protocols through communication end points known as sockets. They provide a generic interface to network level communications protocols for common operations involved in network computing. These include sending data, receiving data, establishing connections, and configuring network protocols. </p> </li> <li id="GUID-B2449768-EC88-5FFE-9AA2-017FDCBACF50"><p> <b>Network Interface Manager</b>  </p> <p>The Network Interface Manager (NifMan) creates and manages network interfaces. The Network interfaces enable the devices to connect to networks. For more information about NifMan, see <xref href="GUID-31371091-A28D-5203-BE6A-0F182F99582D.dita">Network Interface Manager (NifMan)</xref>. </p> </li> <li id="GUID-3E3E2DFC-12A2-5E56-B5AC-D1A7B4C73DC1"><p> <b>MBufManager</b>  </p> <p>An MBuf is part of the implementation of a buffer in the Comms Architecture and represents a section of memory. The Communications framework creates a MBufs when the device starts. The MBufManager provides memory management for the Comms processes. For more information about buffers and MBufs, see <xref href="GUID-A248C2C0-5F64-5484-85B2-57C86E3499E1.dita">Memory Management</xref>. </p> </li> <li id="GUID-C359C51A-2A1A-596C-9492-490FD97A4D91"><p> <b>C32 Serial Server</b>  </p> <p>The Serial Communications Server provides a public API to access the serial ports of the device. It provides functionality such as timeouts and port sharing for all Serial Protocol Modules. For more information, see the <xref href="GUID-6C7B7778-9B2E-5D8C-B2D8-74AC1DEEDF61.dita">Serial Communications Server</xref>. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e110029_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D" xml:lang="en"><title>Video Player Utility Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to use the Video Player Utility. </p> </conbody><related-links><link href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita"><linktext>Video Client Library
+  Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e235933_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3F1FA838-4B65-5692-8B73-AFB9896E5F10.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3F1FA838-4B65-5692-8B73-AFB9896E5F10"><title>dirs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>dirs [ -c ] [ arg ... ] </userinput> </p> <p>or </p> <p><userinput>dirs [ -lpv ] </userinput> </p> <p>With no arguments, print the contents of the directory stack. Directories are added to this stack with the <xref href="GUID-4E45570C-A0EF-522C-BD67-FC31E4092740.dita">pushd</xref> command, and removed with the <xref href="GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita">cd</xref> or <xref href="GUID-208B15EA-ACDF-5305-A38C-D18AD79576A2.dita">popd</xref> commands. If arguments are specified, load them onto the directory stack, replacing anything that was there, and push the current directory onto the stack. </p> <table id="GUID-798B356E-0BF7-539A-9791-7A54C03C776B"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-c</codeph>  </p> </entry> <entry><p>Clear the directory stack. </p> </entry> </row> <row><entry><p> <codeph>-l</codeph>  </p> </entry> <entry><p>Print directory names in full instead of using <codeph>~</codeph> expressions. </p> </entry> </row> <row><entry><p> <codeph>-p</codeph>  </p> </entry> <entry><p>Print directory entries one per line. </p> </entry> </row> <row><entry><p> <codeph>-v</codeph>  </p> </entry> <entry><p>Number the directories in the stack when printing. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3F1FF06E-4190-5AC7-86C6-6732B632BA1A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3F1FF06E-4190-5AC7-86C6-6732B632BA1A"><title>reallyclean</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>reallyclean</codeph> <codeph> ( ( [-c] | [-w] ) | ( [-k] [-v] ) )</codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>This command does what <codeph>abld clean</codeph> does, and also removes files exported by <codeph>abld
+          export</codeph> and the makefiles generated by <codeph>abld
+          makefile</codeph>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3F577531-9798-537F-8F8B-7CAB0257560C" xml:lang="en"><title>Zsh Command Syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Zsh supports the following commands of which those supported by Symbian are listed below: </p> <p> <b>Note:</b> Out of all the commands listed here only <codeph>find</codeph>, <codeph>grep</codeph>, <codeph>ps</codeph>, <codeph>unzip</codeph> and <codeph>zip</codeph> are external commands and others are built-in commands. </p> <p>The information related to the above commands is obtained from <xref scope="external" href="http://zsh.dotsrc.org/Doc/Release/zsh_16.html#SEC89">http://zsh.dotsrc.org</xref>. Note that not all the commands listed on this web page are supported by Symbian. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-3F69590C-B1FB-4E73-B3D3-FD09C894BC60_d0e60587_href.png has changed
Binary file Symbian3/SDK/Source/GUID-3F69590C-B1FB-4E73-B3D3-FD09C894BC60_d0e61414_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA"><title>Localisable icon/caption definition files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>These files define the following information required by the application launcher or system shell:</p> <ul><li id="GUID-7F29FAB6-8EE4-583D-9B18-B91AA475BC94"><p>the application’s caption. This is often displayed beside the icon in the application launcher, and is usually the application’s name,</p> </li> <li id="GUID-5B9FC4AE-02C8-5644-AA6E-97EFEA27037A"><p>an optional short version of the caption. This is used by some UIs in situations where screen space is limited,</p> </li> <li id="GUID-6D7CA1B8-EB2F-50E4-9C85-C1919B2E8B27"><p>the name of the icon file,</p> </li> <li id="GUID-4B2B8D32-B6A5-52B0-83EF-3E4ACB60119D"><p>for view-based applications, optional information about the views, including view-specific captions and icons. This feature may not be supported by all UIs.</p> </li> <li id="GUID-0F7E7175-67FC-53BA-898D-C7C4AFEEC3A5"><p>an optional application group name. This may also be defined in the registration file. If it is defined in both files, the localisable version takes precedence.</p> </li> </ul> <p>This information is defined using a <codeph>LOCALISABLE_APP_INFO</codeph> resource struct, see <filepath>AppInfo.rh</filepath>. This resource can either be defined in a icon/caption definition resource file, or in the application's UI resource file, if it has one.</p> <p> This choice of two methods is provided to give flexibility. For instance:</p> <ul><li id="GUID-4EDF8630-818E-5035-913D-D64695247559"><p> applications without any UI resources but which require icons/captions might need to use an icon/caption definition file,</p> </li> <li id="GUID-C01E9BAB-152D-586C-8183-B3B998620973"><p>applications with UI resources that do not need to be localised, but which require multiple captions, would use a single UI resource file, but several language-dependent icon/caption definition files,</p> </li> <li id="GUID-DE9080B3-6E42-503D-BCDA-E8FBDC420DA7"><p>for applications with localisable UI resources and different captions for different languages, it may be more convenient to define the caption/icon information in the UI resource files instead of using icon/caption definition files.</p> </li> </ul> <p>Localisable information is optional. A set of default icons are provided by the GUI, and the default caption is the application name.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C" xml:lang="en"><title>New
+Search</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial provides the steps to perform new search on messages (mainly,
+on email messages). </p>
+<section><title>Introduction</title> <p>You can perform the following types
+of search on messages (mainly, on email messages): </p> <ul>
+<li id="GUID-5851CB02-D769-546E-B748-E6C1E0C1EB8C"><p> <b>Simple search</b>  </p> <p>In
+a simple search, you use only one message field as a search criteria in a
+search request. The single message field can be: to, from, cc, size, time,
+message type, message status, priority, attachment type or message body. For
+example, search for all emails sent to <i>Sam</i>. </p> </li>
+<li id="GUID-3F4B645D-3A6A-5ED8-AF07-41F02D20F551"><p> <b>Combined search</b>  </p> <p>In
+a combined search, you use more than one message field as a search criteria
+in a search request. The message fields can be a combination of: to, from,
+cc, size, time, message type, message status, priority, attachment type, and
+message body. </p> <p> <b>Note:</b> You can use maximum of five message parts
+as a search criteria in a combined search. </p> <p>For a combined search,
+the <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-D5AC69E9-75E0-3179-B12B-1D9521684D4D"><apiname>CMsvSearchSortQuery::AddSearchOptionL()</apiname></xref> function can
+be called more than once depending on the message fields you use in the search
+query. For example, if you have to search all messages from sender <i>Albert</i>,
+with <b>subject</b>  <i>Invitation</i>, then you must call the <xref href="GUID-E49C2AFE-5793-37A6-9A08-2A1DD5CCA160.dita"><apiname>AddSearchQueryOptions</apiname></xref> function
+twice. </p> <p>However, you can use any functions of the <xref href="GUID-F2882FAD-A108-342E-8E35-039C83EFEF55.dita"><apiname>TMsvSearchSortQuery</apiname></xref> class
+only once in each combined search query. </p> </li>
+</ul> <p><b>Iterative method</b> </p> <p>You can enable an iterative method
+in simple and combined searches: </p> <ul>
+<li id="GUID-855C5460-41A4-5946-9973-67624AFFE3D6"><p> <b>Iterative</b>  </p> <p>The
+iterative method allows a client to access the search-sort results sequentially
+one at a time. It is useful when a client cannot, or does not want to provide
+the memory to receive an array of results. </p> </li>
+<li id="GUID-0EA3F74E-E3AA-5DCE-A400-B8D1DA8E998B"><p> <b> Non-iterative</b>  </p> <p>This
+method retrieves the complete results of the query in a single array. It requires
+sufficient RAM on the client-side. This is particularly useful for queries
+that return small subset of results. </p> </li>
+</ul><note> You specify the method with the <codeph>TInt aIterator</codeph> parameter
+when the client sends a query to the Message Server. By default, the value
+is zero (<codeph>0</codeph>) which indicates the non-iterative method. You
+must set it to <codeph>1</codeph> to get specify the iterative method.</note> <fig id="GUID-B440387E-2A93-5DF0-9E81-79FCA72AB5C8">
+<title>                 New search-sort request process               </title>
+<image href="GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e258906_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Simple search</title> <ol id="GUID-40D841C8-004A-5E15-AB18-DD1E3D9C0164">
+<li id="GUID-90D2E877-B63F-57C5-9601-47CC2AE67325"><p>Create a search-sort
+query using the <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-B39D5F47-158A-38C8-8552-B3B5581554F7"><apiname>CMsvSearchSortQuery::NewL()</apiname></xref> function. </p> </li>
+<li id="GUID-F140F72C-3314-5F79-8F00-5E518CE2A2CF"><p>Configure the query
+by setting parameters, such as the directory to search in, the format for
+the results, whether to search for whole or part words, whether to use wild
+cards, the case sensitivity, the values and fields to search and the sorting
+options. </p> </li>
+<li id="GUID-5DBE5827-C1C4-5F38-9F43-76DEFD7FA70E"><p>Add the search-sort
+operation using the search query as a parameter using the <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-D5AC69E9-75E0-3179-B12B-1D9521684D4D"><apiname>CMsvSearchSortQuery::AddSearchOptionL()</apiname></xref> function.
+There are three versions of the <xref href="GUID-99504AB6-680F-3D96-BA10-CF04D8C23554.dita"><apiname>AddSearchOptionL()</apiname></xref> function,
+each of which takes a different parameter type: </p> <ol id="GUID-9E468043-DDA7-53D3-A859-1EA1588ABFB5">
+<li id="GUID-B73CCE8B-B404-553A-AE55-F16BAE3BDCC6"><p>Descriptor: For searching
+on sender, recipient list (cc, to, bcc), subject, date and date range. </p> </li>
+<li id="GUID-3A0E35A3-FE7A-5853-94FA-7247F92DBBB5"><p>Integer: For searching
+message size and size range. </p> </li>
+<li id="GUID-B026C578-BC3F-51C8-AA60-F1EE42B58E10"><p>Boolean: For searching
+on priority (high, medium and low), attachment types, message status. </p> </li>
+</ol> <p> Note: If necessary, enable sorting of search result in ascending
+or descending order on the message part added in the query. </p> </li>
+<li id="GUID-79E1C31B-D45A-5F24-8761-A789005A77A0"><p>Create a session with
+the Messaging server using the <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref> class. </p> </li>
+<li id="GUID-1159ADC2-1226-575E-BA82-3ECE7010630A"><p>Create a search-sort
+operation using the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref> class. </p> </li>
+<li id="GUID-0FC467F8-F7F1-5FEA-9CBC-5EF7E756834C"><p>Start the search-sort
+operation by calling the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-6C81A72A-3BEC-3D18-9CAD-46E9309C3FEB"><apiname>CMsvSearchSortOperation::RequestL()</apiname></xref> function
+and passing the query as a parameter. Do not include an iterator parameter.
+It will default to zero (non-iterative). </p> </li>
+<li id="GUID-5C94A9EF-88F1-5B71-9D7A-2EF7C69D77AB"><p>Wait for the Messaging
+Server to perform the search. </p> </li>
+<li id="GUID-D2EAE048-D5CA-5728-967E-4830873E11DE"><p>Create an array for
+storing the results of the search. </p> </li>
+<li id="GUID-8258A7BA-DF95-59B9-B9C9-AEDE61EFEEA7"><p>Retrieve the results
+from the search into the array using the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-1D6974D1-FF31-3B7C-A726-47A8510E9819"><apiname>CMsvSearchSortOperation::GetResultsL()</apiname></xref> function. </p> </li>
+<li id="GUID-0B0C26C5-6FA7-5CFA-8C5B-9CEB5C7BC5C0"><p>Get the query ID of
+the search from the Messaging server, if necessary, for later use using the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-989B6F32-DE88-373B-9CA4-5474BB6858CD"><apiname>CMsvSearchSortOperation::GetQueryId()</apiname></xref> function. </p> </li>
+</ol> <codeblock xml:space="preserve">/**
+Simple Seachsort request without iterator.
+*/ 
+void CSearchsortExample::SeachSortRequestWithoutIteratorL()
+    {
+    //1. Create an instance of CMsvSearchSortQuery to create a
+    //search-sort query
+    CMsvSearchSortQuery* searchQuery = CMsvSearchSortQuery::NewL();
+    CleanupStack::PushL(searchQuery);
+
+    //2. Configure the query.
+    //Search-sort operation is performed on a specified folder.
+    //(e.g, on INBOX, SENT ITEMS, 
+    //DRAFT, OUTBOX or any user created folder). Needs to set the value of the folder entry.
+    searchQuery-&gt;SetParentId(KMsvRootIndexEntryIdValue);
+    //Set the type of result expected out of the search-sort operation. 
+    searchQuery-&gt;SetResultType(EMsvResultAsTMsvId);
+    searchQuery-&gt;SetWholeWord(ETrue);
+    searchQuery-&gt;SetCaseSensitiveOption(ETrue);
+    searchQuery-&gt;SetWildCardSearch(EFalse);
+    
+    //3. Add search option
+    _LIT( KMsgTo, “david@nokia.com”) ;
+    searchQuery-&gt;AddSearchOptionL(EMsvTo, KMsgTo, EMsvEqual);
+    // Add sort option
+    searchQuery-&gt;AddSortOptionL(EMsvSize, EMsvSortAscending);   
+    
+    //4. Create a session with message server
+    // NOTE: CMsvSession::OpenSyncL requires a &amp;MMsvObserver parameter.  This example assumes that 
+    // CSearchSortExample implements MMsvObserver.
+    CMsvSession* session = CMsvSession::OpenSyncL(*this);
+    CleanupStack::PushL(session);
+
+    //5. Create an instance of CMsvSearchSortOperation to perform a 
+    //search-sort operation    
+    CMSvSearchSortOperation* search = CMSvSearchSortOperation::NewL(*session);
+    CleanupStack::PushL(search);
+            
+    //6. Start the search operation using the query as a parameter
+    TRequestStatus aStatus;
+    CleanupStack::Pop(searchQuery);
+    // ownership of searchQuery is passed to SearchSortOperation
+    search-&gt;RequestL(searchQuery, ETrue, aStatus);
+
+    //7. Wait for the result
+    User::WaitForRequest(aStatus);
+
+    //8. Create an array to hold Search-sort results
+    RArray&lt;TMsvId&gt; resultArray;
+
+    //9. Retrieve the results of the search. The format for the results should be the same as
+    // what is configured in step 2. Else, will leave with the KErrMsvInvalidResultRequest
+    // error
+    TInt err =  search-&gt;GetResultsL(resultArray);
+    if(ret == KErrNone)
+        {
+        TInt count = resultArray.Count();
+        }
+
+    //10. Get the query ID. This ID can be used in repetitive search queries.
+    iQueryId = search-&gt;GetQueryIdL();
+    
+    CleanupStack::PopAndDestroy(2); //search, session  
+    }	</codeblock></section>
+<section id="GUID-AE684DF2-5BF3-5B87-8C10-6F69C87622CA"><title>Combined search</title> <p>To
+create a combined search, add an additional search options in step 3. </p> <codeblock id="GUID-E85BCF64-B96D-5B2C-A4B4-E55B3B4AC83B" xml:space="preserve">    //3. Add search option
+    _LIT( KMsgTo, “david@nokia.com”) ;
+    searchQuery-&gt;AddSearchOptionL(EMsvTo, KMsgTo, EMsvEqual);
+    //Add additional option(s) for combined search.
+    TInt size = 100;
+    searchQuery-&gt;AddSearchOptionL(EMsvSize, size, EMsvGreaterThanOrEqual); // Integer value search
+    searchQuery-&gt;AddSearchOptionL(EMsvAttachment, ETrue); // boolean value search
+     </codeblock> </section>
+<section id="GUID-0553ACB4-0ABD-5EC8-B7BC-D3217373064B"><title>Iterative search</title> <p>To
+create an iterative search, specify an iterative parameter at step 6. </p> <codeblock id="GUID-130C7E2A-157A-5D2E-97D9-DCF7CBBD0301" xml:space="preserve">     // 6. Start the search operation using the query as a parameter
+     // Specify the iterative method 
+    const TInt KIterativeSearch = 1 ;
+    TRequestStatus aStatus;
+    CleanupStack::Pop(searchQuery);
+    // ownership of searchQuery is passed to SearchSortOperation
+    search-&gt;RequestL(searchQuery, ETrue, aStatus, KIterativeSearch);
+     
+    // 9. The results of an iterative search must be retrieved from the message server one at a time
+    
+    // Retrieve the results of the search one at a time
+    
+     TMsvId result;
+    //GetNextResultL returns the number of results remaining in the search. 
+    while( search-&gt;GetNextResultL( result ) )
+        {
+        // process result
+        }
+</codeblock> </section>
+<example><title>Search-sort example</title> <p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">SearchSortExample:
+Enhanced Search and Sort for Message Store </xref>  </p> </example>
+<section><title>See also</title> <p>For conceptual information on search-sort
+APIs, see <xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita">Searching
+and Sorting Messages</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FAB9077-3EC3-5539-B391-D11456362513.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3FAB9077-3EC3-5539-B391-D11456362513" xml:lang="en"><title>Store</title><shortdesc>Store provides structured data storage. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FAECE72-FCC6-5C58-B724-C9A9DE485788.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3FAECE72-FCC6-5C58-B724-C9A9DE485788"><title>Converting to and from Transformation Formats Using CnvUtfConverter</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the way in which <codeph>CnvUtfConverter</codeph> can be used to convert chunks of text from Unicode to the UTF-7 or UTF-8 transformation format, from the UTF-7 or UTF-8 transformation format to Unicode, and from the UTF-7 or UTF-8 transformation format to Unicode when the text is arriving in fragments. </p> <section><title>Introduction</title> <p>The <codeph>CnvUtfConverter</codeph> class is provided for converting text between Unicode (UCS-2) and the two Unicode transformation formats UTF-7 and UTF-8. The four conversion functions are all static, are <codeph>ConvertFromUnicodeToUtf7()</codeph>, <codeph>ConvertFromUnicodeToUtf8()</codeph>, <codeph>ConvertToUnicodeFromUtf7()</codeph>, and <codeph>ConvertToUnicodeFromUtf8()</codeph>. </p> <p> <b>Note</b>: there is no direct way to convert between UTF-7 and UTF-8. Though it is possible to convert from one transformation format to UCS-2 and then from UCS-2 to the other transformation format. </p> <p>The examples in the below sections describes how to convert to and from UTF-7. Converting to and from UTF-8 is almost identical. The only differences being in the use of a third parameter to <codeph>ConvertFromUnicodeToUtf7()</codeph>, and also that <codeph>ConvertToUnicodeFromUtf8()</codeph> does not use a ‘state’ parameter. </p> </section> <section><title>Converting Unicode to UTF-7</title> <p>The text is converted in chunks, and it is not necessary to guess the full size of the converted output text in advance. </p> <ol id="GUID-481722AF-CD6D-5383-B381-EF9C79416AE0"><li id="GUID-CFB5B1ED-749D-518D-84E7-62E345BD99D1"><p>The function below creates an output descriptor and a ‘remainder’ buffer for holding the unconverted Unicode characters. This remainder buffer is initialised with the text in the input descriptor. </p> <codeblock id="GUID-B19F8A17-A52D-57C6-8801-522408FD78E0" xml:space="preserve">LOCAL_C void EncodeL(const TDesC16&amp; aUnicodeText)
+    {
+    // Create a small output buffer
+    TBuf8&lt;20&gt; outputBuffer;
+    // Create a buffer for the unconverted text - initialised with the input text
+    TPtrC16 remainderOfUnicodeText(aUnicodeText);</codeblock> </li> <li id="GUID-FEB17712-19E8-5609-A785-5520CCD3C040"><p>A loop is set up to convert the text in the remainder buffer — which initially contains all the information in the input descriptor. </p> <p> <codeph>ConvertFromUnicodeToUtf7()</codeph> converts characters from the remainder buffer until the small output buffer is full — the Unicode contents of the output buffer are then safely stored. The remainder buffer is reset so that it only contains unconverted text. This process is repeated until the remainder buffer is empty, and the function completes. Note that the code fragment below also includes code to check for corrupted characters. </p> <codeblock id="GUID-DBE3B2D3-BCF9-5D97-9E09-9E925FE8E4BF" xml:space="preserve">    for(;;) // conversion loop
+        {
+        // Start conversion. When the output buffer is full, return the 
+        // number of characters that were not converted
+        const TInt returnValue=CnvUtfConverter::ConvertFromUnicodeToUtf7(outputBuffer, 
+                                remainderOfUnicodeText, ETrue);
+
+        // check to see that the descriptor isn’t corrupt - leave if it is
+        if (returnValue==CnvUtfConverter::EErrorIllFormedInput)
+            User::Leave(KErrCorrupt);
+        else if (returnValue&lt;0) // future-proof against "TError" expanding
+            User::Leave(KErrGeneral);
+
+        // Do something here to store the contents of the output buffer.
+
+        // Finish conversion if there are no unconverted characters in the remainder buffer
+        if (returnValue==0)
+            break; 
+
+        // Remove the converted source text from the remainder buffer.
+        // The remainder buffer is then fed back into loop
+        remainderOfUnicodeText.Set(remainderOfUnicodeText.Right(returnValue));
+        }
+    }</codeblock> </li> </ol> </section> <section><title>Converting UTF-7 to Unicode</title> <p>The text is converted in chunks so that it is not necessary to guess the full size of the converted output text in advance. The process is similar to that given in the previous example. </p> <ul><li id="GUID-396AAFEB-0A49-5532-ABC4-00EC534C5151"><p>The function below first creates an output descriptor, a state variable, and a ‘remainder’ buffer for holding the unconverted characters — this is initialised with the text in the input descriptor. The state variable is initialised with <codeph>CnvUtfConverter::KStateDefault</codeph> — after initialisation this should not be tampered with, but simply be passed into subsequent calls to <codeph>ConvertToUnicode()</codeph>. </p> <codeblock id="GUID-7B5BED89-3E99-5FBE-BEAC-AD978900A14E" xml:space="preserve">LOCAL_C void DecodeL(const TDesC8&amp; aUtf7)
+    {
+    // Create a small output buffer
+    TBuf16&lt;20&gt; outputBuffer;
+    // Create a buffer for the unconverted text - initialised with the input text
+    TPtrC8 remainderOfUtf7(aUtf7);
+
+    // Create a "state" variable and initialise it with CnvUtfConverter::KStateDefault
+    // After initialisation the state variable must not be tampered with.
+    // Simply pass into each subsequent call of ConvertToUnicodeFromUtf7()
+    TInt state=CnvUtfConverter::KStateDefault;</codeblock> </li> <li id="GUID-902EA75D-8237-5408-B8BE-7EAEBDE611F2"><p>A loop is then set up to convert the text in the remainder buffer — which initially contains all the information in the input descriptor. </p> <p> <codeph>ConvertToUnicodeFromUtf7()</codeph> converts characters from the remainder buffer until the small output buffer is full — the Unicode contents of the output buffer are then safely stored. The remainder buffer is reset so that it only contains unconverted text. This process is repeated until the remainder buffer is empty, and the function completes. Note that the code fragment below also includes code to check for corrupted characters. </p> <codeblock id="GUID-8AEE6B69-E867-534D-AF83-7A77E1E3F0BD" xml:space="preserve">    for(;;)  // conversion loop
+        {
+        // Start conversion. When the output buffer is full, return the 
+        // number of characters that were not converted
+        const TInt returnValue=CnvUtfConverter::ConvertToUnicodeFromUtf7(outputBuffer,remainderOfUtf7,state);
+
+        // check to see that the descriptor isn't corrupt - leave if it is
+        if (returnValue==CnvUtfConverter::EErrorIllFormedInput)
+            User::Leave(KErrCorrupt);
+        else if (returnValue&lt;0) // future-proof against "TError" expanding
+            User::Leave(KErrGeneral);
+
+        // Do something here to store the contents of the output buffer.
+
+        // Finish conversion if there are no unconverted characters in the remainder buffer
+        if (returnValue==0)
+            break; 
+
+        // Remove the converted source text from the remainder buffer.
+        // The remainder buffer is then fed back into loop
+        remainderOfUtf7.Set(remainderOfUtf7.Right(returnValue));
+        }
+    }</codeblock> </li> </ul> </section> <section><title>Converting fragmented UTF-7 to Unicode</title> <p>The main difficulty in converting fragmented text is that received chunks may begin or end with bytes from an incomplete character. </p> <p>To overcome this problem, implementations must ensure that the descriptors passed to <codeph>ConvertToUnicodeFromUtf7()</codeph> always begin with a complete character, (making the output descriptor at least 20 elements long should be enough to ensure this) and that conversions only progress to completion for the final chunk of text— in which the last character is complete. In the function below this is achieved by beginning the buffer for each chunk with a small amount of unconverted text from the previous chunk. The buffer is then guaranteed to begin with a complete character. Any ‘loose’ bytes from the end of the last chunk and the beginning of the new one combine to form a complete character. </p> <p>The function first creates a buffer to hold both the unconverted text fragment from the previous chunk, and the new chunk. </p> <codeblock id="GUID-E6FA1A78-EDD9-504E-B4D7-956B306D4705" xml:space="preserve">LOCAL_C void DecodeL()
+    {
+    // Create a buffer for holding UTF-7 text to be converted
+    const TInt KMaximumLengthOfBufferForUtf7=200;
+    TUint8 bufferForUtf7[KMaximumLengthOfBufferForUtf7];
+    // Create a variable for indicating the actual amount of text in the buffer
+    TInt lengthOfBufferForUtf7=0;</codeblock> <p>A loop is then set up to get a new chunk and append it to the unconverted text fragment from the previous chunk. The code also contains a placeholder to find out whether the current chunk is the last chunk, and stores this information in a flag. In addition, it creates an output descriptor, a state variable, and a ‘remainder’ buffer for holding the unconverted text. The state variable is initialised with <codeph>CnvUtfConverter::KStateDefault</codeph> — after initialisation this should not be tampered with, but simply be passed into subsequent calls to <codeph>ConvertToUnicodeFromUtf7()</codeph>. </p> <codeblock id="GUID-BF7937D9-1E25-5B57-9DDB-712D6CAFBB11" xml:space="preserve">    // Outer loop.
+    // Appends new chunk to fragment from previous chunk
+    // Then passes the buffer to the conversion loop.
+    for(;;)  
+        {
+        // Create a modifiable pointer descriptor for the next chunk of non-Unicode text
+        TPtr8 nextChunkOfUtf7(bufferForUtf7+lengthOfBufferForUtf7,
+                            KMaximumLengthOfBufferForUtf7-lengthOfBufferForUtf7);
+
+        // Insert code to load next chunk of Utf7 here
+
+        // Calculate the length of the next chunk of text to be processed
+        const TInt lengthOfNextChunkOfUtf7=nextChunkOfUtf7.Length();
+        // Specify the length of the buffer for Utf7 text
+        lengthOfBufferForUtf7+=lengthOfNextChunkOfUtf7;
+
+        // Set whether this is the last chunk - find out from source of text
+        const TBool isLastChunkOfUtf7=  ; // ?
+            // e.g. the source may define that the last chunk is of length zero, in which case
+            // the expression "(lengthOfNextChunkOfUtf7==0)" would be assigned to 
+            // this variable; note that even if the length of this chunk is zero, 
+            // dont just exit this function here as bufferForUtf7
+            // may not be empty (i.e. lengthOfBufferForUtf7&gt;0)
+
+        // Create a small output buffer
+        TBuf16&lt;20&gt; outputBuffer;
+        // Create a remainder buffer for the unconverted text - used in conversion loop
+        TPtrC8 remainderOfUtf7(bufferForUtf7, lengthOfBufferForUtf7);
+
+        // Create a "state" variable and initialise it with CnvUtfConverter::KStateDefault
+        // After initialisation the state variable must not be tampered with.
+        // Simply pass into each subsequent call of ConvertToUnicodeFromUtf7()
+        TInt state=CnvUtfConverter::KStateDefault;</codeblock> <p>The remainder buffer is passed to the conversion loop. </p> <p> <codeph>ConvertToUnicodeFromUtf7()</codeph> converts characters from the remainder buffer until the output buffer is full — the Unicode contents of the output buffer are then safely stored. Then the remainder buffer is reset so that it only contains unconverted text. This process is repeated until the remainder buffer contains less than 20 bytes. The remainder of the unconverted bytes are copied into the main UTF-7 buffer, and the function returns to the outer loop. The process then repeats itself, with a new chunk being added to the UTF-7 buffer etc. </p> <p>If the ‘last chunk’ flag is set— in the main loop— then the conversion continues until the remainder buffer is empty. The function then completes. The code fragment below also includes code to check for corrupted characters. </p> <codeblock id="GUID-C89BA03E-493A-5F17-8B65-BA6BD92A8368" xml:space="preserve">// The conversion loop. This loop takes chunks of text prepared by the previous loop and converts them
+        for(;;)
+            {
+            const TInt lengthOfRemainderOfUtf7=remainderOfUtf7.Length();
+            if (isLastChunkOfUtf7)
+                {
+                if (lengthOfRemainderOfUtf7==0)
+                    return; // the single point of exit of this function
+                }
+            else
+                {
+                // As this isn't the last chunk, we don't want ConvertToUnicodeFromUtf7 to return
+                // CnvUtfConverter::EErrorIllFormedInput if the input descriptor ends with an
+                // incomplete sequence - but it will only do this if *none* of the input
+                // descriptor can be consumed. Therefore if the input descriptor is long enough
+                // (20 elements or longer is adequate) there is no danger of this error
+                // being returned for this reason. If it's shorter than that, we'll simply put it
+                // at the start of the buffer so that it gets converted with the next chunk.
+                if (lengthOfRemainderOfUtf7&lt;20)
+                    {
+                    // put any remaining UTF-7 at the start of bufferForUtf7
+                    lengthOfBufferForUtf7=lengthOfRemainderOfUtf7;
+                    Mem::Copy(bufferForUtf7, remainderOfUtf7.Ptr(), lengthOfBufferForUtf7);
+                    break;
+                    }
+                }
+
+            const TInt returnValue=CnvUtfConverter::ConvertToUnicodeFromUtf7(outputBuffer, remainderOfUtf7, state);
+            if (returnValue==CnvUtfConverter::EErrorIllFormedInput)
+                User::Leave(KErrCorrupt);
+            else if (returnValue&lt;0) // future-proof against "TError" expanding
+                User::Leave(KErrGeneral);
+
+            // Do something here to store the contents of the output buffer.
+
+            remainderOfUtf7.Set(remainderOfUtf7.Right(returnValue));
+            }
+        }
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A"><title>Feature Manager Client Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Provides the APIs required to communicate with the feature management server. </p> <section><title>Purpose</title> <p>Provides the complete set of functionality required for feature management. </p> </section> <section><title>Required background</title> <p>A familiarity with the client/server framework is necessary because feature management uses the standard client/server architecture; the feature manager server actually does the work, the feature manager library provides the APIs to implement a client to that server. </p> </section> <section><title>Architecture</title> <p>The relationship between the parts of the feature management system is : </p> <fig id="GUID-46A8976E-3C88-54C5-90DB-721F10FD62E6"><title>
+             Architecture of the feature management system 
+          </title> <image href="GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326239_href.png" placement="inline"/></fig> </section> <section id="GUID-3CF8D502-1181-511C-9F14-A256ACD4EF6B"><title>APIs</title> <p>This component provides one set of APIs that can be used to communicate with the feature management server. </p> <p>This dll file holds the APIs that are @publishedPartner. </p> <table id="GUID-2152DCD5-2797-505C-A906-BD1EB378D3EB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-F8232FA0-6D5C-3B40-8AFC-5359E91689BD.dita"><apiname>RFeatMgrClient</apiname></xref>  </p> </entry> <entry><p>Base class of the client-side communication with the feature manager server. </p> </entry> </row> <row><entry><p> <xref href="GUID-F6AAAC24-4A62-383A-86C6-2E46335C3FD4.dita"><apiname>RFeatureControl</apiname></xref>  </p> </entry> <entry><p>Contains the full functionality of the feature manager. </p> </entry> </row> <row><entry><p> <xref href="GUID-623C4183-00F0-36B0-AE1F-5C5EDCAF1B3D.dita"><apiname>MFeatureObserver</apiname></xref>  </p> </entry> <entry><p>Provides a callback interface for handling feature change notifications. </p> </entry> </row> <row><entry><p> <xref href="GUID-CA12C6F7-E997-33B8-9463-B326BC1832C5.dita"><apiname>CFeatureNotifier</apiname></xref>  </p> </entry> <entry><p>This is the active object for obtaining the notification of changes in features. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <ul><li id="GUID-56FA99FF-152D-50AB-99F8-00A2533A978C"><p>Connect to the feature management server. </p> </li> <li id="GUID-EFE0D43B-C1F0-573B-8837-01863115EB57"><p>Produce a list of the features that are present. </p> </li> <li id="GUID-7C2EA017-7FF3-5B2C-8A47-C4AA7D026A3C"><p>Check to see if a feature is supported. </p> </li> <li id="GUID-E7680CAD-CF68-5F60-8694-39601EBACE24"><p>Delete a feature. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager Overview</linktext> </link> <link href="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita"><linktext>Feature Discovery Overview</linktext> </link> <link href="GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita"><linktext>Feature Manager Server Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FB8AC96-209B-5B1E-8139-BA2D858CBF2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3FB8AC96-209B-5B1E-8139-BA2D858CBF2F" xml:lang="en"><title>CryptoSPI
+Overview (weak build)</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>This is an overview of the weak CryptoSPI
+APIs. An overview and other documents for the strong CryptoSPI APIs are available
+in the Security Supplement, which is delivered to device creators with the
+CBR. </p> </section>
+<section><title>Introduction</title> <p>CryptoSPI (<filepath>cryptospi.dll</filepath>)
+is a framework for implementing cryptographic algorithms, hash algorithms
+and random number generation. It allows alternative implementations to be
+added by Symbian platform device creators as plug-in DLLs. </p> <p><b>Weak
+and strong builds</b> </p> <p>The cryptography APIs are subject to export
+control regulations. The export of cryptography refers to the transfer from
+one country to another of technology related to cryptography. Export control
+regulations are for national security considerations. </p> <p>Export control
+applies to key sizes that are greater than a size specified by the UK Government.
+Currently, symmetric algorithms with keys greater than 56 bits and asymmetric
+algorithms with keys greater than 512 bits are export controlled. To comply
+with government export control rules, the Cryptography library is delivered
+in two builds: </p> <ul>
+<li id="GUID-B6D2DA99-B26C-563C-AB89-12B55BEA3F86"><p>A weak build </p> <p>The
+weak build (weak_cryptography.dll) includes cryptography algorithms that are
+not export controlled. The weak build rejects requests to apply an encryption
+scheme with key sizes greater than 56 bits for symmetric algorithms and 512
+bits for asymmetric algorithms. </p> </li>
+<li id="GUID-8C455A29-794A-50F4-8503-FCFBF55A731B"><p>A strong build </p> <p>The
+strong build (strong_cryptography.dll) includes cryptography algorithms that
+are export controlled. </p> </li>
+</ul> <p> <b> Note:</b> The API guide and other documentation for cryptography
+is broken up in the same way as the cryptography library. This document provides
+information on the weak build. It also gives a brief summary of the algorithms
+provided in the strong build. The strong cryptography API guide and other
+documentation is not available from the Symbian Developer Library. It is delivered
+to device creators with the CBR. </p> </section>
+<section><title>Architectural relationships</title> <p>Before the introduction
+of CryptoSPI, features such as cryptographic algorithms, hash algorithms and
+random number generation were provided by the Symbian platform in <filepath>cryptography.dll</filepath>, <filepath>hash.dll</filepath> and <filepath>random.dll</filepath>. </p> <p> <filepath>softwarecrypto.dll</filepath> is
+a plug-in module (implemented in the Symbian platform) that provides software-based
+implementations of all the cryptographic algorithms that were previously implemented
+by the legacy components (<filepath>cryptography.dll</filepath>, <filepath>hash.dll</filepath> and <filepath>random.dll</filepath>).
+The legacy APIs have been re-implemented internally to use the new framework
+via shim classes. <filepath>hardwarecrypto.dll</filepath> is an arbitrary
+name used in the diagram to represent a plug-in module provided by device
+creators. The plug-ins and <filepath>cryptospi.dll</filepath> have a dependency
+on <filepath>cryptography.dll</filepath> because it implements big integers. </p> <fig id="GUID-F3B5470E-25D5-5BDD-8F47-480D39C4CDB5">
+<title>              CryptoSPI dependencies            </title>
+<image href="GUID-708FC2C8-19BB-5EFC-A8CD-B0E9E96A5409_d0e360594_href.png" placement="inline"/>
+</fig> </section>
+<section><title>API summary</title> <p>The <codeph>CryptoSpi</codeph> namespace
+is defined for all CryptoSPI classes to differentiate them from the legacy
+APIs with the same names. </p> <p><b>CryptoSPI scope</b> </p><p>CryptoSPI
+provides equivalent implementations of all algorithms supported by the legacy
+APIs, including hashing and random number generation. The following algorithms
+are implemented in <filepath>softwarecrypto.dll</filepath>: </p><p>This
+section includes summary details of the following (For more information on
+the strong APIs, see the Security Supplement, which is delivered to device
+creators with the CBR): </p><ul>
+<li><p>cryptographic algorithms </p></li>
+<li><p>hash algorithms </p></li>
+<li><p>random number generator</p></li>
+</ul> <p id="GUID-19D541E1-1868-527A-A376-3ED1D0F428D8"><b>Cryptographic algorithms</b> </p> <p>Cryptographic
+algorithms allow data to be encrypted and decrypted. They include: </p> <ul>
+<li id="GUID-C68FBFD7-EE10-5CDD-835B-62D770D7E9E5"><p> <b>Symmetric ciphers</b> —
+algorithms that require communicating parties to hold a shared secret. They
+are fast and are used for the transmission of bulk data. </p> </li>
+<li id="GUID-D7ADFE85-C48D-5E2B-BAF0-CBF68B676C3E"><p> <b>Asymmetric ciphers</b> —
+algorithms which have two keys, one private to the keys' owner and one which
+can be published. They are slow compared to symmetric ciphers and are used
+to exchange a symmetric key before transmission of data encrypted using that
+key. </p> </li>
+</ul> <p>The Cryptography algorithms are part of the strong build. To access
+details of how to implement them you need to access the Security Supplement,
+which is delivered to device creators with the CBR. </p> <p id="GUID-1C869199-DF50-5DCA-AD0D-5EA31EADA384"><b>Hash
+algorithms</b> </p> <p><xref href="GUID-679390E8-1DE6-55F0-9A0C-60D58956A1E3.dita">Hash
+algorithms</xref> compact a message down to a short series of bytes from which
+it is impossible to regenerate the message. They are used with an asymmetric
+cipher to generate signatures. </p> <p>The following hash algorithms are supported: </p> <table id="GUID-2ECEAC82-2DEA-5907-9443-ED023DAD2653">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Hash algorithms</entry>
+<entry>Specified in</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>MD2 </p> </entry>
+<entry><p> <xref href="http://www.ietf.org/rfc/rfc1319.txt" scope="external">RFC
+1319 </xref>  </p> </entry>
+</row>
+<row>
+<entry><p>MD4 </p> </entry>
+<entry><p> <xref href="http://www.ietf.org/rfc/rfc1320.txt" scope="external">RFC
+1320</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>MD5 </p> </entry>
+<entry><p> <xref href="http://www.ietf.org/rfc/rfc1321.txt" scope="external">RFC
+1321</xref>  </p> </entry>
+</row>
+<row>
+<entry><p>SHA1 </p> </entry>
+<entry><p> <xref href="http://www.itl.nist.gov/fipspubs/fip180-1.htm" scope="external">FIPS
+180-1</xref> and <xref href="http://www.ietf.org/rfc/rfc3174.txt" scope="external">RFC
+3174</xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><i>Hashes in HMAC mode</i> </p> <ul>
+<li id="GUID-551F9056-7110-5002-8495-D31BAFDCFEA8"><p>MD2 </p> </li>
+<li id="GUID-4C0AB778-90A5-5EA8-9C26-29248FA9DF63"><p>MD4 </p> </li>
+<li id="GUID-CC9931AA-B0F4-5832-8C9E-78FBE95F7AEB"><p>MD5 </p> </li>
+<li id="GUID-6307D557-0AA8-5CC0-88D4-464C31FF1960"><p>SHA1 </p> </li>
+<li id="GUID-CD13BA31-4543-5E95-8DB4-F9F790F7816D"><p>SHA-224 </p> </li>
+<li id="GUID-1A2A7EAA-85F5-5516-9590-A2DBA7BBE7FC"><p>SHA-256 </p> </li>
+<li id="GUID-AACCA093-2CD3-55ED-9D80-298DAB45BBFC"><p>SHA-384 </p> </li>
+<li id="GUID-7A6E01DF-635C-5EEA-BD53-3CD47CF50160"><p>SHA-512 </p> </li>
+</ul> <p>HMAC mode is specified in <xref href="http://www.ietf.org/rfc/rfc2104.txt" scope="external">RFC 2104</xref>. </p> <p id="GUID-58FB3D9C-A557-59C7-9AA8-37C77FE9002E"><b>Random
+Number Generator (RNG)</b> </p> <p><xref href="GUID-0B2245C5-766B-5CF1-8A0C-DD98CEEEBB05.dita">RNG</xref> is
+the basis for the cryptographic key generation. It uses the RANROT algorithm
+seeded by random data available on the target hardware (for example free running
+counters available on ARM processers). </p> <p id="GUID-CE692E1B-A0FF-5CF1-8D22-50BC0D12B83A"><b>Supporting
+APIs</b> </p> <ul>
+<li id="GUID-A314831E-84E2-5F33-AF4F-6187020FEB88"><p> <b>Password Based Encryption
+(PBE)</b> — provides an API to encrypt and decrypt data with a user-supplied
+password </p> </li>
+<li id="GUID-FE498ED5-276A-53D1-9283-A4406001B532"><p> <b>Padding</b> — is
+extra bits concatenated with a key, password, or plaintext to make their length
+equal to the block size. It defines the way blocks are filled with data when
+the data to be encrypted is smaller than the block size. Padding is added
+at encryption and checked on decryption. </p> </li>
+<li id="GUID-A8A99555-C8BF-5466-8610-67F55A2B36D5"><p> <b>Big integers</b> —
+arbitrarily large integers. </p> <p>Note that although some functions are
+exported, the intent is that big integers are only for use by the Cryptography
+library and not by application code. Big integers are implemented in <filepath>cryptography.dll</filepath>. </p> </li>
+</ul> <p><b>Implementing CryptoSPI algorithms</b> </p> <p>The guide to CryptoSPI
+is not publicly available, but the following documents show how to use CryptoSPI
+to generate random numbers and create a hash: </p> <ul>
+<li id="GUID-6C8E6AEC-5E02-5608-A9D5-392138EB2538"><p><xref href="GUID-0CD273A2-434C-52E0-B840-CCF24B2853B8.dita">Generating
+random bytes</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8"><title>Recording Audio</title><shortdesc>This tutorial describes how to start, pause and resume, stop and retrieve the audio samples for audio recording. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-5364D394-21F7-5327-BCD3-8F91DB5EEC8D-GENID-1-6-1-17-1-1-11-1-5-1-4-1-5-1-6-1-4-1-3-1"><p>Before you start, you must: </p> <ul><li id="GUID-17398FD3-6EE4-5439-96D3-1E896488AA40"><p>Understand the <xref href="GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita">A3F DevSound Component</xref> to which the DevSound library belongs. </p> </li> <li id="GUID-895B2B05-ADAC-5B15-8117-0536295BD460"><p>Understand the architectural relationship of the DevSound. For information see <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound Overview</xref>. </p> </li> </ul> </prereq> <context id="GUID-1BDA6C77-3A07-5E9D-9550-DA6D48DC17C1"><p>You can perform various functionality in DevSound audio recording that are listed in the below section. </p> </context> <steps id="GUID-19C32465-E50D-585B-8271-4F43F640253D"><step id="GUID-63886A2F-644A-5254-863F-E6321E45E883"><cmd/><info><xref href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita">Starting Audio Record</xref>  </info> </step> <step id="GUID-37C5AC22-4CC5-5857-B77A-A7940BDE03F0"><cmd/><info><xref href="GUID-96B8657D-FC07-5D5C-8ADE-3B2167A9229E.dita">Pausing and Resuming Audio Record</xref>  </info> </step> <step id="GUID-58C9B223-FE59-5718-AD70-E1EF0DEB00D1"><cmd/><info><xref href="GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2.dita">Stopping Audio Record</xref>  </info> </step> <step id="GUID-FAE90C07-5AD0-538A-9EBD-8971E503512A"><cmd/><info><xref href="GUID-D0CD890F-36DB-5265-B2C1-8D632EAF736B.dita">Retrieving Audio Record Samples</xref>  </info> </step> </steps> </taskbody><related-links><link href="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita"><linktext>Playing Audio</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FD2EADD-DC46-516D-B88D-DA523F51C5E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-3FD2EADD-DC46-516D-B88D-DA523F51C5E3" xml:lang="en"><title>Messaging
+Attachments Tutorial</title><shortdesc>The <apiname>MMsvAttachmentManager</apiname> interface is used
+to create, add, modify and remove message attachments. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-CD514843-F4C1-58DA-AB03-4983F90E3B1D"><p>Before you start,
+you must: </p> <ul>
+<li id="GUID-99F09594-6AC4-5265-B02C-15E6BC2579B9"><p>Understand the Messaging
+Framework. </p> </li>
+<li id="GUID-985E8BDA-4636-5182-8EBB-BFAF29A33BC0"><p>Have created a message
+which is to be associated with an attachment. </p> </li>
+</ul> </prereq>
+<steps id="GUID-3AD99C74-0BBE-5F1C-B723-64A3A2EFE072">
+<step id="GUID-DC65ACE2-EFAE-50A7-88C5-B06064AC3673"><cmd/>
+<info><xref href="GUID-91ED5F9C-216D-539D-B4D0-E6F2E087773E.dita">Creating
+attachments to messages</xref>  </info>
+</step>
+<step id="GUID-D20A0BD5-5D58-5EEC-98AD-A8AC2BD20D53"><cmd/>
+<info><xref href="GUID-A09AFA5C-7B2A-503C-A218-987F2F9BF7B8.dita">Adding attachments
+to messages</xref>  </info>
+</step>
+<step id="GUID-96F3A398-2F07-55A7-81DB-D366B5B3BAF2"><cmd/>
+<info><xref href="GUID-D8D698FF-08CD-56B4-A6BF-E185A25F6988.dita">Retrieving and
+modifying attachments to messages</xref>  </info>
+</step>
+<step id="GUID-FCD02EF2-5956-5AAD-AFC8-1F7F1BC1B5C5"><cmd/>
+<info><xref href="GUID-1B363B7B-35E9-5CD9-BC44-A19D94DA1D21.dita">Removing attachments
+from messages</xref>  </info>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-6968BB7C-6459-54E8-A328-49B765735F27.dita"><linktext>Messaging
+attachments guide</linktext></link>
+<link href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita"><linktext>Messaging
+Framework overview</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FD5C609-3727-53B6-900F-ACBE59F62E4A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3FD5C609-3727-53B6-900F-ACBE59F62E4A" xml:lang="en"><title>Storing
+Downloaded Email Messages</title><shortdesc>This tutorial explains how to store incoming email messages.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<section><title>Introduction</title> <p>You can store and restore the incoming
+email message using the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> or <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> function.
+Ensure that you follow these guidelines while using these functions: </p> <ul>
+<li id="GUID-DC272C83-2B74-5A28-A903-1D3385F6E52B"><p>If you want to store
+the downloaded email message data as 16 bit, then storing is slow as the downloaded
+message in 8 bit should be converted to 16 bit before it is stored. However,
+reading and displaying is fast as the email message data is in 16 bit. </p> </li>
+<li id="GUID-50565679-0520-5CE4-9414-888ED2C80C78"><p>If you want to store
+the downloaded email message data as 8-bit, then reading and displaying it
+is slow as the 8 bit email message data should be converted to 16 bit before
+it is displayed. However, storing is fast. </p> </li>
+</ul> </section>
+<section><title>Procedure</title> <ol id="GUID-C6687B65-351F-5E3F-85CC-7F3BA5058BC6">
+<li id="GUID-4BDBAD7C-275B-5D41-A6CC-3DDE93892DF2"><p>For the MTM to use <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> for
+storing downloaded email messages, get the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> object
+using the <xref href="GUID-226C5C17-3AE6-3CAB-BF30-39DCB981574A.dita"><apiname>InitialisePlainBodyTextForWriteL()</apiname></xref> method of <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref>. </p> </li>
+<li id="GUID-F43981C5-C9B3-5108-AA8A-A2BBF2745DF3"><p>Set <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> to
+the ID of the email message that needs to be stored, and open it in the write
+mode. </p> </li>
+<li id="GUID-FE93A682-CF5C-584F-AA86-B089E6F9581C"><p>Use any of the following <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita#GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F/GUID-D1CC07ED-0108-348B-88F4-C89CAB093FE4"><apiname>CMsvPlainBodyText::StoreChunkL()</apiname></xref> methods
+to store incoming data: </p> <ol id="GUID-A6AB4C6B-FFB3-5DBE-BC42-F4F12004C7C1">
+<li id="GUID-535BC8A3-3AFB-564C-A53B-322330B0AF86"><p> <codeph>const</codeph>  <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> <codeph> 
+                    &amp;aChunk, </codeph> <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> <codeph> &amp;aStatus
+                     </codeph>  </p> </li>
+<li id="GUID-33DC423A-A302-5FDC-A0F3-B7F89D226C37"><p> <codeph>const</codeph>  <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> <codeph>&amp;aChunk</codeph>  </p> </li>
+<li id="GUID-0478F9EA-B31D-54E6-9CE4-5EC9C7711F86"><p> <codeph>const</codeph>  <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> <codeph> 
+                    &amp;aChunk, </codeph> <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> <codeph> &amp;aStatus
+                     </codeph>  </p> </li>
+<li id="GUID-F7175033-3CC1-501A-B795-9FFB1875BE7A"><p> <codeph>const</codeph>  <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> <codeph>&amp;aChunk</codeph>  </p> </li>
+</ol> </li>
+<li id="GUID-6BBBDB91-BC15-584B-82A2-ED08D7E2EBD3"><p>After the entire email
+message has been received from the external server, the MTM must call the <xref href="GUID-D7D5B755-456D-3774-ACF9-E4ABC07E5C40.dita"><apiname>CommitL()</apiname></xref> method
+of <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> to complete the store operation. </p> </li>
+</ol> <note> The email server MTM can store the email message that is received
+from the external server either as 8 or 16 bit. When the MTM calls the 16
+bit version of the <codeph>StoreChunkL()</codeph> function, and based on the
+charset information, it must convert the data to Unicode.</note><p>If the
+8 bit version of the<codeph>StoreChunkL()</codeph> function is used for storing,
+and if the MTM wants the email message to be stored as 16 bit (this is indicated
+by the <codeph>TBoolaIs8Bit</codeph> parameter of <codeph>InitialisePlainBodyTextForWriteL()</codeph>), <codeph>CMsvPlainBodyText</codeph> converts
+and stores the email message in 16 bit based on the charset information provided
+while initialising <codeph>CMsvPlainBodyText</codeph>.</p></section>
+</conbody><related-links>
+<link href="GUID-62166BC9-D0BC-5070-BC57-2A1F4948BAFE.dita"><linktext>Restoring
+Email Messages</linktext></link>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FE04A31-C35F-47E2-B615-6C1202FB8485.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3FE04A31-C35F-47E2-B615-6C1202FB8485" xml:lang="en"><title>Accessing
+toolbar items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Each item in the toolbar should have a unique ID. Use these IDs to access
+the toolbar items in your application.</p>
+<p>The example below shows how to access toolbar items using the contol ID.</p>
+<codeblock xml:space="preserve">void CMyAppView::DoSomethingToButton()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknButton* button = static_cast&lt;CAknButton*&gt;( toolbar-&gt;ControlOrNull( KButtonId ) );
+        if ( button )
+            {
+            ...
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FE54688-2CDE-5359-9ABB-B83BFA025A81.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3FE54688-2CDE-5359-9ABB-B83BFA025A81" xml:lang="en"><title>Window-owning
+controls and non-window-owning controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Controls are similar to windows in the Window Server in that they are both
+bounded areas of the screen and both user interface elements. They are not
+synonymous, however, as a control may take up the whole of a window’s area
+or only part of it. For this reason controls are divided into two types: window-owning
+controls and non-window-owning controls. </p>
+<section id="GUID-A9A8EEB4-2E5D-4926-97C7-33A1A0CF67CB"><title>Window-owning controls</title> <p>A window-owning control
+has the same size and position as a window in the Window Server. Window-owning
+controls may overlap each other and may be moved around the screen within
+the bounds of their parent window. Dialogs, menus, toolbars and <keyword>top-level
+controls</keyword> are typically window-owning controls. </p> </section>
+<section id="GUID-E0C33F8A-9A4A-4953-A57C-E96921290086"><title>Non-window-owning controls (lodger controls)</title> <p>The
+majority of controls are non-window-owning. A non-window-owning control’s <keyword>extent</keyword> typically
+covers only part of a window on the screen: usually it is one of a number
+of controls within a larger <keyword>compound control</keyword> which acts
+as a container. </p> <p>Examples of non-window-owning controls include command
+buttons, text boxes and labels. </p> <p>Non-window-owning controls give greater
+efficiency as they require fewer resources in the Window Server and fewer
+process switches. They can also result in faster intialisation and redrawing
+because a compound control and all its non-window-owning components can be
+drawn with a single flush to the window server. </p> </section>
+<section id="GUID-22B830AC-D43C-4FB6-9C5D-1F89AD65EF8F"><title>Associated windows</title> <p>All controls have an <keyword>associated
+window</keyword>, whether they are window-owning or not. For a window-owning
+control the associated window is the window it owns. For a non-window-owning
+control the associated window is the window owned by the nearest window-owning
+control above it in the control hierarchy. </p> </section>
+<section id="GUID-C62985F2-84D3-44C5-BB1E-9576227FBC74"><title>See also</title> <ul>
+<li><p><xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Window server</xref></p></li>
+<li><p><xref href="GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita">Run-time control
+hierarchy</xref></p></li>
+<li><p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita">How to write
+controls</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-3FEEFC4D-19B5-502A-8310-40646B9C34BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-3FEEFC4D-19B5-502A-8310-40646B9C34BC" xml:lang="en"><title>Run
+time cache settings</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+
+<p><b>Read caching </b> </p>
+<p>A client, or multiple clients, may issue repeated requests to read data
+from the same locality within a file. Data that has been read previously that
+is still in the cache can be returned to the client without continuously re-reading
+the data from the media. </p>
+<p> <b>Note</b>: Read caching has little benefit when files are accessed sequentially
+in large blocks, and are never re-read. </p>
+
+
+<p><b>Read ahead caching </b> </p>
+<p>Read ahead caching builds on read caching by detecting clients that are
+performing streaming operations and speculatively reading ahead on the assumption
+that, once the data is in the cache it is likely to be accessed in the near
+future, thus improving performance. </p>
+
+
+<p><b>Write caching </b> </p>
+<p>Write caching is implemented to perform a small level of write back caching
+that overcomes the inefficiencies of clients that perform small write operations
+by consolidating multiple file updates into a single larger write operation,
+thus taking advantage of media that is written on a block basis as well as
+minimising the overhead of metadata updates that the file system performs. </p>
+<section><title>Opening files with different modes</title> <p>The system is
+configured by partners. Read caching, read ahead caching and write caching
+are set on a per drive basis and are one of three states, these are:</p><ul>
+<li><p>ON </p></li>
+<li><p>ENABLED </p></li>
+<li><p>OFF</p></li>
+</ul><p>If caching is set to ENABLED or ON for a drive by the partner then
+you, as the client, can enable or disable caching at run-time on a per file
+basis. However, if caching is set to OFF it cannot be altered at run-time.
+The <codeph>TFileMode</codeph> enumeration supports the run time file caching
+configurations. The file open modes are as follows: </p><codeblock xml:space="preserve">EFileWriteBuffered  =0x00000800, // Enables write buffering
+EFileWriteDirectIO  =0x00001000, // Disables write buffering
+EFileReadBuffered   =0x00002000, // Enables read buffering
+EFileReadDirectIO   =0x00004000, // Disables read buffering
+EFileReadAheadOn    =0x00008000, // Enables read ahead 
+EFileReadAheadOff   =0x00010000  // Disables read ahead</codeblock><p>If the
+values above are not specified when a file is opened then these default settings
+are used:</p><ul>
+<li><p>if caching is set to ENABLED for a drive by the partner then caching
+is OFF by default </p></li>
+<li><p>if caching is set to ON for a drive by the partner then caching is
+ON by default</p></li>
+</ul><note>If caching is set to OFF for a particular drive by the partner,
+caching cannot be enabled.</note><p>Use the <codeph>TFileMode</codeph> values
+with the following functions to alter the way in which an open file is accessed. </p><ul>
+<li><p><xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-72470A68-7E07-30EF-A3C8-AA855CDAF60E"><apiname>RFile::Open()</apiname></xref></p></li>
+<li><p><xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-1EB4AA8F-9363-3EC5-8AE2-1F70F15FCF15"><apiname>RFile::Create()</apiname></xref></p></li>
+<li><p><xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-C2069B9B-04C0-3878-BF08-289DBC83DDF8"><apiname>RFile::Replace()</apiname></xref></p></li>
+<li><p><xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-87D0C77C-CC63-3D70-BACE-3C5EE702BD37"><apiname>RFile::Temp()</apiname></xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4008963F-F4DF-4628-97D4-5B005D699E4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4008963F-F4DF-4628-97D4-5B005D699E4B" xml:lang="en"><title>Porting
+Using P.I.P.S.</title><shortdesc>Symbian platform is a typical platform for open source software
+(OSS) but with the availability of P.I.P.S., developing and porting OSS has
+become easier and quicker. Issues such as size, and licensing are some of
+the things that the developer must carefully analyze before porting. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-400E4702-973A-5CAC-9F9C-3A10121F856A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-400E4702-973A-5CAC-9F9C-3A10121F856A" xml:lang="en"><title>Types of MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the types of MTM plug-in that are defined by the Messaging Framework. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-40113BA1-FFDD-535C-B487-8C9F569E2BC7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-40113BA1-FFDD-535C-B487-8C9F569E2BC7"><title>Windows Overview</title><shortdesc>The vast majority of Window Server applications exist so as to display graphics on the screen. This is done through windows to which the application draws. The Window Server shares the screen between all windows, taking into account each window’s region (its (x,y) coordinates) and ordinal position (how close to the front of the stack of windows it is). </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>: Application developers. </p> <p>All windows have an ordinal position and a parent whose behavior is defined by the base window class, <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref>. This abstract class provides behavior for two quite distinct window types: </p> <ul><li id="GUID-83FE85D3-C9AB-5B6A-A9CB-3256A3C0B02F"><p>Displayable windows, whose abstract base class is <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWindowBase</apiname></xref>. Displayable windows are divided into: </p> <ul><li id="GUID-69D61638-448B-5EB9-921A-39B84D14AA28"><p> <xref href="GUID-A5DFCFA7-7B2D-3872-B6D0-4526DF743630.dita"><apiname>RBlankWindow</apiname></xref> blank windows, which can only be given a position, size and color </p> </li> <li id="GUID-AD3E9047-21BF-5DDA-B1BF-05D1391DDEDA"><p> <xref href="GUID-FDF4BB7E-8750-3564-982A-0124A977C82E.dita"><apiname>RDrawableWindow</apiname></xref> drawable windows to which graphics may be drawn. </p> </li> </ul> <p>See <xref href="GUID-08A6A034-5609-58B0-8EA7-943B2A937B40.dita">Displayable Windows</xref>  </p> </li> <li id="GUID-A31BBC4B-91C0-5604-8A91-71093690EB78"><p>Window group, <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref>, a pseudo-window which can never be seen on screen, but which has an ordinal position and participates in parent/child and sibling relationships as all other windows. </p> <p>See <xref href="GUID-D68E0A64-0E8A-5C52-9C5B-93BA3B80C200.dita">Window Groups and Applications</xref>  </p> </li> </ul> </conbody><related-links><link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-401A07E7-97CF-57BD-B37D-F6412762BBCB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-401A07E7-97CF-57BD-B37D-F6412762BBCB" xml:lang="en"><title>Email Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the concepts that are related to Email collection.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e337428_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-402B5633-1E3A-5F24-8C4F-DA5F04D2557C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-402B5633-1E3A-5F24-8C4F-DA5F04D2557C"><title>Querying URIs from the URI List</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita"><apiname>RInetUriList</apiname></xref> class provides the following APIs for retrieving the information of URIs present in the list: </p> <ul><li id="GUID-6F99901E-B8A4-5E42-B874-066171E88A69"><p>API for retrieving the number of URIs present in the list, based on a given service type and list type: </p> <p> <codeph>TInt Count ( InetUriList::TServiceType aServiceType,
+             InetUriList::TListType aListType )</codeph>  </p> <p>If the URI count of both the lists is required, then set <codeph>aListType</codeph> parameter to <codeph>EBlackList</codeph> and <codeph>EWhiteList</codeph>. </p> </li> <li id="GUID-F4E514BF-BF07-5A4C-8A0D-9121536FB178"><p>API for retrieving the list type of a given URI: </p> <p> <codeph>TInt GetListType ( const TDesC8&amp; aUri,
+             InetUriList::TServiceType aServiceType, InetUriList::TListType&amp; aListType
+             )</codeph>  </p> <p>The list type will be returned through <codeph>aListType</codeph> as an out parameter. If the URI is not found, then return type will be <codeph>KErrUriNotFound</codeph>. </p> </li> <li id="GUID-50D349EE-CA38-54D8-96AB-FA2AAF4AA6F6"><p>API for querying URIs in the list: </p> <p> <codeph>void QueryUriL ( const TQueryArgs&amp; aArgs,
+             MQueryResultsCallback* aQueryCallback, MUriCustomiser* aUriCustomiser =NULL
+             )</codeph>  </p> <p>Based on the the <codeph>TQueryArgs</codeph> parameter, this API supports different query operations. <codeph>TQueryArgs</codeph> is template class which provides four constructors. The argument types for <codeph>TQueryArgs</codeph> can be a combination of URI, service type, list type, and match type. The service type is mandatory for the query operation. Based on the <codeph>TQueryArgs</codeph> parameter combination, the following types of queries can be performed: </p> <ul><li id="GUID-EDB3E659-648E-52C5-AB8C-D572675163F1"><p>Find existence of a URI of a given service type. </p> </li> <li id="GUID-76B6918F-6085-5DF1-946C-A6899EA61E4C"><p>Find all URIs matching the path of a specified URI and service type. </p> </li> <li id="GUID-733C2073-4619-544E-8E40-66E62D96A9C1"><p>Find all URIs matching the domain name of a specified URI and service type. </p> </li> <li id="GUID-5582DFC2-0C78-5D61-B13A-099F1F185AC7"><p>Find all the URIs matching the prefix path of a specified URI and service type. </p> </li> <li id="GUID-6B6427C9-2099-566C-87E6-D6E9C856B5A6"><p>Find all the URIs matching the suffix path of a specified URI and service type. </p> </li> <li id="GUID-3F62B201-A0AB-599F-BB8E-A287401E2495"><p>Find all the URIs of a specified service type and list type. </p> </li> </ul> </li> </ul> <p>The <xref href="GUID-82F7F1DC-127F-3111-A7F0-9F32744A1CA3.dita"><apiname>aQueryCallback</apiname></xref> parameter of the <xref href="GUID-F57CA961-6151-3FBB-9FAB-4D8F507248E7.dita"><apiname>QueryUriL</apiname></xref> API provides a callback interface that needs to be implemented by the calling client. The calling client class should derive from the <xref href="GUID-5D5672DF-DDB0-336B-9A96-DE7D55B937FE.dita"><apiname>MQueryResultsCallback</apiname></xref> class and provide implementation for the <xref href="GUID-5D5672DF-DDB0-336B-9A96-DE7D55B937FE.dita#GUID-5D5672DF-DDB0-336B-9A96-DE7D55B937FE/GUID-399C8754-C6F0-3ED0-A0E9-12EA1B91068A"><apiname>MQueryResultsCallback::OnQueryResultsL()</apiname></xref> function. The optional <xref href="GUID-AC04057D-75D3-3214-86BD-F20AD98AD6A0.dita"><apiname>aUriCustomiser</apiname></xref> parameter of the <xref href="GUID-F57CA961-6151-3FBB-9FAB-4D8F507248E7.dita"><apiname>QueryUriL</apiname></xref> API provides a callback interface for URI customisation by scheme/protocol normalization. The calling client should be derived from the <xref href="GUID-B29E0EB7-BB4C-3E54-A844-182EBC4B159D.dita"><apiname>MUriCustomiser</apiname></xref> class and provide implementation for the <xref href="GUID-B29E0EB7-BB4C-3E54-A844-182EBC4B159D.dita#GUID-B29E0EB7-BB4C-3E54-A844-182EBC4B159D/GUID-5ECB0068-0EFD-3FB6-B229-C911C912ADA5"><apiname>MUriCustomiser::OnUriCustomisationL()</apiname></xref> function. Given below are some code samples for performing different queries. </p> <codeblock id="GUID-4BAAEEC7-50F9-5561-8322-23956F596A29" xml:space="preserve">//Create a Uri
+_LIT8(KUri, “http://www.symbian.com/symbianos/email/index.html”);
+
+//Create a session with the server.
+    RInetUriList uriListObj;
+    uriListObj.OpenL();
+    CleanupClosePushL(uriListObj);
+
+//Construct TQueryArgs object with Uri, service type
+//and match type. 
+    TQueryArgs uriArgs(KUri, EBrowser, EDomain);
+
+//Query the Uri and close the session. 
+    uriListObj. QueryUriL(uriArgs, this);
+    CleanupStack::PopAndDestroy(&amp;uriListObj);
+</codeblock> <p>In the above code sample, all the browsing URIs matching with the domain name <i>www.symbian.com</i> is searched from both BlackList and WhiteList, as list type is not specified. The second parameter is a pointer to the client class that implements the <xref href="GUID-5987B8E8-0036-375A-842A-3D424E655593.dita"><apiname>OnQueryResultsL()</apiname></xref> call back function. For each matching URI that is found, the <xref href="GUID-F57CA961-6151-3FBB-9FAB-4D8F507248E7.dita"><apiname>QueryUriL</apiname></xref> function calls the <xref href="GUID-F79918C2-87E2-34CC-915C-E4D322F747F5.dita"><apiname>OnQueryResultsL</apiname></xref> callback function until it returns <codeph>EFalse</codeph>, or until all matching URIs are passed to it. </p> <p>The match type is a value of enumeration <xref href="GUID-BCEF56E7-FB35-385E-8F22-82F13249E524.dita"><apiname>TURIMatch</apiname></xref>. The searching criteria can be changed by changing the match type. </p> <ul><li id="GUID-E7924DE0-462B-5222-B395-7C31DE9348CA"><p>If the match type is <codeph>EExact</codeph> in the above code sample, only one URI would be returned. </p> </li> <li id="GUID-94D88299-BAF1-52D9-A5E3-1C6DB13D7A2E"><p>If the match type is <codeph>ExactPath</codeph>, all the URIs that have the same scheme, domain name, and path would be returned. These URIs might be different only in fragments. </p> </li> <li id="GUID-646AFE86-0B4B-5684-A12F-7857F5D94825"><p>If the match type is <codeph>EPartialPrefixPath</codeph>, all the URIs matching the prefix path and scheme will be returned. </p> <p>For example, if the incoming URI is http://www.symbian.com/symbianos/, then the following URIs would match if match type is <codeph>EPartialPrefixPath</codeph>: </p> <ul><li id="GUID-ED7958FE-3A49-5416-92D3-4C322961D8E7"><p>http://www.symbian.com/symbianos/email/index.html </p> </li> <li id="GUID-7EA3DA47-FAD8-5662-91D8-4451152F12CA"><p>http://www.symbian.com/symbianos/solutions/solutions.html </p> </li> </ul> </li> <li id="GUID-19E488B2-2213-5D16-AF0E-9EBA3927D5FC"><p>If the match type is <codeph>EPartialSuffixPath</codeph>, then all the URIs matching suffix path and scheme will be returned. </p> <p>For example, if the incoming URI is http://www.symbian.com/index.html, then the following URIs would match if match type is <codeph>EPartialSuffixPath</codeph>: </p> <ul><li id="GUID-B4E59EAA-E080-5CC0-B5DA-51F536ABF814"><p>http://www.symbian.com/symbianos/email/index.html </p> </li> <li id="GUID-38EC342F-BEA0-5E71-8C2F-BDFFA46B8315"><p>http://www.symbian.com/symbianos/index.html </p> </li> </ul> </li> </ul> <codeblock id="GUID-6F662156-4B35-5147-8650-8E8A374DBA0D" xml:space="preserve">//Create a session with the server.
+    RInetUriList uriListObj;
+    uriListObj.OpenL();
+    CleanupClosePushL(uriListObj);
+
+//Construct TQueryArgs object with service type and 
+//match type.
+    TQueryArgs uriArgs(EBrowser);
+
+//Query the Uri and close the session. 
+    uriListObj. QueryUriL(uriArgs, this, this);
+    CleanupStack::PopAndDestroy(&amp;uriListObj);
+</codeblock> <p>The above code sample retrieves all browser URIs of both BlackList and WhiteList types. To retrieve all the URIs for all service types, the caller has to loop for all service types. The third argument of <xref href="GUID-F57CA961-6151-3FBB-9FAB-4D8F507248E7.dita"><apiname>QueryUriL</apiname></xref> indicates that the caller has implemented the <xref href="GUID-422B212E-FE6B-369F-8A6C-ADF8D3D9A1E2.dita"><apiname>OnUriCustomisationL()</apiname></xref> callback function, and so the URI will be passed to this callback function for normalization before being passed for a query. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-402C3EE7-8852-49B6-BE62-8588753FAC8F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-402C3EE7-8852-49B6-BE62-8588753FAC8F" xml:lang="en"><title>Constructing
+the toolbar</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><p>Construct the toolbar either for your entire application or for
+an application view. If a view has no toolbar specified, the application specific
+toolbar is used for the view.</p>        <p> The UI framework creates the
+toolbar automatically during application initialization when it is properly
+defined in the resource files. After the toolbar has been created, you can
+receive a pointer to it using <codeph>CAknAppUi</codeph>, <codeph>CEikAppUiFactory</codeph> or <codeph>CAknView</codeph> methods.
+The method to use depends on whether the application specific or view specific
+toolbar pointer should be received. For more information, see <xref href="GUID-BC3207BF-9E9F-4BA0-8F01-B72228110A61.dita">Accessing
+the toolbar from applications or application views</xref>.</p><p>The toolbar
+destruction is also handled by the framework when the application execution
+ends. </p><p>The <codeph>EIK_APP_INFO</codeph> structure’s <codeph>custom_app_info_extension</codeph> refers
+to the <codeph>EIK_APP_INFO_EXT</codeph> element. The element contains links
+to the resource structure of the toolbar. The contents of the application-specific
+toolbar can be defined in the <codeph>AVKON_TOOLBAR</codeph> resource definition.
+The toolbar can also be specified to be view-specific by linking to its resource
+structure from the <codeph>AVKON_VIEW</codeph> resource structure. If a view
+has no toolbar specified, the application-specific toolbar is used for the
+view.</p><p>Use the <codeph>AVKON_TOOLBAR</codeph> resource definition to
+define the toolbar contents. </p><p>If the toolbar is application specific,
+refer to the toolbar definition from the <codeph>EIK_APP_INFO_EXT</codeph> resource
+structure. In case of a view specific toolbar, refer to the toolbar definition
+from the <codeph>AVKON_VIEW</codeph> structure.</p>           <p>The <codeph>AVKON_TOOLBAR</codeph> resource
+definition contains a list of toolbar items. Each item is defined as <codeph>TBAR_CTRL</codeph> structure.</p> 
+         <p>The example below shows how to define an application toolbar in
+resources.</p>           <codeblock xml:space="preserve">RESOURCE EIK_APP_INFO
+    {
+    cba = r_softkeys_options_next;
+    menubar = r_myapp_menubar;
+    custom_app_info_extension = r_myapp_info_extension;
+    }
+
+RESOURCE EIK_APP_INFO_EXT r_myapp_info_extension
+    {
+    popup_toolbar = r_myapp_fixed_toolbar;
+    }</codeblock><p>The example below shows how to define a toolbar for an
+application view in resources.</p>           <codeblock xml:space="preserve">RESOURCE AVKON_VIEW r_myapp_fixed_view
+    {
+    menubar = r_myapp_menubar;
+    toolbar = r_myapp_fixed_toolbar;
+    cba = r_softkeys_options_next;
+    }</codeblock><p>Use the <codeph>TBAR_CTRL</codeph> resource definition
+to define toolbar controls. You can also <xref href="GUID-58318BAB-2EC4-4C9E-A7CA-580E701EE54F.dita">add
+controls later dynamically</xref> in your application code. </p> <p>The example
+below shows how to define a fixed toolbar with three buttons in resources.</p><codeblock xml:space="preserve">RESOURCE AVKON_TOOLBAR r_myapp_fixed_toolbar
+    {
+    flags = KAknToolbarFixed;
+    items =
+        {
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdFirst;
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        txt = "First";
+                        helptxt = "First help";
+                        }  
+                    };
+                };
+            },
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdSecond;
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        txt = "Second";
+                        helptxt = "Second help";
+                        }  
+                    };
+                };
+            },
+        TBAR_CTRL
+            {
+            type = EAknCtButton;
+            id = ECmdThird;
+            control = AVKON_BUTTON
+                {
+                flags = 0;
+                states =
+                    {
+                    AVKON_BUTTON_STATE
+                        {
+                        txt = "Third";
+                        helptxt = "Third help";
+                        }  
+                    };
+                };
+            }
+        };
+    }
+</codeblock><p>The example below shows how to define a floating toolbar with
+items to be added dynamically at runtime.</p><codeblock xml:space="preserve">RESOURCE AVKON_TOOLBAR r_myapp_floating_toolbar
+    {
+    flags = KAknToolbarWithoutCba;
+    items =
+        {
+        // Created dynamically
+        };
+    }
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e172894_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE" xml:lang="en"><title>Handling
+stylus pop-up menu events and commands</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>At the construction phase, <codeph>CAknStylusPopUpMenu</codeph> is given
+a <codeph>MEikMenuObserver</codeph> object, which is usually a pointer to
+the application’s UI (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><codeph>CAknAppUi</codeph></xref>)
+or another class that implements the interface. The stylus pop up menu will
+grab the stylus event when one of its items is tapped on and it will then
+report the item’s command ID to the menu observer. It is then up to the application
+to handle the command in the implementation of <codeph>MEikMenuObserver::HandleCommandL()</codeph>. </p>
+<p>When an item is  tapped, the menu calls its observer's (iMenuObserver)
+ProcessCommandL. Typically the observer is application's AppUi. It is then
+the observer's responsibility to handle the command appropriately. The observer
+is informed with KErrCancel if the menu is closed without making a selection.</p>
+<p><draft-comment time="2008-05-15T15:38" translate="no">Add sample code on event and command
+handling here.</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e7551_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-40671EEC-DACC-5F0B-978C-2794FB206E62.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-40671EEC-DACC-5F0B-978C-2794FB206E62" xml:lang="en"><title>Types
+of error and recovery</title><shortdesc>Describes error conditions and how errors are handled.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Error conditions can be divided into three broad categories:</p>
+<ul>
+<li id="GUID-5E06C730-C4DC-5E09-A7F1-8101BC8B6AFC"><p>program errors, such
+as an attempt to access an element beyond the bounds of an array or buffer</p> </li>
+<li id="GUID-DFCB0C57-A2BB-55DF-BA2A-FC0D5D3C9F45"><p>environment errors,
+such as insufficient memory, insufficient disk space, or other missing resources</p> </li>
+<li id="GUID-AD65EABD-573A-5A03-B59B-50A1DE7219DF"><p>user errors, such as
+an attempt to enter bad data in a dialog, an invalid action in, say, a word
+processor, or bad syntax in a source file</p> </li>
+</ul>
+<p>Program errors are checked by asserts (<codeph>__ASSERT_DEBUG</codeph> macro),
+and are signalled by a panic. Recovery from such errors involves re-writing
+part of the program that contained the error. </p>
+<p>Environment and user errors can be handled in broadly two ways:</p>
+<ul>
+<li id="GUID-7DAF8642-F413-5332-958C-A7B31C1BDD1F"><p>If they can be detected
+before an action is performed, then a return value other than <codeph>KErrNone</codeph> is
+a convenient means to signal the error.</p> <p>This method is simple to program,
+and cleanup requirements, if they exist at all, are often easy to identify
+and handle.</p> </li>
+<li id="GUID-4561F90D-E7C0-5D5C-AB33-4F2C25D7C4F1"><p>Alternatively, the program
+can use the exception handling and cleanup techniques discussed in this section.</p> <p>This
+method is more appropriate when the detection of an error occurs deep inside
+the processing of a requested action: if the error return value method were
+used, every function would have to return such an error and cleanup requirements
+would have to be handled for virtually every function call. The logic becomes
+repetitive and it’s easier to incorporate it into an exception-handling scheme.</p> </li>
+</ul>
+<p>When programming for possible environment or user error conditions, bear
+in mind both approaches for handling them, and choose the most suitable one.</p>
+<p>Applications must perform proper cleanup when an exception occurs, because
+they are designed to run for long periods (months or even years) without interruption
+or system re-boot. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e165946_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14"><title>Feature Discovery Overview</title><shortdesc>Provides a set of APIs that are used to initate a feature discovery operation. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Feature discovery provides a set of APIs to discover if a feature or feature set is supported and available. </p> </section> <section><title>Required background</title> <p>The feature management system uses the standard client server architecture that is the feature manager server does the work associated with the feature management functionality. Communication between the application and the server is undertaken by two dlls which contain the required API. </p> </section> <section><title>Architecture</title> <p>The relationship between the parts of the feature management system is : </p> <fig id="GUID-FAFC39CE-B585-5C3F-A6DA-DE4BFEB8CE31"><title>
+             Architecture of the feature management system 
+          </title> <image href="GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326412_href.png" placement="inline"/></fig> </section> <section id="GUID-044747C8-90DF-5C93-B0E1-310F283E8894"><title>APIs</title> <p>This component provides one set of APIs that can be used to communicate with the feature management server. </p> <table id="GUID-C141A34B-4F52-5520-B107-E05271DDF614"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-7C19450F-41CF-3293-B8BF-4A4D6F795155.dita"><apiname>TFeatureSet</apiname></xref>  </p> </entry> <entry><p>Used to determine if multiple features are supported. </p> </entry> </row> <row><entry><p> <xref href="GUID-2C9E6E72-2858-37A1-9D43-4E8086569520.dita"><apiname>CFeatureDiscovery</apiname></xref>  </p> </entry> <entry><p>Used to determine if a feature is supported. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The APIs provided by this dll are for use by third parties </p> <ul><li id="GUID-DBC7434D-75B2-5186-BBBE-308B037F513D"><p>A third party app wants to find out if the device can execute it : there is no point installing an application needing a camera, if one is not present on the device. </p> </li> <li id="GUID-E9646304-09F3-5F28-84AA-A462DA630A97"><p>For the above, they would use the API provided by featmgr.dll. </p> </li> <li id="GUID-2A691994-0025-5039-A704-1573F2D13418"><p>Would be used to check if the required feature (and assumed framework) is present. </p> </li> </ul> <p>Use cases: </p> <ul><li id="GUID-691330F6-5CE0-536E-B796-F5EF7D281FCC"><p>Query a single feature. </p> </li> <li id="GUID-15001873-E802-5A0C-AC11-FB3FC3B30F67"><p>Query multiple features. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager Overview</linktext> </link> <link href="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita"><linktext>Feature Manager Client
+                Overview</linktext> </link> <link href="GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita"><linktext>Feature Manager Server Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3-master.png has changed
Binary file Symbian3/SDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e172844_href.png has changed
Binary file Symbian3/SDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e223038_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-40CA47C0-76F9-42FE-AF9D-0B1BF42ACCB7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-40CA47C0-76F9-42FE-AF9D-0B1BF42ACCB7" xml:lang="en"><title>Compound
+controls</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A simple control is one that contains no other control. The term <i>compound
+control</i> or <i>container</i> refers to a control that contains one or more
+other controls. The contained controls may themselves be compound controls.
+When a control is contained in a compound control it is called a component
+control. Compound controls can be used to group non-window-owning controls
+in window-owning controls or to allow several controls to be handled together.</p>
+<p>For more information on compound controls, see <xref href="GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094.dita">Compound
+controls in traditional architecture</xref> and <xref href="GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A.dita">Compound
+controls in the view architecture</xref>.</p>
+<p>Examples of a compound control include:</p>
+<ul>
+<li><p>a view that displays text in the <i>main</i> pane</p>
+<itemgroup>
+<p>typically this is handled by using the methods of the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikLabel.html" format="application/java-archive"><parmname>CEikLabel</parmname></xref> class,
+which is a non-window-owning control, in a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+view</p>
+</itemgroup>
+</li>
+<li><p>a view that contains a listbox in the <i>main</i> pane</p>
+<itemgroup>
+<p>typically this is handled by using the methods of the Lists API in a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view</p>
+</itemgroup>
+</li>
+<li><p>a view the contains a grid in the <i>main</i> pane</p>
+<itemgroup>
+<p>typically, this is handled by using the methods of the Grids API in a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view</p>
+</itemgroup>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-40E64445-CBA3-59E4-A777-937609B311C9" xml:lang="en"><title>Contacts
+Model Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The purpose of this document is to give
+guidelines on how to use the Contacts Model API most efficiently for a range
+of typical operations. The Contacts Model is an engine component that provides
+access to contact information stored on a Symbian OS device. Just like a real-world
+address book it stores and organises names, telephone numbers, addresses and
+other details of individuals and companies. It can be used to add, delete
+and edit data as well as providing information to clients, and sorting and
+searching contacts. </p> </section>
+<section><title>Architectural Relationships</title> <p>The Contacts Model
+is primarily used by messaging, telephony, synchronisation and vCard viewer
+clients on a Symbian OS device. </p> <fig id="GUID-79192704-415D-530B-8FEB-F73A5C93D0C2">
+<title>              CONTACTS MODEL CLIENTS            </title>
+<image href="GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e351317_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Description</title> <p>The <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita"><apiname>CContactDatabase</apiname></xref> class
+allows clients access to the contact data stored on the device and has the
+following functionality: </p> <p><b>Contact database management </b> </p> <p>More than one Contact Database
+can exist on a phone, but a default Contact Database is used if no other is
+specified. Clients can open, close, alter and delete the Contact Database.
+Extra databases can be added as required. The Contact Database can be moved
+between drives, and can be compressed in order to save space. </p> <p><b>Contact items management </b> </p> <p>Contact Items are made up of Contact
+Fields and can be added to and removed from the database. Items in the database
+can be opened, read, sorted and deleted. An item must be opened before it
+can be edited. Editing an item often means altering data in one or more fields,
+such as name or telephone number. To provide different sorting views Contact
+Items can be grouped in categories such as ‘colleagues’ or ‘family’. </p> <p><b>Searching the database </b> </p> <p>Searching <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita"><apiname>CContactDatabase</apiname></xref> implements
+searching and sorting and also provides separate phone number matching functions.
+These provide a fast way of indexing and looking up phone numbers, for example,
+for looking up caller IDs on incoming calls. </p> <p><b>Speed dial functionality </b> </p> <p>The database owns speed dial information.
+This is a mapping between a single digit integer and a telephone number. There
+may be up to nine speed dial telephone numbers. If a Contact Item is deleted,
+its speed dial mapping is removed. </p> <p><b>Notification of changes </b> </p> <p>The database needs to be informed
+of data changes made to it. Sometimes a UI-level application may need to respond
+to updates made by other clients. The Contacts Model provides an observer
+to transmit this information between <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita"><apiname>CContactDatabase</apiname></xref> instances. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e219835_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D" xml:lang="en"><title>Soft
+notifications</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Soft notifications are reminders that inform the user of events that have
+occurred in the user's absence, or while the mobile device user was busy with
+some application. Text and graphics, can be used to communicate the message
+to the user. Soft notifications are displayed in pop-up windows in the Idle
+state.</p>
+<p>The user can respond to the soft notification by using the softkeys. The
+left softkey is used for activating a function, for example opening a message
+that has arrived. The right softkey is used to discard the notification without
+taking any further action.</p>
+<fig id="GUID-2D75DDCF-D36A-442F-82B5-7F0B4AF03FB5">
+<title>Soft notification indicating new messages</title>
+<image href="GUID-CF4F515D-433C-4E9D-AA20-56AF6572D5BF_d0e61549_href.png" scale="33" placement="inline"></image>
+</fig>
+<p>Soft notifications are displayed only in the Idle state. If an event that
+causes a soft notification (for example, a missed call) occurs when an application
+is active, it may cause other kinds of UI events to notify the user, but if
+the user does not react to these, the soft notification appears only after
+the phone is put in the Idle state if the event still requires it.</p>
+<p>The application that launched a soft notification can control it and also
+discard it. It is possible to use the S60 key during a soft notification;
+in that case, the soft notification disappears, but reappears when the user
+returns to the Idle state, unless the application responsible for the notification
+has discarded it.</p>
+<p>Soft notifications can be displayed for the user in two different appearances:</p>
+<ul>
+<li><p><b>Ungrouped soft notification:</b> These notifications contain one
+piece of information each. The appearance of the notification window is the
+same as that of a note. The example in the figure below is an
+ungrouped soft notification. </p></li>
+<li><p><b>Grouped soft notification:</b> Many different items of information
+can be combined into one soft notification where the items are displayed as
+a list. The user can pick up one of the items at a time and react to it. The
+appearance of this soft notification type is the same as the appearance of
+a List query (see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>).</p></li>
+</ul>
+<fig id="GUID-87927C7F-7AFE-40CB-AEDF-FD5987A7A219">
+<title>Grouped soft notification. The height of the window is dynamic and
+depends on the number of lines in the list.</title>
+<image href="GUID-74248E6A-0EA7-4F69-85AD-2D49B02D0212_d0e61586_href.png" scale="33" placement="inline"></image>
+</fig>
+<section><title>Using soft notifications
+in C++ applications</title><p>The API to use for soft notifications is the Notifiers
+API. For implementation information, see Using
+the Notifiers API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4102F39E-6215-44AD-9E30-6D8E86114D7D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4102F39E-6215-44AD-9E30-6D8E86114D7D" xml:lang="en"><title>Creating
+the long-tap detector</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To use the long-tap detector in your application, create an instance of
+the class <codeph>CAknLongTapDetector</codeph>.</p>
+<p>You must give the long-tap detector constructor a pointer to the owner;
+otherwise the detector doesn’t know where to report long tap events. </p>
+<p>You cannot set other long-tap detector parameters in the constructor. To
+change these parameters, use the other methods in the API after the detector
+is succesfully constructed. </p>
+<p>You also need to pass any pointer events from the client side component
+to the long-tap detector and enable pointer grab for the control’s window.</p>
+<codeblock xml:space="preserve">void CMyContainer::ConstructL( const TRect&amp; aRect )
+    {
+    …
+    iLongTapDetector = CAknLongTapDetector::NewL( this );
+    DrawableWindow()-&gt;SetPointerGrab( ETrue );
+    …
+    }
+
+void CMyContainer::HandlePointerEventL( const TPointerEvent&amp; aEvent )
+    {
+    …
+    iLongTapDetector-&gt;PointerEventL( aEvent );
+    …
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e92428_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-411ACFE6-0324-4330-ABCD-97A925759A3C" xml:lang="en"><title>Resource
+management example: HelloWorldBasic</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>This section uses the <i>HelloWorldBasic</i> example provided with the
+Symbian SDK to illustrate some of the basic issues associated
+with using resource files when making applications for the Symbian OS. In
+particular, this section explains the contents of the resource and registration
+resource files used in the <i>HelloWorldBasic</i> application in terms of:</p>
+<ul>
+<li><p><xref href="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita">helloworldbasic.rss</xref></p>
+</li>
+<li><p><xref href="GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita">HelloWorldBasic_reg.rss</xref></p>
+</li>
+</ul>
+<p>The <i>HelloWorldBasic</i> application, in addition to printing "Hello
+World!" on the screen, also demonstrates displaying text with Information
+Note and loading strings with the help of StringLoader,
+writing to and reading from a file and use of a dialog to inquire for user
+input. Furthermore, the <i>HelloWorldBasic</i> application has been localized
+to four different languages.</p>
+<p>For more information about the available example applications, see the
+Symbian SDK example folder at:</p>
+<ul>
+<li><p><parmname>&lt;S60_SDK_installation_directory&gt;\S60CppExamples\</parmname></p>
+</li>
+</ul>
+<note>
+<p>The application documentation is in the <parmname>doc</parmname> subfolder.</p>
+</note>
+<p>The other parts of this example are commented in <xref href="GUID-84D864EE-D893-43EC-A191-560FC74BF74B.dita"></xref>.</p>
+<p>For more information about resource files, see <xref href="GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita">Managing
+resource files</xref>.</p>
+<section id="GUID-CE8A3826-F7DE-4E3C-96A3-53ABA03776CF"><title>Pre-requisites</title>
+<p>The example can be found in the Symbian SDK and can be compiled and
+run with the accompanying command line tools.</p>
+<p>It is also recommended that you have a target device to which you can
+deploy the application. </p>
+<p>For more information on the software requirements for compiling and
+running <i>HelloWorldBasic</i>, see <xref href="GUID-8DB6E28B-C49D-41D5-A563-A7D7CE3DF652.dita"></xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09" xml:lang="en"><title>SIP High
+Level API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The SIP High Level API encapsulates the SIP call flows inside the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> APIs.
+The following SIP functionality is supported using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> APIs: </p>
+<ul>
+<li id="GUID-0A13EB92-CD3F-5F33-AE9F-3333BDFB5B03"><p>REGISTER - An application
+that wants to start a SIP session must register to the SIP server. For more
+information, see <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-02CBB3C7-9B7C-5B49-8F29-56F235FF320E">Registration</xref>. </p> </li>
+<li id="GUID-63D5BA93-28C1-5CE6-A1AD-78AD21EF5C6F"><p>INVITE - An invite session
+is created for activities such as setting up a voice call, and a game session.
+For more information, see <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-EE044B0B-4664-57DA-BAE1-F9A3B99C453C">Session
+initiation</xref>. </p> </li>
+<li id="GUID-40206112-EC3B-57EF-B316-F7C938EB2118"><p>SUBSCRIBE - SIP supports
+subscription to events for example, message waiting, notifying the subscriber
+about the current state of the event and any changes to its state. For more
+information, see <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-BF804D44-35A2-5997-9706-B48C2C30F2BE">Initiating
+a session using SUBSCRIBE</xref>. </p> </li>
+</ul>
+<p>The <codeph>INVITE</codeph> and <codeph>SUBSCRIBE</codeph> methods must
+be registered. <xref href="GUID-A412D2E5-C4BE-33F7-A610-ECBD1BD6BBF9.dita"><apiname>CSubConSIPInviteParamSet</apiname></xref> and <xref href="GUID-8ABE119B-CF5D-3FED-A26F-E889AE6B7663.dita"><apiname>CSubConSIPSubscribeParamSet</apiname></xref> classes
+provide the parameters. </p>
+<p> <b>Note</b>: SIP High Level API is included in the Symbian OS from version
+9.2 onwards. </p>
+<section id="GUID-02CBB3C7-9B7C-5B49-8F29-56F235FF320E"><title>Registration</title> <p>An
+endpoint, for example a SIP enabled phone, that wants to start a SIP session
+must use <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> to register with the SIP registrar.
+For more information about RConnection, see<xref href="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita">Connection
+Management</xref> . <xref href="GUID-506C0ECB-9424-3579-877E-1435F76B2594.dita"><apiname>ESOCK</apiname></xref> provides an interface for the
+user to access the SIP high level API. <xref href="GUID-506C0ECB-9424-3579-877E-1435F76B2594.dita"><apiname>ESOCK</apiname></xref> interacts
+with the SIP high level API through the <codeph>Connection</codeph> and <codeph>SubConnection</codeph> providers.
+Connection and SubConnection providers are <codeph>ESOCK</codeph> server side
+components that are loaded and called when <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> APIs
+are used. </p> <p>The following figure shows the architectural layer where
+the application interacts with SIP connection providers using SIPPARAMS. The
+second layer comprising <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>, <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>,
+and <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> constitute the SIPPARAMS. </p> <fig id="GUID-57FDC30F-E5AD-5C9D-8D80-71B35CB905D4">
+<title>              Interface of Connection and Sub Connection.         
+  </title>
+<image href="GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e318604_href.png" placement="inline"/>
+</fig> <p>The SIP high level API models the SIP with Connection and SubConnection
+providers and makes it stackable against the unified comms-infras architecture.
+This enables the future connection convergence. </p> <p><b> Initial setup</b> </p> <p>A
+profile data store is required to get registered with the SIP Registrar. A
+SIP registration profile is a data store containing the information required
+for registration such as AOR which is the IP address of registrar. The data
+profile must contain the following fields: </p> <ul>
+<li id="GUID-9419A4E2-40DB-52E4-9B70-89DEF5594CF6"><p>data profile type: Internet,
+IMS, others </p> </li>
+<li id="GUID-36207215-4ECE-5D08-AEFB-6D801DBA0902"><p>profile name IETF, IMS,
+others </p> </li>
+<li id="GUID-FF904FF9-9D4B-5B34-986F-8F565BDE8E41"><p>IAP name </p> </li>
+<li id="GUID-C66C0664-B9A8-59C8-8C44-88634D7D2E94"><p>profile AOR list (IP
+address) </p> </li>
+<li id="GUID-D85CF1F0-98CA-5947-90EB-0C4D0B96EBCC"><p>autoregistration </p> </li>
+<li id="GUID-FC499704-39DC-55E1-80EC-3A3F8F0A8C53"><p>private ID </p> </li>
+<li id="GUID-ED9C3D8E-A8CC-5D65-B381-81EC51264980"><p>security negotiation </p> </li>
+<li id="GUID-B400C58A-E180-54B7-A536-7B7103CD4274"><p>sigcomp </p> </li>
+<li id="GUID-AB1D459F-CCEA-5D20-8FCE-02939F716093"><p>server (IP address of
+registrar, outbound proxy) </p> </li>
+<li id="GUID-999CAACE-4E8F-5EDA-877E-2A46580D9BA9"><p>server param (username,
+realm, pwd) </p> </li>
+<li id="GUID-B4AAE1EE-1A67-5FBE-8F75-9BCB01E2ECE2"><p>default </p> </li>
+</ul> <p>Manual registration by specifying parameters is not possible. If
+connection details are not available, the connection is set up using the default <filepath>profile.flag</filepath> file. </p> <p id="GUID-D17BC438-09C2-58E9-ABE8-F18B8A285B4D"><b>Creating an RConnection</b> </p> <p>Create
+an <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> to register to the SIP Registrar using the
+following steps. <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> must be opened on an existing
+socket server session, <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>. </p> <codeblock id="GUID-AC8B369E-1DC8-5868-95E2-B09FCFE4987E" xml:space="preserve">RSocketServ    socketServer;        // Create a client interface object to the socket server
+RConnection    con;                        // Create an RConnection object
+TRequestStatus status = KErrNone;                // object to hold the request completion status
+
+// Establish the connection to the Socket server
+
+User::LeaveIfError(socketServer.Connect());        // Returns KErrorNone if the connection is successful
+CleanupClosePushL(socketServer);
+
+TUint KAFSip = 0x10000;             //SIP protocol family id
+TInt err = con.Open (socketServer,KAFSip);            //open the connection
+TInt err1 = con.Start();                    // Start Rconnection to initiate the registration
+</codeblock> <p>When registration to the SIP registrar is successful, <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> is
+used to establish the SIP Invite or SIP Subscribe session. The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> that
+is established and opened are used for either inviting a call session or subscribing
+for the message status. </p> </section>
+<section id="GUID-565742FA-20AB-57A8-AB81-19664F9B2BC8"><title>Session initiation</title> <p><b>SIP
+Params</b> </p> <p>SIPPARAMS is used to simplify the interaction with the
+SIP stack by abstracting the SIP functionality using the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> APIs.  It
+supports the basic SIP functionality. The complete SIP functionality is made
+available through the SIP stack APIs. </p> <p id="GUID-EE044B0B-4664-57DA-BAE1-F9A3B99C453C"><b>Initiating
+a session using INVITE</b> </p> <p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> is used
+to establish a SIP Invite session. A SIP invitation starts when an endpoint
+such as a VoIP Softphone or VoIP Hardware tries to establish a session with
+a remote compliant endpoint. A successful SIP invitation consists of an INVITE-OK-ACK
+triplet message exchange. The calling endpoint tries to start a session with
+SIP INVITE. This is followed by OK from the called endpoint, and by ACK from
+the calling endpoint that finally establishes the SIP session. </p> <p>A SIP
+session can be terminated by using BYE-200OK message exchange. Either the
+calling or the called party can initiate the termination. </p> <p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> establishes
+the SIP session using the three way communication of INVITE-OK-ACK and terminates
+the call using BYE-200OK. </p> <p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> when
+used on behalf of the calling endpoint, handles the message exchange independently
+and provides the status whether the session is established, denied or not
+reachable. The calling endpoint must fill the necessary SIP session parameters
+that are used to determine the target. </p> <p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> when
+used on behalf of the called endpoint alerts the user of an incoming call
+such as a SIP invitation. The incoming call can be either accepted or rejected
+using <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. The application is notified about
+the outcome. The information about the calling endpoint is provided in a set
+of specific parameters. </p> <p>The SIP parameters for an outgoing call is
+set using <xref href="GUID-A412D2E5-C4BE-33F7-A610-ECBD1BD6BBF9.dita"><apiname>CSubConSIPInviteParamSet</apiname></xref> class. The following
+code shows how to initiate a call. It is assumed that you have already registered
+with the SIP registrar by creating an <codeph>RConnection</codeph> object
+and called <codeph>Open()</codeph>. For more information, see <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-D17BC438-09C2-58E9-ABE8-F18B8A285B4D">Creating an RConnection</xref>. </p> <codeblock id="GUID-0DCB4778-33E7-5604-A7C4-ED534B48FA33" xml:space="preserve">RSubConnection    subCon;    // Create an RSubConnection object
+err=subCon.Open(socketServer,RSubConnection::ECreateNew,con); // Open subconnection onto the Rconnection
+</codeblock> <p>Set the SIP Invite parameters. The following code shows how
+to set the SIP Invite parameters. </p> <codeblock id="GUID-904E8A67-646D-5589-9144-60D4C2598A62" xml:space="preserve">RSubConParameterBundle     sipBundle;            // create parameter bundle
+
+// create SIP parameter set family
+CSubConParameterFamily * family = CSubConParameterFamily::NewL(sipBundle,KSubConnCallDescrParamsFamily);
+
+// create invite parameter set object
+CSubConSIPInviteParamSet* sip = CSubConSIPInviteParamSet::NewL(*family,CSubConParameterFamily::ERequested);</codeblock> <p>Set
+the SIP header values to the parameter set. The following code shows how to
+set the SIP header values to the parameter set. </p> <codeblock id="GUID-E298FDDC-28CE-506D-A301-B5F04DC7D7AD" xml:space="preserve">_LIT8(KTo,"Sip:user@10.112.165.91");        //'To' header, SIP URI of called endpoint
+TPtrC8 ptrTo(KTo());
+sip-&gt;SetToL(ptrTo);         //Set'To', the target SIP URI to the SIP parameter set
+
+_LIT8(KFrom, "Sip:user@10.112.165.62");        //'From' header, SIP URI of the calling endPoint
+TPtrC8 ptrFrom(KFrom());
+sip-&gt;SetFromL(ptrFrom);                //Set the 'From' header field to the SIP parameter set
+
+_LIT8(KContact,"Sip:user@10.112.165.62");            //'Contact' header, the actual location of the calling endpoint
+TPtrC8 ptrContact (KContact());
+sip-&gt;SetContactL(ptrContact);                //Set the 'Contact' to the SIP parameter set 
+
+_LIT8(KRequestUri, "Sip:user@10.112.165.91");    //Request URI, the actual Next hop or the Target
+TPtrC8 ptrRequestUri(KRequestUri());
+sip-&gt;SetRequestUriL(ptrRequestUri);             //Set the 'RequestUri' to the SIP parameter set</codeblock> <codeblock id="GUID-916B4C73-B97B-5EC0-A70E-EFDD0FB51210" xml:space="preserve">TInt err = SubCon.SetParameters(sipBundle);         //Set The SIP parameters in the SubConnection
+sipBundle.Close();                    //close the parameter bundle</codeblock> <p id="GUID-8676EB5B-FA5D-51EC-9FAD-C36BB29A6392"><b>Establishing the INVITE
+session</b> </p> <p>To establish the SIP Invite session, use <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> to
+start the subconnection. This initiates the Invite request. </p> <codeblock id="GUID-4A8E0FB2-7096-583F-9DF6-D0B2255F618A" xml:space="preserve">//Start the subconnection, effectively sending an Invite
+TInt subConRet = subCon.Start(); 
+// Session is established</codeblock> <p id="GUID-BF804D44-35A2-5997-9706-B48C2C30F2BE"><b>Initiating
+a session using SUBSCRIBE</b> </p> <p>An endpoint subscribes to a specific
+service using a SIP SUBSCRIBE-200OK message exchange. The end point is notified
+by means of a NOTIFY-200OK message exchange. To send the subscription and
+receive notifications use <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> is
+also used to unsubscribe, which stops any further notifications. </p> <p>The
+following code shows how you subscribe to a session and receive notifications.
+It assumes that you have already registered with the SIP registrar by creating
+an <codeph>RConnection</codeph> object and calling <codeph>Open()</codeph> on
+it as explained in <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-D17BC438-09C2-58E9-ABE8-F18B8A285B4D">Creating
+an RConnection</xref> section. </p> <codeblock id="GUID-B68FF753-0D48-54C2-8DE1-282658CE96BA" xml:space="preserve">RSubConnection    subCon;// Create an RSubConnection object
+// Open subconnection onto the Rconnection
+err=subCon.Open(socketServer,RSubConnection::ECreateNew,con);
+</codeblock> <p>Set the SIP Subscribe parameters using <xref href="GUID-8ABE119B-CF5D-3FED-A26F-E889AE6B7663.dita"><apiname>CSubConSIPSubscribeParamSet</apiname></xref>.
+This class provides the SIP subscribe parameters that are passed through the
+subconnection to the SIP stack. </p> <codeblock id="GUID-3512DB0A-EE9E-5B59-92D5-46F65CB9F4B4" xml:space="preserve">RSubConParameterBundle     sipBundle;                 //    create parameter bundle
+
+//create SIP parameter set family
+CSubConParameterFamily * family = CSubConParameterFamily::NewL(sipBundle,KSubConnCallDescrParamsFamily);
+
+// create subscribe parameter set object
+CSubConSIPSubscribeParamSet* sip = CSubConSIPSubscribeParamSet::NewL(*family,CSubConParameterFamily::ERequested);</codeblock> <p>Set <codeph>the
+required information that is, to</codeph>, <codeph>from</codeph>, <codeph>contact,</codeph> and <codeph>reqURI</codeph> header
+values to the SIP subscribe parameter set as explained in <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-EE044B0B-4664-57DA-BAE1-F9A3B99C453C">Initiating a session using INVITE</xref> section. </p> <codeblock id="GUID-11671200-F24E-5278-9408-EE75399B25C2" xml:space="preserve">// Set the required information
+_LIT8(KEventType, "messagewaiting");    // subscription event type
+TPtrC8 ptrEventType (KEventType());
+sip-&gt;SetEventTypeL(ptrEventType);     //Set the subscription event type to 'messagewaiting'
+
+_LIT8(KAcceptType,  "application");    //accept type
+TPtrC8 ptrAcceptType(KAcceptType());
+sip-&gt;SetAcceptTypeL(ptrAcceptType); //set the accept type field to 'application'
+
+_LIT8(KAcceptSubType,   "indication"); //accept subtype
+TPtrC8 ptrAcceptSubType(KAcceptSubType());
+sip-&gt;SetAcceptSubTypeL(ptrAcceptSubType);    //set the accept subtype
+
+sip-&gt;SetExpires(3600);    // set the subscription Refresh timings
+
+sip-&gt;SetAutoRefresh(ETrue); // set Auto Refresh to 'on' 
+
+// pass SIP subscribe parameters through the subconnection
+Tint err = subCon.SetParameters(sipBundle);
+sipBundle.Close(); //close the parameter bundle
+
+subCon.Start();    // Start the subscription
+</codeblock> <p>To receive notifications to the subscribed events, <xref href="GUID-106A74C7-9B70-3397-973C-E317C1F40C58.dita"><apiname>CSubConSIPNotificationEvent</apiname></xref> class
+is used. </p> <codeblock id="GUID-4D3A9189-1AA5-5275-A5B6-425085006A25" xml:space="preserve">// Wait and receive notifications to events
+while(ETrue)
+{
+TNotificationEventBuf evtBuf;         // Sub-connection event notification object
+
+    TRequestStatus reqStatus;             // request status object
+
+    User::WaitForRequest(reqStatus);
+    TInt eventId = evtBuf.Id();                     // get sub-type id
+    TInt groupId = evtBuf.GroupId();         // get group id of the event
+
+if (eventId == KSubConSIPNotificationEventType &amp;&amp; groupId == KSubConSIPEventsUid)
+        {
+                CSubConSIPNotificationEvent * evtRes = (CSubConSIPNotificationEvent*)CSubConNotificationEvent::NewL(evtBuf);
+                CleanupStack::PushL(evtRes);    
+                ....................
+                ....................
+                CleanupStack::PopAndDestroy(evtRes);    
+
+            // Since We do not want to receive more notifications in this stage, break from the loop.
+
+                break;
+        }
+
+// we can wait again for another notification
+subCon.EventNotification( evtBuf,EFalse, reqStatus);  //request for notification
+}</codeblock> <p>Unsubscribe to events and unregister, refer to steps in the <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-FB267A38-FFB3-5360-9DC8-3E42C5C546A4">Terminating
+the session</xref> section. </p> <p><b>Setting authentication parameters</b> </p> <p>A
+remote party or a server may require authentication before it allows an endpoint
+to establish a session with another endpoint. <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> provides
+an authentication mechanism where the authentication information such as realm,
+username and password must be provided while initiating the call. If a challenge
+is received then <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> provides the realm and
+initiates a new session with authentication parameters. </p> <p>Authentication
+parameters are set in a subconnection parameter bundle as shown in the following
+code fragment. Set the SIP authenticate parameter set using <xref href="GUID-155DBCFD-76A4-3852-855E-0E0E8F1EC775.dita"><apiname>CSubConSIPAuthenticateParamSet</apiname></xref>.
+This class provides the SIP authenticate parameter values that are passed
+through the subconnection to the SIP stack. </p> <codeblock id="GUID-BE7DB575-79EE-5D13-B3CB-041579DD5D57" xml:space="preserve">RSubConParameterBundle     sipBundle;                         //    create parameter bundle
+// Add authorisation parameters as new family
+CSubConParameterFamily * family1 = CSubConParameterFamily::NewL(sipBundle,KSubConAuthorisationFamily );
+
+// create authenticate parameter set object
+CSubConSIPAuthenticateParamSet * authParam = CSubConSIPAuthenticateParamSet::NewL(*family1,CSubConParameterFamily::ERequested);
+</codeblock> <p>Set <codeph>the required information that is, to</codeph>, <codeph>from</codeph>, <codeph>contact</codeph>, <codeph>reqURI</codeph> header field values to the SIP authenticate parameter set, similar to that
+in <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-EE044B0B-4664-57DA-BAE1-F9A3B99C453C">Initiating
+a session using INVITE</xref> section. </p> <codeblock id="GUID-55C1E9B8-B6CB-565D-9163-31421965C01A" xml:space="preserve">_LIT8(KRealm, "SFTF");
+_LIT8(KUserName, "MyUserName");
+_LIT8(KPwd, "pass123");
+
+authParam-&gt;SetRealmL(KRealm);    //set the Realm parameter
+authParam-&gt;SetUserNameL(KUserName);    // set the username
+authParam-&gt;SetPasswordL(KPwd);                    //set the password
+
+TInt err = subCon.SetParameters(sipBundle); //set the Authenticate parameters to the subconnection
+sipBundle.Close();                    //close the parameter bundle</codeblock> <p>To
+terminate the call session or unsubscribe to events and unregister, follow
+the steps in <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita#GUID-4120651F-E0B9-5927-96B9-2662C51F5A09/GUID-FB267A38-FFB3-5360-9DC8-3E42C5C546A4">Terminating
+the session</xref> section. </p> </section>
+<section id="GUID-FB267A38-FFB3-5360-9DC8-3E42C5C546A4"><title>Terminating
+the session</title> <p>To terminate the SIP INVITE or SUBSCRIBE session: </p> <ul>
+<li id="GUID-E1DABB93-F761-554F-82F9-78CAF0116A2C"><p>send BYE message by
+closing the <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> session </p> </li>
+<li id="GUID-D8757702-DB58-5F75-A00A-9251B3975CFF"><p>unregister with the
+SIP registrar by closing the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> session. </p> </li>
+</ul> <codeblock id="GUID-F5281FE3-651C-5DAD-9569-5A7C967233F0" xml:space="preserve">Int ret = subCon.Stop();    // Terminate the session, send BYE message
+
+subCon.Close();        // close the subconnection
+
+con.Stop();      // Terminate the connection
+
+con.Close();        // Close the connection </codeblock> </section>
+<section id="GUID-B6F7F947-1E4B-4DFD-80B4-70E5E890685A"><title>See also</title> <p> <xref href="GUID-FA4F1E9F-8775-51E4-99DD-D334E73319C5.dita">Socket
+Server Protocols Overview</xref>  </p> <p> <xref href="GUID-6BB74A83-C6EA-5BC2-B60F-8186CC896725.dita">Sockets
+Client Overview</xref>  </p> <p><xref href="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita">Connection
+Management</xref></p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-412CB101-A92C-54E1-9518-79E94DD40A08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-412CB101-A92C-54E1-9518-79E94DD40A08" xml:lang="en"><title>Video Subtitle CRP Component</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502"><title>Font Store Component Overview</title><shortdesc>The Font Store contains all of the fonts and typefaces on a phone. It is encapsulated by the Font and Bitmap server which provides a client-side class that applications use to find which fonts are available and to find fonts to match their requirements. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Font Store component is sometimes called the <b>Open Font System</b> or <b>Open Font Framework</b>. </p> <section><title>Required background</title> <ul><li id="GUID-5081B96C-4FC7-5881-8D4C-F09B9A843D99"><p>You require no background knowledge or experience use the Font Store using the Font and Bitmap Server interfaces. </p> </li> <li id="GUID-AFE1A3F5-E64C-52F5-AADF-7DF2ECEABF4F"><p>You require no background knowledge or experience to add new font files to the Font Store. You must simply copy the files to the appropriate location. </p> </li> <li id="GUID-A67D26EC-93E2-55F7-9277-24DDAAC1E04B"><p>To create a font file or a font rasterizer, you require an in-depth knowledge of fonts and Symbian programming. </p> </li> </ul> </section> <section><title>Key concepts and terms</title> <p>See <xref href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita#GUID-90644B52-69D7-595C-95E3-D6F7A30C060D/GUID-9F33DD34-F5E5-5EA0-8559-7A933D230129">Concepts and Terms</xref> in the <xref href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita">Font and Text Services Collection Overview</xref>. </p> </section> <section><title>Architectural relationships</title> <p>The Font Store can contain three types of font: bitmap fonts, which are stored as fixed-size pixel definitions; open fonts, which may be stored in any format; and linked fonts, which use characters from two or more other fonts. Open fonts must be converted into bitmaps (rasterized) before they can be used so the Font Store must also contain a font rasterizer for each format of open font. </p> <p>Fonts are stored on Symbian phones as files. The Font Store maintains a list of font files along with specifications for each font that the file contains. When an application requests a font the Font Store searches its list for the best match. If the font is a bitmap font the Font Store loads it into the Font and Bitmap Server's shared heap (unless the font is in eXecute In Place (XIP) ROM, in which case it is accessed directly from ROM). If the font is an open font the Font Store uses the associated open font rasterizer to rasterize glyphs into the heap as they are required. Font rasterizers are ECOM plugins. </p> <fig id="GUID-E823CA77-1B9E-5E0A-BBC3-D99F29D22BBD"><title>
+             Font Store relationships 
+          </title> <image href="GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e376399_href.png" placement="inline"/></fig> </section> <section><title>Font Store API summary</title> <p>The Font Store contains APIs for specifying and selecting fonts and for rasterizing open fonts. </p> <table id="GUID-2F133AAE-E960-58A0-84C8-C0807D79FA24"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-25D4B920-6158-3014-8E7D-4E1C5267C5EF.dita"><apiname>CBitmapFont</apiname></xref>  </p> </entry> <entry><p>Bitmap-based font object </p> </entry> </row> <row><entry><p> <xref href="GUID-54E7330D-F794-39EC-8A59-72669ED5F5CF.dita"><apiname>CFontStore</apiname></xref>  </p> </entry> <entry><p>Central font storage class </p> </entry> </row> <row><entry><p> <xref href="GUID-623C40B5-A8FB-3FEE-9F92-254CAB580C5B.dita"><apiname>CLinkedTypefaceGroup</apiname></xref>  </p> </entry> <entry><p>Linked fonts typeface group </p> </entry> </row> <row><entry><p> <xref href="GUID-6BE49D00-7174-3FEC-A944-FE4A5228C13E.dita"><apiname>CLinkedTypefaceSpecification</apiname></xref>  </p> </entry> <entry><p>Linked font creation </p> </entry> </row> <row><entry><p> <xref href="GUID-DDFD0FCB-8413-3FF2-A8D7-A052C30592C9.dita"><apiname>CLinkedTypefaceElementSpec</apiname></xref>  </p> </entry> <entry><p>Linked font typeface element spec </p> </entry> </row> <row><entry><p> <xref href="GUID-039375D3-AFD9-3E31-9C1C-ACEDC10E27CE.dita"><apiname>COpenFont</apiname></xref>  </p> </entry> <entry><p>Generic outline font object </p> </entry> </row> <row><entry><p> <xref href="GUID-FC62EDD7-A3F7-3611-A899-CA5F17BB2EEE.dita"><apiname>COpenFontFile</apiname></xref>  </p> </entry> <entry><p>Open font file </p> </entry> </row> <row><entry><p> <xref href="GUID-CA16238D-478A-302A-9671-97B62B0E738A.dita"><apiname>COpenFontRasterizer</apiname></xref>  </p> </entry> <entry><p>Open font rasterizer </p> </entry> </row> <row><entry><p> <xref href="GUID-20F3E896-46D2-3385-99E5-2EB19F9D301F.dita"><apiname>COpenFontRasterizerContext</apiname></xref>  </p> </entry> <entry><p>Open font rasterizer context </p> </entry> </row> <row><entry><p> <xref href="GUID-06F847E3-B60B-3159-87FE-66F1F75A36B2.dita"><apiname>TAlgStyle</apiname></xref>  </p> </entry> <entry><p>Algorithmic style attributes </p> </entry> </row> <row><entry><p> <xref href="GUID-56CFD361-6DD7-3C21-81A6-D538FA10EAE7.dita"><apiname>TCharacterMetrics</apiname></xref>  </p> </entry> <entry><p>Character information </p> </entry> </row> <row><entry><p> <xref href="GUID-53F6508E-8911-3363-BC07-A0E7BCE29199.dita"><apiname>TLinkedTypeface</apiname></xref>  </p> </entry> <entry><p>Linked fonts </p> </entry> </row> <row><entry><p> <xref href="GUID-BECBB72B-9FA1-317D-A413-B94AB1DCBE90.dita"><apiname>TOpenFontAttachment</apiname></xref>  </p> </entry> <entry><p>Diacritic attachment point information </p> </entry> </row> <row><entry><p> <xref href="GUID-493119E1-65DF-3517-98A4-55E874023BBB.dita"><apiname>TOpenFontCharMetrics</apiname></xref>  </p> </entry> <entry><p>Open font character metrics </p> </entry> </row> <row><entry><p> <xref href="GUID-2408A284-3F1A-325C-BDCB-5B1B12CDA0C9.dita"><apiname>TOpenFontFaceAttrib</apiname></xref>  </p> </entry> <entry><p>Open font typeface information </p> </entry> </row> <row><entry><p> <xref href="GUID-76FDED57-C10E-3B09-B9C5-0FA1118A2774.dita"><apiname>TOpenFontFaceAttribBase</apiname></xref>  </p> </entry> <entry><p>Basic open font typeface information </p> </entry> </row> <row><entry><p> <xref href="GUID-AAE1F96F-03A8-36CD-9D3D-AD106B873663.dita"><apiname>TOpenFontGlyphData</apiname></xref>  </p> </entry> <entry><p>Open font glyph information </p> </entry> </row> <row><entry><p> <xref href="GUID-00FAE7BA-3E49-3DF4-923F-DC35A879900C.dita"><apiname>TOpenFontMetrics</apiname></xref>  </p> </entry> <entry><p>Open font information </p> </entry> </row> <row><entry><p> <xref href="GUID-3E94D613-029F-3A6F-B979-C756C745C828.dita"><apiname>TOpenFontSpec</apiname></xref>  </p> </entry> <entry><p>Open font specification </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Font Store tasks</title> <p>The following functionality is provided by the <codeph>fntstore</codeph> subsystem component: </p> <ul><li id="GUID-E851A049-1C7F-513F-8CA8-DDE4A1D5069B"><p> <b>Font loading </b>  </p> <p>Font file loading using plug-in font rasterizers if required. </p> </li> </ul> <ul><li id="GUID-684260D8-4FF2-5099-BF22-FF0A6A56A7A1"><p> <b>Font request matching</b>  </p> <p>Closest-fit matching of font requests. </p> </li> </ul> <ul><li id="GUID-E4C5B016-EF51-5E1F-A3F8-CF455EF5840D"><p> <b> Font linking</b>  </p> <p>The creation and use of <xref href="GUID-5042997F-4B8C-538D-B1E0-DD82F5283BB6.dita">Linked Fonts</xref> – virtual fonts that are made out of one or (usually) more physical fonts. These can be used to: </p> <ul><li id="GUID-693DA237-AFBF-5294-A4A5-854124B2DEA0"><p>Combine multiple character ranges from individual fonts into a single font. </p> </li> <li id="GUID-33B69D75-24FC-567C-AAE6-71222823458A"><p>Allow an existing font containing a particular script to be customized to use regional variant characters. </p> </li> <li id="GUID-4A331581-B834-54C8-82C6-84DC8AD09337"><p>Allow a comprehensive range of scripts to be built into a device ROM and multiple possible subsets to be defined and used by software configuration. </p> </li> </ul> <p>Linked fonts are primarily used for system fonts. The fact that a font is a linked font is invisible to the user. </p> </li> </ul> </section> <section><title>Platform security information</title> <p>Font data files are installed in the read-only folder <codeph>\resource\fonts</codeph>. </p> </section> </conbody><related-links><link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext> Font and Text Services Collection
+                Overview</linktext> </link> <link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext> Font and Bitmap Server Component Overview
+                </linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF"><title>Recording media files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use the MVS to record audio or video signals to media files. To record an audio signal, first connect a microphone; to record a video signal, connect a camera. </p> <p>To record a media file, choosing the plugin controller: </p> <ol id="GUID-21FF8CB3-6ABF-57EA-9438-F67C05C0F267"><li id="GUID-E630FEB5-CB97-5D45-A86B-38F9517810AA"><p>In the <i>File</i> menu, click <i>Open for Record</i>. The <i>Choose a plugin</i> dialog box is displayed. </p> <fig id="GUID-AA9201C4-D27E-55F3-886E-1DD6434ED74A"><title>
+                Choosing a format when recording audio 
+             </title> <image href="GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e303317_href.jpg" placement="inline"/></fig> <p> <b>Note:</b> If you don't want to choose a plugin controller manually, click <i>Cancel</i> in the <i>Choose a plugin</i> dialog box: the <i>Save as</i> dialog box is displayed. In the <i>Save as</i> dialog box, enter the target file name <b>including</b> its extension; the controller appropriate to the extension is loaded automatically. If there is no appropriate controller, a <systemoutput>Not Supported</systemoutput> message is displayed. </p> </li> <li id="GUID-DB6C4923-F8E3-5A1B-8DDF-AE2F7340F16F"><p>Select the <i>Media Type</i> to record by clicking either the <i>Audio</i> or <i>Video</i> option button. </p> </li> <li id="GUID-2816B901-71F7-5312-987B-71663C56F21D"><p>Select the <i>Supported Format</i> from the drop-down list. The corresponding plugin <i>Controller</i> is selected automatically. </p> <p> <i>Note</i>: To check which controllers are supported by the system: </p> <ul><li id="GUID-3B711334-11F3-5897-BF48-3797B037F1FA"><p>In the <i>File</i> menu, click <i>System Info</i>. The controllers are listed: </p> </li> </ul> <fig id="GUID-1EA1C9FF-9418-5A0F-B6BD-10823AB02782"><image href="GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e303388_href.jpg" placement="inline"/></fig> </li> <li id="GUID-2686BEA7-6C48-5947-A973-20D2C08C6F0A"><p>Click <i>Next</i>. The <i>Save as</i> dialog box is displayed. </p> </li> <li id="GUID-AD83CA64-2516-5B01-BEAC-1214E3186A47"><p>In the dialog box, enter the names of the disk drive and folder to contain the file, or select them from the lists. </p> </li> <li id="GUID-4C9BB013-9929-52FF-8745-9AA8CF2798CF"><p>In the dialog box, enter the name of the file, without an extension, to contain the recorded audio or video. </p> </li> <li id="GUID-1D722345-887C-5452-B92B-A1A5B7A444AE"><p>Click <i>OK</i> to save the file. </p> </li> </ol> <p>The next steps depend on whether you are <xref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita#GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF/GUID-0D57579C-C574-5949-BBE4-CCFEC4CD9895">Recording an audio file</xref> or <xref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita#GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF/GUID-9DBC71E1-7258-5ED7-A281-DBB693B7EBF3">Recording a video file</xref>. </p> <section id="GUID-0D57579C-C574-5949-BBE4-CCFEC4CD9895"><title>Recording an audio file</title> <p>If you are recording an audio file, the <i>Configure Audio Format</i> dialog box is displayed. </p> <fig id="GUID-C0681190-3134-50E1-BDAD-D3B1CC47DDDC"><image href="GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e303441_href.jpg" placement="inline"/></fig> <ol id="GUID-2FACE122-52A6-5949-8045-2E507A56825D"><li id="GUID-82109DB5-6DBF-5B6D-8648-BA67E54456BE"><p>In the dialog box, select: </p> <ul><li id="GUID-D05A0ECE-31DE-5956-BE66-7A038DC2521B"><p>the codec </p> </li> <li id="GUID-F0FA4CF0-D170-5C30-989C-DBE687FCB84F"><p>the bit rate </p> </li> <li id="GUID-6CFA67A1-8382-5923-8C43-3D8B0205E50A"><p>the number of channels (1 = mono, 2 = stereo) </p> </li> <li id="GUID-7F1240FF-095B-5797-B58D-A59016B2A4DE"><p>the sample rate in bits per second. </p> </li> </ul> </li> <li id="GUID-47E557A2-EBA9-5D1B-95AE-CC526D0E2E27"><p>If required, click the <i>Restore Settings</i> check box to restore the previous settings or - if there are none - the default settings. </p> </li> <li id="GUID-7B1E1951-8BB7-5FDE-A42C-EB4F5EA0B3F7"><p>Click <i>OK</i> to save the settings. </p> </li> <li id="GUID-8D27C825-F2A0-565D-A8CF-5574E409C25A"><p>To start recording, click the tool bar <i>Record</i> button, or in the <i>Controls</i> menu, click <i>Record</i>. </p> </li> </ol> </section> <section id="GUID-9DBC71E1-7258-5ED7-A281-DBB693B7EBF3"><title>Recording a video file</title> <p>If you are recording a video file, the <i>Standard Video Record format</i> dialog box is displayed. </p> <fig id="GUID-932B7767-3A96-52EF-A7E5-AADAEAB689C9"><image href="GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e303514_href.jpg" placement="inline"/></fig> <ol id="GUID-5C816EB4-24E7-5698-B43C-9DDF6A535283"><li id="GUID-993FDFAD-5BD8-57C9-AD67-ED66C0CB8A8C"><p>In the dialog box, select: </p> <ul><li id="GUID-957F8EC1-905D-5BBB-96CD-A27E928C75C6"><p>the video mime type </p> </li> <li id="GUID-A57D4FDA-FC81-5551-9FED-3199E16315A0"><p>the video frame rate </p> </li> <li id="GUID-24B2A5F5-7C3B-5F5A-B4CE-C4899F3B527C"><p>the video frame size in pixels (width, height). </p> </li> </ul> </li> <li id="GUID-31F7C6FD-9084-5345-8D6C-E87BE0D180E7"><p>To record audio with the video signal, click the <i>Enable Audio</i> check box. </p> </li> <li id="GUID-6E508C9D-2451-59EA-80FE-F6B2678BC702"><p>If required, click the <i>Restore Settings</i> check box to restore the previous settings or - if there are none - the default settings. </p> </li> <li id="GUID-A55FBF03-BE08-51E6-9D8C-830C863505B1"><p>Click <i>OK</i> to save the settings. </p> </li> <li id="GUID-4020A3B4-7357-59E8-A03F-15664C68BA8E"><p>To start recording, click the tool bar <i>Record</i> button, or in the <i>Controls</i> menu, click <i>Record</i>. </p> <ul><li id="GUID-E9165BDC-0EF6-5B72-A3C6-2F8E12933613"><p>To pause recording, click the tool bar <i>Pause</i> button, or in the <i>Controls</i> menu, click <i>Pause</i>. To un-pause the file and resume recording, click the tool bar <i>Record</i> button, or in the <i>Controls</i> menu, click <i>Record</i>. </p> </li> <li id="GUID-4C1D6B0F-F080-5329-9F66-AB03010BA7A7"><p>To stop recording, click the tool bar <i>Stop</i> button, or in the <i>Controls</i> menu, click <i>Stop</i>. </p> </li> </ul> </li> </ol> </section> <section><title>See Also</title> <p> <xref href="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita">Introduction to the MVS</xref> </p> <p> <xref href="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita">MVS GUI layout</xref> </p> <p> <xref href="GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita">Playing media files</xref> </p> <p> <xref href="GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita">Editing media files</xref> </p> <p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita">Configuring and clearing files</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-419BD5DC-6264-59FB-8EF4-E5652440A060.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-419BD5DC-6264-59FB-8EF4-E5652440A060" xml:lang="en"><title>JPEG Image Frame Plug-in Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-41A36790-CB11-4620-A2D5-1981077E5753.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-41A36790-CB11-4620-A2D5-1981077E5753" xml:lang="en"><title>Touch
+strategies</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-B8132E14-2B27-4471-BEC8-4975AAB69C76"> <p>In the Symbian
+touch UI, there are two main interaction strategies in use: focus and select,
+and direct selection. Focus and select emulates the functionality of the scroll
+key: the user taps on an item to move the focus to it, and then taps a second
+time on the focused item to initiate the action. In direct selection, the
+interaction happens on the first contact.</p><ul>
+<li><p>In the Symbian touch UI, basic stylus interaction is achieved through
+short tap. In a short tap, the stylus is placed down and lifted up again on
+the same item within a short period of time. </p></li>
+<li><p>When selecting items, for example, from a list, first a short tap moves
+the focus onto a given item and the second short tap performs the set function.
+There is no time dependency between the taps. </p><fig id="GUID-C31EEFC8-CE88-493E-A5EC-25195B7C01D2">
+<image href="GUID-5801535A-3A7E-4E35-97F5-0DC6C7730952_d0e46861_href.png" scale="60" placement="inline"></image>
+</fig></li>
+<li><p>In some views, for example in the application menu, short tap selects
+the item directly</p><fig id="GUID-8FF0F504-3E5F-4973-A7EB-66E850F4698B">
+<image href="GUID-60BBE390-0CA5-4064-86E5-39A31CE2AB82_d0e46869_href.png" scale="60" placement="inline"></image>
+</fig></li>
+</ul><p>Touch down and hold and Touch down and drag are direct selection events,
+where the user taps on the screen and holds the touch for a period of time,
+or strokes the screen without lifting the stylus up. Touch down and hold can
+be used, for example, on lists (see also Lists
+API) to open a <xref href="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita"><b>stylus
+pop-up menu</b></xref>. </p><ul>
+<li><p><b>Touch and hold</b> functions best as a shortcut to more information
+or options, when manipulating an object. However, as it may not be implicit
+to the users which items have touch down and hold events attached to them,
+the design should not rely solely on the use of these events.</p></li>
+<li><p><b>Tap and hold</b> or <b>long tap</b> can be used for providing, for
+example, contextual options, stylus pop-up menu or help, which can also be
+available through the Options menu. </p></li>
+<li><p><b>Touch down and drag</b> can be used, for example, in applications
+where users move items from one location to another. </p></li>
+<li><p><b>Strokes</b> in different directions or on different areas of the
+touch screen can trigger certain actions. For example, in an image viewer
+application, the user can swipe the screen with the stylus horizontally to
+go to the next or previous image. See <xref scope="external" href="http://www.forum.nokia.com/info/sw.nokia.com/id/567330dd-130f-4f1d-9380-fac5aec5a6a9/S60_Platform_Image_Converter_Example.html">Image converter application</xref> for an example implementation.</p></li>
+</ul><p>The Symbian platform provides the possibility of <xref href="GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita">tactile
+feedback</xref> for each touch screen event. For more information, see <xref href="GUID-21DAC50D-7737-42B6-BBDA-E12E8779741B.dita">Feedback</xref>.</p><p>In
+addition to the basic touch events and customized strokes, the Symbian platform
+supports <b>sensors</b> which allow for more complicated <b>gestures</b>.
+Gestures involve interacting with the whole device, such as tapping the side
+of the device, or shaking the device. Gestures are not obvious for the user,
+and must be either discovered easily, or communicated clearly.</p><p>Sensors
+can work together with the UI to allow for more complicated gesture combinations.
+When the interaction is based on detecting movement of a handheld device,
+the user interface becomes as tangible as the device itself. This provides
+a new user interface paradigm where the whole physical device can be used
+for performing gestures. For more information, see <xref href="GUID-AE979B97-5610-42F3-99A7-5A3D66D3C2E6.dita">Sensor
+interaction</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561-master.png has changed
Binary file Symbian3/SDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e281230_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-41D80358-473F-5B50-A09A-4F5601EAC4A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-41D80358-473F-5B50-A09A-4F5601EAC4A9" xml:lang="en"><title> Framework Developer Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Framework or Application designers of the plug-in framework understand interface definition design and platform security implications. They define interface definitions, extend interfaces of the framework and also provide the required resolution and upgrading mechanism.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-41F1AED1-7BE6-42CF-BC4A-E913A6F2D5E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-41F1AED1-7BE6-42CF-BC4A-E913A6F2D5E6" xml:lang="en"><title>Deleting
+an Alarm</title><shortdesc>Introduction to topic for overview page or search</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>RASCliSession::AlarmDelete()</codeph> API deletes
+an alarm from the Alarm Server and returns <codeph>KErrNone</codeph> if successful
+as shown in the following code fragment:</p><codeblock xml:space="preserve">// RASCliSession::TheAlarmServerSession is the alarm server session 
+// TAlarmId::id is the unique identifier of the alarm the client needs to delete 
+TheAlarmServerSession.AlarmDelete( id );</codeblock><p><b>Deleting an Alarm
+by Category</b></p> <p>You can delete multiple alarm objects by category and
+can also specify the type of alarms within this category. The following code
+fragment illustrates how to delete alarms by category:</p><codeblock xml:space="preserve">// Delete all alarms
+RArray&lt;TAlarmCategory&gt; categories;
+CleanupClosePushL( categories );
+TheAlarmServerSession.GetAvailableCategoryListL( categories );
+const TInt KAlarmCategoriesCount = categories.Count();
+for( TInt i = 0; i&lt;KAlarmCategoriesCount; ++i )
+    {
+    const TAlarmCategory category = categories[i];
+    TheAlarmServerSession.AlarmDeleteAllByCategory( category, EFalse );
+    }
+CleanupStack::PopAndDestroy( &amp;categories );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-41F33130-7968-5016-9ACE-9E9F906118DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-41F33130-7968-5016-9ACE-9E9F906118DB" xml:lang="en"><title>Using POSIX Signals</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A POSIX signal is a software equivalent of an interrupt. To handle a signal, a signal handler (which is a function) must be registered for that signal. On receipt of the signal, the operating system stops the process at its point of execution and executes the signal handler. The signal handler may terminate the process. If it does not, the OS resumes the process at the point it stopped. For this reason signals can be used as a form of IPC within a process or between two or more co-operating processes. </p> <p>Signals are broadly classified into two types: </p> <ul><li id="GUID-7C76E732-29E3-52C3-B757-D9755ABDE96F"><p> <b>Non-realtime signals :</b> Non-realtime signals inform a process about system events. For example, <codeph>SIGINT</codeph> signifies a user interrupt request (typically from a console). You can use the <codeph>SIGUSR1</codeph> and <codeph>SIGUSR2</codeph> signals to define custom (user-defined) signals for your program. </p> </li> <li id="GUID-30AC114F-EB7F-59C8-8E9D-03816D8E7A42"><p> <b>Real-time signals:</b> As the name signifies, real-time signals inform a process about the occurrence of real-time events, such as high-resolution timer expiration, explicit signal delivery and asynchronous I/O completion. Real-time signals are different from non-realtime signals in the following ways: </p> <ul><li id="GUID-9F352345-C466-52E2-AD82-491F7B0A8028"><p>They are delivered in the order they are generated. </p> </li> <li id="GUID-B386608A-1137-5ED0-B4FB-B78413ABA40E"><p>When a real-time signal is delivered to a process and is blocked, first it is queued. Later, if the same real-time signal is delivered to the process again, it is queued once again. But for non-realtime signals, the signal is queued only once (when it is blocked) regardless of the number of times it is delivered to a process. </p> </li> </ul> <p>Real-time signals are in the range <codeph>SIGRTMIN</codeph> to <codeph>SIGRTMAX</codeph>. You can refer to real-time signals using the notation <codeph>SIGRTMIN+n</codeph>. For example, <codeph>SIGRTMIN</codeph>, <codeph>SIGRTMIN+1</codeph>, <codeph>SIGRTMIN+2</codeph>, ... <codeph>SIGRTMAX</codeph>. </p> </li> </ul> <p> <b>Note:</b> Real-time signals are subject to the same latency as non-realtime signals in P.I.P.S. </p> <p>The following topics describe how POSIX signals are emulated on Symbian platform. They also describe how you can use these signals when you develop POSIX compliant applications or port POSIX-based applications to Symbian platform. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798-master.png has changed
Binary file Symbian3/SDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e262473_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4263CC05-EF13-5A2C-875C-72F3C2F6AB57.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4263CC05-EF13-5A2C-875C-72F3C2F6AB57" xml:lang="en"><title>Reading
+Email Messages Using the Rich Text API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to read email messages using the rich text API. </p>
+
+<section><title>Introduction</title> <p>You can download and store email messages
+using any of the following interfaces, and read them using the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> API. </p> <ul>
+<li id="GUID-924CB365-C6D7-5A06-AA8C-0B183F630149"><p> <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref>  </p> </li>
+<li id="GUID-102EC633-14C4-5CDE-B56A-E2F6800B928B"><p> <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref>  </p> </li>
+<li id="GUID-27705FA3-83E7-5A41-8439-DD29CBBFA12E"><p> <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref>  </p> </li>
+</ul> </section>
+<section><title>Procedure</title><p>To read an email message using the CRichText
+class, complete the following steps: </p><ol>
+<li id="GUID-EFDB277B-D0A7-42E8-B337-02CA737B4F72"><p>Use the <codeph>TMsvId aMessageId</codeph> parameter of the downloaded
+email to create the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class. </p></li>
+<li id="GUID-94010CC4-603E-46DA-B691-355758A13C24"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class to create the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object
+class.</p></li>
+<li id="GUID-FFB38DCA-0805-454E-88F1-2B6505A16710"><p>Use the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-57CA3F50-33EA-359B-AABB-4E4E15AF2A18"><apiname>CImEmailMessage::GetBodyTextL()</apiname></xref> function
+to get the body text in the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class.</p></li>
+</ol></section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-426BADE5-64CF-525A-B4E3-21C40D7B4AB2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-426BADE5-64CF-525A-B4E3-21C40D7B4AB2" xml:lang="en"><title>Key
+type</title><shortdesc>This document describes the types of keys available.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Keys can be one of three types, selected by choosing the appropriate constructor:</p>
+<ul>
+<li id="GUID-25CFC355-D590-5196-B766-3DB8727383C9"><p>Descriptor type</p> </li>
+<li id="GUID-5D483033-57FB-5392-BB9E-6A95BD95CE3D"><p>Text type</p> </li>
+<li id="GUID-F175A48C-4884-5F2C-ACA7-80A5B0548319"><p>Numeric type</p> </li>
+</ul>
+<section id="GUID-3FC96607-8E7B-4067-A43A-3661FC050C90"><title>Descriptor type</title> <p>The key is defined to be a descriptor,
+i.e. an object derived from <codeph>TDesC</codeph>. In practice, a descriptor
+key within an array element is one of the types: <codeph>TPtrC</codeph>, <codeph>TPtr</codeph>, <codeph>TBufC</codeph> or <codeph>TBuf</codeph> (but
+not an <codeph>HBufC</codeph>).</p> <p>For a Unicode build, they are defined
+as <codeph>TDesc16</codeph>, <codeph>TPtrC16</codeph>, <codeph>TPtr16</codeph>, <codeph>TBufC16</codeph> and <codeph>TBuf16</codeph> respectively,
+while for a non-Unicode build, they are defined as <codeph>TDesc8</codeph> <codeph>TPtrC8</codeph>, <codeph>TPtr8</codeph>, <codeph>TBufC8</codeph> and <codeph>TBuf8</codeph> respectively.</p> </section>
+<section id="GUID-C48351C5-EF60-4EC0-B13F-BA01A5898868"><title>Text type</title> <p>The key is defined to be of type <codeph>TText</codeph>.
+For a Unicode build, <codeph>TText</codeph> is defined as <codeph>TText16</codeph> while
+for a non-Unicode build, it is defined as <codeph>TText8</codeph>.</p> </section>
+<section id="GUID-3CBF96E6-97EF-4F6D-8456-204A9114BEE9"><title>Numeric type</title> <p>The key is defined to be of type: <codeph>TInt</codeph>, <codeph>TInt8</codeph>, <codeph>TInt16</codeph>, <codeph>TInt32</codeph>, <codeph>TInt64</codeph>, <codeph>TUint</codeph>, <codeph>TUint8</codeph>, <codeph>TUint16</codeph> or <codeph>TUint32</codeph>.</p> </section>
+<section id="GUID-403169B5-923C-4C52-BDC9-2C6B3AE8A342"><title>See also</title> <p><xref href="GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita">Descriptor
+concepts</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-426DECE8-311A-5720-88BB-F2A4805648D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-426DECE8-311A-5720-88BB-F2A4805648D6"><title>Viewing and user interfaces</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Text content provides the content model for text objects. Viewing them is the responsibility of another component, text views.</p> <p>In order to maintain a clear separation of concerns between the various types of text object, and the layout requirements of text views, two classes are provided:</p> <ul><li id="GUID-A32CDF6A-4818-570C-BE5F-CB5A4406789F"><p><xref href="GUID-51B3C34F-2F8E-3181-93C4-00F073B1207C.dita"><apiname>MLayDoc</apiname></xref> provides information about the character and paragraph formatting applied to runs of identically formatted characters</p> </li> <li id="GUID-D3968FFB-0B67-5DA6-AC57-0254A7184709"><p><xref href="GUID-B8CEB125-DF33-3112-B0A8-F9D186A4AC80.dita"><apiname>MFormatText</apiname></xref> provides an interface to set formats and to maintain format layers in an optimal way</p> </li> </ul> <p>These interfaces are implemented by <xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita"><apiname>CGlobalText</apiname></xref> and <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref>.</p> <p>Text content and views are fully integrated with printing. The header and footer for a document is specified in terms of rich text, with fields available to give the page number. Text views supports printing to either a view or to a preview. Print settings may be stored in the same store as the text content. </p> <section><title>See also</title> <p><xref href="GUID-F6C2C8D4-D3B0-5441-BF2D-6F42489198D6.dita">Text views</xref>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-42833109-F8C2-57FC-9995-0461698A19FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-42833109-F8C2-57FC-9995-0461698A19FF"><title>IMAP4 Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Internet Message Access Protocol (IMAP4) and its implementation on Symbian platform. </p> <section id="GUID-DBF1C87D-7360-54B7-8658-B6659BF77F06-GENID-1-6-1-15-1-1-6-1-5-1-4-1-2-2"><title>IMAP4 protocol</title> <p>IMAP4 is one of the most common Internet standard protocols for retrieving emails. It is an application layer Internet protocol operating on port 143 that allows a local client to access email on a remote server. </p> <p>The current version, IMAP version 4 revision 1 (IMAP4rev1), is defined by RFC 3501. Eariler, IMAP4 was called Internet Mail Access Protocol, Interactive Mail Access Protocol (RFC 1064), and Interim Mail Access Protocol. </p> <p>The default port for IMAP4 to download messages is 143, but if a client establishes a secure connection (over SSL or TLS) for IMAP4 to download message, the port is 993. </p> <p>Most email clients support either POP3 or IMAP to retrieve messages; however, few Internet Service Providers (ISPs) support IMAP. IMAP4 supports access to the mail store in both modes of operation—connected (online) and disconnected (offline). </p> <p>Emails are generally sent to an email server that stores received messages in the recipient's email mailbox. The user later retrieves these messages with either a web browser or an email client that uses one of a number of email retrieval protocols. </p> <p>Email clients using IMAP4 generally stores messages on the server until the user explicitly deletes them. This allows multiple clients to access the same mailbox. However, the client may store local copies of the messages, but these are considered to be a temporary cache; the server's store is authoritative. </p> </section> <section><title>Symbian platform implementation of IMAP4</title> <p>The Messaging Application module has implemented all the functionality of standard IMAP4 and conforms to RFC3501. </p> </section> <section><title>IMAP4 example</title> <p>For more details on implementing the IMAP4 MTM functions, see <xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">example code</xref>. </p> </section> </conbody><related-links><link href="GUID-1F755804-70D6-5635-B2F7-06F03C8D4B74.dita"><linktext>IMAP4 MTM</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3" xml:lang="en"><title>Remote
+Call Termination Tutorial </title><shortdesc>This tutorial describes how to detect when a caller at the remote
+end of the connection has terminated a call with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p><codeph>CTelephony</codeph> represents the status of your calls
+with a <codeph>CTelephony::TCallStatus</codeph> Possible status values include <i>Idle</i>, <i>Ringing</i>, <i>On-Hold</i>.</p><ul>
+<li><p>When a call status changes from </p><codeph>CTelephony::EStatusConnected </codeph> to <codeph>CTelephony::EStatusIdle</codeph> then
+the call has terminated. </li>
+<li><p>When a call status changes from </p><codeph>CTelephony::EStatusHold
+ </codeph> to <codeph>CTelephony::EStatusIdle</codeph> then the call has terminated. </li>
+</ul><p>The method starts an asynchonous operation that completes when the
+calls's status changes. At this point, the call's new status is written into
+the <codeph>CTelephony::TCallStatusV1Pckg</codeph>.</p></context>
+
+
+<steps id="GUID-AA3B542C-797F-56C7-A6B6-8218FAFBB5D2">
+<step id="GUID-9DE15571-A8FC-5101-A597-EA03F1BED4AC"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>. </info>
+</step>
+<step id="GUID-AE2D9BB9-A111-572A-9720-44DAD351FEE1"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::NotifyChange()</apiname></xref> to
+detect changes in the voice line status. </info>
+<info>Pass a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EOwnedCall1StatusChange</apiname></xref> to
+detect a change in call 1, and pass it <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EOwnedCall2StatusChange</apiname></xref> for
+call 2. Also pass an empty <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallStatusV1Pckg</apiname></xref>. </info>
+</step>
+<step id="GUID-57B7B41E-8A8D-500C-86A2-6EB75D8E06A6"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EOwnedCall1StatusChangeCancel</apiname></xref> to
+cancel the request for call1 notification and <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EOwnedCall2StatusChangeCancel </apiname></xref> for
+call2 notification. </info>
+</step>
+</steps>
+<example id="GUID-8255D372-823D-52D0-9082-4EF7E7808A83"><title>Remote call
+termination example</title> <codeblock id="GUID-4E422327-E0AF-5C97-A09E-5A241E25D679" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallId;
+                CTelephony::TCallStatusV1 iCallStatusV1;
+                CTelephony::TCallStatusV1Pckg iCallStatusV1Pckg;
+    CTelephony::TNotificationEvent iEvent;
+
+public:
+    CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId);
+    TInt SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallId(aCallId),
+      iCallStatusV1Pckg(iCallStatusV1)
+    {
+    //default constructor
+    }
+
+TInt CClientApp::SomeFunction()
+    {
+    switch(iCallId)
+       {
+       case CTelephony::EISVCall1:
+          iEvent = CTelephony::EOwnedCall1StatusChange;
+          break;
+
+       case CTelephony::EISVCall2:
+          iEvent = CTelephony::EOwnedCall2StatusChange;
+          break;
+
+       default:
+          // We have not been given a valid call ID, so return an error
+          return KErrArgument;
+       }
+
+    iTelephony-&gt;NotifyChange(iStatus, iEvent, iCallStatusV1Pckg);
+    SetActive();
+    return KErrNone;
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       // The status of the call has changed.
+       if(iCallStatusV1.iStatus == CTelephony::EStatusIdle)
+          {
+          // The call has been terminated.
+          }
+       else
+          {
+          // The call has not yet been terminated, so request notification again
+          iTelephony-&gt;NotifyChange(iStatus, iEvent, iCallStatusV1Pckg);
+          SetActive();
+          }
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    CTelephony::TCancellationRequest cancelRequest;
+    if(iCallId == CTelephony::EISVCall1)
+       {
+       cancelRequest = CTelephony::EOwnedCall1StatusChangeCancel;
+       }
+    else // iCallId == CTelephony::EISVCall2
+       {
+       cancelRequest = CTelephony::EOwnedCall2StatusChangeCancel;
+       }
+    iTelephony-&gt;CancelAsync(cancelRequest);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-42C94E3D-93DE-543E-A0D2-8B705C668BE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-42C94E3D-93DE-543E-A0D2-8B705C668BE0"><title>Base Services Utility Library Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Base Services Utility Library (BSUL) is a Symbian platform component used by the system servers (such as messaging server, sensor server and so on) to sanitise and validate the Inter-Process Communication (IPC) messages. It can also be used to cache F32 drive information and base64-based encoding and decoding. </p> <section><title>BSUL details</title> <p>The DLL that provides the functionality is <codeph>bsul.dll</codeph> and the library to which your code must link is <codeph>bsul.lib</codeph>. </p> </section> <section><title>Description</title> <p>System servers are vulnerable to IPC attack if they do not sanitise the incoming IPC messages. This might lead to the system server to panic that forces the device to reboot, and make the error tracking difficult. To handle these issues, BSUL provides IPC message sanitisation mechanism to improve the robustness under the IPC attack. </p> <p>A system server must use BSUL to sanitise incoming IPC messages and validate them against the constraints in a message schema used to store the messages. It can also be used for caching drive information, base64-based encoding and decoding, handling errors and logging. </p> </section> <section><title>APIs</title> <p>The key classes of BSUL are: </p> <table id="GUID-80A27AF8-8FA7-5B97-9A5D-4E6E7D7B1A36"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-45AFEB13-9D05-365D-A2A6-A34EF48A494D.dita"><apiname>CClientMessage</apiname></xref>  </p> </entry> <entry><p>Wrapper around <xref href="GUID-D7D422D3-65E5-378B-8F52-6485BC5603A0.dita"><apiname>RMessage2</apiname></xref> that provides message validation and error handling to improve robustness of system servers under IPC attack. </p> </entry> </row> <row><entry><p> <xref href="GUID-5A4F3BD2-12F3-3FC3-9B74-8CC3FBF012E5.dita"><apiname>CCachedDriveInfo</apiname></xref>  </p> </entry> <entry><p>Cache F32 drive information. </p> </entry> </row> <row><entry><p> <xref href="GUID-FD32794A-A20A-3B64-98A8-8D5D8C975124.dita"><apiname>Base64Codec</apiname></xref>  </p> </entry> <entry><p>Base64-based encoding and decoding. </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-3B2FB34B-B4FC-5273-AE35-DADA2FA4C419.dita"><linktext>Using ClientMessage Framework</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-42CB471F-B882-45D4-A1D3-20D3FF0C336E_d0e38135_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-42CF6D55-CAD2-5049-A1B6-35479404C273.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-42CF6D55-CAD2-5049-A1B6-35479404C273" xml:lang="en"><title>DumpSIS</title><abstract><p>The <codeph>DumpSIS</codeph> tool decompiles a SIS file and generates
+corresponding PKG and source files. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Syntax</title> <p><userinput>dumpsis <parmname>[OPTIONS]</parmname> <cmdname>&lt;ARGS&gt;</cmdname> </userinput> </p> <p>The
+following table lists the options supported by the <codeph>DumpSIS</codeph> tool. </p> <table id="GUID-6E8DD71C-1B1D-5793-92FC-BEB1D7690AE9">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Options</entry>
+<entry>Description</entry>
+<entry>Usage</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-i</varname>  </p> </entry>
+<entry><p>Displays verbose output. </p> </entry>
+<entry><p><userinput>dumpsis -i</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-v</varname>  </p> </entry>
+<entry><p>Displays version number of the tool. </p> </entry>
+<entry><p><userinput>dumpsis -v</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-h</varname>  </p> </entry>
+<entry><p>Displays help message. </p> </entry>
+<entry><p><userinput>dumpsis -h</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-x</varname>  </p> </entry>
+<entry><p>Extracts source files from the SIS file. </p> </entry>
+<entry><p><userinput>dumpsis -x filename.sis</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-p</varname>  </p> </entry>
+<entry><p>Pauses before finishing. </p> </entry>
+<entry><p><userinput>dumpsis -p filename.sis</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-l</varname>  </p> </entry>
+<entry><p>Extracts the executables and its corresponding capabilities from
+the input SIS file. It also verifies that the capabilities listed in the SIS
+file are the same as those in the executables. </p> </entry>
+<entry><p><userinput>dumpsis [-l[-y]][-d directory] filename.sis</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-y</varname>  </p> </entry>
+<entry><p>Lists the executables and their capabilities. </p> <p>This option
+must be specified with the <codeph>-l</codeph> option. </p> </entry>
+<entry><p><userinput>dumpsis [-l[-y]][-d directory] filename.sis</userinput> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table lists the arguments to be specified with <codeph>DumpSISTool</codeph>. </p> <table id="GUID-62B6C47F-F9E3-5ACE-B83E-E4798A496E0A">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Arguments</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-d directory</varname>  </p> </entry>
+<entry><p>Specifies the directory to which the files are extracted. The directory
+is created if it does not exist. </p> <p>By default, files are extracted to
+a directory with the same name as the SIS file. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>filename.sis</varname>  </p> </entry>
+<entry><p>Specifies the name of the SIS file. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Notes</b>:</p><ul>
+<li id="GUID-857964D8-29B4-5BE8-8448-F6BF1C7C7D1A"><p>The source-filenames
+specified in the original package file are not stored in the SIS file, therefore
+DumpSIS creates new filenames for the extracted files. </p> </li>
+<li id="GUID-846D5C89-2353-5F41-B11A-DB62E584B23C"><p>DumpSIS does not reinstate
+timestamps. </p> </li>
+<li id="GUID-659AF74A-65BF-587C-9D47-DC3732A75A85"><p>If the SIS file is signed,
+you can display and strip the signatures with <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref>.
+DumpSIS does not preserve or display any signing information. </p> </li>
+<li id="GUID-51A7C492-292A-5D0B-8023-A863AFF93506"><p><xref href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita">CreateSIS</xref> can
+be run on the resultant files to recreate the SIS file. </p> </li>
+</ul></section>
+</refbody><related-links>
+<link href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita"><linktext>PKG Format</linktext>
+</link>
+<link href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita"><linktext>MakeSIS</linktext>
+</link>
+<link href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita"><linktext>Creating
+and Signing an Installation File</linktext></link>
+</related-links></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e12299_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-43080A86-72D3-5422-953E-A5EF79961D7B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-43080A86-72D3-5422-953E-A5EF79961D7B" xml:lang="en"><title>Writing
+a UPS Policy Evaluator</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Policy Evaluators are ECOM plug-ins.
+They allow security decisions to be specific to the data on which the service
+acts instead of simply granting full access to the service, for example "Allow
+application X to send SMS messages to 01234567". This is supported through
+the fingerprint functionality. They allow a security decision to be specific
+to an individual script executing within a scripting host. This is supported
+through the client entity field. And they allow a prompt to be displayed even
+if the user selected "Always" or "Never". This could be based on a usage threshold
+or simply as additional confirmation if the user selected "Never". This is
+supported through the force prompt functionality. </p> <p> <b>Note</b>: when
+a user selects “Never” or “Always”, the UPS creates a record in a decision
+database. This record identifies the system server UID, service UID, client
+SID, client entity name (name of an entity running within a client process,
+for example, a script identifier) and a "fingerprint" for a given decision. </p> <p>The
+purpose of a Policy Evaluator is to allow device creators to optionally customise
+the behaviour of the UPS at run-time. Policy Evaluators may: </p> <ul>
+<li id="GUID-1D5DD614-02E3-56AA-A0A6-A694E2311A0E"><p>Allow security decisions
+to be specific to the data on which the service acts instead of simply granting
+full access to the service, for example "Allow application X to send SMS messages
+to 01234567". This is supported via the fingerprint functionality. </p> </li>
+<li id="GUID-5B5E3EB4-5C93-5E4E-BB6E-39F889AD3610"><p>Allow a security decision
+to be specific to an individual script executing within a scripting host.
+This is supported via the client entity field. </p> </li>
+<li id="GUID-8B26DA57-A9DF-5D99-A259-2E6DF7C4DCCE"><p>Allow a prompt to be
+displayed even if the user selected "Always" or "Never". This could be based
+on a usage threshold or simply as additional confirmation if the user selected
+"Never". This is supported via the force prompt functionality. </p> </li>
+</ul> </section>
+<section><title>Procedure</title> <p>Writing policy evaluator includes the
+following: </p> <ol id="GUID-F50174F6-3619-545A-8844-D4DA64B1B339">
+<li id="GUID-246EF2AB-23D9-5B1B-BC4C-8CCFB545C307"><p>Generating fingerprints </p> </li>
+<li id="GUID-4427FF70-9461-566A-8567-FC6EEF879475"><p>Forcing prompts </p> </li>
+<li id="GUID-703D9B83-78A0-5EA6-8D1C-685D2BC847EA"><p>Defining default policy
+evaluator </p> </li>
+</ol> <p>Policy evaluators implement the <codeph>CPolicyEvaluator</codeph> interface. </p> <p><b>Generating
+fingerprints</b> </p> <p>The key task of the policy evaluator is to generate
+fingerprints. A fingerprint is a collection of data describing the service
+being requested. The fingerprint usually includes the <codeph>destination</codeph> string,
+for example a telephone number, supplied by the service that is matched to
+the <codeph>destination</codeph> string of a policy in the policy file. </p> <p>The
+policy evaluator must implement the <codeph>GenerateFingerprints()</codeph> function,
+which is a pure virtual function, declared in the <xref href="GUID-FDE91CAC-1588-3EED-B509-08168F4B881B.dita"><apiname>CPolicyEvaluator</apiname></xref> base
+class. The function is asynchronous to allow the implementation to call other
+server processes. </p> <p>The following table describes the parameters for
+the <codeph>GenerateFingerprints()</codeph> function: </p> <table id="GUID-963D89B8-EB90-5668-8A08-588EF1E94C43">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Parameter</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>aRequest</codeph>  </p> </entry>
+<entry><p>Data that the system server provides to the UPS, including the ClientSid,
+ServerSid and ServiceId. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aPolicy</codeph>  </p> </entry>
+<entry><p>Details of the policy for the service. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aFingerprints</codeph>  </p> </entry>
+<entry><p>Array of fingerprints. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aClientEntity</codeph>  </p> </entry>
+<entry><p>Details of client entity (will be null if the client process is
+not an execution host or the policy evaluator does not support client entities). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aDialogCreatorParams</codeph>  </p> </entry>
+<entry><p>Opaque data, which can be any other information for use in the fingerprint
+or to be displayed in the dialog. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aStatus</codeph>  </p> </entry>
+<entry><p>The request status used to contain completion information for the
+function. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following code fragment is a sample implementation of the <codeph>GenerateFingerprints()</codeph> function. </p> <codeblock id="GUID-B8555FDF-8BDD-5D22-AA20-AA9A4B35148A" xml:space="preserve">void CRefPolicyEvaluator::GenerateFingerprints(
+ const CPromptRequest&amp; aRequest, const CPolicy&amp; aPolicy, 
+    RPointerArray&lt;CFingerprint&gt;&amp; aFingerprints, const CClientEntity*&amp; aClientEntity, 
+    const TAny*&amp; aDialogCreatorParams, TRequestStatus&amp; aStatus)
+    {
+    iRequest = &amp;aRequest;
+    iPolicy = &amp;aPolicy;
+    iFingerprints = &amp;aFingerprints;        
+
+    // This OUT parameter *could* be set to point to data structure
+    // owned by this policy evaluator that is read by the dialog-creator.
+    aDialogCreatorParams = 0;
+    
+    // The client entity field only needs to be set if the policy evaluator
+    // is designed to identify scripts/non-native applications being executed
+    // by the client application.
+    aClientEntity = 0;                
+    
+    iClientStatus = &amp;aStatus;
+    aStatus = KRequestPending;
+    
+    // Kick off policy evaluator state machine
+    iStatus = KRequestPending;
+    TRequestStatus* status = &amp;iStatus;
+    SetActive();
+    User::RequestComplete(status, KErrNone);
+    }
+</codeblock> <p> <codeph>RunL()</codeph> is called when the request completes.
+The fingerprint is created and appended to the fingerprint array in <codeph>RunL()</codeph>.
+The following example shows a hash of a destination being created for a fingerprint
+as well as an empty fingerprint for decisions that apply to all destinations. </p> <codeblock id="GUID-EB57F6E0-C3B2-5CDC-B9FF-A570B73B4C74" xml:space="preserve">void CRefPolicyEvaluator::RunL()
+    {    
+    // Create most specific hash first i.e. HASH(destination)
+    // Information from the opaque data supplied by the system server 
+    // may also be used.
+    // N.B. The UPS does not require the fingerprint to be a hash. However,
+    // the fingerprint is limited to 32 bytes.    
+    iDigest-&gt;Reset();
+    const TDesC&amp; d = iRequest-&gt;Destination();
+    TPtrC8 p(reinterpret_cast&lt;const TUint8*&gt;(d.Ptr()), d.Length() * 2);
+    TPtrC8 h(iDigest-&gt;Hash(p));
+    
+    CFingerprint* f = CFingerprint::NewLC(h, d);
+    iFingerprints-&gt;AppendL(f);
+    CleanupStack::Pop(f);
+
+    // An empty fingerprint may be used for decisions that apply to
+    // all destinations.
+    f = CFingerprint::NewLC(KNullDesC8, KNullDesC);
+    iFingerprints-&gt;AppendL(f);
+    CleanupStack::Pop(f);
+        
+    User::RequestComplete(iClientStatus, KErrNone);
+    }
+</codeblock> <p><b>Forcing prompts</b> </p> <p>You can implement the <codeph>ForcePromptL()</codeph> function
+to force a prompt, even if the UPS has found a persistent decision for the
+request in the decision database. It may be desirable to force a prompt in
+some cases such as: </p> <ul>
+<li id="GUID-4C9DDFB3-C358-534F-8E65-42E1BC672D64"><p>if a threshold has been
+reached, for example the number of MMS messages sent on a particular day </p> </li>
+<li id="GUID-5D5E02E5-DA19-5A30-8071-CD64631FBEAD"><p>if a phone user has
+selected "Never", because denying a request to a non-UPS-aware application
+may cause it to fail — the user may not realise that the previous selection
+of "Never" has caused the failure or may not know how to find the management
+application to revert the decision </p> </li>
+</ul> <p>The UPS invokes the <codeph>ForcePromptL()</codeph> function after
+a matching record is found in the database. The <codeph>ForcePromptL()</codeph> function
+is defined in the <codeph>CPolicyEvaluator</codeph> base class. The implementation
+in the base class always returns <codeph>EFalse</codeph>. To force a prompt,
+device creators need to override this function and return <codeph>ETrue</codeph>.
+A sample implementation is as follows. The <codeph>aNewEvaluatorInfo</codeph> field
+is a policy evaluator defined 32-bit field. It could be used to store usage
+thresholds or as a flag that indicates that the prompt has already been forced. </p> <codeblock id="GUID-4E60DCA5-7F25-5FC7-B173-05E1A15FCEE6" xml:space="preserve">TBool CRefPolicyEvaluator::ForcePromptL(const CDecisionRecord&amp; aDecision, TUint&amp; aNewEvaluatorInfo)
+    {
+    // In this example, if the user selects Never, then they are prompted
+    // once more in-case they did not intend to select Never. 
+    // The "Evaluator Info" field is used to ensure the prompt is only forced once.
+    //
+    // The base class implementation (CPolicyEvaluator::ForcePromptL) 
+    // always returns EFalse.
+    aNewEvaluatorInfo = 1;
+    return (aDecision.iResult == 0 &amp;&amp; aDecision.iEvaluatorInfo == 0);
+    }
+</codeblock> <p><b>Defining default policy evaluator</b> </p> <p>If device
+creators do not define a policy evaluator, a default (internal) policy evaluator
+is returned. The default policy evaluator returns a single, null fingerprint.
+The default policy evaluator does not override the <codeph>ForcePromptL()</codeph> API. </p> </section>
+<section><title> Upgrading policy evaluators </title> <p>A policy evaluator
+can be overwritten or eclipsed without restarting the UPS, if it is delivered
+through an appropriately signed upgrade. </p> <ul>
+<li id="GUID-086FABB6-13C0-5D98-8B2A-1D38BD620EB5"><p>The ECOM plug-in will
+be reloaded only when there are no active <codeph>RUpsSubsession::Authorise()</codeph> requests. </p> </li>
+<li id="GUID-CD95EB32-9438-5AA1-BA80-8C90DC304642"><p>The decision records
+are not deleted if the policy evaluator is changed. If the policy evaluator
+is not backwards compatible then new policy files with a new <codeph>majorversion</codeph> number
+should be delivered. </p> </li>
+<li id="GUID-DC1804B8-A052-52AC-96DC-32C3BBADE2A8"><p>SWI Observer informs
+the UPS that the plug-ins may have changed whenever Software Install modifies <filepath>sys\bin</filepath> on
+the system drive. There is no need to explicitly register changes to plug-ins. </p> </li>
+</ul> </section>
+<section><title> Policy evaluator example</title> <p>The following code shows
+an example of a full implementation of the policy evaluator file: </p> <codeblock id="GUID-D1615A8D-334C-5718-BFD6-EC3004A09F3A" xml:space="preserve">// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+
+// refpolicyevaluator.cpp
+
+#include "refpolicyevaluator.h"
+#include &lt;ecom/implementationproxy.h&gt;
+#include &lt;ups/cliententity.h&gt;
+#include &lt;ups/fingerprint.h&gt;
+#include &lt;ups/upsdb.h&gt;
+
+using namespace UserPromptService;
+
+static const TUint KRefPolicyEvaluatorImplementationId = 0x10285814;
+
+CPolicyEvaluator* CRefPolicyEvaluator::CreatePolicyEvaluatorL()
+/**
+Factory method that instantiates a new policy evaluator ECOM plug-in.
+
+@return A pointer to the new reference policy evaluator object.
+*/
+    {
+    CRefPolicyEvaluator* self = new (ELeave)CRefPolicyEvaluator();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+static const TImplementationProxy ImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY(KRefPolicyEvaluatorImplementationId, CRefPolicyEvaluator::CreatePolicyEvaluatorL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+/**
+Standard ECOM factory
+*/
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }    
+    
+
+CRefPolicyEvaluator::CRefPolicyEvaluator()
+/**
+Constructor
+*/
+    : CPolicyEvaluator()
+    {
+    CActiveScheduler::Add(this);
+    }
+    
+CRefPolicyEvaluator::~CRefPolicyEvaluator()
+/**
+Destructor
+*/
+    {
+    Deque();
+    delete iDigest;
+    }
+
+void CRefPolicyEvaluator::ConstructL()
+/**
+Second phase constructor, creates the message digest
+*/
+    {    
+    iDigest = CMessageDigestFactory::NewDigestL(CMessageDigest::EMD5);
+    }
+
+// From CActive
+void CRefPolicyEvaluator::DoCancel()
+    {    
+    // Logically should Cancel the internal outstanding requst, but
+    // currently GenerateFingerprints has already completed it.
+
+    // And need to complete the clients request
+    if (iClientStatus)
+        {
+        User::RequestComplete(iClientStatus, KErrCancel);
+        }
+    }
+    
+TInt CRefPolicyEvaluator::RunError(TInt aError)
+    {
+    if (iClientStatus)
+        {
+        User::RequestComplete(iClientStatus, aError);
+        }
+    return KErrNone;
+    }
+    
+void CRefPolicyEvaluator::RunL()
+    {    
+    // Create most specific hash first i.e. HASH(destination)
+    // Information from the opaque data supplied by the system server 
+    // may also be used.
+    // N.B. The UPS does not require the fingerprint to be a hash. However,
+    // the fingerprint is limited to 32 bytes.    
+    iDigest-&gt;Reset();
+    const TDesC&amp; d = iRequest-&gt;Destination();
+    TPtrC8 p(reinterpret_cast&lt;const TUint8*&gt;(d.Ptr()), d.Length() * 2);
+    TPtrC8 h(iDigest-&gt;Hash(p));
+    
+    CFingerprint* f = CFingerprint::NewLC(h, d);
+    iFingerprints-&gt;AppendL(f);
+    CleanupStack::Pop(f);
+
+    // An empty fingerprint may be used for decisions that apply to
+    // all destinations.
+    f = CFingerprint::NewLC(KNullDesC8, KNullDesC);
+    iFingerprints-&gt;AppendL(f);
+    CleanupStack::Pop(f);
+        
+    User::RequestComplete(iClientStatus, KErrNone);
+    }
+
+void CRefPolicyEvaluator::GenerateFingerprints(
+    const CPromptRequest&amp; aRequest, const CPolicy&amp; aPolicy, 
+    RPointerArray&lt;CFingerprint&gt;&amp; aFingerprints, const CClientEntity*&amp; aClientEntity, 
+    const TAny*&amp; aDialogCreatorParams, TRequestStatus&amp; aStatus)
+    {
+    iRequest = &amp;aRequest;
+    iPolicy = &amp;aPolicy;
+    iFingerprints = &amp;aFingerprints;        
+
+    // This OUT parameter *could* be set to point to data structure
+    // owned by this policy evaluator that is read by the dialog-creator.
+    aDialogCreatorParams = 0;
+    
+    // The client entity field only needs to be set if the policy evaluator
+    // is designed to identify scripts/non-native applications being executed
+    // by the client application.
+    aClientEntity = 0;                
+    
+    iClientStatus = &amp;aStatus;
+    aStatus = KRequestPending;
+    
+    // Kick off policy evaluator state machine
+    iStatus = KRequestPending;
+    TRequestStatus* status = &amp;iStatus;
+    SetActive();
+    User::RequestComplete(status, KErrNone);
+    }
+
+TBool CRefPolicyEvaluator::ForcePromptL(const CDecisionRecord&amp; aDecision, TUint&amp; aNewEvaluatorInfo)
+    {
+    // In this example, if the user selects Never, then they are prompted
+    // once more in-case they did not intend to select Never. 
+    // The "Evaluator Info" field is used to ensure the prompt is only forced once.
+    //
+    // The base class implementation (CPolicyEvaluator::ForcePromptL) 
+    // always returns EFalse.
+    aNewEvaluatorInfo = 1;
+    return (aDecision.iResult == 0 &amp;&amp; aDecision.iEvaluatorInfo == 0);
+    }
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-432FF981-010F-540B-834F-FF924238AA2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-432FF981-010F-540B-834F-FF924238AA2A"><title>epocheapsize</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>epocheapsize</codeph>  <varname>minimum</varname> <varname>maximum</varname>  </p> <p>Use the <codeph>epocheapsize</codeph> statement to specify the minimum and maximum sizes of the initial heap for a process. The default sizes are 4KB minimum and 1MB maximum.This directive is applicable from Symbian OS v9.1, EKA2 releases. EKA2 supports multiple process creation and allows the heap size to be calibrated between the minimum and maximum limits. </p> <p>The minimum size specifies the RAM that is initially mapped for the heap's use. The process can then obtain more heap memory on demand until the maximum value is reached. For more information, see <xref href="GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645.dita">Memory Management concepts</xref>. </p> <p>The sizes can be specified in decimal or hexadecimal format. Memory is allocated in pages, so the minimum and maximum values are rounded up to a multiple of the page size (4K). </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e283467_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6" xml:lang="en"><title>Grid
+query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Instead of a list, a grid can be used in a query. The Grid query function
+is otherwise identical to a <xref href="GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita"> List
+query</xref>.</p>
+<fig id="GUID-1C82CBB6-B24C-483D-8F04-3FC90BF219C1">
+<title>Grid query</title>
+<image href="GUID-08937880-C381-4C8B-AC17-7162C1243E23_d0e61946_href.png" scale="40" placement="inline"/>
+</fig>
+<section><title>Using grid queries in
+C++ applications</title><p>For implementation information, see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-436B6DFE-D279-44BF-B099-B2547D50610A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-436B6DFE-D279-44BF-B099-B2547D50610A" xml:lang="en"><title>Write
+a resource file</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Each converter DLL requires an associated information file.
+This file allows the converter architecture to read the properties of the
+converters in the DLL without having to load the DLL itself.</p><p>The following
+information is written to a resource file:</p><ul>
+<li><p>A single <codeph>CONARC_RESOURCE_FILE</codeph> resource which contains
+an array of <codeph>CONVERTER_DATA</codeph> resources.</p></li>
+<li><p>Each <codeph>CONVERTER_DATA</codeph> resource describes the properties
+of a single converter. It specifies the UID of the converter, an array of
+MIME resources describing the data types from which the converter can convert
+and another array of MIME resources describing the data types to which the
+converter can convert.</p></li>
+<li><p>Each MIME resource specifies the supported MIME type. For example,
+text/html, and an array of <codeph>LANG_DATA</codeph> resources giving localized
+human-readable names for that MIME type.</p></li>
+<li><p>Each <codeph>LANG_DATA</codeph> resource specifies a language ID and
+a human-readable name for the MIME type in that language. </p></li>
+</ul><p><b>NOTE</b>: The resource file is included within a <codeph>start
+resource ...</codeph> end block in the project file. Its target path must
+be<filepath>\resource\convert\</filepath>.</p><p>The following example is
+an information file for a converter DLL that contains one converter:</p><codeblock xml:space="preserve">#include &lt;conplugin.rh&gt;
+#include "ExampleConv.hrh"
+RESOURCE CONARC_RESOURCE_FILE
+    {
+    converter_list =
+        {
+        CONVERTER_DATA
+            {
+            conv_uid = KExampleConvImplementationUid; // UID of the converter, as returned by CConverterBase2::Uid()
+            from_list =
+                {
+                MIME
+                    {
+                    type = "example/qp";
+                    lang_list =
+                        {
+                        // lang_id is a value from the TLanguage enumeration. 01 is English.
+                        LANG_DATA{lang_id=01;translation="quoted-printable";
+                        }
+                    };
+                }
+            };
+        to_list =
+            {
+            MIME
+                {
+                type = "example/text";
+                lang_list =
+                    {
+                    LANG_DATA
+                        {
+                        lang_id = 01;
+                        translation = "text";
+                        };
+                    }
+                };
+            }
+        };
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e312757_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4384066E-158A-5F63-A823-7793DAE680BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4384066E-158A-5F63-A823-7793DAE680BF" xml:lang="en"><title>Email</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Email collection supports email related functionality of messaging, which includes the email MTMs.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69" xml:lang="en"><title>PKG File Format</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The PKG file format is described in modified BNF notation and must include the following definitions:</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A"><title>Avoid Transient Tables</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This guide gives advice for avoiding the use of transient tables. </p> <section><title>Introduction</title> <p>Transient tables are nameless entities that exist for the duration of a single SQL statement and are automatically deleted at the conclusion of the statement. It is best to avoid queries that need transient tables. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-62920E16-50D3-504A-9E8C-B835CF374A8B"><title>Avoid Queries that Require Transient Tables</title> <p>Complex queries sometimes require SQLite to compute intermediate results that are stored in <i>transient tables</i>. Transient tables are nameless entities that exist for the duration of a single SQL statement and are automatically deleted at the conclusion of the statement. </p> <p>We use the term transient to describe these tables rather than temporary to avoid confusion with TEMP tables. TEMP tables are tables that are private to a particular database connection and which persist for the duration of that database connection. TEMP tables have names and work like regular tables with the exceptions that they are only visible to the current database connection and are automatically deleted when the connection is closed. Transient tables, in contrast, are invisible internal holding areas for intermediate results that exist only until the end of the current SQL statement. </p> <p>Transient tables will be stored either in RAM or on disk depending on device configuration. The Symbian default configuration is to store transient tables on disk although downstream device manufacturers may alter this. </p> <p>When configured to store transient tables on disk, in reality a combination of memory and file space is used to hold the table. Transient tables go through the same page cache mechanism that regular database files go through. So as long as the transient tables do not grow too large, they will always be held in memory in the page cache rather than being written to disk. Information is only written to disk when the cache overflows. </p> <p>When transient tables are configured to be stored in memory rather than in a file, the cache is considered infinitely large and will never overflow and thus nothing will ever be written out to the filesystem. Storing transient tables in memory rather than in files avoids the overhead of file I/O but requires potentially unbounded amounts of memory. Using file-based transient tables puts an upper bound on the amount of memory required but adds file I/O overhead. </p> <p>One strategy for dealing with transient tables is to avoid them all together. If you never use transient tables then it does not really matter if they are stored in memory or on disk. The remainder of this section will enumerate all of the things that might provoke SQLite to create a transient table. If you avoid all of these things in your code, then you never need to worry about where your transient tables are stored. </p> <p>A transient table is created whenever you use the DISTINCT keyword in a query: </p> <codeblock id="GUID-EDCC26CB-7620-5F84-807C-736B2AB46CC7" xml:space="preserve">
+SELECT DISTINCT name FROM artist;
+</codeblock> <p>The DISTINCT keyword guarantees that each row of the result set will be different from all other rows. In order to enforce this SQLite creates a transient table that stores all prior output rows from the query. If a new row can be found in the transient table then the new row is skipped. The same situation occurs when DISTINCT is used within an aggregate function: </p> <codeblock id="GUID-6A14E006-3233-51E2-9FB1-CC26895F2452" xml:space="preserve">
+SELECT avg(DISTINCT cnt) FROM playlist;
+</codeblock> <p>In this context the DISTINCT keyword means that the aggregate function is only applied to distinct elements of the result. As before, a transient table is used to record prior values of the result so that SQLite can tell if new results have been seen before. </p> <p>The UNION, INTERSECT, and EXCEPT operators used to create compound queries always generate a distinct set of rows. Even though the DISTINCT keyword does not appear, it is implied for these connectors, and a transient table is used to enforce the distinctness. In contrast, the UNION ALL operator does not require a transient table. </p> <p>A transient table might be used to implement an ORDER BY or GROUP BY clause. SQLite always tries to use an index to satisfy an ORDER BY or GROUP BY clause if it can. But if no indexes are available which can satisfy the ORDER BY or GROUP BY, then the entire results set is loaded into a transient table and sorted there. </p> <p>Subqueries on the right-hand side of the IN operator use a transient table. Consider an example: </p> <codeblock id="GUID-D6162DA3-7C9D-5C4E-ABF4-E83209354B79" xml:space="preserve">
+SELECT * FROM ex334a WHERE id IN (SELECT id FROM ex334b WHERE amt&gt;7);
+</codeblock> <p>The results of the (SELECT id FROM ex334b WHERE amt&gt;7) subquery are stored in a transient table. Then the value of the <i>id</i> column is checked against this table for each row of the outer query to determine if that row should be included in the result set. </p> <p>Sometimes subqueries in the FROM clause of a query will result in a transient table. This is not always the case because SQLite tries very hard to convert subqueries in the FROM clause into a join that does not use subqueries. SQLite uses the term <i>flattening</i> to describe the conversion of FROM clause subqueries into joins. Flattening is an optimization that makes queries run faster. But in some cases, flattening cannot occur. When the flattening optimization is inhibited, the results of the subqueries are stored in transient tables and then a separate query is run against those transient tables to generate the final results. </p> <p>Consider the following schema and query: </p> <codeblock id="GUID-F8CD6651-09CA-52FD-AAF5-799B087A0456" xml:space="preserve">
+CREATE TABLE t1(a,b,c);
+CREATE TABLE t2(x,y,z);
+SELECT * FROM t1 JOIN (SELECT x,y FROM t2);
+</codeblock> <p>The subquery in the FROM clause is plainly visible in the SELECT statement above. But if the subquery were disguised as a view, it might be less noticeable. A view is really just a macro that serves as a place-holder for a subquery. So the SELECT statement above is equivalent to the following: </p> <codeblock id="GUID-B5DE2E2A-3034-534C-B808-E68B3086F071" xml:space="preserve">
+CREATE VIEW v2 AS SELECT x, y FROM t2;
+SELECT * FROM t1 JOIN v2;
+</codeblock> <p>In either case above, whether the subquery is stated explicitly or is implied by the use of a view, flattening occurs and the query is converted into this: </p> <codeblock id="GUID-0B933985-4520-5E0E-9762-13CCAB3D186A" xml:space="preserve">
+SELECT a,b,c,x,y FROM t1 JOIN t2;
+</codeblock> <p>Had flattening not occurred, it would have been necessary to evaluate the v2 view or the subquery into a transient table then execute the outer query using the transient table as one of the two tables in the join. SQLite prefers to flatten the query because a flattened query generally uses fewer resources and is better able to take advantage of indexes. The rules for determining when flattening occurs and when it does not are complex. Flattening occurs if all of the following conditions in the outer query and in the subquery are satisfied: </p> <ul><li id="GUID-C2006064-D688-50F2-BDAA-0903746BBDCA"><p>The subquery and the outer query do not both use aggregates. </p> </li> <li id="GUID-8B0A124C-D2A1-51C3-80B2-37E53A22BEA8"><p>The subquery is not an aggregate or the outer query is not a join. </p> </li> <li id="GUID-265A05AB-6C73-598E-9B5E-D602E3ACF399"><p>The subquery is not the right operand of a left outer join, or the subquery is not itself a join. </p> </li> <li id="GUID-F85FC64A-22E9-550C-B24D-7A8D52AC39E0"><p>The subquery is not DISTINCT or the outer query is not a join. </p> </li> <li id="GUID-A78B6644-6DBE-584B-9216-3415ADA1E35B"><p>The subquery is not DISTINCT or the outer query does not use aggregates. </p> </li> <li id="GUID-B86B1D2C-CC0D-5C04-A2C5-BC3D26069964"><p>The subquery does not use aggregates or the outer query is not DISTINCT. </p> </li> <li id="GUID-D89420C6-6AD0-5B4A-9A1D-DF9CE690BA7D"><p>The subquery has a FROM clause. </p> </li> <li id="GUID-671D51CA-0C05-5610-8A66-0A7B795270B6"><p>The subquery does not use LIMIT or the outer query is not a join. </p> </li> <li id="GUID-81632F3C-3E30-53B8-94C4-214498C11A34"><p>The subquery does not use LIMIT or the outer query does not use aggregates. </p> </li> <li id="GUID-6E30A9D8-F758-58D8-8A60-2D1F98DC571D"><p>The subquery does not use aggregates or the outer query does not use LIMIT. </p> </li> <li id="GUID-55523D18-9421-582C-8CB4-601BC6BBA8A0"><p>The subquery and the outer query do not both have ORDER BY clauses. </p> </li> <li id="GUID-12AD267C-F596-5188-8075-14D29CAB66DF"><p>The subquery is not the right term of a LEFT OUTER JOIN or the subquery has no WHERE clause. </p> </li> <li id="GUID-1E253D10-A3B3-528A-A599-6E000040FAF3"><p>The subquery and outer query do not both use LIMIT </p> </li> <li id="GUID-1FC29A55-C941-59CE-AE16-23C5F867069C"><p>The subquery does not use OFFSET </p> </li> </ul> <p>Nobody really expects a programmer to memorize or even understand the above set of flattening rules. As a short-cut, perhaps it is best to remember that a complicated subquery or view in the FROM clause of a complicated query might defeat the flattening optimization and thus require the use of transient tables. </p> <p>One other obscure use of transient tables is when there is an INSTEAD OF DELETE or INSTEAD OF UPDATE trigger on a view. When such triggers exists and a DELETE or an UPDATE is executed against that view then a transient table is created which stores copies of the rows to be deleted or updated. Since it is unusual to have INSTEAD OF triggers in the first place this case rarely arises. </p> <p>In summary, transient tables are used to implement the following features: </p> <ul><li id="GUID-AA436587-D5B8-57A4-A256-AA255B316086"><p>The DISTINCT keyword or other situations where distinct results are required such as compound queries using UNION, INTERSECT, or EXCEPT. </p> </li> <li id="GUID-84FC9506-4E85-5F7E-A96A-45EC239360DA"><p>ORDER BY or GROUP BY clauses that cannot be satisfied by indexes. </p> </li> <li id="GUID-59EAEE54-98A0-5647-B4E4-9A213342D46D"><p>Subqueries on the right-hand side of the IN operator. </p> </li> <li id="GUID-BCB93FF3-F959-5292-A3D7-C23CD436DC4E"><p>Subqueries or views in the FROM clause of a query that cannot be flattened. </p> </li> <li id="GUID-552BE4BC-2242-5E26-85C0-20CB99C188A1"><p>DELETE or UPDATE against a view with INSTEAD OF triggers. </p> </li> </ul> <p>The resource-limited nature of the environment, where file I/O is expensive and memory is scarce, means you will be well served to avoid these constructs and thus avoid the need for transient tables. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link><linktext/></link><link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-43CE4DCB-F498-5878-A2EE-7831BBB4D288.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-43CE4DCB-F498-5878-A2EE-7831BBB4D288" xml:lang="en"><title>Configuring the TLS or SSL Socket</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can configure an email account for the following using the <xref href="GUID-86633B7D-5AB8-3BBD-BB54-4697211AC86E.dita"><apiname>SetTlsSslDomainL()</apiname></xref> function. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4406BDE0-8256-5F97-9FC5-BBFD11D9C4A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4406BDE0-8256-5F97-9FC5-BBFD11D9C4A3"><title>Resource file</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A resource file is available to an application at run-time, and usually has extension <filepath>.rsc</filepath>. It contains resources compiled from a source file, <filepath>.rss</filepath>. </p> <p>Each resource is a sequence of bytes. Resources within a file are identified by number at run-time, but may also be identified symbolically in the source file. The resource compiler <filepath>rcomp</filepath> compiles a <filepath>.rss</filepath> into a <filepath>.rsc</filepath>, and also emits a series of <codeph>#define</codeph> statements into a <filepath>.rsg</filepath> file, which the C++ program may <codeph>#include</codeph>, to allow resources lookup by symbolic name rather than by number. </p> <p>Resources are built automatically by <filepath>abld</filepath> or the compiler IDE if the project file specifies a resource file using the <codeph>RESOURCE</codeph> statement. </p> <p>Resource data is mapped by structs — in a similar way to C’s structs. Resource structs are defined using <codeph>STRUCT</codeph> statements which are understood only by the resource compiler. Symbian platform provides many <systemoutput>struct</systemoutput> types: occasionally, applications also add their own. <codeph>STRUCT</codeph> statements are included in headers, conventionally with a <filepath>.rh</filepath> extension. These are <codeph>#include</codeph> d into <filepath>.rss</filepath> files. </p> <p>Symbolic constants for various purposes must be available to both C++ programs and resource file definitions. These are defined using <codeph>#define</codeph> statements or <codeph>enum</codeph> statements, and included in <filepath>.hrh</filepath> files. These may be <codeph>#include</codeph> d into either C++ or resource scripts. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4407F7CA-6D08-4B9C-A0CE-37AFC8BB20B2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4407F7CA-6D08-4B9C-A0CE-37AFC8BB20B2" xml:lang="en"><title>New flags
+in <codeph>CEikListBox</codeph></title><shortdesc><codeph>CEikListBox</codeph> has two new flags that have to be
+set for every list or grid that needs specific touch-related functionality.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-D747F87E-DB3C-4ECE-890C-D3B342FCD8E2"><title>Touch-related
+flags in CEikListBox</title>
+<tgroup cols="2"><colspec colname="col1" colwidth="0.73*"/><colspec colname="col2" colwidth="1.27*"/>
+<thead>
+<row>
+<entry valign="top"> <p>Flag</p> </entry>
+<entry valign="top"> <p>Functionality</p> </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry> <p><codeph>EAknListBoxPointerMultiselectionList</codeph></p> </entry>
+<entry> <p>Enables stylus for multiselection lists. The new flag was introduced
+because the original multiselection flag is also used in other context than
+multiselection lists.</p> </entry>
+</row>
+<row>
+<entry> <p><codeph>EAknListBoxPointerMarkableList</codeph></p> </entry>
+<entry> <p>Enables stylus for markable lists or markable grids (CAknGrid).</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-440FDF7D-B9A0-5767-9FF8-412803C0D2A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-440FDF7D-B9A0-5767-9FF8-412803C0D2A9" xml:lang="en"><title> C Standard
+Library</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The C Standard Library consists of a set of sections of the ISO C standard
+which describe a collection of header files and library routines used to implement
+common operations, such as input/output and string handling, in the C programming
+language.</p>
+<p><b>Important:</b> C Standard Library is planned to be deprecated soon.
+It is recommended that you use the much more compliant or complete <xref href="GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita">Open
+Environment Core (P.I.P.S.)</xref> libraries instead. For information about
+how to migrate to P.I.P.S., see <xref href="GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita">Migrating
+from C Standard Library (ESTLIB) to P.I.P.S.</xref>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e219441_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-442F2E69-87B5-54E7-B62A-70B742432372.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-442F2E69-87B5-54E7-B62A-70B742432372"><title>How to commit and revert </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Transactions are supported by a commit and revert protocol. Changes to a store are not made permanent until they are committed. Until such changes are committed, they can be rolled back (i.e. reverted).</p> <p>In the following code fragment, <codeph>store</codeph> is a pointer to an opened permanent file store. The function <codeph>doUpdateStoreL()</codeph> adds a number of streams to this store and, if successful, establishes a new commit point.</p> <p>If a failure occurs or the call to <codeph>CommitL()</codeph> fails, then <codeph>doUpdateStoreL()</codeph> leaves; the leave is trapped and any changes made to the store are rolled back, so that the store is in the same state as it was before the changes were started. The store, therefore, remains in a consistent state in the event of failure.</p> <p><codeph>CItemArray</codeph> is a class that encapsulates an array of <codeph>TItem</codeph> objects; the relevant part of the definition is:</p> <codeblock id="GUID-0B5B04A7-AB4A-55CA-BCF0-9E19623F1554" xml:space="preserve">typedef TBuf&lt;100&gt; TItem;</codeblock> <codeblock id="GUID-52A3FAC2-4E23-5574-A21C-DE087ADDB911" xml:space="preserve">class CItemArray : public CBase
+    {
+public:
+    ...
+    void AddItemL(const TItem&amp; anItem);
+    void StoreL() const;
+       void ExternalizeL(RWriteStream&amp; aStream) const;
+    ...
+private:
+    CStreamStore&amp; iStore;
+       ...
+    CArrayFixFlat&lt;TStreamId&gt;* iArray;
+    }</codeblock> <p>The example also assumes that the store is one that allows streams to be modified and replaced; for example, a permanent file store.</p> <codeblock id="GUID-21AFD117-3D52-55BE-BEB7-430CF08D0429" xml:space="preserve">...
+TRAPD(error,doUpdateStoreL(*store));
+if (error!=KErrNone)
+    {
+    store-&gt;Revert();
+    ...
+    }
+...</codeblock> <codeblock id="GUID-EB07D2AA-ECAA-5014-84F0-85767A60E366" xml:space="preserve">LOCAL_C void doUpdateStoreL(CPersistentStore&amp; aStore)
+    {
+    _LIT(KTxtHello,"hello");
+    _LIT(KtxtWorld," world!");
+              // get the root stream into memory
+    CItemArray* array=CItemArray::NewLC(aStore,aStore.Root());
+    
+              // Add some items
+    TItem item;
+    item = KTxtHello;
+    array-&gt;AddItemL(item);
+    item = KTxtWorld;
+    array-&gt;AddItemL(item);
+             // Re-write the root stream with new data
+    array-&gt;StoreL();
+            // commit all changes
+    aStore.CommitL();
+    ...
+    }</codeblock> <codeblock id="GUID-3E2184DA-7C74-58F0-925E-6AE1317732C9" xml:space="preserve">void CItemArray::AddItemL(const TItem&amp; anItem)
+    {
+    RStoreWriteStream outstream;
+    TStreamId id=outstream.CreateLC(iStore);
+    outstream&lt;&lt;anItem;
+    outstream.CommitL();
+    CleanupStack::PopAndDestroy();
+    iArray-&gt;AppendL(id);
+    }
+</codeblock> <section><title>See also</title> <p><xref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita">File stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e380090_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-44927609-CFD1-5D09-BA78-7A5AB981DD2E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-44927609-CFD1-5D09-BA78-7A5AB981DD2E"><title>Files and Directories</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the file, path and directory names usage in STDLIB. </p> <p>The Symbian platform file system APIs require all file names to be fully specified, possibly by using default components in the session path. For more information, see the documentation on the file server (<xref href="GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita">File server</xref>). In particular, the file system does not support the notion of a "relative path" which uses "." and ".." to navigate relative to a "current working directory". STDLIB does support this and does not require fully qualified paths, with the constraint that any pathname beginning with "&lt;letter&gt; :" will be treated as an absolute path from the root of the specified drive. STDLIB allows the drive letter '?' to mean "any drive". This can be useful when a file or directory is known to exist but it could be on any drive. STDLIB allows both "/" and "\" as directory separators, unlike the underlying Symbian file system which recognises only "\". </p> <p>The current working directory is a process-wide resource (similar to the file descriptor table), so the <codeph>CPosixServer</codeph> will provide a single process-wide current working directory. However, when using the "single-threaded" mode of operation, each thread will have a separate current working directory. </p> <p>The following table gives some examples, all based on a working directory of <filepath>c:\documents\stdlib</filepath>  </p> <table id="GUID-5F0DA1ED-CAAA-522E-8BC9-DD53D3076E63"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><tbody><row><entry><p> <b>Pathname</b>  </p> </entry> <entry><p> <b>In Symbian platform</b>  </p> </entry> <entry><p> <b>In STDLIB</b>  </p> </entry> </row> <row><entry><p> <filepath>c:\documents\stdlib\</filepath>  </p> </entry> <entry><p>current directory </p> </entry> <entry><p>current directory </p> </entry> </row> <row><entry><p> <filepath>c:\documents\stdlib</filepath>  </p> </entry> <entry><p>illegal (not a file) </p> </entry> <entry><p>current directory </p> </entry> </row> <row><entry><p> <filepath>.</filepath>  </p> </entry> <entry><p>illegal </p> </entry> <entry><p>current directory </p> </entry> </row> <row><entry><p> <filepath>..</filepath>  </p> </entry> <entry><p>illegal </p> </entry> <entry><p>c:\documents </p> </entry> </row> <row><entry><p> <filepath>examples</filepath>  </p> </entry> <entry><p>filename </p> </entry> <entry><p>c:\documents\stdlib\examples </p> </entry> </row> <row><entry><p> <filepath>..\examples </filepath>  </p> </entry> <entry><p>illegal </p> </entry> <entry><p>c:\documents\examples </p> </entry> </row> <row><entry><p> <filepath>d:examples </filepath>  </p> </entry> <entry><p>illegal </p> </entry> <entry><p>d:\examples </p> </entry> </row> <row><entry><p> <filepath>?:\system\data\ </filepath>  </p> </entry> <entry><p>illegal </p> </entry> <entry><p>c:\system\data (if file exists on c) or d:\system\data (if it exists on d but not on c) or z:\system\data (if it exists in the ROM). </p> </entry> </row> </tbody> </tgroup> </table> <p>In summary, the POSIX and STDLIB handling of pathnames is DOS-like, with the exception that there is not a separate working directory per drive. </p> <p>The Symbian file system supports DOS-like attributes, rather than POSIX-like permissions. STDLIB cannot therefore provide the full POSIX-like handling of file attributes and implements only "user read permission". </p> <p>STDLIB's implementation of <codeph>fseek()</codeph>, unlike some other implementations, does not allow you to seek beyond the end of a file and expand the file to the new position. </p> <section><title>See also</title> <p> <xref href="GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita">File server</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4492D5C1-C64E-5561-8A3F-8D887603B6FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4492D5C1-C64E-5561-8A3F-8D887603B6FB" xml:lang="en"><title> Standard C++ Porting Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73-master.png has changed
Binary file Symbian3/SDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e100901_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-44B0C58F-B938-4F69-B80A-1EB632EFD434.ditamap	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE bookmap
+  PUBLIC "-//OASIS//DTD DITA BookMap//EN" "bookmap.dtd">
+<bookmap id="GUID-44B0C58F-B938-4F69-B80A-1EB632EFD434">
+<booktitle><mainbooktitle>Symbian Developer Library for Application Developers</mainbooktitle>
+<booktitlealt>Symbian Developer Library for Application Developers</booktitlealt>
+</booktitle>
+<frontmatter id="GUID-DA857913-F826-4CF7-A135-93F2AEB48353">
+<topicref href="GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB.dita" id="GUID-F0EE97CA-CB6C-4D9D-82CE-08588C340A02" print="no" toc="no" type="cover"/>
+<notices href="GUID-CAD36EEF-42CF-52AE-A619-64F988FF342D.dita" id="GUID-4E816009-AE0E-4F68-B5AB-0A2DDD1D335D" type="legal"/>
+</frontmatter>
+<chapter href="GUID-00113601-193D-5214-9DFB-1C67456B7039.dita" id="GUID-55E75BAA-C082-4567-89F3-EC7C9C27851A"><topicref href="GUID-A24491E4-867F-4006-9798-07281553EA51.dita" id="GUID-90F54E87-EDE2-4EC5-915B-2123857BF83E"/><topicref href="GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF.dita" id="GUID-03988776-D184-4A09-BC8B-9946C3874380"/><topicref href="GUID-BF990E15-8B41-5C34-8CE0-04660A475043.dita" id="GUID-BF9EAAE4-B4EA-41AF-A029-F6E39473823B"><topicref href="GUID-5F822B8B-3440-5AA3-998E-B15E929F7A70.dita" id="GUID-833FB279-04D5-42D9-B936-3555907AB515"/><topicref href="GUID-6FA036F6-F4C7-50CA-B08F-7D5F8B7FB6B5.dita" id="GUID-D469D893-B087-4124-A62D-6513E21E0BA5"/></topicref></chapter>
+<chapter href="GUID-35D7EEFC-B2E4-5444-8875-2A24790E08C2.dita" id="GUID-1658EF0B-62F9-4024-B129-623340940759"><topicref href="GUID-9BADA8E9-15AA-5867-BF14-DB8C4D9B40A6.dita" id="GUID-C05FE964-699A-43FF-A6A0-357CF7A5DBF1"/><topicref href="GUID-79E8BE3D-9EF7-5275-A245-3CF689E58DE9.dita" id="GUID-6E1B107A-1BE7-4A37-8E1D-BB1BACDAA36F"/><topicref href="GUID-2458916B-55B2-5E08-A825-4EBDB3503E67.dita" id="GUID-6ABFCD37-BF7D-43BA-B996-24651D905CB6"/><topicref href="GUID-8675AC01-E2D8-425C-899F-12BE99345AA9.dita" id="GUID-B94070EF-8121-4209-A0B3-B88741FC1EB1"/><topicref href="GUID-348E8B54-88D9-5D66-AD11-09131EC387F9.dita" id="GUID-8832066D-1BE3-4871-9785-81787A87B41D"/><topicref href="GUID-1FFE4ED5-7B2E-58A0-9D08-A096F53F37AB.dita" id="GUID-F4A4FCB2-F003-48D2-BD47-CDCD9A756A20"/><topicref href="GUID-9E0DCB19-5775-5E23-B758-163D747A71C9.dita" id="GUID-5ACFC35E-8E10-411A-A334-EDC07B29999F"/><topicref href="GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita" id="GUID-5292CB9A-FAFA-498B-9FC1-848FB77D4984"/><topicref href="GUID-497930CE-4D61-50EE-A63B-3656158EE29C.dita" id="GUID-1CA6A124-EDE6-4F18-86FB-3BAE48709D28"/><topicref href="GUID-12FF05BE-F06E-58F0-909D-05CB6F7FA03E.dita" id="GUID-AD2D939C-C1E3-4C3D-9354-233B3BBF4E02"/><topicref href="GUID-D5FD665E-333B-50FF-A46F-6B22C0877285.dita" id="GUID-5E831A4E-BD5E-4B58-9305-B2E9F3462F7B"/><topicref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita" id="GUID-79B35CA3-03EA-4116-A3E8-1F053BF83544"/><topicref href="GUID-93086866-F6E1-5715-A3BE-EEACF8A760DB.dita" id="GUID-AAA5A68D-699B-4424-9B34-39703900A8BB"/><topicref href="GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859.dita" id="GUID-CEB04C37-032E-4C70-B66B-03D781FDCB01"/><topicref href="GUID-16A1C613-288D-471C-8551-51B61290E28F.dita" id="GUID-695E311D-ED7B-4A8B-9B18-B7826D887F52"/><topicref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita" id="GUID-8A1040BE-0C2F-4B34-A893-01B4FF7CCB36"/><topicref href="GUID-AC39AA12-4F39-58DB-BE67-C624C0A96DE2.dita" id="GUID-0C6B7782-1C84-4F47-9B7C-F638BE3B27FE"><topicref href="GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita" id="GUID-A33BABF8-6A89-45BE-8F3C-AB391060A8FD"/><topicref href="GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita" id="GUID-2A04BCFF-1093-4CFC-9422-6051C5A1FACC"/><topicref href="GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita" id="GUID-87CD6E1A-C3FE-4D9B-BE83-84109DB15A40"/><topicref href="GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita" id="GUID-B4A7E4C7-8E82-4EB1-89EE-E14C0CDAC2A2"/><topicref href="GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita" id="GUID-01158E5C-7FDC-427F-A1DB-6F60608D7463"/></topicref></chapter>
+<chapter chunk="by-topic" href="GUID-AB3D07E6-83C9-4948-A13F-75A65498F444.dita" id="GUID-AD2C37AD-CFB1-4D20-A6DA-FA90C59BF910"><topicref chunk="by-topic" href="GUID-39A995DC-F047-4B41-A60D-27063CE329BE.dita" id="GUID-C111BF5C-9798-4165-9AE2-ED691E282076"><topicref chunk="by-topic" href="GUID-98F104F6-8850-4417-907E-113F2166EBD9.dita"/><topicref chunk="by-topic" href="GUID-CC8EA664-FF2E-40FB-BC1C-89FB1255A9C9.dita"/></topicref><topicref chunk="by-topic" href="GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8.dita" id="GUID-883ED085-582F-466C-9194-67555072CA74"><topicref chunk="by-topic" href="GUID-9058F379-C495-4B22-B270-FF6A80E450B8.dita"/></topicref><topicref chunk="by-topic" href="GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651.dita" id="GUID-3C1E8906-9BD1-4357-89D5-0E5CE55BB0EF"><topicref chunk="by-topic" href="GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita"/><topicref chunk="by-topic" href="GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita"/><topicref chunk="by-topic" href="GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita"/><topicref chunk="by-topic" href="GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita"/><topicref chunk="by-topic" href="GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita"/><topicref chunk="by-topic" href="GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita"/><topicref chunk="by-topic" href="GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita"/></topicref><topicref chunk="by-topic" href="GUID-B088B74A-9A6D-4C72-9069-391ECAD38514.dita" id="GUID-3B317F8F-2BA9-4F5B-898A-5F75C6745496"><topicref chunk="by-topic" href="GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita"/><topicref chunk="by-topic" href="GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita"/><topicref chunk="by-topic" href="GUID-21F92FAD-1EF1-4E36-9157-9214E7C6BB01.dita"/><topicref chunk="by-topic" href="GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita"/></topicref><topicref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita" id="GUID-6F0C610C-0FA8-4948-A860-9B255F580CFE"><topicref chunk="by-topic" href="GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E.dita" id="GUID-17191DEB-DF4E-450B-B76F-1000A1286FDE"><topicref chunk="by-topic" href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita"/><topicref chunk="by-topic" href="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita"/><topicref chunk="by-topic" href="GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita"/></topicref><topicref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita" id="GUID-41D63393-50AF-472B-A06B-70560EBF79CC"/></topicref><topicref chunk="by-topic" href="GUID-97FFA8D2-4515-448B-8107-61151F252048.dita" id="GUID-79315258-C162-4810-A9DF-0E69C95BC5A6"><topicref chunk="by-topic" href="GUID-E9E5556C-101B-48F2-B9AA-9DBEF5D85D5E.dita"/><topicref chunk="by-topic" href="GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05.dita"/></topicref><topicref chunk="by-topic" href="GUID-30647807-A0D2-4D96-975A-BF1800749977.dita" id="GUID-0198770C-6DA5-483D-AD8B-E1860508DE1A"/></chapter>
+<chapter href="GUID-32E29020-1956-461A-B79A-1492E06049E7.dita" id="GUID-6D0B6AD1-1678-4C04-8E47-E211F0029A1B"><topicgroup id="GUID-7C52D98D-16F8-4DE7-9946-8A303EEA8E0E">
+<topicref href="GUID-97CCEF05-8F3D-5802-A33A-ED349084D524.dita" id="GUID-C3603501-AC56-4CB5-AFC2-A836B7BCF436"><topicref href="GUID-1ECCCAA0-2E27-5E46-968D-4EBC4E5CE259.dita" id="GUID-661D00F4-AB74-4C63-969C-3477E4A7B38B"><topicref href="GUID-87BEA6F9-B236-50CF-9DB3-36234A6EB797.dita" id="GUID-115ABA2B-9776-4332-AA98-56EDBD35DA05"><topicref href="GUID-C459D462-772A-58FC-8C46-B7559436C12C.dita" id="GUID-D467E357-8D23-4D58-9A2D-12DAB30DBE9F"><topicref href="GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita" id="GUID-0FBE8424-C60E-46B1-965D-4DEA0E73AFF0"/></topicref></topicref></topicref><topicref href="GUID-16E7CF5D-4364-5F42-94FF-9F79BB52523D.dita" id="GUID-A6007079-AF83-458B-8E74-3C59E4372AFA"><topicref href="GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita" id="GUID-B81CCCE4-FF39-49F7-9AC1-4260140DBFDF"/><topicref href="GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita" id="GUID-E58B6925-31CC-47C9-B279-2C512ED6230B"/></topicref><topicref href="GUID-26FC16BB-47D8-5DF6-9ABE-07526286597A.dita" id="GUID-4998B75F-0A77-436D-8635-BAD2A592B374"><topicref href="GUID-05D6AB1C-8548-58C6-AA6C-EE362FF49247.dita" id="GUID-AD08A884-67CA-43F4-92FE-CE74480B16C7"/></topicref><topicref href="GUID-AD5F35EC-4459-589F-9C46-94901562E05F.dita" id="GUID-A95A00DB-D468-49E8-AC56-CD6DA46BB2D7"><topicref href="GUID-A36C2DE6-21D8-5558-B223-1E81CEB16891.dita" id="GUID-C454BA00-9A3A-4B67-9EE6-7A1BCD2DEE7A"/><topicref href="GUID-A7884A6F-384E-5A52-B2F4-C2FA1B3BAC29.dita" id="GUID-91EFF9E1-7D6C-4921-BF6E-F13D4598BE18"/></topicref><topicref href="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita" id="GUID-27F01B18-FB27-475F-940B-2547BFF547B0"><topicref href="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita" id="GUID-C0C63A5F-7BED-432C-98B3-E7EEE3EA0FF1"/><topicref href="GUID-87DB3E71-AAE1-57B6-BC79-CBAF8382614A.dita" id="GUID-12B81070-EEF0-41E6-91C5-045BCA164E5F"/><topicref href="GUID-651C2913-2AB9-5873-B296-5C4233967F21.dita" id="GUID-FAEA9EEC-DED6-4DF5-85F6-96BAE34ADA65"/><topicref href="GUID-2F42DC8F-E489-5EA4-8413-784D34965497.dita" id="GUID-1CC1EADB-1563-4EFC-9269-4DDE1C485D91"/><topicref href="GUID-1BB546C1-2795-55D9-97B6-AC3F6AB79389.dita" id="GUID-366B1482-99FA-4424-90C9-4B2F3D17D182"><topicref href="GUID-3FE54688-2CDE-5359-9ABB-B83BFA025A81.dita" id="GUID-EB9D4A22-B540-4196-8DC3-0A1874C4145A"/><topicref href="GUID-A62E89DE-0762-5827-856D-F20EEF46EE4B-GENID-1-6-1-3-1-1-7-1-7-1-4-1.dita" id="GUID-5BFD1A1A-E321-4A52-BDC5-C292D9357E07"/><topicref href="GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita" id="GUID-9AC1CDC4-DB50-4EDA-B8AA-4935F6F9AA7A"/><topicref href="GUID-4E985144-C4E6-5114-B88F-B9C92F313D91.dita" id="GUID-EE98AEF9-61B3-4A86-8626-536E7AF89EA3"/><topicref href="GUID-BD988DF9-45CA-53F3-816F-6DB81185CE40.dita" id="GUID-09F73A21-EEE8-445D-87A9-2405EF95F791"/><topicref href="GUID-19CF4B7B-EA55-566D-B68C-0A25DCADCA6C.dita" id="GUID-E9D2DF56-FCA5-45B0-87A5-72EF1480E4E8"/><topicref href="GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita" id="GUID-1C4B3076-56CE-4709-8457-E1FDBF16D711"/><topicref href="GUID-9E2AEFF3-6C6E-5F09-B5C0-A70AECB421B0.dita" id="GUID-9D3E459E-A4DB-4601-BFBF-55F009E4ECB0"/><topicref href="GUID-0387B02E-9B81-5E61-A33E-D644251424A2.dita" id="GUID-A9BAB529-8F57-45AF-B2A9-4FBBF109FA83"/></topicref><topicref href="GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita" id="GUID-3706BC38-8F16-42C9-A122-C1B02288BD47"><topicref href="GUID-971C9B81-1D6F-59E7-9416-385A0787D642.dita" id="GUID-F1774010-EA04-43A9-B7BE-D09B18F229C1"/><topicref href="GUID-06676D89-FDE7-58FD-9D2E-3C984CD24BAC.dita" id="GUID-B1F05A86-7D69-49FD-8431-0BB3A9005991"/></topicref><topicref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita" id="GUID-99629631-C9FD-4985-8ED8-BECD2980D672"/><topicref href="GUID-7250950C-5502-5ACE-864B-0EFD5C253053.dita" id="GUID-DA1CAA8A-CE6C-4754-8E18-FF3F578C6B61"/><topicref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita" id="GUID-C3F6BB45-307F-439E-9499-B972683CADED"/></topicref><topicref href="GUID-61B965D9-B85E-5F40-8D56-1C0FA77D2492.dita" id="GUID-1DA4D054-16BD-46A8-8371-8855003B004C"><topicref href="GUID-C9823942-CE52-53E3-B183-3B1F6509749F.dita" id="GUID-19CFAA71-397F-41E2-A040-00A99A530B89"/><topicref href="GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978.dita" id="GUID-02341CAB-0292-449A-B5D4-46713F658EC3"/><topicref href="GUID-D65D1EDC-5CB4-58C1-99B5-4495B6DA511F.dita" id="GUID-19C61AC1-923A-4D7B-B2DE-F0502EF4D721"/><topicref href="GUID-6501FAFF-6E21-5BC8-BA85-B1B4CE1AC6A7.dita" id="GUID-79070B2D-883E-45C2-9C61-53AD0FE1953E"/><topicref href="GUID-9620407B-0560-5D95-A862-5AE406C48983.dita" id="GUID-0F9231B0-A515-4C13-8D82-83FBA1DDD95C"/></topicref><topicref href="GUID-0C6CCACF-84B2-5715-BCF3-12330E6F05D4.dita" id="GUID-4A0F0AAA-BF4D-4579-8D95-E4E63094ED36"><topicref href="GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E.dita" id="GUID-39CB5423-7D64-4A3B-92EF-B659A3E824E0"/><topicref href="GUID-68A55CD5-EF01-5DE2-8119-EFA39589960F.dita" id="GUID-AE7241B1-CC74-4256-996E-4AB60A543B6C"><topicref href="GUID-A626197A-3FA7-588C-B649-E33CCA990B99.dita" id="GUID-01BA6AF1-4676-42A7-8EAF-332DCC95386D"/><topicref href="GUID-6CEAFE12-EB30-5231-94F4-2D097E79BFE0.dita" id="GUID-E851FDF3-9013-4E7B-BEED-D29F00140696"/><topicref href="GUID-1BAF17A9-B71B-5003-AEB5-4631F019C6AC.dita" id="GUID-3D74A06F-FC70-46C1-9B60-1933826B5DEF"/><topicref href="GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96.dita" id="GUID-05D65889-B0F8-4959-8917-07B23E524EFB"/><topicref href="GUID-A7E39E45-02BA-58F4-8807-EFABB8F6E5D0.dita" id="GUID-9A5D1913-8E79-43A5-B3C2-50295435AA7C"/><topicref href="GUID-ACC71D0D-32C4-5DAF-B4D9-66013A073FD4.dita" id="GUID-A1AE9033-50B6-4DC2-B0AE-D8FCD10654E5"/><topicref href="GUID-238D6070-96AC-5D8A-86EA-488C59DF2AE3.dita" id="GUID-6E0EFDB0-EE6F-4CAE-90DA-A75CF8BC430F"/><topicref href="GUID-38679CA2-0066-589C-988F-AC14B7E2F107.dita" id="GUID-676AB0CE-5A39-4593-86BF-DC1F75D8FE44"/><topicref href="GUID-31A28040-6C8E-5C65-A697-04B30B441686.dita" id="GUID-609C72B9-96DD-46B2-A7CA-387C625F73B1"/></topicref></topicref><topicref href="GUID-AF30D941-BFD8-5260-9588-C5DA6983F558.dita" id="GUID-1E678D32-14C3-4401-BAFD-AEBD3198DB9B"><topicref href="GUID-A3449F37-89BB-5208-8FD5-F4DF73F7E71A.dita" id="GUID-C33C04C3-5267-4A01-B74F-4BC29CE7B396"/><topicref href="GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita" id="GUID-3FCC8008-F234-4106-BF64-1B4AF3CC9897"/><topicref href="GUID-4E195F2A-78AE-5664-A115-AD65BF457AB1.dita" id="GUID-0D6CE78E-77EF-468E-B9D1-3572AF6E445E"/><topicref href="GUID-B386CA7A-F527-5584-9455-371E623DCF76.dita" id="GUID-635FF1F0-5E09-4A2D-9170-EA253319AAE3"/></topicref><topicref href="GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2.dita" id="GUID-46FA3254-AF9A-4F2B-B0DD-D28797D4870F"><topicref href="GUID-1C802DBD-1453-5C69-94D5-FB0229C544D6.dita" id="GUID-40D8572D-628B-40A4-AA78-6049455DD308"/><topicref href="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita" id="GUID-0A8EC89E-4BE0-4308-99C0-04D0319FF969"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-23F2454C-DB6C-47E0-92F1-68027F30F7EF">
+<topicref href="GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita" id="GUID-24DE1D17-ADA8-476D-B8DF-A4E4B24E5979"><topicref href="GUID-772F9CC3-71B3-53F0-9307-91D35B133810.dita" id="GUID-41082D6A-3209-4599-88A1-D592D5AB6104"/><topicref href="GUID-8E160B29-18C4-574B-9259-9A8E958CDA91.dita" id="GUID-2F2F1950-9B76-4D53-A98A-8F4A84D311E3"><topicref href="GUID-2676BA6B-4BEB-5E2A-AD18-D2199465B121.dita" id="GUID-AF879555-E8B9-43A5-A6DB-871AFE40421E"/><topicref href="GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22.dita" id="GUID-F0C23CF8-2937-4BFC-907B-C2D9F66CFAE1"><topicref href="GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita" id="GUID-5D0B564B-D5FE-4473-AB6F-B80406504ED0"/><topicref href="GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita" id="GUID-849A2013-651B-459B-8FE8-F55043567006"><topicref href="GUID-55A6DA94-FAE6-442D-BBA8-82F92D4C63F2.dita" id="GUID-F7FBBEC0-132C-41B3-A1D0-31CDBEAF5E0E"/><topicref href="GUID-1747534D-063A-45B0-8636-E7767F984BB0.dita" id="GUID-11510F90-951F-4E59-B7A4-C5C2A3E6A78D"/><topicref href="GUID-6CC45734-E497-40A7-AB23-37A24EBAF339.dita" id="GUID-8E7CCD02-19C0-4578-9709-F02E686C21BC"/></topicref><topicref href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita" id="GUID-BFD78898-6221-4DEC-80CD-448DB14247F6"/></topicref><topicref href="GUID-9903E2AB-9D96-5005-8DC5-26653F93616C.dita" id="GUID-9811D801-8907-4890-B9BF-82B1CB3D2EFF"><topicref href="GUID-0554452F-856D-51A1-A1A5-C44EEFF7A3D4.dita" id="GUID-B5176D49-C256-448C-B5B6-16A358DEBB25"/><topicref href="GUID-1C7F6DBA-7113-5542-AEF1-179FDD980443.dita" id="GUID-4C16575A-88F0-4A0E-A970-6D5E20E88820"><topicref href="GUID-F370FDA8-6DB7-531A-A057-B773F1729C46.dita" id="GUID-95C0AF64-F25A-4534-B2F1-4885446A390E"/><topicref href="GUID-6A8A4910-681B-5E5A-AEA9-FD8BDBD84EDD.dita" id="GUID-A667C098-8967-44AB-916A-EAF78747C0F4"/><topicref href="GUID-ABD45929-DEA1-5500-B64A-B32F623B6A06.dita" id="GUID-FCFEA46E-A502-4C62-B175-58356B0DA027"/></topicref></topicref><topicref href="GUID-ED2D5BEA-AD2A-51CE-8CBC-8B5E33DD6356.dita" id="GUID-4674A27D-0EF8-4DC1-9116-65B6D9439EED"><topicref href="GUID-AFE0238A-D6A4-5D07-BB99-85E8CF97BD26.dita" id="GUID-EFD66C5F-DE62-4F35-B049-A3E3B592F564"/><topicref href="GUID-C55D1D74-B764-5DD1-8C43-5A5138578EAC.dita" id="GUID-D0713AD8-837E-497B-93E6-713BC7FD88E2"><topicref href="GUID-AFBD4ED6-9588-531C-8EDF-566DB1D03088.dita" id="GUID-B4B01609-6A22-454F-B86B-43A841860FD4"/><topicref href="GUID-9DCD2076-0F73-5BB7-85BF-580567E0AB53.dita" id="GUID-13E91532-F961-43F6-9CC6-E5993F22A6D4"><topicref href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita" id="GUID-313C97D6-DE31-47E6-B291-9513AA329CB1"/></topicref><topicref href="GUID-F8A26275-883A-5299-9C37-9DDCC2F62108.dita" id="GUID-2F051410-F5E3-4BAB-976E-DEBB40C22FB2"/><topicref href="GUID-A6CF0AD2-BDE4-548C-A165-581FCD019D7C.dita" id="GUID-6200CF28-7921-442C-BFB0-AE19E88A04A6"/><topicref href="GUID-7A7254E3-A03A-5B38-B2B5-FFEEE70F5E93.dita" id="GUID-55FF9BBA-D842-4C82-80E8-80AD19D03CA6"/></topicref><topicref href="GUID-A4C26317-9F76-587E-A4B6-D94892ACF11B.dita" id="GUID-EEFABE24-736B-4E6D-9683-E00078686F00"><topicref href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita" id="GUID-B6280F64-0638-46E6-B158-94B356AB0AB2"/><topicref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita" id="GUID-C467F6DF-4A11-4146-88AD-CCC8AD6D487B"/></topicref><topicref href="GUID-100F41B4-67BE-5978-99DA-C9B6DE8760F7.dita" id="GUID-C638ACC1-163F-4E29-8BCB-003D067B07DF"><topicref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita" id="GUID-026A8C70-3146-4E44-A81B-E23CE9A8C132"/><topicref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita" id="GUID-381C764D-6F7F-48CC-B51B-EB6BD4FC6EAE"/><topicref href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita" id="GUID-CEA4E6C6-2706-4EFB-BFBF-611F284A6A89"/><topicref href="GUID-42CF6D55-CAD2-5049-A1B6-35479404C273.dita" id="GUID-B9185120-D948-4350-ACAF-B3FAA054BF5F"/><topicref href="GUID-6D6C54E2-66DA-5626-A75D-5597469D5BE0.dita" id="GUID-215EB8C4-FD95-44A2-8C95-69E1E0ECF1A5"><topicref href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita" id="GUID-B91BBB20-2FBE-40DD-91C4-A21F9418F6B8"><topicref href="GUID-0BE71FC3-4759-50FC-A74F-C3DD42C9FCED.dita" id="GUID-49AEA3D8-331E-443C-9513-FAFD21ADD9FA"/><topicref href="GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita" id="GUID-D6246DED-05A0-4D65-A0CE-053A9FA8F648"/><topicref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita" id="GUID-B277E423-AFC6-46E5-9734-A6F49E888E0E"/><topicref href="GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF.dita" id="GUID-8580DEB5-4A9C-45FF-9419-7A89548965C5"/><topicref href="GUID-F87A1381-3E71-5723-B8B6-3F4E0FF368CE.dita" id="GUID-D68B2F04-83CC-4C52-A410-810B38E2F4AB"/><topicref href="GUID-72C2E618-C33D-5770-908D-E1A99E5D1B1D.dita" id="GUID-8812ABE5-27EC-436C-93EC-7111E3E083A5"><topicref href="GUID-130D7E96-2AEF-559B-B5F1-D4B6754519C9.dita" id="GUID-89DE95A4-B41D-46CC-8716-597EA4D058B6"/><topicref href="GUID-C32D14AD-CC99-59D6-BA22-321F705418AF.dita" id="GUID-7A8D1CB1-5EF5-43D5-99DD-B5A40A029E35"><topicref href="GUID-D201143F-2B35-5633-8572-C5CAE556FC75.dita" id="GUID-10D3AEDD-83F9-4370-AC8B-537EDB9A0993"/><topicref href="GUID-71909C6D-297C-50A9-99BB-FEBC67389954.dita" id="GUID-D27C3FA1-37A3-4169-904D-88ABC8A17977"/><topicref href="GUID-C5F9AAD3-5183-57E5-A33B-032DE3C063AE.dita" id="GUID-77E06530-4436-497F-8DE1-BAC9B2B1C191"/></topicref><topicref href="GUID-FF82B80D-18CA-5333-83EB-3AB94F696016.dita" id="GUID-548B33EA-9C55-44AD-A742-73496AE02885"/><topicref href="GUID-FF39192E-9C93-593F-8F47-DB18DB876F6F.dita" id="GUID-44C9B7A7-72B5-4794-8177-9748E15E2690"><topicref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita" id="GUID-2E12F4A6-5219-43DA-9EDE-2C39F1CB454C"/><topicref href="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita" id="GUID-4D8504BA-BB28-4E24-AECA-0202DDDE0177"/></topicref><topicref href="GUID-255653B8-DACF-552C-8F33-7F6552824F4F.dita" id="GUID-78BBEE47-C08F-4848-9027-D51F5C96397D"/></topicref><topicref href="GUID-DB220677-5998-529C-BE35-0D66F588E057.dita" id="GUID-DECB898C-F8E5-4C5F-A337-09C520F2A84D"/><topicref href="GUID-DA09248E-E299-596E-9860-B709F7C6529A.dita" id="GUID-E4ABFFE9-7481-465F-B8E2-7B436D27C64C"/><topicref href="GUID-6E385BCC-8AD8-5CCD-9378-86127443B407.dita" id="GUID-5D73D888-651C-49E8-B7D7-BF8B0EF7A8BE"><topicref href="GUID-AED57265-6106-4217-ADE6-1327CA3FDE7E.dita" id="GUID-A0683A94-307A-4728-9C9B-6F13F8B0CA79"/><topicref href="GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita" id="GUID-0C0A20EC-B43C-4D1C-B1B5-9E48B2BFAC92"/><topicref href="GUID-AF26E3D3-D0CD-4715-B9F6-FBB1BCF2DDE2.dita" id="GUID-D7283B51-1FE2-4196-9B45-F486434F61B2"/></topicref></topicref></topicref></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-E375D3C0-707D-4A44-B731-398302A434E8">
+  <topicref href="GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita" id="GUID-1A3BED1A-9C38-4A32-8809-0B79E3D1C7E1"><topicref href="GUID-0F647342-E069-5444-9370-58520375543A.dita" id="GUID-46783D6E-CC98-49B8-8DEC-0E043A69A8D6"><topicref href="GUID-7C197DC1-43CA-5146-B81D-36B685A1D0C9.dita" id="GUID-9052F948-A78B-40DD-B01A-28432704271A"><topicref href="GUID-EA7C8C95-A4D5-5E90-B0B8-C35D8C7423F1.dita" id="GUID-F1754595-6E22-47E0-9CB7-6042686B4AA1"><topicref href="GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3.dita" id="GUID-7E2458FF-A67F-49F6-BB76-0D2EBE112AEB"/><topicref href="GUID-83676985-070A-5CE9-BF36-D7C56C5025F9.dita" id="GUID-DFD30B8A-8F7C-42AF-B656-0E96F1CF039C"/><topicref href="GUID-520F620F-03CE-5C4E-9783-745D2740F648.dita" id="GUID-292F19CA-A6BB-4DC0-AFCA-84A499A81200"/></topicref><topicref href="GUID-844C335C-E8FD-5DF8-8E05-7DB1DF4C3360.dita" id="GUID-C5A94BF5-C1E8-49A1-BFFD-FEA89B391727"><topicref href="GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita" id="GUID-09B2B894-943C-4D25-BA56-75F698929771"/><topicref href="GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita" id="GUID-F2C939A2-9B17-4453-A676-F1033888414B"/><topicref href="GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB.dita" id="GUID-0CCB4A5C-A58E-4D02-9ACA-5A815A3A8C04"/><topicref href="GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita" id="GUID-EE87B788-4589-4A08-93C5-D937E5C9A546"/><topicref href="GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita" id="GUID-2794059E-2805-46F6-9435-C7094A82D8B1"/><topicref href="GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1.dita" id="GUID-3B1D7536-7C90-4BDD-A100-8D832E52EE01"/><topicref href="GUID-E2D4973C-FE93-5DE7-B04E-19B7701621C3.dita" id="GUID-95418C5D-D38B-4356-98C7-D19EB9E58442"/><topicref href="GUID-9C5A86D2-E602-55AE-B54B-8511E70CD23D.dita" id="GUID-A714822B-9A13-4B84-BA5F-3E4F3E665BBB"/></topicref><topicref href="GUID-F4163874-3F97-506B-AC93-EA2321D3BEC1.dita" id="GUID-7284994B-E86E-47A3-A0B6-9D09956C915E"><topicref href="GUID-5E10D5B7-C407-51E0-8C16-466A8BC89106.dita" id="GUID-72FC5CE0-7E99-4B98-84D5-6C9A1BE8743F"/><topicref href="GUID-CC5A1C8D-55AA-5FAE-A446-4CBF949C9003.dita" id="GUID-E34E670E-27EF-4B6C-ADD3-449A446EE537"/><topicref href="GUID-99F36ADE-EBBF-5EE7-B4C9-A540D4CA1776.dita" id="GUID-C807678D-1E9D-4741-BEBB-23961434EEDE"/><topicref href="GUID-79CFCC01-7418-5ECA-AF65-1DCAD97AA7A6.dita" id="GUID-14928F12-35D9-42EF-AFB0-648CED4EE7EE"/><topicref href="GUID-511A0F2D-AD60-56C5-808C-8F8570C19C3A.dita" id="GUID-4DA1B01E-B491-4A3C-AEAE-7C7F60D39822"/><topicref href="GUID-FDD42A61-9FFE-53F5-A0B3-D8087270C7F6.dita" id="GUID-EA101F64-1E3E-4E91-B9FA-6717B6ED8397"/></topicref><topicref href="GUID-5E95D090-582E-536A-AE93-8C5312618E76.dita" id="GUID-123B604E-3B77-4D4B-9A5C-B37B42B5E158"><topicref href="GUID-2DC4EAD5-98D3-5B17-AEBD-6ADE481CBD94.dita" id="GUID-73F3705B-F518-4AF7-8BCC-830647652BBD"/><topicref href="GUID-EE79D90C-CC71-5C2B-8715-A9764A48F40D.dita" id="GUID-BDB9F7B6-98FE-474C-B349-B2B8D0FC5C75"/><topicref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita" id="GUID-5B4A50EF-BE5B-4AE7-9330-4AFD0D7215FC"/></topicref><topicref href="GUID-E9C896AE-62B4-54DC-9958-913D19D14DC6.dita" id="GUID-4E62536F-B064-4EE7-A93F-43B6F6720443"><topicref href="GUID-9EE405E2-2D58-525B-8C33-B1EAC0C5A71A.dita" id="GUID-CAFCD588-2FA4-46F1-B7C8-89C1E17CAF72"/><topicref href="GUID-AC5665B4-8E33-58A3-824B-6CC40E13160A.dita" id="GUID-DAD00974-2015-457E-A2B1-641483D12E4A"/><topicref href="GUID-7EA8047F-BD30-5100-9284-9A684500BFE6.dita" id="GUID-A7E41325-BE8C-4ABC-863D-A85A832DA9B1"/><topicref href="GUID-C48890DD-BBFD-53FA-95D6-7F39D9C3C263.dita" id="GUID-483830E5-96C1-4632-A9AD-A03D894CAD37"/></topicref><topicref href="GUID-87CD8C58-F6B9-5D6B-9D7B-862979DE3B6F.dita" id="GUID-DC988A19-461F-4356-9B41-54447BD957F8"/><topicref href="GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita" id="GUID-EC75459C-AA1C-4137-89AE-101F80D349B5"/><topicref href="GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita" id="GUID-1D233EB1-D06B-45D2-87DC-EECD4C23C060"/><topicref href="GUID-8BE1690A-F331-5AD0-BC22-3122CA4C4E01.dita" id="GUID-E07C6EF9-212D-4B75-86C5-75822AABD855"><topicref href="GUID-2332AFD7-30F2-5B4D-BBA9-3EA36D8F5E81.dita" id="GUID-8B4FDB23-7F45-4E30-848E-04F1FBF2B5EB"/><topicref href="GUID-8FC2BA94-2374-5BFE-B4CF-624A6B0056BC.dita" id="GUID-8C0221D4-EB01-4F4F-B082-86B94F617741"/><topicref href="GUID-4B885E13-AC1E-5208-9F07-E6219E214626.dita" id="GUID-88C62B47-110B-419E-9D44-20FAFBEDD594"/><topicref href="GUID-B66323BB-7AC0-5303-BC3A-DD577D28CF16.dita" id="GUID-9B982E68-948A-48EB-A54D-549958F9D10A"/></topicref><topicref href="GUID-D5AA9C67-CCE3-53BE-A50E-FAE73699E68F.dita" id="GUID-FC62D7C5-0664-4825-AC08-9349E44C36F9"><topicref href="GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita" id="GUID-5F240874-7C1E-42E8-8509-FCA4AA1DE1C1"/></topicref><topicref href="GUID-97EC9722-242B-5DF4-99E9-B63AC4BA97DA.dita" id="GUID-550DA947-6602-47B7-BAC0-8804E63259A3"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-4804ED20-1E1C-41EB-9C5C-E2863D1226C7">
+<topicref href="GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita" id="GUID-BC813F90-5B2D-4502-A28E-35AEFB968102"><topicref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita" id="GUID-BD0D5FA5-D097-4BE3-9371-50EEE74F5A2A"><topicref chunk="by-topic" href="GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita" id="GUID-94A3D457-C6AD-4F13-ACBB-1431337D91EA"><topicref chunk="by-topic" href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita"/><topicref chunk="by-topic" href="GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita"/></topicref><topicref chunk="by-topic" href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita" id="GUID-E1A1892A-16EB-42F0-A560-784CDB3FE80B"><topicref chunk="by-topic" href="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita"/></topicref><topicref chunk="by-topic" href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita" id="GUID-56553305-D267-4192-B71B-8BFD1B5798AF"><topicref chunk="by-topic" href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita"><topicref chunk="by-topic" href="GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita"/></topicref><topicref chunk="by-topic" href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita"><topicref chunk="by-topic" href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita"><topicref chunk="by-topic" href="GUID-542550FA-F9F1-46D6-8182-6E7FAA013572.dita"/><topicref chunk="by-topic" href="GUID-1614B24F-5DB2-43AA-9A18-723BD61B8B4C.dita"/></topicref><topicref chunk="by-topic" href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita"/><topicref chunk="by-topic" href="GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.dita"/><topicref chunk="by-topic" href="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita"/><topicref chunk="by-topic" href="GUID-868C1A38-3CD0-4082-8106-DC3EE1F815D8.dita"/><topicref chunk="by-topic" href="GUID-95DD1440-01C9-4997-8DD4-FFD33D7DEAFF.dita"/><topicref chunk="by-topic" href="GUID-3729C075-4958-4874-9DD7-02A68D17E043.dita"/></topicref><topicref chunk="by-topic" href="GUID-5A292526-5B71-4076-9DBD-1385CD1FFD37.dita"><topicref chunk="by-topic" href="GUID-B4218FA6-5BE0-4000-BC85-3078892EDADA.dita"/></topicref><topicref chunk="by-topic" href="GUID-51CD4B23-F4C1-4CD2-8CDB-6335365CE44B.dita"><topicref chunk="by-topic" href="GUID-6A2160F0-6062-4E77-ABA3-B829AF9689FA.dita"/><topicref chunk="by-topic" href="GUID-6457E7C4-1203-47B6-8AD3-A6998798943B.dita"/></topicref></topicref><topicref chunk="by-topic" href="GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita" id="GUID-11E4E9FD-A9FB-4990-9B0A-F22032C1E3CE"><topicref chunk="by-topic" href="GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita"/><topicref chunk="by-topic" href="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita"/><topicref chunk="by-topic" href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita"/><topicref chunk="by-topic" href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita"/><topicref chunk="by-topic" href="GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita"/><topicref chunk="by-topic" href="GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita"/><topicref chunk="by-topic" href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita"/><topicref chunk="by-topic" href="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita"/><topicref chunk="by-topic" href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita"/><topicref chunk="by-topic" href="GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita" id="GUID-C74314E4-F7BA-4C34-A687-6D7820659986"><topicref chunk="by-topic" href="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita"/><topicref chunk="by-topic" href="GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita"/></topicref></topicref><topicref chunk="by-topic" href="GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita" id="GUID-1953408B-E725-4FFD-B359-EEAF52205744"><topicref chunk="by-topic" href="GUID-A4560E99-C124-49A1-ADA1-D1B1F18EE539.dita"/><topicref chunk="by-topic" href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita"/><topicref chunk="by-topic" href="GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita"/><topicref chunk="by-topic" href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita"/><topicref chunk="by-topic" href="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita"><topicref chunk="by-topic" href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita"><topicref chunk="by-topic" href="GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87.dita"/></topicref><topicref chunk="by-topic" href="GUID-40CA47C0-76F9-42FE-AF9D-0B1BF42ACCB7.dita"/><topicref chunk="by-topic" href="GUID-F3262DF6-39CA-4E96-AD0E-C1FFDE9B0A61.dita"/></topicref><topicref chunk="by-topic" href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita"/></topicref><topicref chunk="by-topic" href="GUID-E50EC0B4-A434-4C30-A1A9-1A976185FF28.dita" id="GUID-32CF182A-1767-4E89-84E8-B79220E20CE2"><topicref chunk="by-topic" href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita"><topicref chunk="by-topic" href="GUID-215935B4-8AA8-4A87-B70F-E43ADB70B1D2.dita"/><topicref chunk="by-topic" href="GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F.dita"><topicref chunk="by-topic" href="GUID-BE871265-147B-45F3-8772-A4E091223EDB.dita"/><topicref chunk="by-topic" href="GUID-DC59BEAD-0047-4D7A-96D1-C5E3EC4F982B.dita"/><topicref chunk="by-topic" href="GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094.dita"/></topicref><topicref chunk="by-topic" href="GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C.dita"/></topicref><topicref chunk="by-topic" href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita"><topicref chunk="by-topic" href="GUID-89B12BB4-877E-4157-9BD1-81AD02EE3543.dita"/><topicref chunk="by-topic" href="GUID-BCC6F8D1-9F6C-41C4-A2FB-AB7528B03F8D.dita"><topicref chunk="by-topic" href="GUID-A3BCC33F-D11B-4F98-BCC3-9A06381A02E7.dita"/><topicref chunk="by-topic" href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita"/><topicref chunk="by-topic" href="GUID-DFDDF0C5-0E66-4394-A746-7FE35EEA4E6A.dita"/></topicref><topicref chunk="by-topic" href="GUID-95C188D0-EDB2-46D0-ACDE-19AAD524C9F4.dita"><topicref chunk="by-topic" href="GUID-1A26BD9E-5B8E-4E6D-904E-B8354B14E111.dita"/><topicref chunk="by-topic" href="GUID-C6E9D609-E82C-4FAC-9265-F6A4FF61049C.dita"/><topicref chunk="by-topic" href="GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A.dita"/></topicref></topicref><topicref chunk="by-topic" href="GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita"><topicref chunk="by-topic" href="GUID-546FD573-8136-4C58-878B-C2F643B333AA.dita"/><topicref chunk="by-topic" href="GUID-B2737D23-936F-4968-99DE-7FAB28968AA9.dita"><topicref chunk="by-topic" href="GUID-5578DF32-65ED-47F9-8A10-7538206AC473.dita"/><topicref chunk="by-topic" href="GUID-2BD20EF8-B6B8-4A1B-8B0D-3326B839FD37.dita"/></topicref><topicref chunk="by-topic" href="GUID-57A73F9C-5E72-4445-BF2C-9D44A3EC88B5.dita"><topicref chunk="by-topic" href="GUID-D78B510E-3F5C-4B5D-B53F-917F2DAF6C6A.dita"/></topicref></topicref></topicref><topicref chunk="by-topic" href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita" id="GUID-59F3891D-466E-4224-BC4E-65AD0AF02F02"><topicref chunk="by-topic" href="GUID-457CC544-EC3B-4863-A5C4-DC7046614929.dita"/><topicref chunk="by-topic" href="GUID-9EA7B72B-8394-48B8-A0CC-4BB34CBDB01C.dita"/><topicref chunk="by-topic" href="GUID-88917386-AD48-4C76-A1C7-46F0B1E85A18.dita"/></topicref></topicref><topichead id="GUID-8C40E993-C9A0-423D-979D-7BB11CE091C1" navtitle="Touch UI support">
+<topicmeta><linktext>Touch UI support</linktext>
+<shortdesc>From S60 5th Edition, all GUI applications must work with devices
+that have touch screens. This section describes how to use UI components with
+touch support, and how applications can receive touch related events.</shortdesc>
+</topicmeta>
+<topicref href="GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita" id="GUID-7D06954D-AAE5-45FD-BE63-7B8A364CF0A2"><topicref href="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita" id="GUID-4601D5D2-B205-45CF-99AB-501D7F09A798"/><topicref href="GUID-F3CB6985-A9AA-4E01-B157-5AB8DDC7951B.dita" id="GUID-4A89B6DF-D377-4E56-9402-43BC0776725C"/><topicgroup id="GUID-B167D7BB-09AE-43BB-B5E4-9E69C29A5C87">
+<topicref href="GUID-0D093C3D-4D85-455E-B685-064A9B25B1FE.dita" id="GUID-414FF4D2-1B0B-4139-9A4D-D8C18F2BC5C5"><topicgroup id="GUID-C03FD94B-E295-4E6F-83CB-8A25FE02CB6A">
+<topicref href="GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C.dita" id="GUID-24014BF3-7F9F-44B0-A7AD-F00B94F92209"><topicref href="GUID-41A36790-CB11-4620-A2D5-1981077E5753.dita" id="GUID-4E85D95F-8C4D-45EB-AA7A-3B03DE4F48C5"/><topicref href="GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita" id="GUID-509CB8CE-99A9-4504-BF4B-4BA227614CD2"/></topicref>
+<topicref href="GUID-056165A7-E8A1-4868-8051-9EC58C5A3342.dita" id="GUID-8C348325-A36B-4528-9F42-F5055A1354D5"><topicref href="GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita" id="GUID-E5880497-8B22-4911-9785-BEA88B409D20"/><topicref href="GUID-3CA039D8-A74D-4C9E-B4F5-6E153C7F65A1.dita" id="GUID-7AEA27ED-4F18-409B-AEAA-09EE18EA7F80"/><topicref href="GUID-7BFEEDF7-3DB8-42FF-9D7A-F98E536F7686.dita" id="GUID-67C0A024-F61A-485B-836A-57ACF3F29B90"/><topicref href="GUID-21DAC50D-7737-42B6-BBDA-E12E8779741B.dita" id="GUID-1AEFA8E7-00E6-46D8-8DAE-25C14322FA65"/></topicref>
+</topicgroup><topicref href="GUID-27895B0A-4C0F-403D-A839-F15B2F102A21.dita" id="GUID-8482BB04-D44D-4FD3-ADF6-DE9932944EEB"/><topicref href="GUID-295341D9-A5FA-4F25-B681-C5B3264165AF.dita" id="GUID-454DD631-4714-41DD-A7F1-A0C2B0B76A2C"/><topicref href="GUID-C11AF871-56C8-4EA4-A1E0-E2B23372EF84.dita" id="GUID-897D769C-0B4F-46F3-9D89-F1F6AB126A51"/><topicref href="GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita" id="GUID-D46A49B3-5159-4BBA-B3C3-C80C6D1402E3"/><topicref href="GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE.dita" id="GUID-06C840B1-0BF6-4329-80EF-C27B6FE25098"/><topicref href="GUID-E764B4A3-4CEE-461D-B555-C8969A62130A.dita" id="GUID-7330A508-64E9-4D32-8064-9F39E1735406"/><topicref href="GUID-D9F25AAD-18A1-43AC-B59B-82396DAA68F9.dita" id="GUID-9A5A6FF4-6165-430F-8C44-E36C83879EFD"/></topicref>
+</topicgroup><topicref href="GUID-4407F7CA-6D08-4B9C-A0CE-37AFC8BB20B2.dita" id="GUID-46A6B7D9-EAC8-4907-BDA0-73CEFFF516F6"/><topicref href="GUID-A97250DA-A80C-4971-97DA-1C3E6520A44E.dita" id="GUID-76B1C555-D60E-4527-B3F9-72EC9AF6E33C"/></topicref>
+<topicref href="GUID-0C19D3F1-CF60-4760-8A77-242E14647738.dita" id="GUID-44887D83-0E8E-4571-9912-FEDEFCA4C585" locktitle="yes"/>
+<topicref href="GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita" id="GUID-59FDBD5A-EA97-4500-8A57-5A6C21E9C4B1"/>
+<topichead id="GUID-FA9679A1-6FD7-4FB6-883A-D5719388A2B6" locktitle="yes" navtitle="API specifications">
+<topicmeta><linktext>API specifications</linktext>
+<shortdesc>This section provides information on using the touch UI component
+and tactile feedback APIs.</shortdesc>
+</topicmeta>
+<topicgroup id="GUID-2F59C5CE-FDE7-4ED2-B37F-87559A0A87EA">
+<topicref href="GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita" id="GUID-C618F5AE-4635-4879-9CA6-BB462F6A66AC"><topicref href="GUID-D9F8B338-5CFA-472F-8A16-B5251B1B5A81.dita" id="GUID-81C81FA2-ABE7-49E7-9685-C44018AD2AB1"/><topicref href="GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF.dita" id="GUID-F41D99A7-8618-4956-BA78-8BB82C827472"/><topicref href="GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita" id="GUID-DBC33539-74A2-4F31-B115-AED4795A051E"><topicref href="GUID-402C3EE7-8852-49B6-BE62-8588753FAC8F.dita" id="GUID-AECCFCD7-21D4-4442-8524-744984FF34D6"/><topicref href="GUID-58318BAB-2EC4-4C9E-A7CA-580E701EE54F.dita" id="GUID-1DF62E68-CA63-4B07-9E25-66F72D8C8B6E"/><topicref href="GUID-BC3207BF-9E9F-4BA0-8F01-B72228110A61.dita" id="GUID-09E00CD7-067B-4324-A61C-AB7B4B2CE6E9"/><topicref href="GUID-3FE04A31-C35F-47E2-B615-6C1202FB8485.dita" id="GUID-38C16196-8E3E-4CA3-B5E2-6116BEB90223"/><topicref href="GUID-7AE34C8A-50C6-49BA-9E43-AE76873B5E12.dita" id="GUID-F0CB070B-4DC0-4120-895F-59D6DAFC7A28"/><topicref href="GUID-81424A53-F598-4E25-BA0A-E2FFA8BCDF2B.dita" id="GUID-28CE2C05-3E39-40D4-92D5-9D89476300D0"/><topicref href="GUID-8845AFD6-F238-43FF-BD7B-902CD8CD3973.dita" id="GUID-E10B3E1B-C083-46D8-BD09-4304E9381D20"/><topicref href="GUID-A32FFE7A-A531-48D4-AD23-1CC13CB7F4B7.dita" id="GUID-7016E7A0-F357-4801-AFDC-2640232405B4"/><topicref href="GUID-A4D8326E-E72F-443D-9CA5-7835D6AE171F.dita" id="GUID-AEA1524A-A902-45AD-A9C8-39281DBBBFB2"/><topicref href="GUID-2D390781-4467-403D-8FFC-8ED5B2319993.dita" id="GUID-81830A70-988F-498A-BAE4-E8EAD8381A0A"/><topicref href="GUID-6113CC3B-F994-4AA8-81E9-50433A3266E2.dita" id="GUID-0D54C348-338C-4E64-9969-8409C4B33DE6"/><topicref href="GUID-A168E5EB-4CF7-4B74-B67C-EDFD5378C5BF.dita" id="GUID-4105B1E1-A88F-46C6-8F4D-32D2D463227F"/><topicref href="GUID-270FC83E-1D47-4CF9-A560-FB5DDA53111E.dita" id="GUID-C4E01CC6-C3F7-4037-9797-296B211D6564"/><topicref href="GUID-8F2D8656-B7F4-4BDA-81CB-8440A2FDDD82.dita" id="GUID-DF781209-26D3-4B9C-BF30-B4A3948B2C6B"/></topicref></topicref>
+</topicgroup>
+<topicgroup id="GUID-BAC296CD-495D-43B1-A321-EE4AE064A474">
+<topicref href="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita" id="GUID-CFF9E4FA-02DC-4618-A478-81FD96E5CF20"><topicref href="GUID-730E1E2B-BB8B-4C66-8A70-0FBCE7680B66.dita" id="GUID-BEC861E9-16D4-4D1F-9305-0BA2ED3BC4CA"/><topicref href="GUID-97712509-84AD-462F-8FFB-E1E6D8278938.dita" id="GUID-04158E96-F346-4BAA-8502-98C997E9D0C2"><topicref href="GUID-CDBBD44F-C5F6-4D51-B4BA-23DA9BB58D69.dita" id="GUID-F0EF9677-B3E9-4FA9-8D7F-97AD23EA23BB"/><topicref href="GUID-96C49728-8C78-4D82-876D-6B1196362D44.dita" id="GUID-2F5C570A-B520-49A0-A3DD-A19596945DCD"/><topicref href="GUID-07DD47FD-86B7-4AFD-BEDB-DF6EA12DFC6C.dita" id="GUID-5354D349-44EB-4EBB-A35C-9D5E40B7B51E"/><topicref href="GUID-089FE9FA-44C8-48D5-A473-9486BF763283.dita" id="GUID-218C6406-E3AA-4188-A296-6FB65DFDE2DB"/><topicref href="GUID-E1A2872E-6E8D-4C02-B3C0-23213FD56106.dita" id="GUID-CBF33FB4-1AEB-44F3-AD2A-A7475B757941"/><topicref href="GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita" id="GUID-CD7679CC-BDF1-4C5E-9006-DB7171C8F608"/><topicref href="GUID-79B4468A-2CF6-45E2-BC05-064CA300C12C.dita" id="GUID-D3C3B5FE-0350-4D11-9773-27B0FC2D8633"/></topicref></topicref>
+</topicgroup>
+<topicgroup id="GUID-8B246A68-83D3-425B-863E-4F0997A88FF6">
+<topicref href="GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita" id="GUID-8605CB18-40CC-48A7-A819-38FD34C27984"><topicref href="GUID-2418E86F-BF82-4F2A-A056-5F1D0682C410.dita" id="GUID-38237D27-2066-4453-9998-1D0EA10EDC65"/><topicref href="GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita" id="GUID-25F164A7-9F37-472C-AF6E-1EE5B5ADDDB2"><topicref href="GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita" id="GUID-0EB5B82D-D469-4853-AC33-DEDF9059B276"/><topicref href="GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita" id="GUID-40B54F5C-10FA-4113-BC8B-085B1C911CDA"/><topicref href="GUID-2045A3D6-88DB-41ED-905B-079A8DC35E24.dita" id="GUID-135FDFAD-8657-4B5E-A6B4-55147A80E7E0"/><topicref href="GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita" id="GUID-4D68820C-CD6C-49FD-BB05-A63C8A822962"/><topicref href="GUID-7B863846-7666-4FBF-90B2-52F847710C45.dita" id="GUID-9515D6ED-75DF-446E-B1CD-77CA2585977B"/><topicref href="GUID-D932955F-30AA-40C7-9653-63E48C38BECB.dita" id="GUID-3C3AB949-9CAA-4DE6-AE2B-38C25A25C0BB"/><topicref href="GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita" id="GUID-5DDACAE5-2EA1-4ECB-BE54-F04EA5A61991"/></topicref></topicref>
+</topicgroup>
+<topicgroup id="GUID-236394C8-1EAD-4805-A29F-A052932FA1EC">
+<topicref href="GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita" id="GUID-E78F9E64-E602-4324-999A-4DA8A18FC592"><topicref href="GUID-FDD68915-5B6F-4091-A99A-64F91D508B3E.dita" id="GUID-AD8E7913-C724-494B-9A09-7AC27BDB8E47"/><topicref href="GUID-1E446762-AFE2-4198-8CD7-8C4466392543.dita" id="GUID-1D1DB3C4-675F-454F-9392-9F00C3C5EBEF"/><topicref href="GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita" id="GUID-B80586DC-617E-4A66-AEC1-AB24A8FC937D"><topicref href="GUID-462239D1-4B40-4342-92DA-32AB0AF0D2F2.dita" id="GUID-BB10B807-6C3D-4EFF-A986-C8AA5559F456"/><topicref href="GUID-17F3FFF4-00B8-492F-95BD-11AFF02CAAB2.dita" id="GUID-4CD7427B-9C30-4572-9D76-0C9C5BD11AF8"/><topicref href="GUID-F2397B5A-0700-46D5-8E07-CBB9F769DA01.dita" id="GUID-64A25E9E-28BF-446D-AA2E-D4DB14615FB9"/><topicref href="GUID-A84EDC63-0A74-4B93-BED2-7BE273A6DDB3.dita" id="GUID-BF885943-153A-4EFE-9BD5-E80DB911B5E6"/><topicref href="GUID-E332F544-0759-4C10-B29C-14AA5EAEBD49.dita" id="GUID-CF522C47-06CD-44F1-9ED8-718B41050E25"/><topicref href="GUID-73DD8A9B-6F7A-4BF5-87A1-5D86662B30D3.dita" id="GUID-AC4D076D-6DC4-47DE-BB93-A76087EEF197"/><topicref href="GUID-210606BE-A36C-4B65-B083-93F71024196C.dita" id="GUID-17170037-2CB2-49AA-8A91-3F5F4DC42155"/></topicref></topicref>
+</topicgroup>
+<topicgroup id="GUID-17AD7BD1-350D-4897-B347-83569FFE40AB">
+<topicref href="GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita" id="GUID-792BA40C-BCE4-4E42-B8F7-F5A55B502B86"><topicref href="GUID-0C85D5DE-D78D-4DDB-BA00-6278690C1047.dita" id="GUID-B537ECE0-E49D-436C-939E-D9E5A07AAF4B"/><topicref href="GUID-E0C21636-657A-413F-A905-A08608B60768.dita" id="GUID-74411132-B422-4806-AFB5-A700E12B76B8"/><topicref href="GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita" id="GUID-D45B0314-5F27-48D5-92D8-DAF13354A734"><topicref href="GUID-4102F39E-6215-44AD-9E30-6D8E86114D7D.dita" id="GUID-AD96A558-BE0C-48D1-B22D-9F1F23913845"/><topicref href="GUID-C0C93B8A-C63C-424E-9C30-5D69C1578660.dita" id="GUID-4A005732-2BC2-4FB7-8254-72264CCFA094"/><topicref href="GUID-96228425-F2C8-4767-95AD-520C655B73C5.dita" id="GUID-8117BE28-22A8-45CC-99F2-308185819C5B"/><topicref href="GUID-92281C52-4F2E-4D9A-9D5A-E0C5F0433339.dita" id="GUID-4CAEE0D5-A6BA-427C-B056-D590D890F856"/><topicref href="GUID-BEA5E4F1-B355-47A1-99DC-8E8EDB7B1CB3.dita" id="GUID-4D2439FC-EA74-48F7-8114-AA7D354BB30C"/><topicref href="GUID-BF3767E9-054E-4894-9216-00866FC9C3D8.dita" id="GUID-7BF5C602-FEEC-4E9E-8E96-5781D91B08D8"/></topicref></topicref>
+</topicgroup>
+<topicgroup id="GUID-2527B02A-E623-4042-80E9-76A9CC0EF552">
+<topicref href="GUID-B876D548-FD40-4369-B328-7427002B4851.dita" id="GUID-6816E4CA-21EC-465F-A61E-04D402D0C250"><topicref href="GUID-DA37516F-874F-49B0-A176-73277BB86FD3.dita" id="GUID-1766BCEA-B354-41A3-8225-AB6AD9CCA2EA"/><topicref href="GUID-6F120C75-4D58-405C-8713-0626EE22E5DF.dita" id="GUID-B58D61FB-928E-43C8-A13E-27DE6608AC57"/></topicref>
+</topicgroup>
+<topicgroup id="GUID-748C772D-953D-4A1D-9A21-F6E751109D66">
+<topicref href="GUID-8661A7E0-F19A-41F8-9062-FBFAE70CF658.dita" id="GUID-27FB835E-D7F8-4D81-A742-C7F6E8693F91"><topicref href="GUID-C9F4AF3A-158C-4438-930D-9E351B89280C.dita" id="GUID-96CFF11E-F604-44B2-A0BE-86C56601DA14"/><topicref href="GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026.dita" id="GUID-1D16F631-E6CE-40F3-8B1B-F25580A634CC"/><topicref href="GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita" id="GUID-B3458D57-1F39-449D-9AFE-0A2E749EC9DC"><topicref href="GUID-27897E0D-D9D6-4007-A45E-62C366F1267C.dita" id="GUID-8B0976E7-A155-42C9-AA40-AD4CC447E909"/><topicref href="GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita" id="GUID-B9C41FFF-4681-41FA-991F-31FBF7D2012F"/><topicref href="GUID-129FCE62-5498-4717-864B-7DC6A5C5944D.dita" id="GUID-208E395A-5CB3-4868-A0D1-DEF6C0AF0967"/><topicref href="GUID-842D8557-076B-4A6E-B823-81164368FD86.dita" id="GUID-49BA6818-0B30-4836-9AD9-2C9F358004F5"/><topicref href="GUID-BF6ECC83-C7A0-4183-B835-6299CC2114AF.dita" id="GUID-4FE13322-CC93-4320-9CCD-6D88049D418C"/><topicref href="GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita" id="GUID-2BC1B3D9-F95A-449E-A818-C9EADE1B7B5A"/><topicref href="GUID-2BF409EA-82BF-407C-B048-DA0973B7F61D.dita" id="GUID-D19A47D1-D866-4B2E-A2C8-6906C9BDB924"/><topicref href="GUID-2632A013-AA87-485E-855D-C50E211057D6.dita" id="GUID-7F30FEB3-2EC6-4EDF-A661-3968BA222372"/></topicref></topicref>
+</topicgroup>
+</topichead>
+</topichead><topicref href="GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita" id="GUID-0645E265-26F8-4F3F-BAD8-3548D543BCB1" locktitle="yes"><topicref href="GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita" id="GUID-568FEBE4-F39F-4AD7-84B3-5748346EDEFB"/><topicref href="GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita" id="GUID-421C1703-271D-446C-84DB-77FC9FF03ADA"/><topicgroup id="GUID-B436BDB7-E088-439B-813E-8E3AA9544F29">
+<topicref href="GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579.dita" id="GUID-658B728F-32CA-4EE6-9922-4E35F1B060A0"><topicref href="GUID-08B878D0-C0DA-46CC-ACC2-E576E5A3D937.dita" id="GUID-B1D1FC7B-6CEF-4127-B47C-796A9BA53C82"/><topicref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita" id="GUID-1A54421D-3A02-41B6-BADA-8A38D2F50180"><topicref href="GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita" id="GUID-873423FC-8F18-4B1C-8486-526B95D2E7AE"/><topicref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita" id="GUID-CDCFFF50-2720-4F5A-81B9-E3136F6A5DC6"/><topicref href="GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita" id="GUID-FFD24FEA-AB50-4FE5-957A-FDC386664D92"/><topicref href="GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita" id="GUID-B0792733-0F71-4D70-868D-10C360BCF8A1"/><topicref href="GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita" id="GUID-128DD6A2-904F-4CB9-9013-E80912ABAC29"/></topicref><topicref href="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita" id="GUID-13C0D06D-BF18-4204-85C8-74B9C611A160"><topicref chunk="by-topic" href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita" id="GUID-52C5A3B7-E19E-4614-A7F9-A7F9FD110007"><topicref chunk="by-topic" href="GUID-A3AF142B-F9DF-43FD-9D3F-788A74D0C575.dita"/><topicref chunk="by-topic" href="GUID-5B26AB8E-E20A-4C15-B4F8-812ED9A4A96C.dita"/></topicref></topicref><topicref href="GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita" id="GUID-0DA7C5CB-8A2A-438C-AFD8-A17E3E250D20"/><topicref href="GUID-8E2FA5CC-C582-4321-88BB-C5CE3AA047FE.dita" id="GUID-284CC357-1D44-4A95-B56D-EEDDEE6576DC"/><topicref href="GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita" id="GUID-DEB0BB06-C624-401C-A26D-C5DA25941C7F"/></topicref>
+</topicgroup><topicref href="GUID-B16A0370-F18F-4035-B3D6-ED550D8D68F9.dita" id="GUID-D3E3D564-B5D6-4410-AA15-3586AB2802A7"/><topicref href="GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C.dita" id="GUID-304FCDB0-2B30-4019-86F6-B89A056DEABE"/><topicref href="GUID-308A3F78-3DD6-443A-B021-B8E2C2DFEE4D.dita" id="GUID-E0ECE054-35BA-4CF2-B856-FA88E2C9A8C5"/><topicgroup id="GUID-36BB2E12-6C7A-4AE1-87D0-65D618B9F455">
+<topicref href="GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita" id="GUID-172A4FC6-BA1B-49FF-8C85-AD122E7E0363"><topicref href="GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576.dita" id="GUID-596D84E2-50D9-43B2-96F7-831C813F94BC"/><topicref href="GUID-16D0854D-55EF-4E22-B7D2-72603699BC59.dita" id="GUID-16B83CF3-5552-4647-A33B-D2FF884CFB8A"/><topicref href="GUID-32756B46-DAB7-44FA-B710-33EC36E1409F.dita" id="GUID-71A1C677-7818-4095-946D-41A734133FC1"/><topicref href="GUID-FE922294-380D-447D-AC46-A46EFAD79168.dita" id="GUID-C2BCE4C9-DA2D-4697-B528-53A3FFC93D98"/></topicref>
+</topicgroup><topicgroup id="GUID-825B45D2-6561-4694-8603-06F017CC6C9C">
+<topicref href="GUID-114C52FE-C8C5-4418-9C73-CEBB228C7542.dita" id="GUID-AEFEE7A9-73A5-40BF-8714-D62320CD0492"><topicref href="GUID-6B50C0B9-C3CB-4524-909D-7FD096A3F894.dita" id="GUID-0CE179F5-CF65-4C30-835E-2849764131C9"/><topicref href="GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita" id="GUID-B6412B20-E203-4115-870B-271762193D8C"/><topicref href="GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita" id="GUID-E9AD7953-9DA3-4D7C-BCDE-8AAD1DFEDE0B"/><topicref href="GUID-0E695106-4139-4335-A11F-BD04418DD583.dita" id="GUID-475B158A-E559-4D8C-9957-8CE7E01C14E5"/><topicref href="GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita" id="GUID-2EFB966C-197C-4A30-AAB7-F77D71BFC9A8"/><topicref href="GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita" id="GUID-2CA49DA0-B351-4684-8880-9CEDA94A421F"/><topicref href="GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita" id="GUID-DFB464F9-A599-46EC-B3CD-1FA8E8F1CDAB"/><topicref href="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita" id="GUID-522057DE-FF09-4EC6-8F82-C4AF6AF1ACB8"><topicref href="GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C.dita" id="GUID-D8EB490E-2229-474C-9D24-B76588006219"/><topicref href="GUID-03DE8DB5-BF37-4E02-BFB7-D14BD8B3E1BA.dita" id="GUID-5F5E5016-DDB6-4216-A1D2-1730D09E2479"/><topicref href="GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita" id="GUID-D9C936F1-BAC3-4668-911F-AEAD92046111"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-D1E74090-DF50-48D4-8C27-542685C09F03">
+<topicref href="GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita" id="GUID-BD3F5CDA-D923-428B-B461-A68B5BB05B5D"><topicref href="GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita" id="GUID-5B23E520-6530-4B2A-AF10-BF657E70E296"/><topicref href="GUID-F9C12192-EDA8-4220-87DF-E7F1EA50CDEF.dita" id="GUID-45D280F2-D9D3-49C9-835F-637FD1049B96"/><topicref href="GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita" id="GUID-DFB9F0B8-9535-474E-AD14-897B0E28F7FE"/><topicref href="GUID-10CF321F-3298-4527-BFF5-0351085C7C8C.dita" id="GUID-AF2F6783-8ABE-4DFE-9E66-21E12FFA3280"/></topicref>
+</topicgroup><topicref href="GUID-1955F591-2D2C-42EE-AF03-7BBBEE1A4005.dita" id="GUID-1E1A38A8-C8FA-4902-8AEE-DAEC081EF8D9"/><topicref href="GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita" id="GUID-CB60436C-B504-49A0-8D74-9FBAB76AD220"/><topicgroup id="GUID-9C04C2C1-5CFC-4AD1-84B8-730CF5D4BC18">
+<topicref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita" id="GUID-C684A768-B8E7-48F5-806C-6FF6515A9D1A"><topicref href="GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita" id="GUID-A80983DC-E20F-44B1-8BFE-743971E7F829"/><topicref href="GUID-B3760707-2810-4CD9-82C7-6A40DE638D36.dita" id="GUID-D6BA564F-6022-4526-9F5D-8BD17C2BB4CF"/><topicref href="GUID-6690CEFF-AE08-4881-AF52-70C097EB2871.dita" id="GUID-D458CF13-0BE3-4C00-974A-1E2DA7FE6030"/><topicref href="GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C.dita" id="GUID-070A0551-590C-4194-BD34-09D137FC5152"/><topicref href="GUID-03708BB2-68CF-4EFB-BE2F-C92DAD59F7F2.dita" id="GUID-341F9146-34AB-4A52-AA28-87639BFF6E53"/><topicref chunk="by-topic" href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita" id="GUID-15A18879-4E26-4EBA-A7AD-FA5D741F747E"><topicref chunk="by-topic" href="GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita"/><topicref chunk="by-topic" href="GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita"/></topicref></topicref>
+</topicgroup><topicref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita" id="GUID-9626B0E3-593C-4D20-AECB-2995F2880F41"/><topicref href="GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita" id="GUID-C9C01396-7DAB-4C6B-8F6E-3A585592D032"/><topicref href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita" id="GUID-14467F13-0456-4E72-A62C-57A33300FB27"/><topicgroup id="GUID-BBAC6448-000A-4BD2-8007-0CBC80F9DE10">
+<topicref href="GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita" id="GUID-8C4A05AF-0DEE-470D-B132-E2505814409F"><topicref href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita" id="GUID-F5DEABF3-476D-42B4-9969-C556DDFF0407"/><topicref href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita" id="GUID-81ECBBAB-E8B0-4992-ACAA-26BDFC171331"/><topicref href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita" id="GUID-C0296E10-73FB-4E09-9BF5-88BD6E0A044B"/><topicref href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita" id="GUID-861472CE-FE37-4652-86AB-EF241174B5AD"/><topicref href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita" id="GUID-3B5D7E5A-A9D0-4741-B299-B0568E2BB8DB"/><topicref href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita" id="GUID-D1861B04-CF5C-44FC-BC86-8BC5FA0E95C6"/><topicref href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita" id="GUID-5BBD8736-A573-481C-BC94-EF99E253A9C4"/></topicref>
+</topicgroup><topicgroup id="GUID-98C9FDFD-665C-4F6A-B244-028C7A7956AE">
+<topicref href="GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita" id="GUID-A35C266C-9FC8-4DAB-BCEB-79BC1268A381"><topicref href="GUID-75A70663-4DF2-4055-BF3E-8D9D8D0FEFB3.dita" id="GUID-2409B778-F711-4A5D-9002-202A067D9AF0"/><topicref href="GUID-02200D23-E8ED-432A-9D71-694A4558BD20.dita" id="GUID-B797D47B-204B-49CC-9620-33726015CE97"/></topicref>
+</topicgroup><topicref href="GUID-8EAF5A96-EB48-4A58-82D7-0583A22A51D0.dita" id="GUID-F451A8F2-D766-4B10-864A-3DBBE1E95C1E"/><topicgroup id="GUID-72FE6A60-C9D2-4768-94B1-1B957900C837">
+<topicref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita" id="GUID-8C0AD1D6-3F21-4671-AF6E-DCF0A227C641"><topicref href="GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita" id="GUID-9EF22563-D5C5-46E2-B7EE-6070A0A38C12"/><topicref href="GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita" id="GUID-07639ADC-29D2-4DF8-81C2-5EAF0072830B"/><topicref href="GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita" id="GUID-4F83B28A-F17F-4FEC-8997-00D3D3A6762B"/><topicref href="GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita" id="GUID-F796238B-A1B3-49D4-B97F-B1FC59936C29"/><topicref href="GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita" id="GUID-745651C4-895E-4041-B016-29C62F7FC962"><topicref href="GUID-010627ED-7BCD-4AF1-BECB-661E21015E6E.dita" id="GUID-608D3C00-CBF8-422A-8551-CF2674CFD003"/><topicref href="GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE.dita" id="GUID-C9BB81E3-BEC5-4E86-91B9-1914F18E6EBE"/></topicref><topicref href="GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita" id="GUID-A68E01B1-5422-4C80-B5EB-250165F2F3D9"/></topicref>
+</topicgroup><topicgroup id="GUID-846615EC-1D15-41D3-9056-40791434BDD5">
+<topicref href="GUID-60B979FB-43BD-480E-8E17-1D3DA2002CB1.dita" id="GUID-B3C9FFF8-27ED-4992-AA90-603DBC2A77C8"><topicref href="GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita" id="GUID-763BD4B0-7A92-4FD7-91EE-88B6949CB9B2"/></topicref>
+</topicgroup><topicref href="GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita" id="GUID-22DF004E-9AE2-441B-8B6A-73B374000B30"/><topicgroup id="GUID-D71314CE-C6FF-49FC-9421-7D8D87E5760D">
+<topicref href="GUID-BA8806CC-BE7C-4927-ACF6-DA0CB6E96AAA.dita" id="GUID-B4D0D08F-9BA3-4458-845C-B728258510F8"><topicref href="GUID-07A42662-87A1-4537-89B9-F87DFC8481E8.dita" id="GUID-30805B71-4F66-4DAB-B34C-DAFA3CC8C042"/><topicref href="GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita" id="GUID-1EEFAFFD-9070-48CB-A447-0329512B362F"/><topicref href="GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1.dita" id="GUID-5629E63F-B2A7-4315-BBF1-3AA4F7709155"/><topicref href="GUID-226EDECC-BE24-412C-945D-7EABE566282A.dita" id="GUID-0A339538-5016-4251-9264-F9B7D629ABB3"/><topicref href="GUID-96BCE05D-2984-4A85-9633-69ECE5BE945E.dita" id="GUID-3446D8FF-B3AD-4F28-85E7-30D37EA9A033"/><topicref href="GUID-BA96913A-38D2-4E57-BA95-52F1642A6D06.dita" id="GUID-3B2CF6FA-5550-4330-AD9D-B83C3F997BF3"/><topicref href="GUID-788BC010-536D-4089-9B12-4A43A9C1C82B.dita" id="GUID-AE67C353-0750-45F5-B5A8-5B4ED171BBA8"/></topicref>
+</topicgroup></topicref></topicref>
+</topicgroup><topicgroup id="GUID-E41EF1A0-AD55-4C7F-B9CD-97910D251F34">
+<topicref href="GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04.dita" id="GUID-A6F49F89-18A4-4DBE-A9D8-78B5CA461AA9"><topicref href="GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita" id="GUID-41D60A6D-085B-4568-BFC9-5A5B039AA71F"/><topicref href="GUID-8905A627-1D13-5066-ABC4-7E0AF07D96A5.dita" id="GUID-9B803205-E779-46CE-B8D2-294652308D90"><topicref href="GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita" id="GUID-2A99FB5C-7330-42EA-A16B-4A15D73E1EBD"/><topicref href="GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita" id="GUID-4BFCC50A-C2F4-4BB7-89A7-5E5D81096E72"/><topicref href="GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita" id="GUID-3EB81B99-6929-4702-A792-7495075016CF"/><topicref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita" id="GUID-B882EFE9-F6C8-4E78-9267-BE154D111522"/><topicref href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita" id="GUID-01F7864B-2B6E-45C5-8463-CC4096DF4292"><topicref href="GUID-5580195F-3DE7-55FA-B2C1-91A950A39C6E.dita" id="GUID-4AB09EEE-0365-485E-911D-2AE7390B996B"/><topicref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita" id="GUID-2C24F0AC-1D9F-46A9-9144-21BCBB3AEB82"/><topicref href="GUID-4CE10DED-31B2-50B5-9D38-85CE86E8A8DE.dita" id="GUID-DD38D86D-9E71-49D3-8AEE-58BF4476FFB7"/></topicref><topicref href="GUID-75132B6C-2305-57B1-B969-B4F639B29852.dita" id="GUID-A6E29F2E-1B3E-4E45-B075-E817506F9C1D"/><topicref href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita" id="GUID-2915C98F-48B5-40D5-9257-B41899834A40"/><topicref href="GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita" id="GUID-9424A99D-85EC-46EE-8172-83E80230A1BA"/><topicref href="GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita" id="GUID-0E55767C-7D6C-486D-B3B5-76F24DC38101"/><topicref href="GUID-B93D6BAE-B9B9-5118-92DF-5E566E5BE8EB.dita" id="GUID-EB9ABA25-927F-4D41-A156-8C33499BAF60"><topicref href="GUID-83E4F989-0B73-5E83-8547-AB3070492CBF.dita" id="GUID-9BE316E7-9CDA-45BA-A798-C88819F63FBF"/><topicref href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita" id="GUID-D366206B-473D-43B7-AE0E-A3A422E70E39"/><topicref href="GUID-282CE322-923F-58F6-804D-E125ABACB025.dita" id="GUID-CE4E1AC6-FB27-4B7C-ACCC-2A45B656012F"/><topicref href="GUID-35AF5E92-7103-5A86-A3CC-B2CED7E9793B.dita" id="GUID-F98DD418-C686-40E9-A485-23E5CE23E673"/><topicref href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita" id="GUID-972B060F-6669-4E1A-98DC-D6A780A35DD0"/><topicref href="GUID-F49A5630-0BDE-5214-99F9-E4DAC9C5B548.dita" id="GUID-FD92888B-5A1D-4892-AE28-08B7367E34DB"/><topicref href="GUID-1DE160DB-8054-5522-95F7-4CE5D8FFBF2E.dita" id="GUID-E7692386-3C6D-4AB5-8364-A092C3574318"/><topicref href="GUID-08CCCF43-A742-547B-A0E0-F5F6176DABCE.dita" id="GUID-C78BB6D0-47A5-4915-9663-EFBC1AE9285A"/><topicref href="GUID-6BDF4599-B89B-5C4B-9795-B4C5C5F5CB5B.dita" id="GUID-699BA787-D539-4A03-8F52-9718DECB8FAD"/></topicref><topicref href="GUID-FD8AD44E-271D-514C-A52A-513E7C8AD207.dita" id="GUID-EEE48931-8569-4884-8F1E-F1A23914D6D3"><topicref href="GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631.dita" id="GUID-53A06DFC-63B2-4E06-A0D8-DA1A382AC265"/><topicref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita" id="GUID-A83DDC1D-3FE0-410D-9B6A-1FF12CBF4352"/><topicref href="GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita" id="GUID-FA5CCA77-732F-489E-BE51-D20CDA873EA2"/><topicref href="GUID-84C20E6E-C5DF-5346-84A3-2D8C701303C8.dita" id="GUID-A9F00E5D-58EF-47C7-A868-35919B87A103"/><topicref href="GUID-935DF48C-F014-5E2A-8BE6-29B00C4FD31D.dita" id="GUID-4E1EFE48-63E1-49E6-9A9D-382E19A945A8"/></topicref></topicref><topicref href="GUID-C3018CEE-865B-595A-A735-40E11665E50A.dita" id="GUID-A036BB9C-68F1-4B77-BEF7-14664A94DBF2"><topicref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita" id="GUID-358E5F8E-5D40-4C38-BE20-F4CEE91A1C9E"><topicref href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita" id="GUID-001FF52D-425E-4D27-8A13-D71B890F962F"><topicref href="GUID-9665C072-EA52-54B8-87A3-A7F818940DCD.dita" id="GUID-23AEB39D-9042-4BEE-BA6C-3D904FA1D5D7"/><topicref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita" id="GUID-AA4F9080-9B88-4EBA-99AA-304910532F33"/><topicref href="GUID-B85CA4E7-3DF5-5D5C-BF7B-5D0DDCD468AE.dita" id="GUID-8DFD68D0-2F07-4274-87D9-BC912F734919"/><topicref href="GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5.dita" id="GUID-E0A6385B-54D3-4392-943D-29E670190B30"/><topicref href="GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita" id="GUID-76E8276F-2878-499D-8275-8EEC96735799"/><topicref href="GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08.dita" id="GUID-BD902741-8512-4EB1-8B21-06F82BD746A8"/><topicref href="GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08.dita" id="GUID-12B36D32-631C-4E3E-8216-538F573CD821"/><topicref href="GUID-4C35C86A-D57F-503B-8E55-5D235E0D6DA0.dita" id="GUID-8AE305EB-8C69-4118-B103-49873DFF1BCC"/><topicref href="GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9.dita" id="GUID-BDD6C08A-02FF-4482-8A2B-56358F91F89A"/><topicref href="GUID-1D836FB1-9BCA-53B5-8334-08CD59064227.dita" id="GUID-30943964-D45D-427D-A77E-298ED97CBD8D"/><topicref href="GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC.dita" id="GUID-0FB72F1B-E964-45BE-A8C7-476543A44634"/><topicref href="GUID-5D712F4A-E956-543D-BCC0-91107C6E4717.dita" id="GUID-F6D7FA2E-04D4-4BC7-A7F5-07901F17FB5E"/><topicref href="GUID-B89D2828-0FEE-5206-97D2-C7D4BBD35799.dita" id="GUID-029B2A19-DA5B-4C9E-BDB3-5C21B15EB97C"/></topicref><topicref href="GUID-0CDA8FCA-AABE-5988-9467-30AA1AECCC90.dita" id="GUID-C0EBE095-54E7-4F1C-8562-23197B8DFE47"/><topicref href="GUID-5F641F7A-AEAA-5C3E-9179-C3707F10E6DC.dita" id="GUID-1AE9C488-06F1-4D4D-8D17-C800461A986F"/><topicref href="GUID-CE011029-0F2B-50D4-B793-A24C7ECFC21E.dita" id="GUID-07673129-E9CE-4FBB-A75C-9330BB6D8F88"/><topicref href="GUID-ACE7D63F-9544-56DB-A72D-FFB0A35661EC.dita" id="GUID-5B1AE236-0F33-49C6-9D4E-571D8B452954"/><topicref href="GUID-E4874B22-474B-56D0-8A8A-C60411D3CBCB.dita" id="GUID-FFF080C6-4327-4BEC-AD86-A418447C6733"/><topicref href="GUID-9D56FF77-A20B-5BFB-8DE6-19CC4535DFED.dita" id="GUID-2C43E06F-52FC-4C5F-A4D4-429003761B8F"/><topicref href="GUID-A96ABD2C-A338-58E5-A674-E840B1F53670.dita" id="GUID-63C4F134-9AEC-4043-BADC-4584230461C9"/><topicref href="GUID-F48CC072-66A0-5DBA-99A2-2F3BABF83BEB.dita" id="GUID-7920F94F-99DD-4A6A-90C2-4E48CBD3EF8C"/><topicref href="GUID-A19A1F43-E42B-5FC2-AE58-A7BC67B6733A.dita" id="GUID-C1DBEB8A-5665-426E-9E77-2CF481440929"/><topicref href="GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita" id="GUID-349AEF40-4B66-4BE8-9F9D-59C9860000D6"><topicref href="GUID-4E4C842F-1AF6-505D-B378-2043FDD8985C.dita" id="GUID-5190EDD9-349F-42A3-BAAF-FCE07D0FC4D9"/><topicref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita" id="GUID-95BD9152-9F59-43C9-A0EE-8A072CFB8EA5"/><topicref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita" id="GUID-E3186A2C-D923-4C58-AA24-B475B300CA37"/></topicref></topicref></topicref><topicref href="GUID-12D1F61B-6BC6-5215-A832-E84C0F480765.dita" id="GUID-342F5BA7-2A80-4057-BE0E-C6329C0F9701"><topicref href="GUID-A248C2C0-5F64-5484-85B2-57C86E3499E1.dita" id="GUID-8BE46DC9-F1C9-4CE5-8684-CA94AF5573B4"><topicref href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita" id="GUID-209A09D0-17BA-425E-9779-359289F5191C"/><topicref href="GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita" id="GUID-223A8E6A-E313-46EE-9D3D-FA7AF071AA07"/><topicref href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita" id="GUID-34AD2E2C-7A5A-41FA-8049-A79E7B8330D2"/><topicref href="GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita" id="GUID-FD22F918-10B3-4F75-8554-E15700FF87CE"/><topicref href="GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita" id="GUID-40348BE9-105E-4C3D-A26A-927734328EEA"/><topicref href="GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita" id="GUID-D6D6A0DF-DF2B-4EF5-83FF-182BE374CBBB"/><topicref href="GUID-E4D47AED-5FCA-535B-9B8B-3267A4CD01C2.dita" id="GUID-B91BA656-0F0C-4BDB-96D5-21B9D321B75C"/><topicref href="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita" id="GUID-0195B9C8-946D-41D5-A02F-3E507023136D"/><topicref href="GUID-0995EBF6-D203-57B3-9F53-972AEB8F3D3C.dita" id="GUID-0618C5EA-AA76-4EA2-A82C-43A99ADADD2F"/><topicref href="GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita" id="GUID-CB3C5D81-D81B-49D2-B12D-2A13FC2A5E04"/></topicref></topicref><topicref href="GUID-C7213C52-F867-574E-B99A-93BA92A1FE2F.dita" id="GUID-84CEB456-DA46-489C-A0FC-D29E6C369920"><topicref href="GUID-2FED5145-58E4-5560-8E52-6BD499EECE13.dita" id="GUID-092D7805-0723-434D-AE45-2B78C83B891B"><topicref href="GUID-A4726E90-4F72-5986-947A-D948A8029240.dita" id="GUID-8FF89F77-722B-4118-8C87-E09761749BBE"><topicref href="GUID-236D3822-13C3-5AD8-B0FB-C28732E17CF7.dita" id="GUID-FE541C41-9C44-4D4C-876E-352FB86F647F"/><topicref href="GUID-521837E2-583C-5C7D-85F7-D936C77AA84C.dita" id="GUID-C2394895-DC88-444F-AE93-CFE0B6F7F3D0"/><topicref href="GUID-EAE7819B-45C6-579F-BC01-82CB70294153.dita" id="GUID-5AAF6FB3-1E3E-4ABE-BC8F-F042D8022576"/><topicref href="GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2.dita" id="GUID-1286E7B1-7DBB-4769-A3EE-71593BAF4338"/></topicref><topicref href="GUID-9142B2F6-8D93-5366-9B3A-4932D2C7988E.dita" id="GUID-1CE38A5E-4272-410B-9F1F-FC9B6CD518D3"/></topicref><topicref href="GUID-31C265DA-5B54-5E6B-98E4-EE90A2AAF4D5.dita" id="GUID-4F55ED20-9E6F-474B-8973-25125D825E59"><topicref href="GUID-7324A06C-981B-568D-BDFA-EFE21049431C.dita" id="GUID-10FB30B7-AEDB-4F2A-B0C3-FF70860C75BD"><topicref href="GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita" id="GUID-12C6279E-1338-4469-A60C-9C155B9DDC26"/></topicref><topicref href="GUID-FF48E99A-551E-58E2-84C4-1985B557CCA4.dita" id="GUID-9C23E521-1AC0-44AD-80C5-82B246F0B909"><topicref href="GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF.dita" id="GUID-5C77BD71-B448-42A1-8038-BCF8A217A2F8"/><topicref href="GUID-35DE6C87-0C47-5D06-AC8E-3C39DC463F0C.dita" id="GUID-74A1BE29-B74B-4902-B6F5-7DD73BC50E98"/></topicref></topicref></topicref><topicref href="GUID-2139B04C-6ED6-599B-A018-D92451B8353E.dita" id="GUID-E3DA26A7-8A08-4A30-B08A-69375A0E60D3"><topicref href="GUID-695B292F-114C-528F-9F71-1D03801D2203.dita" id="GUID-33665E56-4C01-4239-9E75-DB3B36BF5587"/><topicref href="GUID-31371091-A28D-5203-BE6A-0F182F99582D.dita" id="GUID-EFEDC558-D68C-4EDA-98CF-DC32EF332485"><topicref href="GUID-A51FE292-3E9D-52FE-B751-246C64F30BBC.dita" id="GUID-254A59B3-299F-40FA-9346-F18AB2201450"><topicref href="GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita" id="GUID-8874FFB1-207B-4B7C-8869-A9C84EAC7F7A"/><topicref href="GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita" id="GUID-15FC979C-07CF-48EB-96C9-CA0E60961205"/><topicref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita" id="GUID-C1DBB043-9D4A-4857-9F18-88DBC17C2196"/></topicref><topicref href="GUID-82499F0B-2791-59B6-9BAE-F9F87234FBF1.dita" id="GUID-71FD4AD3-E79C-4B90-A302-AC4CC198B6C4"/><topicref href="GUID-9F96807F-25DC-5DE1-B327-3E339665FF64.dita" id="GUID-0CA4A1C0-D49E-4BAE-B708-E71E6A48B276"/></topicref><topicref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita" id="GUID-A5ABD986-F9B4-47FA-BB56-90A465742162"><topicref href="GUID-A80ED7B2-4A58-570A-A671-4F4B1BB9FDAF.dita" id="GUID-A340D3F5-99B0-41E4-9024-DC3A9A3CAFF3"><topicref href="GUID-1277D793-4A0A-50A7-9414-AEE93E906E80.dita" id="GUID-82DEE705-0309-4BD6-9426-1D2EDB69DE82"/><topicref href="GUID-D1BCE2D9-04B5-5C39-A50B-C5BBDAAFEFED.dita" id="GUID-89C9B770-0CE6-4FD9-907A-E2D816ADCF1F"/><topicref href="GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita" id="GUID-38882E7C-E861-427C-BECC-C39CDECEFCA0"/><topicref href="GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita" id="GUID-C76ED3CB-63A6-4282-A8CB-6E2801861E75"/><topicref href="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita" id="GUID-E80BE21E-ECCD-4F66-B0B0-983721A02314"/><topicref href="GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864.dita" id="GUID-2B618852-F1DA-4734-8FBE-BA96DF033FEF"/><topicref href="GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD.dita" id="GUID-1BF20209-BAC0-43A1-81A6-AF824E9AB653"/></topicref><topicref href="GUID-E9E2783E-44A0-5BA6-BBF3-D13C8D67B53E.dita" id="GUID-8305F0C2-FD9E-4D0A-B9D3-914BB5F90281"><topicref href="GUID-8E158109-AE22-5216-90E8-63A4BD4CC90B.dita" id="GUID-2BA537EB-BAF8-4C7E-AB00-4D19E7078467"/><topicref href="GUID-722180B8-0032-5C3F-AEB2-A9B1261450D8.dita" id="GUID-55F45255-C043-4F07-B16D-41036B41E13F"/><topicref href="GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8.dita" id="GUID-38D0EFBF-5585-45B6-9D10-6B7787C106AC"/><topicref href="GUID-FCCE497D-1DA8-544B-A973-831E97DB5569.dita" id="GUID-EBC40C5E-58A7-49B7-BC5A-6BA6A575FE1F"/><topicref href="GUID-05E3ED3B-41F8-5FC2-87A2-627BD5E6BB04.dita" id="GUID-A32A5C42-E89B-42D0-86AD-0ECA71697BC2"/><topicref href="GUID-3AB8E95D-4270-5CDE-994E-404BCBEC57B6.dita" id="GUID-A563D1FB-00EE-4425-A57E-67C5C4C9DE14"/><topicref href="GUID-0116F567-D005-5480-AB37-9799398C0E6F.dita" id="GUID-EAD652AF-7A7A-473B-859F-9E9200914F1B"/><topicref href="GUID-7FAE6FE0-D5CB-55D4-94B0-ADD545577CA7.dita" id="GUID-3F1D3E28-B291-4F3F-B5B1-697A0B8AE85C"/><topicref href="GUID-E3E19113-AAEE-55C2-8016-11D492123762.dita" id="GUID-4C54F7FE-8D03-4514-B138-8102993F7062"/><topicref href="GUID-F67F8930-7F8A-5497-AAD9-D7789B437478.dita" id="GUID-AB23E29E-9773-4BA5-89AD-BF5280A4F825"/><topicref href="GUID-4C7ABD1C-B42C-590A-AD24-7FA6C3A8D18C.dita" id="GUID-7D9A13C5-2535-49C0-994B-6EB1B6FB494B"/><topicref href="GUID-E34D0F11-4B34-575C-BE78-8EAD13E9CD64.dita" id="GUID-DFD13E7B-128E-4B0C-95B5-282AED8C14A6"/><topicref href="GUID-AE31B2A5-40BA-5FD4-9CCA-2CDF5B00DFDC.dita" id="GUID-8C98BD38-1931-4E27-AF90-129DC07DB333"/><topicref href="GUID-3101392C-A9FF-5F56-8872-5A03D053565E.dita" id="GUID-51D0BDE1-F172-4DEA-85FC-87BB0233C2AF"/><topicref href="GUID-CB1E1921-9CF7-55B7-9F70-6AD61A961208.dita" id="GUID-A1A5C3BD-4029-4E30-B5D9-5EB59E69CED6"/><topicref href="GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita" id="GUID-253801A8-2C89-45AC-93DC-22289415534F"/></topicref><topicref href="GUID-69B5906E-63F5-59C6-A82C-DA4386B20F9F.dita" id="GUID-4212C42E-A465-42AB-BD04-AD02E10F2BC0"><topicref href="GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita" id="GUID-25CD20B8-985C-4157-8799-55677A38B090"/><topicref href="GUID-9CA1C115-2DA3-59A8-AAE7-E99928B889BE.dita" id="GUID-DE7BB224-5F55-46E3-A340-ED5C9E7993B6"/><topicref href="GUID-5CFC075C-8F53-5E1B-A111-C6F4567DFD1E.dita" id="GUID-16A2BB6B-1E0A-4E25-9DF0-293989423D5A"/></topicref><topicref href="GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita" id="GUID-05AEAAFE-0B1A-4556-8A1B-57128722C3B2"/></topicref></topicref><topicref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita" id="GUID-64C4195E-F5E1-4084-A0DE-70230A935D88"><topicref href="GUID-6C7B7778-9B2E-5D8C-B2D8-74AC1DEEDF61.dita" id="GUID-0F4965C2-E679-4D9C-A2F5-2B952E3914A0"><topicref href="GUID-107AE89E-901E-535F-8D1A-EE347D7822B1.dita" id="GUID-B1BD4678-B212-4135-BB03-85D921E18C7C"/><topicref href="GUID-D99D9DA3-AB82-5513-85C3-FFF254CB9B0B.dita" id="GUID-097DFF93-5363-4E82-9AF6-DF086BB9493B"/><topicref href="GUID-C7E37B5D-C7AA-5624-B34F-B3CA44516E1D.dita" id="GUID-B229F9A6-E960-46EE-9872-F7C14637672F"/><topicref href="GUID-9D9A67E0-CA0D-51B9-BD0D-3F474E90808D.dita" id="GUID-DAAA4A2F-9AA6-4A89-ABF5-6C3CA85246EF"/><topicref href="GUID-399AE85E-9A5F-5748-864E-51C3F417D45B.dita" id="GUID-E488B68C-23D7-4ACF-8F5D-E7F2872FD46D"/><topicref href="GUID-97E8BB93-DFEC-558F-BF7A-0F5FF0D16F06.dita" id="GUID-69FDC2E0-2C03-40CE-A24A-63F693890BE5"/><topicref href="GUID-768E599C-3EDA-5AC9-8D27-7C6240B0CC63.dita" id="GUID-2F345781-5645-495A-88DE-062E99F0A3C2"/><topicref href="GUID-C258D231-4B08-51C4-BA09-8C61239666E0.dita" id="GUID-ECFC0E2A-8E16-4062-8BF3-568A2A9C3432"/></topicref><topicref href="GUID-EA83150B-8076-5EA5-BE78-962FB450E848.dita" id="GUID-3667A6A7-BD47-4E2A-AD36-57F66C3FF098"/><topicref href="GUID-468EDD07-3868-550B-B1C9-E79FD728F9B9.dita" id="GUID-AB5CCFF0-262C-4AC7-8A20-BDB715867302"/><topicref href="GUID-699E6012-92E0-56A2-943A-B6282E6A86B5.dita" id="GUID-70526871-36C5-4F7E-8C35-1E8BF30FC308"/><topicref href="GUID-D30B09D1-6537-58B4-B94E-13EAD5A28EE0.dita" id="GUID-0E2E0F96-6CD8-4B87-B6C9-D943EF28EFB2"/><topicref href="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita" id="GUID-A19012A6-DD82-4E44-BA40-D887FA43E7F7"/><topicref href="GUID-922442FC-D9E0-53BD-B8AD-011A724C96FF.dita" id="GUID-E459AEA0-8DCD-4A90-A673-3710C6C1504E"/><topicref href="GUID-57A909F3-EAEA-5FE2-B620-E21204794497.dita" id="GUID-6785A1F6-13BA-4F41-9A41-C3E6C9F8ED8C"/><topicref href="GUID-5D47DBF8-3DFE-5D0B-95B2-63302E91C423.dita" id="GUID-C8EBA877-6DD7-410C-BD1A-FD0F90234303"/><topicref href="GUID-397239F9-7EE8-52CF-9B37-328AE307BAA0.dita" id="GUID-E978D9E2-9015-4822-A295-CB236BA54AF0"/><topicref href="GUID-934AEB9C-77EA-5F50-BB84-2446DDD432C8.dita" id="GUID-80106314-71B2-41DC-9ECE-A5CBE7B58EB6"/><topicref href="GUID-31E9F790-8A47-588C-A515-D2C8CD367ADE.dita" id="GUID-4A31D0B2-7C7D-4014-AB50-7C4329336017"/><topicref href="GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F.dita" id="GUID-3D0448B8-D6E0-4630-8061-99879481F83E"/><topicref href="GUID-BD9CBBE8-9389-50F9-98B1-0A07F7E2891C.dita" id="GUID-2BA77133-E145-4B66-9C42-5A0F111E7226"/><topicref href="GUID-ED2F48EA-8C31-5729-B312-E925B7EC3B24.dita" id="GUID-D66F9478-0554-4453-B347-9AE7C9EB2BFF"><topicref href="GUID-DB6AF6D3-38B6-51EF-A830-388961A3BF04.dita" id="GUID-38DB1499-F552-44A6-B52C-5910C69EAE89"/></topicref><topicref href="GUID-00B82F15-0ACC-59A9-AB9C-E4342ABE64D3.dita" id="GUID-C404159E-5A3A-4613-845A-AAD8FE2CB4AE"><topicref href="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita" id="GUID-1C118CB8-C663-4AED-AEA4-8204F89EF7F9"/><topicref href="GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413.dita" id="GUID-11284743-4E4D-411D-B600-EF7AC4417FC5"/></topicref><topicref href="GUID-152B5CE8-B689-5E99-885F-79FB0654B7D6.dita" id="GUID-063743CF-6D37-4921-ABCD-1C43FABA039B"><topicref href="GUID-7FA9E730-DBE6-52DD-87FE-B2D01EFAAE12.dita" id="GUID-29675040-1DF2-403B-8B66-37764B3BC20A"/><topicref href="GUID-21C4398F-0519-5107-A735-A7137A1595E0.dita" id="GUID-F51ADF30-4FFF-49F0-8099-429924F48592"/><topicref href="GUID-5B451D6F-1F3D-5B54-BBC4-212D04F9977F.dita" id="GUID-C75B3F65-CD84-45DB-B77E-9FD903BADBDD"/><topicref href="GUID-0E6C7017-E430-51C0-A5D6-1798B0DCC6BC.dita" id="GUID-6B26F04C-43F3-4FF6-81F7-5D35D8AE0288"/><topicref href="GUID-7651FA57-4C0E-5EB6-8DB1-AAF23D39CD7C.dita" id="GUID-EE2BE5F0-764B-4C63-BA32-8F37F445BCEF"/></topicref></topicref><topicref href="GUID-36AF783B-A56A-5C16-A055-9075ED4396C5.dita" id="GUID-B06C48D4-1855-406F-868B-BEFE46A7DB53"><topicref href="GUID-810043A5-62FF-55D3-A908-973FFB72DA4A.dita" id="GUID-5C2727D2-0B0C-4262-BEFA-0B84D3FFA4F0"/></topicref><topicref href="GUID-E1EF7223-02EA-5875-84E6-6415E7081F6E.dita" id="GUID-D4157C59-C202-41EE-BE4C-28F1527E4E8B"><topicref href="GUID-4A21335F-7752-5134-98C5-D21D4657E094.dita" id="GUID-E303D31B-8D57-4A7E-B328-49ACB232D15C"><topicref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita" id="GUID-5A8D0EE0-271C-49D6-9EAA-096C628F8293"/><topicref href="GUID-E8BD8844-3297-5848-BDF0-F6D595367145.dita" id="GUID-AD8ABCAF-793E-45FB-9CF7-22C04DD6CF48"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-C2011C8F-A1F4-4DD4-A89D-613D3F810F7B">
+<topicref href="GUID-F8C8CE42-E7C9-5AFC-86BC-B78F677F1B05.dita" id="GUID-0944EF05-7348-43C9-9805-664E373ECA78"><topicref href="GUID-9BAEF0E8-5414-597C-B0B7-5F6E02DBF3C5.dita" id="GUID-660DE7BF-49D0-4F2B-A727-2E5C5D0136AF"><topicref href="GUID-8C8B97BF-E769-5C7B-A6E0-B8CA7F12071C.dita" id="GUID-010CD523-B9CB-46ED-9470-A2CF69081D9F"><topicref href="GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita" id="GUID-2BDDD951-2E04-47FB-987E-72D40D23C988"/><topicref href="GUID-D009C6A6-3388-554F-BCB5-4F438E7F9E99.dita" id="GUID-881ED2E1-A1E9-4558-B0EE-474E6DAD7DF7"><topicref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita" id="GUID-7A4CFF11-7E6E-44F4-B4E0-E7779B2E9C07"/><topicref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita" id="GUID-4B4F74B6-B1D8-4FE8-B847-7E530E6676AC"/><topicref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita" id="GUID-35F97D93-7CFC-480B-9A44-53985B9B53D1"/><topicref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita" id="GUID-C0DA469F-EF39-41EB-A4DD-65E65C3385AA"/></topicref></topicref></topicref><topicref href="GUID-DC011D9C-6C39-5BB9-A7CC-4447AB97A2D2.dita" id="GUID-3859C639-D4B8-43FB-8E2C-B54DBB9C3A77"><topicref href="GUID-4F004877-DFDD-5282-B8B6-7F36D892B122.dita" id="GUID-62387F3F-1FE2-4823-BF0A-67A987DFC7B9"/><topicref href="GUID-F2289115-B1F0-595D-AA1C-3E01F08911CA.dita" id="GUID-9982ADB2-DED6-464E-A5FB-EE2F23B6702A"><topicref href="GUID-A87610FF-2FBC-4BA3-8F6B-0BBB441F8066.dita" id="GUID-03F18488-8C74-4713-A879-A95CF72E25AB"/><topicref href="GUID-25A005BF-731B-58DB-8EF7-AB7840DA563F.dita" id="GUID-1D02A5B5-8D6A-4540-A728-22E81CF1460E"><topicref href="GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita" id="GUID-2D3BF353-43BE-4BD9-8564-19C4284FAD36"/><topicref href="GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita" id="GUID-5C63812C-86C6-4B7B-AFE2-BB6CBACD0B46"/><topicref href="GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C.dita" id="GUID-BAE50B59-5B2D-4E59-9D18-74CB4C3E6EAD"/><topicref href="GUID-16A42EB3-4F45-5623-9981-1DEE3234471E.dita" id="GUID-F88215B3-DDDD-4B1B-AB91-7770936B7338"/></topicref><topicref href="GUID-2E3BE23C-B9DC-5B5D-A56A-1DB819EFC9A6.dita" id="GUID-A0B9D97E-D9E7-4B5D-9B3F-45D5AA7BEB5B"><topicref href="GUID-D4E06508-4346-5294-995A-64B403467EC5.dita" id="GUID-28B2428C-6357-447E-B5EA-E46A093F642C"><topicref href="GUID-CD87FAF6-A11D-4260-9472-CABA18BF86B1.dita" id="GUID-9A697F7B-F3F3-4DA4-9511-F437D1D99AB4"/><topicref href="GUID-4860A4E6-1641-47D9-8243-C03779276C6D.dita" id="GUID-DAB2B745-993E-4049-8A44-8E0FD58B5417"/><topicref href="GUID-D21191CC-965A-4F92-9792-4B34D54114DA.dita" id="GUID-D1D43E1D-C62A-4A84-915A-B51AC82C8C16"/><topicref href="GUID-6DA81F01-FBD7-4167-B722-832888DEC0AD.dita" id="GUID-EB130026-F8B5-422C-8A08-FF5160196CAA"/><topicref href="GUID-4FE4B515-EE2B-47DB-BECE-E390E4EB2C3E.dita" id="GUID-D51ADDDC-2975-4F01-AFE5-9D7D237D09D6"/><topicref href="GUID-056736E0-3DF0-49FE-A44D-1A8E47FE45A0.dita" id="GUID-46762AAE-1632-420A-973F-F330A8736B5B"/><topicref href="GUID-3715E8EE-FF0A-4344-90F1-1609D54C166B.dita" id="GUID-7119497D-65AC-4C19-8706-55DA6B185116"/><topicref href="GUID-CF6C76A5-AC87-4EBD-AECF-35B456219B94.dita" id="GUID-84D7F192-17CC-48CA-A6BA-92AB07C96A03"/><topicref href="GUID-2382F758-35CF-4378-A5D5-183121E3BF6A.dita" id="GUID-80024D1F-ECD3-47F8-BDA7-A2020D292BFB"/></topicref><topicref href="GUID-D78DCB72-7CEE-5075-A6FA-58D57AB5BA73.dita" id="GUID-5DC5E9DE-6718-47B0-82DA-3A4A03223BE0"><topicref href="GUID-623CA1EE-4D25-495A-BD2F-BA7BF95D6D9C.dita" id="GUID-6317D9C4-074A-4256-9C58-4280FF7BF701"/><topicref href="GUID-D89D1809-0A64-4331-BA5C-2B82187BEFB6.dita" id="GUID-51C1B493-4DC8-4DA2-A799-1B2CBCD331BF"/><topicref href="GUID-AE5432AE-C699-4403-BCFC-474515C9BEC8.dita" id="GUID-D15074A4-9F84-4223-A903-451C8CCD9316"/><topicref href="GUID-F575F364-4BCA-42C7-BE00-7B31D8B55AE1.dita" id="GUID-C6B4A5BA-FC4C-4033-8979-05DE61525304"/><topicref href="GUID-B57857D6-F00B-458A-8194-42CACA0BF131.dita" id="GUID-A21FC3FB-A01A-4E1F-A0CE-EF046920C906"/><topicref href="GUID-B80ADD0D-2834-4478-A4AD-1FEBC0112A43.dita" id="GUID-80BFF756-84B3-4D32-BE1F-A6FBA23CE3DB"/><topicref href="GUID-A0122085-369E-46EF-9CA1-0269982A5284.dita" id="GUID-040091D5-A34A-4519-847F-8F86AC19754B"/><topicref href="GUID-2D8A7DCE-47A2-4326-BF2F-B4901F1723A0.dita" id="GUID-AB5DCD39-8068-4DA2-A90A-A144E64471E9"/><topicref href="GUID-D157C4D3-FC2F-47DD-BD33-F8BA6156833D.dita" id="GUID-7C708A27-82ED-4C3C-8352-6F6DB2E6A68D"/></topicref><topicref href="GUID-03494D84-7E6D-5128-A8CF-2F6E25543591.dita" id="GUID-676944D5-6AF3-4812-92C3-3AECE409AAE8"/><topicref href="GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita" id="GUID-9A82B8F0-E6C0-415D-AD64-122BFF5037DA"><topicref href="GUID-047E3462-F806-4C54-9DC5-6B78907CA949.dita" id="GUID-88457FE8-21B7-464E-ADEA-74734D5E821A"/><topicref href="GUID-BC627588-E8C7-4DDB-8313-7C57E0CCD93B.dita" id="GUID-E49798B9-C3D9-443F-848C-556DE4F8F10D"/><topicref href="GUID-7CF7D29B-14A4-432E-BBB2-E3AF283E45E3.dita" id="GUID-428CCDCE-F394-4581-89BE-467863E38F77"/><topicref href="GUID-FC7F8CFE-F9AD-4442-9289-CCEFEC62DF68.dita" id="GUID-AFE7861C-EC04-48FF-89F8-DA8D3F3EAD50"/><topicref href="GUID-6A0D353D-A9B0-46EA-8FDC-1FBBD4A20CFB.dita" id="GUID-EAD4AEEA-B880-40C4-BCCF-B00895CBE301"/></topicref></topicref></topicref></topicref><topicref href="GUID-E3ADCC42-ACFC-49FC-88FF-8196CE61014B.dita" id="GUID-5EA45326-FFB6-4DB1-9522-616CB4DEDDB5"><topicref href="GUID-0F784804-8452-4C92-ABB3-56B81BAED744.dita" id="GUID-FDB93F11-C38C-4389-9996-60DECA19DAE0"/><topicref href="GUID-9102DB10-3B93-4E79-9125-25791CEEBEFB.dita" id="GUID-5DBC9086-1293-4DB5-9F3C-05B602043A96"><topicref href="GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27.dita" id="GUID-338B00F5-C445-44E7-871D-C0118CB5A305"/><topicref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita" id="GUID-BE8B746C-D4C5-4B47-8D7D-5DAA272B1433"><topicref href="GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita" id="GUID-68E682C4-6E9A-44C3-B44D-ABD5509B21C7"/><topicref href="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita" id="GUID-1F831306-5758-4767-8BCA-5C3434E7882A"/><topicref href="GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita" id="GUID-1B03AC04-83F2-475D-83EB-124A1EE3EC51"/><topicref href="GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita" id="GUID-30D309B1-68CA-43C7-A1B0-8237B5C2CE71"/><topicref href="GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita" id="GUID-C919B9B5-5886-4DD7-AAF2-F21F6887F6DF"/><topicref href="GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita" id="GUID-CDBB5B15-5652-4F6A-A149-AD9AD4CFE980"/><topicref href="GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita" id="GUID-421B4F84-A2AD-4DDF-868C-D6D8D1E6341E"/></topicref><topicref href="GUID-4DBE9AD9-2942-450B-B43C-3F2B47777357.dita" id="GUID-0CABF0AF-2E52-41CA-BB7E-92191E99CF07"/></topicref><topicref href="GUID-7FB1B44E-B3FF-4765-88E3-A7FDB4FA8413.dita" id="GUID-A2724541-5D30-4791-B4EF-D41DD7668582"><topicref href="GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692.dita" id="GUID-A4EE8E73-4C62-445B-945F-D9552969BB73"/><topicref href="GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita" id="GUID-D256F5A6-3AF5-4978-976C-4E0C5686754C"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-EC97E835-2A08-40DC-BEF8-5DABA95C520A">
+<topicref href="GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita" id="GUID-76B8A735-7107-466C-B08E-9B18454869B7"><topicref href="GUID-58CA15F8-D984-5D07-8C00-161FA16A8FD3.dita" id="GUID-EE18D17B-B934-4692-95C6-BE9C74CE5F06"><topicref href="GUID-C38E6D35-43DF-54E6-809B-A7B871258944.dita" id="GUID-29D6055E-AADD-4981-AA0C-E56CBC540E2D"/><topicref href="GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0.dita" id="GUID-C2B8AA19-05CA-4454-9553-61D04AC689EB"><topicref href="GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita" id="GUID-387DE239-C3D5-4697-98B7-D2F89D69B2C8"/><topicref href="GUID-D2E19490-4179-548F-9DA8-9AE637FAC9E2.dita" id="GUID-6959A098-5F4B-4591-8DD6-143D13747370"><topicref href="GUID-C4CC3CA3-8C02-5F73-A482-4F849DD08111.dita" id="GUID-905EE182-39C5-495A-96B6-022698777013"><topicref href="GUID-3CAD7211-2164-5F93-9EA7-7167E1C14012.dita" id="GUID-FFF37C24-7D04-4426-AD39-814BCC50D516"><topicref href="GUID-BD7C45B2-11BF-5162-9F9B-B84E51C5C6D4.dita" id="GUID-ED83033A-1182-4D37-8E5E-1A024067D715"/><topicref href="GUID-A3320A1E-E85E-508D-A47E-E35824C947A3.dita" id="GUID-077DB33D-F45F-416D-AC39-E0597533B701"/></topicref><topicref href="GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita" id="GUID-E22FB347-9F72-4457-82BD-F99086F01FAB"/><topicref href="GUID-B5F98445-3CFF-5067-B89A-AC80F56C40C3.dita" id="GUID-3136A621-2B12-4216-B73E-DC35458B8675"/><topicref href="GUID-B861091F-DFD7-5BDD-B73C-52833F972CBD.dita" id="GUID-B7117D80-8E89-460E-95BE-B587EC172B8C"/></topicref><topicref href="GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99.dita" id="GUID-BB3D4795-9B90-49BB-8742-D31EE1587CF0"/></topicref><topicref href="GUID-737ADA8D-5B7E-5408-9929-3EB9A3B4FCB1.dita" id="GUID-6CD5511B-AE86-4B38-91EA-FC44C5A89DA4"><topicref href="GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA.dita" id="GUID-D4BB5AB5-8234-44A6-BF72-953F4CF3C20B"/><topicref href="GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita" id="GUID-68209A0A-A97E-44BC-9432-A02266D06AB6"/></topicref></topicref><topicref href="GUID-D468BDDD-FC61-5571-A4E2-334B6BB9C1E3.dita" id="GUID-CA1CC888-E8F2-4BB4-A6B9-EED9DBE690CA"><topicref href="GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita" id="GUID-4E7041C6-37FB-4783-90B7-DF6229DED33B"/><topicref href="GUID-6167C2F2-BC5B-5B10-BD5D-7702BE4112F6.dita" id="GUID-B841B565-97A2-413D-A3DF-0EC054FFAE97"><topicref href="GUID-2D6689C2-F17D-48A8-8EC9-3D83BCAA3681.dita" id="GUID-BC81563A-3B52-4B23-B8B0-CE73BD209859"/><topicref href="GUID-6FD4E7A4-D215-4CFB-BC7A-23065DE95C5C.dita" id="GUID-FD7EE15B-0115-4EC7-8E77-6A3451C772EA"/><topicref href="GUID-4ADDDAFE-0941-4787-B07B-F5B7D8D5B1AA.dita" id="GUID-31ADF479-CA9F-44A0-9CDC-C32A879EECA8"/><topicref href="GUID-A399508A-DE6A-490D-9BFB-4FCF56FF9D4C.dita" id="GUID-D8172F24-C1C4-4E38-A22F-380B53B295A5"/><topicref href="GUID-13D2B45C-3A2A-497A-8D6A-87BE34D1DE69.dita" id="GUID-B8BFBE01-015D-4F00-96B0-CD9313C7BD53"/><topicref href="GUID-940E3C48-D0ED-419A-9172-E4856C6CA809.dita" id="GUID-4E0CF6AA-0265-4D58-AD1F-E9D6E0F0B600"/><topicref href="GUID-210A181E-5EB6-4626-9E7E-8761A2272D79.dita" id="GUID-00435298-E984-4A0A-8FF6-7167B19790B2"/><topicref href="GUID-AC6FCBB0-E4FD-4D30-B000-1F652B2EE96A.dita" id="GUID-A75A1D17-7D87-4AFC-A9D5-2F229E1E84A6"/></topicref></topicref></topicref><topicref href="GUID-1FB321DE-4A02-5468-9AF1-F3786EB678CF.dita" id="GUID-0B60672E-ED65-4EC5-B999-C9CA26742726"><topicref href="GUID-CFE3A216-E637-51C1-B258-2ADF4E0F4150.dita" id="GUID-EA5EF987-DDF9-4736-AA02-1CB887627F4D"><topicref href="GUID-5C4922C8-3AE3-424A-A2E7-5C6DA323FFA6.dita" id="GUID-C49F89D4-2C0C-435E-9AEB-C0C04C84DE6D"/><topicref href="GUID-E6788741-EF34-57B7-B4D4-8AAC21B25774.dita" id="GUID-FAA8A348-BA9D-47D5-B249-9FC7DBD0AE39"><topicref href="GUID-27009193-6170-42B4-A258-E7B694EEC8EB.dita" id="GUID-FF4DA7F2-47AD-4BF1-8B6B-8C7B57CCD59F"/><topicref href="GUID-51F43258-B3D8-5EC9-85EF-67F09499C253.dita" id="GUID-9494B1A0-93F1-47ED-B1F3-25CCCEB18EBA"/><topicref href="GUID-FE2E8E58-6656-534E-A052-095AF559A482.dita" id="GUID-A1406192-4612-4339-80CA-3CB6C44DD44A"/><topicref href="GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita" id="GUID-CBDB9FA6-1FD4-4ED6-AD25-C3D7A95B2FEB"/><topicref href="GUID-9BE3DEBE-A1CE-5A2F-9746-1E6F2B5B050E.dita" id="GUID-9C811EF9-BFB9-4C7D-8459-9A6EB4347B2E"/></topicref><topicref href="GUID-63730EBD-E5C1-5BA9-AB71-8FF668ECEF00.dita" id="GUID-319BCB40-CA68-4FEC-9DC4-F243C4536062"><topicref href="GUID-078492C7-7E25-5D6E-B6BE-3A5DAA4522DA.dita" id="GUID-12D91254-4424-4823-A747-6D5F47FD92C0"><topicref href="GUID-70CD9D74-8592-45F2-A91F-AD34ED93CB3D.dita" id="GUID-905A5BD5-9894-4826-BBFE-E8DA8F202149"/><topicref href="GUID-F4B61436-5496-4913-A769-794318C6B964.dita" id="GUID-FE10ED40-BFAB-42FB-BBE4-5C7B383F0F5B"/><topicref href="GUID-41F1AED1-7BE6-42CF-BC4A-E913A6F2D5E6.dita" id="GUID-FBA2D7F9-CDC9-4B07-9BC9-55C5AD2CAC24"/><topicref href="GUID-A8EE55C2-0636-44E2-8B2B-05EA8D4A96A4.dita" id="GUID-83410A83-C3B9-45BD-A2D5-E28832926987"/><topicref href="GUID-E173DF0D-DBE3-45DE-8763-453940DF3E5B.dita" id="GUID-1EDC3DCE-D8C5-4830-9FB5-D21DE335BF36"/><topicref href="GUID-D158746C-6043-4ED4-833B-85C82831A66B.dita" id="GUID-96D15869-796F-4243-9D0F-854802F319D4"/><topicref href="GUID-7440BE0A-6E4A-493D-8105-80DDABD6F3EB.dita" id="GUID-A8EF81B8-941D-457E-B62F-B4DC8A69A8AD"/></topicref><topicref href="GUID-59D2B677-63D7-5FE7-98F4-549D9C235E56.dita" id="GUID-8E1D6136-22F5-468D-94EB-1AE7F6B7CCC0"/><topicref href="GUID-387DB01C-EA48-5A10-A960-9706F3D2D0B1.dita" id="GUID-924ABB70-5EEA-4207-9E74-4222FAEBEF64"/></topicref><topicref href="GUID-7BCA8B7A-E250-5452-9837-26C60F71F14F.dita" id="GUID-6711F98D-F871-4087-9417-2789F6FB9904"/></topicref></topicref><topicref href="GUID-CFFA84F1-2A5E-5E73-B168-C79C2E4DC75D.dita" id="GUID-2F70B264-808E-4AA2-BF58-EBA327016585"><topicref href="GUID-33BFC72A-2246-5366-81D7-72AB5B730F8F.dita" id="GUID-51EAC122-7EB9-4B34-8CCD-88922727B7E7"><topicref href="GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita" id="GUID-BA62AB9E-95CF-4B5B-8E17-7ED992A0A48A"/><topicref href="GUID-99ACBD00-2F61-5984-BE77-91D5EF547289.dita" id="GUID-A4637348-4030-4F8F-8437-24EA5A788671"><topicref href="GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita" id="GUID-DF89FA1B-4C09-4BAB-BF98-3C6EA6D7DEB4"><topicref href="GUID-49C93C36-D86B-4EEE-A8AB-4279312DF4BC.dita" id="GUID-78CB3752-1E54-40A2-B321-886708072C56"/><topicref href="GUID-008F9006-8548-443D-A7ED-4A8233E051C6.dita" id="GUID-17BE50F9-BCF0-4469-A33F-09289771AC52"/><topicref href="GUID-436B6DFE-D279-44BF-B099-B2547D50610A.dita" id="GUID-845CB7D3-7478-4DC6-AC71-CBF9B1146A4F"/><topicref href="GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita" id="GUID-C10942AC-9AEF-428A-B089-A7A9599615DC"/></topicref><topicref href="GUID-C1C0E7DF-6519-5648-AE5E-6D149AF1A89A.dita" id="GUID-F2488028-19B1-4DC5-AFA2-8B964E7F4689"><topicref href="GUID-A7DFDC4F-56C2-46B3-8B76-A6488BE4ABE0.dita" id="GUID-62306088-F692-4FA4-B519-39A28E59D543"/><topicref href="GUID-5E7A1041-B0E1-47E3-A3BF-6C9AE221B98F.dita" id="GUID-D54BF97B-E095-4C13-B05D-FBDC0F39BD33"/><topicref href="GUID-FC46AA09-3E04-426B-BAC0-A992EA1AE0B6.dita" id="GUID-F271978F-6335-4D67-B6F2-5874B0ABD09B"/></topicref></topicref></topicref></topicref><topicref href="GUID-9B8655A7-2F6D-53E0-8855-78D88BB84643.dita" id="GUID-1D46280E-D7B3-480E-9F96-FC845A8B74CB"><topicref href="GUID-0C0A85D1-BC15-502F-9DD1-A48C0A908CED.dita" id="GUID-29962AA4-F244-4377-AFEC-FC08E310666B"><topicref href="GUID-65282D5B-E911-5C7E-8571-0FCDCD1C1713.dita" id="GUID-C994AC1C-3EBE-435C-A931-EAE5AF87F038"/><topicref href="GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita" id="GUID-C32A620F-CC76-42C0-96F8-7CB1C6E5D26A"/><topicref href="GUID-DE099071-8401-5DD0-B72A-672B307463A2.dita" id="GUID-15FF47E3-FF92-4977-80FA-BBF3DFD512A8"/><topicref href="GUID-A34D9893-C9AE-5C43-85D3-E14BC5DE2A92.dita" id="GUID-9AB73114-A0AB-4211-A8B3-42896826BC4C"><topicref href="GUID-DA204619-9F02-5854-80BE-0AC6BB80D730.dita" id="GUID-DDFBBC8C-7487-4AD8-9E55-E33CC85C4845"/></topicref><topicref href="GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita" id="GUID-F10B7B8B-DC5D-4517-AB9C-FC0C9E8851D5"/><topicref href="GUID-643BECA3-FC08-58D0-8E1B-D3ECAEB25CB5.dita" id="GUID-385AEA99-CB86-4E91-9841-22B86495C0F6"><topicref href="GUID-B5696711-C79B-5239-B587-33507BF2B3BE.dita" id="GUID-E2DE92F7-36AE-4119-B142-004DAAE0E89E"/><topicref href="GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita" id="GUID-DF6E09BA-DF11-4F5D-BEF8-5D414DBBFB99"><topicref href="GUID-69CFCFF4-68C7-5345-ADF6-449E9E98297D.dita" id="GUID-9F56C7DA-ADAF-487B-8C7B-D2493E927DDA"/><topicref href="GUID-4C31BFCC-BC2A-55B1-8D3B-3355032E2062.dita" id="GUID-3EC57562-27B0-4422-8C54-9D10C0B1CFEB"/><topicref href="GUID-9EBF45BC-79C3-56B3-B52A-A4C3D615602C.dita" id="GUID-BFA7F64B-5877-4E07-A740-527AD0042488"/><topicref href="GUID-729289F7-D0CD-5B50-AA8D-A86C35034076.dita" id="GUID-A8C79F36-A481-48EC-8CD5-398F62759CCC"/><topicref href="GUID-4576A9FC-10EF-5D3A-9AFC-3BF9CE10EE2F.dita" id="GUID-E54550F0-93B5-466B-9A1E-04E8F86885DC"/><topicref href="GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita" id="GUID-9190443B-DAFB-4765-941B-48E7383E2AE8"/><topicref href="GUID-22D7E6E9-D47D-52F0-A9DF-C69075DBEEC8.dita" id="GUID-007144DA-C7BB-4684-A615-2531C964D31E"/><topicref href="GUID-12E2AFC9-0010-5ACE-9635-6EBC4036E36A.dita" id="GUID-3EA5DE88-2D38-4026-93BC-0C2C6FB7C40D"/><topicref href="GUID-0EAB8D75-AA27-5548-8D0B-FC394AC79358.dita" id="GUID-EF533C50-9BF4-45A5-9A52-A0F1960B7FEE"/><topicref href="GUID-E1634502-483A-51F3-9F5D-C863C8C9465A.dita" id="GUID-7FC6D88B-36F7-4AED-A92B-1537CBCDB640"/><topicref href="GUID-3F1FA838-4B65-5692-8B73-AFB9896E5F10.dita" id="GUID-2336E6E5-3C51-4CA4-8499-8D7B37EC0F1F"/><topicref href="GUID-728F278B-30C8-5FA8-AD03-4C759690416E.dita" id="GUID-F45F334D-40E2-46DB-9A86-8400398CBF3F"/><topicref href="GUID-7C645FF2-4785-5716-9674-B3A224F6C0D9.dita" id="GUID-E46ACE89-447A-4277-93BD-3D7E20C7295D"/><topicref href="GUID-E23D699C-D087-5ADA-BD46-BA5D68DD0047.dita" id="GUID-B81102EC-48A9-4ADE-99E6-8CD87BAE9A01"/><topicref href="GUID-4CE611C7-1FD8-5DAA-AA04-5B80804D6DD7.dita" id="GUID-39F86824-568E-4BD9-9CDF-6B84F3BDD2C6"/><topicref href="GUID-10F30EB2-1431-5219-B1F8-95895FD5A448.dita" id="GUID-EB78B34B-982B-4A39-AC47-1828A7BF5946"/><topicref href="GUID-B6101F63-280D-5CF7-92EC-337FEDF5E148.dita" id="GUID-DD53EF3A-DCCD-4E74-842F-6EAE5E195D38"/><topicref href="GUID-7E2891DB-372F-517C-95A4-D706EF1DB8B3.dita" id="GUID-7CCE83C1-FD7D-46BF-BEB4-D9108B5EA40A"/><topicref href="GUID-215D2BD2-1757-5869-A589-98BE332EB4E2.dita" id="GUID-681A3EAE-FD04-43B0-AF36-7B2375033E85"/><topicref href="GUID-18CB4763-5EEE-5D0C-A293-D84563F06DB1.dita" id="GUID-26715A95-7942-4844-9326-116AE984A445"/><topicref href="GUID-B76CF2DF-8705-5C44-BBE5-29706957578D.dita" id="GUID-7CA10EE0-3A98-44F3-B006-6CE2CE390ECC"/><topicref href="GUID-54D1B7E1-39A5-5BB9-BC33-1047FDE941D9.dita" id="GUID-408E8070-B533-470D-B79B-4EE6E8F6FE90"/><topicref href="GUID-026164D5-6A32-5688-9D28-926DC0A61F35.dita" id="GUID-00D0C9B0-23F1-4E95-A056-9DEDA7CC19D4"/><topicref href="GUID-A6B5CB55-9928-580E-AE62-6017211457B8.dita" id="GUID-5DDAF98A-1B5B-448C-B15E-5E6F9FC14B4E"/><topicref href="GUID-B8E16769-0B82-57BB-8DA0-FEB4E181FA84.dita" id="GUID-480B186E-9A6E-4B36-A70B-D13CE1649CCC"/><topicref href="GUID-DC890B80-18F4-5D4A-8476-DBEB5FA20842.dita" id="GUID-6701FCE1-3205-4748-9102-234FA340AA7A"/><topicref href="GUID-519AEE28-D3A8-5430-88CA-178CA338D592.dita" id="GUID-DB83B8C7-CED6-4405-A8B1-0291E72227EA"/><topicref href="GUID-E632CCD2-EE53-5546-9603-E9A01A65614A.dita" id="GUID-65170F14-ADCD-4962-BCE2-049546A2F6DC"/><topicref href="GUID-8D7E5566-E297-5418-AC65-2FCA50FD1908.dita" id="GUID-5AB62E48-0419-40D3-A227-53DFCEAFF021"/><topicref href="GUID-DB51983B-9991-57F3-85E6-F770C35A9023.dita" id="GUID-A9B0FB78-8AC4-4164-BDFF-29975ADC645C"/><topicref href="GUID-0B97A12D-4EA8-5B08-9D59-4A3C892D01D4.dita" id="GUID-F72C5AD2-153B-4717-B736-1F0966B4EE4C"/><topicref href="GUID-208B15EA-ACDF-5305-A38C-D18AD79576A2.dita" id="GUID-623740B0-4EFB-40E7-9ECE-348E85A5BE09"/><topicref href="GUID-4911D998-5B1A-53E1-B1A7-920748489CD0.dita" id="GUID-3C1A45F9-4CD9-4D65-8DEB-883F2AE5CC13"/><topicref href="GUID-6D59E35B-6572-519A-8CFD-CB7781DDE631.dita" id="GUID-C7F9F86F-FE3D-40DB-B5B4-4333DC1F7A8D"/><topicref href="GUID-2822DEF4-F7E2-5795-BD67-14BF77C1EB85.dita" id="GUID-2DF18283-64B0-4F04-B8A6-19D85FEDF758"/><topicref href="GUID-4E45570C-A0EF-522C-BD67-FC31E4092740.dita" id="GUID-A7D2836D-49EE-4039-979B-A024678ADCFD"/><topicref href="GUID-A658690F-8F46-56F7-8CF6-06757C550A9A.dita" id="GUID-0579316E-8BBA-4197-870E-874DCE9E1C03"/><topicref href="GUID-EAFDBBC4-0F65-5BA9-9967-EE8D50BBCCB6.dita" id="GUID-3AA7160F-2C5E-49EC-8834-039B55DFF7A9"/><topicref href="GUID-1F809632-82B0-5B4C-92DB-9C4D1316AF03.dita" id="GUID-A551DF8D-AC90-4360-BA8C-C087E6A93124"/><topicref href="GUID-D01CC090-60D1-5D1D-AF87-C77D5DE46BAC.dita" id="GUID-B0160545-92B6-4540-BB02-DAB25326C9A3"/><topicref href="GUID-03194FB8-CC3F-5B8D-8719-3756FAC88102.dita" id="GUID-3CC2E5CB-5457-460F-B0CA-2824DF9760A4"/><topicref href="GUID-0FE4CC82-F638-5CDC-AC3F-096A05807480.dita" id="GUID-5FA934C3-E310-4C3D-AB7E-0CD1DD703A8C"/><topicref href="GUID-CE18D940-FEB9-5678-A3CC-AA8A979AD4DA.dita" id="GUID-B0390270-40A7-40F0-8688-5AD1D0E8AD12"/><topicref format="" href="GUID-9660B072-9BD6-5A84-B45A-636F0D06D467.dita" id="GUID-5533560A-CB9C-4C8A-8FC5-717772BF2631"/><topicref href="GUID-F06A89D5-EBC5-59BF-BE92-CE5C5076C3C9.dita" id="GUID-208E3515-A917-4CE3-BFDB-8BDA801FFB3E"/><topicref href="GUID-34A5AEFE-B785-58B0-9A75-5898EDFD6834.dita" id="GUID-B4896AED-6D02-4D9C-BD2D-88AC292C2E7D"/><topicref href="GUID-06DD6077-2ABD-5268-878E-9B26A3C4BE20.dita" id="GUID-309EB811-C7BD-4017-A585-7BCDD0266067"/><topicref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita" id="GUID-C30A9B7D-F217-442E-87DF-6D71FAA4868C"/><topicref href="GUID-F620A451-9135-5CFD-9F76-F02AE830E094.dita" id="GUID-27006FB9-7DF5-42DC-83CD-1245C943B19D"/><topicref href="GUID-7A1B0CAC-BA12-512A-98B0-86CD317E4B24.dita" id="GUID-92C1E487-A443-40A6-87D1-BA57B6E6C71F"/><topicref href="GUID-C2A203B1-3D30-5CC0-BAF8-0624E9A8B2A9.dita" id="GUID-4FB6055C-ED5E-4CF7-AE9A-0A688A72377A"/><topicref href="GUID-78865979-D519-5476-91FE-9EF3386AC8F5.dita" id="GUID-59AA55DA-E3FA-4ADC-838E-E0DEA791C73D"/><topicref href="GUID-B82829FB-1F3D-53C9-8E3B-E9F8E3820E24.dita" id="GUID-096E9F32-E870-4673-AEBF-4B6672F4D590"/><topicref href="GUID-4CF02F12-7030-5E49-B0CC-593F02EF6FA7.dita" id="GUID-737F676B-072A-4D58-A803-07F38DDE7462"/><topicref href="GUID-0368678A-6963-5558-8DC2-0E618B927538.dita" id="GUID-5123D183-9B4F-4FCE-93C7-D1C46C934D95"/><topicref href="GUID-A4761D73-E2EA-512A-863B-D19F8698C69A.dita" id="GUID-4427085C-A024-4B23-83B0-1E36D274982B"/><topicref href="GUID-A09EAA46-47B4-5E3B-85F9-F6256B8B10CF.dita" id="GUID-8496AA28-513B-4C9E-8A54-36FDF95CDA29"/><topicref href="GUID-CD516F8E-EC7B-5949-BD03-713637CC866D.dita" id="GUID-E6312796-9091-4EEA-8FC3-61036CA4F96C"/></topicref><topicref href="GUID-00FFF2B3-F8E4-5CBF-B031-240D98BB2111.dita" id="GUID-B03DA670-D8C2-47F6-8320-CD9109D890F4"/></topicref></topicref></topicref><topicref href="GUID-4FCF605D-52D9-5B2D-80CF-80C940F680CA.dita" id="GUID-20FB2AB8-1C26-44AB-8703-F376D7F55724"/></topicref>
+</topicgroup><topicgroup id="GUID-7B76C459-2018-4B3C-9311-B45D5AD4AB37">
+<topicref href="GUID-5072BE46-B1B4-5C3A-BF55-BEA7443E7657.dita" id="GUID-4007CEA3-3CD8-4F97-A6F9-9D0A7D18BD13"><topicref href="GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita" id="GUID-452B9A6B-18ED-4A1F-AF0C-13491A982830"/><topicref href="GUID-9208E03A-CC7A-57A9-84BD-778B99040842.dita" id="GUID-25E51BB9-4482-4F7F-97A3-AB8BEF0E0EE1"><topicref href="GUID-5D14ADEC-ED83-5FA4-B551-C57CAE4F79BE.dita" id="GUID-53185367-EA6D-4F7B-9049-C5B16F16A08B"><topicref href="GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita" id="GUID-DE6EE121-E6A4-4992-BDBD-3D1C9FA2D0D4"/><topicref href="GUID-7AAAC6EA-784D-51E6-AD6B-521C9F5C4DBD.dita" id="GUID-56E62F22-29DC-45C2-AC65-CE6D3AC9172B"><topicref href="GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4.dita" id="GUID-2CDE94CD-0B27-4094-A293-0B8C07101A93"/><topicref href="GUID-548CC331-8E38-5627-A925-EA386BE90258.dita" id="GUID-BA7A9DED-2129-45AE-AFA6-E04180977F23"/><topicref href="GUID-C3086910-D7B4-5549-BF65-374C8B602E8F.dita" id="GUID-438136B5-19E9-44C5-BB45-A35D74EBA8BB"/><topicref href="GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1.dita" id="GUID-4ADCB5B6-91F0-4404-BA91-52EC0654F05C"/></topicref><topicref href="GUID-017A0B4C-3FC2-5CFD-9D81-6A5ABF982D98.dita" id="GUID-4EEDB609-F58A-4194-A4BD-3AE406887263"/><topicref href="GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita" id="GUID-B9C4372D-0B72-4C68-92A7-0FC8D0497DA8"/></topicref></topicref><topicref href="GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita" id="GUID-9992D789-5E87-4B9E-AA8A-9375C0B36816"><topicref href="GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita" id="GUID-9624D846-FFA6-425E-A64C-263951AD2FB3"><topicref href="GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita" id="GUID-700D8730-1DE5-4599-9670-DCE49DC0109D"/><topicref href="GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita" id="GUID-F5B42F64-2326-43F7-B5CB-4AACB7E332A1"/><topicref href="GUID-85372267-C352-4389-8FC9-32B8E1622BC9.dita" id="GUID-8D229C67-A79E-4D89-A40F-35501C444CE1"><topicref href="GUID-6F78B032-00EC-4638-8B65-88CA99075B4F.dita" id="GUID-E31357CC-895E-4212-9E83-263E277512CD"/><topicref href="GUID-788031A5-75C1-420E-9E2B-71E09FF08ADF.dita" id="GUID-E023D4D3-6964-4A9B-AA7B-74AF9DD815BF"/><topicref href="GUID-C8674786-6C09-45C2-BA5D-4F69EBD8E42F.dita" id="GUID-4A5A868D-7997-49B8-A098-A4AAA5BF5BDA"/><topicref href="GUID-BB149ADF-3F4C-426C-8852-78FF4C144AD5.dita" id="GUID-16A61973-D751-406C-BF1F-3948313C0ECE"><topicref href="GUID-96CE7427-83DB-47DE-83FB-A65920EE0319.dita" id="GUID-72722481-F0D0-4723-8A60-60356D65A76C"/><topicref href="GUID-FF6846AA-7E8B-40DC-B6EC-32A8550F4942.dita" id="GUID-F9F9ED57-522F-41C3-B927-16D7387BF79A"/><topicref href="GUID-189DA86A-BA77-4314-9597-E3C92B3C82D9.dita" id="GUID-E0020B84-89A0-4306-B521-2F964BE11270"/></topicref><topicref href="GUID-C7589C93-B517-4251-ACFB-B03E07993242.dita" id="GUID-A18BF955-9A87-4B38-A253-B83C5C568E7F"/></topicref><topicref href="GUID-2016EF4B-F001-5EB2-8095-6048582511D6.dita" id="GUID-9EF54517-99CA-4C86-A0E3-C2074CDB5A70"><topicref href="GUID-CF6014E9-FB59-4715-B245-5826090DDF28.dita" id="GUID-41DF6D9C-AA90-41A4-813E-CD96D8D2596F"/><topicref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita" id="GUID-904083F9-6DD1-4961-B1A2-6958F4A6D35B"/><topicref href="GUID-38BE7105-309E-5372-98EE-BCA0ADD0ACBA.dita" id="GUID-B7D3A03A-6A25-4DE4-B296-D99D21DBB596"/><topicref href="GUID-5777D16D-71FA-5929-9557-4C532C59ECBF.dita" id="GUID-ED698BAE-D431-48E5-9BD6-DCBE4C1B6322"/><topicref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita" id="GUID-5640B7F9-38FD-4B4A-A650-7338BDF97439"/><topicref href="GUID-BBC49BE2-5147-5988-93FD-9CECF90BB223.dita" id="GUID-EA452B15-B8A5-4A17-8780-C7670302D999"/><topicref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita" id="GUID-F50B1C01-3465-4612-83FC-8377B2CD004D"/><topicref href="GUID-86086CA3-9A2E-4024-BE80-1763614A5079.dita" id="GUID-24601C5E-124D-46D7-8683-70F2622030DE"/></topicref><topicref href="GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984.dita" id="GUID-D7BE438B-F0C2-403A-ACA7-5A51C79A00AA"><topicref href="GUID-4008963F-F4DF-4628-97D4-5B005D699E4B.dita" id="GUID-2EE5EA67-813B-4021-8C5D-A6FA53898502"><topicref href="GUID-FE76E172-6B94-47CC-9551-6DD62C04368D.dita" id="GUID-D1965428-E6A8-4C11-A14F-68BE8EA6D41B"/><topicref href="GUID-0C02D927-0B06-49BD-8738-149DCDDB23FC.dita" id="GUID-25977E53-161E-41FD-A0EC-2C77B52546ED"/><topicref href="GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27.dita" id="GUID-EA258902-2C3E-454D-983F-23833183BB26"/></topicref><topicref href="GUID-3B7D05F9-2BCA-4B53-AE9F-99B0B3B7C4A2.dita" id="GUID-150F18F5-7B9E-471B-8587-026455CBEF11"><topicref href="GUID-006C503D-1E52-450D-A4DA-8C19B141E09F.dita" id="GUID-B647DAAC-2E91-4BD3-82AD-A5127508BB6E"/><topicref href="GUID-E2B67F14-EC4E-41B6-9F8E-AB58B9E8D7B6.dita" id="GUID-7750E992-D9D1-4ACD-B95E-E6F30CFA51E7"/></topicref><topicref href="GUID-89C83394-5F37-4AE5-AC5F-6006D2DD47DA.dita" id="GUID-2806BBE4-B3AB-4FCD-84CF-2E21E17957B6"/><topicref href="GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD.dita" id="GUID-B936E090-B611-484C-8AF9-2218EF89E0CC"><topicref href="GUID-ADB9AD91-37A2-4FE6-B378-C43CD0A7B513.dita" id="GUID-A2D97B61-6133-483E-A6D0-AB4557BBF13A"><topicref href="GUID-209F3620-2361-4AED-9F7A-02E72F9EE8FE.dita" id="GUID-5A4EA51A-4C9E-417D-AA0B-5E63839ACA36"/><topicref href="GUID-AA49FB68-22A1-417F-AB57-9C22CE016B21.dita" id="GUID-83C425CA-7BE0-456C-9F52-5A6DD64C58E9"/><topicref href="GUID-383C128C-15EB-4C64-9A1F-F1EA826323D0.dita" id="GUID-07B9A319-02FB-4B81-92F4-33893E5C8B54"/></topicref><topicref href="GUID-545DA961-217E-49CA-A90E-7A41E2C03A99.dita" id="GUID-02379F57-D8AA-46BC-9E29-9D38FB46B134"/><topicref href="GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563.dita" id="GUID-6D2C983C-D967-4049-BBAC-1A3F11346BD5"/></topicref><topicref href="GUID-41F33130-7968-5016-9ACE-9E9F906118DB.dita" id="GUID-B3E7A72D-6D16-47E1-999E-F82A5FE2DC48"><topicref href="GUID-66C1493D-5B85-558A-9A39-454E6EBA307B.dita" id="GUID-DC348EF0-8B1E-4EC9-989E-5A498A27075B"/><topicref href="GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA.dita" id="GUID-B9244314-056F-456F-81B8-6BE6EACA3DD3"/><topicref href="GUID-186B9876-2A08-5F23-BB49-49EC34C51507.dita" id="GUID-A75EB8E4-AC1D-4779-B0F8-247F516EBA69"/><topicref href="GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B.dita" id="GUID-C0ADB441-0B45-473C-A767-19EABED015A5"/></topicref><topicref href="GUID-539C4AA4-FF3F-4D6B-90A5-677092DBE54E.dita" id="GUID-BBB8B2C3-7F07-4D95-AC9D-66E953C0E053"/><topicref href="GUID-457628C5-2972-4432-A03F-CD8CC0E1B60A.dita" id="GUID-51BCA309-11F5-48AE-9158-9F2C13231FA9"/><topicref href="GUID-80F2DEC8-152F-4681-A9D0-8EB776131313.dita" id="GUID-4DA9C2FB-FBA2-4AFB-B373-DA9479CEFABF"/><topicref href="GUID-B7B7F611-BCA0-498F-BEC1-16B276F680D5.dita" id="GUID-03FD4B96-95CA-49FF-BE8C-D1E9086A390E"/><topicref href="GUID-9D278187-8B5E-581D-9869-EE8861048F93.dita" id="GUID-1F5BEE93-1E79-4BCA-8B74-FBDA76384415"/><topicref href="GUID-E7C41361-C0B9-5341-A864-B59770FB7C9B.dita" id="GUID-3FEB9140-2333-45C6-828C-B561152D21D3"/></topicref><topicref href="GUID-C585871E-BE82-49EF-A4B9-4340A7154264.dita" id="GUID-1327B0CF-D518-4D69-A4F6-24D699ED789C"/><topicref href="GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341.dita" id="GUID-2DBCCA7C-4422-4802-B1C6-B9A966C8F2AC"/><topicref href="GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita" id="GUID-6EB9B68E-FCD8-41AA-B3BF-BDB093F35CD4"/><topicref href="GUID-3EB1C34E-584E-595D-A339-DE170A96AEBC.dita" id="GUID-1478054B-DCBA-49F3-8A9B-01C24F6A672A"><topicref href="GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita" id="GUID-CC6ABFBA-02F1-4E82-BCAB-CD7FDDD619FD"/><topicref href="GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita" id="GUID-A96C44B7-948C-45B0-A516-28ED0D8BEFCA"/><topicref href="GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita" id="GUID-11688315-71EA-4A22-B56A-34E2EAAD2A9E"/><topicref href="GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita" id="GUID-C112B77F-395C-4EF6-A37C-E12A893C0887"/><topicref href="GUID-092C18D4-A525-5562-9BF6-41435E400290.dita" id="GUID-5891E25D-985B-47D3-9AD0-571B6595BE3C"/><topicref href="GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita" id="GUID-F935A321-84B5-466F-866D-55560A5B546E"/></topicref></topicref><topicref href="GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita" id="GUID-415DAF8A-DEEF-411F-B529-25C59E1131F2"><topicref href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita" id="GUID-F00640EC-55C6-4660-8BFD-9D0FF12D3AC6"/><topicref href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita" id="GUID-39A5AAC8-BE59-4917-9BAB-5B601A2869BB"/><topicref href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita" id="GUID-528EC858-97E6-485C-97D2-BF1D33B3C726"/><topicref href="GUID-4492D5C1-C64E-5561-8A3F-8D887603B6FB.dita" id="GUID-06B737AB-90EF-462C-B65F-CD7A948CE5F0"><topicref href="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita" id="GUID-B18D3DD0-518A-4620-A1A2-0FAE59C3A636"><topicref href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita" id="GUID-F68B8EBB-F80E-41BA-981D-8D5642E872BA"/><topicref href="GUID-C9D4D586-58BF-5676-A53F-9C3A51101430.dita" id="GUID-464286E5-20CC-4A5E-AF3D-DF6182C0AACC"/><topicref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita" id="GUID-489EC5E8-D858-4C95-AC90-6EEE6F0D2960"/></topicref><topicref href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita" id="GUID-1E2BB9C5-EFCB-40BB-9076-200F53E4370A"/></topicref><topicref href="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita" id="GUID-F5C37AE2-942A-4AAD-AF03-2FE2AD3C457A"/><topicref href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita" id="GUID-962EF538-A21B-490E-B2DA-09818FC84AA7"/><topicref href="GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita" id="GUID-5A56EF76-307F-4D50-AF36-3D9BDFE50B6B"/></topicref><topicref href="GUID-E21287EF-7211-590B-A1E3-E0B37069FCB2.dita" id="GUID-DD935600-943B-4DD3-BA0C-A9E2983A4393"><topicref href="GUID-6565B222-4036-5C3D-8319-4CDDA3F2098D.dita" id="GUID-A925010C-7A40-4418-8C2A-00E7F2F2F132"><topicref href="GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita" id="GUID-FF656A49-1C77-4F1A-B480-5E4BFDEE2CBC"/><topicref href="GUID-8B37D53D-77E1-58C6-9A44-3376A450228B.dita" id="GUID-065A16D1-ED4B-499C-9683-2E692A96C9C0"><topicref href="GUID-BE70DCBF-366A-5054-B0F1-7FCEF45FC735.dita" id="GUID-7AB76C13-E1E2-4642-B0DB-2D84E59285B4"/><topicref href="GUID-A4ECB450-02DA-5E85-91AC-4C8BDE0B9B58.dita" id="GUID-21AEDA55-670B-4676-B979-C2AE62058906"/><topicref href="GUID-8F6D6934-8FF0-5045-8AB1-74384BE792EA.dita" id="GUID-9CCAB090-254A-4AB2-9ED7-319095BF5928"/></topicref><topicref href="GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita" id="GUID-8F90D05A-1977-4BB0-A8F6-28C044B7EF31"><topicref href="GUID-29AE56A8-DA08-5FB3-89F1-26B4308336BC.dita" id="GUID-182CB3E0-29A8-4EDB-80D7-FD681F32BE49"/><topicref href="GUID-21740D07-5F49-5D9C-9FEA-92958AF3805B.dita" id="GUID-DB9CDE57-0EBF-4E64-9AAF-D5885293EC45"/><topicref href="GUID-B4039418-6499-555D-AC24-9B49161299F2.dita" id="GUID-884FC18E-E56B-4933-9591-A59D37931DC4"/></topicref><topicref href="GUID-04F076C4-AFFF-571C-8B73-B8589B58EC56.dita" id="GUID-CD16AFFA-127C-4148-8964-79C15C195354"/></topicref></topicref><topicref href="GUID-440FDF7D-B9A0-5767-9FF8-412803C0D2A9.dita" id="GUID-01062172-7AD9-4B28-A8D9-732FEE61897A"><topicref href="GUID-08CEB0E8-7E94-545F-AA0C-E27CED08C167.dita" id="GUID-BF6EE0B3-2B82-4A2D-9FB3-B84F85833A07"/><topicref href="GUID-6FCB023F-E9E0-5C3D-A8BA-92B1B4733258.dita" id="GUID-DD7B19D5-3BB7-4EBF-AB09-CAB9410EDE3F"/><topicref href="GUID-39FA0ECE-D403-5F02-AC5D-7BC8E1669E8E.dita" id="GUID-79E29AA4-8B5D-4104-A589-750929C0376F"><topicref href="GUID-B661DFBC-9779-597D-A1DA-4FE085DAA61A.dita" id="GUID-1499EA6E-FA5B-404A-80A6-054C8D90A6C6"/><topicref href="GUID-44927609-CFD1-5D09-BA78-7A5AB981DD2E.dita" id="GUID-5FCA6B82-80E7-4F65-9991-5BEE66B235E8"/><topicref href="GUID-3BC54F46-5F81-5F2D-ACF8-E8E0A0D5A345.dita" id="GUID-D00A2495-BC6B-494F-A6B7-AD121980D110"/><topicref href="GUID-1261F3A3-6F27-5A85-81FF-A6858F03F711.dita" id="GUID-A3DF1B7F-1C7D-49CA-A6F6-FC2F88E589FB"/><topicref href="GUID-95954813-A4BC-5557-9E42-EB1AB1A6F381.dita" id="GUID-9E8FFEF3-C4A3-4AE9-AA9D-3EBF943D7C4C"/><topicref href="GUID-2AC1C0B6-0405-5F1D-A813-39DA35808182.dita" id="GUID-07775CE3-3C9D-40EE-B2BD-02A26DC0EF2C"/></topicref><topicref href="GUID-F7C9824F-0598-56A1-AC2B-24904E997588.dita" id="GUID-D1705B0F-A32D-48F7-982B-5B8315E9137B"><topicref href="GUID-F51062B0-90BB-5659-9F23-2FF25116D78A.dita" id="GUID-F0CD86FB-12CD-4360-ABDD-4A047591895B"><topicref href="GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB.dita" id="GUID-D0278C91-EBAF-4B0D-B29A-536DAAA72777"/><topicref href="GUID-C90FE253-B88B-5F01-AC8B-E89249083C93.dita" id="GUID-B57DAC1C-F1B5-400D-B524-36B0ECB0A373"/><topicref href="GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9.dita" id="GUID-13EE7B9A-40D7-4DE9-907B-0BAEB3BCC663"/></topicref><topicref href="GUID-3C2E0C1A-DC7A-55F7-8005-39CEE71CD0A0.dita" id="GUID-4FA1DE86-19DD-4CA2-AF15-F634D5D19140"/></topicref><topicref href="GUID-7EFA2113-3C4A-5C52-AC28-BBD512466302.dita" id="GUID-FDE214A5-4046-4951-BDF5-610896E94063"><topicref href="GUID-F1BDE1DB-2749-52F4-AC9B-74A5D9A32A67.dita" id="GUID-7BDCC81A-1909-4755-911F-B1E6FFD5492D"/><topicref href="GUID-C5E99BB6-0CBE-51AE-882D-37D004106A2F.dita" id="GUID-50FD3C2B-D8C2-492E-A3D2-9F866E3C78E4"/><topicref href="GUID-30DBE93F-1255-533F-9B02-4E19E248D065.dita" id="GUID-34E0B0EF-C730-457F-894D-E53C90E1216D"/></topicref></topicref></topicref><topicref href="GUID-94215E49-605B-51BA-B215-10BDA1A0C013.dita" id="GUID-58A550A2-FDD8-4901-97D8-724910B4251D"><topicref href="GUID-651DA4DA-F8DF-5412-970C-86F45C877FDC.dita" id="GUID-914701B4-7CCA-4AB9-BC5F-CD74ACC8C69E"/><topicref href="GUID-743D2832-E73A-5184-A85D-306B2A6FFACC.dita" id="GUID-A61AB00F-4288-48B5-AA34-00C44026273A"><topicref href="GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita" id="GUID-AAB24505-2D86-4A65-974A-2C60273C64BB"/><topicref href="GUID-DFF9DFC5-1BE0-5CA2-A2B9-27FA2DECFF59.dita" id="GUID-D3879DCB-959D-4AB0-AB03-D059FA0EF927"/></topicref><topicref href="GUID-F18D0E06-2FB8-5339-AF31-02CC7D5A8010.dita" id="GUID-CC73BD28-9398-479B-B0CB-2376391301E0"><topicref href="GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita" id="GUID-0DDF09D9-A8C7-4119-97B1-751E005A9F6A"/><topicref href="GUID-863AD171-B40B-5056-96B1-A7B995DB3524.dita" id="GUID-BE97F163-235B-4EF6-A11C-A0C15278BE9B"><topicref href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita" id="GUID-B3B59E9D-48F6-4D30-ABCC-55707972F22A"/><topicref href="GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E.dita" id="GUID-51772D7A-2C45-4CBB-B8A4-9B2EE2B4FB47"/></topicref><topicref href="GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita" id="GUID-84493B86-8F95-443C-A576-0E0617FCAEAB"/></topicref><topicref href="GUID-D049392D-2DA4-5E9C-8E3E-FEDF79BC5086.dita" id="GUID-B27AC8E3-34F8-413A-8550-64CEFF8226B5"><topicref href="GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC.dita" id="GUID-BB9F3DAA-A5D9-42C3-8A96-369197CAFA12"/><topicref href="GUID-74C1C345-823C-5CD5-8FC5-214A55734E94.dita" id="GUID-445D1557-9FFF-4162-978E-C0C04B452FE3"/><topicref href="GUID-00363030-AAE2-5231-8407-AC609DA0F496.dita" id="GUID-F3960D5E-A208-4AA5-9CC9-9316E4122849"/><topicref href="GUID-8B938FEF-4D70-4589-921C-C99667193E20.dita" id="GUID-58BFD6EC-9B1E-44B6-9D37-24583DF027D0"/></topicref></topicref><topicref href="GUID-94D67092-5EB3-4D83-A164-CA628F2E2DB0.dita" id="GUID-F89D03AC-E834-41FF-B6C4-7EF15ED7C9BB"><topicref href="GUID-1AC942E2-58C7-45C1-A122-3D07407A07D9.dita" id="GUID-00AAD562-9864-4526-8B40-B6FAD6F2048F"/><topicref href="GUID-66CF3E59-DA9C-4287-8A49-5655E83E2F84.dita" id="GUID-95A17C62-4C23-4D71-8527-2799621B5839"/><topicref href="GUID-9057474B-1ADB-4761-879B-6A03B61E6E00.dita" id="GUID-1833D388-51C5-4736-BDD3-86B0BF761E12"><topicref href="GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita" id="GUID-CA34D4B0-591D-4789-B427-7501B1A46865"/><topicref href="GUID-7FD05006-09C1-4EF4-A2EB-AD98C2FA8866.dita" id="GUID-FC032260-0E7E-4853-815C-0264B10A714C"/><topicref href="GUID-01E7AE98-024C-4119-87D0-5BB9D53DA119.dita" id="GUID-7B5962D7-E57E-4AAD-AFBC-80210B06851B"/><topicref href="GUID-BEC25BA5-A994-48B6-B781-26900B04C8BE.dita" id="GUID-E6E58642-561B-4F17-8AD0-7AE36C80DAE2"/><topicref href="GUID-3D10DAFD-BE83-4892-B5E0-2ED7CF047788.dita" id="GUID-4F18E991-9E1D-40CB-9465-CE7EA7F4FD15"/></topicref><topicref href="GUID-51FF9F99-8005-4480-9645-64476B953C57.dita" id="GUID-68B8CB65-E8E7-4C4F-A1FD-F1443F52CA0F"><topicref href="GUID-A9A8C0C1-4B89-40FE-917E-7D4F7387DDA9.dita" id="GUID-478B86DC-3CB0-4A34-B863-8ACA0EE8951E"/><topicref href="GUID-817C43E8-9169-4750-818B-B431D138D71A.dita" id="GUID-7C656ABC-1E9B-40CB-A1B8-4DFFB0A9EFFF"/><topicref href="GUID-D8D30C70-C6ED-4E4C-9815-BF7993262ABF.dita" id="GUID-E8A992CD-363B-4CA0-B2F2-98ADE9FC1D21"/><topicref href="GUID-09D1DB3C-DA2D-4E16-8EEB-2195F765BE22.dita" id="GUID-DE1F0D7F-9494-413E-9D12-29D59F9A3A01"/><topicref href="GUID-5329C067-60B8-4E0E-A2B3-9423B75E189D.dita" id="GUID-3D2AECE7-8107-4F23-85F9-0D1794AFEA17"/></topicref></topicref><topicref href="GUID-324107D1-6E0B-56DD-BDC0-7296F688A9CF.dita" id="GUID-50E94166-B01D-441F-A17D-437959F15A83"><topicref href="GUID-62E8D3DF-7DF8-5FCA-8D7D-AA30EB0B8962.dita" id="GUID-C50D4CC5-C890-491E-A8BA-1A9A10F619D0"/><topicref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita" id="GUID-C25AF5A5-A63A-4DA7-B264-9D0F0313B409"><topicref href="GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita" id="GUID-AB86D305-94B8-4F60-9DD6-5D0B956B5AD3"/><topicref href="GUID-5E6B86D0-8C9D-58E9-83EC-F76DC2A8E7B6.dita" id="GUID-0B64B9C4-34F1-4AF0-938E-C907EB5A993B"><topicref href="GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D.dita" id="GUID-4240E234-F3E0-4076-9C92-21ED3817C716"/><topicref href="GUID-9E0CBB66-A573-5BBE-9788-95B313325C7E.dita" id="GUID-B2406A16-69DA-4EA0-9ABE-FC458CDD8B01"/><topicref href="GUID-5DC419C8-FD1B-534F-B33D-0D4EBBC6B506.dita" id="GUID-B93322D8-CD2C-425A-B724-BB183075E3C4"/><topicref href="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita" id="GUID-AA93DE9E-37AF-4D71-84A1-B57DBAED4EBD"/></topicref><topicref href="GUID-110A0151-5719-51BC-8506-C18BE57FB400.dita" id="GUID-0B3EE3ED-28C3-44B9-BBD1-554921CC4D41"><topicref href="GUID-41D80358-473F-5B50-A09A-4F5601EAC4A9.dita" id="GUID-7A6B9831-51B7-4E12-BBBC-827BE88EAA8E"><topicref href="GUID-FF410602-8408-555E-B918-C0CF484535E7.dita" id="GUID-3659C91F-CEE8-4DC6-B876-E93179813006"/><topicref href="GUID-7F4692A0-1801-5D91-8F28-06075AC45DE2.dita" id="GUID-A1FD34FE-1582-4A35-9929-5F18D6069CCD"/><topicref href="GUID-E10A3336-9C4C-59A5-B94F-6CECA92FFB9F.dita" id="GUID-59E044EE-9AA1-4045-9109-A8B7AB52F161"/><topicref href="GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6.dita" id="GUID-3A8F2112-D8CE-4357-A758-94CC41C4C913"/><topicref href="GUID-93F53961-9DA3-5D01-A881-D28E0EBF8B3C.dita" id="GUID-D78BE8E5-2B0D-4FEB-AA7D-A654972DD3B7"/></topicref><topicref href="GUID-57F29787-B425-53EA-9DB4-372B77543584.dita" id="GUID-40FC3DE6-0500-4A05-B611-0C3E1C1EC7EE"><topicref href="GUID-F94CEC6D-C602-550F-9B12-856493F3C509.dita" id="GUID-2D7625A8-80B9-4442-9CEB-52AFE6EB8CC5"/><topicref href="GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita" id="GUID-CA0C721E-B4C8-46C3-A93E-6B4131DCE143"/><topicref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita" id="GUID-E8D05415-1C7F-4DB3-9E35-1EB06D738349"><topicref href="GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita" id="GUID-56C69A6F-102C-49DF-BB37-300D6F279578"/><topicref href="GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69.dita" id="GUID-B79FC5FE-AD58-49B4-B00C-CC7230AFF0FA"/><topicref href="GUID-39186342-960A-46A4-BC35-851F53665FA8.dita" id="GUID-FEA163D6-C2ED-4A9D-ADDE-7B1998E9DF96"/></topicref><topicref href="GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita" id="GUID-69044203-0C94-4544-A5E3-035FAB2D5A54"/></topicref><topicref href="GUID-DE9CB4F7-5129-5450-A6D6-9B0BA253FC81.dita" id="GUID-C27B1CDC-3093-49BA-A4F1-F1498287BF72"><topicref href="GUID-6E144992-AF5B-5CA3-9CC1-CFB5941103A9.dita" id="GUID-F5F75942-8844-404B-9B9C-2D25DF2A1933"/><topicref href="GUID-E3A80D62-09A5-502D-AB55-6AB2A5623465.dita" id="GUID-200A8BF7-E638-472A-BDB6-2113304223E0"/></topicref></topicref><topicref href="GUID-C7786266-FCE7-5A96-AA92-9A71486D3B6C.dita" id="GUID-063A7355-418D-4930-BF08-879F8BF7A73B"/><topicref href="GUID-E59A469E-A2B5-5DF0-BA7E-C50D4A38CCAA.dita" id="GUID-B16BBBC7-FAD5-4C91-B1C6-6F53509294DA"><topicref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita" id="GUID-7014AC54-674C-44EF-8DE9-579341871C29"/><topicref href="GUID-E4E656BF-E5F7-5125-AE88-60C3E9FCF0D2.dita" id="GUID-9EBEE0CB-1ECC-4C32-8011-9F220A641E72"/><topicref href="GUID-711C387D-E10C-5469-872A-5B2BDACC9B91.dita" id="GUID-1B73FC3F-48CF-46CF-BF71-6A04AB2BBC1D"/></topicref></topicref><topicref href="GUID-D02B5AF1-B1C3-560D-9654-971A5CC1A904.dita" id="GUID-0872B240-806E-4897-B74A-196630520E5A"><topicref href="GUID-D80D6D46-27B7-500E-A83C-63EF038606BF.dita" id="GUID-966CBF91-5E8C-477E-8AA4-8F5659BDCF0E"/><topicref href="GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F.dita" id="GUID-28364793-39C2-4254-B772-BB721279DF57"><topicref href="GUID-8B57B733-C418-5623-AFAD-34935FED1743.dita" id="GUID-4BF5DB69-3A42-4F2A-B2DE-EB4B59DC2DDD"/><topicref href="GUID-F61D1710-2D52-5B9B-A25F-6DFA606DAC0F.dita" id="GUID-03643266-7AF6-475E-B3B5-6D8F06DADAC9"><topicref href="GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140.dita" id="GUID-593960FB-469E-4855-975A-6AC3FF5B4A14"/><topicref href="GUID-9D871368-ADB9-5588-A1F3-39A432F4F32E.dita" id="GUID-2E747FC3-3E7B-4D65-B552-255B26D1E82D"/><topicref href="GUID-E8266924-FA52-5171-BD73-423A46227A74.dita" id="GUID-CB24D409-183C-4B73-9ADA-3859768F13C8"/><topicref href="GUID-0D2456BA-0737-5AB4-9C5E-F8CD70F4DCF6.dita" id="GUID-75C14091-5B04-48BA-9504-F7D61539C7B1"/><topicref href="GUID-D8900275-FCD4-5296-A27A-75A1C5744D7F.dita" id="GUID-AF606E44-8C46-4FBA-8F5A-277C69660D54"/><topicref href="GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita" id="GUID-C7B00373-4C91-4298-BA6E-1467043E1699"/><topicref href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita" id="GUID-A0128BDF-55D6-48F0-BC7B-76E75D983180"/><topicref href="GUID-E6AD5C21-493F-59ED-9617-B348013BDCE5.dita" id="GUID-9CBB5426-CEA6-47C7-A805-13B79D7E5033"/></topicref><topicref href="GUID-85AA0FD4-3BD1-50A7-B241-AE3908ACCF30.dita" id="GUID-5A88A4C9-B9B5-4498-B622-B08613945F52"><topicref href="GUID-8C94EE15-82EA-4A95-9044-C3404F95BD51.dita" id="GUID-13D96727-70E8-4CAC-B5B6-269EFFC37B85"/><topicref href="GUID-685CF352-372F-5393-97AF-1FA17DC57BA8.dita" id="GUID-B6EFD428-A6F8-4C09-BE1B-A2EA4DE74FB3"/><topicref href="GUID-7C6D3479-2159-5A9B-9970-0B3E625442A6.dita" id="GUID-AD1ADBC4-B172-4FBE-939A-A2702D2C50CA"/><topicref href="GUID-24D509E8-CF46-58D3-85E9-27DA7AB22012.dita" id="GUID-0B04B137-4F3A-4A03-8A11-A5BBA6002DA0"/><topicref href="GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita" id="GUID-DA987C72-97EC-4FA5-8A1E-48D7992FE483"><topicref href="GUID-A6A6BC5B-4988-45B4-863D-0E3733B77EA2.dita" id="GUID-016F7F76-4B64-41E1-BFF7-A74C1B79FE58"/><topicref href="GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita" id="GUID-86E5BA2E-4859-451D-85DD-9A7617DE2D30"/></topicref><topicref href="GUID-2B6D7221-A23E-562E-9D9C-5EC197F1CB78.dita" id="GUID-D5679D47-0BC7-471F-A3BD-91D8F457C882"/><topicref href="GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita" id="GUID-8C7387B5-C14D-470B-86BC-53AEA94AA345"/></topicref><topicref href="GUID-7953ECE8-3935-57E1-86C2-D53132930B71.dita" id="GUID-16443216-A93C-4B41-9B00-C5BFED8F917B"><topicref href="GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita" id="GUID-0C8DECC7-4C00-43FF-BB55-A7927A48E261"/><topicref href="GUID-98903A01-CD04-5345-84AE-2E440CE06E11.dita" id="GUID-F6FE2208-FAA1-4ABE-8C72-483DC47BC7F8"><topicref href="GUID-E736B50D-F671-5CCB-A245-BA9791ADA395.dita" id="GUID-7268C7E8-0381-434C-AB76-5DFB6075B48E"/><topicref href="GUID-4820CA37-982D-57BC-8829-498192801B1E.dita" id="GUID-F1E712AD-4A7E-4475-A807-36FB8F92344F"/><topicref href="GUID-1DF62CB5-FB81-5802-9071-E492B0C81065.dita" id="GUID-9B97EC44-86F1-44B4-92E7-EB180DE68468"/><topicref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita" id="GUID-77A90C1D-A86A-4DC1-8FD7-1D51C9E27392"/><topicref href="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita" id="GUID-32D508CA-3C7E-4466-9CE8-2B2CED48C436"/><topicref href="GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB.dita" id="GUID-BBEF4F83-B8C4-4454-BF89-255FBFA5798A"/></topicref></topicref><topicref href="GUID-10A50B7C-63DB-599B-86C1-17989595CBD2.dita" id="GUID-F409C5E6-6DE7-4EFE-810B-0742AB168134"/></topicref><topicref href="GUID-D98E984D-69A5-5BA8-89E7-A7CC9FD0C584.dita" id="GUID-7ACCD80A-9E2F-4CA1-ABB9-ECDF605D1228"><topicref href="GUID-42C94E3D-93DE-543E-A0D2-8B705C668BE0.dita" id="GUID-853CA862-3BCE-4E6F-81A0-0F29022A0B5C"/><topicref href="GUID-3B2FB34B-B4FC-5273-AE35-DADA2FA4C419.dita" id="GUID-BFF6DF9E-31E6-4CDF-8651-57C29C27A87B"/></topicref><topicref href="GUID-4B8AEE55-1601-5CF8-9DD1-492DAE18F0F8.dita" id="GUID-AF585C59-6647-42D9-8C96-7C375A4B8669"><topicref href="GUID-ED6ED5E6-5A95-54F2-B5B2-6145A10F44BE.dita" id="GUID-E0DA1D6E-4A50-4DD5-9A05-DC749D987132"/><topicref href="GUID-634F4945-D92C-58D6-BF68-B8A770B2EF17.dita" id="GUID-B6D5BFD5-013F-458F-B29E-E8817D593041"><topicref href="GUID-79370E26-4549-5F31-99A3-8D0341F58F08.dita" id="GUID-13E02D95-1412-40D7-B68D-F968256351C6"/><topicref href="GUID-3AFA592E-ED32-5AC6-B331-E7191CF2D5E2.dita" id="GUID-B3E32A7E-61A3-48BF-A0F3-4869832004A7"/></topicref></topicref></topicref><topicref href="GUID-28AD51DC-C101-5E6E-9EC3-C2B61400D8CD.dita" id="GUID-BC8F28E8-B00D-48D6-A280-47C627604356"><topicref href="GUID-D60B55FA-D8C1-559A-9D99-48845BE32A6C.dita" id="GUID-732401D5-1D3A-4D7A-9A41-08A6BE770AF8"><topicref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita" id="GUID-E54D0A21-CE4B-49F4-9F11-6F65D6CD3CBF"/><topicref href="GUID-ECE93783-F571-51DA-AB92-EDDA8618A85C.dita" id="GUID-FC314CCA-F48D-4990-8E90-645BE8B29DB7"><topicref href="GUID-B1D5B680-00E3-5702-985A-94256180E2D8.dita" id="GUID-696975D2-78E9-4CFC-B12A-0C0C53772260"/><topicref href="GUID-A18153C0-230C-51FB-9384-A48BB4E42F03.dita" id="GUID-0A0578ED-7DE3-46FF-BF26-7E8DFB779070"/><topicref href="GUID-01677FF9-8FA1-5F0D-8223-46EDD20E3075.dita" id="GUID-12F6D0A5-4742-4EE9-8D5A-355A6495CCBC"/><topicref href="GUID-FC24C65C-0DCB-5E07-9A68-9001D34664DD.dita" id="GUID-263FCAF4-58F3-4F5F-9140-8775DC94C9D9"/><topicref href="GUID-96AB1D5A-932E-55BE-A025-F01608546B99.dita" id="GUID-D2E9FB5D-84D9-401E-9E40-417A119C7135"/><topicref href="GUID-38C37BA5-B972-5C8B-B8DE-B2FECF2A3C3C.dita" id="GUID-7B73ED0B-F5C1-4035-908C-128DC7C865DA"/></topicref><topicref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita" id="GUID-F400491F-9F2F-44F4-AD13-AD6457EBAFF0"><topicref href="GUID-B419D99E-8312-5336-9693-3ED8DFCD0559.dita" id="GUID-E3832880-D51C-41CA-9DA8-F0E87948499E"/><topicref href="GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482.dita" id="GUID-08655BE8-8E87-497C-B78C-6E49BA0A3BC5"/><topicref href="GUID-3799F0DA-B99C-55BB-B44F-63B971DF1865.dita" id="GUID-D32C7BC1-20E6-47E3-A796-B016FAD1B015"/><topicref href="GUID-7984F8F7-DC7B-56E0-A5DA-071A3D87714A.dita" id="GUID-1B0077A9-9E18-4BBC-9228-54C1DD90ED27"/><topicref href="GUID-5872329F-2B52-5F52-83C1-205F2F933877.dita" id="GUID-472EFC3C-08BD-4B3F-9BED-6C0B65949AF4"/><topicref href="GUID-B9F07057-4B31-5FE8-BE4C-98CC8151CD29.dita" id="GUID-589A5E1C-161E-4DC9-8AEF-078FC6D53E1A"/></topicref><topicref href="GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita" id="GUID-54AABA27-605B-4E31-966E-1464F3E5A3FA"/></topicref></topicref></topicref><topicref href="GUID-C5103B39-6F67-47E3-938A-32933E75F98E.dita" id="GUID-2106C302-CC60-488A-9322-D9EEE789E9D5"><topicref href="GUID-05DE2202-C0A4-4612-8EA0-7DA8B3DEA331.dita" id="GUID-779E85B3-2CA2-4ADB-99BE-BA99DA9A340F"/><topicref href="GUID-A2031A61-3319-4FBA-BC71-AC1327182053.dita" id="GUID-EF9EC978-AEDF-4475-84F0-60A3BEA272A9"/><topicref href="GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E.dita" id="GUID-4B95E342-5522-4078-86A0-4CF4B2BD94A4"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-D89215E3-2762-460E-8EA4-0B190B9E39AE">
+
+<topicref href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita" id="GUID-17CFBB4E-0DCE-4B46-B6F7-F3ABE6BFE940"><topicref href="GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita" id="GUID-A21939AE-1007-4B6A-A46A-46E9BE20F9D2"/><topicref href="GUID-D0C84E1D-A625-4F79-8515-399B8153727B.dita" id="GUID-C7AFC90B-187E-4C3F-8D08-420EB175C38E"/><topicref href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita" id="GUID-F4D2C398-2D26-472E-97BF-18909B0A038C"><topicref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita" id="GUID-4F9FD7C1-07BD-4669-9D18-565738B1E496"/><topicref href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita" id="GUID-2D758D24-E616-4619-8196-D363EAA5F5BC"/><topicref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita" id="GUID-6E19C595-A644-4C0E-9660-C5D4423C17D7"/><topicref href="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita" id="GUID-841AC5A7-76A5-4441-A416-65128B70740F"/><topicref href="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita" id="GUID-B11DA7C7-54D9-464A-86B5-478035D6D98E"/><topicref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita" id="GUID-1804375C-673E-4F74-9A41-DFF34E1198BC"/></topicref><topicref href="GUID-47851718-8DCA-57F5-8520-7044048A5852.dita" id="GUID-E7ABC07D-DB97-421F-8C75-FDDECCBE60D8"><topicref href="GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita" id="GUID-D5EBE5CC-9A41-4C82-9A95-A4CAB3332A9C"/></topicref><topicref href="GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita" id="GUID-794F76DE-0BA0-40A9-975B-99ED31EC8034"><topicref href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita" id="GUID-67D466EE-4F8B-46E6-A196-587B76C15414"><topicref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita" id="GUID-CA95299F-C6CD-43B7-8867-F467AC79F276"/><topicref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita" id="GUID-AD07BADC-1657-45B1-A4FB-E1FEB3D4EA3F"><topicref href="GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F.dita" id="GUID-39CE57A2-643A-4643-A980-9CFB0692543A"/><topicref href="GUID-29272C8D-A0F6-4861-90FB-D1637D0D8CD8.dita" id="GUID-C61C3F9D-2D6F-489D-B27C-6051289905DC"/><topicref href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita" id="GUID-313029DA-C91F-4BC9-A12E-308127A7EF40"><topicref href="GUID-0174CE72-AEF6-5DA9-A9C5-074781BD544F.dita" id="GUID-DC54AEB0-6076-4C55-938D-0A2A58845EE4"/><topicref href="GUID-E5CDDA05-CD86-5C44-B9DA-3249D9C14396.dita" id="GUID-7E0EA02F-8E40-4A42-8631-960868790468"/><topicref href="GUID-53E1EBAB-758B-58DF-9568-8CC682C0F74F.dita" id="GUID-3BD4C09F-1CC8-493C-B4F8-67A6291FB954"/><topicref href="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita" id="GUID-87CCF995-135D-465A-BC38-0CD3C7B72E0F"/><topicref href="GUID-9189A3F5-3016-5AF5-9D84-4E066A62D8DD.dita" id="GUID-B2B07891-B3E5-42AB-B650-CC1B18745A57"/></topicref><topicref href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita" id="GUID-5DBBDB60-AE31-4AE2-8CB2-8B97D4FEB9AE"><topicref href="GUID-40113BA1-FFDD-535C-B487-8C9F569E2BC7.dita" id="GUID-D53F632B-1A08-49B2-AA1C-A8050A657294"/><topicref href="GUID-D68E0A64-0E8A-5C52-9C5B-93BA3B80C200.dita" id="GUID-B795DD0C-F44E-4654-BCFF-603395621893"/><topicref href="GUID-08A6A034-5609-58B0-8EA7-943B2A937B40.dita" id="GUID-27AAB492-7DD5-47C1-AC10-930A6ABB0E9A"/><topicref href="GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205.dita" id="GUID-0F13113E-7EA7-47CD-BA53-4BB946FAECB4"/><topicref href="GUID-CE7CF024-4898-551A-841B-38EC57A3EC82.dita" id="GUID-28D7FA0B-5658-4E55-962B-944A9868C2D4"/><topicref href="GUID-7AE4913D-18CE-5F17-A6B1-6E3F6975A178.dita" id="GUID-82F1E809-7B58-4FA6-94E8-2BF39765F448"/><topicref href="GUID-91874A4A-57A4-54F9-966C-7D65D3782220.dita" id="GUID-971FE3A2-FFAA-4708-8D6B-3DA068830BAA"/><topicref href="GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A.dita" id="GUID-18D7E475-3F52-4045-9D2E-D1F076600B24"/></topicref><topicref href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita" id="GUID-12905854-AF7A-4056-A440-4D775CC4A0C1"><topicref href="GUID-667E7F90-D6C2-55CE-AE60-6C938072FB9C.dita" id="GUID-A8EC2066-17E3-4B4D-AD59-6589CA0012B6"/><topicref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita" id="GUID-D29A4BDF-1EEA-4C35-9A85-CF7228E3C36F"/><topicref href="GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita" id="GUID-8DA69DAC-7272-45B9-89E0-34103270076F"/><topicref href="GUID-E8DF12FC-DCA9-57EA-833A-C1E8D6DAF405.dita" id="GUID-44796B87-2170-45FA-8F50-A7462EAC4A39"/></topicref><topicref href="GUID-08427065-B8E5-5194-B095-3B5213836BED.dita" id="GUID-362EB068-9B3E-4887-A2DA-E80978BC8012"><topicref href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita" id="GUID-50F5E99C-DD94-4DC6-90D6-6C712D310B4B"/><topicref href="GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7.dita" id="GUID-714414EC-21DB-473C-A674-740F060E8F45"/><topicref href="GUID-7750D4BE-9FBA-5D29-806D-B80911170ECD.dita" id="GUID-22BAAF8C-F2D6-4A2A-8F19-302FD9E2C45B"/><topicref href="GUID-EF87F8F8-1521-5C50-85A9-94038A99021C.dita" id="GUID-0A4CCF01-3BBC-460C-AC36-E5DE95638E21"/><topicref href="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita" id="GUID-FABF044C-7368-4FD2-96C6-1FEED10C9608"/><topicref href="GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita" id="GUID-91D4A1C7-948A-4EF0-9B24-33C3251527EC"><topicref href="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita" id="GUID-6F122974-BDB8-4D22-84D0-797D18599FD1"/><topicref href="GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita" id="GUID-7A1DF802-DAE0-4C0E-848D-F32E72370C1C"/><topicref href="GUID-C60DC070-572B-5960-B394-550426FDB909.dita" id="GUID-8A4E5B0C-74AC-4F99-A515-080056A38FF9"/></topicref><topicref href="GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita" id="GUID-030E6C84-CC8D-4ECE-8D3C-8A570AD8F75F"/><topicref href="GUID-B830A1F7-9220-5879-80BE-C494A4CD155B.dita" id="GUID-FD98DE97-30B9-4A2B-A868-C076B03C4398"/><topicref href="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita" id="GUID-1BB75933-D571-4E71-A062-4288507A9407"/><topicref href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita" id="GUID-097D1201-0DA1-45ED-AD11-1920CE93715C"/><topicref href="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita" id="GUID-9D377737-D55C-4732-992C-3CF460FBB24D"/></topicref><topicref href="GUID-1C025957-258C-54C0-94A5-AD60C14E6D76.dita" id="GUID-EAF216F0-52B0-4F10-9A43-77124739C9A0"><topicref href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita" id="GUID-FF0A1AB0-23F4-4121-A66C-86417185B581"/><topicref href="GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita" id="GUID-5BA6829A-E906-4FEB-92A3-B009B390B6EC"/></topicref><topicref href="GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F.dita" id="GUID-52DAC3B4-BDB5-4CA1-BB36-EC767B5EAA2D"><topicref href="GUID-365BB311-8FC8-5DA5-B80D-C22D4AB35AEE.dita" id="GUID-86F09BA2-0A4C-4A0D-8EF1-B9D7C954078B"/><topicref href="GUID-2C17B7CA-39A3-5E2B-9B8E-239158A94F5C.dita" id="GUID-91CE20DC-40E3-4BD6-8616-298C316EFAF3"/><topicref href="GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF.dita" id="GUID-7FB1810D-D2DD-4CA0-9163-3FF6B521C87D"/></topicref><topicref href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita" id="GUID-8B2BC58B-D7F0-4AC0-AB5A-96EEEC733747"><topicref href="GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE.dita" id="GUID-6EC83A2B-1C86-4560-839E-EE0A5DCC370A"/><topicref href="GUID-37CB6D0C-41F0-5C52-A925-978FAC30D311.dita" id="GUID-FA17E6F1-6098-4252-8D20-33F9130E9A43"/><topicref href="GUID-FD622CE6-42D0-534D-9D0E-7AED5453F35A.dita" id="GUID-117C1EB0-3E7A-4010-AA88-7B22C48D1AEA"/><topicref href="GUID-EB82A2C8-EF92-5276-B503-687DEBF82EA4.dita" id="GUID-A01FC9CD-9911-4F67-9BCF-AA6E49ED8A42"/><topicref href="GUID-04C294A2-C63B-55A7-82DE-379BBFA05EF9.dita" id="GUID-63DF322F-C49D-4CCE-A4CD-6ADEE63161E1"/><topicref href="GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C.dita" id="GUID-35227F9C-2C20-4628-AED1-B708F37B5DA4"/></topicref></topicref><topicref href="GUID-862D3B3B-3369-5FF4-B81A-ED5BE415B035.dita" id="GUID-99986B1C-206E-4E6A-97F1-825B5993351F"><topicref href="GUID-E29CAFA8-523D-57D2-AC1B-D6D01741550B.dita" id="GUID-7449337A-1CAD-49E6-B3E5-32496D6EB83E"><topicref href="GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita" id="GUID-5513E601-D6CE-4203-814A-D784E0A3111D"/><topicref href="GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita" id="GUID-3ED7FF66-BD64-4521-B3E5-D3D06D02B2ED"/></topicref><topicref href="GUID-85E1E45B-DD05-5B7D-84E7-9911E0A3E3CC.dita" id="GUID-12579CA7-4C67-4943-8262-E43CC98A7C8A"><topicref href="GUID-AA02BFA9-E62E-56FC-BF22-8FE092ABD9DA.dita" id="GUID-BCC0827D-E7E1-4678-A217-76C2B5E64714"/><topicref href="GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita" id="GUID-B33DD6F7-4AF8-4306-9B2F-75D21A557D5C"/><topicref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita" id="GUID-BE68B6E9-70A2-4AA7-BE70-A99E3F4CE4FF"/></topicref></topicref></topicref></topicref><topicref href="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita" id="GUID-96D864DC-4EE2-4012-AFB5-6B0860A90312"><topicref href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita" id="GUID-DDB1916E-FF20-4BCC-A976-0CCD73691CCF"/><topicref href="GUID-1C3888E3-33D4-5057-8819-CB6D97398031.dita" id="GUID-9A205768-297D-41FE-AF27-BEFF38F4A6CE"><topicref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita" id="GUID-A3DEE520-D6C0-4365-AE4C-82BBE71B6A10"/></topicref><topicref href="GUID-30CAE438-6CC7-5532-8727-781B8E83574A.dita" id="GUID-35D3DF90-375B-4F1A-8E28-8E6532C51188"/></topicref><topicref href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita" id="GUID-1C6B7980-7817-44EE-94D8-29F51F16F1E5"><topicref href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita" id="GUID-F7A39DC8-781E-42C8-9548-FBB0E7D4D5C6"/><topicref href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita" id="GUID-F5270BD7-B4D9-49DB-8189-364115B53090"><topicref href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita" id="GUID-E50810DD-31FE-4E92-9F5A-3BAAC72B4C91"><topicref href="GUID-30066989-4A0F-5000-9488-AA7E50E2B871.dita" id="GUID-BD06C760-5167-4729-899E-1F24F2973450"/><topicref href="GUID-A3B5381F-7D81-52D5-97DE-CCF56C2A49A9.dita" id="GUID-56F10436-B54C-4C19-8058-E47BA5CB743D"/><topicref href="GUID-33180489-18DE-5705-A2DF-E44148C3A820.dita" id="GUID-688E9BA3-54FF-40C6-8536-5212373A2B45"/><topicref href="GUID-46C56A16-E548-59B1-88DF-3DAF3FF68751.dita" id="GUID-2B685E1F-3527-4879-9788-783866D1AD78"/><topicref href="GUID-2BC2A35E-634D-5F70-8279-C1822C0E4F3F.dita" id="GUID-ABDAFF9D-3A33-43C6-B346-492F89284149"/><topicref href="GUID-248D480D-2406-5FFD-8E3B-09CA67D1BE69.dita" id="GUID-DA0EB9E9-B8D5-44AE-B095-06E474C289DC"/><topicref href="GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita" id="GUID-D1239C71-6840-4A4D-9366-983EF341A692"/></topicref><topicref href="GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita" id="GUID-A8A1C72D-B3FF-4F20-A940-684327CE7941"><topicref href="GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF.dita" id="GUID-58560B39-205F-4587-ABF9-53BEA89B615F"/><topicref href="GUID-F5DC1A03-6F07-5E60-B912-429DDC820875.dita" id="GUID-03468D80-0492-4005-BFB9-E2874648D449"/></topicref><topicref href="GUID-8CEB9CF3-2F33-58E3-B948-565B61A37BC3.dita" id="GUID-5A838AC4-EC2F-4346-8F14-81E1089B7F5D"><topicref href="GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita" id="GUID-C2C9DEA8-2D17-4CD9-8FA2-4C91661B2BC4"/></topicref></topicref><topicref href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita" id="GUID-46B8ABE7-6CBF-424F-9C51-6615822AD1BC"><topicref href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita" id="GUID-DB596A41-288C-4179-A5CA-A9F3F9EA5D05"><topicref href="GUID-1903F18A-F095-5494-AF32-423AE7F27252.dita" id="GUID-F5578861-8A86-4D8E-A82A-DF4F5046EC0E"/><topicref href="GUID-BD463EF4-2538-51AF-8946-BFEC902A2DD0.dita" id="GUID-67AF6355-D1D4-4F2B-B593-B8DB664DFA76"/><topicref href="GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita" id="GUID-A4FA019A-1553-4E7C-A782-5D1D9A521F82"/><topicref href="GUID-D38C47AD-ED05-5693-A734-498788B9B85B.dita" id="GUID-2CE5E690-9CF7-459C-ACE2-1D04A44086C1"/><topicref href="GUID-A5693758-495B-598E-A514-24C48D459BB6.dita" id="GUID-0A26C9A6-3047-4870-8045-FDB01D88043A"/><topicref href="GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF.dita" id="GUID-1BFF33FF-EC60-471A-B6D6-6F8313F5D145"/><topicref href="GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195.dita" id="GUID-52FB5D33-4AC5-4EC9-BB28-6DD3F908AA3D"/><topicref href="GUID-EF49C43F-E9ED-5B4D-B9C4-376B9A4E3FA6.dita" id="GUID-D0526A44-1837-460E-B237-382760B0290B"/></topicref><topicref href="GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita" id="GUID-31622DDB-5BF0-41B8-8549-B8B11ED37D4F"><topicref href="GUID-9E6822BE-BDF0-5710-9E60-A8DB14622C55.dita" id="GUID-E8694090-B05E-4910-8931-318CE08293D4"/><topicref href="GUID-F9471A5D-D239-5B24-A116-2B5B2C1F5C61.dita" id="GUID-DDB278F8-0380-4830-8B76-7C234D58557D"/></topicref><topicref href="GUID-9BF04EB2-7050-51D2-9559-66BC47ECC5B1.dita" id="GUID-8866B6A3-9D88-4C48-9B0C-7DF88406F1B9"><topicref href="GUID-6AE2F937-69BB-5330-A2B5-44D37FA1DE16.dita" id="GUID-DF807474-F6B5-4A51-8793-2B683F13D4BA"/></topicref></topicref><topicref href="GUID-B6D4AEE9-5C17-51D9-BBDE-7CCB5218279D.dita" id="GUID-7765BD0C-4C60-4C73-B703-0CF602E5DF16"><topicref href="GUID-0AB9B221-38AE-576E-AC5A-C4C106E3D93B.dita" id="GUID-A575FC4D-72D0-41BA-B22D-5BB66DA83438"/></topicref><topicref href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita" id="GUID-86A4E8AD-5BC3-4033-8286-41FB7B08749E"><topicref href="GUID-E9FF94D2-AFFD-54A4-A6C2-00929BC70DB0.dita" id="GUID-90361D7C-AB3D-46A6-9D53-28A790289987"><topicref href="GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D.dita" id="GUID-86FBAAD0-6FF6-4059-95FD-851111552420"/><topicref href="GUID-75B0B7C7-37B7-57D1-8EAA-8303A915A9DD.dita" id="GUID-8122BFE4-B0B7-4E3C-A56C-F2DF7A9D1D7D"/></topicref><topicref href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita" id="GUID-BE980C96-6EBA-4563-BDC2-DC727A067416"><topicref href="GUID-3584C6F0-0B9E-5490-9CDB-86FA218A2E26.dita" id="GUID-9C0BEF18-A23B-43E9-A213-97840E9630F5"/><topicref href="GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita" id="GUID-8774D1EC-AA62-4816-9EB3-427C3AAC2BEB"/><topicref href="GUID-4BB03B97-9AD0-50D0-AAE5-B7AB2415716E.dita" id="GUID-D72A67E8-12D6-485D-BC85-5E3A5F5F8DF9"/><topicref href="GUID-294E84BB-65D0-5275-848E-1960B201A371.dita" id="GUID-201A40B4-5D71-4E61-A7CA-13DD2A76AB95"/><topicref href="GUID-E1FFE8AB-9C4C-51DB-AC08-F0A18C33D735.dita" id="GUID-2E24CB91-46C6-418C-BA74-6EE67ABD4902"/><topicref href="GUID-C3FC557E-72B4-5714-AE21-930F421204D6.dita" id="GUID-D19CD617-C456-4C49-9058-098C61F29972"/><topicref href="GUID-0ECBFCA7-D398-53CE-BAF4-86CFB0124A0E.dita" id="GUID-7FC69884-610C-4349-A3B0-2314B287B55C"/><topicref href="GUID-9BF78E98-E376-5EE4-9350-C77BF9F540E6.dita" id="GUID-574C7B4E-D481-4D9B-8977-145AC72145F0"/></topicref></topicref><topicref href="GUID-E82FABA9-9CCC-548F-99DB-EF2B9036B405.dita" id="GUID-C5B14700-819C-4C79-93CF-11F996E367B2"/></topicref><topicref href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita" id="GUID-1DE8EB0B-A721-4E58-B593-F78158147E6C"><topicref href="GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita" id="GUID-19DF4DC7-E36D-4041-A928-BF208427A43A"/><topicref href="GUID-CBC43846-22BB-5AAF-89FE-3CF4F11B76F6.dita" id="GUID-178C85CF-8929-4D90-BA26-1E95274E0A8C"><topicref href="GUID-12D5C140-DFDA-549B-9CCF-EF7488B832AE.dita" id="GUID-FFE8D9EF-4448-4210-83CF-0F9F5B6A7BD3"/></topicref></topicref><topicref href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita" id="GUID-F68CDF4A-FA98-4D9F-BA02-3253A5564335"><topicref href="GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita" id="GUID-B2C36C83-9630-4B2A-A1B3-5BD9D20DE33F"/><topicref href="GUID-C2E24953-3D83-59FB-8B7A-C850474406DB.dita" id="GUID-8E687CE1-8F5B-41CF-85FD-0A8F357A2092"><topicref href="GUID-7EFBEEAD-3E74-5165-B305-313F7DE4BEB4.dita" id="GUID-90037DDA-E1A3-495B-8908-39BA3BCFFACC"/></topicref></topicref><topicref href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita" id="GUID-BBF29462-03DD-454D-8196-AB8A00CF9756"><topicref href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita" id="GUID-41941790-F1B6-4A81-976A-9D21C9862BCE"/><topicref href="GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C.dita" id="GUID-2BD90A19-9A3A-4AF0-A66F-4CCF8EE429C8"><topicref href="GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita" id="GUID-E34C8B0A-9393-4DD9-B72E-D988B0F0FC8C"/><topicref href="GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita" id="GUID-2960B77D-F18B-4851-A340-FE06579E2796"/><topicref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita" id="GUID-02D8E727-1FB0-4A89-8538-7456552E8A22"/><topicref href="GUID-46813F51-370B-5853-917C-6916925A347D.dita" id="GUID-3B216687-C3B1-4265-B842-B285D1A9D30F"/></topicref><topicref href="GUID-FFA5956E-0632-42F5-A2F9-0503888EF72B.dita" id="GUID-DBD9A61C-CD7A-4F68-B0DF-D654434FB573"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-9FEA179D-0B4C-4618-97C8-A74B691A8953">
+<topicref href="GUID-C0D38954-2FC5-4E8B-BC11-229464DCF16C.dita" id="GUID-40684C06-DB06-4374-A3E8-B00CB9A83478"><topicref href="GUID-1E8904E3-43AC-5332-A2EF-F11F5728DBE8.dita" id="GUID-D9029AE9-1C64-479E-A8CF-78E6078A36BA"><topicref href="GUID-B4A54501-4AA4-5ACB-96D7-4427C7752639.dita" id="GUID-DEE4D094-5C46-43A1-8D66-E6DADF33B902"><topicref href="GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita" id="GUID-DF3086D6-7211-45BA-9F35-D7C2E094D6B4"/><topicref href="GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9.dita" id="GUID-00067C9D-13F5-4D13-A35B-140712B5AC48"/><topicref href="GUID-81253CA0-2B57-5A3E-9ACD-469D4B922047.dita" id="GUID-7197BA15-9D7C-437E-BCE5-779FD49BE27D"/><topicref href="GUID-D9EE6C26-B0F0-58B9-BC17-4E18136187F8.dita" id="GUID-B3CBED71-DCEB-4924-B501-22E54DC7663A"/><topicref href="GUID-F9184A82-A467-5022-B02F-2FDF52258618.dita" id="GUID-FF76FA17-BBCA-4F03-B549-C1C2DFCD6A37"><topicref href="GUID-E50FC36D-949A-42E0-97A6-64D336DF8057.dita" id="GUID-1418830E-C48B-4C9E-957D-E3214CF989BC"/><topicref href="GUID-AD6A057D-D514-4145-B7A6-E43959543E92.dita" id="GUID-4AC2E740-3862-495E-A727-E717A81C3CE4"/><topicref href="GUID-5A9CBB5B-DE6A-42D6-9244-3F151B79BDCD.dita" id="GUID-77C10FC9-6089-44E0-8EBA-3EFD256077EC"/><topicref href="GUID-C3D309CB-EA9E-4D8D-8C88-3EBC5695385F.dita" id="GUID-DCAC2B9E-573E-4CF0-AA48-2F75A0631D4D"/><topicref href="GUID-00552575-AB10-4CB3-A37B-D83AE5975811.dita" id="GUID-3C88229E-9F3C-4D85-A434-D540FC8C8EEA"><topicref href="GUID-F411736E-09FE-4F46-8185-DF013E950069.dita" id="GUID-5E9874F0-71E4-4789-AD7A-E4E57FD18C51"/><topicref href="GUID-EA9C4CF0-F39B-4FBB-924D-F78320E08F2C.dita" id="GUID-14AA10DF-1A73-4390-9B75-F83B109D3782"/><topicref href="GUID-CDF9F944-814E-47EF-A6B5-E75300C228DD.dita" id="GUID-45D15814-7B59-43D0-903E-0325B7ECF8E4"/></topicref></topicref><topicref href="GUID-A88F4A4E-49D7-4F92-8047-CA287C54B964.dita" id="GUID-8CF69858-9C17-4AD5-8040-6B07B7E4FA28"/><topicref href="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita" id="GUID-57062DFC-D058-4008-BD45-6B5112CC67AB"/><topicref href="GUID-F6CF2920-9095-568B-B332-D5F4A05BD23A.dita" id="GUID-F7ECD36E-4BA1-4899-856A-5BBAA78F2E1E"><topicref href="GUID-625FFD05-5660-4A8B-A543-BABB5E7A5503.dita" id="GUID-A5504C93-FDC3-4349-BD96-69A43A1EA4DF"/><topicref href="GUID-675D02F1-E7B1-4869-9213-8D0C2E0CC50D.dita" id="GUID-710914E2-5A98-421B-BD2A-06F5FF4299B0"/><topicref href="GUID-B432A48B-46CE-4FD4-880E-DA15AA304CAA.dita" id="GUID-63F31DF3-22E4-40C7-9850-798ED1CDBC17"/><topicref href="GUID-7800A00C-5BD3-46FA-9D0A-9DF29A5C057E.dita" id="GUID-8D6D1A4B-4B37-42C2-A818-EDFAC6A7548D"/></topicref><topicref href="GUID-487F5A5B-E2D1-5138-8063-82940879D3D0.dita" id="GUID-BBFDAA96-1B69-46CB-9411-ABF1206EAD18"/><topicref href="GUID-E14C1D1E-B7E5-5244-8BE7-386C542AAB58.dita" id="GUID-ED9EC398-E4D1-43F7-852E-D3F1D87137B9"/><topicref href="GUID-F066FEA3-94E7-5D79-B427-E247A2D1EBB8.dita" id="GUID-061D7B39-D5F8-49DB-A24B-3E57332D6CE2"><topicref href="GUID-4ACEA6B0-CA7C-5751-A1B6-283287552A31.dita" id="GUID-82C82CD0-F240-4416-8293-DDB5EF380F8A"/><topicref href="GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita" id="GUID-1A517A43-7CD0-4513-9419-D9726BD3FC18"><topicref href="GUID-20B2C96A-9742-4CB0-A37F-19B65765E826.dita" id="GUID-1402EF73-42FD-417D-871B-D2513CF15C3E"/><topicref href="GUID-0E785F9A-F349-4941-B0B1-CFEE8A961464.dita" id="GUID-9BEE046B-039C-4257-8CA3-73692903A888"><topicref href="GUID-765A6D87-5C2C-4E79-9EA5-9F8930062ED0.dita" id="GUID-869C6E23-2AA2-4BC1-A651-3D6FB85C3FF9"/><topicref href="GUID-1D9EA46B-CF0B-4779-97F9-5BECA3622777.dita" id="GUID-71B00777-8866-46DD-A829-DFA8774C3896"/></topicref></topicref><topicref href="GUID-8C5A65E6-D753-472F-B885-FD0409589036.dita" id="GUID-96AF18A1-20D3-4FAA-888A-7B7919EA11C8"/></topicref><topicref href="GUID-1A28F76D-ACEF-51A3-96DF-9DFF2F5C2ACF.dita" id="GUID-D73AD6D1-248A-48EB-B8AB-1E1A72AB7E92"><topicref href="GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita" id="GUID-22A829FE-2AD0-4AE0-B4D2-E2E97B49C6AB"/></topicref></topicref></topicref><topicref href="GUID-939C0EE6-0931-4898-842B-9D0C9D61DD2F.dita" id="GUID-70E38AB7-652A-429E-AD1E-470EAD6B07CD"><topicref href="GUID-C0E7CBC4-C525-4CA8-8D21-E7E2ABE396CE.dita" id="GUID-59BAD668-3900-492A-9865-E9A10C46DC13"><topicref href="GUID-956E7DD6-C7FA-5F0A-9C86-D7FE58373A25.dita" id="GUID-067C64D7-5EB5-48A6-9C7A-CA6F97232588"><topicref href="GUID-EAD6B365-DCB9-51AD-AF21-0B8262B468A2.dita" id="GUID-D63820BE-8F19-415D-A31D-1F3F4F96DBA5"/><topicref href="GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita" id="GUID-A0ECBA19-A462-4F78-8664-EA6D84E150B0"/><topicref href="GUID-402B5633-1E3A-5F24-8C4F-DA5F04D2557C.dita" id="GUID-055672EA-DF5E-4CB1-BA2B-5CA28D2754CD"/><topicref href="GUID-B36F47DC-0A62-5B8F-A761-2717B921A339.dita" id="GUID-DB8FD704-D44B-473D-9526-8DCC6C019604"><topicref href="GUID-7514DD31-E82B-49FD-916F-A9DF12D97204.dita" id="GUID-C549AB26-38A7-48B1-8D34-05C95BC316CD"/></topicref></topicref><topicref href="GUID-945FAA13-A302-55F5-917C-EAD2C9D960E9.dita" id="GUID-6E332AEE-061F-4891-898D-2619D9FC48E4"><topicref href="GUID-EDA831F7-7248-5C00-B6BE-B7F44097C9B6.dita" id="GUID-9E6F172B-FA3F-4EEF-876C-BE8E1834C2BB"/><topicref href="GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950.dita" id="GUID-0EFF40C8-C565-47F3-9CE7-0F9A7BA31FB7"/><topicref href="GUID-E97C2A7E-8E8F-58E6-99D4-288589385B44.dita" id="GUID-D59EF965-AF34-46F0-858B-42AFF24F1BDC"/></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-A2F8BAE0-A829-4966-9410-ECFB913629D6">
+<topicref href="GUID-E3D2A6ED-8192-563D-8966-DD96B3AF1783.dita" id="GUID-BEEDC56D-65E6-4A0E-B0BB-0FC61C0158AD"><topicref href="GUID-0DF9E318-BE97-531E-AB39-A7B5E8787C87.dita" id="GUID-FC07B074-5550-4086-A938-6CAC8B6A32FC"><topicref href="GUID-A63025D1-7FD4-5120-8A1F-537D6B70103D.dita" id="GUID-F3064AF3-2C68-4B2F-B2C4-79A35561B162"><topicref href="GUID-2E085BAD-AAD7-5D1A-89A7-287EE42D1069.dita" id="GUID-5CBB69F9-A7C9-4D69-9211-237DDA8A7D8E"><topicref href="GUID-F6F9B2AC-A47E-5B0B-A1E2-EE2B31B59F2A.dita" id="GUID-BB42D8C5-DD96-4770-82DD-AEB3325C3226"/><topicref href="GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita" id="GUID-09177199-BEA9-4F56-9159-15AD55026FBD"/><topicref href="GUID-8B28B8BB-6935-5332-B4D3-4183FDA3D202.dita" id="GUID-D75E45C4-1AF4-4353-A4C1-9AFD6515E78A"/><topicref href="GUID-56EE13F0-CAEE-5E1C-99CD-2FEC8C3BCA6B.dita" id="GUID-D12C89B2-6811-4E8F-9BBF-4DD9A3F7E0ED"/><topicref href="GUID-C302BD91-12AB-5888-98AC-33EB7A146312.dita" id="GUID-4045504D-0D82-40C5-B26C-A4C28DED7984"/><topicref href="GUID-BC32CC7C-99BA-59E8-A268-42F411CF336F.dita" id="GUID-50153701-E9B9-452E-B92B-A1094E853398"/><topicref href="GUID-F45EA14E-F857-5D59-BFBA-E2F563287359.dita" id="GUID-A78015FC-0041-489D-A5F1-98AEBA9B4C56"><topicref href="GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F.dita" id="GUID-1B74B04F-38F8-451B-82DD-793758278D99"/><topicref href="GUID-6FED83FE-1360-5468-B938-0BDFF7D62C43.dita" id="GUID-3C717E7B-7491-4FA8-B4B7-38D783C0F107"/><topicref href="GUID-591552AB-D708-5CB5-9597-A0AF3D303178.dita" id="GUID-6108B5B6-7305-4632-8A4C-9F1ED9325EE4"/><topicref href="GUID-4FB4CAD4-52BD-5DC1-9B20-34DA77F70A9D.dita" id="GUID-5372B9E9-0574-4ED9-BA76-36DF8EA2C093"/><topicref href="GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90.dita" id="GUID-A8C0655C-BF4A-4E6E-ACEA-179CD4A80593"/><topicref href="GUID-6163197B-7983-5FB7-9B92-02E490A900FB.dita" id="GUID-483EE44B-3365-49BB-92A3-A156AF3FF73C"/><topicref href="GUID-B0492A3A-A7F6-5F41-AE5C-4B31AC85769B.dita" id="GUID-B443370B-6B56-4F01-91E6-DC9EC3E49C43"/><topicref href="GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03.dita" id="GUID-EAC98612-78DB-497E-BB14-1DCEE81FB89C"/></topicref><topicref href="GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A.dita" id="GUID-A38D1387-F66C-4741-AEBF-E38C694BAFC5"><topicref href="GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72.dita" id="GUID-F47CF45D-B4B3-4209-877F-9846C40904D2"/><topicref href="GUID-07045409-4714-5800-89EF-73590D4F0F37.dita" id="GUID-B789D2CC-6C0A-48FC-B6FF-744E83D3FF88"/><topicref href="GUID-2364CAB0-E19E-5EBB-837F-F6484642C2E4.dita" id="GUID-6BFF3904-14A7-4CBD-8C93-FBBFCAA1B783"/><topicref href="GUID-82C53275-6F7C-5B3D-9A07-FA4801D42403.dita" id="GUID-D25FA182-726B-4BBD-8303-3338B17DF2DC"/><topicref href="GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431.dita" id="GUID-9E77D025-C8A7-45B3-A0E2-3C5596F2FAAB"/><topicref href="GUID-59ED6D14-0976-58AE-8DDC-73F051866406.dita" id="GUID-7FD9BD3F-257D-473B-968A-B2C576C671CC"/><topicref href="GUID-8C1DF426-C85B-5124-970D-96119491926F.dita" id="GUID-5FCE899F-5C42-48C1-B899-E827E4899EB9"/><topicref href="GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B.dita" id="GUID-282327FA-4940-401A-BC3A-C7FF726DD828"/></topicref><topicref href="GUID-E3F403EE-717B-5EA6-BC4E-6840097CAC10.dita" id="GUID-F64766AC-7BE7-4507-A7D1-CC0503DD3C7D"><topicref href="GUID-2F64B579-73D3-548A-9104-16483AF77BCB.dita" id="GUID-A926CFA1-2572-4B86-96C2-F2B74AF05E53"><topicref href="GUID-6180B291-1862-5F1F-AF05-85E42B37B172.dita" id="GUID-84319761-9B74-4117-934C-070388A6A268"/><topicref href="GUID-DE17BEA2-C821-50B8-9128-9C4D35D95599.dita" id="GUID-3BBCCBDE-84CE-490E-A952-7D9AEC29C70B"/><topicref href="GUID-9452D60C-CD3E-570D-885F-F329264AB6F4.dita" id="GUID-702FA6CB-7E52-4D5B-A4B1-5C356480F090"/><topicref href="GUID-763A2636-D448-5353-9E31-F61FE7EB39DA.dita" id="GUID-1105E58F-06E0-4C0D-9280-00CD93002E23"/><topicref href="GUID-74C7B8E1-0A02-5242-A8C9-5CDD410102CC.dita" id="GUID-B773E7DC-A333-4B30-81D3-143C99134557"/><topicref href="GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3.dita" id="GUID-F642EA40-6F1F-4AD9-AD9E-1CC44D0C3103"/><topicref href="GUID-577F42BA-299E-5071-8C7A-FA0CBADCECAE.dita" id="GUID-A912F76E-EF15-46C0-8C92-091E17C86C9A"/><topicref href="GUID-63C60154-2A50-5A39-A188-515A607F498B.dita" id="GUID-824DE92C-BA12-43AA-9C91-6E28D84093CC"/><topicref href="GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697.dita" id="GUID-06DEEC83-E704-4C6A-9C1B-6F37E92D1816"/><topicref href="GUID-D37E0579-0F3B-5EE4-8264-1358E493672B.dita" id="GUID-88ED2285-9F19-4E83-AD9B-6043E9C690B1"/><topicref href="GUID-E1410365-7254-5326-B3F7-D7100D31E59F.dita" id="GUID-93A0EA57-A5CF-4EC3-BF64-8E3AF3AAE89C"/><topicref href="GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041.dita" id="GUID-B33F5706-1783-4C34-98EF-17A4A2942E0D"/><topicref href="GUID-F50003D0-402A-59E1-8F6F-8C999DC81735.dita" id="GUID-05E865C7-DFC7-4A6C-B88B-246B98BA6D3F"/></topicref><topicref href="GUID-59DB0115-053A-5D23-8C40-E2428C096BBC.dita" id="GUID-4C61BD8E-3397-4C36-9B1D-C7D6A861B6C3"><topicref href="GUID-27C933F7-4634-57C8-B3D2-45C5563FECA4.dita" id="GUID-71804319-E7BB-48D2-B070-F694B49E5EB6"/><topicref href="GUID-5B2D6FE7-A09A-5DB1-A0B6-D1A1397D845F.dita" id="GUID-3C32477B-A44D-40E1-B6A8-B1F1F9E61DBA"/><topicref href="GUID-02E674F7-86F1-5A9C-8189-F4CEE80D9FBD.dita" id="GUID-569E8D3D-0D96-44CA-AAEA-19327C5C7058"/><topicref href="GUID-DE9E76F8-AE17-5962-A2BB-5006C6AB5C82.dita" id="GUID-325D5400-9DBD-4F97-831A-C91F7A98BA5C"/><topicref href="GUID-DD3411FE-D95B-5153-8C90-442618920E20.dita" id="GUID-A0B975A3-11BD-401F-ACC3-503FEC7791B9"/><topicref href="GUID-0AF14EE0-D4FD-53EA-B7E5-10724E3FA0DF.dita" id="GUID-4D5ACAF1-3A37-48D8-AA09-B91B54C7DE4B"/><topicref href="GUID-07FA8EC8-151F-574A-89F2-34C4AE2D1F0B.dita" id="GUID-64A9DAFE-8E0B-4F72-A779-DE6FC904427E"/><topicref href="GUID-059326DB-E7A4-5CB8-BCA7-FF0C71D9D1C7.dita" id="GUID-30B021BF-4B49-4FB4-A8F0-DA31D9F9AB30"/><topicref href="GUID-D664843A-0741-5E38-88D0-D8BEC9C732EB.dita" id="GUID-B3F52D8C-64BA-4793-B0AA-431F5F65FD4D"/><topicref href="GUID-1A94AA49-3954-581B-92EE-C9BDA253508F.dita" id="GUID-F8B844AB-6B49-4BEB-9D1F-5B6584506CC5"/><topicref href="GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita" id="GUID-F8022622-E1A2-4E2C-8D49-E05A4B8B1952"/><topicref href="GUID-D1ADAF9A-62BD-5B68-980F-524FF440FEE1.dita" id="GUID-EF13EAD7-9488-4359-A7A2-B258DD8D8EDA"/><topicref href="GUID-5875C752-12A9-5819-90D9-CAAE48F1A5C5.dita" id="GUID-6F9AC6EF-E95C-46CC-92EC-31E6D0ABD414"/><topicref href="GUID-0446FD98-E0A0-5E6A-B056-AF54172B7453.dita" id="GUID-08B07016-8C77-427B-BEAF-619BFA692D70"/><topicref href="GUID-FF0330E8-81CA-52F3-AD60-89360B74B25D.dita" id="GUID-6D158D9E-CC35-4551-92F7-0D1BDEB3F28D"/><topicref href="GUID-82074583-C3A3-5168-8225-C60D52F403F0.dita" id="GUID-6768B080-D90D-4E93-9860-0DFB87CE0118"/><topicref href="GUID-B70E22E6-CF28-58A0-9D1E-C9A12D1FBC72.dita" id="GUID-F31BB81C-6BB8-4D12-A421-E46F56B3D9E9"/><topicref href="GUID-4F8B0675-AC8D-529A-903D-DA31C8236A98.dita" id="GUID-DCC4BFB0-F6D8-4141-B0D8-115516B0662E"/></topicref></topicref><topicref href="GUID-E41C4E77-C48B-548E-A2F5-14FA5CC68982.dita" id="GUID-C85E2377-C747-4B74-96C2-4563F850B5AD"><topicref href="GUID-978DFDB1-4B20-5302-A9E4-9C7404A7CB16.dita" id="GUID-A05294E9-E1DB-4C9E-B9B9-E04A23CA3ACC"/><topicref href="GUID-0EECEF02-EC6A-53D5-8B27-C0732DA0160A.dita" id="GUID-E7D43357-D305-4AFF-990A-8DDD55D0CA37"/><topicref href="GUID-FD5C6057-C6D3-5C1A-888C-7B7A3C89CD67.dita" id="GUID-DA43E93B-D240-4AF6-B4AA-F90966FE6AFD"/></topicref><topicref href="GUID-E18584A9-4F16-51D0-89CB-96275A588F54.dita" id="GUID-D68A23D3-A4F9-4C69-A16E-4442E0C43552"><topicref href="GUID-9309D482-8931-58FC-9B34-D0E5E942E404.dita" id="GUID-14A2A48A-A6A6-43DF-AB2F-C6FC0A7D74CC"/><topicref href="GUID-426BADE5-64CF-525A-B4E3-21C40D7B4AB2.dita" id="GUID-AA46F225-AB2E-46EF-8BCA-E7085D608834"/><topicref href="GUID-6C07F513-66D5-5901-94A6-9ADA16987225.dita" id="GUID-D6469D2A-192D-4F77-BAE2-3DD99B54A4D8"/><topicref href="GUID-7536307B-10B7-5866-8A21-9DA352DF1928.dita" id="GUID-02B9B871-991D-4CD9-9A20-0A234BE7D7E4"/><topicref href="GUID-4F5E644B-B2DD-5CD3-B763-E134F1916E62.dita" id="GUID-9B1065CB-7A93-4F24-87E7-78C3747072B1"/><topicref href="GUID-947F448A-34D1-570F-9017-ED7B70674FBC.dita" id="GUID-55FDF4D7-94EA-4504-97B2-4C0A8F343B82"/></topicref></topicref><topicref href="GUID-829D80B6-7F14-5006-94C5-2609565D7BCB.dita" id="GUID-9B3D0028-F2CE-47B2-8398-10C685F310E6"><topicref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita" id="GUID-BC43B318-CE8E-4773-8722-4D1BFB577CA5"/><topicref href="GUID-E525E177-1FE5-5845-9BF8-B76D434B838D.dita" id="GUID-3603DB32-02D0-44D0-8F57-D2C978CDCB50"/><topicref href="GUID-A9A49E91-B4EC-5D92-A021-7D08F4ED094C.dita" id="GUID-1271751B-06A6-4E4A-9EFF-3E7823B315F3"/><topicref href="GUID-189FBB0E-0A47-5CCC-9209-DC69E76DE6B3.dita" id="GUID-3BC0F5EC-9A03-418C-9A95-28E1A6DDB737"/><topicref href="GUID-1A9B3BB8-9F68-5C71-9534-A59638BBCD1E.dita" id="GUID-739651A0-D07D-49C9-84CC-99700B2885FB"/><topicref href="GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita" id="GUID-10FD1BE6-F737-46D7-A168-41F1DA321331"/><topicref href="GUID-F9FCE3FC-42E4-5E9E-9AFC-A9B02E2612A2.dita" id="GUID-1DB31CDD-8FFF-4C0B-BFF3-B6EBA2DD5B63"/></topicref><topicref href="GUID-DBF88873-21B1-5493-8EBF-C9071D314A09.dita" id="GUID-AACA078F-F05C-41F8-B5A1-29B5B4617E6C"><topicref href="GUID-A668C70B-1AFF-5D58-9527-8530E2472227.dita" id="GUID-23DC3DA0-A6A6-4C9B-894C-DB86C47FC9C9"/><topicref href="GUID-21C04887-9F9C-5066-AA1D-B30C433CC0AE.dita" id="GUID-E4F452C0-3D16-477E-AEFC-CC352D364F4B"/><topicref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita" id="GUID-1FA56A2F-960F-4B4A-AB4A-848436C8EF41"/><topicref href="GUID-C15F56E3-753C-55CA-B3EF-63B2D139BCE4.dita" id="GUID-B7233F2F-B8AE-4B65-99DA-8AD00B0EB522"/><topicref href="GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita" id="GUID-99ACE707-CC6B-47A5-88BC-47036F65B3B5"/><topicref href="GUID-106B5A31-012E-503D-A972-A745ECADC1E7.dita" id="GUID-738A2F5C-C6C2-43B2-9EBD-F4957C150149"/><topicref href="GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita" id="GUID-89BDC12F-0785-4D29-9C76-C2EBCC04028C"/><topicref href="GUID-506642C2-A14F-55F2-9377-43DDB14F4053.dita" id="GUID-185AA709-9FCF-48A9-89DC-482019CA615F"/><topicref href="GUID-D43BBBF3-841E-51A7-A2B2-0695594C821A.dita" id="GUID-CBE07ABE-4DFF-4AA1-936B-29A6F09E642E"><topicref href="GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226.dita" id="GUID-4A11845F-46BA-4C41-8998-2BCCAE393686"/><topicref href="GUID-F3090A98-267F-5310-83F4-93FD5CB760D6.dita" id="GUID-9EBCF4EA-3FE2-4521-8421-8ED2CC0937FF"/><topicref href="GUID-37D7019C-E3EF-5841-8691-5A865A2B5FD2.dita" id="GUID-330EA479-22F0-4743-898A-6313080F9B33"/></topicref><topicref href="GUID-11EEFB3D-0414-5BEB-9D78-56A4B9154008.dita" id="GUID-E5DBEB31-1201-411B-8789-F93FF097C88B"><topicref href="GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita" id="GUID-CF7A580C-26DA-4D41-8741-0860013CFD96"><topicref href="GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47.dita" id="GUID-6EF017CF-3E4C-455B-86E0-6DF04DA274FD"/><topicref href="GUID-A60BFFE4-E527-547C-AF4D-30BB7A1C0D07.dita" id="GUID-AE832908-A511-466E-BA5E-3042D8B700DD"/><topicref href="GUID-05785721-C090-50C6-BE5E-46EF14222FFF.dita" id="GUID-C01CC076-C084-49A8-82C3-ADBDE9DF5C82"/><topicref href="GUID-6D1A830E-F0F1-5C0F-8EEB-70922C0EF6B8.dita" id="GUID-E89EC2D2-12D5-4D61-80F9-2C8270E14406"/><topicref href="GUID-C501E703-E39D-598C-B962-7A32AC9091DD.dita" id="GUID-4A7C5CBE-EAD9-4863-BE62-15B7D965E8E7"/><topicref href="GUID-2C7AF56F-F741-5C9B-83B9-46C175330ED1.dita" id="GUID-70CD7ABF-CE90-4198-B183-550923D2B348"/></topicref><topicref href="GUID-4C4B6098-38B4-5BD0-8E58-712511EBE074.dita" id="GUID-668BF3F8-B888-4682-A2A0-CE2F34EC51DB"><topicref href="GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B.dita" id="GUID-1BDC4D32-D1BA-4993-8E8F-1EC0CA667206"/><topicref href="GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita" id="GUID-3FE43FA5-C34F-4C1C-B214-50AF6705401B"/><topicref href="GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita" id="GUID-4460BFE2-BAD8-4CBE-983A-55F5B3401292"/><topicref href="GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita" id="GUID-4DF2DDF3-7A80-47D1-8B7A-73BBD035FF5F"/><topicref href="GUID-C85B4EA2-0184-52AF-B097-152E4A023CEF.dita" id="GUID-1C3F40F8-DF1C-4180-AA15-2504A942D4D3"/><topicref href="GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9.dita" id="GUID-7192FE81-433C-4CC8-90D1-FD900EC47665"/></topicref><topicref href="GUID-E8BEE049-6814-543B-8A88-889E434A5D92.dita" id="GUID-9EF108E1-AFD9-43CD-85B2-8F36752DBD31"><topicref href="GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A.dita" id="GUID-2B8301AF-3A72-4381-9DDC-56DD20CFF06E"/><topicref href="GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC.dita" id="GUID-A00490B2-BD00-4F3B-A150-F8E9D1BB33D0"/><topicref href="GUID-4C1F3DB3-039C-57D6-987F-4A26E1E056E6.dita" id="GUID-362EA06B-5C45-4D20-81BC-B01BC6C3B36A"/><topicref href="GUID-F46D5A5B-EC44-53B0-9A11-886735B28610.dita" id="GUID-051088B6-BE50-41C6-B0EA-6A1BA9C41D50"/><topicref href="GUID-9F82E4D3-DDD4-50A5-AB12-50B216B73368.dita" id="GUID-D9E206CB-29F7-4719-8C16-C5125F2F0BB7"/><topicref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita" id="GUID-B5C3ACEA-3230-4102-ADA2-45F9FB1C6399"/><topicref href="GUID-E8F8A9BE-4DCE-5CB9-BFC7-9BC00A7845F7.dita" id="GUID-3A838AB5-551B-4E19-AC5F-762F431136E2"/><topicref href="GUID-A7D95E53-67DA-54C7-B093-995CA9CC39B5.dita" id="GUID-3872E29D-2EA5-42B0-B030-ECA2A8CCF416"/><topicref href="GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF.dita" id="GUID-0623149D-7E4A-4707-9ADF-5DB1B43B320A"/><topicref href="GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160.dita" id="GUID-366DA172-7A13-4DE4-8546-746550749B13"/><topicref href="GUID-3D73DD8F-8D23-5D47-A4F7-3673C993EF8F.dita" id="GUID-57FA9F90-95BA-486A-BC90-FAEE932FBF92"/><topicref href="GUID-B71F0B0C-CFEB-583F-841D-07340DD6B9CE.dita" id="GUID-02532C12-30D2-4000-B65E-4385F28124BB"/><topicref href="GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7.dita" id="GUID-A055327A-9E55-4EDA-B235-9C84FD27C462"/><topicref href="GUID-5B1A7CBF-40DE-56F9-B145-948C6F72B647.dita" id="GUID-013DE055-5BAD-46B8-AB44-EAAD04A77911"/><topicref href="GUID-FD273259-2282-5353-847D-853D483C37BC.dita" id="GUID-C2297F4F-D6D6-4E44-93E5-D9F21C52C089"/><topicref href="GUID-EC21A1A2-FD5A-5764-A69A-18D74090BA92.dita" id="GUID-622367E2-D926-4173-818F-CD928DA27DF1"/></topicref></topicref><topicref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita" id="GUID-BDDB91E3-C0B1-4527-A827-6A996017C2AB"><topicref href="GUID-6468F3CB-7828-5746-A868-AD525EB7D6BD.dita" id="GUID-B27B8217-7CA6-4C1C-AD62-2AFE35B3D96E"/><topicref href="GUID-C642BA79-0E9B-5C62-9DC7-C64759830CD4.dita" id="GUID-7BCAD2E1-6082-4BEB-B931-73D434226703"/><topicref href="GUID-59FFCA8F-5F2C-55F9-B864-AFA1CC18722D.dita" id="GUID-FC1778D5-AA79-4E9C-B546-26BC9F56CB84"/><topicref href="GUID-E3DD768F-752F-5414-9E9A-86E046806903.dita" id="GUID-34BFA2A7-6251-4327-B866-CA1E91D13AFE"/><topicref href="GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0.dita" id="GUID-0DE9CF17-8E3A-4E7E-9F71-BDBB23B1701F"/><topicref href="GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1.dita" id="GUID-5EF77288-7933-441E-AD11-DD1CB86F01FD"/><topicref href="GUID-807B5CEE-CC1E-5A40-911F-3C5D5FA3633A.dita" id="GUID-55CBC3E7-5BD5-43D0-861D-A9AB8EF887A7"/><topicref href="GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041.dita" id="GUID-BFCC1252-B36C-4A18-BF27-5226BCB5C2DF"/><topicref href="GUID-81C1F6BE-B2CE-5A2B-A6D4-DC1ABBBED0DE.dita" id="GUID-BB3AD3C4-0F24-484E-A1E6-8F3CF2AEC48F"/></topicref><topicref href="GUID-D4A78D68-0812-532C-9AF9-85F1483EF3EA.dita" id="GUID-D45756CE-A901-41E0-9242-FEB86534BA5B"><topicref href="GUID-FE888721-C479-5D8A-810F-1A79575A1D58.dita" id="GUID-0B22FEBD-66BB-48BB-BD55-C9ABA1BEB48B"/><topicref href="GUID-D86B83B5-298E-510A-B984-7307CCA1AE1C.dita" id="GUID-CCC17DFB-D62F-4EDE-AA37-03C73646408D"/><topicref href="GUID-0C8389B8-91DF-58A1-A2A1-945A18CCBB10.dita" id="GUID-A52B5B7A-9E4D-4918-A7EB-315F1CE12B3B"/></topicref><topicref href="GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722.dita" id="GUID-F5AB6645-183B-45BF-B5CF-5FFA38F0F944"><topicref href="GUID-7A9FBE3A-D75E-59FC-9ACD-196670F0F9C8.dita" id="GUID-3DC65A67-D767-4B85-BFFE-BEA94C312033"/><topicref href="GUID-6C1E4B3D-0FBF-5CEA-9A30-B4C5CB4CAC3E.dita" id="GUID-6A11C172-AE54-4F84-B422-E7B64B1F9F66"/><topicref href="GUID-8A58670C-D805-5E97-9B88-70C40CD011D4.dita" id="GUID-FF653BED-5EF8-4A1B-BDA6-A3AF27DDF953"/><topicref href="GUID-4F2F254A-1A81-507A-B364-BE4088D3B3AE.dita" id="GUID-C0B6C6FA-A4DD-450B-BCCB-585BD892E0AB"/></topicref><topicref href="GUID-565386C7-A6D4-59E2-A9CF-89F424750476.dita" id="GUID-D576C0BA-7E43-4A0D-8DE2-0E12EB797EDE"><topicref href="GUID-772DFFA1-4BBC-516F-909D-47CB773760F5.dita" id="GUID-870A3A36-D8F2-4D31-A54D-5F50C285C681"/><topicref href="GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC.dita" id="GUID-17E9BD27-EBF9-41FA-8ECA-270C03CB2286"/><topicref href="GUID-C8C2645A-F5A4-53F0-8F43-485FC0B472DC.dita" id="GUID-A83CDEE0-3945-471E-A2D6-A90C5CD47251"/><topicref href="GUID-4F882837-0DA1-5243-BA7B-696B418A160E.dita" id="GUID-2B0A3742-55F7-4DA7-B59B-B0F482D1C7A7"/></topicref></topicref><topicref href="GUID-7AB66E79-1B75-50FE-ADA2-07B92B11D478.dita" id="GUID-1D51A8FD-BF52-45D7-A177-962997108338"><topicref href="GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita" id="GUID-5A340F82-0E2F-4937-94C2-74680A2BEFC5"/><topicref href="GUID-B1DD21A3-674A-5193-95CF-F533FDBBD319.dita" id="GUID-EC0A2588-2348-4F6A-B638-C331F1C49393"/><topicref href="GUID-61376760-C576-51E0-85F2-34718F8DC321.dita" id="GUID-587221E5-E525-49B4-81F6-9B4C3F29BD35"/><topicref href="GUID-4DC2D055-E522-51C4-8BF9-1361089F0E4A.dita" id="GUID-C5D071C7-40B9-4B7D-AA6F-7AAEB6524F61"/></topicref><topicref href="GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.dita" id="GUID-6584BA84-1172-4F0B-9582-B1CC2877C145"><topicref href="GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita" id="GUID-6A3A55F2-32B1-4EE1-9ABE-B73596B0D17A"/><topicref href="GUID-38CF8A8E-4778-5374-8AC6-5F9486A2B7FB.dita" id="GUID-7131D52F-3142-42B7-B081-A36D15ADFE2D"/><topicref href="GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita" id="GUID-6B7F7880-B2C7-488C-B47D-24AC3F8C89B8"/><topicref href="GUID-7572B1F0-66CD-53B8-A479-4A078C9CB28A.dita" id="GUID-47852D7F-0B15-4F4C-B639-08F807569896"/><topicref href="GUID-4FFA793B-9E57-5D59-B9A7-528F11C4852E.dita" id="GUID-04CE746B-A184-4FC5-881B-FAA3A8E9D4D4"/><topicref href="GUID-6D6DFC3A-8940-531A-A319-922317D19B51.dita" id="GUID-51461A29-B3AB-4C4F-84E2-6A2D6614E51D"/><topicref href="GUID-301193C2-666C-5A57-B898-A04EBB63E533.dita" id="GUID-E7FFE041-7ACB-4299-904A-ED4255590AC3"/><topicref href="GUID-FC043A7B-8990-52C8-85F5-10FF1B8EA36D.dita" id="GUID-1AC7BEA8-E2DE-4431-8479-A9446D4CBBFD"/><topicref href="GUID-6A37628A-C732-5765-9DC5-3AC691C2CD50.dita" id="GUID-0DFBA557-94B9-4F45-B950-2BA99CFDF6EA"/></topicref><topicref href="GUID-2EAAE194-FAE1-5545-A678-72973E9B72A7.dita" id="GUID-40B690FF-755D-4137-B57B-DF5BD8DB1C21"><topicref href="GUID-485B1284-9DB0-5AF7-906A-89A830B9FE44.dita" id="GUID-1A287B77-7EFE-4E77-B8FA-80AB61B3B9EB"/><topicref href="GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017.dita" id="GUID-0031F231-FA23-4AC6-A31E-55675A1A0152"/><topicref href="GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E.dita" id="GUID-E9569A0F-42BB-4A60-9B57-FA029D257BA8"/><topicref href="GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C.dita" id="GUID-0294F137-AC96-4102-AABB-FE920CBE3A2D"/><topicref href="GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF.dita" id="GUID-65B074EB-C713-44A2-8C2B-48D036A54192"/><topicref href="GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita" id="GUID-586DF937-4E53-4222-82E2-574BEB89ADD1"/><topicref href="GUID-4C406E49-7726-5620-AAAA-84C33DADAF4B.dita" id="GUID-5CF91F24-AF6F-4622-AFBE-86D589619EAE"/><topicref href="GUID-C668AEF1-B7E2-53BB-A7EF-B92CA253DE2F.dita" id="GUID-A956A33F-D41E-47F0-9417-65D1A61C60F2"/></topicref><topicref href="GUID-3786D8E6-17A9-52E4-A8DF-CFCDC3039854.dita" id="GUID-DD863B8E-174A-46B3-8A63-A9A8F8065E1B"><topicref href="GUID-E530CBB9-C20D-5426-89AA-DC0281C05381.dita" id="GUID-53C54F14-9B09-4B78-9D37-9BB39D3F9A7D"/><topicref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita" id="GUID-5C003DD9-133C-4D62-A306-603A299C4C8A"/><topicref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita" id="GUID-1D3C6E96-967A-49E3-A436-90DD779FA13F"/><topicref href="GUID-24508C2D-31B9-5CC2-9EB8-F00AD39D8AA0.dita" id="GUID-4C7DE43F-9CC8-4ADA-8D79-D760FAEFB429"/><topicref href="GUID-B507490F-6BD3-5DF5-97E4-EFDFEA2B4EDD.dita" id="GUID-B0D3B737-3362-4400-8B09-E6C49AAB1445"><topicref href="GUID-EEAB5A2F-AD1F-57B9-98AA-20DEEA23C3C2.dita" id="GUID-1A68E48F-CDAB-4740-9742-68DCDBED9466"><topicref href="GUID-AAA2ABA4-5555-5E4B-AEFF-3DF61462B170.dita" id="GUID-9BF52726-2FEE-4660-8F38-693969D4F930"/><topicref href="GUID-FE14D954-4712-5DCE-998E-A39D79500ABF.dita" id="GUID-D3C2F936-C18C-4B51-8142-D38BFAEA65C4"/></topicref><topicref href="GUID-C0C19F93-D804-5AED-90E4-A814FA6A3732.dita" id="GUID-5B7849CB-BF2A-4840-B65C-5C991743D176"><topicref href="GUID-C3AC4F95-67E9-5F1D-8CF0-F6B209319EC0.dita" id="GUID-F658B8A5-109D-4809-93A7-C248106B0355"/><topicref href="GUID-E6D9F8CA-F293-5CE6-93C4-5FEC5EBCB2E9.dita" id="GUID-4324A7C8-B2F2-4696-944E-0CA8781EB734"/><topicref href="GUID-CCCEC352-3A49-534C-9551-A4CAE1A3475E.dita" id="GUID-75041745-10A5-4CDA-B141-F36DA543C486"/><topicref href="GUID-B11304D7-284A-5165-9565-F9CC4405E258.dita" id="GUID-654A05D6-30DD-4B58-B8C0-28AC3BFB1153"/><topicref href="GUID-3A4947BD-1BEB-521C-BEDF-738064E83FE6.dita" id="GUID-3C157072-5EC0-4F56-AAFB-C31416F4D950"/></topicref><topicref href="GUID-C2608BF5-CDA7-530A-B67A-0414C7FA585D.dita" id="GUID-51055D0B-600B-40F5-8659-A67FC6EACB85"><topicref href="GUID-2B8D3611-5B97-50E7-A9DD-23626A8EFB45.dita" id="GUID-5E025678-1B76-42A3-9D22-784898752C59"/><topicref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita" id="GUID-6B5386F8-4595-485A-9A82-C2D5C04E874B"/><topicref href="GUID-2C5D53A3-0211-5C14-BD7F-E89EB27BAD2A.dita" id="GUID-8AFFD5DA-ED89-4ECE-AA35-E7E00428BE97"/><topicref href="GUID-220E5E6A-B55D-57BB-AC1A-CE06EB01F661.dita" id="GUID-7894DA11-7174-452E-AC5A-5B019E9F3744"/><topicref href="GUID-1D6DD213-1EEC-58D2-8311-7A1AF77960C1.dita" id="GUID-2AB947BB-6510-456B-A1F9-069F37806FF8"/><topicref href="GUID-0A9D11FB-6A24-5115-A39C-23FDE864DF6A.dita" id="GUID-67326936-D8B8-4162-966D-B1290B95F116"/><topicref href="GUID-B67DB652-A489-55C7-A3A2-D00C43BE161E.dita" id="GUID-0922A5DF-CC75-4D56-9A3F-F46A7D06D3F8"/><topicref href="GUID-1BD987D8-B018-51B7-80B2-4E1988841BC2.dita" id="GUID-94CB7DC0-617E-4534-8E2D-327AFA67C2F0"/><topicref href="GUID-56841E07-1A4A-5572-BF3F-F80069FD5D59.dita" id="GUID-50F2AE79-2274-4466-81FC-BCCA3DB64031"/><topicref href="GUID-9C36CF76-6ED2-5674-908F-A3DF8930CEB0.dita" id="GUID-AD7DEAAB-09CF-4117-934B-1F827FB65F2E"/><topicref href="GUID-2161BD64-889B-5EAB-B023-1162FE9619DB.dita" id="GUID-76EE2D5B-EEF1-4FAE-B221-31E262F9B8F0"/><topicref href="GUID-8BD6B29C-D905-5D2B-992A-A04AAD9ABBE3.dita" id="GUID-51E993E3-1A11-4064-A50A-B8B2D63C7273"/><topicref href="GUID-8EAB97D5-267A-58CC-BC3E-5CB1D72CB7ED.dita" id="GUID-4BA7A433-07B6-48A1-9743-072513B705FC"/><topicref href="GUID-7809407D-EDC0-5907-B932-0D5726A7ECA2.dita" id="GUID-48431283-6B89-4227-9172-842A3DD4D4D3"/><topicref href="GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2.dita" id="GUID-09FB32EE-EF29-4840-A68A-78E49EE84B5B"/><topicref href="GUID-BF796290-E9BC-5A18-AC59-9848823FBE34.dita" id="GUID-718DF0B1-C5D1-4878-ABD5-14A242BF4912"/><topicref href="GUID-837EF355-9154-506B-AE4F-4290FC9DBDC9.dita" id="GUID-68CBDF9E-A4D5-4975-8AF4-3E3E9FE55A23"/><topicref href="GUID-162A4409-1ABB-51A1-B7F1-75A31A5DEA63.dita" id="GUID-C06C0BDD-089A-4BBD-A5CF-ABF9B3F6F3C6"/><topicref href="GUID-C73318E7-44E2-5F42-BDB0-AAE9BD72BF5C.dita" id="GUID-D4164565-C509-4CD8-A1F2-A79080433715"/><topicref href="GUID-E72E2602-0492-58F9-A01F-D72BCC3FFFD5.dita" id="GUID-E914C0F6-02F2-433E-BF6F-BEA905FC3364"/></topicref><topicref href="GUID-E1CF82AA-D1CB-59A6-96B6-17235278E2F9.dita" id="GUID-8229E47E-C3EC-4F34-B29D-AD53C8AA668B"><topicref href="GUID-C08CE95C-E1D4-5C43-93FB-21B6E86F4565.dita" id="GUID-3A5D8BEC-F47B-423A-9DBA-B39C62EA1748"/><topicref href="GUID-3631971E-424B-5B10-B44C-98FB7C265843.dita" id="GUID-CDC752D2-28B2-462C-8ADA-13E7205C53A0"/><topicref href="GUID-59BBEA98-6501-5415-A4B5-3AE8E33957D3.dita" id="GUID-24F3AA55-132A-4DD0-B449-C8BF335AA32E"/><topicref href="GUID-9BB736AD-1224-587B-AC8C-355E7C8AEDC6.dita" id="GUID-316F8301-F19E-4BED-9C5A-23EFF27CFDDE"/><topicref href="GUID-204B4155-AE35-5C53-867B-299AF7E5D16A.dita" id="GUID-39CC0846-014C-4403-80F0-4B7421404495"/></topicref></topicref><topicref href="GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54.dita" id="GUID-B4DBAAE4-6F1E-4B5C-AD85-56D834A3ED66"><topicref href="GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C.dita" id="GUID-02CBC2C2-209E-4550-B28D-6D93A1C5EB65"/><topicref href="GUID-67718111-07FB-59CC-A9C2-86593F868C2C.dita" id="GUID-5846F02D-6927-40FD-8ABA-3F530335714B"/><topicref href="GUID-0A332D6E-E712-5186-8CD0-D5022FA54052.dita" id="GUID-04F4391C-92FD-4793-A85F-1733BA7BD0D1"/><topicref href="GUID-9169062F-3B6D-544C-847C-BA859DAB33B9.dita" id="GUID-7962BC67-C436-4AF9-815C-BCDB7AB6022F"/><topicref href="GUID-975F53E5-1C13-5063-B817-795F2623737B.dita" id="GUID-91E3D522-7030-4D10-81C0-0535CEBBFACF"/><topicref href="GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita" id="GUID-C5B10B07-7A94-4C6E-923E-2AFDD9070FA4"/><topicref href="GUID-ADF4BBBC-E771-5A12-A246-B5EA8EEE8D79.dita" id="GUID-47F0D54B-F93F-4057-AA9A-5AD2DB195986"/><topicref href="GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5.dita" id="GUID-E46E3FD7-9E87-4EDF-AA81-39B7006A2C06"/><topicref href="GUID-579D7C32-B6C8-5C77-88A5-B3078729E1BA.dita" id="GUID-67D4846C-ABE0-4705-B4AC-6E102715D801"/><topicref href="GUID-51621C76-17B5-5829-B4EC-86B453442CDC.dita" id="GUID-EE5605C9-5198-4435-9873-88DAD3D58847"/><topicref href="GUID-A30C1204-F130-501E-BD2D-1EE1537BEFC3.dita" id="GUID-127527EA-9527-40B9-B082-30507C0CDF93"/><topicref href="GUID-FAE3F35C-04C1-5CF4-8090-9DF58AD1C02A.dita" id="GUID-9E0B7D98-A9E9-45A0-9726-8B1854414F79"/><topicref href="GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD.dita" id="GUID-75C34FE4-8EE6-4C50-BB0E-C666F5F38B4E"/></topicref><topicref href="GUID-F77578A2-3B11-5C29-9D00-43B971561876.dita" id="GUID-30846D8E-D6BB-471C-A7A3-B4537D02EB88"><topicref href="GUID-3313A7E0-B10A-5CDE-8DA3-FB9C48FC80CA.dita" id="GUID-8CCB34BA-C08B-4948-9698-EACDED9E513B"/><topicref href="GUID-C79B3D8C-499C-58B8-9DF4-B2D41CC82186.dita" id="GUID-EA4C043F-DEF4-4AB2-AC32-9838C13884BC"/><topicref href="GUID-CABA0B4D-11E4-5659-B949-C4277FB63804.dita" id="GUID-0F502399-3D72-4BF7-AC9D-5FEE3F666531"/><topicref href="GUID-508DD478-1876-5DE2-9271-BDD99F51F579.dita" id="GUID-1C3239D0-7BFA-4D5F-8F90-109AA09C89EB"/><topicref href="GUID-6408C26A-2736-59A9-B785-6B119143619B.dita" id="GUID-E3772073-B712-482A-BD22-15D12FAFE878"/><topicref href="GUID-B57ECD51-85EF-50EA-B3EE-62A85CD9C382.dita" id="GUID-641E96DA-D95D-4798-AAB8-7F70AAC540C2"/><topicref href="GUID-52D2B0A4-1535-5D41-BF4C-06745C0588F6.dita" id="GUID-4D8BF011-B57D-4F24-B73E-BEB02E1956FE"/></topicref></topicref><topicref href="GUID-6A6D5DC5-3B5C-5A26-8D7F-C280AA4D5F18.dita" id="GUID-8911F3F5-4E01-4FB7-ACFF-C58E6C76CD0B"/><topicref href="GUID-9AA99D27-D646-54D0-92B9-204FDA1F3162.dita" id="GUID-112AB6D6-ED75-4189-8A8B-97645B72CAD2"><topicref href="GUID-07A31FD0-304A-57CA-8FFE-4DAD8EE9B30F.dita" id="GUID-C4070685-4400-410F-A6EA-E29EF9E14DF1"/><topicref href="GUID-EA98D77C-743B-5BA5-B131-A327B12A099C.dita" id="GUID-CBB69039-0925-4661-8134-E527B813573F"/><topicref href="GUID-CDDF6758-C995-5FC8-AC8C-63298B65BBDE.dita" id="GUID-B2156A0C-CC6D-494D-9FB6-DC38CA5A22FD"/><topicref href="GUID-486981A0-1F0E-5935-8E9A-9C6D4CCF34A7.dita" id="GUID-E59F020B-A007-4E31-AAAA-041D99FFE3B1"><topicref href="GUID-AC99E9ED-2C02-561A-ABA4-DCDD415E8653.dita" id="GUID-3BC77D0C-69F4-46D7-BFD7-C7B94D4B62BC"/></topicref></topicref><topicref href="GUID-9636A30F-39EB-54E6-8125-4487D4002FE0.dita" id="GUID-F843A311-FA6D-4C91-B86D-5A889F57468A"><topicref href="GUID-54417A4F-710D-5257-BF49-13D9F28C92B9.dita" id="GUID-84924534-3CEB-4726-B087-ADE2DBA081D7"/><topicref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita" id="GUID-878AE774-C012-4772-8B8A-57D7E8C1B247"/><topicref href="GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita" id="GUID-AEE87E12-6D2B-4533-BFC0-A573AF0163DC"/><topicref href="GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645.dita" id="GUID-055701ED-917C-47AA-A75B-F34AB5229AD7"><topicref href="GUID-D557CC2C-C045-5818-B2F7-9BD8BC39257D.dita" id="GUID-A0B53C82-4D25-4F89-9F3A-57B9570D0B56"/><topicref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita" id="GUID-7F06DF25-81C9-461B-BA9D-4F0EB07CED43"/><topicref href="GUID-911CD800-2D1B-5D7B-A67C-66E01F91062C.dita" id="GUID-5285569F-7D66-4D79-BF3E-BE9F02B651C4"/><topicref href="GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51.dita" id="GUID-2E514447-1D33-4573-87B5-DC2B8BCC7C5C"/><topicref href="GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita" id="GUID-1DBA1458-B011-440B-8EB6-AD6A0083E6AF"/><topicref href="GUID-5FBA9BB1-94A2-470C-9932-C4255E3774C0.dita" id="GUID-45D556FD-F32B-4181-AC33-D67BB251DCB8"/></topicref><topicref href="GUID-A1BD83F8-C6DB-5737-8052-7B710B19147F.dita" id="GUID-D7C23CB1-0F9E-4D48-A178-728CB327C80C"><topicref href="GUID-CFA21FBA-593F-58DB-AADA-C9D6D676AEEE.dita" id="GUID-E7865EB7-8533-41EB-984E-B7B71438289C"/><topicref href="GUID-239AA6F5-30CE-5FF0-9C36-93D39FECE1DD.dita" id="GUID-BB47D2DF-09BC-406D-9E95-5B34F7AEAA5B"/><topicref href="GUID-8E363123-A85E-521C-BC10-96C59130E45C.dita" id="GUID-ECD7C8E4-F843-465F-8E5D-CA0FECC25A60"/></topicref><topicref href="GUID-61DEE78D-4E78-5367-BC8A-F99D3B4E9D5A.dita" id="GUID-298C4433-E9C0-4FA1-9324-0262701B7C85"><topicref href="GUID-26D7BC6E-509C-51C5-9B86-437F3AEEB2EA.dita" id="GUID-06C73C2E-71B4-47C4-B9AA-E33A8E5F40ED"><topicref href="GUID-40671EEC-DACC-5F0B-978C-2794FB206E62.dita" id="GUID-BA140A2C-1EA1-463A-9BD1-532DC4F9EBD7"/><topicref href="GUID-EA71F52C-DB4C-500D-9051-31BEF29E171D.dita" id="GUID-A1124BA3-6215-4178-AB07-C8D8D3BED915"/><topicref href="GUID-8DF1C625-7963-55E9-BEEC-C9E37936F8CF.dita" id="GUID-1459AE8B-DA49-4691-AD3E-86909DA7AC42"/><topicref href="GUID-3AD20E0C-F364-533F-9FBC-227478CA9982.dita" id="GUID-68B427D3-9D00-47A2-A30F-D8993063C5A9"/><topicref href="GUID-7E967B81-2DBF-5A89-B74B-93FEA5515685.dita" id="GUID-5A77628D-CDED-4C54-BB47-8251E63EF0C6"/><topicref href="GUID-1171C47F-D7F3-5A49-B191-DB6CB7C84DC8.dita" id="GUID-E78BCDAA-DBBB-4FCB-96B0-3FA1C7E13B88"/><topicref href="GUID-F686965A-13E5-5C0A-AED1-55EC91C79433.dita" id="GUID-9EE201BE-3708-4E1E-ADB4-3A1BC4C978C2"/></topicref><topicref href="GUID-E7D29464-05E1-5039-8A02-62CB27B5FF21.dita" id="GUID-9F478608-2548-4436-B038-9F40A2F99308"><topicref href="GUID-E93E577A-0BDF-5472-B79F-DA60841C30CC.dita" id="GUID-C556C65B-5E4A-4866-A824-72A44A31F04B"/><topicref href="GUID-14BBFDA8-7765-5939-9E47-36E299841F50.dita" id="GUID-E0BCF164-319C-4F69-B7FC-0A3A79842982"/><topicref href="GUID-72E1F91B-173B-5F45-B9FF-42FD5F45438C.dita" id="GUID-5F9FE241-428D-4659-832D-439DED4B1C1B"/><topicref href="GUID-27AAD3D5-AEC0-5A33-B14A-2E8B8D21CDAA.dita" id="GUID-7014A533-7779-4952-8356-8F9AB84AC5D3"/><topicref href="GUID-FE138F1A-1F52-5E9A-8EB2-5A8945A9CF30.dita" id="GUID-794DBA8B-8C1B-4A2A-9F6E-A176D5A89672"/><topicref href="GUID-18182059-859D-51CF-A940-D230D9F9CF8C.dita" id="GUID-35E94611-65F5-47A5-AC1F-E7D67E270053"/><topicref href="GUID-7A71CD0B-84C7-5A77-B573-C61F67C382DA.dita" id="GUID-94D0C327-B933-4612-B2A1-B2328C13A45A"/></topicref><topicref href="GUID-5EBA3C03-2E4E-5DBA-BB5B-0D40DAB3C39B.dita" id="GUID-451F1D29-1F77-4DB2-B21F-27AAC85FAA5C"><topicref href="GUID-5829247E-2E8E-502F-9051-A59DA8EE71B0.dita" id="GUID-F3A82DDC-7F8B-421D-9A52-A1957E7B7D17"/><topicref href="GUID-60BF8840-CB87-5A39-A46E-76F8D4EDB50C.dita" id="GUID-35611EA7-2F3C-4EBD-B7A0-ACD133EA2473"/><topicref href="GUID-1FC0156C-7BDB-5D5B-9860-837DAB431D24.dita" id="GUID-BB0B14DC-8766-4930-9168-D06003DA3A00"/><topicref href="GUID-96C7CBD4-4B25-5AA1-A54F-1764B54FDC7E.dita" id="GUID-77919329-4734-4E7A-A5F0-2EC5267686F9"/></topicref><topicref href="GUID-7366AE99-DE25-5DE0-BF9A-58E7742DA952.dita" id="GUID-E2A54C48-31E3-4A48-8889-CB1FF26F349B"><topicref href="GUID-C6AB2B3A-BBFC-5B57-BECB-F46C96250502.dita" id="GUID-A980EDC9-C17E-4536-8196-01CF9A8B07F9"/><topicref href="GUID-18EF9CFA-5080-5F89-89EC-C64897612D6B.dita" id="GUID-D3D5F2F2-C893-44F6-AECC-3327BCA263FD"/><topicref href="GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A.dita" id="GUID-EC527DAA-DE47-4204-85DC-0CC071CFFD38"/><topicref href="GUID-011D0974-CC37-5335-A8EB-7ECF4FC30F93.dita" id="GUID-5B1EAF01-C2FC-4A88-A92A-07142EFA70EB"/><topicref href="GUID-D51600DD-B79A-5A4D-B2D1-36C0A9F9D115.dita" id="GUID-9458974B-5836-4E5C-826B-E299A1D38CFD"/><topicref href="GUID-76D1438E-445E-5864-BA9D-27BC61D72C1B.dita" id="GUID-3355F33B-81D8-425F-B14A-7EEC2E8EA944"/><topicref href="GUID-0970A970-6E56-556C-B032-B7EAF8ABBBA6.dita" id="GUID-7275D7D0-0E64-45F0-8003-9FD342ACD6F2"/><topicref href="GUID-0715E8B9-8F43-5C7B-BDC6-4E8FA5352714.dita" id="GUID-D1F41AF7-EE50-41BE-9979-4CFC4A7822B8"/><topicref href="GUID-52151070-626D-5F14-B53F-7B46BCBD633E.dita" id="GUID-2F4A4BEC-59BE-4617-A50B-4D3118A300E8"/></topicref></topicref><topicref href="GUID-24FD00A1-CD09-5845-ACD5-4E4FF25084B3.dita" id="GUID-73F1E559-09A0-48E0-AD7F-5FFF529252AB"/></topicref><topicref href="GUID-806298E8-3196-5A1B-A392-7D5A903C3F57.dita" id="GUID-96A1D206-1091-4C26-A495-2E15FE476270"><topicref href="GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293.dita" id="GUID-6D5EC853-1D02-442A-8E5C-E650F956BFA6"/><topicref href="GUID-2F4B2A69-9B92-52BE-9A1A-FDA501579CE5.dita" id="GUID-E2D6298A-18D1-4DE2-BD89-85665F8CE64E"/></topicref><topicref href="GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita" id="GUID-B941FE22-09C1-4DE8-95BD-DC2BEDD7F67F"><topicref href="GUID-C705B0D5-055A-5DAA-9C6E-2FC3519FA50C.dita" id="GUID-203D644C-EF35-45E5-BACB-8D4768F97AA5"/><topicref href="GUID-D9EA2B10-B789-5CC1-9BD0-23B4FA7E0821.dita" id="GUID-1E7EFE38-C53F-4339-BFC7-083C948D684E"/><topicref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita" id="GUID-F7A565C0-399C-4CD9-82CC-3861FCFDFCC7"/><topicref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita" id="GUID-0CCAF724-24CE-40BE-96EE-07C2E6251668"/></topicref><topicref href="GUID-E634E701-0DA2-572E-852B-8A1F88F05E5A.dita" id="GUID-3D02E4C3-C46D-43BA-A0C3-EFB8A21AAC55"/><topicref href="GUID-A52E8853-9A8A-5B66-A2B0-F943B32AA5C6.dita" id="GUID-A8F74095-15A7-478C-A54E-AD3824CF54E6"><topicref href="GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita" id="GUID-C3C071F9-A960-4DA5-9E15-8F6D3D8EAEDA"/><topicref href="GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830.dita" id="GUID-260EAD45-2F20-4E08-B251-C226BC0BC587"/><topicref href="GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita" id="GUID-455706F6-59B1-4754-9584-7CF750613DA9"/><topicref href="GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E.dita" id="GUID-0869026B-42EE-4660-AB3B-D0A11B89A032"/><topicref href="GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita" id="GUID-44CF75EF-3359-4C5A-847D-3FD925F0799D"/><topicref href="GUID-BA9A7DF9-258A-5822-9115-E1102D609749.dita" id="GUID-921B64EC-9F90-4D5A-AA29-86D4CD343A47"/><topicref href="GUID-D4668FE9-52BF-581A-B403-CEC69D5219D9.dita" id="GUID-FB7ECE34-AB02-4B5E-821F-51605E7EB204"/><topicref href="GUID-FC639517-F138-5E84-B57A-6347F5A47B88.dita" id="GUID-43B31B8B-17E5-4121-93F7-3B5D3A3BB0ED"/><topicref href="GUID-EA0A4F6E-CA82-59A4-ABCB-70632CDC2714.dita" id="GUID-18943901-4273-4B6E-B6B3-6404C84E5EE2"/><topicref href="GUID-2A6C43A6-D5D3-5DC1-871C-C1428D2DB2E6.dita" id="GUID-EC9F0D2B-13A6-4A09-B2C1-394D9A936902"/><topicref href="GUID-8C4EB8E0-78F0-553D-91AE-EC070A47B0EE.dita" id="GUID-E181C878-8201-4E8E-BBAC-1798B41376AA"/></topicref><topicref href="GUID-EE8ABE8F-A25D-509E-8B0C-9101F61F998D.dita" id="GUID-A0B78CD5-56A3-42ED-9F49-ECF3591DBDF8"><topicref href="GUID-255B6815-8CC8-5E4A-9999-9BC083BCCD83.dita" id="GUID-A2349D43-31CE-48B7-8477-F7968D54E78F"/><topicref href="GUID-5AA3E9E4-9727-5B54-81CB-DADA73DEC51E.dita" id="GUID-16C075C1-990D-4FBE-AD40-368AE6E0B7FF"/><topicref href="GUID-1D9376CD-3160-5CD8-A138-B94C5F7A50F8.dita" id="GUID-B038C4B7-783F-435C-AC10-0243557D71DF"/></topicref><topicref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita" id="GUID-608ECDCC-1B59-400F-8597-4DD5CDDE3BBF"/><topicref href="GUID-44F4089F-7184-5F73-A01E-E0F639D32EA1.dita" id="GUID-2F6D9313-7C19-4A11-8669-597EDBD70AEF"/><topicref href="GUID-BBBFC0AF-2E35-5F5C-A3A5-57C4196A6CDA.dita" id="GUID-B5039D77-F718-46F8-B913-C1A66BE8B569"><topicref href="GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347.dita" id="GUID-10D751FC-E821-4783-B9AC-5E34BC9BD2BA"/><topicref href="GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2.dita" id="GUID-1D773F09-F3EF-4757-BD66-EAC1BA33F1C5"/><topicref href="GUID-BA89F4DF-E2F6-5E0B-BF20-F8898FC5D5F8.dita" id="GUID-8210FB23-C89F-4406-B9B9-11C2280FDC82"/><topicref href="GUID-E865E677-1219-500C-89CF-0A2835B91834.dita" id="GUID-D1AF6F42-24D6-42D9-95FF-B321FEF20657"/><topicref href="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita" id="GUID-5E6BC8A6-5F00-45B7-806F-4E182629E819"/><topicref href="GUID-088DC096-0CC7-5510-8D71-7DAF5961A681.dita" id="GUID-368576BA-B097-45EC-9102-2385F842DDE5"/><topicref href="GUID-FA120B3F-4EC4-5A0A-8A36-D5CD032CF1B0.dita" id="GUID-772822D9-20FA-4B0D-A589-6CBC00C6DD18"/><topicref href="GUID-9D00655C-AFBA-5DF7-B11B-6B2355BDF08D.dita" id="GUID-86C3E48F-A03D-40F7-9605-FC3DF461C36B"/><topicref href="GUID-91EBB6E0-932D-506D-B041-7FB8A531EFDD.dita" id="GUID-9B38E025-9C4E-4BB7-9D99-C6FCA828302B"><topicref href="GUID-21A43565-FC69-553E-9617-4832AB776004.dita" id="GUID-74AE110F-89D2-4DB9-9B65-B23B7C6B1106"/><topicref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita" id="GUID-400FEC71-269A-4AC7-8DB9-BC5C4754DA68"/><topicref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita" id="GUID-235E5F07-0B63-4D15-A192-FD82E51D28F0"/><topicref href="GUID-25F853BF-BA95-5348-809E-670C04734AB7.dita" id="GUID-29DF3733-200B-4D27-A8BC-A3A22838B231"/><topicref href="GUID-1EDE641E-EF8C-542D-A7B3-7C496D41EF3D.dita" id="GUID-B43D4C26-E053-4AA2-A919-5CA7700210A6"/><topicref href="GUID-0B94F027-6524-54D1-9A5C-3849DA41FCB7.dita" id="GUID-EB13AEFC-4E25-430E-B643-59BF892AA9D1"/><topicref href="GUID-A16508C2-2743-5E36-BCFB-C509ACCD372F.dita" id="GUID-AA54A1CC-C011-4AA1-9F2B-5C39DAFFB2E8"/><topicref href="GUID-D542B24D-5A17-516C-85B0-66A5E8A97946.dita" id="GUID-C5A86D61-13E3-43A6-809E-D419580477EA"/><topicref href="GUID-EB286BFD-6A84-5F12-8CC5-1A347685634A.dita" id="GUID-9C29333B-9027-448E-A70C-DB265162EE91"/><topicref href="GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572.dita" id="GUID-1C7D4D73-76F0-4E10-B3DD-BD15513B21E1"/><topicref href="GUID-24477051-265A-5FE5-B479-ACB3EE27B825.dita" id="GUID-D717DE95-C215-49D0-B1A1-8AEDDA85DFBD"/></topicref></topicref><topicref href="GUID-1C7A0C22-90C6-5F54-8B43-342EE460C055.dita" id="GUID-34C7E33E-994A-47CD-8595-FEE0973C6128"><topicref href="GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita" id="GUID-EA2F2B75-6E56-4E6E-8598-95CC4B56AEF0"/><topicref href="GUID-1FBC290C-74C3-5618-A2B7-52181CDFE0F0.dita" id="GUID-ACE2E709-6DB2-4BE0-B823-1F169AB721F1"><topicref href="GUID-5219F0F7-4BFA-5B1B-999C-FBE4E2228588.dita" id="GUID-D9E612D2-4F7A-4AFA-A9CA-F95A31AD2778"/><topicref href="GUID-0422EDC4-E17C-5E58-BB37-03CCA79ED3E9.dita" id="GUID-A41A2755-5C30-41A0-95B9-10669249CFF8"/><topicref href="GUID-EA6965FB-5BB6-5110-9A16-B5403E1983D4.dita" id="GUID-EB76FA41-C10E-44CE-986E-EF030A80245A"/><topicref href="GUID-517F4D7A-5959-57E6-9C5C-3584FBA4EA42.dita" id="GUID-39E6365B-8E2F-4DD6-8C52-E6023310D0EC"/><topicref href="GUID-2D8093D7-58A8-59CD-96EF-5B0AAE029478.dita" id="GUID-5F19E620-6182-4C76-A579-AE42377C5ED6"/></topicref><topicref href="GUID-926EFFB3-B0E0-5627-87C5-20F8B4A56028.dita" id="GUID-366DCEF7-1F0B-4FF1-87BC-31D6A97A4738"><topicref href="GUID-E5B5C3CA-B256-5B29-AB90-590676444C85.dita" id="GUID-82303849-362C-4442-B279-8B1F3EAAF136"/><topicref href="GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-5-1-4-1.dita" id="GUID-57914096-DFC4-493F-9679-1014672D7206"/></topicref><topicref href="GUID-B659AD98-FB73-5C3C-8E13-D2CDBD2B84A2.dita" id="GUID-59874B43-2D51-4621-B657-67236C3D53D5"><topicref href="GUID-078E6232-31FA-5582-84B8-F5E3E4B14A05.dita" id="GUID-882F02C3-FB19-4884-A6B9-ACC40E53A57E"/><topicref href="GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-5-1-4-1.dita" id="GUID-AF9FBE99-86B3-44FB-8E2A-066252CE5144"/></topicref></topicref><topicref href="GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932.dita" id="GUID-208C6C1D-4D7C-4CBF-A775-B8850B36F7AE"><topicref href="GUID-AB705D21-87A3-5F32-A4B9-17B7593DD5C3.dita" id="GUID-4DE09AA9-7A1D-4AD4-87BE-9D3C77C3EB11"/><topicref href="GUID-4D5B0B16-329F-5932-995D-DB43E6641EF9.dita" id="GUID-EFACE534-9A8B-4C5B-A6E9-EB52C2CA7391"/><topicref href="GUID-6CD0F7B8-3DB2-5332-A206-BD7A1C840614.dita" id="GUID-4F18DB3D-2D29-4B05-ACD7-B8A848A1BA69"/></topicref><topicref href="GUID-C61A6E8E-F295-53B4-ACC6-CFE1D9117895.dita" id="GUID-E0C7708B-F61A-47D2-B8A1-CDDDE1484D99"/><topicref href="GUID-0D61EBFF-F513-5911-B234-09F36E5E3DC8.dita" id="GUID-4BB6F229-FF39-444E-BC2C-1028BEA557E5"><topicref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita" id="GUID-83008203-CBB1-4015-A88A-648AB612F0F3"/><topicref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita" id="GUID-0166D443-FDCD-4132-B136-A863C94F6F4D"/><topicref href="GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita" id="GUID-84B6E79B-C272-4207-87ED-96EDAACEC440"/><topicref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita" id="GUID-A8E8D5A2-EBDA-4FEA-A4FD-A63141959531"/><topicref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita" id="GUID-DA4CFA9E-D893-4CDB-9905-1D9E4231207A"/><topicref href="GUID-6B6532D0-6346-51E4-BC7A-6E8487EF8BA1.dita" id="GUID-309370C0-25FC-49BC-B07F-D1FEF405248A"/><topicref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita" id="GUID-C08DD39C-F810-46C5-9D20-155566016DC1"/><topicref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita" id="GUID-EB5D8F2A-03D7-4A13-BC9F-6062D93D2948"/><topicref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita" id="GUID-AB2A2CD0-EB1F-4D6D-BBDA-5966618887BB"/><topicref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita" id="GUID-C9802C91-6BB6-4462-B3E9-121A24AB2F76"/><topicref href="GUID-CEB1E9D7-3FAB-58D4-BD07-E924D0B87555.dita" id="GUID-CB9C9B88-2CB0-4093-8638-79DBACC98B0E"/><topicref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita" id="GUID-73816830-E763-401A-A95F-9E77CE67CD96"/><topicref href="GUID-3321A4E7-8652-511F-8A17-E816F5731E94.dita" id="GUID-B835138D-7391-4E10-9BC7-63824580D7F3"/><topicref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita" id="GUID-5815B57A-23FD-4C06-A154-5702E9C64285"/><topicref href="GUID-09FC1F03-B5EB-5228-832B-C64D95AEA05B.dita" id="GUID-6B6CFF21-6A41-4A9E-B6E0-AA78FC5BD6F2"/><topicref href="GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita" id="GUID-A87D889A-3881-455E-B6BB-9C79AE775CFC"/><topicref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita" id="GUID-5B399C9F-388C-4CFF-9B3A-2DFA7D3CC3D5"/><topicref href="GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita" id="GUID-F14C7E13-30A2-4B9E-9DD7-A7B4A2DAD241"/><topicref href="GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita" id="GUID-46D95819-6B57-4A29-B97C-C161A6CDB385"/><topicref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita" id="GUID-22D56912-9B9C-4FE2-B4EB-3EF3304EEA25"/><topicref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita" id="GUID-8FC9D660-B44D-4281-A3C2-81327FA93DAA"/><topicref href="GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita" id="GUID-7C9A95A6-8523-4CC0-9F41-707E753543FA"/><topicref href="GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita" id="GUID-5F3E8C05-1E8E-4C06-8205-A8F003087E6A"/><topicref href="GUID-47F14C10-3ACD-583C-9E7D-84641229A771.dita" id="GUID-526F8732-46F2-40E7-8690-56B97E9F4094"/><topicref href="GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita" id="GUID-4F2D23FA-C8D8-4D0D-A835-7632229FCBD0"/><topicref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita" id="GUID-04A25E10-DC2F-47C8-B857-CF297E58C9DC"/><topicref href="GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita" id="GUID-E10744FC-DF71-43D0-8524-FF3ED733E8A8"/><topicref href="GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita" id="GUID-17AFAFF7-730F-4837-8A44-4742144A0E47"/></topicref></topicref><topicref href="GUID-BB9760B4-4F3F-5326-81FB-B644C82F0E65.dita" id="GUID-137052D1-6A4B-4AD6-B020-7C594FB2488C"><topicref href="GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita" id="GUID-DD8CF14B-6844-4585-806F-7C6F086B349E"/><topicref href="GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita" id="GUID-7D2949C0-22E2-4DFF-8AAD-779242F424FD"><topicref href="GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76.dita" id="GUID-4D3D41C5-0250-497B-8D9B-12CB653B6A00"/><topicref href="GUID-D3DD5F07-A383-5285-8C68-9F6C1C3E715B.dita" id="GUID-0BFF4DA5-B22E-44CB-8875-E6100BEA718F"><topicref href="GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47.dita" id="GUID-12A4D3BB-D5D8-4DF7-B086-18AF27BE3AC0"/></topicref><topicref href="GUID-F0D5C8DB-3AD0-53F1-8301-C0F69A4F13C1.dita" id="GUID-97728F84-18FB-40D2-954A-50D787BA7562"><topicref href="GUID-843B3C4E-153D-5673-95EA-88322D689297.dita" id="GUID-88A56377-8C0B-4E53-8A18-9D4E9A960748"/><topicref href="GUID-7C7DC797-3600-5EF8-A3E4-B44A7BCEE373.dita" id="GUID-4421B0DA-0AA2-4463-8F31-B805723909A7"/><topicref href="GUID-06031510-2089-55A1-98A2-9045D1D07E4E.dita" id="GUID-D201FE9E-9636-4AFF-8B5A-5BAB94ABFFDA"/><topicref href="GUID-AF65EC50-0922-57DD-809B-DB8970C8E4C6.dita" id="GUID-092D992C-6B7A-4BFE-A186-D3DC73D73269"/><topicref href="GUID-1C0CA7AD-0F04-5346-AA51-4F9EB852FD38.dita" id="GUID-D93C44D9-FF0A-4460-BD6E-7CCC2AE6D698"/><topicref href="GUID-47A4949C-61B3-5B91-9845-F40A9BC157C4.dita" id="GUID-9791F13E-811B-4F4F-9C58-88CDD6D1F7FD"/><topicref href="GUID-E4A76562-E030-51A5-BD14-C734457443CA.dita" id="GUID-BBA44EB4-2B45-4F18-A1AF-A550CFC144E8"/><topicref href="GUID-5B50E929-5C29-5920-965E-24F6CB616AC9.dita" id="GUID-EA7BCDB2-23D0-4564-BD99-0D8FC8D2AEE6"/></topicref><topicref href="GUID-30B2AF3F-E120-5D47-AAA2-529555625B55.dita" id="GUID-B4AE6219-C012-45B4-BEE6-32EC39037327"><topicref href="GUID-C72CF928-F32E-55CF-A4B0-B51CD7D14F8A.dita" id="GUID-38F5B914-7F4C-4D11-8D27-5AC3DC85859E"/><topicref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita" id="GUID-6F7122A8-22B3-4656-A3DC-8400133DC07F"/><topicref href="GUID-F4BD69B6-008E-51DB-ABFF-1E17E10B053F.dita" id="GUID-C9F6B1C6-CD2A-44AA-99CA-6098A0A08A7A"/><topicref href="GUID-EAEE54D0-4580-5BE7-AA16-4ABC216B4EB0.dita" id="GUID-65CD3BB8-3681-45A7-A708-D7D28DBA8488"/><topicref href="GUID-EF4423F9-05A5-5DD5-BDB6-C7D8F7901396.dita" id="GUID-17B3300F-13D4-48F5-8937-20AF270FD7CD"/><topicref href="GUID-D5B8DC2A-E2BA-54FE-A359-1496356AF93F.dita" id="GUID-E5EAFAFC-1185-4B5F-A947-6CDE397EF692"/><topicref href="GUID-F86CFD79-88B1-55E0-AF81-4666D97B7AF5.dita" id="GUID-6B0F3FE6-9E68-4076-AC01-A835153FEB08"/><topicref href="GUID-FA6E3270-C20A-5B05-9FFC-F3D4D8B35999.dita" id="GUID-52EA6FA6-566B-44A0-8B1F-2D948BB7B6D4"/><topicref href="GUID-00DE7E90-4C6B-577A-85E1-76698CA2AB69.dita" id="GUID-25605DBE-7E56-4B1F-A957-C298EE61D682"/><topicref href="GUID-00025EAD-C4B6-5408-96A3-FFDBBBDC7CAB.dita" id="GUID-994B1764-393F-401F-8571-CE0955AB6CA6"/><topicref href="GUID-57DD8365-E60F-55C6-BB24-8D215A31A8AF.dita" id="GUID-959E158F-62CF-4688-B080-5F1CDC2D4CCE"/><topicref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita" id="GUID-BBD64F82-622E-4B1C-B7EB-BCCB60591F67"/><topicref href="GUID-EC567597-093B-50C8-90FF-300A439A99A5.dita" id="GUID-90E23C8C-70AE-4D55-B719-9F1441863529"/><topicref href="GUID-F3520C6E-1B3A-5CB2-95F8-AB430D4BA327.dita" id="GUID-7DF6EEAB-6CC9-4696-8B18-5BF9F61BA6BE"/><topicref href="GUID-218DB978-929C-5701-869F-8415FF6CE62D.dita" id="GUID-472A9E0C-7834-4203-8BD6-657F6BEF46C6"/><topicref href="GUID-BAAB73D8-EF7F-5F62-B819-25EB2F5CCE3E.dita" id="GUID-C20CF35D-A810-4960-BDE0-ECBB7EDF6C9E"/></topicref><topicref href="GUID-ACF6C0A2-87ED-55B3-B22A-9B331D9940AC.dita" id="GUID-4C018E64-E2C7-4670-8A24-E8BEE5CB0C05"><topicref href="GUID-204627D4-3818-5DE7-8969-C335DBA5B153.dita" id="GUID-9DC55AAE-A360-4D34-AF18-FD7711D1F0A6"/><topicref href="GUID-CA35A708-C6D9-51D7-873B-A79606FFAF66.dita" id="GUID-7CD52D50-4FD4-4B91-BD2F-BD4CFDD7EB4A"/><topicref href="GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863.dita" id="GUID-752926DE-2DEC-42E3-A041-03533003E813"/></topicref><topicref href="GUID-ECF9E432-EA93-5284-B0E6-A1211289CBD8.dita" id="GUID-63A1A0F1-9DBC-4AAC-82E0-007EBBF564DA"><topicref href="GUID-3CE3D01D-3EA1-5D44-B9DE-350F9E88F9C9.dita" id="GUID-E291E60F-062D-47FD-A871-786832DEE634"/><topicref href="GUID-89F383B6-3730-51DF-8C41-CF2564B4D003.dita" id="GUID-8F26B821-5BB5-4EB8-AF60-B8962D2BBEE9"/><topicref href="GUID-2CE8544C-470C-5693-8ED6-27B01DD9548B.dita" id="GUID-A2887D5F-6704-48D5-AD1B-1F2DB038A772"/></topicref><topicref href="GUID-22746579-EB41-5C76-96D0-606C132E824A.dita" id="GUID-D258F774-674C-42AF-BEAE-48D01A5D1276"><topicref href="GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita" id="GUID-F7960276-6CCC-4BC5-B65E-9BD4A2751F43"/><topicref href="GUID-B0C99FFF-DAF8-5E0D-9EE0-60CBAEF6E8D7.dita" id="GUID-FA356292-49EA-4FFD-9503-0CC84A70A988"/><topicref href="GUID-B29D55DC-D2EE-5F05-A0BF-7C7C30615479.dita" id="GUID-63E46000-16E9-4824-9B97-522BE977796A"/></topicref><topicref href="GUID-629AB2C9-BEDD-5166-8B09-F8DFF7527C03.dita" id="GUID-7338469A-9BD9-4F8C-94AB-5298C7B48FDA"/><topicref href="GUID-3FEEFC4D-19B5-502A-8310-40646B9C34BC.dita" id="GUID-D7AF7FEB-744D-4BF8-9AA1-E15768A8BDA4"/></topicref><topicref href="GUID-E23CC708-1DD1-5DFC-992A-997AA107A616.dita" id="GUID-6CF679E4-4A8B-4679-940D-532D3DED7282"><topicref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita" id="GUID-56121C4C-7F32-469B-8C6A-8CA23913A5A3"/><topicref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita" id="GUID-D7CB55D9-663E-4FD2-8333-12FA891CDDC9"/></topicref><topicref href="GUID-B24F1029-39FE-539F-847E-1296A1574F95.dita" id="GUID-E918728F-AB10-4289-BD87-2C8844828F7B"><topicref href="GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita" id="GUID-58F461FB-D1A6-49EF-8B83-4B75A62B5448"/><topicref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita" id="GUID-9EA6B024-CFB7-4994-952F-0CA559D9C6F9"/><topicref href="GUID-D358120E-6755-5D0F-8754-DAB4E2A52E00.dita" id="GUID-5C1CB6A4-0457-40CC-945B-0DF48CE90D7F"/></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-A3015BE2-0B29-4161-9EC0-79AD40B4FB01">
+<topicref href="GUID-7F476137-5E7F-5288-9F4A-6C20F0A1AD9B.dita" id="GUID-EB740C72-C0FE-4036-96A9-B9F8A6C1C26C"><topicref href="GUID-BA49FDC0-808B-5E05-81AC-98637214F304.dita" id="GUID-3EECEFC5-1BA5-44F4-AF56-71666F748E47"/><topicref href="GUID-1E158DE6-33F5-4B45-8923-28117EBAB68A.dita" id="GUID-639202A4-6AF8-4D8E-8964-64B95B99A552"><topicref chunk="by-topic" href="GUID-A996FAAF-DB18-4F78-A8DA-873ACD771560.dita" id="GUID-A11543B8-766F-4FDE-B738-9175927ED67C"/><topicref chunk="by-topic" href="GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita" id="GUID-1BA938E5-D02F-418F-BA5B-9FC7463B60BC"/></topicref><topicref href="GUID-D0318BB6-0B9F-5A1C-AB0B-61BA22D28661.dita" id="GUID-A5337151-826A-487F-B071-E7196F7DC806"><topicref href="GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita" id="GUID-98F5758C-8AD6-4FCB-B219-06B7EBF44FC1"/><topicref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita" id="GUID-9DE89BD5-E969-4849-B8FA-1D6F786EA648"/><topicref href="GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita" id="GUID-C22395DC-9DD1-48A1-AA0F-190894512C38"/><topicref href="GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita" id="GUID-ED5E24D0-4EB0-488D-880B-68301680335F"/><topicref href="GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita" id="GUID-F36FF19F-F5B9-48A0-BD2D-D67C545154E7"/><topicref href="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita" id="GUID-F48A4546-3D03-4334-8B97-11D99FE24175"/><topicref href="GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita" id="GUID-DA50BBC5-4E40-4815-BBC1-80B577261C5D"/><topicref href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita" id="GUID-035ACB6D-6855-4167-A181-6A3F3FDB3943"/><topicref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita" id="GUID-3333F589-CFF4-4946-A779-D5580BDD3509"/><topicref href="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita" id="GUID-71035D8A-0F10-4703-A2C5-C4243263F6FC"/><topicref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita" id="GUID-A319B881-2982-4468-92EE-403959DFF4C6"/><topicref href="GUID-0D5692FB-305E-58B2-B105-B309BB9AE38D.dita" id="GUID-E8ADEC7A-8EDE-42D5-9A5C-BA3D5E4441FC"/></topicref><topicref href="GUID-05931546-C3C9-4085-8D5F-6B6C3F21D24C.dita" id="GUID-FF02D5A1-0C2A-41C5-80B5-B1C32C5BE229"/></topicref>
+</topicgroup><topicgroup id="GUID-2F1C5CA3-4020-4784-B016-E77470EDF273">
+<topicref href="GUID-1A43A45B-80AE-56A0-A94C-64BA75519C67.dita" id="GUID-510D4522-2DF9-4F3A-B74C-4D8614D9E998"><topicref href="GUID-DA6BB8BB-DD92-57A7-AD1B-F9CFF8CD433F.dita" id="GUID-CCE86C63-FC5D-4C2B-94E3-F5B5BBD19286"><topicref href="GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita" id="GUID-F72DFD8A-8B14-4C03-BEDD-1AA2A3E25133"><topicref href="GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita" id="GUID-AAA79257-3C38-4078-999A-0DA40A61D256"/><topicref href="GUID-69438F28-E2E9-5BFA-B644-08FB59D50A39.dita" id="GUID-5987F1A6-EDB7-486F-A6FE-45D48FCE7052"><topicref href="GUID-CBFDD753-BAE3-5C40-B947-EB8CDA11CD23.dita" id="GUID-3E452A72-6AF0-4805-BE0C-9640B5E23740"/><topicref href="GUID-24414E32-94DC-5870-847B-A797C495F756.dita" id="GUID-97D5252C-000A-4686-A6CF-9F0C53CD677A"/></topicref><topicref href="GUID-33B590F4-CAE8-58B2-92A9-53123BD42579.dita" id="GUID-A1C875B6-F4AE-469D-B8A1-E603929891C9"/><topicref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita" id="GUID-327A7386-C625-44EC-B574-BEC6719E8747"/></topicref></topicref><topicref href="GUID-B641E030-E605-5A51-9C95-D9A23A38AF20.dita" id="GUID-1E0D49AF-515D-41E9-A2B5-8FFFD2319343"><topicref href="GUID-27A2AE45-AFAC-5325-A9A9-4A8C69921EE3.dita" id="GUID-C5E0E88E-724F-4044-AF8D-8372049FD66E"><topicref href="GUID-0EDFDB1E-B851-5871-B235-453A2B2F6BFB.dita" id="GUID-B819DF63-B79D-4DB5-B008-23E0E834219E"/></topicref></topicref><topicref href="GUID-4384066E-158A-5F63-A823-7793DAE680BF.dita" id="GUID-196AEAF6-DAD0-48AD-85E5-83461CC7CA27"><topicref href="GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita" id="GUID-3F567E56-F593-4E19-8D82-6A6FFB486F67"/><topicref href="GUID-401A07E7-97CF-57BD-B37D-F6412762BBCB.dita" id="GUID-AD0FE723-F00F-4E76-8FAD-BB31AAF1C611"><topicref href="GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F.dita" id="GUID-BD1D39AA-5331-4433-9E6E-2D21CC46E93D"/><topicref href="GUID-386A94C7-BCB4-55B5-843E-E4AC03A2E230.dita" id="GUID-7FAC3E52-7378-4378-BDB9-C48A57D99E27"/><topicref href="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita" id="GUID-B6703385-F9C2-4B5D-922C-8E07188CC0AA"/><topicref href="GUID-AD6587AD-A5B2-5369-9217-D752A37490C4.dita" id="GUID-0C90AF5A-00B5-4B04-BF53-343FD5F63DAC"><topicref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita" id="GUID-04F0673C-2B95-46E5-A041-1F0DA087D126"/></topicref></topicref><topicref href="GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita" id="GUID-BF39B4D8-83AC-4C72-A6EE-A543E22161FD"><topicref href="GUID-1F755804-70D6-5635-B2F7-06F03C8D4B74.dita" id="GUID-AFADDBEE-86F5-4DBA-9837-EE48B48096CF"/><topicref href="GUID-42833109-F8C2-57FC-9995-0461698A19FF.dita" id="GUID-4D5ECE0E-B5B4-4806-9417-C3F577642253"/><topicref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita" id="GUID-6B93463A-838C-47B0-B282-D910CA1E6E6F"/></topicref><topicref href="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita" id="GUID-B11EF615-2225-43F4-B75A-E1564EFC509F"><topicref href="GUID-5B43ED43-21B4-54C6-8637-76554769E6FE.dita" id="GUID-EBCC0A39-F3DA-446D-AAE5-71054F82A176"/><topicref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita" id="GUID-9A949634-F368-4D8A-85D2-46565178FDCF"/></topicref><topicref href="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita" id="GUID-AC9C5357-EB5D-4901-88DD-4CBD743A9C70"><topicref href="GUID-4F703F85-080F-5B77-B94D-5449764828F3.dita" id="GUID-889069EF-FCC4-4378-A5D8-9CC72C4CB5CF"/><topicref href="GUID-2E253B30-2611-546D-AE5B-1752556FC8E8.dita" id="GUID-31590D2F-313E-44EC-A98B-C12F3910E98E"/></topicref><topicref href="GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita" id="GUID-0695353F-151B-438F-9286-B68874C13D69"><topicref href="GUID-43CE4DCB-F498-5878-A2EE-7831BBB4D288.dita" id="GUID-D5F8946F-7DAB-40D7-AD32-BFC6696FEF71"><topicref href="GUID-FD733414-DDB2-5748-A193-6758FADEFEC1.dita" id="GUID-CAC70ED5-4DBF-43F6-9AC0-A83FC77E3113"/><topicref href="GUID-88FDEE3B-83DF-5635-92FC-CF291D1D6C2D.dita" id="GUID-E1FDACDB-EA5F-47A8-A8B1-5CDC16C81B0C"/></topicref><topicref href="GUID-7965B998-0D1A-50F8-B2F9-D2A71744DF86.dita" id="GUID-B177D993-1D75-4BF4-B854-638306E52479"><topicref href="GUID-EBFE8B29-86AD-5785-8041-BCED2E90472E.dita" id="GUID-F6D3E642-4CDC-4D66-9129-5CB9BB66043D"><topicref href="GUID-ADAD07E4-3539-52DC-B117-7078B3045B74.dita" id="GUID-3E3C5B0E-B54E-46F7-AE72-FEAB3C36351F"/><topicref href="GUID-36C5768D-896B-521C-B4D2-C41C0AD85F3C.dita" id="GUID-DFD60B5A-4315-44ED-AF64-1146A7BE4B49"/><topicref href="GUID-A9DBE9E4-8239-526C-9D57-447DA628EE59.dita" id="GUID-AC493E1F-2514-42E3-86FB-B91A295D3F96"/></topicref><topicref href="GUID-786984BD-ADE8-5EF1-A819-F402F5703A80.dita" id="GUID-89574EB4-017A-4861-96B9-6118CDDFA538"><topicref href="GUID-BB6C60B4-9D34-5AC0-A4FD-3B604A35B8BD.dita" id="GUID-98CC8438-16ED-4725-AA96-4C645F0FCB63"/><topicref href="GUID-D1303B75-607C-5C75-B8DB-39571E182C7F.dita" id="GUID-C85051FC-A9EA-44E2-B266-E2B7E99AF9F0"/></topicref></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-CF0A4B91-B438-4F7C-AA51-042CCED41015">
+<topicref href="GUID-5DD1010C-1648-5086-BA80-BC25F3C7A2C4.dita" id="GUID-4EEA3CC4-6970-4930-8EB9-940CEEB5B306"><topicref href="GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita" id="GUID-84B26508-39FB-4647-93A4-75EC52F8D11C"/><topicref href="GUID-C1F71368-E35A-512D-A9DF-F81491F35E62.dita" id="GUID-C29BD074-DC1A-48F6-BA6D-F64C21E36B2D"><topicref href="GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115.dita" id="GUID-7C6DE61C-C2DC-4668-B2DF-2A0C040793AC"/><topicref href="GUID-9A5D0303-6C22-53A1-86DA-0431F726010B.dita" id="GUID-D992CE3D-AFBA-4003-A98A-7DC87150EC74"/><topicref href="GUID-036FCEAE-8137-5764-A512-DA1EE06DFCB8.dita" id="GUID-6B77965D-438E-4FAF-BF6D-A61219D269E7"/><topicref href="GUID-D4AA635F-DF24-541A-A452-192DDBEE4142.dita" id="GUID-393BE637-3489-46B0-A0DB-508AD2855416"/></topicref><topicref href="GUID-C290FA5E-8E41-5D19-B8C1-F88491EE6388.dita" id="GUID-9A29E93F-ADE8-44F1-99D3-29DC98CA0D92"><topicref href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita" id="GUID-1D546B8A-1348-4AEB-9750-06727808E84A"/><topicref href="GUID-CADAABB4-C957-502E-BA4D-E9614C0D3878.dita" id="GUID-7F041966-0F61-4653-91B0-B959A09F5DA7"><topicref href="GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita" id="GUID-3A36C497-8130-4947-8DBF-659C1683A001"/><topicref href="GUID-AA978F65-C25B-59DC-82BC-6892228EA3F9.dita" id="GUID-69DA21BB-3695-42F8-B62E-B8C0C1CF78B7"/></topicref><topicref href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita" id="GUID-7F2F2F4A-C4B0-4AAF-8D93-77607B4780D0"><topicref href="GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita" id="GUID-D646933D-9261-4997-8D85-69CF9BE63021"/><topicref href="GUID-44CF5471-564E-5790-935B-51193A4978D6.dita" id="GUID-B7C45C33-3C3A-4BBB-9F6D-E2B9ABBB2825"><topicref href="GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC.dita" id="GUID-3EA74256-3FAC-4B7F-8C3A-6AEC868B9055"/><topicref href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita" id="GUID-83D93D9C-6225-45F7-8B0B-12A4163CBEBF"><topicref href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita" id="GUID-22347765-517D-4D4C-8FE1-B4B90B4CD63D"/><topicref href="GUID-400E4702-973A-5CAC-9F9C-3A10121F856A.dita" id="GUID-81B802F6-71F7-44CE-9086-D709B406B122"><topicref href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita" id="GUID-4B2D1C16-82A0-4F3C-A47D-7FD1DB996E84"/><topicref href="GUID-D7600D93-CFB8-565D-8200-7082B2CF1791.dita" id="GUID-C3D6041E-F75D-486F-A727-E05632917151"/><topicref href="GUID-EB76BA4B-D6A2-5651-A310-647E1D2CDEBC.dita" id="GUID-9F010C48-74AF-4BD7-BF67-1FB7A0B7CB85"/><topicref href="GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2.dita" id="GUID-078D3B17-CD90-4971-BB12-CF52E1F5B15A"/></topicref><topicref href="GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita" id="GUID-0E799B6C-2B10-44CA-844A-7408B840AFBC"/><topicref href="GUID-92D6CC11-C597-5D00-AAE5-866289B7462F.dita" id="GUID-5EFDE2F7-0526-4693-AA2B-3C7C8514714A"/><topicref href="GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita" id="GUID-56BEA4AE-45EF-4EA0-BE6D-2B62145711F6"/></topicref><topicref href="GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7.dita" id="GUID-FFA4E44B-AC8A-4EB9-95C3-8D726425B436"/><topicref href="GUID-5CFA3F21-3E42-5B53-8EC1-BC0F7F0E8136.dita" id="GUID-94D2D697-494C-4769-9B80-900D91B924C0"><topicref href="GUID-D099551B-6E99-5210-B44A-693012A29DD1.dita" id="GUID-B60F9F56-C1F9-43F5-86B6-D0E9BC1FD7DB"/><topicref href="GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita" id="GUID-77F931BD-C5AB-48F2-961D-AF658EC23456"/><topicref href="GUID-5E522208-E8ED-5E95-946C-5D87CF303F1D.dita" id="GUID-1AD062AF-9FDF-4352-B1A4-D8380221E915"/><topicref href="GUID-7BB6C3A0-7FCF-5614-9940-B3630E5FC114.dita" id="GUID-926724B8-7A12-4E29-993F-804CAF0603D5"/><topicref href="GUID-21C03739-FF80-5874-A32B-F22DED13D18D.dita" id="GUID-674AEA2E-D75B-4B70-A16D-0F6073BE6D3F"/><topicref href="GUID-15A686A8-942E-54F8-BFD4-402323979C5A.dita" id="GUID-411A25A9-1AFF-4DD4-8578-2FFCB69BBDDC"/></topicref><topicref href="GUID-F854D45A-A8CD-5B9F-9A59-C30A87F0955A.dita" id="GUID-302569B4-054F-444F-BC69-18B44592720E"><topicref href="GUID-2E96D6CC-1C1F-5C30-A315-9729D07D1605.dita" id="GUID-CB753014-C65D-4178-8066-01423C475AC3"/><topicref href="GUID-45B7FE73-2AB2-54CA-89D7-FFCAFD3B7915.dita" id="GUID-CB307AEA-209C-4C24-92F6-4B7EC7AE7290"/><topicref href="GUID-CC686E6C-FECB-548E-984A-15F7B9742DCB.dita" id="GUID-D8847AF4-34B4-4AAA-A96C-E20DEC97F54A"/><topicref href="GUID-5AAE8371-E146-562B-B8AF-149FF981693C.dita" id="GUID-B7041B7F-723D-40A8-B382-3CC5DA58CAC6"/></topicref><topicref href="GUID-4CD6C5CC-A91B-56BE-825F-5B10B63627DA.dita" id="GUID-E41F1DA5-C667-4210-8CF4-611D65EF4048"/><topicref href="GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita" id="GUID-81C46670-3BB8-47B8-BD9C-E4BB20AC75A8"/><topicref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita" id="GUID-0F743FA8-61EE-497F-BFEA-46648693C823"/><topicref href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita" id="GUID-2124A721-B3A9-4FEC-98F8-9C40F4026225"/></topicref><topicref href="GUID-DD27A452-8B0F-5C6D-A2E6-FC21145468B6.dita" id="GUID-87D2B63B-AE8C-4EEE-A6F2-9242F89E169E"><topicref href="GUID-7FCDAC24-BFEF-590B-B569-04AA262EBF06.dita" id="GUID-76B98DC8-E2C6-4E76-8A6E-EEEFC591A966"><topicref href="GUID-1E2DB50A-D8D7-595D-8448-77F057655E82.dita" id="GUID-AE249FC7-3CCD-47FD-824C-819746B04A7B"/><topicref href="GUID-AAE39139-B377-5122-A2B0-98708EA00614.dita" id="GUID-EE3B6247-F513-4620-925E-34F8CC29E0D0"/><topicref href="GUID-133999E8-0ACB-5929-949E-82BB16F8E267.dita" id="GUID-86F52B6F-798F-44B7-8A3A-27B637EB1BFB"/><topicref href="GUID-5D5BF7E5-4105-572E-81B5-0E61E1AA443E.dita" id="GUID-0D2BD9D4-9257-4BE8-BA26-E43206233547"/><topicref href="GUID-B79B6DD2-40C5-591B-AF56-5ACD167C66F5.dita" id="GUID-E82F86FD-FADE-4D7E-A846-5C5FDFF7082B"/></topicref><topicref href="GUID-3FD2EADD-DC46-516D-B88D-DA523F51C5E3.dita" id="GUID-28F05CDA-EC5B-4699-A6B8-8F516372B868"><topicref href="GUID-91ED5F9C-216D-539D-B4D0-E6F2E087773E.dita" id="GUID-73FC6AFA-CD1F-4C43-886F-35DA0112D11E"/><topicref href="GUID-A09AFA5C-7B2A-503C-A218-987F2F9BF7B8.dita" id="GUID-6C4E369B-8039-4520-A285-F01DAAAB32E7"/><topicref href="GUID-D8D698FF-08CD-56B4-A6BF-E185A25F6988.dita" id="GUID-6AA8B102-1E2C-47A5-92A6-9CC057A168B8"/><topicref href="GUID-1B363B7B-35E9-5CD9-BC44-A19D94DA1D21.dita" id="GUID-A9EE5380-07CF-4B63-96D3-3D9FE1EFE49D"/></topicref><topicref href="GUID-2F9BCBC4-A657-5B16-824E-5E96DA22AD00.dita" id="GUID-13D35A0C-6219-4957-8775-8F89940D138B"><topicref href="GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita" id="GUID-73E6E7E1-BDA1-4D1D-80D9-45177D7B9EE4"/><topicref href="GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7.dita" id="GUID-D9B2E00D-2B5B-4417-AA4A-4942CD61B08C"/></topicref><topicref href="GUID-179099DA-1CD9-5912-B41B-363C132C7A86.dita" id="GUID-1137000C-64B5-4129-825B-EA051A05FEBD"><topicref href="GUID-6FE94423-9563-5F31-95EB-504479144B05.dita" id="GUID-EA4B4AAC-5BC7-4A3B-B845-D38338D29556"><topicref href="GUID-3FD5C609-3727-53B6-900F-ACBE59F62E4A.dita" id="GUID-31BA4AE4-AD28-4DE0-9074-E59413D89578"/><topicref href="GUID-62166BC9-D0BC-5070-BC57-2A1F4948BAFE.dita" id="GUID-BF7804C1-7FCA-450B-8863-E1089C7EB44F"/></topicref><topicref href="GUID-9A3E0279-4F87-594D-A987-66DC77F408A0.dita" id="GUID-C2920730-2A6E-4B6B-B758-D2832F617F1F"><topicref href="GUID-FB185094-9868-5CBB-9CDE-51D7AB029450.dita" id="GUID-B415B654-0363-474D-87CE-24AF908ED8CA"/><topicref href="GUID-F9F45DE7-6688-5C31-90F0-0BEA72E74034.dita" id="GUID-1E5C9170-0468-4804-A387-B926FF041AE7"/><topicref href="GUID-0B95131E-6B7E-57A0-98B1-0B405207E0C4.dita" id="GUID-3CA1EDF2-C67F-4FC6-A1D8-3F01CC336C08"/><topicref href="GUID-653A92FB-F752-5210-8C98-9F107D74DC67.dita" id="GUID-547443E0-2600-4E2F-A1A6-ACFD20DF600D"/><topicref href="GUID-CBBE4BF7-B6E7-5607-95DC-F1C7D3711BD0.dita" id="GUID-FEDE9A08-72A0-4EB2-96EC-19D504CB7514"/><topicref href="GUID-E76DBFC7-E15E-5AB6-AE8D-72CA1808DBA2.dita" id="GUID-4D2341A2-EF51-4DD5-B24C-E1D818482696"/><topicref href="GUID-0DA1FA9A-0F61-580D-922F-02B33CEA09D6.dita" id="GUID-D8CDDA54-662E-4CC4-BFCB-814ADDC54B8F"/><topicref href="GUID-4263CC05-EF13-5A2C-875C-72F3C2F6AB57.dita" id="GUID-E4B9952B-A587-4440-B622-299437FF9E88"/><topicref href="GUID-DF4C1226-E4D1-5701-BA55-8701754129D1.dita" id="GUID-9031857F-501E-4AC1-AA74-255F07367B37"/></topicref></topicref></topicref><topicref href="GUID-1DF2D6EC-C445-5A0C-80C4-9C46AAA6EE44.dita" id="GUID-83309CD0-717E-4E5C-8219-F4DD209FF189"><topicref href="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita" id="GUID-6499589A-760B-4E94-A120-94C4C3EBA685"><topicref href="GUID-21909CF6-B810-599A-A486-01BA1BF21F35.dita" id="GUID-48D2EFA0-FD03-49A3-B94B-3584127D8636"/><topicref href="GUID-6C8F9EF9-F323-5423-B73E-4E26BCD2737E.dita" id="GUID-BADF2358-A5F4-4BF4-9D27-A31CB945F9CB"/><topicref href="GUID-232E2D33-8BC1-5CC3-A4DF-2C99900E1083.dita" id="GUID-30FA1CBD-DC08-4E02-B804-947BA1546580"/><topicref href="GUID-70B9796F-8CF3-5DC4-93B4-0B1FED936169.dita" id="GUID-9BCDFB52-B734-4739-A04D-C967A1628B1C"/><topicref href="GUID-385BB488-5C32-58A7-8401-F3F0A0707DD9.dita" id="GUID-B20C0FE9-162B-455B-B260-7440D25EED1B"/><topicref href="GUID-DB1D3045-2DC5-5C50-B430-526674369DC6.dita" id="GUID-789D68FA-83BE-4D0B-94EC-C0FC12E81168"/><topicref href="GUID-0C71B9C6-0782-5667-932A-07D770748DCE.dita" id="GUID-688060ED-A778-4781-9CC6-8AAA8A4331AE"/></topicref><topicref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita" id="GUID-ECF0F553-D848-4D6C-A9BE-807D9D14FA02"/></topicref></topicref><topicref href="GUID-E7BB0B0F-FC27-5428-81C0-1AB9CA426571.dita" id="GUID-4C1F0B14-4BAC-475D-993B-4A26762FF71A"><topicref href="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita" id="GUID-06EA6506-2FF7-4018-AC37-739895312572"/><topicref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita" id="GUID-57B47F0F-3838-454F-8D14-9BA62B3FC095"/></topicref><topicref href="GUID-63816E09-46C7-503A-ADA0-E350C7ACF3C4.dita" id="GUID-3B777C30-4E0D-4479-99BF-EA21D7E0CD83"><topicref href="GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita" id="GUID-318CD0CA-2572-4B5A-BE15-54C4A7873D43"/><topicref href="GUID-91F971B6-CA7A-5FE4-B10A-6CADC935C3B4.dita" id="GUID-FB82B7BE-980D-48EF-9686-4D6D4503B987"><topicref href="GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita" id="GUID-CCEEE71B-2F88-4C8A-8C11-A8281422B721"/></topicref><topicref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita" id="GUID-2EF1F69D-A865-457B-A59F-128713A50320"/><topicref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita" id="GUID-A9111649-A720-4D23-B614-A1655DFE0656"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-BE8931C9-15E8-4F70-B238-C644EFC5BE9A">
+<topicref href="GUID-1DE5CDAD-8D71-5384-9E98-5665D5A4C792.dita" id="GUID-3B581533-5C58-450A-B3DD-AF5487478BFB"><topicref href="GUID-E2252589-DCFB-5272-8FB3-701712D7F417.dita" id="GUID-F13B1737-9CA9-423B-9B38-856EF278E424"/><topicref href="GUID-288C200C-760D-52A2-8FC7-E179E5FB1A2A.dita" id="GUID-237D609C-E11F-4BE9-BF14-2F0303FDFAD1"><topicref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita" id="GUID-A3F77752-F334-486D-8BCF-E3BF2A1FF184"/><topicref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita" id="GUID-29008AD2-2BED-43E7-9EF5-C610C7E33D2D"/><topicref href="GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-4-1-6-1.dita" id="GUID-DBBA870F-C64E-46F8-9B55-954561223493"/><topicref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita" id="GUID-DBC6A32D-89A8-4E09-ABD2-9E6696256533"/><topicref href="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita" id="GUID-457F3033-F0FB-4ECE-A824-CA4717484C47"/><topicref href="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita" id="GUID-658B7316-8D37-4BD1-8F8B-03DE5BDC26A5"/><topicref href="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita" id="GUID-4CF3E6CF-47C2-44B4-B04E-B928B3DFEC7A"/><topicref href="GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1.dita" id="GUID-37939CEE-86EB-4CE9-B83B-D87A04452B62"/><topicref href="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita" id="GUID-4E7FA76D-0EA0-44D2-9A9B-9BDDE069141C"/></topicref><topicref href="GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita" id="GUID-7C96BEDC-23C0-4C9B-B5E3-57D95E3EE77E"><topicref href="GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita" id="GUID-2C25BEC9-7B7C-4F0A-A238-CE612B7DF539"/><topicref href="GUID-98499337-5CB4-5A9C-907A-95FF57775983.dita" id="GUID-ED44FAAA-D7B7-48FD-85B2-2A4DC3E8CEB8"><topicref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita" id="GUID-60443376-86C8-4DD4-A8A5-81B8AF24FD02"/><topicref href="GUID-9E00A9B2-9656-5569-B164-B7EFD2B2A9F6.dita" id="GUID-6D21E663-4F30-4E5A-B63B-4A393745AE09"><topicref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita" id="GUID-701AEE06-E043-4A68-AAD8-FBAD0B4D485D"/></topicref><topicref href="GUID-95EA435B-918A-4B68-8983-1D22B7840BA7.dita" id="GUID-9E1C0CC6-8C15-4C20-B93E-C59C6A0E51F5"><topicref href="GUID-B57D7C53-DFDB-4590-8227-EA251D1ABBC7.dita" id="GUID-3300E404-7F3C-4A0C-A902-2DB71EF5EFE5"/><topicref chunk="by-topic" href="GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita" id="GUID-1B66B4FA-278C-4A59-94FA-0F9EA8206253"/><topicref href="GUID-E9B97347-D703-4758-A5CE-423A6CB4E474.dita" id="GUID-41585ABF-4EF6-4DA7-B65F-44D2D5DEC3D3"/><topicref chunk="by-topic" href="GUID-330FBB90-E622-4FD1-A189-64656F68A10D.dita" id="GUID-6A9B7062-8508-49F0-96B1-928E20113708"/><topicref chunk="by-topic" href="GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41.dita" id="GUID-212FD485-CF2D-4A66-A86F-77D9F92BA175"/><topicref chunk="by-topic" href="GUID-B340078C-9EFC-4017-8F43-B0BBCE4935DC.dita" id="GUID-FAD4B410-0BC8-4C97-87B7-4F219B4FDDEB"/><topicref chunk="by-topic" href="GUID-795ED4C0-7C82-41DE-AD5B-AC69A426E2A5.dita" id="GUID-53FDADBF-D958-41A5-8592-8F324EAB1033"/><topicref chunk="by-topic" href="GUID-A257C677-7155-413A-AC5C-1DDF71DF1187.dita" id="GUID-4673B0B0-F2F6-4272-98D9-76F385A34503"/></topicref><topicref href="GUID-BDB622BF-1CFA-5F1C-81FB-5579C8599689.dita" id="GUID-E7312963-637B-4773-A855-75B709BC3231"><topicref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita" id="GUID-63A6E7A7-A8DA-4005-AFC2-A050DB41A21B"/><topicref href="GUID-55A1A47A-A7DD-5B1A-88E1-4818CB65B782.dita" id="GUID-0D53D685-FDA6-4AF5-88CE-78338F6C64AA"><topicref href="GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629.dita" id="GUID-F848A8B3-C652-4165-8FD4-F37C43DC4BBD"/><topicref href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita" id="GUID-B2C87B3B-8742-4BF5-AC50-0919C81CD6AD"/><topicref href="GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita" id="GUID-136BB87E-CD20-432A-AA5C-783D7E825EEC"/><topicref href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita" id="GUID-73F349E1-620F-4AE1-A81A-EAECAE21C351"/><topicref href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita" id="GUID-B02DBE2C-1BCA-48C4-83E4-D4CF9D24306C"/><topicref href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita" id="GUID-1E07BF50-9479-4552-B0B4-26DAFF6027F6"/><topicref href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita" id="GUID-60F71422-67E3-4E4D-90BA-D4BC1E611BAB"/><topicref href="GUID-36BD6059-6547-5754-8BE0-F8051A838C14.dita" id="GUID-6F63747C-C009-4DF5-9D0E-4AF567D7D161"/><topicref href="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita" id="GUID-26DC3CC2-CE23-4A25-81EF-B2E5B41C4C50"/><topicref href="GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita" id="GUID-BFB7A52E-3FDB-4DB0-BF12-1A645772D5BA"/><topicref href="GUID-DA1D89FF-52BD-5876-B7A1-300F5EBB9884.dita" id="GUID-3F39087F-1F0C-4CF2-9AFF-C31500D93DC6"/><topicref href="GUID-D038D77F-A6B8-5A18-8978-4981AE8D0F35.dita" id="GUID-0AC38E4F-18CB-40D5-BC46-03FB53F55E9E"/></topicref></topicref><topicref href="GUID-13574CBC-893F-5756-825F-1E14A85E9C90.dita" id="GUID-BBC57BDC-BA17-44D5-91F7-8FBA742570E9"><topicref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita" id="GUID-BD994E5C-EACB-4DA0-8660-3972AE13FD2A"/><topicref href="GUID-C82A6822-DDC5-5372-A830-6BCF517F1526.dita" id="GUID-D5F2A4DC-60A4-4FCA-9D63-B7BD07E696F1"><topicref href="GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E.dita" id="GUID-9E2BD77A-5D50-42E0-BE51-BF3AD5667FF7"/><topicref href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita" id="GUID-79FB569B-207C-489F-8618-47AC05EE240C"/><topicref href="GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita" id="GUID-44736007-424A-41E5-8599-DF5EDCC4592D"/></topicref></topicref><topicref href="GUID-FC735256-6CB5-5EED-8E7D-42EFA039E6FD.dita" id="GUID-534FFE4E-713E-4725-AB85-DBEA57FEF099"><topicref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita" id="GUID-6E877265-FCCA-4471-8B70-8318B0A220BF"/><topicref href="GUID-39958349-2761-5532-A87F-EABB9EB68D10.dita" id="GUID-CFE50AD3-3809-4690-BC0C-79993A802C6F"><topicref href="GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9.dita" id="GUID-EC8A6790-6FDF-4F4B-B7AD-EF731B5EEA5C"/><topicref href="GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C.dita" id="GUID-3B2627E0-1B88-46F4-B36C-589B7AA6F9B3"/><topicref href="GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4.dita" id="GUID-9F245A55-213E-425C-826C-E1C0B6BE7FB7"/><topicref href="GUID-AAA27EE5-E323-5822-A339-690316C2D9B4.dita" id="GUID-0BCEE44C-1AC3-4BAD-9776-A3CF8F09DCA1"/></topicref></topicref><topicref href="GUID-5C678281-46F3-53C8-8D5A-93E51EC9E3CF.dita" id="GUID-F635D780-FAA9-4C15-89EC-4F8A76FEEEAD"><topicref href="GUID-3074D4E5-25EA-5DA0-877D-6E3086DCBDB5.dita" id="GUID-BE405139-B185-4AAF-A6E8-EC253EE0ACA8"/><topicref href="GUID-988CE67F-F5EB-52DB-95B8-A0AB48307EE0.dita" id="GUID-087EBA52-A004-4D01-8FC5-B49E747C8608"><topicref href="GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9.dita" id="GUID-0F5171DF-69F5-45E3-A725-110516575CB4"/><topicref href="GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita" id="GUID-4F7C0326-EFA7-4FFF-BEB5-485B64C12E96"/><topicref href="GUID-7022455A-E738-574E-897E-33243482D69A.dita" id="GUID-9693F0A2-9F74-43E7-8303-2D04C1FA2D81"/><topicref href="GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3.dita" id="GUID-298AC3DC-519B-45DA-8A20-6D7031E8F128"/></topicref></topicref><topicref href="GUID-9331EE17-1831-5D9F-A090-438E3D6D1375.dita" id="GUID-608058C0-9D70-4ED6-A472-FAE1FFAE1758"><topicref href="GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E.dita" id="GUID-7F78AAF2-5005-4554-A30F-7E378C3AA281"/><topicref href="GUID-28604BBC-1C43-56F3-8667-DAF869F38BDB.dita" id="GUID-5AC0E577-0AE9-4E81-B634-0C543006BD29"><topicref href="GUID-10E19876-85CA-5D45-854B-1F2C5A45A333.dita" id="GUID-E71F0BC6-7D15-46C6-B69A-440B42D06BF4"/><topicref href="GUID-8B7ABDB0-B016-5106-824E-D823F1D2959F.dita" id="GUID-0961162E-1E1F-44CA-AB38-E739B9CEA736"/></topicref></topicref><topicref href="GUID-C87EED5E-8000-5F73-875D-5C82117339A2.dita" id="GUID-BB435A13-122C-46D7-A13C-7B3560B1719D"><topicref href="GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita" id="GUID-80FCAA6F-3830-4F7B-9E82-852C02AEB5AB"/><topicref href="GUID-33488ED1-32F6-5D39-B264-5CDE3FEDFD2B.dita" id="GUID-F22AE227-15D0-439B-98BB-620AD547FCD8"><topicref href="GUID-FD530B98-B17D-54CD-A86E-B6FFF701D19C.dita" id="GUID-1EFB8713-42F3-4AF6-86C4-20D7A3542CEA"/><topicref href="GUID-F89F92BA-763D-5531-BF74-C6BF36A589CD.dita" id="GUID-3BC2CD43-A6AD-4807-A7BB-534BDAAE1716"/><topicref href="GUID-1C0707F8-9E2A-58C6-997B-23B57C7EFA93.dita" id="GUID-CEED2BEE-147C-4EED-99AC-0FB7802C72DE"/></topicref></topicref><topicref href="GUID-B4C8B3D8-0272-577D-A669-C0AE84D035B4.dita" id="GUID-41742A44-DEFB-427F-9A3C-082FF5F2883D"><topicref href="GUID-F25862A3-51E5-581A-9CC9-964791781E69.dita" id="GUID-BB9BA57F-89FF-4FBE-864B-A9BC3460DA66"/></topicref></topicref><topicref href="GUID-7DB86BF1-0485-5CBA-9554-4C474B0EC1FB.dita" id="GUID-3EE1462D-A1C5-44AE-B650-35AE3509D95F"><topicref href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita" id="GUID-5B4A0710-3F35-40E6-8ACE-8BD9D504CE5D"/><topicref href="GUID-74D3B534-B209-5884-B38F-DEDFB23B64CF.dita" id="GUID-A7B9FD45-E7E9-453A-9081-0F75DE8CB6FF"><topicref href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita" id="GUID-0804D04D-54DF-4EEF-833D-7706187CCC25"/></topicref><topicref href="GUID-ABD741AE-7F66-564C-895C-6E4682308CEA.dita" id="GUID-FCFEC131-6178-48CF-B793-69116FC1E7D3"><topicref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita" id="GUID-DA61C106-34D4-47DD-B416-EDCC1A1C9DE2"/><topicref href="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita" id="GUID-7FEAA87C-A0C2-4191-AA9F-9DAFB6410B37"/><topicref href="GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-4-1-6-1.dita" id="GUID-6F905712-F6B5-494D-A682-D3602A889B29"/></topicref><topicref href="GUID-9DFB1340-FA1E-530E-9372-DB6509CECA2B.dita" id="GUID-1F888C05-54B6-47A2-8C5E-8AC23E2A70E2"><topicref href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita" id="GUID-ED1EB0E7-4841-49D2-B055-C619BE9423EB"/><topicref href="GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita" id="GUID-DE1B8444-3300-4741-8C81-FC6D977CE51D"/><topicref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita" id="GUID-520A8F80-CBD8-4F77-88D8-393A496B4F82"/></topicref><topicref href="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita" id="GUID-916475C5-E4DC-4D09-BAC5-7214A0F804F4"><topicref href="GUID-49882982-0DA2-5021-BAC8-7DC77BDFD27C.dita" id="GUID-DC86F80F-F4A9-4A44-BFC4-C660A6F00D39"/></topicref><topicref href="GUID-B5509C73-9A72-5E4D-B9BB-733B10EF842E.dita" id="GUID-D3149BE8-5463-474D-BBA3-5EDF4680483C"><topicref href="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita" id="GUID-9028462B-F11F-45A0-B346-73BBAE0F42E2"/><topicref href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita" id="GUID-35F7A54E-25F1-41E9-BF49-3F598C62AC74"/></topicref><topicref href="GUID-BC9001F9-BA41-5916-B2B2-175E37D6F880.dita" id="GUID-C3FBF988-85B9-4935-920A-0F4CABD7EC8F"><topicref href="GUID-257E223F-1612-5978-982A-38DE8E08211C.dita" id="GUID-98F4BB50-D351-4FDB-AF78-81D412C71C01"/></topicref><topicref href="GUID-A68D1F27-FE7E-503E-B5B6-7BD555B88558.dita" id="GUID-149BA023-FEEA-4B7B-91C1-70EEB00CDE61"><topicref href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita" id="GUID-6BDC4850-F14E-4C8E-A2CC-58060E6970AD"/><topicref href="GUID-786A8188-AB4D-5C65-8BEF-50E45FDBE9A5.dita" id="GUID-11C861C9-E27D-4134-9B12-5088956C9AD2"><topicref href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita" id="GUID-2657A7B4-3A19-4182-9B60-A133CFF5AC15"/><topicref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita" id="GUID-023F3498-2D8E-462B-9A2B-B9D19C4E60A7"/><topicref href="GUID-A578ECBB-28C5-51C6-A040-4AE65AD38C07.dita" id="GUID-727D3D33-0D52-45F6-B41B-156439B57A10"/></topicref></topicref><topicref href="GUID-C11D2D1A-F901-5439-BEAF-37E4BDE13EF7.dita" id="GUID-D4964E6B-3FD5-4777-8A08-F3B8BDC98FF8"><topicref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita" id="GUID-DB5C648B-ECC7-4CA9-9285-3E6E74EE3AB7"/></topicref><topicref href="GUID-042868E6-88BF-5797-BB53-8E34283DCF16.dita" id="GUID-1833E10C-CFAC-4318-B917-62EE0DBF6504"><topicref href="GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C.dita" id="GUID-83D4FC75-D926-4E4D-A8F5-8E8A93F8AB55"/><topicref href="GUID-AD6CF225-CFF9-5F76-AA00-3535EA7D6FF1.dita" id="GUID-8BF52E9A-8EBA-4AA4-820F-1D640F6AB422"><topicref href="GUID-03866ADB-5916-5B31-BCF0-44F94E12B740.dita" id="GUID-E64190A6-6957-44C2-9278-C48B6C5D9B66"><topicref href="GUID-07CBDD99-CA8F-5CF9-B957-933C36D47195.dita" id="GUID-AF71B400-05F6-4D2C-BA89-11961636D821"><topicref href="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita" id="GUID-AAC58E90-EFCB-47C5-94D3-9FC4DA853F4D"/></topicref><topicref href="GUID-AFAB4B17-1E9B-562D-AC36-48C4B0FFDD50.dita" id="GUID-8759BBA3-762F-45BB-AC3A-33C8D1D6B9FF"><topicref href="GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE.dita" id="GUID-6B32FBBB-C703-4FF4-9010-162FEEFED18C"/></topicref></topicref><topicref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita" id="GUID-3DA314AF-1CA6-4EAD-BD2F-FDEC36856D31"/></topicref><topicref href="GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita" id="GUID-45D23EAF-15A4-4A17-8542-E690385B42C4"/></topicref><topicref href="GUID-53C0A250-287E-57E1-80BC-F66F9F9DD478.dita" id="GUID-8358C525-1B9C-42C4-B95A-EBF1852BB6CE"><topicref href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita" id="GUID-FDE892AD-2799-4C28-B0F7-608DFC748BB5"/></topicref><topicref href="GUID-419BD5DC-6264-59FB-8EF4-E5652440A060.dita" id="GUID-8F9A100C-00E9-4022-9B50-5D5FA695F128"><topicref href="GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143.dita" id="GUID-250F3D27-66E1-40DE-8DDF-B5ABD2F2AD84"/></topicref><topicref href="GUID-1708D9F8-1277-59B9-8130-BBEFFFF1F481.dita" id="GUID-BA5CE647-5559-4D93-A3A0-95BD7C21FF11"><topicref href="GUID-08304A3F-4331-5936-984E-74A1F35905B8.dita" id="GUID-AC6246A2-9618-4D2E-A68D-0F18610FDE13"/></topicref></topicref><topicref href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita" id="GUID-1F8A7B31-FC7E-487E-AFD9-2CC79E09C92E"><topicref href="GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB.dita" id="GUID-43BDF23F-FC5B-4813-BB63-469ECBEDC870"/><topicref href="GUID-923C50A1-813A-5B51-A630-FACFB8B35B3B.dita" id="GUID-021C767C-3CEC-47F6-8BC6-B7E0E8005D9F"><topicref href="GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita" id="GUID-A77EE1D3-07C9-4386-AEFB-00F5C402B28A"/></topicref><topicref href="GUID-48ED7013-B1B7-5E86-AC09-599C4499191D.dita" id="GUID-0F2250B0-12E1-4978-82D1-8561B9EA266D"><topicref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita" id="GUID-59EEC773-D0D0-4B38-9A2E-17490CC32B69"/><topicref href="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita" id="GUID-3F2C6ECC-4A01-4737-8AA9-7D7CD100F48D"/><topicref href="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita" id="GUID-5FD5B677-FB2A-4E4A-A88D-E0D53D48136D"/><topicref href="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita" id="GUID-F4516103-3C5B-4CEB-B4B4-7B5FF22D4226"/><topicref href="GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1.dita" id="GUID-C6C295E4-D622-4B50-BC71-6D1717966054"/></topicref><topicref href="GUID-EB15EC74-BCCE-591D-8308-210C22CDDDDA.dita" id="GUID-238CD65A-CC76-4A40-A04B-6333F5FF240B"><topicref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita" id="GUID-E919ECD1-6A6A-4BF2-92E3-F2F8559EAA00"/><topicref href="GUID-03D132BE-5B90-50E1-88D3-D66289C02444.dita" id="GUID-FA17AAB7-80B8-44DC-8654-1FC7CE689CF0"><topicref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita" id="GUID-04DD80D3-8F85-41D5-B5EC-DA6A6FB32A05"/><topicref href="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita" id="GUID-880874A5-452A-4C8A-9C9B-3F05866DC3F7"/><topicref href="GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita" id="GUID-C4D0CDB1-810D-4BAE-B8B9-5BCDE3EA2FA4"/><topicref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita" id="GUID-A1C555C8-8D62-4DD5-B8D2-C2FC272DFCAB"/></topicref></topicref><topicref href="GUID-C6E3A784-EE17-5A3C-9D81-9662114FD923.dita" id="GUID-8D1A9C7A-1B81-445B-8873-135D05CBF0B5"><topicref href="GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita" id="GUID-1C662EEF-B976-4D65-ADDA-ACE386780EFC"/><topicref href="GUID-C2BF3044-CC37-554D-9496-C7B18AE94561.dita" id="GUID-4426B14B-5696-4B49-9F09-04AA9248F59F"><topicref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita" id="GUID-028315CB-53EC-4106-A92E-60B7D0445264"/></topicref></topicref><topicref href="GUID-46E12D78-5F1F-55B8-B7E8-1B4862CC70E8.dita" id="GUID-D03A82F7-CFB1-49D8-A661-4E3113C1855B"><topicref href="GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita" id="GUID-423B7C5A-65AF-49FA-A42E-BCFBE8C7193D"/><topicref href="GUID-4D94A4B8-392D-5657-BD71-F1EA54318C47.dita" id="GUID-7C58CD8E-8C08-43CA-98B1-BA322E584369"><topicref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita" id="GUID-F5FC03E3-1C9A-499D-BCC1-E904423C4F12"/></topicref></topicref><topicref href="GUID-DCA8273C-84EC-503B-9776-F141113B5CA7.dita" id="GUID-1725A80F-F588-4A3D-9727-3C38B6247612"><topicref href="GUID-ED109E7B-EFCA-59B9-92D9-EBFBC0F8BF21.dita" id="GUID-CE37A7E6-3773-4320-ABA8-9052BC98DE3D"/></topicref><topicref href="GUID-D6BED357-F10B-5C00-9F8E-2CA3A584C4E1.dita" id="GUID-0B8767CE-61EF-4542-B995-990B271F23D1"><topicref href="GUID-E92BEA67-CF92-5E0E-8B0D-F918178CE9E8.dita" id="GUID-F25AB57F-4646-404B-BB5B-9F32B394F57A"/></topicref><topicref href="GUID-74FB4D67-ECCC-51DE-9F9F-6D3B43E01179.dita" id="GUID-2F1BD2EF-0179-4A93-9FD3-F5C91349546F"><topicref href="GUID-61E219A3-7D9D-5AAA-B6B3-61F0749E12B3.dita" id="GUID-DECAF23A-2BD3-4B31-A383-94B6ABE303D2"/><topicref href="GUID-5EC09CBB-9EDC-549C-9C4D-036261BE8A4B.dita" id="GUID-6D85D1E9-6E6E-4B7F-8745-A42787C890B9"><topicref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita" id="GUID-123A5AF2-76E9-4847-9C09-190EF59DC224"/></topicref></topicref><topicref href="GUID-0EE3180B-4814-517E-A6DD-748136C17D55.dita" id="GUID-992A9BF4-9F00-44AC-9767-DE060D134511"><topicref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita" id="GUID-F1CDA4F4-048A-462E-9DD1-8F2C86F7F3FC"/><topicref href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita" id="GUID-425BEF3F-29EE-4F96-8576-963EB25727B8"><topicref href="GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D.dita" id="GUID-02D68205-DE05-4A42-865F-FA8E018556FB"><topicref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita" id="GUID-14AED479-D7C8-45EA-9E39-672605639F3C"/><topicref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita" id="GUID-C0D0CF44-2889-4B10-AD3C-BA26FCF26019"/><topicref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita" id="GUID-3F183426-1ACE-4500-8378-DE0E1B161983"/><topicref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita" id="GUID-6C8659D5-53EC-41BC-9DF8-2807EFB74E8E"/><topicref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita" id="GUID-6644A007-D684-4902-8DC7-CB541A7DA2A7"/><topicref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita" id="GUID-844F5068-9D74-49CA-9C9D-79DE00F8B567"/><topicref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita" id="GUID-800D54D0-B2DE-47A1-BAAB-BD8EEB8C58C8"/><topicref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita" id="GUID-9B992DEE-8C2A-4225-A47F-B28F4DC263C7"/></topicref><topicref href="GUID-B54E84A4-2F81-57C2-BEDC-48C6B3F6A023.dita" id="GUID-3930C922-80C7-413A-B0B9-8D1FDFB60B8A"><topicref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita" id="GUID-51606780-2BDD-4AD3-92F7-E1CFFE0EF7BC"/></topicref><topicref href="GUID-37934768-50D0-52A8-B594-B47D5E27722B.dita" id="GUID-EBC470BA-A180-4769-AEA0-9B4DA986326E"><topicref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita" id="GUID-7A7484B5-95DB-4C59-87B6-47A3A3DE7899"/><topicref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita" id="GUID-447AA75E-5410-463C-B6FE-57BC8D829A26"/><topicref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita" id="GUID-0D43A399-C00E-4C4F-B2BF-A93E4B520837"/><topicref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita" id="GUID-B6E5575A-9406-4ACB-96B9-B9FB7B5C1190"/><topicref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita" id="GUID-54654540-7067-4A4F-9CC9-FA69631B0B68"/><topicref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita" id="GUID-926B6876-17C7-4D63-8377-BB4421383D6F"/><topicref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita" id="GUID-EA29073D-FC6E-4E3D-ABC1-AEC5AEB7FA55"/></topicref></topicref></topicref><topicref href="GUID-17273087-B962-5E8A-8715-055C8BF34A5D.dita" id="GUID-7DA8AF9B-9888-433E-85A1-CABFF6259C5D"><topicref href="GUID-02659624-4C27-573C-BE2E-0250D860BEA3.dita" id="GUID-0285620A-50CF-4EE8-9110-D24E42DE576D"/><topicref href="GUID-152BF5C3-CE32-5174-A043-1B2D5D8168C3.dita" id="GUID-BFEC55BD-F7BF-4A0A-A329-06907372C258"/></topicref></topicref><topicref href="GUID-1AFD6B2D-C6CD-5BBF-A968-F68CCDFDA927.dita" id="GUID-D290B917-E49B-4B5E-8D0A-6794C8D1D850"><topicref href="GUID-DDF4EA2E-59D6-5FE0-9C61-C5A9CBD8D4FE.dita" id="GUID-BA7EBE25-33F3-4816-9F61-8AA229400CA3"/><topicref href="GUID-B60A4401-56C0-5C70-BAA9-020321FEDCBB.dita" id="GUID-59D5F92B-10A3-4087-9BD7-ECAC658E3081"><topicref href="GUID-AAAC7887-93A8-5F8D-98D4-44FAD26C228A.dita" id="GUID-742BFBC1-75AA-4307-964B-3A127AD3C477"/></topicref></topicref></topicref><topicref href="GUID-01103A66-532B-54ED-9D4D-39B81327E783.dita" id="GUID-FDAEEA67-DBDD-43F3-913D-19A59158D522"><topicref href="GUID-9782BF84-B91C-5D7C-BFAD-6B7E6A9ADD02.dita" id="GUID-0D418FC6-806D-4FA0-BC64-9916C7F97FA4"/><topicref href="GUID-B0F7EFB9-3502-50F7-BBE1-FD0DD7A360F8.dita" id="GUID-8215A5D6-2559-4457-8452-B66DDF5D3B6E"><topicref href="GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita" id="GUID-E302A683-5D86-4D41-A340-5F49DAFDEE3D"/><topicref href="GUID-3AD215CA-AF7D-561C-9D9E-FAFB50F1E37F.dita" id="GUID-B84CBD91-199B-4269-AA8E-DB50EFDCE80F"><topicref href="GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita" id="GUID-DCD6FD1E-33AE-4265-A8CB-4C017EEC024B"/></topicref><topicref href="GUID-9C251352-B5CD-5BD2-B420-E14E40E137B1.dita" id="GUID-6923FDD6-D8CE-4A8E-A2B2-2EFD8C8952A1"><topicref href="GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD.dita" id="GUID-B0C3C6CF-40E8-48B2-93A1-A63AFAD22244"/></topicref><topicref href="GUID-EC861957-FF3A-5C3E-8713-145DD505996F.dita" id="GUID-9972DAE9-BDDD-4134-863A-C63A88FFA5F0"><topicref href="GUID-F684F363-B361-5868-9195-41305428AB2D.dita" id="GUID-5E17CC21-41EA-4003-BEF0-64ED46C49959"/></topicref></topicref></topicref><topicref href="GUID-33FEE8F8-CD21-52EA-8EE2-502B12B3C463.dita" id="GUID-28DC3F5D-9CE4-45B3-8E68-5AC2410643C2"><topicref href="GUID-CC96F41D-5AC9-5D11-BD4D-073548EA5CC8.dita" id="GUID-1688BE18-0114-4405-81A7-0936EED8CBE2"/><topicref href="GUID-842D8124-554F-5D89-9E20-8B48EA539D2F.dita" id="GUID-6E78A965-89A3-4C66-992D-24479A32DC09"><topicref href="GUID-D9D2A600-89C6-5D82-8BC0-2C60D8F6517A.dita" id="GUID-38FEB302-83BD-4FD1-B464-9EEB293D9D6D"/><topicref href="GUID-FB2E1BFB-A06C-58D8-B175-1E7B10BCCB72.dita" id="GUID-3B3C5AF6-5FE7-47C0-BD07-9A38C3150A13"><topicref href="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita" id="GUID-0CEF1B1D-5EC5-4ACA-B9B4-F3A24214FB68"/></topicref></topicref></topicref><topicref href="GUID-97F83011-BE3C-512C-9599-028CBB92BD51.dita" id="GUID-73B60703-65EA-4E2B-9025-77483CBD9F50"><topicref href="GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438.dita" id="GUID-D68192D5-9EED-4D51-BD77-DA1EACB275F1"/><topicref href="GUID-B58DEF65-B08F-5D0B-98E7-EB8DB7082F8B.dita" id="GUID-C0C7711A-8039-4B2F-B961-8A625ECC41AE"><topicref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita" id="GUID-519916BF-F5CD-45FF-A0B7-6E6D3D25E1C8"/><topicref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita" id="GUID-520CD795-E5FC-45A6-8B6F-F0556B82051C"/><topicref href="GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita" id="GUID-CDFDBA92-37FA-45EA-B322-F8C751FDA3B7"/><topicref href="GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6.dita" id="GUID-1A3FA466-2DCA-4920-9D59-D780D0B87193"/><topicref href="GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD.dita" id="GUID-DD8ADA52-3326-4262-BA58-B0F5B8BD58A3"/><topicref href="GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98.dita" id="GUID-93419275-E01F-4017-B4FA-6A77271FD162"/><topicref href="GUID-B998B8FC-3DC3-57B5-A4E6-C4D903B4ACF9.dita" id="GUID-450F6897-397E-42AB-91E7-8C821834E168"/><topicref href="GUID-21E26B07-7E4D-50E0-97BE-C05CCD88B89F.dita" id="GUID-8CECA2FC-67C5-4A8E-AF87-40A41CEEAA9E"/></topicref><topicref href="GUID-412CB101-A92C-54E1-9518-79E94DD40A08.dita" id="GUID-D7799F62-6251-4FE0-B72F-4FE0E73E5F25"><topicref href="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita" id="GUID-125B5CFA-BAE9-47C8-8DAC-7D32741682DF"/><topicref href="GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita" id="GUID-F6988327-4202-4632-8876-FAF9B2A2E1FE"/><topicref href="GUID-87C81097-A892-5E45-A3CC-BE2C65A2FA70.dita" id="GUID-12205ED7-1B2F-4D6D-86D1-B16E7F550943"><topicref href="GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita" id="GUID-E6F46CCF-1653-43FC-B199-DEB76B444608"/><topicref href="GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita" id="GUID-4502C08E-95F1-4E45-84CC-D49630D3CB0D"/></topicref></topicref><topicref href="GUID-6F6B6C23-D5CF-5BE7-A001-EE87BC76A65D.dita" id="GUID-6C994864-7772-41E1-A049-0AF0DA50F21E"><topicref href="GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita" id="GUID-22685447-DFD2-4F85-8FD8-6E90064E67EA"/><topicref href="GUID-A721FC4A-03C6-59F7-A0D2-565C4828E5E1.dita" id="GUID-1EF04F4B-6EA9-4306-9EDC-402E8230C14B"/></topicref><topicref href="GUID-B61F5B98-E76E-52BF-ACB6-0C68314F190E.dita" id="GUID-F5669ECE-84A5-423F-A575-32DE3AF2E808"><topicref href="GUID-7226DB6E-93E9-57E6-B7AB-043E1C5E2A7F.dita" id="GUID-6F4EA048-20E9-4533-ABD0-EAB277157432"/></topicref></topicref><topicref href="GUID-3291A4CF-3CCD-53BD-BBB5-4F2389765B08.dita" id="GUID-C32D51AE-D6DF-458F-8A0B-5A80F5BEB860"><topicref href="GUID-98FBEA7E-78BA-5A64-90D6-4641418003B4.dita" id="GUID-F58548A6-EC8E-4BD2-A300-B3DDA4FF1266"><topicref href="GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita" id="GUID-834A9636-B30F-4DE4-96EA-8BA593971779"/><topicref href="GUID-752E6C04-D4AC-556C-84D5-E3D9D4BB6CB4.dita" id="GUID-CC4BED18-64A6-465A-B07D-6B032B1AB719"><topicref href="GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C.dita" id="GUID-03EDD806-691B-465E-AE97-7EC347FA5582"/><topicref href="GUID-6021BE18-3416-55DF-A628-0071024D7586.dita" id="GUID-029752EE-FD26-4AB8-929D-59CBF0F48999"/></topicref><topicref href="GUID-7636F898-8390-5C32-964D-66CEA62A60F4.dita" id="GUID-B655C512-6C6D-4496-93FD-A5C90F8BF63A"><topicref href="GUID-AFD7E241-7DC5-5C7B-A7FB-D0B6DCF95ECD.dita" id="GUID-00575617-8A94-419E-AD85-8E5079A54C2F"/></topicref></topicref></topicref><topicref href="GUID-803ABB5A-2E34-5F71-A5A9-0D475041185B.dita" id="GUID-90BA50F1-7FBF-4906-B9CC-6257C8D868ED"><topicref href="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita" id="GUID-F0A3030E-71F0-4EF2-A2B2-CD85005877F7"/><topicref href="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita" id="GUID-9F9B1BAA-EC66-4E5C-B9D7-99A02190FADA"/><topicref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita" id="GUID-A1764C02-295B-4F5E-B2F3-80FB130CD091"/><topicref href="GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita" id="GUID-8B649CA0-A6D8-4718-AEBE-4F264E734163"/><topicref href="GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita" id="GUID-8BBCE6F9-669A-49F4-B242-2B703D606857"/><topicref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita" id="GUID-3E59680A-5FA1-4872-870E-DFD8A3AC88EB"/></topicref><topicref href="GUID-EC4CE675-3EE7-58F7-A872-E72548B0C9A5.dita" id="GUID-12BCF09C-133B-4159-9C7F-BC65728CD2FD"><topicref href="GUID-174D98FF-6782-564E-9FDF-1AE32F770591.dita" id="GUID-CC0E461B-9C65-4BAF-A333-1AE5D10F1BE4"/><topicref href="GUID-567AB683-5D92-533D-B4D8-813E70316DA3.dita" id="GUID-3C5F8173-94F9-43CB-8B73-BB8430C91705"><topicref href="GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita" id="GUID-64B12647-9D18-4745-A97E-214C23EE6EDF"/><topicref href="GUID-DC704CA7-401C-54D5-85DA-B5EBF4362806.dita" id="GUID-E379C796-42D8-49DA-841D-A55020A95879"><topicref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita" id="GUID-A6499FA8-5A71-4357-9890-9EC99428214C"/></topicref><topicref href="GUID-DDBE3874-60B0-5CAB-A782-294A32412C0B.dita" id="GUID-52D2E040-1307-42CD-A12C-5959BDAAF7F2"><topicref href="GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita" id="GUID-CA56AE17-0ECC-4B7C-B967-D19F579286F2"/><topicref href="GUID-C25DEDBC-83B8-5502-BD2A-9561F81551A0.dita" id="GUID-8B70D3B0-41FD-4996-998B-C11DDCB84EE5"><topicref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita" id="GUID-0A88A4F8-E63E-4A40-81B0-88EDEDBA7876"/><topicref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita" id="GUID-E1507F36-4190-4937-ABF4-91A5DABB515C"/></topicref></topicref><topicref href="GUID-6EF91E47-F931-5AB3-9050-C545D9225E03.dita" id="GUID-25384D5F-0583-4F89-A460-86412AB0B87D"><topicref href="GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB.dita" id="GUID-ACEC5D8C-0A7F-43D4-A0AA-B046807EFF22"/></topicref></topicref><topicref href="GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita" id="GUID-3C3DEA09-22FF-4CAD-9D89-A1ADE57A9C5F"><topicref href="GUID-C05374FC-CF33-58C2-9442-B9EE78C81A4F.dita" id="GUID-9FCAE7E6-4397-459F-9952-94546CA360DF"><topicref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita" id="GUID-B3C882DF-812E-4F03-8867-F5A00CCBE5D9"/><topicref href="GUID-89EDF464-8DC5-5A2A-9135-3FE82EF40FF4.dita" id="GUID-7D4EC2E1-D8B3-4A9F-8F30-E3DE2B1E0922"><topicref href="GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074.dita" id="GUID-4A383F0C-A76A-4386-A6FD-022734C7AEC6"/><topicref href="GUID-71F41FAA-E549-55EF-B9F7-5F349EE96D63.dita" id="GUID-2208D541-E738-4F55-B78A-ACA1DBFA48A6"><topicref href="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita" id="GUID-DFE02B8B-5043-4C44-AA80-DA57B72CA60D"/><topicref href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita" id="GUID-DB79F261-AB0D-4B7F-A463-7E17A29E60A6"/><topicref href="GUID-609A4E83-F074-5A5D-A0DF-A95A7CDC8D2C.dita" id="GUID-E07121AD-5299-4006-A582-27468B837683"/><topicref href="GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6.dita" id="GUID-7EED09A8-C2D6-42DD-9557-CD37BFD86AF6"/><topicref href="GUID-57412030-6B02-592A-81D5-54D2767ED131.dita" id="GUID-309D33FB-F999-42AA-9211-594BCEE19CEE"/></topicref><topicref href="GUID-A7498DE3-E9A1-5921-9867-4254685CAC18.dita" id="GUID-F7457C2C-8000-451D-82B2-A87C2846E928"><topicref href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita" id="GUID-2092AA11-FC42-4CD5-8192-E4106355D66D"/><topicref href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita" id="GUID-B313E147-B45F-4A9B-9345-612C6596A5DE"/><topicref href="GUID-96B8657D-FC07-5D5C-8ADE-3B2167A9229E.dita" id="GUID-4E96E38E-99C7-4E01-A7B7-E0F04B0FF277"/><topicref href="GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2.dita" id="GUID-DAF7BE52-83F7-43E8-BDF7-0B02DCAFCB4F"/><topicref href="GUID-D0CD890F-36DB-5265-B2C1-8D632EAF736B.dita" id="GUID-8BD37A3D-25B5-471A-9571-8A6F058D551E"/></topicref><topicref href="GUID-C1A5C1C5-2D97-516E-9B0F-CCE02C33B47D.dita" id="GUID-8981B418-18A6-4E4C-A062-FC50AECBDE8A"><topicref href="GUID-14BAAB7C-35CD-5A43-B362-79F88C7712DE.dita" id="GUID-91AD7B6B-DF54-471E-931D-125900FBCE25"/><topicref href="GUID-A748041F-5925-54F8-AA21-C1CE8E0473AA.dita" id="GUID-BDE34E67-8C09-44DC-8D0E-BEA4F835D7BD"/><topicref href="GUID-3AB05112-0580-5FD2-AD61-5721090062F8.dita" id="GUID-BD189444-0EB8-4815-AA47-67ECB0761359"/><topicref href="GUID-12A754EE-7D90-56C8-BDA7-3293F34BE456.dita" id="GUID-61AF3BAE-6E67-401D-B551-8C44CC2926B7"/><topicref href="GUID-93EF4862-2395-5ED7-8446-A7FDA60535B1.dita" id="GUID-4CC0B947-CB2E-403F-80A8-A420DD285DEB"/><topicref href="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita" id="GUID-8BA07F85-2D11-4B96-BF00-653A7DFF8A8E"/></topicref></topicref></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-FE6C2663-31F3-45C7-A778-A4F074589E27">
+<topicref href="GUID-6425B722-4095-56E3-9198-70BA3E06C617.dita" id="GUID-2A1AE126-7E9B-45B3-9430-3D3F27DFF89B"><topicref href="GUID-C467E6CD-6656-55F6-BDDF-BFA4F187B14F.dita" id="GUID-A58538E9-F512-41FC-8BA3-C54774E6431B"><topicref href="GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita" id="GUID-48F121F1-609A-444C-9880-47A86602AEE0"/><topicref href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita" id="GUID-BCBB6C94-955C-491C-941F-CAFED8E001D0"/><topicref href="GUID-9652782C-D5A7-584F-A61C-1340D49478A2.dita" id="GUID-C8137DA4-16D6-4A28-8653-A63A18EC5B41"/><topicref href="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita" id="GUID-6D7649C3-5DD9-4C32-BEC2-16044F6750CF"/><topicref href="GUID-D7A8E007-CCCD-5E4F-A7DE-4D474C864104.dita" id="GUID-5FC912C0-F1CC-41DC-98C6-49054F27F0BA"/><topicref href="GUID-46047253-4471-502D-B48E-E1990E7F7962.dita" id="GUID-00A2C8E4-1F85-4361-A9FB-B524503331DC"/><topicref href="GUID-A81854C9-25F1-5C3B-AF3F-ECB7CFA26677.dita" id="GUID-5C53941A-2348-487E-A009-58F87BC8AA85"/><topicref href="GUID-765F43E2-39E8-53F5-881F-593F379623CA.dita" id="GUID-C7A7125B-7739-4056-92B1-4792D320BB9B"/><topicref href="GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01.dita" id="GUID-2D3559F7-0D7A-4E71-B37C-F7D0C8AE348D"/><topicref href="GUID-D5F57D81-6B59-5C7E-A2C8-A5E29873346B.dita" id="GUID-72715114-1F22-4255-BC66-D5A8580F7333"/><topicref href="GUID-7D1E2DBD-004B-5047-BDA5-21CD55D0A95C.dita" id="GUID-18E9B819-C549-4D8F-BF19-13CEB9CF4D55"/><topicref href="GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita" id="GUID-EA8838D2-4306-4CCF-9167-2592D92FCE3A"/></topicref><topicref href="GUID-057F1F82-56AF-5696-853E-79196A3D567E.dita" id="GUID-00F68E47-4371-4CE2-9A8B-5B83676E83C8"><topicref href="GUID-093516F2-9076-5A96-9BEF-F5A77F75239C.dita" id="GUID-BC2F03AA-24C7-4580-BB1B-A32D51E8FBDD"/><topicref href="GUID-E339A683-94E2-54E8-BB2B-286B11B0FCE3.dita" id="GUID-0700B7FB-F6C6-4CDE-9544-37EFBC2BDEBF"><topicref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita" id="GUID-7879A4B9-5ED9-4AEA-A4E8-33D62745B165"/><topicref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita" id="GUID-BB644A76-E570-40DA-8DDA-2CF16C33CCBA"/><topicref href="GUID-38BA60AA-074D-59CC-9B16-F7E5B10248FD.dita" id="GUID-032A843F-0732-4043-BAB0-E72CC8B69DA5"/><topicref href="GUID-128F20B1-4293-59C5-99B5-83BF43CA2F01.dita" id="GUID-EF2040ED-FA18-44F1-B073-6C211389F487"/><topicref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita" id="GUID-F7C116E9-2A45-4A45-9A24-535ACFA4FE45"/><topicref href="GUID-83A4D862-368E-5DCC-998E-90144BE18A22.dita" id="GUID-A43E4B92-0995-41CD-8ACF-4C2296333ACC"/></topicref><topicref href="GUID-CD0EF6F2-9515-5884-B979-C3C391B7DA07.dita" id="GUID-7863EFD1-1A19-4647-A5C6-C9E024DF191C"><topicref href="GUID-85CA1089-3F58-5E82-86A4-4674C893B25F.dita" id="GUID-16EFA312-3513-4E7A-8D39-643D2C47BA20"/><topicref href="GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4.dita" id="GUID-17ADCA61-89C0-40CB-A756-D66DF6093E0F"/><topicref href="GUID-67ADD402-0741-5FFC-BF53-B6172C438E88.dita" id="GUID-3F275BAC-6939-436A-9F36-529140AD5A8B"/><topicref href="GUID-243CF1A9-F3CF-5562-8746-1CB392CDB73A.dita" id="GUID-6EC37E54-7B84-4EDA-BA99-32B3E15B6B6F"/><topicref href="GUID-1B3D9B3D-D507-5D78-9E90-060C26D3F971.dita" id="GUID-8DD245BC-1053-4F32-BC37-B83E30CD532D"/></topicref><topicref href="GUID-399EAC59-643D-5DED-AB67-9F021CA5687A.dita" id="GUID-96E76BAC-4420-4CF8-8782-625C93C11C85"><topicref href="GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D.dita" id="GUID-2A42C4D0-788F-4349-90A1-47811F27312E"/><topicref href="GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67.dita" id="GUID-9E38E51D-6C9C-4D14-B6FF-F87AB9C37082"/><topicref href="GUID-FFE69A34-2FF8-5FC9-A295-5D3C05A2D7D7.dita" id="GUID-217E2406-F654-49D8-9B92-DDAC6F295236"/><topicref href="GUID-68BA05D8-BC78-583A-9958-553424EE3C9B.dita" id="GUID-BD80C980-CF8B-4F74-85FB-63B15923C384"/><topicref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita" id="GUID-7D31095F-2E2D-4B19-883F-83DE54598198"/><topicref href="GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45.dita" id="GUID-18B97EA5-D1EE-41D1-B448-0EE9B8D7D2AD"/><topicref href="GUID-770EF3C4-15D3-5A0F-B5DF-A95B27A0DB05.dita" id="GUID-0D1EF399-0F7A-4C27-A1DC-CDFC8F578360"/></topicref><topicref href="GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita" id="GUID-DC79AE6E-9160-4B84-B15F-AF8143C6F271"><topicref href="GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16.dita" id="GUID-A3AFE90C-6BD1-491D-8CE3-0033BC1281A9"/><topicref href="GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C.dita" id="GUID-1862B544-28AC-42AF-8263-8B6334B2FBF2"/><topicref href="GUID-85CE1EC7-E791-57B6-99BA-720699ABC880.dita" id="GUID-6F31799C-8EB2-4307-BC0B-FF6ED70868E3"/><topicref href="GUID-2992031D-E176-5BC8-8B89-A5DC2A4B35AA.dita" id="GUID-5EF45316-BBE8-4DD8-A685-D76E6396B67D"/><topicref href="GUID-7690509A-C5EA-5835-9298-11E22F49FC2F.dita" id="GUID-96B180F7-E880-4297-B0AB-760B7E76598A"/><topicref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita" id="GUID-BBB371D1-1DE0-47EE-89B4-D00068D2ABC2"/></topicref><topicref href="GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita" id="GUID-9C5648A0-E5FD-4100-9CFB-DD88DBF9B391"><topicref href="GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE.dita" id="GUID-09A55058-AE16-4602-B1A1-10C091DEF579"/><topicref href="GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita" id="GUID-E08AE047-5573-42DD-93DC-E1971F147BAF"/><topicref href="GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita" id="GUID-6C7899FF-390A-45BD-B510-84951F06BF6A"/><topicref href="GUID-E211C047-FCF9-5B48-B9D9-97C3D093E19B.dita" id="GUID-D8C788F7-5155-441F-AFB9-DF7B5E60E5E5"/><topicref href="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita" id="GUID-4490730B-97CA-405A-A820-473E91C7482D"/></topicref><topicref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita" id="GUID-42BA5F4A-691F-48CD-BBD4-E4DD9B0D54C9"/><topicref href="GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita" id="GUID-0569111A-1038-4119-886B-DF64B2A238DD"/><topicref href="GUID-4C47ADC7-3624-5C39-B632-F227452C420A.dita" id="GUID-3CCBC2CB-62A5-4A17-89C2-0D0D3BCB2663"><topicref href="GUID-27F39152-0AF2-577A-A367-BCEE9060902E.dita" id="GUID-F4B2C107-331B-439B-9C66-19D02C9F8356"/><topicref href="GUID-82ABFD08-D354-5955-8F95-9F22859FCE2A.dita" id="GUID-67363266-FB66-49BE-94CC-839A1721A7DF"><topicref href="GUID-A1598248-EE3D-5ED5-A431-02DCEBEDF472.dita" id="GUID-80967DEA-D6BA-4A56-B4E1-0682375700D7"/><topicref href="GUID-7F8F830A-990C-5DDF-9D8F-28C89BFA755A.dita" id="GUID-A49DC820-837F-4F9A-9F81-88151D37B5CF"/><topicref href="GUID-53017B71-9399-548B-BD1D-C68FC535A543.dita" id="GUID-5D49BB25-C68B-4819-8028-68C0DE60F0E8"/></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-742647FA-4356-436C-BE56-76DE727DC7FA">
+  <topicref href="GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01.dita" id="GUID-1FE2B88D-1939-4626-A4CA-620E83A2AAB0"><topicref href="GUID-82438A0F-819C-5CDC-81DC-A8BFE3AA4A6A.dita" id="GUID-E943B81D-0550-47C9-AE3B-BB7A2E41267A"><topicref href="GUID-7821C498-70A2-5D3C-989A-58CEBAE9162B.dita" id="GUID-721FA7AF-9E61-4821-A985-60E530B9BD9F"><topicref href="GUID-5F1E5D73-27B5-5C08-848D-361AC2F15B96.dita" id="GUID-B2015255-FDB2-40B9-AA5F-8E07D63F88DF"><topicref href="GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita" id="GUID-0D2CDCB7-C091-472A-8A08-6D369259996F"/><topicref href="GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E.dita" id="GUID-F93A0D9C-336A-41D9-91C8-0F2E48511D93"/><topicref href="GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C.dita" id="GUID-A00F01B2-88E9-4397-A129-459685E4E398"/><topicref href="GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita" id="GUID-41F25C2C-85EB-4045-A989-D6CDE155B6A2"/></topicref><topicref href="GUID-3A14EB6E-2F28-51F6-9D80-1AFCFFBDDF9D.dita" id="GUID-C9CFCA47-AA62-465F-8F78-7082D3A856FE"><topicref href="GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F.dita" id="GUID-5A13EEFA-0DDB-4655-AE63-B1AD19C0773E"/><topicref href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita" id="GUID-16F4DCEA-465C-4F14-A7F8-F434BBE74E0D"/><topicref href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita" id="GUID-ACA751CF-4B02-4D0D-844D-D8B694ACBFB7"/><topicref href="GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736.dita" id="GUID-AE0DF956-CD88-4D70-93E9-7DE2EADCAD7B"/><topicref href="GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita" id="GUID-B86BCA93-9F77-4957-B8AC-750B730A6C20"/><topicref href="GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita" id="GUID-C209ADB7-4F56-4B3A-BF37-6B2A2410A64E"/></topicref><topicref href="GUID-229C2057-F187-5019-AE21-AAA5803DD0ED.dita" id="GUID-2E36F0F5-AE57-4E43-B20A-F43B100A8713"/></topicref></topicref><topicref href="GUID-DBD4964D-7728-5E57-8BBA-824F98D0CCF8.dita" id="GUID-DC5ED0AB-CFD8-4BBB-B289-DA2ED933841A"><topicref href="GUID-7510C121-A23F-50E0-8130-16AF552BC497.dita" id="GUID-227D90D4-203E-4580-B77C-A2EBB6EC0D48"><topicref href="GUID-69B46D92-8D07-5B42-B603-3F725977AA4A.dita" id="GUID-7BF14E16-259C-4C87-A7A6-371FFE956709"/><topicref href="GUID-45E1953A-DEFB-5E48-AC96-443A3234F913.dita" id="GUID-52D9A931-CB78-4EDC-8503-807A0142CC4F"/><topicref href="GUID-0B5DB521-831C-5016-BD38-EC7E86F41513.dita" id="GUID-C1712F8C-603D-4927-9C58-B9BD56FC8308"/></topicref><topicref href="GUID-B01427FA-B857-532B-B2F3-BD90CA042233.dita" id="GUID-5C381BF6-D5CE-43F9-98FA-294DBBDCD892"><topicref href="GUID-F532D96F-7CB0-5CC7-9382-0CF44F7C0234.dita" id="GUID-5ED66C2B-8C91-464E-B125-DDDC40A8CAD3"/></topicref><topicref href="GUID-2B026328-010F-5245-B3A1-6E8C97BA4BAE.dita" id="GUID-82F422B5-A95A-42A5-B8E0-984F7F20E34D"><topicref href="GUID-6A78F618-09A9-56A7-8C58-98C353BF0788.dita" id="GUID-0D64ACCA-757E-4DB2-85A4-BBB745D7266F"/><topicref href="GUID-9EF1B1D2-7048-5198-8BC2-3FC960F073E4.dita" id="GUID-113AE69B-D40A-46F2-B55C-2AC17E1263BB"><topicref href="GUID-6F6AEFB5-4D0E-5324-A3CD-1E533002DB45.dita" id="GUID-10CE84BD-28E3-4E8B-8BCF-6BEC0C8FD096"/><topicref href="GUID-19450648-4400-57A3-95FB-FC8AE73CD0A8.dita" id="GUID-62FA5F13-F352-48B3-9E77-36F893191DFF"/></topicref><topicref href="GUID-3A42464E-CAA2-5A8C-B52F-2A6B1D095544.dita" id="GUID-87FF4D87-2C6D-4D06-9C54-B9D80672F3E5"><topicref href="GUID-28D13F63-9D72-5D70-BE81-3B4E54B3A8C1.dita" id="GUID-5057F8ED-358D-4F5D-90E3-7CB751B687B6"/><topicref href="GUID-81BE3473-E3E4-55F1-897F-635A197AF1DF.dita" id="GUID-39A0F2E3-8482-4FE4-8F51-D64E358B818B"/></topicref></topicref><topicref href="GUID-D5987006-A871-5F4E-AEA0-5A3B092D996A.dita" id="GUID-D6AAB104-9E4A-4A93-AE32-E015C6620934"><topicref href="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita" id="GUID-8E93B127-E36C-4201-A2FF-74E5722C5944"/><topicref href="GUID-6822E7FA-D055-5693-8872-8D0E8554A734.dita" id="GUID-4C2BBC43-838D-4C29-AAB0-E46A918CC1A3"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-A6B37B2E-FCB3-4692-81F4-AE3CD97E2682">
+<topicref href="GUID-FBCBF8A0-7922-5881-A1C5-5DB41630E75A.dita" id="GUID-E990AC74-C34B-4572-B1CE-742EDE9C8CD4"><topicgroup id="GUID-DE6234C5-06B7-4BA8-ACDA-957AEAC5EAB5">
+<topicref href="GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51.dita" id="GUID-F1DEE648-991F-420A-A823-A2FD54F0FEE9"><topicref href="GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-3-1.dita" id="GUID-85BBB98A-5950-470A-900E-5A6D27BBE7BA"/><topicref href="GUID-0CA63AEB-9A80-51C6-AE7F-E747D6B3B789.dita" id="GUID-1319B317-8B81-4D4C-A9B7-D2FC003C9419"><topicref href="GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-3-1.dita" id="GUID-478D4DF2-37D0-40B0-9355-193B34DD078A"/><topicref href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita" id="GUID-2D144B62-DE91-4506-BACD-B427A6381DD0"/><topicref href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita" id="GUID-31055F33-53CB-4255-AF68-17005263F63D"/><topicref href="GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita" id="GUID-F6E6FDB6-DB24-457F-A70E-B9E1AD45AAC0"/><topicref href="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita" id="GUID-FA55041B-E2C2-40B3-85E5-700B627B9641"/><topicref href="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita" id="GUID-7612D31F-689B-4250-8600-6F3F05E33A5B"/><topicref href="GUID-27C3F32C-4B66-539A-8561-EF442E0F0A77.dita" id="GUID-A2856F64-5AF7-4C8B-BA90-D056F3D9EC8F"/><topicref href="GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita" id="GUID-DE828EC5-A315-4B0D-8773-37B91CFA4998"/><topicref href="GUID-6F716E31-490E-5CA1-871A-D8D1661E3078.dita" id="GUID-512E4BF7-B4B6-4AD0-B14E-CE2922D1F488"/><topicref href="GUID-D01C4682-619E-501E-8992-9F7FA35D7682.dita" id="GUID-787934DC-8532-48EC-8239-C342E5C632E2"/><topicref href="GUID-1A22E574-831B-5D00-98BD-0DFFA9CC09A0.dita" id="GUID-749940A4-3D5A-4672-89DE-3174CCEE612D"/><topicref href="GUID-910780A3-D6AB-5EE2-966A-5F228AC5804F.dita" id="GUID-A3DBB4BA-B968-4FB9-B762-E9E88009CFED"/><topicref href="GUID-F2489DE2-18E2-5C5B-A174-49B5B7A64A7C.dita" id="GUID-975BAF65-9A0F-47F0-91F4-E59D0E1E684D"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-B8908163-3539-4602-AAD8-3E1AD46D2ACD">
+<topicref href="GUID-45A03C42-652C-59BD-9A21-6346A96310DB.dita" id="GUID-1ED8B559-96BF-40EC-B22E-D122BF8152BA"><topicref href="GUID-5B63D14D-007D-566F-A065-1A25FE4B97A3.dita" id="GUID-F420591E-C1A9-43E7-A360-C747290739CB"><topicref href="GUID-D14CD452-BFCE-5EBA-B73B-61AA045D23E4.dita" id="GUID-76FE6C65-5611-4761-9B9C-0FB06E4BD2D2"/><topicref href="GUID-B0D76734-1DB7-5465-91AE-BB3521599A75.dita" id="GUID-00B6B501-A92B-4C20-8329-6B7ED0B300F2"/><topicref href="GUID-132DBA2F-B913-5565-9720-015777630C22.dita" id="GUID-B219F55D-5934-4EDA-AA44-B6E9A79E8588"><topicref href="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita" id="GUID-44A37BA3-0798-44CC-B69F-CA50DEF49F65"/><topicref href="GUID-2022F702-9899-5798-8932-D70119C7177D.dita" id="GUID-21F2D380-D475-400D-85BD-D86AF511B0A5"/><topicref href="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita" id="GUID-3CC51F83-2F51-441C-8FB1-4D98BC156758"/><topicref href="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita" id="GUID-0B5F958D-3E36-4FBB-A48E-CE3D435013FD"/><topicref href="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita" id="GUID-64F0FE1E-D052-4D79-82C6-71C3F9BC1A7E"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-4E4E4BED-6DCE-4835-8CAC-08AAECF4A5C7">
+<topicref href="GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE.dita" id="GUID-52272566-7A27-44CA-B3FA-051000F13398"><topicref href="GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita" id="GUID-0CE5A078-EE99-4402-A6A0-2B9BB11A714E"/><topicref href="GUID-30BB4435-C95C-5016-A86B-4E98311F9FE2.dita" id="GUID-BD9390B5-BF22-4973-8432-D5EC03F86A98"><topicref href="GUID-C9A1CC1E-2398-5887-8C64-7B8EE0B22022.dita" id="GUID-3E182CE9-DBB4-47CA-B14A-75AE953A4811"/></topicref><topicref href="GUID-50BA6AEB-E968-5CCA-8F5D-A65969263D90.dita" id="GUID-A240D5EC-AC70-4D4E-AF2B-6119A5260815"><topicref href="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita" id="GUID-B0E9D363-6A3D-408E-932F-94126CE9824D"/><topicref href="GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita" id="GUID-4E9DAFB3-74F8-48F8-8A8F-AB7969A771E2"/><topicref href="GUID-1C683226-C142-5C7B-BD20-060058352B08.dita" id="GUID-557CC79A-53A6-49FE-979A-D47469094CC1"/><topicref href="GUID-36539894-580E-5774-AA79-7F640E8C59E1.dita" id="GUID-A6FBB504-F1D6-40CD-8101-EFD467ED562B"/><topicref href="GUID-998DCA78-2488-5D6D-B5B3-D86C52F32823.dita" id="GUID-57B62170-A169-4B09-964F-FA1B6742D0ED"/><topicref href="GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita" id="GUID-A5FC532E-BF9B-43FA-AFCF-59654DB257A2"/><topicref href="GUID-277BD68B-70CF-5798-A77D-E2B901FA613B.dita" id="GUID-8AC308F7-1064-4DF0-A608-CA9CAE68C413"/></topicref><topicref href="GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E.dita" id="GUID-25DEDEF9-1ACE-4B4E-8602-1C06CC941CA4"><topicref href="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita" id="GUID-8454EA55-5CC6-4650-9CFB-C932EE082C99"/><topicref href="GUID-B10B6363-9FB9-562C-8DCA-42FEF8D5413B.dita" id="GUID-DBB5276B-E470-43C0-B4CA-11B0D392E118"><topicref href="GUID-B3248893-9944-5544-84EA-0F4D40992152.dita" id="GUID-36B186B2-689F-4354-9D6E-DD6841E19F38"/><topicref href="GUID-8579426F-C443-558B-9380-FED79D4BA8F4.dita" id="GUID-3C72FE5E-E35D-4233-854A-48C1CFD7104E"/><topicref href="GUID-F5B0FE6A-6DE6-56B5-89A5-684CD2602B40.dita" id="GUID-373ADFAB-0905-4F1D-89F4-E46C06329DCC"/><topicref href="GUID-785B2F0B-E7E6-5DAE-98F1-6C32BED25964.dita" id="GUID-107585FA-275E-468B-B1A5-0918CE92D238"/><topicref href="GUID-898FF7CE-969C-5FE1-9346-34BCBE637A57.dita" id="GUID-B145D0DA-75A1-4DA4-9E31-3461234D5068"/><topicref href="GUID-0747B7D8-86B4-51DE-BC71-7FACE61EB5E2.dita" id="GUID-35821839-96B5-4C8A-9528-A0A691E344DE"/><topicref href="GUID-84921F68-9449-564A-8527-203FA84AF2AF.dita" id="GUID-44BDB7EF-9CE5-46CD-BF3E-18A4B8F8F423"/><topicref href="GUID-24A149FA-B82A-53A2-83E6-4F625D7041D7.dita" id="GUID-0AF3044E-1BC3-45C5-A209-6184ECA3CB5E"/><topicref href="GUID-A278C1A2-0724-5800-B353-46809C44C142.dita" id="GUID-72942C08-31C1-4EFD-9382-7B75970B2C0A"/><topicref href="GUID-79B699F5-5EDE-5561-A385-19ED02248398.dita" id="GUID-90123358-72A5-483E-8EA0-29AAD1114183"/></topicref><topicref href="GUID-4F4B97FD-B0C7-5FDD-AC50-9611B240A11E.dita" id="GUID-2C2CA81D-7CF9-40A0-AA83-9A21B40E5ED2"><topicref href="GUID-7BE83158-B818-57E4-9A8C-43E5D2C84687.dita" id="GUID-9E856632-8E81-434F-8E37-1C6C2D18D0C7"/><topicref href="GUID-FCBEE38E-FA6D-5C09-8B17-F18EF3E2E826.dita" id="GUID-F745716A-650D-4762-9A14-2D820856CE21"/><topicref href="GUID-47419CFB-163D-5A4E-8A00-C73773353BDF.dita" id="GUID-A77A240F-7961-48C2-94F8-5ABA915AE675"/><topicref href="GUID-580471E3-7DFD-5325-A8B9-B3E7FABF872D.dita" id="GUID-D19819BA-8CDB-4A44-BA3E-EE74D9B1F7F4"/></topicref><topicref href="GUID-FACE863C-8667-5726-B668-C39AA0FBFC68.dita" id="GUID-2FF4D061-DA70-4584-9503-ADC72723A659"><topicref href="GUID-12CB6E0E-69CD-51A6-8966-3621CB26E1CD.dita" id="GUID-A949B284-9DAD-4D3B-B8BD-8D3868498603"/><topicref href="GUID-118C8F84-2BB3-5F60-B6AB-22F0F1B3349E.dita" id="GUID-AFE37B1C-8178-4763-8DF8-27B38058A98A"/><topicref href="GUID-2052461A-DF29-5DD0-A7D2-B46A50EAD762.dita" id="GUID-731CD5A6-1468-4E2A-B2EB-EE7F0589F1F7"/><topicref href="GUID-39897348-B27A-5C02-B65C-C26D122BCAE4.dita" id="GUID-A3A31BD6-7DC5-4F02-B333-9335CC7AF6CE"/><topicref href="GUID-05DA872F-F70E-5085-8AA9-12B6A0B71917.dita" id="GUID-334313A0-CE99-40DE-8910-8982DE5043A5"/></topicref><topicref href="GUID-5544728C-A53D-57F0-B8D8-F7B694C8B5CA.dita" id="GUID-5E304084-2551-4E5B-B85B-F2129C395003"><topicref href="GUID-120163D6-2E49-5D91-A746-2C8C4C944461.dita" id="GUID-267A36F1-A527-4415-AF13-0B0A5CBF27BE"/><topicref href="GUID-F40E34F4-5B8B-523E-82B6-7717D8FD26AB.dita" id="GUID-11488629-86DB-40D8-B560-21AFB2AB41EE"/><topicref href="GUID-BDC03973-45B0-54BD-99D1-298F4F59DB95.dita" id="GUID-F1620BA9-298E-43F4-AACD-3DB3F26EFEA4"/></topicref><topicref href="GUID-766F8505-4536-57A6-A788-EFCD8CCF875F.dita" id="GUID-57858F8E-94FE-4823-9EBA-0C899299AB39"><topicref href="GUID-C61B979A-921A-5756-8D7E-691C3DDD3437.dita" id="GUID-9D8C228A-54C4-443F-AEB8-A2D54A169CDF"/><topicref href="GUID-27A393D5-C7DF-5541-855A-2CB0E4C46D6D.dita" id="GUID-05AA7473-67AB-4FEF-BE39-000B574685EA"/><topicref href="GUID-EFA822E0-BE80-5EB8-82E5-1659BDB1BDD9.dita" id="GUID-5DA7C291-D03A-4F55-88AB-AACE282BF81E"/><topicref href="GUID-05FDC28B-F033-5FDC-8F41-71BD212C27E2.dita" id="GUID-954F8E00-DCB6-4035-8ABF-472BF1AE4AF3"/><topicref href="GUID-FF28B015-DFC5-5656-9066-FBCCBA2818AF.dita" id="GUID-7921D43C-7D81-4FF6-839C-95CC790321BF"/><topicref href="GUID-71F33868-0C59-5CE8-95BD-304066DB8946.dita" id="GUID-41E177FD-71EF-4F6A-B569-5B3BE9362B7F"/><topicref href="GUID-5F3B814F-30B2-5325-A83F-A48ACCF095EB.dita" id="GUID-4745320D-2F46-41C9-A120-2D86061EB61D"/></topicref></topicref><topicref href="GUID-3FAB9077-3EC3-5539-B391-D11456362513.dita" id="GUID-6D5059C8-CF48-40CE-8803-6F3CBED2E07E"><topicref href="GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita" id="GUID-1A569ECB-B785-4968-A67A-E943BC4358EC"/><topicref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita" id="GUID-37C128EC-61B1-4522-9D79-AE5840B59A4D"><topicref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita" id="GUID-6166A431-A6A8-49F5-BE48-4733C481F014"/><topicref href="GUID-576BA55E-3CD3-5867-B55D-60CE137595F2.dita" id="GUID-52694B17-BE99-44E4-8770-3635065678DE"/><topicref href="GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita" id="GUID-4DC4C093-591A-4684-AF23-547CBCF164E3"/><topicref href="GUID-C7FB54C4-43C9-562A-A18C-2818AF624774.dita" id="GUID-293A7B7C-0E87-4C50-9AEE-A4AAEED245BA"/><topicref href="GUID-5592E9C1-D490-538F-9B11-5EFB72DEDBE2.dita" id="GUID-35472DA3-10CD-450C-A92D-51AA505ED8CF"/><topicref href="GUID-A9EA16CE-2F80-5344-827D-0C2ED5812788.dita" id="GUID-4CB10FB3-5525-4F11-AE0E-471BDDA30D7A"/><topicref href="GUID-2F987147-1435-55F1-B61C-8413C4AD8424.dita" id="GUID-6857343A-33E7-4103-89C3-03D486C78A32"/><topicref href="GUID-1A8B20B3-CA6D-58A6-9DA0-8EB3965EDE7A.dita" id="GUID-D1620DD4-B107-4E81-879A-DDB1973EC55F"/></topicref><topicref href="GUID-E9C608C0-AC22-5267-BEC4-207C9758F968.dita" id="GUID-208575FB-D83F-4C92-B3F8-6A59309FE3B9"><topicref href="GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8.dita" id="GUID-D69727BE-1CC1-4D61-9694-9893D3AF8158"/><topicref href="GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3.dita" id="GUID-08FF22A9-3A15-4B45-935B-37173732CB77"/><topicref href="GUID-A0E75BD9-E3C6-5D28-B53C-B76260F63B89.dita" id="GUID-BB0E1DC4-924F-4FFC-883E-E2DCCB2849D3"><topicref href="GUID-B0F9CDEC-A953-51D0-B7A3-8B341A7C784A.dita" id="GUID-2BF24C0F-FC03-4F02-A6F2-A257987C2189"/><topicref href="GUID-2D93660B-8206-5D20-85F5-6FFCF4549127.dita" id="GUID-F16707C2-9112-4D5E-942E-7F2E1FD266F5"/><topicref href="GUID-DF1C3E6D-9133-530B-B318-66F0E6CDB3AD.dita" id="GUID-E0306DFE-1300-4F2B-B067-52E5AE3B00FD"/></topicref><topicref href="GUID-A0F56EA1-49BA-5306-9ADC-A0647270F720.dita" id="GUID-6CEB31AA-71AB-4AAF-B447-EDFEAC07413C"><topicref href="GUID-983C5DB9-85EF-541E-B494-19E3E617914A.dita" id="GUID-2B9DEFE1-EC72-4E1D-A425-D0CD04B3AB7E"/><topicref href="GUID-95448841-5E5B-54C4-85A7-DCE6D078E036.dita" id="GUID-FE6FF271-F533-4F27-A8B3-8508678AC763"/></topicref><topicref href="GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita" id="GUID-39ACB4B4-B018-45C1-A1C3-7979BCF4D353"><topicref href="GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01.dita" id="GUID-92236966-0423-4102-AC1C-1636A97A462A"/><topicref href="GUID-22F74DA4-2CAB-5CA9-877C-0FC2F891E259.dita" id="GUID-CB0EA3C4-7F09-4279-9E56-6B09D73401E0"/><topicref href="GUID-9C6D94B2-8F03-5A4D-9AEC-7C3FEA0E1ACA.dita" id="GUID-6E4077FB-BC35-41E1-9A1F-F164A334D035"/></topicref><topicref href="GUID-EEA5F7C6-8916-5FB9-8367-002F41A576D4.dita" id="GUID-08D0013E-C53A-4C31-ADB9-7FB666EE76A6"/><topicref href="GUID-6EE0CB66-A759-5E0C-884D-90895F35F267.dita" id="GUID-415C64A0-D665-4D03-879D-7B1370267411"><topicref href="GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B.dita" id="GUID-D2A2C54B-8F94-41F9-A16A-238FCCA15F49"/><topicref href="GUID-442F2E69-87B5-54E7-B62A-70B742432372.dita" id="GUID-B76ECD04-436D-4AD2-9CDE-8DB959A2868A"/></topicref><topicref href="GUID-F8D12BC4-82C6-59CD-93C9-506FF872C622.dita" id="GUID-E0CDE87E-5F53-4EED-B3E0-3C3753DFCD53"><topicref href="GUID-1824B323-AAA8-5403-A4CF-D1F530CBDAF5.dita" id="GUID-99743823-03EA-4D3D-AD2E-0941C6EC3A3B"/><topicref href="GUID-34E19A27-F61D-5190-8709-151523CB0BE1.dita" id="GUID-6F5D1554-0C9E-458C-8219-C27C312E808D"/><topicref href="GUID-FDF3546D-1A16-5F71-B9E4-8DA0F02CC7A3.dita" id="GUID-95958538-D34A-4E14-920A-4F52D9F4A318"/></topicref></topicref><topicref href="GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita" id="GUID-BD0348F1-94D1-49A8-9424-3EFB379E6634"><topicref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita" id="GUID-3B09794D-3C47-4A7F-83B0-6A1B50A1B32F"/><topicref href="GUID-5B6BF7FA-21D2-5A63-8217-6D36F6B8C033.dita" id="GUID-0AF5527E-923A-47A4-AFCE-C11DB70A12BD"><topicref href="GUID-74CBD580-01F8-5C68-A5FD-6331AAE7DF62.dita" id="GUID-DAE26C16-444C-4550-AC3A-79FECCC8FD7B"/><topicref href="GUID-A928E956-9800-5277-B0D3-34BBB2707AE1.dita" id="GUID-6CC1D950-0E35-42CE-982C-020DF5336E3B"/><topicref href="GUID-1F68D172-1090-5930-BD7B-AE7276667104.dita" id="GUID-D716E7BD-B32A-4FD7-A19A-67FF6AFCE62C"/><topicref href="GUID-E79D47D6-3FF2-5858-B092-29D39A1CA2B6.dita" id="GUID-D191CA3C-C86B-493E-9620-AB5CE6B13CB0"/><topicref href="GUID-88E610C1-6662-5A12-B950-B695A7EB776C.dita" id="GUID-892780B7-93AE-493D-A32D-538E124C1675"/><topicref href="GUID-F535B464-3125-549B-9130-E59B64C4B865.dita" id="GUID-C60C99E5-4C4E-40CB-A4C6-8F587BD03155"/></topicref><topicref href="GUID-79CE15C5-B595-5336-AE87-DE92990F6D47.dita" id="GUID-9A12E1AF-4BCA-4DBE-94DC-4CD1FBC70723"><topicref href="GUID-18D92465-3F62-55CF-8229-EE811FD5F568.dita" id="GUID-4F850C20-C83C-404E-967F-5BB2B02C8C69"/><topicref href="GUID-3ABE9420-2668-507E-B857-E62DC50654BD.dita" id="GUID-DD5BE78A-B66B-482E-8ACF-C39EA7691260"/><topicref href="GUID-2C767F68-2150-55C1-B801-AB6EB58FD97C.dita" id="GUID-75CAB7FE-1F77-4F35-9707-CA65FC36F30B"/><topicref href="GUID-3B0BF8FF-88AB-5BF4-9F04-5F82A3998699.dita" id="GUID-C841A434-C8AF-458B-AB60-4214C2017928"/><topicref href="GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1.dita" id="GUID-7A969D76-BE5F-49DC-BEEC-6C8E01527E45"/><topicref href="GUID-38A656D3-F830-5E26-8167-3638B6BC5DF6.dita" id="GUID-9EFC26D7-909E-4FD5-A1C8-6DA014536F37"/><topicref href="GUID-A8EADD99-561C-5077-834F-DFC2CC4AE6E2.dita" id="GUID-CE2FDA18-6ED1-473E-B352-ED35A22C48D6"/></topicref><topicref href="GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita" id="GUID-689CFA6D-9AC4-4C20-887E-DF89CEFC19A3"><topicref href="GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E.dita" id="GUID-A1B2FC2C-FE4A-49D4-8E0F-5258F06AC2EA"/><topicref href="GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita" id="GUID-29D7DD81-4131-4689-88E1-6272E4501D0F"/><topicref href="GUID-535954FD-2501-5C80-AD86-AC73A86B18B5.dita" id="GUID-9B007B0A-6AFF-4B36-9F18-245E6523D79C"/><topicref href="GUID-386FD0B9-D502-577C-BED2-5F31D9CA67CC.dita" id="GUID-FFF2DB67-BFE9-4ABB-A91D-9DA3F893623D"/></topicref><topicref href="GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21.dita" id="GUID-D2F7282E-F554-43EB-9A24-E0D6371C9564"><topicref href="GUID-50196C0E-39AF-5E94-888B-9901C934CCE7.dita" id="GUID-9EA90FD1-C4E3-45FB-8CB1-E42D5C73BC82"/><topicref href="GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5.dita" id="GUID-A85387A6-0F9D-4305-A439-854FF3FF76A8"/><topicref href="GUID-38B11AE2-DB91-517F-BFE4-E72ACE96EDF5.dita" id="GUID-77A2F6A8-19A3-41A8-8FD2-B7B003FA3B39"/><topicref href="GUID-36718217-C9F7-5ACF-8DE7-7D83FBF435DB.dita" id="GUID-770DB5C8-6604-4F32-9FFD-25285BC39825"/></topicref></topicref><topicref href="GUID-6BF09365-09D7-5596-B802-1BE1757F51F6.dita" id="GUID-1B37633C-E313-41F2-BEFE-67428B10AD69"><topicref href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita" id="GUID-6833DD1B-F7FA-48B3-8BCB-6CF6E7558D10"/><topicref href="GUID-3C552587-B983-5725-898D-81CC31458DE8.dita" id="GUID-5D86D987-65CA-4A22-B348-1583267EBB01"/><topicref href="GUID-72151EF7-52C0-5DF4-AC69-07087F31D9E8.dita" id="GUID-F3F8B4B9-EDCE-4365-9DBC-58746385E283"/><topicref href="GUID-5CF5B8D6-C477-55D2-A036-2C090FA41D33.dita" id="GUID-C3813E19-E7A8-4872-9D23-5FAB430D1111"/><topicref href="GUID-2488FA07-BCAB-55DC-8724-C1C3C0DEC0AD.dita" id="GUID-A895D62E-F77B-40E0-B771-3F3D5B41AE3D"/><topicref href="GUID-E3210353-EEC2-56CB-AD75-309E5DCDEDD1.dita" id="GUID-340DE573-D1CB-4B7B-9BEC-01736AB55A2D"/><topicref href="GUID-3690B530-BFFC-554E-9692-3D7C4C0BC803.dita" id="GUID-039B765C-6032-4FE5-891B-A5F749AED8CC"/><topicref href="GUID-7CE86E8C-0187-5679-B87D-71ABDE479048.dita" id="GUID-1A4F1D4C-F6EC-4BDC-8F61-1F0FF42C897B"/><topicref href="GUID-8A2029C7-1258-5B12-B217-DE3EE4340B72.dita" id="GUID-C15CDE89-CEF2-454C-9952-F13677EE9A49"/><topicref href="GUID-DA4160B0-7B63-5C84-B3C6-190100530EDE.dita" id="GUID-12D5C650-474C-434F-A871-AE1DBE3F9C99"/><topicref href="GUID-31EB55B1-5A52-5ED1-92D3-C4B0222749B3.dita" id="GUID-6C10E339-6982-4241-9693-30D62B326798"/><topicref href="GUID-2277BB1C-C04D-56C8-9B9B-FBC2EDCA9B07.dita" id="GUID-3AB514EE-078A-46FA-B2CC-60BEC02F3170"/><topicref href="GUID-EB6A14CF-05DA-5EAD-AB68-F6511907DF05.dita" id="GUID-47B7C982-721E-4F80-9DA0-A9CA6C6F38D1"/><topicref href="GUID-C1BCBA03-4E64-5188-8D33-25B4121C1582.dita" id="GUID-E2262D17-4D74-415A-B958-CAD116B0948A"/><topicref href="GUID-82762D6D-7EF5-5061-9393-BBDCCC7212CD.dita" id="GUID-60F4893E-EEFC-464F-A34D-90E02CAAA7C4"/></topicref></topicref><topicref href="GUID-868D5B32-1CC4-506E-9C49-C86428B9A50F.dita" id="GUID-B90FFE6A-9602-4B22-991B-18CB6C20AF61"><topicref href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita" id="GUID-1E0488D1-969F-4702-B737-8FDF7B08AB3E"/><topicref href="GUID-25C3CDBE-8D53-5F1A-A4CA-993E1151AD93.dita" id="GUID-D22BA71F-B8E8-49A8-81DE-DD0DB384DA67"><topicref href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita" id="GUID-EF5D3C30-274A-4342-9A41-D272F375B558"/></topicref><topicref href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita" id="GUID-B0247654-672C-4B82-8BFF-ECA50E756548"/><topicref href="GUID-C6D3827F-8F73-593E-A339-B510EEB9771F.dita" id="GUID-911C3AE6-937B-458C-9252-C12DB05CC7D5"><topicref href="GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita" id="GUID-FB9F3EE2-46A9-42D0-B752-59D1906B6F7B"/><topicref href="GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita" id="GUID-412E39C5-A6F8-4BE2-84A8-3B6A65C4E262"/><topicref href="GUID-831F9AA3-0209-53DC-96C4-04157F22870C.dita" id="GUID-46DE94B6-7F4C-431A-8B6E-85F09721E022"><topicref href="GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E.dita" id="GUID-9438AF63-6C28-4A53-9541-871D3EF0876E"/><topicref href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita" id="GUID-20A486B6-9E5C-48A1-81AF-D07063A631C8"/><topicref href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita" id="GUID-C7284EDA-EF79-4211-906B-D02448661D6B"/><topicref href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita" id="GUID-CA5D5859-365D-41B3-A93C-EC2D754A525F"/><topicref href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita" id="GUID-0EC25BAD-FC68-46B4-874C-F62BAF0F9945"/><topicref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita" id="GUID-A71615E7-D596-4BDF-BF09-9A1656923DD1"/><topicref href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita" id="GUID-1D4BFA29-221A-4C55-A25E-139546DE6028"/><topicref href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita" id="GUID-44A13F5A-85E0-4890-B8A1-2722EB7009CA"/><topicref href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita" id="GUID-545F34CE-BA74-45A2-98EB-7B637CAE9176"/><topicref href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita" id="GUID-FC4AFF4A-78A0-4867-8F6A-D1A7DB5AE0EB"/><topicref href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita" id="GUID-EEDE0ED3-F64F-49C5-8983-491804AA5132"/></topicref><topicref href="GUID-481D4689-C4DA-50FB-9529-081EB9BD7901.dita" id="GUID-1553A073-3E8E-46F9-91AE-2FD3E366B156"><topicref href="GUID-EC33FF66-F15E-5316-8828-C6CFD57DB9E5.dita" id="GUID-D28A4F92-2009-4744-A028-213577D38C56"/><topicref href="GUID-321F406B-2C77-5F2B-9FDA-F25726188CE2.dita" id="GUID-6B8FE02E-7E3E-41CF-80A6-33D76665A22D"/></topicref></topicref><topicref href="GUID-582CAA4A-1240-5138-983D-D9C6EEAF5566.dita" id="GUID-414A3A4F-E3EA-42BC-B1B2-782D6C602910"><topicref href="GUID-200647EF-B9CA-5EEA-8760-71A9C1B063CE.dita" id="GUID-666DC280-DE07-42DE-A68C-ACD42813ED84"/><topicref href="GUID-B38EBDBA-2A30-5595-9639-6AE58C530DCB.dita" id="GUID-E88D29EB-2BB5-4FD1-8F78-B04DFF19E3C0"/><topicref href="GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita" id="GUID-232CFFE4-33C8-4656-B8ED-135CE8330E8E"/><topicref href="GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita" id="GUID-41737FC8-92AD-4B59-B4D5-6FE84D264610"/><topicref href="GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita" id="GUID-FA0CB62C-6A4F-4F04-976D-11C31DC1DB63"/><topicref href="GUID-B61EA8C5-0966-51DE-AC73-01DD34C7D3CC.dita" id="GUID-1660D897-B700-4A1C-A4AB-7FC3B31569BB"/><topicref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita" id="GUID-783793C8-15EF-45A1-B07C-7B8FA910F8BE"/><topicref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita" id="GUID-84442FF7-087A-43F2-9CCD-069477074F69"/><topicref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita" id="GUID-F20E39D0-A8B3-4F7D-B988-8925F95AFE9D"/><topicref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita" id="GUID-4600EFED-E079-4DBD-ACF3-76B21BE55DC3"/><topicref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita" id="GUID-E35B0D82-C7DA-423D-AC67-E0912C20A651"/><topicref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita" id="GUID-98ACA9D6-A1B7-4466-ABCA-9B90D8B45E7A"/></topicref><topicref href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita" id="GUID-306162A4-8D3A-490A-AE4A-ED50E16A8768"><topicref href="GUID-E0D622CE-5D10-5C6E-9998-545C016575F0.dita" id="GUID-6E364461-8A49-4762-A9D1-BE07DC343273"/><topicref href="GUID-5FB2141F-8B2F-5DAE-8FDF-58D7351C5848.dita" id="GUID-7F0C7DAC-C5CC-4D1B-AEE3-E81B1CEC234C"/><topicref href="GUID-22B535FA-6C8A-5B39-9CD7-6E85A86B7C2C.dita" id="GUID-A8312005-12AC-428A-BE30-692302CAE282"/><topicref href="GUID-C67A7554-256C-5392-8309-A0138CC4EBF2.dita" id="GUID-9A947160-EE45-488E-B2D3-C4F86AAF0BE7"/><topicref href="GUID-189DCEF1-EBCD-5971-9D7C-109F0C910802.dita" id="GUID-EE14321B-4DD3-4208-B827-BD9D61DCBB39"/></topicref></topicref><topicref href="GUID-02C9C31A-6563-59E4-BF46-129F4ED95087.dita" id="GUID-440D5603-5967-4F07-B240-265AF734D426"><topicref href="GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246.dita" id="GUID-971F6E3D-6F2C-40FA-9BD2-039B48C94D0E"/><topicref href="GUID-22A4F33C-4F93-572E-91CD-E93CD0B69B09.dita" id="GUID-E7DC1A06-10AE-479E-83A3-B31E01AFE28B"><topicref href="GUID-84AD87E9-B21A-52FC-B1E1-7287BA8A30D4.dita" id="GUID-A15394CB-6191-4412-BC65-5CBD54C97635"/></topicref><topicref href="GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797.dita" id="GUID-5B9446F7-7574-47C6-946E-8894B087A3EE"/></topicref><topicref href="GUID-6D28A0C6-7D1A-5C71-B61C-EE3F9E29DC5D.dita" id="GUID-63B8D796-D731-4F4E-8D4E-373D04D6BB3A"><topicref href="GUID-8D130FC5-3AB8-5C70-A9D2-C753957E729F.dita" id="GUID-B7179B40-75D4-473D-B826-6639409E5297"/><topicref href="GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16.dita" id="GUID-8BFD2E49-B70D-4284-965E-72313BE48E42"/><topicref href="GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita" id="GUID-686D9464-3A4E-4096-A911-716A27F80AE1"/><topicref href="GUID-15967AB3-B03C-5DAA-A784-D25ABFFC995E.dita" id="GUID-C9EADAE2-7A97-43E3-AF2E-BE811F0A7099"/><topicref href="GUID-7FF63B82-B719-5E42-B007-94E2FB9548CB.dita" id="GUID-6A96548F-5332-42FA-A305-8DB9B5DBB184"/><topicref href="GUID-9372CB71-2C75-5B3D-81EA-B4257C3162C7.dita" id="GUID-B8919844-063F-4D16-9A25-C509A1A69328"/><topicref href="GUID-BB67D4AA-EE75-559D-8180-D1BE923F22D8.dita" id="GUID-E4B32D87-7528-433F-BC98-CE46C10E40C3"/></topicref></topicref>
+</topicgroup></topicref>
+</topicgroup><topicgroup id="GUID-1152B0FB-38B3-49E9-9001-F849A8AB4B02">
+<topicref href="GUID-BE3B53A8-B06D-53C4-8FC0-85B3BA4F39EF.dita" id="GUID-F55AD901-E673-4C5A-9FB2-66B74C1517FD"><topicref href="GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita" id="GUID-0384B59B-0EAF-41E4-8106-DC3BE7798330"><topicref href="GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0.dita" id="GUID-53731E85-F541-4D23-99B3-87495AB22303"/><topicref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita" id="GUID-68FB3FAD-E018-4C7D-AB87-B51E17E7A127"/></topicref><topicref href="GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita" id="GUID-70B17D27-0AE8-4065-B666-95923154C359"><topicref href="GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita" id="GUID-458D528A-4800-4791-9B5C-97FA83F6969E"/><topicref href="GUID-B82FBA26-6B34-4387-A5BC-758B74F37E5F.dita" id="GUID-842E7B84-465A-457C-BE65-70492BF7A9EC"><topicref href="GUID-335A4B77-20C4-52B9-88AA-58540269E321.dita" id="GUID-FA5D93F9-0CDE-4267-B9C4-5A2D03227B1A"/><topicref href="GUID-9B428B4E-83B7-5EE3-8D63-E2B0602D1D91.dita" id="GUID-A60D3F41-B0D0-4ED3-BA90-990D90B034DB"/><topicref href="GUID-CD8A3420-6C9B-5774-86FA-85CFE062C400.dita" id="GUID-E28C5263-07FC-4E9F-9B2F-F57146ED96BF"/><topicref href="GUID-62195532-3FD0-5A3B-90E6-D624C4A60594.dita" id="GUID-0451FEB7-D5B1-4FBB-91E9-9C2673EE14C2"/><topicref href="GUID-3987D040-27F7-5226-96AC-D578ECA4C0A2.dita" id="GUID-736B9C9E-6359-4959-95DA-ACB60DF1F758"/><topicref href="GUID-DA0F4990-DDC4-5B0A-A446-A3C8672DA95A.dita" id="GUID-F72F8F44-DC77-4DB6-9EB4-5795D8C571E3"/><topicref href="GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C.dita" id="GUID-9CD9EFC3-4D4F-48FF-B94B-DC254391F9A0"/><topicref href="GUID-20DDA21D-B5DE-5D24-9E75-69C68EAF1782.dita" id="GUID-3D3AD723-E44F-4586-A000-FCC250D1A154"/></topicref><topicref href="GUID-A60C4549-9FAA-496A-B743-D395A461B61F.dita" id="GUID-DD3A2B4E-704B-4C65-B27F-806B37F13452"><topicref href="GUID-7BB38C3E-BEA9-545B-AEC2-5E9078D0B8A2.dita" id="GUID-3B37F9F3-F768-45A2-8E0D-3404D877D1AF"/><topicref href="GUID-8FDCABBB-AD6D-513D-9FBF-631DC1846D20.dita" id="GUID-A49A9A27-3839-4633-8C31-5DEE05C0047C"/><topicref href="GUID-710FADA2-7A6C-5D60-BCE5-8772071F2BD4.dita" id="GUID-1ECCA3BE-7A70-4FCF-AEEB-C9F5DE3F4B88"/><topicref href="GUID-3BDF7402-8AD6-57C7-849A-145E08EC7E86.dita" id="GUID-FA7A221F-2305-49E2-ABD3-58888F2B383F"/><topicref href="GUID-0F1D1BC4-C8FB-55BE-83FE-DD604C4A9CA3.dita" id="GUID-302D0879-2CDA-4523-B45A-371D6029D8D8"/></topicref></topicref><topicref href="GUID-3AF6CE70-DDBE-53F3-ABB6-7E78A300F14B.dita" id="GUID-0365E3EA-4974-43A4-A824-EF689E0A9B8C"><topicref href="GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita" id="GUID-FAD24B62-5EE8-495A-A3B2-58E0DA4ACF5D"/><topicref href="GUID-12D1EE2F-AF1E-4C53-ADC8-D8BC205BD063.dita" id="GUID-9FAC7774-8025-4EA4-BD75-62561B867F3F"><topicref href="GUID-CF34D34E-FF17-5395-A1CD-768414E0B014.dita" id="GUID-ADA779A4-CF81-4692-935A-3906F72ED0CD"/><topicref href="GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418.dita" id="GUID-2B962216-4FEA-4953-A44C-27A72C89BE31"/><topicref href="GUID-1361A508-D3DB-53F8-B1A1-34646F777B88.dita" id="GUID-981FA912-C65A-4AC2-B895-617D5C0CDEF3"/><topicref href="GUID-58ACE248-BF26-57BB-B5D2-C772FC046222.dita" id="GUID-CF6C70B5-AF81-4B0F-BE88-1687DA662711"/><topicref href="GUID-DCFD4CA0-6FB2-5339-BCFF-5B48E3E7E455.dita" id="GUID-EC080E73-7862-4887-81CD-DFF7D84CD610"/><topicref href="GUID-200BA7B9-70A1-5D15-8CFF-FBD18930757D.dita" id="GUID-D7454A11-C454-43BF-85F8-130169C5D29B"/><topicref href="GUID-0E226657-1A19-5601-B392-4E9A0BDB4014.dita" id="GUID-457A9CA7-619E-41B8-A920-9A2BA95AB0A0"/><topicref href="GUID-92156269-0645-54AB-9075-EE7708D333F4.dita" id="GUID-D42E845F-D47C-43D2-8E79-AA1CA1CB2BE5"/></topicref></topicref><topicref href="GUID-34B36F04-D707-5357-8073-3B9FF7B95B22.dita" id="GUID-9C71A396-3599-4961-A7E5-349D2BB11660"><topicref href="GUID-06730728-30C5-51FD-BD37-FB62F2958D28.dita" id="GUID-D3ED738B-2D63-4C16-A468-DC91E5E10C54"/></topicref><topicref href="GUID-6061361C-01F7-5BB1-87E1-46CBF9CCC44C.dita" id="GUID-AA85FFB0-57B2-4786-A0B5-2B70FC999EB3"><topicref href="GUID-49363088-CE0B-558D-8E86-48400E4F7C2F.dita" id="GUID-F7B959D6-C63F-48D3-9C1B-17F05A9E30AE"/></topicref><topicref href="GUID-27E38FBB-F417-56C8-BFCF-B32215668902.dita" id="GUID-3AA59722-FFD9-4477-82A5-A05C797D3212"><topicref href="GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495.dita" id="GUID-CE184513-F926-4CB1-8B8A-AB00D2145868"/><topicref href="GUID-2A39CCBD-CADB-56B7-872A-1EC617AC7D93.dita" id="GUID-160B9981-F817-43DB-BE4B-FC28F8B3FC2B"/><topicref href="GUID-082E47B3-8AAB-51B7-93F9-3C528B97D0A9.dita" id="GUID-A029A8F3-DCDA-4DCA-9B6B-185E7BC3B4E9"/></topicref><topicref href="GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB.dita" id="GUID-803CACF1-22C6-4CAC-8B91-1F9132A83611"><topicref href="GUID-BC67F13E-4B5A-5078-AE9B-826304BC14FD.dita" id="GUID-A7FC96A3-0B1D-4E30-956B-02C834C3CF5E"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-0DF3B851-ED46-49F0-AAF7-A4AE157E3A9D">
+<topicref href="GUID-315452C2-A1E2-5888-A694-6D2DE73A3F5E.dita" id="GUID-81FE6296-A5EF-4069-BFC1-5ADD85AB48FB"><topicref href="GUID-BC191AA8-696F-51A2-801F-B3F952037F54.dita" id="GUID-8700FE0E-8762-44D0-AA4B-5365C740A2F4"/><topicref href="GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA.dita" id="GUID-03A19A75-0451-47BE-85CB-EB97B4964AD7"><topicref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita" id="GUID-179A4E83-AC80-4508-B069-0DD22C906407"/><topicref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita" id="GUID-74CADC8D-2CFE-47A2-9EF3-714460475F06"/><topicref href="GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446.dita" id="GUID-BFD81FDB-B035-43D6-9D05-0A9F4698BA3A"/></topicref><topicref href="GUID-BA362536-C9C9-5BA4-BEE3-0E1AD7FA45F1.dita" id="GUID-A28EE2E1-FEA3-4165-B85D-E13F0A63F897"><topicref href="GUID-5329AE68-39E0-55E7-9878-2D8FF9E29B21.dita" id="GUID-95A7A17B-FCEA-4E2B-B097-305272068CA5"><topicref href="GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762.dita" id="GUID-BC0AAD69-BF55-40FD-B59E-ADD2CDCB0D68"/><topicref href="GUID-66022FF4-3044-51E6-88CE-FE3B1283C0CB.dita" id="GUID-631EDBEE-E446-4D64-B9F8-625C3B8CCE04"><topicref href="GUID-6BE03135-6192-5520-AE8F-80BDB3187259.dita" id="GUID-DF806A31-D614-45C8-9FCA-09F068DC3F58"/><topicref href="GUID-4E838A77-C7B5-5B1F-93F5-F3577901914B.dita" id="GUID-4734154E-C745-407D-BC54-275CD0AD1FEE"/></topicref><topicref href="GUID-B2089965-546C-5FF2-8596-13A2221E02E6.dita" id="GUID-4C38BE3E-0AF3-4FD2-A6A6-EF25682A6879"><topicref href="GUID-43080A86-72D3-5422-953E-A5EF79961D7B.dita" id="GUID-B8D8AC14-CE7F-4A75-988D-57FFA9291BBA"/><topicref href="GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8.dita" id="GUID-4512D3AC-EB32-431D-8138-BE8E4D774BFC"/><topicref href="GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99.dita" id="GUID-2A307384-62F7-4776-AFE2-2FAB39D03054"/><topicref href="GUID-85D9878E-4FEF-5E45-9F87-53634CD171E0.dita" id="GUID-D38B8430-A4C2-435F-8ECC-1F3053778ED3"/><topicref href="GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614.dita" id="GUID-151600CE-663F-480F-874E-645AEE1FE813"/></topicref></topicref></topicref><topicref href="GUID-A40376B6-8B2B-551A-B72F-CFCADBC84BE7.dita" id="GUID-BD331CE9-8083-435D-BD8A-400663B825DE"><topicref href="GUID-8933D7D5-F84D-5BF2-BF2A-832DA183E26B.dita" id="GUID-71404B23-2AAE-4F1D-80C3-5B739FFBE0E8"><topicref href="GUID-2BB17FB4-07A9-52E3-A650-570A16FA771D.dita" id="GUID-CD230DF1-2F5F-47DC-A7CA-14B08D65273B"/><topicref href="GUID-9CB10936-3201-546D-BC81-B53293EE1933.dita" id="GUID-E242CC45-255E-4885-A657-05DAD6026877"><topicref href="GUID-6FCAB5DC-D3E9-5406-8B9E-E1B1CF18C73F.dita" id="GUID-0B4E50C5-E802-4EFA-875E-95EA98B15743"/><topicref href="GUID-6849E256-6719-5788-BCB2-7557F09AAAD0.dita" id="GUID-D83BBCCE-45DE-4637-A195-77B313CA83F2"/></topicref></topicref><topicref href="GUID-4B03733F-D84D-5A28-B772-2E256D86ABC7.dita" id="GUID-BD938D78-4DEE-4978-BE52-B9C83F1A1200"><topicref href="GUID-04FB9E08-DDFE-53B1-B8E1-687A1AEC4286.dita" id="GUID-DB00D96E-34D2-4A16-A8FB-C2D68AC3C31E"/><topicref href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita" id="GUID-9A6198B9-DDCF-4CDA-BFCD-1DD148BF41A0"/><topicref href="GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C.dita" id="GUID-5BB27E4A-87B0-468C-82FF-2B44B87CA0B8"><topicref href="GUID-9473F793-29ED-42ED-933B-A995E56E71CB.dita" id="GUID-37B238E4-B966-4336-A50F-C41C995F9835"/><topicref href="GUID-13BDBFA4-49FE-4D62-8B5F-BE3DF3ABAF3E.dita" id="GUID-A0F2777C-A4F6-4C2E-82F5-54231CB5C56C"/><topicref href="GUID-D8A18789-3A3E-4E4A-9D34-35F83BF71449.dita" id="GUID-A1026EC8-97AC-4994-8159-CF143550DF52"/></topicref><topicref href="GUID-C119A79A-D705-50B3-B174-70F517947BBD.dita" id="GUID-BFFEC8C1-D62F-4B38-8ED4-4F2EB974C913"/><topicref href="GUID-6BD23C4F-CBF7-584D-81D9-EB8D14DC3081.dita" id="GUID-53B91569-D9D6-4DF7-A409-4CA13444C8B3"><topicref href="GUID-C83D7112-0CF4-588D-8A0C-D27AB387F4D3.dita" id="GUID-1CBF0E66-846A-4793-86B1-9EAA9BBC8D3E"/><topicref href="GUID-46D6DF29-38F7-5842-9FDD-82754AE8D9A0.dita" id="GUID-C05DC20B-2EB9-4A71-AD50-3CFEB1CFD2D6"/><topicref href="GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita" id="GUID-72D9725E-B051-4162-A7FD-4FAE74F7C4EE"/></topicref></topicref></topicref><topicref href="GUID-C00FBDE4-EF59-5FED-BA92-625414AF45AE.dita" id="GUID-C191CF05-80C9-4CDE-9222-64CAAE873AF2"><topicref href="GUID-16BA7B80-DC75-512C-AAEC-F571B5B73F09.dita" id="GUID-1D60D3EF-9BA3-4B99-93A8-09BEC0553B5E"><topicref href="GUID-3FB8AC96-209B-5B1E-8139-BA2D858CBF2F.dita" id="GUID-2492ECA9-C156-4B82-9C6A-D5E4C172DF9B"/><topicref href="GUID-058D9E7F-5F4B-5656-BA49-16ED2D1451AE.dita" id="GUID-9321BA73-64C0-4506-8E4A-3448A5870A31"/><topicref href="GUID-679390E8-1DE6-55F0-9A0C-60D58956A1E3.dita" id="GUID-2A23B1E2-C8D0-4F2B-A17C-90E7330EFA40"><topicref href="GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita" id="GUID-AA29B9B2-BB01-4543-BD84-BDA1826B35FB"/><topicref href="GUID-D88AA184-6E22-5069-A249-5AD83F548C56.dita" id="GUID-B39104A5-2141-451A-A238-ADBFC893A8FA"/></topicref><topicref href="GUID-0B2245C5-766B-5CF1-8A0C-DD98CEEEBB05.dita" id="GUID-8D87CB20-D7FE-4BA7-8CFB-DE8FCDBC7E52"><topicref href="GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE.dita" id="GUID-934E12E8-FF94-43EC-9A6E-CD69BC9F652A"/><topicref href="GUID-0CD273A2-434C-52E0-B840-CCF24B2853B8.dita" id="GUID-EB168FB2-5875-4870-A6DF-B1EFE4322790"/></topicref></topicref></topicref><topicref href="GUID-2663ED06-8C97-5867-B7F6-6167EBFEA223.dita" id="GUID-E97BFE2A-0608-471D-B812-EE5E4A15E60B"><topicref href="GUID-C3846503-BEFE-5539-B7ED-FD1915D38380.dita" id="GUID-A8DD14DB-3BC3-43A5-9D4D-82036F530DB0"/><topicref href="GUID-314992D7-F6E1-5335-9EDA-DE89E67CDF57.dita" id="GUID-8696FEBE-B0FC-406E-92C5-115114A470A1"><topicref href="GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita" id="GUID-C2A7BBB2-E976-41A7-AB11-D2DFDBA60297"/></topicref><topicref href="GUID-C3290344-486B-554D-97FC-42DF48E150AA.dita" id="GUID-8B64EF1E-C4B8-4AB0-9A43-47AA9B66B336"><topicref href="GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5.dita" id="GUID-8B6A4AF0-E001-42CC-8F67-E3332C094071"/><topicref href="GUID-69B005F8-9038-546F-8ADF-8499984A18E1.dita" id="GUID-2A400DE0-D2EF-41FC-BF88-E639CAB8F1A7"><topicref href="GUID-E326C00B-6E07-5902-AB19-F00D1761795C.dita" id="GUID-019B3E04-FAD8-4FEA-A551-420082AE96F5"/><topicref href="GUID-C93D021E-D99A-5839-AB54-3D8D7620214A.dita" id="GUID-B480F1BF-8AA0-48FE-ACD3-906E48E73A64"/><topicref href="GUID-C676C4E6-93AF-59E9-886D-74D59F154490.dita" id="GUID-C764BB21-D45F-4341-B1B3-EC4B591187BF"/><topicref href="GUID-A636C1B3-8AB2-52D7-BB19-4CC93F4BDD97.dita" id="GUID-5966D456-718E-4EDD-A23E-0DD09CFC6A45"/><topicref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita" id="GUID-48871D91-F0E9-48B9-AAD6-16C30A441545"/><topicref href="GUID-116AB921-B063-5CC2-962F-A74562F20EAE.dita" id="GUID-FC851EF5-3EF3-4C1F-9F89-8A72DB9D2986"/></topicref><topicref href="GUID-39B459CD-8210-59B5-95F4-85CE36676735.dita" id="GUID-5AAF05A8-C6A6-4C89-BFB8-BF15BAAC4C2D"><topicref href="GUID-0F4DE9E0-4A98-5914-9AB1-DD6CE1A5A1F3.dita" id="GUID-CA61706B-4880-4342-97A8-606BC42020DB"/><topicref href="GUID-0010EB39-8C23-5453-BE96-4EFC520B6F81.dita" id="GUID-B6AB3D64-9307-47B7-BC1B-B331DAEFC217"><topicref href="GUID-037225BC-AC45-540E-A899-1B8AB9112D6E.dita" id="GUID-12F5AE98-89AC-4E32-AED7-20E40FE24CCF"/><topicref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita" id="GUID-2D90018F-6231-4543-9C87-0DCF64E5550A"/></topicref><topicref href="GUID-695FCEB8-EA04-5C1C-A197-648275BA0281.dita" id="GUID-B4B84B1D-A5BC-479E-844A-09DBAB1C76ED"><topicref href="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita" id="GUID-918AB8C6-D7AD-4D97-985D-85294105E999"/><topicref href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita" id="GUID-C9F4B3E4-8114-4DF3-9EAA-3CE83AAEA302"><topicref href="GUID-A56D550A-BF08-5D9C-A64C-67E8654F449B.dita" id="GUID-0582C3A5-8250-4690-8514-71C5C50BBA2D"/><topicref href="GUID-384A25D6-EC89-576E-857F-D8D26292FED9.dita" id="GUID-F69D8DE0-9737-47EA-8842-82CA007F71A1"/><topicref href="GUID-389F1390-5752-5F2E-B2F6-724F9543BB35.dita" id="GUID-410DB305-54BE-41A9-8F42-3CFFD1636EB4"><topicref href="GUID-F6625E22-BFB2-5367-A1A8-916252999B78.dita" id="GUID-E76ABC24-DFB6-44C5-8954-353F7BCEDA68"/><topicref href="GUID-93069514-BC40-5E53-B126-F5C5C43C3D83.dita" id="GUID-4DEB13D3-28E8-4D5D-B73B-9D907E139128"/></topicref><topicref href="GUID-6A770434-EF8A-5ECC-BB74-2E7FC4A9E360.dita" id="GUID-11CB09AB-8533-4783-B945-6F7584390C55"/><topicref href="GUID-98B0A83B-0064-598E-BE88-84305CA6A4F1.dita" id="GUID-7142807B-32AD-4324-8B6C-4F7CE3C675C6"/><topicref href="GUID-85EAD2EA-6ADB-5866-9784-5E2B30E661AF.dita" id="GUID-A51917A9-FE0E-4B35-8400-FB0CB68A70D7"/><topicref href="GUID-48B61662-0A11-4356-9882-7523B04FFD96.dita" id="GUID-E1272611-FC7B-461C-A1C6-1AB29D68188C"/><topicref href="GUID-F446E658-B717-5257-9C5C-442B07B19565.dita" id="GUID-90A21C12-FB47-4706-8651-124C302697AB"/><topicref href="GUID-60141F31-6061-5C65-809D-FE7A4F8414F7.dita" id="GUID-8BDA5F0D-282F-46F6-B841-837112E9A96C"/><topicref href="GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita" id="GUID-E34BD5D1-F8A9-434A-867B-E9188AD983E3"/><topicref href="GUID-1733B4E1-3264-58DF-957B-F5C0AE1E0644.dita" id="GUID-69EB2719-800B-4583-8C31-A21E44314D10"/></topicref></topicref></topicref></topicref><topicref href="GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA.dita" id="GUID-E6062833-7DEC-49CE-9319-DD65BFAF8423"><topicref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita" id="GUID-C8AA553B-D6E8-4821-B75E-4E2300072F1F"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-96FCFD9C-E6EB-4B07-B42D-1B2B2BA58DDF">
+<topicref href="GUID-4CF8E6BC-3E2A-5773-A296-6321573B967E.dita" id="GUID-28DD95A1-22A3-469E-82B9-AF61299AA137"><topicref href="GUID-0F875AD4-F3A1-5AAA-81D3-E60436472443.dita" id="GUID-CAFD6CF6-C005-4CDA-89AD-DCCFF13A1F1F"><topicref href="GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita" id="GUID-D3326F92-7282-493E-BC1A-75C5C1DACFE5"/><topicref href="GUID-C893C9E6-47B8-5149-9808-0274C61CF3D7.dita" id="GUID-07D043E7-9C1B-4A8E-A08E-E24EEF0B4857"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-0D081EFC-54DE-4EAA-BF1B-AF2AC12863AB">
+<topicref href="GUID-DD13AA8E-BDAD-57EC-81EC-49C8D6D30A86.dita" id="GUID-67ED2AD3-D732-42A2-91A3-8F672143FAC8"><topicref href="GUID-071A1E59-FE77-5D4D-B4D1-E6ECDF68BB03.dita" id="GUID-250600ED-689D-4875-92E8-1883BD1FB4F9"><topicref href="GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF.dita" id="GUID-5E7D0D15-2158-4D75-85C4-6D9639273C0E"/><topicref href="GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita" id="GUID-6A642E5D-EC1A-4546-B79A-37B6DA872FA5"><topicref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita" id="GUID-BB30E472-B4E2-4A32-B1DE-A0EA77FBD514"/><topicref href="GUID-756D831F-F302-594C-8116-144358DD8442.dita" id="GUID-E86A277F-15E5-4C25-BA95-5812CFC99AA3"><topicref href="GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita" id="GUID-27170F08-6E67-4ADF-AC37-5C0BC5FBADB9"/><topicref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita" id="GUID-7C0031D2-8EE9-42E2-A579-78C2D43E4C97"/><topicref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita" id="GUID-CF1F742F-21EF-447C-8227-C07BBD027A9D"/><topicref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita" id="GUID-46536247-8903-417B-A49A-43EDC7DC5451"/><topicref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita" id="GUID-DA7667F7-5407-4199-9E58-CA910A106332"/><topicref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita" id="GUID-BAABCE77-6145-411A-9BE2-21008824EB0F"/></topicref><topicref href="GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita" id="GUID-2D3EFCB5-54E4-4995-AD8E-1A381C4CECE4"><topicref href="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita" id="GUID-D5478B8C-932D-45A6-9A39-709FE540FF48"/><topicref href="GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659.dita" id="GUID-5645F884-F8B2-4B80-B595-14C41A4874EF"/><topicref href="GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032.dita" id="GUID-55AD9E0D-1D13-4592-B30C-0D152985613B"/><topicref href="GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393.dita" id="GUID-C4964C6A-AAB2-40D9-9EFF-63BAEFDC6E18"/></topicref></topicref><topicref href="GUID-EA15E87C-6A24-50B1-9FAC-9ACE8911ABD5.dita" id="GUID-5EFECCAB-BD66-42B2-90ED-737C876BF11C"><topicref href="GUID-AB0A3E87-6725-5E83-B462-1219CE205187.dita" id="GUID-6DBD7610-0E20-4CBB-8BE8-8BAD4093DEBF"/></topicref></topicref><topicref href="GUID-ACB3786B-38EB-58F4-87B6-6A46A390B154.dita" id="GUID-75EF3A6F-C6AE-4776-AC21-A023C7933F65"><topicref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita" id="GUID-83512EFB-A19F-40FB-B599-178E6BA29EF4"/><topicref href="GUID-0F3E543D-CFEE-5CD8-8BAB-19B3A993388F.dita" id="GUID-62318BD7-8215-4286-91CA-1E133251A613"><topicref href="GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita" id="GUID-531D4114-6B3E-49B2-8D66-724A7486F46E"/><topicref href="GUID-308A481C-2280-59CE-AE85-83047B11BBE4.dita" id="GUID-F2DE364E-F03C-46D8-A1B1-3E26AAA7F558"><topicref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita" id="GUID-429BA256-73AA-482C-9EF4-0E45F9C03321"/><topicref href="GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita" id="GUID-38B774F6-7AC0-41A2-826C-2ED7E9E627D8"/><topicref href="GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita" id="GUID-DD4C5176-678A-4A0D-9673-62BF0CEB16D2"/><topicref href="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita" id="GUID-18B49608-1B3D-4743-825E-F4E1850A51AC"/></topicref><topicref href="GUID-0DBB2379-6FCB-5D1D-AE5A-2DC7C498F479.dita" id="GUID-5D1DEB78-9EDF-4005-9F57-FCBE450D1684"/></topicref></topicref><topicref href="GUID-6CE12919-FF81-5254-BA12-385F589FEA44.dita" id="GUID-BE6B1B37-049D-4E4A-B5F3-4356AF18EB8C"><topicref href="GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF.dita" id="GUID-EDE36566-FEEC-4F80-9D95-518E3FC36982"/><topicref href="GUID-7F2C1C45-43FA-5F19-81E3-4DBC0328E4A7.dita" id="GUID-186A9914-DA41-4FCE-9FF3-6B082C1EB137"/><topicref href="GUID-11E05C4A-CC94-5A0E-9D07-1863FB03747F.dita" id="GUID-A09E31D8-6832-47AF-B1B7-F3CFF53D5A2F"><topicref href="GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0.dita" id="GUID-8F74C24F-0755-4454-87C8-220C9D230C2D"/><topicref href="GUID-9668ADA2-7170-57AC-A5D7-1350894413FF.dita" id="GUID-3375F1F5-A1D8-4146-82BB-74129795E784"><topicref href="GUID-C49F63A4-BA9D-5C99-8C82-EB3163E30D3E.dita" id="GUID-88E735F7-B0D1-4519-AD4E-718EA64DFB39"/></topicref></topicref><topicref href="GUID-8411E1C9-C6CC-5B0A-BEBA-74D0B8AABF35.dita" id="GUID-43307B63-B7D3-4118-9F1F-2A0E80A23D72"><topicref href="GUID-5E1C24CA-2F82-5E30-8981-0F343FF2BD89.dita" id="GUID-44947C7D-4E03-428E-B4CB-51BDF79C1F4D"/><topicref href="GUID-F2A793F1-A5B5-526B-B147-771D440B13A2.dita" id="GUID-032C706D-5346-4CBE-A37B-769960F05FE5"/><topicref href="GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita" id="GUID-125A7970-CE51-49B5-9AFF-4C8C32FB447E"/></topicref><topicref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita" id="GUID-ACD03142-9119-4C68-8019-74B73DFD5F0D"><topicref href="GUID-58F65411-CF08-5F46-8222-3FDB9E571FCC.dita" id="GUID-1FED5784-54F6-4480-9813-A8EF2ECA57A6"><topicref href="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita" id="GUID-E29C2DDE-8331-471B-945B-6CE02940971A"/><topicref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita" id="GUID-8194F37F-E7F3-458E-822F-B74683CD8B69"/><topicref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita" id="GUID-ED718732-110E-444F-9602-C51090907760"/><topicref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita" id="GUID-546A42D5-1970-4EEF-A56B-D4C5421ADAAD"/><topicref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita" id="GUID-5911612C-0076-420A-B3A1-E0DFEC1DDAC8"/></topicref><topicref href="GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita" id="GUID-5E7CE12D-902C-4E73-8871-5727A12EE5E5"/><topicref href="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita" id="GUID-9C01DDFC-1B63-43D7-AEEE-B244E474D00D"/><topicref href="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita" id="GUID-F061E79C-A760-4FD1-B9C5-BB284CEBDCF5"/><topicref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita" id="GUID-2159BAED-6804-4410-B7F3-EFFA8CBEF9D1"/><topicref href="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita" id="GUID-2515943B-A01A-4762-93DC-A08BD6B3F716"/></topicref><topicref href="GUID-A035B592-F423-5980-8E7E-E726CF24CF3E.dita" id="GUID-5CF0CA4D-560A-4341-90D9-9EB64870974C"><topicref href="GUID-C670D31C-82A7-519C-8506-3C4B99294B21.dita" id="GUID-9BADFB20-D2C7-4044-A283-B336E27140E8"/><topicref href="GUID-322A932E-5DC8-5CBB-BD3C-02F5CEDB060E.dita" id="GUID-7FA5C403-22E5-4068-A460-488A4AA80C6A"/><topicref href="GUID-39C9DD69-504A-529C-ABD3-A73DCAD3F8E9.dita" id="GUID-83E9B4C8-40ED-43B9-828A-841608011821"/><topicref href="GUID-A2793EFD-F765-5392-8471-C8A0C2FFC163.dita" id="GUID-960D353F-EB87-4A3E-9882-8B97A31F4FCD"/></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-A0849293-6F0F-4434-A571-BF7315E91E39">
+<topicref href="GUID-1DCA2F4D-ABE6-52A0-AC4E-5AAC1AB5909D.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-25-1"><topicref href="GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-25-1-1-3"><topicref href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita" id="GUID-BAC14B45-7C18-4709-86F8-765D8BF8CA72"/><topicref href="GUID-98B85D7F-7BD9-5056-A99F-0BC99D921B87.dita" id="GUID-DB2DECE2-39DC-4B5D-98C2-E1A627E2A539"><topicref href="GUID-78FB26E2-AA60-5531-B2FE-4FA6C88F2D47.dita" id="GUID-153B4AF8-340C-457C-975F-C1834F7C09DA"><topicref href="GUID-72986B3C-047C-5411-8F15-BC9C65C3289C.dita" id="GUID-B1AFADD1-F800-4E91-819B-1F9797EFF120"/></topicref></topicref><topicref href="GUID-B798C19D-4030-564A-A208-D84738259D72.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-25-1-1-3-1-7"><topicref href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita" id="GUID-A23E9571-BA80-40D9-BEAD-B1EF681A0024"/><topicref href="GUID-89AD2E29-DF29-5B2B-9894-B7ECD62854F4.dita" id="GUID-A518779C-8C8F-4ACF-A6EF-6FA6486647C5"><topicref href="GUID-D76D4788-E65A-59A8-8DD9-7A8096E115D5.dita" id="GUID-D97B1A7D-1838-418C-9930-1353EFA6AB8C"/><topicref href="GUID-92A4F66E-252D-5C90-AE59-1B1991002D7B.dita" id="GUID-AB4E35FB-E159-4B06-99D9-D4D80E09A02B"/></topicref></topicref><topicref href="GUID-DB453F9B-55B6-50C7-984D-7154F1E84AE6.dita" id="GUID-FB72C724-3BB5-412A-95F0-2863933B428B"/><topicref href="GUID-75C5A614-CEC1-5832-ACEA-E3C31B8A0DE8.dita" id="GUID-7632331B-C698-4641-8E85-3A0A1B3C6DC5"/></topicref><topicref href="GUID-F3406651-0B57-50FD-81CA-A3D4000D5625.dita" id="GUID-5562D8CC-E89C-4551-9A5A-A675EC73ADC8"><topicref href="GUID-C71311A7-F747-57EB-B31F-6E634D5976A3.dita" id="GUID-FF6DB147-C7D0-431C-9A18-ECE9B58A2493"/><topicref href="GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292.dita" id="GUID-2C18D42B-B958-4E2D-9710-1B19057F01A3"/><topicref href="GUID-E64C06D7-B138-5BCC-A814-3F9E2C517404.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-25-1-1-4-1-5"><topicref href="GUID-6F2BFFD4-9A2A-5EEC-87A2-3B60CB7F9CD5.dita" id="GUID-41E7E132-0329-4ED9-872D-EF79AF36D876"/><topicref href="GUID-5BE31242-78A2-584B-BF00-B7805C219E40.dita" id="GUID-1E89537D-5B49-464F-91E1-702C757451ED"><topicref href="GUID-325D8E31-584B-5B10-902C-F004641A614D.dita" id="GUID-986936C6-CED7-43E4-AB9E-691207BF339A"/><topicref href="GUID-3FAECE72-FCC6-5C58-B724-C9A9DE485788.dita" id="GUID-73A5D0C3-59AC-495C-9375-1D8D2C324D9C"/><topicref href="GUID-77AC5975-D36F-585F-BC0B-DC1C2357BBF2.dita" id="GUID-0ADC8ECF-7D7D-4897-835F-119957288063"/><topicref href="GUID-5373B575-F284-5774-9C73-2A18C4A912A2.dita" id="GUID-0F1AAF86-907F-4199-B036-2FAAB45FE39D"/><topicref href="GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita" id="GUID-860D9289-F038-4FDB-BF0E-9271ED3BE5E3"/></topicref><topicref href="GUID-BD11A724-2364-5D40-A9D1-2774993BA4A4.dita" id="GUID-978946A3-3203-4170-9FBA-5CB00CF25632"><topicref href="GUID-6796BA71-47A7-5465-89F2-BD0AEF2E4EE7.dita" id="GUID-07C3C8AF-E4BC-4692-AF36-8052496AECA0"/><topicref href="GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9.dita" id="GUID-A78AE720-30BF-44F7-B75F-1A56829E57D7"/><topicref href="GUID-CD3B2B7D-BAE5-5F99-A5F5-74AFC678D986.dita" id="GUID-6D081A99-076A-421A-9818-2C37D5D7F2A0"/><topicref href="GUID-214A7085-185B-5D40-A613-E82E68968AAB.dita" id="GUID-28C3BE08-329B-4769-A2F7-C6EE4EFBC10B"/><topicref href="GUID-01F6E612-B151-5FC3-B08A-E17A7987F029.dita" id="GUID-DF9C94EC-D599-4302-9CA3-A133A8A8C7E7"/></topicref></topicref><topicref href="GUID-E7ACEC20-27C9-5124-A46E-2812A64E3E4B.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-25-1-1-4-1-6"><topicref href="GUID-001F6216-48AE-57D4-8985-65CF77B26F19.dita" id="GUID-16D03442-BF28-4BF6-98CF-ABAF89CE5A2F"/><topicref href="GUID-93491DAE-4D2D-5F5F-97E7-91B265E9951E.dita" id="GUID-C33E5113-A02B-4D30-AB40-B6B39D8AA5F8"><topicref href="GUID-F5F981E4-6910-5440-AE8E-2EFAB2D01EE9.dita" id="GUID-FE850A98-A275-4B29-8C98-DE520D31404A"><topicref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita" id="GUID-99E7339A-64CF-41B8-9224-BF9C580969EE"/><topicref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita" id="GUID-ECAEDAA8-F8C7-48D0-A487-AA6000F854B2"/><topicref href="GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita" id="GUID-08EB3EB9-D4EB-47DA-93EC-E9C836230E87"/><topicref href="GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita" id="GUID-6FCE8F50-993B-4911-93B2-1A2C3F14D1B1"/><topicref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita" id="GUID-19A38E3C-C423-41B6-8C47-719E068DF1D3"/><topicref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita" id="GUID-7995BF3F-7440-48CF-BC6E-843C9EDF3284"/><topicref href="GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213.dita" id="GUID-1D243082-552F-498A-B5A8-6F7FAFD17E6A"/></topicref></topicref></topicref><topicref href="GUID-0584846D-D4D9-5093-8FE5-764CCFBA813F.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-25-1-1-4-1-7"><topicref href="GUID-66231EA2-BDEF-582D-A4B9-F356B590038D.dita" id="GUID-E5427493-BA6C-4CB3-A42F-93DFAACC87D4"/><topicref href="GUID-F4320746-68DF-50B6-817A-24E46DFBF77B.dita" id="GUID-7344DB7E-DA2D-4D19-8444-3ACAE4D37026"><topicref href="GUID-026E865E-12FA-59A9-B923-309B65790E23.dita" id="GUID-6B7A5DAD-C567-43BE-B19A-FD03846EA05B"/><topicref href="GUID-2068DA42-AE77-5213-B3CF-C3AB7F2188BE.dita" id="GUID-030194FD-FDEE-4073-97CB-AE125532B191"/></topicref></topicref></topicref><topicref href="GUID-4F901F56-7F0E-4869-85CA-6109ED0AF5B7.dita" id="GUID-3C17741C-78A1-437D-AC31-68BDE89E4762"><topicref href="GUID-533EC918-BF5B-5D0B-8860-1E8746A05EE3.dita" id="GUID-A54906C5-D466-457C-9E7D-FFBC22FFA443"><topicref href="GUID-0AA6186C-DD10-5811-940F-D26A7D34C66F.dita" id="GUID-DE6B1559-0650-419A-83EA-674EF7A44FBB"/><topicref href="GUID-60E8185C-04EC-5541-8392-5457808B9774.dita" id="GUID-E1A22C1E-6130-4D95-87B2-B8E7F0D2F5C3"><topicref href="GUID-6A5FAD55-DE84-569D-B5EB-1474DD2AF392.dita" id="GUID-52C77F0E-7D46-44B8-AF25-1DD36711434D"/><topicref href="GUID-BE26CD1E-C566-572D-9B2D-B6CFCA647C72.dita" id="GUID-E888FB03-D316-4532-81F9-BE7DF0A47347"/><topicref href="GUID-86E704A2-FB15-5D78-BFD2-0E7117360342.dita" id="GUID-A9032458-8F27-4225-904D-4EA89CFF7CD9"/><topicref href="GUID-56EA1BD6-DE61-5541-993A-2B60D1DE41AC.dita" id="GUID-8D9B1C3D-3465-4092-AB89-11A46F7748D0"/><topicref href="GUID-2999C8D1-5C95-5474-BB02-11182CC3A407.dita" id="GUID-54286EB5-27E1-4CA1-95CE-1F54C25595C5"/><topicref href="GUID-426DECE8-311A-5720-88BB-F2A4805648D6.dita" id="GUID-5F09A318-A8A3-4C1A-928B-C50C99659D9A"/><topicref href="GUID-CCFF2755-02EC-510B-A052-33ABA318B922.dita" id="GUID-608D7E59-8551-4232-BB25-C4594A11A565"/></topicref><topicref href="GUID-2DDEF473-B804-51DF-874F-ADF46CB03ABA.dita" id="GUID-3C3063E0-F7F8-4371-836E-1BDF4CA01474"><topicref href="GUID-837333EB-8BD1-551A-BFB4-05BE2056E2DA.dita" id="GUID-CC428E14-788B-44D9-9EE2-50FB9BEA2050"/><topicref href="GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271.dita" id="GUID-48159105-6EF2-4871-A73E-D82A6A4A93B6"/><topicref href="GUID-E0D10091-1F66-428A-919C-BE8C95DEACD1.dita" id="GUID-E634B5DB-1C8F-49F8-987C-540643C96AE6"/><topicref href="GUID-157445C2-BFF7-5733-B87C-CC249D8506CD.dita" id="GUID-FCF4AD87-D48B-4326-B3EA-E3FA32EA488B"/><topicref href="GUID-80F83F9C-2B58-5238-AE38-1193BAE72CB0.dita" id="GUID-FC357812-8601-40D7-B0C2-9C3278E17C06"/><topicref href="GUID-74E69324-7BCC-591F-B2A9-2932A3790966.dita" id="GUID-EB5DD57A-ADE3-4C45-900F-9E4D5564AD21"/><topicref href="GUID-9761C39D-30E9-5BFA-ABF0-2C2377E3EADB.dita" id="GUID-445CF211-21BD-426E-ACCE-8C49940C4221"/><topicref href="GUID-AF408E56-D2CB-557C-9D04-C6F7CE1A5424.dita" id="GUID-C184CD46-2ECB-4816-A35A-B2599D2B9ED4"/></topicref></topicref><topicref href="GUID-4CBFA2E3-0EFC-5E10-A960-57A8FF9A6025.dita" id="GUID-5A18F535-4BFC-4E4A-AA87-313637B9331A"><topicref href="GUID-3E7193C2-143E-58EF-B21F-9C0E1C65226F.dita" id="GUID-1671EEF5-8FFC-4E3D-8180-EEBD3688DC01"/><topicref href="GUID-F6C2C8D4-D3B0-5441-BF2D-6F42489198D6.dita" id="GUID-8810C414-874C-46D9-B539-3126FE0CAA7D"><topicref href="GUID-ED373BF9-A555-50E9-974C-82522206EFE6.dita" id="GUID-8F18956B-F28A-4617-944C-E68E08149DF5"/><topicref href="GUID-5C79E34A-4048-57C4-A7CF-2D56DC9702FB.dita" id="GUID-721D72BE-1366-477B-B4E1-1312C869F458"/><topicref href="GUID-51C6E337-9E68-542A-B785-670417A55CEF.dita" id="GUID-30325BCF-C405-430D-AD59-DCFE3E0AB19F"/><topicref href="GUID-EDAF2886-5296-53BD-B847-0E0D9B5FBF7E.dita" id="GUID-D67F7156-7ACB-41B2-8709-DBEEFD53DF21"/></topicref><topicref href="GUID-136540F0-108A-5794-A0FE-D95260F4E59B.dita" id="GUID-FBBE3945-8A61-4046-86CF-9881426C20E7"><topicref href="GUID-55165C57-0F32-5363-A2EC-E37B5B36B6E1.dita" id="GUID-A3688089-B2B0-47C9-838B-D8CA58E5F015"/><topicref href="GUID-E9E26499-1102-578E-93F6-A8E14181A25C.dita" id="GUID-F004E8E3-5063-4019-BDE0-BD0E03A41BD6"/><topicref href="GUID-530DBEB3-2379-5567-BB10-45D21D6FF80A.dita" id="GUID-1AF91FF8-FFA3-4ADB-AFBE-C192E6E163BE"/><topicref href="GUID-DC0E3782-82EF-5104-937C-41F24DF1E1CA.dita" id="GUID-D4D3538E-AB46-4612-81AD-218C83D4ECC7"/><topicref href="GUID-1B58FBA8-4E2C-5A99-A4B7-D7475E1B8F96.dita" id="GUID-911F1BE4-96A9-4D2B-93FE-EFA97389692A"/><topicref href="GUID-1501D056-D068-5DE4-9408-17B530D75FC3.dita" id="GUID-BE8CC43D-4241-42AD-B615-D5815B825C6C"/><topicref href="GUID-74A4A88D-768E-51B9-B50B-81CF35D5D692.dita" id="GUID-2F25AB3D-6C03-422F-B7CD-A2F0FCB6F115"/><topicref href="GUID-23E18D4B-FB09-5BA9-9D31-E4875A0F8955.dita" id="GUID-5EE863AF-E3B5-4AE8-AC2E-8A9F3D99EF84"/></topicref></topicref></topicref></topicref>
+</topicgroup><topicgroup id="GUID-609E77A1-30AB-4ABB-BE33-6C8B169819BB">
+<topicref href="GUID-82AF5F49-EE25-54C7-AEE9-D1F41BD5190F.dita" id="GUID-6E749BEC-C92E-463D-B97A-1CFCDEBDEF85"><topicref href="GUID-A25E730C-F34D-5464-BE78-650B3DEA4A88.dita" id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-6-1-26-1-1-3"><topicref href="GUID-0129AE17-B171-5CD5-8542-1DB738CBAB8B.dita" id="GUID-56006F41-8489-4AA0-802C-5C87E31A1C09"><topicref href="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita" id="GUID-004E14A0-EF73-4D01-80E7-CB336FCC8EEE"/></topicref><topicref href="GUID-05A3E75B-25F9-54AC-8AF8-3E97F832E626.dita" id="GUID-27F1444D-382D-4D70-B8B5-A6697EC9FCAC"><topicref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita" id="GUID-DD699656-9313-4A88-9533-6CCD1F124D87"/><topicref href="GUID-326D4D50-5AD9-5CA2-8422-AA45AE0712D6.dita" id="GUID-291F4C8F-BB14-4427-9788-8CA73192C317"/><topicref href="GUID-74E3A687-18BD-5255-9CB9-F4B01878A1E1.dita" id="GUID-1B5B2D99-27F7-4580-B28A-F25252725A6B"><topicref href="GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita" id="GUID-32016C75-E615-4166-AA1D-43E66249200E"/><topicref href="GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC.dita" id="GUID-9D2B63B0-B414-402D-AEB3-14FD57569282"/><topicref href="GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E.dita" id="GUID-44D71103-F3FD-4CEE-A17B-C592DF5DDE36"/><topicref href="GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita" id="GUID-CC77E42A-E1A4-407F-BDD4-8A54CF7006B0"/><topicref href="GUID-49A7E8FD-72DA-5D56-86BE-74AA9AAF7C02.dita" id="GUID-DCC06C59-F47B-4AF1-AD35-B4CFC602EFD7"/></topicref><topicref href="GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita" id="GUID-9CF36E35-6525-427B-ABBB-161C05208E05"/></topicref><topicref href="GUID-AF28D930-6BD1-5DC5-9BE5-7512241E90CD.dita" id="GUID-A617E228-F4F7-4D4B-9AB1-7A1BDB718C44"><topicref href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita" id="GUID-75912659-75D8-4CBA-B7DF-CD4CFB2EAC71"/><topicref href="GUID-0D16866C-F46B-5A2B-B974-324278588A1B.dita" id="GUID-A908B890-31B3-4E9F-88CC-7A75DA9A0A31"/><topicref href="GUID-4A9255D1-42A4-57FA-A4B4-42C552964047.dita" id="GUID-8401926A-CA7F-47F5-976A-54B36DD9BA22"><topicref href="GUID-CB568D14-1B0C-568F-B9CA-DDD15C53EEF3.dita" id="GUID-7C852666-A6A0-4489-8B05-813D777BA1D1"/><topicref href="GUID-E16070E5-379A-5818-81CC-B00059A40084.dita" id="GUID-0268D616-E865-4E72-81E1-77212149984B"/><topicref href="GUID-F4099885-55A0-5ACF-A73B-9C647B02B142.dita" id="GUID-AEB9445E-4112-49F1-BD6A-47D8B14288D2"/><topicref href="GUID-E6B3E575-80E3-58E3-9950-E0A5F6798861.dita" id="GUID-C28795BD-D95F-45C1-9563-3E6958A17B00"/><topicref href="GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808.dita" id="GUID-73FF3B32-B5CA-492B-A9A3-13AF0509D80D"/><topicref href="GUID-23014C8A-2A0B-5F6A-9BB2-6642E1EC0462.dita" id="GUID-5552D35F-8776-4392-888F-09A8DBFAB69D"/></topicref><topicref href="GUID-5DACAB53-6D32-5250-9BC2-3E8597C3E2B2.dita" id="GUID-256CB959-806F-4636-AC14-76794551CF98"/><topicref href="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita" id="GUID-632BF0DD-4CB9-4B3B-AD8A-B4298F556D98"/></topicref><topicref href="GUID-77ECD89F-84BB-55F1-9876-382E043F0C0D.dita" id="GUID-05E081CE-E4DD-4B21-8439-15DB87CD2F20"/></topicref></topicref>
+</topicgroup><topicgroup id="GUID-EA3774CD-3515-432A-AA54-304DA20DD72D">
+<topicref href="GUID-F9F53050-AAFA-4685-8C62-033E585F061B.dita" id="GUID-490E52DA-6F7A-4654-8128-1598314FF925"><topicref chunk="by-topic" href="GUID-377F7C19-C799-45CE-9ADA-4BB884B422BA.dita" id="GUID-4CD4EE3F-59D8-4C7E-BA5E-B75AECFE655F"><topicref chunk="by-topic" href="GUID-D730D796-F640-4100-BD41-32515EF086F1.dita"/><topicref chunk="by-topic" href="GUID-9D6E0EB4-CBF8-48BC-A76F-FE6366D4D96E.dita"/></topicref></topicref>
+</topicgroup></chapter>
+<chapter href="GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita" id="GUID-9CD95C3D-A4B3-49C3-9791-EE286997845D"><topicref href="GUID-AFF0B669-E0D8-5533-A105-0F5EBC6AF5E1.dita" id="GUID-0C97FFBE-7CA1-41DB-B880-BA5E9E995DFC"/><topicref href="GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita" id="GUID-8F6FA5A4-DCA3-441B-AD61-E6D60BB8EF7E"><topicref href="GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE.dita" id="GUID-23F491F9-667D-486B-9A40-EEC16B38EA7F"/><topicref href="GUID-3527AAEE-210F-524B-A655-A65F1CE86C80.dita" id="GUID-593CF9D4-47ED-461A-AE5E-B3D79E0EAE23"/><topicref href="GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita" id="GUID-923ACCC0-A099-4AAA-B578-DA80718F5CB9"/><topicref href="GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita" id="GUID-FF34C5BF-1E9C-430D-9ED9-02CBD4FF31DD"><topicref href="GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35.dita" id="GUID-1F0869ED-476A-4530-BDEE-0E95A21F8EF5"/><topicref href="GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA.dita" id="GUID-76E692D9-14AC-4BC4-B9A8-0E448625D6E7"/><topicref href="GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita" id="GUID-D7FF30D4-CE05-4967-9310-A21175739BF0"/><topicref href="GUID-188F9462-F805-522A-84FF-770EAB045504.dita" id="GUID-BA1527F7-2791-4451-A5AC-24E79D1967BA"/></topicref></topicref><topicref href="GUID-687AFC9D-ADB7-5190-A535-C54B835825DD.dita" id="GUID-5DD895F9-8E4E-4CCB-94A3-A11D655BEF33"><topicref href="GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita" id="GUID-C2AEB0E6-AEAE-4A9B-B275-16E55378DD25"/><topicref href="GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-7-1-1-5-1-4-1.dita" id="GUID-0A3958EC-287D-4770-A064-333E09F31156"/><topicref href="GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B.dita" id="GUID-05CFBC8C-8F8B-41C1-AD0E-545110611B51"><topicref href="GUID-E80AA33B-E5E0-5F4B-9A7F-65B357F7161C.dita" id="GUID-706A0550-DF15-410F-B14A-B06513D05E9E"/><topicref href="GUID-C39CA508-86F7-5B99-9390-56980DD0EFFB.dita" id="GUID-12F5F8CD-CE2C-4AD9-B71A-054101C9387C"/><topicref href="GUID-10F1D390-2CB6-584B-B760-E6A6E1D8FDDA.dita" id="GUID-32C6B2D2-E718-416C-B937-1475CE2333F6"/><topicref href="GUID-F9605837-2209-500D-AB62-48A433489C5E.dita" id="GUID-6591B7B9-C2DC-423B-9EA8-2AE8B5978399"/><topicref href="GUID-383A617C-474B-509D-BA37-3515BCC5F1D1.dita" id="GUID-5DDCCD20-6CDD-4C3E-A96B-5B42201A966C"/><topicref href="GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783.dita" id="GUID-EB11187D-AE54-4C12-B987-AABBAAE8CF0F"/><topicref href="GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita" id="GUID-5B82098D-C88E-404B-ADA2-59906768A92C"/><topicref href="GUID-32F00078-6084-5288-9D3F-9F8D70514799.dita" id="GUID-C9CA311F-22CA-4118-8B8A-A8CA1F95417E"/><topicref href="GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41.dita" id="GUID-12160735-9644-41C4-9CBC-2E8CC74AA801"/><topicref href="GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita" id="GUID-CDB4DAD9-AB9D-42CB-A835-8D007BDD70A0"/><topicref href="GUID-37057FD5-7ED0-5B18-9C28-39F6816D7627.dita" id="GUID-5762C0E1-A3DE-4485-85D6-2ABD81D00598"/><topicref href="GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita" id="GUID-CEF11941-BE6A-4964-9B2B-EEFEF8183F54"/></topicref><topicref href="GUID-141633B8-A3D4-5BBB-97C5-3D928746ECE7.dita" id="GUID-464891BC-BC27-428D-86C8-AB37D6749AB1"/><topicref href="GUID-50FD71BF-2DDA-5E80-9904-82DC90FCE6DD.dita" id="GUID-CFC494E0-14DB-4A16-B6C8-368C15DD3B3B"><topicref href="GUID-0D619063-F2DB-53FC-A5E6-BC09AD915FA4.dita" id="GUID-26ABA92C-1FC2-4217-95CD-2148D765CF2F"/><topicref href="GUID-B6088C0A-20AE-5108-A28C-9CA884205493.dita" id="GUID-CDB7CE11-C55C-4C6E-AF9C-EEF955F9A77B"/><topicref href="GUID-7F9F0EB3-8F0E-55BB-9864-C80FE6FC1528.dita" id="GUID-94B65FE4-5786-411D-913D-7FD7391854E5"/><topicref href="GUID-36743EC8-5A64-5FF5-8632-56CBBD04EC12.dita" id="GUID-7DA9B977-276D-43E3-82FA-57C98CA0175E"/><topicref href="GUID-97C0A5B1-99AE-5F71-9092-A6976E54AEA7.dita" id="GUID-64622117-E4C6-4268-8454-80580FDAF8A3"/><topicref href="GUID-0142B290-DA6C-5574-83D7-7555D804D9B5.dita" id="GUID-F7146146-D056-4A4F-A93D-B7F8171FBA7E"/><topicref href="GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2.dita" id="GUID-FB17596C-54BE-44E7-9286-4D77DD806CD1"/></topicref><topicref href="GUID-F6780E5A-26DA-5453-B9BE-11039CFA4FFB.dita" id="GUID-9DFEE386-B31B-4D89-BA15-5BD0A51F54FA"><topicref href="GUID-66470976-7B8B-582B-B32B-4010C95052FF.dita" id="GUID-29B72B47-0794-4913-8D54-770A5AF26E5F"/><topicref href="GUID-9574041E-183D-5C3F-8429-A62323B97739.dita" id="GUID-EDB3D510-A85E-46A4-B70D-3D4EA4A912B5"/><topicref href="GUID-A4B391F0-058F-5B51-8D28-6A7B5C4A1BB9.dita" id="GUID-2E90F23E-4A0C-45FA-BB3B-9E55350402A4"/><topicref href="GUID-9444E57C-1C2F-5EAC-B162-25FC27BB9516.dita" id="GUID-A9B781A6-3ED9-4FAA-B66A-CA6B0928862C"/></topicref></topicref><topicref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita" id="GUID-D535371B-A642-4B9E-AA02-0B9380F94C91"><topicref href="GUID-0BF25E2A-99B9-5558-B805-019430409518.dita" id="GUID-D38807AA-B44F-4D61-B1E2-40A81885B60A"/><topicref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita" id="GUID-C4C8F244-41A9-479C-B9FE-0F5D5CD1E5DA"/><topicref href="GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita" id="GUID-13880765-CF2C-4422-8B29-55FE70CDF90D"><topicref href="GUID-FCE138BF-A471-5864-AE4C-8D89EF5F2BB9.dita" id="GUID-D213BE36-7813-4707-A9B2-A3CC9EF3A0BB"/><topicref href="GUID-B5576E47-CBB6-5E50-91BD-1CA1425EACE8.dita" id="GUID-380CAF93-A49B-4012-AB28-33E99C27595A"/><topicref href="GUID-049A089E-FF08-5706-8485-8C9A5A0BCF6F.dita" id="GUID-5911B66D-C8B6-499D-B8D8-A9C3C8F8B3F1"/><topicref href="GUID-2AD64552-440B-5439-885B-BE71DE0E8F1F.dita" id="GUID-F1786AA7-A9F5-4A4A-8A60-89419347C057"/><topicref href="GUID-30EB4252-4CBA-5174-9133-E79AC9AEAEBF.dita" id="GUID-5F88956A-FF4C-44D1-B7B7-A95723FEE9D4"/><topicref href="GUID-FA18838A-F0C6-5241-8913-BFB46571D908.dita" id="GUID-A2F21D7F-3667-45CE-97CA-40E84B8E766A"/><topicref href="GUID-D37576D8-1BD6-520B-9C69-60F2F89E4452.dita" id="GUID-1A55D5AF-9A70-440D-B408-77329C138710"/></topicref><topicref href="GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita" id="GUID-6113FFE8-FAA0-4ACF-A8ED-0C384D085012"><topicref href="GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254.dita" id="GUID-C82C0EF0-3B03-4C3F-8028-8176C03E9AAD"/><topicref href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita" id="GUID-D15A0830-183A-4340-B64A-35C57FD93763"/><topicref href="GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita" id="GUID-F0F53682-7E65-495F-A61E-13303AF5DAA9"/><topicref href="GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7.dita" id="GUID-9D883FA8-70D2-46C8-8D10-0693643205F5"/><topicref href="GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita" id="GUID-7F16A95F-C7A7-42D6-89FB-E89FD4FBA006"/><topicref href="GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita" id="GUID-EEBCE412-333D-42D0-9B54-CB8BF3664338"/><topicref href="GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita" id="GUID-618CB2EC-B50D-4217-84CA-712605697F63"/><topicref href="GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita" id="GUID-0EFFA7F4-6CD4-4C63-A096-1BB3DFCC08ED"/><topicref href="GUID-33716081-180C-5DDB-A5D2-0EC61357250D.dita" id="GUID-CB3A8C55-6DD6-4550-9A2A-7844796433B4"/><topicref href="GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA.dita" id="GUID-CC36747D-6D71-468D-AFD3-55F3C9A4A307"/><topicref href="GUID-E0284006-9173-5BC5-A899-E0873CA1AE1F.dita" id="GUID-D44BB8E1-000F-4B2A-B8FF-26AF45EA0DD7"/><topicref href="GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita" id="GUID-87498047-1038-432A-8C34-7D3FD466E9E7"/><topicref href="GUID-0E3E2FAD-FC85-5995-8B5C-8F1C1A4186D0.dita" id="GUID-C922F189-790F-47F3-8493-29127E22BA42"/></topicref><topicref href="GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita" id="GUID-95315A47-CFC8-46B2-8FD9-5AA31A301C03"><topicref href="GUID-ADDF9C0F-32D3-5CB1-B3B5-2FAD3A4EC278.dita" id="GUID-B4F05A1E-7FBE-4075-AEE2-3C329268AF2A"/><topicref href="GUID-F79EE68F-FFC3-541E-AE3A-D7203034DA43.dita" id="GUID-1F3A418F-06FD-413B-B979-4F345F3433E6"/><topicref href="GUID-4406BDE0-8256-5F97-9FC5-BBFD11D9C4A3.dita" id="GUID-00C2EAAF-F434-4721-8A48-5868DCDF8DF3"/></topicref><topicref href="GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita" id="GUID-529D036F-5648-4FBD-BE20-15E5644DBFB6"><topicref href="GUID-C762E5B4-A7E3-5CAD-B639-A31F5D1899D3.dita" id="GUID-CC98BDD2-4F34-4F29-A471-C4A1D93C34A6"/><topicref href="GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A.dita" id="GUID-0E3B646A-4623-48AB-9E84-525A94C32978"/><topicref href="GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita" id="GUID-3D78D4E4-4C44-4218-8ED9-C6B9D649A13C"/><topicref href="GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44.dita" id="GUID-448B014F-F311-486F-92D9-202CC2256351"/><topicref href="GUID-CF8287B9-2063-5316-A1BF-7DFC58FCDE30.dita" id="GUID-B384D25B-7E5F-41B6-B548-B5C62E6AB477"/></topicref><topicref href="GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita" id="GUID-1779B512-DFE4-44FF-AB75-7A7E6B6BC78F"/><topicref href="GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita" id="GUID-34E52B35-D3B9-4F2B-8F68-72C8AD06B962"/><topicref href="GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita" id="GUID-0C3DF695-192B-4A54-A540-18697060D88B"/><topicref href="GUID-61459132-3AC2-55D3-AC28-D6FA689409E6.dita" id="GUID-C7B3FDC2-FBD1-4289-B41E-AA1BF7A1E103"/><topicref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita" id="GUID-6E3B160A-59DD-4F3D-8A5B-63AF086A59CD"/><topicref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita" id="GUID-98D1B711-B911-4C20-853C-0990338078AF"/><topicref href="GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita" id="GUID-A05327D2-3C75-4443-8201-6DA855DFF228"/><topicref href="GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5.dita" id="GUID-3916AFBE-BB62-4EC3-B0E4-228D70D861E4"/><topicref href="GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971.dita" id="GUID-04BA9C83-E56A-4DA4-9016-18D434A678C6"/><topicref href="GUID-F9455FE8-5247-58D5-ACEF-52753B88444F.dita" id="GUID-7B8CA9E1-011D-4EC9-A3BE-76018A324972"/><topicref href="GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita" id="GUID-006C18C5-7751-46F7-AAA6-3F1CF3CAD92F"/><topicref href="GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita" id="GUID-A40F9B5E-57BC-4D5D-A1E0-A01FEB841AF1"/><topicref href="GUID-AE3BE603-21ED-5DEA-B1E9-0F1ADBED06D0.dita" id="GUID-D14AE4DF-D3FF-449C-9D0B-5235C8290A75"/><topicref href="GUID-2C1DB75C-FB12-520C-85B1-57F1EDB61E3B.dita" id="GUID-8B88B4D2-806C-4641-ABD9-6658DDE81EA4"/><topicref href="GUID-F5D49215-B34A-5FCC-A7E1-0AF3275694B3.dita" id="GUID-49E89483-706A-4941-8C9C-81B6B2DB192C"/><topicref href="GUID-6025A68F-625B-570A-87D7-2C11E66044D4.dita" id="GUID-2256E4AF-E870-4E0C-AE64-85B000006637"/></topicref><topicref href="GUID-49397CFD-955A-5DF6-9251-368C44224966.dita" id="GUID-389F7E83-C387-47DC-B3AC-424524807268"><topicref href="GUID-28B9B737-AA79-5595-8DDE-7DD52402C0B9.dita" id="GUID-A80F5C8A-E813-47B6-A5CA-6B5674B17A14"/><topicref href="GUID-B1800856-3516-5D22-B1C5-556866CDDF46.dita" id="GUID-6D79C5F5-194F-4B33-AA70-1CA561ECC80B"/><topicref href="GUID-038747F2-E5A2-5739-BFF5-69B6BD0DCEB2.dita" id="GUID-44643F07-36AF-4D96-A539-FC4B9C152CF1"><topicref href="GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita" id="GUID-E0888BCE-275A-40B6-9A0B-C47F37109F87"/><topicref href="GUID-3BCA55F8-3867-579B-8D81-C540A32A8462.dita" id="GUID-C813C1E4-BBDE-4D55-AC15-6C5D3756AA2B"/><topicref href="GUID-14A0FC93-2AD9-5B33-B423-2CCAD3C96B5F.dita" id="GUID-38A5508C-2705-4814-BE92-4563962D3FFE"/><topicref href="GUID-C2709212-FD91-5245-9A1D-0E8114D7B202.dita" id="GUID-630ECD4A-97A7-437E-B7FD-79F50E3F38A5"/><topicref href="GUID-DA793067-32DD-5D4D-A0E6-E05DF9047529.dita" id="GUID-1B8B6571-16CA-4DF0-9DF2-EDFEE71A253D"/><topicref href="GUID-8E7CCFD7-F820-596E-BACB-AE43878C6CD8.dita" id="GUID-E0AFA1E5-BAB2-4945-994F-74BAE7F019C5"/><topicref href="GUID-2AE024D5-B34B-5E7E-BC7E-8C45E80173C5.dita" id="GUID-C2CCF7D7-C7A6-45FF-91CB-56E5E50C1D2E"/><topicref href="GUID-4D4CB4DC-9B9A-5256-B949-C5E9F369D9C6.dita" id="GUID-DA980A49-28B4-46ED-967C-38E5043F999F"/><topicref href="GUID-DD7D33BD-0DDB-584C-9362-AEECFA1EA9A7.dita" id="GUID-01AF0C63-B27D-47EA-9C5D-6B102276AD38"/><topicref href="GUID-F13D4492-4E0C-5D7A-A30D-9E79F092CF72.dita" id="GUID-8BDDAC98-9EF6-4F4C-8AE1-368A381EF3CD"/><topicref href="GUID-6CB40FC5-5CBF-592C-B27D-29922C3815DC.dita" id="GUID-43FD2368-D9CC-4524-A4A8-1AC7BBEB9457"/><topicref href="GUID-3F1FF06E-4190-5AC7-86C6-6732B632BA1A.dita" id="GUID-8E827A06-A70D-44CD-AC67-21E488535411"/><topicref href="GUID-C5F4CF0F-EC1B-595D-8C95-41891CB5930D.dita" id="GUID-6767BCF9-9CF3-4548-ACAB-6034CB9688D3"/><topicref href="GUID-F9E10A82-88E9-57AA-AFEE-3C1A21BF05BC.dita" id="GUID-B8C3CF6C-D2DC-4094-B128-63F85327316D"/><topicref href="GUID-F4C3DDE1-F7D3-5256-BABD-34759DCA57BF.dita" id="GUID-A4DEB860-CB91-4EC9-B43E-9F645504A5E1"/><topicref href="GUID-F0923110-D5D9-56D7-8CBC-82CAE062BC1A.dita" id="GUID-75731C9E-71BE-48D5-9916-7A51BB3C40E4"/><topicref href="GUID-7971886A-8ED0-5924-9BC0-A163BA499888.dita" id="GUID-02A10985-A977-4A36-9230-3926E77412CF"/><topicref href="GUID-139E7235-4F23-5F0E-A969-6D7165AE5298.dita" id="GUID-EE0C39EA-9FF5-4878-8A5D-96A4113C6E72"/><topicref href="GUID-7A22FBD7-F306-578C-BD54-BCF74B7343CF.dita" id="GUID-636390E4-FBE0-4654-9EDE-ED8B0481C0D9"/><topicref href="GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA.dita" id="GUID-90EAFBBE-DFE0-4E62-AEF3-B26EC3594806"/><topicref href="GUID-DDE06BD5-2515-59FD-B91F-4C78A768533D.dita" id="GUID-A85CF5D3-4AE4-4734-A7A4-F7BCF2F9DE30"/><topicref href="GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33.dita" id="GUID-526CFF72-253D-4A5B-BFE6-AC241BF6EA59"/><topicref href="GUID-2273C35F-C8FD-5321-BAE8-4995C5B374E5.dita" id="GUID-151E903B-AA41-45D5-B116-8E56D3E90B68"/><topicref href="GUID-023268BB-8C52-51A1-9E3B-4C7E265DFDAB.dita" id="GUID-C3745A37-2DEB-4765-9879-F93D9ED34611"/></topicref><topicref href="GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita" id="GUID-738C2604-8EFD-48BD-8DA1-A2CAF4F0938F"><topicref href="GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9.dita" id="GUID-74D1F22C-271D-43C6-B7AD-B946CD055D7D"/><topicref href="GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita" id="GUID-DF58D8FE-46FB-46E4-AC67-E23503B26385"/><topicref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita" id="GUID-EB199791-90C6-46B9-A8E3-C0A7E704B418"/><topicref href="GUID-5AF0B573-4351-5735-92A1-4F29BCF9A164.dita" id="GUID-F81D3432-200E-49A8-B95D-8F795558C3C0"/><topicref href="GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita" id="GUID-6FEDCFF6-BDA5-424F-B420-7FDBC043D98A"/><topicref href="GUID-B1C79738-0449-5C26-BA8A-4612C6BF652F.dita" id="GUID-01C8BD0C-ED2B-4AD0-8B73-86264A009829"/><topicref href="GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81.dita" id="GUID-6690FDC7-0E71-4F8E-9C2C-A19C2C9DA7C3"/><topicref href="GUID-2C68AC8D-6767-5865-B684-CB627C20C6DC.dita" id="GUID-9D189C9E-855D-4BD8-B98C-1F530BABD93F"/><topicref href="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita" id="GUID-308D98D5-3195-492D-8F13-BED849CB7800"/><topicref href="GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita" id="GUID-9C5F1486-339C-42E6-A116-7BAFFEF366CF"/><topicref href="GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita" id="GUID-8A6E962B-07CA-439A-9E14-0A7AB599E85A"/></topicref><topicref href="GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita" id="GUID-DB22F14A-973A-47B4-B5F6-050BBA7FA10A"/><topicref href="GUID-50F216D0-242A-5796-BDCC-7AAB28535458.dita" id="GUID-5ABACDE9-3B24-419A-8AED-5C99D0586C0D"/><topicref href="GUID-5986717C-C777-590D-8487-CB8ED488E975.dita" id="GUID-8FABA914-CF67-4188-AF0B-D7CAEF0B5708"/><topicref href="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita" id="GUID-CE4D579D-5D83-4245-877D-02C6655E710C"><topicref href="GUID-B68FF699-923B-530E-A877-86507B1D42F1.dita" id="GUID-71FDFB26-714C-468E-BE49-70F647B72F76"/><topicref href="GUID-619A607D-CA89-5A98-887D-5B1D2A5F921C.dita" id="GUID-AA9AF5B8-79FF-48B0-9C15-22F890BBCD9E"/><topicref href="GUID-48BD628F-F47F-535B-B148-7425A6704FC2.dita" id="GUID-F400CED9-B0D6-47E1-8B44-70431A3E28BC"/><topicref href="GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita" id="GUID-355FE231-C519-4097-87C8-23910F28EC46"/><topicref href="GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F.dita" id="GUID-DD9CCA9B-6585-463C-9254-123407C35065"/><topicref href="GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita" id="GUID-50CE2815-D367-4F74-8B56-3BABC42AD2CE"/><topicref href="GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644.dita" id="GUID-91B6436A-154B-40CD-95FD-CD8EEDF2B10E"/><topicref href="GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita" id="GUID-BCD31B22-4D66-45F5-A2FC-B8AC08F15629"/><topicref href="GUID-5822CE94-C8AF-5F81-AB3F-E95B44265065.dita" id="GUID-E8CB7C24-0DD5-4608-8490-B4FB69A2FC56"/><topicref href="GUID-66C1F45B-FA94-5724-AD8F-371EAE92B7E9.dita" id="GUID-81A14573-35B6-4501-93F7-5BCB2C4BB8C2"/><topicref href="GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD.dita" id="GUID-B0E11B8B-5B57-4792-83F3-552F01AFFF1F"/><topicref href="GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90.dita" id="GUID-E1B9D4B9-B4FA-4EF5-8DC5-64CED1AD7BB4"/><topicref href="GUID-E71D8907-236E-5948-9594-E14E34A31DC8.dita" id="GUID-D665C587-661E-4B13-B6AC-9B2A9724BFFC"/><topicref href="GUID-6C1D941B-ADD1-5BD3-9045-53B66253316B.dita" id="GUID-7B980F77-3D62-428C-AFD6-4AF79A46F4A4"/><topicref href="GUID-432FF981-010F-540B-834F-FF924238AA2A.dita" id="GUID-5C8742D4-874D-4AE9-8CDD-AAF53D82290A"/><topicref href="GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931.dita" id="GUID-AC2BEB6C-6EC3-49F8-A272-6E6978E32251"/><topicref href="GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita" id="GUID-0CBF02A5-6B4E-4FA6-A836-A6532A89E7BF"/><topicref href="GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03.dita" id="GUID-42AA4EC1-D518-47E3-AB54-21F7EEB84E62"/><topicref href="GUID-9F22E663-8BC4-5502-879F-E6B790465E74.dita" id="GUID-F5363BB6-A261-4857-A2B7-E3C393BA6EA5"/><topicref href="GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita" id="GUID-D3D0BCE9-9055-4751-A73A-1D53834EC1E2"/><topicref href="GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita" id="GUID-22546FEC-07FB-479C-9066-81DB7E708FF3"/><topicref href="GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita" id="GUID-1C881D1C-4F11-47A0-90CF-C70600D7375F"/><topicref href="GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita" id="GUID-2B2B355F-85F2-48EC-99B4-3A37CE08C492"/><topicref href="GUID-567D36A2-1097-5D44-B1B2-896F0F812A32.dita" id="GUID-3C967120-1F66-43EC-B100-8DAD9042729F"/><topicref href="GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE.dita" id="GUID-B7D6EA1F-F8DE-4424-98F7-3F056478F2DE"/><topicref href="GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita" id="GUID-07DEF2C9-32EB-450E-879B-11874756A5C3"/><topicref href="GUID-A05F0124-AE28-5088-8AFE-22956D1549AD.dita" id="GUID-7B5FA4F9-2931-4E3F-96A2-9A5CEC393D78"/><topicref href="GUID-D553D41C-D724-510A-A239-66CC158D6984.dita" id="GUID-187A6B34-8311-4D0C-92BA-821726CFD36A"/><topicref href="GUID-7226154E-2387-5D14-A009-2A1A60617970.dita" id="GUID-8C282E4E-5139-4F01-BF20-0BD098F608C1"/><topicref href="GUID-2393237A-E60F-5556-8657-B0AA6470225C.dita" id="GUID-6187FBD9-3B8F-43B7-8314-9EB47C7E29C9"/><topicref href="GUID-D76B1999-E118-585B-A6B4-8AE8CCCB6F8B.dita" id="GUID-EC486938-AC62-469B-B6D5-17E7B56EE39F"/><topicref href="GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754.dita" id="GUID-C6F22F4F-8C97-46E0-9645-CA8D0C8CDF04"/><topicref href="GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90.dita" id="GUID-02B7FD1D-DE2D-4F85-9AA1-3CEFE0642D2F"/><topicref href="GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F.dita" id="GUID-23B07069-CB38-4A7D-934D-C486FD3C38BD"/><topicref href="GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita" id="GUID-36B93D9D-0D9E-4B67-AF11-89A474A1FCCD"/><topicref href="GUID-F03A323A-2FCC-5247-909F-4AB2701B1C45.dita" id="GUID-0D6C951B-DF10-4365-A056-5E9E01F8993E"/><topicref href="GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA.dita" id="GUID-AA7002D4-7E2F-4D23-BCE3-B8863D2A7A2E"/><topicref href="GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita" id="GUID-FF9ED03F-A148-4A5F-9C78-3CA3FA4321CD"/><topicref href="GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605.dita" id="GUID-54E81EE9-6AAC-42BB-99C2-B36B2B5936D6"/><topicref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita" id="GUID-F0FEC023-09A4-48CF-8726-6AA1EFF57C4E"/><topicref href="GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E.dita" id="GUID-065CBA41-AC1F-44CA-95CA-A62F16D8C1FB"/><topicref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita" id="GUID-0EECF866-476D-4192-9066-3839B3D65043"/><topicref href="GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5.dita" id="GUID-DF0ABD26-E86B-4CC2-9C19-5D15B79C974E"/><topicref href="GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E.dita" id="GUID-A5854BBB-5EDA-4D5B-AE16-6776286A83E3"/><topicref href="GUID-809D428D-5BF6-57FF-952D-2FDF88E50833.dita" id="GUID-C0490FC3-3857-4AF8-BA9B-BEB8F4F6F76B"/><topicref href="GUID-B58D93D7-597C-5200-82ED-F434B297CAC9.dita" id="GUID-C6915FDB-DCA5-4D0A-A1F6-B3FBC410BD6D"/><topicref href="GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9.dita" id="GUID-E873B114-B045-47BE-9A59-8D5F45572C0E"/><topicref href="GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E.dita" id="GUID-C83B6CD2-2FF6-4017-97AD-D6065D1DF55C"/><topicref href="GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita" id="GUID-75113D0A-5106-48F0-BA41-2F105CF698AA"/><topicref href="GUID-7681734D-1291-59A3-B226-BC58403FA8A0.dita" id="GUID-344F9630-D104-45D8-B820-6C3DD049933F"/><topicref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita" id="GUID-CDD90E9B-968B-4451-B1EC-763CFFBB27DB"/><topicref href="GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita" id="GUID-D668F5B5-3BA4-4B73-B5D6-8600C65A613C"/><topicref href="GUID-751F057B-BF6D-5B28-A47A-3E99B25731CF.dita" id="GUID-C0651852-E6D3-41F2-97DB-45077706D1DE"/><topicref href="GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C.dita" id="GUID-5C4464B9-42C2-408C-8B54-F88E60B1312E"/><topicref href="GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482.dita" id="GUID-EBA9A4B9-D4CD-4BF6-9A3B-CAD40B7A0E8F"/><topicref href="GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita" id="GUID-BEF3D78E-DC77-4943-A9B2-7011F080B029"/><topicref href="GUID-535793F2-08F1-5B4E-AD32-783985C53124.dita" id="GUID-633BA0E3-2CF8-415D-ABB3-D58D0EA9C804"/><topicref href="GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5.dita" id="GUID-B59C1137-CD61-496E-976C-74399CB141D7"/><topicref href="GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita" id="GUID-BA7C85D8-2C55-44DF-8DD9-F4E08A2C5C7A"/><topicref href="GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4.dita" id="GUID-3683C81E-94D9-4185-AF81-2DFF0144D150"/></topicref><topicref href="GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita" id="GUID-76D1B2B6-19A8-4988-813E-4B303D71DC86"/></topicref></chapter>
+<chapter href="GUID-1D0E418B-09D4-5A6E-A1A8-A46F9F9CF371.dita" id="GUID-C9AFCBA2-6169-42F1-981C-BAC65D00E535"><topicref href="GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita" id="GUID-D0BC7389-CCAC-4B6E-B2DF-ED04AF69B44C"/><topicref href="GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2.dita" id="GUID-01BA3966-A5C4-4829-846F-0D4FF01D72A6"/><topicref format="application/java-archive" href="GUID-6013A680-57F9-415B-8851-C4FA63356636.jar" id="GUID-D01A6A9E-58A6-4AE9-A2EC-7C73E0045302" print="no"><topicmeta><linktext>Symbian Example Code</linktext></topicmeta></topicref></chapter>
+</bookmap>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-44CF5471-564E-5790-935B-51193A4978D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-44CF5471-564E-5790-935B-51193A4978D6" xml:lang="en"><title>Message Server
+and Store Concepts</title><shortdesc>This section lists the concepts that are related to Message Server
+and Store. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4"><title>Controlling the Video Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to control the video plugin. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to control the video controller plugin. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video recorder utility is used to record video clips to files, descriptors or URLs and manipulate embedded meta data. This functionality is implemented by the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> class. </p> </section> <section><title>Using Video Plugin </title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-785B54E9-8489-5FF0-9A3E-00AD9F61FB6E"><p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita#GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4/GUID-CC9109C2-0E05-5B44-AF72-C659D304FB89">Using Custom Commands</xref>  </p> </li> </ul> <p id="GUID-CC9109C2-0E05-5B44-AF72-C659D304FB89"><b>Using Custom Commands</b> </p> <p>Custom commands are used to pass the message directly to the controller plug-in instead of going through APIs such as Play(), Record(), and so on. </p> <ul><li id="GUID-E8FFCAD2-DA67-5491-914A-FAC92468A1E2"><p>To send a synchronous custom command to the controller, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-E4B8F030-251C-3D13-A2A6-05C121553498"><apiname>CVideoRecorderUtility::CustomCommandSync()</apiname></xref> function. </p> </li> <li id="GUID-6451D279-E373-5253-ABA6-C27EA77DEDEA"><p>To send a asynchronous custom command to the controller, use the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-922747F2-0301-31A9-BF3A-57092CAC5D69"><apiname>CVideoRecorderUtility::CustomCommandAsync()</apiname></xref> function. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita">Creating and Preparing a Video Recorder</xref>  </p> <p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita">Configuring the Video Recorder</xref>  </p> <p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita">Enabling/Disabling Video Recording</xref>  </p> <p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita">Controlling Video Recording Quality</xref>  </p> <p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref>  </p> <p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita">Setting Video Metadata</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-44F4089F-7184-5F73-A01E-E0F639D32EA1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-44F4089F-7184-5F73-A01E-E0F639D32EA1" xml:lang="en"><title>System
+Wide Error Codes Overview</title><shortdesc>This is an overview document of error codes used system APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-6B6D8FFA-DF27-44D5-AEBF-5CCC81D4C39F"><title>Purpose</title> <p>Provides a core set of error codes that
+may be returned by System APIs. They are defined in e32err.h. </p> </section>
+<section id="GUID-B103B96A-B168-4F3C-821B-AF56D0E35643"><title>Description</title> <p>These error codes are used by System
+APIs to indicate common mathematical, file, communications, and client/server
+errors. These error codes are intended to be generic to reflect the fact that
+many error conditions occur for similar reasons in nearly all software components.
+The errors may also be returned by non-System APIs where appropriate. APIs
+may also use additional error codes where the core set is not sufficient. </p> <p>Error
+codes are returned to clients in three circumstances: </p> <ul>
+<li id="GUID-ED9D2507-15E4-528B-AF04-3D0CC21F758D"><p>as a simple <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> return
+value from a synchronous function </p> </li>
+<li id="GUID-50CC41C2-6EA7-5DCB-A4B8-5092A15A1C53"><p>as a leave code from
+a leaving function, which can be caught in a trap harness </p> </li>
+<li id="GUID-2D401685-8851-574B-A672-47DFAF9F3C52"><p>in a request status,
+when an asynchronous request function completes </p> </li>
+</ul> <p>The complete list can be found at e32err.h. This not only describes
+the symbols used in C++ code, but also the numerical values that those symbols
+represent. </p> <p>In the code itself, the core list is defined in the header
+file <filepath>e32err.h</filepath>. </p> </section>
+<section id="GUID-9B23BFC3-25DB-4578-ABB1-AF4E38431967"><title>See also</title> <p><xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous
+Services Overview</xref>  </p> <p><xref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita">Cleanup
+Support Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93" xml:lang="en"><title>Querying
+for Sensor Channels</title><shortdesc>You can retrieve a list of sensor channels that are available for
+a particular sensor type. Once you get the list of sensor channels that are
+active, you can perform any required operations such as configuring sensor
+channel properties, controlling sensor channels and so on.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-4-1-3-1">
+<step id="GUID-EE1655E2-D4C4-4593-A0E1-BD1DFACB0351"><cmd>Create an instance
+of <codeph>TSensrvChannelInfo</codeph> and set the required channel type as
+the search criteria. For example, to query for all double tapping channels
+provided by accelerometer sensor, set the channel type as <codeph>KSensrvChannelTypeIdAccelerometerDoubleTappingData</codeph>.</cmd>
+<stepxmp><codeblock xml:space="preserve">TSensrvChannelInfo channelInfo;
+channelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerDoubleTappingData;</codeblock></stepxmp>
+</step>
+<step id="GUID-176936C5-17FE-49A6-A0A7-0E76EB69C5E8"><cmd>Create an instance
+of <codeph>CSensrvChannelFinder</codeph> class and use the <xref href="GUID-5F108D03-C8A6-3EF9-B103-2E8916633602.dita#GUID-5F108D03-C8A6-3EF9-B103-2E8916633602/GUID-E58BAF1B-57AA-3E85-A4F9-8C6C29043FBD"><apiname>CSensrvChannelFinder::FindChannelsL()</apiname></xref> function
+to query for available sensor channels.</cmd>
+<stepxmp><codeblock xml:space="preserve">CSensrvChannelFinder* finder = CSensrvChannelFinder::NewL();
+finder-&gt;FindChannelsL(channelList, searchParameters);</codeblock></stepxmp>
+</step>
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-4-1-4-1-4-1-3-1-3"><cmd>Create an instance
+of <codeph>RSensrvChannelInfoList</codeph> to store the list of sensor channels.</cmd>
+<stepxmp><codeblock xml:space="preserve">RSensrvChannelInfoList channelInfoList;</codeblock></stepxmp>
+</step>
+</steps>
+<result id="GUID-F26EFE38-DF01-4531-89AD-191049E31F36">       <p>The <parmname>channelInfoList</parmname> contains
+all the double tapping channels that are found. If several matching channels
+are found, you can select the required channel by examining the content of
+channel information objects inside <parmname>channelInfoList</parmname>.</p> 
+   </result>
+<example><p>This following code shows how to find double tapping channels
+for accelerometer sensor:</p><codeblock xml:space="preserve">.....
+......
+/Construct a channel finder.
+    CSensrvChannelFinder* channelFinder;
+    channelFinder = CSensrvChannelFinder::NewL();
+    CleanupStack::PushL( channelFinder );
+    
+    // to store list of found channels.
+    RSensrvChannelInfoList channelInfoList;
+
+    //Create and fill channel search criteria.
+    //In this example double tapping channel is searched.
+    TSensrvChannelInfo channelInfo;
+    channelInfo.iChannelType = KSensrvChannelTypeIdAccelerometerDoubleTappingData;
+
+    //Find the double tapping channel
+    channelFinder-&gt;FindChannelsL( channelInfoList, channelInfo );
+
+    CleanupStack::PopAndDestroy( channelFinder ); // finder not needed any more
+
+    if( channelInfoList.Count() != 1 )
+        {
+        //The device does not support double tapping channel or
+        //there are several double tapping channels.
+        }
+    else
+        {
+        //double tapping channel found 
+        }
+.....
+....
+</codeblock></example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-457628C5-2972-4432-A03F-CD8CC0E1B60A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-457628C5-2972-4432-A03F-CD8CC0E1B60A" xml:lang="en"><title>Initializing
+a Library</title><shortdesc>Sometimes, a library needs to be initialized before it can provide
+any services to client of the library. This can be done in several ways. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A4E1C734-DF38-4AA7-8FDB-4FF97706F005">       <title>Export
+functions for initializing and closing the library</title>       <p>The library
+can export more than one function for initializing and closing the library.</p><p>The
+client of the library calls the initialization function before requesting
+any services and calls close when the client does not use the library. </p><p><b>Example:</b></p><p>There
+is a DLL called <filepath>xxx.dll</filepath>. Two functions <codeph>InitXXX()</codeph> and <codeph>CloseXXX()</codeph> are
+exported from this DLL. The library code can look like the following:</p><p>Library
+header file <filepath>xxx_init.h</filepath>:</p><codeblock xml:space="preserve">....
+IMPORT_C void InitXXX();
+IMPORT_C CloseXXX();
+....
+</codeblock><p>Library source file <filepath>xxx_init.cpp</filepath>:</p><codeblock xml:space="preserve">static int _InitCount = 0;
+EXPORT_C void InitXXX()
+{
+   if(_InitCount++ &lt;= 0)
+   {
+   // initialize xxx.dll
+   }
+}
+EXPORT_C CloseXXX()
+{
+   if(--_InitCount &lt;= 0)
+   {
+   // free all the resources
+   }
+}
+</codeblock><p>User code looks like the following:</p><codeblock xml:space="preserve">#include &lt;xxx_init.h&gt;
+...
+int main()
+{
+   InitXXX();
+   ....
+   ....
+   CloseXXX();
+   return 0;
+}
+</codeblock>     </section>
+<section id="GUID-ADE950F6-8C93-4080-86A1-91C5F92D254D"><title>Exported functions
+check whether the library is initialized</title><p>Every exported function
+can check whether the library has been initialized. The library can export
+one function (for example, <codeph>CloseLib()</codeph>) and this can be called
+before exiting <codeph>main()</codeph>.</p><p><b>Example:</b></p><p>Library
+header file <filepath>xxx.h</filepath>: </p><codeblock xml:space="preserve">....
+IMPORT_C void X_Export_Api1();
+IMPORT_C void X_Export_Api2();
+....
+</codeblock><p>Library source file <filepath>xxx.cpp</filepath>: </p><codeblock xml:space="preserve">static int _InitCount = 0;
+#define INIT_LIB if(_InitCount == 0) \
+           {\
+               _InitCount++; \
+               InitXXX(); \
+           }
+LOCAL_C void InitXXX()
+{
+   // initialize xxx.dll
+}
+LOCAL_C CloseXXX()
+{
+   // free all the resources
+}
+EXPORT_C void X_Export_Api1()
+{
+   INIT_LIB;
+   ...
+   ...
+}
+</codeblock><p>User code looks like the following:</p><codeblock xml:space="preserve">#include &lt;xxx.h&gt;
+...
+int main()
+{
+   ....
+   ....
+   X_Export_Api1();
+   ....
+   ....
+   X_Export_Api2();
+   ....
+   ....
+   return 0;
+}
+</codeblock></section>
+<section id="GUID-F387926E-A6D2-439C-9EEA-A3751E38DFBE"><title>Library defines
+a static object</title><p>The library can define static objects and call the
+initialization code from the constructor of these static objects so that before
+calling, the application entry point library will be initialized.</p><p><b>Example:</b></p><p>Library
+header file <filepath>xxx.h</filepath>: </p><codeblock xml:space="preserve">....
+IMPORT_C void X_Export_Api1();
+IMPORT_C void X_Export_Api2();
+....</codeblock><p>Library source file <filepath>xxx.cpp</filepath>: </p><codeblock xml:space="preserve">LOCAL_C void InitXXX()
+{
+   // initialize xxx.dll
+}
+LOCAL_C CloseXXX()
+{
+   // free all the resources
+}
+class LibInit
+{
+   LibInit();
+   ~LibInit();
+};
+LibInit::LibInit()
+{
+   // put all library initialization code here.
+   InitXXX();
+}
+LibInit::~LibInit()
+{
+   // free all resources
+   CloseXXX();
+}
+static LibInit _libInit;
+</codeblock><p>User code looks like the following:</p><codeblock xml:space="preserve">#include &lt;xxx.h&gt;
+int main()
+{
+   ....
+   ....
+   X_Export_Api1();
+   ....
+   ....
+   X_Export_Api2();
+   ....
+   ....
+   return 0;
+}
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4576A9FC-10EF-5D3A-9AFC-3BF9CE10EE2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4576A9FC-10EF-5D3A-9AFC-3BF9CE10EE2F"><title>cat</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>cat [-OPTION] [FILE]...</userinput> </p> <p>The <codeph>cat</codeph> command is used to concatenate files and print them on a standard output. For more information about using the <codeph>cat</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://www.freebsd.org/cgi/man.cgi</xref> by specifying <codeph>cat</codeph> as the search keyword and by selecting the <b>FreeBSD 6.2-Release</b> option from the release list. </p> <p> <b>Note:</b> The <codeph>-v</codeph> option is <b>not</b> supported by the Symbian version of the <codeph>cat</codeph> command: </p> <section><title>Copyright information</title> <p>For information about documentation copyrights associated with the <codeph>cat</codeph> command, see <xref scope="external" href="http://www.freebsd.org/copyright/freebsd-doc-license.html">http://www.freebsd.org/copyright/freebsd-doc-license.html</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-457CC544-EC3B-4863-A5C4-DC7046614929.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-457CC544-EC3B-4863-A5C4-DC7046614929" xml:lang="en"><title>Locale-sensitive
+data types</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Mobile device users can often select presentation styles for data types
+that vary between different countries and regions based on preferred conventions
+grouped according to locale. Locale is a concept that attempts to identify
+cultural conventions (including a language) like number, date and time formatting,
+currencies, sorting, and so on. Locale can also contain country-specific conventions,
+such as time zones. To clarify the idea of locale, consider for instance English.
+The English variant for United Kingdom requires different settings than the
+variant for the US market. For example, they have different date formats,
+different first day of the week, different currency symbol, different time
+zone, different international country dialing code, and so on. All these settings
+come from locale, which should be called by applications.</p>
+<p>The Symbian platform maintains locale-based data type information internally.</p>
+<p>Examples of the classes that the Symbian platform provides for correctly
+formatting data types for the current locale of the mobile device include
+the following items:</p>
+<ul>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TLocaleClass.html" format="application/java-archive"><parmname>TLocale</parmname></xref> allows
+access to the locale settings</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TTimeClass.html" format="application/java-archive"><parmname>TTime</parmname></xref> provides
+date and time methods</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TRealFormatClass.html" format="application/java-archive"><parmname>TRealFormat</parmname></xref> allows
+access to the locale settings relevant to real number types</p></li>
+</ul>
+<p>Use these classes in your code when you need to format the relevant
+data types.</p>
+<p>For information on converting character set encodings, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/System-Libraries-subsystem-guide/CharacterConversion/index.html" format="application/java-archive">Using
+Character Conversion (CHARCONV)</xref>.</p>
+<p/>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-45A03C42-652C-59BD-9A21-6346A96310DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-45A03C42-652C-59BD-9A21-6346A96310DB" xml:lang="en"><title>Logging Services</title><shortdesc>This section provides details about the Log Engine. The Log Engine records various events from operating system components.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE.dita"><linktext> Persistent Storage </linktext> </link> <link href="GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51.dita"><linktext>Feature Management</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-45B7FE73-2AB2-54CA-89D7-FFCAFD3B7915.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-45B7FE73-2AB2-54CA-89D7-FFCAFD3B7915"><title>Types of Client Application</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Message client applications use the Messaging Framework architecture and installed MTMs to access messaging functionality. </p> <p>Message client applications can be of various types, including: </p> <ul><li id="GUID-02139535-B12C-5F82-9E11-5E09985FBA65"><p> <b>Simple message-aware applications:</b> These applications provide some messaging functionality, such as sending documents. The SendAs interface provides a simple messaging interface for use by such applications. </p> </li> <li id="GUID-CA49FDFE-99DD-5F1A-9612-425A6EFD7B32"><p> <b>Inter-process communication applications:</b> These applications use messaging to exchange data (for example with a server), without the user explicitly creating or sending messages. </p> </li> <li id="GUID-EF5A6CB8-008D-5891-8021-3FA2DEA1D69D"><p> <b>Full-featured client applications:</b> These applications provide complete access to messaging functionality. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-45D4F2D1-A433-4289-A627-D0ECD97489DD_d0e60529_href.png has changed
Binary file Symbian3/SDK/Source/GUID-45D4F2D1-A433-4289-A627-D0ECD97489DD_d0e60803_href.png has changed
Binary file Symbian3/SDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e100907_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-45E1953A-DEFB-5E48-AC96-443A3234F913.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-45E1953A-DEFB-5E48-AC96-443A3234F913" xml:lang="en"><title>Retrieving
+an IP Network Parameters Tutorial</title><shortdesc>How to retrieve IP network parameters from a DHCP server configured
+network connection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-C919A1D1-FE46-4D60-B20B-75D919404AB6"><p> The high level steps to retrieve an IP network parameters are
+as  follows: </p></context>
+<steps id="GUID-A25ECF43-E64D-5DB2-B783-924BFA48F4A0">
+<step id="GUID-5851EFBA-6976-55A6-A736-2480750951B6"><cmd>Open a socket using <codeph>RSocketServer</codeph> object. </cmd>
+</step>
+<step id="GUID-0E0A1640-7A99-587F-B70A-2057C6E3C201"><cmd>Create a connection
+using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> function. </cmd>
+</step>
+<step id="GUID-A248BB53-9180-5777-93C4-2B964C15FFC3"><cmd>Start the connection
+using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> with necessary preferences. </cmd>
+<info>For example, enable DHCP server. The active connection is configured
+by the DHCP server. </info>
+</step>
+<step id="GUID-796FB8CD-D4CD-54CE-93E0-90E8AD2F1B10"><cmd>To retrieve the
+active network connection parameters, Call the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-9F820CF9-1D4F-3452-983B-E0C694D6783A"><apiname>RConnection::Ioctl()</apiname></xref> function
+by passing the relevant arguments. </cmd>
+</step>
+<step id="GUID-926BD804-72F9-55F3-8569-4385FAB28989"><cmd>The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-9F820CF9-1D4F-3452-983B-E0C694D6783A"><apiname>RConnection::Ioctl()</apiname></xref> function
+returns the necessary parameters. </cmd>
+<info><p><note> Multiple option codes can be queried to a DHCP server using
+the &lt;api-item&gt;TDhcpRawOptionMultipleDataPckg&lt;/api-item&gt; object.</note></p><p> The
+advantages of retrieving multiple parameters are: </p><ul>
+<li><p>It reduces IPC calls between application and the DHCP daemon. </p></li>
+<li><p>It reduces the messages exchanged between the DHCP daemon and the DHCP
+server. </p></li>
+</ul></info>
+</step>
+</steps>
+<example><title> Retrieve IP Network Parameters example</title> <p>The following
+is an example code for how to retrieve IP network parameters: </p> <codeblock id="GUID-39A702E4-A746-5BFA-A00E-AD34DBE2AD97" xml:space="preserve">
+
+//create a socket connection  
+
+RSocketServ esock; 
+TInt err = eSock.Connect();
+...
+
+//handle the error
+...
+RConnection aConnection;   //create a RConnection 
+err = aConnection.Open(esock);
+...
+
+//start the connection with necessary preferences
+...
+err = aConnection.Start(iConnPrefs);
+
+
+//Retrieve the TFTP server address
+
+TRequestStatus status1;
+TTftpServerAddrBuf tftpserveraddr; // Buffer to store TFTP server address
+tftpserveraddr().index = 0;
+aConnection.Ioctl(KCOLConfiguration, KConnGetTftpServerAddr, status1, &amp;tftpserveraddress);
+User::WaitForRequest(status1);
+...
+
+//Retrieve the host name of the TFTP server
+
+TRequestStatus status2;
+TBuf&lt;256&gt; tftpname; //buffer to store TFTP server name
+aConnection.Ioctl(KCOLConfiguration, KConnGetTftpServerName, status2, &amp;tftpname);
+User::WaitForRequest(status2);
+...
+
+//Retrieve SiAddr field from a DHCP header
+
+TRequestStatus status3;
+TConnectionAddrBuf addr;
+addr().iAddressFamily = IpAddressFamily();
+aConnection.Ioctl(KCOLConfiguration, KConnGetDhcpHdrSiaddr, status3, &amp;addr);
+...
+//Retrieve SName field from a DHCP header
+
+TRequestStatus status4;
+TBuf&lt;64&gt; snamebuf;
+aConnection.Ioctl(KCOLConfiguration, KConnGetDhcpHdrSname, status4, &amp;snamebuf);
+...
+//Retrieve the active IP address
+
+TRequestStatus status5;
+TConnectionAddress actaddr;
+actaddr().iAddressFamily = IpAddressFamily();
+aConnection.Ioctl(KCOLConfiguration, KConnGetCurrentAddr, status5, &amp;actaddr); 
+...
+
+//Retrieve multiple parameters
+
+Multiple opcodes can be queried to a DHCP server using the 
+TDhcpRawOptionMultipleDataPckg object. 
+
+TBuf8&lt;300&gt; rawbuf;
+rawbuf.FillZ(300);   //buffer must be large enough for all returned options values
+TDhcpRawOptionMultipleDataPckg pckg1(rawbuf);
+pckg1.AddRawOptionCodeL(KTFtpServerAddress);    //option 150 
+pckg1.AddRawOptionCodeL(KGeoConfCivicOption);   //option 99
+pckg1.AddRawOptionCodeL(KTFtpServerName);  // option 66
+TRequestStatus status6;    
+
+// Get raw option data for ip4
+
+aConnection.Ioctl(KCOLConfiguration, KConnDhcpGetMultipleParams, status6, &amp;rawbuf);
+User::WaitForRequest(status);
+...
+
+ 
+</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-69B46D92-8D07-5B42-B603-3F725977AA4A.dita"><linktext>DHCP</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46047253-4471-502D-B48E-E1990E7F7962.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-46047253-4471-502D-B48E-E1990E7F7962"><title>Sending an RTP packet</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes how to prepare, create and send an RTP packet. </p> <section id="GUID-9E7AAB77-6F14-51AE-8008-B2F1C49667A5"><title>Preparing the packet</title> <p> <codeph>RRtpSendPacket</codeph> allows you to set the following fields for an RTP packet. </p> <p> <codeph>SetMarker()</codeph>: Sets or unsets the marker bit. </p> <p> <codeph>SetPayloadType()</codeph>: Sets the default payload type this is usually set befor e creating a new packet. </p> <p> <codeph>SetTimeStamp()</codeph>: Sets the sampling instant of first octet in the RTP data packet (also RTCP packet). </p> <p> <codeph>SetFlags()</codeph>: Sets the first 32 bits of the packet header. </p> <p>You can retrieve the following from an RTP packet: </p> <p> <codeph>WritePayload()</codeph>: Gets the descriptor to which the data can be written. </p> </section> <section><title>Creating a send packet</title> <p> <codeph>RRtpSendSource</codeph> allows you to create a new RTP packet. <codeph>NewSendPacketL</codeph> and <codeph>NewSendPacketLC</codeph> create a new send RTP packet. These functions return a handle to an <codeph>RRtpSendPacket</codeph> object. </p> <codeblock id="GUID-1A5771D1-9794-5307-AEE1-6398BE5DFBB2" xml:space="preserve">RRtpSendPacket NewSendPacketL(TInt aPayloadSize=0, TInt aHeaderExtensionSize=KRtpNoExtension);</codeblock> <p>Set the default payload type and payload size before you create the new send packet using <codeph>SetPayloadType()</codeph> and <codeph>SetDefaultPayloadSize()</codeph> respectively. </p> <p>Set the header extension size to multiples of 4-byte words this means the fixed header must be followed by exactly one header extension. The default value is <codeph>KRtpNoExtension</codeph>. 0 is an acceptable value. </p> <p> <codeph>RRtpSendSource</codeph> allows you to set any of the following for an RTP packet to be sent: </p> <p> <codeph>SetAlignment</codeph>: Aligns the header data to multiples of the set padding value. The values can range within 1-255. 1 is the default value, which means not padded. </p> <p> <codeph>SetDefaultPayloadSize</codeph>: Sets the default payload size for the RTP packet that is to be sent. This is usually set before creating a new packet. </p> <p> <codeph>SetPayloadType</codeph>: Sets the default payload type for the RTP packet that is to be sent. This is usually set before creating a new packet. </p> <p>Call <codeph>ByeL</codeph> to send the BYE packet to indicate that one or more sources are no longer active (example when a participant wants to leave). </p> <p>You can stop sending a packet even after making a send request. Call <codeph>RRtpSendSource::Cancel()</codeph> to cancel the outstanding send request on the send stream. </p> </section> <section><title>Sending the packet</title> <p>Call <codeph>RRtpSendPacket::Send()</codeph> to send the RTP packet. The packet is considered to be sent only when an <codeph>ERtpSendSucceeded</codeph> event is received from the send stream. If a failure occurs, an <codeph>ERtpSendFailed</codeph> event is received. </p> <p> <b>Note</b>: Before sending an RTP packet you must set the bandwidth for the RTP session. The following code snippet shows how to set the bandwidth for an RTP session. </p> <codeblock id="GUID-6E2043B8-8354-5DAA-B174-9CF54A806EE1" xml:space="preserve">IMPORT_C void SetBandwidth(TUint aBandwidth) </codeblock> </section> <section><title>Closing the packet</title> <p>Once the packet has been sent, call <codeph>RRtpSendPacket::Close()</codeph> to close the RTP packet. </p> </section> <section><title>Closing the send stream</title> <p>Call <codeph>RRtpSendSource::Close()</codeph> to close the send stream. The send stream cannot be closed if an event is currently being handled by a call back function. </p> </section> <section><title>See also</title> <p> <xref href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita">Creating and Managing an RTP session</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF" xml:lang="en"><title>Writing
+a Converter</title><shortdesc>File Converter Framework specifies a plug-in interface for file
+format converters. Clients can convert from one data type to another using
+file format converters, for example, HTML files to Word documents. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<section><title>Introduction</title> <p>The File Converter Framework provides
+the following: </p> <ul>
+<li id="GUID-75C46CFD-2B82-5500-AADA-E9E86CE8E894"><p>An abstract interface
+which all converters must implement. </p> </li>
+<li id="GUID-657490ED-CACA-5C43-BE75-5FBB954F2625"><p>APIs to list and search
+for converters. </p> </li>
+<li id="GUID-97761F64-2821-5845-86AD-1912B6E551F8"><p>APIs to determine the
+MIME types supported by the available converters. </p> </li>
+<li id="GUID-4D4812BA-9B84-5022-81B5-784F80FF5C75"><p>An observer interface
+through which the progress and success or failure of the conversion can be
+reported. </p> </li>
+</ul> <p>Converters are implemented as <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom
+plug-ins</xref>, each of which can implement one or more converters. Like
+all binaries, the plug-ins are installed in the <filepath>\sys\bin\</filepath> directory.
+Each plug-in must provide two resource files: one contains a <codeph>CONARC_RESOURCE_FILE</codeph> resource
+to describe the converters implemented in the DLL, and the other is a registration
+resource file required by the ECom framework. </p> <p>The following UML diagram
+shows the key elements of the converter architecture, including an example
+client and an example converter DLL that provides two converters, <codeph>myConverter1</codeph> and <codeph>myConverter2</codeph>. </p> <fig id="GUID-6E58825A-CBE2-52B8-B7BD-6D263A0751F4">
+<title>              File Converter architecture            </title>
+<image href="GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e119617_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Procedure</title> <ol id="GUID-1E4BFC84-4F0F-5DB1-A6D5-617E23617AB4">
+<li id="GUID-2132AE6E-DB10-53BE-B9F4-0E8F9C305BCA"><p><xref href="GUID-49C93C36-D86B-4EEE-A8AB-4279312DF4BC.dita">Write
+an interface implementation for a converter</xref>. </p> </li>
+<li id="GUID-B7BABC73-46D1-58EC-9251-2C4728017FB4"><p><xref href="GUID-008F9006-8548-443D-A7ED-4A8233E051C6.dita">Implement
+the ECom framework code</xref>. </p> </li>
+<li id="GUID-4A30B127-FC7A-5751-9F1A-3D8DE591B455"><p><xref href="GUID-436B6DFE-D279-44BF-B099-B2547D50610A.dita">Write
+a resource file</xref>. </p> </li>
+<li id="GUID-14F0D5B7-C909-5EF5-95DB-01E56CA5FFB0"><p><xref href="GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita">Write
+a converter DLL project file</xref>. </p> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita"><linktext>File Converter
+Framework Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e162681_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-462239D1-4B40-4342-92DA-32AB0AF0D2F2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-462239D1-4B40-4342-92DA-32AB0AF0D2F2" xml:lang="en"><title>Creating
+the choice list</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To use a choice list in your application, create an instance of the class <codeph>CAknChoiceList</codeph>. </p>
+<p>Use the <codeph>CAknChoiceList::NewL</codeph> parameters to set the style
+of the choice list.</p>
+<p>If you give no parameters, the defaults will be used. With the default
+parameters, a choice list with current selection is constructed.</p>
+<p>To construct a choice list without a current selection, use the flag <codeph>CAknChoiceList::EaknChoiceListWithoutCurrentSelection</codeph> and
+an instance of <codeph>CaknButton</codeph> in the constructor. This button
+will be then used to open the choice list. The ownership of the button is
+transferred to the choice list.</p>
+<p>The following sample code illustrates creating a default choice list.</p>
+<codeblock xml:space="preserve">const TInt KArrayGranularity ( 1 );
+ 
+   // Create array of choice list items        
+    CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat ( KArrayGranularity );
+    CleanupStack::PushL( array );
+    
+    _LIT( KListItem, "Item %d" );
+
+    for ( TInt k = 0; k &lt; 5; k++ )
+        {
+        TBuf&lt;32&gt; buf;
+        buf.Format( KListItem, k );
+        array-&gt;AppendL( buf );
+        }
+ 
+    // Create choice list with array
+    iChoiceList = CAknChoiceList::NewL( this, array );
+    
+    CleanupStack::Pop( array );
+    
+    iChoiceList-&gt;SetObserver( this );
+</codeblock>
+<p>The following sample code illustrates creating a button choice list with
+items from resources:</p>
+<codeblock xml:space="preserve"> _LIT( KButtonTxt, "Choice list" );
+    _LIT( KButtonHelpTxt, "Button help text" );
+
+    // Create a button for the choice list
+    CAknButton* button = CAknButton::NewLC( NULL,
+                                            NULL,
+                                            NULL,
+                                            NULL,
+                                            KButtonTxt,
+                                            KButtonHelpTxt,
+                                            KAknButtonSizeFitText,
+                                            0 );
+ 
+    // Create empty Choice list
+    iChoiceList = CAknChoiceList::NewL( this, NULL, 
+        CAknChoiceList::EAknChoiceListWithoutCurrentSelection, button );
+    CleanupStack::Pop( button );
+ 
+    // Add items from resource
+    iChoiceList-&gt;SetItemsL( R_CHOICELISTEX_ITEM_ARRAY );
+    iArraySize = ArraySizeL( R_CHOICELISTEX_ITEM_ARRAY );
+    iSelection = 0;
+    
+    iChoiceList-&gt;SetObserver( this );
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240-master.png has changed
Binary file Symbian3/SDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e66039_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46813F51-370B-5853-917C-6916925A347D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-46813F51-370B-5853-917C-6916925A347D" xml:lang="en"><title>Rendering
+to an RWindow Tutorial</title><shortdesc>This tutorial describes the high level steps that you need to take
+when writing applications using EGL to create a window surface for on-screen
+rendering. The code snippets use C style conventions. To avoid unnecessary
+complexity, they do not contain complete error handling. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-2ACDC160-AB4B-42D0-9F05-ED2048D1C3F6"><title>Required background</title> <p>This tutorial assumes a background
+knowledge of the following: </p> <ul>
+<li id="GUID-134D7EED-0E51-5197-BE4F-2F6EF72C61B4"><xref href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita">EGL
+Collection Overview</xref></li>
+<li id="GUID-ADC0E050-7602-5B71-AAB4-B26D7C5B1313"> <xref href="GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita">EGL
+Interface Overview</xref></li>
+<li id="GUID-E7DFA26B-CDA3-545C-B01F-A5BBE383D6CF"> <xref href="GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita">Symbian-Specific
+EGL Behavior</xref></li>
+<li id="GUID-71D99620-55D7-519D-996D-35A2962D9F84"> <xref href="GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita">OpenGL
+ES</xref></li>
+</ul> </section>
+<section id="GUID-F95DA0B0-1DC8-4F8C-BF04-66004DA8B2DB"><title>Procedure</title> <ol id="GUID-9678FE93-DB7E-5BB2-A386-4E663F93F87A">
+<li id="GUID-4795FDF0-C603-5664-87D9-8BDC987CF424"><p>You must get and initialize
+the <codeph>EGLDisplay</codeph> prior to calling most other EGL or client
+API functions. You only need to do this once. </p> <codeblock id="GUID-72B8ADB6-2D10-52AE-9E35-C5F1CE6AB024" xml:space="preserve">EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+eglInitialize(display, NULL, NULL); 
+</codeblock> </li>
+<li id="GUID-00811F4A-48D9-5A82-A81C-A3DD82C22FCC"><p>EGL has the concept
+of <b>current rendering API</b>. To make one of the EGL client APIs the current
+rendering API for the thread, call <codeph>eglBindAPI()</codeph> passing <codeph>EGL_OPENVG_API</codeph> or <codeph>EGL_OPENGLES_API</codeph> as
+required. For example: </p> <codeblock id="GUID-684E7CFF-9C43-596E-B948-FA4BEED09F41" xml:space="preserve">// Set OpenGL ES as the current rendering API for the thread
+eglBindAPI(EGL_OPENGLES_API); 
+</codeblock> </li>
+<li id="GUID-9947988E-9F8D-5003-8814-4AAC53D83D39"><p>Use the <xref href="GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F.dita#GUID-2923A42C-1C0E-553D-8563-7B9FC51F153F/GUID-7FC7E115-F659-5EA0-9BD0-AFFA717C2C00">eglChooseConfig()</xref> method to get the <codeph>EGLConfig</codeph> that
+matches a list of attributes. In order to render to an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>,
+these must include the <codeph>EGL_WINDOW_BIT</codeph>. </p> <codeblock id="GUID-7FD2D6BD-C86A-5F4D-BB4F-A395FB4C5190" xml:space="preserve">// List of attributes to pass to eglChooseConfig.
+const EGLint    KColorRGB565AttribList[] =
+    {
+    EGL_RED_SIZE,         5,
+    EGL_GREEN_SIZE,       6,
+    EGL_BLUE_SIZE,        5,
+    EGL_SURFACE_TYPE,     EGL_WINDOW_BIT,
+    EGL_RENDERABLE_TYPE,  EGL_OPENGL_ES_BIT,
+    EGL_NONE
+    };
+    
+EGLint numConfigs;
+EGLConfig chosenConfig = 0;
+    
+// Get the config to use.
+eglChooseConfig(display, KColorRGB565AttribList, &amp;chosenConfig, 1, &amp;numConfigs);
+    
+if (numConfigs == 0)
+    {
+    RDebug::Printf("No matching configs found");
+    User::Leave(KErrNotSupported);
+    }</codeblock><p><i>Note:</i> By default the <codeph>EGL_SURFACE_TYPE</codeph> has
+the <codeph>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</codeph> set for window surfaces
+in order to support the preserve buffer option. You can set this explicitly
+like this: </p><codeblock xml:space="preserve">EGL_SURFACE_TYPE,     EGL_WINDOW_BIT|EGL_SWAP_BEHAVIOR_PRESERVED_BIT,</codeblock> </li>
+<li id="GUID-AC10CA88-95F3-5335-9EA4-E77DC54344B3"><p>To create an on-screen
+rendering surface, you first need to create a Symbian Window Server window
+(<xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>). This window is then passed as the third argument
+to <codeph>eglCreateWindowSurface()</codeph> along with an <codeph>EGLConfig</codeph> that
+has the <codeph>EGL_WINDOW_BIT</codeph> set. </p> <codeblock id="GUID-3CB64FD0-2D1C-5983-B885-AFE210612220" xml:space="preserve">// Create a window surface to draw to.
+winSurface = eglCreateWindowSurface(display, chosenConfig, &amp;iWindow, NULL);</codeblock> </li>
+<li id="GUID-3C5CE6E3-753E-4C9C-860E-0F1B8908349E"><p>Set the surface attribute <codeph>EGL_SWAP_BEHAVIOR
+to EGL_BUFFER_PRESERVED</codeph>. This step is only required if you want to
+enable the preserve buffer option.</p><codeblock xml:space="preserve">EGLBoolean queryResult = eglSurfaceAttrib(display, winSurface, EGL_SWAP_BEHAVIOR, EGL_BUFFER_PRESERVED);</codeblock></li>
+<li id="GUID-C4B3E5FA-E0BF-5923-AB10-32BE18BD3B59"><p>To create a rendering
+context for the current rendering API, call the <codeph>eglCreateContext()</codeph> with
+the <codeph>share_context</codeph> parameter set to <codeph>EGL_NO_CONTEXT</codeph>.
+If this method succeeds, it initializes the context to the initial state defined
+for the current rendering API, and returns a handle to it. </p> <codeblock id="GUID-9DB529FE-3DFB-5E8F-9B83-89E3EB17C4FF" xml:space="preserve">// Create a context to store the current rendering API settings.
+contextGL = eglCreateContext(display, chosenConfig, EGL_NO_CONTEXT, NULL);</codeblock> </li>
+<li id="GUID-A5A3E17B-CB73-53E6-AFA3-3098F96B0AE7"><p>In order to allow the
+context to render to a given surface, you need to call <codeph>eglMakeCurrent()</codeph>.
+After doing this you can call EGL client functions, which need a current surface
+and context. </p> <codeblock id="GUID-DF027C4F-D0A5-5B2D-A1E9-2910D0D1E77C" xml:space="preserve">// Make the context current on the surface and the display
+eglMakeCurrent(display, winSurface, winSurface, contextGL); 
+</codeblock> </li>
+<li id="GUID-2F5A701F-8D0C-5C11-9DAD-297FE8D01888"><p>You are now ready to
+perform your OpenGL ES drawing commands. </p> <p>The main thing to understand
+is that the EGL window surface is double-buffered. This means that the drawing
+commands are drawn into a back buffer and you need to call <codeph>eglSwapBuffers()</codeph> in
+order to make the drawing appear on the screen in the window. This mechanism
+has the advantage that it stops flicker. </p> <codeblock id="GUID-C5190E0A-7B93-5041-9CC0-6DDF7519571B" xml:space="preserve">eglSwapBuffers(display, winSurface);</codeblock><p>Because you enabled the preserve buffer option in step 5, the <codeph>eglSwapBuffers()</codeph> promotes
+the back buffer to the front for display as usual, and also copies the content
+to the new back buffer. This means the client application can provide incremental
+drawing commands instead of creating the entire new scene.</p></li>
+<li id="GUID-3944687A-E53A-503F-8CCC-7B0C11698341"><p>To release the current
+context and surface without assigning a new one, set the context parameter
+to <codeph>EGL_NO_CONTEXT</codeph> and set the draw and read surfaces to <codeph>EGL_NO_SURFACE</codeph>.
+This flushes the current context for the current rendering API and marks it
+as no longer current. The current rendering API does not have a current context
+after <codeph>eglMakeCurrent()</codeph> returns. </p> <codeblock id="GUID-5AB57D6A-DC82-5092-8F81-8E9A61939988" xml:space="preserve">eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);</codeblock> </li>
+<li id="GUID-F1D7FCF5-8DB3-5C9F-A5F3-89AD110ED3BB"><p>You destroy the rendering
+context by calling <codeph>eglDestroyContext()</codeph>. All resources associated
+with the context are marked for deletion as soon as possible. If the context
+is current to any thread, resources are not actually released while the context
+remains current. </p> <codeblock id="GUID-45F64C22-608E-57D7-B607-1D04FD20F0F3" xml:space="preserve">eglDestroyContext(display, contextGL); 
+</codeblock> </li>
+<li id="GUID-139B4B87-5B83-57ED-A5A0-001475450D2B"><p>You destroy the <codeph>EGLSurface</codeph> by
+calling <codeph>eglDestroySurface()</codeph>. All resources associated with
+the surface are marked for deletion as soon as possible. If the surface is
+current to any thread, the resources are not actually released while the surface
+remains current. </p> <codeblock id="GUID-D9E034F1-F6F5-5C8A-A5D5-D34CCE813340" xml:space="preserve">eglDestroySurface(display, winSurface); 
+</codeblock> </li>
+<li id="GUID-EFEF57E1-49CC-5689-8A90-2208CC62322E"><p>Perform final cleanup
+by first terminating the <codeph>EGLDisplay</codeph> using <codeph>eglTerminate()</codeph> and
+then releasing any resources still held by EGL by calling <codeph>eglReleaseThread()</codeph>. </p> <codeblock id="GUID-DB4DB0EF-B8B3-516E-9641-CC412C2F221B" xml:space="preserve">eglTerminate(display);
+eglReleaseThread();</codeblock> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita"><linktext>EGL Interface
+Overview</linktext></link>
+<link href="GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita"><linktext>Symbian-Specific
+Behavior</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-468EDD07-3868-550B-B1C9-E79FD728F9B9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-468EDD07-3868-550B-B1C9-E79FD728F9B9"><title>How to Configure a Port for Efficient Reading: Tutorial</title><shortdesc>To configure a port for efficient reading the precise number of terminators needs to be set with <apiname>RComm::SetConfig()</apiname> and <apiname>TCommConfig</apiname> through <codeph>iTerminatorCount</codeph>, with the actual characters being set as elements in the <codeph>iTerminator</codeph> array. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><example><title>Example</title> <p>In the following code extract, the line feed character is set as a single terminator: </p> <codeblock id="GUID-B38AF259-8E59-5D48-99FD-60BDDB3D4A9E" xml:space="preserve">TCommConfig portSettings;
+commPort.Config (portSettings);
+portSettings ().iTerminator[0] = 10;
+portSettings ().iTerminatorCount = 1;
+commPort.SetConfig (portSettings);</codeblock> </example> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5"><title>Stepping Frames</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to watch frames in a video clip. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to step forward and backward through video frames. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>Frame step allows you to step the current video playback position forward or backward by a number of frames. This feature is provided by the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-6AA8FCCE-63B1-3EF9-8A41-7A3F1DE28E76"><apiname>CVideoPlayerUtility::StepFrameL()</apiname></xref> method and is only available when playback is paused. </p> <p> <b>Note:</b> This functionality is dependent on the capabilities of the underlying play-controller implementation and the characteristics of the video clip. </p> </section> <section><title>Using Frame Step </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-BE65641A-E30E-5C22-8C20-4642A385992E"><p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita#GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5/GUID-F212F1A1-0ABA-599D-AC32-89D396BB6AD0">Step Frames Forward and Backward </xref>  </p> </li> </ul> <p id="GUID-F212F1A1-0ABA-599D-AC32-89D396BB6AD0"><b>Basic Procedure</b> </p> <p>The high level steps to step frames forward and backward are shown here: </p> <ol id="GUID-910FA4E1-4DE2-5D17-BDC3-F6FD2CBE0707"><li id="GUID-D1A02942-66BB-5EB5-A6F6-29B75CC81C06"><p>Create a new video player utility object. </p> </li> <li id="GUID-0ED6D9F6-A985-5968-82F8-F7E551531201"><p>Open a video clip to play. </p> </li> <li id="GUID-6D417E89-E0EE-575B-A36D-B1A838283558"><p>Use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-45F4B0E5-2EF4-3391-A925-DD31C9E997F6"><apiname>CVideoPlayerUtility::GetPlayRateCapabilitiesL()</apiname></xref> to check frame step is supported. This returns <xref href="GUID-F89DA3F0-2A48-3F9B-8F08-29350E92D0E4.dita"><apiname>KErrNotSupported</apiname></xref> if frame step is not supported. </p> </li> <li id="GUID-42F37141-25D8-5D62-80BE-0D5D4DD61834"><p>Call the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B4FB00AA-A85B-3A3F-91BE-C5347462BA95"><apiname>CVideoPlayerUtility::Prepare()</apiname></xref> method. </p> </li> <li id="GUID-1A6B9052-812F-528E-8D76-16049EBD0591"><p>Call <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-A9DCC4EB-B4B3-3AF4-B78C-DC3531A32DCC"><apiname>CVideoPlayerUtility::Play()</apiname></xref> to start playback. </p> </li> <li id="GUID-4D3D4426-EDB4-5F1F-A6C3-1657E1F7562E"><p>Pause playback using <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-CCF5BF0E-BD93-34AC-812E-443ECD07FE26"><apiname>CVideoPlayerUtility::PauseL()</apiname></xref>. </p> </li> <li id="GUID-6C90DF54-997B-5D82-BD9C-94546975883A"><p>To step forward through the video frames use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-6AA8FCCE-63B1-3EF9-8A41-7A3F1DE28E76"><apiname>CVideoPlayerUtility::StepFrameL()</apiname></xref> and set <xref href="GUID-D39C892F-581C-3A1F-9686-4B48512C6882.dita"><apiname>aStep</apiname></xref> to a positive <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> value. </p> </li> <li id="GUID-F2AA5F17-0657-5C9C-B7E7-C1A6CEC8156E"><p>To step backward through the video frames use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-6AA8FCCE-63B1-3EF9-8A41-7A3F1DE28E76"><apiname>CVideoPlayerUtility::StepFrameL()</apiname></xref> and set <xref href="GUID-D39C892F-581C-3A1F-9686-4B48512C6882.dita"><apiname>aStep</apiname></xref> to a negative <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> value. </p> </li> <li id="GUID-36FD8645-3000-5E92-B316-B8462FD0B53D"><p>Call <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-C103A911-AF93-3350-B731-C186A279F1DC"><apiname>CVideoPlayerUtility::Stop()</apiname></xref> to halt video playback. </p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-6EA0ADC4-A004-58BF-A9F6-2906E7663307" xml:space="preserve">// Create new video player utility object (iVideoPlayer)
+// Open the video clip
+// Call Prepare()
+// Call Play()
+
+iVideoPlayer-&gt;GetPlayRateCapabilitiesL(iVideoPlayRateCapabilities);
+// Return the current playback rate capabilities
+
+// Check that engine has forward capability.
+if( iVideoPlayRateCapabilities.iStepForward)
+{
+iVideoPlayer-&gt;StepFrameL(10); // Steps to 10th frame from current.
+}
+else
+{
+// Forward is not supported.
+}
+
+// If user wants to rewind. Check that engine has rewind capability.
+if( iVideoPlayRateCapabilities.iStepBackward)
+{
+iVideoPlayer-&gt;StepFrameL(-5); // Steps to 5th frame backward.
+}
+else
+{
+// Rewind is not supported.
+}
+
+// Call Stop() </codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e316513_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225"><title>compresstarget</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>compresstarget</codeph> </p> <p>Use the <codeph>compresstarget</codeph> statement to specify that the target executable should be compressed. In detail, the code and data sections of the executable are compressed with the Deflate, Huffman+LZ77 algorithm.</p> <p>Compression allows the stored executable to use less space on the file system. The executable loader decompresses the file when it is loaded.</p> <p>See also <xref href="GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita">nocompresstarget</xref>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46C56A16-E548-59B1-88DF-3DAF3FF68751.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-46C56A16-E548-59B1-88DF-3DAF3FF68751"><title>Bitmap Operations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A graphics context also provides bitmap primitives allowing two ways of drawing a bitmap on a graphics device: </p> <ul><li id="GUID-BA95D549-61AF-5D66-B77B-DD929AF10CFA"><p>starting at a certain point, stretched or compressed to its size in twips </p> </li> <li id="GUID-915CE0FE-80FB-55AA-A553-72B418F7D806"><p>stretched or compressed to fit a rectangle of a given size and position </p> </li> </ul> <p>A linear Digital Differential Analyzer (DDA) is used when calculating bitmap stretching and compression. </p> <p>Scaling a bitmap is unavoidably slow, and where possible it is better to use the faster bitmap operations provided by a bitmap graphics context, such as <codeph>CBitmapContext::BitBlt()</codeph>. </p> <p>If the bitmap has to be scaled, consider creating a bitmap to do this off-screen. The scaled bitmap can then be blitted to the screen. </p> <section><title>See also</title> <p><xref href="GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita">How to Draw Bitmaps</xref>  </p> <p><xref href="GUID-294E84BB-65D0-5275-848E-1960B201A371.dita">How to Create and Draw to an Off-Screen Bitmap</xref>  </p> <p><xref href="GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita">The Linear DDA</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46D6DF29-38F7-5842-9FDD-82754AE8D9A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-46D6DF29-38F7-5842-9FDD-82754AE8D9A0" xml:lang="en"><title>Human-Readable
+File Formats Reference</title><shortdesc>This section provides details of the fields in the various certificate
+store human-readable files. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-83AA7A83-E51B-5BFA-9BB2-A0CED031B8B0"><title>File Certificate
+Store Field Details</title> <p>The following table provide details of the
+file certificate store fields: </p> <table id="GUID-83651A7D-D70E-55D1-96CC-97E3239F7B9C">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Name</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>StartEntry</codeph>  </p> </entry>
+<entry><p>Specifies the certificate label. This label is in UTF-8 format and
+limited to 64 characters. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Deletable</codeph>  </p> </entry>
+<entry><p>The value of this field indicates whether the certificate can be
+deleted. <codeph>True</codeph> indicates that the certificate can be deleted. <codeph>False</codeph> indicates
+that the certificate must be protected from deletion. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Format</codeph>  </p> </entry>
+<entry><p>Specifies the certificate format. This is usually set to <codeph>EX509Certificate</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CertificateOwnerType</codeph>  </p> </entry>
+<entry><p>Indicates the type of certificate owner. This field has the following
+legal values: <codeph>ECACertificate</codeph>, <codeph>EUserCertificate</codeph> and <codeph>EPeerCertificate</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SubjectKeyId</codeph>  </p> </entry>
+
+<entry><p>Both these fields are used to build certificate chains by looking
+for certificates with <codeph>SubjectKeyId</codeph> values that match the <codeph>IssuerKeyId</codeph> value
+of the first certificate in the chain. While the <codeph>SubjectKeyId</codeph> enables
+identification of certificates containing a public key (in this case, the
+issuer key), the <codeph>IssuerKeyId</codeph> is the unique value that identifies
+the issued certificate. </p> <p>These fields are optional. If omitted, their
+values are considered equivalent to auto. For x509 certificates, it is recommended
+that these fields be omitted or set to auto. For other certificate types,
+specify an octet string value. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> IssuerKeyId</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> StartApplicationList</codeph>  </p> </entry>
+
+<entry><p>Indicates the start and end of the application list. An application
+list specifies the applications associated with a certificate. Applications
+can be specified by UID or by name (in which case they are looked up in <codeph>certclients.dat</codeph>). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> EndApplicationList</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Trusted</codeph>  </p> </entry>
+<entry><p>The value of this field is usually set to <codeph>True</codeph>.
+If set to <codeph>False</codeph>, the certificate does not act as a trust
+anchor and its capabilities are not used. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DataFileName</codeph>  </p> </entry>
+<entry><p>Specifies the name of the file from which the certificate is to
+be read. </p> <p>If the certificate format is not x509, the contents are treated
+as a raw block of data. If the format is x509, the file can be either of the
+following: </p> <ul>
+<li id="GUID-39DE0AA4-A147-51CD-B39F-044DC67BF272"><p>A Privacy Enhanced Mail
+(PEM) encoded certificate in a UTF-8 file with or without a UTF-8 Byte Order
+Marker (BOM) </p> </li>
+<li id="GUID-176D7B07-879F-5D3F-86A5-EF18B9A450FB"><p>A binary file containing
+a Distinguished Encoding Rules (DER) encoded certificate. </p> </li>
+</ul> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<example id="GUID-C30DFFCA-DFFB-5F1F-8306-659B8429EBFC"><title>SWI Certificate
+Store Field Details</title> <p>The following table provides information on
+the SWI certificate store fields. Because the SWI certificate store is a superset
+of the file certificate store, the following table lists only fields specific
+to the SWI certificate store. </p> <table id="GUID-E7CC3963-A5B0-52EE-B855-13DA11EB0FCD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Name</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CapabilitySet</codeph>  </p> </entry>
+<entry><p>Defines a list of capabilities allowed in applications that have
+the certificate as their trust anchor. Standard capability names or numeric
+bit numbers can be specified. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Mandatory</codeph>  </p> </entry>
+<entry><p>The value of this field is usually be set to <codeph>False</codeph> so
+that it enables the installation of any package not signed by a certificate
+that resolves to a SWI certificate. A <codeph>True</codeph> value prevents
+normal installation of packages. </p> <p> <b>Note:</b> If the certificate
+store is deployed in a device that does not support the feature of updating
+ROM files without using SIS stubs, the certificate gets interpreted as <codeph>Mandatory</codeph>.
+This prevents all normal applications from installing. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SystemUpgrade</codeph>  </p> </entry>
+<entry><p>The value of this field must usually be set to <codeph>False</codeph> to
+enable normal installation of applications. A <codeph>True</codeph> value
+of this field indicates that any application signed by a certificate which
+resolves to this certificate is treated as a System Upgrade, and consequently,
+a lot of security checks are disabled for that application. </p> <p> <b>Note:</b> The
+field is set to <codeph>True</codeph> only when the certificate store is deployed
+in a device that supports the feature of updating ROM files without using
+SIS stubs. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Important: </b> A SWI certificate store does not have a <codeph>Deletable</codeph> field
+because all the SWI certificates are protected from deletion. </p> </example>
+</conbody><related-links>
+<link href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita"><linktext>Certificate
+Store Human-Readable File Formats</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-46E12D78-5F1F-55B8-B7E8-1B4862CC70E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-46E12D78-5F1F-55B8-B7E8-1B4862CC70E8" xml:lang="en"><title>Audio Output Stream Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Audio Output Stream library. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e321845_href.png has changed
Binary file Symbian3/SDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e284504_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-47419CFB-163D-5A4E-8A00-C73773353BDF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-47419CFB-163D-5A4E-8A00-C73773353BDF"><title>Column type characteristics</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>DBMS has a rich set of column types. </p> <p>The Store database implementation supports all column types, and any column type can be nullable or marked as not-null.</p> <section><title>Fixed width columns</title> <p>All numeric and date/time columns are fixed width, though <codeph>Null</codeph> values will take no extra storage space in the database. See <xref href="GUID-4D96BFA5-3C4F-320F-BA9F-3511925A8137.dita"><apiname>TDbColType</apiname></xref> for the characteristics of fixed width column types.</p> </section> <section><title>Variable width columns</title> <p>Text and Binary columns are all variable length.</p> <p>The short column types <codeph>Text8</codeph>, <codeph>Text16</codeph> and <codeph>Binary</codeph> support the maximum length attribute, and can only store up to 255 units (characters or bytes) of data. If <codeph>KDbUndefinedLength</codeph> is specified as the maximum length attribute for these column types when a table is created, they are given a maximum length of 255.</p> <p>Long column types <codeph>LongText8</codeph>, <codeph>LongText16</codeph> and <codeph>LongBinary</codeph> can theoretically store up to 2GB of data depending on resources available in the store, at the cost of a little more storage overhead than short columns.</p> <p>A <codeph>Null</codeph> variable length column is one with no data in it, in particular DBMS does not distinguish between a zero-length Text column and a <codeph>Null</codeph> value Text column. See <xref href="GUID-4D96BFA5-3C4F-320F-BA9F-3511925A8137.dita"><apiname>TDbColType</apiname></xref> for the characteristics of the variable width column types.</p> <p>See also:</p> <ul><li id="GUID-4D82433D-E17F-5572-8054-6AE364616C54"><p><xref href="GUID-785B2F0B-E7E6-5DAE-98F1-6C32BED25964.dita">Database storage overhead</xref> </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044-master.png has changed
Binary file Symbian3/SDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e205743_href.png has changed
Binary file Symbian3/SDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e177925_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-47851718-8DCA-57F5-8520-7044048A5852.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-47851718-8DCA-57F5-8520-7044048A5852" xml:lang="en"><title>Graphics Example Code</title><shortdesc>Example code for the Graphics package. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-1C3888E3-33D4-5057-8819-CB6D97398031.dita"><linktext>Font and Bitmap Server example code</linktext> </link> <link href="GUID-C5A0D920-EB2A-5C06-B8F3-F3EAA6BB6BB9.dita"><linktext>Graphics Device Interface example code</linktext> </link> <link href="GUID-FE3AFA30-4097-51B2-B31B-9EF4A04FE7A5.dita"><linktext>Windowing example
+  code</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69-master.png has changed
Binary file Symbian3/SDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e62935_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-47A4949C-61B3-5B91-9845-F40A9BC157C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-47A4949C-61B3-5B91-9845-F40A9BC157C4"><title>File interface</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> class represents an individual file and provides functions required to open, create or replace a file given its name, or to open a temporary file. </p> <p>Various <codeph>Write()</codeph> functions write data from a binary descriptor, and <codeph>Read()</codeph> functions read data into a binary descriptor. These functions provide a binary, stream-mode, interface. They are available in synchronous or asynchronous forms. </p> <p>The <xref href="GUID-95310602-EA12-3AEE-BDBD-F750FC17CAC4.dita"><apiname>TFileText</apiname></xref> class provides a record-based text interface which deals with the details of character-to-byte conversion. </p> <p>Files may be opened exclusively or shared, and for shared files, a region may be locked. </p> <p>A file's attributes and directory entry values may be changed while the file is open. The file may also be renamed while it is open. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e63044_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-47F14C10-3ACD-583C-9E7D-84641229A771.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-47F14C10-3ACD-583C-9E7D-84641229A771" xml:lang="en"><title>Thread
+and Process Management Example Code</title><shortdesc>This example shows the use of thread local storage as implemented
+by the statically linked DLL built by the <filepath>TLS1dll</filepath> example. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-551683AE-127A-4808-9AE0-3DDDF72F60C6"><title>Download</title> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-0596853a-614f-426b-93ac-0d8a1cbea97a.zip" scope="external">TLS1.zip</xref>. </p><p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-0596853a-614f-426b-93ac-0d8a1cbea97a.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> </section>
+<section id="GUID-B6C11325-14AB-4272-AC43-D6A9DD50A1F3"><title>Description</title> <p><filepath>TLS1exe</filepath> is the
+executable that uses the <filepath>TLSI.dll</filepath>. </p> </section>
+<section id="GUID-B55F98C6-4064-47E5-A275-0A13DE0EF660"><title>Build Notes</title> <p> <filepath>TLS1dll</filepath> must
+be built first. </p> </section>
+<section id="GUID-20A676FF-4679-47D9-A1D7-FF5408BC6261"><title>Security issues</title> <p>The example requires no specific
+capabilities in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-481D4689-C4DA-50FB-9529-081EB9BD7901.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-481D4689-C4DA-50FB-9529-081EB9BD7901" xml:lang="en"><title>SQL Tracing Guides</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4820CA37-982D-57BC-8829-498192801B1E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4820CA37-982D-57BC-8829-498192801B1E" xml:lang="en"><title>ReadData:
+Reading from a Resource File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-98ed2cf0-25b9-49e1-bfa3-ff26c6b4bbf4.zip" scope="external">ReadData.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref> and <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7c88b173-b677-457c-9f87-ef28897de1d7.zip" scope="external">CommonFile.zip</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-98ed2cf0-25b9-49e1-bfa3-ff26c6b4bbf4.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse CommonFramework</xref> and <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7c88b173-b677-457c-9f87-ef28897de1d7.html" scope="peer">browse CommonFile</xref></section>
+<section><title>Description</title> <p> <filepath>ReadData</filepath> is an
+example of how to load data from resource files into a class. It loads the
+resource identified as resource FIRST from the resource file. This is a simple
+resource of type DATA. The example constructs a <codeph>CResData</codeph> object
+to hold the individual items corresponding to the items in a DATA structure. </p> <p>The <codeph>CResData</codeph> object
+can also display the individual items at the test console. All WORD, BYTE
+and LONG data is interpreted as signed values. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref> </p><p><xref href="GUID-2C40E1EC-15EE-3055-8B7D-2D0FBA4CB535.dita"><apiname>TTResourceReader</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-48363190-6FFB-4230-84B4-2E521EA51365" xml:lang="en"><title>Using
+menu sections in menu bar resource statements</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<fig id="GUID-4EAE2293-314B-4FFB-BF37-FAF75DDC0135"><title>Menu sections in an Options menu</title><image href="GUID-4D6C478A-33BA-4D74-9B82-7133ABFFB0D2_d0e59973_href.png"/></fig>
+<p>The use of menu sections provides a means of combining menu bar resource
+declarations in <b>Options</b> menus. One example of how this could be used
+would be an application with two views. Three <parmname>MENU_BAR</parmname> resources
+could be defined as follows:</p>
+<ul>
+<li><p>an application menu section, which would be common to both
+views</p></li>
+<li><p>a menu section for view 1, which would contain options items
+unique to this view</p></li>
+<li><p>a menu section for view 2, which would contain options items
+unique to this view</p></li>
+</ul>
+<section id="GUID-84E33CCD-1D3D-4A79-BE71-FE96B3D61C22"><title>Combining menu
+sections</title>
+<p>The menu sections that are combined for an <b>Options</b> menu are defined
+in the <parmname>MENU_BAR</parmname> resource. This resource lists all the
+sections that will be combined to form the menu. The menu sections are combined
+from bottom to top (for example, system sections such as 'Edit' go at the
+bottom of the menu while context sections such as 'Open' go at the top of
+the menu). A menu bar is defined as follows:</p>
+<codeblock id="GUID-7E4BF634-13E9-4343-BB80-ACAFCF8D3A86" xml:space="preserve">
+RESOURCE MENU_BAR r_menuapp_menu_bar
+    {
+    titles =
+        {
+        MENU_TITLE { menu_pane = r_system_menu; },
+        MENU_TITLE { menu_pane = r_app_menu; },
+        MENU_TITLE { menu_pane = r_view1_options_menu; },
+        MENU_TITLE { menu_pane = r_context1_menu; }
+        };
+    }
+</codeblock>
+<p>The default <parmname>MENU_BAR</parmname> resource is declared in <xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita"><parmname>EIK_APP_INFO</parmname></xref> or <xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita"><parmname>AVKON_VIEW</parmname></xref></p>
+</section>
+<section id="GUID-4527D821-6960-4E18-B880-FC19BE5320F3"><title>Changing menu
+sections</title>
+<p>You can use the following method to change the <parmname>MENU_BAR</parmname> resource
+that is used by the application to change the menu sections at any time within
+the application: </p>
+<codeblock id="GUID-17796D02-EF20-40EB-80C1-365B58FDC1C3" xml:space="preserve">iEikonEnv-&gt;AppUiFactory()-&gt;MenuBar()-&gt;
+   SetMenuTitleResourceId(MENU_BAR_RESOURCE_ID);
+</codeblock>
+<p>This sets the whole menu bar and should be performed every time one
+of the sections needs to change its contents. Therefore, you should define
+as many <parmname>MENU_BAR</parmname> resources as there are possible combinations
+of menu sections. That is, a menu bar should be defined for each combination
+of view and context options. Note also that if view architecture is used,
+and the view’s own menu system is in use, it is this menu bar’s contents that
+need switching, as follows: </p>
+<codeblock id="GUID-C2F22032-2AF7-41CB-872A-7388DDA23F94" xml:space="preserve">iMyView-&gt;MenuBar()-&gt;
+     SetMenuTitleResourceId(MENU_BAR_RESOURCE_ID);
+</codeblock>
+</section>
+<section id="GUID-73295F48-5E72-48E9-9F0E-5091A8C73B12"><title>Changing menu
+items in menu sections</title>
+<p>Individual menu items in a menu section may be changed whenever the
+menu is displayed. This allows the application to show and hide (or remove
+and add) menu items in response to the application state. In the <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">traditional
+Symbian OS UI architecture</xref>, you should override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/MEikAutoMenuObserverClass.html#%3a%3aMEikAutoMenuObserver%3a%3aDynInitMenuPaneL%28%29" format="application/java-archive"><parmname>MEikAutoMenuObserver::DynInitMenuPaneL()</parmname></xref> in the UI
+controller. In the <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">S60
+view architecture</xref>, you should override <parmname>MEikAutoMenuObserver::DynInitMenuPaneL()</parmname> in
+the view controller. An example of such an override is as follows:</p>
+<codeblock id="GUID-D8991DA2-0FE2-4904-A202-8254EF294D50" xml:space="preserve">void CMyAppUi::DynInitMenuPaneL(TInt aResourceId, 
+    CEikMenuPane* aMenuPane)
+    {
+    if(aResourceId != R_SYSTEM_MENU_PANE)
+        return; // in this example only interest in system
+                // pane
+
+    // First hide all
+    aMenuPane-&gt;SetItemDimmed(ECmdCut, ETrue);
+    aMenuPane-&gt;SetItemDimmed(ECmdCopy, ETrue);
+    aMenuPane-&gt;SetItemDimmed(ECmdPaste, ETrue);
+
+    // Show according to application state
+    if(...)
+        {
+        aMenuPane-&gt;SetItemDimmed(ECmdCut, EFalse);
+        aMenuPane-&gt;SetItemDimmed(ECmdCopy, EFalse);    
+        }
+    else
+        {
+        aMenuPane-&gt;SetItemDimmed(ECmdPaste, EFalse);
+        }
+    } 
+</codeblock>
+<p>This method is called by the framework after each of the sections has
+been added to the menu, and is called with the resource ID of the section
+that has just been added and the menu pane object that is being built.</p>
+<p>You can also override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/MEikAutoMenuObserverClass.html#%3a%3aMEikAutoMenuObserver%3a%3aDynInitMenuBarL%28%29" format="application/java-archive"><parmname>MEikAutoMenuObserver::DynInitMenuBarL(TInt aResourceId, CEikMenuBar* aMenuBar)</parmname></xref> in
+the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita#GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC/GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC">UI
+controller</xref> or <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita#GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7">view
+controller</xref>, depending on your UI architecture. This gets called before
+any sections are added to the menu, and can be used to dynamically change
+the sections that will be added to the menu. This could be used to change
+the resource ID of the context menu section for a certain application state. </p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5"><title>What are Tiers?</title><shortdesc>This topic describes the concepts of a <i>Tier</i> and a <i>Tier Manager</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Tier is a group of Access Points (APs) related to one or more technologies sharing the same Selection and Availability monitoring logic. The Tier Manager provides the means for an application to connect to a communication service to send and receive data, or to check the current status of a communication service. </p> <p>When an application needs to contruct a stack either to request availability on a particular service or to establish a connection with a remote device or service, it will explicitly select a specific Tier Manager at the top of the stack to define the service. If the application does not explicitly select a specific Tier Manager, the default TM will be used. The selection process and connection preferences will define how the rest of the stack is constructed. Each Tier Manager is responsible for selecting the most appropriate AP from a range of alternatives and may also pass up availability information in some cases, depending on the Tier Manager. </p> <p>When a higher Layer wants to bind to a lower layer, it uses the supplied selection criteria to select a Tier and request a specific AP. Once the Tier has returned an AP and the stack has been bound together, the upper layer queries the availability to see if it is possible to connect at that moment. </p> <p>On a device there will be multiple Tier Managers, each responsible for a separate technology or group of technologies. Each Tier Manager will have distinct selection and availability logic and other technology specific algorithms. </p> <p>A single Tier Manager will be responsible for multiple instances of a layer, i.e. multiple APs of the same type. So the Wi-Fi Tier Manager would allow connection to multiple Wi-Fi Access Points, a Telephony Tier Manager will be responsible for connections to different APNs. </p> <p>Tier Managers (<xref href="GUID-33AD3175-2480-3D56-A6DB-FC1FE11E31B4.dita"><apiname>CTierManagerBase</apiname></xref>) are Comms Framework nodes created by their respective factories. Tier Managers respond to Node Messages sent across the Transport, in a similar way to Stack Nodes. </p> <p>The Tier Manager keeps track of the current Access Points that have been created through a query API, see Availability below. The Tier Manager responds to messages sent when an Access Point changes state. For example, when a Bearer stops being available, a message will be sent to the Tier Manager. </p> <p>In the diagram below, two Tier Managers are shown. The diagram shows that one Tier Manager can be responsible for more than one layer in a Stack. </p> <fig id="GUID-983CF8C4-A1DD-59AD-91BD-27E8EE2C5AA7"><title>
+          Communications Architecture showing Tier Managers 
+        </title> <image href="GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e63799_href.png" placement="inline"/></fig> <p>When a client application wants to start a connection it will request an AP by calling <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-ECA90A33-ED2C-331C-8D5B-62927B7CF690"><apiname>RConnection::Open()</apiname></xref> with a Tier Identifier (the <codeph>iTag</codeph> field in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-437C4AE0-D16B-50B7-8AD8-A4E8FA5F15E5">Tier</xref> table). This will cause a stack of APs that meet the selection and availability criteria to be returned. When the <xref href="GUID-A0C5A43A-C1AD-347E-A57E-4C7BA819FBBA.dita"><apiname>RConnection:Start()</apiname></xref> occurs, a specific AP will be selected at the top layer and the matching CPRs, SCPRs and Data Flows in each of the layers for the connection will be started (unless the connection is already active and this new <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> can share the open connection). </p> <section id="GUID-20688D48-4536-5B1E-B7F5-8C466FA59031"><title>Configuration</title> <p>The configuration for a Tier Manager is held in a number of <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms Database</xref> tables: most importantly the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-437C4AE0-D16B-50B7-8AD8-A4E8FA5F15E5">Tier</xref> table, and the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point</xref> table. </p> <p>The Tier Table contains the ECom ID of the loaded module that processes Tier Manager requests, and the Default Access Point. The Default Access Point is the one used if the client makes no special requests, see <xref href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita#GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5/GUID-0D40CC6A-AFAE-505C-B791-898B4994AE6D">Explicit and Implicit Selection</xref> below. </p> <p>The Access Point Table contains the identifiers of the MCPR, CPR and SCPR for this layer, the selection policy, the protocol, the Tier ID and a protocol identifier. </p> <p>It is recommended that all connections should specify a Tier in the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref>, but for backward compatability, <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref> without a Tier identifier will use the <codeph>Default Tier</codeph> which is stored in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-7383902B-10D2-52F3-8BDB-478CA6FB587D">GlobalSettings</xref> table. Important note: for legacy code to function correctly, the Default Tier must be the "<codeph>Network</codeph> " Tier. See <xref href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita#GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5/GUID-0D40CC6A-AFAE-505C-B791-898B4994AE6D">Explicit and Implicit Selection</xref> below for more information. </p> </section> <section id="GUID-DD707869-1B90-5707-9D6E-DCB45D2DD1E5"><title>Usage</title> <p id="GUID-A9CF89B0-C3DC-5E60-A697-483DA829FD9C"><b>Selection</b> </p> <p>A Tier Manager uses selection to decide which Access Points can be used for a connection. A top-level Tier Manager responds to selection requests that originate from <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> or <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref>. </p> <p>Selection selects a stack of APs that may be used to provide a service. The result is a stack or inverted tree showing potential APs at each layer. Remember that a higher layer AP provides a service, but there may be several options at each lower layer for supporting that service (Wi-Fi, 3G telephony etc.). For example, when a client asks for a service to provide a data socket, the list returned will include all the available APs at each layer. The Tier Manager for each layer decides which AP to use. </p> <p id="GUID-0D40CC6A-AFAE-505C-B791-898B4994AE6D"><b>Explicit and Implicit Selection</b> </p> <p>If Freeway/Mobility is required it is required that communications clients explicitly open an <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> on an AP. and associate the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> with it. But to for legacy applications or connections that don't require mobility, Implicit Selection is supported which uses the Default Connection. </p> <p>Explicit Selection occurs when an application specifies the top-level Access Point when calling <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref> with a parameter bundle that specifies an AP. Explicit selection selects the top-level AP and joins this connection to the stack. </p> <p>Implicit selection occurs when a user calls <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-3491CE2A-A94D-34E0-B0DD-D476EE3334D7"><apiname>RSocket::Open()</apiname></xref> on a socket that is not associated with any connection. Implicit selection will associate the socket with the Default Connection. Implicit selection also occurs when an <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref> is called without specifying an AP in the connection preferences. </p> <p>For Implicit Selection, only the top layer of the stack is created by the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-3491CE2A-A94D-34E0-B0DD-D476EE3334D7"><apiname>RSocket::Open()</apiname></xref>, the remainder of the layers are created when a Data Plane event occurs such as <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref> or <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-ADE2383D-3075-30B4-8F63-6D837EB75AEF"><apiname>RSocket::Send()</apiname></xref>. </p> <p>When the Data Plane activation event occurs: </p> <ul><li id="GUID-DF27A381-6BAC-51D0-91CA-42FF85AAE02F"><p>if there is no bearer (no AP for the next layer in the stack), the Control Plane will finish the selection and start the selected connection. </p> </li> <li id="GUID-0B71B7A0-BF9B-5F49-A6B5-F37382039E9A"><p>if there is a bearer, the Data Plane states it has found a flow in the Layer below by protocol-specific means, for example IP routing table. </p> </li> </ul> <p id="GUID-E1C0D897-48A2-58C7-BA2C-0AF406DCDFED"><b>Availability</b> </p> <p>When a client application wants to monitor a technology or existing connection, it can call <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita#GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2/GUID-E80C3173-3777-317A-8007-E9C331FAD9AE"><apiname>RConnectionServ::AccessPointStatusQuery()</apiname></xref> for an immediate status, or <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita#GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2/GUID-D4348A26-176D-3C2D-9BA6-CD055E6EC7D3"><apiname>RConnectionServ::AccessPointNotification()</apiname></xref> to be informed of each status change. As the format of the query bundle is configurable by the MCPR, each technology can specify what information will be returned in a query or notification. For example, the query bundle could contain Wi-Fi hotspot availability, maximum data rate supported, costs etc. </p> </section> </conbody><related-links><link href="GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita"><linktext>Layers</linktext> </link> <link href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita"><linktext>Planes</linktext> </link> <link href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita"><linktext>Nodes</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-48482288-B60B-477A-8E28-132F7CBE2C94" xml:lang="en"><title>Confirmation
+query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A confirmation query requests the user to confirm an operation, or asks
+a Yes-No-type of question. It can be used e.g. to make sure that the user
+does not accidentally delete important information or start an operation which
+cannot be cancelled.</p>
+<p>The layout for a Confirmation query is the same as the note layout, with
+an optional graphic item.</p>
+<p>One or two softkey labels can be used. In case the query can cause two
+different consequences, the positive choice (<b>Yes</b>) is placed on the
+left softkey, and the negative one (<b>No</b>) on the right softkey. In pure
+confirmations, only one way to proceed is possible, and the response text
+(for example <b>OK</b>) is placed on the left softkey.</p>
+<p>The Selection key always causes the same action as the left softkey.</p>
+<fig id="GUID-F5C18BD7-D656-4769-B841-C636628E9B1C">
+<title>Confirmation query</title>
+<image href="GUID-0DEC4D1B-2CD6-49BC-92E4-F0CB0BCBFA9D_d0e61865_href.jpg" scale="40" placement="inline"/>
+</fig>
+<p>Guidelines for designing Confirmation queries:</p>
+<ul>
+<li><p>When designing the prompt text, make sure that the positive answer
+is also a safe one. Users tend to proceed pressing the left softkey or the
+Selection key without thinking too much. </p></li>
+<li><p>Redundant Confirmation queries should be avoided. Do not add a Confirmation
+query if there already are other forms of feedback, unless it is crucial that
+the user gets a certain piece of information.</p></li>
+</ul>
+<section><title>Using confirmation queries
+in C++ applications</title><p>For implementation information, see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35" xml:lang="en"><title>Graphics and
+Drawing</title><shortdesc>This section provides application developers with an introduction
+to key concepts involved in drawing graphics to the screen. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>:
+Application developers. </p>
+</conbody><related-links>
+<link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server
+Client-Side   Library</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-485B1284-9DB0-5AF7-906A-89A830B9FE44.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-485B1284-9DB0-5AF7-906A-89A830B9FE44" xml:lang="en"><title>Handles
+Overview</title><shortdesc>This document provides an overview of handles.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-115D8AE7-F04D-47DE-83B4-0F651D721006"><title>Purpose</title> <p>Allows
+a thread or process to identify an object which is owned or managed by another
+thread or process. Handles allow a client to access, or refer to, Kernel objects.</p> </section>
+<section id="GUID-245AC90F-A46C-488E-B4FE-435F93851682"><title>Architectural
+relationships</title> <p>All handles are instances of classes derived from <codeph>RHandleBase</codeph>.
+Interactions between the holder of a handle and the object which the handle
+represents are mediated through the Kernel. Handles are also used in client-server
+relations; the client side refers to a server side session through a handle,
+an<codeph>RSessionBase</codeph> object.</p> </section>
+<section id="GUID-DCBCFDE8-F8BA-455A-8918-0EC26EADE2C8"><title>Description</title> <p>The
+handle class, <xref href="GUID-727D2B62-09A9-3CBC-AB6F-591E52EC68EB.dita"><apiname>RHandleBase</apiname></xref>, encapsulates the basic behavior
+common to all handles; for example, <codeph>Close()</codeph> to close a handle.
+In particular, the class hides the handle-number which identifies the object
+which the handle represents.</p> <p>The class is abstract in the sense that
+a <codeph>RHandleBase</codeph> object is never explicitly instantiated. It
+is always a base class to a concrete handle class; for example, <codeph>RSemaphore</codeph>, <codeph>RMutex</codeph>, <codeph>RThread</codeph> etc.</p> </section>
+<section id="GUID-9ABD8697-9E59-44D6-8F2C-4D73A3EF15E9"><title>See also</title> <p><xref href="GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita">Reference Counting Objects
+Overview</xref> </p> <p><xref href="GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347.dita">Threads
+and Process Management Overview</xref> </p> <p><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server
+Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4860A4E6-1641-47D9-8243-C03779276C6D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-4860A4E6-1641-47D9-8243-C03779276C6D" xml:lang="en"><title>Retrieving
+the supported light targets of a device</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p><codeph>SupportedTargets()</codeph> call retrieves the
+supported light targets of the device.</p> <note> Any attempt to use or reserve
+unsupported target fails with <codeph>KErrNotSupported</codeph>.</note><p>The
+following code snippet demonstrates how to retrieve the supported light targets
+of a device:</p><codeblock xml:space="preserve">// The method returns a bitmask containing supported light targets.
+TInt supportedTargets = iLight-&gt;SupportedTargets();</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-486981A0-1F0E-5935-8E9A-9C6D4CCF34A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-486981A0-1F0E-5935-8E9A-9C6D4CCF34A7" xml:lang="en"><title>Using Maths Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-487F5A5B-E2D1-5138-8063-82940879D3D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-487F5A5B-E2D1-5138-8063-82940879D3D0"><title>Security server certificates</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>For protocols where a separate server certificate is associated with each transaction, for example, HTTP over TLS, you can get the certificate using <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-06D3FE28-2B51-3F60-831C-A7D73E6F300B"><apiname>RHTTPTransaction::ServerCert()</apiname></xref>. This is not intended for use by a WSP client and will not return useful data. For a WTLS server certificate, <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita#GUID-651801A5-5473-3856-9647-46823598C5C1/GUID-719428EE-3642-3C84-A5FE-E89898CFC993"><apiname>RHTTPSession::ServerCert()</apiname></xref> is used to obtain a copy of the WAP Proxy's server certificate after a secure WTLS handshake has completed. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e303096_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-48B61662-0A11-4356-9882-7523B04FFD96.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-48B61662-0A11-4356-9882-7523B04FFD96" xml:lang="en"><title>Changing
+Passphrase</title><shortdesc>This section explains how to change the passphrase.  </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The following steps explain the process of changing the passphrase:</p></context>
+<steps id="GUID-16DDA72F-9BC5-52FB-A3C6-874815ABF9FC-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-2">
+<step id="GUID-89755D62-9A44-5F07-9035-6AA97F701C0C-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-2-1"><cmd>Create a file system
+session using an <codeph>RFs</codeph> object. </cmd>
+</step>
+<step id="GUID-6A14EBD6-AF2D-5CE8-A232-F04B717CA0B3-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-2-2"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-C8F104CE-E857-5615-B847-E3A33EAF7481-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-2-3"><cmd/>
+<info>Initialize the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-6CF7703F-8CAC-5DC6-9F43-7E2EE3F39895-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-2-4"><cmd/>
+<info>Obtain the authentication object of a key using the <xref href="GUID-7AE17C42-BAD8-3BE9-88A9-D0B066D171F2.dita#GUID-7AE17C42-BAD8-3BE9-88A9-D0B066D171F2/GUID-431CEFD1-5469-33B0-B21B-A535536CE40C"><apiname>CCTKeyInfo::Protector()</apiname></xref> function.</info>
+</step>
+<step id="GUID-6CF7703F-8CAC-5DC6-9F43-7E2EE3F39895-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-2-5"><cmd/>
+<info>Invoke the <xref href="GUID-171BE947-E0D2-3049-85BB-FE2664D3777D.dita"><apiname>ChangeReferenceData()</apiname></xref> function for the
+authentication object obtained. The keystore prompts the user to enter the
+old and new passphrases.</info>
+</step>
+</steps>
+<result><p>The passphrase is changed for the selected key, if the old passphrase
+is entered correctly.</p> </result>
+<example id="GUID-C2150584-293D-50CE-8DDC-19B4D55D8B0B-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-4"><title>Example</title> <p>The
+following code snippet shows how to set use policy for a key. </p> <codeblock id="GUID-FAD1C292-8E42-5348-B975-3CBA7E8D2820-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-9-1-3-4-3" xml:space="preserve">// Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+...
+
+
+// Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+...
+
+
+
+// Change the passphrase
+void ChangePassphraseL(CCTKeyInfo&amp; aKey)
+{
+    MCTAuthenticationObject* authObject = aKey.Protector();
+    if (authObject == NULL)
+        User::Leave(KErrNotSupported);
+
+    authObject-&gt;ChangeReferenceData(iStatus);
+    iState = EChangePassphrase;
+    SetActive();
+}
+
+
+// Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-48BD628F-F47F-535B-B148-7425A6704FC2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-48BD628F-F47F-535B-B148-7425A6704FC2"><title>always_build_as_arm</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>always_build_as_arm</codeph> </p> <p>Use the <codeph>always_build_as_arm</codeph> statement to instruct an ARMV5 build to not build the project for the THUMB instruction set, but for the ARM instruction set.</p> <p>For details, see <xref href="GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita">ARM/THUMB overrides</xref>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830"><title>The reference counting object</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A reference counting object is one which uses reference counting to track concurrent references to itself and which arranges for automatic destruction of itself when the final reference is removed. It is also an object which can be named. </p> <p>A reference counting object is any object which has <codeph>CObject</codeph> as its base class. </p> <p>Constructing a <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> derived type, or calling its <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita#GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97/GUID-E6319811-605D-3329-9314-ED25F4A9116C"><apiname>CObject::Open()</apiname></xref> member function, adds a reference to that object by adding one to its reference count. Calling its <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita#GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97/GUID-6E50F446-307B-3C9D-9AD6-AFCB49B2F658"><apiname>CObject::Close()</apiname></xref> member function removes a reference by subtracting one from its reference count. When the last user of the object calls <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita#GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97/GUID-6E50F446-307B-3C9D-9AD6-AFCB49B2F658"><apiname>CObject::Close()</apiname></xref>, the reference count becomes zero and the object is automatically destroyed. </p> <p>The following drawing shows the idea. </p> <fig id="GUID-18A04428-FBD7-5115-B206-6F2E67343A7F"><image href="GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e219728_href.png" placement="inline"/></fig> <p>A <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> is always part of a class hierarchy. It is a base class; an explicit <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> type is never instantiated. </p> <p>The server side implementation of a client/server subsession uses a <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref>. </p> <p>See also: </p> <ul><li id="GUID-20A9F23B-19B5-5D70-9943-811FC42F3BED"><p> <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref>  </p> </li> <li id="GUID-8C980E14-F073-5918-AD66-8547656BC13D"><p> <xref href="GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita">Subsessions within a session</xref>  </p> </li> <li id="GUID-C5FCE438-1F8B-569C-9257-0EBE9D823747"><p> <xref href="GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54.dita">Using client/server</xref>  </p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA-master.png has changed
Binary file Symbian3/SDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e355013_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-48ED7013-B1B7-5E86-AC09-599C4499191D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-48ED7013-B1B7-5E86-AC09-599C4499191D" xml:lang="en"><title>Example Code</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>An example application that demonstrates the use of the Multimedia Frameworks is shown below: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4911D998-5B1A-53E1-B1A7-920748489CD0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4911D998-5B1A-53E1-B1A7-920748489CD0"><title>print</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>print [ -acilmnNoOPrsz ] [ -u n ] [ -f format ] [ -C cols ] [ -R [ -en ]] [ arg ... ] </userinput> </p> <p>With the <codeph>-f</codeph> option the arguments are printed as described by <xref href="GUID-6D59E35B-6572-519A-8CFD-CB7781DDE631.dita">printf</xref>. With no flags or with the flag <codeph>-</codeph>, the arguments are printed on the standard output as described by <xref href="GUID-728F278B-30C8-5FA8-AD03-4C759690416E.dita">echo</xref>, with the following differences: the escape sequence <codeph>\M-x</codeph> metafies the character <codeph>x</codeph> (sets the highest bit), <codeph>\C-x</codeph> produces a control character (<codeph>\C-@ </codeph> and <codeph>\C-?</codeph> give the characters NULL and delete), and <codeph>\E</codeph> is a synonym for <codeph>\e</codeph>. Finally, if not in an escape sequence, <codeph>\</codeph> escapes the following character and is not printed. </p> <table id="GUID-DD03FA46-A1EE-586E-9C0C-B5AF20B79E06"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-a</codeph>  </p> </entry> <entry><p>Prints the arguments with the column incrementing first. Only useful with the <codeph>-c </codeph> and <codeph>-C</codeph> options. </p> </entry> </row> <row><entry><p> <codeph>-c</codeph>  </p> </entry> <entry><p>Print the arguments in columns. Unless <codeph>-a</codeph> is also given, arguments are printed with the row incrementing first. </p> </entry> </row> <row><entry><p> <codeph>-C cols </codeph>  </p> </entry> <entry><p>Print the arguments in <codeph>cols</codeph> columns. Unless <codeph>-a</codeph> is also given, arguments are printed with the row incrementing first. </p> </entry> </row> <row><entry><p> <codeph>-i</codeph>  </p> </entry> <entry><p>If given together with <codeph>-o</codeph> or <codeph>-O</codeph>, sorting is performed case-independently. </p> </entry> </row> <row><entry><p> <codeph>-l</codeph>  </p> </entry> <entry><p>Print the arguments separated by newlines instead of spaces. </p> </entry> </row> <row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>Take the first argument as a pattern (should be quoted), and remove it from the argument list together with subsequent arguments that do not match this pattern. </p> </entry> </row> <row><entry><p> <codeph>-n</codeph>  </p> </entry> <entry><p>Do not add a newline to the output. </p> </entry> </row> <row><entry><p> <codeph>-N</codeph>  </p> </entry> <entry><p>Print the arguments separated and terminated by nulls. </p> </entry> </row> <row><entry><p> <codeph>-o</codeph>  </p> </entry> <entry><p>Print the arguments sorted in ascending order. </p> </entry> </row> <row><entry><p> <codeph>-O</codeph>  </p> </entry> <entry><p>Print the arguments sorted in descending order. </p> </entry> </row> <row><entry><p> <codeph>-P</codeph>  </p> </entry> <entry><p>Perform prompt expansion </p> </entry> </row> <row><entry><p> <codeph>-r</codeph>  </p> </entry> <entry><p>Ignore the escape conventions of echo. </p> </entry> </row> <row><entry><p> <codeph>-R</codeph>  </p> </entry> <entry><p>Emulate the BSD echo command, which does not process escape sequences unless the <codeph>-e</codeph> flag is given. The <codeph>-n</codeph> flag suppresses the trailing newline. Only the <codeph>-e</codeph> and <codeph>-n
+                </codeph> flags are recognized after <codeph>-R</codeph>; all other arguments and options are printed. </p> </entry> </row> <row><entry><p> <codeph>-s</codeph>  </p> </entry> <entry><p>Place the results in the history list instead of on the standard output. </p> </entry> </row> <row><entry><p> <codeph>-u n</codeph>  </p> </entry> <entry><p>Print the arguments to file descriptor <codeph>n</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-z</codeph>  </p> </entry> <entry><p>Push the arguments onto the editing buffer stack, separated by spaces. </p> </entry> </row> </tbody> </tgroup> </table> <p>If any of <codeph>-m</codeph>, <codeph>-o</codeph> or <codeph>-O</codeph> are used in combination with <codeph>-f</codeph> and there are no arguments (after the removal process in the case of <codeph>-m</codeph>) then nothing is printed. </p> <p> <b>Note:</b> Symbian platform does not support the use of the <codeph>-b</codeph>, <codeph>-d</codeph>, and <codeph>-p</codeph> options. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e190442_href.png has changed
Binary file Symbian3/SDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e241603_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-49363088-CE0B-558D-8E86-48400E4F7C2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-49363088-CE0B-558D-8E86-48400E4F7C2F"><title>Multiple Alarm Notification Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose and Scope</title> <p>This document provides a description of the multiple alarm notification support in Symbian OS v9.2 and later. The main feature is the ability of multiple alarms to expire simultaneously. UI applications do not have to acknowledge an alarm event before the agenda server generates the next alarm event. This document provides a configuration guide. </p> </section> <section><title>Definitions</title> <dl><dlentry><dt>Alarm Server </dt> <dd><p>This provides Symbian OS with alarm-related services. It communicates with Uikon Alert Server to display the expired alarm to users. </p> </dd> </dlentry> <dlentry><dt>Uikon Alert Server</dt> <dd><p>The Uikon Alert Server provides the interface for Alarm Server to interact with Licensee UI Applications. It consists of a client interface in Alarm Alert, and a server interface in Uikon. </p> </dd> </dlentry> </dl> </section> <section><title>Description</title> <p>Alarm Server provides all alarm-related services to the system. When an alarm expires, Alarm Server notifies the Alert Server about the expired alarm to display to the user. </p> <p>The state properties are the same for single and multiple alarm notification, but the condition for moving to ‘notifying’ state is different. If multiple alarm notification is supported, more than one alarm can move to ‘notifying’ state provided that Alert Server can accept more than one alarm from Alarm Server. Even if a UI application can accept multiple notifying alarms, it cannot accept an infinite number of notifying alarms. Therefore, at Alarm Server startup, Alarm Server will query Alert Server for the maximum number of notifying alarms allowed. Alarm Server can use that information to determine if multiple alarm notification is supported, and if so, how many alarms can be in ‘notifying’ state at the same time. </p> <p>To support multiple alarm notification, Alarm Server notifies Alert Server about multiple expired alarms without waiting for the first alarm to be cleared or snoozed. </p> <fig id="GUID-4F324FD2-EB30-5910-BD8E-315B67A4FA44"><title>
+             Alarm state diagram for multiple alarm notification
+             support 
+          </title> <image href="GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e354652_href.png" placement="inline"/></fig> <p>In the diagram above, a queued alarm can change to the ‘waiting to notify’ state if an alarm has expired but the maximum number of notifying alarms has been reached. The state can also change if Alarm Server is waiting for a reply from Alert Server. This second scenario may occur because even though Alert Server can accept multiple alarms, the Alarm Server needs the previous asynchronous request <xref href="GUID-A323F434-0A44-31E6-B57D-11F4DFC37EEE.dita"><apiname>EASAltOpCodeSetAlarm</apiname></xref> to be completed before sending the next one. As the UI application is implemented by licensee, this scenario may or may not occur depending on how long the UI application takes to register multiple alarms. </p> <p>If the Alert Server can still accept more alarms the ‘waiting to notify’ alarm can change to ‘notifying’ state after the asynchronous request <xref href="GUID-A323F434-0A44-31E6-B57D-11F4DFC37EEE.dita"><apiname>EASAltOpCodeSetAlarm</apiname></xref> is completed. </p> <p>As demonstrated above, a 'notifying' alarm can change to ‘snoozed’ state if: </p> <ol id="GUID-31855E68-7830-5B92-83DB-7BAFBF660B53"><li id="GUID-EAFA400D-1FCE-5036-9522-13CB1A2C23E0"><p>The user requests ‘snooze’ </p> </li> <li id="GUID-92CA5327-A999-526A-BB0F-36279B98AFEE"><p>Another alarm has expired and the current alarm has sound playing paused. This scenario occurs if the paused alarm is the only notifying alarm </p> </li> <li id="GUID-7224BE4C-AF70-5F05-9BAE-0B95C8FFE483"><p>The sound playing is paused for the current notifying alarm. If this occurs and there are multiple notifying alarms, the currently notifying alarm is snoozed instead of paused. </p> </li> </ol> <p>For single alarm notification, a notifying alarm has sound paused when Alarm Server receives a <xref href="GUID-4BAB46E3-5397-3D40-8ED7-117C5F3DA51E.dita"><apiname>EASAltAlertServerResponsePauseSound</apiname></xref> event from Alert Server. If another alarm has expired while the notifying alarm has sound paused, Alarm Server snoozes the paused alarm automatically and plays the sound of the just expired alarm. In case of multiple alarm notification, the ‘sound paused’ alarm automatically snoozes if other alarms notify at the same time. </p> <p>It is a design decision to make the implementation compatible with the existing implementation. That way if the maximum number of alarms is set to one, the implementation is exactly that same as before. </p> <p>In case of multiple alarm notification, pausing the playing alarm triggers the Alarm Server to play sound for one of the other notifying alarms. This is because the sound pause request only applies to the specified alarm. </p> <p>If the user wants to silence the alarm while keeping the alarm in ‘notifying’ state, the user can respond with ‘silent’ (<xref href="GUID-C9D7979F-3E53-3513-92E9-219DA85D48E1.dita"><apiname>EASAltAlertServerResponseSilence</apiname></xref>), which will silence the alarm until the next alarm play interval re-starts (an existing behaviour in single alarm notification). Alternatively, a global silent command (<xref href="GUID-B3A373AD-3488-3439-8896-2B2B34653020.dita"><apiname>EASAltAlertServerResponseQuietPeriod</apiname></xref>) will pause sound for all alarms for a specified time while all expired alarms will stay in ‘notifying’ state. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-49397CFD-955A-5DF6-9251-368C44224966.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-49397CFD-955A-5DF6-9251-368C44224966" xml:lang="en"><title>Build tools reference</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4941C035-C359-4968-9BD5-31F44EE5F810" xml:lang="en"><title>Commands</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The term command refers to events that are received when a mobile device
+user selects an option in the <b>Options</b> menu or presses a softkey (for
+more information, see <xref href="GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita">UI concepts</xref>).
+The mobile device user input results in the application framework returning
+a command ID that corresponds to the softkey or <b>Options</b> menu selection.
+Command IDs are mapped to the selection options in the <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA</xref> and <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">Menu bar</xref> resource
+definitions. You can use either custom command IDs, which must be defined
+in your application <xref href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita"><parmname>hrh</parmname></xref> resource
+file, or <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">precompiled
+values available from the Symbian platform</xref> in your resource definitions.
+At runtime, the application framework catches the command ID values and passes
+them to the application that has focus for handling. The following commands
+have special requirements:</p>
+<ul>
+<li><p><parmname>EEikCmdExit</parmname>, which is sent by the application
+framework to exit open applications. This command ID must not be used in the
+resource file definitions, as it is reserved for the application framework.
+For more information on the special requirements for handling this command,
+see <xref href="GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita">Handling
+EEikCmdExit</xref>.</p>
+</li>
+<li><p><parmname>EAknSoftKeyBack</parmname>, which is delivered
+in response to a mobile device user pressing the <parmname>Back</parmname> softkey.
+The behavior required in response to this command depends on the context,
+but if an exit is required it needs to be handled in the same manner as with
+the <parmname>EEikCmdExit</parmname> command.</p>
+<itemgroup>
+
+</itemgroup>
+</li>
+<li><p><parmname>EAknSoftkeyOptions</parmname>, which is associated
+with the <parmname>Options</parmname> softkey, is handled by the application
+framework directly and results in the <parmname>Options</parmname> menu being
+presented to the mobile device user.</p></li>
+</ul>
+<p>For more information on resource files, see <xref href="GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita">Managing
+resource files</xref>.</p>
+<p>For an example of a resource file, see <xref href="GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita">Resource
+management example: HelloWorldBasic</xref>.</p>
+<fig id="GUID-2A400E35-185F-4E87-875E-DEB838D4A9A6"><title>Options menu</title><image href="GUID-5BCF45C6-B2F7-4078-AE6F-052128AC7FF7_d0e38954_href.png"/></fig>
+<p>Commands are passed to the object with which the menu is associated.
+The object that receives the command should handle the command if it is specific
+to the object. If the command is relevant to another object, then it should
+be passed onto the other application object. The actual implementation depends
+on the design of your application.</p>
+<p>If the application above uses an <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">Symbian
+view architecture</xref>, then the command handling functions as follows.</p>
+<ul>
+<li><p>If a mobile device user selects <parmname>Create New</parmname>,
+then the application framework returns the command associated with that menu
+item to the <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">view controller</xref> for
+the view indicated by the first tab.</p></li>
+<li><p>Since this command is unique to this view, the command must
+be handled in the view controller for this view.</p></li>
+<li><p>If there was an <parmname>Exit</parmname> menu item that
+was applicable for the application generally, then you must pass the command
+for this menu item to the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref> and handle the command there.</p></li>
+</ul>
+<p>To handle commands, you must override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aHandleCommandL%28%29" format="application/java-archive"><parmname>CEikAppUi::HandleCommandL</parmname></xref> .</p>
+<p>The options are as follows:</p>
+<ul>
+<li><p>In a <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">traditional
+Symbian OS UI architecture</xref>, the command needs to be handled in the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller</xref>. An
+example of an implementation is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-29CD264C-D073-4145-9FF5-41C7D3FFA40C" xml:space="preserve">void CMyCommandHandlingAppUi::HandleCommandL(TInt aCommand)
+    {
+    switch(aCommand)
+        {
+        case EEikCmdExit:
+        case EAknSoftkeyExit:
+            {
+            Exit();
+            break;
+            }
+
+        case EMyCommandID1:
+           {
+           //do something
+           }
+           break;
+            
+       default:
+           break;
+       }
+   }</codeblock>
+<p>where <parmname>EEikCmdExit</parmname> is provided from the application
+framework, <parmname>EAknSoftkeyExit</parmname> is the command ID that the
+application framework returns when a mobile device user presses the <parmname>Back</parmname> softkey,
+and <parmname>EMyCommandID1</parmname> is a command ID from your application <parmname>hrh</parmname> file.</p>
+<p>For more information on the handling of the exit command IDs, see <xref href="GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita">Handling
+EEikCmdExit</xref>.</p>
+</itemgroup>
+</li>
+<li><p>In an <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">Symbian
+view architecture</xref>, the command is received by the active <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">view</xref>.
+It should be handled by the view if the command is view specific, otherwise
+it should be passed to the UI controller <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref>(-derived
+class). For an example of view-specific command handling, see the following: </p>
+<itemgroup>
+<codeblock id="GUID-C55E09E4-08A9-4997-B198-E00B61D24508" xml:space="preserve">void CMyCommandHandlingViewClass::HandleCommandL(TInt aCommand)
+    {   
+    switch ( aCommand )
+        {
+        case EAknSoftkeyExit:
+            {
+            AppUi()-&gt;HandleCommandL(EEikCmdExit);
+            break;
+            }
+
+        case EMyCommandID1:
+            {
+            // Do something.
+            break;
+            }
+
+        default:
+            {
+            AppUi()-&gt;HandleCommandL( aCommand );
+            break;
+            }
+        }
+    }
+</codeblock>
+<p>where <parmname>EEikCmdExit</parmname> is provided from the application
+framework, <parmname>EAknSoftkeyExit</parmname> is the command ID that the
+application framework returns when a mobile device user presses the <parmname>Back</parmname> softkey,
+and <parmname>EMyCommandID1</parmname> is a command ID from your application <parmname>hrh</parmname> file.</p>
+<p>In this example, the last case (default) hands over unhandled commands
+to the UI controller.</p>
+<p>For more information on the handling of the exit command IDs, see <xref href="GUID-11FE772A-E662-4B88-B871-97A40A40FBAB.dita">Handling
+EEikCmdExit</xref>.</p>
+</itemgroup>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B" xml:lang="en"><title>Hiding
+and showing stylus pop-up menu items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To hide and show stylus pop-up menu items, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#44ace66d760143c3816baeacf6dfaeea" format="application/java-archive">SetItemDimmed()</xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref>. </p>
+<p><draft-comment time="2008-05-15T14:45" translate="no">Add sample code here.</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271"><title>Format layering</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Symbian OS uses the principle of format layering in which new formatting is added as a layer onto the previous layer of formatting. The following diagram shows a less efficient technique for applying format layering to text. The inefficiency arises because each format layer stores not only the new attribute which it introduces, but also every attribute which it inherits from the preceding format layer. </p> <fig id="GUID-DBA21807-9BC8-5FFB-962A-4CDCD9A72359"><image href="GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e400761_href.png" placement="inline"/></fig> <p>The Symbian OS avoids this inefficiency by using the system of <keyword>based-on links</keyword>. Here, each new layer adds attributes in a natural way without restating all attributes previously set. A based-on link is a pointer to the format layer whose attributes are inherited by another layer. For example, when the italic attribute is applied to a region of bold text, the new layer stores only the italic attribute and a pointer to the previous attribute layer. Chains of format layers can thus be formed, with each layer based on the previous one. In order to determine a character or paragraph’s <keyword>effective format</keyword>, a chain of format layers must typically be examined. The final layer in the chain of based on links is the one whose based on link is NULL and is not therefore based upon any other layer.</p> <p>This method is demonstrated in the following two diagrams, in which each arrow represents a based-on link.</p> <fig id="GUID-3BE6B9A3-D8DB-543C-AA88-DD519B991B62"><title>Format layering</title> <image href="GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e400779_href.png" placement="inline"/></fig> <p>The following diagram demonstrates the system of based-on links when attributes are applied to different parts of text rather than added on top of existing attribute layers.</p> <fig id="GUID-1E0E17F0-BE93-5403-8474-ED612E118C8F"><image href="GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e400785_href.png" placement="inline"/></fig> <p>In this case, several format layers are required, all of which are based on the normal layer.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9"><title>systeminclude</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>systeminclude</codeph>  <varname>directory-list</varname> </p> <p>Use the <codeph>systeminclude</codeph> statement to define directories to be scanned for files specified in <codeph>#include</codeph> statements in source and resource files. </p> <p>It may be specified any number of times, and each may have any number of directories. </p> <p>When a project is being built, the pre-processor will be invoked specifying all the <codeph>systeminclude</codeph> and <codeph>userinclude</codeph> directories indicated in these statements. No standard include directories will be searched unless the project links to Win32 libraries under WINS. </p> <p>Files included from source code with a line such as <codeph>#include
+        &lt;e32def.h&gt;</codeph> are searched based on the first matching file in the directory, in the following order: </p> <ul><li id="GUID-862D165E-9F67-5FA7-B108-C44C11A06D70"><p>Directory containing the source file </p> </li> <li id="GUID-202A5A9A-93F5-54A8-A298-5316ABF61A8C"><p>Directories specified by <codeph>userinclude</codeph> keyword, if any </p> </li> <li id="GUID-C110FD13-CA71-51CF-B0BB-B501BADA457E"><p>Directories specified by <codeph>systeminclude</codeph> keyword, if any </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7" xml:lang="en"><title>External
+Surfaces Overview</title><shortdesc>This topic provides an introduction to displaying an external surface
+on a window. The surface is then known as a background surface. This feature
+is available in ScreenPlay only. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. <b>Target
+audience</b>: Device creators. </p>
+<p>There are two main use cases for using external surfaces in this way. One
+is to display a video, in which case DevVideo renders the content. The other
+main use case is an OpenGL ES background surface, in which case the client
+issues OpenGL ES rendering commands. This topic covers how to get the surface
+onto the screen and not rendering the content to the surface. </p>
+<section><title> Key concepts</title> <p>The following diagram illustrates
+some of the key concepts that are used in the documentation of surfaces. </p> <fig id="GUID-F134C262-EC19-5925-A188-2C7C2CD5EEEA">
+<title>Composition of the UI surface and an external surface, showing the
+             viewport and extent</title>
+<image href="GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e171376_href.png" placement="inline"/>
+</fig> <dl>
+<dlentry>
+<dt>Graphics surface</dt>
+<dd><p>A graphics surface (usually simply called a <i>surface</i>) is a hardware-independent
+memory buffer for holding an image or part of a scene. A surface has a set
+of attributes, the most important of which is its ID (which is a <xref href="GUID-11F60AEB-003B-3E8D-BDB9-D97F698627DF.dita"><apiname>TSurfaceId</apiname></xref>). </p> </dd>
+</dlentry>
+<dlentry>
+<dt>UI surface</dt>
+<dd><p>The UI surface is a special surface onto which the Window Server renders
+all of the UI content. It is created automatically during system start up
+and corresponds to the frame buffer in the non-ScreenPlay variant. The UI
+surface is semi-transparent and is always the topmost layer.</p> </dd>
+</dlentry>
+<dlentry>
+<dt>External surface</dt>
+<dd><p>An external surface is any surface other than the UI surface—for example,
+a surface that holds a video or to which OpenGL ES content is rendered. External
+surfaces are always opaque. When an external surface is attached to a window,
+the Window Server creates a transparent hole in the UI surface to reveal the
+external surface. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Viewport</dt>
+<dd><p>The viewport is a rectangular area of an external surface all or part
+of which is to be displayed. You can think of the viewport as the source. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Extent</dt>
+<dd><p>The extent is a rectangular area in the composition scene in which
+all or part of the viewport is placed. The content of the viewport can be
+scaled and rotated within the extent relative to its normal size and orientation.
+The extent is normally a window to which the external surface is attached. </p> </dd>
+</dlentry>
+</dl> <p>The following diagram provides a cross-section view through the surfaces
+shown in the previous figure. Notice that the UI surface is the topmost layer
+and that it contains a hole through which the external surface
+can be seen.</p> <fig id="GUID-4DB99814-988F-5D51-A1A7-E864B6DA6DFB">
+<title>              A cross section through the surfaces, showing the display
+output            </title>
+<image href="GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e171454_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-F9D7659B-1325-5DC2-9D7A-9B6C0DFB8A62"><title>Supported Uses</title> <p>You
+can: </p> <ul>
+<li id="GUID-97CAD13E-1C70-59FF-B271-F3E77198086A"><p>Display an external
+surface (for example, video content or a viewfinder image) within a window. </p> </li>
+<li id="GUID-BD8FFB28-D56C-581B-9E1C-B2BD97FDAFBC"><p>Dynamically set or remove
+a background surface across multiple windows on the same screen without having
+to register and unregister the surface. This reduces resource churn and content
+transfer. </p> </li>
+<li id="GUID-0A3FD92E-7E99-5961-BC5A-3FBB970A7889"><p>Reconfigure the attributes
+of the surface such as its extent, viewport and orientation, after it is set
+as a background. </p> </li>
+<li id="GUID-6E962607-1E7D-516E-B855-15A1A67923B6"><p>Reposition the displayed
+surface on the window. </p> </li>
+<li id="GUID-26E561E7-92BB-5EBA-A3B9-F660507A258D"><p>Zoom in and out of the
+contents of the surface. </p> </li>
+<li id="GUID-287D3286-209B-5E01-B1C6-2373A2B07172"><p>Place the surface content
+in a specified window area rather than filling the entire window. </p> </li>
+<li id="GUID-6F2DCF0C-32D7-53CD-A2DD-4DBE662015B5"><p>Crop the surface content
+rather than using the entire surface. </p> </li>
+<li id="GUID-8E49A7FB-0709-5127-8C94-104C512EA6AC"><p>Rotate the contents
+of the background surface by quadrant angles. </p> </li>
+<li id="GUID-5631047A-A8AD-59DF-82FF-021964BA571D"><p>Flip the background
+surface from top to bottom and rotate it by 180° to achieve a mirroring effect. </p> </li>
+</ul> <p>The following diagrams shows some surface configuration use cases. </p> <fig id="GUID-FF25ED24-7A3D-5C4B-A711-D6AEA53E972F">
+<title>              Surface configuration use cases            </title>
+<image href="GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e171521_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-7EAB8F5D-6290-5B63-B396-8A1FAE7D91A5"><title> Configuration</title> <p>There
+are a number of ways in which dynamically updated content can be configured
+to appear on a window. </p> <p><b>A single content surface filling the window </b> </p> <p>External
+content can be fitted onto a Window Server window. Each axis of the surface
+can be stretched independently of the other axis. The window must be a visible
+client window: <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> or <xref href="GUID-A5DFCFA7-7B2D-3872-B6D0-4526DF743630.dita"><apiname>RBlankWindow</apiname></xref>. </p> <p><b>Placement
+of a single surface on a selected area of the window </b> </p> <p>The position
+and display size for the external content can be specified as an area within
+the Window Server window, rather than filling the window. The window must
+be a visible client (<xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> or <xref href="GUID-A5DFCFA7-7B2D-3872-B6D0-4526DF743630.dita"><apiname>RBlankWindow</apiname></xref>)
+as before. You specify the area by using <xref href="GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA.dita#GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA/GUID-8984E1F8-2807-301D-B82B-A52CC4254B04"><apiname>TSurfaceConfiguration::SetExtent(const
+TRect&amp;           aExtent)</apiname></xref>. </p> <p>After the extent is specified,
+its size does not change if the window size changes but its position moves
+to maintain its relative position on the window. </p> <p><b>Clipping of a
+surface </b> </p> <p>Video sometimes needs to appear cropped, so that a sub-area
+of the video is displayed instead of the full image. The crop viewport is
+specified in surface co-ordinates. The cropped viewport fills the output extent
+(or the window when the extent is not specified). The content appears scaled
+if the size of the viewport does not match the size of the extent (or the
+window). </p> <p><b>Scaling </b> </p> <p>It is possible to arbitrarily scale
+a surface to user specifications using the extent and viewport features. Each
+axis is scaled independently. When the extent and viewport are coincident,
+no scaling occurs. Filtering can be applied by the implementation of stretching
+and shrinking. </p> <p><b>Rotation </b> </p> <p>The viewport can be displayed
+rotated relative to its normal orientation. For example, if there is a fixed
+camera on the front of a device and the device is rotated by 90°, the image
+captured by the camera needs to be rotated by 90° in the other direction to
+get the expected result. The orientation is always relative to the current
+device orientation. </p> <p><b>Flipping </b> </p> <p>An external surface can
+be flipped from top to bottom around the x axis. </p> <p><b>Atomic combination
+of these operations </b> </p> <p>All the above mentioned configurations can
+be specified and combined unambiguously for a particular content on a particular
+window. You can specify parameters for a combination of these configurations
+in a single operation. </p> <p><b>Changing surfaces </b> </p> <p>The surface
+assigned to a window can be changed. </p> <p><b>Reconfiguring </b> </p> <p>It
+is possible to change the configuration options applied to a surface without
+re-assigning the surface. </p> <p><b>Sharing surfaces </b> </p> <p>Content
+surfaces are transferable and sharable between windows. </p> <p>The initial
+registration step ensures that any resources allocated to the content surface
+are held while the surface is removed from one window and added to another.
+This reduces the likelihood of failure between operations. </p> </section>
+<section><title>API Summary</title> <p>This section provides a summary of
+the classes and functions that you use to manage surfaces: </p> <ul>
+<li id="GUID-D7C9343C-BFAB-5153-B3E6-E5EBA5859570"><p><xref href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita#GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7/GUID-3E1EF2ED-7E9C-541F-A439-F2CBA5B6F211">RWindowBase</xref>  </p> </li>
+<li id="GUID-5AD3B9D5-60E8-5A2A-9C6B-4C914540FE9E"><p><xref href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita#GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7/GUID-1DC9E4DF-248F-59A6-92A9-F756F73414B3">TSurfaceConfiguration</xref>  </p> </li>
+<li id="GUID-2627F547-B979-5682-A69A-97D89969F9B3"><p><xref href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita#GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7/GUID-E2A62988-58F8-5021-BA44-25AE3C3D95B5">RWsSession</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-3E1EF2ED-7E9C-541F-A439-F2CBA5B6F211"><title>RWindowBase </title> <ul>
+<li id="GUID-7A5D0A6F-C0B6-5D87-B0F4-99C92FA8227B"><p> <codeph>SetBackgroundSurface(const
+TSurfaceConfiguration                 &amp;,TBool)</codeph> sets the background
+of the window to be a given surface. The <xref href="GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA.dita"><apiname>TSurfaceConfiguration</apiname></xref> argument
+contains the surface ID and the configuration attributes. Another form of
+the function simply takes a surface ID as an argument, which provides less
+control and auto-stretches the surface to fill the window. </p> </li>
+<li id="GUID-C86F37F7-5017-56F3-9B14-E3B8E0EC0E8A"><p> <codeph>RemoveBackgroundSurface()</codeph> removes
+any background surface that has been set to the window. </p> </li>
+<li id="GUID-11ABFBDE-556F-5096-810E-6BBA2C81C4B1"><p> <codeph>GetBackgroundSurface()</codeph> retrieves
+a copy of the current configuration for the background surface attached to
+the window. </p> </li>
+</ul> <p>See <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWindowBase</apiname></xref>. </p> </section>
+<section id="GUID-1DC9E4DF-248F-59A6-92A9-F756F73414B3"><title> TSurfaceConfiguration</title> <p>This
+class encapsulates the surface configuration attributes that can be specified
+while setting the background surface of a window. If the values for the attributes
+are not set, the default values for the corresponding attribute are used. </p> <p>Symbian
+recommends that the client validates the surface configuration data before
+passing it on to the server. Invalid data that inadvertently slips through
+the client-side validation mechanism, or maliciously bypasses it, causes a
+panic. </p> <p>See <xref href="GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA.dita"><apiname>TSurfaceConfiguration</apiname></xref>. </p> </section>
+<section id="GUID-E2A62988-58F8-5021-BA44-25AE3C3D95B5"><title> RWsSession</title> <ul>
+<li id="GUID-B1A1CE19-6E12-5BA7-B79A-A6D7C44F5920"><p> <codeph>RegisterSurface()</codeph> registers
+a surface for use in composition on the screen associated with this device
+within this session. </p> </li>
+<li id="GUID-6678C53D-F0B5-5ADD-BCC7-43FC31E81FEE"><p> <codeph>UnregisterSurface()</codeph> removes
+the surface from the session’s register of surfaces that are used in composition
+on the screen associated with this device. </p> </li>
+<li id="GUID-9F5FF304-794C-5BC3-B16E-F036C859F1E2"><p> <codeph>PreferredSurfaceConfigurationSize()</codeph> returns
+the window server’s preferred size for the <codeph>TSurfaceConfiguration</codeph> object,
+used for <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-AC4FBD36-8CC7-3191-B266-1805DEDE6D50"><apiname>RWindow::SetBackgroundSurface()</apiname></xref>. </p> </li>
+</ul> <p>See <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref>. </p> </section>
+<section><title>Example</title> <p>This code snippet is provided for illustrative
+purposes only. A Window Server client application wants to run a 3D game full-screen
+at the native physical resolution of the display (either current or selected
+using a display controlling system application). This example assumes that
+the <xref href="GUID-BA6FEFAE-8891-3286-A38F-2EA522D7A27E.dita"><apiname>MDisplayMapping</apiname></xref> interface has already been obtained,
+as shown in <xref href="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita">Display
+Control and Mapping in the Window Server Client</xref>. </p> <codeblock id="GUID-DE5C6DB0-1096-5BA3-8BB7-78AE3B6619B1" xml:space="preserve">// Establish connection and get display mapping interface.
+RWindowGroup group = RWindowGroup(iSession);
+RWindow window(iSession);
+    
+group.Construct(1, iScreenDevice);
+window.Construct(group, 2);
+    
+TRect winExtent;
+iDisplayMapping.GetMaximumWindowExtent(winExtent);
+window.SetExtent(winExtent);
+    
+// Map window size to composition coordinates
+TRect surfaceExtent;
+iDisplayMapping.MapCoordinates(EApplicationSpace, winExtent,
+    ECompositionSpace, surfaceExtent);
+    
+RSurfaceManager::TSurfaceCreationAttributes attribs;
+attribs.iSize = surfaceExtent.Size();
+    
+// Set up other attributes and create surface
+    
+window.SetBackgroundSurface(surface);
+    
+window.Activate();
+</codeblock> <p>A similar approach can be used by other surface content providers,
+such as video. </p> </section>
+</conbody><related-links>
+<link href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita"><linktext>Graphics
+Composition</linktext></link>
+
+<link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server
+Client-Side Library Concepts</linktext></link>
+<link href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita"><linktext>Dynamic Resolution
+Switching</linktext></link>
+<link href="GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita"><linktext>Flipping
+and Rotating an External  Surface</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-497930CE-4D61-50EE-A63B-3656158EE29C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-497930CE-4D61-50EE-A63B-3656158EE29C"><title>Thin Templates</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform C++ uses C++ templates in an efficient way called the thin template idiom. </p> <p>Templates are particularly useful for collection classes, such as arrays. The class declaration: </p> <codeblock id="GUID-ACAAAE20-4A81-5C4F-930B-31097FBAD432" xml:space="preserve">class CArrayFixFlat&lt;T&gt; ...</codeblock> <p>specifies a family of array classes, which may contain any type. The template may be instantiated, for instance, as </p> <codeblock id="GUID-D02E8C13-85FA-5DA2-8A5E-5F1C15F4038C" xml:space="preserve">CArrayFixFlat&lt;CCoeControl*&gt;* iControls;</codeblock> <p>which declares an array of <codeph>CCoeControl*</codeph> pointers. Other collection classes use the same idea, for instance <codeph>TPckgBuf&lt;T&gt;</codeph>, <codeph>TSglQue&lt;T&gt;</codeph> etc. </p> <p>Templates may also use other parameters, such as an integer: </p> <codeblock id="GUID-209E8594-EFC2-5F55-AF45-51CE538C1336" xml:space="preserve">class TBufC&lt;TInt S&gt; ...;</codeblock> <p>This type of template class may be instantiated also: </p> <codeblock id="GUID-5ABEBD1D-1B0A-5C57-B35E-260180F31978" xml:space="preserve">TBufC&lt;20&gt; name; </codeblock> <p>The functionality provided by templates is powerful, and highly desirable. Without templates, collection classes usually use <codeph>void*</codeph> pointers: as a result, they are not typesafe. </p> <p>Templates can be difficult to manage. A template really defines a whole family of classes. Each member of that family that is instantiated requires its own object code. Avoidance of object code duplication is a difficult issue in a C++ implementation. For the Symbian platform, object code duplication must be avoided at all costs. The solution used is the <i>thin template idiom</i>. </p> <p>The thin template idiom begins with a base class, code in terms of <codeph>TAny*</codeph> parameters: </p> <codeblock id="GUID-C6ADB9B7-4290-5A6B-B1B4-7D9C88E90B1F" xml:space="preserve">class CArrayFixBase ... {
+    IMPORT_C const TAny* At(TInt aIndex) const;</codeblock> <p>This base class has the real code, just once. The code resides in a single DLL and is exported from that DLL. The base class may be fat: it may contain an arbitrary amount of code. </p> <p>Then, a derived class is used as follows: </p> <codeblock id="GUID-58361D84-0D13-5E9B-936F-1D4724A71282" xml:space="preserve">class CArrayFix&lt;T&gt; : public CArrayFixBase {
+    inline const T&amp; At(TInt aIndex) const
+    {return(*((const T *)CArrayFixBase::At(anIndex)));}</codeblock> <p>Because this class uses only inline functions, it generates no extra code. But because the casting is encapsulated in the inline function, the class is typesafe to its users. The templated class is thin: it generates no code at all. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e147274_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-49882982-0DA2-5021-BAC8-7DC77BDFD27C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-49882982-0DA2-5021-BAC8-7DC77BDFD27C"><title>JPEG Exif Plug-in Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the JPEG Exif Plug-in library. It is intended for application developers and device creators who are interested in accessing Exif metadata in JPEG and TIFF images. </p> <section><title>Purpose</title> <p>JPEG Exif Plug-in provides a simplified mechanism for accessing the Exif metadata tags in JPEG images. </p> <p><b>JPEG Exif Plug-in Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-30FD8692-FE68-552C-91CF-C7666C415FC9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath> jpegexifplugin.dll</filepath>  </p> </entry> <entry><p> <filepath>jpegexifplugin.lib</filepath>  </p> </entry> <entry><p>A simplified mechanism for accessing the Exif metadata. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>JPEG Exif Plug-in is a member of the Imaging Framework component. It is used by several image framework libraries, including: </p> <ul><li id="GUID-6683751B-BA46-5633-98B9-F3065EA5615F"><p><xref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita">Image Display</xref> - <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> Handles the image decoding operation, providing scope for accessing Exif metadata on a read-only basis. </p> </li> <li id="GUID-A89A7F4C-8A47-50BE-ACC4-4750D8E925E5"><p><xref href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita">Image Transformation</xref> - <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> Handles image transform operations such as image resizing and rotation. </p> </li> <li id="GUID-FABEEAD6-1566-5011-B4D1-85B85A2FCDB9"><p><xref href="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita"> Exif Utility</xref> - Provides Exif metadata access through <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> and <xref href="GUID-B742FC40-2D88-3E71-8F89-FCB15A2C6619.dita"><apiname>MExifMetadataReader</apiname></xref>. </p> </li> </ul> </section> <section><title>Description</title> <p>JPEG Exif Plug-in provides access to metadata in JPEG images. The complete list is available from the <xref scope="external" href="http://www.exif.org">Exif web site</xref>. </p> </section> <section><title>Key JPEG Exif Plug-in Classes</title> <p>JPEG Exif Plug-in allows you to read Exif metadata tags from and write to JPEG images. </p> <ul><li id="GUID-4017CAEA-AD05-5CCC-AF7B-CB1C1E48631D"><p> <xref href="GUID-8AA987C9-456B-3E7C-95C2-C5578EE977B9.dita"><apiname>TExifReaderUtility</apiname></xref> reads several pre-defined tags from a JPEG image. </p> </li> <li id="GUID-32FA97F2-17D4-517A-83CD-B28BBC2295D8"><p> <xref href="GUID-62EA502C-FBE8-39A8-AEC6-3104C15F18C9.dita"><apiname>TExifWriterUtility</apiname></xref> writes several pre-defined tags to a JPEG image. </p> </li> </ul> </section> <section><title>Using JPEG Exif Plug-in</title> <p>JPEG Exif Plug-in is used for: </p> <ul><li id="GUID-62620CFA-D317-5D39-9CA9-A02ADBF7ECB1"><p>Reading Exif metadata from JPEG images with the pre-defined Exif tag getter functions. </p> </li> <li id="GUID-2C34F487-74A9-51B4-98AE-840721559FE7"><p>Writing Exif Metadata tags to JPEG images with the pre-defined Exif tag setter functions. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita"><linktext>Exif Utility Overview</linktext> </link> <link href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita"><linktext>Exif Utility Guide</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display Library</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transform Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704"><title>Prevent Database File Corruption</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This guide describes how databases might be corrupted. </p> <section><title>Introduction</title> <p>Although SQLite is very resistant to database corruption, thanks to the atomic features, it is still possible for a database file to become corrupt. By understanding the known ways of corrupting a SQLite database, you can make sure you avoid them. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-E921DD90-259E-5843-80FF-C5D85BB7545C"><title>Avoid Corrupting your Database Files</title> <p>One of the key benefits of using an atomic and durable database engine is that you can be responsibly confident that the database will not be corrupted by application crashes or power failures. SQLite is very resistant to database corruption but it is possible to corrupt a database. This section will describe all of the known techniques for corrupting a SQLite database so that you can make sure you avoid them. </p> <p>The following database corruption situations will be discussed here: </p> <ul><li id="GUID-952C9192-E349-5B34-860C-A19B874BFC0F"><p>Hardware failure -- beyond the control of SQLite </p> </li> <li id="GUID-55D027FD-912D-5114-8E85-2AEC56CCBC4E"><p>System Crash -- when rollback journal exists </p> </li> <li id="GUID-7070E8B3-C218-5E6F-AAAB-7EE4479C196E"><p>post crash applicatipon recovery </p> </li> <li id="GUID-5D2454C9-075B-5A15-B736-94F1E9188D03"><p>hot journal name conflict </p> </li> </ul> <p>A SQLite database is just an ordinary file in the filesystem. If the database is placed in a publicly accessible location then any process can open that file and write nonsense into the middle of it, corrupting the database. Similarly, an operating system malfunction or a hardware fault can cause invalid data to be written into the database file. Both of these issues are beyond the control of SQLite or of application developers. We only mention them here for completeness. </p> <p>After a power loss or system crash and subsequent system reboot, a rollback journal file will be found in the same directory as the original database. The presence of this rollback journal file is the signal to subsequent users that the database is in an inconsistent state and needs to be restored (by playing back the journal) before it is used. A rollback journal file that is left over after a crash is called a “hot journal”. </p> <p>If after a post-crash reboot some kind application recovery occurs which deletes, renames, or moves a hot journal, then SQLite will have no way of knowing that a hot journal existed. It will not know that the database is in an inconsistent state and will have no way to restore it. Deleting or renaming a hot journal will result in a corrupted database nearly every time. </p> <p>The name of the hot journal is related to the name of the original database file. If the database file is renamed this means that SQLite will not see the hot journal based on the original name, no database recovery will be undertaken and the database will become corrupt. </p> <p>These are all of the known ways for corrupting a SQLite database file, and as you can see, none of these ways are easy to achieve. SQLite databases have proven to be remarkably reliable and trouble-free. By avoiding the above situations you can ensure that your databases will be safe and intact even after system crashes and untimely power failures. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link><linktext/></link><link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-49A7E8FD-72DA-5D56-86BE-74AA9AAF7C02.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-49A7E8FD-72DA-5D56-86BE-74AA9AAF7C02" xml:lang="en"><title>Using
+XPath Extension Function</title><shortdesc>This topic explains how to use the XPath Extension Function API
+to implement XPath functions and register them with the XML DOM Engine. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before you start, you must: </p> <ul>
+<li id="GUID-6FEBC3D4-5972-52C8-AE2D-DC10960E7CB9"><p>understand <xref href="http://www.w3schools.com/XPath/xpath_syntax.asp" scope="external">XPath syntax</xref> and the concept of <xref href="http://www.w3.org/DOM/" scope="external">Document Object Model (DOM)</xref>. </p> </li>
+<li id="GUID-5AB869C6-6DC3-5434-8A96-F1FBC23391EB"><p>understand the architecture
+and classes of the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML
+DOM Engine</xref> component. </p> </li>
+</ul> </prereq>
+<context><p>XPath is a query language for exploring XML documents. You can
+extend it with domain-specific functions or with general utility functions,
+to add functionality to XPath queries. </p> </context>
+<steps id="GUID-78E28A2F-8B09-5B02-BF61-1C83927423FF">
+<step id="GUID-D11FCC80-B452-591E-8674-245755847629"><cmd>Write a new class
+that implements the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>MXmlEngXPathEvaluationContext</apiname></xref> interface. </cmd>
+<info>This class represents the evaluation context. It processes the arguments
+of the extension function and stores the result of the evaluation. <p/></info>
+</step>
+<step id="GUID-B6848240-EE53-5677-A75B-F0741FC60764"><cmd>Write a new class
+that implements the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>MXPathExtensionFunction</apiname></xref> interface. </cmd>
+<info>This class represents the new extension function. The <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>MXPathExtensionFunction::Evaluate()</apiname></xref> function
+uses its <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>MXmlEngXPathEvaluationContext</apiname></xref> parameter
+to process input arguments and return a result. This result can be a set of
+nodes, a number, a boolean or a string.<p/> </info>
+</step>
+<step id="GUID-7061B984-982E-54A6-9915-D0BB73E412BC"><cmd>Create an instance
+of the new extension function class. </cmd>
+</step>
+<step id="GUID-F5AC95C9-B770-5484-BDA3-9F3A0C806EC7"><cmd>Create a <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngExtensionFunctionDescriptor</apiname></xref> structure. </cmd>
+<info>This structure contains a pointer to the new extension function, the
+name of the function, and the optional namespace URI. <p/></info>
+</step>
+<step id="GUID-A230F1A0-AEEF-594A-93C5-29349322BD73"><cmd>Register this instance
+by calling the static <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngXPathConfiguration::AddExtensionFunctionL()</apiname></xref> function. </cmd>
+</step>
+<step id="GUID-5B333061-45E5-5288-95D8-801D468AB065"><cmd>Use the new extension
+function in an XPath query.</cmd>
+</step>
+<step id="GUID-F314293B-69F9-5A54-963C-7EBA3AA67129"><cmd>Free your resources
+as necessary.</cmd>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita"><linktext>Searching
+a DOM Tree using XPath</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-49C93C36-D86B-4EEE-A8AB-4279312DF4BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-49C93C36-D86B-4EEE-A8AB-4279312DF4BC" xml:lang="en"><title>Write
+an interface implementation for a converter</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Conversion from one data type to another is performed by
+a class derived from the abstract <codeph>CConverterBase2</codeph> class.
+Conversions can be performed between files specified by filenames, or between
+objects which support the stream interfaces. For example, stream stores, memory
+streams and the clipboard.</p><p>Implement the following key <codeph>CConverterBase2</codeph> functions:</p><ul>
+<li><p><codeph>ConvertAL()</codeph>, which prepares the converter to convert
+data in a file. By default, this leaves with <codeph>KErrNotSupported</codeph>.</p></li>
+<li><p><codeph>ConvertObjectAL()</codeph>, which prepares the converter to
+convert data in a stream. By default, this leaves with <codeph>KErrNotSupported</codeph>.</p></li>
+<li><p><codeph>DoConvertL()</codeph>, which performs a step in the conversion
+and indicates whether the conversion is complete, or whether the client needs
+to call <codeph>DoConvertL()</codeph> again. By default this leaves with <codeph>KErrNotSupported</codeph>.</p></li>
+<li><p><codeph>CancelConvert()</codeph>, which can be called at any stage
+in the conversion process to cancel the conversion.</p></li>
+</ul><p><b>NOTE</b>: The approach of an initial preparatory step followed
+by a sequence of further incremental steps allows the client thread to stay
+responsive while a potentially lengthy conversion process is taking place.</p><p><codeph>CConverterBase2</codeph> also
+defines two functions which do the complete conversion in one function call: <codeph>ConvertL()</codeph> and <codeph>ConvertObjectL()</codeph>. <codeph>CConverterBase2</codeph> supplies default implementations of these functions
+which perform their tasks by calling <codeph>ConvertAL()</codeph> or <codeph>ConvertObjectAL()</codeph> once,
+and <codeph>DoConvertL()</codeph> in a loop until complete. </p><p>A converter
+must also implement:</p><ul>
+<li><p><codeph>Uid()</codeph> to return a UID that uniquely identifies the
+converter. This should be the same value as the <codeph>conv_uid</codeph> value
+defined in the converter's <codeph>CONARC_RESOURCE_FILE</codeph> resource.</p></li>
+<li><p><codeph>Capabilities()</codeph> to return a flag indicating if the
+converter can convert files, streams, or both.</p></li>
+</ul><p>The following code snippet is an example declaration of a converter
+class:</p><codeblock xml:space="preserve">class CExampleConverter : public CConverterBase2
+    {
+    public: 
+        static CConverterBase2* NewL();        CExampleConverter();
+        ~CExampleConverter();    
+        // from CConverterBase2
+        void ConvertObjectAL( RReadStream&amp; aReadStream, 
+                              RWriteStream&amp; aWriteStream, 
+                              MConverterUiObserver* aObserver = NULL );
+        TBool DoConvertL();
+        TUid Uid();
+        TInt Capabilities();
+        void CancelConvert();
+    private:
+        RReadStream* iReadStream;
+        RWriteStream* iWriteStream;
+    };
+</codeblock><p><b>Note</b>: The <codeph>MConverterUiObserver</codeph> observer
+pointer can be NULL, so check for this before calling its functions.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4A21335F-7752-5134-98C5-D21D4657E094.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4A21335F-7752-5134-98C5-D21D4657E094" xml:lang="en"><title> Comms Infrastructure Verification Suite</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Comms-infras test technology area. The following topics provides an overview about the test technology area, its coverage, the test environment, and details of the test suites offered by this test technology area to verify the basic functionality of the published APIs in Comms-infras. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,1558 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8" xml:lang="en"><title>Copyright
+Acknowledgments for P.I.P.S. Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-6918526A-A574-4172-A64A-216E1C04585F"><title>Overview</title> <p>The
+P.I.P.S. libraries included in Symbian platform are covered by the following
+copyright notices: </p> <ul>
+<li id="GUID-EAEA5FD9-2686-5B42-9B06-6D125C50D6B0"><p><xref href="GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita#GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8/GUID-417AF001-F9D8-5D02-89CF-60D4F66E0701">Free BSD</xref>  </p> </li>
+<li><p><xref href="GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita#GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8/GUID-69dd6f30-81a6-4891-87b0-ab965693a535">OpenSSL</xref></p></li>
+<li><p><xref href="GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita#GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8/GUID-d1f2b954-c042-465f-b946-caeac8bbaf9f">Zlib</xref></p></li>
+<li id="GUID-F8884857-E25F-5BFD-9C43-D03785043310"><p><xref href="GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8.dita#GUID-4A4951D6-92A9-596D-B84C-B95E78CE8AA8/GUID-D3AAED73-A09D-55E3-88A4-B882D878102D">Nokia Corporation</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-417AF001-F9D8-5D02-89CF-60D4F66E0701"><title>Free BSD</title> <p>Copyright
+©) 1980,1982,1983,1985,1986,1987,1988,1989,1990, 1991,1992,1993, 1994 </p> <p>The
+Regents of the University of California. All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-11A7F347-3B7F-5D91-8E7C-208380CEECE2">
+<li id="GUID-36A517A9-C1D7-53C0-A99B-E050FC3A6786"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-EE5A3B2F-B65B-5A6F-9F4B-0D3BA7526F36"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-0B37BD62-6FA7-51EA-9509-E5B634C67E3A"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement: </p> <ul>
+<li id="GUID-BC8BD2F2-DBAE-556E-AE88-F366C3DA67B8"><p>This product includes
+software developed by the University of California, Berkeley and its contributors. </p> </li>
+</ul> </li>
+<li id="GUID-319ACE40-BD41-5C58-8897-948A2BD0ED9E"><p>Neither the name of
+the University nor the names of its contributors may be used to endorse or
+promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2000 The NetBSD Foundation, Inc. </p> <p>All rights reserved. </p> <p>This
+code is derived from software contributed to The NetBSD Foundation by Dieter
+Baron and Thomas Klausner. </p> <p>Redistribution and use in source and binary
+forms, with or without modification, are permitted provided that the following
+conditions are met: </p> <ol id="GUID-AAAFF783-7FA3-5E92-BE4B-A9B2593BE0A6">
+<li id="GUID-0FA8F01B-6315-518C-8833-D722CDC1A1AE"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-01A84E2D-4BB2-5A27-AE58-DCD69CBF286F"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-A415A750-A7F6-5D35-B879-242C3487D2A8"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement: </p> <ul>
+<li id="GUID-7BB28609-E070-5AF2-9624-0D89EB75AA89"><p>This product includes
+software developed by the NetBSD Foundation, Inc. and its contributors. </p> </li>
+</ul> </li>
+<li id="GUID-5E745E2E-671D-511C-9B69-2172C36FB4DF"><p>Neither the name of
+The NetBSD Foundation nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2001 Mike Barcroft (mike@FreeBSD.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-587F9C41-0106-5971-986E-CE7D3A2D1AB6">
+<li id="GUID-FFCEFE49-C6BE-5518-8043-1D17A8D73441"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-435901E2-6606-5C7B-832B-A6F8A7037108"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>* $FreeBSD:
+src/sys/sys/stdint.h,v 1.4 2002/08/21 16:20:01 mike Exp $ </p> <p>Copyright
+©) 2002 Thomas Moestl (tmm@FreeBSD.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-DE157966-8974-5D74-9F2B-253CFAC01582">
+<li id="GUID-D06A3B99-076A-54F0-ABCD-823943BB9C67"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-C0EE72BC-92CC-565E-8ADC-D56086475543"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>$FreeBSD:
+src/sys/sys/endian.h,v 1.6 2003/10/15 20:05:57 obrien Exp $ </p> <p>Copyright
+©) 1999,2000,2001 Jonathan Lemon (jlemon@FreeBSD.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-65EDD9E2-71F8-5BDD-8BFD-DFCB10A00F4B">
+<li id="GUID-11A12B71-AB6D-5F01-B7EB-BF1E29F8831B"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-FA85CD36-531A-5127-A775-0956B2D9C70B"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>$FreeBSD:
+src/sys/sys/event.h,v 1.32 2005/07/01 16:28:32 ssouhlal Exp $ </p> <p>Copyright
+©) 1997 Peter Wemm (peter@freebsd.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without 6: * modification, are
+permitted provided that the following conditions are met: </p> <ol id="GUID-B90755B0-4663-58CD-9C72-8911CE8C6B24">
+<li id="GUID-7FFCD26B-481E-5106-ACEF-BAE82D5C36B9"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-7EA93995-3D39-5983-B4D6-1ECD138B80AE"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-C0DDAF36-2342-532E-B5DB-C90DA554B40F"><p>The name of the author
+may not be used to endorse or promote products derived from this software
+without specific prior written permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>$FreeBSD:
+src/sys/sys/poll.h,v 1.13 2002/07/10 04:47:25 mike Exp $ </p> <p>Copyright
+©) 2002 Tim J. Robbins </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-8D0E2DE0-79A4-5657-A028-E0AD9AE1649E">
+<li id="GUID-F3385529-B57E-524C-B826-EC7C1FB4186D"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-647A016A-3BC4-5B85-9AAE-F9BE11B45AFA"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1994 SigmaSoft, Th. Lockert (tholo@sigmasoft.com) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-247FDDE3-3A06-52B0-AD4D-18B0C911F276">
+<li id="GUID-FAF92565-E0FE-5DA5-A944-A794BB4F0FE9"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-C8A60E81-C0DD-570D-B12E-FAC8C75EC118"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. The name of the author may not be used to endorse or
+promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright ©) 1998 HD Associates, Inc. </p> <p>All
+rights reserved. </p> <p>Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-472FE3CD-5391-522D-B49E-E68EFDBEC58C">
+<li id="GUID-49F096C4-9125-57A3-8325-523AC71B0DDD"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-E298A582-D218-5C83-BCDD-2ED94F3D67B5"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2002 William C. Fenner. All rights reserved. </p> <p>Redistribution and
+use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-E9D4A609-44BB-52B9-AF5B-7BB0E28C320D">
+<li id="GUID-5F4084D9-4902-5334-8516-6AE8431A2922"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-CA05A4F6-C112-5079-8BB5-9C990F895D60"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright ©) 2001 Jeroen
+Ruigrok van der Werven (asmodai@FreeBSD.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-D25B9988-FD11-5259-A0D4-745367217992">
+<li id="GUID-C7AAFBBC-F606-5E83-964F-06101553903B"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-58583172-5BDA-5C63-8DAD-F5488F7C46EF"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1998 Todd C. Miller (Todd.Miller@courtesan.com) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-854DA816-53FA-5A21-BDE3-D25EA98A6975">
+<li id="GUID-F9BBFDD8-D9EC-5C53-9EED-7096153AFB60"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-6C877962-F325-50EC-BDE3-74C2AA927C51"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-21764F75-9D12-517C-9B57-5EE8E375C371"><p>The name of the author
+may not be used to endorse or promote products derived from this software
+without specific prior written permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1997 Joerg Wunsch </p> <p>All rights reserved. </p> <p>Redistribution and
+use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-BA4B4CEC-F0F3-54DA-B4EA-DDB38ED8B5DC">
+<li id="GUID-35E42F7F-B9F1-5898-B8DA-DFCF10BFFFC7"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-475B04B6-6C91-500D-8E8D-2A6189354E2D"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright ©) 2003 Networks Associates
+Technology, Inc. </p> <p>All rights reserved. </p> <p>This software was developed
+for the FreeBSD Project by Jacques A. Vidrine, Safeport Network Services,
+and Network Associates Laboratories, the Security Research Division of Network
+Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as
+part of the DARPA CHATS research program. </p> <p>Redistribution and use in
+source and binary forms, with or without modification, are permitted provided
+that the following conditions are met: </p> <ol id="GUID-0FB299A4-8D53-55D0-BFAF-FC14B0127918">
+<li id="GUID-625F7088-E902-5515-8138-AD17149F7F97"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-9E24E1E8-D33D-52F8-82D1-40AF46CA1506"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1998 John Birrell (jb@cimlogic.com.au). </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-88552CC8-F53A-5E63-A6DE-F4D4A103D16A">
+<li id="GUID-1E084192-0F3D-5D17-ACF8-ED3488DBDB0B"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-658494B6-C661-5095-9E09-0AB9771F89FC"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-34B63B1E-E581-53F0-88A1-4817E16C0262"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+his product includes software developed by John Birrell. </p> </li>
+<li id="GUID-C6E0D9D9-8D65-50CD-B9E3-8406AAA28A6F"><p>Neither the name of
+the author nor the names of any co-contributors may be used to endorse or
+promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1993, 1994 by Chris Provenzano, proven@mit.edu </p> <p>Copyright ©) 1995-1998
+by John Birrell (jb@cimlogic.com.au) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-9B24BB91-F7F8-54E6-A8FF-7DD2656B3467">
+<li id="GUID-2A96F9A6-DF41-5E10-8C67-9C718C127181"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-D7059535-E541-5C04-B283-B6B3DCA6D963"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-A51CBEBD-6784-5E5A-AA50-F68895D741A8"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed by Chris Provenzano. </p> </li>
+<li id="GUID-5C615EFF-E1A8-5F83-A733-70DC9CE89185"><p>The name of Chris Provenzano
+may not be used to endorse or promote products derived from this software
+without specific prior written permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL CHRIS PROVENZANO BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright ©) 1995 Alex Tatmanjants (alex@elvisti.kiev.ua)
+at Electronni Visti IA, Kiev, Ukraine. </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-781F7435-F59C-5E47-BFE1-44B08A6B57EC">
+<li id="GUID-7FF81732-5685-5873-BE3F-5A951F54E322"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-73F95C0D-214D-54A6-880C-9F6DAC39F0B8"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. </p> <p>$FreeBSD: src/lib/libc/locale/collate.h,v
+1.15 2005/02/27 20:31:13 ru Exp $ </p> <p>Copyright ©) 1995, 1996, 1997, 1998,
+and 1999 WIDE Project. </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-6F322F7E-4634-5AAF-94C1-CBC92DFC2314">
+<li id="GUID-CD414F80-F7CF-5C51-AB83-0977B76652FF"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-71FA6FF9-7E73-599D-9AD4-C4C783DE2840"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-5D7EF1D7-7108-5739-9647-DD04E4C24A6E"><p>Neither the name of
+the project nor the names of its contributors may be used to endorse or promote
+products derived from this software without specific prior written permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2003, Steven G. Kargl </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-5504F2F3-99E1-5143-809E-AEBB71C52CD1">
+<li id="GUID-43A89424-FF79-5081-947B-FC968AB77F11"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-E5A20BFE-A584-5307-8C67-AF2C5CF40AEC"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1997 Brian Cully (shmit@kublai.com) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-55D7E4C0-D26C-5223-AAD4-1086F74EC094">
+<li id="GUID-9B72F1AB-BCE7-5169-A563-A278EF87F1F5"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-3168F417-F6C9-591B-8E1E-214EED4B9897"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-B24BFFF4-08FF-5392-8E81-C00CA60305A1"><p>Neither the name of
+the author nor the names of any co-contributors may be used to endorse or
+promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2003 Michael Telahun Makonnen </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-22476CFB-C796-5292-B85A-F63B11F82DF4">
+<li id="GUID-6145651F-DAD7-5E30-9C25-797E17646A7A"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-FBD85997-7A43-528E-B8EC-C223175A6FE8"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©)2001 Citrus Project </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-412402CE-42DD-5A33-9C7D-C5677B1B58D8">
+<li id="GUID-32436659-7349-53B9-9E38-56856D2D2960"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-0A9737A9-B679-5E35-8EAA-26F8A0C2BC2E"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>© Portions
+copyright ©) 2006 Nokia Corporation and/or its subsidiaries. </p> <p>All rights
+reserved. </p> <p>Copyright ©) 2001, 2003 Alexey Zelkin (phantom@FreeBSD.org) </p> <p>All
+rights reserved. </p> <p>Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-BE7989F6-F130-5736-88F8-AD15943C0717">
+<li id="GUID-FE92DA6E-93D3-5746-B7A7-9AF78E917DA7"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-9BCA1EE9-78A1-5A09-95F7-BCC2668881E8"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>© Portions
+copyright ©) 2006 Nokia Corporation and/or its subsidiaries. </p> <p>All rights
+reserved. </p> <p>Copyright ©) 2000, 2001 Alexey Zelkin (phantom@FreeBSD.org) </p> <p>All
+rights reserved. </p> <p>Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-943F9A83-E6A1-5E9E-B431-F0A7D41597A0">
+<li id="GUID-E7B4AEC5-4A3F-579B-A60A-1670A134DD30"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-8C7E231E-70B7-5022-BF29-F6AE828CA03B"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2003 Mike Barcroft (mike@FreeBSD.org) </p> <p>Copyright ©) 2002 David Schultz
+(das@FreeBSD.ORG) </p> <p>All rights reserved. </p> <p>Redistribution and
+use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-A387002A-F842-5B76-85EF-03BCADB2F420">
+<li id="GUID-8784F4BF-662D-5274-B0F0-CBF9164E0130"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-32AA5D95-790C-5838-B1A6-320BF875DCEA"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2002, 2003 David Schultz (das@FreeBSD.ORG) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-E80986CC-C150-562D-9091-F9E5252407C3">
+<li id="GUID-B52F5A47-E458-585E-9702-0DAB59EFE049"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-7A75EFEB-9B53-5C95-B238-774221AF0410"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2004-2005 David Schultz (das@FreeBSD.ORG) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-2E3E1E49-DEB4-53DC-8E54-1888F46DEFB6">
+<li id="GUID-D272969E-2700-59D2-B2B7-14DC188C4D45"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-8CB27E31-A606-58BB-9CAE-EAD44B35E27B"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©)1999 Citrus Project </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-E1AC076F-747F-5200-9E19-D0D85AF59037">
+<li id="GUID-7C507926-E94B-5B88-9556-0D2D3B8FD6BD"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-D7D2AAE4-F589-50C4-8F24-16757AF017A3"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1997 Berkeley Software Design, Inc. </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-80933DF5-A260-5C34-9A2D-9BC82C947251">
+<li id="GUID-422FFCC0-ACEA-533F-9F6F-5612AE2444AC"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-2CE3C922-478A-5E45-B5F4-E73A4E17A2B6"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-1531F733-733A-565D-89B6-6DFE6D1D2758"><p>Berkeley Software Design
+Inc's name may not be used to endorse or promote products derived from this
+software without specific prior written permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN INC ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL BERKELEY SOFTWARE DESIGN INC BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2001, 2002 Mike Barcroft (mike@FreeBSD.org) </p> <p>Copyright ©) 2001 The
+NetBSD Foundation, Inc. </p> <p>All rights reserved. </p> <p>This code is
+derived from software contributed to The NetBSD Foundation by Klaus Klein.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met: </p> <ol id="GUID-9A9AB7D4-13C0-5332-9879-CDA104145865">
+<li id="GUID-F3224E3A-89E3-57B5-8B1C-649A507DBB00"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-3FE98D58-03ED-5C66-983E-5F4C8563E623"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-DF990E0E-DAEA-5679-AD25-916E986CCD9D"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed by the NetBSD Foundation, Inc. and
+its contributors. </p> </li>
+<li id="GUID-7EBBF330-E561-5902-B9AB-984C950764D2"><p>Neither the name of
+The NetBSD Foundation nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>©
+Portions copyright ©) 2006 Nokia Corporation and/or its subsidiaries. </p> <p>All
+rights reserved. </p> <p>Copyright ©) 2001 Alexey Zelkin (phantom@FreeBSD.org) </p> <p>All
+rights reserved. </p> <p>Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-81C2B8F0-6571-5F05-9B65-F06E83453407">
+<li id="GUID-93538E25-E283-5026-BFF8-95E5EAD29570"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-5A13A87A-235E-528F-97EC-4BDEC50F9397"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2000, 2001 Alexey Zelkin (phantom@FreeBSD.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-1AE05519-AA67-54FC-8EC9-B5288C841778">
+<li id="GUID-D69DD499-9AB3-5A7F-84A3-75E3CA873399"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-6422040F-73C8-5FFE-84AA-388E60044AD2"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2000 Jason Evans (jasone@FreeBSD.org) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-7EB46636-7AFE-54C9-8E17-5D4078D05CE8">
+<li id="GUID-B1511C4D-3735-5273-9371-2F23EC48E678"><p>Redistributions of source
+code must retain the above copyright notice(s), this list of conditions and
+the following disclaimer as the first lines of this file unmodified other
+than the possible addition of one or more copyright notices. </p> </li>
+<li id="GUID-4FFB76C7-BBA2-5103-A152-646E0F851BFF"><p>Redistributions in binary
+form must reproduce the above copyright notice(s), this list of conditions
+and the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright ©) 1995 Frank
+van der Linden </p> <p>All rights reserved. </p> <p>Redistribution and use
+in source and binary forms, with or without modification, are permitted provided
+that the following conditions are met: </p> <ol id="GUID-671A1AD8-746F-5113-9E8A-FF34DEFE27BE">
+<li id="GUID-1F2C7241-945F-50DC-8EA8-8B76DEC8B6EC"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-F7E5DDD0-C41F-575F-9BDA-460A91908227"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-2773150C-9D13-5833-AB6C-C4BCC47A18E1"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed for the NetBSD Project by Frank van
+der Linden </p> </li>
+<li id="GUID-FA1D3BC6-1908-5655-9BD8-C2ED2D5D104A"><p>The name of the author
+may not be used to endorse or promote products derived from this software
+without specific prior written permission </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright ©) 1992, 1993, 1994 Henry Spencer. </p> <p>Copyright
+©) 1992, 1993, 1994 </p> <p>The Regents of the University of California. All
+rights reserved. </p> <p>This code is derived from software contributed to
+Berkeley by Henry Spencer. Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-2E74272B-C1DF-54B7-8E7D-2B53DEDC1757">
+<li id="GUID-5FFFC4CF-7CC3-5301-8D4A-9B7F133EEB7F"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-4039E673-2172-5776-9C4F-F9A6AC3117B9"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-8C68AB0D-2AC1-50B0-B455-5FA8334ACAAA"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed by the University of California,
+Berkeley and its contributors. </p> </li>
+<li id="GUID-58106680-BD93-525F-9D2F-EF475EC294A2"><p>Neither the name of
+the University nor the names of its contributors may be used to endorse or
+promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE </p> <p>Copyright
+©) 1996, 1997 HD Associates, Inc. </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-7322B356-6718-50A5-AB7B-C74BC2BC9EED">
+<li id="GUID-4221F09C-0B06-556A-A229-EDFC0882F6C0"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-3342C6AD-7689-5D52-A3B9-8678F69A3CC0"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-23985A5A-E4F0-52C7-9452-6C047134E2FE"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+his product includes software developed by HD Associates, Inc nd Jukka Antero
+Ukkonen. </p> </li>
+<li id="GUID-2DA15281-2333-5ECE-8BBD-EF4B8A53F143"><p>Neither the name of
+the author nor the names of any co-contributors may be used to endorse or
+promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES AND CONTRIBUTORS ``AS
+IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1995 David Hovemeyer (daveho@infocom.com) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-B60F60A0-48AA-5263-B6FF-74070EC8DD26">
+<li id="GUID-DBDC45D0-EEB1-53F3-8C98-11FF012DDB57"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-D0820F7C-71A4-54EB-BEB2-4428017FA83A"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. </p> <p>© Portions copyright ©) 2005 Nokia Corporation
+and/or its subsidiaries. </p> <p>All rights reserved. </p> <p>Copyright ©)
+2000 Jeroen Ruigrok van der Werven (asmodai@FreeBSD.org) </p> <p>All rights
+reserved. </p> <p>Redistribution and use in source and binary forms, with
+or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-15FA4D45-396A-54D2-9E65-659BCD0C97C3">
+<li id="GUID-F141AA89-828B-57F7-AC0A-1FBF17EDE489"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-9D2C1FD4-C4DB-5447-81E5-BECDA6DAD59F"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1997 Todd C. Miller (Todd.Miller@courtesan.com) </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-8A6D20C4-748E-5F98-89B1-126CF0B1DCAC">
+<li id="GUID-0DC5A5A9-8B62-58B4-9FA8-C06CE23E3E3B"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-923FA9EB-AED4-50E5-98A9-A5FB6C87CBCD"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-28C414F0-8F34-53F4-9879-7C08AD9F8B69"><p>The name of the author
+may not be used to endorse or promote products derived from this software
+without specific prior written permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>©
+Portions copyright ©) 2005-2006 Nokia Corporation and/or its subsidiaries. </p> <p>All
+rights reserved. </p> <p>Copyright ©) 2002 Bob Beck (beck@openbsd.org) </p> <p>Copyright
+©) 2002 Theo de Raadt </p> <p>Copyright ©) 2002 Markus Friedl </p> <p>All
+rights reserved. </p> <p>Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-07C6B034-377D-53DD-8EF7-0856B276EAFB">
+<li id="GUID-2E68DE6B-583C-5D2C-A115-3F646A5C6B8A"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-25F5CD4C-9F37-5D06-818D-D7DE41BC3042"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1997, 1998, 1999 The NetBSD Foundation, Inc. </p> <p>All rights reserved. </p> <p>This
+code is derived from software contributed to The NetBSD Foundation by Luke
+Mewburn. Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met: </p> <ol id="GUID-427BC969-1E3D-515F-AEF6-AEEEB6CDA9A7">
+<li id="GUID-E805F52D-2A6C-554F-A07E-D2B250E9FCA3"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-35521D7C-BEA2-5857-9051-FD01D2D4E4F9"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-E0882086-8FFA-5F5D-84BB-07E94F479759"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed by the NetBSD Foundation, Inc. and
+its contributors. </p> </li>
+<li id="GUID-2EF5E8BA-9FEC-5676-97A0-9D1A4022E78C"><p>Neither the name of
+The NetBSD Foundation nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1999, 2000 The NetBSD Foundation, Inc. </p> <p>All rights reserved. </p> <p>This
+code is derived from software contributed to The NetBSD Foundation by Julian
+Coleman. Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met: </p> <ol id="GUID-6EFB93F2-A67C-550E-BF49-DB9E8B60F589">
+<li id="GUID-702678E7-1D13-5AEC-834D-5C0F3A5DBA65"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-B2D27816-3092-57DF-B749-EC8538C15085"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-E549B12D-D2BC-5E3F-BE48-05F5C097C245"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed by the NetBSD Foundation, Inc. and
+its contributors. </p> </li>
+<li id="GUID-D39668D8-797A-5ABB-B9F1-76562BCB62B6"><p>Neither the name of
+The NetBSD Foundation nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 1997,98 The NetBSD Foundation, Inc. </p> <p>All rights reserved. </p> <p>This
+code is derived from software contributed to The NetBSD Foundation by J.T.
+Conklin. Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met: </p> <ol id="GUID-F0530435-302E-5125-A259-6A34B365F626">
+<li id="GUID-E0D57997-DFEE-5D75-B163-84B8CFA810C6"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-A92C4106-57B9-5CBB-9E53-3E31DEF5777A"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+<li id="GUID-84FEE6FE-EE31-535E-9001-4ADC1EA4AAA9"><p>All advertising materials
+mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed by the NetBSD Foundation, Inc. and
+its contributors. </p> </li>
+<li id="GUID-FF5CBDE6-EFEB-5E5E-ACA1-E4B0FA72F41F"><p>Neither the name of
+The NetBSD Foundation nor the names of its contributors may be used to endorse
+or promote products derived from this software without specific prior written
+permission. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2003 Marcel Moolenaar </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-E809126E-8FFD-52D2-A639-0FDD99D1C515">
+<li id="GUID-0FF46FF3-3FED-5E63-9C2A-34D8B2DFD02C"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-7CB55739-A0AE-5EDF-9C73-1AC53A912B3A"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. $FreeBSD: src/sys/sys/_null.h,v 1.7 2005/01/07
+02:29:23 imp Exp $ </p> <p>Copyright ©) 2004 Poul-Henning Kamp </p> <p>All
+rights reserved. </p> <p>Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-EAEA85EC-2E9F-5336-8390-72075FA134AE">
+<li id="GUID-BCE5260C-FB2C-5633-951E-A86A3D5358F3"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-DFA501FB-B18D-563E-B5A1-2D7FF3F6C5BC"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This file contains
+definitions which pertain to serial ports as such, (both async and sync),
+but which do not necessarily have anything to do with tty processing. $FreeBSD:
+src/sys/sys/serial.h,v 1.2 2004/06/25 10:56:43 phk Exp $ </p> <p>© Portions
+copyright ©) 2005-2006 Nokia Corporation and/or its subsidiaries. </p> <p>All
+rights reserved. </p> <p>Copyright ©) 2003 Poul-Henning Kamp </p> <p>All rights
+reserved. </p> <p>Redistribution and use in source and binary forms, with
+or without modification, are permitted provided that the following conditions
+are met: </p> <ol id="GUID-E86E0C00-1961-53DF-91B8-2918C9E820D0">
+<li id="GUID-6B7A6C84-6E86-52F1-8FF7-AF1E3BC43346"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-EF76B936-2332-5B1E-B509-E58FAD71017A"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2001 Daniel Eischen (deischen@FreeBSD.org). </p> <p>All rights reserved. </p> <p>©
+Portions copyright ©) 2006 Symbian Software Ltd. </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-955D3531-867E-524E-8B16-7F8CCE87117C">
+<li id="GUID-E3142D82-6FF6-5F28-9043-95832B47BD36"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-30F806A9-844F-50A2-9ECE-499B578BCAA7"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>Copyright
+©) 2005 The FreeBSD Project. </p> <p>All rights reserved. </p> <p>Redistribution
+and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met: </p> <ol id="GUID-F99DC81B-4709-539A-B1A7-B6F607FD7E5A">
+<li id="GUID-3AE24FDC-96AF-54A2-A826-1028FD8D086E"><p>Redistributions of source
+code must retain the above copyright notice, this list of conditions and the
+following disclaimer. </p> </li>
+<li id="GUID-E4A7B6E3-B9C7-5EB2-ABA5-B95CB813C5A6"><p>Redistributions in binary
+form must reproduce the above copyright notice, this list of conditions and
+the following disclaimer in the documentation and/or other materials provided
+with the distribution. </p> </li>
+</ol> <p>THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> <p>$FreeBSD:
+src/lib/libc/net/netdb_private.h,v 1.9 2005/05/15 20:15:15 ume Exp $ </p> </section>
+<section id="GUID-69DD6F30-81A6-4891-87B0-AB965693A535"><title>Open SSL</title><p>Copyright
+(C) 1995-1998 Eric Young (eay@cryptsoft.com)</p><p> All rights reserved.</p><p/><p>This
+package is an SSL implementation written</p><p>by Eric Young (eay@cryptsoft.com).</p><p>The
+implementation was written so as to conform with Netscapes SSL.</p><p/><p>This
+library is free for commercial and non-commercial use as long as</p><p>the
+following conditions are aheared to.  The following conditions</p><p>apply
+to all code found in this distribution, be it the RC4, RSA,</p><p>lhash, DES,
+etc., code; not just the SSL code.  The SSL documentation</p><p>included with
+this distribution is covered by the same copyright terms</p><p>except that
+the holder is Tim Hudson (tjh@cryptsoft.com).</p><p/><p>Copyright remains
+Eric Young's, and as such any Copyright notices in</p><p>the code are not
+to be removed.</p><p>If this package is used in a product, Eric Young should
+be given attribution</p><p>as the author of the parts of the library used.</p><p>This
+can be in the form of a textual message at program startup or</p><p>in documentation
+(online or textual) provided with the package.</p><p/><p>Redistribution
+and use in source and binary forms, with or without</p><p>modification, are
+permitted provided that the following conditions</p><p>are met:</p><ol>
+<li id="GUID-5D33B044-F97F-43FF-9550-68B13077876A"><p>Redistributions of source
+code must retain the copyright</p><p>notice, this list of conditions and the
+following disclaimer.</p></li>
+<li id="GUID-11255CA5-8E35-4BCD-A824-42878818CF35"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in the</p><p>documentation and/or other materials
+provided with the distribution.</p></li>
+<li id="GUID-C9E64F4E-D273-4813-B2D7-30CB50805E76"><p>All advertising materials
+mentioning features or use of this software</p><p>must display the following
+acknowledgement:</p><p>"This product includes cryptographic software written
+by     Eric Young (eay@cryptsoft.com)"</p><p>The word 'cryptographic' can
+be left out if the rouines from the library</p><p>being used are not cryptographic
+related :-).</p></li>
+<li id="GUID-F4BE2B76-FBB2-4C32-BA04-F9E1F3F7E69A"><p>If you include any Windows
+specific code (or a derivative thereof) from</p><p>the apps directory (application
+code) you must include an acknowledgement:</p><p>"This product includes software
+written by Tim Hudson (tjh@cryptsoft.com)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND</p><p>ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</p><p>ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</p><p>FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</p><p>DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</p><p>OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</p><p>LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</p><p>OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</p><p>SUCH DAMAGE.</p><p>The
+licence and distribution terms for any publically available version or</p><p>derivative
+of this code cannot be changed.  i.e. this code cannot simply be</p><p>copied
+and put under another distribution licence</p><p>[including the GNU Public
+Licence.]</p><p/><p/><p>Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)</p><p> All
+rights reserved.</p><p/><p>This package is an SSL implementation written</p><p>by
+Eric Young (eay@cryptsoft.com).</p><p>The implementation was written so as
+to conform with Netscapes SSL.</p><p/><p>This library is free for commercial
+and non-commercial use as long as</p><p>the following conditions are aheared
+to.  The following conditions</p><p>apply to all code found in this distribution,
+be it the RC4, RSA,</p><p>lhash, DES, etc., code; not just the SSL code. 
+The SSL documentation</p><p>included with this distribution is covered by
+the same copyright terms</p><p>except that the holder is Tim Hudson (tjh@cryptsoft.com).</p><p/><p>Copyright
+remains Eric Young's, and as such any Copyright notices in</p><p>the code
+are not to be removed.</p><p>If this package is used in a product, Eric Young
+should be given attribution</p><p>as the author of the parts of the library
+used.</p><p>This can be in the form of a textual message at program startup
+or</p><p>in documentation (online or textual) provided with the package.</p><p/><p>Redistribution
+and use in source and binary forms, with or without</p><p>modification, are
+permitted provided that the following conditions</p><p>are met:</p><ol>
+<li id="GUID-40408650-4130-44EE-92F8-8FAD9743006D"><p>Redistributions of source
+code must retain the copyright</p><p>notice, this list of conditions and the
+following disclaimer.</p></li>
+<li id="GUID-AE960500-EF14-4AE8-AB9B-EC8C1529AAB3"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in the</p><p>documentation and/or other materials
+provided with the distribution.</p></li>
+<li id="GUID-43D9F60A-2D43-40F2-AB7F-B98DDA3248D2"><p>All advertising materials
+mentioning features or use of this software</p><p>must display the following
+acknowledgement:</p><p>"This product includes cryptographic software written
+by     Eric Young (eay@cryptsoft.com)"</p><p>The word 'cryptographic' can
+be left out if the rouines from the library</p><p>being used are not cryptographic
+related :-).</p></li>
+<li id="GUID-B11215C8-7330-4D4D-933D-816AF7AE2EA0"><p>If you include any Windows
+specific code (or a derivative thereof) from</p><p>the apps directory (application
+code) you must include an acknowledgement:</p><p>"This product includes software
+written by Tim Hudson (tjh@cryptsoft.com)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND</p><p>ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</p><p>ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</p><p>FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</p><p>DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</p><p>OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</p><p>LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</p><p>OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</p><p>SUCH DAMAGE.</p><p>The
+licence and distribution terms for any publically available version or</p><p>derivative
+of this code cannot be changed.  i.e. this code cannot simply be</p><p>copied
+and put under another distribution licence</p><p>[including the GNU Public
+Licence.]</p><p/><p/><p>/* $LP: LPlib/source/LPdir_unix.c,v 1.11 2004/09/23
+22:07:22 _cvs_levitte Exp $ */</p><p/><p>Copyright (c) 2004, Richard Levitte
+(richard@levitte.org)</p><p>All rights reserved.</p><p/><p>Redistribution
+and use in source and binary forms, with or without</p><p>modification, are
+permitted provided that the following conditions</p><p>are met:</p><ol>
+<li id="GUID-C32367C0-905D-4DB0-BA4A-7B557C160547"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-5BBD414D-C0CC-4BBC-8168-090237BD7EF8"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in the</p><p>documentation and/or other materials
+provided with the distribution.</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</p><p>``AS
+IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</p><p>LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</p><p>A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</p><p>OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</p><p>LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</p><p>DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY</p><p>THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT</p><p>(INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE</p><p>OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.</p><p/><p/><p>Copyright (c) 1998-2002
+The OpenSSL Project.  All rights reserved.</p><p/><p>Redistribution and
+use in source and binary forms, with or without</p><p>modification, are permitted
+provided that the following conditions</p><p>are met:</p><ol>
+<li id="GUID-6FBE4BBC-9CBF-4792-A641-7934B6DE544F"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-3E53B06A-0D86-436E-BDC1-B0434F5771B3"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-C53B53D8-6E64-4D89-B9F5-72D143678A5F"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.openssl.org/)"</p></li>
+<li id="GUID-059C8283-5DC2-4E90-BD6D-CBC2E4F8674F"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>openssl-core@openssl.org.</p></li>
+<li id="GUID-99008E51-3CFE-47AE-9612-3239F698A481"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-35E2493C-9D45-4EA2-8157-6ABF844BB5E9"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.openssl.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 2000 The OpenSSL Project.  All rights
+reserved.</p><p/><p>Redistribution and use in source and binary forms,
+with or without</p><p>modification, are permitted provided that the following
+conditions</p><p>are met:</p><ol>
+<li id="GUID-FEA25C9D-F00C-4059-956B-5CF44DBD0A75"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-62E5657C-8914-4481-8013-74F6ABC9B577"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-BF5D0BA4-12B2-47A8-8600-DE19E0D75237"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"</p></li>
+<li id="GUID-DF64D483-3667-43BD-BF30-741FDC9FD448"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>licensing@OpenSSL.org.</p></li>
+<li id="GUID-CCA2DF92-6ACC-42DA-A768-D21542A66289"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-A77E678D-D779-418A-8EA8-1648000797F6"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.OpenSSL.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 1998-2003 The OpenSSL Project. 
+All rights reserved.</p><p/><p>Redistribution and use in source and binary
+forms, with or without</p><p>modification, are permitted provided that the
+following conditions</p><p>are met:</p><ol>
+<li id="GUID-752414D9-F73C-4B21-B18F-2FAD6C0B5467"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-FB4F02A9-1A10-43F0-A0F7-40763A1EBD4E"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-261678DB-5DDE-4813-9877-89D2E448BD19"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.openssl.org/)"</p></li>
+<li id="GUID-ECB723C8-9FDD-45D2-9D79-1A665B76C4A3"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>openssl-core@openssl.org.</p></li>
+<li id="GUID-A56FFC32-A728-46CD-946B-4BD7082E9A23"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-251DF7A2-924D-4BCB-894C-2638DFF5ADE5"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.openssl.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 1999-2004 The OpenSSL Project. 
+All rights reserved.</p><p/><p>Redistribution and use in source and binary
+forms, with or without</p><p>modification, are permitted provided that the
+following conditions</p><p>are met:</p><ol>
+<li id="GUID-53DC3412-8096-479D-9670-433AB59E22AB"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-1727352B-AADF-474A-9C01-5977E89EF095"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-372D870D-2B15-4BE1-8321-EFB05D2B546D"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"</p></li>
+<li id="GUID-C9F47163-DC2E-4C33-80B2-09F2B1C8669D"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>licensing@openssl.org.</p></li>
+<li id="GUID-2CD84466-7F28-4BBE-A34C-D945EB26CA84"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-3F4BE543-59B8-43E4-B4B8-C6880BA639A9"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.OpenSSL.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 2000 The OpenSSL Project.  All rights
+reserved.</p><p/><p>Redistribution and use in source and binary forms,
+with or without</p><p>modification, are permitted provided that the following
+conditions</p><p>are met:</p><ol>
+<li id="GUID-F1810F5B-934C-462D-8E50-A2EF059C64E2"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-4C259A89-7642-430F-A475-F5A45B7FEC18"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-1FD077DB-9475-47AA-9352-ECF0D37762CD"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"</p></li>
+<li id="GUID-4B31D9FD-4CD9-4C8E-A45C-CAD59CAD36FE"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>licensing@openssl.org.</p></li>
+<li id="GUID-66AC7937-B38E-43DA-80A0-C5111CD75A4C"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-C6ECAC23-F527-4950-B546-913CF6940051"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.OpenSSL.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 1998-2001 The OpenSSL Project. 
+All rights reserved.</p><p/><p>Redistribution and use in source and binary
+forms, with or without</p><p>modification, are permitted provided that the
+following conditions</p><p>are met:</p><ol>
+<li id="GUID-53064956-0C2C-44CE-B304-A51869761D2C"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-5078FED4-BCF0-412C-8E3F-BF5325154B1F"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-5CE8960C-A1B4-479B-A2CB-22D51583441C"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.openssl.org/)"</p></li>
+<li id="GUID-4EB18D01-B1CF-44F5-A99B-6A06D80A19A1"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>openssl-core@openssl.org.</p></li>
+<li id="GUID-2E21F77D-645E-4E1C-83C8-EA3432690193"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-0EEF511E-C233-4536-884F-D1E6F35A8190"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.openssl.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 1999 The OpenSSL Project.  All rights
+reserved.</p><p/><p>Redistribution and use in source and binary forms,
+with or without</p><p>modification, are permitted provided that the following
+conditions</p><p>are met:</p><ol>
+<li id="GUID-99A13BA7-8FCB-4C13-A113-D5FAE14712C0"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-93294C93-3BBA-4A23-9BC6-45EE70C368A0"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-DC4EB0AA-46BD-401E-86E4-EC2B3D78A70E"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"</p></li>
+<li id="GUID-1E6DAA61-B852-4ED5-A888-434606E62761"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>licensing@OpenSSL.org.</p></li>
+<li id="GUID-ED6A69D1-FF67-4D94-AE61-9B9028D2F328"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-695019EF-CF8F-4B3E-B913-A14E9E2D5C58"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.OpenSSL.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p><p/><p/><p>Copyright (c) 1999-2005 The OpenSSL Project. 
+All rights reserved.</p><p/><p>Redistribution and use in source and binary
+forms, with or without</p><p>modification, are permitted provided that the
+following conditions</p><p>are met:</p><ol>
+<li id="GUID-CF266EAD-01B9-4DD9-BDF6-334E88677819"><p>Redistributions of source
+code must retain the above copyright</p><p>notice, this list of conditions
+and the following disclaimer.</p></li>
+<li id="GUID-78E23384-259B-4371-8456-3EE98A894A12"><p>Redistributions in binary
+form must reproduce the above copyright</p><p>notice, this list of conditions
+and the following disclaimer in</p><p>the documentation and/or other materials
+provided with the</p><p>distribution.</p></li>
+<li id="GUID-CC32D97A-3063-400A-A5BE-BE6E23D35C53"><p>All advertising materials
+mentioning features or use of this</p><p>software must display the following
+acknowledgment:</p><p>"This product includes software developed by the OpenSSL
+Project</p><p>for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"</p></li>
+<li id="GUID-700F1CD0-81FF-4325-A90A-D5555DB414A8"><p>The names "OpenSSL Toolkit"
+and "OpenSSL Project" must not be used to</p><p>endorse or promote products
+derived from this software without</p><p>prior written permission. For written
+permission, please contact</p><p>openssl-core@OpenSSL.org.</p></li>
+<li id="GUID-D1E25891-4AE5-45DC-8282-BD6C548E287A"><p>Products derived from
+this software may not be called "OpenSSL"</p><p>nor may "OpenSSL" appear in
+their names without prior written</p><p>permission of the OpenSSL Project.</p></li>
+<li id="GUID-84BE3D73-75D0-492D-8895-AA4D233D92A5"><p>Redistributions of any
+form whatsoever must retain the following</p><p>acknowledgment:</p><p>"This
+product includes software developed by the OpenSSL Project</p><p>for use in
+the OpenSSL Toolkit (http://www.OpenSSL.org/)"</p></li>
+</ol><p>THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY</p><p>EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</p><p>IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</p><p>PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE OpenSSL PROJECT OR</p><p>ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL,</p><p>SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT</p><p>NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES;</p><p>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</p><p>HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</p><p>STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</p><p>ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED</p><p>OF THE POSSIBILITY OF SUCH
+DAMAGE.</p></section>
+<section id="GUID-D1F2B954-C042-465F-B946-CAEAC8BBAF9F"><title>Zlib</title><p>/*--------------------------------------------------------------------</p><p>   (c) Portions copyright (c) 2005-2006 Nokia Corporation.  All rights
+reserved</p><p> *--------------------------------------------------------------------*/</p><p>/*
+zlib.h -- interface of the 'zlib' general purpose compression library</p><p> version
+1.2.3, July 18th, 2005</p><p/><p>Copyright (C) 1995-2005 Jean-loup Gailly
+and Mark Adler</p><p/><p>This software is provided 'as-is', without any
+express or implied</p><p>warranty.  In no event will the authors be held liable
+for any damages</p><p>arising from the use of this software.</p><p/><p>Permission
+is granted to anyone to use this software for any purpose,</p><p>including
+commercial applications, and to alter it and redistribute it</p><p>freely,
+subject to the following restrictions:</p><ol>
+<li id="GUID-6929F42C-BC04-471A-929B-EA3E86B7ADF9"><p>The origin of this software
+must not be misrepresented; you must not</p><p>claim that you wrote the original
+software. If you use this software</p><p>in a product, an acknowledgment in
+the product documentation would be</p><p>appreciated but is not required.</p></li>
+<li id="GUID-DCE639BB-5E13-466A-B7B5-E5F6E69E867E"><p>Altered source versions
+must be plainly marked as such, and must not be</p><p>misrepresented as being
+the original software.</p></li>
+<li id="GUID-442A00C1-DF57-4E51-821C-DD8FF6F26A33"><p>This notice may not
+be removed or altered from any source distribution.</p></li>
+</ol><p>Jean-loup Gailly        Mark Adler</p><p>jloup@gzip.org          madler@alumni.caltech.edu</p></section>
+<section id="GUID-D3AAED73-A09D-55E3-88A4-B882D878102D"><title>Nokia Corporation</title> <p>Copyright
+(c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). </p> <p>All rights
+reserved. </p> <p>This component and the accompanying materials are made available
+under the terms of the License "Symbian Foundation License v1.0" which accompanies
+this distribution, and is available at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4A56B285-790E-5171-88F3-8C40B2AA9699" xml:lang="en"><title>Dynamically loading
+link libraries</title><shortdesc>Topics related to Dynamically loading link libraries.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e154981_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A" xml:lang="en"><title>Showing
+and hiding stylus pop-up menu</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#2aab09ce484efcf807cb1191dbd08062" format="application/java-archive"><codeph>ShowMenu()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref> to show the stylus pop-up menu.</p>
+<p><draft-comment time="2008-05-19T11:33" translate="no">How is the menu dismissed/hidden?
+Automatically after a command has been selected or when the user taps outside
+the menu?</draft-comment></p>
+<p><draft-comment time="2008-05-19T11:35" translate="no">Add sample code on showing and hiding
+the menu here.</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213" xml:lang="en"><title>Spanish
+National Language Support</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Spanish plug-in converters support the Spanish SMS encoding using the <xref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita#GUID-FE94596E-B5BB-51FE-BE38-069840323915/GUID-93B3DDF2-8EB1-5853-9DFD-3ABF42ADCB40">National
+Language Encoding</xref>. </p>
+<p>This section describes the Spanish plug-in converter supported by the Symbian
+Platform and the alphabets supported by the converter. </p>
+<section><title>Introduction</title> <p>The Symbian platform provides <b>Default
+GSM 7 bit &amp; Spanish Single Shift Converter</b> to support Spanish SMS
+encoding. </p> <p>It is identified by <codeph>KCharacterSetIdentifierSpanishSingleSms7Bit</codeph> UID,
+defined in the <filepath>charconv.h</filepath> file. </p> <p> <b>Note</b>:
+Any undefined Unicode character is converted to the GSM replacement character
+(?)<codeph>0x3F</codeph> and an code outside GSM 0x00~0x7F is converted to
+the Unicode replacement character <codeph>0xFFFD</codeph>. </p> </section>
+<section id="GUID-6427C9AB-E248-5FAA-B901-E0C523F90637"><title>Alphabet</title> <p>The
+comparison tables listed below are constructed using the Standard SMS Converter
+as the baseline to provide a better understanding of the character set supported
+by the Spanish converter. The comparison tables help in identifying the character
+set supported by the Spanish converter in comparison with the standard SMS
+converter. </p> <p><xref href="GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213.dita#GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213/GUID-5400B1E1-A541-5916-9A3A-631A8B5DAEBD">Table
+1A Default GSM 7bit &amp; Spanish Single Shift Converter vs. Standard SMS
+Converter – Unicode to GSM Code </xref>  </p> <p><xref href="GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213.dita#GUID-4A9053C2-80ED-5FB7-B07D-E1DC5D965213/GUID-F0ABCFA5-1251-5D3C-8144-849098BE6B2A">Table 1B Default GSM 7bit &amp; Spanish Single Shift Converter vs. Standard
+SMS Converter – GSM Code to Unicode </xref>  </p> <p id="GUID-5400B1E1-A541-5916-9A3A-631A8B5DAEBD"><b>Default
+GSM 7bit &amp; Spanish Single Shift Converter vs. Standard Converter– Unicode
+to GSM Code</b> </p> <p>Table 1A </p> <table id="GUID-F9ACA928-A0DB-567A-B3A7-EA67393AB28C">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b>Default GSM 7bit &amp; Spanish Single Shift converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry/>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>A LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CD </p> </entry>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>A LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>A LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00DA </p> </entry>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>A LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>A LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x1B09 </p> </entry>
+<entry><p>a LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00ED </p> </entry>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>A LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>A LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00FA </p> </entry>
+<entry><p>0x1B75 </p> </entry>
+<entry><p>A LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-F0ABCFA5-1251-5D3C-8144-849098BE6B2A"><b> Default GSM
+7bit &amp; Spanish Single Shift Converter vs. Standard Converter– GSM Code
+to Unicode</b> </p> <p>Table 1B </p> <table id="GUID-B721A597-650E-575E-8450-37FF6366A390">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b>Default GSM 7bit &amp; Spanish Single Shift converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0D </p> </entry>
+<entry><p>0x000D </p> </entry>
+<entry><p>CARRIAGE RETURN </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>A LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x00CD </p> </entry>
+<entry><p>A LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>0x00DA </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x00ED </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x1B75 </p> </entry>
+<entry><p>0x00FA </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>See also</title> <p><xref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita">SMS
+Encodings and Converters Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4A9255D1-42A4-57FA-A4B4-42C552964047.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4A9255D1-42A4-57FA-A4B4-42C552964047" xml:lang="en"><title>XML Framework Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the tasks that you can perform using the XML Framework component:</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F" xml:lang="en"><title>Advanced
+Audio Adaptation Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces you to the Advanced Audio Adaptation Framework
+(A3F) component. </p>
+<section><title>Purpose</title> <p>A3F provides the interface between the
+Symbian platform and the audio processing hardware for all audio functionality.
+A3F is responsible for: </p> <ul>
+<li id="GUID-A2084086-B7AF-53FA-95D6-B4F209686B74"><p>Providing access to
+all audio resources </p> </li>
+<li id="GUID-11DB1466-1010-5FAC-A5A3-2FBB6C609385"><p>Configuring audio hardware </p> </li>
+<li id="GUID-B7AD5DC5-C6F4-55FA-9D2B-DF138FDF8576"><p>Playing and recording
+audio data </p> </li>
+<li id="GUID-C3A15684-26C2-5013-8C1D-05C959B16008"><p>Playing tones. </p> </li>
+</ul> </section>
+<section><title>Required background</title> <p>In order to use A3F, you should
+be familiar with <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound</xref>. </p> </section>
+<section><title>Architectural relationships</title> <p>A3F is a component
+in the Sound Device collection. A3F provides a new standardised implementation
+of DevSound which is configured by default from Symbian OS v9.5 onwards. A3F
+interacts with a specially customised DevSound (configured as optional). </p> <p>Shown
+below is a representation of how A3F interacts with DevSound and other components: </p> <fig id="GUID-D45D43BE-CC91-5A92-B9C4-7E43B3899067">
+<title>              A3F and related components            </title>
+<image href="GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e304617_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Library summary</title> <p>A3F includes the following libraries: </p> <table id="GUID-9A61E505-E46F-5811-9EC3-742AFD7444DE">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Library</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>Audio Component Framework</b>  </p> </entry>
+<entry><p>The Audio Component Framework is responsible for creating audio
+contexts. </p> <p>For more information, see <xref href="GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita">Audio
+Component Framework Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b> Audio Component Library</b>  </p> </entry>
+<entry><p>The Audio Component Library provides runtime control over audio
+streams. </p> <p>For more information, see <xref href="GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB.dita">Audio
+Component Library Overview</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>You can use A3F to play tones, play
+audio and record audio. The following list describes some of the steps involved
+in playing and recording audio: </p> <ul>
+<li id="GUID-E687D6B5-5844-513C-A70A-54671ECB9E2E"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-9027F6F9-F8AB-5A87-A1D3-9A554C014296">Create a new audio context</xref>  </p> </li>
+<li id="GUID-BD2EF59E-DA7B-585C-9F83-4DDB7AAC32DA"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-F4E5DAD7-74D0-5946-98E5-D13C3FDF0F0D"> Apply changes made to the audio processing units in a context</xref>  </p> </li>
+<li id="GUID-B9A47D94-8A0A-51A7-B982-481952597C68"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-14D6294E-64FB-58D9-85F8-FAE2A14367B1">Configure hardware devices, for example, set sampling rate and channels to
+use.</xref>  </p> </li>
+<li id="GUID-87F43B01-8965-5EF6-BE11-C5AE5B8B5573"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-F6BC242F-E977-5A57-B90D-00D8A6AF5BF8">Play buffered audio data</xref>  </p> </li>
+<li id="GUID-509BF8AC-40D1-5378-B133-F0D9A5AE8DD6"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-C91CCA5D-2E5B-58D0-9EEE-B5F6C0095E2A">Record audio data to buffers</xref>  </p> </li>
+<li id="GUID-E9D7E5BF-9561-5CAD-A21F-E8BC38605F82"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-E2FC5EC6-57C0-53BB-9A5F-DC8BDA12E725">Pause audio processing</xref>  </p> </li>
+<li id="GUID-FB41A648-5084-5ADC-A695-22896CB36E62"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-495DC719-47C6-50B0-9A2D-9B00BEBA0E38">Stop playing audio</xref>  </p> </li>
+<li id="GUID-53299A88-3789-5286-80E2-DE479EB852D9"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita#GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC/GUID-93CB9072-728A-598E-AD61-141D7FC9257E">Stop recording audio</xref>. </p> </li>
+</ul> </section>
+<section><title>See also</title> <p><xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita"> DevSound
+Overview</xref>  </p> <p><xref href="GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB.dita">Multimedia
+Framework Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A" xml:lang="en"><title>How to
+use the resizable buffer descriptor - RBuf</title><shortdesc>Use this descriptor to hold a string or binary data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A resizable buffer descriptor is an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> type. Use the
+member functions of the base classes: <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> and <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> to
+change the data in the descriptor. See <xref href="GUID-C85B4EA2-0184-52AF-B097-152E4A023CEF.dita">Abstract
+base descriptor classes</xref>. </p>
+<p>This buffer of the descriptor is put on the heap. The buffer is the place
+where the data is put. This is useful if you do not know the maximum size
+of the data until run time. </p>
+<p>The resizable buffer descriptors are similar to what are called <xref href="GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita">Heap
+descriptors</xref>, or <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> types, but the API provided
+by <codeph>RBuf</codeph> is easier to use. The <codeph>RBuf</codeph> API also
+makes it easier to change the maximum size of the buffer containing the data,
+a task often referred to as reallocating the buffer. </p>
+<p>The general guidelines are: use <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> descriptors to
+contain data that rarely changes; use <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> descriptors
+to contain data that changes frequently. However, in practice, <codeph>RBuf</codeph> types
+are equally suitable for both cases, and you should <i>always consider</i> using
+an <codeph>RBuf</codeph> in preference to an <codeph>HBufC</codeph>. </p>
+<p>For cases where your code uses APIs that return an <codeph>HBufC</codeph> type,
+you can convert this to an <codeph>RBuf</codeph>. In effect, <codeph>RBuf</codeph> can
+act as a wrapper around the <codeph>HBufC</codeph>; access and manipulation
+of the data is then done through the member functions of <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> and
+its base classes <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> and <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>  </p>
+<p>Some key points about resizable buffer descriptors: </p>
+<ul>
+<li id="GUID-C9051973-DFA3-57E6-8AD2-E6E1B49B0A74"><p>For text data, it is
+usual to construct an <codeph>RBuf</codeph> type and allow the appropriate
+variant, either a <xref href="GUID-955061A8-A83E-39E5-8745-8FAC7DEA7BCC.dita"><apiname>RBuf8</apiname></xref> or a <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita"><apiname>RBuf16</apiname></xref> to
+be selected at build time. </p> </li>
+<li id="GUID-93CD2C60-ABB6-5063-8CCA-B63B09139A3F"><p>For binary data, an
+explicit <xref href="GUID-955061A8-A83E-39E5-8745-8FAC7DEA7BCC.dita"><apiname>RBuf8</apiname></xref> is used. </p> </li>
+<li id="GUID-82B1C228-51A3-5FED-9797-206805BD3DA5"><p>It is rare to use an
+explicit <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita"><apiname>RBuf16</apiname></xref>. </p> </li>
+<li id="GUID-2F339945-4741-59A1-AEAA-B405379E25DB"><p>Data can be changed
+through <codeph>RBuf</codeph> as well as replaced using its assignment operators.
+Like all descriptors, <codeph>RBuf</codeph> is derived from: </p> <ul>
+<li id="GUID-7145D7BB-ABCC-5BF8-B367-6D8F9C308AF9"><p>the <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> class,
+through which the data can be manipulated </p> </li>
+<li id="GUID-18DF3A17-15E7-54C7-8E3D-1A968AD46D14"><p>the <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> class,
+through which information about the data (such as its length) can be retrieved. </p> </li>
+</ul> </li>
+<li id="GUID-F2EE3065-3D20-5D2B-9887-2C2181FB0195"><p>You can pass an <codeph>RBuf</codeph> to
+a function that takes a <codeph>TDesC&amp;</codeph> parameter, and a <codeph>TDes&amp;</codeph> parameter. </p> </li>
+<li id="GUID-83C851DA-BC8C-543D-9987-656FA19832C2"><p>Memory that has already
+been allocated by your code can be transferred to an <codeph>RBuf</codeph>.
+This allows any data that may be in that location to be managed through the
+descriptor. </p> </li>
+<li id="GUID-6C6B51EE-486C-5ED1-A343-F6777DB5D130"><p>Ownership of an existing <codeph>HBufC</codeph> can
+be transferred to an <codeph>RBuf</codeph>. This allows the data contained
+within the <codeph>HBufC</codeph> to be managed through the <codeph>RBuf</codeph> API. </p> </li>
+</ul>
+<p>Although the following notes refer to the build independent types, they
+are equally valid for the explicit 8-bit and 16-bit types. </p>
+<ul>
+<li id="GUID-9506E27E-3079-52A9-A993-4DD1DE1BB50B"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-A72C3172-7185-5D87-B4CB-6266AC6146A3">Creating an RBuf</xref>  </p> </li>
+<li id="GUID-C7A121AA-401B-5524-A171-E84352170D71"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-2B23F296-D414-5ABD-82CA-DDCEE2F48459">Re-allocating the memory buffer</xref>  </p> </li>
+<li id="GUID-AC98AE5C-AF3F-5105-BDFF-958D080C92E1"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-A6368F43-9A67-5583-B279-FE68B8CADEC4">Freeing the memory buffer</xref>  </p> </li>
+<li id="GUID-883D98FB-E588-5BCB-A0C0-A64465BFDDA7"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-7ECF515D-D538-5F6C-B2A0-88C1B4E3505C">Cleanup rules</xref>  </p> </li>
+<li id="GUID-94E02925-DDB7-5C8E-9B5B-E98DA78D65D4"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-6732B0A9-4E6E-50A8-9C4F-ADB2BB8FBAEF">Replacing and modifying data</xref>  </p> </li>
+</ul>
+<section id="GUID-A72C3172-7185-5D87-B4CB-6266AC6146A3"><title>Creating an
+RBuf</title> <p>An <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> object behaves like a handle to
+a resource. In this case, the resource is the buffer that contains the data.
+While this might seem to be an implementation issue, you need to understand
+that much of the interface provided by the <codeph>RBuf</codeph> class itself
+is involved in allocating, freeing and resizing this buffer. </p> <p>An <codeph>RBuf</codeph> object
+can: </p> <ul>
+<li id="GUID-38116609-9E75-57B4-9F34-FEC8AD3AA285"><p>be placed on the program
+stack. </p> </li>
+<li id="GUID-FD4007BC-6EA8-5DC0-B61E-59B2BA17B5C2"><p>be a member of another
+'C' type class. </p> </li>
+</ul> <p>An <codeph>RBuf</codeph> object cannot be a member of a 'T' type
+class. </p> <p>See also <xref href="GUID-2458916B-55B2-5E08-A825-4EBDB3503E67.dita">Class
+types</xref>. </p> <p>The default constructor does not allocate a buffer,
+and means that, by default, the object represents no data. In descriptor terminology,
+its length is zero and its maximum length is zero. </p> <p>Before an <codeph>RBuf</codeph> can
+hold any data, you need to create the buffer. </p> <ul>
+<li id="GUID-8BD20341-B902-5BD2-B121-3596432F4CC9"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-A15FC714-C2D3-51F9-A336-4043F9F6DA1C">Simple construction</xref>  </p> </li>
+<li id="GUID-7EFD2DA7-C50D-54E8-9343-FC26F07387CD"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-82460E76-D738-51BD-AC7F-29C2CA54C597">More advanced construction</xref>  </p> </li>
+<li id="GUID-3A9847B8-8741-5543-B5B2-D7FEB1EB3C4A"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-19A5BFF9-0B7E-54C1-BC27-2F69B65FAC47">Creating an RBuf from an existing descriptor</xref>  </p> </li>
+<li id="GUID-BDE8E0A0-0FF6-5BF2-B276-9B9750DDA383"><p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-2C934B0F-97D7-5118-A6C4-7CE375F6E0F7">Creating an RBuf by transferring ownership of a pre-existing buffer</xref>  </p> </li>
+</ul> <p id="GUID-A15FC714-C2D3-51F9-A336-4043F9F6DA1C"><b>Simple construction</b> </p> <p>The
+simplest way to create the buffer is to use the <codeph>Create()</codeph> or
+the <codeph>CreateL()</codeph> member functions of <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> [See <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita#GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74/GUID-E5E4895B-4BA2-3EB1-AB7E-D676374F12E2"><apiname>RBuf16::Create()</apiname></xref> and <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita#GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74/GUID-AE30A4E2-0F85-32F3-A4A7-3A8FF8A5B856"><apiname>RBuf16::CreateL()</apiname></xref>]. </p> <p>For example, the following code fragment constructs a resizable
+buffer descriptor that can hold up to 15 data items. In descriptor terminology,
+this means that the maximum length is set to 15. The current length of the
+descriptor is set to zero, i.e. it contains no data. </p> <codeblock id="GUID-CA817431-E554-5BBA-994F-BDE6FD30B802" xml:space="preserve">RBuf buf;
+...
+buf.CreateL(15);
+...</codeblock> <p>Note that <codeph>CreateL()</codeph> is similar to <codeph>Create()</codeph>,
+but leaves if memory cannot be allocated. </p> <p id="GUID-82460E76-D738-51BD-AC7F-29C2CA54C597"><b>More advanced construction</b> </p> <p>A
+variation on the simple creation technique is to use the <codeph>CreateMax()</codeph> or
+the <codeph>CreateMaxL()</codeph> member functions of <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> [See <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita#GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74/GUID-E5E4895B-4BA2-3EB1-AB7E-D676374F12E2"><apiname>RBuf16::Create()</apiname></xref> and <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita#GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74/GUID-AE30A4E2-0F85-32F3-A4A7-3A8FF8A5B856"><apiname>RBuf16::CreateL()</apiname></xref>]. </p> <p>These functions not only allocate the buffer, but set the current
+length of the data to be the same as the maximum length. For example: </p> <codeblock id="GUID-C2FA200E-5D22-5A6D-B192-04B83509D9ED" xml:space="preserve">RBuf buf;
+...
+buf.CreateMaxL(15);
+...</codeblock> <p>No data has been assigned to the descriptor, and in effect
+it contains "arbitrary" data. However, this can be useful in cases where the
+descriptor needs to have a current length before calling another function.
+For example, you might want a buffer of 16 bytes initialised to binary zeroes: </p> <codeblock id="GUID-C0B7F0CA-A5D9-5E9E-8DEE-C8BB983B5D4F" xml:space="preserve">RBuf8 buf;
+...
+buf.CreateMaxL(15);
+buf.Fillz();
+...</codeblock> <p> <codeph>FillZ()</codeph> provided by the <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref> base
+class, sets the data to binary zeroes for the length of the descriptor, 15
+bytes in this example. Note that we have explicitly used the 8-bit variant
+here. </p> <p>There are other ways of achieving this, but this is an economical
+technique. </p> <p id="GUID-19A5BFF9-0B7E-54C1-BC27-2F69B65FAC47"><b>Creating an RBuf from an
+existing descriptor</b> </p> <p>A common requirement is to create an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> and
+to copy the data from an existing descriptor of any type. <codeph>RBuf</codeph> provides
+variants of <codeph>Create()</codeph> and <codeph>CreateL()</codeph> to do
+this. </p> <p>In the following code fragment, a <xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf</apiname></xref> descriptor
+is passed to a function, which then passes it to this <codeph>CreateL()</codeph> variant.
+The source descriptor has a maximum length of 15, which means that the <codeph>RBuf</codeph> buffer
+is allocated so that the <codeph>RBuf</codeph> maximum length is also 15. </p> <p>The
+content of the source descriptor is copied into the <codeph>RBuf</codeph>,
+and the length of the <codeph>RBuf</codeph> (i.e. the length of data that
+the descriptor represents) is set to be the same as that of the source descriptor
+- in this case 11. </p> <codeblock id="GUID-4961B664-D22A-5086-97B4-C52E8EB96101" xml:space="preserve">_LIT(KSampleText,"Hello World");
+...
+TBuf&lt;15&gt; sampletext(KSampleText);
+FuncL(sampletext);
+...
+void FuncL(TDesC&amp; aSource)
+    {
+    RBuf buf;
+
+    buf.CreateL(aSource);
+    ...
+    }
+</codeblock> <p>The following code fragment constructs a resizable buffer
+descriptor and copies data from a source descriptor. The length of data copied
+is limited by the value of the second parameter. If this is less than the
+length of the source descriptor, then only this length of data is copied.
+The buffer allocated is large enough to contain data of length specified by
+this second parameter. </p> <p>This is often used in cases where the length
+of the source data is not easily predictable, and it is important to limit
+the size of the <codeph>RBuf</codeph> buffer created. </p> <p>There are two
+possibilities in this code fragment : </p> <ul>
+<li id="GUID-90C4F9FE-BE4B-52B1-96F6-89803743D065"><p>if the length of <codeph>aSource</codeph> is
+20, then the maximum length of <codeph>buf</codeph> is limited to 10, only
+half the data in <codeph>aSource</codeph> is copied, and the length of <codeph>buf</codeph> is
+set to 10. </p> </li>
+<li id="GUID-1FF37B48-27C9-5B60-8443-46633F609548"><p>if the length of <codeph>aSource</codeph> is
+8, then the maximum length of <codeph>buf</codeph> is still set to 10; all
+8 items are copied, and the length of <codeph>buf</codeph> is set to 8. </p> </li>
+</ul> <codeblock id="GUID-A7309735-947B-57AF-9EA3-F2721EBFDDBD" xml:space="preserve">void FuncL(TDesC&amp; aSource)
+    {
+    RBuf buf;
+    ...
+    buf.CreateL(aSource,10);
+    ...
+    }
+</codeblock> <p id="GUID-2C934B0F-97D7-5118-A6C4-7CE375F6E0F7"><b>Creating an RBuf by transferring
+ownership of a pre-existing buffer</b> </p> <p>An important technique is to
+create an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> and transfer ownership of existing allocated
+memory to it. This allows any data in that block of memory to be managed through
+the <codeph>RBuf</codeph>. </p> <p>There are three main cases to consider: </p> <ul>
+<li id="GUID-E5C30864-1E72-54EC-B321-3A5F27D5A590"><p>transferring ownership
+of a preexisting heap descriptor, an <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> type. </p> </li>
+<li id="GUID-9E7CC922-7B86-5044-A5D7-CFCB76617312"><p>transferring ownership
+of allocated memory </p> </li>
+<li id="GUID-45EDF081-0E89-50EE-96D7-4E2FF28993B3"><p>transferring ownership
+of the buffer owned by a different <codeph>RBuf</codeph>. </p> </li>
+</ul> <p id="GUID-11BEB9E8-CE72-5DF8-869E-2C2FF9E43A35"><b> Transferring ownership
+of an HBufC</b> </p> <p>This is a mechanism you would use if an existing API
+returned an <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>, and you wanted to deal with its data
+through an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> instead. </p> <p>The following code fragment
+shows how this could be done. Note that the <codeph>HBufC</codeph> pointer
+is passed to the <codeph>RBuf</codeph> constructor. </p> <p>Following construction,
+ownership of the heap descriptor has been passed to the <codeph>RBuf</codeph> object.
+In descriptor terminology, the maximum length of the <codeph>RBuf</codeph> is
+15, and its length is 11, reflecting the state of the original <codeph>HBufC</codeph> object. </p> <p>You
+can now manipulate any data that may have been assigned to the original <codeph>HBufC</codeph>,
+through the functions in the <codeph>RBuf</codeph> base classes. </p> <codeblock id="GUID-C5351B54-85D9-5E98-A781-F9B00A06A87D" xml:space="preserve">HBufC* hptr;
+_LIT(KSampleText,"Hello World");
+...
+hptr = HBufC::NewL(15);    // Creates a heap descriptor which can hold up
+...                        // to 15 data items. The current length is zero.
+*hptr = KSampleText;     // Assigns some data to the heap descriptor.
+...                        // The current length of the heap descriptor is now 11.
+RBuf buf(hptr);            // Ownership of the heap descriptor is passed
+...                        // to the RBuf during construction of the RBuf.
+</codeblock> <p>There is an alternative technique that allows you to assign
+ownership of the <codeph>HBufC</codeph>  <i>after</i> construction of the <codeph>RBuf</codeph> using
+the <codeph>Assign()</codeph> function. This allows you to reuse the same <codeph>RBuf</codeph> object.
+For example: </p> <codeblock id="GUID-DE70696E-3E46-5377-8A10-6141BF58DB1B" xml:space="preserve">HBufC* hptr;
+_LIT(KSampleText,"Hello World");
+...
+hptr = HBufC::NewL(15);    // Creates a heap descriptor which can hold up
+...                        // to 15 data items. The current length is zero.
+*hptr = KSampleText;     // Assigns some data to the heap descriptor.
+...                        // The current length of the heap descriptor is now 11.
+RBuf buf;
+...
+buf.Assign(hptr);        // Ownership of the heap descriptor is passed
+...                        // to the RBuf after construction of the RBuf.
+</codeblock> <p>Once ownership has been transferred, you must not access the
+data through the original <codeph>HBufC</codeph> pointer. </p> <p>There is
+no mechanism for reversing the transfer of ownership. The freeing of the buffer
+can only be done through the <codeph>RBuf</codeph>. See <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita#GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A/GUID-A6368F43-9A67-5583-B279-FE68B8CADEC4">Freeing the buffer</xref>. </p> <p><b>Transferring
+ownership of allocated memory</b> </p> <p>In the following code fragment, <codeph>ptr</codeph> is
+assumed to contain the address of memory previously allocated. The code fragment
+shows how ownership of this memory can be transferred to the <codeph>RBuf</codeph>. </p> <codeblock id="GUID-B9FCCFE5-A448-598A-A1F2-DAEB1563274D" xml:space="preserve">TUint16* ptr;
+TInt length(32);
+...                // Assume memory of length 32 has been allocated
+                // and its address stored in ptr.
+
+RBuf buf;
+...
+buf.Assign(ptr,length);
+...                // The memory passed to the descriptor becomes the
+                // descriptor's buffer. In descriptor terminology,
+                // the maximum length of the RBuf is 32; its length
+                // is zero, meaning that the descriptor represents
+                // no data.
+</codeblock> <p><b> Transferring
+ownership of the buffer owned by a different RBuf</b> </p> <p>In the following
+code fragment, an <codeph>RBuf</codeph> is created, a buffer created for it,
+and then ownership is transferred to another <codeph>RBuf</codeph>. </p> <codeblock id="GUID-4A96EC93-A868-5463-8FED-E849BF0B7A00" xml:space="preserve">RBuf bufSource;
+RBuf bufTarget;
+...
+bufSource.CreateL(15);    // Creates memory buffer for the descriptor
+                        // that can hold up to 15 data items. In descriptor
+                        // terminology, the maximum length is set to 15 and
+                        // the current length is set to 0.
+
+bufTarget.Assign(bufSource); // Transfers ownership of the memory buffer
+                             // to the bufTarget descriptor.
+...</codeblock> </section>
+<section id="GUID-2B23F296-D414-5ABD-82CA-DDCEE2F48459"><title>Re-allocating
+the memory buffer</title> <p>You can change the size of the memory buffer,
+by using the <codeph>ReAlloc()</codeph> or <codeph>ReAllocL()</codeph> member
+functions of <codeph>RBuf</codeph>. </p> <p>It does not matter how the original
+buffer was allocated, whether directly via <codeph>Create()</codeph>, <codeph>CreateL()</codeph>, <codeph>CreateMax()</codeph> or <codeph>CReateMaxL()</codeph>, or by transfer of ownership of an existing buffer (and this includes transfer
+from an <codeph>HBufC</codeph>). You do this if you intend to increase (or
+significantly decrease) the amount of data that the descriptor is to represent.
+Remember that the amount of memory allocated to the buffer is not automatically
+changed in response to changes in the amount of data. </p> <p>In the following
+code fragment, an <codeph>RBuf</codeph> is created by copying from an existing
+descriptor. It is then reallocated so that its maximum length is doubled.
+Error conditions, such as out-of-memory conditions are ignored. </p> <codeblock id="GUID-198E0563-2A7E-52B1-A46E-8A1AD5263234" xml:space="preserve">_LIT(KSampleText,"Hello World");
+...
+TBuf&lt;15&gt; sampletext(KSampleText);
+FuncL(sampletext);
+...
+void FuncL(TDesC&amp; aSource)
+    {
+    RBuf buf;
+    Tint max;
+
+    buf.CreateL(aSource);    // max size is 15, length is 11.
+    max = buf.MaxLength() * 2;    
+    buf.ReallocL(max);        // max size is now 30, but length is still 11.
+    ...
+    }
+</codeblock> </section>
+<section id="GUID-A6368F43-9A67-5583-B279-FE68B8CADEC4"><title>Freeing the
+buffer</title> <p>You can free the memory buffer by calling <codeph>ReAlloc()</codeph> or <codeph>ReAllocL()</codeph> and
+passing a zero value. </p> <codeblock id="GUID-DCC63874-8DAF-530A-9BA4-F7559E773BEC" xml:space="preserve">_LIT(KSampleText,"Hello World");
+...
+TBuf&lt;15&gt; sampletext(KSampleText);
+FuncL(sampletext);
+...
+void FuncL(TDesC&amp; aSource)
+    {
+    RBuf buf;
+
+    buf.CreateL(aSource);    // max size is 15, length is 11.
+    buf.ReallocL(0);        // max size is now 0, length is 0, the memory
+                            // buffer has been freed, and data
+                            // has been thrown away.
+    ...
+    }
+</codeblock> <p>You can also use the <codeph>Close()</codeph> member function
+of <codeph>RBuf</codeph>. For example: </p> <codeblock id="GUID-2D298A5F-FFB4-584C-9D9C-58A95A88E078" xml:space="preserve">_LIT(KSampleText,"Hello World");
+...
+TBuf&lt;15&gt; sampletext(KSampleText);
+FuncL(sampletext);
+...
+void FuncL(TDesC&amp; aSource)
+    {
+    RBuf buf;
+
+    buf.CreateL(aSource);    // max size is 15, length is 11.
+    buf.Close();            // max size is now 0, length is 0, the memory
+                            // buffer has been freed, and data
+                            // has been thrown away.
+    ...
+    }
+</codeblock> </section>
+<section id="GUID-7ECF515D-D538-5F6C-B2A0-88C1B4E3505C"><title>Cleanup rules</title> <ul>
+<li id="GUID-38476044-1EB5-5488-93A0-CB2C7D2D38B4"><p>To avoid memory leaks
+when the <codeph>RBuf</codeph> object is placed on the stack, you should use
+the following programming pattern: </p> <codeblock id="GUID-1B602EF6-BAAC-5F4F-AFF2-B8C2102687D5" xml:space="preserve">{
+RBuf buf;
+buf.CleanupClosePushL();
+...                                 // Use the RBuf
+CleanupStack::PopAndDestroy()    //remove from cleanup stack
+                                // and free the buffer to avoid memory 
+}</codeblock> <p>The <codeph>CleanupClosePushL()</codeph> function puts a
+cleanup item onto the cleanup stack. The effect of this is to cause the class's <xref href="GUID-01D2AF56-21E1-3FF3-BF86-0C356A1658EF.dita"><apiname>Close()</apiname></xref> function
+to be called in the event of a leave occurring. In its turn, <codeph>Close()</codeph> simply
+frees off the buffer. </p> </li>
+<li id="GUID-E285FB76-1079-5F34-8CC5-CE1A5AC39E70"><p>If an <codeph>RBuf</codeph> is
+a member of a class, then that class's destructor must remember to call either
+: <codeph>ReAllocL(0)</codeph> or <codeph>Close()</codeph>. </p> </li>
+<li id="GUID-4B09CAD1-6E16-5FB6-9574-277CE75A48C7"><p>An <codeph>RBuf</codeph> can
+be reused, but you must remember to call either : <codeph>ReAllocL(0)</codeph> or <codeph>Close()</codeph> before
+you assign other memory or another <codeph>HBufC</codeph>. Failure to do this
+will result in a memory leak. </p> </li>
+<li id="GUID-433E518F-A96F-5EB8-A2BF-DC4D213A2CF0"><p>You should not use an <codeph>RBuf</codeph> as
+a member of a 'T' type class. See <xref href="GUID-2458916B-55B2-5E08-A825-4EBDB3503E67.dita">Class
+types</xref>. </p> </li>
+</ul> </section>
+<section id="GUID-6732B0A9-4E6E-50A8-9C4F-ADB2BB8FBAEF"><title>Replacing and
+modifying data</title> <p>Data in an <codeph>RBuf</codeph> descriptor can
+be replaced. It can also be modified using the standard functionality provided
+by the <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> base class. </p> <codeblock id="GUID-A507DCDF-F440-51B0-B6CE-86993FE5D7AB" xml:space="preserve">_LIT(KSampleText,"Hello World");
+...
+TBuf&lt;15&gt; sampletext(KSampleText);
+FuncL(sampletext);
+...
+void FuncL(TDesC&amp; aSource)
+    {
+    RBuf buf;
+
+    buf.CreateL(aSource.MaxLength());    // Create the RBuf.
+    buf = aSource;                        // Copy "Hello World" using the assignment
+                                        // operator.
+
+    buf.Delete(1,1);                    // Delete the 1st character.
+    ...
+    buf.Close();
+    }
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4ACEA6B0-CA7C-5751-A1B6-283287552A31.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4ACEA6B0-CA7C-5751-A1B6-283287552A31" xml:lang="en"><title>HTTP
+Whole Message Filter Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-F92DE930-90BF-4292-8832-02BA1309E09D"><title>Purpose</title> <p>The HTTP Whole Message Filter APIs makes
+it easier for mobile browser developers to meet the needs of the mobile network
+operators who support specific Web Accelerators. This results in a faster
+and much improved Web browsing experience. </p> </section>
+<section id="GUID-63F035E3-36B3-494C-95A3-33956B54E1E9"><title>Required background</title> <p>Users of this API must be familiar
+with the HTTP Transport Framework and the Web Acceleration protocol to be
+implemented. </p> </section>
+<section id="GUID-DC4C88D2-34BF-4704-ACED-DEAFACA6859C"><title>Key concepts</title> <p>The following are the key concepts
+that are associated with HTTP Whole Message Filter APIs: </p> <dl>
+<dlentry>
+<dt>HTTP Whole Message Filter APIs</dt>
+<dd><p>Enables you to insert a filter into an HTTP session or an individual
+transaction when the complete message is formed and before the message is
+being dispatched. The APIs also operate on incoming HTTP responses before
+the actual parsing of the HTTP response happens. The use of the HTTP Whole
+Message Filter APIs enable you to achieve Web Acceleration on Symbian platform
+based mobile browser applications. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Web Acceleration</dt>
+<dd><p>The process of optimising the HTTP data to enhance the speed at which
+data is transferred over the mobile network. Web Acceleration is achieved
+by the use of encoding and decoding mechanisms supported by the HTTP Whole
+Message Filter APIs. The HTTP Whole Message Filter APIs are included as part
+of the HTTP Protocol Handler in the HTTP Transport Framework. </p> </dd>
+</dlentry>
+<dlentry>
+<dt> Encoding mechanism</dt>
+<dd><p>This mechanism converts the HTTP request data to a network optimisation
+protocol format before it is sent across the TCP connection. </p> </dd>
+</dlentry>
+<dlentry>
+<dt> Decoding mechanism</dt>
+<dd><p>This mechanism converts the HTTP response data in the network optimisation
+protocol format back to the standard HTTP response data format. </p> </dd>
+</dlentry>
+</dl> </section>
+<section id="GUID-46189E5D-A350-40E0-AC0D-37BA69D211A6"><title>API Summary</title> <p>The following table lists the HTTP
+Whole Message Filter APIs that are included in the HTTP Transport Framework
+to enable Web Acceleration support on a Symbian platform based mobile browser
+application: </p> <table id="GUID-41857A21-0437-5FC8-9844-83861501B6D1">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>API</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MHTTPDataOptimiser</codeph>  </p> </entry>
+<entry><p>An interface that can be derived to implement custom encoding and
+decoding mechanisms. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Functions included in the MHTTPDataOptimiser interface </b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EncodeL(…) </codeph>  </p> </entry>
+<entry><p>Converts the HTTP request data to a network optimisation protocol
+format. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> DecodeL(…) </codeph>  </p> </entry>
+<entry><p>Converts the HTTP response data in the network optimisation protocol
+format back to the standard HTTP response data format. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Functions included in the RHTTPSession class </b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RHTTPSession::SetupHTTPDataOptimiser                  
+(MHTTPDataOptimiser&amp; aHTTPOmtimiser);</codeph>  </p> </entry>
+<entry><p>Sets the <codeph>MHTTPDataOptimiser</codeph> reference for the session
+object. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MHTTPDataOptimiser* RHTTPSession::HTTPDataOptimiser   
+               ();</codeph>  </p> </entry>
+<entry><p>Returns a pointer to the <codeph>MHTTPDataOptimiser</codeph> implementation
+object. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Functions included in the RHTTPTransaction class </b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RHTTPTransaction::SetupHTTPDataOptimiser              
+    (MHTTPDataOptimiser&amp; aHTTPOmtimiser);</codeph>  </p> </entry>
+<entry><p>Sets the <codeph>MHTTPDataOptimiser</codeph> reference for the transaction
+object. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MHTTPDataOptimiser* RHTTPTransaction::HTTPDataOptimiser
+                  ();</codeph>  </p> </entry>
+<entry><p>Returns a pointer to the <codeph>MHTTPDataOptimiser</codeph> implementation
+object. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita"><linktext>How to Use
+the HTTP                 Whole Message Filter APIs</linktext></link>
+<link href="GUID-B4A54501-4AA4-5ACB-96D7-4427C7752639.dita"><linktext>Using HTTP
+Client</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276" xml:lang="en"><title>Differences
+between OSS and Symbian GLib</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The three areas of difference between the way GLib is implemented in Symbian
+platform and in OSS are as follows: </p>
+<ul>
+<li><p>Memory allocation</p></li>
+<li><p>Spawn APIs</p></li>
+<li><p>Libgmodule APIs </p></li>
+</ul>
+<section id="GUID-DFAD39D6-BA92-4293-B5EC-97077CE1FC1A-GENID-1-6-1-10-1-1-7-1-6-1-4-1-3-3">       <title>Memory
+allocation</title>       <p>The Symbian GLib implementation does not follow
+the default OSS behavior. The default OSS behavior is such that in the event
+of a memory allocation failure the application, using <codeph>g_malloc()</codeph> and
+not <codeph>g_try_malloc()</codeph>, will call <codeph>abort()</codeph> and
+thus terminate the application.  </p><p>The Symbian implementation, on the
+other hand will return NULL and not terminate the application in the event
+of a memory allocation failure. Thus, it is the application’s responsibility
+to check if the memory allocation failed due to the needed tasks.</p><p>Generally,
+all the application code written using GLib does not perform memory allocation
+failure checks. Hence, for Symbian GLib it is the application programmer's
+responsibility to check for memory allocation failures.  </p>     </section>
+<section id="GUID-DFAD39D6-BA92-4293-B5EC-97077CE1FC1A-GENID-1-6-1-10-1-1-7-1-6-1-4-1-3-4">       <title>Spawn
+APIs</title>       <p>GLib has a set of APIs for process spawning. Since Symbian
+platform does not support the <codeph>fork()</codeph> and <codeph>exec()</codeph> APIs,
+the <codeph>g_spawn*</codeph> APIs have limitations in their functionality.
+The limitations are explained per API in detail below.</p><p><b><codeph>g_spawn_async_with_pipes</codeph></b></p><p>The
+signature of this API is:</p><codeblock xml:space="preserve">gboolean g_spawn_async_with_pipes (
+    const gchar *working_directoy,
+    gchar **argv,
+    gchar **envp,
+    GSpawnFlags flags, 			
+    GSpawnChildSetupFunc child_setup, 			
+    gpointer user_data, 			
+    GPid *child_pid, 			
+    gint  *standard_input, 			
+    gint *standard_output, 			
+    gint *standard_error, 			
+    GError **error); </codeblock><p>This API executes the program asynchronously:
+that is, the caller does not block for the spawned process to complete. The
+setting of the following parameters does not have any effect in Symbian GLib:</p><ul>
+<li><p><codeph>working_directory</codeph></p></li>
+<li><p><codeph>envp</codeph></p></li>
+</ul><p>If a value other than NULL is passed for <codeph>standard_input</codeph>, <codeph>standard_ouput</codeph>,
+or <codeph>standard_error</codeph>, the value at the location is set to -1.</p><p><b><codeph>g_spawn_async</codeph></b></p><p>The
+signature of the API is:</p><codeblock xml:space="preserve">gboolean g_spawn_async (
+    const gchar *working_directory, 	 	  
+    gchar **argv, 		  
+    gchar **envp, 		  
+    GSpawnFlags flags, 		  
+    GSpawnChildSetupFunc child_setup, 		  
+    gpointer user_data, 		  
+    GPid *child_pid, 		  
+    GError **error); </codeblock><p>This API calls <codeph>g_spawn_async_with_pipes</codeph> without
+any pipes. The setting of the following parameters does not have any effect
+in Symbian GLib:</p><ul>
+<li><p><codeph>working_directory</codeph></p></li>
+<li><p><codeph>envp</codeph></p></li>
+</ul><p><b><codeph>g_spawn_sync</codeph></b></p><p>The signature of the API
+is:</p><codeblock xml:space="preserve">gboolean g_spawn_sync(
+    const gchar *working_directory, 	 	
+    gchar **argv, 		
+    gchar **envp, 		
+    GSpawnFlags flags, 		
+    GSpawnChildSetupFunc child_setup, 		
+    gpointer user_data, 		
+    gchar **standard_output, 		
+    gchar **standard_error, 		
+    gint *exit_status, 		
+    GError **error); </codeblock><p>This API executes the program synchronously:
+that is, the calling process waits for the spawned process to complete before
+returning. The setting of the following parameters does not have any effect
+on Symbian GLib:  </p><ul>
+<li><p><codeph>working_directory</codeph></p></li>
+<li><p><codeph>envp</codeph></p></li>
+</ul><p>If a value other than NULL is passed for<codeph> standard_output</codeph> or <codeph>standard_error</codeph>,
+the value at the location is set to -1. </p><p><b><codeph>g_spawn_command_line_sync</codeph></b></p><p>The
+signature of the API is:</p><codeblock xml:space="preserve">gboolean g_spawn_command_line_sync(
+    const gchar *command_line, 
+    gchar **standard_output, 
+    gchar **standard_error, 
+    gint *exit_status, 
+    GError **error);  </codeblock><p>This API is a simple version of <codeph>g_spawn_sync</codeph> in
+which there are fewer number of parameters involved, and it takes a command
+line instead.</p><p>If a value other than NULL is passed for <codeph>standard_output</codeph> or <codeph>standard_error</codeph>,
+the value at the location is set to -1.</p><p>In many spawn APIs a variable
+of type <codeph>GSpawnFlags</codeph> is passed. The following flags have no
+effect:</p><ul>
+<li><p><codeph>G_SPAWN_LEAVE_DESCRIPTORS_OPEN</codeph></p></li>
+<li><p><codeph>G_SPAWN_STDOUT_TO_DEV_NULL</codeph></p></li>
+<li><p><codeph>G_SPAWN_STDERR_TO_DEV_NULL</codeph></p></li>
+<li><p><codeph>G_SPAWN_CHILD_INHERITS_STDIN</codeph></p></li>
+</ul>     </section>
+<section id="GUID-4B68F695-1BDB-4AA0-B77A-7F808A157E7A"><title>Libgmodule
+APIs</title><p>Libgmodule has APIs that provide a portable method for dynamically
+loading 'plug-ins' or, in other words, DLLs. There are some deviations in
+the <codeph>libgmodule</codeph> APIs on Symbian platform as compared to the
+OSS behavior. The APIs with their limitations are explained in detail below.</p><ul>
+<li><p><b><codeph>g_module_open</codeph></b>: The signature of the API is:</p><codeblock xml:space="preserve">GModule *g_module_open (const gchar *file_name, GModuleFlags flags);</codeblock><p>This API is used to open a module. The default OSS behavior when file_name
+is passed as NULL such that it obtains a <codeph>GModule</codeph> representing
+the main program. In Symbian GLib, NULL is returned instead. Of all the <codeph>GModuleFlags</codeph> only <codeph>G_MODULE_BIND_LOCAL</codeph> is
+honored. If the user passes any other flags, the module is still opened using
+the flag <codeph>G_MODULE_BIND_LOCAL</codeph>. </p></li>
+<li><p><b><codeph>g_module_symbol</codeph></b>: The signature of the API is:</p><codeblock xml:space="preserve">gboolean g_module_symbol (GModule *module, const gchar *symbol_name, gpointer *symbol);</codeblock><p>This API gets the symbol from the <codeph>GModule</codeph> opened using <codeph>g_module_open</codeph>.
+In OSS, <codeph>symbol_name</codeph> is the name of the symbol that needs
+to be queried from the <codeph>GModule</codeph>. In Symbian platform, the
+ordinal number (passed as a string) of the symbol name must be passed and
+not the symbol name.</p></li>
+</ul><p>See also <xref href="GUID-01E7AE98-024C-4119-87D0-5BB9D53DA119.dita">Introduction
+to libgmodule</xref> for more details about <codeph>libgmodule</codeph>. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4ADDDAFE-0941-4787-B07B-F5B7D8D5B1AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-4ADDDAFE-0941-4787-B07B-F5B7D8D5B1AA" xml:lang="en"><title>Deregister
+a view</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p><codeph>CCoeAppUi</codeph> provides APIs for view deregistration
+and pseudo-view deregistration.</p><note> Application must remove the views
+from the app UI’s control stack before deregistering the view.</note><p>There
+are different variants to deregister a view. See <codeph>CCoeAppUi::DeregisterView()</codeph> for
+details.</p><p> The following code snippet shows removing a view from the
+control stack and deregistering it.</p><codeblock xml:space="preserve">iCCoeAppUi-&gt;RemoveView( iViewId );
+iCCoeAppUi-&gt;DeregisterView( iViewId );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7" xml:lang="en"><title>IPC:
+IPC Mechanisms</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example demonstrates how a parent process communicates with its child
+process using various IPC mechanisms. Two executables, a parent and a child
+(spawned by the parent) are created to demonstrate these mechanisms. The child
+process is created by the parent using the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> function.
+The parent process communicates with the child process using the following
+IPC mechanisms: </p>
+<ul>
+<li id="GUID-D1CABBD1-AC3A-5216-B2A6-D860C876DEDE"><p>Named pipes (FIFO -
+First in First Out) </p> </li>
+<li id="GUID-8FE87BCB-200D-5498-8F1A-851B861F8673"><p>Single pipe (<xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> system
+call) </p> </li>
+</ul>
+<section><title>Download</title><p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c5b6ac05-a3fb-45df-ab11-bd8ccc13537f.zip" scope="external">IPC.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c5b6ac05-a3fb-45df-ab11-bd8ccc13537f.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p><b> Spawning the child process</b> </p> <p>The <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> function
+creates the child process. A pointer to the process ID (<codeph>pid</codeph>)
+of the child process and the path of the child process are passed as arguments
+to this function. The parent waits for the child to terminate by calling the <xref href="GUID-8F5C89A4-7813-32C7-973E-F7F0F3690BC6.dita"><apiname>waitpid()</apiname></xref> function. </p> <p><b> Creating
+a named pipe</b> </p> <p>This example creates a named pipe using the <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref> function.
+The child writes data into the FIFO and then exits. The parent reads data
+from FIFO and writes it to the console. The first argument of the <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref> function
+indicates the path of the FIFO file. </p> <p><b> Opening a single pipe</b> </p> <p>The
+parent creates a child process and a pipe to the child process using the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function.
+A file handle to the pipe is returned to the parent and the parent uses this
+handle to read the data written to the pipe by the child. The path of the
+child process is passed as the first argument to the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function. </p> </section>
+<section><title>Build</title> <p>The following statements are present in all
+the <filepath>.mmp</filepath> files of the example: </p> <codeblock id="GUID-09782F92-8B25-5CF5-8027-599685F5726D" xml:space="preserve">SYSTEMINCLUDE epoc32\include\stdapis
+LIBRARY libc.lib
+STATICLIBRARY libcrt0.lib</codeblock> <p> <b>Note:</b> You require these statements
+because of the following reasons: </p> <ul>
+<li id="GUID-C735ED4D-4FDD-5535-ACA2-C645C3F10762"><p>The <filepath>epoc32\include\stdapis</filepath> directory
+contains header files such as, <filepath>stdio.h</filepath>, <filepath>unistd.h</filepath> and
+so on that are required to build an Open Environment application. </p> </li>
+<li id="GUID-6351CD50-ED02-5DC9-BAAF-971CB92EEAD3"><p>The <filepath>libc.lib</filepath> file
+contains the definitions of all functions that are defined in the header files
+associated with this example. </p> </li>
+<li id="GUID-C7A1D9C5-07E6-5FD1-B770-24180F04623A"><p>The <filepath>libcrt0.lib</filepath> file
+provides the <codeph>E32Main()</codeph> function, which is the entry point
+for the <codeph>main()</codeph> function of the example. </p> </li>
+</ul> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian
+OS build process</xref> describes how to build this example. The <codeph>IPC</codeph> builds
+the following binaries in the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for
+Carbide.c++). </p> <ul>
+<li id="GUID-1F256024-8210-5C50-8B18-0498C0D5C15F"><p> <b>ipcparent.exe:</b> Executable
+of the parent process. </p> </li>
+<li id="GUID-1C755509-96FA-510A-944B-3FEA065C9936"><p> <b>ipcchild.exe:</b> Executable
+of the child process created using the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function. </p> </li>
+<li id="GUID-C056BC80-D664-5F25-A730-35220CA0A6B5"><p> <b>fifochild.exe:</b> Executable
+of the child process created using the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> function. </p> </li>
+</ul> </section>
+<section><title>Runtime setting</title> <p>Two eshells must be opened before
+executing this example. The executable, <filepath>ipcparent.exe</filepath> is
+run in one eshell and the other eshell is used to run the child process <filepath>fifochild.exe</filepath>.
+You can switch between the two eshells by pressing <b>CTRL</b> +<b>ALT</b> +<b>SHIFT</b> +<b>T</b>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4B03733F-D84D-5A28-B772-2E256D86ABC7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4B03733F-D84D-5A28-B772-2E256D86ABC7" xml:lang="en"><title>Security Tools</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Security Tools comprises of <codeph>certapp</codeph> tool that creates, augments, dumps and debugs Symbian certificate stores. It also dumps certificate files in human-readable form.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e215415_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B" xml:lang="en"><title>Using
+Sensor Channels APIs</title><shortdesc>The Sensor Channel establishes a data exchange connection between
+the sensor framework and hardware using the sensor channel APIs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-3-1">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-4-1-4-1-3-1-1"><cmd>Include the library <b>SensrvClient.lib</b> in
+your <b>.mmp</b> file.</cmd>
+</step>
+<step id="GUID-4F637EBD-BD56-44FA-A984-E93CC4B2B3B6"><cmd>Include the following
+header files, as they are required for accessing sensor channels regardless
+of the channel type: </cmd>
+<info><ul>
+<li><p>sensrvchannel.h</p></li>
+<li><p>sensrvchannelinfo.h</p></li>
+<li><p>sensrvtypes.h</p></li>
+<li><p>sensrvchannelfinder.h</p></li>
+<li><p>sensrvdatalistener.h</p></li>
+</ul></info>
+</step>
+<step id="GUID-F5BC52B6-67DD-4F59-889B-C5DE4C69029B"><cmd>Retrieve details
+about the required sensor channel. For details. see <xref href="GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita">Querying
+for Sensor Channels</xref>.</cmd>
+</step>
+<step id="GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88"><cmd>Connect to the sensor
+by opening a connection with the sensor channel.</cmd>
+<substeps id="GUID-C9E5B9FC-C637-4DEB-AAAF-E38C6CD9A18A">
+<substep id="GUID-CA2CFF9C-3168-4060-AC39-8CB6FBA4BCA2"><cmd>Create an instance
+of <codeph>CSensrvChannel</codeph> and specify the instance of <codeph>TSensrvChannelInfo</codeph> returned
+by <xref href="GUID-5F108D03-C8A6-3EF9-B103-2E8916633602.dita#GUID-5F108D03-C8A6-3EF9-B103-2E8916633602/GUID-E58BAF1B-57AA-3E85-A4F9-8C6C29043FBD"><apiname>CSensrvChannelFinder::FindChannelsL()</apiname></xref>, as a parameter
+in the <codeph>NewL()</codeph> constructor.</cmd>
+<stepxmp><codeblock xml:space="preserve"> CSensrvChannel* sensorChannel;
+ sensorChannel = CSensrvChannel::NewL(channelInfoList[0]);// channelInfoList is
+//   returned by the CSensrvChannelFinder::FindChannelsL()funtion</codeblock></stepxmp>
+</substep>
+<substep id="GUID-30E6033F-E316-4BDB-AF22-2369463DF709"><cmd>Open the sensor
+channel using <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-277A4940-2E5E-3E8E-AB61-552CD2375F3C"><apiname>CSensrvChannel::OpenChannelL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">channel-&gt;OpenChannelL();</codeblock></stepxmp>
+</substep>
+</substeps>
+</step>
+<step id="GUID-7A414271-040C-4107-B047-9416747C66A6"><cmd>Perform any of the
+following operations:</cmd>
+<info><ul>
+<li><xref href="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita">Receive data from
+sensors</xref></li>
+<li><xref href="GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita">Listen for channel
+changes</xref></li>
+<li><xref href="GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita">Retrieve channel
+properties</xref></li>
+<li><xref href="GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita">Set channel properties</xref></li>
+<li><xref href="GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita">Listen for channel
+property changes</xref></li>
+<li><xref href="GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita">Receive channel
+data based on conditions</xref></li>
+</ul></info>
+</step>
+<step id="GUID-61840C55-476C-4DC3-A946-A440330B9DE5"><cmd>Close the channel.</cmd>
+<info><codeblock xml:space="preserve">channel-&gt;CloseChannel();</codeblock><note type="important"> A
+channel must be closed when not required, as it reduces power consumption
+of the Symbian device. An open sensor channel keeps the device processor active
+each time data arrives. Therefore, the processor does not change to idle state
+even when the device user is not performing any operations on the device.</note></info>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e65850_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4B885E13-AC1E-5208-9F07-E6219E214626.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-4B885E13-AC1E-5208-9F07-E6219E214626" xml:lang="en"><title>Call
+Forward Status Tutorial</title><shortdesc>This tutorial describes how to get the call forward status information
+with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+
+
+<context id="GUID-01738CA7-BFF1-4BCF-A586-AE7AE6680AE6"><p>The call forward information is only available on the GSM and
+the WCDMA networks.  </p></context>
+<steps id="GUID-37576512-F408-5B5B-A660-21C97860284B">
+<step id="GUID-FDD5B539-DF97-5C3B-AE17-34B1BE12622A"><cmd/>
+<info>create a new instance of <xref href="GUID-5810DCBE-9C54-3ACC-9714-2A48D48940EF.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-6ABACC42-A7D1-506C-90EB-175CA2B0FE29"><cmd/>
+<info>call <xref href="GUID-5810DCBE-9C54-3ACC-9714-2A48D48940EF.dita"><apiname>CTelephony::GetCallForwardingStatus()</apiname></xref> to
+get the call forward status information </info>
+<info>pass a <xref href="GUID-5810DCBE-9C54-3ACC-9714-2A48D48940EF.dita"><apiname>CTelephony::TCallForwardingCondition</apiname></xref> object </info>
+</step>
+<step id="GUID-0A59F98D-641A-5ABD-8112-C0A62FAD9A1A"><cmd/>
+<info>you can cancel the asynchronous request with a <xref href="GUID-5810DCBE-9C54-3ACC-9714-2A48D48940EF.dita"><apiname>CTelephony::EGetCallForwardingStatusCancel</apiname></xref> enumeration. </info>
+</step>
+</steps>
+<example id="GUID-BD080473-17C3-534E-A963-7C41A82C37BA"><title>Call forward
+status example</title> <codeblock id="GUID-93593481-AC16-5FF9-A989-D3D4B4B7D2CF" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallForwardingSupplServicesV1 iCallForwardingSupplServicesV1;
+    CTelephony::TCallForwardingSupplServicesV1Pckg iCallForwardingSupplServicesV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallForwardingSupplServicesV1Pckg(iCallForwardingSupplServicesV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    CTelephony::TCallForwardingCondition condition = CTelephony::ECallForwardingNoReply;
+    iTelephony-&gt;GetCallForwardingStatus(iStatus, condition, iCallForwardingSupplServicesV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if( iCallForwardingSupplServicesV1.iCallForwarding == CTelephony::ENotActive )
+          {} // The call forwarding condition is inactive; 
+             // If the phone user does not answer a call then the call is _not_ forwarded
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetCallForwardingStatusCancel);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4B8AEE55-1601-5CF8-9DD1-492DAE18F0F8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4B8AEE55-1601-5CF8-9DD1-492DAE18F0F8" xml:lang="en"><title>System Utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>System Utilities library provides various system utility functions for retrieving version string and device type information, and checking disk drive space.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6" xml:lang="en"><title>BitmapsShell:
+dealing with bitmaps</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Note: </b> This example is designed to work with TechView and there
+is no guarantee that it will work with other interfaces. </p>
+<section id="GUID-74B6AED9-FC4B-5076-8F26-4E74D59CC41C"><title>Download</title><p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e054d812-b1ca-4c8e-92b3-fa955030d94b.zip" scope="external">BitmapsShell.zip</xref></p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a92c7d47-fa68-49c6-9e43-c9c2e650f219.zip" scope="external">CommonGraphicsExampleFiles</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e054d812-b1ca-4c8e-92b3-fa955030d94b.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a92c7d47-fa68-49c6-9e43-c9c2e650f219.html" scope="peer">browse</xref>. </section>
+<section><title>Description</title> <p> <filepath>BitmapsShell</filepath> provides
+an application shell, and two concrete controls. </p> <p> <codeph>CGraphicExampleControl</codeph> is
+a control class, derived from <codeph>CCoeControl</codeph>, which links the
+app shell to the particular controls. </p> <p>The <codeph>CBitmapControl</codeph> and <codeph>CFbsControl</codeph> classes,
+derived from <codeph>CGraphicExampleControl</codeph>, define behaviour for
+their particular controls. </p> <p> <codeph>CBitmapControl</codeph> illustrates
+the handling and rendering of bitmaps. </p> <p> <codeph>CFbsControl</codeph> illustrates
+the use of the font and bitmap server. </p> </section>
+<section><title>Build</title> <p>The source code for this example application
+can be found in the directory: </p> <p> <filepath>examples\Graphics\Bitmaps</filepath>  </p> <p>It
+may be in the directory in which you installed Symbian platform, or it may
+be in <filepath>src\common\developerlibrary\</filepath>. It includes the two
+project files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian platform build
+process</xref> describes how to build this application. For the emulator,
+an application called <filepath>BitmapsShell.exe</filepath> is created in <filepath>epoc32\release\winscw\&lt;udeb
+or urel&gt;\</filepath>. </p> </section>
+<section><title>Usage</title> <ol id="GUID-3ABD703F-E0C1-578E-8CE9-213718309521">
+<li id="GUID-E238C82F-AB63-5020-AFC6-D381DF702EE8"><p>Launch the emulator: </p> <p> <filepath>\epoc32\release\winscw\&lt;urel
+or udeb&gt;\EPOC.EXE</filepath>. </p> </li>
+<li id="GUID-BA871F35-5B3B-5B24-92B3-A0EC6444ED64"><p>Click on <systemoutput>BITMAPSSHELL</systemoutput> to
+run the application. If using the <i>TechView</i> emulator, this will be in
+the <i>Extras</i> menu. </p> </li>
+<li id="GUID-FD674483-076C-5C17-8557-FECA3D7031F0"><p>The controls are listed
+on the menu <systemoutput>List of                 Programs</systemoutput>.
+Press the appropriate menu item to select a specific control. </p> </li>
+<li id="GUID-B304AB5B-CB36-5803-ADD8-8D941B9AFB57"><p>Step through each phase
+of an example by pressing the space bar or by tapping on the window drawn
+by that example. </p> </li>
+</ol> </section>
+<section><title>Class Summary</title><p>By the bitmap control: </p><p><xref href="GUID-339EC4C5-89DC-3972-9579-6DD38D418317.dita"><apiname>TPoint</apiname></xref></p><p><xref href="GUID-101762DC-E498-3325-88AB-B0FF17DC62B6.dita"><apiname>TRect</apiname></xref></p><p><xref href="GUID-938244B2-5E1A-39F7-8ACA-E6DE4C44A313.dita"><apiname>TSize</apiname></xref></p><p><xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref></p><p><xref href="GUID-F84C7F40-6DEB-39D1-B172-CB0CC3918E27.dita"><apiname>TRgb</apiname></xref></p><p><xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref></p><p><xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref></p><p>By
+the font and bitmap server control: </p><p><xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref></p><p><xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4BB03B97-9AD0-50D0-AAE5-B7AB2415716E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4BB03B97-9AD0-50D0-AAE5-B7AB2415716E"><title>Drawing Reduced and Enlarged Bitmaps</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples of using <codeph>CGraphicsContext::DrawBitmap()</codeph> to draw a bitmap that is stretched or compressed. </p> <p>The bitmap blitting functions of the bitmapped graphics context (<codeph>CBitmapContext</codeph>) cannot be used to perform scaling of the bitmap. They always draws the bitmap using its dimensions in pixels. The overloaded GDI <codeph>CGraphicsContext::DrawBitmap()</codeph> function, however, can be used to draw a bitmap that is: </p> <ul><li id="GUID-D3E2B3CE-2E9E-521B-8B5E-E514B37ADF05"><p>stretched or compressed to a set size in twips </p> </li> <li id="GUID-B289040F-362F-57FE-BCDE-F60D573DB925"><p>stretched and/or compressed to fit a given rectangle. </p> </li> </ul> <p> <b>Note</b>: <codeph>DrawBitmap()</codeph> is slower than <codeph>BitBlt()</codeph>. You should therefore use <codeph>BitBlt()</codeph> in preference wherever possible. </p> <p>These examples assume that <codeph>bitmap</codeph> is a pointer to a valid <codeph>CFbsBitmap</codeph> object. </p> <section><title>Draw a bitmap at a set size in twips</title> <p>A bitmap can have a real world size in twips set for it, and be drawn scaled to that size. </p> <ol id="GUID-B38123EB-5AA5-5FEB-BBDC-0B89A49E7602"><li id="GUID-0C8F50C1-BF59-5D1F-BB4C-6F86A0FAA2E2"><p>Construct a <codeph>TSize</codeph> with the required dimensions in twips. </p> </li> <li id="GUID-CF58B6F6-B983-5C17-BFFB-8971E6C1E901"><p>Set the size of the bitmap using <codeph>CFbsBitmap::SetSizeInTwips()</codeph>. The default size in twips of a bitmap when loaded is <codeph>(0,0)</codeph>. </p> </li> <li id="GUID-395B3BAE-ECE4-5AE8-A275-27F8ED2785A9"><p>Draw the bitmap using <codeph>DrawBitmap()</codeph>  </p> </li> </ol> <codeblock id="GUID-C7B72F4D-25C3-5D7C-848B-8F5359F7D40C" xml:space="preserve">// Set twips size 
+TSize bmpSizeInTwips(2000,2000);
+bitmap-&gt;SetSizeInTwips(bmpSizeInTwips);
+gc.DrawBitmap(TPoint(50,50), bitmap);</codeblock> </section> <section><title>Draw a bitmap in a given rectangle</title> <p> <codeph>DrawBitmap()</codeph> can also draw a bitmap by stretching it to fit a given rectangle. </p> <codeblock id="GUID-5278E9D2-8276-590D-9E26-BFB73DBA7096" xml:space="preserve">// Draw bitmap stretched from the origin to 100,100
+TRect rect(0,0,100,100);
+gc.DrawBitmap(rect, bitmap);</codeblock> </section> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4BB85136-0E46-47BD-83FD-A918DECF7CDD_d0e60351_href.png has changed
Binary file Symbian3/SDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e167020_href.png has changed
Binary file Symbian3/SDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e196472_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755" xml:lang="en"><title>MakeSIS</title><abstract><p>The <codeph>MakeSIS</codeph> tool generates unsigned Software
+Installation (SIS) files based on the information provided in package (PKG)
+files.</p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title> <p><userinput>makesis <parmname>[OPTIONS]</parmname> <cmdname> &lt;ARGS&gt;</cmdname> </userinput> </p> <p>The
+following table lists the options supported by the <codeph>MakeSIS</codeph> tool. </p> <table id="GUID-3507EC30-B539-5F94-BFFA-073B0BC98177">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Options </entry>
+<entry>Description</entry>
+<entry>Usage</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-h</varname>  </p> </entry>
+<entry><p>Displays the help for PKG file format. </p> </entry>
+<entry><p><userinput>makesis [-h]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-i</varname>  </p> </entry>
+<entry><p>Displays the Open SSL licence. </p> </entry>
+<entry><p><userinput>makesis [-i]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-v</varname>  </p> </entry>
+<entry><p>Displays verbose output. </p> </entry>
+<entry><p><userinput>makesis [-v]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-s</varname>  </p> </entry>
+<entry><p>Generates a ROM stub file. See <xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita#GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755/GUID-DEF21F73-CF37-51BD-8AD4-E58BEF3D2C44">Notes</xref> for more information. </p> </entry>
+<entry><p><userinput>makesis [-s] [-d directory] pkgfile</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-c</varname>  </p> </entry>
+<entry><p>Reports an error if the generated SIS file is not compatible with
+the InterpretSIS tool for preinstall. </p> </entry>
+<entry><p><userinput>makesis [-c] [-d directory] pkgfile</userinput> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table lists the arguments to be specified with the <codeph>MakeSIS</codeph> tool. </p> <table id="GUID-0CFA878E-F0FF-5831-B24B-320921C5CA4D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Arguments </entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-d directory</varname>  </p> </entry>
+<entry><p>Specifies absolute paths in PKG files or paths relative to the current
+directory. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>pkgfile</varname>  </p> </entry>
+<entry><p>Specifies the PKG file, for which a SIS file is generated. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>sisfile</varname>  </p> </entry>
+<entry><p>Specifies the name of the generated SIS file. </p> <p>If not specified,
+the output SIS filename is derived from the name of the PKG file, but with
+a <filepath>SIS</filepath> file extension. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </refsyn>
+<section id="GUID-DEF21F73-CF37-51BD-8AD4-E58BEF3D2C44"><title>Notes</title> <ul>
+<li id="GUID-9877B442-775B-5754-BB99-9DA810D30552"><p>A stub SIS file is created
+by the software installer on the Symbian device after a package has been installed.
+It details which files were installed and where, and is used when uninstalling
+and upgrading the package. For pre-installed applications in ROM, <codeph>makesis
+-s</codeph> can be used to create a stub SIS file. </p> <p>Stub files that
+are created, contain a fixed date/time stamp of 2004/01/01 00:00. </p> </li>
+<li id="GUID-2136F1C0-1FD1-58FF-8E6B-6D09D5E89DBF"><p>You can use the <codeph>–d</codeph> argument
+with the <codeph>EPOCROOT</codeph> environment variable to avoid using absolute
+paths in PKG files or relative paths to the current directory. </p> <p>By
+default, binaries are built to the <filepath>epoc32</filepath> tree. So, if
+files are described in the PKG file as, for example: </p> <codeblock id="GUID-7F3A3056-88A8-5D19-9CB9-C3135D17DD95" xml:space="preserve">"epoc32\release\armv5\urel\HelloWorld.exe"-"!:\sys\bin\HelloWorld.exe"
+"epoc32\release\armv5\urel\z\resource\apps\HelloWorld.rsc"-"!:\resource\apps\HelloWorld.rsc"</codeblock> <p>then <codeph>MakeSIS</codeph> can
+be invoked from any location using: </p> <p><userinput>makesis -d%EPOCROOT%
+HelloWorld.pkg</userinput> </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita"><linktext>PKG Format</linktext>
+</link>
+<link href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita"><linktext>SignSIS</linktext>
+</link>
+<link href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita"><linktext>CreateSIS</linktext>
+</link>
+<link href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita"><linktext>Creating
+and Signing an Installation File</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023" xml:lang="en"><title>Zip
+Compression Library Overview</title><shortdesc>The Zip Compression Library, EZLib, provides stream and file compression
+and decompression functionality for the Symbian platforms. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>EZLib provides classes to handle the file, stream and buffer requirements
+of zlib. It provides native Symbian APIs that access the zlib compression
+algorithms and it exports some zlib and gzio C APIs from libz.dll. EZLib can
+operate on streams, flat zip files (zlib format) and gzip files. </p>
+<section><title>Purpose</title> <p>EZLib facilitates: </p> <ul>
+<li id="GUID-EB810152-39F6-5B42-B9CA-092FD2DBADB5"><p>Compression and decompression
+of memory streams </p> </li>
+<li id="GUID-F1E8AD72-1E1C-5978-BBDB-FCF529238441"><p>Compression and decompression
+of files </p> </li>
+<li id="GUID-B08AB8E2-DE37-59B2-86D3-04F5385BFCE0"><p>Decompression of file
+archives of gzip format </p> </li>
+</ul> </section>
+<section><title>Required background</title> <p>You must be familiar with zlib,
+gzip compression and decompression formats and Deflate algorithms. You can
+find further information about each of these on the IETF (Internet Engineering
+Task Force) website. </p> <p> <xref href="http://www.ietf.org/rfc/rfc1950.txt" scope="external">RFC1950- zlib format</xref>  </p> <p> <xref href="http://www.ietf.org/rfc/rfc1951.txt" scope="external">RFC1951-Deflate algorithm</xref>  </p> <p> <xref href="http://www.ietf.org/rfc/rfc1952.txt" scope="external">RFC1952-gzip format</xref>  </p> </section>
+<section><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>zlib</dt>
+<dd><p>zlib format is an open standard for lossless compressed data. It can
+be implemented using a number of alternative compression algorithms. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Compression</dt>
+<dd><p>Data compression is a process of encoding information using fewer bits
+(or other information-bearing units) using specific encoding algorithms. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Decompression</dt>
+<dd><p>Decompression is the process of reconverting compressed data into its
+original (or nearly original) form. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Stream</dt>
+<dd><p>A stream is an abstraction that represents a device on which input
+and ouput operations are performed. A stream can be considered as a source
+or destination of characters of indefinite length. A stream can be accessed
+only in sequence. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>gzip File Format</dt>
+<dd><p>gzip is normally used to compress single files. Deflate is the compression
+algorithm used. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>gzio</dt>
+<dd><p>gzio APIs are input amd output functions for gzip format. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>zip Format</dt>
+<dd><p>The zip file format is both data compression and archive. A zip file
+contains one or more files that have been compressed where possible to reduce
+file size. The zip file format permits a number of compression algorithms
+but only Deflate is widely used and supported. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>The Zip Compression Library (EZLib)
+provides C++ wrapper classes that encapsulate the functionality of version
+1.2.3 of the zlib library. zlib and gzio APIs are written in C. The core functionality
+is performed by a core library (libzcore.dll). </p> <p>EZLib provides three
+DLLs which encapsulate the core functionality in Symbian C++ and Open Environment
+APIs. </p> <ul>
+<li id="GUID-D8A474AF-8853-5297-AF1A-CDB87AA90CDC"><p>LIBZ.DLL: This is an
+Open Environment library that provides the zlib and gzio C APIs. The APIs
+can be used to compress and decompress zlib and gzip file formats. </p> </li>
+<li id="GUID-11302514-AFA7-548A-8EB2-2CD0FE34B1B5"><p>EZLIB.DLL: This provides
+Symbian C++ wrappers for the zlib compression and decompression APIs. It offers
+buffer, stream and gzip file handling classes. It also exports the C API interface
+provided by LIBZ.DLL with the exception of the gzio APIs. This library can
+be used to compress and decompress zlib and gzip file formats and memory streams. </p> </li>
+<li id="GUID-123ED28B-2F59-593E-B1F4-DA1E70368A0C"><p>EZIP.DLL: This provides
+Symbian C++ APIs for reading from and decompressing zip archives. It cannot
+be used to compress archives to zip archives. </p> </li>
+</ul> <fig id="GUID-14EAABD4-6E9D-53CA-9515-7504EF0482D7">
+<title>              EZLib Architecture            </title>
+<image href="GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e128501_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>APIs</title> <p>The classes exported from <filepath>ezlib.dll</filepath> are
+tabulated below: </p> <table id="GUID-DD3CE37A-8241-5961-B517-03266AE463F0">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita"><apiname>CEZCompressor</apiname></xref>  </p> </entry>
+<entry><p>Provides wrapper for ‘compress’ and ‘Deflate’ zlib APIs. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita"><apiname>CEZDecompressor</apiname></xref>  </p> </entry>
+<entry><p>Provides wrapper for ‘uncompress’ and ‘inflate’ zlib APIs. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref>  </p> </entry>
+<entry><p>Provides basic file handling for CEZCompressor and CEZDecompressor
+classes. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita"><apiname>CEZFileToGZip</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation to compress an uncompressed file to a gzip
+file. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-20B207AF-0DEB-3B4A-8BA4-4C0D17F544AC.dita"><apiname>CEZFileToGzipBM</apiname></xref>  </p> </entry>
+<entry><p>Provides buffer management class for CEZFileToGZip. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita"><apiname>CEZGZipToFile</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation to uncompress a gzip file to an output file. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-2C372219-941A-3D1B-885F-8BC745827445.dita"><apiname>CEZGzipToFileBM</apiname></xref>  </p> </entry>
+<entry><p>Provides buffer management class for CEZGzipToFile. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-E9A5CC9F-612E-3C32-AF93-6F28D2A894EF.dita"><apiname>CEZZStream</apiname></xref>  </p> </entry>
+<entry><p>Provides stream handling. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B90BA6D6-72A2-3EB8-B8EF-CD5408107A9E.dita"><apiname>MEZBufferManager</apiname></xref>  </p> </entry>
+<entry><p>Pure virtual interface class. CEZFileBufferManager derives from
+this class. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The classes exported from <filepath>ezip.dll</filepath> are tabulated
+below: </p> <table id="GUID-067977A4-93E7-5E09-9962-63B3FA501B42">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-8C8DEC50-6FC8-3DED-84E1-1EA42E2A0BB8.dita"><apiname>CZipArchive</apiname></xref>  </p> </entry>
+<entry><p>Represents a zip archive and defines all relevant enumerations and
+structures. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita"><apiname>CZipFile</apiname></xref>  </p> </entry>
+<entry><p>Represents a zip archive contained in a single file. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-02A8BC62-D653-39A3-BE0C-92A5F3F43E85.dita"><apiname>CZipFileMember</apiname></xref>  </p> </entry>
+<entry><p>Represents a compressed file contained in a CZipFile archive file. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita"><apiname>CZipFileMemberIterator</apiname></xref>  </p> </entry>
+<entry><p>Allows iteration through all the entries of an archive. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-62F9728B-9C39-3496-BAEB-6E1456E6F197.dita"><apiname>RZipFileMemberReaderStream</apiname></xref>  </p> </entry>
+<entry><p>Represents an input stream for compressed files in an archive. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><filepath>libz.dll</filepath> provides the C open environment
+and hybrid applications to support the zlib library. </p></section>
+<section><title>Typical uses</title> <p>The typical uses of
+the ZIP Compression Library are: </p> <ul>
+<li id="GUID-374EF76C-333C-5A09-9154-42056C70DD58"><p><xref href="GUID-548CC331-8E38-5627-A925-EA386BE90258.dita"> Compression
+and decompression of files(gzip)</xref>  </p> </li>
+<li id="GUID-053B2446-7ED5-5263-AF3D-00866C829B4C"><p><xref href="GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4.dita">Compression
+and decompression of files(zip) </xref>  </p> </li>
+<li id="GUID-BA9F0FBB-6B0C-51DB-8162-336C27002B79"><p><xref href="GUID-C3086910-D7B4-5549-BF65-374C8B602E8F.dita"> Compression
+and decompression of memory streams </xref>  </p> </li>
+<li id="GUID-A6DDC9BD-B8F4-52CE-BE3D-AFAC549EF9ED"><p><xref href="GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1.dita"> Decompression
+of file archives </xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e172000_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601" xml:lang="en"><title>Platform security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Symbian platform security architecture provides the platform with the
+ability to defend itself against malicious or badly implemented programs. </p>
+<p>This section provides  a technical paper that discusses
+the <xref href="GUID-1E7AA950-06C2-599C-BCC2-12BB99306E1B.dita">platform security
+architecture</xref> in depth.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C1F3DB3-039C-57D6-987F-4A26E1E056E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4C1F3DB3-039C-57D6-987F-4A26E1E056E6" xml:lang="en"><title>How to use the non-modifiable pointer descriptor - TPtrC</title><shortdesc>Non-modifiable pointer descriptors are useful for referencing
+		constant strings or data; for example, accessing strings built into ROM
+		resident code, or passing a reference to data in RAM which must not be modified
+		through that reference.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><ul id="UL_83DD0FC743444EBB91D9DADAD05AA845"><li id="LI_1AE27A9C48A742059A1F92645EE8DC40">For text data, it is usual to construct a <codeph>TPtrC</codeph> type and allow the appropriate variant, either a <codeph>TPtrC8</codeph> or a			 <codeph>TPtrC16</codeph> to be selected at build time.</li><li id="LI_46611661D34840A984E5DB5E1B2F5C83">For binary data, an explicit <codeph>TPtrC8</codeph> is used.</li><li id="LI_8E40A85E05F34A24B96A6985B0219F26">It is rare to use an explicit <codeph>TPtrC16</codeph>.</li></ul>
+<section id="SECTION_5C848D1949114AB4B5B04399DE2E1D0C"> 
+		<title>Constructing a <codeph>TPtrC</codeph></title> 
+		<p>A non-modifiable pointer descriptor can be constructed in a number
+		  of ways:</p> 
+		<ul id="UL_285D678E37474863A9CDE0AC07563A22"> 
+		  <li id="LI_FA3C5DEF26314DC4AD26D1C643A63439"> 
+			 <p>any other descriptor.</p> 
+		  </li> 
+		  <li id="LI_5762D37490F24F0CA795213A8E9FF639"> 
+			 <p>another non-modifiable pointer descriptor.</p> 
+		  </li> 
+		  <li id="LI_D44E9FC98D16448585130B89B27ECEE6"> 
+			 <p>a pointer into memory and specifying the length of the
+				data.</p> 
+		  </li> 
+		  <li id="LI_0270E00C05DD473C911B6EF4CC297814"> 
+			 <p>a zero terminated string.</p> 
+		  </li> 
+		</ul> 
+		<p>The following code fragment constructs a <codeph>TPtrC</codeph> to
+		  represent the data already represented by any other type of descriptor.</p> 
+		<p>The source descriptor is a literal which is converted to descriptor
+		  type.</p> 
+		<codeblock xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);  // buf1 is the existing descriptor
+...
+TPtrC ptr(buf1);        // data in buf1 now accessible through ptr</codeblock> 
+		<p>The following code fragment constructs a <codeph>TPtrC</codeph> to
+		  represent the data already represented by another <codeph>TPtrC</codeph>.</p> 
+		<codeblock xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);   // buf1 is the existing descriptor
+...
+TPtrC ptr1(buf1);        // data in buf1 now accessible through ptr1
+TPtrC ptr2(ptr1);        // data also accessible through ptr2</codeblock> 
+		<p>Although rarely used (possibly in porting legacy 'C' code), the
+		  following code fragment defines a constant <q>C</q> style non-Unicode
+		  string and then constructs the non-modifiable pointer descriptor for that
+		  string. The explicit 8 bit variant is used here. The descriptor is separate
+		  from the data it represents.</p> 
+		<codeblock xml:space="preserve">const TText8* cstr = (TText8*)"Hello World!";
+...
+TPtrC8 ptr(cstr);
+...
+ptr.Length();       // The length is 12.
+ptr.Ptr();          // The address of the descriptor's data,
+                    // i.e. 'C' string.</codeblock> 
+		<p>The following code fragment shows construction from a pointer into
+		  memory and a length. The example assumes that both the pointer and the length
+		  have valid values:</p> 
+		<codeblock xml:space="preserve">TUint8*  memptr;
+TInt    length;
+...
+TPtrC8 ptr(memptr,length);</codeblock></section>
+<section id="SECTION_BCAA81088E1E4473887D1E62F77AE2B1">
+<title>Accessing data</title><p>Once a
+non-modifiable pointer descriptor has been constructed, the functions in the
+base class, <codeph>TDesC</codeph>, are available to access the
+data.</p><p>For example, given a pointer descriptor labelled ptr:#</p><codeblock xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);  // buf1 is the existing descriptor
+...
+TPtrC ptr(buf1);        // data in buf1 now accessible through ptr
+...
+ptr.Length();           // returns the length of the data (i.e. 12)</codeblock>
+
+
+</section>
+</conbody><related-links><link href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita"><linktext>Dynamic  Buffers</linktext></link></related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C31BFCC-BC2A-55B1-8D3B-3355032E2062.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4C31BFCC-BC2A-55B1-8D3B-3355032E2062"><title>autoload</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>autoload [ {+|-}UXmt ] [ -wkz ] [ name ... ]</userinput> </p> <p>Equivalent to functions <codeph>-u</codeph>, with the exception of <codeph>-X</codeph> /<codeph>+X</codeph>, <codeph>-w</codeph>, <codeph>-k</codeph> and <codeph>-z</codeph>. </p> <table id="GUID-9C277500-94BE-5D0D-8F4F-ACBDA3B7FBB6"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <codeph>-X</codeph>  </p> </entry> <entry><p>Can be used only inside a shell function, and may not be followed by a name. It causes the calling function to be marked for autoloading and then immediately loaded and executed, with the current array of positional parameters as arguments. This replaces the previous definition of the function. If no function definition is found, an error is printed and the function remains undefined and marked for autoloading. </p> </entry> </row> <row><entry><p> <codeph>+X</codeph>  </p> </entry> <entry><p>Attempts to load each name as an autoloaded function, but does not execute it. The exit status is zero (success) if the function was not previously defined and a definition for it was found. This does not replace any existing definition of the function. The exit status is nonzero (failure) if the function was already defined or when no definition was found. In the latter case the function remains undefined and marked for autoloading. </p> <p>It can also be combined with either <codeph>-k</codeph> or <codeph>-z</codeph> to make the function be loaded using <codeph>ksh-style</codeph> or <codeph>zsh-style</codeph> autoloading, respectively. If neither is given, the current setting of the <codeph>KSH_AUTOLOAD </codeph> options determines how the function is loaded. With <codeph>ksh-style</codeph> autoloading, the contents of the file will not be executed immediately. Instead, the function created will contain the contents of the file plus a call to the function itself appended to it, thus given normal <codeph>ksh</codeph> autoloading behaviour on the first call to the function. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Note:</b> Symbian platform does not support the use of <codeph>-w</codeph> option. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C35C86A-D57F-503B-8E55-5D235E0D6DA0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4C35C86A-D57F-503B-8E55-5D235E0D6DA0"><title>What is versioning</title><shortdesc>This topic describes the purpose and uses of versioning. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <p>Tools and applications use a set of classes to represent the data in the Comms Database. These classes are the container classes, which derive from <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> and <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref>. </p> <p>The format of the data does not match the format of the data in the database. The implementation of the CommsDat API maps between the external format and the internal format. </p> <p>Future releases of Symbian OS can change the internal format. The map between the external format and the internal format maintains compatibility for tools and applications if the internal format changes. </p> <p>A new internal format is a new version of the interface. If a new version is created, the older version is deprecated, but Symbian OS maintains the compatibility for a managed period. </p> <p>You specify the version you need when you create a session with the Comms Database. </p> <p>A version is defined by an instance of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TVersion</apiname></xref> class. </p> <p>In practice, changes to versions are extremely rare. The curent version is the same version used when the Comms Database was added to Symbian OS. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C406E49-7726-5620-AAAA-84C33DADAF4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4C406E49-7726-5620-AAAA-84C33DADAF4B" xml:lang="en"><title>Opening
+a handle to an existing global Kernel object</title><shortdesc>This document describes how to find a global kernel object by using
+a handle.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A handle can be opened on an existing global Kernel object.</p>
+<p>Global Kernel objects are explicitly named by their creators; the technique
+for finding these objects involves using a search pattern to search for objects
+with matching full names. The <codeph>TFindHandleBase</codeph> provides the
+basic behavior.</p>
+<p>In practice, each specific type has its own class derived from <codeph>TFindHandleBase</codeph>,
+for example, semaphores have <codeph>TFindSemaphore</codeph>, mutexes have <codeph>TFindMutex</codeph> and
+so on.</p>
+<p>For example, the following code fragment searches for the first global
+semaphore whose full name ends with the characters "day" and opens a thread-relative
+handle on that semaphore:</p>
+<codeblock id="GUID-C1C801A9-4B15-5369-8007-17BB7DC3E0A9" xml:space="preserve">_LIT(KDay,"*day");
+...
+TFindSemaphore finder(KDay);       // derived from TFindHandleBase
+TFullName      theName;
+RSemaphore     theSem;             // derived from RHandleBase
+...
+if ((finder.Next(thename))==KErrNone)
+    {
+       theSem.Open(finder,EOwnerThread);
+       ...
+       }
+...
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C47ADC7-3624-5C39-B632-F227452C420A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4C47ADC7-3624-5C39-B632-F227452C420A" xml:lang="en"><title>SIP Settings</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C4B6098-38B4-5BD0-8E58-712511EBE074.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4C4B6098-38B4-5BD0-8E58-712511EBE074" xml:lang="en"><title>Descriptor
+Types</title><shortdesc>These documents describe the descriptor types</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4C7ABD1C-B42C-590A-AD24-7FA6C3A8D18C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4C7ABD1C-B42C-590A-AD24-7FA6C3A8D18C"><title> Registering for Sub-Connection events: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how an application can register for sub-connection events. </p> <p>This tutorial has three parts. The first part describes how the application can register for all events. The second part describes how the application can register for a subset of events. The third part describes how the application can extract information from an event response. </p> <section><title>Registering for events – Simple case</title> <p>The following example shows the simplest case of how an application can register for events occurring on a sub-connection. In this example the application registers for notification of all events. </p> <codeblock id="GUID-A57F97F1-B0A2-5631-8F7B-1D38EA18E0D4" xml:space="preserve">// Create the container for all sub connection parameters
+RSubConParameterBundle subconParams;
+CleanupClosePushL(subconParams);
+
+………
+………
+// Create and initialise parameters sets as above
+………
+………
+
+// Create a new sub-connection
+subconn.Open(ss, RSubConnection::ECreateNew, conn);
+
+TNotificationEventBuf eventBuffer;
+TRequestStatus eventStatus;
+subconn.EventNotification(eventBuffer, EFalse, eventStatus);
+
+// Set Properties of the sub-connection
+subconn.SetParameters(subconParams);
+
+// Destroy parameters
+CleanupStack::PopAndDestroy();         // subconParams
+
+// Open and connect a TCP socket on the sub-connection
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, subconn);
+sock.Connect(destAddr, status);
+User::WaitForRequest(status);
+
+// Negotiation may not occur until a socket is assigned to the sub-connection
+// First event should be cSubConGenEventDataClientJoining
+User::WaitForRequest(eventStatus);
+
+// Next we’d expect a CSubconGenEventParamsGranted/ CSubconGenEventParamsRejected
+subconn.EventNotification(eventBuffer, EFalse, eventStatus);
+User::WaitForRequest(eventStatus);
+</codeblock> <p> <b>Note:</b> Error handling is not included to aid clarity. </p> </section> <section><title>Registering for events – Using filters</title> <p>The following example shows how to register for specific events by using filters. In this example the application registers for notification when sub-connection parameters have been granted or rejected. Each <xref href="GUID-FDE12D94-17D3-3646-B645-26A08926F86C.dita"><apiname>TEventFilter</apiname></xref> contains the factory Uid of the events and a mask of event Ids bitwise OR’d together. </p> <codeblock id="GUID-01830B80-B62E-5D88-AD0E-BF805EDAC150" xml:space="preserve">// Create the container for all sub connection parameters
+RSubConParameterBundle subconParams;
+CleanupClosePushL(subconParams);
+
+………
+………
+// Create and initialise parameters sets as above
+………
+………
+
+// Create a new sub-connection
+subconn.Open(ss, RSubConnection::ECreateNew, conn);
+
+// Create event filter
+TEventFilter filter;
+filter.iEventGroupUid = KSubConnGenericEventsImplUid;
+filter.iEventMask = KSubConGenericEventParamsRejected | KSubConGenericEventParamsGranted;
+
+// Register for event
+TNotificationEventBuf eventBuffer;
+TRequestStatus eventStatus;
+subconn.EventNotification(eventBuffer, &amp;filter, 1, eventStatus);
+
+// Set Properties of the sub-connection
+subconn.SetParameters(subconParams);
+
+// Destroy parameters
+CleanupStack::PopAndDestroy();         // subconParams
+
+// Open and connect a TCP socket on the sub-connection
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, subconn);
+sock.Connect(destAddr, status);
+User::WaitForRequest(status);
+
+// Event should be CSubconGenEventParamsGranted/CSubconGenEventParamsRejected
+User::WaitForRequest(eventStatus);
+</codeblock> <p> <b>Note:</b> Error handling is not included to aid clarity. </p> </section> <section><title>Extracting information from received events</title> <p>The following example shows how to extract the information contained within an event notification once it has been received. </p> <codeblock id="GUID-FC08CC07-469E-5048-930F-E04F4AE8FDE3" xml:space="preserve">// Create the container for all sub connection parameters
+RSubConParameterBundle subconParams;
+CleanupClosePushL(subconParams);
+
+………
+………
+// Create and initialise parameters sets as above
+………
+………
+
+// Create a new sub-connection
+subconn.Open(ss, RSubConnection::ECreateNew, conn);
+
+// Create filter, register for events, and set parameters as above
+……
+subconn.EventNotification(eventBuffer, &amp;filter, 1, eventStatus);
+……
+
+// Open and connect a TCP socket on the sub-connection
+……
+
+// Receive the event notification
+User::WaitForRequest(eventStatus);
+
+CSubConNotificationEvent* event;
+event = CSubConNotificationEvent::NewL(eventBuffer);
+CleanupStack::PushL (event);
+
+if (event-&gt;GroupId() == KSubConnGenericEventsImplUid
+    &amp;&amp; event-&gt;Id() == CSubConGenEventParamsRejected)
+    {
+    CSubConGenEventParamsRejected* rejectedEvent =
+        static_cast&lt; CSubConGenEventParamsRejected*&gt;(event);
+
+    TInt error = rejectedEvent-&gt;Error();
+    ……
+    // Do something with the error
+    ……
+    }
+
+CleanupStack::PopAndDestroy (event);
+</codeblock> <p> <b>Note:</b> Error handling is not included to aid clarity. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CBFA2E3-0EFC-5E10-A960-57A8FF9A6025.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4CBFA2E3-0EFC-5E10-A960-57A8FF9A6025" xml:lang="en"><title>Using Text Views (FORM)</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CD6C5CC-A91B-56BE-825F-5B10B63627DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4CD6C5CC-A91B-56BE-825F-5B10B63627DA"><title>Handling Client Requests</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The main purpose of the Message Server is to accept and handle requests from clients, which include client applications, Client MTMs, and User Interface (UI) MTMs. These requests include changing the structure or contents of the local folders, sending and receiving messages through different services, changing the contents or structure of remote mailboxes, and MTM-specific requests. </p> <p>Some asynchronous requests can take considerable time to complete. In order to be responsive, message client applications may need to change the context (the message entry being operated on by an instance of <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref>) while a request is being processed. To allow this to happen, the request functions return an active object, called an operation object, with base class <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref>, which is responsible for handling the request. The client can change the context and use the operation active object to wait for the request to complete. Additionally, the operation class supports a progress function which returns an MTM-specific progress descriptor. The descriptor might contain information such as the number of pages that have been sent so far. UI MTMs can implement a function to display this progress information to the phone user. After the client is notified about the completion of the request, it can check the final progress information, before deleting the operation object. </p> <p>For each request that the Message Server receives, it creates an operation object of its own. This object checks to see if a Server MTM is required to handle the request and, if so, calls the server-side registry to create it. The operation object then calls the appropriate function on the MTM object, which carries out the request asynchronously. While this is happening, the Message Server may receive further requests that require the same Server MTM. The Message Server queues such requests and passes them to the MTM object consecutively. More than one instance of a Server MTM may exist if operations are being called on a different services. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CE10DED-31B2-50B5-9D38-85CE86E8A8DE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4CE10DED-31B2-50B5-9D38-85CE86E8A8DE"><title>The Message Transport and Communication between Nodes</title><shortdesc>This topic introduces the Message Transport and the concept of communication between Nodes. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Nodes communicate with other Nodes . Nodes normally use asynchronous communication, but <xref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita#GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0/GUID-0B0B61DE-AABC-5F87-8205-30F818F79C0A">Flow Nodes</xref> in the <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita">Data Plane</xref> use synchronous communication to communicate with other Flow Nodes. </p> <p>Nodes use messages and message queues to communicate asynchronously. Nodes use direct function calls to communicate synchronously. The <i>Node API</i> is the set of messages to which a Node responds. </p> <p>You can do operations on Nodes. The following list gives some of the features of an operation on a Node: </p> <ul><li id="GUID-78A11857-102C-50B9-B113-C4E4A0595B1F"><p>an operation is a sequence of messages sent to the Node. </p> </li> <li id="GUID-1CDF5638-EBD1-597D-9279-036A9C00463D"><p>a Node can run many operations at the same time </p> </li> <li id="GUID-85DC7B1F-5057-5626-9423-2A958A3A3BD8"><p>an operation can define if another operation can run on the Node at the same time. </p> </li> <li id="GUID-E4F9068A-229E-545C-930C-E6E6A329E291"><p>a Node can define the order that operations must occur. </p> </li> </ul> <p>A Node normally sends a message to second Node and expects a reply from the second Node. The first Node stops the operation until the first Node receives the reply. Some messages do not require a reply. For example, a message that signals that a Node must destroy itself does not require a reply. </p> <section id="GUID-F458E2D5-CF07-5D0C-A6C6-D9BA6DE9C999"><title>The Message Transport</title> <p>The Message Transport is the framework that allows messages to pass between Nodes. </p> <p>The Message Transport has the following features: </p> <ul><li id="GUID-D372317C-4148-5A95-B167-5E62B6E84A76"><p>the Message Transport guarantees the delivery of messages </p> </li> <li id="GUID-CF6A25C4-4BE1-5DCC-AE48-26A5F20CB171"><p>the design of the addressing system allows the Message Transport to deliver messages to any Node in the Communications Stack. </p> </li> <li id="GUID-B3B6913B-C820-5AF0-ACD4-1E7806BB4CD2"><p>the Message Transport can deliver messages across thread and process boundaries </p> </li> </ul> <p>The Message Transport must register Nodes before the Transport can deliver messages. When the Communications Framework creates the Nodes, the Framework registers the Nodes automatically with the Message Transport. </p> </section> <section id="GUID-5FD7F4BD-25F2-52ED-B742-34B88A1E1AA1"><title> Messages</title> <p>A <i>Message</i> is the data that passes asynchronously between nodes in the Communications Framework. The Communications Framework uses the class <xref href="GUID-AB865663-57C4-3DEC-8468-5EA504E99D4D.dita"><apiname>TCFSignalBase</apiname></xref> to represent a message. </p> </section> </conbody><related-links><link href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita"><linktext>Planes</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CE611C7-1FD8-5DAA-AA04-5B80804D6DD7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4CE611C7-1FD8-5DAA-AA04-5B80804D6DD7"><title>exit</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>exit [n]</userinput> </p> <p>Exit the shell with a status of <codeph>n</codeph>; if none is specified, use the exit code from the last command executed. An <codeph>EOF</codeph> condition will also cause the shell to exit, unless the <codeph>IGNORE_EOF</codeph> option is set. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4CEB52EC-8F08-53B7-A900-AF163316D442" xml:lang="en"><title>Quick
+Start</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Messaging Middleware module provides application-level APIs to handle
+the storage and transport of different type of messages. The message types
+that are currently supported are email (POP3, IMAP4 and SMTP), SMS, BIO and
+OBEX messages. </p>
+<section id="GUID-A61CB959-EF05-49DA-BEEB-E88CC2F78302"><title>Getting started with Messaging Middleware</title> <p>Messaging
+Middleware provides APIs to build highly-featured message client applications
+to manipulate messages in Message Store and to enable storage of messages
+in the Message Store. It also provides support for creating plug-ins to handle
+individual messaging protocols. </p> </section>
+<section id="GUID-46E6E94B-F973-477A-905D-2EA80C81624B"><title>Architecture</title> <p>The Messaging Middleware architecture
+comprises of many components to form the Messaging Framework. The framework
+provides plug-ins (polymorphic MTMs) to manage different type of messages.
+The set of components that make up a plug-in module is called an Message Type
+Module (MTM). All interactions with lower-level communication protocols, such
+as, TCP/IP, are performed by MTMs. The Messaging Framework provides APIs to
+enable storage of messages in the Message Store. It also provides APIs to
+manipulate messages in the Message Store.</p><fig id="GUID-79BA59FD-0DC0-45FF-8882-1E4CB08F5A2C">
+<image href="GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e251491_href.jpg" placement="inline"/>
+</fig></section>
+<section id="GUID-785B1C63-F749-4D9F-AF08-A38C66DBE4DA"><title>Documentation and examples</title><p>The following sections
+list tutorials and example applications that can be referred while creating
+messaging applications:</p><ul>
+<li><xref href="GUID-734582DF-DC6B-51AD-BB93-3A17FF02BEC4.dita">Message Server
+and Store Configuration Tutorial</xref></li>
+<li><xref href="GUID-F3E5D412-BEB5-4E0F-9CDE-1DF3F9302BC3.dita">MTM Implementation
+Tutorial</xref></li>
+<li><xref href="GUID-2F9BCBC4-A657-5B16-824E-5E96DA22AD00.dita">Search-Sort Tutorial</xref></li>
+<li><xref href="GUID-1963A487-D6A7-4225-8D0C-EC5FAB746854.dita">Attachment Tutorial</xref></li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-C1F71368-E35A-512D-A9DF-F81491F35E62.dita"><linktext>Messaging
+Middleware Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CF02F12-7030-5E49-B0CC-593F02EF6FA7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4CF02F12-7030-5E49-B0CC-593F02EF6FA7"><title>unzip</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>unzip [-e] [-x] [-l] [-o] [-d directory] &lt;file name&gt;.zip</userinput> </p> <p>The <codeph>unzip</codeph> command is a decompression utility that enables you to extract files in a <filepath>.zip</filepath> file. The <codeph>unzip</codeph> command supports the following options: </p> <table id="GUID-3D1AAC66-C049-5204-968C-C6357A524A1D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-e</codeph>  </p> </entry> <entry><p>Extracts files in a <filepath>.zip</filepath> file to the current working directory. </p> <p> <b>Note:</b> While extracting the files this option does not use the folder structure defined in the <filepath>.zip</filepath> file </p> </entry> </row> <row><entry><p> <codeph>-x</codeph>  </p> </entry> <entry><p>Extracts files in a <filepath>.zip</filepath> file to the current working directory. </p> <p> <b>Note:</b> While extracting the files this option uses the folder structure defined in the <filepath>.zip</filepath> file </p> </entry> </row> <row><entry><p> <codeph>-l</codeph>  </p> </entry> <entry><p>Lists the files contained in a <filepath>.zip</filepath> file. </p> </entry> </row> <row><entry><p> <codeph>-o</codeph>  </p> </entry> <entry><p>This option enables you to overwrite files without prompting while you extract files from a <filepath>.zip</filepath> file. </p> </entry> </row> <row><entry><p> <codeph>-d directory</codeph>  </p> </entry> <entry><p>This option enables you to specify the directory to which you want the files to be extracted. </p> </entry> </row> </tbody> </tgroup> </table> <section><title>Examples</title> <p><userinput>unzip master.zip</userinput> </p> <p>This example decompresses the files in the <filepath>master.zip</filepath> file. </p> <p><userinput>unzip –o master.zip</userinput> </p> <p>This example decompresses the files in the <filepath>master.zip</filepath> file and overwrites existing files. </p> <p><userinput>unzip –l master.zip </userinput> </p> <p>This example lists the files in the <filepath>master.zip</filepath> file. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4CF8E6BC-3E2A-5773-A296-6321573B967E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4CF8E6BC-3E2A-5773-A296-6321573B967E" xml:lang="en"><title>Security Services Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e177854_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195" xml:lang="en"><title>Pointer
+events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><draft-comment time="2007-02-26T14:58">Add some additional contextual
+information and examples in a future release of the library.</draft-comment></p>
+<p>Pointer events are handled by the controls. A control should implement
+the function <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aHandlePointerEventL%28const%20TPointerEvent%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl:HandlePointerEventL()</parmname></xref>  to be
+able to handle pointer events. The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aHandlePointerEventL%28const%20TPointerEvent%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl:HandlePointerEventL()</parmname></xref> function
+is called by the framework whenever a pointer event occurs within the control. </p>
+<codeblock id="GUID-F12E88CC-31FF-4C26-8FEC-0BC2C7717907" xml:space="preserve">virtual void HandlePointerEventL(const TPointerEvent&amp; aPointerEvent)
+</codeblock>
+<p>Before passing pointer events to controls, the framework does some processing
+for the event. If a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TPointerEventStruct.html#%3a%3aTPointerEvent%3a%3aEButton1Down" format="application/java-archive"><parmname>TPointerEvent::EButton1Down</parmname></xref> event occurred in the control and the control does not currently
+have keyboard focus, it sends an event of type <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/MCoeControlObserverClass.html#%3a%3aMCoeControlObserver%3a%3aEEventRequestFocus" format="application/java-archive"><parmname>MCoeControlObserver::EEventRequestFocus</parmname></xref> to the control's
+observer — normally the control's container. The container control should
+then set focus onto the control in which the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TPointerEventStruct.html#%3a%3aTPointerEvent%3a%3aEButton1Down" format="application/java-archive"><parmname>TPointerEvent::EButton1Down</parmname></xref> event occurred. </p>
+<p>Note that, by default, pointer drag events and pointer move events are
+not delivered to controls. For additional information, see functions <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/RWindowBaseClass.html#%3a%3aRWindowBase%3a%3aPointerFilter%28TUint32%2cTUint32%29" format="application/java-archive"><parmname>RWindowBase::PointerFilter()</parmname></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aClaimPointerGrab%28TBool%29" format="application/java-archive"><parmname>CCoeControl::ClaimPointerGrab()</parmname></xref>. The following
+code example demonstrates usage of the <parmname>TPointerEvent </parmname>class:</p>
+<codeblock id="GUID-E050A4D7-995E-4819-B172-DCA432E3191F" xml:space="preserve">void CEventsAppView::HandlePointerEventL( const TPointerEvent&amp; aPointerEvent )
+    {
+    switch( aPointerEvent.iType )
+        {
+        case TPointerEvent::EButton1Down:
+            {
+            // Button 1 down
+            // Get pointer position
+            TPoint positionX = aPointerEvent.iPosition.iX;
+            TPoint positionY = aPointerEvent.iPosition.iY;
+            break;
+            }
+        case TPointerEvent::EButton1Up:
+            {
+            // button 1 up
+            break;
+            }
+        case TPointerEvent::EDrag:
+            {
+            // drag event
+            break;
+            }
+        case TPointerEvent::EMove:
+            {
+            // move event
+            break;
+            }
+        default:
+            {
+            // do something
+            break;
+            }
+        }
+    }   </codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4D4CB4DC-9B9A-5256-B949-C5E9F369D9C6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4D4CB4DC-9B9A-5256-B949-C5E9F369D9C6"><title>help</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph>  <codeph>help</codeph>  <codeph>( ( [ options ] | [ commands ] ) | </codeph> ( <varname>command</varname> ) )</p> <p>This command provides a brief guide to <filepath>abld</filepath> command-line syntax.</p> <p><codeph>abld help options</codeph> lists the options available with <filepath>abld</filepath>.</p> <p><codeph>abld help commands</codeph> lists the available commands.</p> <p><codeph>abld help command</codeph> displays the syntax for a particular command, and also a brief description of what the command is used for.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4D5B0B16-329F-5932-995D-DB43E6641EF9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4D5B0B16-329F-5932-995D-DB43E6641EF9" xml:lang="en"><title>UID
+manipulation classes</title><shortdesc>Describes the classes that provide the mechanism for manipulating
+UIDs in programs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A UID is a globally unique identifier consisting of a 32-bit number. Symbian
+platform makes extensive use of UIDs to provide lightweight identification
+of file types.</p>
+<p>To guarantee uniqueness, all UIDs are assigned to developers centrally
+by Symbian. For testing and development, a well known range of public UIDs
+can be used, but these must not be used for general release. To generate UIDs
+for use in programs, developers must contact Symbian. </p>
+<p>The <codeph>TUid</codeph>, <codeph>TUidType</codeph> and <codeph>TCheckedUid</codeph> classes
+provide the mechanism for creating and manipulating (e.g. comparing) UIDs
+within programs.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4D6C478A-33BA-4D74-9B82-7133ABFFB0D2_d0e59973_href.png has changed
Binary file Symbian3/SDK/Source/GUID-4D82B904-71BF-4945-85ED-655AF8879FF9_d0e53548_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4D94A4B8-392D-5657-BD71-F1EA54318C47.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4D94A4B8-392D-5657-BD71-F1EA54318C47" xml:lang="en"><title>Audio Output Stream Tutorials</title><shortdesc>This section describes how to use the Audio Output Stream library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-46E12D78-5F1F-55B8-B7E8-1B4862CC70E8.dita"><linktext>Audio Output Stream
+  Library</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e94025_href.png has changed
Binary file Symbian3/SDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e251796_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4DBE9AD9-2942-450B-B43C-3F2B47777357.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-4DBE9AD9-2942-450B-B43C-3F2B47777357" xml:lang="en"><title>Scaling
+Channel Data Values</title><shortdesc>The value of a channel data item can represent the actual or relative
+value of the measured quantity. The relative value is a scaled value that
+lies within the maximum and minimum values of the measured quantity.</shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-D46EE015-C2B6-44AA-B021-F6AC1BB76F02">       <p>The <codeph>KSensrvPropIdChannelDataFormat</codeph> property
+defines if channel data items are in a scaled format. For scaled data items,
+the <codeph>KSensrvPropIdScaledRange</codeph> property defines range of the
+data item value and the <codeph>KSensrvPropIdMeasureRange</codeph> property
+defines range of the measured quantity.</p>     </section>
+<example><p>The following example explains how the sensor data can be scaled
+by reading the maximum value of measure range for data items (<codeph>KSensrvPropIdScaledRange</codeph>)
+and the maximum value of the measured quantity (<codeph>KSensrvPropIdMeasureRange</codeph>).
+The example considers that the <codeph>KSensrvPropIdMeasureRange</codeph> property
+is defined as an array property. </p><codeblock xml:space="preserve">TSensrvProperty property;
+    TInt  channelDataFormat( ESensrvFormatAbsolute );
+    TInt  channelDataScaledRange( 1 );
+    TReal channelDataMeasureRangeMaxValue( 1 );
+
+    //Read channel data format
+    iSensorChannel-&gt;GetPropertyL( KSensrvPropIdChannelDataFormat, KSensrvItemIndexNone, property );
+    property.GetValue( channelDataFormat );
+
+    if( ESensrvFormatScaled == channelDataFormat )
+        {
+        //Read data item scaled range
+        iSensorChannel-&gt;GetPropertyL( KSensrvPropIdScaledRange, KSensrvItemIndexNone, property );
+        property.GetMaxValue( channelDataScaledRange );
+
+        //Read data item measure range
+        iSensorChannel-&gt;GetPropertyL( KSensrvPropIdMeasureRange, KSensrvItemIndexNone, property );
+
+        if( ESensrvArrayPropertyInfo == property.GetArrayIndex() )
+            {
+            TInt arrayIndex( 0 );
+            property.GetValue( arrayIndex );//Value points to array index currently in use
+            iSensorChannel-&gt;GetPropertyL( KSensrvPropIdMeasureRange,
+                                          KSensrvItemIndexNone,
+                                          arrayIndex,
+                                          property );
+            }
+        else
+            {
+            //Single property
+            }
+        property.GetMaxValue( channelDataMeasureRangeMaxValue );
+        }
+    else
+        {
+        //No scaling needed.
+        //Value of the data item represents actual value of the measured quantity.
+        }</codeblock><p>You can convert the scaled channel data item value
+to the absolute value by dividing the channel data item value with the maximum
+value of scaled range of the channel and multiplying it with the maximum value
+of the measured quantity. </p><p>For example, if the accelerometer channel
+provides the following properties: </p><ul>
+<li><p><codeph>KSensrvPropIdChannelDataFormat</codeph> with value <codeph>ESensrvFormatScaled</codeph></p></li>
+<li><p><codeph>KSensrvPropIdScaledRange</codeph> with maximum value of 127</p></li>
+<li><p><codeph>KSensrvPropIdMeasureRange</codeph> with maximum value of 2
+g</p></li>
+<li><p><codeph>KSensrvPropIdChannelUnit</codeph> with value <codeph>ESensrvUnitGravityConstant</codeph></p></li>
+</ul><p>then the accelerometer channel data item value of 64 is equal to an
+absolute value of 1.01g (that is, 64 / 127 * 2g = 1.01g).</p></example>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4DC2D055-E522-51C4-8BF9-1361089F0E4A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4DC2D055-E522-51C4-8BF9-1361089F0E4A" xml:lang="en"><title>Using
+TTime</title><shortdesc>Explains how to use various functions related to Time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-BB4B8F39-12EE-438F-A214-A40FBC59AB02"><title>Set()</title> <p>This function is used to assign a date and
+time string contained in a descriptor to this <codeph>TTime</codeph>. The
+code below gives examples of invalid input strings, causing an error to be
+returned. When there is an error, the date/time remains unchanged. Note that
+when specifying the month and day in the input string, both values start at
+zero, so that 19940102 indicates 3rd February 1994.</p> <codeblock id="GUID-473FDD90-2EE4-5949-94DB-E7AB836D68B5" xml:space="preserve">
+_LIT(KDateCorrect1,"19940102:"); 
+TBuf &lt;24&gt; theDate=KDateCorrect1; // theDate = 3rd February 1994 00:00:00 am
+TInt err=time.Set(theDate); // No error
+_LIT(KDateCorrect2,"19940102:.000001");
+theDate=KDateCorrect2; // theDate = 3rd February 1994 00:00:00.000001
+err=time.Set(theDate); // No error
+_LIT(KDateWrongColonPos,"1994012:100000.000001");
+theDate=KDateWrongColonPos;
+err=time.Set(theDate); // KErrGeneral error - time is unchanged
+    // Error — colon in wrong position (position 7). If present, must
+    // be either at position zero or position eight
+_LIT(KDateWrongDotPos,"19940102.000001");
+theDate=KDateWrongDotPos;
+err=time.Set(theDate); // KErrGeneral error - time is unchanged
+    // Error — dot in wrong position. If no colon present, dot must be
+    // at position zero (indicating that both YYYYMMDD and HHMMSS     
+    // omitted), or position six (indicating that YYYYMMDD omitted)
+_LIT(KDateNoDotOrColon,"19940102");
+theDate=KDateNoDotOrColon;
+err=time.Set(theDate);    // Error — either or both dot and colon must be present</codeblock> </section>
+<section id="GUID-69327BF0-82B1-496E-96E6-018EA1FB75C8"><title>MonthsFrom()</title> <p>This function is used to calculate
+the number of months between two date/times. The result may be positive or
+negative. A positive value means that this time is later than the time contained
+in the argument and a negative value means that this time is earlier than
+the time in the argument.</p> <p>The following code shows how intervals are
+calculated between dates in months which have different numbers of days. This <codeph>TTime</codeph> (<codeph>time</codeph>)
+is initialized to 10:00:00 AM on the 31st October. The code demonstrates that
+counting forwards, one month elapses when the same time on the 30th November
+is reached. When counting backwards, one month elapses when the last microsecond
+in the previous month (30/09/1997 23:59:59:999999) is reached.</p> <codeblock id="GUID-D5372028-DE73-55DC-B13F-8116C08D2CC6" xml:space="preserve">
+_LIT(KMiddleDateTime,"19970930:100000.000000");
+TTime time(KMiddleDateTime);
+        // time=31/10/1997 10:00:00:000000
+_LIT(KEarlierDateTime,"19970829:235959.999999");
+TTime earlierTime(KEarlierDateTime);
+        // earlierTime=30/09/1997 23:59:59:999999
+_LIT(KLaterDateTime,"19971029:100000.000000");
+TTime laterTime(KLaterDateTime);
+        // laterTime=30/11/1997 10:00:00:000000
+TTimeIntervalMonths result=time.MonthsFrom(earlierTime);
+        // result == +1
+result=time.MonthsFrom(laterTime); // result == -1
+TTimeIntervalMicroSeconds interval(1);
+earlierTime+=interval; // earlierTime=01/10/1997 00:00:00:000000
+laterTime-=interval; // laterTime=30/11/1997 09:59:59:999999
+result=time.MonthsFrom(earlierTime); // result == zero
+result=time.MonthsFrom(laterTime);    // result == zero</codeblock> </section>
+<section id="GUID-9F678981-840F-4779-8510-2A5883E2A4C0"><title>YearsFrom()</title> <p>This function is used to calculate
+the number of years between two date/times. The result may be positive or
+negative. In the following piece of code, this <codeph>TTime</codeph> (<codeph>leapYear</codeph>)
+is set to the 29th February 1996. It demonstrates that from 10:00:00 29th
+February 1996 to 10:00:00 28th February 1997 is an interval of one year.</p> <codeblock id="GUID-1D3AB4EE-AC45-58B3-88F9-4478B58481A6" xml:space="preserve">TTimeIntervalYears result;
+TDateTime dateTime(1996,EFebruary,28,10,00,00,000000);
+TTime leapYear(dateTime); // leapYear==29/02/1996 10:00:00:000000 
+TTime nextYear(dateTime);
+TTimeIntervalYears intervalInYears(1);
+nextYear+=intervalInYears; // nextYear==28/02/1997 10:00:00:000000
+result=leapYear.YearsFrom(nextYear); // as expected, result==–1</codeblock> </section>
+<section id="GUID-79EDFED3-7078-4CCB-AB58-B6FA04C956E5"><title>WeekNoInYear()</title> <p>These functions are used to find
+the number of the current week in the year. Variants are provided to allow
+the user to specify the date which is to be considered as the start of the
+year and to set the rule governing which week is the first week in the year.</p> <p>Assuming
+that the first day in the week is Monday, the first day in the year is January
+1st and the current date is Monday 6th January 1997 and <codeph>time</codeph> is
+an instance of <codeph>TTime</codeph>:</p> <ul>
+<li id="GUID-47AF61F9-B193-50C3-8007-26AE23808D4B"><p><codeph>time.WeekNoInYear()==2</codeph> because
+Monday 6th is the first day in week 2.</p> </li>
+<li id="GUID-4DA18438-1515-58BB-9FE9-E039023843DD"><p><codeph>time.WeekNoInYear(EFirstFullWeek)==1</codeph> because
+Monday 6th is the first day in the first week entirely in 1997.</p> </li>
+<li id="GUID-8403D336-70B3-5E1C-9DA9-4CA17E78A31E"><p><codeph>time.WeekNoInYear(EFirstWeek)==2</codeph> because
+the first week in the year was the week containing the 1st January (Wednesday
+1st to Sunday 5th).</p> </li>
+<li id="GUID-4EB8898D-151E-5D92-8D33-D7D6173FC444"><p><codeph>time.WeekNoInYear(EFirstFourDayWeek)==2</codeph> because
+the first four days of the year, representing the first week in the year,
+were Wednesday 1st to Saturday 4th.</p> </li>
+</ul> </section>
+<section id="GUID-528DC58D-B897-4B67-A0CF-4062195E9320"><title>FormatL()</title> <p>The examples below demonstrate how to
+format a descriptor which holds a date/time string, locale-dependently and
+independently.</p> <p>The following code fragment is locale-dependent. It
+assumes the current date and time (<codeph>TTime</codeph>  <codeph>time</codeph>)
+is 2nd January 1997 23:59:59.999999, and uses the system default date and
+time settings for a UK locale, including the default date and time separators,
+a 12 hour clock, trailing am/pm text and assumes a point for the decimal separator;</p> <codeblock id="GUID-FFDF7E9C-EA94-59F3-BE24-B764B59D2EE6" xml:space="preserve">TBuf&lt;30&gt; dateString;
+_LIT(KDateString1,"%E%D%X%N%Y %1 %2 %3");
+time.FormatL(dateString,KDateString1);
+// dateString contains "Thursday 02nd January 1997" - no abbreviation
+
+_LIT(KDateString2,"%*E%*D%X%*N%*Y %1 %2 '%3");
+time.FormatL(dateString,KDateString2);
+// dateString contains "Thu 2nd Jan '97" - everything abbreviated
+
+_LIT(KDateString3,"%D%M%Y%/0%1%/1%2%/2%3%/3");
+time.FormatL(dateString,KDateString3);
+// dateString contains "02/01/1997" - no abbreviation; first and third 
+// date separators are both '\0'
+
+_LIT(KDateString4,"%-B%:0%J%:1%T%:2%S%.%*C4%:3%+B");
+time.FormatL(dateString,KDateString4);
+// dateString contains "11:59:59.9999 pm" - first and third time 
+// separators are both '\0'; locale dependent decimal separator      
+// separates seconds and microseconds
+
+_LIT(KDateString5,"%-B%:0%J%:1%T%:2%S%:3%+B");
+time.FormatL(dateString,KDateString5);
+// dateString contains "11:59:59 pm - as above, but no microseconds</codeblock> <p>The
+following code demonstrates formatting two component dates and times.</p> <codeblock id="GUID-821666B8-DC3D-5B1F-88C9-9D74FABA978B" xml:space="preserve">
+_LIT(KDateString6,"%-B%:0%J%:1%T%:3%+B");
+time.FormatL(dateString,KDateString6); 
+// dateString contains "11:59 pm" - Two component time (hour:minute).
+// Third time delimiter omitted as it separates minutes and seconds
+
+_LIT(KDateString7,"%M%Y%/0%4%/1%5%/3");
+time.FormatL(dateString,KDateString7); 
+// dateString contains "02/01" - Two component date (day/month). 
+// Third date delimiter omitted</codeblock> <p>The following code demonstrates
+that the ordering of the <codeph>%D</codeph>  <codeph>%M</codeph>  <codeph>%Y</codeph> is
+irrelevant when using locale-dependent formatting. The ordering of the date
+components is determined by the order of the <codeph>%1</codeph>, <codeph>%2</codeph>,
+and <codeph>%3</codeph> formatting commands.</p> <codeblock id="GUID-6D0B0117-37AC-5D68-A1F1-A514DCCC359C" xml:space="preserve">
+_LIT(KDateString8,"%M%Y%D%/0%1%/1%2%/2%3%/3");
+time.FormatL(dateString,KDateString8);
+    // dateString contains 02/01/1997
+
+_LIT(KDateString9,"%Y%D%M%/0%1%/1%2%/2%3%/3");
+time.FormatL(dateString,KDateString9);
+    // dateString contains 02/01/1997
+
+_LIT(KDateString10,"%D%M%Y%/0%3%/1%1%/2%2%/3");
+time.FormatL(dateString,KDateString10);
+    // dateString contains 1997/02/01</codeblock> <p>However, when using locale-independent
+formatting, the <codeph>%1</codeph>, <codeph>%2</codeph> and <codeph>%3</codeph> are
+not required. The ordering of the date components is determined by the ordering
+of the <codeph>%D</codeph>, <codeph>%M</codeph> and <codeph>%Y</codeph>.</p> <codeblock id="GUID-F9E88ECC-D3AC-531E-8498-52B7085F587C" xml:space="preserve">
+_LIT(KDateString11,"%F%/0%M%/1%Y%/2%D%/3");
+time.FormatL(dateString,KDateString11);
+// dateString contains 01/1997/02</codeblock> </section>
+<section id="GUID-B4810AFC-D97B-4868-AF1C-F42C6D4DFB43"><title>Parse()</title> <p>This function is used to parse a descriptor
+containing either or both a date and time, setting this <codeph>TTime</codeph> to
+the value of the parsed descriptor.</p> <p>The following example code demonstrates
+setting the time alone. The following four calls to <codeph>TTime::Parse()</codeph> give
+the same result; 23:34.56. Because no date is specified, the date is set to
+January 1st year zero, and all return a value of <codeph>EParseTimePresent</codeph>.
+Different time separators may be used in the same string</p> <codeblock id="GUID-8854867B-6DE0-5EF3-8405-BDBAECC1E881" xml:space="preserve">TTime time;
+_LIT(KTimeString1,"23:34.56");
+TInt returnvalue=time.Parse(KTimeString1); // 11 pm
+_LIT(KTimeString2,"0023:0034.056");
+returnvalue=time.Parse(KTimeString2); // Leading zeros ignored
+_LIT(KTimeString3,"23:34.56am");
+returnvalue=time.Parse(KTimeString3); // "am" ignored
+_LIT(KTimeString4,"11:34.56p");
+returnvalue=time.Parse(KTimeString4); // 11 pm
+</codeblock> <p>The following example code demonstrates setting the date alone.
+Because no time is specified, the time is set to midnight (00:00:00), and
+all except the final call return a value of <codeph>EParseDatePresent</codeph>.
+Different date separators may be used in the same string, and the month may
+be specified as text or numbers.</p> <codeblock id="GUID-73EE57A1-E907-59CF-96FA-320218FE2D08" xml:space="preserve">_LIT(KDateString1, "5-6-1996"); // 5 June 1996
+returnvalue=time.Parse(KDateString1); // 5 June 1996
+_LIT(KDateString2,"5 jun, 00");
+returnvalue=time.Parse(KDateString2,00); // 5 June 2000
+_LIT(KDateString3, "5/june/00");
+returnvalue=time.Parse(KDateString3,00); // 5 June 2000
+_LIT(KDateString4, "june 5");
+returnvalue=time.Parse(KDateString4); 
+        // error - two component dates not supported</codeblock> <p>The following
+example code demonstrates setting both the time and date. Either date or time
+component may occur first in the descriptor. Both return a value of <codeph>EParseDatePresent</codeph> and <codeph>EParseTimePresent</codeph>.</p> <codeblock id="GUID-D983FE29-E582-5A04-9885-C40223382FD0" xml:space="preserve">_LIT(KDateTimeString1, "20-feb/00  12:40.01am");
+returnvalue=time.Parse(KDateTimeString1);
+    // 20 Feb 2000 00:40:01
+_LIT(KDateTimeString2, "12:40.01pm 20 FEBRUARY 00");
+returnvalue=time.Parse(KDateTimeString2); 
+    // 12:40:01 20 Feb 2000</codeblock> <p>The following code sets two of
+the locale settings which are honoured by <codeph>TTime::Parse()</codeph>:
+the date and time separator characters. The first call to <codeph>TTime::Parse()</codeph> returns
+a date/time of midnight 20th April 2018 because the hyphen is interpreted
+as a date separator character. The second call returns a date/time of January
+1st year zero, at 20:04.18 because the dot is interpreted as a time separator
+character.</p> <codeblock id="GUID-E1C8019E-6074-5875-8826-A84EC0A3C8D0" xml:space="preserve">TLocale locale;
+locale.SetDateSeparator('-',1); // set first date separator
+locale.SetDateSeparator('-',2); // set second date separator
+locale.SetTimeSeparator('.',1); // set first time separator
+locale.SetTimeSeparator('.',2); // set second time separator
+locale.Set(); // transfer the new locale settings to the system
+_LIT(KParseLocaleString1,"20-04-18"); // DD/MM/YYYY
+returnvalue=time.Parse(KParseLocaleString1); // 20th April 2018 00:00:00.0000
+_LIT(KParseLocaleString2,"20.04.18");
+returnvalue=time.Parse(KParseLocaleString2); // 01 Jan 0000 20:04.18 
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4DEC6706-6189-4E91-AEA9-479DDF04B955_d0e53591_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E195F2A-78AE-5664-A115-AD65BF457AB1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4E195F2A-78AE-5664-A115-AD65BF457AB1"><title>System Monitor</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The System Monitor (SysMon) provides a Process Monitor and Restart service. Its clients are typically the System Starter and After Market Starter which use information in static and dynamic startup configurations (SSC &amp; DSC) to set the restart parameters. </p> <p>An application or process may also add itself to the System Monitor's list. </p> <p>Use of the System Monitor API is restricted by capabilites of the client: </p> <ul><li id="GUID-8F39C454-1FDB-5907-B189-234EE3F61EF1"><p> <b>WriteDeviceData</b> is required to request a process restart, </p> </li> <li id="GUID-0DB11E09-A380-5522-8385-5D439CCC9774"><p> <b>ProtServ</b> is required to request an OS restart into Normal mode </p> </li> <li id="GUID-82701B6E-BBBE-5925-8D20-871C21AB94D5"><p> <b> PowerMgmt</b> is required to request a restart into Startup mode </p> </li> </ul> <p>The system monitor API is simple and self explanatory. A client must instantiate an <xref href="GUID-19467402-8575-33F0-817D-339D39982D39.dita"><apiname>RSysMonSession</apiname></xref>, connect to the SysMon server and open [the session]. </p> <codeblock id="GUID-2017D6A5-BA32-5DAC-820A-A862A0F381B8" xml:space="preserve">
+// sysmonclisess.h
+//
+// Copyright (c) 2006 Symbian Software Ltd.  All rights reserved.
+//
+
+#include &lt;e32std.h&gt;
+#include &lt;e32base.h&gt;
+#include &lt;startupproperties.h&gt;
+#include "startup.hrh"
+
+class RSysMonSession : public RSessionBase
+{
+public:
+    IMPORT_C TInt Open() ;
+    IMPORT_C void Close() ;
+    
+    IMPORT_C TInt MonitorL(CStartupProperties&amp; aStartupProperties, RProcess&amp; aProcess) ;    
+    
+    IMPORT_C TInt MonitorSelfL(CStartupProperties&amp; aStartupProperties) ;
+    IMPORT_C TInt CancelMonitorSelf() ;    
+        
+} ;</codeblock> <p>Monitoring is started with a call to <codeph>MonitorL()</codeph> or <codeph>MonitorSelfL()</codeph>. Before calling one of these functions, however, a <xref href="GUID-90F95A8A-A901-3987-99ED-57F1A57F1C09.dita"><apiname>CStartupProperties</apiname></xref> object must be created and populated with the desired monitoring and restart configuration. </p> <p> <xref href="GUID-90F95A8A-A901-3987-99ED-57F1A57F1C09.dita"><apiname>CStartupProperties</apiname></xref> has a series of <codeph>Set...()</codeph> functions which are used to determine the monitoring and restart behaviour for the application or process to be monitored. It has a version number (returned by the <codeph>Version()</codeph> function) as it is designed to remain compatible with future Symbian extensions. </p> <p>The following snippet shows how a process might add itself to SysMon, specifying that it should be restarted in the event of failure and that, if it cannot be restarted, the device should be rebooted. </p> <codeblock id="GUID-AE7B448B-BDC6-53D3-A429-3B28E5638DD5" xml:space="preserve">
+...
+// Add this application to SysMon.
+
+// (Note that this is normally done by SysStart or AmaStarter using information in an SSC or DSC.)
+
+RSysMonSession sysMon ;
+TInt err = sysMon.Connect() ;
+   // handle error
+
+err = sysMon.Open() ;
+   // handle error
+
+_LIT( KFileName, "Z:\\sys\\bin\\myServ.exe" ) ;
+_LIT( KRestartArg, "-restart" ) ; 
+
+CStartupProperties startupProperties = CStartupProperties::NewLC( KFileName, KRestartArg ) ;
+
+startupProperties-&gt;SetStartupType( EStartProcess) ; // TStartupType
+startupProperties-&gt;SetStartMethod( EWaitForStart ) ; // TStartMethod
+startupProperties-&gt;SetNumberOfRetries( KRetryCount ) ;
+startupProperties-&gt;SetTimeout( KRestartTimeout ) ; // timeout in milliseconds
+startupProperties-&gt;SetRecoveryParams( ERestartOS , KNormalMode ) ;  // TRecoveryMethod, modes are device specific  
+startupProperties-&gt;SetMonitored( ETrue ) ; // montoring enabled
+startupProperties-&gt;SetViewless( ETrue ) ;
+startupProperties-&gt;SetStartInBackground( ETrue ) ;
+
+
+err = sysMon.MonitorSelfL( *startupProperties ) ;
+   // handle error
+
+CleanupStack::PopAndDestroy( startupProperties ) ;
+sysMon.Close() ;
+...
+
+</codeblock> <p><b>Setting up Monitoring in an SSC </b> </p> <p>Process monitoring is normally configured for processes and applications using <xref href="GUID-F118988C-47C9-3AF0-BCD2-150CAA5508C3.dita"><apiname>START_PROCESS_INFO2</apiname></xref> and <xref href="GUID-FFC386AF-61B6-39F8-90BB-5AD94190E5D6.dita"><apiname>START_APP_INFO2</apiname></xref> resources in an SSC. These are defined in <filepath>sysstart.rh</filepath>. </p> <p>Note that these structures add <b>monitor</b>, <b>startup mode</b> and a <b>localisable error message</b> to <xref href="GUID-41FDADC6-D207-341F-BA5E-BF7F9CF99601.dita"><apiname>START_PROCESS_INFO</apiname></xref> and <xref href="GUID-4CE505AC-FDD9-3155-8141-C54C5EEB259E.dita"><apiname>START_APP_INFO</apiname></xref>. </p> <codeblock id="GUID-5E4F5ED2-DE43-51D1-A99C-A8864376C2BC" xml:space="preserve">
+STRUCT START_PROCESS_INFO2                  // For starting processes
+    {
+    WORD type = EStartupProcess2;           // do not change
+    LTEXT path = "";                        // VALUE REQUIRED
+    LTEXT args = "";                        // Passed to the command line of the started process
+    WORD start_method = EFireAndForget;     // can also be EWaitForStart or EDeferredWaitForStart
+    LONG timeout = 0;                       // In milliseconds only used for EWaitForStart
+    WORD retry_failure_recovery_method = ERestartOS;     // can be EIgnoreCommandFailure
+    WORD no_of_retries_on_failure = 0;      // only used for EWaitForStart
+    WORD monitor = 0;                       // can be 1 if monitoring required
+    WORD retry_failure_recovery_startup_mode = -1;
+    LTEXT localisable_resource_file="";
+    LONG localisable_resource_id=0;         // used when fail_on_error= EinformUserOnFailure
+    }
+</codeblock> <codeblock id="GUID-73B02FE6-928F-55DF-9139-93355D04CFC5" xml:space="preserve">
+STRUCT START_APP_INFO2                      // For starting apps
+    {
+    WORD type = EStartupApp2;               // do not change
+    LTEXT path = "";                        // VALUE REQUIRED
+    LTEXT args = "";                        // Ignored
+    WORD start_method = EFireAndForget;     // can also be EWaitForStart or EDeferredWaitForStart
+    WORD viewless = 0;                      // can be 1
+    WORD start_in_background = 0;           // can be 1
+    LONG timeout = 0;                       // In milliseconds only used for EWaitForStart
+    WORD retry_failure_recovery_method = ERestartOS;     // can be EIgnoreCommandFailure
+    WORD no_of_retries_on_failure = 0;      // only used for EWaitForStart
+
+    WORD monitor = 0;                       // can be 1 if monitoring required
+    WORD retry_failure_recovery_startup_mode = -1;
+    LTEXT localisable_resource_file="";
+    LONG localisable_resource_id=0;         // used when fail_on_error= EinformUserOnFailure
+    }
+</codeblock> <p><b>Setting up Monitoring in a DSC </b> </p> <p>Aftermarket components started at boot using a <xref href="GUID-E3941FAF-988E-5FB3-8E62-84E192E41EA1.dita">Dynamic Startup Configuration (DSC)</xref> may also be monitored and restarted by SysMon. The DSC API uses <xref href="GUID-90F95A8A-A901-3987-99ED-57F1A57F1C09.dita"><apiname>CStartupProperties</apiname></xref> in the manner described above. An AMC may be restarted on failure but it will not be permitted to reboot the device. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e169388_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE"><title>How to use the audio player utility </title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E45570C-A0EF-522C-BD67-FC31E4092740.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4E45570C-A0EF-522C-BD67-FC31E4092740"><title>pushd</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Change the current directory, and push the old current directory onto the directory stack. </p> <p><userinput>pushd [ -sLP ] [ arg ] </userinput> </p> <p>or </p> <p><userinput>pushd [ -sLP ] old new </userinput> </p> <p>Change the current directory to <codeph>arg</codeph>. If <codeph>arg</codeph> is not specified, change to the second directory on the stack (that is, exchange the top two entries), or change to <codeph>$HOME</codeph> if the <codeph>PUSHD_TO_HOME</codeph> option is set or if there is only one entry on the stack. Otherwise, <codeph>arg</codeph> is interpreted as it would be by <xref href="GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita">cd</xref>.The meaning of old and new is the same as for <codeph>cd</codeph>. </p> <p><userinput>pushd [ -sLP ] {+|-}n</userinput> </p> <p>Changes directory by rotating the directory list. An argument of the form <codeph>+n</codeph> identifies a stack entry by counting from the left of the list shown by the <xref href="GUID-3F1FA838-4B65-5692-8B73-AFB9896E5F10.dita">dirs</xref> command, starting with zero. An argument of the form <codeph>-n</codeph> counts from the right. If the <codeph>PUSHD_MINUS</codeph> option is set, the meanings of <codeph>+</codeph> and <codeph>-</codeph> in this context are swapped. </p> <p>If the option <codeph>PUSHD_SILENT</codeph> is not set, the directory stack will be printed after a <codeph>pushd</codeph> is performed. </p> <p>The options <codeph>-s</codeph>, <codeph>-L</codeph> and <codeph>-P</codeph> have the same meanings as for the <xref href="GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita">cd</xref> builtin. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E4C842F-1AF6-505D-B378-2043FDD8985C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-4E4C842F-1AF6-505D-B378-2043FDD8985C"><title>C++ API items</title><shortdesc>This section lists the C++ API items that make the CommsDat API. Tools and applications use these API items to access tables, records ad fields in the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section> </section> <table id="GUID-2BC0D877-330E-5D8F-886D-795E60075FC6"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Item</entry> <entry>Header</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;T&gt;</codeph>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordBase</apiname></xref>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDRecordBase</apiname></xref>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBGenericRecord</apiname></xref>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSetBase</apiname></xref>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> <codeph>&lt;T&gt;</codeph>  </p> </entry> <entry><p>metadatabase.h </p> </entry> </row> <row><entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDLatestVersion</apiname></xref>  </p> </entry> <entry><p>commsdat.h </p> </entry> </row> </tbody> </tgroup> </table> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5" xml:lang="en"><title>Location
+Acquisition API Runtime Behaviour</title><shortdesc>This document describes some differences in runtime behaviour that
+application clients may observe depending on the Symbian platform on which
+they are running. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>This document describes some differences
+in runtime behaviour that a Location Acquisition API client may observe. The
+exact behaviour of the API depends on the configuration of the LBS subsystem
+in the Symbian platform and on the positioning technologies that are available. </p> </section>
+<section><title>Types of runtime behaviour differences</title> <p>There are
+two main types of runtime behaviour differences: </p> <ul>
+<li id="GUID-8B64686F-3159-52F5-A576-30C3B5428E6C"><p>The <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita#GUID-4E56E531-5757-5740-9C7D-705D427FA9D5/GUID-95EE0194-408E-5366-9273-8F72682E05F2">accuracy of position updates</xref> returned to API clients </p> </li>
+<li id="GUID-08F51FA9-4AC9-5B0D-A53C-729828441D5E"><p>The <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita#GUID-4E56E531-5757-5740-9C7D-705D427FA9D5/GUID-2DF0D6FF-BB17-56B9-B19F-C0F33C6F0F15">source of position updates</xref> (the positioning module from which the
+updates may originate) </p> </li>
+</ul> <p id="GUID-95EE0194-408E-5366-9273-8F72682E05F2"><b>Accuracy of position updates</b> </p> <p>This
+section describes the behavior that a client application can expect depending
+on the Symbian platform on which it runs. </p> <p>A client application may
+receive a location update whenever a position is available. The current latitude
+and longitude have been determined but their accuracy may not meet the client’s
+expectations. A timeout of the client's location request will only occur when
+it is not possible to calculate a position (irrespective of its quality). </p> <p>Some
+platforms may be configured to return a position update only if it meets the
+required accuracy. A call to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> completes
+only when the Location Server has a position fix that meets the specified
+quality criteria. A client may set its accuracy requirements by passing a <xref href="GUID-483AE6F4-5DEB-312D-ADDA-FC5AA932DE3D.dita"><apiname>TPositionCriteria</apiname></xref> object
+in <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-AF3D9B5F-8025-3AFF-A101-82025520EBD6"><apiname>RPositioner::Open()</apiname></xref>. If no criteria are specified then
+default quality criteria are used to filter position updates returned to the
+client. </p> <p>It is recommended that applications are designed to be aware
+that they may receive positions that do not meet their expected accuracy before
+the timeout period expires. If accuracy is critical to a client application
+it should check the accuracy values <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita#GUID-AB9F288E-86C6-327A-9E53-2EA746416038/GUID-187C862D-500F-3095-8F03-9EF4E4CEF80F"><apiname>TPosition::HorizontalAccuracy()</apiname></xref> and <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita#GUID-AB9F288E-86C6-327A-9E53-2EA746416038/GUID-742043CB-40B1-3BA1-A879-CA2F401C56C3"><apiname>TPosition::VerticalAccuracy()</apiname></xref> of
+the returned <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> object. This is advised as the <codeph>TRequestStatus</codeph> return
+parameter may not indicate position quality loss (it may be set to <codeph>KErrNone</codeph> and
+not to <codeph>KPositionQualityLoss</codeph>). </p> <p>Table 1 shows the position
+updates and <codeph>TRequestStatus</codeph> values that are returned by the
+Location Acquisition API when a client calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref>. </p> <table id="GUID-EEE1C9B5-A81C-589D-9636-79E900415F4F">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Event</entry>
+<entry> API response to client (partial updates OFF)</entry>
+<entry>API response to client (partial updates ON)</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Module returns <codeph>&lt;error code&gt;</codeph> before request timeout. </p> </entry>
+<entry><p>Position is returned. <codeph>TRequestStatus</codeph> is <codeph>&lt;error
+code&gt;</codeph>. </p> </entry>
+<entry><p>Position is returned. <codeph>TRequestStatus</codeph> is <codeph>&lt;error
+code&gt;</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Module returns incomplete position before request timeout. </p> </entry>
+<entry><p>Position is not returned. <codeph>NotifyPositionUpdate()</codeph> does
+not complete. </p> </entry>
+<entry><p>Position is returned. <codeph>TRequestStatus</codeph> is <codeph>KPositionPartialUpdate</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Module returns accurate position before request timeout. </p> </entry>
+<entry><p>Position is returned. <codeph>TRequestStatus</codeph> is <codeph>KErrNone</codeph>. </p> </entry>
+<entry><p>Position is returned. <codeph>TRequestStatus</codeph> is <codeph>KErrNone</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Module returns inaccurate position before request timeout. </p> </entry>
+<entry><p> <b>If LBS is configured to return all positions:</b>  </p> <p>Position
+is returned. <codeph>TRequestStatus</codeph> is <codeph>KErrNone</codeph>. </p> <p> <b>Else
+if LBS is configured to return only accurate positions:</b>  </p> <p>Position
+is not returned. <codeph>NotifyPositionUpdate()</codeph> does not complete. </p> </entry>
+<entry><p> <b>If LBS is configured to return all positions:</b>  </p> <p>Position
+is returned. <codeph>TRequestStatus</codeph> is <codeph>KErrNone</codeph>  </p> <p> <b>Else
+if LBS is configured to return only accurate positions:</b>  </p> <p>Position
+is returned. <codeph>TRequestStatus</codeph> is <codeph>KPositionPartialUpdate</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Timeout in Location Server. Module has not yet returned a position. </p> </entry>
+<entry><p>Position containing "Not a Number" <codeph>(NaN)</codeph> values
+is returned. <codeph>TRequestStatus</codeph> is <codeph>KErrTimedOut</codeph>. </p> </entry>
+<entry><p>Position containing <codeph>NaN</codeph> values is returned. <codeph>TRequestStatus</codeph> is <codeph>KErrTimedOut</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Timeout in Location Server. Module has previously returned an inaccurate
+position. </p> </entry>
+<entry><p> <b>If LBS is configured to return all positions:</b>  </p> <p>This
+can't happen. Inaccurate position would have been returned to client. </p> <p> <b>Else
+if LBS is configured to return only accurate positions:</b>  </p> <p>Inaccurate
+position is returned. <codeph>TRequestStatus</codeph> is <codeph>KPositionQualityLoss</codeph>. </p> </entry>
+<entry><p>This can't happen. Inaccurate position would have been returned
+before the timeout. </p> </entry>
+</row>
+<row>
+<entry><p>Timeout in Location Server. Module has previously returned an incomplete
+position. </p> </entry>
+<entry><p>Incomplete position is returned (contains some <codeph>NaN</codeph> values). <codeph>TRequestStatus</codeph> is <codeph>KPositionQualityLoss</codeph>. </p> </entry>
+<entry><p>This can't happen. The incomplete position would have been returned
+before the timeout. </p> </entry>
+</row>
+<row>
+<entry><p>Module returns an accurate or an inaccurate position and an error
+code of <xref href="GUID-A88ADC78-BF9D-31C5-AF05-8613C326D2F3.dita"><apiname>KPositionCalculationFutile</apiname></xref>. </p> </entry>
+<entry><p>The most accurate available position is returned. </p> <p> <b>If
+LBS is configured to return all positions:</b>  </p> <p> <codeph> TRequestStatus</codeph> is <codeph>KErrNone</codeph>. </p> <p> <b>Else
+if LBS is configured to return only accurate positions:</b>  </p> <p>TRequestStatus
+is <codeph>KPositionQualityLoss</codeph> if position is inaccurate. </p> </entry>
+<entry><p>The most accurate available position is returned. </p> <p> <b>If
+LBS is configured to return all positions:</b>  </p> <p> <codeph> TRequestStatus</codeph> is <codeph>KErrNone</codeph>. </p> <p> <b>Else
+if LBS is configured to return only accurate positions:</b>  </p> <p> <codeph>TRequestStatus</codeph> is <codeph>KPositionQualityLoss</codeph> if
+position is inaccurate. </p> </entry>
+</row>
+<row>
+<entry><p>Module returns an incomplete position and an error code of <xref href="GUID-A88ADC78-BF9D-31C5-AF05-8613C326D2F3.dita"><apiname>KPositionCalculationFutile</apiname></xref>. </p> </entry>
+<entry><p>The most accurate available position is returned. TRequestStatus
+is <codeph>KPositionQualityLoss</codeph>. </p> </entry>
+<entry><p>The most accurate available position is returned. TRequestStatus
+is <codeph>KPositionPartialUpdate</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Client calls <codeph>RPositioner::CompleteRequest()</codeph>. </p> </entry>
+<entry><p>The last calculated position is returned. <codeph>TRequestStatus</codeph> is <codeph>KPositionEarlyComplete</codeph>. </p> </entry>
+<entry><p>The last calculated position is returned. <codeph>TRequestStatus</codeph> is <codeph>KPositionEarlyComplete</codeph>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Table 1. Location Acquisition API runtime behavior. </p> <p id="GUID-2DF0D6FF-BB17-56B9-B19F-C0F33C6F0F15"><b>Source of position updates</b> </p> <p>This
+section describes differences in the source of the position updates that a
+client application receives depending on the Symbian platform on which it
+runs. </p> <p>On platforms with more than one positioning module, a position
+may be obtained by the Location Server from more than one module (for example,
+a position may be returned from GPS hardware or from the network). Whether
+a position is returned to the Location Acquisition API client depends on which <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-AF3D9B5F-8025-3AFF-A101-82025520EBD6"><apiname>RPositioner::Open()</apiname></xref> method
+was used to open the client/server subsession. </p> <p>On some platforms,
+when a client/server subsession is opened using <codeph>RPositioner::Open(RPositionServer&amp;
+aPosServer, TPositionModuleId              aModuleId)</codeph> only position
+updates from the specified module are returned to the client. Opening a subsession
+using other versions of <codeph>RPositioner::Open()</codeph> can return position
+updates from other positioning modules. </p> <p>On some platforms LBS may
+be configured to return position updates from any positioning module when
+any version of <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-AF3D9B5F-8025-3AFF-A101-82025520EBD6"><apiname>RPositioner::Open()</apiname></xref> is used. </p> </section>
+</conbody><related-links>
+<link href="GUID-0D5692FB-305E-58B2-B105-B309BB9AE38D.dita"><linktext>Location
+Acquisition API Reference</linktext></link>
+<link href="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita"><linktext>How to Get
+Module Status Changes</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E838A77-C7B5-5B1F-93F5-F3577901914B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4E838A77-C7B5-5B1F-93F5-F3577901914B" xml:lang="en"><title>Policy
+Resource </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Policies resource structure</title> <p>A policy resource is
+made up of the following; a header, followed by any number of policies. Policies
+need to be ordered from most specific to least specific. </p> <p>There are
+two ways to control whether prompts are generated for system servers: </p> <ul>
+<li id="GUID-99E2B7E8-5FA0-5A55-ADE9-D832C4A6CF3C"><p>Using the <codeph>authorisationpolicy</codeph> setting
+in the header. If <codeph>authorisationpolicy</codeph> is set to anything
+except <codeph>EAlwaysCheck</codeph>, prompts will not be generated for Messaging
+Server, Java VM etc because these components are in the ROM, have the appropriate
+capabilities and have protected secure ids. </p> </li>
+<li id="GUID-E8B43077-ECC9-5D4F-A613-B168058E0162"><p>Using the <codeph>SID_LIST</codeph> setting
+in the policy. The <codeph>SID_LIST</codeph> can be used to create a very
+specific policy that always allows requests from trusted components as in
+the example policy below. </p> </li>
+</ul> </section>
+<section><title>Header </title> <p>The header includes the following possible
+fields: <codeph>majorversion</codeph>, <codeph>minorversion</codeph>, <codeph>authorisationpolicy</codeph>, <codeph>dialogcreator</codeph> and <codeph>policyevaluator</codeph>. </p> <p>The major version number controls whether
+existing decision records for services corresponding to the policy file are
+deleted or preserved when the policy file is upgraded. </p> <p>The <codeph>authorisationpolicy</codeph> field
+determines whether a system server must request authorisation from the User
+Prompt Service even if the client application passed the system server's security
+check. The value for <codeph>authorisationpolicy</codeph> can be one of the
+following: </p> <table id="GUID-45D126E1-1CF1-59AF-A438-AB252BC49A4D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>EAlwaysCheck</codeph>  </p> </entry>
+<entry><p>Ignore the system server (platsec) checks and always ask the UPS
+what to do. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ECheckPostManufacture </codeph>  </p> </entry>
+<entry><p>For application executables with a protected SID launched from the
+Z drive, where the system server checks have passed, allow the request. Otherwise
+call the UPS which may still choose to allow the request. For all other executables,
+ignore the system server (platsec) checks and always ask the UPS what to do. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ECheckUnprotectedSids</codeph>  </p> </entry>
+<entry><p>For application executables with a protected SID (regardless of
+drive), where the system server checks have passed, allow the request. Otherwise
+call the UPS which may still choose to allow the request. For all other executables,
+ignore the system server (platsec) checks, and always ask the UPS what to
+do. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> ECheckIfFailed</codeph>  </p> </entry>
+<entry><p>If the system server checks passed, allow the request. If they failed,
+call the UPS which may still choose to allow the request. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> ENeverCheck</codeph>  </p> </entry>
+<entry><p>If the system server checks passed, allow the request. If the system
+server checks failed, reject the request. Never query the UPS – just use existing
+security check result implemented by system server. (This is the legacy pre-UPS
+behaviour.) </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>If no <codeph>authorisationpolicy</codeph> is provided, the default
+is <codeph>ECheckPostManufacture</codeph>. </p> <p> <b>Note</b>: If a policy
+file is not defined for a system server or service then a default value of <codeph>ENeverCheck</codeph> is
+used. </p> <p>The <codeph>dialogcreator</codeph> must be provided and must
+not be zero. In the policy file it is the only field that is actually required.
+The <codeph>policyevaluator</codeph> can be specified here, but if one is
+not specified, a default policy evaluator is called. The <codeph>dialogcreator</codeph> and <codeph>policyevaluator</codeph> UIDs
+are allocated by Symbian Signed. They are the implementation UIDs of the relevant
+ECOM plugins. </p> <p>The following shows an example header: </p> <codeblock id="GUID-C626C28A-9121-5AC6-B075-C3EE939C3DC1" xml:space="preserve">header = POLICY_HEADER
+ {
+ // The major version number of THIS policy file.
+ // When policy files are upgraded or eclipsed the UPS deletes all decision
+ // records for the system server server SID and service ID where the major
+ // version in the decision record is not equal to the major version
+ // number in the policy file.
+ majorversion = 0;
+ // The minor version number of THIS policy file.
+ minorversion = 0; 
+
+ // Built-in (protected SID and loaded from Z drive) client applications
+ // do not require authorisation from the UPS if the client has the correct
+ // capabilities.
+ authorisationpolicy = ECheckPostManufacture;
+ //dialogcreator and policyevaluator UIDs
+ dialogcreator = 0x10283694;
+ policyevaluator = 0x10283698;
+ };
+</codeblock> </section>
+<section><title> Policies</title> <p>Policies can have the following optional
+fields: </p> <table id="GUID-5CB991E2-1268-5D07-BF99-585F6DC2C5A3">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b> Field</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+<entry><p> <b>Possible values </b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>sid_classes </codeph>  </p> </entry>
+<entry><p>A bitmask that defines the set of SID classes that this policy applies
+to. It is ignored if a <codeph>sid_list[]</codeph> field is provided. </p> </entry>
+<entry><p> <codeph>KProtectedSids</codeph> (All clients with a protected SID) <codeph>KUnprotectedSids</codeph> (All
+clients with an unprotected SID) <codeph>KAllSids</codeph> (All clients) </p> <p>(Defined
+in ups/policies.rh.) </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> sid_list[] </codeph>  </p> </entry>
+<entry><p>An array of LONGs that defines a set of specific client application
+SIDs that this policy applies to. </p> </entry>
+<entry><p>&lt;Application SID&gt;, &lt;Application SID&gt;, … </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>systemserversecurity</codeph>  </p> </entry>
+<entry><p>Allows policies to be matched according to whether the client process
+passed the security check defined by the system server. Typically, this corresponds
+to whether the client has the correct capabilities for the requested service.
+However, system servers are free to use features other than capabilities in
+their security check. </p> </entry>
+<entry><p> <codeph> ESystemServerSecurityPassedOrFailed</codeph> (The policy
+applies regardless of whether the client process passed the system server's
+security check.) </p> <p> <codeph>ESystemServerSecurityFailed</codeph> (The
+policy only applies if the client process failed the system server's security
+check.) </p> <p> <codeph>ESystemServerSecurityPassed</codeph> (The policy
+only applies if the client process passed the system server's security check.) </p> <p>(Defined
+in ups/policies.rh.) </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> destination</codeph>  </p> </entry>
+<entry><p>A string to match against the destination supplied by system server. </p> </entry>
+<entry><p>“&lt;STRING&gt;” (e.g. telephone number) or “*” for all (The default
+value is "*" and the matching rules are those of <codeph>TDesC::MatchF</codeph>,
+so it is a case-insensitive wildcard match.) </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> options</codeph>  </p> </entry>
+<entry><p>A bit field to control which buttons to display on the dialog. </p> </entry>
+<entry><p> <codeph>KYes</codeph>, <codeph>KNo</codeph>, <codeph>KSessionYes</codeph>, <codeph>KAlways</codeph>, <codeph>KNever</codeph>, <codeph>KSessionNo</codeph>  </p> <p> <codeph>KSessionNo</codeph> should be used with care because it
+is likely that a system server will define a session to be the life-time of
+the client process. Consequently, the client application would have to be
+restarted in order to gain access to the service. This makes it difficult
+to write a well-behaved application that switches between on-line and off-line
+modes. </p> <p>(Defined in ups/policies.rh.) </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>policyevaluator </codeph>  </p> </entry>
+<entry><p>If non-zero, overrides the implementation UID of the policy evaluator
+defined in the header. </p> </entry>
+<entry><p>&lt;UID&gt; </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> dialogcreator </codeph>  </p> </entry>
+<entry><p>If non-zero, overrides the implementation UID of the dialog creator
+defined in the header. </p> </entry>
+<entry><p>&lt;UID&gt; </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> flags</codeph>  </p> </entry>
+<entry><p>Flags specific to the policy evaluator. Can be used to trigger specific
+behaviour. </p> </entry>
+<entry><p>&lt;16-bit number&gt; </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Note</b>: If the matched policy defines only positive <codeph>options</codeph> (Yes,
+Session or Always), the UPS silently instructs the system server to allow
+the request. If the matched policy defines only negative <codeph>options</codeph> (No
+or Never), the UPS silently instructs the system server to reject the request.
+It is usually better not to configure UPS policies to silently reject requests
+because it is likely to cause the client application to fail without warning.
+Instead, the policy could restrict requests to one-shot permissions (Yes or
+No). </p> </section>
+<section><title>Matching policies </title> <p>The UPS compares each policy
+within a file in order, starting with the first policy in the file, against
+the incoming request until a match is found. The match is based on the secure
+id of the client application, the destination of the request (e.g. Phone number,
+Access Point) and whether the client passed the system server's platform security
+check. All three elements must match (wildcards are supported) the data in
+the request before the policy is considered a match. </p> <p>You can use the <codeph>sid_list</codeph> and <codeph>destination</codeph> fields
+to fine-tune your policies, by providing specific application UIDs in <codeph>sid_list</codeph> and
+specific destinations, such as one telephone number, in <codeph>destination</codeph>. </p> <p>Because
+the UPS compares incoming requests against policies in order, the UPS requires
+that all of the policies for a given service are ordered from most specific
+to least specific in a single policy file. Only the first policy that matches
+is evaluated. So if, for example, you need to provide specific behaviour for
+one application that falls into the category <codeph>KProtectedSids</codeph> as
+well as providing more general behaviour for all other applications falling
+into the <codeph>KProtectedSids</codeph> category, you need to define the
+policy for the individual application first. Likewise, if you need to provide
+behaviour for one particular destination but another behaviour for all other
+destinations, you need to specify the policy for the specific destination
+first. </p></section>
+<section><title>Default policies</title> <p>If a UPS policy
+file exists for a system server/service but no policy matches the request,
+the UPS internally creates a default policy object that is passed to the Policy
+Evaluator and Dialog Creator. This policy object allows one-shot permissions
+for applications, which will already have got past the platform security check.
+Policy file authors may override this by defining a generic policy to match
+all requests at the end of the policy file. </p></section>
+<section><title>See also</title> <p> <xref href="GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99.dita">Writing
+the UPS Policy File</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4E985144-C4E6-5114-B88F-B9C92F313D91.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4E985144-C4E6-5114-B88F-B9C92F313D91" xml:lang="en"><title>The
+control environment</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The control environment packages the interface to the window server and
+provides an environment for creating controls. It is implemented in a single
+class, <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref>, which encapsulates active objects and an
+active scheduler for receiving events from the window server. Each application
+has exactly one <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> object which is stored in Thread
+Local Storage (TLS). </p>
+<p> <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> also provides a number of utilities which are
+useful to most applications. These utilities include: </p>
+<ul>
+<li id="GUID-E6CC6A2A-2B44-586F-B0B3-5CC8E2862490"><p>creating a graphics
+context, the <keyword>system graphics context</keyword>. This is the standard
+graphics context which is normally used for drawing controls. It may be accessed
+using <codeph>CCoeEnv::SystemGc()</codeph>  but controls should get their
+graphics context using <codeph>CCoeControl::SystemGc()</codeph> rather than
+directly from the environment.  </p> </li>
+<li id="GUID-7BDF28EF-D209-51E6-B07E-4DB65045D2FE"><p>access to the <keyword>window
+server session</keyword>  </p> </li>
+<li id="GUID-028E7FCF-255D-5C82-8100-EDF4F2FCD3B1"><p>utilities for using
+fonts </p> </li>
+<li id="GUID-4CE27203-A304-57C9-BA08-CE523F61582A"><p>utilities for reading
+resource values from <keyword>resource files</keyword>  </p> </li>
+<li id="GUID-2875D169-00F7-5C33-AEF7-4C8BB41B74EE"><p>Support for singleton
+(static) objects </p> </li>
+</ul>
+<section id="GUID-C049C06F-8668-44C3-B162-7675CB00515A"><title>Resource readers and resource files</title> <p> <codeph>CCoeEnv</codeph> maintains
+a list of the resource files used by the application. Files may be added to
+the list using <codeph>AddResourceFileL()</codeph> and removed using <codeph>DeleteResourceFile()</codeph>. </p> <p>The
+utility functions provided by the control environment read resources and resource
+data from the resource files in its list. </p> <p>A resource file consists
+of a list of resources, each identified by a resource ID. Each resource consists
+of a list of resource values in the form of binary data. The order and lengths
+of the values for each resource type are defined in a resource definition
+(generally stored in a file with an <filepath>.rh</filepath> extension). </p> <p>Reading
+data from a resource file requires two stages: </p> <ul>
+<li id="GUID-ADC4F5E4-5FCA-55FA-AB2A-0B607D9350DD"><p>read a resource from
+the resource file into a buffer </p> </li>
+<li id="GUID-84FC56CB-F182-52C5-BFA8-79A51ABC4810"><p>read values from the
+resource using a resource reader </p> </li>
+</ul> <p> <codeph>CCoeEnv</codeph> provides utility functions to perform the
+first of these stages and functions to create resource readers. </p> <p>An
+application's default resource file, one which has the same name as the application,
+is loaded automatically. </p> <p>It should be noted that stage two can be
+omitted if the resource contains only one value, or if it is read into a formatted
+buffer. In both of these cases the resource data can be read straight from
+the buffer. </p> </section>
+<section id="GUID-4B579429-B1F4-4B8C-9C78-359D2B568303"><title>Singletons - CCoeStatic</title> <p>The <xref href="GUID-F0C084E2-C683-39E2-A131-77FE3206A02C.dita"><apiname>CCoeStatic</apiname></xref> base
+class is closely associated with <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref>. Between them
+they allow singleton objects to be created and stored in Thread Local Storage
+(TLS). By doing so they provide an equivalent to writeable global static data. </p> <p>Classes
+derived from <xref href="GUID-F0C084E2-C683-39E2-A131-77FE3206A02C.dita"><apiname>CCoeStatic</apiname></xref> are automatically added to the
+environment when they are instantiated for the first time. Subsequent attempts
+to instantiate an object of the same type will result in a panic (with error
+code <codeph>ECoePanicDuplicateObjectUid</codeph>). </p> <p>Each singleton
+requires a UID and may be given a destruction priority (relative to other
+singletons and the AppUi) and a scope (<codeph>EThread</codeph> or <codeph>EApp</codeph>). </p> <p>Once
+a singleton has been created it may be accessed through the <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> API. </p> <codeblock id="GUID-99260739-1E0F-5032-989E-B1D8607ABE2C" xml:space="preserve">// Singleton access
+IMPORT_C static CCoeStatic* Static( TUid aUid ) ;
+IMPORT_C CCoeStatic* FindStatic( TUid aUid ) ;</codeblock> <p> <xref href="GUID-F0C084E2-C683-39E2-A131-77FE3206A02C.dita"><apiname>CCoeStatic</apiname></xref> has
+no public functions. </p> </section>
+<section id="GUID-097FE0A7-2221-46DE-804D-5E25E85F6F96"><title>See also</title> <p> <xref href="GUID-7250950C-5502-5ACE-864B-0EFD5C253053.dita">How
+to create a Singleton</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74"><title>Handling BLOBs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to Binary Large Objects (BLOB) in Symbian SQL. </p> <section><title>Purpose</title> <p>A BLOB is an SQL database container object for binary large objects, usually images or audio files but may also include other binary files such as an application executable. </p> </section> <section><title>Features of SQL BLOB</title> <p>BLOBS offer the following features: </p> <ul><li id="GUID-50CE608F-04BA-5D0F-BA59-E608F4B10989"><p>read from and write to BLOB objects in a RAM-efficient manner -- enables an overall reduction of RAM usage, </p> </li> <li id="GUID-60702664-4ABF-5F90-9DDE-C77969C0DC0B"><p>reduced read latency (compared to previous versions) -- improving the responsiveness of client applications, </p> </li> <li id="GUID-72DAFF78-CF0D-50F0-8C29-BF95920D2CA0"><p>larger BLOB objects can be stored and retrieved (&gt;16Mb). Before version 9.5 there was a limit on the size of a BLOB object supported by Symbian SQL. This limit was dictated by the amount of server-side RAM available. Applications that needed to store large BLOB objects in their database (for example, MP3 files) are no longer restricted by this limit. </p> </li> <li id="GUID-D66B611B-8908-59B1-A7BA-BED5D6702509"><p>The maximum possible length for a blob is 2147483647 bytes. </p> </li> </ul> </section> <section><title>Streaming</title> <p>The classes <xref href="GUID-03426E55-3C0A-322B-9CE7-556D63FD762F.dita"><apiname>RSqlBlobReadStream</apiname></xref> and <xref href="GUID-9D7747B6-E090-3450-9906-845B549F966F.dita"><apiname>RSqlBlobWriteStream</apiname></xref> allow direct access to BLOB content. These classes do not require the whole BLOB to be loaded into RAM before streaming can begin. These classes match the standard Symbian <xref href="GUID-81056EAD-722C-373F-A8CF-4CC67A5B4468.dita"><apiname>RReadStream</apiname></xref> /<xref href="GUID-ADAC48A2-3D24-306B-9473-70201F4D351D.dita"><apiname>RWriteStream</apiname></xref> idiom. </p> <p>The server intelligently chooses the size of an internal buffer to incrementally read/write the requested blob data in blocks. The size of the buffer is calculated based on a combination of the size of the request and the value of <codeph>aBlockSizeHint</codeph> (if specified). </p> <p> <codeph>aBlockSizeHint</codeph> is provided by the client to provide a hint to the server about the size of block that it is intending to use to read/write the blob data. This is advance information about the intended behaviour of the client that the server may use to its benefit to read/write the blob data. </p> </section> <section><title>Whole-blob access</title> <p>The class <xref href="GUID-78544D11-1972-3492-9BD7-D794240895E1.dita"><apiname>TSqlBlob</apiname></xref> allows one-shot storage and retrieval of whole blobs. This class avoids the need for double buffering of the blob in both the client and the server. </p> <p>there are two versions of the BLOB get functions. One is <i>non-leaving</i> and the other is <i>leaving</i>. </p> <p>Use the non-leaving variant when the client knows that the blob will either: </p> <ul><li id="GUID-557D1A55-1E94-56F6-8794-1257ED5D2E17"><p>all be of a fixed size, </p> </li> <li id="GUID-7C5CA733-C030-5761-A2C0-5EAA7A3B50FD"><p>not exceed an upper size limit. </p> </li> </ul> <p>In these situations the client can pre-allocate a buffer and avoid the overhead of memory allocation. </p> <p>Use the leaving variant when the client does not have prior knowledge of the BLOB size (or if the size varies wildly). In this situation the server allocates a buffer and passes ownership to the client. </p> </section> <section><title>RAM benefits</title> <p>Symbian SQL has been improved to eliminate the need for a 2 MB server-side buffer. Data is transferred to the client in blocks so for example, the server-side buffer may be reduced to 32 KB. </p> <p>Previous to version 9.5, both whole-blob and streaming use cases require up to 3MB of server-side RAM. The page cache size is capped at 1MB due to a built-in limiting mechanism. But, a 2MB buffer must be allocated to hold the entire blob. A critical side-effect of this is that, due to heap exhaustion, there is a maximum limit on the size of a blob object that can be written to or read from a database. </p> <p>In the following diagram the top two sections illustrate whole-blob retrieval in which the entire blob is retrieved in one go using <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref>. The bottom section illustrates streaming retrieval in which the blob is retrieved in blocks specified by the client using <xref href="GUID-35BF7B4A-C4F7-3215-B5DF-6D0682247976.dita"><apiname>RSqlColumnReadStream</apiname></xref>. </p> <fig id="GUID-60AEFF09-235C-55F3-BBEF-D484964A4A82"><title>
+             Reading a 2MB blob. 
+          </title> <image href="GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e340217_href.png" placement="inline"/></fig> </section> </conbody><related-links><link href="GUID-5C3005B3-7008-5209-A2BD-D52B8B422D58.dita"><linktext>SQL Security
+                Policies</linktext> </link> <link href="GUID-CB33868A-139C-5976-B021-709E663FA21B.dita"><linktext>Database file
+                format</linktext> </link> <link href="GUID-DA1D327C-141C-524A-AD57-5E246745808D.dita"><linktext>SQLite
+                Modules</linktext> </link> <link href="GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita"><linktext>Free Space
+                Reclaimation</linktext> </link> <link><linktext/></link><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F004877-DFDD-5282-B8B6-7F36D892B122.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4F004877-DFDD-5282-B8B6-7F36D892B122"><title>Resource Management Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Resource Management collection contains components responsible for controlling device hardware. The components give high-level access to phone resources, such as light and vibration, and provide a notification service for power and memory. </p> <section><title>Description</title> <p>The Resource Management collection contains components which control hardware resources, publish battery and power state information, and provide notification in the event of power and memory emergencies. It is dependent on important components, such as Plug-in Framework, Feature Manager, and CentRep. </p> <ul><li id="GUID-CF4630EE-C873-5D83-89C8-7C037F78FA24"><p>Control of hardware resources: The Hardware Resource Manager provides standard Light, Extended Light and Vibra APIs which allow clients to interrogate and control device hardware resources, such as backlights and vibrators. The Hardware Resource Manager is a server for which device creators can write hardware-specific ECom plug-ins. </p> </li> <li id="GUID-784078DA-9000-52E9-AC04-00FF33039E4E"><p>Battery state and power information: The Hardware Resource Manager uses the Publish and Subscribe (P&amp;S) system to provide up-to-date information on the charging status, battery level and battery state of the device. Any application may subscribe to the appropriate P&amp;S keys to receive updates. </p> </li> <li id="GUID-01769637-801A-50D0-A1DC-7F068305E916"><p>The Power and Memory Notification Service notifies clients that the power is about to be switched off, the system is about to restart or if a low memory situation has occurred. Applications use such notifications to save data, and possibly to close down. It also initializes the final power-down sequence if this is indicated in the shutdown request it receives from UI component. </p> </li> </ul> </section> <section><title>Components</title> <p>The Resource Management collection includes the following components: </p> <ul><li id="GUID-5BF15103-47AD-5A02-AB22-FA600BA9B8B8"><p><xref href="GUID-F2289115-B1F0-595D-AA1C-3E01F08911CA.dita">Hardware Resources Manager</xref>  </p> </li> <li id="GUID-A30123E2-F7F6-55BF-B5E2-5555546F0B97"><p>Power and Memory Notification Service </p> </li> </ul> </section> <section><title>Using Resource Management</title> <p>Application developers can use the APIs of the Hardware Resource Manager to develop device-independent applications that can use and control hardware, and can subscribe to the P&amp;S system to receive information on charging and battery state. </p> <p>Device creators can develop hardware specific plug-ins, using standard interfaces, which allow device independent applications to use and control hardware. </p> </section> </conbody><related-links><link href="GUID-F8C8CE42-E7C9-5AFC-86BC-B78F677F1B05.dita"><linktext>Device Services Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4"><title>Using security on outgoing sockets</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>For an outgoing connection, the Bluetooth stack will not, by default, enforce any particular Bluetooth security. If the remote device requires authentication/encryption to connect, then this will be handled by the stack transparently to the application. </p> <section><title>How to use security on outgoing sockets</title> <p>It may occasionally be necessary for the local application to insist on authenticating or encrypting the link. In this case, there are control operations (<codeph>ioctls</codeph>) that can be issued on a connected <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> that will authenticate (<codeph>ioctl
+        </codeph> <xref href="GUID-429D5401-3C12-38B8-BC41-A0917BF74EF8.dita"><apiname>KHCIAuthRequestIoctl</apiname></xref>) or encrypt (<xref href="GUID-01EFBA4B-E35C-3EFE-9678-60EC887CD93D.dita"><apiname>KHCIEncryptIoctl</apiname></xref>) the link. </p> <p><b>Issuing Authentication Requests </b> </p> <p>The following example shows the authentication request <codeph>ioctl</codeph> being issued. </p> <codeblock id="GUID-3C82D4B6-0D15-537B-A4C4-F0666BF7DA5A" xml:space="preserve">// Assume you have an opened L2CAP RSocket object, socket
+socket.Ioctl(KHCIAuthRequestIoctl, status, NULL, KSolBtHCI);
+User::WaitForRequest(status);
+if (status==KErrNone)
+    {
+    \\ Success...</codeblock> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-3816B7B8-8792-55B0-BE28-AA4DFE3B3E24"><p> <xref href="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita">Selecting a Remote Device</xref> </p> </li> <li id="GUID-632D24D8-7B74-5AAA-92B3-EB3857B60D44"><p> <xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring About Remote Devices</xref>  </p> </li> <li id="GUID-65DA0494-5ACC-5613-B818-8A0CA1CC8123"><p> <xref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita">Inquiring About Services on a Remote Device</xref> </p> </li> <li id="GUID-606F93E4-87C9-5B52-B683-4CBB88270BB4"><p> <xref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita">Connecting and Transferring Data to a Remote Device</xref> </p> </li> <li id="GUID-B429E0B8-3D35-539B-B88F-CC841F94FF4F"><p> <b>Using security on outgoing sockets</b> - This document </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F2F254A-1A81-507A-B364-BE4088D3B3AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F2F254A-1A81-507A-B364-BE4088D3B3AE" xml:lang="en"><title>How to
+use literal descriptors</title><shortdesc>Explains how to generate constant literal descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Generate a constant literal as follows:</p>
+<codeblock id="GUID-C3147B10-3247-5EC8-8ED9-A9574EEE4682" xml:space="preserve">_LIT(name, string);</codeblock>
+<p>where <codeph>name</codeph> is a C++ variable name and <codeph>string</codeph> is
+the literal text enclosed in a pair of double quotes. </p>
+<p>All the code fragments use the build independent form but they are equally
+valid if replaced by the explicit 16 bit variant or the explicit 8 bit variant.</p>
+<p>As <codeph>name</codeph> represents a constant variable, it is conventional
+for the variable name to start with a capital <codeph>K</codeph>, for example:</p>
+<codeblock id="GUID-9CA8C2BA-403B-5E43-A205-0C5690872988" xml:space="preserve">_LIT(KTxtMatchString,"Hello");</codeblock>
+<p>This generates the constant literal descriptor:</p>
+<codeblock id="GUID-B40B7B03-CD17-509B-86A2-701D3A902A9A" xml:space="preserve">const static TLitC&lt;5&gt; KTxtMatchString;</codeblock>
+<p>and this is initialised to contain the string <codeph>Hello</codeph>. Developers
+never need to code a <codeph>TLitC</codeph> class explicitly; it is always
+be constructed through the macro.</p>
+<p>This constant literal descriptor can be passed directly to functions which
+are prototyped to take a <codeph>const TDesC&amp;</codeph> type:</p>
+<codeblock id="GUID-CEAF3352-ED10-5E05-9571-F032375FFEE6" xml:space="preserve">TBufC&lt;32&gt; x;
+...
+x.Match(KTxtMatchString);
+...</codeblock>
+<p>The literal descriptor classes: <codeph>TLitC16</codeph>, <codeph>TLitC8</codeph>, <codeph>TLitC16</codeph>,
+also provide a conversion operator so that they can be passed to functions
+which take a <codeph>const         TRefByValue&lt;const TDesC&gt;</codeph> type.
+This means that they can be passed to functions such as <codeph>TDes::Format()</codeph>:</p>
+<codeblock id="GUID-0D9639D7-B7EE-50E1-B21A-09D8C0D0FF0A" xml:space="preserve">_LIT(KFormat1,"Length is %d");
+...
+TBuf&lt;256&gt; x;
+...
+x.Format(KFormat1,8);
+...</codeblock>
+<p>The <codeph>&amp;</codeph> and the <codeph>()</codeph> operators acting
+on a constant literal return a <codeph>const TDesC*</codeph> and a <codeph>const
+        TDesC&amp;</codeph> type respectively:</p>
+<codeblock id="GUID-4DA3E378-B0EA-5336-A921-282C632795CC" xml:space="preserve">...
+_LIT(KTxtMatchString,"Hello");
+_LIT(KFormat2,"Text is %S");
+...</codeblock>
+<codeblock id="GUID-B83E52DD-2638-57EE-BA80-B9377C40404A" xml:space="preserve">TInt length;
+length = KTxtMatchString().Length();
+...
+TBuf&lt;256&gt; x;
+x.Format(KFormat2,&amp;KTxtMatchString);
+...</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F4B97FD-B0C7-5FDD-AC50-9611B240A11E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F4B97FD-B0C7-5FDD-AC50-9611B240A11E" xml:lang="en"><title>DBMS columns, column sets, and keys</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F5E644B-B2DD-5CD3-B763-E134F1916E62.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F5E644B-B2DD-5CD3-B763-E134F1916E62" xml:lang="en"><title>How
+to use array keys</title><shortdesc>This document describes how to use array keys.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To access an array by key construct a <codeph>TKeyArrayFix</codeph>, <codeph>TKeyArrayVar</codeph> or <codeph>TKeyArrayPak</codeph> object.
+The choice depends on the array type used and the member function accessed.</p>
+<p>The following code fragments show how this is done. They construct and
+manipulate an array of <codeph>TBankAct</codeph> objects that contain data
+members representing typical bank account details.</p>
+<p>The <codeph>TBankAct</codeph> class is defined as:</p>
+<codeblock id="GUID-CC1F2475-EAF1-5BCC-AAB4-D3A37E3AA253" xml:space="preserve">class TBankAct
+    {
+public :
+    TBuf&lt;32&gt; iActName;
+    TUint    iActNum;
+    TUint    iActValue;
+    }</codeblock>
+<p>The following code builds a <codeph>CArrayFixFlat</codeph> containing three
+elements of type <codeph>TBankAct</codeph>, as follows:</p>
+<codeblock id="GUID-4B5F544E-0EF3-570C-A1AC-33F37050B955" xml:space="preserve">CArrayFixFlat&lt;TBankAct&gt; *anArray;</codeblock>
+<codeblock id="GUID-409208B3-6AEC-59A4-B934-8FF4E6E7BBC6" xml:space="preserve">anArray = new CArrayFixFlat&lt;TBankAct&gt;(3);
+TBankAct bankact;
+...
+_LIT(KName1,"A.Bloggs");
+_LIT(KName2,"F.B.Wittering");
+_LIT(KName3,"Z.Makepeace");
+...
+bankact.iActName  = KName1;
+bankact.iActNum   = 3;
+bankact.iActValue = 300;
+anArray-&gt;AppendL(bankact);
+...
+bankact.iActName  = KName2;
+bankact.iActNum   = 1;
+bankact.iActValue = 6000;
+anArray-&gt;AppendL(bankact);
+...
+bankact.iActName  = KName3;
+bankact.iActNum   = 2;
+bankact.iActValue = 32;
+anArray-&gt;AppendL(bankact);
+...</codeblock>
+<section id="GUID-BFC4A425-65CC-4DC0-B7F8-C2FAAB10714D"><title>Sorting the array</title> <p>To sort the array into account
+number order, first construct a <codeph>TKeyArrayFix</codeph> object to define
+the location and type of key on which to sort the array:</p> <codeblock id="GUID-6454BA23-88FF-539E-AA0B-E40FEC4196FC" xml:space="preserve">TKeyArrayFix actNumKey(_FOFF(TBankAct,iActNum),ECmpTUint);</codeblock> <p>In practice, a data member like <codeph>iActNum</codeph> may be private,
+in which case this statement may not be permitted by the compiler. Two solutions
+are:</p> <ol id="GUID-21F6AC95-7A84-5B65-8D59-03F96064B53A">
+<li id="GUID-8478D06F-A5B4-598D-B022-5D3D1032F082"><p>Make the class in which <codeph>actNumKey</codeph> is
+declared a friend of <codeph>TBankAct</codeph> </p> </li>
+<li id="GUID-A733C432-A117-5DD0-9715-E38673428E9E"><p>Declare a public <codeph>const</codeph>  <codeph>static</codeph> <codeph>TInt</codeph> data
+member <codeph>iOffset</codeph> (for example) in the <codeph>TBankAct</codeph> class
+and include a line of code:</p> </li>
+</ol> <ul>
+<li id="GUID-99C1E792-0BD4-5C13-A793-30B8D48E195D"><p><codeph>const TInt TBankAct::iOffset
+=           _FOFF(TBankAct,iActNum);</codeph> </p> </li>
+</ul> <p><codeph>actNumKey</codeph> can then be constructed:</p> <codeblock id="GUID-CF0B8064-39D5-55B0-B10B-D541096F49AF" xml:space="preserve">TKeyArrayFix actNumKey(bankact.iOffset,ECmpTUint);</codeblock> <p><codeph>ECmpTUint</codeph> is
+an enumerator of the <codeph>TKeyCmpNumeric</codeph> enumeration; this constructor
+defines a numeric key.</p> <p>Now use the key definition to do the sort:</p> <codeblock id="GUID-16D162F9-BC36-5EE3-998D-377010E3CF1B" xml:space="preserve">...
+anArray-&gt;Sort(actNumKey);
+...</codeblock> <p>See also:</p> <ul>
+<li id="GUID-B6FD456A-0968-5850-8685-5C4CEAC0789C"><p><xref href="GUID-D057148C-4D11-39D1-859C-695D2176CFDE.dita"><apiname>_FOFF</apiname></xref> </p> </li>
+</ul> </section>
+<section id="GUID-648B5871-3FFE-42D4-BC64-0DDEEDF851C5"><title>Re-sort the array</title> <p>Re-sort the array into account
+name order, ignoring the case of the name, and then insert another element
+into the array maintaining the same order.</p> <p>First, construct another <codeph>TKeyArrayFix</codeph> object:</p> <codeblock id="GUID-56394BA1-68FA-5666-BD2B-134ACE0AAAEC" xml:space="preserve">TKeyArrayFix actNameKey(_FOFF(TBankAct,iActName),ECmpFolded);</codeblock> <p><codeph>ECmpFolded</codeph> is an enumerator of the <codeph>TKeyCmpText</codeph> enumeration; this constructor
+defines a descriptor key.</p> <p>Now use the key definition to re-sort the
+array and insert a new element into the correct place:</p> <codeblock id="GUID-871411F9-6EA9-5166-ACB7-138FF677E971" xml:space="preserve">...
+anArray-&gt;Sort(actNameKey);
+...
+_LIT(KNewName,"W.B.NewPerson");
+...
+bankact.iActName  = KNewName;
+bankact.iActNum   = 69;
+bankact.iActValue = 24;
+...
+anArray-&gt;InsertIsqL(bankact,actNameKey);
+...</codeblock> <p>Note that the function <codeph>InsertIsqL()</codeph> does
+not permit duplicates. If there is already an element with the same account
+name in the array, then the call to the function leaves with<codeph>KErrAlreadyExists</codeph>.</p> <p>Use
+the key definition to find an array element with a specific name and change
+the <codeph>iActValue</codeph> data member of that element:</p> <codeblock id="GUID-44814C03-AAC5-5380-9D6E-1B89D5F371C9" xml:space="preserve">
+...
+_LIT(KFindName,"A.Bloggs");
+bankact.iActName = KFindName;
+...
+TInt position;
+if (anArray-&gt;FindIsq(bankact,actNameKey,position))
+    {
+    //  array element NOT found
+    ...
+    }
+else
+    {
+    (*anArray)[position].iActValue = 40,000,000;
+    ...
+    }</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-7BF21EA6-9138-53D9-A4E1-854CBC11D307"><p>Sorting a packed array
+is achieved using the <codeph>SortL()</codeph> member function.</p> </li>
+<li id="GUID-FCB18138-3B8E-545E-AA18-99ED50D697C9"><p>Although the example
+uses an array of fixed length objects and a <codeph>TKeyArrayFix</codeph> object,
+the same techniques apply to variable length and packed arrays.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F703F85-080F-5B77-B94D-5449764828F3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F703F85-080F-5B77-B94D-5449764828F3" xml:lang="en"><title>SMTP
+MTM Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of the Simple Mail Transfer Protocol
+(SMTP) MTM. </p>
+<section><title>Purpose</title> <p>Provides APIs for sending of Internet emails. </p> </section>
+<section><title>Architectural relationships</title> <p>The Messaging Middleware
+architecture defines a framework in which modules (MTMs) can be implemented
+that provide support for particular messaging protocols. A client MTM provides
+the API for application engines to use the protocol. The SMTP API provides
+the client MTM API, plus supporting classes for SMTP, see <xref href="GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita">Email
+Overview</xref>. </p> </section>
+<section><title>Description</title> <p>The API has four key concepts: SMTP
+Client MTM, SMTP service settings, progress information, and email message
+entry information. </p> <p><b>SMTP Client MTM</b> </p> <p>The SMTP Client
+MTM provides an SMTP-specific operation, to enable automatic sending of waiting
+messages either immediately or whenever a dial-up connection is made. Some
+generic messaging operations, such as receiving messages, are not supported
+by the MTM. </p> <p>The SMTP Client MTM class is <xref href="GUID-41102B49-38D8-3B4F-A3C2-74BE40929C3E.dita"><apiname>CSmtpClientMtm</apiname></xref>.
+Most of the functions in this class are implementations of the virtual functions
+defined by the <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref> base class. The SMTP Client MTM
+implements the standard Client MTM APIs including the functions required to
+allow clients of SendAs to create emails. </p> <ul>
+<li id="GUID-B481763A-7F7E-5CEF-A934-7D74A491406F"><p>Commits cached changes
+to the current message context to the storage controlled by the Message Server. </p> </li>
+<li id="GUID-A19D1C55-9751-59A5-B2CE-CFCE8CD0A78D"><p>Loads the cache with
+the message data for the current context </p> </li>
+<li id="GUID-7E3ECAE0-FAF4-5C53-8EF0-207439AC7975"><p>Stores and loads the
+current service settings from the object's cache into the central repository
+for the current entry. </p> </li>
+<li id="GUID-80B5A48F-8A5C-5014-9C4C-275481073EDD"><p>Creates a reply or forward
+message to the current message context. </p> </li>
+<li id="GUID-E4D7FD41-6678-592F-9675-F078E3ED0876"><p>Searches the specified
+message parts for the plain text. </p> </li>
+</ul> <p><b>SMTP service settings</b> </p> <p>Settings for SMTP connections
+are stored in the message store (<codeph>CMsvStore</codeph>) for the SMTP
+service entry. Settings include server address and email address. Encapsulation
+of service settings is provided by the <xref href="GUID-DFE18962-0022-3833-A8F0-6E4C969177C0.dita"><apiname>CImSmtpSettings</apiname></xref> class. </p> <p><b>Progress
+information</b> </p> <p>The progress information can be obtained for messaging
+operations. For SMTP operations, progress information includes such things
+as connection state and number of messages sent. Progress information is provided
+by <xref href="GUID-8E9F8DAC-9796-3BC3-9FE0-BB818C8FB87F.dita"><apiname>TSmtpProgress</apiname></xref>. </p> <p><b>Email message entry information</b> </p> <p>Protocol-specific
+data for a message is stored in fields in its index entry. A class <xref href="GUID-96CB1F06-0642-3313-8E18-1F68CBE26CCB.dita"><apiname>TMsvEmailEntry</apiname></xref> is
+provided to read these fields for e-mail protocols (including SMTP). </p> </section>
+</conbody><related-links>
+<link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type
+Module</linktext></link>
+<link href="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita"><linktext>Email Settings</linktext>
+</link>
+<link href="GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita"><linktext>Email Tutorials</linktext>
+</link>
+<link href="GUID-E56E21A9-B545-5217-A877-E64D30275157.dita"><linktext>Using the
+Policy Evaluator Plug-in</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e287503_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F882837-0DA1-5243-BA7B-696B418A160E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F882837-0DA1-5243-BA7B-696B418A160E" xml:lang="en"><title>How to
+use a package buffer</title><shortdesc>Explains how to use <codeph>TPckg&lt; &gt;</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following code fragments show an object or a C type struct being written
+to a file:</p>
+<codeblock id="GUID-852DE4D2-DF5B-50BD-B347-627809FBFA22" xml:space="preserve">TXxx x;                    // some structure
+TPtr8 xDes(&amp;x, sizeof(x)); // descriptor of that structure
+file.Write(xDes);          // write structure to file</codeblock>
+<p>While this approach works, it is not type safe. The descriptor could be
+mistaken as referring to an object which is not of type <codeph>TXxx</codeph>.</p>
+<p>Use a package buffer which works in a similar way but enforces type safety,
+as the following code fragment shows:</p>
+<codeblock id="GUID-7EBF5473-C9C8-5056-AEFA-6B3CC8822765" xml:space="preserve">TXxx x;                    // some structure
+TPckg&lt;TXxx&gt; xDes(x);       // make into a package
+file.Write(xDes);          // now write structure t file</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F8B0675-AC8D-529A-903D-DA31C8236A98.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F8B0675-AC8D-529A-903D-DA31C8236A98" xml:lang="en"><title>Using
+TArray&lt;class T&gt;</title><shortdesc>This document covers important issues in using TArray</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-658749FD-5BE8-4233-B107-DA466FB662CF"><title>Using TArray to avoid the need for overloaded variants</title> <p>The
+use of a <codeph>TArray</codeph> object can avoid the need for the member
+function of an end-user class to have overloaded variants to handle all possible
+types of arrays of <codeph>&lt;class T&gt;</codeph> elements.</p> <p>The following
+example illustrates the point. It constructs a fixed flat array, a variable
+flat array and a packed array of <codeph>&lt;TElement&gt;</codeph> objects.</p> <p>By
+taking a <codeph>TArray&lt;TElement&gt;</codeph> argument, the <codeph>CTot::Total()</codeph> member
+function can access array elements regardless of the type of array containing
+them.</p> <codeblock id="GUID-C5A09CDE-7923-5427-9BB9-0BB518597E0B" xml:space="preserve">class TElement                 // array elements
+ {
+ public:
+  TElement();
+  inline TInt GetValue() const;
+  void SetValue(TInt aVal);
+ private :
+  TInt iValue;
+ };
+</codeblock> <codeblock id="GUID-6FB0C2E8-1548-5723-A82A-DDB62124A869" xml:space="preserve">class CTot : public CBase           
+ {
+ public :
+  void Total(const TArray&lt;TElement&gt;&amp; anArray);
+ private :
+  TInt iTotalElements;
+  TInt iTotalValue;
+ };
+</codeblock> <codeblock id="GUID-9A356EEC-985D-5BA0-90BE-4C5DFBC536D5" xml:space="preserve">TElement::TElement()
+ : iValue(0)
+ {}
+
+</codeblock> <codeblock id="GUID-D0614571-E2BB-5DB4-A31F-82273D3745E3" xml:space="preserve">inline TInt TElement::GetValue() const
+ {
+ return iValue;
+ }
+
+</codeblock> <codeblock id="GUID-81D89E93-39DC-5FAF-AD45-D345824B7BA5" xml:space="preserve">void TElement::SetValue(TInt aVal)
+ {
+ iValue = aVal;
+ }
+
+</codeblock> <codeblock id="GUID-0336D0FB-E543-54BC-9A12-77D16340163F" xml:space="preserve">void CTot::Total(const TArray&lt;TElement&gt;&amp; anArray)
+ {
+ TInt count = anArray.Count();
+ 
+ for (TInt jj = 0; jj &lt; count; jj++)
+  iTotalValue += anArray[jj].GetValue();
+ 
+ iTotalElements += count;
+ }
+
+</codeblock> <p>Then some code using these could be:</p> <codeblock id="GUID-CF9EDB28-FC0F-5F5A-907A-55DA637BF82F" xml:space="preserve">//           main body
+
+CArrayFixFlat&lt;TElement&gt;* fix;
+CArrayVarFlat&lt;TElement&gt;* var;
+CArrayPakFlat&lt;TElement&gt;* pak;
+TElement x;
+CTot* ptr;
+
+ptr = new CTot;
+
+fix = new CArrayFixFlat&lt;TElement&gt;(2);
+var = new CArrayVarFlat&lt;TElement&gt;(2);
+pak = new CArrayPakFlat&lt;TElement&gt;(2);
+
+x.SetValue(1);
+fix-&gt;AppendL(x);
+x.SetValue(2);
+var-&gt;AppendL(x,sizeof(x));
+x.SetValue(3);
+pak-&gt;AppendL(x,sizeof(x));
+
+ptr-&gt;Total(fix-&gt;Array());
+ptr-&gt;Total(var-&gt;Array());
+ptr-&gt;Total(pak-&gt;Array());</codeblock> <p>Without the use of <codeph>TArray</codeph>,
+the <codeph>Total()</codeph> member function would need overloaded variants
+to handle all the possible array types which it might expect. The <codeph>CTot</codeph> class
+would need redefining as:</p> <codeblock id="GUID-54155741-69E5-5B1B-A1DD-A1A701806BDF" xml:space="preserve">class CTot : public CBase           
+ {
+ public :
+  void Total(const CArrayFixFlat&lt;TElement&gt;&amp; anArray);
+  void Total(const CArrayFixSeg&lt;TElement&gt;&amp; anArray);
+  void Total(const CArrayVarFlat&lt;TElement&gt;&amp; anArray);
+  void Total(const CArrayVarSeg&lt;TElement&gt;&amp; anArray);
+  void Total(const CArrayPakFlat&lt;TElement&gt;&amp; anArray);
+ private :
+  TInt iTotalElements;
+  TInt iTotalValue;
+ };</codeblock> <p>To allow the <codeph>Total()</codeph> function to handle
+arrays composed of different types of element, (i.e. arrays constructed with
+different template values), then a separate variant of <codeph>Total()</codeph> is
+required for each element type. For example, to handle arrays of <codeph>&lt;TElement1&gt;</codeph> elements
+and arrays of <codeph>&lt;TElement2&gt;</codeph> elements, the <codeph>CTot</codeph> class
+might be defined as:</p> <codeblock id="GUID-AD19E818-0B43-5C78-88B6-D8E7B82A914B" xml:space="preserve">class CTot : public CBase           
+ {
+ public :
+  void TotalA(const TArray&lt;TElement1&gt;&amp; anArray);
+  void TotalB(const TArray&lt;TElement2&gt;&amp; anArray);
+ private :
+  TInt iTotalElements;
+  TInt iTotalValue;
+ };</codeblock> <p>One important point to note; the referenced <codeph>TElement</codeph> returned
+by <codeph>operator[]</codeph> is declared as <codeph>const</codeph>. This
+means that any member function of <codeph>TElement</codeph> must also be declared
+as <codeph>const</codeph>, as shown in this example.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4F901F56-7F0E-4869-85CA-6109ED0AF5B7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4F901F56-7F0E-4869-85CA-6109ED0AF5B7" xml:lang="en"><title>Text
+Layout</title><shortdesc>This section describes about Text Handling and Text Formatting.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p/>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4FB4CAD4-52BD-5DC1-9B20-34DA77F70A9D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4FB4CAD4-52BD-5DC1-9B20-34DA77F70A9D" xml:lang="en"><title>Iterators</title><shortdesc>This document describes iterators within the context of doubly
+linked lists.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Iterators provide an easy way of cycling through the elements of a doubly
+linked list, using the post increment operator<codeph>++</codeph> and the
+post decrement operator<codeph>--</codeph>. They avoid the need to access
+the inner detail of link objects and list headers.</p>
+<p>An iterator is an instance of the templated class <codeph>TDblQueIter&lt;class
+T&gt;</codeph>. The class provides the behaviour for moving through the elements
+of a specific list. An iterator maintains a pointer to the current element
+in the list. The current element can be any element in the list.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757"><title>SQL Schema Tips</title><shortdesc>This guide gives tips for using the database schema. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-37B02CC0-B591-542D-8B02-B6E2F3FF2097"><title>Introduction</title> <p>A schema is a way of organizing a number of related database objects such as tables. The schema contains at least one object but can contain as many as the total number of tables in the database. This section provides some handy tips for working with schemas in Symbian SQL. </p> <p>The following tips or techniques are discussed: </p> <ul><li id="GUID-F50E880D-BE59-5915-BE5A-E752EA2D3868"><p> <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-296FB987-9E61-5925-9246-0468534D16A9">Handling SQL schema errors</xref> </p> </li> <li id="GUID-A5C25843-9D8E-5F2F-96FD-61BA05B4FEC6"><p> <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-0D7324A8-8DAF-57B5-BCA1-C8BDD855773C">Designing tables for more efficient access</xref> </p> </li> <li id="GUID-A300E8B2-A0F2-5EC1-AAE4-09909FA69E98"><p> <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-DAF6BE02-7D38-5667-86B2-D12EB34BB6EC">Storing Large BLOBs Separately from the Database</xref> </p> </li> <li id="GUID-C66BE626-F551-58E5-98C9-33090DF96272"><p> <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-8F18A8B8-706F-5F53-88BC-249F9EB48110">Using INTEGER PRIMARY KEY</xref> </p> </li> <li id="GUID-86442FBC-699C-5101-95CB-1BA5229DE63A"><p> <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-BD8FE233-2AA5-5DF7-9A84-EEC5836669E8">Efficient Primary Key and Row ID values</xref> </p> </li> <li id="GUID-8FEA56BD-19A7-59A2-8B26-01A3594D6FC7"><p> <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-40CDE965-B261-5873-9F8B-7812EEC14AD7">Keep Schemas Small and Constant</xref> </p> </li> </ul> </section> <section id="GUID-296FB987-9E61-5925-9246-0468534D16A9"><title>Handling SQL schema errors</title> <p>In order to translate a SQL statement into bytecode, <codeph>Prepare()</codeph> needs to know the database schema. For any given SQL statement there are typically many different ways of implementing the statement in bytecode. The compiler (or a particular part of the compiler that is commonly referred to as the <i>optimizer</i>) tries to pick the most efficient implementation based on what is known about the content of the various tables and what indexes are available. The bytecode depends so much on the database schema that the slightest change to the schema can cause totally different bytecode to be generated for the same SQL statement. </p> <p>When <codeph>Prepare()</codeph> runs, it uses the database schema as of the last time the database was accessed when preparing the bytecode. So if the database schema has been changed by another program, or if the schema is changed after <codeph>Prepare()</codeph> completes but before <codeph>Exec()</codeph> or <codeph>Next()</codeph> is run, the schema of the database will not match the schema used to prepare the bytecode. </p> <p>To guard against any problems, the first few instructions of bytecode in a prepared statement read the current schema cookie for the database and check to see that it is the same as it was when <codeph>Prepare()</codeph> was run. If the schema cookie has changed, then <codeph>Exec()</codeph> and <codeph>Next()</codeph> terminate with the error <xref href="GUID-1BCF6DC7-8419-3399-9890-627048A74F52.dita"><apiname>KSqlErrSchema</apiname></xref>. </p> <p>When this occurs, a new prepared statement should be created by calling <codeph>Prepare()</codeph> again with the same SQL and the original prepared statement should be discarded. </p> <p>It is important to recognize that a <xref href="GUID-1BCF6DC7-8419-3399-9890-627048A74F52.dita"><apiname>KSqlErrSchema</apiname></xref> error can occur on any call to <codeph>Exec()</codeph> or <codeph>Next()</codeph>. A common programming error with is to omit the necessary error handling or to do it incorrectly. The error is, unfortunately, often overlooked during testing because the usual cause of an <xref href="GUID-1BCF6DC7-8419-3399-9890-627048A74F52.dita"><apiname>KSqlErrSchema</apiname></xref> error is an external program making a schema change at just the wrong moment, and external programs are not normally running during testing. </p> </section> <section id="GUID-0D7324A8-8DAF-57B5-BCA1-C8BDD855773C"><title> Designing tables for more efficient access</title> <p>Put smaller and frequently accessed columns at the beginning of tables. SQLite stores a row of a table by gathering the data for all columns in that row and packing the data together in column order into as few bytes as possible. <i>Column order</i> means that the data for the first declared column of the table – the column that appears first in the CREATE TABLE statement – is packed into the bundle first. The data for the second column is packed into the bundle second. And so forth. </p> <p>SQLite goes to some trouble to use as few bytes as possible when storing data. A text string that is 5 bytes long, for example, is stored using just 5 bytes. The '\00' terminator on the end is omitted. No padding bytes or overhead are added even if the column specifies a larger string such as VARCHAR(1000). </p> <p>Small integers (between -127 and +127) are stored as a single byte. As the magnitude of the integer increases, additional bytes of storage are added as necessary up to 8 bytes. Floating point numbers are normally stored as 8-byte IEEE floats, but if the floating point number can be represented as a smaller integer without loss of information, it is converted and stored that way to save space. BLOBs are also stored using the minimum number of bytes necessary. </p> <p>These efforts to save space both help to keep SQLite database files small and also improve perfomance since the smaller each record is the more information will fit in the same amount of space and the less disk I/O needs to occur. </p> <p>The downside of using compressed storage is that data in each column is an unpredictable size. So within each row, we do not know in advance where one column ends and the next column begins. To extract the data from the N-th column of a row, SQLite has to decode the data from the N-1 prior columns first. Thus, for example, if you have a query that reads just the fourth column of a table, the bytecode that implements the query has to read and discard the data from the first, second, and third columns in order to find where the data for the fourth column begins in order to read it out. </p> <p>For this reason, it is best to put smaller and more frequently accessed columns of a table early in the CREATE TABLE statement and put large CLOBs and BLOBs and infrequently accessed information toward the end. </p> </section> <section id="GUID-DAF6BE02-7D38-5667-86B2-D12EB34BB6EC"><title>Storing Large BLOBs Separately from the Database</title> <p>SQLite does not place arbitrary constraints on the size of BLOBs and CLOBs that it will store. The only real restriction is that the entire BLOB or CLOB must fit in memory all at once. But just because you can do this does not mean you should. </p> <p>Although SQLite is able to handle really big BLOBs, it is not optimized for that case. If performance and storage efficiency is a concern, you will be better served to store large BLOBs and CLOBs in separate disk files then store the name of the file in the database in place of the actual content. </p> <p>When SQLite encounters a large table row – e.g. because it contains one or more large BLOBs – it tries to store as much of the row as it can on a single page of the database. The tail of the row that will not fit on a single page is spilled into overflow pages. If more than one overflow page is required, then the overflow pages form a linked list. </p> <p>To store a 1MiB BLOB in a database with a 1KiB page size will require the BLOB to be broken into a list of over a thousand links, each of which gets stored separately. Whenever you want to read the BLOB out of the database, SQLite has to walk this thousand-member linked list in order to reassemble the BLOB again. This works and is reliable, but it is not especially efficient. </p> <p>Another problem with large BLOBs and CLOBs is that they can be neither read nor written incrementally. The entire BLOB or CLOB must be read or written all at once. So, for example, to append 10 bytes to the end of a 10MiB BLOB, one has to read the entire BLOB, append the 10 bytes, then write the new BLOB back out again. With a disk file, on the other hand, you can append 10 bytes quickly and efficiently without having to access the other 10 million bytes of the original file. </p> <p>If you absolutely need to store large BLOBs and CLOBs in your database (perhaps so that changes to these data elements will be atomic and durable) then at least consider storing the BLOBs and CLOBs in separate tables that contain only an INTEGER PRIMARY KEY and the content of the BLOB or CLOB. So, instead of writing your schema this way: </p> <codeblock id="GUID-A501A0C1-5AB2-5EBA-9DB3-2C786C1DFFFF" xml:space="preserve">
+CREATE TABLE image(
+    imageId INTEGER PRIMARY KEY,
+    imageTitle TEXT,
+    imageWidth INTEGER,
+    imageHeight INTEGER,
+    imageRefCnt INTEGER,
+    imageBlob BLOB
+);
+</codeblock> <p>Factor out the large BLOB into a separate table so that your schema looks more like this: </p> <codeblock id="GUID-F3CEBEDB-9D4A-5930-8AFE-3FE33DECE1CF" xml:space="preserve">
+CREATE TABLE image(
+    imageId INTEGER PRIMARY KEY,
+    imageTitle TEXT,
+    imageWidth INTEGER,
+    imageHeight INTEGER,
+    imageRefCnt INTEGER
+);
+
+CREATE TABLE imagedata(
+    imageId INTEGER PRIMARY KEY,
+    imageBlob BLOB
+);
+</codeblock> <p>Keeping all of the small columns in a separate table increases locality of reference and allows queries that do not use the large BLOB to run much faster. You can still write single queries that return both the smaller fields and the BLOB by using a simple (and very efficient) join on the INTEGER PRIMARY KEY. </p> </section> <section id="GUID-8F18A8B8-706F-5F53-88BC-249F9EB48110"><title>Using INTEGER PRIMARY KEY</title> <p>INTEGER PRIMARY KEY is a fast special case. Every row of every SQLite table has a signed 64-bit integer RowID. This RowID is the key for the b-tree that holds the table content. The RowID must be unique over all other rows in the same table. When you go to find, insert, or remove a row from a table in SQLite, the row is first located by search for its RowID. Searching by RowID is very fast. Everything in SQLite tables centres around RowIDs. </p> <p>In the CREATE TABLE statement that defines a table, if you declare a column to be of type INTEGER PRIMARY KEY, then that column becomes an alias for the RowID. It is generally a good idea to create such a column whenever it is practical. </p> <p>Looking up information by RowID or INTEGER PRIMARY KEY is usually about twice as fast as any other search method in SQLite. So for example, if we have an indexed table like this: </p> <codeblock id="GUID-A168F121-43D7-52A1-B9BD-E92160473FE1" xml:space="preserve">
+CREATE TABLE demo1(
+    id1 INTEGER PRIMARY KEY,
+    id2 INTEGER UNIQUE,
+    content BLOB
+);
+</codeblock> <p>Then queries against the INTEGER PRIMARY KEY, e.g. of the form: </p> <codeblock id="GUID-FE186FEB-8134-56BE-A23D-219C20A89FC3" xml:space="preserve">
+SELECT content FROM demo1 WHERE id1=?;
+</codeblock> <p>will be about twice as fast as queries like this: </p> <codeblock id="GUID-BD9DD075-48DB-51FA-823D-CB278E72E275" xml:space="preserve">
+SELECT content FROM demo1 WHERE id2=?;
+</codeblock> <p>Note that the following two queries are identical in SQLite – not just equivalent but identical. They generate exactly the same bytecode: </p> <codeblock id="GUID-B28BE56D-F947-5B75-9602-3A1024A8CEC1" xml:space="preserve">
+SELECT content FROM demo1 WHERE id1=?;
+SELECT content FROM demo1 WHERE RowID=?;
+</codeblock> <p>But for stylistic and portability reasons, the first form of the query is preferred. </p> <p>Also observe that in order for the INTEGER PRIMARY KEY to truly be an alias for the RowID, the declared type must be exactly “INTEGER PRIMARY KEY”. </p> <p>Variations such as “INT PRIMARY KEY” or “UNSIGNED INTEGER PRIMARY KEY” or “SHORTINT PRIMARY KEY” become independent columns instead of aliases for the RowID. </p> <p>So be careful to always spell INTEGER PRIMARY KEY correctly in your CREATE TABLE statements. </p> </section> <section id="GUID-BD8FE233-2AA5-5DF7-9A84-EEC5836669E8"><title> Efficient Primary Key and Row ID values</title> <p>Use small positive integers for INTEGER PRIMARY KEY or RowID. As explained in the section <xref href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita#GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757/GUID-8F18A8B8-706F-5F53-88BC-249F9EB48110">Using INTEGER PRIMARY KEY</xref>, every table row has a key which is a signed 64-bit integer: the RowID or INTEGER PRIMARY KEY. This same RowID also occurs in every index entry and is used to refer the index entry back to the original table row. </p> <p>When writing the RowID to disk, SQLite encodes the 64-bit integer value using a Huffman code over a fixed probability distribution. The resulting encoding requires between 1 and 9 bytes of storage space, depending on the magnitude of the integer. Small, non-negative integers require less space than larger or negative integers. Table 3.1 shows the storage requirements: </p> <table id="GUID-A50643C5-5D28-56C1-B1D9-6BFF1E9551B5"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>RowID Magnitude</entry> <entry>Bytes Of Storage</entry> </row> </thead> <tbody><row><entry><p>0 to 127 </p> </entry> <entry><p>1</p> </entry> </row> <row><entry><p>128 to 16383 </p> </entry> <entry><p>2</p> </entry> </row> <row><entry><p>16384 to 2097151 </p> </entry> <entry><p>3</p> </entry> </row> <row><entry><p>2097152 to 268435455 </p> </entry> <entry><p>4</p> </entry> </row> <row><entry><p>268435456 to 34359738367 </p> </entry> <entry><p>5</p> </entry> </row> <row><entry><p>34359738368 to 4398046511103 </p> </entry> <entry><p>6</p> </entry> </row> <row><entry><p>4398046511104 to 562949953421311 </p> </entry> <entry><p>7</p> </entry> </row> <row><entry><p>562949953421312 to 72057594037927935 </p> </entry> <entry><p>8</p> </entry> </row> <row><entry><p>Less than 0 or greater than 72057594037927935 </p> </entry> <entry><p>9</p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Table 3.1:</b> Storage requirements for RowIDs of different magnitudes </p> <p>This chart makes it clear that the best way to keep reduce the number of bytes of disk space devoted to storing RowIDs is to keep RowIDs small non-negative integers. The database will continue to work fine with large or negative RowIDs, but the database files will take up more space. </p> <p>SQLite normally works by assigning RowIDs automatically. An automatically generated RowID will normally be the smallest positive integer that is not already used as a RowID in the same table. The first RowID assigned will be 1, the second 2, and so forth. So the automatic RowID assignment algorithm begins by using 1-byte RowIDs, then moves to 2-byte RowIDs as the number of rows increased, then 3-byte RowIDs, and so forth. In other words, the automatic RowID assignment algorithm does a good job of selecting RowIDs that minimize storage requirements. </p> <p>If a table contains an INTEGER PRIMARY KEY column, that column becomes an alias for the RowID. If you then specify a particular RowID when doing an INSERT, the RowID you specify overrides the default choice made by SQLite itself. For example, if your table is this: </p> <codeblock id="GUID-54E6F47E-5FBC-5CB2-8A3A-B81B758C112A" xml:space="preserve">
+CREATE TABLE demo311(
+    id INTEGER PRIMARY KEY,
+    content VARCHAR(100)
+);
+</codeblock> <p>Then if you insert like this: </p> <codeblock id="GUID-3D820D52-B53F-5F74-A727-81CEB3677295" xml:space="preserve">
+INSERT INTO demo311(id,content) VALUES(-17,'Hello');
+</codeblock> <p>The value -17 is used as the RowID which requires 9 bytes of space in the disk file because it is negative. If instead of specifying the id value you had just left it blank: </p> <codeblock id="GUID-8CBF96D3-9FB6-54C1-861C-CF85FF3F76A8" xml:space="preserve">
+INSERT INTO demo311(content) VALUES('Hello');
+</codeblock> <p>Or if you had specified a NULL as the INTEGER PRIMARY KEY value: </p> <codeblock id="GUID-0DEF58F0-DC25-586A-B803-4B581FF8653C" xml:space="preserve">
+INSERT INTO demo311(id,content) VALUES(NULL,'Hello');
+</codeblock> <p>Then in either case, SQLite would have automatically selected a RowID value that was the smallest positive integer not already in use, thus minimizing the amount of disk space required. </p> <p>Therefore unless you have specific requirements to the contrary, it generally works best to let SQLite pick its own RowID and INTEGER PRIMARY KEY values. </p> </section> <section id="GUID-40CDE965-B261-5873-9F8B-7812EEC14AD7"><title>Keep Schemas Small and Constant</title> <p>SQLite stores the original text of all CREATE statements in a system table of the database. When a database session is opened or when the database schema is changed, SQLite has to read and parse all of these CREATE statements in order to reconstruct its internal symbol tables. </p> <p>The parser and symbol table builder inside SQLite are very fast, but they still take time which is proportional to the size of the schema. To minimize the computational overhead associated with parsing the schema: </p> <ul><li id="GUID-36BDF092-298D-564D-9744-9C83836A2FB2"><p>Keep the number and size of CREATE statements in the schema to a minimum. </p> </li> <li id="GUID-DF3A6363-7C24-5727-AD27-58367EFFE1A4"><p>Avoid unnecessary calls to <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-195907BE-273B-3DD1-95C9-D48870030914"><apiname>RSqlDatabase::Open()</apiname></xref>. Reuse the same database session where possible. </p> </li> <li id="GUID-D1A62767-9CF7-5FBE-8F51-98EB154559C1"><p>Avoid changing the database schema while other threads or processes might be using the database. </p> </li> </ul> <p>Whenever the schema is reparsed, all statements that were prepared using the old schema are invalidated. A call <codeph>Next()</codeph> or <codeph>Exec()</codeph> on a <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object that was prepared prior to the schema reparse will return <xref href="GUID-1BCF6DC7-8419-3399-9890-627048A74F52.dita"><apiname>KSqlErrSchema</apiname></xref> to let you know that the cause of the error was a schema change. Thus any prepared statements that were cached will have to be discarded and re-prepared following a schema change. Refilling the prepared statement cache can be as computationally expensive as parsing the schema in the first place. </p> <p>Prepared statements can be invalidated for reasons other than schema changes including executing <codeph>Attach()</codeph> or <codeph>Detach()</codeph>. Avoid this if you have a large cache of prepared statements. The best strategy is to attach all associated databases as soon as a new database session is opened and before any statements are prepared. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link><linktext/></link><link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C" xml:lang="en"><title>UI
+themes</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A UI theme is a customized graphical user interface (GUI) that replaces
+the phone's default look, and it is used to change the appearance of the user
+interface for the phone's applications. A phone with the Symbian
+user interface may provide several UI themes of which the user can activate
+one theme at a time. By activating a UI theme, the visual appearance of the
+user interface is changed. Note that this setting only affects visual elements,
+e.g. functions, the interaction style or language settings are not affected.</p>
+<fig id="GUID-017EFFEA-6677-4E9A-A7B1-F69E02C50DE1">
+<title>Simplified illustration of the UI theme concept</title>
+<image href="GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e54256_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>UI themes give the UI theme designer a freedom to design a unique GUI,
+and by designing backgrounds and icons, the result can be very different from
+the default settings.</p>
+<p>A good GUI has consistent metaphor. When designing UI themes, the UI theme
+designer should make sure that the user interface supports the user's aim
+and does not mislead the user. It is also good to remember that even though
+the new look and feel offered by a UI theme would be fancy and exciting, the
+general positive user experience will fade if the performance of the terminal
+suffers because of a too large UI theme package file size.</p>
+<p>To ensure a consistent look and feel in all applications, it is recommended
+for the application UI designer to use the UI components that support UI themes.
+In case application uses UI components that the UI theme does not support,
+the factory default of the missing items is used.</p>
+<p>A UI theme designer can decide which elements belong to a UI theme package.
+It is possible to design a UI theme that uses the default UI components of
+the phone together with components belonging to the UI theme.</p>
+<section id="GUID-67D4182F-A8D9-43E0-8866-41A0837F2A30"><title>Using
+UI themes in C++ applications</title><p>The API to use for UI themes is the Skins
+API. For implementation information, see Using
+the Skins API.</p><p>The UI controls that support themes using the
+Skins API include:</p><ul>
+<li><p><xref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita">Status pane</xref>,
+including its subpanes</p></li>
+<li><p><xref href="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita">Control pane</xref></p></li>
+<li><p><xref href="GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita">Lists and grids</xref></p></li>
+<li><p><xref href="GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita">Find pane</xref></p></li>
+<li><p><xref href="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita">Forms</xref></p></li>
+<li><p><xref href="GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita">Setting lists</xref></p></li>
+<li><p><xref href="GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita">Pop-up windows</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4FCF605D-52D9-5B2D-80CF-80C940F680CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4FCF605D-52D9-5B2D-80CF-80C940F680CA" xml:lang="en"><title>Time Zone Services</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> Time Zone Services (device-side) collection provides functionality related to time zone changes and database of world cities. It provides a Time Zone Server that allows clients to convert between UTC and local wall-clock time, and vice-versa, set the phone user-time zone, automatically adjust the local time on DST rule change and a provision to update the time zone database by means of upgrade package installation. </p> <p>It also provides the Time Zone Localization component, which maintains a database that caches frequently used time zones.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4FE4B515-EE2B-47DB-BECE-E390E4EB2C3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-4FE4B515-EE2B-47DB-BECE-E390E4EB2C3E" xml:lang="en"><title>Switching
+ON the lights</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The LightOnL() method call switches ON the specified target
+light. Multiple light targets can be specified using bitwise-or.</p><p>The
+following code snippet demonstrates how to switch ON lights for <b>infinite</b> duration
+with default intensity for multiple targets (Lights are switched ON with fade-in):</p><codeblock xml:space="preserve">iLight-&gt;LightOnL( CHWRMLight::EPrimaryDisplay | CHWRMLight::EPrimaryKeyboard );</codeblock><p>The following code snippet demonstrates how to switch ON lights for the <b>specified</b> duration
+with default intensity for one target (Lights are switched ON with fade-in):</p><codeblock xml:space="preserve">//aDuration = 5000 milliseconds
+light-&gt;LightOnL( CHWRMLight::ESecondaryDisplay, 5000 );</codeblock><p>After
+the duration expires, if there has not been a previous infinite time duration
+call in this session, the light state for target is changed to whatever state
+was caused by the last infinite time duration call, or default state determined
+by inactivity timer.</p><p>The following code snippet demonstrates how to
+switch ON lights for the specified duration with specified intensity for one
+target (fade-in is also controlled):</p><codeblock xml:space="preserve">// aDuration = 5000 milliseconds
+// aIntensity = 50, intensity can be between KHWRMLightMinIntensity and KHWRMLightMaxIntensity, inclusive.
+// aFadeIn = EFalse means that lights will turn ON instantly and fade-in is not used,
+// ETrue would mean that lights would smoothly fade-in.
+light-&gt;LightOnL( CHWRMLight::ESecondaryDisplay, 5000, 50, EFalse );</codeblock><note> All
+devices do not support user-defined intensity or fade-in. In such scenarios,
+the device behaves in its default method.</note></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-4FFA793B-9E57-5D59-B9A7-528F11C4852E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-4FFA793B-9E57-5D59-B9A7-528F11C4852E" xml:lang="en"><title>Locating
+a DLL</title><shortdesc>A polymorphic DLL is loaded by calling one of the <codeph>Load()</codeph> member
+functions of an <codeph>RLibrary</codeph> object.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>Load()</codeph> has three overloaded variants but they all behave
+in a similar way. They are prototyped: </p>
+<codeblock id="GUID-4A689563-CCC7-5C98-B75A-7A0E8DF31BBA" xml:space="preserve">TInt Load(const TDesC&amp; aFileName,const TDesC&amp; aPath,const TUidType&amp; aType);
+TInt Load(const TDesC&amp; aFileName,const TUidType&amp; aType);
+TInt Load(const TDesC&amp; aFileName,const TDesC&amp; aPath=KNullDesC);</codeblock>
+<p>The arguments determine how the DLL is to be found. The rules are summarised
+as follows: </p>
+<ul>
+<li id="GUID-36D6A634-8CB3-57E9-BAB9-5C70C7EF106A"><p>If <codeph>aFileName</codeph> is
+a fully defined filename, i.e. it includes a path specification, then the
+contents of <codeph>aPath</codeph> are ignored and an attempt is made to load <codeph>aFileName</codeph>,
+if specified; if this DLL cannot be found, then the load operation fails and
+no further searching is done. </p> </li>
+<li id="GUID-50FBE6FD-5AD3-5732-8A24-91A0B0B5ABB1"><p>if <codeph>aFileName</codeph> does
+not have an extension, an extension of <filepath>.DLL</filepath> is assumed. </p> </li>
+<li id="GUID-61547446-A954-5EF2-A77C-D0C4B2D0B4EB"><p>If <codeph>aFileName</codeph> contains
+a file name but does <i>not</i> include a path specification (e.g. <filepath>EULIBDR1.DLL</filepath>),
+then a search is done in the following locations in the order given: </p> <ul>
+<li id="GUID-C0A63546-FE94-5B06-824D-83A4B77583BE"><p>the path defined in <codeph>aPath</codeph>,
+if specified </p> </li>
+<li id="GUID-72315ED1-4593-5D69-90DD-CE813A091F4B"><p>the system path <filepath>\sys\bin\</filepath> on
+each attached drive. Drives are searched in the order: <filepath>C:</filepath> (the
+device's main internal drive), then <filepath>Y:</filepath>, <filepath>X:</filepath>, <filepath>W:</filepath>, <filepath>V:</filepath>, <filepath>U:</filepath>, ..., <filepath>D:</filepath>, <filepath>B:</filepath>, <filepath>A:</filepath> and
+finally, drive <filepath>Z:</filepath> (the ROM). </p> </li>
+</ul> </li>
+<li id="GUID-2EBA5162-3E09-510A-B65F-024CC5FF011E"><p>If <codeph>aType</codeph> is
+specified, then the UIDType of the loaded DLL must match <codeph>aType</codeph>.
+If <codeph>aType</codeph> is <codeph>KNullUid</codeph>, or the variant of <codeph>Load()</codeph> that
+does not take <codeph>aType</codeph> is called, then the loaded DLL will have
+the name <codeph>aFileName</codeph> and may have any UIDType. </p> </li>
+</ul>
+<p>Note that in WINS debug mode, the system path is <filepath>\epoc32\release\wins\udeb\</filepath> on
+the current PC drive; in WINS release mode, the system path is <filepath>\epoc32\release\wins\urel\</filepath> on
+the current PC drive. For WINSCW, the paths are the same as for WINS, except
+that <filepath>wins\</filepath> becomes <filepath>winscw\</filepath>. </p>
+<p>Note also that, in contrast with the usual convention, <codeph>aPath</codeph> specifies
+a list of directories, each one separated by a semicolon. </p>
+<p>See also: </p>
+<ul>
+<li id="GUID-2B04DF55-F0A3-5755-905D-8BB243A6BC36"><p> <xref href="GUID-98CC1E75-D2DE-3700-928C-7D530237ECBA.dita"><apiname>TFindFile</apiname></xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679" xml:lang="en"><title>XmlExample:
+Using the XML framework to parse an XML file</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-7860D226-83AD-501E-9431-6A61A9AC2996"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3eef58b5-bcd4-4f1e-a864-71273651c3bb.zip" scope="external">XmlExample.zip</xref></p><p>Click:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3eef58b5-bcd4-4f1e-a864-71273651c3bb.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Introduction</title> <p>This example application demonstrates
+the usage of the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XML</apiname></xref> framework API to parse XML and WBXML
+files. </p> <p>The overview contains the following sections: </p> <ul>
+<li id="GUID-01C9B600-A55E-55D8-AA35-057464345A45"><p> <xref href="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita#GUID-5012D63B-4353-5616-BBFB-DB04DAF71679/GUID-3A5027A1-BEE9-5EB4-8670-7E729CF9260F">Description</xref>  </p> </li>
+<li id="GUID-656E68A4-BAF3-505B-AC9A-96C6A9107E1B"><p> <xref href="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita#GUID-5012D63B-4353-5616-BBFB-DB04DAF71679/GUID-5dfd0234-44cf-4252-a980-5b73aaa61e35">Class summary</xref>  </p> </li>
+<li id="GUID-F8CEA6F8-D4AB-5E32-9EC1-9FACED6F34B5"><p> <xref href="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita#GUID-5012D63B-4353-5616-BBFB-DB04DAF71679/GUID-E9F975CA-A59F-5484-83FD-7F17F0A03807">Build</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-3A5027A1-BEE9-5EB4-8670-7E729CF9260F"><title>Description</title> <p>The
+example application demonstrates, how to use the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita"><apiname>Xml</apiname></xref> framework
+to parse XML and WBXML files. It takes a valid XML file with a DTD (Document
+Type Declaration) definining its structure, and a WBXML (WAP Binary XML format)
+file as input. You can generate a WBXML file from an XML file using any freeware
+converters. The application's <filepath>bld.inf</filepath> file specifies
+the target path to which all the three files (XML, DTD, WBXML) need to be
+exported. </p> <p>The application implements all the pure virtual functions
+of the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-25E466A4-0578-3BED-A56D-4E0906313788"><apiname>Xml::MContentHandler</apiname></xref> class, which is a client interface
+to the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita"><apiname>Xml</apiname></xref> framework. These functions inform the client
+application about the XML element being parsed, its content, parser errors
+if any and so on. </p> <p>The XML and WBXML files are parsed using an object
+of the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-EE37CB28-DAB4-30A9-B46E-8AE4664B28DE"><apiname>Xml::CParser</apiname></xref> class. The parser object is configured
+to report namespace mappings to the client application, using the function <xref href="GUID-EE37CB28-DAB4-30A9-B46E-8AE4664B28DE.dita#GUID-EE37CB28-DAB4-30A9-B46E-8AE4664B28DE/GUID-5F2688CC-16B3-3F0D-B6CA-CE59FE7939BD"><apiname>Xml::CParser::EnableFeature()</apiname></xref>. </p> <p>The
+application first opens a file session using <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> to read
+the XML and WBXML files. Then, the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-CC810749-2F0D-3CC0-911D-EE12BB934867"><apiname>Xml::ParseL()</apiname></xref> function
+is called to start parsing the files. The application parses the XML file
+followed by the WBXML file. While these files are being parsed, status messages
+are printed to the console by the callback functions as and when they are
+invoked. </p> <p>For demonstration purposes, the XML file is parsed twice,
+once by the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-EE37CB28-DAB4-30A9-B46E-8AE4664B28DE"><apiname>Xml::CParser</apiname></xref> object created using the MIME
+type and again by the <codeph>CParser</codeph> object created using match
+data criteria. The match data criteria are specified using an object of the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-AEFF2DB4-FBC2-36EE-A4CE-7EBBD4AF004E"><apiname>Xml::CMatchData</apiname></xref> class,
+which is passed to the <xref href="GUID-EE37CB28-DAB4-30A9-B46E-8AE4664B28DE.dita#GUID-EE37CB28-DAB4-30A9-B46E-8AE4664B28DE/GUID-9E9D8DBA-A396-3F62-8B59-C4556FD5A80E"><apiname>Xml::CParser::NewLC()</apiname></xref> function while
+creating the parser object. This will return a <codeph>CParser</codeph> object
+that matches the specified MIME type, variant and so on. </p> </section>
+<section id="GUID-5DFD0234-44CF-4252-A980-5B73AAA61E35"><title>Class summary</title><p> <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-25E466A4-0578-3BED-A56D-4E0906313788"><apiname>Xml::MContentHandler </apiname></xref><xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-88087934-B84B-39DD-907F-71328D684035"><apiname>Xml::RDocumentParameters </apiname></xref><xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-A8A238B9-48A5-3729-9BAE-0287EE6295FA"><apiname>Xml::RAttributeArray </apiname></xref><xref href="GUID-DEFFFAAD-662A-34E9-8955-759F37BDC9AB.dita#GUID-DEFFFAAD-662A-34E9-8955-759F37BDC9AB/GUID-9A8E865C-FDAC-3923-83A9-5A8680AEE1EE"><apiname>Xml::CParserXml::CMatchData </apiname></xref> </p></section>
+<section id="GUID-E9F975CA-A59F-5484-83FD-7F17F0A03807"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian platform build process</xref> describes
+how to build an application. </p> <p>The <codeph>XmlExample</codeph> builds
+an executable called <filepath>xmlexample.exe</filepath> in the standard location
+(<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for CodeWarrior).
+After launching the executable, depending on the emulator you are using, you
+may need to task away from the application launcher/shell screen to view the
+console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50196C0E-39AF-5E94-888B-9901C934CCE7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-50196C0E-39AF-5E94-888B-9901C934CCE7"><title>Introduction to the store map </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A store map is useful when externalising swizzled in-memory objects. It has three main characteristics:</p> <ul><li id="GUID-3914A6F8-3EE4-5197-B5A7-773B5C26D3C3"><p>it acts as an in-memory repository of stream IDs and associated Swizzle objects</p> </li> <li id="GUID-F8D02A47-B890-5631-8519-BF63C56ED1C1"><p>it acts as an externaliser for Swizzles</p> </li> <li id="GUID-52B4416B-F0D4-5839-AA8C-9213D4983CD4"><p>it offers cleanup support</p> </li> </ul> <p>A store map is an object of type <codeph>CStoreMap</codeph>.</p> <section><title>See also</title> <p><xref href="GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita">Swizzles and deferred loading</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04" xml:lang="en"><title>Khronos
+API Support </title><shortdesc>The Symbian platform provides support for a number of APIs created
+by the Khronos Group (www.khronos.org). This is a member-funded industry consortium
+focused on the creation of open standard, royalty-free APIs to enable the
+authoring and accelerated playback of dynamic media on a wide variety of platforms
+and devices. This topic provides a brief summary of the Khronos APIs that
+are supported in the Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4C797D3C-7500-4E05-8207-FD15D60DCA6C"><title>Supported APIs</title> <p><b>OpenGL ES </b> </p> <p>OpenGL
+is a 2D and 3D graphics API that provides a broad set of rendering, texture
+mapping, special effects, and other visualization functions. It gives software
+developers access to geometric and image primitives, display lists, modeling
+transformations, lighting and texturing, anti-aliasing and blending. OpenGL
+ES is a subset of OpenGL optimized for 2D and 3D graphics on embedded devices
+such as mobile phones. </p> <p>See: <xref href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita">OpenGLES
+Collection</xref>  </p> <p><b>OpenVG </b> </p> <p>OpenVG is an API that provides
+a low-level hardware acceleration interface for rendering vector graphics
+libraries such as Flash and Scalable Vector Graphics (SVG). OpenVG is targeted
+primarily at handheld devices that require portable acceleration of high-quality
+vector graphics for user interfaces and text on small screen devices. It does
+this while enabling hardware acceleration to provide smooth interactive performance
+at low power levels. </p> <p>See: <xref href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita">OpenVG
+Collection</xref>. </p> <p><b>EGL </b> </p> <p>EGL is an interface between
+Khronos rendering APIs such as OpenGL ES or OpenVG and the underlying native
+platform window system. </p> <p>See: <xref href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita">EGL
+Collection</xref>  </p><p><b>OpenWF Composition</b> </p> <p>OpenWF Composition
+(OpenWF-C) provides a hardware abstraction layer that allows power-efficient
+hardware-accelerated composition on a wide variety of hardware platforms.
+OpenWF-C is particularly aimed at systems with limited memory bandwidth, such
+as mobile devices. OpenWF-C enables the UI and the window system stack to
+be independent of the hardware used to achieve the composition. OpenWF-C is
+a system-level API that can be ignored by application developers.</p>  </section>
+<section id="GUID-CC6CEEC2-1553-4C87-AE51-9A62A15944D3"><title>Architectural relationships</title><p>The following diagram
+shows the relationships between the Khronos rendering APIs. </p> <fig id="GUID-4ED32621-2B56-54F9-8B10-93C82751971F">
+<title>Dependencies between the Khronos rendering components            </title>
+<image href="GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e163101_href.png" placement="inline"/>
+</fig> </section>
+</conbody><related-links>
+<link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics
+Concepts</linktext></link>
+<link href="http://www.khronos.org/" scope="external"><linktext>http://www.khronos.org/</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e304218_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e253544_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-506642C2-A14F-55F2-9377-43DDB14F4053.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-506642C2-A14F-55F2-9377-43DDB14F4053" xml:lang="en"><title>Raw
+Memory Overview</title><shortdesc>This document provides an overview of raw memory.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-9CD2FCDA-A7E4-419F-82C5-401C184CA2BE"><title>Purpose</title> <p>Performs simple manipulations of data in
+memory.</p> </section>
+<section id="GUID-F37354AE-8714-4426-913B-40EC513EE94F"><title>Architectural relationships</title> <p>This API is mostly
+used by other system APIs. Client applications generally use a higher-level
+API, such as descriptors.</p> </section>
+<section id="GUID-7985B896-CD34-4B41-A94E-026F40641132"><title>Description</title> <p>The API supplies static functions to
+compare, copy, move, swap, and fill areas of memory, as defined by pointers
+and data length parameters.</p> <p>The raw memory interface is provided by <xref href="GUID-677B3729-EDED-341B-BE83-59F4386CCCA4.dita"><apiname>Mem</apiname></xref>.</p> </section>
+<section id="GUID-8B7DE172-B058-4CE3-AE1A-C42F717960A7"><title>See also</title> <p><xref href="GUID-54417A4F-710D-5257-BF49-13D9F28C92B9.dita">Memory
+Management Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5072BE46-B1B4-5C3A-BF55-BEA7443E7657.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5072BE46-B1B4-5C3A-BF55-BEA7443E7657" xml:lang="en"><title>Generic OS
+Services Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Generic OS Services is a collection of components and libraries that provide
+generic OS level services to Symbian platform components and applications.
+The generic OS level services include a plug-in framework (ECom) for defining
+and using plug-ins, a P.I.P.S. environment for porting POSIX-based applications,
+and a Zip Compression Library for stream and file compression, and decompression. </p>
+<p>Generic OS Services also includes generic services for task scheduling,
+creating backup and restore software, handling Uniform Resource Identifiers
+(URIs), a MIME Recogniser Framework for recognising data types and a set of
+application utilities. </p>
+<p><b>Notes:</b><ul>
+<li><p>Symbian platform supports ported versions of C++ Standard Library (<xref href="http://www.stlport.org/" scope="external">STLport</xref> v4) and Standard
+C++ Library (STLport v5). It is recommended that you use <xref href="GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita">Standard
+C++ Library (STLport v5)</xref> to take advantage of it's latest features.</p></li>
+<li><p>For more information about Open C API reference and examples, see <xref href="http://library.forum.nokia.com/topic/S60_5th_Edition_Cpp_Developers_Library/GUID-FE27AB35-C6FD-4F11-802D-0D5FCFFC2976/html/main.html" scope="external">Forum Nokia Library</xref>.</p></li>
+<li><p>For more information about Open C++ (C++ Standard Library - STLport
+v4) API reference and examples, see <xref href="http://library.forum.nokia.com/topic/S60_5th_Edition_Cpp_Developers_Library/GUID-02F20077-73B5-4A63-85DB-D909E0ADE01C/html/main.html" scope="external">Forum Nokia Library</xref>.</p></li>
+</ul></p>
+<p/>
+<p/>
+<p/>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-508DD478-1876-5DE2-9271-BDD99F51F579.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-508DD478-1876-5DE2-9271-BDD99F51F579" xml:lang="en"><title>How
+to use a change notifier</title><shortdesc>Provides code snippets to show you how to use a change notifier.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To use a change notifier, a thread:</p>
+<ul>
+<li id="GUID-1058B3E0-3185-55E1-B4FD-4C6EA533107D"><p>constructs an <codeph>RChangeNotifier</codeph> handle
+and then calls its <codeph>Create()</codeph> member function to create the
+associated Kernel side object. The <codeph>RChangeNotifier</codeph> handle
+is <keyword>thread-relative</keyword> which means that the handle is closed
+if the thread dies. </p> </li>
+<li id="GUID-9BB3408F-F792-5310-8459-50E0DB375B6C"><p>issues a request to
+be notified when the next change occurs, passing a <codeph>TRequestStatus</codeph> object.
+This is a call to the <codeph>Logon()</codeph> function.</p> </li>
+</ul>
+<p>When a change occurs, the change information is made available to the thread
+through the <codeph>TRequestStatus</codeph> object and the thread's <keyword>request
+semaphore</keyword> is signalled to indicate that the request is complete.</p>
+<p>The following code fragments demonstrates this:</p>
+<codeblock id="GUID-07277DED-7C9A-5620-BA3D-0DE5D2C64969" xml:space="preserve">{
+...
+RChangeNotifier the_notifier;
+TRequestStatus  the_status;
+...
+the_notifier.Create();
+the_notifier.Logon(the_status);
+User::WaitForRequest(the_status);
+...
+...// prepare for a long wait
+...
+TInt changes = the_status.Int();
+if (changes &amp; EChangesSystemTime)
+    {
+    // handle a change to system time
+    }
+if (changes &amp; EChanges EChangesLocale)
+    {
+    // handle a change to locale
+    }
+...
+the_notifier.Close();
+...
+}</codeblock>
+<p>In practical code, an <codeph>RChangeNotifier</codeph> would be part of
+an active object.</p>
+<p>The <codeph>RChangeNotifier</codeph> handle also offers the <codeph>LogonCancel()</codeph> function.
+Calling this function, causes the thread's <keyword>request semaphore</keyword> to
+be signalled and any wait to complete. The <codeph>TRequestStatus</codeph> is
+set to <codeph>KErrCancel</codeph>.</p>
+<p>The above technique for checking changes is used because, at the completion
+of a notification request, any, or all, changes may be reported. Code should
+make no assumptions about the other bits in the returned value. In other words,
+code should be prepared for a notification request to complete without an
+'interesting' change.</p>
+<p>Users should also note that the <i>first</i> notification request <i>after</i> creation
+of an <codeph>RChangeNotifier</codeph>, completes <i>immediately</i>; the
+changes reported are <i>all</i> those defined by the <codeph>TChanges</codeph> enum.</p>
+<p>Also note that after a notification request completes, other changes may
+occur before the user of the <codeph>RChangeNotifier</codeph> can issue the
+next notification request. If this occurs, any change events are collected
+by the change notifier; they are not lost; in this situation, the next notification
+request completes immediately.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1"><title>userinclude</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>userinclude</codeph>  <varname>directory-list</varname> </p> <p>Use the <codeph>userinclude</codeph> statement to define directories to be scanned for files specified in <codeph>#include</codeph> statements in source and resource files.</p> <p>It may be specified any number of times, and each may have any number of directories. </p> <p>When a project is being built, the pre-processor will be invoked specifying all the <codeph>userinclude</codeph> and <codeph>systeminclude</codeph> directories indicated in these statements. No standard include directories will be searched unless the project links to Win32 libraries under WINS.</p> <p>Files included from source code with a line such as</p> <codeblock id="GUID-E59EBE50-1D73-5EAA-B1F2-A4C9136C4BF5" xml:space="preserve">#include "squash.h"</codeblock> <p>will first be searched for in the directory containing the source file, then in the <codeph>userinclude</codeph> directories and finally in the <codeph>systeminclude</codeph> directories.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5"><title>Store map as repository for Swizzles and associated stream IDs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A store map is a table of entries where each entry consists of a Swizzle and a stream ID.</p> <p>When the in-memory object represented by a Swizzle is externalised, the resulting stream ID and the associated Swizzle can be added to a store map. The effect is to create an entry in the store map table containing the stream ID and the associated Swizzle; the Swizzle is said to be bound to the stream ID. Creating this entry in the store map is done using <codeph>CStoreMap::BindL()</codeph>.</p> <p>For a container type class <codeph>CCompound</codeph>, the diagram below shows the result of:</p> <ul><li id="GUID-B49D7824-7128-506F-B026-A6F4785C5C94"><p>streaming out the in-memory objects represented by the Swizzles <codeph>iA</codeph>, <codeph>iB</codeph> and <codeph>iC</codeph>.</p> </li> <li id="GUID-F3352249-7B90-5F90-B706-A01DC2C87C41"><p>binding the swizzles with the resulting stream IDs</p> </li> </ul> <p>The other characteristics of a store map follow from this. </p> <fig id="GUID-16CAA671-B195-558E-868A-46463EDEB476"><title/><image href="GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e337428_href.png" placement="inline"/></fig> <p>Entries in the store map can be deleted. An entry can be identified either by Swizzle or by stream ID. <codeph>CStoreMap::Unbind()</codeph> deletes an entry identified by Swizzle; <codeph>CStoreMap::Forget()</codeph> deletes an entry identified by stream ID.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50BA6AEB-E968-5CCA-8F5D-A65969263D90.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-50BA6AEB-E968-5CCA-8F5D-A65969263D90" xml:lang="en"><title>Central Repository</title><shortdesc>Provides persistance for application data, such as default filenames, locale settings and user preferences, between sessions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66" xml:lang="en"><title>HTTP Client
+overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D44E394A-3FB9-4884-A8AB-6E8E252ACBFC"><title>Purpose</title> <p>The
+HTTP (Hypertext Transfer Protocol) Client API provides a client interface
+for Internet applications to use the HTTP protocol for communication with
+HTTP servers on the Internet. Using the API correctly enables the application
+to be a conditionally HTTP 1.1 compliant client, as defined in RFC 2616. </p> <p>The
+HTTP protocol is a request and response protocol. A client sends a request
+to the server. This request consists of a request method, URI, and protocol
+version, including a Multipurpose Internet Mail Extensions (MIME)-like message
+containing request modifiers, client information, and body content over a
+server connection. The server responds with a status, which includes the message's
+protocol version and a success or error code, and a MIME-like message containing
+server information, meta information, and body content. The following image
+illustrates a simple HTTP session between a client and a server. </p> <fig id="GUID-784DD05A-B86B-57F0-A2E0-A34E373ABA34">
+<title>              Simple HTTP Interaction           </title>
+<image href="GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e183595_href.png" placement="inline"/>
+</fig> <p>See <xref href="http://www.ietf.org/rfc/rfc2616.txt" scope="external">Hypertext
+Transfer Protocol -- HTTP/1.1, RFC 2616</xref> for more details. </p> </section>
+<section id="GUID-80DD2A3D-1C59-4AD5-8838-8DC9E1752729"><title>Architectural
+relationships</title> <p>The HTTP Client architecture provides a generalised
+mechanism for HTTP-like protocols that operate over various transports. Using
+a single API, a client can choose an HTTP protocol, encoding, and transport,
+and need not implement these in its own code. The default operation provides
+plain-text HTTP (as defined in RFC 2616) operating over a TCP/IP connection.
+This transport pipelines requests by default. </p> </section>
+<section id="GUID-4F83C7A0-C17F-4C58-840E-3E51EA52F098"><title>Description</title> <p>There
+are five key concepts used in the API: sessions, transactions, headers, data
+suppliers, and filters. </p><p><b>Sessions </b> </p> <p>A session encapsulates
+the client's HTTP activity over the duration of the client's execution. Typicallly,
+one HTTP session runs in one active scheduler. </p> <p> <b>Note:</b> An active
+scheduler must be installed when a session is opened. </p> <p>Usually, one
+session is used at a time. However, the client may use several concurrently,
+if required. Each session has an associated set of properties, which define
+the HTTP protocol, encoding, and transport used. Those properties apply to
+all HTTP transactions within the life of that session. The session also has
+an associated set of filters that provide additional automatic behaviours
+on the client's behalf. </p> <p>The session class is provided by <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref>. </p> <p><b>Transactions </b> </p> <p>A
+transaction represents an interaction between a HTTP client and an HTTP origin
+server. Normally a transaction consists of a single exchange of messages between
+client and server: a client request and a server response. However, the transaction
+may be extended or altered by filters that operate on it. See <xref href="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita">Filters</xref> for
+more details. </p> <p>Transactions execute asychronously within the client's
+process. The client is notified when events are available for each outstanding
+transaction. </p> <p>Both the request and response portion of a transaction
+consist of a header and an optional body. The request portion of the transaction
+also specifies an HTTP Method that describes the type of operation that the
+client wants to invoke at the origin server, together with a URI that specifies
+the resource held at the server on which the method is to be invoked. The
+response portion of a transaction contains an HTTP status code and message,
+which indicate the success of the method or the state of the resource following
+the method. The use of request and response bodies is determined by the HTTP
+method in use. For example, in error conditions, some servers may just return
+a status code and message, providing no entity body. </p> <p>The transaction
+class is provided by <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita"><apiname>RHTTPTransaction</apiname></xref>. </p> <p><b>Headers </b> </p> <p>The
+header portion of requests and responses may have zero or more fields, which
+are used to convey information between the HTTP client and server. The information
+might relate to the data conveyed in body of the message, to the actual connection
+between the client and server, or might be used to convey data describing
+the client or server themselves. Typically, headers can contain content encoding
+and transfer encoding information. Since the HTTP API gives clients implementation
+independence from these choices, a generic form is used to represent header
+data in the API. </p> <p>The headers class is provided by <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita"><apiname>RHTTPHeaders</apiname></xref>. </p> <p><b>Data
+suppliers </b> </p> <p>The body portion of requests and responses is represented
+in the API as a mix-in interface, allowing the real implementation of the
+classes that generate body data to be fully hidden. The API enables signalling
+between the client and the transport in use, to ensure that body data is only
+used or released at a rate the client can support. This means that clients
+can assemble the body of their requests piece-by-piece, have each piece transmitted
+only when it is ready, and be signalled when transmission is complete so the
+next piece may be prepared and the old one released. </p> <p>Data supplier
+classes must implement <xref href="GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5.dita"><apiname>MHTTPDataSupplier</apiname></xref>. </p> <p><b>Filters </b> </p> <p>Filters
+are add-on modules that provide additional behaviours to a session beyond
+the simple request-response transaction described earlier. Behaviours may
+be triggered by the presence of particular headers in a request or a response,
+by status codes in a response, or by particular events that occur on a transaction.
+RFC 2616 describes a number of standard behaviours that occur over a series
+of request-response exchanges: client authentication, redirection, and caching.
+Client authentication and redirection are implemented as individual filters. </p> <p>Filter
+classes must implement <xref href="GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841.dita"><apiname>MHTTPFilter</apiname></xref>. </p> <p>Refer to <xref href="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita">Filters</xref> for more information. </p> </section>
+<section id="GUID-75720715-786A-4537-BC1B-949815E5E8AD"><title>Example code</title> <p>Example
+code used throughout this guide is taken from <filepath>HTTPEXAMPLECLIENT</filepath>,
+a simple console application that provides a menu-driven interface to the
+HTTP API. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-50BE8F1A-513A-433C-B045-66658FC226D7" xml:lang="en"><title>Client/server communication</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Base-subsystem-guide/e32/InterProcessCommunication/index.html" format="application/java-archive">Inter Process communication</xref> (IPC) is the basis for client/server architecture. Clients and servers run in different threads, although not necessarily in different processes, and communicate through message passing protocol. There are no direct pointers between the parties, leaving the integrity of the server and its resources untouched by clients. For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Base-subsystem-guide/e32/InterProcessCommunication/ClientServer/ClientServerIntroduction.guide.html" format="application/java-archive">Introduction to the client/server architecture</xref>.</p>
+<p>Communication between the client and the server is managed by <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Base-subsystem-guide/e32/InterProcessCommunication/ClientServer/InterThreadDataTransfer.guide.html" format="application/java-archive">Inter-thread data transfer</xref>. Only the server and its clients can decode the parameters of the message. This is also a security feature, because process boundaries are separators of memory space, direct pointers to the client's data structures cannot be delivered. All data not fitting in the provided integers must be represented as a <xref href="GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita">descriptor</xref>, and an address to the descriptor (or actually a <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TPckgClass.html" format="application/java-archive">TPckg</xref></codeph> object) is delivered within the message. The server then uses safe inter-thread read and write functions to access the provided descriptor.</p>
+<p>The following figure shows the relationship of the <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/e32cmn.hGlobals.html#%3a%3aTDesC" format="application/java-archive">TDesC</xref></codeph> and <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TPckgClass.html" format="application/java-archive">TPckg</xref></codeph> classes.</p>
+<fig id="GUID-715F1B96-AFC4-4FB2-AF51-6E720077F83A"><title>Relationship of a message package and a descriptor class</title><image href="GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e7076_href.png"/></fig>
+<p>Consider the following issues when implementing the client-side API:</p>
+<ul>
+<li><p>Determine if the server is already running with the <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TFindServerClass.html" format="application/java-archive">TFindServer</xref></codeph> class. If not, then it should be launched.</p></li>
+<li><p>Once the server is running, create the connection with <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/RSessionBaseClass.html" format="application/java-archive">RSessionBase::CreateSession</xref></codeph> and make sure there are free message slots available to avoid lost messages.</p></li>
+<li><p>When packaging message arguments, make sure they are in a format that the server understands. For more information, see <codeph><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TIpcArgsClass.html" format="application/java-archive">TIpcArgs</xref></codeph>.</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6"><title>Closing the PAN</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>So far in this tutorial series we have looked at the steps involved in creating a Personal Area Network and adding and removing devices on the PAN. Now we will look at Closing the PAN. </p> <p><b>Using the Tutorial </b> </p> <p>The code fragments in this tutorial are derived from the Bluetooth Example application available in <filepath>/src/COMMON/DEVELOPERLIBRARY/examples/Bluetooth/BTExample1</filepath>. Although the code has been reformatted to the requirements of the tutorial there is always enough information included with the code to find the actual example code. </p> <p><b>Intended Audience: </b> </p> <p>This tutorial is designed for Symbian licensees only. Several APIs mentioned ad used throughout this tutorial series are only available in a device creators kit environment. </p> <p><b>Basic procedure: </b> </p> <p>The high level steps to remove a device from a PAN are: </p> <ul><li id="GUID-3D636E0E-7FDA-5769-960A-F17F1BA386F0"><p>User sends a stop command from the UI. </p> </li> <li id="GUID-FCC4DD0A-C63B-5383-9BBC-034CD0D6B101"><p>The connection is stopped. </p> </li> </ul> <section><title>Closing the PAN Connection</title> <p>The user will be presented with a list of menu options. Selecting the option to stop the connection will trigger the following: </p> <codeblock id="GUID-A32C8F4A-7BC9-5C0B-90F4-54E27EE747BA" xml:space="preserve">...
+ if(iIapStarted)
+ {
+  rerr = iConnection.Stop();
+  if(rerr != KErrNone)
+ {
+  iConsole.Printf(_L("Failed to STOP IAP.  Err %d.\n"), rerr);
+ }
+ iIapStarted = EFalse;
+ }
+}
+return rerr;</codeblock> <p>Recall from <xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita">Creating a Personal Area Network</xref> tutorial that <codeph>iConnection</codeph> is an <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> </section> <section><title>What's next?</title> <p>There is nothing more to the PAN Profile tutorial series. In this series you have learned about the following: </p> <ul><li id="GUID-28BF47A7-5D36-5868-B52B-0ADF2DC9F5AE"><p> <xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita">Creating a Personal Area Network</xref>  </p> </li> <li id="GUID-10BF394F-3D57-5E4F-A04C-0E74FFB69D35"><p> <xref href="GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita"> Adding a device to the PAN</xref>  </p> </li> <li id="GUID-492FA736-BF43-56A4-8A22-0534B1EDD6F0"><p> <xref href="GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita">Removing a device from the PAN</xref>  </p> </li> <li id="GUID-F4FC4A0B-68CD-5F98-AF10-42571A8CC07F"><p> <b>Closing the PAN</b> - This document </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50F216D0-242A-5796-BDCC-7AAB28535458.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-50F216D0-242A-5796-BDCC-7AAB28535458" xml:lang="en"><title>Features
+command syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title><p>The <codeph>features</codeph> tool processes
+the Feature Database Manager (xml file) and generates the header file, feature
+choices obey file and/or <filepath>features.dat</filepath> file. The header
+file contains feature UIDs. The feature choices obey file is used to create
+different ROM images. The <filepath>features.dat</filepath> file which is
+a binary file, is used as a default configuration file by the Symbian emulator.
+The <codeph>features</codeph> tool accepts both feature manager and feature
+registry database as input, and for the feature registry database, it generates
+only <filepath>features.dat</filepath>. </p> </section>
+<section><title>Syntax</title><codeblock xml:space="preserve">features [options] &lt;xml database  file&gt; [&lt;xml database file1&gt; &lt;xml database file2&gt;...]</codeblock><p>The following options can be used: </p><table id="GUID-4A4B3EE7-8900-404E-8404-955DB9031706">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><b>Options</b></entry>
+<entry><b>Description</b></entry>
+</row>
+<row>
+<entry><codeph>-r[=&lt;destination path&gt;]</codeph> or <codeph>--hdrfile[=&lt;destination
+path&gt;]</codeph></entry>
+<entry>Creates a header file in <codeph>&lt;destination path&gt;</codeph> or
+in the default path <filepath>\epoc32\include</filepath>, if the destination
+path is not specified. </entry>
+</row>
+<row>
+<entry><codeph>-i[=&lt;destination path&gt;]</codeph> or <codeph>--ibyfile[=&lt;destination
+path&gt; </codeph></entry>
+<entry>Creates an IBY file in <codeph>&lt;destination path&gt;</codeph> or in
+the default path <filepath>\epoc32\rom\include\</filepath>, if the destination
+path is not specified. </entry>
+</row>
+<row>
+<entry><codeph>-d[=&lt;destination path&gt;]</codeph> or <codeph>--datfile[=&lt;destination
+path&gt;]</codeph></entry>
+<entry>Creates <filepath>features.dat</filepath> file in <codeph>&lt;destination
+path&gt;</codeph> or in the current directory, if the destination path is not
+specified. </entry>
+</row>
+<row>
+<entry><codeph>-c[=&lt;destination path&gt;]</codeph> or <codeph>--convert[=&lt;destination
+path&gt;]</codeph></entry>
+<entry>Converts the given feature registry database into a feature manager
+database (for example, <filepath>featureregistryname_converted.xml</filepath>)
+in <codeph>&lt;destination path&gt;</codeph> or in the current directory, if
+the destination path is not specified. <note>The converted file is named as <filepath>featureregistryname_converted.xml</filepath> by
+default. See <b>Conversion of feature registry DB to feature manager DB</b>.</note> </entry>
+</row>
+<row>
+<entry><codeph>-s</codeph> or <codeph>--strict</codeph></entry>
+<entry>Enables strict mode.</entry>
+</row>
+<row>
+<entry><codeph>-v</codeph> or<codeph> --verbose</codeph> </entry>
+<entry>Enables verbose mode.</entry>
+</row>
+<row>
+<entry><codeph>-h</codeph> or <codeph>--help</codeph> </entry>
+<entry>Displays help.</entry>
+</row>
+<row>
+<entry><codeph>--version</codeph> </entry>
+<entry>Displays the version of the tool.</entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>The features tool also allows you to specify a combination of options
+(for example, <codeph>features -rcv</codeph>).   </p><p><codeph>&lt;xml database
+file&gt;</codeph> can be either a Feature Registry database (<filepath>featureUIDs.xml</filepath>)
+or a Feature Manager database (<filepath>featuredatabase.xml</filepath>) </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-50FD71BF-2DDA-5E80-9904-82DC90FCE6DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-50FD71BF-2DDA-5E80-9904-82DC90FCE6DD" xml:lang="en"><title>Resource member initialisation</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5107ABD8-6408-5501-8073-ACAF3719247B" xml:lang="en"><title>Resizable
+buffer descriptors</title><shortdesc>Describes descriptor behaviour and resizable buffer descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A resizable buffer descriptor provides a buffer, allocated on the heap,
+to contain and access data. The data is not part of the descriptor object. </p>
+<p>The data represented by this descriptor can be both accessed and changed
+through the descriptor itself. Data is accessed through functions provided
+by the base class. The size of the buffer used by this descriptor can also
+be changed. Note that unlike dynamic buffers, reallocation is not done automatically;
+the descriptor provides an API that allows you to do reallocation. </p>
+<p>The descriptor has similarities to the standard heap descriptor,<xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>,
+but is <i>easier to use</i>. The standard heap descriptor is recommended for
+use when the data it represents rarely changes. The resizable buffer descriptor
+is recommended for use when the data changes frequently. </p>
+<p>This descriptor also has the following additional useful behaviour: </p>
+<ul>
+<li id="GUID-A40D7342-C864-51A3-B53B-DA73988501C2"><p>ownership of an existing
+heap descriptor can be transferred to a resizable buffer descriptor. </p> </li>
+<li id="GUID-63EA50EE-1DD4-5ABE-9676-0347E95F07CA"><p>ownership of memory
+that has already been allocated elsewhere can be transferred to a resizable
+buffer descriptor; this memory becomes the buffer used by the descriptor. </p> </li>
+<li id="GUID-D16CAA95-26A4-5B45-AEA2-58DDB28F16CB"><p>ownership of memory
+owned by a resizable buffer descriptor can be transferred to another resizable
+buffer descriptor. </p> </li>
+</ul>
+<p>The important point is that the user of the class need not be concerned
+about the 'origins' of the memory. </p>
+<p>A resizable buffer descriptor is supplied in two variants: </p>
+<ul>
+<li id="GUID-017A1851-A5FE-5179-87BC-0F0BF748761A"><p>a 16-bit variant, a <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita"><apiname>RBuf16</apiname></xref>,
+to contain wide strings, and 16-bit wide data. </p> </li>
+<li id="GUID-55A2D978-C16A-58E7-BE55-9CB681484473"><p>an 8-bit variant, a <xref href="GUID-955061A8-A83E-39E5-8745-8FAC7DEA7BCC.dita"><apiname>RBuf8</apiname></xref>,
+to contain narrow strings and binary data. </p> </li>
+</ul>
+<p>There is also a build independent type, <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>. This is
+the type that is most commonly used in program code; this is set (i.e. typedef)
+to the appropriate 'real' variant at build time, and by default equates to <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita"><apiname>RBuf16</apiname></xref>. </p>
+<p>You would use an explicit 8-bit variant for binary data. An explicit 16-bit
+variant is rarely used. </p>
+<p>When discussing a resizable buffer descriptor, we normally refer to <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>,
+rather than <xref href="GUID-955061A8-A83E-39E5-8745-8FAC7DEA7BCC.dita"><apiname>RBuf8</apiname></xref> or <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita"><apiname>RBuf16</apiname></xref>. We only
+refer to <codeph>RBuf8</codeph> or <codeph>RBuf16</codeph> when they explicitly
+need to be used. </p>
+<p>The following drawing shows how an <codeph>RBuf</codeph> type is constructed.
+It is derived from <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> and <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>; the
+member data of these base classes hold the length and maximum length for the
+descriptor data. <codeph>RBuf</codeph> itself only contains a single pointer.
+The pointer is interpreted in one of two ways, depending on how its buffer
+has been set up: </p>
+<ul>
+<li id="GUID-8EB79399-9FAF-5CFE-9542-C015215B0D8D"><p>as a simple pointer
+to memory on the heap. </p> </li>
+<li id="GUID-645528B9-2786-59E1-9F6F-7DD875AE1B1E"><p>as a pointer to a previously
+created <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> heap descriptor; ownership of the <codeph>HBufC</codeph> descriptor
+buffer will have been transferred to the <codeph>RBuf</codeph>. </p> </li>
+</ul>
+<p>The way descriptors in Symbian OS are implemented allows <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> to
+distinguish between the two. </p>
+<p>The following drawing shows the internal representation of an <codeph>RBuf</codeph> object
+initialised with a string of five characters representing the English word
+"Hello". There are two possibilities: </p>
+<ul>
+<li id="GUID-3934910A-431A-582A-A117-3B1C497CE880"><p>the case where the buffer
+consists of simple memory, either allocated directly by the object itself,
+or assigned to it after having been allocated elsewhere. </p> </li>
+<li id="GUID-5AD86C97-66DF-5B88-95D7-2169D4CFD8A2"><p>the case where the buffer
+was originally allocated as a standard heap descriptor, a <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> type,
+and whose ownership has been transferred. </p> </li>
+</ul>
+<p>Remember that <codeph>RBuf</codeph> is derived from both <codeph>TDes</codeph> and <codeph>TDesC</codeph>,
+and these classes provide the data members the contain the maximum length
+and the current length of the data. </p>
+<fig id="GUID-50810FFC-9A97-5EC1-B6A6-7E371AEC9FF6">
+<image href="GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e196257_href.png" placement="inline"/>
+</fig>
+<p>While an <codeph>RBuf</codeph> descriptor has similarities to a heap descriptor,
+it behaves more like a standard 'R' type resource class, i.e. as a handle
+to a real resource maintained elsewhere. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-511A0F2D-AD60-56C5-808C-8F8570C19C3A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-511A0F2D-AD60-56C5-808C-8F8570C19C3A" xml:lang="en"><title>Battery
+Charger Tutorial </title><shortdesc>This tutorial describes how to get the battery charger information. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>The client applications must check if the device can detect and provide
+the charger information.</context>
+
+
+<steps id="GUID-9A643716-8B35-56DC-B59D-EFEC27E5E2D3">
+<step id="GUID-EE1614C7-B385-55E2-BE5E-1317CFD9F6F9"><cmd/>
+<info>create an instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-3CA05094-4CDC-5EAC-AEB8-7C89B1D8B969"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetIndicator()</apiname></xref> to
+get the charger information </info>
+</step>
+<step id="GUID-CD574AFD-9C1B-5E29-953F-1E294037C578"><cmd/>
+<info>the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>GetIndicator()</apiname></xref> returns a
+packaged descriptor <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TIndicatorV1</apiname></xref> </info>
+<info> <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TIndicatorV1</apiname></xref> enables the client
+application to determine if the device can detect a charger connection. If
+the device can detect a charger connection then the clients can determine
+the status of the charger </info>
+</step>
+<step id="GUID-4CCCBF36-D337-562E-B3D2-5A242A9E6AF4"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>                 CTelephony::EGetIndicatorCancel</apiname></xref> to
+cancel the asynchronous <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>GetIndicator()</apiname></xref> request. </info>
+</step>
+</steps>
+<example id="GUID-6504744C-BA63-52E0-AD9C-EA3E4186EBD8"><title>Battery charger
+example</title> <codeblock id="GUID-861ED86D-A73E-5499-9534-BB40870487C8" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TIndicatorV1 iIndicatorV1;
+    CTelephony::TIndicatorV1Pckg iIndicatorV1Pckg;
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iIndicatorV1Pckg(iIndicatorV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetIndicator(iStatus, iIndicatorV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if(iIndicatorV1.iCapabilities &amp; CTelephony::KIndChargerConnected)
+          {
+          // We can detect when a charger is connected
+          if(iIndicatorV1.iIndicator &amp; CTelephony::KIndChargerConnected)
+             {} // Charger is connected
+          else
+             {} // Charger is not connected
+          }
+       else
+          {} // We do not know whether a charger is connected
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetIndicatorCancel);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226" xml:lang="en"><title>Circular
+Buffer structure</title><shortdesc>This document describes the structure of circular buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>"Circular Buffers" is a sub-API of the "Buffers and strings" API.</p>
+<p>A circular buffer provides a simple way of implementing a fixed length
+queue of fixed size objects where objects are added to the head of the queue
+while items are removed from the tail of the queue.</p>
+<p>Logically, the buffer is circular with no defined start or end. Objects
+are always added to the buffer head and are always removed from the buffer
+tail. The buffer head is always the next vacant slot into which an object
+is added. The buffer tail is always the slot from which the next object is
+removed. The tail always logically follows the head and the implementation
+ensures that the tail never overtakes the head.</p>
+<fig id="GUID-18737BF9-5382-5431-8B3E-68C7CCD3DF86">
+<image href="GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e195024_href.png" placement="inline"/>
+</fig>
+<p>Physically, the buffer is a contiguous block of memory. The implementation
+provides the appearance of circularity.</p>
+<p>A circular buffer has a maximum capacity which must be set before the circular
+buffer can be used. The maximum capacity can be changed at any time but any
+existing data within the buffer is lost.</p>
+<p>The sub-API consists of three classes, two of which can be instantiated:</p>
+<ul>
+<li id="GUID-42FC2894-0995-578C-AE0D-0670CC63B242"><p>the templated class <codeph>CCirBuf&lt;class
+T&gt;</codeph> builds a circular buffer of general objects.</p> </li>
+<li id="GUID-C98B7B84-67D4-5616-A042-CFF16B26422F"><p>the <codeph>CCirBuffer</codeph> class
+builds a circular buffer of unsigned integers with values ranging from -128
+to +128.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e2138_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-51621C76-17B5-5829-B4EC-86B453442CDC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-51621C76-17B5-5829-B4EC-86B453442CDC" xml:lang="en"><title>How
+to implement a simple server interface</title><shortdesc>Provides code snippets to help you to implement a simple server
+interface.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-2720017E-2EDF-4DB5-81E9-2A75E434BDE3"><title>Handling asynchronous requests</title> <p>The implementation
+of a server requires a class derived from <codeph>CServer2</codeph>. This
+is the <i>active object</i> base class responsible for handling the asynchronous
+requests from the client program. </p> <p><b>Construction and initialisation</b> </p> <p>An
+instance of the <codeph>CServer2</codeph> derived class is, typically, created
+by the server's thread function. As an active object, it needs a priority
+and this is passed as a parameter to the constructor. The choice of priority
+value depends on the server's design. If the server can, ultimately, have
+more than one active object, then it may be important for the <codeph>CServer2</codeph> active
+object to have the highest priority. </p> <p>The server can now be started.
+This is a code fragment taken from the example that can be found at <filepath>...\examples\Base\IPC\ClientServer\complex</filepath>. </p> <codeblock id="GUID-6D887396-920C-5B5B-B58E-6700371DB31C" xml:space="preserve">CCountServServer *pS=new CCountServServer(EPriorityStandard);
+__ASSERT_ALWAYS(pS!=NULL,CCountServServer::PanicServer(ESvrCreateServer));
+...
+      
+    // Start the server
+TInt err = pS-&gt;Start(KCountServerName);
+if (err != KErrNone)
+    {
+    CCountServServer::PanicServer(ESvrStartServer);
+    }</codeblock> <p>The function <codeph>CServer2::Start()</codeph> adds
+the <codeph>CServer2</codeph> active object to the active scheduler and issues
+the first request for messages. The server is now waiting for messages. </p> <p>As
+with all active objects, the completion of requests for messages is handled
+by the <codeph>CServer2::RunL()</codeph> protected member function. </p> <p><b>Handling requests</b> </p> <p>A request for a connection by a client thread
+results in the creation of a new session. The request for a connection results
+in a call by the client/server framework to the <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita#GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C/GUID-3260F745-3597-349A-9754-303DC020EF18"><apiname>CServer2::NewSessionL()</apiname></xref> function.
+A derived class must provide an implementation - creating and initialising
+an instance of a <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref> derived class. The framework
+takes this newly created session object to the server's queue. </p> <p>For
+a non sharable session, requests for disconnection by a client thread cause
+the relevant <codeph>CSession2</codeph> object to be deleted. The <codeph>CSession2</codeph> destructor
+should perform appropriate cleanup. </p> <p>Any other message is passed to <codeph>CSession2::ServiceL()</codeph>.
+This function must be implemented by a derived class. </p> </section>
+<section id="GUID-2E5EB078-59D7-49B3-A32A-17AF0FBD3492"><title>Server side session representation</title> <p>The base class <codeph>CSession2</codeph> represents
+a client's session on the server side. This class provides the standard session
+behaviour. A class derived from <codeph>CSession2</codeph> must be defined
+and implemented. The following class definition, taken from the example that
+can be found at: <filepath>...\examples\Base\IPC\ClientServer\simple</filepath>,
+is typical: </p> <codeblock id="GUID-8DCCB062-2630-5C2E-A590-89208928E902" xml:space="preserve">class CCountServSession : public CSession2
+    {
+public:
+    CCountServSession();
+
+      //service request
+    void ServiceL(const RMessage2&amp; aMessage);
+    void DispatchMessageL(const RMessage2&amp; aMessage);
+
+      // services available to initialize/increase/decrease/reset and
+      // return the counter value.
+    void SetFromStringL(const RMessage2&amp; aMessage);
+    void Increase();
+    void Decrease();
+    void IncreaseBy(const RMessage2&amp; aMessage);
+    void DecreaseBy(const RMessage2&amp; aMessage);
+    void CounterValue(const RMessage2&amp; aMessage);
+    void Reset();
+
+protected:
+        // panic the client
+   void PanicClient(const RMessage2&amp; aMessage,TInt aPanic) const;
+        
+private:
+    TInt iCount;
+    };</codeblock> <p>Note the following: </p> <ul>
+<li id="GUID-D3EE4EBA-47F3-5EC4-8487-A4DBD809D2B3"><p>The function <codeph>ServiceL()</codeph> is
+called by the client/server framework to handle all messages except requests
+to connect and disconnect. </p> </li>
+<li id="GUID-C4980BE1-D852-5AAE-8782-8C98D95BA102"><p> <codeph>ServiceL()</codeph> calls <codeph>DispatchMessageL()</codeph> under
+a trap harness. </p> </li>
+<li id="GUID-19A78104-9C7C-53C7-8328-F34E2CBCF857"><p> <codeph>DispatchMessageL()</codeph> determines
+the appropriate message service function to call by examining the operation
+code of the current message. This is simply a mechanism to delegate the handling
+of different request types. </p> </li>
+<li id="GUID-9A3F4396-8561-540D-BE0B-C674A14704AE"><p>The class provides message
+service functions: <codeph>Increase()</codeph>, <codeph>IncreaseBy()</codeph> etc.
+to service specific messages from clients. </p> </li>
+<li id="GUID-023BAF14-7588-5F25-B75C-8F1126D7749F"><p>The function <codeph>SetFromStringL()</codeph> needs
+a string specified by the client and therefore needs to read data from the
+client address space. </p> </li>
+</ul> <p><b>ServiceL()</b> </p> <p>This
+is implemented as follows: </p> <codeblock id="GUID-293D2833-3C1C-5B6E-AACF-B8EC20E0F7F9" xml:space="preserve">void CCountServSession::ServiceL(const RMessage2&amp; aMessage)
+    {
+    TRAPD(err,DispatchMessageL(aMessage));
+    aMessage.Complete(err);
+    }</codeblock> <p>After calling the appropriate service function via <codeph>DispatchMessageL()</codeph>,
+the asynchronous request is completed with <codeph>aMessage.Complete()</codeph> which
+passes the completion code back to the client. </p> <p><b>DispatchMessageL()</b> </p> <p>This is implemented as follows: </p> <codeblock id="GUID-14C3190C-921F-5C69-B0D0-7932C71B5ACF" xml:space="preserve">void CCountServSession::DispatchMessageL(const RMessage2&amp; aMessage)
+    {
+    switch (aMessage.Function())
+        {
+    case ECountServSetFromString:
+        SetFromStringL(aMessage);
+        return;
+    case ECountServIncrease:
+        Increase();
+        return;
+    case ECountServIncreaseBy:
+        IncreaseBy(aMessage);
+        return;
+        ...
+    case ECountServValue:
+        CounterValue(aMessage);
+        return;
+    ...
+    default:
+        PanicClient(aMessage,EBadRequest);
+        return;
+        }
+    }</codeblock> <p><b>IncreaseBy()</b> </p> <p>This message service function is implemented as follows: </p> <codeblock id="GUID-4516B089-F1D8-56BD-82CB-B7A1B0E98F0D" xml:space="preserve">void CCountServSession::IncreaseBy(const RMessage2&amp; aMessage)
+    {
+    iCount = iCount + aMessage.Int0(); 
+    }</codeblock> <p>Note that we need to pass the message object to the function.
+The <codeph>Int0()</codeph> function is used to get the integer specified
+in the client call - the '0' on the end of the function name indicates that
+the integer is the first parameter in the set passed across from the client. </p> <p><b>SetFromStringL()</b> </p> <p>This message service function is implemented
+as follows: </p> <codeblock id="GUID-2BC55BC9-6AE1-5462-A6EE-6767F8EE19C7" xml:space="preserve">void CCountServSession::SetFromStringL(const RMessage2&amp; aMessage)
+    {
+         // length of passed descriptor (1st parameter passed from client)
+    TInt deslen = aMessage.GetDesLength(0);
+    
+      // Passed data will be saved in this descriptor.
+    RBuf buffer;
+      
+      // Max length set to the value of "deslen", but current length is zero
+    buffer.CreateL(deslen);
+      
+      // Do the right cleanup if anything subsequently goes wrong
+    buffer.CleanupClosePushL();
+    
+      // Copy the client's descriptor data into our buffer.
+    aMessage.ReadL(0,buffer,0);
+    
+      // Now do a validation to make sure that the string only has digits
+    if (buffer.Length() == 0)
+        {
+        User::Leave(ENonNumericString);
+        }
+    ...
+      // Do rest of work to convert from 
+      // string to integer, and assign.</codeblock> <p> <codeph>RMessage::ReadL()</codeph> reads
+the descriptor from the client address space as specified by the first argument
+in the message, and copies the data into the descriptor specified as its second
+argument. A basic test is done to make sure there data is supplied. </p> <p><b>CounterValue()</b> </p> <p>This is implemented as follows: </p> <codeblock id="GUID-9EE6666F-A4A7-5437-8AF1-CB0F8E2D6F0F" xml:space="preserve">void CCountServSession::CounterValue(const RMessage2&amp; aMessage)
+    {
+    TPckgBuf&lt;TInt&gt; p(iCount);
+    aMessage.WriteL(0,p);
+    }</codeblock> <p>It writes data back to a descriptor in the client address
+space. The corresponding client request is: </p> <codeblock id="GUID-A772B781-18E8-5109-BB6F-8871F829A8B5" xml:space="preserve">TInt RCountServSession::CounterValue()
+    {
+    TInt res=0;
+    TckgBuf&lt;TInt&gt; pckg;
+    
+      // Note that TPckgBuf is of type TDes8
+    TIpcArgs args(&amp;pckg);
+    SendReceive(ECountServValue, args);
+    
+      // Extract the value returned from the server. 
+    res = pckg();
+    return res;
+    }</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-EC003B28-3695-5B19-8074-54DB06B720B8"><p>The <codeph>TInt</codeph> is
+packaged into a descriptor before being passed to the server. The packaging
+mechanism is known as package buffer. </p> </li>
+<li id="GUID-BB34EFC9-D238-509C-98C1-66BC64AA6EE2"><p>The write operation
+copies the descriptor, i.e. the package buffer containing the integer value,
+back to the descriptor in the client address space. Note that the zero specified
+in <codeph>aMessage.WriteL(0,p);</codeph> means that the argument referred
+to is the first in the list passed across from the client side via the <codeph>TIpcArgs</codeph> object. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e190709_href.png has changed
Binary file Symbian3/SDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e120695_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-517F4D7A-5959-57E6-9C5C-3584FBA4EA42.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-517F4D7A-5959-57E6-9C5C-3584FBA4EA42"><title>How to close the timer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use <codeph>Close()</codeph> (from the <codeph>RHandleBase</codeph> base class) to close the time after it has been used.</p> <codeblock id="GUID-C9C7C17A-DBEA-546A-8A32-3778FF9FA457" xml:space="preserve">timer.Close(); // close timer
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-519AEE28-D3A8-5430-88CA-178CA338D592.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-519AEE28-D3A8-5430-88CA-178CA338D592"><title>ls</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>ls</userinput> </p> <p>Lists the directory contents. For more information about using the <codeph>ls</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://www.freebsd.org/cgi/man.cgi</xref> by specifying <codeph>ls</codeph> as the search keyword and by selecting the <b>FreeBSD 6.2-Release</b> option from the release list. </p> <p>The following options are <b>not</b> supported by the Symbian version of the <codeph>ls</codeph> command: </p> <ul><li id="GUID-4DC3DD38-FF0A-5305-B7C1-31035C5201EB"><p> <codeph> -B </codeph> </p> </li> <li id="GUID-A94D76A2-0FE5-54CA-8242-6920A27C32A8"><p> <codeph> -G </codeph> </p> </li> <li id="GUID-952C08D5-9F6A-5763-8593-1BAD63087AE6"><p> <codeph>-H </codeph> </p> </li> <li id="GUID-93735923-843A-53E0-8D33-DF738865C7A1"><p> <codeph> -I </codeph> </p> </li> <li id="GUID-83150CCC-FD69-5CE3-A58F-D06F2DD5D130"><p> <codeph>-L </codeph> </p> </li> <li id="GUID-D8A57609-3AA8-58ED-8939-5D267A6B2EFD"><p> <codeph> -P</codeph>  </p> </li> <li id="GUID-AF3BFCC8-BA9D-5F02-BE42-E13E09E37B05"><p> <codeph> -T</codeph>  </p> </li> <li id="GUID-779FC349-0A1E-500E-8366-E8BDA0A724DE"><p> <codeph> -W</codeph>  </p> </li> <li id="GUID-02F22CB8-88FA-5498-929F-964A740FD3F8"><p> <codeph> -Z</codeph>  </p> </li> <li id="GUID-0EE65505-8798-5916-8C03-B8043C1A1216"><p> <codeph> -b</codeph>  </p> </li> <li id="GUID-A9C0469B-059A-5964-B5C5-3C6E405E735E"><p> <codeph> -g </codeph> </p> </li> <li id="GUID-4A8DA5A8-31D6-5C0F-AC4C-2F32323A0441"><p> <codeph> -h </codeph> </p> </li> <li id="GUID-8A811548-D704-581B-B6CD-DC7B4561692B"><p> <codeph>-i </codeph> </p> </li> <li id="GUID-7C9820DB-14F7-5ABC-8B24-96E46089D63A"><p> <codeph> -n </codeph> </p> </li> <li id="GUID-2F813B66-DEFB-589B-AB07-1A0E13E6FD8A"><p> <codeph> -o</codeph> </p> </li> <li id="GUID-C24E17BC-2596-58F7-9356-18D61344CC94"><p> <codeph>-w </codeph> </p> </li> </ul> <section><title>Copyright information</title> <p>For information about documentation copyrights associated with the <codeph>ls</codeph> command, see <xref scope="external" href="http://www.freebsd.org/copyright/freebsd-doc-license.html">http://www.freebsd.org/copyright/freebsd-doc-license.html</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-51AB13C3-755C-45CD-841D-1CDF45338A2F_d0e46350_href.png has changed
Binary file Symbian3/SDK/Source/GUID-51AB13C3-755C-45CD-841D-1CDF45338A2F_d0e52443_href.png has changed
Binary file Symbian3/SDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e246946_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-51C6E337-9E68-542A-B785-670417A55CEF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-51C6E337-9E68-542A-B785-670417A55CEF"><title>Printing</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Printing is fully supported within the Symbian text model. It requires that documents be paginated, so that the page for each element of the document may be identified. A page region printer for printing multi-page documents is required. Then, there are various editing and preview requirements.</p> <section><title>Printing</title> <p>The print system specifies a page region printer interface using the <xref href="GUID-2C4DA17D-16ED-35C7-B936-1FF121C86FB2.dita"><apiname>MPageRegionPrinter</apiname></xref> class. Text views provides <xref href="GUID-7AB01170-2B13-3E3E-9B04-7F0EEEA36030.dita"><apiname>CTextPageRegionPrinter</apiname></xref> which implements this interface. This allows a large text object to be printed essentially by specifying a print setup and requesting the <codeph>CTextPageRegionPrinter</codeph> to start printing.</p> </section> <section><title>Pagination</title> <p>Printing a large document requires that it be split into pages. It is also necessary to be able to identify the pagination of a document for other purposes — for example, so that the user can know which page he or she is working on while editing the document, and so that fields containing page numbers can be maintained while editing.</p> <p>On the other hand, pagination is an expensive operation requiring that the entire document be laid out so that line heights and line breaks can be determined, and the document position associated with each page break can be determined.</p> <p>The <xref href="GUID-1FFB0E19-F0CB-39DC-9EE7-2F3C082FF0CA.dita"><apiname>CTextPaginator</apiname></xref> class is an active object which, acting like a separate non-pre-emptive thread of execution, performs pagination incrementally, without noticeably interrupting the process of handling user input. This class allows a document's pagination to be maintained roughly during periods of intense user activity, and then for the system to catch up when the user activity slows down or stops.</p> </section> <section><title>Selective printing</title> <p>Text objects are used in contexts where pagination is inappropriate. For instance, each cell in a spreadsheet may contain a text object. In this case, pagination is controlled by the application program, but text views may be used to determine the size of each object, and to draw each object during banded printing.</p> </section> <section><title>WYSIWYG mode</title> <p>As well as screen layout and printer layout, <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> supports a WYSIWYG layout mode so that the final appearance of the document on the printer can be judged in advance, even while editing.</p> <p>In screen layout mode, font specifications in the text object are mapped onto their nearest available screen font, and this screen font is used for both layout and display purposes.</p> <p>In printer layout mode, font specifications in the text object are mapped onto their nearest available font from the selected print setup, and this font is used for layout and display. For this purpose, printer drivers supply font metrics to be used by applications such as text layout. But they do not need to supply font bitmaps or outlines, since these are needed only by the printer.</p> <p>WYSIWYG mode is in between these two. Font specifications in the document are used to select the font metrics from the print setup, but a font from the screen’s font store. The printer font metrics are used to lay out the document, and the screen font is used to draw the view on the screen. This provides fully accurate layout while editing the document. The cost is slightly higher overheads for formatting, and some degradation in the aesthetic quality of the view — but the WYSIWYG mode has been carefully designed to optimize aesthetics, within the context of the WYSIWYG requirements.</p> </section> <section><title>Print preview</title> <p>Finally, text layout supports a printer preview display. This also uses printer metrics but, since on the one hand a print preview displays many pages and is therefore potentially expensive on memory, and on the other hand not all the features of a document can be seen anyway in print preview mode, the print preview mode takes steps to reduce unnecessary memory overhead from layout.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-51CD4B23-F4C1-4CD2-8CDB-6335365CE44B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-51CD4B23-F4C1-4CD2-8CDB-6335365CE44B" xml:lang="en"><title>Domain-specific
+events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><draft-comment time="2007-03-01T10:52">Comment for reviewers: This information
+will be moved to the library PIM section, once such a section has been created.</draft-comment></p>
+<p>This section documents the following domain-specific events:</p>
+<ul>
+<li><p><xref href="GUID-6A2160F0-6062-4E77-ABA3-B829AF9689FA.dita">Contacts
+database events</xref></p>
+</li>
+<li><p><xref href="GUID-6457E7C4-1203-47B6-8AD3-A6998798943B.dita">Alarm
+server events</xref></p>
+</li>
+<li><p><xref href="GUID-66F06584-F9C4-42C5-A596-96522A9BE7C5.dita"/></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e317224_href.png has changed
Binary file Symbian3/SDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e93876_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-51F43258-B3D8-5EC9-85EF-67F09499C253.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-51F43258-B3D8-5EC9-85EF-67F09499C253"><title>Alarm States</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the various states of an alarm. </p> <p>At a given point of time, alarms can be in only one state, which is represented by <xref href="GUID-AA8C278D-B7E9-3DC5-8F9F-955C4368C862.dita"><apiname>TAlarmState</apiname></xref>. The following diagram is self-explanatory and represents the state transition of alarms: </p> <fig id="GUID-5EA45FAD-FEF5-575F-83D1-5607B44D5BD3"><title>
+          State Transition of Alarms
+        </title> <image href="GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e117992_href.png" placement="inline"/></fig> <p> </p> <section><title>See Also</title> <p><xref href="GUID-12A32F8E-0C53-5311-9B2B-8E0EA373ED08.dita">Types of Alarm</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e62069_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-51FF9F99-8005-4480-9645-64476B953C57.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-51FF9F99-8005-4480-9645-64476B953C57" xml:lang="en"><title>GLib
+Tutorials</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-520AC2F0-009E-51F3-A661-3B6E949F1423" xml:lang="en"><title>Picture Tutorials</title><shortdesc>This section provides examples of working with <i>pictures</i>. In this context a picture is an object that can be drawn to a graphics context and can be stored and restored. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita"><linktext>Graphics Device
+  Interface Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-520F620F-03CE-5C4E-9783-745D2740F648.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-520F620F-03CE-5C4E-9783-745D2740F648" xml:lang="en"><title>Supplementary
+Services Provided</title><shortdesc>This section describes the supplementary service information provided
+by the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The information available depends on the network. Information available
+for all networks include call barring and call waiting. Information available
+only in the GSM and WCDMA networks includes call forwarding and caller identification. </p>
+<section id="GUID-39EB5CE9-3024-54B1-9F7C-7D19179262BF"><title>Call barring</title> <p>The
+call carrying status indicates whether call barring is active, inactive or
+not available. The phones have different call barring settings for different
+conditions. For example, a phone might bar outbound calls but accept inbound
+calls. </p> </section>
+<section id="GUID-D8E03693-C337-5F6D-8598-1836A7A7EB85"><title>Call waiting</title> <p>The
+call waiting status indicates if the call waiting service is active, inactive
+or not available. </p> </section>
+<section id="GUID-42879377-6D68-5D67-9719-F3DBC4BEF6DF"><title>Call forwarding</title> <p>The
+call forwarding status indicates whether call forwarding is active, inactive,
+not provisioned or not available. The phones can have different call forwarding
+settings for different conditions. For instance, a phone might forward calls
+when the subscriber is busy, but not when the subscriber does not respond. </p> <p> <b>Note</b>:
+This information is only available on GSM and WCDMA networks. </p> </section>
+<section id="GUID-B9D15995-C23A-5CAD-98DC-8A916A54C554"><title>Caller Line
+identification</title> <p><b>Calling Line Identification Presentation </b> </p> <p>The Calling Line
+Identification Presentation (CLIP) provides the number of the remote party
+that calls your phone. </p> <p> <b>Note</b>: This information is only available
+on GSM and WCDMA networks. </p> <p><b>Calling Line Identification Restriction </b> </p> <p>The Calling Line
+Identification Restriction (CLIR) enables the caller to hide the number to
+be displayed to the remote party. </p> <p> <b>Note</b>: This information is
+only available on GSM and WCDMA networks. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-52151070-626D-5F14-B53F-7B46BCBD633E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-52151070-626D-5F14-B53F-7B46BCBD633E" xml:lang="en"><title>Using
+TAutoClose</title><shortdesc>Example code showing how <codeph>TAutoClose</codeph> can be used
+to clean up when an object goes out of scope.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A simple example shows how this class can be used.</p>
+<codeblock id="GUID-468EE01A-8EC1-5D8E-845A-710D5BE3BBBC" xml:space="preserve">TInt ReadFile(const TDesC&amp; aFile)
+//
+// Read a file
+//
+    {
+    TAutoClose&lt;RFile&gt; file;
+    TInt r=file.iObj.Open(aFile,KFileStreamText|EFileExclusive);
+    if (r!=KErrNone)
+        return(r);
+    TBuf&lt;100&gt; b;
+    if ((r=file.iObj.Read(b))!=KErrNone)
+        return(r);
+    ...
+    }</codeblock>
+<p>The object <codeph>file</codeph> goes out of scope when the function completes,
+and the compiler automatically destroys it, calling the <xref href="GUID-3377FA4B-FDC8-3B25-8C5F-34675F6BEA12.dita"><apiname>TAutoClose</apiname></xref> destructor
+in the process. The destructor calls <codeph>Close()</codeph> on the <codeph>RFile</codeph> member
+of <codeph>TAutoClose</codeph>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-521837E2-583C-5C7D-85F7-D936C77AA84C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-521837E2-583C-5C7D-85F7-D936C77AA84C"><title>What is a Comms Provider Module?</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Comms Provider Module is a thread in the C32exe process. A Comms Provider Module is an extension of the thread class (<xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref>) and adds functionality and information required by threads in the C32exe process. This information includes: </p> <ul><li id="GUID-25E88AD9-979D-5BDB-A31D-18CCD8979540"><p>The name of the Comms Provider Module </p> </li> <li id="GUID-54CFB2DE-DCD4-52ED-9FF1-E4A246651711"><p>The other Comms Provider Modules this Comms Provider Module must bind with for communication </p> </li> <li id="GUID-BA660D31-3C6D-522B-BF81-556BAA806F5C"><p>Configuration to be sent to the DLL for the thread. This configuration is specific to the thread and is not processed by Root Server. For example, Socket Server Comms Provider Modules must define the protocols to be loaded. </p> </li> <li id="GUID-49CF774D-3604-5F7F-88CC-BBD5AC88467D"><p>Parameters of <codeph>RThread</codeph>: </p> <ul><li id="GUID-125E854B-AC37-57BF-82E1-5BAEB7FBB102"><p>The name of the thread </p> </li> <li id="GUID-B6FFB573-006B-592B-80DA-98C4954EF0E9"><p>Priority of the thread </p> </li> <li id="GUID-0763D72B-F232-51E8-9527-F77577BA872D"><p>Stack and heap allocation of the thread </p> </li> <li id="GUID-B07202B0-F2E3-50BA-B584-C1EA1D69FB9E"><p>Action taken when the thread dies </p> </li> <li id="GUID-9A21532B-3F2F-5FDD-BD52-DFE4ECD6DB09"><p>Location of the thread in the System Startup sequence </p> </li> </ul> </li> </ul> <p>Functionality that a Comms Provider Module provides includes: </p> <ul><li id="GUID-69DC7CD5-F8F4-5764-BA85-963971C84870"><p>Access to the instance of the debug logger used with C32exe </p> </li> <li id="GUID-54BEC59A-0BA6-5799-81A4-B87B9C965222"><p>Extra debug logging on thread exit, including a trace of all memory leaks </p> </li> </ul> <p>A Comms Provider Module is represented by a single <xref href="GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF.dita">CMI file</xref>. </p> <p>Each of the Servers used in communications are a separate Comms Provider Module. For example, the Socket Server, Telephony Server and Serial Communications Server are each Comms Provider Modules. The Socket Server and the Serial Communications Server can also be configured to run as multiple Comms Provider Modules. In this case, each Comms Provider Module runs a group of plugins to the server. For example, the Socket Server can be run as four Comms Provider Modules, with the first Module running the main Socket Server thread, and the other three Modules running the SMS, IP and Bluetooth protocols. </p> <p>For a DLL to be run as a Comms Provider Module, the DLL must have these attributes: </p> <ul><li id="GUID-79C91A9D-1C9C-5A28-B8FD-6C4F06537356"><p>The type (2nd UID) is <xref href="GUID-72BAFF7B-69FA-33B3-9998-4982E70C6177.dita"><apiname>KUidCommsProviderModule</apiname></xref> (<codeph>0x101f7418</codeph>) </p> </li> <li id="GUID-E3344C69-1F31-5E65-BEDC-AF392737DB94"><p>It exports a function which acts as the main function of a new thread. This function must have a signature that takes a single <xref href="GUID-7A7C6CF1-23E3-3243-B4A8-DD94FBCC1FA5.dita"><apiname>TCFModuleInfo</apiname></xref> * parameter and returns a <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> when the Comms Provider Module unloads. This function is called when the Comms Provider Module is loaded and communicates with the Root Server across the Comms Channels provided in the <codeph>TCFModuleInfo</codeph>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5219F0F7-4BFA-5B1B-999C-FBE4E2228588.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5219F0F7-4BFA-5B1B-999C-FBE4E2228588"><title>How to create an RTimer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following example code demonstrates how to set up an <codeph>RTimer</codeph>. </p> <ul><li id="GUID-2C0AB662-532A-54BF-804C-0213C261FD0C"><p>Create the <codeph>RTimer</codeph> object</p> </li> <li id="GUID-1818F3A0-C31F-539D-A79D-5577C1AD01B4"><p>Call <codeph>CreateLocal()</codeph> on the timer object</p> </li> <li id="GUID-465F52FC-EE93-59BC-A7C2-1FD36243FE26"><p>Provide a <codeph>TRequestStatus</codeph> request.</p> </li> </ul> <codeblock id="GUID-26C4BA27-CB9B-5051-A680-605DD21224EC" xml:space="preserve">
+RTimer timer; 
+TRequestStatus timerStatus; // Request status associated with timer
+timer.CreateLocal();        // Create for this thread
+...                         // Now add code to use the timer</codeblock> <section><title>Note </title> <ul><li id="GUID-A0545164-C20D-59CF-A2AC-5EC1DE32A412"><p>The timer is always thread-relative.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-521C2463-A72B-4C48-8815-61689264F2C1-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-521C2463-A72B-4C48-8815-61689264F2C1_d0e52001_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-521C2463-A72B-4C48-8815-61689264F2C1_d0e52646_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e248943_href.png has changed
Binary file Symbian3/SDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412-master.png has changed
Binary file Symbian3/SDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e400779_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147" xml:lang="en"><title>start
+resource</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>start resource</codeph>  <varname>source-file</varname>  </p>
+<p>[<codeph>target</codeph>  <varname>target-file-name</varname>] </p>
+<p>[<codeph>targetpath</codeph>  <varname>targetpath</varname>] </p>
+<p>[<codeph>header</codeph> | <codeph>headeronly</codeph>] </p>
+<p>[<codeph>lang</codeph>  <varname>languages</varname>] </p>
+<p>[<codeph>uid</codeph>  <varname>uid-value-1</varname> [<varname>uid-value-2</varname>]
+] </p>
+<p> <codeph>end</codeph>  </p>
+<p>A <codeph>start resource</codeph> section specifies how a resource file
+should be compiled. </p>
+<p> <varname>source-file</varname> specifies the resource source (<filepath>.rss</filepath>)
+file. The file should be in the current <xref href="GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita">sourcepath</xref> directory,
+or specified relatively to that directory. </p>
+<p>The optional <codeph>target</codeph>  <varname>target-file</varname> specifies
+the name of the compiled resource file. The file extension part of the name
+does not need to be specified, as this will be automatically supplied. By
+default, the target has the same name as the source file. </p>
+<p>The optional <codeph>targetpath</codeph>  <varname>targetpath</varname> allows
+you to specify the location of the compiled file on the <filepath>z:</filepath> drive
+(or the emulated <filepath>Z:</filepath> drive). By default, the target file
+is built into the same directory as the project's executable.</p>
+<note> In Symbian OS v9.0 and later, platform security requires resources
+to be placed into the correct path, either <filepath>\resource</filepath> for
+resources that are public but read-only, or <filepath>\private\12345678</filepath>,
+for resources that are private to the application with application Secure_Id <codeph>12345678</codeph>.
+This means that this keyword will almost always be used.</note>
+<p>The optional <codeph>header</codeph> keyword causes a resource header (<filepath>.rsg</filepath>)
+file to be created in <filepath>epoc32\include\</filepath> along with the
+resource (<filepath>.rsc</filepath>) file. The optional <codeph>headeronly</codeph> keyword
+causes only the resource header (<filepath>.rsg</filepath>) file to be created
+in <filepath>epoc32\include\</filepath>. The resource header defines identifiers
+for the index positions of the structures in the resource file. </p>
+<p>The optional <codeph>lang</codeph> keyword specifies language codes for
+the resource. This overrides any language settings made for the mmp file using
+the <xref href="GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita">lang</xref> keyword.
+A language code is two-digit code, and is used to complete the extension of
+the built resource file: e.g. if the language code is 01, then the extension
+is <filepath>.r01</filepath>. The default language code is <codeph>sc</codeph>.
+The resource file is compiled multiple times, once for each language specified. </p>
+<p>The optional <codeph>uid</codeph> keyword specifies the values for the
+second, and optionally, the third UID of the resource file. See <xref href="GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita">UID2
+and UID3 statements</xref> and <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita#GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA/GUID-142C2031-3101-34E0-8A16-5410123C8D18"><apiname>RResourceFile::UidType()</apiname></xref> for
+more information. </p>
+<example><p>This example builds the resource <filepath>foo.rss</filepath> into <filepath>z:\private\10001234\foo.rsc</filepath>. </p><codeblock id="GUID-A1A82EAC-AC98-581D-A0B3-A05791E5C98E" xml:space="preserve">start resource foo.rss
+TARGETPATH     private\10001234
+end
+</codeblock><p>This example builds the resource <filepath>foo.rss</filepath> into <filepath>z:\private\10001234\bar.r01</filepath>,
+and creates a header <filepath>bar.rsg</filepath> in <filepath>epoc32\include</filepath>. </p><codeblock id="GUID-01641ED1-A531-5090-BA9F-508D74401D1F" xml:space="preserve">START RESOURCE         foo.rss
+TARGET                 bar
+TARGETPATH             private\10001234
+HEADER 
+LANG                   01
+UID                    0x10002345 0x10003456
+END</codeblock><p>This example builds only the resource header <filepath>bar.rsg</filepath> in <filepath>epoc32\include</filepath>. </p><codeblock id="GUID-6538518A-321E-5BD4-A68D-4EFCA96AF6A4" xml:space="preserve">START RESOURCE         foo.rss
+HEADERONLY 
+END</codeblock></example>
+</conbody><related-links>
+<link href="GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita"><linktext>Application
+resource tools guide</linktext></link>
+<link href="GUID-687AFC9D-ADB7-5190-A535-C54B835825DD.dita"><linktext>Application
+resource tools reference</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5287A403-1094-5682-A443-A6C2A04A1F23" xml:lang="en"><title>Creating
+and Managing an RTP session</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This page describes how to create a new session with the socket server
+and how to open the session and set some of the session parameters. It also
+describes how to use an RTP <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RSocket</apiname></xref> interface. </p>
+<p>To communicate with RTP, open a session with the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">socket
+server</xref>. You can open several sessions at the same time. </p>
+<p>An <xref href="GUID-2C5D53A3-0211-5C14-BD7F-E89EB27BAD2A.dita">active scheduler</xref> must
+be created and started before you open an RTP session. </p>
+<section><title>Opening a session</title> <p> <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RRtpSession::OpenL()</apiname></xref> opens
+an RTP session and starts it. The method has four overloads. RTCP is enabled
+for the first three overloads and is disabled for the last overload. </p> <codeblock id="GUID-AFB0BF5E-DE8C-5AAE-B693-B3F6721B5321" xml:space="preserve">IMPORT_C void OpenL(RSocketServ &amp;aServer, TSockAddr &amp;aLocalAddr, TSockAddr &amp;aRemoteAddr, TInt aMaxRXSize, RConnection &amp;aConnection, TInt aPriority=EPriorityNormal, const TDesC8 &amp;aCNAME=KNullDesC8);</codeblock> <codeblock id="GUID-DEF6E5F9-BC04-5092-B444-08EB85268431" xml:space="preserve">IMPORT_C void OpenL(RSocketServ &amp;aServer, TSockAddr &amp;aLocalAddr, TSockAddr &amp;aRemoteAddr, TInt aMaxRXSize, TInt aPriority=EPriorityNormal, const TDesC8 &amp;aCNAME=KNullDesC8);</codeblock> <codeblock id="GUID-53661685-AA43-5EBB-B3A3-EC3EE143CC0E" xml:space="preserve">IMPORT_C void OpenL(RSocket &amp;aSocket, TInt aMaxRXSize, RSocket &amp;aRtcpSocket, TInt aPriority=EPriorityNormal, const TDesC8 &amp;aCNAME=KNullDesC8);</codeblock> <codeblock id="GUID-5283B661-0617-5656-B004-8A70B04E5DD9" xml:space="preserve">IMPORT_C void OpenL(RSocket &amp;aSocket, TInt aMaxRXSize, TInt aPriority=EPriorityNormal);</codeblock> </section>
+<section> <title>Setting session parameters</title> <p>After
+creating an RTP session, you need to set the following parameters before sending
+and receiving RTP packets: </p> <ul>
+<li id="GUID-E68D70C1-99D6-59E3-81F7-D022F0FEF545"><p>the bandwidth for the
+RTP stream, by calling the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>SetBandwidth()</apiname></xref> method </p> </li>
+<li id="GUID-9D89740D-74C2-5CDC-846E-9E10EFAFEBBC"><p>the conversion rate
+for the RTCP timestamp, by calling the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>SetRTPTimeConversion()</apiname></xref> method </p> </li>
+</ul> <p>During an active RTP session, you can change the following parameters: </p> <ul>
+<li id="GUID-1A5C1270-11D3-5557-94BE-AAF74ADD2AEC"><p>the destination address,
+by calling the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>SetRemoteAddress()</apiname></xref> method </p> </li>
+<li id="GUID-9E2B4415-4D5A-5FB1-96E8-83F9E60944D9"><p>the remote RTCP port,
+by calling the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>SetRemoteRtcpPort()</apiname></xref> method </p> </li>
+</ul> <p>When specifying a new remote address for the RTP session, the remote
+RTCP port is set one port higher than the RTP port, as defined by the RTP
+standard. When specifying a new RTCP port, the RTP port is not modified. </p> <p> <b>Note</b>:
+If you need more configuration options for your RTP communications, you can
+change the settings of the internal sockets. The <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RtpSocket()</apiname></xref> and <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RtcpSocket()</apiname></xref> methods return the handles of
+the internal sockets used for RTP and RTCP data. </p> </section>
+<section><title>Example</title> <p>The following code shows how to create
+a new session, and set session parameters. </p> <codeblock id="GUID-8AA5C199-15D4-5259-92DC-4389C3F40C2E" xml:space="preserve">// [...]
+
+// Construct a new session object 
+RRtpSession session; 
+session.OpenL(iRtpSocket, 1500, EPriorityNormal); 
+
+// Set the RTP session parameters 
+session.SetBandwidth(1000);    // Set session bandwidth in bps at the start up 
+
+//SetRTPTimeConversion API is called before receiving an RTP packet
+session.SetRTPTimeConversion(100, 100); // Set RTP time conversion for generating the RTP timestamps in RTCP packets
+</codeblock> <p>The following code shows how to change parameters during the
+RTP session: </p> <codeblock id="GUID-745688FD-A148-5668-A962-64985A952EB1" xml:space="preserve">
+// sample address and port for the RTP socket
+TSockAddr newAddr;
+newAddrr.SetAddress(INET_ADDR(192,168,0,1));
+newAddr.SetPort(4646);
+
+// changing the RTP destination
+session.SetRemoteAddress(newAddr);
+
+// by default, the RTCP port is set to the first port higher than the RTP port 
+session.SetRemoteRtcpPort(4649);
+
+// turning IMCP errors onsession.
+RtpSocket().SetOpt(KSoUdpReceiveICMPError, KSolInetUdp, 1);
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,639 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8" xml:lang="en"><title>Writing
+a controller plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document explains how to write a controller plugin. </p>
+<section id="GUID-215B50CF-605A-58BA-8E87-CAB942F11741"><title>Purpose</title> <p>A
+controller plugin is the main type of multimedia framework (MMF) plugin. A
+controller plugin typically supports playing or recording one or more multimedia
+formats, <codeph>mp3</codeph> or <codeph>avi</codeph> for example. A controller
+plugin is able to read data from one or more sources, apply any required data
+transformations and write the data to the appropriate sink. </p> <p><b>Required
+Background</b> </p> <p>You need to be familiar with the Symbian platform Plugin
+Framework. </p> </section>
+<section id="GUID-0DB9E8B5-8B2A-4EB3-998F-376762CAC3D5"><title>Using the Controller
+Plugin </title> <p>The following tasks will be covered in this tutorial: </p> <ul>
+<li id="GUID-BDA97F96-C90A-5F4E-BEBE-93478FB24453"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-3C8AEA0B-5FE3-5691-B108-05C87F229D07">Implementing the core controller plugin interface</xref>  </p> </li>
+<li id="GUID-501F72DA-77B8-5FC8-81AB-CCDE9490DF2D"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-C5696F98-4ECF-5086-AC1A-BF17BCFECC29">Implementing the standard custom command interfaces</xref>  </p> </li>
+<li id="GUID-94D36263-EC2D-5145-9D22-F0C1BDDB209B"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-A305F052-58F4-57B9-AB0F-C172768E462F">Interaction with MMF Base Classes and other plugins</xref>  </p> </li>
+<li id="GUID-9A37DC2C-2E8D-55FC-9C85-A34008FC4F9C"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-9FD6AAA8-4024-578F-9AB4-48F7017D3EB6">Integrating the controller into the ECom plugin framework</xref>  </p> </li>
+<li id="GUID-B53B937C-2D8A-5311-92E2-6458B0CEF2B0"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-0F96339A-BF77-570C-908D-A59AFD2036DB">Testing</xref>  </p> </li>
+</ul> <p><b>Basic
+Procedure</b> </p> <p>The basic steps for writing a controller plugin are
+shown here: </p> <ol id="GUID-D235DD92-682F-542D-AE6D-0EF5B7199E10">
+<li id="GUID-5806F6ED-FBDA-5BCC-80C8-C70DEBDAB3A9"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-3C8AEA0B-5FE3-5691-B108-05C87F229D07">Implementing the core controller plugin interface</xref>  </p> </li>
+<li id="GUID-00D29242-1610-5ACD-9E97-C87945CF7D4C"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-C5696F98-4ECF-5086-AC1A-BF17BCFECC29">Implementing the standard custom command interfaces</xref>  </p> </li>
+<li id="GUID-B925D042-C292-51B4-8490-5D4DD769A307"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-A305F052-58F4-57B9-AB0F-C172768E462F">Interaction with MMF Base Classes and other plugins</xref>  </p> </li>
+<li id="GUID-4F7B6585-23AC-5C0E-9BB6-9354C41BD27A"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-9FD6AAA8-4024-578F-9AB4-48F7017D3EB6">Integrating the controller into the ECom plugin framework</xref>  </p> </li>
+<li id="GUID-6F8A6A17-29BC-5268-95D9-FACB91622C3E"><p><xref href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita#GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8/GUID-0F96339A-BF77-570C-908D-A59AFD2036DB">Testing</xref>  </p> </li>
+</ol> </section>
+<section id="GUID-3C8AEA0B-5FE3-5691-B108-05C87F229D07"><title>Implementing
+the core controller plugin interface</title> <p>The controller plugin API
+is defined by the controller framework element of the MMF. All controller
+plugin implementations must derive from the abstract class <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita"><apiname>CMMFController</apiname></xref> and
+implement its pure virtual methods. </p> <p>As well as providing the controller
+API, the <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita"><apiname>CMMFController</apiname></xref> base class also provides functionality
+such as instantiation of controller plugins via the <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> plugin
+framework, inter-thread message decoding and parameter unpacking, an object
+reference counting mechanism and a few utility methods for use by controller
+plugins. </p> <p>The following sections describe how to implement the controller
+API. </p> <p><b>Sources and sinks </b> </p> <p>Sources and sinks are themselves <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> plugins and provide
+an interface that allows the controller to read and write raw data buffers.
+The type of source or sink, along with any source- specific or sink-specific
+initialisation parameters (for example, the file name for a file source),
+is specified by the client. The source or sink is then created and owned by
+the controller framework. It is then passed into the controller plugin via
+a call to <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-11623B04-A83E-3E32-A06E-6454D8407ADB"><apiname>CMMFController::AddDataSourceL()</apiname></xref> or <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-8842FF05-7822-317A-A650-225775B758FD"><apiname>CMMFController::AddDataSinkL()</apiname></xref> for
+a data source or a data sink respectively. </p> <p> <b> Note :</b> The ownership
+of a source or sink always remains with the controller framework and not with
+the controller plugin, and that a controller plugin should never delete a
+source or sink. If the controller plugin leaves during the call to <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-11623B04-A83E-3E32-A06E-6454D8407ADB"><apiname>CMMFController::AddDataSourceL()</apiname></xref> or <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-8842FF05-7822-317A-A650-225775B758FD"><apiname>CMMFController::AddDataSinkL()</apiname></xref>, the source or sink will be destroyed by the controller framework. </p> <p>There
+is no limit on the number of sources or sinks that can be added to a particular
+controller plugin, other than the limit provided by the plugin itself. For
+example, an audio controller would have one source and one sink. A video playing
+controller would have one source and two sinks (display and speaker). </p> <p>Sources
+and sinks can also be removed from the controller plugin by the client. The
+reference of the particular source or sink being removed is passed into either
+the <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-6CA27841-ACBE-303B-84A6-225F77B6CC53"><apiname>CMMFController::RemoveDataSourceL()</apiname></xref> or <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-FD6A61E9-B355-36BA-9FF5-AA5E694F76FA"><apiname>CMMFController::RemoveDataSinkL()</apiname></xref> method
+to remove a data source or a data sink respectively. The controller plugin
+should remove any reference that it has to the source or sink; the source
+or sink will then be deleted by the controller framework. </p> <p> <b>Note:</b> If
+the controller plugin leaves during these calls (for example, if it does not
+support the removal of sources or sinks), the controller framework will not
+delete the source or sink. </p> <p><b>Controller states </b> </p> <p>The Controller plugin states, along with
+the commands to transition the plugin between the states, are: </p> <ul>
+<li id="GUID-15FEBAAD-0C40-5029-B8ED-080967BD5980"><p> <codeph>Open</codeph>,
+this is the current state of the controller, after it has been created. Once
+the controller has been configured, it moves to the <codeph>Stopped</codeph> state.
+This transition typically involves adding the source(s) and sink(s) and configuring
+any utility objects or other plugins owned by the controller. </p> </li>
+<li id="GUID-4BD7C0FB-AB98-5373-B7A8-BFCF8E6ECC76"><p> <codeph>Stopped</codeph>,
+in this state the controller should not have any resources or buffers allocated,
+and the position should be zero. </p> </li>
+<li id="GUID-BBDACB71-F927-5AB0-B6CA-838DB6B48422"><p> <codeph>Primed</codeph>,
+in moving to the primed state, the controller should allocate any buffers
+and resources that will be required to perform playback. The playback or recording
+position should also be stored when the controllere is in the <codeph>primed</codeph> state.
+Controllers should only be moved into this state just before play, otherwise
+unnecessary memory and resources will be used. </p> </li>
+<li id="GUID-8D3C5466-1A8E-5F0B-9607-AFE4CF651D23"><p> <codeph>Playing</codeph>,
+when in this state, the controller plugin should be transferring data between
+source(s) and sink(s). </p> </li>
+</ul> <p>Calling <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-AA743B27-C597-3D6A-B10C-C51224EC78FA"><apiname>CMMFController::ResetL()</apiname></xref> on the controller
+plugin should cause it to revert back to the <codeph>Open</codeph> state.
+This will involve stopping playback, deleting any allocated resources, and
+removing any references to sources and sinks. </p> <p><b>Position and Duration </b> </p> <p>Position and duration can be set by
+deriving from the pure virtual methods <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-01BBB3DC-0178-392C-9A8C-F2B8A563FC1B"><apiname>CMMFController::PositionL()</apiname></xref>, <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-8DA4E77A-07EF-304B-9AA6-0A744C6CD3B4"><apiname>CMMFController::SetPositionL()</apiname></xref> and <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-D61C8034-587A-3FEC-9659-155E547F9042"><apiname>CMMFController::DurationL()</apiname></xref>. </p> <p> <codeph>Note:</codeph> The <i>position</i> has
+meaning only in the <codeph>Primed</codeph> and <codeph>Playing</codeph> states.
+The controller plugin should leave with <codeph>KErrNotReady</codeph> if an
+attempt is made to set or get the position when the controller is in any other
+state. However, it should be possible to query the duration as soon as the
+data source or data sink has been added. </p> <p><b>Custom Commands </b> </p> <p>Custom commands allow controller plugin writers
+to extend the basic controller API. They sends messages from the client through
+the controller framework to the controller plugin. </p> <p>The <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-C3ADC1F7-97DB-3324-9C3C-CFD391AC7F35"><apiname>CMMFController::CustomCommand()</apiname></xref> method
+can be implemented in the controller plugin to support custom commands. The
+default implementation provided by the base class is to complete the message
+with <codeph>KErrNotSupported</codeph>. </p> <p> <b>Note:</b> It is imperative
+that the message is always completed by this method and that this method cannot
+leave. Any error that occurs must be passed back to the client by completing
+the message with the error code. </p> <p>Each <xref href="GUID-3AF511EA-1E66-3286-9FD0-B90EC22BFAC1.dita"><apiname>TMMFMessage</apiname></xref> has
+an associated interface UID which should be checked before handling any message
+to make sure that the command is supported. </p> <p>The following code illustrates
+a typical custom command implementation. </p> <codeblock id="GUID-88B2D503-D009-502A-923A-EA683A28061B" xml:space="preserve">void CMyController::CustomCommand(TMMFMessage&amp; aMessage)
+    {
+    // First, check we can handle message by checking its interface id
+    if (aMessage.InterfaceId() != KUidMyControllerCustomCommandInterface)
+       {
+        aMessage.Complete(KErrNotSupported);
+        return;
+       }
+
+    // Next, dispatch the command to the appropriate method.
+    TInt error = KErrNone;
+    switch (aMessage.Function())
+        {
+    case EMyCustomCommandOne:
+        error = HandleCustomCommandOne(aMessage);
+        break;
+    case EMyCustomCommandTwo:
+        error = HandleCustomCommandTwo(aMessage);
+        break;
+    default:
+        error = KErrNotSupported;
+break;
+        }
+    aMessage.Complete(error);
+    }
+
+</codeblock> <p>The above example shows synchronous command handling. If the
+plugin needs to do some task that requires a long time, the <codeph>aMessage</codeph> parameter
+should be copied, stored and completed later when processing has finished. </p> <p>The
+methods <codeph>HandleCustomCommandOne</codeph> and <codeph>HandleCustomCommandTwo</codeph> above,
+copy any data to and from the client. This can be done using the appropriate <xref href="GUID-3AF511EA-1E66-3286-9FD0-B90EC22BFAC1.dita"><apiname>TMMFMessage</apiname></xref> methods. </p> <p><b>Asynchronous Error Reporting </b> </p> <p>The <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-35FFB275-95ED-323C-B0AC-7914CBA2319D"><apiname>CMMFController::DoSendEventToClient()</apiname></xref> utility
+method allows a controller plugin to send an event to its client. </p> <p>The
+multimedia client utilities listen for specific event types and error codes.
+If the controller plugin is accessed by clients that are using the multimedia
+client utility APIs (which will usually be the case) then those event types
+and error codes should be used. The event types and error codes for which
+the multimedia client utilities listen are listed below: </p> <table id="GUID-4BE6C78B-5E14-50EF-94EB-05AFA08DFD2D">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<tbody>
+<row>
+<entry><p> <b>Client utility</b>  </p> </entry>
+<entry><p> <b>Event type</b>  </p> </entry>
+<entry><p> <b>Error code</b>  </p> </entry>
+<entry><p> <b>Meaning</b>  </p> </entry>
+</row>
+<row>
+<entry><p>Audio Player Utility (<xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility</apiname></xref>) </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrOverflow </p> </entry>
+<entry><p>Playback complete, the end of the data was reached. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrEof </p> </entry>
+<entry><p>Playback complete, the end of the data was reached. </p> </entry>
+</row>
+<row>
+<entry><p>Audio Recorder Utility (<xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref>) </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrOverflow </p> </entry>
+<entry><p>Playback complete, the end of the data was reached. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrUnderflow </p> </entry>
+<entry><p>Recording complete, no more source data from microphone. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrEof </p> </entry>
+<entry><p>Playback or recording complete, end of data reached. </p> </entry>
+</row>
+<row>
+<entry><p>Audio Converter Utility (<xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref>) </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrOverflow </p> </entry>
+<entry><p>Conversion complete, end of data reached. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrEof </p> </entry>
+<entry><p>Conversion complete, end of data reached. </p> </entry>
+</row>
+<row>
+<entry><p>Video Player Utility (<xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref>) </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrOverflow </p> </entry>
+<entry><p>Playback complete, end of data reached. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>KErrEof </p> </entry>
+<entry><p>Playback complete, end of data reached. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>KMMFEventCategory VideoOpenComplete </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>Open complete. Must be used otherwise clients will not be notified
+when the clip has been opened. This is used because video clips can take a
+long time to process on opening. The error code is passed back to the client. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>KMMFEventCategory PlaybackComplete </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>Playback complete. Can be used instead of <codeph>KErrOverflow</codeph> or <codeph>KErrEof</codeph>.
+The error code is passed back to the client. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>KMMFEventCategory VideoRebufferStarted </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>Re-buffering has begun. Client will be notified so it can update
+its UI. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>KMMFEventCategory VideoRebufferComplete </p> </entry>
+<entry><p>Any </p> </entry>
+<entry><p>Re-buffering has finished. Client will be notified so it can update
+its UI. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>MMF Objects </b> </p> <p>The controller framework contains an object referencing
+mechanism that allows a client to send messages to arbitrary objects in the
+controller thread without having to go via the controller plugin itself. In
+order to achieve this, the arbitrary object must be derived from <xref href="GUID-C2938956-C3DE-34F0-AD68-4E502F252FE4.dita"><apiname>CMMFObject</apiname></xref> and
+added to the object container. The object container can be accessed via the <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-C13AA1D6-94D3-33EA-B901-C4EFBA127D3A"><apiname>CMMFController::MMFObjectContainerL()</apiname></xref> method. </p> <p>Sources and sinks have a <xref href="GUID-C2938956-C3DE-34F0-AD68-4E502F252FE4.dita"><apiname>CMMFObject</apiname></xref> wrapper placed around
+them by the controller framework, and can receive messages from the client.
+This mechanism is also used to reference source(s) and sink(s), so the client
+can specify exactly the source or sink when calling the <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-6CA27841-ACBE-303B-84A6-225F77B6CC53"><apiname>CMMFController::RemoveDataSourceL()</apiname></xref> or <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-FD6A61E9-B355-36BA-9FF5-AA5E694F76FA"><apiname>CMMFController::RemoveDataSinkL()</apiname></xref> methods. </p> <p> <b>Note:</b> The objects added to the <xref href="GUID-C2B766A9-493D-3B90-B205-F7915B39EBAF.dita"><apiname>CMMFObjectContainer</apiname></xref> are
+owned by the <codeph>CMMFObjectContainer</codeph>. </p> <p>Each object added
+to the <codeph>CMMFObjectContainer</codeph> is assigned a handle. This handle
+must be passed back to the client in order for the client to be able to send
+messages directly to the object. </p> <p>The client should use this handle
+to set the handle of the <xref href="GUID-40C533CC-ACA4-3DBC-B31C-F17DACB7F321.dita"><apiname>TMMFMessageDestination</apiname></xref> parameter
+in the <xref href="GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841.dita#GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841/GUID-A3976673-6919-307E-AA6A-4E6B18D96619"><apiname>RMMFController::CustomCommandAsync()</apiname></xref> or <xref href="GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841.dita#GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841/GUID-E0CBE252-799E-3972-8C14-B1C6E135C458"><apiname>RMMFController::CustomCommandSync()</apiname></xref> method
+for asynchronous or synchronous operation respectively. The custom command
+will then be routed directly to the <xref href="GUID-C2938956-C3DE-34F0-AD68-4E502F252FE4.dita"><apiname>CMMFObject</apiname></xref> by the controller
+framework. </p> </section>
+<section id="GUID-C5696F98-4ECF-5086-AC1A-BF17BCFECC29"><title>Implementing
+the standard custom command interfaces</title> <p>The core controller plugin
+API provides only basic support for controlling the flow of data. The application-level
+multimedia utility APIs (for example, <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility</apiname></xref> )
+contain much richer functionality. The application-level multimedia utility
+APIs provide clients with a concrete API to access extended controller functionality,
+and to give controller plugins a concrete mixin API to implement. </p> <p>Several
+sets of standard custom command APIs have been defined. The following table
+shows which of these classes must be implemented to allow the controller plugin
+to be used properly from each of the application-level utility APIs. </p> <table id="GUID-2B37F10D-C1B3-5449-A211-77192872974E">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Application-level Utility API</b>  </p> </entry>
+<entry><p> <b>Required Custom Command APIs</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-47EA759D-94C2-3655-B6E8-6C87F8F449A9.dita"><apiname>CmdaAudioPlayerUtility</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-9004EBF7-A519-3825-91DC-0CB5EE2AE91E.dita"><apiname>MMMFAudioPlayDeviceCustomCommandImplementor</apiname></xref>  </p> <p> <xref href="GUID-9EBEDC0D-2AE8-3A15-A72F-E18999056879.dita"><apiname>MMMFAudioPlayControllerCustomCommandImplementor</apiname></xref> </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-E83933DA-64D2-3B7F-ACF6-0A72E6132E16.dita"><apiname>CmdaAudioRecorderUtility</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-9004EBF7-A519-3825-91DC-0CB5EE2AE91E.dita"><apiname>MMMFAudioPlayDeviceCustomCommandImplementor</apiname></xref>  </p> <p> <xref href="GUID-6257431B-91C0-3F11-B9B8-6CA07BE81DF0.dita"><apiname>MMMFAudioRecordDeviceCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-9EBEDC0D-2AE8-3A15-A72F-E18999056879.dita"><apiname>MMMFAudioPlayControllerCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-955A29AB-D7FE-3747-A451-A75B01867675.dita"><apiname>MMMFAudioRecordControllerCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-B9EF7125-3D50-375D-904E-2148F650765D.dita"><apiname>MMMFAudioControllerCustomCommandImplementor</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A11E409C-894A-3C91-8924-5CF6C53D7F7D.dita"><apiname>CmdaAudioConvertUtility</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-9EBEDC0D-2AE8-3A15-A72F-E18999056879.dita"><apiname>MMMFAudioPlayControllerCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-955A29AB-D7FE-3747-A451-A75B01867675.dita"><apiname>MMMFAudioRecordControllerCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-B9EF7125-3D50-375D-904E-2148F650765D.dita"><apiname>MMMFAudioControllerCustomCommandImplementor</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3F3FEBAA-DA64-3D83-999C-33AF27B9F0B2.dita"><apiname>CvideoPlayerUtility</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-4D1C7814-76D6-3A1C-9441-4091C4787826.dita"><apiname>MMMFVideoControllerCustomCommandImplementor</apiname></xref>  </p> <p> <xref href="GUID-1FBF69A5-100C-30D6-B934-AD208C320C52.dita"><apiname>MMMFVideoPlayControllerCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-9004EBF7-A519-3825-91DC-0CB5EE2AE91E.dita"><apiname>MMMFAudioPlayDeviceCustomCommandImplementor</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-EA89F469-D402-34B4-9038-895ABA696AF6.dita"><apiname>CvideoRecorderUtility</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-4D1C7814-76D6-3A1C-9441-4091C4787826.dita"><apiname>MMMFVideoControllerCustomCommandImplementor</apiname></xref>  </p> <p> <xref href="GUID-E66BBFA9-17C5-30C0-88F0-2680825585D6.dita"><apiname>MMMFVideoRecordControllerCustomCommandImplementor</apiname></xref> </p> <p> <xref href="GUID-6257431B-91C0-3F11-B9B8-6CA07BE81DF0.dita"><apiname>MMMFAudioRecordDeviceCustomCommandImplementor</apiname></xref> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>In order to implement the required custom command APIs, the controller
+plugin should derive from the mixins shown in the table above, and use the <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-DAB14DA3-E897-3C57-ADAC-8748D6B06E7B"><apiname>CMMFController::AddCustomCommandParserL()</apiname></xref> method
+to register itself as being able to handle that API. </p> <p>The <xref href="GUID-92F9FFAA-1A8F-34B4-98E4-7BAF505BDE45.dita"><apiname>CMMFCustomCommandParserBase</apiname></xref> derived
+object decodes the custom command on behalf of the controller plugin and calls
+the concrete API via the mixin interface. The following table shows which <xref href="GUID-92F9FFAA-1A8F-34B4-98E4-7BAF505BDE45.dita"><apiname>CMMFCustomCommandParserBase</apiname></xref> object
+should be used with each mixin class. </p> <table id="GUID-7C4650A0-ED5A-5B9B-8349-3B348D16DCBB">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Mixin Interface</b>  </p> </entry>
+<entry><p> <b>Custom Command Parser</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B9EF7125-3D50-375D-904E-2148F650765D.dita"><apiname>MMMFAudioControllerCustomCommandImplementor</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-0E8AE2BE-D2E4-31D1-A9EE-8C134AC08A44.dita"><apiname>CMMFAudioControllerCustomCommandParser</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9EBEDC0D-2AE8-3A15-A72F-E18999056879.dita"><apiname>MMMFAudioPlayControllerCustomCommandImplementor</apiname></xref> </p> </entry>
+<entry><p> <xref href="GUID-4446548D-A1C6-37E9-8C93-5DE06BC9733F.dita"><apiname>CMMFAudioPlayControllerCustomCommandParser</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-955A29AB-D7FE-3747-A451-A75B01867675.dita"><apiname>MMMFAudioRecordControllerCustomCommandImplementor</apiname></xref> </p> </entry>
+<entry><p> <xref href="GUID-F37B8FE6-ABD8-311A-89CA-3495FE88EE32.dita"><apiname>CMMFAudioRecordControllerCustomCommandParser</apiname></xref> </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4D1C7814-76D6-3A1C-9441-4091C4787826.dita"><apiname>MMMFVideoControllerCustomCommandImplementor</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-4C75EEA6-3F0E-3EDE-B02C-83B8AE6F4563.dita"><apiname>CMMFVideoControllerCustomCommandParser</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1FBF69A5-100C-30D6-B934-AD208C320C52.dita"><apiname>MMMFVideoPlayControllerCustomCommandImplementor</apiname></xref> </p> </entry>
+<entry><p> <xref href="GUID-E45B8292-04DE-3929-8E10-46E8D259A3B3.dita"><apiname>CMMFVideoPlayControllerCustomCommandParser</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-E66BBFA9-17C5-30C0-88F0-2680825585D6.dita"><apiname>MMMFVideoRecordControllerCustomCommandImplementor</apiname></xref> </p> </entry>
+<entry><p> <xref href="GUID-7BF02827-4A99-3127-873A-BA5D5CD1DFDB.dita"><apiname>CMMFVideoRecordControllerCustomCommandParser</apiname></xref> </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9004EBF7-A519-3825-91DC-0CB5EE2AE91E.dita"><apiname>MMMFAudioPlayDeviceCustomCommandImplementor</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-C27DB2A9-1AD6-3AA2-A9A7-F97D8B493B20.dita"><apiname>CMMFAudioPlayDeviceCustomCommandParser</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6257431B-91C0-3F11-B9B8-6CA07BE81DF0.dita"><apiname>MMMFAudioRecordDeviceCustomCommandImplementor</apiname></xref> </p> </entry>
+<entry><p> <xref href="GUID-CAB4C3DA-43E3-37C5-B9BD-0DE3341A7D59.dita"><apiname>CMMFAudioRecordDeviceCustomCommandParser</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following example code shows how the controller should register
+itself with the controller framework to receive standard custom commands. </p> <codeblock id="GUID-DDC6EA9D-C01D-599D-9ADA-F3445675D252" xml:space="preserve">class CMyControllerPlugin : public    CMMFController,
+                                      MMMFAudioControllerCustomCommandImplementor,
+                                      MMMFAudioPlayDeviceCustomCommandImplementor
+    {
+...
+private:
+    void ConstructL();
+    };
+
+void CMyControllerPlugin::ConstructL()
+    {
+...
+    // Construct custom command parsers
+
+    CMMFAudioControllerCustomCommandParser* audConParser =
+                                     CMMFAudioControllerCustomCommandParser::NewL(*this);
+    CleanupStack::PushL(audParser);
+    AddCustomCommandParserL(*audConParser); //parser now owned by controller framework
+    CleanupStack::Pop(audConParser);
+
+    CMMFAudioPlayDeviceCustomCommandParser* audPlayDevParser = 
+                                     CMMFAudioPlayDeviceCustomCommandParser::NewL(*this);
+    CleanupStack::PushL(audPlayDevParser);
+    AddCustomCommandParserL(*audPlayDevParser); //parser now owned by controller framework
+    CleanupStack::Pop();//audPlayDevParser
+
+
+    }
+</codeblock> <p>It is also possible for controller plugins to define their
+own standard custom command classes. This might be useful if a group of plugins
+have the same API (for example, a group of <codeph>MIDI</codeph> controller
+plugins). Clients would then be able to access equivalent functionality in
+each plugin using the same API. </p> </section>
+<section id="GUID-A305F052-58F4-57B9-AB0F-C172768E462F"><title>Interaction
+with MMF Base Classes and other Plugins</title> <p>The MMF provides a set
+of utility classes and other types of plugins to aid with writing controller
+plugins. All utility classes are provided in the library <codeph>MMFServerBaseClasses.DLL</codeph>.
+A brief description of each of the classes follows. </p> <p> <b>Note:</b> The
+use of data sources, data sinks and buffers is mandatory. The use of the other
+classes is optional. </p> <ul>
+<li id="GUID-55EAC53C-8F71-5A3B-AE7C-695EBC3C53D0"><p>Data Sources and Sinks </p> </li>
+<li id="GUID-EF0BF115-FF08-56FE-90C7-CF48D85A6C0B"><p>Buffers </p> </li>
+<li id="GUID-4B99F28F-8EB3-5B66-B9BF-8AEE3DA5253E"><p>Datapath </p> </li>
+<li id="GUID-C5CAE5D5-7C82-5068-9AAB-6D9E66DE5D6B"><p>Codecs </p> </li>
+<li id="GUID-174E2D35-3208-5AEA-8257-4952E147F72D"><p>Formats </p> </li>
+</ul> <p><b>Data Sources and Sinks </b> </p> <p>Data sources and sinks are <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> plugins,
+and are derived from the base class <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> or <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> respectively.
+The currently available data sources and sinks are listed below: </p> <ul>
+<li id="GUID-E7874D8E-528E-50BE-9BBE-1F3B721D0274"><p> <xref href="GUID-9914ABBD-B15F-3CDB-9F4E-1C9002A30269.dita"><apiname>CMMFFile</apiname></xref>  </p> </li>
+<li id="GUID-52F6F014-B4AA-5301-A099-19A7B3415CD0"><p> <xref href="GUID-ADF29263-C4FB-31A8-AB06-0E10E39B7C39.dita"><apiname>CMMFDescriptor</apiname></xref>  </p> </li>
+<li id="GUID-52A43340-E2C7-56BE-BA1E-AF96A49DD8F2"><p> <xref href="GUID-D9BCF418-34D3-3D47-8968-A70C5C01E5DF.dita"><apiname>CMMFAudioInput</apiname></xref>  </p> </li>
+<li id="GUID-C95CADA7-9917-5C4E-A93D-1E16CB34171F"><p> <xref href="GUID-CB3745FF-6DC0-325A-95CC-70BF5112DD70.dita"><apiname>CMMFAudioOutput</apiname></xref> <xref href="GUID-D9BCF418-34D3-3D47-8968-A70C5C01E5DF.dita"><apiname>CMMFAudioInput</apiname></xref> </p> </li>
+</ul> <p>They are created by the controller framework and passed into the
+controller plugin by reference using the <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-11623B04-A83E-3E32-A06E-6454D8407ADB"><apiname>CMMFController::AddDataSourceL()</apiname></xref> or <xref href="GUID-123B3A78-9E84-3283-AB73-6B4293939A5D.dita#GUID-123B3A78-9E84-3283-AB73-6B4293939A5D/GUID-8842FF05-7822-317A-A650-225775B758FD"><apiname>CMMFController::AddDataSinkL()</apiname></xref> method. </p> <p>Some sources and sinks have extended APIs that allow the controller plugin
+to perform actions, such as setting the volume. The type of the source or
+sink can be checked by the controller plugin using the methods <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-D931704C-4349-36EE-9E05-BADF10253373"><apiname>MDataSource::DataSourceType()</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-E03D973E-75A5-3FBA-9D24-04A5F6B23A7C"><apiname>MDataSink::DataSinkType()</apiname></xref>. These methods return a UID which can be checked against known UIDs to identify
+the extended API of the source or sink. For example, the following code would
+be used to set the volume of a speaker sink. </p> <codeblock id="GUID-8CCA0B72-6A76-5235-B397-17745DAB1A18" xml:space="preserve">MMMFAudioOutput* audioOutput = static_cast(MMMFAudioOutput*,(iDataSink));
+audioOutput-&gt;SoundDevice().SetVolume(14);
+</codeblock> <p>It is possible dynamically to add new data sources and sinks
+to the system, see <xref href="GUID-2062A92D-2A3C-5D38-B25E-6D4CF3E4BC98.dita">writing
+a Source/Sink plugin</xref> for information. </p> <p><b>Buffers </b> </p> <p>Buffers are used to contain data as it is being transferred
+from a source to a sink. There are several buffer types all derived from a
+common base class <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer</apiname></xref>: <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname>CMMFDataBuffer</apiname></xref>, <xref href="GUID-74A246CD-24ED-3506-9E98-0C6A7EFD1AC3.dita"><apiname>CMMFDescriptorBuffer</apiname></xref> and <xref href="GUID-4899998E-6DE7-3A9F-874B-6B4524CE33E4.dita"><apiname>CMMFTransferBuffer</apiname></xref>. </p> <p><b>Datapath </b> </p> <p>The datapath is a utility class that transfers data
+from a single source to a single sink, via a codec plugin if the source and
+sink data types differ. The API of the datapath is very similar to that of
+the basic controller plugin API, and much of the complexity of controller
+plugins can be avoided by using the datapath. </p> <p>The datapath can be
+used either through: </p> <ul>
+<li id="GUID-12E661D0-9317-551F-8D9E-876AF0153CCC"><p> <xref href="GUID-930A17D8-92C9-379A-A524-176AA68FE8E3.dita"><apiname>CMMFDataPath</apiname></xref>,
+in which case the data will be transferred from the source to the sink in
+the main thread of the controller plugin. </p> </li>
+<li id="GUID-B7B80AD5-7977-56C7-92A6-A722C66FA7EA"><p> <xref href="GUID-1869F1F6-AEAE-3932-8A9C-54B641CE9CD5.dita"><apiname>RMMFDataPath</apiname></xref>,
+in which case a new thread will be launched to transfer the data from the
+source to the sink. This is useful if a controller has multiple sources and
+sinks (a video controller for example). The multiple datapaths can each be
+executed in their own thread to improve performance. </p> </li>
+</ul> <p>If the source and sink data types are the same then no codec is required
+and the datapath will use a <codeph>null</codeph> codec and the buffers will
+be transferred straight from the source to the sink without being copied in
+between. </p> <p><b>Codecs </b> </p> <p>Codec plugins are derived from <xref href="GUID-18F4082A-D301-3007-88DD-0E13AB81C74A.dita"><apiname>CMMFCodec</apiname></xref> and
+can be used by controller plugins to convert data from one data type to another.
+Codec plugins are designed to be used by different controller plugins, for
+example both an audio controller and a video controller might want to make
+use of a <codeph>PCM8</codeph> to <codeph>PCM16</codeph> codec. </p> <p>See <xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita">writing a codec plugin</xref> for
+details of how to implement codec plugins. </p> <p><b>Formats </b> </p> <p>Controller plugin writers may wish to implement their
+format support by writing format plugins. While format plugins can only be
+used by one controller plugin, this does make it much easier to dynamically
+extend the formats supported by the controller plugin without providing a
+whole new controller plugin. See <xref href="GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita">writing
+a format plugin</xref> for details of how to implement format plugins. </p> </section>
+<section id="GUID-9FD6AAA8-4024-578F-9AB4-48F7017D3EB6"><title>Integrating
+the Controller into the ECom Plugin Framework</title> <p>This section describes
+how to write the ECom plugin registry file. See <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> for
+generic instructions on how to write an ECom plugin. </p> <p>The controller
+plugin resolver is decides which controller plugin should be used to provide
+support for a particular format. Controller plugins provide information in
+their <codeph>ECom</codeph> resource file which allows the controller framework
+(and ultimately the client application) to determine: </p> <ul>
+<li id="GUID-B14BEDD7-34F4-5EB6-A0C3-EAFD2427254D"><p>The display name and
+supplier of the controller plugin. </p> </li>
+<li id="GUID-CCE1BACF-7EA4-5160-A132-387BB2E27BE1"><p>The media types supported
+by the controller plugin (e.g. audio or video). </p> </li>
+<li id="GUID-2207F37F-C06F-5E7C-A92F-2B07D4E19CDE"><p>The formats the controller
+plugin can play and record. </p> </li>
+</ul> <p>For each format supported, for both playing and recording, the information
+below is provided: </p> <ul>
+<li id="GUID-9BE53029-AE39-5A88-802D-7907936D23D4"><p>Display Name of the
+format. </p> </li>
+<li id="GUID-D4E3EA7C-BE26-5CC5-ABFA-80F37C662D9C"><p>Supplier of the format
+(in case support for this format was provided by a different party to the
+controller plugin). </p> </li>
+<li id="GUID-0222405C-A868-5C71-900D-0181F071E718"><p>The Media Types supported
+by the format. </p> </li>
+<li id="GUID-3D9FE26B-DF8A-58D8-BDDC-CCD55FEEBBF9"><p>The MIME types applicable
+to the format. </p> </li>
+<li id="GUID-EC8EB39A-6C09-50AD-90F8-48C7E7A9B356"><p>The file extensions
+that identify files that can be handled by the format. </p> </li>
+<li id="GUID-EF2278A1-9878-5408-B689-A27A181C5855"><p>Any header data segments
+that could be matched to the first few bytes of multimedia data to identify
+that the data could be handled using this format. </p> </li>
+</ul> <p>Most of the information outlined above is provided by the plugin
+in the <codeph>opaque_data</codeph> field of the ECom resource file. This
+field takes an 8-bit string and is limited to 127 characters in length. A
+tagged data scheme is used to separate the different types of data. The tags
+are all three characters in length, and the scheme only uses opening tags
+(i.e. no end tags) to reduce overhead and complexity. The tags available are: </p> <table id="GUID-1F208E5B-912E-5973-BB47-0A84F917CF23">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p>Tag </p> </entry>
+<entry><p>Usage </p> </entry>
+<entry><p>Description </p> </entry>
+</row>
+<row>
+<entry><p>&lt;s&gt; </p> </entry>
+<entry><p>Controller, Format </p> </entry>
+<entry><p>The supplier of the plugin. </p> </entry>
+</row>
+<row>
+<entry><p>&lt;i&gt; </p> </entry>
+<entry><p>Controller, Format </p> </entry>
+<entry><p>A media ID supported by this plugin. Multiple entries can be included. </p> </entry>
+</row>
+<row>
+<entry><p>&lt;p&gt; </p> </entry>
+<entry><p>Controller </p> </entry>
+<entry><p>The UID of the play format collection for this controller (see below). </p> </entry>
+</row>
+<row>
+<entry><p>&lt;r&gt; </p> </entry>
+<entry><p>Controller </p> </entry>
+<entry><p>The UID of the record format collection for this controller (see
+below). </p> </entry>
+</row>
+<row>
+<entry><p>&lt;m&gt; </p> </entry>
+<entry><p>Format </p> </entry>
+<entry><p>A mime type that describes the format. Multiple entries with this
+tag can be included. </p> </entry>
+</row>
+<row>
+<entry><p>&lt;e&gt; </p> </entry>
+<entry><p>Format </p> </entry>
+<entry><p>A file extension supported by this format. Multiple entries with
+this tag can be included. </p> </entry>
+</row>
+<row>
+<entry><p>&lt;h&gt; </p> </entry>
+<entry><p>Format </p> </entry>
+<entry><p>A segment of header data that can be matched against the first few
+bytes of a clip to check whether this format is capable of handling the clip.
+Multiple entries with this tag can be included. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Formats can be supported by controller plugins either: </p> <ul>
+<li id="GUID-D7548E83-D055-5444-B53C-DDEBE26EB84C"><p> <b>Internally:</b> In
+this case, the controller is able to read or write the format by itself. Controller
+plugins can specify the formats they support internally with extra entries
+in their plugin resource file. They define two new <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> plugin
+interface uids (one for play formats, the other for record formats) in their <codeph>opaque_data</codeph> field
+using the tags <codeph>&lt;p&gt;</codeph> and <codeph>&lt;r&gt;</codeph>. The play
+formats they support are then listed as <codeph>ECom</codeph> plugin implementations
+of the play format interface UID, and likewise with the record formats. These
+interface UIDs and implementations do not correspond to any real plugins.
+They are simply a way of letting the controller framework know exactly which
+formats the controller supports in a scalable manner. The implementation UIDs
+of each format should be known to the controller so that a client can specify
+the format that a controller should use by using this UID. </p> </li>
+<li id="GUID-DAA4BF7F-D830-5A8B-A2D9-EA6B1BB6D9C0"><p> <b> By using format
+plugins:</b> The <xref href="GUID-8BAA3621-DC04-357F-8342-D72A313CCA86.dita"><apiname>MMFServerBaseClasses</apiname></xref> component defines
+base classes for both encoding and decoding format plugins. By using format
+plugins, the formats supported by a controller plugin can be extended dynamically
+without having to change the controller plugin itself. The <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> plugin
+resource file of each format plugin contains the UID of the controller plugin
+that it extends, allowing the controller framework to build up an accurate
+picture of the formats supported by each controller. </p> </li>
+</ul> <p>The following is an example of a resource file for an audio controller
+plugin that supports playing <codeph>WAV</codeph> and <codeph>AU</codeph>,
+and recording <codeph>AU</codeph>. </p> <codeblock id="GUID-E9D08E5B-F29E-5668-83CC-74B39AAA139D" xml:space="preserve">RESOURCE REGISTRY_INFO theInfo
+    {
+    dll_uid = 0x101F1234;
+    interfaces = 
+        {
+        INTERFACE_INFO // Controller Plugin Description
+           {
+           interface_uid = KMmfUidPluginInterfaceController ;
+           implementations = 
+               {
+               IMPLEMENTATION_INFO
+                   {
+                   implementation_uid = 0x101F1235 ;
+                   version_no = 1;
+                   display_name = "Symbian Audio controller";
+                   default_data = "?";
+                   opaque_data = 
+                          “&lt;s&gt;Symbian&lt;i&gt;0x101F5D07&lt;p&gt;0x101F0001&lt;r&gt;0x101F0002";
+                           // SUPPLIER = Symbian
+                           // MEDIA ID = uid for audio media type
+                           // PLAY FORMATS = look at interface uid 0x101f0001
+                           // RECORD FORMATS = look at interface uid 0x101f0002
+                   }
+               };
+            },
+        INTERFACE_INFO // Play Formats Description
+            {
+            interface_uid = 0x101F0001 ;
+            implementations = 
+               {
+               IMPLEMENTATION_INFO
+                   {
+                   implementation_uid = 0x101F1236 ;
+                   version_no = 1;
+                   display_name = "WAV Play Format";
+                   default_data = "?";
+                   opaque_data = 
+                   “&lt;s&gt;Symbian&lt;i&gt;0x101f5d07&lt;e&gt;.wav&lt;h&gt;RIFF????WAVE&lt;m&gt;Audio/Wave";
+                   // SUPPLIER = Symbian
+                   // MEDIA ID = uid for audio media type
+                   // FILE EXTENSION = .wav
+                   // HEADER DATA = look for RIFF????WAVE in header data. The’?’s
+                   // indicate a single character wildcard.
+                   // MIME TYPE = Audio/Wave
+                   },
+               IMPLEMENTATION_INFO
+                   {
+                   implementation_uid = 0x101F1237 ;
+                   version_no = 1;
+                   display_name = "AU Play Format";
+                   default_data = "?";
+                   opaque_data = 
+                   “&lt;s&gt;Symbian&lt;i&gt;0x101f5d07&lt;e&gt;.au&lt;h&gt;.snd";
+                   // SUPPLIER = Symbian
+                   // MEDIA ID = uid for audio media type
+                   // FILE EXTENSION = .au
+                   // HEADER DATA = look for .snd in header data.
+                   // MIME TYPE = No mime type
+                   }
+               };
+            },
+        INTERFACE_INFO // Record Formats Description
+            {
+            interface_uid = 0x101F0002 ;
+            implementations = 
+               {
+               IMPLEMENTATION_INFO
+                   {
+                   implementation_uid = 0x101F1238 ;
+                   version_no = 1;
+                   display_name = "WAV Record Format";
+                   default_data = "?";
+                   opaque_data = 
+                   “&lt;s&gt;Symbian&lt;i&gt;0x101f5d07&lt;e&gt;.wav&lt;h&gt;RIFF????WAVE&lt;m&gt;Audio/Wave";
+                   // SUPPLIER = Symbian
+                   // MEDIA ID = uid for audio media type
+                   // FILE EXTENSION = .wav
+                   // HEADER DATA = look for RIFF????WAVE in header data. The’?’s
+                   // indicate a single character wildcard.
+                   // MIME TYPE = Audio/Wave
+                   }
+                };
+            }
+        };
+    }
+
+</codeblock> <p> <b>Note:</b> The <codeph>default_data</codeph> field is not
+used by the controller framework. A <codeph>UTF8</codeph> to <codeph>unicode</codeph> conversion
+is performed on the Supplier. All other data is left in <codeph>ascii</codeph>. </p> </section>
+<section id="GUID-0F96339A-BF77-570C-908D-A59AFD2036DB"><title>Testing</title> <p>The
+controller plugin should be tested by exercising any application-level utility
+APIs that are meant to be supported by the plugin. For example, a video player
+controller would be tested using the <xref href="GUID-FFD6114E-36B4-3176-ABDD-987DDA2F2099.dita"><apiname>CVideoPlayer</apiname></xref> API. </p> </section>
+</conbody><related-links>
+<link href="GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita"><linktext>Multimedia
+APIs and Frameworks</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482"><title>unpageddata</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>unpageddata</codeph>  </p> <p>Use the <codeph>unpageddata</codeph> statement to specify that the data in the executable is not paged. This controls the paging of both heap and stacks for an executable. For more fine-grained control, the paging of heap and stack data can be specified separately during the creation of new threads and processes. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-52D2B0A4-1535-5D41-BF4C-06745C0588F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-52D2B0A4-1535-5D41-BF4C-06745C0588F6" xml:lang="en"><title>How
+to use a notifier to display a single line message, synchronously</title><shortdesc>Provides a code snippet to show you how to use a notifier to display
+a single line message synchronously.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To display a single line message synchronously, use the static function <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-EEF84AA0-A277-390D-BFAB-CF50C94DF18D"><apiname>User::InfoPrint()</apiname></xref>.
+The following code fragment shows how: </p>
+<codeblock id="GUID-AFACC095-EA67-5926-AC2C-BDF14C7BCF4A" xml:space="preserve">{
+...
+_LIT(KTxtMsg,"A message");
+...
+User::InfoPrint(KTxtMsg);
+...
+}</codeblock>
+<p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-EEF84AA0-A277-390D-BFAB-CF50C94DF18D"><apiname>User::InfoPrint()</apiname></xref> uses an <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita"><apiname>RNotifier</apiname></xref> object
+in its implementation, but you do <i>not</i> need to use the object to display
+the message. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-53017B71-9399-548B-BD1D-C68FC535A543.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-53017B71-9399-548B-BD1D-C68FC535A543"><title>SIP Timers</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>SIP transaction timers</title> <p>SIP transaction (SIP T) timers T1, T2 and T4 can be configured as per the bearer type. The default SIP T timer values for GPRS bearer are 3, 16 and 17secs. The default SIP T timer values,for WLAN is 500ms, 4secs and 5secs. The read operation on SIP T timers is <i>alwayspass</i> and write operation requires <i>writedevicedata</i> capability. </p> <p>The central repository keys for SIP T timers and its CenRep UIDs are as follows: </p> <codeblock id="GUID-5FE5A016-F24B-5E49-AC60-A4502307740F" xml:space="preserve">
+// SIP stack Configuration parameters.
+const TUid KCRUidSIP = { 0x101FED88 };
+
+// SIP transaction timers for GPRS bearer in milliseconds as per RFC3261.
+// For SIP T timer T1 
+const TUint32 KSIPTransactionTimerLANT1 = 0x01;
+
+// For SIP T timer T2 
+const TUint32 KSIPTransactionTimerLANT2 = 0x02;
+
+// For SIP T timer T4 
+const TUint32 KSIPTransactionTimerLANT4 = 0x03;
+
+//SIP transaction timers for LAN  bearer in milliseconds as per RFC3261.
+// For SIP T timer T1 
+const TUint32 KSIPTransactionTimerLANT1 = 0x0b;
+
+// For SIP T timer T2
+const TUint32 KSIPTransactionTimerLANT2 = 0x0c;
+
+// For SIP T timer T4
+const TUint32 KSIPTransactionTimerLANT4 = 0x0d;</codeblock> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e337015_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-530DBEB3-2379-5567-BB10-45D21D6FF80A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-530DBEB3-2379-5567-BB10-45D21D6FF80A"><title>How to select text</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A <keyword>selection</keyword> can range from a single character to the entire document. The following example code selects the first paragraph.</p> <ul><li id="GUID-48CF7E76-4F57-56D8-8360-5EC72C012C2D"><p>The current cursor position is the start of the document (position zero). Use <xref href="GUID-49DBB305-A043-3D23-AC33-6E5C8ABAD1EE.dita#GUID-49DBB305-A043-3D23-AC33-6E5C8ABAD1EE/GUID-346EF37E-EBC7-3B4D-9EFB-3BF7BE44A5FD"><apiname>CEditableText::ScanParas()</apiname></xref> with a mask of <codeph>EScanToUnitEnd</codeph> to find the document position of the end of the paragraph containing the cursor.</p> </li> <li id="GUID-BBE5D63A-DC90-5C0A-A0C0-E20BE88210ED"><p>Use <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-2805EB61-DAC3-30B8-B898-AD086788F6A3"><apiname>CTextView::SetDocPosL()</apiname></xref> to change the document position of the cursor to the end of the first paragraph. The second argument of <codeph>ETrue</codeph> causes the range of characters between the old and new cursor positions to be selected.</p> </li> </ul> <codeblock id="GUID-3676A534-9E1E-5144-9BDF-8DE8171E7E65" xml:space="preserve">TInt pos=0;
+TUint scanMask=CPlainText::EScanToUnitEnd;
+iRichText-&gt;ScanParas(pos,scanMask); // get end pos of 1st para
+// move cursor to end of para and select it
+iTextView-&gt;SetDocPosL(pos,ETrue);</codeblock> <section><title>Note</title> <ul><li id="GUID-85B8DD77-AF10-5F6E-B076-65CC03360217"><p>The use of <codeph>SetDocPosL()</codeph> demonstrated above shows how text can be selected using the old cursor position as the <keyword>anchor</keyword>. An alternative method of selecting text is to use <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-EC55A292-C857-3DAC-B087-AE04DB2C0C88"><apiname>CTextView::SetSelectionL()</apiname></xref>. This function allows the user to specify the anchor as well as the cursor position.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-53112730-5871-5920-8861-D2F6BF1595BC" xml:lang="en"><title>Swizzles and deferred loading</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5329AE68-39E0-55E7-9878-2D8FF9E29B21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5329AE68-39E0-55E7-9878-2D8FF9E29B21" xml:lang="en"><title>User Prompt Service</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>User Prompt Service (UPS) allows device creators to choose whether security decisions (for example, allowing an application to make a network connection) are processed silently or require the user to be prompted. This behaviour can be configured statically using resource files known as UPS policy files or, dynamically using ECom plug-ins loaded into the UPS server. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5329C067-60B8-4E0E-A2B3-9423B75E189D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5329C067-60B8-4E0E-A2B3-9423B75E189D" xml:lang="en"><title>Getting
+GLib events in Symbian UI applications</title><shortdesc>Symbian UI applications run an event loop that is based on <apiname>CActiveScheduler</apiname>.
+The active scheduler is started by the UI framework immediately after the
+UI has been created (that is after <codeph>ConstructL()</codeph> of <apiname>CEikAppUi</apiname>-derived
+class).</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To receive events from GLib event sources, an active object can be added
+to the active scheduler especially for this purpose. The active object runs
+one iteration of the glib event loop every time it gets scheduled.</p>
+<note>The scheduling logic in the sample code provided below is based on a
+simple timer; more complex scheduling logic can be implemented depending on
+the requirement of the application.</note>
+<codeblock xml:space="preserve">/********* GlibEventHandler.h *********************/
+
+class CGlibEventHandler: public CActive
+{
+public:
+	static CGlibEventHandler* NewL();
+	~CGlibEventHandler();
+       void RunL();
+       void DoCancel();
+       void Start();
+       void Stop();
+private:
+       CGlibEventHandler();
+       void ConstructL();	
+       RTimer iTimer;
+};
+
+/********* GlibEventHandler.h *********************/
+
+
+/********* GlibEventHandler.cpp *******************/
+
+CGlibEventHandler* CGlibEventHandler::NewL()
+{
+       CGlibEventHandler* self = new(ELeave) CGlibEventHandler();
+       CleanupStack::PushL(self);
+       self-&gt;ConstructL();
+       CleanupStack::Pop();
+       return self;
+}
+
+CGlibEventHandler::CGlibEventHandler():CActive(EPriorityStandard)
+{
+}
+	
+void CGlibEventHandler::ConstructL()
+{
+	User::LeaveIfError(iTimer.CreateLocal());
+	CActiveScheduler::Add(this);	
+}
+
+CGlibEventHandler::~CGlibEventHandler()
+{
+	Cancel();
+	iTimer.Close();		
+}
+
+void CGlibEventHandler::Start()
+{
+	iTimer.After(iStatus, TTimeIntervalMicroSeconds32(1000));
+	SetActive();	
+}
+	
+void CGlibEventHandler::Stop()
+{
+	Cancel();
+}
+	
+void CGlibEventHandler::RunL()
+{
+	g_main_context_iteration(NULL, FALSE);
+	iTimer.After(iStatus, TTimeIntervalMicroSeconds32(1000));
+	SetActive();	
+}
+	
+void CGlibEventHandler::DoCancel()
+{
+	iTimer.Cancel();	
+}
+
+/********* GlibEventHandler.cpp *******************/
+</codeblock>
+<p>The following is done in the application:</p>
+<codeblock xml:space="preserve">GMainLoop* mainloop = g_main_loop_new(NULL, FALSE);
+CGlibEventHandler* glibeventhandler = NULL;
+glibeventhandler = CGlibEventHandler::NewL();
+glibeventhandler-&gt;Start();
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-533EC918-BF5B-5D0B-8860-1E8746A05EE3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-533EC918-BF5B-5D0B-8860-1E8746A05EE3" xml:lang="en"><title>Using Text and Text Attributes (ETEXT)</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069-master.png has changed
Binary file Symbian3/SDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e289732_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-535793F2-08F1-5B4E-AD32-783985C53124.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-535793F2-08F1-5B4E-AD32-783985C53124"><title>vendorid</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>vendorid</codeph>  <varname>vendorid</varname>  </p> <p>This keyword specifies the vendor of the executable. For details on how it is possible to use this with platform security. </p> <p>In most cases, this VID will be zero, meaning that source of the executable is not required for any security checks. </p> <p>The setting is only functional on OS versions based on the EKA2 kernel. For those versions based on EKA1, the keyword is ignored. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e62950_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-535954FD-2501-5C80-AD86-AC73A86B18B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-535954FD-2501-5C80-AD86-AC73A86B18B5"><title>Internalising a Swizzle</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Internalising a Swizzle from a stream has assignment semantics.</p> <p>The process of internalisation assumes that the current position within the stream contains the external representation of a stream ID. The stream which corresponds to this ID contains the external representation of some object.</p> <p>The result is a Swizzle which represents the object by stream ID.</p> <p>The following code fragments illustrate the process. </p> <p><codeph>iB</codeph> is a <codeph>CClassB</codeph> type component of a class <codeph>CClassABC</codeph>, and is represented by a Swizzle. The data member is defined as:</p> <codeblock id="GUID-9941EE1B-A10C-5258-BA35-C78701B15A64" xml:space="preserve">class CCClassABC : public CBase
+    {
+    ...
+    TSwizzle&lt;CClassB&gt; iB;
+    ...
+    }
+</codeblock> <p>The example assumes that the stream ID of the swizzled object has been externalised as in <xref href="GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita">Externalizing a Swizzle</xref>.</p> <p>CClassB's RestoreL() and InternalizeL() functions are implemented as:</p> <codeblock id="GUID-B3DD1B09-465F-5421-ACF4-768E12C8E6E2" xml:space="preserve">void CClassABC::RestoreL()
+          {
+          RStoreReadStream stream;
+          stream.OpenLC(iStore,iId);
+          InternalizeL(stream);
+          CleanupStack::PopAndDestroy();
+          }</codeblock> <codeblock id="GUID-3A9A58AD-A0F7-5707-B1CF-7F40B6C9ADC8" xml:space="preserve">void CClassABC::InternalizeL(RReadStream&amp; aStream)
+          {
+          ...
+          aStream &gt;&gt; iB; // internalises Swizzle from stream
+          ...
+          }</codeblock> <p>Here, <codeph>iId</codeph> is the stream ID containing <codeph>CClassABC</codeph> data.</p> <fig id="GUID-96F9A1CC-91BE-52A2-B9AE-F5BDC5308210"><image href="GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e337257_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5365F75F-647F-4225-B63B-35675EBD6038_d0e54980_href.png has changed
Binary file Symbian3/SDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050-master.png has changed
Binary file Symbian3/SDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e92264_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5373B575-F284-5774-9C73-2A18C4A912A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5373B575-F284-5774-9C73-2A18C4A912A2"><title>Using Standard Names and MIB enums (SNM) </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Internet names, standard names and MIB enums (SNM) are widely used for character sets. This section describes how to use these names and values during character conversion. </p> <section id="GUID-E3BEB74D-79C7-59A9-9366-CCD8B52DB7F8"><p>Before you start, you must understand: </p> <ul><li id="GUID-6834352F-169B-55B6-9A25-7E2D2EFB62E4"><p> <xref scope="external" href="http://www.iana.org/assignments/character-sets">Standard names and MIB enums </xref> (SNM) </p> </li> <li id="GUID-44A0D093-E7DE-5A99-9035-E17FCC0B35EB"><p><xref href="GUID-325D8E31-584B-5B10-902C-F004641A614D.dita">Charconv framework conversion APIs</xref>. </p> </li> </ul> </section> <section><title>Introduction</title> <p>To convert text between a foreign encoding and Unicode you must know the UID of the character converter. </p> <p>Device creators can create files which map SNM information of character sets to the UIDs of their character converters. Application developers can then use the MIB enum value or an alias of a character set without knowing its UID. </p> </section> <section><title>Procedure</title> <p> <b>Creating an SNM source file</b>  </p> <p>Device creators can create an SNM mapping file in the ROM as follows: </p> <ol id="GUID-B3316083-E593-5160-919F-98CED9E8AFDD"><li id="GUID-01555850-9692-5FAD-97CF-F4A2E944C6DA"><p>Create an SNM source file using a text editor on a PC and save it. For example d:\charconvfiles\basicsnm.txt. </p> <p>This file must define the mapping between Symbian-specific character set UIDs and one or more standard names and MIB enums. Refer to <xref href="GUID-CD3B2B7D-BAE5-5F99-A5F5-74AFC678D986.dita">SNM Source File Reference</xref> for the file syntax. For information about Symbian UIDs, refer to the <filepath>charconv.h</filepath> header file. </p> <codeblock id="GUID-7F08B7AD-9AFA-5712-9D3D-AF87F5E9C2D8" xml:space="preserve">
+...
+CharacterSet 0x10004cc6
+    StandardName    "US-ASCII"
+    StandardName    "ASCII"
+    StandardName    "ANSI_X3.4-1968"
+    StandardName    "iso-ir-6"
+    StandardName    "ANSI_X3.4-1986"
+    StandardName    "ISO_646.irv:1991"
+    StandardName    "ISO646-US"
+    StandardName    "us"
+    StandardName    "IBM367"
+    StandardName    "cp367"
+    StandardName    "csASCII"
+    MibEnum            3
+
+CharacterSet 0x10003b10
+    StandardName    "ISO-8859-1"
+    StandardName    "ISO_8859-1"
+    StandardName    "latin1"
+    StandardName    "iso-ir-100"
+    StandardName    "l1"
+    StandardName    "IBM819"
+    StandardName    "CP819"
+    StandardName    "csISOLatin1"
+    MibEnum            4
+...
+</codeblock> </li> <li id="GUID-65593A6B-21F3-5416-AE81-7D81AB771C95"><p>Use the <codeph>snmtool</codeph> to generate an SNM file from the source SNM file. </p> <p>From a command line, run the following commands to go to the Symbian tools directory and execute <codeph>snmtool</codeph>: </p> <p><userinput>cd d:\Symbian\epoc32\tools</userinput> </p> <p><userinput>snmtool.bat d:\charconvfiles\basicsnm.txt d:\charconvfiles\basic.snm</userinput> </p> </li> <li id="GUID-29001446-1A91-5694-886C-EA57AFEE51EC"><p>Copy the SNM file to the <filepath>\system\charconv\</filepath> directory. </p> </li> </ol> <p> <b>Retrieving a Character Converter UID using an SNM standard name or MIB enum</b>  </p> <ol id="GUID-7A861BDF-B0E8-53F8-B14F-5E69477F79E3"><li id="GUID-0A625B0A-6D8A-5D20-9DB6-E88B7CA83B86"><p>Use an SNM standard name or MIB enum value to retrieve the UID of the character converter. </p> <codeblock id="GUID-A1A41057-D50A-50A5-955E-C59B9B739A5B" xml:space="preserve">RFs fileServerSession;
+CCnvCharacterSetConverter* characterSetConverter = CCnvCharacterSetConverter::NewLC();
+
+TUint characterSetUid = 
+    characterSetConverter-&gt;ConvertStandardNameOfCharacterSetToIdentifierL(_L8("ASCII"), fileServerSession);
+
+    // use the UID to load the converter.
+CCnvCharacterSetConverter::TAvailability available = 
+    characterSetConverter-&gt;PrepareToConvertToOrFromL(characterSetUid, fileServerSession);
+...</codeblock> </li> </ol> <p>There are two functions for getting a UID: </p> <ul><li id="GUID-B5DC4C12-C0F6-5A66-B4EA-68A154F777FA"><p> <codeph>CCnvCharacterSetConverter::ConvertStandardNameOfCharacterSetToIdentifierL()</codeph> takes a standard name as a parameter. </p> </li> <li id="GUID-E0F345C4-22D9-5090-B4C2-97071EBBB49A"><p> <codeph>CCnvCharacterSetConverter::ConvertMibEnumOfCharacterSetToIdentifierL()</codeph> takes a MIB enum value as a parameter. </p> </li> </ul> <p>These functions read the SNM file to get the UID. The UID can then be passed to <codeph>PrepareToConvertToOrFromL()</codeph> to load the right converter. </p> <p> <b>Note</b>: If there are multiple SNM files, the contents are combined. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e205824_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-539C4AA4-FF3F-4D6B-90A5-677092DBE54E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-539C4AA4-FF3F-4D6B-90A5-677092DBE54E" xml:lang="en"><title>Exporting
+Global Data from a DLL</title><shortdesc>Exporting global data from a DLL to be accessed by either P.I.P.S.
+or Symbian C++ applications is one of the typical problems that developers
+encounter.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>It is strongly recommended to avoid having global data in DLLs due to following
+reasons:</p>
+<ul>
+<li><p>EKA2 emulator allows only a DLL with WSD to load into a single process.</p></li>
+<li><p>RAM usage for WSD data chunk is atleast one 4K RAM page (the smallest
+possible RAM allocation), irrespective of how much static data is required.</p></li>
+<li><p>Chunks are a finite resource on ARMv5. Every process loading WSD enabled
+DLLs uses a chunk to hold the data.</p></li>
+<li><p>There are ARM architecture 4 and 5 specific costs and limitations that
+apply only to DLLs that link against “fixed processes”.</p></li>
+<li><p> There is a limit on the number of DLLs in a process with WSD. </p></li>
+</ul>
+<p>On having understood the above limitations, the following pattern can be
+used for exporting global data from a DLL:</p>
+<ol>
+<li id="GUID-CB5A6042-22D6-4A55-AB95-238D36B29E4D"><p>Do not export global
+variables. Within DLL, say there is one global variable, for example:</p><codeblock xml:space="preserve">int globalVal; </codeblock></li>
+<li id="GUID-441655B4-C2E0-4923-AA61-9AD71B9E8E43"><p>Export one method that
+returns a pointer to that variable.</p><codeblock xml:space="preserve">extern "C" EXPORT_C int* GlbData ()
+    {
+    return &amp;globalVal
+    }
+</codeblock></li>
+<li id="GUID-8C06D549-3F94-455B-981D-D0D19B004BE1"><p>Define a macro for the
+user of the DLL. Within the DLL header (for example, <filepath>xxx.h</filepath>),
+define the following:</p><codeblock xml:space="preserve">#ifdef __cplusplus
+extern "C" 
+#endif
+IMPORT_C int* GlbData ();
+#define globalVal (*GlbData())</codeblock><p>And the usage is like: </p><codeblock xml:space="preserve">#include &lt;xxx.h&gt;  // DLL header
+int main()
+    {
+    int i = 0;
+    globalVal = 10;
+    globalVal++;
+    i = globalVal;
+    return 0;
+    }
+</codeblock></li>
+</ol>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22-master.png has changed
Binary file Symbian3/SDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e256631_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE"><title>Playing Audio</title><shortdesc>This tutorial describes you how to start playing, pausing and resuming, stopping, retrieving the number of samples in the audio data. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-5364D394-21F7-5327-BCD3-8F91DB5EEC8D-GENID-1-6-1-17-1-1-11-1-5-1-4-1-5-1-5-1-4-1-3-1"><p>Before you start, you must: </p> <ul><li id="GUID-5603BB0D-DA89-53CD-B855-E7ED172664FC"><p>Understand the <xref href="GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita">A3F DevSound Component</xref> to which the DevSound library belongs. </p> </li> <li id="GUID-24A98687-F6A9-526A-8407-6E12336EB967"><p>Understand the architectural relationship of the DevSound. For information see <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound Overview</xref>. </p> </li> </ul> </prereq> <context id="GUID-2D44831D-8BB7-5468-AD52-182F4F7ED856"><p>You can perform various functionality in DevSound audio playing that are listed in the below section. </p> </context> <steps id="GUID-E54500DF-7C1B-56FF-B592-FDEF0846BF43"><step id="GUID-CA4439C0-A748-5B4D-A97F-10530E2ABF40"><cmd/><info><xref href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita">Starting Audio Play</xref>  </info> </step> <step id="GUID-C877C0D2-2F4A-56F5-AEF5-A463846E8979"><cmd/><info><xref href="GUID-609A4E83-F074-5A5D-A0DF-A95A7CDC8D2C.dita">Pausing and Resuming Audio Play</xref>  </info> </step> <step id="GUID-B4FECB20-A540-5D45-A605-F20299D98ACB"><cmd/><info><xref href="GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6.dita">Stopping Audio Play</xref>  </info> </step> <step id="GUID-2F784A08-7CDE-54B1-8FA6-B3BDCCBF7104"><cmd/><info><xref href="GUID-57412030-6B02-592A-81D5-54D2767ED131.dita">Retrieving Audio Play Samples</xref>  </info> </step> </steps> </taskbody><related-links><link href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita"><linktext>Recording Audio</linktext> </link> <link href="GUID-14BAAB7C-35CD-5A43-B362-79F88C7712DE.dita"><linktext>Playing Tones</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-53C0A250-287E-57E1-80BC-F66F9F9DD478.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-53C0A250-287E-57E1-80BC-F66F9F9DD478" xml:lang="en"><title>Image Transform Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C" xml:lang="en"><title>Always-editable
+forms</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In case the View state is not useful, the form can be specified as Edit-state
+only. Then the user can edit the fields right away when entering the form,
+and accepting the form returns into a state outside the form instead of the
+View state.</p>
+<fig id="GUID-F7142498-DBD3-40AD-AD3F-819D0606C0D1">
+<title>Form in the Edit state</title>
+<image href="GUID-5642F824-DDEB-43D1-B838-6C19AFFEBD9C_d0e55965_href.png" scale="40" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-53E1EBAB-758B-58DF-9568-8CC682C0F74F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-53E1EBAB-758B-58DF-9568-8CC682C0F74F" xml:lang="en"><title>Screen
+Handling</title><shortdesc>This topic provides information about screen size and display mode. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Application developers. </p>
+<section><title>Screen size independence</title> <p> </p> <p>Symbian is implemented
+on many different phones with varying screen sizes. If application developers
+want their applications to be portable across devices with different screen
+sizes, they must ensure that they do not hard code any assumptions about screen
+size in their code. You can find out the area of the screen that is available
+for drawing at run time by using <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi::ClientRect()</apiname></xref>. </p> </section>
+<section><title>Screen display mode switching</title> <p>Before Symbian^3,
+Symbian supported the automatic switching of the screen display mode—for example,
+from 2bpp (bits per pixel) to 4bpp. This is no longer supported. The screen
+display mode is now set when the device starts up based on the <codeph>SCREENMODE</codeph> parameter
+in the <filepath>wsini.ini</filepath> file. See <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">The
+wsini.ini File Reference</xref> for more information. </p> <p>ScreenPlay provides
+support for externally connected displays, such as TV-out, switching between
+resolutions at runtime and notifications to Window Server clients when there
+are changes to the resolution and connectedness. See <xref href="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita">Display
+Control and Mapping</xref> for more information. </p> </section>
+</conbody><related-links>
+<link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server
+Client-Side Library                 Concepts</linktext></link>
+<link href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita"><linktext>The wsini.ini
+File Reference</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e204099_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-542550FA-F9F1-46D6-8182-6E7FAA013572.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-542550FA-F9F1-46D6-8182-6E7FAA013572" xml:lang="en"><title>Receiving
+key event data in your application</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller </xref>is
+the default handler for key events. In order for other <xref href="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita">controls</xref> to
+receive events, you must register them with the control stack with <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aAddToStackL%28const%20MCoeView%20%26amp%3b%2cCCoeControl%20%2a%2cTInt%2cTInt%29" format="application/java-archive"><parmname>CCoeAppUi::AddToStackL()</parmname></xref>. Controls are
+usually added to the control stack in the second phase constructor.</p>
+<p>The options are as follows:</p>
+<ul>
+<li><p>In a <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">traditional
+Symbian OS UI architecture</xref>, this is done in the UI controller construction
+phase. An example of an implementation is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-CC069DFD-545E-43BF-97A2-F76D2D0F903F" xml:space="preserve">void CAddressBookAppUi::ConstructL()
+    {
+    BaseConstructL();
+    iCurrentView = CMyAppMainView::NewL( ClientRect() );
+    AddToStackL( iCurrentView );
+    }
+</codeblock>
+<p>This places <parmname>iCurrentView</parmname> on top of the control
+stack, which means the UI controller is underneath it in the stack. When the
+application framework passes an event to the application, the framework first
+requests that <parmname>iCurrentView</parmname> handle it. If this control
+does not consume the event, then the framework calls the method for the UI
+controller to handle the event.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aAddToStackL%28const%20MCoeView%20%26amp%3b%2cCCoeControl%20%2a%2cTInt%2cTInt%29" format="application/java-archive"><parmname>CCoeAppUi::AddToStackL()</parmname></xref> offers a parameter
+to set the stack priority of a UI control.</p>
+<p>You should use <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aRemoveFromStack%28CCoeControl%20%2a%29" format="application/java-archive"><parmname>CCoeAppUi::RemoveFromStackL</parmname></xref> to remove a control from
+the control stack when it should no longer receive events.</p>
+</itemgroup>
+</li>
+<li><p>In an <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">Symbian
+view architecture</xref>, this is typically done with <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#486d490d911ce5e9495e0ee19b0442db" format="application/java-archive"><parmname>CAknView::DoActivateL()</parmname></xref> when
+the UI controls are constructed. An example of an implementation for this
+approach is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-4DEDAE29-C6D9-4004-9687-530398F84E4A" xml:space="preserve">void CMyView::DoActivateL(const TVwsViewId&amp;, TUid , const TDesC8&amp;)
+    {
+    if (!iUIControl)
+        {
+        iUIControl = CMyUiControl::NewL( this, ClientRect() );
+        AppUi()-&gt;AddToStackL( *this, iUiControl );
+        } 
+   }
+</codeblock>
+<p>This places <parmname>iUiControl</parmname> on top of the control stack,
+which means the UI controller is underneath it in the stack. When the application
+framework passes an event to the application, the framework first requests
+that <parmname>iUIControl</parmname> handle it. If this control does not consume
+the event, then the framework calls the method for the UI controller to handle
+the event.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aAddToStackL%28const%20MCoeView%20%26amp%3b%2cCCoeControl%20%2a%2cTInt%2cTInt%29" format="application/java-archive"><parmname>CCoeAppUi::AddToStackL()</parmname></xref> offers a parameter
+to set the stack priority for a UI control.</p>
+<p>You should use <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aRemoveFromStack%28CCoeControl%20%2a%29" format="application/java-archive"><parmname>CCoeAppUi::RemoveFromStackL</parmname></xref> to remove a control from
+the control stack when it should no longer receive events.</p>
+</itemgroup>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e146660_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-54417A4F-710D-5257-BF49-13D9F28C92B9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-54417A4F-710D-5257-BF49-13D9F28C92B9" xml:lang="en"><title>Memory
+Management Overview</title><shortdesc>Provides functionality concerned with how memory is allocated for
+and within programs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-F614F405-BECD-404C-800E-C723107FEE5A"><title>Purpose</title> <p>Fundamental to Symbian platform programs
+is a concern that memory, as a limited resource, is carefully handled, particularly
+in the event of error conditions. For this reason, exception handling and
+memory management are closely tied together in the Cleanup Support API.</p> </section>
+<section id="GUID-C176F084-C218-41EC-8C8C-AD5E74235382"><title>Architectural relationships</title> <p>The Uikon framework
+uses these APIs to provide to each GUI program the basic infrastructure for
+well-behaved memory handling. In particular, each GUI program has support
+for cleaning up memory in exception conditions, and, in debug builds, detection
+of memory leaks. </p> </section>
+<section id="GUID-F8EE693D-A01C-49BF-A2DD-FD50CB6EEAF1"><title>Description</title> <p>Functionality is provided by a number
+of APIs. Use them as follows:</p> <p><xref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita">Cleanup
+Support Overview</xref> </p> <p>Provides idioms to handle program exceptions,
+and to clean up memory when exceptions occur.</p> <p><xref href="GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita">Memory
+Allocation Overview</xref> </p> <p>Provides low-level functionality by which
+a Symbian platform process can access and manipulate memory areas.</p> </section>
+<section id="GUID-6C1446EB-CAF5-4545-BB75-3F894740AEF8"><title>See also</title> <p><xref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita">Basic
+Types Overview</xref> </p> <p><xref href="GUID-506642C2-A14F-55F2-9377-43DDB14F4053.dita">Raw
+Memory Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System
+Static Functions Overview</xref> </p> <p><xref href="GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347.dita">Thread
+And Process Management Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-545DA961-217E-49CA-A90E-7A41E2C03A99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-545DA961-217E-49CA-A90E-7A41E2C03A99" xml:lang="en"><title>Forking
+without <codeph>exec()</codeph></title><shortdesc>A Unix-like system may create the child process using <codeph>fork()</codeph>,
+which then does not make a subsequent <codeph>exec()</codeph> call. The result
+of this is that the parent and child processes run the same executable. The
+child may communicate with the parent using pipes. One example of a system
+which does this is the email software program Exim (www.exim.org). In addition
+to forking without <codeph>exec()</codeph>, it can also <codeph>re-exec()</codeph> itself
+to regain dropped root privileges.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The issues that such systems encounter when porting to P.I.P.S. fall into
+two categories: <ul>
+<li><p><b>Little or no state data passed to child</b></p></li>
+<li><p><b>A lot of data passed to child</b></p></li>
+</ul></p>
+<section><title>Little or no state data passed to child</title><p>The first
+issue is where there is a little/no data passed to the child process on the <codeph>fork()</codeph> operation.
+Many examples of this exist in pre/post forking of listening sockets in TCP
+server applications, for example, in the MPM pre-fork module of the Apache
+server. More details are available at <xref href="http://httpd.apache.org/docs/2.2/mod/prefork.html" scope="external">http://httpd.apache.org/docs/2.2/mod/prefork.html</xref>. </p><p>This
+can be resolved by using the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> operation, and
+passing any data using the <codeph>argv</codeph> parameters or environment
+variables. For more information about the <codeph>posix_spawn()</codeph> operation,
+see <xref href="http://www.opengroup.org/" scope="external">http://www.opengroup.org/</xref>.
+Note that some <codeph>argv</codeph> parameters must be used to distinguish
+the behaviour of the parent process from the subsequent behaviour of the child
+when the <codeph>main()</codeph> function is called; the behaviour of the
+child cannot be identical to the parent.  </p><p>The subsequent sections provide
+the following information: <ul>
+<li><p><b>Parent process forking example</b></p></li>
+<li><p><b>P.I.P.S. equivalent</b></p></li>
+</ul></p></section>
+<section><title>Parent process forking example</title><codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;sys/wait.h&gt;
+#include &lt;unistd.h&gt;
+
+#define NUM_OF_PROCS 5
+
+int main(int argc, char *argv[])
+{
+  pid_t Processpid[NUM_OF_PROCS];
+     
+  int I;
+  
+  for(I=1;i&lt;NUM_OF_PROCS;i++)
+  {
+     Processpid[i] = fork();
+    
+     if(Processpid[i] == 0)
+     {
+        printf("\r\n Child Process Inst[%d] running ***\r\n",I);
+
+        //Terminate child process.5
+        exit(0);
+     }
+     else
+     {
+        //Wait for the child process to terminate before forking the next one.
+        waitpid(Processpid[i],NULL,0);
+     
+        printf("\r\n*** Child int[%d] process finished ***\r\n",I);
+     }
+  }
+   
+  return EXIT_SUCCESS;
+}
+</codeblock><p/></section>
+<section><title>P.I.P.S. equivalent</title><codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;strings.h&gt;
+#include &lt;spawn.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;sys/wait.h&gt;
+
+#define NUM_OF_PROCS 5
+
+int main(int argc, char *argv[])
+{
+   if(argc != 2)
+   {
+      printf("\r\n One parameter is needed.  \r\n");
+      
+      return EXIT_FAILURE;
+   }
+   else
+   {
+      int argvAsInt = atoi(argv[1]);
+      
+      if(argvAsInt &gt; NUM_OF_PROCS)
+      {
+         printf("\r\n parameter[%d] one is out of range  \r\n",argvAsInt);
+       
+         return EXIT_FAILURE;
+      }
+      else
+      {      
+         if(argvAsInt == 0)
+         {
+            //parent process.
+            pid_t Processpid[NUM_OF_PROCS];
+   
+            //executable points to the compiled version of this source.
+            char execFileName[] = "/root/PortDoc/Example3_c/Symbian/ParentProg";
+            int RetVal;
+            int I;
+            char iAsString[2];
+            char* spawnedArgs[3];
+            spawnedArgs[0] = argv[0];
+            spawnedArgs[2] = NULL;
+    
+            for(I=1; i&lt;NUM_OF_PROCS;i++)
+            {
+               //store I as a string.
+               bzero(iAsString,sizeof(iAsString));
+               iAsString[0] = 0x30+I;
+       
+               spawnedArgs[1] = iAsString;
+               
+               RetVal= posix_spawn(&amp;Processpid[i],execFileName,NULL,NULL,spawnedArgs,NULL);
+   
+               //wait for chid process to terminate before spawning the next.
+              (void)waitpid(Processpid[i],NULL,0);
+               printf("\r\n*** Child process finished ***\r\n");
+            }
+         }
+         else
+         {
+            //child process
+            printf("\r\n Child Process Inst[%d] running ***\r\n",argvAsInt);
+
+            //Terminate child process.
+            exit(0);
+         }
+      }
+   }
+   return EXIT_SUCCESS;
+}
+</codeblock></section>
+<section><title>A lot of data passed to child</title><p>The second issue is
+where there is too much data to be passed across to the child process using
+the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> call. A common work-around used in systems
+where <codeph>fork()</codeph> is not available is to use POSIX threads, or
+Pthreads. These Pthreads will execute in the same process and share their
+memory space, that is, they can share the same data objects. One critical
+difference between using Pthreads and <codeph>fork()</codeph> is that <codeph>fork()</codeph> creates
+copies of the parent's data objects in the child. The copied data objects
+can then be modified independently by both processes. However, when using
+Pthreads such data objects are shared and extra care, such as the use of mutexes
+and semaphores, is required when accessing them if their values can change. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-546FD573-8136-4C58-878B-C2F643B333AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-546FD573-8136-4C58-878B-C2F643B333AA" xml:lang="en"><title>When
+to use dialog architecture</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>One benefit of using dialogs is that the content
+and layout can be changed in resource files, without
+rebuilding any C++ code.</p>
+<p>Avkon has automatic status pane tab handling built into its multipage
+dialogs. This contrasts with the traditional and view architectures,
+for which the application must drive the tabs, that is, implement code for
+switching tabs and updating the navigation pane. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6"><title>Threads And Processes Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-D894C473-2BCF-4988-BF07-435C7A779BAF"><title>Purpose</title> <p>Provides access to processes, threads, and thread-local storage.</p> <p>Processes are usually only manipulated directly by system programs. Threads can be directly manipulated by multi-threaded programs. Note however that the active objects framework provided by the Asynchronous Services API is usually preferred to multi-threading in Symbian OS programming.</p> </section> <section id="GUID-90EBDA3E-A7E1-4460-9A63-CDEC922AC58A"><title>Description</title> <p>The API has three key concepts: process, thread, and thread-local storage. </p> <p><b>Process</b> </p> <p>A program running in Symbian OS is a process, which can contains one or more conceptually concurrent threads of execution. Each user process has its own private address space. A process can create another process. </p> <p>Processes are Kernel objects and so are accessed by user programs through handles. </p> <p>The process handle interface is provided by <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita"><apiname>RProcess</apiname></xref>.</p> <p><xref href="GUID-71AF2BC3-5CCD-3561-8807-7B8CDC1A64E9.dita"><apiname>TFindProcess</apiname></xref> is used for finding another process.</p> <p><b>Thread</b> </p> <p>A thread is the unit of execution within a process. The scheduling of threads is pre-emptive, i.e. a currently executing thread may be suspended at any time to allow another thread to run.</p> <p>Note the following properties of threads:</p> <ul><li id="GUID-7FA506FD-3F36-51AB-87C6-0A4415ED4257"><p>every process has a primary thread that is created when the process is initialised </p> </li> <li id="GUID-3C2107B8-2979-5835-8985-AC289C75AAA6"><p>a thread can create, suspend, resume, panic and kill other threads, subject to protection</p> </li> <li id="GUID-D4298E05-F3C7-59E9-9E05-EA43BAE51D93"><p>data can be passed between threads whether those threads are in different processes or the same process</p> </li> <li id="GUID-8EF7BA10-3BBA-568B-A0BE-00A6F4B58D6C"><p>each thread has a priority: the scheduler runs the highest-priority thread that is ready to run </p> </li> </ul> <p>Threads are Kernel objects and so are accessed by user programs through handles. </p> <p>The thread handle interface is provided by <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref>. </p> <p><xref href="GUID-29F27759-CC53-36DF-AE92-623F061D6C96.dita"><apiname>TFindThread</apiname></xref> is used for finding another thread.</p> <p>The System Static Functions API <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> class provides a number of functions that operate on the current thread.</p> <p><b>Thread-local storage</b> </p> <p>Thread-local storage in Symbian OS supports one machine word of static data per DLL per thread. The scope of the word is the thread and is only accessible to DLL code. DLL code running on behalf of one thread does not see the same word when running on behalf of another thread.</p> <p>The thread-local storage interface is provided by <xref href="GUID-6085A635-1664-323E-997A-EA11F75FBAC3.dita"><apiname>Dll</apiname></xref>.</p> </section> <section id="GUID-33582F5A-3ADA-434C-BDD2-503AA667BAE0"><title>See also</title> <p><xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous Services Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System Static Functions Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF" xml:lang="en"><title>Scale
+and positioning of controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-EF8CA4BE-130F-4117-9722-3F652DD1D244"> <p>Interface elements
+a user has to select and manipulate should not be smaller than the smallest
+average finger pad, that is, no smaller than 1 cm (0.4") in diameter or a
+1 cm × 1 cm square.</p> <p>In the Symbian OS, UI style defines
+the target minimum sizes for a UI element considered as finger usable:</p><ul>
+<li><p>7 x 7 mm with 1 mm gaps for index finger usage</p></li>
+<li><p>8 x 8 mm with 2 mm gaps for thumb usage</p></li>
+<li><p>List type of components should have minimum of 5 mm line spacing</p></li>
+</ul><p>The width of a finger limits the density of items on screen. If the
+items are too close, the user will not be able to choose a single one.</p><p>As
+the user is more likely to touch higher on the button by mistake than either
+side, button and icon sizes can be increased vertically.</p><p>Essential information
+or features, such as a label, instructions, or sub-controls should never be
+placed below an interface element that can be touched, as it may be hidden
+by the user's own body.</p><fig id="GUID-FF8225A9-0D9F-4E8F-8B19-32FAECEFE47C">
+<image href="GUID-FD85921E-AC9F-481F-8A58-0D03D56661C0_d0e47154_href.png" scale="60" placement="inline"/>
+</fig><ul>
+<li><p>With interfaces with traditional input devices, it makes sense to place
+targets like menu items on the edges of screens: the user cannot overshoot
+the target, as the cursor stops at the edge of the screen. </p></li>
+<li><p>When using a touch screen, a user seldom drags his finger across the
+screen as he would with a cursor. Instead, they most likely lift their finger
+and place it on a new target. Users may have difficulties in reaching the
+objects located on the edges of the screen, especially if the physical device
+has protruding edges around the touch screen panel. Additionally, with some
+devices, the screen edges may be less sensitive to register the touch input.</p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-548CC331-8E38-5627-A925-EA386BE90258.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-548CC331-8E38-5627-A925-EA386BE90258" xml:lang="en"><title>Compressing
+and Decompressing File - GZip Format </title><abstract><shortdesc>The Zip Compression Library, EZLib provides file compression
+and decompression functionality for the Symbian platforms. The files can be
+compressed to two formats namely zip and gzip. gzip is normally used to compress
+single files. </shortdesc> <p/> </abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-48E514AC-C78B-570F-A96C-389BABA02472"><p>Compression and
+Decompression are performed iteratively, till the completion of required task. </p> </context>
+<steps id="GUID-2D2DC7F3-64FA-5C96-95DE-615650E10160">
+<step id="GUID-C384EAE0-B1EE-5098-A557-1231D35F8A2A"><cmd/>
+<info>Input the source file and the name of the target gzip file to an instance
+of the <xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita"><apiname>CEZFileToGZip</apiname></xref> class. </info>
+</step>
+<step id="GUID-2A30A687-A777-5790-8145-5AE956F35FFC"><cmd/>
+<info> <xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita#GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162/GUID-4E51D7C5-C624-3F27-A5CD-01E92F96F72B"><apiname>CEZFileToGZip::DeflateL()</apiname></xref> is used to compress the
+file. </info>
+</step>
+</steps>
+<example><p>The code below depicts how the source file "input.doc" file is
+converted to target file "output.gz". </p><codeblock xml:space="preserve">/*
+ * If input and output file names are not specified then it is assumed that 
+ * the file names are contained in a provided .ini file.
+ */
+
+void CEZlibEZipTests::DoEZlibGZipDeflateL()
+    {
+    
+
+ RFs iFs;
+ iFS.connect();
+    
+
+    //Open the source file in read mode
+_LIT(KInputFileLocation, "c:\\private\\E80000B7\\zip\\input\\input.doc");
+TFileName inputFile(KInputFileLocation);
+
+    RFile input;
+    err = input.Open(iFS, inputFile, EFileStream | EFileRead | EFileShareExclusive);
+
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KOpenFileError);
+        User::Leave(err);
+        }   
+    
+    
+    //create a target file
+
+_LIT(KOutputFileLocation, "c:\\private\\E80000B7\\zip\\input\\output.gz");
+TFileName outputFile(KOutputFileLocation);
+
+
+    
+    CEZFileToGZip *compressor = CEZFileToGZip::NewLC(iFs, outputFile, input);
+
+    
+    while(compressor-&gt;DeflateL())
+        {       
+        }   
+input.Close();
+    iFS.Close();
+        
+    
+    }
+</codeblock></example>
+<postreq><p>The decompression of a gzip file can be achieved through the following
+the steps: </p> <ol id="GUID-A4771CC4-2704-56E3-BBD5-4AB2A58F9468">
+<li id="GUID-4E130CBF-C626-5CD0-9A83-A2F138B12B68"><p>Pass the file to the
+constructor of the <xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita"><apiname>CEZGZipToFile</apiname></xref> class. </p> </li>
+<li id="GUID-CB642B02-8A19-5CB9-96E4-80AB7596F6E1"><p> <xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita#GUID-8DE05785-D058-3855-A11F-7132EB4DE078/GUID-4A30D99E-EC51-359F-90B5-9CFA3841A538"><apiname>CEZGZipToFile::InflateL()</apiname></xref> is
+called repeatedly to complete the decompression. </p> </li>
+</ol> <p>The code below depicts how "output.gz" is decompressed to "input.doc". </p> <codeblock id="GUID-01545D8D-CE1F-5903-9558-CE35D4C3067E" xml:space="preserve">/*
+ *  If  input and output file names are not specified then it is assumed that 
+ * the file names are contained in a provided .ini file.
+ */
+void CEZlibEZipTests::DoEZlibGZipInflateL()
+    {
+      RFs iFs;
+  iFS.connect();
+    
+
+    //open output file
+
+_LIT(KOutputFile, "c:\\private\\E80000B7\\zip\\input\\input.doc");
+TFileName outputFile(KOutputFile);
+    RFile output;
+    err = output.Replace(iFs, outputFile, EFileStream | EFileWrite | EFileShareExclusive);
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KCreateFileError);
+        User::Leave(err);
+        }    
+        
+
+//input file
+
+
+_LIT(KInputFileLocation, "c:\\private\\E80000B7\\zip\\input\\output.gz");
+TFileName inputFile(KInputFileLocation);
+
+    CEZGZipToFile *decompressor = CEZGZipToFile::NewLC(iFs, inputFile, output);
+
+        while(decompressor-&gt;InflateL())
+        {        
+        }    
+
+        output.Close();
+    iFS.Close();
+    ;
+    }</codeblock> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C" xml:lang="en"><title>Messaging
+Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of the functionality and the architecture
+of the Messaging Framework collection. </p>
+<section><title>Purpose</title> <p>Messaging Framework allows client applications
+to access the functionality of installed plug-in modules through a common
+interface. This allows client applications to be designed without foreknowledge
+of the message protocols that may later be used. </p> </section>
+<section><title>Architecture</title> <p>In ROM, Messaging Framework consists
+of the Message Server executable <filepath>msexe.exe</filepath> and two framework
+DLLs <filepath>msgs.dll</filepath>, <filepath>mtur.dll</filepath>. At run-time,
+messaging clients use APIs from the framework DLLs to access the framework’s
+functionality. </p> <p>Based on two main concepts explained above, Messaging
+Framework offers the following functionality: </p> <p><b>Functionality to
+manipulate the set of plug-in modules</b> </p> <p>The Message Type Module
+(MTM) architecture allows plug-ins to add support for new message types. All
+interactions with lower-level communication protocols, for example TCP/IP
+or SMS stack, are performed by the plug-in modules. The set of installed plug-in
+modules can be changed by installing a new plug-in or removing an installed
+plug-in. Plug-in modules are identified by their name. Messaging Framework
+requires a new plug-in module to provide registration data such as its name,
+version number and function entry points. For an example of a plug-in registration
+file, see <xref href="GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita">MTM resource
+file</xref>. </p> <p><b>Functionality to store message entries</b> </p> <p>Messaging
+Framework provides the functionality to store message entries, index data,
+a set of streams and binary files. For information, see <xref href="GUID-D099551B-6E99-5210-B44A-693012A29DD1.dita">Types
+of Storage for a Message Entry</xref>. </p> <note>Entries always have index
+data, but they may have an empty set of streams or an empty set of associated
+files. For example, folder entries can be completely described by index data.</note> <p><b>Functionality
+to navigate the tree of message entries</b> </p> <p>Messaging Framework provides
+the tree view of message entries. The tree has a root entry. The children
+of the root entry must be entries of type service. The children of service
+entries must not themselves be entries of type service. A client application
+can begin from the root entry and, by successively finding the children of
+an entry, can traverse the whole entry tree. The initial structure of the
+message entry tree is configured by specifying a list of entries. For information,
+see <xref href="GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita#GUID-8390D842-B8A3-5042-952D-73240DB30D6B/GUID-8E01ADD0-A706-54B2-8159-E65C33274C30">Message
+Store</xref>. </p> <p><b>Interface for Messaging operations</b> </p> <p>Messaging
+Framework provides a tree view of a message consisting of the following component
+parts: subject, body, addressee list and attachments. The addressee list is
+referenced by list indices. Attachments are referenced by reference IDs generated
+by Messaging Framework. </p> <p>Messaging Framework defines a standard set
+of messaging operations that can be performed on messages, such as create,
+save, reply and forward. The behaviour of most standard messaging operations
+is particular to the message type and is therefore provided by the plug-in
+modules. It also provides an interface that enables plug-in modules to support
+additional message type specific operations. </p> <p><b>Interface for user-interface
+operations</b> </p> <p>Messaging Framework enables client applications to
+customise their user interfaces dynamically to access operations provided
+by plug-in modules for particular message types. For example, if a message
+client application has an email entry selected, it can obtain information
+on the menus and icons that it should display from the email plug-in module.
+It can also obtain information on user-interface operations that are suitable
+for use on the selected entry. For example, menu items that do not apply to
+particular entries could be greyed out. </p> <p>The standard user-interface
+operations are: open, close, copy or move from, copy to, move to, create,
+delete, undelete, edit, view, forward and reply. In addition to the standard
+user-interface operations, each plug-in module may support a set of specific
+user-interface operations. </p> <p><b>Utility functionality</b> </p> <p>Messaging
+Framework provides functionality to sort and search for text within rich or
+plain text. For more information, see <xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita">Searching
+and Sorting Messages</xref>. </p> <p> </p> </section>
+<section><title>Description</title> <p>Messaging Framework is built upon the
+concepts of a message entry and a message. </p> <p>A <b>message entry</b> is
+a unit of persistent storage in the framework. The framework stores all user
+messaging data in a tree structure of message entries. Each message entry
+has a type and there are five pre-defined types: root, message, service, folder
+and attachment. The set of entry types is extensible. The concept of a message
+entry is used by the plug-in modules to store their messaging data and may
+be used by client applications to access messaging data. </p> <p>A <b>message</b> is
+mainly used by the messaging clients. By using this concept, the messaging
+clients can perform messaging operations without having to know which plug-in
+module is involved in the actual execution of the operations. For example,
+when using an email protocol a message refers to an email message and the
+messaging operations are executed by an email plug-in. The structure of a
+message is specific to a plug-in. A message may be stored as several message
+entries, or it may be stored as a single message entry. </p> </section>
+<section><title>Components</title> <p>The Messaging Framework collection comprises
+the following components: </p> <ul>
+<li id="GUID-931DA131-2DA8-5514-9312-15730C1F390C"><p><xref href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita">Message
+Server and Store</xref>  </p> </li>
+<li id="GUID-C7700C69-CB15-5177-8EE1-14C27114DFCC"><p><xref href="GUID-E7BB0B0F-FC27-5428-81C0-1AB9CA426571.dita">BIO
+Messaging Framework</xref>  </p> </li>
+<li id="GUID-B139D5EB-1F7F-5950-8F97-77F2E4C69DA4"><p><xref href="GUID-CADAABB4-C957-502E-BA4D-E9614C0D3878.dita"> Scheduled
+Send MTM </xref>  </p> </li>
+<li id="GUID-170867DF-E65A-5779-AA2F-488151931CDE"><p><xref href="GUID-63816E09-46C7-503A-ADA0-E350C7ACF3C4.dita"> SendAs </xref>  </p> </li>
+<li id="GUID-F53CBD73-6AE8-576A-A202-B57AFF08D626"><p><xref href="GUID-4603D4ED-966F-5F70-B991-D10495BC2D7E.dita">Watcher
+Framework</xref>  </p> </li>
+<li id="GUID-1C38FEB0-0ECF-5917-9C32-9153D91D8540"><p> <xref href="GUID-5900DB92-8D4D-5487-8EFE-AB9CEB8BA93B.dita">WAP
+Push Framework</xref> </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-44CF5471-564E-5790-935B-51193A4978D6.dita"><linktext>Message Server
+and Store Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-54D1B7E1-39A5-5BB9-BC33-1047FDE941D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-54D1B7E1-39A5-5BB9-BC33-1047FDE941D9"><title>getln</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>getln [ -AclneE ] name ...</userinput> </p> <p>Read the top value from the buffer stack and put it in the shell parameter <codeph>name</codeph>. Equivalent to <xref href="GUID-1F809632-82B0-5B4C-92DB-9C4D1316AF03.dita">read</xref>  <codeph>-zr</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E"><title>File locations</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Pre-Symbian OS v9.0</title> <p>Application program files must be located in directories with the form <filepath>\system\apps\&lt;program&gt;\</filepath>. Initialisation and configuration files should be in the same directory, or where the application is in ROM, in the equivalent directory on a writable drive. </p> <p>Document files can be located in any directory <i>except</i> <filepath>\system\</filepath>, and may be given any name: the system will not alter the capitalisation of that name, and will not attempt to add or remove any extension. </p> <p>The application architecture does not dictate the requirements for <i>all</i> files, or even all file stores. For instance, an e-mail application is not document based. An e-mail subsystem would store its messages in a directory structure using special e-mail policies to implement inbox, outbox and folders. Normally, this folder would be in a <filepath>\system\</filepath> directory. </p> </section> <section id="GUID-C8E8AB80-4EE5-5593-8981-4A91A0111419"><title>Symbian OS v9.0 and beyond</title> <p>The following table gives the location for different file types. </p> <table id="GUID-9952EBEF-FCBC-585F-A9AD-D1CD2F8088BA"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Location</entry> <entry>Example file types</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><ul><li id="GUID-D669EB04-023C-5224-999D-9EE55E8EA7ED"><p>On the emulator (default): </p> <ul><li id="GUID-BEE962D9-B7DD-5B2B-91B3-125B16E414DC"><p> <filepath>epoc32\release\winscw\udeb\</filepath>  </p> </li> <li id="GUID-52700062-ED55-525D-BC55-A10678FC97E6"><p> <filepath>epoc32\release\winscw\urel\</filepath>  </p> </li> </ul> <p>On the emulator, e.g. for text notifiers: </p> <ul><li id="GUID-851A7FE9-54FE-5FEB-9F38-4B4F32EEDD53"><p> <filepath>\sys\bin\tnotifiers</filepath>  </p> </li> </ul> </li> <li id="GUID-726EA784-F425-5F5D-8837-33AA9244594E"><p>On the device: </p> <p> <filepath>\sys\bin\</filepath>  </p> </li> </ul> </entry> <entry><p> <filepath>.exe</filepath>, <filepath>.app</filepath>, </p> <p> <filepath>.dll</filepath>, <filepath>.ani</filepath>, </p> <p> <filepath>.ctl</filepath>, <filepath>.fep</filepath>, </p> <p> <filepath>.mdl</filepath>, <filepath>.csy</filepath>, </p> <p> <filepath>.ldd</filepath>, <filepath>.pdd</filepath>, </p> <p> <filepath>.prt</filepath>, </p> <p> <filepath>.ECOMIIC</filepath>, <filepath>.PLUGIN</filepath>  </p> </entry> <entry><ul><li id="GUID-2C766E8B-EB9E-5BA5-9E86-B69D1412E3AD"><p>Location of all binaries </p> </li> <li id="GUID-8443D832-175E-52DD-A190-2E4F0F86C02E"><p>The OS will refuse to load any binary not in <filepath>\sys\bin\</filepath>  </p> </li> <li id="GUID-6EF741B8-BA5E-592B-88AD-D74C18556797"><p>Code without <codeph>AllFiles</codeph> (or <codeph>TCB</codeph>) capability will never be able to read (or write) anything under <filepath>\sys\</filepath>  </p> </li> <li id="GUID-139E6964-311A-5B28-93A2-DABE9F176D1E"><p>Note that for the emulator when <codeph>PlatSecEnforceSysBin</codeph> is enabled (in the <filepath>epoc.ini</filepath> file) executables found under <filepath>\system</filepath> will not be able to be loaded </p> </li> </ul> </entry> </row> <row><entry><p> <filepath>\private\&lt;process SID&gt;\</filepath>  </p> </entry> <entry><p> <filepath>.doc</filepath>, <filepath>.txt</filepath>, </p> <p> <filepath>.xml</filepath>, <filepath>.dat</filepath>, </p> <p> <filepath>.ini</filepath>, <filepath>.mbm</filepath>, </p> <p> <filepath>.rsc</filepath>  </p> </entry> <entry><ul><li id="GUID-D3532BB0-FA8A-543F-90D2-FAF3A60D59FB"><p>Location of all private data files (e.g. if the file is to be accessed only by the application itself) </p> </li> <li id="GUID-9EC27287-26DC-5A60-AAB8-66CB9B542A3B"><p>The directory name under <filepath>\private</filepath> is determined by the SecureId (SID) of the process. If a SID is not specified, the <codeph>UID3</codeph> provided in the mmp file is used </p> </li> <li id="GUID-4FFFABBD-F07E-5B02-932D-2CC014EED451"><p>Under the <filepath>\private</filepath> directory, programs without the <codeph>AllFiles</codeph> capability will only ever be able to see their own directory </p> </li> </ul> </entry> </row> <row><entry><ul><li id="GUID-7FB0FDE3-CED7-5288-903C-9F4FE929B6FF"><p>Applications on the emulator, or built into the ROM must provide registration files in: </p> <ul><li id="GUID-E684117A-273C-51A9-958E-E08446B8F454"><p> <filepath>\private\10003a3f\apps\</filepath>  </p> </li> </ul> </li> <li id="GUID-CBDD2344-0C22-5D27-B4C3-B14AC92ECF12"><p>Applications installed via Software Install must provide registration files in: </p> <ul><li id="GUID-C2EFCAC2-2E85-5A61-BD77-B19F0BDE095F"><p> <filepath>\private\10003a3f\import\apps\</filepath>  </p> </li> </ul> </li> </ul> </entry> <entry><p> <filepath>&lt;appname&gt;_reg.rsc</filepath>  </p> </entry> <entry><ul><li id="GUID-44FA136E-CE01-55C1-AAE9-0B0C927A57FB"><p>The private system directory for an application's registration file </p> </li> <li id="GUID-2EF36F6C-2367-5407-AEEC-6B10D7F17CF7"><p>The directory must always be on the same drive as the application </p> </li> <li id="GUID-7138A905-C1D6-51AA-BFD1-8679D7157A35"><p>These paths are true for both the emulator and target device </p> </li> </ul> </entry> </row> <row><entry><p> <filepath>\resource\apps\</filepath>  </p> </entry> <entry><p> <filepath>.rsc</filepath>, <filepath>.mbm</filepath>  </p> </entry> <entry><ul><li id="GUID-13F15A62-D5EF-5473-B0FA-27000004212B"><p>Read access is allowed by all </p> </li> <li id="GUID-39C994D8-602B-5CD2-B68D-D9573CA3141D"><p>Write access only by processes with <codeph>AllFiles</codeph> capability </p> </li> </ul> </entry> </row> <row><entry><p> <filepath>\resource\plugins\</filepath>  </p> </entry> <entry><p> <filepath>&lt;dllname&gt;.rsc</filepath>  </p> </entry> <entry><ul><li id="GUID-58281D7D-4298-5C5E-9CAC-308B83DCF71F"><p>Specifically for ECom registration resource files for ECom plugins </p> </li> <li id="GUID-2C520ACF-9572-5041-A725-17431171455A"><p>Read access is allowed by all </p> </li> </ul> </entry> </row> <row><entry><p>Central Repository API </p> <p> <filepath>\private\&lt;process sid&gt;\</filepath>  </p> </entry> <entry><p> <filepath>.txt</filepath>  </p> </entry> <entry><ul><li id="GUID-8524D37A-8F26-55A4-91D1-D8C09C3ADFF8"><p>If the file is read/write-only, and access to it needs controlling through capabilities, then use the Central Repository API, not a file at all. </p> </li> </ul> </entry> </row> </tbody> </tgroup> </table> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D"><title>Bitmap Devices and Contexts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The BitGDI API provides extensions for bitmap devices of the abstract drawing device and context interfaces defined in the GDI API. The key interfaces defined by it, used for drawing on the screen, are in fact abstract. The Window Server provides concrete classes for on-screen drawing which derive from these interfaces. The concrete device and context classes that the API does provide are normally only used by applications to draw to in-memory bitmaps. </p> <section><title>Bitmap graphics context</title> <p> <xref href="GUID-FC746873-0570-3900-AD89-42B205FDC0D3.dita"><apiname>CBitmapContext</apiname></xref> specializes a GDI context (<xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref>) for bitmap graphics. It provides extra functionality for: </p> <ul><li id="GUID-CA567C8D-75A2-5541-AB6D-44B3FA2829CF"><p>clearing and copying rectangular areas </p> </li> <li id="GUID-79354D71-D97C-5DB6-89B1-25DCC7D6B9A6"><p>bitmap block transfer </p> </li> <li id="GUID-07452A62-0F2A-54BF-AEC2-D7A27143B917"><p>setting pen color to a grey level </p> </li> <li id="GUID-2F47B9C7-57B4-5B21-9A57-1553D1515819"><p>setting the shadow mode </p> </li> <li id="GUID-10B7AF69-1D9D-557C-95BF-BE619E524C73"><p>resetting the GC settings to their default values </p> </li> </ul> <p>The Window Server client-side API provides one implementation, <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>, used for screen drawing. Another implementation, <xref href="GUID-4A501086-7EFF-376D-8901-6D9B2EB4EFF2.dita"><apiname>CFbsBitGc</apiname></xref>, is used for drawing to in-memory bitmaps. </p> <fig id="GUID-BD3D2320-242C-5319-8AF2-358001AC0D71"><image href="GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e180021_href.png" placement="inline"/></fig> </section> <section><title>Bitmap graphics device</title> <p> <codeph>CBitmapDevice</codeph> specializes a graphics device (<xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref>) for bitmap graphics. </p> <p>The Window Server client-side API provides one implementation, <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref>, for screen drawing. Another implementation, <xref href="GUID-71D27EBD-26B8-3D51-9798-1EAD461BCBCF.dita"><apiname>CFbsBitmapDevice</apiname></xref>, is used for drawing to in-memory bitmaps. A third, <xref href="GUID-B229156F-2344-3F46-8542-AC65882D80DE.dita"><apiname>CFbsScreenDevice</apiname></xref>, is used (rarely) to access the screen directly, without the mediation of the window server. </p> <fig id="GUID-79B68A26-59CC-5915-AB2D-90338FBF1E9B"><image href="GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e180054_href.png" placement="inline"/></fig> </section> <section><title>Screen driver information</title> <p>The screen width and height must be a multiple of four. In certain cases where the screen mode would result in a scanline (the scanline runs in the current horizontal direction of the screen) not being divisible by a whole word (32 bits) the screen width must also be a multiple of 16. This restriction will also apply to the height if there is a screen-size mode with a rotation of 90 or 270 (or both) </p> <p>For example, the screen mode <codeph>EGray4</codeph> is 2 bits per pixel, therefore one word would be 16 pixels, so in order for the scanline to be a whole number of words the width must be a multiple of 16. </p> <p>The vertical height is unrestricted unless there is at least one screen-size mode with a rotation of 90 or 270 (or both). </p> </section> </conbody><related-links><link href="GUID-75B0B7C7-37B7-57D1-8EAA-8303A915A9DD.dita"><linktext>Bitmaps</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e168668_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90"><title>pageddata</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>pageddata </codeph>  </p> <p>Use the <codeph>pageddata</codeph> statement to specify that the data in the executable is paged. This controls the paging of both heap and stacks for an executable. For more fine-grained control, the paging of heap and stack data can be specified separately during the creation of new threads and processes. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55165C57-0F32-5363-A2EC-E37B5B36B6E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-55165C57-0F32-5363-A2EC-E37B5B36B6E1"><title>How to set up the text view</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following code constructs a text view, first allocating and constructing all its parameters.</p> <ul><li id="GUID-22D4A0CA-4DEC-59DD-8883-1DC6EA59B23A"><p>Before constructing the <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref>  <keyword>text view</keyword> object, first construct a <xref href="GUID-101762DC-E498-3325-88AB-B0FF17DC62B6.dita"><apiname>TRect</apiname></xref>  <keyword>view rectangle</keyword>, then the <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> <keyword>layout object</keyword> to be used by the view. </p> <p>Call the <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-DEF7DBC5-5EBA-3A63-8A77-12F308CBF95E"><apiname>CCoeControl::Rect()</apiname></xref> function to construct the view rectangle.</p> </li> <li id="GUID-FE25259A-49E3-5105-AC0A-A3E0CB175303"><p>The following must also be provided:</p> <ul><li id="GUID-CC291486-D789-5188-806D-9F09A9B4637B"><p>A graphics device map for mapping between the physical co-ordinates of the screen or page being drawn to (measured in twips) and the device specific co-ordinates (measured in pixels). Use the <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-6586DB74-AF5C-330B-9D0A-E4637396A04E"><apiname>CCoeControl::SystemGc()</apiname></xref> function to get the graphics context </p> </li> <li id="GUID-E2CB4365-4805-5231-9372-16A7F3A14621"><p>a window group for the text view. If a window group is not provided, no cursors can be displayed in the document.</p> </li> </ul> </li> </ul> <p>The <keyword>view rectangle</keyword> is the rectangle in which all text, cursors and labels will be displayed. It resides within the <keyword>view window</keyword> and can be smaller than it.</p> <codeblock id="GUID-E2F50CD6-E170-5410-97C6-911A8C9ED10A" xml:space="preserve">TRect iViewRect; // rectangle in which to view text
+CTextLayout* iLayout; // text layout
+CTextView* iTextView; // text view
+CRichText* iRichText; // rich text document
+// prerequisites for view - viewing rectangle
+iViewRect=Rect(); // Construct view rectangle
+// layout
+iLayout=CTextLayout::NewL(iRichText,iViewRect.Width()); 
+        // construct layout, giving width of view rectangle
+// context and device
+CWindowGc&amp; gc=SystemGc(); // get graphics context
+CBitmapDevice* device=(CBitmapDevice*) (gc.Device()); // device
+// text view
+iTextView=CTextView::NewL(iLayout, iViewRect,
+        device,
+        device,
+        &amp;Window(),
+        &amp;iCoeEnv-&gt;RootWin(), // window group, needed for cursor
+        &amp;iCoeEnv-&gt;WsSession()
+        ); // new view</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5544728C-A53D-57F0-B8D8-F7B694C8B5CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5544728C-A53D-57F0-B8D8-F7B694C8B5CA" xml:lang="en"><title>DBMS incremental operations</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e317348_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5578DF32-65ED-47F9-8A10-7538206AC473.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-5578DF32-65ED-47F9-8A10-7538206AC473" xml:lang="en"><title>Resources</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Using a dialog as the main view
+will usually require use of the entire available client rectangle. It will
+also often be a multipage dialog.</p>
+<p>The following example has both of these features:</p>
+<codeblock xml:space="preserve" id="GUID-C38317BE-DFC8-415C-B076-E94136067554">RESOURCE DIALOG r_dlgapp_main_dialog
+    {
+    flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
+            EEikDialogFlagFillAppClientRect |
+            EEikDialogFlagCbaButtons |
+            EEikDialogFlagModeless;
+    buttons = r_dlgapp_softkeys_options_home;
+    pages = r_dlgapp_main_pages;
+    }
+</codeblock>
+<p>The modality of the dialog is set to modeless with the EEikDialogFlagModeless flag.
+Further flags are set to fill the client rectangle, suppress the status pane,
+and use the <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA</xref> buttons
+(softkeys).</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A" xml:lang="en"><title> MakeKeys
+Reference</title><shortdesc>The <b>MakeKeys</b> tool creates private key-public key pair and
+certificate requests. MakeKeys can be run from an MSDOS command prompt or
+as a batch file.</shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title><p><userinput>makekeys <parmname>[OPTIONS]</parmname> &lt;<cmdname>ARGS&gt;</cmdname> </userinput> </p> <p>The
+following table lists the options supported by MakeKeys: </p> <table id="GUID-CB7A8241-4FDD-53B8-A4C1-5314FBB6F38B">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Option </entry>
+<entry>Description</entry>
+<entry>Usage</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-cert</varname>  </p> </entry>
+<entry><p>Creates a private key (<codeph>private-key-file</codeph>) and self-signed
+certificate (<codeph>public-key-cert</codeph>). </p> <p>If the private key
+file exists, it is used to create the self-signed certificate. </p> </entry>
+<entry><p><userinput>makekeys -cert [-v] [-expdays &lt;cert-expiry-in-days&gt;]
+[-password &lt;password&gt;] [-len &lt;key-length&gt;] -dname &lt;distinguished-name-string&gt;
+&lt;private-key-file&gt; &lt;public-key-cert&gt;</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-req</varname>  </p> </entry>
+<entry><p>Creates a certificate request. </p> </entry>
+<entry><p><userinput>makekeys -req [-v] [-password &lt;password&gt;] -dname &lt;distinguished-name-string&gt;
+&lt;private-key-file&gt; &lt;public-key-cert&gt; &lt;cert-request-file&gt;</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-view </varname>  </p> </entry>
+<entry><p>Displays details of a certificate or certificate chain file. </p> </entry>
+<entry><p><userinput>makekeys -view &lt;public-key-cert&gt;</userinput> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table lists the arguments to be provided: </p> <table id="GUID-9938212F-0CAC-5CA6-9AD8-E0593A84C5DB">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Arguments</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-v</varname>  </p> </entry>
+<entry><p>Displays verbose output. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-I</varname>  </p> </entry>
+<entry><p>Displays OpenSSL license information. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-expdays</varname> <varname>cert-expiry-in-days</varname>  </p> </entry>
+<entry><p>Displays certificate validity period in days after which the certificate
+expires. </p> <p>If not specified, the default is 1 year. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-dname</varname> <varname>distinguished-name-string</varname>  </p> </entry>
+<entry><p>Specifies the distinguished name attributes required for the self-signed
+public key certificate file. This command-line option can be constructed using
+a string of white-space separated key-value pairs as follows: </p> <p><table id="GUID-E99033C4-BB13-5569-8ECD-361FF8F57C11">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Key</entry>
+<entry>Attribute</entry>
+<entry>Example</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>CN</codeph>  </p> </entry>
+<entry><p>Common Name </p> </entry>
+<entry><p> <codeph>CN=Joe Bloggs</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>OU</codeph>  </p> </entry>
+<entry><p>Organisational Unit </p> </entry>
+<entry><p> <codeph>OU=Development</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>O</codeph>  </p> </entry>
+<entry><p>Organisation </p> </entry>
+<entry><p> <codeph>O=Symbian Foundation</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>L</codeph>  </p> </entry>
+<entry><p>Locality </p> </entry>
+<entry><p> <codeph>L=</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ST</codeph>  </p> </entry>
+<entry><p>State </p> </entry>
+<entry><p> <codeph>ST=</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>C</codeph>  </p> </entry>
+<entry><p>Country </p> </entry>
+<entry><p> <codeph>C=GB</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EM</codeph>  </p> </entry>
+<entry><p>E-mail address </p> </entry>
+<entry><p> <codeph>EM=noone@nowhere.com</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </p> <p>A distinguished name string needs at least two attributes. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-password</varname>  <varname>password</varname>  </p> </entry>
+<entry><p>Specifies the password for private key. After creating private key-public
+key pair, a password must be provided to subsequently use the private key. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-len</varname>  <varname>key-length</varname>  </p> </entry>
+<entry><p>Specifies the length of the key. </p> <p>The minimum key length
+is 512, maximum is 4096. The default key-length is 1024. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>private-key-file</varname>  </p> </entry>
+<entry><p>The file containing the private key. The private key must be kept
+secret by the Symbian developer. </p> <p>Has a <filepath>.key</filepath> extension. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>public-key-cert</varname>  </p> </entry>
+<entry><p>A self-signed certificate containing the public key. </p> <p>Has
+a <filepath>.cer</filepath> extension. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>cert-request-file</varname>  </p> </entry>
+<entry><p>A self-contained file which is sent to the Certification Authority
+(CA) for signing. The MakeKeys tool creates this file given a private and
+public key. It is then up to the Symbian developer to send the file to the
+CA and arrange for the application for the certificate. </p> <p>Has a <filepath>.p10</filepath> extension. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </refsyn>
+</refbody><related-links>
+<link href="GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita"><linktext>MakeKeys
+Overview</linktext></link>
+<link href="GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita"><linktext>MakeKeys
+Tutorial</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5580195F-3DE7-55FA-B2C1-91A950A39C6E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5580195F-3DE7-55FA-B2C1-91A950A39C6E" xml:lang="en"><title>Nodes
+in Symbian Platform</title><shortdesc>This topic describes the basic concept of a <i>Node</i> in Symbian
+platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p>The Communications Framework is modular and can adapt to changes in the
+networks that are available. The Communications Framework can also adapt to
+changes in technology. The modular design is described as a <i>Distributed
+Object Model</i>. Nodes are the components of a Distributed Object Model. </p>
+<p>A Distributed Object Model describes a system of entities or <i>Nodes</i> that
+can exist in different run contexts. The Nodes can exchange asynchronous messages.
+In Symbian platform, the concept of different run contexts refers to separate
+threads and separate processes. The scope of a Node is limited to a device.
+A Node cannot exist on a separate device. </p>
+<p>Symbian platform provides the Distributed Object Model framework that the
+Communications Architecture uses. The Distributed Object Model framework is
+a general purpose tool that other software entities can also use. </p>
+<p>A Node is an object that has an interface and an address. A Node uses messages
+to communicate with other Nodes. Some types of Node can use direct function
+calls to communicate if speed is important. Symbian platform defines the interface
+to a Node as the sequence of messages that the Node knows and to which the
+Node responds. </p>
+<p>A Node is an instance of a class derived from <xref href="GUID-3462501E-FDE1-3F3C-B26D-7FF3C826311F.dita"><apiname>ANodeBase</apiname></xref>. </p>
+<p>A parent Node is responsible for the destruction of its child Nodes. A
+parent Node can pass a reference to a child Node to other Nodes and implements
+the concept of containment. </p>
+<p>Nodes have <i>Roles</i>. A Role : </p>
+<ul>
+<li id="GUID-FCAA95EC-73CE-55D6-958F-4489069915D9"><p>identifies a service
+that the Node provides </p> </li>
+<li id="GUID-D9A10365-54BC-5F28-A081-FBB9963FCA38"><p>describes the series
+of messages that a Node sends and receives as part of a service </p> </li>
+</ul>
+<p>A Node can have more than one role. Examples of roles are as follows: </p>
+<ul>
+<li id="GUID-76207994-4326-5CB1-BE14-F20037A9B0BE"><p>a Node can accept requests
+to connect to another Node. </p> </li>
+<li id="GUID-3F4B59F6-12DD-5381-ACE9-DD021F41BF66"><p>a Node can own other
+Nodes. This is the concept of the <i>parent</i> Node. </p> </li>
+<li id="GUID-1B92A012-72B4-5DAC-9F15-D7FB802E2625"><p>A Node can be owned
+by another Node. This is the concept of the <i>child</i> Node. </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5592E9C1-D490-538F-9B11-5EFB72DEDBE2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5592E9C1-D490-538F-9B11-5EFB72DEDBE2" xml:lang="en"><title>File
+based dictionary store</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><codeph>CDictionaryFileStore</codeph> is a concrete implementation of a
+dictionary store and uses a file store in its implementation.</p>
+<p>Although the need for a file based dictionary store is driven by the application
+architecture, the following code fragments illustrate the way this store can
+be used.</p>
+<p>The code fragments shown here create and read a file based dictionary store.
+This dictionary store is differentiated from other dictionary stores by the
+UID whose value is <codeph>0x0001</codeph>.</p>
+<p>It should be noted that the values assigned to the UIDs are purely <i>arbitrary</i> and
+are used for <i>illustrative purposes only</i>.</p>
+<section><title>Creating the dictionary store</title> <p>This code fragment
+constructs an object of type <codeph>TClass</codeph> and stores it in the
+dictionary store, associating the stream with the UID whose value is 0x0002.</p> <p>Note
+that a dictionary write stream is needed to write streams to a dictionary
+store.</p> <codeblock id="GUID-AF74B440-E5A9-5A47-84E1-09E2243BB911" xml:space="preserve">_LIT(KFileName,"C:\\data\\stdict.dat");
+_LIT(KTxtData,"Text type data"):
+TParse dictionaryname;
+...
+fsSession.Parse(KFileName,dictionaryname);
+... 
+           // Open the dictionary store (create if it doesn't exist)
+CDictionaryStore* dictstore = CDictionaryFileStore::OpenLC (fsSession, dictionaryname.FullName(),TUid::Uid(0x0001) );
+
+           // Construct a TClass and put some data into it
+TClass thedata;
+thedata.iFixBuf    = KTxtData;
+thedata.iUintValue = 1;
+thedata.iIntValue  = -2; 
+thedata.iRealValue = 3.4;
+
+           // construct the dictionary write stream and
+           // associate the stream with the UID
+           // whose value is 0x0002
+RDictionaryWriteStream out;
+out.AssignLC(*dictstore,TUid::Uid(0x0002));
+
+           // write the TClass data to the stream
+out &lt;&lt; thedata;
+ 
+           // Commit changes to the stream
+out.CommitL(); 
+
+           // Cleanup the dictionary stream object
+CleanupStack::PopAndDestroy();
+
+           // Now commit all changes to the store
+dictstore-&gt;CommitL();
+
+           // Close the dictionary store (closes the
+           // associated file and destroys the 
+           // dictionary store object)
+CleanupStack::PopAndDestroy(); </codeblock> </section>
+<section><title>Reopening the dictionary store</title><p>This code fragment
+re-opens the dictionary store and restores the
+&lt;code&gt;TClass&lt;/code&gt; object from the stream associated with the UID whose
+value  is &lt;code&gt;0x0002&lt;/code&gt;
+</p><codeph>0x0002</codeph><codeblock xml:space="preserve">_LIT(KFileName,"C:\\data\\stdict.dat");
+TParse dictionaryname;
+...
+fsSession.Parse(KFileName,dictionaryname);
+...
+           // Open the dictionary store 
+CDictionaryStore* dictstore=CDictionaryFileStore::OpenLC(fsSession, dictionaryname.FullName(), TUid::Uid(0x0001) );
+
+           // construct the dictionary read stream.
+           // Prepare to read the stream associated with
+           // the unique identifier whose value is 0x0002
+RDictionaryReadStream in;
+in.OpenLC(*dictstore,TUid::Uid(0x0002));
+
+            // Construct a TClass object ...
+TClass thedata;
+
+            // ... and read data from the stream
+in &gt;&gt; thedata;
+
+            // Cleanup the dictionary stream object
+            // and ...
+            // Close the dictionary store
+            // (closes the associated file and destroys the
+            // dictionary store object)
+CleanupStack::PopAndDestroy(2);
+</codeblock> </section>
+<section><title>See also</title> <p><xref href="GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita">Dictionary
+stores</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e62601_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55A1A47A-A7DD-5B1A-88E1-4818CB65B782.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-55A1A47A-A7DD-5B1A-88E1-4818CB65B782" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55A6DA94-FAE6-442D-BBA8-82F92D4C63F2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-55A6DA94-FAE6-442D-BBA8-82F92D4C63F2" xml:lang="en"><title>Creating
+a Private Key and Self Signed Certificate</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps-unordered>
+<step id="GUID-548F2317-948F-491D-BED4-1D83D6DF0520"><cmd>Run MakeKeys at
+the command prompt using the <codeph>-cert</codeph> option. </cmd>
+<info><p>The following is the syntax: </p><codeblock xml:space="preserve">&gt; makekeys -cert [-v] [-expdays &lt;cert-expiry-in-days&gt;] [-password &lt;password&gt;] [-len &lt;key-length&gt;] -dname &lt;distinguished-name-string&gt; &lt;private-key-file&gt; &lt;public-key-cert&gt;</codeblock><note type="important"> Specify a name for the output private key file with
+.key extension and output self-signed certificate file with .cer extension.
+ </note></info>
+<stepxmp><p>For example, </p><codeblock xml:space="preserve">&gt; makekeys -cert -expdays 3650 -password yourpassword -len 2048 -dname "CN=Symbian Foundation Developer O=Symbian Foundation C=GB" HelloWorld.key HelloWorld.cer
+</codeblock><p>Here, </p><ul>
+<li><p><codeph>HelloWorld.key</codeph> is the name of the output private key
+file that must be kept secret </p></li>
+<li><p><codeph>HelloWorld.cer</codeph> is the name of the output self-signed
+public key certificate that can be used to verify the digital signature.  </p></li>
+</ul></stepxmp>
+<info><p>See<xref href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita">MakeKeys
+Reference</xref> for more information on the options and arguments that can
+be provided with the MakeKeys tool.  </p></info>
+</step>
+</steps-unordered>
+<postreq><p>The self-signed certificate can be included in installation files
+and used to verify the digital signature with a matching private key. However,
+secure installation requires that the certificate containing the public key
+be digitally signed by a trusted third party. Therefore, a certificate
+request must be sent to the Certification Authority (CA) for signing. See <xref href="GUID-1747534D-063A-45B0-8636-E7767F984BB0.dita">Generating a Certificate
+Request</xref> for details about creating a certificate request.</p></postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6"><title>Creating a Format Encode Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Format encode plugin implementations derive from the <xref href="GUID-9CD77063-1956-3EA9-9A82-17FDD6497CC7.dita"><apiname>CMMFFormatEncode</apiname></xref> abstract class and several of the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> mixin functions. </p> <ul><li id="GUID-6F97121E-70BB-5C61-B86F-61827E26CEC1"><p><xref href="GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6.dita#GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6/GUID-F6F5CD38-3077-57BF-9038-8202EA96CBF3">CMMFFormatEncode Implementation</xref> </p> </li> <li id="GUID-63DE137B-80BE-5ED1-B975-AE7FFD760832"><p><xref href="GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6.dita#GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6/GUID-C9BF88E1-3D44-55B9-B226-184468B8E809">Format Encode MDataSource and MDataSink Implementation</xref> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1" xml:lang="en"><title>CameraExample:
+Capturing and controlling the images using Camera</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-737B3B28-3FB0-5A2B-B451-C6B0001F24DE-GENID-1-6-1-17-1-1-4-1-5-1-2-1"><title>Description</title> <p>This
+example is a GUI application and has the standard classes required by any
+application using UI controls such as an application, a document, an application
+UI and a view. It provides UI controls such as power on, power off, viewfinder
+required to capture and control the images. </p> <p> <b>Note:</b> To run the
+example, you must have a plug-in that supports the Camera implementation.
+Symbian does not provide any such implementation. </p> <p>The example demonstrates
+the following key features: </p> <ul>
+<li id="GUID-091D17C6-4C79-5F4B-ABE1-830F5619EA09-GENID-1-6-1-17-1-1-4-1-5-1-2-1-5-1"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita#GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1/GUID-A324BFE2-B946-54A1-A09E-AC5C8E1DDFE1-GENID-1-6-1-17-1-1-4-1-5-1-2-1-6">Control settings</xref>  </p> </li>
+<li id="GUID-2FB651D5-8749-5DD8-8BAF-1A9FFC8F5DB4-GENID-1-6-1-17-1-1-4-1-5-1-2-1-5-2"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita#GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1/GUID-7F7A8058-D3AC-5FEA-B82F-81BEF89DB54B-GENID-1-6-1-17-1-1-4-1-5-1-2-1-9">Basic settings</xref>  </p> </li>
+<li id="GUID-14204727-4F8A-5CA0-AC77-4A0504E0256E-GENID-1-6-1-17-1-1-4-1-5-1-2-1-5-3"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita#GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1/GUID-D1C48642-0624-57F0-9AE4-D2A409F63870-GENID-1-6-1-17-1-1-4-1-5-1-2-1-11">Advanced settings</xref>  </p> </li>
+</ul> <p id="GUID-A324BFE2-B946-54A1-A09E-AC5C8E1DDFE1-GENID-1-6-1-17-1-1-4-1-5-1-2-1-6"><b>Control settings</b> </p> <p>This
+example demonstrates the following Camera control settings: </p> <ul>
+<li id="GUID-CD56ECE4-35DA-5637-A24D-7AC62AE44593-GENID-1-6-1-17-1-1-4-1-5-1-2-1-8-1"><p> <b>Reserve:</b> Calls
+the asynchronous <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-3AA43050-7660-32AE-80B5-64A332A45A9E"><apiname>CCamera::Reserve()</apiname></xref> function to initialise
+and reserve the camera for exclusive use. Calls the <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita#GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853/GUID-A663DE12-C63B-31C5-9B54-E4DE9C8C538F"><apiname>MCameraObserver::ReserveComplete()</apiname></xref> when
+initialisation is complete. </p> </li>
+<li id="GUID-0B9EECF7-A7E4-52B0-AA28-9711508D89F0-GENID-1-6-1-17-1-1-4-1-5-1-2-1-8-2"><p> <b>Power on:</b> Calls
+asynchronous the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-646B4F4B-7A2F-371B-A05A-2B69B9CE9409"><apiname>CCameraAppUi::PowerOn()</apiname></xref> function to switch
+on the power of the camera. You must have successfully called the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-3AA43050-7660-32AE-80B5-64A332A45A9E"><apiname>CCamera::Reserve()</apiname></xref> prior
+to calling this function. Calls the <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita#GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853/GUID-F6F56654-FA74-3B2B-8098-954E7BF56DBB"><apiname>MCameraObserver::PowerOnComplete()</apiname></xref> when
+power on is complete. </p> </li>
+<li id="GUID-19A1B274-D971-53B7-88A4-5B49190F70F0-GENID-1-6-1-17-1-1-4-1-5-1-2-1-8-3"><p> <b>Viewfinder:</b> Calls
+the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-07462599-A4DC-3F19-88BA-90C2273FC1C2"><apiname>CCameraAppUi::StartViewFinderL()</apiname></xref> function to transfer
+the viewfinder data to the given portion of the screen using Direct Screen
+Access. To stop the transfer of the data, the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-F56E8370-541C-3D53-AD18-D74C915ACC30"><apiname>CCameraAppUi::StopViewFinder()</apiname></xref> function
+is called. </p> </li>
+<li id="GUID-C239097A-218E-50EC-B8C9-01D6568F5577-GENID-1-6-1-17-1-1-4-1-5-1-2-1-8-4"><p> <b>Capture image:</b> Gets
+the image size for the index passed by calling the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4248DD3D-17D9-3EBE-92F9-4FD365AE027E"><apiname>CCamera::EnumerateCaptureSizes()</apiname></xref> function.
+The image details such as image format and the size index are passed to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7BACBBAA-88D8-3DF1-8ED2-3A389A3B223C"><apiname>CCamera::PrepareImageCaptureL()</apiname></xref> function
+to allocate the memory for the image to be captured. Then, a call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-0536FECC-1BD8-3726-8BBE-B1231739F23E"><apiname>CCamera::CaptureImage()</apiname></xref> captures
+the image. </p> </li>
+<li id="GUID-4EE3265C-AADA-5D5F-9937-519F87532051-GENID-1-6-1-17-1-1-4-1-5-1-2-1-8-5"><p> <b>Capture Video:</b> Gets
+the video frame size and video frame rate for the index passed by calling
+the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-C52FB21D-60EE-3202-BB50-ABDF4CDF3DB4"><apiname>CCamera::EnumerateVideoFrameSizes()</apiname></xref> function and the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-F3C6E294-1EF2-3BB4-B1FC-87194DA1D6CA"><apiname>CCamera::EnumerateVideoFrameRates()</apiname></xref> functions
+respectively. The video details such as frame sizes and frame rate index are
+passed to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-12494A9A-D9DE-30F3-B59D-266772507BF2"><apiname>CCamera::PrepareVideoCaptureL ()</apiname></xref> function
+to allocate the memory for the video to be captured. Then, a call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8743EF65-BE30-3B98-8B35-8BE1A64E93F3"><apiname>CCamera::StartVideoCapture()</apiname></xref> starts
+capturing the video and a call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E1CC7187-B07C-3584-A10C-24366FB4B203"><apiname>CCamera::StopVideoCapture()</apiname></xref> stops
+capturing the video. </p> </li>
+<li id="GUID-35D08B01-12D1-54AE-90EA-447BC072E66E-GENID-1-6-1-17-1-1-4-1-5-1-2-1-8-6"><p> <b>Power off:</b> Calls
+the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-2C391669-BBD5-3BB4-B487-C437FE012ED3"><apiname>CCameraAppUi::PowerOff()</apiname></xref> function to synchronously
+switch off the camera power. </p> </li>
+</ul> <p id="GUID-7F7A8058-D3AC-5FEA-B82F-81BEF89DB54B-GENID-1-6-1-17-1-1-4-1-5-1-2-1-9"><b> Basic settings</b> </p> <p>For
+controlling the brightness and the contrast of the device, calls to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-F8C3D786-2452-3702-A55D-170EAB5CA27E"><apiname>CCamera::Brightness()</apiname></xref> and
+the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-119A8C75-FDB7-3DA0-859E-2DE49D8C0CB2"><apiname>CCamera::Contrast()</apiname></xref> functions are made. Increment and
+decrement factors are separately passed to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-22722C7A-229A-3BD5-8639-D4A6450B26E1"><apiname>CCamera::SetBrightnessL()</apiname></xref> and
+the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8F8DE11C-4350-3010-8B28-A635C82E4214"><apiname>CCamera::SetContrastL()</apiname></xref> functions to increase and decrease
+the brightness and contrast respectively. Similarly, you can control other
+features like flash and exposure time of the device. </p> <p id="GUID-D1C48642-0624-57F0-9AE4-D2A409F63870-GENID-1-6-1-17-1-1-4-1-5-1-2-1-11"><b>Advanced
+settings</b> </p> <p>Advanced settings, such as, capturing a snapshot and
+presets need to have the corresponding settings object created. This can be
+done by calling the corresponding advanced setting class's <codeph>NewL()</codeph> function
+passing in the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> object to it. For example, to create
+a snapshot object, call the <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-F2BC20F6-4E09-3556-8C3D-E7F60329FFB5"><apiname>CCamera::CCameraSnapshot::NewL(*camera)</apiname></xref> function.
+Use this <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> object to call any of the functions such
+as the <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita#GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF/GUID-2D0B1BCD-DB21-33F7-A223-9C581E746023"><apiname>CCameraAdvancedSettings::SupportedBracketModes()</apiname></xref>,
+the <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-DB5EF834-999A-3726-AAB8-AC3925D6B7F2"><apiname>CCameraSnapshot::StartSnapshot()</apiname></xref>, the <xref href="GUID-02976C21-8B30-3E1C-ADA5-5205AF46408E.dita#GUID-02976C21-8B30-3E1C-ADA5-5205AF46408E/GUID-EB64375C-FB2D-3078-8115-85386BA8B4C5"><apiname>CCameraDirectViewFinder::ResumeViewFinderDirectL()</apiname></xref> and
+the <xref href="GUID-BC0F4399-4DA7-3977-AD17-8415AEBA7317.dita#GUID-BC0F4399-4DA7-3977-AD17-8415AEBA7317/GUID-DB4C212F-FDFE-318F-A740-87FCE427BE09"><apiname>CCameraHistogram::PrepareHistogramL()</apiname></xref> to set the advanced
+features. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-b491ac90-54d1-4183-8004-70ae0725468d.zip" scope="external">CameraExample.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-b491ac90-54d1-4183-8004-70ae0725468d.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera </apiname></xref> <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings </apiname></xref>  <xref href="GUID-02976C21-8B30-3E1C-ADA5-5205AF46408E.dita"><apiname>CCameraDirectViewFinder </apiname></xref>  <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita"><apiname>CCameraSnapshot </apiname></xref> <xref href="GUID-BC0F4399-4DA7-3977-AD17-8415AEBA7317.dita"><apiname>CCameraHistogram </apiname></xref>  <xref href="GUID-75F14618-727C-340C-B34A-ECEEA5F612F9.dita"><apiname>CCameraOverlay </apiname></xref><xref href="GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765.dita"><apiname>CCameraImageProcessing </apiname></xref>  <xref href="GUID-196072A3-9152-3E61-A09D-1BD071D1E908.dita"><apiname>CCameraPresets </apiname></xref><xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2 </apiname></xref>  </p></section>
+<section id="GUID-4B0B8B67-DCF1-5551-9EFF-7D021D0FD9CE-GENID-1-6-1-17-1-1-4-1-5-1-2-4"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian build process</xref> describes
+how to build an application. </p> <p>The CameraExample builds an executable
+called <filepath>cameraexample.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). Either launch the executable itself, or launch the emulator
+and then select the icon CameraExample from the Emulator's extras bar. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1" xml:lang="en"><title>CameraExample:
+Capturing and controlling the images using Camera</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-737B3B28-3FB0-5A2B-B451-C6B0001F24DE-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1"><title>Description</title> <p>This
+example is a GUI application and has the standard classes required by any
+application using UI controls such as an application, a document, an application
+UI and a view. It provides UI controls such as power on, power off, viewfinder
+required to capture and control the images. </p> <p> <b>Note:</b> To run the
+example, you must have a plug-in that supports the Camera implementation.
+Symbian does not provide any such implementation. </p> <p>The example demonstrates
+the following key features: </p> <ul>
+<li id="GUID-091D17C6-4C79-5F4B-ABE1-830F5619EA09-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-5-1"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1.dita#GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1/GUID-A324BFE2-B946-54A1-A09E-AC5C8E1DDFE1-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-6">Control settings</xref>  </p> </li>
+<li id="GUID-2FB651D5-8749-5DD8-8BAF-1A9FFC8F5DB4-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-5-2"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1.dita#GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1/GUID-7F7A8058-D3AC-5FEA-B82F-81BEF89DB54B-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-9">Basic settings</xref>  </p> </li>
+<li id="GUID-14204727-4F8A-5CA0-AC77-4A0504E0256E-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-5-3"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1.dita#GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1/GUID-D1C48642-0624-57F0-9AE4-D2A409F63870-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-11">Advanced settings</xref>  </p> </li>
+</ul> <p id="GUID-A324BFE2-B946-54A1-A09E-AC5C8E1DDFE1-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-6"><b>Control settings</b> </p> <p>This
+example demonstrates the following Camera control settings: </p> <ul>
+<li id="GUID-CD56ECE4-35DA-5637-A24D-7AC62AE44593-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-8-1"><p> <b>Reserve:</b> Calls
+the asynchronous <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-3AA43050-7660-32AE-80B5-64A332A45A9E"><apiname>CCamera::Reserve()</apiname></xref> function to initialise
+and reserve the camera for exclusive use. Calls the <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita#GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853/GUID-A663DE12-C63B-31C5-9B54-E4DE9C8C538F"><apiname>MCameraObserver::ReserveComplete()</apiname></xref> when
+initialisation is complete. </p> </li>
+<li id="GUID-0B9EECF7-A7E4-52B0-AA28-9711508D89F0-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-8-2"><p> <b>Power on:</b> Calls
+asynchronous the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-646B4F4B-7A2F-371B-A05A-2B69B9CE9409"><apiname>CCameraAppUi::PowerOn()</apiname></xref> function to switch
+on the power of the camera. You must have successfully called the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-3AA43050-7660-32AE-80B5-64A332A45A9E"><apiname>CCamera::Reserve()</apiname></xref> prior
+to calling this function. Calls the <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita#GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853/GUID-F6F56654-FA74-3B2B-8098-954E7BF56DBB"><apiname>MCameraObserver::PowerOnComplete()</apiname></xref> when
+power on is complete. </p> </li>
+<li id="GUID-19A1B274-D971-53B7-88A4-5B49190F70F0-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-8-3"><p> <b>Viewfinder:</b> Calls
+the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-07462599-A4DC-3F19-88BA-90C2273FC1C2"><apiname>CCameraAppUi::StartViewFinderL()</apiname></xref> function to transfer
+the viewfinder data to the given portion of the screen using Direct Screen
+Access. To stop the transfer of the data, the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-F56E8370-541C-3D53-AD18-D74C915ACC30"><apiname>CCameraAppUi::StopViewFinder()</apiname></xref> function
+is called. </p> </li>
+<li id="GUID-C239097A-218E-50EC-B8C9-01D6568F5577-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-8-4"><p> <b>Capture image:</b> Gets
+the image size for the index passed by calling the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4248DD3D-17D9-3EBE-92F9-4FD365AE027E"><apiname>CCamera::EnumerateCaptureSizes()</apiname></xref> function.
+The image details such as image format and the size index are passed to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7BACBBAA-88D8-3DF1-8ED2-3A389A3B223C"><apiname>CCamera::PrepareImageCaptureL()</apiname></xref> function
+to allocate the memory for the image to be captured. Then, a call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-0536FECC-1BD8-3726-8BBE-B1231739F23E"><apiname>CCamera::CaptureImage()</apiname></xref> captures
+the image. </p> </li>
+<li id="GUID-4EE3265C-AADA-5D5F-9937-519F87532051-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-8-5"><p> <b>Capture Video:</b> Gets
+the video frame size and video frame rate for the index passed by calling
+the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-C52FB21D-60EE-3202-BB50-ABDF4CDF3DB4"><apiname>CCamera::EnumerateVideoFrameSizes()</apiname></xref> function and the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-F3C6E294-1EF2-3BB4-B1FC-87194DA1D6CA"><apiname>CCamera::EnumerateVideoFrameRates()</apiname></xref> functions
+respectively. The video details such as frame sizes and frame rate index are
+passed to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-12494A9A-D9DE-30F3-B59D-266772507BF2"><apiname>CCamera::PrepareVideoCaptureL ()</apiname></xref> function
+to allocate the memory for the video to be captured. Then, a call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8743EF65-BE30-3B98-8B35-8BE1A64E93F3"><apiname>CCamera::StartVideoCapture()</apiname></xref> starts
+capturing the video and a call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E1CC7187-B07C-3584-A10C-24366FB4B203"><apiname>CCamera::StopVideoCapture()</apiname></xref> stops
+capturing the video. </p> </li>
+<li id="GUID-35D08B01-12D1-54AE-90EA-447BC072E66E-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-8-6"><p> <b>Power off:</b> Calls
+the <xref href="GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2.dita#GUID-52DF368F-96BC-3552-9C9E-FB0A291F9AE2/GUID-2C391669-BBD5-3BB4-B487-C437FE012ED3"><apiname>CCameraAppUi::PowerOff()</apiname></xref> function to synchronously
+switch off the camera power. </p> </li>
+</ul> <p id="GUID-7F7A8058-D3AC-5FEA-B82F-81BEF89DB54B-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-9"><b> Basic settings</b> </p> <p>For
+controlling the brightness and the contrast of the device, calls to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-F8C3D786-2452-3702-A55D-170EAB5CA27E"><apiname>CCamera::Brightness()</apiname></xref> and
+the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-119A8C75-FDB7-3DA0-859E-2DE49D8C0CB2"><apiname>CCamera::Contrast()</apiname></xref> functions are made. Increment and
+decrement factors are separately passed to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-22722C7A-229A-3BD5-8639-D4A6450B26E1"><apiname>CCamera::SetBrightnessL()</apiname></xref> and
+the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8F8DE11C-4350-3010-8B28-A635C82E4214"><apiname>CCamera::SetContrastL()</apiname></xref> functions to increase and decrease
+the brightness and contrast respectively. Similarly, you can control other
+features like flash and exposure time of the device. </p> <p id="GUID-D1C48642-0624-57F0-9AE4-D2A409F63870-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-1-11"><b>Advanced
+settings</b> </p> <p>Advanced settings, such as, capturing a snapshot and
+presets need to have the corresponding settings object created. This can be
+done by calling the corresponding advanced setting class's <codeph>NewL()</codeph> function
+passing in the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> object to it. For example, to create
+a snapshot object, call the <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-F2BC20F6-4E09-3556-8C3D-E7F60329FFB5"><apiname>CCamera::CCameraSnapshot::NewL(*camera)</apiname></xref> function.
+Use this <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> object to call any of the functions such
+as the <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita#GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF/GUID-2D0B1BCD-DB21-33F7-A223-9C581E746023"><apiname>CCameraAdvancedSettings::SupportedBracketModes()</apiname></xref>,
+the <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-DB5EF834-999A-3726-AAB8-AC3925D6B7F2"><apiname>CCameraSnapshot::StartSnapshot()</apiname></xref>, the <xref href="GUID-02976C21-8B30-3E1C-ADA5-5205AF46408E.dita#GUID-02976C21-8B30-3E1C-ADA5-5205AF46408E/GUID-EB64375C-FB2D-3078-8115-85386BA8B4C5"><apiname>CCameraDirectViewFinder::ResumeViewFinderDirectL()</apiname></xref> and
+the <xref href="GUID-BC0F4399-4DA7-3977-AD17-8415AEBA7317.dita#GUID-BC0F4399-4DA7-3977-AD17-8415AEBA7317/GUID-DB4C212F-FDFE-318F-A740-87FCE427BE09"><apiname>CCameraHistogram::PrepareHistogramL()</apiname></xref> to set the advanced
+features. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-b491ac90-54d1-4183-8004-70ae0725468d.zip" scope="external">CameraExample.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-b491ac90-54d1-4183-8004-70ae0725468d.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera </apiname></xref> <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings </apiname></xref>  <xref href="GUID-02976C21-8B30-3E1C-ADA5-5205AF46408E.dita"><apiname>CCameraDirectViewFinder </apiname></xref>  <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita"><apiname>CCameraSnapshot </apiname></xref> <xref href="GUID-BC0F4399-4DA7-3977-AD17-8415AEBA7317.dita"><apiname>CCameraHistogram </apiname></xref>  <xref href="GUID-75F14618-727C-340C-B34A-ECEEA5F612F9.dita"><apiname>CCameraOverlay </apiname></xref><xref href="GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765.dita"><apiname>CCameraImageProcessing </apiname></xref>  <xref href="GUID-196072A3-9152-3E61-A09D-1BD071D1E908.dita"><apiname>CCameraPresets </apiname></xref><xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2 </apiname></xref>  </p></section>
+<section id="GUID-4B0B8B67-DCF1-5551-9EFF-7D021D0FD9CE-GENID-1-6-1-17-1-1-5-1-5-1-4-1-3-1-2-4"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian build process</xref> describes
+how to build an application. </p> <p>The CameraExample builds an executable
+called <filepath>cameraexample.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). Either launch the executable itself, or launch the emulator
+and then select the icon CameraExample from the Emulator's extras bar. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867" xml:lang="en"><title>Drawing to a Graphics Context Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The section provides examples that demonstrate how to use the GDI functions for drawing. </p> <p>The examples assume that graphics context has been obtained in a variable <codeph>gc</codeph>. The usual way to obtain such a context, when drawing to the screen, is by <codeph>CCoeControl::SystemGc()</codeph>. This returns a concrete Window Server graphics context, of type <codeph>CWindowGc</codeph>, which is derived from <codeph>CGraphicsContext</codeph>. </p> </conbody><related-links><link href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita"><linktext>Graphics Device
+  Interface Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13"><title>Overview</title><shortdesc>This topic describes memory management in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>The Communications Framework preallocates memory area buffers to increase the performance of its Data Plane. When a Comms Data Plane component needs a buffer, it asks for one from its pond. The pond contains pools of buffers : each pool contains buffers of a different size, and all the buffers in a pool have the same size. If the pond doesn't have a big enough buffer, it will string together a chain of smaller buffers to meet the request. </p> <p>The Communications Framework uses shared buffers. The Data Plane has strong performance requirements, and using shared buffers helps to avoid the memory copy that occurs between the kernel memory context and the Communications stack. </p> </section> <section id="GUID-9D1B3001-1B30-5CCE-A664-D0EEB53A4A9A"><title>Definitions</title> <dl><dlentry><dt>Comms buffer (MBuf)</dt> <dd><p>A Comms buffer, or MBuf, is a contiguous memory area used to store data on the Data Plane. It is represented by an <xref href="GUID-E0ADB108-D3B2-3670-907D-2AE595BECE3F.dita"><apiname>RMBuf</apiname></xref> object, which combines a shared buffer with metadata. See <xref href="GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita">Shared buffers</xref> and <xref href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita">Comms Buffers (MBuf) and Comms Chains</xref>. </p> <fig id="GUID-6BD84148-1DC7-5FAD-A150-6FE4832A9420"><title>
+                  Comms buffer 
+                </title> <image href="GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e92200_href.png" placement="inline"/></fig> </dd> </dlentry> <dlentry><dt>Comms buffer chain</dt> <dd><p>A Comms buffer chain links together one or more Comms buffers. This decreases memory consumption because there is no need to reserve space for temporary large buffers, which can be created from a chain of smaller buffers. The chain is represented by a <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita"><apiname>RMBufChain</apiname></xref> object. For more information, see <xref href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita">Comms Buffers (MBuf) and Comms Chains</xref>. </p> </dd> </dlentry> <dlentry><dt>Pool</dt> <dd><p>Pre-allocated collection of shared buffers. See <xref href="GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita">Shared buffers</xref>. </p> <p>The buffers of a pool all have the same size. Depending on the amount of used buffers, the pool dynamically grows and shrinks by a set number of buffers, which reduces the frequency of expensive memory allocation and reduces memory usage when possible. </p> </dd> </dlentry> <dlentry><dt>Pond</dt> <dd><p>The pond is a collection of pools. It is an <codeph>RCommsBufPond</codeph> object which keeps track of the memory available in the pools and allocates all the Comms buffer chains by taking buffers from the appropriate pools. </p> <p>The memory provided by the pond is available to all the layers of the Comms Framework as well as to the drivers underneath the lower layer. Therefore, the Comms Framework components and the drivers can exchange data without additional memory copies. </p> <p>At the moment, there is only one pond in the Comms Framework. </p> <p>For more information, see <xref href="GUID-81E532DF-4702-5881-9E1B-E6537425B4E2.dita">Advanced Pond Guide</xref>. </p> <fig id="GUID-D991B970-86AC-5970-B32E-08791791CCF5"><title>
+                  Pond contents 
+                </title> <image href="GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e92264_href.png" placement="inline"/></fig> </dd> </dlentry> </dl> </section> <section id="GUID-56ED5265-463D-5C47-9F74-1939E9D9051C"><title>Typical usage</title> <p>Depending on where your component is in the Data Plane, you handle Comms buffers in a different way: </p> <ul><li id="GUID-EE357CF1-1F05-5F86-9F8B-0E39F945617D"><p>Protocol plugins manipulate the data plane flow represented by buffer chains. They obtain a buffer chain from another layer (up or down), process the chain, and send the chain to the next layer in the stack. Link layer components belong to that category. </p> <p>See <xref href="GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita">Data Access Example</xref>. </p> </li> <li id="GUID-7047B580-A3E9-5807-BB48-9AF60BFCE2DC"><p>Data source components, either at the top or at the bottom of the Comms Framework, create buffer chains and send them through the Data Plane. Device drivers belong to that category. </p> <p>See <xref href="GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita">Allocation Tutorial</xref> and <xref href="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita">TLS Look-up Reduction Tutorial</xref>. </p> </li> </ul> <p>In order to increase performance and decrease memory consumption with Comms buffers, you need to configure the pond according to your memory usage. For more information, see <xref href="GUID-81E532DF-4702-5881-9E1B-E6537425B4E2.dita">Advanced Pond Guide</xref> and <xref href="GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita">Pond Configuration Reference</xref>. </p> <p>To monitor the pond and its available memory, see <xref href="GUID-0995EBF6-D203-57B3-9F53-972AEB8F3D3C.dita">Memory Metrics</xref>. </p> </section> </conbody><related-links><link href="GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita"><linktext>Shared Buffers</linktext> </link> <link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf)
+                and Comms Chains</linktext> </link> <link href="GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita"><linktext>Advanced Pond
+                Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE" xml:lang="en"><title>Displaying
+Log Events</title><shortdesc>This tutorial describes how to display log events. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-1C8DA1D1-AF6B-5478-AC1C-8D676C3F20CD"><p>You create a view
+to be displayed in the viewer application by creating a <xref href="GUID-3A3E6F09-0F78-38E1-95F5-00C743F41073.dita"><apiname>CLogViewEvent</apiname></xref> or
+a <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref>. Both classes select entries from the
+log, usually subject to the constraint of a filter. </p> <p> <xref href="GUID-3A3E6F09-0F78-38E1-95F5-00C743F41073.dita"><apiname>CLogViewEvent</apiname></xref> and <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref> inherit
+functions from <xref href="GUID-F33ADAF2-FD57-3662-B3AC-1000B69289D6.dita"><apiname>CLogView</apiname></xref> which let you navigate through
+the items in the view: </p> <ul>
+<li id="GUID-36C5ED26-8C2C-55E0-B4E0-819D96792BBA"><p> <xref href="GUID-EE047643-A3E7-3014-835E-3E2F0B0A6549.dita"><apiname> Event()</apiname></xref>  </p> </li>
+<li id="GUID-6F490445-C4E1-534F-ACBE-49FFAFFD93CE"><p> <xref href="GUID-FDD1ADE5-BDFA-3BE5-9DDC-2B2FC9258300.dita"><apiname> FirstL()</apiname></xref>  </p> </li>
+<li id="GUID-B81C17B3-E62F-5FE9-A364-226A2B113E48"><p> <xref href="GUID-0658A566-4771-37AB-8181-2AAA45C65931.dita"><apiname> LastL()</apiname></xref>  </p> </li>
+<li id="GUID-6C063C43-0885-5813-97B2-347115099379"><p> <xref href="GUID-375DEE08-E364-3403-B994-687CB7DF0B39.dita"><apiname>NextL()</apiname></xref>  </p> </li>
+<li id="GUID-004184E7-25C0-5BCB-879D-A5EB28DE043F"><p> <xref href="GUID-E3831544-ED8B-376E-AD8C-DDF97A3612A6.dita"><apiname>PreviousL()</apiname></xref>  </p> </li>
+</ul> </context>
+<steps id="GUID-6ECCE6B5-6316-5EBD-9DD7-0C767BB07E19">
+<step id="GUID-50196D27-187F-5F5B-B9A0-304F4E2C8E98"><cmd>Create a <xref href="GUID-3A3E6F09-0F78-38E1-95F5-00C743F41073.dita"><apiname>CLogViewEvent</apiname></xref> or
+a <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref> class </cmd>
+</step>
+<step id="GUID-ECB3C368-32E9-54BA-BD82-01A2259CD452"><cmd/>
+<info>Set a filter for the logs </info>
+<stepxmp><codeblock id="GUID-A0A9F42E-1CD3-5EED-96DB-1F981DB0E631" xml:space="preserve">    iLogViewEvent-&gt;SetFilterL(*iLogFilter,iStatus)</codeblock> </stepxmp>
+<info>A <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref> has additional functionality to
+identify and filter out duplicate events. A view is a purely virtual table
+and its add and delete functions have no effect on the log itself. </info>
+</step>
+<step id="GUID-5B84E2B7-DE91-517E-925A-224FF47F09C7"><cmd/>
+<info>Create a view from the Log Engine using <xref href="GUID-EE047643-A3E7-3014-835E-3E2F0B0A6549.dita"><apiname>Event()</apiname></xref>  </info>
+<info>A view is a list of events ordered chronologically, earliest first.
+A view always has a current event, which you retrieve with <xref href="GUID-EE047643-A3E7-3014-835E-3E2F0B0A6549.dita"><apiname>Event()</apiname></xref>.
+When you create a view the current event is the first event, and you navigate
+through the list using the other functions which take a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> as
+argument. </info>
+<substeps id="GUID-9F6BC821-3364-483D-9604-17AC296FD677">
+<substep id="GUID-A4C4E378-D6CB-464A-9925-DEAEB255568B"><cmd/>
+<info><p>To get the first event in the view call </p><codeblock xml:space="preserve">if(CViewEvent.FirstL(aStatus))
+  {
+  User::WaitForRequest(aStatus); 
+  CLogEvent e = iViewEvent.Event(); 
+  }</codeblock></info>
+</substep>
+<substep id="GUID-329E6A07-4EAA-432D-91DC-329BF59ECEAD"><cmd/>
+<info><p>To get the last event in the view call</p><codeblock xml:space="preserve">if(CViewEvent.LastL(aStatus))
+  {
+  User::WaitForRequest(aStatus); 
+  CLogEvent e = iViewEvent.Event(); 
+  };</codeblock></info>
+</substep>
+<substep id="GUID-6438BDE1-297C-4A84-B888-43CFAC0632ED"><cmd/>
+<info><p>To get the last event in the view call </p><codeblock xml:space="preserve">if(CViewEvent.FirstL(aStatus))
+  {
+  User::WaitForRequest(aStatus); 
+  CLogEvent e = iViewEvent.Event(); 
+  }</codeblock></info>
+</substep>
+<substep id="GUID-23286819-525E-49D4-B770-BFC5A90D5884"><cmd/>
+<info><p>and then inside a loop call</p><codeblock xml:space="preserve">while(CViewEvent.NextL(aStatus))
+  {
+  User::WaitForRequest(aStatus); 
+  CLogEvent e = iViewEvent.Event(); 
+  }</codeblock></info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-71973716-996F-562A-97B0-A70B102850AF"><cmd/>
+<info>The view can be displayed to the user. </info>
+</step>
+</steps>
+<postreq><p>A recent view is similar to an event view but is designed specifically
+for the purpose of displaying such recent events as the distinct voice calls
+a device user has received since the last time of checking. In a recent view,
+the first event is the most recent.  
+</p></postreq>
+</taskbody><related-links>
+<link href="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita"><linktext>Maintaining
+Log Events</linktext></link>
+<link href="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita"><linktext>Requesting
+Log Engine Notifications</linktext></link>
+<link href="GUID-2022F702-9899-5798-8932-D70119C7177D.dita"><linktext>Setting Up
+A Log Engine Client</linktext></link>
+<link href="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita"><linktext>Configuring
+Log Engine </linktext></link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5642F824-DDEB-43D1-B838-6C19AFFEBD9C_d0e55965_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8"><title>sourcepath</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>sourcepath</codeph>  <varname>directory</varname> </p> <p>Use the <codeph>sourcepath</codeph> statement to define the location of the project and its workfiles.</p> <p>Either relative or full paths can be specified with the keyword. Relative paths are considered relative to the directory containing the <filepath>.mmp</filepath> file. Full paths are considered relative to the location defined by the <codeph>EPOCROOT</codeph> variable.</p> <p>Multiple <codeph>sourcepath</codeph> statements may be specified, but note that the build tools will expect subsequent <codeph>source</codeph> and <codeph>resource</codeph> file statements to relate to the last previous <codeph>sourcepath</codeph> statement. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-565386C7-A6D4-59E2-A9CF-89F424750476.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-565386C7-A6D4-59E2-A9CF-89F424750476" xml:lang="en"><title>Using Package Buffers</title><shortdesc>Topics related to package buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e305304_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-567AB683-5D92-533D-B4D8-813E70316DA3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-567AB683-5D92-533D-B4D8-813E70316DA3" xml:lang="en"><title>A3F Audio Component
+Framework Component</title><shortdesc>The Advanced Audio Adaptation Framework (A3F) Audio Component Framework
+component provides a common interface for accessing audio resources, playing
+tones, and configuring audio for playing and recording. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-567D36A2-1097-5D44-B1B2-896F0F812A32.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-567D36A2-1097-5D44-B1B2-896F0F812A32"><title>linkas</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>linkas</codeph>  <varname>priority</varname> </p> <p>Use the <codeph>linkas</codeph> statement to give the DLL that your project defines a different internal name.</p> <p>By default, the internal name of the DLL will be the same as the DLL’s filename. Under certain rare circumstances, it is useful to be able to give a DLL a different internal name. </p> <p>For example, a DLL might be built with a certain name and then renamed as part of a ROM, so the internal name must be the same as the DLL’s name in ROM.</p> <p>Use of this statement will have no effect under Win32 platforms.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F" xml:lang="en"><title>Sprites and Cursors</title><shortdesc>A sprite is an arbitrary-shaped bitmap that can be moved without applications having to redraw the underlying screen. A specialized sprite type is provided for pointer cursors, which automatically track the position of a pointer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> </p> </conbody><related-links><link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server Client-Side Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-56841E07-1A4A-5572-BF3F-F80069FD5D59.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-56841E07-1A4A-5572-BF3F-F80069FD5D59" xml:lang="en"><title>How
+to start active objects</title><shortdesc>This document describes how to start active objects.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following example code shows how active objects are started. While
+the example shows the creation of an active scheduler, in UI applications,
+an active scheduler is always provided. </p>
+<ul>
+<li id="GUID-4E857369-075A-5337-9152-0475DE0D41E9"><p>Create an instance of
+the active scheduler, <codeph>exampleScheduler</codeph>. This is an instance
+of a class derived from <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler</apiname></xref> and provides an <codeph>Error()</codeph> function
+to handle leaves occurring in the active object <codeph>RunL()</codeph> function(s). </p> </li>
+<li id="GUID-857D957B-E5C5-5C37-BEEA-F10B42B208B5"><p>Push <codeph>exampleScheduler</codeph> onto
+the cleanup stack and install as the current active scheduler. </p> </li>
+<li id="GUID-38C2AC92-6DFF-50A1-BE24-163ABBCD66BA"><p>Create an active object, <codeph>myActiveObject</codeph>,
+and pass a pointer to the service provider as the parameter. Note that often,
+the service provider may be constructed as part of the active object's own
+construction processing. </p> </li>
+<li id="GUID-2C390F94-0AF5-585C-BAB4-A8142DF87F56"><p>Issue a request using <codeph>IssueRequest()</codeph>. </p> </li>
+<li id="GUID-A39EB27D-91AE-5932-ADCE-7E75ECCB042F"><p>Use <codeph>CActiveScheduler::Start()</codeph> to
+start the active scheduler’s wait loop. At least one outstanding request is
+necessary before the wait loop is started, otherwise the thread hangs. All
+further request issuing and servicing occurs within this function. The wait
+loop continues until one of the active objects’ <codeph>RunL()</codeph> requests
+termination using <codeph>CActiveScheduler::Stop()</codeph>. </p> </li>
+<li id="GUID-ADCBB62D-0A83-5D5B-915C-7F30D863943C"><p>Pop the active object,
+the active scheduler and the example service provider from the clean-up stack,
+and destroy. The code assumes that the active object does not take ownership
+of the <codeph>CExampleServiceProvider</codeph> object and is not responsible
+for its destruction. </p> </li>
+</ul>
+<codeblock id="GUID-1895F4F4-0EDF-5ADC-B3D7-FC792719299C" xml:space="preserve">LOCAL_C void doExampleL()
+    {
+        // Create and install the active scheduler
+    CActiveScheduler* exampleScheduler=new (ELeave) CExampleScheduler;
+    CleanupStack::PushL(exampleScheduler);
+    CActiveScheduler::Install(exampleScheduler);
+
+        // Create the service provider. Often, the
+        // service provider is part of the active object
+    CExampleServiceProvider* myServiceProvider=new (ELeave) CExampleServiceProvider;
+    CleanupStack::PushL(myServiceProvider);
+
+        // Create the active object and issue the
+        // first asynchronous request
+    CExampleActiveObject * myActiveObject=new (ELeave) CExampleActiveObject(myServiceProvider);
+    CleanupStack::PushL(myActiveObject);
+    myActiveObject-&gt;IssueRequest();
+
+        // Now we can start the active scheduler
+    CActiveScheduler::Start();
+
+        // Remove the exampleScheduler and other
+        // objects from cleanup stack and destroy them
+    CleanupStack::PopAndDestroy(3);
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e117992_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8"><title>Sockets Server Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic introduces the Sockets Server API and discusses the main classes. </p> <p>The Sockets Server Client interfaces make asynchronous calls to the Sockets Server. The Server co-ordinates client access to socket services, and manages communications with the protocol plug-ins that provide support for the particular networking protocols. </p> <p>Each protocol plug-in may contain a number of protocols. The term ‘protocol’ may also be used to describe a suite of protocols. For example, the TCP/IP protocol plug-in contains UDP, TCP, ICMP, IP, and DNS. Sockets can access UDP and TCP to transfer data over IP. Another example of a protocol plug-in is the IrDA plug-in. the IrDA plug-in is used for communicating over infrared. </p> <p>The Sockets Server loads protocols plug-ins at runtime either explicitly or on demand. When the server starts, the server scans <filepath>\private\101f7989\esock</filepath> for <xref href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita">.esk</xref> files to see which protocols and services are defined, and which protocols to load. </p> <p>The Sockets Server Client API implements the idea of <keyword>transport independence</keyword>: different protocols are accessed through the same API. However, individual protocols exhibit different properties and semantics regarding socket behaviour. The semantics implemented by any given protocol can be found by interrogating the system using <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-1B597C97-2AEB-32D1-B225-5C1E24F6470F"><apiname>RSocketServ::GetProtocolInfo()</apiname></xref>, which describes the protocol semantics encapsulated in a <xref href="GUID-0FB20F20-67EE-3948-B9F6-E1D679AC3D0F.dita"><apiname>TProtocolDesc</apiname></xref>. </p> <section><title>APIs</title> <p>Five main classes provide the Sockets Server Client API functionality: </p> <ul><li id="GUID-8F21CED0-F874-59E5-9CDE-8212C20F7101"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>  </p> </li> <li id="GUID-D6C46C27-33FA-55E1-9DA0-0FCB64239A65"><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>  </p> </li> <li id="GUID-C65285B2-F251-5021-B830-6388F8600AB0"><p> <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>  </p> </li> <li id="GUID-30061681-0502-57D4-9E24-3AC265140435"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>  </p> </li> <li id="GUID-62AEBD22-81FC-539D-BDD3-12CBA93CB0DB"><p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>  </p> </li> </ul> <p>The <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref> class establishes and reserves resources for the base communication session to the Sockets Server. The <codeph>RSocketServ</codeph> hosts other Sockets Server Client APIs as subsessions inside the <codeph>RSocketServ</codeph> session. The Sockets Server Client APIs which are hosted as subsessions inside <codeph>RSocketServ</codeph> are <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>, <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>, <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. The <codeph>RSocketServ</codeph> class provides functions to load and query protocols. </p> <fig id="GUID-D7E19F08-CADC-5050-A9C7-5A48213B2B0E"><title>
+             Figure 1 - Class diagram of RSocketServ inheritance 
+          </title> <image href="GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e96205_href.png" placement="inline"/></fig> <fig id="GUID-142DBA45-272F-59FE-8008-755679B65361"><title>
+             Figure 2 - Class diagram of classes which make up the subsession APIs
+             to RSocketServ 
+          </title> <image href="GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e96211_href.png" placement="inline"/></fig> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> class provides a client endpoint to a protocol. It provides the following services: </p> <ul><li id="GUID-4472E72B-56E5-573E-9C91-10D63616C773"><p>socket creation </p> </li> <li id="GUID-20140DAB-5315-5A1F-B8FD-89203020542D"><p>reading from and writing to a protocol </p> </li> <li id="GUID-405469A5-0144-52DD-9A2D-5A517DF37267"><p>binding to addresses </p> </li> <li id="GUID-E8EBB098-2DAB-5851-BEE2-FE3E3329F414"><p>active connecting </p> </li> <li id="GUID-1C67F551-6AC1-506E-B1AF-C475C2C68412"><p>passive connection through the listen/accept model </p> </li> </ul> <p>The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> class provides access to the Connection Management functionality of a socket. See <xref href="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita">Connection Management</xref>. </p> <p>The <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API provides functions to specify Quality of Service parameters for a channel. See <xref href="GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864.dita">SubConnection Client API</xref>. </p> </section> </conbody><related-links><link href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita"><linktext>ESK Files</linktext> </link> <link href="GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8.dita"><linktext> Reading from a Socket:
+                Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-56EA1BD6-DE61-5541-993A-2B60D1DE41AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-56EA1BD6-DE61-5541-993A-2B60D1DE41AC"><title>Pictures</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A rich text object may contain any type of picture, derived from the <xref href="GUID-829D57CD-9659-347B-AAE9-5F0A0ECD555C.dita"><apiname>CPicture</apiname></xref> class defined by the GDI. In a text object, a picture is represented by a single special character. You insert and manipulate pictures using function calls designed specially for that purpose.</p> <p>Because rich text handles pictures at the abstract <codeph>CPicture</codeph> level, there is no limit on the type of picture that can be included in rich text. Pictures may be drawn using only the GDI. To insert a picture, the Symbian OS application architecture is used to find available applications. To edit a picture, the application architecture finds the application which originally created it.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-56EE13F0-CAEE-5E1C-99CD-2FEC8C3BCA6B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-56EE13F0-CAEE-5E1C-99CD-2FEC8C3BCA6B" xml:lang="en"><title>Dynamic
+Arrays Overview</title><shortdesc>This document is an overview of dynamic arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5562FF9A-483E-4145-B07E-1ABF08B8C103"><title>Purpose</title> <p>Provides families of dynamically expandible
+heap-based arrays.</p> </section>
+<section id="GUID-E5166C8B-0428-4007-A7FA-A2A7CD84B356"><title>Description</title> <p>A large number of concrete classes
+provide dynamic arrays that are suitable for different circumstances. Unlike
+standard C++ arrays or the Symbian platform Fixed Size Arrays, the number
+of elements in a dynamic array can be altered at run-time.</p> <p>The arrays
+are divided into two families:</p> <ul>
+<li id="GUID-99FEBCD8-0B2C-5E2A-BCF7-AD8762795E0A"><p>the simple dynamic array
+family is for use in most cases</p> </li>
+<li id="GUID-107EDF8D-27BB-530D-AF81-74F7B78AB666"><p>the extended dynamic
+array family allows advanced properties, such as the organisation of the array
+storage in memory, to be specified</p> </li>
+</ul> <p>The array classes are all templated. The template parameter defines
+the type of object which is to form an array element. </p> <p><b>Simple
+dynamic array family</b> </p> <p>The simple dynamic array family offers arrays
+of objects, integers, and pointers. The array is always stored in a single
+memory area.</p> <p>Object arrays are provided by <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita"><apiname>RArray</apiname></xref>.</p> <p>Integer
+arrays are provided by <xref href="GUID-6FCD6EC2-7293-37A9-8292-3FA05CCEE50B.dita"><apiname>RArray&lt;TInt&gt;</apiname></xref> and <xref href="GUID-97995D22-5A1C-3271-8D63-22D8703B676B.dita"><apiname>RArray&lt;TUint&gt;</apiname></xref>.</p> <p>Pointer
+arrays are provided by <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita"><apiname>RPointerArray</apiname></xref>.</p> <p><b>Extended dynamic array family</b> </p> <p>The extended dynamic array family,
+derived from <codeph>CBase</codeph>, allows the client to specify explicitly
+combinations of element properties and storage type. These terms are explained
+below.</p> <p><b>Element
+properties</b> </p> <p>Options for element properties are:</p> <p><b>Fixed length</b> </p> <p>All elements are of the same size (<codeph>CArrayFixBase</codeph>).</p> <p><b>Variable length</b> </p> <p>Elements can be of different sizes (<codeph>CArrayVarBase</codeph>).</p> <p><b>Pointer</b> </p> <p>Elements are pointers to <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref> -derived
+objects.</p> <p><b>Untyped</b> </p> <p>Elements are <xref href="GUID-6D079976-9119-31FA-8E21-C3B815F94648.dita"><apiname>TAny</apiname></xref> objects.</p> <p><b>Storage type</b> </p> <p>Options for storage type are:</p> <p><b>Flat buffer</b> </p> <p>The elements are stored in a single memory area,
+and are of fixed length.</p> <p><b>Segmented</b> </p> <p>The elements are stored in multiple memory areas.</p> <p><b>Packed</b> </p> <p>The elements are stored in a single memory area, but
+can be of variable length.</p> <p>Different storage types present trade-offs
+between efficiency of memory usage and speed.</p> <p><b>Class summary</b> </p> <p>The following matrix demonstrates the concrete
+classes that are available. Storage type is shown horizontally, element properties
+vertically.</p> <table id="GUID-3CA8DCBC-6A22-56F0-9462-CA1C51D2F286">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Flat</entry>
+<entry> Segmented</entry>
+<entry> Packed</entry>
+</row>
+<row>
+<entry> Fixed-length element</entry>
+</row>
+<row>
+<entry> Variable-length element</entry>
+</row>
+<row>
+<entry> <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref> -pointer elements</entry>
+</row>
+<row>
+<entry> Untyped elements (fixed length)</entry>
+</row>
+<row>
+<entry> Untyped elements (variable length)</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry/>
+</row>
+<row>
+<entry><p><xref href="GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3.dita"><apiname>CArrayFixFlat</apiname></xref> </p> </entry>
+<entry><p><xref href="GUID-EE7C55C7-9CB2-3EE8-869C-8283B6723D5C.dita"><apiname>CArrayFixSeg</apiname></xref> </p> </entry>
+<entry/>
+</row>
+<row>
+<entry><p><xref href="GUID-5BC7EAFE-FC9C-3E86-BFDC-FDE9FE086D53.dita"><apiname>CArrayVarFlat</apiname></xref> </p> </entry>
+<entry><p><xref href="GUID-35439B46-B078-3B9F-9199-CC8F8DD4C1DB.dita"><apiname>CArrayVarSeg</apiname></xref> </p> </entry>
+<entry><p><xref href="GUID-4D6E6B46-32B5-34AD-BD8A-84BF6B2B7C81.dita"><apiname>CArrayPakFlat</apiname></xref> </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-FCE7D958-96AA-346D-8D22-0EF24B9DB7CC.dita"><apiname>CArrayPtrFlat</apiname></xref> </p> </entry>
+<entry><p><xref href="GUID-A9BDCF9A-6A29-3329-898A-13CA8FF26510.dita"><apiname>CArrayPtrSeg</apiname></xref> </p> </entry>
+<entry/>
+</row>
+<row>
+<entry><p><xref href="GUID-E9669326-3E63-3E66-BC99-F6BF08F26BA4.dita"><apiname>CArrayFixFlat&lt;TAny&gt;</apiname></xref> </p> </entry>
+<entry><p><xref href="GUID-645011B2-5976-34AF-9B39-D68CD9037224.dita"><apiname>CArrayFixSeg&lt;TAny&gt;</apiname></xref> </p> </entry>
+<entry/>
+</row>
+<row>
+<entry><p><xref href="GUID-4FFD4229-66A7-3861-8498-9187555EBA66.dita"><apiname>CArrayVar&lt;TAny&gt;</apiname></xref> </p> </entry>
+<entry/>
+<entry><p><xref href="GUID-C5F51D78-35D2-3477-897C-A45BB0810D99.dita"><apiname>CArrayPak&lt;TAny&gt;</apiname></xref> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Base classes are not shown on the above table. The inheritance
+hierarchies are based on the flat, segmented, packed divisions.</p> </section>
+
+
+
+
+
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D" xml:lang="en"><title>Dynamic
+Buffers Example Code</title><shortdesc>The example shows how dynamic arrays are constructed and used.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-FA3CC727-10E2-59B6-8F64-EF9130083918"><title>DynamicBuffers:
+using dynamic buffers</title> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-aa343552-b072-4d89-8753-a1bcc69354c1.zip" scope="external">DynamicBuffers.zip</xref></p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-aa343552-b072-4d89-8753-a1bcc69354c1.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p> The example
+shows a number of operations on a flat dynamic buffer and a segmented dynamic
+buffer. </p><p><b>Class summary</b></p><p>Examples of APIs</p><ul>
+<li><p><xref href="GUID-F915EF7D-7C06-3902-AB84-C8E89ABE7F18.dita"><apiname>CBufFlat</apiname></xref> - Provides a flat storage dynamic buffer.</p></li>
+<li><p><xref href="GUID-74CD841C-49EE-3512-9C05-2A05924A63A7.dita"><apiname>CBufSeg</apiname></xref> - Provides a segmented dynamic buffer.</p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-573420CD-E8E0-4E98-B3E2-1388F4B1137D_d0e55804_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57412030-6B02-592A-81D5-54D2767ED131.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-57412030-6B02-592A-81D5-54D2767ED131"><title>Retrieving Audio Play Samples </title><shortdesc>This document describes how to retrieve the number of samples used while playing audio. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps-unordered id="GUID-24A424DF-8F92-53E0-9249-E1A0D479BCDD"><step id="GUID-C0A1677A-05BD-5D2E-B49C-4C63EDCFC6BE"><cmd/><info>To find out the number of samples that have been played so far, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-21CA19F1-47A7-3C51-B7E0-C3F932B298A0"><apiname>CMMFDevSound::SamplesPlayed()</apiname></xref> query method. </info> <info>This returns the number of samples played since the last <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-83CD0A0C-535B-31D2-946F-537BCB4D26A6"><apiname>CMMFDevSound::PlayInitL()</apiname></xref> call. </info> <info> Note: The <codeph>CMMFDevSound::SamplesPlayed()</codeph> query returns a zero value until the start of the play cycle. The count of samples played is returned in the playing and paused states. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita"><linktext>Starting Audio
+                Play</linktext> </link> </related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e132437_href.png has changed
Binary file Symbian3/SDK/Source/GUID-575CDD9C-ED6E-510E-AE11-46CA7EB7B74C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-575CDD9C-ED6E-510E-AE11-46CA7EB7B74C_d0e117702_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-576BA55E-3CD3-5867-B55D-60CE137595F2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-576BA55E-3CD3-5867-B55D-60CE137595F2"><title>Introduction to file stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> File stores are persistent stores that can be used to implement application data files.</p> <p>There are two types of file store:</p> <ul><li id="GUID-812742DD-A3EA-5E92-BF2F-CCAB8C48FFC4"><p>direct file store, encapsulated by the concrete class <codeph>CDirectFileStore</codeph> derived from <codeph>CFileStore</codeph> </p> </li> <li id="GUID-4041C374-9A61-537C-8D77-36DDBDEC0438"><p>permanent file store, encapsulated by the concrete class <codeph>CPermanentFileStore</codeph> derived from <codeph>CFileStore</codeph> </p> </li> </ul> <section><title>See also</title> <p><xref href="GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3.dita">Introduction to stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5777D16D-71FA-5929-9557-4C532C59ECBF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5777D16D-71FA-5929-9557-4C532C59ECBF"><title>Platform Security Considerations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform v9.1 introduced <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">Platform Security</xref> (the concept of Capabilities, Signing and Data Caging) to protect a phone against malicious code. Granting a program certain capabilities enables it to use protected operating system functionality, and signing an installation file enables it to be installed onto different phones. </p> <p>A program using the P.I.P.S. libraries may need certain capabilities in order to use protected functionality to be available. The capabilities required are listed in the program's makefile (or MMP file on Symbian platform). For example, the following line added to a Symbian MMP file will grant network access to a program. </p> <codeblock id="GUID-4D511177-F8F2-56A1-AB6C-91B3B1F04FE5" xml:space="preserve">CAPABILITY     NetworkServices</codeblock> <p>Each Symbian program has access to a private area of storage in a <filepath>/private/&lt;secureid&gt;/</filepath> directory where <codeph>secureid</codeph> is an identifier specified in the MMP file. If a <codeph>secureid</codeph> is not specified in the MMP file, the <codeph>secureid</codeph> is set from the program's third UID (Unique Identifier). Some extra capabilities are required if the program wishes to have access to another program's private area. Also it is worth noting that P.I.P.S. does not allow file descriptors in private directories to be inherited. </p> <section id="GUID-A4D36A90-314A-5EEA-A025-7135A9A60177"><title>Capabilities supported for P.I.P.S. APIs</title> <p>The following table provides details of the P.I.P.S. APIs and the capabilities that may need to be added. </p> <table id="GUID-4DF992C4-AE1E-56BC-B97F-BC411D02E3FF"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>P.I.P.S. API</b>  </p> </entry> <entry><p> <b>Capabilities required</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-D926453F-9D3F-3604-B6E1-9782C3779DDF.dita"><apiname>lstat()</apiname></xref>, <xref href="GUID-A89FA772-80F2-39E8-AEFB-B9B4E833A1FA.dita"><apiname>stat()</apiname></xref>, <xref href="GUID-BEE67FC6-54F4-3711-B367-87EF751472A7.dita"><apiname>tmpnam()</apiname></xref>, <xref href="GUID-C8EA1CF0-D221-3A9D-84B1-5ED8A6DA933F.dita"><apiname>tempnam()</apiname></xref>, <xref href="GUID-875BC63B-B23B-374C-A932-24701D8C8220.dita"><apiname>wstat()</apiname></xref>  </p> </entry> <entry><p> <codeph>None</codeph> if the path is not in the protected /sys/ or /private/ directory. </p> <p> <codeph>AllFiles</codeph> if the path contains the protected /sys/ directory. </p> <p> <codeph>AllFiles</codeph> if the path contains the protected /private/ directory using another program's Secure Identifier. </p> </entry> </row> <row><entry><p> <xref href="GUID-A9330ABF-23DD-3DAE-BCB5-1B2448EF34E3.dita"><apiname>open()</apiname></xref>, <xref href="GUID-FA8FEC6E-622F-3F06-B15F-7B9769616149.dita"><apiname>wfopen()</apiname></xref>  </p> </entry> <entry><p> <codeph>None</codeph> if the path is not in the protected /sys/ or /private/ directory. </p> <p> <codeph>AllFiles</codeph> if the path contains the protected /sys/ directory and read mode is specified. </p> <p> <codeph>TCB</codeph> if the path contains the protected /sys/ directory and write mode is specified. P.I.P.S. libraries do not have the TCB capability, and so it is not possible to write to this directory. </p> <p> <codeph>AllFiles</codeph> if the path contains the protected /private/ directory using another program's Secure Identifier. </p> </entry> </row> <row><entry><p> <xref href="GUID-9AE17F91-D9F7-3DD5-8D6C-AC6BDD0BBF7D.dita"><apiname>access()</apiname></xref>, <xref href="GUID-96A8BB01-07F4-3701-8390-858E47B11068.dita"><apiname>chdir()</apiname></xref>, <xref href="GUID-F5DE6335-1C8B-31F6-A70F-DCA12C050836.dita"><apiname>chmod()</apiname></xref>, <xref href="GUID-7AE53522-A016-3CF2-9394-38A65A628FDF.dita"><apiname>creat()</apiname></xref>, <xref href="GUID-D441A5DF-C7B8-38A7-B386-62DB47D95DE2.dita"><apiname>fchmod()</apiname></xref>, <xref href="GUID-A745D453-FD35-36AC-B2A6-1B118FC0ECE7.dita"><apiname>ftok()</apiname></xref>, <xref href="GUID-5EA72F64-E826-3B15-9468-902BD57F6AA7.dita"><apiname>mkdir()</apiname></xref>, <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref>, <xref href="GUID-28E8C6E1-93F6-326B-8B10-6EFCC19A71B8.dita"><apiname>rename()</apiname></xref>, <xref href="GUID-0A4E12DC-191F-3093-8FCC-1F09BC057EF8.dita"><apiname>rmdir()</apiname></xref>, <xref href="GUID-D8A63E18-878B-3AD4-863D-269E974ED8B2.dita"><apiname>utimes()</apiname></xref>, <xref href="GUID-7F392C01-C20D-3625-A964-F41BB925A5CC.dita"><apiname>waccess()</apiname></xref>, <xref href="GUID-13413FF7-5CAB-38DB-97FC-A4E45E076696.dita"><apiname>wchdir()</apiname></xref>, <xref href="GUID-48438139-E717-3E86-ACD4-E81D6482B659.dita"><apiname>wcreat()</apiname></xref>, <xref href="GUID-F173F204-ECCE-3FC8-B3BF-4F58513A7D0C.dita"><apiname>wmkdir()</apiname></xref>, <xref href="GUID-16518B7B-C146-32E6-9360-A4EEF268CA98.dita"><apiname>wrmdir()</apiname></xref>, <xref href="GUID-F33C1971-5E72-331A-B699-CC32D36B7584.dita"><apiname>wunlink()</apiname></xref>, <xref href="GUID-5F612E71-362E-37D8-A457-8AF1AB545496.dita"><apiname>unlink()</apiname></xref>, <xref href="GUID-234DE8F8-1D41-3BE0-980B-37ACF281DDA6.dita"><apiname>utime()</apiname></xref>  </p> </entry> <entry><p> <codeph>None</codeph> if the path is not in the protected /sys/, /resource/ or /private/ directory. </p> <p> <codeph>TCB</codeph> if the path contains the protected /sys/ or /resource/ directory. P.I.P.S. libraries do not have the TCB capability, and so it is not possible to write to this directory. </p> <p> <codeph>AllFiles</codeph> if the path contains the protected /private/ directory using another program's Secure Identifier. </p> </entry> </row> <row><entry><p> <xref href="GUID-8B08EBCD-937C-3704-8E6A-08A45881F70D.dita"><apiname>accept()</apiname></xref>, <xref href="GUID-DD961B2B-AAEE-3A83-81E2-0B9F7BE58BE6.dita"><apiname>bind()</apiname></xref>, <xref href="GUID-B1E46044-267D-3F35-9712-F1A0D7E8F03F.dita"><apiname>connect()</apiname></xref>, <xref href="GUID-F923CE02-3850-3494-95FE-094506318F10.dita"><apiname>ioctl()</apiname></xref>, <xref href="GUID-4BE12A23-0E4D-37CC-891C-6B9931CA2E7A.dita"><apiname>recv()</apiname></xref>, <xref href="GUID-45F73DAA-7E14-307A-BE55-FFCAEA898A86.dita"><apiname>recvfrom()</apiname></xref>, <xref href="GUID-0D328B4A-15D0-36EB-B92E-E285A11F1ABC.dita"><apiname>send()</apiname></xref>, <xref href="GUID-2E55A695-EE36-37F3-A088-2BA282B8EA9F.dita"><apiname>sendto()</apiname></xref>, <xref href="GUID-CCE203C4-7985-3FF7-829B-CF3873D62098.dita"><apiname>recvmsg()</apiname></xref>, <xref href="GUID-F580A280-7797-3D55-B1C3-1CACC0429830.dita"><apiname>sendmsg()</apiname></xref>  </p> </entry> <entry><p> <codeph>None</codeph> if the descriptor does not refer to a socket. </p> <p> <codeph>NetworkServices</codeph> if the descriptor is a socket. </p> </entry> </row> </tbody> </tgroup> </table> </section> <example><title>A P.I.P.S. platform security example</title> <p>The following code illustrates how P.I.P.S. conforms to Data Caging rules while creating a file with and without capabilities. </p> <codeblock id="GUID-680669E9-0261-5A1C-9A20-67A5148C440B" xml:space="preserve">#include &lt;stdio.h&gt;
+
+int main(int argc, char *argv[])
+{
+   FILE* file;
+   
+   //Create the file in another program's private directory
+   file = fopen("/private/10004902/out.file", "w");
+   if (file == NULL)
+   {
+      int I = errno;
+   
+      //Error occurred
+      printf("\nError creating file, error=%d", errno);    
+      return EXIT_FAILURE;
+   }
+   else
+   {
+      //File created
+      fprintf(file, "Sample File Output");
+      fclose(file);
+      
+      printf("\nFile created");    
+   }
+
+   return EXIT_SUCCESS;
+}</codeblock> <p>If no capabilities are provided, the code will print out an error message due to the attempted use of <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> on another program's <filepath>/private/</filepath> directory. The error code displayed will be <xref href="GUID-3148D2B9-FF17-35E1-A74B-50EBF1B79679.dita"><apiname>EACCESS</apiname></xref>, showing a security error. </p> <p>If, however, the <codeph>AllFiles</codeph> capability is listed in the program's MMP file, the file will be generated successfully. </p> <p> <b>Note:</b> Here, <codeph>AllFiles</codeph> represents a system capability and is not something your application should require or use, in most of the cases. </p> </example> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-577F42BA-299E-5071-8C7A-FA0CBADCECAE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-577F42BA-299E-5071-8C7A-FA0CBADCECAE" xml:lang="en"><title>The
+types of array</title><shortdesc>Describes the types of array available.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A39A5291-6177-4521-AB8F-65D3F09FC333"><title>General arrays of objects</title> <p>Six general types of
+array can be constructed:</p> <ul>
+<li id="GUID-37305910-8E80-5F8B-9511-2354BD66BD38"><p><codeph>CArrayFixFlat&lt;Class
+T&gt;</codeph>: an array of elements, all having the same length. It uses a flat
+array buffer implemented by a <codeph>CBufFlat</codeph> object. The array
+object itself is allocated on the heap.</p> </li>
+<li id="GUID-E0E535CE-F623-57C9-86DC-BC755E00FE3F"><p><codeph>CArrayFixSeg&lt;Class
+T&gt;</codeph>: an array of elements, all having the same length. It uses a segmented
+array buffer implemented by a <codeph>CBufSeg</codeph> object. The array object
+itself is allocated on the heap.</p> </li>
+<li id="GUID-BA0B6BF0-C156-596A-B63F-9A7D262C218E"><p><codeph>CArrayVarFlat&lt;Class
+T&gt;</codeph>: an array of elements having varying lengths. It uses a flat array
+buffer implemented by a <codeph>CBufFlat</codeph> object. The array object
+itself is allocated on the heap.</p> </li>
+<li id="GUID-3E74B298-B832-5404-9002-92E7CE8D3228"><p><codeph>CArrayVarSeg&lt;Class
+T&gt;</codeph>: an array of elements having varying lengths. It uses a segmented
+array buffer implemented by a <codeph>CBufSeg</codeph> object. The array object
+itself is allocated on the heap.</p> </li>
+<li id="GUID-3A949BDB-822A-59EE-8C15-E5FB3EBC8FAE"><p><codeph>CArrayPakFlat&lt;Class
+T&gt;</codeph>: an array of elements having varying lengths. It uses a flat array
+buffer implemented by a <codeph>CBufFlat</codeph> object. The length value
+of an element precedes the element itself within the array buffer. The array
+object itself is allocated on the heap.</p> </li>
+<li id="GUID-7B30A669-8BF5-5DDC-BDC2-2097C7631257"><p><codeph>RArray&lt;class
+T&gt;</codeph>: a simple array of elements, all having the same length. The array
+buffer is flat and is implemented by the array class as a simple piece of
+linear memory. The array object itself can be constructed on the program stack.</p> </li>
+</ul> </section>
+<section id="GUID-3A99B95E-EF5D-4E7E-B545-7A9E1FE12C14"><title>General arrays of pointers</title> <p>There are three arrays
+which can be used when the elements are <i>pointers</i> to <codeph>CBase</codeph> derived
+objects. They allow type-safe access to <codeph>CBase</codeph> derived objects:</p> <ul>
+<li id="GUID-F395B716-D47E-5915-834D-8B10C35BAC59"><p><codeph>CArrayPtrFlat&lt;class T&gt;</codeph>:
+an array of pointers using a flat array buffer implemented by a <codeph>CBufFlat</codeph> object.
+The array object itself is allocated on the heap.</p> </li>
+<li id="GUID-ECE75F75-0178-5F00-8EE3-1B2BD162B764"><p><codeph>CArrayPtrSeg&lt;class T&gt;</codeph>:
+an array of pointers using a segmented array buffer implemented by a <codeph>CBufSeg</codeph> object.
+The array object itself is allocated on the heap.</p> </li>
+<li id="GUID-F4AEDDAE-E8EA-571F-9089-BB736559FCE1"><p><codeph>RPointerArray&lt;class
+T&gt;</codeph>: a simple array of pointers using a flat array buffer implemented
+by the array class as a simple piece of linear memory. The array object itself
+can be constructed on the program stack.</p> </li>
+</ul> </section>
+<section id="GUID-039B6556-C13A-4DFF-A1A7-D11A3702FE46"><title>Specialised arrays</title> <p>There are two specialised arrays
+of <i>untyped</i> elements, all having the same length, which can be used
+as data members of a base class in a thin template class/base class pair.
+These classes are useful in situations where the type of elements forming
+the array cannot be known in advance:</p> <ul>
+<li id="GUID-2D1A46DD-FFA6-56FD-A0E4-9C4655B3B9C2"><p><codeph>CArrayFixFlat&lt;TAny&gt;</codeph>.
+An array of untyped elements all having the same length. It uses a flat array
+buffer implemented by a <codeph>CBufFlat</codeph> object.</p> </li>
+<li id="GUID-CBF3264E-DE5C-5FA3-B953-CF6F14208EEB"><p><codeph>CArrayFixSeg&lt;TAny&gt;</codeph>.
+An array of untyped elements all having the same length. It uses a segmented
+array buffer implemented by a <codeph>CBufSeg</codeph> object.</p> </li>
+</ul> <p>There are two specialised arrays of <i>untyped</i> elements, having
+varying lengths, which can be used as data members of a base class in a thin
+template class/base class pair. These classes are useful in situations where
+the type of element forming the array is known only at the time the class
+is created (i.e. at compile time):</p> <ul>
+<li id="GUID-D689224C-F6F2-5A82-9A90-091663814F86"><p><codeph>CArrayVar&lt;TAny&gt;</codeph>.
+An array of untyped elements with varying lengths.</p> </li>
+<li id="GUID-5E2E9D37-65E8-5804-BD5B-6A37703C745B"><p><codeph>CArrayPak&lt;TAny&gt;</codeph>.
+An array of packed (variable length) elements.</p> </li>
+</ul> <p>There are two template specialisations of <codeph>RArray&lt;class
+T&gt;</codeph>.</p> <ul>
+<li id="GUID-A4F7D38C-7AE6-5E6B-A36F-1D70624C3E45"><p><codeph>RArray&lt;TInt&gt;</codeph>.
+An array of signed integers</p> </li>
+<li id="GUID-AB865DDB-5522-5A36-9DBB-BB0D535A9B9F"><p><codeph>RArray&lt;TUint&gt;</codeph>.
+An array of signed integers.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-579D7C32-B6C8-5C77-88A5-B3078729E1BA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-579D7C32-B6C8-5C77-88A5-B3078729E1BA" xml:lang="en"><title>How
+to implement a simple client interface</title><shortdesc>Provides code snippets to help you to implement a simple client
+interface.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-EE1BFD0F-EE55-47BA-A8FD-D753EC132255"><title>Client side session with a server</title> <p>A client side
+session is represented by an instance of a class derived from <codeph>RSessionBase</codeph> which
+provides the behaviour for connecting to the server and sending messages to
+it. </p> <p>In the following code fragment, taken from the example that can
+be found at <filepath>...\examples\Base\IPC\ClientServer\simple</filepath>,
+the class <codeph>RCountServSession</codeph>, derived from <codeph>RSessionBase</codeph>,
+represents the client side session with a server. In the example, this may
+be referred to as the "count server". Note that sessions can not be shared
+in this example, and it just shows the basic mechanics of the client/server
+interaction. </p> <codeblock id="GUID-48AC1BF2-BA67-5959-A49A-AF57AC25E155" xml:space="preserve">class RCountServSession : public RSessionBase
+    {
+public:
+    RCountServSession();
+    TInt Connect();
+    TVersion Version() const;
+    TInt UnsupportedRequest();
+    TInt SetFromString(const TDesC&amp; aString);
+    void Increase();
+    void Decrease();
+    void IncreaseBy(TInt anInt);
+    void DecreaseBy(TInt anInt);
+    void Reset();
+    TInt CounterValue();
+    void BadRequest();
+    void Close();
+private:
+    RThread iServerThread;
+    };</codeblock> <p>The important points are: </p> <ul>
+<li id="GUID-B6AC51AC-91A3-5794-815A-292E308735F6"><p>Use <codeph>Connect()</codeph> to
+start the count server. This calls <codeph>RSessionBase::CreateSession()</codeph> to
+create a session with the server. Note that in this simple example, the server
+is implemented as a separate thread, which is started by the example executable. </p> </li>
+<li id="GUID-EBDC7F23-8D2F-5093-8C32-50C3DE137EF5"><p>Use a client interface
+function, such as <codeph>Increase()</codeph>, to send a specific message
+to the server. The client interface function builds the message using the
+appropriate operation code and assembling a suitable <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object,
+i.e. the object containing the integers and/or the descriptor pointers to
+the message arguments in the client address space. </p> </li>
+</ul> <p>As an example, the function <codeph>SetFromString()</codeph> is implemented
+as follows: </p> <codeblock id="GUID-A673A2A4-0999-5EDE-9FFB-E0C7335B58D9" xml:space="preserve">TInt RCountServSession::SetFromString(const TDesC&amp; aString)
+    {
+    TIpcArgs args(&amp;aString);
+    return SendReceive(ECountServSetFromString, args);
+    }</codeblock> <p> <codeph>SendReceive()</codeph> is called, specifying
+an operation code <codeph>ECountServSetFromString</codeph> and a <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object
+containing argument values. In this case, there is only one argument - a pointer
+to a <codeph>TDesC</codeph> object containing the string to be passed to the
+server. Typically, operation codes are enum values defined in a header file
+visible to both the client interface and the server. Note that the client
+descriptor must remain in existence until the server request completes. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57A73F9C-5E72-4445-BF2C-9D44A3EC88B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-57A73F9C-5E72-4445-BF2C-9D44A3EC88B5" xml:lang="en"><title>Advanced
+implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section includes information on:</p>
+<ul>
+<li><p><xref href="GUID-D78B510E-3F5C-4B5D-B53F-917F2DAF6C6A.dita">Mixing
+dialog and other application architectures</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B" xml:lang="en"><title>Windowing Collection</title><shortdesc>The Windowing collection contains two components—the Window Server,
+which manages the use of the screen by applications, and the Window Server
+Plugins component.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<fig id="GUID-11D007D6-E9B6-541F-8490-A546CEC69324">
+<title> The Windowing collection</title>
+<image href="GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e163491_href.png" placement="inline"/>
+</fig>
+</conbody><related-links>
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57A909F3-EAEA-5FE2-B620-E21204794497.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-57A909F3-EAEA-5FE2-B620-E21204794497" xml:lang="en"><title>How
+to Load the Physical Device Driver and Logical Device Driver: Tutorial</title><shortdesc>When testing using the console, all drivers need to be loaded directly.
+This tutorial describes how to load the drivers required for the Serial Communications
+Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Testing of communications software can be done using the Symbian
+OS console shell interface rather than a GUI interface. The console shell
+interface has advantages when testing since the console allows software to
+be tested in isolation. When testing with a GUI interface the testing can
+be difficult if other software in the GUI is attempting to access resources.
+If the device or the emulator is started with just the console, then only
+the kernel and file system are running. The tester can then load the software
+required for the test and ensure that no other software is using any resources.
+This avoids problems of other software interrupting the CPU or using and releasing
+memory or other hardware while a test is running. </p><p>Any test applications
+that have not been launched by the GUI should
+ explicitly load the correct physical and logical device drivers. In most
+cases the bootloader will load the physical device driver. It is safe to load
+a
+device driver which has already been loaded, since the API will return
+<xref href="GUID-D1D25122-F2B8-3C78-8599-84905BFD47B8.dita"><apiname>KErrAlreadyExists</apiname></xref></p> </context>
+<steps id="GUID-8D0D239F-51F9-512A-8405-ADD01AE1660B">
+<step id="GUID-21876E62-D2A9-510A-BAD2-CB3E4271A02B"><cmd>Identify the names
+of the physical and logical device drivers required.</cmd>
+<info><p> The names of device drivers change since variations are created
+for different platforms: the ecuart and infra-red logical device driver is
+usually called <filepath>ECOMM</filepath> while the USB logical device driver
+is usually called <filepath>EUSBC</filepath>. For fast infra-red the logical
+device driver is usually called <filepath>EFIR</filepath>. For ecuart, infra-red
+and USB the physical device driver is usually called <filepath>ECDRV</filepath> on
+the emulator. For devices the physical device drivers have a variety of names.
+The euart and USB the physical device driver is usually called <filepath>EUART</filepath> or <filepath>EUART</filepath> with
+a number for each port from base 1, for example <filepath>EUART1</filepath> and <filepath>EUART2</filepath>.
+For infra-red the physical device driver is usually called <filepath>EUART2</filepath>.
+For fast infra-red the physical device driver is usually called <filepath>DIFIR</filepath> for
+both emulator and devices. </p></info>
+</step>
+<step id="GUID-AE7AFB08-535A-5195-AF0D-4401390D8518"><cmd>Call <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-1D773C95-A0DE-38EC-85BA-82162B2DC62E"><apiname>User::LoadPhysicalDevice</apiname></xref> to
+load the physical device driver and check the return code.</cmd>
+<info>A return code of <codeph>KErrAlreadyExists</codeph> can be ignored. </info>
+</step>
+<step id="GUID-CE68C060-4A44-5547-9DE6-A81DEAC367B1"><cmd>Call <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-68D7C877-B611-3FCC-B85D-708501C1B66C"><apiname>User::LoadLogicalDevice</apiname></xref> to
+load the logical device driver and check the return code. </cmd>
+<info>A return code of <codeph>KErrAlreadyExists</codeph> can be ignored. </info>
+</step>
+<step id="GUID-E3332825-E22D-5D90-AA89-A6FD20500A9D"><cmd>Start the <xref href="GUID-2FED5145-58E4-5560-8E52-6BD499EECE13.dita">RootServer</xref> by calling <xref href="GUID-CFCBC5A6-FB1F-3DD7-B275-9B9C7389A8A7.dita"><apiname>StartC32()</apiname></xref>.</cmd>
+<info> The RootServer loads the Serial Communications Server. </info>
+</step>
+</steps>
+<example><title>Example</title> <codeblock id="GUID-B45CC19A-856B-54C2-84BD-840E72391F20" xml:space="preserve">#if defined (__WINS__)
+    #define PDD_NAME _L("ECDRV")
+#else
+    #define PDD_NAME _L("EUART1")
+#endif
+#define LDD_NAME _L("ECOMM")
+TInt r = User::LoadPhysicalDevice (PDD_NAME);
+if (r != KErrNone &amp;&amp; r != KErrAlreadyExists) 
+    {
+    User::Leave(r);
+    }
+r = User::LoadLogicalDevice (LDD_NAME);
+if (r != KErrNone &amp;&amp; r != KErrAlreadyExists) 
+    {
+    User::Leave(r);
+    }
+
+r = StartC32(); 
+User::LeaveIfError(r);</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-D90C86C6-B85D-5941-9919-3725A9FFD548.dita"><linktext>Text shell
+(eshell)</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416" xml:lang="en"><title>Text input</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>There are several finger-optimized text input methods available for touch-enabled devices. The available methods depend on the orientation of the device. The following methods are available in the portrait orientation:</p>
+<ul>
+<li><p>Virtual ITU-T keyboard with text prediction</p></li>
+<li><p>Handwriting recognition (HWR) for some language variants. Not available for Latin languages.</p></li>
+</ul>
+<p>The following methods are available in the landscape orientation:</p>
+<ul>
+<li><p>Virtual QWERTY opened in full screen with input preview</p></li>
+<li><p>Handwriting recognition</p></li>
+</ul>
+<p>The input methods that are available to mobile device users depend on the product. Users can select the suitable input method for each situation from the input methods that are included in the product. The device recalls the last used method and offers it the next time when the user wants to input something.</p>
+<fig id="GUID-0A84FE47-C9D6-48AF-A4A5-F643342733F9">
+<title>Virtual ITU-T keypad</title>
+<image href="GUID-D131F72E-AB21-443E-8661-5F6A509323BC_d0e47448_href.png" scale="60" placement="inline"></image>
+</fig>
+<fig id="GUID-A294F7A7-79E4-41E3-8456-9554FA23A3B4">
+<title>Virtual QWERTY keyboard</title>
+<image href="GUID-62D5E0F0-0041-436C-AEF3-3F1C32ABFC1A_d0e47456_href.png" scale="60" placement="inline"></image>
+</fig>
+<p>The virtual QWERTY keyboard displays a keyboard that has a collection of basic keyboard functions (Shift, Caps lock, punctuation marks, and so on) and a text field where the user can see the given input without having to follow it from the editor field. The handwriting recognition allows user to write characters on the screen with a finger.</p>
+<p>If touch input has been launched from an editor, pressing any hardware character key closes the touch input. This applies also to a situation where the same product has both a hardware and virtual keyboard. Activating the hardware keyboard character key closes the virtual keyboard. Touch input never starts up automatically (that is, a change of view does not launch it), but the user has to launch it by tapping the editing field. Moving the focus onto an editing field with the hardware keys does not launch touch input.</p>
+<section><title>Using touch-based text input in C++ applications</title><p>Avkon editor components support touch-based text input.</p><p>The API to use for providing touch-based text input is the Editors API. For implementation information, see Using the Editors API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e266789_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A" xml:lang="en"><title>Compound
+controls in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">Compound controls</xref> are
+controls that contain other controls. To create a compound control, you must
+do the following:</p>
+<ul>
+<li><p>construct the control in the parent control, which is the
+control that owns the window in which the control appears. The control should
+be constructed in the constructor for the window. An example of an implementation
+is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-87D5DA2C-DF12-40CA-8F39-CA9B61500F8F" xml:space="preserve">void CMyViewContainer::ConstructL(const TRect&amp; aRect)
+    {
+    CreateWindowL();
+
+    iLabel = new (ELeave) CEikLabel;
+    iLabel-&gt;SetContainerWindowL( *this );
+    iLabel-&gt;SetTextL( _L("MyView 1\n\nSelect local view\nswitching from menu") );
+
+    SetRect(aRect);
+    ActivateL();
+    }</codeblock>
+<p>, where</p>
+<p><parmname>iLabel = new (ELeave) CEikLabel;</parmname> creates a <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikLabel.html" format="application/java-archive"><parmname>CEikLabel</parmname></xref> object,
+which is a class that supports the display of text in the parent window.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetContainerWindowL%28const%20CCoeControl%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetContainerWindowL</parmname></xref> assigns
+the non-window-owning control to the window-owning control</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikLabel.html#bcf1d51ebf4177465387f76584078f0c" format="application/java-archive"><parmname>CEikLabel::SetTextL</parmname></xref> sets a text for the label.</p>
+<p>The other methods are the standard methods for creating a window for
+the window-owning control.</p>
+</itemgroup>
+</li>
+<li><p>add a method to the owning control that returns the number
+of controls in the compound control. An example of an implementation is as
+follows:</p>
+<itemgroup>
+<codeblock id="GUID-048B5DCE-124A-4530-89AD-842DCA2F3FFC" xml:space="preserve">TInt CMyViewAppContainer::CountComponentControls() const
+    {
+    return KNumberOfControls; // return nbr of controls inside this compound control
+    }</codeblock>
+<p>, where</p>
+<p><parmname>CMyViewAppContainer::CountComponentControls()</parmname> overrides <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCountComponentControls%28%29const" format="application/java-archive"><parmname>CCoeControl::CountComponentControls</parmname></xref> to
+return the number of controls in the compound control.</p>
+<p><parmname>KNumberOfControls</parmname> is a <parmname>TInt</parmname> constant
+for the number of controls in the application. Other approaches could be used.</p>
+</itemgroup>
+</li>
+<li><p>Add a method to the owning control that returns each of the
+controls by a zero-based index. An example of an implementation is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-3A8A5312-117E-466F-A5BC-6B7AF0A75B9C" xml:space="preserve">CCoeControl* CContainerContainer::ComponentControl(
+    TInt aIndex)  const
+    {
+        switch ( aIndex )
+        {
+        case 0:
+            return iLabel; // return a pointer to the 
+                             //iLabel
+        default:
+            return NULL;
+        }
+    }
+</codeblock>
+<p>, where</p>
+<p><parmname>CCoeControl* CContainerContainer::ComponentControl(TInt aIndex)</parmname> gets
+an indexed component of a compound control.  There are 2 ways to implement
+a compound control. One way is to override this function. The other way is
+to use the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlArrayClass.html#_top%20title=" format="application/java-archive"><parmname>CCoeControlArray</parmname></xref> functionality (see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aInitComponentArrayL%28%29" format="application/java-archive"><parmname>CCoeControl::InitComponentArrayL</parmname></xref> method).
+ Note: within a compound control, each component control is identified by
+an index, where the index depends on the order the controls were added: the
+first is given an index of <parmname>0</parmname>, the next an index of <parmname>1</parmname>,
+and so on. </p>
+<p>All child controls should be accessible by <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aComponentControl%28TInt%29const" format="application/java-archive"><parmname>CCoeControl::ComponentControl</parmname></xref> at any time, regardless
+of whether they are visible or not. The visibility of a control should be
+adjusted using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aMakeVisible%28TBool%29" format="application/java-archive"><parmname>CCoeControl::MakeVisible</parmname></xref> method.</p>
+</itemgroup>
+</li>
+</ul>
+<p><parmname>CCoeControl* CContainerContainer::ComponentControl(TInt aIndex)</parmname> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCountComponentControls%28%29const" format="application/java-archive"><parmname>CCoeControl::CountComponentControls</parmname></xref> work
+in conjunction with each other. The Symbian platform can query the control
+as to how many components it has and then request a pointer to each of the
+component's controls. Controls can be added or removed at run time using these
+two methods. The framework uses this information to draw the container. </p>
+<p>The compound control usually owns the child controls and therefore it
+is responsible of their construction and destruction. The compound control
+should also set the positions and sizes of its child controls; it must ensure
+that all child controls are inside the compound control rectangle and visible
+child rectangles do not overlap each other.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57DD8365-E60F-55C6-BB24-8D215A31A8AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-57DD8365-E60F-55C6-BB24-8D215A31A8AF" xml:lang="en"><title>How
+to track changes</title><shortdesc>This topic describes hoe to track changes made to file and free
+disk space.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-DF41D2BE-1FD6-421F-9D07-49CCAC7AC288"><title>File changes</title> <p>To be notified whenever there is a
+change in the file system, use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-5F5D51B6-2643-3482-8C9F-71DF6C3355C4"><apiname>RFs::NotifyChange()</apiname></xref>. This
+is better than having to poll regularly. </p> <p>Use the <codeph>TOpenFileScan</codeph> class
+to find out which files are open, and the thread id of the program that has
+them open. This is useful for programs such as shells to be able to highlight
+files that are presently open. It is also useful for backup programs, which
+may need to close or suspend the owning program before doing a backup. </p> </section>
+<section id="GUID-754E8C5D-BE23-43D7-93BB-9B22B89E4241"><title>Free disk space changes</title> <p>Clients can use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-38A2D71A-DDB5-355D-863D-43802C67D51F"><apiname>RFs::NotifyDiskSpace()</apiname></xref> to
+ask that they be notified when free disk space on a drive crosses a client
+defined threshold value. This means that a client is notified if free disk
+space either increases above the threshold value or decreases below that value. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57F29787-B425-53EA-9DB4-372B77543584.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-57F29787-B425-53EA-9DB4-372B77543584" xml:lang="en"><title>Plug-in Writer's Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Plug-in writers implement the interface definition, provide the registry information of the implementation and export the implementation. A plug-in writer needs to understand the interface definition, DLL creation and platform security implementation requirements of the framework.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-57F38146-1DA3-5657-ADF4-76DF740363C5"><title>Static Startup Configuration</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The System Starter is invoked by the Base Starter as part of the boot process once the file system has been mounted. It works by processing a list of instructions in sequence. The list is referred to as a Static Startup Configuration, or SSC. In practical terms the SSC is defined in a resource file and is built into the ROM. </p> <p>A fundamental feature of the SSC is that it allows the start up procedure to be optimised. Though the commands are processed in sequence their effect is to perform tasks not only in <b>sequence</b> (wait for the application or process to initialise before continuing) but also in <b>parallel</b> (do not wait for initialisation) and <b>at the optimum time</b> (wait until conditions are right). </p> <fig id="GUID-6D5009DF-61D7-5A40-9E8F-A4CCDD29A5BC"><desc><p>In the diagram above each vertical bar represents a process or application started during the startup procedure. The list on the left shows the SSC command for each process. An application may ‘rendezvous’ with the starter when its initialisation (shown in dark blue) is complete and it is ready to be used by dependent applications. A rendezvous is simply a signal from the appliation to the starter that it has reached a designated point. </p> </desc> <image href="GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e17282_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5801535A-3A7E-4E35-97F5-0DC6C7730952_d0e46861_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7" xml:lang="en"><title>Generic Application Support Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Generic Application Support provides services which are useful for the UI elements and applications.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-580471E3-7DFD-5325-A8B9-B3E7FABF872D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-580471E3-7DFD-5325-A8B9-B3E7FABF872D"><title>Using TDbColSetIter</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Using the iterator</title> <p><codeph>TDbColSetIter</codeph> provides a useful way to iterate over the contents of a column set. Given a <codeph>CDbColSet* set</codeph>, we can count the number of nullable columns like this:</p> <codeblock id="GUID-14CED4FF-C2A4-54E4-B089-A97EA9503AE6" xml:space="preserve">TInt nullable=0;
+for (TDbColSetIter iter(*set);iter;++iter)
+    {
+    if ((iter-&gt;iAttributes&amp;TDbCol::ENotNull)==0)
+        ++nullable;
+    }</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-58089281-9DD0-502D-8DFD-831E7BAA931E" xml:lang="en"><title>Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section contains the reference material that applications and tools require to use the Comms Database. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF" xml:lang="en"><title>Tactile
+feedback</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>There are two types of cases where vibration or audio of the
+device is used as an output method when the user is interacting with the device
+touch screen:</p>
+<ul>
+<li><p>When the user has touched an active area of the screen, and an action
+will be triggered on touch release</p></li>
+<li><p>Interaction with given components has been successful</p></li>
+</ul>
+<p>As with sounds, tactile feedback must be used carefully so as not to desensitize
+the user to the vibration: the attention grabbing quality remains and functions
+so long as the feedback is not too frequent.</p>
+<p>Tactile feedback is included in those common UI components, where seen
+as beneficial. When new components are designed, tactile feedback is to be
+included in those if seen beneficial usability-wise. For example, in any button
+type of UI component the tactile feedback is natural. Application can disable
+tactile feedback from the common UI components it uses, if seen necessary.
+This is acceptable only in cases, where tactile feedback would cause interference,
+like during a phone call or when giving audio commands to the system.</p>
+<p>The user can choose whether tactile feedback is on or off.</p>
+<section id="GUID-6F2398F3-DA71-4330-A63A-15F02D7533DF"><title>Characteristics
+of haptics related  APIs</title><p>You can use the following APIs to create
+haptic effects:</p><ul>
+<li><p>Tactile
+Feedback Client API</p><ul>
+<li><p>available from S60 5.0 onwards</p></li>
+<li><p>can be used on all S60 5.0 or later mobile devices but the feedback
+is played only on touch enabled layouts</p></li>
+<li><p>provides simple functions for triggering various predefined tactile
+feedback (vibration or audio) effects</p></li>
+<li><p>enables a consistent user experience in all applications of the mobile
+device (an application gives a logical feedback type as an input and the actual
+physical effect depends on the mobile device configuration and end user settings)</p></li>
+<li><p>when the area feedback is used, latency  is the smallest for the feedback
+triggering (tactile feedback can be triggered at the window server level before
+the corresponding pointer event is delivered to the visible application)</p></li>
+<li><p>direct feedback is easy to integrate into <codeph>HandlePointerEventL</codeph> code </p></li>
+<li><p>an application can select the logical tactile feedback from certain
+types and the produced effect may be different on various mobile devices</p></li>
+</ul></li>
+<li><p>Vibra
+API</p><ul>
+<li><p>available from S60 3.0 onwards</p></li>
+<li><p>can be used for running device vibrator with given intensity for given
+period of time</p></li>
+<li><p>a privileged client application can use this for playing pulse effects
+which have a really short duration (as the ones used for tactile feedback)</p></li>
+</ul></li>
+</ul></section>
+<section id="GUID-8D08AB75-2E24-44B6-88B6-4AE1CEBD70F7"><title>When to use
+Tactile Feedback Client API and Vibra API</title><p>You should use<ul>
+<li><p>Tactile Feedback Client API for providing tactile feedback in custom
+controls (grids, lists, etc.) which comply with the style of the Core UI components
+to ensure a uniform user experience among applications</p></li>
+<li><p>Vibra API to produce haptic effects such as ringing tone vibration</p></li>
+</ul></p></section>
+<section id="GUID-4003A7DC-0208-4436-B9A1-688D57149F6A"><title>Using
+tactile feedback in C++ applications</title><p>The API to use for tactile
+feedback is the <xref href="GUID-8661A7E0-F19A-41F8-9062-FBFAE70CF658.dita">Tactile
+feedback client API</xref>.</p><p>The Symbian platform includes a tactile
+feedback interface to add, modify and remove feedback areas in the registry.
+There is also an option to trigger direct feedback and bypass the registry.
+ <parmname>MTouchFeedback::Instance()</parmname> is used for acquiring a pointer
+to a touch feedback instance. When touch feedback is activated, the mobile
+device users get a slight vibration when the control with the feedback interface
+is touched. </p><note><p>Tactile feedback can be set be disabled in a client
+application or a mobile device in some situations, for example, during phone
+calls.</p></note><p>Client applications cannot determine the actual physical
+feedback that is generated. It depends on device configuration and current
+settings. In current devices, the user changeable settings include vibration
+and audio feedback intensity level.</p><p>In your application, you can use
+the following feedback types, defined in <codeph>TTouchLogicalFeedback</codeph>:</p><table id="GUID-6FF24F72-C352-4027-AA5D-2D34EBFA00F4">
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<tbody>
+<row>
+<entry><p><codeph>ETouchFeedbackNone</codeph></p></entry>
+<entry><p>Use for disabling feedback for some areas of the application window
+when using the area registry.</p></entry>
+</row>
+<row>
+<entry><p><codeph>ETouchFeedbackBasic</codeph></p></entry>
+<entry><p>Use as default feedback for stylus down events, for example, when
+the mobile device user taps a button or tab.</p></entry>
+</row>
+<row>
+<entry><p><codeph>ETouchFeedbackSensitive</codeph></p></entry>
+<entry><p>Sensitive feedback for situations where the triggering action is
+not very  important (e.g. change of focus in a list), or when there can be
+a large number of feedback instances within a short time (e.g. text selection
+which gives feedback on every new selected character). Also used for scrolling
+and dragging.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>To use vibration or audio feedback in your application:</p><ol>
+<li id="GUID-791E80D6-6935-4202-81E0-BA7392A9E1B3"><p>Include <codeph>touchfeedback.lib</codeph> in
+your <codeph>.mmp</codeph> file.</p></li>
+<li id="GUID-A185188F-F37B-440B-8213-214D77CF3B8B"><p>Include <parmname>touchfeedback.h</parmname>.</p></li>
+<li id="GUID-6455F4C1-AEA6-4C30-8E9B-DF9950558E17"><itemgroup><p>To enable
+tactile feedback for your application, add the following code.</p><codeblock xml:space="preserve">MTouchFeedback* feedback = MTouchFeedback::Instance();
+feedback-&gt;SetFeedbackEnabledForThisApp(ETrue); // enabling feedback is optional  </codeblock><p>Do
+not delete the pointer in the controller destructor.</p></itemgroup></li>
+<li id="GUID-FC1B810B-99F4-44E5-82DC-46686D6D4198"><itemgroup><p>To use tactile
+feedback when a mobile device user points at a control, add the following
+code.</p><codeblock xml:space="preserve">void CMyContainerControl::HandlePointerEventL(const TPointerEvent&amp; aPointerEvent)
+    {
+    // Feedback is always played at pointer down event
+    if(aPointerEvent.iType == TPointerEvent::EButton1Down)
+        {
+        MTouchFeedback* feedback = MTouchFeedback::Instance();  
+        if (feedback) 
+             { 
+             feedback-&gt;InstantFeedback(ETouchFeedbackBasic);  
+             }  
+        }
+   
+    // Your other pointer event handling code here
+</codeblock></itemgroup></li>
+<li id="GUID-A26D8717-1839-4132-98C4-5C09086BB361"><itemgroup><p>To enable
+automatic feedback triggering in a specific area of a UI component, add</p><codeblock xml:space="preserve">feedback-&gt;SetFeedbackArea(this, 
+                              1, // area Id
+                              TRect(0,0,20,20), 
+                              ETouchFeedbackBasic, 
+                              ETouchEventStylusDown);
+</codeblock></itemgroup></li>
+</ol><note><p>Using tactile feedback does not require additional platform
+security capabilities for your application.</p></note></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070-master.png has changed
Binary file Symbian3/SDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e92651_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5822CE94-C8AF-5F81-AB3F-E95B44265065.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5822CE94-C8AF-5F81-AB3F-E95B44265065"><title>debuggable</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>debuggable</codeph> </p> <p>Use the <codeph>debuggable</codeph> statement to mark the application to be debugged using the run-mode debug API. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5829247E-2E8E-502F-9051-A59DA8EE71B0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5829247E-2E8E-502F-9051-A59DA8EE71B0" xml:lang="en"><title>CBase-derived
+classes and two-phase construction</title><shortdesc>This document describes the need for two-phase construction and
+how to use second phase constructors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When the construction of an object cannot leave (except for out-of-memory
+for the allocation of the object itself), then it is appropriate to use the
+conventional C++ constructor, which is automatically invoked by <codeph>new</codeph>. </p>
+<p>When the construction of an object may leave, then the object must be pushed
+to the clean-up stack, or a pointer to the object must be stored in an object
+that would be cleaned up if a leave occurred, <i>before</i> any part of the
+construction function is invoked that may leave. To allow this to happen,
+construction steps that can leave, are performed not in the C++ constructor,
+but in another initialization functions, referred to as a second phase constructor.</p>
+<p>Thus, the general sequence for two-phase construction is:</p>
+<ol id="GUID-4EA8A66C-A0FA-58D4-BD86-7FD72029AA17">
+<li id="GUID-38D6D313-2348-5E1A-95BB-205AF451CC5D"><p>allocate memory for
+the object (and leave if out of memory) using <codeph>new</codeph> </p> </li>
+<li id="GUID-1BC50131-75C9-5EFF-9439-030FB35750F9"><p>optionally define a
+C++ constructor to perform any construction that cannot leave</p> </li>
+<li id="GUID-DA1E047E-40E6-5B71-BB02-C42C7B3609C8"><p>push a pointer to the
+object, or store a pointer to it in a class with cleanup support</p> </li>
+<li id="GUID-6FDA6D4A-9ECD-509D-9D0D-3E7234961657"><p>use the second phase
+constructor to perform any part of the construction that might leave</p> </li>
+</ol>
+<p>Note that:</p>
+<ul>
+<li id="GUID-C67CA4EB-480A-5A5B-A4F5-B7206DBD3CFE"><p>The whole sequence is
+usually encapsulated in static member functions called <codeph>NewL()</codeph>,
+and <codeph>NewLC()</codeph> (which additionally leaves the created object
+on the clean-up stack).</p> </li>
+<li id="GUID-B0AC323F-EDF5-5BEE-B843-A46E5611B1F3"><p>Abstract classes are
+not intended to be instantiated, and so have no <codeph>NewLC()</codeph> or <codeph>NewL()</codeph>,
+only a second phase constructor.</p> </li>
+<li id="GUID-557838D0-10D0-55B3-9848-254065EFDFF4"><p>Step 2 is optional,
+because all such construction can be performed by the second phase constructor.
+The C++ constructor is only necessary when the class is immediately derived
+from a base class whose default C++ constructor cannot be used. In this case,
+the derived class must call the base class’s constructor with appropriate
+parameters.</p> </li>
+<li id="GUID-93707F75-0BB3-563F-B00C-35683DEE007C"><p>It is conventional for
+the second phase constructor to be called <codeph>ConstructL()</codeph>. </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-582CAA4A-1240-5138-983D-D9C6EEAF5566.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-582CAA4A-1240-5138-983D-D9C6EEAF5566" xml:lang="en"><title>SQL Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-58318BAB-2EC4-4C9E-A7CA-580E701EE54F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-58318BAB-2EC4-4C9E-A7CA-580E701EE54F" xml:lang="en"><title>Adding
+and removing toolbar items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> Toolbar items are controls that derive from the <codeph>CCoeControl</codeph> base
+class. The floating toolbar can have only buttons (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref>) if it is focusing. The number of buttons displayed in floating toolbar
+depends on the screen resolution in use. The fixed toolbar always has three
+buttons. </p>
+<p>You can define toolbar items either in the resource file or create them
+dynamically at runtime. </p>
+<p>If you define the items in resources, use the <codeph>TBAR_CTRL</codeph> structure.
+Define at least the type, ID, and the control itself in this structure. For
+the resource definitions, see <xref href="GUID-402C3EE7-8852-49B6-BE62-8588753FAC8F.dita">Constructing
+the toolbar</xref>.</p>
+<p>To add the items dynamically, use the toolbar functions as illustrated
+in the examples below.</p>
+<p>You can add items to a specific position in toolbar or as the last item
+in the toolbar. </p>
+<p>You can also remove toolbar items at runtime.</p>
+<p>The example below shows how to add a button dynamically as the last toolbar
+item.</p>
+<codeblock xml:space="preserve">
+void CMyAppView::AddItemAsLastToToolbarL()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknButton* newButton = CAknButton::NewL( R_MYAPP_BUTTON );
+        toolbar-&gt;AddItemL( newButton, EAknCtButton, KButtonId, 0 );
+        }
+    }
+</codeblock>
+<p>The example below shows how to add a button dynamically as the first toolbar
+item.</p>
+<codeblock xml:space="preserve">
+void CMyAppView::AddItemAsFirstToToolbarL()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknButton* newButton = CAknButton::NewL( R_MYAPP_BUTTON );
+        // Last parameter the index at where to add the button
+        toolbar-&gt;AddItemL( newButton, EAknCtButton, KButtonId, 0, 0 );
+        }
+    }
+</codeblock>
+<p>The example below shows how to remove a button from the toolbar based on
+the button ID.</p>
+<codeblock xml:space="preserve">
+void CMyAppView::RemoveItemFromToolbar()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        toolbar-&gt;RemoveItem( KButtonId );
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5872329F-2B52-5F52-83C1-205F2F933877.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5872329F-2B52-5F52-83C1-205F2F933877" xml:lang="en"><title>OR_LEAVE
+macro Tutorial</title><shortdesc>Macro is a rule or pattern that specifies how a certain input sequence
+should be mapped to an output sequence according to a defined procedure. This
+tutorial describes the OR_LEAVE macro and provides details on how the OR_LEAVE
+macro should be used. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Required background</title> <p>Before beginning you must know
+the following: </p> <ul>
+<li id="GUID-13B9C89C-BFF4-553F-B647-034322ADFAE2"><p> <xref href="GUID-611F17E3-DC06-33B7-AE5E-E69B5AEC5969.dita"><apiname>UserLeaveIfError()</apiname></xref> <b> :</b> Error
+handling code. This function is called when a client is passing a file for
+a server to handle. </p> </li>
+</ul> </section>
+<section><title>Introduction</title> <p>The OR_LEAVE macro is a convenience
+macro that allows the developer to deemphasize auxiliary error checking code
+in most cases. It is a postfix macro which implements <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> on
+an integer return type. This means that there is less focus on the error handling
+code and makes the code easier to read. </p> <title>Defining a OR_LEAVE macro </title> <p>The
+OR_LEAVE macro is defined as a postfix operator. An example code snippet is
+shown below: </p> <codeblock id="GUID-031AA312-AB5E-5B0F-940C-33DD71A82BCC" xml:space="preserve">
+#define OR_LEAVE || Eleave
+inline void operator||(Tint aStatus, Tleave /*aTag*/)
+    {
+    User::LeaveIfError(aStatus);
+    }
+</codeblock> <p>It is a postfix macro which implements <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> function
+on an integer return type. This means that there is less focus on the error
+handling code and makes the code easier to read. </p> </section>
+<section><title>Using OR_LEAVE macro</title><p>The <codeph>OR_LEAVE</codeph> 
+is used to replace a call to <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> function.
+An example code snippet is shown below:  </p><codeblock xml:space="preserve">User::LeaveIfError(iTimer-&gt;CreateLocal());</codeblock><p>The
+call to <codeph>iTimer-&gt;CreateLocal()</codeph> is included within the error
+handling code <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> function and is difficult
+to read. The following fragment uses the <codeph>OR_LEAVE</codeph> macro. </p><codeblock xml:space="preserve">iTimer-&gt;CreateLocal() OR_LEAVE;
+</codeblock></section>
+</conbody><related-links>
+<link href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita"><linktext>EUser High
+Level Library  Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5875C752-12A9-5819-90D9-CAAE48F1A5C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5875C752-12A9-5819-90D9-CAAE48F1A5C5" xml:lang="en"><title>Using
+CArrayFixSeg&lt;TAny&gt;</title><shortdesc>The <codeph>CArrayFixSeg&lt;TAny&gt;</codeph> is useful for constructing
+an array of fixed length buffers, where the length is decided at run time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-C0F44785-6E5F-447D-B1AC-F5187527D73F"><title>Arrays whose type is not known until class instantiation</title> <p>The <codeph>CArrayFixSeg&lt;TAny&gt;</codeph> is
+useful for constructing an array of fixed length buffers, where the length
+is decided at run time. It is also useful as a data member of a base class
+in a thin template class/base class pair where the type of the array element
+is not known until the owning thin template class is instantiated.</p> <p>For
+example, to implement a stack of fixed length objects of type <codeph>T</codeph>.</p> <codeblock id="GUID-F707A19F-A9C0-5704-973B-11A0087F714D" xml:space="preserve">class CExampleBase : public CBase
+ {
+public :
+ ...
+protected :
+ ...
+ void  PushL(const TAny* aPtr);
+ TAny* Pop();
+private :
+ CArrayFixSeg&lt;TAny&gt; iArray;
+ }</codeblock> <codeblock id="GUID-8DA14B1F-3771-56F8-9C15-4E1BB0AC68CE" xml:space="preserve">template &lt;class T&gt;
+class CExample : public CExampleBase
+ {
+public :
+ ...
+ inline void PushL(const T* aPtr);
+ inline T*   Pop();
+ }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-58ACE248-BF26-57BB-B5D2-C772FC046222.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-58ACE248-BF26-57BB-B5D2-C772FC046222"><title>Searching the Contact Database</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The class <xref href="GUID-B9762BE2-1C1B-36CD-95EA-F7C4A832AA0B.dita"><apiname>CContactFindView</apiname></xref> provides a view of an existing <xref href="GUID-DA9AB241-DB29-3802-BF4F-195046341F78.dita"><apiname>CContactViewBase</apiname></xref> -derived object, populated using search criteria. The find view only contains Contact Items from the underlying view that match the search criteria. The find view observes its underlying view so that it is kept up to date if the contents of the underlying view change. </p> <p> <xref href="GUID-B9762BE2-1C1B-36CD-95EA-F7C4A832AA0B.dita#GUID-B9762BE2-1C1B-36CD-95EA-F7C4A832AA0B/GUID-B46629B1-4BF5-3A9A-BE2B-4E235B1AD816"><apiname>CContactFindView::FindL()</apiname></xref> searches the database for a text string. The function searches the fields contained in the field definition. The caller takes ownership of the returned object. There is a limit of 255 characters on the search string length. </p> <p>Email addresses are looked-up as follows: </p> <codeblock id="GUID-9D399274-604B-502B-95DC-A1AD3FCC15CD" xml:space="preserve">_LIT(KEmailAddressToLookup,”email@symbian.com”);
+CContactDatabase* database = CContactDatabase::OpenL();
+CContactTextDef* def=CContactTextDef::NewL();
+def-&gt;Append(KUidContactFieldEMailValue);
+CContactIdArray* results;
+results=database-&gt;FindLC(KEmailAddressToLookup, def);</codeblock> <p> <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-756E0437-1589-3CA2-98FA-0412213B1DF4"><apiname>CContactDatabase::MatchPhoneNumberL()</apiname></xref> returns an array of IDs for all the Contact Items that may contain the specified telephone number in a telephone, fax or SMS type field. The number is compared starting from the right side of the number field. The method returns an array of candidate matches. </p> <p>The recommended way to look up a contact ID that corresponds to a phone number is shown below. This example performs a 7 digit match: </p> <codeblock id="GUID-F4D35B4D-CEE1-5F92-A04E-838B743A7FF8" xml:space="preserve">const TInt KNumberOfDigitsToMatch=7;
+_LIT(KPhoneNumberToMatch,”020 75632000”);
+CContactDatabase* database = CContactDatabase::OpenL();
+CContactIdArray* results;
+results = database&gt;MatchPhoneNumberL(KPhoneNumberToMatch,KNumberOfDigitsToMatch);</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-58CA15F8-D984-5D07-8C00-161FA16A8FD3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-58CA15F8-D984-5D07-8C00-161FA16A8FD3" xml:lang="en"><title>Application Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Application Framework subsystem is architecturally central to the Symbian platform and enables applications written in C++ and Java to run on Symbian platform devices.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-58F65411-CF08-5F46-8222-3FDB9E571FCC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-58F65411-CF08-5F46-8222-3FDB9E571FCC" xml:lang="en"><title>Connecting to remote devices</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>There are several steps for an application to undertake when connecting to a remote device in order to use a service on that device. The first is to determine the device with which the user wants to communicate. Then the application needs to find out whether the service that it wants is available. Finally, the application will need to connect, and perhaps enforce some security on the link if necessary. </p> <p>The following topics walk through this sequence: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-591552AB-D708-5CB5-9597-A0AF3D303178.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-591552AB-D708-5CB5-9597-A0AF3D303178" xml:lang="en"><title>Headers</title><shortdesc>This document describes the concept of headers as regards to doubly
+linked lists.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A header forms the anchor point for a doubly linked list. In common with
+the elements of the list, the header includes a <i>link</i> object as a component.</p>
+<p>The header includes the following functionality:</p>
+<ul>
+<li id="GUID-A713D790-2003-5788-889F-E3B3D9669B0D"><p>allows elements to be
+added to the start and end of a doubly linked list, but <i>not</i> to the
+middle.</p> </li>
+<li id="GUID-84EB986A-7501-57FF-BFD0-DB67182A3050"><p>tests if an element
+is at the start or end of a list.</p> </li>
+<li id="GUID-94683FD4-C576-520D-8CEC-D1D7A8978D0C"><p>returns pointers to
+elements at the start or the end of a list.</p> </li>
+</ul>
+<p>A header is an instance of the templated class <codeph>TDblQue&lt;class
+        T&gt;</codeph>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1" xml:lang="en"><title>Menu
+bars</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<fig id="GUID-3C745A35-F53E-4801-B260-7006F85BBE2F"><title>Menu bar configuration</title><image href="GUID-C6B65A53-BE0A-4C35-B355-379D9FE494F8_d0e59665_href.png"></image></fig>
+<p>The Symbian platform uses <parmname>MENU_BAR</parmname> resources
+to create the <parmname>Options</parmname> menu, when a mobile device user
+selects the <parmname>Options</parmname> softkey. The options that appear
+above the softkeys are determined by <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA
+resources</xref>. The <parmname>MENU_BAR</parmname> resources map the text
+that appears in the <parmname>Options</parmname> menu with commands that are
+collected by the event loop of the application framework and delivered to
+your application for <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref>.</p>
+<p>As the above figure illustrates, in menu bars, different elements in
+the <b>Options</b> menu are declared in a series of <xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">resource
+statements</xref>. For information on declaring resources for menu bars, see <xref href="GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita">Menu
+bar resource statements</xref>.</p>
+<p>Access to menus is provided through the Options Menu API.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59217FA7-3078-53CA-88B3-78D6FB788271" xml:lang="en"><title>Message
+Type Module Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Message Type Modules (MTMs) are polymorphic DLL plug-ins that implement
+the interfaces defined by the Message Server framework to handle various message
+types—such as, IMAP4, POP3, SMTP, SMS and MMS. </p>
+<section><title>Purpose</title> <p>Client applications can access different
+types of message and every message type must handled in a specific way. To
+support a new message type within the client applications, MTMs to implement
+that type must be provided. The following points are specific to each message
+type, and so must be implemented in an MTM: </p> <ul>
+<li id="GUID-B47F5D1A-1C45-56FE-8074-D48F8B72AA58"><p>Message structure </p> </li>
+<li id="GUID-39DEC177-3210-5ED2-8095-32728E33EF7A"><p>User interface requirements </p> </li>
+<li id="GUID-3BA20B3C-0922-515D-8E11-B5A7336CE263"><p>Addressing mechanism </p> </li>
+<li id="GUID-3ADE85A9-3BF2-50F0-9A94-01002A440CF9"><p>Error handling mechanism </p> </li>
+<li id="GUID-E0E95CA4-EB36-5D90-8313-CC608ED2ABF1"><p>MTM DLL information </p> </li>
+</ul> <p>A Message Server abstraction that is used to locate and load particular
+MTM components. </p></section>
+<section><title>Description</title> <p>The MTM architecture is the plug-in
+scheme provided by the Messaging Framework to integrate different message
+transports to the Message Server. The plug-in scheme consists of four interfaces,
+the UI MTM, UI Data MTM, Client MTM and Server MTM. </p> <ul>
+<li id="GUID-A2763364-A20D-52B4-99FB-5D08747C22B4"><p>Client MTM manages the
+message type’s data model, providing the UI MTM and client applications with
+interfaces to access and to search for messages. </p> </li>
+<li id="GUID-BCF8AD0F-42D9-55D3-92DE-998FBD97E5E9"><p>User Interface (UI)
+Data MTM provides icons, menu text and a list of capabilities for a message
+type. </p> </li>
+<li id="GUID-66AFF19F-1ED2-5AF4-A079-5C8B5344E557"><p>User Interface (UI)
+MTM implements the user interface required for the message type, including
+a viewer, editor and dialog settings. </p> </li>
+<li id="GUID-6C73D1B2-A6F6-5F26-A814-6BD38F43DE3B"><p>Server MTM provides
+message transport over the network and manages a queue of outstanding client
+requests, and ensures that more than one message of a given type is sent simultaneously. </p> </li>
+</ul> <p>Each of the MTM DLLs is a polymorphic DLL that exports an instance
+of a system-defined base class. The Message Server and client applications
+use these base class interfaces to access MTM functionality in a generic and
+extensible way. The MTM in turn implements a specialized version of the class
+to provide specific message type functionality. </p> <p>Client applications
+can load and use the UI MTM, UI Data MTM and Client MTM DLLs. The DLLs are
+loaded within the client’s process space. The Server MTM DLLs are loaded within
+the Message Server process. The Messaging Middleware architecture allows clients
+to access the combined functionality of the Message Server and the Server
+MTMs through a single server interface. The following figure shows the MTM
+architecture. </p> <fig id="GUID-D9869871-08F2-5601-8A9C-1871D2AB4E1B">
+<title>              MTM architecture            </title>
+<image href="GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e253528_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>Message Server and MTMs</title> <p>The following figure shows
+the relationship between the Message Server and MTMs. The grey classes are
+realisations of the MTM interfaces defined by the Messaging Framework. The
+Message Server depends on the Server MTM interface and controls access to
+message data and delegates protocol-specific requests to Server side MTMs.
+Messaging clients depend on the Client, UI and UI Data MTM interfaces and
+the Message Server client API. </p> <fig id="GUID-F743115B-6934-5026-9D15-8DA5BE3A2D6F">
+<title>              Relationship between Message Server and MTMs        
+   </title>
+<image href="GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e253544_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>MTM class summary</title> <p>Messaging Middleware provides
+the following base classes, which defines the component interfaces for MTM
+implementations. </p> <ul>
+<li id="GUID-B72EC9B2-DC51-502F-A23C-303597405B13"><p>The base class for UI
+MTMs is <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref>. </p> </li>
+<li id="GUID-5549337B-621D-52F0-A19F-A0EA61816486"><p>The base class for UI
+Data MTMs is <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref>. </p> </li>
+<li id="GUID-D2E07F67-69DF-54A8-A7E2-3EA64FD74D3C"><p>The base class for Client
+MTMs is <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref>. </p> </li>
+<li id="GUID-42B1BC77-0D29-5627-93C2-CDCC02417B2F"><p>The base class for Server
+MTMs is <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref>. </p> </li>
+</ul> <p> <b> Important:</b> MTMs can also provide message type-specific functionality
+that is not defined by the base class interfaces. For example, for IMAP4,
+perform a full synchronization with a remote service; for POP3, connect to
+a remote server and download messages. The APIs for the client interfaces
+are extensible through run time type information provided by the <xref href="GUID-B3B2885E-DB79-3047-BCD9-C2A9BF08F5FD.dita"><apiname>QueryCapability</apiname></xref> API,
+and the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> and <xref href="GUID-88DEB665-B4B1-3F73-A2A9-44E72C8514B4.dita"><apiname>InvokeSyncFunction</apiname></xref> APIs. </p> <p>For
+information on how to implement the base classes, see the <xref href="GUID-F3E5D412-BEB5-4E0F-9CDE-1DF3F9302BC3.dita">Implementing
+MTMs</xref>. </p> </section>
+<section><title>MTM functions</title><p>The MTM DLLs provide the following
+functions. MTMs implement them according to the requirements for the message
+type: </p><ul>
+<li id="GUID-56E24547-DA0C-5B01-B68C-4A928D07802F"><p>Querying functionality </p> <p>Allow
+the client applications to query the supported functionality for the message
+type. For example, the maximum message size or whether attachments are supported. </p> </li>
+<li id="GUID-110AFD4C-09D8-585D-B078-6DCD1A4525B4"><p>Message management functionality </p> <p>Allow
+the client applications to manage the messages, for example, to send, reply
+and forward messages. </p> </li>
+<li id="GUID-92F32F80-8E5F-56F9-B35B-99A2934C50E5"><p>Attachment management
+functionality </p> <p>Allow the client applications to handle attachments.
+For example, to add, remove or create an attachment for a particular message. </p> </li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita"><linktext>Message Server
+and Store</linktext></link>
+<link href="GUID-400E4702-973A-5CAC-9F9C-3A10121F856A.dita"><linktext>Types of
+MTM</linktext></link>
+<link href="GUID-F3E5D412-BEB5-4E0F-9CDE-1DF3F9302BC3.dita"><linktext>Implementing
+MTMs</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9" xml:lang="en"><title>RTPExample:
+RTP Packet Streaming Example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p>This example code demonstrates RTP
+packet streaming. It uses <codeph>CRtpFileSender</codeph> to send RTP packets
+and <codeph>CRtpFileStreamer</codeph> to receive RTP packets. The example
+opens an RTP session using the pre-connected socket and initialises new send
+and receive sources on the RTP session. It registers the callback functions
+when an RTP packet is successfully sent by a send source or received by a
+receive source, to receive notifications whenever an RTP packet is sent or
+received. </p> <p>The <filepath>RTPExample</filepath> example code provides
+the following functionality: </p> </section>
+<section id="GUID-1A5135CC-CAF2-58D8-B37D-5C04B0454D59"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a4ef24ea-0ffa-410a-a19c-e1085f64c0e2.zip" scope="external">RTPExample.zip</xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a4ef24ea-0ffa-410a-a19c-e1085f64c0e2.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Initialising</title> <codeblock id="GUID-DD0E36D0-2CC4-52FF-8C58-2D0061A453CA" xml:space="preserve">void CRtpFileStreamer::ConstructL();</codeblock> <p>Opens an RTP session using the pre-connected socket and initialises new send
+sources on the RTP session. </p> </section>
+<section><title>Sending an RTP packet</title> <codeblock id="GUID-53DAAACD-46A9-5DAA-8B2D-A4108DA6DFA7" xml:space="preserve">void CRtpFileSender::RunL();</codeblock> <p>Sends the RTP packet. This does the following: </p> <ul>
+<li id="GUID-C279418B-B804-53F1-B18F-1FB030BC6007"><p>gets a new RTP packet
+to send from the send source </p> </li>
+<li id="GUID-35269B55-BD88-5CEA-A9E1-5423BB0E3AF9"><p>sets the RTP timestamp
+of the RTP packet </p> </li>
+<li id="GUID-E38F83C8-5D08-51D2-9E6A-DA81FEBF6512"><p>reads a block of data
+from the source file </p> </li>
+<li id="GUID-42F2FE2D-D3B5-583E-B05C-CC693D3E14C9"><p>creates an RTP packet
+using the block of data </p> </li>
+<li id="GUID-B6ED7AF9-F395-589E-B511-3EBEAEF2E359"><p>sends the RTP packet </p> </li>
+<li id="GUID-84488760-F28D-584A-A5F1-9E5D44C8C2D4"><p>closes the source file. </p> </li>
+</ul> <p> <codeph>CRtpFileSender::PacketSent()</codeph> is called to notify
+that the RTP packet has been successfully sent. </p> </section>
+<section><title>Receiving an RTP packet</title> <codeblock id="GUID-0C30C58E-70B9-5E2A-946F-F349E8026454" xml:space="preserve">void CRtpFileStreamer::NewSource();</codeblock> <p>When an RTP packet with a new receive source arrives, this callback function
+is called, which registers the packet. This can be used for different types
+of RTP packets such as APP, BYE, SDES, SR and RR. </p> <codeblock id="GUID-22A41C41-613E-5DB5-BA35-1F92FEE214AF" xml:space="preserve">void CRtpFileStreamer::PacketArrived();</codeblock> <p>Whenever an RTP packet arrives, this callback function is called. The
+function retrieves the payload from the packet received and writes it to the
+target file. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket </apiname></xref>  <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ </apiname></xref>  <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection </apiname></xref> <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname> RRtpSession </apiname></xref>  <xref href="GUID-EF30A0A3-612A-362D-9AC5-07FD314E5CDC.dita"><apiname>RRtpSendSource </apiname></xref>  <xref href="GUID-3690BFA1-A4EA-34EA-AD63-5FCC14CB67A2.dita"><apiname>RRtpReceiveSource </apiname></xref>  <xref href="GUID-0720D1BD-7F73-3EF6-80A6-17127EF17C91.dita"><apiname>RRtpSendPacket </apiname></xref>  <xref href="GUID-3E4F47A8-0432-307A-B871-A2F7F3A7505F.dita"><apiname>RRtpReceivePacket </apiname></xref>  <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs </apiname></xref> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile </apiname></xref>  </p></section>
+<section><title>Usage</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian
+OS build process</xref> describes how to build an application. </p> <p>This
+is a console application, so does not have a GUI. It builds an executable
+called <filepath>RTPExample.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to task away from the app launcher/shell screen to
+view the console. </p> </section>
+<section><title>See also</title> <p> <xref href="GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita">RTP
+overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-594488FF-02C9-5066-85DB-5F88A754AE18" xml:lang="en"><title>How to build DLLs</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB" xml:lang="en"><title>Controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The term <i>control</i> refers to a rectangular area of the display
+that may respond to user input events. A control provides a means of access
+to a window, which means it can be drawn onto the window and receive input.</p>
+<p>Controls are derived from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>.</p>
+<p>Examples of controls include:</p>
+<ul>
+<li><p>buttons</p></li>
+<li><p>menus</p></li>
+<li><p>text edit boxes</p></li>
+<li><p>main panes that display application specific data</p>
+</li>
+</ul>
+<p>For more information on controls, see:</p>
+<ul>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/index.html#ApplicationFrameworkOverview%2eUIControlFrameworkGuide2%2etoc" format="application/java-archive">Controls</xref></p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/WindowOwningControls.guide.html#ApplicationFrameworkOverview%2eUIControlFrameworkGuide2%2eWindowOwningControls" format="application/java-archive">Window-owning controls and non-window-owning controls</xref></p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/RunTimeControlHierarchy.guide.html#ApplicationFrameworkOverview%2eUIControlFrameworkGuide2%2ehierarchy" format="application/java-archive">The run-time control hierarchy</xref></p>
+</li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkOverview.guide.html#ApplicationFrameworkOverview%2eUIControlFrameworkOverview%2emain" format="application/java-archive">UI Control Framework overview</xref></p>
+</li>
+</ul>
+<p>For information on controls and event handling, see <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">Window
+server events</xref>.</p>
+<p>For more information on implementing controls in different architecture
+approaches see:</p>
+<ul>
+<li><p><xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">Traditional
+Symbian UI application architecture</xref> </p>
+</li>
+<li><p><xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">View
+architecture</xref></p>
+</li>
+<li><p><xref href="GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita">Dialog
+architecture</xref></p>
+</li>
+</ul>
+<p>This section comprises:</p>
+<ul>
+<li><p><xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">Window
+owning and non-window owning controls</xref></p>
+</li>
+<li><p><xref href="GUID-40CA47C0-76F9-42FE-AF9D-0B1BF42ACCB7.dita">Compound
+controls</xref></p>
+</li>
+<li><p><xref href="GUID-F3262DF6-39CA-4E96-AD0E-C1FFDE9B0A61.dita">Commonly
+used controls</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-596ADF23-FC69-5415-AAC6-EF565F75D0B1" xml:lang="en"><title>Choices
+with buffers</title><shortdesc>Explains when to use dynamic buffers and whether to select flat
+or segmented type of buffer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Dynamic buffers present two choices to potential users:</p>
+<ol id="GUID-9759CE0C-F6E9-50E5-BA88-CC900ADB9D97">
+<li id="GUID-434CA252-2933-5C7C-B122-84D7130F0FA8"><p>is it worth using dynamic
+buffers at all?</p> </li>
+<li id="GUID-A069A411-61D4-5A27-8C96-589005AA77E6"><p>if so, is it better
+to use flat or segmented buffers?</p> </li>
+</ol>
+<section id="GUID-1384B166-534A-4E97-8736-A5F9F7FEF44C"><title>Dynamic buffers or other storage?</title> <p>Use a more conventional
+scheme, such as a descriptor if:</p> <ul>
+<li id="GUID-CAB88D90-0052-5AC5-A92B-6889ACC4B80B"><p>the exact size of your
+data is known at compile time, or in any case before the data begins to be
+read into memory</p> </li>
+<li id="GUID-0B860F24-1053-5FAC-864B-EF017251E0AF"><p>the exact size is not
+known, but its maximum limit is known, and that limit is sufficiently small
+that it involves little waste</p> </li>
+<li id="GUID-8BCE0EAE-9BDE-5C7F-959E-1F0F1732DB6A"><p>the functions you require
+are provided by the descriptor classes</p> </li>
+</ul> <p>On the other hand, use dynamic buffers if:</p> <ul>
+<li id="GUID-010F488A-1D0B-5971-AFB0-A3324F0B170D"><p>the exact size of your
+data is not known and it’s possible that the data may grow significantly during
+its lifetime</p> </li>
+<li id="GUID-B812CBBD-924D-5B55-8F2D-26572285B30E"><p>the class you are working
+with requires the use of buffers — for example, the array classes derived
+from <codeph>CArrayFixBase</codeph>, <codeph>CArrayVarBase</codeph> and <codeph>CArrayPakBase</codeph> use
+buffers in their implementation.</p> </li>
+</ul> <p>The dynamic buffer classes are a general solution for requirements
+such as these. In some quite specialised cases, the particular requirements
+of the problem are more exacting than those met by dynamic buffers, and a
+specialised buffer scheme may be necessary.</p> </section>
+<section id="GUID-E11053B5-A588-42F7-B143-483414108CE2"><title>Flat or segmented buffers?</title> <p>If dynamic buffers are
+appropriate, use flat buffers if:</p> <ul>
+<li id="GUID-799B7113-F676-5AF2-A0A9-F3D7A0069F9B"><p>efficiency in transforming
+between buffer position and memory address is very important</p> </li>
+<li id="GUID-150BC797-DA33-58F2-A62D-6568992F1289"><p>the re-allocations needed
+to extend the buffer are sufficiently rare that they do not cause intolerable
+amounts of data copying or heap fragmentation</p> </li>
+<li id="GUID-1C634D8F-4566-5C21-8EB5-350C453C6AC5"><p>there is an upper bound
+on the size limit, and can reserve sufficient room, using <codeph>SetReserveL()</codeph> before
+inserting (this is typically followed by call to <codeph>InsertL()</codeph>).</p> </li>
+</ul> <p>On the other hand, use segmented buffers:</p> <ul>
+<li id="GUID-7B3DA8E1-86BD-5252-B4B4-6F6D69EADC77"><p>to minimise the heap
+thrashing and copying that can be associated with re-allocating a single flat
+buffer</p> </li>
+<li id="GUID-D0843F86-B168-576B-9E73-AB017DAABFFB"><p>if there is a concern
+about the performance of frequent insertions and deletions, which even without
+much heap allocation, can be better with segmented buffers as not all data
+after the insertion/deletion point needs to be shuffled to complete the operation.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e195746_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5986717C-C777-590D-8487-CB8ED488E975.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5986717C-C777-590D-8487-CB8ED488E975" xml:lang="en"><title>makmake
+command syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Symbian projects are defined by an <filepath>.mmp</filepath> file which
+specifies the essential elements of the project. The <filepath>makmake</filepath> tool
+then uses this environment neutral file to build makefiles for use in various
+environments. These makefiles are then used for project development. </p>
+<p><b>Invocation syntax </b> </p>
+<p> <codeph>makmake</codeph> [ <varname>options</varname> ] [ <varname>source-path</varname> ] <varname>project</varname> <varname>platform</varname>  </p>
+<p>Details of <varname>options</varname>, <varname>source-path</varname>, <varname>project</varname>,
+and <varname>platform</varname> are given below. </p>
+<p><b>Options </b> </p>
+<table id="GUID-BDAF523E-3992-5F10-9509-101F41F14CCF">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph> -d</codeph>  </p> </entry>
+<entry><p>Indicates that the makefile is to be created in directory <filepath>epoc32\build\</filepath> <varname>path_to_mmp_file</varname> <filepath>\</filepath> <codeph>mmp_basename</codeph> <filepath>\</filepath> <varname>platform</varname> rather
+than the directory in which <filepath>makmake</filepath> was invoked. </p> <p>Note
+that relative paths within the created makefile will be relative to the directory
+in which <filepath>makmake </filepath> was invoked so <filepath>nmake</filepath> should
+be invoked from that directory too if the project is to build correctly. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> -v</codeph>  </p> </entry>
+<entry><p>Indicates verbose operation </p> <p>When this flag is specified, <filepath>makmake</filepath> prints
+many progress messages. The default is to give error messages only. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> -mmp</codeph>  </p> </entry>
+<entry><p>Provides basic syntax guide to writing <filepath>.mmp</filepath> files
+instead of making the makefile. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> -plat </codeph>  <varname>platform</varname>  </p> </entry>
+<entry><p>Provides syntax guide to writing platform-specific sections of <filepath>.mmp</filepath> files,
+and information about which macros are defined for preprocessing the <filepath>.mmp</filepath> files. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-arm</codeph>  </p> </entry>
+<entry><p>Instructs an ARMV5 build to not build the project as THUMB, but
+as the appropriate ARM ABI. </p> <p>For details, see <xref href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita">ARMV5
+build target</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-debug</codeph>  </p> </entry>
+<entry><p>Generates symbolic debug information for release or debug builds. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-no_debug</codeph>  </p> </entry>
+<entry><p>Does not generate symbolic debug information for release or debug
+builds. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>Note that you can either use <codeph>-debug</codeph> to generate or <codeph>-no_debug</codeph> to
+not generate the symbolic debug information, irrespective of <codeph>UREL</codeph> or <codeph>UDEB</codeph> build. </p>
+<p><b>source-path </b> </p>
+<p>This specifies the path of the source <filepath>.mmp</filepath> file, relative
+to the current directory. </p>
+<p>If omitted, the source <filepath>.mmp</filepath> file is <codeph>project</codeph> <filepath>.mmp</filepath> in
+the current directory. </p>
+<p>Whether or not the <varname>source-path</varname> is specified, the generated
+makefile is always written into the current directory. </p>
+<p><b>project </b> </p>
+<p>This specifies the project for which to create the makefile. </p>
+<p><b>platform </b> </p>
+<p>This specifies the target platform, e.g. <codeph>thumb</codeph> or <codeph>winscw</codeph>. </p>
+<p><b>Command output </b> </p>
+<p>The output makefile name in most cases has the form <varname>project-name</varname>.<varname>platform-name</varname>.
+The exceptions are for <codeph>cw_ide</codeph>, which produces a <filepath>.xml</filepath> file,
+which can be imported into CodeWarrior, and <codeph>vc6</codeph> and <codeph>vc6winc</codeph>,
+which produce <filepath>.dsw</filepath> and <codeph>.dsp</codeph> files. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797-master.png has changed
Binary file Symbian3/SDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e13148_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59BBEA98-6501-5415-A4B5-3AE8E33957D3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59BBEA98-6501-5415-A4B5-3AE8E33957D3" xml:lang="en"><title>Server
+services</title><shortdesc>Describes asynchronous services provided by the client-server framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The majority of Symbian platform asynchronous services are provided by
+servers written in accordance with the Symbian platform client-server framework.
+A server is a thread running in user mode, which services requests from client
+threads also running in user mode. An example of asynchronous service provided
+by a server is the <codeph>EventReady(TRequestStatus* aStat)</codeph> function
+provided by the <codeph>RWsSession</codeph> class — the client API to
+the window server. This function requests an event from the window server,
+which the user program can extract and analyse using other <codeph>RWsSession</codeph> functions.</p>
+<p>As with services provided by the kernel, server-provided services are presented
+to clients through a client API, typically an <codeph>R</codeph> class such
+as <codeph>RWsSession</codeph>, derived from <codeph>RSessionBase</codeph>.
+When the <codeph>RSessionBase</codeph> is opened, a server-side object is
+created and the client’s thread id is noted. Request functions are converted
+into an inter-thread message which encapsulates all the parameters. When request
+functions complete, the server posts the request status and signals the client
+thread’s request semaphore.</p>
+<p>As with services provided by the kernel, the process of requesting asynchronous
+service from a server, and handling its completion, involves messaging and
+inter-thread communication. Symbian platform provides efficient services to
+support these.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e215220_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59D2B677-63D7-5FE7-98F4-549D9C235E56.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59D2B677-63D7-5FE7-98F4-549D9C235E56" xml:lang="en"><title>Alarm
+Play Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial assists the device creators in customizing the Alarm Server
+behavior for playing an alarm continuously. </p>
+<p>The <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>RASCliSession</apiname></xref> class provides
+functions to set and get the continuous state for a previously created alarm. </p>
+<section><title>Introduction</title> <p>It is possible to customize or disable
+the UI application’s control of alarm sound intervals and durations. In certain
+scenarios, it may be preferable for the alarm sound to have an infinite duration.
+For more information on intervals and durations, refer to <xref href="GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita">Sound
+Control</xref>. </p> </section>
+<section><title>Procedure</title> <p>To play an alarm continuously, or to
+disable alarm play control, refer the following respective sections: </p> <ul>
+<li id="GUID-31AA12C8-38AE-5735-985B-40CB58A0D459"><p><b>Playing an alarm
+continuously</b> - A continuous alarm is one that does not follow the pattern
+of sound play defined as a series of intervals and durations in the <filepath>alarmserver.rsc</filepath> file.
+Instead, the alarm sound is played once and has an infinite interval and duration.
+ </p> <p>Follow the steps given below to create a continuous alarm: </p><ol id="GUID-87FE2F8F-7181-5162-A312-AC0F0021640A">
+<li id="GUID-4B696D1D-F852-5609-BEA1-C31AE072AC2F"><p>Connect to the Alarm
+Server using <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>RASCliSession</apiname></xref>. </p> </li>
+<li id="GUID-44DC069A-FB71-566B-8B2A-22D84D02C85F"><p>Add a new <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>TASShdAlarm</apiname></xref> alarm. </p> </li>
+<li id="GUID-1014B745-72A6-52E8-8C19-F9667DB7E895"><p>Use the <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>SetContinuous()</apiname></xref> function
+to set the alarm as a continuous alarm. </p> <p>The <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>EAlarmRepeatDefintionRepeatDaily</apiname></xref> value
+makes the alarm repeat daily. </p> </li>
+<li id="GUID-F57517DA-9C66-5276-A7B3-882F9F7C1DD0"><p>Add the alarm to the
+Alarm Server by using the <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>AlarmAdd()</apiname></xref> function. </p> </li>
+</ol> <p>The following code snippet explains how to play an alarm continuously: </p> <codeblock id="GUID-CA419D6F-5918-5565-B51E-C71203F18C8F" xml:space="preserve">#include &lt;ASCliSession.h&gt; // For RASCliSession.
+#include &lt;ASShdAlarm.h&gt;   // For TASShdAlarm.
+
+…
+
+// Connect to Alarm Server.
+RASCliSession alarmSession;
+User::LeaveIfError( alarmSession.Connect() );
+CleanupClosePushL( alarmSession );
+
+// Create a daily alarm that once activated is continuous.
+TASShdAlarm alarm;
+alarm.RepeatDefinition() = EAlarmRepeatDefintionRepeatDaily; 
+alarm.SetContinuous( ETrue );
+
+// Add the alarm to Alarm Server.
+User::LeaveIfError( alarmSession.AlarmAdd( alarm ) );
+
+CleanupStack::PopAndDestroy();
+</codeblock><p/></li>
+<li id="GUID-3795991B-7CCD-57A9-B9D4-7ACE26A5CC06"><p><b>Disable alarm play
+control</b> - This is a special case of Alarm Play Interval configuration
+described in <xref href="GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita">Sound
+Control</xref> section. Disabling the Alarm Play control requires an empty
+interval list as shown in the following code snippet:</p> <codeblock id="GUID-FB21B72C-4A20-5509-BB49-1851A37F60B6" xml:space="preserve">RESOURCE sound_controller
+    {
+    // disable alarm server control of alarm intervals
+    intervals = {};
+    }</codeblock> <p>This configuration cannot be overridden at runtime. <xref href="GUID-8FAC10FB-BCD1-3373-9440-EF2EED70A861.dita"><apiname>RASCliSession::SetAlarmPlayIntervalsL()</apiname></xref> cannot
+be used to change this option, that is, the function can neither turn OFF
+the alarm sound control by specifying an empty sequence, nor turn ON the alarm
+sound control by overriding an empty sequence in the resource file. </p> <p>Durations
+that extend into the next interval cause the whole sequence to revert to the
+default hard-coded values. </p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59DB0115-053A-5D23-8C40-E2428C096BBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59DB0115-053A-5D23-8C40-E2428C096BBC" xml:lang="en"><title>How to Use Dynamic Arrays </title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59ED6D14-0976-58AE-8DDC-73F051866406.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59ED6D14-0976-58AE-8DDC-73F051866406" xml:lang="en"><title>How
+to construct a header</title><shortdesc>The header of a linked list needs to know the type of data for
+each list element, and where in each element the pointer to the next element
+can be found.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In order to construct a header, two important pieces of information are
+needed:</p>
+<ul>
+<li id="GUID-5BD8E773-5793-5C52-BF07-62FF1839F19A"><p>the <i>type</i> of object
+which forms the elements.</p> </li>
+<li id="GUID-9E43534B-D692-53CE-83D9-FE4F1B2DFC42"><p>the <i>offset</i> of
+the link object from the start of the element.</p> </li>
+</ul>
+<p>To create a header for a singly linked list of <codeph>CMyClass</codeph> elements,
+defined as:</p>
+<codeblock id="GUID-8851C435-33CD-5F1C-95E3-60CEC2770D64" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TSglQueLink iSlink;
+    ...
+    };</codeblock>
+<p>construct a <codeph>TSglQue</codeph> as follows:</p>
+<codeblock id="GUID-D634E7AB-9240-5F0E-9D36-BE476B038842" xml:space="preserve">TSglQue&lt;CMyClass&gt; queHeader(_FOFF(CMyClass,iSlink));</codeblock>
+<p>The <codeph>TSglQue</codeph> class takes a class template parameter which
+defines the type of object which is to form an element of the list. In this
+example, objects of type <codeph>CMyClass</codeph> form the elements of the
+list.</p>
+<p>The <codeph>_FOFF</codeph> macro (i.e. the "field offset" macro) calculates
+the offset of the component link object within the element. In this example,
+the required value is the offset of the <codeph>iSlink</codeph> data member
+from the start of <codeph>CMyClass</codeph>. </p>
+<fig id="GUID-3B9C78A4-02FC-5D63-AFD2-53996F9CAEC7">
+<title>Links in singly linked lists</title>
+<image href="GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e189756_href.png" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e46754_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-59FFCA8F-5F2C-55F9-B864-AFA1CC18722D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-59FFCA8F-5F2C-55F9-B864-AFA1CC18722D" xml:lang="en"><title>Buffer
+position</title><shortdesc>How to use buffer position with other functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All operations are specified in terms of a <i>buffer position</i>, which
+is an integer whose valid range is zero to the size of the buffer. The buffer
+position is a byte offset into the buffer’s data.</p>
+<p>The <codeph>InsertL()</codeph> and <codeph>DeleteL()</codeph> functions
+cause data after the inserted or deleted region to be shuffled up or down
+the buffer as appropriate; also, <codeph>InsertL()</codeph> even at the end
+of a flat buffer may cause re-allocation which may move the cell’s position
+in memory. Because of this, the memory address corresponding to a buffer position
+may change. Therefore, any pointer references to data in a buffer — including
+pointers inside descriptors — must be updated (or discarded) after the buffer
+is updated in any way.</p>
+<p>It is recommended that all references to data in buffers be maintained
+in terms of the buffer position. When data is inserted or deleted, buffer
+positions after the beginning of the insertion or deletion position must be
+adjusted (or, in the case of positions inside a deleted region, discarded).
+The amount of the adjustment is the length of the inserted or deleted data.</p>
+<p>Pointers cannot be maintained as simply as buffer positions. In the case
+of flat buffers, re-allocation may cause the entire buffer’s address to change.
+In the case of segmented buffers, data is discontiguous and the segmentation
+algorithm is not straightforward. Therefore, it is recommended that pointer
+references be <i>discarded</i> after any update, and that adjustments to pointer
+references always use the <codeph>CBufBase</codeph> programming interface,
+rather than user program calculations.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5A292526-5B71-4076-9DBD-1385CD1FFD37.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5A292526-5B71-4076-9DBD-1385CD1FFD37" xml:lang="en"><title>System
+environment events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section covers events occurring in the system environment, including:</p>
+<ul>
+<li><p><xref href="GUID-B4218FA6-5BE0-4000-BC85-3078892EDADA.dita">Environment
+changes</xref></p>
+</li>
+</ul>
+<note>
+<p>Functionalities previously implemented with System Agent must be replaced
+to use Publish and Subscribe and Central Repository in S60 3rd Edition and
+later versions.</p>
+</note>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e163491_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E" xml:lang="en"><title>abld
+command syntax overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <filepath>abld</filepath> batch file is used to control all aspects
+of building a project. The batch file is created using <filepath>bldmake</filepath> from
+a component description file. </p>
+<section><title>Invocation syntax </title><p> <codeph>abld [
+test ]</codeph>  <varname>command</varname> [ <varname>options</varname> ]
+[ <varname>platform</varname> [ <varname>build</varname> [ <varname>program</varname> ]
+] ] </p><p>The usage for test, <varname>command</varname>, <varname>options</varname>, <varname>platform</varname>, <varname>build</varname>,
+and <varname>program</varname> are detailed in the following sections. </p><p> <b>Note:</b> For
+certain <filepath>abld</filepath> commands, parameters such as <varname>platform</varname>, <varname>build</varname>,
+and <varname>program</varname>, do not apply. For example, <codeph>abld export</codeph> does
+not require these parameters, as exports do not depend on <varname>build</varname>, <varname>platform</varname>,
+or <varname>program</varname>. </p><p><b>command </b> </p><p>You can use the
+following commands with <codeph>abld</codeph>: </p><table id="GUID-EF09108F-BFFC-5094-95BB-A34D3A86BCED">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Command</entry>
+<entry>Purpose</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>build</codeph>  </p> </entry>
+<entry><p>To build the binaries for the specified target. It is a combination
+of the commands, <codeph>export</codeph>, <codeph>makefile</codeph>, <codeph>library</codeph>, <codeph>resource</codeph>, <codeph>target</codeph>,
+and <codeph>final</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>clean</codeph>  </p> </entry>
+<entry><p>To remove everything built for the <codeph>abld target</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>cleanexport</codeph>  </p> </entry>
+<entry><p>To remove files created by the <codeph>abld</codeph> <codeph>export</codeph> command. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>export</codeph>  </p> </entry>
+<entry><p>To copy the exported files to their destination. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>final</codeph>  </p> </entry>
+<entry><p>To allow extension makefiles to run final commands. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>freeze</codeph>  </p> </entry>
+<entry><p>To freeze the exported functions in a <filepath>.def</filepath> file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>help</codeph>  </p> </entry>
+<entry><p>To display commands, options, or help about a particular command. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>library</codeph>  </p> </entry>
+<entry><p>To create import libraries from the frozen <filepath>.def</filepath> files. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>listing</codeph>  </p> </entry>
+<entry><p>To create an assembler listing file for a particular source file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>makefile</codeph>  </p> </entry>
+<entry><p>To create makefiles or IDE workspaces. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>reallyclean</codeph>  </p> </entry>
+<entry><p>To remove all the files. It is similar to the <codeph>clean</codeph> command,
+and additionally removes exported files and makefiles. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>resource</codeph>  </p> </entry>
+<entry><p>To create resource files and bitmaps. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>target</codeph>  </p> </entry>
+<entry><p>To create the main executable file and also the resources. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>tidy</codeph>  </p> </entry>
+<entry><p>To remove executable files which need not be released. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table><p><b>options </b> </p><p>You can use the following options with <codeph>abld</codeph>: </p><table id="GUID-722871C1-088A-50C4-B335-213340988C76">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Option</entry>
+<entry>Purpose</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>-check or -c</codeph>  </p> </entry>
+<entry><p>To check whether the filenames of the executable and resource files
+are compatible for Linux builds. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-debug</codeph>  </p> </entry>
+<entry><p>To generate symbolic debug information for release or debug builds. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-keepgoing or -k</codeph>  </p> </entry>
+<entry><p>To build unrelated targets on error. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-no_debug</codeph>  </p> </entry>
+<entry><p>To not generate symbolic debug information for release or debug
+builds. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-savespace or -s</codeph>  </p> </entry>
+<entry><p>To delete intermediate files on success. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-verbose or -v</codeph>  </p> </entry>
+<entry><p>To display the progress of the <codeph>abld</codeph> command. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-what or -w</codeph>  </p> </entry>
+<entry><p>To list all releaseables, which include executable/map files, resource
+files and so on. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-I &lt;platform&gt;</codeph>  </p> </entry>
+<entry><p>To specify the ARM target to build for, overriding other settings. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-wrap[=&lt;value&gt;]</codeph>  </p> </entry>
+<entry><p>A static analysis tool can be invoked if <codeph>[=&lt;value&gt;]</codeph> is
+not specified. For example, <codeph>-wrap</codeph>. Alternatively, a run-time
+analysis tool can be invoked if <codeph>&lt;value&gt;</codeph> is specified as <codeph>proxy</codeph>.
+For example, <codeph>-wrap=proxy</codeph>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table><p> <b>Notes:</b>  </p><ul>
+<li id="GUID-3B421EA1-26FB-5535-9808-C22DAC6801E8"><p>You can use <codeph>-debug</codeph> or <codeph>-no_debug</codeph> options
+irrespective of the output build type, that is, <codeph>UREL</codeph> or <codeph>UDEB</codeph>. </p> </li>
+<li id="GUID-0C2D4993-9231-5868-A321-615048F365B1"><p>All options are not
+applicable to all the commands. Wherever applicable, they can be specified
+in their long or short forms. For example, </p> <p> <codeph>-keepgoing</codeph> (long
+form) </p> <p>or </p> <p> <codeph>-k</codeph> (short form) </p> </li>
+</ul><p><b>platform </b> </p><p>This specifies the target platform. Possible
+platforms are: </p><table id="GUID-35EAE8DD-DBC1-5DA4-9419-8274A2C8AF28">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Target platform</entry>
+<entry>Purpose</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>all</codeph>  </p> </entry>
+<entry><p>To build for all platforms. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>armv5</codeph>  </p> </entry>
+<entry><p>To build for ABI v1 of ARMV5 architecture using the RealView Compilation
+Tools (RVCT). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>armv5_abiv2</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV5 architecture using RVCT. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>armv6</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV6 architecture using RVCT. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>armv6t2</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV6 architecture that supports Thumb-2
+instruction set, using RVCT. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>armv7</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV7 architecture that supports Thumb-2
+instruction set, using RVCT. </p> </entry>
+</row>
+<row>
+<entry> <codeph>cw_ide</codeph>  <p/> </entry>
+<entry><p>To build the Metrowerks CodeWarrior project file (importable <filepath>.xml</filepath> file). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>gcce</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV5 architecture using the GNU GCC compiler. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>gccev6</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV6 architecture using the GNU GCC compiler. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>gccev6t2</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV6 architecture that supports Thumb-2
+instruction set, using the GNU GCC compiler. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>gccev7</codeph>  </p> </entry>
+<entry><p>To build for ABI v2 of ARMV7 architecture that supports Thumb-2
+instruction set, using the GNU GCC compiler. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>gccxml</codeph>  </p> </entry>
+<entry><p>To generate the XML description of the project and the program using
+GCC XML. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>vs6</codeph>  </p> </entry>
+<entry><p>To create the project files suitable for opening the project in
+Microsoft Visual Studio IDE, version Visual C++ v6. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>vs2003</codeph>  </p> </entry>
+<entry><p>To create the project files suitable for opening the project in
+Microsoft Visual Studio IDE, version .NET2003. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>winscw</codeph>  </p> </entry>
+<entry><p>To build for the Symbian emulator on Microsoft Windows, using the
+Metrowerks CodeWarrior compiler. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table><p> <b>Note</b>: The target platforms, <codeph>armv5</codeph> and <codeph>armv5_abiv2</codeph> are
+compatible with Symbian OS v9.4 or earlier versions. From Symbian OS v9.4
+onwards, these build platforms are renamed as <codeph>armv5</codeph> and <codeph>armv5_abiv1</codeph> to
+generate binaries and libraries conforming to ABI v2 and ABI v1 respectively. </p><p>If <varname>platform</varname> is
+not specified, or is specified as <codeph>all</codeph>, then <codeph>abld</codeph> will
+build for all the platforms specified in the component description file. </p><p>Basenames
+of <filepath>.mmp</filepath> files or extension makefiles must not be platform
+names. </p><p><b>build </b> </p><p>This specifies the build type. Possible
+types are: </p><table id="GUID-AAD6A56F-61FD-5CB4-B196-FE201E9EE298">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>udeb</codeph>  </p> </entry>
+<entry><p>Debug build </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>urel</codeph>  </p> </entry>
+<entry><p>Release build </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>all</codeph>  </p> </entry>
+<entry><p>Debug and release builds </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>If <varname>build</varname> is not specified, or specified as <codeph>all</codeph>,
+then <codeph>abld</codeph> will build for both <codeph>udeb</codeph> and <codeph>urel</codeph>. </p><p>Basenames
+of <filepath>.mmp</filepath> files or extension makefiles must not be build
+type names. </p><p><b>program </b> </p><p>This specifies the basename of a
+particular <filepath>.mmp</filepath> file or extension makefile, in order
+to limit the command to a single project within a component. </p><p>If <varname>program</varname> is
+not specified, then all the projects within the component are built. </p><p><b>test </b> </p><p>If <codeph>test</codeph> is
+specified before <codeph>command</codeph>, the <codeph>command</codeph> will
+build all the projects defined by <filepath>.mmp</filepath> files listed in
+the <codeph>prj_testmmpfiles</codeph> section of the component description
+file, rather than those listed in the <codeph>prj_mmpfiles</codeph> section. </p><p> <b>Note:</b> The <codeph>test</codeph> parameter
+is not relevant for some commands, and in those cases, it cannot be specified. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866"><title>Creating Histograms </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces how to create a histogram. </p> <section><title>Purpose</title> <p>This document describes the various APIs used to create a Histogram. </p> <p><b>Introduction</b> </p> <p>You can request histograms for image capture, video capture and viewfinder separately or you can combine viewfinder functionality with image or video capture. Histograms provide information about the exposure of light on a captured frame. </p> <p>The key classes are described in <xref href="GUID-3074D4E5-25EA-5DA0-877D-6E3086DCBDB5.dita">Histogram Overview</xref>. </p> </section> <section><title>Creating a Histogram </title> <p>You can create instance of a histogram class from the following class objects: </p> <ul><li id="GUID-A416D08B-D229-5085-95F9-CB5ADC593670"><p>snapshot </p> </li> <li id="GUID-ABC4E85C-D0D5-5987-957F-5AD418DBDD75"><p>image capture </p> </li> <li id="GUID-EC3CB0AE-55C0-5E24-A402-195251A2CD6E"><p>video capture </p> </li> <li id="GUID-929E10C0-3C52-583C-B61A-AB696F22429E"><p>version2 direct viewfinder </p> </li> <li id="GUID-1F8C1088-8A3D-5990-8F11-B57D81E40FED"><p>client viewfinder </p> </li> </ul> <p>This provides better handling of histogram features by tying it closely to the given object. </p> <p> <b>Note</b>: </p> <p>Client is not allowed to create object of this class directly. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following are the setup and configuration requirements you need to follow before Histogram implementation: </p> <ul><li id="GUID-90B7676B-A5B6-5B70-AED4-BEF1EFF70C64"><p>Licensees need to provide the implementation of <xref href="GUID-3EE49C9F-944F-3FA0-9B03-0BDCAE63A103.dita"><apiname>CcameraV2Histogram</apiname></xref> and <xref href="GUID-E29318E9-D94F-3576-BA18-400FB8556C27.dita"><apiname>MCameraV2Histogram</apiname></xref> class for the camera v2 histogram. </p> </li> <li id="GUID-7CD76ECD-43FF-5BFF-8297-30C297953114"><p>Clients need to provide the interfaces: <xref href="GUID-B17FB3E0-2650-3DEF-8055-AF283639789E.dita"><apiname>McaptureImageObserver</apiname></xref>, <xref href="GUID-AD4944AA-1C8D-3332-A5BC-4439A0E030C1.dita"><apiname>McaptureVideoObserver</apiname></xref>, <xref href="GUID-05EEF6CC-E007-348C-8643-AA02D634F90C.dita"><apiname>MdirectViewFinderObserver</apiname></xref> and <xref href="GUID-C4F40144-7132-309A-B648-E366786B4DE4.dita"><apiname>MclientViewFinderObserver</apiname></xref> to receive notifications about direct histogram display or client histogram data availability. </p> </li> </ul> <p> <b>Note</b>: </p> <p> <xref href="GUID-BAFF01BC-405C-37B2-8AC3-F96CF756C300.dita#GUID-BAFF01BC-405C-37B2-8AC3-F96CF756C300/GUID-1D73AED2-1EEB-3BC1-A19C-C25A38EDB9BB"><apiname>McameraObserver2::HandleEvent</apiname></xref> will not be used with this class. </p> <p><b>Basic Procedure for Creating Histograms</b> </p> <p>The high level steps to create a histogram are shown here: </p> <ul><li id="GUID-C4F9F1F4-B5C5-53A4-80B6-237CE3FFDF85"><p>Create a new camera histogram object using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E159F066-0157-34B4-B154-38D120EAB16C"><apiname>CCamera::CCameraV2Histogram</apiname></xref> class. This class allows the client to get histogram data in a specified format for an image. For example, luminance based histogram, average colour value histogram and so on. </p> </li> <li id="GUID-8E9869ED-2215-59A4-8E95-FF38CC611035"><p>This class maps the exported call to a method of mixin class <xref href="GUID-E29318E9-D94F-3576-BA18-400FB8556C27.dita"><apiname>MCameraV2Histogram</apiname></xref>, which provides the camera version 2 histogram functionality. </p> </li> <li id="GUID-80009232-A3F2-5612-B46F-B5AA95D7A71E"><p>Pass a pointer to object of type <xref href="GUID-E29318E9-D94F-3576-BA18-400FB8556C27.dita"><apiname>MCameraV2Histogram</apiname></xref> to the <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita"><apiname>CCameraV2Histogram</apiname></xref> object by the owning camera during the construction phase. </p> </li> <li id="GUID-697049C9-803B-5737-AB41-EDE17E5885A1"><p>Obtain this pointer using a call to <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-1F537D7D-5451-3834-869D-3092A4773B83"><apiname>Ccamera::CustomInterface()</apiname></xref> with UID value <xref href="GUID-39174B44-20CF-32C8-8264-DAB8ACD054CF.dita"><apiname>KECamMCameraHistogramUid</apiname></xref>. </p> </li> <li id="GUID-4B1CE635-5141-5254-BEBD-EC59ED1F5669"><p>List the type of histograms supported by the camera using <xref href="GUID-FBCDC241-866B-32A0-BE5F-E59C0181AA51.dita"><apiname>GetSupportedHistogramsL()</apiname></xref> API. </p> </li> <li id="GUID-66674E2B-563C-5362-A2B3-E1CFFCDE90BB"><p>Check if direct histogram is supported using <xref href="GUID-ED38DE35-6C52-33C4-868E-E663C7235771.dita"><apiname>GetDirectHistogramSupportInfoL()</apiname></xref> API. </p> </li> <li id="GUID-BCE79AE4-49BD-5CEE-8F8E-FACB9B065FD1"><p>Create a request to prepare a direct or client based histogram using <xref href="GUID-D30FDFEF-054C-39F9-9A6F-11F1FF560D0D.dita"><apiname>PrepareDirectHistogramL()</apiname></xref> or <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita#GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1/GUID-10B10333-DD7F-3731-8297-5A4155BD9DD4"><apiname>CCameraV2Histogram::PrepareClientHistogramL()</apiname></xref> APIs appropriately. </p> </li> </ul> </section> <section><title>Example</title> <p>The following example illustrates the sequence for creating a histogram: </p> <ol id="GUID-1B30A03E-6B0C-576A-9387-C03A60AD5D7E"><li id="GUID-BE008E89-0538-5D91-9490-B4943D31569A"><p>The following creates the new camera histogram object. </p> <codeblock id="GUID-D4D5FD9E-FB81-50B2-B8D6-D51EB7E2929F" xml:space="preserve">CCamera* camera;//exists beforehand
+CCamera::CCameraClientViewFinder* clientVF;//exists beforehand
+MCameraObserver* observer2;//exists beforehand
+clientVF  = CCamera::CCameraClientViewFinder::NewL(*camera, *clientVFObserver);    
+CCamera::CCameraV2Histogram* histogram_CVF = clientVF-&gt;CreateHistogramHandleL();</codeblock> </li> <li id="GUID-941D2BDE-A9C9-50F9-8D6B-5629A993EE5C"><p>Find out about the supported set of values. </p> <codeblock id="GUID-DC85D107-A94A-523B-AE6C-05CE0CA394A7" xml:space="preserve">TUint supportedHistogramType=0;
+histogram_CVF-&gt;GetSupportedHistogramsL(supportedHistogramType);</codeblock> <p>Get the information about direct histograms. </p> <codeblock id="GUID-EF78CBC3-F706-59EE-9251-EA4E9D326081" xml:space="preserve">    TBool directHistogramSupported = EFalse;
+histogram_CVF-&gt;GetDirectHistogramSupportInfoL(directHistogramSupported);</codeblock> </li> <li id="GUID-C05F76AD-91A6-5A56-BF92-828B908BF6D7"><p>Prepare the selected or available histogram. </p> <ul><li id="GUID-F8C14127-4F21-58A9-BD4D-A81496F2AA17"><p>direct access </p> <codeblock id="GUID-F7061052-DA32-5437-810F-71CB5C379AB1" xml:space="preserve">Camera::CCameraV2Histogram::TDirectHistogramParameters histogramParameters;
+histogram_CVF-&gt;PrepareDirectHistogramL(histogramParameters);</codeblock> </li> <li id="GUID-42AA310D-41B2-5094-A934-A30A75819186"><p>non direct access </p> <codeblock id="GUID-E4EF2CD1-11F4-5368-AB9F-F17CDD9E9C55" xml:space="preserve">CCamera::CCameraV2Histogram::THistogramType histogramType = CCamera::CCameraV2Histogram::Eluminance;
+histogram_CVF-&gt;PrepareClientHistogramL(histogramType);</codeblock> </li> </ul> </li> </ol> </section> </conbody><related-links><link href="GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9.dita"><linktext>Histograms</linktext> </link> <link href="GUID-7022455A-E738-574E-897E-33243482D69A.dita"><linktext>Working with Histograms</linktext> </link> <link href="GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3.dita"><linktext>Stopping Histograms</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5A9CBB5B-DE6A-42D6-9244-3F151B79BDCD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5A9CBB5B-DE6A-42D6-9244-3F151B79BDCD" xml:lang="en"><title>HTTP
+Receive Buffer Size Property</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>By default, the HTTP Transport Framework uses the default receive buffer
+size of 6 KB for an HTTP session. The default receive buffer size value can
+be overridden by the client before the first HTTP transaction is submitted
+for a particular HTTP session. The default receive buffer size for a particular
+session can be set using the <codeph>HTTP::ERecvBufferSize</codeph> property.
+The following example code illustrates how to set the default receive buffer
+size for an HTTP session: </p>
+<codeblock id="GUID-CF95E829-8DD6-54A7-8A2D-CACC72420F9A" xml:space="preserve">RHTTPSession mySess;
+THTTPHdrVal myHdrVal (10240); 
+RHTTPConnectionInfo httpConnInfo = mySess.ConnectionInfo();
+httpConnInfo.SetPropertyL (mySess.StringPool().StringF(HTTP::ERecvBufferSize, RHTTPSession::GetTable()), myHdrVal);</codeblock>
+<p>In this example, the default receive buffer size value is overridden and
+the receive buffer size is set to 10240 bytes (10 KB).</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5AA3E9E4-9727-5B54-81CB-DADA73DEC51E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5AA3E9E4-9727-5B54-81CB-DADA73DEC51E" xml:lang="en"><title>Using
+__DECLARE_TEST</title><shortdesc>This topic explains how to use declare test macro.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To illustrate the use of the <codeph>__DECLARE_TEST</codeph> macro, we
+can define the class <codeph>TEgInvariant</codeph>. It has a very simple state,
+a single data member <codeph>iData</codeph>. An object is in an invalid state
+when <codeph>iData</codeph> is greater than 100.</p>
+<codeblock id="GUID-27C84A0C-E3CE-545D-BEA0-BB211C7CA673" xml:space="preserve">class TEgInvariant 
+ {
+public:
+ void SetData(TUint a);
+ TUint Data();
+ void DoSomeThing();
+private:
+ TUint iData;
+__DECLARE_TEST;
+ };</codeblock>
+<p>Then we define the getter/setter functions for <codeph>iData</codeph>:</p>
+<codeblock id="GUID-6D5BEA03-27AC-59D7-A921-236290D2379B" xml:space="preserve">void TEgInvariant::SetData(TUint a)
+ {
+ iData=a;
+ }
+
+TUint TEgInvariant::Data()
+ {
+ return iData;
+ }</codeblock>
+<p><codeph>TEgInvariant::DoSomeThing()</codeph> is a function that would perform
+some useful work. We verify the object’s state at its beginning and end through <codeph>__TEST_INVARIANT</codeph>. </p>
+<codeblock id="GUID-E7164503-1FFF-5522-8DAE-20C8604708D1" xml:space="preserve">void TEgInvariant::DoSomeThing()
+ {
+ __TEST_INVARIANT;
+
+ //...do something with iData
+
+ __TEST_INVARIANT;
+ }</codeblock>
+<p><codeph>TEgInvariant::__DbgTestInvariant()</codeph> performs the invariance
+test:</p>
+<codeblock id="GUID-37842C4B-7A40-59E5-B5DF-5800980CBFF0" xml:space="preserve">void TEgInvariant::__DbgTestInvariant() const
+ {
+#if defined(_DEBUG)
+ if(iData &gt; 100)
+  User::Invariant();
+#endif
+ }</codeblock>
+<p>We could test the class with the following code:</p>
+<codeblock id="GUID-23C56C04-7218-53ED-834E-965BF2CA3A58" xml:space="preserve"> TEgInvariant Eg; 
+
+ Eg.SetData(10);
+ Eg.DoSomeThing();
+
+ Eg.SetData(1000);
+ Eg.DoSomeThing();</codeblock>
+<p>In debug builds, the second call to <codeph>DoSomeThing()</codeph> causes
+a panic, alerting us to a problem in the code that needs fixing. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5AAE8371-E146-562B-B8AF-149FF981693C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5AAE8371-E146-562B-B8AF-149FF981693C"><title>Observers and Notification</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Messaging Framework provides two mixin interfaces, which define session observers and entry observers. </p> <ul><li id="GUID-8781CEE0-5C4C-5539-9691-6081747C8473"><p>The <xref href="GUID-BDE23754-4536-3AF7-8549-3B953F51167C.dita"><apiname>MMsvSessionObserver </apiname></xref> class is defined as a session observer is notified of events such as shutdown warnings, new message arrival, and registration of new MTMs. A class belonging to a message client application, such as the application UI class, must implement the interface to handle such events and take appropriate action. The client’s message server session object can also call the interface whenever it completes a request to the Message Server. </p> <p>Session observers are important for run-time extensibility of the Messaging architecture, as message client applications can be informed of new <xref href="GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita">MTMs being registered</xref>. As the registry classes are session observers, they also can update their lists of the available MTM components, allowing new components to be loaded. </p> </li> <li id="GUID-32DAABF3-F9C0-5981-9795-49A4592124E8"><p>The <xref href="GUID-B36289AC-769F-3A83-BADB-AE0568E97581.dita"><apiname>MMsvEntryObserver</apiname></xref> class is notified when an individual entry changes, or when access to a message store has been successfully gained. Client objects that need to observe a session view must implement this interface. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403" xml:lang="en"><title>XML
+DOM Engine Overview</title><shortdesc>The XML DOM Engine implements the standard DOM API (tree-based
+XML parsing and editing), including XPath and serialization extensions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The XML DOM Engine provides APIs to achieve
+the following: </p> <ul>
+<li id="GUID-D9B629FA-A426-5B43-ABAD-B49404822464"><p>Parse XML content: create
+a DOM tree from XML streams or files </p> </li>
+<li id="GUID-EBEBE1E6-1AEF-5181-A7C4-D4E3E3152FE4"><p>Create an empty DOM
+tree </p> </li>
+<li id="GUID-C8B88AF6-A2F0-5AE1-B207-8D56988DC5F9"><p>Modify a DOM tree by
+adding or removing nodes and changing their properties (attributes?) </p> </li>
+<li id="GUID-70322A4D-BDD9-5A93-8D38-107E46F4C952"><p>Save a DOM tree to a
+buffer or a file (in regular XML, XOP or compressed format) </p> </li>
+<li id="GUID-1A8514F7-534B-5C2A-9EF5-6F444B2FEE9F"><p>Explore a DOM tree with
+XPath expressions </p> </li>
+</ul> </section>
+<section><title>Required background</title> <p>The XML DOM engine is based
+on the <xref href="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita">libxml2</xref> component.
+It provides a Level-3-like implementation of the <xref href="http://www.w3.org/DOM/" scope="external">DOM</xref> standard from W3C, along with <xref href="http://www.w3.org/TR/xpath" scope="external">XPath</xref> and serialisation extensions. </p> </section>
+<section><title>Key concepts and terms</title> <p>The following concepts are
+related to generic XML understanding: </p><p><b>XPath Extension Functions</b></p><p>XML
+Path Language (or XPath) is a W3C standard designed to address parts of an
+XML document. A subset of XPath is also used for matching: that is, checking
+that a node matches a pattern. Extension Functions are not part of the W3C
+standard: you can implement them to add functionalities to XPath. </p><p><b>Serialise</b></p><p>Serialising
+means converting binary data to a persistent format that can be stored (to
+a buffer or a file) or transmitted over a data link. The reverse operation
+is called deserialising. </p><p>The <b>RChunk</b> and <b>RHeap</b> classes
+are standard Symbian platform classes. For more information,
+see <xref href="GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita">Memory allocation
+concepts</xref>. </p> </section>
+<section><title>Architecture</title> <p>The XML DOM Engine component relies
+on the libxml2 component for most of its operations. For more information,
+see <xref href="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita">libxml2 Overview</xref>. </p> <p>It
+also relies on the libxml2 SAX parser plugin of the <xref href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita">XML
+Framework</xref> and on the multi-part parser of the <xref href="GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F.dita">BAFL</xref> component
+for deserialisation. </p> <p>The following package diagram summarises the
+dependencies of the XML DOM Engine and shows the three functionality groups
+that are described in the following section. </p> <fig id="GUID-EEFA9390-CA66-56DD-96B4-9DF7C35AB36D">
+<title>              Package diagram for the XML DOM Engine component    
+       </title>
+<image href="GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e403017_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Description</title> <p>The XML DOM Engine is an object-oriented
+provider of the DOM services included in the standard libxml2 library: tree-based
+parsing with validation and random access to the XML elements. If you need
+event-based parsing, use the <xref href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita">XML
+Framework</xref> instead. </p> <p><b>DOM Parsing</b> </p> <p>Parsing an XML
+document creates two parallel trees: the regular DOM tree containing generic
+Node objects and an <xref href="GUID-87294A6B-4607-3D4A-9D1E-B87B16A06209.dita"><apiname>RXmlEngDocument</apiname></xref> object which contains
+type-specific nodes. Use these type-specific nodes to avoid type-checking
+and casting the Nodes as well as to improve performance. Some of these node
+types are shown in the following diagram. </p> <fig id="GUID-32F52AA5-2670-5C4C-B9EE-508BDB3B9E78">
+<title>                 Extract of the class diagram for the XML DOM Engine
+parser               </title>
+<image href="GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e403048_href.png" placement="inline"/>
+</fig> <p><b>Serialisation</b> </p> <p>Serialisation transforms the DOM tree
+(including binary data) into one of the following formats: </p> <ul>
+<li id="GUID-C7E6E69A-9373-5A8E-A0A4-FABA95738ACC"><p>Default (standard XML) </p> </li>
+<li id="GUID-46B3A636-54BE-556A-B5D5-277378BD4BAB"><p>XOP (XML-binary Optimized
+Packaging) </p> </li>
+<li id="GUID-6DA98291-237E-5CD0-87ED-D6DBE56A9846"><p>XOP Infoset (original
+Infoset with any optimized content replaced by <codeph>xop:Include</codeph> items) </p> </li>
+<li id="GUID-235F5E65-C2A3-55FE-8537-B2F986367FFD"><p>gzip (compressed XML) </p> </li>
+</ul> <p>The result can be returned as a file, a buffer or both. </p> <p><b>XPath
+Extension Function</b> </p> <p>XPath can be extended at run-time by registering
+a new extension function. To call the new function, include it in an XPath
+expression evaluated by the XML DOM Engine. </p> <p>The XPath Extension Function
+API provides two interfaces: <xref href="GUID-BCEBA44D-3C1A-38D2-BFDB-6CA14DF40CE9.dita"><apiname>MXPathExtensionFunction</apiname></xref> for
+the XPath function and <xref href="GUID-33B9C910-FCFC-36A5-B4CC-AA54DF4043E0.dita"><apiname>MXmlEngXpathEvaluationContext</apiname></xref> for
+its configuration. The static <xref href="GUID-79B8C611-4646-330F-98EA-C387BDB430E2.dita"><apiname>TXmlEngXPathConfiguration</apiname></xref> class
+performs the registration of the extension function within the XML DOM Engine. </p> </section>
+<section><title>APIs</title> <p><b>DOM Parser API</b> </p> <p>The most relevant
+classes for parsing and editing a DOM tree are listed in the following table.
+See <xref href="GUID-326D4D50-5AD9-5CA2-8422-AA45AE0712D6.dita">Implementation
+of W3C Types</xref> for correspondance between this API and the W3C standard. </p> <table id="GUID-B401C7C0-E8C1-5576-BF6A-DF722024F896">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>DOM Parser API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-A59972BD-707E-32B6-AF28-D2B8C6EA17F8.dita"><apiname>RXMLEngDOMImplementation</apiname></xref>  </p> </entry>
+<entry><p>This class is the entry-point for the DOM Engine. It provides methods
+for creating a new document or an instance of the DOM parser. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-701146BE-35E9-380F-AA58-25E4660C50EB.dita"><apiname>RXMLEngDomParser</apiname></xref>  </p> </entry>
+<entry><p>This class provides methods for parsing an XML document and building
+a DOM tree. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-BCF2D3E3-3A31-3D79-B355-04984EFF0551.dita"><apiname>RXMLEngDocument</apiname></xref>  </p> </entry>
+<entry><p>This class represents a DOM tree. It stores the document properties
+and provides methods for modifying the tree, such as adding or deleting nodes. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-56A1BCDD-A471-310B-8F9D-85AF2FAB2B37.dita"><apiname>TXMLEngNode</apiname></xref>  </p> </entry>
+<entry><p>This class represents a DOM node. It stores the node type and properties,
+and provides the DOM methods related to it. </p> <p>Specialisations of this
+class are detailed in <xref href="GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita">XML
+DOM Engine Node Reference</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The DOM API relies on Descriptor objects for string manipulation,
+and on <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> handles for filesystem input and output. To
+store <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> in a DOM tree, use the <xref href="GUID-FC3D2792-A98A-37FF-A59C-28DF0555FDCD.dita"><apiname>TXmlEngFileContainer</apiname></xref> class.
+To store <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk</apiname></xref> in a DOM tree, use the <xref href="GUID-5D101B85-E1D0-3C78-8C97-3FB8CE459EC6.dita"><apiname>TXmlEngChunkContainer</apiname></xref> class. </p> <p><b>Serialisation
+API</b> </p> <p>The most relevant classes for DOM serialisation and deserialisation
+are listed in the following table. Other classes can be found in the reference
+documentation. </p> <table id="GUID-0FBACCD6-BC4D-5CAF-88E7-61DE329EADB4">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Serialisation API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-ADFEF636-484D-35BF-B6C5-B9F47317ACD9.dita"><apiname>CXmlEngSerializer</apiname></xref>  </p> </entry>
+<entry><p>This class provides methods to save a DOM tree to a file or a buffer. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-791D9C19-3942-3107-8C91-F56528CF2590.dita"><apiname>CXmlEngDeserializer</apiname></xref>  </p> </entry>
+<entry><p>This class provides methods to read serialised XOP or GZIP and create
+DOM or SAX representations of it. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>XPath APIs</b> </p> <p>The DOM Parsing classes related to XPath
+are listed in the following table. Other classes can be found in the reference
+documentation. </p> <table id="GUID-0E32710B-BEA3-5D01-B48F-BC753AA13625">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>XPath API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-036E87E6-F6FB-371B-8CAB-FBD8C2635FDA.dita"><apiname>RXmlEngXPathExpression</apiname></xref>  </p> </entry>
+<entry><p>This class represents an XPath expression. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D76EC81E-B92E-304A-8651-068459763BBA.dita"><apiname>TXmlEmgXPathEvaluator</apiname></xref>  </p> </entry>
+<entry><p>This class evaluates an XPath expression and returns the result
+in an <xref href="GUID-C84A1329-F403-370F-9740-6A8D38D72F22.dita"><apiname>RXmlEngXPathResult</apiname></xref> instance. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1053AD9F-99BD-34D8-A77B-9B4F66FD7CCF.dita"><apiname>XmlEngXPathConfiguration</apiname></xref>  </p> </entry>
+<entry><p>This class contains static methods for XPath configuration and registration
+of extension functions. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The most relevant classes of the Extension Function API for XPath
+are listed in the following table. Other classes can be found in the reference
+documentation. </p> <table id="GUID-6200B207-23F8-522A-885E-8DFA82CECE0F">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry> XPath Extension Function API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-6158C316-5D11-33D9-9599-4C3E98DF1748.dita"><apiname>MXmlEngXPathExtensionFunction</apiname></xref>  </p> </entry>
+<entry><p>This interface must be implemented by your extension function. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-33B9C910-FCFC-36A5-B4CC-AA54DF4043E0.dita"><apiname>MXmlEngXpathEvaluationContext</apiname></xref>  </p> </entry>
+<entry><p>This interface must be implemented by your evaluation function,
+which processes the arguments of the extension function and stores the result
+of the evalutation. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The XML DOM Engine is used by client
+applications to process XML documents: </p> <ul>
+<li id="GUID-4D5B1DAB-FEFD-5D66-8917-761042DC362A"><p>The most common clients
+are web browsers and associated software, which parse and validate XML streams
+or files. </p> </li>
+<li id="GUID-4DFB1B4A-1F07-53E6-B043-D10D5C09679F"><p>Applications can also
+use the XML DOM Engine to organize and store their data, or to transfer their
+XML objects over a network connection. </p> </li>
+<li id="GUID-98C0B034-7B47-5D00-8148-CEA28A53E9B0"><p>Middleware providers
+can extend XPath with new functions with the XPath Extension Function API. </p> </li>
+</ul> <p>To port an existing application that uses the standard libxml2 library,
+use the <codeph>libxml2</codeph> component and call the C++ wrappers of the
+standard library. </p> <p>Here are some of the common tasks that applications
+perform through the XML DOM Engine: </p> <ul>
+<li id="GUID-2F9859FD-1B09-58FB-849D-323B01D9F63D"><p>Read an XML file by
+one of the following means: </p> <ul>
+<li id="GUID-AC959FCA-A1F5-5691-8B4A-FFD8E385C25B"><p>Use the <xref href="GUID-B575F3B3-85B0-3709-932A-99C0388D8B6E.dita"><apiname>RXMLEngDOMParser</apiname></xref> class
+to parse a regular XML file and get a DOM tree, as explained in the <xref href="GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita">XML DOM Parsing Tutorial</xref>. </p> </li>
+<li id="GUID-EC051C8A-47D1-5DE3-9093-C67FA6F75896"><p>Use the <xref href="GUID-72FD946E-36E1-3229-BF78-0E03D84BCB95.dita"><apiname>CXMLEngineSaxPlugin</apiname></xref> class
+to parse a regular XML file and get SAX events, as explained in the <xref href="GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808.dita#GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808/GUID-948C5BEE-0E05-525A-B601-909A1818FDA0">XML
+SAX Parsing Tutorial</xref>. </p> </li>
+<li id="GUID-149E3236-EAB3-5990-8E5C-40B36BB89ACB"><p>Use the <codeph>DeserializeL()&lt;/codeph&gt;
+method of the <xref href="GUID-B58E0BF8-099A-3E61-BA8C-E777CA9E9F38.dita"><apiname>TXmlEngDeserializer</apiname></xref> class to deserialise
+a compressed XML file and get SAX events. </codeph></p> </li>
+<li id="GUID-3165531B-E5EC-5965-ACA9-4B660C40C6D8"><p>Use the <codeph>UseDOMImplementation()</codeph> and <codeph>DeserializeL()</codeph> methods
+of the <xref href="GUID-B58E0BF8-099A-3E61-BA8C-E777CA9E9F38.dita"><apiname>TXmlEngDeserializer</apiname></xref> class to deserialise a compressed
+XML file and get a DOM tree. </p> </li>
+</ul> </li>
+<li id="GUID-A2269AAD-B0F9-50D2-8A96-5AEC601C84AA"><p>Save an XML object to
+a file by using the <xref href="GUID-CD621FD4-8ADE-3211-96E9-FC6EFC9AEE2C.dita"><apiname>TXmlEngSerializer</apiname></xref> class, as explained
+in the <xref href="GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E.dita">XML Serialisation
+Tutorial</xref>. </p> </li>
+<li id="GUID-2999261C-7049-50A6-A1DF-79CD57A039C4"><p>Search through an XML
+document with XPath, as explained in the <xref href="GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita">XPath
+Tutorial</xref>. </p> </li>
+<li id="GUID-D527989F-D3D8-50B5-9191-FBD59FCAC335"><p>Add extension functions
+to XPath, as explained in the <xref href="GUID-49A7E8FD-72DA-5D56-86BE-74AA9AAF7C02.dita">XPath
+Extension Tutorial</xref>. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita"><linktext>XML Framework</linktext>
+</link>
+<link href="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita"><linktext>libxml2</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5AF0B573-4351-5735-92A1-4F29BCF9A164.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5AF0B573-4351-5735-92A1-4F29BCF9A164"><title>prj_mmpfiles</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>prj_mmpfiles</codeph> </p> <p> <varname>mmp_file_1</varname>  <codeph>[build_as_arm]</codeph> <codeph>[tidy]</codeph>  </p> <p> <codeph>makefile</codeph>  <varname>makefile_1</varname> <codeph>[build_as_arm]</codeph>  <codeph>[tidy]</codeph> </p> <p> <codeph>makefile</codeph>  <varname>makefile_n</varname> <codeph>[build_as_arm]</codeph>  <codeph>[tidy]</codeph> </p> <p> <codeph>nmakefile</codeph>  <varname>makefile_1</varname> <codeph>[build_as_arm]</codeph>  <codeph>[tidy]</codeph> </p> <p> <codeph>nmakefile</codeph>  <varname>makefile_n</varname> <codeph>[build_as_arm]</codeph>  <codeph>[tidy]</codeph> </p> <p> <codeph>gnumakefile</codeph>  <varname>makefile_1</varname> <codeph>[build_as_arm]</codeph>  <codeph>[tidy]</codeph> </p> <p> <codeph>gnumakefile</codeph>  <varname>makefile_n</varname> <codeph>[build_as_arm]</codeph>  <codeph>[tidy]</codeph> </p> <p>In the <codeph>prj_mmpfiles</codeph> section, list the <filepath>.mmp</filepath> files contained in your component. </p> <p>Specify each <filepath>.mmp</filepath> file on a separate line. </p> <section><title>Relative paths</title> <p>If a relative path is specified with an <filepath>.mmp</filepath> file, the path will be considered relative to the directory containing the <filepath>bld.inf</filepath> file. </p> <p>For example, if in the <codeph>prj_mmpfiles</codeph> section, a certain <filepath>Hello.mmp</filepath> file is specified as a relative path: </p> <codeblock id="GUID-69924087-2F44-502F-86CE-25C3BEACEF7E" xml:space="preserve">PRJ_MMPFILES
+ProjSpec\Hello.mmp</codeblock> <p>and if the <filepath>bld.inf</filepath> file is in <filepath>\MyComp\</filepath>, then the full path for the location of <filepath>Hello.mmp</filepath> will be <filepath>\MyComp\ProjSpec\Hello.mmp</filepath>. </p> </section> <section><title>The tidy attribute</title> <p>Specify the <codeph>tidy</codeph> attribute if the releasable that an .<filepath>mmp</filepath> file defines is purely internal to your component, and therefore not required either by other components or for your component to execute. </p> <p>If the tidy attribute is specified in your component’s description file, then this will indicate to the <filepath>abld</filepath> tool when it is used to run the command <codeph>abld tidy</codeph>, to remove those releasables that are no longer required. </p> </section> <section><title>The build_as_arm attribute</title> <p>Use the <codeph>build_as_arm</codeph> statement to instruct an ARMV5 build to not build the project for the THUMB instruction set, but for the ARM instruction set. </p> <p>For details, see <xref href="GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita">ARM/THUMB overrides</xref>. </p> </section> <section><title>Extension makefiles</title> <p>Use the keyword <codeph>makefile</codeph>, <codeph>nmakefile</codeph>, and/or <codeph>gnumakefile</codeph> to specify extension makefiles for your component. Extension makefiles can be used where build activities need to be carried out which are not catered for by generated makefiles. </p> <p> <codeph>makefile</codeph> and <codeph>nmakefile</codeph> invoke <filepath>nmake</filepath> on the specified file. <codeph>gnumakefile</codeph> invokes <filepath>make</filepath>. </p> <p>Build activities relating to particular <filepath>.mmp</filepath> files or extension makefiles are carried out in the order in which the .<filepath>mmp</filepath> files and extension makefiles are listed in the <filepath>bld.inf</filepath> file. Extension makefiles can be interspersed among the .<filepath>mmp</filepath> files. </p> <p>See <xref href="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita">Extension makefiles targets</xref> for more details. </p> <p>Note that the extension makefiles are deprecated, use <codeph>PRJ_EXTENSIONS</codeph> instead. </p> </section> <section><title>Platform-specific use</title> <p>The <codeph>prj_mmpfiles</codeph> section is preprocessed for each platform listed in the <codeph>prj_platforms</codeph> section. </p> <p>If an .<filepath>mmp</filepath> file or extension makefile applies only to a particular platform, then place the item within </p> <codeblock id="GUID-993A8D09-5D18-5302-AD40-5FF5524ACF5B" xml:space="preserve">#if defined &lt;identifier&gt;
+#endif</codeblock> <p>For example, if an .<filepath>mmp</filepath> file relates only to the WINS platform, specify the file as follows: </p> <codeblock id="GUID-57672374-BEFA-5DB6-9573-FF295B470F71" xml:space="preserve">#if defined(WINS)
+&lt;mmp_file&gt;
+#endif</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B1A7CBF-40DE-56F9-B145-948C6F72B647.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B1A7CBF-40DE-56F9-B145-948C6F72B647" xml:lang="en"><title>Using
+TDesC16 Class</title><shortdesc>Use <apiname>TDesC16</apiname> for interfaces which access Unicode
+text, regardless of the build variant, but which does not change the data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-E63C406D-E480-59B0-B829-3838DDE6B24F"><title>Using in a
+function interface</title> <p>Interfaces which take wide (Unicode) text, use
+descriptors in the specification of that interface. All 16 bit concrete descriptors
+are derived from <codeph>TDesC16</codeph> which means that the interface can
+accept any 16 bit descriptor.</p> <p>The following code fragment shows the
+most common function prototype pattern.</p> <codeblock id="GUID-22E802FF-CFDD-52EB-87FD-90BE56022243" xml:space="preserve">void ClassX::foo(const TDesC16&amp; anArg);</codeblock> <p>The use of <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> ensures that the data cannot be
+modified through the descriptor; <codeph>const</codeph> is an extra guarantee
+that the data cannot be changed.</p> <p>In practice, nearly all code uses
+the build independent form, <codeph>TDesC</codeph>, unless an explicit 8 bit
+or 16 bit build variant is required.</p> </section>
+<section id="GUID-149EA2C7-E0A6-5AF6-BF63-9F07AAE1F0C2"><title>Extract leftmost
+part of data</title> <p>The code fragment shows how the leftmost part of data
+in a descriptor can be accessed, using the <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-FC14F917-66BE-352A-84ED-27478C3D3962"><apiname>TDesC16::Left()</apiname></xref> member
+function.</p> <p>The behaviour is the same for the build independent variant, <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref> with <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref>.</p> <codeblock id="GUID-92E42C6C-47A6-5216-88BC-689869F6D5C9" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str.Left(4);</codeblock> <p>The call to <codeph>Left()</codeph> returns a
+non-modifiable pointer descriptor representing the data string "<codeph>abcd</codeph>";
+this has length 4. The original data contained in, and represented by, the
+non-modifiable buffer descriptor <codeph>str</codeph>, is not changed in any
+way.</p> <codeblock id="GUID-9BF55CB5-45D1-5B90-8E3E-3BF704B0CB55" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str.Left(256);</codeblock> <p>This call to <codeph>Left()</codeph> returns
+a non-modifiable pointer descriptor representing the data string "<codeph>abcdefg</codeph>",
+i.e. the whole content of the descriptor <codeph>str</codeph>; this has length
+7.</p> <p>Note that the following call to <codeph>Left()</codeph> results
+in a panic.</p> <codeblock id="GUID-E74C6BA7-5676-55DA-8EDF-21D0C3F44CED" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str.Left(-1);           // Panic !</codeblock> </section>
+<section id="GUID-EE79E69C-3F7A-5AF8-9781-434A496255CA"><title>Extract rightmost
+part of data</title> <p>The code fragment shows how the right most part of
+data in a descriptor can be accessed, using the <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-97097CD2-B179-3D51-874F-3CE7A9D761F0"><apiname>TDesC16::Right()</apiname></xref> member
+function.</p> <p>The behaviour is the same for the build independent variant, <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref> with <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref>.</p> <codeblock id="GUID-41C7F212-E677-585E-80B1-3DED21E48537" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str.Right(4);</codeblock> <p>The call to <codeph>Right()</codeph> returns
+a non-modifiable pointer descriptor representing the data string "<codeph>defg</codeph>";
+this has length 4. The original data contained in, and represented by, the
+non-modifiable buffer descriptor <codeph>str</codeph>, is not changed in any
+way.</p> <codeblock id="GUID-6663CDF1-93F6-50DE-8A1A-E1F30F4528F2" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str.Right(256);</codeblock> <p>This call to <codeph>Right()</codeph> returns
+a non-modifiable pointer descriptor representing the data string "<codeph>abcdefg</codeph>".
+The whole content of the descriptor <codeph>str</codeph> has the length 7.</p> <p>Note
+that the following call to <codeph>Right()</codeph> results in a panic.</p> <codeblock id="GUID-2F9ADE78-9CA5-5032-95E0-5497687FC8FE" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str.Right(-1);          // Panic !</codeblock> </section>
+<section id="GUID-A7393084-990B-5C51-A5FF-B9C4182ECAE0"><title>Extract middle
+portion of the data</title> <p>The code fragment shows how a portion of data
+within a descriptor can be accessed, using the <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-76B4CCFB-F592-3A80-87FE-ACD868172F3C"><apiname>TDesC16::Mid()</apiname></xref> member
+function. Each call to<codeph>Mid()</codeph> returns a non-modifiable pointer
+descriptor representing the selected portions of data.</p> <p>The behaviour
+is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>, replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>,<xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and<xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref> with <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref>.</p> <codeblock id="GUID-7A669FDC-DE36-54C0-878F-0E8C4D9A3246" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16 str(KData);
+...
+str.Mid(0);   //returns TPtrC16 representing "abcdefg"; length is 7
+str.Mid(1);   //returns TPtrC16 representing "bcdefg";  length is 6
+str.Mid(6);   //returns TPtrC16 representing "g";       length is 1
+str.Mid(3,3); //returns TPtrC16 representing "def";     length is 3
+str.Mid(0,7); //returns TPtrC16 representing "abcdefg"; length is 7
+...
+str.Mid(8); // Panics !
+str.Mid(3,5); // Panics !</codeblock> </section>
+<section id="GUID-5506FF14-B12F-5CB8-9613-DFCF678BDB57"><title>Comparing data</title> <p>This
+code fragment shows the<xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-AD5D7B9B-527C-324F-B399-4AEDA0432D4B"><apiname>TDesC16::Compare()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-D3F03C22-0D4C-5C76-A10E-90B4B330F04B" xml:space="preserve">_LIT16(Kabcd,  "abcd");
+_LIT16(Kabcde, "abcde");
+_LIT16(Kabc,   "abc");
+_LIT16(Kabcx,  "abcx");
+...
+TBufC16&lt;8&gt; str(Kabcd);
+...
+str.Compare(Kabcde);    // returns -ve
+str.Compare(Kabc);      // returns +ve
+str.Compare(Kabcd);     // returns zero
+str.Compare(Kabcx);     // returns -ve</codeblock> <p>This result of the comparison
+means that:</p> <ul>
+<li id="GUID-902AA635-E5DD-5806-B1C3-E6D4CD6531C8"><p>"abcd" is less than
+"abcde".</p> </li>
+<li id="GUID-BD9A0EE3-F924-5C1F-88AF-A5A56B22B0B5"><p>"abcd" is greater than
+"abc".</p> </li>
+<li id="GUID-140D551D-F465-53AD-9FB8-0DBA1CB7FB29"><p>"abcd" is equal to "abcd".</p> </li>
+<li id="GUID-48853EF5-D2A1-55C6-92A3-1308BEE49FD0"><p>"abcd" is less than
+"abcx".</p> </li>
+</ul> </section>
+<section id="GUID-8E3F058A-4E53-5608-BEE0-69531AB28A5E"><title>Locating a
+character</title> <p>This code fragment shows the<xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-76F6497A-6353-3CF6-AB30-41E02EDC916A"><apiname>TDesC16::Locate()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-212A32BC-BBA0-5A1D-92C2-D9CF9609379F" xml:space="preserve">_LIT16(Kabcd,"abcd");
+TBufC16&lt;8&gt; str(Kabcd);
+...
+str.Locate('d');   // returns 3
+str.Locate('a');   // returns 0
+str.Locate('b');   // returns 1
+str.Locate('x');   // returns KErrNotFound</codeblock> </section>
+<section id="GUID-942CD420-E5A1-5A11-BC21-E895294CDDEB"><title>Finding data</title> <p>This
+code fragment shows the <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-3C5D15A1-E09F-34A5-A4E9-FEE36CED32B5"><apiname>TDesC16::Find()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-764360D8-EA0F-5B7D-939B-235F249C169E" xml:space="preserve">_LIT16(KAtoZ,"abcdefghijklmnopqrstuvwxyz");
+TBufC16&lt;32&gt; str(KAtoZ);
+...
+_LIT16(KFind1,"abc");
+str.Find(KFind1);            // returns 0
+
+_LIT16(KFInd2,"bcde");
+str.Find(KFInd2);            // returns 1
+
+_LIT16(KFind3,"uvwxyz");
+str.Find(KFind3);            // returns 20
+
+_LIT16(KFind4,"0123");
+str.Find(KFind4);            // returns KErrNotFound
+
+_LIT16(KFind5,"abcdefghijklmnopqrstuvwxyz01");
+str.Find(KFind5);            // returns KErrNotFound
+
+str.Find(KNullDesC16);       // returns 0</codeblock> </section>
+<section id="GUID-35A35FA8-F8CF-59F7-AEF6-23F340E5E9EE"><title>Pattern matching</title> <p>This
+code fragment shows the <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-D104D885-DB49-30CD-A78D-2E10A783CA93"><apiname>TDesC16::Match()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-465DAB75-DFA3-5BE9-AC38-4548C9395334" xml:space="preserve">_LIT16(KAtoZ,"abcdefghijklmnopqrstuvwxyz");
+TBufC16&lt;32&gt; str(KAtoZ);
+    ...
+_LIT16(KMatch1,"*ijk*");
+str.Match(KMatch1);          //returns -&gt; 8
+
+_LIT16(KMatch2,"*i?k*");
+str.Match(KMatch2);          //        -&gt; 8
+
+_LIT16(KMatch3,"ijk*");
+str.Match(KMatch3);          //        -&gt; KErrNotFound
+
+_LIT16(KMatch4,"abcd");
+str.Match(KMatch4);          //        -&gt; KErrNotFound
+
+_LIT16(KMatch5,"*i*mn*");
+str.Match(KMatch5);          //        -&gt; 8
+
+_LIT16(KMatch6,"abcdef*");
+str.Match(KMatch6);          //        -&gt; 0
+
+_LIT16(KMatch7,"*");
+str.Match(KMatch7);          //        -&gt; 0
+
+_LIT16(KMatch8,"*y*");
+str.Match(KMatch8);          //        -&gt; 24
+
+_LIT16(KMatch9,"*i??k*");
+str.Match(KMatch9);          //        -&gt; KErrNotFound</codeblock> <p>To test
+for the existence of a pattern within a text string, the pattern must start
+and end with an ‘*’.</p> </section>
+<section id="GUID-0C41371C-F933-55A5-A56A-46C14D8E0072"><title>Referencing
+a data item</title> <p>The code fragment shows how a data item can be referenced
+using<xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-1AA9098F-02ED-3305-B7B3-02A495A245A2"><apiname>TDesC16::operator[]()</apiname></xref>.</p> <p>The behaviour is the
+same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>, replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-36DC1901-DE68-539C-8B9C-018D8C4DDBA5" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;8&gt; str(KData);
+...
+str[0];                 // returns reference to 'a'
+str[3];                 // returns reference to 'd'
+str[7];                 // Panics !!</codeblock> </section>
+<section id="GUID-1885CDFC-D55F-596E-9BB4-D4BCB509FEB6"><title>Creating a
+heap descriptor</title> <p>The code fragments show how a heap descriptor is
+created from an existing descriptor using the <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-9F44916A-1E89-350C-B831-79AF4D07CB15"><apiname>TDesC16::AllocL()</apiname></xref> member
+function.</p> <p>The behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-B7343D82-C251-3C27-A1E4-79B628F2D593.dita"><apiname>_LIT16</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>,<xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and<xref href="GUID-3D3D9CD7-C8FD-3F81-9CC5-1A71D4F9751E.dita"><apiname>HBufC16</apiname></xref> with <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>.</p> <codeblock id="GUID-DDC25AE2-0F9C-54E7-BDF5-0BCD0AA0BE41" xml:space="preserve">_LIT16(KData,"abcdefg");
+TBufC16&lt;16&gt; str(KData);
+...
+HBufC16* ptr;
+...
+ptr = str.AllocL();     //Creates and returns address of
+...                     //heap descriptor. The new heap descriptor
+...                     //contains a copy of the original data.
+ptr-&gt;Length();          //Returns 7; the length of "abcdfeg"</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7.dita#GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7/GUID-235E272D-6F5A-5740-8150-9698C8C8D55D">
+<linktext>Using TDesC in a function interface</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B26AB8E-E20A-4C15-B4F8-812ED9A4A96C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B26AB8E-E20A-4C15-B4F8-812ED9A4A96C" xml:lang="en"><title>Defining
+resources for your own CBA buttons</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To define <xref href="GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita#GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84/GUID-5F749184-C804-41FC-BA81-038783BDC967">resources</xref> for
+your own <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA buttons</xref>:</p>
+<ol>
+<li id="GUID-72E2159F-9644-4B0A-B534-3988B618AF47"><p>Determine
+the CBA button requirements of your application.</p></li>
+<li id="GUID-D112D0E5-3DE3-46F2-91CC-073B71F368B9"><p>Declare <parmname>cba
+= r_name21</parmname> in the <xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita"><parmname>EIK_APP_INFO</parmname></xref> or <xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita"><parmname>AVKON_VIEW</parmname></xref> statements,
+where <parmname>r_name21</parmname> is a unique identifier in the application.</p>
+</li>
+<li id="GUID-6D0D8115-9645-4CC7-8384-7226BCF72017"><p>Create a <parmname>RESOURCE</parmname> statement
+for the CBA buttons. For the declaration in step 2, the syntax is as follows:</p>
+<codeblock id="GUID-8DE70A48-585D-46CB-AA5A-0A7CF3DCD3AC" xml:space="preserve">RESOURCE CBA r_name21
+	{
+	flags = enumerated value in eikon.hrh;
+	buttons =
+		{
+		CBA_BUTTON
+			{
+			id = enumerated command either from Symbian platform or from application;
+			txt = STRING_button_name1;
+			bmpfile = file name;
+			bmpid = ID of bitmap in file;
+			bmpmask = ID of bitmap mask in file;
+			},
+		};
+	}
+			</codeblock>
+<p>where:</p>
+<ul>
+<li><p><parmname>flags</parmname> indicates how the button group
+should be handled by the Symbian platform. The default value is <parmname>EEikButtonGroupAddToStack</parmname>,
+which indicates the button group should be added to the stack. </p><p>For
+more information on the stack, see <xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">Event
+handling</xref> </p>
+<p>While the value used here is determined by the requirements of your
+application, typically the default value is valid for most applications.</p>
+</li>
+<li><p><parmname>buttons</parmname> is the name of an array that
+holds the individual buttons that the group is composed of. The array can
+contain the <parmname>CBA_BUTTON</parmname> structures.</p></li>
+</ul>
+<p>The <parmname>CBA_BUTTON</parmname> structure has the following syntax: </p>
+<ul>
+<li><p><parmname>id</parmname> is an enumerated value for the command
+that is associated with the button. The value used can be provided either
+by the <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">underlying Symbian
+platform</xref> or by <xref href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita">your
+application</xref>. </p>
+<itemgroup>
+<p> For more information on command handling, see <xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">Event
+handling</xref>.</p>
+</itemgroup>
+</li>
+<li><p><parmname>txt</parmname> is a string that defines the name
+of the button present</p></li>
+<li><p><parmname>bmpfile</parmname>, <parmname>bmpid</parmname>,
+and <parmname>bmpmask</parmname> are used for defining an icon for the button. </p>
+</li>
+</ul>
+</li>
+</ol>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B2D6FE7-A09A-5DB1-A0B6-D1A1397D845F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B2D6FE7-A09A-5DB1-A0B6-D1A1397D845F" xml:lang="en"><title>How
+to append and insert elements</title><shortdesc>Elements can be added into an array or added to the end by specifying
+the insertion position.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Elements can be added into an array by inserting them into a specified
+position.</p>
+<p>Adding elements into an array may cause memory to be allocated and this
+can fail, causing these functions to leave. User code must always be prepared
+to handle this.</p>
+<section id="GUID-8C3AADE0-E234-456F-9A3C-FE27B7F3FC8F"><title>Appending an element</title> <p>The following code fragment
+appends three <codeph>TElement</codeph> objects to a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> constructed
+with a granularity of four, each successive element containing the characters
+“X0”, “X1” etc. </p> <codeblock id="GUID-B4357E74-3284-5433-92E7-298E185A8A19" xml:space="preserve">_LIT(KFormatTxt,"X%u");</codeblock> <codeblock id="GUID-77691399-A80A-5BDA-94F3-ECC687D3A233" xml:space="preserve">class TElement
+ {
+public :
+ TElement();
+public :
+ TBuf&lt;4&gt; iData;
+ };</codeblock> <codeblock id="GUID-0ECAFAD0-76F0-598C-93DC-4E62889D1831" xml:space="preserve">CArrayFixFlat&lt;TElement&gt;* fixflat;
+fixflat = new (ELeave) CArrayFixFlat&lt;TElement&gt;(3);</codeblock> <codeblock id="GUID-C856566B-0EE5-5B43-880B-2473FD338C84" xml:space="preserve">TElement theElement;</codeblock> <codeblock id="GUID-5E0B0032-EA52-5C3B-AA48-D12F94274D36" xml:space="preserve">for (TInt value = 0; value &lt; 3; value++)
+ {
+ theElement.iData.Format(KFormatTxt,value);
+ fixflat-&gt;AppendL(theElement);
+ }</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-8A3A6363-9F76-5640-8F99-9B5D2020DE75"><p>Adding the first element
+into this array causes an array buffer with a capacity of 3 elements to be
+constructed. Attempting to add a 4th element causes the array buffer to be
+re-allocated so that it has a capacity of 6 elements.</p> </li>
+<li id="GUID-30EC3B13-981F-5F6E-A538-B34F52A8083E"><p>In general, the granularity
+should be carefully chosen to minimise the number of calls to the memory allocator
+and to avoid wasted space within the array buffer.</p> </li>
+</ul> </section>
+<section id="GUID-49AC8560-DE23-453F-8608-301937D0E044"><title>Inserting an element</title> <p>The following code fragment
+uses <codeph>InsertL()</codeph> to insert a new element into a definite position
+in a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> array. For example, to insert
+a <codeph>TElement</codeph> object at the <i>beginning</i> of the array (position
+zero in the array) :</p> <codeblock id="GUID-791DCCF9-86EC-561B-A470-432782D91002" xml:space="preserve">CArrayFixFlat&lt;TElement&gt;* fixflat;
+fixflat = new (ELeave) CArrayFixFlat&lt;TElement&gt;(3);</codeblock> <codeblock id="GUID-F3F8EE8B-030C-50C3-A31A-34194C63A407" xml:space="preserve">TElement theElement;</codeblock> <codeblock id="GUID-2949231C-D96A-54BC-B2D6-FB16EF3CC266" xml:space="preserve">_LIT(KTxtBeg,"BEG");
+theElement.iData = KTxtBeg;
+fixflat-&gt;InsertL(0,theElement);</codeblock> <p>To insert a new element at
+(what is now) position 2 of the array:</p> <codeblock id="GUID-0FFDE613-1044-5251-B09E-DD353B56472C" xml:space="preserve">_LIT(KTxtMid,"MID");
+theElement.iData = KTxtMid;
+fixflat-&gt;InsertL(2,theElement);</codeblock> <p>To insert a new element at
+the back of the array:</p> <codeblock id="GUID-C642EE09-BDF7-55BD-B499-E721FA1E56D8" xml:space="preserve">_LIT(KTxtEnd,"END");
+theElement.iData = KTxtEnd;
+fixflat-&gt;InsertL(fixflat-&gt;Count(),theElement);</codeblock> <p>Elements can
+also be inserted into the array at a position determined by a key (i.e. inserted
+in key sequence) using the <codeph>InsertIsqL()</codeph> member function.</p> </section>
+<section id="GUID-B7EDDA8C-007F-41F4-994D-8B2A02372054"><title>Adding and inserting a pointer to an array of pointers</title> <p>The
+following code fragment uses the <codeph>AppendL()</codeph> and <codeph>InsertL()</codeph> functions
+to append and insert a pointer into a <codeph>CArrayPtrFlat</codeph> array.
+The pointer being added is a pointer to a <codeph>CBase</codeph> derived objects:</p> <codeblock id="GUID-68264D50-746D-5EC3-90A8-7B89D911794E" xml:space="preserve">CArrayPtrFlat&lt;TElement&gt;* ptrflat;
+ptrflat = new (ELeave) CArrayPtrFlat&lt;TElement&gt;(3);</codeblock> <codeblock id="GUID-C150C0F3-F2CD-5B46-A3AF-349BD6515DF3" xml:space="preserve">ptr = new (ELeave) CElement;
+...
+ptrflat-&gt;AppendL(ptr);
+...
+ptr = new (ELeave) CElement;
+...
+ptrflat-&gt;InsertL(0,ptr);</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52"><title>Troubleshooting</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes how to troubleshoot issues that you may face while writing or building Std C++ code on Symbian platform. </p> <section><title>Errors while building Std C++ Code </title> <p> <b>Problem</b>  </p> <p>You may get a build error when you create a static library as illustrated in the following code and link it with an <codeph>STDEXE</codeph>. </p> <p>The <filepath>.mmp</filepath> file of the static library: </p> <codeblock id="GUID-24E1CFD7-2B90-5608-A0B4-49A0D4730B22" xml:space="preserve">//operator_new_failure_example_lib.mmp
+Target             operator_new_failure_example_lib.lib
+Targettype        lib
+Source            op_new_in_lib.cpp
+Systeminclude        /epoc32/include/stdapis/stlportv5
+Systeminclude        /epoc32/include/stdapis</codeblock> <p>The <filepath>.cpp</filepath> file of <codeph>operator new</codeph> reference in the static library example: </p> <codeblock id="GUID-53202569-286A-5E39-9530-6077E2E1F740" xml:space="preserve">// op_new_in_lib.cpp contents
+#include &lt;new&gt;
+int doSomething()
+    {
+    try
+        {
+        int *ptr = new int(0); // This refers the StdC++ operator new
+        //do something more…
+        }
+        catch (std::bad_alloc)
+        {
+        return 1;
+        }
+    delete ptr;
+    return 0;
+    }</codeblock> <p>The <filepath>.mmp</filepath> file of the <codeph>STDEXE</codeph> that links with the static library: </p> <codeblock id="GUID-7A60B16A-3AD8-50B2-8F17-84338291A4E8" xml:space="preserve">//operator_new_failure_example.mmp
+Target             operator_new_failure_example.exe
+Targettype        stdexe
+Source            op_new_in_stdexe.cpp
+Systeminclude        /epoc32/include/stdapis/stlportv5
+Systeminclude        /epoc32/include/stdapis
+Library            libstdcppv5.lib libc.lib
+Staticlibrary        operator_new_failure_example_lib.lib
+Capability        all -tcb</codeblock> <p>The <filepath>.cpp</filepath> file of <codeph>operator new</codeph> reference in static library example: </p> <codeblock id="GUID-53419423-2116-5B6C-A3A7-6AFBD039321C" xml:space="preserve">// op_new_in_stdexe.cpp contents looks as follows:
+int main()
+    {
+    // the doSomething function is defined in the static library operator_new_failure_example_lib.lib that this exe is linking against.
+    return doSomething();
+    }</codeblock> <p> <b>Solution</b>  </p> <p>The build error is caused because this code violates rule 5 under the <xref href="GUID-C9D4D586-58BF-5676-A53F-9C3A51101430.dita">Guidelines for Writing Standard C++ Libraries</xref> section. As per the rule, a static library of target type <codeph>LIB</codeph> cannot be linked against an <codeph>STDEXE</codeph> or <codeph>STDDLL</codeph>, unless it has the <codeph>MMP</codeph> keyword, STDCPP in its <filepath>.mmp</filepath> file. </p> <p>You can fix the build error by adding <codeph>STDCPP</codeph> in the <filepath>operator_new_failure_example_lib.mmp</filepath> file as shown in the following code: </p> <codeblock id="GUID-8EA4BD46-ADBC-5243-9B3A-14BCA2767424" xml:space="preserve">//operator_new_failure_example_lib.mmp
+Target             operator_new_failure_example_lib.lib
+Targettype        lib
+//The STDCPP keyword specifies Standard C++ 
+STDCPP
+Source            op_new_in_lib.cpp
+Systeminclude        /epoc32/include/stdapis/stlportv5
+Systeminclude        /epoc32/include/stdapis</codeblock> </section> </conbody><related-links><link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright Acknowledgments for Standard C++
+                (STLport)</linktext> </link> <link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard C++ Library Overview</linktext> </link> <link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext>Standard C++ Support on Symbian Platform</linktext> </link> <link href="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita"><linktext> Developing Applications or Libraries
+                Using Standard C++</linktext> </link> <link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building a Standard C++ Application or
+                Library</linktext> </link> <link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B43ED43-21B4-54C6-8637-76554769E6FE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B43ED43-21B4-54C6-8637-76554769E6FE" xml:lang="en"><title>POP3
+MTM Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of the Post Office Protocol (POP3) MTM
+component. </p>
+<section><title>Purpose</title> <p>Allows Internet email to be retrieved using
+the POP3 protocol. </p> </section>
+<section><title>Architectural relationships</title> <p>The Messaging Middleware
+architecture defines a framework in which modules (MTMs) can be implemented
+that provide support for particular messaging protocols. A client MTM provides
+the API for application engines to use the protocol. The POP3 MTM API provides
+the client MTM API, plus supporting classes for POP3, see <xref href="GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita">Email
+Overview</xref>. </p> </section>
+<section><title>Description</title> <p>The API has four key concepts: POP3
+Client MTM, get mail helper, POP3 email settings, and email message entry
+information. </p> <p><b>POP3 Client MTM</b> </p> <p>The POP3 Client MTM provides
+MTM-specific operations for connection and mail retrieval. Some generic messaging
+operations, such as creating and sending messages, are not appropriate for
+POP3, and are not supported by the MTM. </p> <p>The POP3 Client MTM class
+is <xref href="GUID-40CB617C-849B-3377-A877-A90B43606CBC.dita"><apiname>CPop3ClientMtm</apiname></xref>. Most of the functions in this class
+are implementations of the virtual functions defined by the <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref> base
+class. The POP3-specific operations are defined in <xref href="GUID-BD51FABB-CD40-3F5C-BDEF-DD467CF2878A.dita"><apiname>TPop3Cmds</apiname></xref>. </p> <ul>
+<li id="GUID-4C414AB7-5D01-5F04-B5B1-EF1FF9D4D466"><p> <b> Reply to and forward
+messages</b>  </p> <p>These are accessible through the <xref href="GUID-4E0F9B6F-C46B-34BA-BB8C-0A75014D31FD.dita"><apiname>ReplyL()</apiname></xref> and <xref href="GUID-3BBE6922-4F08-36AB-BAA9-2F37D6819794.dita"><apiname>ForwardL()</apiname></xref> classes
+of a Client MTM and are implemented as calls to the email utilities <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita"><apiname>CImEmailOperation</apiname></xref> class. </p> </li>
+<li id="GUID-873EDAA6-42E5-549E-89E4-9FEDCA3E0C12"><p> <b>Reply to, forward,
+create new, create receipt and forward as attachment </b>  </p> <p>These are
+accessible as commands available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. They are implemented as calls to <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita"><apiname>CImEmailOperation</apiname></xref>. </p> </li>
+<li id="GUID-6AC1C5A2-B898-5108-AB4F-3C245E6843CE"><p> <b>Connecting, disconnecting
+and copying email while connected </b>  </p> <p>These operations are accessible
+as commands available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. They are implemented as calls to the POP3 Server MTM. </p> </li>
+<li id="GUID-99321F1B-DB0E-581A-9E32-2C581B5341CA"><p> <b>Querying connection
+status</b>  </p> <p>These commands let clients know whether the POP3 Server
+MTM is connected to an email server and whether it is currently processing
+a request. They are available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. The Client MTM requests the information from the Server
+MTM. </p> </li>
+<li id="GUID-101CBE69-5DE6-5549-8CEE-8675B41338C1"><p> <b>Compound operation</b>  </p> <p>The
+Client MTM provides functionality to wrap up connecting to email servers,
+copying or moving new messages or a selection of messages, and then optionally
+disconnecting. These commands are available through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> class
+of the Client MTM. The Client MTM implements this by using the <xref href="GUID-EBD29494-1DFA-3C87-82B0-C68908B1970E.dita"><apiname>CImPOP3GetMail</apiname></xref> class
+which requests the correct sequence of operations from the Server MTM, waiting
+for each operation to complete before requesting the next one. </p> </li>
+<li id="GUID-D392744A-7566-58A2-9884-04AD2DCF7F2E"><p> <b>Send on next connection </b>  </p> <p>If
+the Client MTM gets a request to connect to an email server it checks for
+the POP3 settings. If the send on next connection option is set, the Client
+MTM launches the <filepath>autosend.exe</filepath> executable, which handles
+sending messages waiting in the outbox. </p> </li>
+<li id="GUID-6A283BFD-1708-5F2F-B071-07BF3A1D2466"><p> <b> Offline operations</b>  </p> <p>The
+POP3 Client MTM has a command to cancel offline operations. This is available
+through the <xref href="GUID-41E5C23D-CD5A-3DD3-BFCE-F8C576CE2149.dita"><apiname>InvokeAsyncFunction</apiname></xref> API of the Client MTM.
+The Client MTM passes the request to the Server MTM. </p> </li>
+</ul> <p><b>Get mail helper</b> </p> <p>This encapsulates all the operations
+required to connect and retrieve mail. Options are available for moving or
+copying mail, and for getting all mail or selected mail. The get mail helper
+is provided by <xref href="GUID-EBD29494-1DFA-3C87-82B0-C68908B1970E.dita"><apiname>CImPOP3GetMail</apiname></xref>. </p> <p><b>POP3 email settings </b> </p> <p>The
+settings define email server and user log-on details. The settings are provided
+by the <xref href="GUID-6A7DFCF7-7268-3013-A5B6-5B77B6233329.dita"><apiname>CImPop3Settings</apiname></xref> class. </p> <p><b>Email message
+entry information</b> </p> <p>Protocol-specific data for a message is stored
+in fields in its index entry. A class <xref href="GUID-96CB1F06-0642-3313-8E18-1F68CBE26CCB.dita"><apiname>TMsvEmailEntry</apiname></xref> is
+provided to read these fields for e-mail protocols (including POP3). </p> </section>
+</conbody><related-links>
+<link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type
+Module</linktext></link>
+<link href="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita"><linktext>Email   
+             Settings</linktext></link>
+<link href="GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita"><linktext>Email Tutorials</linktext>
+</link>
+<link href="GUID-E56E21A9-B545-5217-A877-E64D30275157.dita"><linktext>Using the
+Policy Evaluator Plug-in</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Example code</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105" xml:lang="en"><title>ARMV5
+build customisation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The ARMV5 build supports the notion of customisation. This allows a programmer
+to define a new build target that is derived from the ARMV5 build. A new build
+target is defined via a <filepath>.BSF</filepath> file. The build system becomes
+aware of a customised build by the presence of its .BSF file in <filepath>epoc32\tools\</filepath>.
+Such customisations are referred to by the name of their <filepath>.BSF</filepath> file:
+e.g. the file <filepath>XScale.bsf</filepath> defines the build target <codeph>XScale</codeph>.
+This name can be used in exactly the same way as built-in names such as ARMV5. </p>
+<section><title>BSF Syntax </title><p>It is intended that the syntax of a
+.BSF file is toolchain specific with the exception of the obligatory header:</p><codeblock id="GUID-3CF96A81-8710-5044-8AF0-A9D568822045" xml:space="preserve">#&lt;BSF&gt;#                    : token to identify this as a BSF file must appear at start of first line.
+CUSTOMIZES     build            : identitifies which build is customized by this spec  e.g. ARMV5.</codeblock><p>Currently,
+only ARMV5 can be customised. The ARMV5 specific .BSF syntax is as follows:</p><codeblock id="GUID-6E4208DE-3B44-5055-8DF5-943210B83779" xml:space="preserve">THUMB_OPTIONS    opt1 opt2 ...    : compiler options used by default for user side code (expected to be THUMB mode)
+ARM_OPTIONS    opt1 opt2 ...    : compiler options used when BUILD_AS_ARM etc are specified (expected to be ARM mode)
+KERNEL_OPTIONS    opt1 opt2 ...    : compiler options used to compile kernel side code
+COMMON_OPTIONS    opt1 opt2 ...    : compiler options that are added to all the above</codeblock><p>The
+above four keywords specify compiler options that can be overriden in an MMP
+file through<codeph>OPTION</codeph>. For example: </p><codeblock id="GUID-EDE9A728-34C2-546F-B93D-77B8CD8BFA0D" xml:space="preserve">OPTION ARMCC -Ospace</codeblock><p>A final keyword specifies the system-wide options that cannot be overridden
+in an MMP file via <codeph>OPTION</codeph>. Typically, these specify options
+within the EABI e.g. the SOFTVFP calling convention. They are called invariant
+since code compiled with different settings will not be binary compatible.</p><codeblock id="GUID-B6AB5699-2C5A-5B39-83B2-56ED9976D5B9" xml:space="preserve">INVARIANT_OPTIONS    opt opt2 ...    : these options are appended to all compiler command lines</codeblock></section>
+<example><p>The following is an example bsf file: </p><codeblock id="GUID-9CDC9BA6-9A59-55F7-8950-184DF26BF10D" xml:space="preserve">#&lt;bsf&gt;#
+
+# Example build specialization file 
+# 
+# NB currently specialization only applies to ARMV5 build using RVCT.
+
+# This file customizes the default ARMV5. It specifies a build that
+# always uses optimization level O1 rather than the default O2.
+customizes ARMV5
+
+# The following options that can be overridden by MMP files
+
+# Use these options when compiling user-side THUMB code
+thumb_options    -thumb -O1 
+
+# Use these options when compiling user-side ARM code
+arm_options    -arm -O1 
+
+# Use these options when compiling Kernel code
+kernel_options    -arm -O1 
+
+# This just factors out common (contingent) options from the above.
+# These options can also be overridden by MMP files.
+common_options    --diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267
+
+# Fixed options for this build. These options should only be changed with great care since
+# they have the potential to introduce incompatible ABI (or machine) level effects.
+# -cpu 5T - this build just targets a generic 5T
+# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation
+# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale)
+# --dll_vtbl - this switches on class exporting and is needed to support Symbian platform DLL model
+# -apcs /inter - redundant on 5T, but worth saying anyway
+invariant_options    -cpu 5T -fy -Ono_known_library -fpu softvfp --dll_vtbl -apcs /inter</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B451D6F-1F3D-5B54-BBC4-212D04F9977F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5B451D6F-1F3D-5B54-BBC4-212D04F9977F"><title>Data Transfer Performance Guidelines</title><shortdesc>This section provides some information on how a client application can be optimised to improve data transfer performance.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section is not a tutorial because some performance improvements must be balanced with other goals for the application. </p>
+<section id="SECTION_6258FE7CC35C4B3A890A222B9AB9E199">
+<title>Buffer size</title> 
+<p>The larger the buffers that are used, the fewer requests required to the Serial Communications Server. Use larger buffers to reduce the application's CPU requirements. </p> 
+</section> 
+<section id="SECTION_F38ABF941586401C97F20FA66B0B3E15">
+<title>Global Buffers</title> 
+<p>To create or destroy a Descriptor requires CPU time to complete the constructor or destructor. Performance is increased by reducing the number of requests to create or destroy a Descriptor. To reduce the number of Descriptor create requests, create a global Descriptor for the data buffer. A global Descriptor is a Descriptor that is available to all functions in the application. </p> 
+<p>The <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-B0B6BC5D-4BCD-3A74-9E1C-17BA58BB7B33"><apiname>RComm::Read()</apiname></xref> and <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-27B1F841-8478-33E0-A168-11DC468183C0"><apiname>RComm::Write()</apiname></xref> functions are available in variants that take a length parameter. Use the length parameter when a global descriptor is used. If the length parameter is not used, the <codeph>RComm::Read()</codeph> and <codeph>RComm::Write()</codeph> APIs use the length of the Descriptor to define the number of characters to read or write. </p> 
+</section> 
+<section>
+<title>Indexing descriptors</title> 
+<p>Descriptors have C [] array indexing operators. Do not use the C [] array indexing operators since pointer arithmetic is faster. </p> 
+</section> 
+<section id="SECTION_D5C4517ADAF64864B5D0F82481A3B86E">
+<title>Read Requests</title> 
+<p>Configure the ports so that the Serial Communications Server manages all the processing: </p> 
+<ul id="UL_690FD6E22E7E4A80979940EBC42124A0">
+<li id="GUID-1BB9AB77-C6DB-503B-911F-D7C2580A6C04"><p>Set time-outs to trap error conditions </p> </li> 
+<li id="GUID-7A230C7F-D781-5197-BC3E-24A58A87108D"><p>Set termination characters for the protocol. See <xref href="GUID-31E9F790-8A47-588C-A515-D2C8CD367ADE.dita">How to Terminate Read Requests Early: Tutorial</xref>  </p> </li> 
+</ul> 
+</section> 
+<section id="SECTION_9BD41B8E1A8145B18F4B3A01E850C478">
+<title>Write Requests</title> 
+<p>Configure the ports so that the Serial Communications Server manages all the processing: </p> 
+<ul>
+<li id="GUID-29979D5C-776B-50E7-955A-E955E9B2E075">
+<p>Set ports to return early when no response from the remote device is expected, or where there is a lot of processing to prepare the next block of data to be sent. See <xref href="GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F.dita">How to Terminate Write Requests Early: Tutorial</xref>  </p> 
+</li> 
+</ul> 
+</section> 
+<section id="SECTION_438F3E6F08D24A0EBC3B3DC6DB77EAEE">
+<title>ReadOneOrMore()</title> 
+<p>If <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-D26D6D62-72F0-313C-B3D5-2CE28FDE9BED"><apiname>RComm::ReadOneOrMore()</apiname></xref> is used in a loop, the function may cause slower performance. This slower performance is the result of the loop reading smaller and smaller blocks until on single characters are read. </p> 
+<p>The <xref href="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita">Glass Teletype</xref> example uses a time-out of one tenth of a second. This time-out has two purposes: </p> 
+<ul id="UL_5D1F37BA3F2B4D9FBD4423F110DBB402">
+<li id="GUID-B7069241-C624-5DBA-BCC4-6D663CF41005"><p>The time-out simulates the delay effect of a terminal </p> </li> 
+<li id="GUID-D19604EF-F835-5203-8DA6-52FB2D8653FF"><p>The time-out allows the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-B0B6BC5D-4BCD-3A74-9E1C-17BA58BB7B33"><apiname>RComm::Read()</apiname></xref> API to be used while not causing a large load on the CPU </p> </li> 
+</ul> 
+<p>If the time-out expires, the Glass Teletype example then calls <codeph>ReadOneOrMore()</codeph>. </p> 
+<p>The trade-off is that the <codeph>RComm::Read()</codeph> call to the Serial Communications Server has to be renewed 10 times every second even when no data is being transferred. This was considered a smaller overhead than that incurred if data were coming in rapidly and as a result <codeph>ReadOneOrMore()</codeph> was called up to 2000 times every second. </p> 
+</section>
+</conbody><related-links id="UL_C6904BAEFA8449FAABA5BA76FDD51B78">
+<link href="GUID-12FF05BE-F06E-58F0-909D-05CB6F7FA03E.dita"><linktext>Code efficiency</linktext></link>
+<link href="GUID-0E6C7017-E430-51C0-A5D6-1798B0DCC6BC.dita"><linktext>Handshaking</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B50E929-5C29-5920-965E-24F6CB616AC9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5B50E929-5C29-5920-965E-24F6CB616AC9"><title>Management and searching</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>These classes provide high level file system functions which can operate on files and directories located throughout a directory hierarchy and which can take some time to complete.</p> <p>The classes provide services to:</p> <ul><li id="GUID-9B28F1D4-CE2A-5037-BE14-55B69403390B"><p>scan through a hierarchy, upwards or downwards, returning a filtered list of the entries contained in each directory</p> </li> <li id="GUID-CFDED758-5F8C-5DF1-83A7-B6774E9243D3"><p>carry out file management operations on files and directories in the hierarchy, for example, deleting an entire directory structure or moving a group of files</p> </li> <li id="GUID-6B959F2A-B707-5F12-9BCD-C70CA33C9126"><p>search for each occurrence of a filename in one or more directories.</p> </li> </ul> <p>File management is provided by <codeph>CFileMan</codeph> class. Its functions may operate recursively or non-recursively and accept the use of wildcards. Synchronous and asynchronous variants are provided for each of these functions and the use of the <codeph>MFileManObserver</codeph> protocol allows user notification to take place during the operation.</p> <p><codeph>TFindFile</codeph> and <codeph>CFileMan</codeph> classes support the use of wildcard characters. An asterisk indicates any number of characters, and a question mark indicates a single character. Note that in the context of these classes, <codeph>*</codeph> and <codeph>*.*</codeph> are equivalent and match to all files, with and without extensions. Filename matching is case insensitive.</p> <p>Before using any of these classes, a connection to a file server session must have been made and is passed to the constructor of the class. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B63D14D-007D-566F-A065-1A25FE4B97A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B63D14D-007D-566F-A065-1A25FE4B97A3" xml:lang="en"><title>Log Engine</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Log Engine.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e351317_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B6BF7FA-21D2-5A63-8217-6D36F6B8C033.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B6BF7FA-21D2-5A63-8217-6D36F6B8C033" xml:lang="en"><title>Introduction to Store streams</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e297911_href.png has changed
Binary file Symbian3/SDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e113139_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5B966A81-2309-5169-963A-19E52D98A6E8"><title>Playing media files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use the MVS to play audio and video media files. </p> <p>To play a media file: </p> <ol id="GUID-387F8594-49D5-503C-A963-8CE8D5AF5AC0"><li id="GUID-E12E1D44-9994-5772-8283-08FEDB5218EB"><p>In the <i>File</i> menu, click <i>Open for Play</i>. The <i>Open file</i> dialog box is displayed. </p> </li> <li id="GUID-61CCAAE8-6828-5B22-8508-9360D057912D"><p>In the dialog box, if necessary, enter the names of the disk drive and folder containing the file, or select them from the lists. </p> </li> <li id="GUID-46AF6C10-0A8C-5675-A742-A3269CE6B74E"><p>In the dialog box, enter the file name or select the file from the list. </p> </li> <li id="GUID-3FAE4417-318B-5AF8-827E-FFF38BAA12A0"><p>In the dialog box, click <i>OK</i> to open the file. </p> </li> <li id="GUID-97BC5069-6505-5A6C-B59D-30F7E8684DFB"><p>Click the tool bar <i>Play</i> button, or in the <i>Controls</i> menu, click <i>Play</i>. </p> </li> </ol> <ul><li id="GUID-15F0D8CC-78DB-51A3-BFB1-6E7FD5F60F4C"><p>To pause a playing audio file, click the tool bar <i>Pause</i> button, or in the <i>Controls</i> menu, click <i>Pause</i>. Repeat this to un-pause the file and resume playing. </p> <p> <b>Note:</b> You cannot pause video playback. </p> </li> <li id="GUID-87C92C23-E484-58C5-A3A3-785AD1FA01AE"><p>To stop a file playing, click the tool bar <i>Stop</i> button, or in the <i>Controls</i> menu, click <i>Stop</i>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5" xml:lang="en"><title>AdvancedClientServerExample:
+Using Client/Server APIs</title><shortdesc>This example application demonstrates the use of client/server
+APIs using a logical device driver (LDD) and a physical device driver (PDD).</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4A6D20D7-F28D-49AD-AF44-96FA26ED867A"><title>Introduction</title> <p> This example implements asynchronous
+as well as synchronous client requests to the server. This example also demonstrates
+a client and server running in separate processes and a client and server
+running in the same process. </p> <p>This example demonstrates the following: </p> <ul>
+<li id="GUID-D4A42C17-F34C-5745-85A2-8FCCEB7B2EEA"><p> <b>a server running
+its own process:</b> This is referred to in this document as the <i>process
+server</i>. The example also implements a DLL that provides an API to allow
+clients to request services from the process server. This client DLL is referred
+to as the <i>process client</i>. </p> </li>
+<li id="GUID-FB3B8745-BF31-5D0F-81AD-E04F23DBA188"><p> <b>a server and client
+running in a single process:</b> These are referred to as the <i>thread server</i> and <i>thread
+client</i>. </p> </li>
+<li id="GUID-7582867D-1D14-5ECC-85B9-59F4A4E9E1EE"><p> <b>a shut down server:</b> This
+terminates the process or thread server if it has no clients connected to
+it for 50 seconds. </p> </li>
+</ul> </section>
+<section id="GUID-3A1715FE-3F34-44FB-826F-E441FD724D01"><title>Download</title><p><b>Process Client and Server</b></p><p>Click
+the following links to download the example:</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-76d97fc3-887f-495b-841a-3ae9de66dbf2.zip" scope="external"> ProcessClient.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4b308120-fd3c-484f-bc1c-36cd2b99cc4e.zip" scope="external"> ProcessServer.zip</xref></p><p>Click the following links
+for additional files: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-d98c1ba5-ea6d-4c8b-a1fc-a0c1a175d36c.zip" scope="external"> ProcessServerInc.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f8dabf02-68a2-40d9-8667-84dfa6dfd2ba.zip" scope="external"> Common.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-b5fa4b2f-acec-47e3-a0d7-f9187923e7b9.zip" scope="external"> Driver.zip</xref></p><p>Click the following links to view
+the example: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-76d97fc3-887f-495b-841a-3ae9de66dbf2.html" scope="peer"> browse ProcessClient </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4b308120-fd3c-484f-bc1c-36cd2b99cc4e.html" scope="peer"> browse ProcessServer </xref> </p><p>Click the following links
+to view additional files: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-d98c1ba5-ea6d-4c8b-a1fc-a0c1a175d36c.html" scope="peer"> browse ProcessServerInc </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f8dabf02-68a2-40d9-8667-84dfa6dfd2ba.html" scope="peer"> browse Common </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-b5fa4b2f-acec-47e3-a0d7-f9187923e7b9.html" scope="peer"> browse Driver </xref></p><p><b>Thread Client and Server</b></p><p>Click
+the following links to download the example:</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-fc40328d-eede-4c14-86f3-3691c3db13b7.zip" scope="external"> ThreadClient.zip </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-81f8a0e6-2a4c-48b2-afeb-b385b4cdbb56.zip" scope="external"> ThreadServer.zip </xref></p><p>Click the following links
+to download additional files:</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e61faf57-e35c-4951-ac16-d55954810ba1.zip" scope="external">ThreadServerInc.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-b5fa4b2f-acec-47e3-a0d7-f9187923e7b9.zip" scope="external"> Driver.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-98e2a1ec-8beb-4a7c-a731-309d28afe815.zip" scope="external"> CommonInc.zip</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f8dabf02-68a2-40d9-8667-84dfa6dfd2ba.zip" scope="external"> Common.zip</xref></p><p>Click the following links to view
+the example: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-fc40328d-eede-4c14-86f3-3691c3db13b7.html" scope="peer">browse ThreadClient</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-81f8a0e6-2a4c-48b2-afeb-b385b4cdbb56.html" scope="peer">browse ThreadServer</xref></p><p>Click the following links to
+view additional files</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e61faf57-e35c-4951-ac16-d55954810ba1.html" scope="peer"> browse ThreadServerInc </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-b5fa4b2f-acec-47e3-a0d7-f9187923e7b9.html" scope="peer"> browse Driver</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-98e2a1ec-8beb-4a7c-a731-309d28afe815.html" scope="peer"> browse CommonInc</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f8dabf02-68a2-40d9-8667-84dfa6dfd2ba.html" scope="peer"> browse Common</xref></p><p/> </section>
+<section id="GUID-FE0D7810-DBE0-51BC-B0CF-31A6EF605072"><title>Directories</title> <p><b>common</b> </p> <p>This
+directory contains code that is common to the process and thread servers.
+It implements the shut down server which checks the number of connected clients
+to the thread or process server. If this number is zero, then after a time
+delay, the thread/process server is terminated. The server is not terminated
+in the following cases: </p> <ul>
+<li id="GUID-F896C125-5ADA-5514-944C-DD24DA81CD41"><p>if the client tries
+to connect within the duration of the timer, then the shut down operation
+is cancelled and the server handles the client's request to connect. </p> </li>
+<li id="GUID-1A5D651C-50ED-5602-8274-7A73335904D2"><p>if the client tries
+to connect after the timer has expired but before the server shut down process
+has begun, then the process or thread server is stopped and restarted to handle
+the client's request to connect. </p> </li>
+</ul> <p><b>driver</b> </p> <p>Device drivers are DLLs that allow code to
+communicate with hardware. For more information about device drivers, see
+the <xref href="GUID-0437DB4C-FC4E-51DC-BB4C-95C0B26834F5.dita">Device Driver Guide</xref>. </p> <p id="GUID-A8A82766-6132-5C2B-A98F-52C016D21D68"><b>ProcessClient</b> </p> <p>This
+directory implements a client DLL that starts the process server and creates
+a session with it. The client DLL provides an API to allow clients to request
+the server to load and unload the device driver. </p> <p id="GUID-52EF8BCD-FAD7-5DB8-9D93-2C6D76F0822A"><b>ProcessServer</b> </p> <p>This
+directory implements the process server class <codeph>CProcessServer</codeph>,
+which is derived from <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2</apiname></xref>. It handles client requests
+to interact with the device drivers. It can have multiple clients connected
+at the same time. The device driver, server and client all have the <codeph>MultimediaDD</codeph> capability.
+Note that this is for demonstration purposes rather than because the code
+uses any Multimedia APIs. The session class <codeph>CProcessServerSession</codeph> implements
+a simple message queue to hold asynchronous requests. </p> <p id="GUID-49CB48EE-8614-5595-BD22-4C9E3BCC6495"><b>ThreadClient</b> </p> <p>This
+directory implements a client DLL that starts the thread server and creates
+a session within it. The client DLL provides an API to allow clients to request
+the server to load and unload the device driver. </p> <p id="GUID-7B61D8F8-E3D4-53E3-AC3D-AF0FD4E3E6A7"><b>ThreadServer</b> </p> <p>This
+directory implements the thread server class <codeph>CThreadServer</codeph>,
+which is derived from <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2</apiname></xref>. An instance of the thread
+server runs in the same process as the client. The thread server handles client
+requests to interact with the device drivers. It can have multiple clients
+connected at the same time. The session class <codeph>CThreadServerSession</codeph> implements
+a simple message queue to hold asynchronous requests. </p> <p><b>test</b> </p> <p>This
+example directory contains a comprehensive test suite to test the process
+client and server and the thread client and server. </p> </section>
+<section id="GUID-44822F1F-BC2C-4B6E-AA86-367A02310F08"><title>Class summary</title><p> <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2 </apiname></xref><xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2 </apiname></xref> <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase </apiname></xref>  <xref href="GUID-D7D422D3-65E5-378B-8F52-6485BC5603A0.dita"><apiname>RMessage2</apiname></xref> <xref href="GUID-78E0DEDD-C020-3174-AD0A-E4C18C4C9213.dita"><apiname>RMessagePtr2 </apiname></xref>  <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita"><apiname>RProcess </apiname></xref> <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread </apiname></xref>  <xref href="GUID-6FBFA078-8253-3E24-B1F8-5F75E86C3066.dita"><apiname>RBusLogicalChannel </apiname></xref> <xref href="GUID-7616AA05-83E6-3989-AB9D-11AE01245BEB.dita"><apiname>DLogicalDevice</apiname></xref> <xref href="GUID-A3CC1D95-4681-3349-A67C-F113A614041D.dita"><apiname>DLogicalChannel </apiname></xref><xref href="GUID-A5484A7F-94B9-34C7-9F88-82B1BF516930.dita"><apiname> DPhysicalDevice</apiname></xref> </p></section>
+<section id="GUID-E1571EF9-7E34-400C-A372-BB3D449E4081"><title>Build</title> <p>Build the development and test code using
+the <codeph>abld build</codeph> command from <filepath>AdvancedClientServerExample\group</filepath> as
+described in <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">the Symbian
+OS build process</xref>. </p> <p>The <codeph>AdvancedClientServerExample</codeph> builds
+the following binaries in the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for
+CodeWarrior): </p> <ul>
+<li id="GUID-A78174BF-DBF9-5ED6-944F-FD8216B94567"><p><b><filepath>driver1_ldd.ldd</filepath>.</b>  </p> </li>
+<li id="GUID-797DE4E5-10AE-5E9C-B040-94FAA639DAE3"><p> <b><filepath>driver1_pdd.pdd</filepath>.</b> </p> </li>
+<li id="GUID-FB3FC150-AF7F-5FA8-84ED-1A51886BBDF3"><p> <b><filepath>processclient.dll</filepath>,<filepath>threadclient.dll</filepath> and <filepath>threadserver.dll</filepath>. </b>,\</p> </li>
+<li id="GUID-1082E792-70D0-5656-AA39-696C42D09209"><p><b><filepath>processserver.exe</filepath>, <filepath>Te_ProcessClientServerTestSuite.exe</filepath> and <filepath>Te_ThreadClientServerTestSuite.exe</filepath>.</b> </p> </li>
+</ul> <p>After launching the <b><filepath>Te_ProcessClientServerTestSuite.exe</filepath></b> or <b><filepath>Te_ThreadClientServerTestSuite.exe</filepath></b> executable, depending on the emulator you are using, you may have to
+navigate away from the <b>application launcher/shell</b> screen to view the
+console. </p> </section>
+<section id="GUID-B233D2DE-D64F-422B-AB6E-E695B78450BA"><title>Running tests</title> <p>To run the tests, perform the following
+steps: </p><ul>
+<li><p>From the command prompt, change directory to <filepath>epoc32\release\winscw\udeb</filepath>.</p></li>
+<li><p>Run the following command:</p> <p><userinput>epoc</userinput> </p></li>
+<li><p>On the emulator, go to <codeph>eshell</codeph>. </p></li>
+<li><p>Run the following commands: </p><p><userinput>testexecute c:\testdata\scripts\te_processclientservertestsuite.script</userinput> </p><p><userinput>testexecute c:\testdata\scripts\te_threadclientservertestsuite.script</userinput> </p><p> <b>Note:</b> Test
+results are stored in the <filepath>epoc32\winscw\c\logs\testexecute</filepath> directory: </p></li>
+<li id="GUID-42BC1D4A-6605-5BCF-BD74-BB153DA2E9BE"><p> <b> Process server
+tests:</b> Refer to the <filepath>te_processclientservertestsuite.htm</filepath> file. </p> </li>
+<li id="GUID-AB747CEC-9E1F-5F1C-9682-A2A4F877396D"><p> <b>Thread server tests:</b> Refer
+to the <filepath>te_threadclientservertestsuite.htm</filepath> file. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-3786D8E6-17A9-52E4-A8DF-CFCDC3039854.dita"><linktext>Inter Process
+Communication</linktext></link>
+<link href="GUID-0437DB4C-FC4E-51DC-BB4C-95C0B26834F5.dita"><linktext> Device Driver
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2" xml:lang="en"><title>Messaging Text MTM example code</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e205879_href.png has changed
Binary file Symbian3/SDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e362837_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-5BCF45C6-B2F7-4078-AE6F-052128AC7FF7_d0e38954_href.png has changed
Binary file Symbian3/SDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e51823_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5BDE6462-E6CA-5738-A587-C7D875574789" xml:lang="en"><title>Static
+Data</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Symbian developers used to PC operating systems, such as Windows, may be
+used to using writeable static data (typically meaning global variables) in
+DLLs. On the Symbian platform, this is possible, but not recommended, because
+it is expensive in memory, and has limited support in the Symbian platform
+Emulator. </p>
+<p>This page describes writeable static data (WSD), the alternatives to using
+WSD, and the costs and issues associated with its use. </p>
+<section><title>Global writeable static data</title> <p>Global writeable static
+data (WSD) is any per-process variable which exists for the lifetime of the
+process. In practice, this means any globally scoped data: data that is declared
+outside of a function, struct, or class, and function scoped static variables. </p> <codeblock id="GUID-C7F90E06-286B-5E64-B94A-7683AA0DA0FB" xml:space="preserve">TBufC&lt;20&gt; fileName; //WSD 
+void SetFileName()
+ {
+ static Tint iCount; //WSD ...
+ }</codeblock> <p>Sometimes writeable static data appears in a non-obvious
+way. It is not always the case that <codeph>const</codeph> global variables
+are read-only data rather than global writeable static data. This is true
+for <codeph>const</codeph> objects with trivial constructors, such as integers.
+However if a <codeph>const</codeph> class has a non-trivial constructor, the <codeph>const</codeph> object
+will require a real variable and must be stored as WSD. For example: </p> <codeblock id="GUID-897D2E68-5AF6-5C69-A5AA-276A9FB89DEC" xml:space="preserve">const TInt myVariable=…; //OK – truly const
+const TPtrC KSomeConstPtr=...; //NOT OK – non trivial constructor 
+const TRgb KSomeConstCol=...; //NOT OK – non trivial constructor</codeblock> </section>
+<section><title>Support for global writeable static data on Symbian</title> <p>The
+Symbian platform supports global writeable static data in EXEs on all versions
+and handsets. </p> <p>Versions of Symbian OS based on the EKA2 kernel (8.1b
+and later) support WSD in DLLs on target hardware. Versions 8.1a and earlier,
+based on the EKA1 kernel, do not support global WSD in DLLs. </p> </section>
+<section><title>Clean up of global writeable static data</title> <p>Your program
+must make sure that global writeable static data that the program allocates
+is cleaned up. </p> <p>The clean up rules are as follows: </p> <ul>
+<li id="GUID-1D25BA8E-1A8E-5502-8FD9-7F74DBB39EF4"><p>Your program must clean
+up WSD objects that are defined in the process EXE or its statically-loaded
+DLLs. When a process exits, the Symbian platform does not automatically call
+the destructors of these WSD objects. </p> </li>
+<li id="GUID-7F1EB6D6-2EAD-5318-A066-DC9128A48EAF"><p>Your program does not
+need to clean up WSD objects defined in DLLs that the process has dynamically
+loaded using <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita"><apiname>RLibrary</apiname></xref>. The Symbian platform automatically
+calls destructors of these objects. </p> </li>
+</ul> </section>
+<section><title>Alternatives to using global writeable static data</title> <p>Native
+Symbian platform C++ code rarely uses WSD. </p> <p>However, code ported from
+other operating systems may contain large amounts of static data. For example,
+code written in the C programming language often makes use of WSD as the "glue"
+between C function calls. </p> <p>In EKA1, WSD is not supported, so there
+is no choice but to use the alternative mechanisms provided by the Symbian
+platform to port such code. Even in EKA2 where global data is supported, Symbian
+recommends that it only be used as a last resort. </p> <p>The following sections
+describe the alternatives that can be used to port code that makes use of
+global writeable static data. </p> <p><b>Use
+thread-local storage (TLS)</b> </p> <p>Thread Local Storage (TLS) is a single
+per-thread word that can be used to simulate global writeable static data. </p> <p>All
+the static data in the DLL is grouped into a single struct or class. On creation
+of the thread, an instance of the thread is allocated on the heap and a pointer
+to this data is saved to TLS (using <codeph>Dll::SetTls()</codeph>). On destruction
+of the thread, the data is destroyed. Throughout the DLL the code references
+the TLS data (using <codeph>Dll::Tls()</codeph>) rather than the original
+global writeable static data. </p> <p><b>Wrap
+in a server</b> </p> <p>The Symbian platform supports writeable global static
+data in EXEs. A common porting strategy is therefore to wrap the code in a
+Symbian server (which is an EXE), and expose its API as a client interface. </p> <p><b>Move global variables into your classes</b> </p> <p>With relatively small
+amounts of code, it may be possible to move most global data inside classes. </p> </section>
+<section><title>Enabling global writeable static data</title> <p>In order
+to enable global writeable static data, simply add a statement <codeph>epocallowdlldata</codeph> (case
+insensitive) to the project's MMP file: </p> <codeblock id="GUID-0E673C33-569E-5F7B-9E51-55C2FC233D70" xml:space="preserve">TARGET my.dll 
+TARGETTYPE dll 
+EPOCALLOWDLLDATA 
+… </codeblock> </section>
+<section><title>Costs and limitations</title> <p><b>Emulator
+only allows a DLL with WSD to load into a single process</b> </p> <p>The Symbian
+platform EKA2 Emulator only allows a DLL with WSD to be loaded into a single
+process. </p> <p>This is a very serious restriction. If you have a shared
+DLL with WSD, then the second process that attempts to load it in the emulator
+will fail with <codeph>KErrNotSupported</codeph>. </p> <p><b>Emulator allows WSD by default</b> </p> <p>The Emulator will allow WSD
+in DLLs even if <codeph>epocallowdlldata</codeph> is not declared in the mmp
+file. However the data will be truly global: there will be one copy for the
+entire emulator, rather than one copy for each emulated process. The only
+restriction is that if the data's initialisers call any Symbian platform kernel
+functions (i.e. executive calls), then the emulator will fault. </p> <p><b>RAM usage for WSD data chunk </b> </p> <p>When a process loads its first
+DLL containing WSD, it creates a single chunk to store the data. The data
+for subsequent WSD-enabled DLLs is loaded into the same chunk. </p> <p>The
+data chunk will occupy at least one 4K RAM page (the smallest possible RAM
+allocation), irrespective of how much static data is required. Any memory
+not used for WSD will be wasted. Since the memory is per-process, the memory
+wastage on the machine is: </p> <codeblock id="GUID-005105EF-A09A-5FF7-8056-7316AFCE1894" xml:space="preserve">(4Kb - WSD Bytes) × number-client-processes</codeblock> <p>It is very easy for a developer to add a few words of WSD to their DLL thinking
+that's all the memory that they are using. However, the cost is actually 4K
+for every process if a DLL with WSD has not already been loaded into the process.
+If for example the DLL is used by 4 processes, that's potentially an "invisible"
+cost of 16K. </p> <p><b>Chunks
+are a finite resource</b> </p> <p>EKA2 has a hard coded limit of 16 chunks
+per process; a limit that is required to ensure real-time behaviour. Every
+process loading WSD-enabled DLLs uses a chunk to hold the data, reducing the
+number of chunks available for other uses. </p> <p><b>ARM architecture 4 and 5 specific costs and limitations</b> </p> <p>There
+are other significant costs that apply only to DLLs that link against "fixed
+processes". Fixed processes are a feature of ARM v4 or v5 architecture only;
+the following behaviour does not apply to devices based on the ARMv6 architecture. </p> <p> <b>Case
+1: Non Execute-in-place DLLs</b>  </p> <p>For non-execute-in-place (non XIP)
+DLLs, an additional code chunk is required for every fixed process which links
+against the DLL. </p> <p>So imagine a 20Kb DLL (with a few bytes of WSD) that
+is loaded into 4 normal "non-fixed" processes, and 2 fixed processes. The
+(static) memory consumed is: </p> <ul>
+<li id="GUID-57F9041D-240C-5B75-BC0C-EFA66AB411B6"><p>Code chunk shared by
+all moving processes = 20 Kb </p> </li>
+<li id="GUID-1FCC1ED4-0A60-5983-AF5A-2F7C8622BC80"><p>Code chunk for each
+fixed process loading the DLL = 40 Kb </p> </li>
+<li id="GUID-6CD0DBDD-E406-5F7D-9207-8E55B4043779"><p>Data chunk for each
+process loading the DLL = 6×4Kb = 24 Kb </p> </li>
+</ul> <p>So to allow a few bytes of WSD there is a 64Kb increase in consumed
+memory. Note that the 20Kb code chunk shared by all processes is consumed
+whether or not WSD is enabled. </p> <p> <b>Case 2: Execute-in-place DLLs</b>  </p> <p>For
+XIP DLLs, there is no additional RAM cost other than the size of the WSD itself,
+rounded up to the next multiple of 4KB. However: </p> <ul>
+<li id="GUID-8B1EDEA4-8082-5DB1-87A8-E7B0FE5BB802"><p>An XIP DLL can be loaded
+by any non-fixed process, OR it may be loaded by a single fixed process (and
+therefore cannot be loaded by any other processes whatsoever) </p> </li>
+<li id="GUID-BA2D82B1-A036-5281-95EB-A46A7976605B"><p>The ROM build fails
+if a DLL with static data links to a fixed process <i>and</i> any other process. </p> </li>
+</ul> <p> <b>A few specific DLLs cannot have WSD</b>  </p> <p>DLLs that are
+required to initialise the file server cannot have WSD, e.g. HAL.DLL, EUSER.DLL,
+EFSRV.DLL. </p> </section>
+<section><title>Frequently asked questions</title> <p><b>How
+does Symbian's WSD implementation work ?</b> </p> <p> <b>Case 1. For moving
+processes:</b>  </p> <p>The Symbian platform supports a moving memory model,
+in which the data for a process is moved into a fixed virtual address space
+(the "run section") when the process is active, and then back into the processes
+"home" section when another process is active: </p> <ul>
+<li id="GUID-26E98921-9094-5260-BA99-2F7FA4F7D6A7"><p>The data of processes
+in the "home section" is uniquely addressed both in terms of physical RAM
+pages, and in the MMU virtual address space. The data is protected from other
+processes, except for the Kernel. </p> </li>
+<li id="GUID-BBE7C17A-6FF7-5329-91C5-DEAF88A61B69"><p>The data of processes
+in the run section occupies the same virtual address space as all other processes
+when they run (the MMU moves the physical RAM pages into the appropriate virtual
+address space). </p> </li>
+</ul> <p>When a DLL with WSD is loaded (or at ROM build time), its code is
+fixed to point to static data at specific addresses. In order to ensure that
+only a single copy of the DLL code is required, Symbian's moving-process WSD
+implementation ensures that the virtual addresses of static data is the same
+across every running process. </p> <p>The way this works is: </p> <ol id="GUID-66A040C2-7B0F-56E0-A634-501D3E133A12">
+<li id="GUID-964A78E1-D86E-50D0-8AA0-D3D9346A43E7"><p>A specific address space
+is reserved for a per-process static data chunk. This chunk is used to hold
+all the static data for all the DLLs loaded into the process. </p> </li>
+<li id="GUID-0A528F28-55B2-5B8B-A337-8B2377241CF0"><p>At ROM build time the
+kernel reserves specific addresses within the static data chunk for all the
+WSD in all the ROM loaded DLLs. The addresses for ROM based DLLs are reserved
+from the top of the static data chunk address space to the bottom. Note that
+static data addresses for RAM based DLLs are reserved when the DLL is first
+loaded into any process. In this case, addresses are reserved from the bottom
+of the static data chunk address space. </p> </li>
+<li id="GUID-1898478C-2E24-53B4-BDEB-765FEEDC539C"><p>When the first DLL with
+WSD is loaded into a process, a static data chunk is created to hold the static
+data for all DLLs that are loaded into the process. </p> </li>
+<li id="GUID-7A88C9EB-31F9-559E-8DBD-221848CA2A46"><p>Any global static data
+in the DLL is written to its specific reserved addresses. Note that addresses
+are reserved for that particular static data across all processes; if the
+DLL is loaded into another process, any static data will get the same virtual
+address. </p> </li>
+</ol> <p> <b>Case 2. For fixed processes:</b>  </p> <p>A fixed process is
+one in which the process data does not move; code is run on process data stored
+in the process "home section". </p> <p>Since the static data for every fixed
+process is uniquely addressed, and a DLL can only point to a single address
+for its data, the implication is that a separate copy of the DLL code is required
+for every fixed process that loads the DLL. </p> <p>The restrictions listed
+above for ARM architecture 4 and 5 directly result. </p> <ul>
+<li id="GUID-125EDB37-4540-5EDB-9C19-6F92A307627F"><p>For XIP based devices
+the DLL code chunk address is fixed at ROM build time, and there can only
+be one copy of the DLL code. Therefore the DLL code can address the data in
+either a single fixed process or the virtual address used by all moveable
+addresses. </p> </li>
+<li id="GUID-BC66EA5A-252D-5E37-80F6-BEC82C03DABA"><p>For non-XIP based devices
+the DLL is run from RAM, and the loader is able to fix-up the address that
+a DLL expects its data at load time (rather than ROM build time). Therefore
+in this case the loader creates a separate copy of DLL code for each fixed
+process that loads the DLL and a single copy shared by all moving processes. </p> </li>
+</ul> <p>Notes: Fixed processes are not supported or required on ARM v6 architectures.
+This discussion only applies to devices based on ARMv4 or v5. On ARM architecture
+6 each DLL with WSD has a reserved address, similar to the ARMv5 moving process
+case. However there is no 'home section' and memory is not relocated between
+low and high addresses on a context switch. Instead, each process uses its
+own set of page tables for the bottom half of virtual address space. </p> <p><b>Why does the EKA2 Emulator only allow a DLL with WSD to load into a single
+process?</b> </p> <p>The Symbian platform permits a DLL with global data to
+be loaded into only one Symbian platform process on the emulator. This limitation
+is a result of the way the Emulator is implemented on top of the Windows process
+model. </p> <p>On EKA2, separate Symbian platform processes are emulated within
+a single Windows process. To preserve Symbian platform semantics there should
+be one copy of the global data for each emulated process. However, this is
+not possible since a DLL on the emulator is just a Windows DLL; Windows gives
+it a single copy of any global data it needs when it is loaded. </p> <p><b>What happens if epocallowdlldata isn't declared for a DLL with WSD?</b> </p> <p> <b>Case
+1: On the EKA2 Emulator:</b>  </p> <p>Most constant data should be treated
+by the compiler as read-only rather than writeable static data (the exception
+is when the const data has a non-trivial constructor, so a real variable is
+required during initialisation). </p> <p>Unfortunately, different compilers
+sometimes treat const data as WSD. For example, CodeWarrior puts it in writeable
+data and initialises it at run time. MSVC generally puts it into read-only
+data, but occasionally puts it into writeable data. </p> <p>As most DLLs have
+const data, this means that the compilers have "accidentally" created WSD
+in almost every DLL. Symbian cannot therefore rigorously enforce the "single
+process can load a DLL with WSD" rule, as the Emulator would not work. </p> <p>On
+the EKA2 Emulator, the workaround Symbian have implemented is to recognise
+two types of DLL global data: </p> <ul>
+<li id="GUID-6AD2E89F-6361-5F1F-8EC1-A203801BCC8F"><p>'Deliberate' global
+data is where the programmer specifies that they want DLL global data (using
+the <codeph>epocallowdlldata</codeph> keyword in the MMP file. In this case
+any global data in the DLL is assumed to be deliberate, and the "DLL loaded
+into one-emulated-process" rule applies. </p> </li>
+<li id="GUID-225E44BE-434E-5C2A-8503-318E31B17EF0"><p>'Accidental' global
+data is the data introduced by the compiler with no encouragement from the
+programmer. If <codeph>epocallowdlldata</codeph> is absent, global data is
+assumed to be accidental and the rule does not apply. Note that the global
+data includes both const and non-const static data; there is no way to tell
+the compilers to only apply it to non-const data - if we could do that then
+we could force correct handling of const static data. </p> </li>
+</ul> <p>In order to prevent abuse of this workaround, there are restrictions
+on what can be done with accidental global data; specifically, the Emulator
+will fault if any of the global data's initialisers attempt to call the Symbian
+platform kernel functions (i.e. executive calls). </p> <p>Note that there
+is only one copy of the global data. Therefore it is possible for two processes
+to write to the same 'accidental' global data (causing undefined behaviour).
+The "DLL loaded into one-emulated-process" rule prevents this being a problem
+for deliberate global data. </p> <p> <b>Case 2: On the EKA1 Emulator</b>  </p> <p>The
+EKA1 emulator has no concept of separate Symbian platform processes. Global
+data is allowed on the Emulator as there is only one copy of any global data. </p> <p>Symbian
+developers often have problems when porting to real hardware, which does not
+support this type of data. This is discussed in the following section. </p> <p> <b>Case
+3: On native target builds</b>  </p> <p>On either EKA1 or EKA2, target compilers
+will fail the build with an error indicating that the code has initialised
+or un-initialised data. </p> <p>The error message does not specify the symbol(s)
+that are causing the problem. The <filepath>.map</filepath> files output by
+the linker can however be helpful in finding the problem symbol. The RVCT
+map files provide a list of global symbols and the object files in which they
+occur. FAQ-0329 on the <xref href="http://developer.symbian.org/wiki/index.php/Symbian_C++_Knowledgebase_Q&amp;As#How_can_I_find_the_.22uninitialised_data.22_in_my_DLL.3F" scope="external">DevNet knowledgebase</xref> works through an example of using
+a map file using the GCC compiler used on older Symbian platform releases. </p> <p><b>Can Kernel DLLs have WSD ?</b> </p> <p>Yes, WSD is supported for kernel
+DLLs in both EKA1 and EKA2 (through alternative mechanisms to those described
+here). </p> <p>Of course, kernel DLLs are guaranteed to be loaded into only
+one process, so the per-process multiplication of RAM usage does not apply.
+EKA2 will work correctly with global data in any kernel DLL. However EKA1
+does not call constructors for global C++ objects in kernel extensions or
+device drivers, and does not call destructors for global C++ objects in device
+drivers at driver unload time. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5BE31242-78A2-584B-BF00-B7805C219E40.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5BE31242-78A2-584B-BF00-B7805C219E40" xml:lang="en"><title>Character Encoding and Conversion Framework Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71" xml:lang="en"><title>condvar:
+Using Condition Variables</title><shortdesc>Examples that explains how to use condition variables. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p/>
+<ul>
+<li id="GUID-7CD8220E-2844-5FCB-A9B4-9B188F95C6EE"><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita#GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71/GUID-8209AA7E-0DFB-512D-9BEB-9063BA617BC5">condvarglobal</xref>  </p> </li>
+<li id="GUID-74DAFE22-039F-5647-B56E-6BB83B876DED"><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita#GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71/GUID-8CF8C4E2-4D74-54C8-9601-97CC44B9C943">condvarlocal</xref>  </p> </li>
+</ul>
+<section id="GUID-8209AA7E-0DFB-512D-9BEB-9063BA617BC5"><title>condvarglobal</title> <p>This
+example shows the use of the global condition variable IPC mechanism. The
+scope of a global condition variable is inter-process. It can be shared by
+threads of any process in the system. </p> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-ddcb07c8-2646-4414-b33f-086f5758cbfe.zip" scope="external">condvarglobal .zip</xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-ddcb07c8-2646-4414-b33f-086f5758cbfe.html" scope="peer"> browse </xref> to view the example code</p><p><b>Class summary</b></p><p> <xref href="GUID-D16EF740-78E6-3D08-AE2F-AFA5E812FF2B.dita"><apiname>RCondVar </apiname></xref> <xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex </apiname></xref> <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk </apiname></xref> <xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic</apiname></xref> </p> <p><b>Description</b> </p> <p>This
+example uses an adder and subtractor pattern to show the use of a global condition
+variable. Two processes, the adder and the subtractor, modify a shared variable
+by adding and subtracting random amounts. The condition variable ensures that
+the value remains within given limits, <codeph>KMaxValue</codeph> and <codeph>KMinValue</codeph>,
+by blocking one of the processes if the value crosses a warning threshold. </p> <p>The
+adder program creates a global shared memory chunk. It also creates a global
+mutex to control access to the chunk and a global condition variable to signal
+that the value in the chunk is '<codeph>ready for use</codeph>'. It then initialises
+the value in the chunk to zero and periodically tries to add a random value
+between 1 and 10 . If, having added a value, it finds that the value of the
+chunk is greater than <codeph>KUpperThreshold</codeph>, it waits for a signal
+from the condition variable before adding another value. </p> <p>The subtractor
+program periodically tries to subtract a random value between 1 and 10 from
+the global shared memory chunk. If, having subtracted a value, it finds that
+the value of the chunk is less than <codeph>KLowerThreshold</codeph>, it waits
+for a signal from the condition variable before subtracting another value. </p> <p><b>Design
+and implementation</b> </p> <fig id="GUID-1FAFB189-D2E4-5A05-8D8B-B3F7D28467FC">
+<image href="GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e225353_href.jpg" placement="inline"/>
+</fig> <p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this example. The ConditionVariable
+example builds the following binary files in the standard location (<filepath>\epoc32\release\winscw\
+             &lt;build_variant&gt;</filepath>) for Carbide.c++. </p> <ul>
+<li id="GUID-A699F4AF-3A5F-5C24-83CB-1762348AA1D2"><p> <b>adder.exe:</b> Demonstrates
+the use of the global condition variable. It creates a global shared memory
+chunk and periodically adds random values to the chunk. </p> </li>
+<li id="GUID-30A5BE77-8F99-5206-AD42-51E843D0D3C2"><p> <b>subtractor.exe:</b> Demonstrates
+the use of the global condition variable. It periodically subtracts random
+values from the chunk created by <filepath>adder.exe</filepath>. </p> </li>
+</ul> <p><b>How to run the Example</b> </p> <p>To run the example, perform
+the following steps: </p> <ol id="GUID-312A1E16-C92B-5C33-9D80-83080412E657">
+<li id="GUID-E8E12006-8AAC-503D-B59A-F171092293F4"><p>Run <filepath>adder.exe</filepath>. </p> </li>
+<li id="GUID-C9F80A69-218F-5467-9DDE-FC5849753E95"><p>Run eshell. </p> </li>
+<li id="GUID-457E6D8F-A383-5CF6-BA6E-D98C8FAC20F4"><p>Run <filepath>subtract.exe</filepath> in
+your new eshell. </p> </li>
+<li id="GUID-122618AE-028B-5BF9-BB4B-4F95099EE839"><p>Switch between eshells
+by pressing <b>CTRL+ALT+SHIFT+T</b>. </p> </li>
+<li id="GUID-24CCA548-D350-53A7-9919-270EA0C71EC1"><p>To finish, stop each
+application by pressing any key. </p> </li>
+</ol> </section>
+<section id="GUID-8CF8C4E2-4D74-54C8-9601-97CC44B9C943"><title>condvarlocal</title> <p>This
+example shows the use of the local condition variable IPC mechanism. The scope
+of a local condition variable is intra-process. It can be shared by threads
+of the process that creates the condition variable. </p> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-527239ad-3eff-4d62-a7fe-b7e43658dd2f.zip" scope="external">condvarlocal .zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-527239ad-3eff-4d62-a7fe-b7e43658dd2f.html" scope="peer"> browse </xref> to view the example.</p> <p><b>Class summary</b></p><p> <xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex </apiname></xref><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread </apiname></xref>  <xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic </apiname></xref> <xref href="GUID-D16EF740-78E6-3D08-AE2F-AFA5E812FF2B.dita"><apiname>RCondVar</apiname></xref></p> <p><b>Description</b> </p> <p>This
+example uses the producer and the consumer model to show the use of the local
+condition variable. </p> <p>The example creates two local threads: a producer
+and a consumer. The two threads share a buffer, which is an object of the <codeph>CQueue</codeph> class.
+The CQueue object creates a local condition variable using the <codeph>RCondVar::CreateLocal()</codeph> function.
+It also defines the methods to insert and remove a token from the queue. The <codeph>CQueue::Insert()</codeph> function
+inserts a token into the queue and signals the condition variable. The <codeph>CQueue::Remove()</codeph> function
+tries to remove a token from the queue. If the queue is empty, it must wait
+for a signal from the condition variable. </p> <p>An object of the <codeph>CProducer</codeph> class
+creates and calls the producer thread. The producer thread is called once
+every two seconds using an object of the <xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic</apiname></xref> class.
+This thread inserts a token into the queue when it is called. It calls the <codeph>CQueue::Insert()</codeph> function
+on the shared <codeph>CQueue</codeph> object. </p> <p>An object of the <codeph>CConsumer</codeph> class
+creates and calls the consumer thread. The consumer thread is called once
+a second using an object of the <xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic</apiname></xref> class. This thread
+removes a token from the queue when it is called. It calls the <codeph>CQueue::Remove()</codeph> function
+on the shared <codeph>CQueue</codeph> object. </p> <p>For more information,
+refer to <xref href="http://support.entegrity.com/private/doclib/docs/osfhtm/develop/appdev/Appde179.htm" scope="external">Condition Variables</xref>. </p> <p> <note> Symbian is not
+responsible for the content of external websites.</note>  </p> <p><b>Design
+and implementation</b> </p> <fig id="GUID-CA344322-0982-59C3-B93A-7A1F175728F3">
+<image href="GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e225553_href.jpg" placement="inline"/>
+</fig> <p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this example. The ConditionVariable
+example builds the following binary files in the standard location (<filepath>\epoc32\release\winscw\
+             &lt;build_variant&gt;</filepath>) for Carbide.c++. </p> <p> <filepath>condvarlocal.exe</filepath>:
+Demonstrates the use of the local condition variable. </p> <p><b>How to run
+the Example</b> </p> <p>To run the example, perform the following steps: </p> <ol id="GUID-D07D5782-6A32-5552-B42B-7D2672F1C94F">
+<li id="GUID-CD0F5EAF-780F-5BC7-A216-2FE9CA3B284D"><p>Run <filepath>condvarlocal.exe</filepath>.
+The program calls the producer and the consumer threads periodically as shown
+in the description section. It also displays a menu. </p> </li>
+<li id="GUID-106E7D1D-4ECB-5FA2-A42C-CB1549F4811F"><p>Press <b>‘d’</b> to
+display the contents of the queue. </p> </li>
+<li id="GUID-AA9ABD22-E280-5F21-A1A1-F47FFAAC58F2"><p>Press <b>‘p’</b> to
+insert a token into the queue. </p> </li>
+<li id="GUID-96C5D556-0700-5632-80A1-E728C97A62C1"><p>Press any key to stop
+the program. </p> </li>
+</ol> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e50688_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4"><title>How the Target Client is Resolved using CSIPResolvedClient</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>SIP Client Resolver determines the target clients by comparing the Request-URI of the incoming SIP request to the information provided in the ECOM plug-in resource file. This resource file is an XML file. All client applications using Client Resolver must be implemented as ECOM plug-ins and must have capabilities. </p> <p>An application must declare capabilities, that are the supported content types and media formats that use the SIP headers and SDP m-lines. The capabilities must be declared in the code of the plug-in, in the XML file, or in the opaque_data field of the resource file. </p> <p>The following is the DTD for the ECOM plug-in’s resource file: </p> <codeblock id="GUID-68B0C530-A5DA-5230-870E-49649C242F08" xml:space="preserve">&lt;!-- SIP_CLIENT --&gt;
+&lt;!ELEMENT SIP_CLIENT (SIP_HEADERS, SDP_LINES?)&gt;
+
+&lt;!-- ALLOW_STARTING determines if a client can be started by the SIP stack. --&gt;
+&lt;!ATTLIST SIP_CLIENT ALLOW_STARTING (YES|NO) #REQUIRED&gt;
+
+&lt;!-- SIP_HEADERS --&gt;
+&lt;!ELEMENT SIP_HEADERS (ACCEPT+, ALLOW_EVENTS*, ACCEPT_CONTACT*)&gt;
+
+&lt;!-- ACCEPT: Accept-header as specified in RFC 3261.
+  Indicates Content-Types supported by the client.
+  Note that support for application/sdp must be announced as well,
+  especially when the application aims to indicate capabilities based 
+  on SDP. Otherwise the SDP-based rules will not be taken into account.
+  An empty value means that the application is willing
+  to receive SIP requests without content. 
+--&gt;
+&lt;!ELEMENT ACCEPT EMPTY&gt;
+&lt;!ATTLIST ACCEPT value CDATA #REQUIRED&gt;
+
+&lt;!-- ALLOW_EVENTS: Allow-Events-header as specified in RFC 3265
+  Indicates events supported by the client.
+  Compared to the event-package part of a Event-header
+  in an incoming SIP request if present. 
+--&gt;
+&lt;!ELEMENT ALLOW_EVENTS EMPTY&gt;
+&lt;!ATTLIST ALLOW_EVENTS value CDATA #REQUIRED&gt;
+
+&lt;!-- ACCEPT_CONTACT: Accept-Contact-header as specified in RFC 3841
+  Indicates caller preferences supported by the client.
+  All the parameters must match to a Accept-Contact header 
+  in an incoming SIP request if present.
+--&gt;
+&lt;!ELEMENT ACCEPT_CONTACT EMPTY&gt;
+&lt;!ATTLIST ACCEPT_CONTACT value CDATA #REQUIRED&gt;
+
+&lt;!-- SDP_LINES --&gt;
+&lt;!ELEMENT SDP_LINES (LINE+)&gt;
+
+&lt;!-- SDP Lines 
+  Can be used to indicate supported media by the client.
+  If defined the application must announce the capability of 
+  receiving content of type application/sdp.
+  Only M-line is supported currently as follows:
+    - supported values of media field
+    - port is rendered useless, 
+          but is mandatory in M-Line's BNF (should be set to zero)
+    - supported values of proto field
+    - name of the application in fmt field if the
+      value of media field is 'application'
+  BNF for the value of the M-Line:
+        media space port ["/" integer] space proto 1*(space fmt)
+        media = 1*(alpha-numeric)
+        port = 1*(DIGIT)
+        proto = 1*(alpha-numeric)
+        fmt = 1*(alpha-numeric)
+    alpha-numeric = ALPHA | DIGIT
+        ALPHA = "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"I"|"j"|"k"|
+                "l"|"m"|"n"|"o "|"p"|"q"|"r"|"s"|"t"|"u"|"v"|
+                "w"|"x"|"y"|"z"|"A"|"B"|"C "|"D"|"E"|"F"|"G"|
+                "H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|" Q"|"R"|
+                "S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"
+    DIGIT = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
+--&gt;
+&lt;!ELEMENT LINE EMPTY&gt;
+&lt;!ATTLIST LINE name CDATA #REQUIRED&gt;
+&lt;!ATTLIST LINE value CDATA #REQUIRED&gt;
+</codeblock> <p>The resource (<filepath>.rss</filepath>) file contains the XML file and the following information: </p> <ul><li id="GUID-ECADCF4D-C7B1-5F8F-861C-247682A61B41"><p> <codeph> dll_uid</codeph> and <codeph>implementation_uid</codeph>: These UIDs are supplied on request to <xref scope="external" href="http://www.symbiansigned.com">Symbian Signed</xref>. </p> <p> <b>Note</b>: These UIDs can be the same. </p> </li> <li id="GUID-CF722A1F-0FCE-5E12-9DD2-876C1DB776FD"><p> <codeph> interface_uid</codeph>: This must have the value <codeph>0x102010DD</codeph>. </p> </li> <li id="GUID-A9CF8349-9202-508A-83EA-48B0BDBDB147"><p> <codeph>default_data</codeph>: The application UID (without 0x). </p> </li> <li id="GUID-EB1AFAED-F5B6-591D-9412-9E240587ABB5"><p> <codeph> opaque_data</codeph>: The application capabilities in XML format. This field is empty if application capabilities are defined in the implementation. </p> </li> </ul> <section><title>Resolving the target client using CSIPResolvedClient</title> <p>The following illustration shows how the SIP Client Resolver subsystem resolves the target client implementation and requests the resolved client to connect to the SIP implementation. In this plan, the default resolution logic is applied. </p> <fig id="GUID-AF6C1C45-A5A0-56FF-BBFC-3635BF4F9AD1"><title>
+             Call flow of resolving a target client implementation using
+             CSIPResolvedClient 
+          </title> <image href="GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e318126_href.png" placement="inline"/></fig> <p>The following list describes how the target client is resolved using <xref href="GUID-F0E4FA44-A41C-3C6F-993E-39CED042A879.dita"><apiname>CSIPResolvedClient</apiname></xref>. </p> <ol id="GUID-3D917824-7288-5893-8FFB-C4C81D30BF79"><li id="GUID-D801505D-4B4F-503B-95F7-F0C412413F70"><p>The user receives a SIP request and the target client is defined using <xref href="GUID-F0E4FA44-A41C-3C6F-993E-39CED042A879.dita"><apiname>CSIPResolvedClient</apiname></xref>. </p> </li> <li id="GUID-6AE1B8B5-83AF-5346-9F6C-68DE86B08800"><p>The user requests the SIP Client Resolver API implementation for a channel UI to connect to the user. </p> </li> <li id="GUID-CBF6BEDC-6062-5E21-80C4-920303B6C3FC"><p>The user requests the target client to connect to SIP with the resolved UID if there is no connection with the resolved channel UID. </p> </li> <li id="GUID-6EEEBE30-C31B-5E7C-9F91-FEAC3D14A340"><p>The SIP Client Resolver API implementation starts the target client. </p> </li> </ol> </section> <section><title>See also</title> <p> <xref href="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita">Example of a SIP client resolver plug-in</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C4922C8-3AE3-424A-A2E7-5C6DA323FFA6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5C4922C8-3AE3-424A-A2E7-5C6DA323FFA6" xml:lang="en"><title>Alarm
+Server Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Alarm Server is a system server, which starts during device start-up. It
+is responsible for maintaining a queue of all system-wide alarms. </p>
+<p>It allows clients to query the status of alarms, set alarms, remove alarms
+and perform other utility functions. The Alarm client API allows other components
+to interact with the Alarm Server. The Alarm Server sends notification of
+alarm expiry to the Alert Server, which then notifies the Alarm UI to display
+dialogs and play sound. </p>
+<p>The typical clients of Alarm Server include Clock and Calendar applications. </p>
+<section><title>Purpose</title> <p>The Alarm Server manages the alarms in
+the system and provides the following functionality: </p> <ul>
+<li id="GUID-56175798-4930-55A3-ACD8-848192C07A63"><p>adding, updating and
+deleting alarms. </p> </li>
+<li id="GUID-FCF13562-7E88-5A5B-84B9-05B7934E7277"><p>getting and setting
+client-specific data associated with the alarm. </p> </li>
+<li id="GUID-44A49D6B-A12E-5C05-A7D7-9BDE3E430521"><p>performing alarm category-based
+operations such as retrieval and deletion. Retrieving alarm information includes
+alarm count, unique identifiers based on alarm states. </p> </li>
+<li id="GUID-57B8169F-1166-5534-9236-D1C367AB2413"><p>getting and setting
+Alarm Server’s global sound state and play intervals. </p> </li>
+<li id="GUID-7BB3AD26-5650-5B6A-B656-76A24EF9086A"><p>notifying the client
+when alarm settings change and when the alarm expires. </p> </li>
+</ul> </section>
+<section><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>Duration</dt>
+<dd><p>It is the time period, in seconds, for which the alarm sound is played. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Offset</dt>
+<dd><p>It is the time (in minutes) duration of alarm sound played after the
+alarm expiry. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Alarm play interval</dt>
+<dd><p>Alarm play interval consists of duration and an offset. At each offset,
+the Alarm Server makes a request to the Alarm Alert Server to display the
+alarm dialog and play the alarm sound. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Universal Time Coordinated (UTC)</dt>
+<dd><p>It is the international time standard. It is the current term for what
+was commonly referred as Greenwich Meridian Time (GMT) . Zero hours UTC is
+midnight in Greenwich England, which lies on the zero longitudinal meridian.
+Universal time is based on a 24-hour clock. Therefore, afternoon hours such
+as 4 PM are expressed as 16:00 UTC. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Daylight Saving Time (DST)</dt>
+<dd><p>Daylight Saving Time or Summer Time, is a way of utilizing more daylight
+by advancing the local time by one hour during the summer. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Session alarms</dt>
+<dd><p>The alarms that are removed from the alarm queue when their session
+owners disconnect are referred as Session Alarms. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Non-Session alarms</dt>
+<dd><p>The alarms that continue to persist in the alarm queue, even after
+their session owners which added these alarms disconnect, are referred as
+Non-Session alarms. These alarms are also referred to as Orphaned Session
+alarms. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Wake-Up alarms</dt>
+<dd><p>An alarm that wakes-up the device if the device is switched OFF when
+the alarm occurs, is referred to as Wake-Up alarm. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>Alarm Server is implemented using
+the Symbian platform IPC client-server architecture. It has an interface to
+the Alarm Alert server, which is delivered as part of the Application Framework
+(UIKON component). Alarm Alert Server is responsible for displaying the alarm
+dialog when an alarm expires. The Alarm Server implements the Alarm Alert
+server’s client side DLL to send and receive notifications to and from the
+Alarm UI. Alarm Alert Server is a part of the UIKON server (<codeph>Eiksrv.exe</codeph>).
+The Alarm Server itself implements the client-side APIs since it is the only
+client for the Alarm Alert server. The following diagram illustrates the Alarm
+Server architecture: </p> <fig id="GUID-D6309F3E-4835-5703-8929-8A108CC5D376">
+<title>              Alarm Server Architecture            </title>
+<image href="GUID-575CDD9C-ED6E-510E-AE11-46CA7EB7B74C_d0e117702_href.png" placement="inline"/>
+</fig> <p><b>Alarm Client and Alarm Shared</b> </p> <p>They are the static
+interface DLLs. Alarm client is the client side of the Alarm Server, which
+allows other components to interact with the Alarm Server. </p> <p>The Alarm
+Shared facilitates a common format shared across server and its clients for
+providing definition for an alarm. It consists of shared objects such as alarm
+class, IPC messages, repeat definitions, alarm states. </p> <p><b>Alarm Server</b> </p> <p>Alarm
+Server manages all alarms on the device and enables client UI applications
+to use the services provided by the Alarm Server. It relies on the Alarm UI
+to notify, which includes displaying and playing sounds. </p> <p>It uses a
+resource file to configure the sound intervals required for the alarm to repeat.
+The compiled resource file resides in the private directory of the Alarm Server.
+The resource file is used only for initial configuration. </p> <p>Alarm Server
+configurations are stored in <codeph>AlarmServer.ini</codeph> file and <codeph>Backup_Registration.xml</codeph> file
+performs a passive backup of this <codeph>.ini</codeph> file to the PC-side
+at runtime. For secure backup of this <codeph>.ini</codeph> file, <codeph>backuprestorenotification.lib</codeph> is
+used. For more information on the resource file and backup, refer to the <xref href="GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita">Alarm Sound Play Control</xref>. </p> <p>It
+listens to the following events: </p> <ul>
+<li id="GUID-F759197E-A22E-5C4F-89B7-247BF64134E1"><p>System state changes
+- Using <xref href="GUID-788BD091-186A-5E25-B058-952C7629A8D4.dita">System State
+Manager</xref> (SSM), Alarm Server listens to the system state changes (normal
+and shutdown states) to synchronize the backup of the alarm server queue to
+the <codeph>AlarmServer.ini</codeph> backup file. </p> </li>
+<li id="GUID-42C04AB7-8BCC-57D6-A716-4F6B12F5AC30"><p>Environment change -
+Using <xref href="GUID-7C6D3479-2159-5A9B-9970-0B3E625442A6.dita">Environment Change
+Notifier</xref> (<codeph>bafl.dll</codeph>), Alarm Server listens to the changes
+in the environment, such as system time/date change, workdays change or UTC
+offset change. </p> </li>
+</ul> <p><b>UIKON Server</b> </p> <p>UIKON server is responsible for starting
+the Alarm Server at the device boot-up. </p> <p>It is also responsible for
+playing sounds, flashing lights and displaying the message. Through the UIKON
+server, alarms can be cleared, snoozed or silenced. Alarm server implements
+and uses the client side interface. Alarm UI implements the server side of
+the UIKON server. </p> </section>
+<section><title>APIs</title> <p>The Alarm Server provides the following client
+API: </p> <table id="GUID-60D7DF2B-BA9C-5CEC-9048-6B8536D04CFE">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita"><apiname>RASCliSession</apiname></xref>  </p> </entry>
+<entry><p>Client interface to Alarm session on Symbian Platform. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The following are the typical use
+cases of Alarm Server: </p> <ul>
+<li id="GUID-854E8EA9-3194-5D0E-8BB5-3006B04BB6D3"><p>Using Alarm Server to
+add, update and delete alarms, set alarm status and so on. </p> </li>
+<li id="GUID-9A999DC2-6D48-58B8-B251-F22A88A1978C"><p>Playing an alarm continuously. </p> </li>
+<li id="GUID-2D7D1AF6-2728-59CF-BD92-32D97FD6C6B6"><p>Activating an alarm
+on specified days. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e316648_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446"><title>Digital signatures</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A digital signature is used to verify that a message (or data) actually came from the sender (the one who signed the message) and that it has not been tampered with.</p> <p> A signature is formed by producing a fixed-length digest (hash) of the message using a hash algorithm, which is then encrypted using the sender's private key. This signature and the message are then sent to the recipient.</p> <p>The receiver can then verify the signature as follows: a hash is produced of the sender's message (using the hashing algorithm sent with the signature); also, using the sender's public key, their signature is decrypted into a hash. These two hashes are compared: if they are the same, it is more or less certain that the public key used for the decryption corresponds to the private key used to create the signature, thus data integrity is validated.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e242014_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE"><title>Debugging the Host Controller</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The HCI extension-conduit enables the writing of vendor specific commands to the Bluetooth host controller hardware via the stack. Specific debugging events or command completions are received back through a "secure channel". Event notifications are only available to the one client that issued the command in the first place, and there is only one such client on a device at any one time. </p> <p><b>Intended Audience </b> </p> <p>This document is intended to be read by Symbian OS licensees. </p> <section><title>How to send vendor-specific debug commands to the host controller</title> <p>A wrapper class <xref href="GUID-EEC833C9-8711-30FA-95B5-1FB8D7A02A0B.dita"><apiname>CHciExtensionConduit</apiname></xref> is provided to drive a command/event loop on behalf of the client program. The wrapper class provides callbacks into the client-implemented <xref href="GUID-2591274E-4F6F-315C-B170-82D980E82750.dita"><apiname>MVendorSpecificHciConduit</apiname></xref> interface upon reception of a debug or command completion event. On construction, the <codeph>CHciExtensionConduit</codeph> registers itself with the Bluetooth stack, which ensures that there can be only one HCI Extension Conduit in existence on a machine at one time. This means that the first such conduit constructed after bootup has sole access to issue vendor specific commands and more importantly receive back vendor specific events. </p> <p><b>Basic Procedure</b> </p> <p>To send vendor specific debug commands to the host controller: </p> <ol id="GUID-7C2C1742-54F1-533C-B511-4DB2486E6791"><li id="GUID-2AB6F7B7-69BC-5DA2-A365-BC2E32B8DFE1"><p>create an array for your vendor specific commands and a descriptor to hold this data </p> </li> <li id="GUID-5567327D-A4EF-51AE-8123-3E358AF16CC7"><p>call <xref href="GUID-EEC833C9-8711-30FA-95B5-1FB8D7A02A0B.dita#GUID-EEC833C9-8711-30FA-95B5-1FB8D7A02A0B/GUID-1989D0A7-ADC4-33F2-B1B1-6F1DDB685DE1"><apiname>CHciExtensionConduit::IssueCommandL()</apiname></xref> to issue the vendor specific command to the hardware, passing it the descriptor containing the raw binary data for the command. The raw binary data should not include the HCI transport header and footer bytes, as the stack will add these automatically to the provided hex command. </p> </li> <li id="GUID-2B1DD0BD-547B-5C66-BD73-2EA5406195CA"><p>define and implement <xref href="GUID-2591274E-4F6F-315C-B170-82D980E82750.dita#GUID-2591274E-4F6F-315C-B170-82D980E82750/GUID-08860F56-E933-3746-962F-92FA858EAB56"><apiname>MVendorSpecificHciConduit::CommandCompleted()</apiname></xref>: this function is called when a vendor specific command issued through the conduit receives a completion from the hardware. </p> </li> <li id="GUID-0C35ABB8-E040-5DB9-85D4-62A8F7B71A2D"><p>If the command generates debug events, call <xref href="GUID-EEC833C9-8711-30FA-95B5-1FB8D7A02A0B.dita#GUID-EEC833C9-8711-30FA-95B5-1FB8D7A02A0B/GUID-AB5A6279-CA79-3318-A3A1-111118985C57"><apiname>CHciExtensionConduit::WaitForEvent()</apiname></xref> to instruct the conduit that vendor debug events are expected back from the hardware. Implement <xref href="GUID-2591274E-4F6F-315C-B170-82D980E82750.dita#GUID-2591274E-4F6F-315C-B170-82D980E82750/GUID-C4154C63-3F48-3FF2-8702-923327370170"><apiname>MVendorSpecificHciConduit::ReceiveEvent()</apiname></xref> to get your specific debug event data generated from the hardware. </p> </li> </ol> <p><b> Example </b> </p> <codeblock id="GUID-1E719427-E3AB-5ED8-9EEC-C8C0D8EFE725" xml:space="preserve">class CDebugEventConsole : public CBase, private MVendorSpecificHciConduit
+    {
+public:
+    static CDebugEventConsole* NewL();
+ ~CDebugEventConsole();
+
+private:
+    ConstructL();
+    CDebugEventConsole();
+    virtual void CommandCompleted(TInt aError);
+    virtual TBool ReceiveEvent(TDesC8&amp; aEvent, TInt aError);
+
+    CConsoleBase*            iConsole;
+    CHciExtensionConduit*    iConduit;
+    };
+
+ CDebugEventConsole* CDebugEventConsole::NewL()
+    {
+    CDebugEventConsole* self=new (ELeave)CDebugEventConsole();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CDebugEventConsole::~CDebugEventConsole()
+    {
+    delete iConsole;
+    delete iConduit;
+    }
+
+CDebugEventConsole::ConstructL()
+    {
+    TUint8 ActivateInfo[] = //returns response event and couple of extension events
+        {
+        0x01, 0x02, 0x03, 0x04, //example uses meaningless values, for illustration
+        0x05, 0x06, 0x07, 0x08,
+        0x09, 0x0A, 0x0B, 0x0C,
+        0x0D, 0x0E, 0x0F, 0x10,
+        0x11, 0x12, 0x13, 0x14,
+        0x15, 0x16, 0x17, 0x18,
+        0x19, 0x1A, 0x1B, 0x1C,
+        0x1D, 0x1E, 0x1F, 0x20,
+        0x21, 0x22, 0x23, 0x24,
+        0x25, 0x26
+        };
+
+    ...
+
+    TPtrC8 ExtensionCommand(ActivateInfo, sizeof(ActivateInfo));
+ 
+    ...
+    
+    iConsole=Console::NewL(_L("listening for Events..."),TSize(20,20));
+    iConduit = CHciExtensionConduit::NewL(*this);
+    iConduit-&gt;IssueCommandL(ExtensionCommand);
+    }
+
+CDebugEventConsole::CDebugEventConsole()
+    {
+    }
+
+void CDebugEventConsole::CommandCompleted(TInt aError)
+    {
+    iConsole-&gt;Printf(_L("Cmd Complt: %d\n"), aError);
+        if(aError==KErrNone)
+        {
+        aError = iConduit-&gt;WaitForEvent();    
+        iConsole-&gt;Printf(_L("WaitForEvent: %d\n"), aError);
+        }
+    }
+
+TBool CDebugEventConsole::ReceiveEvent(TDesC8&amp; aEvent, TInt aError)
+    {
+    iConsole-&gt;Printf(_L("Rcvd Event!\n  err %d Length %d\n"), aError, aEvent.Length());
+    return ETrue; // Keep receiving events
+    }
+
+void DoEventListenerL()
+    {
+    CActiveScheduler *exampleScheduler = new (ELeave) CActiveScheduler();
+    CleanupStack::PushL(exampleScheduler);
+    CActiveScheduler::Install(exampleScheduler); 
+
+    CleanupStack::PushL(CDebugEventConsole::NewL());
+
+    CActiveScheduler::Start();
+    CleanupStack::PopAndDestroy(2); // active shed, myDebug
+    }
+</codeblock> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-710429DF-DDE9-5529-B0C5-62BE04E9FB03"><p> <xref href="GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita">Listening for Incoming Bluetooth Connections</xref>  </p> </li> <li id="GUID-40F5BDDB-06CF-5D2E-AD32-0BA5B9C2438F"><p> <xref href="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita">Handling the Local Device Name</xref>  </p> </li> <li id="GUID-E7C9448C-4C00-5755-BCF0-47ADD30F012C"><p> <xref href="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita">Performing Low-level Configuration</xref>  </p> </li> <li id="GUID-8E85825C-92DB-554D-9EBC-74297A3CD148"><p> <b>Debugging the Host Controller</b> - This document </p> </li> <li id="GUID-39439F8A-81F6-5AA2-88D2-DEC3FCE8DC11"><p> <xref href="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita">Disconnecting ACL links</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C678281-46F3-53C8-8D5A-93E51EC9E3CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5C678281-46F3-53C8-8D5A-93E51EC9E3CF" xml:lang="en"><title>Histogram Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5C79E34A-4048-57C4-A7CF-2D56DC9702FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5C79E34A-4048-57C4-A7CF-2D56DC9702FB"><title>Editing</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When a user program edits data, it must change the document content, and change the view correspondingly.</p> <p>The text model requires the following sequence of operations for any kind of edit:</p> <ul><li id="GUID-CACBDFC7-B3AC-5590-B495-BAC770FF53D0"><p>the application identifies which command is to be performed, by interpreting user input (pointer and key events etc)</p> <p>Pointer-driven input may first use the view to set a cursor selection, and then invoke a function. Regardless of the method of input, the text view's cursor selection will often define the region of the text object affected by the command.</p> </li> <li id="GUID-B623C426-6AE3-5947-BC4E-A188F95C2343"><p>the application invokes the relevant text content function to execute the command — a change to content, format or both</p> <p>By this means, the document is changed, and the text view is now out of date.</p> </li> <li id="GUID-D9A77A7E-62C5-5F7D-81F4-0DEED27EECFD"><p>the application notifies the text view what type of change occurred and, if appropriate, specifies the range of the document that was affected</p> <p>This allows the text view to interrogate the document (through its laydoc interface) about its changed content, and to perform the minimal changes to its layout and view, and then to redraw the view.</p> </li> </ul> <p>It is the application's responsibility to identify the command, change the content, and specify the kind of updating needed in the view.</p> <p>The application should choose the function used to notify the view about the type of content update. After a major change (such as loading the document), the application should ask the view to reformat and redraw the entire format band. But this is overkill for most purposes: after a single character has been inserted, for instance, only a limited amount of reformatting may be necessary, usually confined to the remainder of the line in which the character was inserted. The general rule is that the application should choose the lightest-weight function that is guaranteed to do the necessary reformatting. This is what makes text views efficient.</p> <p>See <xref href="GUID-E9E26499-1102-578E-93F6-A8E14181A25C.dita">How to handle changes to the text view</xref>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246"><title>SQLite 3 Overview</title><shortdesc>The SQLite 3 component provides an implementation of the native SQLite C APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>SQLite 3 provides an interface that makes it possible for developers to include their own SQLite implementations in a Symbian application. </p> </section> <section><title>Required background</title> <p>You should have a good understanding of SQLite 3 and be familiar with the Symbian implementation, Symbian SQL. </p> </section> <section><title>Typical uses</title> <p>SQLite 3 is used: </p> <ul><li id="GUID-890F5D85-3118-54E0-A269-4F73EFC8D3E7"><p>if you are porting an existing SQLite application written in C </p> </li> </ul> </section> </conbody><related-links><link href="GUID-6A658F2F-666E-55A2-9287-53A1756AA890.dita"><linktext>Symbian SQL</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F" xml:lang="en"><title>Picture Concepts</title><shortdesc>This section introduces <i>pictures</i>. In this context a picture is an object that can be drawn to a graphics context and can be stored and restored. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>Graphics Device Interface
+  Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5CF5B8D6-C477-55D2-A036-2C090FA41D33.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5CF5B8D6-C477-55D2-A036-2C090FA41D33"><title>The write stream interface</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>RWriteStream</codeph> is an abstract class that presents the necessary interface for externalising to a stream. When called, the <codeph>ExternalizeL()</codeph> member function of a class is passed a reference to a concrete write stream object; for example, an object constructed from a class such as <codeph>RStoreWriteStream</codeph>. This allows <codeph>ExternalizeL()</codeph> to write the object's data to any stream, regardless of that stream’s concrete implementation. </p> <p>All data types, including non-class types, can be externalised, although some can only be externalised using the templated stream <codeph>operator&lt;&lt;</codeph>.</p> <p><codeph>RWriteStream</codeph> provides support for externalizing:</p> <ul><li id="GUID-09D7AA34-DD98-5E9D-AD0B-4CC7C8D5E841"><p><codeph>TInt</codeph>, <codeph>TUint</codeph>, <codeph>TReal</codeph> and <codeph>TReal64</codeph> types.</p> </li> <li id="GUID-1A7BD64A-3FF3-569B-B60F-CCC6858EC2F9"><p>The content of a descriptor.</p> </li> <li id="GUID-9E899BB9-1B59-5907-9584-A0803735C2DF"><p>The data from an open read stream object, a <codeph>RReadStream</codeph> type.</p> </li> </ul> <p>The <codeph>WriteInt8()</codeph>, <codeph>WriteUint8()</codeph>, <codeph>WriteInt16()</codeph> and <codeph>WriteUint16()</codeph> member functions allow applications to reduce the size of the stream when <codeph>TInt</codeph> and <codeph>TUint</codeph> values are guaranteed to be containable within 8 bits and 16 bits.</p> <p>The write stream interface also allows data to be externalised from a location defined by a pointer and a length. However, this functionality is rarely used by application code.</p> <section><title>See also</title> <p><xref href="GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita">Store streams</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5CFA3F21-3E42-5B53-8EC1-BC0F7F0E8136.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5CFA3F21-3E42-5B53-8EC1-BC0F7F0E8136" xml:lang="en"><title>Storage of Messages</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Messaging Framework provides APIs for storing and manipulating messages in the Message Store </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5CFC075C-8F53-5E1B-A111-C6F4567DFD1E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-5CFC075C-8F53-5E1B-A111-C6F4567DFD1E"><title>RConnection API Summary Reference</title><shortdesc>This topic provides a summary of the functionality of the <apiname>RConnection</apiname> class. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><title>System wide connection management and monitoring</title> <p>Functions that apply to all connections, not just the current one. </p> <ul><li id="GUID-E4DDDFD9-EAC6-5EB3-9B83-5CABA6390D45"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-18F9018F-78DE-3A7E-8363-B7CB101E7A99"><apiname>RConnection::EnumerateConnections(TUint&amp;)</apiname></xref>  </p> </li> <li id="GUID-3BFF215D-DE03-53DC-ACCE-CB025568B968"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-EA525DAF-A097-373D-BC77-B55398BEE43A"><apiname>RConnection::AllInterfaceNotification(TDes8&amp;,
+                TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-843B9547-4E1E-5FA8-B746-4CF749B8752B"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-73D1DAF7-2465-38FE-98BB-3E82EEE9EF4C"><apiname>RConnection::CancelAllInterfaceNotification()</apiname></xref>  </p> </li> </ul> </section> <section><title>Sub-Connection management and monitoring APIs in RConnection</title> <p>Retrieves information on <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> s and manages <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> s. </p> <ul><li id="GUID-8AA919BF-9A35-5C47-8B77-FF71BD6CD952"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-F71CF9AC-32FE-3B78-B6BC-8BEEA812EE3A"><apiname>RConnection::Stop(TSubConnectionUniqueId)</apiname></xref>  </p> </li> <li id="GUID-F698091E-8627-548F-BB0C-548945423140"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-0C9A0D29-1A7D-3480-8546-72097D4E1AD8"><apiname>RConnection::Stop(TSubConnectionUniqueId,
+                TConnStopType)</apiname></xref>  </p> </li> <li id="GUID-9BBB5548-53E8-5BDE-BC07-D8E598152403"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-6E7005CF-4D8E-31CE-BAEA-21965ACC9C17"><apiname>RConnection::ProgressNotification(TSubConnectionUniqueId,
+                TNifProgressBuf&amp;, TRequestStatus&amp;, TUint)</apiname></xref>  </p> </li> <li id="GUID-8114BE60-F2E7-5320-9B0F-A23913CB3A00"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-890F2F7B-05D5-3A7B-8619-BFAD7345EFAF"><apiname>RConnection::CancelProgressNotification(TSubConnectionUniqueId)</apiname></xref> </p> </li> <li id="GUID-E35EC22D-B7F1-53D4-9D61-33776A7B0FC3"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-F6F43C7C-10BE-3757-8D26-F35D50E801FC"><apiname>RConnection::Progress(TSubConnectionUniqueId,
+                TNifProgress&amp;)</apiname></xref>  </p> </li> <li id="GUID-555D90BD-5FDC-5A9D-A4CD-18BF44715FA3"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-D70F8B5D-2F5F-3DC6-BD80-1A0A16EFEA04"><apiname>RConnection::IsSubConnectionActiveRequest()</apiname></xref>  </p> </li> <li id="GUID-FA96D097-6B75-5F5C-AC38-343592B2C863"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-2D5FA89C-1DC8-3DE7-8BC9-A2BE8631DC96"><apiname>RConnection::IsSubConnectionActiveCancel()</apiname></xref>  </p> </li> </ul> </section> <section><title>Connection settings for RConnection</title> <p>Allows the configuration settings for this connection to be retrieved from CommsDat. </p> <ul><li id="GUID-161BE780-A7D7-5D16-9441-8D0B5FEA0E8D"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-51194DA0-08E7-31B4-94B8-A2966C6E4E0D"><apiname>RConnection::GetIntSetting(const TDesC&amp;,
+                TUint32&amp;)</apiname></xref>  </p> </li> <li id="GUID-82F697B3-DA93-54E9-92A5-21F56E4A0F98"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-DCDB6B57-0C99-3E46-92AA-B30D483E8428"><apiname>RConnection::GetBoolSetting(const TDesC&amp;,
+                TBool&amp;)</apiname></xref>  </p> </li> <li id="GUID-3347F04F-AF72-5A0C-82BF-5C0222E825B3"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-DF16BCD4-D0D2-3F5B-8771-EFA8AD274E0F"><apiname>RConnection::GetDesSetting(const TDesC&amp;,
+                TDes8&amp;);</apiname></xref>  </p> </li> <li id="GUID-224B7992-5EB8-55D1-B521-08292E198404"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-8E18A6F0-59C7-3508-B4B6-155F47E873C6"><apiname>RConnection::GetDesSetting(const TDesC&amp;,
+                TDes16&amp;);</apiname></xref>  </p> </li> <li id="GUID-69B62E75-74B8-5F85-8365-928A7D98DEE1"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-14155E9D-7F32-3593-8A9F-5D0FBC48CDFD"><apiname>RConnection::GetLongDesSetting(const TDesC&amp;
+                aSettingName, TDes&amp; aValue)</apiname></xref>  </p> </li> </ul> </section> <section><title>Data monitoring APIs in RConnection</title> <p>Gets statistics on data throughput. </p> <ul><li id="GUID-9F88F4AF-5074-5B72-863E-587EC932AD5B"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-15E9E497-E4ED-30BE-9B52-57120E6C0281"><apiname>RConnection::DataTransferredRequest(TPckg&lt;TUint&gt;&amp;,
+                TPckg&lt;TUint&gt;&amp;, TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-28A18C73-302C-5691-BB4C-BBBC8508FD3C"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-8387A088-BF9C-3ED8-ABAC-63AE910E14AC"><apiname>RConnection::DataTransferredRequest(TSubConnectionUniqueId,
+                TPckg&lt;TUint&gt;&amp;, TPckg&lt;TUint&gt;&amp;,
+                TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-B0B564F3-9DB7-59F5-AB18-6567BA0EA996"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-6C3BA56C-90AC-39BD-8FBC-B6BB94D62F0E"><apiname>RConnection::DataTransferredCancel()</apiname></xref>  </p> </li> <li id="GUID-04F01201-2830-5754-8979-A5C09DF7FF7D"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-76B4897E-0032-3F63-931D-B3DB2E38087C"><apiname>RConnection::DataTransferredCancel(TSubConnectionUniqueId)</apiname></xref> </p> </li> <li id="GUID-3DBB8110-8594-5CBB-9371-C1D6D79D47E3"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-E85850A2-9A07-368A-8A0A-DC83E4A912AD"><apiname>RConnection::DataSentNotificationRequest(TUint,
+                TPckg&lt;TUint&gt;&amp;, TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-8E889A7C-CD75-5980-85BF-558FFB01C869"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-F83EBDAB-74FE-337A-AA80-F01D1883F989"><apiname>RConnection::DataSentNotificationRequest(TSubConnectionUniqueId,
+                TUint, TPckg&lt;TUint&gt;&amp;, TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-41234B4C-8257-5C9E-8CF9-743D2A191884"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-681E6ED5-D70E-3002-9799-6FB1091D2372"><apiname>RConnection::DataSentNotificationCancel()</apiname></xref>  </p> </li> <li id="GUID-2EF66406-940E-5A65-A292-41128C0B1C66"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-2C0087A7-F25A-39A9-B78D-4B3A9FCBC054"><apiname>RConnection::DataSentNotificationCancel(TSubConnectionUniqueId)</apiname></xref> </p> </li> <li id="GUID-E3A29434-8074-5E60-B6F3-BB1248540872"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-AFFDA421-7404-3808-905F-C0A2D4A44D36"><apiname>RConnection:: NotificationRequest(TUint,
+                TPckg&lt;TUint&gt;&amp;, TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-75F5A8D4-6EB0-5346-8AE4-4F72128E6391"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-9E056551-22C2-3F85-8E3D-C11FA3B46F07"><apiname>RConnection::DataReceivedNotificationRequest(TSubConnectionUniqueId,
+                TUint, TPckg&lt;TUint&gt;&amp;, TRequestStatus&amp;)</apiname></xref>  </p> </li> <li id="GUID-6535CDDF-2E36-5628-9C48-C2526740534F"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-178479E8-6526-30D3-8744-A61EA55A53FA"><apiname>RConnection::DataReceivedNotificationCancel()</apiname></xref>  </p> </li> <li id="GUID-81BF491F-EFD8-540A-8767-C789D65F6F40"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-20B2E4E3-5A66-36B7-876F-87F147C1C1F6"><apiname>RConnection::DataReceivedNotificationCancel(TSubConnectionUniqueId)</apiname></xref> </p> </li> </ul> </section> <section><title>See Also</title> <p> <xref href="GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita">ESock Reference</xref>  </p> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D14ADEC-ED83-5FA4-B551-C57CAE4F79BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5D14ADEC-ED83-5FA4-B551-C57CAE4F79BE" xml:lang="en"><title>Zip Compression Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Zip Compression Library, EZLib, provides stream and file compression and decompression functionality for the Symbian platforms. EZLib also provides classes to handle the file, stream and buffer requirements of zlib. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D47DBF8-3DFE-5D0B-95B2-63302E91C423.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-5D47DBF8-3DFE-5D0B-95B2-63302E91C423" xml:lang="en"><title>How
+to Open a Port: Tutorial</title><shortdesc>This tutorial shows the basic steps required to open a serial port
+using the RComm API.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>If the port is being opened for a console application or similar
+environment where device drivers are not guaranteed to be started, first load the
+LDD and PDDs as per the tutorial <xref href="GUID-57A909F3-EAEA-5FE2-B620-E21204794497.dita">How
+to load the Physical Device Driver and Logical Device Driver: Tutorial</xref></p></context>
+<steps id="GUID-7C95375B-0469-5B65-96C3-F94C0C4418D1">
+<step id="GUID-39496668-DE99-5A5C-AB01-CCB0609757EC"><cmd/>
+<info>The <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref> is a client of the <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita"><apiname>RCommServ</apiname></xref> API,
+so create a <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita"><apiname>RCommServ</apiname></xref> session. </info>
+</step>
+<step id="GUID-5C7D946E-C7A7-5482-9A94-E806EEB7DF4F"><cmd/>
+<info>Call <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita#GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306/GUID-F851835B-4585-3C3A-B257-ADAE04CD95AA"><apiname>RCommServ::LoadCommModule()</apiname></xref> with the <codeph>aFileName</codeph> parameter
+set to a Serial Protocol Module. This requests that the Serial Communications
+Server use a specific Serial Protocol Module. These Serial Protocol Modules
+are <filepath>.CSY</filepath> files that let the Serial Communications Server
+know how the server should manage the port. For example, sample terminal code
+uses a standard <keyword>RS232</keyword> module called <codeph>ECUART</codeph>,
+while infra-red code uses a <keyword>IrDA</keyword> module called <codeph>IrCOMM</codeph>. </info>
+<info>The <filepath>.csy</filepath> file extension is not required in the <codeph>aFileName</codeph> parameter. </info>
+</step>
+<step id="GUID-EF3C8BFE-1A2A-5F26-A35E-8C6924C3D699"><cmd/>
+<info>Call <xref href="GUID-0C42149F-BBEE-3EEC-A932-BECD16682BA0.dita"><apiname>RComm:Open()</apiname></xref> to connect the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref> client
+to the server and to open the port by name. You must specify the name of the
+port. The serial port name format is: </info>
+<stepxmp><codeblock id="GUID-386368CF-113A-5804-B2A5-958E838B639C" xml:space="preserve">[text-string]::[0-255]</codeblock> </stepxmp>
+<info>The name of the port may not be the same as the name of the Serial Protocol
+Module. For example, the Infrared Serial Protocol Module is called <filepath>irda.csy</filepath> and
+the port name is <codeph>IrCOMM</codeph>. </info>
+</step>
+</steps>
+<example><title>Example</title> <codeblock id="GUID-AAF9BB90-7C53-5417-A518-2397945F53DF" xml:space="preserve">RCommServ server; 
+server.Connect ();                     // step 1
+server.LoadCommModule (_L ("ECUART")); // step 2
+RComm commPort;
+commPort.Open (server, _L ("COMM::0"), ECommExclusive); // step 3
+</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita"><linktext>GlassTerm
+-                 glass teletype terminal</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347"><title>Thread And Process Management Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides access to processes, threads, thread-local storage, and access synchronisation.</p> <p>These APIs provide support for a programming style that employs multiple threads or processes that share resource protected by synchronisation mechanisms such as mutexes. Symbian OS provides alternatives to this style that are better suited to a limited resource environment:</p> <ul><li id="GUID-92461334-670A-58ED-9EB5-DA89FE0599FD"><p>the active objects framework provided by the Asynchronous Services API is usually preferred to multi-threading in Symbian OS programming</p> </li> <li id="GUID-8EE9253F-9F9A-5A92-B188-0F67807AC3C6"><p>server programs can be used to serialise access to a shared resource</p> </li> </ul> </section> <section><title>Description</title> <p>Functionality is provided by a number of APIs. Use them as follows:</p> <p><xref href="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita">Threads And Processes Overview</xref> </p> <p>Provides access to processes, threads, and thread-local storage.</p> <p><xref href="GUID-E865E677-1219-500C-89CF-0A2835B91834.dita">Semaphores Overview</xref> </p> <p>Synchronises access to shared resources within and between processes. </p> <p><xref href="GUID-BA89F4DF-E2F6-5E0B-BF20-F8898FC5D5F8.dita">Mutexes Overview</xref> </p> <p>Synchronises exclusive access to shared resources within and between processes.</p> <p><xref href="GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2.dita">Critical Sections Overview</xref> </p> <p>Synchronises exclusive access to shared resources within a single process. </p> </section> <section><title>See also</title> <p><xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous Services Overview</xref> </p> <p><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System Static Functions Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477"><title>target</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>target</codeph>  <varname>filename</varname> <codeph>.</codeph> <varname>ext</varname> </p> <p>Use the <codeph>target</codeph> statement to specify the file generated by the project.</p> <p>Specify only the filename with its extension. The path for the released target will be chosen depending on the platform, variant, and release path.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99" xml:lang="en"><title>PKG
+file format to support multilingual application installation</title><abstract><p>Symbian platform applications can be localized by defining all
+the localizable text and images in language-specific resource and icon files.
+For more information on localising the resource files, see <xref href="GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita">How
+to localise resources</xref>. The PKG file must contain <xref href="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita">language-specific
+resource and icon files</xref> along with the elements required for simple
+installation. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section>  <title>Example</title>     <p>The following PKG file is provided
+in <filepath>examples\ToolsAndUtilities\Localise\</filepath>. </p> <codeblock id="GUID-D47FB4EB-939E-5065-B9E3-1AD9E53A0EF4" xml:space="preserve">; Install file for multi-lingual application supporting two language variants
+
+; List of languages supported 
+&amp;EN,GE
+
+; List of localised vendor names for each supported language
+%{"Nokia Corporation", "Nokia Corporation"}
+
+; Single, non-localised (global) vendor name.
+:"Nokia Corporation"
+
+; Package header
+; Component names specified in English and German as these are supported languages
+#{"Hello World", "Hallo Welt"}, (0xE8000096), 1,0,0
+
+; Language-neutral files to be installed irrespective of the languages supported on the Symbian device. 
+          
+"HelloWorld.exe"-"!:\sys\bin\HelloWorld.exe"
+"HelloWorld_reg.rsc" - "!:\private\10003a3f\import\apps\HelloWorld_reg.rsc"
+
+; List of language-specific files; installed based on the language supported by the Symbian device.
+if supported_language=01 
+    "HelloWorld.r01"        -"!:\resource\apps\HelloWorld.r01" ;English version of the resource file
+    "HelloWorld01.mbm"        -"!:\resource\apps\HelloWorld01.mbm" ;language-specific icon file
+endif
+
+if supported_language=03
+    "HelloWorld.r03"        -"!:\resource\apps\HelloWorld.r03" ;German version of the resource file
+    "HelloWorld03.mbm"        -"!:\resource\apps\HelloWorld03.mbm" ;language-specific icon file
+endif</codeblock>     </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D5BF7E5-4105-572E-81B5-0E61E1AA443E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-5D5BF7E5-4105-572E-81B5-0E61E1AA443E" xml:lang="en"><title>Writing
+a Server MTM </title><abstract><p>This section explains the initial set up steps to be performed
+to write a Server MTM. It does not explain the implementation of all <xref href="GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2.dita">Server MTM functionality</xref>,
+however, you can refer the <xref href="GUID-DB1D3045-2DC5-5C50-B430-526674369DC6.dita">Server
+MTM example</xref> for detailed implementation steps.</p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Server MTM functions usually start an operation to perform a task
+asynchronously. The <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref> Server MTM class passes
+its own <xref href="GUID-6C0AA422-EA6F-3666-A973-DF6510B8F11C.dita"><apiname>iStatus</apiname></xref> member to the operation. Note that there
+is no base class for server-side operations, as there is on the client side.
+Server MTMs therefore implement their own operation classes derived directly
+from <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref>. They are, however, usually designed to return
+progress in a similar way to a client-side operation. </p> </context>
+<steps id="GUID-C7A5F589-CDA2-5996-8FB4-08B7D1E175BA">
+<step id="GUID-AB47DC3C-49D1-546E-A53E-E76074D606D4"><cmd/>
+<info>Derive a class from the <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref> class. </info>
+</step>
+<step id="GUID-D47A078C-ECDB-5035-8ED7-60A218B315AB"><cmd/>
+<info>Register it using the <xref href="GUID-0D5D7FAC-4F14-3046-92FB-873B8350FF4C.dita"><apiname>CRegisteredMtmDll</apiname></xref> parameter. </info>
+</step>
+<step id="GUID-BB5C73F0-E399-5430-AF36-C4711CD179A9"><cmd/>
+<info>Create the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> -based classes for performing
+the different operations that are required for your Messaging protocol. </info>
+</step>
+</steps>
+<example><title>Server MTM example</title><codeblock xml:space="preserve">//
+//  CTextServerMtm: The Server-side MTM implementation
+//
+  
+CTextServerMtm* CTextServerMtm::NewL(CRegisteredMtmDll&amp; aRegisteredMtmDll, CMsvServerEntry* aInitialEntry)
+// Exported factory function
+    {
+    CleanupStack::PushL(aInitialEntry);
+    CTextServerMtm* self=new (ELeave) CTextServerMtm(aRegisteredMtmDll, aInitialEntry);
+    CleanupStack::Pop();
+
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+CTextServerMtm::CTextServerMtm(CRegisteredMtmDll&amp; aRegisteredMtmDll, CMsvServerEntry* aInitialEntry)
+    :  CBaseServerMtm(aRegisteredMtmDll, aInitialEntry), 
+        iCurrentOperation(ETxtOpIdle), 
+        iServiceEntryId(aInitialEntry-&gt;Entry().Id())
+    {
+    }</codeblock> <p>For more details on implementing all UI
+MTM functions, see <xref href="GUID-DB1D3045-2DC5-5C50-B430-526674369DC6.dita">example
+code</xref>. </p> </example>
+</taskbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM overview</linktext>
+</link>
+<link href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita"><linktext>Server MTM</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5D712F4A-E956-543D-BCC0-91107C6E4717.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5D712F4A-E956-543D-BCC0-91107C6E4717"><title>Notification of changes to the comms database</title><shortdesc>This topic describes the mechanism that allows the CommsDat API to notify tools and applications of changes to the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <p>All elements that you can read and write have the class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> as a base class. This base class contains the functions that allow the CommsDat API to notify tools and applicaions of changes to the database. </p> <p>Tables, records, links and fields are all elements. The classes that represent tables, records, links and fields have <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> in their class hierearchy. You can use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::MMetaDatabase::RequestNotification()</apiname></xref> function to register for notification of changes to the Comms Database. You can use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::MMetaDatabase::CancelNotification()</apiname></xref> function to cancel a request for notification. </p> <fig id="GUID-81B08072-AFE0-50FC-8A19-AF37E0A246EB"><image href="GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e67151_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5DACAB53-6D32-5250-9BC2-3E8597C3E2B2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5DACAB53-6D32-5250-9BC2-3E8597C3E2B2" xml:lang="en"><title>XML
+Framework Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Error codes</title> <p>Error codes refer to six areas of functionality
+and the names are self-explanatory. When a parser fails, it calls a <codeph>Leave()</codeph> function
+with the appropriate error code as a parameter. A plug-in may not require
+some of the error codes, depending on its functionality. </p> <p><b>Plug-in
+selection errors</b> </p> <p>Plug-in selection errors are returned by the
+framework when ECOM fails to supply a plug-in. </p> <table id="GUID-CD7C37E6-91CC-5CFF-977C-C944DFADA543">
+<tgroup cols="1"><colspec colname="col0"/>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-FA8A777E-1835-3D31-BFE6-6B7438878293.dita"><apiname>KErrXmlGeneratorPluginNotFound</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-DCAD8131-EA4D-3F6A-92AD-5444557277AD.dita"><apiname>KErrXmlParserPluginNotFound</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-98260C97-9017-3892-83CC-7441DB10E610.dita"><apiname>KErrXmlPluginNotFound</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-90890D4D-8725-3F8C-A3B4-968ED0357508.dita"><apiname>KErrXmlStringDictionaryPluginNotFound</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Charset converter errors</b> </p> <p>Charset converter errors
+are returned by <codeph>CCharSetConverter</codeph>. A character set may not
+be supported or is not available. Not available means that there is no functionality
+to convert to and from that character set. </p> <table id="GUID-8F80E4F4-AA70-5ED6-B77E-8FD308F257DC">
+<tgroup cols="1"><colspec colname="col0"/>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-1FC7DDA5-CC01-31A6-A3B3-E225CD03CB99.dita"><apiname>KErrXmlBadCharacterConversion</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-29CE1F85-4E87-38B2-8EB4-98C364AE60A4.dita"><apiname>KErrXmlUnavailableCharacterSet</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-CF83FF85-F1CC-391C-98CF-CA5DCB19FBB1.dita"><apiname>KErrXmlUnsupportedCharacterSet</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>String dictionary errors</b> </p> <p>String dictionary errors
+are returned by the automatically generated string dictionary code. </p> <table id="GUID-46FCF069-83FA-5AE9-B869-2A1F3BA317DD">
+<tgroup cols="1"><colspec colname="col0"/>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-8DC231D0-495E-3E67-BD79-6C6036465A90.dita"><apiname>KErrXmlMissingStringDictionary</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-94AC16BD-C398-3DF7-AF38-7248501C9FC0.dita"><apiname>KErrXmlUnsupportedAttribute</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-8801ABEA-499E-340F-A55A-4CD3155A121E.dita"><apiname>KErrXmlUnsupportedAttributeValue</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-DE3F2987-DCC9-37AB-B60B-F7B3D56A0C0F.dita"><apiname>KErrXmlUnsupportedElement</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>General errors</b> </p> <p>General errors refer to an entire
+document rather than local parse failures. </p> <table id="GUID-E689FA0B-30AC-53B8-995D-105D7C497633">
+<tgroup cols="1"><colspec colname="col0"/>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-97A453E5-765F-36F2-85E6-89056C091AD6.dita"><apiname>KErrXmlBadIndex</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-7992934C-9ED6-39C8-B048-ED6C1F974AD6.dita"><apiname>KErrXmlDocumentCorrupt</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3E1DF5F4-6291-3F07-B8DA-E44BBB98109B.dita"><apiname>KErrXmlStringPoolTableNotFound</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-88D7C1D0-3C27-33C3-BCB8-16FBC0F0ED59.dita"><apiname>KErrXmlUnsupportedDocumentVersion</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-E5F42857-C5F7-3690-A488-2396976DB32D.dita"><apiname>KErrXmlUnsupportedExtInterface</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Parser selection errors</b> </p> <p>There is only one error
+code associated with the parser selection functionality. <xref href="GUID-10A59E15-6F27-3E2A-8CD3-A4942A52C1EB.dita"><apiname>KErrXmlMoreThanOneParserMatched</apiname></xref> is
+returned if the <xref href="GUID-5CC299E8-C845-3A8C-8C44-0B10610D0D1D.dita"><apiname>KXmlLeaveOnManyFlag</apiname></xref> flag is set. </p> <table id="GUID-3682F377-D97B-547F-9DCC-28FAEDD50573">
+<tgroup cols="1"><colspec colname="col0"/>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-10A59E15-6F27-3E2A-8CD3-A4942A52C1EB.dita"><apiname>KErrXmlMoreThanOneParserMatched</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Other errors</b> </p> <p>The constants <xref href="GUID-9086EEB4-9723-3FAC-8D7A-AC5006457B15.dita"><apiname>KErrXmlFirst</apiname></xref> and <xref href="GUID-C445558A-10FA-315B-B735-FB14549A9F99.dita"><apiname>KErrXmlLast</apiname></xref> are
+not error codes but they are the bounds of the XML error message space. They
+specify that only XML errors must be handled. </p> <table id="GUID-F7A2289B-D3AB-561D-95C5-3717196E2724">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-9086EEB4-9723-3FAC-8D7A-AC5006457B15.dita"><apiname>KErrXmlFirst</apiname></xref>  </p> </entry>
+<entry><p>XML error must be handled first. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-C445558A-10FA-315B-B735-FB14549A9F99.dita"><apiname>KErrXmlLast</apiname></xref>  </p> </entry>
+<entry><p>XML error must be handled last. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e15375_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5DC419C8-FD1B-534F-B33D-0D4EBBC6B506.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5DC419C8-FD1B-534F-B33D-0D4EBBC6B506"><title>Interface Implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>An <i>interface implementation</i> provides the services promised by the interface. An implementation does this in the standard C++ way by deriving from the base class, in this case, the interface definition, and implementing its functions. </p> <p>One or more interface implementations are gathered together in a DLL, termed an <i>interface implementation collection</i>. A collection can have implementations of more than one interface. Aside from the implementations themselves, each collection has two key features that allow ECom to use it: </p> <ul><li id="GUID-F5E2C809-EF86-5F53-AB5C-635C7CAFFCCF"><p>it exports an array of factory functions that allow implementations to be created </p> </li> <li id="GUID-5B9AF11C-9DA5-542B-93A8-B6A3047E44FB"><p>it publishes a registration resource file that lists its implementations and their properties </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5DD1010C-1648-5086-BA80-BC25F3C7A2C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5DD1010C-1648-5086-BA80-BC25F3C7A2C4" xml:lang="en"><title>Messaging Middleware
+Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Messaging Middleware module provides a generic framework for storing
+and manipulating messages. This guide provides detailed information of the
+Messaging Middleware module. </p>
+</conbody><related-links>
+<link href="GUID-1A43A45B-80AE-56A0-A94C-64BA75519C67.dita"><linktext>Messaging
+Application Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E10D5B7-C407-51E0-8C16-466A8BC89106.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-5E10D5B7-C407-51E0-8C16-466A8BC89106"><title>Phone Identification Tutorial</title><shortdesc>This tutorial describes how to retrieve the phone identification parameters from the device. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <context><p>The phone idenitifcation is returned in a packaged <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TPhoneIdV1</apiname></xref>. It contains the following member variables, each a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TBuf</apiname></xref> descriptor of up to 50 characters: </p> <ul><li id="GUID-2E35DC48-AFE7-5F04-BF43-97653D6B91E7"><p> <b>Manufacturer</b>  </p> </li> <li id="GUID-623DA767-4058-514D-BE5B-1C2EA01C4FB4"><p> <b>Model</b>  </p> </li> <li id="GUID-740F0F8B-AB80-5D05-992F-26E53C68C9C9"><p> <b>Serial Number</b>, the IMEI or ESN serial number. It identifies the phone, not the subscriber using the phone. </p> </li> </ul> </context> <steps id="GUID-E4AADC4B-DC49-5616-AC23-BDDB1FE227FE"> <step id="GUID-0707DB6B-C81B-59E5-98F8-8C6F091E8C72"><cmd/><info>create an instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> with an active object </info> </step> <step id="GUID-AE642E12-000B-5E60-BD07-A7FD7AC2DF8A"><cmd/><info>set the active object with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>SetActive()</apiname></xref> function </info> </step> <step id="GUID-CC8DBBC9-E403-557B-8AE6-70C4DA2E56EE"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetPhoneId()</apiname></xref> to get the phone identification parameters </info> <info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetPhoneIdCancel</apiname></xref> to cancel the asynchronous call. </info> </step> </steps> <example><title>Phone Identification example</title> <codeblock id="GUID-589C7B5B-4C0A-577B-B38A-C7B01E0E0953" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+   { 
+
+private:
+   CTelephony* iTelephony;
+   CTelephony::TPhoneIdV1 iPhoneIdV1;
+   CTelephony::TPhoneIdV1Pckg iPhoneIdV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iPhoneIdV1Pckg(iPhoneIdV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetPhoneId(iStatus, iPhoneIdV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       TBuf&lt;CTelephony::KPhoneManufacturerIdSize&gt; manufacturer = iPhoneIdV1.iManufacturer;
+       TBuf&lt;CTelephony::KPhoneModelIdSize&gt; model = iPhoneIdV1.iModel;
+       TBuf&lt;CTelephony::KPhoneSerialNumberSize&gt; serialNumber = iPhoneIdV1.iSerialNumber;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetPhoneIdCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E1C24CA-2F82-5E30-8981-0F343FF2BD89.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5E1C24CA-2F82-5E30-8981-0F343FF2BD89"><title>Bluetooth Client Library (Bluetooth User) Overview</title><shortdesc>The Bluetooth Client Library component (Bluetooth User) provides APIs for configuring and managing Bluetooth® connections. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-9C5228B8-0D60-5107-96D5-6BAF1143EED5"><title>Purpose</title> <p>The Symbian OS Bluetooth subsystem provides developer support for creating Bluetooth aware applications. Bluetooth User is a collection of components and their corresponding DLLs that set up, configure and manage Bluetooth sockets, access the HCI, and configure Bluetooth AV sessions. </p> </section> <section><title>Key concepts and terms</title> <p>The following terms are used: </p> <dl><dlentry><dt>Bluetooth library</dt> <dd><p>Provides setup and configuration details such as device type, Bluetooth sockets and link management options. </p> </dd> </dlentry> <dlentry><dt>Bluetooth sockets</dt> <dd><p>Sockets provided by <xref href="GUID-3C8F56AE-2C48-3DC5-83E8-7B3EC8E80D50.dita"><apiname>CBluetoothSocket</apiname></xref> instead of <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>. <xref href="GUID-3C8F56AE-2C48-3DC5-83E8-7B3EC8E80D50.dita#GUID-3C8F56AE-2C48-3DC5-83E8-7B3EC8E80D50/GUID-0628C20E-815E-351D-82DB-BC19CF01BC5C"><apiname>CBluetoothSocket::Connect()</apiname></xref> takes a <xref href="GUID-DFE19A3C-9E18-3B27-8748-FA0DB48A599C.dita"><apiname>TBTSockAddr</apiname></xref>, whose constructor <xref href="GUID-DFE19A3C-9E18-3B27-8748-FA0DB48A599C.dita#GUID-DFE19A3C-9E18-3B27-8748-FA0DB48A599C/GUID-5FD02D4D-902F-36C2-9B46-DEAAF302D0F1"><apiname>TBTSockAddr::TBTSockAddr()</apiname></xref> takes a <xref href="GUID-66228064-B6E7-3CE9-8F5E-5DED4CD9A49B.dita"><apiname>TSockAddr</apiname></xref>. </p> </dd> </dlentry> <dlentry><dt>Audio / Visual library</dt> <dd><p>Provides useful setup, configuration and error handling for Audio / Video applications. </p> </dd> </dlentry> <dlentry><dt>HCI direct access</dt> <dd><p>Used by licensees to customise HCI functionality. See <xref href="GUID-A5B36AF0-D335-3627-9142-27860325DE1F.dita"><apiname>RHCIDirectAccess</apiname></xref>. </p> </dd> </dlentry> </dl> </section> <section><title>Bluetooth Client Library Summary</title> <p>Bluetooth Client Library (Bluetooth User) is a collection of helper APIs. </p> <ul><li id="GUID-E5700CC0-A71F-50C7-9EE2-15C1D8331D97"><p>Bluetooth library </p> </li> <li id="GUID-20A70C47-E00E-5485-A6E4-1461B36BCC24"><p>Audio / Video library </p> </li> <li id="GUID-6B1C07B3-FE21-5526-B0FD-D552FB3D9BD0"><p>HCI commands </p> </li> </ul> <p>We will briefly look at each of the above components below. </p> <p><b>Bluetooth library</b> </p> <p>Primarily this component provides Bluetooth sockets. There are two kinds of sockets, they are: </p> <ol id="GUID-CA38EFFF-0198-521C-BE33-2B1E1825F4A0"><li id="GUID-C0351EE7-A66F-57DF-9FB1-19F1FFA74713"><p>ACL (<xref href="GUID-3C8F56AE-2C48-3DC5-83E8-7B3EC8E80D50.dita"><apiname>CBluetoothSocket</apiname></xref>) and </p> </li> <li id="GUID-A9FB715D-98A8-5AC7-8EDC-7548FD622154"><p>SCO (<xref href="GUID-31DE8DB6-1562-3C53-8B03-BCA82DA32E35.dita"><apiname>CBluetoothSynchronousLink</apiname></xref>) sockets. </p> </li> </ol> <table id="GUID-DE681FA8-0F5D-572F-88CC-4EAA0BA4D136"><tgroup cols="1"><colspec colname="col0"/><thead><row><entry>DLL</entry> </row> <row><entry> Library </entry> </row> <row><entry> Profile </entry> </row> <row><entry> Protocol </entry> </row> </thead> <tbody><row><entry><p> <filepath>bluetooth.dll</filepath>  </p> </entry> </row> <row><entry><p> <filepath>bluetooth.lib</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-BCA99FAB-1825-56A0-9D06-926B30C0FFBA">GAP</xref>, <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-74CDD0F3-3901-5F23-8FE8-B23FEB6DB243">SPP</xref>, <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-C7894668-B9C0-5C31-BD24-8A3753DF1F6C">GOEP</xref>, <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-85C0DABF-1EC0-5B25-9E36-72C42E5D4A97">PAN</xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-7640F878-2D99-52C8-ACBE-8B77A714E081.dita">Bluetooth protocol stack</xref>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>Bluetooth library classes </b> </p> <p>Bluetooth library provides classes to handle: </p> <ol id="GUID-C5A70630-D0AD-5D28-B0E7-D37965DC52B6"><li id="GUID-A524F934-C64F-5845-9A0B-5BF9ADA1B57C"><p>Bluetooth Sockets </p> <ul><li id="GUID-8A553351-A8F5-5C14-B824-D844E4CA62AF"><p> <xref href="GUID-3C8F56AE-2C48-3DC5-83E8-7B3EC8E80D50.dita"><apiname>CBluetoothSocket</apiname></xref>  </p> </li> <li id="GUID-A4EB20A6-9AC9-59CA-9BD2-F3FCFD68AA69"><p> <xref href="GUID-31DE8DB6-1562-3C53-8B03-BCA82DA32E35.dita"><apiname>CBluetoothSynchronousLink</apiname></xref>  </p> </li> <li id="GUID-49F0218F-A590-5B5C-AA38-0BA2706A82A7"><p> <xref href="GUID-4F2C6762-8FB1-31B2-BB6A-280BCF75F935.dita"><apiname>CBluetoothPhysicalLinks</apiname></xref>  </p> </li> </ul> </li> <li id="GUID-8413E26F-D666-5CCF-A859-776022F8E674"><p>Notifiers </p> <ul><li id="GUID-BB7D2901-9A51-521D-99E8-B0F8BA93F971"><p> <xref href="GUID-13D8E197-DFC3-3382-B8B5-C730D9FCED7A.dita"><apiname>MBluetoothPhysicalLinksNotifier</apiname></xref>  </p> </li> <li id="GUID-944C3FD5-6B7E-562F-A929-1760CB1295B2"><p> <xref href="GUID-9C1D6AA1-7006-3D2C-8B44-909E67C1655B.dita"><apiname>MBluetoothSocketNotifier</apiname></xref>  </p> </li> <li id="GUID-03732B85-0F1A-5617-8C0B-88666716002D"><p> <xref href="GUID-88678886-6677-32F2-844D-3390B6BDF2F3.dita"><apiname>MBluetoothSynchronousLinkNotifier</apiname></xref>  </p> </li> </ul> </li> <li id="GUID-280291A5-8D21-5829-9D4D-F6F4596F8452"><p>Utility classes </p> <ul><li id="GUID-5EE7CB25-3094-5528-BE04-E229BAB27341"><p> <xref href="GUID-BC537778-EFAA-358F-B0A0-1291B0DDE9C0.dita"><apiname>RBTPhysicalLinkAdapter</apiname></xref>  </p> </li> <li id="GUID-422C7839-31C2-5555-88D8-8B64D2D7C922"><p> <xref href="GUID-AB95F67F-EAC6-311B-AFE8-A21EFD811DF2.dita"><apiname>RBluetoothPowerSwitch</apiname></xref>  </p> </li> <li id="GUID-D6A543BA-27F0-53A1-A8BD-B1B358FF2850"><p> <xref href="GUID-A5B36AF0-D335-3627-9142-27860325DE1F.dita"><apiname>RHCIDirectAccess</apiname></xref>  </p> </li> </ul> </li> </ol> <p><b>Audio / Video library</b> </p> <p>The Bluetooth Audio / Video library provides API classes to configure a system as defined by the AV profile. </p> <table id="GUID-23E688FF-FF72-57B5-8553-FC65C854F04C"><tgroup cols="1"><colspec colname="col0"/><thead><row><entry>DLL</entry> </row> <row><entry> Library </entry> </row> <row><entry> Profile </entry> </row> <row><entry> Protocol </entry> </row> </thead> <tbody><row><entry><p> <filepath>bluetoothav.dll</filepath>  </p> </entry> </row> <row><entry><p> <filepath>bluetoothav.lib</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-7251B0E5-D6B1-524B-9714-6A469F8E1CB3">AVRCP</xref> and <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-3ABC26C2-D65A-5577-B9B2-0A613D48D49B">GAVDP</xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-7640F878-2D99-52C8-ACBE-8B77A714E081.dita#GUID-7640F878-2D99-52C8-ACBE-8B77A714E081/GUID-306539D4-B048-5A73-8ABF-A2617462ACDC">AVCTP</xref> and <xref href="GUID-7640F878-2D99-52C8-ACBE-8B77A714E081.dita#GUID-7640F878-2D99-52C8-ACBE-8B77A714E081/GUID-9AED70E1-E5B5-537C-ADB6-BEDB7F798D99">AVDTP</xref>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>Audio / Video library namespaces </b> </p> <p>The Bluetooth AV library provides the following namespaces: </p> <ul><li id="GUID-C44FB716-D52A-5C0E-A65B-281F10F141C6"><p> <xref href="GUID-5BC30072-02EC-30DA-A698-965AE4AB5A67.dita"><apiname>SymbianAvctp</apiname></xref>  </p> </li> <li id="GUID-C7F8DD0E-63B4-5EEB-A9A4-43F1CF8CD480"><p> <xref href="GUID-1A71EE7B-8A52-3903-A8F7-DBA5550A5E49.dita"><apiname>SymbianBluetoothAV</apiname></xref>  </p> </li> <li id="GUID-89567141-EAE2-5EFB-B0F9-0679CD9C6A65"><p> <xref href="GUID-DA7F0412-14E2-3E44-9D2C-FC5913FEB056.dita"><apiname>SymbianSBC</apiname></xref>  </p> </li> </ul> </section> <section><title>Typical uses</title> <p>We will look at common tasks associated with some of the Bluetooth User APIs here. </p> <p><b>Task backgrounder</b> </p> <p>Before setting up a Bluetooth connection you need to think about the kind of connection needed and how best to go about setting up the connection. These topics will get you started. </p> <ol id="GUID-59D9340C-3250-5D4F-8F0D-1AFC66A9BD1C"><li id="GUID-F05DEDC5-D414-5B3D-AC44-24E6FCB989CD"><p> <xref href="GUID-58F65411-CF08-5F46-8222-3FDB9E571FCC.dita"> Connecting to Remote Devices</xref>  </p> <p>This is a set of tutorial documents, the contents of which have been split up here according to main functionality grouping. </p> <ul><li id="GUID-68D85D8A-D947-5444-A657-335E9CB373D4"><p> <xref href="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita">Selecting a Remote Device</xref>  </p> <p>Discusses some of the issues about selecting a remote device that should be considered before writing any code. </p> </li> </ul> </li> </ol> <p><b>Socket tasks</b> </p> <p>The following tutorial guides deal mainly with sockets. </p> <ol id="GUID-9CF35DD6-055D-5F26-ADF3-CC5C9DCDA514"><li id="GUID-27B6B551-B004-5D6D-9A18-2A4BAF21AF19"><p> <b>Connecting to Remote Devices</b>  </p> <ul><li id="GUID-1761A972-2C81-56E9-80EB-35F666E11200"><p> <xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring About Remote Devices</xref>  </p> <p>This tutorial shows you how to create a Bluetooth socket, make an inquiry for a remote device address and establish a connection to the remote device. </p> </li> </ul> </li> <li id="GUID-5D33C242-D8DA-59E6-9D47-0BF9AD8FEB92"><p> <xref href="GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita">Listening for Incoming Bluetooth Connections</xref>  </p> <p>This tutorial shows you how to set up a Bluetooth socket to listen for a connect attempt by remote devices. </p> </li> </ol> <p><b>Notifier tasks</b> </p> <p>Notifiers are used to manage aspects of a Bluetooth connection. </p> <ol id="GUID-14C342DA-7EAC-5479-831D-B12141AF6D1E"><li id="GUID-12B970D9-57B0-5621-A79E-25E540FF1DEC"><p> <b>Connecting to Remote Devices</b>  </p> <ul><li id="GUID-70CE1084-5ED6-540C-947C-43BB35D55E06"><p> <xref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita">Connecting and Transferring Data to a Remote Device</xref>  </p> <p>This tutorial shows you how to work with a remote device over Bluetooth once the connection is established. </p> </li> </ul> </li> </ol> <p><b>Utility tasks</b> </p> <p>These tasks show you how to do things like configure a local or remote device, access protocol level data and send HCI commands. </p> <ol id="GUID-7548657E-2617-55FD-B707-1008656F58CE"><li id="GUID-BBBB4630-3486-5407-9DD2-8DB92552562D"><p> <b>Connecting to Remote Devices</b>  </p> <ul><li id="GUID-EBF38981-0A1B-5EA1-AD62-506DFB171E3B"><p> <xref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita">Inquiring About Services on a Remote Device</xref>  </p> <p>This tutorial shows you how to inspect remote devices for suitability before connecting to them. </p> </li> <li id="GUID-928A85EC-A947-5A6D-A21D-3ED175769A9C"><p> <xref href="GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita">Processing an Extended Inquiry Response</xref>  </p> <p>This tutorial shows you how to retrieve and process the data from a Bluetooth Extended Inquiry Response (EIR). </p> </li> <li id="GUID-54DEF2FF-C003-5E36-8EB8-930BDE5E876F"><p> <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">Using Security on Outgoing Sockets </xref>  </p> <p>This tutorial shows you how to configure the Bluetooth sockets for authentication or encryption based security. </p> </li> </ul> </li> <li id="GUID-9D6FF0EE-7B9E-5618-B3FE-00625C2BFDDC"><p> <xref href="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita">Handling the Local Device Name</xref>  </p> <p>This code shows you how to set and get the local device name. </p> </li> <li id="GUID-FFF19593-1341-5FC0-BFCC-C2EDC4723B91"><p> <xref href="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita">Performing Low-level Configuration</xref>  </p> <p>This tutorial introduces you to HCI, L2CAP and RFCOMM commands and options and shows you how to read the Class of device attribute on an L2CAP socket. </p> </li> <li id="GUID-BFD12613-7CCC-5CAA-B092-D132517016CF"><p> <xref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita">Debugging the Host Controller</xref>  </p> <p>This tutorial shows you how to issue vendor specific HCI commands via the stack. </p> </li> <li id="GUID-EBC45771-E3EA-5A94-BACE-22FF731D1700"><p> <xref href="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita">Disconnecting ACL links</xref>  </p> <p>This tutorial shows you how to drop a remote device from a connection while leaving the socket up. </p> </li> </ol> <p><b>Audio / Video tasks</b> </p> <p>Currently there are no tutorials for the Audio / Video profiles. </p> </section> </conbody><related-links><link href="GUID-7F2C1C45-43FA-5F19-81E3-4DBC0328E4A7.dita"><linktext>Bluetooth Sockets
+                Overview</linktext> </link> <link href="GUID-F2A793F1-A5B5-526B-B147-771D440B13A2.dita"><linktext>Bluetooth Extended Inquiry
+                Response</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e256679_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E522208-E8ED-5E95-946C-5D87CF303F1D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5E522208-E8ED-5E95-946C-5D87CF303F1D" xml:lang="en"><title>Storing
+Messages in SQL Database</title><shortdesc>This document explains how to define the header structure of messages
+before storing them in the SQL database and lists the advantages of doing
+so. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-FC18D7D2-4B90-548F-A3C7-AAA32DEAB058"><title>Header
+structure</title> <p>The header structure of messages is specific to each
+Message Type Module (MTM). The Messaging framework provides a generic interface
+to store and access the header information. </p> <p>MTM developers use the <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname>CMsvHeaderStore</apiname></xref> API to create a specific
+header table and specify their message header structure to the Message Server. </p> <p>The <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname>CMsvHeaderStore::CreateStoreL()</apiname></xref> function
+creates a header table. Before creating a header table for your MTM, you should
+check whether the table already exists, by calling the <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname>DoesStoreExistsL()</apiname></xref> function. </p> <p> <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname> TCommonHeaderField</apiname></xref> is the enumeration
+defining the following standard message header fields: </p> <ul>
+<li id="GUID-B3C53A00-1430-57DB-BD3C-F0F63C105E87"><p> <codeph>EFrom</codeph> –
+‘From’ field of the message header </p> </li>
+<li id="GUID-44C7345E-911E-5392-ACC4-D3B6A6F15D78"><p> <codeph>EBCC</codeph> –
+‘BCC’ field of the message header </p> </li>
+<li id="GUID-45F46F10-9922-5646-8A4B-F00759B1BE72"><p> <codeph>ETo</codeph> –
+‘To’ field of the message header </p> </li>
+<li id="GUID-5F7CA59A-CD5F-573C-91A0-148442CCCC5A"><p> <codeph>ECC</codeph> –
+‘CC’ field of the message header. </p> </li>
+<li id="GUID-CBEE41C2-0197-533D-AD0B-A76EC2506FE3"><p> <codeph>ESubject</codeph> –
+‘Subject’ field of the message header. </p> </li>
+</ul> <p>To add specific fields to the header table, call the <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname>AddFieldL()</apiname></xref> function. </p> <p> <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname>CEmailAccounts</apiname></xref> is the API provided by the
+email client MTM. This class creates, loads, saves and deletes email accounts.
+When creating the email account, the client MTM has to provide the header
+structure through the <xref href="GUID-0D95F395-B164-36C7-B745-177DDC8F17C5.dita"><apiname>CMsvHeaderStore</apiname></xref> API
+to pass to the Messaging framework. The framework will then create the header
+for the account. </p> </section>
+<section><title>Advantages of SQL message storage</title> <p>The message headers
+are stored in an SQL database, which provides the following advantages: </p> <ul>
+<li id="GUID-A1C20DCD-625E-5732-85E9-082FD488D398"><p>robustness of mail storage </p> </li>
+<li id="GUID-527ED804-E6E3-5833-BB10-EDD5E5D2EC81"><p>quick processing of
+the frequently-required header data </p> </li>
+<li id="GUID-E5E62B12-07EA-58A1-BC8A-389C17F43A21"><p>support for search-sort
+operations </p> </li>
+<li id="GUID-39CB6C7D-AA08-5F7D-BC8B-ACCE227D6C5F"><p>increased performance
+of the Message Server. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-9A3E0279-4F87-594D-A987-66DC77F408A0.dita"><linktext>Creating
+and Reading Email Messages in Chunks</linktext></link>
+<link href="GUID-6FE94423-9563-5F31-95EB-504479144B05.dita"><linktext>Storing and
+Restoring Email Messages in                 Chunks</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E6B86D0-8C9D-58E9-83EC-F76DC2A8E7B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5E6B86D0-8C9D-58E9-83EC-F76DC2A8E7B6" xml:lang="en"><title>Plug-in Framework Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Plug-in framework has client-server architecture. Clients of the plug-in framework use the C++ interface provided by that framework. The interface definition promises services to the client and the interface implementation provides the services promised by the interface. The Platform Security Architecture ensures security in using the plug-in framework.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E7A1041-B0E1-47E3-A3BF-6C9AE221B98F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-5E7A1041-B0E1-47E3-A3BF-6C9AE221B98F" xml:lang="en"><title>Request
+for conversions</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Conversions can be done in a single step or in multiple
+steps.</p><p/><p><b>Single step</b></p><p>To convert an entire file or
+stream in a single step, use <codeph>CConverterBase2::ConvertL()</codeph> and <codeph>CConverterBase2::ConvertObjectL()</codeph> respectively.</p><p>The following code snippet converts the contents of <filepath>c:\private\12345678\file1</filepath> and
+places the output in <filepath>c:\private\12345678\file2</filepath>.</p><codeblock xml:space="preserve">_LIT(KFromFile, "c:\\private\\12345678\\file1");
+_LIT(KToFile, "c:\\private\\12345678\\file2");
+converter-&gt;ConvertL(KFromFile, KToFile, NULL);
+</codeblock><p/><p><b>Multiple steps</b></p><p>As the conversion process
+can take a long time, you can divide the process into multiple steps. To do
+this:</p><ol>
+<li id="GUID-6D2816BF-06ED-44B1-B309-F4BCAAE6377A"><p>Call <codeph>CConverterBase2::ConvertAL()</codeph> (files)
+or <codeph>CConverterBase2::ConvertObjectAL()</codeph> (streams) to prepare
+the converter to convert.</p></li>
+<li id="GUID-8D18EDEE-2200-4BF4-8D87-B80E95863A6D"><p>Call <codeph>CConverterBase2::DoConvertL()</codeph> until
+it returns true.</p></li>
+</ol><p>The following example converts the contents of <filepath>c:\private\12345678\file1</filepath> and
+places the output in <filepath>c:\private\12345678\file2</filepath> in multiple
+steps. It assumes that conversion takes place within an active object, <codeph>CMyActive</codeph>,
+which does a conversion step in the <codeph>RunL()</codeph> function and reactivates
+the object if conversion is not complete.</p><codeblock xml:space="preserve">void CMyActive::StartConverting()
+    {
+    _LIT( KFromFile, "c:\\private\\12345678\\file1" );
+    _LIT( KToFile, "c:\\private\\12345678\\file2" );
+    converter-&gt;ConvertAL( KFromFile, KToFile, NULL );
+    User::RequestComplete( iStatus,KErrNone );
+    SetActive();
+    }
+void CMyActive::RunL()
+    {
+    if (DoConvertL())
+        {
+        User::RequestComplete( iStatus,KErrNone );
+        SetActive();
+        }
+    else
+        {
+        // Handle completed conversion
+        }
+    }
+</codeblock><p><b>NOTE</b>: After using the converter, delete the converter
+and the converter list. The converter architecture unloads the converter DLLs
+that were loaded.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107" xml:lang="en"><title>Index</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Messaging Server maintains an index entry in memory. A copy of the index
+entry of all message types is stored in the SQL database, so that it can be
+restored in the event of a system reset or Messaging Server failure. </p>
+<p>Some fields only apply to particular types of entry (such as messages or
+services); other fields can be interpreted differently for different entry
+types. </p>
+<section id="GUID-10265557-F31B-50B3-A955-A548A5A78D7B"><title>Operating with
+the SQL database</title> <p>The SQL database is used to store each <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> (index
+entry) as a row of an SQL table in the SQL database. It caches entries, and
+maintains the most recently accessed entries in the RAM. Entries are cached
+in the RAM, and are loaded only when required. The RAM usage is controlled
+by emptying the oldest entry in the cache when it is full. For more information
+on caching, see <xref href="GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita">Caching</xref>.
+The following illustration shows the architecture of the Message Server with
+the SQL database. </p> <fig id="GUID-57F87249-8F4F-59B4-902C-2A577A120F1A">
+<title>              Message Server architecture with the SQL database   
+        </title>
+<image href="GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e255697_href.png" placement="inline"/>
+</fig><note> Write operations like updating, creating and deleting entries
+require disk operation to retrieve <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> from database,
+because the entry cache is always in synchronisation with the corresponding
+entry in the database.</note> <p><b>Advantages</b> </p> <p>The following are
+the advantages of using the SQL database to store index entries: </p> <ul>
+<li id="GUID-49050952-7EB4-52A9-BEB3-0D1F467BFD42"><p>Reduces the amount of
+RAM used by messaging, as the message the index file is not used. </p> </li>
+<li id="GUID-AE0A5FA5-4588-5C28-A261-8ADD8917D56B"><p>Enables more messages
+to be stored on the device, as the number of messages stored is not restricted
+to the amount of RAM available to store the message index file. </p> </li>
+<li id="GUID-565D30B2-9249-5C9D-9DFD-B67C83BFAC35"><p>Enables controlled usage
+of RAM, as index entries are loaded on a need basis. </p> </li>
+<li id="GUID-E5CC0C68-A23F-5F99-BFBB-1AD1A3775454"><p>Eliminates the possibility
+of the message index file getting damaged and messages stored on the device
+getting deleted. </p> </li>
+<li id="GUID-148420E8-C23D-5678-8870-B8AA1CD8ED15"><p>Provides advanced search
+and sort capabilities for searching messages. </p> </li>
+<li id="GUID-0E1A2485-A90C-565B-B927-487EE3FB7E4C"><p>Accesses and manages
+message entries on one or more drives at the same time. </p> </li>
+</ul> </section>
+<section id="GUID-887B217A-0344-5764-800A-CD31481B1493"><title>Index fields</title> <p>The
+following information is stored for each index entry. Some fields only apply
+to particular types of entry, such as, messages or services; other fields
+can be interpreted differently for different entry types. </p> <table id="GUID-B0A760AE-DD82-56E5-A826-7AA0D4F522CD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Attachment flag </p> </entry>
+<entry><p>Indicates that the message has an attachment </p> </entry>
+</row>
+<row>
+<entry><p>BIO </p> </entry>
+<entry><p><xref href="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita">BIO message</xref> type </p> </entry>
+</row>
+<row>
+<entry><p>Complete flag </p> </entry>
+<entry><p>Indicates that the message is complete (for example download has
+completed. </p> </entry>
+</row>
+<row>
+<entry><p>Connected flag </p> </entry>
+<entry><p>For a service: indicates whether it is currently connected to a
+remote server </p> </entry>
+</row>
+<row>
+<entry><p>Deleted flag </p> </entry>
+<entry><p>Indicates that the entry has been deleted. The entry is not removed
+until any PC synchronisation tools have been informed of the deletion. </p> </entry>
+</row>
+<row>
+<entry><p>Description </p> </entry>
+<entry><p>A text string, usually giving the subject of the message </p> </entry>
+</row>
+<row>
+<entry><p>Details </p> </entry>
+<entry><p>A text string, as follows: </p> <p>Message: For received messages,
+this is the sender; for outgoing messages, it is the recipient </p> <p>Attachment:
+The name of the attachment </p> <p>Folder: The name of the folder </p> <p>Service:
+The name of the service </p> </entry>
+</row>
+<row>
+<entry><p>Error </p> </entry>
+<entry><p>A system-wide or MTM-specific error code </p> </entry>
+</row>
+<row>
+<entry><p>Flag </p> </entry>
+<entry><p>Use </p> </entry>
+</row>
+<row>
+<entry><p>Failed flag </p> </entry>
+<entry><p>For an outgoing message: indicates that sending failed </p> </entry>
+</row>
+<row>
+<entry><p>Identifier </p> </entry>
+<entry><p>An integer that uniquely identifies the entry in the Index </p> </entry>
+</row>
+<row>
+<entry><p>In preparation </p> </entry>
+<entry><p>Entry deleted if server restarts </p> </entry>
+</row>
+<row>
+<entry><p>MTM </p> </entry>
+<entry><p>A unique identifier specifying the MTM associated with the entry </p> </entry>
+</row>
+<row>
+<entry><p>MTM Data </p> </entry>
+<entry><p>Three integer fields for MTM-specific use </p> </entry>
+</row>
+<row>
+<entry><p>Multiple Recipients flag </p> </entry>
+<entry><p>Indicates the message has multiple recipients that require separate
+transmissions (for example, a fax going to two people) </p> </entry>
+</row>
+<row>
+<entry><p>New flag </p> </entry>
+<entry><p>Indicates a new message in a folder </p> </entry>
+</row>
+<row>
+<entry><p>Owner flag </p> </entry>
+<entry><p>Indicates that the entry owns other entries (that it is a parent) </p> </entry>
+</row>
+<row>
+<entry><p>Parent </p> </entry>
+<entry><p>An integer giving the identifier of the entry’s parent </p> </entry>
+</row>
+<row>
+<entry><p>Priority </p> </entry>
+<entry><p>An integer giving the message priority </p> </entry>
+</row>
+<row>
+<entry><p>Read flag </p> </entry>
+<entry><p>Indicates that a message has been read </p> </entry>
+</row>
+<row>
+<entry><p>Read Only flag </p> </entry>
+<entry><p>Indicates that the entry is read-only </p> </entry>
+</row>
+<row>
+<entry><p>Related folder </p> </entry>
+<entry><p>The identifier of a target folder for copying or moving entries </p> </entry>
+</row>
+<row>
+<entry><p>Sending state </p> </entry>
+<entry><p>Describes the state the message is in, for example "Sending", "Failed"
+and "Sent" </p> </entry>
+</row>
+<row>
+<entry><p>Service </p> </entry>
+<entry><p>The identifier of the service by which the message is to be sent
+or from which it was received </p> </entry>
+</row>
+<row>
+<entry><p>Size </p> </entry>
+<entry><p>An integer giving the size of the message </p> </entry>
+</row>
+<row>
+<entry><p>Standard Folder flag </p> </entry>
+<entry><p>Identifies standard folders so that they can be properly sorted
+and stops them being changed/deleted </p> </entry>
+</row>
+<row>
+<entry><p>Time </p> </entry>
+<entry><p>The time when the message was last edited, sent, or received. Includes
+date. </p> </entry>
+</row>
+<row>
+<entry><p>Type </p> </entry>
+<entry><p>A unique identifier giving the type (service, folder, message, and
+attachment) of the entry </p> </entry>
+</row>
+<row>
+<entry><p>Visibility flag </p> </entry>
+<entry><p>Indicates the intended visibility of the entry to users of message
+client applications </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5E8C5D5C-8B84-4126-A8A8-F61F7DA0AD32_d0e58746_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5E95D090-582E-536A-AE93-8C5312618E76.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5E95D090-582E-536A-AE93-8C5312618E76" xml:lang="en"><title>Line and Call
+Status Tutorial</title><shortdesc>This tutorial describes how the client applications can retrieve
+the call and line information from the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p>The telephony application for application can be used to retrieve the information
+about different types of lines like voice, data and fax. The methods of the
+CTelephony class are used to retrieve the information. The client applications
+can get simple line status for data and fax calls and for voice calls more
+detailed information is available. This tutorial describes the different types
+of information that can be retrieved by the client applications. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8"><title>Stores Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides structured data storage, using networks of streams.</p> </section> <section><title>Architectural relationships</title> <p>A stream is a representation of a data structure (such as an object) as a sequence of bytes. Structures as complex as most applications require multiple streams to store their state. This is termed a store. Stream types that work with stores are provided by the Store Streams API. </p> <p>The Stores API defines both base classes that define store abstractions without specifying the storage medium, and some concrete store types. The File Stores API defines further concrete stores, which use file storage. </p> <p>Concrete store types do not have to provides all the stream manipulation functionality defined by the base class interfaces: for example, direct file stores do not support individual deletion of streams within a store. </p> <p>Stores are integrated with the application architecture as defined in the Uikon Core API. That expects file-based and embeddable applications to handle their data storage through stores. </p> </section> <section><title>Description</title> <p>The API has five key concepts: stream store base, persistent store base, embedded store, memory store, and dictionary store base and streams.</p> <p><b>Stream store base</b> </p> <p>This defines an interface for streams to be added and deleted to a store, a commit/revert mechanism, and space compaction and reclamation. Stores return a stream ID when a stream is created. A particular stream can be opened by specifying its ID. </p> <p>Some objects can save and restore their state to and from a store. It is conventional to implement functions named <codeph>StoreL()</codeph> and <codeph>RestoreL()</codeph> for these purposes. The most important case of this is the application document class (<codeph>CEikDocument</codeph>), which can be implemented to store and restore an application document. </p> <p>The stream store base class is <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>.</p> <p><b>Persistent store base</b> </p> <p>Most store types require that the store persists beyond the lifetime of the application that created it. The persistent store base extends the stream store base to provide this. In particular it provides:</p> <p>a root stream, from which all other streams within the store can be found</p> <p>open and close store functions</p> <p>The persistent store base class is <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>.</p> <p><b>Embedded store</b> </p> <p>An embedded store can itself be stored as a stream in another store. They are used to embed application documents in other application documents. Once written, streams in the store cannot be modified: the store must be deleted and rewritten in its entirety. </p> <p>The embedded store is a concrete type, derived from <xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref>, and is provided by <xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref>.</p> <p><b>Memory store</b> </p> <p>A memory store resides in memory and exists only for the life of the store object. They can be used for transient complex dynamic structures such as undo buffers.</p> <p>The memory store is a concrete type, derived from <xref href="GUID-30726D8E-E18D-3A3A-8EFB-CCA4F04C984D.dita"><apiname>CStreamStore</apiname></xref>, and is provided by <xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref>.</p> <p><b>Dictionary store base and streams</b> </p> <p>A dictionary store contains a sequence of streams, each of which is accessed using a UID, rather than a simple stream ID. Dictionary stores are used by the application architecture to handle <filepath>.ini</filepath> files for applications. </p> <p>The dictionary store base class is <xref href="GUID-9899DA2C-DB1B-3D67-8719-B7E13658B4D7.dita"><apiname>CDictionaryStore</apiname></xref>. Specialised stream types, <xref href="GUID-F3322968-F922-3676-9BDD-611089C10D98.dita"><apiname>RDictionaryReadStream</apiname></xref> and <xref href="GUID-C8A4BDE0-9F00-376E-9BA3-BAC539800D17.dita"><apiname>RDictionaryWriteStream</apiname></xref>, are provided for use with dictionary stores.</p> </section> <section><title>See also</title> <p><xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores Overview</xref> </p> <p><xref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita">Store Streams Overview</xref> </p> <p><xref href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita">Streaming Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5EBA3C03-2E4E-5DBA-BB5B-0D40DAB3C39B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5EBA3C03-2E4E-5DBA-BB5B-0D40DAB3C39B" xml:lang="en"><title>Two Phase Construction</title><shortdesc>This document introduces two phase construction.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5EC09CBB-9EDC-549C-9C4D-036261BE8A4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5EC09CBB-9EDC-549C-9C4D-036261BE8A4B" xml:lang="en"><title>MIDI Client Library Tutorials</title><shortdesc>This section describes how to use the MIDI Client library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-74FB4D67-ECCC-51DE-9F9F-6D3B43E01179.dita"><linktext>MIDI Client
+  Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5F1E5D73-27B5-5C08-848D-361AC2F15B96.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5F1E5D73-27B5-5C08-848D-361AC2F15B96" xml:lang="en"><title>Concepts</title><shortdesc>This section describes the TCP/IP concepts. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5F3B814F-30B2-5325-A83F-A48ACCF095EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5F3B814F-30B2-5325-A83F-A48ACCF095EB"><title>Database compaction</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When a File-store database is constructed using the <codeph>RDbNamedDatabase</codeph> interface, there is no access to the underlying store in order to compact it and recover any free space for re-use.</p> <p>The <codeph>RDbDatabase</codeph> abstract base class, however, supports a compaction interface, the <codeph>Compact()</codeph> member function. The class also offers a complementary interface, the <codeph>UpdateStats()</codeph> and <codeph>Size()</codeph> member functions, which calculate and report size and usage information.</p> <p>Incremental forms of these functions are also offered by the <codeph>RDbIncremental</codeph> class.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5F4510C9-5B16-593A-A225-37606800915B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5F4510C9-5B16-593A-A225-37606800915B"><title>Controlling Video Playback</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to control video playback. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to use the video player to control video playback. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video player utility is used to open, play, and obtain information from sampled video data. This functionality is implemented by the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> class. The video data can be supplied either in a file, a descriptor or a URL. </p> <p>The sequence diagram below explains the different functionalities of the Video Player Utility: </p> <fig id="GUID-2EA17DB0-6634-5E49-BB86-01C42C1135FC"><title>
+                Video Player sequence diagram 
+             </title> <image href="GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e292804_href.png" placement="inline"/></fig> </section> <section><title>Using Video Player </title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-CAF49972-CFDE-5061-9218-31E38BC81B6D"><p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita#GUID-5F4510C9-5B16-593A-A225-37606800915B/GUID-B8EAAD02-FBDF-5C9D-B29E-0256FE85BEFC">Play Video Clips</xref>  </p> </li> <li id="GUID-6BAF2C1B-8A15-57D3-9DC0-A29A640AFFBF"><p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita#GUID-5F4510C9-5B16-593A-A225-37606800915B/GUID-FD4809DF-3F92-528D-856E-40E1F468B44E">Get Current Frame</xref>  </p> </li> </ul> <p id="GUID-B8EAAD02-FBDF-5C9D-B29E-0256FE85BEFC"><b>Playing Video Clips</b> </p> <p>The high level steps to play video clips are shown here: </p> <ol id="GUID-7B98B85D-2B14-5613-9B12-B804B64F9AC6"><li id="GUID-101DA10D-4871-596C-9B70-F5A7465AA466"><p>After configuring the properties, the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-A9DCC4EB-B4B3-3AF4-B78C-DC3531A32DCC"><apiname>CVideoPlayerUtility::Play()</apiname></xref> function is called for the video clip to be played. </p> </li> <li id="GUID-99101893-33E0-5C2D-981C-FEF63EC19126"><p>The play can be paused for a small duration using <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-CCF5BF0E-BD93-34AC-812E-443ECD07FE26"><apiname>CVideoPlayerUtility::PauseL()</apiname></xref> and later resumed by calling <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-A9DCC4EB-B4B3-3AF4-B78C-DC3531A32DCC"><apiname>CVideoPlayerUtility::Play()</apiname></xref> function once again. </p> </li> <li id="GUID-25191728-63D1-5479-8B60-3B047E9FAD80"><p>To halt the video play <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-C103A911-AF93-3350-B731-C186A279F1DC"><apiname>CVideoPlayerUtility::Stop()</apiname></xref> is called. </p> </li> <li id="GUID-950B9AA4-E72B-5FCD-91EB-623A98E290E2"><p>In order to unload all related controllers and return, use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-C30FFC28-BA6E-3467-9DE7-EE0FF6202E26"><apiname>CVideoPlayerUtility::Close()</apiname></xref>. </p> </li> </ol> <p>These high level steps are shown in the following example code: </p> <codeblock id="GUID-6CC6023A-FBFF-549B-BE29-16AF112D2BB3" xml:space="preserve">void CPlayVideo::Play() //Starts playback of the video clip
+    {
+    iVideoUtility-&gt;Play();
+    } 
+
+void CPlayVideo::PauseL() //Call to this function will maintain the current position
+                         //playback can be resumed by calling Play function again
+    {
+    TRAPD(err,iVideoUtility-&gt;PauseL());
+    } 
+
+TInt CPlayVideo::Stop() //Stops playing
+    {
+    TInt err = iVideoUtility-&gt;Stop();
+          return err;
+    } </codeblock> <p> <b>Note</b>: You must call the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B4FB00AA-A85B-3A3F-91BE-C5347462BA95"><apiname>CVideoPlayerUtility::Prepare()</apiname></xref> function, before calling any of the functions used in the above given code. </p> <p id="GUID-FD4809DF-3F92-528D-856E-40E1F468B44E"><b>Getting the Current Frame</b> </p> <p>The high level steps to get the current frame are shown here: </p> <ol id="GUID-20183DA8-8420-55C2-BE57-41F22A7E8E72"><li id="GUID-E362BBDA-AAF1-549C-AC69-B1CC6E451316"><p>To get the video frame currently being played, use the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F548125E-6CCC-3E60-A3CC-34EBB7A2ABAE"><apiname>CVideoPlayerUtility::GetFrameL()</apiname></xref> function. </p> <codeblock id="GUID-CB83EA9D-8512-57C6-ADA3-2C0D9C0E1B25" xml:space="preserve">void CPlayVideo::GetFrameL(TDisplayMode aDisplayMode) //Returns the current frame
+    {
+    iVideoUtility-&gt;GetFrameL(aDisplayMode);
+    } </codeblock> </li> <li id="GUID-EB7BB8CB-94F7-5399-9296-A96F6065B52B"><p>The current frame is sent to the client asynchronously via the <xref href="GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9.dita#GUID-4D07E7B5-AFDD-3D55-8EB6-EDAB61F8C7F9/GUID-7CCF35C6-DEA8-3E9B-B55C-AE236E4AB63E"><apiname>MVideoPlayerUtilityObserver::MvpuoFrameReady()</apiname></xref> callback function. </p> </li> </ol> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5F5F9DF5-E08E-47F9-B35C-E07180524864_d0e43117_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5F641F7A-AEAA-5C3E-9179-C3707F10E6DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-5F641F7A-AEAA-5C3E-9179-C3707F10E6DC"><title>Starting and Finishing Transactions: Tutorial</title><shortdesc>This topic shows you how to start, finish and roll back a transaction with the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-17B4987D-BD5C-5CD8-8E51-251431BD4E70"><p>Before you start, you must understand: </p> <ul><li id="GUID-CE226134-308A-5B1C-BE3F-8AD1976CA1F0"><p>the general concept of the Comms Database </p> </li> <li id="GUID-5616BB6A-1FAE-56C3-B996-6AA7A1D41A75"><p>the specific concept of Comms Database Transactions </p> </li> <li id="GUID-F546E315-A6F2-5612-9DB2-66C6037E0FC3"><p>how to write and build application code to run on Symbian OS </p> </li> </ul> </prereq> <context id="GUID-47D01F8A-228E-5D1B-8764-13AC73E99950"><p>A transaction is a sequence of read and write operations. In a transaction all operations must be successful to make sure of the integrity of the data. </p> <p>A tool or application must mark the start of a transaction. The tool or application must also mark the end of a transaction. </p> <p>A transaction ends normally or the transaction is rolled back. A transaction is rolled back when one of the read or write operations fails. Other events can cause the tool or application to abandon the transaction. Other events depend on the purpose of the tool or application. </p> <p>Create a session with the Comms Database before you start a transaction. </p> <p>There are many ways to implement transactions. The procedure below is one method. The method shows the principle of transactions. The method you use depends on the organisation of your code. </p> </context> <steps id="GUID-012CB103-90DC-54F1-A4B4-512498EBC563"><step id="GUID-1E102596-F9BE-57BD-84A4-4C51BCD8A340"><cmd>Make sure that you have created a session before you start your first transaction. </cmd> </step> <step id="GUID-02951E12-339B-52D2-B42F-4977DC543090"><cmd>Start the transaction before you start the operations that access the database. Commit the transaction if all operations are successful. Rollback the transaction if any operation fails. </cmd> <info>The code uses the functions: <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::OpenTransactionL()</apiname></xref>, <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::CommitTransactionL()</apiname></xref> and <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession::RollbackTransactionL()</apiname></xref>. </info> <stepxmp><codeblock id="GUID-FAD16FB7-AC98-5579-AF89-848633BA7D10" xml:space="preserve">...
+
+// This code fragment assumes that a session with the Comms Database has been created.
+// iDb is a pointer to a CMDBSession object
+
+TInt rc;
+
+TRAP(rc,PerformSequenceOfOperationsL());
+if (!rc)
+    {
+    // Sequence of read and write operations has failed.
+    iDb-&gt;RollbackTransactionL();
+    ...
+    }
+...</codeblock> </stepxmp> <stepxmp><codeblock id="GUID-B7D81AF6-6D77-5CE9-A91A-E8093BA2802E" xml:space="preserve">...
+void PerformSequenceOfOperationsL()
+    {
+    // Start a transaction
+    iDb-&gt;OpenTransactionL();
+    ...
+    // Sequence of read and write operations
+    ...
+    // Commit the changes to the Comms Database. This assumes that
+    // all operations have completed successfully, and no other event has
+    // caused the sequence of operations to be abandoned.
+    iDb-&gt;CommitTransactionL()
+    ...
+    }
+...</codeblock> </stepxmp> </step> </steps> </taskbody><related-links><link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database
+                concepts</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5F749184-C804-41FC-BA81-038783BDC967.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5F749184-C804-41FC-BA81-038783BDC967" xml:lang="en"><title>Resources</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In Symbian mobile application development, resource files are used for
+defining user interface components and visible text. The advantage of using
+resource files include:</p>
+<ul>
+<li><p>making source code shorter and simpler</p></li>
+<li><p>saving memory, because text is loaded only when needed</p>
+</li>
+<li><p>making it easier to implement localization to different language
+groups</p></li>
+</ul>
+<p>A key example of the use of resource files is found in the implementation
+of <xref href="GUID-F3262DF6-39CA-4E96-AD0E-C1FFDE9B0A61.dita">AVKON components</xref>.
+AVKON UI components consist of data structures that are defined in the <xref href="GUID-D76B1001-BAF5-4557-A07E-61065523ECBE.dita">resource files</xref>, and
+then are called from the classes controlling the UI implementation. When UI
+component implementation is split into these two approaches, it means that
+resources can be recompiled, for example for new languages, without having
+to recompile the application code.</p>
+<p>For more information on managing resource files, see:</p>
+<ul>
+<li><p><xref href="GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita">Managing
+resource files</xref></p>
+</li>
+<li><p><xref href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita">Internationalization
+and localization</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5F822B8B-3440-5AA3-998E-B15E929F7A70.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5F822B8B-3440-5AA3-998E-B15E929F7A70" xml:lang="en"><title>Styles</title><shortdesc>Various typographic styles are used throughout the Symbian Developer
+Library. Some styles are used to make text easier to understand, for example
+to highlight code fragments, intended user input, literal filenames, or other
+quoted text; other styles are used to flag restrictions and general applicability
+of text. Link styles are also used for hypertext navigation. Note that reference
+documentation uses a limited range of available styles. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-10E7C08F-7BB2-52FA-B690-20FD1D7AD3C2">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Style</b>  </p> </entry>
+<entry><p> <b>Type</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <systemoutput>File | Open</systemoutput>  </p> </entry>
+<entry><p>Application text and menus. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aVariable</codeph>, <codeph>Push()</codeph>  </p> </entry>
+<entry><p>Code. </p> </entry>
+</row>
+<row>
+<entry><p> <i>note this</i>  </p> </entry>
+<entry><p>Emphasised text containing unusual or surprising information. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>e32std.h</filepath>  </p> </entry>
+<entry><p>Name of a file or directory. </p> </entry>
+</row>
+<row>
+<entry><p> <keyword>toolband</keyword>  </p> </entry>
+<entry><p>A term which is defined in the glossary. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>dir</codeph>  </p> </entry>
+<entry><p>Input text to enter. </p> </entry>
+</row>
+<row>
+<entry><p> <userinput>ALT+A</userinput>  </p> </entry>
+<entry><p>Key names. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NUMED</codeph>  </p> </entry>
+<entry><p>Resource name, resource struct, or resource struct member. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>syntax</codeph>  </p> </entry>
+<entry><p>Syntax element in syntax diagrams and descriptions. </p> </entry>
+</row>
+<row>
+<entry><p> <note>Warning</note>  </p> </entry>
+<entry><p>Warning of an important issue. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5F9E2762-855A-4DE6-A11B-A5F0D51E19D9_d0e42268_href.png has changed
Binary file Symbian3/SDK/Source/GUID-5F9E2762-855A-4DE6-A11B-A5F0D51E19D9_d0e53650_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5FB2141F-8B2F-5DAE-8FDF-58D7351C5848.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-5FB2141F-8B2F-5DAE-8FDF-58D7351C5848"><title> Basic SQL Example: basicsqlexample.h </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A copy of the basicsqlexample.h file for the basic SQL example application. </p> <section><title>Introduction</title> <p>The program class and functions are declared in this file. </p> </section> <section><title>Code</title> <p>Declares the program structure. </p> <codeblock id="GUID-7022074F-62E3-5E4D-B776-C2287F4BAD08" xml:space="preserve">// basicsqlexample.h
+//
+// Copyright (c) Nokia Ltd 2009. All rights reserved.
+//
+
+/**
+@file
+Contains the CBasicSqlExample class.
+*/
+#ifndef __BASICSQLEXAMPLE_H__
+#define __BASICSQLEXAMPLE_H__
+
+#include &lt;e32base.h&gt; 
+/**
+Demonstrates some uses of Symbian OS SQL component.
+ 
+The class demonstrates how to 
+- Create a database
+- Populate a database
+- Query a database
+*/
+class CBasicSqlExample: public CBase
+    {
+public:
+    static CBasicSqlExample* NewLC();
+
+    ~CBasicSqlExample();
+    void ExampleL();
+    
+private:    // Utility/Basic Methods
+    void DoExampleL();
+    CBasicSqlExample();
+    void ConstructL();
+    void Prompt();
+    void Prompt(const TDesC&amp; aText);
+    
+private:    // Example Methods
+    void OpenDatabaseL();
+    void SqlQueryL(const TDesC&amp; aStatement);
+    void CloseDatabase();
+    
+    void DeleteDatabase();
+    void CreateDatabaseL();
+    void PopulateDatabaseL();
+    
+private:
+    RSqlDatabase iPetDb;
+
+    /** Pointer to the console interface */
+    CConsoleBase* iConsole;
+    };
+
+#endif //__BASICSQLEXAMPLE_H__</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5FBA9BB1-94A2-470C-9932-C4255E3774C0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5FBA9BB1-94A2-470C-9932-C4255E3774C0" xml:lang="en"><title>Shared
+Memory between Threads</title><shortdesc>This document describes the shared memory between threads and how
+to avoid race conditions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Shared memory is a method of InterProcess Communication (IPC) where a single
+chunk of memory is shared between two or more processes. It is used to communicate
+between threads within a process or two unrelated processes, allowing both
+to share a given region of memory efficiently. In an SMP system, multiple
+cores are running threads at the same time and not just virtually as in unicore.
+Extra caution is needed to handle memory that shared between multiple threads.</p>
+<p>A thread is the unit of execution within a process. Every time a process
+is initialized, a primary thread is created. For many applications the primary
+thread is the only one that the application requires, however, processes can
+create additional threads. In an SMP system, multiple threads can be executing
+the same (shared) functions simultaneously. Therefore functions need to deal
+with this situation in order to maintain consistency of the system.</p>
+<p>Following are the key concepts to synchronize threads:</p>
+<ul>
+<li><p><b>Mutexes</b> are used to serialize access to a section of re-entrant
+code that cannot be executed concurrently by more than one thread. A mutex
+object only allows one thread into a controlled section, forcing other threads
+which attempt to gain access to that section to wait until the first thread
+has exited from that section. A mutex can be used by threads across any number
+of processes. If a resource is only shared between the threads within the
+same process, it can be more efficient to use a critical section.</p></li>
+</ul>
+<ul>
+<li><p><b>Semaphores</b> restrict the number of simultaneous users of a shared
+resource up to a maximum number. Threads can request access to the resource
+(decrementing the semaphore), and can signal that they have finished using
+the resource (incrementing the semaphore). A thread that requests access to
+a busy resource is put in a waiting state. The semaphore maintains a First
+In First Out (FIFO) queue of such waiting threads. When another thread increments
+the semaphore, the first thread in this queue is resumed.</p></li>
+</ul>
+<ul>
+<li><p><b>Locks</b> are used to synchronize the data between threads in the
+kernel. In SMP, threads are executed in parallel, which means that if locks
+are not applied to the code it could result in a race condition. Race conditions
+lead to system crashes and data corruptions. For more information about locking,
+see <xref href="GUID-16AED228-539F-4BF7-A7FD-9A01FF1A9A84.dita">Locking</xref>.</p></li>
+</ul>
+<p>Shared memory between threads is provided by the following APIs:<table id="GUID-A35DFE73-AE8C-42A9-A76F-4D47B6BAD6EB">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry valign="top"><p>API name</p></entry>
+<entry valign="top"><p>Description</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-29F27759-CC53-36DF-AE92-623F061D6C96.dita"><apiname>TFindThread</apiname></xref></p></entry>
+<entry><p>Searches for threads by pattern matching against the names of thread
+objects.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref></p></entry>
+<entry><p>A handle to a thread. </p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex</apiname></xref></p></entry>
+<entry><p>A handle to a mutex.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-A907C7B1-BD90-3E8F-AEA8-5A634BC98D0D.dita"><apiname>TFindMutex</apiname></xref></p></entry>
+<entry><p>Finds all global mutexes whose full names match a specified pattern.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-AED27A76-3645-3A04-B80D-10473D9C5A27.dita"><apiname>RSemaphore</apiname></xref></p></entry>
+<entry><p>A handle to a semaphore.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-F3ACDC41-31EE-3C32-BE2C-D696B84931CD.dita"><apiname>TFindSemaphore</apiname></xref></p></entry>
+<entry><p>Finds all global semaphores whose full names match a specified pattern.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></p>
+</conbody><related-links>
+<link href="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita"><linktext>Threads And
+Processes Overview</linktext></link>
+<link href="GUID-BA89F4DF-E2F6-5E0B-BF20-F8898FC5D5F8.dita"><linktext>Mutexes Overview</linktext>
+</link>
+<link href="GUID-E865E677-1219-500C-89CF-0A2835B91834.dita"><linktext>Semaphores
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e266838_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A" xml:lang="en"><title>Bluetooth User Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Bluetooth User APIs include all the APIs required to establish a Bluetooth connection. These APIs include Bluetooth Sockets, the Bluetooth Library, Bluetooth Protocols and HCI APIs. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0" xml:lang="en"><title>Resource
+builder tool: epocrc</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p> <filepath>epocrc</filepath> combines the
+actions of passing a resource file through the C++ preprocessor, and then
+compiling it with <filepath>rcomp</filepath>. </p> </section>
+<section id="GUID-B5C61C4D-7AC0-503B-B164-A24C417444FB"><title>Command line
+syntax</title><userinput><cmdname>epocrc </cmdname>[-D<parmname>args</parmname>]
+[-I<parmname>args</parmname>] [-u] [-t<parmname>tmpdir</parmname>] [-uid2 <parmname>uid</parmname>]
+[-uid3 <parmname>uid</parmname>] <parmname>source-file</parmname> [-o<parmname>output-file</parmname>]
+[-h<parmname>header-file</parmname>] </userinput><p><b>Arguments</b> </p> <table id="GUID-34194FD9-B978-51A6-BA9A-BEEBE3649303">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>-D</codeph> <varname>args</varname>  </p> </entry>
+<entry><p>Pass arguments <varname>args</varname> to the preprocessor's -D
+(macro definitions) option. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-I</codeph> <varname>args</varname>  </p> </entry>
+<entry><p>Pass arguments <varname>args</varname> to the preprocessor's -I
+(additional include files path) option. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-u</codeph>  </p> </entry>
+<entry><p>Generate a Unicode resource binary. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-t</codeph> <varname>tmpdir</varname>  </p> </entry>
+<entry><p>Create any temporary files in the directory <varname>tmpdir</varname>. </p> <p>If
+this option is not specified, the current directory is used. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-uid2</codeph>  <varname>uid</varname>  </p> </entry>
+<entry><p>Second UID for the resource file. Specifying either -uid2 or -uid3
+overrides all UIDs specified in the source file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-uid3</codeph>  <varname>uid</varname>  </p> </entry>
+<entry><p>Third UID for the resource file </p> </entry>
+</row>
+<row>
+<entry><p> <varname>source-file</varname>  </p> </entry>
+<entry><p>Name (and path if the file is not in the current directory) of the
+resource file to compile </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-o</codeph> <varname>output-file</varname>  </p> </entry>
+<entry><p>Create data output file <varname>output-file</varname>. If a path
+is not specified, the current directory is used. </p> <p>If this option is
+not specified, no data output file is created. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-h</codeph> <varname>header-file</varname>  </p> </entry>
+<entry><p>Create header output file <varname>header-file</varname>. If a path
+is not specified, the current directory is used. </p> <p>If this option is
+not specified, no header output file is created. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-v</codeph>  </p> </entry>
+<entry><p>Verbose. Displays the command line syntax. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Output files</b> </p> <table id="GUID-A29C41E0-D092-5B1A-A857-B0B8364BB1AA">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <varname>output-file</varname>  </p> </entry>
+<entry><p>Compiled resource data referred to by the application at run-time. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>header-file</varname>  </p> </entry>
+<entry><p>The generated header file defining macro identifiers for referring
+to resources by a resource index </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-014671B6-C19E-528A-984C-D8226375AC5A"><b>epocrc configuration
+file format</b> </p> <p>Apart from the options listed above, you can use the <filepath>epocrc.config</filepath> file
+located at <filepath>epoc32\tools\</filepath> to configure the pre-processor
+and the <codeph>rcomp</codeph> tool. The file is supplied to each Symbian
+platform licensee as they need it, but it may not be present on some platforms. </p> <p>The <filepath>epocrc.config</filepath> file
+contains the following options: </p> <ul>
+<li id="GUID-0E0AE904-D462-5780-898E-95E04AA5884D"><p> <codeph>check_rls_items</codeph>:
+This option can either be set to 0 or 1. If you want to check for the presence
+of localisation comment tags before each RLS item declaration, set it to 1,
+otherwise set it to 0. If there are no localisation comment tags within the
+resource file, it is assumed that localisation is not required for this file. </p> </li>
+<li id="GUID-ABEB6B58-5C5A-5D21-A74C-7B4DFFD1EBC9"><p> <codeph>strict_checking</codeph>:
+This option can either be set to 0 or 1. If you set it to 1, the <codeph>rcomp</codeph> tool
+warns you if the <filepath>rpp</filepath> file contains RLS item declarations
+without the localisation comment tags. If you want to enable this functionality,
+you must set <codeph>check_rls_items</codeph> to 1. </p> </li>
+<li id="GUID-5F0CD403-B332-594A-AAF0-7D7BE11882C1"><p> <codeph>include:</codeph>:
+This option is used to specify files and directories, which need to be passed
+to the C++ pre-processor. File names and directory names must be relative
+to <codeph>EPOCROOT</codeph>. </p> </li>
+</ul><note>  You can comment a line in the <filepath>epocrc.config</filepath> file
+by preceding it by '#'. </note> <p>Here is an example of the <filepath>epocrc.config</filepath> file,
+which enables the <codeph>strict_checking</codeph> and <codeph>check_rls_items</codeph> options,
+and lists the resource headers to be included using the <codeph>include:</codeph> option: </p> <codeblock id="GUID-F02F6D20-6370-5092-A1B8-D4EA475ECAE4" xml:space="preserve"># epocrc.config
+#
+# Copyright (c) 2005 Symbian Ltd.  All rights reserved.
+#
+check_rls_items = 1;
+strict_checking = 1;
+include: epoc32\include\SymbianTags.rh
+include: epoc32\include\SymbainContexts.rh
+</codeblock> </section>
+<section><title>Example</title> <p>The following example compiles the source
+file <filepath>ex.rss</filepath> into the compiled resource file <filepath>ex.rsc</filepath> and
+the header file <filepath>ex.rsg</filepath>. </p> <p><userinput>epocrc -I\symbian\epoc32\include\
+-u ex.rss -oex.rsc -hex.rsg</userinput> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72" xml:lang="en"><title>Singly
+linked lists</title><shortdesc>A singly linked list is one where each element points forwards
+to the next element.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Unlike a doubly linked list, elements do <i>not</i> point back to the previous
+element. The list has an anchor point which points forwards to the first element
+and also has a pointer to the last element.</p>
+<p>Anchor points are always referred to as <i>headers</i>.</p>
+<p>A singly linked list is useful for maintaining a non-circular queue of
+items; for example, a stack.</p>
+<fig id="GUID-8FC485D1-5B95-5B71-94F1-00C78A61F7F0">
+<title>Singly linked list</title>
+<image href="GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e189453_href.png" placement="inline"/>
+</fig>
+<p>Singly linked lists involve the creation and use of the classes:</p>
+<ul>
+<li id="GUID-8D31B03F-8978-5292-BE6E-4D3C0EE62460"><p><codeph>TSglQueLink</codeph> </p> </li>
+<li id="GUID-547C604A-1F01-5FF7-A316-8F09EE9462EC"><p><codeph>TSglQue&lt;class
+T&gt;</codeph> </p> </li>
+<li id="GUID-E567AD7E-DB54-54B9-8C1E-5C9A36B1C927"><p><codeph>TSglQueIter&lt;class
+T</codeph> </p> </li>
+</ul>
+<p>In practice, these classes are almost always used as components of other
+classes.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e113379_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60141F31-6061-5C65-809D-FE7A4F8414F7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-60141F31-6061-5C65-809D-FE7A4F8414F7" xml:lang="en"><title>Setting
+Management Policies</title><shortdesc>A management policy signifies the security check required to perform
+management operations on the key. The management policy associated with the
+key is of type <apiname>TSecurityPolicy</apiname>. The policy can be set to
+check capabilities or the Vendor ID associated with the calling process. The
+calling process should have a <codeph>WriteUserData</codeph> capability. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The following steps explain the process of setting
+a management policy for a key:</p></context>
+<steps id="GUID-2D99C179-7CBA-54C4-9111-1F57B3E26C95">
+<step id="GUID-458FDF48-670D-56B0-9220-E70FA3EB425C"><cmd>Create a file system
+session using an <codeph>RFs</codeph> object. </cmd>
+</step>
+<step id="GUID-1A8A68D1-9928-57A2-B5B7-75CF911DA4CA"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-AF7853D6-1288-55E5-8DC3-7F3862DB70B7"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-62AEB118-FA57-56CF-8C0D-241D1DDD2B30"><cmd/>
+<info>List all keys in the keystore using the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function.
+Retrieve the handle of the key for which the management policy needs to be
+set. </info>
+</step>
+<step id="GUID-677C109A-AFB9-585C-8949-E1F1E046CF24"><cmd/>
+<info>Set the management policy for the key using the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-E5962EE8-9B11-3051-AD85-0F7301E18855"><apiname>CUnifiedKeyStore::SetManagementPolicy()</apiname></xref> function. </info>
+</step>
+</steps>
+<result><p>Management policy is set for the selected key. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+set management policy for a key. </p> <codeblock id="GUID-A8AC1E30-C540-55A9-B12D-C2A46DC8F34A" xml:space="preserve">//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+...
+
+
+// Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+...
+
+
+
+// Retrieve the handle of the key for which management policy has to be set
+TCTKeyAttributeFilter  filter.iUsage = EPKCS15UsageAll;
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the result of the set management policy operation
+keyStore-&gt;List(iKeys, filter, iStatus);
+
+
+...
+
+
+
+// Retrieve the key handle of the appropriate key
+_LIT(KLabel,”keylabel”);
+
+// Select the key with the label you are looking for
+TInt keyIndex;
+for (TInt j = 0; j &lt; iKeys.Count(); j++)
+    {
+    if (iKeys[j]-&gt;Label() == KLabel) 
+        {
+        keyIndex = j;
+        break;
+        }
+    }
+
+
+...
+
+
+
+// Set the management policy
+
+TSecurityPolicy managementPolicy;
+TUint vendorId = 0x70000007;
+TCapability caps[3];
+caps[0] = ECapabilityWriteUserData;
+caps[1] = ECapabilityDRM;
+caps[2] = ECapabilityReadUserData;
+
+managementPolicy = TSecurityPolicy(TSecureId(secureId), caps[0], caps[1], caps[2]);
+keyStore-&gt;SetManagementPolicy(*iKeys, managementPolicy, iStatus);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita"><linktext>Setting Use
+Policies</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6021BE18-3416-55DF-A628-0071024D7586.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6021BE18-3416-55DF-A628-0071024D7586"><title>Video Renderer Resource File</title><shortdesc>The Video Renderer resource file (<filepath>videorenderer.rss</filepath>) provides a list of supported pixel formats and timed mode values for the Video Renderer. <filepath>Videorenderer.rss</filepath> is located in <codeph>mmf/videorenderer/src</codeph>. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Supported formats</title> <p>The Video Renderer needs to know which pixel formats are supported by the <xref href="GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095.dita">Graphics composition engine</xref>. As there is no mechanism for the Video Renderer to query the composition engine, the formats are stored in the resource file. </p> <p>The <codeph>gce_supported_format</codeph> section contains the list of supported formats. To specify support for more colour space formats, simply add them to the <codeph>gce_supported_formats</codeph> section: </p> <codeblock id="GUID-10DD27B8-3D23-5F19-A1FA-F5709EFEE566" xml:space="preserve">/** Pixel format supported by video renderer/composition engine */
+RESOURCE SUPPORTED_FORMATS gce_supported_format
+    {
+    formats =
+        {
+        SUPPORTED_FORMAT
+            {
+            format = EVideoRendererPixelFormatXRGB_4444;
+            },
+            SUPPORTED_FORMAT
+            {
+            format = EVideoRendererPixelFormatRGB_565;
+            },
+            SUPPORTED_FORMAT
+            {
+            format = EVideoRendererPixelFormatXRGB_8888;
+            }
+        };
+    }</codeblock> </section> <section><title>Timer values</title> <p>The <codeph>timer</codeph> section is used when the Video Renderer is running in timed mode. The timer values allow limits to be set on the Video Renderer, such as the maximum delay before skipping a buffer. </p> <codeblock id="GUID-520C920D-A792-5839-A25D-E0CEEECEBBD3" xml:space="preserve">/** Timer values for timed mode*/
+RESOURCE TIMER_INFO timer
+    {
+    default_delay = 15000; // default delay for composition engine to display a buffer
+    max_delay = 0; // max delay allowed before video renderer skips a buffer
+    }</codeblock> </section> </conbody><related-links><link href="GUID-98FBEA7E-78BA-5A64-90D6-4641418003B4.dita"><linktext>Video Renderer Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6025A68F-625B-570A-87D7-2C11E66044D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6025A68F-625B-570A-87D7-2C11E66044D4" xml:lang="en"><title>Build
+FAQ</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This page gives some quick answers to problems and issues you may encounter
+when building code. </p>
+<p><b>Why do applications build to the Symbian Emulator's Z: drive? </b> </p>
+<p>The build tools were originally designed for building ROM-based applications,
+and so assume that applications should be placed in the emulated ROM area
+(i.e. <filepath>epoc32\release\winscw\udeb\ or urel\</filepath>). Third party
+applications intended to loaded on disk are also built to this location, but
+this doesn't mean they can only be installed in ROM or have any other impact
+on them. (Note that your code should not assume that it will be installed
+on any particular drive, as this is choice is best left to the user). </p>
+<p><b>Why does abld makefile give a WARNING: Can't find following headers
+in System Include Path message, even though I export the header(s) in my bld.inf? </b> </p>
+<p>You can specify that headers from your project should be copied into the
+system headers directory, <filepath>epoc32\include</filepath>, by using a <xref href="GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita">prj_exports</xref> statement
+in the <filepath>bld.inf</filepath> file. The header is not actually copied
+though until an <systemoutput>abld export</systemoutput> command, or a command
+that calls this, such as <systemoutput>abld   build</systemoutput> is executed.
+The solution is to call <systemoutput>abld  export</systemoutput> before <codeph>abld
+makefile</codeph>. </p>
+<p><b>What Symbian platform tools can I cause to be invoked through a project
+file keywords? </b> </p>
+<p>The chief purpose of a project (<filepath>.mmp</filepath>) file is to specify
+the source files and options to pass to the appropriate compiler toolchain
+for the platform. In many cases though, you will want to create a number of
+additional, Symbian platform-specific, support files as part of the project
+build. You can invoke the tools to create such files by specifying a number
+of project file keywords: </p>
+<ul>
+<li id="GUID-333315F5-A398-558A-AA84-9D4DBAE692E7"><p><xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start
+resource</xref> to compile resource files </p> </li>
+<li id="GUID-D5B552A6-7FA8-5355-BEA5-1292982FD8F2"><p><xref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita">start
+bitmap</xref> to compile multi-bitmap files. </p> </li>
+</ul>
+<p>Of the other commonly used Symbian platform tools, the project file does
+not specify keywords that invoke the: </p>
+<ul>
+<li id="GUID-9F52256D-11AD-5074-8F33-F3570E32686A"><p><xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">Installation
+File Generator</xref> (<filepath>makesis</filepath>) </p> </li>
+<li id="GUID-905AD8FA-29DE-5DE1-85FA-D22C64658C5A"><p><xref href="GUID-3170F958-137A-5DD5-A6DD-D5474ABECD22.dita">Certification
+Generator</xref> (<filepath>makekeys</filepath>) </p> </li>
+<li id="GUID-DB06BD93-6521-5B4F-BFEB-72235B396200"><p><b>Context
+Sensitive Help Compiler</b> (<filepath>cshlpcmp</filepath>)</p></li>
+</ul>
+<p>Note though you can invoke these, and any other tools, through <xref href="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita">extension
+makefiles</xref>. </p>
+<p><b>What are edll.obj and eexe.obj? </b> </p>
+<p>The build process builds into each <filepath>.exe</filepath> file a small
+object file, <filepath>eexe.lib</filepath>, which contains a small amount
+of code to manage process startup. Similiarly, each DLL has an object file <filepath>edll.lib</filepath> built
+into it. </p>
+<p><b>Why does the build give a message diff: &lt;file-path-and-name&gt;: No
+such file or directory? </b> </p>
+<p>This message appears when building a project's resource or multi-bitmap
+file for the first time. It can be ignored. </p>
+<p><b>Why do I get a LNK2001: unresolved external symbol __chkstk error? </b> </p>
+<p>The program exceeds the stack space available, e.g. by creating a large <codeph>TBuf</codeph> on
+the stack. The solution is to reduce the use of stack space by using the heap
+appropriately. </p>
+<p><b>How can I change the libraries for a project open in an IDE? </b> </p>
+<p>To change a project's libraries, you should edit the <filepath>.mmp</filepath> file's <xref href="GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita">library</xref> statement
+as normal, and then regenerate the IDE workspace using <systemoutput>abld
+makefile</systemoutput>. </p>
+<p><b>Where are the .lib files for ARM debug builds? </b> </p>
+<p>The <filepath>.lib</filepath> files required for ARM debug builds are identical
+to those for release builds, so the build tools use a single copy of the libs
+in the <filepath>urel</filepath> directory. </p>
+<p><b>Why do I get an error from petran when I build for ARM, when the WINS/WINSCW
+build is fine? </b> </p>
+<p> <filepath>petran</filepath> is a tool that is invoked only at the final
+stage of the build process for ARM targets. It will give an error if you build
+a DLL that contains writeable static data. See <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static
+data</xref> for more information. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54" xml:lang="en"><title>Using Client-Server</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6061361C-01F7-5BB1-87E1-46CBF9CCC44C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6061361C-01F7-5BB1-87E1-46CBF9CCC44C" xml:lang="en"><title>Multiple Alarm Notification</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-609A4E83-F074-5A5D-A0DF-A95A7CDC8D2C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-609A4E83-F074-5A5D-A0DF-A95A7CDC8D2C"><title>Pausing and Resuming Audio Play </title><shortdesc>The <codeph>Pause()</codeph> function stops the audio data at the physical sound device without stopping the buffer traffic. If the <codeph>Resume()</codeph> function is supported, you can then use it to continue playing. The buffer traffic continues because the <codeph>Pause()</codeph> function does not pause or terminate the <apiname>MMMFAudioDataSupplier::BufferToBeFilled(MMMFBufferSource *,CMMFBuffer
+        *)</apiname> play data cycle. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps id="GUID-79C12A63-030E-5433-8B96-558DB6A9C094"><step id="GUID-083B073D-5740-55F0-8E3A-C935F4AC5E46"><cmd/><info>Check that the <codeph>Resume()</codeph> function is supported using the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-FF81EF26-C315-395C-99EC-CE54B4FFCAA4"><apiname>CMMFDevSound::IsResumeSupported()</apiname></xref> function. </info> </step> <step id="GUID-65AE2F86-3835-5144-8563-354B917E72A3"><cmd/><info>If the resume function is supported, call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D9C071E1-9F7D-39C5-8B6E-34321A46D3A9"><apiname>CMMFDevSound::Pause()</apiname></xref> function to pause the audio data. </info> </step> <step id="GUID-ECC8B737-E279-5364-A5B6-057C324F0BCD"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-263CCA90-A3AA-31A0-A62B-795E5F988A17"><apiname>CMMFDevSound::Resume()</apiname></xref> function to continue playing the audio data. </info> <info>  Note: It is possible to resume with new audio data rather than the audio data that is paused. To do this call <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-84E08E6A-C435-38AC-98F8-125043BA4971"><apiname>CMMFDevSound::EmptyBuffers()</apiname></xref> before you call <codeph>Resume()</codeph>. </info> </step> </steps> </taskbody><related-links><link href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita"><linktext>Playing
+                Audio</linktext> </link> <link href="GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6.dita"><linktext>Stop Playing
+                Audio</linktext> </link> </related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059-master.png has changed
Binary file Symbian3/SDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e369668_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60B979FB-43BD-480E-8E17-1D3DA2002CB1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-60B979FB-43BD-480E-8E17-1D3DA2002CB1" xml:lang="en"><title>Slider
+pop-up</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Slider pop-up component can be used for situations where a value is
+changed with a slider, for example when changing zoom or volume level. The
+common Slider pop-up component has a set of elements from which to select
+and modify the slider in question, e.g. value ranges, whether to have current
+value as text included, or additional icons related to the slider.</p>
+<p>For application specific slider pop-up the application may define ways
+to open the pop-up. For common pop-up such as Volume Control, ways to open
+the pop-up are defined. The Slider pop-up has default timeout after which
+it disappears, but for good reason this timeout can be overridden by the application. </p>
+<p>Instead of using the pop-up, the application may define the slider to be
+always visible i.e. fixed in the layout. If slider is fixed in the layout,
+the pop-up is not shown.</p>
+<p>The orientation of the slider pop-up can be either horizontal or vertical.
+The orientation and location are always the same across applications, unless
+application uses the slider as fixed in the layout. Value growth direction
+in Slider is always either up or right depending on the Slider orientation
+in the UI. </p>
+<section><title>Using slider pop-ups
+in C++ applications</title><p>The API to use for the slider pop-up is the Slider
+API.</p><p>To use a slider pop-up in your application, create an instance
+of the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html" format="application/java-archive"><codeph>CAknSlider</codeph></xref>.</p><p>Use
+the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#522ccd7bdb0fac6707734578e2d4ed7b" format="application/java-archive"><codeph>CAknSlider::SetValueL()</codeph></xref> to set the slider handle's position. To set the range of acceptable
+values, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#e6e3b16a15f653eb9fc5b207f7852857" format="application/java-archive"><codeph>CAknSlider::SetRange()</codeph></xref>. To set the step size, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#f72ea3d251c686948dfea1dbcf9be170" format="application/java-archive"><codeph>CAknSlider::SetStepSize()</codeph></xref>.</p><p>To set the texts
+for the minimum and maximum values, use the methods <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#0359150c9fd3d2390de7c0dd6f7d6063" format="application/java-archive"><codeph>CAknSlider::SetMinimumTextL()</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#882ca8ea40249fd2636748a116370fed" format="application/java-archive"><codeph>CAknSlider::SetMaximumTextL()</codeph></xref>. </p><p>To enable drag
+events in the slider, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#a3db99850ff68e4a80071de18befdcd1" format="application/java-archive"><codeph>CAknSlider::EnableDrag()</codeph></xref></p><p>To use a custom graphic
+in your slider component, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknSlider.html#6161f69289ee1c7e0f47de8fee21ecee" format="application/java-archive"><codeph>CAknSlider::SetGraphics()</codeph></xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9"><title>Extension makefile targets</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Extension makefiles can be used where certain build steps are required that are not catered for by the generated makefiles. Extension makefiles are makefiles to be run by <filepath>make.exe</filepath> (the GCC make utility) or <filepath>nmake.exe</filepath> (the Microsoft make utility). They must contain certain make targets. During build activities, <filepath>abld</filepath> will call the target corresponding to the build activity that is being carried out. This will then execute whatever commands your makefile specifies for that target. </p> <p>The following table lists the required make targets: </p> <table id="GUID-058134AF-E473-577E-B6E8-6309B859E5D7"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Target</b> </p> </entry> <entry><p> <b>Corresponding abld command</b> </p> </entry> </row> <row><entry><p> <codeph>makmake</codeph> </p> </entry> <entry><p> <codeph>makefile</codeph> </p> </entry> </row> <row><entry><p> <codeph>freeze</codeph> </p> </entry> <entry><p> <codeph>freeze</codeph> </p> </entry> </row> <row><entry><p> <codeph>lib</codeph> </p> </entry> <entry><p> <codeph>library</codeph> </p> </entry> </row> <row><entry><p> <codeph>cleanlib</codeph> </p> </entry> <entry><p> <codeph>tidy</codeph> </p> </entry> </row> <row><entry><p> <codeph>clean</codeph> </p> </entry> <entry><p> <codeph>clean</codeph> </p> </entry> </row> <row><entry><p> <codeph>final</codeph> </p> </entry> <entry><p> <codeph>final</codeph>. This target is provided specifically to allow extension makefiles to execute final commands. </p> </entry> </row> <row><entry><p> <codeph>resource</codeph> </p> </entry> <entry><p> <codeph>resource</codeph> </p> </entry> </row> <row><entry><p> <codeph>bld</codeph> </p> </entry> <entry><p> <codeph>target</codeph> </p> </entry> </row> <row><entry><p> <codeph>savespace</codeph> </p> </entry> <entry><p> <codeph>target -savespace</codeph> </p> </entry> </row> <row><entry><p> <codeph>releasables</codeph> </p> </entry> <entry><p> <codeph>target [-what | -check]</codeph> </p> </entry> </row> </tbody> </tgroup> </table> <p> <i>All</i> targets must be provided in an extension makefile. This should be done even if no commands are listed with a particular target, for the following two reasons: </p> <ul><li id="GUID-5CA8259A-E725-56BC-9A94-F21BDBA5978B"><p>The target will be called, during the build, whether commands are listed or not </p> </li> <li id="GUID-0D4E6BCE-D220-57F5-AB09-4218BE2F7F8E"><p> <filepath>nmake.exe</filepath> /<filepath>make.exe</filepath> will generate an error if the target cannot be found. </p> </li> </ul> <section><title>Simple example</title> <p>An example of a simple extension makefile is given below: </p> <codeblock id="GUID-D7CE4F11-3B2F-5766-A31F-4D3BFD46AB38" xml:space="preserve">MAKMAKE :
+       echo this is an example
+
+FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE : </codeblock> <p>This prints <systemoutput>this is an example</systemoutput> to the console at the makefile construction stage of an <filepath>abld</filepath>, and does nothing for the other targets. </p> <p>Note that: </p> <ul><li id="GUID-C4E2B509-3BF9-55B5-9B31-739A3920839A"><p>You can put multiple targets on the same line, as above. </p> </li> <li id="GUID-31C8B7BD-EC0D-5406-B533-598764B5A1BB"><p>You must have a space or a tab at the start of lines containing target commands. </p> </li> <li id="GUID-E9DACA4B-8C30-535D-B93F-34D9437CD6F0"><p>Commands listed with each target can be calls to any tools or system commands that are available at build-time. </p> </li> </ul> </section> <section><title>Platform-specific commands example</title> <p>If different commands are required for the same target for different platforms, special <filepath>nmake.exe</filepath> /<filepath>make.exe</filepath> syntax can be used in conjunction with the <codeph>$(PLATFORM)</codeph> and <codeph>$(CFG)</codeph> macros that <filepath>abld</filepath> defines to carry out the different commands. </p> <p> <codeph>$(CFG)</codeph> is defined as UDEB or UREL. <codeph>$(PLATFORM)</codeph> is WINS, ARMI, etc. </p> <p>For example, the following <codeph>nmake</codeph> makefile prints <systemoutput>ARMI MAKEMAKE COMMAND</systemoutput> at the makefile stage for the ARMI target, or <systemoutput>NOT ARMI BUILD</systemoutput> for any other platform: </p> <codeblock id="GUID-D3976893-2BC7-53EE-99F0-A1A502E33E39" xml:space="preserve">!IF "$(PLATFORM)" == "ARMI"
+MAKMAKE:
+    echo ARMI MAKEMAKE COMMAND
+!ELSE
+MAKMAKE:
+    echo NOT ARMI BUILD
+!ENDIF
+    
+FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE : </codeblock> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-60BBE390-0CA5-4064-86E5-39A31CE2AB82_d0e46869_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60BF8840-CB87-5A39-A46E-76F8D4EDB50C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-60BF8840-CB87-5A39-A46E-76F8D4EDB50C" xml:lang="en"><title>How
+to implement two-phase construction</title><shortdesc>This doccument illustrates two-phase construction with example
+code.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The example code shown below illustrates the provision of cleanup stack
+support for <codeph>CBase</codeph> -derived classes, and specifically details
+the motivation behind using a two-phase construction strategy for creating
+compound objects. It presents two implementations of a <codeph>CCompound</codeph> class,
+one which uses the usual C++ construction strategy, and a second which uses
+two-phase construction. </p>
+<section id="GUID-4219D886-CBB9-4AEC-9B45-7F31BAEE4689"><title>Example classes</title> <p>This section will use the following
+classes as examples.</p> <p><codeph>CSimple</codeph> is a simple class whose
+members do not refer to external resources:</p> <codeblock id="GUID-ED0CC311-9A9D-5325-81F9-D9D75EF6A69A" xml:space="preserve">class CSimple : public CBase
+    {
+public: 
+    CSimple(TInt); 
+    void Display();
+private:
+    TInt iVal;
+    };</codeblock> <p><codeph>CCompound</codeph> owns other objects:</p> <codeblock id="GUID-2621235F-B455-5909-8622-D4562506A51A" xml:space="preserve">class CCompound : public CBase
+    {
+public:
+    void Display();
+    ~CCompound();
+    static CCompound* NewL(TInt aVal);
+    static CCompound* NewLC(TInt aVal); 
+protected:
+    CCompound(TInt aVal);
+    void ConstructL();
+private:
+    TInt iVal;
+    CSimple* iChild;
+    };</codeblock> <p>Note that the constructor is <codeph>protected</codeph>,
+so that <codeph>CCompound</codeph> objects can only be created through the
+public static <codeph>NewL()</codeph> and <codeph>NewLC()</codeph> functions.</p> </section>
+<section id="GUID-057A405E-3A7B-4C01-887E-38E97A3860C2"><title>Incorrect construction allowing a memory leak</title> <p>First
+consider what would happen if the <codeph>CSimple</codeph> object owned by
+the <codeph>CCompound</codeph> were allocated and constructed by the <codeph>CCompound</codeph>'s
+constructor, for example:</p> <codeblock id="GUID-1A336A31-5C82-5712-8038-D14F70AB03E7" xml:space="preserve">CCompound::CCompound(TInt aVal)
+    {
+    iVal=aVal;
+    iChild = new (ELeave) CSimple(aVal);  
+    }</codeblock> <p>The problem with this approach is that, if the <codeph>new</codeph> in
+the <codeph>CCompound</codeph>'s constructor leaves, then:</p> <ul>
+<li id="GUID-FC0C62D4-207D-5A1E-9FE6-967358FF4832"><p>memory has already been
+allocated for the <codeph>CCompound</codeph> object</p> </li>
+<li id="GUID-F51CD3ED-2968-500F-89B5-ADD103CF8981"><p>because of the leave,
+there is no valid pointer for the partially-constructed <codeph>CCompound</codeph> object</p> </li>
+<li id="GUID-7464BB53-FA84-5D6D-BF43-EB527EDA98DB"><p>without a valid pointer,
+there is no way to clean up the <codeph>CCompound</codeph> object</p> </li>
+</ul> </section>
+<section id="GUID-261B247A-A683-4F29-93CE-DE1EFC3EBD71"><title>Two-phase construction</title> <p>The solution is to allocate
+the <codeph>CCompound</codeph> object first, push a pointer to the clean-up
+stack, and then complete its construction. Any construction which might leave
+must be performed after the partially-constructed <codeph>CCompound</codeph> object's
+address has been pushed to the clean-up stack.</p> <ol id="GUID-02F5717B-1797-5C0F-B4DF-131DA5509226">
+<li id="GUID-C83A43D7-48D7-553D-9EF2-B2E7783D0D74"><p>Push the object to the
+clean-up stack after it has been allocated.</p> </li>
+<li id="GUID-5D99B96E-405D-533A-98FE-885AA60C0862"><p>Call the <codeph>ConstructL()</codeph> function
+to complete construction. </p> </li>
+</ol> <p><b>NewLC()
+example</b> </p> <codeblock id="GUID-46969146-4CE4-52F9-BF2D-9569CDAFF737" xml:space="preserve">// NewLC with two stage construction
+CCompound* CCompound::NewLC(TInt aVal) 
+    { 
+    // get new, leave if can't
+    CCompound* self=new (ELeave) CCompound(aVal);
+    
+    // push onto cleanup stack in case self-&gt;ConstructL leaves
+    CleanupStack::PushL(self);
+ 
+    // complete construction with second phase constructor
+    self-&gt;ConstructL();
+    return self;
+    }</codeblock> <p>Now the <codeph>ConstructL()</codeph> function is defined
+instead of the C++ constructor. It performs essentially the same functions
+as the C++ constructor in the single-phase case:</p> <p><b>ConstructL() example</b> </p> <codeblock id="GUID-CA730E71-CE47-54E0-A4CF-A3CAC2FC560B" xml:space="preserve">void CCompound::ConstructL() 
+    { 
+    // NB. function may leave, as creating a new CSimple object
+    // may leave.
+    iChild = new (ELeave) CSimple (iVal);  
+    }</codeblock> <p><b>NewL()
+example</b> </p> <p>Implement <codeph>NewL()</codeph> by doing a <codeph>NewLC()</codeph>,
+followed by popping the pushed pointer from the cleanup stack:</p> <codeblock id="GUID-883DDCC5-8234-5319-B39E-A57C95A27882" xml:space="preserve">CCompound* CCompound::NewL(TInt aVal) 
+    {
+    CCompound* self=NewLC(aVal);
+    CleanupStack::Pop();
+    return self;
+    }</codeblock> <p><b>Note</b> </p> <ul>
+<li id="GUID-E12FC4FE-9ED0-560A-9282-F8BE4238CE7D"><p>Two-stage construction
+for a class could be avoided by including a <codeph>CleanupStack::PushL(this)</codeph> at
+the start of the class's C++ constructor. This would achieve the same effect
+as using <codeph>ConstructL()</codeph>. However if the class is to be used
+as a base class, the constructor of any classes derived from it will incur
+the overhead of one push and pop in the constructor called at each level in
+the inheritance hierarchy, rather than one pop and push in its own <codeph>NewLC()</codeph>.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE" xml:lang="en"><title>Panoramic
+Stitching Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces you to the panoramic stitching functionality. </p>
+<section id="GUID-3333CA2A-EF84-5E7B-B9BE-8FF00523897F-GENID-1-6-1-17-1-1-5-1-6-1-12-1-4-1-3-1-4-1-3-1-2-2"><title>Purpose</title> <p>Panoramic
+stitching involves combining a collection of images into a single image. </p> </section>
+<section><title>Panoramic stitching overview</title> <p>The panorama image
+is created by stitching a collection of several separate image into one large
+image. The panoramic stitching process is done by, </p> <ul>
+<li id="GUID-0DA59FD4-B817-5B51-8E83-F56FC42E1675"><p>image registration </p> </li>
+<li id="GUID-74941275-9681-51AB-B1FB-4F0829B47075"><p>cylindrical projection
+of images </p> </li>
+<li id="GUID-70E87CA6-B8BC-5CE9-A545-FC3782A81A69"><p>image blending. </p> </li>
+</ul> <p>The panoramic stitch can be done eihter interactively by using camera
+viewfinder, for tracking the camera movements or by stitching pre-captured
+images together. </p> <p><b>Introduction
+about the panoramic stitching</b> </p> <p>The <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> stitches
+a set of images into a single panorama image. The input to <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> is
+a collection of high resolution images together with some guidance on the
+relative positioning between the images expressed by <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform</apiname></xref> instances. </p> <p>For
+the panorama creation, the most common use is rendering a full size panorama
+image to the device file system. </p> <p>The high level steps to use <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> are
+shown below: </p> <ul>
+<li id="GUID-EF02A22B-B4B1-5E97-97E7-F09DE26DA93A"><p>To construct <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>,
+use <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-39BE88C3-C617-3AF8-A13D-CEC60AE798B1"><apiname>CImagePanorama::NewL()</apiname></xref> which loads the image panorama
+plugin. </p> </li>
+<li id="GUID-690408AF-782D-5E67-93BC-238EBCBD0C20"><p>To initialise <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>,
+use <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-B6D24921-92B8-3FD8-B666-91C56E1E7984"><apiname>CImagePanorama::InitialiseL()</apiname></xref>. </p> </li>
+<li id="GUID-3E167564-6974-571E-99A0-196A5A18133D"><p>To correct the lens
+parameter use <xref href="GUID-90D79D23-97BC-3EE5-98DD-594DF6EFA0EE.dita"><apiname>TPanoramaLens</apiname></xref>. You need to correct the lens
+for panorama stitching quality. The lens parameters are camera specific. </p> </li>
+<li id="GUID-93217AEB-2AC5-5CCC-B5EE-36E8B99BAA85"><p>To add images to <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>,
+use <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-B6591C30-F990-3D75-B9F3-922D41A5F1A1"><apiname>CImagePanorama::AddFileL()</apiname></xref>,<xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-19FBD32E-9B1F-38B0-963A-B361737818D2"><apiname>CImagePanorama::AddBufferL()</apiname></xref> or <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-66509DE8-2DBA-3FE0-8495-32E4256FA939"><apiname>CImagePanorama::AddImageL()</apiname></xref>, providing a hint on relative positioning or translation of the images through <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform</apiname></xref>.
+This transform only needs to be approximate. </p> </li>
+<li id="GUID-B445F73C-2910-56DE-B03D-2637ECED0963"><p>To make the stitched
+image available call <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-A098A70C-050C-3592-BC37-E849A81890F2"><apiname>CImagePanorama::RenderL()</apiname></xref>. </p> </li>
+<li id="GUID-B68A2C77-F19A-5999-82C1-F433269DAACB"><p>The <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> instance
+can then be deleted. </p> </li>
+</ul> <p><b> Introduction
+about the CVFTracker</b> </p> <p> <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> is used to
+track viewfinder images to aid in capturing a panorama. The usage of <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> are
+demonstrated as follows: </p> <ul>
+<li id="GUID-3496F712-4FCD-5E89-BFEE-5AA6A22A1DA0"><p>The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> output
+is used for providing feedback and guidance to you, on how to move the camera
+while capturing a panorama. </p> </li>
+<li id="GUID-BDBC8A06-B2F8-507C-81F7-E2F344A94FEA"><p>The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> is
+used as an aid for the stitching process in the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>.
+The input to the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> is a rapid flow of raw images
+from the viewfinder of the camera. The output is the movement of the camera. </p> </li>
+</ul> <p>The high level steps to use the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> are
+shown below: </p> <ul>
+<li id="GUID-5C25D0C8-49E1-5514-A90C-2B8A026D20CC"><p>To create <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref>,
+use the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AE92A41F-388D-338C-A80E-C0B16DF3BDDC"><apiname>CVFTracker::NewL()</apiname></xref>. The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AE92A41F-388D-338C-A80E-C0B16DF3BDDC"><apiname>CVFTracker::NewL()</apiname></xref> is
+used to load the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> plugin. </p> </li>
+<li id="GUID-ECE3D707-B871-5EC5-A04D-CA2A632BECC6"><p>To initialise <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref>,
+use <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-5E441486-3333-3B4F-81F3-3A86AE541CF8"><apiname>CVFTracker::InitialiseL()</apiname></xref>. </p> </li>
+<li id="GUID-54FEF93A-68BB-5EFB-8DE4-21F6562DCF11"><p>To reset <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref>,
+use <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AE707DEA-4747-3A1A-8C6F-8163F1DF0584"><apiname>CVFTracker::Reset()</apiname></xref>. </p> </li>
+<li id="GUID-32F88242-4EDD-54C7-8D7A-574015A197F4"><p>To perform the image
+registration, use <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AB58BBEB-5EAE-3E2A-A94E-F59334402A2B"><apiname>CVFTracker::RegisterImageL()</apiname></xref>. </p> </li>
+<li id="GUID-01DDC476-9596-55A1-B296-13877DB41B67"><p>To destroy the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref>,
+use <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-C2B64F7D-04D8-324A-BD84-C588503881BC"><apiname>CVFTracker::~CVFTracker()</apiname></xref>. </p> </li>
+</ul> <p><b>Camera
+requirements </b> </p> <p>The camera requirements for the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> and <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> are
+as follows, </p> <ul>
+<li id="GUID-C83A6919-C7BB-55C9-9D60-80EDAE0D4458"><p>The camera must provide
+low resolution images (in the order of 160 by 120 up to 320 by 240 resolution)
+as the raw format at a high frame rate to the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> and
+high resolution captured images to the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>. </p> </li>
+<li id="GUID-EF41F660-AAEE-5D31-A014-FD6C39C42C5E"><p>For the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref>,
+it is better to have good frame rate than to have high resolution input images. </p> </li>
+<li id="GUID-810B06D2-D45F-5E7C-BC62-88AEE0B0A071"><p>The use of large <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> images
+can cause a lower frame rate on slow devices, and do not give accurate tracking
+for the view finder. </p> </li>
+<li id="GUID-DA5C3ED7-550D-5E4E-AD5A-E9119A56D8FB"><p>The optimal size of
+images is a tradeoff between the panorama quality and the time for rendering
+the panorama. </p> </li>
+</ul> </section>
+<section><title>How to use Panoramic Stitching</title> <p>This section contains
+some code snippets to show, how Panoramic stitching is accessed in several
+situations. </p> <p><b>Basic
+stitching </b> </p> <p>The basic stitching is demonstrated by a simple example
+of stitching four JPEG images into a single JPEG image providing an approximate
+translation between each image: </p> <p> </p> <codeblock id="GUID-304B7755-B05B-5BAE-884A-44A0500ABF37" xml:space="preserve">
+
+    TSize imageSize(1200, 1000);
+    
+    TDirection direction = EPanoramaDirectionRight;
+        
+    //Lens parameters or internal camera characteristics should be available for the 
+    //specific camera module in use. Here we use default values.
+      TPanoramaLens lens;
+        
+    //Create transform. A transform is an approximate offset between each image.
+      CPanoramaTransform* panTrans = CPanoramaTransform::NewL();
+      CleanupStack::PushL(panTrans);
+    
+    //Create panorama object.This stitches the individual images together.
+      CImagePanorama* panImage = CImagePanorama::NewL();
+      CleanupStack::PushL(panImage);
+        
+    //Create panorama engine and set the lens and size
+      panImage-&gt;InitializeL(imageSize, lens, direction);
+        
+    //Each file added is provided with an approximate translation. 
+    //In this case there are 4 images.
+      panTrans-&gt;SetTranslationL(TPoint(0, 0), imageSize);
+      panImage-&gt;AddFileL(KTestFileName1, *panTrans);
+        
+    panTrans-&gt;SetTranslationL(TPoint(900, -30), imageSize);
+    panImage-&gt;AddFileL(KTestFileName2, *panTrans);
+        
+    panTrans-&gt;SetTranslationL(TPoint(900, 60), imageSize);
+    panImage-&gt;AddFileL(KTestFileName3, *panTrans);
+    
+    panTrans-&gt;SetTranslationL(TPoint(400, -30), imageSize);
+    panImage-&gt;AddFileL(KTestFileName4, *panTrans);
+        
+    //The image size can be obtained before rendering (if required)
+      TSize size;
+      panImage-&gt;CurrentImageSizeL(size);
+    
+    //view the output image
+      panImage-&gt;RenderL(KTestBSOutputFileName);
+
+    CleanupStack::PopAndDestroy(2); //panTrans, panImage
+
+</codeblock> <p>The main steps for using <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> are
+as follows, </p> <ol id="GUID-D6872BA3-A3DF-566A-83AF-527870CBE997">
+<li id="GUID-FB378114-769F-5404-BD20-8886D538191F"><p>create <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>  </p> </li>
+<li id="GUID-D8A28AFC-4D37-59C4-91D9-92F4898F2302"><p>some approximate transform
+information for each image pair </p> </li>
+<li id="GUID-146D95D7-14DE-57CA-96DA-45959EB895A4"><p>add each images to <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>  </p> </li>
+<li id="GUID-FF479A52-24E3-5D0B-A821-44127DA5B60C"><p>render the output (for
+example to the file) </p> </li>
+<li id="GUID-0ADBEE3F-AA60-5787-92A0-C421D4EA8731"><p>delete the objects used. </p> </li>
+</ol> <p> <b>Note:</b> The following points must be noted by you: </p> <ul>
+<li id="GUID-D3EB4190-4B2B-5760-8E6C-D19DAFF439DF"><p>The lens parameters
+are not resolution dependant. It is enough to calibrate once for each camera
+model and no need to recalibrate for each resolution. For best accuracy, use
+the highest resolution possible when calibrating with a calibration tool. </p> <p>The
+approximate translations in x co-ordinate and y co-ordinate ( as dx, dy) must
+be compliant with the value of direction. </p> </li>
+</ul> <p><b>A
+camera application example</b> </p> <p>The <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> is
+used in a camera application. The example is more complicated than the previous
+example. In this example <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> provides the approximate
+transform between the captured images. </p> <p><b>Viewfinder
+image tracking </b> </p> <p>The <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> generates
+panorama images. The application starts the process and then use the camera
+for capturing the images. The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> will give an indication
+when to capture the high resolution images, which will later be stitched into
+a panorama image. </p> <p>The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> plays an important
+role for getting the camera movement. The high level steps to use the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> in
+the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> for a camera application, are shown
+below: </p> <ol id="GUID-B6357C9E-1510-53C8-856B-2C06C7A6A69C">
+<li id="GUID-54C90419-08DE-5406-BBF1-37C0B59FCA26"><p>To create the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> object
+and load the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> plugin, use <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AE92A41F-388D-338C-A80E-C0B16DF3BDDC"><apiname>CVFTracker::NewL()</apiname></xref>. </p> </li>
+<li id="GUID-D3E16606-ED81-5702-9F4F-9B19754D4768"><p>To create <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> object
+and load the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> plugin, use <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-39BE88C3-C617-3AF8-A13D-CEC60AE798B1"><apiname>CImagePanorama::NewL()</apiname></xref>. </p> </li>
+<li id="GUID-E5C6B072-64FE-554F-BAC4-8850E15B841D"><p>To create the <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform</apiname></xref> object
+and set or get the values, use the <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita#GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA/GUID-ADB1D55B-CEA7-3151-B6E2-14F165F8BB9F"><apiname>CPanoramaTransform::NewL()</apiname></xref>. </p> </li>
+<li id="GUID-FD68A411-E492-5492-88FD-E7A7307113F7"><p>To create and set the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref>, <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref>,
+and <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform</apiname></xref> functions for the Image Processor
+Adaptation Plug-in objects, use <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-5E441486-3333-3B4F-81F3-3A86AE541CF8"><apiname>CVFTracker::InitialiseL()</apiname></xref> and <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-B6D24921-92B8-3FD8-B666-91C56E1E7984"><apiname>CImagePanorama::InitialiseL()</apiname></xref> respectively.</p> </li>
+<li id="GUID-A605F836-474D-55D4-A326-9AC8B0F8F86B"><p>To get a translation
+value from a viewfinder image, register an image by using <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AB58BBEB-5EAE-3E2A-A94E-F59334402A2B"><apiname>CVFTracker::RegisterImageL()</apiname></xref>.
+This will return translation information as a CPanoramaTransform object. </p> </li>
+<li id="GUID-8E6E35D9-B20A-5BA2-987F-1A3447DEA146"><p>Check the right time
+to capture the next image by using <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-945FF7AD-31E5-3C6A-AD89-F1A5FC225B9D"><apiname>CVFTracker::IsTimeToCapture()</apiname></xref>. </p> </li>
+<li id="GUID-A490A649-B910-5E1C-B317-EC5627547EF7"><p>Reset the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> for
+the next image, using <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita#GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352/GUID-AE707DEA-4747-3A1A-8C6F-8163F1DF0584"><apiname>CVFTracker::Reset()</apiname></xref>. </p> <p>In order
+to capture many images to be stitched into a single panorama image, repeat
+the steps 5, 6 and 7. </p> </li>
+</ol> <fig id="GUID-7F48B2F5-D65B-52EC-8412-F3F56A5EE8E8">
+<image href="GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e284504_href.jpg" placement="inline"/>
+</fig> <p><b>Panorama
+stitching </b> </p> <p>The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> helps to decide when
+to capture each of the full resolution images using the camera. The images
+can then be passed to CImagePanorama and the stitching is done. The high level
+steps to do panorama stitching are listed below: </p> <ol id="GUID-763005A3-4098-534F-9CA1-E2F8654C95BD">
+<li id="GUID-6866E73F-F1F7-53C8-BA64-8AF448318C53"><p>Capture the next image
+using the camera, then add the image to the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> by
+using <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-66509DE8-2DBA-3FE0-8495-32E4256FA939"><apiname>CImagePanorama::AddImageL()</apiname></xref> or <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-201D0607-2D25-3B1D-B449-7A61419BB0C8"><apiname>CImagePanorama::AddFileL</apiname></xref>,
+passing in the <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform</apiname></xref> object obtained from
+the CVFTracker. </p> </li>
+<li id="GUID-BC35AEEF-206E-5830-909E-07F645C2E063"><p>When all images have
+been captured you can render the stitched image to file, image buffer, CFbsBitmap
+or image frame using <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita#GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4/GUID-A098A70C-050C-3592-BC37-E849A81890F2"><apiname>CImagePanorama::RenderL()</apiname></xref>. </p> </li>
+</ol> <fig id="GUID-B5F7149F-1FB9-535E-9212-7C9E23B9347B">
+<image href="GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e284554_href.jpg" placement="inline"/>
+</fig> <p><b>User Interface</b> </p> <p>Provide a good user interface (UI) application
+for the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> is crucial. An example of UI design
+is described below, which gives you a robust and easy application for generating
+panorama images. </p> <p><b>How
+to shoot a panorama </b> </p> <p>The steps to be followed for shooting a panorama
+images: </p> <ol id="GUID-8FD3D305-BEAF-5414-BD49-5728C2504256">
+<li id="GUID-92642922-D0A0-57CD-80A6-03722941E52C"><p>You need to press the
+start button of the camera and need to sweep the camera towards the wanted
+scene. </p> <p> <b>Note:</b> You must try not to move the mobile phone, but
+only rotate it. You see in the below diagram the camera is sweep in a clockwise
+direction from left-to-right. The rotation is made around the imagined axis
+through mobile (axis of rotation in the image). A panorama image covers approximately
+a 100 degree field of view. </p> <fig id="GUID-8562E235-6D10-5097-A888-E27EE6D4E498">
+<image href="GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e284591_href.jpg" placement="inline"/>
+</fig> </li>
+<li id="GUID-16CA0CFB-9D17-573C-9D7B-FEDBCFF4044C"><p> <b>Application Start</b>  </p> <p>When
+you launch the application the UI appears as shown in the below diagram. </p> <fig id="GUID-4A6082E2-1B7F-5A48-8FC5-7BC2786987B7">
+<image href="GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e284607_href.jpg" placement="inline"/>
+</fig> <p>Here the screen area shows the viewfinder image. When you sweep
+the mobile, several images are captured and then the images are stitched to
+create a panorama image. </p> </li>
+<li id="GUID-FE8D49DB-26CC-5546-A05D-B46045894313"><p> <b>Capture a panorama
+image during tracking</b>  </p> <p>When you choose to capture a panorama image
+the UI changes, which is shown in the below diagram. </p> <fig id="GUID-930C8F54-4C13-50AC-B700-9D889FFE9DC7">
+<image href="GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e284626_href.jpg" placement="inline"/>
+</fig> <p>In the above diagram you see three different boxes named 1, 2 and
+3 which represent the position of the camera. The blue box representation
+changes according to the rotation of the mobile phone. </p> <p>The boxes shown
+in the above diagram is for illustrative purpose, so that it can be down scaled
+for viewfinder image size. The total panorama coverage area box is estimated
+by the number of images for capturing and the overlapping area size. </p> <p>The
+code snippets below shows the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> tracking. </p> <codeblock id="GUID-73381F9D-53D9-505A-888D-464A83B0A352" xml:space="preserve">
+
+    _LIT(KFileOutput, "c:\\ICLExample\\viewfinder%d.mbm");
+    _LIT(KFileCapturedImage, "c:\\ICLExample\\pancapture%d.jpg");
+    TInt i = 0;
+
+    TSize imageSize(1200,1000);
+ CFbsBitmap* bmp = new (ELeave) CFbsBitmap;
+ CleanupStack::PushL(bmp);
+
+    // get 1st viewfinder image from camera into bmp (detail excluded)
+             TSize bmpSize = bmp-&gt;SizeInPixels();
+
+       CPanoramaTransform* panTrans = CPanoramaTransform::NewL();//create panorama transoform
+       CleanupStack::PushL(panTrans);
+
+       CVFTracker* vfTracker = CVFTracker::NewL(); //create VFTracker and load the plugin
+       CleanupStack::PushL(vfTracker);
+        
+       vfTracker-&gt;InitializeL(bmpSize); //Create VFTracker and set size
+
+       CImagePanorama* panImage = CImagePanorama::NewL(); //create CImagePanorama object
+       CleanupStack::PushL(panImage);
+        
+       TDirection direction = EPanoramaDirectionRight; //assign direction
+        
+    // Lens parameters or internal camera characteristics should be available for the 
+    // specific camera module in use. Here we use default values.
+       TPanoramaLens lens;
+       panImage-&gt;InitializeL(imageSize, lens, direction); //initialise size, lens, direction and create panorama engine
+
+    // get the first captured image from the camera as a starting point - its name is given in capturedFileName
+       TFileName capturedFileName;
+    capturedFileName.Format(KFileCapturedImage(),i);
+       panImage-&gt;AddFileL(capturedFileName, *panTrans); //add the captured image
+
+    do 
+        {
+        // give the next camera viewfinder image to the tracker    (details ommitted)
+           vfTracker-&gt;RegisterImageL(*bmp, *panTrans); // register viewfinder image
+        
+        // check if we have a good overlap with the previous image
+           if(vfTracker-&gt;IsTimeToCapture(direction, KPanoramaDefaultOverlap)) 
+              {
+              // capture the next image from the camera (details ommitted)
+              capturedFileName.Format(KFileCapturedImage(),i);
+            
+                 panImage-&gt;AddFileL(capturedFileName, *panTrans); //add the captured image
+                 vfTracker-&gt;Reset(); //reset the VFTracker object
+              }         
+        if ( err != KErrNone )  // some termination condition usually a signal from user
+            {
+            // no more viewfinder images
+            break;
+            }
+        }
+    while (1);    
+    panImage-&gt;RenderL(KTestVFTOutputFileName); // render the stitched image
+    CleanupStack::PopAndDestroy(4,bmp); //panTrans, vfTracker, panImage, bmp
+</codeblock> <p>The <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> is passed each viewfinder
+images which it checks and determines whether it is right time to capture
+the next image. In return it provides translation information <codeph>CPanoramaTransform::GetTranslation()</codeph> which
+indicates the shift of the current viewfinder image. </p> <p>The extracted
+information is used to draw the blue rectangle on the screen. If it is time
+to capture, then it triggers the capturing function and restarts the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> again
+for next image. </p> <p> <b>Note:</b> The box representation is used in the
+UI, to help you to take better panorama images. In addition a vibration effect
+can be used to provide additional feedback on when to capture an image. For
+example, when you sweep the mobile phone, it is in tracking mode so it vibrates.
+When the mobile phone is ready to capture, the vibration stops to let you
+know that it must be static for capturing an accurate second image. Then when
+it vibrates again, you must rotate the mobile and until it stop. </p> </li>
+<li id="GUID-C7848E42-74B4-56D2-BB7B-2F20A4D30D32"><p> <b>User interface updating
+details </b>  </p> <p>The UI design detail is shown in step by step process.
+They are as follows: </p> <ul>
+<li id="GUID-99D23225-ECF9-5A34-ADAA-4E0A2326D768"><p>The total panorama coverage
+area is divided into four different image areas: </p> <fig id="GUID-0808E657-6313-510C-9EB6-F4D49722229B">
+<image href="GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e284687_href.jpg" placement="inline"/>
+</fig> </li>
+<li id="GUID-D06A8B59-81EE-5420-A3AE-FB036B7CE3F4"><p>When you choose to capture
+a panorama image the following steps are performed. The first image is captured
+at position 0. The UI looks as follows: </p> <fig id="GUID-A17F50EC-3241-56CA-B96A-59515EAF161B">
+<image href="GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e284697_href.jpg" placement="inline"/>
+</fig> </li>
+<li id="GUID-BF4A2D67-EF8D-5F72-B2C2-9DC79E319023"><p>When you rotate the
+mobile phone clockwise, the blue box moves to the right using the translation
+information from <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform</apiname></xref>. At the same time the
+vibrator is set on to give direct feedback for the tracking process. When
+the blue box and the grey box (which represent the position to capture the
+next image) coincide, the blue box turns into a filled blue box and the vibrator
+stops. You then known that the next image is captured. At this moment the
+camera must be steady. </p> <p>After second image is captured the blue box
+is moving again and vibrator is set-on. The UI looks as follows: </p> <fig id="GUID-C6E583BB-EE47-52EE-BBFB-D7EE37156C12">
+<image href="GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e284714_href.jpg" placement="inline"/>
+</fig> <p>Again, you rotate the mobile clockwise until the two boxes coincide
+and vibrator stops; third image then captured. After this, the UI looks as
+follows: </p> <fig id="GUID-FD9D81DA-E675-5C9C-BA6E-4E7DCE6F46D9">
+<image href="GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e284722_href.jpg" placement="inline"/>
+</fig> <p>You rotate the mobile phone until the boxes coincide and the fourth
+(last) image is captured. </p> <p> <b>Note:</b> If the mobile phone rotation
+deviates from chosen (clockwise) direction or translates up and down, the
+blue box indicates this, and you must correct the mobile phone for the wrong
+movement. </p> <p>At this point the stitched image can be saved or you can
+reset the camera, to create another panorama image: </p> <fig id="GUID-1A527BEA-0C50-5910-9525-75336C02B2C9">
+<image href="GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e284739_href.jpg" placement="inline"/>
+</fig> </li>
+</ul> </li>
+</ol> <p><b>Camera
+calibration </b> </p> <p>In order to produce good panorama images, the internal
+characteristics of the camera is calibrated by the <xref href="GUID-E361A378-76EB-36C9-A949-A5D31D4D1C4C.dita"><apiname>TPanoramaLens()</apiname></xref>.
+The lens parameter such as the distance, the focal length, the principal point,
+the skew, the width and the height are called the intrinsic parameters. </p> <p>The
+camera module supplier should be able to provide this information or there
+are a number of tools to get the camera parameters. A free tool that can be
+used is the calibration functions in <xref href="http://en.wikipedia.org/wiki/Opencv" scope="external">OpenCV</xref>. Typically these tools need an input of images
+of a special reference pattern, for example a checker board like grid, photographed
+from many directions. From that the tools automatically generate all the desired
+lens parameters. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60E8185C-04EC-5541-8392-5457808B9774.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-60E8185C-04EC-5541-8392-5457808B9774" xml:lang="en"><title>Text content</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC" xml:lang="en"><title>Receiving
+Channel Data based on Conditions</title><shortdesc>Conditional listening enables you to receive sensor data feeds
+based on a specific condition. For example, you can choose to receive sensor
+feeds that are only movement specific.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-A4F41A1D-D093-418E-BA65-30C36DA0B0DA">       <p>Before listening
+for channel data, you must <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88">open
+the sensor channel</xref>.</p>      </prereq>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-10-1-3-2">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-4-1-4-1-10-1-3-2-1"><cmd>Create channel condition
+items using <parmname>CSensrvChannelCondition</parmname> constructor. These
+conditions can be used to filter the sensor data feeds.</cmd>
+<stepxmp><codeblock xml:space="preserve">//Comparison values needed for condition
+...
+TInt firstNumber=45;
+HBufC8 *firstBufNumber=NULL;
+InetProtTextUtils::ConvertIntToDescriptorL(firstNumber,firstBufNumber);
+CleanupStack::PushL(firstBufNumber);
+
+TInt secondNumber=150;
+HBufC8 *secondBufNumber=NULL;
+InetProtTextUtils::ConvertIntToDescriptorL(secondNumber,secondBufNumber);
+CleanupStack::PushL(secondBufNumber);
+
+//Creates a SingleLimit Condition with a GreaterThan operator
+CSensrvChannelCondition *firstCondition = CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,ESensrvOperatorGreaterThan,1,*firstBufNumber);
+
+//Creates a SingleLimit Condition with a LessThan operator
+CSensrvChannelCondition *secondCondition = CSensrvChannelCondition::NewL(ESensrvSingleLimitCondition,ESensrvOperatorLessThan,2,*secondBufNumber);</codeblock></stepxmp>
+</step>
+<step id="GUID-A94F1F87-9CD4-45E9-9FDA-B53E26C8F92D"><cmd>Create a channel
+condition set using <parmname>CSensrvChannelConditionSet</parmname> constructor.
+Add the condition items to the condition set using the <xref href="GUID-AF4BAE05-7111-3DF7-964D-C8A49D8F3D08.dita#GUID-AF4BAE05-7111-3DF7-964D-C8A49D8F3D08/GUID-84740BEB-2E6E-38E6-822B-9F6E4A55DF7D"><apiname>CSensrvChannelConditionSet::AddConditionL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">//Creates a ConditionSet with ConditionType OR 
+    CSensrvChannelConditionSet *ConditionSet=CSensrvChannelConditionSet::NewLC(ESensrvAndConditionSet);
+    
+    //Add channel1 and channel2 to conditonset
+    ConditionSet-&gt;AddChannelConditionL(firstCondition);
+    ConditionSet-&gt;AddChannelConditionL(secondCondition);</codeblock></stepxmp>
+</step>
+<step id="GUID-E51A9E16-67C8-43AB-BBEF-99411A3EEE0F"><cmd>Add the condition
+set to the required channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-006A659E-72F1-3D5D-8476-952619E3BA2F"><apiname>CSensrvChannel::AddConditionL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">CSensrvChannel* channel;
+channel-&gt;AddConditionL(*ConditionSet);   
+</codeblock></stepxmp>
+</step>
+<step id="GUID-47EED068-A9C7-4DCF-AF03-3803CECAE7C8"><cmd>Create a condition
+listener implementation for the <parmname>MSensrvChannelConditionListener</parmname> interface,
+which listens for sensor data feeds based on <parmname>CSensrvChannelConditionSet</parmname>.</cmd>
+<stepxmp><codeblock xml:space="preserve">class ConditionListener:public MSensrvChannelConditionListener
+    {
+    public:
+        void ConditionMet(CSensrvChannel &amp;aChannel, CSensrvChannelConditionSet &amp;aChannelConditionSet, TDesC8 &amp;avalue)
+        {
+        ...
+         //Implementation
+        }
+    void ConditionError(CSensrvChannel &amp;aChannel, TSensrvErrorSeverity aError)
+        {
+        ...
+         //Implementation
+        }
+    void GetChannelConditionListenerInterfaceL(TUid aInterfaceUid, TAny *&amp;aInterface)
+        {
+        ...
+         //Implementation
+        }
+    };</codeblock></stepxmp>
+</step>
+<step id="GUID-196F04E0-2A98-4479-8165-9A803823E6AD"><cmd>Start conditional
+listening by passing an instance of the condition listener implementation,
+using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-4CA77329-E958-3568-B34D-1086AA34A334"><apiname>CSensrvChannel::StartConditionListeningL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">//Instance of the condition listener implementation
+ConditionListener conditionListener;   
+...
+channel-&gt;StartConditionListeningL(conditionListener,1,1);
+...</codeblock></stepxmp>
+</step>
+<step id="GUID-93BD0200-C12B-4AB1-9D23-F11AC54D39E6"><cmd>Once you get the
+required sensor data feeds from the sensor channel based on the conditions
+set, you can stop conditional listening using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-78F64EA2-2901-3304-B4AE-B865D18772E8"><apiname>CSensrvChannel::StopConditionListening()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">channel-&gt;StopConditionListening();
+</codeblock></stepxmp>
+</step>
+</steps>
+<postreq id="GUID-40C4B810-AD44-4A28-8C29-8A08E914970D"><p>End the session
+with the sensor channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-0B8F50A6-2CA1-316A-82AB-AA026005E810"><apiname>CSensrvChannel::CloseChannel()</apiname></xref> function.</p></postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC" xml:lang="en"><title>Modifying
+DOM Tree</title><shortdesc>This topic explains how to create or modify a DOM tree by adding
+nodes and changing their contents. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before you start, you must: </p> <ul>
+<li id="GUID-AB0E481B-349C-5C60-ACB7-06EBA299E149"><p>understand the concept
+of <xref href="http://www.w3.org/DOM/" scope="external">Document Object Model
+(DOM)</xref>  </p> </li>
+<li id="GUID-79A66EA2-4F81-57E9-A4DB-E64B5405B578"><p>understand the structure
+and classes of the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML
+DOM Engine </xref> component </p> </li>
+</ul> </prereq>
+<context><p> </p> <p>The following diagram shows a sequence of calls that
+create a DOM tree from an empty document. There are many functions in the
+DOM Engine API that add nodes to a tree: refer to the reference documentation
+of the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngElement</apiname></xref> class for a comprehensive
+list. </p> <fig id="GUID-31E4FB65-7C28-513B-B8C0-5B057DC64A50">
+<title>              Creating a DOM tree            </title>
+<image href="GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e404700_href.png" placement="inline"/>
+</fig> </context>
+<steps id="GUID-DEA52036-E11C-5913-984B-663DD68D02DB">
+<step id="GUID-E65A2FF6-2918-540B-97DB-C07500A6CB08"><cmd/>
+<info>Create an instance of <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDocument</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-B36F5C00-6974-54EC-939A-34BF05F5C04A" xml:space="preserve">RXmlEngDocument myDoc;</codeblock> </stepxmp>
+</step>
+<step id="GUID-858AD52F-0526-5DCC-B424-666D88F19E8E"><cmd/>
+<info>Set the root node with the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDocument::CreateDocumentElementL()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-E890E160-294C-5218-B8A8-41EB7E7FE8A7" xml:space="preserve">_LIT8( KRootName, "playlist" );
+TXmlEngElement root = myDoc-&gt;CreateDocumentElementL( KRootName );</codeblock> </stepxmp>
+</step>
+<step id="GUID-25D56F38-012F-5169-9925-07A6A7BBAC31"><cmd/>
+<info>Add child nodes and attributes by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngElement::AddNewElementL()</apiname></xref> and <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngElement::AddNewAttributeL()</apiname></xref> functions. </info>
+<stepxmp><codeblock id="GUID-5CCB071C-7042-5F07-A5DE-29C2D5CD01D6" xml:space="preserve">_LIT8( KChildName, "song" );
+_LIT8( KAttrName, "filename" );
+
+for( TInt i=1;i&lt;6;i++ ) 
+    {
+          TXmlEngElement tempElement = root.AddNewElementL( KChildName );
+          TBuf8&lt;12&gt; value( _L8( "music0" ) );
+          value.AppendNum( i );
+          value.Append( _L8( ".mp3" ) );
+          tempElement.AddNewAttributeL( KAttrName, value );
+    }</codeblock> </stepxmp>
+</step>
+<step id="GUID-559B34A9-4A69-57E3-AF2A-D3E7F81728B0"><cmd/>
+<info>Swap the first two song elements by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngElement::MoveAfterSibling()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-6B4EDCE6-A688-5A0E-B4D9-9CF2ABD8DE5F" xml:space="preserve">TXmlEngNode swap = root.FirstChild();
+swap.MoveAfterSibling( swap.NextSibling() );</codeblock> </stepxmp>
+</step>
+<step id="GUID-D648ADF3-10A5-5FDC-BF2C-D08B095E5FE6"><cmd/>
+<info>If you want to save the DOM tree into a file, call the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlEnginePushL()</apiname></xref> method
+first. </info>
+<info>You must call the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlEnginePushL()</apiname></xref> method
+before parsing or saving an XML file, and the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlEnginePopAndClose()</apiname></xref> method
+after these operations. </info>
+</step>
+</steps>
+<result><p>The result is a DOM tree corresponding to the following XML structure: </p> <codeblock id="GUID-E90DD401-DDA6-5A3F-9A26-8C5CBE6BE64E" xml:space="preserve">
+ &lt;playlist&gt;
+     &lt;song filename = "music02.mp3"/&gt;
+     &lt;song filename = "music01.mp3"/&gt;
+     &lt;song filename = "music03.mp3"/&gt;
+     &lt;song filename = "music04.mp3"/&gt;
+     &lt;song filename = "music05.mp3"/&gt;
+ &lt;/playlist&gt;
+</codeblock> </result>
+</taskbody><related-links>
+<link href="GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita"><linktext>Parsing XML
+DOM</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6113CC3B-F994-4AA8-81E9-50433A3266E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6113CC3B-F994-4AA8-81E9-50433A3266E2" xml:lang="en"><title>Adding
+and removing toolbar extension items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The toolbar extension can basically hold the same items as the toolbar
+itself. However, the floating toolbar extension can only have focusable buttons.
+A fixed toolbar extension does not naturally have focus since its parent toolbar
+is not focusing. </p>
+<p>The toolbar extension can have a variable number of items. They are located
+from the upper left (right in mirrored layout) corner. If all items cannot
+fit into the extension, items from the end will be dropped. </p>
+<p>You can add items to the toolbar extension in the similar way as to a toolbar,
+either by defining <codeph>TBAR_CTRL</codeph> resource structures in the resource
+file or adding the items dynamically by using toolbar extension functions.</p>
+<p>You can also remove items from the extension.</p>
+<p>The example below shows how to add an item to the toolbar extension as
+the first item.</p>
+<codeblock xml:space="preserve">void CMyAppView::AddItemAsFirstToToolbarExtensionL()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknToolbarExtension* toolbarExtension = toolbar-&gt;ToolbarExtension();
+        if ( toolbarExtension )
+            {
+            CAknButton* newButton = CAknButton::NewL( R_MYAPP_EXTENSION_BUTTON );
+            // Last parameter tells the index at where to add new item
+            toolbarExtension-&gt;AddItemL( 
+                newButton, EAknCtButton, KExtensionButtonId, 0, 0 );
+            }
+        }
+    }
+</codeblock>
+<p>The example below shows how to remove an item from the toolbar extension.</p>
+<codeblock xml:space="preserve">void CMyAppView::RemoveItemFromToolbarExtensionL()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknToolbarExtension* toolbarExtension = toolbar-&gt;ToolbarExtension();
+        if ( toolbarExtension )
+            {
+            toolbarExtension-&gt;RemoveItemL( KExtensionButtonId );
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61376760-C576-51E0-85F2-34718F8DC321.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-61376760-C576-51E0-85F2-34718F8DC321" xml:lang="en"><title>Using
+TDateTime</title><shortdesc>Explains how to set Date and Time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-151083D6-2636-4AD7-8C6F-581C8E2973F5"><title>TDateTime()</title> <p>The example below shows how to construct
+a <codeph>TDateTime</codeph> object, initialising it to midnight 6th January
+1996;</p> <codeblock id="GUID-7AF7F876-0F7B-53BE-8C6C-D4969A0D51A7" xml:space="preserve">TDateTime dateTime(1996,EJanuary,5,00,00,00,000000);</codeblock> </section>
+<section id="GUID-640A9BD8-6C78-49BB-A62F-AC43382835CF"><title>Set()</title> <p>When setting the day and month, subtract
+one because the ranges are offset from zero. For example, to set the date
+to 31st December 1996:</p> <codeblock id="GUID-323B8F7F-A503-5E6A-B638-1092C948F4DE" xml:space="preserve">TDateTime dateTime;
+TInt year=1996, month=12, day=31;
+dateTime.Set(year,TMonth(month-1),day-1,0,0,0,0);</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61459132-3AC2-55D3-AC28-D6FA689409E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-61459132-3AC2-55D3-AC28-D6FA689409E6"><title>How to invoke a static analysis tool using abld</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Description</title> <p>A static analysis tool can be integrated with the Symbian platform build system by using a command line argument to <filepath>abld</filepath>. This feature is new in v9.5. </p> <p>To invoke a static analysis tool, the <codeph>–wrap</codeph> option must be passed to <filepath>abld</filepath>. For example: </p> <p><userinput>abld build armv5 urel –wrap</userinput> </p> <p>The name of the static analysis tool executable is set using the environment variable <codeph>ABLD_COMPWRAP</codeph>. </p> <p>If <codeph>ABLD_COMPWRAP</codeph> has not been set, then using the <codeph>–wrap</codeph> option causes abld to report an error and terminate. The exception to this is if the <codeph>–keepgoing</codeph> option has additionally been used, for instance: </p> <p><userinput>abld build armv5 urel –wrap -keepgoing</userinput> </p> <p>In this case abld reports a warning and ignores the <codeph>–wrap</codeph> option. </p> </section> <section><title>Log file output folders</title> <p>When invoking abld for multiple platforms and/or build variants (debug and release), the analysis tool may generate multiple log files. In order to avoid log files overwriting each other, they need to be generated in different locations. To do this, pass a target folder as an argument to the static analysis tool that includes the environment variable <codeph>OUTPUT_NAME</codeph>. abld will replace <codeph>OUTPUT_NAME</codeph> with a platform and build-specific folder name. For example, (the following command line assumes that the target folder is passed to the analysis tool using an argument called <codeph>emitpath</codeph>): </p> <p><userinput>set ABLD_COMPWRAP=tool.exe –emitpath c:\analysis\report\$(OUTPUT_NAME)</userinput> </p> <p><userinput>abld build armv5 –wrap</userinput> </p> <p>In this example, the log files for the release build are generated in <filepath>c:\analysis\report\armv5_urel\</filepath> and for the debug build in <filepath>c:\analysis\report\armv5_udeb\</filepath>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6163197B-7983-5FB7-9B92-02E490A900FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6163197B-7983-5FB7-9B92-02E490A900FB" xml:lang="en"><title>How to
+construct a header</title><shortdesc>This document describes how to create a header for a doubly linked
+list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In order to construct a header, two important pieces of information are
+needed:</p>
+<ul>
+<li id="GUID-2E721D77-E010-5211-BABE-94578AECEEE4"><p>the <i>type</i> of object
+which forms the elements.</p> </li>
+<li id="GUID-71FC8FBF-803F-55BC-AC52-D672B1DA36BA"><p>the <i>offset</i> of
+the link object from the start of the element.</p> </li>
+</ul>
+<p>To create a header for a doubly linked list of <codeph>CMyClass</codeph> elements,
+defined as:</p>
+<codeblock id="GUID-D995F2F7-6A38-5EE3-9210-1302E1662759" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TDblQueLink iDlink;
+    ...
+    };</codeblock>
+<p>construct a <codeph>TDblQue</codeph> as follows:</p>
+<codeblock id="GUID-D13C33D2-EE7E-5915-92E2-F3EC5C772B4D" xml:space="preserve">TDblQue&lt;CMyClass&gt; queHeader(_FOFF(CMyClass,iDlink));</codeblock>
+<p>The <codeph>TDblQue</codeph> class takes a class template parameter which
+defines the type of object which is to form an element of the list. In this
+example, objects of type <codeph>CMyClass</codeph> form the elements of the
+list.</p>
+<p>The <codeph>_FOFF</codeph> macro (i.e. the "field offset" macro) calculates
+the offset of the component link object within the element. In this example,
+the required value is the offset of the <codeph>iDlink</codeph> data member
+from the start of <codeph>CMyClass</codeph>. </p>
+<fig id="GUID-9C102C34-EFFA-530A-AA1E-C6AE08FDFA37">
+<title/>
+<image href="GUID-29E7942D-A00D-5771-9782-59260965C687_d0e189052_href.png" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6167C2F2-BC5B-5B10-BD5D-7702BE4112F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6167C2F2-BC5B-5B10-BD5D-7702BE4112F6" xml:lang="en"><title>View
+Server Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The UI Control Framework <xref href="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita">(CONE)</xref> provides <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> that
+provides an interface to the View Server, which enables seamless switching
+between different views across various applications. </p>
+
+<section><title>Introduction</title> <p>The UI framework built on Cone/uikon
+can make a choice to use the View Server. </p> <p>The view architecture allows
+applications to make and receive requests to show a particular view of their
+data. It allows applications to have integration between their user interfaces.
+This particularly allows the user to navigate through the UI on the basis
+of the task they are working on, rather than perceiving separate applications.
+For example, an application provides a view of a given Contact, any other
+application may display a contact using that view. </p> <p>Views are UI controls
+that are derived from the <xref href="GUID-2C5E3F6C-6679-3914-9736-62296E7715A7.dita"><apiname>MCoeView</apiname></xref> abstract view interface
+and display application data. Typically views are top-level window-owning
+controls. Each view is given a unique identifier of type <xref href="GUID-3DEA9A17-CB50-3DCD-87AC-0E91B377FB0E.dita"><apiname>TVwsViewId</apiname></xref>. <xref href="GUID-3DEA9A17-CB50-3DCD-87AC-0E91B377FB0E.dita"><apiname>TVwsViewId</apiname></xref> is
+a combination of the UID of the application and the UID of the view within
+the application. An application participating in the view switching must complete
+the steps given in the procedure section.</p> </section>
+<section><title>Procedure</title> <ol id="GUID-5DC514F9-9040-5D61-BC2C-FE04BA11B51C">
+<li id="GUID-1696E5F0-DB4A-5F40-B6E8-810FA93DC5A5"><p><xref href="GUID-AC6FCBB0-E4FD-4D30-B000-1F652B2EE96A.dita">Create
+an instance of <apiname>CCoeAppUi</apiname></xref> </p> </li>
+<li id="GUID-441C5876-D063-568F-A814-B85464DBCE27"><p><xref href="GUID-13D2B45C-3A2A-497A-8D6A-87BE34D1DE69.dita">Implement
+the observer functions to get notification on events, if required.</xref> </p> </li>
+<li id="GUID-32128AF4-8773-5105-B5C0-490668AB08C4"><p><xref href="GUID-A399508A-DE6A-490D-9BFB-4FCF56FF9D4C.dita">Derive
+a class from the <apiname>MCoeView</apiname> class.</xref> </p> </li>
+<li id="GUID-C95EBECB-3503-5BB6-B0CC-8964C76074A8"><p><xref href="GUID-6FD4E7A4-D215-4CFB-BC7A-23065DE95C5C.dita">Add
+the view to the control stack to receive key events.</xref> </p> </li>
+<li id="GUID-9996BF57-3220-5D74-B7A1-5CD56D63F905"><p><xref href="GUID-940E3C48-D0ED-419A-9172-E4856C6CA809.dita">Register
+the view with the View Server. </xref></p> </li>
+<li id="GUID-C571AF24-46FA-517C-A765-1745973FE8DF"><p>Perform one or more
+of the following tasks: </p> <ol id="GUID-A24F5604-C2CF-52DF-BDD4-BF4FDB36325B">
+<li id="GUID-63CFD000-82CB-5842-9AF4-05FA34C0E24C"><p><xref href="GUID-2D6689C2-F17D-48A8-8EC9-3D83BCAA3681.dita">Activate
+a view through the client session.</xref> </p> <p>If the view which has to
+be activated is not registered with the server when an activation request
+arrives, the view server starts the application associated with that view. </p> </li>
+<li id="GUID-18668608-892D-57CF-9619-B5D141E5AA37"><p><xref href="GUID-210A181E-5EB6-4626-9E7E-8761A2272D79.dita">Set
+a view as a default view.</xref> </p> </li>
+<li id="GUID-6A1FBF71-8F52-58C2-AEFA-FC4ED601CDD1"><p><xref href="GUID-4ADDDAFE-0941-4787-B07B-F5B7D8D5B1AA.dita">Deregister
+a view</xref>, if required. </p> </li>
+</ol> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita"><linktext>View Server
+Overview</linktext></link>
+<link href="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita"><linktext>Control Stack</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4" xml:lang="en"><title>Application resource tools guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6180B291-1862-5F1F-AF05-85E42B37B172.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6180B291-1862-5F1F-AF05-85E42B37B172" xml:lang="en"><title>Introduction
+to dynamic arrays</title><shortdesc>Describes dynamic arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A number of classes are provided for constructing dynamically expandable
+arrays in which the memory for the array elements is allocated from the heap.</p>
+<p>The elements of an array can consist of any object, but in practice the
+most common types are:</p>
+<ul>
+<li id="GUID-9D76EEA1-F186-56C8-89C1-87C53BA610F3"><p>pointers to <codeph>CBase</codeph> -
+derived objects.</p> </li>
+<li id="GUID-103A9CCE-B108-51B9-BD9E-BD6C389E5DF7"><p><codeph>T</codeph> type
+and <codeph>R</codeph> type objects.</p> </li>
+</ul>
+<p>The array classes are all templated; the template parameter defines the
+type of object which is to form an array element.</p>
+<p>An array can consist of elements which have variable lengths or elements
+which all have the same length, depending on the specific class used.</p>
+<p>Logically, each element of an array has a definite position within that
+array but the physical organisation of the elements depends on the specific
+array class.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-619A607D-CA89-5A98-887D-5B1D2A5F921C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-619A607D-CA89-5A98-887D-5B1D2A5F921C"><title>mmp file statements</title><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-646800BE-9807-5F5C-A13F-F2E2EBE65B24"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <xref href="GUID-48BD628F-F47F-535B-B148-7425A6704FC2.dita">always_build_as_arm</xref>  </p> </entry> <entry><p>override the build target to build for ARM </p> </entry> </row> <row><entry><p> <xref href="GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita">armfpu</xref>  </p> </entry> <entry><p>how the compiler is to deal with floating point instructions </p> </entry> </row> <row><entry><p> <xref href="GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F.dita">baseaddress</xref>  </p> </entry> <entry><p>address to which a DLL will be built and, if possible, loaded </p> </entry> </row> <row><entry><p> <xref href="GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita">bytepaircompresstarget</xref>  </p> </entry> <entry><p>specifies that the target executable should be compressed using the bytepair algorithm </p> </entry> </row> <row><entry><p> <xref href="GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644.dita">capability</xref>  </p> </entry> <entry><p>platform security capability </p> </entry> </row> <row><entry><p> <xref href="GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita">compresstarget</xref>  </p> </entry> <entry><p>specifies that the target executable should be compressed using the Deflate, Huffman+LZ77 algorithm </p> </entry> </row> <row><entry><p> <xref href="GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD.dita">debuglibrary</xref>  </p> </entry> <entry><p>libraries that are only required in debug builds </p> </entry> </row> <row><entry><p> <xref href="GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90.dita">deffile</xref>  </p> </entry> <entry><p>override the default linker definition file </p> </entry> </row> <row><entry><p> <xref href="GUID-E71D8907-236E-5948-9594-E14E34A31DC8.dita">document</xref>  </p> </entry> <entry><p>document (non-code) files </p> </entry> </row> <row><entry><p> <xref href="GUID-432FF981-010F-540B-834F-FF924238AA2A.dita">epocheapsize</xref>  </p> </entry> <entry><p>minimum and maximum heap sizes for your executable </p> </entry> </row> <row><entry><p> <xref href="GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931.dita">epocprocesspriority</xref>  </p> </entry> <entry><p>process priority for your <filepath>.exe</filepath> executable </p> </entry> </row> <row><entry><p> <xref href="GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita">epocstacksize</xref>  </p> </entry> <entry><p>stack size for your executable </p> </entry> </row> <row><entry><p> <xref href="GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03.dita">exportlibrary</xref>  </p> </entry> <entry><p>specify name of .lib file </p> </entry> </row> <row><entry><p> <xref href="GUID-9F22E663-8BC4-5502-879F-E6B790465E74.dita">exportunfrozen</xref>  </p> </entry> <entry><p>create library file without requiring frozen exports </p> </entry> </row> <row><entry><p> <xref href="GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita">inflatecompresstarget</xref>  </p> </entry> <entry><p>specifies that the target executable should be compressed using the Deflate, Huffman+LZ77 algorithm </p> </entry> </row> <row><entry><p> <xref href="GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita">lang</xref>  </p> </entry> <entry><p>languages code for the project </p> </entry> </row> <row><entry><p> <xref href="GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita">library</xref>  </p> </entry> <entry><p>import libraries </p> </entry> </row> <row><entry><p> <xref href="GUID-567D36A2-1097-5D44-B1B2-896F0F812A32.dita">linkas</xref>  </p> </entry> <entry><p>give a DLL a different internal name than its filename </p> </entry> </row> <row><entry><p> <xref href="GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE.dita">macro</xref>  </p> </entry> <entry><p> <codeph>#defines</codeph> for the preprocessing of source code </p> </entry> </row> <row><entry><p> <xref href="GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita">nocompresstarget</xref>  </p> </entry> <entry><p>states that the target executable should not be compressed </p> </entry> </row> <row><entry><p> <xref href="GUID-A05F0124-AE28-5088-8AFE-22956D1549AD.dita">noexportlibrary</xref>  </p> </entry> <entry><p>stops the generation of a component's <filepath>.lib</filepath> file. </p> </entry> </row> <row><entry><p> <xref href="GUID-7226154E-2387-5D14-A009-2A1A60617970.dita">nostrictdef</xref>  </p> </entry> <entry><p>do not apply a <filepath>u</filepath> suffix to frozen <filepath>.def</filepath> files </p> </entry> </row> <row><entry><p> <xref href="GUID-2393237A-E60F-5556-8657-B0AA6470225C.dita">option</xref>  </p> </entry> <entry><p>specify additional compiler options </p> </entry> </row> <row><entry><p> <xref href="GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F.dita">resource</xref>  </p> </entry> <entry><p>resource file for application projects </p> </entry> </row> <row><entry><p> <xref href="GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita">secureid</xref>  </p> </entry> <entry><p>secure identifier of the executable </p> </entry> </row> <row><entry><p> <xref href="GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA.dita">source</xref>  </p> </entry> <entry><p>source files </p> </entry> </row> <row><entry><p> <xref href="GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita">sourcepath</xref>  </p> </entry> <entry><p>location of the project and its workfiles </p> </entry> </row> <row><entry><p> <xref href="GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605.dita">srcdbg</xref>  </p> </entry> <entry><p>disables the use of optimisation in debug builds </p> </entry> </row> <row><entry><p> <xref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita">start bitmap</xref>  </p> </entry> <entry><p>bitmaps to build into an <filepath>.mbm</filepath> file </p> </entry> </row> <row><entry><p> <xref href="GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E.dita">start &lt;platform&gt;...end</xref>  </p> </entry> <entry><p>platform-specific section </p> </entry> </row> <row><entry><p> <xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start resource</xref>  </p> </entry> <entry><p>resource file to build </p> </entry> </row> <row><entry><p> <xref href="GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5.dita">start stringtable</xref>  </p> </entry> <entry><p>specifies the source file for the string table </p> </entry> </row> <row><entry><p> <xref href="GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E.dita">staticlibrary</xref>  </p> </entry> <entry><p>static libraries </p> </entry> </row> <row><entry><p> <xref href="GUID-B58D93D7-597C-5200-82ED-F434B297CAC9.dita">strictdepend</xref>  </p> </entry> <entry><p>project's dependencies may differ with the variant, </p> </entry> </row> <row><entry><p> <xref href="GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9.dita">systeminclude</xref>  </p> </entry> <entry><p>system header files directories </p> </entry> </row> <row><entry><p> <xref href="GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E.dita">systemresource</xref>  </p> </entry> <entry><p>resource file for system projects; from v9.0, use <xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start resource</xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita">target</xref>  </p> </entry> <entry><p>file generated by the project </p> </entry> </row> <row><entry><p> <xref href="GUID-7681734D-1291-59A3-B226-BC58403FA8A0.dita">targetpath</xref>  </p> </entry> <entry><p>where the project should be released </p> </entry> </row> <row><entry><p> <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref>  </p> </entry> <entry><p>kind of project </p> </entry> </row> <row><entry><p> <xref href="GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita">uid</xref>  </p> </entry> <entry><p>UIDs for a project </p> </entry> </row> <row><entry><p> <xref href="GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita">userinclude</xref>  </p> </entry> <entry><p>project's header files directories </p> </entry> </row> <row><entry><p> <xref href="GUID-535793F2-08F1-5B4E-AD32-783985C53124.dita">vendorid</xref>  </p> </entry> <entry><p>vendor identifier </p> </entry> </row> <row><entry><p> <xref href="GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5.dita">version</xref>  </p> </entry> <entry><p>set the version </p> </entry> </row> <row><entry><p> <xref href="GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita">wcharentrypoint</xref>  </p> </entry> <entry><p>set the entry point for a standard EXE </p> </entry> </row> <row><entry><p> <xref href="GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4.dita">win32_library</xref>  </p> </entry> <entry><p>Win32 system libraries to link to in a WINS/WINSCW build </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61B965D9-B85E-5F40-8D56-1C0FA77D2492.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-61B965D9-B85E-5F40-8D56-1C0FA77D2492" xml:lang="en"><title>Using UI Graphics
+Utilities (EGUL) and Text Utilities (ETUL)</title><shortdesc>This section explains the Symbian Text Utility components and the
+miscellaneous user interface utility functions relating to fonts, colors and
+drawing. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e42756_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61DEE78D-4E78-5367-BC8A-F99D3B4E9D5A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-61DEE78D-4E78-5367-BC8A-F99D3B4E9D5A" xml:lang="en"><title>More about
+Cleanup Support</title><shortdesc>Provides an introduction to code construction and error management
+options. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD" xml:lang="en"><title>Socket Server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Sockets Server provides a generic interface to communications protocols through communication end points known as sockets. The Sockets Server is also known as ESock. This is the name of the library that implements the Sockets Server. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-61E219A3-7D9D-5AAA-B6B3-61F0749E12B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-61E219A3-7D9D-5AAA-B6B3-61F0749E12B3"><title>MIDI Client Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the MIDI Client. </p> <section><title>Purpose</title> <p>The MIDI Client provides an interface for manipulating MIDI data. </p> <p><b>MIDI Client Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-3EF13B1F-3685-559C-9124-FA5BCA44E8BD"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b> midiclient.dll</b>  </p> </entry> <entry><p> <b> midiclient.lib</b>  </p> </entry> <entry><p>These files are used for implementing the MIDI Client. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The MIDI Client interacts with the lower levels of Multimedia Framework (known as the controller framework). The controller framework is in turn responsible for managing the interface to audio hardware. </p> </section> <section><title>Description</title> <p>The MIDI Client provides an interface to open, play and obtain information in MIDI format. The MIDI data can supplied either in a file, a descriptor or a URL. </p> </section> <section><title>Key MIDI Client Classes</title> <p>The functionality provided by the MIDI Client is contained within the following class: </p> <ul><li id="GUID-E47FBA3F-75C5-594E-8DA0-84AA7E906655"><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>CMidiClientUtility</apiname></xref>. </p> </li> </ul> </section> <section><title>Using the MIDI Client</title> <p>Clients can use the MIDI Client to: </p> <ul><li id="GUID-DFD95031-4994-5A0C-9CC1-5ECC8C472B3A"><p>Open a MIDI source. </p> </li> <li id="GUID-2348A2A6-31F2-580A-A3F6-3D87536C492C"><p>Play MIDI data. </p> </li> <li id="GUID-C32CB5A4-ACBA-59CA-9DD5-E45ABF2FF849"><p>Control the MIDI player. </p> </li> <li id="GUID-614EF024-1AA0-5110-A9C2-54796F1FB8DD"><p>Retrieve information from the MIDI player. </p> </li> <li id="GUID-F48D61ED-5424-549F-8BDE-2FF966B91A3E"><p>Monitor the state of MIDI data. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita"> MIDI Playing</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-62166BC9-D0BC-5070-BC57-2A1F4948BAFE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-62166BC9-D0BC-5070-BC57-2A1F4948BAFE" xml:lang="en"><title>Restoring
+Email Messages</title><shortdesc>This tutorial exaplins hwo to restore email messages for sending
+in chunks. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <ol id="GUID-CC5BDBE0-C0DF-589F-A88F-B8D7D804C6CE">
+<li id="GUID-08387B03-73BC-545E-B2B5-EB9D1186A31A"><p>The MTM that needs to
+restore message data from message store in chunks should get the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> object
+using the <xref href="GUID-64068543-5092-3197-AB0C-E42A96E2075C.dita"><apiname>InitialisePlainBodyTextForReadL()</apiname></xref> method of <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref>. </p> </li>
+<li id="GUID-7E8C3041-3A11-5266-9BB6-FDAE2BB4F4FD"><p>Set <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> to
+the ID whose body text needs to be stored, and open it in the read mode. </p> </li>
+<li id="GUID-4DB1F50F-DFD6-585D-ABBD-2EFC29C88326"><p>Use any of the following <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita#GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F/GUID-7EE4AF2A-6DD6-399A-A9F6-6192107A9CA9"><apiname>CMsvPlainBodyText::NextChunkL()</apiname></xref> methods
+to get the email message in chunks: </p> <ol id="GUID-F761D85A-AFB3-59E0-A73F-B2EB0B5C4D60">
+<li id="GUID-D8CFEC49-8A2E-5D5D-9ABC-81D586663581"><p> <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8 </apiname></xref> <codeph>&amp;aChunk</codeph>  </p> </li>
+<li id="GUID-BFCE36F8-217F-5FBE-922E-81D39CDF4E6B"><p> <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref>  <codeph>&amp;aChunk</codeph>, <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref>  <codeph>&amp;aStatus</codeph>  </p> </li>
+<li id="GUID-3E632136-5124-5BDF-80BB-62D766659F4C"><p> <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref> <codeph> &amp;aChunk</codeph>  </p> </li>
+<li id="GUID-BCF5D75D-0174-5450-B47E-8833FC835CC7"><p> <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref>  <codeph>&amp;aChunk</codeph>, <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> <codeph>&amp;aStatus</codeph>  </p> </li>
+</ol> <p>The length of the chunk to be restored in a single call to <codeph>NextChunkL()</codeph> is
+decided by the MTM, when it initialises <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> for
+the read operation. </p> <note> The email application can call <codeph>NextChunkL()</codeph> until
+the length of the chunk populated by <codeph>NextChunkL()</codeph> is <codeph>0</codeph>.</note></li>
+<li id="GUID-101359C2-A3FF-580A-9A3A-02CA1DE33A4D"><p>The retrieved message
+data can be sent by the MTM in chunks. </p> </li>
+</ol><note> The MTM can also use the existing <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-8825B8E5-0285-3F0B-965D-D67F0F767D1B"><apiname>CMsvStore::RestoreBodyTextL()</apiname></xref> method
+to retrieve the entire body text in a single operation. To do this, the plain
+text body of the email message, which is stored in the message store, will
+be copied to the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> reference and passed to <codeph>RestoreBodyTextL()</codeph>. </note> </section>
+</conbody><related-links>
+<link href="GUID-3FD5C609-3727-53B6-900F-ACBE59F62E4A.dita"><linktext>Storing Downloaded
+Email  Messages</linktext></link>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-62195532-3FD0-5A3B-90E6-D624C4A60594.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-62195532-3FD0-5A3B-90E6-D624C4A60594"><title>Calendar User</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <xref href="GUID-FBFE40BE-BF1A-3A12-A3B6-D2BDB5B6406D.dita"><apiname>CCalUser</apiname></xref> represents a calendar user, such as a meeting participant. The class provides attributes and methods that are common to all the calendar users, including the user’s email address, sent-by and common name fields. </p> <p>You can construct a new calendar user with a specified email address, and optionally a sender, using the factory function <xref href="GUID-FBFE40BE-BF1A-3A12-A3B6-D2BDB5B6406D.dita#GUID-FBFE40BE-BF1A-3A12-A3B6-D2BDB5B6406D/GUID-E704BAD2-66AA-3E08-8AB2-0E1DC38DDC56"><apiname>CCalUser::NewL()</apiname></xref>. </p> <section><title>Attendee</title> <p>An attendee is a specialised calendar user used for attendees of an event. It is used only in group scheduled entries, and not for a single calendar user. The <xref href="GUID-EDF0615A-DB34-3298-A383-314AE1E00E30.dita"><apiname>CCalAttendee</apiname></xref> class, derived from <xref href="GUID-FBFE40BE-BF1A-3A12-A3B6-D2BDB5B6406D.dita"><apiname>CCalUser</apiname></xref>, provides additional methods to store and retrieve an attendee's ROLE, PART-STAT, and RSVP fields. </p> <codeblock id="GUID-002E2258-75E2-5CB0-AD6F-75A21A165366" xml:space="preserve">//Create an attendee
+_LIT(KAttendee1Address, "tom.smith@org.com");
+CCalAttendee* attendee1 = CCalAttendee::NewL(KAttendee1Address);
+_LIT(KAttendee1CommonName, "Tom");
+attendee1-&gt;SetCommonNameL(KAttendee1CommonName);//set common name to Tom
+attendee1-&gt;SetRoleL(CCalAttendee::EReqParticipant);// set the role of the attendee, other roles Chair and Optional participant
+attendee1-&gt;SetStatusL(CCalAttendee::EAccepted);// set the status value</codeblock> <codeblock id="GUID-809DADD5-B007-5AA8-AA64-9E442ECFC962" xml:space="preserve">// setup the entry
+entry-&gt;CCalEntry::NewL(CCalEntry::EAppt, guid, CCalEntry::EMethodNone, 0);
+entry-&gt;AddAttendeeL(attendee1);//add the attendee to the entry</codeblock> <p>You can get a list of attendees using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita#GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801/GUID-D6202737-D180-34C5-9FB0-D19673689ECE"><apiname>CCalEntry::AttendeesL()</apiname></xref>, and delete a specified attendee using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita#GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801/GUID-21A0AA94-BBB4-3547-9559-0B137348AC30"><apiname>CCalEntry::DeleteAttendeeL()</apiname></xref>. </p> </section> <section><title>Organizer and phone owner</title> <p>An entry can optionally have one phone owner and one organizer, both of which are of class <xref href="GUID-FBFE40BE-BF1A-3A12-A3B6-D2BDB5B6406D.dita"><apiname>CCalUser</apiname></xref>. The organizer may or may not be an attendee of that entry, but the phone owner must be an attendee. An organizer is a required property for a group scheduled entry. </p> <codeblock id="GUID-EF7AE721-DA4D-5A4C-9971-A10F8BBA9A17" xml:space="preserve">//Set up the Organizer 
+_LIT(KOrganizerAddress1, "harry.smith@org.com"); 
+CCalUser* organiser1 = CCalUser::NewL(KOrganizerAddress1, KOrganizerSentByA); 
+entry-&gt;SetOrganizerL(organiser1); //set the organizer for the event
+_LIT(KOrganiserCommonName, "Harry"); 
+organiser1-&gt;SetCommonNameL(KOrganizerCommonName); //set the  common name to Harry </codeblock> <codeblock id="GUID-A23316EA-8989-5F74-81A0-15530CA66AF8" xml:space="preserve">//Set up the Phone owner for the calendar entry 
+_LIT(KPhoneOwnerAddress1, "dick.smith@org.com"); 
+CCalUser* phOwner1 = CCalUser::NewL(KPhoneOwnerAddress1, KOrganizerSentByB); 
+entry-&gt;SetPhoneOwnerL(phOwner1); 
+_LIT(KPhOwnerCommonName, "Dick"); 
+organiser1-&gt;SetCommonNameL(KPhOwnerCommonName);//set the common name to Dick</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-623CA1EE-4D25-495A-BD2F-BA7BF95D6D9C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-623CA1EE-4D25-495A-BD2F-BA7BF95D6D9C" xml:lang="en"><title>Creating
+a Vibra instance to control the vibra</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>A <codeph>CHWRMVibra</codeph> instance can be created by
+using <codeph>NewL()</codeph> or <codeph>NewLC()</codeph> methods. After this,
+vibra can be directly controlled via the provided class methods.</p><p><b>Without
+notify handling</b></p><p>The user has to create an instance of the <codeph>CHWRMVibra</codeph> implementation
+class using the <codeph>NewL()</codeph> or <codeph>NewLC()</codeph> constructor
+without a parameter. The following code snippet demonstrates how to create
+an instance without notify handling to control the device vibra:</p><codeblock xml:space="preserve">CHWRMVibra* vibra = CHWRMVibra::NewLC(); // No callbacks</codeblock><p><b>With notify handling </b></p><p>The client must derive a class from
+the <codeph>MHWRMVibraObserver</codeph> interface and implement the <codeph>VibraModeChanged()</codeph> and <codeph>VibraStatusChanged()</codeph> methods.</p><p>The following code snippet gives an example of the header of the class
+implemented by the client:</p><codeblock xml:space="preserve">// INCLUDES
+#include HWRMVibra.h // Link against HWRMVibraClient.lib.
+class CVibraStatusObserver : public CBase,
+                             public MHWRMVibraObserver
+    {
+    public:
+        CVibraStatusObserver();
+        ~CVibraStatusObserver();
+        void ConstructL();
+        static CVibraStatusObserver* NewL(); 
+        // from MHWRMVibraObserver
+        virtual void VibraModeChanged( CHWRMVibra::TVibraModeState aStatus );
+        virtual void VibraStatusChanged( CHWRMVibra::TVibraStatus aStatus );
+    private:
+        CHWRMVibra* iVibra;
+    };
+</codeblock><p>Create an instance of the <codeph>CHWRMVibra</codeph> implementation
+class using the <codeph>NewL()</codeph> or <codeph>NewLC()</codeph> constructor
+with a parameter. This parameter is a pointer to an object that is derived
+from <codeph>MHWRMVibraObserver</codeph>. Every vibra user setting profile
+change causes the notification using <codeph>MHWRMVibraObserver::VibraModeChanged()</codeph>.
+Every vibra status change causes the notification using <codeph>MHWRMVibraObserver::VibraStatusChanged()</codeph>. </p><p>The
+following code snippet demonstrates how to create an instance with notify
+handling to control the device vibra:</p><codeblock xml:space="preserve">void CVibraStatusObserver::ConstructL()
+    {
+    iVibra = CHWRMVibra::NewL( this )
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-625FFD05-5660-4A8B-A543-BABB5E7A5503.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-625FFD05-5660-4A8B-A543-BABB5E7A5503" xml:lang="en"><title>Header
+Structure</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5C773AFB-8332-4CB2-B811-E8029F79E284"> <p>HTTP represents
+headers as a composition of parts and parameters. A simple header will have
+only one part, for example: </p> <codeblock id="GUID-A82B0317-1A26-5903-8E71-00144572B193" xml:space="preserve">Location: www.symbian.org</codeblock> <p>More
+complex headers consist of a number of parts, separated by semicolon (;) or
+comma (,) characters. In RFC 2616, these are defined with the EBNF notation
+'rule - A construct "#" is defined, similar to "*", for defining lists of
+elements...' </p> <p>An example of a multiple-part header is: </p> <codeblock id="GUID-5A84BC7B-DDB4-59C2-9A94-6AB27B16E15A" xml:space="preserve">Accept: text/*, text/html, */*</codeblock> <p>The
+three parts have values text/*, text/html and */* respectively. When setting
+up a header like this, the client only needs to specify the parts, and need
+not be concerned with separator characters. Separators are handled automatically
+by the built-in header codec. </p> <p>Some header fields allow one or more
+parameters to be associated with individual header parts. An example of a
+header with parameters is: </p> <codeblock id="GUID-74FC7FC7-EC3A-55EF-840F-8952E13B1A80" xml:space="preserve">Content-Type: text/html; charset=ISO-8859-4</codeblock> <p>The Content-Type header has a single part (value 'text/html') that has a
+single parameter (named 'charset', value 'ISO-8859-4'). Again, the client
+need only be concerned with setting part and parameter values; the separators
+including the '=' character are dealt with automatically. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e92200_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6285AC85-C16B-4EAF-87EB-2080B24D943F_d0e45965_href.png has changed
Binary file Symbian3/SDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59-master.png has changed
Binary file Symbian3/SDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e252086_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e313053_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-629AB2C9-BEDD-5166-8B09-F8DFF7527C03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-629AB2C9-BEDD-5166-8B09-F8DFF7527C03"><title>The system drive</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian OS allows a drive on a device to be marked as the system drive. The system drive is set up during device startup and cannot subsequently be changed. It has the following properties: </p> <ul><li id="GUID-F0C2D00C-C7B6-5784-9834-02AC3ED7647A"><p>it is both readable and writable. </p> </li> <li id="GUID-13E4ECB2-E432-5741-BDB7-CA1413CF1F93"><p>it is always available, cannot be removed from the device, and is secure. </p> </li> <li id="GUID-74F7015E-1937-5199-978D-C21960E1F429"><p>it is non-volatile, which means that the drive is located on media such as flash memory or battery-backed RAM. </p> </li> </ul> <p>Typically, the system drive is used: </p> <ul><li id="GUID-DA8E500E-F940-56BA-A506-D9D69D9F231A"><p>for storing persistent settings for system and application software. </p> </li> <li id="GUID-2EC9B640-BE97-5DA3-A222-37A7DF553B2E"><p>for storing localisation resources. </p> </li> <li id="GUID-0FCD75EF-9D0A-520C-BD96-8E03372CF52B"><p>as a default drive for user data. </p> </li> <li id="GUID-E77D6A04-4CCE-5EA1-99B7-2F399985A82F"><p>as a target drive for installing software. </p> </li> </ul> <section id="GUID-0544A0FC-6CDC-57A1-9750-9445DC7CD521"><title>Getting the system drive</title> <p>The system drive is identified by its drive letter. Use the function <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-4DBDB23D-A64D-3428-8D6B-1941CB457CB6"><apiname>RFs::GetSystemDriveChar()</apiname></xref> to find the system drive letter. </p> <p>If you also need to know the drive number, then you can use the function <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-E3FADD47-C66B-3E79-827A-DEE36EE79B0E"><apiname>RFs::GetSystemDrive()</apiname></xref> to find this. However, getting the drive letter is the most common requirement. </p> <p>[Note that in versions of Symbian OS before 9.2, the system drive number was fetched using the function <codeph>BaflUtils::GetSystemDrive()</codeph>. This function is now <i>deprecated</i> and should <i>not</i> be used.] </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-62D5E0F0-0041-436C-AEF3-3F1C32ABFC1A_d0e47456_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9" xml:lang="en"><title>Using
+long-tap events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Long-tap events allow you to specify functions performed when the user
+taps and holds the button for a specified period of time. An example of a
+long-tap function is fast forwarding in a media player application by tapping
+and holding down a button.</p>
+<p>To receive long-tap events, use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknLongTapDetector.html" format="application/java-archive"><codeph>CAknLongTapDetector</codeph></xref> in the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/Touch_UI_Utilities_APIIndexPage.html" format="application/java-archive">Touch
+UI utilities API</xref>.</p>
+<p>To enable the handling of long tap events in your <codeph>CAknButton</codeph> ,
+set the flag <codeph>KAknButtonReportOnLongPress</codeph> for the button.
+When the long tap event starts,<codeph> CAknButton::ELongPressEvent</codeph> is
+reported to the button observer (<codeph>MCoeControlObserver</codeph>). When
+the long tap event ends, <codeph>CAknButton::ELongPressEndedEvent</codeph> is
+reported.</p>
+<p>To define the period for which the button needs to be held down for a long-tap
+event, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#5b5323936073f454e96847337131030a" format="application/java-archive"><codeph>SetLongPressInterval()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref>.</p>
+<codeblock xml:space="preserve">void CMyAppContainer::ConstructL() 
+{ 
+… 
+iButton = CAknButton::NewL( NULL, NULL, NULL, NULL, 
+
+KNullDesC, KNullDesC , KAknButtonReportOnLongPress, 0 ); 
+
+iButton-&gt;SetContainerWindowL( *this ); 
+iButton-&gt;SetObserver( this ); 
+… 
+} 
+
+void CMyAppContainer::HandleControlEventL( CCoeControl* aControl, 
+                                                  TCoeEvent aEventType ) 
+    { 
+        switch ( aEventType ) 
+            { 
+
+// Button is pressed for a long time 
+
+            case CAknButton::ELongPressEvent: 
+                        if ( aControl == iButton ) 
+
+{ 
+
+                        … 
+
+} 
+
+                break; 
+
+// Button long press ended 
+
+            case CAknButton::ELongPressEndedEvent: 
+                        if ( aControl == iButton ) 
+
+{ 
+
+                        … 
+
+} 
+
+                break; 
+
+            default: 
+                break; 
+            } 
+    } 
+
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-62E8D3DF-7DF8-5FCA-8D7D-AA30EB0B8962.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-62E8D3DF-7DF8-5FCA-8D7D-AA30EB0B8962"><title>Low Level Libraries and Frameworks Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Low Level Libraries and Frameworks collection comprises various low-level system and application utilities, a generic usability library and an extensible plug-in framework. </p> <section><title>Description</title> <p>Low Level Libraries and Frameworks includes the following components: </p> <ul><li id="GUID-0120320B-C32E-5003-8BD2-6A764155213E"><p> <b>Application Utilities:</b> A collection of libraries that provide low-level system and application utility APIs. It includes the following libraries: </p> <ul><li id="GUID-5B1B2CEF-7410-5A2C-A75E-CD7349F521BA"><p><xref href="GUID-39D1807D-3AE0-5273-AA3B-80E8F580DC0B.dita">Activity Manager</xref>  </p> </li> <li id="GUID-1D3047AE-F940-5002-8F15-EDE771E7E8CC"><p><xref href="GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F.dita">Basic Application Framework Utilities (BAFL)</xref>  </p> </li> <li id="GUID-D8FEF0A1-7845-51C8-A8C0-607E8D20901F"><p><xref href="GUID-D98E984D-69A5-5BA8-89E7-A7CC9FD0C584.dita">Base Services Utility Library (BSUL)</xref>  </p> </li> <li id="GUID-60D36AF0-A9EC-5116-A5C7-62CC476BB4E5"><p><xref href="GUID-4B8AEE55-1601-5CF8-9DD1-492DAE18F0F8.dita">System Utilities</xref>  </p> </li> </ul> <p>For more information about this component, see <xref href="GUID-D02B5AF1-B1C3-560D-9654-971A5CC1A904.dita">Application Utilities</xref>. </p> </li> <li id="GUID-F9168726-55DA-5146-975C-A69BC29F95E3"><p> <b>Generic Usability Library (EUserHL):</b> For historic reasons Symbian C++ has non-standard idioms for writing memory efficient leave-safe code. This library provides support for alternative mechanisms which might be more familiar to Symbian Developers new to Symbian platform, and which require fewer lines of code. These include: </p> <ul><li id="GUID-88E98632-2237-5E9F-BEA5-629344D11A47"><p>Single phase construction </p> </li> <li id="GUID-BEEA1776-19D2-5371-8D41-4E4E9F287D6E"><p>Constructors which can leave </p> </li> <li id="GUID-7C180C31-CB29-520C-A9B6-73AD9FBBB4A4"><p>Self managing variable length strings </p> </li> <li id="GUID-6CC06B10-EAA4-5768-A8A1-BB0A6871CD13"><p>Managed pointers which do not require explicit deletion </p> </li> <li id="GUID-FD8FC39B-AFD0-5B7D-B165-DA03A7E74600"><p>Cleaned up pointers which do not require explicit use of the CleanupStack API. </p> </li> </ul> <p>For more information about this component, see <xref href="GUID-D60B55FA-D8C1-559A-9D99-48845BE32A6C.dita">EUser High Level Library</xref>. </p> </li> <li id="GUID-0763D19B-7A8D-5FEC-BFEA-59C47D69E7AC"><p> <b> Plug-in Framework (ECom):</b> Provides a generic and extensible plug-in framework with which abstract interfaces can be defined and their implementations identified, loaded and managed at run time. For more information, see Plug-in Framework. For more information, see <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">Plug-in Framework</xref>. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-D80D6D46-27B7-500E-A83C-63EF038606BF.dita"><linktext>Application Utilities
+                Overview</linktext> </link> <link href="GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita"><linktext>Plug-in Framework Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-634F4945-D92C-58D6-BF68-B8A770B2EF17.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-634F4945-D92C-58D6-BF68-B8A770B2EF17" xml:lang="en"><title>System Utilities Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the tasks that can performed using the System Utilities library.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143"><title>JPEG Image Frame Plug-in Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the JPEG Image Frame Plug-in library functionality. </p> <section id="GUID-1AAFF936-882B-5AEF-872F-4DD653F6883C"><title>Purpose</title> <p>JPEG Image Frame Plug-in is the Imaging Frameworks EXIF decoder / encoder Plug-in which provides to decode / encode a JPEG file or descriptor to a binary image data in an uniform way. </p> <p><b>JPEG Image Frame Plug-in Library Details</b> </p> <p>You must obtain necessary binaries in the form of DLL file to implement the JPEG Image Frame Plug-in function. </p> <table id="GUID-74788BC9-55C6-57B8-A19A-42653E12E412"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-12A064CE-145D-3666-943C-7B53EAE159E0.dita"><apiname>jpegimageframeplugin.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-858F428C-2607-3B0D-91EC-5C63E650B073.dita"><apiname>jpegimageframeplugin.lib</apiname></xref>  </p> </entry> <entry><p>These files are used for implementing JPEG Image Frame Plug-in operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>JPEG Image Frame Plug-in is plug-in for the Imaging Frameworks decoder / encoder plug-in relating to a binary image data. </p> </section> <section><title>Description</title> <p>Inorder to implement the <codeph>JPEGExifPlugin.dll</codeph> four new classes are added they are explained in detail in <xref href="GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143.dita#GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143/GUID-5C8C77EC-588E-5A03-A9DA-521BABBE658D">Key Classes section</xref>. These classes are derived from: </p> <ul><li id="GUID-FBF48CB8-B0AC-57DD-9755-D12D1B24989A"><p> <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder</apiname></xref> and <xref href="GUID-3BB99DD3-BDF1-3D37-8692-A4E4EA2D0DE9.dita"><apiname>CJPEGImageFrameEncoder</apiname></xref> are derived from EXIF, they are <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder</apiname></xref> and <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref>. </p> </li> <li id="GUID-DC4CFB11-2655-5C71-A919-B442D8B131AC"><p> <xref href="GUID-81CE6256-F900-340B-B41F-A32FE596FCD5.dita"><apiname>CJPEGImageFrameDecoderPlugin</apiname></xref> and <xref href="GUID-C02A47D8-5306-34CB-A6EB-B302BD4BA4F3.dita"><apiname>CJPEGImageFrameEncoderPlugin</apiname></xref> are derived from EXIF plugin, they are <xref href="GUID-4D63D39F-13A6-33D6-BC3A-BFBFC5A2EC88.dita"><apiname>CJPEGExifDecoderPlugin</apiname></xref> and <xref href="GUID-181E9D45-CAFD-3F2B-A1D2-BE3E732A9FD0.dita"><apiname>CJPEGExifEncoderPlugin</apiname></xref>. </p> </li> </ul> </section> <section id="GUID-5C8C77EC-588E-5A03-A9DA-521BABBE658D"><title>Key JPEG Image Frame Plug-in Classes</title> <p>The key classes are: </p> <ul><li id="GUID-7D115BB1-290F-572C-9756-1CFBC12128A3"><p> <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder</apiname></xref> Use an extension of the EXIF JPEG encoder to encode JPEG image from <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref> source type to either a file or a descriptor. </p> </li> <li id="GUID-8DC47293-526D-567D-B5F3-A555750C1661"><p> <xref href="GUID-81CE6256-F900-340B-B41F-A32FE596FCD5.dita"><apiname>CJPEGImageFrameDecoderPlugin</apiname></xref> This class is an extension of the Imaging Frameworks EXIF decoder plug-in which provides to decode a JPEG file or descriptor to <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref>. </p> </li> <li id="GUID-54E86AEB-3752-5FBA-A6F7-8A39A2F71A3B"><p> <xref href="GUID-3BB99DD3-BDF1-3D37-8692-A4E4EA2D0DE9.dita"><apiname>CJPEGImageFrameEncoder</apiname></xref> Use an extension of the EXIF JPEG decoder to decode JPEG image from <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref> source type to either a file or a descriptor. </p> </li> <li id="GUID-23A1814D-F3AA-5EA6-911B-6E8792E2B62B"><p> <xref href="GUID-C02A47D8-5306-34CB-A6EB-B302BD4BA4F3.dita"><apiname>CJPEGImageFrameEncoderPlugin</apiname></xref> This class is an extension of the Imaging Frameworks EXIF encoder plug-in which provides to encode a JPEG file or descriptor to <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref>. </p> </li> </ul> </section> <section><title>Using JPEG Image Frame Plug-in</title> <p>The JPEG Image Frame Plug-in functionality is used for the following: </p> <ul><li id="GUID-53E852D7-780D-5CC2-BF85-D56D897F459D"><p>To Decode image data to a bitmap (RGB data wrapped by a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>) from a file or a descriptor containing JPEG data. </p> </li> <li id="GUID-BDE4CEA0-582B-55A0-9C8B-D1DAD50D96AE"><p>To Encode an uncompressed bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>) to JPEG data format within a file or a descriptor. </p> </li> <li id="GUID-2A925570-4138-517D-A059-F799A08F080B"><p>It allow access to the EXIF metadata. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transform Overview</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display Overview</linktext> </link> <link href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita"><linktext>Bitmap Transform overview</linktext> </link> <link href="GUID-257E223F-1612-5978-982A-38DE8E08211C.dita"><linktext> Gifscaler Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-63730EBD-E5C1-5BA9-AB71-8FF668ECEF00.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-63730EBD-E5C1-5BA9-AB71-8FF668ECEF00" xml:lang="en"><title>Alarm Server
+Tutorials</title><shortdesc>This section lists the tutorials which explain how to add, delete
+and update an alarm, receive alarm notifications, play an alarm continuously
+and activate an alarm on given days. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-63816E09-46C7-503A-ADA0-E350C7ACF3C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-63816E09-46C7-503A-ADA0-E350C7ACF3C4" xml:lang="en"><title>SendAs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the SendAs component. Client applications can use the API provided by SendAs to create, edit and send messages of all available types. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e7305_href.png has changed
Binary file Symbian3/SDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e11541_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-63C60154-2A50-5A39-A188-515A607F498B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-63C60154-2A50-5A39-A188-515A607F498B" xml:lang="en"><title>Array
+of same length elements, flat buffer</title><shortdesc>Describes how elements are organised within the array buffer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This can be either an <codeph>RArray&lt;class T&gt;</codeph> or a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> object.</p>
+<p>In both arrays, all elements:</p>
+<ul>
+<li id="GUID-9A6138C3-BBB5-5D8E-B0CB-9E51E1B2C59C"><p>have the same length.</p> </li>
+<li id="GUID-A68AD60D-1077-5425-869C-619EDC70F4DF"><p>are physically contiguous
+within a flat array buffer. The length of an element is the size of the template
+class.</p> </li>
+</ul>
+<p>A flat buffer always occupies a single cell allocated from the heap and
+is always extended by the process of reallocation.</p>
+<p>The following diagram illustrates how elements are organised within the
+array buffer:</p>
+<fig id="GUID-7E9AF455-9CC4-5814-A746-36A94585488F">
+<image href="GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e190709_href.png" placement="inline"/>
+</fig>
+<p>This kind of array is suitable for a small number of elements or for a
+moderately large but fixed maximum number of elements. It is not suitable
+for large arrays with a high turnover of elements.</p>
+<p>The <codeph>RArray&lt;class T&gt;</codeph> array has the simpler and
+more efficient implementation but the length of an element is limited to 640
+bytes. This array can also be constructed on te program stack.</p>
+<p>The <codeph>CArrayFixFlat&lt;class T&gt;</codeph> array is more general
+and is allocated on the heap. This class is immediately derived from the abstract
+templated base class <codeph>CArrayFix&lt;class T&gt;</codeph> which is
+itself derived from the abstract non-template base class <codeph>CArrayFixBase</codeph>.
+Its array buffer is implemented using a <codeph>CBufFlat</codeph> object.</p>
+<section id="GUID-AED136DE-81CB-4247-ADF7-283C6061D4D9"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers </xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1" xml:lang="en"><title>ICLExample:
+Decoding/Encoding an image using the Image Conversion Library</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application demonstrates how to convert still images, stored
+in files or descriptors, to and from bitmap objects using the Image Conversion
+Library (ICL) API. It is located in the folder <filepath>examples\Multimedia\ICL\ICLExample</filepath>. </p>
+<p>The overview contains the following sections: </p>
+<ul>
+<li id="GUID-70281B70-B9AB-5F9A-9BA6-B0BF59ECC920-GENID-1-6-1-17-1-1-4-1-7-1-2-3-1"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita#GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1/GUID-647B9A06-3049-516A-962B-65FA9DBB47F8-GENID-1-6-1-17-1-1-4-1-7-1-2-4">Description</xref>  </p> </li>
+<li id="GUID-8E979A69-630A-592F-A5A0-1C52ED0FFF19-GENID-1-6-1-17-1-1-4-1-7-1-2-3-2"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Class summary</xref>  </p> </li>
+<li id="GUID-A01E2A97-0181-5F3E-AEAB-C23EAAC17507-GENID-1-6-1-17-1-1-4-1-7-1-2-3-3"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita#GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1/GUID-F1138207-7784-508F-9459-00D5AF1E2296-GENID-1-6-1-17-1-1-4-1-7-1-2-7">Build</xref>  </p> </li>
+<li id="GUID-DE2CD182-FA6C-5678-8DFC-67CB19F45499-GENID-1-6-1-17-1-1-4-1-7-1-2-3-4"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Example code</xref>  </p> </li>
+</ul>
+<section id="GUID-647B9A06-3049-516A-962B-65FA9DBB47F8-GENID-1-6-1-17-1-1-4-1-7-1-2-4"><title>Description</title> <p>The
+example application demonstrates how to encode, decode, rotate and scale an
+image using the plug-ins provided by ICL. It covers the following scenarios: </p> <ul>
+<li id="GUID-F9DDC56D-CD21-5CBF-9485-D89E06A60FAC-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-1"><p>Decoding an image format
+from a descriptor or a file </p> </li>
+<li id="GUID-55D04700-D816-5EC7-A3A1-0F44C1EFF8D5-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-2"><p>Encoding an image format
+into a descriptor </p> </li>
+<li id="GUID-FF25D3AA-FAB0-51F1-ACE8-4F052DAEE3EE-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-3"><p>Rotating a bitmap </p> </li>
+<li id="GUID-184C07E7-EDD6-56B9-8E81-A8724A00535A-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-4"><p>Scaling a bitmap with
+or without a mask. </p> </li>
+<li id="GUID-212AC95D-644C-5CEC-A52F-0C344AF01A94-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-5"><p>Stiching images together
+to form a panorama </p> </li>
+<li id="GUID-034A7112-AA13-509B-AE59-1B20C905A9A0-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-6"><p>Various image processing
+techniques </p> </li>
+<li id="GUID-8632CD10-43A3-57E0-BBF2-45BD04CFE108-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-7"><p>Various image transformation
+techniques </p> </li>
+<li id="GUID-3126D256-DA5D-5715-9C94-F65AE488ADF9-GENID-1-6-1-17-1-1-4-1-7-1-2-4-3-8"><p>Working with Scalado
+SpeedView objects(Spmo) inside an image </p> </li>
+</ul> <p> <b>Note:</b> An ECom session is started internally by the ICL framework,
+as it uses the ECom framework. The session is ended by calling the <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> function. </p> <p><b>Decoding
+an image format from a descriptor or a file</b> </p> <p>The application creates
+and initialises a decoder (<xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref>) object to decode
+either from a descriptor or a file to a bitmap. It uses the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> functions to specify the descriptor and file image sources respectively.
+After the source is specified, the application creates a bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>)
+object to store the decoded image. Finally, the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> function
+is called to start decoding process. </p> <p>Apart from decoding an image
+from a file or a descriptor to a bitmap, the example application also demonstrates
+the following: </p> <ul>
+<li id="GUID-A9AF5D36-6757-53C7-8C33-3508A15A1235-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-1"><p>decoding a JPEG image
+to a YUV format image frame using a <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder</apiname></xref> object.
+Before starting the decoding process by calling the <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita#GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6/GUID-EFB3F4C9-DDE1-359A-8326-71ECFEAF6759"><apiname>CJPEGImageFrameDecoder::ConvertFrame()</apiname></xref> function,
+the <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita#GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6/GUID-616A39D6-ED24-34B8-93CB-A6FAB4B0C734"><apiname>CJPEGImageFrameDecoder::RecommendedBufferSize()</apiname></xref> function
+is called to find out whether the image supports YUV format or not. </p> </li>
+<li id="GUID-6845715A-5095-5628-97F3-DA0D93E61B80-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-2"><p>accessing the thumbnail
+and Exif (Exchangeable Image File Format) metadata of a JPEG image using a <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder</apiname></xref> object </p> </li>
+<li id="GUID-10F30C96-210C-511C-9008-706AD3A99859-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-3"><p>decoding a JPEG image
+thumbnail to a bitmap </p> </li>
+<li id="GUID-6FF227DC-2C7C-5DD2-81C5-DC5F118BC503-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-4"><p>decoding an image to
+bitmaps of different sizes using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-1A1E7557-A6C7-3681-B71B-40D8489F5AFD"><apiname>CImageDecoder::ReductionFactor()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6127DC9C-5AFD-3BD8-A345-49EA2057360B"><apiname>CImageDecoder::ReducedSize()</apiname></xref> functions </p> </li>
+<li id="GUID-215B6A79-E878-5556-845E-4FFB6BB1BBE5-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-5"><p>decoding an image in
+a separate thread using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-23C9224C-1A13-30A2-92F1-12694198EE52"><apiname>CImageDecoder::EOptionAlwaysThread</apiname></xref> option </p> </li>
+<li id="GUID-1F4C0BD0-C550-513F-937B-8297B69A029F-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-6"><p>decoding a multi-frame
+GIF image to bitmap </p> </li>
+<li id="GUID-2AB1A762-CDA3-5072-8D93-56D4BB3D78C5-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-7"><p>decoding a GIF image
+to a bitmap with a mask </p> </li>
+<li id="GUID-28D62885-CDAF-50F9-9133-0A5EE5CF8D59-GENID-1-6-1-17-1-1-4-1-7-1-2-4-8-8"><p>displaying comments
+attached to the image and its frames, using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-F7CADA2E-4B76-3B23-B5CA-92CD652E9A97"><apiname>CImageDecoder::ImageCommentL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-28A8EF22-C0C8-32BB-B9F3-96588F63A321"><apiname>CImageDecoder::FrameCommentL()</apiname></xref> functions. </p> </li>
+</ul> <p><b>Encoding an image format into a descriptor</b> </p> <p>The application
+creates and initialises an encoder (<xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref>) object
+to encode the bitmap to a descriptor. It uses the <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-51ECB4D3-5A87-35E7-82EB-DF2BAEAB2CAC"><apiname>CImageEncoder::DataNewL()</apiname></xref> function
+to specify the descriptor to be used to store the encoded image. The application
+creates a bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>) object to represent the source
+bitmap. Finally, the <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-E1CADEBF-E502-3F7E-85D1-C6AA63E497FE"><apiname>CImageEncoder::Convert()</apiname></xref> function
+is called to start the encoding process. </p> <p>Apart from encoding a bitmap
+to a descriptor, the example application also demonstrates the following: </p> <ul>
+<li id="GUID-A16B7B77-5C4B-5BBF-816B-571F8D97AA35-GENID-1-6-1-17-1-1-4-1-7-1-2-4-12-1"><p>accessing the thumbnail
+and setting Exif metadata using <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref> and <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> objects </p> </li>
+<li id="GUID-1DF1F3A5-0A2F-5457-ABCC-0EE2E465FDAE-GENID-1-6-1-17-1-1-4-1-7-1-2-4-12-2"><p>resizing an image and
+preserving image data using an object of the <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> class </p> </li>
+<li id="GUID-D1182BFF-B7E7-5FDF-BD67-CD1BE9AAE0C6-GENID-1-6-1-17-1-1-4-1-7-1-2-4-12-3"><p>adding a thumbnail and
+Exif metadata to a JPEG image using <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref>, <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref> and <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> objects. </p> </li>
+</ul> <p><b>Rotating a bitmap</b> </p> <p>The example application rotates
+a bitmap using an object of the <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator</apiname></xref> class. </p> <p><b> Scaling
+a bitmap with and without a mask</b> </p> <p>The example application scales
+a bitmap using an object of the <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> class. </p> <p><b>Basic
+panorama stitching</b> </p> <p>The example application stitches the individual
+images into a panorama image, It uses an object of the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> class
+for doing this. </p> <p><b>Panorama stitching based on viewfinder tracking</b> </p> <p>The
+example application stitches the images together to form panorama based on
+viewfinder tracking. It uses an object of the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> class
+for doing this. </p> <p><b>Basic image processing</b> </p> <p>The example
+application demonstrates how to scale an image and re-encode at a specific
+quality. It uses the <xref href="GUID-EAC2B181-7280-3616-8F33-5C32376A7CF2.dita"><apiname>CImgProcessorObserverStub</apiname></xref> and <xref href="GUID-244CB9D9-1501-35A2-836F-6F6A38DFC374.dita"><apiname>CImgProcessor</apiname></xref> classes
+for doing this. </p> <p><b>Image processing with some basic effects</b> </p> <p>The
+example demonstrates how to crop an image, apply effects and geometrical operations
+to it and re-encode the image to a specific size and quality. It uses a class <xref href="GUID-67233C77-F232-3DEE-BFF1-201FEE29583D.dita"><apiname>TGeometricalOperation</apiname></xref> in
+addition to the above mentioned classes. </p> <p><b>Generating Scalado SpeedView
+objects (Spmo)</b> </p> <p>The example generates the Spmo objects and adds
+them to an image file </p> <p><b>Removing effects from the images</b> </p> <p>The
+example application removes the effects applied tpo an image. It uses the
+class <xref href="GUID-A14BF41D-3F11-3CFB-9502-28E884DA632D.dita"><apiname>TEffectRotation</apiname></xref> in addition to the basic image processor
+classes. </p> <p><b>Adding effects to the images and generating a preview</b> </p> <p>Effects
+are added to the images and a preview of images is generated . It uses <xref href="GUID-343B0A46-FB35-3B00-A3EF-A4E2CD99997B.dita"><apiname>TEffect</apiname></xref> and <xref href="GUID-A7B72C01-BD38-3F0A-B79E-61994D700D2E.dita"><apiname>TPreview</apiname></xref> classes
+in addition to the above mentioned basic image processing classes. </p> <p><b>Adding
+effects to the images and generating an overlay</b> </p> <p>The example demonstrates
+overlay of a PNG image on a JPEG image. The overlay can be re-sized and repositioned
+through a preview before encoding it into the image. It uses <xref href="GUID-B2DFC582-0B16-3BED-831B-A448A04ACA44.dita"><apiname>TOverlay</apiname></xref> class
+in addition to the above mentioned classes. </p> <p><b>Adding a SpeedView
+object to the image</b> </p> <p>The example adds a SpeedView object to an
+image which has been processed. It uses <xref href="GUID-79F4A36C-E544-3FD7-BBD0-9A4E59008E5B.dita"><apiname>TCapsImageProcessorExtension</apiname></xref> class
+in additioned to the above mentioned classes </p> <p><b>Squeeze an image from
+a file to a file</b> </p> <p>The example squeezes an image from a file to
+file. It uses <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> and<xref href="GUID-11036D6A-55DB-353A-ABA6-C5A5788F4C9A.dita"><apiname>CSqueezeTransformExtension</apiname></xref> for
+doing this. </p> <p><b>Squeeze an image from buffer to buffer</b> </p> <p>The
+example squeezes an image from a buffer to a buffer. </p> <p><b>Auto squeeze
+an image from file to file</b> </p> <p>The example auto squeezes an image
+from file to file </p> <p><b>Rotate an image from file to file</b> </p> <p>The
+example rotates an image from file to file. </p> <p><b>Blend a jpg data in
+file to a file and squeeze it</b> </p> <p>The example generates an overlay
+of an image on another image and also squeezes the resultant image from a
+file to file. </p><p><b>Note:</b> The application uses an object of the <xref href="GUID-7A6A6EFD-F0DB-3747-9418-A423A613250A.dita"><apiname>TFrameInfo</apiname></xref> class
+to store image header information, such as, image size, dimension of the frame,
+colour depth and so on.</p> </section>
+<section id="GUID-1DFEF992-19E6-4231-BC3C-E996E8C0626C-GENID-1-6-1-17-1-1-4-1-7-1-2-5"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f23a310d-8237-4060-bc6b-b6a1e9813add.zip" scope="external"> ICLExample.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f23a310d-8237-4060-bc6b-b6a1e9813add.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section id="GUID-5859C6F4-EA8F-4CAB-982D-2827DFE958E0-GENID-1-6-1-17-1-1-4-1-7-1-2-6"><title>Class summary</title><p><xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder </apiname></xref>  <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder </apiname></xref><xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator </apiname></xref>  <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler </apiname></xref> <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform </apiname></xref>  <xref href="GUID-4CBAE460-BF54-3F8B-8E5D-BB7EA8633160.dita"><apiname>CGifScaler </apiname></xref> <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder </apiname></xref>  <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder </apiname></xref> <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder </apiname></xref>  <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama </apiname></xref> <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform </apiname></xref>  <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker </apiname></xref> <xref href="GUID-244CB9D9-1501-35A2-836F-6F6A38DFC374.dita"><apiname>CImgProcessor </apiname></xref>  <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform </apiname></xref> <xref href="GUID-11036D6A-55DB-353A-ABA6-C5A5788F4C9A.dita"><apiname>CSqueezeTransformExtension </apiname></xref>  <xref href="GUID-593AD11D-3CE7-39E7-B5FE-EDEDABE8D936.dita"><apiname>COrientationTransformExtension </apiname></xref> <xref href="GUID-83EA2789-C3FE-383A-B81F-E9E362FE4283.dita"><apiname>COverlayTransformExtension </apiname></xref> <xref href="GUID-0ABAE4E1-FD74-30D5-9760-E2AB4910A6CE.dita"><apiname>CCapsSpmo </apiname></xref> <xref href="GUID-0090C69C-004A-33A8-8EEA-A0B4238A356A.dita"><apiname>CapsSpmoUtility </apiname></xref> <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata </apiname></xref> <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname> MExifMetadataWriter </apiname></xref>  <xref href="GUID-8AA987C9-456B-3E7C-95C2-C5578EE977B9.dita"><apiname>TExifReaderUtility </apiname></xref><xref href="GUID-62EA502C-FBE8-39A8-AEC6-3104C15F18C9.dita"><apiname>TExifWriterUtility </apiname></xref> <xref href="GUID-343B0A46-FB35-3B00-A3EF-A4E2CD99997B.dita"><apiname>TEffect </apiname></xref> <xref href="GUID-67233C77-F232-3DEE-BFF1-201FEE29583D.dita"><apiname>TGeometricalOperation </apiname></xref> <xref href="GUID-A14BF41D-3F11-3CFB-9502-28E884DA632D.dita"><apiname> TEffectRotation </apiname></xref> <xref href="GUID-A7B72C01-BD38-3F0A-B79E-61994D700D2E.dita"><apiname>TPreview </apiname></xref>  <xref href="GUID-B2DFC582-0B16-3BED-831B-A448A04ACA44.dita"><apiname>TOverlay </apiname></xref> <xref href="GUID-79F4A36C-E544-3FD7-BBD0-9A4E59008E5B.dita"><apiname>TCapsImageProcessorExtension </apiname></xref>  </p></section>
+<section id="GUID-F1138207-7784-508F-9459-00D5AF1E2296-GENID-1-6-1-17-1-1-4-1-7-1-2-7"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian build process</xref> describes
+how to build an application. </p> <p>The <codeph>IclExample</codeph> builds
+an executable called <filepath>iclexample.exe</filepath> in the standard location
+(<filepath>\epoc32\release\winscw\</filepath> &lt;<i>build_variant</i> &gt; for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to task away from the application launcher/shell screen
+to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1" xml:lang="en"><title>ICLExample:
+Decoding/Encoding an image using the Image Conversion Library</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application demonstrates how to convert still images, stored
+in files or descriptors, to and from bitmap objects using the Image Conversion
+Library (ICL) API. It is located in the folder <filepath>examples\Multimedia\ICL\ICLExample</filepath>. </p>
+<p>The overview contains the following sections: </p>
+<ul>
+<li id="GUID-70281B70-B9AB-5F9A-9BA6-B0BF59ECC920-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-3-1"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1.dita#GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1/GUID-647B9A06-3049-516A-962B-65FA9DBB47F8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4">Description</xref>  </p> </li>
+<li id="GUID-8E979A69-630A-592F-A5A0-1C52ED0FFF19-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-3-2"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1.dita">Class summary</xref>  </p> </li>
+<li id="GUID-A01E2A97-0181-5F3E-AEAB-C23EAAC17507-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-3-3"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1.dita#GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1/GUID-F1138207-7784-508F-9459-00D5AF1E2296-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-7">Build</xref>  </p> </li>
+<li id="GUID-DE2CD182-FA6C-5678-8DFC-67CB19F45499-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-3-4"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1.dita">Example code</xref>  </p> </li>
+</ul>
+<section id="GUID-647B9A06-3049-516A-962B-65FA9DBB47F8-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4"><title>Description</title> <p>The
+example application demonstrates how to encode, decode, rotate and scale an
+image using the plug-ins provided by ICL. It covers the following scenarios: </p> <ul>
+<li id="GUID-F9DDC56D-CD21-5CBF-9485-D89E06A60FAC-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-1"><p>Decoding an image format
+from a descriptor or a file </p> </li>
+<li id="GUID-55D04700-D816-5EC7-A3A1-0F44C1EFF8D5-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-2"><p>Encoding an image format
+into a descriptor </p> </li>
+<li id="GUID-FF25D3AA-FAB0-51F1-ACE8-4F052DAEE3EE-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-3"><p>Rotating a bitmap </p> </li>
+<li id="GUID-184C07E7-EDD6-56B9-8E81-A8724A00535A-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-4"><p>Scaling a bitmap with
+or without a mask. </p> </li>
+<li id="GUID-212AC95D-644C-5CEC-A52F-0C344AF01A94-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-5"><p>Stiching images together
+to form a panorama </p> </li>
+<li id="GUID-034A7112-AA13-509B-AE59-1B20C905A9A0-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-6"><p>Various image processing
+techniques </p> </li>
+<li id="GUID-8632CD10-43A3-57E0-BBF2-45BD04CFE108-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-7"><p>Various image transformation
+techniques </p> </li>
+<li id="GUID-3126D256-DA5D-5715-9C94-F65AE488ADF9-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-3-8"><p>Working with Scalado
+SpeedView objects(Spmo) inside an image </p> </li>
+</ul> <p> <b>Note:</b> An ECom session is started internally by the ICL framework,
+as it uses the ECom framework. The session is ended by calling the <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> function. </p> <p><b>Decoding
+an image format from a descriptor or a file</b> </p> <p>The application creates
+and initialises a decoder (<xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref>) object to decode
+either from a descriptor or a file to a bitmap. It uses the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> functions to specify the descriptor and file image sources respectively.
+After the source is specified, the application creates a bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>)
+object to store the decoded image. Finally, the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> function
+is called to start decoding process. </p> <p>Apart from decoding an image
+from a file or a descriptor to a bitmap, the example application also demonstrates
+the following: </p> <ul>
+<li id="GUID-A9AF5D36-6757-53C7-8C33-3508A15A1235-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-1"><p>decoding a JPEG image
+to a YUV format image frame using a <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder</apiname></xref> object.
+Before starting the decoding process by calling the <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita#GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6/GUID-EFB3F4C9-DDE1-359A-8326-71ECFEAF6759"><apiname>CJPEGImageFrameDecoder::ConvertFrame()</apiname></xref> function,
+the <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita#GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6/GUID-616A39D6-ED24-34B8-93CB-A6FAB4B0C734"><apiname>CJPEGImageFrameDecoder::RecommendedBufferSize()</apiname></xref> function
+is called to find out whether the image supports YUV format or not. </p> </li>
+<li id="GUID-6845715A-5095-5628-97F3-DA0D93E61B80-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-2"><p>accessing the thumbnail
+and Exif (Exchangeable Image File Format) metadata of a JPEG image using a <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder</apiname></xref> object </p> </li>
+<li id="GUID-10F30C96-210C-511C-9008-706AD3A99859-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-3"><p>decoding a JPEG image
+thumbnail to a bitmap </p> </li>
+<li id="GUID-6FF227DC-2C7C-5DD2-81C5-DC5F118BC503-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-4"><p>decoding an image to
+bitmaps of different sizes using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-1A1E7557-A6C7-3681-B71B-40D8489F5AFD"><apiname>CImageDecoder::ReductionFactor()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6127DC9C-5AFD-3BD8-A345-49EA2057360B"><apiname>CImageDecoder::ReducedSize()</apiname></xref> functions </p> </li>
+<li id="GUID-215B6A79-E878-5556-845E-4FFB6BB1BBE5-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-5"><p>decoding an image in
+a separate thread using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-23C9224C-1A13-30A2-92F1-12694198EE52"><apiname>CImageDecoder::EOptionAlwaysThread</apiname></xref> option </p> </li>
+<li id="GUID-1F4C0BD0-C550-513F-937B-8297B69A029F-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-6"><p>decoding a multi-frame
+GIF image to bitmap </p> </li>
+<li id="GUID-2AB1A762-CDA3-5072-8D93-56D4BB3D78C5-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-7"><p>decoding a GIF image
+to a bitmap with a mask </p> </li>
+<li id="GUID-28D62885-CDAF-50F9-9133-0A5EE5CF8D59-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-8-8"><p>displaying comments
+attached to the image and its frames, using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-F7CADA2E-4B76-3B23-B5CA-92CD652E9A97"><apiname>CImageDecoder::ImageCommentL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-28A8EF22-C0C8-32BB-B9F3-96588F63A321"><apiname>CImageDecoder::FrameCommentL()</apiname></xref> functions. </p> </li>
+</ul> <p><b>Encoding an image format into a descriptor</b> </p> <p>The application
+creates and initialises an encoder (<xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref>) object
+to encode the bitmap to a descriptor. It uses the <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-51ECB4D3-5A87-35E7-82EB-DF2BAEAB2CAC"><apiname>CImageEncoder::DataNewL()</apiname></xref> function
+to specify the descriptor to be used to store the encoded image. The application
+creates a bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>) object to represent the source
+bitmap. Finally, the <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-E1CADEBF-E502-3F7E-85D1-C6AA63E497FE"><apiname>CImageEncoder::Convert()</apiname></xref> function
+is called to start the encoding process. </p> <p>Apart from encoding a bitmap
+to a descriptor, the example application also demonstrates the following: </p> <ul>
+<li id="GUID-A16B7B77-5C4B-5BBF-816B-571F8D97AA35-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-12-1"><p>accessing the thumbnail
+and setting Exif metadata using <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref> and <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> objects </p> </li>
+<li id="GUID-1DF1F3A5-0A2F-5457-ABCC-0EE2E465FDAE-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-12-2"><p>resizing an image and
+preserving image data using an object of the <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> class </p> </li>
+<li id="GUID-D1182BFF-B7E7-5FDF-BD67-CD1BE9AAE0C6-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-4-12-3"><p>adding a thumbnail and
+Exif metadata to a JPEG image using <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref>, <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder</apiname></xref> and <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref> objects. </p> </li>
+</ul> <p><b>Rotating a bitmap</b> </p> <p>The example application rotates
+a bitmap using an object of the <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator</apiname></xref> class. </p> <p><b> Scaling
+a bitmap with and without a mask</b> </p> <p>The example application scales
+a bitmap using an object of the <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> class. </p> <p><b>Basic
+panorama stitching</b> </p> <p>The example application stitches the individual
+images into a panorama image, It uses an object of the <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama</apiname></xref> class
+for doing this. </p> <p><b>Panorama stitching based on viewfinder tracking</b> </p> <p>The
+example application stitches the images together to form panorama based on
+viewfinder tracking. It uses an object of the <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker</apiname></xref> class
+for doing this. </p> <p><b>Basic image processing</b> </p> <p>The example
+application demonstrates how to scale an image and re-encode at a specific
+quality. It uses the <xref href="GUID-EAC2B181-7280-3616-8F33-5C32376A7CF2.dita"><apiname>CImgProcessorObserverStub</apiname></xref> and <xref href="GUID-244CB9D9-1501-35A2-836F-6F6A38DFC374.dita"><apiname>CImgProcessor</apiname></xref> classes
+for doing this. </p> <p><b>Image processing with some basic effects</b> </p> <p>The
+example demonstrates how to crop an image, apply effects and geometrical operations
+to it and re-encode the image to a specific size and quality. It uses a class <xref href="GUID-67233C77-F232-3DEE-BFF1-201FEE29583D.dita"><apiname>TGeometricalOperation</apiname></xref> in
+addition to the above mentioned classes. </p> <p><b>Generating Scalado SpeedView
+objects (Spmo)</b> </p> <p>The example generates the Spmo objects and adds
+them to an image file </p> <p><b>Removing effects from the images</b> </p> <p>The
+example application removes the effects applied tpo an image. It uses the
+class <xref href="GUID-A14BF41D-3F11-3CFB-9502-28E884DA632D.dita"><apiname>TEffectRotation</apiname></xref> in addition to the basic image processor
+classes. </p> <p><b>Adding effects to the images and generating a preview</b> </p> <p>Effects
+are added to the images and a preview of images is generated . It uses <xref href="GUID-343B0A46-FB35-3B00-A3EF-A4E2CD99997B.dita"><apiname>TEffect</apiname></xref> and <xref href="GUID-A7B72C01-BD38-3F0A-B79E-61994D700D2E.dita"><apiname>TPreview</apiname></xref> classes
+in addition to the above mentioned basic image processing classes. </p> <p><b>Adding
+effects to the images and generating an overlay</b> </p> <p>The example demonstrates
+overlay of a PNG image on a JPEG image. The overlay can be re-sized and repositioned
+through a preview before encoding it into the image. It uses <xref href="GUID-B2DFC582-0B16-3BED-831B-A448A04ACA44.dita"><apiname>TOverlay</apiname></xref> class
+in addition to the above mentioned classes. </p> <p><b>Adding a SpeedView
+object to the image</b> </p> <p>The example adds a SpeedView object to an
+image which has been processed. It uses <xref href="GUID-79F4A36C-E544-3FD7-BBD0-9A4E59008E5B.dita"><apiname>TCapsImageProcessorExtension</apiname></xref> class
+in additioned to the above mentioned classes </p> <p><b>Squeeze an image from
+a file to a file</b> </p> <p>The example squeezes an image from a file to
+file. It uses <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> and<xref href="GUID-11036D6A-55DB-353A-ABA6-C5A5788F4C9A.dita"><apiname>CSqueezeTransformExtension</apiname></xref> for
+doing this. </p> <p><b>Squeeze an image from buffer to buffer</b> </p> <p>The
+example squeezes an image from a buffer to a buffer. </p> <p><b>Auto squeeze
+an image from file to file</b> </p> <p>The example auto squeezes an image
+from file to file </p> <p><b>Rotate an image from file to file</b> </p> <p>The
+example rotates an image from file to file. </p> <p><b>Blend a jpg data in
+file to a file and squeeze it</b> </p> <p>The example generates an overlay
+of an image on another image and also squeezes the resultant image from a
+file to file. </p><p><b>Note:</b> The application uses an object of the <xref href="GUID-7A6A6EFD-F0DB-3747-9418-A423A613250A.dita"><apiname>TFrameInfo</apiname></xref> class
+to store image header information, such as, image size, dimension of the frame,
+colour depth and so on.</p> </section>
+<section id="GUID-1DFEF992-19E6-4231-BC3C-E996E8C0626C-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-5"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f23a310d-8237-4060-bc6b-b6a1e9813add.zip" scope="external"> ICLExample.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f23a310d-8237-4060-bc6b-b6a1e9813add.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section id="GUID-5859C6F4-EA8F-4CAB-982D-2827DFE958E0-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-6"><title>Class summary</title><p><xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder </apiname></xref>  <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder </apiname></xref><xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator </apiname></xref>  <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler </apiname></xref> <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform </apiname></xref>  <xref href="GUID-4CBAE460-BF54-3F8B-8E5D-BB7EA8633160.dita"><apiname>CGifScaler </apiname></xref> <xref href="GUID-7FA5A371-6171-3CA5-976A-20959D34DFC6.dita"><apiname>CJPEGImageFrameDecoder </apiname></xref>  <xref href="GUID-52969E30-A244-3A27-8182-FE105FEDABD7.dita"><apiname>CJPEGExifDecoder </apiname></xref> <xref href="GUID-6E4966F9-69FD-323D-B61A-979024142478.dita"><apiname>CJPEGExifEncoder </apiname></xref>  <xref href="GUID-4DBD1F07-42C5-3CD7-B809-A391F315E0D4.dita"><apiname>CImagePanorama </apiname></xref> <xref href="GUID-27BD164A-9283-3BE0-A0BF-A475539D86EA.dita"><apiname>CPanoramaTransform </apiname></xref>  <xref href="GUID-0D12EA24-3BF5-3BEA-B0EA-CEB89D49D352.dita"><apiname>CVFTracker </apiname></xref> <xref href="GUID-244CB9D9-1501-35A2-836F-6F6A38DFC374.dita"><apiname>CImgProcessor </apiname></xref>  <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform </apiname></xref> <xref href="GUID-11036D6A-55DB-353A-ABA6-C5A5788F4C9A.dita"><apiname>CSqueezeTransformExtension </apiname></xref>  <xref href="GUID-593AD11D-3CE7-39E7-B5FE-EDEDABE8D936.dita"><apiname>COrientationTransformExtension </apiname></xref> <xref href="GUID-83EA2789-C3FE-383A-B81F-E9E362FE4283.dita"><apiname>COverlayTransformExtension </apiname></xref> <xref href="GUID-0ABAE4E1-FD74-30D5-9760-E2AB4910A6CE.dita"><apiname>CCapsSpmo </apiname></xref> <xref href="GUID-0090C69C-004A-33A8-8EEA-A0B4238A356A.dita"><apiname>CapsSpmoUtility </apiname></xref> <xref href="GUID-B6ACC0F4-BB58-3944-9ED2-42B043670573.dita"><apiname>MExifMetadata </apiname></xref> <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname> MExifMetadataWriter </apiname></xref>  <xref href="GUID-8AA987C9-456B-3E7C-95C2-C5578EE977B9.dita"><apiname>TExifReaderUtility </apiname></xref><xref href="GUID-62EA502C-FBE8-39A8-AEC6-3104C15F18C9.dita"><apiname>TExifWriterUtility </apiname></xref> <xref href="GUID-343B0A46-FB35-3B00-A3EF-A4E2CD99997B.dita"><apiname>TEffect </apiname></xref> <xref href="GUID-67233C77-F232-3DEE-BFF1-201FEE29583D.dita"><apiname>TGeometricalOperation </apiname></xref> <xref href="GUID-A14BF41D-3F11-3CFB-9502-28E884DA632D.dita"><apiname> TEffectRotation </apiname></xref> <xref href="GUID-A7B72C01-BD38-3F0A-B79E-61994D700D2E.dita"><apiname>TPreview </apiname></xref>  <xref href="GUID-B2DFC582-0B16-3BED-831B-A448A04ACA44.dita"><apiname>TOverlay </apiname></xref> <xref href="GUID-79F4A36C-E544-3FD7-BBD0-9A4E59008E5B.dita"><apiname>TCapsImageProcessorExtension </apiname></xref>  </p></section>
+<section id="GUID-F1138207-7784-508F-9459-00D5AF1E2296-GENID-1-6-1-17-1-1-5-1-6-1-5-1-3-1-2-7"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian build process</xref> describes
+how to build an application. </p> <p>The <codeph>IclExample</codeph> builds
+an executable called <filepath>iclexample.exe</filepath> in the standard location
+(<filepath>\epoc32\release\winscw\</filepath> &lt;<i>build_variant</i> &gt; for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to task away from the application launcher/shell screen
+to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6408C26A-2736-59A9-B785-6B119143619B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6408C26A-2736-59A9-B785-6B119143619B" xml:lang="en"><title>How
+to use a thread-death notifier</title><shortdesc>Describes the thread-death notifier and provides a code snippet
+to show you how to use it.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To use a thread-death notifier, a thread which needs to know about the
+death of other threads: </p>
+<ul>
+<li id="GUID-914D2BE7-BFD3-58E3-ABD4-53371512332F"><p>constructs an <codeph>RUndertaker</codeph> handle
+and then calls its <codeph>Create()</codeph> member function to create the
+associated Kernel side object. The <codeph>RUndertaker</codeph> handle is <keyword>process-relative</keyword> which
+means that the handle is <i>not</i> closed if the requesting thread dies. </p> </li>
+<li id="GUID-F46FEA42-38C3-526D-AC05-225BDD3A8714"><p>issues a notification
+request to the thread-death notifier, passing a reference to a <codeph>TRequestStatus</codeph> object
+and a reference to a <codeph>TInt</codeph>. </p> </li>
+</ul>
+<p>When any other thread dies, the requesting thread's <keyword>request semaphore</keyword> is
+signalled to indicate that the notification request is complete. The <codeph>TRequestStatus</codeph> object
+supplied by the requesting thread is set to <codeph>KErrDied</codeph>. </p>
+<p>In addition, the Kernel opens a local thread-relative handle on the dying
+thread. (thread-relative, here, means relative to the requesting thread) and
+sets the <codeph>TInt</codeph>, supplied by the requesting thread, to the
+resulting handle-number. The requesting thread can construct an <codeph>RThread</codeph> from
+this handle-number. The following diagram helps visualise the situation. </p>
+<fig id="GUID-5B53CA3B-5365-5C54-B2BC-EA8BA684F15E">
+<title>           Thread-death notifier         </title>
+<image href="GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e213982_href.png" placement="inline"/>
+</fig>
+<p>The following code fragments demonstrate this: </p>
+<codeblock id="GUID-B5A219AD-CC59-50CE-A65B-0D3F4FD32F7A" xml:space="preserve">{
+...
+RUndertaker     the_undertaker;
+TRequestStatus  the_status;
+TInt            the_dyingthread_handle_number;
+...
+the_undertaker.Create();
+the_undertaker.Logon(the_status,the_dyingthread_handle_number);
+User::WaitForRequest(the_status);
+...
+...// prepare for a long wait
+...
+RThread r;
+r.SetHandle(the_dyingthread_handle_number);
+...
+...// Now have an open thread-relative handle to the
+...// dying thread so we can, for example, ...
+if (r.ExitReason()==0x666)
+    {
+    ...
+    }
+...// We have an open handle on the dying thread; the dying thread
+...// remains in existence until we close it.
+r.Close();
+...
+}</codeblock>
+<p>In practical code, an <codeph>RUndertaker</codeph> is used by an active
+object. </p>
+<p>The <codeph>RUndertaker</codeph> handle also offers a <codeph>LogonCancel()</codeph> function.
+Calling this function, causes the requesting thread's <keyword>request semaphore</keyword> to
+be signalled and any wait to complete. The <codeph>TRequestStatus</codeph> is
+set to <codeph>KErrCancel</codeph>. </p>
+<p>This technique of using an <codeph>RUndertaker</codeph> is not guaranteed
+to report the death of all threads. In particular, if a second thread dies
+while a requesting thread is handling the request completion due to the death
+of a first thread (but before it can make another notification request), the
+death of this second thread will go unnoticed. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5" xml:lang="en"><title>Creating
+an Implementation Project File </title><abstract>An implementation project file is a .mmp file, which specifies the
+essential elements of the implementation. The project files are used for project
+development. The implementation project file contains information (source
+file, build file) about the implementation that is being built.<shortdesc>The
+format of implementation project file is dependent on the version of Symbian
+platform used. The differences basically reflect the introduction of platform
+security into Symbian OS v9.0 and later versions. </shortdesc></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps-unordered id="GUID-C62C17ED-E41C-54FA-BA0A-9C10A49E159B">
+<step id="GUID-BB98ED98-0E27-4865-857D-01BC54ACB226"><cmd>For creating a plug-in project file for Symbian OS v9.1 and later: </cmd>
+<substeps id="GUID-A24F641F-EF19-46A2-8B4B-883E726AE909">
+<substep id="GUID-F4AC55A1-0B66-4F17-8B24-2BE518949884"><cmd/>
+<info>Set <codeph>TARGET</codeph> to the standard DLL name. <codeph>TARGET</codeph> contains
+the final binary name of the project generated. </info>
+<info>The plug-in DLL file is stored along other binaries in the<filepath>\Sys\Bin</filepath> directory.
+The plug-in framework does not discover plug-ins installed in the pre v9.1
+location, <filepath>\System\Libs\Plugins</filepath>. </info>
+</substep>
+<substep id="GUID-3D73991A-AC41-428C-92B8-1B8C6CDD7419"><cmd/>
+<info>Set <codeph>TARGETTYPE</codeph> to PLUGIN. <codeph>TARGETTYPE</codeph> specifies
+the type of binary. </info>
+<info>Set <codeph>TARGETTYPE</codeph> to PLUGIN3 for DLLs supporting the extension
+interfaces. PLUGIN3 DLLs are given the UID2 value of 0x10009D93. </info>
+</substep>
+<substep id="GUID-9C78513D-ACDC-4C26-BFF0-74E6410212A8"><cmd/>
+<info>Set <codeph>UID</codeph> to plug-in framework DLL recognition UID followed
+by the unique UID of the plug-in. </info>
+<info>UID of the plug-in must be the same as the one specified in the <codeph>dll_uid</codeph> member
+in the <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">registration
+resource file</xref>. </info>
+</substep>
+<substep id="GUID-52CCD76E-8FCA-45F1-89BC-5EF582E692C4"><cmd/>
+<info>Set <codeph>VENDORID</codeph> to the vendor creating the plug-ins. </info>
+</substep>
+<substep id="GUID-B5F9FBB6-232B-4508-9C0F-2B49C226AB1A"><cmd/>
+<info>Set <codeph>CAPABILITY</codeph> to the capabilities of the plug-in in
+the variable. </info>
+<info>If the plug-in is assigned no capabilities, only client processes with
+no capabilities can use them. </info>
+<info>For more information, see <xref href="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita">ECom
+and the Platform Security Architecture</xref>. </info>
+</substep>
+<substep id="GUID-596BA5E8-0E55-41F9-925A-BDF0C2743090"><cmd/>
+<info>Set <codeph>SOURCEPATH</codeph> to the path where the source files exist. </info>
+<info>The path set in this variable must be relative to the path of the project
+file. </info>
+</substep>
+<substep id="GUID-EDBA217E-F553-4B58-99BD-72BFF47237DD"><cmd/>
+<info>Set <codeph>SOURCE</codeph> to the name of the source file. </info>
+</substep>
+<substep id="GUID-90CC5B05-0530-4276-A32B-703A97F77ADF"><cmd/>
+<info>Set <codeph>USERINCLUDE</codeph> to the path where the user provided
+header files are available. </info>
+<info>The path set in this variable must be relative to the path of the project
+file. </info>
+</substep>
+<substep id="GUID-0C3EB2DA-064E-42F0-9D13-BA5B14EC4476"><cmd/>
+<info>Set <codeph>SYSTEMINCLUDE</codeph> to<codeph>\epoc32\include\ecom</codeph>. <codeph>SYSTEMINCLUDE</codeph> specifies
+the path to OS provided header files. </info>
+</substep>
+<substep id="GUID-68701E84-5C98-4C37-9F0B-72320E7016A4"><cmd/>
+<info>Set <codeph>RESOURCE</codeph> to the registration resource file of the
+implementation. </info>
+<info>From v9.1, the name of the registration resource file must be the same
+as that of the executable. </info>
+<info>For example, if the plug-in is <filepath>foo.dll</filepath>, then its
+registration resource file must be called <filepath>foo.rsc</filepath>. This
+is because plug-in framework uses the names of the registration resource file
+to find the plug-in DLLs. </info>
+<info>A simple <codeph>START RESOURCE</codeph> statement is of the following
+form: </info>
+<stepxmp><codeblock id="GUID-B4DAAEEF-0FDA-5192-81F5-650946430C2E" xml:space="preserve">START RESOURCE foo.rss
+END</codeblock> </stepxmp>
+<info>This builds a file named <filepath>foo.rsc</filepath>. Registration
+resource files are always built into the target directory <filepath>\Resource\Plugins</filepath>.
+There is no need to explicitly set the target directory for the <filepath>.rsc</filepath> file
+in the project file, the build tools take care of it. </info>
+<info>Where the registration resource source file is still named after the
+UID of the DLL, the built resource file can be renamed to be the same as the
+DLL, using the <codeph>TARGET</codeph> keyword. For example: </info>
+<stepxmp><codeblock id="GUID-E2636CC2-9658-57CD-B57E-FF244CFE6A59" xml:space="preserve">START RESOURCE 10009DB0.rss
+TARGET foo.rsc
+END</codeblock> </stepxmp>
+<info>This builds the <filepath>10009DB0.rss</filepath> source file into <filepath>\Resource\Plugins\foo.rsc</filepath>. </info>
+</substep>
+<substep id="GUID-C4476628-A6A3-4A85-9F8D-C11B70EF8A71"><cmd/>
+<info>Set the variable <codeph>LIBRARY</codeph> to <filepath>ecom.lib</filepath>. </info>
+<info>The binary links against the specified <filepath>.lib</filepath> file. </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-B2656101-01BA-5E5C-9E30-4B28172FC3AD"><cmd/>
+<info><p>For creating a plug-in project file for Symbian OS v9.0 and earlier: </p></info>
+<substeps id="GUID-B966B7D5-737A-494C-B6E9-74FE8D13DCB5">
+<substep id="GUID-157FEA53-CC94-428D-A9AF-529CDBE25120"><cmd/>
+<info>Set <codeph>TARGET</codeph> to the standard DLL name. <codeph>TARGET</codeph> contains
+the final binary name of the project generated. </info>
+</substep>
+<substep id="GUID-0FAC1E07-1D7C-4E6D-B317-0234DD58777A"><cmd/>
+<info>Set <codeph>TARGETTYPE</codeph> as ECOMIIC. <codeph>TARGETTYPE</codeph> specifies
+the type of binary. </info>
+</substep>
+<substep id="GUID-34D0442D-9176-4B72-BF58-0E22A1268A6A"><cmd/>
+<info>Set <codeph>UID</codeph> to the plug-in framework DLL recognition UID
+followed by the unique UID of the plug-in. </info>
+<info>Unique UID of the plug-in must be the same as the one specified in the <codeph>dll_uid</codeph> member
+in the <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">registration
+resource file</xref>. </info>
+</substep>
+<substep id="GUID-A9F72D37-A1F9-4586-9FEE-9C7234867E3E"><cmd/>
+<info>Set <codeph>SOURCEPATH</codeph> to the path where the source files exist. </info>
+<info>The path set for this variable must be relative to the path of the project
+file. </info>
+</substep>
+<substep id="GUID-DE91B9A8-A3EB-4E02-8DA8-7D43F0043A39"><cmd/>
+<info>Set <codeph>SOURCE</codeph> to the name of the source file. </info>
+</substep>
+<substep id="GUID-F9D4D6B1-0F6A-45A3-B9D8-653AFC7DA1BE"><cmd/>
+<info>Set <codeph>USERINCLUDE</codeph> to the path where the user provided
+header files are available. </info>
+<info>The path set in this variable must be relative to the path of the project
+file. </info>
+</substep>
+<substep id="GUID-6B7059F8-3525-4A3A-815B-6AF80FCA2390"><cmd/>
+<info>Set <codeph>SYSTEMINCLUDE</codeph> to<codeph>\epoc32\include\ecom</codeph>.
+SYSTEMINCLUDE specifies the path to OS provided header files. </info>
+</substep>
+<substep id="GUID-E3E217A8-607C-474B-911B-98A1CFC6DEA7"><cmd/>
+<info>Set <codeph>RESOURCE</codeph> to the registration resource file of the
+implementation. </info>
+<info>The registration resource file .rss need not have the same name as the
+DLL. It is required to be named after the UID of the DLL. </info>
+</substep>
+<substep id="GUID-D1F69266-3516-4E1F-9A5F-DD9215DBA886"><cmd/>
+<info>Set <codeph>LIBRARY</codeph> to <filepath>ecom.lib</filepath>. The binary
+links to the <filepath>.lib</filepath> file. </info>
+</substep>
+</substeps>
+</step>
+</steps-unordered>
+<example id="GUID-D34B6A0A-45E5-5C1F-ABDA-78EB7100622E"><title>Creating an
+implementation project file example</title> <p> <b> For Symbian OS v9.1 and
+later </b>  </p> <codeblock id="GUID-CBF66575-365D-5587-8435-9B3BE58A0AA2" xml:space="preserve">// ExampleInterfaceImplementation.mmp
+//
+TARGET     ExampleInterfaceImplementation.dll
+TARGETTYPE PLUGIN
+
+// ECom Dll recognition UID followed by the unique dll UID 
+UID 0x10009D8D 0x10009DB0
+
+VENDORID 0x70000001
+
+CAPABILITY All -TCB
+
+SOURCEPATH \ExampleInterfaceImplementation
+SOURCE     ExampleInterfaceImplementation.cpp
+
+USERINCLUDE  \ExampleInterfaceImplementation \inc
+SYSTEMINCLUDE  \epoc32\include
+SYSTEMINCLUDE  \epoc32\include\ecom
+
+START RESOURCE 10009DB0.rss
+TARGET            ExampleInterfaceImplementation.rsc
+END
+
+LIBRARY euser.lib
+LIBRARY ecom.lib</codeblock> <p> <b> For Symbian OS v9.0 and earlier </b>  </p> <codeblock id="GUID-B88DE9DD-169C-5F8B-89A6-6B9D50138773" xml:space="preserve">// ExampleInterfaceImplementation.mmp
+//
+TARGET ExampleInterfaceImplementation.dll
+TARGETTYPE ECOMIIC
+
+// ECom Dll recognition UID followed by the unique dll UID 
+UID 0x10009D8D 0x10009DB0
+
+SOURCEPATH \ExampleInterfaceImplementation
+SOURCE ExampleInterfaceImplementation.cpp
+
+USERINCLUDE  \ExampleInterfaceImplementation \inc
+SYSTEMINCLUDE  \epoc32\include
+SYSTEMINCLUDE  \epoc32\include\ecom
+
+RESOURCE 10009DB0.rss
+
+LIBRARY euser.lib
+LIBRARY ecom.lib</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6425B722-4095-56E3-9198-70BA3E06C617.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6425B722-4095-56E3-9198-70BA3E06C617" xml:lang="en"><title>Multimedia Protocols
+Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e162398_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-643BECA3-FC08-58D0-8E1B-D3ECAEB25CB5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-643BECA3-FC08-58D0-8E1B-D3ECAEB25CB5" xml:lang="en"><title>Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides detailed information about the syntax and usage of Z Shell.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6457E7C4-1203-47B6-8AD3-A6998798943B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6457E7C4-1203-47B6-8AD3-A6998798943B" xml:lang="en"><title>Alarm
+server events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Alarm Server sends notifications to applications when alarm settings
+change; this includes indications when an alarm goes off. A client-side API
+for the alarm server is <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/ALARMSERVER/RASCliSessionClass.html#%3a%3aRASCliSession" format="application/java-archive"><parmname>RASCliSession</parmname></xref>. It is a standard asynchronous service provider, and the client application
+should implement an active object to receive events. </p>
+<p>To be able to use the Alarm Server services, client applications must
+first be connected to the server.</p>
+<codeblock id="GUID-6F5DAB79-F391-4DDD-A85C-EE1C0663E766" xml:space="preserve">User::LeaveIfError( iAlarmServer.Connect() );
+</codeblock>
+<p>In order to receive events, the <parmname>NotifyChange( TRequestStatus
+&amp;aStatus, TAlarmId &amp;aAlarmId</parmname> ) function is called and the
+active object is set active.</p>
+<codeblock id="GUID-6B9CCD08-AE3C-440E-A220-BB3C1766E432" xml:space="preserve">iAlarmServer.NotifyChange( iStatus, iAlarmId ); SetActive();</codeblock>
+<p>Notifications are cancelled by calling the <parmname>NotifyOnChangeCancel()</parmname> function.</p>
+<codeblock id="GUID-CC3EF80B-FF85-4F7C-9665-04C350E5F110" xml:space="preserve"> iAlarmServer.NotifyChangeCancel();</codeblock>
+<p>When alarm settings change, the <parmname>RunL()</parmname> function
+of the active object is called. Alarms in the alarm server database can be
+retrieved using the <parmname>GetAlarmIdListL()</parmname> function, which
+fills an array of alarm IDs.</p>
+<codeblock id="GUID-C583D59A-28BB-46D1-A929-82B748B2CAED" xml:space="preserve">void GetAlarmIdListL( RArray&lt; TAlarmId &gt; &amp;aAlarmIds )</codeblock>
+<p>When using <parmname>RArray</parmname>, remember to call <parmname>Close()</parmname> or <parmname>Reset()</parmname> on
+it when it is not needed anymore. The <parmname>GetAlarmDetails()</parmname> function
+returns the <parmname>TASShdAlarm</parmname> structure for a specific alarm,
+which is identified by the alarm ID. </p>
+<codeblock id="GUID-4870E0F6-42D2-489E-B1AF-2E65D852AEA1" xml:space="preserve">TInt GetAlarmDetails( TAlarmId aAlarmId, TASShdAlarm &amp;aAlarm )</codeblock>
+<p>The <parmname>TASShdAlarm</parmname> structure contains information
+about an alarm, and information is accessed through simple inline functions.
+See the<parmname> ASShdAlarm.h</parmname> header file for further information.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6468F3CB-7828-5746-A868-AD525EB7D6BD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6468F3CB-7828-5746-A868-AD525EB7D6BD" xml:lang="en"><title>Introduction
+to dynamic buffers</title><shortdesc>Description of flat and segmented buffers in Symbian platform.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A buffer is an area of memory which may contain data. Managing data in
+buffers can be more or less complex, depending on the requirements:</p>
+<ul>
+<li id="GUID-2892A824-D918-5998-9730-B780BBDE254C"><p>if the data is of fixed
+length, a fixed-length area of memory may be allocated, either on the stack
+or the heap; a buffer descriptor (<codeph>TBuf</codeph>) may be used for this.</p> </li>
+<li id="GUID-22EC8B3D-2230-597D-935D-37A5DBCF1094"><p>if the data is of varying
+length, but the variation is relatively small, it may still be appropriate
+to allocate the data within a non-extensible buffer such as <codeph>TBuf</codeph>:
+programming is simple, and only a little memory is wasted</p> </li>
+<li id="GUID-75E026E3-8C69-575C-A893-1A41192E9073"><p>if the data is of significantly
+varying length, the memory can be allocated on the heap, and the allocation
+extended when necessary. The <codeph>CBufFlat</codeph> class is provided to
+manage this</p> </li>
+<li id="GUID-C4B11D3C-A514-56FE-AAB1-24D658CDF921"><p>if the data’s length
+varies so much that a single heap cell cannot reasonably be expected to hold
+it all, then the data must be held in several heap cells, but these must appear
+as one for convenience. The <codeph>CBufSeg</codeph> class is provided to
+manage this</p> </li>
+</ul>
+<p>Symbian platform provides <i>flat buffers</i>, objects of type <codeph>CBufFlat</codeph>,
+which are used to allocate and manage storage in a single allocated cell</p>
+<p>Symbian platform provides <i>segmented buffers</i>, objects of type <codeph>CBufSeg</codeph>,
+which are used to allocate and manage storage in several alloc cells.</p>
+<p>Both types of buffer have a common base class, <codeph>CBufBase</codeph>.
+This class specifies the main aspects of the programming interface. Having
+a common base class allows the decision as to whether to use flat or segmented
+buffers to be changed during program development, with minimal impact on code.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e96763_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82" xml:lang="en"><title>Polymorphic
+interface DLLs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A polymorphic DLL contains an interface defined by a gate function and
+an abstract class with at least one virtual function. </p>
+<p>The polymorphic DLL exports the gate function at ordinal 1, which typically
+constructs a concrete class derived from the abstract interface. The virtual
+function is then called, and the functions of the class are available. </p>
+<p>Examples of polymorphic DLLs in Symbian platform include ECom plug-ins,
+device drivers, Front End Processors, and many more. </p>
+<p>Each type of interface should specify its own UID, which is used as <codeph>uid2</codeph> for
+the polymorphic DLL. </p>
+<p>The function responsible for loading a polymorphic DLL should check that
+its <codeph>uid2</codeph> corresponds with the expected interface type. </p>
+<p>For polymorphic DLLs, the interpretation of <codeph>uid3</codeph> depends
+on the interface type. <codeph>uid3</codeph> may not be required by all interfaces. </p>
+<p>The build process for a polymorphic DLL produces an import library, but
+it is not used. </p>
+<section><title>mmp project specification</title><p>The project
+file for a polymorphic DLL must specify the correct target type and UIDs:</p><ul>
+<li id="GUID-0E19AFC8-5242-561B-B9DC-085839CF8604"><p>Specify the <codeph>TARGETTYPE</codeph> line
+as: </p> <codeblock id="GUID-89A9AD1C-3A1D-5733-B8DD-BE40ECAC747C" xml:space="preserve">TARGETTYPE dll</codeblock> <p>This
+implicitly specifies <codeph>UID1</codeph> correctly. Note that some types
+of polymorphic DLLs, have particular support by the build tools, and have
+their own different target types. See <xref href="GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44.dita">Polymorphic
+DLL targettype summary</xref>. </p> </li>
+<li id="GUID-778C0445-7C95-53F9-AA52-69C37416782C"><p>Specify the UID for
+the DLL in a <codeph>UID</codeph> line: </p> <codeblock id="GUID-CB104F6E-EB57-54EC-8403-B2D4F8BB35D6" xml:space="preserve">UID &lt;UID2&gt; &lt;UID3&gt;</codeblock> <p>The <varname>UID2</varname> value is defined by the interface which is being implemented.
+Some types of polymorphic DLL also require a third UID, but, if so, its meaning
+is defined by the DLL. </p> </li>
+</ul></section>
+<example><p>An example of a project file (<filepath>PolymorphicDLL1.mmp</filepath>)
+for a polymorphic DLL is given below.</p><codeblock id="GUID-85177FF3-7CEC-5DC5-9014-972E33D605C6" xml:space="preserve">TARGET        PolymorphicDLL1.dll
+TARGETTYPE    dll
+UID           0x10004262 0x10004264
+SOURCEPATH    .
+SOURCE        PolymorphicDLL1.cpp
+USERINCLUDE   .
+USERINCLUDE   ..\UsingDLLs
+SYSTEMINCLUDE \Epoc32\include
+LIBRARY       euser.lib
+EXPORTUNFROZEN</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C" xml:lang="en"><title>Compensating
+Sensor Data for Display Orientation</title><shortdesc>You can use the sensor data compensator APIs to correct the display
+and device orientation data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-A7AAEFBD-92F7-4143-AF04-CB7604C63B12"><p>Before you begin
+using the sensor data compensator APIs, you must do the following:</p><ol>
+<li id="GUID-A2F385CE-1902-42DB-91F0-6359174BD31B"><p>Open a Sensor Channel
+for communication. For details, see <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-30E6033F-E316-4BDB-AF22-2369463DF709">Using
+Sensor Channels APIs</xref></p></li>
+<li id="GUID-D7CC2C9C-ADA4-4C20-9F83-1D194778D1A9"><p>Implement the data listener
+interface. For details see, <xref href="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita">Receiving
+Data from Sensors</xref></p></li>
+<li id="GUID-34B18C12-F93C-4509-8E6F-4A0C2998ADB7"><p>Register as a listener
+with any of the sensor types using an instance of <parmname>CSensrvChannel</parmname>.</p></li>
+<li id="GUID-527FEDAB-FAF3-4A8B-BF58-D300C0DC04E8"><p>Ensure that the data
+received from the sensor channel is not already compensated using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-1E9D960B-23C4-30DF-A184-7E978AC9AC1B"><apiname>CSensrvChannel::GetPropertyL()</apiname></xref> function,
+as shown in the following example:</p><codeblock xml:space="preserve">// 'iChannel' contains an open channel
+TSensrvProperty property;
+TRAPD( err, iChannel-&gt;GetPropertyL( KSensrvPropIdChannelDataCompensation, KSensrvItemIndexNone, property ) );
+if ( err == KErrNone &amp;&amp; property.PropertyType() == ESensrvIntProperty )
+     {
+     // Channel data is compensated, check the compensation type
+     TInt compensationType;
+     property.GetValue( compensationType );
+     // 'compensationType' contains now a value from TSensorCompensationType enumeration declared in sensordatacompensationtypes.h
+     }
+else
+     {
+     // Channel data is not compensated
+     }</codeblock><p>For more information, see <xref href="GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita">Retrieving
+channel properties</xref> .</p></li>
+</ol>           </prereq>
+<context id="GUID-02653FE0-162F-46A1-A4BC-7DD48350432B">       <p>The sensor
+data compensator APIs allows you to compensate sensor data values, based on:</p><ul>
+<li><p>Display Orientation, when the display is changed from portrait to landscape.</p></li>
+<li><p>Device Orientation, when the keyboard is opened, resulting in the display
+being set at an angle to the keyboard. For example, N97.</p></li>
+</ul>     </context>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-5-1-4-1-3-3">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-5-1-4-1-3-3-1"><cmd>Create an instance
+of <parmname>CSensorDataCompensator</parmname>.</cmd>
+<stepxmp><codeblock xml:space="preserve">iCompensator = CSensorDataCompensator::NewL(TSensrvAccelerometerAxisData::KDataTypeId,ESensorCompensateDeviceAndUIOrientation);</codeblock></stepxmp>
+</step>
+<step id="GUID-AE833279-71EA-43FC-AB2E-E4CFAF277A02"><cmd>Use the <xref href="GUID-D32C68EB-AB82-3C2D-98F1-280401FD1763.dita#GUID-D32C68EB-AB82-3C2D-98F1-280401FD1763/GUID-A400CB98-7D89-323F-92A8-EE5D581BEFA4"><apiname>CSensorDataCompensator::Compensate()</apiname></xref> function
+to correct the sensor data received from the following channel types and related
+classes:</cmd>
+<info><table id="GUID-1726B6BF-D170-4769-8E98-21BA6318E95F">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Sensor Channel Type</entry>
+<entry>Data Class</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>Accelerometer axis data</entry>
+<entry><codeph>TSensrvAccelerometerAxisData</codeph></entry>
+</row>
+<row>
+<entry>Magnetometer axis data</entry>
+<entry><codeph>TSensrvMagnetometerAxisData</codeph></entry>
+</row>
+<row>
+<entry>Accelerometer double-tap</entry>
+<entry><codeph>TSensrvTappingData</codeph></entry>
+</row>
+</tbody>
+</tgroup>
+</table></info>
+</step>
+</steps>
+<example><title>Example</title><p>The following example illustrates the usage
+of sensor data compensator APIs to correct axis data received from accelerometer
+sensor.</p><codeblock xml:space="preserve">#include &lt;sensordatacompensator.h&gt; // link against sensordatacompensator.lib
+
+void CMyClass::ConstructL()
+
+   {
+   // iSensorChannel already instantiated and registered
+   if ( !AlreadyCompensated() )
+          {
+          iCompensator = CSensorDataCompensator::NewL( 
+          TSensrvAccelerometerAxisData::KDataTypeId, 
+           ESensorCompensateDeviceAndUIOrientation );
+          }
+   }
+
+CMyClass::~CMyClass()
+
+   {
+   delete iCompensator;
+   }
+
+void CMyClass::DataReceived( CSensrvChannel&amp; aChannel,
+
+                            TInt /*aCount*/, 
+                            TInt /*aDataLost*/ )
+   {
+    
+   TPckgBuf  &lt;TSensrvAccelerometerAxisData&gt; dataBuf;
+   iSensorChannel -&gt; GetData( dataBuf );
+
+   if ( iCompensator )
+       {
+       if ( iCompensator-&gt;Compensate( dataBuf ) == KErrNone )
+           {
+           // Now use the compensated data.
+           }
+       }</codeblock></example>
+<postreq id="GUID-F834E8DF-C906-43E9-B49B-9B0ACB116E9B"><p>End the session
+with the sensor channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-0B8F50A6-2CA1-316A-82AB-AA026005E810"><apiname>CSensrvChannel::CloseChannel()</apiname></xref> function.</p></postreq>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e237989_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341" xml:lang="en"><title>Troubleshooting
+Tips</title><shortdesc>This section addresses the basic differences in the way things
+are done in Symbian Platform and in Linux. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-1">       <title>Symbian
+directory structure</title>       <p>In Symbian platform, project source files
+are arranged based on the directory pattern shown below.</p><table id="GUID-AF9A4B8F-EC2B-4BBA-AE84-9B49F2081B4F">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><b>Directory</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+<row>
+<entry><codeph>src</codeph></entry>
+<entry><p>Contains all the source files of the project.</p></entry>
+</row>
+<row>
+<entry><codeph>inc</codeph></entry>
+<entry><p>Contains all the header files of the project.</p></entry>
+</row>
+<row>
+<entry><codeph>group</codeph></entry>
+<entry><p>Contains MMP files, and bld.inf. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>    <p>The developer can choose whether to follow these tips.</p></section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-2">       <title>EXPORT_C,
+DEF file and ordinal numbers</title>       <p>This applies only for the DLL
+target type. If a DLL wants to export an API, the code definition should start
+with the macro <codeph>EXPORT_C</codeph>.</p><codeblock xml:space="preserve">// Declaration
+#ifdef SYMBIAN
+#define GLOBAL(type)		EXPORT_C type
+#else
+#define GLOBAL(type)		type
+#endif // SYMBIAN
+ // Definition
+ GLOBAL(void)
+ jpeg_CreateDecompress (j_decompress_ptr cinfo, int version, size_t structsize)
+ {
+   int i;
+ 
+   /* Guard against version mismatches between library and caller. */
+   cinfo-&gt;mem = NULL;		/* so jpeg_destroy knows mem mgr not called */
+   if (version != JPEG_LIB_VERSION)
+     ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
+   if (structsize != SIZEOF(struct jpeg_decompress_struct))
+     ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, 
+ 	     (int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);
+ ...
+ } </codeblock><p>Whenever a DLL is built on Symbian platform, it creates
+three files: </p><ul>
+<li><p><filepath>&lt;target&gt;.dll</filepath> is the actual DLL that gets loaded
+at runtime </p></li>
+<li><p><filepath>&lt;target&gt;.lib</filepath> is the static library which contains
+wrappers for each DLL exported function that, when run, will locate and execute
+the real function’s code in the appropriate runtime-loaded DLL. </p></li>
+<li><p><filepath>&lt;target.def&gt;</filepath> gets created when the user executes
+abld freeze. The <filepath>.def</filepath> file contains the list of exported
+DLL functions along with their ordinal numbers. Symbian platform does not
+store exported symbol names in DLL; instead, the exported functions are referenced
+using only their ordinal numbers. Storing the ordinal numbers instead of names
+reduces the size of the DLL. </p></li>
+</ul><p>The following is a sample <filepath>.def</filepath> file created for <codeph>libjpeg</codeph>:</p><codeblock xml:space="preserve">EXPORTS
+jcopy_block_row @ 1 NONAME
+jcopy_sample_rows @ 2 NONAME
+jdiv_round_up @ 3 NONAME
+jinit_1pass_quantizer @ 4 NONAME
+jinit_2pass_quantizer @ 5 NONAME
+jinit_c_coef_controller @ 6 NONAME
+jinit_c_main_controller @ 7 NONAME
+jinit_c_master_control @ 8 NONAME
+jinit_c_prep_controller @ 9 NONAME
+jinit_color_converter @ 10 NONAME
+</codeblock><p>The following example shows how to declare and define an exportable
+function from a DLL and to make it callable from a Symbian C++ application:
+ </p><p>In <filepath>xxx.h</filepath></p><codeblock xml:space="preserve">#ifdef __cplusplus
+extern "C" 
+#endif
+IMPORT_C int Foo();
+</codeblock><p>In <codeph>xxx.c</codeph></p><codeblock xml:space="preserve">extern "C" EXPORT_C int Foo()
+    {
+    return something;
+    }
+</codeblock>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-3">       <title><codeph>dlsym()</codeph> or <codeph>g_module_symbol()</codeph></title> 
+     <p>Since DLL entry points are not exported by name, DLL symbol lookup
+functions do not work on Symbian platform. For more information about alternatives
+suggested on Symbian platform, see <xref href="GUID-9D278187-8B5E-581D-9869-EE8861048F93.dita">Dynamic
+Link Libraries</xref>.</p><p>The functions <codeph>dlsym()</codeph> from <codeph>libdl</codeph> and <codeph>g_module_symbol()</codeph> from GLib are examples of such functions. Look for usage of these functions
+in the OSS port and change the code.</p><codeblock xml:space="preserve">ret = g_module_symbol (module, "jinit_c_prep_controller", &amp;ptr); 
+</codeblock><p>needs to be changed to:</p><codeblock xml:space="preserve">ret = g_module_symbol (module, "9", &amp;ptr);</codeblock><p>For
+example, for <codeph>dlsym()</codeph> pass the function's ordinal number as
+symbol parameter (refer the library's list of exports, the DEF file for the
+function's ordinal number):</p><codeblock xml:space="preserve">dlsym(&amp;handle, "foo")
+</codeblock><p>needs to be changed to:</p><codeblock xml:space="preserve">dlsym (&amp;handle, "3")</codeblock></section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-4"><title>Problem with
+a variable list of arguments in macros</title><p>This section suggests a way
+to overcome the problems faced when macros with a variable list of arguments
+are used.</p><codeblock xml:space="preserve">#define DEBUG(a,...)</codeblock><p>The above statement
+causes a compilation error. One of the solutions to solve this problem is
+as follows:</p><codeblock xml:space="preserve">#define DEBUG _DEBUG
+static inline void _DEBUG (const char *a, ...) 
+{ 
+}</codeblock>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-5">       <title>Keep
+changes to OSS to a minimum</title><p>While porting the OSS code, keep the
+changes to the OSS code as few as possible. The OSS code is already tested
+and used by a bigger community, and is unlikely to have any compilation errors
+or major logical errors. In many cases code changes that are necessary brings
+potential logical flaws to the OSS port. Minimum changes to the OSS code while
+porting also helps in merging to the new OSS.  </p>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-6">       <title>Exporting
+variables from a DLL</title>       <p>Exporting data from a DLL is not allowed
+in Symbian platform . The following pattern can be used:</p><ol>
+<li id="GUID-FE2ACA35-3472-47C2-8C3F-B65CAEE09C66"><p>Do not export global
+variables. Within DLL, there is one global variable, for example:</p><codeblock xml:space="preserve">int globalVal; </codeblock></li>
+<li id="GUID-F6A52B57-7E83-4DFE-9FD3-AB8E7D9B55D4"><p>  Export one method
+that returns a pointer to that variable.</p><codeblock xml:space="preserve">extern "C" EXPORT_C int* GlbData ()
+    {
+    return &amp;globalVal
+    }
+</codeblock></li>
+<li id="GUID-3231DC39-90BF-4775-BC66-2ADC9A60463E"><p>Define a macro for the
+user of the DLL. See the example below. Within the DLL header (for example, <filepath>xxx.h</filepath>),
+define the following:</p><codeblock xml:space="preserve">#ifdef __cplusplus
+extern "C" 
+#endif
+IMPORT_C int* GlbData ();
+#define globalVal (*GlbData())</codeblock></li>
+</ol>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-7">       <title>Application
+is not loaded</title>       <p>The absence of the dependent libraries could
+be one of the reasons for the application not to load in the mobile device.
+On the target device, Symbian platform looks for libraries in <filepath>c:\sys\bin</filepath> or
+in <filepath>z:\sys\bin</filepath>.</p><p>Do make sure that all the libraries
+are present in either of the above-mentioned libraries. </p>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-8">       <title>Capabilities
+not known</title>       <p>Capabilities are specified in the MMP file. The
+primary information source is the P.I.P.S. API reference documentation. If
+problems with capabilities remain, one known method to find the capability
+is to analyze the [Debug Messages] window in CodeWarrior IDE (while debugging).
+During development, <codeph>CAPABILITY All –Tcb</codeph> is acceptable, but
+for release code it is good practice to give a valid capability in the MMP
+file in order to have the application successfully signed. The following is
+a sample of a capability error found in the [Debug Messages] window.  </p><codeblock xml:space="preserve">*PlatSec* ERROR - Capability check failed - Process hellogst.exe[10015942]0001 was checked by Thread c32exe.exe[101f7989]0001::ESock_IP and was found to be missing the capabilities: NetworkServices. </codeblock>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-9">       <title>Environment
+variables</title>       <p>At the moment, environment variables are not completely
+supported in Symbian C++. Therefore be wary of using library functions like <codeph>getenv()</codeph> which
+work on environment variables. Make sure the library initialization routine
+calls <codeph>setenv()</codeph> with the proper value of the environment variable.
+Also, be wary of functions like <codeph>g_get_home_dir()</codeph> which may
+not work as they behave in Linux.</p><codeblock xml:space="preserve">if ((memenv = getenv("JPEGMEM")) != NULL) // will not work properly</codeblock><p>Suggested
+change: </p><codeblock xml:space="preserve">void LibraryInit() 
+{  
+   setenv ("JPEGMEM ", "XXXXX", 1);  
+}</codeblock>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-10">       <title>Assembly
+code</title>       <p>The syntax for inline assembly code is different in
+Symbian platform. The following is a code snippet of assembly code syntax
+in Symbian platform.</p><codeblock xml:space="preserve">EXPORT_C __NAKED__ TUint16 TTemplate::Register16(TUint anAddr) 
+/**  
+  Read a 16-bit register  
+  @returns register contents  
+*/ 	
+  { 	
+  asm("ldrh	r0,[r0]");
+  	__JUMP(,lr); 	
+  } </codeblock><p>In common practice the assembly code has the extension <filepath>.CIA</filepath> in
+Symbian platform, whereas in Linux the assembly code has the extension <filepath>.S</filepath>.
+ </p>     </section>
+<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-6-1-10-1-1-5-1-3-1-9-1-3-11">       <title>Glossary</title> 
+     <p>The following table lists terms used in Linux and their approximate
+equivalents in Symbian platform:  </p><table id="GUID-BFB874F5-148B-44B2-A110-F37AC084756B">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><b>Linux</b></p></entry>
+<entry><p><b>Symbian</b></p></entry>
+</row>
+<row>
+<entry><p><codeph>-D</codeph> of Makefile </p></entry>
+<entry><p><codeph>MACRO</codeph> of theMMP file </p></entry>
+</row>
+<row>
+<entry><p><codeph>-I</codeph> of Makefile</p></entry>
+<entry><p><codeph>USERINCLUDE</codeph> of the MMP file </p></entry>
+</row>
+<row>
+<entry><p><codeph>SO</codeph></p></entry>
+<entry><p>DLL</p></entry>
+</row>
+<row>
+<entry><p><codeph>A</codeph></p></entry>
+<entry><p>LIB</p></entry>
+</row>
+<row>
+<entry><p>Makefile</p></entry>
+<entry><p>MMP file</p></entry>
+</row>
+<row>
+<entry><p>SOURCES of Makefile </p></entry>
+<entry><p>SOURCE of the MMP file </p></entry>
+</row>
+<row>
+<entry><p><filepath>/usr/include/</filepath></p></entry>
+<entry><p><filepath>\EPOC32\INCLUDE</filepath></p></entry>
+</row>
+<row>
+<entry><p><filepath>/usr/lib/</filepath></p></entry>
+<entry><p><filepath>\epoc32\data\c\sys\bin</filepath> on an emulator, <filepath>\sys\bin</filepath> on
+a target device</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>The following table lists a few important things about the Symbian
+platform: </p><table id="GUID-A43D5623-C816-4308-9AFC-FCA97DA75A2D">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><codeph>ABI_DIR</codeph></p></entry>
+<entry><p>Platform, for example winscw or armv5</p></entry>
+</row>
+<row>
+<entry><p><codeph>BUILD_DIR</codeph></p></entry>
+<entry><p>UDEB or UREL</p></entry>
+</row>
+<row>
+<entry><p><filepath>c:</filepath> drive in emulator </p></entry>
+<entry><p><filepath>\epoc32\data\c</filepath> and <filepath>\epoc32\winscw\c</filepath></p></entry>
+</row>
+<row>
+<entry><p><filepath>z:</filepath> drive in emulator</p></entry>
+<entry><p><filepath>Z:\epoc32\data\z</filepath></p></entry>
+</row>
+<row>
+<entry><p><filepath>bld.inf</filepath></p></entry>
+<entry><p>Lists public header files and their location in <filepath>\EPOC32\INCLUDE</filepath></p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>     </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69" xml:lang="en"><title>Writing
+the Version 2 Registration Resource File</title><shortdesc>Writing a version 2 registration resource file is similar to writing
+a standard registration resource file.  </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>All the variables required to write a standard registration
+resource file must be set. In addition:  </p>     </context>
+<steps-unordered>
+<step id="GUID-7F2A2305-31F5-431E-8DB5-467859CF5814"><cmd>Set<codeph> resource_format_version</codeph> to
+the value of <codeph>RESOURCE_FORMAT_VERSION_2</codeph> defined in <filepath>RegistryInfoV2.rh</filepath>.
+ </cmd>
+</step>
+<step id="GUID-28395805-0EBC-4A16-9AD5-FE88F412EE5C"><cmd>In the <codeph>IMPLEMENTATION_INFO</codeph> resource
+that declares the properties of a single implementation, set an additional
+member <codeph>rom_only</codeph>.  </cmd>
+<info><p><codeph>rom_only</codeph> set to 1 indicates the ROM-only implementation
+must be used.  </p><p><codeph>rom_only</codeph> set to 0 indicates the ROM-only
+implementation can be overidden.  </p><note> <codeph>rom_only</codeph> value
+must be set individually for all implementations declared in a version 2 registration
+resource file. </note></info>
+<info><p>A RAM plug-in can also use a version 2 registration resource file.
+However, the implementation must set <codeph>rom_onlymember</codeph> to 0.
+In case it is set to one the plug-in cannot be used.   </p></info>
+</step>
+</steps-unordered>
+<example><p>The following example gives a resource registration file for an
+implementation collection with two implementations. The first implementation
+cannot be overridden by a RAM-based plug-in and the second can be overridden
+by a RAM-based plug-in.</p><codeblock xml:space="preserve">// 10009DB1.RSS
+//
+#include "RegistryInfoV2.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+{
+// resource_format_version must always be set as follows
+resource_format_version = RESOURCE_FORMAT_VERSION_2;
+
+// Normal plug-in parameters
+dll_uid = 0x10009DB5;
+interfaces = 
+	{
+	INTERFACE_INFO
+		{
+		interface_uid = 0x10009DC9;
+		implementations = 
+			{
+			IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10009DCA;
+				version_no = 1;
+				display_name = "Example Implementation - ROM-only ";
+				default_data = "text/wml";
+				opaque_data = "";
+    
+				// This implementation CANNOT be overridden by a RAM-based plug-in
+				rom_only = 1;
+				},
+			IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10009DCB;
+				version_no = 1;
+				display_name = "Example Implementation - not ROM-only ";
+				default_data = "text/wml";
+				opaque_data = "";
+
+				// This implementation CAN be overridden by a RAM-based plug-in
+				rom_only = 0;
+				}
+			};
+		}
+	};
+}</codeblock></example>
+</taskbody><related-links>
+<link href="GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita"><linktext>Writing a
+Standard Registration Resource File</linktext></link>
+<link href="GUID-39186342-960A-46A4-BC35-851F53665FA8.dita"><linktext>Writing the
+Version 3 Registration Resource File</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6501FAFF-6E21-5BC8-BA85-B1B4CE1AC6A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6501FAFF-6E21-5BC8-BA85-B1B4CE1AC6A7" xml:lang="en"><title>Phone
+number utility overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-648FA965-ED6E-432E-BE02-0AD632DA2630"><title>Purpose</title> <p>The
+Phone Number Utility is part of the Symbian Text Utility Component (<codeph>etul.dll</codeph>)
+and it offers methods for parsing and validating phone numbers. </p> <p>Examples
+of valid phone numbers: </p> <ul>
+<li id="GUID-C6D1DCE8-CC29-5C1D-840F-E22390F3F878"><p>1. +358501234567 </p> </li>
+<li id="GUID-912697C8-0BFF-57BA-9B08-7D760F4E4F6F"><p>2. +358 (50) 123 4567 </p> </li>
+</ul> <p>Even though both of the above examples are valid phone numbers, only
+the first one is accepted as a phone number by many systems. To convert the
+second number to the first number, parsing methods of Phone Number Utility
+can be used. </p> </section>
+<section id="GUID-CB2CAEEF-131E-48F2-A53E-3716C386E7C8"><title>Architectural
+Relationships</title> <p>The <xref href="GUID-2ABFC65A-FA52-36AB-8910-99D3A10A2D66.dita"><apiname>TulPhoneNumberUtils</apiname></xref> class
+implements the static methods that make up the interface. </p> <p>Phone Number
+Utility can be accessed through the <xref href="GUID-2ABFC65A-FA52-36AB-8910-99D3A10A2D66.dita"><apiname>TulPhoneNumberUtils</apiname></xref> class
+that is defined in the header <codeph>tulphonenumberutils.h</codeph>. This
+utility is linked to the <codeph>etul.lib</codeph> library. </p> </section>
+<section id="GUID-0C7FB3A9-2B7A-4576-B4A0-CDF706769D2C"><title>Description</title> <p><b>Method
+Information</b> </p> <p>The enumerated type <xref href="GUID-2ABFC65A-FA52-36AB-8910-99D3A10A2D66.dita"><apiname>TPhoneNumberType</apiname></xref> is
+used to specify the type of phone number for some of the methods below. </p> <table id="GUID-FD36C6FF-407D-5705-AE6E-62B2EC9D0C4E">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Method name</entry>
+<entry>Details</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>static TBool ParsePhoneNumber(TDes&amp; aNumber,      
+               TPhoneNumberType aType)</codeph>  </p> </entry>
+<entry><p>Removes irrelevant characters and white space from the supplied
+phone number. Allowed characters are determined by phone number type, in other
+words, the <codeph>aType</codeph> parameter. For example, parsing the number <codeph>+358
+(40) 123 467</codeph> results in the number <codeph>+35840123467</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>static TBool IsValidPhoneNumber(const TDesC&amp; aNumber,
+                     TPhoneNumberType aType)</codeph>  </p> </entry>
+<entry><p>Checks if the supplied phone number is a valid phone number of the
+supplied type. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TBool IsValidPhoneNumber(const TDesC&amp; aNumber, const
+                     TDesC&amp; aValidChars)</codeph>  </p> </entry>
+<entry><p>Checks if the supplied phone number is a valid phone number. The
+phone number is valid if it contains only characters specified by the parameter <codeph>aValidChars.</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>static void ParseInvalidChars(TDes&amp; aNumber, const
+                     TDesC&amp; aInvalidChars)</codeph>  </p> </entry>
+<entry><p>Removes the specified invalid characters from the supplied phone
+number string. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Example</b> </p> <p>The following example shows how to use
+the <codeph>TulPhoneNumberUtils</codeph> class parsing methods: </p> <codeblock id="GUID-BE0A3654-7CDF-536E-9392-D884E557163D" xml:space="preserve">TBuf&lt;50&gt; number = _L("+358 (40) 123 132");
+TBool validNumber = TulPhoneNumberUtils::ParsePhoneNumber(number,
+                        TulPhoneNumberUtils::EPlainPhoneNumber );
+// validNumber == ETrue;
+// number == "+35840123132"
+
+SendSMS(number) // etc..
+
+// OR
+
+TBuf&lt;50&gt; number = _L("+358 (40) 123p132"); // note 'p'
+TBool validNumber = TulPhoneNumberUtils::ParsePhoneNumber(number,
+                        TulPhoneNumberUtils::EPlainPhoneNumber );
+
+// validNumber == EFalse;
+// number == "+358 (40) 123p132" // unchanged
+</codeblock> <p>For more information on individual methods, please see the
+reference API for <xref href="GUID-2ABFC65A-FA52-36AB-8910-99D3A10A2D66.dita"><apiname>TulPhoneNumberUtils</apiname></xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-651C2913-2AB9-5873-B296-5C4233967F21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-651C2913-2AB9-5873-B296-5C4233967F21" xml:lang="en"><title>CONE
+resource loader overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-57F77D80-D411-48CE-9C2F-2E274027D791"><title>Purpose</title> <p>The CONE Resource Loader utility is part
+of the Symbian CONE component, and it offers methods for opening and closing
+resource files. The actual reading of resources from an opened resource file
+is done using various <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>CCoeEnv</apiname></xref> provided
+resource-reading methods. </p> </section>
+<section id="GUID-691C3034-6DBE-4C5A-8F6A-E18C805EA4EE"><title>Architectural Relationships</title> <p>This utility is implemented
+as a single class, <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref>.
+Access to the <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>CCoeEnv</apiname></xref> instance
+is required in order to use this utility. </p> <p>CONE Resource Loader can
+be accessed through the <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> class
+that is defined in the header <codeph>CoeUtils.h</codeph>. The actual component
+is linked to the <codeph>cone.dll</codeph> library. </p> </section>
+<section id="GUID-5B6C86F8-C914-4329-891A-20088D589EC3"><title>Description</title> <p><b>Usage</b> </p> <p>CONE Resource
+Loader functionality can be accessed via public methods on an <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> instance. </p> <p>To use, an instance of <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> is
+first created. Then calling either one of the open methods of <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> opens
+the resource file. After the resource file is no longer needed, it must be
+closed. </p> <p>A single instance of <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> can
+only have a maximum of one resource file open at any time. If multiple simultaneously
+open files are required, instantiate a separate <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> for
+each required file. </p> <p><b>Example</b> </p> <p>The following example shows
+how to use the <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref> class: </p> <codeblock id="GUID-8F442DC2-E73B-537A-9A32-9C61280B8FF6" xml:space="preserve">#include &lt;CoeUtils.h&gt;
+
+// … Other code …
+
+// Get CCoeEnv instance
+CEikonEnv* eikEnv = CEikonEnv::Static();
+
+// Initialize loader
+RCoeResourceLoader rLoader(eikEnv);
+
+// Open resource file
+_LIT( KSampleResourceFileName, "Z:\\System\\Apps\\sample\\sample.rsc" );
+TFileName fileName(KSampleResourceFileName);
+rLoader.OpenL(fileName);
+
+// Push resource loader to cleanup stack, so that it will always be properly 
+// closed when popped.
+CleanupClosePushL(rLoader);
+
+// Read a resource   
+iSomeArray = eikEnv-&gt;ReadDesC16ArrayResourceL(R_SOME_RESOURCE);
+
+// Pop and destroy rLoader from stack. 
+// This also calls close on rLoader since CleanupClosePushL was used.
+CleanupStack::PopAndDestroy(); // rLoader
+</codeblock> <p>For more information on individual methods, please see the
+reference API for <xref href="GUID-D2A3BE13-6CD9-3418-AA81-4466B76CF844.dita"><apiname>RCoeResourceLoader</apiname></xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-651DA4DA-F8DF-5412-970C-86F45C877FDC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-651DA4DA-F8DF-5412-970C-86F45C877FDC"><title>Generic Services Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Generic Services is a collection of unrelated components that provide various OS-level services to other components, applications and libraries. </p> </section> <section><title>Description</title> <p>Generic Services includes the following components: </p> <ul><li id="GUID-0DEC8B89-7263-5961-94CF-A9FF9F1F8044"><p> <b>Active Backup Client:</b> Enables automated back up of data from a phone to a PC or other hosts. Phone owners can restore the data back to the device when it is required. </p> </li> <li id="GUID-ADB85DE0-692A-5893-84A0-218C8EB2C295"><p> <b>HTTP Utilities Library:</b>: Provides functionality for handling URIs. This includes constructing and modifying a URI, and extracting URI components. </p> </li> <li id="GUID-65D0AFD4-39C8-5B77-8F39-FDA86F5ABAE2"><p> <b>MIME Recognition Framework:</b> Enables the identification of the data type associated with a file using Multipurpose Internet Mail Extension (MIME) recognition. </p> </li> <li id="GUID-5D7EE0BA-735C-5206-B4D5-FFE629689DA4"><p> <b>Task Scheduler:</b> Enables a client application to schedule tasks based on a defined time or condition. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita"><linktext>Active Backup Client Overview</linktext> </link> <link href="GUID-795B41AF-FBEA-56CE-AE20-EF17BE754723.dita"><linktext>HTTP Utilities Library Overview</linktext> </link> <link href="GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita"><linktext>MIME Recognition Framework Overview</linktext> </link> <link href="GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC.dita"><linktext>Task Scheduler
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-65282D5B-E911-5C7E-8571-0FCDCD1C1713.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-65282D5B-E911-5C7E-8571-0FCDCD1C1713" xml:lang="en"><title>Copyright
+Information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Overview</title> <p>The Z Shell is covered by the following
+copyright notice. </p></section>
+<section><title>Z Shell license terms</title> <p>The Z Shell is copyright
+(c) 1992-2007 Paul Falstad, Richard Coleman, Zoltán Hidvégi, Andrew Main,
+Peter Stephenson, Sven Wischnowsky, and others. All rights reserved. Individual
+authors, whether or not specifically named, retain copyright in all changes;
+in what follows, they are referred to as `the Zsh Development Group'. This
+is for convenience only and this body has no legal status. The Z shell is
+distributed under the following licence; any provisions made in individual
+files take precedence. </p> <p>Permission is hereby granted, without written
+agreement and without licence or royalty fees, to use, copy, modify, and distribute
+this software and to distribute modified versions of this software for any
+purpose, provided that the above copyright notice and the following two paragraphs
+appear in all copies of this software. </p> <p>In no event shall the Zsh Development
+Group be liable to any party for direct, indirect, special, incidental, or
+consequential damages arising out of the use of this software and its documentation,
+even if the Zsh Development Group have been advised of the possibility of
+such damage. </p> <p>The Zsh Development Group specifically disclaim any warranties,
+including, but not limited to, the implied warranties of merchantability and
+fitness for a particular purpose. The software provided hereunder is on an
+"as is" basis, and the Zsh Development Group have no obligation to provide
+maintenance, support, updates, enhancements, or modifications. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF" xml:lang="en"><title>Flipping
+and Rotating an External Surface</title><shortdesc>This topic provides an example of flipping and rotating a surface
+in order to mirror the camera viewfinder during video telephony. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: ScreenPlay. <b>Target audience</b>: Device
+creators. </p>
+<p>When users use the camera at the front of their phone during video telephony,
+they expect their image to be mirrored like when they look in a mirror. The
+camera viewfinder renders its content to a graphics surface which is displayed
+in a window by setting it as the background surface. To mirror the viewfinder
+content, first flip the surface and then rotate it by 180°. </p>
+<fig id="GUID-87C0B943-81DC-5AB8-BD08-254811F511B5">
+<title>           Mirroring          </title>
+<image href="GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e171843_href.jpg" placement="inline"/>
+</fig>
+<p>The following example code assumes that the surface already exists. Call <xref href="GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA.dita#GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA/GUID-F42D5405-2144-34AB-B3FE-C1D76C2A3B31"><apiname>TSurfaceConfiguration::SetFlip()</apiname></xref> to
+flip the surface, then call <xref href="GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA.dita#GUID-59A10068-E37A-37CF-85C9-36D8DA6619FA/GUID-A7CC9BAA-301D-3006-AAA8-6549B163A448"><apiname>TSurfaceConfiguration::SetOrientation()</apiname></xref> to
+rotate the flipped surface by 180°. Finally bind the surface to the window.
+If necessary, set attributes such as extent to the surface configuration. </p>
+<codeblock id="GUID-EE5C2403-E4BC-503B-B49C-1580AA32DA7A" xml:space="preserve">TSurfaceConfiguration config;
+RWindow iWindow;
+
+// Set the surface ID.
+config.SetSurfaceId(iSurfaceId);
+
+// Get the window size and set the extent.
+const TRect windowSize(iWindow-&gt;Size());
+config.SetExtent(windowSize);
+
+// Set the flipping
+config.SetFlip(ETrue);
+
+// Rotate the flipped surface by 180°
+config.SetOrientation(CFbsBitGc::EGraphicsOrientationRotated180);
+
+// Bind the surface to the window using the configuration
+iWindow.SetBackgroundSurface(config, ETrue);</codeblock>
+</conbody><related-links>
+<link href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita"><linktext>External
+Surfaces                 Overview</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-653A92FB-F752-5210-8C98-9F107D74DC67.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-653A92FB-F752-5210-8C98-9F107D74DC67" xml:lang="en"><title>Forwarding
+or Replying to Email Messages Stored as Rich Text</title><shortdesc>This tutorial explains how to forward email messages that are stored
+as rich text. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <ol id="GUID-4F6BB3EC-586E-5EAE-97DA-A4CF0E5017C8">
+<li id="GUID-CB2BFF6E-193F-55F9-9559-B61FDFEE15E1"><p>Use the<xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-5C13FD54-1C93-353C-9BDB-2A30A14BD159"><apiname> CImEmailOperation::CreateForwardL()</apiname></xref> function
+or the <xref href="GUID-4DBC97FC-004F-3F79-9D17-F5B0F9F6F4A6.dita"><apiname>CreateReplyL()</apiname></xref> function to forward or reply to an
+email. </p> <p>The newly created email will be stored in the same format as
+the original email. In this case, it is rich text format and the formatting
+information is preserved while forwarding or replying to the email. </p> </li>
+<li id="GUID-38843C43-005E-5B42-9AAC-E098573C19AF"><p>Use the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-38E7EABD-1300-3DF2-B9DF-B65EEABD8A31"><apiname>CImEmailOperation::ProgressL()</apiname></xref> function
+to obtain the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> parameter of the newly created email.
+This is returned through a <xref href="GUID-36B29964-420D-38D0-AF08-4DA70BED8B6E.dita"><apiname>TPckgC</apiname></xref> &lt;<xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> &gt;
+descriptor. </p> </li>
+<li id="GUID-86C3A5DB-6F5D-5E5C-9701-A74547EBAA97"><p>Use the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+to create a <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object. </p> </li>
+<li id="GUID-E3378D43-F39E-5C6C-96F6-9086713D0C84"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object
+to create a <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-EE96F019-D147-5FD9-974B-A5C34ABD2A1D"><p>Use the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-57CA3F50-33EA-359B-AABB-4E4E15AF2A18"><apiname> CImEmailMessage::GetBodyTextL()</apiname></xref> function
+to get the body text of the message that is being replied to or forwarded.
+This will return a <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class. </p> </li>
+<li id="GUID-E3B9F2CC-512E-56DB-BC9C-825426C6FF45"><p>If you want to use the
+rich text format, complete the following step 1. If you want to store the
+body text in plain text format, complete the following steps from 2  to 4. </p> <ol id="GUID-CABBF3DD-DFB5-56EB-862A-E6A4CEC1C6C6">
+<li id="GUID-57FC7507-A8D8-58B7-8282-3F349A69D0BD"><p>Edit the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class
+and call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-791117B4-C946-3D43-AE1E-68DDC10F85A3"><apiname>CImEmailMessage::StoreBodyTextL()</apiname></xref> function
+to store the edited body text. </p> </li>
+<li id="GUID-531982EB-3274-5891-BCB3-27D89EA075F1"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-B99E759E-E0D6-3A10-B81C-5BFCAF631B7D"><apiname>CImEmailMessage::OpenPlainBodyTextForWriteL()</apiname></xref> function
+to get <xref href="GUID-C7E9BDA1-B17A-39BC-A194-78680106D184.dita"><apiname>CImPlainBody</apiname></xref> Text. </p> </li>
+<li id="GUID-0CD62596-7491-541F-95EE-754904620B47"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-DFD5B13A-3CE5-35D9-B8F3-31D3DFA0DB41"><apiname>CImPlainBodyText::StoreRichTextAsPlainTexL()</apiname></xref> function
+and pass the edited <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class to store the message. </p> </li>
+<li id="GUID-6BE40DD9-4D5F-527E-A7DB-2D5E1BEBB718"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-022C7A37-91EF-3363-A760-865A1F980917"><apiname>CImPlainBodyText::CommitL()</apiname></xref> function
+to complete the operation. </p> </li>
+</ol> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager  using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6565B222-4036-5C3D-8319-4CDDA3F2098D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6565B222-4036-5C3D-8319-4CDDA3F2098D" xml:lang="en"><title>Librt</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Support for the Librt library on Symbian platform is based on the <xref scope="external" href="http://refspecs.linux-foundation.org/lsb.shtml">Linux Standard Base (LSB) 3.1 specification</xref>. It includes support for features such as shared memory, clocks and real time emulation for timers. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e262349_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-657CAC8A-5524-4D76-9CAB-056191D3A318_d0e42011_href.png has changed
Binary file Symbian3/SDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e289206_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,679 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6590B534-D976-5305-BE95-48DD05120DFB" xml:lang="en"><title>Miscellaneous
+Topics</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-6830949E-0825-5E13-9B3E-86B5014F4B77"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-624B9EC6-7C8E-5408-AAF3-F799314B6D7A">Poll using select</xref>  </p> <ul>
+<li id="GUID-7E0FA15B-8AFB-59DD-B577-34905989D316"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-6B8931EB-7AB9-588C-B419-0CD4BA048397">Monitoring two pipes using select()</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-245A31A4-4C38-54F4-9ACC-92285C12966E"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-7582B2CB-AAC8-5E41-ADE1-76C12B691E10">Socket IOCtl options</xref>  </p> </li>
+<li id="GUID-1A2BDA7D-2DE4-52AE-ACD3-12D1A6311A88"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-9BF9562E-5831-5A7F-90A1-87BDE1CFBA54">Mathematical functions</xref>  </p> </li>
+<li id="GUID-A6183A50-BFBA-573B-B2BC-68BE637D7DF5"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-DA65E8FA-E20B-5572-AEC9-20AB140DF33A">Error handling and cleanup</xref>  </p> <ul>
+<li id="GUID-ADB0AC3E-FB59-52DC-B151-A4551467CBA0"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-D8DB43BD-9D19-5A78-8E37-6699653D047A">Mapping P.I.P.S. error codes to Symbian platform error codes</xref>  </p> </li>
+</ul> </li>
+<li id="GUID-EA748131-29ED-5D32-B1C2-F948ABEA6584"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-CF52A59F-FD04-5043-A526-05545E11F0F5">System logger</xref>  </p> </li>
+<li id="GUID-1C98EDF4-C7BD-5CC8-90EB-D35B759280CD"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-8C951D9F-DE32-5201-90F2-45EB442F9FFC">Pthread barriers, rwlocks and spinlocks</xref>  </p> </li>
+<li id="GUID-AFB6D3DE-B1ED-51CF-B02D-BBF1958F6357"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-777FDBF9-4B80-5B58-88F3-E78DBDB89021">Command line shell</xref>  </p> </li>
+<li id="GUID-2357315B-21A6-5A9D-8D8D-B72043376F41"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-98FE0A61-A9F6-5216-A01F-A213F33D3173">User interfaces</xref>  </p> </li>
+<li id="GUID-EB745371-907B-595B-AD2F-0FB0B7991066"><p><xref href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-3CA8FF29-79B4-5D43-8A23-EDB136BF7A8F">One Definition Rule - warning</xref>  </p> </li>
+</ul>
+<section id="GUID-624B9EC6-7C8E-5408-AAF3-F799314B6D7A"><title>Poll using
+select</title> <p>The <xref href="GUID-8B4D4123-8146-3157-B171-28F71E0C8E4A.dita"><apiname>select()</apiname></xref> function call provides functionality
+to scan descriptors for a ready event. The <codeph>select()</codeph> call
+requires the system to scan through a bit mask of a file descriptor set against
+its list of open descriptors to check for ready events, only stopping when
+it reaches a maximum descriptor value. For a system with a relatively small
+number of open descriptors this is quite efficient but for a large amount
+of descriptors can be overly burdensome. </p> <p>The Symbian P.I.P.S. libraries
+are not expected to be dealing with a very large number of file descriptors
+and so <codeph>select()</codeph> should be satisfactory for any applications
+on a phone. </p> <p> <b>Note:</b> P.I.P.S. does not support the <codeph>poll()</codeph> function. </p> <p id="GUID-6B8931EB-7AB9-588C-B419-0CD4BA048397"><b>Monitoring two pipes using
+select()</b> </p> <p>The following code segment shows the usage of the <codeph>select()</codeph> function: </p> <codeblock id="GUID-36B78671-0A09-529C-B167-8F3E10C2CCB5" xml:space="preserve">Int main(int argc, char **argv)
+{
+   FILE* ChildProcessStream1;
+   FILE* ChildProcessStream2;
+   int ChildProcessFD1;
+   int ChildProcessFD2;
+   fd_set SelectFDs;
+   int MaxFD;
+   struct timeval timeout;
+   int Ret;
+
+   //Create child process 1 using popen(). 
+   ChildProcessStream1 = popen("/root/PortDoc/Example7_c/Symbian/Child/ChildProg", "r");
+   if(ChildProcessStream1 == NULL)
+   {
+      printf("\n Failure to create child process 1 with popen()\n");
+      return EXIT_FAILURE;
+   }
+
+   //Create child process 2 using popen(). 
+   ChildProcessStream2 = popen("/root/PortDoc/Example7_c/Symbian/Child/ChildProg", "r");
+   if(ChildProcessStream2 == NULL)
+   {
+      printf("\n Failure to create child process 2 with popen()\n");
+      return EXIT_FAILURE;
+   }
+
+   //Convert streams to file descriptors
+   ChildProcessFD1 = fileno(ChildProcessStream1);
+   ChildProcessFD2 = fileno(ChildProcessStream2);
+
+   //Setup the select set
+   FD_ZERO(&amp;SelectFDs);
+   FD_SET(ChildProcessFD1, &amp;SelectFDs);
+   MaxFD = ChildProcessFD1;
+   FD_SET(ChildProcessFD2, &amp;SelectFDs);
+   
+   //Calculate the largest Descriptor
+   if (ChildProcessFD2 &gt; MaxFD)
+      MaxFD = ChildProcessFD2;
+   
+   //Setup a time out value in case neither return in a sufficient time
+   timeout.tv_sec = 3;
+   timeout.tv_usec = 0;
+   
+   //Issue select request
+   Ret = select(MaxFD + 1, &amp;SelectFDs, NULL, NULL, &amp;timeout);
+   if (Ret == -1)
+   {
+      //Error occurred
+      printf("\nCould not poll, error=%d",errno);    
+      return EXIT_FAILURE;
+   }
+   else if (Ret == 0)
+   {
+      //Timed out
+      printf("\nTimed Out");    
+   }
+   else
+   {
+      //Create a receive buffer, and zero contents before receiving.
+      Char RxBuffer[100];
+      memset(RxBuffer,0,sizeof(RxBuffer));
+
+      if (FD_ISSET(ChildProcessFD1, &amp;SelectFDs))
+      {
+         //Wait for data from child process 1. Child sends a string.
+         Int nbytes = read(ChildProcessFD1,RxBuffer,sizeof(RxBuffer));
+         printf("\nMessage Received from Child1 First =%s",RxBuffer);
+      }
+      else if (FD_ISSET(ChildProcessFD2, &amp;SelectFDs))
+      {
+         //Wait for data from child process 2. Child sends a string.
+         Int nbytes = read(ChildProcessFD2,RxBuffer,sizeof(RxBuffer));
+         printf("\nMessage Received from Child2 First =%s",RxBuffer);
+      }
+   }
+
+   //Wait for Child Process to complete
+   pclose(ChildProcessStream1);
+   pclose(ChildProcessStream2);
+
+   return EXIT_SUCCESS;
+}</codeblock> </section>
+<section id="GUID-7582B2CB-AAC8-5E41-ADE1-76C12B691E10"><title>Socket IOCtl
+options</title> <p>The underlying implementation of sockets on Symbian platform
+imposes some restrictions on the socket options available in P.I.P.S. and
+has also resulted in some new non-standard options to be created. </p> <p>The
+introduction of multi-homing (single link, multiple IP addresses) on Symbian
+phones and the various methods of connecting to networks, such as Wi-Fi and
+3G, with their varying degrees of cost to the user have made it important
+to be able to choose which interface or access point is used to route socket
+traffic. The Symbian <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> class provides this functionality,
+and is exposed in P.I.P.S. using some extra IOCtl options. </p> <p>The list
+of socket options available in P.I.P.S. are as follows: </p> <table id="GUID-B753C24D-597E-53AB-A633-C128C7316514">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>Socket Option</b>  </p> </entry>
+<entry><p> <b>New</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p>SIOCADDRT </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Adds an entry to the interface routing table using the parameters
+in the <codeph>rtentry</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCATMARK </p> </entry>
+<entry><p>No </p> </entry>
+<entry><p>Determines whether the read pointer is currently pointing to the
+logical mark in the data stream, testing whether the next read will be Out-of-Band
+data or not. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCDELRT </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Deletes an entry from the interface routing table using the parameters
+in the <codeph>rtentry</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCGIFACTIVECONF </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Gets a list of interfaces/access points started by P.I.P.S. in an <codeph>ifconf</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCGIFADDR </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Gets the interface address. This is valid only for sockets with
+address family AF_INET. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCGIFCONF </p> </entry>
+<entry><p>No </p> </entry>
+<entry><p>Gets a list of available interfaces/access points in an <codeph>ifconf</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCGIFHWADDR </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Gets the interface hardware address in an <codeph>ifreq</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCGIFINDEX </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Sets the index of an interface/access point from a name in an <codeph>ifreq</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCGIFNUM </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Return the total number of IP interfaces configured in the system. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCIFACTIVESTART </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Attempts to start a sub-connection on an available interface/access
+point using the parameters in an <codeph>ifreq</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCIFSTART </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Attempts to start an interface/access point using the parameters
+in an <codeph>ifreq</codeph> structure. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCIFSTOP </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Stops a previously started interface or sub-connection. </p> </entry>
+</row>
+<row>
+<entry><p>SIOCSIFNAME </p> </entry>
+<entry><p>No </p> </entry>
+<entry><p>Sets the desired interface/access point name to start in an <codeph>ifreq</codeph> structure. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The follow code for a function shows how to start an interface
+called "3G Access Point" and return the created socket. </p> <codeblock id="GUID-94D8CA06-366E-5697-A72B-891C07F21F8E" xml:space="preserve">int opensocket()
+{
+  int Sock;
+  struct ifreq Ifr;
+  char AccessPoint[]="3G Access Point";
+
+  //Open the socket
+  Sock = socket(AF_INET, SOCK_STREAM, 0);
+  if (Sock &lt; 0) 
+  {
+    printf("\nCannot open socket, error=%d",errno);
+    return -1;
+  }
+
+  //Set up the interface request structure
+  bzero(&amp;Ifr, sizeof(Ifr));
+  strcpy(Ifr.ifr_name, AccessPoint);
+    
+  //Set the requested interface name
+  if (ioctl(Sock, SIOCSIFNAME, &amp;Ifr))
+  {
+    printf("\nCannot set the interface name, error=%d",errno);
+    close(Sock);
+    return -1;
+  }
+
+  //Start the interface
+  if (ioctl(Sock, SIOCIFSTART, &amp;Ifr))
+  {
+    printf("\nCannot start the interface, error=%d",errno);
+    close(Sock);
+    return -1;
+  }
+
+  //Return the opened socket
+  return Sock;
+}</codeblock> </section>
+<section id="GUID-9BF9562E-5831-5A7F-90A1-87BDE1CFBA54"><title>Mathematical
+functions</title> <p>Symbian platform does not have any support for long doubles
+so any P.I.P.S. programs which call long double versions of APIs will actually
+invoke the double version of the API. </p> <p>Symbian platform supports the
+use of a hardware floating point co-processor, however not all phones incorporate
+an FPU (Floating Point Unit) and rely on software emulation of floating point
+operations. Phones and computers equipped with an FPU provide faster and more
+accurate floating point operations. </p> <p>Symbian platform does not support
+complex numbers so the P.I.P.S. libraries are not able to offer the POSIX
+complex number APIs. </p> <p> <b>Note:</b> The mathematical functions are
+included in the <filepath>libm.dll</filepath> file. </p> </section>
+<section id="GUID-DA65E8FA-E20B-5572-AEC9-20AB140DF33A"><title> Error handling
+and cleanup</title> <p>It is important that Symbian platform error codes do
+not reach any ported application code. P.I.P.S. logically maps the native
+OS error codes with the corresponding POSIX <codeph>errno</codeph> values
+as per the standard. So, ported programs will not usually have to alter their
+error checking/handling. </p> <p id="GUID-D8DB43BD-9D19-5A78-8E37-6699653D047A"><b>Mapping
+P.I.P.S. error codes to Symbian platform error codes</b> </p> <p>Porting your
+application to Symbian platform requires 'translating' Symbian platform error
+codes to POSIX error codes. <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-B00F7659-9C31-36CD-896A-40887DECEA4B"><apiname>User::Leaves()</apiname></xref> from native
+Symbian APIs are trapped in P.I.P.S.. Calls to P.I.P.S. APIs from user code
+need not be wrapped in <xref href="GUID-3AD20E0C-F364-533F-9FBC-227478CA9982.dita">TRAP</xref> s. </p> <p>Occasionally
+errors may be generated by the underlying Symbian platform that cannot be
+translated to POSIX error codes, in which case the error variable <codeph>errno</codeph> will
+be out of the usual range of values, above the maximum value of <codeph>__EMAXERRNO</codeph> or <codeph>124</codeph>. </p> <p>The
+Symbian platform error code can be calculated using the following formula: </p> <codeblock id="GUID-A2F7B744-4B73-56AB-BA06-7C83333ADC5D" xml:space="preserve">Symbian Error Code = -(errno - __EMAXERRNO)</codeblock> <p>Error
+codes are defined in the <filepath>errno.h</filepath> file. </p> </section>
+<section id="GUID-CF52A59F-FD04-5043-A526-05545E11F0F5"><title>System logger</title> <p>P.I.P.S.
+does not supply a system logger for use with <xref href="GUID-0138AF2F-50A6-3FAD-8AE9-FDBFD66E5EF5.dita"><apiname>openlog()</apiname></xref>, <xref href="GUID-CCBCF015-F7CF-3A55-A723-0BC4B4DC758C.dita"><apiname>syslog()</apiname></xref> and <xref href="GUID-57C7FF8B-7EB3-35BE-BC9B-5FD6ABEE6225.dita"><apiname>closelog()</apiname></xref>.
+Instead, a rudimentary selection of functions which log to a file can be written
+as demonstrated by the following example. </p> <codeblock id="GUID-EE476405-2657-5827-81F4-DD5A29BF9F35" xml:space="preserve">//define maximum length of identifier
+#define SysLogMax 80
+
+//logging file and identifier
+FILE* fSysLog = NULL;
+char fSysLogIdent[SysLogMax];
+
+//close the log file
+void my_closelog()
+{
+   //close the log file if it is open
+   if (fSysLog)
+   {
+      fclose(fSysLog);
+      fSysLog = NULL;
+   }
+   fSysLogIdent[0] = '\0';
+}
+
+//open a new log file
+int my_openlog(const char *ident)
+{
+   //close the log file if it is open
+   if (fSysLog)
+      my_closelog();    
+    
+   //make the logging directory
+   mkdir("/syslog/", S_IWUSR | S_IRUSR | S_IXUSR);
+    
+   //open a new log file
+   fSysLog = fopen("/syslog/syslog.log", "a");
+    
+   //return if the log file did not open
+   if (!fSysLog)
+      return -1;
+    
+   //set the identifier
+   if (!ident)
+      fSysLogIdent[0] = '\0';
+   else    
+      strncpy(fSysLogIdent, ident, SysLogMax);
+    
+   return 0;
+}
+
+//output a string to the log file with a variable argument list
+void my_vsyslog(const char *format, va_list formatlist)
+{
+   //open a log file if one does not exist
+   if (!fSysLog)
+   {
+      my_openlog(NULL);    
+   }
+    
+   //check if there is a log file 
+   if (fSysLog)
+   {
+      //print out the logging identifier if one exists
+      if (strlen(fSysLogIdent))
+      {
+         fprintf(fSysLog, "%s ", fSysLogIdent);
+      }
+        
+      //print out the logging string
+      vfprintf(fSysLog, format, formatlist);    
+      fprintf(fSysLog, "\r\n");    
+   }
+}
+
+//output a string to the log file
+void my_syslog(const char *format, ...)
+{
+   //create the variable argument list
+   va_list formatlist;
+   va_start(formatlist, format);
+   my_vsyslog(format, formatlist);
+   va_end(formatlist);
+}
+
+
+int main(int argc, char **argv)
+{
+   //open the log file
+   my_openlog("test");
+   
+   //log a line
+   my_syslog("testing logging of the error number : %d", errno);
+   
+   //close the log
+   my_closelog();
+   
+   return EXIT_SUCCESS;
+}</codeblock> </section>
+<section id="GUID-8C951D9F-DE32-5201-90F2-45EB442F9FFC"><title>Pthread barriers,
+rwlocks and spinlocks</title> <p>At present P.I.P.S. does not provide Pthread
+barriers, rwlocks or spinlocks, but there are techniques which can be used
+to implement the functionality using semaphores, mutexes and conditional variables. </p> <p>The
+following code sample (originally taken from <xref href="http://heather.cs.ucdavis.edu/matloff/public_html/158/PLN/ParProcIntro.pdf" scope="external">http://heather.cs.ucdavis.edu/matloff/public_html/158/PLN/ParProcIntro.pdf</xref>)
+demonstrates an implementation of a simple Pthread barrier. </p> <codeblock id="GUID-A156CD2D-F212-57EA-A23A-C7B7478B431E" xml:space="preserve">struct barrier_t
+{
+   //number of nodes to synchronise
+   int nodes;
+   //two counts to avoid race conditions
+   int count[2];
+   //which count to use
+   int whichcount;
+   //mutex to lock
+   pthread_mutex_t lock;
+   //condition to lock
+   pthread_cond_t cv;
+};
+
+//initialize a barrier 
+void InitBarrier(struct barrier_t* PB, int nodes)
+{
+   PB-&gt;nodes = nodes;
+   PB-&gt;count[0] = 0;
+   PB-&gt;count[1] = 0;
+   PB-&gt;whichcount = 0;
+   pthread_mutex_init(&amp;PB-&gt;lock, NULL);
+   pthread_cond_init(&amp;PB-&gt;cv, NULL);
+}
+
+//destroy a barrier
+void DestroyBarrier(struct barrier_t* PB)
+{
+   pthread_mutex_destroy(&amp;PB-&gt;lock);
+   pthread_cond_destroy(&amp;PB-&gt;cv);
+}
+
+//wait for a barrier
+void WaitBarrier(struct barrier_t* PB)
+{
+   int WhichCount, Count;
+   
+   //which counter variable to use
+   WhichCount = PB-&gt;whichcount;
+   
+   //lock the mutex
+   pthread_mutex_lock(&amp;PB-&gt;lock);
+   
+   //get the count of nodes
+   Count = ++PB-&gt;count[WhichCount];
+   
+   //test whether it should block
+   if (Count &lt; PB-&gt;nodes)
+      pthread_cond_wait(&amp;PB-&gt;cv, &amp;PB-&gt;lock);
+   else
+   { 
+      //reset the counter
+      PB-&gt;count[WhichCount] = 0;
+      PB-&gt;whichcount = 1 - WhichCount;
+      
+      //release the wait
+      pthread_cond_broadcast(&amp;PB-&gt;cv);
+   }
+   
+   //unlock the threads
+   pthread_mutex_unlock(&amp;PB-&gt;lock);
+}</codeblock> <p>The following code was posted by Michael M. Lampkin as an
+open source implementation of Pthread spin threads. </p> <codeblock id="GUID-85F81360-113F-54DC-958E-7C76BC8BA98D" xml:space="preserve">/**********************************************************************
+BETA User Space spinlocks for POSIX systems lacking this functionality.
+Copyright ©) 2003-2006 Michael M. Lampkin 
+Contact at michael.lampkin&lt;at&gt;ieee.org
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License version 2 as
+published by the Free Software Foundation.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+version 2 along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+
+**********************************************************************/
+
+#define _POSIX_C_SOURCE 200112L
+#define _XOPEN_SOURCE 600
+
+#define SPINLOCK_SPIN_MAX 50
+
+/**
+ Need this "unique" value that we can use to take any spinlock
+ that has been initialized and identify attempts to call init
+ multiple times without corresponding calls to destroy.  A hard
+ coded value should be fine though still a 1 in 4 billion chance
+ of collision with random data in un-inited spinlock.
+**/
+
+static long int spin_magic = 0x2FCD51F9L;
+
+/**
+  The spinlock structure which should NEVER be manipulated
+  by user code.
+  owner:
+    a pthread_t var indicating the current owner of the
+    spinlock or filled with 0's if not owned
+  mutex:
+    the primary mutex that any incoming threads will spin on
+    and attempt to obtain.
+  magic:
+    a field to hold a sentinel value indicating if the spinlock
+    is initialized.
+**/
+
+typedef struct
+{
+  pthread_t       owner;
+  pthread_mutex_t mutex;
+  long int        magic;
+} 
+spinlock;
+
+/**
+ Function: spinlock_init
+ Description:
+   Initializes and allocates system resources to a
+   spinlock structure.
+ Parameters:
+   spin - a pointer to the spinlock structure to
+     be initialized.
+   pshared - either PTHREAD_PROCESS_PRIVATE or
+     PTHREAD_PROCESS_SHARED.  If the system does not
+     support process shared mutexes or an unknown value
+     is given then defaults internally to a private type
+     with no error.
+**/
+
+int spinlock_init( spinlock * spin, int pshared )
+{
+  int result;
+  pthread_mutexattr_t attr;
+
+  /* If already inited... race condition with destroy */
+  if ( NULL == spin )
+  {
+    return EINVAL;
+  }
+
+  if ( spin_magic == spin-&gt;magic )
+  {
+    return EBUSY;
+  }
+
+  ( void ) memset( &amp; spin-&gt;owner, 0, sizeof( pthread_t ) );
+
+  /* Set our process sharing attribute - default to PRIVATE */
+  result = pthread_mutexattr_init( &amp; attr );
+
+  if ( 0 == result )
+  {
+    if ( 0 &lt; sysconf( _SC_THREAD_PROCESS_SHARED ) )
+    {
+      if( PTHREAD_PROCESS_SHARED == pshared )
+      {
+        result = pthread_mutexattr_setpshared( &amp; attr, pshared );
+      }
+      else
+      {
+        result = pthread_mutexattr_setpshared( &amp; attr, PTHREAD_PROCESS_PRIVATE );
+      }
+    }
+  }
+
+  /* Need to add this to prevent recursive mutex default on some sys */
+  if ( 0 == result )
+  {
+    result = pthread_mutexattr_settype( &amp; attr, PTHREAD_MUTEX_ERRORCHECK );
+  }
+
+  /* The following is a race against simultaneous calls to init */
+  if ( 0 == result )
+  {
+    result = pthread_mutex_init( &amp; spin-&gt;mutex, &amp; attr );
+  }
+
+  if ( 0 == result )
+  {
+    spin-&gt;magic = spin_magic;     
+  }
+
+  ( void ) pthread_mutexattr_destroy( &amp; attr );
+  return result;
+}
+
+/**
+ Function: spinlock_destroy
+ Description:
+   Releases system resources allocated to a spinlock
+   structure during initializion.
+ Parameters:
+   spin - a pointer to a previously initialized but
+     not destroyed spinlock.
+**/
+int spinlock_destroy( spinlock * spin )
+{
+  int result;
+
+  if ( NULL == spin || spin_magic != spin-&gt;magic )
+  {
+    return EINVAL;
+  }
+
+  if ( 0 != ( result = pthread_mutex_destroy( &amp; spin-&gt;mutex ) ) )
+  {
+    return result;
+  }
+
+  ( void ) memset( &amp; spin-&gt;owner, 0, sizeof( pthread_t ) );
+
+  /**
+   A return of EINVAL on destroy means another thread is
+   also destroying.  Ignore it.
+  **/
+  spin-&gt;magic = 0;
+
+  return 0;
+}
+
+/**
+ Function: spinlock_lock
+ Description:
+   Attempts to acquire exclusive access to the specified
+   spinlock.  If the spinlock is already owned then begin
+   spinning until ownership is obtained.
+
+ Parameters:
+   spin - a pointer to an initialized spinlock.
+**/
+int spinlock_lock( spinlock * spin )
+{
+  pthread_t self;
+  int result;
+  int spin_count;
+
+  if ( NULL == spin || spin_magic != spin-&gt;magic )
+  {
+    return EINVAL;
+  }
+
+  self = pthread_self( );
+  if ( 0 == memcmp( &amp; spin-&gt;owner, &amp; self, sizeof( pthread_t ) ) )
+  {
+    return EDEADLK;
+  }
+
+  for ( ; 0 != ( result = pthread_mutex_trylock( &amp; spin-&gt;mutex ) ) ; )
+  {
+    if ( EBUSY == result )
+    {
+      ++ spin_count;
+
+      if ( SPINLOCK_SPIN_MAX == spin_count )
+      {
+        ( void ) sched_yield( );
+        spin_count = 0;
+      }
+    }
+    else
+    {
+      /* Destroy occurred on us... */
+      return EINVAL;
+    }
+  }
+
+  ( void ) memcpy( &amp; spin-&gt;owner, &amp; self, sizeof( pthread_t ) );
+  return result;
+}
+
+/**</codeblock> </section>
+<section id="GUID-777FDBF9-4B80-5B58-88F3-E78DBDB89021"><title>Command line
+shell</title> <p>Symbian platform phones do not have a command line shell
+as standard. P.I.P.S. does however support the <xref href="GUID-C0C1D22B-298F-3E8D-A1E9-6F5EFA81F9E8.dita"><apiname>stdin()</apiname></xref>, <xref href="GUID-85797574-E2A2-3C0C-9670-C178078DE199.dita"><apiname>stdout()</apiname></xref> and <xref href="GUID-4FF97B50-2C1E-37EC-888B-FB8D3F14B5B8.dita"><apiname>stderr()</apiname></xref> standard
+streams, enabling parent processes to redirect a child's standard streams
+for the exchange of data. Without explicitly redirecting the standard streams,
+the default is for each to be redirected to the <filepath>/dev/null</filepath> directory.
+The P.I.P.S. <xref href="GUID-3D9040E5-F6FB-3DEA-9800-A55F0CEE7B08.dita"><apiname>system()</apiname></xref> function does not create a shell
+for a new program as in most POSIX implementations, however, it will start
+a program and return the program's exit value. </p> </section>
+<section id="GUID-98FE0A61-A9F6-5216-A01F-A213F33D3173"><title>User interfaces</title> <p>Most
+POSIX based systems interact with a windowing system such as X Windows and
+libraries such as GTK. P.I.P.S., however, does not have its own UI libraries,
+so any P.I.P.S. based applications that require UI functionality must rely
+on the UI from the device manufacturer. As a consequence, for any UI program
+that uses P.I.P.S., there must be an interaction between Symbian platform
+native C++ and P.I.P.S. C code. </p> </section>
+<section id="GUID-3CA8FF29-79B4-5D43-8A23-EDB136BF7A8F"><title>One Definition
+Rule - warning</title> <p>Standard C++ states that the <keyword>One Definition
+Rule</keyword> (ODR) must be maintained within a program. </p> <p>Symbian
+platform can neither check (without significant modifications) that the ODR
+is violated nor use the technique called symbol pre-emption to ensure that
+the ODR is enforced. </p> <p>Therefore, you must take care and must not assume
+that there is only one copy of the symbol (that is, all instances of the same
+symbol will have the same address) across all DLLs within a program. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579" xml:lang="en"><title>Windows
+and panes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The display layouts are hierarchically organized. The layouts are built
+using components called windows and panes.</p>
+<table id="GUID-4E9DAC1B-1835-4838-ADBA-34EA35E77DF9"><title>Windows and panes</title>
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Window / Pane</entry>
+<entry><p>Description</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Screen</p></entry>
+<entry><p>The screen is the topmost display component, corresponding to the
+entire pixel area of the physical screen.</p></entry>
+</row>
+<row>
+<entry><p>Window</p></entry>
+<entry><p>A window is a component that has no parent except the screen. Typically,
+a window fills up the entire screen, but there are also smaller (temporary)
+windows that take up only a part of the screen, leaving other parts of the
+screen visible around themselves. Each application runs in a window of its
+own. Applications can also use other temporary windows.</p></entry>
+</row>
+<row>
+<entry><p>Pane</p></entry>
+<entry><p>A pane is a subcomponent of a window. A window may contain several
+panes, and each pane may contain further sub-panes and so on. A bottom level
+component that cannot have a sub-component can be called an element.</p></entry>
+</row>
+<row>
+<entry><p>Application window</p></entry>
+<entry><p>An application window is a principal window filling up the entire
+screen. It is usually not used directly for display, but just as a parent
+for the various panes. A typical application window is divided into the following
+panes:<ul>
+<li><p/> Status pane</li>
+<li><p/>Main pane</li>
+<li><p/>Control pane</li>
+</ul> See <xref href="GUID-08B878D0-C0DA-46CC-ACC2-E576E5A3D937.dita">Main pane</xref> , <xref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita">Status pane</xref> and <xref href="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita">Control pane</xref> for more
+detailed descriptions on each of these panes.</p></entry>
+</row>
+<row>
+<entry><p>Pop-up window</p></entry>
+<entry><p>A pop-up window must not fill the entire screen; the pop-up window
+has a frame, and typically the underlying application is partly visible around
+the pop-up window. Pop-up windows are typically used in temporary states.
+Back stepping should not usually lead to a pop-up window. Detailed information
+on the various pop-up windows can be found in <xref href="GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita">Pop-up
+windows</xref>.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<fig id="GUID-56AA0B14-761D-46AA-A66C-703B471D532B">
+<title>Panes</title>
+<image href="GUID-879B4D94-2614-4515-9947-B1329F62E90A_d0e52830_href.png" scale="40" placement="inline"/>
+</fig>
+<section id="GUID-EA67A1C1-D843-48BF-BC32-BB8225B65220"><title>Using
+windows and panes in C++ applications</title><p>Windows and panes use the
+Symbian application and UI frameworks. For implementation information, see <xref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita">Application and UI framework
+implementation considerations</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e64237_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1"><title>Shared Buffers</title><shortdesc>This topic explains the concepts of shared buffers and shared-buffer pools. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Copying large amounts of data between memory contexts uses CPU cycles, and therefore impedes performance and battery life. Sharing memory areas avoids copies and improves efficiency. However, it also creates security and robustness risks, and must only be applied to trusted components. </p> <section><title>Shared buffer</title> <p>A buffer is a contiguous section of physical memory with defined characteristics and a known layout. </p> <p>An <xref href="GUID-BD30996A-2737-398C-85AF-3E78B79E3320.dita"><apiname>RShBuf</apiname></xref> is a shared buffer : an area of shareable memory. Processes can share the handle to an <codeph>RShBuf</codeph> object to access the data it contains. </p> </section> <section><title>Shared-buffer pool</title> <p>A pool is a collection of buffers with common characteristics. These characteristics are their size and their DMA requirements (physical memory address range). The pool preallocates the memory for the buffers and is responsible for allocating and managing the buffers within the pool. The pool is the only provider of buffers. </p> <p>An <xref href="GUID-69A28019-A2D4-3498-8205-ABE6F5F5A213.dita"><apiname>RShPool</apiname></xref> is a shared-buffer pool: it contains shared buffers of identical size. It is the only provider </p> <p>The <codeph>RShPool</codeph> grows and shrinks automatically. It allocates more memory when more shared buffers are required, and frees memory occupied by unused buffers when possible. </p> </section> <section><title>Use case</title> <p>A typical use case for shared buffers involves a group of components that execute in different processes and need to share data. Some components in the group produce data, request a shared buffer for it and send the buffer to others. Each component can read the data, add to it or write over it before passing the buffer to the next component. When the data has been processed, the buffer can be returned to the pool which then considers it available for another request. </p> <p>Components in the group are trusted to access the shared memory: they usually execute in privileged processes. Some of these components may be device drivers, therefore executing in kernel space. </p> </section> </conbody><related-links><link href="GUID-B7A6571B-564A-5299-BA2E-1BDFC463BD21.dita"><linktext>Flexible Memory Model</linktext> </link> <link href="GUID-A248C2C0-5F64-5484-85B2-57C86E3499E1.dita"><linktext>Memory
+                Management in the Communications Framework</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741" xml:lang="en"><title>Location
+Acquisition API Overview</title><shortdesc>Applications use the Location Acquisition API to obtain location
+fixes from the LBS subsystem. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>This document describes the Location Acquisition
+API. Client applications use the API to obtain the location of the mobile
+device and to discover the type and status of the available Positioning Modules. </p> </section>
+<section><title>Introduction</title> <p>The Location Acquisition API defines
+the client application view of the LBS Location Server. The API is a standard
+Symbian platform client/server implementation. Applications use the API to: </p> <ul>
+<li id="GUID-600F2A1E-DADF-5172-B1FC-A3C2190E61DF"><p>Obtain the location
+of the mobile device </p> <p>The Location Acquisition API is designed so that
+client applications can always make the same API calls to obtain the device
+location irrespective of the underlying positioning technologies used by the
+Location Server. </p> </li>
+<li id="GUID-A6480A42-E1FF-5DAF-8F1E-3C490D9332E5"><p>Discover the type and
+status of available positioning technologies </p> <p>The API allows applications
+to discover the available Positioning Modules and to receive notification
+of changes in their status. Applications can also make a choice of the specific
+Positioning Module to use to get the device location. </p> </li>
+</ul> </section>
+<section><title>Key concepts</title> <dl>
+<dlentry>
+<dt>Location Server</dt>
+<dd><p>The Symbian platform server used by client applications to get location
+information. The Location Server can use multiple Positioning Modules to obtain
+location information. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Positioning Module</dt>
+<dd><p>An ECom plug-in that handles requests for location information and
+interfaces with positioning technology hardware. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>API summary</title> <p>Figure 1 illustrates the client interface
+classes of the Location Acquisition API including the data classes that hold
+basic location information. The classes shown are defined in the header file <filepath>lbs.h</filepath>.
+See <xref href="GUID-0D5692FB-305E-58B2-B105-B309BB9AE38D.dita">Location Acquisition
+API reference</xref> for a full list of all the API header files. </p> <p>The
+following is a brief description of some of the most important API classes: </p> <ul>
+<li id="GUID-CBE6C60B-B28F-5CBC-93BE-E7DC8E2CE678"><p> <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita"><apiname>RPositionServer</apiname></xref> is
+used by client applications to create a session with the Location Server.
+This class is also used to get details of the positioning technology modules
+available and their status. Opening a session with the Location Server may
+generate a standard client/server error code which a client application must
+check for. </p> </li>
+<li id="GUID-B6A6ECBF-1FF9-505A-8B45-8968DA1612AC"><p> <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita"><apiname>RPositioner</apiname></xref> is
+used by client applications to create a subsession with the Location Server.
+A client application uses this class to request location information and set
+the frequency of location information updates. In addition to standard client/server
+error codes, calls to <codeph>RPositioner</codeph> may generate LBS specific
+error codes (defined in <filepath>LbsErrors.h</filepath>) or error codes generated
+by Positioning Modules. </p> </li>
+<li id="GUID-EB6A67CE-5F09-5A9E-86FE-D2A3337B6FD9"><p> <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref> is
+a simple data wrapper class. An empty object of this type is passed to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita"><apiname>RPositioner</apiname></xref> by
+a client application when basic location information is required. The returned
+object holds the identifier of the positioning technology module used to obtain
+the position data. The position data is held in a <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> object. </p> <p>See <xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">Position data and info classes</xref> for
+an overview of the data classes that hold position data. </p> </li>
+<li id="GUID-CED05369-EC6E-5C0D-AAD5-1A34A2BFFA7E"><p> <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> is
+the class that holds basic position data: latitude, longitude and altitude
+(and their accuracy) and the time at which the location fix was obtained.
+See <xref href="GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita">Position data</xref> for
+more information about how co-ordinate values are represented in this class. </p> </li>
+</ul> <fig id="GUID-4F3214DA-0D42-5FFB-8392-3A29F743E6F6">
+<title>              Figure 1. RPositionServer and RPositioner with basic
+position data              classes            </title>
+<image href="GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e241289_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Platform security capabilities</title> <p>Applications must
+have the <codeph>Location</codeph> capability to use the Location Acquisition
+API. </p> </section>
+<section><title>Typical uses</title> <p> <i>Client applications use the API
+in three ways:</i>  </p> <ol id="GUID-B37E7969-ADCE-56FD-ADE6-6A0D85A6C608">
+<li id="GUID-E04AA9F3-2013-5F64-B880-01BAE092F07C"><p>To get location information. </p> <p>The
+main purpose of the Location Acquisition API is to provide location information
+to client applications. </p> <p>See <xref href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita">How
+to get location information</xref> for examples of how to get basic location
+information using the API. </p> </li>
+<li id="GUID-25454FD2-14E2-590E-B520-D1241046E24D"><p>To get positioning technology
+module information. </p> <p>The API provides functions to allow discovery
+of the capabilities and quality of information provided by the set of positioning
+technology modules. </p> <p>See <xref href="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita">Positioning
+technology modules</xref> for a description of the positioning technology
+module information which is accessible to client applications using the API. </p> <p>See <xref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita">How to use module information</xref> for
+an example of how to obtain information about the available modules. </p> </li>
+<li id="GUID-558D8BE4-E8B9-55B7-9CA5-10A35B0D2664"><p>To receive notification
+of positioning technology module status changes. </p> <p>An application may
+wish to be informed when a module becomes available or unavailable. For example,
+an application may want to know when GPS becomes available as this may increase
+its capabilities and so change its behaviour. The API provides a way for client
+applications to receive notification of module status changes. </p> <p>See <xref href="GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita">Positioning technology module
+status</xref> for a description of Positioning Module status and events. </p> <p>See <xref href="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita">How to get module status
+change notifications</xref> for an example of how to get notification of module
+status changes. </p> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita"><linktext>Position
+Data and Info Classes</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-65F8675F-FF08-5707-BA5B-BF3B4B779393" xml:lang="en"><title>Handling
+SDP results</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Clients that make service and attribute queries through <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>CSdpAgent</apiname></xref> must
+implement the <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> interface
+to handle the responses. </p>
+<section><title>How to create an object to handle inquiry results</title> <p>There
+are two kinds of results that require handling, they are: </p> <ul>
+<li id="GUID-5D797F13-A380-5286-905F-9DCB374224B7"><p>Service Search Results,
+and </p> </li>
+<li id="GUID-49BAAE50-2EB9-5A64-910A-5C95CED036DE"><p>Attribute Read Results </p> </li>
+</ul> <p>We will examine a simple handling example for both kinds below. </p><p>Note: 
+Queries are asynchronous. </p> </section>
+<section><title>Handling service search results</title> <p>When a service
+search request completes, it calls the <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>NextRecordRequestComplete()</apiname></xref>: </p> <codeblock id="GUID-00FBBFCE-2C58-5D79-9C24-D0BC796BE1D3" xml:space="preserve">virtual void NextRecordRequestComplete(TInt aError, TSdpServRecordHandle aHandle, TInt aTotalRecordsCount)</codeblock> <p> <codeph>aHandle</codeph> gives the service record handle of the matching
+service, and can be used in a subsequent attribute query. <codeph>aTotalRecordsCount</codeph> gives
+the total number of matching records. </p> </section>
+<section><title>Handling attribute read results</title> <p>When an attribute
+request completes, each single attribute is returned with its attribute ID
+using <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>AttributeRequestResult()</apiname></xref>. </p> <codeblock id="GUID-B13E900D-9D1A-5FA4-9063-FA830B86218E" xml:space="preserve">virtual void AttributeRequestResult(TSdpServRecordHandle aHandle, TSdpAttributeID aAttrID, CSdpAttrValue* aAttrValue)</codeblock> <p>The ID of the attribute is given in <codeph>aAttrID</codeph>, and the
+attribute value itself in <codeph>aAttrValue</codeph>. You can find the type
+of the attribute through <codeph>aAttrValue-&gt;Type()</codeph>, cast <codeph>aAttrValue</codeph> on
+this base to the correct subclass of <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>CSdpAttrValue</apiname></xref>:
+for example, if the type is <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>ETypeBoolean</apiname></xref>,
+you can cast <codeph>aAttrValue</codeph> to a <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>CSdpAttrValueBoolean</apiname></xref>. </p> <p>When
+there are no more attributes to be returned, <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>AttributeRequestComplete()</apiname></xref> is
+called. </p> </section>
+<section><title>Where Next?</title> <p>The complete set of Service Discovery
+Agent tutorials are shown below: </p> <ul>
+<li id="GUID-7461DF52-06B4-55BE-B176-7F1F88851B7C"><p> <xref href="GUID-275D7892-EEBD-5DBD-A9D7-F6A715B79659.dita">Querying
+the SDP database</xref>  </p> </li>
+<li id="GUID-2C509727-D129-5DC6-8761-1975151FBA6C"><p> <xref href="GUID-1EA7B3A5-7A94-5E8F-A0A8-9CA417E14032.dita">Reading
+remote SDP service attributes</xref>  </p> </li>
+<li id="GUID-93251739-F226-5398-9F7B-A3BC599AB40F"><p> <b>Handling SDP query
+results</b> - This document </p> </li>
+</ul> <p>Also refer to the <xref href="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita">Bluetooth
+Service Discovery Agent Overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth
+SDP Overview</xref> for additional background information. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66022FF4-3044-51E6-88CE-FE3B1283C0CB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-66022FF4-3044-51E6-88CE-FE3B1283C0CB" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes some of the key concepts and definitions of User Prompt Service. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66231EA2-BDEF-582D-A4B9-F356B590038D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-66231EA2-BDEF-582D-A4B9-F356B590038D" xml:lang="en"><title>FAT
+Filename Conversion Plug-ins Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The FAT Filename Conversion Plug-ins component contains plug-in converters
+used by the File Server. Each plug-in converts file names (FAT or FAT32) between
+Unicode and a Windows code page. </p>
+<section><title>Key concept</title> <p> <b>Windows code page</b>  </p> <p>A
+Windows code page is also referred to as a code page. It is a character encoding
+used by Windows OS. Windows code pages match most of the current encodings.
+For example, CP1250 (a Windows code page) supports character set of ISO-8859-2. </p> </section>
+<section><title>Libraries (plug-in converters)</title> <p>The following table
+lists the plug-in converters used by the File Server, and their respective
+target scripts. Each converter is identified by the DLL name which is named
+as <filepath>[converter name].dll</filepath>. </p> <table id="GUID-9AB1631B-6F48-595D-8243-B56803928BAA">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Converter Name</b>  </p> </entry>
+<entry><p> <b>Target script</b>  </p> </entry>
+</row>
+<row>
+<entry><p>CP 1256 </p> </entry>
+<entry><p>Arabic </p> </entry>
+</row>
+<row>
+<entry><p>CP 1257 </p> </entry>
+<entry><p>Baltic </p> </entry>
+</row>
+<row>
+<entry><p>CP 1250 </p> </entry>
+<entry><p>Central and East European </p> </entry>
+</row>
+<row>
+<entry><p>CP 1252 </p> </entry>
+<entry><p>West European </p> </entry>
+</row>
+<row>
+<entry><p>CP 936 </p> </entry>
+<entry><p>Chinese (Simplified) </p> </entry>
+</row>
+<row>
+<entry><p>CP 950 </p> </entry>
+<entry><p>Chinese (Traditional) </p> </entry>
+</row>
+<row>
+<entry><p>CP 1251 </p> </entry>
+<entry><p>Cyrillic </p> </entry>
+</row>
+<row>
+<entry><p>CP 1253 </p> </entry>
+<entry><p>Greek </p> </entry>
+</row>
+<row>
+<entry><p>CP 1255 </p> </entry>
+<entry><p>Hebrew </p> </entry>
+</row>
+<row>
+<entry><p>CP 932 </p> </entry>
+<entry><p>Japanese </p> </entry>
+</row>
+<row>
+<entry><p>CP 949 </p> </entry>
+<entry><p>Korean </p> </entry>
+</row>
+<row>
+<entry><p>CP 1254 </p> </entry>
+<entry><p>Turkish </p> </entry>
+</row>
+<row>
+<entry><p>CP 1258 </p> </entry>
+<entry><p>Vietnamese </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <ul>
+<li id="GUID-3E261FA6-B9D3-5357-8274-09257A759297"><p>Device creators can <xref href="GUID-026E865E-12FA-59A9-B923-309B65790E23.dita">create FAT Filename Conversion
+plug-ins</xref> to support character conversion for additional target scripts. </p> </li>
+<li id="GUID-25631A0D-B9DD-578F-8484-76D7460D52D9"><p>Application developers
+can have the File Server dynamically <xref href="GUID-2068DA42-AE77-5213-B3CF-C3AB7F2188BE.dita">load
+and call a FAT Filename Conversion plug-in</xref> to convert file names between
+Unicode and a Windows code page. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-66402932-5C44-556B-A7AC-1C2D245C8B05" xml:lang="en"><title>Clocks and Timers Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use the clock and timer APIs to schedule tasks that require sub-second granularity. When a timer expires it can send a signal to its calling process. </p> <p>The following topics describe how you can use the clock and timer APIs when you develop POSIX compliant applications or port POSIX-based applications to Symbian platform. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66470976-7B8B-582B-B32B-4010C95052FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-66470976-7B8B-582B-B32B-4010C95052FF"><title>Compressed Unicode resource format</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes the compressed resource file format introduced from Symbian OS v7.0. </p> <p>This format compresses, for those cases where actual benefit is yielded by compressing, Unicode text-strings in the resource data by using the Standard Compression Scheme for Unicode, described in <xref scope="external" href="http://www.unicode.org/unicode/reports/tr6/tr6-3.2.html">http://www.unicode.org/unicode/reports/tr6/tr6-3.2.html</xref>. </p> <p>Resource files in this format are generated by the resource compiler from Symbian OS v7.0.</p> <table id="GUID-70D9B9A9-DD57-5996-8FDB-7820F8712508"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p><b>Number of bytes</b> </p> </entry> <entry><p><b>Description</b> </p> </entry> </row> <row><entry><p>16</p> </entry> <entry><p>These bytes store the resource file’s UIDs. </p> <p>The first twelve bytes consist of three four-byte integers (in little-endian byte order) followed by a four-byte CRC checksum generated from those three integers. </p> <p>The first UID is always 0x101f4a6b. </p> <p>The second and third UIDs can be specified on rcomp's command-line. By default, the second UID is zero and the third UID is the resource file’s “offset”, i.e. the twenty-bit integer generated from the resource file’s name. These twenty bits are stored in the least significant twenty bits of the third UID; the most significant twelve bits are all zero.</p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p>This byte stores flags. Currently, there is only one flag defined, which is the lowest bit of the byte (0x01). This flag indicates whether the third UID is actually the resource file’s “offset” (see the row above). The bit is set to non-zero if it is, and zero if it is not.</p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores the size in bytes of the largest resource in the file (that is, the size when uncompressed).</p> </entry> </row> <row><entry><p>number_of_resources/8 (rounded up to the nearest whole number)</p> </entry> <entry><p>This is a bit-array (one bit for each resource) storing which resources contain compressed Unicode. The least significant bit of the first byte corresponds to the first resource, the next-to-least significant bit of the first byte corresponds to the second resource, etc. A bit being set to non-zero indicates that the corresponding resource contains compressed Unicode, a zero bit indicates that it does not contain compressed Unicode.</p> </entry> </row> <row><entry><p>[any]</p> </entry> <entry><p>This contains the data for all the resources stored in order, one after another with no byte-padding between them. The format of the data for each resource is in one of two possible formats depending on whether the resource contains compressed Unicode. The bit-array described in the row above indicates which resources contain compressed Unicode. Note that resources in either of these two formats may contain <i>uncompressed</i> Unicode: this is because compressing Unicode using the Standard Compression Scheme for Unicode can, in certain conditions, yield larger output than input, hence such Unicode text-strings will <i>not</i> be compressed as it would not be beneficial. Extra padding bytes (arbitrarily 0xab) are inserted in front of any uncompressed Unicode text-string that would otherwise not be aligned on a two-byte boundary relative to the start of that resource’s data, once the resource has been uncompressed.</p> <p><i>Resources not containing compressed Unicode:</i> </p> <p>The binary data of these resources is laid out exactly as specified in the resource definition (although note the comment about padding bytes above).</p> <p><i>Resources containing compressed Unicode:</i> </p> <p>The binary data of these resources is split up into one or more sequences, or “runs”, alternating between compressed Unicode and other material. </p> <p>Each run is preceded by an integer containing the length in bytes of the run (not including the byte(s) it occupies itself). The run-length occupies a single byte if it is less than 128, otherwise it occupies two bytes (in little-endian byte order), with the most significant bit of the first byte set to non-zero to indicate that the run-length occupies two bytes. Only the length of the first run may be zero (which would be the case if the resource does not <i>start</i> with compressed Unicode).</p> </entry> </row> <row><entry><p>(number_of_resources+1)*2</p> </entry> <entry><p>This is the resource index, which is a series of two-byte integers (in little-endian byte order), one for each resource in the resource file, each storing the file-position of that resource’s data (see row immediately above). </p> <p>This is followed by a two-byte integer (in little-endian byte order), which is the file-position one byte past the end of the last resource’s data. This is so that working out the length of a resource’s data is trivially done by subtracting the file-position stored in that resource’s index-entry from the file-position in the next index-entry. </p> <p>This last entry in the resource index, which stores the file-position one byte past the end of the last resource’s data, can also be thought of as storing the file-position of the start of the resource index.</p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-667E7F90-D6C2-55CE-AE60-6C938072FB9C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-667E7F90-D6C2-55CE-AE60-6C938072FB9C" xml:lang="en"><title>Graphics
+and Drawing Overview</title><shortdesc>This topic provides an introduction to drawing graphics to the
+screen. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target
+audience</b>: Application developers. </p>
+<p>Applications can draw to any <codeph>RDrawableWindow</codeph> —such as
+an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> —via a graphics device, of type <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref>,
+and a graphics context, of type <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>. These classes
+are derived from the <xref href="GUID-B6D4AEE9-5C17-51D9-BBDE-7CCB5218279D.dita">GDI
+component</xref> classes <xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref> and <xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref>,
+respectively. This means that general drawing functions can be used for drawing
+to windows, as well as to other graphics devices. The Window Server itself
+does not provide the facilities to draw graphics to a physical device. <codeph>CWindowGc</codeph> functions
+are not passed to the Window Server directly. Rather, they are stored in a
+buffer maintained by the Window Server Client API. This buffer is flushed
+to the Window Server only rarely. By this means the context switching involved
+in drawing is minimised, and system performance significantly enhanced. </p>
+<p> <codeph>CWsScreenDeviceminimized</codeph> encapsulates the device-dependent
+aspects of graphics operations. Graphics functions are not carried out directly
+via a <codeph>CWsScreenDevice</codeph>, however, but via a graphics context
+with which it is associated. The graphics context class, <codeph>CWindowGc</codeph>,
+provides a rich set of drawing functions, including functions to draw lines,
+arcs, polygons, text and bitmaps. </p>
+<p>A graphics context contains a collection of configurable parameters concerned
+with graphics, such as pen width, pen color, brush color. It is stored in
+the server, thus reducing the amount of information that has to be sent with
+each graphics call. The graphics call simply specifies the graphics context
+it wishes to use, and a single graphics context can be shared between multiple
+windows. </p>
+<p>To draw to a graphics context it must be associated with a window. Typically
+a graphics context is created when a session is constructed, and that graphics
+context is shared between several windows in the application. When the window
+needs to use the graphics context it calls <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita#GUID-0AEE5955-C530-35F1-A904-69183331B294/GUID-1C0F9DF6-23C2-3707-8F2B-0A738467FF0A"><apiname>CWindowGc::Activate()</apiname></xref>.
+If necessary it can change the graphics context's settings. <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita#GUID-0AEE5955-C530-35F1-A904-69183331B294/GUID-E977DBB2-8547-3AB7-99E3-9D246DA6CF58"><apiname>CWindowGc::Deactivate()</apiname></xref> should
+be called first if the graphics context is currently active upon another window. </p>
+<p>Several optimizations are used by the Window Server to obtain high-performance
+graphics: </p>
+<ul>
+<li id="GUID-C8AC84D6-AF17-5975-88B8-CC93C499DFA0"><p>Each window is associated
+with an <codeph>RWsSession</codeph> which is in turn associated with a client-side
+buffer. Instead of implementing graphics operations by a direct client-server
+call, which involves expensive context switching, all graphics operations
+are stored as opcodes in the buffer, and the buffer is only flushed in certain
+circumstances. </p> </li>
+<li id="GUID-00B3FC8E-25DE-542F-BF67-0F71CF22526A"><p>The <codeph>CFbsBitmap</codeph> class
+allows a bitmap to be shared between all threads in the system, including
+the client and the Window Server. This sharing is mediated by the <xref href="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita">Font
+and Bitmap server</xref>. The <xref href="GUID-17150D76-BB82-3A4B-8B1A-8BA93CB1A9EF.dita"><apiname>CWsBitmap</apiname></xref> class eliminates
+further context switches by taking ownership of the handle of the bitmap.
+Applications can use this class to more efficiently open, blit-to-screen,
+and close a series of bitmaps. Use functions that take a <codeph>CWsBitmap</codeph> in
+preference to those that take a <codeph>CFbsBitmap</codeph>, because they
+are faster. </p> </li>
+<li id="GUID-550D1374-C166-54C6-A055-0CA040691654"><p>A single graphics context
+may be used for drawing to many windows—it is not necessary to have one per
+window. The <codeph>Activate()</codeph> function associates a <codeph>CWindowGc</codeph> with
+a particular window. </p> </li>
+<li id="GUID-91AFC884-0BB2-5A73-B757-94EF1B2328A7"><p>Provided drawing operations
+to an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> are performed as <xref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita">redraw
+drawing</xref>, the Window Server stores the sequence of drawing commands
+that represent the window contents in redraw stores. Then when the Window
+Server needs to repaint the window (because, for example, a dialog box popped
+up over it and has now closed) it simply replays the sequence of stored commands,
+rather than sending a redraw request to the client. This minimizes the number
+of client-server transactions and means that windows are repainted as soon
+as the Window Server detects that they are needed. </p> <p>This means that
+all <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> drawing should now be redraw drawing, which
+means that it takes place between <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-9337538E-7A53-3153-A330-968B5E4F2FF2"><apiname>RWindow::BeginRedraw()</apiname></xref> and <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-3DE16607-AD3B-3946-BEB3-88512EAAB9CE"><apiname>RWindow::EndRedraw()</apiname></xref> calls.
+If you use the <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-D5458F8C-E199-37DD-B821-050B749122C6"><apiname>CCoeControl::DrawNow()</apiname></xref> and <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-9FB682AC-0209-302A-83F3-7BCB1162B998"><apiname>CCoeControl::DrawDeferred()</apiname></xref> methods,
+the UI Control Framework (CONE) takes care of this for you. See <xref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita">Redraw
+Drawing</xref> for more information. </p> </li>
+</ul>
+</conbody><related-links>
+<link href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita"><linktext>Graphics
+and Drawing </linktext></link>
+<link href="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita"><linktext>The UI Control
+Framework (CONE)</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6690CEFF-AE08-4881-AF52-70C097EB2871.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6690CEFF-AE08-4881-AF52-70C097EB2871" xml:lang="en"><title>Unavailable
+items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Situations often occur where a certain function cannot be used. In these
+cases, the corresponding items in the Options menu must either be hidden,
+or there must be an error message given when the user tries to access a function
+that cannot be accomplished. The Symbian user interface does
+not use dimming of menu items.</p>
+<p>This is a trade-off issue: removing unnecessary options makes the Options
+menus shorter, but at the same time it changes the menu from situation to
+situation, preventing users from learning the function locations. It may even
+cause frustration if the users expect some function to be found in the menu,
+but it is sometimes not there.</p>
+<ul>
+<li><p>In case the user has no reason to search for a certain function in
+the given situation, it should be hidden. As an extreme example, the Delete
+option is not needed when there are no items to be deleted. </p></li>
+<li><p>If the user searches for a function, even though it cannot be used
+in the current situation, it is often better to display the option and give
+an appropriate message if the user tries to access that function.</p><p><ul>
+<li><p>An example of this is Digital Rights Management (DRM) protected files:
+for example, sending commands shall be visible in the user interface although
+sending such a file would not be allowed. Appropriate DRM-specific notifications
+are displayed if the user attempts to select one of the options that the user
+is not allowed to perform on DRM-protected media objects. This is to facilitate
+end-user's learning of the DRM concept.</p></li>
+</ul></p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63"><title>Store Streams Overview</title><shortdesc>Provides store streams, stream dictionary, and swizzle. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides stream types suitable for use in stores (structured data storage). </p> </section> <section><title>Architectural relationships</title> <p>The Store Streams API is based on the abstract stream types defined by the Streaming API. They are designed to be used in conjunction with the structured data storage defined by the Stores API. </p> </section> <section><title>Description</title> <p>The API has threee key concepts: store streams, stream dictionary, and swizzle. </p> <p><b>Store streams</b> </p> <p>The store streams extends the base stream types defined in the Streaming API, to allow streams to be used in stores. </p> <p>The store streams classes are <xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> and <xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref>. </p> <p><b>Stream dictionary</b> </p> <p>A stream dictionary maintains a list of two-way associations between UIDs and stream IDs (<xref href="GUID-1C4D4AFD-85E2-3D5D-B704-D1FA0E5E7DA2.dita"><apiname>TStreamId</apiname></xref>). They are used in the root streams of some stores: from them other streams in the store can be found. </p> <p>The stream dictionary class is <xref href="GUID-C5F2BE2A-6D08-3D89-AB13-6EFF899305CF.dita"><apiname>CStreamDictionary</apiname></xref>. </p> <p><b>Swizzle</b> </p> <p>For large stores, it can be desirable to defer reading some objects from streams into memory. A swizzle is a device for handling a dual representation of an object: </p> <p>if it is not in memory, by the relevant stream ID </p> <p>if in memory, by a pointer </p> <p>Full access is available to the object through the swizzle. </p> <p>Swizzles for non-const objects are provided by the template class <xref href="GUID-D10FA32F-32F7-3488-9AAC-CB95270EA006.dita"><apiname>TSwizzle</apiname></xref>. Swizzles for const objects are provided by the template class <xref href="GUID-760F0DF6-6FC7-3824-80C5-51321A459BED.dita"><apiname>TSwizzleC</apiname></xref>. </p> <p><b>Store map</b> </p> <p>A store map is a table of entries where each entry consists of a swizzle and a stream ID. It is provided by <xref href="GUID-D3E27885-46A1-35C1-97E5-17E4EDF72E56.dita"><apiname>CStoreMap</apiname></xref>. </p> </section> <section><title>See also</title> <p> <xref href="GUID-66ACFC54-5671-5B72-9DBC-A76F7A112D63.dita">Store Streams Overview</xref>  </p> <p> <xref href="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita">Streaming Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE" xml:lang="en"><title>Overview
+of random number generation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-B5BD3E1A-AFBB-5526-B5EA-8FA51A17E596"><title>Overview</title> <p>The
+purpose of the Random Number Generation API is the generation of cryptographically
+strong random numbers. </p> <p>Several cryptographic applications rely upon
+the randomness, unpredictability and irreproducibility of the random number
+generator, such as: </p> <ul>
+<li id="GUID-15685756-F94B-508C-A08C-8F0ECBC1A4AA"><p>one-time pads </p> </li>
+<li id="GUID-7E3ED7CE-65C3-5E8B-9FF0-139763F3E54B"><p>key generation </p> </li>
+<li id="GUID-0C65E7E4-A3F5-5EC4-9851-4A4E3090607B"><p>random nonces </p> </li>
+<li id="GUID-3C16304A-CDA0-5F50-9D6C-D76C2D6EA586"><p>Initialization Vectors
+(IVs) </p> </li>
+<li id="GUID-59F195DE-94E7-56EE-9A7D-EAB5E401DF9A"><p>salts to be hashed with
+passwords </p> </li>
+<li id="GUID-96B7B9D1-AB0D-5A54-9C7F-771008F354C1"><p>unique parameters in
+signing operations. </p> </li>
+</ul> <p>The RNG uses the <xref href="http://www.agner.org/random/" scope="external">RANROT</xref> algorithm
+seeded by random data available on the target hardware (for instance free
+running counters available on ARM processors). <note><p>In order to be <b>fully</b> compliant
+with DSS (Digital Signature Standard), applications using the cryptography
+library must supply a <xref href="http://cr.yp.to/bib/2000/-dss.pdf" scope="external">FIPS-186-2</xref> CR
+1 compliant random number generator. The library provides a mechanism for
+using such a random number generator if required. </p></note></p> </section>
+<section id="GUID-9350FD0E-7F09-5D82-BB91-EC1C8D740DBD"><title>The Random
+Number Generation API</title> <p>The diagram below shows the main classes
+used in the RNG, which are implemented in <filepath>random.dll</filepath>.
+For information on each class see the Cryptography API Reference material. </p> <fig id="GUID-5326D881-8795-5803-8B82-EC02C0C40226">
+<title>              The inheritance hierarchy for the RRandomSession and
+CSystemRandom classes            </title>
+<image href="GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e362142_href.png" placement="inline"/>
+</fig><p><b>How to use TRandom</b> </p> <p> <codeph>TRandom</codeph> is a
+cryptographically stong random number generator. Its declaration is: </p> <codeblock id="GUID-53D847C3-2A1A-51D8-93FA-F68EA2374551" xml:space="preserve">class TRandom
+    {
+public:
+    IMPORT_C static void RandomL(TDes8&amp; aDestination);
+    };</codeblock><note> The function <codeph>TRandom::Random()</codeph> which
+panics rather than leaves when it cannot obtain a random number, is deprecated
+from v9.1 onwards. </note> <p> <codeph>TRandom::RandomL()</codeph> generates
+random bytes by first connecting to the random number generation server (using <codeph>RRandomSession</codeph>).
+If the attempt to connect fails, <codeph>TRandom::RandomL()</codeph> leaves. </p> <p>The
+server fills <codeph>aDestination</codeph> with randomly generated bytes up
+to its current length (not its maximum length). If this fails, <codeph>TRandom::RandomL()</codeph> leaves.
+If <codeph>aDestination</codeph> is 1024 or more bytes long, multiple calls
+are made to the server. Finally, <codeph>TRandom</codeph> closes the session. </p> <p> <codeph>TRandom</codeph> can
+be used like this: </p> <codeblock id="GUID-0472582C-D5BD-520D-848E-9989E8730851" xml:space="preserve">HBufC8* rand = HBufC8::NewLC(5);
+TPtr8 pRand=rand-&gt;Des();
+pRand.SetLength(5);
+TRandom::RandomL(pRand);
+...
+CleanupStack::PopAndDestroy(rand);</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66C1493D-5B85-558A-9A39-454E6EBA307B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-66C1493D-5B85-558A-9A39-454E6EBA307B" xml:lang="en"><title>Signal
+Emulation on Symbian Platform</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>libc</codeph> library of P.I.P.S. provides support for POSIX
+signals, thereby facilitating the porting of applications that use signals
+for exception handling and as control IPC. </p>
+<p>P.I.P.S. supports POSIX signals by emulating them in user-side code. This
+is different from the UNIX architecture, where the kernel manages the generation
+and delivery of signals, and has important implications. </p>
+<ul>
+<li id="GUID-22658912-1F1E-5C77-9DE1-5210B898CFF0"><p>Signals are always handled
+in the context of a signal-handler thread created by the P.I.P.S. backend.
+For this reason, signals cannot be directed to a particular thread. </p> </li>
+<li id="GUID-4EFC9E19-4031-553B-AF88-546665FA37DB"><p>Before the handler function
+of a signal is invoked in the signal-handler thread, all other threads are
+suspended. When the handler function returns, the other threads resume. This
+is done to mirror the UNIX behaviour of process execution being suspended
+when a signal is being handled. </p> </li>
+<li id="GUID-177E6544-106B-5E8B-94C6-B0AAD6437C4C"><p>There might be a considerable
+amount of latency when you send or receive signals. </p> </li>
+</ul>
+<section><title>Sending signals</title> <p>Signals can be sent between P.I.P.S.
+processes using <xref href="GUID-16DC4A9D-44BC-36E2-AB97-5E9E7521937D.dita"><apiname>kill()</apiname></xref>, <xref href="GUID-EB7F74AE-091B-32C3-9D73-18B82F8D3D73.dita"><apiname>raise()</apiname></xref> or <xref href="GUID-3C70BF0B-CD6E-3A30-A9E6-4CCF11D47EEC.dita"><apiname>sigqueue()</apiname></xref>. </p> <p>You
+can use these functions to send any of the supported signals (refer to the
+following table). </p> <p>The P.I.P.S. runtime sends the following signals
+to P.I.P.S. processes: </p> <ul>
+<li id="GUID-6F1D5A0A-4562-55B4-8E70-BAFF45F3EFA9"><p> <b>SIGPIPE:</b> This
+signal is sent to a process which attempts to write to a broken <xref href="GUID-EC7F85FF-FD4E-324C-8D01-EF6F7E7A79FE.dita"><apiname>pipe()</apiname></xref>. </p> </li>
+<li id="GUID-99788FD7-4E26-5979-8E39-BA12F24D1DA9"><p> <b>SIGCHLD:</b> This
+signal is sent to a parent process when a child process exits. </p> </li>
+<li id="GUID-D41E5F22-0893-5F61-A4F6-E72239205928"><p> <b> SIGALRM:</b> This
+signal is sent to a process when an alarm registered by the process times
+out. </p> </li>
+</ul> <p> <b>Note:</b> Always ensure that you handle <codeph>SIGPIPE</codeph>, <codeph>SIGCHLD</codeph> or <codeph>SIGALRM</codeph> using
+a signal handler to avoid the termination of the process receiving these signals.
+For more information about handling signals, see the following section. </p> </section>
+<section><title>Handling signals</title> <p>A signal can be received by a
+process at any time and is handled immediately, unless it is currently blocked.
+You can handle a signal in the following ways: </p> <ol id="GUID-F03B299F-A527-5365-81D3-DDDC607A4094">
+<li id="GUID-DF0E70C8-74C2-5ACC-B556-8D216275C554"><p> <b>Use default handling:</b> The
+default action for each signal supported on Symbian platform is listed in
+the following table. </p> <p> <b>Note:</b> The default action for all of the
+signals sent by the P.I.P.S. runtime (<codeph>SIGPIPE</codeph>, <codeph>SIGCHLD</codeph> or <codeph>SIGALRM</codeph>)
+is process termination. You must provide a custom handler for each of these
+signals. </p> <table id="GUID-7101041B-CC50-5367-A3A2-6D15FB15C3DD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Signal </entry>
+<entry>Default Action</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>SIGHUP</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGINT</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SIGQUIT</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGILL</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGTRAP</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGABRT</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGIOT</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGEMT</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGFPE</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGKILL</codeph>  </p> </entry>
+<entry><p>Process termination </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGBUS</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGSEGV</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGSYS</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGPIPE</codeph>  </p> </entry>
+<entry><p>Process termination </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGALRM</codeph>  </p> </entry>
+<entry><p>Process termination </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGTERM</codeph>  </p> </entry>
+<entry><p>Process termination </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGURG</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGSTOP</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGTSTP</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGCONT</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGCHLD</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGTTIN</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGTTOU </codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SIGIO</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGXCPU</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGXFSZ</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGVTALRM</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGPROF</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGWINCH</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGINFO</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGUSR1</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGUSR2</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGTHR</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGRTMIN</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> SIGRTMAX</codeph>  </p> </entry>
+<entry><p>Ignore </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </li>
+<li id="GUID-5FEF9FD7-22C1-5722-AB35-56C6EC27713D"><p> <b> Ignore the signal:</b> You
+can choose to ignore a signal when it is delivered. </p> </li>
+<li id="GUID-83529703-4593-51B6-ACFD-78AF3634B3E5"><p> <b> Use a custom signal
+handler function:</b> You can set a custom signal handler function to be invoked
+when the signal arrives. </p> <p>The following example code demonstrates how
+you can handle a <codeph>SIGCHLD</codeph> signal by setting a custom signal
+handler function: </p> <codeblock id="GUID-4C7E5A1C-A0D6-5F7D-B444-8465B48122D4" xml:space="preserve">#include &lt;signal.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+void sighandler(int signum)
+    {
+    if(signum == SIGCHLD)
+        {
+        // Program logic for custom signal handling
+        }
+    else
+        printf(“Error: Unknown signal”);
+    }
+int main()
+    {
+    // When SIGCHLD arrives, invoke sighandler()
+    signal(SIGCHLD,sighandler);
+    // program logic
+    return 0;
+    }</codeblock> </li>
+</ol> </section>
+<section><title>Blocking signals</title> <p>A P.I.P.S. process can choose
+to block (and subsequently unblock) signals to itself using <xref href="GUID-02901E24-3615-3018-AF20-F5D5D63FD708.dita"><apiname>sighold()</apiname></xref>, <xref href="GUID-AE4CC3C8-C6D4-3F5C-A28F-C4AAB63E8992.dita"><apiname>sigset()</apiname></xref>, <xref href="GUID-68BD2914-FB73-3D91-9D81-425BF2436473.dita"><apiname>sigrelse()</apiname></xref> and <xref href="GUID-C7279C75-CB98-3F24-ABAA-76CF0009A8ED.dita"><apiname>sigprocmask()</apiname></xref>. Signals that are blocked on a P.I.P.S.
+process are not be delivered for handling. Instead, they are queued to be
+handled when they are unblocked. </p> <p>Non-realtime signals are queued only
+once, even when they are delivered multiple times. However, real-time signals
+are queued every time they are delivered. </p> <p> <b> Note:</b> You can force
+non-realtime signals to be queued multiple times by sending the signal using <xref href="GUID-3C70BF0B-CD6E-3A30-A9E6-4CCF11D47EEC.dita"><apiname>sigqueue()</apiname></xref>. </p> <p><b>Examples</b> </p> <p>The
+following example code demonstrates how real-time signals are queued when
+they are blocked: </p> <codeblock id="GUID-D3E99770-0E31-5B31-8AD4-DB5991AC4E03" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;signal.h&gt;
+void func(int sig)
+    {
+    printf("Signal was received");
+    }
+int main(void)
+    {
+    signal(SIGRTMIN+3,func);
+    sighold(SIGRTMIN+3);
+    raise(SIGRTMIN+3);
+    raise(SIGRTMIN+3);
+    raise(SIGRTMIN+3);
+    //This will cause func() to be called thrice
+    sigrelse(SIGRTMIN+3);
+    return 0;
+    }</codeblock> <p>The output displayed is: </p> <codeblock id="GUID-BB3F1695-8BD4-5AAA-8CF4-BECA435327D4" xml:space="preserve">Signal was received
+Signal was received
+Signal was received</codeblock> <p>The following example code demonstrates
+how non-realtime signals are queued when they are blocked: </p> <codeblock id="GUID-0F984C01-54F9-50DB-8112-CF5F79E344D6" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;signal.h&gt;
+void func(int sig)
+    {
+    printf("Signal was received");
+    }
+int main(void)
+    {
+    signal(SIGINT,func);
+    sighold(SIGINT);
+    raise(SIGINT);
+    raise(SIGINT);
+    raise(SIGINT);
+    // This will cause func() to be called only ONCE, since SIGINT is a non-realtime signal.
+    sigrelse(SIGINT);
+    return 0;
+    }</codeblock> <p>The output displayed is: </p> <codeblock id="GUID-3AAF3CF0-4B9D-5F75-9461-31A1EB628291" xml:space="preserve">Signal was received</codeblock> <p>The
+following example code demonstrates how you can force a non-realtime signal
+to be queued multiple times by sending the signal using <xref href="GUID-3C70BF0B-CD6E-3A30-A9E6-4CCF11D47EEC.dita"><apiname>sigqueue()</apiname></xref>: </p> <codeblock id="GUID-C3EFB6FC-3592-5F69-9AAE-F796EB483DEA" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;signal.h&gt;
+#include &lt;unistd.h&gt;
+void func(int sig)
+    {
+    printf("Signal was received");
+    }
+int main(void)
+    {
+    union sigval val;
+    val.sigval_int = 0;
+    signal(SIGINT,func);
+    sighold(SIGINT);
+    sigqueue(getpid(), SIGINT,val);
+    sigqueue(getpid(), SIGINT,val);
+    sigqueue(getpid(), SIGINT,val);
+    // This will cause func() to be called thrice
+    sigrelse(SIGINT);
+    return 0;
+    }</codeblock> <p>The output displayed is: </p> <codeblock id="GUID-6F2BA135-2134-5176-9A80-80EB15286D7F" xml:space="preserve">Signal was received
+Signal was received
+Signal was received</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA.dita"><linktext>Using Signals
+to Handle Exceptions</linktext></link>
+<link href="GUID-186B9876-2A08-5F23-BB49-49EC34C51507.dita"><linktext>Using Signals
+to Terminate Processes</linktext></link>
+<link href="GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B.dita"><linktext>Using Signals
+to Handle Asynchronous Events</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66C1F45B-FA94-5724-AD8F-371EAE92B7E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-66C1F45B-FA94-5724-AD8F-371EAE92B7E9"><title>DEBUGGABLE_UDEBONLY</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>DEBUGGABLE_UDEBONLY</codeph>  </p> <p>Use the <codeph>DEBUGGABLE_UDEBONLY</codeph> statement to mark only the debug version of application to be debugged using the run-mode debug API. </p> <p>If both <codeph>DEBUGGABLE_UDEBONLY</codeph> and <codeph>debuggable</codeph> are in an <filepath>.mmp</filepath> file, the behaviour will follow as <codeph>DEBUGGABLE_UDEBONLY</codeph>. </p> <p>The following examples show the different scenarios when using the keywords <codeph>debuggable</codeph> and <codeph>DEBUGGABLE_UDEBONLY</codeph>: </p> <ul><li id="GUID-EF3AF6B3-0587-575A-A5CB-267756F6F759"><p>Perform the following steps using the keyword <codeph>debuggable</codeph>: </p> <ol id="GUID-824310D9-B3E7-549D-9F55-2583D070D575"><li id="GUID-B39CBDF7-921E-51A8-A6DF-EEAD4F21BC76"><p>Add keyword <codeph>debuggable</codeph> into <filepath>helloworld.mmp</filepath> file </p> </li> <li id="GUID-B75B8A27-8B65-5067-9FE3-83AE7694202D"><p>Build <filepath>helloworld.mmp</filepath>  </p> </li> <li id="GUID-CEFFA970-9F72-54B3-9692-9E21FF107CCB"><p>Execute READIMAGE to dump <filepath>helloworld.exe</filepath> (release and debug version). </p> <p>The expected result is <codeph>0x00000800</codeph>, which means the executable file is debuggable. </p> </li> </ol> </li> <li id="GUID-D26C012B-A5DF-55C6-B834-B10770E8EA0E"><p>Perform the following steps using the keyword <codeph>DEBUGGABLE_UDEBONLY</codeph>: </p> <ol id="GUID-5AFC6E61-7A01-5F65-8182-F809DF9C197F"><li id="GUID-3719B145-F7DE-5F28-B0B7-29DA324F86EA"><p>Add keyword <codeph>DEBUGGABLE_UDEBONLY</codeph> into <filepath>helloworld.mmp</filepath> file </p> </li> <li id="GUID-0EFDBA66-6165-58B7-B271-E9A4718EADE8"><p>Build <filepath>helloworld.mmp</filepath>  </p> </li> <li id="GUID-6C1C6A2C-5B70-5BBE-B560-37E6BD3DAA74"><p>Execute READIMAGE to dump <filepath>helloworld.exe</filepath> (release and debug version). </p> <p>The expected result is that the debug version of the executable file is debuggable but, the release executable file is not debuggable. </p> </li> </ol> </li> <li id="GUID-DBC9B952-929C-537C-B61E-8F171EB7A7BA"><p>Perform the following steps using both <codeph>DEBUGGABLE_UDEBONLY</codeph> and <codeph>debuggable</codeph> keywords: </p> <ol id="GUID-5A5F8F34-2BB8-5455-B4CA-FE48A5CDB148"><li id="GUID-9A0AC7C7-A2D3-5974-B494-E5991BDDCE71"><p>Add both <codeph>DEBUGGABLE_UDEBONLY</codeph> and <codeph>debuggable</codeph> keywords into <filepath>helloworld.mmp</filepath> file. </p> </li> <li id="GUID-1B849FB4-2718-51DF-849F-11239E96540B"><p>Build <filepath>helloworld.mmp</filepath> file </p> </li> <li id="GUID-05D90FDA-9B87-5CB9-AFFF-FD2C6F45831B"><p>Execute READIMAGE to dump <filepath>helloworld.exe</filepath> (release and debug version). </p> <p>The expected result is that the debug version of the executable file is debuggable but, the release executable file is not debuggable. </p> </li> </ol> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66CF3E59-DA9C-4287-8A49-5655E83E2F84.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-66CF3E59-DA9C-4287-8A49-5655E83E2F84" xml:lang="en"><title>Getting
+Started with GLib</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following files must be added to the MMP file of the project in order
+to build an application based on GLib:</p>
+<ul>
+<li><p>Include GLib headers as system include files:</p><codeblock xml:space="preserve">SYSTEMINCLUDE \epoc32\include\stdapis\glib-2.0</codeblock></li>
+<li><p>Add the libraries <filepath>libc.lib</filepath> and <filepath>libglib.lib</filepath>.
+The application does not link in the absence of the <filepath>libc.lib</filepath> library. </p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e330986_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D" xml:lang="en"><title>Title
+pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The <uicontrol>Title pane</uicontrol> displays a context-dependent application
+title or state name.</p>
+<fig id="GUID-62EB0EDB-3EC7-4321-A1DD-099EF80318B7">
+<title>Title pane</title>
+<image href="GUID-C6086C67-963B-455F-8BA6-58DC568084F0_d0e53206_href.png" scale="50" placement="inline"></image>
+</fig>
+<ul>
+<li><p>Typically, the title text is the descriptive name of the current main
+pane view.</p></li>
+<li><p>In an application idle state, the title text is typically the application
+name.</p></li>
+<li><p>In the idle state, the <uicontrol>Title pane</uicontrol> may contain
+an operator logo (left-aligned in the area available) instead
+of the operator name as text.</p></li>
+</ul>
+<section><title>Using the title pane
+in C++ applications</title><p>The API to use for the title pane component
+is the Title
+pane API. For observing title pane touch events, use the <xref href="GUID-B876D548-FD40-4369-B328-7427002B4851.dita">Title
+Pane Touch Observer API</xref>.</p><p>To use a title pane in your application,
+create an instance of the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html" format="application/java-archive"><codeph>CAknTitlePane</codeph></xref>.</p><p>Use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html#7f4e2823b01d379c520327735b1c04e3" format="application/java-archive"><codeph>SetTextL()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html" format="application/java-archive"><codeph>CAknTitlePane</codeph></xref> to set the title pane text and display it. To set the text to scroll
+if it does not fit the title pane text area, set the flag <codeph>aScroll</codeph> to <codeph>ETrue</codeph>.
+To set the text to the default (name of the application), use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html#f08a9e4674d01e3cf765c46371527588" format="application/java-archive"><codeph>SetTextToDefault()</codeph></xref>.</p><p>Use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html#62828189dbd5025010de7178436dd6db" format="application/java-archive"><codeph>SetPicture()</codeph></xref> to display a picture in the title pane.
+To set the icon from a file, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html#56018aed72ff6500af8a5f970a86df1c" format="application/java-archive"><codeph>SetPictureFromFileL()</codeph></xref>. Alternatively, to set a small
+icon to be displyed together with text, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html#cc2c91182dafcd7eac0f9cb817453992" format="application/java-archive"><codeph>SetSmallPicture()</codeph></xref>.</p><p>To set the title pane contents
+from a resource file, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html#34a47bf0f5bc9f3c9a1126088ffc78eb" format="application/java-archive"><codeph>SetFromResourceL()</codeph></xref>. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-675D02F1-E7B1-4869-9213-8D0C2E0CC50D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-675D02F1-E7B1-4869-9213-8D0C2E0CC50D" xml:lang="en"><title>Adding,
+Removing and Accessing Header Field Parts</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-F273A4FC-D2C7-45A2-A2CA-12D9B6C8531C"> <p>Header field parts are added by repeated invocation of the <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-A8708AE6-8EAE-37C9-BAD2-87E4A7DCE266"><apiname>RHTTPHeaders::SetFieldL()</apiname></xref> method.
+On the first invocation, when no field of that name exists in the header,
+a new field is created with a single part. On subsequent invocations, additional
+parts are added to the existing header field. </p> <p>This behaviour is consistent
+with HTTP/1.1 in which: </p> <codeblock id="GUID-16F90813-AABE-5855-A7EB-6CB4C4D52225" xml:space="preserve">Accept: text/*, text/html</codeblock> <p>is
+preferable to </p> <codeblock id="GUID-7290C356-D37B-5A79-9C11-470D500647CC" xml:space="preserve">Accept: text/* text/html</codeblock> <p>Although
+the two are semantically equivalent, the API will not output the second variant
+under any circumstance. </p> <p>When parts are added to a header field, they
+are given an index number. The first part to be added has index 0, the second
+is index 1, and so on. This index is necessary when identifying parts for
+retrieval (using <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-E89FA67E-7E0B-3C37-B920-B6E594A31BFE"><apiname>RHTTPHeaders::GetField()</apiname></xref>). </p> <p>To
+remove a single header field part, <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-656EF7AC-479E-3408-B00C-9FAE3022A37B"><apiname>RHTTPHeaders::RemoveFieldPart()</apiname></xref> is
+used, specifying a part index. To remove a header field entirely, <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-2C6BE5F2-E486-39E9-8594-2E5A5E936C1A"><apiname>RHTTPHeaders::RemoveField()</apiname></xref> is
+used. </p> <p>Part values are accessed using <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-E89FA67E-7E0B-3C37-B920-B6E594A31BFE"><apiname>RHTTPHeaders::GetField()</apiname></xref>.
+The client must supply a part index and an uninitialized <xref href="GUID-DEE8279A-3BEC-316F-97B8-6C49FEDBD5B3.dita"><apiname>THTTPHdrVal</apiname></xref>,
+which will be filled by the method. This example, from <filepath>HTTPEXAMPLECLIENT</filepath>,
+retrieves all response headers and prints their values: </p> <codeblock id="GUID-034F2800-1177-5E78-8253-134E5B2C2323" xml:space="preserve">void CHttpEventHandler::DumpRespHeadersL(RHTTPTransaction&amp; aTrans)
+    {
+    RHTTPResponse resp = aTrans.Response();
+    RStringPool strP = aTrans.Session().StringPool();
+    RHTTPHeaders hdr = resp.GetHeaderCollection();
+    THTTPHdrFieldIter it = hdr.Fields();
+
+    TBuf&lt;KMaxHeaderNameLen&gt;  fieldName16;
+    TBuf&lt;KMaxHeaderValueLen&gt; fieldVal16;
+
+    while (it.AtEnd() == EFalse)
+        {
+        RStringTokenF fieldName = it();
+        RStringF fieldNameStr = strP.StringF(fieldName);
+        THTTPHdrVal fieldVal;
+        if (hdr.GetField(fieldNameStr,0,fieldVal) == KErrNone)
+            {
+            const TDesC8&amp; fieldNameDesC = fieldNameStr.DesC();
+            fieldName16.Copy(fieldNameDesC.Left(KMaxHeaderNameLen));
+            switch (fieldVal.Type())
+                {
+            case THTTPHdrVal::KTIntVal:
+                iUtils.Test().Printf(_L("%S: %d\n"), &amp;fieldName16, fieldVal.Int());
+                break;
+            case THTTPHdrVal::KStrFVal:
+                {
+                RStringF fieldValStr = strP.StringF(fieldVal.StrF());
+                const TDesC8&amp; fieldValDesC = fieldValStr.DesC();
+                fieldVal16.Copy(fieldValDesC.Left(KMaxHeaderValueLen));
+                iUtils.Test().Printf(_L("%S: %S\n"), &amp;fieldName16, &amp;fieldVal16);
+                fieldValStr.Close();
+                }
+                break;
+            case THTTPHdrVal::KStrVal:
+                {
+                RString fieldValStr = strP.String(fieldVal.Str());
+                const TDesC8&amp; fieldValDesC = fieldValStr.DesC();
+                fieldVal16.Copy(fieldValDesC.Left(KMaxHeaderValueLen));
+                iUtils.Test().Printf(_L("%S: %S\n"), &amp;fieldName16, &amp;fieldVal16);
+                fieldValStr.Close();
+                }
+                break;
+            case THTTPHdrVal::KDateVal:
+                {
+                TDateTime date = fieldVal.DateTime();
+                TBuf&lt;40&gt; dateTimeString;
+                TTime t(date);
+                t.FormatL(dateTimeString,KDateFormat);
+                iUtils.Test().Printf(_L("%S: %S\n"), &amp;fieldName16, &amp;dateTimeString);
+                } 
+                break;
+            default:
+                iUtils.Test().Printf(_L("%S: &lt;unrecognised value type&gt;\n"), &amp;fieldName16);
+                break;
+                }
+            ...
+            }
+        // Advance the iterator to get the next field
+        ++it;
+        }
+     }</codeblock> <p>Note that in this example, only the first part of each
+header field is displayed. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-67718111-07FB-59CC-A9C2-86593F868C2C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-67718111-07FB-59CC-A9C2-86593F868C2C" xml:lang="en"><title>Features
+of the client-server architecture</title><shortdesc>Describes the features of the client-server architecture.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-733332EE-A689-4D9A-AAE3-3980B915412B"><title>Context</title> <p>Each session maintains its own context.
+This allows sessions to be owned by different active objects within the same
+thread, by different components within the same thread, etc., without interference. </p> </section>
+<section id="GUID-35A7DB04-C9D5-47FF-A793-29533CD766A4"><title>Context switching</title> <p>Client-server communication requires
+context switching: </p> <ul>
+<li id="GUID-50EC1E74-44B3-52C7-A2E0-CA129561E25B"><p>messages are sent via
+the Kernel </p> </li>
+<li id="GUID-94E8A131-0E5C-5034-A903-E903A1121954"><p>handling the message
+involves a switch from client thread, to server thread, and back to client
+thread </p> </li>
+<li id="GUID-702DA432-6985-5046-92EB-C3159EAE7C2A"><p>inter-thread data transfer
+can never be done with simple C++ pointers: it always involves data copying.
+Furthermore, it may involve cross-address-space data transfer, if the threads
+are in different processes. </p> </li>
+</ul> <p>Compared with a simple function call or memory copy, context switching
+is a relatively expensive operation, and should be minimised. Servers whose
+performance is critical use buffering to minimise context switches. Sometimes,
+this is transparent. Often, the client interface design is affected by the
+requirement for buffering. </p> </section>
+<section id="GUID-BC1416C3-DD32-438E-A574-21802747220B"><title>Thread-based</title> <p>The basic architecture of servers
+is thread-based. This gives the implementers of a system the flexibility to
+package the server threads into whatever processes they choose, depending
+on the balance of requirements for security and economy. </p> <p>This can
+be contrasted with other systems in which all, or most, servers run as part
+of the Kernel. On Symbian platform this is not necessary, so security is better. </p> <p>Client-server
+policies can be contrasted with systems which require servers to have their
+own process. This uses more memory (e.g. for address translation tables),
+and has worse performance (inter-thread data transfer involves translation
+as well as copying). </p> </section>
+<section id="GUID-15B1DC2E-AB35-48DB-8EC4-11127DF974B0"><title>Cleanup</title> <p>When a client process terminates, all server
+resources associated with it should be cleaned up. </p> <p>When a session
+is ended, servers must clean up all objects associated with it, and clients
+must consider any handles associated with it as invalid, and perform any necessary
+client-side cleanup. </p> <p>For a non-sharable session, if the client thread
+dies, then the Kernel performs thread-death cleanup and sends a disconnect
+message to the server end of all sessions associated with that client thread. </p> <p>For
+a sharable session, the death of any or all client threads does not trigger
+closure of the session. This is because the session is process relative. To
+close a shared session, either the process must terminate, or the session
+must be explicitly closed through a client side call to <codeph>Close()</codeph> on
+the client-side session handle, <codeph>RSessionBase</codeph>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-679390E8-1DE6-55F0-9A0C-60D58956A1E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-679390E8-1DE6-55F0-9A0C-60D58956A1E3" xml:lang="en"><title>Hash (message digest) algorithms</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A cryptographic hash algorithm (also known as a message digest, a one-way function, or simply a hash) takes a variable-length input (the message) and produce a fixed length output known as the hash (or digest) of the input. It is often useful to think of the resulting output as a representation, or fingerprint, of the original input. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6796BA71-47A7-5465-89F2-BD0AEF2E4EE7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6796BA71-47A7-5465-89F2-BD0AEF2E4EE7"><title>Cnvtool Source File</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The source file is a text file which contains a table of mappings between Unicode and a foreign character set. The table consists of tab-separated columns which the <filepath>cnvtool</filepath> uses to create a Charconv converter. </p> <p>The file is case-insensitive. Comments begin with a # and extend to the end of the line. Blank lines and leading and trailing whitespace are ignored. </p> <section><title>Syntax</title> <p> <b>Columns</b>  </p> <p>The first column lists the foreign character code and the second lists the corresponding Unicode character code. Both codes are in hexadecimal. The third column is optional and contains comments prefixed with a comment sign <codeph>#</codeph> to make the file more readable. </p> <codeblock id="GUID-B096F006-A678-5463-BE38-25F943734BE1" xml:space="preserve">0x3E    0x003E    #GREATER-THAN SIGN
+0x3F    0x003F    #QUESTION MARK
+0x40    0x0040    #COMMERCIAL AT
+0x41    0x0041    #LATIN CAPITAL LETTER A
+0x42    0x0042    #LATIN CAPITAL LETTER B
+0x43    0x0043    #LATIN CAPITAL LETTER C</codeblock> <p>Note: The table can contain other hex columns. In such cases the columns for the foreign character code and corresponding Unicode must be specified using the <codeph>-columns</codeph> option of <filepath>cnvtool</filepath>. </p> <p> <b>SET_FOREIGN_CHARACTER_CODE_PROCESSING_CODE command</b>  </p> <p>In some cases, the foreign character codes that appear in the source file need to be processed in some way before being used in the binary output file. You can specify how they must be processedby including a <codeph>SET_FOREIGN_CHARACTER_CODE_PROCESSING_CODE</codeph> command line in the source file as follows: </p> <codeblock id="GUID-88174B5A-1A94-505C-BC49-87AE18161588" xml:space="preserve">SET_FOREIGN_CHARACTER_CODE_PROCESSING_CODE [Perl code]
+</codeblock> <p>All of the characters following the line will be processed using the perl code. You can stop processing using the SET_FOREIGN_CHARACTER_CODE_PROCESSING_CODE command with no parameter. </p> <codeblock id="GUID-991AA0BF-F7ED-5E7C-B187-3AFB7655B71D" xml:space="preserve">SET_FOREIGN_CHARACTER_CODE_PROCESSING_CODE return $foreignCharacterCode|0x00008080; 
+
+0x2121    0x3000    # IDEOGRAPHIC SPACE
+0x2122    0x3001    # IDEOGRAPHIC COMMA
+0x2123    0x3002    # IDEOGRAPHIC FULL STOP
+...
+SET_FOREIGN_CHARACTER_CODE_PROCESSING_CODE</codeblock> <p> <b>$foreignCharacterCode variable</b>  </p> <p>The <codeph>$foreignCharacterCode</codeph> variable stands for the foreign encoding (the first column). For example, if the high bit of each foreign character is off in the source file but is required to be on in the output file, the Perl code (assuming the foreign character set uses only one byte for each character) is: </p> <codeblock id="GUID-CE7DFA76-DEB8-52B1-8D38-7F33622F3DB0" xml:space="preserve">return $foreignCharacterCode|0x80;</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-67ADD402-0741-5FFC-BF53-B6172C438E88.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-67ADD402-0741-5FFC-BF53-B6172C438E88"><title>List of Constants and Enumerations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following is a list of the general error values that are available as a part of the SIP Codec API: </p> <p> <xref href="GUID-4A414441-5A2A-373E-AF0C-65EED5DFD0B6.dita"><apiname>KErrSipCodecPreParser</apiname></xref>, <xref href="GUID-A4AE9084-34D9-34D1-A7FC-519A89E551EE.dita"><apiname>KErrSipCodecTokenizer</apiname></xref>, <xref href="GUID-B4A8D4A9-0433-33D5-8C94-644E12CDDC6D.dita"><apiname>KErrSipCodecNotAllowed</apiname></xref>, <xref href="GUID-85090FDA-1E27-35DB-9FF0-4ABB7E461C48.dita"><apiname>KErrSipCodecHeaderName</apiname></xref>, <xref href="GUID-E8B1364D-4150-30E5-BD9D-2C746B8B9094.dita"><apiname>KErrSipCodecHeaderValue</apiname></xref>, <xref href="GUID-3341C40B-355D-36BA-955B-98B3AA3D1AE7.dita"><apiname>KErrSipCodecRequestLine</apiname></xref>, <xref href="GUID-D4E2269B-30C8-33ED-9FCA-FCABAB4F36C4.dita"><apiname>KErrSipCodecResponseLine</apiname></xref>, <xref href="GUID-5B04DCB6-49A3-382C-A317-9729129EFEFA.dita"><apiname>KErrSipCodecResponseCode</apiname></xref>, <xref href="GUID-0CF6A92E-6419-3207-97A2-79D805D57FC3.dita"><apiname>KErrSipCodecSIPVersion</apiname></xref>, <xref href="GUID-261F8DEC-EF1B-32DF-9C99-ADF3A79BC8DD.dita"><apiname>KErrSipCodecSIPMethod</apiname></xref>, <xref href="GUID-CD6180CA-82BB-3735-943F-89833FDAEB0E.dita"><apiname>KErrSipCodecReasonPhrase</apiname></xref>, <xref href="GUID-2B2B2093-28E3-3707-8CFB-B36FD0082458.dita"><apiname>KErrSipCodecAnyParam</apiname></xref>, <xref href="GUID-55BAC86D-E5FE-3931-985C-CB2A7006409E.dita"><apiname>KErrSipCodecAnyParamName</apiname></xref>, <xref href="GUID-6DDD45FE-92DA-3F4D-A0CF-D61E4E3BF08D.dita"><apiname>KErrSipCodecAnyParamValue</apiname></xref>, <xref href="GUID-0C189EAC-5504-3BE7-918C-E11B52B664EB.dita"><apiname>KErrSipCodecDuplicateParam</apiname></xref>, <xref href="GUID-44193948-A821-3AE0-9CA2-D8CB7C17DCE3.dita"><apiname>KErrSipCodecHostPort</apiname></xref>, <xref href="GUID-A4D0DFAC-463C-3B45-B09C-16288A67DADF.dita"><apiname>KErrSipCodecHost</apiname></xref>, <xref href="GUID-624FACE8-A3F5-37B4-9E6B-65B52DD4CD29.dita"><apiname>KErrSipCodecPort</apiname></xref>. </p> <p>The error messages related to SIP Codec address are <xref href="GUID-CDF5279B-4A18-32DF-B562-B41B46305880.dita"><apiname>KErrSipCodecSIPAddress</apiname></xref>, <xref href="GUID-9A53B09E-A196-3660-869E-34CDBECB5498.dita"><apiname>KErrSipCodecDisplayName</apiname></xref>. </p> <p>The error messages related to SIP Codec URI are: </p> <p> <xref href="GUID-1F598096-116A-3060-845E-38943DE678C5.dita"><apiname>KErrSipCodecURI</apiname></xref>, <xref href="GUID-B9A096AF-4906-3DAA-BAAB-90C7E7A467A8.dita"><apiname>KErrSipCodecURIScheme</apiname></xref>, <xref href="GUID-6D6D735D-5F95-374D-B665-9839BDC5B044.dita"><apiname>KErrSipCodecURIParams</apiname></xref>, <xref href="GUID-703CB515-B288-39F9-9194-53DA578F4A3A.dita"><apiname>KErrSipCodecURIHeaders</apiname></xref>. </p> <p>The error messages related to SIP Codec From and To are <xref href="GUID-C94ADAA8-70EA-3E5D-A775-4196CDC870CA.dita"><apiname>KErrSipCodecFromOrToAddress</apiname></xref> and <xref href="GUID-8EA6E546-D234-3333-8FB5-972F1849A3C0.dita"><apiname>KErrSipCodecFromOrToParams</apiname></xref>. </p> <p>The error messages related to SIP Codec Contact are: </p> <p> <xref href="GUID-440A7F88-9EED-376D-BECE-44F1521C5245.dita"><apiname>KErrSipCodecContactHeader</apiname></xref>, <xref href="GUID-EEEA33A9-20E0-3502-9E62-103A5A3787AE.dita"><apiname>KErrSipCodecContactSetToStar</apiname></xref>, <xref href="GUID-42168862-DBA2-3E1D-8BD3-D5646446FCF6.dita"><apiname>KErrSipCodecContactAddress</apiname></xref>, <xref href="GUID-D9DF00A8-8E86-37E0-AEF8-42BEEA9F887E.dita"><apiname>KErrSipCodecContactParams</apiname></xref>. </p> <p>The error messages related to other SIP headers are: </p> <p> <xref href="GUID-B2001005-97B0-39EE-823D-F7E0E0D5D02E.dita"><apiname>KErrSipCodecViaHeader</apiname></xref>, <xref href="GUID-467A97DC-6D81-3A1F-AC53-8E7A9F8CF1ED.dita"><apiname>KErrSipCodecCallIdHeader</apiname></xref>, <xref href="GUID-CD3DD561-AD06-3933-8234-C645C74B3FEA.dita"><apiname>KErrSipCodecCSeqHeader</apiname></xref>, <xref href="GUID-3109389E-2579-399C-8610-8DDCA3161203.dita"><apiname>KErrSipCodecContentLengthHeader</apiname></xref>, <xref href="GUID-9ED2E3B6-350E-3121-92BE-14F49E02C9D8.dita"><apiname>KErrSipCodecExpiresHeader</apiname></xref>, <xref href="GUID-1759B3F3-CDB5-3720-8FE2-DA7655300DD0.dita"><apiname>KErrSipCodecMaxForwardsHeader</apiname></xref>, <xref href="GUID-0D34FC45-0BDB-3381-B2CC-D7C01F75C9E8.dita"><apiname>KErrSipCodecContentTypeHeader</apiname></xref>, <xref href="GUID-308EACDF-86B4-3917-B82F-FF3734239B67.dita"><apiname>KErrSipCodecRouteHeader</apiname></xref>, <xref href="GUID-AA1E683A-966D-3247-B092-19778E66C381.dita"><apiname>KErrSipCodecMinExpiresHeader</apiname></xref>, <xref href="GUID-221C7DE5-B480-3D53-BB40-77B2F0A73280.dita"><apiname>KErrSipCodecTokenBaseHeader</apiname></xref>, <xref href="GUID-A1000E9A-7038-36F8-9595-D89AF29725D3.dita"><apiname>KErrSipCodecRequireHeader</apiname></xref>, <xref href="GUID-DD1BE75C-3F6C-347E-ABBF-C216C6F92630.dita"><apiname>KErrSipCodecContentEncodingHeader</apiname></xref>, <xref href="GUID-50675A6F-F4D6-3CB0-B4EB-B7948FA23C49.dita"><apiname>KErrSipCodecProxyRequireHeader</apiname></xref>, <xref href="GUID-CAB77A28-1629-30F6-AB90-A0AA9756DE86.dita"><apiname>KErrSipCodecSupportedHeader</apiname></xref>, <xref href="GUID-109230EA-9A44-3299-8F4E-7897BECA54D8.dita"><apiname>KErrSipCodecUnsupportedHeader</apiname></xref>, <xref href="GUID-298A1161-F991-3271-B260-2628AB80E65B.dita"><apiname>KErrSipCodecAllowHeader</apiname></xref>, <xref href="GUID-27F2A2A5-3AAD-3A9D-8019-A6CB7BC160D4.dita"><apiname>KErrSipCodecSecurityHeader</apiname></xref>, <xref href="GUID-EB593DA2-9FBA-352A-9483-5133BBA63216.dita"><apiname>KErrSipCodecContentDispositionHeader</apiname></xref>, <xref href="GUID-559AFE7D-5C8C-3CB5-B54D-D0595F1865CA.dita"><apiname>KErrSipCodecSubscriptionStateHeader</apiname></xref>, <xref href="GUID-7248EF0C-1541-30EB-9CA1-A50A0112D4A9.dita"><apiname>KErrSipCodecAcceptHeader</apiname></xref>, <xref href="GUID-260B9F49-0481-3EFD-A64A-4FD0A5B0A3FC.dita"><apiname>KErrSipCodecAcceptEncodingHeader</apiname></xref>, <xref href="GUID-E10CC9FE-C533-387D-8438-6C2D1F9FADEA.dita"><apiname>KErrSipCodecAcceptLanguageHeader</apiname></xref>, <xref href="GUID-5F5E0BF2-396E-3CD6-BDED-5B2BF0CD8BF9.dita"><apiname>KErrSipCodecAcceptParams</apiname></xref>, <xref href="GUID-2B8AF51D-603C-38A9-8D93-6F810EBFA91A.dita"><apiname>KErrSipCodecEventHeader</apiname></xref>, <xref href="GUID-BEC2E2DF-C55C-313F-A8B2-7429A39D3A10.dita"><apiname>KErrSipCodecAllowEventsHeader</apiname></xref>, <xref href="GUID-7780811C-6C7A-3D90-A607-9157B73EA5CD.dita"><apiname>KErrSipCodecAuthenticationInfoHeader</apiname></xref>, <xref href="GUID-BB42E70C-34B8-36DD-8762-FD8330CFD5F3.dita"><apiname>KErrSipCodecReferToHeader</apiname></xref>, <xref href="GUID-6BAAFC0C-D1E5-32FD-AD96-8EF53440D87D.dita"><apiname>KErrSipCodecAuthenticationHeader</apiname></xref>, <xref href="GUID-F31DD7B8-29EB-35C4-B63E-965B6FEB0E3E.dita"><apiname>KErrSipCodecAuthScheme</apiname></xref>, <xref href="GUID-9075A068-6C62-327A-A1D2-C6851C277B21.dita"><apiname>KErrSipCodecAuthorizationHeader</apiname></xref>, <xref href="GUID-2C83ECAC-BAAA-3633-8E6E-F7C5E120A8B0.dita"><apiname>KErrSipCodecURIContainer</apiname></xref>, <xref href="GUID-0C6D3DBB-2FA9-3054-BADC-1D3BBA8CDE67.dita"><apiname>KErrSipCodecRAckHeader</apiname></xref>, <xref href="GUID-8667AB33-4EF0-33EA-B559-4D5B2FD38A5F.dita"><apiname>KErrSipCodecRSeqHeader</apiname></xref>, <xref href="GUID-3E633906-E0EA-330D-AEDF-67CF35C0088B.dita"><apiname>KErrSipCodecReplyToHeader</apiname></xref>, <xref href="GUID-1E157817-9ED8-3C41-9A5A-130955C4F588.dita"><apiname>KErrSipCodecTimestampHeader</apiname></xref>, <xref href="GUID-C79AAB55-5CF5-3F42-9974-3D75B7F01EFA.dita"><apiname>KErrSipCodecRetryAfterHeader</apiname></xref>, <xref href="GUID-CCEFCA3B-1EFC-36D7-AF4B-5C2761761B9E.dita"><apiname>KErrSipCodecRetryAfterParams</apiname></xref>, <xref href="GUID-1A08AE6A-43F5-3697-8674-21E543830906.dita"><apiname>KErrSipCodecAcceptContactHeader</apiname></xref>, <xref href="GUID-A2C3069D-0435-3676-AB51-CF08437C3D0A.dita"><apiname>KErrSipCodecPAssociatedURIHeader</apiname></xref>, <xref href="GUID-4ACF5D5C-95A8-3BAF-976C-F9738E9A1F10.dita"><apiname>KErrSipCodecPAccessNetworkInfoHeader</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-3-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-3-1"><title>Feature Management Overview</title><shortdesc>This section gives an overview of feature management, what it does, how it works, how to use it and links to relevant links. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-EC3021C2-C858-571B-A4B3-697CCB43CAFF-GENID-1-6-1-20-1-1-4-1-1-3-1-3-1"><title>Purpose</title> <p>A feature is a piece of functionality that is shipped with the device, but which can be disabled or enabled. </p> <p>Feature management is used to manage the enabling and disabling of these features and associated activities for example to provide a means of allowing the system to know if a feature is enabled or not. </p> </section> <section id="GUID-E3F13137-DDF7-5F4B-8571-33EB30AE15FD-GENID-1-6-1-20-1-1-4-1-1-3-1-3-2"><title>Architecture</title> <p>The feature management system consists of a server and two dll files. </p> <p>The feature management system has a standard client server architecture. The server is the feature management server and the dll files provide a series of APIs with which the client can communicate with the server. </p> </section> <section id="GUID-3AFD464F-ED48-5C72-86B3-0B1DF098317A-GENID-1-6-1-20-1-1-4-1-1-3-1-3-3"><title>Description</title> <p>As described above, the functionality of feature management can be broken into two groups: the server and the dll files. </p> <p>The feature manager server: this comes as an executable called featmgrserver.exe. </p> <ul><li id="GUID-81DA7DA3-3785-587A-84D8-C05EADD837FB-GENID-1-6-1-20-1-1-4-1-1-3-1-3-3-4-1"><p>This does all the feature management work that is keeping track of the status of each feature. </p> </li> </ul> <p>The communication to the feature management server is carried out via the two dll files i.e. featdiscovery.dll and featmgr.dll. </p> <ul><li id="GUID-3623FC76-619F-5347-96B3-D71D623D92D3-GENID-1-6-1-20-1-1-4-1-1-3-1-3-3-6-1"><p>Provide a means of telling the client when a change to the status of a feature has occurred. </p> </li> <li id="GUID-C59BFD29-3E45-52F5-8034-21030F7701CF-GENID-1-6-1-20-1-1-4-1-1-3-1-3-3-6-2"><p>Allows the client to specify which feature is to be enabled or disabled. </p> </li> <li id="GUID-821AD7FC-BA58-5976-A4F8-F0572CF61407-GENID-1-6-1-20-1-1-4-1-1-3-1-3-3-6-3"><p>Allows the client to add or delete features. </p> </li> </ul> </section> <section id="GUID-53F35C75-D725-5543-9492-B58D6FCB552C-GENID-1-6-1-20-1-1-4-1-1-3-1-3-4"><title>Components</title> <p>The following components make up the feature management collection. </p> <ul><li id="GUID-CC662594-3E6C-5C1A-9055-1B83E683F84D-GENID-1-6-1-20-1-1-4-1-1-3-1-3-4-3-1"><p> <b>Feature Discovery</b>  </p> <p> <filepath>featdiscovery.dll</filepath>  </p> <p>Provides the APIs that provide only a subset of what can be provided by feature management. </p> <p>It provides the functionality for TFeatureSet and CFeatureDiscovery. </p> </li> <li id="GUID-8291E183-61D6-517A-9D0D-46F6BF97041F-GENID-1-6-1-20-1-1-4-1-1-3-1-3-4-3-2"><p> <b>Feature Manager</b>  </p> <p> <filepath>featmgr.dll </filepath>  </p> <p>Provides the APIs that allow the client to carry out the full functionality available with feature management. </p> <p>It provides the functionality for RFeatMgrClient, RFeatureControl, MFeatureObserver and CFeatureNotifier. </p> </li> <li id="GUID-3FBF3512-7D28-5533-92CB-5C141787DB6B-GENID-1-6-1-20-1-1-4-1-1-3-1-3-4-3-3"><p> <b>Feature Manager Server</b>  </p> <p> <filepath>featmgrserver.exe</filepath>  </p> <p>Performs all the actual operations and maintains details about features. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1"><title>Feature Management Overview</title><shortdesc>This section gives an overview of feature management, what it does, how it works, how to use it and links to relevant links. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-EC3021C2-C858-571B-A4B3-697CCB43CAFF-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-1"><title>Purpose</title> <p>A feature is a piece of functionality that is shipped with the device, but which can be disabled or enabled. </p> <p>Feature management is used to manage the enabling and disabling of these features and associated activities for example to provide a means of allowing the system to know if a feature is enabled or not. </p> </section> <section id="GUID-E3F13137-DDF7-5F4B-8571-33EB30AE15FD-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-2"><title>Architecture</title> <p>The feature management system consists of a server and two dll files. </p> <p>The feature management system has a standard client server architecture. The server is the feature management server and the dll files provide a series of APIs with which the client can communicate with the server. </p> </section> <section id="GUID-3AFD464F-ED48-5C72-86B3-0B1DF098317A-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-3"><title>Description</title> <p>As described above, the functionality of feature management can be broken into two groups: the server and the dll files. </p> <p>The feature manager server: this comes as an executable called featmgrserver.exe. </p> <ul><li id="GUID-81DA7DA3-3785-587A-84D8-C05EADD837FB-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-3-4-1"><p>This does all the feature management work that is keeping track of the status of each feature. </p> </li> </ul> <p>The communication to the feature management server is carried out via the two dll files i.e. featdiscovery.dll and featmgr.dll. </p> <ul><li id="GUID-3623FC76-619F-5347-96B3-D71D623D92D3-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-3-6-1"><p>Provide a means of telling the client when a change to the status of a feature has occurred. </p> </li> <li id="GUID-C59BFD29-3E45-52F5-8034-21030F7701CF-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-3-6-2"><p>Allows the client to specify which feature is to be enabled or disabled. </p> </li> <li id="GUID-821AD7FC-BA58-5976-A4F8-F0572CF61407-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-3-6-3"><p>Allows the client to add or delete features. </p> </li> </ul> </section> <section id="GUID-53F35C75-D725-5543-9492-B58D6FCB552C-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-4"><title>Components</title> <p>The following components make up the feature management collection. </p> <ul><li id="GUID-CC662594-3E6C-5C1A-9055-1B83E683F84D-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-4-3-1"><p> <b>Feature Discovery</b>  </p> <p> <filepath>featdiscovery.dll</filepath>  </p> <p>Provides the APIs that provide only a subset of what can be provided by feature management. </p> <p>It provides the functionality for TFeatureSet and CFeatureDiscovery. </p> </li> <li id="GUID-8291E183-61D6-517A-9D0D-46F6BF97041F-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-4-3-2"><p> <b>Feature Manager</b>  </p> <p> <filepath>featmgr.dll </filepath>  </p> <p>Provides the APIs that allow the client to carry out the full functionality available with feature management. </p> <p>It provides the functionality for RFeatMgrClient, RFeatureControl, MFeatureObserver and CFeatureNotifier. </p> </li> <li id="GUID-3FBF3512-7D28-5533-92CB-5C141787DB6B-GENID-1-6-1-20-1-1-4-1-1-4-1-3-1-3-4-3-3"><p> <b>Feature Manager Server</b>  </p> <p> <filepath>featmgrserver.exe</filepath>  </p> <p>Performs all the actual operations and maintains details about features. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6822E7FA-D055-5693-8872-8D0E8554A734.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6822E7FA-D055-5693-8872-8D0E8554A734" xml:lang="en"><title>Configuring
+the TCP Receive Window</title><shortdesc>How to configure the TCP receive window. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-C1DA7D2C-54A2-5547-A0E0-52DE599A96FA"><p>Before you start,
+you must understand the following: </p> <ul>
+<li id="GUID-AABAB9C2-A530-53C7-ADBC-9596793B7438"><p> <xref href="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita#GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA/GUID-CDAA0409-6ECB-5ABB-A0E5-F7C5C58E6347">Bearer types</xref>  </p> </li>
+<li id="GUID-BC616747-9E4B-52C2-94D0-F99402199698"><p> <xref href="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita#GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA/GUID-E1123CF2-EA87-5F18-8F3C-3FD98DD6ABE8"> Lookup table</xref>  </p> </li>
+<li id="GUID-74EA5607-4298-5742-99F4-46222968443B"><p> <xref href="http://www.ietf.org/rfc/rfc1323.txt" scope="external">TCP window scaling</xref>  </p> </li>
+</ul> </prereq>
+<steps id="GUID-82094A75-1D96-534F-A536-2EFD0521AEFD">
+<step id="GUID-0DCC20CB-3465-5CE5-9EB3-96B689EF1CE5"><cmd>To configure the
+TCP receive window.</cmd>
+<info><p>The <xref href="GUID-DCF64049-44EA-3EF9-9A80-D364D56670B2.dita"><apiname>CTCPReceiveWindowSize()</apiname></xref> class defines the
+public interface that the Licensee's NetMcpr must use to configure the TCP
+receive window. </p></info>
+</step>
+<step id="GUID-137AC4D5-F8EC-5B99-9D97-F5710FFBAA8E"><cmd>To set the receive
+window for different bearers.</cmd>
+<info>Licensees need to override the <xref href="GUID-5AC853D0-31FB-3944-8769-A59977F616B0.dita"><apiname>SetTcpWin()</apiname></xref> function
+to set the TCP receive window for different bearers. </info>
+</step>
+<step id="GUID-966B3D6A-0252-5130-8917-A54B27770D62"><cmd>Use the <xref href="GUID-D3A23EB5-4EBF-3F2C-9EE1-2D93A6094109.dita"><apiname>SetTCPwin()</apiname></xref> function
+to set the TCP receive window size.</cmd>
+<substeps id="GUID-6A7AFF4E-FEB2-5DBA-9514-F8DC9A655CD4">
+<substep id="GUID-3938CFE3-7959-5820-B8D2-DF98E6038600"><cmd>To configure
+the Max TCP receive window size per TCP socket</cmd>
+<info>If licensees want to configure the Max TCP receive window size per TCP
+socket, then they must specify a value greater than the Max value configured
+in the <codeph>tcpip.ini</codeph> file. </info>
+</substep>
+<substep id="GUID-E458A87D-EEBC-5B8E-A3B3-3CE46E36A4E8"><cmd>To set the TCP
+receive Max value uniform across all sockets</cmd>
+<info>If licensees want to set the TCP receive Max value uniform across all
+sockets, then they must specify the value in the <codeph>tcpip.ini</codeph> file
+and set the iMaxWinSize = 0. So, MaxWinSize is always configured from the <codeph>tcpip.ini</codeph> file. </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-0C4CC4AB-9198-5EE2-B874-CEC90BAF47C3"><cmd>Use the <xref href="GUID-AB233410-30BD-36D8-A50F-CE669141D083.dita"><apiname>AppendExtensionL()</apiname></xref> function
+to add the pointer to the lookup table.</cmd>
+<info> The lookup table holds the TCP receive window size for different bearer
+types. </info>
+</step>
+</steps>
+<example id="GUID-041AB0DF-6C70-57D0-91B2-D37ECD289853"><title>Configuring
+the TCP receive window example</title> <p>The following code snippet shows
+how to configure the TCP receive window size: </p> <codeblock id="GUID-20989729-9AF1-5E36-8F19-EDE0D83D42E8" xml:space="preserve">
+
+// Licensees need to override the SetTCPwin() function
+
+
+CNokiaTCPRecvWindow: Public CTCPReceiveWindowSize
+{
+  public:
+   virtual void SetTCPwin(TUint aBearerType)
+    {
+       //Set iWinSize  based on the bearer type
+
+    // If Licensees want to configure the Max TCP receive window size per TCP socket, 
+    // then they must specify a value greater than the max value configured in the tcpip.ini file.
+
+    // If Licensees want to set the TCP Receive max value uniform across all sockets, 
+    // then they must specify the value in the tcpip.ini file and set the iMaxWinSize =0.
+    // So MaxWinSize will always be configured from the tcpip.ini file.
+
+    }    
+  
+};
+
+
+CNetworkMetaConnectionProvider::ConstructL()
+{
+CTCPReceiveWindowSize * iRecvWIndow = New(ELeave) CNokiaTCpRecvWindow();
+//Append the pointer to the lookup table. The Pointer is of the type CTCPReceiveWindowSize.
+iAccessPointConfig-&gt;AppendExtensionL(iReceiveWindow);
+}
+
+</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita"><linktext>Variable
+TCP Receive                 Window</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-68417158-D625-56BF-BDD5-BE49A7651CED"><title>Audio Output Streaming Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of Audio Output Streaming. </p> <section><title>Purpose</title> <p>Audio Output Streaming is the interface to streaming sampled audio data to the low level audio controller part of the Multimedia Framework (MMF). </p> <p><b>Audio Output Streaming Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-DE828986-946F-5519-97C6-9FB89E972AB8"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>mediaclientaudiostream.dll</b>  </p> </entry> <entry><p> <b>mediaclientaudiostream.lib</b>  </p> </entry> <entry><p>These files are used for implementing Audio Output Streaming. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>How the Audio Output Streaming classes interact with other components of MMF is shown below: </p> <fig id="GUID-ABA14A10-ACBD-5C46-8E74-DD1B81AE1EF7"><title>
+             Audio output streaming overview 
+          </title> <image href="GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e289578_href.png" placement="inline"/></fig> </section> <section><title>Description</title> <p>Streamed audio data is sent and received incrementally. This means: </p> <ul><li id="GUID-0B12FC8E-B60A-51A7-A2AD-AE9637DF46BC"><p>sound clips sent to the low level audio controller (audio play) can be sent as they arrive rather than waiting until the entire clip is received. </p> <p>The user of the API should maintain the data fragments in a queue before sending them to the server. If the user attempts to send data faster than the server can receive it, the excess data fragments are maintained in another client side queue (invisible to the user), whose elements are references to the buffers passed to it. The server notifies the client using a callback each time it has received a data fragment. This indicates to the client that the data fragment can be deleted. </p> </li> <li id="GUID-E6A88A7A-AEF2-596D-828B-8449D95D4829"><p>sound clips that are being captured by the low level audio controller (audio record) can be read incrementally without having to wait until audio capture is complete. </p> <p>The low level audio controller maintains the received buffers where it can place the audio data that is being captured. The client uses a read function to read the received data into destination descriptors. </p> </li> </ul> <p>The client is also notified (for audio play and record) when the stream is opened and available for use (opening takes place asynchronously), and when the stream is closed. </p> <p>This API can only be used to stream audio data, with the data being stored or sourced from a descriptor. Client applications must ensure that the data is in 16 bit PCM format as this is the only format supported. The API does not support mixing. A priority mechanism is used to control access to the sound device by more than one client. </p> </section> <section><title>Key Audio Output Streaming Classes</title> <p>The functionality provided by Audio Output Streaming is contained within the <xref href="GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D.dita"><apiname>CMdaAudioOutputStream</apiname></xref> class. </p> </section> <section><title>Using Audio Output Streaming</title> <p>Clients can use Audio Output Streaming to: </p> <ul><li id="GUID-79DC35F3-2B6C-55DF-B6DE-88C075F1200E"><p>Open, set audio properties, write to and close the audio stream. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita"> Audio Output Streaming Tutorial </xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6849E256-6719-5788-BCB2-7557F09AAAD0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6849E256-6719-5788-BCB2-7557F09AAAD0" xml:lang="en"><title>UPS
+Configuration</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>User Prompt Service (UPS) configuration component (<codeph>\securityconfig\ups\</codeph>)
+includes a <filepath>backup.xml</filepath> file and a ROM stub SIS file for
+configuring a UPS policy file. Device creators must modify the configuration
+files of UPS and rebuild the <filepath>securityconfig</filepath> component,
+to customise the behavior of the UPS component. </p>
+<section><title> Introduction</title> <p>UPS policy files are resource files
+that specify whether application requests to access services are silently
+accepted or denied or whether they require the user to be prompted. Each service
+has a policy file. The policy file lists policies for various applications.
+The configuration of policy file involves configuring ROM stub package file
+and backup XML file.  </p> </section>
+<section><title> Installing and Configuring UPS Policy file</title> <p><b>Installing
+policy files</b> </p> <p>A policy file on the system drive eclipses a policy
+file on the Z drive if it has the same filename. If the policy file on the
+system drive is corrupt, the policy file on the Z drive (if it exists) is
+used instead. The policy files should be installed (and upgraded) through
+Software Install to the private directory of the UPS on the system drive.
+The private directory is <filepath>\private\10283558\policies</filepath>. </p> <p><b>Upgrading
+package file</b> </p> <p>The SIS file must either contain the executable or
+be an upgrade to the base package which supplied the executable, for delivering
+files into the private directory of an executable. </p> <p>The following is
+a default implementation of a package file for UPS server ROM stub SIS file: </p> <codeblock id="GUID-51117852-B051-5E7F-8216-44A8B7EFF6A1" xml:space="preserve">; Package file for User Prompt Service server ROM stub SIS file
+;
+; A ROM stub SIS file is required to allow UPS policy files to be
+; provisioned post-manufacture because policy files are loaded from
+; the policies subdirectory of the UPS server's private directory.
+
+&amp;EN
+
+#{"User Prompt Service"}, (0x10285777), 1, 0 , 0, TYPE=SA
+
+%{"Nokia Corporation and/or its subsidiary(-ies)"}
+:"Nokia Corporation and/or and/or its subsidiary(-ies)"
+
+; UPS policy files on the Z drive must also be included here if
+; upgrades (eclipsing) is required post-manufacture.
+
+""-"z:\sys\bin\upsserver.exe"
+</codeblock> <p>Device creators must create a ROM stub SIS file if they want
+to allow policy files to be delivered after-market (since the UPS server is
+delivered in the ROM). </p> <note>To ensure that policy file upgrades are
+approved by manufacturers or Symbian Signed, SIS files that modify the private
+directory of the UPS must be signed by a certificate where CA has the <codeph>AllFiles</codeph> capability. </note> <p><b>Verifying
+hash of the policy</b> </p> <p>The <codeph>VERIFY</codeph> option must be
+added to the line in the package file that installs the UPS policy file to
+ensure that the Software Install checks the hash of the policy at restore
+time. The following sample package file uses the <codeph>VERIFY</codeph> flag. </p> <codeblock id="GUID-E62C7BEF-A0C8-5BD2-B011-2E1ED211FE61" xml:space="preserve">; tupspolicies1.pkg
+;
+; 
+
+; Checks the installation of UPS policies files
+
+&amp;EN
+#{"UPS Policy Files"}, (0x10285777), 1, 0, 0, TYPE=SP
+%{"Symbian Foundation"}
+:"Symbian Foundation"
+
+; The VERIFY option is used to flag the files as non-modifiable so that SWI
+; checks the hashes during restore
+
+"data\ups_01041000_01041001.rsc"-"$:\private\10283558\policies\ups_01041000_01041001.rsc", VERIFY
+"data\ups_01041000_01041002.rsc"-"$:\private\10283558\policies\ups_01041000_01041002.rsc", VERIFY
+"data\ups_01042000_01042001.rsc"-"$:\private\10283558\policies\ups_01042000_01042001.rsc", VERIFY
+"data\ups_01043000_01043001.rsc"-"$:\private\10283558\policies\ups_01043000_01043001.rsc", VERIFY
+</codeblock><note><ul>
+<li><p>Version 5.1.0.1 or higher of makesis should be used because the VERIFY
+flag is not supported in older versions.  </p></li>
+<li><p>The major and minor versions field in the policy header of the policy
+file can be used to provide information that is used in upgrades. If the major
+version number is changed when a policy file is upgraded, all decision records
+for that policy file are deleted (because the major version number is stored
+in the decision record). </p></li>
+<li><p>Upgrading the plug-ins does not delete the decision records. If device
+creators want to delete decision records with a plug-in upgrade they must
+either update associated policy files or provide a run-on-install executable
+that calls the management API to delete decision records. </p></li>
+</ul></note> <p><b>Back up and restoring</b> </p> <p>UPS policy files may
+be backed up and restored providing that a valid <filepath>backup.xml</filepath> file
+is provided. The following is a sample backup file provided by Symbian. </p> <codeblock id="GUID-3BFD715C-68FB-5F87-9557-DB95D18168FB" xml:space="preserve">&lt;?xml version="1.0" standalone="yes" ?&gt;
+- &lt;backup_registration&gt;
+- &lt;passive_backup&gt;
+  &lt;include_directory name="policies" /&gt;
+  &lt;/passive_backup&gt;
+  &lt;restore requires_reboot="no" /&gt;
+  &lt;/backup_registration&gt;
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-685AD682-10DC-553B-9C3A-04D0376138C4"><title>Adding a device to the PAN</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In the last tutorial we looked at the steps involved in creating a Personal Area Network. Now we will look at adding devices to that PAN. </p> <p><b>Using the Tutorial </b> </p> <p>The code fragments in this tutorial are derived from the Bluetooth Example application available in <filepath>/src/COMMON/DEVELOPERLIBRARY/examples/Bluetooth/BTExample1</filepath>. Although the code has been reformatted to the requirements of the tutorial there is always enough information included with the code to find the actual example code. </p> <p><b>Intended Audience: </b> </p> <p>This tutorial is designed for Symbian licensees only. Several APIs mentioned ad used throughout this tutorial series are only available in a device creators kit environment. </p> <p><b>Basic procedure: </b> </p> <p>The high level steps to add a device to a PAN are: </p> <ul><li id="GUID-F5CF3FAF-9DEF-5DB8-8462-864D941C15ED"><p>Connect to the listening device. </p> <p>(See previous tutorial) </p> </li> <li id="GUID-62C8D049-42EE-5311-9D03-E694F230F6B2"><p>Check if there are any open slots on the PAN. </p> </li> <li id="GUID-6A984F04-4F83-5718-8482-36C1A9EB0EE7"><p>Add the device to an open slot. </p> <p>This will start the new device to the PAN connection created in the previous tutorial. </p> </li> </ul> <section><title>Connecting to a PAN Host</title> <p>The user will launch the application (BTExample1) and be presented with a list of options. One of the options is to invite another user to join the PAN. This will cause an <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita#GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D/GUID-A5E799C6-E6E4-3C58-A053-F4307179060F"><apiname>RNotifier::StartNotifierAndGetResponse()</apiname></xref> to prompt the user to select a device. The result of this operation is that the Bluetooth device address is known. See "<xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita#GUID-91C4F00B-E241-57DC-8520-8C16A302C983/GUID-DE57E5EA-1C46-5AE4-86CF-06AC92203383">Finding the Bluetooth Device Address</xref> " for more. </p> </section> <section><title>Checking for open slots</title> <p>The PAN host will need to check to see if there are any open connections. You may recall from the PAN Overview that there are currently two possible roles a member of a PAN may take, PANU or PAN-GN. If the PAN will only require two members the role of both can be PANU, the host will simply check that there are not any current connections before going on to open a connection for the new member. If however the PAN supports two or more connections the host will be operating in the PAN-GN role, which allows up to seven connections. </p> <p>Check that there is a slot available. </p> <codeblock id="GUID-27257112-FF2E-574E-92F7-28306A48A3FF" xml:space="preserve">if(iActiveConnections.Count() == 7)
+{
+ err = KErrOverflow;
+}</codeblock> <p>If all the slots are currently used return <codeph>KErrOverflow</codeph> and end the connection attempt. If there are open slots add the device to one as explained in the next section. </p> </section> <section><title>Adding your device to the PAN</title> <p>To recap, we have a configured PAN and it has at least one open slot. </p> <p>Add the device address to one of the open connections of the PAN. </p> <codeblock id="GUID-E1A69C4C-C29E-5A1A-AE64-5FF587A9CF10" xml:space="preserve">else if(aDevAddr)
+{
+ // Add the BT address of the device to the existing RConnection
+ iControlAddr = *aDevAddr;
+ TPtr8 ptr = iControlAddr.Des();
+ err = iConnection.Control(KCOLAgent, KCOAgentPanConnectDevice, ptr);
+ ...
+}
+return err;</codeblock> <p> <codeph>aDevAddr</codeph> will contain the Bluetooth device address if the notifier was used as discussed above. The device address is packaged into the <codeph>ptr</codeph> pointer, which is passed into the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-28A35F19-1B05-3922-8E80-36F00DF3DB65"><apiname>RConnection::Control()</apiname></xref>. The control function adds the device address to the PAN. </p> <p>The device is now a member of the PAN. </p> </section> <section><title>What's next?</title> <p>Having created a PAN and added a device you will need to remove a device and close the PAN. The following will help: </p> <ul><li id="GUID-F2F7907A-5561-5059-B27B-AE822CE8C6F7"><p> <xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita">Creating a Personal Area Network</xref>  </p> </li> <li id="GUID-C0FEADF4-82E3-5A2D-8635-EF78790232AD"><p> <b>Adding a device to the PAN</b> - This document </p> </li> <li id="GUID-6A1ACE35-C68B-5A5F-A5A7-A45195324BA3"><p> <xref href="GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita">Removing a device from the PAN</xref>  </p> </li> <li id="GUID-6B28FE51-3E08-5B74-B7F4-0A7E0FF18142"><p> <xref href="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita">Closing the PAN</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-685CF352-372F-5393-97AF-1FA17DC57BA8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-685CF352-372F-5393-97AF-1FA17DC57BA8"><title>Constructing Descriptor Arrays</title><shortdesc>Descriptor arrays provide normal array operations for inserting, appending, deleting, and accessing elements. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Procedure</title> <p>Follow the steps listed below to construct descriptor arrays: </p> <ol id="GUID-4957F727-EC6C-5DFF-B970-44DD0AB5E69C"><li id="GUID-69B3273C-1552-5B9C-816D-1398BFF49A6B"><p>Construct a set of descriptors. </p> <p>The following code fragments illustrate how to construct a <xref href="GUID-29384669-FFCE-38FC-A005-61163D99401D.dita"><apiname>CDesCArrayFlat</apiname></xref> and a <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref>. Both array types can accept any type of descriptor as source when adding a new array element. </p> <codeblock id="GUID-AEE8ABB8-CCCE-5263-8EA4-AD2D8898F4D4" xml:space="preserve">_LIT( KText1,"abcdefg" );
+_LIT( KText2,"hijk" );
+_LIT( KText3,"lmnopqr" );
+_LIT( KText4,"stuvwxyz" );
+...
+TBufC&lt;8&gt; buffer1( KText1 );  // a non-modifiable buffer descriptor
+TBuf&lt;8&gt;  buffer2( Ktext2 );  // a modifiable buffer descriptor
+...
+TPtrC  ptr1( Ktext3 );       // a non-modifiable pointer descriptor
+TPtr   ptr2;                 // a modifiable pointer descriptor 
+ptr2 = buffer1.Des();        // pointing to the data in buffer1
+...
+HBufC* heapbuff = HBufC::NewL( 8 );  // a heap descriptor
+*heapbuff = KText4;</codeblock> <p> <b>Note:</b> Constructing and using a <xref href="GUID-1B44227C-6F11-3A51-BE2C-8780319C6F72.dita"><apiname>CDesCArraySeg</apiname></xref> is same as using <xref href="GUID-29384669-FFCE-38FC-A005-61163D99401D.dita"><apiname>CDesCArrayFlat</apiname></xref>. </p> </li> <li id="GUID-8A1E403F-FBA4-5A60-AAC4-7296BA7B160F"><p>Add the five descriptors to <xref href="GUID-29384669-FFCE-38FC-A005-61163D99401D.dita"><apiname>CDesCArrayFlat</apiname></xref> as shown in the following code. </p> <codeblock id="GUID-6DE21030-1887-53D8-8D04-B9DB0F69F647" xml:space="preserve">CDesCArrayFlat* descarray;
+...
+descarray = new( ELeave ) CDesCArrayFlat( 5 );
+...
+descarray-&gt;AppendL( buffer1 );
+descarray-&gt;AppendL( buffer2 );
+descarray-&gt;AppendL( ptr1 );
+descarray-&gt;AppendL( ptr2 );
+descarray-&gt;AppendL( *heapbuff );
+...
+TInt len = descarray-&gt;MdcaPoint( 2 ).Length();  // information about
+                                                // the third element
+...</codeblock> </li> <li id="GUID-EE266B93-2899-5D35-A0BF-569694574D5C"><p>Add the five descriptors to <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref> as shown in the following code. </p> <codeblock id="GUID-90A51320-7B9E-5DAD-A041-77FD6B2C3A37" xml:space="preserve">CPtrCArray* ptrcarray;
+...
+ptrcarray = new( ELeave ) CPtrCArray( 5 );
+...
+ptrcarray-&gt;AppendL( buffer1 );
+ptrcarray-&gt;AppendL( buffer2 );
+ptrcarray-&gt;AppendL( ptr1 );
+ptrcarray-&gt;AppendL( ptr2 );
+ptrcarray-&gt;AppendL( *heapbuff );
+...
+TInt len = ptrcarray-&gt;MdcaPoint( 2 ).Length();  // information about
+                                                // the third element
+...</codeblock> </li> </ol> </section> </conbody><related-links><link href="GUID-E8266924-FA52-5171-BD73-423A46227A74.dita"><linktext>Descriptor Arrays</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-687AFC9D-ADB7-5190-A535-C54B835825DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-687AFC9D-ADB7-5190-A535-C54B835825DD" xml:lang="en"><title>Application resource tools reference</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-688C515E-3D1B-51BB-A776-A246FA232061"><title>Creating and Preparing a Video Recorder</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to get started with the video recorder utility. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to create a new video recorder utility and prepare it for recording video data. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video recorder utility is used to record video clips to files, descriptors or URLs and manipulate embedded meta data. This functionality is implemented by the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref> class. </p> </section> <section><title>Using Video Recorder Utility</title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-21F91659-A12E-5420-B4C5-FBEEB1EEE73E"><p><xref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita#GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16/GUID-D9B54B5B-97EE-5DF4-90D5-FF25B4227771">Create a Utility Object </xref>  </p> </li> <li id="GUID-709899B2-A05C-51BA-B8D9-DEF90C6EF528"><p><xref href="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita#GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E/GUID-BAE58A16-943C-5C5F-B1ED-A70B04411005">Open a Recording Device</xref>  </p> </li> <li id="GUID-24782EE8-9C28-543D-9062-C4A697AAF6F6"><p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita#GUID-688C515E-3D1B-51BB-A776-A246FA232061/GUID-29741489-459B-591F-B9E9-E0255A9AC584">Prepare to Record</xref>  </p> </li> </ul> <p id="GUID-D9B54B5B-97EE-5DF4-90D5-FF25B4227771"><b>Creating a Utility Object </b> </p> <p>The high level steps to create a video recorder utility object are shown here: </p> <ul><li id="GUID-4BBCB100-A806-59AA-B860-CE06075D9353"><p>You can create an object of this utility class using the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-6FF3F041-5566-352C-BF64-5094A462A056"><apiname>CVideoRecorderUtility::NewL</apiname></xref> function. Some video formats also allow storing of audio data. To facilitate this feature, the class contains audio functions that can manipulate audio data. </p> <codeblock id="GUID-7915F838-E4A6-5EF8-AD86-90A7EC507FFD" xml:space="preserve">void CRecordVideo::ConstructL()
+    {
+    iVideoRecordUtility = CVideoRecorderUtility::NewL(*this);
+    }</codeblock> </li> </ul> <p id="GUID-BAE58A16-943C-5C5F-B1ED-A70B04411005"><b>Opening a Recording Device</b> </p> <p>The high level steps to open a recording device are shown here: </p> <ol id="GUID-87D7D324-06CD-55DA-83D9-B433FD7E4C8A"><li id="GUID-133C072D-5E06-5CBE-B6A4-A64F40A579B4"><p>Certain parameters like, the handle to the camera, the controller UID, video format and the codecs to use for video and audio need to be specified for recording. This is shown in the range of open statements shown below based on where you want to save the video clip: </p> <ul><li id="GUID-4972A385-CA09-55B2-ABC2-0E17AFFF80CF"><p> <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-085B4553-555A-35E9-8DE8-B93E615D6AF9"><apiname>CVideoRecorderUtility::OpenFileL</apiname></xref>: This function stores the recorded video clip in a file. </p> <codeblock id="GUID-66D747F9-F663-51C1-B557-D9F51709B3F3" xml:space="preserve">void OpenFileL(const TDesC&amp; aFileName, TInt aCameraHandle, TUid aControllerUid, 
+TUid aVideoFormat, TFourCC aVideoType=KFourCCNULL, TFourCC aAudioType=KFourCCNULL);
+</codeblock> <p> <b>Note:</b> There is also another method to save a video clip to a file. It is strongly recommended to use this method. </p> <codeblock id="GUID-826E2D41-D332-5FD2-93D3-6378F88B14AF" xml:space="preserve">OpenFileL(const TMMSource&amp; aSource, TUid aControllerUid);</codeblock> <p>Where <codeph>aSource</codeph> is a filename or an open handle to a file where the video clip has to be saved and <codeph>aControllerUid</codeph> is an optionally specified plugin. If specified, it will force the video player to use the controller with the given UID. If no controller plugin is specified, this function searches through a list of all available plugins and attempts to use each one until successful or the end of the list is reached. </p> </li> <li id="GUID-C6C3EA53-1B1F-593E-8053-522135DACB95"><p> <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-9F820878-1396-3D88-A2A6-B99CCD5635AB"><apiname>CVideoRecorderUtility::OpenDesL</apiname></xref>: This function stores the recorded video clip in a descriptor. </p> <codeblock id="GUID-91CF22D9-CB48-587F-ACF5-A3A36B42BF16" xml:space="preserve">void OpenDesL(TDes8&amp; aDescriptor, TInt aCameraHandle, TUid aControllerUid, 
+TUid aVideoFormat,TFourCC aVideoType=KFourCCNULL, TFourCC aAudioType=KFourCCNULL);
+</codeblock> </li> <li id="GUID-CBF3B863-31C0-5107-BD68-B8458AB91A17"><p> <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-F1A1728E-2ABD-31B2-B527-841EFA9A56A5"><apiname>CVideoRecorderUtility::OpenUrlL</apiname></xref>: This function stores the recorded video clip in a URL. </p> <codeblock id="GUID-F287F739-FBCB-53FB-95F6-B60FACCF5009" xml:space="preserve">void OpenUrlL(const TDesC&amp; aUrl, TInt aIapId = KUseDefaultIap, TInt aCameraHandle, TUid
+ aControllerUid, TUid aVideoFormat, TFourCC aVideoType=KFourCCNULL, TFourCC aAudioType=KFourCCNULL);</codeblock> </li> </ul> </li> <li id="GUID-60970A2A-2D5A-5E1A-8E68-D49FBC826C55"><p>Once the opening of the recording device is complete, successfully or otherwise, the callback function <xref href="GUID-3DA683D9-644B-3629-901F-96F1B49EE0C7.dita#GUID-3DA683D9-644B-3629-901F-96F1B49EE0C7/GUID-ADDB899E-EC79-3214-96E7-52825247D420"><apiname>MVideoRecorderUtilityObserver::MvruoOpenComplete()</apiname></xref> is called. This notifies the client whether the video clip was successfully opened or not. </p> </li> </ol> <p id="GUID-29741489-459B-591F-B9E9-E0255A9AC584"><b>Preparing to Record</b> </p> <p>The high level steps to prepare to record video are shown here: </p> <ol id="GUID-6E3C8727-F1E0-5823-ADFB-308301B37C9D"><li id="GUID-FF6C37CA-A481-5338-B8DD-2D136183265D"><p>Once the camera is ready and the video clip is opened successfully, call the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-A8B11252-2852-36E4-BE16-BC05888F4ECF"><apiname>CVideoRecorderUtility::Prepare()</apiname></xref> function. This function prepares the record controller for use. </p> </li> <li id="GUID-BAD3C61D-9F02-5B6E-B3E0-6AC031B3B6BF"><p>When the preparation of the record controller is complete, successfully or otherwise, a callback function <xref href="GUID-3DA683D9-644B-3629-901F-96F1B49EE0C7.dita#GUID-3DA683D9-644B-3629-901F-96F1B49EE0C7/GUID-8E8E78F1-283A-3576-8075-B8024DC7F61E"><apiname>MVideoRecorderUtilityObserver::MvruoPrepareComplete</apiname></xref> is called to notify that the video recorder is ready to record. </p> </li> </ol> </section> <section><title>See Also</title> <p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita">Configuring the Video Recorder</xref>  </p> <p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita">Enabling/Disabling Video Recording</xref>  </p> <p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita">Controlling Video Recording Quality</xref>  </p> <p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref>  </p> <p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita">Setting Video Metadata</xref>  </p> <p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita">Controlling the Video Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-68A55CD5-EF01-5DE2-8119-EFA39589960F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-68A55CD5-EF01-5DE2-8119-EFA39589960F" xml:lang="en"><title>How to Write
+a FEP</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7" xml:lang="en"><title>View
+architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following image illustrates the components of the view architecture
+approach.</p>
+<fig id="GUID-A4D968BE-B048-424C-94B5-FAAA7B14C5D5"><title>View architecture classes</title><image href="GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e44021_href.png"/></fig>
+<p>Symbian platform applications that follow the view architecture require:</p>
+<ul>
+<li><p>a <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref> derived from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref></p>
+</li>
+<li><p>a <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">view
+controller</xref> derived from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref></p>
+</li>
+<li><p>a <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">view</xref> or
+views derived from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref></p>
+</li>
+</ul>
+<p>The view architecture only allows one view to be active in each application.
+If a new view is switched to within an application, the current view is immediately
+deactivated, so this architectural approach is <i>not</i> appropriate in the
+following cases:</p>
+<ul>
+<li><p>Applications with any view that cannot cleanly handle unexpected
+activation of another view in that application.</p></li>
+<li><p>Applications that provide views that can be nested over other
+applications, except where embedding is used.</p></li>
+<li><p>Applications that provide controls that can be used inside
+other applications (for example, using a Web control inside an e-mail viewer
+to show an e‑mail with HTML content).</p></li>
+</ul>
+<p>Typical responsibilities in this architecture are:</p>
+<ul>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref>-derived
+class acts as a <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref>:</p>
+<itemgroup>
+<ul>
+<li><p>It creates one or more <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+view controllers.</p></li>
+<li><p>It handles <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">events</xref> that
+are not handled by the view controllers.</p></li>
+<li><p>To switch between views, it activates and deactivates views.</p>
+</li>
+<li><p>It handles menu <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">commands</xref> passed
+to it by the view controllers.</p></li>
+<li><p>It receives events such as <xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">layout</xref> and <xref href="GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.dita">foreground</xref> notifications
+from the run-time environment.</p></li>
+</ul>
+</itemgroup>
+</li>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+class acts as a <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">view
+controller</xref></p>
+<itemgroup>
+<ul>
+<li><p>It creates one of more <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+views.</p></li>
+<li><p>It handles registering controls for <xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">key
+event handling</xref>.</p></li>
+<li><p>It handles menu <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">commands</xref>.</p>
+</li>
+</ul>
+</itemgroup>
+</li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+view:</p>
+<itemgroup>
+<ul>
+<li><p>Shows application data and state on the screen.</p></li>
+</ul>
+</itemgroup>
+</li>
+</ul>
+<p>For information on the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref>-derived
+classes, see <xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">Framework
+requirements for GUI applications</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-68BA05D8-BC78-583A-9958-553424EE3C9B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-68BA05D8-BC78-583A-9958-553424EE3C9B"><title>List of Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following classes are available as a part of the SIP Profile API: </p> <p> <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>, <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref>, <xref href="GUID-423A9CA9-FD5F-388A-BF65-C8CEBA6E9704.dita"><apiname>CSIPProfileRegistryBase</apiname></xref>, <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref>, <xref href="GUID-347F7E72-3655-324B-8546-2CA0E90A18E4.dita"><apiname>TSIPProfileTypeInfo</apiname></xref>, <xref href="GUID-5266AB0D-705C-3011-A92B-DA82BC212999.dita"><apiname>CSIPManagedProfileRegistry</apiname></xref>, <xref href="GUID-CDE67614-1A7A-3082-8D8D-71645668A0DE.dita"><apiname>CSIPManagedProfile</apiname></xref>, <xref href="GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8.dita"><apiname>CSipProfileAlrController</apiname></xref>, <xref href="GUID-2034A76E-DF82-3E1B-810D-D98819C7C153.dita"><apiname>MSipProfileAlrObserver</apiname></xref>, <xref href="GUID-6AEB733F-405E-3287-808F-C6C7224A2DA9.dita"><apiname>MSIPConcreteProfileObserver</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8" xml:lang="en"><title>Device
+security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The superior mobility and connectivity of mobile devices constitutes
+their greatest threat, and allows intruders to try different attack methods
+against the device. The figure below illustrates the most common methods of
+attack against mobile devices.</p>
+<fig id="GUID-2839B915-A025-4404-96A8-B9354F9E5A9F"><title>Mobile device and common attack methods</title><image href="GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e6837_href.png"/></fig>
+<p>Due to the nature of mobile devices, including the potential vulnerabilities
+mentioned above, you should consider the following points when designing your
+application:</p>
+<ul>
+<li><p>If a mobile device is lost or stolen, confidential information
+(for example, calendar and contacts) can be read even by those with little
+expertise.</p></li>
+<li><p>Users can access confidential information and files at any
+time, including reverse engineering of software and algorithms.</p></li>
+<li><p>Data can be transferred from and to the mobile device through
+different methods, even accidentally. </p></li>
+<li><p>Users may detach removable media or the battery at any time,
+which can cause data loss or corruption.</p></li>
+</ul>
+<p>When you handle confidential information in your application, remember
+that with sufficient motivation and resources there are always ways to extract
+information from a mobile device. As the level of software security improves
+and attacks become less practical, interest in hardware attacks may in turn
+increase.</p>
+<p>In the continuously evolving digital world, every application should
+have a certain level of robustness against a changing and hostile environment.
+Applications should be prepared for data corruption and alteration, network
+and storage blackouts, plug-ins and components that misbehave, malicious attackers,
+and, perhaps most importantly, user errors.</p>
+<p>The Symbian <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> architecture
+is designed to protect mobile devices and their contents.</p>
+<p>For more details, see <xref href="GUID-9058F379-C495-4B22-B270-FF6A80E450B8.dita">Device
+security mechanisms</xref>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357-master.png has changed
Binary file Symbian3/SDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e165199_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2"><title> Image Transform Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Image Transform (scaling) functionality. </p> <section><title>Purpose</title> <p>The <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> provides function to scale the still image held in a file or descriptor. </p> <p><b>Image Transform Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-5B289F3C-AB05-5AD8-B851-E19E03129419"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <filepath>imagetransform.dll</filepath>  </p> </entry> <entry><p> <filepath>imagetransform.lib</filepath>  </p> </entry> <entry><p>These files are used for implementing image transform operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Image Transform function plays an important role for transforming the still image. </p> <p>Furthermore, the <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> extension interface incorporates a function <xref href="GUID-8652E897-DD50-3976-A5A2-2150DA2D7A79.dita"><apiname>ExifMetadata</apiname></xref> to access the Exif metadata. For more details see <xref href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita#GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E/GUID-A0B37BD4-05E2-58DA-8D25-F1E4A116AE79">Exif support in CimageTransform</xref>  </p> </section> <section><title>Description</title> <p>Image Transform function works in parallel to <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref>, the difference being that the <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> works on internal bitmap objects (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>), whereas <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> works on images stored in files and descriptors. Furthermore, the size of the destination image needs to be specified bearing in mind that the aspect ratio of the source image needs to be preserved. </p> </section> <section><title>Key Image Transform Classes</title> <p>The key classe is: </p> <ul><li id="GUID-D4B6201A-64C9-56AA-8897-B3C34CBCA9AF"><p> <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> provides the client interface to the functionality of the ImageTransform dll. This class is a single unit which can be used easily and can be instantiated without specifying any information about the source or destination images. It is free to implement a scale algorithm but not free to implement decoding or encoding process. </p> </li> </ul> </section> <section><title>Using Image Transform</title> <p>The Image Transform functionality is used for the following: </p> <ul><li id="GUID-9F99867D-0479-5F50-ABA1-97DB460ACCCC"><p>To scale only a subset of the original image which is provided by setting a clipping rectangle. This acts as if the source image outside the region does not exist causing the clipped image to be resized to the size specified. </p> </li> <li id="GUID-E1081D71-78D9-5C95-8E9B-6B6495DA8D31"><p>This function has an extension interface to incorporates a function <xref href="GUID-8652E897-DD50-3976-A5A2-2150DA2D7A79.dita"><apiname>ExifMetadata</apiname></xref> to access the Exif metadata. For more details see <xref href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita#GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E/GUID-A0B37BD4-05E2-58DA-8D25-F1E4A116AE79">Exif support in CimageTransform</xref>. </p> </li> <li id="GUID-CBE0E94C-4581-53A4-A9D7-382B0995E109"><p>This function supports standard extensions for advanced JPEG functions. For more details see <xref href="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita">JPEG Image Transform Extension Guide</xref>. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Library Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext> Guide to Symbian supplied Codecs</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-69438F28-E2E9-5BFA-B644-08FB59D50A39.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-69438F28-E2E9-5BFA-B644-08FB59D50A39" xml:lang="en"><title>SMS MTM Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Short Message Service (SMS) protocol and its implementation in Messaging Application module. SMS is a communications protocol to send and receive short text and numeric messages to and from mobile devices. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e165915_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-695B292F-114C-528F-9F71-1D03801D2203.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-695B292F-114C-528F-9F71-1D03801D2203"><title>Network Dialog API</title><shortdesc>This topic describes the Agent Dialog Server component which includes the Network Dialog API. The connection agent dialog server allows the user to set up an Internet connection using the connection agent and its extensions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The dialog server functionality is as follows: </p> <ul><li id="GUID-14A8D9F5-4410-5DBB-9498-42AA0D70578E"><p> <b>Connection dialog</b> - allows the user to select the service, modem, location and chargecard to be used at connection time. </p> </li> <li id="GUID-F7B272E5-24CE-596A-AC73-1CF3493700F7"><p> <b>Warn of a new connection dialog</b> - warns the user that a previous connection failed and a new connection is attempted. </p> </li> <li id="GUID-241FE1EA-BB78-50D8-B302-8466A0EB2858"><p> <b>Login and authentication dialogs</b> - allows the user to enter the username and password for script login and PPP authentication at connection time. </p> </li> <li id="GUID-E7E60609-2956-59EC-82DB-E1BBCAD77C81"><p> <b>Post connection terminal (PCT)</b> - allows the user to view the login script running, view what is sent and received and allows the user to type responses. </p> </li> <li id="GUID-065D45EF-EFA3-5C86-AAD6-BD9FE70298D3"><p> <b>Reconnection dialog</b> - informs the user of a lost connection and queries if they want to reconnect. </p> </li> <li id="GUID-BA6E3F04-2761-5B0F-926D-2190B4EE8ACC"><p> <b>QoS Warning dialog</b> – informs the user when the connection drops below the minimum acceptable quality and queries if they want to disconnect or not. </p> </li> </ul> <p>The Agent Dialog Server uses the client-server architecture. The client side of the server consists of the <xref href="GUID-23A5955F-0108-3965-B54C-3BEAF7687253.dita"><apiname>RGenConAgentDialogServer</apiname></xref> class, which provides access methods to operations provided by the server. The <xref href="GUID-541F0570-7FEA-3226-AF7E-D33FCC083742.dita"><apiname>CNetDialDialogServer</apiname></xref> class co-ordinates access to supported functionality, and creates server session objects, of type <xref href="GUID-D77A3050-6345-3280-9FB6-893963B9E37A.dita"><apiname>CNetDialDialogSession</apiname></xref>, when new connections to the server are made. </p> <p>The server is a Comms Provider Module (CPM) and is loaded through the Root Server API. It is loaded on demand, so a <filepath>.CMI</filepath> file does not exist for it. All requests for dialogs can be cancelled without waiting for user interaction, due to a timeout or a change in circumstances that required the dialog. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-695FCEB8-EA04-5C1C-A197-648275BA0281.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-695FCEB8-EA04-5C1C-A197-648275BA0281" xml:lang="en"><title>Unified Keystore</title><shortdesc>The Unified Keystore is responsible for managing cryptographic
+keys. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22" xml:lang="en"><title>Capabilities</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Capabilities allow the Symbian platform to control access by applications
+to the functionalities provided by the platform APIs. Access to capabilities
+is determined by the device configuration and how the application has been
+signed. Capabilities can be divided into four categories:</p>
+<ul>
+<li><p><i>user capabilities</i>: <xref href="http://wiki.forum.nokia.com/index.php/LocalServices" scope="external"><codeph>LocalServices</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/NetworkServices" scope="external"><codeph>NetworkServices</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/ReadUserData" scope="external"><codeph>ReadUserData</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/WriteUserData" scope="external"><codeph>WriteUserData</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/UserEnvironment" scope="external"><codeph>UserEnvironment</codeph></xref> and, <xref href="http://wiki.forum.nokia.com/index.php/Location" scope="external"><codeph>Location</codeph></xref></p>
+</li>
+<li><p><i>system capabilities</i>: <xref href="http://wiki.forum.nokia.com/index.php/PowerMgmt" scope="external"><codeph>PowerMgmt</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/ProtServ" scope="external"><codeph>ProtServ</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/ReadDeviceData" scope="external"><codeph>ReadDeviceData</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/SurroundingsDD" scope="external"><codeph>SurroundingsDD</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/SwEvent" scope="external"><codeph>SwEvent</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/TrustedUI" scope="external"><codeph>TrustedUI</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/WriteDeviceData" scope="external"><codeph>WriteDeviceData</codeph></xref></p>
+</li>
+<li><p><i>restricted capabilities</i>: <xref href="http://wiki.forum.nokia.com/index.php/CommDD" scope="external"><codeph>CommDD</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/DiskAdmin" scope="external"><codeph>DiskAdmin</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/MultimediaDD" scope="external"><codeph>MultimediaDD</codeph></xref> and <xref href="http://wiki.forum.nokia.com/index.php/NetworkControl" scope="external"><codeph>NetworkControl</codeph></xref></p>
+</li>
+<li><p><i>device manufacturer capabilitie</i>s: <xref href="http://wiki.forum.nokia.com/index.php/AllFiles" scope="external"><codeph>AllFiles</codeph></xref>, <xref href="http://wiki.forum.nokia.com/index.php/DRM" scope="external"><codeph>DRM</codeph></xref> and <xref href="http://wiki.forum.nokia.com/index.php/Trusted_Computing_Base_%28TCB%29" scope="external"><codeph>TCB</codeph></xref></p>
+</li>
+</ul>
+<p>Capabilities required by the application are defined in the <codeph>mmp</codeph> project
+definition file during the build process, and cannot be changed during run
+time. For information on the parameters you can use, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Build-ref/Mmp-ref/capability.html" format="application/java-archive">capability</xref>.
+Carbide.c++ has a Capability Scanner tool which can be accessed through the <b>Project
+&gt; Run Capability Scanner on Project MMP</b> menu. The tool scans and checks
+the project for required capabilities.</p>
+<p>During the installation the <xref href="GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita">Software
+Installer</xref> application in the device checks whether the application
+has been certified or signed. It then checks the capabilities requested by
+the application. If the application has been certified, it checks that the
+root certificate is allowed to grant the required capabilities. If no problems
+are encountered, the installation can continue. For information on certifications
+required by the capabilities, see <xref href="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita">Application
+signing</xref>.</p>
+<p>The user can grant the <i>user capabilities</i> to a self-signed application.
+For example, the following dialog is shown to the user to grant the <codeph>LocalServices</codeph> capability:</p>
+<fig id="GUID-5FCD68FB-BB79-48E0-B438-E8BFAD37331D"><title>Granting LocalServices capability during the installation</title><image href="GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e8048_href.png"/></fig>
+<section id="GUID-DD22FF50-BE6F-4929-85BA-EAF3481EA2BD"><title>dll capabilities</title>
+<p>A <codeph>dll</codeph> must have equal or greater set of capabilities
+than the loading process, otherwise the process is not allowed to load the <codeph>dll</codeph>.
+Once loaded, a <codeph>dll</codeph> runs at the capability level of the loading
+process. A <codeph>dll</codeph> that has a higher capability set than the
+loading process cannot leak capabilities to the process, but a process can
+leak capabilities to the <codeph>dll</codeph>.</p>
+<p>For more information, see <xref href="http://wiki.forum.nokia.com/index.php/TSS000454_-_DLL_capability_model_in_a_secure_platform" scope="external">DLL
+capability model in a secure platform</xref> (TSS000454) in the Forum Nokia
+Knowledge Base.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390-master.png has changed
Binary file Symbian3/SDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e66774_href.png has changed
Binary file Symbian3/SDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076-master.png has changed
Binary file Symbian3/SDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e62802_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-699E6012-92E0-56A2-943A-B6282E6A86B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-699E6012-92E0-56A2-943A-B6282E6A86B5"><title>How to Configure Parity Error Control: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial discusses the use of parity errors. </p> <p>While it is normal in modern systems with error-corrected links to set serial ports up with no parity, there will be occasions when enabling detection of parity errors is both useful and desirable. </p> <p>There are a number of different ways that parity errors can be handled: </p> <ul><li id="GUID-B35ED69F-79CD-5C98-A773-65F2AA734196"><p>ignore parity errors and discard any bytes with bad parity </p> </li> <li id="GUID-B4098D3D-F95D-53AA-973F-8ADE59052E21"><p>replace bytes received with bad parity with the <xref href="GUID-5204369B-5112-391B-B5CF-51ECCDDC40B6.dita"><apiname>TCommConfigV01.iParityErrorChar</apiname></xref> character </p> </li> <li id="GUID-100CF9BE-9ABF-562C-81A6-C88D9C4B2A29"><p>immediately complete any read operation with a <xref href="GUID-6B4EB479-5996-3D3D-8613-0B4E1C199AEB.dita"><apiname>KErrCommsParity</apiname></xref> error </p> </li> </ul> <p>Use the <codeph>TCommConfig</codeph> package to change the value of <codeph>iParityError</codeph> and <codeph>iParityErrorChar</codeph> to change the parity settings. </p> <p>Note: <codeph>iParityError</codeph> can be masked with <xref href="GUID-4CBEE430-7F2A-3809-8A6F-B6CE54E19422.dita"><apiname>KConfigXonXoffDebug</apiname></xref>. This has no effect on parity error control. It is an internal developmental debugging control which forces the <keyword>high water mark</keyword> to software flow control level of 5 bytes below 50% level instead the usual 75% level, irrespective of whether software flow control is enabled or not. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-69B005F8-9038-546F-8ADF-8499984A18E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-69B005F8-9038-546F-8ADF-8499984A18E1" xml:lang="en"><title>Certificate and Key Management Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the various certificate formats and the DLLs that implement the functionality provided by the certificates. </p> </conbody><related-links><link href="GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA.dita"><linktext>OS Security Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-69B46D92-8D07-5B42-B603-3F725977AA4A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-69B46D92-8D07-5B42-B603-3F725977AA4A" xml:lang="en"><title>DHCP</title><shortdesc>The Dynamic Host Configuration Protocol (DHCP) is an Internet standard
+defined in RFC2131 (IPv4) and RFC3315 (IPv6). </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The DHCP client implementation in Symbian platform enables the client applications
+to configure a network connection with a DHCP server. </p>
+<p>For more details on the DHCP standards, see RFC2131<xref href="http://www.ietf.org/rfc/rfc2131.txt" scope="external">RFC2131</xref> for IPv4, and RFC3315<xref href="http://www.ietf.org/rfc/rfc3315.txt" scope="external">RFC3315</xref> for IPv6.</p>
+<p>This document explains the following concepts: </p>
+<ul>
+<li id="GUID-77B3171B-FCF4-5744-B288-AFCC81B93488"><p>DHCP States </p> </li>
+<li id="GUID-460F04A8-5FF1-578F-B129-3C61264044D4"><p>DHCP Options </p> </li>
+</ul>
+<section id="GUID-D83FB908-53EC-4019-A8E4-8B633FEC7F0B"><title>DHCP States </title> <p>The following are the states of the
+DHCP daemon in Symbian OS: </p> <ul>
+<li id="GUID-ACD085A9-E25C-58A8-859E-1E42BC467089"><p>DHCP Discover </p> </li>
+<li id="GUID-18AAC18A-9A29-5B5D-AEC1-E64B8A81A149"><p>Bind </p> </li>
+<li id="GUID-04DF8A2D-4CCD-59A3-8346-CF7D5E1F176C"><p>Renew lease </p> </li>
+<li id="GUID-56E8EDB9-EBF7-5A66-B85B-E0685BED0C6C"><p>Release lease </p> </li>
+</ul> <p><b>DHCP Discover </b> </p> <p>This stage gets the IP address from
+the server by the DHCP clients. The DHCP client sends a DISCOVER message to
+the DHCP server and waits for the responses from the various DHCP servers. </p> <p><b>Bind </b> </p> <p>The
+DHCP server acknowledges the BIND request with an IP address. The client selects
+one of the IP addresses and responds back with a BIND message. If the DHCP
+server acknowledges the BIND request, the client can use the IP address. If
+the server responds with a negative acknowledgement, the DHCP client begins
+the DHCP DISCOVER state. </p> <p><b>Renew lease </b> </p> <p>The DHCP server
+issues an IP address, called a lease, during the bind state. When the lease
+is about to expire the client requests the server to renew the lease. If the
+client is connected to the same network the lease gets renewed. If the client
+has moved to a domain with a different DHCP server the client requests a new
+IP address using DISCOVER message. </p> <p><b>Release lease </b> </p> <p>When
+the DHCP client does not require a connection it releases the lease, so that
+it can be configured to any other client requesting a connection. </p> </section>
+<section id="GUID-C5F11CA2-8880-4FDB-8065-149C5EAA7A44"><title>DHCP Options</title> <p>To obtain the network parameters from
+the DHCP server, the client uses the DHCP options. The Internet standard <xref href="http://www.ietf.org/rfc/rfc2132.txt" scope="external">RFC 2132</xref> specifies
+the various DHCP options. The client uses the <xref href="GUID-95F9FA1F-5AA5-3C2F-ADE0-34668B499C50.dita"><apiname>aOptionLevel</apiname></xref> and <xref href="GUID-DA7EBA40-EF88-3C95-9361-E3A199783CE2.dita"><apiname>aOptionName</apiname></xref> arguments
+while calling <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-9F820CF9-1D4F-3452-983B-E0C694D6783A"><apiname>RConnection::Ioctl()</apiname></xref> function. </p> </section>
+</conbody><related-links>
+<link href="GUID-45E1953A-DEFB-5E48-AC96-443A3234F913.dita"><linktext>Retrieving
+an IP Network  Parameters</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-69B5906E-63F5-59C6-A82C-DA4386B20F9F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-69B5906E-63F5-59C6-A82C-DA4386B20F9F" xml:lang="en"><title>Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Reference information for the Socket Server. </p> <p> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-69CFCFF4-68C7-5345-ADF6-449E9E98297D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-69CFCFF4-68C7-5345-ADF6-449E9E98297D"><title>alias</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>alias [name[=value] ... ]</userinput> </p> <p>Without the arguments, prints the list of aliases in the form alias <codeph>name=value</codeph> on standard output. Otherwise, an <codeph>alias</codeph> is defined for each <codeph>name</codeph> whose <codeph>value</codeph> is given. A trailing space in <codeph>value</codeph> causes the next word to be checked for <codeph>alias</codeph> substitution when the <codeph>alias</codeph> is expanded. The <codeph>alias</codeph> returns true unless a <codeph>name</codeph> is given for which no alias has been defined. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482" xml:lang="en"><title>Automatic
+Resource Management Class Templates Tutorial</title><abstract>The <codeph>LCleanedupX</codeph> class provide a means of automatically
+cleaning up local variables on scope exit. Variants are provided for cleaning
+up pointers, references, handles and arrays, as well as generic cleanup items.
+The user is able to define a cleanup strategy to clean up the resource on
+scope exit.</abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before beginning you must know the following: </p><ul>
+<li id="GUID-90A3678E-CB31-5817-AB27-C115AC486A3A"><p> <b> Clean-up Stratergy:</b> Cleanup
+strategies can be specified as an optional template parameter of the class
+templates for automatic resource management. </p> </li>
+</ul> </prereq>
+<steps-unordered>
+<step id="GUID-26218FF0-6994-4FD7-9609-357AFDB3C177"><cmd><b>Declaring an LCleanedupX object</b></cmd>
+<info><p>An <codeph>LCleanedupX</codeph> object is declared using one of the
+class template constructors. The type to be managed is declared as the first
+template parameter. An optional second template parameter can be declared
+to implement a non-default cleanup strategy. </p> <p>An example code snippet
+for declaring <codeph>LCleanedupX</codeph> class is shown below: </p> <codeblock id="GUID-B9DFC2F9-0C7A-5CCA-9125-FC165BFA6C1B" xml:space="preserve">class LCleanedupPtr
+            {
+            CTicker* ticker1 = new(ELeave) CTicker;
+            LCleanedupPtr CManagedUserTwoPhase one(CManagedUserTwoPhase::NewL(ticker1));
+
+            CTicker* ticker2 = new(ELeave) CTicker;
+            LCleanedupPtr CManagedUserSinglePhase two(CManagedUserSinglePhase::NewL(ticker2));
+        }
+</codeblock></info>
+</step>
+<step id="GUID-AF65DC71-78C1-4B4D-9546-A9F4921E89D9"><cmd><b>Disabling Automatic Cleanup</b></cmd>
+<info><p>An object that is being managed by an <codeph>LCleanedupX</codeph> class
+can be unmanaged by calling the <codeph>Unmanage()</codeph> method of the
+LCleanedupX class. </p> <p>The managing object can be accessed using the .
+operator as in the call to <codeph>Unmanage()</codeph>. The <codeph>Unmanage()</codeph> disables
+cleanup and yields the previously managed pointer so that it can be safely
+returned. </p> <p>An example code snippet is given below: </p> <codeblock id="GUID-75BA5FAF-4C81-5626-A1F6-8AF91FD5972E" xml:space="preserve">
+        static CStringUserTwoPhase* NewL(const TDesC&amp; aName)
+            {
+                LCleanedupPtr CStringUserTwoPhase self(new(ELeave) CStringUserTwoPhase);
+                self-&gt;ConstructL(aName);
+                return self.Unmanage(); 
+            }
+</codeblock></info>
+</step>
+<step id="GUID-B9F7C183-E92E-47D6-8A6E-A1E1A76C1253"><cmd><b>Accessing the managed object</b></cmd>
+<info><p>The managed object can be accessed using the -&gt; operator as in the
+call to <codeph>ConstructL()</codeph> </p> <codeblock id="GUID-2C82F4C0-9E02-51C5-BF51-2C05EACB424C" xml:space="preserve">self-&gt;ConstructL(aName);</codeblock></info>
+</step>
+<step id="GUID-D070D636-665B-4023-A81A-C5AB0A5390CB"><cmd><b>Passing the managed object to a function</b></cmd>
+<info><p>The managed object can be passed to a function by dereferencing the
+managing object. An example code snippet is given below: </p> <codeblock id="GUID-5E5A3A0C-77E4-520A-BD0A-031C7D3CAAFD" xml:space="preserve">
+void RegisterTicker(CTicker&amp; aTicker)
+    {
+    (void)aTicker;
+    }
+
+</codeblock><p>The <codeph>RegisterTicker</codeph> function defined above
+takes a <codeph>CTicker&amp;</codeph> argument. If we have a <codeph>LCleanedupPtr&lt;CTicker&gt;</codeph> as
+defined below, we can pass the <codeph>CTicker</codeph> object to the function
+by dereferencing as shown below in the code snippet: </p> <codeblock id="GUID-EC93EC4F-3D3E-5A70-A0E1-CF73475A7309" xml:space="preserve">
+LCleanedupPtr CTicker t(new(ELeave) CTicker);
+
+RegisterTicker(*t); // Takes a CTicker&amp;
+</codeblock></info>
+</step>
+</steps-unordered>
+</taskbody><related-links>
+<link href="GUID-B1D5B680-00E3-5702-985A-94256180E2D8.dita"><linktext>Automatic
+Resource Management</linktext></link>
+<link href="GUID-B419D99E-8312-5336-9693-3ED8DFCD0559.dita"><linktext>Automatic
+Resource Management Tutorial</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A0D353D-A9B0-46EA-8FDC-1FBBD4A20CFB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6A0D353D-A9B0-46EA-8FDC-1FBBD4A20CFB" xml:lang="en"><title>Stop
+receiving notification</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Use <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::StopAveragePowerReportingL()</apiname></xref> to
+stop battery voltage and battery consumption measurements. </p> <p>Use <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::StopChargingNotification</apiname></xref> <codeph>(TBatteryChargingNotifier
+          aNotifier)</codeph> to stop receiving battery charging notifications. </p> <p>The
+following code snippet demonstrates how to stop notifications on charging
+status, charging current and remaining charging time: </p> <codeblock id="GUID-4BEAF822-E2E9-5BA6-BBDB-18C3A2C8F5A8" xml:space="preserve">// Stop receiving battery charging notification
+iPower-&gt;StopChargingNotification( CHWRMPower::EChargingNotifierChargingCurrent );
+
+// Stop receiving battery charging time notification
+iPower-&gt;StopChargingNotification( CHWRMPower::EChargingNotifierBatteryFullChargingTime );
+</codeblock>     </context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A2160F0-6062-4E77-ABA3-B829AF9689FA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6A2160F0-6062-4E77-ABA3-B829AF9689FA" xml:lang="en"><title>Contacts
+database events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A client application of the Contacts Server can be set to observe changes
+in the contacts database. When a change in the database occurs, the application
+gets an event. The event carries information about the type of the event,
+the contact ID, and the connection ID.</p>
+<codeblock id="GUID-F552F563-6AA7-4E55-9E0E-F131E2B2C91B" xml:space="preserve">struct TContactDbObserverEvent
+    {
+    TContactDbObserverEventType iType;
+    TContactItemId iContactId;
+    TUint iConnectionId;
+    };
+</codeblock>
+<p>The following event types are defined in the <parmname>cntdbobs.h</parmname> header:</p>
+<codeblock id="GUID-9022E0A5-8CF3-469E-B1D4-2B2CC607F852" xml:space="preserve">enum TContactDbObserverEventType
+    {
+    EContactDbObserverEventNull,
+    EContactDbObserverEventUnused,
+    EContactDbObserverEventContactChanged,
+    EContactDbObserverEventContactDeleted,
+    EContactDbObserverEventContactAdded,
+    EContactDbObserverEventUnknownChanges,
+    EContactDbObserverEventRecover,
+    EContactDbObserverEventRollback,
+    EContactDbObserverEventTablesClosed,
+    EContactDbObserverEventTablesOpened,
+    EContactDbObserverEventTemplateChanged,
+    EContactDbObserverEventTemplateDeleted,
+    EContactDbObserverEventTemplateAdded,
+    EContactDbObserverEventCurrentItemDeleted,
+    EContactDbObserverEventCurrentItemChanged,
+    EContactDbObserverEventOwnCardChanged,
+    EContactDbObserverEventPreferredTemplateChanged,
+    EContactDbObserverEventOwnCardDeleted,
+    EContactDbObserverEventGroupAdded,
+    EContactDbObserverEventGroupChanged,
+    EContactDbObserverEventGroupDeleted,
+    EContactDbObserverEventCurrentDatabaseChanged,
+    EContactDbObserverEventSpeedDialsChanged
+    EContactDbObserverEventSortOrderChanged,
+    EContactDbObserverEventBackupBeginning,
+    EContactDbObserverEventRestoreBeginning,
+    EContactDbObserverEventBackupRestoreCompleted,
+    EContactDbObserverEventRestoreBadDatabase,
+    };
+</codeblock>
+<p>In order to make an application receive events about contact database
+changes, the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/CNTMODEL/MContactDbObserverClass.html#%3a%3aMContactDbObserver" format="application/java-archive"><parmname>MContactDbObserver</parmname></xref> base class must be inherited and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/CNTMODEL/MContactDbObserverClass.html#%3a%3aMContactDbObserver%3a%3aHandleDatabaseEventL%28%29" format="application/java-archive"><parmname>HandleDatabaseEventL()</parmname></xref> virtual function must be implemented.
+The function is called by the system when a contact database event occurs.</p>
+<codeblock id="GUID-EEB33DFB-0009-4CE5-BC96-41B65519F8D1" xml:space="preserve">class CMyContactObserver : public CBase, public MContactDbObserver
+    {
+     public:
+         // any public data and functions
+         CMyContactObserver ();
+         // override the virtual function from the base class
+         virtual void HandleDatabaseEventL( TContactDbObserverEvent aEvent );
+         };
+     // handling contact database events
+     void CMyContactObserver::HandleDatabaseEventL( TContactDbObserverEvent aEvent )
+         {
+         // Event handling code
+         }
+</codeblock>
+<p>In addition, the application must create the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/CNTMODEL/CContactChangeNotifierClass.html#%3a%3aCContactChangeNotifier" format="application/java-archive"><parmname>CContactChangeNotifier</parmname></xref> object to register itself to receive events.</p>
+<codeblock id="GUID-95A974D8-3D88-4E64-8A33-AF2366C34791" xml:space="preserve">CContactDatabase* contactDb = CContactDatabase::OpenL();
+//iContactDbObserver is a CMyContactObserver pointer
+CContactChangeNotifier* notifier = CContactChangeNotifier::NewL( *contactDb, iContactDbObserver );
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6A28C9DE-6EAC-4F39-921A-083198C89004_d0e46216_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6A28C9DE-6EAC-4F39-921A-083198C89004_d0e52277_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A37628A-C732-5765-9DC5-3AC691C2CD50.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6A37628A-C732-5765-9DC5-3AC691C2CD50" xml:lang="en"><title>Supporting
+polymorphic interface DLLs with static interface DLLs</title><shortdesc>Explains how to support polymorphic interface DLLs with static
+interface DLLs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In the previous sections showing how to use polymorphic interface DLLs,
+the class declaration contains only pure virtual functions. In real applications,
+the implementation of some of these functions could be the same in all implementation
+DLLs, leading to duplication of code.</p>
+<p>An abstract base class, intended for derivation in a polymorphic interface
+DLL, can include functions declared as <codeph>IMPORT_C</codeph>. Such functions
+must be implemented in a static interface DLL.</p>
+<p>When a polymorphic interface DLL is loaded by <codeph>RLibrary::Load()</codeph>,
+any static interface DLLs required by the polymorphic interface DLL are also
+loaded.</p>
+<p>If this technique is used, one function that can be usefully implemented
+in the statically loaded DLL is an empty destructor.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e331643_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e178718_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A5FAD55-DE84-569D-B5EB-1474DD2AF392.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6A5FAD55-DE84-569D-B5EB-1474DD2AF392"><title>Introduction to text handling</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> Text handling facilities begin with descriptors. These provide a basic API for constructing strings, passing them to functions, manipulating them, and extracting data. Additionally, they work with both 8-bit and 16-bit character sets.</p> <p>For graphics applications, the support for text begins with the font classes provided by the GDI, and the <xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita#GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138/GUID-8B1AAB31-0CC2-369B-A0A3-77053AB5974D"><apiname>CGraphicsContext::DrawText()</apiname></xref> function. These provide facilities to select a font, and to draw a single descriptor to any kind of graphics device.</p> <p>These basic facilities are provided, in various forms, by most operating systems. For most real applications, there are several key requirements which go beyond this:</p> <ul><li id="GUID-BDC839B5-640C-59C1-929B-6E0D0F81C8ED"><p>text of unbounded length — i.e., any length from 0 to infinity</p> </li> <li id="GUID-2689B6C0-4939-5D42-85A2-9095E8E0D528"><p>paragraphs, pictures and other document-type objects in the text</p> </li> <li id="GUID-2564165D-ECB3-56EE-B47C-123CA6FB413D"><p>formats for characters and/or paragraphs, including fonts, style, indents, borders, colour etc.</p> </li> <li id="GUID-90BEBD77-0A32-5ED4-8CBD-FDC411843D37"><p>layout on a graphics device — screen, printer etc. — including all the details of line wrapping, justification and honouring the details of the text's format</p> </li> <li id="GUID-9351AB87-D1C0-57E3-984E-D5D4CDDDDD1A"><p>storage and retrieval of text, in files, clipboards etc.</p> </li> <li id="GUID-32DF351F-4BD3-5A49-87D8-EEE0C0DEA744"><p>manipulation and editing of such text</p> </li> <li id="GUID-59C5DCD3-0C99-53A5-B025-EAC46917F5D3"><p>efficiency in terms of speed, memory utilisation, and ease of programming</p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A6D5DC5-3B5C-5A26-8D7F-C280AA4D5F18.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6A6D5DC5-3B5C-5A26-8D7F-C280AA4D5F18" xml:lang="en"><title>Key
+Codes</title><shortdesc>Contains a list of the key code types and a brief description.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <filepath>e32keys.h</filepath> header file defines enumerations for
+keyboard input values: </p>
+<table id="GUID-798AFE96-1AFF-5632-A760-B67ACAF4606F">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Type</b> </p> </entry>
+<entry><p> <b>Description</b> </p> </entry>
+</row>
+<row>
+<entry><p>Logical key codes: <xref href="GUID-B67B6ED5-6C8F-3B36-934C-B47A109A515F.dita"><apiname>TKeyCode</apiname></xref>  </p> </entry>
+<entry><p>A <xref href="GUID-B67B6ED5-6C8F-3B36-934C-B47A109A515F.dita"><apiname>TKeyCode</apiname></xref> keycode value is a logical representation
+of the pressed key. </p> <p>The following logical keycodes are designated
+for use by device manufacturers and/or UI suppliers. These keycodes are not
+used by the generic Symbian platform. </p> <ul>
+<li id="GUID-864954A9-1B32-5F28-A72F-FD29D0A8DF23"><p> <xref href="GUID-442BC40D-6530-3824-9BB8-96740440784A.dita"><apiname>EKeyDevice0</apiname></xref> to <xref href="GUID-66C31E55-9914-34EB-85DC-17B346969689.dita"><apiname>EKeyDeviceF</apiname></xref> inclusive. </p> </li>
+<li id="GUID-F9316EA1-EE4F-53F9-B384-CB4B907BD02D"><p> <xref href="GUID-E790B8A2-DA38-35ED-8F90-FE514DA51C41.dita"><apiname>EKeyDevice10</apiname></xref> to <xref href="GUID-420F8303-B018-3598-B68D-AE4D2F4EC28E.dita"><apiname>EKeyDevice1F</apiname></xref> inclusive </p> </li>
+<li id="GUID-EFB50CB8-57C4-5908-837A-487567F57825"><p> <xref href="GUID-ECC847A1-9473-3F72-8B62-7289F51044D8.dita"><apiname> EKeyApplication0</apiname></xref> to <xref href="GUID-4C13555F-3CFF-3843-B1FB-B8593149ED61.dita"><apiname>EKeyApplicationF</apiname></xref> inclusive </p> </li>
+<li id="GUID-F0DD5CA3-52F5-5A62-ACA0-B778EE54C244"><p> <xref href="GUID-C4B5B49E-4233-3C45-BADF-B4CC4809AAFB.dita"><apiname> EKeyApplication10</apiname></xref> to <xref href="GUID-AF3C115E-DD6E-363E-A761-A2BE6B711BDB.dita"><apiname>EKeyApplication1F</apiname></xref> inclusive </p> </li>
+</ul> </entry>
+</row>
+<row>
+<entry><p>Key modifier flags: <xref href="GUID-CAFCC1F8-B23E-3BCA-AFD4-35EEA193F788.dita"><apiname>TEventModifier</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-CAFCC1F8-B23E-3BCA-AFD4-35EEA193F788.dita"><apiname>TEventModifier</apiname></xref> defines modifier flags, such
+as shift and control keys flags, for key and pointer events. </p> </entry>
+</row>
+<row>
+<entry><p>Hardware key scancodes: <xref href="GUID-4D92CE24-E651-3584-BDE0-F26046B4175B.dita"><apiname>TStdScanCode</apiname></xref> </p> </entry>
+<entry><p>The code of the pressed hardware key is stored by a <xref href="GUID-4D92CE24-E651-3584-BDE0-F26046B4175B.dita"><apiname>TStdScanCode</apiname></xref> value. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>These enumerations are used by the Window Server to encapsulate keyboard
+events in the <xref href="GUID-0F8FA6A3-F172-36E4-9CF5-60814ABCD562.dita"><apiname>TKeyEvent</apiname></xref> class. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A770434-EF8A-5ECC-BB74-2E7FC4A9E360.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6A770434-EF8A-5ECC-BB74-2E7FC4A9E360" xml:lang="en"><title> Listing
+Keys</title><shortdesc>This section explains how to list keys in all the keystores.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function to
+list the keys in all of the keystores. </p><p> The following steps explain
+the process of listing keys:</p> </context>
+<steps id="GUID-C16B6DEE-9CAD-59D1-8CDA-92C37A0179CB">
+<step id="GUID-F131856E-BE3D-5ECD-B95B-23A025A8FDF0"><cmd/>
+<info>Create a file system session using an <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object. </info>
+</step>
+<step id="GUID-79CA45DF-F8FE-5EB0-9600-A0D8238D065B"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-9CA5BA80-44A3-5117-8923-7C5E13F6CE2E"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-FB673E4A-447F-5E6C-BE68-DDFE2C29372B"><cmd/>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function to list
+the keys in the keystores. </info>
+</step>
+</steps>
+<result><p>The <codeph>List()</codeph> function returns all the keys from
+all the keystores. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+set a file system session object, initialise keystore and member functions,
+and list keys. </p> <codeblock id="GUID-AD94670F-BF1F-58F9-B283-0810234B1483" xml:space="preserve">
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+...
+
+//List the keys in the keystores
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the result after the completion of the list operation
+TCTKeyAttributeFilter  filter.iUsage = EPKCS15UsageAll;
+keyStore-&gt;List(iKeys, filter, iStatus);
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C"><title>FEATUREVARIANT</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>All DLLs are variant by default, but they are disabled using <codeph>-invariant</codeph> or <codeph>-inv</codeph> option in the <codeph>abld</codeph> command. </p> <p>A DLL marked as <codeph>FEATUREVARIANT</codeph> in its <filepath>.mmp</filepath> file remains variant, when <codeph>-invariant</codeph> or <codeph>-inv</codeph> option is specified in the <codeph>abld</codeph> command. </p> <p> <codeph>FEATUREVARIANT</codeph> has an effect only when used with <codeph>-invariant</codeph> or <codeph>-inv</codeph> option in the <codeph>abld</codeph> command. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A78F618-09A9-56A7-8C58-98C353BF0788.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6A78F618-09A9-56A7-8C58-98C353BF0788" xml:lang="en"><title>Domain
+Name Server</title><shortdesc>The Domain Name Server (DNS) identifies the Internet servers based
+on the host names. This topic describes the concept of the DNS. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Internet communication is based on IP addresses, the DNS maps the host
+names to IP addresses. The DNS supports International Domain Names that contain
+ASCII and non-ASCII characters. </p>
+<section id="GUID-4592BB90-B123-4B0E-86BF-DB7EA3C49639"><title>Domain Name Server Proxy</title> <p>DNS Proxy server is a
+partial implementation of the DNS Server that runs on the standard DNS Server,
+port number 53. When DNS Proxy server is implemented on the Symbian platform,
+it forwards DNS requests or queries to the network DNS server for mapping
+the host names to IP addresses. DNS Proxy server resolves local names on the
+private network using the local DNS database. For standard internet domain
+names it uses external DNS server in the public network. </p> <p>The local
+name resolution is done using the local DNS database and the DNS. The DNS
+queries for standard internet domain name resolution are sent to the external
+DNS on one of the available uplinks. The Dynamic Host Configuration Protocol
+(DHCP) server updates the local database when the DHCP server assigns an IP
+address to the connecting local host on the private network. </p> </section>
+<section id="GUID-BAB306E6-5ABF-40A5-A938-3EC214A55558"><title>International Domain Names</title> <p>International Domain
+Names (IDN) can contain non-ASCII characters, the DNS uses a Punycode conversion
+library to resolve these domain names. When the Domain Name Daemon receives
+a domain name that contains non-ASCII characters it converts the domain name
+to Punycode. For more information about how the domain name is converted to
+Punycode see RFC 3492. By default, the support for IDN resolution is turned
+off. The library only converts UCS2.0 encoded domain names. </p> </section>
+<section id="GUID-B3928F70-373C-4971-A4D2-D7DBA9CA7477"><title>Top Level Domain (TLD) Whitelists and Backlists</title> <p>The
+support of International Domain Names threatens system security with homograph
+attacks, also known as phishing. The Symbian platform whitelist/blacklist
+URI service supports a whitelist/blacklist service for TLDs and a list of
+allowed characters for each TLD. This list is initialised when the system
+starts and can be edited using a sis package. </p> </section>
+</conbody><related-links>
+<link href="GUID-7510C121-A23F-50E0-8130-16AF552BC497.dita"><linktext>Dynamic Host
+Configuration Protocol</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3"><title>Advanced Settings for Focus, Drive Modes, and Bracket Modes </title><shortdesc>This document provides a detailed description of various advanced settings of Ecam component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-B66B827F-F291-5A87-A96F-0281B5FB2722"><title>Introduction</title> <p>The advanced settings class, <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E31AEB11-B7A0-3637-BB31-866306F78118"><apiname>CCamera::CCameraAdvancedSettings</apiname></xref>, provides access to common camera hardware settings related to image acquisition for still images and video. </p> <p id="GUID-79C320F6-1B2A-5A91-AEB2-356BB7C0B160"><b>Focus mode</b> </p> <p>The high level steps to set the Camera focus mode are shown here: </p> <ul><li id="GUID-8FEE544B-043C-5A2E-8D1F-29A8336F0CA9"><p>Get the information about the supported focus modes on the camera using the <xref href="GUID-83D453AD-C8D0-33AA-A8AB-6B0342D05741.dita#GUID-83D453AD-C8D0-33AA-A8AB-6B0342D05741/GUID-7DACEEF8-4492-32DB-9FBD-766BF8DF88DF"><apiname>TInt
+                  CCamera::CCameraAdvancedSettings::SupportedFocusModes()</apiname></xref> method. </p> </li> <li id="GUID-8B66ECEA-605D-55BC-BA40-679BA9CF1A96"><p>Set a specific focus mode on the camera using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-ADD952C2-0AE2-3971-B29B-3A979CB97BE9"><apiname>CCamera::CCameraAdvancedSettings::SetFocusMode()</apiname></xref> method. </p> </li> <li id="GUID-80E965EA-7C42-564E-9FE6-1B04B89359C4"><p>Get the current focus mode on the camera using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-D057397E-E483-3082-B1E1-B50CF8D3DD2B"><apiname>CCamera::CCameraAdvancedSettings::FocusMode()</apiname></xref> method. </p> <p>The enumerated type <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-D057397E-E483-3082-B1E1-B50CF8D3DD2B"><apiname>CCamera::CCameraAdvancedSettings::FocusMode()</apiname></xref> defines four supported focus modes: </p> <table id="GUID-02C2468E-DBBF-5137-ACEB-C23FFAFBB468"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Enum Value</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-9A06A4D0-6284-3176-9AB3-1C3E79B98B17.dita"><apiname>EFocusModeUnknown</apiname></xref>  </p> </entry> <entry><p>Focus mode is unknown </p> </entry> </row> <row><entry><p> <xref href="GUID-D9429C4E-CB09-33C0-BEB3-137ED8F29611.dita"><apiname>EStabilizationComplexityLow</apiname></xref>  </p> </entry> <entry><p>Focus mode is automatic </p> </entry> </row> <row><entry><p> <xref href="GUID-A8C038E9-9126-34C3-8BE4-4780123D9C19.dita"><apiname>EStabilizationComplexityMedium</apiname></xref>  </p> </entry> <entry><p>Focus is fixed </p> </entry> </row> <row><entry><p> <xref href="GUID-DA7CB865-D120-3FC5-9871-428B0C0DCB8C.dita"><apiname>EStabilizationComplexityHigh</apiname></xref>  </p> </entry> <entry><p>Focus is manually set </p> </entry> </row> </tbody> </tgroup> </table> </li> </ul> <p>The following example shows how to change the focus mode: </p> <codeblock id="GUID-24781D9D-62F0-5A3A-8AE1-A3666AED78E2" xml:space="preserve">    // Assigns the focus mode to be set    
+    CCamera::CCameraAdvancedSettings::TFocusMode focusMode = CCamera::CCameraAdvancedSettings::EFocusModeFixed;
+    
+    // Gets the supported modes
+    TInt suppFocusModes = settings-&gt;SupportedFocusModes();// Checks if the focus mode is supported before setting it
+    if (focusMode &amp; suppFocusModes)
+        {
+           // Sets the focus mode if it is supported
+        settings-&gt;SetFocusMode(focusMode);
+        }</codeblock> <p id="GUID-20148E50-5531-595D-AED3-BACF2F5D69A3"><b>Focus range</b> </p> <p>Get the supported focus range using the enumerated type <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-24EC2538-2021-3A84-BBEC-9B07F60D47F1"><apiname>CCamera::CCameraAdvancedSettings::TFocusRange</apiname></xref>. This defines eight supported focus ranges: </p> <table id="GUID-45890051-4539-57F0-A07E-17F4530415D3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Enum Value</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-0C446118-46EC-31D1-9D06-15B50A6A0D46.dita"><apiname>EFocusRangeAuto</apiname></xref>  </p> </entry> <entry><p>Automatic </p> </entry> </row> <row><entry><p> <xref href="GUID-88AF32AF-5B11-3C40-82BE-29C5ACE25FF4.dita"><apiname>EFocusRangeMacro</apiname></xref>  </p> </entry> <entry><p>Focus operates in close range </p> </entry> </row> <row><entry><p> <xref href="GUID-88AF32AF-5B11-3C40-82BE-29C5ACE25FF4.dita"><apiname>EFocusRangeMacro</apiname></xref>  </p> </entry> <entry><p>Normal operation </p> </entry> </row> <row><entry><p> <xref href="GUID-88AF32AF-5B11-3C40-82BE-29C5ACE25FF4.dita"><apiname>EFocusRangeMacro</apiname></xref>  </p> </entry> <entry><p>Extended (tele) operation </p> </entry> </row> <row><entry><p> <xref href="GUID-8299C8D8-2260-3163-9A5B-5A129CAC5C5A.dita"><apiname>EFocusRangePortrait</apiname></xref>  </p> </entry> <entry><p>Focus at larger areas at short to medium distance </p> </entry> </row> <row><entry><p> <xref href="GUID-27C0ABB6-9A85-340D-94B2-020DF2878852.dita"><apiname>EFocusRangeSuperMacro</apiname></xref>  </p> </entry> <entry><p>Optimised macro operation, where depth of field is very shallow and observation area changes quickly </p> </entry> </row> <row><entry><p> <xref href="GUID-4F2CF1F1-DFE9-3F39-BEC8-ECC7D34B8D07.dita"><apiname>EFocusRangeHyperfocal</apiname></xref>  </p> </entry> <entry><p>All objects at distances from half of the hyperfocal distance out to infinity will be in focus. This gives maximum depth of field. </p> </entry> </row> <row><entry><p> <xref href="GUID-C97CC323-120D-3DA7-BE57-DD6DA5B8A355.dita"><apiname>EFocusRangeInfinite</apiname></xref>  </p> </entry> <entry><p>Infinite range, when there is a near obstacle or better focus wanted for far away objects. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following example shows how to change the focus range: </p> <codeblock id="GUID-D65E3CD4-BD93-5D87-AB07-3596BBFFCF21" xml:space="preserve">    // Assigns the focus range to EFocusRangeHyperfocal and checks if it is supported
+    CCamera::CCameraAdvancedSettings::TFocusRange focusRange = CCamera::CCameraAdvancedSettings::EFocusRangeHyperfocal;
+        
+    // Gets the supported ranges            
+    TInt suppRanges = settings-&gt;SupportedFocusRanges();
+    
+    // Checks if the focus range is supported before setting it.
+    if (focusRange &amp; suppRanges) 
+        {
+        // Sets the focus range if it is supported
+        settings-&gt;SetFocusRange(focusRange);
+        }</codeblock> <p>The result of <xref href="GUID-FF2ABB51-4E7C-3FB5-AC6B-37A00ADA9A47.dita"><apiname>SetFocusRange</apiname></xref> is notified to the client asynchronously through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref> and with UID <xref href="GUID-5AA4F8A8-276F-308D-8FDA-4B0A99EB7805.dita"><apiname>KUidECamEventCameraSettingFocusRange2</apiname></xref>. </p> <p id="GUID-13C7E377-B9DB-5382-8D2C-C182D1849AEC"><b> Autofocus types</b> </p> <p>Get the supported autofocus types using the enumerated type <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-03893892-2ADB-3F2F-92ED-92B56FA91732"><apiname>CCamera::CCameraAdvancedSettings::TAutoFocusType</apiname></xref>. This defines three supported focus types: </p> <table id="GUID-3535B88E-68BA-5DAF-B367-24E856B76A8B"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Enum</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-4F75D808-7D0B-38F8-8251-E85A03286186.dita"><apiname>EAutoFocusTypeOff</apiname></xref>  </p> </entry> <entry><p>Autofocus is switched off </p> </entry> </row> <row><entry><p> <xref href="GUID-5F4E04B7-45D1-32E3-BAD8-428615C99A7D.dita"><apiname>EAutoFocusTypeSingle</apiname></xref>  </p> </entry> <entry><p>Operates on a single shot, consumes less power </p> </entry> </row> <row><entry><p> <xref href="GUID-47254936-309C-37A7-9753-4C07C4D46EDD.dita"><apiname>EAutoFocusTypeContinuous</apiname></xref>  </p> </entry> <entry><p>Continuous autofocus, more precise but consumes more power. This is also known as AF Servo. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following example shows how to change the autofocus type: </p> <codeblock id="GUID-9FE120BA-04B9-58A4-A319-B820F3274066" xml:space="preserve">    CCamera::CCameraAdvancedSettings::TAutoFocusType focusType = CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff;
+    
+    // Gets the supported focus types
+    TInt suppFocusTypes = settings-&gt;SupportedAutoFocusTypes();
+    
+    // Checks if the focus type is supported before setting it.
+    if (focusType &amp; suppFocusTypes)
+        {
+        // Sets the focus type if it is supported
+        settings-&gt;SetAutoFocusType(focusType);
+        }</codeblock> <p>The result of <xref href="GUID-75DE7509-68C6-3A14-BDFF-648DA0B608B0.dita"><apiname>SetAutoFocusType</apiname></xref> is notified to the client asynchronously through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref> and with uid <xref href="GUID-7114AB87-6D96-398B-8ABF-A5E9883EB6BD.dita"><apiname>KUidECamEventCameraSettingAutoFocusType2</apiname></xref>. </p> <p id="GUID-6A1C1EAC-092F-59FE-B0FA-74991872A42D"><b> Drive modes</b> </p> <p>Get the supported drive modes for the camera using the enumerated type <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-44BD2C6E-A58B-36F6-8C31-109330FC6D40"><apiname>CCamera::CCameraAdvancedSettings::TDriveMode</apiname></xref> that determines how and in what succession images are captured. This defines eight supported drive modes for the camera with the following Enum Values: </p> <table id="GUID-4D90CBA3-7721-5785-92C2-282EE7996588"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Enum Value</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-8B34CD7E-04C5-3EF4-9743-BF1BC8B9AD64.dita"><apiname>EDriveModeAuto</apiname></xref>  </p> </entry> <entry><p>Automatic </p> </entry> </row> <row><entry><p> <xref href="GUID-737A7DBE-7556-3FC8-968C-6770A0A59EFC.dita"><apiname>EDriveModeSingleShot</apiname></xref>  </p> </entry> <entry><p>Camera takes a single image or shot </p> </entry> </row> <row><entry><p> <xref href="GUID-AFDA6C4B-6400-381B-882D-2E1441C61EA7.dita"><apiname>EDriveModeContinuous</apiname></xref>  </p> </entry> <entry><p>Camera continuously captures images as fast as it can until it is stopped or it exceeds the storage space. </p> </entry> </row> <row><entry><p> <xref href="GUID-2F0BC93F-C2FF-324B-A108-94CC27BF1931.dita"><apiname>EDriveModeBracket</apiname></xref>  </p> </entry> <entry><p>Camera is in bracketing mode, producing individual frames. </p> </entry> </row> <row><entry><p> <xref href="GUID-EFFDEF7C-BE5F-376C-8819-F3CA49E7EAA7.dita"><apiname>EDriveModeBracketMerge</apiname></xref>  </p> </entry> <entry><p>Camera is in bracketing mode, but producing a single image. Use <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-45C51172-F35D-3EAE-BD1E-FDFBEC99108D"><apiname>CCamera::CCameraAdvancedSettings::SetBracketMerge</apiname></xref> method to work in this drive mode. </p> </entry> </row> <row><entry><p> <xref href="GUID-FFE93DB5-A36F-34ED-9B8B-0CF01BC9CDA8.dita"><apiname>EDriveModeTimed</apiname></xref>  </p> </entry> <entry><p>Camera captures a single shot after specified time period. Use <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-03A1C480-F9C6-3130-9A51-4080A3745972"><apiname>CCamera::CCameraAdvancedSettings::SetTimerInterval</apiname></xref> method to work in this drive mode. </p> </entry> </row> <row><entry><p> <xref href="GUID-A282F7BF-9D7D-37D1-94C1-5976389A6BC4.dita"><apiname>EDriveModeTimeLapse</apiname></xref>  </p> </entry> <entry><p>Camera captures a set of images with an uniform interval between them. Use <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-FB2F1372-FFF6-3FA1-9094-6C5D1841E154"><apiname>CCamera::CCameraAdvancedSettings::SetTimeLapse</apiname></xref> method to work in this drive mode. </p> </entry> </row> <row><entry><p> <xref href="GUID-E4CF7578-2E5B-3DDB-91B3-7EA5AEF9FCAE.dita"><apiname>EDriveModeBurst</apiname></xref>  </p> </entry> <entry><p>Camera captures a set of images as fast as it can in batches or bursts. Use <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-62E2D492-5FFD-396E-B192-AF4A4B1E3807"><apiname>CCamera::CCameraAdvancedSettings::SetBurstImages</apiname></xref> method to set the number of burst images before capturing the image. </p> <p> <b>Note</b>: There are chances that the actual number of images captured may be less important due to memory or image size limitations. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following example shows how to change the drive mode: </p> <codeblock id="GUID-9FB24CA2-8107-560F-80DA-4ACDE5E93049" xml:space="preserve">    CCamera::CCameraAdvancedSettings::TDriveMode driveMode = CCamera::CCameraAdvancedSettings::EDriveModeSingleShot;
+    
+    // Gets the supported drive modes
+    TInt suppDriveModes = settings-&gt;SupportedDriveModes();
+    
+    // Checks if the drive mode is supported before setting it.
+    if (driveMode &amp; suppDriveModes) 
+        {
+        // Sets the drive mode
+        settings-&gt;(driveMode);
+        }</codeblock> <p>The result of <xref href="GUID-FD18B529-8E01-30EA-A604-F2EAB3F0B14B.dita"><apiname>SetDriveMode</apiname></xref> is notified to the client asynchronously through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref> and with uid <xref href="GUID-AD1D5E76-4DE1-3D07-9D6F-3B78A27E02C2.dita"><apiname>KUidECamEventCameraSettingDriveMode</apiname></xref>. </p> <p id="GUID-C3CB9300-39D5-5891-8E13-2DDFEFD0D695"><b>Bracket modes</b> </p> <p>Bracket mode is a type of drive mode, which is called using <xref href="GUID-2F0BC93F-C2FF-324B-A108-94CC27BF1931.dita"><apiname>EDriveModeBracket</apiname></xref> method. </p> <p>Bracket mode involves the camera taking a sequence of pictures, while automatically varying a camera setting, such as exposure, over a range of values. The enumerated type <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-BFFB0B95-7F4F-3621-B912-44C8D9FD2FB8"><apiname>CCamera::CCameraAdvancedSettings::TBracketMode</apiname></xref> defines three supported bracket modes for the camera. The setting that is varied is called the bracket parameter, and is represented by the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-99390FB0-7255-3D11-A060-CFB3F760AB88"><apiname>CCamera::CCameraAdvancedSettings::TBracketParameter</apiname></xref> enumeration, while the scale of the change to the setting to make for each new picture is called the bracket step, and is represented by the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-7614DD87-7E47-3B79-BEDD-0BC1E1D25732"><apiname>CCamera::CCameraAdvancedSettings::TBracketStep</apiname></xref> enumeration. The possible bracket modes are: </p> <table id="GUID-0A4D293B-F3F0-5FC4-A29D-D180CE4FF947"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Enum Value</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-3D4DBEAF-C64B-3C60-B354-E7F1B93B0C8B.dita"><apiname>EBracketModeOff</apiname></xref>  </p> </entry> <entry><p>Bracket mode is switched off. This is the default value. </p> </entry> </row> <row><entry><p> <xref href="GUID-6206412B-7F08-33D1-9F19-0EE8167474AE.dita"><apiname>EBracketMode3Image</apiname></xref>  </p> </entry> <entry><p>Bracket mode on. Three consecutive pictures are taken in order, with the setting at under (-1), on (0), and over (+1). </p> </entry> </row> <row><entry><p> <xref href="GUID-40BA0BC3-1E12-340F-B3E8-4878B6DFA1D9.dita"><apiname>EBracketMode5Image</apiname></xref>  </p> </entry> <entry><p>Bracket mode on. Five consecutive pictures are taken in order, with the setting at under (-2), under (-1), on (0), over (+1), and over (+2). </p> </entry> </row> </tbody> </tgroup> </table> <p>The following example shows how to change the bracket mode: </p> <codeblock id="GUID-381BFE03-77E1-555B-9389-ACDC97DA7261" xml:space="preserve">    CCamera::CCameraAdvancedSettings::TBracketMode bracketMode = CCamera::CCameraAdvancedSettings::EBracketMode3Image;
+    
+    // Gets the supported bracket modes
+    TInt suppBracketModes = settings-&gt;SupportedBracketModes();
+    
+    // Checks if the bracket mode is supported before setting it.
+    if (bracketMode &amp; suppBracketModes) 
+        {
+        settings-&gt;SetBracketMode(bracketMode);    
+        }</codeblock> <p><b>Zoom Mode</b> </p> <p>The high level steps to perform various operations in zoom mode are listed below: </p> <ul><li id="GUID-0F61E199-4297-505B-BC1F-D6F5FE6B073B"><p>Get the continuous zoom types supported by the camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-A9D173CE-D76E-38A3-8F86-DE6215761BEF"><apiname>CCamera::CCameraAdvancedSettings::GetSupportedContinuousZoomTypeL</apiname></xref> method. </p> </li> <li id="GUID-CAB0F4ED-DFFD-5C8B-B6E0-0B232CDCDD27"><p>Start continuous zoom using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-A1ED1C7B-D09B-362A-ABAB-0793B2D57E19"><apiname>CCamera::CCameraAdvancedSettings::StartContinuousZoomL()</apiname></xref> method with specified continuous zoom type and the zoom direction. </p> </li> <li id="GUID-03EFA212-975F-5A77-BAFE-C410C015EC18"><p>Notify the client about the extent of continuous zoom achieved using event <xref href="GUID-737C1562-BAFA-3B6D-ABE5-98272DD91C32.dita"><apiname>KUidECamEvent2CameraSettingContinuousZoomPercentageCompletion</apiname></xref>. When continuous zoom reached its limit, notify the client using event <xref href="GUID-C3FFA191-0F6C-3E5B-A606-17E2CB64B623.dita"><apiname>KUidECamEventCameraSettingContinuousZoomReachedLimit</apiname></xref>. </p> </li> <li id="GUID-710E7302-2333-51DC-820D-7F05E8CE5A36"><p>Stop continuous zoom using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-1EA4029D-502F-378E-8E6B-0D15D9C98031"><apiname>CCamera::CCameraAdvancedSettings::StopContinuousZoom()</apiname></xref> method. </p> </li> </ul> <p><b>Extending Pixel Aspect Ratio</b> </p> <p>You can use the pixel aspect ratio to provide settings for PAL, NTSC and NTSC4:3. For this, you need to extend the enumeration of Enum <xref href="GUID-5AD70A40-E28A-3272-8196-0B32F370D6A5.dita"><apiname>TPixelAspectRatio</apiname></xref> as follows: </p> <table id="GUID-DD24C53C-8C60-5EAF-9B7A-05A3A34018F3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Enum Value</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p>TPixelAspectRatio:: EEPixelAspect16:11 </p> </entry> <entry><p>PAL </p> </entry> </row> <row><entry><p>TPixelAspectRatio:: EEPixelAspect40:33 </p> </entry> <entry><p>NTSC </p> </entry> </row> <row><entry><p>TPixelAspectRatio:: EEPixelAspect10:11 </p> </entry> <entry><p>NTSC4:3 </p> </entry> </row> </tbody> </tgroup> </table> <p>Use <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-429847B5-ED64-39BB-9094-A966BDF1796F"><apiname>CCamera::CCameraAdvancedSettings::PixelAspectRatio()</apiname></xref> method to get the current pixel aspect ratio. </p> <p>Use <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-DCA3E3CB-11A4-362B-911D-55D3A4DCDAB0"><apiname>CCamera::CCameraAdvancedSettings::SetPixelAspectRatio()</apiname></xref> method to set the pixel aspect ratio. Notify <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2</apiname></xref> clients with <xref href="GUID-778E500B-F707-303B-8B33-C864D36DE21B.dita"><apiname>KUidECamEventPixelAspectRatio</apiname></xref> event. </p> </section> <section><title>Miscellaneous</title> <p>This section details the miscellaneous APIs used in <xref href="GUID-67DF1203-B840-3C25-8EB5-3F0C8F28A4FF.dita"><apiname>CCameraAdvancedSettings</apiname></xref> class. </p> <ul><li id="GUID-95245D67-3B97-52CE-B0E5-40C8143BB63A"><p> <b> ISO rates </b>: ISO indicates the sensitivity of the image sensor and is also a parameter that influences the exposure. </p> <ul><li id="GUID-8376DD53-898A-5CB2-A580-681A14707207"><p>Get the set of camera supported ISO rates using the<xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-E77ED144-D7AE-3362-B89E-46BB2675E75B"><apiname>CCamera::CCameraAdvancedSettings::GetSupportedIsoRatesL()</apiname></xref> method. The Enum value <xref href="GUID-ACE75271-9B07-3E1A-9FFA-22F3E6CA2432.dita"><apiname>TISORateType</apiname></xref> specifies the ISO type supported by the camera. </p> </li> <li id="GUID-5DBE8988-FE71-54C3-80DD-A72DEA495F20"><p>When camera device does not reveal the ISO supported rates, it has to be assumed that camera will work only on the permanently set value. If this value is not known, returns empty array and corresponding getter or setters for this feature should not be used in such a case. </p> </li> <li id="GUID-1F3848E6-6763-591A-9514-091ECEBFBAD0"><p>Set the type of ISO rate and the exposure parameter or specific value using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-2910866C-5AB0-30D8-85D3-2A9C4C517AA2"><apiname>CCamera::CCameraAdvancedSettings::SetISORateL()</apiname></xref> method. </p> </li> <li id="GUID-60604442-D930-5C55-8D2F-F23C891A6590"><p>Get the type of ISO rate, exposure parameter and the value set using the <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-5636230D-DDF3-3E72-AB2A-DDAD3886AD26"><apiname>CCamera::CCameraAdvancedSettings::GetISORateL()</apiname></xref> method. </p> </li> <li id="GUID-5BEE22FB-1B43-5B83-ABA9-E9BEEA17D30F"><p>Get current ISO rate using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-3886CD52-B71A-31AC-A6BA-20CBE93A3965"><apiname>CCamera::CCameraAdvancedSettings::IsoRate()</apiname></xref>. </p> </li> </ul> </li> <li id="GUID-963323CA-0ABE-5DDF-A0C9-6667FD98D20B"><p>Get current aperture value using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-D383977E-EC59-37CA-9F23-440EC5CCF1CC"><apiname>CCamera::CCameraAdvancedSettings::Aperture()</apiname></xref>. For example, the function returns 280 for the actual aperture of F2.8. If the value returned is Negative, indicates the error case (system wide error code) and positive represents the current aperture value. </p> </li> <li id="GUID-B8F1D3F3-64AB-53B6-B836-36899A5806EC"><p>Get the current shutter speed in microseconds using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-7D10B49C-98D3-3AD9-A3AF-26A2AB40EA40"><apiname>CCamera::CCameraAdvancedSettings::ShutterSpeed()</apiname></xref>. If the value returned is Negative, indicates the error case (system wide error code) and positive represents the current shutter speed. </p> </li> <li id="GUID-C7ECE3F7-F3A9-5397-B745-AFA20F8D8DC4"><p>Get all supported metering modes on this camera using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-FAA5F5AE-63CE-3FAA-8C44-9755A3A2CB46"><apiname>CCamera::CCameraAdvancedSettings::SupportedMeteringModes()</apiname></xref>. </p> </li> <li id="GUID-E3E794F1-2773-5C10-8EF1-ED7538C4CFE1"><p>Get all supported drive modes as bitfields of <xref href="GUID-FAF63EED-08F8-3374-AFF6-4FBD6F17CD3F.dita"><apiname>TDriveMode</apiname></xref> type using <xref href="GUID-E31AEB11-B7A0-3637-BB31-866306F78118.dita#GUID-E31AEB11-B7A0-3637-BB31-866306F78118/GUID-B80036F6-E8AA-3602-B006-407F3A38EB78"><apiname>CCamera::CCameraAdvancedSettings::SupportedDriveModes()</apiname></xref>. </p> </li> <li id="GUID-D2CDDC69-DDA0-5682-852D-EB984B84F6A5"><p>Get the currently set flash mode using <xref href="GUID-F2F1CCCF-53DF-3297-B8E0-C5C3E52EF24F.dita#GUID-F2F1CCCF-53DF-3297-B8E0-C5C3E52EF24F/GUID-27F0A794-78A7-3318-9D99-B74DEF131795"><apiname>CCamera::TFlash
+                CCamera::CCameraAdvancedSettings::FlashMode()</apiname></xref>. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Overview</xref> for the advanced settings of Camera </p> <p>The <xref href="GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E.dita">Advanced Camera Settings</xref> tutorial </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6A8A4910-681B-5E5A-AEA9-FD8BDBD84EDD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-6A8A4910-681B-5E5A-AEA9-FD8BDBD84EDD"><title>DumpInstallFileStatusTool </title><shortdesc> <codeph>DumpInstallFileStatusTool</codeph> checks the capabilities of executables within a SIS file against the capabilities supported by the signing certificates and displays the missing capabilities corresponding to each executable. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><refsyn><title>Syntax</title> <p><userinput>dumpinstallfilestatustool <parmname>[OPTIONS]</parmname> <cmdname>
+          &lt;ARGS&gt;</cmdname> </userinput> </p> <p>The following table lists all the options supported by <codeph>DumpInstallFileStatusTool</codeph>. </p> <table id="GUID-9F14F0F0-902F-52EB-AB88-3204C2FE0E9A"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Options</entry> <entry>Description</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p> <varname>-v</varname>  </p> </entry> <entry><p>Displays version of the tool. </p> </entry> <entry><p><userinput>dumpinstallfilestatustool [-v]</userinput> </p> </entry> </row> <row><entry><p> <varname>-h</varname>  </p> </entry> <entry><p>Displays help message </p> </entry> <entry><p><userinput>dumpinstallfilestatustool [-h]</userinput> </p> </entry> </row> <row><entry><p> <varname>-i</varname>  </p> </entry> <entry><p>Displays Open SSL licence. </p> </entry> <entry><p><userinput>dumpinstallfilestatustool [-i]</userinput> </p> </entry> </row> </tbody> </tgroup> </table> <p>The following table lists the arguments to be specified with <codeph>DumpInstallFileStatusTool</codeph>: </p> <table id="GUID-3E878113-8371-517D-8A0E-0CD925C44838"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Arguments</entry> <entry> Description</entry> </row> </thead> <tbody><row><entry><p> <varname>SISFile</varname>  </p> </entry> <entry><p>Specifies the name of the signed SIS file, whose capabilites are required to be validated against the signing certificates. </p> </entry> </row> <row><entry><p> <varname>DATFile</varname>  </p> </entry> <entry><p>Specifies the location of the swicerstore.dat file on the ROM (For example, <filepath>Z:\resource\swicertstore.dat</filepath>). Optional if <varname>Directory</varname> is specified. </p> </entry> </row> <row><entry><p> <varname>Directory</varname>  </p> </entry> <entry><p>Specifies the location of the writable <filepath>swicertstore.dat</filepath> file (For example, <filepath>c:\resource\swicertstore\dat\</filepath> ). Optional if <varname>DATFile</varname> is provided. </p> </entry> </row> <row><entry><p> <varname>Capabilities</varname>  </p> </entry> <entry><p>Specifies a list of capabilities. </p> <p> <b>Note</b>: The tool lists all missing capabilities except the user-specified capabilities specified at the command prompt. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Important</b>: You must specify the arguments in the same order as shown in the following command line: </p> <p><userinput>DumpInstallFileStatusTool SISFile DATFile Directory Capabilities</userinput> </p> </refsyn> <example id="GUID-CAAC7187-67A6-54FC-8B47-C049391597B5"><title>Examples</title> <p>The following examples illustrates the usage of <codeph>DumpInstallFileStatusTool</codeph>: </p> <ul><li id="GUID-897BE460-3DD0-5592-A22C-6D9830ED2753"><p>To extract and display the missing capabilities for all the executables of a SIS file. </p> <p><userinput>dumpinstallfilestatustool 102042AC.sis swicertstore.dat</userinput> </p> <p>This command lists all the executables and their capability status at the command prompt as shown in the following sample output: </p> <codeblock id="GUID-0E328884-E7C6-59B8-A6D1-8B3CDE049328" xml:space="preserve">Executable :
+
+c:\sys\bin\initLogger.exe
+
+FILE STATUS : Capabilities are not satisfied .
+
+Missing Capabilities List :
+
+CommDD
+PowerMgmt
+MultimediaDD
+ReadDeviceData
+WriteDeviceData
+DRM
+TrustedUI
+ProtServ
+DiskAdmin
+NetworkControl
+AllFiles
+SwEvent
+NetworkServices
+LocalServices
+ReadUserData
+WriteUserData
+Location
+SurroundingsDD
+UserEnvironment
+....
+....
+....
+
+Executable :
+
+c:\sys\bin\closeLogger.exe
+
+FILE STATUS : Capabilities are not satisfied .
+
+Missing Capabilities List :
+
+CommDD
+PowerMgmt
+MultimediaDD
+ReadDeviceData
+WriteDeviceData
+DRM
+TrustedUI
+ProtServ
+DiskAdmin
+NetworkControl
+AllFiles
+SwEvent
+NetworkServices
+LocalServices
+ReadUserData
+WriteUserData
+Location
+SurroundingsDD
+UserEnvironment</codeblock> </li> <li id="GUID-73A67FBD-31D2-511B-81E9-A80FBE411639"><p>To specify the user-specified capabilities at the command prompt: </p> <p><userinput>dumpinstallfilestatustool 102042AC.sis swicertstore.dat ReadUserData WriteUserData</userinput> </p> <p>This command excludes the specified capabilities from the missing capability list as shown in the following sample output: </p> <codeblock id="GUID-DF87B623-4C28-55E6-BA91-A61DFA390CD2" xml:space="preserve">Executable :
+
+c:\sys\bin\initLogger.exe
+
+FILE STATUS : Capabilities are not satisfied .
+
+Missing Capabilities List :
+
+CommDD
+PowerMgmt
+MultimediaDD
+ReadDeviceData
+WriteDeviceData
+DRM
+TrustedUI
+ProtServ
+DiskAdmin
+NetworkControl
+AllFiles
+SwEvent
+NetworkServices
+LocalServices
+                                                    
+Location
+SurroundingsDD
+UserEnvironment
+....
+....
+....
+
+Executable :
+
+c:\sys\bin\closeLogger.exe
+
+FILE STATUS : Capabilities are not satisfied .
+
+Missing Capabilities List :
+
+CommDD
+PowerMgmt
+MultimediaDD
+ReadDeviceData
+WriteDeviceData
+DRM
+TrustedUI
+ProtServ
+DiskAdmin
+NetworkControl
+AllFiles
+SwEvent
+NetworkServices
+LocalServices
+
+Location
+SurroundingsDD
+UserEnvironment</codeblock> <p>Note that the ReadUserData WriteUserData are not displayed in the list. </p> </li> </ul> </example> </refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e265989_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6ABEF478-F3DB-524E-A500-9431B42C6665" xml:lang="en"><title>Single
+Call Tutorial</title><shortdesc>This tutorial describes how to handle single call with the telephony
+API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-CF841B4F-0F62-5933-AD58-0A0593980732"><p>This state diagram
+shows how to dial or answer one call at a time. It presumes there are no other
+calls being made. </p> <fig id="GUID-5735A736-7536-507E-92CC-8A766D8B8F66">
+<title>              Single Call State Diagram            </title>
+<image href="GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e36820_href.png" placement="inline"/>
+</fig> <p>The boxes are states. The enumeration value in each box is the status
+of the voice line. <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Voice
+line status</xref> describes the states and their meaning. You can also find
+the status of individual calls. The line state and the call state are the
+same in a single call. </p> <p>The arrows show events that trigger a change
+of state. In these events, a word in <b>bold</b> indicates a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> method
+that you can call. </p> </context>
+<steps id="GUID-6399570A-7FAF-5709-91B9-2168145F7F6C">
+<step id="GUID-30E27A7D-0792-5B77-AEE5-189A681CDDA0"><cmd/>
+<info>Check the <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Voice
+line status</xref>  </info>
+<substeps id="GUID-12C8410C-2874-4502-B046-39EC0DC0E696">
+<substep id="GUID-27EC866D-B7B3-4305-9996-404B51378BE5"><cmd/>
+<info>if the line is Idle(<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-52E51C0C-8C27-311D-8B6B-223F899DB2C9"><apiname>CTelephony::EStatusIdle</apiname></xref>) no calls
+are in progress </info>
+</substep>
+<substep id="GUID-FF977DFD-6547-4FD6-B1B6-04D3F7E31ADC"><cmd/>
+<info>if the line is on hold(<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7F347F6A-0B02-34BC-B082-3449EA63A148"><apiname>CTelephony::EStatusHold</apiname></xref>) then
+there is another call in progress, but it is on hold and you can still dial
+or answer a second call </info>
+</substep>
+<substep id="GUID-956106AF-B740-48B8-B474-5442BE357FD6"><cmd/>
+<info>if a call is active, you must wait until it completes before you can
+dial or receive a call. To detect when this occurs, see <xref href="GUID-87CD8C58-F6B9-5D6B-9D7B-862979DE3B6F.dita">Notification
+Request Tutorial</xref>  </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-27A87414-B446-5C5D-BCBE-72F543062D67"><cmd/>
+<info> <xref href="GUID-05759C1B-6731-52A1-8EC0-2570E01FC7BC.dita">Dial a call</xref>  </info>
+<info>While no calls are in progress, the line status is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-52E51C0C-8C27-311D-8B6B-223F899DB2C9"><apiname>CTelephony::EStatusIdle</apiname></xref>.
+To dial a call, use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-E7A25EB6-B7FD-31DF-9A03-F100F93D7138"><apiname>CTelephony::DialNewCall()</apiname></xref>. </info>
+<info>If successful and the remotes party answers the call then the line status
+is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-641B7EAB-56C6-3E9C-A53C-EE382925E1CE"><apiname>CTelephony::EStatusConnected</apiname></xref>. </info>
+</step>
+<step id="GUID-2D16FAAD-3900-5313-9C45-4E7867BF4453"><cmd/>
+<info> <xref href="GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita">Answer a call</xref>  </info>
+<info>When no calls are in progress, the line status is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-52E51C0C-8C27-311D-8B6B-223F899DB2C9"><apiname>CTelephony::EStatusIdle</apiname></xref>. </info>
+<info>When a remote party calls your phone, the voice line status will change
+to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7632FB7B-0272-39CB-B71A-C3C09EEB5E88"><apiname>CTelephony::EStatusRinging</apiname></xref>. </info>
+<info>When the status is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7632FB7B-0272-39CB-B71A-C3C09EEB5E88"><apiname>CTelephony::EStatusRinging</apiname></xref>, use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-6D12DBA4-8902-3649-B144-47C91F16C4B3"><apiname>CTelephony::AnswerIncomingCall()</apiname></xref> to
+answer the call. The status changes to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-641B7EAB-56C6-3E9C-A53C-EE382925E1CE"><apiname>CTelephony::EStatusConnected</apiname></xref> and
+the phone user can talk to the remote party. </info>
+</step>
+<step id="GUID-7398BBDB-3EA9-5575-A04F-47292ADA05BD"><cmd/>
+<info> <xref href="GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB.dita">Terminate a
+call</xref>  </info>
+</step>
+<step id="GUID-85EFB23C-DE86-5614-928F-A12ADF8E799E"><cmd/>
+<info> <xref href="GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita">Detect remote
+party call termination</xref>  </info>
+</step>
+<step id="GUID-28C01974-AB55-5AFC-A5CD-A5054AC06A51"><cmd/>
+<info> <xref href="GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita">Hold a Call</xref>  </info>
+</step>
+<step id="GUID-F3CA48F5-F03E-5CC5-BBCE-A1B3F122861C"><cmd/>
+<info> <xref href="GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1.dita">Resume a call</xref>  </info>
+</step>
+<step id="GUID-809085D2-7B65-5C40-88EA-E3619158D7F6"><cmd/>
+<info> <xref href="GUID-9C5A86D2-E602-55AE-B54B-8511E70CD23D.dita">Send DTMF tones </xref>  </info>
+</step>
+</steps>
+<result><p> When you successfully dial or answer a call, you will be given
+a
+ <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-86D48DF2-1AA1-337A-A270-6703FF29C958"><apiname>CTelephony::TCallId</apiname></xref> the identifies the call. 
+</p><p>A remote party might try to ring your phone. The voice line state will
+change to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-7632FB7B-0272-39CB-B71A-C3C09EEB5E88"><apiname>CTelephony::EStatusRinging</apiname></xref>. You can ignore this
+call. You can still terminate, hold, resume and send DTMF. 
+</p></result>
+</taskbody><related-links>
+<link href="GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita"><linktext>Simultaneous
+                Call Tutorial</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB" xml:lang="en"><title>helloworldbasic.rss</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>In the Symbian platform, resource files are used to define UI components
+such as status panes, <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA
+(Control Button Area) buttons</xref>, <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">menu
+bars</xref>, <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">views</xref>,
+dialogs, strings, and constants used in applications. The UI components consist
+of data structures that are defined in resource files, and then are called
+from the classes controlling the UI implementation. When UI component implementation
+is split into these two approaches, it means that resources can be recompiled,
+for example for new languages, without having to recompile the application
+code.</p>
+<p>For more information about resource files, see <xref href="GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita">Managing
+resource files</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-5FFA294E-190E-41AE-BDA3-EE3F2E84F2E6">//  RESOURCE IDENTIFIER
+NAME HEWB    // 4 letter ID
+
+</codeblock>
+<p>This NAME statement defines the mandatory identifier for this resource
+file, which is unique within this application. For more information, see <xref href="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita">Resource
+file structure</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-6A156720-EBC9-4D2E-B6B7-196DFAEBB518">//  INCLUDES
+#include &lt;eikon.rh&gt;
+#include &lt;avkon.rh&gt;
+</codeblock>
+<p>These are preprocessor statements for <parmname>EIKON</parmname> and <parmname>AVKON</parmname> files
+provided with the SDK in the <parmname>./Epoc32/include</parmname> subfolder
+that are required for data structures used in the resource file. For more
+on the available preprocessor statements in resource files, see <xref href="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita">Resource
+file structure</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-E27A3CE4-3058-4DEC-B298-675CB1028682">#include &lt;avkon.rsg&gt;
+</codeblock>
+<p>These is a preprocessor statement for a generated resource file provided
+with the SDK in the <parmname>./Epoc32/include</parmname> subfolder that provides
+a list of symbolic IDs that point to compiled resources. For more on Symbian
+precompiled options, see <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">Precompiled
+resource values available from the Symbian platform</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-DB2EF2AB-24B9-4B0A-B691-E2BB54214132">#include &lt;appinfo.rh&gt;
+</codeblock>
+<p>This is a preprocessor statement for an <parmname>AVKON</parmname> file
+provided with the SDK in the <parmname>./Epoc32/include</parmname> subfolder
+that is required for the data structure used for the localizable information
+for the application registration resource file.</p>
+<codeblock xml:space="preserve" id="GUID-3664CD24-DCE2-437F-B833-7E459CECD684">#include "HelloWorldBasic.hrh"</codeblock>
+<p>This is a preprocessor statement for the <i>HelloWorldBasic</i> custom
+command IDs. For more on custom command IDs, see <xref href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita">Creating
+resource header files</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-F434F19C-2BEF-4E95-BF16-35813A19FD0E">#include "HelloWorldBasic.rls"
+</codeblock>
+<p>This is a preprocessor statement for the file used to manage building
+the localized strings for the <i>HelloWorldBasic</i> application. For more
+on internationalization and localization, see <xref href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita">Internationalization
+and localization</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-51D40318-84BB-49A7-9D1E-E28118AD71A6">//  RESOURCE DEFINITIONS
+// -----------------------------------------------------------------------------
+//
+//    Define the resource file signature
+//    This resource should be empty.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE
+    {
+    }
+
+</codeblock>
+<p>This is the required <parmname>RESOURCE</parmname> definition that indicates
+the version of this resource file. For this application, no version is defined.</p>
+<codeblock xml:space="preserve" id="GUID-C70BA7AA-2AD2-4876-8F14-AE4E73D2BB5E">// -----------------------------------------------------------------------------
+//
+//    Default Document Name
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_default_document_name
+    {
+    buf="HEWB";
+    }
+
+</codeblock>
+<p>This is the required <parmname>RESOURCE</parmname> definition that defines
+the name used if the <parmname>helloworldbasicdocument</parmname> class needs
+to store a document.</p>
+<codeblock xml:space="preserve" id="GUID-B0907BE0-D5B4-47E9-86AB-730C67F2AC8E">// -----------------------------------------------------------------------------
+//
+//    Define default menu and CBA key.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+    {
+    menubar = r_helloworldbasic_menubar;
+    cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
+    }
+
+
+</codeblock>
+<p>This is the required <parmname>RESOURCE</parmname> definition that defines
+the resource used for constructing the menu bar and the Control Button Area
+(CBA) buttons used in the application. The menu bar is constructed later in
+this resource file. The CBA buttons declaration uses a precompiled symbolic
+ID from the <parmname>avkon.rsg</parmname> file, which in turns points to
+a compiled resource that provides an <parmname>Options</parmname> text above
+the left softkey and an <parmname>Exit</parmname> text above the right softkey.
+The application framework handles the event generated by selection of the <parmname>Options</parmname> softkey
+and opens the <parmname>MENU_PANE</parmname> resource. Selection of the <parmname>Exit</parmname> softkey
+generates a <parmname>EAknSoftkeyExit</parmname> event that needs to be handled
+by your code. For more information on event handling, see <xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">Event
+handling</xref>.</p>
+<codeblock xml:space="preserve" id="GUID-1D25FC90-4454-4FE2-9306-60B8BC2AFBA3">// -----------------------------------------------------------------------------
+//
+//   r_helloworldbasic_menubar
+//   Menubar for HelloWorldBasic example
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_BAR r_helloworldbasic_menubar
+    {
+    titles =
+        {
+        MENU_TITLE { menu_pane = r_helloworldbasic_menu; }
+        };
+    }
+
+
+</codeblock>
+<p>This <parmname>RESOURCE</parmname> definition defines the <parmname>r_helloworldbasic_menubar</parmname> menu
+bar declared in <parmname>EIK_APP_INFO</parmname>. The <parmname>MENU_TITLE</parmname> statement
+maps to the <parmname>Options</parmname> softkey, which opens the defined <parmname>MENU_PANE</parmname> resources
+when selected.</p>
+<codeblock xml:space="preserve" id="GUID-18A6F8CA-F09E-4E0F-8F36-424090D084D4">// -----------------------------------------------------------------------------
+//
+//   r_helloworldbasic_menu
+//   Menu for "Options"
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_helloworldbasic_menu
+    {
+    items =
+        {
+        // added the new Options menu command here
+        MENU_ITEM
+                {
+                command = EHelloWorldBasicCommand1;
+                txt = STRING_hewb_command1;
+                },
+        MENU_ITEM
+                {
+                command = EHelloWorldBasicCommand2;
+                txt = STRING_hewb_command2;
+                },
+        MENU_ITEM
+                {
+                command = EHelloWorldBasicCommand3;
+                txt = STRING_r_hewb_command3;
+                },
+	MENU_ITEM
+                {
+                command = EAknSoftkeyExit;
+                txt = STRING_r_hewb_exit;
+                }
+        };
+    }
+
+</codeblock>
+<p>This <parmname>RESOURCE</parmname> definition defines the <parmname>r_helloworldbasic_menu</parmname> menu
+opened when <parmname>Option</parmname> is selected. Four menu items are offered: <parmname>Hello</parmname>, <parmname>Hello
+from file</parmname>, <parmname>Hello from edit</parmname>, and <parmname>Exit</parmname>.
+The <parmname>command</parmname> definitions indicate which event is returned
+by the application framework when the option is selected and the <parmname>txt</parmname> declarations
+provide the strings used in the menu. The enumerated <parmname>command</parmname> command
+IDs here are listed in the <parmname>helloworldbasic.hrh</parmname> file,
+with the exception of <parmname>EAknSoftkeyExit</parmname>, which is a command
+ID available from <parmname>avkon.hrh</parmname>.</p>
+<codeblock xml:space="preserve" id="GUID-D3AA64A7-6A43-426F-8D49-874283903FF1">// -----------------------------------------------------------------------------
+//
+// Resources for messages.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF32 r_hewb_command1_text { buf=STRING_r_hewb_command1_text; }
+RESOURCE TBUF32 r_hewb_file_text { buf=STRING_r_hewb_file_text; }
+RESOURCE TBUF32 r_hewb_caption_string { buf=STRING_r_hewb_caption_string; }
+</codeblock>
+<p>These <parmname>RESOURCE</parmname> definitions define <parmname>TBUF32</parmname> resources
+that can be read in the application implementation code later with the <parmname>StringLoader</parmname> class.</p>
+<codeblock xml:space="preserve" id="GUID-4205A985-F5DD-4EFE-9EAB-56C2188802D4">// ---------------------------------------------------------------------------- 
+//
+// r_helloworldbasic_localisable_app_info
+//
+// ---------------------------------------------------------------------------- 
+//
+RESOURCE LOCALISABLE_APP_INFO r_helloworldbasic_localisable_app_info
+    {
+    short_caption = STRING_hewb_caption_string;
+    caption_and_icon = 
+    CAPTION_AND_ICON_INFO
+        {
+        caption = STRING_hewb_caption_string;
+
+        number_of_icons = 1;
+	   	icon_file = "\\resource\\apps\\Helloworldbasic_aif.mif";
+	    };
+    }
+</codeblock>
+<p>This <parmname>RESOURCE</parmname> definition defines the localizable
+information for the <i>HelloWorldBasic</i> registration file, where:</p>
+<ul>
+<li><p><parmname>r_helloworldbasic_localisable_app_info</parmname> is
+the resource identifier</p></li>
+<li><p><parmname>STRING_hewb_caption_string</parmname> is the symbolic
+ID for <parmname>HelloWorld</parmname>, which is used for both the short and
+long caption</p></li>
+<li><p>there is one icon for <i>HelloWorldBasic</i> and it is in
+the <parmname>\\resource\\apps\\Helloworldbasic_aif.mif</parmname> file</p>
+</li>
+</ul>
+<codeblock xml:space="preserve" id="GUID-730600E4-43F1-45ED-B713-FCFDD6F56FB3">// ----------------------------------------------------------------------------
+//
+// r_dialog_text_edit_query
+//
+// ----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_dialog_text_edit_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = AVKON_DATA_QUERY
+                {
+                layout = EDataLayout;
+                label = "";
+                control = EDWIN
+                    {
+                    width = 32;
+                    maxlength = 32;
+                     lines = 1;
+                    };
+                };
+            }
+        };
+    }
+// End of File
+</codeblock>
+<p>This <parmname>RESOURCE</parmname> definition defines the resource required
+for a dialog used in the<i>HelloWorldBasic</i> application. For more information
+on defining <parmname>DIALOG</parmname> resources, see Using Dialog API.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6AE2F937-69BB-5330-A2B5-44D37FA1DE16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6AE2F937-69BB-5330-A2B5-44D37FA1DE16"><title>Using TZoomFactor and MGraphicsDeviceMap</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate the effects of different zoom factors on text and graphics. Example code displays some text, a rectangle, and a bitmap at various different zoom factors, with commentary text set at a fixed zoom factor. </p> <section><title>Setting up a TZoomFactor</title> <p>The following fragment of code demonstrates how to set up a zoom factor object. The zoom factor is first set to 1-to-1 (no zoom) using the value <codeph>TZoomFactor::EZoomOneToOne</codeph>. Then it is shown how to set a zoom factor by multiplying or dividing <codeph>EZoomOneToOne</codeph>. </p> <p>In actual applications, for example, one zoom factor could be used for the client area of an application which can be zoomed, and another for drawing menus and button-bars which should not be zoomed. </p> <codeblock id="GUID-9EB63708-5DD8-53DB-9317-BA777C6A774F" xml:space="preserve">// Create zoom factor object
+TZoomFactor devicemap(iCoeEnv-&gt;ScreenDevice());
+    
+// Set zoom factor at 1 to 1
+devicemap.SetZoomFactor(TZoomFactor::EZoomOneToOne);
+    
+// Set zoom factor at 200%
+devicemap.SetZoomFactor(TZoomFactor::EZoomOneToOne*2);</codeblock> </section> <section><title>Twips to pixels conversions using a zoom factor</title> <ol id="GUID-C7A9D77A-4074-513E-96C8-64771CD9DBE9"><li id="GUID-08C11537-63B4-5CC6-AA18-EFF020908395"><p>Define a rectangle in twips </p> </li> <li id="GUID-D91476D5-2244-5AA3-8536-C78A4A6DD4B5"><p>Use the device map’s conversion function <codeph>TwipsToPixels()</codeph> to convert the rectangles co-ordinates into pixels </p> </li> <li id="GUID-2CDC8C9B-D04C-5DF7-BD15-0E6C03E46F35"><p>Draw the rectangle using <codeph>DrawRect()</codeph> in the graphics context <codeph>gc</codeph>  </p> </li> </ol> <codeblock id="GUID-FCC32729-1CC6-526B-AF25-2EB75916FD9D" xml:space="preserve">// set up example box in twips
+TRect boxInTwips(TPoint(0,0),TPoint(500,300));
+     
+// convert rectangle co-ordinates into pixels
+TRect boxInPixels = deviceMap-&gt;TwipsToPixels(boxInTwips);
+gc.DrawRect(boxInPixels);</codeblock> <p> <b>Note</b>: The actual conversion that <codeph>TwipsToPixels()</codeph> applies is dependent on the device map’s zoom factor setting, and the twips to pixels mapping of the graphics device which the device map is associated with. </p> </section> <section><title>Drawing text using a zoom factor</title> <p>This fragment of code shows how to draw text using a zoom factor. </p> <ol id="GUID-EF916973-472C-5CF8-8DA7-0C57811C610E"><li id="GUID-BD44D220-1803-5DE4-AEB2-7384B7AEAE11"><p>Create a font specification (in this case for a 10 point Times New Roman font) </p> </li> <li id="GUID-6F7C648C-C126-5E5D-BCDE-EEB700556BA2"><p>Find the nearest device font, using <codeph>MGraphicsDeviceMap::GetNearestFontInTwips()</codeph>, to that specified. This takes into account the map’s zoom factor and twips to pixel mapping. </p> </li> <li id="GUID-C0A1C89C-5061-5D64-88AC-010C942E978D"><p>Use this device font to draw the text using <codeph>CGraphicsContext::DrawText()</codeph>  </p> </li> <li id="GUID-531E3DEF-30EA-5526-854B-9848909950A3"><p>Discard the font using <codeph>CGraphicsContext::DiscardFont()</codeph> and <codeph>MGraphicsDeviceMap::ReleaseFont()</codeph>  </p> </li> </ol> <codeblock id="GUID-9EAEF125-A4BE-5157-9DE9-2A2C458AA9B2" xml:space="preserve">// set up absolute font-spec and text box for 200 twip Roman font
+TFontSpec fontSpec(_L("Times New Roman"),200);
+    
+// find the nearest font to the specified one
+CFont* screenFont;
+deviceMap-&gt;GetNearestFontInTwips(screenFont,fontSpec);
+    
+// use it for this graphics context
+gc.UseFont(screenFont);
+gc.DrawText(_L("some example text"),TPoint(20,20));
+    
+// discard and release font
+gc.DiscardFont();
+deviceMap-&gt;ReleaseFont(screenFont);</codeblock> <p> <b>Note</b>: Due to the overhead of running <codeph>GetNearestFontInTwips()</codeph>, the caller would normally cache any fonts provided by it at the start of an application and after each change to the zoom factor, and only release them when the application is exited or the zoom factor changed. </p> </section> <section><title>Zooming bitmaps</title> <p>You can draw a bitmap to the graphics device, scaled according to the current zoom factor. </p> <ol id="GUID-8D34A01B-6AFC-50AE-8361-F4DACDF5F996"><li id="GUID-8DEB5B9C-9645-5E87-8246-3DAF8E7A8ABB"><p>Define a rectangle in twips </p> </li> <li id="GUID-655DAAF4-D6F9-5DDD-8B6F-532BC8F67AE3"><p>Use the device map’s conversion function <codeph>TwipsToPixels()</codeph> to convert the rectangle's co-ordinates into pixels according to the current zoom factor. </p> </li> <li id="GUID-30E099EC-7864-5836-800B-BE06998AED0F"><p>Draw the bitmap using <codeph>DrawBitmap()</codeph> stretched/compressed into the rectangle. </p> </li> </ol> <codeblock id="GUID-CE18C461-47D0-587F-9DE0-2F7D200AB261" xml:space="preserve">// set up rectangle for bitmap to be stretched into
+TRect bitmapRectInTwips(TPoint(0,0),TPoint(500,500));
+TRect bitmapRectInPixels = iLeftMap-&gt;TwipsToPixels(bitmapRectInTwips);
+bitmapRectInPixels.iTl.iY+=125;
+bitmapRectInPixels.iBr.iY+=125;
+bitmapRectInPixels.iTl.iX+=100;
+bitmapRectInPixels.iBr.iX+=100;
+    
+// draw the bitmap, stretched into the rectangle
+SystemGc.DrawBitmap(bitmapRectInPixels, iBitmap);</codeblock> </section> </conbody><related-links><link href="GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita"><linktext>Twip to Pixel Mapping</linktext> </link> <link href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita"><linktext>Graphics Device Interface Tutorials</linktext> </link> <link href="GUID-E9FF94D2-AFFD-54A4-A6C2-00929BC70DB0.dita"><linktext>Bitmaps</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6AE6AEA2-7330-433B-9994-3BC2EC5ECD38_d0e60516_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6AE6AEA2-7330-433B-9994-3BC2EC5ECD38_d0e60608_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6B50C0B9-C3CB-4524-909D-7FD096A3F894.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-6B50C0B9-C3CB-4524-909D-7FD096A3F894" xml:lang="en"><title>Menu
+list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Menu lists are used to select one item from a list and do nothing else;
+the Options command is not available when a menu list is being browsed (the
+Options menu itself is a menu list).</p>
+<p>If a high-priority event, such as an incoming call, occurs when a menu
+list is open, the list is cancelled and the new event takes control. These
+lists are often displayed inside a pop-up window.</p>
+<p>The default keypad functions in a menu list are the following:</p>
+<table id="GUID-00EF343D-893A-4EDB-987A-DB5FD2D72F40"><title>Default key events
+in a menu list</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Key</entry>
+<entry>Action</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Arrow up / down</p></entry>
+<entry><p>Moves the focus in the list.</p></entry>
+</row>
+<row>
+<entry><p>Arrow left / right</p></entry>
+<entry><p>Ignored (unless there is a submenu; see <xref href="GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita">Submenus</xref>).</p></entry>
+</row>
+<row>
+<entry><p>Selection key</p></entry>
+<entry><p>Selects the item, does the associated function.</p></entry>
+</row>
+<row>
+<entry><p>Left softkey (Select)</p></entry>
+<entry><p>Selects the item, does the associated function.</p></entry>
+</row>
+<row>
+<entry><p>Right softkey (Cancel)</p></entry>
+<entry><p>Dismisses the menu; returns to the state preceding the opening of
+the menu.</p></entry>
+</row>
+<row>
+<entry><p>Call creation key, Edit key</p></entry>
+<entry><p>Ignored.</p></entry>
+</row>
+<row>
+<entry><p>Numeric keypad</p></entry>
+<entry><p>Ignored.</p></entry>
+</row>
+<row>
+<entry><p>Clear key</p></entry>
+<entry><p>Ignored.</p></entry>
+</row>
+<row>
+<entry><p>Other keys</p></entry>
+<entry><p>Dismiss the menu and do the default action of the key.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<fig id="GUID-C7FB4CE3-C252-4BBC-8521-CE23322BDF04">
+<title>Options menu</title>
+<image href="GUID-C0C1E654-8A7B-4745-A2A9-252B8E57B0E2_d0e54910_href.png" scale="40" placement="inline"></image>
+</fig>
+<section><title>Using menu lists in C++
+applications</title><p>The API to use for menu lists is the Lists
+API. For implementation information, see Using
+the Lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6B6532D0-6346-51E4-BC7A-6E8487EF8BA1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6B6532D0-6346-51E4-BC7A-6E8487EF8BA1" xml:lang="en"><title>Date
+and Time Handling Example Code</title><shortdesc>Example that explain how to use the Date and Time functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4FD1581B-E863-5812-860E-A88C46D15543"><title>Basics: general
+date and time handling</title> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e11a2614-5498-4421-8176-f9a8ea0a7418.zip" scope="external">Basics.zip</xref>.</p><p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e11a2614-5498-4421-8176-f9a8ea0a7418.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Description</b> </p> <p>This example
+demonstrates date and time handling. </p><p><b>Class summary</b></p><p> <xref href="GUID-A2D3BA72-9B27-3BFF-950A-D7E3B2004821.dita"><apiname>TTime </apiname></xref>  <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime </apiname></xref><xref href="GUID-883EEDCA-179C-38C3-90DB-ABF84E99351E.dita"><apiname>TTimeIntervalMonths </apiname></xref>  <xref href="GUID-F19F1E17-7362-3C0A-A339-C9E7D3872C5D.dita"><apiname>TTimeIntervalSeconds </apiname></xref><xref href="GUID-B7D6F874-1ABD-3AC6-9329-19DC54C12F18.dita"><apiname>TTimeIntervalMicroSeconds</apiname></xref>  </p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7" xml:lang="en"><title>httpexampleclient:
+A Simple HTTP Client Example</title><shortdesc>This example shows how to use HTTP APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-42E724C9-4C84-5AFF-B9F7-23BAE90CE48F"><title>Purpose</title> <p>This
+example demonstrates the HTTP API. For more information about this example,
+see <xref href="GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9.dita">Simple Client Session
+guide</xref>, which is based around code snippets taken from the example.
+Also see the <xref href="GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita">HTTP Overview</xref>. </p> </section>
+<section id="GUID-4D40BEB0-1C5B-538F-91A7-29A3D7D6D16B"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f8185804-e4a0-47b3-9f66-e531d88ee9ce.zip" scope="external">Httpexampleclient.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f8185804-e4a0-47b3-9f66-e531d88ee9ce.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-94C5014D-721C-4BD8-856A-C4B4E0F11C72"><title>Class Summary</title><p> <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref></p><p>  <xref href="GUID-F34F7481-00CF-3A1B-8D45-D053AD6769A8.dita"><apiname>MHTTPTransactionCallback</apiname></xref></p><p><xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita"><apiname> RHTTPTransaction </apiname></xref></p><p><xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref></p><p><xref href="GUID-57216A14-97B8-324C-BB00-63CA880CC779.dita"><apiname>MHTTPFilterBase</apiname></xref></p><p><xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita"><apiname>RHTTPHeaders</apiname></xref></p><p><xref href="GUID-8D952FEE-0EA0-3DBC-AADB-6F4200B82687.dita"><apiname>RHTTPRequest</apiname></xref></p><p><xref href="GUID-BA9EA976-E4CF-37D7-9E73-420A6D50203F.dita"><apiname>RHTTPResponse</apiname></xref></p><p><xref href="GUID-DEE8279A-3BEC-316F-97B8-6C49FEDBD5B3.dita"><apiname>THTTPHdrVal</apiname></xref></p><p><xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita"><apiname>MHTTPAuthenticationCallback</apiname></xref></p><p><xref href="GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5.dita"><apiname>MHTTPDataSupplier</apiname></xref></p></section>
+<section id="GUID-F03E3A90-59C0-50F6-B1CA-27E86A8B1934"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-50180DE5-DAE7-5C1A-A59C-01A9CC76DADE"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-7F23E0FC-6A18-58BF-B066-D50333284761"><p>For the emulator, the
+example builds an executable called <filepath>httpexampleclient.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9.dita"><linktext>Simple Client
+Session guide</linktext></link>
+<link href="GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita"><linktext>HTTP Overview</linktext>
+</link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115" xml:lang="en"><title>System
+Model Relationship</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Messaging subsystem resides between Messaging applications and the
+lower level subsystems that Messaging subsystem uses for storage and transmission
+of messages. </p>
+<p>See the latest version of the public <xref href="http://developer.symbian.org/wiki/index.php/Symbian_System_Model" scope="external">System Model</xref> from the Symbian foundation.</p>
+<fig id="GUID-763A4790-2283-5D9A-8812-CB65C6E158C7">
+<title>           System model relationship          </title>
+<image href="GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e251555_href.png" placement="inline"/>
+</fig>
+<dl>
+<dlentry>
+<dt>Message Viewers</dt>
+<dd><p>Application for viewing a message. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Message Centre</dt>
+<dd><p>Application that displays list views of messages to the user, allowing
+the user to perform operations such as copying messages, sending messages,
+creating new messages and so on. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Message Editors</dt>
+<dd><p>Application for creating or editing a message. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>SendAs Clients</dt>
+<dd><p>Messaging clients, such as Client MTM, client applications that implement
+SendAs. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>EStore</dt>
+<dd><p>Symbian platform component that provides stream based storage. It provides
+the framework classes for the Message Store files. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>File system</dt>
+<dd><p>A set of conventions used to access a drive, and the software that
+implements those conventions. Local, ROM and installable file systems are
+supported. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>SQL</dt>
+<dd><p>A component that provides an SQL database service. Messaging subsystem
+stores each <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> (index entry) of the index file as
+a row of an SQL table in the SQL database. For more information on how Messaging
+subsystem has implemented SQL, see <xref href="GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita#GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107/GUID-10265557-F31B-50B3-A955-A548A5A78D7B">Operating
+with the SQL database</xref>. </p> </dd>
+</dlentry>
+</dl>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e313129_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e219996_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6BD23C4F-CBF7-584D-81D9-EB8D14DC3081.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6BD23C4F-CBF7-584D-81D9-EB8D14DC3081" xml:lang="en"><title>Security Tools Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3" xml:lang="en"><title>Architecture</title><shortdesc>This section describes the architectural relationships of the telephony
+API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The telephony API for applications provides access to the basic telephony
+functionality for applications. The telephony API for applications is a subset
+of the multimode telephony API that provides a rich set of telephony applications
+to the handset manufacturers. </p>
+<section id="GUID-7EDF535A-3E6D-4092-B036-2A01C52098DA"><title>Overview</title> <p>The API is implemented as static linked
+library <filepath>etel3rdparty.dll</filepath>. The library must be linked
+in the client applications to access the telephony functions. The client applications
+access the functions with the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> class. </p> <fig id="GUID-E83AD33D-9520-57F1-AEDB-6142D67267AB">
+<title>              Telephony API for Applications - Block Diagram      
+     </title>
+<image href="GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e33692_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-88403933-3F71-4BA1-911B-D984A25A7258"><title>Description</title> <p>The <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> class
+provides a limited set of telephony functions to client applications. The <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> is built on top of the core, multimode
+and packet data telephony APIs. The <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> class
+provides client applications with the functions to : </p> <ul>
+<li id="GUID-22A18771-C1E9-57A7-B221-C6D621E1410E"><p>dial a call </p> </li>
+<li id="GUID-DC0239F0-06D4-5B4B-A830-E6C62DF5A8CB"><p>answer a call </p> </li>
+<li id="GUID-A42C48C2-82B8-594F-BB69-170AAF9B2EA1"><p>get the capabilities
+of the line, the call and the network </p> </li>
+<li id="GUID-38EC4FDC-825C-5513-9C5E-EF5C9F27EBEB"><p>get information about
+the basic and supplementary services of the network </p> </li>
+</ul> <p>The <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> class translates
+the client API request into the internal commands and forwards them to the
+telephony server. The telephony server forwards the command requests to the
+telephony server plug-in (TSY). The TSY is developed and customised by the
+handset manufacturers. The telephony functions available to client applications
+depend on the functions implemented in the TSY. </p> </section>
+<section id="GUID-EDB80144-9C59-4C78-948F-A158F3FD0033"><title>Platform security</title> <p>The DLL for the telephony API
+for applications, <i>etel3rdparty.dll </i> is protected with the <codeph>ALL
+-TCB           </codeph> capability. According to the Symbian <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">Platform
+security</xref> model the client applications must have the minimum capability
+of <codeph>ALL -TCB</codeph> to use the DLL. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6BDF4599-B89B-5C4B-9795-B4C5C5F5CB5B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6BDF4599-B89B-5C4B-9795-B4C5C5F5CB5B"><title>SMS Stack Configuration</title><shortdesc>The SMS stack derives settings from the Comms database. The settings in the the SMS protocol ESK file can also be configured. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The standard Symbian OS implementation has one SMS stack. The SMS Stack derives some settings from the Comms Database. For more information about the Comms Database, see the Comms Database <xref href="GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita">Reference</xref>. The SMS stack also has some settings available in the SMS protocol ESK file. For more information about the ESK file settings used by SMS, see the the <xref href="GUID-697087D6-C029-51E8-8722-9E2584420276.dita">SMS Stack Architecture</xref>. </p> </conbody><related-links><link href="GUID-83E4F989-0B73-5E83-8547-AB3070492CBF.dita"><linktext>What is the Comms Database?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6BE03135-6192-5520-AE8F-80BDB3187259.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6BE03135-6192-5520-AE8F-80BDB3187259" xml:lang="en"><title>User
+Prompt Service</title><shortdesc>According to the platform security model of Symbian platform, any
+application connecting to a network must have the <codeph>NetworkServices</codeph> capability.
+All applications that have the <codeph>Networking service</codeph> capability
+must be signed. The Comms User Prompt Service (UPS) enables even the unsigned
+applications to access the network if user authorisation is provided. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Any application that requires network access uses the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Socket
+Server</xref> API with the help of <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> or <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>.
+The platform security model checks the capability of the client application
+to access the network. The comms user prompt service is used to notify the
+user about the network access. The UPS feature enables applications without <codeph>NetworkServices</codeph> capability
+to access the network if the user authorises the connection. </p>
+<p>The target audience of this document is the device creators who write MCPR
+plug-ins. Symbian provides a reference plug-in for the device creators, which
+can be modified for customisation. The device creators implementing the comms
+user prompt service must have knowledge of the Comms Framework, for more information
+see Communications Framework. </p>
+<section><title> User prompt</title> <p>When comms UPS is implemented, the
+user is requested to authorise a network connection, when an application opens
+a new connection or when it attaches to an existing connection. The UPS prompts
+the user when an application tries to send data through a socket which is
+not explicitly associated with an authorised network connection. The IP network
+user prompt is implemented as an MCPR plug-in. The plug-in will invoke the
+UPS server. The UPS functionality can be configured by Symbian developers. </p> </section>
+<section><title>UPS server</title> <p>The UPS server generates the user prompts
+and responds back to the MCPR with the user selection. The dialog creator,
+a UPS plug-in, formats and streams the dialog box to the UPS server. The UPS
+server interacts with the User Interface (UI) and responds back to the MCPR. </p> <p>The
+UPS server is also responsible for checking the policy files which has the
+details of the process and the available options. </p> </section>
+<section><title>UPS integrations</title><p><b>Messaging server </b> </p><p>The
+Service UIDs used by the messaging server are:  </p><p><codeph>const TUid
+KUidPOPService = {0x2000BB68};</codeph></p><p><codeph>const TUid KUidIMAPService
+= {0x2000BB69};</codeph></p><p><codeph>const TUid KUidSMTPService = {0x2000BB6A}; </codeph></p><p><codeph>const
+TUid KUidSendAs2Service = {0x2000BB6B}; </codeph></p><p><codeph>const TUid
+KUidSMSService = {0x2000BB6C}; </codeph></p></section>
+<section><title>Session life time</title> <p>When the comms user prompt service
+component is configured for Session life time, user responds to a UPS dialog
+prompt by authorising the request with either '<codeph>Session Yes</codeph>'
+or '<codeph>Always</codeph>' response. Any other applications running in the
+same process of the user authorised session will be granted network access
+for the duration of the process. </p> </section>
+<section><title>Network life time</title> <p>When the comms user
+prompt service component is configured for Network session life time, user
+responds to a UPS dialog prompt by authorising the request with either '<codeph>Session
+Yes</codeph>' or '<codeph>Always</codeph>' response. Any other applications
+running in the same process of the user authorised application will be granted
+the network access. The UPS response for a particular process is valid for
+the duration of the network connection associated with the process. </p> </section>
+<section><title>See also</title> <p><xref href="GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99.dita">Writing
+the UPS Policy File</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6BF09365-09D7-5596-B802-1BE1757F51F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6BF09365-09D7-5596-B802-1BE1757F51F6" xml:lang="en"><title>Streaming</title><shortdesc>Provides various streams and stream operations such as read, write, internalize, and externalize. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the material in this section to learn more about streams. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8" xml:lang="en"><title>Variant
+configuration file syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>A variant configuration file (<filepath>.var</filepath>)
+defines settings that are specific to a variant. It is used to modify certain
+aspects of an existing build platform. </p> </section>
+<section><title>Syntax</title> <p> <varname>KEYWORD</varname> [<varname>OPERATION</varname>]
+[<varname>VALUE</varname>] </p> <p>A summary of keywords, operations and values
+is given below: </p> <p><b>Keyword</b> </p> <p>Possible keywords are as follows: </p> <table id="GUID-D6F58101-A22F-5377-9190-B8E609DE35ED">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>VARIANT</codeph>  </p> </entry>
+<entry><p>Indicates that <varname>VALUE</varname> is the name of the variant
+configuration. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>VIRTUAL</codeph>  </p> </entry>
+<entry><p>Indicates that the variant is meant only for grouping variants and
+not to be used as a build configuration. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>EXTENDS</codeph>  </p> </entry>
+<entry><p>Indicates that the variant extends an existing variant configuration. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>VARIANT_HRH</codeph>  </p> </entry>
+<entry><p>Specifies the pre-included header (<filepath>.hrh</filepath>) file
+that defines feature macros. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BUILD_INCLUDE</codeph>  </p> </entry>
+<entry><p>Specifies the location of the files to be included when building
+the binary. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ROM_INCLUDE</codeph>  </p> </entry>
+<entry><p>Specifies the location of the files to be included when building
+the ROM image containing the variant binary. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Note</b>: If VARIANT_HRH keyword is not present, then <codeph>/epoc32/include/variant/name.hrh</codeph> is
+used. </p> <p><b>operation</b> </p> <p>The possible operations are <codeph>set</codeph>, <codeph>append</codeph> and <codeph>prepend</codeph>.
+These operations provide the flexibility of extending the existing include
+paths within the <filepath>.var</filepath> file. The operations are applicable
+only to the <codeph>BUILD_INCLUDE</codeph> and <codeph>ROM_INCLUDE</codeph> keywords. </p> <p> <b>Example</b>  </p> <codeblock id="GUID-3D6B0229-A64F-52BB-9BDF-10ABDF99F11E" xml:space="preserve"># default.var
+VARIANT default
+BUILD_INCLUDE set         /epoc32/include
+BUILD_INCLUDE append    /epoc32/include/variant
+ROM_INCLUDE set        /epoc32/rom/include</codeblock> <codeblock id="GUID-91F8392C-C822-5829-BA42-FB8F9AB6AECD" xml:space="preserve"># phone.var
+VARIANT phone
+EXTENDS default
+BUILD_INCLUDE append    /epoc32/include/variant/phone
+ROM_INCLUDE prepend    /epoc32/rom/phone</codeblock> <p>For the variant <codeph>phone</codeph> the
+include lists will be: </p> <codeblock id="GUID-72B415A7-84D6-5818-9E64-B736D505E873" xml:space="preserve">BUILD (/epoc32/include, /epoc32/include/variant, /epoc32/include/variant/phone)
+ROM (/epoc32/rom/phone, /epoc32/rom/include)</codeblock> <p><b>value</b> </p><p>Value
+can be a variant name, a file name or a directory name. for example, myphone
+or /epoc32/tools/variant/name.var.  </p><ul>
+<li><p>Use '/' as the path separator between files and directories.</p></li>
+<li><p>Begin all paths with '/' implying that they are relative to EPOCROOT.</p></li>
+</ul> <p><b>Example</b> </p> <p>An example of a variant: </p> <codeblock id="GUID-50190D57-7C49-5697-A858-7626D59B1967-GENID-1-7-1-1-7-1-11-1-2-2-20" xml:space="preserve">VARIANT        name
+VIRTUAL
+EXTENDS        parent
+VARIANT_HRH    /epoc32/include/variant/something.hrh
+BUILD_INCLUDE    set        directoryA
+BUILD_INCLUDE    append        directoryB
+BUILD_INCLUDE    prepend    directoryC
+ROM_INCLUDE    set        directoryD
+ROM_INCLUDE    append        directoryE
+ROM_INCLUDE    prepend    directoryF
+
+</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-84B8E804-46B8-5422-9CFE-048C9EF0179B-GENID-1-7-1-1-7-1-11-1-2-2-22-1"><p>All <filepath>.var</filepath> files
+must exist in <filepath>/epoc32/tools</filepath> <filepath>/</filepath> <varname>variant</varname>. </p> </li>
+<li id="GUID-CDB78FAD-58A6-5464-ACC6-EFBCEDFD5092-GENID-1-7-1-1-7-1-11-1-2-2-22-2"><p>A default variant configuration
+file (<filepath>default.var</filepath>) must exist in <filepath>/epoc32/tools/variant/</filepath>. </p> </li>
+<li id="GUID-7216C624-7E28-52A5-BAA7-BB897286AE51-GENID-1-7-1-1-7-1-11-1-2-2-22-3"><p>The name of the variant
+configuration file (.var) must be same as the variant name. For example, if
+the variant name is <b>myvar</b>, then the variant configuration file must
+be named as <filepath>myvar.var</filepath>. </p> </li>
+<li id="GUID-CADF1047-C92E-5A8C-81FB-64CAA19380B8-GENID-1-7-1-1-7-1-11-1-2-2-22-4"><p>Each variant must have
+a default <filepath>&lt;variant_name&gt;.hrh</filepath> file at <filepath>/epoc32/include/variant/</filepath>.
+If you want to use any other <filepath>.hrh</filepath> file under EPOCROOT,
+use the <codeph>VARIANT_HRH</codeph> keyword to specify its name along with
+the relative path. </p> </li>
+<li id="GUID-FEEDF642-117E-5E4F-8CD4-B6305B977204-GENID-1-7-1-1-7-1-11-1-2-2-22-5"><p>A default variant cannot
+be <codeph>VIRTUAL</codeph>. </p> </li>
+</ul> </section>
+<section><title>Example</title> <p>An example of a variant: </p> <codeblock id="GUID-50190D57-7C49-5697-A858-7626D59B1967-GENID-1-7-1-1-7-1-11-1-2-3-3" xml:space="preserve">VARIANT        name
+VIRTUAL
+EXTENDS        parent
+VARIANT_HRH    /epoc32/include/variant/something.hrh
+BUILD_INCLUDE    set        directoryA
+BUILD_INCLUDE    append        directoryB
+BUILD_INCLUDE    prepend    directoryC
+ROM_INCLUDE    set        directoryD
+ROM_INCLUDE    append        directoryE
+ROM_INCLUDE    prepend    directoryF
+
+</codeblock> </section>
+<section><title>Notes</title> <ul>
+<li id="GUID-84B8E804-46B8-5422-9CFE-048C9EF0179B-GENID-1-7-1-1-7-1-11-1-2-4-2-1"><p>All <filepath>.var</filepath> files
+must exist in <filepath>/epoc32/tools</filepath> <filepath>/</filepath> <varname>variant</varname>. </p> </li>
+<li id="GUID-CDB78FAD-58A6-5464-ACC6-EFBCEDFD5092-GENID-1-7-1-1-7-1-11-1-2-4-2-2"><p>A default variant configuration
+file (<filepath>default.var</filepath>) must exist in <filepath>/epoc32/tools/variant/</filepath>. </p> </li>
+<li id="GUID-7216C624-7E28-52A5-BAA7-BB897286AE51-GENID-1-7-1-1-7-1-11-1-2-4-2-3"><p>The name of the variant
+configuration file (.var) must be same as the variant name. For example, if
+the variant name is <b>myvar</b>, then the variant configuration file must
+be named as <filepath>myvar.var</filepath>. </p> </li>
+<li id="GUID-CADF1047-C92E-5A8C-81FB-64CAA19380B8-GENID-1-7-1-1-7-1-11-1-2-4-2-4"><p>Each variant must have
+a default <filepath>&lt;variant_name&gt;.hrh</filepath> file at <filepath>/epoc32/include/variant/</filepath>.
+If you want to use any other <filepath>.hrh</filepath> file under EPOCROOT,
+use the <codeph>VARIANT_HRH</codeph> keyword to specify its name along with
+the relative path. </p> </li>
+<li id="GUID-FEEDF642-117E-5E4F-8CD4-B6305B977204-GENID-1-7-1-1-7-1-11-1-2-4-2-5"><p>A default variant cannot
+be <codeph>VIRTUAL</codeph>. </p> </li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita"><linktext>How to build
+feature based variants</linktext></link>
+<link href="GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita"><linktext>How to build
+ROMs with variants</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C07F513-66D5-5901-94A6-9ADA16987225.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6C07F513-66D5-5901-94A6-9ADA16987225" xml:lang="en"><title>Key
+comparison</title><shortdesc>This document describes how text and descriptor keys can be compared.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Text and descriptor keys can be compared in one of three ways:</p>
+<ul>
+<li id="GUID-7AE9A7C2-A8DE-5743-BBE9-FEF0175F12C5"><p>keys are folded for
+the purpose of comparison</p> </li>
+<li id="GUID-BD40774A-4B66-5498-B23C-CC16A3AA5B32"><p>keys are compared using
+the collation rules for the current locale</p> </li>
+<li id="GUID-D5666F26-DDAC-5703-84D1-FCFF2A59E8E7"><p>keys are compared normally.</p> </li>
+</ul>
+<p>Numeric keys are compared arithmetically in the usual way.</p>
+<section id="GUID-00C4EF8F-0ABF-44D2-AFE8-64A1FBA091E9"><title>See also</title> <p><xref href="GUID-C501E703-E39D-598C-B962-7A32AC9091DD.dita">Folding
+and collation</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4" xml:lang="en"><title>The UI Control Framework (CONE)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b> Purpose</b>  </p> <p>Let's get the important stuff out of the way first: CONE is an abbreviation of <b>CON</b> trol <b>E</b> nvironment. It is the internal Symbian component name for the UI Control Framework. </p> <p>CONE provides: </p> <ul><li id="GUID-2F913264-6144-5E40-9755-6495F2AE6857"><p>a framework for creating user interface controls, </p> </li> <li id="GUID-4B06EEAA-8FC8-52BE-BE08-9DFDEC604073"><p>a framework for applications to handle user interface events, </p> </li> <li id="GUID-6B47D7DE-589B-525A-B6D2-FF97BC29CFF8"><p>and an environment in which to access Window Server functionality. </p> </li> </ul> <p> <b>Contents</b>  </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C1D941B-ADD1-5BD3-9045-53B66253316B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6C1D941B-ADD1-5BD3-9045-53B66253316B"><title>epocallowdlldata</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>epocallowdlldata</codeph> </p> <p> <codeph>epocallowdlldata</codeph> statement allows you to use global writeable static data in DLLs. </p> <p>See <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static data</xref> for issues with using the writeable static data. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C1E4B3D-0FBF-5CEA-9A30-B4C5CB4CAC3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6C1E4B3D-0FBF-5CEA-9A30-B4C5CB4CAC3E" xml:lang="en"><title>Coding
+literal descriptors</title><shortdesc>Literal descriptors must be defined in their own C++ statement
+and the resulting constant used wherever it is required.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> Literal descriptors cannot be embedded in expressions because they do
+not create temporary objects.</p>
+<p>Literal objects can be declared safely in header files:</p>
+<ul>
+<li id="GUID-1EEAF77A-63B1-5191-95D7-6F24FAC6B94C"><p>without requiring writable
+data</p> </li>
+<li id="GUID-BED08A91-2EAF-53CB-9B23-8F63D5658303"><p>without creating a copy
+of the data in every module that includes the header.</p> </li>
+</ul>
+<p>Literals can be defined at file-scope, including in header files, in which
+case they are visible to any code that follows. They can also be declared
+local to the function which uses them. However, there are a couple of caveats
+with defining them at function scope:</p>
+<ul>
+<li id="GUID-9193E180-8358-5BB9-8A76-5EAB4753FB4E"><p>For very short strings,
+of the order of 3 ASCII characters or 1 UNICODE character, it is more efficient
+to declare the literals at file scope.</p> </li>
+<li id="GUID-CAEF761B-7E05-58C7-968E-FF9C31413FFB"><p>Literal descriptors
+defined in inline functions are laid down in <i>every single</i> compilation
+module that includes the header file.</p> </li>
+</ul>
+<p>Thus, if the descriptor is short or used only in an inline function, it
+is better to define it at file scope with a suitably distinct name.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54" xml:lang="en"><title>Unified Keystore
+Tutorials</title><shortdesc>These tutorials explain the tasks that can be performed
+by client applications using the services provided by the unified keystore. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C7B7778-9B2E-5D8C-B2D8-74AC1DEEDF61.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6C7B7778-9B2E-5D8C-B2D8-74AC1DEEDF61" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the concepts of the Serial Communications Server. </p> <p>The Serial Communications Server provides a virtualisation layer over the serial device drivers. This virtualisation layer means that serial devices can be shared between different processes. The virtualisation layer also allows developers to write <i>software serial ports</i>. These are known as CSYs and are generally networking protocol stacks that implement a serial interface. In this context a serial interface means the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref> API. For example, <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-B0B6BC5D-4BCD-3A74-9E1C-17BA58BB7B33"><apiname>RComm::Read()</apiname></xref>, <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-27B1F841-8478-33E0-A168-11DC468183C0"><apiname>RComm::Write()</apiname></xref> and <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-9791155C-BD13-3B3A-BB0A-C1F5BC9B4A38"><apiname>RComm::Signal()</apiname></xref>. </p> <p>Serial port performance is determined by the APIs used and the configuration for the ports. A client application must consider port configuration and handshaking in order to get optimal performance. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C"><title>Controlling Pre-Image Capture </title><shortdesc>This document explains how to configure the camera before using it for still image capture. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The PreImageCaptureControl API allows the client to retrieve the following information: </p> <ul><li id="GUID-2616F9E0-C6C5-5C1F-9060-28755FAA2A6F"><p>Direct snapshot support </p> </li> <li id="GUID-16A74E2A-31AB-5C64-98B2-7328D4E374EF"><p>Embedded still capture setting support </p> </li> <li id="GUID-7F870485-D5E9-5667-80AC-7C95588F5893"><p>Direct saving support </p> </li> <li id="GUID-F6BDB588-3003-5CD0-9232-B39CC8218F4D"><p>Image format and pixel aspect ratio supported for a given resolution </p> </li> <li id="GUID-D2BDBB39-7726-5762-8F9D-E68D7D19B2DB"><p>Maximum memory size setting support </p> </li> <li id="GUID-93CCFA89-2C29-5029-BD4F-A36650C191F6"><p>Maximum memory size currently used in camera </p> </li> </ul> <p>This new API creates a new set of camera configuration with improved speed. The new camera configuration is created, when there is an on-going still image capture based on previous configuration. </p> <p><b>Introduction</b> </p> <p>This classes provide the necessary framework to control the image operations and settings prior to image capture. An observer class is associated with this class so that client may be notified of various relevant activities. This API provides replacement for few image capture related methods in class <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita"><apiname>Ccamera</apiname></xref>. </p> <p><b>Required Background</b> </p> <p>This is an extension API associated with <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita"><apiname>Ccamera</apiname></xref> class. To create an object of the extension API facade class, a client application would need to provide a valid <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita"><apiname>Ccamera</apiname></xref> reference as a parameter for the factory method. </p> <p>Clients use <xref href="GUID-94C66CB9-328A-3275-B5A9-198EC6D0DD30.dita"><apiname>New2L</apiname></xref> or <xref href="GUID-14200C39-1435-31B0-9768-363BD3D4331E.dita"><apiname>NewDuplicate2L</apiname></xref> method to create camera object. So, clients that uses <xref href="GUID-E6F013A6-6413-3691-A70D-0289916ACD8A.dita"><apiname>NewL</apiname></xref> or <xref href="GUID-0DB8D81E-AEC1-364B-B404-996B35B449FD.dita"><apiname>NewDuplicateL</apiname></xref> will not be able to create instance of this extension. This prepares the clients to receive unrecognized enum or ids that can be included in future. </p> </section> <section id="GUID-3905D703-E2DD-50B4-A48C-DE84E504B5FB"><title>Using PreImageCaptureControl</title> <p>Licensee should provide concrete implementation for <xref href="GUID-AB548D66-4418-30B3-B81D-619CED81EBBA.dita"><apiname>MCameraPreImageCaptureControl</apiname></xref> class. Configuring the camera before using it for still image capture includes the following steps: </p> <ol id="GUID-2C0AEE23-FF96-5A62-A9CB-8DA762FFAD8B"><li id="GUID-ECF691D5-3036-5F12-B4F2-2BA37627A262"><p>Use <xref href="GUID-9435F878-B639-3C9E-905A-AFF5C7A30F20.dita#GUID-9435F878-B639-3C9E-905A-AFF5C7A30F20/GUID-7F386328-78F2-33AE-87D8-FFCD2AAEFB20"><apiname>CcameraPreImageCaptureControl::NewL()</apiname></xref> factory method to create a class pointer. </p> <p>This maps the exported call to an internal object of class <xref href="GUID-90E10EF6-5B7E-3A0B-B1FA-293D19A2B346.dita"><apiname>CCameraPreImageCaptureControl</apiname></xref> that provides the functionality. </p> </li> <li id="GUID-94A29911-4762-5673-8805-70273331F2DF"><p>Get this pointer using a call to <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-1F537D7D-5451-3834-869D-3092A4773B83"><apiname>Ccamera::CustomInterface()</apiname></xref> with UID value <xref href="GUID-5F12DF77-CD66-3445-ACF5-FD3FF815FFF6.dita"><apiname>KECamMCameraPreImageCaptureControlUid</apiname></xref>. </p> </li> <li id="GUID-3F8D8B5D-2E66-5102-B38A-971A06B009CF"><p>Use pointer to the <xref href="GUID-AB548D66-4418-30B3-B81D-619CED81EBBA.dita"><apiname>MCameraPreImageCaptureControl</apiname></xref> derived class to initialize <xref href="GUID-90E10EF6-5B7E-3A0B-B1FA-293D19A2B346.dita#GUID-90E10EF6-5B7E-3A0B-B1FA-293D19A2B346/GUID-A4766124-D4BC-3086-8511-2D3ABC817FAA"><apiname>CCameraPreImageCaptureControl::iImpl</apiname></xref> during the second phase construction of the class <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58"><apiname>CCamera::CCameraPreImageCaptureControl</apiname></xref>. </p> </li> <li id="GUID-E6406691-7048-5878-8E28-F613AC43C195"><p>Use <xref href="GUID-CC3E371F-3037-3F7C-ACFF-DCC24972F0B7.dita"><apiname>MpreImageCaptureControlObserver</apiname></xref> that contains call-back to provide instance of image capture class object after successfully preparing the image parameters. </p> </li> <li id="GUID-36D7701C-E01A-5CED-9B89-700599B4F448"><p>Check if camera can provide capture event notification to the client using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-34F7459D-BC5A-3EE3-8344-F38A53065A37"><apiname>CCamera::CCameraPreImageCaptureControl::GetCaptureEventSupportInfoL</apiname></xref> method. If capture event notification is supported, ECam implementation will use <xref href="GUID-897443E9-1596-3488-AFE1-32D02F74ED62.dita"><apiname>KUidECamEventImageCaptureEvent</apiname></xref> event to notify the clients that the image has been exposed to the camera sensor. </p> </li> <li id="GUID-74F86194-32FD-54D4-A892-DBF61D481726"><p>Clients can decide whether to play a capture sound. </p> </li> <li id="GUID-C22097F6-8BD9-5059-BE1C-72361F46DF4D"><p>Client retrieves the information about direct snapshot support, embedded still capture setting support and direct saving support from the camera, and filled the desired <xref href="GUID-F9C915AA-2CF8-39A0-99B6-C8C16D20DAE5.dita"><apiname>TPrepareImageParameters</apiname></xref> to issue <xref href="GUID-D9BF1588-CF37-3D1E-AD6B-9CF7D1540C6D.dita"><apiname>PrepareImageCapture</apiname></xref> call. </p> </li> <li id="GUID-41DF8F68-1C90-5B82-9157-3E6B182F1E86"><p>Implementation sets up and allocates memory for image capture operation. It creates a new <xref href="GUID-992BCFCD-9F06-35A5-B166-3058F650E360.dita"><apiname>CCameraImageCapture</apiname></xref> object using the prepare image parameters passed by the client. </p> </li> <li id="GUID-7D926D6F-9413-5CEE-BB25-7D22523CCDDC"><p>The callback <xref href="GUID-901FB5EB-70A9-39AA-9052-436E8FC0C0EA.dita#GUID-901FB5EB-70A9-39AA-9052-436E8FC0C0EA/GUID-BE06517A-0C7D-3F20-BE4C-00F424C30147"><apiname>MPreImageCaptureControlObserver::PrepareImageComplete</apiname></xref> passes the ownership of the <xref href="GUID-992BCFCD-9F06-35A5-B166-3058F650E360.dita"><apiname>CCameraImageCapture</apiname></xref> object to the client. </p> </li> </ol> <p> <b>Note</b>: </p> <ul><li id="GUID-9477A161-E0B5-598D-BF38-868882FB4084"><p>Client should provide implementation of <xref href="GUID-CC3E371F-3037-3F7C-ACFF-DCC24972F0B7.dita"><apiname>MpreImageCaptureControlObserver</apiname></xref> class. </p> </li> <li id="GUID-DD66113F-BAA1-5E61-A5C5-F0AD44FA2C62"><p>Licensees should provide a concrete implementation of <xref href="GUID-146FDB43-52C2-3951-8231-57B40F06A355.dita"><apiname>McameraPreImageCaptureControl</apiname></xref> interface class. </p> </li> </ul> <p>The following example code snippets illustrates the use of <b>PreImageCaptureControl</b> classes. </p> <codeblock id="GUID-725BEAC3-EB75-5792-AA27-A26F6F5D36F1" xml:space="preserve">CCamera* camera; 
+Use MCameraObserver2* observer2; 
+Use camera = CCamera::New2L(*observer2, 0);
+
+CCamera::CCameraPreImageCaptureControl* preImgCapture = CCamera::CCameraPreImageCaptureControl::NewL(*camera, MPreImageCaptureControlObserver* preImageCaptureControlObserver));
+
+CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters prepareImageParameters;
+MCaptureImageObserver*     captureImageObserver ;
+preImgCapture-&gt;PrepareImageCapture(prepareImageParameters, *captureImageObserver);</codeblock> <p><b>Setting Maximum Memory Size</b> </p> <p>To set maximum memory size for a JPEG still image do the following: </p> <ul><li id="GUID-258A56BE-D440-53EA-B12E-04DDE7FDB707"><p>Check if memory size is set to maximum using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-4B42D484-8C0A-361C-9145-1F4A4A396832"><apiname>CCamera::CCameraPreImageCaptureControl::GetImageMaxMemorySizeSettingSupportInfoL</apiname></xref> method. </p> </li> <li id="GUID-6D61C9AA-A45F-586C-BA93-1C97370278B3"><p>Get the maximum memory size in KB using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-C4958029-1126-3D5B-A0BB-8E1495DE0223"><apiname>CCamera::CCameraPreImageCaptureControl::GetImageMaxMemorySizeL</apiname></xref> method. </p> </li> <li id="GUID-3C8B1F34-2B35-5F65-AFC9-625F31E17C2B"><p>Use <xref href="GUID-55213352-BFFB-3D59-A617-0CDC8B57FF75.dita#GUID-55213352-BFFB-3D59-A617-0CDC8B57FF75/GUID-DC71D0C3-35A0-3510-8D9A-EB73FD35DA52"><apiname>CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters::
+                  iImageMaxMemorySize</apiname></xref> method to get the maximum memory size in kilo bytes. If client has no specific preference or if this setting is not supported, it will be <xref href="GUID-446F413C-BF0D-3B2B-A81C-03A30B4F5E09.dita"><apiname>KECamNoSpecificMaxMemorySize</apiname></xref>. The maximum memory size will take preference over JPEG quality if it is not sufficient to achieve the desired quality. </p> </li> </ul> <p><b>Providing image file saving support</b> </p> <p>To save the still images do the following steps: </p> <ul><li id="GUID-E3DB2442-4E4F-5713-AAA1-14E23AEAA565"><p>Get the settings supported for embedded still captures using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-EB7C9C95-E254-3F1F-BEAD-7019A9CEA6AF"><apiname>CCamera::CCameraPreImageCaptureControl::GetSupportedEmbeddedStillCaptureSettingsL</apiname></xref> method. </p> </li> <li id="GUID-CEEB6340-ADFB-546D-ABE0-6FDA67958D77"><p>Get the information about the direct saving state supported by the camera using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-32811F5C-2715-353F-8029-BAFDAAA311C5"><apiname>CCamera::CCameraPreImageCaptureControl::GetSupportedDirectSavingTypeL</apiname></xref> method. If supported, still images are saved in files instead of providing it to clients through <xref href="GUID-5E8EC5D5-E826-3024-B546-60A72CC55091.dita"><apiname>MCameraImageBuffer</apiname></xref> callback. </p> </li> <li id="GUID-5AE9512F-213D-5E6F-92E4-983367D74AE5"><p>Get the direct saving type currently used using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-1177F449-919D-331D-8266-9E0636A9F49C"><apiname>CCamera::CCameraPreImageCaptureControl::GetDirectSavingTypeL</apiname></xref> method. Enum value <xref href="GUID-3418EE4E-6EAF-3501-ADC4-0AEB36BC813F.dita"><apiname>TDirectSavingType</apiname></xref> will represent the direct saving type used by the camera. </p> </li> <li id="GUID-80926C68-7EE2-57E4-91A0-2DC7F633B6C4"><p>Set the required type of direct saving option specified by its state using <xref href="GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58.dita#GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58/GUID-43AB5D15-D417-3E8E-8E8C-26EF2FA61C37"><apiname>CCamera::CCameraPreImageCaptureControl::SetDirectSavingTypeL</apiname></xref> method. </p> </li> </ul> <p> <b>Note</b>: Before capturing still images by direct saving option, clients need to provide the filename. </p> </section> <section><title>See also</title> <p><xref href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita">Controlling Still-image Capture</xref> </p> <p><xref href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita">Controlling Captured Image</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6C8F9EF9-F323-5423-B73E-4E26BCD2737E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6C8F9EF9-F323-5423-B73E-4E26BCD2737E"><title>Building and use</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The TextMTM can be built, deployed on the emulator or native platform, and its functionality experimented with through the messaging application. </p> <p>To do this requires a number of steps: </p> <ul><li id="GUID-0751AD90-2DE5-55BF-B6E0-F14A92D3B7E5"><p>build all TextMTM projects for the relevant target </p> </li> <li id="GUID-3308609B-6B04-5744-93DB-7462888132E7"><p>run the <filepath>txin</filepath> program to register the TextMTM with the Message Server </p> </li> <li id="GUID-667A7812-A797-5447-B953-7C05225B502B"><p>run the messaging application, and experiment with creating and using TextMTM services and messages </p> </li> </ul> <p>The following sections contain more details on each of these. </p> <section><title>Building</title> <p>The TextMTM is more complex than some other examples, as it is made up of a number of projects, some of which include headers from other projects, or link to the utilities DLL <filepath>txut</filepath>. </p> <p>To do a build, perform the normal steps of <codeph>bldmake
+          bldfiles</codeph> and <codeph>abld build &lt;target-platform&gt;</codeph>. </p> <p>Note that: </p> <ul><li id="GUID-D2D95328-8AF4-5A39-80BA-8EEEF34C0B37"><p>UI resources and icons for the MTM are built to <filepath>\resource\messaging\</filepath>. </p> </li> <li id="GUID-EB09EE23-8CF3-50EA-8A1D-60BAA4282257"><p>A resource file that provides information to register the MTM with the messaging server is built to <filepath>\resource\messaging\mtm\</filepath>. </p> </li> <li id="GUID-B31F35B5-D9FC-50CB-82AA-E931DDAC38CF"><p>The <filepath>bld.inf</filepath>'s file <codeph>PRJ_EXPORTS</codeph> section lists header files copied into <filepath>\epoc32\include</filepath>. </p> <p>The MTM stores its settings in its own area in the central repository. This requires a repository initialisation file (<filepath>10005247.txt</filepath>) to be supplied. The <filepath>bld.inf</filepath> does this by exporting the file to the central repository private directory <filepath>z:\private\10202BE9\</filepath>. </p> </li> </ul> <p>The final step, registering the MTM, is not performed by the build process, and is described below. </p> </section> <section><title>Registration</title> <p>On the Emulator, you should have run the messaging application at least once before registering the TextMTM, as this creates some necessary folders. </p> <p>Before you can use the TextMTM, you must inform the Message Server of the TextMTM registration data. To do this, run the <filepath>txin</filepath> program, a simple console program. </p> </section> <section><title>Use</title> <p>Start the messaging application in the normal way. You will find that it has automatically detected the presence of the new MTM and added suitable commands to the user interface. For details of the available functionality, see the other documentation on individual TextMTM components, but to get started, try the following: </p> <ul><li id="GUID-38518755-C9E0-509A-8821-85A92C8BA784"><p>Create a new TextMTM service. You will be asked to choose a directory to be mapped to the TextMTM service. </p> <p>Note that directories such as <filepath>\private\</filepath> and <filepath>\sys\</filepath> cannot be used, as platform security requires that access to those directories is restricted. </p> </li> <li id="GUID-A5C05146-BA53-5348-8284-F31D68A0975F"><p>Create a new TextMTM message. As the TextMTM does not include a user interface for message editing and viewing, it simulates this activity by flashing an <systemoutput>Editing</systemoutput> information message. </p> </li> <li id="GUID-F463A532-74E2-5DCB-9BF2-EC539333F171"><p>Select a TextMTM message in a local folder. Check that a special <systemoutput>Export text to file</systemoutput> command appears in the application's menu and use it. </p> </li> <li id="GUID-02036CB1-7F8C-507B-B3D6-E2396C9124F8"><p>Cut, copy, and paste messages between local folders and the service. </p> </li> <li id="GUID-D602FDE7-6C88-5055-8886-676C66AA7C0D"><p>Add and remove files (e.g. through Windows Explorer when using the Emulator) manually from the directory mapped to the TextMTM service. In messaging, go to the service and see that a special <systemoutput>Refresh
+                service</systemoutput> menu command appears. Use this and check that the service now accurately reflects the state of the directory. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CB40FC5-5CBF-592C-B27D-29922C3815DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6CB40FC5-5CBF-592C-B27D-29922C3815DC"><title>library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>library</codeph>  <codeph> [-k] [-v] </codeph> [ <varname>platform</varname> ] [ <varname>program</varname> ] </p> <p>This command creates the import libraries for the DLLs in your component by calling the <codeph>library</codeph> target provided in makefiles generated by <filepath>makmake</filepath>.</p> <p>Import libraries are generated directly from frozen <filepath>.def</filepath> files, so exported functions will not be incorporated into import libraries until these functions are frozen with <codeph>abld
+          freeze</codeph>.</p> <p>The import libraries are created implicitly as part of the build activity carried out by <codeph>abld target</codeph> (and thus <codeph>abld build</codeph>), so it isn’t generally necessary to call this command separately if projects are listed in the component description file in order of dependency—dependent projects appearing after those projects they depend upon. </p> <p>If there are mutual imports between projects within your component then <codeph>abld library</codeph> can be called explicitly, though mutual imports are often a sign of poor software design.</p> <p>An import library will not be regenerated if it has a later date stamp than the corresponding frozen <filepath>.def</filepath> file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CC45734-E497-40A7-AB23-37A24EBAF339.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6CC45734-E497-40A7-AB23-37A24EBAF339" xml:lang="en"><title>Viewing
+Certificate Details</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps-unordered>
+<step id="GUID-9FF4FB52-34AA-46DC-BF54-9681ABBD76D1"><cmd>Run MakeKeys at
+the command prompt using the <codeph>-view</codeph> option to display details
+of a certificate or certificate chain file.</cmd>
+<info><p>The following is the syntax:  </p><codeblock xml:space="preserve">&gt; makekeys -view &lt;public-key-cert&gt;</codeblock></info>
+<stepxmp><p>For example, <codeblock xml:space="preserve">&gt; makekeys -view mycert.cer
+</codeblock></p><note type="important">The certificate file must be encoded
+in base64 format. </note></stepxmp>
+</step>
+</steps-unordered>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CD0F7B8-3DB2-5332-A206-BD7A1C840614.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6CD0F7B8-3DB2-5332-A206-BD7A1C840614" xml:lang="en"><title>How
+to declare a UID</title><shortdesc>Describes how to declare a UID.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To use a UID in a program, declare it as a static constant, for example:</p>
+<codeblock id="GUID-D4615AEC-7541-563D-B6DE-22C49433D625" xml:space="preserve">static const TUid KUidExampleSmileyPicture = { 0x100000E6 };</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D" xml:lang="en"><title>P.I.P.S.
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>P.I.P.S. supplies a new framework of POSIX 'C' APIs to be used by Symbian
+developers with RTOS, Linux or Microsoft Windows® knowledge. The new APIs
+are packaged into industry standard libraries - <codeph>libc</codeph>, <codeph>libm</codeph>, <codeph>libpthread</codeph> and <codeph>libdl</codeph> - and will help reduce development costs. </p>
+<section id="GUID-08EF9B92-E9A6-4C4F-8A08-597F2EF32135"><title>Purpose</title> <p>Symbian
+platform already provides a library called '<codeph>ESTLIB</codeph>', which
+includes a subset of Standard C APIs. This was created to allow the Java virtual
+machine to run on Symbian platform rather than to allow applications written
+in C to be ported to Symbian platform. Furthermore, the functionality provided
+by <codeph>ESTLIB</codeph> is not fully compliant with the Standard C and
+POSIX standards. Symbian intends to deprecate <codeph>ESTLIB</codeph> once
+P.I.P.S. is mature. </p> <p>The P.I.P.S. libraries are included in ROM on
+certain smartphones based on Symbian OS v9.3 onwards. For smartphones based
+on earlier versions of Symbian platform, a freely downloadable SIS file is
+available from the Symbian Developer Network (specifically <xref href="http://developer.symbian.org/wiki/index.php/Open_C_and_Open_C%2B%2B_Quick_Start" scope="external">http://developer.symbian.org/wiki/index.php/Open_C_and_Open_C%2B%2B_Quick_Start</xref>)
+and can be installed on any Symbian OS v9.x smartphones. </p> </section>
+<section id="GUID-6E46D602-BED1-4E20-AE6B-5137615E2440"><title>Required background</title> <p><b>The
+differences between Symbian platform and other operating systems</b> </p> <p>Symbian
+platform is an operating system designed for mobile devices and comes in the
+form of many libraries that contain hundreds of classes and thousands of member
+functions. </p> <p>Symbian platform has been specifically designed to provide
+efficient memory and power management. </p> <p>P.I.P.S. has been introduced
+to Symbian platform to make it more attractive to third party Symbian developers
+with C/C++ experience and to allow them to port their applications to Symbian
+platform with greater ease. </p> <p>The P.I.P.S. initiative aims to reduce
+the development cost of porting software to run on Symbian platform. It achieves
+this by providing a POSIX-like API layer above the Symbian platform. Given
+the structure of Symbian platform, however, it is not possible to provide
+a fully compliant API and some functionality, such as, <xref href="GUID-432C9AA0-A698-3A62-95D8-CB010965F92C.dita"><apiname>fork()</apiname></xref> and <xref href="GUID-1F3AB7F6-B354-36DB-AA0C-D8F2DC89A6DD.dita"><apiname>exec()</apiname></xref> are
+not supported. This guide details such non-compliance and recommended alternatives. </p> <p>Specific
+differences between Symbian platform and Unix-like systems are described in
+the relevant sections of this guide. </p> <p><b>What P.I.P.S. is not</b> </p> <p>The
+P.I.P.S. environment is <b>not</b> a UNIX® application environment. You will
+not be able to run a UNIX application on Symbian platform 'as is'. At a minimum,
+you will need to create a <filepath>.mmp</filepath> file and a <filepath>bld.inf</filepath> file
+for the application and rebuild the application's source code for Symbian
+platform. For further information, see <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian build process</xref> section. </p> <p>If the application does not
+work at the first attempt, you may have to modify the application code to
+replace missing APIs or port the required APIs to extend the P.I.P.S. environment.
+To find out more about porting C libraries to Symbian platform, see the <xref href="GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984.dita">P.I.P.S. Porting Tutorials</xref> sections. </p> <p>The
+P.I.P.S. environment is not 100% POSIX compliant and it is not officially
+certified as POSIX compatible. However, the implementation is as compliant
+as the underlying Symbian platform allows it to be. For example, P.I.P.S.
+does not provide the APIs <codeph>fork()</codeph> and <codeph>exec()</codeph>,
+but it does provide <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref>, <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref> and
+so on, which can be used to implement well known alternative patterns. For
+further information, see the <xref href="GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD.dita">Process
+Creation</xref> section. </p> </section>
+<section id="GUID-22E7E427-C9D1-4C26-BCA8-E4A48CE0E45F"><title>Architecture</title> <p>P.I.P.S.
+provides an API layer above the native Symbian platform APIs that is more
+closely aligned with industry standard APIs. </p> <p>The core P.I.P.S. libraries
+are: </p> <ul>
+<li id="GUID-213D2779-C303-5A11-A339-8E464D4B4A68"><p> <codeph>libc</codeph>:
+Standard C and POSIX APIs - includes support for files, sockets, pipes, message
+queues, shared memory APIs and environment variables </p> </li>
+<li id="GUID-1209CBDA-DFEB-5ECA-AD4F-A1452762C2CC"><p> <codeph>libm</codeph>:
+Standard C maths support APIs </p> </li>
+<li id="GUID-138D2894-8362-5C13-B5BB-24A9A22DF415"><p> <codeph>libpthread</codeph>:
+Standard POSIX threading APIs </p> </li>
+<li id="GUID-E00112DA-D5BB-55C0-A6A4-A443B67858C0"><p> <codeph>libdl</codeph>:
+Standard C dynamic loading and symbol lookup APIs (only ordinal lookup is
+supported on pre-Symbian OS v9.3 releases). </p> </li>
+</ul> <p>The first three libraries listed above are seeded from <xref href="http://www.freebsd.org/" scope="external">FreeBSD</xref>. </p> <p>The diagram below shows the high
+level architecture of the P.I.P.S. environment. </p> <fig id="GUID-103BEA25-EE1B-50D0-8C0C-950C1A43656D">
+<title>              P.I.P.S. environment architecture            </title>
+<image href="GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e132376_href.png" placement="inline"/>
+</fig> <p>This diagram shows how P.I.P.S. fits in with Symbian platform, and
+also how C/C++ applications, additional C shared libraries and hybrid applications
+developed by third party Symbian developers using P.I.P.S. fit
+in. </p> <p>P.I.P.S. environment is based on industry-standard APIs. These
+standards include </p> <ul>
+<li id="GUID-09A5848E-7934-5202-BB09-BE6390FC2F12"><p>Standard C (<codeph>stdC</codeph>)
+and </p> </li>
+<li id="GUID-0478A6C5-238C-5CFF-8625-791293800E9B"><p>POSIX. </p> </li>
+</ul> <p>The P.I.P.S. environment is a mandatory part of Symbian OS v9.5 onward. </p> <p>For
+devices already in the market, a SIS file is freely downloadable from the
+Forum Nokia site (specifically <xref href="http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Open_C_and_C++/" scope="external">http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Open_C_and_C++/</xref>)
+and can be installed on any v9.x phone. </p> <p><b>Components</b> </p> <p>P.I.P.S.
+is based on an industry-standard API and system behaviour.  The relevant
+industry standards are Open Group standards and include Standard C (<codeph>stdC</codeph>),
+POSIX, GNU C library (<codeph>glibc</codeph>) and Standard C++ (<codeph>stdC++</codeph>). </p> <p>The
+diagram below shows how the Standard C libraries and exported applications
+fit into the native platform. </p> <fig id="GUID-02F370A6-0713-5E7F-A851-339E03603A0A">
+<title>                 The subsystem components               </title>
+<image href="GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e132437_href.png" placement="inline"/>
+</fig> <p>The System Call Adaptation Layer (SCAL) is not directly accessed
+by the developer wishing to export to Symbian platform, but through calls
+in the P.I.P.S. libraries. </p> <p>Traditionally, in Unix-like systems, system
+calls are implemented in the kernel, separate from the C libraries. In Symbian
+platform, the 'System Call Adaptation Layer' runs in the context of the user
+side but is considered 'kernel-like' code. APIs that belong to this layer
+are tagged as <codeph>@internalComponent</codeph> and may only be extended
+by Symbian. </p> <p>Note that P.I.P.S. is not a Linux application environment
+- you cannot simply run an application that you've compiled for your Linux
+desktop. At a minimum, you will have to rebuild your application from source. </p> <p>For
+more information, see the <xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita">Build
+Process</xref> section. </p> <p id="GUID-49C7F951-8317-5F41-B1B9-9F7B8803E655"><b>Glue
+code (CRT0)</b> </p> <p>Executables built for Symbian platform enter via <codeph>E32Main()</codeph>,
+whereas Standard C applications expect to be started from <codeph>main()</codeph>.
+It is therefore necessary to have 'glue code' (formerly known as CRT0) between
+these two functions. The glue code is also responsible for allocating any
+system resources, obtaining system and environment data, and initialising
+the SCAL infrastructure prior to calling the <codeph>main()</codeph> function
+of the application. There are two versions of the glue code library - <filepath>libcrt0.lib</filepath> (for
+use by applications that enter via char <codeph>main()</codeph>) and <filepath>libwcrt0.lib</filepath> (for
+use by applications that enter via wide char <codeph>main()</codeph>). </p> <p>To
+include the glue code library you should explicity link to <filepath>libcrt0.lib</filepath> and <filepath>libwcrt0.lib</filepath> statically,
+however, if you are using the <codeph>STDEXE</codeph> or <codeph>STDDLL</codeph> target
+types, glue code will be added automatically. </p> <p id="GUID-1DDC11E7-D9D6-5251-89CE-981C4869D109"><b>P.I.P.S.
+Core libraries</b> </p> <p>Currently, the C libraries include the <codeph>libc</codeph>, <codeph>libm</codeph>,
+and <codeph>libpthread</codeph> (seeded from <xref href="http://www.freebsd.org/" scope="external">FreeBSD</xref>) and <codeph>libdl</codeph> libraries. The
+APIs provided by these libraries are defined to be compliant, via compatibility
+features, with the POSIX standard. They are not officially certified as POSIX
+compatible but they conform to it mostly. </p> <p>The P.I.P.S. libraries include
+the following APIs: </p> <ul>
+<li id="GUID-95E53F0A-B919-5EEE-9A6F-427E87547088"><p> <codeph>stdio</codeph>,
+including <xref href="GUID-E69DB3CD-E6DA-3B1D-A499-AE68EC432CAC.dita"><apiname>print()</apiname></xref>, <xref href="GUID-58616261-FB60-37C5-9289-239144CD8FB8.dita"><apiname>scanf()</apiname></xref>, and so on </p> </li>
+<li id="GUID-5359692C-17C8-5486-9DCB-0A5B9AD1C90A"><p> <codeph>stdlib</codeph>,
+including environment variable support, and so on </p> </li>
+<li id="GUID-F0E19C9C-5581-5E47-A775-A6B57C22EE92"><p>string manipulation
+and character APIs </p> </li>
+<li id="GUID-B0F2B006-6D62-5DD6-9CDC-7ADFB693E77E"><p>locale and system services </p> </li>
+<li id="GUID-C5440DE9-24A2-5A34-A2A7-47E836E1545D"><p>searching, sort and
+pattern matching </p> </li>
+<li id="GUID-33D03F27-4B97-56CA-B4ED-67901701A1E2"><p>IPC mechanisms, including
+shared memory, pipes, FIFOs and message queues </p> </li>
+<li id="GUID-15AE7775-5FC8-59A4-924E-3987F9314F58"><p>process creation, including <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref>, <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> and <xref href="GUID-3D9040E5-F6FB-3DEA-9800-A55F0CEE7B08.dita"><apiname>system()</apiname></xref>  </p> </li>
+<li id="GUID-2AEE41E3-A696-588C-9E5B-8E362E96D4B5"><p>networking and socket
+APIs </p> </li>
+<li id="GUID-ACF6B3A6-0F83-50D3-B0FB-FA765BDA408D"><p>mathematical and arithmetic
+APIs </p> </li>
+<li id="GUID-595D4C61-0FC9-5A05-BEDD-7412CEA585BA"><p>dynamic loading and
+symbol lookup </p> </li>
+<li id="GUID-DC3DB027-B384-52D1-8284-BF868A5CD543"><p>thread creation and
+synchronisation mechanisms. </p> </li>
+</ul> <p>Due to fundamental differences between Linux and the Symbian platform
+kernel architecture, there is no support for <xref href="GUID-432C9AA0-A698-3A62-95D8-CB010965F92C.dita"><apiname>fork()</apiname></xref> and <xref href="GUID-1F3AB7F6-B354-36DB-AA0C-D8F2DC89A6DD.dita"><apiname>exec()</apiname></xref>.
+For more information, see the <xref href="GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD.dita">Process
+Creation</xref> section. </p> <p>The original seed directory structure (<xref href="http://www.freebsd.org/" scope="external">FreeBSD</xref>) is preserved
+as fully as possible to allow for future catch-ups to be performed more easily.
+The table below shows the original seed directory structure in FreeBSD. </p> <table id="GUID-A1D61A32-6F99-5B0A-B348-135373DC3AEA">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Module</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>core\libc</filepath>  </p> </entry>
+<entry><p>Contains Standard C and POSIX APIs as defined by the Standard C
+and POSIX standards </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>core\libm</filepath>  </p> </entry>
+<entry><p>Contains the Standard C <codeph>Math</codeph> API as defined by
+Standard C </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>core\libpthread</filepath>  </p> </entry>
+<entry><p>Contains POSIX threading APIs as defined the POSIX standards </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>core\libdl</filepath>  </p> </entry>
+<entry><p>Contains APIs for dynamic loading and symbol lookup by name. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Although P.I.P.S. provides a wide range of APIs, some of the functionality
+required in order to complete a porting task might be missing - this could
+be some APIs from an existing library or an entire library. </p> <p>Several
+options are available to the user: </p> <ul>
+<li id="GUID-99935DCF-2678-5D76-98E9-8E94269E7CAC"><p>Port the missing APIs
+using the P.I.P.S. libraries </p> </li>
+<li id="GUID-FFA95C02-268F-5281-B0D3-5A4A64BC5A27"><p>Implement the missing
+APIs on top of Symbian platform native C++ APIs </p> </li>
+<li id="GUID-D70619B7-E889-5D11-81C7-FD99420F3D1D"><p>Use a workaround - for
+example, use <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> instead of <codeph>fork()</codeph>. </p> </li>
+</ul> <p> <b>Note:</b> The following are the limitations associated with porting
+a UNIX® application: </p> <ul>
+<li id="GUID-4057ED21-65DD-5C20-A65B-B9228BE920BD"><p> <b>Limited stack-space:</b> The
+default stack size per thread on Unix-like operating systems ranges from 64
+kB to 1 MB. Symbian platform, however, defines a default stack size of 8 kB
+per thread. P.I.P.S. Pthreads use this by default. You can use the <codeph>pthread_attr_setstacksize()</codeph> function
+to modify this before calling <codeph>pthread_create()</codeph>. </p> </li>
+<li id="GUID-8329F811-34A6-5812-B033-2BE49C038D3E"><p> <b>Limited threads
+per process:</b> Assuming that all threads use the default stack size (8 kB),
+Symbian specifies a limit of 128 threads per process. The limit changes depending
+on the stack size you use for individual threads. For example, if you create
+your threads with a stack size of 16 kB, the OS only supports 64 threads per
+process. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-2016EF4B-F001-5EB2-8095-6048582511D6.dita"><linktext>P.I.P.S.
+Concepts</linktext></link>
+<link href="GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984.dita"><linktext>P.I.P.S.
+Porting Tutorials</linktext></link>
+<link href="GUID-3EB1C34E-584E-595D-A339-DE170A96AEBC.dita"><linktext>P.I.P.S.
+Examples</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CE12919-FF81-5254-BA12-385F589FEA44.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6CE12919-FF81-5254-BA12-385F589FEA44" xml:lang="en"><title>Bluetooth Management Collection</title><shortdesc>The Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e65069_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CEAFE12-EB30-5231-94F4-2D097E79BFE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6CEAFE12-EB30-5231-94F4-2D097E79BFE0" xml:lang="en"><title>Implementing
+the FEP API</title><shortdesc>This topic describes various implementations of FEP.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D0CB0202-D4B6-422B-84AA-F70974DDF7F3"><title>Post-platform
+security – the ECom plugin interface</title><p>In the secure platform, FEPs
+must be implemented as ECom plug-ins. ECom provides a secure environment for
+loading FEPs that cannot be achieved using standard, non-ECom polymorphic
+DLLs. The main tasks that are specific to implementing a FEP as an ECom plug-in
+are described in this section. Note that the differences between pre- and
+post-platform security FEPs are imposed by the change from old-style, standard
+polymorphic DLLs to ECom plugins. The C++ APIs involved in FEP creation, which
+are defined in <filepath>fepbase.h</filepath>, are unchanged. </p> </section>
+<section id="GUID-97C929BB-0523-45F4-8100-D8065B9A53D5"><title>Define a class
+that implements the CCoeFepPlugIn interface</title><p>This class must implement
+the <codeph>NewFepL()</codeph> and <codeph>SynchronouslyExecuteSettingsDialogL()</codeph> functions
+that were, pre-platform security, the first and second exports from the DLL.
+Note that these functions have been redefined and no longer take the const <codeph>TDesC&amp;
+aFullFileNameOfDll </codeph> argument: the ECom plugin implementation is identified
+by a UID rather than a filename. This means that the implementation of <codeph>SynchronouslyExecuteSettingsDialogL()</codeph> is
+now responsible for locating the resource file needed to execute the settings
+dialog itself. </p> <codeblock id="GUID-310F5ADC-B9CB-5A3B-878F-AF13C4C4C08B" xml:space="preserve">class CCoeFepPlugIn : public CBase
+    {
+public:
+    inline static CCoeFepPlugIn* NewL(TUid aFepUid);
+    virtual ~CCoeFepPlugIn();
+public:
+    virtual CCoeFep* NewFepL(CCoeEnv&amp; aConeEnvironment, const CCoeFepParameters&amp; aFepParameters) = 0;
+    virtual void SynchronouslyExecuteSettingsDialogL(CCoeEnv&amp; aConeEnvironment) = 0;
+    };
+</codeblock> </section>
+<section id="GUID-939614DA-C3EF-43FD-924A-805596AEC2FD"><title>Provide the
+factory code required to instantiate the derived class </title> <p>FEPs must
+provide the standard factory code required by every ECom plugin. For more
+information, see “Using ECom” in the Symbian Developer Library. For example,
+(the following code is taken from <filepath>TFEP1PlugIn.cpp</filepath>): </p> <codeblock id="GUID-88F37824-8CAA-53B8-BD69-AB5B17B9BBB5" xml:space="preserve">const TInt KTstFepPlugInImplementationValue = 0x102024D0;
+const TImplementationProxy ImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY(KTstFepPlugInImplementationValue, CTstFepPlugIn::NewL )
+    };
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }
+CTstFepPlugIn* CTstFepPlugIn::NewL()
+    { // static
+    return new(ELeave) CTstFepPlugIn;
+    }
+</codeblock></section>
+<section id="GUID-FC0B99AB-B579-42A2-8A0C-3A36BE648616"><title>Create an ECom
+resource file</title> <p>Each FEP must have an ECom resource file. Its interface
+UID must be 0x1020233f, or CONE will not be able to find the FEP. For example, </p> <codeblock id="GUID-5CBDB731-EBAD-5326-909C-4DF78E7AC360" xml:space="preserve">#include &lt;RegistryInfo.rh&gt;
+
+RESOURCE REGISTRY_INFO theInfo
+    {
+    dll_uid = 0x102024D0; // UID3 of the DLL
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            interface_uid = 0x1020233F; // Same for every FEP
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = 0x102024D0;
+                    version_no = 1;
+                    display_name = "FEPNAME";
+                    default_data = "";
+                    opaque_data = "";
+                    }
+                };
+            }
+        };
+    }</codeblock></section>
+<section id="GUID-BEDE8AA4-843E-405E-A8F9-EC80893D7D59"><title>The CCoeFep
+class</title> <p>The parts of <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> relevant to classes
+deriving from it are shown below: </p> <codeblock id="GUID-14B6DFB4-02DE-5D12-BBFB-0665F6B089E0" xml:space="preserve">class CCoeFep : public CBase, protected MFepAttributeStorer, public MCoeForegroundObserver, public MCoeFocusObserver
+{
+public:
+    enum TEventResponse
+        {
+        EEventWasNotConsumed,
+        EEventWasConsumed
+        };
+    class MDeferredFunctionCall
+        {
+    public:
+        virtual void ExecuteFunctionL()=0;
+        };
+    class MModifiedCharacter
+        {
+    public:
+        virtual TUint CharacterCode() const=0;
+        virtual TUint ModifierMask() const=0;
+        virtual TUint ModifierValues() const=0;
+        };
+public:
+    IMPORT_C virtual ~CCoeFep();
+    virtual void CancelTransaction()=0;
+protected:
+    IMPORT_C CCoeFep(CCoeEnv&amp; aConeEnvironment);
+    IMPORT_C void BaseConstructL(const CCoeFepParameters&amp; aFepParameters);
+    IMPORT_C void ReadAllAttributesL();
+    IMPORT_C void MakeDeferredFunctionCall(MDeferredFunctionCall&amp; aDeferredFunctionCall);
+    IMPORT_C void SimulateKeyEventsL(const TArray&lt;TUint&gt;&amp; aArrayOfCharacters);
+    IMPORT_C void SimulateKeyEventsL(const TArray&lt;MModifiedCharacter&gt;&amp; aArrayOfModifiedCharacters);
+    IMPORT_C void WriteAttributeDataAndBroadcastL(TUid aAttributeUid);
+    IMPORT_C void WriteAttributeDataAndBroadcastL(const TArray&lt;TUid&gt;&amp; aAttributeUids);
+    IMPORT_C TBool IsOn() const;
+private:
+    virtual void IsOnHasChangedState()=0;
+    virtual void OfferKeyEventL(TEventResponse&amp; aEventResponse, const TKeyEvent&amp; aKeyEvent, TEventCode aEventCode)=0;
+    virtual void OfferPointerEventL(TEventResponse&amp; aEventResponse, const TPointerEvent&amp; aPointerEvent, const CCoeControl* aWindowOwningControl)=0;
+    virtual void OfferPointerBufferReadyEventL(TEventResponse&amp; aEventResponse, const CCoeControl* aWindowOwningControl)=0;
+    };
+</codeblock> <p>Note that <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> inherits, but does not
+override, some pure virtual functions from its base classes <xref href="GUID-270424BB-124B-39FF-9CDA-5CAFB5407FAE.dita"><apiname>MFepAttributeStorer</apiname></xref>, <xref href="GUID-2CAC79B0-8BD3-3961-A162-75B004AEE5FC.dita"><apiname>MCoeForegroundObserver</apiname></xref> and <xref href="GUID-E591B7D7-ED56-3CEF-883F-7091D5833731.dita"><apiname>MCoeFocusObserver</apiname></xref>. These therefore need to be overridden in addition
+to <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> ’s own pure virtual member functions. The details
+of the member functions of <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> and its base classes
+are explained in various sections of this document. </p></section>
+<section id="GUID-ECA1F4AE-1B25-4079-B249-AC8ECF3D3F90"><title>The CCoeControl
+class</title><p>The <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> class (defined in <filepath>epoc32\include\COECNTRL.H</filepath>)
+provides many useful features for implementing a FEP, such as functions for
+handling window server events. In fact, for FEPs wishing to intercept key
+events, writing a class that derives from <codeph>CCoeControl</codeph> is
+a necessity because of the need to use the control stack (see <xref href="GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96.dita#GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96/GUID-1B15C661-851B-5922-B8BC-7A772232DBD2">Intercepting key events</xref>, below). Thus although deriving from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> is
+not explicitly demanded by the FEP architecture, it is assumed throughout
+this document that the object of the <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> derived
+class owns an object of a <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> derived class. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B"><title>Using Signals to Handle Asynchronous Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use signals to handle asynchronous user events. A process (program code) can send a signal to itself that can be handled asynchronously based on the signal handler registered for it. This provides a way to perform tasks in parallel without any complex thread manipulation in the program code. </p> <p>The following example code demonstrates how a program code sets a signal to itself and how it handles the signal asynchronously in a signal handler: </p> <codeblock id="GUID-4424321B-112A-5556-AD29-41F613A60C84" xml:space="preserve">#include &lt;signal.h&gt;
+#include &lt;stdio.h&gt;
+void sighandler(int signum)
+    {
+    if(signum == SIGUSR1)
+        {
+        // Code to perform custom handling
+        }
+    else if(signum == SIGUSR2)
+        {
+        // Code to perform custom handling
+        }
+    }
+int main()
+    {
+    signal(SIGUSR1,sighandler);
+    signal(SIGUSR2,sighandler);
+    // program logic
+    raise(SIGUSR1); // indicates user event one
+    // program logic
+    raise(SIGUSR2); // indicates user event two
+    // program logic
+    return 0;
+    }</codeblock> </conbody><related-links><link href="GUID-66C1493D-5B85-558A-9A39-454E6EBA307B.dita"><linktext>Signal Emulation on Symbian
+                Platform</linktext> </link> <link href="GUID-186B9876-2A08-5F23-BB49-49EC34C51507.dita"><linktext>Using Signals to Terminate Processes</linktext> </link> <link href="GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA.dita"><linktext>Using Signals to Handle Exceptions</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D1A830E-F0F1-5C0F-8EEB-70922C0EF6B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6D1A830E-F0F1-5C0F-8EEB-70922C0EF6B8" xml:lang="en"><title>Length,
+maximum length and size</title><shortdesc>Describes the length of 8-bit and 16-bit descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A descriptor characterises the data it represents by the length of that
+data. The length of a descriptor is the number of data items it represents:</p>
+<ul>
+<li id="GUID-3AF8F237-CA2A-5AAF-A56E-ECC7C95907B7"><p>for 8 bit variant
+descriptors, the length is the number of single-bytes of data. When the descriptor
+represents non-Unicode strings, the length is the number of characters in
+the string.</p> </li>
+<li id="GUID-7610BC67-31CD-57DA-A72C-B1F4348C8FAC"><p>for 16 bit variant
+descriptors, the length is the number of double-bytes of data. When the descriptor
+represents Unicode strings, the length is the number of characters in the
+string.</p> </li>
+</ul>
+<p>The length of a descriptor cannot be greater than 2<sup>28</sup>.</p>
+<p>The size of a descriptor is the number of bytes occupied by the data represented
+by that descriptor:</p>
+<ul>
+<li id="GUID-830C6F31-EE2D-5C30-91D4-AB15FE4D2BA5"><p>for the 8 bit variant
+descriptors, the size is the same as the length.</p> </li>
+<li id="GUID-C7AF88D8-5836-53B9-A991-EA97B539C7CF"><p>for the 16 bit
+variant descriptors, the size is twice the length.</p> </li>
+</ul>
+<p>The descriptors which allow their data to be modified are also characterised
+by a maximum length. This represents an upper limit on the length of data
+the descriptor can represent, i.e.the length of data represented by the descriptor
+can vary can vary from zero up to, and including, this maximum value.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D28A0C6-7D1A-5C71-B61C-EE3F9E29DC5D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6D28A0C6-7D1A-5C71-B61C-EE3F9E29DC5D" xml:lang="en"><title>Persistent Storage Example Code</title><shortdesc>This describes example code for the Persistent Storage collection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D59E35B-6572-519A-8CFD-CB7781DDE631.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6D59E35B-6572-519A-8CFD-CB7781DDE631"><title>printf</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>printf format [ arg ... ] </userinput> </p> <p>Print the arguments according to the format specification. Formatting rules are the same as used in C. The same escape sequences as for <xref href="GUID-728F278B-30C8-5FA8-AD03-4C759690416E.dita">echo</xref> are recognised in the format. All C conversion specifications ending in one of <codeph>csdiouxXeEfgGn</codeph> are handled. </p> <table id="GUID-94F8F71A-02B3-52C8-BC40-19F1F30CB303"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>%b</codeph>  </p> </entry> <entry><p>Cause escape sequences in the argument to be recognised. </p> </entry> </row> <row><entry><p> <codeph>%q </codeph>  </p> </entry> <entry><p>Quote the argument in such a way that allows it to be reused as shell input. With the numeric format specifiers, if the corresponding argument starts with a quote character, the numeric value of the following character is used as the number to print otherwise the argument is evaluated as an arithmetic expression. </p> </entry> </row> <row><entry><p> <codeph>%n</codeph>  </p> </entry> <entry><p>The corresponding argument is taken as an identifier which is created as an integer parameter. </p> </entry> </row> </tbody> </tgroup> </table> <p>Normally, conversion specifications are applied to each argument in order but they can explicitly specify the n<sup>th</sup> argument is to be used by replacing <codeph>%</codeph> by <codeph>%n$</codeph> and <codeph>*</codeph> by <codeph>*n$</codeph>. It is recommended that you do not mix references of this explicit style with the normal style and the handling of such mixed styles may be subject to future change. </p> <p>If arguments remain unused after formatting, the format string is reused until all arguments have been consumed. With the print builtin, this can be suppressed by using the <codeph>-r </codeph> option. If more arguments are required by the format than have been specified, the behaviour is as if zero or an empty string had been specified as the argument. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D6C54E2-66DA-5626-A75D-5597469D5BE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6D6C54E2-66DA-5626-A75D-5597469D5BE0" xml:lang="en"><title>PKG File</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A package (PKG) file is a text file with <filepath>.pkg</filepath> extension. It contains information required by the SIS file creation tools to create a SIS file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D6DFC3A-8940-531A-A319-922317D19B51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6D6DFC3A-8940-531A-A319-922317D19B51" xml:lang="en"><title>How to
+define the interface to a polymorphic interface DLL</title><shortdesc>Explains how to use a polymorphic interface DLL.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The interface is defined by an abstract API which can be implemented by
+a DLL. The following code fragment defines the API in terms of a pure virtual
+abstract C++ class; this is an example class called <codeph>CMessenger</codeph>.</p>
+<codeblock id="GUID-68199E32-6801-5964-9B3E-56DAB3369E41" xml:space="preserve">class CMessenger : public CBase
+    {
+public:
+    virtual void ConstructL(CConsoleBase* aConsole, const TDesC&amp; aName)=0;
+    virtual void ShowMessage()=0;
+private:
+    CConsoleBase* iConsole;
+    HBufC*        iName;
+    };</codeblock>
+<codeblock id="GUID-039AF89C-AF41-5F69-AA47-8A0D66DBAAB7" xml:space="preserve">
+// The UID for Messenger DLLs.
+// The client imposes this on DLLs which satisfy the protocol.
+
+const TInt KMessengerUidValue=0x10004262;
+const TUid KMessengerUid={KMessengerUidValue};</codeblock>
+<p>The purpose of the example is to be able to issue a simple greeting message.
+Any number of DLLs can be created, each containing a different implementation
+of the class.</p>
+<section id="GUID-6C3A1A07-6140-4A41-9E83-8348CDC81222"><title>Notes:</title> <p>Because the API can be implemented differently
+in different DLLs, note the following when declaring the class:</p> <ul>
+<li id="GUID-2D946F12-48A1-57B0-ADE0-7BF143DE6A8A"><p>The constructor is not
+declared; the default C++ constructor is used, and is not exported from the
+DLL. Instead, a function is exported from the DLL which constructs an object
+of the concrete type using <codeph>new (ELeave)</codeph> semantics.</p> </li>
+<li id="GUID-302202A4-DB5A-5A75-B036-9E664A915809"><p>All functions are pure
+virtual; a DLL <i>must</i> provide an implementation for all such functions.</p> </li>
+<li id="GUID-61D75525-ACA5-5419-AB64-323A5BB0EAFD"><p>All functions are <codeph>public</codeph> since
+the published API is all there to be used, there is no need for <codeph>private</codeph> specifications.</p> </li>
+<li id="GUID-A8CF8455-8860-5C64-BA75-FD3880DD8619"><p>It is possible to use
+polymorphic interface DLLs in a more advanced way that allows some of these
+rules to be changed.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5" xml:lang="en"><title>start
+stringtable</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>start stringtable</codeph>  <varname>source-file</varname>  </p>
+<p>[<codeph>exportpath</codeph>  <varname>location</varname>] </p>
+<p>[<codeph>headeronly</codeph>] </p>
+<p> <codeph>end</codeph>  </p>
+<p>A <codeph>start stringtable</codeph> section specifies the source file
+for the string table. A string table is a collection of string identifiers
+with corresponding values. The source file is a simple text file with the
+file extension <filepath>.st</filepath>, and is used to generate the <filepath>.cpp</filepath> and <filepath>.h</filepath> files
+which contains the string constants required for the program. The header file
+location is added to the list of <xref href="GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita">userinclude</xref> directories
+so that the source files may include the generated header. The <filepath>.cpp</filepath> file
+is added to the list of source files, which are built into a component. </p>
+<p>For more information on string tables, refer to <xref href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita">String
+Pools</xref>. </p>
+<p> <b>Note:</b> The <filepath>.cpp</filepath> file need not be added explicitly
+into the list of sources, as this will be done implicitly while building the
+component. </p>
+<p>The optional <codeph>exportpath</codeph>  <varname>location</varname> specifies
+a directory location for the generated header file. </p>
+<p>The optional <codeph>headeronly</codeph> keyword causes only the <filepath>.h</filepath> file
+to be generated, and no <filepath>.cpp</filepath> files are generated or included
+into the project. If the <codeph>exportpath</codeph> is specified, the <filepath>.h</filepath> file
+is copied to the specified location. </p>
+<example><p>This example will generate <filepath>HttpStringConstants.cpp</filepath> and <filepath>HttpStringConstants.h</filepath> using
+the <filepath>HttpStringConstants.st</filepath> file, and export the <filepath>HttpStringConstants.h</filepath> to
+the <filepath>\epoc32\include</filepath> directory.</p><codeblock id="GUID-C38AB36E-AEE7-5D70-A7BF-929B07DFB234" xml:space="preserve">START STRINGTABLE HttpStringConstants.st
+EXPORTPATH    \epoc32\include
+END
+</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14" xml:lang="en"><title>Memory
+Allocation Overview</title><shortdesc>Provides low-level functionality by which a Symbian platform process
+can access and manipulate memory areas.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-B6FA381B-2A42-4D5A-9511-DC634E8AF6C2"><title>Purpose</title> <p>Most client programs do not
+need to use this functionality directly. They are used by programs that are
+explicitly concerned about sharing memory areas between threads within a process,
+or between processes. </p> </section>
+<section id="GUID-39581657-1B46-436B-A8F2-A3F7AB525DA4"><title>Description</title> <p>The API has two key concepts: chunk
+and heap. </p> <p><b>Chunk</b> </p> <p>A
+chunk defines a contiguous region of virtual addresses. It represents memory
+that is addressable by running code. A chunk is the fundamental way in which
+Symbian platform allocates memory and makes it available to running code. </p> <p>The
+range of addressable memory is also referred to as <i>reserved</i> memory. </p> <p>Physical
+addresses representing either memory storage like RAM, or memory-mapped I/O
+devices, are mapped into a subset of a chunk's reserved memory. Such memory
+is said to be <i>committed</i>. </p> <p>When a process is created, it contains
+at least two chunks: </p> <ul>
+<li id="GUID-143BBF82-BAA5-5548-83AC-54DF2067C058"><p>a chunk that contains: </p> <ul>
+<li id="GUID-2A57D6BD-83FD-5C4B-B5AC-CA1BACDD5CB7"><p>the process executable's <codeph>.data</codeph> section
+(initialised global and writable static data) </p> </li>
+<li id="GUID-F6D7AB82-BEB5-5052-9723-B190F12A47ED"><p>the process executable's <codeph>.bss</codeph> section
+(zero filled data) </p> </li>
+<li id="GUID-DC6E22B6-9E12-5181-99DB-D6C2154C513A"><p>user-side stack space
+for all threads that run in that process. </p> </li>
+</ul> </li>
+<li id="GUID-73016FAD-8F84-596C-B048-CD1E1B05AA8B"><p>a chunk to contain the
+heap used by the main thread of the process. </p> </li>
+</ul> <p>If the process executable is loaded into RAM (i.e. it is not ROM
+resident), then there is another chunk to contain the code. </p> <p>On ARM
+processors up to and including those that support the ARMv5 architecture,
+the memory model used by Symbian platform is the <i>moving memory model</i>.
+To guarantee real-time behaviour using this model, each process is limited
+to a maximum of 16 chunks. This means that a program can create up to 14 additional
+chunks. Where the process executable is loaded into RAM, the chunk containing
+the code is effectively global and does not contribute to the 16 chunk per
+process limit. </p> <p>On ARM processors that support the ARMv6 architecture,
+the memory model used by Symbian platform is the <i>multiple memory model</i>.
+Using this model, there is no limit on the number of chunks per process. Where
+the process executable is loaded into RAM, the chunk containing the code is
+specific to the process. </p> <p> <xref href="GUID-DA41F070-0E54-3F8A-B301-39A0C6AFAB38.dita"><apiname>TFindChunk</apiname></xref> is used for
+finding a global chunk created by another process. </p> <p>The user-side interface
+to a chunk is provided by an instance of the <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk</apiname></xref> class. </p> <p><b>Heap</b> </p> <p>A heap is used for explicit dynamic allocation of memory.
+Symbian platform defines C++'s <codeph>new</codeph> operator to create objects
+on the current thread's heap. </p> <p>Heaps may be: </p> <ul>
+<li id="GUID-1ADAF0B8-BB72-5D07-BEA9-359DEFFC25E3"><p>monitored for memory
+leaks: this happens automatically for GUI applications </p> </li>
+<li id="GUID-0F5F3E02-F1E1-56D0-9865-D3DFA440DCF0"><p>shared between threads
+within a process </p> </li>
+<li id="GUID-ED409A70-ECD3-5EE9-9245-42FDEF5CCA42"><p>accessed and manipulated
+at the cell level </p> </li>
+</ul> <p>The heap interface is provided by the <xref href="GUID-9DB4A58C-6FC8-3292-A547-4C161BD188FC.dita"><apiname>RAllocator</apiname></xref> and <xref href="GUID-C5475104-B67A-3722-B11D-DBB930423492.dita"><apiname>MAllocator</apiname></xref> classes.
+This interface is abstract so that device manufacturers can implement heaps
+with different allocation algorithms. Symbian platform provides the <xref href="GUID-EFAFDD75-7E59-306A-882D-317F5564979E.dita"><apiname>RHeap</apiname></xref> class
+as a default heap implementation. In practice, there is no need to know about
+implementation details. </p> <p>When managing the current thread's heap, it
+is more convenient to use the equivalent functions provided by the System
+Static Functions API; this is the <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> class. For example, <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-C035F07D-B6D9-3A21-A323-DAC89137280D"><apiname>User::AllocL()</apiname></xref>.
+The System Static Functions API also provides macros that conveniently wrap
+calls for monitoring heap usage for memory leaks. </p> </section>
+<section id="GUID-7A3524D6-AA39-49A2-9DBC-E3EAEA654A7B"><title>See also</title> <p> <xref href="GUID-506642C2-A14F-55F2-9377-43DDB14F4053.dita">Raw
+Memory Overview</xref>  </p> <p> <xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System
+Static Functions Overview</xref>  </p> <p> <xref href="GUID-5D4B86D3-20C4-5D87-A6C1-225018D32347.dita">Thread
+And Process Management Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e336246_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6DA81F01-FBD7-4167-B722-832888DEC0AD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6DA81F01-FBD7-4167-B722-832888DEC0AD" xml:lang="en"><title>Reserving
+light targets</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>ReserveLightL()</codeph> call reserves the
+light target(s) exclusively for this client. Multiple lights can be specified
+by using bitwise-or.</p><p>A higher priority client can cause lower priority
+client reservation to be temporarily suspended. Commands can still be issued
+in suspended state, but they are not acted upon unless suspension is lifted
+within a specified duration. The suspended client does not receive any notification
+about the suspension. If the light target is already reserved by a higher
+or an equal priority application, reserving still succeeds but gets suspended
+immediately. In such case, only the virtual state of the lights is remembered
+by the session; actual lights are not controlled. When suspended reservation
+is activated, the actual lights state is restored to the same as the virtual
+state.</p><p>The following code snippet demonstrates how to reserve multiple
+light targets:</p><codeblock xml:space="preserve">//aRestoreState = ETrue means that any previously frozen state will be restored.
+// aForceNoCCoeEnv = EFalse means that the CCoeEnv background/foreground status
+// is always used to control further reservations.
+iLight-&gt;ReserveLightL( ( CHWRMLight::EPrimaryDisplay | CHWRMLight::EPrimaryKeyboard ), ETrue, EFalse );</codeblock><p>Calling
+the <codeph>ReserveLightL()</codeph> method without second and third parameters
+is equal to calling <codeph>ReserveLightL( aTarget, EFalse, EFalse )</codeph>,
+that is, any previously frozen state is not restored and the <codeph>CCoeEnv</codeph> background/foreground
+status is always used to control further reservations.</p><p><b>Note</b>:
+Light can be controlled without a reservation, if there is no other client
+with a reservation.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84" xml:lang="en"><title>What
+are elements</title><shortdesc>This topic describes elements. All items that can be stored in
+the Comms Database are elements. The topic also discusses the structure of
+the unique numeric Id and the attributes that control access to elements. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An element is represented by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> class.
+The class is a base class for all items that can be stored in the Comms Database.
+The class contains the data that is common to all items that can be stored
+in the Comms database. </p>
+<p>Elements contain three pieces of information: </p>
+<ul>
+<li id="GUID-42CDC895-ADD7-53E1-86C8-BDCA97874D80"><p>a unique numeric Id
+that defines the location of the element in the database. The Id defines the
+meaning of the element in the database schema as a specific Table, Column,
+Record or Field. A numeric Id also allows for fast access and retrieval of
+an element. </p> </li>
+<li id="GUID-370BB127-A262-561F-BB53-CFD71D7EF61E"><p>a set of attributes
+that controls access to the data. </p> </li>
+<li id="GUID-F533113D-25EF-5CAE-8AA4-FF05CA8894B6"><p>a value that can be
+a single numeric type, a Boolean type, a descriptor, or a composite of one
+or more nested elements. </p> </li>
+</ul>
+<p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> derives from <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref>. <codeph>MMetaDatabase</codeph> provides
+the behaviour that allows an element to operate with the Comms Database. [See
+accessing the database or words to that effect.] </p>
+<fig id="GUID-3FE9490C-8766-5F31-9147-7F20A03BBF2D">
+<image href="GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e65850_href.png" placement="inline"/>
+</fig>
+<section id="GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852"><title>The Element
+Id</title> <p>The <codeph>iElementId</codeph> data member of <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> is
+a 32 bit number that contains: </p> <ul>
+<li id="GUID-4F41A6A2-79FC-5CA7-AC9C-B242D7DC925E"><p>the unique numeric Id
+that shows the location of the element in the database. This numeric Id is
+known as the Element Id. </p> </li>
+<li id="GUID-D8EFDBE9-A897-56F8-939A-E3942FCC34F2"><p>the set of attributes
+that controls access to the data. The bits define the access levels. </p> </li>
+</ul> <p>Both pieces of information are encoded in the 32 bit number. The
+32 bit number is a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TMDBElementId</apiname></xref> type. </p> <p>The <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> class provides member functions to
+access and to change the information in the Element Id. </p></section>
+<section> <p id="GUID-32E556BC-55C3-5FBD-9A60-9708139C20D6"><b>The unique
+numeric Id</b> </p> <p>The unique numeric Id has two parts: the Type Id and
+the Record Id. </p> <p>The Type Id defines the type of element; the Record
+Id identifies an instance of this type of element. </p> <p>The class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> provides the member functions <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBElement::TypeId()</apiname></xref> and <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBElement::RecordId()</apiname></xref> to
+extract this information. </p> <p>Internally, the Type Id includes a 8 bit
+number and a 7 bit number. The 8 bit number is the Table Id and the 7 bit
+number is the Column Id. The Type Id and the Record Id are in defined locations
+in the 32 bit number <codeph>iElementId</codeph>. </p> <fig id="GUID-B3A732DF-8D24-532C-A4AB-D5B42408D832">
+<image href="GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e65930_href.png" placement="inline"/>
+</fig> <p>The header file <filepath>comsdat.h</filepath> contains the constants
+that define the location of these Ids in the 32 bit number: </p> <table id="GUID-1369F999-F42E-5268-AF6F-0D5C9A362878">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Table Id </p> </entry>
+<entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDMaskShowRecordType</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>Column Id </p> </entry>
+<entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDMaskShowFieldType</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>Type Id </p> </entry>
+<entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDMaskShowType</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>Record Id </p> </entry>
+<entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDMaskShowRecordId</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><p id="GUID-EE8E5985-4159-5780-8001-E51EB4821D05"><b> The set of
+attributes that controls access to the data</b> </p><p>The access levels of
+an element are defined by the bits in the element. The <xref href="GUID-2AF9DED8-0AAE-370B-8FA2-B2910939A7B8.dita"><apiname>TCDAttributeFlags</apiname></xref> enum
+defines the access levels of an element. These bits are stored in the fourth
+byte of the <codeph>iElementId</codeph> member of <xref href="GUID-C36F41FE-1776-3735-89F3-DAAAFA7FDC91.dita"><apiname>CMDBElement</apiname></xref>. </p><fig id="GUID-A1C2FF44-AA19-42B8-8F10-E927170A317A">
+<image href="GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e66039_href.png" placement="inline"/>
+</fig><p> <xref href="GUID-DC185E84-1DC0-36F7-9B3D-19B4B3E641D7.dita"><apiname>KCDMaskShowAttributes</apiname></xref> in the header file <filepath>comsdat.h</filepath> defines
+the location of these access control bits in the 32 bit number.</p>  </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283"><title>Image Encoding</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives you more information about the Image Encoding functionality. </p> <section><title>Purpose</title> <p>The image encoding class CImageEncoder provides functions to save the following to files or descriptors: </p> <ul><li id="GUID-E0BCDD5B-933C-5B02-A2E3-775F95226E98"><p>Images originating from the screen. </p> </li> <li id="GUID-61C02273-687B-5BF7-BF34-7BB90273DD0D"><p>Applications such as browsers and paint programs </p> </li> <li id="GUID-2499D229-BAE4-50DA-A2B3-9E6DDED375F5"><p>Photos from cameras or viewer applications </p> </li> </ul> <p><b>Required Background</b> </p> <p>Image Encoding features are provided through Imaging Frameworks and Imaging plugins. The standard formats supported by the encoder plugins are shown in the table in <xref href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita">Imaging Frameworks Overview</xref>. </p> <p><b>Introduction</b> </p> <p>The encoding process has been broken down into two stage process: </p> <ul><li id="GUID-74A226F0-F67C-56D3-BF10-9B9BA4729B58"><p>Creation </p> </li> <li id="GUID-E80A69E3-D077-5C6D-82CA-303F82718A01"><p>Conversion </p> </li> </ul> <p><b>Setup and Configuration Requirements</b> </p> <p>The <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref> classes use synchronous methods to open an image and asynchronous methods to perform conversions or transformations. The asynchronous operations use the standard system of taking a pointer to a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object that is signalled on completion of the requested action. The assumption is that the client application or the calling DLL holds the <codeph>TRequestStatus</codeph> values within active objects. The structure of the active objects is dependent on the code that uses Imaging Frameworks and its own requirements, particularly its internal architecture and how many images are opened simultaneously. </p> <p>In addition to the use of active objects in the interfacing, many of Imaging Frameworks internal functions make extensive use of them to provide asynchronous behaviour. As with any use of an active object it is necessary to have an active scheduler in the same thread as the application making use of the object. The encoder can also be created, so the plugin and framework runs in a separate thread. This is achieved by setting the <codeph>EOptionAlwaysThread</codeph> option when constructing the encoder objects. By running the object in its own thread, the application is shielded from any latency that can occur during image conversion, or possibly due to a badly written plugin. </p> <p> <b> Note:</b> The encoder plugin formats do not support multiframe images or bitmap masks (transparent images). </p> </section> <section><title>Using Image Encoding </title> <p>The Following tasks are covered in this tutorial: </p> <ul><li id="GUID-D520A78B-63C6-57CD-BB28-40E7D88EE837"><p><xref href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita#GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283/GUID-DFE3CD4C-2787-5DEC-A0AC-871CEBD22B11">How to create the object during encoding</xref> </p> </li> <li id="GUID-FE370FAC-ECB1-529F-B951-8FAAFCD60938"><p><xref href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita#GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283/GUID-3CA67D41-A9F2-5D83-A0BC-61E1FDA4AA30">How to convert decoded data to encoded data</xref>  </p> </li> </ul> <p id="GUID-DFE3CD4C-2787-5DEC-A0AC-871CEBD22B11"><b>Basic Procedure For Creation</b> </p> <p>The high level steps to create the object during encoding are as follows: </p> <ol id="GUID-8FA73392-60BE-5D71-AB1B-B8C30EE95B1E"><li id="GUID-8B0FFDEE-614D-5BE8-BCD0-D208AB330FC2"><p>The creation of the encoder object is a synchronous operation performed using one of the following factory constructors: </p> <codeblock id="GUID-8E19493C-A0A1-511A-AD02-96796F464120" xml:space="preserve">static CImageEncoder* FileNewL(RFs&amp; aFs, const TDesC&amp; aDestinationFilename, const TDesC8&amp; aMIMEType, const TOptions aOptions = EOptionNone);
+
+static CImageEncoder* FileNewL(RFs&amp; aFs, const TDesC&amp; aDestinationFilename, const TOptions aOptions = EOptionNone, const TUid aImageType = KNullUid, const TUid aImageSubType = KNullUid, const TUid aEncoderUid = KNullUid);
+
+static CImageEncoder* DataNewL(HBufC8*&amp; aDestinationData, const TDesC8&amp; aMIMEType, const TOptions aOptions = EOptionNone);
+
+static CImageEncoder* DataNewL(HBufC8*&amp; aDestinationData, const TOptions aOptions = EOptionNone, const TUid aImageType = KNullUid, const TUid aImageSubType = KNullUid, const TUid aEncoderUid = KNullUid);
+</codeblock> </li> <li id="GUID-10936CCA-61DE-5983-9C4C-1E4143F8F74F"><p>The <codeph>FileNewL()</codeph> constructors are used to convert image data saved to a file. The two variants of the function enable you to set the imaging plugin to use either by specifying a MIME type, or by specifying an image type and sub-type and optional encoder UID. </p> </li> <li id="GUID-36BF55A5-A2CB-5C5D-BC3D-4269A019FCA7"><p>The <codeph>DataNewL()</codeph> constructors are used to convert image data saved to a buffer. Rather than specifying the destination buffer itself, the <codeph>DataNewL</codeph> functions require a <codeph>HBufC8*</codeph> value that must be set to zero. On successful completion of the conversion the <codeph>HBufC8*</codeph> contains a pointer to an internally generated buffer that contains the converted image data. </p> </li> <li id="GUID-E1B15CF8-1342-5FCA-B74B-A78850BDDDA5"><p>The two variants of the <codeph>DataNewL()</codeph> constructors enable you to specify the imaging plugin to use either by specifying a MIME type, an image type and sub-type, or by specifying the plugin ID itself. </p> </li> </ol> <p id="GUID-3CA67D41-A9F2-5D83-A0BC-61E1FDA4AA30"><b>Basic Procedure For Conversion</b> </p> <p>The high level steps to convert decoded data to Encoded data are as follows: </p> <ol id="GUID-62B573C4-6279-5A32-9017-F038F0B940CD"><li id="GUID-A3DD37B7-04D8-5FED-ACC0-5DB963102D02"><p>Before converting the image data, the destination image format specific data can be set by using <xref href="GUID-27B63129-ABD9-3B6C-882B-6F4501AF8E15.dita"><apiname>CFrameImageData</apiname></xref>. However, the type of data that can be supplied is dependant on the Imaging plugin that is being used. </p> </li> <li id="GUID-4CA47591-EA85-5A6F-95C0-8C46CB727DB3"><p>The format specific data are <xref href="GUID-9F5FFC62-2A6C-307A-8E34-1D9DE874A133.dita"><apiname>TImageDataBlock</apiname></xref> and <xref href="GUID-7E326426-8AE4-3792-8B80-19D2A4B839F3.dita"><apiname>TFrameDataBlock</apiname></xref> derivatives provided by the Imaging plugin. These can be appended to <xref href="GUID-27B63129-ABD9-3B6C-882B-6F4501AF8E15.dita"><apiname>CFrameImageData</apiname></xref> using <xref href="GUID-4CF303A2-1622-3511-8F69-B9F80E298E54.dita"><apiname>AppendImageData()</apiname></xref> and <xref href="GUID-6C6FE0CC-88C5-3C5D-AD4C-1722845AA6DD.dita"><apiname>AppendFrameData()</apiname></xref> at which point <codeph>CFrameImageData</codeph> takes ownership of the data. </p> </li> </ol> <p><b>Example </b> </p> <codeblock id="GUID-3C1D41A3-BDE1-5F8D-81AA-35B56E19BBF4" xml:space="preserve">TJpegImageData imageData = new (ELeave) TJpegImageData;
+
+// Set some format specific data
+imageData-&gt;iSampleScheme = TJpegImageData::EColor444;
+imageData-&gt;iQualityFactor = 95;
+
+iFrameImageData = CFrameImageData::NewL();
+
+// frameData - ownership passed to iFrameImageData after AppendImageData
+User::LeaveIfError(iFrameImageData-&gt;AppendImageData(imageData));
+
+// Do the convert
+iEncoder-&gt;Convert(iRequesStatus,iFrameBitmap,iFrameImageData);
+</codeblock> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext> Guide to Symbian supplied Codecs </linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD"><title>Drawing Text</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate how to draw a line of text and text in a colored box. </p> <section><title>Text</title> <p>The basic way to draw text is to call <codeph>CGraphicsContext::DrawText()</codeph> with a point specifying the bottom left position, as shown below: </p> <fig id="GUID-0FE5E011-9C1D-5F36-AAC2-5F05B023CF84"><image href="GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e178502_href.png" placement="inline"/></fig> <p>Before calling, you must use the graphics context to: </p> <ol id="GUID-EA1605BB-1FD6-5E08-9D24-C8DEAB625A96"><li id="GUID-5CB9A7BD-ABFE-550A-BF43-E12BAF72BB27"><p>Set the font to use </p> </li> <li id="GUID-BB8A0DF7-AD80-5718-8646-2B4E8836FFC7"><p>Set the pen color for the text </p> </li> </ol> <codeblock id="GUID-C3E7D82E-CBE6-5131-B6BA-14F341DB331E" xml:space="preserve">// In this example, we use one of the standard font styles
+CFont* fontUsed = iEikonEnv-&gt;TitleFont();
+gc.UseFont(fontUsed);
+    
+gc.SetPenColor(KRgbBlack);
+    
+TPoint pos(50,50);
+_LIT(KExampleText,"blacktext");
+gc.DrawText(KExampleText,pos);</codeblock> </section> <section><title>Text in a box</title> <p>To draw text in a box, you must specify: </p> <ul><li id="GUID-77C31EC3-67D6-5DFD-954D-E4008990E97D"><p>a rectangle to draw the text in </p> </li> <li id="GUID-9F13BCA1-D087-51CE-80D9-9DD908933BDD"><p>an offset from the top of the rectangle to the text baseline: to center the text, add half the height of the rectangle to half the height of the font's ascent </p> </li> <li id="GUID-DCAF0EFD-FD6B-56DA-89FA-05CEB6684F2D"><p>the text alignment mode: in the example, left alignment is used </p> </li> <li id="GUID-431998D7-53E6-5899-B072-89B1DF5C01E8"><p>a margin: the left margin for left-aligned text, or the right margin for right-aligned text </p> </li> </ul> <p>The following figure show how these fit together: </p> <fig id="GUID-2C7ED0E6-3667-56E4-B776-9EF9C085D746"><image href="GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e178556_href.png" placement="inline"/></fig> <p>In addition to the font and pen color, you can also set the brush for filling the box. </p> <codeblock id="GUID-21B1E44E-AA77-5489-9C57-AEE33519F958" xml:space="preserve">...
+// Draw some text left justified in a box,
+// Offset so text is just inside top of box
+    
+TRect box(20,20,250,100);
+TInt baseline = box.Height() /2 + fontUsed-&gt;FontMaxAscent()/2; 
+    
+TInt margin=10; // left margin is ten pixels
+    
+gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+gc.SetBrushColor(KRgbDarkGray);
+gc.SetPenColor(KRgbWhite);
+    
+_LIT(KExampleText,"Whitetextleftjustified");
+gc.DrawText(KExampleText,
+ box,
+ baseline,
+ CGraphicsContext::ELeft,
+ margin);
+    
+...</codeblock> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6E144992-AF5B-5CA3-9CC1-CFB5941103A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6E144992-AF5B-5CA3-9CC1-CFB5941103A9" xml:lang="en"><title>Using
+the Plug-in Framework</title><shortdesc>Clients of a plug-in framework use the C++ APIs provided by the
+framework for interaction with the framework. Client calls to the interface
+definition are translated directly through <apiname>REComSession</apiname> into
+loading and unloading of the correct implementation library together with
+construction and destruction of an appropriate interface implementation. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-B8EA3CE1-8777-574D-9ECA-45139EBCD939">
+<step id="GUID-3993804F-49BD-5856-836F-02CD8148AC59"><cmd/>
+<info>Link to the ECom framework library, <filepath>ecom.lib</filepath>. </info>
+</step>
+<step id="GUID-80234DBC-9A39-58A1-ACA5-D9421C86E269"><cmd/>
+<info>Include the header file that contains the interface definition. </info>
+</step>
+<step id="GUID-F2C41BC8-232A-5F24-B12D-D13870D11B8D"><cmd/>
+<info>Create an object using the interface instantiation methods and required
+parameters. The object creation functions re over loaded. right variant based
+on inputs available is chosen. </info>
+</step>
+<step id="GUID-5FD0AD96-2BAF-5D44-B9C4-3CBBF6F545B6"><cmd/>
+<info>Use the object for calling the methods provided by the object as per
+requirement. </info>
+</step>
+<step id="GUID-33BC48BE-3605-5BDE-9520-E8CA973050B9"><cmd/>
+<info>Delete the object after use. </info>
+</step>
+<step id="GUID-25033DB0-874E-5060-889D-142A6D34CA05"><cmd/>
+<info>Call <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> to clean up memory. </info>
+</step>
+</steps>
+<postreq><p>The code below depicts the steps involved in using the framework: </p><codeblock xml:space="preserve">LOCAL_C void doExample()
+{
+// object creation
+    CExampleInterfaceDefinition* ex1 = CExampleInterfaceDefinition::NewL(); 
+
+// calling the required methods 
+    ex1-&gt;DoMethodL(); 
+
+// deleting the object after use   
+    delete ex1; 
+
+// memory clean-up
+    REcomSession:;FinalClose(); 
+}
+</codeblock></postreq>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e247199_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6E221034-9A01-53AB-8374-315C38CCA21E" xml:lang="en"><title>Examples
+Showing the use of the SIP Profile API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following sections describe how to use the SIP Profile API. </p>
+<ul>
+<li id="GUID-D5503066-5783-5D3D-9EC3-DBC7CEE398B3"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-82D83B96-FF89-5F6A-9A65-C448F103A2F5">Creating a SIP profile</xref>  </p> </li>
+<li id="GUID-EE2733CC-B951-5970-BC00-2D8F3E0F6EFA"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-72003F70-79B8-5D23-977D-E736AD3E5B42">Modifying a SIP Profile</xref>  </p> </li>
+<li id="GUID-6FCDC117-944D-57D6-BB49-77845972077E"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-27B07919-C5D5-5F8A-B2A3-AC2577E19C92">Enabling a SIP profile</xref>  </p> </li>
+<li id="GUID-CBD94827-C48F-5E91-88F8-A2E962BB08B9"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-628DCA48-F8B4-5E6F-AC1B-731EAB1A9D62">Disabling a SIP profile</xref>  </p> </li>
+<li id="GUID-610AAF1B-B350-5102-9DA4-82FBC04FC527"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-E607BA8F-50CC-5CF6-9D7E-E31319825507">Destroying a SIP Profile</xref>  </p> </li>
+<li id="GUID-3108093C-35E5-56C2-A3C2-03527816E537"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-EABE2455-4D59-58AE-8D02-24FD4A7A82B1">Retrieving a profile</xref>  </p> </li>
+<li id="GUID-1BE93BE1-2B70-53C8-B6FD-48278322517F"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-471F4EBB-2FE4-561D-9B74-555061797C45">Refreshing a SIP profile</xref>  </p> </li>
+<li id="GUID-F6CD986B-C019-58E6-B71D-39F42AB03AA6"><p> <xref href="GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita#GUID-6E221034-9A01-53AB-8374-315C38CCA21E/GUID-289B2BF5-AF58-5E1E-B905-F1255EFC7FEB">Stopping SIP registration</xref>  </p> </li>
+</ul>
+<section id="GUID-82D83B96-FF89-5F6A-9A65-C448F103A2F5"><title>Creating a
+SIP profile</title> <p> <xref href="GUID-5266AB0D-705C-3011-A92B-DA82BC212999.dita"><apiname> CSIPManagedProfileRegistry</apiname></xref> manages
+the SIP profiles and provides the functions to add, update, and remove profiles
+at run time. </p> <p>The following steps describes how to create a SIP profile. </p> <ol id="GUID-F9ECD3BD-52AC-5370-8336-4EEB619B1F58">
+<li id="GUID-C0A00EF9-72F1-53DB-8CCB-BE7B4BF3D7F3"><p>Create a default profile
+that uses the <xref href="GUID-A9C883F9-3C6D-32BF-A278-4DCBDA18F687.dita"><apiname>CreateL()</apiname></xref> interface of <xref href="GUID-B2F66C7C-4E81-307C-B836-314D0A89D8D6.dita"><apiname>CSIPManagedProfileRegistry()</apiname></xref>. <xref href="GUID-A9C883F9-3C6D-32BF-A278-4DCBDA18F687.dita"><apiname>CreateL()</apiname></xref> returns
+an object of type <codeph>CSIPManagedProfile</codeph>. </p> </li>
+<li id="GUID-76CD5953-C5A9-51C0-9E66-2444AFE458D6"><p>Use <codeph>SetParameter()</codeph> of <xref href="GUID-CDE67614-1A7A-3082-8D8D-71645668A0DE.dita"><apiname>CSIPManagedProfile</apiname></xref> to
+set the value for the profile parameters. </p> </li>
+<li id="GUID-8F762BAF-0D4B-580D-8A8B-BE3B68C2BF90"><p>Use <xref href="GUID-5266AB0D-705C-3011-A92B-DA82BC212999.dita#GUID-5266AB0D-705C-3011-A92B-DA82BC212999/GUID-50D99686-5C79-3F7F-9C7D-4FC23EE41832"><apiname>CSIPManagedProfileRegistry::SaveL()</apiname></xref> to
+save the profile when the values are set. </p> </li>
+<li id="GUID-1B40AA8E-6326-5631-B83E-5230192FBC0E"><p>When you call <xref href="GUID-475D1AF4-F8C2-3243-99DC-43419979A858.dita"><apiname>SaveL()</apiname></xref>,
+wait until <xref href="GUID-92312598-A5DA-36B9-AF46-E7EE80452792.dita"><apiname>EProfileCreated</apiname></xref> event is reported in the observer.
+When the event is received the profile is created. </p> </li>
+</ol> <fig id="GUID-13F7B1AB-7F1A-544F-AC9C-26780E4FC517">
+<image href="GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e316513_href.jpg" placement="inline"/>
+</fig> <p>The following code snippet shows how to create and save a profile. </p> <codeblock id="GUID-EFDEE0D4-00C9-520E-B1FA-18E48702DE7F" xml:space="preserve">/*Client must create an instance of the CSIP class. The API used for this is, here TUid must be an application UID.*/
+
+CSIP* CSIP::NewL(const TUid&amp; aUid, MSIPObserver&amp; aObserver); 
+
+/* CSIPManagedProfileRegistry manages SIP profiles and provides functions for adding, updating, or removing profiles at run time. */
+
+iManagedProfileRegistry= CSIPManagedProfileRegistry::NewL(aObserver);
+
+/* CreateL() of CSIPManagedProfileRegistry is used to create a profile with default values. This takes ProfileType as parameter so define a profile type.*/
+
+/*  Profilename */
+    _LIT8( KProfileName, "ims" );
+    
+    // Used to set and get the parameters of the profile
+    CSIPManagedProfile* aProfile = NULL;
+    
+    // Set the profile type , profile name.
+    TSIPProfileTypeInfo typeInfo;
+    typeInfo.iSIPProfileClass = TSIPProfileTypeInfo:: EIms;
+    typeInfo.iSIPProfileName = KProfileName;
+    
+    // Creates the profile of type IETF with default values  
+    aProfile = iManagedProfileRegistry-&gt;CreateL( typeInfo );
+
+    // Set the values in the newly created profile.
+    TUint32 iapId(11);
+    aProfile-&gt;SetParameter(KSIPAccessPointId,iapId);
+    
+            _LIT8(aor,"sip:user@192.168.0.35");
+    aProfile-&gt;SetParameter(KSIPUserAor,aor);
+ 
+// Save the profile
+    iManagedProfileRegistry-&gt;SaveL(*aProfile);
+
+// Wait for EProfileCreated event on the observer.
+</codeblock> </section>
+<section id="GUID-72003F70-79B8-5D23-977D-E736AD3E5B42"><title>Modifying a
+SIP Profile</title> <p>The following steps describe how to modify a SIP profile. </p> <ol id="GUID-AFE64969-68F3-594C-8324-F0943694AB19">
+<li id="GUID-FE7DBAA3-03C5-5CFC-BFB8-C63DDF7AA6A3"><p>The profile is modified
+when you change the profile parameters and save the updated profile to the
+permanent store. </p> </li>
+<li id="GUID-6B61FCF7-C753-534E-BF2D-293FE7A16F6E"><p>When the updated profile
+is saved to the permanent store the application gets the event notification <codeph>EProfileUpdated</codeph>. </p> </li>
+<li id="GUID-614CA2D4-ED93-58A7-B3FC-8F86C3BA3A7C"><p>Depending on the updated
+parameters, the update leads to no actions, to registration or to re-registration.
+The profile is re-registered if it is configured for auto-registration when
+the profile is updated. </p> </li>
+<li id="GUID-9A12EC08-7C67-551E-A7FE-5A114A36F721"><p>The profile must not
+be used by another application while you update the profile. Use the <xref href="GUID-5266AB0D-705C-3011-A92B-DA82BC212999.dita#GUID-5266AB0D-705C-3011-A92B-DA82BC212999/GUID-E6E0D735-28EC-3BFD-8359-68FDC39108EE"><apiname>CSIPManagedProfileRegistry::IsInUseL</apiname></xref> API
+to check if the profile is currently in use. </p> </li>
+</ol> </section>
+<section id="GUID-27B07919-C5D5-5F8A-B2A3-AC2577E19C92"><title>Enabling a
+SIP profile</title> <p>The following steps describe how to enable a SIP profile. </p> <ol id="GUID-1D340099-1F58-5E19-8380-1CC187CB7632">
+<li id="GUID-7E306B08-C5A3-534F-9122-17D81BDAB5C2"><p>A client of the SIP
+Profile API must create a <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> object. </p> <p> <b>Note</b>:
+The client must provide an instance of the class <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> to
+create an object of the type <codeph>CSIPProfileRegistry</codeph>. </p> </li>
+<li id="GUID-E8B43A46-B6F0-5466-A039-D0565EAA0895"><p>The client must implement
+the callback functions defined in the <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref> interface
+to get notified when the status of the profile is changed. </p> </li>
+<li id="GUID-FDB514C2-5B6A-5FB6-AECD-BEF264DD700B"><p>Create an instance of <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> using
+a retrieve function of the <xref href="GUID-DDB0FD0C-267F-3AAB-8519-78065180E0BD.dita"><apiname>CSIPPProfileRegistry</apiname></xref> class. </p> </li>
+<li id="GUID-B3B9F1DF-A195-5E37-84BD-2A951C472BC8"><p>The profile parameters
+are read from the getter functions of the <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>. </p> </li>
+<li id="GUID-47997C80-FE84-5FAF-A5A1-E634215BD362"><p>The client can use the
+profile when you enable it through <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> and
+leaves on failure. </p> </li>
+<li id="GUID-FBC081E2-D61E-58DB-9237-6673FB9231E0"><p>The user must check
+the profile status after the <xref href="GUID-93D33C84-8A6B-3A94-9797-1412489323F0.dita"><apiname>EnableL</apiname></xref> function is called.
+If the profile is not registered after this function is called, the user must
+wait until it gets a notification through the <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref> callback
+interface about the profile registration. </p> </li>
+</ol> <fig id="GUID-9300C461-D490-5E0B-84A6-AD40F95B8DE7">
+<image href="GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e316648_href.jpg" placement="inline"/>
+</fig> <p>The following code snippet shows how to enable a SIP profile. </p> <codeblock id="GUID-1A52EE02-D6E9-5795-995B-6B5ADFD131B4" xml:space="preserve">
+/*With the assumption that the profile was created and is saved to the persistent storage. */
+//Create an Instance of SIP client
+
+iSip = CSIP::NewL( aAppUid );
+
+//use CSIPProfileRegistry to get the saved profile.
+
+iProfileRegistry = CSIPProfileRegistry::NewL(*iSip, *this);
+
+//Retrieve the profiles by the AOR
+
+_LIT8(KAor,"sip:user@10.192.192.43");
+TDesC8 aor(KAor);
+
+RPointerArray&lt;CSIPProfile&gt; profiles;
+
+/* Find and put the matching profiles by the given AOR into the pointer array.
+Returns the set of profiles which has the provided AOR.*/
+
+iProfileRegistry-&gt;ProfilesL(KAor,profiles); 
+
+// Check the profile count. Get the required profile if the count is positive non-zero.
+TInt profile_cnt =   profiles.Count() ;
+iProfile = profiles[0];
+iProfileRegistry-&gt;EnableL( *iProfile, *this );
+
+//Application gets the event EProfileRegistered if the registration is successful. 
+</codeblock> </section>
+<section id="GUID-628DCA48-F8B4-5E6F-AC1B-731EAB1A9D62"><title>Disabling a
+SIP profile</title> <p>The following steps describes how to disable a SIP
+profile. </p> <ul>
+<li id="GUID-8EF332BF-6FD9-50B2-B29C-A24B29B4829D"><p>A client of the SIP
+Profile API must create a <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> object </p> <p> <b>Note</b>:
+The client must provide an instance of the class <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> to
+create a <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> object. </p> </li>
+<li id="GUID-0715DDFB-639B-5843-BFC8-75E53D807698"><p>The client must implement
+the callback functions defined in the <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref> interface
+to get notified with the events when the status of the profile is changed. </p> </li>
+<li id="GUID-8C06A1DB-BAE9-5718-B10D-3D262981B100"><p>Use retrieve function
+of the class <xref href="GUID-DDB0FD0C-267F-3AAB-8519-78065180E0BD.dita"><apiname>CSIPPProfileRegistry</apiname></xref> to create an instance
+of <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>. </p> </li>
+<li id="GUID-4A1D7F52-7146-541C-91AE-E9CB5B8D5DD5"><p>The profile parameters
+are read from the getter functions of the <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>. </p> </li>
+<li id="GUID-3D2ADA9A-DC9B-501D-B6DA-68BDA1B747FA"><p>Check the registration
+status of the profile that uses the getter functions of <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>.
+Disable the profile if it is registered. </p> </li>
+<li id="GUID-E042394C-6AF3-5951-8F26-C4473DBDD143"><p>An application gets
+the notification event <codeph>EProfileDeregistered</codeph> if the de-registration
+is successful, otherwise it leaves. The error is sent to the application through
+the <codeph>ProfileRegistryErrorOccurred</codeph> callback function. </p> </li>
+</ul> <p>The following code snippet shows how to disable a SIP profile. </p> <codeblock id="GUID-40C08581-81ED-5A7E-90D9-36966992191A" xml:space="preserve">/*With the assumption that the profile was created and is saved to the persistent storage. 
+//Create an instance of SIP client
+iSip = CSIP::NewL( aAppUid
+
+/*use CSIPProfileRegistry to get the saved profile.*/
+iProfileRegistry = CSIPProfileRegistry::NewL(*iSip, *this);
+
+ /*Retrieve the profiles by the AOR*/
+_LIT8(KAor,"sip:user@10.192.192.43");
+TDesC8 aor(KAor);
+ 
+RPointerArray&lt;CSIPProfile&gt; profiles;
+
+// Find and put the matching profiles by the given AOR into the pointer array
+// Returns the set of profiles which has the provided AOR.
+iProfileRegistry-&gt;ProfilesL(KAor,profiles); 
+
+/* Check the profile count. Get the required profile if the count is positive non-zero.*/
+TInt profile_cnt =   profiles.Count() ;
+iProfile = profiles[0];
+
+// Registered is a bool type variable. Check the registration status of the iProfile. 
+// Registered holds TRUE if it is registered otherwise FALSE
+iProfile-&gt;GetParameter( KSIPProfileRegistered, registered );  
+
+/* If the iProfile is registered ( the Registered variable must hold TRUE for iProfile )*/
+/* Disable API returns KErrNone if the profile was disabled successfully otherwise there is a system-wide error.*/
+CSIPProfileRegistry::Disable(*iProfile)
+</codeblock> </section>
+<section id="GUID-E607BA8F-50CC-5CF6-9D7E-E31319825507"><title>Destroying
+a SIP Profile</title> <p>When you destroy a SIP profile it is permanently
+removed from the permanent storage and it cannot be used. The profile information
+is removed from the <filepath>sipprofiles.dat</filepath> file in Epoc32\winscw\c\private\101F413C. </p> <p>The
+following steps describe how to destroy a SIP profile. </p> <ol id="GUID-04F9358C-2AED-58F7-9404-01A4588590D1">
+<li id="GUID-3E72E3A2-3A3B-5433-8F38-6EB5AE517E50"><p>When the profile is
+destroyed the application gets the event <codeph>EProfileDestroyed</codeph>. </p> </li>
+<li id="GUID-D562B0C1-DC27-5615-AB19-70A978C4AF41"><ul>
+<li id="GUID-EDF14357-0BCB-539C-B569-01F19C02265E"><p>Registered: The removal
+is two-step process, de-register the profile and remove the profile. </p> </li>
+</ul> <ul>
+<li id="GUID-A1EC272B-AF21-572D-B16E-367EF21796BE"><p>De-registered : Removes
+the profile from the permanent storage and the application is notified with
+the event EProfileDestroyed. </p> </li>
+</ul> </li>
+</ol> <p>The following code snippet shows how to disable a profile. </p> <codeblock id="GUID-0784D25C-7AA0-53C1-B386-AC54F072833D" xml:space="preserve">//Function leaves on failure.
+CSIPManagedProfileRegistry::DestroyL(CSIPProfile&amp; aSIPProfile);
+</codeblock> </section>
+<section id="GUID-EABE2455-4D59-58AE-8D02-24FD4A7A82B1"><title>Retrieving
+a profile</title> <p><b>Retrieving a default profile</b> </p> <p>The following
+code snippet shows how to retrieve the default profile. </p> <codeblock id="GUID-3D64A865-38B6-539F-8C6B-CE10996B24A3" xml:space="preserve">// Retrieving a default profile.
+CSIPProfile* profile = iProfileRegistry-&gt;DefaultProfileL();
+
+// When a client retrieves a profile, its ownership is transferred to that client, so it becomes responsible 
+// for deleting the instances when they are no longer needed.
+
+delete profile;
+</codeblock> <p><b>Retrieving profiles by type</b> </p> <p>The following code
+snippet shows how to retrieve profiles by type. </p> <codeblock id="GUID-26097346-72B3-51A9-ABB3-37B8B138B28D" xml:space="preserve">// To retrieve more than one profile, the client must create
+// an RPointerArray object to holding pointers to instances of CSIPProfile.
+
+RPointerArray&lt;CSIPProfile&gt; profiles;
+
+// The wanted type is defined using a variable of type TSIPProfileTypeInfo.
+
+TSIPProfileTypeInfo type;
+type.iSIPProfileClass = TSIPProfileTypeInfo::EInternet;
+type.iSIPProfileName = _L8("IETF");
+
+// Profiles matching a given type are returned in the array.
+iProfileRegistry-&gt;ProfilesL(type, profiles);
+...
+// When a client retrieves a profile, its ownership is transferred to that
+// client, so it becomes responsible for deleting the instances when they are
+// no longer needed.
+profiles.ResetAndDestroy();
+</codeblock> <p><b>Retrieving profiles by matching an AOR</b> </p> <p>The
+following code snippet shows how to retrieve profiles by matching an AOR. </p> <codeblock id="GUID-71C88079-A622-5C95-B6C4-91066E99D021" xml:space="preserve">// To retrieve more than one profile, the client must create
+// an RPointerArray object to hold pointers to instances of CSIPProfile.
+RPointerArray&lt;CSIPProfile&gt; profiles;
+
+// Profiles matching a given AOR are returned in the array.
+iProfileRegistry-&gt;ProfilesL(_L8( "sip:jane.doe@foo.com" ), profiles );
+...
+
+// When a client retrieves a profile, its ownership is transferred to that
+// client, so it becomes responsible for deleting the instances when they are no longer needed.
+profiles.ResetAndDestroy();
+</codeblock> </section>
+<section><title>Getting the registration events</title> <p>The following code
+snippet shows how to get the registration events for different scenarios. </p> <codeblock id="GUID-4BCCE827-AD41-5DB0-A71F-611F1DF4BE25" xml:space="preserve">// A callback function, which must be implemented by the client, is called when the registration status 
+of a profile owned by the client is changed.
+
+void CMySIPClient:: ProfileRegistryEventOccurred(TUint32 aProfileId,
+MSIPProfileRegistryObserver::TEvent aEvent)
+  {
+  iProfileId = aProfileId;
+  switch(aEvent)
+    {
+    case EProfileCreated:
+      {
+      iEventId = EAdded;
+      break;
+      }
+    case EProfileUpdated:
+      {
+      iEventId = EUpdated;
+      break;
+      }
+    case EProfileRegistered:
+      {
+      iEventId = CMySIPClient::ERegistered;
+      break;
+      }
+    case EProfileDeregistered:
+      {
+      iEventId = CMySIPClient::EDeregistered;
+      break;
+      }
+    case EProfileDestroyed:
+      {
+      iEventId = ERemoved;
+      break;
+      }
+    default:
+      break;
+    }
+}</codeblock> </section>
+<section id="GUID-471F4EBB-2FE4-561D-9B74-555061797C45"><title>Refreshing
+a SIP profile</title> <p>The SIP profile can use either WLAN or GPRS connections
+to register to the SIP server. In case of WLAN, a registered SIP profile changes
+its state to an unregistered state when the handset is out of WLAN coverage.
+On re-entering the WLAN zone, the WLAN automatically scans to identify the
+available access points and then the SIP profile is automatically registered
+back with the server. This process is time consuming and is not efficient.
+So, the client uses the <xref href="GUID-1AEB6899-9942-3BBC-9ABA-8C0ACFCE3174.dita"><apiname>RefreshEnableL()</apiname></xref> function to: </p> <ul>
+<li id="GUID-A19E0054-71CA-55A4-BF75-9481189D81DC"><p>Initiate the SIP registration
+automatically. </p> </li>
+<li id="GUID-E42A6C7C-0238-5C33-9CDA-4691801D8E04"><p>Reduce the response
+time for the SIP registration. </p> </li>
+<li id="GUID-54F38CF7-D29D-5D30-954E-D7DD88D6B022"><p>Improve the efficiency
+of the application using the SIP stack during registration. </p> </li>
+</ul> <p>The <xref href="GUID-D5A82B9C-A86E-318F-85D7-B9DC69968DB0.dita"><apiname>RefreshEnableL</apiname></xref> API refreshes the connection
+on the used access point if it is not active. Refresh enabling a profile means
+that the user has enabled the profile but is unregistered because of a connection
+loss. For example, in a WLAN network, a connection refresh request to the
+bearer monitor starts the WLAN scanning if it is stopped. When the Connection
+Active notification is received, the stack automatically registers the profile
+and gives a notification to the client with the event <xref href="GUID-F78ECFEB-441F-3D55-9909-A3F82F738F7E.dita"><apiname>EProfileRegistered</apiname></xref> through
+the <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref>. </p> <p>To refresh enable
+a profile, do the following steps: </p> <ul>
+<li id="GUID-221E3B9E-86DF-5200-ADA6-55E724688028"><p>Start the SIP Profile
+server. </p> </li>
+<li id="GUID-59833E8F-9619-5C72-8891-2E2D63B6B8CF"><p>Fetch the profile that
+must be refresh enabled from the SIP Profile Server. </p> <ul>
+<li id="GUID-0C52D86D-3ADA-5D6D-AEC5-07D1554A9C11"><p>If the profile is not
+Enabled the <xref href="GUID-E72E5C9A-ADAE-346A-8EF9-DACD7D23F318.dita"><apiname>RefreshEnable</apiname></xref> API leaves with <codeph>KErrArgument</codeph> error. </p> </li>
+<li id="GUID-EFC454B5-6F99-58A3-B3ED-9983DE0C1A4E"><p>If the profile is Enabled
+and in a Registered state then the API leaves with <codeph>KErrAlreadyExists</codeph> error. </p> </li>
+<li id="GUID-6B5728C4-F42C-5208-A6E4-1AF5641A13E3"><p>If the profile is Enabled
+and in an Unregistered state then the <xref href="GUID-E72E5C9A-ADAE-346A-8EF9-DACD7D23F318.dita"><apiname>RefreshEnable</apiname></xref> API
+refreshes the connection through <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-956F2ADC-40D6-3C15-949A-80789DF04550"><apiname>CSIPConnection::RefreshConnection()</apiname></xref> API.
+The profile receives notification about the active connection and it automatically
+registers again and sends <xref href="GUID-F78ECFEB-441F-3D55-9909-A3F82F738F7E.dita"><apiname>EProfileRegistered</apiname></xref> event to the
+application. </p> </li>
+</ul> </li>
+<li id="GUID-9CA4CA87-17C7-54D0-AEAF-F415DA5D934E"><p>A REGISTER request sent
+to the registrar server. </p> </li>
+<li id="GUID-FF40934C-588D-5ED6-8041-410103FB6D53"><p>The registration status
+of the profile is set to Registered. </p> </li>
+</ul> <p>The following sequence diagram shows how to enable a profile to refresh. </p> <fig id="GUID-5EF1953C-E56D-59C2-B443-F1B77DD7E73D">
+<image href="GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e316963_href.jpg" placement="inline"/>
+</fig> <p>The following code describes how to refresh enable a profile. </p> <codeblock id="GUID-1A13F3D3-C4B7-50E5-B5AF-F0CABF02758C" xml:space="preserve">//Checks if the profile is already enabled and requests the Profile Agent to refresh it.
+// If the profile is not enabled it leaves with KErrArgument. 
+
+void RefreshEnableL(CSIPProfile&amp; aSIPProfile, MSIPConnectionObserver&amp; aObserver)
+</codeblock> </section>
+<section id="GUID-289B2BF5-AF58-5E1E-B905-F1255EFC7FEB"><title>Stopping SIP
+registration</title> <p>In a setup, where there is no registrar, the SIP stack
+tries to send REGISTER messages to the network for at least 3 minutes and
+reserves the access point usage. During these 3 minutes the client cannot
+use another WLAN access point without destroying the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> <p>The <xref href="GUID-A36FEEBB-C9E1-3C99-9B9E-09C7530F31C4.dita"><apiname>ForceDisable</apiname></xref> API
+of the SIP stack stops all registration attempts and releases the access point.
+The <xref href="GUID-A36FEEBB-C9E1-3C99-9B9E-09C7530F31C4.dita"><apiname>ForceDisable</apiname></xref> API in the profile agent module improves
+the responsiveness of the applications using the SIP stack. It avoids situations
+where an application is waiting for the SIP stack to complete a registration
+procedure. </p> <p>To use the <xref href="GUID-A36FEEBB-C9E1-3C99-9B9E-09C7530F31C4.dita"><apiname>ForceDisable</apiname></xref> API the application
+must have Network Control capability. If the application does not have Network
+Control capability and invokes the <xref href="GUID-A36FEEBB-C9E1-3C99-9B9E-09C7530F31C4.dita"><apiname>ForceDisable</apiname></xref> API, then
+it receives <codeph>ErrPermissionDenied (-46</codeph>) error. Sending a <xref href="GUID-A36FEEBB-C9E1-3C99-9B9E-09C7530F31C4.dita"><apiname>ForceDisable</apiname></xref> API
+does not force the SIP stack to send any message to the network, instead it
+destroys the SIP transaction for that profile and cleans all the resources
+associated with that profile. The Profile Agent also notifies all the observers
+with the event <xref href="GUID-1B01576C-59DC-3958-9631-3094ED0DB46D.dita"><apiname>EProfileForciblyDisabled</apiname></xref>. </p> <p>The following
+code describes how to forcibly disable a profile. </p> <codeblock id="GUID-3D1556EB-AD13-5640-8104-83D08BF0D207" xml:space="preserve">// With the assumption that the profile is created and is saved to the persistent storage create an instance of the SIP client
+iSip = CSIP::NewL( aAppUid );
+
+// Use CSIPProfileRegistry to get the saved profile.
+iProfileRegistry = CSIPProfileRegistry::NewL(*iSip, *this);
+
+// Retrieve the profiles by the AOR
+_LIT8(KAor,"sip:user@10.192.192.43");
+TDesC8 aor(KAor); 
+RPointerArray&lt;CSIPProfile&gt; profiles;
+
+// Find and add the matching profiles by the given AOR into the pointer array
+// Returns the set of profiles which has the provided AOR.
+iProfileRegistry-&gt;ProfilesL(KAor,profiles); 
+
+// Check the profile count. Get the required profile if the count is positive non-zero.
+TInt profile_cnt =   profiles.Count() ;
+iProfile = profiles[0];
+
+// If the iProfile is registered (the Registered variable must hold TRUE for iProfile)
+// Disable API returns KErrNone if the profile is disabled successfully otherwise there is a system-wide error.
+CSIPProfileRegistry::ForceDisable(*iProfile);</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e247075_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6E385BCC-8AD8-5CCD-9378-86127443B407.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6E385BCC-8AD8-5CCD-9378-86127443B407" xml:lang="en"><title> Package
+File Examples</title><abstract><p>This section describes the following package file examples:</p></abstract><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e92718_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07" xml:lang="en"><title>HybridApp:
+Demonstrating P.I.P.S. Hybrid Applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example shows how to develop P.I.P.S. hybrid applications. The example
+uses both pure C and native Symbian C++ APIs. </p>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-5a0c76f0-30fe-4695-af85-4dbb6b05e42e.zip" scope="external">HybridApp.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-5a0c76f0-30fe-4695-af85-4dbb6b05e42e.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p>This example displays the memory information
+of all available drives of the system. As P.I.P.S. APIs cannot be used to
+access these drives, native Symbian C++ APIs are used. The <codeph>RFs::Drive()</codeph> and <codeph>RFs::Volume()</codeph> APIs
+are used to access the drives and get their memory information. </p> <p>It
+displays the drive information by using the standard Input/Output functions
+defined in P.I.P.S. libraries. The <codeph>DescToChar()</codeph> function
+defined in the example converts the native Symbian descriptor strings to C
+strings. As the drive name is stored in a descriptor, the example uses this
+function to convert it to a C string. </p> </section>
+<section><title>Build</title> <p>The following statements are present in all
+the <filepath>.mmp</filepath> files of the example: </p> <codeblock id="GUID-4B6DD4ED-6044-5294-A2A1-91CFCD3FFE31" xml:space="preserve">SYSTEMINCLUDE epoc32\include\stdapis
+LIBRARY libc.lib
+STATICLIBRARY libcrt0.lib</codeblock> <p> <b>Note:</b> You require these statements
+because of the following reasons: </p> <ul>
+<li id="GUID-90620295-032C-5057-9D1D-04064322C0A6"><p>The <filepath>epoc32\include\stdapis</filepath> directory
+contains header files such as, <filepath>stdio.h</filepath>, <filepath>unistd.h</filepath> and
+so on that are required to build an Open Environment application. </p> </li>
+<li id="GUID-3CC12EEF-4472-5782-A1F0-81B576B99249"><p>The <filepath>libc.lib</filepath> file
+contains the definitions of all functions that are defined in the header files
+associated with this example. </p> </li>
+<li id="GUID-CADEFC9F-45F6-5E13-8336-6EC6457A102E"><p>The <filepath>libcrt0.lib</filepath> file
+provides the <codeph>E32Main()</codeph> function, which is the entry point
+for the <codeph>main()</codeph> function of the example. </p> </li>
+</ul> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian
+OS build process</xref> describes how to build this example. </p> <p>For the
+emulator, the example builds an executable file called <filepath>hybridapp.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> directory. </p> </section>
+</conbody><related-links>
+<link href="GUID-38BE7105-309E-5372-98EE-BCA0ADD0ACBA.dita"><linktext>Hybrid Applications</linktext>
+</link>
+<link href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita"><linktext>Build Process</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6E52C463-5489-591F-859D-68EAD5BA80FD"><title>Multimedia Framework Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces the Multimedia Framework (MMF) audio and video client interfaces. </p> <section id="GUID-BD6B3BA5-498F-5F8F-96CA-24B0412B63EE"><title>Purpose</title> <p>Multimedia Framework (MMF) provides several client interfaces that encapsulate a lightweight plugin framework. These interfaces enable you to manipulate the audio and video features of the Symbian platform. </p> </section> <section><title>Architectural Relationships</title> <p>The following diagram shows how the MMF client interfaces interact with the Multimedia Controller Framework and the Media Device Framework (MDF). </p> <fig id="GUID-2B9D4325-D2CA-5436-BAC4-24D6366B96C9"><title>
+             Multimedia Framework - client utilities 
+          </title> <image href="GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e286618_href.png" placement="inline"/></fig> <p><b>MMF Controller Framework</b> </p> <p>The MMF Controller Framework provides support for multimedia plugins within the Symbian platform. The main type of plugin for the MMF Controller Framework is the controller plugin. Each controller plugin provides support for one or more multimedia formats, for example, MP3 or AVI. </p> <p> <b>Note:</b> In addition to controller plugins, the Multimedia framework can also be extended through format encoder/decoder, codec, and sink/source plugins. For more information about plugins, see <xref href="GUID-B58DEF65-B08F-5D0B-98E7-EB8DB7082F8B.dita">How to write Multimedia Framework plugins</xref>. </p> <p>The player and recorder interfaces of both audio and video and also the audio converter interface use the controller plugins provided by the MMF Controller Framework. These plugins provide the functionality to convert, interpret, and play audio and video data. The resultant data from the plugins can then be directed to one or more sinks such as a file, or directly to a screen or lower level device driver. </p> <p>The video recorder interface can also interact with the Onboard Camera, through a video controller plugin, to capture video. For more information about capturing video, see <xref href="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita">Video Capture Tutorial</xref>. </p> <p> <b> Note:</b> Tone player and audio streaming are also provided as part of the MMF but do not interact with controller plugins. Input and output is already in a known data format and so does not require a plugin for encoding or decoding. As a result, they bypass the MMF Controller Framework. </p> <p><b>Media Device Framework</b> </p> <p>Media Device Framework is the layer below the controller plugins and above the hardware. It provides a layer of abstraction for the audio and video hardware. The MDF consists of DevSound, for audio input and output, and DevVideo for video. </p> <p>For more information about DevSound, see <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound Overview</xref>. For more information about DevVideo, see <xref href="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita">DevVideo Overview</xref>. </p> <p><b>DRM Support</b> </p> <p>The Symbian platform provides support for playback of Digital Rights Management (DRM) protected audio and video content by making use of the Content Access Framework (CAF). For more information about the CAF, see <xref href="GUID-7EE46FD9-DC9E-5C1F-9AC5-48F5212AF0CA.dita">Content Access Framework</xref>. </p> <p> <b> Note:</b> In order to access any DRM protected content using Symbian multimedia, the client process must have the DRM capability. </p> </section> <section><title>Description</title> <p>The features made available by the MMF client interfaces are: </p> <ul><li id="GUID-DE436989-1892-5D7E-94A8-AC37E2E90B9F"><p>Audio playing, recording, and conversion - An interface consisting of three classes; <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility</apiname></xref>, <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref>, and <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref>. These classes provide methods to create, play, and manipulate audio data stored in files, descriptors, and URLs. </p> </li> <li id="GUID-3A1A5D7D-376D-5633-AD78-D19D0B771A41"><p>Audio streaming - An interface consisting of two classes; <xref href="GUID-92BDB3AF-D9DB-35E2-AC6F-6435D3D1A4D8.dita"><apiname>CMdaAudioInputStream</apiname></xref> and <xref href="GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D.dita"><apiname>CMdaAudioOutputStream</apiname></xref>. These classes provide methods for recording and playing audio streams such as audio from a web address. </p> <p> <b> Note:</b> There are no explicit interfaces for video streaming. However, the Onboard Camera can be used to achieve video input streaming, and direct screen access can be used to achieve video output streaming. For more information about the Onboard Camera, see <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard Camera Overview</xref>. </p> </li> <li id="GUID-0F2716B1-3D7A-5A18-B84C-5BBB9354F1AB"><p>Tone playing - An interface consisting of a single class <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref>. This class provides methods for playing and configuring single and sequenced tones as well as DTMF (Dual Tone Multi-Frequency) strings. </p> </li> <li id="GUID-279F8A4B-6D73-5F87-8424-371DE1C01A9F"><p>Video playing and recording - An interface consisting of two classes <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> and <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita"><apiname>CVideoRecorderUtility</apiname></xref>. These classes provide methods to create, play, and manipulate video clips with or without audio tracks stored in files, descriptors, and URLs. </p> </li> </ul> <p><b>Observer Classes</b> </p> <p>For each multimedia client interface, there is a corresponding mixin class that must be implemented by the client. For example, to use the audio player utility you must implement the observer mixin class <xref href="GUID-5CD5C032-68A4-3024-85EF-B073C8284D6E.dita"><apiname>MMdaAudioPlayerCallback</apiname></xref>. </p> <p>When instantiating any of the MMF interfaces, it is necessary to provide a reference to a class that implements the appropriate mixin class. This allows the MMF to notify the client of events that occur and also to notify the client of errors that may occur. </p> </section> <section><title>Multimedia Framework Tutorials</title> <p>The following tutorials are provided: </p> <ul><li id="GUID-D746F0B6-9861-50BE-BA03-B60BC42E6358"><p><xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita">How to use the audio convert utility</xref>  </p> </li> <li id="GUID-390F4725-144B-51A4-86CE-B1EC8D27BF78"><p><xref href="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita">How to use the audio record utility</xref>  </p> </li> <li id="GUID-D26F4157-1EA7-526B-B847-07D08D92B1FA"><p><xref href="GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita">How to use the audio player utility</xref>  </p> </li> <li id="GUID-9F9651A0-383F-5171-AAF0-355327361C25"><p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita">Audio Input Stream Tutorial</xref>  </p> </li> <li id="GUID-7C271F01-7479-5727-88F3-F028219A579C"><p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita">Audio Output Stream Tutorial</xref>  </p> </li> <li id="GUID-816AB33E-AE82-59AC-941D-70C1BE4E8120"><p><xref href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita">Video Client Tutorials</xref>  </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio Client Overview</xref>  </p> <p><xref href="GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita">Audio Input Stream Overview</xref>  </p> <p><xref href="GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita">Audio Output Stream Overview</xref>  </p> <p><xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E"><title>Setting Up Window Server Logging</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic shows an example <filepath>wsini.ini</filepath> configuration file to explain how to set up Window Server logging. </p> <p>Here is the example: </p> <codeblock id="GUID-C9B12FF3-B586-54E7-8CFF-658737853687" xml:space="preserve">LOG FL
+LOGP C:\DATA\WSERV.LOG
+LOGENABLE
+REBOOT 1
+AUTOCLEAR 1
+SCREENMODE COLOR256</codeblock> <p>The first three lines control respectively, the choice of logging DLL, the location of the generated log file, and the time at which logging begins. <codeph>LOGENABLE</codeph> ensures that logging begins as soon as the Window Server boots. If no log file location is specified, the default on the emulator is <filepath>epoc32\winscw\c\private\ </filepath> and on phones is <filepath>c:\system\data\</filepath>. </p> <p>To enable logging on the emulator, add these settings to the default <filepath>wsini.ini</filepath> file, located in <filepath>\epoc32\release\winscw\</filepath> <i>variant</i> <filepath>\z\system\data\</filepath> (where <i>variant</i> is either <filepath>udeb</filepath> or <filepath>urel</filepath>). On a target phone, copy the <filepath>wsini.ini</filepath> file into <filepath>Z:\system\data\</filepath>, overriding the version in ROM, and restart the Window Server. </p> <p>In order to carry out logging on a target phone, after making any necessary changes to the <filepath>wsini.ini</filepath> file, copy the logging DLL to the <filepath>\sys\bin\</filepath> directory on the phone. </p> <p>To enable and disable logging, the following shortcut keys can be used: </p> <p> <userinput>Alt</userinput> +<userinput>Ctrl</userinput> +<userinput>Shift</userinput> +<userinput>E</userinput> ("<userinput>E</userinput> " for Enable) </p> <p> <userinput>Alt</userinput> +<userinput>Ctrl</userinput> +<userinput>Shift</userinput> +<userinput>D</userinput> ("<userinput>D</userinput> " for Disable) </p> <p>Other useful shortcut keys are: </p> <ul><li id="GUID-4DD20C41-4FB2-58FC-B262-397191966246"><p> <userinput>Alt</userinput> +<userinput>Ctrl</userinput> +<userinput>Shift</userinput> +<userinput>W</userinput> (dumps the full window tree) </p> </li> <li id="GUID-B127233F-A28D-5357-9FD6-1CBB1DE7CCE4"><p> <userinput>Alt</userinput> +<userinput>Ctrl</userinput> +<userinput>Shift</userinput> +<userinput>H</userinput> (dumps the contents of the Window Server's heap) </p> </li> </ul> <p>These two options work whether or not logging is enabled, provided a logging DLL has been specified. </p> <p>Note that in Window Server client code, invoking </p> <ul><li id="GUID-70882334-1192-5ADA-8CB9-97F1F0BB493B"><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-6BCABC6F-E33D-3CD6-A1C5-FE8D883307BD"><apiname>RWsSession::LogCommand()</apiname></xref> allows the Window Server client to enable or disable logging of Window Server events. </p> </li> <li id="GUID-36F31D32-2B1A-5F5D-B9D3-0BBDBDE64151"><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-F88F3A17-6010-3A0C-89DD-956E7092A862"><apiname>RWsSession::LogMessage()</apiname></xref> writes the buffer descriptor specified to the log file. </p> </li> </ul> </conbody><related-links><link href="GUID-AA02BFA9-E62E-56FC-BF22-8FE092ABD9DA.dita"><linktext>The wsini.ini File</linktext> </link> <link href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita"><linktext>The wsini.ini File
+                Reference</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6EE0CB66-A759-5E0C-884D-90895F35F267.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6EE0CB66-A759-5E0C-884D-90895F35F267" xml:lang="en"><title> Transactions</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6EF91E47-F931-5AB3-9050-C545D9225E03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6EF91E47-F931-5AB3-9050-C545D9225E03" xml:lang="en"><title>Audio Component Library</title><shortdesc>This section describes the Audio Component library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F120C75-4D58-405C-8713-0626EE22E5DF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6F120C75-4D58-405C-8713-0626EE22E5DF" xml:lang="en"><title>Setting
+the title pane touch observer</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To set the title pane touch observer:</p>
+<ol>
+<li id="GUID-D0B16DD2-3848-4988-843E-17A3E21FE916"><p>Provide an observer
+class that implements the <codeph>MaknTitlePaneObserver</codeph> interface. </p><codeblock xml:space="preserve">class MyTitlePaneObserver : public MAknTitlePaneObserver
+    {
+public:
+    void HandleTitlePaneEventL( TInt aEventID );
+    };
+</codeblock></li>
+<li id="GUID-0C78F9B0-EA40-497F-BF91-783C77873128"><p>Get a pointer to the
+title pane via the status pane pointer.</p><codeblock xml:space="preserve">iStatusPane = static_cast&lt;CAknAppUi*&gt;( CEikonEnv::Static()-&gt; EikAppUi() )-&gt;StatusPane();
+if( !iStatusPane )
+    {
+    User::Leave( KErrNotFound );
+    }
+ 
+iTitlePane = ( CAknTitlePane* )iStatusPane-&gt;ControlL( TUid::Uid( EEikStatusPaneUidTitle ) );
+if( !iTitlePane )
+    {
+    User::Leave( KErrNotFound );
+    }
+</codeblock></li>
+<li id="GUID-E486893E-7AFD-42DF-B459-EBAD38EE8BDC"><p>Set the observer using
+the <codeph>SetTitlePaneObserver</codeph> method.</p><codeblock xml:space="preserve">iTitlePane-&gt;SetTitlePaneObserver( this );</codeblock></li>
+</ol>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F2BFFD4-9A2A-5EEC-87A2-3B60CB7F9CD5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6F2BFFD4-9A2A-5EEC-87A2-3B60CB7F9CD5"><title>Character Encoding and Conversion Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Charconv Framework component provides APIs and built-in converters to convert text between Unicode and other character encodings. </p> <p>The Component also provides APIs which list the encodings available on the device and which select a specific encoding to convert to or from. </p> <section><title>Architecture</title> <p>The Charconv Framework is part of the Character Conversion (Charconv) Framework collection. </p> </section> <section><title>APIs</title> <p>The Charconv Framework includes the following APIs: </p> <table id="GUID-BD09E58E-225A-5EF9-AFF1-5AEC93161D6C"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-A03A0ACA-00B2-350E-8ED7-DB8C9B0D83CC.dita"><apiname>CCnvCharacterSetConverter</apiname></xref>  </p> </entry> <entry><p>Converts text between Unicode and another character set. Conversion can be performed on fragments of input, including handling the case when the input text is truncated midway through a multi-byte character. This allows clients to do conversion in small steps, which may be preferred for large amounts of text or when text is arriving in fragments from an external source. </p> </entry> </row> <row><entry><p> <xref href="GUID-66786E20-76E7-304F-86ED-11038BC12152.dita"><apiname>CnvUtfConverter</apiname></xref>  </p> </entry> <entry><p>Converts text between Unicode (UTF-16) and the two Unicode transformation formats UTF-7 and UTF-8. These are ASCII-compatible encodings of Unicode which use sequences of multiple bytes to encode non-ASCII characters. Conversion can be performed in incremental steps. </p> </entry> </row> <row><entry><p> <xref href="GUID-8F2E456B-618C-31CC-B368-A3C515B642AB.dita"><apiname>CCnvCharacterSetNames </apiname></xref>  </p> </entry> <entry><p>Gets the names of all available converters. </p> </entry> </row> <row><entry><p> <xref href="GUID-2FC99DA0-F1C0-3A5E-B990-5DC3F7EAA31C.dita"><apiname>CnvUtilities</apiname></xref>  </p> </entry> <entry><p>Provides static character conversion utilities for complex encodings. </p> </entry> </row> <row><entry><p> <xref href="GUID-F58308AA-7072-370D-BE6A-1E8236060FC4.dita"><apiname>CCharacterSetConverterPluginInterface</apiname></xref>  </p> </entry> <entry><p>Defines the methods in the CharConv Character Set Conversion plug-in interface. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Built-in converters</title> <p>The built-in converters are used by most languages. Each converter is identified by a Unique Identifier (UID). The UIDs are defined in the <filepath>charconv.h</filepath> header file. </p> <table id="GUID-4F4DE06D-6FA8-5525-BE64-E05B0724DA80"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Converter Name</entry> <entry>Target script</entry> </row> </thead> <tbody><row><entry><p>UTF-7 </p> </entry> <entry><p>Universal (Unicode) </p> </entry> </row> <row><entry><p>UTF-8 </p> </entry> <entry><p>Universal (Unicode) </p> </entry> </row> <row><entry><p>Little Endian Unicode </p> </entry> <entry><p>Universal (Unicode) </p> </entry> </row> <row><entry><p>Big Endian Unicode </p> </entry> <entry><p>Universal (Unicode) </p> </entry> </row> <row><entry><p>IMAP UTF-7 </p> </entry> <entry><p>Universal (Unicode) for IMAP </p> </entry> </row> <row><entry><p>Java UTF-8 </p> </entry> <entry><p>Universal (Unicode) for Java </p> </entry> </row> <row><entry><p>ASCII </p> </entry> <entry><p>Western European / US </p> </entry> </row> <row><entry><p>Code Page 1252 </p> </entry> <entry><p>Western European / US </p> </entry> </row> <row><entry><p>ISO8859-1 </p> </entry> <entry><p>Western European / US </p> </entry> </row> <row><entry><p>SMS7Bit </p> </entry> <entry><p>Western European / US </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The Charconv Framework can be used to: </p> <ul><li id="GUID-F12323DC-93B5-592E-809D-549BE2E612E6"><p>Convert between a foreign encoding and Unicode. </p> </li> <li id="GUID-74756183-1191-5C75-A18A-865627B70E7B"><p>Convert between a Unicode transformation format and Unicode. </p> </li> <li id="GUID-F2268E25-1E68-5453-A31D-9224A30F34C2"><p>Write additional plug-in converters for specific encodings or languages. </p> </li> <li id="GUID-92AB61B4-D57B-52F1-9B9A-998737B8FC0F"><p>Get a list of converter names. </p> </li> <li id="GUID-13F9FAFC-37F3-5644-84EF-9F9EC2A17130"><p>Automatically detect the character encoding to be converted. </p> </li> <li id="GUID-58DEFB30-703D-5D6B-A19F-3257765C8687"><p>Get the character converter UID using its Internet standard encoding name. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-001F6216-48AE-57D4-8985-65CF77B26F19.dita">Character Encoding and Conversion Plug-ins Component Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D" xml:lang="en"><title>Example
+Showing the use of the SDP Codec API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following sections explain how to create an SDP description with the
+required fields. </p>
+<ul>
+<li id="GUID-F95C20F4-0A32-588F-A5A4-25C8C0F1D687"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-5184D372-53E1-5872-9DC0-63E004232D6D">Creating an SDP description</xref>  </p> </li>
+<li id="GUID-ADA89366-B0CD-5520-A6A1-392525042085"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-CD67F58C-5059-50DA-B275-CC07EC5E93EF">Creating a CSdpDocument object</xref>  </p> </li>
+<li id="GUID-ADF16F11-C606-55C8-9E3C-4BCC420342D7"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-35A2A9E8-8AE4-55EA-9DE3-C6F056A3B497">Defining the session name field for the SDP description</xref>  </p> </li>
+<li id="GUID-AAEAAB91-98EB-5A6C-AA18-DA850BED70EB"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-6D04653E-711E-53B3-8DC6-9A35EDE98173">Creating an instance of the Origin field class</xref>  </p> </li>
+<li id="GUID-EFFDBB7F-CF7A-593C-826A-480DBF6D13AB"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-63EE5D34-4AD2-5FC5-8D4C-E4DDEBE4D546">Fetching the network type and the address type</xref>  </p> </li>
+<li id="GUID-58CDD2CF-CCF2-52B2-8C0A-134508FC14EA"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-4CE0F919-97DC-5A4B-81B1-44953792609A">Creating and setting the connection field into the sdpDocument</xref>  </p> </li>
+<li id="GUID-B54A2924-3AAC-5E1B-9A0B-145A532E9306"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-0C8C6767-7D0D-5211-88A1-E07FABFC2EDB">Defining the session part attribute and direction-attribute</xref>  </p> </li>
+<li id="GUID-D35AFF85-8E2D-5352-BE58-E755F3FF7D53"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-7835F2BC-6D44-58D7-A662-72B636F31154">Creating the first media field</xref>  </p> </li>
+<li id="GUID-86DD7BAC-9C2B-5A23-8B7B-8A1FE7047CC6"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-D991055C-4847-5A92-BA72-18917231C00E">Creating the second media field</xref>  </p> </li>
+<li id="GUID-00D37100-7CB9-5A7A-874A-325B89E59A8F"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-F8B6AE3F-DD42-5318-9184-C7DE92B7068A">Assigning the media fields to the CSdpDocument object</xref>  </p> </li>
+<li id="GUID-1785FB44-679F-5C03-8B5B-44A2F5B979D0"><p> <xref href="GUID-6F40A921-83A9-5268-A9A6-80750CD5823D.dita#GUID-6F40A921-83A9-5268-A9A6-80750CD5823D/GUID-8F23A065-184D-5725-86FC-AC5909B401BB">Deleting the sdpDocument and closing the SdpCodecStringPool</xref>  </p> </li>
+</ul>
+<section id="GUID-5184D372-53E1-5872-9DC0-63E004232D6D"><title> Creating an
+SDP description</title> <ol id="GUID-9274DB5E-2266-5CBC-94BE-A140D1AA5B8E">
+<li id="GUID-1D695593-6D60-5FB6-9D2B-EAF58D9D1451"><p>Open the String Pool </p> </li>
+<li id="GUID-DF565227-6809-578B-9C75-A5D06DF9DC02"><p>Access the predefined
+SDP constants in the string table </p> </li>
+<li id="GUID-44F46943-DCBA-5E12-B68D-A19DBF6DBBF7"><p>Close the String Pool
+after you finish with the SDP description </p> </li>
+</ol> <codeblock id="GUID-AC697A6F-FA2A-5B00-8004-DDCCEB82ADE1" xml:space="preserve">SdpCodecStringPool::OpenL();
+RStringPool pool = SdpCodecStringPool::StringPoolL();
+</codeblock> </section>
+<section id="GUID-CD67F58C-5059-50DA-B275-CC07EC5E93EF"><title> Creating a
+CSdpDocument object</title> <p>The following code snippet shows how to create
+the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object. This includes all SDP fields in
+the structural format: </p> <codeblock id="GUID-6A6F8797-0DB3-5FA3-9AEC-F688B998755B" xml:space="preserve">CSdpDocument* sdpDocument = CSdpDocument::NewLC();</codeblock> </section>
+<section id="GUID-35A2A9E8-8AE4-55EA-9DE3-C6F056A3B497"><title>Defining the
+session name field for the SDP description</title> <p>The following code snippet
+shows how to define the session name field for the SDP description: </p> <codeblock id="GUID-14984CDB-2868-5857-9E47-96E280524E2A" xml:space="preserve">sdpDocument-&gt;SetSessionNameL(_L8("SipSession"));</codeblock> </section>
+<section id="GUID-6D04653E-711E-53B3-8DC6-9A35EDE98173"><title>Creating an
+instance of the Origin field class </title> <p>The following code snippet
+shows how to create an instance of the Origin field class and set into the
+SDP description: </p> <codeblock id="GUID-BB71093E-DA1F-5BE8-A7A1-7D1BD51AC2AC" xml:space="preserve">TInt64 sessionId( TUint( 2890844526 ) );
+TInt64 sessionVersion( TUint( 2890842807 ) );
+TInetAddr address;
+const TUint32 KInetAddr = INET_ADDR(10,47,16,5);
+address.SetAddress( KInetAddr );
+CSdpOriginField* originfield =  CSdpOriginField::NewL(_L8("username"), sessionId, sessionversion, address);
+sdpDocument-&gt;SetOriginField(originfield);
+</codeblock> </section>
+<section id="GUID-63EE5D34-4AD2-5FC5-8D4C-E4DDEBE4D546"><title>Fetching the
+network type and the address type</title><p>The following code snippet shows
+how to fetch the predefined network type and the address type for the connection
+field from the String Pool:</p><codeblock xml:space="preserve">RStringF netType = pool.StringF( SdpCodecStringConstants::ENetType, SdpCodecStringConstants::Table );RStringF addressTypeIP4 = pool.StringF( SdpCodecStringConstants::EAddressTypeIP4, SdpCodecStringConstants::Table );
+</codeblock> </section>
+<section id="GUID-4CE0F919-97DC-5A4B-81B1-44953792609A"><title>Creating
+and setting the connection field into the sdpDocument</title> <p>The following
+code snippet shows how to create the connection field and set the SDP parameters
+of the SIP message into the SDP description: </p> <codeblock id="GUID-C95DB654-C03B-5FAA-B21A-AD7AC7E45117" xml:space="preserve">_LIT8( KAddress, "10.47.16.5" );
+CSdpConnectionField* connectionfield = CSdpConnectionField::NewL( netType, addressTypeIP4, KAddress );
+sdpDocument-&gt;SetConnectionField(connectionfield);
+</codeblock> </section>
+<section id="GUID-0C8C6767-7D0D-5211-88A1-E07FABFC2EDB"><title>Defining the
+session part attribute and direction-attribute</title> <p>The following code
+snippet shows how to define the session part attribute for the SDP description.
+The direction-attribute is not one of the predefined attributes in the string
+table, it must be defined dynamically to the String Pool. </p> <codeblock id="GUID-83943165-3D45-5D50-B4D8-B6F3471CF623" xml:space="preserve">_LIT8(KSDPAttributeDirectionBoth,"both");
+RStringF modifier = pool.OpenFStringL(_L8("direction"));
+CleanupClosePushL(modifier);
+CSdpAttributeField* attrField = CSdpAttributeField::NewL(modifier, KSDPAttributeDirectionBoth);
+User::LeaveIfError((sdpDocument-&gt;AttributeFields()).Append(attrField));
+CleanupStack::PopAndDestroy();
+</codeblock> </section>
+<section id="GUID-7835F2BC-6D44-58D7-A662-72B636F31154"><title> Creating the
+first media field</title> <p>The following code snippet shows how to create
+the first media field: </p> <codeblock id="GUID-5EC0673E-BE80-522E-BD8C-1A258BCF25E3" xml:space="preserve">RStringF mediaVideo = pool.StringF( SdpCodecStringConstants::EMediaVideo, SdpCodecStringPool::StringTableL());
+RStringF protocol = pool.StringF(SdpCodecStringConstants::EProtocolRtpAvp, SdpCodecStringPool::StringTableL());
+CSdpMediaField* media1 = CSdpMediaField::NewLC(mediaVideo, 49152, protocol, _L8("96"));
+</codeblock> <p>Add the sendonly attribute (“a=sendonly”) to the first media
+field: </p> <codeblock id="GUID-30DCBB1C-E76A-5BBA-B8CE-CA34EDE86C51" xml:space="preserve">RStringF sendonlyAttr = iPool.StringF( SdpCodecStringConstants:: EAttributeSendonly, SdpCodecStringPool::StringTableL() );
+CSdpAttributeField* attr1 = CSdpAttributeField::NewLC(sendonlyAttr, _L8(""));
+User::LeaveIfError((media1-&gt;AttributeFields()).Append(attr1));
+CleanupStack::Pop(); //attr1
+</codeblock> <p>Add the rtpmap attribute (“a=rtpmap:96 H263-2000/90000”) to
+the first media field and then add the rtpmap specific attribute (“a=ptime:15”): </p> <codeblock id="GUID-73BD605A-7C81-50A2-988C-17ABA6B0641B" xml:space="preserve">_LIT8( KEncodingName, "H263-2000" );
+_LIT8( KClockRate, "90000" );
+_LIT8( KEncodingParam, "" );
+TSdpRtpmapValue rtpmapValue( KEncodingName(), KClockRate(), KEncodingParam() );
+HBufC8* rtpmapBuf = rtpmapValue.EncodeL();
+CleanupStack::PushL(rtpmapBuf);
+RStringF rtpmapStr = pool.StringF( SdpCodecStringConstants::EAttributeRtpmap, SdpCodecStringPool::StringTableL() );
+CSdpFmtAttributeField* rtpmapAttribute = CSdpFmtAttributeField::NewLC(rtpmapStr, _L8("96"), *rtpmapBuf);
+User::LeaveIfError(media1-&gt;FormatAttributeFields().Append (rtpmapAttribute));
+CleanupStack::Pop(); // rtpmapAttribute
+CleanupStack::PopAndDestroy(); // rtpmapBuf
+// add a rtpmap specific attribute
+RStringF ptimeAttrStr = iPool.StringF( SdpCodecStringConstants:: EAttributePtime, SdpCodecStringPool::StringTableL() );
+CSdpAttributeField* ptimeAttr = CSdpAttributeField::NewLC(ptimeAttrStr, _L8("15"));
+ptimeAttr-&gt;AssignTo(*(media1-&gt;FormatAttributeFields())[0]);
+User::LeaveIfError(media1-&gt;AttributeFields().Append(ptimeAttr));
+CleanupStack::Pop(); //ptimeAttr
+</codeblock> </section>
+<section id="GUID-D991055C-4847-5A92-BA72-18917231C00E"><title>Creating the
+second media field</title> <p>The following code snippet shows how to create
+the second media field: </p> <codeblock id="GUID-9B5EAFE9-66DD-57A7-8AD3-78233430ED53" xml:space="preserve">RStringF mediaAudio = pool.StringF( SdpCodecStringConstants:: EMediaAudio, SdpCodecStringPool::StringTableL());
+CSdpMediaField* media2 = CSdpMediaField::NewLC(mediaAudio, 57344, protocol, _L8("97"));
+</codeblock> <p>Create the sendonly attribute for the second media field: </p> <codeblock id="GUID-2561B0AD-A8DA-56B0-84E2-833A22F9BE4E" xml:space="preserve">CSdpAttributeField* attr2 = CSdpAttributeField::NewLC(sendonlyAttr, 
+_L8(""));
+User::LeaveIfError((media2-&gt;AttributeFields()).Append(attr2));
+CleanupStack::Pop();
+</codeblock> <p>Create the rtpmap attribute (“a=rtpmap:97 AMR/8000”) for the
+second media field: </p> <codeblock id="GUID-18186488-A9C8-5B7A-B3FF-5424C1C4DBD9" xml:space="preserve">_LIT8( KEncodingName1, "AMR" );
+_LIT8( KClockRate1, "8000" );
+TSdpRtpmapValue rtpmapValue1( KEncodingName1(), KClockRate1(), KEncodingParam() );
+HBufC8* rtpmapBuf1 = rtpmapValue1.EncodeL();
+CleanupStack::PushL(rtpmapBuf1);
+CSdpFmtAttributeField* rtpmapAttribute1 = CSdpFmtAttributeField::NewLC(rtpmapStr, _L8("97"), *rtpmapBuf1);
+User::LeaveIfError(media2-&gt;FormatAttributeFields().Append (rtpmapAttribute1));
+CleanupStack::Pop(); // rtpmapAttribute1
+CleanupStack::PopAndDestroy(); //rtpmapBuf1
+</codeblock> </section>
+<section id="GUID-F8B6AE3F-DD42-5318-9184-C7DE92B7068A"><title>Assigning the
+media fields to the CSdpDocument object </title> <p>The following code snippet
+shows how to assign the media fields to the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object
+and then remove the buffers from the cleanup stack: </p> <codeblock id="GUID-44BD57DA-85CD-554A-8801-86F7F47A7D41" xml:space="preserve">User::LeaveIfError(doc-&gt;MediaFields().Append(media1));
+User::LeaveIfError(doc-&gt;MediaFields().Append(media2));
+CleanupStack::Pop(); //media2
+CleanupStack::Pop(); //media1
+</codeblock> </section>
+<section id="GUID-8F23A065-184D-5725-86FC-AC5909B401BB"><title>Deleting the
+sdpDocument and closing the SdpCodecStringPool</title> <p>To close the String
+Pool the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object must be removed and deleted
+from the cleanup stack. The following code snippet shows how to remove and
+delete the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object from the cleanup stack and
+close the String Pool: </p> <codeblock id="GUID-2037F164-73C9-5DC0-95BF-F05E778BF4E1" xml:space="preserve">CleanupStack::PopAndDestroy(); //sdpDocument
+SdpCodecStringPool::Close();
+</codeblock> <p>The SDP description created in the preceding example has the
+following fields: </p> <codeblock id="GUID-EC361C3C-02D4-5130-AD1B-4C12F1985A06" xml:space="preserve">v=0
+o=username 2890844526 2890842807 IN IP4 10.47.16.5
+s=SipSession
+c=IN IP4 10.47.16.5
+t=0 0
+a=direction:both
+m=video 49152 RTP/AVP 96
+a=sendonly
+a=rtpmap:96 H263-2000/90000
+m=audio 57344 RTP/AVP 97
+a=sendonly
+a=rtpmap:97 AMR/8000
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F6AEFB5-4D0E-5324-A3CD-1E533002DB45.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6F6AEFB5-4D0E-5324-A3CD-1E533002DB45" xml:lang="en"><title>How
+to Start the DNS Proxy Server</title><shortdesc>Describes how to start the DNS Proxy server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-72ED7B81-4477-449D-B9DF-FC47D908B81E"><p>The DNS Proxy server starts up and shuts down with the DHCP server.
+If an IAP is configured to start the DHCP server, it starts the DHCP server
+which in turn starts the DNS Proxy server. </p><p><note> The DHCP server and
+DNS Proxy server cannot be started on multiple interfaces and there is no
+independent configuration for the DNS Proxy server in the CommsDB file.</note> </p><p>The
+high level steps to start the DNS Proxy server are shown here: </p> </context>
+<steps id="GUID-6CEAACE0-66C1-5D6E-A03F-8DAE5991F71C">
+<step id="GUID-591D5A6E-7508-5861-B823-674F40F1EB5B"><cmd/>
+<info>DHCP server starts the DNS Proxy server on DHCP server startup. </info>
+<info>DHCP server starts when the interface configured to start DHCP server
+in CommsDB is started by some application. </info>
+</step>
+<step id="GUID-25B1C614-AADF-5204-9053-C71A35BE4A74"><cmd/>
+<info>DNS Proxy server on start up reads the initialization information from<filepath> resolver.ini</filepath> file. </info>
+<info> Note: The DNS Proxy server initialization settings are stored in the <filepath>resolver.ini</filepath> file. </info>
+</step>
+<step id="GUID-716C280F-DB08-5E1B-887D-3BEC8F2B1E48"><cmd/>
+<info>DNS Proxy server gets the connection information from the DHCP server
+on startup. </info>
+<info> Note: The <filepath>resolver.ini</filepath> file provides the downlink
+connection information on which the DNS Proxy server starts receiving DNS
+requests. </info>
+</step>
+<step id="GUID-4811BFD0-2EEA-5D83-A83E-1CAB4B220D36"><cmd/>
+<info>DNS Proxy server opens an explicit socket on the connection and starts
+receiving DNS requests from the standard DNS port 53. </info>
+</step>
+<step id="GUID-01DDE9E3-02C9-57EF-A4FB-F69DC1CC3992"><cmd/>
+<info>DHCP server reads and obtains the hostname and suffix information from
+CommsDB and updates the DNS Proxy server with the required information. </info>
+</step>
+<step id="GUID-A895F232-DCE4-5AB7-8E45-1407D4F382FE"><cmd/>
+<info>DHCP server updates the DNS Proxy server database for each incoming
+host. </info>
+</step>
+</steps>
+<result id="GUID-3C2D6ACD-99B0-4E06-B2BE-86FD1953B446"><p>DNS Proxy server is active and is ready to resolve local names
+and standard internet domain names. </p> </result>
+</taskbody><related-links>
+<link href="GUID-28D13F63-9D72-5D70-BE81-3B4E54B3A8C1.dita"><linktext>DNS Proxy
+Server                 Initialization Settings</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F6B6C23-D5CF-5BE7-A001-EE87BC76A65D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6F6B6C23-D5CF-5BE7-A001-EE87BC76A65D" xml:lang="en"><title>Camera Plug-in Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page gives you links for the Camera Plug-in Component: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F716E31-490E-5CA1-871A-D8D1661E3078.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6F716E31-490E-5CA1-871A-D8D1661E3078" xml:lang="en"><title>Feature
+Manager Installation Tutorials</title><shortdesc>This document introduces tutorials on the use of Feature Manager
+to enable and disable features on a phone using the feature installer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-2BA19097-735B-5C39-956C-E34888835B1C"><p>A phone is typically
+built with many features which require to be disabled or enabled for the first
+time. These tutorials tell you how to do so using the feature installer. </p> </context>
+</taskbody><related-links>
+<link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+Overview</linktext></link>
+<link href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita"><linktext>Feature Manager
+Guide</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA" xml:lang="en"><title>OS Security Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>OS Security Concepts section provides detailed description on few key concepts such as Public Key Cryptography (PKC), Certificates and Digital signatures. These key concepts are mostly used in Crypto services and Content Management Collection collections.</p> </conbody><related-links><link href="GUID-BC191AA8-696F-51A2-801F-B3F952037F54.dita"><linktext>OS Security     Quick Start</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6F78B032-00EC-4638-8B65-88CA99075B4F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6F78B032-00EC-4638-8B65-88CA99075B4F" xml:lang="en"><title>Example
+using <codeph>main()</codeph></title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A simple example using <codeph>main()</codeph> as an entry
+point is described below. The example writes a text to a file.</p>
+<ul>
+<li><p>Modify the MMP file as mentioned before.</p></li>
+<li><p>Do usual C style coding. </p></li>
+</ul>
+<codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+
+int main(void)
+{
+    FILE* fd;
+    char* fileName = "C:\\test.txt";
+    char *buf = "Hello world";
+    fd = fopen(fileName, "w");
+    if(fd == NULL)
+		{
+		printf("Unable to open the file (%s)", fileName);
+		return -1;
+		}
+    if (fwrite(buf, sizeof(char), strlen(buf), fd) &lt; 0 )
+        {
+    	perror("write fails.");
+        }
+    printf("File (%s) is created successfully.", fileName);
+    fclose(fd);
+    getchar();
+    return 0;
+	}</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FA036F6-F4C7-50CA-B08F-7D5F8B7FB6B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6FA036F6-F4C7-50CA-B08F-7D5F8B7FB6B5" xml:lang="en"><title>BNF
+Grammars</title><shortdesc>Backus-Naur Form (BNF) grammars are used as a tool for describing
+language and command syntax, for example: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>select-statement</codeph> : <codeph>SELECT</codeph> <codeph>select-list</codeph>  <codeph>FROM</codeph>  <codeph>table-name</codeph> [ <codeph>restriction</codeph> ] [ <codeph>ordering</codeph> ] </p>
+<p> <codeph>restriction</codeph> : <codeph>WHERE</codeph> <codeph>search-condition</codeph>  </p>
+<p> <codeph>ordering</codeph> : <codeph>ORDER BY</codeph>  <codeph>sort-order</codeph>  </p>
+<p>A BNF definition states that the named item given before the colon is written
+as described after the colon. For example, an <i>ordering</i> is written as <codeph>ORDER
+BY</codeph> followed by a <i>sort-order</i> (which may be defined elsewhere). </p>
+<table id="GUID-AB7C2618-FF3B-5F2A-9EEB-05930D804CA0">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>BNF expression</b>  </p> </entry>
+<entry><p> <b>What it means</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>named-construction</codeph> : <codeph>expression</codeph>  </p> </entry>
+<entry><p>Declares that a <i>named-construction</i> is written as <i>expression</i>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>named-construction</codeph> : <codeph>expression1</codeph> <codeph>expression2</codeph>  </p> </entry>
+<entry><p>Declares that a named-construction is written as either <i>expression1</i> or <i>expression2</i>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>word</codeph>  </p> </entry>
+<entry><p>The word <codeph>word</codeph>, written literally. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>exp1</codeph>  <codeph>exp2</codeph>  </p> </entry>
+<entry><p> <i>exp1</i> followed by <i>exp2</i>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>[exp]</codeph>  </p> </entry>
+<entry><p> <i>exp</i> is optional. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>[ exp1 | exp2 ]</codeph>  </p> </entry>
+<entry><p>Either <i>exp1</i> or <i>exp2</i> or nothing. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>&lt;exp&gt;</codeph>  </p> </entry>
+<entry><p> <i>exp</i> is an entity or name that you specify. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>exp</codeph> + </p> </entry>
+<entry><p> <i>expression</i>, repeated one or more times. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>exp</codeph> * </p> </entry>
+<entry><p> <i>expression</i>, repeated zero, one or more times. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e335381_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FCAB5DC-D3E9-5406-8B9E-E1B1CF18C73F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6FCAB5DC-D3E9-5406-8B9E-E1B1CF18C73F"><title> OCSP Configuration</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Online Certificate Status Protocol (OCSP) is an Internet protocol used by applications to obtain the revocation status of an X.509 digital certificate. </p> <p>The OCSP policy configuration file is stored as <filepath>z:\system\data\ocsppolicy.ini</filepath>. The default implementation looks like this: </p> <codeblock id="GUID-83431852-4A24-5C6A-B040-6E60877C7A82" xml:space="preserve">GenerateResponseForMissingUri = true
+EnableHttpGETMethod = false</codeblock> <p>Device creators must modify the configuration file and rebuild the <xref href="GUID-2BB17FB4-07A9-52E3-A650-570A16FA771D.dita">securityconfig</xref> component, to customise the behavior of the OCSP component. </p> <section><title> Description</title> <table id="GUID-7402F366-E306-56EE-81E2-ABE4F98C30BA"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><tbody><row><entry><p> <b>Flag Name</b>  </p> </entry> <entry><p> <b>Default Value</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <codeph> GenerateResponseForMissingUri </codeph>  </p> </entry> <entry><p> <codeph>true</codeph>  </p> </entry> <entry><p>Decides whether an OCSP client should send a request and expect a response even if both Authority Information Access (AIA) in the certificate and the global OCSP URL are not present. </p> <p> <xref scope="external" href="http://www.openssl.org/docs/apps/x509v3_config.html#Authority_Info_Access_">AIA extension</xref> and the <xref scope="external" href="http://openssl.org/docs/apps/ocsp.html">global OCSP URI</xref> are the two sources to get the trust status of the certificate, and it is required that one of these two sources must be present to get correct trust status of the certificate. </p> <p>The <codeph>GenerateResponseForMissingUri</codeph> flag allows to override the default settings in the following ways: </p> <ul><li id="GUID-30EF1EAA-8ED2-5E49-B49C-766A3C691937"><p>If <codeph>GenerateResponseForMissingUri</codeph> flag is set to <codeph>true</codeph>, the OCSP client is allowed to send an OCSP request and expect a response, even if both AIA and global OCSP URI sources are not present. </p> </li> <li id="GUID-6F054D62-1F43-58F9-859B-7276D8A2C823"><p>If the flag is set to <codeph>false</codeph>, the OCSP client is not allowed to send an OCSP request and expect an response thereby. </p> </li> </ul> </entry> </row> <row><entry><p> <codeph>EnableHttpGETMethod </codeph>  </p> </entry> <entry><p> <codeph>false</codeph>  </p> </entry> <entry><p>Decides how the OCSP request should be sent when a request size is small. </p> <p>HTTP based OCSP requests can use GET or the POST method to submit their requests. </p> <ul><li id="GUID-3C993B14-CDF7-587A-BA18-6B2B57384F3E"><p>Use GET method for enabling HTTP caching, if a request size (even after encoding) is lesser than 255 bytes. </p> </li> <li id="GUID-5E49E5D5-D044-5B42-927D-1167FED1EBEE"><p>Use POST method, if HTTP caching is not important, or the request is greater than 255 bytes. </p> </li> </ul> <p>You need to set <codeph>EnableHttpGETMethod</codeph> flag as <codeph>false</codeph>, to forcibly submit using POST method, even if the request is less than 255 bytes. </p> </entry> </row> </tbody> </tgroup> </table> <p>For more details about these two flags, see <xref scope="external" href="http://www.faqs.org/rfcs/rfc2560.html">RFC2560 - X.509 PKI OCSP standard</xref>. </p> </section> <section><title>See also</title> <p><xref href="GUID-2BB17FB4-07A9-52E3-A650-570A16FA771D.dita">SecurityConfig Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FCB023F-E9E0-5C3D-A8BA-92B1B4733258.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6FCB023F-E9E0-5C3D-A8BA-92B1B4733258" xml:lang="en"><title>C
+Standard Library Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of Symbian platform's implementation
+of the C Standard Library (referred to as STDLIB). </p>
+<p>It provides information on how it differs from other such libraries and
+descriptions of some of its main features. It does not attempt to document
+the library's entire API. For such documentation, refer to the following documentation:</p>
+<ul>
+<li><p>For documentation of the ANSI C and POSIX specifications, see the relevant
+organisations' web sites (<xref href="http://www.ansi.org" scope="external">http://www.ansi.org</xref> and <xref href="http://standards.ieee.org/index.html" scope="external">http://standards.ieee.org/index.html</xref>). </p></li>
+<li><p>For literature on ANSI and POSIX specifications, see POSIX Programmers
+Guide— Donald Lewine O'Reilly &amp; Associates, Inc.— ISBN 0-937175-73-0  </p></li>
+</ul>
+<p> <b>Important:</b> C Standard Library is planned to be deprecated soon.
+It is recommended that you use the much more compliant or complete <xref href="GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita">Open
+Environment Core (P.I.P.S.)</xref> libraries instead. </p>
+<section><title>Purpose</title> <p>STDLIB serves the following purposes: </p> <ul>
+<li id="GUID-780B9EEB-62C5-57D7-A1AE-26116D65E339"><p>Addressing the porting
+requirements of C software engines to Symbian platform. </p> </li>
+<li id="GUID-5A9D30BE-C387-5389-9AD2-5B8F837A0DC9"><p>Providing an ANSI C
+library with associated POSIX system calls. </p> </li>
+<li id="GUID-B15818AC-9E7A-5C58-B6A9-58D47C9484FD"><p>Supporting both pure
+C programs and mixed C/C++ programs. </p> </li>
+<li id="GUID-93F33B67-41B4-5983-90A1-C632972ED5E2"><p>Providing the standard
+include file structure with the standard <codeph>#defines</codeph> and function
+prototypes. </p> </li>
+</ul> <p>STDLIB implementation does not serve the following purposes: </p> <ul>
+<li id="GUID-304064B6-D603-56C1-9951-8FFD4CD91E4E"><p>Supporting pre-ANSI
+C compilers. </p> </li>
+<li id="GUID-7A765051-395B-5B7A-A71D-C44F5DC00ED4"><p>Passing ANSI or POSIX
+conformance test suites. </p> </li>
+<li id="GUID-01B46F4E-E6DD-5CD9-8B09-E9D169D961B4"><p>Supporting POSIX-style
+tools executed from a shell. Symbian platform neither provides a shell nor
+does it provide a advanced text console. </p> </li>
+<li id="GUID-12B49D44-453B-5BC6-826C-23B305C43003"><p>Being the C API for
+Symbian platform. For example, STDLIB does not provide any new C functions
+for supporting threads or active schedulers. </p> </li>
+<li id="GUID-B8292CEE-EC88-503F-8F8B-3EE2F643D524"><p>Providing new C++ interfaces.
+The public API for STDLIB is the C function by itself, and almost no aspects
+of the C++ implementation are exposed, even to C++ programmers. </p> </li>
+</ul> </section>
+<section><title>Required Background </title> <p>The understanding on the following
+are required prior to implementing STDLIB: </p> <p><b>Similarities between
+STDLIB and the ANSI standard </b> </p> <ul>
+<li id="GUID-177C458B-84C1-5BBA-A14A-A228DF249C18"><p>Many ANSI standard functions
+have been implemented, including all those in <codeph>stdio.h</codeph> and <codeph>math.h</codeph>.
+The functions which have been implemented are those in the STDLIB header files
+whose prototypes are preceded by the <codeph>IMPORT_C</codeph> macro. </p> </li>
+<li id="GUID-D807BFE5-B6DC-59D5-9C69-EB53FC79B6CB"><p>STDLIB's maths library, <codeph>math.h</codeph>,
+provides the mandatory ANSI maths functions. Most of these use the underlying
+Symbian platform maths functions, encapsulated by the <codeph>Math</codeph> class. </p> </li>
+<li id="GUID-7379EE4C-D9EF-5846-BA73-6BF628A404CA"><p>Many functions, including <codeph>bsearch()</codeph>, <codeph>qsort()</codeph>, <codeph>memcpy()</codeph> and <codeph>tolower()</codeph> are more than a call to a corresponding function
+provided by Symbian platform. In many cases, this function may be found in
+Symbian's <codeph>User</codeph> class. For example, <codeph>malloc()</codeph> and <codeph>free()</codeph> simply
+call <codeph>User::Alloc()</codeph> and <codeph>User::Free()</codeph> respectively. </p> </li>
+</ul> <p><b>Differences between STDLIB and ANSI and POSIX </b> </p> <ul>
+<li id="GUID-09D4CAF0-4427-52E1-BE90-C1C524AB13E3"><p>The STDLIB implementation
+of <codeph>printf()</codeph> does not take into account the format specifier
+for floating point values. Instead, the implementation uses <codeph>TDes8::Format()</codeph> with
+a Symbian platform format specifier which is derived from the style, width
+and precision of the original <codeph>printf()</codeph> specifier. The result
+does not obey the rules for ANSI <codeph>printf()</codeph> for some combinations
+of number width and precision, and formats the numbers using the thousands
+separator taken from the Symbian platform locale; see class <codeph>TLocale</codeph>. </p> </li>
+<li id="GUID-45507BF5-C062-5FF4-BC51-F2B77174C072"><p>Symbian platform identifies
+some errors as being fundamental programming errors and will abruptly terminate
+the offending thread (referred to as a panic). POSIX never does this and will
+always return error conditions instead (though some errors will result in
+signals, e.g., segmentation faults). </p> </li>
+<li id="GUID-5FD1D372-3514-5F31-AA92-1F6F5D023A75"><p>POSIX processes exist
+in a hierarchy with children inheriting resources from their parents — the
+"fork and exec" model of process creation. In Symbian platform, processes
+have no association whatsoever with the thread which created them. They are
+created by constructing a fresh instance of an executable image. </p> </li>
+<li id="GUID-868CC232-9A8F-5764-9499-8B39D3A1DF33"><p>Symbian platform provides
+limited text console support, intended for debugging of low-level components. </p> </li>
+<li id="GUID-04209D36-F963-5115-8E44-870AF9E16719"><p>An open file in the
+POSIX system is a process wide resource that can also be inherited by child
+processes. In Symbian platform each thread within a process has separate resources
+within the shared process address space, and open files are private to a given
+thread. </p> </li>
+<li id="GUID-157AB2F3-DE12-5A5F-8EA3-3A5E57CECAD9"><p>Open POSIX files are
+inherently shareable, so multiple processes can write to the same file simultaneously.
+In Symbian platform, open files are inherently non-shareable, and even the
+thread which has the file open is only allowed one outstanding write operation
+at a time. For more information on files, see the <codeph>RFile</codeph> class. </p> </li>
+<li id="GUID-D6CE165D-1AC7-50B8-8204-35C074F51079"><p>Symbian platform does
+not support global data in DLLs. To overcome this, STDLIB uses a structure, <codeph>_reent</codeph> (declared
+in <codeph>reent.h</codeph>) an instance of which is allocated to each thread
+to hold the <codeph>errno</codeph> value, some "static data areas" used by
+functions such as <codeph>ctime()</codeph>, and the STDIO data structures. </p> </li>
+<li id="GUID-84F0AAF4-BB2B-568A-883D-46656B829C62"><p>Symbian platform has
+different client classes for each type of resource: files, sockets and the
+console are all different and have different APIs. POSIX file descriptors
+can refer to all of these different resources and have a common API (though
+many functions will actually only work on socket file descriptors). </p> </li>
+<li id="GUID-15A73AC5-5065-50E9-8B78-16AFD918565E"><p>Symbian platform processes
+do not have a notion of a current working directory. The closest notion is
+the session path, as set and retrieved by class <codeph>RFs</codeph>. </p> </li>
+<li id="GUID-2BCF79DA-66B0-5407-A4E5-ACE41541BAF8"><p>Symbian platform does
+not have a way of pre-empting a thread and causing it to execute a different
+piece of code, so there is no true equivalent of a POSIX signal or signal
+handler. </p> </li>
+</ul> <p><b>Exclusions in STDLIB </b> </p> <p>Symbian has no plans to provide
+the following in the C Standard Library: </p> <ul>
+<li id="GUID-411B0B35-7705-5448-AE73-BAFDEDC538E2"><p>float-sized maths operations.
+POSIX requires only double-sized operations. Primitive arithmetic operations
+on float values can be carried out, and all of the standard <codeph>printf</codeph> format
+specifiers including <codeph>%E</codeph> and <codeph>%e</codeph> are supported.
+However, none of the floating point library functions declared to take float-sized
+arguments are supported. For example; </p> <codeblock id="GUID-C3ADA741-8FF4-5D72-9CE3-675B48F7E513" xml:space="preserve">double sqrt( double d );    // Supported by STDLIB
+float sqrtf( float f );     // Omission</codeblock> </li>
+<li id="GUID-224430FB-D02F-5C39-A9C4-4D80DFD2A95E"><p>mapping the ANSI locale
+functions onto the Symbian <codeph>TLocale</codeph> functionality. Instead
+the locale is a fixed "C" locale. Therefore STDLIB engines may not be localised.
+It is recommended that localisation be implemented at the Symbian platform
+application level. </p> </li>
+<li id="GUID-3A4751A8-9814-52BC-84C2-6A6963A6B233"><p> <codeph>select()</codeph>.
+The POSIX <codeph>select()</codeph> function is not implemented in STDLIB
+because Symbian platform does not in general support asynchronous "ready to
+read" or "ready to write" notification. </p> </li>
+<li id="GUID-05D7E649-FC17-5DD4-81E0-0D3A4FDD2619"><p> <codeph>signal()</codeph>.
+A Symbian thread cannot be made to spontaneously execute a "signal handler",
+so signals have not been implemented. </p> </li>
+<li id="GUID-9D25E72B-935D-5A95-B694-03D5F0F39C0D"><p> <codeph>fork()</codeph> or <codeph>exec()</codeph> functions </p> </li>
+<li id="GUID-17E9D42B-F3EA-530F-A86B-F20B36EE1160"><p>IPv6 support </p> </li>
+</ul> <p><b>Error codes </b> </p> <p>Most error codes reported by STDLIB functions
+correspond to the standard C error code values. Some of these are identified
+within STDLIB, which produces the correct <codeph>errno</codeph> value directly;
+most are reported by translating the Symbian platform error codes into equivalent <codeph>errno</codeph> values
+using a translation table. Occasionally, a Symbian platform error code may
+be reported untranslated. In this case, it will have a negative value. For
+the Symbian platform error codes, see <xref href="GUID-6CA4F1ED-7947-3087-B618-D35858FAA3BC.dita"><apiname>KErrNone</apiname></xref> etc. STDLIB
+does not usually attempt to detect inputs which will cause a panic, (for example,
+attempting to <codeph>accept()</codeph> on a stream socket which has not been
+bound). Such a panic will terminate the offending thread, which may in turn
+result in the termination of the whole process. </p> </section>
+</conbody><related-links>
+<link href="GUID-39FA0ECE-D403-5F02-AC5D-7BC8E1669E8E.dita"><linktext>C Standard
+Library  Concepts</linktext></link>
+<link href="GUID-F7C9824F-0598-56A1-AC2B-24904E997588.dita"><linktext>C Standard
+Library Tutorials</linktext></link>
+<link href="GUID-7EFA2113-3C4A-5C52-AC28-BBD512466302.dita"><linktext>C Standard
+Library Examples</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FD4E7A4-D215-4CFB-BC7A-23065DE95C5C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-6FD4E7A4-D215-4CFB-BC7A-23065DE95C5C" xml:lang="en"><title>Add
+a view to the control stack</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context> <p>To enable a view to receive key events, add a view to the control
+stack using the following method. This method adds a control into the application
+UI's control stack.</p><note> Ensure that the view is constructed before adding
+it to the control stack. </note><codeblock xml:space="preserve">IMPORT_C void AddToStackL( const MCoeView&amp; aView, 
+                           CCoeControl *aControl, 
+                           TInt aPriority=ECoeStackPriorityDefault, 
+                           TInt aStackingFlags=ECoeStackFlagStandard );</codeblock><p>The
+following code snippet shows adding a view to the control stack:</p><codeblock xml:space="preserve">/**  
+Add aControl to Cone's control stack with priority aPriority and behaviour aStackingFlags.\n 
+*/
+void CNewView::AddToStackL( CCoeControl* aControl,
+                            TInt aPriority,
+                            TInt aStackingFlags )
+    {
+    iCCoeAppUi.AddToStackL( *this, aControl, aPriority, aStackingFlags);
+    }</codeblock><p> For more information on writing control stack, see <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita">How to write controls</xref>.</p></context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e53377_href.png has changed
Binary file Symbian3/SDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e62337_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FE94423-9563-5F31-95EB-504479144B05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6FE94423-9563-5F31-95EB-504479144B05" xml:lang="en"><title>Storing and Restoring Email Messages in Chunks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can store incoming email messages and restore them for sending in chunks by using the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> (<filepath>msgs.dll</filepath>) API. This API is used by email server MTMs and non-email client MTMs. </p> </conbody><related-links><link href="GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita"><linktext>IMAP4 MTM</linktext> </link> <link href="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita"><linktext>POP3 MTM</linktext> </link> <link href="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita"><linktext>SMTP MTM</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FED83FE-1360-5468-B938-0BDFF7D62C43.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-6FED83FE-1360-5468-B938-0BDFF7D62C43" xml:lang="en"><title>Links</title><shortdesc>This document describes links in the context of a doubly linked
+list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An element in a doubly linked list can be any kind of object. To allow
+an object to become an element of a doubly linked list, the class of which
+that object is an instance, must include a <i>link</i> as a component.</p>
+<p>A link object has data members containing pointers which point forwards
+to the next link object and backwards to the previous link object. A link
+object also has function members to implement the behaviour expected of link
+objects, for example, connecting itself to another link object.</p>
+<p>A link is an instance of the <codeph>TDblQueLink</codeph> class.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-6FEE5676-8BFB-53E6-A652-7178295C342E"><title>Pond Configuration Reference</title><shortdesc>This topic describes the file that configures the Comms pond. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-EB90011A-618E-5117-B0DC-961ECB723BA1">
+<p>At the moment, there is only one pond in the Comms Frameowrk. This pond manages the pools of MBufs available to the device drivers and to the Comms Framework components. The pond is initialised by the Root Server when the device starts. For each pool, you specify the initial and maximum number of buffers and the size of these buffers by specifying options in the <filepath>c32start.ini</filepath> file. This file is located in <filepath>z\private\101f7988</filepath>. 
+</p> 
+</section> 
+<section id="GUID-0F32ADF3-116E-50C6-9F28-445D11C8402E">
+<title>Options</title> 
+<p>To describe the pond, define <codeph>MBufSizeAllocInfo</codeph> <i>&lt;n&gt;</i> for each pool. </p> 
+<p>Each <codeph>MBufSizeAllocInfo</codeph> <i>&lt;n&gt;</i> line describes a pool of RMBufs. The <i>&lt;n&gt;</i> suffix must be a unique number. </p> 
+<codeblock id="GUID-766646D3-E426-5080-8721-0BDA63B66662" xml:space="preserve"># MBufSizeAllocInfo[n] = size, initial, growth, threshold
+# for example 
+MBufSizeAllocInfo1 = 128, 128, 64, 48 
+MBufSizeAllocInfo2 = 1600, 64, 16, 12 </codeblock> 
+<p>The following table lists the<codeph>MBufSizeAllocInfo</codeph> parameters in the order they must be specified: </p> 
+<table id="GUID-258EAC07-2AA8-5195-8251-E5EDA097BB73">
+<tgroup cols="3">
+<colspec colname="col0"/>
+<colspec colname="col1"/>
+<colspec colname="col2"/>
+<thead>
+<row>
+<entry>Parameter</entry> 
+<entry>Unit</entry>
+ <entry>Description</entry> 
+ </row> 
+ </thead> 
+ <tbody>
+ <row>
+ <entry><p> <codeph>size</codeph>  </p> </entry> 
+ <entry><p>bytes </p> </entry> 
+ <entry><p>Size of the payload of the <codeph>RMBuf.</codeph>  </p> </entry> 
+ </row> <row>
+ <entry><p> <codeph>initial</codeph>  </p> </entry> 
+ <entry><p>buffers </p> </entry> 
+ <entry><p>Amount of pre-allocated <codeph>RMBuf</codeph> s in the pool at startup.  </p> </entry> 
+ </row> <row>
+ <entry><p> <codeph>growth</codeph>  </p> </entry> 
+ <entry><p>buffers </p> </entry> 
+ <entry><p>Amount of <codeph>RMBuf</codeph> s added to the pool when it grows. </p> </entry> 
+ </row> <row>
+ <entry><p> <codeph>threshold</codeph>  </p> </entry> 
+ <entry><p>buffers </p> </entry> 
+ <entry><p>Minimum amount of free <codeph>RMBuf</codeph> s before making the pool grow. When the amount of free buffers in the pool falls below the <codeph>threshold</codeph> value, the pond adds <codeph>growth</codeph> buffers to the pool. </p> </entry> 
+ </row> 
+ </tbody> 
+ </tgroup> 
+ </table> 
+ <p>The initial allocation of memory is defined by the sum of the initial allocations from each of the <codeph>MBufSizeAllocInfo</codeph> <i>&lt;n&gt;</i> specifications. </p> 
+ <p>If no <codeph>MBufSizeAllocInfo</codeph> <i>&lt;n&gt;</i> options are provided, the system builds a default pool of 128-byte buffers, initially set at 128 buffers, with a growth of 64 buffers and a threshold of 40 buffers. </p> 
+ </section> 
+ <section id="GUID-8F0E62BA-455A-5C58-9AB1-70C79F5BA573">
+ <title>Recommendations</title> 
+ <p>Growth thresholds are typically set at around 25% so that the background allocator can allocate new buffers before the current pool is exhausted. Systems where there is potential to use buffers in sudden bursts should set the threshold to a higher number or start with a larger initial number of buffers. </p> 
+ <p>Legacy code may rely on 128-byte buffers. 128-byte buffers also work well as the small buffers used when adding headers to the data. You should always specify a pool of 128-byte buffers in your <codeph>c32start.ini</codeph> file. You should also avoid having a pool of buffers smaller than 128 bytes, because some legacy code may assume 128 bytes as the minimum size. </p> 
+ <p>The Maximum Transmission Unit (MTU) is an important characteristic of Communications protocols. The MTU is the maximum size of the data packet in a given layer. For example, the Ethernet protocol fixes its MTU to 1,500 bytes, and the 802.11 protocol has a 2,272-bytes MTU. To ensure that incoming data can be written into a single buffer rather than split, you need to specify your pools according to the protocols in use in your system. For each of these protocols, the pond should contain a pool with buffers as large or larger than the MTU. Protocols with similar MTUs usually share the same pool, to avoid increasing the allocation time with searches through too many pools. </p> 
+ <p>Increasing the number of pools increases the time required to fulfil an allocation request. Therefore, you should keep the number of pools small. You need to find a balance between searching many pools for a single adequate buffer and searching fewer pools but having to construct a chain of buffers to fulfil an allocation request. </p> 
+ <p> <b>Note</b>: if the <codeph>c32start.ini</codeph> configuration specifies more memory than the device has available, or an impossible combination of initial pool sizes and total pond size, the pond initialisation will fail and the Root Server will panic during device start-up. </p> 
+ </section> 
+ <example id="GUID-E4D29345-47E1-549F-BEB0-C94E7DDFF00B">
+ <title>Example</title> 
+ <p>Here is a sample <filepath>c32start.ini</filepath> file: </p> 
+ <codeblock id="GUID-2EE0270A-1892-552D-9D10-E19227069A73" xml:space="preserve">[Global]
+
+MBufSizeAllocInfo1 = 128, 128, 64, 48
+MBufSizeAllocInfo2 = 1600, 64, 16, 12</codeblock> 
+<p>This file corresponds to the following configuration: </p> 
+<ul id="UL_BA85BF6A92C7451CB25A8428AEBA90E3">
+<li id="GUID-03BFDFCF-61CF-5BE9-A967-C4EFCD00C07F"><p>The pond contains two pools for a total of 128x128 + 64x1600 = 118,784 bytes (116kB). </p> </li> 
+<li id="GUID-EB782141-97DD-509C-9EA0-507DFA8A8981"><p>The first pool contains 128-byte buffers. It starts with 128 buffers and will grow by 64 buffers whenever fewer than 48 free buffers remain. </p> </li> 
+<li id="GUID-0D4FBD06-4F91-5393-A419-C5538D5FC2F1"><p>The second pool contains 1,600-byte buffers. It starts with 64 buffers and will grow by 16 buffers whenever fewer than 12 free buffers remain. </p> </li> 
+</ul> 
+</example> 
+</conbody><related-links>
+<link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> 
+<link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf) and Comms Chains</linktext> </link> 
+<link href="GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita"><linktext>Advanced Pond Guide</linktext> </link> 
+<link href="GUID-0995EBF6-D203-57B3-9F53-972AEB8F3D3C.dita"><linktext>Memory Metrics</linktext> </link> 
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012-master.png has changed
Binary file Symbian3/SDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e154425_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7022455A-E738-574E-897E-33243482D69A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7022455A-E738-574E-897E-33243482D69A"><title>Working with the Histogram</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces how to work with a histogram. </p> <section><title>Purpose</title> <p>This document describes the various APIs for working with a Histogram. </p> <p><b>Introduction</b> </p> <p>A histogram provides details about the exposure and light on a scene. You can use the histogram to adjust the screen settings accordingly. </p> <p>The code in this tutorial can be found in <filepath>ecamextendedfunctest.cpp</filepath>. </p> </section> <section><title> Working with a Histogram</title> <p>The high level steps to work with histogram are shown here: </p> <ul><li id="GUID-828476F7-BA84-58BC-9246-D5F94B2289AA"><p>Make sure that you call <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita#GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1/GUID-0D35B5C5-3242-3EAA-8189-CA5012EA395B"><apiname>CCameraV2Histogram::PrepareClientHistogramL</apiname></xref> before calling <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita#GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1/GUID-0F2647B2-98E3-398F-8FCB-9863C0A6F72C"><apiname>CCameraV2Histogram::StartHistogram</apiname></xref> API. </p> </li> <li id="GUID-D2E942CF-9423-539F-BF52-FA11AEF0D6AE"><p>Use <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita#GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1/GUID-0F2647B2-98E3-398F-8FCB-9863C0A6F72C"><apiname>CCameraV2Histogram::StartHistogram</apiname></xref> call to start getting histogram notifications once a direct or a client based histogram is prepared. </p> </li> <li id="GUID-A4BCC4E9-FFFA-50B1-8151-4614E228D2F4"><p>Use <xref href="GUID-E159F066-0157-34B4-B154-38D120EAB16C.dita#GUID-E159F066-0157-34B4-B154-38D120EAB16C/GUID-3A9CCBAF-C3D5-3AD6-AF6D-27C98E742B06"><apiname>CCamera::CCameraV2Histogram::GetHistogramStateL</apiname></xref> to get the list of histograms that are currently active. A histogram continues to be in an active state if <xref href="GUID-8419ABA6-01E4-3940-98EB-47F18D0C81ED.dita"><apiname>StartHistogram()</apiname></xref> has been called on it and has not been yet stopped. </p> </li> <li id="GUID-06A92DA6-4660-5A2C-BD28-865D3A8F97D4"><p>Use <xref href="GUID-FCEA4D4C-92B9-39DB-9C63-24DECEFF1CE7.dita"><apiname>GetDirectHistogramPropertiesL</apiname></xref> API to get the current properties used by a direct histogram. </p> </li> <li id="GUID-AD451F40-FB9D-5EC2-BD80-405691DED4C4"><p>Call <xref href="GUID-A8127B84-5084-3EF8-A753-A7292D972A88.dita"><apiname>UpdateDirectHistogramPropertiesL</apiname></xref> API to update the properties of a direct histogram with the new values and call <xref href="GUID-FCEA4D4C-92B9-39DB-9C63-24DECEFF1CE7.dita"><apiname>GetDirectHistogramPropertiesL</apiname></xref> to verify it. </p> </li> </ul> </section> <section><title>Receiving Histograms</title> <p>The histogram data is received as follows: </p> <ul><li id="GUID-6FFFD6C3-2012-58C3-A0BF-E2F4CB794A5F"><p>Use <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-2466E5CD-84E6-3864-94EB-94D1FEBC22E7"><apiname>MDirectViewFinderObserver::ClientHistogramReady</apiname></xref> call back to notify the client about availability of the histogram data. </p> </li> <li id="GUID-A12396DA-3B71-5F7F-864D-7E076F84A8AF"><p>If a call to <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita#GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1/GUID-0F2647B2-98E3-398F-8FCB-9863C0A6F72C"><apiname>CCameraV2Histogram::StartHistogram</apiname></xref> is made without a previous successful call to <xref href="GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1.dita#GUID-F855433B-95B9-3E7E-9DDE-A1DBCB980DE1/GUID-FDC496E4-45C2-365A-9C47-2FC11289E96F"><apiname>CCameraV2Histogram::
+                PrepareClientHistogramL</apiname></xref>, the callback returns <xref href="GUID-25493BDC-2D2E-3CC5-A5FE-A36804A4388A.dita"><apiname>KErrBadHandle</apiname></xref>. </p> </li> <li id="GUID-E5467A2A-AD6D-5C57-A8D0-D2D929D89063"><p>This provides a pointer to <xref href="GUID-717806EB-DF06-30B2-8189-B677DAFC7B4F.dita"><apiname>MHistogramV2Buffer</apiname></xref> that retrieves a single histogram. </p> </li> <li id="GUID-AB0BCD42-5B4D-5269-A8E8-9862A3BC4A20"><p>If the histogram requested is of direct type, it will be directly embedded into the direct viewfinder. If a non direct histogram is requested, the histogram data will be passed to the camera client. </p> </li> </ul> </section> <section><title>Example</title> <p>The following example illustrates the sequence for working with a histogram for client viewfinder. </p> <ol id="GUID-2B1F73EB-02D0-5BE4-9A43-BEAA8A07B462"><li id="GUID-318781AE-7C79-5182-93CA-A96D8DC68CD6"><p>Start a histogram. </p> <codeblock id="GUID-8192A149-1430-52B7-90AA-3D6D566E852A" xml:space="preserve">histogram_CVF-&gt;StartHistogram();</codeblock> </li> <li id="GUID-5ACC39C2-8BD2-53B2-B46D-4C4B722CC9F3"><p>Confirm whether a specific histogram is active. </p> <codeblock id="GUID-D1686DD6-1AF0-5F35-BBAE-83FF6DDEA0E8" xml:space="preserve">TBool histogramActive = EFalse;
+histogram_CVF-&gt;GetHistogramStateL(histogramActive);</codeblock> </li> <li id="GUID-B16273A6-1AC9-548C-BF71-4D6DE2EF19BF"><p>Get the current properties of a direct histogram. </p> <codeblock id="GUID-3813992A-C0A9-518E-9E65-4CE7DE815755" xml:space="preserve">CCamera::CCameraV2Histogram::TDirectHistogramParameters histogramParameters;
+histogram_CVF-&gt;GetDirectHistogramPropertiesL(histogramParameters);</codeblock> </li> <li id="GUID-CFEEE142-3946-56E9-92BF-13D3F53223A6"><p>Update the properties of histogram with the new values. </p> <codeblock id="GUID-CDA53A75-F526-523F-86B4-F470328E019D" xml:space="preserve">CCamera::CCameraV2Histogram::TDirectHistogramParameters histogramParameters;
+histogram_CVF-&gt;UpdateDirectHistogramPropertiesL(histogramParameters);</codeblock> </li> </ol> </section> </conbody><related-links><link href="GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9.dita"><linktext>Histograms</linktext> </link> <link href="GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita"><linktext>Creating Histograms</linktext> </link> <link href="GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3.dita"><linktext>Stopping Histograms</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-70339E6A-63CD-5A74-846C-50771FDAC763" xml:lang="en"><title>Listening
+for incoming Bluetooth connections</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document describes how a Bluetooth device can allow incoming remote
+device connections. </p>
+<p>Incoming Bluetooth connection examples include: </p>
+<ul>
+<li id="GUID-F1021810-A06F-5549-837A-3C8B2D99BC19"><p>one end of a chat application, </p> </li>
+<li id="GUID-C9417947-7464-5AD2-9DF0-5EC906CF1441"><p>the Audio Gateway role
+in HSP (licensee), </p> </li>
+<li id="GUID-8662B773-47E0-5C38-B88C-FE18F3370757"><p>or the Gateway in DUNP
+(licensee). </p> </li>
+</ul>
+<p>Incoming requests for a Bluetooth connection are handled through the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> API
+(as with outgoing connections). </p>
+<p>To receive an incoming connection a service must open a listening socket,
+register the socket with the Bluetooth security manager, and advertise the
+socket, then connection requests can be accepted. </p>
+<section><title>How to set up an incoming connection</title><p>The steps are
+given below:</p><p><b>Get a connection</b></p><p>Connect to the Sockets Server
+and select the protocol to be used. </p><codeblock xml:space="preserve">RSocketServ socketServ;
+socketServ.Connect();
+_LIT(KL2Cap, "L2CAP"); // or RFCOMM as appropriate</codeblock><p><b>Open a
+socket</b></p><p> Open a socket for that protocol. </p><codeblock xml:space="preserve">RSocket listen;
+listen.Open(socketServ,KL2Cap);</codeblock><p><b>Create the Bluetooth socket
+address</b></p><p> Create a Bluetooth socket address object (<xref href="GUID-DFE19A3C-9E18-3B27-8748-FA0DB48A599C.dita"><apiname>TBTSockAddr</apiname></xref>)
+and set its port to the PSM or server channel (for L2CAP or RFCOMM respectively)
+and bind the socket to this address. Note you do not have to set the local
+Bluetooth device address in the address. </p><codeblock xml:space="preserve">TBTSockAddr addr;
+addr.SetPort(KListeningPSM);
+User::LeaveIfError(listen.Bind(addr));</codeblock><p><b>Register with the
+Bluetooth security manager</b></p><p>Add the connection to the Bluetooth security
+manager. Incoming
+connections will not work unless they have been registered with the Bluetooth
+security manager, thus allowing the incoming traffic through the security
+wall,
+which by default denies access to all connection attempts. 
+</p><codeblock xml:space="preserve">RBTSecuritySettings secset;
+TRequestStatus status;
+TBTServiceSecurity serviceSecurity(aMyUid,KSolBtRFCOMM,aChannel);
+serviceSecurity.SetAuthentication(EFalse);
+serviceSecurity.SetEncryption(EFalse);
+serviceSecurity.SetAuthorisation(EFalse);
+serviceSecurity.SetDenied(EFalse);
+User::LeaveIfError(secset.RegisterService(serviceSecurity, status));
+User::WaitForRequest(status);
+test(status.Int()==KErrNone);</codeblock><p>The security profile is created
+and packaged in serviceSecurity and
+applied using <xref href="GUID-D536FA83-2535-3BF2-AC0D-EA0C7CA806BA.dita#GUID-D536FA83-2535-3BF2-AC0D-EA0C7CA806BA/GUID-026CE232-E988-3C7E-A01D-6C70A3CCFC63"><apiname>RBTSecuritySettings::RegisterService()</apiname></xref>. The
+ security profile overrides the default security settings thereby allowing
+   incoming connections. </p><p><b>Add to the Bluetooth Service Discovery
+Database</b></p><p>Enter record into the database. 
+<codeblock xml:space="preserve">RSdpDatabase sdprec;
+TSdpServRecordHandle recordHandle = 0;
+sdprec.CreateServiceRecordL(*UUIDlist, recordHandle);
+</codeblock></p><p><b>Start listening for connections</b></p>  Tell the socket
+to listen for incoming connections using <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-5360AE38-877F-3F9C-971C-4BCE781B5735"><apiname>RSocket::Listen()</apiname></xref>.
+
+<p><codeblock xml:space="preserve">User::LeaveIfError(listen.Listen(2));</codeblock></p><p><b>Start
+listening for data over a connection</b></p> Create a blank socket and pass
+it to the listening socket through
+<xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-3D6737DD-447F-323D-9466-0B910A1FFC6A"><apiname>RSocket::Accept()</apiname></xref>. When this call completes, the socket
+passed in a parameter is now fully connected and can be used to send and receive
+data. The listening socket remains in place, ready for another socket to be
+passed in when the program can handle another connection.<codeblock xml:space="preserve">RSocket accept;
+TRequestStatus status;
+User::LeaveIfError(accept.Open(socketServ));
+listen.Accept(accept,status);
+User::WaitForRequest(status);</codeblock><p><b>Shutdown remote Bluetooth connection</b></p><p>Shutdown
+connection and unregister security settings. When the
+receiver wishes to shutdown, it must ensure that it closes the listening socket
+ as well as any connected ones. This releases the Bluetooth connection to
+other
+applications. 
+</p><codeblock xml:space="preserve">accept.Close();
+listen.Close();
+secset.UnregisterService(KSolBtL2CAP, status);
+socketServ.Close();</codeblock><p>The socket server is closed using the
+<codeph>RHandleBase::Close()</codeph> method. It will close the handle to
+the socket server and destroy it if there are no other referencing objects.
+
+</p></section>
+<section><title>Notes</title><p>If the channel is already in use, as indicated
+if <codeph>Bind()</codeph> returns an error, you can find a free channel using
+the <xref href="GUID-6BFA5331-7860-313B-97A8-7A61562CEE38.dita"><apiname>KRFCOMMGetAvailableServerChannel</apiname></xref> ioctl. </p><p>Also
+search the Symbian DevNet for white papers and example applications. </p></section>
+<section><title>Finding more...</title><p>  For more information on: </p><ul>
+<li><p> setting security requirements for incoming connections to the service,
+see [xref href="GUID-A035B592-F423-5980-8E7E-E726CF24CF3E"]Using Bluetooth
+Security Manager[/xref]</p></li>
+<li><p> advertising the service's availability, see [xref href="GUID-756D831F-F302-594C-8116-144358DD8442"]Using
+Bluetooth Service Discovery Database[/xref]</p></li>
+</ul></section>
+<section><title>Where Next?</title> <p>This tutorial set takes you through
+all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul>
+<li id="GUID-3B52879B-627A-5E83-975F-3DC741739E28"><p> <b>Listening for Incoming
+Bluetooth Connections</b> - This document </p> </li>
+<li id="GUID-8BA24558-70C1-562C-8A18-129958685E79"><p> <xref href="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita">Handling
+the Local Device Name</xref>  </p> </li>
+<li id="GUID-3E74535E-235C-5DF2-9438-101BA38F8ACB"><p> <xref href="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita">Performing
+Low-level Configuration</xref>  </p> </li>
+<li id="GUID-431BDE6E-163A-5F9F-93CE-B945A25AF649"><p> <xref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita">Debugging
+the Host Controller</xref>  </p> </li>
+<li id="GUID-979AE36E-8A4C-500B-B600-DBB8E589C33E"><p> <xref href="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita">Disconnecting
+ACL links</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e213982_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7068AB77-5C96-59A3-B975-7923FD843832" xml:lang="en"><title>Hash
+Table - Using Hash Table Classes</title><shortdesc>This example application demonstrates some uses of the Hash Table
+APIs of the User Library component</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Hash table is used to construct the following: </p>
+<ul>
+<li id="GUID-0297A974-34AE-5562-A117-C4B66FAEAD54"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-DD6E1786-8612-5D9F-833C-CC7EA6E7D0C2"> Hash Set</xref>  </p> </li>
+<li id="GUID-84E70B2C-E2C0-577E-A505-FADA0208C0FF"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-DB0CE85F-A350-5724-86B3-355494913055">Hash set of pointers</xref>  </p> </li>
+<li id="GUID-EBDFB08C-55E7-5FD0-8368-6F1C06343FDE"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-B5E8D195-C16A-5975-B9B7-55C40441FE2C">Hash map</xref>  </p> </li>
+<li id="GUID-7ABCD2A4-BC34-53A8-B8CE-236A39EB4004"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-FA5FD086-D250-54FE-9D14-3269C3AE1A85">Hash map of pointers</xref>  </p> </li>
+</ul>
+<p>The example also demonstrates performing different operations on these
+hash sets/maps, such as, inserting, finding, iterating, and removing items.
+A set implements an unordered extensional set of objects and a map implements
+an associative array with key and value type using probe sequence hash table. </p>
+<p>The overview contains the following sections: </p>
+<ul>
+<li id="GUID-58254C8A-80EA-576F-96E8-4CAF67AB7E09"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-9027C307-250C-59A1-BC8E-3098817093EB">Download</xref> </p> </li>
+<li id="GUID-20680E37-2D18-5D07-8633-09BFD40CBF0C"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-6AF54D67-574E-517D-BB01-E5EB8A48B134">Description</xref>  </p> </li>
+<li id="GUID-CDEB1647-B3B4-53F5-9CB8-8D27BA4E4FDF"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-c296a224-8cf5-40fa-9980-4749795c821c">Class summary</xref>  </p> </li>
+<li id="GUID-AAB40957-335F-5735-AE03-9CCBE5FEE9B6"><p> <xref href="GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita#GUID-7068AB77-5C96-59A3-B975-7923FD843832/GUID-167C0565-5EFF-5F8E-A4AB-2D1591A9AEFA">Build</xref>  </p> </li>
+</ul>
+<section id="GUID-9027C307-250C-59A1-BC8E-3098817093EB"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-6ff761c5-3381-4d16-b419-a16bb2da2c74.zip" scope="external">HashTableExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-6ff761c5-3381-4d16-b419-a16bb2da2c74.html" scope="peer">browse </xref>to view the example code.</p> </section>
+<section id="GUID-6AF54D67-574E-517D-BB01-E5EB8A48B134"><title>Description</title> <p id="GUID-DD6E1786-8612-5D9F-833C-CC7EA6E7D0C2"><b>Hash set</b> </p> <p>The
+application constructs a hash set by using the default hash and identity function
+for integers and descriptors using the <codeph>RHashSet</codeph> template
+class, and constructs another hash set by providing a defined custom hash
+and identity functions. </p> <p>The application applies the following operations
+to the hash set: </p> <ul>
+<li id="GUID-64CFB688-AC3B-57C2-B282-CF330B30B030"><p>Inserting items using
+the <xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-A3A636D2-CFCC-30A2-A144-26241B50978F"><apiname>RHashSet::Insert()</apiname></xref> function </p> </li>
+<li id="GUID-E94CC014-DCAE-5755-8F7B-EDA09974661D"><p>Finding items using
+the <xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-89226347-DCDF-34D3-ADFE-AE135EE353C6"><apiname>RHashSet::Find()</apiname></xref> function </p> </li>
+<li id="GUID-ABF21E6D-34E8-5830-8505-2B45A9ECDB7E"><p>Iterating items using
+the <xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-BD2A81FF-D6D7-3F60-8204-F8B70A3AD841"><apiname>RHashSet::TIter</apiname></xref> class </p> </li>
+<li id="GUID-D7A98E1F-BCAA-5602-8298-64B8ECC4C02F"><p>Removing items using
+the <xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-AB5393CB-75FD-317E-9FE5-9D8C3A6D8B40"><apiname>RHashSet::Remove()</apiname></xref> function </p> </li>
+</ul><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-89226347-DCDF-34D3-ADFE-AE135EE353C6"><apiname>RHashSet::Find()</apiname></xref></p></li>
+<li><p><xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-A3A636D2-CFCC-30A2-A144-26241B50978F"><apiname>RHashSet::Insert()</apiname></xref></p></li>
+<li><p><xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-AB5393CB-75FD-317E-9FE5-9D8C3A6D8B40"><apiname>RHashSet::Remove()</apiname></xref></p></li>
+<li><p><xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita#GUID-1851A507-A5A9-356F-88A4-494066F43499/GUID-BD2A81FF-D6D7-3F60-8204-F8B70A3AD841"><apiname>RHashSet::TIter</apiname></xref> - A class which allows iteration
+over the elements of a <xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita"><apiname>RHashSet</apiname></xref>class.</p></li>
+</ul> <p id="GUID-DB0CE85F-A350-5724-86B3-355494913055"><b>Hash set of pointers </b> </p> <p>The
+application constructs a hash set of pointers using the default hash and identity
+function for integers and descriptors using the <codeph>RPtrHashSet</codeph> template
+class, and constructs another hash set of pointers by providing a defined
+custom hash and identity functions. </p> <p>The application applies the following
+operations to the hash set of pointers: </p> <ul>
+<li id="GUID-33095E62-B5FE-505A-A7AC-4F6E2A3199AC"><p>Inserting items using
+the <xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-03FDA5C9-EE31-372F-AA5B-6954DCD3D3DF"><apiname>RPtrHashSet::Insert()</apiname></xref> function </p> </li>
+<li id="GUID-AA8AA483-3904-5597-9DFC-2B294F594ACE"><p>Finding items using
+the <xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-1A11BF5E-8BCC-38F6-94E0-5B98AF7A3B73"><apiname>RPtrHashSet::Find()</apiname></xref> function </p> </li>
+<li id="GUID-6D4CF84F-4D82-5022-9035-AA07EC0343C6"><p>Iterating items using
+the <xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-F748E184-32DA-37B6-B582-CB79242F15C7"><apiname>RPtrHashSet::TIter</apiname></xref> class </p> </li>
+<li id="GUID-C763CD87-F13B-565E-BB5A-0ADE43748A8B"><p>Removing items using
+the <xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-B2484300-2961-32E7-976A-3BDAFA54664F"><apiname>RPtrHashSet::Remove()</apiname></xref> function </p> </li>
+</ul><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-1A11BF5E-8BCC-38F6-94E0-5B98AF7A3B73"><apiname>RPtrHashSet::Find()</apiname></xref></p></li>
+<li><p><xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-03FDA5C9-EE31-372F-AA5B-6954DCD3D3DF"><apiname>RPtrHashSet::Insert()</apiname></xref></p></li>
+<li><p><xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-B2484300-2961-32E7-976A-3BDAFA54664F"><apiname>RPtrHashSet::Remove()</apiname></xref></p></li>
+<li><p><xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita#GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2/GUID-F748E184-32DA-37B6-B582-CB79242F15C7"><apiname>RPtrHashSet::TIter</apiname></xref> - A class which allows iteration
+over the elements of a <xref href="GUID-8BE7A907-FF70-3D91-B90A-E394CBBCDBF2.dita"><apiname>RPtrHashSet</apiname></xref> class</p></li>
+</ul> <p id="GUID-B5E8D195-C16A-5975-B9B7-55C40441FE2C"><b>Hash map </b> </p> <p>The
+application constructs a hash map using the default hash and identity function
+for integers and descriptors using the <codeph>RHashMap</codeph> template
+class, and constructs another hash map by providing a defined custom hash
+and identity functions. </p> <p>The application applies the following operations
+to the hash map: </p> <ul>
+<li id="GUID-847FFA28-0849-5310-8224-B7F1240506FE"><p>Inserting items using
+the <xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-266CBFD6-299B-37A3-A769-ACF84CABBA20"><apiname>RHashMap::Insert()</apiname></xref> function </p> </li>
+<li id="GUID-1EEC4933-8AAF-522C-BE70-03975C3BAC3D"><p>Finding items using
+the <xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-DB699FE0-AF9C-39C6-8361-4ED82B3DAAD4"><apiname>RHashMap::Find()</apiname></xref> function </p> </li>
+<li id="GUID-E98D034D-FE29-52D7-A4A1-3A0E584BAADB"><p>Iterating items using
+the <xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-156B9E51-634B-3605-901B-598F6DBEFF54"><apiname>RHashMap::TIter</apiname></xref> class </p> </li>
+<li id="GUID-923C5156-7A0E-595B-898A-F6617C474CF6"><p>Removing items using
+the <xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-9EABABAA-91DB-3EC7-A1A1-385A05AF5067"><apiname>RHashMap::Remove()</apiname></xref> function </p> </li>
+</ul><ul>
+<li><p><xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-DB699FE0-AF9C-39C6-8361-4ED82B3DAAD4"><apiname>RHashMap::Find()</apiname></xref></p></li>
+<li><p><xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-266CBFD6-299B-37A3-A769-ACF84CABBA20"><apiname>RHashMap::Insert()</apiname></xref></p></li>
+<li><p><xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-9EABABAA-91DB-3EC7-A1A1-385A05AF5067"><apiname>RHashMap::Remove()</apiname></xref></p></li>
+<li><p> <xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita#GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6/GUID-156B9E51-634B-3605-901B-598F6DBEFF54"><apiname>RHashMap::TIter</apiname></xref> - A class which allows iteration
+over the elements of a <xref href="GUID-66EC84D0-531B-37DF-B3F4-41574CF941A6.dita"><apiname>RHashMap</apiname></xref> class.</p></li>
+</ul> <p id="GUID-FA5FD086-D250-54FE-9D14-3269C3AE1A85"><b> Hash map of pointers</b> </p> <p>The
+application constructs a hash map of pointers using the default hash and identity
+function for integers and descriptors using the <codeph>RPtrHashMap</codeph> template
+class, and constructs another hash map of pointers by providing a defined
+custom hash and identity functions. </p> <p>The application applies the following
+operations to the hash map of pointers: </p> <ul>
+<li id="GUID-2AE0796E-ADAD-5746-8E79-252247445517"><p>Inserting items using
+the <xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-576450FC-6E12-31F5-8911-F1B7648FC53E"><apiname>RPtrHashMap::Insert()</apiname></xref> function </p> </li>
+<li id="GUID-AB3AA2A9-62A3-542D-9C13-5E91D2C2FB11"><p>Finding items using
+the <xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-CE659124-11FF-30CB-8D9C-EF37A9BB19C5"><apiname>RPtrHashMap::Find()</apiname></xref> function </p> </li>
+<li id="GUID-4A4327BF-55A0-5456-B583-57374497EB91"><p>Iterating items using
+the <xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-69586D97-8AA4-36C4-B32D-2262B305DF90"><apiname>RPtrHashMap::TIter</apiname></xref> class </p> </li>
+<li id="GUID-BF7D6522-7E3D-56FD-8247-CFEB5F0F21F3"><p>Removing items using
+the <xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-85A25E04-95BA-377F-A462-1BE5917D2A27"><apiname>RPtrHashMap::Remove()</apiname></xref> function </p> </li>
+</ul><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-CE659124-11FF-30CB-8D9C-EF37A9BB19C5"><apiname>RPtrHashMap::Find()</apiname></xref></p></li>
+<li><p><xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-576450FC-6E12-31F5-8911-F1B7648FC53E"><apiname>RPtrHashMap::Insert()</apiname></xref></p></li>
+<li><p><xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-85A25E04-95BA-377F-A462-1BE5917D2A27"><apiname>RPtrHashMap::Remove()</apiname></xref></p></li>
+<li><p><xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita#GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225/GUID-69586D97-8AA4-36C4-B32D-2262B305DF90"><apiname>RPtrHashMap::TIter</apiname></xref> - A class which allows iteration
+over the elements of a<xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita"><apiname> RPtrHashMap</apiname></xref> class.</p></li>
+</ul> </section>
+<section id="GUID-C296A224-8CF5-40FA-9980-4749795C821C"><title>Class summary</title><ul>
+<li><p><xref href="GUID-A60735E7-3919-3DDB-AC74-5386C4C5BC51.dita"><apiname>DefaultHash</apiname></xref> - A set of common hashing functions
+for frequently occurring types.</p></li>
+<li><p><xref href="GUID-6634A181-A764-3CC4-BDB6-B51219D2C9CD.dita"><apiname>DefaultIdentity</apiname></xref> - A set of common identity relations
+for frequently occurring types.</p></li>
+<li><p><xref href="GUID-F57D0831-3AD2-3C2F-A1CB-C0A1BE541B73.dita"><apiname>THashFunctions32</apiname></xref></p></li>
+<li><p><xref href="GUID-E75F040A-CEC6-3751-8F96-F16AEDC209A3.dita"><apiname>TIdentityRelation</apiname></xref></p></li>
+<li><p><xref href="GUID-1851A507-A5A9-356F-88A4-494066F43499.dita"><apiname>RHashSet</apiname></xref> </p></li>
+<li><p><xref href="GUID-616B71F7-B0A8-31F9-BCF1-FB736EC7E225.dita"><apiname>RPtrHashMap</apiname></xref></p></li>
+</ul></section>
+<section id="GUID-167C0565-5EFF-5F8E-A4AB-2D1591A9AEFA"><title>Build</title> <p>The
+Symbian OS build process describes how to build an application. </p> <p>The
+HashTableExample builds an executable called <filepath>hashtableexample.exe</filepath> in
+the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to navigate away from the application launcher/shell
+screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1" xml:lang="en"><title>MMFRec:
+Multimedia Framework Audio Recording example </title><shortdesc>This example helps the user in understanding the available audio
+formats supported and how to do audio recording using Multimedia Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Purpose</title> <p>The following is the list of utilities
+demonstrated here: </p> <p> - This example gives the details of all the plugins
+and supported formats that can be used for audio recording.</p> <p> - This
+example is used to record the audio in various supported formats.</p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-6b313f04-bc68-414b-9293-c71b49218b06.zip" scope="external">MMFRec.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-6b313f04-bc68-414b-9293-c71b49218b06.html" scope="peer">browse </xref> to view the example code.</p> </section>
+<section><title>Class summary</title><p>The example shows the following APIs:</p><p><codeph>GetPluginInformationL()</codeph> is
+used to gather the information of all the supported formats and plugins that
+can be used for audio recording.</p><p><codeph>MoscoStateChangeEvent()</codeph> is
+used to do recording, incase of any problems it terminates the recording.</p><p><xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility </apiname></xref> <xref href="GUID-4C0BF43B-FFEF-3897-8E31-9318E82D6AA9.dita"><apiname>CMMFControllerPluginSelectionParameters </apiname></xref> <xref href="GUID-C7ED86EC-0E3F-3EF1-8888-8250F2392C52.dita"><apiname>CMMFFormatSelectionParameters </apiname></xref><xref href="GUID-E667F27C-0753-3334-8361-B4176E88DC7E.dita"><apiname>CMMFControllerImplementationInformation </apiname></xref> </p></section>
+<section id="GUID-DEFCF4B9-452A-5EAF-ABD3-BC4F6FBD528B-GENID-1-6-1-17-1-1-4-1-12-1-3-4"><title>Building and
+configuring</title> <p>To build the example: </p> <p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> <p>For the emulator, the example builds
+an executable called <filepath>mmfrec.exe.exe</filepath> in the <filepath>epoc32\release\winscw\&lt;udeb
+or             urel&gt;\</filepath> folder. </p> </section>
+<section id="GUID-EBDD6313-0188-5D9D-94DB-E9D7B373A741-GENID-1-6-1-17-1-1-4-1-12-1-3-5"><title>Running the
+example</title> <p>When running the example, the user is presented with various
+menu options that are self explanatory. </p> </section>
+<section><title>See also:</title><p><xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio
+Client Overview</xref></p></section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-5-1-7-1-6-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-5-1-7-1-6-1-4-1" xml:lang="en"><title>MMFRec:
+Multimedia Framework Audio Recording example </title><shortdesc>This example helps the user in understanding the available audio
+formats supported and how to do audio recording using Multimedia Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Purpose</title> <p>The following is the list of utilities
+demonstrated here: </p> <p> - This example gives the details of all the plugins
+and supported formats that can be used for audio recording.</p> <p> - This
+example is used to record the audio in various supported formats.</p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-6b313f04-bc68-414b-9293-c71b49218b06.zip" scope="external">MMFRec.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-6b313f04-bc68-414b-9293-c71b49218b06.html" scope="peer">browse </xref> to view the example code.</p> </section>
+<section><title>Class summary</title><p>The example shows the following APIs:</p><p><codeph>GetPluginInformationL()</codeph> is
+used to gather the information of all the supported formats and plugins that
+can be used for audio recording.</p><p><codeph>MoscoStateChangeEvent()</codeph> is
+used to do recording, incase of any problems it terminates the recording.</p><p><xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility </apiname></xref> <xref href="GUID-4C0BF43B-FFEF-3897-8E31-9318E82D6AA9.dita"><apiname>CMMFControllerPluginSelectionParameters </apiname></xref> <xref href="GUID-C7ED86EC-0E3F-3EF1-8888-8250F2392C52.dita"><apiname>CMMFFormatSelectionParameters </apiname></xref><xref href="GUID-E667F27C-0753-3334-8361-B4176E88DC7E.dita"><apiname>CMMFControllerImplementationInformation </apiname></xref> </p></section>
+<section id="GUID-DEFCF4B9-452A-5EAF-ABD3-BC4F6FBD528B-GENID-1-6-1-17-1-1-5-1-7-1-6-1-4-1-3-4"><title>Building and
+configuring</title> <p>To build the example: </p> <p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> <p>For the emulator, the example builds
+an executable called <filepath>mmfrec.exe.exe</filepath> in the <filepath>epoc32\release\winscw\&lt;udeb
+or             urel&gt;\</filepath> folder. </p> </section>
+<section id="GUID-EBDD6313-0188-5D9D-94DB-E9D7B373A741-GENID-1-6-1-17-1-1-5-1-7-1-6-1-4-1-3-5"><title>Running the
+example</title> <p>When running the example, the user is presented with various
+menu options that are self explanatory. </p> </section>
+<section><title>See also:</title><p><xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio
+Client Overview</xref></p></section>
+</refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-708FC2C8-19BB-5EFC-A8CD-B0E9E96A5409-master.png has changed
Binary file Symbian3/SDK/Source/GUID-708FC2C8-19BB-5EFC-A8CD-B0E9E96A5409_d0e360594_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2"><title>Fast Forwarding and Rewinding</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to fast forward and rewind video clips. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to fast forward and rewind video clips during playback. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>You can view a video clip in fast forward, rewind and slow-motion playback. This is achieved by setting the playback velocity to a value higher or lower than normal playback speed. The default playback velocity is 100. Values above 100 and below 0 correspond to fast forward and rewind respectively, while values 1 to 99 represent slow-motioned playback. </p> <p> <b>Note:</b> This functionality is dependent on the capabilities of the underlying play-controller implementation and the characteristics of the video clip. </p> </section> <section><title>Using Playback Velocity </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-FB5CC1B8-9BE8-5382-81C7-49D9269B7DEB"><p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita#GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2/GUID-744097F7-7679-5309-98BC-C1FB6442B43B">Fast Forward and Rewind a Video Clip</xref>  </p> </li> </ul> <p id="GUID-744097F7-7679-5309-98BC-C1FB6442B43B"><b>Basic Procedure</b> </p> <p>The high level steps to fast forward and rewind a video clip are shown here: </p> <ol id="GUID-41F59ED3-3585-5688-AB8F-360C59508B27"><li id="GUID-9B1EC0AC-441D-5DF1-8E7D-BF6F79DBE8B7"><p>Create a new video player utility object. </p> </li> <li id="GUID-94EBEFAD-7C5E-5214-B7C9-A4E60D97CC73"><p>Open a video clip to play. </p> </li> <li id="GUID-BD33FE51-7723-5D3D-A2B4-79FEBA6CEDE8"><p>Use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-45F4B0E5-2EF4-3391-A925-DD31C9E997F6"><apiname>CVideoPlayerUtility::GetPlayRateCapabilitiesL()</apiname></xref> to check the current forward and rewind capabilities. </p> </li> <li id="GUID-56D7CAB6-207C-56D0-B846-F0F0BBEDAF23"><p>Call the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B4FB00AA-A85B-3A3F-91BE-C5347462BA95"><apiname>CVideoPlayerUtility::Prepare()</apiname></xref> method. </p> </li> <li id="GUID-B2D54F6F-7BB9-5207-BB02-AAB67941B1BD"><p>Call <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-A9DCC4EB-B4B3-3AF4-B78C-DC3531A32DCC"><apiname>CVideoPlayerUtility::Play()</apiname></xref> to start playback. </p> </li> <li id="GUID-7DB0514F-3C2F-5308-8206-E0A7EFF81EDE"><p>The default playback velocity is 100. To fast forward use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-7C05E56D-325D-38F0-831D-54F36DB0DDD7"><apiname>CVideoPlayerUtility::SetPlayVelocityL()</apiname></xref> and set <xref href="GUID-5D9F4230-0A5A-3C31-90EB-D404B020F37D.dita"><apiname>aVelocity</apiname></xref> to a value greater than 100. Velocity set in this call takes effect immediately. </p> </li> <li id="GUID-9E493165-5695-50C7-B559-55478092E079"><p>To rewind use <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-7C05E56D-325D-38F0-831D-54F36DB0DDD7"><apiname>CVideoPlayerUtility::SetPlayVelocityL()</apiname></xref> and set <xref href="GUID-5D9F4230-0A5A-3C31-90EB-D404B020F37D.dita"><apiname>aVelocity</apiname></xref> to a value less than 0. Velocity set in this call takes effect immediately. </p> </li> <li id="GUID-069D1596-B643-52D8-9A37-ADB1A59E3CEA"><p>Call <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-C103A911-AF93-3350-B731-C186A279F1DC"><apiname>CVideoPlayerUtility::Stop()</apiname></xref> to halt video playback. </p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-0666098F-F44F-5BF4-805F-251F79D2268C" xml:space="preserve">// Create new video player utility object (iVideoPlayer)
+// Open the video clip
+// Call Prepare()
+// Call Play()
+
+iVideoPlayer-&gt;GetPlayRateCapabilitiesL(iVideoPlayRateCapabilities);
+// Return the current playback rate capabilities
+
+//Check that engine has forward capability.
+if( iVideoPlayRateCapabilities.iPlayForward)
+{
+iVideoPlayer-&gt;SetPlayVelocityL(200); // fast forward
+}
+else
+{
+// Forward is not supported.
+}
+
+// If user wants to rewind. Check that engine has rewind capability.
+if( iVideoPlayRateCapabilities.iPlayBackward)
+{
+iVideoPlayer-&gt;SetPlayVelocityL(-200); // rewind
+}
+else
+{
+// Rewind is not supported.
+}
+
+// Call Stop()</codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-70B9796F-8CF3-5DC4-93B4-0B1FED936169.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-70B9796F-8CF3-5DC4-93B4-0B1FED936169" xml:lang="en"><title>UI
+Data MTM implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Note:</b> This example is designed to work with Techview and there
+is no guarantee that it will work on other interfaces </p>
+<p>The <filepath>txti</filepath> project demonstrates a UI Data MTM. The central
+class is <codeph>CTxtiMtmUiData</codeph>, derived from the User Interface
+MTM base class <codeph>CBaseMtmUiData</codeph>. </p>
+<p> <filepath>txti</filepath> implements the following MTM functionality: </p>
+<section><title>Example Code</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.zip" scope="external">TextMTM.zip</xref>  </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.html" scope="peer">browse</xref> to view the example code. </p> <p>The
+files reproduced here are the main files contained in the examples directory.
+Some extra files may be needed to run the examples, and these will be found
+in the appropriate examples directory. </p> </section>
+<section><title>Class summary</title><p><xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref></p></section>
+<section><title>Icons</title> <p>Icons are provided for messages, folders,
+and services, for use in the message browser. They are built into a Symbian
+OS multi-bitmap file <filepath>txti.mbm</filepath>. <codeph>ContextIcon()</codeph> selects
+the correct icon depending on the entry context. </p> </section>
+<section><title>MTM-specific operations</title> <p>Menu specifications for
+the two MTM-specific operations, Refresh and Export text to file, are provided
+in the resource <codeph>r_textud_function_array</codeph>. <codeph>OperationSupportedL()</codeph> determines
+whether these operations are appropriate to the entry context. </p> </section>
+<section><title>Context-specific information (Can&lt;Operation&gt; functions)</title> <p>Implementations
+of these functions check that that the specific operation is available and
+appropriate to the context. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-70CD9D74-8592-45F2-A91F-AD34ED93CB3D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-70CD9D74-8592-45F2-A91F-AD34ED93CB3D" xml:lang="en"><title>Adding
+an Alarm</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>You can add or queue an alarm to the Alarm Server either
+by Synchronous or Asynchronous method:</p><ul>
+<li><p><b>Synchronous method</b> (<codeph>RASCliSession::AlarmAdd</codeph>)
+- This method allocates a unique identifier (a <codeph>TAlarmId</codeph> object)
+for the alarm, adds the alarm to the queue, and returns. Follow the steps
+given below to add alarm synchronously:  </p><ol>
+<li id="GUID-0FA7FE18-3C1D-42D9-A24A-F0EFA22A916D"><p>Create an alarm object.</p><codeblock xml:space="preserve">TASShdAlarm alarm;</codeblock></li>
+<li id="GUID-BBCA5506-2C84-44BE-AE4E-D6595E01F937"><p>Set the alarm properties such as Category, Repeat Definition, Message,
+Next Due Time and Sound Name. For more information on the alarm properties,
+refer to <xref href="GUID-7BCA8B7A-E250-5452-9837-26C60F71F14F.dita">Alarm Properties</xref>.</p><codeblock xml:space="preserve">alarm.Category() = KASCliCategoryClock;
+alarm.RepeatDefinition() = EAlarmRepeatDefintionRepeatDaily;
+_LIT( KAlarmTestInit, "This is an alarm message - alarm 1" );
+alarm.Message() = KAlarmTestInit;alarm.NextDueTime().HomeTime();
+alarm.NextDueTime() += TTimeIntervalMinutes( 1 );
+_LIT( KAlarmTestSoundName, "Arf Arf Woop" );
+alarm.SoundName() = KAlarmTestSoundName;</codeblock></li>
+<li id="GUID-6084D3F8-4AAE-4183-A8AF-8A8248906B58"><p>Add the alarm object to Alarm Server.</p><codeblock xml:space="preserve">TInt ret = TheAlarmServerSession.AlarmAdd( alarm );</codeblock></li>
+<li id="GUID-84B488F6-6752-40F2-8E1C-D1940A1457A1"><p>Retrieve the alarm ID.</p><codeblock xml:space="preserve">TAlarmId alarmId = alarm.Id();</codeblock></li>
+</ol></li>
+<li><p><b>Asynchronous method</b> (<codeph>RASCliSession::AlarmAddWithNotification</codeph>)
+- The steps are similar to the Synchronous method, except, when either the
+alarm expires or is cancelled, the Alarm Server notifies the client by completing
+the outstanding request, the <codeph>TRequestStatus</codeph> object.</p></li>
+</ul><p>When adding a new alarm to the Alarm Server, some validation is required
+to ensure the integrity of the Alarm Server. Therefore, no alarm that is to
+be added must be session-specific and have a repeat definition other than <codeph>TAlarmRepeatDefinition::AlarmRepeatDefintionRepeatOnce</codeph>.
+ </p><note> If an alarm is set having a repeat definition of <codeph>TAlarmRepeatDefinition::EAlarmRepeatDefintionRepeatWorkday</codeph>,
+the system-wide (<codeph>TLocale</codeph>-based) work days must be defined
+first. If the system-wide workdays are not defined, the alarm is added to
+the Alarm Server queue with status as <codeph>TAlarmStatus::EAlarmStatusDisabled</codeph>.
+When a change in the workday is detected (caused by a change in locale), the
+alarm will be enabled.</note><p>The alarm time can be set with the accuracy
+of a minute. If an alarm is set in the past, the user is notified immediately.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA"><title>Position Area Data Classes</title><shortdesc>This document describes the basic and extended position area data classes that contain information about the accuracy of the position returned to an application when it calls <apiname>RPositioner::GetLastKnownPositionArea()</apiname>. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>LBS maintains a cache of previously calculated position fixes. If an application calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-BF3BBDC5-8B12-3374-ACEB-4013E9CFEBEF"><apiname>RPositioner::GetLastKnownLocation()</apiname></xref>, LBS returns the most recently calculated position. If an application calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-A8484963-B2C4-339D-AF8C-056792444D89"><apiname>RPositioner::GetLastKnownPositionArea()</apiname></xref>, LBS returns the position fix that is the best match for the current location of the mobile device. The current location of the mobile device is estimated from data received from the network. </p> <p>The Location Acquisition API defines a set of position area data classes (figure 1). A client application passes an object of one of these classes as a parameter when it calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-A8484963-B2C4-339D-AF8C-056792444D89"><apiname>RPositioner::GetLastKnownPositionArea()</apiname></xref>. The position area data classes are defined in <filepath>LbsAreaInfo.h</filepath>. </p> <fig id="GUID-898DA2B8-185E-5906-803A-1871320A0F7E"><title>
+          Figure 1. Position Area Data Classes. 
+        </title> <image href="GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e241603_href.png" placement="inline"/></fig> <p>A brief description of the classes follows. Follow the links to more detailed reference documentation. </p> <ul><li id="GUID-6EFEC1C0-FA51-5700-AF45-C25F69C8FF34"><p> <xref href="GUID-4AD8EC91-7272-3ABA-92AB-E299E85FDC6D.dita"><apiname>TPositionAreaInfoBase</apiname></xref> is the base class of the position area data classes. Applications create an object of one of the derived classes. </p> </li> <li id="GUID-0F54B61E-D87A-5014-8808-863323BBD475"><p> <xref href="GUID-5FA78254-70C7-3105-B6CE-E1A294C8F773.dita"><apiname>TPositionAreaInfo</apiname></xref> contains basic information about the accuracy of a returned position. Its defines an enumerated type <xref href="GUID-5FA78254-70C7-3105-B6CE-E1A294C8F773.dita#GUID-5FA78254-70C7-3105-B6CE-E1A294C8F773/GUID-3B9DEDE6-8903-3B26-9CE6-19D6B4833309"><apiname>TPositionAreaInfo::_TArea</apiname></xref> that defines an estimate of how closely the current device position matches the returned position. The position accuracy estimate can be from country level down to street level, depending on how much information is available from the network. </p> </li> <li id="GUID-7ADA8994-7028-5C76-9870-FB0F4AA82F82"><p> <xref href="GUID-BC7DEDAF-80AE-34DC-8FD8-CF77FA511B3D.dita"><apiname>TPositionAreaExtendedInfo</apiname></xref> extends <codeph>TPositionAreaInfo</codeph> to provide details about how the accuracy estimate of the returned position was calculated. </p> <p>An accuracy estimate can be obtained from the network as some combination of the following: </p> <ul><li id="GUID-AA4BFDD9-D024-5F1C-873C-55A18AC7EB10"><p>Mobile Country Code </p> </li> <li id="GUID-7AEE15CD-33B2-5833-BE64-8E2D2C729DF4"><p>Mobile Network Code </p> </li> <li id="GUID-4666634D-05C4-59C1-AD51-55A28F67DC3B"><p>Location Area Code </p> </li> <li id="GUID-B3BEE4FC-8955-5FAC-B382-121F49C8D1D7"><p>Cell ID </p> </li> </ul> <p>LBS uses combinations of the above to derive the accuracy estimate returned from <xref href="GUID-5FA78254-70C7-3105-B6CE-E1A294C8F773.dita#GUID-5FA78254-70C7-3105-B6CE-E1A294C8F773/GUID-C8B19BA7-72A0-35CD-AF72-AD74E9C0CE5B"><apiname>TPositionAreaInfo::Area()</apiname></xref>. Your application can find what types of data were used to calculate the accuracy estimate by passing an object of class <xref href="GUID-BC7DEDAF-80AE-34DC-8FD8-CF77FA511B3D.dita"><apiname>TPositionAreaExtendedInfo</apiname></xref> to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-A00A1673-10F2-357A-A3CA-FFB4E14F2F8D"><apiname>RPositioner::GetLastKnownLocationArea()</apiname></xref> and then using the methods shown in figure 1 to check for code and ID matches. </p> </li> </ul> </conbody><related-links><link><linktext/></link><link href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita"><linktext>How to Get Location Information</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-710FADA2-7A6C-5D60-BCE5-8772071F2BD4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-710FADA2-7A6C-5D60-BCE5-8772071F2BD4"><title>Categorising an Entry</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can categorise a calendar entry using twelve built-in types such as appointment, business, education, holiday, meeting and travel. <xref href="GUID-B04F36D1-88B6-3D87-836A-130C0B862515.dita"><apiname>CCalCategory</apiname></xref> encapsulates a category. <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita#GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801/GUID-09038E6D-63B8-38F8-9B83-BA6693675A06"><apiname>CCalEntry::AddCategoryL()</apiname></xref> sets a category for an entry. </p> <p>You can also specify new categories. <xref href="GUID-B55ED3C8-2C9F-3B71-A8D5-EE66FC5FD8C0.dita"><apiname>CCalCategoryManager</apiname></xref> allows you to add and delete a category, list the categories in the file, and filter the calendar entries for a given category. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-711C387D-E10C-5469-872A-5B2BDACC9B91.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-711C387D-E10C-5469-872A-5B2BDACC9B91" xml:lang="en"><title>InterfaceImplementation:
+ECom Interface Implementation Example Code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5A40D777-312C-520F-AE12-310723E8D1F2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4d91db5b-1dd7-43ba-9ce8-1c2a1f08a120.zip" scope="external">ECom.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4d91db5b-1dd7-43ba-9ce8-1c2a1f08a120.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.  </section>
+<section><title>Description</title> <p> <codeph>InterfaceImplementation</codeph> provides
+two implementations of the <codeph>CExampleInterface</codeph> interface that
+is defined in the <filepath>InterfaceDefinition</filepath> example. </p> <p>The
+implementations, <codeph>CImplementationClassOne</codeph> and <codeph>CImplementationClassTwo</codeph>,
+each define <codeph>CExampleInterface</codeph>'s virtual <codeph>DoMethodL()</codeph> function
+to return a string, and to set an integer parameter passed by the client. </p> <p>The <filepath>10009DB1.rss</filepath> file
+contains a <codeph>REGISTRY_INFO</codeph> resource that declares ECom registration
+information for the two implementations. </p> </section>
+<section><title>Usage</title> <p>Building <filepath>InterfaceImplementation</filepath> produces
+a DLL, <filepath>EComExample.dll</filepath>, and compiled resource file, <filepath>EComExample.rsc</filepath>,
+in the <filepath>\resource\plugins\</filepath> directory. </p> <p>A
+client program that accesses these implementations is provided in the <xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">Interface Client</xref> example. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F"><title>Audio Input Streaming Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of Audio Input Streaming. </p> <section><title>Purpose</title> <p>Audio Input Streaming is the interface to streaming sampled audio data from the low level audio controller part of the Multimedia Framework (MMF). </p> <p><b>Audio Input Streaming Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-8B265CE9-32F7-50B2-A441-9297ACAA50E7"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>mediaclientaudioinputstream.dll</b>  </p> </entry> <entry><p> <b>mediaclientaudioinputstream.lib</b>  </p> </entry> <entry><p>These files are used for implementing Audio Input Streaming. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>How the Audio Input Streaming classes interact with other components of MMF is shown below: </p> <fig id="GUID-F8971636-AAF3-5DE3-A8D6-40310AB3FE0F"><title>
+             Audio input streaming overview 
+          </title> <image href="GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e289045_href.png" placement="inline"/></fig> </section> <section><title>Description</title> <p>Streamed audio data is sent and received incrementally. This means: </p> <ul><li id="GUID-4FEF36CA-0938-5897-B799-6C7E4BFB5B94"><p>sound clips sent to the low level audio controller (audio play) can be sent as they arrive rather than waiting until the entire clip is received. </p> <p>The user of the API should maintain the data fragments in a queue before sending them to the server. If the user attempts to send data faster than the server can receive it, the excess data fragments are maintained in another client side queue (invisible to the user), whose elements are references to the buffers passed to it. The server notifies the client using a callback each time it has received a data fragment. This indicates to the client that the data fragment can be deleted. </p> </li> <li id="GUID-EA299CC6-F891-5F49-885B-BC42A564FCFE"><p>sound clips that are being captured by the low level audio controller (audio record) can be read incrementally without having to wait until audio capture is complete. </p> <p>The low level audio controller maintains the received buffers where it can place the audio data that is being captured. The client uses a read function to read the received data into destination descriptors. </p> </li> </ul> <p>The client is also notified (for audio play and record) when the stream is opened and available for use (opening takes place asynchronously), and when the stream is closed. </p> <p>This API can only be used to stream audio data, with the data being stored or sourced from a descriptor. Client applications must ensure that the data is in 16 bit PCM format as this is the only format supported. The API does not support mixing. A priority mechanism is used to control access to the sound device by more than one client. </p> </section> <section><title>Key Audio Input Streaming Classes</title> <p>The functionality provided by Audio Input Streaming is contained within the <xref href="GUID-92BDB3AF-D9DB-35E2-AC6F-6435D3D1A4D8.dita"><apiname>CMdaAudioInputStream</apiname></xref> class. </p> </section> <section><title>Using Audio Input Streaming</title> <p>Clients can use Audio Input Streaming to: </p> <ul><li id="GUID-9C700094-649A-5F8F-9147-75B9A4C5F079"><p>Open, set audio and mobile equipment properties, read from and close the audio stream. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita">Audio Input Streaming Tutorial</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-71909C6D-297C-50A9-99BB-FEBC67389954.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-71909C6D-297C-50A9-99BB-FEBC67389954" xml:lang="en"><title>Conditions</title><abstract><p>A <codeph>condition</codeph> can be structured in any of the
+following ways: </p><table id="GUID-B95AB521-6EB8-5592-B2A4-125DAD0214BD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Usage</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-71909C6D-297C-50A9-99BB-FEBC67389954.dita#GUID-71909C6D-297C-50A9-99BB-FEBC67389954/GUID-97BFD6F4-3139-5469-8701-2916CD7745BA"> condition-primitive</xref>  </p> </entry>
+<entry><p> <codeph>(condition)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>AND</codeph>  </p> </entry>
+<entry><p> <codeph>(condition) AND (condition)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>OR</codeph>  </p> </entry>
+<entry><p> <codeph>(condition) OR (condition)</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NOT</codeph>  </p> </entry>
+<entry><p> <codeph>NOT(condition)</codeph>  </p> <p> <b>Note</b>: Specify
+the condition within braces, when using <codeph>IF</codeph> statement with <codeph>NOT</codeph> operator.
+For example: </p> <codeblock id="GUID-2DA29151-E682-5BFF-B4AC-ABCD6B726CBE" xml:space="preserve">IF NOT (MachineUid = 0x101fb3dd)</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-97BFD6F4-3139-5469-8701-2916CD7745BA"><title>condition-primitive</title> <p>A <codeph>condition-primitive</codeph> can
+be any of the following: </p> <table id="GUID-1C03207A-D960-5BEE-9330-EFA265418300">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Usage</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>attrib=value</codeph>  </p> </entry>
+<entry><p>Condition to test the <codeph>Equal to</codeph> expression. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>attrib&lt;&gt;value</codeph>  </p> </entry>
+<entry><p>Condition to test the <codeph>Less than or greater than</codeph> expression </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>attrib&gt;value</codeph>  </p> </entry>
+<entry><p>Condition to test the <codeph>Greater than</codeph> expression. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>attrib&lt;value</codeph>  </p> </entry>
+<entry><p>Condition to test the <codeph>Less than</codeph> expression. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>attrib&gt;=value</codeph>  </p> </entry>
+<entry><p>Condition to test the <codeph>Greater than or equal to</codeph> expression. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>attrib&lt;=value</codeph>  </p> </entry>
+<entry><p>Condition to test <codeph>Less than or equal to</codeph> expression. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>exists(filename)</codeph>  </p> </entry>
+<entry><p>Tests for the existence of a file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>appprop(uid,propid)</codeph>  </p> </entry>
+<entry><p>Retrieves the properties from another registry entry. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>package(package_uid)</codeph>  </p> </entry>
+<entry><p>Tests for the existence of an installed package. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>version(package_uid,rel_operator,v_major,v_minor,v_build)
+                  </codeph>  </p> </entry>
+<entry><p>Tests for the existence of a specific version of the installed package. </p> <p>v_major
+= major component of the version (range 0-127); v_minor = minor component
+of the version (range 0-99); v_build = build component of the version (range
+0-32,767) </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-8D2AE716-03BD-5EC2-929A-9F268F811C40"><b>attrib</b> </p> <p> <codeph>attrib</codeph> can
+be one of the attributes defined in <codeph>HALData::TAttribute</codeph>.
+These attributes correspond to hardware properties of the device. It must
+be specified in uppercase and without the initial letter <codeph>E</codeph>.
+The following attributes are supported: </p> <table id="GUID-C06BDE17-DCB2-52E5-82D9-54C36A3EE6D6">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>PKG variable name</b>  </p> </entry>
+<entry><p> <b>HALData attribute (as retrieved by HAL::Get())</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MANUFACTURER</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EManufacturer </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MANUFACTURERHARDWAREREV</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EManufacturerHardwareRev </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MANUFACTURERSOFTWAREREV</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EManufacturerSoftwareRev </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MANUFACTURERSOFTWAREBUILD</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EManufacturerSoftwareBuild </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MODEL</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EModel </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MACHINEUID</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EMachineUid </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DEVICEFAMILY</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EDeviceFamily </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DEVICEFAMILYREV</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EDeviceFamilyRev</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CPU</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::ECPU</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CPUARCH</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ECPUArch </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CPUABI</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ECPUABI</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CPUSPEED</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ECPUSpeed</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SYSTEMTICKPERIOD</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ESystemTickPeriod</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MEMORYRAM</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EMemoryRAM</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MEMORYRAMFREE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EMemoryRAMFree</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MEMORYROM</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EMemoryROM</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MEMORYPAGESIZE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EMemoryPageSize</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>POWERBACKUP</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EPowerBackup </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYBOARD</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EKeyboard </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYBOARDDEVICEKEYS</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EKeyboardDeviceKeys</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYBOARDAPPKEYS</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EKeyboardAppKeys </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYBOARDCLICK</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EKeyboardClick </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYBOARDCLICKVOLUMEMAX</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EKeyboardClickVolumeMax </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYXPIXELS</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EDisplayXPixels</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYYPIXELS</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EDisplayYPixels</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYXTWIPS</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EDisplayXTwips</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYYTWIPS</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EDisplayYTwips </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYCOLORS</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EDisplayColors </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYCONTRASTMAX</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EDisplayContrastMax </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>BACKLIGHT</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EBacklight </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PEN</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EPen</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PENX</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EPenX</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PENY</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EPenY </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PENDISPLAYON</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EPenDisplayOn </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PENCLICK</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EPenClick</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PENCLICKVOLUMEMAX</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EPenClickVolumeMax </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MOUSE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EMouse</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MOUSEX</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EMouseX</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MOUSEY</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EMouseY</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>MOUSEBUTTONS</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EMouseButtons</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>CASESWITCH</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ECaseSwitch </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>LEDS</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ELEDs</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>INTEGRATEDPHONE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EIntegratedPhone</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYBRIGHTNESS</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EDisplayBrightness</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>DISPLAYBRIGHTNESSMAX</codeph>  </p> </entry>
+<entry><p> <codeph> HALData::EDisplayBrightnessMax</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KEYBOARDBACKLIGHTSTATE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EKeyboardBacklightState</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>ACCESSORYPOWER</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EAccessoryPower</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SYSTEMDRIVE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ESystemDrive </codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FPHARDWARE</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::EHardwareFloatingPoint</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NUMHALATTRIBUTES</codeph>  </p> </entry>
+<entry><p> <codeph>HALData::ENumHalAttributes </codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following attributes, which are not stored in the HAL, can
+additionally be specified: </p> <table id="GUID-86E7846C-3B2C-5DC3-959F-E193DDA31E48">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Attribute</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>LANGUAGE</codeph>  </p> </entry>
+<entry><p>An integer that identifies the language selected by the Symbian
+device user, during installation. For possible values, see the <xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref> enumeration
+defined in <filepath>e32lang.h</filepath>. </p> <p> <b>Note</b>: It is recommended
+to use language blocks to install language-specific files. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Option&lt;n&gt;</codeph>  </p> </entry>
+<entry><p>Specifies the options that are displayed to the Symbian device user
+during installation. See <xref href="GUID-FF82B80D-18CA-5333-83EB-3AB94F696016.dita">Option-List</xref> for
+more information. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9"><title>The Font and Bitmap Server Overview</title><shortdesc>The Font and Bitmap Server (FBServ) provides a memory efficient way of using bitmaps and fonts. It stores a single instance of each bitmap in either a shared heap or in eXecute In Place (XIP) ROM and provides clients with read and (when appropriate) write access. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>RAM-based fonts and bitmaps are reference counted and retained in RAM while they are being used. When they are no longer required they are automatically deleted. </p> <section><title>Key terms</title> <dl><dlentry><dt>Bitmap</dt> <dd><p>A two-dimensional (2D) buffer (in memory) that contains the color values for individual pixels and is encapsulated by the <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> class. </p> </dd> </dlentry> <dlentry><dt>Extended bitmap</dt> <dd><p>A bitmap that contains data compressed using proprietary formats. </p> </dd> </dlentry> <dlentry><dt>Raster image</dt> <dd><p>A data structure representing a rectangular grid of pixels. Scaling raster images usually leads to a loss of quality. </p> </dd> </dlentry> <dlentry><dt> Vector image</dt> <dd><p>The use of geometrical primitives such as points, lines, curves and polygons to represent an image. Vector images can be scaled without loss of quality. </p> </dd> </dlentry> <dlentry><dt>Rasterization</dt> <dd><p>The process of converting vector image drawing instructions into a raster image that can be displayed on the screen. </p> </dd> </dlentry> <dlentry><dt>Scan line</dt> <dd><p>A row of pixels in a raster image. This use of the term is derived from its original use in a raster scanning pattern, such as a video line on the cathode ray tube (CRT) display of a television. </p> </dd> </dlentry> </dl> <p>For font-related terms, see <xref href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita">Font and Text Services Collection Overview</xref>. </p> </section> <section><title>Architectural relationships</title> <p>The Font and Bitmap Server is tightly integrated with the BitGDI and Window Server components. It provides client-side classes for fonts, bitmaps and the typeface store. </p> <p>In use the Font and Bitmap Server is largely transparent. When a client of the Window Server opens a Window Server session, that session silently creates an <xref href="GUID-E5B29AC0-4953-385F-84C5-13EE6CB77D46.dita"><apiname>RFbsSession</apiname></xref> and stores it in Thread Local Storage (TLS). Client-side font and bitmap classes such as <xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname>CFbsFont</apiname></xref> and <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> automatically find the session in TLS when they are constructed. (These are client-side objects that refer to objects in the server. Because they are heap-based classes, they have names beginning with C.) </p> <p>The Font and Bitmap Server contains the font store, which is a separate DLL provided by the <xref href="GUID-B798C19D-4030-564A-A208-D84738259D72.dita">Font Store (FntStore) component</xref>. Client-side access to the font store is through <xref href="GUID-5E287BF6-08C1-36A2-9085-F6B61CC52550.dita"><apiname>CFbsTypefaceStore</apiname></xref>. </p> </section> <section><title>Description</title> <p>The Font and Bitmap Server is a singleton process that owns fonts and bitmaps. <xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname>CFbsFont</apiname></xref> and <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> objects are actually client-side handles to the font and bitmap objects, which are stored on a globally accessible heap while they are in use. Bitmap data is stored separately in a globally accessible disconnected chunk. </p> <fig id="GUID-51E1E299-6F2C-561F-8009-E4AF2B58A745"><image href="GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e176468_href.png" placement="inline"/></fig> <p>When the reference count of clients using a font or bitmap that is resident in RAM falls to zero, the server can delete it and free the memory. XIP ROM based bitmaps are accessed in place, not copied into RAM. </p> <p>Open fonts, which are stored in font files as vector data, must be rasterized into the Font and Bitmap Server's shared heap. Rasterizers are plug-ins to the Font Store component. There is a performance overhead to rasterizing an open font and a memory overhead for storing it. </p> </section> <section><title>API summary</title> <p>The Font and Bitmap Server presents a conventional client API through <xref href="GUID-E5B29AC0-4953-385F-84C5-13EE6CB77D46.dita"><apiname>RFbsSession</apiname></xref>, which represents the handle to a server-side session. The classes <xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname>CFbsFont</apiname></xref> and <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> are client-side representations of font and bitmap classes. </p> <ul><li id="GUID-80C1D158-E216-57E2-BB6E-1CD8C208FC92"><p>The <codeph>CFbsFont</codeph> class represents fonts managed by the Font and Bitmap Server, both bitmap fonts and OpenType fonts. </p> </li> <li id="GUID-D0629C81-48F5-5A9F-9D63-EC5B9D5D624B"><p>The <codeph>CFbsBitmap</codeph> class represents bitmaps managed by the Font and Bitmap Server, both RAM and XIP ROM-based bitmaps. For RAM-based bitmaps, this class provides facilities for creating, loading, saving, and resizing bitmaps. RAM-based bitmaps are commonly loaded from a multi-bitmap file (.<filepath>mbm</filepath>) file or created as off-screen bitmaps, and then blitted to a window. For XIP ROM-based bitmaps, <codeph>CFbsBitmap</codeph> provides facilities for accessing the data. </p> </li> </ul> <p>The Font and Bitmap Server is unusual in that the <codeph>RFbsSession</codeph> is stored in client-side thread local storage (TLS). The constructors for <codeph>CFbsFont</codeph> and <codeph>CFbsBitmap</codeph> find this session handle automatically: the client program does not have to pass it as a parameter. Therefore, to most client programs, the client/server nature of using fonts and bitmaps is hidden from the API. </p> <p>The <codeph>RFbsSession</codeph> is created for clients by the Window Server’s client-side API when a Window Server session, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref>, is constructed. A Window Server client is therefore also a client of the Font and Bitmap Server. </p> <p>When a client calls, for example, the <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita#GUID-0AEE5955-C530-35F1-A904-69183331B294/GUID-1A360BAF-D2EF-3D96-8E6A-C399631EFBB9"><apiname>CWindowGc::DrawBitmap()</apiname></xref> function, the handle number of the bitmap is passed to the Window Server through inter-process communication (IPC). Like all <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> drawing commands, the handle number is stored in a client-side command buffer, which by default is flushed to the server side only when it is full. Once flushed to the server-side, the command buffer is processed by the <xref href="GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita">Window Server rendering loop</xref>. Consider the scenario where an application calls <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita#GUID-0AEE5955-C530-35F1-A904-69183331B294/GUID-1A360BAF-D2EF-3D96-8E6A-C399631EFBB9"><apiname>CWindowGc::DrawBitmap()</apiname></xref> and then closes the bitmap before the client-side buffer is flushed. There needs to be some mechanism to prevent the bitmap’s reference count from reaching zero and hence being deleted before the Window Server can render it. For this reason, <xref href="GUID-E5B29AC0-4953-385F-84C5-13EE6CB77D46.dita"><apiname>RFbsSession</apiname></xref> has a callback, which is invoked whenever a client closes a bitmap handle. The callback causes an immediate flush of the Window Server client-side command buffer. The Window Server then creates on the server side a duplicate <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> for the bitmap. This increases the bitmap's reference count and therefore prevents it from being deleted before the Window Server attempts to render it. The same mechanism applies to font handles. This mechanism is transparent to clients of the Window Server. </p> </section> </conbody><related-links><link href="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita"><linktext>Font and Bitmap Server Collection</linktext> </link> <link href="GUID-30CAE438-6CC7-5532-8727-781B8E83574A.dita"><linktext>Heap Locking in the Font and Bitmap
+                Server</linktext> </link> <link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext>Font and Text Services Collection
+                Overview </linktext> </link> <link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component Overview </linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e177233_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-71F33868-0C59-5CE8-95BD-304066DB8946.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-71F33868-0C59-5CE8-95BD-304066DB8946"><title>Change notification</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Clients can be notified of changes to a database through an <codeph>RDbNotifier</codeph> object. This class is particularly useful for shared databases.</p> <p>A client makes an asynchronous request for notification, and this request completes when:</p> <ul><li id="GUID-F1437C46-26A1-5332-A001-D1A59D1D7D1B"><p>a transaction is committed</p> </li> <li id="GUID-CAC96C67-DA03-502C-A096-A1F0B95E1967"><p>a transaction is rolled back</p> </li> <li id="GUID-5A06F0C0-B151-56B5-92A6-C9CE2E88C0CE"><p>the database has been recovered</p> </li> <li id="GUID-C30258A7-BFC9-59A5-B12A-CDF6B0145EEA"><p>the database is closed</p> </li> <li id="GUID-7A2EC591-EBDD-57F1-9644-E33C1DD27C41"><p>all read-locks are removed</p> </li> </ul> <p>Any number of notifiers can be opened by a client on the same database and they all act identically.</p> <p>The lifetime of a notifier object is independent of the database that it is observing. For example, a client can close a database <i>before</i> closing a notifier which is observing that database. In this case, the notifier continues to report all activity on the database caused by other clients. Once the last client has closed the database, the notifier reports the status <codeph>RDbNotifier::EClose</codeph>; any further requests for change notification complete immediately with the same status, i.e. <codeph>RDbNotifier::EClose</codeph>.</p> <p>Notifiers cannot be opened on client-side databases.</p> <p>Only one request can be outstanding on a single notifier at any one time. If further database events occur while a client is handling the completion of a previous database event, the notifier remembers the most significant event; this is determined as:</p> <ul><li id="GUID-AD0E2488-553B-59C3-97FE-756D60A00BEB"><p>a database recovery event (<codeph>RDbNotifier::ERecover</codeph>) is more important than a transaction rollback event (<codeph>RDbNotifier::ERollback</codeph>)</p> </li> <li id="GUID-62700E30-4911-50A5-B8B8-B1F0431D0EF3"><p>a transaction rollback event (<codeph>RDbNotifier::ERollback</codeph>)is more important than a transaction committed event (<codeph>RDbNotifier::ECommit</codeph>)</p> </li> </ul> <p>Read-locks removed events (<codeph>RDbNotifier::EUnlock</codeph>) are not remembered in this way.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-71F41FAA-E549-55EF-B9F7-5F349EE96D63.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-71F41FAA-E549-55EF-B9F7-5F349EE96D63" xml:lang="en"><title>Playing Audio</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to use the DevSound library while palying audio.</p> </conbody><related-links><link href="GUID-C05374FC-CF33-58C2-9442-B9EE78C81A4F.dita"><linktext>DevSound Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-72151EF7-52C0-5DF4-AC69-07087F31D9E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-72151EF7-52C0-5DF4-AC69-07087F31D9E8"><title>Externalising</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The process of externalising an object involves externalising its data to a stream.</p> <p>For a class instance, this involves externalising each of its data members and components to a stream. This process is encapsulated by the <codeph>ExternalizeL()</codeph> member function of the class.</p> <p>A class always defines <codeph>ExternalizeL()</codeph> as:</p> <codeblock id="GUID-68FB2FAA-6298-5BFA-B282-AFD4586D134C" xml:space="preserve">void ExternalizeL(RWriteStream&amp; aStream) const;</codeblock> <p>and uses the write stream interface class <codeph>RWriteStream</codeph>. </p> <p>Note that <codeph>ExternalizeL()</codeph> is not virtual and there is no implication that a class that requires an <codeph>ExternalizeL()</codeph> function must be derived from any particular base class.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-722180B8-0032-5C3F-AEB2-A9B1261450D8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-722180B8-0032-5C3F-AEB2-A9B1261450D8" xml:lang="en"><title> Starting
+a Socket Server connection: Tutorial</title><shortdesc>This tutorial describes how to start an <apiname>RConnection</apiname> connection.
+Each connection must be started to link the connection with the network interface
+hardware. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p><b>Implicit Connection Startup</b></p><p>In the following example,
+the application is unaware of the connection
+and does not have an instance of <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. This might
+be used
+if an application tries to connect a socket or resolve a name and the socket
+server detects that a connection has not been started. This example does not
+differ from previous versions of the Symbian platform.</p><p>Note: Error handling
+is not included to aid clarity. 
+</p><codeblock xml:space="preserve">RSocketServ ss;
+RSocket sock;
+TRequestStatus status;
+
+// Connect to the socket server
+ss.Connect();
+
+// Open a TCP socket 
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp);
+_LIT(KRasAddr,"10.159.24.13");
+const TInt KEchoPort = 7;
+TInetAddr destAddr;
+destAddr.Input(KRasAddr);
+destAddr.SetPort(KEchoPort);
+
+// Request the Socket to connect to the destination (implicit Connection)
+sock.Connect(destAddr, status);
+</codeblock></context>
+<example><title>Explicit Connection Startup</title> <p>The following example
+shows how an application can start a connection explicitly via an <codeph>RConnection</codeph> instance,
+and tie an <codeph>RHostResolver</codeph> and <codeph>RSocket</codeph> to
+the connection started. </p> <p>The application is able to override the connection
+preference settings in CommDb allowing it to specify the Network, IAP, ISP
+and bearer used. Code examples are given for the cases with and without overrides. </p> <p>See <xref href="GUID-739117F6-9559-3274-8E00-B2B653C0A8B6.dita"><apiname>TCommDbConnPref</apiname></xref> for
+information about how to set up the connection. </p> <codeblock id="GUID-1B9252B9-B731-55A0-A379-E51D94ACF768" xml:space="preserve">
+RSocketServ ss;
+TRequestStatus status;
+RConnection conn;
+
+_LIT(KRasAddr,"10.159.24.13");
+const TInt KEchoPort = 7;
+
+TInetAddr destAddr;
+destAddr.Input(KRasAddr);
+destAddr.SetPort(KEchoPort);
+
+// Connect to the socket server
+ss.Connect();
+
+// Open an RConnection object. Note that you must provide the RSocketServ object
+conn.Open(ss);
+
+// Create overrides
+TCommDbConnPref prefs;
+prefs. SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
+prefs.SetDirection(ECommDbConnectionDirectionOutgoing);
+prefs.SetIapId(4);
+
+// Start an Outgoing Connection with overrides
+conn.Start(prefs);
+
+// Open a Host Resolver associated with the connection
+RHostResolver hr;
+hr.Open(ss, KAfInet, KProtocolInetTcp, conn);
+
+// Open a Socket associated with the connection
+RSocket sock;
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, conn);
+
+// Request the Socket to connect to the destination
+sock.Connect(destAddr, status);
+</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7226154E-2387-5D14-A009-2A1A60617970.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7226154E-2387-5D14-A009-2A1A60617970"><title>nostrictdef</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>nostrictdef</codeph> </p> <p>By default, for wide builds, the build tools expect the <filepath>.def</filepath> files for the project to have a <filepath>u</filepath> suffix: e.g. <filepath>myprojectu.def</filepath>. If the <codeph>nostrictdef</codeph> statement is specified, the <filepath>u</filepath> suffix will not be applied to the frozen <filepath>.def</filepath> file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7226DB6E-93E9-57E6-B7AB-043E1C5E2A7F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7226DB6E-93E9-57E6-B7AB-043E1C5E2A7F"><title>Imaging Plug-ins Overview</title><shortdesc>This document introduces you to the Imaging Plug-ins component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Imaging Plug-ins component is used by the Imaging Frameworks component to access image formats. </p> </section> <section><title>Required background</title> <p>An understanding of image formats is required, see <xref href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita#GUID-88091838-03FC-550F-9A3D-DA70907EF955/GUID-B7129F68-719C-5C6A-A842-E8ACA71980E4">Imaging Frameworks Overview</xref>. </p> </section> <section><title>Architecture</title> <p>The Imaging Plug-ins component interacts with the Imaging Framework component. </p> <p> <b>Note: </b> A client application cannot access the Imaging plug-ins directly as all communication is done through the Imaging Framework component. </p> </section> <section><title>APIs</title> <p>Imaging Plug-ins includes the following functionality: </p> <table id="GUID-AD88F914-0A22-59DD-B7B2-B64854581F5F"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <filepath> bitmaptransformsrefplugin.dll</filepath>  </p> </entry> <entry><p>The Bitmap Transform Plug-in provides support for scaling and rotating. For more information see <xref href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita">Bitmap Transform Overview</xref>  </p> </entry> </row> <row><entry><p> <filepath>bmpcodec.dll</filepath>  </p> </entry> <entry><p>The BMP Codec Plug-in provides support for encoding and decoding the BMP format. </p> </entry> </row> <row><entry><p> <filepath>gifcodec .dll</filepath>  </p> </entry> <entry><p>The GIF Codec Plug-in provides support for encoding and decoding the GIF format. </p> </entry> </row> <row><entry><p> <filepath>icocodec.dll</filepath>  </p> </entry> <entry><p>The ICO Codec Plug-in provides support for decoding the ICO format. </p> </entry> </row> <row><entry><p> <filepath>jpegcodec.dll</filepath>  </p> </entry> <entry><p>The JPEG Codec Plug-in provides support for encoding and decoding the JPEG Image Frame Plug-in. For more information see <xref href="GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143.dita">JPEG Image Frame Plug-in Overview</xref>  </p> </entry> </row> <row><entry><p> <filepath>jpegyuvdecoder.dll</filepath>  </p> </entry> <entry><p>The JPEG YUV Decoder Plug-in provides support for decoding the JPEG and the YUV format. </p> </entry> </row> <row><entry><p> <filepath>mbmcodec.dll </filepath>  </p> </entry> <entry><p>The MBM Codec Plug-in provides support for encoding and decoding the MBM format. </p> </entry> </row> <row><entry><p> <filepath>mngimagedisplay.dll</filepath>  </p> </entry> <entry><p>The MNG Image Codec Plug-in provides support for decoding and displaying the MNG format. </p> </entry> </row> <row><entry><p> <filepath>pngcodec.dll</filepath>  </p> </entry> <entry><p>The PNG Codec Plug-in provides support for decoding the PNG format. </p> </entry> </row> <row><entry><p> <filepath>tiffcodec.dll</filepath>  </p> </entry> <entry><p>The TIFF Codec Plug-in provides support for decoding the TIFF format. </p> </entry> </row> <row><entry><p> <filepath>wmpcodec.dll</filepath>  </p> </entry> <entry><p>The WMP Codec Plug-in provides support for decoding the WMP format. </p> </entry> </row> <row><entry><p> <filepath>wmfcodec.dll</filepath>  </p> </entry> <entry><p>The WMF Codec Plug-in provides support for decoding the WMF format. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>Imaging Plug-ins provides support for </p> <ul><li id="GUID-D8841F3F-7106-5D09-80F5-63C9B86F2AC7"><p>the Bitmap Transform library to scale and rotate images. For more information see <xref href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita">Bitmap Transform Overview</xref>  </p> </li> <li id="GUID-BEDF8E0D-BA9B-51C9-9B5F-6D6C7FD991CA"><p>the Image Conversion library to encode and decode the images. For more information see <xref href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita">Image Conversion Overview</xref>  </p> </li> <li id="GUID-64DD01AC-86E8-53B7-9CBE-D9C0BB7312B5"><p>the Image Display library to display the images. For more information see <xref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita">Image Display Overview</xref>  </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Framework Overview</linktext> </link> <link href="GUID-74D3B534-B209-5884-B38F-DEDFB23B64CF.dita"><linktext>Imaging
+                Framework Guides</linktext> </link> <link href="GUID-9DFB1340-FA1E-530E-9372-DB6509CECA2B.dita"><linktext>Bitmap Transformation</linktext> </link> <link href="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita"><linktext>JPEG Exif Plugin</linktext> </link> <link href="GUID-B5509C73-9A72-5E4D-B9BB-733B10EF842E.dita"><linktext>Exif Utility</linktext> </link> <link href="GUID-BC9001F9-BA41-5916-B2B2-175E37D6F880.dita"><linktext>Gif Scaling and Colour Quantization
+                Library</linktext> </link> <link href="GUID-A68D1F27-FE7E-503E-B5B6-7BD555B88558.dita"><linktext>Image Conversion Library</linktext> </link> <link href="GUID-C11D2D1A-F901-5439-BEAF-37E4BDE13EF7.dita"><linktext>Image Display Library</linktext> </link> <link href="GUID-042868E6-88BF-5797-BB53-8E34283DCF16.dita"><linktext>Image Processor Library</linktext> </link> <link href="GUID-53C0A250-287E-57E1-80BC-F66F9F9DD478.dita"><linktext>Image Transform Library</linktext> </link> <link href="GUID-419BD5DC-6264-59FB-8EF4-E5652440A060.dita"><linktext>JPG Image Framework</linktext> </link> <link href="GUID-1708D9F8-1277-59B9-8130-BBEFFFF1F481.dita"><linktext>Media Client Imaging</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF" xml:lang="en"><title>Message
+query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When there is need for a query that is longer than would fit one screen,
+a message query can be used. A message query can contain a link text that
+can be highlighted and opened.</p>
+<p>By default the left softkey is OK, but with a link in the query the left
+softkey opens the target view of the highlighted link text. The Selection
+key also opens the link target view when the link is highlighted. Note that
+there should be no more than three links in a single query.</p>
+<fig id="GUID-26C627AF-3B5C-447A-9D89-1DEAB99A48EE">
+<title>Message query</title>
+<image href="GUID-78AC068A-C858-41E9-94A8-32C8A8581BF8_d0e62098_href.png" scale="40" placement="inline"/>
+</fig>
+<section><title>Using message queries
+in C++ applications</title><p>For implementation information, see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7250950C-5502-5ACE-864B-0EFD5C253053.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7250950C-5502-5ACE-864B-0EFD5C253053" xml:lang="en"><title>How
+to create a singleton</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <xref href="GUID-F0C084E2-C683-39E2-A131-77FE3206A02C.dita"><apiname>CCoeStatic</apiname></xref> class allows singleton classes to be
+created and stored by the environment (<xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref>) in Thread
+Local Storage (TLS). This provides a means of creating writeable global static
+data. </p>
+<p> <filepath>MySingleton.h</filepath>  </p>
+<codeblock id="GUID-B526F5B3-FBC7-5563-8F5C-37B01A0EC28D" xml:space="preserve">
+class CMySingleton : public CCoeStatic
+    {
+public:
+    static CMySingleton* SelfL() ;                // Slightly slower
+    static CMySingleton* SelfL( CCoeEnv* aCoeEnv ) ;    // Slightly faster
+    ...
+private:
+    CMySingleton() ;
+    ~CMySingleton() ;
+    } ;
+</codeblock>
+<p> <filepath>MySingleton.cpp</filepath>  </p>
+<codeblock id="GUID-FD7053EB-8769-5C04-98E2-3C8EC8589A10" xml:space="preserve">
+const TUid KUidMySingleton = {0x10204232} ;
+
+CMySingleton::CMySingleton() : CCoeStatic( KUidMySingleton, CCoeStatic::EThread /*or EApp*/ )
+    {
+    }
+
+CMySingleton* CMySingleton::SelfL()
+    {
+    CMySingleton* self = static_cast&lt;CMySingleton*&gt;( CCoeStatic::Static( KUidMySingleton ) ) ; 
+    if(!self)
+        {
+        self = new( ELeave ) CMySingleton() ;
+        }
+    return self ;
+    }
+
+CMySingleton* CMySingleton::SelfL( CCoeEnv* aCoeEnv )
+    {
+    CMySingleton* self = static_cast&lt;CMySingleton*&gt;( aCoeEnv-&gt;FindStatic( KUidMySingleton ) ) ;
+    if( !self )
+        {
+        self = new( ELeave ) CMySingleton() ;
+        }
+    return self ;
+    }
+</codeblock>
+<p>A singleton must be given a UID. When it is instantiated for the first
+time the base class constructor adds it to the list of singletons in the environment.
+Any subsequent attempts to instantiate the same singleton will result in a
+panic. </p>
+<p>Singletons may be given a <b>destruction priority</b> and a <b>scope</b>. </p>
+<p>The <b>destruction priority</b> determines when the singleton is destroyed
+relative to any other singletons in the environment's list and relative to
+the App Ui. The default priority, <codeph>EDefaultDestructionPriority</codeph>,
+is 100. The higher the priority, the earlier the singleton will be destroyed.
+A negative value indicates that the singleton should be destroyed after the
+AppUi. The more negative the value, the later the destruction. </p>
+<p>The <b>scope</b> may be <codeph>EThread</codeph> (the default) or <codeph>EApp</codeph> and
+determines the visibility of the singleton. </p>
+<p>Once a singleton has been created it may be accessed through the <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> API. </p>
+<codeblock id="GUID-7B6E1AE6-30E6-585C-84AC-5C385F0894D3" xml:space="preserve">// Singleton access
+IMPORT_C static CCoeStatic* Static( TUid aUid ) ;
+IMPORT_C CCoeStatic* FindStatic( TUid aUid ) ;</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-72511204-FC90-54AA-9E2E-833318020318.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-72511204-FC90-54AA-9E2E-833318020318"><title>Reading to a Buffer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to read the data from the table into a buffer. </p> <section><title>Introduction</title> <p>This query allows you to retrieve the data in a field. You can retrieve one entry or multiple entries in the same column by executing the query in a loop. </p> </section> <section><title>Basic procedure</title> <p>The high level steps to read the data into the buffer are shown here: </p> <ol id="GUID-3E8A8F9B-DFC3-5809-93FF-899287668CC3"><li id="GUID-E42FA395-D5D4-5CE5-B6C2-4F81049D1973"><p>Configure the SQL statement. </p> </li> <li id="GUID-5C982F27-27E8-5AA1-A555-B7C54D3EB92F"><p>Allocate memory and copy data. </p> </li> <li id="GUID-CC3E796C-4637-50BF-BA10-559F72E9AD2D"><p>Deallocate memory. </p> </li> </ol> </section> <section><title>Detailed steps</title> <p>The steps to read data to a buffer are as follows: </p> <p><b>Configure the SQL statement</b> </p> <p>Instantiate an <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object and declare the variables as required. </p> <codeblock id="GUID-1948DBCA-AA3A-5856-B749-16A8A26FF4BC" xml:space="preserve">RSqlStatement myStatement;
+TInt err;</codeblock> <p><b>Allocate memory and copy data</b> </p> <p>To retrieve all the entries, use a loop. The steps to be performed within the loop are as described below: </p> <ol id="GUID-350EBCA3-166E-5B94-BACF-9A3FDF0B0E1D"><li id="GUID-F7E93B5F-793C-53C5-B97C-206589FC33AA"><p>Instantiate an object of the <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> class. </p> <codeblock id="GUID-E2DB2F48-B1D6-5496-BF41-108E39F1C938" xml:space="preserve">while((err = myStatement.Next()) == KSqlAtRow)
+    {
+    RBuf myBuffer;</codeblock> </li> <li id="GUID-3E3552E9-42F2-5715-B5CB-1D0412B62D09"><p>Allocate enough memory to hold the column data using the <codeph>CreateL()</codeph> function as shown below. </p> <codeblock id="GUID-FD2C9AB5-BD1E-5FFF-A77F-27DD437663DA" xml:space="preserve">err = myBuffer.CreateL(myStatement.ColumnSize(columnIndex));</codeblock> </li> <li id="GUID-8E9C1C93-B5B2-5963-B418-FF16C1B873E7"><p>Copy the data from the table into the buffer using <xref href="GUID-58179FB4-4D5B-3FC4-BF51-1221D8EE4D71.dita"><apiname>ColumnBinary()</apiname></xref> function. </p> <codeblock id="GUID-B0EDB685-F549-5B67-ACFE-DEEF636E0066" xml:space="preserve">    err = myStatement.ColumnBinary(myColumnIndex,myBuffer);
+    ...
+    // process data</codeblock> </li> </ol> <p><b>Deallocate memory</b> </p> <p>Deallocate the memory assigned to the <codeph>RBuf</codeph> object. </p> <codeblock id="GUID-6C46064D-7B65-520E-B378-0BD689D4FD8F" xml:space="preserve">myBuffer.Close();
+    }</codeblock> </section> <section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying a Database</xref>  </p> <p> <xref href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita">Deleting Rows from a Table</xref>  </p> <p>Reading to a buffer - This document </p> <p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita">Reading to Memory</xref>  </p> <p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref>  </p> <p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref>  </p> <p> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5"><title> Writing a Codec Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To write a Multimedia Framework (MMF) codec plugin, the following needs to be done: </p> <ul><li id="GUID-D000085F-B05B-56E2-8438-AF05C8C177DB"><p><xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita#GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5/GUID-06E48EF1-C5B3-55A7-81B2-9175506CBB9C">Derive from the CMMFCodec base class</xref>  </p> </li> <li id="GUID-D347B350-13D0-5BD5-A4A8-28CB4E615C9D"><p>Write a <xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita#GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5/GUID-06D1D7AD-AEF1-5579-8713-C13868945DA9">resource file</xref> defining the codecs available in the plugin DLL </p> </li> <li id="GUID-9DF31947-3C68-547B-8E38-EA1AC69FA5F5"><p><xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita#GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5/GUID-E2EF71D3-FB4D-52FA-A657-FE96991C358C">Define codec-specific UIDs</xref>  </p> </li> <li id="GUID-DE960833-FEBE-549C-A922-1EDE2369F065"><p>Write the appropriate <xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita#GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5/GUID-0EE58641-7961-553F-A307-2DF7ADDFACC5">MMP project file</xref>  </p> </li> <li id="GUID-08491E1F-B1CF-51C6-9B1B-62463EC11EA2"><p>Consider <xref href="GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5.dita#GUID-7261FEC6-5AA6-555C-AB72-2173BD3F1FA5/GUID-C69AA13C-9F3D-5E53-A5E0-868D6A2A1B9F">implementation issues</xref>  </p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11-master.png has changed
Binary file Symbian3/SDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e120785_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241" xml:lang="en"><title>Virtual
+machine model</title><shortdesc>The Kernel provides a 'virtual machine' environment to user processes
+where each process accesses its data in the same virtual address range.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Kernel provides a 'virtual machine' environment to user processes.
+Each process accesses its data in the same virtual address range, called the
+data section, which ranges from:</p>
+<codeblock id="GUID-1FE73FDC-5058-5500-BD9D-C41C41DF2481" xml:space="preserve">0x00400000 to 0x3FFFFFFF</codeblock>
+<p>but note that the static data always appears at:</p>
+<codeblock id="GUID-10A112F3-28EF-589F-BE5C-0B53ED736596" xml:space="preserve">0x00400000</codeblock>
+<p>The code chunk for RAM loaded processes always appears at:</p>
+<codeblock id="GUID-18064043-B6FA-5791-81BC-A8D7859540E3" xml:space="preserve">0x20000000</codeblock>
+<p>This allows multiple processes to run, each executing the same code (from
+the same code chunk) for each of the processes. For example, multiple word
+documents open at the same time, each in a separate instance of the word application.
+This reduces RAM usage.</p>
+<p>In effect, each user process has the same kind of view. Code instructions
+address data using the virtual address; the Memory Management Unit (MMU) is
+responsible for the translation of the virtual address to the physical RAM
+address.</p>
+<p>Only one chunk can occupy a given virtual address range at a time, so a
+context switch between different processes involves re-mapping the chunks.
+The process chunks of the old process are re-mapped to their home addresses.
+These are in the home section, which is the virtual address range from:</p>
+<codeblock id="GUID-27EFC279-550A-5970-98F5-959647314B44" xml:space="preserve">0x80000000 to 0xFFFFFFFF</codeblock>
+<p>ROM code is normally mapped into the address range:</p>
+<codeblock id="GUID-D75CC9C3-2AD3-5BA0-A8B6-F486CF1D0232" xml:space="preserve">0x50000000 to 0x5FFFFFFF</codeblock>
+<p>The process chunks of the new process are mapped from their home addresses
+back to the data section. Chunks which are not accessible by the current user
+process reside in the home section, and they have supervisor-mode-only access
+permissions, so that only the kernel can access them.</p>
+<p>The Kernel's data and stack/heap chunks also reside in the home section.
+These are never visible to user processes. Code chunks for RAM-loaded libraries
+reside at the top end of the home section and have user read-only access,
+so that all user processes can execute code from a loaded library.</p>
+<p>A context switch between processes therefore involves:</p>
+<ul>
+<li id="GUID-F83EAD6D-626D-53B2-9DEB-310617FC03EE"><p>moving the old process
+chunks to the home section, and changing their access permissions to supervisor-only</p> </li>
+<li id="GUID-7BEBDFDE-DFFB-50F9-A136-5C0018CBD78F"><p>moving the new process
+chunks to the data section and changing their access permissions back to user-accessible.</p> </li>
+</ul>
+<p>This is best seen graphically. In the first diagram shown below, user-process
+1 is running and can 'see' all chunks in the clear boxes. Those boxes with
+dark background represent chunks which are not visible to user-process 1.</p>
+<p>When user-process 2 is running, the context switch re-maps the user-process
+2 data to the data section and user process 1 data is re-mapped to the home
+section as the second diagram shows.</p>
+<fig id="GUID-A8C12C7E-7779-5D66-908B-51A1C36E1B63">
+<title>User process 1's view.</title>
+<image href="GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e215495_href.png" placement="inline"/>
+</fig>
+<fig id="GUID-5F15432A-0CCD-5195-921F-506679F023CC">
+<title>User process 2's view.</title>
+<image href="GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e215503_href.png" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-728F278B-30C8-5FA8-AD03-4C759690416E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-728F278B-30C8-5FA8-AD03-4C759690416E"><title>echo</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>echo [-neE] [arg ...]</userinput> </p> <p>Prints the given text or the values of the specified arguments. </p> <table id="GUID-B10986CA-DF95-5644-AE84-F7CE2178DACB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-n</codeph>  </p> </entry> <entry><p>The trailing newline is suppressed. </p> </entry> </row> <row><entry><p> <codeph>-e</codeph>  </p> </entry> <entry><p>Interpretation of the following backslash-escaped characters is turned on: </p> <p><table id="GUID-A3A72279-DD19-5D07-9BC9-670CD2DF924D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <codeph> \a</codeph>  </p> </entry> <entry><p>Alert (bell) </p> </entry> </row> <row><entry><p> <codeph>\b</codeph>  </p> </entry> <entry><p>Backspace </p> </entry> </row> <row><entry><p> <codeph> \c</codeph>  </p> </entry> <entry><p>Suppress trailing newline </p> </entry> </row> <row><entry><p> <codeph> \E</codeph>  </p> </entry> <entry><p>Escape character </p> </entry> </row> <row><entry><p> <codeph> \f</codeph>  </p> </entry> <entry><p>Form feed </p> </entry> </row> <row><entry><p> <codeph> \n</codeph>  </p> </entry> <entry><p>New line </p> </entry> </row> <row><entry><p> <codeph> \r</codeph>  </p> </entry> <entry><p>Carriage return </p> </entry> </row> <row><entry><p> <codeph> \t</codeph>  </p> </entry> <entry><p>Horizontal tab </p> </entry> </row> <row><entry><p> <codeph> \v</codeph>  </p> </entry> <entry><p>Vertical tab </p> </entry> </row> <row><entry><p> <codeph> \\</codeph>  </p> </entry> <entry><p>Backslash </p> </entry> </row> <row><entry><p> <codeph> \num</codeph>  </p> </entry> <entry><p>The character whose ASCII code is NUM (octal). </p> </entry> </row> </tbody> </tgroup> </table> </p> </entry> </row> <row><entry><p> <codeph>-E</codeph>  </p> </entry> <entry><p>Explicitly turns off the interpretation of the above characters. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-729289F7-D0CD-5B50-AA8D-A86C35034076.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-729289F7-D0CD-5B50-AA8D-A86C35034076"><title>builtin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>builtin [shell-builtin [arg ...]] </userinput> </p> <p>Runs a shell builtin. This is useful when you wish to rename a shell builtin to be a function, but need the functionality of the builtin within the function itself. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e165342_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-72986B3C-047C-5411-8F15-BC9C65C3289C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-72986B3C-047C-5411-8F15-BC9C65C3289C"><title>Using Typefaces </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Typefaces are stored in the Font Store. Each typeface in the store has an index number. </p> <p>You can examine the contents of the typeface store using functions in <xref href="GUID-B6AB1A2A-705C-3ABA-8BBB-C36F3319501F.dita"><apiname>CGraphicsDevice.</apiname></xref>  </p> <p>To find the number of typefaces available: </p> <codeblock id="GUID-DD17B13B-29E0-5584-B85E-639FD2BAB7DF" xml:space="preserve">
+// Find the number of typefaces
+TInt numTypefaces = iCoeEnv-&gt;ScreenDevice()-&gt;NumTypefaces();</codeblock> <p>You can find out about a type face using the <codeph>TypefaceSupport</codeph> function which returns a <xref href="GUID-39BEE3B2-6A44-33EC-8F93-31E633844086.dita"><apiname>TTypeFaceSupport</apiname></xref>. Each typeface can have a number of sizes or be scalable between a minimum and maximum size. </p> <codeblock id="GUID-B47975BF-3B7A-57B2-854E-1D59166A47A3" xml:space="preserve">
+class TTypefaceSupport
+    {
+public:    
+    TTypeface iTypeface  ;  // The name and attributes of the typeface.
+    TInt iNumHeights;       // The number of distinct font heights available in the typeface. 
+    TInt iMinHeightInTwips; // The typeface's minimum font height, in twips.
+    TInt iMaxHeightInTwips; // The typeface's maximum font height, in twips. 
+    TBool iIsScalable;      // ETrue if  scalable, otherwise EFalse. 
+    };
+    
+class TTypeface
+    {
+public:
+    enum
+        {
+        EProportional = 1, // (e.g. Swiss)
+        ESerif = 2, // (e.g. Times )
+        ESymbol = 4, // (e.g. Symbol )
+        };
+public:
+    ...
+    IMPORT_C TBool IsProportional() const;
+    IMPORT_C TBool IsSerif() const;
+    IMPORT_C TBool IsSymbol() const;
+
+    TBufC&lt;KMaxTypefaceNameLength&gt; iName;
+    ....
+    };
+</codeblock> <p>The code below illustrates a simple iteration through the typeface store (see also <xref href="GUID-78FB26E2-AA60-5531-B2FE-4FA6C88F2D47.dita">selecting a font</xref>). </p> <codeblock id="GUID-368C7CBB-254E-5904-A3C5-51BB1FA94931" xml:space="preserve">...
+    
+CGraphicsDevice* gDev = iCoeEnv-&gt;ScreenDevice() ;
+CWindowGc&amp; gc = SystemGc() ;
+TPoint textPosition ( 0 , 0 ) ; // Start position for drawing text.
+    
+// display a list of typefaces - with each in its own typeface
+for ( index = 0 ; index &lt; numTypefaces ; index++ )
+    {
+    // get the next typeface
+    TTypefaceSupport typeface ;
+    gDev-&gt;TypefaceSupport( typeface, index ) ;
+    TPtrC fontName = typeface.iTypeface.iName.Des() ;
+    
+    // use the typeface to get a font 
+    TFontSpec fontSpec( fontName, 300 ) ; // 300 twips font height
+    CFont* font ; 
+    gDev-&gt;GetNearestFontToMaxHeightInTwips( font , fontSpec ) ;
+    
+    // use the font in the graphics context
+    gc.UseFont( font ) ;
+    
+    // display the name of the font 
+    textPosition.iTL.iY += font.iAscentInPixels ;
+    gc.DrawText( fontName, textPosition ) ; // draw text on baseline
+    textPosition.iTL.iY += ( font.iDescentInPixels + KWhiteSpaceBetweenLines ) ;
+        
+    // 
+    gc.DiscardFont( font ) ;
+    gDev-&gt;ReleaseFont( font ) ;
+    
+    }
+...</codeblock> </conbody><related-links><link href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita"><linktext>GDI Collection Overview</linktext> </link> <link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext> Font and Text Services Collection
+                Overview</linktext> </link> <link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext> Font and Bitmap Server
+                Component Overview </linktext> </link> <link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52-master.png has changed
Binary file Symbian3/SDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e204155_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-72C2E618-C33D-5770-908D-E1A99E5D1B1D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-72C2E618-C33D-5770-908D-E1A99E5D1B1D" xml:lang="en"><title>Package-Body</title><abstract><p>The Package-Body makes up the main body of the PKG file and consists
+of the following items:</p></abstract><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-72E1F91B-173B-5F45-B9FF-42FD5F45438C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-72E1F91B-173B-5F45-B9FF-42FD5F45438C" xml:lang="en"><title>How
+to pop and destroy</title><shortdesc>This document describes how to pop and destroy objects on the cleanup
+stack.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In general, it is recommended that any objects which are accessed only
+through an automatic pointer are pushed onto the cleanup stack immediately,
+before being used, and only popped before they must be destroyed.</p>
+<p>You can use the single function <codeph>CleanupStack::PopAndDestroy()</codeph> to
+both pop the object from the cleanup stack and destroy it. This operation
+is the usual thing to do when an object on the cleanup stack has been finished
+with.</p>
+<codeblock id="GUID-0ED3A351-8346-5C1F-9945-FEFC975472A2" xml:space="preserve">void doExampleL()
+ {
+ // allocate and leave if could not
+ CExample* myExample = new (ELeave) CExample;
+
+ // this cannot leave - no protection needed
+ myExample-&gt;iInt = 5; 
+ 
+ // do something that might leave, protected by cleanup stack
+ CleanupStack::PushL(myExample); // push pointer to stack
+
+ myExample-&gt;DoSomethingL()); // something that might leave 
+
+ // pop from cleanup stack, and destroy, in one operation
+ CleanupStack::PopAndDestroy();  
+ }</codeblock>
+<section id="GUID-FAEA7437-EAB9-4599-B0A3-F1CC195A5F55"><title>Note</title> <ul>
+<li id="GUID-602FC7DD-F172-5C09-A55F-18B3E0B7A0A6"><p><codeph>Pop()</codeph> on
+its own is nevertheless useful: it is safe to pop an object from the cleanup
+stack when you are sure that it will either be destroyed, or a reference stored
+to it, before any operations are performed on it which might leave. This way,
+an object can never be orphaned (which is our aim). In the former case, you
+get pop-and-destroy all in one, which it is worthwhile for the system to provide.
+In the latter case, you need to store a pointer. This is what happens, for
+instance, in two-phase construction.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e177987_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-730E1E2B-BB8B-4C66-8A70-0FBCE7680B66.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-730E1E2B-BB8B-4C66-8A70-0FBCE7680B66" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+    <p>The Generic button API is an SDK API and first released in S60 5th Edition.</p>
+  </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7324A06C-981B-568D-BDFA-EFE21049431C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7324A06C-981B-568D-BDFA-EFE21049431C" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides a brief description of the Root Server Configurator. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E"><title>Enabling/Disabling Audio or Video Playback Separately</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to enable/disable audio or video playback. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to enable/disable audio or video playback separately in a video clip. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>You can enable/disable the audio and video separately when playing video clips. This means you can: </p> <ul><li id="GUID-7C82E83E-F21D-527D-8EDE-C6D6BD6A4C95"><p>Watch a video clip without the audio track. </p> </li> <li id="GUID-C17844DE-4DA8-5429-8F8C-C1975CB38D39"><p>Listen only to the audio track of a video clip. </p> </li> </ul> <p> <b>Note:</b> By default, audio and video are enabled. </p> <p>This functionality is made available through the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-1A1F7E42-B4A9-3ECC-9E3B-116B9C1A2957"><apiname>CVideoPlayerUtility::SetAudioEnabledL()</apiname></xref> and <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B32A7F90-CF94-3FD0-AA88-5637B53EE963"><apiname>CVideoPlayerUtility::SetVideoEnabledL()</apiname></xref> methods. </p> </section> <section><title>Using Audio and Video Playback </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-F46D4C0E-AD97-5422-90B2-6E3DCAECF878"><p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita#GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E/GUID-46521E47-DD9F-55BD-8514-71EB1673D649">Enable/Disable Audio or Video Playback</xref>  </p> </li> </ul> <p id="GUID-46521E47-DD9F-55BD-8514-71EB1673D649"><b>Basic Procedure</b> </p> <p>The high level steps to enable/disable audio or video playback are shown here: </p> <ol id="GUID-9842E64F-5744-51B9-8F10-C6FEA866989B"><li id="GUID-8D9334A5-03D3-5459-A5B4-0C5521DEBB53"><p>Create a new video player utility object. </p> </li> <li id="GUID-95541FE8-E715-55F8-8079-E31D6D3B2B35"><p>Open a video clip to play. </p> </li> <li id="GUID-38E3FF92-B861-55A5-8CCC-A83D6C8293F7"><p>Enable/disable audio playback using the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-1A1F7E42-B4A9-3ECC-9E3B-116B9C1A2957"><apiname>CVideoPlayerUtility::SetAudioEnabledL()</apiname></xref> method: </p> <ul><li id="GUID-29F9045A-9F33-5AC2-91FB-A71AF118CBA1"><p>To enable audio playback set the <xref href="GUID-ADFB0F12-0F07-34EF-BB0A-97B320E88FA2.dita"><apiname>aAudioEnabled</apiname></xref> parameter to <codeph>ETrue</codeph>. </p> </li> <li id="GUID-2A6F6425-DD6F-5C15-93C9-7059BDAF095D"><p>To disable audio playback set the <xref href="GUID-ADFB0F12-0F07-34EF-BB0A-97B320E88FA2.dita"><apiname>aAudioEnabled</apiname></xref> parameter to <codeph>EFalse</codeph>. </p> </li> </ul> </li> <li id="GUID-5C780C81-D62D-512E-AAFB-EC022468368C"><p>Enable/disable video playback using the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B32A7F90-CF94-3FD0-AA88-5637B53EE963"><apiname>CVideoPlayerUtility::SetVideoEnabledL()</apiname></xref> method: </p> <ul><li id="GUID-A5EAF9EA-6231-5FE7-984D-5FFF50515FCC"><p>To enable video playback set the <xref href="GUID-3329785F-DE09-3E93-A814-E7D18FBA60FB.dita"><apiname>aVideoEnabled</apiname></xref> parameter to <codeph>ETrue</codeph>. </p> </li> <li id="GUID-DA7ABC77-AA3C-59F4-A006-40DD76A82BF8"><p>To disable video playback set the <xref href="GUID-3329785F-DE09-3E93-A814-E7D18FBA60FB.dita"><apiname>aVideoEnabled</apiname></xref> parameter to <codeph>EFalse</codeph>. </p> </li> </ul> </li> <li id="GUID-A9DFDB4A-CA82-5DCB-A864-ACA048E7AA9F"><p>Call the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B4FB00AA-A85B-3A3F-91BE-C5347462BA95"><apiname>CVideoPlayerUtility::Prepare()</apiname></xref> method. </p> </li> <li id="GUID-4A6D8B95-40DA-5AFC-9F3D-8751BC3F8876"><p>Control playback normally. </p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-363701E5-726D-5F05-B9DC-424778A0AF80" xml:space="preserve">//Create new video player utility object (iVideoPlayer) 
+// Open the video clip
+
+iVideoPlayer-&gt;SetAudioEnabledL(EFalse); // disable audio playback
+
+iVideoVideoPlayer-&gt;SetVideoEnabledL(ETrue); // enable video playback
+
+// Audio has been disabled
+// Playback will be video only
+// Call Prepare() and then Play() to control playback normally</codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7"><title>Overview of hash algorithms</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-81D29BE4-82D6-5880-8612-1A55415A6730"><p><xref href="GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita#GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7/GUID-AEB1ABD2-4977-5A54-86AC-F1D87615C57F">What is a cryptographic hash?</xref>  </p> </li> <li id="GUID-716D3CA9-5151-5E18-BD61-216A538E037C"><p><xref href="GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita#GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7/GUID-1F051CF3-77A8-5408-B14B-A7FD5CFF197F">What is an HMAC?</xref>  </p> </li> <li id="GUID-C9475D12-31D6-5CF8-BF82-6B37F241B2EF"><p><xref href="GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita#GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7/GUID-08E26A60-A8B1-5F54-901D-69787BC8950E">The base class and its derived classes</xref>  </p> </li> </ul> <section id="GUID-AEB1ABD2-4977-5A54-86AC-F1D87615C57F"><title>What is a cryptographic hash?</title> <p>A cryptographic hash algorithm (also known as a message digest, a one-way function, or simply a hash) takes a variable-length input (the message) and produce a fixed length output known as the hash (or digest) of the input. It is often useful to think of the resulting output as a representation, or fingerprint, of the original input. </p> <p>There are two properties that are important to cryptographic hashes: </p> <ul><li id="GUID-2868C035-9933-5EF2-86E7-E696ADF3A67D"><p>it must be hard to find collisions, i.e. it is highly unlikely that two distinct strings will hash to the same output </p> </li> <li id="GUID-43BF26B8-466F-589B-B8F5-B4F6EF42504F"><p>it is extremely difficult to determine the original input given only the output. Even very small changes to the input will give rise to radical changes in the output. </p> </li> </ul> <p>These properties make hash functions useful in cryptography and other applications as they allow the representation of objects in a known fixed size. </p> <p>The hash algorithms supported by Symbian platform are: </p> <table id="GUID-D9C86D99-3790-5332-988E-E38FA935DE3E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Hash algorithms</entry> <entry>Further information</entry> </row> </thead> <tbody><row><entry><p>MD4 </p> </entry> <entry><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc1320.txt">RFC 1320</xref>  </p> </entry> </row> <row><entry><p>MD5 </p> </entry> <entry><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc1321.txt">RFC 1321</xref>  </p> </entry> </row> <row><entry><p>SHA-1 </p> </entry> <entry><p> <xref scope="external" href="http://www.itl.nist.gov/fipspubs/fip180-1.htm">FIPS 180-1</xref> and <xref scope="external" href="http://www.ietf.org/rfc/rfc3174.txt">RFC 3174</xref>  </p> </entry> </row> <row><entry><p>HMAC </p> </entry> <entry><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc2104.txt">RFC 2104</xref>  </p> </entry> </row> </tbody> </tgroup> </table> <p>There is also support for MD2 (see <xref scope="external" href="http://www.ietf.org/rfc/rfc1319.txt">RFC 1319</xref>) and SHA, which is there for backward compatibility, but it is not to be used in new code. </p> </section> <section id="GUID-1F051CF3-77A8-5408-B14B-A7FD5CFF197F"><title>What is an HMAC?</title> <p>Unlike the hashes mentioned above, HMAC (Hashed Message Authentication Code) is a key-dependant hash. It allows a key to be specified at creation of the HMAC. Only people with that key can verify the hash. HMACs are useful when authentication but not secrecy of a message is required. </p> <p>The sender appends to the message data an authentication tag (which is a function of the data and the shared key). The recipient recomputes the authentication tag on the received message using the shared key. The integrity of the message is deemed valid only if the two authentication tags match. </p> <p>For further details see <xref scope="external" href="http://www.ietf.org/rfc/rfc2104.txt">RFC 2104</xref>. </p> </section> <section id="GUID-08E26A60-A8B1-5F54-901D-69787BC8950E"><title>The Hash API</title> <p> <codeph>CMessageDigest</codeph> is the base class for all hash algorithms. </p> <p>The diagram below show the main classes used in the hash framework. For information on each class see the Cryptography API Reference material. </p> <fig id="GUID-08CF0C25-D314-56B0-9667-4CDDA925F786"><title>
+             Inheritance diagram for the Hash API 
+          </title> <image href="GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e361961_href.png" placement="inline"/></fig> <p>The hash API is used internally by the Security components: AppInst, Certman (Certificate Management) and Cryptography. Networking/TLS uses a pseudo-random function (PRF) based on HMAC. Both MD5 and SHA-1 are used in TLS. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7366AE99-DE25-5DE0-BF9A-58E7742DA952.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7366AE99-DE25-5DE0-BF9A-58E7742DA952" xml:lang="en"><title>Advanced Cleanup</title><shortdesc>Advanced cleanup covers areas such as cleanup of heap arrays, cleanup
+of non-CBase classes and use of <codeph>TAutoClose</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e33692_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-737ADA8D-5B7E-5408-9929-3EB9A3B4FCB1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-737ADA8D-5B7E-5408-9929-3EB9A3B4FCB1" xml:lang="en"><title>Application Architecture Examples</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides example applications to illustrate some of the key functions of Application Architecture.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,1061 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F" xml:lang="en"><title>Turkish
+National Language Support</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes the plug-in converters for Turkish national language
+support and the alphabet each converter supports. </p>
+<section><title>Introduction</title> <p>To convert a Turkish SMS message using
+the National Language Encoding, Symbian provides three Turkish plug-in converters: </p> <ul>
+<li id="GUID-B7A5D218-48FE-5F7E-B14D-FB7AD51AD165"><p>Default GSM7 Turkish
+Single Converter. The highlighted boxes in Figure 1 show that it supports
+the default GSM 7-bit alphabet, the Turkish single shift alphabet and the
+set of lossy conversions supported by the standard converter. This converter
+is identified by the <codeph>KCharacterSetIdentifierTurkishSingleSms7Bit</codeph> UID,
+which is defined in the <filepath>charconv.h</filepath> header file. </p> <p>Figure
+1 </p> <fig id="GUID-43661005-68C0-5AF5-8378-8F11B7AE4622">
+<title>                   Alphabet of the Default GSM7 Turkish Single Converter
+                </title>
+<image href="GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e386628_href.png" placement="inline"/>
+</fig> </li>
+<li id="GUID-6A55D9A6-6BA5-5345-9103-317EF2423D55"><p>Turkish Locking GSM7
+Extension Converter. The highlighted boxes in Figure 2 show that it supports
+the Turkish locking shift alphabet, default GSM extension alphabet and the
+set of lossy conversions supported by the standard converter. This converter
+is identified by the <codeph>KCharacterSetIdentifierTurkishLockingSms7Bit</codeph> UID,
+which is defined in the <filepath>charconv.h</filepath> header file. </p> <p>Figure
+2 </p> <fig id="GUID-7D61A70A-6DEF-567B-B76D-2F4505FC4A1A">
+<title>                   Alphabet of the Turkish Locking GSM7 Extension Converter
+                </title>
+<image href="GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e386650_href.png" placement="inline"/>
+</fig> </li>
+<li id="GUID-842C8CE4-F8AC-58E5-9A7F-AEED596E0E46"><p>Turkish Locking Single
+Converter. The highlighted boxes in Figure 3 show that it supports the Turkish
+locking shift alphabet, Turkish single shift alphabet and the set of lossy
+conversions supported by the standard converter. This converter is identified
+by the <codeph>KCharacterSetIdentifierTurkishLockingAndSingleSms7Bit</codeph> UID,
+which is defined in the <filepath>charconv.h</filepath> header file. </p> <p>Figure
+3 </p> <fig id="GUID-3EC6D160-1BD2-52A2-BC22-187A7D7B6347">
+<title>                   Alphabet of the Turkish Locking Single Converter
+                </title>
+<image href="GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e386672_href.png" placement="inline"/>
+</fig> </li>
+</ul> <p> <b>Note</b>: For all of the converters, any undefined Unicode is
+converted to a question mark (?)–GSM code <codeph>0x37</codeph>. Any code
+outside GSM <codeph>0x00</codeph> ~<codeph>0x7F</codeph> is converted to the
+Unicode replacement character <codeph>0xFFFD</codeph>. </p> </section>
+<section id="GUID-A9C92272-F723-550E-932B-0917DF1B948E"><title>Alphabet</title> <p>To
+better understand the different character set of each converter, the Standard
+SMS Converter is set as the baseline. The following comparison tables help
+identify the different character set supported by each Turkish converter as
+a comparison to the standard SMS converter. </p> <p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita#GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F/GUID-CE4440BC-CF66-5661-BE27-B7ABDE3AC0B5">Table 1A Default GSM7 Turkish Single Converter vs. Standard SMS Converter
+– Unicode to GSM Code </xref>  </p> <p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita#GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F/GUID-60560522-22A3-50BD-9942-1E89029FECCA">Table
+1B Default GSM7 Turkish Single Converter vs. Standard SMS Converter – GSM
+Code to Unicode </xref>  </p> <p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita#GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F/GUID-A431DEA2-EE33-5F04-8E67-97209603026B">Table
+2A Turkish Locking GSM7 Extension Converter vs. Standard SMS Converter – Unicode
+to GSM Code</xref>  </p> <p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita#GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F/GUID-8D344FF2-0299-575C-97CC-227DBEA0AE50">Table
+2B Turkish Locking GSM7 Extension Converter vs. Standard SMS Converter – GSM
+Code to Unicode</xref>  </p> <p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita#GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F/GUID-47872144-7218-536D-8FB1-B958D78064C5">Table
+3A Turkish Locking Single Converter vs. Standard SMS Converter – Unicode to
+GSM Code</xref>  </p> <p><xref href="GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita#GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F/GUID-29B477B9-E63D-54B1-9C0B-3D7E1D5818A6">Table
+3B Turkish Locking Single Converter vs. Standard SMS Converter – GSM Code
+to Unicode</xref>  </p> <p id="GUID-CE4440BC-CF66-5661-BE27-B7ABDE3AC0B5"><b>Default
+GSM7 Turkish Single Converter vs. Standard SMS Converter – Unicode to GSM
+Code</b> </p> <p>Table 1A </p> <table id="GUID-FC1F323F-252C-56EE-8366-937A40959879">
+<tgroup cols="9"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/>
+<tbody>
+<row>
+<entry><p> <b>Default GSM7 Turkish Single Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry/>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Original Character</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>0x1B47 </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH CARON </p> </entry>
+<entry><p>0x01E6 </p> </entry>
+<entry><p>0x1B47 </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry><p>0x0130 </p> </entry>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>0x1B53 </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x1B63 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>0x1B67 </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH CARON </p> </entry>
+<entry><p>0x01E7 </p> </entry>
+<entry><p>0x1B67 </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>0x1B73 </p> </entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-60560522-22A3-50BD-9942-1E89029FECCA"><b>Default GSM7
+Turkish Single Converter vs. Standard SMS Converter – GSM Code to Unicode</b> </p> <p>Table
+1B </p> <table id="GUID-15AE4CC3-8463-520B-A4AA-80B777B1D311">
+<tgroup cols="9"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/>
+<tbody>
+<row>
+<entry><p> <b>Default GSM7 Turkish Single Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>FORM FEED </p> </entry>
+<entry><p>0x1B0A </p> </entry>
+<entry><p>0x000C </p> </entry>
+<entry><p>FORM FEED </p> </entry>
+<entry/>
+<entry><p>(PAGE BREAK) </p> </entry>
+<entry><p>0x1B0A </p> </entry>
+<entry><p>0x000C </p> </entry>
+<entry><p>(PAGE BREAK) </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x1B47 </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B47 </p> </entry>
+<entry><p>0x0047 </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G </p> </entry>
+</row>
+<row>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x0130 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x0049 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x1B53 </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B53 </p> </entry>
+<entry><p>0x0053 </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x1B67 </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B67 </p> </entry>
+<entry><p>0x0067 </p> </entry>
+<entry><p>g LATIN SMALL LETTER G </p> </entry>
+</row>
+<row>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x0069 </p> </entry>
+<entry><p>i LATIN SMALL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x1B73 </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B73 </p> </entry>
+<entry><p>0x0073 </p> </entry>
+<entry><p>s LATIN SMALL LETTER S </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-A431DEA2-EE33-5F04-8E67-97209603026B"><b>Turkish Locking
+GSM7 Extension Converter vs. Standard SMS Converter – Unicode to GSM Code</b> </p> <p>Table
+2A </p> <table id="GUID-B1A6813E-F911-5E79-ADEA-D1B8A70E227C">
+<tgroup cols="9"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/>
+<tbody>
+<row>
+<entry><p> <b>Turkish Locking GSM7 Extension Converter</b>  </p> </entry>
+<entry/>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry/>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry/>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+<entry><p>0x00E8 </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH CARON </p> </entry>
+<entry><p>0x01E6 </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH CARON </p> </entry>
+<entry><p>0x01E7 </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>(FORM FEED) </p> </entry>
+<entry><p>0x000C </p> </entry>
+<entry><p>0x1B0A </p> </entry>
+<entry><p>(PAGE BREAK) </p> </entry>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>0x1B65 </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry><p>0x0130 </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry/>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x60 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+<row>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p>0x00CD </p> </entry>
+<entry><p>0x49 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I </p> </entry>
+</row>
+<row>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>0x60 </p> </entry>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-8D344FF2-0299-575C-97CC-227DBEA0AE50"><b>Turkish Locking
+GSM7 Extension Converter vs. Standard SMS Converter – GSM Code to Unicode</b> </p> <p>Table
+2B </p> <table id="GUID-DDCAEF17-CB0A-53F3-A039-910A3C1F11C2">
+<tgroup cols="9"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/>
+<tbody>
+<row>
+<entry><p> <b>Turkish Locking GSM7 Extension Converter</b>  </p> </entry>
+<entry/>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B07 </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B07 </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B0A </p> </entry>
+<entry><p>0x000C </p> </entry>
+<entry><p>(FORM FEED) </p> </entry>
+<entry/>
+<entry><p>(PAGE BREAK) </p> </entry>
+<entry><p>0x1B0A </p> </entry>
+<entry><p>0x000C </p> </entry>
+<entry><p>(PAGE BREAK) </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH CARON </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B1C </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B1C </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE (ash) * </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B1D </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B1D </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>æ LATIN SMALL LETTER AE (ash) * </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B60 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B60 </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>0x0130 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry/>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-47872144-7218-536D-8FB1-B958D78064C5"><b>Turkish Locking
+Single Converter vs. Standard SMS Converter – Unicode to GSM Code</b> </p> <p>Table
+3A </p> <table id="GUID-479C8C8C-FDFD-504C-950C-3C4C711F440D">
+<tgroup cols="9"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/>
+<tbody>
+<row>
+<entry><p> <b>Turkish Locking Single Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry/>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+<entry><p>0x00E8 </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH CARON </p> </entry>
+<entry><p>0x01E6 </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH CARON </p> </entry>
+<entry><p>0x01E7 </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>(FORM FEED) </p> </entry>
+<entry><p>0x000C </p> </entry>
+<entry><p>0x1B0A </p> </entry>
+<entry><p>(PAGE BREAK) </p> </entry>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>0x1B65 </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+</row>
+<row>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry><p>0x0130 </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry/>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>0x60 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+<row>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry/>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>0x60 </p> </entry>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-29B477B9-E63D-54B1-9C0B-3D7E1D5818A6"><b>Turkish Locking
+Single Converter vs. Standard SMS Converter – GSM Code to Unicode</b> </p> <p>Table
+3B </p> <table id="GUID-E1B67820-ED01-590F-80EC-73D19323CDB7">
+<tgroup cols="9"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/><colspec colname="col7"/><colspec colname="col8"/>
+<tbody>
+<row>
+<entry><p> <b>Turkish Locking Single Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> <b>Character</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry/>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>0x00E8 </p> </entry>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B04 </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B04 </p> </entry>
+<entry><p>0x00E8 </p> </entry>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B07 </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B07 </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH CARON </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B1C </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B1C </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE (ash) * </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B1D </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B1D </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>æ LATIN SMALL LETTER AE (ash) * </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B47 </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B47 </p> </entry>
+<entry><p>0x0047 </p> </entry>
+<entry><p>G LATIN CAPITAL LETTER G </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x0130 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x0049 </p> </entry>
+<entry><p>I LATIN CAPITAL LETTER I </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B53 </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B53 </p> </entry>
+<entry><p>0x0053 </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B60 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B60 </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B67 </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B67 </p> </entry>
+<entry><p>0x0067 </p> </entry>
+<entry><p>g LATIN SMALL LETTER G </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x0131 </p> </entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS </p> </entry>
+<entry/>
+<entry/>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x0069 </p> </entry>
+<entry><p>i LATIN SMALL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>0x015E </p> </entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x015F </p> </entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA * </p> </entry>
+<entry/>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>æ LATIN SMALL LETTER AE </p> </entry>
+</row>
+<row>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p>0x60 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+<entry><p>0x60 </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>¿ INVERTED QUESTION MARK </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>See also</title> <p> <xref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita">SMS
+Encodings and Converters Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48-master.png has changed
Binary file Symbian3/SDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e340217_href.png has changed
Binary file Symbian3/SDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e304011_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-73DD8A9B-6F7A-4BF5-87A1-5D86662B30D3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-73DD8A9B-6F7A-4BF5-87A1-5D86662B30D3" xml:lang="en"><title>Removing
+items from the choice list</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can use the method <codeph>CAknChoiceList::RemoveItem()</codeph> to
+remove items from the choice list. </p>
+<p>However, you must be very careful with this. Removing an item will change
+the item indexes of the following items, and the client application is responsible
+for keeping track of item indexes. For details on how the items are indexed,
+see <xref href="GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita">Using the Choice
+list API</xref>.</p>
+<codeblock xml:space="preserve">TInt index ( 2 );
+iChoiceList-&gt;RemoveItem( index );</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-74248E6A-0EA7-4F69-85AD-2D49B02D0212_d0e61586_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-743D2832-E73A-5184-A85D-306B2A6FFACC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-743D2832-E73A-5184-A85D-306B2A6FFACC" xml:lang="en"><title>Active Backup Client</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> Active Backup Client provides the functionality for Symbian Developers to write backup and restore software with complete control of which data is backed up and restored.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7440BE0A-6E4A-493D-8105-80DDABD6F3EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7440BE0A-6E4A-493D-8105-80DDABD6F3EB" xml:lang="en"><title>Requesting
+Change Notification</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Use <codeph>RASCliSession::NotifyChange()</codeph> to enable
+client notification when alarm state change, and when the next alarm time
+is calculated as shown in the following code snippet:</p><codeblock xml:space="preserve">TAlarmId alarmId;
+TRequestStatus status;
+TheAlarmServerSession.NotifyChange( status, alarmId );
+User::WaitForRequest( status );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-744ACF2C-963B-5E2F-A6B3-220AB899FD23"><title>Streaming Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Streams abstract the external storage of data (typically objects).</p> </section> <section><title>Architectural relationships</title> <p>The Streaming API is abstract. It defines interfaces for reading and writing data to and from storage, but not what that storage is. Derived classes in other APIs provide particular implementations of streams: </p> <ul><li id="GUID-3D731714-A0B4-5A19-99AA-94BAB5A00322"><p>file streams, as defined in the File Stores API</p> </li> <li id="GUID-77BB88A4-429E-5708-9425-067CEDC7AA50"><p>streams used as part of a network of related streams, called a store, as defined in the Stores API </p> </li> <li id="GUID-D8977D11-3617-52C9-83D4-6EB222521A01"><p>memory-based streams, as defined in the Memory Streams API</p> </li> <li id="GUID-45D95878-018F-5697-B31D-E2F06AA1D988"><p>encrypted streams, as defined in the Encrypted Streams And Stores API</p> </li> </ul> </section> <section><title>Description</title> <p>The API has two key concepts: stream, and stream operators. </p> <p><b>Stream</b> </p> <p>A stream is a representation of an object as a sequence of bytes. Streams are accessed by means of write streams, which allow data to be written to them, and read streams, which allow data to be read. </p> <p>Data written to a stream should be in an external format: i.e. not depend on machine-specific properties such as endianness and padding. C++ classes designed to work with streams implement a function to externalise their state, and similarly an internalise function to set their state from a stream. The convention is to call these functions <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph> respectively.</p> <p>Write streams are represented by the abstract class <xref href="GUID-ADAC48A2-3D24-306B-9473-70201F4D351D.dita"><apiname>RWriteStream</apiname></xref>, and read streams by the abstract class <xref href="GUID-81056EAD-722C-373F-A8CF-4CC67A5B4468.dita"><apiname>RReadStream</apiname></xref>.</p> <p><b>Stream operators</b> </p> <p>The stream operators define (using templates) &lt;&lt; and &gt;&gt; so that objects can be written to streams using the format <codeph>astream &lt;&lt; anobject</codeph> astream &lt;&lt; anobject, and internalised using <codeph>astream &gt;&gt; anobject</codeph>. These translate into calls to the object's <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph> functions respectively. The operators are also defined so that they can be used with basic types such as <xref href="GUID-F2669E84-D47E-3C83-A549-D77A883787CC.dita"><apiname>TInt8</apiname></xref>, <xref href="GUID-58CA4B68-0A0F-31E2-A624-0F78F47EE458.dita"><apiname>TReal32</apiname></xref>, etc.</p> </section> <section><title>See also</title> <p><xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores Overview</xref> </p> <p><xref href="GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8.dita">Stores Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51" xml:lang="en"><title>Feature Management</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74A4A88D-768E-51B9-B50B-81CF35D5D692.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-74A4A88D-768E-51B9-B50B-81CF35D5D692"><title>How to reset</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following code resets the document. Resetting deletes all text and formatting, leaving the end of text paragraph delimiter. Because resetting deletes the document’s content and formatting, a call to <codeph>HandleGlobalChangeL()</codeph> is required to update the formatting and the view.</p> <codeblock id="GUID-3214EF4E-498E-54D5-B1EC-7BD81FD3425C" xml:space="preserve">// Reset document. 
+iRichText-&gt;ResetL(); // change whole document
+iTextView-&gt;HandleGlobalChangeL();</codeblock> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e165934_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74C1C345-823C-5CD5-8FC5-214A55734E94.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,603 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-74C1C345-823C-5CD5-8FC5-214A55734E94" xml:lang="en"><title>Developing
+Programs with Task Scheduling Capabilities</title><abstract><p>Symbian Developers and device creators can use the task scheduler
+APIs to develop programs with scheduling capabilities. Programs may need task
+scheduling capabilities to support scheduling options that may be required
+for a phone user, another program or a system server. </p><p>For example,
+a phone user can use the alarm option of a clock application to schedule an
+alarm to be triggered every day at 5:00 A.M. </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-17AC6716-B2C4-5C14-9764-109D31C3B9DA">
+<step id="GUID-C6EB0627-BD29-50F5-8A80-2581284DC750"><cmd/>
+<info>Connect the client to the task scheduler server using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-C4EEE075-3B47-3964-AFCC-0CDF09DEDA0F"><apiname>RScheduler::Connect()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-5D5D73EF-7642-5D91-91EA-09E562F93AE8" xml:space="preserve">RScheduler iScheduler;
+User::LeaveIfError(iScheduler.Connect());</codeblock> </stepxmp>
+</step>
+<step id="GUID-F442887C-9F99-50AF-89B3-7B9532E15A8C"><cmd/>
+<info>Register the client with the task scheduler server using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-C19048C5-DC9F-3B8A-B4AD-02C0D943B7AC"><apiname>RScheduler::Register()</apiname></xref> by
+passing the following parameters: </info>
+<substeps id="GUID-B8842174-43F3-5B5D-8906-7699B89A53C8">
+<substep id="GUID-E95387B3-CFAA-5523-8105-1999FD5FD309"><cmd/>
+<info>Name and full path of the executable to be used to execute the scheduled
+task. For more information about creating this executable, see the <filepath>taskexecutor.cpp</filepath> topic
+in the<xref href="GUID-8B938FEF-4D70-4589-921C-C99667193E20.dita">TaskSchedulerExample:
+Using Task Scheduler for Creating and Executing Tasks</xref> section. </info>
+</substep>
+<substep id="GUID-A1655664-C67A-5DDD-BF3E-E8DDC98F1FB6"><cmd/>
+<info>Priority of the task to be executed, relative to other clients. If two
+clients have tasks to execute at the same time, the one with the higher priority
+is executed first. </info>
+</substep>
+</substeps>
+<info>The following code snippet illustrates how to register a client with
+the task scheduler server: </info>
+<stepxmp><codeblock id="GUID-FFF2F47A-10AC-543D-B090-77E6B01A0C62" xml:space="preserve">RScheduler iScheduler;
+TFileName fileName;
+...
+
+//A priority value
+const TInt priority = 3;
+
+...
+
+User::LeaveIfError(iScheduler.Register(filename, priority));</codeblock> </stepxmp>
+<info><note>Task scheduler supports only the execution of Symbian platform
+executables. The <codeph>aFileName</codeph> parameter can include a path but
+must not include a file extension. </note></info>
+<info>For example, a <codeph>fileName</codeph> can be <filepath>minimalTaskHandler</filepath>.
+Note that in the presence of platform security all EXEs are located in the <filepath>\sys\bin</filepath> folder
+and as a consequence of this, the path of an EXE (only the drive letter) is
+not needed. </info>
+</step>
+<step id="GUID-5D132AE0-6A8D-5A56-A52B-2CE8151CC757"><cmd/>
+<info>Create the support for different types of schedules that you want to
+provide using the following functions of <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita"><apiname>RScheduler</apiname></xref>: </info>
+<substeps id="GUID-4F006CFD-2A46-568F-8495-E5B61CBDE4BB">
+<substep id="GUID-128E5806-8499-5F19-97ED-F9022046C128"><cmd/>
+<info> <xref href="GUID-5CF2FCCF-552B-3BDF-8024-32F895583C8A.dita"><apiname>IMPORT_C TInt CreatePersistentSchedule(TSchedulerItemRef&amp;
+aRef, const CArrayFixFlat&lt;TScheduleEntryInfo2&gt;&amp; aEntryList)</apiname></xref>:Creates
+a persistent time-based schedule without tasks. </info>
+<info>The following code snippet illustrates how to create a persistent time-based
+schedule scheduled to start on January 1st, 2010 at 08:00 A.M., runs every
+one hour and is valid for eight hours. </info>
+<stepxmp><codeblock id="GUID-E791116D-722C-5F25-BBE5-B4C0DEC5A29A" xml:space="preserve">...
+
+TSchedulerItemRef&amp; aRef;
+
+//Array to hold the schedule entries
+CArrayFixFlat&lt;TScheduleEntryInfo2&gt;* cSchEntryInfoArray;    
+cSchEntryInfoArray = new CArrayFixFlat&lt;TScheduleEntryInfo2&gt;(1);
+
+CleanupStack::PushL(cSchEntryInfoArray);
+
+// Create an hourly schedule
+TScheduleEntryInfo2 entry1;
+
+//Sets the date and time for the schedule as Jan 1st, 2010, 08:00 am
+TDateTime datetime2(2010, EJanuary, 1, 8, 0, 0, 0); 
+TTsTime time2(datetime2, ETrue);
+
+//Set the first instance when the entry will cause the execution of tasks. 
+entry1.SetStartTime(time2);
+
+// Set the interval between execution of tasks
+// Here the interval is 2 hours because the interval type is hourly.
+const TInt interval = 2;
+entry1.SetInterval(interval);
+
+// Set the type of interval used between due times for the scheduled entry
+entry1.SetIntervalType(TIntervalType(EHourly));
+    
+// Set the period for which the entry is valid. After 8 hours the 
+// tasks associated with the entry will not be eligible for execution.
+const TInt eightHours = 480; // in minutes 
+entry1.SetValidityPeriod(TTimeIntervalMinutes(eightHours));
+    
+cSchEntryInfoArray-&gt;AppendL(entry1);
+
+//create the time-based persistent schedule
+User::LeaveIfError(iScheduler.CreatePersistentSchedule(aRef, *cSchEntryInfoArray));
+
+CleanupStack::PopAndDestroy(cSchEntryInfoArray);
+...</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-FFC11C40-D971-5122-B07C-32695C61EE64"><cmd/>
+<info> <xref href="GUID-5A30CCBC-8D18-359A-ABB1-E4256ADC7199.dita"><apiname>IMPORT_C TInt CreatePersistentSchedule(TSchedulerItemRef&amp;
+aRef, const CArrayFixFlat&lt;TTaskSchedulerCondition&gt;&amp; aConditions, const
+TTsTime&amp; aDefaultRunTime)</apiname></xref>: Creates a persistent condition-based
+schedule without tasks. </info>
+<info>The following code snippet illustrates how to create a persistent condition-based
+schedule that is triggered when both <codeph>condtion1</codeph> and <codeph>condtion2</codeph> are
+satisfied. By default, the schedule is set to start on December 10th, 2009
+at 09:00 A.M., if the condition set is not met. </info>
+<stepxmp><codeblock id="GUID-B1F905E8-DC06-5C94-84FE-7BEC9E21EB43" xml:space="preserve">...
+
+TSchedulerItemRef&amp; aRef;
+
+//Array to hold the schedule conditions
+CArrayFixFlat&lt;TTaskSchedulerCondition&gt;* cTaskScheCondArray;
+
+//Condition list to hold a set of conditions
+CSchConditionArray conditionList = new (ELeave) CSchConditionArray(2);
+CleanupStack::PushL(conditionList);
+
+//set the first condition
+TTaskSchedulerCondition condition1;
+
+//UID of the publish and subscribe category for condition1
+const TUid KPubSubsPersistCondCategUid1 = TUid::Uid(0x102F7784);
+
+//Key of the publish and subscribe category for condition2
+const TInt KPubSubsPersistCondKey1 = 1;
+
+condition1.iCategory = KPubSubsPersistCondCategUid1;
+condition1.iKey        = KPubSubsPersistCondKey1;
+condition1.iState    = 10;
+condition1.iType    = TTaskSchedulerCondition::EEquals;
+conditionList-&gt;AppendL(condition1);
+
+//set the second condition
+TTaskSchedulerCondition condition2;
+
+//UID of the publish and subscribe category for condition2
+const TUid KPubSubsPersistCondCategUid2 = TUid::Uid(0x103F7784);
+
+//Key of the publish and subscribe category for condition2
+const TInt KPubSubsPersistCondKey2 = 1;
+
+condition2.iCategory = KPubSubsPersistCondCategUid2;
+condition2.iKey        = KPubSubsPersistCondKey2;
+condition2.iState    = 20;
+condition2.iType    = TTaskSchedulerCondition::ENotEquals;
+conditionList-&gt;AppendL(condition2);
+
+//Set the date and time for the schedule as Dec 10th, 2009, 09:00 am
+TDateTime datetime2(2009, EDecember, 10, 9, 0, 0, 0); 
+TTsTime time2(datetime2, EFalse);
+
+//create the condition-based persistent schedule
+iScheduler.CreatePersistentSchedule(aRef, *conditionList, time2);
+
+CleanupStack::PopAndDestroy(); // conditionList</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-E19A594F-F7A8-576F-B509-726FB4DF3B1F"><cmd/>
+<info><xref href="GUID-B51E61E7-8A9F-354C-9695-58E741DD21AB.dita"><apiname>IMPORT_C TInt ScheduleTask(TTaskInfo&amp; aTaskInfo, HBufC&amp;
+aTaskData, TSchedulerItemRef&amp; aRef, const CArrayFixFlat&lt;TScheduleEntryInfo2&gt;&amp;
+aEntryList)</apiname></xref>:Creates a transient time-based schedule and adds a task
+to it. </info>
+<info>The following code snippet illustrates how to create a transient time-based
+schedule and associate a task to it. It starts at a specific time, runs every
+one hour and is valid for two hours. </info>
+<stepxmp><codeblock id="GUID-B0087E50-F2F1-5BC8-9165-53C505E53330" xml:space="preserve">...
+
+TSchedulerItemRef ref;
+
+// Array that holds the schedule entries
+CArrayFixFlat&lt;TScheduleEntryInfo2&gt;* cSchEntryInfoArray;
+cSchEntryInfoArray = new CArrayFixFlat&lt;TScheduleEntryInfo2&gt;(1);
+
+CleanupStack::PushL(cSchEntryInfoArray);
+
+// Create a schedule entry
+TScheduleEntryInfo2 entry;
+
+TTime now;
+
+//    Set the date and time of this TTime to the universal time.
+now.UniversalTime();
+    
+// Assign an offset of 15 seconds. 
+TInt offset = 15;
+now += TTimeIntervalSeconds(offset);
+
+// Constructs a TTsTime with a TTime object.
+// ETrue indicates that TTsTime is UTC based time
+TTsTime time(now, ETrue);
+    
+// Set the above time as the first time at which
+// the entry will cause execution of tasks. 
+entry.SetStartTime(time);
+    
+// Set the type of interval used between due times for scheduled entry
+entry.SetIntervalType(TIntervalType(EHourly));
+    
+// Set the period for which the entry is valid. 
+// After 2 hours the tasks associated with the entry will not be eligible for execution 
+TInt validity = 120;
+entry.SetValidityPeriod(TTimeIntervalMinutes(validity));
+    
+// Set the interval between execution of tasks
+// Here the interval is 1 hour because the interval type is hourly.
+entry.SetInterval(1);
+
+//Add the schedule entry to the array
+cSchEntryInfoArray-&gt;AppendL(entry);
+    
+// Create a transient task to be scheduled
+TTaskInfo taskInfo;
+
+// Task id
+const TInt tId = 0;
+taskInfo.iTaskId = tId;
+    
+// The task repeats just once
+const TInt numberOfRepeats = 1;
+taskInfo.iRepeat = numberOfRepeats;
+    
+// Task priority set by the client. 
+// Where a client has two tasks with different priorities, 
+// the task with the higher priority will be executed first.
+const TInt priority = 2; 
+taskInfo.iPriority = priority;
+    
+_LIT(KScheduleType," transient schedule");
+const TDesC* transient = &amp;KScheduleType;
+HBufC* data = transient-&gt;AllocLC();
+        
+// Create the transient time-based schedule 
+User::LeaveIfError(iScheduler.ScheduleTask(taskInfo, *data, ref, *cSchEntryInfoArray));
+
+...</codeblock> </stepxmp>
+<info> Important:  The task scheduler does not notify a client if a scheduled
+task fails to execute successfully. Clients can however use the notification
+mechanism of the <xref href="GUID-5B63D14D-007D-566F-A065-1A25FE4B97A3.dita">Log
+Engine</xref> to get some notification and information of the error condition
+that caused the task to fail. </info>
+<info><ul>
+<li id="GUID-CEB9D7B2-08C1-5256-8E05-743E2F894AFB"><p>Errors can occur when
+the task scheduler prepares to create and run a task process. The most likely
+error is an out of memory error. The task scheduler logs the error to the
+system log with type <xref href="GUID-3F3A8B98-D750-30C5-A2D5-D28AB1D8EAE9.dita"><apiname>KLogTaskSchedulerEventTypeUid</apiname></xref>. The
+task or schedule is not retried. </p> </li>
+<li id="GUID-11D78BC8-02F4-53C3-8544-F5C3F8BD0671"><p>If the task process
+is created successfully, but it exits with an error, the task scheduler logs
+the process exit reason to the system log, also with type <xref href="GUID-3F3A8B98-D750-30C5-A2D5-D28AB1D8EAE9.dita"><apiname>KLogTaskSchedulerEventTypeUid</apiname></xref>. </p> </li>
+</ul> </info>
+</substep>
+<substep id="GUID-8E8365D3-3A08-5B6E-BA92-73F2E750145C"><cmd/>
+<info> <xref href="GUID-C6D23376-3EF2-349A-9BCF-812D57E61EA3.dita"><apiname>IMPORT_C TInt ScheduleTask(TTaskInfo&amp; aTaskInfo, HBufC&amp;
+aTaskData, TSchedulerItemRef&amp; aRef, const CArrayFixFlat&lt;TTaskSchedulerCondition&gt;&amp;
+aConditions, const TTsTime&amp; aDefaultRunTime)</apiname></xref>: Creates a transient
+condition-based schedule and adds a task to it. </info>
+<info>The following code snippet illustrates how to create a transient condition-based
+schedule and associate a task to it. The schedule is triggered when <codeph>condition1</codeph> is
+met. By default, the schedule is set to start on December 10th, 2009 at 09:00
+A.M., if the condition set is not met. </info>
+<stepxmp><codeblock id="GUID-F1E856BD-38F2-5F65-B1D7-96B11A008F47" xml:space="preserve">...
+
+TSchedulerItemRef ref2;
+
+//Array that holds the conditions
+CArrayFixFlat&lt;TTaskSchedulerCondition&gt;* CSchConditionArray;
+CSchConditionArray conditionList = new (ELeave) CSchConditionArray(1);
+
+CleanupStack::PushL(conditionList);
+
+//set the condition
+TTaskSchedulerCondition condition1;
+
+//UID of the publish and subscribe category for condition1
+const TUid KPubSubsTransCondCategUid1 = TUid::Uid(0x102F7785);
+
+//Key of the publish and subscribe category for condition1
+const TInt KPubSubsTransCondKey1 = 1;
+
+condition1.iCategory = KPubSubsTransCondCategUid1;
+condition1.iKey        = KPubSubsTransCondKey1;
+condition1.iState    = 10;
+condition1.iType    = TTaskSchedulerCondition::EEquals;
+conditionList-&gt;AppendL(condition1);
+
+// Associate a task with the condition-based schedule
+TTaskInfo taskInfo2;
+
+_LIT(KTransSchedTaskName, "Transient - Condition-Based");
+_LIT(KTransSchedTaskData2, "Task data for transient schedule");
+
+taskInfo2.iName = KTransSchedTaskName;
+taskInfo2.iPriority = 2;
+taskInfo2.iRepeat = 0;
+
+// Create some data associated with this task
+HBufC* taskTransSchedData = KTransSchedTaskData2().AllocLC();
+
+//set the default time at which you want the transient condition-based
+//schedule to start, if no conditions are met
+// sets the date and time as Jan 1st, 2010, 10:01 am
+TDateTime datetime2(2010, EJanuary, 1, 10, 1, 0, 0); 
+TTsTime defaultRuntime(datetime2, ETrue); // 10:01 am
+
+// Create the transient condition-based schedule
+User::LeaveIfError(iScheduler.ScheduleTask(taskInfo2, *taskTransSchedData, ref2, *conditionList, defaultRuntime));
+
+CleanupStack::PopAndDestroy(2); // taskTransSchedData, conditionList
+
+...</codeblock> </stepxmp>
+</substep>
+</substeps>
+<info><note> Schedules can be either persistent or transient. Persistent schedules
+have schedule information and any corresponding task data persisted to the
+disk. </note></info>
+<info>The task scheduler server reads this data back into memory when the
+phone is restarted. But, transient schedules do not have their data persisted
+and are deleted automatically once any associated tasks have finished running. </info>
+</step>
+<step id="GUID-265E13BF-EC53-5308-ABD1-92FAF2F3A9E0"><cmd/>
+<info>Create the support for adding tasks to a persistent schedule by passing
+the handle of the persistent schedule to <xref href="GUID-A293C22A-B2A7-333B-B2B7-E28A22343DE9.dita"><apiname>ScheduleTask(TTaskInfo&amp;
+aTaskInfo, HBufC&amp; aTaskData, const TInt aScheduleHandle)</apiname></xref>. </info>
+<info><b> Notes</b>:  <ul>
+<li><p>This step applies only, if you have already created a persistent schedule. </p></li>
+<li><p>For more information about the effects of backup and restore on scheduled
+tasks in persistent schedules, see the <xref href="GUID-00363030-AAE2-5231-8407-AC609DA0F496.dita">Backup
+and Restore on Scheduled Tasks in Persistent Schedules</xref>. </p></li>
+</ul><p/></info>
+<info>The following code snippet illustrates how to create a task and associate
+it with an existing persistent schedule. </info>
+<stepxmp><codeblock id="GUID-BA89C9FD-0876-59CE-BD90-BBEE3526277F" xml:space="preserve">
+...
+
+//Contains the handle to the persistent schedule
+TInt aScheduleId;
+...
+
+
+TInt&amp; aNewId;
+
+//Create the task that you want to add the persistent schedule
+TTaskInfo taskInfo;
+taskInfo.iTaskId = aNewId;
+
+_LIT(aName, "Task for Persistent Schedule");
+
+taskInfo.iName = aName;
+taskInfo.iPriority = 2;
+taskInfo.iRepeat = 0;
+
+HBufC* taskdata = _L("the data").AllocLC();
+
+iScheduler.ScheduleTask(taskInfo, *taskdata, aScheduleId);
+
+//Update aNewId with the task ID set by the task scheduler
+aNewId = taskInfo.iTaskId;
+...
+
+CleanupStack::PopAndDestroy(); // taskdata
+
+...</codeblock> </stepxmp>
+<info> Notes:  </info>
+<info><p><ul>
+<li><p>The <codeph>HBufC* taskdata</codeph> parameter is used by clients who
+want to send data to the executable that is launched when the task becomes
+due. When the executable is launched, this data is stored in a temporary task
+file and the filename is passed on the command line to the newly created process.
+That executable can then open the file and stream in the contents. </p></li>
+<li><p>If multiple tasks are assigned to a schedule that has become due, the
+data for each schedule is concatenated into the same file. The tasks are stored
+in the file as <xref href="GUID-049FF2D7-8444-3E87-BF2F-DD0EA9B10ED0.dita"><apiname>CScheduledTask</apiname></xref> instances. The first item
+in the file is an integer describing how many tasks there are in the file.
+Subsequently the file just contains tasks which can be streamed in using the <xref href="GUID-049FF2D7-8444-3E87-BF2F-DD0EA9B10ED0.dita#GUID-049FF2D7-8444-3E87-BF2F-DD0EA9B10ED0/GUID-F9ED1FDD-0DAF-3450-99A6-730D43D00FE0"><apiname>CScheduledTask::NewLC()</apiname></xref> method. </p></li>
+</ul></p></info>
+</step>
+<step id="GUID-DEE8E40C-ED35-5C48-9406-DA44B1E68A61"><cmd/>
+<info>Create the support for viewing schedules. This involves two steps: </info>
+<substeps id="GUID-97888525-CEB8-530F-A092-5DB980E7C841">
+<substep id="GUID-B783CD9D-AE70-5BB9-B6ED-CC93EEE97512"><cmd/>
+<info>Get the name and ID (schedule handle) of schedules using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-7C8B221C-F8E5-3EEE-9693-2055D6F1EBF4"><apiname>RScheduler::GetScheduleRefsL()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-07058B0D-CD00-53A0-B744-6073FD81B941" xml:space="preserve">//Array that holds schedule entries
+CArrayFixFlat&lt;TSchedulerItemRef&gt;* CSchItemRefArray;
+CSchItemRefArray = new CArrayFixFlat&lt;TSchedulerItemRef&gt;(3);
+
+CleanupStack::PushL(CSchItemRefArray);
+
+//Get the list of all schedules
+User::LeaveIfError(iScheduler.GetScheduleRefsL(*CSchItemRefArray, EAllSchedules));
+
+...
+
+//Gets the schedule handle and assigns it to schedHandle
+TInt schedHandle = *CSchItemRefArray)[1].iHandle;
+
+...</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-5D034701-EF62-5982-8070-A2C40DDD1122"><cmd/>
+<info>Get schedule details by passing the schedule handle to <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-AD5F8784-D619-32BB-B125-30C7393FA1A9"><apiname>RScheduler::GetScheduleL()</apiname></xref> or <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-946F7B2F-EF2C-33DB-A397-D31A009165A6"><apiname>RScheduler::GetScheduleTypeL()</apiname></xref>. </info>
+<info><ul>
+<li id="GUID-D15FBE3E-4214-5074-A91C-747324339C7E"><p> <b>Viewing details
+of time-based schedules:</b>  </p> <codeblock id="GUID-27955B2E-A6F6-5D13-8AFD-7AC37F579E31" xml:space="preserve">...
+
+CArrayFixFlat&lt;TTaskInfo&gt; CTaskInfoArray;
+CTaskInfoArray* tasks = new (ELeave) CTaskInfoArray(3);
+
+TTsTime nextTimeScheduleIsDue;
+TScheduleState2 stateTimebasedSched;
+
+CArrayFixFlat&lt;TScheduleEntryInfo2&gt; CScheduleEntryInfoArray;
+CScheduleEntryInfoArray* entries = new (ELeave) CScheduleEntryInfoArray(3);
+
+CleanupStack::PushL(entries);
+
+iScheduler.GetScheduleL(schedHandle, stateTimebasedSched, *entries, tasks, nextTimeScheduleIsDue);
+CleanupStack::PopAndDestroy(entries);</codeblock> </li>
+<li id="GUID-5EBF8371-0DAB-5C02-93BE-84C75D2258A3"><p> <b>Viewing details
+of condition-based schedules:</b>  </p> <codeblock id="GUID-240EF5BE-211F-5CA4-AD03-0A39B7FD9927" xml:space="preserve">...
+
+TTsTime defaultTime;
+TScheduleState2 state;
+
+CArrayFixFlat&lt;TTaskInfo&gt; CTaskInfoArray;
+CTaskInfoArray* tasks = new (ELeave) CTaskInfoArray(3);
+
+CArrayFixFlat&lt;TTaskSchedulerCondition&gt; CSchConditionArray;
+CSchConditionArray* conditionList = new (ELeave) CSchConditionArray(3);
+CleanupStack::PushL(conditionList);
+
+iScheduler.GetScheduleL(schedHandle, state, *conditionList, defaultTime, tasks);
+
+CleanupStack::PopAndDestroy(conditionList);</codeblock> </li>
+<li id="GUID-9966127B-4650-510D-9FD4-36177F801889"><p> <b>Viewing the schedule
+type associated with a schedule:</b> Identifies whether the schedule is a
+condition or time-based. </p> <codeblock id="GUID-E696A2CA-3135-56BD-8B41-AE2CB5E6FDC0" xml:space="preserve">...
+
+TScheduleType &amp;type;
+
+iScheduler.GetScheduleTypeL(schedHandle, type);</codeblock> </li>
+</ul> </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-BA59B4AB-0104-5794-808E-5D9F6693BE03"><cmd/>
+<info>Create the support for editing, enabling and disabling schedules. Schedules
+can be edited using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-50B287A9-F62F-3C49-AD22-2760C96846EA"><apiname>RScheduler::EditSchedule()</apiname></xref> when a change
+is required to be done to a schedule. </info>
+<info>Before making changes to a schedule, you can use <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-64263B93-74B9-3526-B585-4B2E8B8B86A2"><apiname>RScheduler::DisableSchedule()</apiname></xref> to
+disable a schedule, so that it is not triggered and later use <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-5AE06AE8-46BA-3339-8ADB-E7C642928C9C"><apiname>RScheduler::EnableSchedule()</apiname></xref> to
+enable it, once the changes are done to the schedule. </info>
+<info>The following code snippet illustrates how to disable a time-based schedule,
+edit it to make changes to the schedule and later enable the schedule. </info>
+<stepxmp><codeblock id="GUID-BD180A79-767B-54A4-A5EA-4D763A295D4C" xml:space="preserve">//Editing time-based schedules
+                  
+...
+
+TInt schedHandle;
+
+...
+
+//Disables the schedule referenced by "schedHandle"
+User::LeaveIfError(iScheduler.DisableSchedule(schedHandle);
+...
+
+//Array to hold the schedule entries
+CArrayFixFlat&lt;TScheduleEntryInfo2&gt; CSchEntryInfoArray;
+CSchEntryInfoArray* entryList = new (ELeave) CSchEntryInfoArray(3);
+
+CleanupStack::PushL(entryList);
+
+//Change the start date and time as Jan 10th, 2010, 11:00 am
+TDateTime datetime2(2010, EJanuary, 10, 11, 0, 0, 0);
+TTsTime defaultRuntime(datetime2, ETrue);
+
+//create the schedule entry with the updated time
+TScheduleEntryInfo2 entry1 (defaultRuntime, EDaily, 1, 20); // 20m from "now"
+entryList-&gt;AppendL(entry1);
+
+//Enables the schedule referenced by "schedHandle"
+User::LeaveIfError(iScheduler.EnableSchedule(schedHandle);
+
+//edit the schedule
+User::LeaveIfError(iScheduler.EditSchedule(schedHandle, entryList));
+        
+CleanupStack::PopAndDestroy(entryList);</codeblock> </stepxmp>
+<info>The following code snippet illustrates how to edit a condition-based
+schedule by passing the schedule handle of the schedule to be edited and the
+updated schedule condition details to <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-50B287A9-F62F-3C49-AD22-2760C96846EA"><apiname>RScheduler::EditSchedule()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-35B0F192-2530-5BD4-8AF5-E44C02405D13" xml:space="preserve">//Editing condition-based schedules
+...
+
+TInt schedHandle;
+
+...
+
+CArrayFixFlat&lt;TTaskSchedulerCondition&gt;* CSchConditionArray;
+
+
+CSchConditionArray conditionList = new (ELeave) CSchConditionArray(2);
+CleanupStack::PushL(conditionList);
+
+//update the condition
+TTaskSchedulerCondition condition1;
+
+//UID of the publish and subscribe category for condition1
+const TUid KPubSubsTransCondCategUid1 = TUid::Uid(0x102F7785);
+
+//Key of the publish and subscribe category for condition1
+const TInt KPubSubsTransCondKey1 = 1;
+
+condition1.iCategory = KPubSubsTransCondCategUid1;
+condition1.iKey        = KPubSubsTransCondKey1;
+condition1.iState    = 10;
+condition1.iType    = TTaskSchedulerCondition::EEquals;
+conditionList-&gt;AppendL(condition1);
+
+// sets the date and time as Jan 10th, 2010, 10:00 am
+TDateTime datetime2(2010, EJanuary, 10, 10, 0, 0, 0);
+TTsTime defaultRuntime(datetime2, ETrue);
+
+iScheduler.EditSchedule(schedHandle, *conditionList, defaultRuntime);
+
+...</codeblock> </stepxmp>
+</step>
+<step id="GUID-91C5C26A-7120-500C-8F42-AE61133BB375"><cmd/>
+<info>Create the support for deleting schedules using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-B4CECD92-82C6-3CEC-8DA6-E4D1580BEC00"><apiname>RScheduler::DeleteSchedule()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-DBB6A497-BFFC-5832-B5E8-5B8D2F713576" xml:space="preserve">...
+
+//Deletes the schedule referenced by "schedHandle"
+iScheduler.DeleteSchedule(schedHandle);</codeblock> </stepxmp>
+</step>
+<step id="GUID-83E497A5-9C7C-5B57-A4E1-922A0B9BF913"><cmd/>
+<info>Create the support for viewing task information associated with a schedule.
+This involves two steps: </info>
+<substeps id="GUID-F7C63AE4-4F06-58A6-9614-BC5356176977">
+<substep id="GUID-89600927-D804-54C6-8C97-459BD3C1078E"><cmd/>
+<info>Get a list of all tasks or a subset of tasks using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-8A56C5D7-473C-3CA1-9B03-E6C794434EAB"><apiname>RScheduler::GetTaskRefsL()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-6EA170CE-2CE5-5E43-B9AA-3FC177BF1B3F" xml:space="preserve">//Array to hold the list of tasks
+CArrayFixFlat&lt;TSchedulerItemRef&gt; CSchItemRefArray;
+CSchItemRefArray* refs = new (ELeave) CSchItemRefArray(3);
+
+//Gets the list of tasks
+iScheduler.GetTaskRefsL(*refs, EAllSchedules, EAllTasks);
+
+CleanupStack::PopAndDestroy(refs);</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-242AEAF8-CC8B-5EA3-9394-A62F79275735"><cmd/>
+<info>Get details associated with a specific task using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-389F77C6-6127-3376-B4CF-993A5849903B"><apiname>RScheduler::GetTaskInfoL()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-8EB737CE-5990-5A04-8A44-CA1B3EDB82DE" xml:space="preserve">...
+
+//Handle to the task
+TInt aTaskHandle;
+
+...
+
+TInt taskSize = 0;
+
+//Gets the size of the data to be passed to the task's program.
+taskSize = iScheduler.GetTaskDataSize(aTaskHandle, taskSize);
+HBufC* taskData = HBufC::NewLC(taskSize);
+
+TPtr pTaskData = taskData-&gt;Des();
+
+TTsime scheduleNextDueTime;
+TTaskInfo taskFromServer;
+TSchedulerItemRef scheduleReference;
+
+//Gets task details
+iScheduler.GetTaskInfoL(aTaskHandle, taskFromServer, pTaskData, scheduleReference, scheduleNextDueTime);
+
+CleanupStack::PopAndDestroy(taskData);</codeblock> </stepxmp>
+</substep>
+</substeps>
+</step>
+<step id="GUID-85E5D82C-B280-57D3-89E2-7AC8C63C072C"><cmd/>
+<info>Create the support for deleting tasks associated with a schedule using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-BE934053-79EA-3101-899D-18BC91359BB7"><apiname>RScheduler::DeleteTask()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-ADF28359-38D9-5B32-8828-929E4AE56496" xml:space="preserve">TInt taskId;
+
+...
+
+iScheduler.DeleteTask(taskId);</codeblock> </stepxmp>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-3CDCE4E0-E29D-5782-8053-B386A9E34BCC.dita"><linktext>Task Scheduler
+Overview</linktext></link>
+<link href="GUID-00363030-AAE2-5231-8407-AC609DA0F496.dita"><linktext>Backup and
+Restore on Scheduled Tasks in Persistent Schedules</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74C7B8E1-0A02-5242-A8C9-5CDD410102CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-74C7B8E1-0A02-5242-A8C9-5CDD410102CC" xml:lang="en"><title>Identifying
+elements</title><shortdesc>Describes how to identify elements within arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Elements within arrays are identified by their logical position within
+the array.</p>
+<p>Elements can also be accessed by key.</p>
+<p>For all of the arrays <i>except</i>: <codeph>RArray&lt;class T&gt;</codeph>, <codeph>RPointerArray&lt;class T&gt;</codeph> and
+any of their specialisations, the key structure is defined independently of
+the array itself, using:</p>
+<ul>
+<li id="GUID-DD8F7A9A-5A95-59DC-A98B-D3F74CCFD1D9"><p>a <codeph>TKeyArrayFix</codeph> object
+for arrays of same length elements.</p> </li>
+<li id="GUID-BB94B0F3-E182-5A14-98DE-BEC9D150C91A"><p>a <codeph>TKeyArrayVar</codeph> object
+for arrays of variable length elements.</p> </li>
+<li id="GUID-2AD3D7F3-3C1C-51EE-ADB4-7EEE489F42D0"><p>a <codeph>TKeyArrayPak</codeph> object
+for arrays of packed (variable length) elements.</p> </li>
+</ul>
+<p>Accessing an element by key requires the appropriate <codeph>TKeyArrayFix</codeph>, <codeph>TKeyArrayVar</codeph> or <codeph>TKeyArrayPak</codeph> object to be constructed and passed to the appropriate array class member
+function.</p>
+<p>For the: <codeph>RArray&lt;class T&gt;</codeph>, <codeph>RPointerArray&lt;class T&gt;</codeph> arrays,
+keys are part of the array itself. These arrays also use the classes:</p>
+<ul>
+<li id="GUID-476F1A74-3EEA-5F2D-BCDD-1CE53949D087"><p><codeph>TLinearOrder&lt;class T&gt;</codeph> to
+define the ordering of two objects.</p> </li>
+<li id="GUID-2631B9C1-5716-5FF3-B248-E19E75BB212F"><p><codeph>TIdentityRelation&lt;class T&gt;</codeph> to
+define the comparison of two objects.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74CBD580-01F8-5C68-A5FD-6331AAE7DF62.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-74CBD580-01F8-5C68-A5FD-6331AAE7DF62"><title>Introduction to store streams </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Store streams provide concrete stream types suitable for use in stores. The API is based on the stream interfaces defined by the Streaming API.</p> <p>Streams are usually created in the context of a <keyword>store</keyword>. Objects can be externalised to any store type, and then later re-internalised.</p> <p>Various types of stream are possible, such as streams which do encryption/decryption, or streams which convey data over a communications channel. Because the stream interface is polymorphic, <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph> functions work with any stream type.</p> <p>Streams within stores are encapsulated by one of two concrete classes:</p> <ul><li id="GUID-3D98CA10-F906-5760-AA9B-821CEA3C7633"><p>  <codeph>RStoreWriteStream</codeph> represents a stream which is being written. The class supports the creation and manipulation of a stream in a store.</p> </li> <li id="GUID-3B3FD174-8CC2-5A4D-BA93-A421818690C5"><p><codeph>RStoreReadStream</codeph> represents a stream which is being read. The class supports the opening and manipulation of an existing stream in a store.</p> </li> </ul> <p>Both concrete classes are derived from their respective abstract base classes, the write stream interface <codeph>RWriteStream</codeph>, and the read stream interface <codeph>RReadStream</codeph>.</p> <p>A stream which is being written is referred to as a <i>write stream</i> while a stream which is being read is referred to as a <i>read stream</i>.</p> <p>Applications must construct and open an <codeph>RStoreReadStream</codeph> object before they can read from a store stream and they must must construct an <codeph>RStoreWriteStream</codeph> object before they can write to a store stream.</p> <p>Although an application constructs <codeph>RStoreWriteStream</codeph> and <codeph>RStoreReadStream</codeph> objects to represent streams in a store, application objects only need to refer to the <codeph>RWriteStream</codeph> and <codeph>RReadStream</codeph> base classes, when externalising or internalising themselves to the stream.</p> <section><title>See also</title> <p><xref href="GUID-6BF09365-09D7-5596-B802-1BE1757F51F6.dita">Streaming</xref> </p> <p><xref href="GUID-5CF5B8D6-C477-55D2-A036-2C090FA41D33.dita">The write stream interface</xref> </p> <p><xref href="GUID-E3210353-EEC2-56CB-AD75-309E5DCDEDD1.dita">The read stream interface</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74D3B534-B209-5884-B38F-DEDFB23B64CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-74D3B534-B209-5884-B38F-DEDFB23B64CF" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74E3A687-18BD-5255-9CB9-F4B01878A1E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-74E3A687-18BD-5255-9CB9-F4B01878A1E1" xml:lang="en"><title>XML DOM Engine
+Tutorials</title><shortdesc>This section explains the tasks that can be performed using the
+XML DOM Engine: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74E69324-7BCC-591F-B2A9-2932A3790966.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-74E69324-7BCC-591F-B2A9-2932A3790966"><title>How to manipulate simple global text</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Creating a global text object</title> <p>A <keyword>global text object</keyword> has global <keyword>paragraph</keyword> and <keyword>character</keyword> formatting. Its formatting is stored in a paragraph and a character <keyword>format layer</keyword>. To create a global text object, you need to create these layers, and pass them as parameters to the <xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita"><apiname>CGlobalText</apiname></xref> constructor:</p> <codeblock id="GUID-751BE38C-5DF2-544C-8D5B-3E62F081A212" xml:space="preserve">CGlobalText* iglobalText; // global text document
+CParaFormatLayer* iparaFormatLayer;
+CCharFormatLayer* icharFormatLayer; 
+iparaFormatLayer=CParaFormatLayer::NewL(); // required para format
+icharFormatLayer=CCharFormatLayer::NewL(); // required char format
+iglobalText=CGlobalText::NewL(iparaFormatLayer, icharFormatLayer);</codeblock> <p><b>Notes</b> </p> <ul><li id="GUID-EC58C950-BAAA-5F3E-92A4-0331872048C9"><p>The code above constructs a global text object which uses default paragraph and character formatting.</p> </li> <li id="GUID-4239E00E-221A-5B14-8630-02629AA17B60"><p>Rich text is formatted in exactly the same way as global text, except that the length and position arguments now are relevant and must specify a valid range of characters. Only characters in the range specified are affected.</p> </li> <li id="GUID-E35FC190-0D69-5E43-9041-3243FE20DD8A"><p>The global text object does <i>not</i> take on ownership of these <keyword>format layers</keyword>. This allows several global text objects to share the same format layers. Therefore, if you have only a single global text object, you must destroy not only it, but the format layers also:</p> </li> </ul> <codeblock id="GUID-EB55D07F-3A79-5372-B25A-418FF0F7F55C" xml:space="preserve">delete iglobalText; // delete contained document
+delete icharFormatLayer; // delete char format layer
+delete iparaFormatLayer; // and para format layer</codeblock> <p>If you had several global text objects sharing the same format layers, you would destroy the format layers only after all the text objects had been destroyed.</p> </section> <section><title>Inserting text and paragraphs</title> <p>Text may be inserted using <codeph>InsertL()</codeph>, specifying a <keyword>document position</keyword> and the text to insert.</p> <codeblock id="GUID-B5A979D1-D93E-5CB1-93C3-1B234A413335" xml:space="preserve">iGlobalText-&gt;InsertL(0,_L("Hello!"));
+iGlobalText-&gt;InsertL(5,_L(" World"));
+iGlobalText-&gt;InsertL(12,CEditableText::EParagraphDelimiter);
+    // insert paragraph marker
+iGlobalText-&gt;InsertL(13,_L("And hello again!"));
+    // insert text to follow this marker</codeblock> <p><b>Note</b> </p> <ul><li id="GUID-BE90B234-2B52-5ECC-9280-6898304CDB6C"><p>The code inserts two character strings into the text at document positions 0 and 5. Position 5 is the position between the fifth and sixth characters. A new <keyword>paragraph delimiter</keyword> and some more text is then inserted.</p> </li> </ul> </section> <section><title>Extracting information and text</title> <p>The following example code extracts information about a text object and about a word within the text object and reads the word at a document position. The status message <codeph>iMessage</codeph> (a <codeph>TBuf&lt;80&gt;</codeph>) is used to display the number of <keyword>characters</keyword>, <keyword>words</keyword> and <keyword>paragraphs</keyword> in the global text object.</p> <p><codeph>ParagraphCount()</codeph> always returns a count of at least one due to the existence of the terminating <keyword>paragraph
+  delimiter</keyword> at the end of every text object.</p> <codeblock id="GUID-5EE64712-1E94-536E-B590-3F855087EF92" xml:space="preserve">iMessage.Format(_L("chars=%d, words=%d, paras=%d"),
+iGlobalText-&gt;DocumentLength(),
+        // length up to and excluding final para mark
+iGlobalText-&gt;WordCount(), // white-space delimited words
+iGlobalText-&gt;ParagraphCount()); // paras including the final one</codeblock> <p>In the following example information about the word containing the character at a specified document position, and the word itself, are extracted and printed.</p> <p><codeph>CGlobalText::GetWordInfo()</codeph> is used to extract information about a word and <codeph>CGlobalText::Read()</codeph> to obtain a read-only pointer to the word. </p> <codeblock id="GUID-DAB7E1DD-8F18-5125-BE1D-324FB3CD353F" xml:space="preserve">TInt pos=65; // Choose an arbitrary document position
+TInt startPos, length; // results of function
+iGlobalText-&gt;GetWordInfo(pos,startPos,length,EFalse,ETrue);
+// Read length (the length of the word at position pos) number of 
+// characters beginning at startPos (start of word at pos). 
+TPtrC pointer=iGlobalText-&gt;Read(startPos,length);
+// Print word and word info
+iMessage.Format(_L("Word at pos %d (\"%S\") has"
+        " %d characters, starts at position %d"),
+            pos, &amp;pointer, length, startPos);</codeblock> <codeblock id="GUID-DB34A490-10EE-59C1-81DB-974C319493A0" xml:space="preserve">// insert huge amounts of text
+...</codeblock> </section> <section><title>Using fields</title> <p>Before any field, apart from the page number field in a<keyword>header</keyword> or <keyword>footer</keyword>, can be inserted into a document, a field factory must be declared. A field factory is a class which derives from the <xref href="GUID-6202B0B7-663C-3172-BE13-88D77081B42C.dita"><apiname>MTextFieldFactory</apiname></xref> class, and which defines a <xref href="GUID-6202B0B7-663C-3172-BE13-88D77081B42C.dita#GUID-6202B0B7-663C-3172-BE13-88D77081B42C/GUID-0391FC8A-9206-3118-A057-5549E49D2309"><apiname>MTextFieldFactory::NewFieldL()</apiname></xref> function. The function constructs new fields according to a<keyword>UID</keyword> passed into the function.</p> <p> The steps involved before the field factory can be used to create and insert a field are as follwows</p> <ol id="GUID-FFE9F7BC-A4A1-5B27-BA07-FE2985F9BEF1"><li id="GUID-7232879E-58FF-50F7-8E40-5BEC68193FC1"><p>Instantiate a field factory. </p> </li> <li id="GUID-EF54FC5C-F23D-5E84-A2E9-72239B96FF08"><p>Set that factory to be the text object's field factory</p> </li> <li id="GUID-5B5CF95A-5280-5E80-AAD0-FCFD0343944C"><p>Construct a field using <codeph>CPlainText::NewTextFieldL()</codeph> </p> </li> <li id="GUID-E9F3EFAD-5307-5E6D-BA91-5653ED4537DF"><p>If, for example, a date/time field is to be inserted, format it as required. By default, the date/time is formatted as dd/mm/yyyy. </p> </li> <li id="GUID-65F09753-B14B-5F7E-97F8-8D873ED8C7CE"><p>Insert the field at the desired document position</p> </li> <li id="GUID-851024F4-E31D-5020-92D1-22DE1685EAA0"><p>Update the field. Until this is done, no field text will be visible. Also, care must be taken that the field length is not greater than 20 characters (the maximum field length), otherwise <codeph>UpdateFieldL()</codeph> will panic. The first time the field is updated, the position specified must be the position at which the field was inserted. Subsequent updates may specify any position within the field.</p> </li> <li id="GUID-C451C955-CDEB-5940-9D9D-182E1F33545C"><p><xref href="GUID-ED1FFBC5-23C3-3C9E-B5D1-04B72B9369E6.dita#GUID-ED1FFBC5-23C3-3C9E-B5D1-04B72B9369E6/GUID-DAC0984B-2AE1-3BE0-A76B-7226D162D709"><apiname>CPlainText::FindFields()</apiname></xref> may be used to get information about a field, including its start position and length.</p> </li> </ol> </section> <section><title>Paragraph formatting</title> <p>The following code centre aligns the text. Alignment is a<keyword>paragraph format attribute</keyword> and is a member of the <xref href="GUID-2F795E02-0704-39AE-8EC6-06CB5D5D670F.dita"><apiname>CParaFormat</apiname></xref> class. All paragraph format attributes which are not explicitly set are taken from the system-provided default settings. </p> <p>Use <xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita#GUID-4F502FE5-44D4-3947-9D73-67EF4886059A/GUID-E5B80F41-D2A1-322D-85F7-8C016F2F9519"><apiname>CGlobalText::ApplyParaFormatL()</apiname></xref> to globally change the paragraph formatting. In this example, the position and the length arguments are redundant because the formatting is applied globally. However, they must be specified, although their values are irrelevant. </p> <p>To set or clear paragraph format attributes, use a<xref href="GUID-C4220B5C-1037-342E-A409-B62F0429E7F2.dita"><apiname>TParaFormatMask</apiname></xref> in conjunction with an object of class<codeph>CParaFormat</codeph>. The attributes specified in the mask are set according to the corresponding value contained in <codeph>CParaFormat</codeph>. Any attributes not specified in the mask are unaffected.</p> <codeblock id="GUID-2D7DCFFC-70AE-599E-AF13-B7D800080905" xml:space="preserve">CParaFormat* paraFormat=CParaFormat::NewLC();
+TParaFormatMask paraFormatMask; 
+paraFormat-&gt;iHorizontalAlignment=CParaFormat::ECenterAlign; 
+        // set centered
+paraFormatMask.SetAttrib(EAttAlignment); // interested in alignment
+iglobalText-&gt;ApplyParaFormatL(paraFormat,paraFormatMask,0,0);
+        // apply format under mask - pos and length irrelevant
+CleanupStack::PopAndDestroy();  // paraFormat </codeblock> <p><b>Note</b> </p> <ul><li id="GUID-327FE937-FB69-58EF-9032-71DDBCF913E6"><p>An alternative method to using <codeph>ApplyParaFormatL()</codeph> for global text is to directly set the formatting of the global <keyword>paragraph
+format layer</keyword> upon which the object's paragraph formatting is based. This may be done by using either <xref href="GUID-C5A6B3D4-1BDE-35B4-AC6B-DF517A4D4147.dita#GUID-C5A6B3D4-1BDE-35B4-AC6B-DF517A4D4147/GUID-25234E88-E9B8-399D-8279-0B74EBF01746"><apiname>CParaFormatLayer::SetL()</apiname></xref>, to reset the formatting of the existing layer, or<xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita#GUID-4F502FE5-44D4-3947-9D73-67EF4886059A/GUID-A0FE0C07-EF67-3C70-9FF7-AECAC66B2F0D"><apiname>CGlobalText::SetGlobalParaFormat()</apiname></xref> which sets a new layer. Both methods cause all attributes to be reset; no mask is specified.</p> </li> </ul> </section> <section><title>Character formatting</title> <p>The following code globally sets the bold, italic and underline<keyword>character format attributes</keyword>. These attributes are accessed through the <codeph>iFontPresentation</codeph> and<codeph>iFontStyle</codeph> members of the <xref href="GUID-3518B92C-D1BD-36D1-B447-728A1052292F.dita"><apiname>TCharFormat</apiname></xref> class. Any attributes not explicitly set are taken from the system-provided default settings. </p> <p>Global character formatting is applied in a similar manner to paragraph formatting, using a <xref href="GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D.dita"><apiname>TCharFormatMask</apiname></xref> in conjunction with a<codeph>TCharFormat</codeph>, then calling<codeph>CGlobalText::ApplyCharFormatL()</codeph>.</p> <codeblock id="GUID-0E31A055-55A4-5806-9B9A-62AD53E78C6E" xml:space="preserve">charFormatMask.SetAttrib(EAttFontUnderline); // set underline
+charFormatMask.SetAttrib(EAttFontPosture); // and posture (for italic)
+charFormatMask.SetAttrib(EAttFontStrokeWeight); // and weight (for 
+    // bold)
+charFormat.iFontPresentation.iUnderline=EUnderlineOn;
+charFormat.iFontSpec.iFontStyle.SetPosture(EPostureItalic);
+charFormat.iFontSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold);
+// apply format under mask
+iGlobalText-&gt;ApplyCharFormatL(charFormat,charFormatMask,0,0);</codeblock> <p><b>Note</b> </p> <ul><li id="GUID-DF042F94-88C1-5F1C-B21A-17DF58EEBCD4"><p>No more than one attribute can be specified in the argument to<xref href="GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D.dita#GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D/GUID-B110FDDE-1E2C-3969-8E9E-A8FC8633932E"><apiname>TCharFormatMask::SetAttrib()</apiname></xref>. To set more than one attribute in a single call to <codeph>ApplyCharFormatL()</codeph>, either use several calls to<codeph>SetAttrib()</codeph>, as above, or use<xref href="GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D.dita#GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D/GUID-CAFA619F-81A3-337B-9EE0-E27152F2BDBE"><apiname>TCharFormatMask::SetAll()</apiname></xref> to set all attributes in the mask.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03"><title>exportlibrary</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>exportlibrary</codeph>  <varname>lib-name</varname> </p> <p>This allows the name of the <filepath>.lib</filepath> file generated to be explicitly specified, overriding the default name derived from the TARGET that would otherwise be used.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE" xml:lang="en"><title>Adaptive
+search</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Adaptive Search is an application independent Find pane based filtering
+method for known content. The content may be presented in list or grid format. </p>
+<p>The search strips the characters, symbols and numbers from the items of
+known content, and displays them in a grid format on top of the content. User
+is able to select them one by one and content is filtered to show matching
+items accordingly. </p>
+<fig id="GUID-7C32E1F9-A52D-4D17-919F-A814BA7D9D36">
+<title>Adaptive search</title>
+<image href="GUID-A5C1DDAC-C8D5-4966-8102-8F052B91CE1F_d0e47496_href.png" scale="40" placement="inline"></image>
+</fig>
+<section><title>Using adaptive search
+in C++ applications</title><p>The APIs to use for adaptive search is the Searchfield
+API which is used for providing the searchfield component and has been
+extended to include the adaptive search functionality.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-74FB4D67-ECCC-51DE-9F9F-6D3B43E01179.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-74FB4D67-ECCC-51DE-9F9F-6D3B43E01179" xml:lang="en"><title>MIDI Client Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia Framework
+  Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7510C121-A23F-50E0-8130-16AF552BC497.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7510C121-A23F-50E0-8130-16AF552BC497" xml:lang="en"><title>Dynamic Host
+Configuration Protocol </title><shortdesc>This section provides the summary of concepts and tutorials related
+to Dynamic Host Configuration Protocol (DHCP). </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75132B6C-2305-57B1-B969-B4F639B29852.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-75132B6C-2305-57B1-B969-B4F639B29852"><title>What are Factories and Factory Containers</title><shortdesc>This section describes Factories and Factory Containers in the Communications Architecture. Factories create Nodes. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Communications Framework uses <i>Factories</i> to create Nodes. Each type of Node has a Factory that is specific to that Node. A Factory is an instance of a class and is implemented as an ECOM plug-in. The plug-in DLL can contain a number of factories. The implementation of a Factory as an ECOM plug-in allows device creators to add new Factories to the Communications Framework. </p> <p>The Communications Framework creates containers for Factory objects called <i>Factory Containers</i>. The Communications Framework uses Factory Containers to create and store Factory objects. Each type of Node has a Factory Container that is specific to that Node.When the Communications Framework receives the first request to create a Node of a given type the Factory Container creates that Factory first. The Factory exists in the same thread as the Factory Container and is available to create more Nodes. When a thread terminates, the Factory Container closes the Nodes created by the Factories managed by that Factory Container. </p> <p>Factory Containers are Nodes and have the same behaviour as Nodes. Factory Containers can manage creation requests from other Nodes. Note that there is no Factopry to create a Factory Container. </p> <p>A Node can ask the Communications Framework to create a new Node. A Node gets the UID that identifies the required type of Node from the <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms Database</xref>. A Node asks the Communications Framework to return the correct Factory Container. The Node then asks that Factory Container to supply the Factory that can create the required type of Node. </p> <p>The implementation of the Communications Framework provides a Factory Container for each type of Node in each <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita">Plane</xref> in each thread. For example, if the Communications Framework uses two threads to implement the Control Plane, then the Communications Framework creates two Factory Containers for <xref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita#GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0/GUID-0B0B61DE-AABC-5F87-8205-30F818F79C0A">Connection Provider (CPR) Nodes</xref> and two Factory Containers for <xref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita#GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0/GUID-0B0B61DE-AABC-5F87-8205-30F818F79C0A">SubConnection Provider (SCPR) Nodes</xref>. Code in a thread can make a call to a static function to access a Factory Container. The Communications Framework makes sure that Factory Containers are available in a thread. After a Node is created, the thread ID forms part of the Node ID. </p> <p>Tools and applications do not create or destroy Factory Containers. </p> </conbody><related-links><link href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita"><linktext>Nodes</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7514DD31-E82B-49FD-916F-A9DF12D97204.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7514DD31-E82B-49FD-916F-A9DF12D97204" xml:lang="en"><title>URI
+List pre-configuration DTD</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The DTD of URI List pre-configuration and a description of each element
+is given below. </p>
+<codeblock id="GUID-67F71BCC-0F66-54C9-AFB1-D3107A0D5751" xml:space="preserve">&lt;!--
+Uri List pre-configuration Document Type Definition.
+
+Copyright Symbian Software Pvt Ltd 2007. All rights reserved.  
+--&gt;
+
+&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+&lt;!ELEMENT URIList (WAPPush, Browser, PushEMail, DevPro)&gt; 
+&lt;!ELEMENT WAPPush (Whitelist, Blacklist)&gt;
+&lt;!ELEMENT Browser (Whitelist, Blacklist)&gt;
+&lt;!ELEMENT PushEMail (Whitelist, Blacklist)&gt;
+&lt;!ELEMENT DevPro (Whitelist, Blacklist)&gt;
+&lt;!ELEMENT Whitelist (Record)&gt;
+&lt;!ELEMENT Blacklist (Record)&gt;
+&lt;!ELEMENT Record ( Uri, Permission, FavouriteName)&gt;
+&lt;!ELEMENT Uri (#PCDATA)&gt;
+&lt;!ELEMENT Permission (#PCDATA)&gt;
+&lt;!ELEMENT FavouriteName (#PCDATA)&gt;
+</codeblock>
+<section id="GUID-9C0AF039-8B09-4CCA-8D49-80710F86801A"><title>ELEMENT &lt;URIList&gt;</title><table rowheader="firstcol" id="GUID-D5A47A13-9D5A-41E4-BFAA-92183DE99D48">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT URIList (WapPush, Browser, PushEMail, DevPro)&gt;</p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;URIList&gt; is the root element. It should contain at least one
+of &lt;WapPush&gt;, &lt;Browser&gt;, &lt;PushEMail&gt;, or &lt;DevPro&gt; elements mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-648CEFB8-1C62-4F51-A3E0-BC224D350825"><title>ELEMENT &lt;WapPush&gt;</title><table rowheader="firstcol" id="GUID-87911539-2AD8-40A9-88D8-2C217F4AB5A1">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT WAPPush (Whitelist, Blacklist)&gt;</p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;WapPush&gt; element indicates that the URIs being pre-configured
+are of WapPush service type. It should contain at least one of &lt;EBlackList&gt;
+or &lt;EWhiteList&gt; elements mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-BA3FB267-439E-4A7F-966D-FAAC2299194E"><title>ELEMENT &lt;Browser&gt;</title><table rowheader="firstcol" id="GUID-7C092F82-1F6D-4A21-9C5F-D083601BF6AB">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT Browser (Whitelist, Blacklist)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;Browser&gt; element indicates that the URIs being pre-configured
+are of Browser service type. It should contain at least one of &lt;EBlackList&gt;
+or &lt;EWhiteList&gt; elements mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-CA49F5F8-E3A0-473A-82C2-0DEF77CA69DF"><title>ELEMENT &lt;PushEMail&gt;</title><table rowheader="firstcol" id="GUID-8EBDE89A-23EB-43E2-84CF-72ED3AF44E77">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT PushEMail (Whitelist, Blacklist)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;PushEMail&gt; element indicates that the URIs being pre-configured
+are of PushEMail service type. It should contain at least one of &lt;EBlackList&gt;
+or &lt;EWhiteList&gt; elements mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-9991C922-7241-4943-AC17-CD0DA493F203"><title>ELEMENT &lt;DevPro&gt;</title><table rowheader="firstcol" id="GUID-545CEFEE-5517-4276-96A3-0F2B56975897">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT DevPro (Whitelist, Blacklist)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;DevPro&gt; element indicates that the URIs being pre-configured
+are of DeviceProvisioning service type. It should contain at least one of
+&lt;EBlackList&gt; or &lt;EWhiteList&gt; elements mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-22CF6040-C3DE-4FE0-AA6B-72034935B404"><title>ELEMENT &lt;Whitelist&gt;</title><table rowheader="firstcol" id="GUID-68B7C3B8-2A10-4035-816B-EB931083B4B1">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT Whitelist (Record)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;Whitelist&gt; element indicates that the URIs being pre-configured
+should be whitelisted. It should contain at least one &lt;Record&gt; element
+mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-CEB0D4F4-E473-4A94-96D0-C6B3EB80B0FE"><title>ELEMENT &lt;Blacklist&gt;</title><table rowheader="firstcol" id="GUID-E23EE882-AC43-49F1-AA24-F218313843D6">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT Blacklist (Record)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;Blacklist&gt; element indicates that the URIs being pre-configured
+should be blacklisted. It should contain at least one &lt;Record&gt; element
+mandatorily.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-6121F640-4C83-45F3-8BB9-C76B5FFAEB54"><title>ELEMENT &lt;record&gt;</title><table rowheader="firstcol" id="GUID-B78160E0-D214-4FD0-9265-80F10074A3B0">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT Record ( Uri, Permission, FavouriteName)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;Record&gt; element contains the URI and its properties. It should
+contain mandatory element &lt;Uri&gt; and can optionally contain &lt;Permission&gt;
+and &lt;favouriteName&gt; elements. For each URI to be added to the URI List,
+one &lt;Record&gt; element should be created.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-CDCEBB07-0606-45A3-B910-422FF3DEDB39"><title>ELEMENT &lt;Uri&gt;</title><table rowheader="firstcol" id="GUID-D4C291FB-068C-4CEF-BA34-82F4CD84F38F">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT Uri (#PCDATA)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;Uri&gt; specifies the URI to be added to URI List. This should
+not be null. The URI format should be compliant with RFC 3986.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-A780D581-EE24-4218-841D-5F145C98113F"><title>ELEMENT &lt;Permission&gt;</title><table rowheader="firstcol" id="GUID-0893651F-0506-434F-BAA1-0CAFC8D077BC">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT Permission (#PCDATA)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;Permission&gt; specifies the access level of Uri. It should be
+set to either “EReadOnly” or “EReadWrite”. The read-only URIs cannot be deleted
+or modified. If not specified by default, the access level of Uri is set to
+“EReadWrite” .</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-F42A70DA-DF9E-491D-BD20-BA43175F979C"><title>ELEMENT &lt;FavouriteName&gt;</title><table rowheader="firstcol" id="GUID-481448D7-38A4-41DB-A81A-29EBEE408632">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.50*"/><colspec colname="col2" colwidth="1.50*"/>
+<tbody>
+<row>
+<entry><p>Element</p> </entry>
+<entry><p>&lt;!ELEMENT FavouriteName (#PCDATA)&gt; </p></entry>
+</row>
+<row>
+<entry><p>Semantics</p> </entry>
+<entry><p>&lt;FavouriteName&gt; specifies the URI’s favourite name to be added
+to the URI List. This is an optional element.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-751F057B-BF6D-5B28-A47A-3E99B25731CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-751F057B-BF6D-5B28-A47A-3E99B25731CF" xml:lang="en"><title>unpaged</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>unpaged</codeph>  </p>
+<p>Use the <codeph>unpaged</codeph> statement to specify that the executable
+is not paged. This is the same as specifying both <xref href="GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C.dita">unpagedcode</xref> and <xref href="GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482.dita">unpageddata</xref> keywords
+for an executable. </p>
+<p>You can also mark an executable as unpaged using the OBY file keyword file[[HWVD]].
+For more information about the  file[[HWVD]] keyword, refer to the ROM Tools
+Guide in the Application Development Toolkit available for download at  <xref href="http://developer.symbian.org/main/tools_and_kits/index.php" scope="external">http://developer.symbian.org</xref>.
+ </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-752E6C04-D4AC-556C-84D5-E3D9D4BB6CB4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-752E6C04-D4AC-556C-84D5-E3D9D4BB6CB4" xml:lang="en"><title>Video Renderer Concepts</title><shortdesc>This section provides additional information about the Video Renderer
+component. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7536307B-10B7-5866-8A21-9DA352DF1928.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7536307B-10B7-5866-8A21-9DA352DF1928" xml:lang="en"><title>Key
+length and location</title><shortdesc>This document describes the location and the length of text keys.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The length of descriptor and numeric keys is implicit in the type. For
+text keys, it must be explicitly defined; the length of text keys is set at
+construction time.</p>
+<p>The location of a key within an array element is defined by the offset
+of the key from the beginning of the element. The <codeph>_FOFF</codeph> macro
+can be used to define the offset value.</p>
+<p>See also:</p>
+<ul>
+<li id="GUID-647A83B0-7CDD-54C3-A95D-64EAB497F965"><p><xref href="GUID-D057148C-4D11-39D1-859C-695D2176CFDE.dita"><apiname>_FOFF</apiname></xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-75553219-500C-487F-8D7E-0FAF48CF1872" xml:lang="en"><title>Submenus</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An item in the <b>Options</b> menu can be a submenu title, leading to additional
+choices that are displayed in another pop-up window (on top of the Options
+menu pop-up window) as a submenu.</p>
+<fig id="GUID-FD9FBC91-7A38-4A26-A8C2-A478DA9D5184">
+<title>Submenu in the Options menu</title>
+<image href="GUID-5E8C5D5C-8B84-4126-A8A8-F61F7DA0AD32_d0e58746_href.png" scale="40" placement="inline"/>
+</fig>
+<p>The submenu is opened by pressing either the left softkey (<b>Select</b>),
+the Selection key, or the Arrow right key.</p>
+<p>The user can close the submenu window by pressing the Arrow left key. The
+main menu window remains open, with the focus on the submenu title.</p>
+<p>When an item in a submenu is selected, both the submenu and main menu windows
+are closed.</p>
+<p>The following rules apply to submenus:</p>
+<ul>
+<li><p>The number of items should be low, so that the user does not need to
+scroll in order to see all of them. </p></li>
+<li><p>Functions should not occur sometimes in the main level and at other
+times in a submenu. Items that are in a submenu should always be found in
+the same submenu. </p></li>
+<li><p>Only one submenu level is allowed; that is, a submenu cannot contain
+another submenu.</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-756D831F-F302-594C-8116-144358DD8442.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-756D831F-F302-594C-8116-144358DD8442" xml:lang="en"><title>Using Bluetooth Service Discovery Database</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7572B1F0-66CD-53B8-A479-4A078C9CB28A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7572B1F0-66CD-53B8-A479-4A078C9CB28A" xml:lang="en"><title>Module
+definition file</title><shortdesc>Module definition file contains the list of exported functions
+of a Polymorphic DLL.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In conventional systems, DLLs may export by name or by ordinal. Symbian
+platform only supports exporting by ordinal. Exporting by ordinal reduces
+the time taken to find the item in the DLL export table and also reduces the
+size of the DLL as names need not be stored. Ordinals are used for accessing
+the address of a function in the <keyword>DLL export table</keyword>.</p>
+<p>The only item which should be exported from a polymorphic interface DLL
+is a function which returns an instance of the object supplied by the DLL;
+this should be exported at ordinal 1.</p>
+<p>Once a user program has created an instance of the object supplied by the
+DLL, other DLL functions may be accessed using the virtual function table;
+such functions do not need to be exported.</p>
+<p>A <keyword>module definition file</keyword> (<filepath>.def</filepath>)
+is a text file which lists the <keyword>exported</keyword> functions of a
+DLL; it is used in an <keyword>ordinal build</keyword> to insert ordinal information
+into the DLL export table.</p>
+<p>It is only necessary to create this file for a polymorphic interface DLL;
+static interface DLLs use an <keyword>import library</keyword> to obtain relevant
+information about exported functions.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1" xml:lang="en"><title>ImageConv:
+Image Converter Library example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>ImageConv</filepath> demonstrates
+the Image Converter Library API. It shows how to: </p> <ul>
+<li id="GUID-55E51EE6-7A9D-53BB-91A7-08A5E9F23287-GENID-1-6-1-17-1-1-4-1-8-1-2-1-3-1"><p>read standard graphics
+formats (such as <filepath>.bmp</filepath> or <filepath>.gif</filepath>) into <codeph>CFbsBitmap</codeph> objects,
+from where they can be manipulated and rendered to the screen </p> </li>
+<li id="GUID-B01F3820-4E04-5841-92FD-400F3B0095C4-GENID-1-6-1-17-1-1-4-1-8-1-2-1-3-2"><p>save <codeph>CFbsBitmap</codeph> objects
+as files, using a number of formats </p> </li>
+<li id="GUID-56B18DF3-2125-570E-8C33-7FA334821BC1-GENID-1-6-1-17-1-1-4-1-8-1-2-1-3-3"><p>rotate, flip, and zoom
+images </p> </li>
+</ul> <p>The Image Converter API is called by an engine class <codeph>CImageHandler</codeph>.
+The UI class, <codeph>CImageAppUi</codeph>, supplies a dialog that allows
+the user to choose a particular frame from a multi-frame image (such as an
+animated .gif), and a dialog that allows the user to save the current image
+in a particular format. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-dc5f26e3-7c69-43ef-b3f1-c62469891d0d.zip" scope="external"> ImageConv.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-dc5f26e3-7c69-43ef-b3f1-c62469891d0d.html" scope="peer">browse </xref>to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap </apiname></xref>  <xref href="GUID-5D8DD5A8-1913-3B3F-A4D9-71C7834DA041.dita"><apiname>RImageTypeDescriptionArray </apiname></xref>  <xref href="GUID-A1C5A447-6A11-35ED-BF4C-27525D775CC1.dita"><apiname>TFileSaveDialogOptions </apiname></xref> <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc </apiname></xref> <xref href="GUID-7A6A6EFD-F0DB-3747-9418-A423A613250A.dita"><apiname> TFrameInfo </apiname></xref> <xref href="GUID-F87784F6-3736-30F0-8F4D-358E95553263.dita"><apiname>MImageHandlerCallback </apiname></xref>  <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs </apiname></xref> <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler </apiname></xref> <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname> CBitmapRotator </apiname></xref> </p></section>
+<section><title>Build</title> <p>The source code for this example application
+can be found in the directory: </p> <p> <filepath>examples\MultiMedia\ImageConv\</filepath>  </p> <p>It
+may be in the directory in which you installed the Symbian platform, or it
+may be in <filepath>src\common\developerlibrary\</filepath>. It includes the
+two project files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian build process</xref> describes
+how to build this application. For the emulator, an application called <filepath>ImageConv.exe</filepath> is
+created in <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath>. </p> </section>
+<section><title>Usage</title> <ol id="GUID-90CDEC0A-390D-5AD0-BBE6-D1F493B5743B-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2">
+<li id="GUID-EEA05011-4252-56CC-A26D-B271CF77876F-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-1"><p>Launch the emulator: </p> <p> <filepath>\epoc32\release\winscw\&lt;urel
+or udeb&gt;\EPOC.EXE</filepath>. </p> </li>
+<li id="GUID-3DFED3A0-2F2A-5F82-9AEE-6274E22B7C24-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-2"><p>Click on <systemoutput>IMAGECONV</systemoutput> to
+run the application. If using the <i>TechView</i> emulator, this will be in
+the <i>Extras</i> menu. </p> </li>
+<li id="GUID-DD60B267-1B5A-5DB0-988F-ABC812F90D09-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-3"><p>A collection of sample
+files of different formats is included. See the <filepath>readme.txt</filepath> in <filepath>ImageConv\samples\</filepath> for
+notes on the characteristics of each sample file. </p> </li>
+<li id="GUID-00E564F7-101B-5E70-A1F2-C19A46D9EBFE-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4"><p>Commands are given to
+the example through its File and Image menus. The commands are: </p> <ul>
+<li id="GUID-BA1E30DD-2E07-5E7E-9A10-24FB0EFA8D29-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-1"><p> Open file: opens a
+graphics file and converts it into a displayable <codeph>CFbsBitmap</codeph> object </p> </li>
+<li id="GUID-C25672B9-A1F0-568B-9199-B84D9E6F67FD-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-2"><p> Save as: saves the
+current bitmap (<codeph>CFbsBitmap</codeph> object) in a selectable format </p> </li>
+<li id="GUID-3DD92262-C30D-5FCE-9EF0-4117DC9E4BBB-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-3"><p> Zoom in and Zoom out:
+zooms the current image </p> </li>
+<li id="GUID-007F9B35-D47D-569B-B995-ADAF8F3C265E-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-4"><p> Rotate clockwise and
+Rotate                      anti-clockwise: rotates the current image </p> </li>
+<li id="GUID-F5DD31E4-0FCB-514C-A93C-B0D00A403074-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-5"><p> Mirror produces a mirror
+image </p> </li>
+<li id="GUID-4A9C8D09-424C-57C5-A344-A3208ABFB0F4-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-6"><p> Flip turns the image
+upside-down </p> </li>
+<li id="GUID-1218EE55-E825-524F-9230-C8059CD18007-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-7"><p> Refresh: reloads the
+image from file </p> </li>
+<li id="GUID-C8F94BBB-E5A2-50F9-B521-1A042B7BB306-GENID-1-6-1-17-1-1-4-1-8-1-2-5-2-4-2-8"><p> Select frame: selects
+a frame from a multi-frame image </p> </li>
+</ul> </li>
+</ol> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1" xml:lang="en"><title>ImageConv:
+Image Converter Library example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>ImageConv</filepath> demonstrates
+the Image Converter Library API. It shows how to: </p> <ul>
+<li id="GUID-55E51EE6-7A9D-53BB-91A7-08A5E9F23287-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-1-3-1"><p>read standard graphics
+formats (such as <filepath>.bmp</filepath> or <filepath>.gif</filepath>) into <codeph>CFbsBitmap</codeph> objects,
+from where they can be manipulated and rendered to the screen </p> </li>
+<li id="GUID-B01F3820-4E04-5841-92FD-400F3B0095C4-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-1-3-2"><p>save <codeph>CFbsBitmap</codeph> objects
+as files, using a number of formats </p> </li>
+<li id="GUID-56B18DF3-2125-570E-8C33-7FA334821BC1-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-1-3-3"><p>rotate, flip, and zoom
+images </p> </li>
+</ul> <p>The Image Converter API is called by an engine class <codeph>CImageHandler</codeph>.
+The UI class, <codeph>CImageAppUi</codeph>, supplies a dialog that allows
+the user to choose a particular frame from a multi-frame image (such as an
+animated .gif), and a dialog that allows the user to save the current image
+in a particular format. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-dc5f26e3-7c69-43ef-b3f1-c62469891d0d.zip" scope="external"> ImageConv.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-dc5f26e3-7c69-43ef-b3f1-c62469891d0d.html" scope="peer">browse </xref>to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap </apiname></xref>  <xref href="GUID-5D8DD5A8-1913-3B3F-A4D9-71C7834DA041.dita"><apiname>RImageTypeDescriptionArray </apiname></xref>  <xref href="GUID-A1C5A447-6A11-35ED-BF4C-27525D775CC1.dita"><apiname>TFileSaveDialogOptions </apiname></xref> <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc </apiname></xref> <xref href="GUID-7A6A6EFD-F0DB-3747-9418-A423A613250A.dita"><apiname> TFrameInfo </apiname></xref> <xref href="GUID-F87784F6-3736-30F0-8F4D-358E95553263.dita"><apiname>MImageHandlerCallback </apiname></xref>  <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs </apiname></xref> <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler </apiname></xref> <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname> CBitmapRotator </apiname></xref> </p></section>
+<section><title>Build</title> <p>The source code for this example application
+can be found in the directory: </p> <p> <filepath>examples\MultiMedia\ImageConv\</filepath>  </p> <p>It
+may be in the directory in which you installed the Symbian platform, or it
+may be in <filepath>src\common\developerlibrary\</filepath>. It includes the
+two project files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian build process</xref> describes
+how to build this application. For the emulator, an application called <filepath>ImageConv.exe</filepath> is
+created in <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath>. </p> </section>
+<section><title>Usage</title> <ol id="GUID-90CDEC0A-390D-5AD0-BBE6-D1F493B5743B-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2">
+<li id="GUID-EEA05011-4252-56CC-A26D-B271CF77876F-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-1"><p>Launch the emulator: </p> <p> <filepath>\epoc32\release\winscw\&lt;urel
+or udeb&gt;\EPOC.EXE</filepath>. </p> </li>
+<li id="GUID-3DFED3A0-2F2A-5F82-9AEE-6274E22B7C24-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-2"><p>Click on <systemoutput>IMAGECONV</systemoutput> to
+run the application. If using the <i>TechView</i> emulator, this will be in
+the <i>Extras</i> menu. </p> </li>
+<li id="GUID-DD60B267-1B5A-5DB0-988F-ABC812F90D09-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-3"><p>A collection of sample
+files of different formats is included. See the <filepath>readme.txt</filepath> in <filepath>ImageConv\samples\</filepath> for
+notes on the characteristics of each sample file. </p> </li>
+<li id="GUID-00E564F7-101B-5E70-A1F2-C19A46D9EBFE-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4"><p>Commands are given to
+the example through its File and Image menus. The commands are: </p> <ul>
+<li id="GUID-BA1E30DD-2E07-5E7E-9A10-24FB0EFA8D29-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-1"><p> Open file: opens a
+graphics file and converts it into a displayable <codeph>CFbsBitmap</codeph> object </p> </li>
+<li id="GUID-C25672B9-A1F0-568B-9199-B84D9E6F67FD-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-2"><p> Save as: saves the
+current bitmap (<codeph>CFbsBitmap</codeph> object) in a selectable format </p> </li>
+<li id="GUID-3DD92262-C30D-5FCE-9EF0-4117DC9E4BBB-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-3"><p> Zoom in and Zoom out:
+zooms the current image </p> </li>
+<li id="GUID-007F9B35-D47D-569B-B995-ADAF8F3C265E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-4"><p> Rotate clockwise and
+Rotate                      anti-clockwise: rotates the current image </p> </li>
+<li id="GUID-F5DD31E4-0FCB-514C-A93C-B0D00A403074-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-5"><p> Mirror produces a mirror
+image </p> </li>
+<li id="GUID-4A9C8D09-424C-57C5-A344-A3208ABFB0F4-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-6"><p> Flip turns the image
+upside-down </p> </li>
+<li id="GUID-1218EE55-E825-524F-9230-C8059CD18007-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-7"><p> Refresh: reloads the
+image from file </p> </li>
+<li id="GUID-C8F94BBB-E5A2-50F9-B521-1A042B7BB306-GENID-1-6-1-17-1-1-5-1-6-1-5-1-4-1-2-5-2-4-2-8"><p> Select frame: selects
+a frame from a multi-frame image </p> </li>
+</ul> </li>
+</ol> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75A70663-4DF2-4055-BF3E-8D9D8D0FEFB3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-75A70663-4DF2-4055-BF3E-8D9D8D0FEFB3" xml:lang="en"><title>Discarding
+soft notifications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The application that launched a soft notification can discard it without
+user intervention when the notification becomes obsolete. A soft notification
+should remain pending until the user has responded to it, or started using
+the corresponding application so that in effect the notification becomes obsolete.
+In that case, the application can discard the notification even though the
+user may not have actually seen it.</p>
+<p>When the user reacts to a soft notification by pressing the left softkey
+(for example Read), or selects one item of a grouped soft notification, the
+item becomes interpreted as obsolete, and will not reappear. If a soft notification
+contained more than one item, the other ones remain pending and reappear when
+the user returns to the Idle state.</p>
+<p>The user can dismiss the notification by pressing the right softkey, labeled
+Exit. After this, the notification does not reappear until new events cause
+a new notification to be created. In case of a grouped soft notification,
+all items it contains are discarded.</p>
+<p>Please note that discarding a soft notification does not mean that the
+received content is lost.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA"><title>How to troubleshoot post-linker (elf2e32) errors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The post-linker (<filepath>elf2e32.exe</filepath>) is a Symbian platform build tool that is run after the compiler and linker when a project is built. Its principal function is to create executables (DLLs and EXEs) in the particular format required by Symbian platform, known as the E32Image format. </p> <p>In ordinary use, the post-linker is called by the make files constructed by <filepath>abld</filepath> or an IDE. The options with which the tool is called depend on your settings of the project being built (i.e. as specified in the project MMP file). Error and warning messages reported by the tool can indicate a problem with these settings. This page contains some help on interpreting these messages correctly. </p> <table id="GUID-6D5D57BB-6ABC-5126-B4D0-08FF3C87568E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Error</b>  </p> </entry> <entry><p> <b>Action</b>  </p> </entry> </row> <row><entry><p>DEF File &lt;position&gt; is not in proper format </p> </entry> <entry><p> This indicates a syntax error in an input DEF file. You need to edit or regenerate the DEF file to correct this. </p> </entry> </row> <row><entry><p>ELF File &lt;file&gt; contains initialized writable data </p> </entry> <entry><p>By default, Symbian platform DLL's may not contain writable static data. You should change the project's source code to remove such items. For suggestions on alternatives, see <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static data</xref>. </p> </entry> </row> <row><entry><p>ELF File &lt;file&gt; contains uninitialized writable data </p> </entry> <entry><p>By default, Symbian platform DLL's may not contain writable static data. You should change the project's source code to remove such items. For suggestions on alternatives, see <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static data</xref>. </p> </entry> </row> <row><entry><p>Ordinal number is not in sequence </p> </entry> <entry><p>The symbol is indicates that the input DEF file has been incorrectly edited, so that the symbols are not listed in consecutive ordinal order. You need to edit or regenerate the DEF file to correct this. </p> <p>Note that if you intended to remove an export from a frozen DEF file, this should be done by using the <codeph>ABSENT</codeph> keyword, for example: </p> <codeblock id="GUID-1CE3F9C2-8758-51CB-A93E-4CA41E51B1AD" xml:space="preserve">_ZNK14Foo14BarLER12CStreamStore @ 646 NONAME ABSENT</codeblock> </entry> </row> <row><entry><p>Symbol &lt;symbol&gt; missing from ELF File </p> </entry> <entry><p>The input DEF file, specified by a MMP <codeph>deffile</codeph> statement, specifies an export that is not found in the executable. </p> <p> If no binary compatibility break was intended, you should either correct your source to export the missing symbol. If a compatibility break was intended, you should fix the DEF file. </p> <p>If you are not concerned with maintaining compatibility, use <codeph>exportunfrozen</codeph> in the project. This will stop the tool reporting this error. </p> </entry> </row> <row><entry><p>Unrecognized capability </p> </entry> <entry><p>Check that the platform security capabilities, specified by a MMP <codeph>capability</codeph> statement, are correctly spelled. <i> Symbian OS v9.0 Security Architecture</i> lists the available capabilities. </p> </entry> </row> <row><entry><p>Unsupported Target Type &lt;type&gt; </p> </entry> <entry><p>Check that the target type, specified by a MMP <codeph>targettype</codeph> statement, is correctly specified. The <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref> reference page lists the available target types. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75B0B7C7-37B7-57D1-8EAA-8303A915A9DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-75B0B7C7-37B7-57D1-8EAA-8303A915A9DD"><title>Bitmaps</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Bitmaps are handled by the <codeph>CFbsBitmap</codeph> class, which provides facilities for creating, loading and saving bitmaps, and the <codeph>TBitmapUtil</codeph> class, which provides functions that allow the user to operate on the individual bits within a bitmap. </p> <p>Each bitmap has two sizes stored with it: its twip-size—a "real-world" size used for WYSIWYG purposes, specified in twips; and its pixel-size—the actual size of the bitmap in pixels. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75C5A614-CEC1-5832-ACEA-E3C31B8A0DE8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-75C5A614-CEC1-5832-ACEA-E3C31B8A0DE8"><title>FreeType Font Rasterizer Component Overview</title><shortdesc>The FreeType Font Rasterizer is a plug-in to the Font Store. It interprets open font files and generates native Symbian bitmap font characters. It is an optional replaceable component, which means that it may be used or replaced by device creators. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The CBR package name for the FreeType Font Rasterizer component is <filepath>graphics_freetype</filepath>. </p> <section id="GUID-0DBE8CA9-9EC5-5758-9F71-6752DB4D0F34"><title>Architectural relationships</title> <p>The FreeType Font Rasterizer is an ECOM plug-in to the Font Store. </p> </section> <section><title>API summary</title> <p>No action is required to use the FreeType Rasterizer. It is provided as part of the Symbian platform, installed automatically by the Font Store at startup and has no public API. </p> <p>It is automatically used to rasterize compatible open fonts. </p> </section> </conbody><related-links><link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext> Font and Text Services Collection
+                Overview</linktext> </link> <link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext> Font and Bitmap Server
+                Component Overview </linktext> </link> <link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99"><title>Upgrading Help Files on the Secure Platform</title><shortdesc>This page describes how to upgrade help files on the secure Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-8136781B-7547-5418-843E-3136421D98E8"><p><xref href="GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99.dita#GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99/GUID-C9D24A7B-C078-5DF2-A318-4969F1C0516A">Introduction</xref>. This section is intended for a general audience. </p> </li> <li id="GUID-DDA10A20-51E7-5680-9569-F21942BBBDD7"><p><xref href="GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99.dita#GUID-75E5D15C-83F1-5A32-BFC5-B5DC10FCDB99/GUID-2B58B989-1D5E-539C-8294-08811B0A1BD4">Creating stub SIS files during a build</xref>. This section is intended for Licencees. </p> </li> </ul> <section id="GUID-C9D24A7B-C078-5DF2-A318-4969F1C0516A"><title>Introduction</title> <p>Platform Security makes replacing help files more difficult than it was in earlier, non-secure platform releases. On the secure platform, help files can be loaded only from <filepath>\resource\help\</filepath> on any drive. This directory is read-only and can only be written to by processes with very high capabilities, such as the kernel and the software installer. An exception to the rule that help files cannot be overwritten occurs when the vendor name - held in <i>stub SIS files</i> in the <filepath>\system\install\</filepath> directory on any drive - is the same as that for the previous installation. In this situation the software installer allows the upgrade. </p> <p>The only way to add a help file to a <filepath>\resource\help\</filepath> directory is to install software with the help file packaged in a SIS file. To prevent malicious code from overwriting other applications’ help files (including those of core applications stored in ROM), the software installer will not install a help file if a file with the same name already exists in the <filepath>\resource\help\</filepath> directory, on any drive (unless it is identified by the installer as a valid upgrade). </p> <p>The installer not only prevents you from overwriting another package's help files, but it also prevents you from eclipsing them. For more information, see <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita">Language-Neutral Files</xref>. </p> </section> <section id="GUID-2B58B989-1D5E-539C-8294-08811B0A1BD4"><title>Creating stub SIS files during a build</title> <p>Apart from the vendor name, a stub SIS file also contains the information needed to remove the application or file; for example, the full paths of the installed files and application components. Stub SIS files can be distinguised from normal SIS files by their size - stub SIS files are usually several hundred bytes long, much smaller than normal SIS files. </p> <p>Core applications such as Calendar and Contacts are part of the ROM, and so are never installed. To be able to upgrade them and their help files, you must first create stub SIS files for them in the <filepath>z:\system\install\</filepath> directory. </p> <p>You create SIS files from package (<filepath>.pkg</filepath>) files using the <i>makeSIS</i> utility with the <codeph>-s</codeph> flag, which excludes binaries and media from the SIS file. </p> <p>For more information, see <xref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita">Upgrading OS Components</xref>. </p> <p>Create stub SIS files as part of the build as follows: </p> <ol id="GUID-2C36E9CC-0915-59B9-B0DF-35B4CAC6DEA1"><li id="GUID-3203D7AF-D774-59BB-8C9A-AF2E3352CFCF"><p>Create a make file that calls the <codeph>makeSIS</codeph> utility (see the example, below). </p> </li> <li id="GUID-FD0DEF6E-DCAD-5C43-ACC9-0F5203019218"><p>Add the make file to the <codeph>PRJ_MMPFILES</codeph> section of the component’s <filepath>bld.inf</filepath> file. For example, adding the make file <filepath>Foo.mk</filepath>: </p> <codeblock id="GUID-0A531BD0-48B8-55E1-93A0-119E382F0A6D" xml:space="preserve">///Bld.inf 
+PRJ_MMPFILES 
+makefile Foo.mk</codeblock> </li> </ol> <p>An example make file - called <filepath>Foo.mk</filepath>, which is used to create <filepath>Foo.sis</filepath> - is shown below: </p> <codeblock id="GUID-72112C86-58FE-5DA1-94A5-6CEC3975FA94" xml:space="preserve"># Build Stub SIS file 
+      
+SISNAME=Foo 
+SRCDIR=.\ 
+         
+# Select appropriate directory and ensure it exists 
+!if "$(PLATFORM)"=="WINS" || "$(PLATFORM)"=="WINSCW" 
+TARGETDIR=$(EPOCROOT)EPOC32\RELEASE\$(PLATFORM)\$(CFG)\Z\System\Install 
+!else 
+TARGETDIR=$(EPOCROOT)EPOC32\Data\Z\System\Install 
+!endif 
+           
+$(TARGETDIR) : 
+    @perl -S emkdir.pl "$(TARGETDIR)" 
+              
+                 
+# Build stub SIS file 
+SISFILE= $(TARGETDIR)\$(SISNAME).sis 
+                       
+$(SISFILE) : $(SRCDIR)\$(SISNAME).pkg 
+    makesis -s $? $@
+                   
+do_nothing : 
+    rem do_nothing 
+                      
+# The targets invoked by abld  
+MAKMAKE : do_nothing 
+RESOURCE : $(TARGETDIR) $(SISFILE) 
+SAVESPACE : BLD 
+BLD : do_nothing 
+FREEZE : do_nothing 
+LIB : do_nothing 
+CLEANLIB : do_nothing 
+FINAL : do_nothing 
+                         
+CLEAN :  
+    erase $(SISFILE)
+                           
+RELEASABLES :  
+    @echo $(SISFILE)</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-762A665F-43D0-53ED-B698-0CBD3AC46391" xml:lang="en"><title>Font and Text
+Services Collection</title><shortdesc>The Font and Text Services Collection contains the Font Store and
+related plug-ins and the Text Rendering component. Application developers
+can select fonts from the Font Store. Device creators can create and add fonts. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<fig id="GUID-FE4F4563-FAD5-5D45-B662-61AEC3F3AFEC">
+<title>         The Font and Text Services collection</title>
+<image href="GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e375697_href.png" placement="inline"/>
+</fig>
+</conbody><related-links>
+<link href="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita"><linktext>Font and
+Bitmap Server Component</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7636F898-8390-5C32-964D-66CEA62A60F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7636F898-8390-5C32-964D-66CEA62A60F4" xml:lang="en"><title>Video Renderer
+Tutorials</title><shortdesc>This section describes how to use the Video Renderer. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-763A2636-D448-5353-9E31-F61FE7EB39DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-763A2636-D448-5353-9E31-F61FE7EB39DA" xml:lang="en"><title>Flat
+or segmented buffer?</title><shortdesc>Describes the occasions you should choose a flat buffer and when
+to choose a segmented buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The choice between using an array implemented with a flat buffer against
+using an array implemented with a segmented buffer depends on the characteristics
+of the application.</p>
+<p>Choose a flat buffer:</p>
+<ul>
+<li id="GUID-0FC7D827-EA67-598C-8DE6-91860661DA7C"><p>if efficiency in transforming
+between buffer position and memory address is very important.</p> </li>
+<li id="GUID-73802049-15D7-550A-8093-87BF3CA2E387"><p>if the re-allocations
+needed to extend the buffer are sufficiently rare that they do not cause intolerable
+amounts of data copying or heap fragmentation.</p> </li>
+<li id="GUID-2129EE71-7859-5B77-91FD-F036348C92D6"><p>if there is an upper
+bound on the size limit and can reserve sufficient room before inserting elements.</p> </li>
+</ul>
+<p>Choose a segmented buffer:</p>
+<ul>
+<li id="GUID-912802E0-C66D-56F1-9977-6B04BFD833AC"><p>to minimise the heap
+thrashing and copying that can be associated with reallocating
+a single flat buffer.</p> </li>
+<li id="GUID-CE5DB4C3-BC72-5D09-B55A-552D08CB8EF6"><p>if the performance of
+frequent insertions and deletions is a concern. This can be better with segmented
+buffers, because not all data after the insertion/deletion point needs to
+be shuffled to complete the operation.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4" xml:lang="en"><title>The native build targets</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7651FA57-4C0E-5EB6-8DB1-AAF23D39CD7C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-7651FA57-4C0E-5EB6-8DB1-AAF23D39CD7C"><title>List of Serial Communications Server Plug-ins</title><prolog><metadata><keywords/></metadata></prolog><refbody><section><p>This section provides a list of the CSYs available in Symbian OS. This section does not include Test CSYs or CSYs supplied separately to Symbian OS. </p> <p>The CSYs available with Symbian OS are modified by Device Creators before they are shipped with a device. These modifications include configuring the CSY to match the hardware ports of the device, and adding security to restrict access to some serial ports. </p> </section> <table id="GUID-06EAAD0F-B296-5E3B-9AD0-F2C9E07C7BBC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>CSY Filename</entry> <entry>Description</entry> <entry>Portname</entry> </row> </thead> <tbody><row><entry><p> <filepath>ecuart.csy</filepath>  </p> </entry> <entry><p>RS232 protocol. On devices this CSY is modified to match the number of ports and any security requirements. </p> </entry> <entry><p> <codeph>COMM</codeph>  </p> </entry> </row> <row><entry><p> <filepath>ircomm.csy</filepath>  </p> </entry> <entry><p>Infra-red protocol for legacy applications. See <xref href="GUID-397239F9-7EE8-52CF-9B37-328AE307BAA0.dita">How to Open a Port with the IrDA Protocol Module: Tutorial</xref> and <xref href="GUID-D8E59924-4E17-56AE-8F6B-07749A2FF0B8.dita">IrDA Serial</xref>. </p> </entry> <entry><p> <codeph>IrCOMM</codeph>  </p> </entry> </row> <row><entry><p> <filepath>btcomm.csy</filepath>  </p> </entry> <entry><p>Bluetooth protocol for legacy applications. See <xref href="GUID-F5B774BD-8276-530D-B3B0-209F8E3BDBFB.dita">Bluetooth CSY</xref>  </p> </entry> <entry><p> <codeph>BTCOMM</codeph>  </p> </entry> </row> <row><entry><p> <filepath>ECACM.CSY</filepath>  </p> </entry> <entry><p>USB protocol. See <xref href="GUID-48428FB5-C2D4-5DDD-BB9F-C4545C989666.dita">The ACM Server Library Overview</xref>. </p> </entry> <entry><p> <codeph>ACM</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-765A6D87-5C2C-4E79-9EA5-9F8930062ED0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-765A6D87-5C2C-4E79-9EA5-9F8930062ED0" xml:lang="en"><title>Enabling
+MHTTPDataOptimiser for a session</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You must use the <codeph>RHTTPSession::SetupHTTPDataOptimiser()</codeph> function
+of the <codeph>RHTTPSession</codeph> class to enable the <codeph>MHTTPDataOptimiser</codeph> implementation
+for a session. The following code illustrates the <codeph>RHTTPSession</codeph> class: </p>
+<codeblock id="GUID-1635E0AC-8119-5575-934F-A292D7C04D40" xml:space="preserve">class RHTTPSession 
+{
+public:
+……    
+
+RHTTPSession::SetupHTTPDataOptimiser (MHTTPDataOptimiser&amp; aHTTPOptimiser);
+
+MHTTPDataOptimiser* RHTTPSession::HTTPDataOptimiser ();
+
+};</codeblock>
+<p>For a session, if you want to prevent a transaction from using the MHTTPDataOptimiser
+implementation, see the <xref href="GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita#GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231/GUID-BF90ED54-70D7-574C-8A4D-1C74270A3883">Overriding
+the optimiser for a session</xref> section. </p>
+<p> <b>Note:</b> For more information about how to enable the <codeph>MHTTPDataOptimiser</codeph> implementation
+for a session, see the <xref href="GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita#GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231/GUID-F8AA1DE9-791E-5954-84E8-ACCBDFB8D3E3">HTTP
+Whole Message Filter example</xref> section. </p>
+<section id="GUID-A527468C-12FE-56FB-8FA2-6EF75E3B31D5"><title>Overriding
+the optimiser for a session</title> <p>By default, if the <codeph>MHTTPDataOptimiser</codeph> implementation
+is enabled for a session, it applies to all transactions within the session
+when the <codeph>MHTTPDataOptimiser</codeph> implementation is not enabled
+for individual transactions. In a scenario where you want to prevent a particular
+transaction (for which <codeph>MHTTPDataOptimiser</codeph> implementation
+is not enabled) of a session from using the <codeph>MHTTPDataOptimiser</codeph> implementation
+of the session, set the <codeph>EHTTPTransOptimiser</codeph> property with
+the value <b>EDisableHTTPTransOptimiser</b> on that transaction. </p> <p>The
+following code illustrates how to set the <codeph>EHTTPTransOptimiser</codeph> property: </p> <codeblock id="GUID-0813EB6E-29B7-56D1-9AFC-60E7EDB8AE18" xml:space="preserve">// HTTP session object
+RHTTPSession sess; 
+
+// The MHTTPDataOptimiser implementation is enabled for a session.
+sess.SetupHttpDataOptimiser(*this); 
+
+// HTTP transaction object
+RHTTPTransaction trans = sess.OpenTransactionL(const TUriC8&amp;, MHTTPTransactionCallback&amp;, RStringF);
+THTTPHdrVal disableOptimiser(sess.StringPool().StringF(HTTP::EDisableHTTPTransOptimiser,    RHTTPSession::GetTable()));
+trans.PropertySet().SetPropertyL(sess.StringPool().StringF(HTTP::EHTTPTransOptimiser,    RHTTPSession::GetTable()), disableOptimiser);
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-765F43E2-39E8-53F5-881F-593F379623CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-765F43E2-39E8-53F5-881F-593F379623CA"><title>Sending and Receiving Non-RTP Data</title><shortdesc>This topic explains how to send and receive non-RTP data packets on the RTP and RTCP sockets. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Exchanging non-RTP data on an RTP socket is one of the techniques you can use to implement NAT traversal (maintaining client-to-client network connections through Network Address Translation gateways). </p> <section id="GUID-E3E87467-E070-5F62-8191-9C08BFAC1535"><title>Sending non-RTP data</title> <p>The <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RRtpSession::SendDataL()</apiname></xref> method does not attach the RTP or RTCP header to the data. </p> <codeblock id="GUID-4EDA7A55-189D-52DF-97B0-C4E570CF6C64" xml:space="preserve">// initialise the data 
+const TInt KNonRtpBufferMaxLength = 100;
+TBuf8&lt;KNonRtpBufferMaxLength&gt; nonRtpData;
+nonRtpData.SetLength(KNonRtpBufferMaxLength);
+nonRtpData.Fill('Z');
+  
+TRequestStatus stat;
+iServer-&gt;rtpSession.SendDataL(ETrue,nonRtpData, stat);
+  
+User::WaitForRequest(stat);</codeblock> </section> <section id="GUID-22EED8DD-6D32-5F9E-89EC-667299FF87EC"><title>Receiving non-RTP data</title> <p>By default, when receiving data identified as non-RTP, the RTP stack discards it. </p> <p>To receive non-RTP data, you need to register for the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>ENonRtpDataReceived</apiname></xref> and <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>ENonRtcpDataReceived</apiname></xref> events. When you register for one of these events, the RTP stack no longer discards the non-RTP data but does not process the data either. To retrieve the data, call the following functions: </p> <ul><li id="GUID-3F0B007A-385A-5A73-9DD6-41361C187917"><p> <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>NonRtpDataL()</apiname></xref> provides the non-RTP data received by the RTP socket. </p> <codeblock id="GUID-571BA121-3E7B-50D3-BC9A-ACB5B58B0896" xml:space="preserve">
+const TDesC8&amp; des = iServer-&gt;rtpSession.NonRtpDataL();
+</codeblock> </li> <li id="GUID-A3D57B5B-E06E-5906-9A55-C339CA15AE2D"><p> <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>NonRtcpDataL()</apiname></xref> provides the non-RTP data received by the RTCP socket. </p> <codeblock id="GUID-7AABC7D1-D6B4-5C8E-A2C8-FFE72F53ED5C" xml:space="preserve">
+const TDesC8&amp; des = iServer-&gt;rtpSession.NonRtcpDataL();
+</codeblock> </li> </ul> <p>To stop receiving non-RTP data, call the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>DisableNonRtpData()</apiname></xref> method. The RTP stack cancels your registration to the non-RTP data events and discards the non-RTP packets. </p> </section> </conbody><related-links><link href="GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita"><linktext>RTP Overview</linktext> </link> <link href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita"><linktext>Creating and Managing an RTP session</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF" xml:lang="en"><title>Vendor</title><abstract><p>The PKG file supports two types of vendors:</p><ul>
+<li id="GUID-24B6C2D2-0209-5BA0-B53D-D4AD28D7A2ED"><p><xref href="GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF.dita#GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF/GUID-7D1B2EC1-809D-5ED7-A2E3-1F935FE6EA70">Localized Vendor</xref>  </p> </li>
+<li id="GUID-32BE3F7E-DCBC-5666-ABA6-7EC2012466BE"><p><xref href="GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF.dita#GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF/GUID-F371B886-47B0-5FFC-B012-290D421E7885">Non-localized Vendor</xref>  </p> </li>
+</ul></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-7D1B2EC1-809D-5ED7-A2E3-1F935FE6EA70"><title>Localized vendor</title> <p>Specifies
+one or more localized vendor names (corresponding to language). Localized
+vendor names are used in various installation dialogs displayed to the Symbian
+device user. </p> <p>The following is the syntax for a localized vendor statement: </p> <codeblock id="GUID-91885F78-FE15-520D-98D4-068DE9504745" xml:space="preserve">%{"Vendor-EN", ..., "Vendor-GE"}</codeblock> <p>For
+example: </p> <codeblock id="GUID-6EF918DC-B928-5B90-933D-5BBE1EEB7389" xml:space="preserve">%{"Vendor", "Vendeur", "Verkaufer"}</codeblock> </section>
+<section id="GUID-F371B886-47B0-5FFC-B012-290D421E7885"><title>Non-localized
+vendor</title> <p>Specifies a single non-localized (global) vendor name. This
+is used with the package UID and package name to determine whether a package
+of type <codeph>SA</codeph> is a valid upgrade. </p> <p>The following is the
+syntax for a non-localized vendor statement: </p> <codeblock id="GUID-642969C3-83FB-59BD-9DA2-D8515AA7DF7E" xml:space="preserve">:"Unique vendor name"</codeblock> <p>For
+example: </p> <codeblock id="GUID-C4D86185-6728-58F2-AF7E-3E0E38F23B6A" xml:space="preserve">:"Nokia Corporation"</codeblock> </section>
+<example><title>PKG file example</title> <p>The following code snippet illustrates
+the usage of vendor name within a PKG file. </p> <codeblock id="GUID-2C1BB0E4-8724-55D3-BA95-30D4467FDF66" xml:space="preserve">&amp;EN,FR,GE
+
+#{"Language-EN", "Langauge-FR", "Language-GE"}, (0x10000020), 1, 2, 3, TYPE=SA, NC
+
+%{"Vendor", "Vendeur", "Verkaufer"}
+:"Vendor"
+
+{"text\englishfile.txt" "text\frenchfile.txt" "text\germanfile.txt"}-"C:\private\E800005A\file.txt"</codeblock> </example>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-766F8505-4536-57A6-A788-EFCD8CCF875F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-766F8505-4536-57A6-A788-EFCD8CCF875F" xml:lang="en"><title>DBMS sharing databases</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7681734D-1291-59A3-B226-BC58403FA8A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7681734D-1291-59A3-B226-BC58403FA8A0"><title>targetpath</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>targetpath</codeph>  <varname>target-path</varname> </p> <p>Use the <codeph>targetpath</codeph> statement to specify where the project should be released.</p> <ul><li id="GUID-B7A479EF-2721-5DD4-8AC8-8EC0947880D9"><p>for non-Win32 platforms, or for Win32 platforms when no release path is specified, the target will be released to</p> <p><filepath>epoc32\release\</filepath> <varname>platform</varname> <filepath>\</filepath> <varname>variant</varname> <filepath>\</filepath> </p> </li> <li id="GUID-0B9AA53A-AAC5-5564-B8BB-73A7CC69BEAF"><p>for Win32 platforms, when a target path is specified, that path will be interpreted as a location on the <filepath>z:</filepath> drive, and the release path will therefore be</p> <p><filepath> epoc32\release\</filepath> <varname>platform</varname> <filepath>\</filepath> <varname>variant</varname> <filepath>\z\</filepath> <varname>target-path</varname> <filepath>\</filepath> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The SIP Client Resolver defines the architecture used to resolve or identify
+the target client when SIP requests are received from the default port. The
+Symbian SIP stack is implemented as a Symbian server and uses the default
+UDP and TCP port 5060 to send and receive SIP messages. Many applications
+or target clients receive SIP messages that use the default port, and the
+correct target client must be determined. </p>
+<p>The SIP Client Resolver determines the target client based on the SIP request
+and the XML-description provided by every SIP Client Resolver API implementation.
+It requests the resolved ECOM plug-in to connect to the SIP or another server
+which uses SIP. </p>
+<section><title>Architectural relationships</title> <p>The Client Resolver
+API requires the SIP Codec API and the SIP Codec API. </p> <p>The target clients
+that receive SIP requests must implement the API Client Resolver API. The
+following are the two methods in which a target client can receive SIP requests: </p> <ul>
+<li id="GUID-F3BEAD9E-744E-5154-91EC-E0B66034A8F4"><p> <b>Implement the CSIPResolvedClient
+interface and provide an XML description with their capabilities</b>  </p> <p>The
+XML description describes the supported content-types and media formats that
+use SIP headers and SDP m-lines in the ECOM resource file. Client Resolver
+framework determines the target client by comparing the incoming SIP request
+to the XML descriptions provided by the <xref href="GUID-F0E4FA44-A41C-3C6F-993E-39CED042A879.dita"><apiname>CSIPResolvedClient</apiname></xref> implementation. </p> </li>
+<li id="GUID-07B5DFE5-D376-57F7-8ACB-50BB1EF8351B"><p>Implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface
+and add Request-URIs user-part, plug-ins UID, and the client UID to the SIP
+Client Resolver mapping table in the Central Repository </p> <p>The table
+maps the user-part of the incoming SIP request’s Request-URI to the related <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> implementation’s
+UID. SIP Client Resolver framework gives the SIP request to only the plug-ins
+for which a mapping entry is found in the Central Repository. </p> </li>
+</ul> <p>This implies that every target client must provide an ECOM plug-in
+that is used by the Client Resolver Framework. The Client Resolver Framework
+uses the information in the SIP request and matches it with the XML description
+or the mapping table entry provided by the target clients. It then decides
+which target client plug-in to load. </p> </section>
+<section><title>Class structure</title> <p>SIP Client Resolver must create
+a class derived from <xref href="GUID-F0E4FA44-A41C-3C6F-993E-39CED042A879.dita"><apiname>CSIPResolvedClient</apiname></xref> or <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> to
+receive requests outside the SIP dialogs. If the target client is not running,
+it must be started to enable it to receive SIP requests. </p> <fig id="GUID-B8A796EA-6850-5695-A516-E92629BE7971">
+<image href="GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e317911_href.png" placement="inline"/>
+</fig> <p><b>CSIPResolvedClient</b> </p> <p>The target clients must implement
+the <xref href="GUID-F0E4FA44-A41C-3C6F-993E-39CED042A879.dita"><apiname>CSIPResolvedClient</apiname></xref> interface to receive SIP requests
+outside SIP dialogs and enable the client resolution mechanism. </p> <p>SIP
+uses the data provided in the ECOM resource file or, as requested by the implementation
+to decide which target client is used. </p> <p><b>CSIPResolvedClient2</b> </p> <p>The
+target clients must implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface
+to receive SIP requests outside SIP dialogs and enable the client resolution
+mechanism. </p> <p>The SIP stack uses the plug-ins that implement this interface
+as follows: </p> <ol id="GUID-E3325143-0AA4-5A60-885C-875F388EF0E3">
+<li id="GUID-816770B7-3A85-5894-9868-64BEE12FD50C"><p>If the SIP request does
+not contain the Accept-Contact-header, go to step 2. If it does, the SIP stack
+calls the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita#GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E/GUID-2C145D8C-DB4C-33C9-9CCE-193433909937"><apiname>CSIPResolvedClient2::MatchAcceptContactsL()</apiname></xref> method
+on all the plug-ins and applies the following logic: </p> <ul>
+<li id="GUID-5457D39D-DE84-5A3F-8E8B-7E79C863E118"><p>If none of the clients
+match, go to step 2. </p> </li>
+<li id="GUID-BE1A9D22-BD88-519E-AC4A-242FC6D3B098"><p>If one of the clients
+match, send the SIP request to the matching client. </p> </li>
+<li id="GUID-3A027E2A-C805-595D-B43C-28B19BC07609"><p>If more than one of
+the clients match, go to step 2. </p> </li>
+</ul> </li>
+<li id="GUID-7F822965-0220-52A8-8CAF-EACA4D87E75D"><p>If the SIP request does
+not contain the Event-header, go to step 3. If it does, SIP stack calls the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita#GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E/GUID-9DB2CFFE-09ED-367D-9C14-6917F8E3DCF4"><apiname>CSIPResolvedClient2::MatchEventL()</apiname></xref> method
+on all the plug-ins and applies the following logic: </p> <ul>
+<li id="GUID-8E85F9F9-D645-53D7-A4D8-6717951B0D1C"><p>If none of the clients
+match, go to step 3. </p> </li>
+<li id="GUID-B713BE42-D8AF-51D6-8832-D0B221CFF4D8"><p>If one of the clients
+match, send the SIP request to the matching client. </p> </li>
+<li id="GUID-93037264-2B67-5DD4-990B-9D3EEEDE6C4D"><p>If more than one of
+the clients match, go to step 3. </p> </li>
+</ul> </li>
+<li id="GUID-BFCEF7B8-4068-58E6-B960-27035A5A52D6"><p>The SIP stack calls
+the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita#GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E/GUID-9C9E49C8-602B-3C1C-B036-A176FF323A54"><apiname>CSIPResolvedClient2::MatchRequestL()</apiname></xref> method on all
+the plug-ins and applies the following logic: </p> <ul>
+<li id="GUID-86228E63-7E10-571E-B465-EB4D14E8855D"><p>If none of the clients
+match, an error response is generated. </p> </li>
+<li id="GUID-6F578483-34E7-5CFB-A565-2209FFF82D28"><p>If one of the clients
+matches, send the SIP request to the matching client. </p> </li>
+<li id="GUID-C1BD2E18-CFEB-558F-9F10-60EF6B9539E7"><p>If more than one of
+the clients match, one of the client is randomly selected and the SIP request
+is sent to it. Normally, the ROM-based clients are preferred. </p> </li>
+</ul> </li>
+</ol><p>The channel UIDs must be unique across all SIP clients. The clients
+may use UIDs assigned for the binaries. </p> </section>
+</conbody><related-links>
+<link href="GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita"><linktext>How     
+           the target client is resolved using CSIPResolvedClient</linktext>
+</link>
+<link href="GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita"><linktext>How     
+           the target client is resolved using CSIPResolvedClient2</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-768E599C-3EDA-5AC9-8D27-7C6240B0CC63.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-768E599C-3EDA-5AC9-8D27-7C6240B0CC63"><title>Serial Ports and Power Management</title><abstract><shortdesc>The power requirements of a standard serial port can be significant. This topic describes the issues that can result from this. </shortdesc> <p>The NS16550 UART, which is the standard component used for the serial ports on a PC, supplies a small 5.25V to the DTR and RTS modem control lines, which can draw up to 160mA each. The device is rated at 1W. Mobile device serial ports have to provide the same functionality, and can potentially draw a lot of power. </p> </abstract><prolog><metadata><keywords/></metadata></prolog><conbody><p>In order to conserve battery power the serial hardware is switched off until the port is actually used. To use a port a request is made to read from it or write to it. This means that even if the modem control lines have been explicitly set high (using <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-29E8C7B9-29FD-3F5B-AAEE-33E64E2D6E24"><apiname>RComm::SetSignals()</apiname></xref>), neither RTS nor DTR have been asserted when the call completes. </p> <p>A situation could arise where deadlock occurs. A deadlock can be created when a remote device plugged in to a mobile device serial port is waiting for one of the remote device's input lines to go high before asserting the remote device's outputs, and an application on the mobile device is waiting for activity at the serial port before powering the port up. </p> <p>The way to avoid this deadlock occurring is for the application to power the port up by issuing a dummy read or write request for zero bytes as soon as the port has been opened. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e46157_href.png has changed
Binary file Symbian3/SDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e52196_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7690509A-C5EA-5835-9298-11E22F49FC2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7690509A-C5EA-5835-9298-11E22F49FC2F"><title>SDP Codec String Table</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The predefined strings in the SDP Codec String Table are as shown in the following code. </p> <codeblock id="GUID-8701BF2E-179B-5AB0-848A-858A5ACF3114" xml:space="preserve">class SdpCodecStringConstants
+    {
+public:
+    enum TStrings
+        {
+        // SDP field names:
+        /** v= */
+        EVersion,
+        /** o= */
+        EOrigin,
+        /** s= */
+        ESession,
+        /** i= */
+        INFO,
+        /** u= */
+        EUROS,
+        /** e= */
+        E-MAIL,
+        /** p= */
+        PHONE,
+        /** c= */
+        CONNECTION,
+        /** b= */
+        BANDWIDTH,
+        /** z= */
+        EVZONE,
+        /** k= */
+        EKE,
+        /** a= */
+        ATTRIBUTE,
+        /** t= */
+        TIME,
+        /** r= */
+        REPEAT,
+        /** m= */
+        MEDIA,
+
+        // Predefined bandwidth modifiers:
+
+        /** CT */
+        EModifierCT,
+        /** AS */
+        EModifierAS,
+
+        // Typed time units:
+
+        /** d */
+        ETimeUnitDays,
+        /** h */
+        ETimeUnitHours,
+        /** m */
+        ETimeUnitMinutes,
+        /** s */
+        ETimeUnitSeconds,
+        /** No typed time unit defined */
+        ETimeUnitNone,
+
+        // Predefined encryption methods:
+
+        /** clear */
+        EMethodClear,
+        /** base64 */
+        EMethodBase64,
+        /** Uri */
+        EMethodUri,
+        /** prompt */
+        EMethodPrompt,
+
+        // Predefined attributes:
+
+        /** cat */
+        EAttributeCat,
+        /** keywds */
+        EAttributeKeywds,
+        /** tool */
+        EAttributeTool,
+        /** ptime */
+        EAttributePtime,
+        /** maxptime */
+        EAttributeMaxptime,
+        /** recvonly */
+        EAttributeRecvonly,
+        /** sendrecv */
+        EAttributeSendrecv,
+        /** sendonly */
+        EAttributeSendonly,
+        /** inactive */
+        EAttributeInactive,
+        /** orient */
+        EAttributeOrient,
+
+
+        /** portrait */
+        EAttributeOrientValuePortrait,
+        /** landscape */
+        EAttributeOrientValueLandscape,
+        /** seascape */
+        EAttributeOrientValueSeascape,
+
+        /** type */
+        EAttributeType,
+        /** charset */
+        EAttributeCharset,
+        /** sdplang */
+        EAttributeSdplang,
+        /** lang */
+        EAttributeLang,
+        /** framerate */
+        EAttributeFramerate,
+        /** quality */
+        EAttributeQuality,
+        /** control */
+        EAttributeControl,
+        /** range */
+        EAttributeRange,
+        /** etag */
+        EAttributeEtag,
+        /** des */
+        EAttributeDes,
+        /** curr */
+        EAttributeCurr,
+        /** conf */
+        EAttributeConf,
+
+        /** mandatory */
+        EAttributeStatusStrengthTagMandatory,
+        /** optional */
+        EAttributeStatusStrengthTagOptional,
+        /** none */
+        EAttributeStatusStrengthTagNone,
+        /** failure */
+        EAttributeStatusStrengthTagFailure,
+        /** unknown */
+        EAttributeStatusStrengthTagUnknown,
+
+        // Predefined Status type for Curr, Conf and Des attributes:
+
+        /** e2e */
+        EAttributeStatusTypeE2e,
+        /** local */
+        EAttributeStatusTypeLocal,
+        /** remote */
+        EAttributeStatusTypeRemote,
+
+        /** none */
+        EAttributeStatusDirectionTagNone,
+        /** send */
+        EAttributeStatusDirectionTagSend,
+        /** recv */
+        EAttributeStatusDirectionTagRecv,
+        /** sendrecv */
+        EAttributeStatusDirectionTagSendrecv,
+        /** mid */
+        EAttributeMid,
+        /** group */
+        EAttributeGroup,
+
+        // Predefined semantics for Group attribute:
+
+        /** LS */
+        EAttributeGroupSemanticLS,
+        /** FID */
+        EAttributeGroupSemanticFID,
+        /** SRF */
+        EAttributeGroupSemanticSRF,
+        /** rtpmap */
+        EAttributeRtpmap,
+        /** fmtp */
+        EAttributeFmtp,
+
+        // Predefined media types:
+
+        /** audio */
+        EMediaAudio,
+        /** video */
+        EMediaVideo,
+        /** application */
+        EMediaApplication,
+        /** data */
+        EMediaData,
+        /** control */
+        EMediaControl,
+        /** image */
+        EMediaImage,
+
+        // Predefined media transport protocols:
+
+        /** RTP/AVP */
+        EProtocolRtpAvp,
+        /** udp */
+        EProtocolUdp,
+        /** TCP */
+        EProtocolTcp,
+
+        // Network type:
+
+        /** IN */
+        ENetType,
+
+        // Address types:
+
+        /** IP4 */
+        EAddressTypeIP4,
+        /** IP6 */
+        EAddressType
+        };
+
+    static const TStringTable Table;
+    };
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC"><title>Starting Audio Record </title><shortdesc>This document describes how to start recording audio data. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-85C74D40-680A-53B4-B4FF-04EAF246E903"><title>Introduction</title> <p>To record audio data, do the following: </p> <ul><li id="GUID-6D97CCB8-64E9-5654-AFCB-1C78D8EB28AC"><p><xref href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita#GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC/GUID-E3F29A89-2FBC-59DC-970E-6507CF970F8A">Constructing and initializing</xref>  </p> </li> <li id="GUID-5F77CB18-512B-5C9C-A91F-4057E516ADD4"><p><xref href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita#GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC/GUID-24F9ED80-AA8D-5F74-9EFB-905BD6F9F0BC">Configuring</xref> </p> </li> </ul> <p><b>Constructing and initializing</b> </p> <p>Use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-088CC167-C46D-3A2B-BE00-D7AEB98254AE"><apiname>CMMFDevSound::NewL()</apiname></xref> method to construct a new instance of DevSound. </p> <p>After construction, use an <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> method to initialize DevSound to record audio. This method requires that you specify the DevSound observer class to handle callbacks. </p> <p>Once initialization has completed, successfully or otherwise, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-089CF9C1-92EF-3F40-8669-A5EF5C064AD4"><apiname>MDevSoundObserver::InitializeComplete()</apiname></xref> function. </p> <p><b>Configuring</b> </p> <p>The following settings can be configured before or during recording: </p> <ul><li id="GUID-CB735E74-53A2-54C5-94B6-FC9CA95B0B66"><p>To set the gain of the recording device to a specific value, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-039E5508-8205-31FA-9D9B-37E1753F2018"><apiname>CMMFDevSound::SetGain()</apiname></xref> function. The gain can be set to any value from 0 to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-60B1493B-90E8-3E26-B744-7FD95DB0E910"><apiname>CMMFDevSound::MaxGain()</apiname></xref>. </p> </li> <li id="GUID-99B40B9A-3C39-5607-AD8F-E30A004AFD6C"><p>To set the microphone gain balance, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-F36461AE-6774-3E13-9BED-E871789895AB"><apiname>CMMFDevSound::SetRecordBalanceL()</apiname></xref> function. This function has two parameters: </p> <ul><li id="GUID-DA8BB066-587A-56C5-B8F9-A9030F917D6C"><p> <codeph>aLeftPercentage</codeph> - the left microphone gain percentage. </p> </li> <li id="GUID-90A89BE3-5485-526D-8BF8-334BDF73F026"><p> <codeph>aRightPercentage</codeph> - the right microphone gain percentage. </p> </li> </ul> </li> <li id="GUID-37000BA6-D486-595C-A8D8-00B092DC8229"><p>To set the priority setting for this instance of DevSound to access the audio device, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1B3B1694-EED8-3B33-B424-C48DDAFBE75A"><apiname>CMMFDevSound::SetPrioritySettings()</apiname></xref> method. Priority settings are used by the Audio Policy component to resolve multiple requests to access the audio hardware. </p> </li> </ul> </section> <section><title>Procedure</title> <ul id="GUID-54ADBD8A-7482-543F-BD5D-85F234CEEB93"><li id="GUID-9A5E2779-ED37-576C-BF8A-CCF53351CB18"><p>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-ECC978D1-B45A-35E4-9A40-F285152023FE"><apiname>CMMFDevSound::RecordInitL()</apiname></xref> function to start audio recording. </p> <p>Once started, audio data is recorded incrementally into a buffer. When there is data in the buffer, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C6E50479-4E8F-33EE-B298-C5D8DE7E3879"><apiname>CMMFDevSound::RecordData()</apiname></xref> method to record the data: </p> <p>Once the buffer is filled with recorded data, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-0E4EB9DB-B802-3CE0-979A-F41767BFD017"><apiname>MDevSoundObserver::BufferToBeEmptied()</apiname></xref> function. When the recorded data has been read from the buffer, again use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C6E50479-4E8F-33EE-B298-C5D8DE7E3879"><apiname>CMMFDevSound::RecordData()</apiname></xref> method. The client must accept audio data through the buffers at a sufficient rate to avoid buffer overflow. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-96B8657D-FC07-5D5C-8ADE-3B2167A9229E.dita"><linktext>Pausing and
+                Resuming Audio Record</linktext> </link> <link href="GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2.dita"><linktext>Stopping Audio
+                Record</linktext> </link> <link href="GUID-D0CD890F-36DB-5265-B2C1-8D632EAF736B.dita"><linktext>Retrieving Audio
+                Record Samples</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-4-1-6-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-4-1-6-1" xml:lang="en"><title>ICLCodec:
+Image Converter Library encoder/decoder plug-ins example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>ICLCodec</filepath> demonstrates
+how to implement encoder and decoder plug-ins for the Image Converter Library.
+A decoder converts an image in a particular format into a <codeph>CFbsBitmap</codeph> object;
+an encoder does the reverse. In the example, the Portable Network Graphics
+(PNG) format is handled. </p> <p>The program is an ECom plug-in that implements: </p> <ul>
+<li id="GUID-00BEBC6C-BA4A-566E-9BD3-1FABD8893EB2-GENID-1-6-1-17-1-1-4-1-6-1-2-1-4-1"><p>the decoder plug-in
+interface <codeph>CImageDecoderPlugin</codeph> by the class <codeph>CPngDecoder</codeph>  </p> </li>
+<li id="GUID-2A0C0279-6FF9-52CE-9FB6-240388D09D3A-GENID-1-6-1-17-1-1-4-1-6-1-2-1-4-2"><p>the decoder data reader
+interface <codeph>CImageReadCodec</codeph> by the class <codeph>CPngReadCodec</codeph>  </p> </li>
+<li id="GUID-278BB038-B821-5F66-9F90-3A9376E5C877-GENID-1-6-1-17-1-1-4-1-6-1-2-1-4-3"><p>the encoder plug-in
+interface <codeph>CImageEncoderPlugin</codeph> by the class <codeph>CPngEncoder</codeph>  </p> </li>
+<li id="GUID-69489E88-46A1-568B-BCBE-120583098AB3-GENID-1-6-1-17-1-1-4-1-6-1-2-1-4-4"><p>the encoder data writer
+interface <codeph>CImageWriteCodec</codeph> by the class <codeph>CPngWriteCodec</codeph>  </p> </li>
+</ul> <p>The PNG format allows data to be stored in a number of different
+scanline formats (colour/grey-scale depths), so specialist classes are provided
+to read and write these formats. Scanline reader classes are derived from <codeph>CPngReadSubCodec</codeph>;
+writer classes from <codeph>CPngWriteSubCodec</codeph>. </p> </section>
+<section id="GUID-DD75174A-EEA8-560F-A50A-AFED3C0E9824-GENID-1-6-1-17-1-1-4-1-6-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-09d45210-89f2-4567-b9d0-6f8ed872f2d2.zip" scope="external"> ICLCodec.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-09d45210-89f2-4567-b9d0-6f8ed872f2d2.html" scope="peer">browse </xref>to view the example code. </p> </section>
+<section><title>Class summary</title><p><xref href="GUID-50E4F0D6-5740-3B75-813B-4E043916AA90.dita"><apiname>CImageDecoderPlugin </apiname></xref> <xref href="GUID-2A8A815B-6661-3AC6-BB77-118F1197821D.dita"><apiname>CImageReadCodec </apiname></xref>  <xref href="GUID-2AA4DBE7-3483-3DA1-8CF0-8C165C8E6498.dita"><apiname>CImageEncoderPlugin </apiname></xref> <xref href="GUID-AAED9439-CBDE-3002-AD2E-D63F76680875.dita"><apiname> CImageWriteCodec </apiname></xref> </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-76D01385-17CD-5F9A-B3B5-88D77773AA8E-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1" xml:lang="en"><title>ICLCodec:
+Image Converter Library encoder/decoder plug-ins example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>ICLCodec</filepath> demonstrates
+how to implement encoder and decoder plug-ins for the Image Converter Library.
+A decoder converts an image in a particular format into a <codeph>CFbsBitmap</codeph> object;
+an encoder does the reverse. In the example, the Portable Network Graphics
+(PNG) format is handled. </p> <p>The program is an ECom plug-in that implements: </p> <ul>
+<li id="GUID-00BEBC6C-BA4A-566E-9BD3-1FABD8893EB2-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1-2-1-4-1"><p>the decoder plug-in
+interface <codeph>CImageDecoderPlugin</codeph> by the class <codeph>CPngDecoder</codeph>  </p> </li>
+<li id="GUID-2A0C0279-6FF9-52CE-9FB6-240388D09D3A-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1-2-1-4-2"><p>the decoder data reader
+interface <codeph>CImageReadCodec</codeph> by the class <codeph>CPngReadCodec</codeph>  </p> </li>
+<li id="GUID-278BB038-B821-5F66-9F90-3A9376E5C877-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1-2-1-4-3"><p>the encoder plug-in
+interface <codeph>CImageEncoderPlugin</codeph> by the class <codeph>CPngEncoder</codeph>  </p> </li>
+<li id="GUID-69489E88-46A1-568B-BCBE-120583098AB3-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1-2-1-4-4"><p>the encoder data writer
+interface <codeph>CImageWriteCodec</codeph> by the class <codeph>CPngWriteCodec</codeph>  </p> </li>
+</ul> <p>The PNG format allows data to be stored in a number of different
+scanline formats (colour/grey-scale depths), so specialist classes are provided
+to read and write these formats. Scanline reader classes are derived from <codeph>CPngReadSubCodec</codeph>;
+writer classes from <codeph>CPngWriteSubCodec</codeph>. </p> </section>
+<section id="GUID-DD75174A-EEA8-560F-A50A-AFED3C0E9824-GENID-1-6-1-17-1-1-5-1-6-1-5-1-5-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-09d45210-89f2-4567-b9d0-6f8ed872f2d2.zip" scope="external"> ICLCodec.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-09d45210-89f2-4567-b9d0-6f8ed872f2d2.html" scope="peer">browse </xref>to view the example code. </p> </section>
+<section><title>Class summary</title><p><xref href="GUID-50E4F0D6-5740-3B75-813B-4E043916AA90.dita"><apiname>CImageDecoderPlugin </apiname></xref> <xref href="GUID-2A8A815B-6661-3AC6-BB77-118F1197821D.dita"><apiname>CImageReadCodec </apiname></xref>  <xref href="GUID-2AA4DBE7-3483-3DA1-8CF0-8C165C8E6498.dita"><apiname>CImageEncoderPlugin </apiname></xref> <xref href="GUID-AAED9439-CBDE-3002-AD2E-D63F76680875.dita"><apiname> CImageWriteCodec </apiname></xref> </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-76D1438E-445E-5864-BA9D-27BC61D72C1B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-76D1438E-445E-5864-BA9D-27BC61D72C1B" xml:lang="en"><title>How
+to use CleanupClosePushL()</title><shortdesc>The CleanupClosePushL() templated function constructs and pushes
+a TCleanupItem onto the cleanup stack.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>CleanupClosePushL()</codeph> templated function constructs
+and pushes a <codeph>TCleanupItem</codeph> onto the cleanup stack. When <codeph>CleanupStack::PopAndDestroy()</codeph> is
+called, the <codeph>Close()</codeph> member function of the object encapsulated
+by the <codeph>TCleanupItem</codeph> is called.</p>
+<codeblock id="GUID-78CAEA8F-8A04-5A57-837F-18D6019EFB7A" xml:space="preserve">...
+RTestTwo two;
+CleanupClosePushL(two);
+...
+CleanupStack::PopAndDestroy();
+...</codeblock>
+<p>The <codeph>TCleanupItem</codeph> object encapsulates a reference to the <codeph>RTestTwo</codeph> object;
+the cleanup operation is the static function <codeph>Close()</codeph> of the
+templated class <codeph>CleanupClose&lt;class         T&gt;</codeph>. This is
+implemented by simply calling the <codeph>Close()</codeph> member function
+of <codeph>RTestTwo</codeph>. This means that <codeph>RTestTwo</codeph> must
+define or inherit a member function <codeph>Close()</codeph> which performs
+whatever clean up is required.</p>
+<section id="GUID-CEDA4BF3-8D2D-4EFD-BEE3-D8CAC2635791"><title>Note</title> <ul>
+<li id="GUID-0FAA2AE7-D7B9-52DC-A326-2B3D9183C15D"><p>In practice, this type
+of cleanup operation is commonly applied to handles which are constructed
+on the program stack.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8" xml:lang="en"><title>Navi pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The principal uses of the Navi pane are to display information about the
+current state and view, and to help the user to navigate in the application.</p>
+<fig id="GUID-1F8587D9-3439-4AD6-8687-3B4D9ADF27AB">
+<title>Navi pane</title>
+<image href="GUID-876EE000-01B7-4457-AE9C-CE56E48CFF11_d0e53301_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>Depending on the context, the Navi pane contains elements presented in
+the following table.</p>
+<table id="GUID-8F674003-C512-4E42-BB7E-85A55F93E3BB"><title>Possible Navi
+pane content</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Component</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Tabs</p><fig id="GUID-2CBA76C9-3918-40C7-889B-BC5181B34955"></fig></entry>
+<entry><p>Tabs are used to view parallel data views alternatively. Arrow indicators
+are shown at both ends of the pane when there are further tabs to scroll in
+the corresponding direction. Each tab has either a graphic or a text (or both)
+as a label. The following tab layouts can be used: <ul>
+<li><p>Two tabs</p></li>
+<li> <p>Three tabs</p></li>
+<li><p>Four tabs</p></li>
+<li><p>Two long tabs</p></li>
+<li> <p>Three long tabs (stacked so that only one is fully visible at a time)</p></li>
+</ul>The currently active tab is highlighted.</p><p>More than four tabs can
+exist simultaneously. They can be scrolled horizontally. However, as a design
+guideline, the number of tabs should be kept small (the maximum of six tabs
+is recommended), and the number should not be dynamic. See <xref href="GUID-72DE3EB1-1AF5-4157-8B99-A1C7143DAD2C.dita"></xref> for
+a description of the effect of tabs on the navigation within an application.</p></entry>
+</row>
+<row>
+<entry><p>Navigation text (icon+text)</p><fig id="GUID-B2C30B15-0343-4430-8535-05C8BAAB1B7B">
+<image href="GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e53377_href.png" scale="30" placement="inline"></image>
+</fig></entry>
+<entry><p>Navigation text is displayed in the <uicontrol>Navi pane</uicontrol> when
+similar items can be browsed by scrolling horizontally, such as dates in Calendar.
+Arrow indicators at both ends of the pane indicate the possibility to scroll.</p></entry>
+</row>
+<row>
+<entry><p>Indicators</p><fig id="GUID-89499CD6-C3C5-4BD5-964A-02ADD8A30116">
+<image href="GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e53395_href.png" scale="30" placement="inline"></image>
+</fig></entry>
+<entry><p>In editors, the <uicontrol>Navi pane</uicontrol> contains editing
+indicators. See <xref href="GUID-BA8806CC-BE7C-4927-ACF6-DA0CB6E96AAA.dita">Indicators</xref> for
+a more detailed description of the <uicontrol>Navi pane</uicontrol> indicators.</p></entry>
+</row>
+<row>
+<entry><p>Folder structure indication</p><fig id="GUID-274C1478-A141-4705-A6BF-E99703FE714D">
+<image href="GUID-257212F5-A414-4F17-A786-DB3168218139_d0e53418_href.png" scale="30" placement="inline"></image>
+</fig></entry>
+<entry><p>Opened subfolders are indicated in the <uicontrol>Navi pane</uicontrol>.</p></entry>
+</row>
+<row>
+<entry><p>Application-specific content</p></entry>
+<entry><p>When none of the above content types is suitable, the <uicontrol>Navi
+pane</uicontrol> content can be designed specifically for an application.</p></entry>
+</row>
+<row>
+<entry><p>Empty pane</p><fig id="GUID-85A80F31-F9ED-4ECE-BAF0-5A2083CE578A">
+<image href="GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e53450_href.png" scale="30" placement="inline"></image>
+</fig></entry>
+<entry><p>The <uicontrol>Navi pane</uicontrol> can be empty.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section><title>Using the navi pane in
+C++ applications</title><p>The API to use for the Navi pane is the Navigation pane API. If you use tabs in the Navi pane, the API for
+controlling the tabs is the Tabs
+API.</p><p>For the indicators in the Navi pane, use the Indicators API.</p><p>For implementation information on the Navi pane,
+see Using
+the Navigation pane API. For implementation information on tabs, see Using
+the Tabs API.</p><p>The class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknNaviDecoratorObserver.html" format="application/java-archive"><codeph>MAknNaviDecoratorObserver</codeph></xref> provides touch support for the tab arrows in the Navi pane. To set
+the observer, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNavigationDecorator.html#660e9ba08945b213aba477b7863873cc" format="application/java-archive"><codeph>CAknNavigationDecorator::SetNaviDecoratorObserver()</codeph></xref>.</p><p>To
+create a tab group in the Navi pane, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNavigationControlContainer.html#93d16329080f21bcd8428db61f177abc" format="application/java-archive"><codeph>CreateTabGroupL()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNavigationControlContainer.html" format="application/java-archive"><codeph>CAknNavigationControlContainer</codeph></xref>. This is a factory
+method for a pre-implemented navigation pane tab group control.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-770EF3C4-15D3-5A0F-B5DF-A95B27A0DB05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-770EF3C4-15D3-5A0F-B5DF-A95B27A0DB05" xml:lang="en"><title>How
+to Set Up an Outbound Proxy</title><shortdesc>This topic explains how to specify an outbound proxy server in
+the SIP Managed Profile. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To specify an outbound proxy server, call <xref href="GUID-CDE67614-1A7A-3082-8D8D-71645668A0DE.dita#GUID-CDE67614-1A7A-3082-8D8D-71645668A0DE/GUID-901C0EE4-646C-351A-9E13-8972F2CBAC8F"><apiname>CSIPManagedProfile::SetParameter()</apiname></xref> with
+the <xref href="GUID-51E1043D-5FC6-3A79-911B-816CE8043A25.dita"><apiname>KSIPOutboundProxy</apiname></xref> parameter and an IP address. </p>
+<p>You can also let the stack automatically discover the proxy address by
+setting <xref href="GUID-A46F476F-40D1-3893-952F-8E958132653F.dita"><apiname>KSIPResolveProxy</apiname></xref> to <codeph>ETrue</codeph>. </p>
+<ul>
+<li id="GUID-09F02A7F-11D3-513B-8182-CB052CB0C5AB"><p>By default or if <xref href="GUID-A46F476F-40D1-3893-952F-8E958132653F.dita"><apiname>KSIPResolveProxy</apiname></xref> is
+set to <codeph>EFalse</codeph>, <xref href="GUID-51E1043D-5FC6-3A79-911B-816CE8043A25.dita"><apiname>KSIPOutboundProxy</apiname></xref> sets
+the IP address of the outbound proxy. If the proxy server cannot be found,
+the profile enabling fails. </p> </li>
+<li id="GUID-A9051F50-43D7-549C-87EC-175F12661642"><p>If <xref href="GUID-A46F476F-40D1-3893-952F-8E958132653F.dita"><apiname>KSIPResolveProxy</apiname></xref> is
+set to <codeph>ETrue</codeph>, <xref href="GUID-51E1043D-5FC6-3A79-911B-816CE8043A25.dita"><apiname>KSIPOutboundProxy</apiname></xref> sets the
+backup IP address for the outbound proxy. The SIP stack attempts to find the
+proxy through a DHCP request and only uses the backup address if the proxy
+discovery process fails. </p> </li>
+</ul>
+<p>Backwards compatibility note: <codeph>"sip:0.0.0.0"</codeph> is a valid
+value for <codeph>KSIPOutboundProxy</codeph>. It is equivalent to requesting
+DCHP discovery without specifying a backup address. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e313765_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD" xml:lang="en"><title> Status
+pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Status pane displays status information of the current application
+and state, as well as general information about the device status, such as
+signal strength and battery charge. It occupies the top part of the screen
+and comes in two variants: extended and small. The Status pane may also be
+totally left out in certain applications or situations.</p>
+<p>Extended Status pane is a development of the earlier standard Symbian Status
+pane that contained a Context pane. Context pane cannot be used
+any more.</p>
+<note><p>The status pane used in Idle is a modified extended Status pane. </p></note>
+<p>Small Status pane can be used in cases where it is imperative to maximize
+Main pane area (for example, Browser). </p>
+<p>The Status pane contains the following subpanes:</p>
+<ul>
+<li><p><xref href="GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita">Title pane</xref></p></li>
+<li><p><xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi pane</xref></p></li>
+<li><p><xref href="GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita">Signal pane</xref></p></li>
+<li><p><xref href="GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita">Battery pane</xref></p></li>
+<li><p><xref href="GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita">Universal indicator
+pane</xref></p></li>
+<li><p>Digital clock</p></li>
+</ul>
+<fig id="GUID-CD56E0F0-76CE-4F3E-92E7-6CF2125B9767">
+<title>Status pane areas</title>
+<image href="GUID-D0FE1B14-706E-4E4D-902E-AB2B25F02464_d0e53018_href.png" scale="70" placement="inline"></image>
+</fig>
+<section id="GUID-681C48E1-D94F-4960-8BC4-DEB5C8B677DF"><title>Using
+the status pane in C++ applications</title><p>The API to use for the status
+pane is the Status
+pane API. For implementation information, see Using
+the status pane API.</p><p>Use the Status pane API for the following
+tasks:</p><ul>
+<li><p>Creating
+the status pane using a resource file</p></li>
+<li><p>Accessing
+the status pane</p></li>
+<li><p>Accessing
+controls in the status pane's subpanes</p></li>
+<li><p>Showing
+and hiding the status pane</p></li>
+<li><p>Dynamically
+changing status pane layout </p></li>
+<li><p>Observing
+status pane events</p></li>
+</ul><p>Applications can define and modify the title and navi subpanes. For
+implementation information on the subpanes in the status pane, see the following
+APIs:</p><ul>
+<li><p>Title
+pane API for the title pane</p></li>
+<li><p>Navigation
+pane API for the navi pane</p></li>
+</ul><p>Use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikStatusPaneBase_1_1TPaneCapabilities.html#bc5c25636d87ce1eaa38fc294336bdd5" format="application/java-archive"><codeph>IsAppOwned()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikStatusPaneBase_1_1TPaneCapabilities.html" format="application/java-archive"><codeph>CEikStatusPaneBase::TPaneCapabilities</codeph></xref> to test whether
+the pane is owned by the application or the server. Applications can only
+interact directly with application owned subpanes.</p><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikStatusPane.html" format="application/java-archive"><codeph>CEikStatusPane</codeph></xref> is the interface through which applications
+use the status pane. This class synchronises the status pane layout with the
+server side status pane object. To do this, the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikStatusPane.html#2d082d2526d324f9c153da7ffde9651c" format="application/java-archive"><codeph>ApplyCurrentSettingsL()</codeph></xref> must be called whenever the
+owner application switches to the foreground. </p><p><draft-comment translate="no" time="2008-05-23T11:14">Relationship
+between events/similar for entire status pane and subpanes: should be clearer
+on what's done where</draft-comment></p><p> The following options are available
+for modifying the default behavior of the status pane:  </p><ul>
+<li><p>Since the status pane is a compound control, it can be made visible
+or invisible like an other control with <codeph>CCoeControl::MakeVisible()</codeph>. <codeph>CCoeControl::MakeVisible()</codeph> can
+be called before or after the control is activated. An example of a call to
+make the status pane invisible is as follows:  </p><codeblock xml:space="preserve">CEikStatusPane* sp = StatusPane();// Gets a pointer to the status pane in the UI controller 
+StatusPane()-&gt;MakeVisible(EFalse); //make pane invisible somewhere in your code</codeblock></li>
+<li><p>Accessing and modifying controls inside the status pane.</p><p> The
+Status Pane API provides methods for accessing the status pane control and
+modifying the status pane layout.   </p><p>If you wish to modify panes within
+the status pane, you need to get a pointer to the status pane and then use
+one of the following classes and methods: </p><ul>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html" format="application/java-archive"><codeph>CAknTitlePane</codeph></xref> for
+the title subpane</p></li>
+<li><p>Methods defined by the Navigation
+pane API for accessing the navi subpane </p></li>
+<li><p>The Tabs
+API for accessing tabs in the navi subpane.</p></li>
+</ul></li>
+<li><p>Defining new resources for the status pane to override the default
+behavior</p><p> Once you have defined your resources, you may need to use
+some of the status pane APIs to achieve the desired effect in your application.
+ </p><p>For more information, see the Status
+pane API and Navigation
+pane API reference documentation.   </p></li>
+<li><p>You could also possibly derive your own classes from the available
+classes or their base classes to customize your own controls. </p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-772DFFA1-4BBC-516F-909D-47CB773760F5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-772DFFA1-4BBC-516F-909D-47CB773760F5" xml:lang="en"><title>Packages
+as type-safe descriptors</title><shortdesc>Describes the package function to transfer data in correct structure. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Descriptors are often used as the basis of data transfer within Symbian
+platform. For example, inter-thread data transfer is specified in terms of
+transferring data from a descriptor valid in the context of one thread, to
+a descriptor valid in the context of another.</p>
+<p>Data to be transferred almost always has a well defined structure and it
+is important that the receiver of the data has some guarantee that the correct
+structure has been passed. This is type safety.</p>
+<p>A package <i>is</i> a descriptor and also acts as a wrapper around it.
+It allows objects and data structures to be represented by descriptors in
+a type safe way. Objects are either contained within a modifiable buffer descriptor
+or are represented by pointer descriptors.</p>
+<p>A package class is templated, the template parameter being the type of
+the object represented. The use of a template provides the required type safety.</p>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita">Descriptor concepts</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-772F9CC3-71B3-53F0-9307-91D35B133810.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-772F9CC3-71B3-53F0-9307-91D35B133810" xml:lang="en"><title>Quick
+Start</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Application Installation framework enables packaging of the software (SIS
+files) to suit the device creators’ preferences, unpacking of files supplied
+in a compressed form, copying them to suitable locations and providing information
+about the certificates that are generated by the signing authorities. </p>
+<section id="GUID-EEE22A59-D47E-4B8C-9642-89C8B958DC17"><title>Getting started with Application Installation</title> <p>Using
+Application Installation framework, device creators can create and sign an
+installation file, generate certificates used for signing, install and preinstall
+packages, and retrieve information about certificates for analysis. They can
+also have the native software to be installed on the device. </p> <p>The
+intended audience for this guide are the device creators who are interested
+in learning the basics about Application Installation framework developed
+for the Symbian platform. </p> </section>
+<section id="GUID-9CCD945D-3DE9-4ABC-9388-D15337E3EECD"><title>Architecture</title> <p>The Application Installation framework
+consists of the following: </p> <ul>
+<li id="GUID-FB65FF51-61E6-5C99-9DB3-E98F89D363AA"><p>The <xref href="GUID-8E160B29-18C4-574B-9259-9A8E958CDA91.dita">Secure
+Software Install Tools</xref> provides PC-side tools which enable device creators
+to generate, sign and preinstall Symbian Installation files (SIS files). The
+collection also includes a set of dump tools, which enable device creators
+to extract information from SIS files, Software Install (SWI) certificate
+store and registry entries for analysis. </p> </li>
+</ul>  </section>
+<section id="GUID-820A0E85-5D09-4E55-A399-EEC14794331A"><title>Technology</title> <p>Application Installation framework uses
+the following technology: </p> <ul>
+<li id="GUID-4C76B6B5-EE17-50DF-AC21-0BB6F9B58E84"><p> <b>Open SSL Library</b>:
+Open SSL library is an open source cryptographic library that implements basic
+cryptographic functions. </p> </li>
+</ul> </section>
+<section id="GUID-8B9E9233-80F7-4DE4-8E47-2BBE6E8407A8"><title>Documentation and Examples</title><p>The following section
+lists the tutorials, references and examples to use Application Installation:
+ </p><p><b>Tutorials</b></p><ul>
+<li><p><xref href="GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita">MakeKeys Tutorial</xref></p></li>
+<li><p><xref href="GUID-A4C26317-9F76-587E-A4B6-D94892ACF11B.dita">Secure Software
+Install SIS Tools Tutorials</xref></p></li>
+
+
+</ul><p><b>References</b></p><ul>
+<li><p><xref href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita">PKG File Format</xref></p></li>
+<li><p><xref href="GUID-100F41B4-67BE-5978-99DA-C9B6DE8760F7.dita">Secure Software
+Install SIS Tools Reference</xref></p></li>
+
+
+<li><p><xref href="GUID-1C7F6DBA-7113-5542-AEF1-179FDD980443.dita">SWI Analysis
+ToolKit Reference</xref></p></li>
+</ul><p><b>Examples</b></p><ul>
+<li><p><xref href="GUID-6E385BCC-8AD8-5CCD-9378-86127443B407.dita"> Package File
+Examples</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e189632_href.png has changed
Binary file Symbian3/SDK/Source/GUID-77459C3C-F747-4A9A-93F6-D19E518DACBB_d0e58615_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7750D4BE-9FBA-5D29-806D-B80911170ECD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7750D4BE-9FBA-5D29-806D-B80911170ECD"><title>Redraw Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <codeph>TWsRedrawEvent()</codeph> is requested by <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::RedrawReady()</apiname></xref> and, when a redraw is required, the request completes and the redraw event is available to the application through the <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::GetRedraw()</apiname></xref> function. The redraw event contains the handle of the window that must be redrawn, and the bounding rectangle of its invalid region. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> </conbody><related-links><link href="GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita"><linktext>Server-Initiated vs.
+                Application-Initiated Redrawing</linktext> </link> <link href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita"><linktext>Window Server Client-Side Events
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1"><title>How to store a compound object</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The protocol for storing a compound object follows a standard pattern. However, the design of some compound objects may force deviations from this.</p> <p>A compound object can be stored either in-line or out-of-line.</p> <p>The basic protocol for storing is the <codeph>StoreL()</codeph> function. This is true whether the object is stored in-line or out-of-line and should be prototyped as:</p> <codeblock id="GUID-CDFAF7E5-5B4A-538F-B5C9-C90474D61A3A" xml:space="preserve">TStreamId StoreL(CStreamStore&amp; aStore) const;</codeblock> <p>The function takes a reference to the store in which the stream or stream network is to be stored and returns the stream ID through which the object can be restored later.</p> <section><title>Storing components in-line</title> <p>Storing a compound object’s component objects in-line means writing all of these components to the same stream.</p> <p>In general, this is achieved by defining and implementing a <codeph>StoreL()</codeph> member function for the compound object's class.</p> <p>For example, for a class <codeph>CCompound</codeph> defined as:</p> <codeblock id="GUID-A469CECC-7125-5A84-A23A-75EABBBA88F2" xml:space="preserve">CCompound class : public CBase
+    {
+    ...
+    TInt         iDdata;
+    CComponentA* iCompA;
+    CComponentB* iCompB;
+    ...
+    }</codeblock> <p>where <codeph>CComponentA</codeph> and <codeph>CComponentB</codeph> are classes, the object's component objects can be stored in the same stream as the remainder of the component's data. The <codeph>StoreL()</codeph> implementation is:</p> <codeblock id="GUID-8FCF485C-7160-5EFE-BF41-58066948E4A9" xml:space="preserve">TStreamId CCompound::StoreL(CStreamStore&amp; aStore)
+    { 
+    RStoreWriteStream outstream;
+    TStreamId id = outstream.CreateLC(aStore); // Creates the write stream
+    ExternalizeL(outstream);                   // Externalises the object and all of its components
+    outstream.CommitL();                       // Commits the stream
+    CleanupStack::PopAndDestroy();             // Performs cleanup on the write stream object
+    return id;                                 // Returns the stream ID 
+    }</codeblock> <p><codeph>ExternalizeL()</codeph> externalises <codeph>CCompound</codeph> ’s data members and components; the implementation is:</p> <codeblock id="GUID-CB8D162A-D3D9-5055-9D39-2944FEFD86F5" xml:space="preserve">void CCompound::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    aStream &lt;&lt; iData;
+    aStream &lt;&lt; *iCompA;
+    aStream &lt;&lt; *iCompB;
+    }</codeblock> <p>The stream can be visualised as:</p> <fig id="GUID-5B3BAB7B-5CF2-5E1F-8A7D-A3A375E53EC8"><image href="GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e336549_href.png" placement="inline"/></fig> </section> <section><title>Storing components out-of-line</title> <p>Storing a compound object’s component objects out-of-line means writing all of its component objects to a different stream from that to which it, itself, is written. Each component may be written to its own stream or to its own network of streams. The main advantage of this is that it allows for deferred loading of streams.</p> <p>It is important to note that components are stored <i>before</i> the containing object.</p> <p> The following code fragment defines an example class, CCompound, having two components, <codeph>CComponentA</codeph> and <codeph>CComponentB</codeph>. The components are defined as instances of the templated class TSwizzle.</p> <codeblock id="GUID-B690B024-A3A0-57AC-B36B-4A7B2F3EAF39" xml:space="preserve">CCompound class : public CBase
+    {
+    ...
+    TInt                  iDdata;
+    TSwizzle&lt;CComponentA&gt; iCompA;
+    TSwizzle&lt;CComponentB&gt; iCompB;
+    ...
+    }</codeblock> <p>Storing is achieved by defining and implementing a <codeph>StoreL()</codeph> member function for the compound object's class. In this example, the <codeph>StoreL()</codeph> implementation is:</p> <codeblock id="GUID-E59D8C65-8AD5-55BF-B996-1D91D62F5836" xml:space="preserve">TStreamId CCompound::StoreL(CStreamStore&amp; aStore)
+    {
+    CStoreMap* map=CStoreMap::NewLC(aStore);
+    StoreComponentsL(*map);
+    RStoreWriteStream stream(*map);
+    TStreamId id=stream.CreateLC(aStore);
+    ExternalizeL(stream);
+    stream.CommitL();
+    map-&gt;Reset();
+    CleanupStack::PopAndDestroy(2);
+    return id;
+    }</codeblock> <p>The <codeph>StoreL()</codeph> function:</p> <ul><li id="GUID-0C8A4FE4-7D5E-5876-A65E-885AD0E5F76D"><p>writes the <codeph>CCompound</codeph> components to their own streams.</p> </li> <li id="GUID-0DFAD43D-8C0A-5B70-A087-13871A326317"><p>writes <codeph>CCompound</codeph> itself and its components’ stream IDs to a single stream.</p> </li> <li id="GUID-CB63A225-714E-549C-B5DD-51A41B080EB5"><p>returns the ID of the top-level stream.</p> </li> </ul> <p>This can be visualised as:</p> <fig id="GUID-038EC5C3-6C97-5B8B-A495-3C39EC459039"><image href="GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e336622_href.png" placement="inline"/></fig> <p><codeph>CCompound</codeph> ’s components are stored to their own streams by defining and implementing a <codeph>StoreComponentsL()</codeph> member function; this is prototyped as:</p> <codeblock id="GUID-CF751ACF-736F-5A04-A275-8FA3D16A9F27" xml:space="preserve">void StoreComponentsL(CStreamStore&amp; aStore,CStoreMap&amp; aMap)</codeblock> <p>and implemented as:</p> <codeblock id="GUID-69BE7DCB-6861-5BB3-84E4-CBCFFEF9C0B3" xml:space="preserve">void CCompound::StoreComponentsL(CStreamStore&amp; aStore,CStoreMap&amp; aMap)
+    {
+    TStreamId id;
+        
+    if (iCompA)
+          {
+          id = iCompA-&gt;StoreL(aStore); // store component
+          aMap.BindL(iCompA,id);       // connect the resulting stream id and component
+          }
+    if (iCompB)
+          {
+          id = iCompB-&gt;StoreL(aStore); // store component
+          aMap.BindL(iCompB,id);       // connect the resulting stream id and component
+          }
+    }</codeblock> <p>The condition: <codeph>if (iCompA)</codeph> is equivalent to: <codeph>if
+  (iCompA.IsPtr())</codeph>, and returns true only if the Swizzle represents the <codeph>CComponentA</codeph> object as a pointer. In an application where deferred loading is important, this allows for the possibility that the <codeph>CComponentA</codeph> object is not loaded when the attempt to store the <codeph>CCompound</codeph> object is made.</p> <p>Although each of <codeph>CCompound</codeph>'s components are shown stored in their own respective single streams, they may be stored into their own respective network of streams and the resulting stream IDs may be the IDs of head streams. A component can consist of further components.</p> <p><codeph>StoreComponentsL()</codeph> takes a reference to a store map, as well as the store. The store map is constructed by <codeph>StoreL()</codeph> and is used to contain the association between internal objects and stored components (represented in the store by their stream IDs). These IDs are written by <codeph>CCompound</codeph>'s <codeph>ExternalizeL()</codeph> function and is implemented:</p> <codeblock id="GUID-0ECDEF61-6CAC-5F6C-8326-53E902E5EECE" xml:space="preserve">void CCompound::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    aStream &lt;&lt; iDdata;
+    aStream &lt;&lt; iCompA;
+    aStream &lt;&lt; iCompB;
+    }</codeblock> <p>This simplicity is due to <codeph>RStoreWriteStream</codeph> behaviour. The pointers are automatically looked up in the map associated with the stream, as they are being externalised.</p> <p>The store map must be reset before destroying it because the store map’s destructor deletes any streams from the store that are still referenced in the map. This means that, should a leave occur during the storing operation, any streams that have been written are automatically cleaned up.</p> <p>It is legitimate to define the <codeph>CCompound</codeph> class without using Swizzles. If the class is defined as:</p> <codeblock id="GUID-B2185546-B4D2-5554-9FF2-37E9F7369EB4" xml:space="preserve">CCompound class : public CBase
+    {
+    ...
+    TInt         iDdata;
+    CComponentA* iCompA;
+    CComponentB* iCompB;
+    ...
+    }</codeblock> <p> then the implementations of <codeph>CCompound::StoreL()</codeph>, <codeph>CCompound::StoreComponentsL()</codeph> remain the same, but <codeph>CCompound::ExternalizeL()</codeph> has to change to:</p> <codeblock id="GUID-A8B102F4-B893-54CA-A052-0ABEBCC0240A" xml:space="preserve">void CCompound::ExternalizeL(RWriteStream&amp; aStream) const
+    {
+    aStream &lt;&lt; iDdata;
+    aStream &lt;&lt; *iCompA;
+    aStream &lt;&lt; *iCompB;
+    }</codeblock> <p> However, this makes it more difficult to implement deferred loading.</p> <p><b>See also</b> </p> <p><xref href="GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21.dita">Store map</xref> </p> <p><xref href="GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita">Swizzles and deferred loading</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859"><title>UIDs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A UID is a globally unique identifier consisting of a 32-bit number. UIDs are used throughout the Symbian platform to enable various kinds of file identification and association. </p> <p>Because UIDs are fundamental to the Symbian platform, it is important that they are used correctly when developing programs. To ensure uniqueness, it is essential that UIDs are properly allocated. Uniqueness is guaranteed by allocating UIDs centrally from a database managed by Symbian at <xref scope="external" href="https://www.symbiansigned.com">https://www.symbiansigned.com</xref>. </p> <p>For more information on using UIDs, see <xref href="GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita">How to use UIDs</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE" xml:lang="en"><title>How
+to - Multiple screens</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-FD58790A-FD0B-563A-80AD-562222865636"><title>Contents</title> <ul>
+<li id="GUID-75FA7683-5209-5FA6-A10F-F7597498C6CD"><p> <xref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita#GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE/GUID-00999729-88B9-557B-B999-B2058D63AAB9">Introduction</xref> </p> </li>
+<li id="GUID-68F833FD-7519-5FE0-AEAA-FDB7B1FCBA0C"><p> <xref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita#GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE/GUID-903F3A00-48C8-583A-92E8-B66F08998DBF">Configuration</xref> </p> </li>
+<li id="GUID-ED3A4756-E173-587B-838C-9289C1471DF9"><p> <xref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita#GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE/GUID-DA870E94-50CA-5175-B69E-39248E57EFFA">Building the ROM image</xref> </p> </li>
+<li id="GUID-C84723E9-97D6-5E74-A74B-14E4566C824C"><p> <xref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita#GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE/GUID-7B313E77-1089-5FF2-A228-9F82C1C25796">Example Code</xref> </p> </li>
+<li id="GUID-3609B180-CD0D-501B-9A45-405530FAC78F"><p> <xref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita#GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE/GUID-C9E09ADA-07D9-551C-A3D6-46CE3F70269D">Limitations</xref> </p> </li>
+</ul> </section>
+<section id="GUID-00999729-88B9-557B-B999-B2058D63AAB9"><title>Introduction</title> <p id="GUID-01F1BC97-47DD-5281-A73B-A0281BF826FB"><b>Purpose and scope</b> </p> <p>This
+document explains how an application can draw to multiple screens on a Symbian
+OS platform. It is aimed at the Symbian OS developer who is already familiar
+with creating a simple application GUI. In this document, the CONE and WSERV
+interfaces that support multiple screens are referred to.</p> </section>
+<section id="GUID-094C6D9D-317C-50E2-8440-2217082B89AC"><title>How to create
+multiple screens</title> <p id="GUID-903F3A00-48C8-583A-92E8-B66F08998DBF"><b>Configuration</b> </p> <p>The
+first screen is indexed as zero and the nth screen is indexed as n-1. The
+changes below should be made to the <codeph>wsini.ini</codeph> file which
+resides under <codeph>\epoc32\data\z\system\data</codeph>. </p> <codeblock id="GUID-BF1B0027-D28C-5AFD-8D0D-9D848FE073C0" xml:space="preserve">[screen 0]
+[screen 1]
+[screen n-1]</codeblock> <p id="GUID-DA870E94-50CA-5175-B69E-39248E57EFFA"><b>Building
+the ROM image</b> </p> <p>The secondary screen is supported through TV-OUT
+on H4 board. The H4 base port only supports landscape mode with 16 bpp resolution.
+The ROM image must be built with <codeph>-DWITH_TVOUT</codeph> as a parameter.</p> <p id="GUID-7B313E77-1089-5FF2-A228-9F82C1C25796"><b>Example Code</b> </p> <p id="GUID-3431BCF4-D0C2-5DB3-A0D2-6A245C558A9A"><b>Setup example code</b> </p> <p>The
+following code is the basis for the examples that follow.</p> <p>This is a <codeph>wsini.ini</codeph> file
+used to create two fixed screens:</p> <codeblock id="GUID-BDC24C06-7B6C-5664-B75E-62192F90A4B2" xml:space="preserve">AUTOCLEAR 1
+STARTUP \SYS\BIN\Start
+WINDOWMODE COLOR64K
+KEYCLICKPLUGIN KeyClickRef
+TRANSPARENCY
+MULTIFOCUSPOLICY
+[screen 0]
+[screen 1]</codeblock> <p>This is a class <codeph>CTRedControl</codeph>, which
+draws a rectangle on the second screen:</p> <codeblock id="GUID-A840ED6A-5339-56D3-B0EC-685A8231B425" xml:space="preserve">const TInt KSndScreenNo = 1;
+
+class CTRedControl : public CCoeControl
+     {
+public:
+    CTRedControl(){};
+    ~CTRedControl(){};
+    void ConstructL(RWindowGroup* aWinGp);
+
+private: // From CCoeControl
+    void Draw(const TRect&amp; aRect) const;
+    };
+
+void CTRedControl::ConstructL(RWindowGroup* aWinGp)
+    {    
+    CreateWindowL(aWinGp);
+    SetExtent(TPoint(20,20),TSize(100,100));
+    SetFocus(ETrue);
+    ActivateL();        
+    }
+
+void CTRedControl::Draw(const TRect&amp; aRect) const
+    {
+    CWindowGc&amp; gc=SystemGc();
+    if (IsFocused())
+        {
+        gc.SetPenColor(KRgbRed);
+        }
+          
+    gc.DrawRect(aRect);     
+    }</codeblock> <p id="GUID-D8F54A7C-3F22-59A2-9C6C-A1ACAA22AFBC"><b>Windows
+on multiple screens</b> </p> <p>Using the above example code as a basis, the
+following methods can be used to facilitate access to multiple screens:</p> <p>Class <codeph>RWsSession</codeph> provides
+the interface to query WSERV about window groups on a particular screen and
+the number of screens in the system. The application calls the function below
+to get the number of screens supported on the phone:</p> <codeblock id="GUID-C8CBEEE7-440D-5438-93F0-6B7A71F4C0CD" xml:space="preserve">iCoeEnv-&gt;WsSession().NumberOfScreens();</codeblock> <p>The class <codeph>CWsScreenDevice</codeph> provides the interface to
+query the physical limitations of the screen and set the parameters of the
+corresponding logical screen. The class <codeph>RWindowGroup</codeph> is the
+client side handle to the server side window group. A pair of screen device
+and window group is required to draw on a screen. </p> <p>CONE maintains an
+array of screen devices and window groups. The screen number is used to index
+this array to retrieve a particular window group and its corresponding screen
+device.</p> <p>The application calls <codeph>ScreenDevice()</codeph> to get
+the second screen device:</p> <codeblock id="GUID-FEF6A8DE-EE98-5E66-8890-84011B6DCD9D" xml:space="preserve">iCoeEnv-&gt;ScreenDevice(KSndScreenNo);</codeblock> <p>The
+application calls <codeph>RootWin()</codeph> to get the window group on the
+second screen:</p> <codeblock id="GUID-0376DBC0-1025-575E-8A7C-490A9580FD5F" xml:space="preserve">iCoeEnv-&gt;RootWin(KSndScreenNo);</codeblock> <p>The
+application calls <codeph>NumWindowGroups(</codeph> <codeph>)</codeph> to
+get the number of window groups with <codeph>EAllPriorities</codeph> on the
+second screen:</p> <codeblock id="GUID-992EE967-FACA-5F18-B727-85FFBDD28845" xml:space="preserve">iCoeEnv-&gt;WsSession().NumWindowGroups(KSndScreenNo,EAllPriorities);</codeblock> <p>The application creates a new list and then populates it with <codeph>WindowGroupList()</codeph> <codeph> </codeph> to
+get the list of window groups with <codeph>EAllPriorities</codeph> on the
+second screen:</p> <codeblock id="GUID-88D13DA1-95C7-5B4F-948E-A81B56A6553F" xml:space="preserve">CArrayFixFlat&lt;TInt&gt;* list = new(ELeave) CArrayFixFlat&lt;TInt&gt;(1);
+iCoeEnv-&gt;WsSession().WindowGroupList(list,KSndScreenNo,EAllPriorities);</codeblock> <p>The
+application calls <codeph>GetFocusWindowGroup()</codeph> to get the window
+group that has the keyboard focus on the second screen:</p> <codeblock id="GUID-510FD612-678F-5371-AD24-4AA9448F84C2" xml:space="preserve">iCoeEnv-&gt;WsSession().GetFocusWindowGroup(KSndScreenNo);</codeblock> <p>Each screen has a default owning window group. The application calls <codeph>GetDefaultOwningWindow()</codeph> to
+get the default owning window group on the second screen:</p> <codeblock id="GUID-CE5F2A11-614E-53FA-A2E2-6785E1AA6C39" xml:space="preserve">iCoeEnv -&gt;WsSession().GetDefaultOwningWindow(KSndScreenNo);</codeblock> <p>The application calls <codeph>GetDefModeMaxNumColors()</codeph> to get
+the maximum colour and display mode supported on the second screen:</p> <codeblock id="GUID-0B57742A-EDB8-5FA6-AD95-7E680D102893" xml:space="preserve">TInt colour, grey;
+iCoeEnv-&gt;WsSession().GetDefModeMaxNumColors(KSndScreenNo,colour,grey);</codeblock> <p>The
+application calls <codeph>GetColorModeList()</codeph> to get the list of colour
+modes supported on the second screen:</p> <codeblock id="GUID-CD614F8F-EC68-5F1A-8DB6-93D98AA5A67B" xml:space="preserve">CArrayFixFlat&lt;TInt&gt;* list = new(Eleave) CArrayFixFlat&lt;TInt&gt;(1);
+iCoeEnv -&gt;WsSession().GetColorModeList(KSndScreenNo, list);</codeblock> <p id="GUID-B6CD7117-E316-5C57-A22F-B5B63D708851"><b>Creating a control on a
+particular screen</b> </p> <p>A window group is associated with a screen device,
+which in turn is associated to a screen. A control is associated with a window
+group. Therefore a control is constructed on the second screen using the function
+below, in the control’s <codeph>ConstructL()</codeph>:</p> <codeblock id="GUID-C43130E9-74F7-5F64-A333-EB8C673636B8" xml:space="preserve">CTRedControl  redControl=new(Eleave) CTRedControl();
+redControl-&gt;ConstructL(CCoeEnv::Static()-&gt;RootWin(KSndScreenNo));</codeblock> <p id="GUID-0F5FDB1D-EF43-572F-B68F-47E47025AB45"><b>Graphics Context</b> </p> <p>The
+class <codeph>CWindowGc</codeph> provides the interface for the application’s
+window graphics context and can be activated on any window in the application.
+This means that it can be used on any screen on the phone. The function call
+below is used to find the screen device on which the graphics context was
+last activated.</p> <codeblock id="GUID-88F5AE9B-EBE1-544A-AE96-953C2FDDC8A7" xml:space="preserve">CCoeEnv::Static()-&gt;SystemGc().Device();</codeblock> <p id="GUID-D7EFBD5D-1AF3-526A-A1FF-5FC9F75E68CF"><b>Window Group Focus Policy</b> </p> <p>There
+are two focus policies supported by WSERV. The default focus policy is that
+there is only the focused window group on the focused screen receives key
+events. The new policy is that any window group can receive key events and
+can be switched on by defining the keyword <codeph>MULTIFOCUSPOLICY</codeph> in
+the <codeph>wsini.ini</codeph> file.</p> <p id="GUID-C9E09ADA-07D9-551C-A3D6-46CE3F70269D"><b>Limitations</b> </p> <p id="GUID-C16D1C3E-0326-58CB-8220-F02F2A57321E"><b>Pointer Events </b> </p> <p>The
+first screen created is also the primary screen in the system. It is important
+to note that only the primary screen can respond to pointer events. This is
+due to the fact that the kernel supports only one screen digitiser.</p> <p id="GUID-E4D55BC0-9D6A-5D6D-BCA1-8724DCB920D1"><b>Cone-Based UI</b> </p> <p>Due
+to limitations in the legacy implementation of Cone and the control sets implemented
+on top of it (for example, Eikon, Avkon or Qikon), it is nearly impossible
+to make the same application draw Cone-based UI on two different screens at
+the same time. However, a secondary screen can be used to draw non-Cone-based
+graphics (for example, a picture or PowerPoint slide-show, or a UI not using
+Cone for its widgets). If it must appear as if an application supports displaying
+itself on the secondary screen, then this can be done by moving that UI into
+a second application instance. This second instance could be a server application
+that only acts as a slave UI of the main application. In any case, that secondary
+application instance would have to set the secondary screen as its default
+screen. There are two main problems: </p> <ol id="GUID-85EC1750-E58A-5BA3-839E-D07AC1958CE0">
+<li id="GUID-67511BE4-B68A-5958-9D87-7413E2244327"><p> All controls have to
+be associated with a window, and window owning controls do not currently try
+to make sure that the window they create is associated with the screen that
+they should appear on. This means, for example, that a pop-out window created
+by a choice list widget will always appear on the application's primary screen,
+rather than on the screen on which the choice list itself is located. </p> </li>
+<li id="GUID-BB68FC89-0AA7-5AEC-8CAC-7959CB79C6B2"><p> None of the legacy
+widget implementations referencing the screen device take into consideration
+that there might be more than one screen on the device. These include <codeph>CCoeControl</codeph>'s <codeph>SetExtentToWholeScreen()</codeph>, <codeph>SetCornerAndSize()</codeph>, <codeph>AccumulatedZoom()</codeph>, <codeph>PositionRelativeToScreen()</codeph>,
+and <codeph>CEikAppUi's ClientRect()</codeph> and <codeph>ApplicationRect()</codeph>). </p> </li>
+</ol> <p>Neither of these problems can be solved currently.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-77AC5975-D36F-585F-BC0B-DC1C2357BBF2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-77AC5975-D36F-585F-BC0B-DC1C2357BBF2"><title>Detecting a Character Set (Converter)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When the encoding of a piece of text is not provided you can use the <codeph>CCnvCharacterSetConverter::AutoDetectCharSetL()</codeph> function to analyse the text. The function returns the UID for the best available character set (converter). </p> <section><title>Introduction</title> <p> <codeph>AutoDetectCharSetL() </codeph> loops through the available character sets and checks whether each character set is a plug-in. If it is, it calls the <codeph>IsInThisCharacterSetL()</codeph> function of the plug-in to get a confidence level. </p> <p>Confidence levels are in the range 0 to 100 (inclusive) where 0 means "I have no idea” and 100 means "I have total confidence that this is the correct character set”. If the confidence level is 0 the character set identifier is not defined. </p> <p>Once the entire array of character sets has been tested, the character set with the highest confidence level is returned as the character set encoding for the sample text. </p> </section> <section><title>Procedure</title> <ol id="GUID-CE269E17-F3F0-5175-BC71-C301C5D718C7"><li id="GUID-F762CFDB-62A7-57FC-BC5D-5D2B3F6A9D10"><p>Create and populate an array of available character sets. </p> <codeblock id="GUID-F7383F74-2C69-597C-8DC4-0D524734FE4A" xml:space="preserve">RFs fileServerSession;
+
+CleanupClosePushL(fileServerSession);
+
+User::LeaveIfError(fileServerSession.Connect());
+
+CCnvCharacterSetConverter* characterSetConverter=CCnvCharacterSetConverter::NewLC();
+
+CArrayFix&lt;CCnvCharacterSetConverter::SCharacterSet&gt;* arrayOfCharacterSetsAvailable = 
+    characterSetConverter-&gt; CreateArrayOfCharacterSetsAvailableLC(fileServerSession);
+...
+</codeblock> </li> <li id="GUID-8AE5385C-87CD-55CC-9F98-48060AB86425"><p>Call the <codeph>AutoDetectCharSetL()</codeph> function to get the character converter information. </p> <p>The sample text is ASCII encoded plain text. The confidence level–100 and the characterSetID are returned. </p> <codeblock id="GUID-9E8B04B3-30B6-5806-8A0E-EEBECB72E6CC" xml:space="preserve">_LIT8(KASCII, “The result I am expecting is that this is recognised as ASCII!");
+
+TInt confidenceLevel = 0;
+
+TUint characterSetID = 0;
+
+characterSetConverter-&gt;AutoDetectCharSetL (
+                                 confidenceLevel,
+                                 characterSetID,
+                                 *arrayOfCharacterSetsAvailable,
+                                 KASCII);
+...
+</codeblock> </li> </ol> <p>The value in <codeph>characterSetID</codeph> can then be passed to the <xref href="GUID-A03A0ACA-00B2-350E-8ED7-DB8C9B0D83CC.dita"><apiname>CCnvCharacterSetConverter</apiname></xref> to do the conversion. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D"><title>Examples Showing the use of the SIP Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following sections describe how to use the SIP Client API. </p> <ul><li id="GUID-C9BF535A-9B75-5133-BBC5-3341A3671126"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-6E3797D8-507F-5D7B-B601-DABCE95EC87C">SIP Client API dependent objects</xref>  </p> </li> <li id="GUID-22A2CB82-E384-5137-99E9-CE39FF248971"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-0D3FB3DF-9316-554E-AC08-62C8D33B7F5E"> Publishing the SIP contact address of a user</xref>  </p> </li> <li id="GUID-0417F827-6C56-5EE9-B1B2-FE82A757E452"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-0B246AE6-F0D1-56D4-9367-AF8678D5DB0F">Initiating a REGISTER transaction</xref>  </p> </li> <li id="GUID-A6E71991-EE51-59CD-AD38-B976F623300A"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-E1F1952C-F56A-53D8-BD7E-C39E3E2566FD">Creating a CSIPConnection instance for a different IAP</xref>  </p> </li> <li id="GUID-D3732A15-A3B2-530E-991F-8B3311677853"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-4E2849A8-36BB-5986-BA33-71E39FA5FCE7">Creating a SIP dialog while responding to the INVITE request</xref>  </p> </li> <li id="GUID-F701EF01-D87C-5665-B5B2-8AAC9A8790DD"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-9C1A5E22-7E45-5346-B266-7767161816BA">Deleting the transaction object</xref>  </p> </li> <li id="GUID-079B944B-6026-5AAF-AAD2-390476641272"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-66B8C7BF-0157-5108-BFE9-510144C0F61C">No response is sent to a received ACK</xref>  </p> </li> <li id="GUID-3C83FD0B-8040-5E36-8844-69FF156FA3A9"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-5A707F15-A679-5FE0-943D-FE246514F852">Getting the transaction timers values</xref>  </p> </li> <li id="GUID-BBC6F83A-760B-597C-B3AD-0DEBBC62EC3C"><p> <xref href="GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D.dita#GUID-77E02E43-A72A-52DC-A22B-31FABE5B658D/GUID-2436DD1E-A388-5D77-A745-22D264770D95"> Extension headers definition with the SIP Client API </xref>  </p> </li> </ul> <section id="GUID-6E3797D8-507F-5D7B-B601-DABCE95EC87C"><title>SIP Client API dependent objects</title> <p>Create <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> and <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects to use the SIP Client API: </p> <codeblock id="GUID-60B89CAD-CB12-521D-8C34-AF8DDC56495B" xml:space="preserve">iSIP = CSIP::NewL(KAppUid, *iMySIPObserver);
+iConnection = CSIPConnection::NewL(*iSIP, KIapIdentifier,*iMyConnectionObserver);
+</codeblock> </section> <section id="GUID-0D3FB3DF-9316-554E-AC08-62C8D33B7F5E"><title> Publishing the SIP contact address of a user</title> <p>Create a SIP registration to publish the SIP contact address of a user. The AOR and a contact must be registered. In this example, create <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> to automatically refresh the SIP stack when it is registered. </p> <p>In the following code, <codeph>localhost</codeph> indicates the request for the SIP stack to replace it with a local address. The <codeph>sip:user@localhost</codeph> means that the SIP stack replaces the localhost with the local IP address. An application uses <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> class to handle SIP registration. The application can also use the profile agent API for handling registration. The profile agents implement all the necessary call flows or behaviour for handling registration for both IETF and 3GPP IMS type networks. For more information about the profile agent API, see <xref href="GUID-BDD99F37-FD44-56FF-A849-015FCEE8F2D9.dita">SIP Profile Agent API</xref>. </p> <codeblock id="GUID-E80C2B5B-8FA4-5DBD-9FB0-1DB4AE851E64" xml:space="preserve">CSIPToHeader* aor = CSIPToHeader::DecodeL(_L8("sip:user@remote.registrar"));
+CleanupStack::PushL(aor);
+
+CSIPAddress* addr = CSIPAddress::DecodeL(_L8("sip:user@LOCALHOST"));
+CleanupStack::PushL(addr);
+CSIPContactHeader* contact = CSIPContactHeader::NewL(addr);
+CleanupStack::Pop(addr);
+CleanupStack::PushL(contact);
+
+CSIPRefresh* refresh = CSIPRefresh::NewLC();
+
+iRegistration = CSIPRegistrationBinding::NewL(*iConnection, aor, contact, refresh);
+
+CleanupStack::Pop(3); //refresh, contact, aor</codeblock> </section> <section id="GUID-0B246AE6-F0D1-56D4-9367-AF8678D5DB0F"><title>Initiating a REGISTER transaction </title> <p>Create a <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> object to start a <codeph>REGISTER</codeph> transaction. </p> <codeblock id="GUID-2C9251DE-298C-5E36-B601-49F33D5EA4F7" xml:space="preserve">iRegisterTransaction = iRegistration-&gt;RegisterL();</codeblock> <p>When you receive a 2xx response, the registration is active. Delete the transaction when the final response is received. </p> <codeblock id="GUID-320F575F-166F-5A4B-AFE9-EDFF6345CFB0" xml:space="preserve">void CMyConnectionObserver::IncomingResponse(CSIPClientTransaction&amp; aTransaction, CSIPRegistrationBinding&amp; aRegistration)
+    {
+    if (aRegistration.IsContextActive())
+        {
+        // Registration has succeeded
+        }
+
+    if (aTransaction.ResponseElements()-&gt;StatusCode() &gt;= 200)
+        {
+        // Final response received, transaction is no longer needed
+
+        if (aTransaction == *iRegisterTransaction)
+            {
+            delete iRegisterTransaction;
+            iRegisterTransaction = NULL;
+            }
+        }
+    }</codeblock> </section> <section id="GUID-E1F1952C-F56A-53D8-BD7E-C39E3E2566FD"><title> Creating a CSIPConnection instance for a different IAP</title> <p>An <codeph>INVITE</codeph> request is received from the network. In this example the INVITE is received through a different IAP that does not have a <codeph>CSIPConnection</codeph>. Create a <codeph>CSIPConnection</codeph> instance for this IAP. </p> <codeblock id="GUID-31AAF5A5-79B1-512B-A649-53562C9940EA" xml:space="preserve">void CMySIPObserver::IncomingRequest(TUint32 aIapId, CSIPServerTransaction* aTransaction)
+    {
+    // Create an observer for the new CSIPConnection
+    TRAPD(err, iMyOtherConnectionObserver = CMyConnectionObserver::NewL());
+    // Handle leave condition
+
+    // Create a new connection for the IAP
+    TRAP(err, iOtherConnection = CSIPConnection::NewL(*iSIP, aIapId,
+                                   *iMyOtherConnectionObserver));
+    // Handle leave condition
+
+    // Application owns the transaction
+    iInviteServerTransaction = aTransaction;
+    }</codeblock> </section> <section id="GUID-4E2849A8-36BB-5986-BA33-71E39FA5FCE7"><title>Creating a SIP dialog while responding to the INVITE request</title> <p>The INVITE request is received and the application sends a response (101-299). This creates a SIP dialog. Before sending the response, create a <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>. </p> <codeblock id="GUID-A1CD9786-DA64-5495-9F08-F4FE382C2EE9" xml:space="preserve">iInviteAssoc = CSIPInviteDialogAssoc::NewL(*iInviteServerTransaction);
+
+CSIPResponseElements* response = CSIPResponseElements::NewLC(180, SIPStrings::StringF(SipStrConsts::EPhraseRinging));
+
+iInviteServerTransaction-&gt;SendResponseL(response);
+CleanupStack::Pop(response);</codeblock> </section> <section id="GUID-9C1A5E22-7E45-5346-B266-7767161816BA"><title>Deleting the transaction object</title> <p>When the user accepts the <codeph>INVITE</codeph>, it sends a '200 response' using the same transaction object. When a 2xx response is sent to an <codeph>INVITE</codeph> transaction it enters the <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita#GUID-93256B64-49C9-37F1-9A4E-72C521759749/GUID-DF7E4DCE-1F6D-3F2A-A638-5516A733AA9D"><apiname>CSIPTransactionBase::ETerminated</apiname></xref> state. Then the transaction is deleted. </p> <codeblock id="GUID-A2CBCF0A-4E6B-58BD-AFDA-44D57F248C27" xml:space="preserve">CSIPResponseElements* response = CSIPResponseElements::NewLC(200, SIPStrings::StringF(SipStrConsts::EPhraseOk));
+            
+iInviteServerTransaction-&gt;SendResponseL(response);
+CleanupStack::Pop(response);
+
+delete iInviteServerTransaction;
+iInviteServerTransaction = NULL;</codeblock> </section> <section id="GUID-66B8C7BF-0157-5108-BFE9-510144C0F61C"><title> No response is sent to a received ACK</title> <p>When the ACK request arrives, SIP Client API creates a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and passes the transaction object to the application using the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref> of the IAP through which the ACK is received. If no response is sent to an ACK the transaction object is deleted. </p> <codeblock id="GUID-A6B15426-09EA-5C93-AF78-91D304F7A47E" xml:space="preserve">void CMyConnectionObserver::IncomingRequest(CSIPServerTransaction* aTransaction, CSIPDialog&amp; aDialog)
+    {
+    if (aTransaction.Type() == SIPStrings::StringF(SipStrConsts::EAck))
+        {
+        // Might inspect the Content part of the ACK for SDP etc.
+       // No response will be sent to an ACK
+        delete aTransaction;
+        }
+    else
+        {
+        // Handle other requests
+        }
+    }</codeblock> </section> <section id="GUID-5A707F15-A679-5FE0-943D-FE246514F852"><title>Getting the transaction timers values</title> <p>The following example code shows how to get the transaction timers values from the Central Repository (CenRep). </p> <codeblock id="GUID-6DF49D97-642A-551A-9D7B-45BE2F4050BE" xml:space="preserve">#include &lt;centralrepository.h&gt;
+#include &lt;SIPSDKCRKeys.h&gt;
+TInt timerT1 = 0;
+TInt timerT2 = 0;
+CRepository* repository = CRepository::NewLC(KCRUidSIP);
+User::LeaveIfError(repository-&gt;Get(KSIPTransactionTimerT1,timerT1));
+User::LeaveIfError(repository-&gt;Get(KSIPTransactionTimerT2,timerT2));
+CleanupStack::PopAndDestroy(repository);</codeblock> </section> <section id="GUID-2436DD1E-A388-5D77-A745-22D264770D95"><title> Extension header definitions with the SIP Client API </title> <p>The following is an example of the extension header definitions with the SIP Client API. SIP clients use Extension headers to send or receive SIP messages with methods that do not have default handling support implemented in the stack. </p> <codeblock id="GUID-C25C4DE0-AE63-55BC-8366-387E931EF611" xml:space="preserve">void CMyClass::ExtractHeadersL( CSIPMessageElements&amp; aElements )
+    {
+    const RPointerArray&lt;CSIPHeaderBase&gt;&amp; userHeaders = aElements.UserHeaders();
+    for ( TInt I = 0; I &lt; userHeaders.Count(); I++ )
+        {
+        const CSIPHeaderBase* header = userHeaders[ I ];
+        
+        // An example of a known already supported header.
+        // This can be casted to the actual class.
+        // It will be supported also in the future and does not cause SC/BC problems.
+        
+        if ( header-&gt;Name() == SIPStrings::StringF( SipStrConsts::ERAckHeader ) )
+             {
+             iRAckHeader = static_cast&lt;CSIPRAckHeader*&gt;(header-&gt;CloneL());
+             }
+         
+        // An example of a SIP header that is currently supported as an extension.
+        // The application must NOT make a static cast to CSIPExtensionHeader.
+        // Instead it must use CSIPHeaderBase::ToTextValueL and parse the result.
+        
+        RStringF extensionName = SIPStrings::Pool().OpenFStringL( L8("Extension") );
+        CleanupClosePushL( extensionName ); 
+        if ( header-&gt;Name() == extensionName )
+            {
+            HBufC8* headerValue = header-&gt;ToTextValueLC();
+            
+            // Do application specific parsing and handling for the header
+ 
+            CleanupStack::PopAndDestroy( headerValue );
+            }
+        CleanupStack::PopAndDestroy( 1 ); // extensionName
+        }
+    }
+</codeblock> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e154167_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-77ECD89F-84BB-55F1-9876-382E043F0C0D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-77ECD89F-84BB-55F1-9876-382E043F0C0D" xml:lang="en"><title>XML
+Error Handling Reference</title><shortdesc>This section describes how the different components dealing with
+XML manage error conditions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In all cases, ensure that your XML is valid and well-formed when using
+one of the parsers below. </p>
+<p> <b>libxml2 component</b>  </p>
+<p>The libxml2 C library has its own error codes and returns <codeph>NULL</codeph> pointers
+in Out-Of-Memory conditions. It also stores the last parsing error in a member
+of the global <codeph>_xmlGlobalState</codeph> structure. Access this variable
+using TLS (Thread-Local Storage). </p>
+<p>The methods of the Utilities wrapper leave when they detect an Out-Of-Memory
+condition in the libxml2 library. </p>
+<p> <b>XML DOM Engine</b>  </p>
+<p>When calling a method of the XML DOM Engine, check its return value for
+an error code. </p>
+<p>Methods that leave do so in Out-Of-Memory conditions. Methods that read
+or write files also leave on I/O errors. </p>
+<p> <b>XML DOM Engine Serialiser</b>  </p>
+<p>The serialiser does not forward all the libxml2 errors and may leave with
+the Symbian platform mechanism instead. </p>
+<p> <b>XML Framework</b>  </p>
+<p>The libxml2 SAX plugin maps the errors received from the libxml2 parser
+to parsing events. The leave mechanism only applies when the error is fatal
+for the libxml2 parser. </p>
+<p>The Expat and WBXML parser plugins use a combination of parsing events
+and leaves to handle errors. </p>
+</conbody><related-links>
+<link href="GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita"><linktext>libxml2</linktext>
+</link>
+<link href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita"><linktext>XML DOM Engine</linktext>
+</link>
+<link href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita"><linktext>XML Framework</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e96066_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7800A00C-5BD3-46FA-9D0A-9DF29A5C057E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7800A00C-5BD3-46FA-9D0A-9DF29A5C057E" xml:lang="en"><title>Specific
+header formats</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes the headers that have specific support for encoding
+or decoding using parts and parameters. Other headers not listed are encoded
+and decoded using a default mechanism that assumes the header field has a
+single part with a string value. </p>
+<section id="GUID-210B3CBF-2885-434C-A8DF-418D5A986088"><title>Accept</title> <p>This
+is a client request header. </p><codeblock id="GUID-1AB0D534-093B-5B81-A80D-D9002A5BA886" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Setting a single media range with no parameter, i.e. Accept: text/html 
+RStringF textHtml = iStrTb.OpenFStringL(_L8("text/html")); 
+CleanupClosePushL(textHtml);
+THTTPHdrVal accVal(textHtml); 
+hdr.SetFieldL(iStrTb.String(HTTP::EAccept,RHTTPSession::GetTable()), accVal); 
+CleanupStack::PopAndDestroy(&amp;textHtml);
+// Setting several media ranges with no parameters, i.e. Accept: text/html; text/vnd.wap.wml 
+RStringF textHtml = iStrTb.OpenFStringL(_L8("text/html")); 
+CleanupClosePushL(textHtml);
+RStringF textWml  = iStrTb.OpenFStringL(_L8("text/vnd.wap.wml")); 
+CleanupClosePushL(textWml);
+THTTPHdrVal accVal(textHtml);
+hdr.SetFieldL(iStrTb.String(HTTP::EAccept,RHTTPSession::GetTable()), accVal); 
+accVal.SetStr(textWml); 
+hdr.SetFieldL(iStrTb.String(HTTP::EAccept,RHTTPSession::GetTable()), accVal); 
+CleanupStack::PopAndDestroy(&amp;textHtml);
+CleanupStack::PopAndDestroy(&amp;textWml);
+// Setting a media range with a 'q' parameter,  Accept: text/html; q=0.8 
+RStringF textHtml  = iStrTb.OpenFStringL(_L8("text/html")); 
+CleanupClosePushL(textHtml);
+THTTPHdrVal accVal(textHtml); 
+THTTPHdrVal q(THTTPHdrVal::TQConv(0.8)); 
+hdr.SetFieldL(iStrTb.String(HTTP::EAccept,RHTTPSession::GetTable()), accVal, iStrTb.String(HTTP::EQ,RHTTPSession::GetTable()), q); 
+CleanupStack::PopAndDestroy(&amp;textHtml);
+// Using an accept extension,  Accept: text/html; extended=value 
+RStringF textHtml  = iStrTb.OpenFStringL(_L8("text/html")); 
+CleanupClosePushL(textHtml);
+RStringF extended  = iStrTb.OpenFStringL(_L8("extended")); 
+CleanupClosePushL(extended);
+RStringF extendVal = iStrTb.OpenFStringL(_L8("value")); 
+CleanupClosePushL(extendVal);
+
+THTTPHdrVal accVal(textHtml); 
+THTTPHdrVal extVal(extendVal); 
+
+hdr.SetFieldL(iStrTb.String(HTTP::EAccept,RHTTPSession::GetTable()), accVal, extended, extVal); 
+CleanupStack::PopAndDestroy(3); // textHtml, extended, extendVal</codeblock> 
+   </section>
+<section id="GUID-37A82EFB-820A-4BD0-BA38-F3507F709E73"><title>Accept-Charset</title><p>This is a client request header. </p><codeblock id="GUID-EE14D9C1-1EEE-56FF-91F0-2B3BB8455A65" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Setting up two accepted character sets, i.e.  Accept-Charset: us-ascii, utf-8 
+RStringF usAscii = iStrTb.OpenFStringL(_L8("us-ascii"));
+CleanupClosePushL(usAscii);
+RStringF utf8 = iStrTb.OpenFStringL(_L8("utf-8"));
+CleanupClosePushL(utf8);
+THTTPHdrVal accChSetVal(usAscii);
+hdr.SetFieldL(iStrTb.String(HTTP::EAcceptCharset,RHTTPSession::GetTable()), accChSetVal);
+// sets the first part accChSetVal.(SetStrutf8);
+hdr.SetFieldL(iStrTb.String(HTTP::EAcceptCharset,RHTTPSession::GetTable()), accChSetVal);
+// adds an additional part usAscii.Close();
+CleanupStack::PopAndDestroy(2);</codeblock></section>
+<section id="GUID-28FB5629-78CC-4229-B30D-6EF40F8E3C33"><title>Authorisation</title><p>This is a client request header. <b>Note:</b> The
+client need not set this header for most normal requests. </p><codeblock id="GUID-5D430FE4-8EE4-5537-818F-B7C9EBFC923D" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Setting an authorization credential, i.e. Authorization: Basic c3ltYmlhbjpmMXN5bmNtbA== 
+RStringF basicCred = iStrTb.OpenFStringL(_L8("c3ltYmlhbjpmMXN5bmNtbA=="));
+CleanupClosePushL(basicCred);
+THTTPHdrVal authVal(iStrTb.String(HTTP::EBasic,RHTTPSession::GetTable()));
+hdr.SetFieldL(iStrTb.String(HTTP::EAuthorization,RHTTPSession::GetTable()), authVal);
+authVal.(SetStrbasicCred);
+hdr.SetFieldL(iStrTb.String(HTTP::EAuthorization,RHTTPSession::GetTable()), authVal);
+CleanupStack::PopAndDestroy(&amp;basicCred);</codeblock></section>
+<section id="GUID-64B95F8D-3E6D-48F6-A7E1-C997C69F5C6A"><title>Connection</title><p>This is a general header, that is, it
+applies to the connection between client and server. <b>Note:</b> The client
+need not set this header for normal, persistent HTTP/1.1 requests. </p><codeblock id="GUID-96A98445-2D81-555B-A727-CA364F906F04" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Indicate that the connection is to close, i.e. Connection: close 
+THTTPHdrVal closeVal(iStrTb.String(HTTP::EClose,RHTTPSession::GetTable()));
+hdr.SetFieldL(iStrTb.String(HTTP::EConnection,RHTTPSession::GetTable()), closeVal);
+</codeblock></section>
+<section id="GUID-8F6F6A87-0C05-4635-BBCD-72B5E4AFB3CC"><title>Content-Length</title><p>This is an entity header, that is,
+it applies to the body present in a request or a response. <b>Note:</b> The
+client should not set this header for any request: it will be ignored. </p><codeblock id="GUID-58334818-7616-50EA-9862-2701610EB12D" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Set a content length of 12345, i.e. Content-Length: 12345 
+THTTPHdrVal lengthVal(12345);
+hdr.SetFieldL(iStrTb.String(HTTP::EContentLength,RHTTPSession::GetTable()), lengthVal);
+</codeblock></section>
+<section id="GUID-6639232A-25C9-4CB6-9FF3-7F1EF3D8E148"><title>Content-Type</title><p>This is an entity header, that is,
+it applies to the body present in a request or a response. </p><codeblock id="GUID-8BCE3E31-E6A6-5908-AF87-A1CA6591D223" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Set a content type of text/html, i.e. Content-Type: text/html 
+THTTPHdrVal contTypeVal(iStrTb.String(HTTP::ETextHtml,RHTTPSession::GetTable()));
+hdr.SetFieldL(iStrTb.String(HTTP::EContentType,RHTTPSession::GetTable()), contTypeVal);
+</codeblock></section>
+<section id="GUID-897C8418-2567-4739-8AFE-BE14A2FBC07D"><title>Date</title><p>This is a general header, that is, it applies
+to the connection between client and server. All three date formats specified
+in RFC2616 are supported in responses. Requests will be made using the RFC1123
+format only. </p><codeblock id="GUID-DE554314-FFAD-5807-B83E-70151BE366B0" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Set a date of 9th August 2001, time 13:45:00.000, i.e. Date: Thu, 09 Aug 2001 13:45:00 GMT 
+THTTPHdrVal dateVal(TDateTime(2001, EAugust, 8, 13, 45, 0, 0));
+// note, the day starts at 0 
+hdr.SetFieldL(iStrTb.String(HTTP::EDate,RHTTPSession::GetTable()), dateVal);
+</codeblock></section>
+<section id="GUID-D1120183-9158-44D6-B64B-A9D8263B7174"><title>Host</title><p>This is a client request header. <b>Note:</b> The
+client should not set this header for any request unless the URL is relative. </p><codeblock id="GUID-A20C80EF-185A-57EF-9F36-D547D5E458C0" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Set a host 'www.symbian.com', i.e. Host: www.symbian.com 
+_LIT8(host, "www.symbian.com");
+RStringF hostValStr = iStrTb.OpenFStringL(host);
+CleanupClosePushL(hostValStr);   
+THTTPHdrVal hostVal(hostValStr);    
+hdr.SetFieldL(hostStr, hostVal);
+CleanupStack::PopAndDestroy(&amp;hostValStr);</codeblock></section>
+<section id="GUID-8AA02D22-54A6-4250-9350-D9DE3B0E93B5"><title>Transfer-Encoding</title><p>This is a general header, that
+is, it applies to the connection between client and server. <b>Note:</b> The
+client should not set this header for any request, as it will be ignored. </p><codeblock id="GUID-868090A3-4534-54DE-8B46-B19BA4077B10" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Set the transfer encoding to be 'chunked', i.e. Transfer-Encoding: chunked 
+THTTPHdrVal xferEncVal;
+xferEncVal.SetStrF(iStrTb.StringF(HTTP::EChunked,RHTTPSession::GetTable()));
+hdr.SetFieldL(iStrTb.StringF(HTTP::ETransferEncoding,RHTTPSession::GetTable()), xferEncVal);
+</codeblock></section>
+<section id="GUID-E3C924A2-E426-496E-BFDD-BA6E85E40F09"><title>User-Agent</title><p>This is a client request header. </p> <codeblock id="GUID-987775EF-4346-57C3-84DB-4C05683DD5D8" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+// Set up a user agent with two part, i.e. User-Agent: CERN-LineMode/2.15 libwww/2.17b3 
+RStringF ua1Str = iStrP.OpenFStringL(_L8("CERN-LineMode/2.15"));
+CleanupClosePushL(ua1Str);
+RStringF ua2Str = iStrP.OpenFStringL(_L8("libwww/2.17b3"));
+CleanupClosePushL(ua2Str);
+RStringF uaStr = iStrP.StringF(HTTP::EUserAgent,RHTTPSession::GetTable());
+THTTPHdrVal uaVal(ua1Str);
+hdr.SetFieldL(uaStr, uaVal);
+// sets part 1 uaVal.SetStrF(ua2Str);
+hdr.SetFieldL(uaStr, uaVal);
+// sets part 2
+CleanupStack::PopAndDestroy(2);</codeblock></section>
+<section id="GUID-8127BB03-00A9-4815-83F8-69838862B17A"><title>WWW-Authenticate</title><p>This is a server response header. <b>Note:</b> The
+client need not read this header for most normal responses. </p> <codeblock id="GUID-5ED4C598-80E5-5514-A616-AFCA5D1D4002" xml:space="preserve">RHTTPHeaders hdr = aReq.GetHeaderCollection();
+...
+// Display realm for WWW-Authenticate header 
+RStringF wwwAuth = strP.StringF(HTTP::EWWWAuthenticate,RHTTPSession::GetTable());
+            if (fieldNameStr == wwwAuth)
+                {
+                // check the auth scheme is 'basic'
+                RStringF basic = strP.StringF(HTTP::EBasic,RHTTPSession::GetTable());
+                RStringF realm = strP.StringF(HTTP::ERealm,RHTTPSession::GetTable());
+                THTTPHdrVal realmVal;
+                if ((fieldVal.StrF() == basic) &amp;&amp; 
+                    (!hdr.GetParam(wwwAuth, realm, realmVal)))
+                    {
+                    RStringF realmValStr = strP.StringF(realmVal.StrF());
+                    fieldVal16.Copy(realmValStr.DesC());
+                    iUtils.Test().Printf(_L("Realm is: %S\n"), &amp;fieldVal16);
+                    realmValStr.Close();
+                    }
+                basic.Close();
+                realm.Close();
+                }
+            wwwAuth.Close();
+hdr.Close();</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7809407D-EDC0-5907-B932-0D5726A7ECA2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7809407D-EDC0-5907-B932-0D5726A7ECA2" xml:lang="en"><title>Simple
+encapsulation of a service provider</title><shortdesc>This document describes how to use derived active object classes
+to encapsulate services.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Some active object classes do not implement a <codeph>RunL()</codeph> function.
+Such classes are intended for derivation.</p>
+<p>For example, the general purpose <codeph>CTimer</codeph> class provides
+encapsulation of the timer services offered by the <codeph>RTimer</codeph> class,
+but provides no <codeph>RunL()</codeph> to handle their completion. To use
+the <codeph>CTimer</codeph> class, you must derive from it again and provide
+a <codeph>RunL()</codeph> function.</p>
+<p>Some asynchronous service providers may provide facilities for more than
+one request to be outstanding simultaneously. However, a single active object
+can only have one request outstanding. If all the facilities of such an asynchronous
+service provider must be used in a program, then it must be encapsulated by
+more than one active object.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C"><title>iCal and vCal Properties</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A property refers to a feature of vCalendar or iCalendar, such as time scheduling, or an action entry. The property contains values which are stored as metadata. </p> <p>The following list describes all iCalendar and vCalendar properties supported by Calendar. vCalendar properties supported by Calendar are imported and exported by AgnVersit2. This includes Symbian-specific properties. </p> <p>The list identifies each iCalendar property name, the equivalent property name supported by AgnVersit2 (usually the same), and indicates whether the property is supported by Calendar. Further details are given in the <xref href="GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C.dita#GUID-7811C33D-96D3-5001-B4D3-92BF44F39B2C/GUID-F22F83E8-9C90-505E-BA38-3B5304BD174C">Supported Properties</xref> section. </p> <table id="GUID-D9E6514C-08F1-5ED5-8A9A-A9025FB746C0"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>iCalendar properties &amp; parameters</entry> <entry>vCalendar properties &amp; parameters </entry> <entry>Supported in Calendar</entry> </row> </thead> <tbody><row><entry><p>ATTACH </p> </entry> <entry><p>ATTACH </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>FMTTYPE</i>  </p> </entry> <entry><p> <i>X-FMTTYPE</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>VALUE</i>  </p> </entry> <entry><p> <i>VALUE</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>Not supported</i>  </p> </entry> <entry><p> <i>X-FILEDATE</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>Not supported</i>  </p> </entry> <entry><p> <i>X-NAME</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>ATTENDEE </p> </entry> <entry><p>ATTENDEE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>CN</i>  </p> </entry> <entry><p> <i>X-CN</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>MAILTO</i>  </p> </entry> <entry><p> <i>MAILTO</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>PARTSTAT</i>  </p> </entry> <entry><p> <i>X-STATUS</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>ROLE</i>  </p> </entry> <entry><p> <i>X-ROLE</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>RSVP</i>  </p> </entry> <entry><p> <i>RSVP</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>SENT-BY</i>  </p> </entry> <entry><p> <i>X-SENTBY</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>Not supported</i>  </p> </entry> <entry><p> <i>EXPECT</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>CATEGORIES </p> </entry> <entry><p>CATEGORIES </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>COMPLETED </p> </entry> <entry><p>COMPLETED </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>CLASS </p> </entry> <entry><p>CLASS </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>DESCRIPTION </p> </entry> <entry><p>DESCRIPTION </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>DTEND </p> </entry> <entry><p>DTEND </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>DTSTAMP </p> </entry> <entry><p>X-SYMBIAN-DTSTAMP </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>DTSTART </p> </entry> <entry><p>DTSTART </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>DUE </p> </entry> <entry><p>DUE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>EXDATE </p> </entry> <entry><p>EXDATE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>GEO </p> </entry> <entry><p>GEO </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>LAST-MODIFIED </p> </entry> <entry><p>LAST-MODIFIED </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>LOCATION </p> </entry> <entry><p>LOCATION </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>METHOD </p> </entry> <entry><p>X-METHOD </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>PRIORITY </p> </entry> <entry><p>PRIORITY </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>RANGE </p> </entry> <entry><p>Not supported </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>RDATE </p> </entry> <entry><p>RDATE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>RECURRENCE-ID </p> </entry> <entry><p>X-RECURRENCE-ID </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>RRULE </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>BYWAY</i>  </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>BYMONTH</i>  </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>BYMONTHDAY</i>  </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>COUNT</i>  </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>FREQ</i>  </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>UNTIL</i>  </p> </entry> <entry><p>RRULE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>WKST</i>  </p> </entry> <entry><p>Not supported </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>SEQUENCE </p> </entry> <entry><p>SEQUENCE </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>STATUS </p> </entry> <entry><p>STATUS </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>SUMMARY </p> </entry> <entry><p>SUMMARY </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>TRANSP </p> </entry> <entry><p>TRANSP </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>UID </p> </entry> <entry><p>UID </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>VALARM </p> </entry> <entry><p>AALARM </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>ACTION</i>  </p> </entry> <entry><p>AALARM </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>ATTACH</i>  </p> </entry> <entry><p> <i>X-EPOCALARM</i>  </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p> <i>TRIGGER</i>  </p> </entry> <entry><p>AALARM </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>VERSION </p> </entry> <entry><p>VERSION </p> </entry> <entry><p>No </p> </entry> </row> <row><entry><p>VEVENT </p> </entry> <entry><p>VEVENT </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>VTODO </p> </entry> <entry><p>VTODO </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>VTIMEZONE </p> </entry> <entry><p>TZ and DAYLIGHT </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Not supported </p> </entry> <entry><p>X-SYMBIAN-LUID </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Not supported </p> </entry> <entry><p>X-EPOCAGENDAENTRYTYPE </p> </entry> <entry><p>Yes </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB" xml:lang="en"><title>Hello World: A minimal console application</title><shortdesc>This section describes the steps to build the Hello World project on the emulator.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+    
+    <context id="CONTEXT_860ECC705FBE48F2B9F0EDD54C40E65E"><p>The code in this section has been taken from the <filepath>Hello</filepath> example.</p><p>This example demonstrates the most basic use of STDLIB. It consists of the single source code file, <filepath>slhello.c</filepath> whose sole function, <codeph>main()</codeph> calls <codeph>printf()</codeph>.</p><p>The <filepath>Hello</filepath> example's project definition file (<filepath>Hello.mmp</filepath>) contains the following:</p><codeblock xml:space="preserve">TTARGET		hello.exe
+TARGETTYPE	exe
+UID      	0
+SOURCEPATH	.
+SOURCE		slhello.c
+SYSTEMINCLUDE	\epoc32\include\libc  \epoc32\include
+
+LIBRARY		estlib.lib euser.lib 
+STATICLIBRARY	ecrt0.lib</codeblock><note><ul id="UL_DFDA8F9623D74CA297DE7441131DB52D"><li id="LI_B1C004435F2D43C1B1FDE677EEBA847C">The import library <filepath>estlib.lib</filepath> is the C standard library.</li><li id="LI_EF2D86C46EC849CBB89C035811A0A3FA">The project also links to <filepath>ecrt0.lib</filepath>. This file provides the <codeph>E32Main()</codeph> entrypoint for a <filepath>.exe</filepath>. It also provides other services including command-line parsing, and it calls <codeph>main()</codeph>.</li><li id="LI_08D804A3357E42279398B608D9C94D63">The <codeph>SYSTEMINCLUDE</codeph> path specifies <filepath>\epoc32\include\libc\</filepath>, which is the location for STDLIB's header files.</li></ul></note>
+<p>For more information on the project specification for a <filepath>.exe</filepath> see <xref href="GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita">How to build for an EXE target</xref>.</p></context><steps id="STEPS_FDBDA20C062F4610B084E58AD673A4E1">
+      <step id="STEP_AD6C049FEF1C4BA89DEFD358291184A3"><cmd>To build <filepath>Hello</filepath> for the Emulator, run <filepath>bldmake</filepath> from the directory where the <filepath>bld.inf</filepath> file is located:</cmd>
+        
+      <stepxmp>bldmake bldfiles</stepxmp><stepresult>This creates the &lt;file&gt;abld.bat&lt;/file&gt; batch file.</stepresult></step>
+    <step id="STEP_51BCB62257004034AAEDACCDCB219974"><cmd>Use <filepath>abld</filepath> to build the project, for instance:</cmd><stepxmp>abld build wins udeb</stepxmp></step><step id="STEP_6C69AE8D4AA64378BFE1B6AE443663A4"><cmd>To run it, invoke <filepath>hello.exe</filepath></cmd></step><step id="STEP_859A8F380CF04A4E86DC4CD787724E9E"><cmd>To build <filepath>Hello</filepath> for the target machine, invoke <codeph>bldmake</codeph> and <codeph>abld</codeph>, specifying the appropriate target platform.</cmd></step><step id="STEP_155632C1EC5B47C0A513D196B947AD8F"><cmd>To install software on the target device create a <filepath>.sis</filepath> file using the Symbian Installation system. </cmd><tutorialinfo>See the <xref href="GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita">Application Installation Guide</xref></tutorialinfo></step></steps>
+    
+    
+    
+  </taskbody><related-links><link href="GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita"><linktext>How to build for an EXE target</linktext></link><link href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita"><linktext>How to use the Symbian build process</linktext></link><link href="GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita"><linktext>Application Installation Guide</linktext></link></related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE" xml:lang="en"><title>Data
+queries with multiple fields</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>It is possible to have two input fields in a Data query. An example of
+this is a user name and password query: one field is a normal alphanumeric
+editor and the other a password editor. In this case, a press of the Selection
+key moves the insertion point from the first field to the next; in the second
+field it accepts the query. The left softkey always accepts the query. The
+user can also move from one field to the other using the Arrow up and Arrow
+down keys. Note that in landscape orientation it may not be feasible to use
+a query with multiple fields and alternative solutions may be necessary, for
+example, launching one query first for user name and on pressing  Ok' another
+query is launched for password.</p>
+<fig id="GUID-047D024E-80CD-43D7-8A2C-8144C257820F">
+<title>Data query with two input fields</title>
+<image href="GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e62069_href.png" scale="40" placement="inline"/>
+</fig>
+<section><title>Using data queries with
+multiple fields in C++ applications</title><p>For implementation information,
+see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7821C498-70A2-5D3C-989A-58CEBAE9162B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7821C498-70A2-5D3C-989A-58CEBAE9162B" xml:lang="en"><title>TCP/IP</title><shortdesc>The TCP/IP component provides an IPv4 and IPv6 protocol plug-in for the Sockets Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8" xml:lang="en"><title> Reading
+from a Socket: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This partial tutorial explains the behaviour of the different functions
+available to read data from a socket. </p>
+<table id="GUID-2F5824A3-D900-5CC3-96CD-39F11D3F62DD">
+<tgroup cols="5"><colspec colname="COLSPEC1" colwidth="1.00*"/><colspec colname="col1" colwidth="1.01*"/><colspec colname="col2" colwidth="1.03*"/><colspec colname="col3" colwidth="0.99*"/><colspec colname="col4" colwidth="0.99*"/>
+<thead>
+<row>
+<entry>Type of Socket</entry>
+<entry>Type of Wait</entry>
+<entry>Must socket be connected?</entry>
+<entry>Lose Data on Overflow?</entry>
+<entry>APIs</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry morerows="2"><p>Datagram </p></entry>
+
+
+<entry morerows="1"><p>Return on first Data </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p>Yes </p> </entry>
+<entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::Recv(TDes8 &amp;aBuffer,TUint
+                someFlags,TRequestStatus &amp;aStatus)</apiname></xref>  </p> <p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::Recv(TDes8 &amp;aBuffer,TUint                 someFlags,TRequestStatus
+&amp;aStatus,TSockXfrLength &amp;aLen)</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>No -socket can be in unknown state </p> </entry>
+<entry><p>No </p> </entry>
+<entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::RecvFrom(TDes8 &amp;aBuffer,TSockAddr
+                &amp;anAddr,TUint someFlags,TRequestStatus &amp;aStatus)</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p>Wait until buffer full </p> </entry>
+<entry/>
+<entry/>
+<entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::Read(TDes8 &amp;aBuffer,TRequestStatus
+                &amp;aStatus)</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry morerows="2"><p>Stream </p></entry>
+<entry><p>Return on first Data </p> </entry>
+<entry align="justify"><p>Yes </p> </entry>
+<entry/>
+<entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::RecvOneOrMore(TDes8 &amp;aBuffer,TUint
+someFlags,TRequestStatus &amp;aStatus,TSockXfrLength &amp;aLen)</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry morerows="1"><p>Wait until buffer full </p> </entry>
+<entry align="justify"><p>Yes </p></entry>
+<entry><p>Yes </p> </entry>
+<entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::Recv(TDes8 &amp;aBuffer,TUint
+someFlags,TRequestStatus &amp;aStatus)</apiname></xref>  </p> <p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::Read(TDes8
+&amp;aBuffer,TRequestStatus &amp;aStatus)</apiname></xref>  </p> </entry>
+</row>
+<row>
+
+
+<entry/>
+<entry><p>No </p> </entry>
+<entry><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket::Recv(TDes8 &amp;aBuffer,TUint
+someFlags,TRequestStatus &amp;aStatus,TSockXfrLength &amp;aLen)</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>The following <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> functions read
+data from a socket: </p>
+<ul>
+<li id="GUID-4FB26DCD-9852-5AED-AD07-0B71BBF28325"><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname> Recv()</apiname></xref> and <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RecvFrom()</apiname></xref> each have two versions: </p> <ul>
+<li id="GUID-AAF3AE2B-47D1-5868-A0F2-E2582C6705C1"><p>A version which only
+completes when the full amount of requested data is received, or the connection
+is disconnected. </p> <p>For example <codeph>RSocket::Recv(TDes8 &amp;aDesc,
+TUint flags,                   TRequestStatus &amp;aStatus)</codeph>. </p> <p>The
+amount of data requested is specified by the <xref href="GUID-6D1A830E-F0F1-5C0F-8EEB-70922C0EF6B8.dita">maximum
+length</xref> of the descriptor which receives the data. If the amount of
+data to read is not known until run-time, use a <codeph>HBufC8</codeph> or <codeph>RBuf</codeph> descriptor. </p> <p>If
+the datagram is larger than the requested amount, the protocol plug-in (PRT)
+will truncate the datagram and return the requested amount of
+data (counted in bytes). The function will not indicate to the client that
+the data was truncated. </p> </li>
+<li id="GUID-31B36AAE-0E65-570E-84D1-C6EC2B9FDE2C"><p>A version which takes
+the <codeph>TSockXfrLength &amp;aLen</codeph> parameter and reads a datagram
+in parts. </p> <p>For example <codeph>RSocket::Recv(TDes8&amp; aDesc,TUint
+                  flags,TRequestStatus&amp; aStatus,TSockXfrLength&amp; aLen)</codeph>. </p> <p>This
+version completes with a count of the remaining bytes of the datagram in the <codeph>TSockXfrLength</codeph> parameter.
+The client can repeat the use of the function to read the remaining bytes.
+To read the bytes which remain, the client sets the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockReadContinuation</apiname></xref> flag.
+To set the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockReadContinuation</apiname></xref> flag
+the client must use the <i>binary OR</i> operator with the <i>flags</i> field.
+The bytes which remain are discarded if the client uses the function and does
+not set the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockReadContinuation</apiname></xref> flag. </p> <p>Clients
+who need to read the datagrams as a "stream" can set the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockReadContinuation</apiname></xref> flag.
+When the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockReadContinuation</apiname></xref> flag is
+set and there is no remaining data, new data is read. </p> </li>
+</ul> </li>
+<li id="GUID-9D0FEAA4-3C27-594A-B582-CE3F445ADB7D"><p> <codeph>Read()</codeph> only
+completes when the full amount of requested data is received, or the connection
+is disconnected. </p> <p>The amount of data requested is specified by the <xref href="GUID-6D1A830E-F0F1-5C0F-8EEB-70922C0EF6B8.dita">maximum length</xref> of
+the descriptor which receives the data. If the amount of data to read is not
+known until run-time, use a <codeph>HBufC8</codeph> or <codeph>RBuf</codeph> descriptor. </p> <p>If
+the datagram is larger than the requested amount, the protocol plug-in (PRT)
+will truncate the datagram and return the requested amount of data (counted
+in bytes). The function will not indicate to the client that the data was
+truncated. </p> </li>
+<li id="GUID-B31DE8AB-8F0E-5D72-97FF-2362E013E551"><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RecvOneOrMore()</apiname></xref> reads
+at least one byte of data and completes with the available data. The amount
+of data received is returned in the <codeph>TSockXfrLength</codeph> argument. </p> </li>
+<li id="GUID-9A43EC4E-F053-55DE-9024-76562A899E63"><p> <codeph>RecvFrom()</codeph> is
+designed for use when the client does not know if the socket is connected.
+If the socket is not connected, a source address is returned. </p> </li>
+<li id="GUID-DA868C8C-2165-5430-9E28-8A304423925D"><p> <codeph>Recv()</codeph>, <codeph>Read()</codeph>,
+and <codeph>RecvOneOrMore()</codeph> are designed for use with connected sockets. </p> </li>
+</ul>
+<section><title>Historical Note</title> <p>The protocol plug-in (PRT) must
+use the PRT 1.5 interface for the <codeph>TSockXfrLength</codeph> parameter
+to operate. The PRT 1.5 interface was added in Symbian OS 8.0. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7" xml:lang="en"><title>Using
+TDesC</title><shortdesc>Use TDesC for interfaces which take narrow or wide (Unicode) text,
+depending on the build variant, but does not change the data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-235E272D-6F5A-5740-8150-9698C8C8D55D"><title>Usage in a
+function interface</title> <p>An interface which needs access to either narrow
+text or wide (Unicode) text, depending on the build variant, but which does
+not need to change that data in any way, can use a <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> as
+the argument type. All build independent concrete descriptors are derived
+from <codeph>TDesC</codeph> which means that the interface can accept any
+build independent descriptor.</p> <p>The following code fragment shows the
+most common function prototype pattern.</p> <codeblock id="GUID-1FAB92F0-D8D1-51C9-B993-9F0FF93659B3" xml:space="preserve">void ClassX::foo(const TDesC&amp; anArg);</codeblock> <p>The use of <codeph>TDesC</codeph> ensures that the data cannot be modified
+through the descriptor; <codeph>const</codeph> is an extra guarantee that
+the data cannot be changed.</p> <p>If the interface is to handle explicit
+8 bit or explicit 16 bit data, regardless of the build variant, then use <codeph>TDesC8</codeph> or <codeph>TDesC16</codeph> instead.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-783D0B50-0E8A-5199-A07E-749D4A71E671"><title>Processing an Extended Inquiry Response</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial shows you how to retrieve and process the data from a Bluetooth Extended Inquiry Response (EIR). </p> <section><title>Introduction</title> <p>This tutorial shows you how to retrieve the EIR data and how to access the various types of data within it. </p> <p><b>Basic Procedure</b> </p> <p>The high level steps to access the EIR are shown here: </p> <ol id="GUID-27E2F081-EE4A-516D-8D04-29D1A4601045"><li id="GUID-2F5F1046-3335-53CA-AD6D-01D1981348B5"><p>Create the <codeph>EIR</codeph> object and during construction fill it with the data from the Extended Inquiry Response </p> </li> <li id="GUID-541D9DF2-816B-5057-B116-8A587F7A2146"><p>Use access functions to retrieve the different types of data. </p> </li> </ol> </section> <section><title>Environment</title> <p>This tutorial assumes that you have your device correctly configured, active and with Bluetooth enabled and the Bluetooth Stack initialised. <codeph>iResult</codeph> is in scope and contains a <xref href="GUID-C625E339-6726-3FB9-8F8A-F4DB0CAC15FF.dita"><apiname>TNameEntry</apiname></xref> object as the result of a successful Inquiry request. See <xref href="GUID-58F65411-CF08-5F46-8222-3FDB9E571FCC.dita">Inquiring About Remote Devices</xref>. </p> <p> <b>Note:</b> When the Inquiry Request is made, set the <codeph>aDoEIR</codeph> flag to specify that Extended Inquire Response data is required. The Bluetooth Stack will set the <codeph>aDoEIR</codeph> flag if an older version of the API (non-EIR) is used. </p> </section> <section><title>Tutorial</title> <p><b>Create an object to hold the Extended Inquiry Response data </b> </p> <ul><li id="GUID-0837BC7D-58A1-5E84-B64F-D2705DA2A844"><codeblock id="GUID-945D5812-6C22-595F-BE1F-F384C72121E1" xml:space="preserve">TBluetoothNameRecordWrapper eir(iResult());</codeblock> </li> </ul> <p><b> Use access functions to retrieve the various kinds of data</b> </p> <ol id="GUID-2733C57E-2A4B-58CD-9340-A0DA609F5705"><li id="GUID-0CA4F35B-23D4-570C-BAAC-520B5CEA62D2"><p>Get the Bluetooth device local name </p> <p> <b>Note:</b> The device local name may be truncated if it is too long to fit in the EIR data packet. If the name is not truncated then the <codeph>isNameComplete</codeph> flag will be set to <codeph>TRUE</codeph>. </p> <codeblock id="GUID-5F03D407-41FD-53AB-8DA7-B5F465719CFD" xml:space="preserve">
+TBool isNameComplete;
+TInt error = KErrNone;
+TInt length = 0;
+            
+// Get name
+// This length could be used to create the TBuf to be passed into GetDeviceName()
+length = eir.GetDeviceNameLength();
+TBuf&lt;255&gt; name;
+if(length &gt;= 0)
+ {
+ // name will contain a Unicode encoded 16-bit string
+    error = eir.GetDeviceName(name, isNameComplete);
+    }
+ else
+    {
+        error = length;
+    }
+if(error == KErrNone)
+// we have name here
+    {
+    if(isNameComplete == EFalse)
+        {
+        iHROutputConsole-&gt;Printf(_L("%d Bytes [Partial] Name: "), length);
+        }
+    else
+        {
+        iHROutputConsole-&gt;Printf(_L("%d Bytes [Complete] Name: "), length);
+        }
+        iHROutputConsole-&gt;Printf(_L("%S \n"),&amp;name);
+    }
+</codeblock> </li> <li id="GUID-323875EC-7012-537A-935A-74A91DE0F8D7"><p>Get the Transmission Power level </p> <codeblock id="GUID-870F61A6-F827-5B6D-BD4D-A8BB9EFAB0C6" xml:space="preserve">// Get TxPowerLevel
+TInt8 txPowerLevel;
+error = eir.GetTxPowerLevel(txPowerLevel);
+if(error == KErrNone)
+    // TxPowerLevel present
+    {
+    iHROutputConsole-&gt;Printf(_L("TxPowerLevel: %ddBm\n"), txPowerLevel);
+    }</codeblock> </li> <li id="GUID-2C67FE67-0652-5840-BA1F-04891A95CAB6"><p>Get the Service Class UUIDs. </p> <p> </p> <codeblock id="GUID-132B642E-EC0A-54D5-B0F6-4F4218578EB5" xml:space="preserve">// Get UUIDs
+RExtendedInquiryResponseUUIDContainer uuidContainer;
+error = eir.GetServiceClassUuids(uuidContainer);
+if(error &gt;= KErrNone)
+    {
+    RArray&lt;TUUID&gt; uuids;
+    TInt uuidCount = uuidContainer.UUIDs().Count();
+    if(uuidCount &gt; 0)
+     {
+        iHROutputConsole-&gt;Printf(_L("*** UUID Count: %d\n"), uuidCount);
+        TInt i;
+        for(i=0;i&lt;uuidCount;i++)
+            {
+            TInt j;
+            TPtrC8 uuid(uuidContainer.UUIDs()[i].ShortestForm());
+            // Treat it as a big endian
+            for(j=0;j&lt;uuid.Length();j++)
+                {
+                iHROutputConsole-&gt;Printf(_L("%02X"), uuid[j]);
+                }
+                
+            iHROutputConsole-&gt;Printf(_L(" \n"));
+            }
+        }
+    }</codeblock> </li> <li id="GUID-C694FBFB-496F-5936-B542-BDB3CD0C063B"><p>Get Manufacturer Specific data. </p> <p> <b>Note:</b> This data is entirely defined by the individual Manufacturer. </p> <codeblock id="GUID-A53768A5-9644-5D56-84BC-EAA4580E8280" xml:space="preserve">// Get Manufacturer Specific Data
+length = eir.GetVendorSpecificDataLength();
+TBuf8&lt;255&gt; msd;
+if(length &gt; 0)
+    {
+    error = eir.GetVendorSpecificData(msd);
+    }
+else
+    {
+    error = length;
+ }
+if(error == KErrNone)
+// we have Manufacturer Specific Data here
+    {
+    // This conversion is for display reason, in a real world this may not be necessary as 
+    // Manufacturer specific data can be just raw 8-bit data, however GetDeviceName() is
+    // different as it always return Unicode encoded 16-bit string
+    error = CnvUtfConverter::ConvertToUnicodeFromUtf8(name, msd);
+    if(error &gt;= KErrNone &amp;&amp; length &gt; 0)
+        {
+        iHROutputConsole-&gt;Printf(_L("%d Bytes Manufacturer Specific Data: %S\n"), length, &amp;name);
+        }
+    }
+}</codeblock> </li> </ol> </section> </conbody><related-links><link href="GUID-F2A793F1-A5B5-526B-B147-771D440B13A2.dita"><linktext>Bluetooth Extended Inquiry
+             Response</linktext> </link> <link><linktext/></link></related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-785B2F0B-E7E6-5DAE-98F1-6C32BED25964.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-785B2F0B-E7E6-5DAE-98F1-6C32BED25964"><title>Database storage overhead</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Space utilization is efficient</p> <ul><li id="GUID-8AE05C00-0C7E-5D9C-AC2B-DC1D5432DF0D"><p>the underlying permanent file store adds minimal overhead to maintain its structure: store imposes a fixed 46 bytes + 2 bytes per additional 16K; each stream requires 7 bytes.</p> </li> <li id="GUID-5BDB30B0-9140-55AA-A7BE-4C4B30355ADE"><p>the database has minimal space requirements to store its schema and data structure.</p> </li> <li id="GUID-3FCF5F99-767F-5526-B0AF-40F7F248CF26"><p>including the stream overhead, row storage overhead can be less than 2 bytes per row in ideal clustering conditions, even with lower clustering the overhead is usually below 1% of the data volume.</p> </li> </ul> <p>The storage required for a row can be determined as follows:</p> <ul><li id="GUID-41E7E40C-6E34-5C7A-BB82-A0AF92B5D455"><p>each non-null value requires the storage for fixed width columns, and the raw storage plus 1 byte for variable width columns.</p> </li> <li id="GUID-845C1A45-8C1F-5EA0-A3A6-787359332505"><p>long columns are stored embedded in the row data when they are small enough, and otherwise they are stored in a separate stream: this makes more efficient use of the both space and speed. When embedded they require just 1 bit more than the short columns, when separated they require 8 bytes in the row data plus any stream overhead.</p> </li> <li id="GUID-CD64205E-894B-50D3-9AAA-ACA375D820EA"><p>each nullable column requires an extra 1 bit.</p> </li> <li id="GUID-4FF233BB-3863-5869-9E6E-E56AC3B29924"><p>bits are packed into bytes in the row storage.</p> </li> </ul> <section><title>Indexes</title> <p>Indexes are implemented using STORE B+trees. Note in particular that indexes use fixed length keys, so that indexes on longer text fields can consume significant space.</p> <p>If the key for the index is <i>k</i> bytes, the number of rows to index is <i>n</i>, the index page size is <i>P</i>, and the B-tree packing density is <i>r</i>:</p> <p><i>a = [(P-8)/(k+4)] * r</i> </p> <p>Where <i>[x]</i> is the largest integer &lt;= <i>x</i>. Then the number of pages required, <i>N</i>, is</p> <p><i>N = n * (1/a + 1/(a*a))</i> </p> <p>Each page requires <i>P+7</i> bytes in the store, so the total indexing overhead, <i>S</i>, is</p> <p><i>S = N * (P+7)</i> </p> <p>For DBMS <i>P=512</i> and <i>r=0.86</i>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-786984BD-ADE8-5EF1-A819-F402F5703A80.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-786984BD-ADE8-5EF1-A819-F402F5703A80" xml:lang="en"><title>Configuring the Bearer Mobility</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can configure an email account for the following using the <xref href="GUID-7E4A95AA-1614-3058-B08C-B81878C37489.dita"><apiname>SetBearerMobility</apiname></xref> function: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-786A8188-AB4D-5C65-8BEF-50E45FDBE9A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-786A8188-AB4D-5C65-8BEF-50E45FDBE9A5" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E" xml:lang="en"><title>Providing
+tactile feedback for touch events</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Tactile feedback client API provides area registry based feedback and
+direct feedback to Symbian applications and UI components. You
+can use the API to add, modify and remove feedback areas, trigger direct feedback
+and disable feedback for certain UI components or the whole application. </p>
+<section id="GUID-F1980AF1-191A-4D61-AAA9-EF76BA173C5D"><p>To provide tactile
+feedback using the using the Tactile feedback client API, follow the steps
+below:</p><ol>
+<li id="GUID-5FA4DF79-88DD-43DA-B666-D3FC398C73B4">Include the Tactile Feedback
+Client library <codeph>touchfeedback.lib</codeph> in your <codeph>.mmp</codeph> file.</li>
+<li id="GUID-7FA6526A-0D2C-4F2A-A2ED-67291FA1AD31"><p>Include the header files touchfeedback.h and touchlogicalfeedback.h.</p></li>
+<li id="GUID-A508E628-FEBF-4BDC-B235-731948C11BF6">Use the <codeph>MTouchFeedback::Instance</codeph> function
+for acquiring a pointer to the interface.</li>
+<li id="GUID-23CB9F1A-9090-4B2D-8531-1BFFD7A963F6">Set feedback areas for
+your UI controls using the <codeph>SizeChanged</codeph> function (or in another
+approriate place).</li>
+<li id="GUID-86AF1A90-69BC-42E3-AAFE-74E23C8A427E">Update the feedback areas
+using the <codeph>PositionChanged</codeph> function (for non-window-owning
+controls).</li>
+<li id="GUID-4F098AAF-1E71-4334-8D94-732CCE25A7DA">Call <codeph>RemoveFeedbackForControl</codeph> in
+your control's destructor.</li>
+<li id="GUID-E6F49D08-5F41-4638-91EE-526E67E15FE6">If you want to use direct
+feedback, trigger it in the <codeph>HandlePointerEventL</codeph> function
+with a call to <codeph>InstantFeedback</codeph>.</li>
+</ol></section>
+<section id="GUID-158ECB24-37E7-48DE-80F4-9606AC58F183"><title>Use cases</title><fig id="GUID-B8FF99CA-CC09-4B25-BEB6-0DA7053D1B7F">
+<title>Tactile feedback client API use cases</title>
+<image href="GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e51370_href.png" scale="90" placement="inline"></image>
+</fig><p>To provide tactile feedback for touch events in your applications,
+implement the following use cases:</p><ul>
+<li><p><xref href="GUID-27897E0D-D9D6-4007-A45E-62C366F1267C.dita">Using direct
+feedback</xref></p><ul>
+<li>Feedback effect is played according to given logical feedback type.</li>
+</ul></li>
+<li><p><xref href="GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita">Using area registry
+based feedback</xref></p><ul>
+<li><p>Set feedback area</p><ul>
+<li>New feedback area is added to area registry.</li>
+<li>Can also be used for modifying existing feedback area.</li>
+</ul></li>
+<li><p>Change feedback area</p><ul>
+<li>Change feedback area coordinates, or feedback type for a given area.</li>
+</ul></li>
+<li><p>Remove feedback area</p><ul>
+<li>Given feedback area is removed from the registry</li>
+</ul></li>
+</ul> </li>
+<li><p><xref href="GUID-129FCE62-5498-4717-864B-7DC6A5C5944D.dita">Removing feedback
+from a control</xref></p><ul>
+<li>All feedback areas belonging to given control are removed from registry.</li>
+<li>All cached information about the control is also removed.</li>
+</ul></li>
+</ul><p>The following use cases are optional, allowing you to use additional
+tactile feedback features:</p> <ul>
+<li><p><xref href="GUID-842D8557-076B-4A6E-B823-81164368FD86.dita">Disabling and
+enabling feedback</xref></p><ul>
+<li><p>Enable or disable feedback for you application</p><ul>
+<li>Disable feedback for this application at run-time.</li>
+<li>Enable feedback for this application at run-time.</li>
+<li>Query whether feedback is currently enabled for this application.</li>
+<li>Enable only audio- or vibra feedback for this application at run-time.</li>
+</ul></li>
+<li><p>Enable or disable feedback for a control</p><ul>
+<li>Temporarily disable feedback for given control.</li>
+<li>Re-enable feedback for given control.</li>
+<li>Temporarily enable only audio or vibra feedback.</li>
+</ul></li>
+</ul></li>
+<li><p><xref href="GUID-BF6ECC83-C7A0-4183-B835-6299CC2114AF.dita">Querying if
+feedback is supported</xref></p><ul>
+<li>Check if tactile feedback is supported in this device.</li>
+</ul></li>
+<li><p><xref href="GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita">Managing feedback
+areas</xref></p><ul>
+<li> You can sort feedback areas for achieving desired functionality in case
+of overlapping areas.</li>
+</ul></li>
+<li><p><xref href="GUID-2BF409EA-82BF-407C-B048-DA0973B7F61D.dita">Optimizing feedback
+latency</xref></p></li>
+</ul> </section>
+<section id="GUID-0F6F2C15-23C0-47A7-916C-15C92DDED877"><p>For an overview
+of using tactile feedback in your application, see <xref href="GUID-2632A013-AA87-485E-855D-C50E211057D6.dita">Tactile
+feedback implementation example</xref>.</p></section>
+<section id="GUID-03DB8FD1-D1FE-434E-B15F-D4B5DD80926B"><title>Main implementation
+files</title><p>The implementation files for the Tactile feedback client API
+are touchfeedback.h and touchlogicalfeedback.h.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC"><title>SQL Server Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the SQL server. </p> <section><title>Purpose</title> <p>THE SQL server is an implementation of SQLite v3.3.17. </p> </section> <section><title>SQL server services</title> <p>SQL server performs the all SQL operations called from an application, including: </p> <ul><li id="GUID-72549F9B-29DE-5D1A-9B5C-038E955A0E43"><p>creating a SQL database, </p> </li> <li id="GUID-5A393FBC-F11C-5D05-B6C0-67D726C4142B"><p>opening an existing SQL database, </p> </li> <li id="GUID-1C746D2A-DA53-5556-ACAC-F34ABE18A610"><p>retrieving the last SQL error message, </p> </li> <li id="GUID-F186886F-6693-5A5E-ABA0-A63D22ED1773"><p>executing 8-bit and 16-bit SQL statements, </p> </li> <li id="GUID-ECEAA082-2D8B-5636-9312-AC24657DC807"><p>setting the transaction isolation level, </p> </li> <li id="GUID-B495D60D-94DC-50AC-87E1-CC540AAD87D3"><p>retrieving the database security policy, </p> </li> <li id="GUID-74A2F188-EC6C-50D7-9D49-1B70C5D73BD9"><p>attaching additional SQL databases to the current connection, </p> </li> <li id="GUID-7DA02DFE-1ADE-5934-AD89-D1DDAC04DB38"><p>detaching previously attached SQL database from current connection. </p> </li> </ul> <p><b>Platform Security</b> </p> <p>SQL server also manages all platform security related activities for secure databases including: </p> <ul><li id="GUID-773DB200-FA32-5177-BC74-D1046B40B601"><p>loading/storing database security policies when creating/opening a database connection, </p> </li> <li id="GUID-7A2567DA-EDBC-5432-A80B-DF2AD4954F0A"><p>asserting client rights to perform a specific database operation, </p> </li> <li id="GUID-0BB93BC1-68C7-5D8E-A0DA-A9D090446C0F"><p>maintaining security related internal data structures. </p> </li> </ul> </section> <section><title>Using the SQL server</title> <p>The SQL server is started when an application attempts to: </p> <ul><li id="GUID-FE9131E5-5C6F-5151-A003-0AFF52B8B984"><p>create a database, </p> </li> <li id="GUID-83A297AD-26A4-5EBD-B669-779A26A64C47"><p>open a database, </p> </li> <li id="GUID-E946BD2D-37CE-5C88-B043-285D8177D021"><p>copy a database, </p> </li> <li id="GUID-B4661882-6F0F-52D0-89EF-12BE072AE666"><p>delete a database. </p> </li> </ul> <p>The <filepath>SQLDB.dll</filepath> class <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref> invokes a call to start the server as soon as an operation is initiated that requires the database server. Your application must include the <filepath>sqldb.lib</filepath> library, instantiate the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref> object and perform one of the operations listed above to start the SQL server. </p> <p>See the <xref href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita">Basic SQL example application</xref> for an example. </p> <p>Once started, the server manages the SQL session and all SQL commands and operations sent as part of that session. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-582CAA4A-1240-5138-983D-D9C6EEAF5566.dita"><linktext>SQL Tutorials</linktext> </link> <link href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita"><linktext>Basic SQL Example
+                Application</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-788031A5-75C1-420E-9E2B-71E09FF08ADF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-788031A5-75C1-420E-9E2B-71E09FF08ADF" xml:lang="en"><title>Example
+using <codeph>E32Main()</codeph></title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A simple example using <codeph>E32Main()</codeph> as an entry point is
+described below. The example writes a text to a file. </p>
+<ul>
+<li><p>Modify the MMP file as mentioned earlier.</p></li>
+<li><p>Create a trap handler using <xref href="GUID-17AC7BAD-1C03-3729-BCC6-F5B28B32E99D.dita"><apiname>CTrapCleanup</apiname></xref>.</p></li>
+<li><p>Call the method within <codeph>TRAPD</codeph>.</p></li>
+<li><p>Delete the trap handler. </p></li>
+</ul>
+<codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &lt;e32base.h&gt;
+
+void doExampleL(void)
+{
+    FILE* fd;
+    char* fileName = "C:\\test.txt";
+    char *buf = "Hello world from E32Main()";
+    fd = fopen(fileName, "w");
+    if (fd == NULL)
+    {
+        printf("Unable to open the file (%s)", fileName);
+        return;
+    }
+    if (fwrite(buf, sizeof(char), strlen(buf), fd) &lt; 0 )
+    {
+        perror("write fails.");
+    }
+    fclose(fd);
+}
+
+GLDEF_C TInt E32Main()
+    {
+    CTrapCleanup* cleanup=CTrapCleanup::New();
+    TRAPD(error,doExampleL());
+    delete cleanup; // destroy cleanup stack
+    return 0; // and return
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-78865979-D519-5476-91FE-9EF3386AC8F5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-78865979-D519-5476-91FE-9EF3386AC8F5"><title>unset</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>unset [ -fmv ] name ...</userinput> </p> <p>Each named parameter is <codeph>unset</codeph>. Local parameters remain local even if unset; they appear unset within scope, but the previous value will still reappear when the scope ends. Individual elements of associative array parameters may be unset by using subscript syntax on <codeph>name</codeph>, which should be quoted (or the entire command prefixed with <codeph>noglob</codeph>) to protect the subscript from filename generation. </p> <table id="GUID-241FBFFB-B0F0-51B1-B84A-2AAAB7ABB0D1"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p>Equivalent to <xref href="GUID-7A1B0CAC-BA12-512A-98B0-86CD317E4B24.dita">unfunction</xref>. </p> </entry> </row> <row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>The arguments are taken as patterns (should be quoted) and all parameters with matching names are unset. Note that this cannot be used when unsetting associative array elements, as the subscript will be treated as part of the pattern. </p> </entry> </row> <row><entry><p> <codeph>-v</codeph>  </p> </entry> <entry><p>Specifies that name refers to parameters. This is the default behaviour. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-788BC010-536D-4089-9B12-4A43A9C1C82B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-788BC010-536D-4089-9B12-4A43A9C1C82B" xml:lang="en"><title>Application-specific
+indicators</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Applications may need indicators specific to their own purposes. Such indicators
+can be placed into the Navi pane, if it is available, or into some part of
+the main pane. However, using the main pane this way may require the use of
+a specific main pane layout. Notice also that the icons present in many list
+item layouts can be utilized as indicators.</p>
+<section><title>Using application-specific
+indicators in C++ applications</title><p>The API to use for indicators is
+the Indicators
+API. For the navi pane, use the Navigation
+pane API. For implementation information, see Using
+the Navigation pane API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e50615_href.png has changed
Binary file Symbian3/SDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902-master.png has changed
Binary file Symbian3/SDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e66332_href.png has changed
Binary file Symbian3/SDK/Source/GUID-78AC068A-C858-41E9-94A8-32C8A8581BF8_d0e62098_href.png has changed
Binary file Symbian3/SDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8-master.png has changed
Binary file Symbian3/SDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e171454_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-78FB26E2-AA60-5531-B2FE-4FA6C88F2D47.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-78FB26E2-AA60-5531-B2FE-4FA6C88F2D47"><title>Selecting and Using a Font</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To select a font you must create a specification that defines the characteristics of the font that you require. The fonts available are specific to the current graphics device (normally the screen device). The graphics device uses the Font and Bitmap server to access the Font Store. The Font Store finds the best match from the fonts installed. </p> <p>The current font is part of the current graphics context. Once the font system has selected a font to match your specification you must update the current context to use the new font. </p> <ol id="GUID-C4671145-FEDE-5A82-8085-7E5802545DE9"><li id="GUID-66508D29-FC01-5B64-A043-759503EC04FF"><p>Set up a font specification (<codeph>TFontSpec</codeph>). </p> </li> <li id="GUID-E6F70C38-003C-5AFF-B73D-67244058FFCF"><p>Create a <codeph>CFont</codeph> pointer. The font itself will be allocated by FBServ on the shared heap. This pointer will not be used to allocate or free any memory. </p> </li> <li id="GUID-93C743E0-2689-5AA3-8F24-937C38D7A7BB"><p>Use the font spec and the font pointer to obtain a font from the Font Store. This must be done through the screen device. </p> </li> <li id="GUID-9DB15BD2-8014-59AC-94CA-30161E3DB553"><p>Set the graphic context's current font to the <codeph>CFont</codeph> obtained from the Font Store. </p> </li> <li id="GUID-2F9586D4-5C1C-5ADC-A816-4AE7C29CA44A"><p>Use the font. </p> </li> <li id="GUID-DAB05CE0-1710-5B79-A921-41BFDEF8B1FD"><p>Tidy up by discarding the font from the graphics context and releasing it from the graphics device. </p> </li> </ol> <codeblock id="GUID-D37CB9EF-CED1-59EB-95AE-D50E020D2FF8" xml:space="preserve">// Create a font specification
+_LIT( KMyFontName,"Swiss") ;
+const TInt KMyFontHeightInTwips = 240 ; // 12 point
+TFontSpec myFontSpec( KMyFontName, KMyFontHeightInTwips ) ; 
+    
+// Create a font pointer (the font itself is on the FBServ shared heap)
+CFont* myFont ;
+    
+// Fonts are graphics device specific.  In this case the graphics device is the screen
+CGraphicsDevice* screenDevice = iCoeEnv-&gt;ScreenDevice() ;
+    
+// Get the font that most closely matches the font spec.
+screenDevice-&gt;GetNearestFontToMaxHeightInTwips( myFont , myFontSpec ) ;
+    
+// Pass the font to the current graphics context
+CWindowGc&amp; gc = SystemGc() ;
+gc.UseFont( myFont ) ;
+    
+// Use the gc to draw text.  Use the most appropriate CGraphicsContext::DrawText() function.
+TPoint textPos( 0, myFont-&gt;AscentInPixels() ) ; // left hand end of baseline.
+_LIT( KMyText, "Some text to write" ) ;
+    
+gc.DrawText( KMyText, textPos ) ; // Uses current pen etc.
+    
+// Tidy up.  Discard and release the font
+gc.DiscardFont() ;
+screenDevice-&gt;ReleaseFont( myFont ) ;</codeblock> <p>There are a number of <codeph>DrawText()</codeph> function in <xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref> that you can use for positioning text at a specified position or within a rectangle. The pen and brush are those in the current context. </p> <p>You can query the metrics of the font using <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> to ensure that your text is correctly located. You can also establish the size of individual characters and text strings. </p> <p> <b>Note:</b>  <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> is an abstract base class. You can use it to query a font supplied by the font system but you cannot instantiate it. </p> <codeblock id="GUID-996A661A-581B-50A4-B844-91DE4514F1EA" xml:space="preserve">class CFont  // CFont is an abstract class.
+    {
+    
+public:
+    TUid TypeUid() const;
+    TInt HeightInPixels() const;
+    TInt AscentInPixels() const;
+    TInt DescentInPixels() const;
+    TInt CharWidthInPixels(TChar aChar) const;
+    TInt TextWidthInPixels(const TDesC&amp; aText) const;
+    TInt BaselineOffsetInPixels() const;
+    TInt TextCount(const TDesC&amp; aText,TInt aWidthInPixels) const;
+    TInt TextCount(const TDesC&amp; aText,TInt aWidthInPixels,
+                   TInt&amp; aExcessWidthInPixels) const;
+    
+    TInt MaxCharWidthInPixels() const;
+    TInt MaxNormalCharWidthInPixels() const;
+    TFontSpec FontSpecInTwips() const;
+    TCharacterDataAvailability GetCharacterData(TUint aCode, 
+                   TOpenFontCharMetrics&amp; aMetrics,
+                   const TUint8*&amp; aBitmap,
+                   TSize&amp; aBitmapSize) const;
+    
+    TBool GetCharacterPosition(TPositionParam&amp; aParam) const;
+    TInt WidthZeroInPixels() const;
+    TInt MeasureText(const TDesC&amp; aText, 
+                   const TMeasureTextInput* aInput = NULL, 
+                   TMeasureTextOutput* aOutput = NULL) const;
+    
+    static TBool CharactersJoin(TInt aLeftCharacter, TInt aRightCharacter);
+    TInt ExtendedFunction(TUid aFunctionId, TAny* aParam = NULL) const;
+    TBool GetCharacterPosition2(TPositionParam&amp; aParam, RShapeInfo&amp; aShapeInfo) const;
+    TInt TextWidthInPixels(const TDesC&amp; aText,const TMeasureTextInput* aParam) const;
+    ....</codeblock> </conbody><related-links><link href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita"><linktext>GDI Collection Overview</linktext> </link> <link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext> Font and Text Services Collection
+                Overview</linktext> </link> <link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext> Font and Bitmap Server Component Overview
+                </linktext> </link> <link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e162657_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B" xml:lang="en"><title>Build
+Process</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-1F561425-9B98-544A-A0CB-086E0931313E"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-DDD0A8B3-0375-5245-A019-C9A74575C63F">Introduction</xref>  </p> </li>
+<li id="GUID-DE26248D-27DE-5B38-9BFA-FE4CBAB676F6"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-423A00CF-D668-5114-860D-B30185DAB0B2">P.I.P.S. target types</xref>  </p> </li>
+<li id="GUID-9EC5C68C-CDFC-5608-A26C-FD6001822217"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-6A50D190-7E5B-5109-BA38-9C962DF8EB1D">Symbol information</xref>  </p> </li>
+<li id="GUID-6EDF3969-49B8-5F74-BFBF-C323D2C8480C"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-76C405AE-1AB7-59AE-BCAF-A9E09D17B24E">Mapping POSIX handles to Symbian platform resource objects</xref>  </p> <ul>
+<li id="GUID-30586541-C6EB-5794-8171-2302C53AAE45"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-4AA14ED5-7949-5AAB-A685-87DA43B99AFE">Using non-system calls</xref>  </p> </li>
+<li id="GUID-E146BFE8-FDFE-551D-B280-5AD5303996C7"><p><xref href="GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita#GUID-79100974-CAE1-5451-9ED7-E06C9B27131B/GUID-FBF12198-B501-5525-86AF-5517A012FDF1">Using the System Call Adaptation Layer</xref>  </p> </li>
+</ul> </li>
+</ul>
+<section id="GUID-DDD0A8B3-0375-5245-A019-C9A74575C63F"><title>Introduction</title> <p>Symbian
+currently builds its emulator code with the Metrowerks CodeWarrior compiler.
+This is known as the <codeph>WINSCW</codeph> build target. Binaries
+built with this compiler are put in the <filepath>epoc32\release\winscw</filepath> and <filepath>epoc32\winscw</filepath> directory
+trees. </p> <p>You can build your programs for the emulator using Metrowerks
+CodeWarrior. The build tools also support the Microsoft® Visual Studio .NET
+2003 and Microsoft Visual Studio v6 IDEs. For further information, see the <xref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita">Build tools guide</xref> section.
+Note that licensees or third-parties may supply additional tools, or extend
+support to additional compilers, which are not described here. </p> <p>The
+following sections describe the new Symbian platform target types introduced
+with P.I.P.S.. For further information see <xref href="GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita">the
+native build targets</xref> section. </p> <p>When using tool chains for pre-Symbian
+OS v9.3, the <filepath>.mmp</filepath> file has to be manually changed to
+link in various libraries. </p> <p>For Symbian OS v9.3 onwards the tool chain
+supports the new <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> target
+types for P.I.P.S. EXEs and DLLs. See the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation
+of STDEXE, STDDLL and STDLIB</xref> section for further explanation of the
+new target types introduced with P.I.P.S.. </p> </section>
+<section id="GUID-423A00CF-D668-5114-860D-B30185DAB0B2"><title>P.I.P.S. target
+types</title> <p>P.I.P.S. EXEs require adaptation logic to set up the C program
+environment and the P.I.P.S. run-time C library context - this is performed
+by the <codeph>CRT0</codeph> library (also known as glue code, see the <xref href="GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita#GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D/GUID-49C7F951-8317-5F41-B1B9-9F7B8803E655">Glue
+code (CRT0)</xref> section for further details). </p> <p>P.I.P.S. executables
+are implemented using native Symbian platform executables linked statically
+to the glue code. The new target types for P.I.P.S. include the glue code
+by default. The glue code provides the linking code between the <codeph>E32Main()</codeph> entry
+point and the <codeph>main()</codeph> entry point used in 'C' P.I.P.S. EXEs. </p> <p>For
+further information see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita">Target
+Types</xref> section. </p> </section>
+<section id="GUID-6A50D190-7E5B-5109-BA38-9C962DF8EB1D"><title>Symbol information</title> <p>When
+building a P.I.P.S. DLL (that is, when the target type is <codeph>STDDLL</codeph>),
+function and data symbols with <codeph>extern</codeph> linkage will be exported
+or imported by default, without any requirement for <xref href="GUID-BD292953-36BF-3C7D-AA93-98E6CB38968E.dita"><apiname>IMPORT_C</apiname></xref> /<xref href="GUID-2F78C3AC-7330-34C0-8A83-75D7345F2DC8.dita"><apiname>EXPORT_C</apiname></xref> declarations
+in the header or source files. </p> <p>Exporting of symbols with <codeph>extern</codeph> linkage
+is the assumed default on other platforms and enables the source code to be
+easily ported. Although this may normally be undesirable in the embedded world,
+it is supported for <codeph>STDDLL</codeph> to avoid portable source code
+having to include excessive decoration (that is, the <codeph>IMPORT_C</codeph> /<codeph>EXPORT_C</codeph> macros)
+for the Symbian platform. </p> <p> <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> provide
+symbol name information. For more information on the new Symbian platform
+target types see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita#GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B/GUID-5D0338E0-E2D4-5904-9B21-244CA52DD91B">Generation
+of STDEXE, STDDLL and STDLIB</xref> section. </p> </section>
+<section id="GUID-76C405AE-1AB7-59AE-BCAF-A9E09D17B24E"><title>Mapping POSIX
+handles to Symbian platform resource objects</title> <p id="GUID-4AA14ED5-7949-5AAB-A685-87DA43B99AFE"><b>Using
+non-system calls</b> </p> <p>Several P.I.P.S. APIs that directly manipulate
+Symbian platform (native) resources are implemented in the System Call Adaptation
+Layer (SCAL). The exceptions to this are <codeph>pthread</codeph> s, and memory
+maps. The <codeph>pthread</codeph> APIs use <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> s and <xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex</apiname></xref> es
+directly from within <codeph>libpthread</codeph>. Similarly, <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk</apiname></xref> s
+that are used to provide support for memory maps are directly manipulated
+from within <codeph>libc</codeph>. Note that none of these APIs allow direct
+access to the underlying native resources. References to these are wrapped
+in POSIX-defined data structures. These data structures are intended to be
+treated as opaque and no attempt must be made to dereference or use the underlying
+resource reference directly. </p> <p>All IPC calls enter the SCAL, but are
+handled in a separate IPC library. This is a component distinction. The IPC
+library is logically still part of the SCAL. </p> <p id="GUID-FBF12198-B501-5525-86AF-5517A012FDF1"><b>Using
+the System Call Adaptation Layer</b> </p> <p>One of the supports provided
+by the System Call Adaptation Layer (SCAL) is the mapping of operations on
+UNIX® file descriptors to the corresponding Symbian platform resource objects.
+The section below discusses the file descriptors case. </p> <p id="GUID-1A1FC433-B9F6-5998-9622-14B961F477E2"><b>Creating
+a new file descriptor</b> </p> <p>The porting of the 'C' POSIX <xref href="GUID-64886CC6-072F-3542-855A-5D733FC761E8.dita"><apiname>fopen()</apiname></xref> function,
+below, is a good example of mapping POSIX handles to native Symbian platform
+resource objects. The mapping is done through a file descriptor table. As
+a reminder, every application/process has its own file descriptor table. </p> <p>This
+example shows a call to the <codeph>fopen()</codeph> function: </p> <codeblock id="GUID-F9681B44-A1E6-5971-9C5E-147D4281DBF0" xml:space="preserve">//myapp.cpp
+int foo()
+{
+   //open the test.tx , fd=7 in this example
+   int fd = fopen("c:/test.txt", "r+");
+   ...
+   //writes to file referenced by the file descriptor  
+   ret = write (fd, buf, size_t);
+
+}</codeblock> <p>When <i>myapp</i> tries to open the file with <codeph>fopen()</codeph>,
+the application makes a call to the equivalent Symbian platform function, <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-72470A68-7E07-30EF-A3C8-AA855CDAF60E"><apiname>RFile::Open()</apiname></xref>,
+and returns the next free entry in the file descriptor table. </p> <p>In each
+table, the values <codeph>0</codeph>, <codeph>1</codeph> and <codeph>2</codeph> are
+reserved for <xref href="GUID-C0C1D22B-298F-3E8D-A1E9-6F5EFA81F9E8.dita"><apiname>stdin()</apiname></xref>, <xref href="GUID-0441C351-4A8B-3A23-9255-D7C8CEA2A67F.dita"><apiname>sdtout()</apiname></xref> and <xref href="GUID-4FF97B50-2C1E-37EC-888B-FB8D3F14B5B8.dita"><apiname>stderr()</apiname></xref>.
+The figure below shows an example file descriptor table. </p> <fig id="GUID-4CEA6881-49E0-5211-8258-C44A8E8F3CDE">
+<image href="GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e133724_href.png" placement="inline"/>
+</fig> <p>According to the descriptor table the file descriptor equals <codeph>7</codeph>,
+as this was the next free entry in the table, and the write function will
+be writing to the file referenced by <codeph>7</codeph>. </p> <p> <b>Note:</b> A
+POSIX descriptor is an index in the process open file table and represents,
+for example, an open file, socket or pipe. A Symbian descriptor represents
+data which can reside in any memory location, either in ROM or RAM. A descriptor
+object maintains pointer and length information to describe the data. All
+access to the data is made through the descriptor object. </p> <p id="GUID-79958B57-8C71-5875-9C5B-8C313A96D13A"><b>Descriptors
+shared across multiple threads within the same process</b> </p> <p>Originally
+in Symbian platform, resources were thread specific and multi-tasking was
+achieved using servers and active objects. In other operating systems, such
+as Linux, resources are process-local and multi-tasking is achieved by multi-threading.
+The purpose of the POSIX server in the original <codeph>STDLIB</codeph> was
+to allow system-wide data, resources and descriptors to be shared across multiple
+threads. This means there was context switching between the calling thread
+and the server thread which added latency. </p> <p>With the introduction of
+the EKA2 kernel, session handles can now be shared across multiple threads
+and processes. </p> <p>P.I.P.S. takes advantage of EKA2 and re-factors the
+SCAL to allow descriptors to be shared across multiple threads within the
+same process, without the use of the POSIX server. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79370E26-4549-5F31-99A3-8D0341F58F08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-79370E26-4549-5F31-99A3-8D0341F58F08" xml:lang="en"><title>Retrieving
+Versions and Device Type Information </title><abstract><p>This section explains the tasks that can be performed using System
+Utilities such as retrieving software and language package versions and device
+type information. </p></abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-1884087E-5436-4E3D-A730-64AAF0212595"><title>Retrieving
+the current software version</title><p>To retrieve the software version of
+the device, call <codeph>GetSWVersion()</codeph> function. This function sets
+the parameter passed to a Unicode string holding the current software version. </p><codeblock xml:space="preserve">TBuf&lt;KSysUtilVersionTextLength&gt; version;
+if( SysUtil::GetSWVersion( version ) == KErrNone )
+     {     // Use the version string.     ...
+     }
+</codeblock></section>
+<section id="GUID-8B03C857-EEE3-4E30-8E64-F6E71919D484"><title>Retrieving
+the current software version for the current language package</title><p>To
+retrieve the software version of the device which is compatible with the currently
+installed language package, call <codeph>GetLangSWVersion()</codeph>. This
+function sets the parameter passed to a Unicode string holding the required
+software version. </p></section>
+<section id="GUID-B887AAAC-F785-499A-98EB-54D14C1350A9"><title>Retrieving
+the current language package version</title><p>To retrieve the version of
+the currently installed language package, call <codeph>GetLangVersion()</codeph>.
+This function sets the parameter passed to a Unicode string holding the language
+package. </p><p><b>Note</b>: The following functions read data from text files: </p><ul>
+<li><p><codeph>GetSWVersion()</codeph> reads from <filepath>Z:\\resource\\versions\\sw.txt</filepath></p></li>
+<li><p><codeph>GetLangSWVersion()</codeph> reads from <filepath>Z:\\resource\\versions\\langsw.txt</filepath> </p></li>
+<li><p><codeph>GetLangVersion()</codeph> reads from <filepath>Z:\\resource\\versions\\lang.txt</filepath> </p></li>
+</ul><p>The GetSWVersion() and GetLangSWVersion() functions convert the newline
+character "\n" to the Unicode newline character but GetLangVersion()function
+does not convert.</p></section>
+<section id="GUID-9D638BAD-9A37-45FE-BF12-BAEFFB740D47"><title>Retrieving
+the device type information</title><p>To retrieve the device type information,
+call GetDeviceTypeInfoL() function. It consists of a pointer to an instance
+of CDeviceTypeInformation. This instance contains the complete set of device
+type information attributes that are provisioned by the device manufacturer. </p><codeblock xml:space="preserve">TPtrC16 modelNamePtrC;
+if( User::LeaveIfError( deviceTypeInfo-&gt;GetModelName( modelNamePtrC ) ) == CDeviceTypeInformation::KDefaultValue )
+          {
+          // We have a default attribute value, do something else
+          ...
+          }
+else
+          {
+          // We have a device creator supplied attribute value.
+          ...
+          }
+</codeblock></section>
+</conbody><related-links>
+<link href="GUID-ED6ED5E6-5A95-54F2-B5B2-6145A10F44BE.dita"><linktext>System Utilities
+Overview</linktext></link>
+<link href="GUID-3AFA592E-ED32-5AC6-B331-E7191CF2D5E2.dita"><linktext>Checking
+the Availability of Memory</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15" xml:lang="en"><title>How
+to use bldmake</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <filepath>bldmake</filepath> tool processes the component description
+file (<filepath>bld.inf</filepath>) in the current directory and generates
+the batch file <filepath>abld.bat</filepath> and several build batch makefiles
+(<filepath>.make</filepath>). <filepath>abld</filepath> can then use the makefiles
+to carry out the various stages of building the component. </p>
+<p>The tool supports a number of command line options, however most Symbian
+developers will simply use: </p>
+<p><userinput>bldmake bldfiles</userinput> </p>
+<p> <filepath>bldmake</filepath> then carries out the following 3-stage process: </p>
+<ol id="GUID-BE26A1D9-1529-5DDC-8288-2BBBEFF95D30">
+<li id="GUID-5E2F4383-6D29-5476-9D88-FF65A7878FDC"><p>Creates the directory: <filepath>\epoc32\build\</filepath> <codeph>absolute_path_to_bld.inf_file</codeph> \ </p> </li>
+<li id="GUID-00C7C6F4-42A7-52CC-80C4-91E2A4A887D4"><p>Generates makefiles
+for the component into this directory </p> </li>
+<li id="GUID-4E6D5AC8-8317-5D24-8617-1B8741730745"><p>Produces a batch file
+called <filepath>abld.bat</filepath> in the current directory. </p> </li>
+</ol>
+</conbody><related-links>
+<link href="GUID-B1800856-3516-5D22-B1C5-556866CDDF46.dita"><linktext>Bldmake syntax</linktext>
+</link>
+<link href="GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita"><linktext>Bldmake component
+definition file syntax</linktext></link>
+<link href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita"><linktext>Using abld</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7953ECE8-3935-57E1-86C2-D53132930B71.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7953ECE8-3935-57E1-86C2-D53132930B71" xml:lang="en"><title>Basic Application Framework Library Examples</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-795ED4C0-7C82-41DE-AD5B-AC69A426E2A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-795ED4C0-7C82-41DE-AD5B-AC69A426E2A5" xml:lang="en"><title>Streaming video</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aOpenUrlL%28const%20TDesC%20%26amp%3b%2cTInt%2cconst%20TDesC8%20%26amp%3b%2cTUid%29" format="application/java-archive"><codeph>CVideoPlayerUtility::OpenUrlL</codeph></xref> method supports the real time streaming protocol (RTSP) for streaming video content. For more information on <codeph>CVideoPlayerUtility</codeph>, see <xref href="GUID-B340078C-9EFC-4017-8F43-B0BBCE4935DC.dita">Playing
+a video clip</xref>.</p>
+<p>For more information on streaming, see <xref href="http://library.forum.nokia.com/topic/Design_and_User_Experience_Library/GUID-BBD281EA-365D-44DA-B9F9-51F6E0C3BEB0.html" scope="external">Streaming video</xref> in the Design and User Experience Library.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7965B998-0D1A-50F8-B2F9-D2A71744DF86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7965B998-0D1A-50F8-B2F9-D2A71744DF86" xml:lang="en"><title>Using Bearer Mobility</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to use the bearer mobility functionality. </p> </conbody><related-links><link href="GUID-AD6587AD-A5B2-5369-9217-D752A37490C4.dita"><linktext>Bearer
+  Mobility</linktext> </link> <link href="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita"><linktext>Email Settings</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7971886A-8ED0-5924-9BC0-A163BA499888.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7971886A-8ED0-5924-9BC0-A163BA499888"><title>-debug</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option generates symbolic debug information for release or debug builds, independent of the compiler optimization level. </p> <p>By default, the build system generates symbolic debug information only for the debug builds. With this option, the generation of symbolic debug information is extended to release builds to support debugging of release binaries on ARM ABI compliant platforms. </p> <p>The option instructs the <codeph>makmake</codeph> tool to generate symbolic debug information for <codeph>UREL</codeph> or <codeph>UDEB</codeph> variants. </p> <p>Note that the option is applicable to the <codeph>build</codeph> and <codeph>makefile</codeph> commands only. </p> <p>Also note that this option cannot be used with the <xref href="GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA.dita">-no_debug</xref> option. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7984F8F7-DC7B-56E0-A5DA-071A3D87714A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7984F8F7-DC7B-56E0-A5DA-071A3D87714A" xml:lang="en"><title>LString
+Tutorial</title><abstract><p>LStrings can be used as class member variables, declared in the
+class declaration and instantiated in ConstructL(), in the constructor or
+in the constructor initialisation list.  </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p><b>Required background</b></p><p>Before beginning you must know
+the following: </p> <ul>
+<li id="GUID-F16B6935-EAF1-5EF1-A69E-4D0D5F48EF95"><p> <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes </apiname></xref> -
+Build independent modifiable descriptor. </p> </li>
+<li id="GUID-FD3CD5F7-E991-5003-B595-15139EE34880"><p> <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC </apiname></xref> -
+Build independent non-modifiable descriptor. </p> </li>
+<li id="GUID-0CD1486E-0B54-5877-91D8-7D5C094B90FD"><p> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> -
+This class provides a buffer that contains, accesses and manipulates TUint16
+data. The buffer itself is on the heap, and is managed by the class. </p> </li>
+</ul> </prereq>
+<context><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> is a convenient, general-purpose string
+class derived from RBuf. LString adds automatic cleanup and on-demand buffer
+resize facilities. Like an RBuf, an LString can be passed to any function
+that is prototyped to take a <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> or a <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> reference.
+Again like an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>, an LString maintains its string data
+in a heap buffer. </p> </context>
+<steps-unordered>
+<step id="GUID-3B84AF07-5356-4BFA-91D2-B8FE64121852"><cmd><b>Declaring an LString</b></cmd>
+<info><p>LStrings can also be used as class member variables, declared in
+the class declaration and instantiated in <xref href="GUID-C8E0575D-5A7F-3D00-9BE5-AD8D6DBCF2F7.dita"><apiname>ConstructL()</apiname></xref>,
+in the constructor or in the constructor initialisation list. </p> <p>LString
+provides a variety of construction options as show in code snippet below: </p> <codeblock id="GUID-760C7BA0-DDBC-5B8C-AD1C-E0E5E7ECCC1D" xml:space="preserve">
+{
+
+_LIT(KOne, "One ");
+_LIT(KTesting, "Testing ");
+
+
+// A default constructed LString starts empty, doesn't
+// allocate any memory on the heap, and therefore the
+// following cannot leave
+LString s;
+
+// You can initialize with a MaxLength value
+LString s(KMaxFileName); // This operation may leave
+
+// You can initialize from any descriptor (or literal) and the
+// string data is copied into the LString
+LString s(KOne); // From a literal
+
+LString half(s.Left(s.Length() / 2)); // Left returns a TPtrC
+
+// On the other hand, you can initialize from a returned
+// HBufC* and the LString automatically takes ownership
+LString own(AllocateNameL(KTesting));
+
+// LStrings can be allocated on the heap if necessary
+LString* s = new(ELeave) LString;
+
+}
+</codeblock></info>
+</step>
+<step id="GUID-2A0AB10A-433B-46BC-A636-86CC128B6F35"><cmd><b>Managing the size of the LString manually</b></cmd>
+<info><p>Although <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> supports automatic resizing,
+it is also possible, and sometimes necessary to manually change the length
+of the string. When an LString is passed to a function as a <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> or <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+it looses its automatic resizing capabilities and therefore care must be taken
+to ensure sufficient space is allocated before the call is made. </p> <p>Extra
+space can be allocated to the LString by calling <xref href="GUID-A3EE1898-D58C-3C15-8A98-7BEF85963AEB.dita"><apiname>ReserveFreeCapacityL()</apiname></xref> function
+and the string can be compressed to the minimum length by calling <xref href="GUID-E016AEA6-D901-3AF4-AE52-CBE4308E962C.dita"><apiname>Compress()</apiname></xref> function.
+An example code snippet is shown below: </p> <codeblock id="GUID-DE899D49-DC9D-53DE-8E7B-B0F19EAF4D8A" xml:space="preserve">
+_LIT(KOne, "One ");
+
+{
+    LString s(KOne);
+    s.ReserveFreeCapacityL(4);
+    test(s.Length() == 4);
+    test(s.MaxLength() &gt;= 8);
+    s.Compress();
+    test(s.MaxLength() &gt;= 4);    //note indefinite test
+    s.Reset();
+    test(s.Length() == 0);
+    test(s.MaxLength() == 0);
+}
+</codeblock></info>
+</step>
+<step id="GUID-5FD35D1B-B252-4266-BCC0-7FC00ED6BF93"><cmd><b>Passing an LString to a function expecting a TDes or TDesC</b></cmd>
+<info><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref>, derived from <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> can
+be passed directly to any method accepting a <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> or <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> parameter.
+Be aware though that once passed as a TDes, LString loses its automatic resizing
+capability. Care must be taken to ensure that sufficient capacity is reserved
+by calling <xref href="GUID-A3EE1898-D58C-3C15-8A98-7BEF85963AEB.dita"><apiname>ReserveFreeCapacityL()</apiname></xref> function or <xref href="GUID-B7878C32-D093-3B15-A5B6-E91DA3A0961E.dita"><apiname>SetMaxLengthL() </apiname></xref> function
+before passing the LString as a TDes. When passed to a function as a TDes
+a USER 11 panic will be raised if the string is modified and the resulting
+length of this descriptor is greater than its maximum length. </p> <p>An example
+code snippet is shown below: </p> <codeblock id="GUID-2BDE3A6B-E974-5E30-AB1A-D670C64AD2F1" xml:space="preserve">
+void GetCurrentPath(TDes&amp; aDes)
+    {
+    aDes = KPath;
+    }
+. . .
+{
+    LString s;
+    test(s.MaxLength() == 0);
+    s.SetMaxLengthL(KMaxFileName);
+    GetCurrentPath(s);
+}
+</codeblock></info>
+</step>
+</steps-unordered>
+</taskbody><related-links>
+<link href="GUID-B1D5B680-00E3-5702-985A-94256180E2D8.dita"><linktext>Automatic
+Resource Management</linktext></link>
+<link href="GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482.dita"><linktext>Automatic
+Resource Management Class Templates Tutorial</linktext></link>
+<link href="GUID-B419D99E-8312-5336-9693-3ED8DFCD0559.dita"><linktext>Automatic
+Resource Management Tutorial</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C" xml:lang="en"><title>Clock:
+Analog and Digital Clocks example</title><shortdesc> </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-4DE456B7-D724-5591-93BE-ECDDC2CDFF89"><title>Purpose</title> <p>This
+example shows how to create and display a digital and analog clock. For more
+information about the API, see <xref href="GUID-A36C2DE6-21D8-5558-B223-1E81CEB16891.dita">Clock
+Overview</xref>. </p> </section>
+<section id="GUID-1C52A2F4-43C6-5C58-8FC1-0B90BAEAFCC7"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c26b23db-9a81-4fff-859b-ef08686838eb.zip" scope="external"> ClockExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c26b23db-9a81-4fff-859b-ef08686838eb.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname> CWsScreenDevice </apiname></xref></p><p><xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname> CFbsFont</apiname></xref></p><p><xref href="GUID-F84C7F40-6DEB-39D1-B172-CB0CC3918E27.dita"><apiname> 
+TRgb</apiname></xref></p><p><xref href="GUID-0D6ECBF5-EC03-3BF7-9C74-C0EC9BAF0CE6.dita"><apiname>  TAnalogDisplayHand</apiname></xref></p><p><xref href="GUID-8197A30D-29FD-3325-810D-EBCC2F970588.dita"><apiname> 
+STimeDeviceShadow</apiname></xref></p><p><xref href="GUID-800B3667-F45F-391F-A8A9-F876FB4ABC34.dita"><apiname>  RAnimDll</apiname></xref></p><p><xref href="GUID-17CFBF88-1C4A-3CAD-9299-C1698FA20401.dita"><apiname> 
+RDigitalClock</apiname></xref></p><p><xref href="GUID-6D7509CD-7AD9-3C5D-AFDB-6F23D17224C7.dita"><apiname>  RAnalogClock  </apiname></xref></p></section>
+<section id="GUID-92648AEA-CFFA-559E-908E-5BA84FF0C984"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-6CB77721-3A36-541D-B994-73D89D487678"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-7995C8BC-28D3-59A8-94E1-2957C1C3729A"><p>For the emulator, the
+example builds an executable called <filepath>clockexample.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-A36C2DE6-21D8-5558-B223-1E81CEB16891.dita"><linktext>Clock Overview</linktext>
+</link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79B4468A-2CF6-45E2-BC05-064CA300C12C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-79B4468A-2CF6-45E2-BC05-064CA300C12C" xml:lang="en"><title>Using
+skin support in buttons</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Buttons support skins by default. If the default button frames are not
+suitable, you can change them. Use the methods <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#9307c6a78e16837dddf3d55ad462cd03" format="application/java-archive"><codeph>SetFrameAndCenterIds()</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#9853c317f7f3801bd003c9aad7d9c8d6" format="application/java-archive"><codeph>SetBackgroundIds()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref> to change the button frame IDs. </p>
+<p>For further implementation information on skins, see the Skins
+API.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79B699F5-5EDE-5561-A385-19ED02248398.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-79B699F5-5EDE-5561-A385-19ED02248398"><title>Indexes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Indexes in the store database are B+tree structures with a fixed size key. This means that text keys may easily generate large indexes, and a maximum length text column cannot be indexed. </p> <p>Keys in DBMS may be truncated by specifying the length of a text column to be used in the index key. Such a key column must always be the last one in the key, to ensure that the index provides a true ordering. If a text key column does not supply a truncation length, the full length of the table column is used.</p> <p>Apart from <codeph>Binary</codeph> and <codeph>LongBinary</codeph> columns, all types can be used in an index key including <codeph>LongText8</codeph> and <codeph>LongText16</codeph>, although these must supply a truncation length (as they have no maximum length) and must therefore be the last key columns in the key.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-79BAF19D-F003-5468-9C01-6E918B06C36D" xml:lang="en"><title>Descriptor
+concepts</title><shortdesc>These documents describe descriptor concepts.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48-master.png has changed
Binary file Symbian3/SDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e165808_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79CE15C5-B595-5336-AE87-DE92990F6D47.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-79CE15C5-B595-5336-AE87-DE92990F6D47" xml:lang="en"><title>Storing and restoring</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79CFCC01-7418-5ECA-AF65-1DCAD97AA7A6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-79CFCC01-7418-5ECA-AF65-1DCAD97AA7A6"><title>Battery Information Tutorial</title><shortdesc>This tutorial describes the steps to retrieve the battery information from the device. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-F83E8419-F662-5A61-9323-0D75C9908170"> <step id="GUID-7B5254D8-C262-519B-B3FF-D57A2D7B6243"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> with active objects </info> </step> <step id="GUID-0605977A-E621-5C84-AC94-005D21BD2E95"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetBatteryInfo()</apiname></xref> to get the battery information </info> </step> <step id="GUID-F8997D43-283B-5879-8BD5-AC97DE965229"><cmd/><info>the function returns the information in <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TBatteryInfoV1</apiname></xref>  </info> <info>The result contains the battery charge level and the battery status. </info> </step> <step id="GUID-C232F8FF-D1AE-56ED-A608-341892D7716A"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetBatteryInfoCancel</apiname></xref> to cancel the asynchronous function </info> </step> <step id="GUID-DD9ABED8-3992-502F-8913-200029FF2B08"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EBatteryInfoChange</apiname></xref> to get the notification of any changes to the battery information </info> </step> <step id="GUID-58FE9960-9B4E-56F7-B36D-3FACD884E8A1"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EBatteryInfoChangeCancel</apiname></xref> to cancel the notification request. </info> </step> </steps> <example id="GUID-A61FA77E-BD0D-5A31-B558-DA98252B6717"><title>Battery information example</title> <codeblock id="GUID-D97E8177-1EE7-579B-AADB-4F3B084CD539" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+  { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TBatteryInfoV1 iBatteryInfoV1;
+    CTelephony::TBatteryInfoV1Pckg iBatteryInfoV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iBatteryInfoV1Pckg(iBatteryInfoV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetBatteryInfo(iStatus, iBatteryInfoV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       CTelephony::TBatteryStatus batteryStatus = iBatteryInfoV1.iStatus;
+       TUint chargeLevel = iBatteryInfoV1.iChargeLevel;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetBatteryInfoCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79E8BE3D-9EF7-5275-A245-3CF689E58DE9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-79E8BE3D-9EF7-5275-A245-3CF689E58DE9"><title>Layout Conventions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian OS code is laid out in a standard way. Symbian developers and organisations usually have existing preferences for these issues. This information is provided to help you to read Symbian OS code, even if you do not choose to adopt the same layout yourself. </p> <section><title>Headers</title> <ul><li id="GUID-F50F1F83-A9D6-590B-AA12-239823B40B27"><p>the number of headers included is minimised, forward references being preferred where possible. </p> </li> <li id="GUID-FECBB5C1-0C45-52AF-8CA3-B9F62801EFCA"><p>the standard anti-nesting method is used to avoid multiple inclusion of headers: for example, </p> </li> </ul> <codeblock id="GUID-744E1BA3-112B-5F0E-9A41-82AD6A1B7C00" xml:space="preserve">// EG.H
+//
+// Copyright notice
+//
+
+#ifndef _EG_H_
+#define _EG_H_
+//...include files and declarations
+#endif</codeblock> </section> <section><title>Class layout</title> <p>Symbian OS code uses the following conventions for laying out class declarations: </p> <p><b>General</b> </p> <ul><li id="GUID-46510CC9-C7B0-528E-BB68-7A64BFC7BC61"><p>access control specifiers are always given for readability </p> </li> <li id="GUID-5EEB5EDA-848E-55C4-A9E8-8DDFE3091A01"><p>class members are declared in the following order: public member functions, protected member functions, private member functions, protected data, private data, public data. The appropriate access specifier is given at the start of each group. </p> </li> <li id="GUID-4A576792-75EA-543A-A6B4-B5357E4AE850"><p>for readability, function arguments are named in the function declaration as well as the definition </p> </li> </ul> <p><b>Virtual functions</b> </p> <ul><li id="GUID-A66F4D3B-B259-59D8-9519-E173E4071015"><p>virtual functions that replace inherited behaviour are grouped together in the header, with a comment documenting from which class the behaviour is inherited </p> </li> <li id="GUID-16B867BB-7612-5D89-8E8E-947645EB3677"><p>the <codeph>virtual</codeph> keyword is not given for these functions </p> </li> <li id="GUID-42B49550-7AEE-5E30-825C-5F17F5DBB300"><p>virtual functions are not made inline, as it is difficult to know exactly how a compiler treats these. The exception to this are virtual inline destructors, which are allowed. </p> </li> </ul> <p><b>Inline functions</b> </p> <ul><li id="GUID-00EEDE0A-3BC8-5359-B82A-7E864713F63E"><p>specify <codeph>inline</codeph> explicitly for inline functions. </p> </li> <li id="GUID-C0F56E55-A81D-578F-8605-6FF7A1ACB7A5"><p>do not provide the implementation in the class declaration. Instead, implementations are provided at the bottom of the header or in a separate <filepath>inl</filepath> file. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9" xml:lang="en"><title> Dictionary stores</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7A1B0CAC-BA12-512A-98B0-86CD317E4B24.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7A1B0CAC-BA12-512A-98B0-86CD317E4B24"><title>unfunction</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>unfunction </userinput> </p> <p>Same as <xref href="GUID-C2A203B1-3D30-5CC0-BAF8-0624E9A8B2A9.dita">unhash</xref>  <codeph>-f</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7A22FBD7-F306-578C-BD54-BCF74B7343CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7A22FBD7-F306-578C-BD54-BCF74B7343CF"><title>-keepgoing</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option tells a particular <filepath>abld</filepath> command to “keep going” even if unrelated build steps report errors.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C" xml:lang="en"><title>Template
+extension makefiles</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A template extension makefile is a makefile which is integrated into the
+Symbian platform build system, such that it can be re-used by providing different
+input values as parameters. This facility allows extension makefiles to separate
+behaviour of the makefile from its input data. For example, you might want
+to copy files from one location to another using a template extension makefile
+which represents the required behaviour. The location from where these files
+have to be copied is represented by the input data, which can be specified
+in the <filepath>bld.inf</filepath> file using <xref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita">prj_extensions</xref>. </p>
+<p> <i>Note that it is recommended to follow GNU make syntax to define template
+extension makefiles. For more details on GNU make syntax, refer </i> <xref href="http://www.gnu.org" scope="external">http://www.gnu.org</xref>. </p>
+<p>The template extension makefiles are invoked by the build system which
+defines a set of standard makefile variables. These variables can have well
+defined values and help the makefile writer to locate common directories,
+configurations and so on. The proper usage of these variables may result in
+achieving platform independence to a certain extent. It is highly recommended
+to use these variables wherever it is necessary. </p>
+<p>The following is a list of the variables defined: </p>
+<table id="GUID-FB51BFC4-5BB2-54C9-ACAA-A14F725C2706">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Variable name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>$(EPOCROOT)</codeph>  </p> </entry>
+<entry><p>Location of the <codeph>epoc32</codeph> tree. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(PLATFORM)</codeph>  </p> </entry>
+<entry><p>The current platform which can be <codeph>TOOLS</codeph>, <codeph>ARMV5</codeph>, <codeph>WINSCW</codeph> etc. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(CFG)</codeph>  </p> </entry>
+<entry><p>The current configuration either <codeph>UREL</codeph> or <codeph>UDEB</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(TO_ROOT)</codeph>  </p> </entry>
+<entry><p>Relative path to <codeph>EPOCROOT</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(TO_BLDINF)</codeph>  </p> </entry>
+<entry><p>The path to the top-level <filepath>bld.inf</filepath>. </p> <p> <i>Note:
+if a bld.inf file #includes another bld.inf, this variable will always contain
+the directory of that top-level file. If you require the directory of the
+bld.inf which actually references the makefile, use $(EXTENSION_ROOT) instead.</i>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(EPOCBLD)</codeph>  </p> </entry>
+<entry><p>The project’s “working” build directory under <codeph>\epoc32\build\…</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(EXTENSION_ROOT)</codeph>  </p> </entry>
+<entry><p>The path to the directory containing the <filepath>bld.inf</filepath> in
+which the extension makefile was called. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(HOST_SHELL) </codeph>  </p> </entry>
+<entry><p>The path of the host-platform specific (i.e. the shell) makefile
+containing the above definitions. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$/</codeph>  </p> </entry>
+<entry><p>Path element separator. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$;</codeph>  </p> </entry>
+<entry><p> <codeph>PATH</codeph> environment variable separator. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(RMDIR)</codeph>  </p> </entry>
+<entry><p>Command for directory removal. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(RM)</codeph>  </p> </entry>
+<entry><p>Command for file deletion. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(ERASE)</codeph>  </p> </entry>
+<entry><p>Command for file deletion. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(MKDIR)</codeph>  </p> </entry>
+<entry><p>Command for directory creation. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(CP)</codeph>  </p> </entry>
+<entry><p>Command for file copying. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(PLATFORM_PATH)</codeph>  </p> </entry>
+<entry><p>The current platform in lower case to be used as part of path names. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>$(CFG_PATH)</codeph>  </p> </entry>
+<entry><p>The current configuration in lower case to be used as part of path
+names. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>The extension makefiles integrated into the build system should support
+a number of phony targets which correspond to different phases of the Symbian
+platform build process. These phony targets are labels representing a set
+of commands to be executed to perform a task. For more information on these
+phony targets, refer to <xref href="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita">Extension
+makefile targets</xref>. </p>
+<p>The commands for a phony target can be platform specific operations such
+as creating a directory, removing a directory, copying a file and so on. It
+is recommended to use the above listed variables to perform these platform
+specific operations, instead of invoking the command directly. </p>
+<p>For example, the following will delete the files <filepath>values.cpp</filepath> and <filepath>config.cpp</filepath> for
+the target CLEAN. </p>
+<codeblock id="GUID-13E04491-476A-5DC0-B487-5E711051B7A2" xml:space="preserve">CLEAN : 
+  -$(ERASE) $(MDIR)$/values.cpp
+  -$(ERASE) $(MDIR)$/config.cpp</codeblock>
+<p> <i>Note that any path within a template extension makefile is recommended
+to use the path separator variable $/ as listed in the above table.</i>  </p>
+<p>A template extension makefile can be referenced in the <filepath>bld.inf</filepath> file
+using the <codeph>prj_extensions</codeph> keyword. For more information on
+how to reference a template extension makefile, see <xref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita">prj_extensions</xref>. </p>
+<p>Each template extension makefile has an associated meta file which provides
+additional information such as the template makefile type, the platform for
+which the template can be applied and so on. It is mandatory to have a meta
+file with each template extension makefile. For information on meta file syntax,
+refer to <xref href="GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita">Meta files</xref>. </p>
+<p> <i>Note that all the template extension makefiles along with their meta
+files need to be located under the \epoc32\tools\makefile_templates\ folder.</i>  </p>
+<example><p>This example will copy the source files to a target
+path, build the component using the target copy of the source files, and finally
+delete the target copy of the source files. </p><codeblock id="GUID-94E381AB-129C-5D62-AAEC-54432DFAE786" xml:space="preserve"># copy_default.mk
+#
+
+SOURCE_COPY=$(EPOCROOT)epoc32$/release$/$(PLATFORM_PATH)$/$(CFG_PATH)$/$(SOURCES)
+
+TARGET_COPY=$(EPOCROOT)epoc32$/release$/$(PLATFORM_PATH)$/$(CFG_PATH)$/$(TARGET)
+
+$(TARGET_COPY) : $(SOURCE_COPY)
+    $(CP) "$?" "$@"
+
+DO_NOTHING :
+  @rem do nothing
+
+MAKMAKE : 
+
+BLD : $(TARGET_COPY)
+
+SAVESPACE : BLD
+
+FREEZE : DO_NOTHING
+
+LIB : DO_NOTHING
+
+CLEANLIB : DO_NOTHING
+
+RESOURCE : DO_NOTHING
+
+CLEAN : 
+    -$(ERASE) $(TARGET_COPY)
+
+RELEASABLES : 
+    @echo $(TARGET_COPY)
+
+FINAL : 
+</codeblock></example>
+</conbody><related-links>
+<link href="GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5.dita"><linktext>How to write
+an extension makefile template</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e382893_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7A71CD0B-84C7-5A77-B573-C61F67C382DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7A71CD0B-84C7-5A77-B573-C61F67C382DA" xml:lang="en"><title>Summary
+of cleanup rules</title><shortdesc>This document states general rules for cleanup.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The general rules for cleanup during the lifetime of an object are:</p>
+<ul>
+<li id="GUID-AEE55F10-3FD5-5B09-B025-C5499DE7B312"><p>between the moment the
+object is allocated, and the moment that a pointer to that object is stored
+in a structure which would be accessible if a leave occurred, the object must
+be pushed to the clean-up stack if a leave could possibly occur</p> </li>
+<li id="GUID-B69DDE00-FE4C-582F-B5FA-0FA7684591F6"><p>when a pointer to the
+object has been stored in an object which would be accessible if a leave occurred,
+then the object should be popped from the cleanup stack before a leave could
+possibly occur: normally, the object is popped first, and then the pointer
+is stored</p> </li>
+<li id="GUID-D8D6B31E-0B9F-56C6-B9B0-2197549E78FC"><p>an object is accessible
+if a leave occurs, if either it is pushed to the cleanup stack, or there is
+a reference to it from another object which would be accessible if a leave
+occurred, or there is a reference to it from a stack frame which would not
+be affected when a leave occurs (because of an appropriately-placed <codeph>TRAP</codeph>),
+or there is a reference to it from a global variable</p> </li>
+<li id="GUID-4F508BDB-59D1-52EA-84C2-CABE3E9339EC"><p>it should never be possible
+to clean up an object more than once, if a leave occurred</p> </li>
+</ul>
+<p>In practice, this means that an object must be referred to either by a
+cleanup stack frame, or by a reference from another object. More rarely, the
+object may be referred to by a stack frame which cannot be unwound during
+the lifetime of that object, because of an appropriate <codeph>TRAP</codeph>.
+More rarely still, the object may be referred to by a global variable.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7A7254E3-A03A-5B38-B2B5-FFEEE70F5E93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7A7254E3-A03A-5B38-B2B5-FFEEE70F5E93" xml:lang="en"><title>Embedded
+SIS Files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An embedded SIS file is a file that is placed in another SIS file. Embedded
+SIS files are useful for packaging multiple components into a single SIS file.
+These components can be removed independent of one another. For example, if
+a SIS file needs to install an application and a library that is shared with
+other installed applications, the shared library can be installed as an embedded
+SIS file, so that when the application is uninstalled, the shared library
+remains on the Symbian device if required. </p>
+<p>Embedded SIS files are installed and removed along with the file that is
+embedding the SIS file. However, an embedded SIS file cannot be removed if
+another installed component has declared a <xref href="GUID-DB220677-5998-529C-BE35-0D66F588E057.dita">dependency</xref> on
+it. This depends on the security policy setting, <codeph>RemoveOnlyWithLastDependent</codeph> defined
+in the installation policy file.</p>
+
+<p>The Nested (embedding and the embedded) SIS files are processed as separate
+installations. This means that the Embedding (outer) SIS file does not propagate
+capabilities to the embedded (inner) SIS file. However, an Embedding (outer)
+SIS file can be dependent on an embedded SIS file. </p>
+<p> <b>Note</b>: If the installation of the embedded SIS fails, the entire
+installation fails. </p>
+<p>An embedded SIS file can be a partial upgrade (<codeph>PU</codeph>) or
+patch upgrade (<codeph>SP</codeph>) package type. However, the base package
+must have already been installed on the Symbian device. This implies that
+if the base package and the upgrade are both embedded in the same SIS file,
+the statement that installs the base package must occur in the source PKG
+file before the statement that installs the upgrade or patch. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7A9FBE3A-D75E-59FC-9ACD-196670F0F9C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7A9FBE3A-D75E-59FC-9ACD-196670F0F9C8" xml:lang="en"><title>Constant
+literal text</title><shortdesc>Constant literals are objects containing constant literal text
+which can be placed by the compiler into read-only memory. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>They are also referred to as <i>literal descriptors</i>. They are not true
+descriptors, they are <i>not</i> derived from the descriptor classes, but
+they do have conversion operators so that they can be passed to any function
+which takes a <codeph>const TDesC16&amp;</codeph> type, a <codeph>const TDesC8&amp;</codeph> type
+or a <codeph>const TDesC&amp;</codeph> type. </p>
+<p>Constant literal descriptors are constructed using the macros: </p>
+<ul>
+<li id="GUID-9C594461-1222-525B-B335-354CD88B10E8"><p> <codeph>_LIT16</codeph>  </p> </li>
+<li id="GUID-6B39451F-9F57-5B07-9092-6F4AFD0584F6"><p> <codeph>_LIT8</codeph>  </p> </li>
+<li id="GUID-32945A96-0230-5BCF-8504-738DD5608D57"><p> <codeph>_LIT</codeph>  </p> </li>
+</ul>
+<p>The <codeph>_L16</codeph>, <codeph>_L8</codeph> and <codeph>_L</codeph> macros,
+which perform a similar function, are retained for compatibility purposes,
+but all production code that requires literal text should use literal descriptors. </p>
+<section id="GUID-7CDEA4A3-7C16-4833-B048-2C08BDA04DA0"><title>_LIT16</title> <p>This macro constructs the 16 bit variant
+constant literal descriptor for Unicode strings. The literal descriptor object
+is an instance of a <codeph>TLitC16</codeph> class and the macro generates <codeph>const
+static           TLitC16</codeph> in the C++ code. </p> </section>
+<section id="GUID-A1FAD942-4009-43A2-B95B-FDB221656645"><title>_LIT8</title> <p>This macro constructs the 8 bit variant constant
+literal descriptor for non-Unicode strings. The literal descriptor object
+is an instance of a <codeph>TLitC8</codeph> class and the macro generates <codeph>const
+static           TLitC8</codeph> in the C++ code. </p> </section>
+<section id="GUID-285C1C21-C840-4A97-992B-F3F95D30F94B"><title>_LIT</title> <p>This macro constructs the build independent
+type constant literal descriptor. The literal descriptor object is an instance
+of a <codeph>TLitC</codeph> class and the macro generates <codeph>const static
+          TLitC</codeph> in the C++ code. By using this type, the appropriate
+variant, either 16 bit or 8 bit is selected at build time depending on whether
+the <codeph>_UNICODE</codeph> macro has been defined or not. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7AAAC6EA-784D-51E6-AD6B-521C9F5C4DBD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7AAAC6EA-784D-51E6-AD6B-521C9F5C4DBD" xml:lang="en"><title>Zip Compression
+Library Tutorials</title><shortdesc>The Zip Compression Library, EZLib compresses files to two formats
+namely zip and gzip. EZLib also allows clients to decompress data from file
+archives and memory streams. The compression and decompression tasks are performed
+iteratively until task completion. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7AB66E79-1B75-50FE-ADA2-07B92B11D478.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7AB66E79-1B75-50FE-ADA2-07B92B11D478" xml:lang="en"><title>Date And Time Handling</title><shortdesc>Topics related to handling Date and Time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7" xml:lang="en"><title>General
+events</title><shortdesc>In this context, a general event is any kind of event that is generated
+by the Window Server and delivered to the client, with the exception of redraw
+and priority key events. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Application developers. </p>
+<p>All events generated by the Window Server, except redraw events and priority
+key events, are delivered to the client in a <codeph>TWsEvent</codeph> which
+is requested asynchronously by the <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-0F961C4D-A731-3AE0-8425-BB304CCF2736"><apiname>RWsSession::EventReady()</apiname></xref> function.
+When this request completes, it is handled by an active object <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita#GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F/GUID-5D018F25-5173-36C1-A0B9-5C3A33211C5D"><apiname>CActive::RunL()</apiname></xref> function
+which must use <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-06AA86EE-4494-3990-935A-62B9E995DAC2"><apiname>RWsSession::GetEvent()</apiname></xref> to get the <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent</apiname></xref> representing
+the event. The <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita#GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31/GUID-8FA62E05-3FE8-39B0-81ED-5FBF2D941739"><apiname>TWsEvent::Type()</apiname></xref> function is used to identify
+the event type which can then retrieve the appropriate type of data. </p>
+<p>The following table lists for each event type returned by <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita#GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31/GUID-8FA62E05-3FE8-39B0-81ED-5FBF2D941739"><apiname>TWsEvent::Type()</apiname></xref>,
+what object <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita#GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31/GUID-13CA6935-906D-368D-8AEA-C91722FD4484"><apiname>TWsEvent::EventData()</apiname></xref> returns, and what the <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita#GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31/GUID-D3C8402C-F6C1-3F9F-A3E4-0C5D782BCB3B"><apiname>TWsEvent::Handle()</apiname></xref> represents. </p>
+<table id="GUID-C9628ADC-3B69-502A-86DE-9B531E4F9C36">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>TWsEvent::Type()</b>  </p> </entry>
+<entry><p> <b>TWsEvent::EventData()</b>  </p> </entry>
+<entry><p> <b>TWsEvent::Handle()</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A732E57F-EEF0-3276-AE32-6D43433A52C1.dita"><apiname>EEventNull</apiname></xref>  </p> </entry>
+<entry><p>n/a </p> </entry>
+<entry><p>n/a </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-52320E57-26F3-3CF2-833B-D133A7FF407D.dita"><apiname>EEventKey</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-0F8FA6A3-F172-36E4-9CF5-60814ABCD562.dita"><apiname>TKeyEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-134B5EE2-C56B-3B12-9392-D855C8D1E688.dita"><apiname>EEventKeyUp</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-0F8FA6A3-F172-36E4-9CF5-60814ABCD562.dita"><apiname>TKeyEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-14570DB4-92CF-3233-9B58-910BDFB7AA21.dita"><apiname>EEventKeyDown</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-0F8FA6A3-F172-36E4-9CF5-60814ABCD562.dita"><apiname>TKeyEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B91D402F-880A-3A6C-A635-0EA596D758AB.dita"><apiname>EEventModifiersChanged</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-2BB50790-20B3-3F02-B94F-32F1F25088EC.dita"><apiname>TModifiersChangedEvent</apiname></xref>  </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableModifierChangedEvents()</codeph> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4B20CDF2-EEEC-3963-80F0-6CFE1DAD1B1E.dita"><apiname>EEventPointer</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4C658DF7-A277-323E-8CEF-248CCB1DB5B3.dita"><apiname>EEventPointerEnter</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-41AC379A-1528-3E06-9FFC-18B084C00182.dita"><apiname>EEventPointerExit</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-0C2C336A-2477-333A-9256-440112ABFE01.dita"><apiname>EEventPointerBufferReady</apiname></xref>  </p> </entry>
+<entry><p>None - call <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita#GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34/GUID-C6BBCA6B-1867-36D9-AFCE-23B2DBD60D41"><apiname>RWindowBase::RetrievePointerMoveBuffer()</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D8117586-0B73-3C2C-836A-0EE657307F21.dita"><apiname>EEventDragDrop</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D772DB47-64EC-3EC4-A96F-651E57950C98.dita"><apiname>EEventFocusLost</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p> <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D676F562-6B90-34C7-9A77-094FF318F373.dita"><apiname>EEventFocusGained</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p> <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-28734D1F-0B5D-3BD7-BFEF-1BFCF86C115F.dita"><apiname>EEventSwitchOn</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableOnEvents()</codeph> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-CED18E61-2843-3C6E-8097-15D94066F456.dita"><apiname>EEventPassword</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> of the
+window on which <codeph>PasswordWindow()</codeph> was called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-65C5CFC3-59E5-3D23-9594-C7E9546CFA53.dita"><apiname>EEventWindowGroupsChanged</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita#GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D/GUID-69E4997A-05F8-3597-A4F6-F785D825C18F"><apiname>RWindowTreeNode::EnableGroupChangeEvents()</apiname></xref> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3FEDC3D5-2970-3BA3-8357-D053189ABD84.dita"><apiname>EEventErrorMessage</apiname></xref>  </p> </entry>
+<entry><p> <xref href="GUID-741974B7-E1A6-3D10-9428-C978E9815FF8.dita"><apiname>TWsErrorMessage</apiname></xref>  </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableErrorMessages()</codeph> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-84D3B6AD-EC6C-3976-884C-B69606E572B4.dita"><apiname>EEventMessageReady</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p> <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> client handle </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-95EA6ECD-5826-3444-8EF7-9D580F34A9B6.dita"><apiname>EEventMarkInvalid</apiname></xref>  </p> </entry>
+<entry><p>n/a </p> </entry>
+<entry><p>n/a </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D32F82E6-020F-300C-957A-3FB0732AD432.dita"><apiname>EEventSwitchOff</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> passed
+into <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-5785C563-A814-33AB-B031-E7AFEE04AA52"><apiname>RWsSession::RequestOffEvents()</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-380E2291-BA47-3275-9E80-029CB5421E19.dita"><apiname>EEventKeySwitchOff</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> passed
+into <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-5785C563-A814-33AB-B031-E7AFEE04AA52"><apiname>RWsSession::RequestOffEvents()</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-CC1E6B2E-F68F-3A00-B4EA-4917007F7320.dita"><apiname>EEventScreenDeviceChanged</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the object on which <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-347F1B5F-726F-3B1B-9764-E0D6EF2C6B12"><apiname>RWindowGroup::EnableScreenChangeEvents()</apiname></xref> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6426E0A6-35F2-3704-962C-0A8AE8AF7226.dita"><apiname>EEventDisplayChanged</apiname></xref> </p> </entry>
+<entry><p> <xref href="GUID-BE2F1305-EB64-3A15-9BD7-38267A96D332.dita"><apiname>TWsDisplayChangedEvent</apiname></xref>  </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref> object
+on which <xref href="GUID-0C384D35-77DD-318E-AF3E-C9ED5ADD9D11.dita#GUID-0C384D35-77DD-318E-AF3E-C9ED5ADD9D11/GUID-6C3311C5-658A-372A-8E71-27E0D728E8B5"><apiname>MDisplayControl::                 EnableDisplayChangeEvents()</apiname></xref> was
+called. See <xref href="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita">Display
+Control and Mapping in the Window Server Client</xref> for more information. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-C2615B3C-9429-31F0-94B5-2EA336F506DE.dita"><apiname>EEventFocusGroupChanged</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableFocusChangeEvents()</codeph> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-724E8B4B-A018-35FE-A976-B50B4AD37A9A.dita"><apiname>EEventWindowVisibilityChanged</apiname></xref>  </p></entry>
+<entry><p> <xref href="GUID-F7CDA73B-AA31-3174-B7DD-0D7DC1505447.dita"><apiname>TWsVisibilityChangedEvent</apiname></xref>  </p></entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableVisibilityChangeEvents()</codeph> was
+called. </p></entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1CBB7D32-8544-3291-ADE5-2BCDAD5840E3.dita"><apiname>EEventCaseOpened</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableOnEvents()</codeph> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-8E2BB38A-13A6-309F-AC32-4966DAF9CEB9.dita"><apiname>EEventCaseClosed</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> passed
+into <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-5785C563-A814-33AB-B031-E7AFEE04AA52"><apiname>RWsSession::RequestOffEvents()</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-BAD749BC-47D1-3FE1-8073-FF404DA65A2E.dita"><apiname>EEventWindowGroupListChanged</apiname></xref>  </p> </entry>
+<entry><p>None </p> </entry>
+<entry><p>The client handle of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode</apiname></xref> on which <codeph>EnableGroupListChangeEvents()</codeph> was
+called. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9D83496D-2DE1-3217-8BB8-F0A6D82BA9FF.dita"><apiname>EEventKeyRepeat</apiname></xref>  </p> </entry>
+<entry><p>n/a (only sent to the key click plug-in interface) </p> </entry>
+<entry><p>n/a </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-946FF333-2651-35ED-A2D4-CC417DB32F2A.dita"><apiname>EEventUser</apiname></xref>  </p> </entry>
+<entry><p>n/a </p> </entry>
+<entry><p>n/a </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody><related-links>
+<link href="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita"><linktext>Pointer Handling</linktext>
+</link>
+<link href="GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita"><linktext>Declaring
+a Window Server Event-Handling Class</linktext></link>
+<link href="GUID-B830A1F7-9220-5879-80BE-C494A4CD155B.dita"><linktext>Handling
+General Events</linktext></link>
+<link href="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita"><linktext>Processing
+Window-Group Events</linktext></link>
+<link href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita"><linktext>Processing
+Window Events</linktext></link>
+<link href="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita"><linktext>Processing
+System Events</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e13258_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7AE34C8A-50C6-49BA-9E43-AE76873B5E12.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7AE34C8A-50C6-49BA-9E43-AE76873B5E12" xml:lang="en"><title>Handling
+toolbar item events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section>      <p>To be able to receive toolbar item events in your application
+or application view, you must implement the toolbar observer interface in
+the view and register the view to the toolbar:</p> <p>To receive toolbar item
+events, use the observer class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknToolbarObserver.html" format="application/java-archive"><codeph>MAknToolbarObserver</codeph></xref>.</p>      <p>The example below shows how to set the toolbar observer.</p> 
+    <codeblock xml:space="preserve">void CMyAppView::ConstructL( TInt aResId )
+    {
+    BaseConstructL( aResId );
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        toolbar-&gt;SetToolbarObserver( this );
+        }
+    }
+</codeblock>     </section>
+<section>       <p>Handle toolbar item events in <codeph>MAknToolbarObserver</codeph>’s <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknToolbarObserver.html#af95495179253d4ce78609feb8c64d14" format="application/java-archive"><codeph>OfferToolbarEventL()</codeph></xref>.</p><p><codeph>OfferToolbarEventL()</codeph> is called when the toolbar
+item state has changed, for example when a button is pressed. When handling
+a toolbar event, the control in question can be identified from the commandid
+that is sent as a parameter in the method. The ID belongs to that control
+it was sent from (in case of a button, the ID of the button that was pressed).</p> 
+           <p>The example below illustrates how to implement <codeph>OfferToolBarEventL()</codeph>.</p> 
+     <codeblock xml:space="preserve">void CMyAppView::OfferToolbarEventL( TInt aCommandId )
+    {
+    if ( aCommandId == KButtonId )
+        {
+        // do button function
+        …
+        }
+    }
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7AE4913D-18CE-5F17-A6B1-6E3F6975A178.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7AE4913D-18CE-5F17-A6B1-6E3F6975A178"><title>Window Group Priority</title><shortdesc>In addition to having an ordinal position, all windows have a priority, which is 0 by default. A window's priority can be changed in order to allow it to override the normal z-order determined by ordinal position. Although this can be done for any type of window, in practice it is generally only window groups that have their priorities changed, and this is normally carried out by special applications such as the shell. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>: Application developers. </p> <p>The ordinal position of a window only applies within the set of windows that have the same priority as that window. If a window group is given a priority higher than other window groups, it is positioned in front of all windows of lower priority, regardless of their ordinal positions. If a window group is given a priority of 1, for example, and all other window groups have a priority of 0, it is moved to the <keyword>foreground</keyword> and all other window are prevented from overlapping it or from getting the keyboard focus (unless it has disabled receipt of keyboard focus). </p> <p>Similarly, if a window group is given a priority of –1, and all other window groups have a priority of 0, it does not get keyboard focus or move to the front of any other window group, whatever its ordinal position is set to. Such a setting might, for example, be used for a background "wallpaper" application. </p> <section><title>Full ordinal position</title> <p>The <keyword>full ordinal position</keyword> of a window group is its ordinal position, taking into account window groups of other priorities. For example, if window group A has priority 0 and ordinal position 0, but window group B has a priority of 1, then window group A’s <i>full</i> ordinal position is 1, not 0. </p> <p>Full ordinal position is usually only meaningful for window groups, although it also exists for other windows. Other windows are typically not given different priorities. Consequently their ordinal positions and full ordinal positions are usually the same. </p> </section> </conbody><related-links><link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e165940_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576" xml:lang="en"><title>Highlighting</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a list or grid is in use, one item in it is always in focus. The item
+in focus is indicated by a graphical means called highlighting.</p>
+<p>The appearance of highlighting on a list item is a colored (theme related)
+bar, which completely occupies the item in focus. The item text and graphics
+are displayed on the bar.</p>
+<p>Grid item highlighting is a frame over the item in focus.</p>
+<fig id="GUID-585A51C7-0C61-4CE6-AD82-9AAB2C50DA4A">
+<title>List highlighting (a) and grid highlighting (b)</title>
+<image href="GUID-87AA5195-AFC4-42C9-B9BC-B31008CA3882_d0e54417_href.png" scale="40" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7B173E02-9697-51F4-A7E8-795AEF547109" xml:lang="en"><title>Thread
+Priority Scheme</title><shortdesc>Explains the factors involved in allocating thread priority.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>At any given time, the thread running on Symbian platform is the one with
+the highest priority that is ready to run. The priority of a thread is simply
+a number; the value determines the priority; the greater the number, the higher
+the priority. We call this the <i>true</i> or <i>absolute</i> priority of
+the thread. </p>
+<p>The Kernel schedules a fixed amount of time called a <i>quantum</i> for
+a thread to run on the CPU, and the scheduler chooses the highest priority
+thread that is ready to run. Threads of equal priority are executed on a <i>round
+robin basis</i>. </p>
+<p>The <i>true</i> priority values range from 0 (lowest) to 63 (highest). </p>
+<p>The priority range divides into four broad categories: </p>
+<table id="GUID-1EAC04DE-B68F-5F95-887C-39E9926F2500">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>0</p> </entry>
+<entry><p>This is reserved for the <i>null thread</i>, which puts the processor
+into idle mode to save power when no other threads are ready to run. </p> </entry>
+</row>
+<row>
+<entry><p>1 - 23 </p> </entry>
+<entry><p>Used by kernel side threads and user-side applications and servers </p> </entry>
+</row>
+<row>
+<entry><p>24 -31 </p> </entry>
+<entry><p>Used by kernel side threads and protected system servers, i.e. servers
+with the <codeph>ProtServ</codeph> capability. </p> </entry>
+</row>
+<row>
+<entry><p>32 - 63 </p> </entry>
+<entry><p>Reserved for real-time threads running on the kernel side. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<fig id="GUID-5FFD4994-B20D-5095-8F6E-FB1151A4FF79">
+<image href="GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e221479_href.png" placement="inline"/>
+</fig>
+<ul>
+<li id="GUID-2BCF03FE-C23E-5CCA-87CF-4AE9A91FD0D8"><p> <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-0194B574-806B-5BA3-B65C-6DC5A80CAB86">Priority scheme for general user-side threads</xref>  </p> </li>
+<li id="GUID-000499D5-EE19-5838-90CD-8C13AC468A52"><p> <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-23801A52-4E62-56F4-8D81-E0A417517FDA">Priority scheme for real-time user-side threads</xref>  </p> </li>
+<li id="GUID-1BA97FE4-F817-50E4-A6DA-6B0B64819811"><p> <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF">Thread priority value mapping table</xref>  </p> </li>
+<li id="GUID-2BB44CDE-B566-52C0-869C-C60FB8D6AD94"><p> <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-E9AFB6A3-ED3E-5110-82C8-E5E15E0AF899">Platform security notes</xref>  </p> </li>
+</ul>
+<section id="GUID-0194B574-806B-5BA3-B65C-6DC5A80CAB86"><title>Priority scheme
+for general user-side threads</title> <p>User-side threads do not allocate <i>true</i> priority
+values directly. Instead, they allocate priorities using symbolic values defined
+by enums. Symbian platform maps these values to the <i>true</i> value. </p> <p>There
+are two priority allocation schemes: </p> <ul>
+<li id="GUID-6BE65AEC-DC54-5350-8704-538B5E425352"><p> <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-B9022468-F4E7-536B-B1D4-58DAA9EA5914">Process-relative scheme</xref>  </p> </li>
+<li id="GUID-BBB502EA-950C-5F8C-8CA2-F5F339000A10"><p> <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-7A38EE63-E955-5432-84E1-F35CB45C931E">Process-independent scheme for general user threads</xref>  </p> </li>
+</ul> <p id="GUID-B9022468-F4E7-536B-B1D4-58DAA9EA5914"><b>Process-relative scheme</b> </p> <p>This
+scheme bases the <i>true</i> priority of a thread on the priority of its owning
+process and the priority of the thread relative to the process. This means
+that changing the process priority results in a change to the <i>true</i> priority
+of the thread. </p> <p>A process can be assigned one of eight discrete priorities
+represented by the individual enumerators of <xref href="GUID-5D289F30-2C88-396D-9748-798055F0AF56.dita"><apiname>TProcessPriority</apiname></xref>,
+and range from <xref href="GUID-9B7922A7-6098-3BBD-9ADE-BC21AD6381C3.dita"><apiname>EPriorityLow</apiname></xref>, the lowest, to <xref href="GUID-A35268D0-7EFC-3D58-8C79-E4E619F762F5.dita"><apiname>EPrioritySupervisor</apiname></xref>,
+the highest. </p> <p>In practice, <i>user processes</i> can only be assigned
+priorities that are one of the values: </p> <ul>
+<li id="GUID-85AA4A1D-A168-5AEF-9D4C-DC14C28686B2"><p> <xref href="GUID-9B7922A7-6098-3BBD-9ADE-BC21AD6381C3.dita"><apiname>EPriorityLow</apiname></xref> <codeph/>  </p> </li>
+<li id="GUID-45B720BB-3696-545F-B966-A2EA4B37AE5D"><p> <xref href="GUID-8778A277-DA7F-34A0-8472-29226DEC2CCE.dita"><apiname>EPriorityBackground</apiname></xref>  </p> </li>
+<li id="GUID-DF2708D4-B670-5B15-B587-CB71EAC99045"><p> <xref href="GUID-A62CF9B2-63E3-31E0-A51E-E04F2E2EB38F.dita"><apiname>EPriorityForeGround</apiname></xref>  </p> </li>
+<li id="GUID-9C68DD95-2AB6-57D0-9966-D83144788458"><p> <xref href="GUID-8995D880-69B7-3C31-891B-7A2C57E372FE.dita"><apiname>EPriorityHigh</apiname></xref>  </p> </li>
+</ul> <p>There are a further four process priorities that a user process is
+not permitted to set: <codeph>EPriorityWindowServer</codeph>, <codeph>EPriorityFileServer</codeph>, <codeph>EPriorityRealTimeServer</codeph> and <codeph>EPrioritySupervisor</codeph>. </p> <p>A process priority can be assigned: </p> <ul>
+<li id="GUID-CC4FA12C-BFDD-5F75-BC18-B742BCACEECF"><p>when the associated <filepath>.exe</filepath> is
+built; this is done by specifying the value in the <filepath>.mmp</filepath> file
+that defines the project. </p> </li>
+<li id="GUID-B86220D9-B10D-5506-AD90-73E7F8D7A089"><p>by calling <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-189A64CB-F2EA-3C8F-A7A7-01CBF8FDE67A"><apiname>RProcess::SetPriority()</apiname></xref> and
+passing one of the <xref href="GUID-5D289F30-2C88-396D-9748-798055F0AF56.dita"><apiname>TProcessPriority</apiname></xref> enum values. </p> </li>
+</ul> <p>See also : <xref href="GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita">Using
+Makmake</xref> in the <xref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita">Build
+Tools Guide</xref>. </p> <p>The priority of a thread <i>relative</i> to a
+process is assigned by calling <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-8E412361-AE54-3585-AF2A-45D4A53F8B03"><apiname>RThread::SetPriority()</apiname></xref> and
+passing one of the five <xref href="GUID-8708AFB7-92CC-34FC-9FBB-E6B16472B99D.dita"><apiname>TThreadPriority</apiname></xref> enum values: </p> <ul>
+<li id="GUID-BCFFB27F-5CEB-58E8-A859-C82273CB7FDC"><p> <xref href="GUID-DF41A24C-6873-37E6-834A-98CDFC8D54FB.dita"><apiname>EPriorityMuchLess</apiname></xref>  </p> </li>
+<li id="GUID-21C1A24C-483D-579B-BA56-31B3694215CE"><p> <xref href="GUID-0429DE71-44B4-3764-A62B-AD937E6AD355.dita"><apiname> EPriorityLess</apiname></xref>  </p> </li>
+<li id="GUID-48747F5D-8F0E-5C57-8858-35D8881B1DB7"><p> <xref href="GUID-2ACE5CF0-7E8B-35FF-8ABC-6917B2F68BB1.dita"><apiname>EPriorityNormal</apiname></xref>  </p> </li>
+<li id="GUID-78DEBC15-DFD8-5384-8358-3744E2C1DDBE"><p> <xref href="GUID-34B6B121-2E45-36FE-B0FA-E8272E2F1D10.dita"><apiname>EPriorityMore</apiname></xref>  </p> </li>
+<li id="GUID-AE42DA32-09CA-5C8B-B9AF-2A68E66E6218"><p> <xref href="GUID-4F19A64D-FBBE-34F2-8387-1449E49DC923.dita"><apiname> EPriorityMuchMore</apiname></xref>  </p> </li>
+</ul> <p>The <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF">thread
+priority value mapping table</xref> shows the <i>true</i> priority of a thread
+based on the combination of process priority and process-relative thread priority </p> <p id="GUID-7A38EE63-E955-5432-84E1-F35CB45C931E"><b>Process-independent scheme
+for general user threads</b> </p> <p>In this scheme, the <i>true</i> priority
+of a thread is independent of the priority of its owning process. Changing
+the priority of the underlying process has no effect on the <i>true</i> priority
+of the thread. </p> <p>The priority of a thread is assigned by calling <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-8E412361-AE54-3585-AF2A-45D4A53F8B03"><apiname>RThread::SetPriority()</apiname></xref> and
+passing one of the <xref href="GUID-8708AFB7-92CC-34FC-9FBB-E6B16472B99D.dita"><apiname>TThreadPriority</apiname></xref> enum values listed below.
+Note that the set of enum values splits into two logical groupings based on
+their equivalence to process-relative values. See the <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF">thread priority value mapping table</xref>. </p> <table id="GUID-A0397BB8-AAC7-5F79-B94F-68103B66132C">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b> Group 1 </b>  </p> </entry>
+<entry><p> <b> Group 2 </b>  </p> </entry>
+</row>
+<row>
+<entry><ul>
+<li id="GUID-12430992-C96F-5006-85AD-A9308AB75B93"><p> <xref href="GUID-A131F0B9-C8D4-3F0D-A0CB-140DA8EA3288.dita"><apiname>EPriorityAbsoluteVeryLow</apiname></xref>  </p> </li>
+<li id="GUID-A5682ECF-DCAA-5E35-8294-613A30F416FD"><p> <xref href="GUID-280BFA0F-9A1C-3644-AF1C-B169B09D8834.dita"><apiname>EPriorityAbsoluteLow</apiname></xref>  </p> </li>
+<li id="GUID-1750EB5D-A22B-5838-9EB8-37B06A0D1F98"><p> <xref href="GUID-ECA0DFF8-106C-3D1C-963C-10708885797A.dita"><apiname>EPriorityAbsoluteBackground</apiname></xref>  </p> </li>
+<li id="GUID-A83FCD79-3B4C-51CC-A82A-BE8AAB9BEEC0"><p> <xref href="GUID-451D6DB5-C247-34BF-8D8A-288C03599B7E.dita"><apiname>EPriorityAbsoluteForeground</apiname></xref>  </p> </li>
+<li id="GUID-1EDD4765-F02A-56CD-882D-E4DD443CE410"><p> <xref href="GUID-B6EEA9DD-68AE-30FD-AEE1-9B227109750F.dita"><apiname>EPriorityAbsoluteHigh</apiname></xref>  </p> </li>
+</ul> </entry>
+<entry><ul>
+<li id="GUID-E03FCF50-F5B6-5885-B939-88B513F4AC2F"><p> <xref href="GUID-0070BA48-851D-36E2-9C4C-C11C0FF0BE46.dita"><apiname>EPriorityAbsoluteLowNormal</apiname></xref>  </p> </li>
+<li id="GUID-4C94D1D2-6B81-57D8-B44D-2FE19E9971F9"><p> <xref href="GUID-CD20880F-21EB-389C-A0A4-8DFFE714B102.dita"><apiname>EPriorityAbsoluteBackgroundNormal</apiname></xref>  </p> </li>
+<li id="GUID-6D3AA39B-AE42-575A-B63B-D109049ABFEF"><p> <xref href="GUID-1054385C-7168-31ED-89D9-4C33E28836A0.dita"><apiname>EPriorityAbsoluteForegroundNormal</apiname></xref>  </p> </li>
+<li id="GUID-E41572FD-0C50-54BC-98C6-857A8D86CCD7"><p> <xref href="GUID-E49C7DFA-4604-310C-915C-F278382A796A.dita"><apiname>EPriorityAbsoluteHighNormal</apiname></xref>  </p> </li>
+</ul> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF">thread
+priority value mapping table</xref> shows the resulting <i>true</i> priority
+of the thread. </p> </section>
+<section id="GUID-23801A52-4E62-56F4-8D81-E0A417517FDA"><title>Priority scheme
+for real-time user-side threads</title> <p>This scheme is the same as the <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-7A38EE63-E955-5432-84E1-F35CB45C931E">process-independent
+scheme for general user threads</xref>, but with one essential difference
+- the range of <xref href="GUID-8708AFB7-92CC-34FC-9FBB-E6B16472B99D.dita"><apiname>TThreadPriority</apiname></xref> enum values to be passed
+to <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-8E412361-AE54-3585-AF2A-45D4A53F8B03"><apiname>RThread::SetPriority()</apiname></xref> is as shown below. These priorities
+map to the <i>true</i> priority values in the range 24 -31, and can only be
+set by executables having the <codeph>ProtServ</codeph> capability. This range
+is referred to as the real time range. </p> <ul>
+<li id="GUID-78ACFC22-4FB7-5E90-B6E2-9EF39EA9A3F5"><p> <xref href="GUID-7574A754-ED28-3FE1-85BB-93F110DE8E50.dita"><apiname>EPriorityAbsoluteRealTime1</apiname></xref>  </p> </li>
+<li id="GUID-3ADBFE8D-E7D9-5316-B06E-E3C514F4221E"><p> <xref href="GUID-2561145A-9506-31F5-A0EA-24609EC71412.dita"><apiname>EPriorityAbsoluteRealTime2</apiname></xref>  </p> </li>
+<li id="GUID-90F0E400-AB37-52CC-B01E-2D7C3E589111"><p> <xref href="GUID-39A7F794-B7B1-3C0C-AFFF-956C71CE529F.dita"><apiname>EPriorityAbsoluteRealTime3</apiname></xref>  </p> </li>
+<li id="GUID-DDB4B69C-9BBD-5E4B-B87C-CF52B4BDAA85"><p> <xref href="GUID-DCDD7812-10F8-35A1-9DAD-EFDAC6EA874B.dita"><apiname> EPriorityAbsoluteRealTime4</apiname></xref>  </p> </li>
+<li id="GUID-91DEE716-6F45-51C2-8139-B9CB1AE5065B"><p> <xref href="GUID-F3872848-57CA-3682-80E2-39E87B7B3656.dita"><apiname>EPriorityAbsoluteRealTime5</apiname></xref>  </p> </li>
+<li id="GUID-01B2B0B9-4242-5D8E-83B2-2658CF68548F"><p> <xref href="GUID-D3FE9747-0CD8-3E0A-829E-3D7184AE8431.dita"><apiname>EPriorityAbsoluteRealTime6</apiname></xref>  </p> </li>
+<li id="GUID-6581842F-C83C-53A5-A567-F1D4BE97488C"><p> <xref href="GUID-A6BF84AA-2421-3DB0-A30D-B9D3B7E70B21.dita"><apiname>EPriorityAbsoluteRealTime7</apiname></xref>  </p> </li>
+<li id="GUID-C7AB328B-B910-51D2-ADB0-5E8A33AFCD69"><p> <xref href="GUID-84C4AED5-8AA8-31F0-9E77-6BBACE192763.dita"><apiname>EPriorityAbsoluteRealTime8</apiname></xref>  </p> </li>
+</ul> <p>The <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF">thread
+priority value mapping table</xref> shows the resulting <i>true</i> priority
+of the thread. </p> </section>
+<section id="GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF"><title>Thread priority
+value mapping table</title> <p>This table shows the effect of setting priorities,
+and the resulting <i>true</i> priority values. You need to be aware that this
+may change in the future, and you should never synchronise threads on the
+basis of thread priorities. If you need to synchronise threads, use mutexes
+or semaphores. </p> <p>Notes </p> <ul>
+<li id="GUID-CBC69A23-E3EF-56BC-A915-2770EBFB76C4"><p>True priority values
+in the shaded region can only be accessed by threads running in processes
+with the <codeph>ProtServ</codeph> capability. </p> </li>
+<li id="GUID-1F8FC263-3C39-5E3C-A186-6D5D4DF7D6D3"><p>The process-priority
+values : <xref href="GUID-972ADC0C-546E-3D24-9071-02B074DC1540.dita"><apiname>EPriorityWindowServer</apiname></xref>, <xref href="GUID-A19C5464-A1DA-3EEC-B81B-41690EBB3DB2.dita"><apiname>EPriorityFileServer</apiname></xref> and <xref href="GUID-A35268D0-7EFC-3D58-8C79-E4E619F762F5.dita"><apiname>EPrioritySupervisor</apiname></xref> all
+map to the same range of priorities. Along with <xref href="GUID-AAA610A8-48D8-3642-94E8-6C9747170DA9.dita"><apiname>EPriorityRealTimeServer</apiname></xref>,
+these have historically been used for system servers and other processes needing
+access to high priorities suitable for real-time tasks, and their use requires <codeph>ProtServ</codeph> capability. </p> </li>
+<li id="GUID-3256F08A-AD30-5378-BFA9-140688B1CDB6"><p>Note that <codeph>ProtServ</codeph> capability
+will not be granted to general applications for the purpose of gaining access
+to the very high thread priorities. This risks breaking important system functionality. </p> </li>
+</ul> <fig id="GUID-6BF93712-F8AA-5D08-A5D4-FEB6B22592D8">
+<image href="GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e222082_href.png" placement="inline"/>
+</fig> <p>Note that we have used <i>E'</i> as an abreviation for <i>EPriority</i> in
+this diagram. </p> </section>
+<section id="GUID-E9AFB6A3-ED3E-5110-82C8-E5E15E0AF899"><title>Platform security
+notes</title> <p>Platform security restrictions prevent thread and process
+priorities from being modified by another user process. There is one exception:
+by default, applications have “Priority Control” enabled for them which allows
+the window server to switch them between foreground and background process
+priorities depending on which has foreground focus. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93" xml:lang="en"><title>Queries</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A query is a state where the software waits for user input. Queries are
+used in situations with more than one ways to proceed, when the application
+needs data from the user, or when it is necessary to make sure the user knows
+what is happening. A query must be exited before the application can proceed.</p>
+<p>Queries are displayed in pop-up windows. The following query types can
+be used:</p>
+<ul>
+<li><p><xref href="GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita">Confirmation
+query</xref>: a question or notice with one or two possible responses. </p></li>
+<li><p><xref href="GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita">List query</xref>:
+a question with a selection of more than two possible (predefined) responses
+in a list. </p></li>
+<li><p><xref href="GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita">Grid query</xref>:
+a question with a selection of more than two possible (predefined) responses
+in a grid. </p></li>
+<li><p><xref href="GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita">Multi-selection
+list query</xref>: presents a list of items; the user can select any number
+of them. </p></li>
+<li><p><xref href="GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita">Data query</xref>:
+used for numeric or textual input. </p></li>
+<li><p><xref href="GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita">Message query</xref>:
+used for various purposes in queries that are longer than one screen.</p></li>
+</ul>
+<section><title>Using queries in C++
+applications</title><p>The APIs to use for queries are the Queries
+API, Dialogs
+API, and the Popups
+API. For implementation information, see Using
+the Dialogs API.</p><p>Query dialogs are dialogs that can be used to
+require user input or user selection. All query dialogs derive from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknQueryDialog.html" format="application/java-archive"><codeph>CAknQueryDialog</codeph></xref>,
+which inherits <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDialog.html" format="application/java-archive"><codeph>CAknDialog</codeph></xref>.
+There are two types of queries: local and global queries. Local query dialogs
+are local to a certain application. That means they are only displayed within
+this application. Global query dialogs are system-wide queries, and are shown
+topmost even when another application moves to the foreground. Query dialogs
+require resource definitions when they are used in your code. </p><note><p>In
+order to have a header pane, the <codeph>AVKON_HEADING</codeph> component
+should be specified as the first dialog line in the resource description.</p></note><p>At
+runtime, the dialog's header pane (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknPopupHeadingPane.html" format="application/java-archive"><codeph>CAknPopupHeadingPane</codeph></xref>) can be obtained by calling the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknQueryDialog.html#8222b5679180543798d67db49abd4500" format="application/java-archive"><codeph>CAknQueryDialog::QueryHeading()</codeph></xref>.</p><p>The following
+parts are available for modification from the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknQueryDialog.html" format="application/java-archive"><codeph>CAknQueryDialog</codeph></xref>:</p><ul>
+<li><p>Data query </p><ul>
+<li><p>Header text </p></li>
+<li><p>Header image/animation </p></li>
+<li><p>Prompt text </p></li>
+<li><p>Edit indicator (can be removed) </p></li>
+</ul></li>
+<li><p>Confirmation query </p><ul>
+<li><p>Prompt text </p></li>
+<li><p>Image/animation </p></li>
+</ul></li>
+<li><p>List query </p><ul>
+<li><p>Header text </p></li>
+<li><p>Header image/animation </p></li>
+<li><p>List type (Single, SingleHeading, SingleGraphic, SingleGraphicHeading) </p></li>
+</ul></li>
+</ul><p>The following example illustrates the resource definition for the
+Secret Editor Query, which contains a Secret Editor, resides inside the dialog.
+The values for flags, type, id, and control are specific to the query dialog.
+These values are enumerated in the file avkon.hrh, which is in the <codeph>./epoc32/include</codeph> folder.</p><codeblock xml:space="preserve">RESOURCE DIALOG r_aknexquery_code_query
+    {
+    flags = EGeneralQueryFlags
+    buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = EGeneralQueryFlags
+                {
+                layout = ECodeLayout;
+                label = label_text;
+                control = SECRETED
+                    {
+                    num_letters = 8;
+                    };
+                };
+            }
+        };
+    }
+</codeblock><p>The query in the above example includes a secret editor. For
+information on implementing secret editors, see the Editors
+API.  </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e284591_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7B4A78D8-64BB-550E-ABC0-255312351215" xml:lang="en"><title>InterfaceClient
+ECom Interface Client Example Code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-C1DBC0DD-E097-5052-80F9-F95E1CEE7E8E"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4d91db5b-1dd7-43ba-9ce8-1c2a1f08a120.zip" scope="external">Ecom.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4d91db5b-1dd7-43ba-9ce8-1c2a1f08a120.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>. </section>
+<section><title>Description</title> <p> <filepath>InterfaceClient</filepath> is
+a simple client program that exercises the interface and implementations provided
+by the <filepath>InterfaceDefinition</filepath> and <filepath>InterfaceImplementation</filepath> examples
+respectively. </p> <p>Its single class, <codeph>TInterfaceClient</codeph>,
+defines three functions: </p> <ul>
+<li id="GUID-CAD57044-B5C4-5B75-AF5E-AB3F0C5350DF"><p> <codeph>GetDefaultL()</codeph>,
+which gets the default implementation of the <codeph>CExampleInterface</codeph> interface </p> </li>
+<li id="GUID-DB392DB8-A876-54BD-9465-72B4A67592B0"><p> <codeph>GetBySpecificationL()</codeph>,
+which requests an implementation of the <codeph>CExampleInterface</codeph> interface
+with a specific types of capability </p> </li>
+<li id="GUID-36879D14-D2ED-5827-BD1B-B82CB9A9F0A2"><p> <codeph>GetByDiscoveryL()</codeph>,
+which gets all the implementations on the system of the <codeph>CExampleInterface</codeph> interface </p> </li>
+</ul> </section>
+<section><title>Usage</title> <p> <filepath>InterfaceClient</filepath> is
+a console program (<filepath>.exe</filepath>). It does not require any user
+input. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e205732_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E" xml:lang="en"><title>Using
+the MIME Framework</title><abstract><p>The <xref href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita">MIME
+recognizers</xref> are used by the client applications for data type recognition.
+When there is a client request to the <xref href="GUID-58CA15F8-D984-5D07-8C00-161FA16A8FD3.dita">AppArc</xref> for
+data type recognition, AppArc internally uses the MIME recognition framework
+for processing the request. </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-6799E3F3-353E-5C00-A38C-D32F888392AA-GENID-1-6-1-10-1-1-6-1-5-1-4-1-4-1-3-1"><p>The client connects
+to AppArc and creates a session using the class <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref>.
+Apparc provides access to the MIME framework via <codeph>RApaLsSession</codeph> APIs.
+The class provides the APIs for data type recognition. </p> <p>All MIME (data)
+recognizers are derived from the abstract base class, <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita"><apiname>CApaDataRecognizerType</apiname></xref>.
+The <codeph>RApaLsSession</codeph> data recognition APIs access the properties
+of <codeph>CApaDataRecognizerType</codeph> for data type recognition. </p> </context>
+<steps id="GUID-554A6B8B-5E46-5977-A588-23EEF7610077">
+<step id="GUID-3922D131-9E8C-5865-BF22-D1EB75DADAAF"><cmd/>
+<info>Connect and create a session with AppArc server using <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-A92887D0-694C-3792-B3C9-46B155FE83B9"><apiname>RApaLsSession::Connect()</apiname></xref>. </info>
+<stepxmp><codeblock id="GUID-A947EEFC-C528-5487-8C69-B02E46473AAC" xml:space="preserve">RApaLsSession aLs;
+TInt ret;
+// Client session with the server created.
+ret=aLs.Connect();
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-715F513B-D88F-5968-B47B-87BB57F015CE"><cmd/>
+<info>Invoke <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-24DCDDC2-1BF8-34BE-A893-7D85DF505D59"><apiname>RApaLsSession::RecognizeData()</apiname></xref> or <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-13C1150F-AEC3-377F-A15E-1722AB750C9C"><apiname>RApaLsSession::RecognizeSpecificData()</apiname></xref>. </info>
+<info>These APIs internally invoke the implementation for <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita#GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0/GUID-74ED8BEA-52AA-3AC4-92D9-5E4FB4F25DDD"><apiname>CApaDataRecognizerType::DoRecognizeL()</apiname></xref>. </info>
+<info> <codeph>DoRecognizeL()</codeph> of the class derived from <codeph>CApaDataRecognizerType</codeph> implements
+the data recognition behaviour. </info>
+<stepxmp><codeblock id="GUID-E56AB4D9-6D75-58FC-B045-C1B444097973" xml:space="preserve">// Implementation of RecognizeData() 
+
+RecognizeData(const TDesC &amp;aName, const TDesC8 &amp;aBuffer, TDataRecognitionResult &amp;aDataType) 
+    {
+     
+    CExampleRecognizer *myrecognizer= CExampleRecognizer::CreateRecognizerL();
+    myrecognize-&gt;DoRecognizeL(aName,aBuffer);
+     
+    }
+
+
+// The RApaLsSession object invokes RecognizeData() for data type recognition.
+
+_LIT(KMyFile, "Myfile.example");
+
+_LIT(KMyBufer, "serach for example string in the file buffer");
+
+TInt ret=aLs.RecognizeData(KMyFile,KMyBufer,result);
+
+
+ 
+</codeblock> </stepxmp>
+<info>For more details about refer <xref href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita">Writing
+MIME Recognizers </xref>. </info>
+</step>
+</steps>
+<result><p>A <codeph>TDataRecognitionResult</codeph> object is returned to
+AppArc. The object contains the data (MIME) type and the confidence of recognition. </p> <p>AppArc
+attempts to find the application that can best handle the identified data
+type. It is not guaranteed that an application will be available
+to handle a data type, even after successful recognition. </p><p><b>Notes</b>:</p><p>In
+addition to the overloads of <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-24DCDDC2-1BF8-34BE-A893-7D85DF505D59"><apiname>RApaLsSession::RecognizeData()</apiname></xref> or <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-13C1150F-AEC3-377F-A15E-1722AB750C9C"><apiname>RApaLsSession::RecognizeSpecificData()</apiname></xref> the
+following functions of the <codeph>RApaLsSession</codeph> also support the
+processing of data type recognition request.  <ul>
+<li id="GUID-DD30FE7C-7A2E-5D1A-BF2B-9062EA0534F6"><p>The overloads of <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-75213781-58CC-3133-A29E-A98640B5DCB7"><apiname>RApaLsSession::RecognizeFilesL()</apiname></xref> are
+used to recognize all files contained in a specified directory. </p> </li>
+<li id="GUID-EEFC08FC-BC71-5FBC-84D4-4F90FBE879E4"><p> <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-73CBA5BA-F834-3C3E-B823-D22D47E80B0D"><apiname>RApaLsSession::GetAcceptedConfidence()</apiname></xref> and <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-52093701-CB5C-3F89-980B-146FB59DA841"><apiname>RApaLsSession::SetAcceptedConfidence()</apiname></xref> retrieve and set the accepted confidence level of the MIME framework. The
+default value is <codeph>ECertain</codeph>. </p> </li>
+<li id="GUID-611CC0DC-566E-5CAF-ABB2-445AC1E4B21B"><p> <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-02D7272B-576C-34B7-8C70-4B5DD3CA0F7C"><apiname> RApaLsSession::GetSupportedDataTypesL()</apiname></xref> retrieves
+the list of data types supported by all recognizers in the recognizer list
+of the MIME framework. </p> </li>
+<li id="GUID-C3BB3027-FF85-54CE-ADE9-0104CC749AE5"><p>The preferred buffer
+size determines the amount of data passed to <codeph>DoRecognizeL()</codeph> function.
+The preferred buffer size can be retrieved using <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-2BF0B124-F898-3F60-BDA9-D56AAAB92EB2"><apiname>RApaLsSession::GetPreferredBufSize()</apiname></xref>.
+This value cannot be greater than the maximum buffer value. </p> <p>The maximum
+value for the buffer is set by using <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-08755985-24A9-3D58-9DCD-2C9E45FC8A24"><apiname>RApaLsSession::SetMaxDataBufSize()</apiname></xref>.
+If the maximum buffer size is not set by the client, the default value is
+256 bytes. The maximum buffer size can be retrieved using <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-CCE99830-F0A2-3E39-9D16-32A1A3EA570B"><apiname>RApaLsSession::GetMaxDataBufSize()</apiname></xref>. </p> </li>
+</ul></p> </result>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7B863846-7666-4FBF-90B2-52F847710C45.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7B863846-7666-4FBF-90B2-52F847710C45" xml:lang="en"><title>Adding
+and removing menu items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Add items to the menu by either:</p>
+<ul>
+<li><p>Calling the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#7199d833dc81124c5f84684b7981ad0d" format="application/java-archive"><codeph>AddMenuItemL()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref> for each menu item to be added or</p></li>
+<li><p>Creating the entire menu instance from a resource by calling <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#75cd95c35a6ed4734b93713596bb51d5" format="application/java-archive"><codeph>CAknStylusPopUpMenu::ConstructFromResourceL()</codeph></xref>. This requires a <codeph>STYLUS_POPUP_MENU</codeph> resource structure
+that contains the items in the structure <codeph>STYLUS_POPUP_MENU_ITEM</codeph>.</p></li>
+</ul>
+<note><p>If the menu already contains the maximum number of items, <codeph>CAknStylusPopUpMenu::AddMenuItemL()</codeph> will
+do nothing. The same applies to <codeph>CAknStylusPopUpMenu::ConstructFromResourceL()</codeph>:
+it will only add the maximum number of menu items even if there were more
+items defined in the resource.</p><p><draft-comment time="2008-05-15T11:15" translate="no">What's
+the maximum here: six according to UI Style Guide, no mention in <codeph>aknstyluspopupmenu.h</codeph> in
+Kevlar. Or can this be set by app developer somehow?</draft-comment></p></note>
+<p>To remove items, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#3ae9fb001d266da3fff2e82692d45e27" format="application/java-archive"><codeph>CAknStylusPopUpMenu::RemoveItem()</codeph></xref>.</p>
+<p><draft-comment time="2008-05-15T13:32" translate="no">Add sample code on adding and removing
+menu items here</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7BB38C3E-BEA9-545B-AEC2-5E9078D0B8A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7BB38C3E-BEA9-545B-AEC2-5E9078D0B8A2"><title>Setting the Alarm</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can assign an alarm to a calendar entry. <xref href="GUID-211D3640-9862-3F78-98FC-9793578117A9.dita"><apiname>CCalAlarm</apiname></xref> specifies the alarm type and the time prior to the scheduled event at which to activate the alarm. </p> <p>The following shows how to create and initialise a <xref href="GUID-211D3640-9862-3F78-98FC-9793578117A9.dita"><apiname>CCalAlarm</apiname></xref> object, and use it to set an alarm on an entry. </p> <codeblock id="GUID-08DD6D0C-FE99-5642-876B-9C05EF7010CD" xml:space="preserve">// Set the alarm to a calendar entry 
+CCalAlarm* alarm = CCalAlarm::NewL(); // pointer to alarm 
+alarm-&gt;SetTimeOffset(5); //alarm is set to occur 5 minutes prior to the event 
+// set the name of alarm to ‘Buzzing Alarm’ 
+_LIT(KAlarmSoundName, "Buzzing Alarm"); 
+alarm-&gt;SetAlarmSoundNameL(KAlarmSoundName); 
+// set the alarm
+entry-&gt;SetAlarmL(alarm);</codeblock> <p>If no alarm sound is set, the default alarm sound is used. </p> <p>To clear an already set alarm from an entry, pass NULL to <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita#GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801/GUID-101A8DC7-85F6-358C-B5C3-28C366A06113"><apiname>CCalEntry::SetAlarmL()</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7BB6C3A0-7FCF-5614-9940-B3630E5FC114.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7BB6C3A0-7FCF-5614-9940-B3630E5FC114" xml:lang="en"><title>Removable
+Storage Device</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Messages can be stored on a removable storage device. You can specify an
+active drive, such as a logical disk on a memory card, to store messages.
+Subsequently, all messages that are created, sent and received are stored
+on this drive, and are accessible through the Messaging subsystem. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7BC512C8-55F5-4753-8299-7D3776EB3464_d0e62287_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7BCA8B7A-E250-5452-9837-26C60F71F14F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-7BCA8B7A-E250-5452-9837-26C60F71F14F" xml:lang="en"><title>Alarm
+Properties Reference</title><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><p>This section provides a summary of mandatory and optional Alarm
+properties that must be set before adding an alarm to the Alarm Server. </p> <p>The
+following Alarm property is <i>mandatory</i>: </p> </section>
+<table id="GUID-A097D4DD-A8FE-5E79-B90B-770D17104932">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.43*"/><colspec colname="col1" colwidth="1.57*"/>
+<thead>
+<row>
+<entry><p><b>Property</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>NextDueTime</b>  </p> </entry>
+<entry><p>Indicates the time that the alarm will expire. </p><p>The <codeph>KErrArgument</codeph> error
+is returned when an alarm is added without the next due time being set. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section><p> </p> <p>The following Alarm properties are <i>optional</i>: </p> </section>
+<table id="GUID-E40B0108-874F-5CC6-9406-D3A9EB487FC1">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.58*"/><colspec colname="col1" colwidth="1.42*"/>
+<thead>
+<row>
+<entry><p><b>Property</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>RepeatDefinition</b>  </p> </entry>
+<entry><p>Indicates the alarm repeat definition. </p><ul>
+<li id="GUID-D64B190D-D97A-58CD-91B3-44FE3637FA71"><p> <b>RepeatOnce</b> –
+The alarm expires once and then deleted from the Alarm Server. This is the
+default value. </p> </li>
+<li id="GUID-32C0FAF5-96F9-5DC9-AFDD-29FB67F51417"><p> <b>Next24hours</b> –
+The alarm is scheduled to notify at the given time, within the next 24 hours.
+The alarm is then deleted from the Alarm Server. </p> </li>
+<li id="GUID-13FCA81D-FABF-5585-B093-2D9FC405721B"><p> <b>Daily</b> – The
+alarm repeats every day at the same time. </p> </li>
+<li id="GUID-C0FF139B-03C5-5756-B0A3-ED0C496E8A81"><p> <b>WorkDay</b> – The
+alarm repeats on workdays at the same time. </p> </li>
+<li id="GUID-33AC43FC-412E-557C-A9FB-B2063FDEF9EC"><p> <b>Weekly</b> – The
+alarm repeats at the same time, on the same day, every week. </p> </li>
+<li id="GUID-92BD2CFB-033C-5B3D-B1F5-D60987804814"><p> <b>DailyOnGivenDays</b> –
+The alarm repeats at the same time on the specified days of the week. </p> </li>
+</ul></entry>
+</row>
+<row>
+<entry><p> <b>Message</b>  </p> </entry>
+<entry><p>Indicates the message displayed by the UI when the alarm expires.
+The maximum allowable length of the message is defined by <codeph>KMaxAlarmMessageLength</codeph>.
+The <codeph>KErrArgument</codeph> error is returned when an alarm is added
+to the server with a message exceeding this length. </p></entry>
+</row>
+<row>
+<entry><p> <b>SoundName </b>  </p> </entry>
+<entry><p>Indicates the name of the sound file that must be played when the
+alarm expires. The maximum allowable length of the sound name is defined by <codeph>KMaxAlarmSoundNameLength</codeph>.
+The <codeph>KErrArgument</codeph> error is returned when an alarm is added
+with a sound name exceeding this length. The Alarm Server does not check the
+validity of the sound name. The UI must handle the scenarios where neither
+sound name is provided nor valid. </p></entry>
+</row>
+<row>
+<entry><p> <b>Category</b>  </p> </entry>
+<entry><p>It is an UID provided by a client to group the alarms registered
+with the Alarm Server. This allows the Alarm Server to perform specific operations
+on particular group of alarms, on behalf of the client. </p></entry>
+</row>
+<row>
+<entry><p> <b>Characteristics</b>  </p> </entry>
+<entry><p>A flag that indicates whether: </p><ul>
+<li id="GUID-BD57C6CE-B347-5942-90A9-3BE3C04D2ABB"><p>the caller is notified
+when the alarm expires and </p> </li>
+<li id="GUID-6ABFC447-6C24-51E6-973A-4994297D5C16"><p>the UI is asked to display
+an alarm dialog when the alarm notifies. </p> </li>
+</ul><p>By default, the caller is not notified when an alarm expires and the
+UI is requested to display an alarm dialog when the alarm expires. </p></entry>
+</row>
+<row>
+<entry><p> <b> DayOrTimed</b>  </p> </entry>
+<entry><p>A flag that indicates whether the alarm is associated with a day
+or timed appointment. The default is Timed. This flag is for the client’s
+use only, and is not used by the Alarm Server. </p></entry>
+</row>
+<row>
+<entry><p> <b>WakeUp</b>  </p> </entry>
+<entry><p>A flag that indicates whether the device must be made activate at
+the next due time of this alarm. By default, alarms do not cause a device
+wakeup. </p></entry>
+</row>
+<row>
+<entry><p> <b>Continuous</b>  </p> </entry>
+<entry><p>A flag that indicates whether or not the alarm must play continuously
+when it expires. If this flag is set, it overrides the alarm play intervals. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7BE7AC77-4EF5-46BD-A491-1DDBBA20AFE6_d0e42099_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7BE83158-B818-57E4-9A8C-43E5D2C84687.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7BE83158-B818-57E4-9A8C-43E5D2C84687"><title>DBMS columns, column sets, and keys overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Defines column, column set, and index key structures.</p> </section> <section><title>Description</title> <p>The API has three key concepts: column, column set, and index key. </p> <p><b>Column</b> </p> <p>A table in a database is defined by a set of columns. Each column has attributes such as a name, a type, and a maximum length (if text or binary). </p> <p>A column definition is encapsulated by <xref href="GUID-0130C7AA-B143-32A4-BB33-0D90CEDABAAE.dita"><apiname>TDbCol</apiname></xref>. </p> <p><b>Column set</b> </p> <p>A set of columns that describe a table are encapsulated in <xref href="GUID-9B02D75E-1EE0-349E-9900-BEC1CAF9DECE.dita"><apiname>CDbColSet</apiname></xref>. The set can be iterated over using <xref href="GUID-C76AA489-BFF5-3D6E-BB26-C84A3E7887ED.dita"><apiname>TDbColSetIter</apiname></xref>.</p> <p><b>Index key</b> </p> <p>An index key orders one or more table columns (keys). It has attributes such as being unique or primary, a comparison specification for text columns, and a list of columns which make up the key. </p> <p>The index key is encapsulated in <xref href="GUID-0CA88018-0265-3853-AC64-3B938DD0F60C.dita"><apiname>CDbKey</apiname></xref>. A column for the key is encapsulated in <xref href="GUID-DDB34DBF-4A96-3430-820A-97AB5585962D.dita"><apiname>TDbKeyCol</apiname></xref>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7BFEEDF7-3DB8-42FF-9D7A-F98E536F7686.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7BFEEDF7-3DB8-42FF-9D7A-F98E536F7686" xml:lang="en"><title>Sensor
+interaction</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-27524BA1-FE0E-4906-8A73-C2F8B4B5BC6C"> <p>Devices based
+on the Symbian platform are supporting extendable Sensor framework.
+The supported sensors include accelerometer sensor, which is used for example
+for sensing device orientation (landscape/portrait and screen down/screen
+up) and tapping (giving the device light taps with your hand).  </p> <p>With
+the accelerometer sensor, there are three types of interaction that can be
+achieved:</p><ol>
+<li id="GUID-E30828C6-4EA8-49B7-BF00-ADC1D132BBFB"><p>Tapping the device by
+hand (double tap) to perform a given function in set events. Tapping the device
+interaction is not recommended for touch devices: the user may unintentionally
+tap the device on the touch area, and trigger controls by mistake.</p></li>
+<li id="GUID-5700ECF7-40ED-4ECE-ABB5-3C2E93173871"><p>Changing the device's
+orientation from portrait to landscape and back.</p></li>
+<li id="GUID-7233626B-2234-44EB-9E64-CB2D787C6CC2"><p>Changing the device
+orientation from screen down (for example, on a table) to screen up and back
+to perform a given function in set events (for example, silencing an incoming
+call).</p></li>
+</ol><p>In effect, the system is capable of sensing any of these interaction
+methods in the events where sensors can be used. </p><p>The supported sensor
+interactions are configurable per device. Also, the user can be given the
+option to set which one the user would like to use. For example, it is possible
+to set methods 1 and 3 (double tap by hand and turning the screen downwards)
+for the Silence incoming call event. The settings are available in Control
+Panel.</p><note>When designing an application which uses the sensors, take
+into account that the users may switch the use of sensors and display orientation
+control off in the Control Panel. </note><p>A double tap on the device produces
+tactile (vibrating) feedback to reinforce and acknowledge that the interaction
+has been successful.</p><p>As the Sensor framework is extendable, devices
+can have different configurations for sensors.  For instance, some devices
+may have a magnetometer sensors included, which could be then used, for example,
+as a compass on location-based services.</p><p>For more information, see <xref href="GUID-AE979B97-5610-42F3-99A7-5A3D66D3C2E6.dita">Sensor interaction</xref>.</p> 
+   </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e218128_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C197DC1-43CA-5146-B81D-36B685A1D0C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7C197DC1-43CA-5146-B81D-36B685A1D0C9" xml:lang="en"><title>Telephony API for Applications</title><shortdesc>The telephony API gives applications access to Telephony services. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The telephony API for applications provides a simple interface for the applications developers to access the telephony functionality. This API is a subset of the multimode telephony API that provides a rich set of telephony functionalities to the handset manufacturers. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E"><title>lang</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>lang</codeph>  <varname>language-list</varname> </p> <p>Use the <codeph>lang</codeph> statement to indicate languages code for the project.</p> <p>If this statement is not specified, the default language code is <codeph>sc</codeph>. </p> <p>The language codes should be two-digit codes, and are used to complete the extension of generated resource files, as <codeph>project.rsc</codeph>.</p> <p>Each resource file specified with <codeph>resource</codeph> or <codeph>systemresource</codeph> or <codeph>start resource</codeph> is compiled multiple times, once for each language specified. The specification of several languages does not cause several versions of the bitmaps or application information files in your project to be created.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e166439_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C645FF2-4785-5716-9674-B3A224F6C0D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7C645FF2-4785-5716-9674-B3A224F6C0D9"><title>emulate</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>emulate [ -LR ] {zsh|sh|ksh|csh} </userinput> </p> <p>Set up <codeph>zsh</codeph> options to emulate the specified shell as much as possible. <codeph>csh</codeph> will never be fully emulated. If the argument is not one of the shells listed above, <codeph>zsh</codeph> will be used as a default; more precisely, the tests performed on the argument are the same as those used to determine the emulation at startup based on the shell name. </p> <table id="GUID-31105902-D4A1-5FDF-ACD8-860ABB0B7290"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-R</codeph>  </p> </entry> <entry><p>All options are reset to their default value corresponding to the specified emulation mode, except for certain options describing the interactive environment; otherwise, only those options likely to cause portability problems in scripts and functions are altered. </p> </entry> </row> <row><entry><p> <codeph>-L</codeph>  </p> </entry> <entry><p>The options <codeph>LOCAL_OPTIONS</codeph> will be set, causing the effects of the emulate command and any setopt and trap commands to be local to the immediately surrounding shell function, if any; normally these options are turned off in all emulation modes except <codeph>ksh</codeph>. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C6D3479-2159-5A9B-9970-0B3E625442A6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7C6D3479-2159-5A9B-9970-0B3E625442A6"><title>Using Environment Change Notifier</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Environment Change Notifier is provided so that an application can be notified of changes in the environment such as a switch in locale, crossing over past midnight and so on. </p> <p>The <codeph>TChanges</codeph> enumerator lists the possible events. This set of events may be extended as the operating system evolves. </p> <section><title>Introduction</title> <p>An environment change notifier is an instance of a <codeph>CEnvironmentChangeNotifier</codeph> class. This is an active object which allows an application to respond to change events easily. These change events are generated by a kernel side change notifier service. The <codeph>CEnvironmentChangeNotifier</codeph> class uses the kernel side change notifier service through an <codeph>RChangeNotifier</codeph> handle. </p> <p>An application supplies a callback function to <codeph>CEnvironmentChangeNotifier</codeph> when it is constructed. </p> <p>When an outstanding request for change events completes, <codeph>CEnvironmentChangeNotifier</codeph> issues another request for change events before calling the callback function (encapsulated in a <xref href="GUID-6C5766BC-05DE-32A8-993D-6BB582931F43.dita"><apiname>TCallBack</apiname></xref>). </p> <p>The implementation of the callback function depends on the application but, typically, it would flag the required changes and schedule other changes either to the application's engine or the application's user interface. </p> <p>Programs can use Environment Change Notifier to request for notifications for the following changes: </p> <ul><li id="GUID-616002CB-557F-5BCB-850A-811856CBDDE9"><p>change of system locale </p> </li> <li id="GUID-6B8DDABD-3B12-5997-BA5F-D24A26ACFFF4"><p>system time passes midnight </p> </li> <li id="GUID-252E53D1-CDD4-5CA3-9F38-79E7495D9BEA"><p>system time changes </p> </li> <li id="GUID-DB191A3A-3D2F-57A3-B1BC-320CB6F58F17"><p>any thread dies </p> </li> <li id="GUID-7BE23762-BB35-5D37-A561-B248787F2071"><p>status of the power supply changes </p> </li> </ul> </section> <section><title>Procedure</title> <p>To use the Environment Change Notifier, an application must perform the following: </p> <ol id="GUID-A6041480-76EA-59AE-A187-65175B244E65"><li id="GUID-6985BDF3-997C-57FF-832E-32731948C240"><p>Implement a callback function to handle the environment change. </p> <codeblock id="GUID-B9BD69A0-B37F-590D-BEF4-88F056C617EC" xml:space="preserve"> 
+TInt CExHandleNotification::ChangeLangSettings()
+    {
+     //Code for changing the language settings.
+    }
+</codeblock> </li> <li id="GUID-498A463D-4CD3-5CEC-85E6-A7087E517BE9"><p>Construct a <codeph>CEnvironmentChangeNotifier</codeph> object using its <codeph>NewL()</codeph> function, specifying the active object priority and a pointer to the callback function encapsulated in a <codeph>TCallBack</codeph> object. </p> <p> <codeph>NewL()</codeph> also adds this <codeph>CEnvironmentChangeNotifier</codeph> active object to the current <keyword>active scheduler</keyword>. </p> <codeblock id="GUID-28216515-8F66-5A61-A12D-8E98BCC9E391" xml:space="preserve">
+CExHandleNotification::Initialise()
+                {
+    //Creating a notifier object with ChangeLangSettings as the callback function.
+                CEnvironmentChangeNotifier envNotifier = CEnvironmentChangeNotifier::NewL( EActivePriorityDefault,TCallBack(CExHandleNotification::ChangeLangSettings, this) );
+                }</codeblock> </li> <li id="GUID-3E7AA7CA-F7A0-5D63-83A2-6A9DFEF7958A"><p>Issue a request for change events by calling the <codeph>Start()</codeph> member function. </p> </li> </ol> <p>Whenever a request completes, <codeph>CEnvironmentChangeNotifier</codeph> issues another request for change events before the callback function is invoked. </p> <p>The first call to the callback function occurs immediately after the first call to <codeph>Start()</codeph>. This is because of the way the underlying change notifier service is implemented; the changes reported are those defined by the <codeph>TChanges</codeph> enum. </p> <p>To stop the environment change notifier, an application must: </p> <ol id="GUID-3859F4AA-A656-5486-91C6-BE8F29FF9C0B"><li id="GUID-4B8C6E17-B904-5A8D-BB1C-3794664BB6B3"><p>Call <codeph>CEnvironmentChangeNotifier</codeph>'s <codeph>Cancel()</codeph> function. Note that this is a member of the <codeph>CActive</codeph> base class. </p> </li> <li id="GUID-11F57FDC-E773-551C-A0A9-79AAE8AC61BD"><p>Delete the <codeph>CEnvironmentChangeNotifier</codeph> object. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7C75642D-C0C9-5392-9354-711F42DC2C61" xml:lang="en"><title>Server-Initiated
+vs. Application-Initiated Redrawing</title><shortdesc>This topic introduces the reasons that the screen display may need
+to be updated and the difference between redrawing that is initiated by an
+application and that initiated by the Window Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target
+audience</b>: Application developers. </p>
+<section id="GUID-D5FE0214-ECEB-4C0F-84C9-2BB44C19E477"><title>Introduction</title> <p>The Window Server maintains the UI
+display taking into account the region, ordinal position and visibility requirements
+of all displayable windows. The UI may be updated for several reasons: </p> <ul>
+<li id="GUID-017DF20B-5881-5B8A-A8A3-0019614535B7"><p>at direct application
+request by an application drawing to a window through a <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>  </p> </li>
+<li id="GUID-8B9CFD40-0ECB-5F0D-92BA-F8EB327B31CA"><p>due to regions of the
+display becoming invalid </p> </li>
+<li id="GUID-6F5C9D10-BCE4-5F60-9F85-BE69C4C58F2C"><p>due to actions internal
+to the Window Server, such as pointer cursor movements. </p> </li>
+</ul> <p>When a window is moved, resized, or otherwise manipulated by an application,
+it may cause parts of other windows to become invalid so that they must be
+redrawn. The Window Server maintains a list of all invalid regions and causes
+them to be redrawn in one of several ways: </p> <ul>
+<li id="GUID-2FFC86C2-0971-539B-BD21-E95E9FEB4202"><p>for a region with no
+window, the Window Server redraws the invalid region in the default background
+color </p> </li>
+<li id="GUID-B0289B7D-97E2-5FBD-9983-130A5109FDFF"><p>for a blank window,
+the Window Server redraws the invalid region in the window's color </p> </li>
+<li id="GUID-931BDE7B-4C56-5350-A26B-F89CCBA72DE6"><p>for a backed-up window,
+the invalid region is redrawn from a backup bitmap maintained by the Window
+Server </p> </li>
+<li id="GUID-24155452-0F5D-508E-B04D-96E06FD0913F"><p>if the invalid region
+is owned by an animation DLL, the Window Server invokes the animation DLL
+directly to redraw the area: the region is then valid again </p> </li>
+<li id="GUID-2A5080AF-1415-5CBF-B775-D547D9C3F222"><p>for a normal <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>,
+whenever possible, the Window Server replays the sequence of drawing commands
+stored in the redraw stores. However, sometimes this is not possible, because,
+for example, the redraw stores have been lost due to low memory conditions.
+In these circumstances, the Window Server generates a redraw event and sends
+it to the application. This is described in more detail below. </p> </li>
+</ul> </section>
+<section id="GUID-50054B7B-FF18-40B2-A582-B90FE66D269F"><title>Window Server-initiated redrawing</title> <p>When the Window
+Server needs to repaint a standard <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> window and it
+is not possible to do this by replaying the drawing commands stored in the
+redraw stores, it sends a <xref href="GUID-B5F16BF3-569D-3985-AAB7-439E3410468D.dita"><apiname>TWsRedrawEvent</apiname></xref> message to the
+client. </p> <p>It is part of the client's contract with the Window Server
+to listen for these events and respond to them by performing a redraw. The
+normal way for a client application to do this is through an active object,
+which is sometimes called a <b>redrawer</b>. This is normally provided by
+the application framework and should have a lower priority than the active
+objects for standard events. The client issues an asynchronous request for
+the next redraw event, calling the <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-DADAFFD6-4B63-35EE-8F50-F397C119CC27"><apiname>RWsSession::RedrawReady()</apiname></xref> function. </p> <p>The
+redrawer's <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref> function (which handles the completed
+request) calls <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-6008C20D-AA95-3803-8B57-54948FA61616"><apiname>RWsSession::GetRedraw()</apiname></xref>. This gets the <xref href="GUID-B5F16BF3-569D-3985-AAB7-439E3410468D.dita"><apiname>TWsRedrawEvent</apiname></xref>,
+which contains the handle of the window and the rectangle within it that needs
+to be redrawn and then does the redraw. This involves: </p> <ol id="GUID-078DF0F5-E856-5FFF-ADEB-1A09B4BBDFB0">
+<li id="GUID-75A15778-D570-5B5D-A07E-5660FFCAB00F"><p>Calling <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-9337538E-7A53-3153-A330-968B5E4F2FF2"><apiname>RWindow::BeginRedraw()</apiname></xref> on
+the relevant window and passing in the rectangle. </p> </li>
+<li id="GUID-C63A002A-B433-5054-BD73-0368E2FB6C1B"><p>Issuing the <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> drawing
+commands that define how to draw the area of the window specified by the rectangle
+passed in the <xref href="GUID-B5F16BF3-569D-3985-AAB7-439E3410468D.dita"><apiname>TWsRedrawEvent</apiname></xref>. These drawing commands must
+exactly match what was drawn originally, because the Window Server clips the
+drawing to the passed rectangle. </p> </li>
+<li id="GUID-AA03D7DD-0B8A-5241-87B1-D45BC8AAA369"><p>Calling <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-3DE16607-AD3B-3946-BEB3-88512EAAB9CE"><apiname>RWindow::EndRedraw()</apiname></xref>. </p> </li>
+</ol> <p>At the end of the redrawer’s <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref>, a call is
+made to <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-DADAFFD6-4B63-35EE-8F50-F397C119CC27"><apiname>RWsSession::RedrawReady()</apiname></xref> to enable the client
+to listen for further requests from the Window Server. </p> <p>The following
+diagram demonstrates that typically the <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref> starts with
+a <xref href="GUID-C57CFECB-72CD-39EB-A83E-82A9E985F56B.dita"><apiname>GetRedraw()</apiname></xref> and ends with a call to <xref href="GUID-E3F0CB70-58E4-32FD-9828-71DF2F9976D3.dita"><apiname>RedrawReady()</apiname></xref>. </p> <fig id="GUID-B092D136-8C18-5237-A095-F8C3BBFFDDB4">
+<title>              Window Server-initiated redraw            </title>
+<image href="GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e166912_href.png" placement="inline"/>
+</fig> <p>A redrawer's <codeph>RunL()</codeph> function must <b>not</b> perform
+any non-redraw drawing (that is, any drawing operations that are not bracketed
+within the calls to <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph>).
+If it does, this causes a panic with code 79 (<codeph>EWservPanicWindowBeginRedrawNotCalled</codeph>)
+in the ScreenPlay variant. This is to avoid the infinite loop that would otherwise
+be caused by an endless cycle of the non-redraw drawing within the <codeph>RunL()</codeph> triggering
+a Window Server-initiated redraw. </p> </section>
+<section id="GUID-0238F737-3D2B-4811-8E46-561922210143"><title>Application-initiated redrawing</title> <p>An application
+initiates redrawing when it wants to update the UI to reflect a change of
+state. There are two scenarios, which we describe under separate headings
+below. </p> <p><b>The "draw now" scenario </b> </p> <p>The "draw now" redraw scenario is
+when an application wants to push a state change to a window immediately.
+Typically the application does this by calling <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-D5458F8C-E199-37DD-B821-050B749122C6"><apiname>CCoeControl::DrawNow()</apiname></xref>.
+However, it is possible to achieve the same results using <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> and <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> calls
+directly. To illustrate how to do this, consider a digital clock application
+that updates the time displayed in the window from 12:02 to 12:03. </p> <p>The
+application does the following: </p> <ol id="GUID-D9D43E2B-B29D-5C6F-A1AB-ABA192D3D562">
+<li id="GUID-C59E802D-0D4F-595B-9F1C-BED1090EE7D7"><p>Calls <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-28202F81-52FE-30F5-8B8C-ABED0915822E"><apiname>RWindow::Invalidate()</apiname></xref>,
+optionally passing in the bounding rectangle. When called without passing
+in a rectangle, this function invalidates the entire window. </p> </li>
+<li id="GUID-491CB745-6B47-5656-874E-A87DE1BE6254"><p>Calls <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-9337538E-7A53-3153-A330-968B5E4F2FF2"><apiname>RWindow::BeginRedraw()</apiname></xref>.
+If the application passed a bounding rectangle to <codeph>Invalidate()</codeph>,
+it must pass the same bounding rectangle to <codeph>BeginRedraw()</codeph>.
+If the application did not pass a bounding rectangle to <codeph>Invalidate()</codeph>,
+it must not pass one to BeginRedraw(). </p> </li>
+<li id="GUID-8CA69A7D-0387-5604-9C10-983FB50514B5"><p>Issues the <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> draw
+commands. </p> </li>
+<li id="GUID-B2474EE6-CC03-55A8-9972-071B76512B26"><p>Calls <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-3DE16607-AD3B-3946-BEB3-88512EAAB9CE"><apiname>RWindow::EndRedraw()</apiname></xref>. </p> </li>
+</ol> <fig id="GUID-6E2637DC-F92A-56DE-BB07-F109F5CA681B">
+<title>              Application-initiated redrawing, "draw now" scenario
+           </title>
+<image href="GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e167020_href.png" placement="inline"/>
+</fig> <p><b>The "draw deferred" scenario </b> </p> <p>The "draw deferred" redraw scenario
+is when an application simply marks a window or a rectangle within a window
+as invalid. This eventually triggers a Window Server-initiated redraw. Typically
+the application does this by calling <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-9FB682AC-0209-302A-83F3-7BCB1162B998"><apiname>CCoeControl::DrawDeferred()</apiname></xref>.
+However, it is also possible to do this by calling <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-28202F81-52FE-30F5-8B8C-ABED0915822E"><apiname>RWindow::Invalidate()</apiname></xref>. </p> <fig id="GUID-8B78CE09-EE92-50B3-8000-731BD9C20890">
+<title>              Application-initiated redrawing, "draw deferred" scenario
+           </title>
+<image href="GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e167044_href.png" placement="inline"/>
+</fig> <p>This approach is useful when the data to be displayed might be updated
+frequently but it is not necessary to update the display instantaneously. </p> <p>To
+illustrate how it works, consider a window that has a rectangle that is used
+to display icons (a star, a cross and a triangle) that represent three different
+events that can occur in the application. Suppose the events can occur in
+quick succession. If you use the "draw now" approach when each event occurs,
+the Window Server updates the display separately for each one, as shown in
+the following diagram. </p> <fig id="GUID-04BCFA21-8D44-5FEA-BE29-57B40AC9CF99">
+<title>              Icons displayed using the "draw now" approach       
+    </title>
+<image href="GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e167058_href.png" placement="inline"/>
+</fig> <p>However, if you use the "draw deferred" approach when each event
+occurs, the Window Server may not update the display for each one. For example,
+the Window Server does not update the display when it is superceded by a later
+call. </p> <fig id="GUID-1E0E2A3C-1E63-58F6-940F-0D439FA6C721">
+<title>              Icons displayed using the "draw deferred" approach  
+         </title>
+<image href="GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e167069_href.png" placement="inline"/>
+</fig> <p>If it is important that the display is updated immediately, you
+would generally use the "draw now" approach. However, if a short delay in
+the display being updated is unlikely to inconvenience the user, the "draw
+deferred" approach might be appropriate and has a performance advantage. </p> </section>
+</conbody><related-links>
+<link href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita"><linktext>Graphics
+and Drawing </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C7DC797-3600-5EF8-A3E4-B44A7BCEE373.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7C7DC797-3600-5EF8-A3E4-B44A7BCEE373"><title>Media types</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>There are several types of file system media. For example,</p> <ul><li id="GUID-7E4E072F-11FF-5C54-BAE2-59AB9F1B68A5"><p>the ROM: this is always mapped to drive <filepath>z:</filepath>, and contains the operating system code</p> </li> <li id="GUID-73A8A963-AEFE-5B2C-9F28-3691232B15BB"><p>the RAM: a RAM drive shares space with kernel and user program memory. This space is dynamically allocated: there is no need for the owner of the machine to pre-allocate space. The RAM drive is always mapped to drive <filepath>c:</filepath>.</p> </li> <li id="GUID-54FE9E36-7197-5F7A-8AE3-746BA39BE548"><p>compact flash, accessed through an ATA interface: this is the main supported removable media. Whether there is a CF card slot, and what drive letters are allocated to it, are implementation dependent. A typical choice would be to use <filepath>d:</filepath> for the first partition on the first CF device.</p> </li> </ul> <p>Installable file systems may support other media.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C" xml:lang="en"><title>Using
+certapp</title><abstract><p>You can use <codeph>certapp</codeph> for the following purposes:</p><ul>
+<li><xref href="GUID-9473F793-29ED-42ED-933B-A995E56E71CB.dita">Creating a Certificate
+Store</xref></li>
+<li><xref href="GUID-13BDBFA4-49FE-4D62-8B5F-BE3DF3ABAF3E.dita">Converting a Certificate
+Store into Human-Readable Form</xref></li>
+<li><xref href="GUID-D8A18789-3A3E-4E4A-9D34-35F83BF71449.dita">Augmenting a Certificate
+Store</xref></li>
+</ul><p>For details of the syntax and the various command line options associated
+with <codeph>certapp</codeph>, see <xref href="GUID-C83D7112-0CF4-588D-8A0C-D27AB387F4D3.dita">certapp
+Reference</xref>. </p></abstract><prolog><metadata><keywords/></metadata></prolog><related-links>
+<link href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita"><linktext>Certificate
+Store Human-Readable File Formats</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722" xml:lang="en"><title>Using Literal Descriptors</title><shortdesc>Description and how to use literal descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7CE86E8C-0187-5679-B87D-71ABDE479048.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7CE86E8C-0187-5679-B87D-71ABDE479048"><title>Externalising and internalising descriptors</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Externalising</title> <p>Descriptors can be externalised in one of two ways:</p> <ul><li id="GUID-184B3A20-23C7-5F6C-80B0-B8902CC56DE8"><p>using the <codeph>WriteL()</codeph> member functions of the <codeph>RWriteStream</codeph> class.</p> </li> <li id="GUID-8593FABC-5C26-5155-8181-A9614126D678"><p>using the templated stream <codeph>operator&lt;&lt;</codeph> </p> </li> </ul> <p>The <codeph>WriteL()</codeph> member functions of <codeph>RWriteStream</codeph> write only the <i>content</i> of a descriptor to the stream; they do not write any length information.</p> <p>The <codeph>operator&lt;&lt;</codeph> is implemented by the Store framework to write <i>both</i> the length of the descriptor content and the content itself to the stream.</p> <p>Use of the <codeph>operator&lt;&lt;</codeph> is preferred because descriptors can then be internalised using either the corresponding <codeph>operator&gt;&gt;</codeph> or the variants of <codeph>HBufC::NewL()</codeph> or <codeph>HBufC::NewLC()</codeph> that take a read stream.</p> </section> <section><title>Internalising</title> <p>Descriptors can be internalised in one of three ways:</p> <ul><li id="GUID-62935D77-6E8A-572C-AD28-94F1287DBD59"><p>using the <codeph>ReadL()</codeph> member functions of the <codeph>RReadStream</codeph> class.</p> </li> <li id="GUID-4B78612E-1338-5205-95BC-757EB0CD0C00"><p>using the templated stream <codeph>operator&gt;&gt;</codeph> </p> </li> <li id="GUID-02D55084-3194-54E2-BCD7-5609819BCD91"><p>using the variants of <codeph>HBufC::NewL()</codeph> or <codeph>HBufC::NewLC()</codeph> that take a read stream.</p> </li> </ul> <p>The <codeph>ReadL()</codeph> member functions of <codeph>RReadStream</codeph> assume that the stream contains only the content of a descriptor.</p> <p>Note that the specific variant, <codeph>ReadL(TDes&amp; aDes)</codeph>, assumes that the length of data to be read from the stream is the same as the maximum length of the target descriptor.</p> <p>The templated stream <codeph>operator&gt;&gt;</codeph> is implemented by the Store framework to read both the length of the descriptor content and the content itself and assumes that the descriptor was originally externalised using the templated <codeph>operator&lt;&lt;</codeph>.</p> <p>The <codeph>NewLC()</codeph> and <codeph>NewL()</codeph> member functions of <codeph>HBufC</codeph> heap descriptors allocate the heap descriptor before internalising from the stream and also assume that the descriptor was originally externalised using the <codeph>operator&lt;&lt;</codeph>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7CF7D29B-14A4-432E-BBB2-E3AF283E45E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7CF7D29B-14A4-432E-BBB2-E3AF283E45E3" xml:lang="en"><title>Get
+battery voltage or consumption information</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Use <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::GetBatteryVoltageInfo()</apiname></xref> to
+get the battery voltage information and <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::GetBatteryInfo()</apiname></xref> to
+get the battery consumption data from HWRM server. </p> <p>The following code
+snippet demonstrates how to get battery consumption information: </p> <codeblock id="GUID-6C2FF788-618A-534B-AACD-787522F407EB" xml:space="preserve">TRequestStatus&amp; status
+TBatteryConsuptionData batterydata;
+iPower-&gt;GetBatteryInfo( status, batterydata );
+User::WaitForRequest( status );
+...</codeblock>     </context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e242212_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7D1E2DBD-004B-5047-BDA5-21CD55D0A95C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7D1E2DBD-004B-5047-BDA5-21CD55D0A95C" xml:lang="en"><title>Securing
+RTP with SRTP</title><shortdesc>This topic explains how to use callbacks to secure RTP communications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If you have registered preprocessing and postprocessing callbacks, the
+RTP stack calls them when sending or receiving RTP data. Therefore, your application
+can implement Secure RTP by adding encryption and authentication steps after
+reception and before sending. </p>
+<p>Your callback class must derive from MPrePostProcessingCallback and implement
+its four methods. Call the <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>SetPrePostProcessingRegisterCallback(</apiname></xref> method
+to register your callbacks. After registration, the callback behaviour is
+as follows: </p>
+<ul>
+<li id="GUID-EC65A889-9113-5095-9E15-42C91E76327B"><p>The RTP stack calls
+the appropriate preprocessing callback, <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>PreRtpProcessing()</apiname></xref> or <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>PreRtcpProcessing()</apiname></xref>, after data is received
+from the socket and before processing RTP headers. </p> </li>
+<li id="GUID-B78CDB23-D742-5B70-9F61-0712873EE3B3"><p>The RTP stack calls
+the appropriate postprocessing callback, <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>PostRtpProcessing()</apiname></xref> or <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>PostRtcpProcessing()</apiname></xref> , after completing an
+RTP or RTCP packet and before sending it to the socket. </p> </li>
+</ul>
+</conbody><related-links>
+<link href="GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita"><linktext>RTP Overview</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7D3B5008-CB40-504D-90A8-92DE482977CA" xml:lang="en"><title>bld.inf file syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7DB86BF1-0485-5CBA-9554-4C474B0EC1FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7DB86BF1-0485-5CBA-9554-4C474B0EC1FB" xml:lang="en"><title>Imaging Frameworks Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Imaging Framework component provides facilities to an image, to perform the image conversion function, the image processing function, the image transformation function, the image display function, the media client function, the JPEG Exif plug-in function, the Exif Utility function, the Gifscaler function, the bitmap transform function and the JPEG image frame plug-in function. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e262733_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041" xml:lang="en"><title>Array
+of packed elements, flat array</title><shortdesc>Describes arrays of packed elements in a flat.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is a <codeph>CArrayPakFlat&lt;class T&gt;</codeph> object whose
+elements can have different lengths but are physically contiguous within a
+flat array buffer. Each element is preceded by a <codeph>TInt</codeph> value
+to record the length of that element.</p>
+<p>A flat buffer always occupies a single cell allocated from the heap and
+is always extended by the process of reallocation. A flat array buffer is
+implemented using a <codeph>CBufFlat</codeph> object. </p>
+<p>The following diagram illustrates how elements are organised within the
+array buffer:</p>
+<fig id="GUID-C36AFFF1-3BE7-5AF3-B852-B1AB3BBA257D">
+<image href="GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e190953_href.png" placement="inline"/>
+</fig>
+<p>This kind of array is suitable for a small number of objects or for a moderately
+large but fixed maximum number of objects. It is not suitable for large arrays
+with a high turnover of elements. </p>
+<p>A packed array has the advantage over a variable flat array in having a
+smaller memory overhead for each element. The disadvantage is that the elements
+and their preceding <codeph>TInt</codeph> values occupy a single cell which
+has a higher risk of reallocation failure in times of low memory availability.</p>
+<p>This class is immediately derived from the abstract template
+base class <codeph>CArrayPak&lt;class T&gt;</codeph> which is itself derived
+from the abstract non-templated base class <codeph>CArrayPakBase</codeph>.</p>
+<section id="GUID-0758EE5B-5846-4ABD-B2E5-DA2C0AD57032"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE" xml:lang="en"><title>Commands
+and Responses</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial deals with the commands and responses available for remote
+control framework applications. </p>
+<p><b>Intended Audience: </b> </p>
+<p>This tutorial is designed for Symbian licensees and 3rd party application
+developers. </p>
+<section><title>Using Commands and Responses</title> <p>The following tasks
+will be covered in this tutorial: </p> <ul>
+<li id="GUID-0F780A84-DECF-5FF3-B2A1-1B11ADD91380"><p> <b>As Controller</b>  </p> <ul>
+<li id="GUID-BA8C996B-3E5D-540F-B96D-623E21372990"><p>Send Commands </p> </li>
+<li id="GUID-23E3F61D-590F-5593-B68E-240DEA8750F0"><p>Receive responses </p> </li>
+</ul> </li>
+<li id="GUID-0FF1F84C-CCC0-5B1C-A1F9-36C3D6F5F7F0"><p> <b>As Target</b>  </p> <ul>
+<li id="GUID-29C9E51A-9292-52A5-9C1A-27233F95FF2E"><p>Receive Commands </p> </li>
+<li id="GUID-71816C68-E2DD-5494-9498-69908BA72ED4"><p>Send Responses </p> </li>
+</ul> </li>
+</ul> </section>
+<section><title>Controller</title> <p>The device used to send control commands
+to a remote target is the controller. There are two broad kinds of controller
+operations that need to be understood: sending commands and receiving responses.
+They are discussed below. </p> <p><b>Sending Commands</b> </p> <p>Commands
+are sent to a remote control target device to tell the device to do something.
+This may include changing the volume setting, requesting a track listing,
+starting or stopping music playback, requesting a file listing, or depending
+on the kind of device being controlled, telling the device to move in some
+way. </p> <codeblock id="GUID-5A1B8672-7AD8-5BAB-BE6C-7D7D3650F6DD" xml:space="preserve">...
+ CRemConCoreApiController* iCoreController;
+... // open the controller as previously discussed.
+ TRequestStatus stat;
+ TUint numRemotes;
+ // numRemotes is a value representing a specific participating device.
+ iCoreController-&gt;Play(stat, numRemotes, ERemConCoreApiButtonClick);
+ User::WaitForRequest(stat);
+ LEAVEIFERRORL(stat.Int());</codeblock> <p>When a target receives the command
+it will handle it in an appropriate way, as discussed in the next section.
+The target may also send a response to the controller. </p> <p><b>Receiving
+Responses</b> </p> <p>If a target sends a response to a received command the
+controller needs to handle the response. The response could be something as
+simple as an acknowledgement that a command has been received or it could
+be as complex as a listing of audio tracks that the controller needs to process
+in some way. </p> <p>To receive responses the application should implement
+the <xref href="GUID-8457DAF2-0AEA-3D05-99C9-DAF4CBDF77FD.dita"><apiname>MRemConCoreApiControllerObserver</apiname></xref> controller observer
+interface. It then receives callbacks when a response has arrived. </p> <codeblock id="GUID-15F36049-159A-5E34-8A86-56837E027573" xml:space="preserve">void MrccacoResponse(TRemConCoreApiOperationId aOperationId, 
+                     TInt aError);
+...
+void CRemConTestOuter::MrccacoResponse(TRemConCoreApiOperationId aOperationId,
+                                       TInt aError)
+    {
+    switch ( aOperationId )
+        {
+        case ERemConCoreApiPlay: 
+             iManager.MtmWrite(_L8("\ta 'play' response came in with error %d"), aError);
+             break;
+        case ERemConCoreApiStop:
+             iManager.MtmWrite(_L8("\ta 'stop' response came in with error %d"), aError);
+             break;
+        case ERemConCoreApiVolumeUp:
+             iManager.MtmWrite(_L8("\ta 'VolumeUp' response came in with error %d"), aError);
+             break;
+        case ERemConCoreApiVolumeDown: 
+             iManager.MtmWrite(_L8("\ta 'VolumeDown' response came in with error %d"), aError);
+             break;
+        case ERemConCoreApiForward:
+             iManager.MtmWrite(_L8("\ta 'Forward' response came in with error %d"), aError);
+             break;
+        case ERemConCoreApiBackward:
+             iManager.MtmWrite(_L8("\ta 'Backward' response came in with error %d"), aError);
+             break;    
+        }
+    }</codeblock> <p>Responses are often followed up by the controller with
+a series of actions such as presenting the information provided by the response
+to the user, waiting for the user to make a choice of some kind, and sending
+a new command, which begins the whole process again. </p> </section>
+<section><title>Target</title> <p>A target device is set up to wait for and
+handle commands sent to it from a controller and respond in some way to those
+commands. </p> <p><b>Receiving Commands</b> </p> <p>To receive a command,
+such as a request to increase the volume or return a listing of audio tracks,
+the client must implement the <xref href="GUID-50F877E1-F630-3960-8DB4-37B6AD807308.dita"><apiname>MRemConCoreApiTargetObserver</apiname></xref> target
+observer interface. It then will receive a callback through this interface
+when a command is received. </p> <codeblock id="GUID-76929311-D3D1-5440-9608-FAC4ADBE0F55" xml:space="preserve">iCoreTarget = CRemConCoreApiTarget::NewL(*iInterfaceSelector, *this);
+...
+void CRemConTestOuter::MrccatoPlay(TRemConCoreApiPlaybackSpeed aSpeed,
+                                   TRemConCoreApiButtonAction aButtonAct)
+    {
+    ...
+    // used below
+    TRequestStatus stat;
+    // send the response
+    iCoreTarget-&gt;PlayResponse(stat, KErrNone);
+    User::WaitForRequest(stat);
+    ...
+    }</codeblock> <p><b>Sending Responses</b> </p> <p>Once the command has
+been handled the target will send a response to the controller. The response
+could be a simple acknowledgement, an error message, or a listing of files
+or music tracks or some other data. Use the <xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref> interface. </p> <codeblock id="GUID-9F502820-CE27-5FB3-9D89-80C28A386F12" xml:space="preserve">...
+CRemConCoreApiTarget* iCoreTarget;
+...
+    {
+    ...
+    // from above
+    TRequestStatus stat;
+    // send the response
+    iCoreTarget-&gt;PlayResponse(stat, KErrNone);
+    User::WaitForRequest(stat);
+     ...
+    }</codeblock> </section>
+<section><title>What's next?</title> <ul>
+<li id="GUID-5D4365C4-0012-5F27-A22C-440C8E6905E9"><p> <xref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita">Remote
+Control Basics</xref> </p> </li>
+<li id="GUID-A6A62C85-0913-5954-B954-FBFAE9DFD839"><p> <xref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita">Starting
+as Controller</xref>  </p> </li>
+<li id="GUID-01D925B8-5864-554C-9D9D-E9C2A29230A9"><p> <xref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita">Starting
+as Target</xref>  </p> </li>
+<li id="GUID-7BFBAB9C-6810-5D35-BE95-D00D57D8B668"><p> <b>Commands and Responses</b> -
+This document </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1" xml:lang="en"><title>Indicators
+in the Navi pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Navi pane can contain several kinds of indicators, depending on which
+way the pane is used in the particular context:</p>
+<table id="GUID-316EBE04-76B1-4F91-90B7-8F5446943FAC"><title>Navi pane indicators</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Indicators</entry>
+<entry><p>Description</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Left and right arrows</p><fig id="GUID-58FC0E5C-12D5-4B42-8171-37567D139807">
+<title>Arrows in the Navi pane</title>
+<image href="GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e62337_href.png" scale="40" placement="inline"></image>
+</fig></entry>
+<entry><p>When horizontal navigation between different main pane views is
+used, the Navi pane displays the navigation information (tabs or text may
+be used). The arrow icons on the left and right ends of the Navi pane indicate
+the possibility to move in the corresponding directions (with tabs, the arrows
+are only displayed when all tabs are not visible).</p></entry>
+</row>
+<row>
+<entry><p>Editing indicators</p><fig id="GUID-C5367363-A4F0-4AF2-8418-ED01597ED535">
+<title>Editing indicators in the Navi pane</title>
+<image href="GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e62355_href.png" scale="40" placement="inline"></image>
+</fig></entry>
+<entry><p>When an editor is in use in the main pane, the indicators related
+to editing parameters are displayed in the Navi pane. They indicate things
+such as the editing mode (numeric/alphanumeric), character case, Predictive
+Text status, and the available space.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section><title>Using navi pane indicators
+in C++ applications</title><p>The API to use for indicators is the Indicators API. For the navi pane, use the Navigation
+pane API. For implementation information, see Using
+the Navigation pane API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7E2891DB-372F-517C-95A4-D706EF1DB8B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7E2891DB-372F-517C-95A4-D706EF1DB8B3"><title>fc</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>fc [ -e ename ] [ -nlrdDfEim ] [ old=new ... ] [ first [ last ] ] </userinput> </p> <p>or </p> <p><userinput>fc -ARWI [ filename ] </userinput> </p> <p>Select a range of commands from first to last from the history list. The arguments <codeph>first </codeph> and <codeph>last</codeph> may be specified as a number or as a string. A negative number is used as an offset to the current history event number. A string specifies the most recent event beginning with the given string. All substitutions <codeph>old=new</codeph>, if any, are then performed on the commands. </p> <table id="GUID-10212BF9-323B-5BE8-8151-EBA74F77CFD0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-l</codeph>  </p> </entry> <entry><p>The resulting commands are listed on standard output. </p> </entry> </row> <row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>The first argument is taken as a pattern (should be quoted) and only the history events matching this pattern will be shown. </p> </entry> </row> <row><entry><p> <codeph>ename</codeph>  </p> </entry> <entry><p>The editor program ename is invoked on a file containing these history events. If ename is not given, the value of the parameter <codeph>FCEDIT</codeph> is used. If ename is not given, editor is invoked. When editing is complete, the edited command is executed. </p> </entry> </row> <row><entry><p> <codeph>-r</codeph>  </p> </entry> <entry><p>Reverse the order of the commands. </p> </entry> </row> <row><entry><p> <codeph>-n</codeph>  </p> </entry> <entry><p>Suppresses command numbers when listing. </p> </entry> </row> <row><entry><p> <codeph>-d</codeph>  </p> </entry> <entry><p>Prints timestamps for each command. </p> </entry> </row> <row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p>Prints full time-date stamps. </p> </entry> </row> <row><entry><p> <codeph>-E</codeph>  </p> </entry> <entry><p>Causes the dates to be printed as <codeph>dd.mm.yyyy</codeph>, instead of the default <codeph>mm/dd/yyyy</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-i</codeph>  </p> </entry> <entry><p>Causes the dates to be printed in ISO8601 <codeph>yyyy-mm-dd</codeph> format. </p> </entry> </row> <row><entry><p> <codeph>-D</codeph>  </p> </entry> <entry><p> <codeph>fc</codeph> prints elapsed time. </p> </entry> </row> </tbody> </tgroup> </table> <ul><li id="GUID-63A4B791-18F0-5705-A56F-FAF53435626A"><p> <codeph>fc -R</codeph>: Reads the history from the given file. </p> </li> <li id="GUID-FEFB2027-9FE5-5726-BA5C-B38071ED329E"><p> <codeph>fc -W</codeph>: Writes the history out to the given file. </p> </li> <li id="GUID-7168582D-0EDB-52EF-ABAC-3B1D23F64FF7"><p> <codeph>fc -A</codeph>: Appends the history out to the given file. </p> </li> </ul> <p>If no filename is specified, the <codeph>$HISTFILE</codeph> is assumed. If the <codeph>-I</codeph> option is added to <codeph>-R</codeph>, only those events that are not already contained within the internal history list are added. If the <codeph>-I</codeph> option is added to <codeph>-A</codeph> or <codeph>-W</codeph>, only those events that are new since last incremental append/write to the history file are appended or written. In any case, the created file will have no more than <codeph>$SAVEHIST</codeph> entries. </p> <p>If <codeph>first </codeph> is not specified, it will be set to <codeph>-1</codeph> (the most recent event), or to <codeph>-16</codeph> if the <codeph>-l </codeph> flag is given. If <codeph>last</codeph> is not specified, it will be set to <codeph>first</codeph>, or to<codeph> -1</codeph> if the <codeph>-l </codeph> flag is given. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e36515_href.png has changed
Binary file Symbian3/SDK/Source/GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e46298_href.png has changed
Binary file Symbian3/SDK/Source/GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e52381_href.png has changed
Binary file Symbian3/SDK/Source/GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e55518_href.png has changed
Binary file Symbian3/SDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e3380_href.png has changed
Binary file Symbian3/SDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e2078_href.png has changed
Binary file Symbian3/SDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e51370_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7E967B81-2DBF-5A89-B74B-93FEA5515685.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7E967B81-2DBF-5A89-B74B-93FEA5515685" xml:lang="en"><title>How
+to use new with automatic leave on failure</title><shortdesc>Provides code snippets to show you how to use <codeph>new</codeph> with
+automatic leave on failure</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The case of <codeph>new</codeph> failing is so common that a version of <codeph>operator
+new()</codeph> has been written which takes a single parameter <codeph>ELeave</codeph>,
+indicating that it must leave if it was unable to allocate memory.</p>
+<p>Use <codeph>operator new()</codeph> so that there is no need to check the
+result of the <codeph>new</codeph>.</p>
+<codeblock id="GUID-E898C802-28E7-5330-B4F1-08829BECB4AE" xml:space="preserve">void doExampleL()
+ {
+ // attempt to allocate, leave if could not
+ CExample* myExample = new (ELeave) CExample;
+ // new (ELeave) replaces new followed by check
+ // do something
+ myExample-&gt;iInt = 5;
+ testConsole.Printf(_LIT("Value of iInt is %d.\n"),myExample-&gt;iInt);
+ // delete
+ delete myExample;
+ }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7EA8047F-BD30-5100-9284-9A684500BFE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7EA8047F-BD30-5100-9284-9A684500BFE6" xml:lang="en"><title>Registration
+Status Tutorial</title><shortdesc>This tutorial describes how to get the registration information
+with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The information about the network service like Roaming, Busy,
+Emergency calls only or No service is provided to the client applications. </p></context>
+
+
+<steps id="GUID-DB410EC7-09ED-5E05-892B-23333B678FB4">
+<step id="GUID-0AF5395D-6D56-5E83-BA77-BFF6EB2D2DEC"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-F781DB86-2235-5A24-A2B7-C4F6C85C0340"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetNetworkRegistrationStatus()</apiname></xref> to
+get the registration status information from the network </info>
+</step>
+<step id="GUID-0712E5C9-233B-5371-81C4-48A67AC38891"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetNetworkRegistrationStatusCancel</apiname></xref> to
+cancel the asynchronous request </info>
+</step>
+<step id="GUID-D8A225B1-ED33-5AE4-B3DB-1826C796DB21"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ENetworkRegistrationStatusChange</apiname></xref> to
+get the notification of any changes to the registration status </info>
+</step>
+<step id="GUID-4CD5ED70-89D5-55AB-972F-26B1AC7C8205"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ENetworkRegistrationStatusChangeCancel</apiname></xref> to
+cancel the notification request. </info>
+</step>
+</steps>
+<example id="GUID-E42753A5-EF76-5B98-8E9E-8734C9ABFB66"><title>Registration
+status example</title> <codeblock id="GUID-84333DC0-97D7-5D8B-BFE7-F72793F38C6D" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TNetworkRegistrationV1 iNetworkRegistrationV1;
+    CTelephony::TNetworkRegistrationV1Pckg iNetworkRegistrationV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+    };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iNetworkRegistrationV1Pckg(iNetworkRegistrationV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetNetworkRegistrationStatus(iStatus, iNetworkRegistrationV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       CTelephony::TRegistrationStatus regStatus = iNetworkRegistrationV1.iRegStatus;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetNetworkRegistrationStatusCancel);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736"><title>Sending and Receiving Data Tutorial</title><shortdesc>This topic describes how to send and receive data to a remote host. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>When the client connects to the remote host it can send and receive data packets to a remote host. This tutorial describes the following: </p> <ul><li id="GUID-BED45529-EC0D-5A52-815A-CB56B2995842"><p> <xref href="GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736.dita#GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736/GUID-9E7CB558-F1AC-5C65-906B-2BF97FDD8124"> How to Send Data to a Remote Host</xref>  </p> </li> <li id="GUID-47320BA5-127C-5377-B7A5-105F361FA67D"><p> <xref href="GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736.dita#GUID-7EE80A94-DAB3-5A5C-B3AE-146501592736/GUID-5B79C047-6443-5FA3-9A09-427C88468681"> How to Receive Data from a Remote Host</xref>  </p> </li> </ul> </section> <section id="GUID-9E7CB558-F1AC-5C65-906B-2BF97FDD8124"><title> How to Send Data to a Remote Host</title> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-ADE2383D-3075-30B4-8F63-6D837EB75AEF"><apiname>RSocket::Send()</apiname></xref> and <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-F948E0A6-DC1A-3FCD-A391-0FEE0F673D36"><apiname>RSocket::SendTo()</apiname></xref> functions send the data to a remote host with a flag parameter option set. </p> </section> <section id="GUID-5B79C047-6443-5FA3-9A09-427C88468681"><title> How to Receive Data from a Remote Host</title> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-E17C2B37-BA28-3B7F-9FAC-82D3D2B7B0EF"><apiname>RSocket::Recv()</apiname></xref>, <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-67604D2C-36A6-3586-A31F-FB49C531E66F"><apiname>RSocket::Read()</apiname></xref>, <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-358DD8F2-DEDF-383B-B4F0-11AB5FB1AC72"><apiname>RSocket::RecvOneOrMore()</apiname></xref> and <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-876863C1-E691-3C3F-9CFB-9597B577509E"><apiname>RSocket::RecvFrom()</apiname></xref> functions receive and read the data from a remote host. </p> <p>The <codeph>RSocket::Recv()</codeph> and <codeph>RSocket::Read()</codeph> functions attempts to read the amount of data set by the size of the descriptor passed. These functions only complete when the descriptor is filled, or when the connection closes. If the descriptor is filled, the amount of data read is passed back in <codeph>aLen</codeph>. If the connection closes, the descriptor does not contain any data, and <codeph>aLen</codeph> should be ignored. </p> <p>The <codeph>RSocket::RecvOneOrMore()</codeph> function is completed when data is available. </p> <p>The <codeph>RSocket::RecvFrom()</codeph> function reads the first queued datagram. When it returns <codeph>anAddr</codeph> points to a <codeph>TInetAddr</codeph> object that holds the address of the remote source of the data. In UDP, if the socket is not bound to a local address and port, then binding is attempted. </p> <p> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7EFA2113-3C4A-5C52-AC28-BBD512466302.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7EFA2113-3C4A-5C52-AC28-BBD512466302" xml:lang="en"><title>C Standard Library Examples</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7EFBEEAD-3E74-5165-B305-313F7DE4BEB4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7EFBEEAD-3E74-5165-B305-313F7DE4BEB4"><title>OpenVG Interface Component Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The OpenVG Interface component defines the interface to OpenVG on the Symbian platform. The component standardizes the source and binary interfaces in order to encourage both source and binary compatibility between Symbian-based OpenVG implementations. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p> <section><title>Supported APIs</title> <p>The OpenVG specifications are defined by the Khronos Group (<xref scope="external" href="http://www.khronos.org">www.khronos.org</xref>). The following table provides links to the relevant specifications. </p> <table id="GUID-5B734E4C-E838-5478-990F-817F4D0971FB"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>APIs</entry> <entry>Specification</entry> </row> </thead> <tbody><row><entry><p>OpenVG 1.0.1 and VGU 1.0 </p> </entry> <entry><p> <xref scope="external" href="http://www.khronos.org/registry/vg/specs/openvg_1_0_1.pdf">http://www.khronos.org/registry/vg/specs/openvg_1_0_1.pdf </xref>  </p> </entry> </row> <row><entry><p>OpenVG 1.1 and VGU 1.1 </p> </entry> <entry><p> <xref scope="external" href="http://www.khronos.org/registry/vg/specs/openvg-1.1.pdf">http://www.khronos.org/registry/vg/specs/openvg-1.1.pdf </xref>  </p> </entry> </row> </tbody> </tgroup> </table> <p>VGU provides some handy functions that can be used by OpenVG applications. For example, it provides functions for drawing primitives (such as lines, polygons, rectangles and arcs) and for computing warp matrixes. The latter transform the drawing surface from one shape to another (for example, from a square to an arbitrary quadrilateral defined by points). </p> </section> <section><title>Header files</title> <p>The OpenVG Interface component includes the Khronos-released header files <filepath>openvg.h</filepath> and <filepath>vgu.h</filepath>. These header files incorporate minor changes such as Doxygen tags (<codeph>/**</codeph> comments) and the Symbian-defined macro <xref href="GUID-95CD96CA-70FD-325A-9D97-0E2BCB4C92FF.dita"><apiname>__SOFTFP</apiname></xref>, which is described below. Use of these standard header files helps to ensure binary compatibility for applications across different Symbian platforms. It also provides source compatibility between different operating systems. </p> <p>The header files are provided for both OpenVG 1.0 and OpenVG 1.1. Stub <filepath>openvg.h</filepath> and <filepath>vgu.h</filepath> files redirect to the OpenVG 1.0 headers by default. However a variability point can be used to expose the OpenVG 1.1 headers. </p> <p>The Symbian-defined header file <filepath>/epoc32/include/khronos_types.h</filepath> maps the Khronos-defined basic types to native Symbian types. </p> </section> <section><title>Floating point conventions</title> <p>Within the Khronos-supplied header files, the Symbian-defined macro <xref href="GUID-95CD96CA-70FD-325A-9D97-0E2BCB4C92FF.dita"><apiname>__SOFTFP</apiname></xref> has been added to the declaration of all functions that pass, or return, floating point numbers by value. This means that: </p> <ul><li id="GUID-85D70C88-01C9-5ACF-A39E-F2DC74158FD8"><p>When using the API both clients and the OpenVG implementation must use software floating point calling conventions, regardless whether hardware or software floating point compiler options are actually used. </p> </li> <li id="GUID-C755520B-8CC8-55E0-A47F-584A7C3A19C5"><p>If suitable hardware is available, the OpenVG implementation can use hardware-accelerated floating point features internally without a risk of binary incompatibility with client programs. </p> </li> <li id="GUID-6C5F4FDE-7C69-5C47-9D10-4CB6A43EB0B8"><p>If suitable hardware is available, OpenVG client programs can use hardware-accelerated floating point features internally without a risk of binary incompatibility with the OpenVG implementation. </p> </li> </ul> </section> <section><title>Library names</title> <p>The OpenVG Interface component includes the following LIB files: </p> <table id="GUID-DB65C429-5A67-5D4B-A42D-D48883BEB94F"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Library</entry> <entry>Name</entry> </row> </thead> <tbody><row><entry><p>OpenVG </p> </entry> <entry><p> <filepath>libOpenVG.lib</filepath>  </p> </entry> </row> <row><entry><p>VGU </p> </entry> <entry><p> <filepath> libOpenVGU.lib</filepath>  </p> </entry> </row> </tbody> </tgroup> </table> <p>The corresponding DLL files must be delivered by the implementation. </p> </section> <section><title>DEF files</title> <p>The OpenVG Interface component supplies DEF files to further ensure binary compatibility between different platforms. These files exist for the WINS and WINSCW emulator and ARM hardware platforms as shown in the following tables. Although the names have a trailing "u", this is not specified in the MMP file because it is appended automatically. </p> <p><b>DEF files for WINS and WINSCW </b> </p> <table id="GUID-2F4052FB-DEB3-5849-954A-8D6A333E3916"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Library</entry> <entry>Name</entry> </row> </thead> <tbody><row><entry><p>OpenVG 1.0.1 </p> </entry> <entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvg10u.def</filepath> </p> </entry> </row> <row><entry><p>VGU 1.0.1 </p> </entry> <entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvgu10u.def</filepath> </p> </entry> </row> <row><entry><p>OpenVG 1.1 </p> </entry> <entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvg11u.def</filepath>  </p> </entry> </row> <row><entry><p>VGU 1.1 </p> </entry> <entry><p> <filepath>\epoc32\include\platform\def\win32\libopenvgu11u.def</filepath> </p> </entry> </row> </tbody> </tgroup> </table> <p><b>DEF files for ARM </b> </p> <table id="GUID-B067511D-B957-5BC1-9967-04FADE5EF079"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Library</entry> <entry>Name</entry> </row> </thead> <tbody><row><entry><p>OpenVG 1.0.1 </p> </entry> <entry><p> <filepath>\epoc32\include\platform\def\eabi\libopenvg10u.def</filepath>  </p> </entry> </row> <row><entry><p>VGU 1.0.1 </p> </entry> <entry><p> <filepath> \epoc32\include\platform\def\eabi\libopenvgu10u.def</filepath> </p> </entry> </row> <row><entry><p>OpenVG 1.1 </p> </entry> <entry><p> <filepath>\epoc32\include\platform\def\eabi\libopenvg11u.def</filepath>  </p> </entry> </row> <row><entry><p>VGU 1.1 </p> </entry> <entry><p> <filepath> \epoc32\include\platform\def\eabi\libopenvgu11u.def</filepath> </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita"><linktext>OpenVG Collection Overview</linktext> </link> <link href="GUID-C2E24953-3D83-59FB-8B7A-C850474406DB.dita"><linktext>OpenVG Interface Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e171843_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F2C1C45-43FA-5F19-81E3-4DBC0328E4A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7F2C1C45-43FA-5F19-81E3-4DBC0328E4A7"><title>Bluetooth Sockets Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Discovers other Bluetooth devices, and reads and writes data over Bluetooth. </p> <p>There are two roles to be played in establishing a communications channel over Bluetooth, they are: </p> <ul><li id="GUID-0FA9E876-A712-5F53-8F14-7B8AA8318B45"><p>Initiator </p> </li> <li id="GUID-A0D3EF0E-26DD-59BA-89BA-88F6E134A4CA"><p>Receiver </p> </li> </ul> <p>The receiver starts the Bluetooth system and waits for an initiator to make the connection. Once the connection has been made, both ends are equals, and either can send and receive data and terminate the connection. This API allows either role to be programmed. </p> </section> <section><title>Architectural relationships</title> <p>The API supports communication over both the L2CAP and RFCOMM layers of the Bluetooth protocol suite. The API is based on the Sockets Client-Side API, which provides a standard API that allows a client to make a connection to a remote device or have the remote device connect to it, then to send and receive data before disconnecting. </p> </section> <section><title>Description</title> <p>The API has five key concepts: socket address, remote device inquiry, RFCOMM commands and options, L2CAP commands, and HCI commands. </p> <p><b>Socket address</b> </p> <p>Each Bluetooth device has a unique 48-bit address. This is encapsulated by <xref href="GUID-D6B126B5-A6AA-37E1-845F-4D650033C603.dita"><apiname>TBTDevAddr</apiname></xref>. </p> <p>The sockets API encapsulates a generic communications end point through a <xref href="GUID-66228064-B6E7-3CE9-8F5E-5DED4CD9A49B.dita"><apiname>TSockAddr</apiname></xref>. Bluetooth provides a specialised version of this, <xref href="GUID-DFE19A3C-9E18-3B27-8748-FA0DB48A599C.dita"><apiname>TBTSockAddr</apiname></xref>, which adds a Bluetooth device address field. </p> <p><b>Remote device inquiry</b> </p> <p>A client can query for available remote devices through the sockets class <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>. A parameter of type <xref href="GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D.dita"><apiname>TInquirySockAddr</apiname></xref> is supplied for such queries: principally, this allows you to limit discovery to specific classes of device. </p> <p><b>Commands and options</b> </p> <p>You can send commands to an RFCOMM socket through an <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-1DEB83AF-C681-30D4-951C-4C2A5572E59C"><apiname>RSocket::Ioctl()</apiname></xref> call. It is possible to get and set options on a socket through <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-F6BB908A-2E57-3259-8F7F-AC089C6D0C56"><apiname>RSocket::GetOpt()</apiname></xref> and <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-0DD7A667-7043-3D6B-A086-32DD222C199B"><apiname>RSocket::SetOpt()</apiname></xref> respectively. </p> <p>You can send commands to L2CAP sockets and to the HCI layer through <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-1DEB83AF-C681-30D4-951C-4C2A5572E59C"><apiname>RSocket::Ioctl()</apiname></xref>. </p> </section> </conbody><related-links><link href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita"><linktext>Bluetooth User
+                Tutorials</linktext> </link> <link href="GUID-D92F7F23-6A32-5F5B-8782-3DBAF9CACEE6.dita"><linktext>Bluetooth Stack
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e162512_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F4692A0-1801-5D91-8F28-06075AC45DE2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-7F4692A0-1801-5D91-8F28-06075AC45DE2" xml:lang="en"><title>Filtering
+Implementations by Vendor ID </title><shortdesc>The Plug-in framework clients can be restricted to use plug-ins
+supplied by a particular company. This enables to enhance security and improve
+functionality of the framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Platform security provides a mechanism to mark the plug-ins with
+a vendor identifier by using the <codeph>vendorid</codeph> keyword in the <xref href="GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita">project file</xref>. This
+information is used for plug-in selection. </p><p>To filter implementations
+by vendor id there is no need to use the <codeph>TEComResolverParams</codeph> object.
+Instead, follow the steps described below: </p> </context>
+<steps id="GUID-C7923C51-397D-5E3B-B47C-F19AD21743FF">
+<step id="GUID-7E2CAE34-C937-50E7-BA83-44CB02E95A1A"><cmd/>
+<info>Retrieve the list of available implementations of an interface using <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-AE9D4F24-8554-3151-AAF3-D63F400821C4"><apiname>REComSession::ListImplementationsL()</apiname></xref>. </info>
+</step>
+<step id="GUID-82D683A5-7BE6-5E4D-9686-30869F71E617"><cmd/>
+<info>Retrieve the vendor ID of the implementation, using <xref href="GUID-3107B19B-0607-3E9E-AEA5-BAD07EEC59D0.dita#GUID-3107B19B-0607-3E9E-AEA5-BAD07EEC59D0/GUID-372E7F18-EAA3-3B85-950D-72E3C09072C8"><apiname>      
+          CImplementationInformation::VendorId()</apiname></xref>. </info>
+<info>If the matching vendor ID is returned, use the plug-in as required. </info>
+</step>
+</steps>
+<example id="GUID-F6140DF5-515F-5C42-B905-E8BC64380410"><title>Filtering implementations
+by vendor ID example</title> <codeblock id="GUID-21D942BD-CDC5-5976-A760-2607A1D88F7F" xml:space="preserve">// Specify interface for which to get implementations
+TUid interfaceUid={0111111111};
+RImplInfoPtrArray implArray;
+// get list of implementations into the array
+REComSession::ListImplementationsL(interfaceUid, implArray);
+
+// loop through implementations
+TInt implCount = implArray.Count();
+for(TInt count = 0; count &lt; implCount; count++)
+  {
+  // read vendor ID
+  const CImplementationInformation* implInfo = implArray[count];
+  TVendorId vid = implInfo-&gt;VendorId();
+
+   . . .
+
+  }
+
+   . . .
+
+implArray.ResetAndDestroy();
+REComSession::FinalClose();</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F476137-5E7F-5288-9F4A-6C20F0A1AD9B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7F476137-5E7F-5288-9F4A-6C20F0A1AD9B" xml:lang="en"><title>Location Based Services
+(LBS) Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Location Acquisition API is the interface that programmers use to create
+location-aware applications. The API gives developers the ability to get location
+fixes and to obtain information about the positioning technologies available
+to the mobile device. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0" xml:lang="en"><title>Upgrading
+OS Components</title><abstract><p>A device creator can replace data files and binaries in ROM by
+means of eclipsing. A typical example for this requirement is to fix a software
+issue. </p><p>To eclipse the files in the ROM, the device creators must add
+a Stub SIS file to the ROM and install a package that supports eclipsing.
+See <xref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita#GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0/GUID-238CFC90-366C-5BB0-AD2C-2D0F88A8A0A1">Creating
+and adding a stub SIS file to ROM</xref> and <xref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita#GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0/GUID-D2E7EE55-A154-58E3-A431-3350C4F7989E">Creating
+SIS files for eclipsing</xref> for details. </p></abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-238CFC90-366C-5BB0-AD2C-2D0F88A8A0A1"><title>Creating and
+adding a stub SIS file to ROM</title> <ol id="GUID-881FF7BC-F4C3-5579-AA91-EA9EBC29530C">
+<li id="GUID-2CB598EA-2534-58B7-8496-DA51236EF9C7"><p>Create a PKG file. </p> <p>Ensure
+the PKG file used to generate the Stub SIS file does not include source file
+entries and are specified as empty strings. </p> <p>For example: </p> <codeblock id="GUID-708D3DD4-D745-58D1-9BD3-5594D369A023" xml:space="preserve">; Example STUB File
+&amp;EN
+%{"Nokia Corporation"}
+:"Nokia Corporation"
+#{"Hello World"},(0x18000091),1,0,0
+"" - "z:\sys\bin\HelloWorld.exe"
+"" - "z:\resource\apps\HelloWorld.rsc"
+"" - "z:\resource\apps\HelloWorld.mbm"
+"" - "z:\private\10003a3f\import\apps\HelloWorld_reg.rsc"</codeblock> <p> <b>Note</b>:
+For details about using wildcards, see <xref href="GUID-A6CF0AD2-BDE4-548C-A165-581FCD019D7C.dita">Wildcard
+Usage with Stub SIS files</xref>. </p> </li>
+<li id="GUID-078AAB0B-4D3F-580D-9FE0-FD9FAB41532B"><p>Run the <xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">MakeSIS</xref> tool
+at the command-prompt and specify the <codeph>-s</codeph> option to create
+the stub SIS file: </p> <p><userinput>makesis –s &lt;PKG_filename&gt;</userinput> </p> <p> <b>Note</b>:
+The package UID must be selcted from the protected range allocated to the
+device creator by Symbian Signed. </p> </li>
+<li id="GUID-FD66AE79-DD5B-5EED-B70E-B39E8DA0ED79"><p>Place the generated
+stub SIS file in the following location <filepath>Z:\system\install\</filepath>. </p> </li>
+</ol> </section>
+<section id="GUID-D2E7EE55-A154-58E3-A431-3350C4F7989E"><title>Creating SIS
+files for eclipsing</title> <ol id="GUID-3696EF1D-5E4C-5C6D-B02B-04E89A967099">
+<li id="GUID-153F35CC-9021-5300-8E4D-D5FD3CFD92B5"><p>Create an eclipsing
+package. The eclipsing package can be of type <codeph>SA</codeph> (full upgrade), <codeph>PU</codeph> (partial
+upgrade) or <codeph>SP</codeph> (patch upgrade). For details, see <xref href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita">Upgrade
+Types</xref>. </p> <p>The files in the eclipsing package must have same filename
+and path as the files in ROM that are eclipsed. However, the drive must be
+different. For example: </p> <codeblock id="GUID-783ACC24-81B8-5687-948B-65DFB8594BB4" xml:space="preserve">;Eclipsing package
+&amp;EN
+%{"Nokia Corporation"}
+:"Nokia Corporation"
+#{"Hello World"},(0x18000091),1,1,0, TYPE=PU
+"HelloWorld.exe"-"$:\sys\bin\HelloWorld.exe"
+"HelloWorld.rsc"-"$:\resource\apps\HelloWorld.rsc"
+"HelloWorld.mbm" - "$:\resource\apps\HelloWorld.mbm"
+"HelloWorld_reg.rsc" - "$:\private\10003a3f\import\apps\HelloWorld_reg.rsc"</codeblock> <p>The
+upgrading package must have same package UID as the stub SIS file, as this
+is always from the protected range. </p> <p>It is preferable to specify the
+target drive letter as <codeph>$:</codeph> to denote the system drive. This
+is because if the Symbian device user chooses to install the package to a
+removable drive, which can subsequently be removed, the files on <filepath>Z</filepath> drive
+can be used again. </p> <p> <b>Note</b>: The installer does not allow two
+different files to eclipse a file at the same time. For example, after eclipsing
+a ROM file by installing a newer version of the file to <filepath>C</filepath> drive,
+the installer does not allow you to eclipse the ROM file again by installing
+another version of the file to <filepath>D</filepath> drive. The installation
+fails. </p> <p> </p> </li>
+<li id="GUID-BC5FEC91-7735-5597-89B1-E34BB7065573"><p>Run the <xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">MakeSIS</xref> and <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref> tools to create
+and sign the eclipsing SIS file. Alternatively, you can use the <xref href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita">CreateSIS</xref> tool. </p> </li>
+</ol> </section>
+
+<section id="GUID-124E78DC-2C94-4901-A90B-20DDC2F3AD66"><title>Important Considerations</title><p>Consider
+the following tips to avoid common problems that can occur when eclipsing
+ROM files. </p> <ul>
+<li id="GUID-F3834539-10D0-518E-B004-EC512A4D73E7"><p>If you are eclipsing
+an application <filepath>EXE</filepath>, make sure that both the application
+and the eclipsing SIS file have put the application registration file (<filepath>*_reg.rsc</filepath>)
+in <filepath>\private\10003a3f\import\apps\</filepath> rather than <filepath>\private\10003a3f\apps\</filepath>.
+Else, the application framework picks up the application from <filepath>z</filepath> drive. </p> </li>
+<li id="GUID-EE1F1535-D347-5DF8-8C36-935A48F3CFD2"><p>The <filepath>DLLs</filepath> and <filepath>EXEs</filepath> have
+version numbers. You can set the version (which consists of a major and a
+minor number) in the <filepath>MMP</filepath> file using the <codeph>VERSION</codeph> keyword.
+The default version number is <codeph>10.0</codeph>. </p> <p>When eclipsing
+a DLL available in ROM, the upgrading version number must be higher than the
+one in ROM, otherwise, any EXEs in ROM (<filepath>Z</filepath> drive) that
+link to this DLL can use the version on <filepath>Z</filepath> drive. However,
+the new version must have the same major version number. </p> </li>
+<li id="GUID-3D03C487-6303-5C49-B780-2489ADB637A1"><p>The application that
+needs to be upgradable must not hard code any path to <filepath>Z</filepath> drive,
+otherwise files are picked up from <filepath>z</filepath> drive. </p> </li>
+<li id="GUID-8F3CACA0-5D68-505C-918F-8C0DADAB5577"><p>If you are upgrading
+ECOM plugins on <filepath>Z</filepath> drive, you must increment the interface
+implementation version number. </p> </li>
+<li id="GUID-79CA5A58-A167-58E5-9C0B-21EAD8335FAB"><p>Verify that the vendor
+names in the Stub SIS file match with the vendor names of the eclipsing SIS
+file. </p> </li>
+<li id="GUID-6530AAF8-AF5A-5D50-97D4-74117760816B"><p>In an XIP (execute in
+place) ROM, the linking of executables to <filepath>DLL</filepath> s is done
+at ROM build time. Therefore, to eclipse a <filepath>DLL</filepath> in an
+XIP ROM, the <filepath>EXE</filepath> that uses it also needs to be eclipsed. </p> </li>
+<li id="GUID-5213264C-0414-541F-B2B9-2DEC4AB85F91"><p>To eclipse language
+specific files, it is recommended to eclipse every language variant that is
+in the ROM. For example, if the application resource file has <filepath>.RSC</filepath> and <filepath>.R02</filepath> in
+ROM, the eclipsing SIS file must also include <filepath>.RSC</filepath> and <filepath>.R02</filepath>. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita"><linktext>PKG File
+Format</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3"><title>Stopping the Histogram</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces how to stop a histogram. </p> <section><title>Purpose</title> <p>This document describes the various APIs used to stop a Histogram. </p> <p><b>Introduction</b> </p> <p>Once a histogram is created, it has to be stopped and destroyed to release the buffer space. </p> </section> <section><title>Procedure</title> <p>The high level steps that can be used by a client to stop histogram are shown here: </p> <ul><li id="GUID-ACEC5D99-89FB-55FF-854B-97DF46CBB630"><p>Client sends <xref href="GUID-9385537A-2572-3B7C-831C-09A925BC9D54.dita"><apiname>StopHistogram()</apiname></xref> request to server to block histogram notifications from the server. </p> </li> <li id="GUID-2AE508C2-5673-5DE7-9861-DE58D6CC5941"><p>If more than one active histogram is present, deactivating one of them doesn’t stop other active histograms from getting the data. </p> </li> </ul> <p>To know the basic steps for creating Histogram object, refer to <xref href="GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita">Creating Histograms</xref>. </p> <p>The example code below illustrates how to stop a histogram: </p> <codeblock id="GUID-E19FB079-8E88-5981-B96A-F0F7183124CA" xml:space="preserve">histogram_CVF-&gt;StopHistogram();</codeblock> </section> </conbody><related-links><link href="GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9.dita"><linktext>Histograms</linktext> </link> <link href="GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita"><linktext>Creating Histograms</linktext> </link> <link href="GUID-7022455A-E738-574E-897E-33243482D69A.dita"><linktext>Working with Histograms</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539-master.png has changed
Binary file Symbian3/SDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e155184_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F8F830A-990C-5DDF-9D8F-28C89BFA755A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7F8F830A-990C-5DDF-9D8F-28C89BFA755A" xml:lang="en"><title>Profile
+Server Configuration Settings</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Configuration Settings of the Profile Server are a set of configurable
+parameters that affect the behaviour of the profile server. </p>
+<p>This topic describes the Key Schema for the Configuration Settings. </p>
+<section><title>Key Schema for Configuration Settings</title> <p>Profile Server
+settings are configured using a 32 bit Key in CenRep. </p> <p>The first 8
+bits of the Key define the table. The interpretation of the remaining 24 bits
+of the Key is specific to the table. </p> <p>The existing table is Profile
+Property Table(<xref href="GUID-83C00508-A66F-3EC5-A6F1-FF2A32843FBD.dita"><apiname>KSIPProfilePropertiesTable</apiname></xref>): </p> <p><b id="GUID-BE144F7F-BFB6-4DD2-A69A-FC6611E9E1A0">Key Schema for Profile Property
+Table</b> </p><p>For the Profile Property Table, the 24 bits constitute the
+Profile Type and Profile Property.</p><table id="GUID-12E130F4-2C56-4183-98F8-9334A1E7CCA0">
+<title/>
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top">8 bits</entry>
+<entry valign="top">8 bits </entry>
+<entry valign="top">16 bits </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>Profile Property Table   </entry>
+<entry> Profile Type</entry>
+<entry> Profile Property   </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Profile Types are defined as enum TSIPProfileClass in sipproifiletypeinfo.h
+.    </p><p> Profile Properties are defined as enum TProfileProperty in sipprofileagentextensionparams.h
+.</p><p>The enum values for Profile Type and Profile Property has to be incremented
+by 1 before the key is formed. This approach is adapted for better key intepretation
+since the enum values start from 0.</p> </section>
+<example><title> Example</title><p>The following example shows how to form
+a Key to set the default Registration duration for IETF profile in Profile
+Property Table.</p><p>The value defined for Profile Property Table asKSIPProfilePropertiesTable(0x01000000).</p><p>The
+value defined for Profile Type IETF in enum TSIPProfileClass is EInternet(0)
+.</p><p>The value defined for 'Profile Property' 'Registration' in enumTProfileProperty
+is EProfileRegistrationValue (0). </p><p>The resulting Key formed is: </p><ul>
+<li><table id="GUID-DA631731-9B50-4CEF-B0DF-4E1D7F477D0B">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top">Table </entry>
+<entry valign="top"> Profile Type</entry>
+<entry valign="top">Profile Property</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>0 0 0 0 0 0 0 1 </entry>
+<entry>0 0 0 0 0 0 0 1 </entry>
+<entry>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1  </entry>
+</row>
+</tbody>
+</tgroup>
+</table></li>
+<li><table id="GUID-EE9E72D4-FD17-4415-91B8-ADC7D6C3CCEE">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top">Table </entry>
+<entry valign="top"> Profile Type</entry>
+<entry valign="top">Profile Property </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>0 1 </entry>
+<entry>0 1 </entry>
+<entry>0 0 0 1 </entry>
+</row>
+</tbody>
+</tgroup>
+</table></li>
+</ul><p>   The values of "IETF" and "Registration Profile Property" are incremented
+by 1 before the key is formed.</p> </example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7F9F0EB3-8F0E-55BB-9864-C80FE6FC1528.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7F9F0EB3-8F0E-55BB-9864-C80FE6FC1528"><title>How to set default STRUCT values</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Default values can be specified for struct members by using an initialiser, for example</p> <codeblock id="GUID-D22D2267-CE82-5B81-970B-EA864ABCD0CA" xml:space="preserve">STRUCT NCEDIT
+ {
+ WORD current;
+ WORD low;
+ WORD high=65535;
+ }</codeblock> <p>With this specification, any <codeph>NCEDIT</codeph> resource will, by default, have a <codeph>high</codeph> member whose value is 65,535. If the <codeph>RESOURCE</codeph> statement specifies a different value, it will be used instead.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81"><title>prj_testextensions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>prj_testextensions</codeph>  </p> <p> <codeph>start extension</codeph> <varname>team/sub-system/ext-template</varname>  </p> <p>[<codeph>target</codeph>  <varname>target_file_name</varname>] </p> <p>[<codeph>sources</codeph>  <varname>source_file_1 ....
+        source_file_n</varname>] </p> <p>[<codeph>dependencies</codeph>  <varname>dependency_file_1 ...
+        dependency_file_n</varname>] </p> <p>[<codeph>tool</codeph>  <varname>toolname</varname>] </p> <p>[<codeph>option</codeph>  <varname>key_1</varname> <varname>value_1</varname>] </p> <p>... </p> <p>[<codeph>option</codeph>  <varname>key_n</varname> <varname>value_n</varname>] </p> <p> <codeph>end</codeph>  </p> <p> <b>Note:</b> The value argument in the option statement is optional. </p> <p>In the <codeph>prj_testextensions</codeph> section, list the project extensions for the test programs. The options for <codeph>start extension</codeph> block are the same as those for <codeph>prj_extensions</codeph>, except that <codeph>prj_testextensions</codeph> is for test programs. </p> <p>For more information about <codeph>start extension</codeph> options, refer to <xref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita">prj_extensions</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FA9E730-DBE6-52DD-87FE-B2D01EFAAE12.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-7FA9E730-DBE6-52DD-87FE-B2D01EFAAE12"><title>C++ API items</title><shortdesc>This topic lists the C++ API items that make the Serial Communications Server API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section/> <table id="GUID-44D50585-B24E-53A6-A2A7-FADB0AA6F484"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Item</entry> <entry>Header</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita"><apiname>RCommServ</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-94DF8C2E-B3B9-3882-8D1B-969119EFC72F.dita"><apiname>TCommRole</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-A6E4627A-A3AE-3B64-9E5C-710EE15C5595.dita"><apiname>TSerialInfo</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-4F3D4723-D359-3E30-8951-7C1B63FC4311.dita"><apiname>TPortDescription</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-D7BEC214-1421-314B-8D0C-6CA37F085ED3.dita"><apiname>TPortName</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-84A479A8-EA6F-3A91-8BD0-622375FED03A.dita"><apiname>TCommServerConfig</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-F529EC97-C168-30DF-B42C-AE9F8937A480.dita"><apiname>TCommServerConfigV01</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> <row><entry><p> <xref href="GUID-42C6D6C6-61AB-3E48-8E80-27A144C24FC8.dita"><apiname>TCommAccess</apiname></xref>  </p> </entry> <entry><p>C32COMM.H </p> </entry> </row> </tbody> </tgroup> </table> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FAE6FE0-D5CB-55D4-94B0-ADD545577CA7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-7FAE6FE0-D5CB-55D4-94B0-ADD545577CA7"><title> Creating and setting properties for a Sub-Connection: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial shows how an application can create Quality of Service properties and assign them to a sub-connection. </p> <p>Error handling is not included to aid clarity. </p> <codeblock id="GUID-F9A41E8A-D15B-5028-ABC4-DB400EF0DB19" xml:space="preserve">// Create the container for all sub connection parameters
+RSubConParameterBundle subconParams;
+CleanupClosePushL(subconParams);
+
+// Create a container for QoS sub connection parameters (Param bundle takes ownership)
+CSubConParameterFamily* qosFamily = CSubConParameterFamily::NewL(subconParams,
+    KSubConQoSFamily);
+
+// Create the requested generic parameter set for QoS (Qos family takes ownership)
+CSubConQosGenericParamSet* reqGenericParams = CSubConQosGenericParamSet::NewL(*qosFamily,                               
+    CSubConParameterFamily::ERequested);
+
+// Set the requested Generic Parameters
+reqGenericParams-&gt;SetDownlinkBandwidth(128);
+reqGenericParams-&gt;SetUplinkBandwidth(64);
+
+// Create the acceptable generic parameter set for QoS (Qos family takes ownership)
+CSubConQosGenericParamSet* accGenericParams = CSubConQosGenericParamSet::NewL(*qosFamily,                               
+    CSubConParameterFamily::EAcceptable);
+
+// Set the acceptable Generic Parameters
+accGenericParams-&gt;SetDownlinkBandwidth(48);
+accGenericParams-&gt;SetUplinkBandwidth(32);
+
+// Create a requested technology specific parameter set for QoS (Qos family takes ownership)
+CSubConQosR99ParamSet* reqRel99Params = CSubConQosR99ParamSet::NewL(*qosFamily,
+    CSubConParameterFamily::ERequested);
+
+// Set the requested Technology Specific Params
+reqRel99Params-&gt;SetMaxSDUSize(1024);
+
+// Create a acceptable technology specific parameter set for QoS (Qos family takes ownership)
+CSubConQosR99ParamSet* accRel99Params = CSubConQosR99ParamSet::NewL(*qosFamily,
+    CSubConParameterFamily::EAcceptable);
+
+// Set the acceptable Technology Specific Params
+accRel99Params-&gt;SetMaxSDUSize(512);
+
+// Now open the sub-connection as normal…
+………
+………
+// Create a new sub-connection
+subconn.Open(ss, RSubConnection::ECreateNew, conn);
+
+// Set Properties of the sub-connection
+subconn.SetParameters(subconParams);
+
+// Destroy parameters
+CleanupStack::PopAndDestroy();         // subconParams
+
+// Open a TCP socket on the sub-connection
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, subconn);
+
+_LIT(KRasAddr,"10.159.24.13");
+const TInt KEchoPort = 7;
+
+TInetAddr destAddr;
+destAddr.Input(KRasAddr);
+destAddr.SetPort(KEchoPort);
+
+// Connect the Socket to the destination over the sub-connection
+sock.Connect(destAddr, status);
+User::WaitForRequest(status);
+
+// Fetch the granted qos
+RSubConParameterBundle grantedParams;
+subconn.GetParameters(grantedParams);
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FB1B44E-B3FF-4765-88E3-A7FDB4FA8413.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7FB1B44E-B3FF-4765-88E3-A7FDB4FA8413" xml:lang="en"><title>Sensor
+Data Compensator</title><shortdesc>The Sensor Data Compensator provides APIs to correct sensor data
+based on device or display orientation</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FCDAC24-BFEF-590B-B569-04AA262EBF06.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7FCDAC24-BFEF-590B-B569-04AA262EBF06" xml:lang="en"><title>MTM Implementation Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes some key steps to write and implement an MTM. </p> <p>In this tutorial, the basic steps of implementing an MTM are explained using extracts from the <xref href="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita">Messaging Text MTM example code</xref>, which provides a working example MTM. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-7FCFB114-B186-5615-9134-08612BB675EE" xml:lang="en"><title>tcharexample:
+TChar example</title><shortdesc>This example application demonstrates how to use <apiname>TChar</apiname>, <apiname>TCharF</apiname>, <apiname>TCharLC</apiname> and <apiname>TCharUC</apiname> classes.</shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-5EC052E8-4E6E-4F84-8F20-46C70AA6B637"> </section>
+<section id="GUID-7ECA6815-84B4-5BA0-A73F-7E2DEBE2AFFF"><title>Purpose</title> <p> <codeph>TChar</codeph> represents
+a single character. It stores the character's value as a 32-bit unsigned integer
+and it provides various functions to manipulate the character and retrieve
+its properties. </p> <p>TChar and its derived classes can be used to represent
+Unicode values outside plane <b>0</b> (that is, Unicode values within the
+extended Unicode range from <codeph>0x10000</codeph> to <codeph>0xFFFFF</codeph>).
+This differentiates them from the related class <codeph>TText</codeph>, which
+can only be used for 16-bit Unicode character values. </p> </section>
+<section id="GUID-3615DBD7-5EEA-4548-A7A8-F183E3EF3977"><title>Class summary</title><ul>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita"><apiname>TChar</apiname></xref> - Holds a character value and provides a number
+of utility functions to manipulate it and test its properties.</p></li>
+<li><p><xref href="GUID-02D39887-4F76-3C42-B9B0-61E7AB8553C3.dita"><apiname>TCharF</apiname></xref> - Folds a specified character and provides
+functions to fold additional characters after construction of the object.</p></li>
+<li><p><xref href="GUID-08D4F858-475F-3391-B2BD-2F0DAE88298A.dita"><apiname>TCharLC</apiname></xref> - Converts a specified character to lower
+case and provides functions to convert additional characters after construction
+of the object.</p></li>
+<li><p><xref href="GUID-43BDE741-3C5B-388D-BF6B-851475FB9EAE.dita"><apiname>TCharUC</apiname></xref> - Converts a specified character to upper
+case and provides functions to convert additional characters after construction
+of the object.</p></li>
+</ul></section>
+<section id="GUID-A7AA11C2-9F69-4C1F-B078-789A34B78A37"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-53527143-a65f-4fee-857a-6045a2c53370.zip" scope="external">tcharexample.zip</xref>.</p><p>click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-53527143-a65f-4fee-857a-6045a2c53370.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-6F406325-07F5-59FC-845C-F248DF0DCB3A"><title>Design and
+implementation</title> <p><b>Using TChar </b> </p> <p>The example retrieves
+information about a character using: </p> <ul>
+<li id="GUID-FEED5E65-C2E9-5F95-95A5-8AE6AACC6FAC"><p>various <codeph>Is...()</codeph> functions,
+for instance its case (e.g. <xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-41EB7098-6282-3C9C-9C19-1DEA3C53E8F4"><apiname>TChar::IsLower()</apiname></xref>), whether
+it is alphabetic (<xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-E166314C-A8BE-32B7-A4E6-95987A5CDB76"><apiname>TChar::IsAlpha()</apiname></xref>), a decimal digit (<xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-1AFEF873-6968-34A5-A7DF-4E303B56FC3E"><apiname>TChar::IsDigit()</apiname></xref>),
+and whether it is printable (<xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-A3E01D65-C348-347A-8EBA-242C9B532B3A"><apiname>TChar::IsPrint()</apiname></xref>). </p> </li>
+<li id="GUID-82028A1F-A5BC-5337-9D7A-90A9BBE35291"><p>various <codeph>Get...()</codeph> functions,
+for instance its upper, lower and title case versions, e.g. (<xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-D51385D5-977F-313C-966D-8015400D476F"><apiname>TChar::GetUpperCase()</apiname></xref>),
+and the character width for Chinese, Japanese and Korean characters (<xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-8BD67CC9-6BCE-348B-B46A-AD2DF71CD4F5"><apiname>TChar::GetCjkWidth()</apiname></xref>). </p> </li>
+<li id="GUID-6AFA657D-3CA9-5129-A359-38A9F4D377CE"><p>the <xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-AF251970-9134-3F62-99E1-05A853286113"><apiname>TChar::TCharInfo</apiname></xref> struct.
+This struct holds most of the information about the character, including its
+Unicode category, and is populated by calling <xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-0290D155-32E2-3240-A8E4-F31CD117BF9A"><apiname>TChar::GetInfo()</apiname></xref>. </p> </li>
+</ul> <p><b>Using TCharF, TCharLC and TCharUC </b> </p><p>Related APIs</p><ul>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-8BD67CC9-6BCE-348B-B46A-AD2DF71CD4F5"><apiname>TChar::GetCjkWidth()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-0290D155-32E2-3240-A8E4-F31CD117BF9A"><apiname>TChar::GetInfo()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-D51385D5-977F-313C-966D-8015400D476F"><apiname>TChar::GetUpperCase()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-E166314C-A8BE-32B7-A4E6-95987A5CDB76"><apiname>TChar::IsAlpha()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-1AFEF873-6968-34A5-A7DF-4E303B56FC3E"><apiname>TChar::IsDigit()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-41EB7098-6282-3C9C-9C19-1DEA3C53E8F4"><apiname>TChar::IsLower()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-A3E01D65-C348-347A-8EBA-242C9B532B3A"><apiname>TChar::IsPrint()</apiname></xref></p></li>
+<li><p><xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita#GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D/GUID-AF251970-9134-3F62-99E1-05A853286113"><apiname>TChar::TCharInfo</apiname></xref> - A structure to hold information
+about a Unicode character.</p></li>
+</ul> <p> <xref href="GUID-02D39887-4F76-3C42-B9B0-61E7AB8553C3.dita"><apiname>TCharF</apiname></xref> represents a folded character. The example
+demonstrates how folding a character removes case and accent distinctions. </p> <p>The
+example also demonstrates converting characters between lower and upper case
+using <xref href="GUID-08D4F858-475F-3391-B2BD-2F0DAE88298A.dita"><apiname>TCharLC</apiname></xref> and <xref href="GUID-43BDE741-3C5B-388D-BF6B-851475FB9EAE.dita"><apiname>TCharUC</apiname></xref>. </p></section>
+<section id="GUID-5D7398C3-10AA-5A9F-A9EE-CE2C0E5D751F"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-FC094F4A-A486-5539-AFAB-8319BCF9A762"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p> <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-FE66EDF9-B29C-5847-828E-6399E633D131"><p>For the emulator, the
+example builds an executable called <filepath>tcharexample.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section id="GUID-98BBBB36-DC53-5EC1-B724-1857E9C27A6F"><title>Running the
+example</title> <p>The example application displays a list of options and
+sub options to the user and takes input from the user. </p> <fig id="GUID-DE40E9EB-B045-551C-84FF-C5C116462DC2">
+<title>              Screenshot for TChar example            </title>
+<image href="GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e231612_href.jpg" placement="inline"/>
+</fig> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FD05006-09C1-4EF4-A2EB-AD98C2FA8866.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7FD05006-09C1-4EF4-A2EB-AD98C2FA8866" xml:lang="en"><title>GLib
+Event Loop</title><shortdesc>The GLib event loop manages all the sources of an event available
+for GLib. These events can come from different kinds of sources like file
+descriptors (plain file descriptors, sockets, or pipes), time-outs, or any
+kind of source that can be added.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To allow multiple independent sets of events to be handled in different
+threads, each source is associated with a <codeph>GMainContext</codeph>.</p>
+<p>Each event source is given a priority. The default priority is <codeph>G_PRIORITY_DEFAULT</codeph> and
+its value is 0. Values less than 0 denote higher priority and values greater
+than zero denote lower priority. The events from higher priority sources are
+processed earlier than events from lower priority sources.</p>
+<p>The <codeph>GMainLoop</codeph> data type represents an event loop. <codeph>GMainContext</codeph> is
+a parameter to <codeph>GMainLoop</codeph>. If <codeph>GMainContext</codeph> is
+passed as NULL, then a main loop with the default context is created. After
+the sources are added to <codeph>GMainContext</codeph> and a <codeph>GMainLoop</codeph> variable
+is created, <codeph>g_main_loop_run()</codeph> is called. This checks continuously
+for events from its sources and dispatches them. Finally when all the events
+have been processed, <codeph>g_main_loop_quit()</codeph> must be called to
+return from <codeph>g_main_loop_run()</codeph>.</p>
+<note>Sources are associated with <codeph>GMainContext</codeph> and not with <codeph>GMainLoop</codeph>.
+Events from sources will be checked and dispatched from all the <codeph>GMainLoop</codeph> the <codeph>GMainContext</codeph> is
+associated with.</note>
+<section id="GUID-FE1BB596-6331-4AB8-BC5A-C8ADE24ACE7B">       <title>Creating
+an event loop</title>       <p>GLib provides ready-made functions for adding
+the following sources either to the default context or to a custom context:</p><ul>
+<li><p>time-outs</p></li>
+<li><p>I/O</p></li>
+<li><p>child watch</p></li>
+<li><p>idle source (events from idle sources are ready if none of the other
+sources with priority &gt; G_PRIORITY_DEFAULT are ready) </p></li>
+</ul><p>The following example code demonstrates the way to add a time-out
+source to the default context. The program makes 10 calls to <codeph>timeout_callback()</codeph>,
+which at the 10th call, calls <codeph>g_main_loop_quit</codeph> to make the
+main loop return.</p><codeblock xml:space="preserve">#include &lt;glib.h&gt;
+gboolean timeout_callback(gpointer data)
+{
+    static int i = 0;
+    
+    i++;
+    g_print("timeout_callback called %d times\n", i);
+    if (10 == i)
+    {
+        g_main_loop_quit( (GMainLoop*)data );
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+int main()
+{
+    GMainLoop *loop;
+
+    loop = g_main_loop_new ( NULL , FALSE );
+
+    // add source to default context
+    g_timeout_add (100 , timeout_callback , loop); 
+    g_main_loop_run (loop);
+    g_main_loop_unref(loop);
+
+    return 0;
+}
+</codeblock><p>The following code demonstrates the method to add the time-out
+source to a different context than the default context:</p><codeblock xml:space="preserve">#include &lt;glib.h&gt;
+gboolean timeout_callback(gpointer data)
+{
+    static int i = 0;
+    
+    i++;
+    g_print("timeout_callback called %d times\n",i);
+    
+    if(10 == i)
+    {
+        g_main_loop_quit((GMainLoop*)data);
+        return FALSE;
+    }
+	
+    return TRUE;
+}
+
+int main()
+{
+    GMainLoop *loop = NULL;
+    GMainContext *context;
+    GSource *source;
+    int id;
+		
+    //create a new time-out source
+    source = g_timeout_source_new(10);
+
+    //create a context
+    context = g_main_context_new();
+
+    //attach source to context
+    id = g_source_attach(source,context);
+ 
+    //create a main loop with context
+    loop = g_main_loop_new(context,FALSE);
+	
+    //set the callback for this source
+    g_source_set_callback (source,timeout_callback,loop,NULL);
+	
+    g_main_loop_run (loop);
+    
+    g_main_loop_unref (loop);
+     
+    return 0;
+}
+</codeblock><p>The same process can be used for other default sources like
+child watch, I/O, and idle source since they are GLib APIs that allow the
+creation of a source directly.</p>     </section>
+<section id="GUID-76BB5D34-F4C9-4015-8A52-2CDAB37716A0"><title>Creating a
+new source</title><p>The previous section applies only to four types of sources
+( time-outs, I/O, child watch, and idle source ), for which GLib provides
+ready-made functions. The program below demonstrates the creation of a new
+source.</p><codeblock xml:space="preserve">#include &lt;glib.h&gt;
+gboolean callback(gpointer data)
+{
+    static int i = 0;
+    i++;
+    g_print ("timeout_callback called %d times\n",i);
+    if (10 == i)
+    {
+        g_main_loop_quit((GMainLoop*)data);
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean prepare(GSource *source,gint *timeout_)
+{
+    *timeout_ = -1;
+    return TRUE;
+}
+
+gboolean check(GSource *source)
+{
+    return TRUE;
+}
+
+gboolean dispatch(GSource *source,GSourceFunc callback,gpointer user_data)
+{
+    if (callback(user_data))
+        return TRUE;
+    else
+        return FALSE;
+}
+
+int main()
+{
+    GMainLoop *loop = NULL;
+    GMainContext *context;
+    GSource *source;
+    int id;
+	
+    //create a variable of type GSourceFuncs
+    GSourceFuncs SourceFuncs =
+    {
+        prepare,
+        check,
+        dispatch,
+        NULL
+    };
+	
+    //create a new source
+    source = g_source_new (&amp;SourceFuncs, sizeof(GSource));
+	
+    //create a context
+    context = g_main_context_new ();
+	
+    //attach source to context
+    id = g_source_attach (source,context);
+	
+    //create a main loop with context
+    loop = g_main_loop_new (context,FALSE);
+ 
+    //set the callback for this source
+    g_source_set_callback (source,callback,loop,NULL);
+	
+    g_main_loop_run (loop);
+    g_main_loop_unref (loop);
+	
+    return 0;
+}
+</codeblock><p>The creation of a new source requires us to define at least
+3 functions:</p><ul>
+<li><p><b><codeph>prepare()</codeph></b>: Called before all the file descriptors
+are polled. If the source can determine that it is ready here (without waiting
+for the results of the poll() call), it should return TRUE. It can also return
+a time-out value which should be the maximum time-out (in milliseconds) which
+should be passed to the poll() call. The actual time-out used will be -1 if
+all sources returned -1, or it will be the minimum of all the timeout_values
+returned which were &gt;= 0</p></li>
+<li><p><b><codeph>check()</codeph></b>: Called after all the file descriptors
+are polled. The source should return TRUE if it is ready to be dispatched.</p><note>Time
+may have passed since the previous prepare function was called, so the source
+should be checked again.</note></li>
+<li><p><b><codeph>dispatch()</codeph></b> Called to dispatch the event source
+after it has returned TRUE in either its prepare or check function. The dispatch
+function is passed in a callback function and data. The callback function
+may be NULL if the source was never connected to a callback using <codeph>g_source_set_callback()</codeph>.
+The dispatch function should call the callback function with <codeph>user_data</codeph> and
+the additional parameters that are needed for this type of event source.</p></li>
+</ul></section>
+<section id="GUID-675507D7-A769-48DA-8EE6-2AA271C0EC86"><title>Customizing
+the main loop iteration</title><p>Single iteration of <codeph>GMainContext</codeph> can
+be run in <codeph>g_main_context_iteration ()</codeph>. When a more detailed
+control of how the main loop runs is desired call the component function of <codeph>g_main_context
+iteration()</codeph> directly.</p><p>The component functions of <codeph>g_main_context
+iteration()</codeph> are listed below:</p><ul>
+<li><p><codeph>g_main_context_prepare()</codeph></p></li>
+<li><p><codeph>g_main_context_query()</codeph></p></li>
+<li><p><codeph>g_main_context_check()</codeph> </p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF" xml:lang="en"><title> Upgrade
+Types</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The PKG file supporting upgrades must contain package-header section with
+definitions for different types of upgrades. For details see, <xref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita">Package-Header</xref>. </p>
+<p>The following table lists the different types of upgrades possible: </p>
+<table id="GUID-F082562E-66EA-58F7-A77A-ED512E9E7FA7">
+<tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/>
+<tbody>
+<row>
+<entry><p> <b>Type</b>  </p> </entry>
+<entry><p> <b>Package UID</b>  </p> </entry>
+<entry><p> <b>Package name</b>  </p> </entry>
+<entry><p> <b>Version</b>  </p> </entry>
+<entry><p> <b>Global vendor name</b>  </p> </entry>
+<entry><p> <b>Notes</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SA</codeph>  </p> </entry>
+<entry><p>Same </p> </entry>
+<entry><p>Same </p> </entry>
+<entry><p>Higher (not mandatory) </p> </entry>
+<entry><p>Same </p> </entry>
+<entry><p>Can overwrite (replace) files </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SP</codeph>  </p> </entry>
+<entry><p>Same </p> </entry>
+<entry><p>Different </p> </entry>
+<entry><p>Not required </p> </entry>
+<entry><p>Not required </p> </entry>
+<entry><p>Cannot overwrite (replace) files </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PU</codeph>  </p> </entry>
+<entry><p>Same </p> </entry>
+<entry><p>Need not match </p> </entry>
+<entry><p>Higher (not mandatory) </p> </entry>
+<entry><p>Not required </p> </entry>
+<entry><p>Can overwrite (replace) files </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section><title>SA - Full Upgrade</title> <p>The full upgrade is specified
+using the <codeph>SA</codeph> tag in the package-header. In full upgrade,
+the original package is entirely replaced by the new one. The original files
+that are not available in the new package are removed from the Symbian device.
+After upgrade, the new package cannot be removed separately from the original.
+To remove the upgrade, the entire package must be removed. </p> <p>If the
+upgrade causes an executable to be <i>removed</i>, the corresponding private
+directory is deleted. Any folders and files that are created by the application
+outside its private directory are not removed. The application must remove
+these files. </p> <p> <b>Important:</b> It is recommended that files created
+by an application be located in the private directory of the application. </p> <p>If
+the upgrade causes an executable to be <i>replaced</i>, the private directory
+is not removed. </p> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-E726EE1F-F977-5DDA-9AFD-E0AEEC789D6D"><p>An upgrading package
+of type <codeph>SA</codeph> cannot overwrite files installed by a patch. For
+upgrading such packages, the patch must be uninstalled first. </p> </li>
+<li id="GUID-18DB72B9-55EC-581C-B705-343720F62B34"><p>To be identified as
+an upgrade, the upgrading package file must have the same package UID as the
+original. If the package UID differs, it is considered to be an unrelated
+package and not an upgrade. </p> </li>
+<li id="GUID-76D8A7B8-3DD2-5D14-835A-031C2B1EE0C8"><p>If a patch upgrades
+an <codeph>SA</codeph> package, the patch is not uninstalled by new <codeph>SA</codeph> upgrade. </p> </li>
+<li id="GUID-EEEE413A-522E-52D2-9B8B-BA5933DD0000"><p>The <codeph>RR</codeph> and <codeph>RB</codeph> executables
+in the base package are run during the upgrade. See, <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita#GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324/GUID-B913501B-A5AB-5ADB-96FF-8060DD45A87E">run-options</xref> for details. </p> </li>
+</ul> </section>
+<section><title>SP - Patch Upgrade</title> <p>The patch upgrade is specified
+using the <codeph>SP</codeph> tag in the package-header. This is an augmentation
+to an existing package (<i>base package</i>). A typical example for this requirement
+is to provide additional levels of a game. A patch upgrade cannot overwrite
+files in RAM, however, it can eclipse files in ROM. A patch can be uninstalled
+separately from the base package. The installation fails if a patch modifies
+or replaces an existing file in the base package. </p> <p>A patch can only
+add files to a base package and cannot overwrite files. This is the only difference
+between patch upgrade and partial upgrade. </p> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-BDE060BA-2846-5E05-93BD-CEE9136651A7"><p>If two patches with
+same package name and UID are installed, the second patch is treated as an
+upgrade of the first patch. The second patch replaces the first patch entirely. </p> </li>
+<li id="GUID-92611923-8DEB-5E45-89D5-9712C1C26CD4"><p>An OS component does
+not need a Stub SIS file to be patched. However, if the requirement is to
+patch files in the private directory of the component, a stub SIS file is
+required which specifies the relevant executables (<filepath>.exe</filepath>). </p> <p> <b>Important</b>:
+If the patch installs files to more than one private directory, all relevant
+EXEs must be specified in the Stub file. </p> <p>If a Stub SIS file is required,
+the patch must have the same package UID and non-localized vendor name as
+the package it is upgrading. The package name must be different to distinguish
+the patch from the existing component. </p> </li>
+<li id="GUID-ED91317F-65E8-5E52-AFE4-5D5A94126AA1"><p>A patch can install
+files to the import directory of the component (<filepath>\private\</filepath> <i>&lt;SID&gt;</i> <filepath>\import\</filepath>)
+without the requirement of a Stub SIS file. However, the import directory
+must already exist. The software installer does not create it. </p> <p>The
+purpose of the import directory is to enable other packages to install files
+to it. </p> </li>
+</ul> </section>
+<section><title>PU - Partial Upgrade</title> <p>The partial upgrade is specified
+using the <codeph>PU</codeph> tag in the package-header. This upgrade is a
+variation of <codeph>SA</codeph> in that any files present in the base package
+that are missing in the new package are not removed. A partial upgrade can
+only add or overwrite files. This allows an upgrading SIS file to replace
+just the parts of a base package which requires replacement. </p> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-3EAFFA91-9929-5E94-825C-6CF648886A77"><p>When creating a <codeph>PU</codeph> package,
+the drive selection dialog must be suppressed, so that the upgrade is installed
+on the same drive as the existing package and not to the drive selected by
+the Symbian device user. </p> </li>
+<li id="GUID-349A16C1-3876-5B90-AD15-56027407EA08"><p>Unlike packages installed
+using the <codeph>SA</codeph> or <codeph>SP</codeph> options, a partial upgrade
+package is not listed as a removable component after installation, so the
+base package must be removed and reinstalled to remove the changes. </p> </li>
+<li id="GUID-3E6FDB35-55D5-5BD7-9E0E-C60F5D6B7476"><p>A partial upgrade cannot
+overwrite files installed by a patch. </p> </li>
+<li id="GUID-B335BF5B-B45C-558F-BDEE-09C2676AC133"><p>The <codeph>RR</codeph> and <codeph>RB</codeph> executables
+in the base package are run during the upgrade. See, <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita#GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324/GUID-B913501B-A5AB-5ADB-96FF-8060DD45A87E">run-options</xref> for details. </p> </li>
+<li id="GUID-CCCCE6F7-EA61-5617-A692-D57EB856C133"><p>It is not mandatory
+to specify the RU option for upgrading applications on the ROM. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita"><linktext>Package-Header</linktext>
+</link>
+<link href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita"><linktext>Upgrading
+OS Components</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7FF363B0-B05F-5490-8D9C-59061B905381" xml:lang="en"><title>How
+to build ROMs with variants</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A variant will define hundreds of features. Use <codeph>BUILDROM</codeph>,
+to build a ROM for a variant. BUILDROM is the unified Symbian platform ROM
+building tool. </p>
+<section><title>ROM building specifications </title><p>A variant configuration
+will be defined in <filepath>.var</filepath> file. Specify the VAR file name
+along with the <codeph>FEATUREVARIANT</codeph> keyword. </p><p>For example,
+if <filepath>myvar.var</filepath> is the VAR file name for variant <codeph>myvar</codeph>,
+then use: </p><codeblock id="GUID-7AA78362-82AD-5F0A-96B9-030B724A6554" xml:space="preserve">buildrom [options] –DFEATUREVARIANT=myvar &lt;obey1&gt; [&lt;obey2&gt; ...]</codeblock><note> For more information on BUILDROM, refer to <b>BUILDROM reference</b> documentation
+in <xref href="http://developer.symbian.org" scope="external">http://developer.symbian.org</xref>.</note></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-7FF63B82-B719-5E42-B007-94E2FB9548CB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-7FF63B82-B719-5E42-B007-94E2FB9548CB" xml:lang="en"><title>Memory
+Stores example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-909F271F-2546-5F1D-A948-FC7D8D6FC57B"><title>StreamInStore:
+stream creation in a non-persistent store</title> <p><b>Description</b> </p> <p>The
+example shows objects being externalized to a single stream in a non-persistent
+store. The store itself is an in-memory store represented by a <codeph>CBufStore</codeph> object. </p> <p><b>Download</b> </p> <p>Download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e35647dd-e2f0-458f-9dd2-3cb06b550221.zip" scope="external">StreamInStore.zip</xref> </p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e35647dd-e2f0-458f-9dd2-3cb06b550221.html" scope="peer">browse</xref>. View the additional file: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref></p> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+<li><p><xref href="GUID-5EC5199D-50F2-3BFA-BA45-4C5C017281DD.dita"><apiname>CBufStore</apiname></xref> - In-memory non-persistent store. The
+buffer store does not have a root stream and cannot be closed without losing
+all the data.</p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-803ABB5A-2E34-5F71-A5A9-0D475041185B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-803ABB5A-2E34-5F71-A5A9-0D475041185B" xml:lang="en"><title>Multimedia Validation Suite (MVS) User Guide</title><shortdesc>This section describes the Multimedia Validation Suite (MVS), and how to use it to test your newly developed audio and video controller and codec plug-ins: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541-master.png has changed
Binary file Symbian3/SDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e375697_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D"><title>Switching between ABI modes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform natively runs on ARM processors and to build a Symbian platform application, we need a compiler based on the Application Binary Interface (ABI) for ARM Architecture. There are two versions of the ARM ABI, referred to as v1 and v2 respectively. The Symbian platform build toolchain defines a set of native build targets (<codeph>ARMV5</codeph> and <codeph>ARMV6</codeph>) that invoke ARM's RealView Compiler Tools (RVCT) to build binaries conforming to these two ABI versions. For more information on differences between ABI v1 and v2 toolchains, refer to <xref href="GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita">ABIv1 to ABIv2 toolchain changes</xref>. </p> <p>From Symbian OS v9.4 onwards, the behaviour of these build targets (<codeph>ARMV5</codeph>, <codeph>ARMV5_ABIv2</codeph>, <codeph>ARMV6</codeph> and <codeph>ARMV6_ABIv2</codeph>) can be changed. The following lists the behaviour of these build targets prior to, for and after Symbian OS v9.4: </p> <ul><li id="GUID-847B3C77-A11D-5DAF-8D8D-BC1D0C5C6FBA"><p>For Symbian OS v9.3 and earlier versions, the build targets used to create binaries conforming to ABI v1 and ABI v2 are <codeph>ARMV5</codeph> and <codeph>ARMV5_ABIv2</codeph> respectively, and <codeph>ARMV6</codeph> and <codeph>ARMV6_ABIv2</codeph> respectively. By default, the <codeph>abld build</codeph> command will create binaries conforming to ARMV5 ABI v1. </p> </li> <li id="GUID-EDC5E30D-310C-5C5A-BBEC-CA843AD32969"><p>For Symbian OS v9.4 and later, the build targets used to create binaries conforming to ABI v2 and ABI v1 are <codeph>ARMV5</codeph> and <codeph>ARMV5_ABIv1</codeph> respectively, and <codeph>ARMV6</codeph> and <codeph>ARMV6_ABIv1</codeph> respectively. By default, the <codeph>abld build</codeph> command will create binaries conforming to ARMV5 ABI v2. </p> </li> </ul> <p>You can choose to switch between the above listed behaviours using the macro <codeph>ENABLE_ABIV2_MODE</codeph>. If you enable this macro, the behaviour of build targets <codeph>ARMV5</codeph> and <codeph>ARMV6</codeph> is changed to create binaries conforming to ABI v2 instead of ABI v1. If you want to create binaries conforming to ABI v1, use the build targets <codeph>ARMV5_ABIv1</codeph> and <codeph>ARMV6_ABIv1</codeph>. </p> <section><title> How to switch to ABI v2 mode</title> <p>To switch to ABI v2 mode from ABI v1 mode, edit the <filepath>variant.cfg</filepath> file located at <filepath>epoc32\tools\variant\</filepath> and add the macro <codeph>ENABLE_ABIV2_MODE</codeph>. </p> <p>After you add the macro to <filepath>variant.cfg</filepath> file, the following <codeph>abld</codeph> commands will create binaries conforming to ABI v2 under <filepath>epoc32\release\ARMV5\</filepath> or <filepath>epoc32\release\ARMV6\</filepath> folders: </p> <p><userinput>abld build</userinput> </p> <p><userinput>abld build ARMV5</userinput> </p> <p><userinput>abld build ARMV6</userinput> </p> <p>If you want to create binaries conforming to ABI v1 under <filepath>epoc32\release\ARMV5_ABIV1\</filepath> or <filepath>epoc32\release\ARMV6_ABIV1\</filepath> folders, use the following <codeph>abld</codeph> commands: </p> <p><userinput>abld build ARMV5_ABIV1</userinput> </p> <p><userinput>abld build ARMV6_ABIV1</userinput> </p> <p>A summary of the available build targets, their instruction set, compiler version, ABI version and their target location, after you switch to ABI v2 mode is as follows: </p> <table id="GUID-EBA0FCB5-7E80-5FF2-9A98-A5AC2ED09CB7"><tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><tbody><row><entry><p> <b>Target name</b>  </p> </entry> <entry><p> <b>Instruction set</b>  </p> </entry> <entry><p> <b>Compiler</b>  </p> </entry> <entry><p> <b>ABI</b>  </p> </entry> <entry><p> <b>Target location</b>  </p> </entry> </row> <row><entry><p> <codeph>ARMV5</codeph>  </p> </entry> <entry><p>v5 </p> </entry> <entry><p>RVCT 2.2 Build 616 </p> </entry> <entry><p>v2 </p> </entry> <entry><p> <filepath>epoc32\release\ARMV5\</filepath>  </p> </entry> </row> <row><entry><p> <codeph>ARMV5_ABIv1</codeph>  </p> </entry> <entry><p>v5 </p> </entry> <entry><p>RVCT 2.2 Build 616 </p> </entry> <entry><p>v1 </p> </entry> <entry><p> <filepath>epoc32\release\ARMV5_ABIV1\</filepath>  </p> </entry> </row> <row><entry><p> <codeph>ARMV6</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>RVCT 2.2 Build 616 </p> </entry> <entry><p>v2 </p> </entry> <entry><p> <filepath>epoc32\release\ARMV6\</filepath>  </p> </entry> </row> <row><entry><p> <codeph>ARMV6_ABIv1</codeph>  </p> </entry> <entry><p>v6 </p> </entry> <entry><p>RVCT 2.2 Build 616 </p> </entry> <entry><p>v1 </p> </entry> <entry><p> <filepath>epoc32\release\ARMV6_ABIV1\</filepath>  </p> </entry> </row> <row><entry><p> <codeph>GCCE</codeph>  </p> </entry> <entry><p>v5 </p> </entry> <entry><p>GCCE </p> </entry> <entry><p>v2 </p> </entry> <entry><p> <filepath>epoc32\release\gcce\</filepath>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>How to switch to ABI v1 mode</title> <p>To switch back to ABI v1 mode from ABI v2 mode, disable the <codeph>ENABLE_ABIV2_MODE</codeph> macro. You can disable the macro either by commenting it or removing it from the <filepath>variant.cfg</filepath> file. </p> <p>After you disable the <codeph>ENABLE_ABIV2_MODE</codeph> macro, the following <codeph>abld</codeph> commands will create binaries conforming to ABI v1 under <filepath>epoc32\release\ARMV5\</filepath> or <filepath>epoc32\release\ARMV6\</filepath> folders: </p> <p><userinput>abld build</userinput> </p> <p><userinput>abld build ARMV5</userinput> </p> <p><userinput>abld build ARMV6</userinput> </p> <p>If you want to build binaries conforming to ABI v2 under <filepath>epoc32\release\ARMV5_ABIV2\</filepath> or <filepath>epoc32\release\ARMV6_ABIV2\</filepath> folders, use the following <codeph>abld</codeph> commands: </p> <p><userinput>abld build ARMV5_ABIV2</userinput> </p> <p><userinput>abld build ARMV6_ABIV2</userinput> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-806298E8-3196-5A1B-A392-7D5A903C3F57.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-806298E8-3196-5A1B-A392-7D5A903C3F57" xml:lang="en"><title>Message Queue</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This sections explains the concepts related to message queue.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-807B5CEE-CC1E-5A40-911F-3C5D5FA3633A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-807B5CEE-CC1E-5A40-911F-3C5D5FA3633A" xml:lang="en"><title>How to
+use standard buffer operations</title><shortdesc>Explains the functions to read, write, insert, delete and compress
+data in buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Dynamic buffers have the expected standard buffer operations.</p>
+<section id="GUID-7AC34BEB-0BAB-462D-A170-B42446625805"><title>InsertL() example</title> <p>You can insert data into a buffer
+using <codeph>InsertL()</codeph>. In the following example code fragment,
+data is inserted into the buffer initially, and then some more data inserted
+into the middle of the first data.</p> <codeblock id="GUID-0237C066-1F66-5D54-BA06-5FBFC8C0F1F4" xml:space="preserve"> // insert text into buffer
+ _LIT8(KTxtHello,"Hello!");
+ _LIT8(KWorld," world");
+ ...
+ aBuf-&gt;InsertL(0,KTxtHello);
+ writeBuf(aBuf); // gives “Hello!”
+ aBuf-&gt;InsertL(5,KWorld);
+ writeBuf(aBuf); // gives “Hello world!”</codeblock> <p>In common with all
+functions that expand the size of the buffer, <codeph>InsertL()</codeph> may
+fail, by leaving. When you program with dynamic buffers, you must ensure that
+all potential leaves are handled correctly.</p> <p><codeph>InsertL()</codeph>,
+and the entire dynamic buffer API, deals only with 8-bit byte data. When interfacing
+with descriptors which contain text, you should take special precautions to
+ensure that UNICODE is handled correctly.</p> </section>
+<section id="GUID-9C234566-872B-44E0-BBB4-8892FB58E1DD"><title>Read() example</title> <p>Data can be read from a buffer by
+specifying a start position and a target descriptor. The number of bytes to
+be read may be specified explicitly, as here, or by the descriptor length.
+Another <codeph>Read()</codeph> variant, specifying the target as a <codeph>TAny*</codeph>,
+is provided.</p> <p>The following code fragment follows from the previous
+one:</p> <codeblock id="GUID-33E8D519-72DB-5BFA-8904-BC63B3F13820" xml:space="preserve"> // read from buffer into descriptor
+ TBuf8&lt;10&gt; des;
+ aBuf-&gt;Read(3,des,5); // puts "lo wo" into des.</codeblock> </section>
+<section id="GUID-DB7447A4-FA97-4727-B92D-E61556EA4AF5"><title>Write() example</title> <p><codeph>Write()</codeph> overwrites
+existing data in the buffer. Because the buffer is not expanded, <codeph>Write()</codeph> cannot
+leave. You must ensure that the region you select in the buffer already exists:
+if <codeph>Write()</codeph> attempts to write beyond the end of the data already
+in the buffer, a panic occurs.</p> <codeblock id="GUID-F5A86813-3C56-58B1-AAB0-E888E61BF736" xml:space="preserve"> // [over]write some stuff in buffer
+ _LIT8(KFolks,"folks");
+ aBuf-&gt;Write(6,KFolks);
+ writeBuf(aBuf); // gives “Hello folks!”</codeblock> </section>
+<section id="GUID-53F96FF4-38D1-4F4B-93DD-AA6B85FF8C99"><title>Delete() example</title> <p><codeph>Delete()</codeph> deletes
+data in the buffer. It can never fail.</p> <codeblock id="GUID-AA268BA8-CF54-5D93-A869-0EB291F5CE5A" xml:space="preserve"> // delete stuff
+ aBuf-&gt;Delete(5,6);
+ writeBuf(aBuf); // gives “Hello!”</codeblock> </section>
+<section id="GUID-D06541B3-1FA0-4511-91AA-8F8F33CBD273"><title>Compress() example</title> <p><codeph>Compress()</codeph> ensures
+that the buffer data occupies the minimum space. In the case of flat buffers,
+this re-allocates the cell to the size of the data in the buffer. In the case
+of segmented buffers, it may shuffle data so as to occupy the minimum number
+of segments.</p> <codeblock id="GUID-4F22F39C-756E-5665-AE58-816237D771C6" xml:space="preserve">// compress
+ aBuf-&gt;Compress();
+ writeBuf(aBuf);</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-809D428D-5BF6-57FF-952D-2FDF88E50833.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-809D428D-5BF6-57FF-952D-2FDF88E50833"><title>stdcpp</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>stdcpp</codeph>  </p> <p>This keyword must be included in the project specification file (<filepath>.mmp</filepath>) to build a Symbian target (<codeph>EXE</codeph>, <codeph>DLL</codeph>, <codeph>LIB</codeph>, and so on) using the standard C++ semantics for global <codeph>new</codeph> operator. To know how the global new operator is handled in standard C++ and Symbian C++, refer to <xref href="GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita"> Standard C++ Library</xref> in the <xref href="GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita">Generic Open Libraries (P.I.P.S.)</xref>. </p> <p>By default all Symbian targets use the Symbian C++ semantics for global <codeph>new</codeph> operator. </p> <p> <b>Note:</b> If an <filepath>.mmp</filepath> file includes both <codeph>stdcpp</codeph> and <codeph>nostdcpp</codeph> keywords, the build system will ignore the keywords and use the Symbian C++ semantics to build the target. </p> <section><title>See also</title> <p><xref href="GUID-D553D41C-D724-510A-A239-66CC158D6984.dita">nostdcpp</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09"><title>Video Subtitle CRP Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Video Subtitle CRP component. </p> <section><title>Purpose</title> <p>The Video Subtitle CRP component is used for displaying subtitles artwork on a video window. </p> </section> <section id="GUID-845818F1-02CA-59FE-85F8-22623880759D"><title>Architectural relationship</title> <p>Video Subtitle CRP interacts with WServ Process; and Client Process interacts with Controller Process by a client thread and controller thread respectively. </p> <p>CRP is a plug-in framework provided by Window Server (WServ). WServ is the server side process which allows the artwork providers to render content to the application window within the WServ process. </p> <p>Client Process is the client side implementation of subtitle support using <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> class. </p> <p>Control Process contains Video Player Controller and Subtitle Decoder and Render to process the subtitle artwork on a video window. </p> <p>For information about Video Client API see <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> and for Multimedia Framework see <xref href="GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB.dita">Multimedia Framework Overview</xref>  </p> <p>The architectural relationship between WServ Process, Client Process and Controller Process is shown below: </p> <fig id="GUID-550B6EDC-B969-562B-BB98-313E0DC0242A"><image href="GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e300923_href.png" placement="inline"/></fig> </section> <section><title>Library summary</title> <p>The Video Subtitle CRP component consists of the following libraries: </p> <table id="GUID-28FB9055-5B69-5EFD-9479-0E93A86CE3CD"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Library</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-37F816DA-767F-30D1-B66E-177F7C40716B.dita"><apiname>subtitlegraphic.dll</apiname></xref>  </p> </entry> <entry><p>The Subtitle Graphic library is used to add subtitle CRP for MMF. For more information, see <xref href="GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita">Subtitle Graphic Overview</xref>. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The Video Subtitle CRP Component is used to add subtitle for a video. </p> </section> </conbody><related-links><link href="GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita"><linktext>Subtitle Graphic Overview</linktext> </link> <link href="GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita"><linktext>Video Subtitle CRP Support From
+                MMF</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D"><title>Onboard Camera Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Onboard Ecam API. </p> <section><title>Purpose</title> <p>The Onboard Camera provides functionality to control a digital camera and to request and receive specific image data from it. Still or video images may be captured. A camera may be controlled with its output media going into a non-Symbian platform sink (for example, into hardware), or it may be controlled with output going into the Symbian platform. </p> <p>The API defines basic common operations, but is also extensible to allow for proprietary properties. </p> <p><b>Onboard Ecam API Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-5DF138D2-3ADC-5BCD-ADCD-D04240B33DC9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-37F3C935-D1DB-3993-B3E0-A56991462D77.dita"><apiname>ecam.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-B4E2E996-CFBE-3156-B02D-D0F2F634B3C7.dita"><apiname>ecam.lib</apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Onboard Camera functions. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The Onboard Camera provides images to clients. A client may be an application with image requirements, or the Multimedia Framework. Clients have specific priorities and may pre-empt others in their interactions with the camera. </p> <p>Licensees and partners implement the camera functionality for the camera hardware on their phone. All cameras are ECom plug-ins sub-classed from the <xref href="GUID-A738B809-754B-3090-9209-0880687F173C.dita"><apiname>CCameraPlugin</apiname></xref> class. </p> <p>When a new camera object is required, the ECam library requests a camera plug-in from the ECom framework. When more than one ROM based plug-ins have been registered on the platform, the one with the highest version defined in its resource file is selected. </p> </section> <section><title>Description</title> <p>Client Applications can use the onboard camera function for a number of tasks, including: </p> <p>Controlling camera power, using the view finder, making basic camera image settings, capturing a still image, capturing video, making advanced settings, getting snapshots, getting image histograms, using image overlays, using preset camera settings, image processing on the camera. </p> </section> <section id="GUID-1AC509C3-E1D9-5DB4-9C09-90E0DCE576CB"><title>Key Onboard Ecam API Classes</title> <p>The key classes that make up the Onboard Camera are as follows: </p> <ul><li id="GUID-7D8751E9-C2B3-50DA-9B1C-6AC29FF592FA"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref>  </p> <p>It provides the base class for camera devices. This is the interface that the client application uses to communicate with the camera. It provides all the functions necessary to control, and acquire images from, the camera. </p> </li> <li id="GUID-F8732ED8-D86C-591C-93FF-89BF4386FCE9"><p> <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2</apiname></xref>  </p> <p>It is an observer class which permits access to picture data as descriptors, bitmaps or chunks. It defines an event-handling interface that is called when events are generated from use of the camera functions, or from external sources such as the camera being plugged or unplugged. </p> <p> <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita"><apiname>MCameraObserver</apiname></xref> is an earlier version of this callback interface. </p> </li> <li id="GUID-DB8CCF2A-54DA-565E-8CD4-DEE608AAB1CA"><p> <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita"><apiname>TCameraInfo</apiname></xref>  </p> <p>It provides information about the camera. This includes: the version number and name of camera hardware, camera orientation, whether the camera supports still image capture and so on. </p> </li> <li id="GUID-4A214B79-32AD-5BBC-AD34-084A9C960F50"><p> <xref href="GUID-7F66BE6C-9998-3F16-AD55-F6FDF6CB351F.dita"><apiname>MCameraBuffer</apiname></xref>  </p> <p>It is the buffer class used by <codeph>MCameraObserver2</codeph> to pass back view finder data, images and video frames. It enables the client to choose in which way it accesses the picture data (descriptor, bitmap or kernel chunk). </p> </li> <li id="GUID-C76A2F13-FC4F-5ABA-A818-B6031F4FB116"><p> <xref href="GUID-2773C25B-19DF-38B0-84F7-CABC89F43DD2.dita"><apiname>TECAMEvent</apiname></xref>  </p> <p>It is a simple event class containing a UID to identify the event and a status code. It is passed to <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita"><apiname>MCameraObserver2</apiname></xref> as functional argument using <xref href="GUID-08E0AF71-E21B-30FC-88AA-E822A40F61F5.dita"><apiname>HandleEvent</apiname></xref> method, when a request is completed. The request is complete, if a control of the camera switches, camera hardware settings changes, or due to external events such as the camera being plugged in. </p> <p>Use a derived version of <codeph>TECAMEvent</codeph> and <codeph>TECAMEvent2</codeph> to pass additional information required by extended API to the API client along with the error event code. </p> </li> <li id="GUID-F1E7A83E-6382-51FC-8E19-9F66CB1844CD"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E31AEB11-B7A0-3637-BB31-866306F78118"><apiname>CCamera::CCameraAdvancedSettings</apiname></xref>  </p> <p>It provides domain specific get and set methods for well known camera hardware settings that relate directly to the image acquisition phase for both still images and video. </p> </li> <li id="GUID-A8284E63-1463-547D-9FB1-F2C9AA9FBA01"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-6750F61A-455B-371E-893B-090350DCB704"><apiname>CCamera::CCameraPresets</apiname></xref>  </p> <p>It associates a single command with setting of several camera parameters to specific values (and ranges). The class allows clients without knowledge of the camera specifics to achieve comparable results for different cameras. </p> </li> <li id="GUID-135AC315-B294-5587-B71C-379D0CBF4547"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-BD60287B-40A3-39D5-9C7B-7ABF976659B6"><apiname>CCamera::CCameraImageProcessing </apiname></xref>  </p> <p>It is used to perform image processing operations on still images, video, viewfinder (both client and direct). These include brightness, contrast, gamma, hue, sharpness and saturation adjustments on the camera. The client is also able to perform simple image transformations like cropping, rotation, mirroring, scaling, noise reduction and glare reduction. </p> </li> <li id="GUID-15E61113-8CE9-527B-A52C-B3A180B9960D"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9"><apiname> CCamera::CCameraOverlay</apiname></xref>  </p> <p>It allows the client to overlay an image onto the view finder, snapshots, still images, and video. </p> </li> <li id="GUID-B8569488-6C25-5304-9A9E-8AAC964BCB06"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4E270B4A-074C-3531-9789-123C8AE899F0"><apiname>CCamera::CCameraHistogram</apiname></xref> allows the client to get histogram data (<xref href="GUID-5064D139-1B97-394C-8C7D-417F72444F75.dita"><apiname>MHistogramBuffer</apiname></xref>) in a specified format for an image, such as a luminance-based, or average colour value histogram. </p> <p>This class is deprecated, so use<xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-E159F066-0157-34B4-B154-38D120EAB16C"><apiname>CCamera::CCameraV2Histogram</apiname></xref> class. </p> </li> <li id="GUID-7DAA023E-D0A5-598D-B97F-9C706A8D44DD"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7DB06650-199E-3B00-A19A-1B48D671E46E"><apiname> CCamera::CCameraSnapshot</apiname></xref>  </p> <p>It allows the client to request snapshot data in a specified image format for both still images and video. Snapshot object can be created specifically for still images and video APIs. </p> </li> <li id="GUID-B25BB7CA-8FDC-5344-BCDB-9C2018248B67"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-144A45FA-EADE-3036-B013-821F65142C82"><apiname>CCamera::CCameraDirectViewFinder</apiname></xref> used for those viewfinders that use only viewfinder APIs of Ccamera. It provides support for Direct View Finder functionalities, such as pause and resume. see also <xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita">Viewfinder API Overview</xref>. </p> </li> <li id="GUID-F2BE13B7-5ADB-5E16-B2D3-CFB88A72068F"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4618B02E-CD2E-3DEA-979F-4C55AE3D45EC"><apiname> CCamera::CCameraClientViewFinder</apiname></xref>  </p> <p>It provides support for multiple client View Finder. </p> </li> <li id="GUID-44C02BC0-02AE-5EDA-82FC-1F1DE23210B3"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7B13335C-10A9-38D2-AE12-A50ECCF7EA58"><apiname> CCamera::CCameraPreImageCaptureControl</apiname></xref>  </p> <p>It allows to control image operations or its settings prior to image capture. </p> </li> <li id="GUID-65E481B6-DEEC-57DD-98EC-A7D8433D5DEF"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4"><apiname>CCamera::CCameraImageCapture</apiname></xref>  </p> <p>It captures the image and controls the overall capture. </p> </li> <li id="GUID-9A6713D4-C284-545E-BD40-9269DBD2C573"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-C607DA37-D386-3291-A9C5-AD0E302607D3"><apiname> CCamera::CCameraPostImageCaptureControl</apiname></xref>  </p> <p>It retrieves the image data from individual images and also controls the captured images individually. </p> </li> <li id="GUID-FBBF3E1B-D511-5AFB-8AE5-E996AD7CC4FC"><p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460"><apiname>CCamera::CCameraVideoCaptureControl</apiname></xref>  </p> <p>It controls the operations related to video capture. </p> </li> </ul> <p>The class diagram of CCamera is shown below: </p> <fig id="GUID-E2F73C42-38F9-5EE1-B5EB-C255B42E0621"><image href="GUID-C1A6477D-2130-5664-A845-898212F96381_d0e268269_href.png" placement="inline"/></fig> </section> <section><title>Using Onboard Ecam API</title> <p>The clients can use CCamera function to control and acquire image data from the camera. </p> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Camera Framework Overview</xref>  </p> <p><xref href="GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629.dita">Camera Tutorial</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017" xml:lang="en"><title>Handle-numbers</title><shortdesc>This document describes the use of handle-numbers to identify handles.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A handle is a way in which a thread or process can identify an object that
+is owned or managed by another thread or process. Such objects are Kernel
+side objects.</p>
+<p>A handle uses a number, the handle-number, to identify the associated Kernel
+side object. The handle, an instance of a <codeph>RHandleBase</codeph> derived
+class, encapsulates the handle-number.</p>
+<p>The objects referred to by handles are always instances of <codeph>CObject</codeph> derived
+classes, i.e. they are reference counting objects. The handle-number is created
+when the object is created (or opened, if the object already exists) and added
+to an object index.</p>
+<p>Typically, calling <codeph>Open()</codeph> or <codeph>Create()</codeph> or
+a similarly named function on an <codeph>RHandleBase</codeph>  <i>derived</i> class
+causes the associated object to be created or opened and added to an object
+index, owned either by the thread or the process. Adding the object to the
+object index creates a handle-number and this is returned to, and encapsulated
+by, the handle.</p>
+<p>For example, <codeph>RMutex</codeph> is the handle for a mutex; all user
+side interaction with a specific mutex is directed through an instance of <codeph>RMutex</codeph>.
+The <codeph>RMutex</codeph> object exists on the user side; the corresponding
+mutex (a DMutex object) exists on the Kernel side.</p>
+<fig id="GUID-86253ED0-C374-52C5-BF3E-463D09A3ECD3">
+<image href="GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e205603_href.png" placement="inline"/>
+</fig>
+<p>Here, code running on the user side constructs an <codeph>RMutex</codeph> and
+calls its <codeph>Create()</codeph> member function. This causes the Kernel
+to:</p>
+<ul>
+<li id="GUID-69E652C5-BC3E-5C2C-95DE-8F0BC5DF6C13"><p>construct the corresponding
+Kernel object, a <codeph>DMutex</codeph> </p> </li>
+<li id="GUID-CA86B942-A4CA-5E9E-BA36-2E581C01C646"><p>add the <codeph>DMutex</codeph> to
+the current thread's object index (a <codeph>CObjectIx</codeph>)</p> </li>
+<li id="GUID-6BD33635-074D-59CB-BB7E-1AF6F0290481"><p>return the handle-number
+to the RMutex.</p> </li>
+</ul>
+<codeblock id="GUID-96432516-6FC7-584C-843D-17D0E07956CB" xml:space="preserve">...
+RMutex m;
+m.Create();
+...</codeblock>
+<p>See also:</p>
+<ul>
+<li id="GUID-B218DFCC-054D-53ED-9C36-9947C1BC2895"><p><xref href="GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita">The
+object index</xref> </p> <p><xref href="GUID-8C4EB8E0-78F0-553D-91AE-EC070A47B0EE.dita">The
+handle-number and the object index</xref> </p> <p><xref href="GUID-A52E8853-9A8A-5B66-A2B0-F943B32AA5C6.dita">Reference
+counting objects</xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-80F2DEC8-152F-4681-A9D0-8EB776131313.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-80F2DEC8-152F-4681-A9D0-8EB776131313" xml:lang="en"><title>String
+Conversions</title><shortdesc>In case the developer is developing applications where P.I.P.S.-based
+functionality is called from a Symbian/S60 application, the need for conversions
+between Symbian descriptors and different string types provided by P.I.P.S.
+is needed. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-6-1-10-1-1-5-1-3-1-7-1-10-1-3-1">       <title>Symbian
+descriptors and C strings compared</title>       <p>The main difference between
+Symbian descriptors and C strings is that the Symbian descriptors know how
+many characters are in a data array. A C string does not know its length,
+so when length is needed the NULL character that indicates the end of the
+string has to be scanned.  </p><p>Another difference arises with buffers.
+When C code reserves a buffer from the heap or stack, it has to keep the maximum
+length somewhere. Many C methods that alter the buffer contents do not respect
+the maximum size of the buffer and can override the reserved memory, causing
+unknown behavior. Some methods take the maximum length as a parameter but
+it is difficult to use those types in functions, since a pointer to an array
+and maximum length have to be passed separately. Buffer descriptors can tell
+the maximum length, and all the methods they provide respect the buffer limits.
+ </p><p>When using neutral descriptor types there is no need to worry about
+character widths. In a C program, the programmer has to explicitly specify
+which method to use, for example <codeph>strcat</codeph> or <codeph>wcscat</codeph>.</p><p>The
+table below contains a comparison of standard C string functions and Symbian
+counter parts:</p><table id="GUID-0580FD76-A651-4F23-81FF-4460DAF1992E">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<tbody>
+<row>
+<entry><p><b>C function</b></p></entry>
+<entry><p><b>Symbian</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+<row>
+<entry><codeph>sprintf, swprintf</codeph></entry>
+<entry><codeph>TDes::Format</codeph></entry>
+<entry><p>Write formatted data to a string.</p></entry>
+</row>
+<row>
+<entry><codeph>strcat, wcscat, strncat, wcsncat </codeph></entry>
+<entry><codeph>TDes::Append</codeph></entry>
+<entry><p>Append a string to another. </p></entry>
+</row>
+<row>
+<entry><codeph>strcmp, strncmp, wcsncmp </codeph></entry>
+<entry><codeph>TDesC::Compare</codeph></entry>
+<entry><p>Compare strings lexicographically. </p></entry>
+</row>
+<row>
+<entry><codeph>strcpy, wcscpy strncpy, wcsncpy </codeph></entry>
+<entry><codeph>TDes::Copy </codeph></entry>
+<entry><p>Copy a string to another. </p></entry>
+</row>
+<row>
+<entry><codeph>strchr, wcschr</codeph></entry>
+<entry><codeph>TDesC::Locate </codeph></entry>
+<entry><p>Find a character in a string. </p></entry>
+</row>
+<row>
+<entry><codeph>strrchr, wcsrchr</codeph></entry>
+<entry><codeph>TDesC:: LocateReverse </codeph></entry>
+<entry><p>Scan the index of the first character from a string that does not
+exist in the alphabet array. </p></entry>
+</row>
+<row>
+<entry><codeph>strspn, wcsspn</codeph></entry>
+<entry><p>None </p></entry>
+<entry><p>Scan index of the first character from string that doesn't exist
+in alphabet array. </p></entry>
+</row>
+<row>
+<entry><codeph>strcspn, wcscspn</codeph></entry>
+<entry><p>None </p></entry>
+<entry><p>Scan the index of the first occurrence of a character in a string
+that belongs to the set of characters. </p></entry>
+</row>
+<row>
+<entry><codeph>strstr, wcsstr</codeph></entry>
+<entry><codeph>TDesC::Find </codeph></entry>
+<entry><p>Find a substring. </p></entry>
+</row>
+<row>
+<entry><codeph>strtok, wcstok</codeph></entry>
+<entry><codeph>TLex::</codeph></entry>
+<entry><p>Find the next token in a string. </p></entry>
+</row>
+<row>
+<entry><codeph>strlen, wcslen</codeph></entry>
+<entry><codeph>TDesC::Length</codeph></entry>
+<entry><p>Get the length of a string. </p></entry>
+</row>
+<row>
+<entry><codeph>strcoll, wcscoll</codeph></entry>
+<entry><codeph>TDesC::CompareC </codeph></entry>
+<entry><p>Compare strings using locale-specific information. </p></entry>
+</row>
+<row>
+<entry><codeph>strftime, wcsftime</codeph></entry>
+<entry><p>Using <codeph>TDes::Format</codeph> and <codeph>TTime </codeph></p></entry>
+<entry><p>Format a time string. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>     </section>
+<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-6-1-10-1-1-5-1-3-1-7-1-10-1-3-2">       <title>How
+to convert <codeph>TBuf16</codeph> to a <codeph>char</codeph> buffer</title> 
+     <p>A <codeph>TBuf16</codeph> buffer can be converted to a <codeph>char</codeph> buffer
+using the <codeph>wcstombs</codeph> API. The example below illustrates how
+the conversion can be done.</p><codeblock xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;wchar.h&gt;
+
+#define SIZE 20
+_LIT(KData,"hello");
+  
+int main (void)
+{
+    TBuf16&lt;SIZE&gt; buf(KData);
+    size_t ret;
+    char carray[SIZE];
+   
+    ret = wcstombs(carray, (const wchar_t *)buf.PtrZ(), SIZE );
+    printf("TBuf converted to char buffer : %s\n",carray);
+    getchar();
+    return (1);
+}
+</codeblock>     </section>
+<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-6-1-10-1-1-5-1-3-1-7-1-10-1-3-3">       <title>How
+to convert <codeph>TBuf8</codeph> to <codeph>wchar_t</codeph></title>    
+  <p>A <codeph>TBuf8</codeph> buffer can be converted to <codeph>wchar_t</codeph> using
+the <codeph>mbstowcs</codeph> API.</p><codeblock xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;wchar.h&gt;
+
+#define SIZE 20
+ 
+ int main (void)
+ {
+     TBuf8&lt;SIZE&gt; buf(_L8("hello"));
+     size_t ret;
+     wchar_t warray[SIZE];
+  
+     ret = mbstowcs(warray, (const char *)buf.PtrZ(), SIZE );
+     printf("TBuf8 converted to wchar buffer : %ls\n",warray);
+     getchar();
+     
+     return (1);
+ }
+</codeblock>     </section>
+<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-6-1-10-1-1-5-1-3-1-7-1-10-1-3-4">       <title>How
+to convert <codeph>TText16</codeph> to <codeph>char</codeph></title>     
+ <p>The <codeph>wcstombs</codeph> API can be used to convert a <codeph>TText16</codeph> buffer
+to a <codeph>char</codeph> buffer. This is one of the examples of converting
+from a Symbian data type to a C data type.</p><codeblock xml:space="preserve">#include &lt;e32def.h&gt;
+#include &lt;sys/types.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;wchar.h&gt;
+
+#define SIZE 32
+
+int main (void)
+{
+   TText arr[SIZE] = L"abcdef";
+   char carray[SIZE];
+   size_t ret;
+
+   ret = wcstombs(carray, (const wchar_t *)arr, SIZE);
+   printf("TText converted to char buffer : %s",carray);
+   getchar();
+
+   return (1);
+}
+</codeblock>     </section>
+<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-6-1-10-1-1-5-1-3-1-7-1-10-1-3-5">       <title>How
+to convert a <codeph>char</codeph> array and a <codeph>wide char</codeph> array</title> 
+     <p>To use both <codeph>char</codeph> and <codeph>wide char</codeph> pointers
+or array in the program, the user must convert buffers from a <codeph>char</codeph> to
+a <codeph>wide char</codeph> and vice versa. Wide character APIs provide methods
+to: </p><ul>
+<li><p>convert a <codeph>char</codeph> array to a <codeph>wide char</codeph> array</p></li>
+<li><p>convert a <codeph>wide char</codeph> array to a <codeph>char</codeph> array </p></li>
+</ul><p><b>Converting a <codeph>char</codeph> array to a <codeph>wide char</codeph> array</b></p><p>The <codeph>mbstowcs</codeph> API
+can be used to convert a <codeph>char</codeph> array to a <codeph>wide char</codeph> array.</p><codeblock xml:space="preserve">#include &lt;stdlib.h&gt;
+#include &lt;wchar.h&gt;
+
+#define ARRAY_SIZE 32
+
+int main(void)
+{
+   char *carray = "char array";
+   wchar_t warray[ARRAY_SIZE];
+   size_t ret;
+
+   ret = mbstowcs(warray, (const char *)carray, ARRAY_SIZE);
+   wprintf(L"character array contents : %s\n",carray);
+   wprintf(L"wide char array contents : %ls\n",warray);
+   getwchar();
+
+   return (1);
+}
+</codeblock><p><b>Converting a <codeph>wide char</codeph> array to a <codeph>char</codeph> array </b></p><p>The <codeph>wcstombs</codeph> API
+can be used to convert a <codeph>wide char</codeph> array to a <codeph>char</codeph> array. </p><codeblock xml:space="preserve">#include &lt;stdlib.h&gt;
+#include &lt;wchar.h&gt;
+
+#define ARRAY_SIZE 32
+
+int main(void)
+{
+   wchar_t *warray = L"wide array";
+   char carray[ARRAY_SIZE];
+   size_t ret;
+
+   ret = wcstombs(carray, (const wchar_t *)warray, ARRAY_SIZE);
+   wprintf(L"wide char array contents : %ls\n",warray);
+   wprintf(L"character array contents : %s\n",carray);
+   getwchar();
+
+   return (1);
+}
+</codeblock>     </section>
+<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-6-1-10-1-1-5-1-3-1-7-1-10-1-3-6">       <title>How
+to declare a <codeph>wide-char</codeph> string</title>       <p>To declare
+a <codeph>wide-char</codeph> string, prefix the string with 'L'
+[Capital L].  </p><codeblock xml:space="preserve">#include &lt;wchar.h&gt;
+
+int main(void)
+{
+     wchar_t *wptr = L"This is a wide char string";
+  
+     wprintf(L"%ls\n",wptr);
+     getwchar(); 
+}
+</codeblock>     </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-80F83F9C-2B58-5238-AE38-1193BAE72CB0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-80F83F9C-2B58-5238-AE38-1193BAE72CB0"><title>How to use styles</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Paragraph styles are encapsulated by the <xref href="GUID-76C10266-F6E3-354F-B26C-C0207710D603.dita"><apiname>RParagraphStyleInfo</apiname></xref>, <xref href="GUID-37304E7C-A6B0-3766-B4C3-0A40EEF40018.dita"><apiname>CParagraphStyle</apiname></xref> and <xref href="GUID-BC8CFDE5-403A-3D78-AEFB-3E78775ED90A.dita"><apiname>CStyleList</apiname></xref> classes. These three classes should be used as follows:</p> <ul><li id="GUID-C7F5A392-96DD-5A0B-92F0-76CAC951997B"><p>All styles are based on the global paragraph and character format layers. A <codeph>CParagraphStyle</codeph> object should be constructed specifying these normal layers.</p> </li> <li id="GUID-A627B292-0011-5317-811B-D39B2D3B9810"><p>To set the paragraph format of a <codeph>CParagraphStyle</codeph> object, use the <codeph>SetL()</codeph> function that it inherits from its base class <xref href="GUID-C5A6B3D4-1BDE-35B4-AC6B-DF517A4D4147.dita"><apiname>CParaFormatLayer</apiname></xref>.</p> </li> <li id="GUID-A6F45D0B-4087-5C5B-BA8A-F3C17A4617E1"><p>To set the character format of a <codeph>CParagraphStyle</codeph> object, use the <xref href="GUID-37304E7C-A6B0-3766-B4C3-0A40EEF40018.dita#GUID-37304E7C-A6B0-3766-B4C3-0A40EEF40018/GUID-E47452D3-9ED7-32FA-9488-7226984F628F"><apiname>CParagraphStyle::CharFormatLayer()</apiname></xref> function, which returns a non-null pointer to the <codeph>CCharFormatLayer</codeph> object, and then call its <codeph>SetL</codeph> function.</p> </li> <li id="GUID-F03318C1-A195-5011-896D-F1FD2E531C5D"><p>Paragraph styles inherit attributes from the normal style. Attributes explicitly set in the <codeph>CParagraphStyle</codeph> object override the attributes from the normal style.</p> </li> <li id="GUID-5B75407B-E9D4-5226-BFDE-677A2C4131FA"><p>Append all user defined styles to a <codeph>CStyleList</codeph>.</p> </li> <li id="GUID-371EB753-60AA-596C-B806-064669DF6468"><p>To do this, construct an <codeph>RParagraphStyleInfo</codeph> object, specifying the <codeph>CParagraphStyle</codeph> to be appended, and optionally, a style for the following paragraph. Any number of <codeph>RParagraphStyleInfo</codeph> s can be appended to the style list.</p> </li> <li id="GUID-FB12142A-F7A8-5AEB-8ACA-2038C2DA4F5B"><p>Pass the style list to the constructor of a <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object. </p> <p>In this case, the rich text object owns the style list. If the rich text object is not passed an instance of a <codeph>CStyleList</codeph> upon construction, it may still use styles, by calling <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita#GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934/GUID-C25FC00C-E229-3557-9A1A-9F0AA6A8E6B3"><apiname>CRichText::SetStyleListExternallyOwned()</apiname></xref>. However, in this case, the style list is not owned by the rich text object. It will not be deleted when that rich text object is deleted, and must be stored and restored separately from the rich text object.</p> </li> </ul> <p>Styles may be specified as usually applying to one paragraph only. For example, after a user has just typed in a heading in a word processor, they will expect the style of the following paragraph to be normal text, not another heading. This 'following style' can be set either in the constructor of <xref href="GUID-76C10266-F6E3-354F-B26C-C0207710D603.dita"><apiname>RParagraphStyleInfo</apiname></xref> or set using <xref href="GUID-BC8CFDE5-403A-3D78-AEFB-3E78775ED90A.dita#GUID-BC8CFDE5-403A-3D78-AEFB-3E78775ED90A/GUID-C2991AD8-DD5C-3C4C-B483-59089A22BD54"><apiname>CStyleList::SetStyleToFollow()</apiname></xref> after it has been appended to the style list.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-810043A5-62FF-55D3-A908-973FFB72DA4A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-810043A5-62FF-55D3-A908-973FFB72DA4A"><title>Serial Port CSY</title><prolog><metadata><keywords/></metadata></prolog><refbody><section><p>This topic describes the default settings for the Serial Port CSY. </p> <p>The Serial Port CSY is a Serial Protocol module for the <xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial Communications Server</xref> and implements the RS232 protocol. </p> </section> <section id="GUID-676B57B8-001C-5CCE-A9CD-BFE015A7EEC1"><title>ECUART Default Settings</title> </section> <section><p>This topic lists the default configuration when a standard ARM serial port is opened with ECUART.CSY. </p> <ul><li id="GUID-4902F08D-4BA9-5EDA-88A6-1F66297A00F5"><p>Any infra-red capability is disabled. </p> </li> <li id="GUID-46EA41C2-2F29-52F2-89C6-8A54074E9A61"><p>The speed is set to 9600 bps. </p> </li> <li id="GUID-5436FA8E-08C7-563D-8A29-024509239769"><p>The data format is 8 bits, no parity, 1 stop bit. </p> </li> <li id="GUID-2B471BDB-B530-5554-B9CE-F2257861EEEA"><p>If parity were enabled, errors would cause pending read and writes to fail. </p> </li> <li id="GUID-7AE8CF90-0C77-5F93-9B59-F02D750ECA4C"><p> <keyword>CTS</keyword> output flow control is the only handshaking mode enabled. </p> </li> <li id="GUID-C36E7920-CCF8-594D-A45A-4243FF83962A"><p> <keyword>DTR</keyword> and <keyword>RTS</keyword> are both held high. </p> </li> <li id="GUID-092470C4-F536-5E45-AB95-C94B0F58CC38"><p>The <keyword>XON</keyword> and <keyword>XOFF</keyword> characters default to 0x11 (17 decimal) and 0x13 (19 decimal) respectively. </p> </li> <li id="GUID-22D5C5EB-F913-5ECF-BD69-C67CC8CD3A56"><p> <keyword>FIFO</keyword> s are enabled. </p> </li> <li id="GUID-F999530D-BE0D-5FAD-ADD0-3B83B3BECB43"><p>Input and output buffers are both set to 1024 bytes. </p> </li> <li id="GUID-5A791F75-AEE3-5011-856C-4B39F7031E90"><p>There are no terminating characters. </p> </li> </ul> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47" xml:lang="en"><title>Enabling
+File Server Tracing</title><shortdesc>This document describes how to enable trace points in the file
+server client API (EFSRV.DLL), the file system API (*.FSY) , and/or the proxy
+drive API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Enabling a trace point results in
+trace data being output to the trace buffer. </p> <p>Tracing can be enabled
+or disabled (i.e. compiled in or out) at build time. By default file server
+tracing is enabled in debug builds of EFSRV.DLL and EFILE.EXE and disabled
+in release builds. To enable tracing in release builds, there are two options: </p> <ul>
+<li id="GUID-CE4CBA1C-D699-568D-B97D-98CD01E7ADAC"><p>replace the release
+builds of <filepath>EFSRV.DLL</filepath> /<filepath>EFILE.EXE</filepath> with
+their debug equivalents. </p> </li>
+<li id="GUID-76F59D55-BE9A-54E2-9A77-068F292334B0"><p>rebuild <filepath>EFSRV.DLL</filepath> /<filepath>EFILE.EXE</filepath> using <filepath>efsrv_instrumented.mmp</filepath> /<filepath>efile_instrumented.mmp</filepath>. </p> </li>
+</ul> <p>Tracing can also be enabled or disabled at run time or at device
+startup. For more details, see <xref href="GUID-D5984540-A411-52ED-B435-94C67F34ADD5.dita">How
+to enable tracing</xref>. </p> <p>The level of tracing required may be configured
+by selecting one or more of the primary filters and one or more of the secondary
+filters from the list below: </p> <codeblock id="GUID-DDA48DE7-651D-54D4-A3EA-81C053D5F4BC" xml:space="preserve">//Primary filters
+EPanic = 192            // to trace panics
+EError = 193            // to trace errors
+EBorder = 195,            // to trace API calls</codeblock> <codeblock id="GUID-3253FF5A-ABAC-5A2D-9CE9-D420B855FB88" xml:space="preserve">//Secondary filters
+EF32TraceUidEfsrv         =     0x100039e4 //    (268450276 in decimal)
+EF32TraceUidFileSys        =    0x10286575 //    (271082869 in decimal)
+EF32TraceUidProxyDrive    =    0x10286576 //    (271082870 in decimal)</codeblock><p>For
+more details on capturing the trace data see <xref href="GUID-71884BEF-0A49-5F56-BE26-EFFD77FA846A.dita">how to output traces</xref>. 
+</p> </section>
+
+<section><title>APIs </title> <p>The following table lists the classes to
+which the trace points have been added. It has been divided into three broad
+categories as shown below. </p> <ul>
+<li id="GUID-930F772C-DC22-5D44-92D5-1EED6CDC02A9"><p> <b>File system</b>  </p> <ul>
+<li id="GUID-938ED57F-0365-56BA-BD78-854CAE8BC344"><p> <xref href="GUID-0012B043-9FC4-3953-928E-CB6107E0486A.dita"><apiname>CFileSystem</apiname></xref>  </p> </li>
+<li id="GUID-5A54ADD0-2F79-54A2-8725-EE738F51FC5F"><p> <xref href="GUID-FADDE053-CC1C-39BC-A52D-27093041BE20.dita"><apiname>CMountCB</apiname></xref>  </p> </li>
+<li id="GUID-87CD0966-EE3B-5517-B69D-024B308EB4B1"><p> <xref href="GUID-63DF657C-434D-353D-A536-8AF9D97C8260.dita"><apiname>CFileCB</apiname></xref>  </p> </li>
+<li id="GUID-08DCCC4C-2A4B-560C-96C2-55C949086F4B"><p> <xref href="GUID-B19ADEA9-5018-3773-92BC-C16306D15043.dita"><apiname>CDirCB</apiname></xref>  </p> </li>
+<li id="GUID-901B069A-A234-5238-94C0-B88723DA0698"><p> <xref href="GUID-E0C22CEA-845F-37A2-85DE-0ACD7927FA41.dita"><apiname>CFormatCB</apiname></xref>  </p> </li>
+</ul> </li>
+<li id="GUID-54DAF9C2-385A-5C5D-B808-DD42BD96D2B2"><p> <b>Proxy drive</b>  </p> <ul>
+<li id="GUID-D082BF1C-A7F1-597D-BE7E-19FDAFE25368"><p> <xref href="GUID-F47F56E4-3754-365B-B529-53C1D2A29503.dita"><apiname>CLocalProxyDrive</apiname></xref>  </p> </li>
+<li id="GUID-7115117E-68B1-5CCB-BEAE-668CF45DE9AD"><p> <xref href="GUID-FAFF712B-2295-3907-B839-D77F052160DA.dita"><apiname>CBaseExtProxyDrive</apiname></xref>  </p> </li>
+</ul> </li>
+<li id="GUID-ABC75EC4-EBBE-5F85-AA09-A1E77B121FBC"><p> <b>File server</b>  </p> <ul>
+<li id="GUID-54E6118B-454D-50B6-8BA1-6C5A74E6A70C"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>  </p> </li>
+<li id="GUID-E9839BE3-3F7B-54BE-A52A-ECEBC4CE7691"><p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref>  </p> </li>
+<li id="GUID-5D365808-C2C1-5CC3-9E69-1423C47CBCE5"><p> <xref href="GUID-12AE154F-7741-38C0-ADFE-9784FCF5E516.dita"><apiname>RDir</apiname></xref>  </p> </li>
+<li id="GUID-D4F74F2A-F919-5AB9-89EA-1C45420E4391"><p> <xref href="GUID-9D7E765B-6872-3EB9-9D5B-1503FA466EC1.dita"><apiname>RFormat</apiname></xref>  </p> </li>
+<li id="GUID-39021B3E-2F79-51A7-8158-4D08B94CCF4D"><p> <xref href="GUID-118CCC9E-C58B-3AA0-86A8-219914E7E7BC.dita"><apiname>RPlugin</apiname></xref>  </p> </li>
+<li id="GUID-264C14C5-69D3-5662-9BFD-15B7FCB22F00"><p> <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref>  </p> </li>
+<li id="GUID-817F4158-5F9F-5D21-9FA1-42D5EC6F774F"><p> <xref href="GUID-C657AF2D-1183-3CD2-ACAF-3B0B00FC91BB.dita"><apiname>CDirScan</apiname></xref>  </p> </li>
+</ul> </li>
+</ul> <p>Trace points have been added to the public exported functions of
+the classes listed above. As an example, the code fragment below illustrates
+how the tracepoints have been added and what type of information is output
+for the Open function of the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> class: </p> <codeblock id="GUID-44DCCB86-9835-5A03-A17C-A78F43A58FD6" xml:space="preserve">
+EFSRV_EXPORT_C TInt RFile::Open(RFs&amp; aFs,const TDesC&amp; aName,TUint aMode)
+{
+TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileOpen, MODULEUID, aFs.Handle(), aMode, aName);
+
+aMode &amp;= ~EFileBigFile;
+TInt r = CreateSubSession(aFs,EFsFileOpen,TIpcArgs(&amp;aName,aMode));
+
+TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileOpenReturn, MODULEUID, r, SubSessionHandle());
+
+return r;
+}</codeblock> <p>A sample trace output is as shown: </p> <codeblock id="GUID-A7782683-9A99-5B9B-AD52-81CC236CB7D1" xml:space="preserve">RFile::Open() sess 0x00008000 mode 0x00000100 FileName Z:\SYS\DATA\ESTARTFILESYSTEMS.TXT</codeblock> </section>
+<section><title>Interpretation of the trace data</title> <p>Symbian does not
+currently provide a tool for decoding file server trace data (though hopefully
+this will change in the near future). The data can, however, be interpreted
+by examining the following two publicly exported header files which provides
+detail of what fields are output by each tracepoint. </p> <ul>
+<li id="GUID-3032957A-5D64-57AD-98FD-DF82D6959C10"><p> <filepath>\epoc32\include\utraceefsrv.h </filepath>  </p> </li>
+<li id="GUID-8C8C91AD-757A-5A79-861B-2686178FB154"><p> <filepath>\epoc32\include\utraceefile.h</filepath>  </p> </li>
+</ul> <p>For example: </p> <codeblock id="GUID-2B0DD8BA-5AC5-5369-8410-4A21B987D926" xml:space="preserve">
+/** @SYMTraceFormatString "RFile::Replace() sess %x mode %x FileName %*S" */
+EFileReplace</codeblock> <p>In the above example the trace record will contain
+the session <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> handle, the file open mode and the filename. </p> </section>
+</conbody><related-links>
+<link href="GUID-A3E77067-7982-5803-A274-0C8F2562B483.dita"><linktext>Unified Trace
+solution</linktext></link>
+<link href="GUID-7B477BA5-CC5B-56A2-82BC-E1BC0049FECB.dita"><linktext>Kernel Trace
+Tool Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-81253CA0-2B57-5A3E-9ACD-469D4B922047.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-81253CA0-2B57-5A3E-9ACD-469D4B922047"><title>Handling request body data</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>HTTP methods POST and PUT both require a request body to be specified by the client before a transaction is submitted. Also required in the request is a Content-Type header, to inform the HTTP server of the body data's media (MIME) type. </p> <p>If the body or Content-Type header are absent, an error will be returned as an event. See <xref href="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita#GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D/GUID-8DB0C8B3-4ED6-59D6-A796-F4EA2DE5DC5B">Validation filter</xref> for details of errors that can be sent. </p> <section id="GUID-3FD76282-A3E5-4613-A852-CDF7A0E9879A"><title>Specifying a request data supplier</title> <p>The following code fragment from <filepath>HTTPEXAMPLECLIENT</filepath> demonstrates a request body being set: </p> <codeblock id="GUID-51D78C10-21D9-5DEC-A84D-AADCD7A675CA" xml:space="preserve">void CHttpClient::InvokeHttpMethodL(const TDesC8&amp; aUri, RStringF aMethod)
+{
+...
+iTrans = iSess.OpenTransactionL(uri, *iTransObs, aMethod);
+RHTTPHeaders hdr = iTrans.Request().GetHeaderCollection();
+...
+// Add headers and body data for methods that use request bodies
+    if (iHasARequestBody)
+        {
+        // Content type header
+        TBuf8&lt;KMaxContentTypeSize&gt; contTypeBuf;
+        contTypeBuf.Copy(iReqBodyContentType);
+        RStringF contTypeStr = iSess.StringPool().OpenFStringL(contTypeBuf);
+        CleanupClosePushL(contTypeStr);
+    THTTPHdrVal contType(contTypeStr);
+        hdr.SetFieldL(iSess.StringPool().StringF(HTTP::EContentType,RHTTPSession::GetTable()), contType);
+
+        MHTTPDataSupplier* dataSupplier = this;
+        if (iManualPost)
+            dataSupplier = iFormEncoder;
+        iTrans.Request().SetBody(*dataSupplier);
+        CleanupStack::PopAndDestroy(&amp;contTypeStr);
+        }
+
+    // submit the transaction
+    iTrans.SubmitL();</codeblock> <p>The example uses two alternative alterative implementations of <xref href="GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5.dita"><apiname>MHTTPDataSupplier</apiname></xref>: the first method, not described here, is the <xref href="GUID-604D8C43-93F7-3835-8810-BD1CC891D086.dita"><apiname>CHTTPFormEncoder</apiname></xref> class, a utility that encodes a series of field name-value pairs into the URI-encoded form, as used by Web/WAP browsers to send data the user has entered into text boxes. </p> <p>The second method sets the request body data supplier to be the <codeph>CHttpClient</codeph> object itself. From the header file <filepath>httpexampleclient.h</filepath>: </p> <codeblock id="GUID-1FB82DEB-6400-55C9-9E71-D54C3F4F41F6" xml:space="preserve">class CHttpClient : public CBase, public MHTTPDataSupplier, ...
+    {
+    ...
+public: // methods inherited from MHTTPDataSupplier
+    virtual TBool GetNextDataPart(TPtrC8&amp; aDataPart);
+    virtual void ReleaseData();
+    virtual TInt OverallDataSize();
+    ...
+    };</codeblock> <p>The client must implement the three pure-virtual methods of <codeph>MHTTPDataSupplier</codeph> to allow HTTP to obtain the body data it needs as it assembles an HTTP request. </p> <ul><li id="GUID-C1213E1D-56EA-5E08-984B-E418BDC025D8"><p> <codeph>GetNextDataPart()</codeph>: when this method is invoked, the client must set the <codeph>aDataChunk</codeph> parameter to point at an 8-bit data buffer that is populated with the next piece of body data to be transmitted. If this buffer holds the last part of the request body, the method must return <codeph>ETrue</codeph>. </p> </li> <li id="GUID-536C0C3B-4E24-5F14-A4B7-6E10A38D78BC"><p> <codeph>ReleaseData()</codeph>: when this method is invoked, the client can free the data buffer it last returned from <codeph>GetDataChunk()</codeph>, and can start to assemble the next buffer for transmission. </p> </li> <li id="GUID-D88FC36E-99A2-5740-837A-9A46DB19E90B"><p> <codeph>OverallDataSize()</codeph>: when this method is invoked, the client should return the size of the whole request body data, if it is known. If unknown, it should return <codeph>KErrNotFound</codeph>. </p> </li> </ul> <p>There is no need for the client to set a 'Content-Length' header. The API does this automatically, based on what it gets from calling <codeph>OverallDataSize()</codeph>. </p> </section> <section id="GUID-195A967A-410F-480F-8E4E-37109F5E6A31"><title>Signalling new body data</title> <p>After <codeph>ReleaseData()</codeph> has been invoked, the client must prepare the next buffer of data for transmission. Since the API cannot predict when each buffer will be ready, it will pause the request transmission until an event is sent by the client to notify the availability of new data. This is done using the <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-908A430D-9CCC-350D-B6EB-06E6EB94B0DD"><apiname>RHTTPTransaction::NotifyNewRequestBodyPartL()</apiname></xref> method. </p> <codeblock id="GUID-E97E6DBB-C8E9-5EE5-8703-680FCE2CEE0F" xml:space="preserve">void CHttpClient::ReleaseData()
+    {
+    // Clear out the submit buffer
+    TPtr8 buff = iReqBodySubmitBuffer-&gt;Des();
+    buff.Zero();
+    // Notify HTTP of more data available immediately, since it's being read from file
+    TRAPD(err, iTrans.NotifyNewRequestBodyPartL());
+    if (err != KErrNone)
+        User::Panic(KHttpExampleClientPanic, KCouldntNotifyBodyDataPart);
+    }</codeblock> <p>When <codeph>THTTPEvent::ENotifyNewRequestBodyPart</codeph> is processed by the API, it resumes transmission of body data and calls the client's <codeph>GetNextDataPart()</codeph> method again. </p> </section> <section id="GUID-29C4B920-D6E4-467D-9AA0-2F59B266F86F"><title>Streaming body data</title> <p>If a client application is using HTTP POST to stream data to a server, then it is unlikely to know at the start of the transaction how much data is to be sent. </p> <p>As described previously, the client's <codeph>OverallDataSize()</codeph> method should return <codeph>KErrNotFound</codeph> to indicate this. The result is that the API will automatically switch over to use the 'chunked' transfer encoding. The API automatically generates the 'Transfer-Encoding: chunked' header and will not send a Content-Length header. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-81424A53-F598-4E25-BA0A-E2FFA8BCDF2B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-81424A53-F598-4E25-BA0A-E2FFA8BCDF2B" xml:lang="en"><title>Controlling
+toolbar visibility</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Floating toolbar</title><p>You can define in your application
+view whether the floating toolbar is shown on view activation. By default,
+the floating toolbar is hidden. </p><p>You can also show or hide the toolbar
+by changing the toolbar visibility straight from the toolbar itself. In this
+case, however, remember that closing the application or deactivating the view
+resets the toolbar visibility state. So after e.g. view deactivation, the
+toolbar is set visible according to the default setting (defined by the view).</p></section>
+<section> <title>Fixed toolbar</title><p>The UI framework always sets the
+fixed toolbar visible when an application or view is activated. You can change
+the toolbar visibility straight from the toolbar itself, like in the case
+of a floating toolbar. However, when hiding the toolbar with the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknToolbar.html#f48c9775e05e7a6130a7c3c0d2a91199" format="application/java-archive"><codeph>CAknToolbar::SetToolbarVisibility()</codeph></xref> method, you should
+note that with that method the toolbar window is completely hidden and some
+other control should draw to its area to keep the area updated. If this is
+not applicable, you can use another method: <codeph>HideItemsAndDrawOnlyBackground()</codeph>.
+This will hide the toolbar but draw its background in the toolbar area. </p></section>
+<section><p>The example below shows how to hide or show the toolbar. You can
+also use <codeph>SetToolbarVisibility()</codeph> with the fixed toolbar if
+you don't need to draw the toolbar background. </p><codeblock xml:space="preserve">void CMyAppView::ChangeToolbarVisibility( TBool aHide )
+    {
+    
+    CAknToolbar* toolbar = Toolbar();
+    
+    if ( !toolbar )
+        {
+        return;
+        }
+
+    // Fixed toolbar        
+    if ( toolbar-&gt;ToolbarFlags() &amp; KAknToolbarFixed )
+        {
+        if ( aHide )
+            {
+            // Hide toolbar but draw background
+            toolbar-&gt;HideItemsAndDrawOnlyBackground( ETrue );
+            }
+        else
+            {
+            // Return situation to normal (toolbar as visible)
+            toolbar-&gt;HideItemsAndDrawOnlyBackground( EFalse );
+            }
+        }
+        
+    // Floating toolbar
+    else
+        {
+        if ( aHide )
+            {
+            // Hide floating toolbar
+            toolbar-&gt;SetToolbarVisibility( EFalse );
+            }
+        else
+            {
+            // Show floating toolbar
+            toolbar-&gt;SetToolbarVisibility( ETrue );
+            }
+        
+        }
+    }
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-817C43E8-9169-4750-818B-B431D138D71A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-817C43E8-9169-4750-818B-B431D138D71A" xml:lang="en"><title>Using <codeph>GIOChannel</codeph></title><shortdesc>GIOChannel provides a portable method for using file descriptors,
+sockets and pipes and integrating them into the GLib main loop.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>g_io_channel_unix_new()</codeph> API takes a file descriptor
+as an input parameter and is used to create a new <codeph>GIOChannel</codeph>.
+Alternatively, the <codeph>g_io_channel_new_file()</codeph> API can be used
+to create a channel for a file. Once the channel is created, it can be used
+in a generic manner.</p>
+<p>To read a channel, APIs such as the following can be used: </p>
+<ul>
+<li><p><codeph>g_io_channel_read_chars()</codeph></p></li>
+<li><p><codeph>g_io_channel_read_line()</codeph></p></li>
+<li><p><codeph>g_io_channel_read_to_end()</codeph></p></li>
+</ul>
+<p>To write to a channel an API like <codeph>g_io_channel_write_chars()</codeph> is
+used.</p>
+<p>To set the position in the current <codeph>GIOChannel</codeph>, <codeph>g_io_channel_seek_position()</codeph> can
+be used.</p>
+<p>Finally the channel can be closed using <codeph>g_io_channel_shutdown()</codeph>.</p>
+<p>The following is an example code where a file descriptor to a plain file
+is used to create a <codeph>GIOChannel</codeph>, and then the contents of
+the file are read in chunks of 100 bytes and printed using <codeph>g_print</codeph>.
+Finally the channel is closed. </p>
+<codeblock xml:space="preserve">#include &lt;glib.h&gt;
+#include &lt;stdio.h&gt;
+
+int main(int argc, char *argv[])
+{
+	GIOChannel *channel;
+	gchar buf[100];
+	gsize bytes_read;
+	FILE *fp;
+	
+	if(argc != 2)
+	{
+		g_print("usage:cat &lt;file_name&gt;\n");
+		g_print("Press any key to exit\n");
+		getchar();
+		return 1;
+	}
+	
+	fp = fopen(argv[1],"r");
+	
+	if(!fp)
+	{
+		g_print("Unable to open the file %s\n",argv[1]);
+		return 1;
+	}
+		
+	channel = g_io_channel_unix_new(fileno(fp));
+	
+ 	do
+ 	{
+		g_io_channel_read_chars(channel,buf,100,&amp;bytes_read,NULL);
+		g_print("%s",buf);
+		
+	}
+	while(bytes_read &gt; 0);
+	
+	g_io_channel_shutdown(channel,TRUE,NULL);
+	
+	fclose(fp);
+ 
+	return 0;
+}
+ </codeblock>
+<p>In the example below, a sample code to copy a file is written. In the code,
+channels are opened using <codeph>g_io_channel_new_file()</codeph>. The contents
+of the file are read using <codeph>g_io_channel_read_chars()</codeph>, and
+the contents are written to a new file using <codeph>g_io_channel_write_chars()</codeph>.</p>
+<codeblock xml:space="preserve">#include &lt;glib.h&gt;
+#include &lt;stdio.h&gt;
+
+int main(int argc, char *argv[])
+{
+	GIOChannel *in_channel,*out_channel;
+	gchar buf[100];
+	gsize bytes_read,bytes_written;
+	GError *error = NULL;
+	
+	if(argc != 3)
+	{
+		g_print("usage:&lt;cp SOURCE&gt; &lt;DESTINATION&gt;\n");
+		g_print("Press any key to exit\n");
+		getchar();
+		return 1;
+	}
+		
+	in_channel = g_io_channel_new_file(argv[1],"r",&amp;error);
+	
+	if(!in_channel)
+	{
+		g_print("Unable to open the file %s to read\n",argv[1]);
+		g_print("Press any key to exit\n");
+		getchar();
+		return 1;
+	}
+	
+	out_channel = g_io_channel_new_file(argv[2],"w",&amp;error);
+	
+	if(!out_channel)
+	{
+		g_print("Unable to open the file %s to write\n",argv[2]);
+		g_print("Press any key to exit\n");
+		getchar();
+		return 1;
+	}
+	
+	do
+	{
+		g_io_channel_read_chars(in_channel,buf,100,&amp;bytes_read,&amp;error);
+		if(error)
+		{
+			g_print("Error while reading file %s\n",argv[1]);
+			g_print("Press any key to exit\n");
+			getchar();
+			return 1;
+		}
+		
+		g_io_channel_write_chars(out_channel,buf,bytes_read,&amp;bytes_written,&amp;error);
+		if(error)
+		{
+			g_print("Error while writing file %s\n",argv[2]);
+			g_print("Press any key to exit\n");
+			getchar();
+			return 1;
+		}
+	}
+	while(bytes_read &gt; 0);
+	
+       g_io_channel_shutdown(in_channel,TRUE,&amp;error);
+	if(error)
+	{
+		g_print("Error has occured\n");
+		g_print("Press any key to exit\n");
+		getchar();
+		return 1;
+	}
+	 
+	g_io_channel_shutdown(out_channel,TRUE,&amp;error);
+ 	if(error)
+	{
+		g_print("Error has occured\n");
+		g_print("Press any key to exit\n");
+		getchar();
+		return 1;
+	}
+	
+	g_print("File copied successfully...\n");
+	getchar();
+	
+	return 0;
+}</codeblock>
+<section id="GUID-96EC4949-D5B6-41A1-A55E-D02390E5CFD5">       <title>Using <codeph>GIOChannel</codeph> in
+GLib main loops</title>       <p><codeph>GIOChannel</codeph> provides a way
+to integrate file descriptors to main loops. The following code demonstrates
+the usage. In the code, a pipe is created. A thread is created which writes
+to the write end of the pipe. The main loop checks if the other end of the
+pipe is ready to read. If it is, then the callback function is called. The
+callback calls <codeph>g_main_loop_quit()</codeph>, and the main loop is terminated
+and <codeph>g_main_loop_run()</codeph> returns. </p><codeblock xml:space="preserve">#include &lt;glib.h&gt;
+#include &lt;stdio.h&gt;
+
+int fd[2];
+
+void *thread_function(void *data)
+{
+	// call sleep so that the main loop source is not ready immediately
+	sleep(10);
+	
+	write(fd[1],"GIOChannel main loop example",29);
+	return NULL;
+}
+
+gboolean my_callback(GIOChannel *source,GIOCondition condition,gpointer data)
+{
+	char buf[100];	
+	
+	read(fd[0],buf,sizeof(buf));
+	g_print("%s",buf);
+	
+	getchar();
+	
+	g_main_loop_quit((GMainLoop *)data);
+	
+	return FALSE;
+}
+
+int main()
+{
+	GMainLoop *loop;
+	GIOChannel *channel;
+	
+	pipe(fd);
+	
+	channel = g_io_channel_unix_new(fd[0]);
+	
+	g_thread_init(NULL);
+	g_thread_create(thread_function,NULL,TRUE,NULL);
+	
+	loop = g_main_loop_new(NULL,FALSE);
+	g_io_add_watch(channel,G_IO_IN | G_IO_HUP | G_IO_ERR,(GIOFunc)my_callback,loop);
+	g_main_loop_run(loop);
+	
+	g_io_channel_shutdown(channel,TRUE,NULL);
+
+	return 0;
+}
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36" xml:lang="en"><title>How to build GUI applications</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e191988_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-81BE3473-E3E4-55F1-897F-635A197AF1DF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-81BE3473-E3E4-55F1-897F-635A197AF1DF" xml:lang="en"><title>Comms
+Database Settings for DNS</title><shortdesc>Describes the Comms database settings for the Domain Name Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The phone name is stored in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-303A3C65-3391-540D-B0FB-75E92DC7663E">Network
+table</xref> in the <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms
+database</xref> file. The phone name is stored as the <codeph>HostName</codeph> field.
+The <codeph>HostName</codeph> field consists of the phone name and the suffix
+name. </p>
+<example><title>Comms database file example</title> <p>The following <xref href="GUID-00696F18-F1C8-5810-A9F9-E7215CA451A4.dita">cfg</xref> file section describes
+an example where the <codeph>Testhostname1</codeph> is the phone name and <codeph>nokia.foo</codeph> is
+the suffix name: </p> <codeblock id="GUID-F7BE4B22-B65F-5EA2-805F-23A57F8906A9" xml:space="preserve">[Network] 
+ADD_SECTION
+# COMMDB_ID = 1
+    Name=Intranet
+    HostName=Testhostname1.nokia.foo
+    FIELD_COUNT=2
+END_ADD</codeblock> </example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-81C1F6BE-B2CE-5A2B-A6D4-DC1ABBBED0DE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-81C1F6BE-B2CE-5A2B-A6D4-DC1ABBBED0DE" xml:lang="en"><title>How to
+pre-expand a buffer</title><shortdesc>Explains how to use the <codeph>Expand()</codeph> function in buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>InsertL()</codeph> function provides a means of writing data
+into a buffer, and expanding it as necessary. When the kind of data to be
+inserted cannot be predicted in advance, this is the best technique to use.
+An example of this situation would be entering characters into a word processor
+document in response to user keystrokes.</p>
+<p>In cases where the data to be inserted into a buffer is known in advance
+— typically, when restoring from a file or stream store — it is better to
+pre-expand the buffer to be able to contain the data, and then <codeph>Write()</codeph> into
+the expanded region of the buffer:</p>
+<p>In the following example the buffer is allocated and primed with some data.
+Then <codeph>ExpandL()</codeph> is used to insert 16 uninitialised bytes into
+the buffer after position 6. The buffer is now 28 bytes long. Then, data is
+written into this gap using <codeph>Write()</codeph>, which cannot leave.</p>
+<codeblock id="GUID-70600A2B-F559-5F5C-99C7-0EFA79047571" xml:space="preserve">//
+// Allocate buffer
+//
+CBufBase* buf=CBufSeg::NewL(4);
+CleanupStack::PushL(buf);
+
+//
+// Put some text in
+//
+_LIT8(KHelloWorld,"Hello world!");
+buf-&gt;InsertL(0,KHelloWorld);
+
+//
+// Reserve space for 16 X 8-bit chars
+//
+buf-&gt;ExpandL(6,16);            // &lt;- this can fail
+writeBuf(buf);
+
+//
+// Now insert only 16 characters
+//
+TText8 c='a';                  // character to insert
+for (TInt i=0; i&lt;16; i++, c++)
+ {
+ buf-&gt;Write(i+6, &amp;c, 1);   // write a char in - cannot fail
+ }
+writeBuf(buf);
+
+//
+// Now adjust size down to 18
+//
+buf-&gt;ResizeL(18);
+writeBuf(buf);
+
+//
+// Destroy buffer
+//
+CleanupStack::PopAndDestroy();</codeblock>
+<p>There are two advantages to replacing a large number of <codeph>InsertL()</codeph> operations
+with a single <codeph>ExpandL()</codeph> followed by many <codeph>Write()</codeph> operations:</p>
+<ul>
+<li id="GUID-E8B09B4A-FB3C-52E2-B1DE-AD96DF175081"><p>each <codeph>InsertL()</codeph> may
+call the allocator to expand the dynamic buffer, and may cause data beyond
+the insertion point to be shuffled up: using a single <codeph>ExpandL()</codeph> results
+in minimal calls to the allocator, and only a single shuffle</p> </li>
+<li id="GUID-A35ECB22-A81E-547C-9D55-2DF23785E5AE"><p>the <codeph>Write()</codeph> operations
+cannot leave: therefore, once a buffer has been successfully expanded to the
+right size, the writes are guaranteed to work: this is useful in some circumstances.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E" xml:lang="en"><title>Progress
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-1752AA10-5432-4EC6-BCAB-12AF0C020AB7"><p>Progress
+notes contain a progress graphic of definite duration. They are used during
+operations that take a long time when it is possible to estimate the duration
+of the operation. Whenever possible, the user should be able to stop the operation.
+For this, a softkey labeled e.g. <uicontrol>Cancel</uicontrol> is provided.</p><fig id="GUID-12944F1C-48F3-4E80-804B-A585B911F0C8-GENID-1-6-1-6-1-1-5-1-18-1-1-9-1-2-1-2">
+<title>Progress note</title>
+<image href="GUID-3F69590C-B1FB-4E73-B3D3-FD09C894BC60_d0e61414_href.png" scale="33" placement="inline"></image>
+</fig></section>
+<section id="GUID-D8E36599-D305-4C3B-AB3D-4BF4CF1A70E7"> 
+     <title>Using progress notes in C++ applications</title>      <p>You can
+create either a basic wait note that is displayed only when your application
+is in the foreground or a global note that stays displayed even if the application
+launching the note is not in the foreground. The related APIs are the Notes
+API (for basic notes) and the Notifiers
+API (for global notes).</p><p>Progress notes are predefined notes that
+cannot be used just by instantiating a simple note class. These notes' lifetime
+is based on a background process, and client code has to provide an interface
+to retrieve this information. For implementation information, see Creating a progress note.</p> <p>To create a global progress note,
+use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalProgressDialog.html" format="application/java-archive"><codeph>CAknGlobalProgressDialog</codeph></xref> in the Notifiers
+API. For implementation information, see Using
+global notes and Using
+global notes with user interaction.</p><p>For basic notes, you can
+change the icon or text displayed in the note, use a different kind of sound,
+or change the note duration using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p><p>For information on customizing
+global notes, see Enhancing
+global notes. You can change the graphic, animation, tone, and softkeys
+using the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#cee323af0704e07d3f1887a4a13c1639" format="application/java-archive"><codeph>SetGraphic</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#d23699273b28a39c0817bc575be767ab" format="application/java-archive"><codeph>SetAnimation</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#a8748ee0b3342c24a11b8ed0ea9121bc" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#f31895e5838994b1c70300cfd3d7d127" format="application/java-archive"><codeph>SetSoftkeys</codeph></xref>.</p>     </section>
+
+
+
+</conbody><related-links>
+<link href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita"><linktext>Confirmation
+note</linktext></link>
+<link href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita"><linktext>Information
+note</linktext></link>
+<link href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita"><linktext>Warning note</linktext>
+</link>
+<link href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita"><linktext>Error note</linktext>
+</link>
+<link href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita"><linktext>Permanent
+note</linktext></link>
+<link href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita"><linktext>Wait note</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82074583-C3A3-5168-8225-C60D52F403F0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82074583-C3A3-5168-8225-C60D52F403F0" xml:lang="en"><title>Using
+RArray&lt;class T&gt;</title><shortdesc>This document covers the important issues involved in using an
+RArray.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A36E4483-1962-5672-9665-32CD941222A8"><title>Freeing all
+memory before the array goes out of scope</title> <p>By convention, class
+names starting with the letter <codeph>R</codeph> do not allocate memory on
+the heap. <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita"><apiname>RArray</apiname></xref> <codeph>&lt;class T&gt;</codeph> is an <i>exception</i> and
+this should be remembered when using the class. </p> <p>If an array is declared
+on the program stack, then its <codeph>Close()</codeph> or <codeph>Reset()</codeph> member
+function must be called to ensure that allocated memory is freed. </p> <p>Similarly,
+if <codeph>RArray&lt;class T&gt;</codeph> is a data member of another class,
+then the destructor of that class must call <codeph>Close()</codeph> or <codeph>Reset()</codeph>. </p> </section>
+<section id="GUID-B3466F0B-3A94-502D-897D-D83D76CF9EE8"><title>Packaging the
+algorithm for ordering array objects</title> <p>A <codeph>RArray&lt;class
+T&gt;</codeph> array allows its contained objects to be ordered. The array provides
+the behaviour for inserting and sorting instances of the template class <codeph>T</codeph>.
+To help with this, the template class <codeph>T</codeph> must provide an algorithm
+for deciding how two class <codeph>T</codeph> objects are ordered. This algorithm
+is implemented by a function which must be wrapped in a <codeph>TLinearOrder&lt;class
+T&gt;</codeph> package. </p> <p>The function implementing the algorithm can be
+a static member of the class <codeph>T</codeph> but need not necessarily be
+so. </p> <p>Here, we aim to build an array of <codeph>TMyTest</codeph> objects
+ordered in a way which makes sense for the <codeph>TMyTest</codeph> class. </p> <codeblock id="GUID-51D0BA13-BA84-5755-8613-D7A94428B8D2" xml:space="preserve">class TMyTest
+ { 
+public :
+ TMyTest(TInt anAint,TInt aBint);
+ static TInt Compare(const TMyTest&amp; aFirst, const TMyTest&amp; Second);
+public:
+ TInt a;
+ TInt b;
+ };</codeblock> <p>In this example , the algorithm is implemented by a static
+function called <codeph>Compare()</codeph>. It takes const references to two <codeph>TMyTest</codeph> objects
+and returns zero if the objects are equal, a negative value if <codeph>aFirst</codeph> is
+less than <codeph>aSecond</codeph> and a positive value if <codeph>aFirst</codeph> is
+greater than <codeph>aSecond</codeph>. </p> <codeblock id="GUID-689AED96-53FB-54EE-899F-75C166C37E60" xml:space="preserve">TInt TMyTest::Compare(const TMyTest&amp; aFirst,const TMyTest&amp; aSecond)
+ {
+ if (aFirst.b &lt; aSecond.b)
+  return -1;
+ if (aFirst.b &gt; aSecond.b)
+  return 1;
+ return 0;
+ }</codeblock> <p>Construct three <codeph>TMyTest</codeph> objects and then
+construct an array object for an array of <codeph>TMyTest</codeph> objects;
+the array has default granularity. </p> <codeblock id="GUID-67915074-D6FC-5202-A58E-5C0E45A8EA5B" xml:space="preserve">TMyTest one(1,1);
+TMyTest two(2,2);
+TMyTest three(3,3);
+...
+RArray&lt;TMyTest&gt; x;</codeblock> <p>There are at least three ways of proceeding,
+some of which are more efficient than others. </p> <ul>
+<li id="GUID-DF5A7FF9-C75A-5A65-8236-700E73F5B451"><p>Explicitly build a <codeph>TLinearOrder&lt;TMyTest&gt;</codeph> and
+pass this as a parameter to <codeph>InsertInOrder()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-C5B7721F-82E3-5097-9BBF-E0005BD9A372" xml:space="preserve">...
+TLinearOrder&lt;TMyTest&gt; order(TMyTest::Compare);
+...
+x.InsertInOrder(one,order);
+...</codeblock> <ul>
+<li id="GUID-DB2CF898-C7EE-5366-B0EB-85576DB47C85"><p>Construct a temporary <codeph>TLinearOrder&lt;TMyTest&gt;</codeph> on
+the call to <codeph>InsertInOrder()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-5E7E3500-B821-5F52-AC3D-7DAF82A0C367" xml:space="preserve">...
+x.InsertInOrder(one,TLinearOrder&lt;TMyTest&gt;(TMyTest::Compare));
+...</codeblock> <ul>
+<li id="GUID-FC47BB50-FE67-572E-8119-6646312B0ABF"><p>Implicitly construct
+a temporary <codeph>TLinearOrder&lt;TMyTest&gt;</codeph> on the call to <codeph>InsertOrder()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-0BA2C45D-F02C-5DEF-BC50-3F31883F8913" xml:space="preserve">...
+x.InsertInOrder(one,TMyTest::Compare);
+...</codeblock> <p>This applies to all member functions of <codeph>RArray&lt;class
+          T&gt;</codeph> which take a <codeph>TLinearOrder&lt;class T&gt;</codeph> argument. </p> </section>
+<section id="GUID-749DF0B3-7548-55DF-B769-EDFE830B66A6"><title>Packaging the
+algorithm for matching array objects</title> <p>One of the <codeph>Find()</codeph> member
+functions of <codeph>RArray&lt;class T&gt;</codeph> takes a <codeph>TIdentityRelation&lt;class
+          T&gt;</codeph> as an argument. This packages a function which implements
+an algorithm for deciding whether two class <codeph>T</codeph> objects match. </p> <p>The
+packaging technique is the same as for the previous section. As an example,
+we can extend the class <codeph>TMyTest</codeph> used in <xref href="GUID-82074583-C3A3-5168-8225-C60D52F403F0.dita#GUID-82074583-C3A3-5168-8225-C60D52F403F0/GUID-B3466F0B-3A94-502D-897D-D83D76CF9EE8">Packaging the algorithm for ordering array objects</xref> by adding another
+static function called <codeph>Match()</codeph>. </p> <codeblock id="GUID-ACFE8660-E906-5B84-B5F9-2F319F60B28D" xml:space="preserve">class TMyTest
+ { 
+public :
+ TMyTest(TInt anAint,TInt aBint);
+ static TInt Compare(const TMyTest&amp; aFirst, const TMyTest&amp; Second);
+ static TBool Match(const TMyTest&amp; aFirst, const TMyTest&amp; Second);
+public:
+ TInt a;
+ TInt b;
+ };</codeblock> <p>A typical implementation for <codeph>Match()</codeph> might
+be: </p> <codeblock id="GUID-1A664DA1-08B4-55A3-ACA0-17AA9B572546" xml:space="preserve">TBool TMyTest::Match(const TMyTest&amp; aFirst,const TMyTest&amp; aSecond)
+ {
+ if ((aFirst.a == aSecond.a) &amp;&amp; (aFirst.b == aSecond.b))
+  return ETrue;
+ return EFalse;
+ }</codeblock> <p>So, given an array: </p> <codeblock id="GUID-D198D6D0-6F76-5437-9D73-A2A4D2FA9675" xml:space="preserve">RArray&lt;TMyTest&gt; x;RArray&lt;TMyTest&gt; x;</codeblock> <p>populated with a number <codeph>TMyTest</codeph> objects, we can package<codeph>TMyTest</codeph>'s
+matching function in at least three ways. </p> <ul>
+<li id="GUID-47125BDD-30B7-549F-BFF8-368F0CE5E9DB"><p>Explicitly build a <codeph>TIdentityRelation&lt;TMyTest&gt;</codeph> and
+pass this as a parameter to <codeph>Find()</codeph>; for example: </p> </li>
+</ul> <codeblock id="GUID-3AA00C63-32A4-534C-8A75-327DE3550B03" xml:space="preserve">...
+TIdentityRelation&lt;TMyTest&gt; matcher(TMyTest::Match);
+...
+TMyTest hunter(9,9);
+TInt index = x.Find(hunter,order);
+if (index == KErrNotFound)
+ {
+ ...
+ }
+...</codeblock> <ul>
+<li id="GUID-9D164434-FFF7-5113-84C8-69E3E83FEAFB"><p>Construct a temporary <codeph>TIdentityRelation&lt;TMyTest&gt;</codeph> on
+the call to <codeph>Find()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-B379AF07-031F-5B84-9504-84378B39121D" xml:space="preserve">...
+TMyTest hunter(9,9);
+TInt index = x.Find(hunter,TIdentityRelation&lt;TMyTest&gt;(TMyTest::Match));
+if (index == KErrNotFound)
+ {
+ ...
+ }
+...</codeblock> <ul>
+<li id="GUID-244AEE08-0F77-5171-9697-A4CCDB00435D"><p>Implicitly construct
+a temporary <codeph>TIdentityRelation&lt;TMyTest&gt;</codeph> on the call to <codeph>Find()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-FF8525B6-047C-561D-9E5B-C4F81D341389" xml:space="preserve">...
+TMyTest hunter(9,9);
+TInt index = x.Find(hunter,TMyTest::Match);
+if (index == KErrNotFound)
+ {
+ ...
+ }
+...</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e292804_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82438A0F-819C-5CDC-81DC-A8BFE3AA4A6A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82438A0F-819C-5CDC-81DC-A8BFE3AA4A6A" xml:lang="en"><title>Network Protocols</title><shortdesc>This collection is a set of plugins to the Sockets Server. The plugins implement network protocols. The network protcocols can be accessed through a sockets type interface. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82499F0B-2791-59B6-9BAE-F9F87234FBF1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-82499F0B-2791-59B6-9BAE-F9F87234FBF1"><title>Implementing a NifMan Daemon Tutorial</title><shortdesc>This topic describes the steps involved in implementing a NifMan Daemon. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context><p>Daemons are loaded when a connection is started that requires network layer configuration. The ECom configuration daemon manager used for a connection is specified in the <xref href="GUID-F0251041-3AFA-3FD1-88C7-10FB5E98F28B.dita"><apiname>SERVICE_CONFIG_DAEMON_MANAGER_NAME</apiname></xref> field in the <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms Database</xref> Dial Out ISP and GPRS Packet Service tables. The daemon server used for a connection is specified in the <xref href="GUID-2768D204-6FA4-3D07-91E8-D1963FFE028D.dita"><apiname>SERVICE_CONFIG_DAEMON_NAME</apiname></xref> field in the CommDb Dial Out ISP and GPRS Packet Service tables. </p> <p>To implement a configuration daemon, you must write a Symbian OS server for more information see <xref href="GUID-6047DB3F-DC92-51DF-9EEB-00E79E890B54.dita">Using Client/Server</xref>. </p> <p>The name of the server in <xref href="GUID-D75692B1-FB2C-3893-9CF1-33BD02BBC63F.dita#GUID-D75692B1-FB2C-3893-9CF1-33BD02BBC63F/GUID-5D37DC05-93BC-3ED0-87EC-B500ADF55526"><apiname>CServer::Start()</apiname></xref> must match the name used in the CommDb <xref href="GUID-2768D204-6FA4-3D07-91E8-D1963FFE028D.dita"><apiname>SERVICE_CONFIG_DAEMON_NAME</apiname></xref> field. </p> <p>The following <codeph>ServiceL()</codeph> implementation tests for these messages types and calls functions: </p> <codeblock id="GUID-8E8F8E53-5D7E-583D-8341-1C6658A2B5FE" xml:space="preserve">void CEgConfigDaemonSession::ServiceL(const RMessage2&amp; aMessage)
+  {
+  switch (aMessage.Function())
+    {
+  case EConfigDaemonConfigure:
+    ConfigureL(aMessage);
+    break;
+  case EConfigDaemonDeregister:
+    DeregisterL(aMessage);
+    break;
+  case EConfigDaemonLinkLayerDown:
+    LinkLayerDownL(aMessage);
+    break;
+  case EConfigDaemonLinkLayerUp:
+    LinkLayerUpL(aMessage);
+    break;
+  case EConfigDaemonProgress:
+    ProgressL(aMessage);
+    break;
+  case EConfigDaemonIoctl:
+    IoctlL(aMessage);
+    break;
+  case EConfigDaemonCancel:
+    Cancel(aMessage);
+    break;
+  case EConfigDaemonCancelMask:
+    CancelMask(aMessage);
+    break;
+  default:
+    User::Leave(KErrNotSupported);
+    break;
+    }
+  }</codeblock> <p>For more information about the message types see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita">What are the daemon message types?</xref>  </p> </context> </taskbody><related-links><link href="GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita"><linktext>What is Network Interface Management (NifMan)?</linktext> </link> <link href="GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita"><linktext>Architecture</linktext> </link> <link href="GUID-9F96807F-25DC-5DE1-B327-3E339665FF64.dita"><linktext>Reference</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC" xml:lang="en"><title>Publish and Subscribe</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><i>Publish and Subscribe</i> has replaced System Agent and the usage of temporary Shared Data keys.</p>
+<p>Publish and Subscribe allows the setting, retrieving and monitoring of system-wide variables and provides a new inter process communication (IPC) mechanism for peer to peer communication between threads. Threads may have the role of the publisher or of the subscriber, while any thread can define the property to be published. The process that defines a property can specify access rights for both reading and writing. Rights can be defined in terms of either requiring a particular <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref>, by a process <xref href="GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita#GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC652">Secure Identifier</xref>, or by a process <xref href="GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita#GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC654">VID</xref>. </p>
+<p>Publish and Subscribe should be considered under any of the following conditions:</p>
+<ul>
+<li><p>An event should be sent simultaneously to multiple places over the system.</p></li>
+<li><p>Only the last value of the property is significant, not the intermediate values.</p></li>
+<li><p>The source of the value is not significant. The value may have been set by any publisher with proper rights.</p></li>
+</ul>
+<p>For more information about the use of Publish and Subscribe, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Base-subsystem-guide/e32/PublishAndSubscribe/UsingPublishSubscribe.guide.html" format="application/java-archive">Using Publish and Subscribe</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82762D6D-7EF5-5061-9393-BBDCCC7212CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-82762D6D-7EF5-5061-9393-BBDCCC7212CD"><title>Using TCardinality</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>TCardinality</codeph>'s use is best explained by an example:</p> <p>If an integral value that needs externalising is known to be non-negative and cannot exceed 2^29 (e.g. the length of a descriptor) - instead of storing a 32-bit value in the stream, you can use <codeph>TCardinality</codeph> to compress the external format. So instead of</p> <codeblock id="GUID-7B78C47F-C8A2-5C64-9551-BDA725407B34" xml:space="preserve">writeStream.WriteUint32L(myValue);
+...
+myValue=readStream.ReadUint32L();</codeblock> <p>you would use</p> <codeblock id="GUID-5C11D583-E2E5-5891-BC0D-2BD74193889D" xml:space="preserve">writeStream &lt;&lt; TCardinality(myValue);
+...
+TCardinality c;
+readStream &gt;&gt; c;
+myValue=c;</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0" xml:lang="en"><title>Contiguousness</title><shortdesc>Description of contiguous data in flat and segmented buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In flat buffers, all data is contiguous. The <codeph>Ptr()</codeph> function
+always returns a pointer descriptor from the buffer position specified to
+the end of the data, and the <codeph>BackPtr()</codeph> function always returns
+a pointer descriptor from the beginning of the buffer to the buffer position
+specified.</p>
+<p>In segmented buffers, data is contained in segments and the maximum length
+of contiguous data is the granularity of the buffer. The extent of contiguous
+data contained in a segment may vary between a single byte, and the granularity,
+if the insertion and deletion pattern is arbitrary.</p>
+<p>However, the following guarantee is made: if the number of bytes inserted
+or deleted in <i>all</i> insertion and deletion operations is a multiple of
+some number <i>n</i>, and the granularity is also a multiple of this number <i>n</i>,
+then all data extents will be a multiple of <i>n</i> in length. This implies
+that the <codeph>Ptr()</codeph> function, given a buffer position which is
+a multiple of <i>n</i>, will always return a pointer descriptor referring
+to at least <i>n</i> bytes.</p>
+<p>This property of segmented descriptors is exploited by the <codeph>CArrayFixBase</codeph>, <codeph>CArrayVarBase</codeph> and <codeph>CArrayPakBase</codeph> derived array classes. In these classes, all insertion or deletion operations
+are always done in terms of the (fixed) length of data stored in the buffer.
+Therefore, the data for an individual array element is always contiguous.</p>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-2F64B579-73D3-548A-9104-16483AF77BCB.dita">Dynamic Arrays</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-829761B6-ECF7-5E15-A475-AEE357687067" xml:lang="en"><title>Animation
+overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-1FDB9A85-EA5C-4FA9-902C-A2DD7C23EE28"><title>Purpose</title> <p>The animation component is a framework
+that provides support to build animated graphics applications. It provides
+the basic data types that allow animations to be incorporated into the normal
+drawing of a window from the client, or to be managed on the server as a sprite. </p> </section>
+<section id="GUID-81E07DE3-E680-410C-A22D-809D72E9CD6D"><title>Required background</title> <p><xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Windows
+server</xref> component knowledge is recommended before using this component. </p> </section>
+<section id="GUID-DC47F478-274F-4669-AAF4-C6BD04D7D7D1"><title>Key concepts</title> <p>The component has the following key
+concepts: </p> <dl>
+<dlentry>
+<dt>Animation</dt>
+<dd><p>The animation is a fairly abstract interface owned by a client application.
+The interface is independent of the source of the data it uses, as the data
+providers are responsible for providing data to the animation. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Animator</dt>
+<dd><p>The animator represents each data type supported by the animation framework.
+It can handle data interpretation, timing and control of the animation. An
+animator is not be visible to the owner of the animation, but is controlled
+through it using a standard interface. The animators can either reside on
+the client or on the server. Each animation selects an animator plug-in to
+be used by providing an appropriate string obtained from the data provider. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Data provider</dt>
+<dd><p>A data provider is a generic interface to handle different kinds of
+data, which has different structures and behaviours, for example, GIFs and
+SVG (Scalable Vector Graphics). Animations access the data providers they
+own through an observer interface, which reports events to the animation.
+The interface in turn reports these events to the respective animators. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Observer</dt>
+<dd><p>An observer acts as an interface and is responsible for reporting events.
+The animation framework provides two such observers: a data provider observer,
+and an animation observer. The data provider observer is an interface between
+the animation and the data provider. Using this observer the animation can
+receive data and events from the data provider. The animation observer is
+an interface between the animation and the client application, and is used
+to report events to the client application. In Symbian OS v9.1, the animation
+observer is implemented to report only errors to the client application. </p> </dd>
+</dlentry>
+</dl> </section>
+<section id="GUID-71398AF6-16D5-4FC5-9342-44304C0A3066"><title>Architectural relationships</title> <p>The animation component
+provides a set of abstract classes with some basic functionality required
+for any type of animation. Implementors have to derive their own classes using
+these abstract classes to support specific animation types such as bitmap
+animation, sprite animation and so on. </p> <p>The animation framework also
+provides concrete implementations of the abstract classes. The concrete implementations
+of the <codeph>CAnimation</codeph> class are: </p> <ul>
+<li id="GUID-0E148B3E-F6D0-5AC0-B721-FB3BECD432F7"><p> <b>CBasicAnimation</b>  </p> <p>This
+is a client-side animation class which can also act as a data provider observer
+and an animation drawer. It provides a bitmap and a mask on which the animation
+is submitted. This class establishes a session with the windows server before
+submitting the animation to a particular window. </p> </li>
+<li id="GUID-4E7B61AF-0FF0-5EBF-A46B-F42D747CF866"><p> <b>CSpriteAnimation</b>  </p> <p>This
+is a server-side animation class for sprite based animations. The client has
+limited control over the animation, as sprites are server-side graphic objects
+and are controlled by the server. This class makes use of the windows server
+animation API to submit sprite animations. For more information on these APIs,
+refer to <xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Using Window
+Server (WSERV)</xref>. </p> </li>
+<li id="GUID-3514D632-4090-51BD-AD26-B98CA6B31ADC"><p> <b>CAnimationGroup</b>  </p> <p>This
+class is not an animation class by itself, but is a collection of animations
+grouped together. It provides access to an array of animation references and
+handles all synchronisation issues among the animations in the group, provided
+all the animations are of the same type. For example, if a set of client-side
+animations are grouped together, they respond to commands collectively in
+synchronisation with each other. If the group includes both sprite and client-side
+animations, they will respond to commands collectively in asynchronous mode. </p> </li>
+</ul> <p>The framework provides the following concrete implementations for
+the other two abstract classes, <codeph>CAnimationDataProvider</codeph> and <codeph>CAnimator</codeph>: </p> <ul>
+<li id="GUID-C7FB57BB-25C4-5813-9C0A-B71433999EB3"><p> <b>CICLAnimationDataProvider</b>  </p> <p>This
+class interprets various data types including animated GIFs using the <xref href="GUID-6B478F86-1EC4-5F78-B7C8-C2E5FCD974B6.dita">Image Conversion Library</xref> (ICL).
+It provides data to the animation class in the form of individual frames using
+the <codeph>CAnimationFrame</codeph> object which contains a bitmap, a mask,
+and frame information. </p> </li>
+<li id="GUID-650EDA72-3CC2-5A08-8E6A-F57755B6EEAE"><p> <b>CBitmapAnimator</b>  </p> <p>This
+class can handle fixed sequence of bitmap frames passed by the data provider. </p> </li>
+</ul> </section>
+<section id="GUID-20A5B4F1-586A-4ADC-96C5-E4CF49EC7DA9"><title>API summary</title> <p> </p> <table id="GUID-CA7854D0-7D1C-5BCD-B9E5-A1FB2198AE15">
+<tgroup cols="2"><colspec colname="col0" colwidth="0.60*"/><colspec colname="col1" colwidth="1.40*"/>
+<thead>
+<row>
+<entry>Class Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-40CEAB8C-2202-3E88-929F-35DA5BD554A4.dita"><apiname>CAnimation</apiname></xref>  </p> </entry>
+<entry><p>This is an abstract generic class which provides the basic functionality
+for all types of animations. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-AD71F0EC-EB49-3D46-BEEE-B8ECD30BDDEA.dita"><apiname>CAnimator</apiname></xref>  </p> </entry>
+<entry><p>This is an abstract class, which represents each type of data supported
+by the animation framework. This class is implemented as an ECOM plug-in. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-CB96F59F-BEF9-3296-A80A-4E8E8BE354C6.dita"><apiname>CAnimationDataProvider</apiname></xref>  </p> </entry>
+<entry><p>This is an abstract class, which takes the animation data and converts
+it into a format recognized by the animator. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-12B29886-1D43-37ED-8DC0-6F43D3E591E8.dita"><apiname>CBasicAnimation</apiname></xref>  </p> </entry>
+<entry><p>This is a concrete implementation class of the <codeph>CAnimation</codeph> class.
+This class is used for basic client-side animations. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6BB621FF-F799-357C-BEAC-9767D68E7D50.dita"><apiname>CSpriteAnimation</apiname></xref>  </p> </entry>
+<entry><p>This is a concrete implementation class of the <codeph>CAnimation</codeph> class.
+This class is used for sprite animations. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-65234329-B7A6-4A07-B32C-BB3B7D161F0C"><title>Typical uses</title> <p><b>Creating a basic animation </b> </p><p>The
+animation framework can be used to create a basic client-side animation using
+the <codeph>CBasicAnimation</codeph> class. You can also have your own implementation
+for other type of animations. For more information, refer to <xref href="GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita">How
+to create a basic animation</xref>. </p> <p><b>Creating a sprite animation </b> </p><p>The
+animation framework supports server-side sprite animations using the <codeph>CSpriteAnimation</codeph> class.
+The procedure to create a sprite animation is the same as that for creating
+a basic client-side animation. The only difference between a client-side animation
+and a sprite animation is that client-side animations are redrawn by the client
+application. Whereas, for sprite animations redraws are handled automatically,
+as they run in the window server's high priority thread. </p> </section>
+</conbody><related-links>
+<link href="GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita"><linktext>How to create
+a basic animation</linktext></link>
+<link href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita"><linktext>Using Window
+Server (WSERV)</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-829D80B6-7F14-5006-94C5-2609565D7BCB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-829D80B6-7F14-5006-94C5-2609565D7BCB" xml:lang="en"><title>Basic Types</title><shortdesc>A list of documents that describe the basic types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82ABFD08-D354-5955-8F95-9F22859FCE2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82ABFD08-D354-5955-8F95-9F22859FCE2A" xml:lang="en"><title>Key Space Design</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82AF5F49-EE25-54C7-AEE9-D1F41BD5190F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82AF5F49-EE25-54C7-AEE9-D1F41BD5190F" xml:lang="en"><title>XML Services Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>XML Services Module contains XML collection which consists of components for parsing event-based XML, implementing the standard DOM API and XML processing, parsing and validating APIs.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9" xml:lang="en"><title>The
+relationship between descriptor classes</title><shortdesc>Describes inheritance relationship between the descriptor classes
+and associated abstract base classes.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following diagram shows the inheritance relationship between the concrete
+descriptor classes and their abstract base classes. </p>
+<p>The diagram uses the 16-bit variant types: </p>
+<ul>
+<li id="GUID-9F68E03E-EC88-50FD-868C-EB3C91DE9F50"><p> <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref> </p> </li>
+<li id="GUID-DC40BC35-AA45-515C-9721-8B6E73A7AC89"><p> <xref href="GUID-262C5A94-F186-31A1-855E-1FE123BC101C.dita"><apiname>TPtr16</apiname></xref> </p> </li>
+<li id="GUID-10AD9787-4CCA-5600-8898-1F18B94C6499"><p> <xref href="GUID-44622E86-313E-36B3-9989-3016F8E6E252.dita"><apiname>TBufC16</apiname></xref> <codeph>&lt;TInt&gt;</codeph> </p> </li>
+<li id="GUID-D88E7A38-CF2F-5723-B1C1-C9FF3113AEF9"><p> <xref href="GUID-EF25E407-26DF-3D97-B725-2DD0345975BA.dita"><apiname>TBuf16</apiname></xref> <codeph>&lt;TInt&gt;</codeph> </p> </li>
+<li id="GUID-55E8280B-DB84-51B0-B103-E674DACCE388"><p> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> </p> </li>
+<li id="GUID-9B7A4836-E7BA-5751-AFA7-563ED80B2F76"><p> <xref href="GUID-3D3D9CD7-C8FD-3F81-9CC5-1A71D4F9751E.dita"><apiname>HBufC16</apiname></xref> </p> </li>
+</ul>
+<p>but the relationship is exactly the same for the 8-bit variants. The class
+names can also be replaced by the build independent types and the relationships
+remains valid. </p>
+<p>The <codeph>TBufBase16</codeph> and <codeph>TBufCBase16</codeph> classes
+are an implementation convenience and are not part of the public API. </p>
+<p> <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> and <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref> are abstract
+classes and cannot be instantiated, However, these types can be passed as
+arguments to functions. </p>
+<fig id="GUID-B76A3D70-207B-55B2-B5BC-003E6E143375">
+<image href="GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e196472_href.png" placement="inline"/>
+<p>Inheritance relationship between the concrete descriptor classes and their
+abstract base classes</p>
+</fig>
+<p>Because descriptors are widely used (especially on the stack), the size
+of descriptor objects must be kept to a minimum. To help with this, no virtual
+functions are defined in order to avoid the overhead of a virtual function
+table pointer in each descriptor object. </p>
+<p>As a consequence, the base classes have implicit knowledge of the classes
+derived from them. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555"><title>Continuous Digital Zooming</title><shortdesc>This tutorial describes how to perform continuous digital zooming using the Ecam API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-18F6B6F4-909B-58C3-A6B3-014E8B4D5919-GENID-1-6-1-17-1-1-5-1-5-1-7-1-4-1-5-1-3-1"><p>Before you start you should understand the following topics: </p> <ul><li id="GUID-47B2BCC4-347A-5188-9DA4-1AF59A5E0862"><p><xref href="GUID-176913BA-3877-58E2-9E12-3606EE697813.dita">Overview</xref> of the advanced Camera settings functionality. </p> </li> <li id="GUID-A34D2CE7-2C30-5349-85D2-A51023CFBB4B"><p><xref href="GUID-BDB622BF-1CFA-5F1C-81FB-5579C8599689.dita">Tutorial</xref> of the advanced Camera settings functionality. </p> </li> </ul> </prereq> <context id="GUID-D62D84CA-773A-5E47-90A4-2E0FDA70C818"><p>For advanced camera settings, the continuous digital zooming API provides a greater control over continuous zoom by allowing you to specify the speed and acceleration of each continuous zoom operation. The minimum speed for zooming is zero and the minimum acceleration is a negative value (which means deceleration). </p> <p>For continuous zooming, you need to provide a concrete implementation of <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCameraContinuousZoom</apiname></xref>. </p> </context> <steps id="GUID-C66E1385-9555-53A9-BD8B-AC2504F8725F"><step id="GUID-87E8226E-92D7-5C21-AB84-8B69B0E1D5AC"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::NewL(CCamera&amp;)</apiname></xref> to create a <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings</apiname></xref> object. </info> </step> <step id="GUID-390913F8-97B9-5306-8716-96D1A52E1584"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::GetSupportedContinuousZoomTypeL(TUint&amp;)</apiname></xref> to retrieve supported continuous zoom options for <codeph>CCameraAdvancedSettings</codeph>. </info> </step> <step id="GUID-3F3B7935-D89F-55F0-9AF4-1C38F481C856"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::CreateContinuousZoomL(MContinuousZoomObserver&amp;,
+                TContinuousZoomType, CCameraContinuousZoom*&amp;)</apiname></xref> to create a continuous zoom object. </info> </step> <step id="GUID-787CE611-8527-5B9E-AEE7-5434775C40EF"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraContinuousZoom::GetContinuousZoomSupportInfoL(CCameraAdvancedSettings::TContinuousZoomSupportInfo&amp;)</apiname></xref> to retrieve information about the supported settings related to continuous zoom. </info> </step> <step id="GUID-8DC3F51B-0A0E-5445-AF3B-9F2BA2CC7D99"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::StartContinuousZoomL(CCameraAdvancedSettings::TContinuousZoomParameters)</apiname></xref> to start the continuous zoom operation. </info> </step> <step id="GUID-86FCBD0A-5208-5220-9620-EF6F8B59210E"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraContinuousZoom::ContinuousZoomProgress(CCameraContinuousZoom&amp;,
+                TInt, TInt)</apiname></xref> function when a new zoom factor has achieved during the current continuous zoom operation. </info> </step> <step id="GUID-404644BF-2C4A-5051-9ABF-928A2800FE23"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::GetContinuousZoomId
+                (TInt aZoomId)</apiname></xref> function when you use more than one continuous zoom operation. This function is used to retrieve a unique ID which you can use to determine the callback function (like <codeph>ContinuousZoomProgress()</codeph> or <codeph>ContinuousZoomCompleted()</codeph>) is associated with which continuous zoom object. </info> </step> <step id="GUID-4681BA8B-30A1-5ED6-85C4-3DCA1BE237E0"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraContinuousZoom::ContinuousZoomCompleted()</apiname></xref> to inform you that the continuous zoom function has either completed successfully or to report an error that has caused the operation to fail. </info> <info>Note: This callback function does not actually stop the continuous zoom. </info> </step> <step id="GUID-B8F65783-F7FB-527D-A053-3E1A5E3321AD"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::StopContinuousZoom()</apiname></xref> to stop continuous zooming, if the continuous zoom function has not already completed. </info> </step> </steps> <example><title>Example</title> <p>The following example shows you how to perform continuous digital zooming using the Ecam API: </p> <codeblock id="GUID-C91D9A77-001B-5649-9B30-B0F4964C8023" xml:space="preserve">
+
+CCamera* camera;
+MCameraObserver2* observer2;
+Camera = CCamera::New2L(*observer2, 0);
+CCamera::CCameraAdvancedSettings* settings = CCamera::CCameraAdvancedSettings::NewL(*camera);
+ 
+TUint supportedContinuousZoomType;
+settings-&gt;GetSupportedContinuousZoomTypeL(supportedContinuousZoomType);
+               
+CCamera::CCameraAdvancedSettings::TContinuousZoomType continuousZoomType =
+                       CCamera::CCameraAdvancedSettings::EContinuousZoomMixed;
+ 
+MContinuousZoomObserver* continuousZoomObserver;     
+CCamera::CCameraContinuousZoom* continuousZoom = NULL;
+settings-&gt;CreateContinuousZoomL(*continuousZoomObserver, continuousZoomType, continuousZoom);
+        
+CCamera::CCameraAdvancedSettings::TContinuousZoomSupportInfo info;
+continuousZoom-&gt;GetContinuousZoomSupportInfoL(info);
+        
+CCamera::CCameraAdvancedSettings::TContinuousZoomParameters param;
+param.iContinuousZoomType = continuousZoomType;
+param.iContinuousZoomAcceleration = 0;
+param.iContinuousZoomSpeed = 1;
+param.iContinuousZoomLimit = 5;
+param.iZoomDirection = CCamera::CCameraAdvancedSettings::EZoomDirectionWide;
+ 
+continuousZoom-&gt;StartContinuousZoomL(param);
+
+</codeblock> </example> </taskbody><related-links><link href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita"><linktext> Advanced Settings for Focus, Drive Modes,
+                and Bracket Modes</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-82C53275-6F7C-5B3D-9A07-FA4801D42403.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-82C53275-6F7C-5B3D-9A07-FA4801D42403" xml:lang="en"><title>Iterators</title><shortdesc>Iterators provide an easy way of cycling through the elements of
+a singly linked list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Iterators provide an easy way of cycling through the elements of a singly
+linked list, using the post increment operator<codeph>++</codeph>. They avoid
+the need to access the inner detail of link objects and list headers.</p>
+<p>An iterator is an instance of the templated class <codeph>TSglQueIter&lt;class
+T&gt;</codeph>. The class provides the behaviour for moving through the elements
+of a specific list. An iterator maintains a pointer to the current element
+in the list. The current element can be any element in the list.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-82ECE53F-FF7B-4DFB-874D-24487E6BB5BD_d0e46371_href.png has changed
Binary file Symbian3/SDK/Source/GUID-82ECE53F-FF7B-4DFB-874D-24487E6BB5BD_d0e52475_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02" xml:lang="en"><title>View
+Server Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>This API allows applications to make and
+receive requests to show a particular view of data. Small amounts of data
+may be passed in such requests. The view architecture allows a high level
+of integration between applications. This is particularly useful for enabling
+users to navigate through the UI on the basis of the tasks they are working
+on, rather than perceiving separate applications. </p> </section>
+<section><title>Architectural relationships</title> <p>Views are UI classes
+(almost invariably controls) that implement the Symbian view interface. They
+display application data and are owned by the application's main user interface
+class (the AppUi). </p> <p>The inter-process communication required to make
+and receive requests to display particular views is handled by a dedicated
+server. <b>The client/server interface is not to be used directly by applications,
+but through framework functions in the AppUi (CCoeAppUi).</b>  </p> <fig id="GUID-DBF38DC9-0A01-532F-83E4-B0BDC5103DB7">
+<title>              View Server architecture            </title>
+<image href="GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e116900_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>Description</title> <p>The API has several key concepts: </p> <p><b>Abstract
+view interface</b> </p> <p>The abstract view interface is implemented by application
+views to receive activation and deactivation requests from the view server.
+The activation method allows a message (a Direct Navigational Link, or DNL),
+encapsulated in a descriptor, to be passed to the view (for example, the name
+of a file that should be displayed in the view). Note that although view classes
+are usually derived from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> the view architecture
+does not impose any restriction on which type of object implements the view
+interface. </p> <p>The abstract view interface is provided by <xref href="GUID-2C5E3F6C-6679-3914-9736-62296E7715A7.dita"><apiname>MCoeView</apiname></xref>. </p> <p><b>View
+ID</b> </p> <p>The view ID identifies a view uniquely. It consists of two
+UIDs: the application's UID, which is allocated by Symbian, and a view UID,
+which is allocated by the Symbian developer. The view UID is not strictly
+a UID (though it is of the the same <xref href="GUID-530281E6-29FC-33F2-BC9B-610FBA389444.dita"><apiname>TUid</apiname></xref> type) and needs
+only to be unique within the application and different from the application
+UID. </p> <p>The view ID is provided by <xref href="GUID-3DEA9A17-CB50-3DCD-87AC-0E91B377FB0E.dita"><apiname>TVwsViewId</apiname></xref>. </p> <p><b>Registration</b> </p> <p>Views
+are registered with the View Server. There are functions in <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> to
+do this. Once registered other applications may activate them by specifying
+their view IDs. Applications which do not implement views may still participate
+in the view architecture, though to a lesser degree, by registering themselves
+using their application UID. </p> <p><b>Activation, deactivation &amp; screen
+device change</b> </p> <p>Activation is the process of switching, or linking
+to a view. Again, there are functions in <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> to activate
+and deactivate a specified view. The new view is activated and the old view
+is deactivated. Activation and deactivation events enable to actions to be
+performed by both new and old views. Similarly views need to know when screen
+orientation (portrait to landscape) or size (flip closed to flip open) has
+changed. </p> <p><b>Observation</b> </p> <p>Besides creating events and calling
+framework functions on activation, deactivation and screen device change the
+view architecture also supports three view observer interfaces which are also
+notified when such actions occur, namely <xref href="GUID-916B51B5-44BB-3010-B974-8D5D14D37169.dita"><apiname>MCoeViewObserver</apiname></xref>, <xref href="GUID-994248C5-B9C2-3932-A499-2A6A4E7A552E.dita"><apiname>MCoeViewActivationObserver</apiname></xref> &amp; <xref href="GUID-8D9CBC46-6057-3FDC-906C-35BEBDA00D16.dita"><apiname>MCoeViewDeactivationObserver</apiname></xref>. </p> </section>
+<section><title>See also</title><ul>
+<li><p><xref href="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita">UI Control Framework
+Overview</xref></p></li>
+<li><p><xref href="GUID-1C802DBD-1453-5C69-94D5-FB0229C544D6.dita">Uikon Overview</xref></p></li>
+<li><p><xref href="GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita">Application
+UI</xref> </p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-831F9AA3-0209-53DC-96C4-04157F22870C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-831F9AA3-0209-53DC-96C4-04157F22870C" xml:lang="en"><title>SQL Developer Tips</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95" xml:lang="en"><title>Handling
+the Local Device Name</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Each Bluetooth device has a name for identifying the device to users or
+applications. This document shows you how to get or set device names. </p>
+<section><title>How to get and set the local device name</title> <p>The local
+device name is read and set through the <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref> functions <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>GetHostName()</apiname></xref> and <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>SetHostName()</apiname></xref> respectively. </p> <p><b>Getting the Local Device Name</b> </p> <p>The following code shows how
+to get the local name: </p> <ol id="GUID-B9D75B4C-8184-5E04-A805-422D1D86D1E1">
+<li id="GUID-34A055C7-6A4C-531B-8625-75539FBD6E3B"><p>Connect to the socket
+server </p> <codeblock id="GUID-B398F8BC-F409-5A71-9051-8010FFF543D7" xml:space="preserve">RSocketServ socketServ;
+socketServ.Connect();
+TProtocolDesc pInfo;
+_LIT(KL2Cap, "L2CAP");
+socketServ.FindProtocol(KL2Cap,pInfo);</codeblock> </li>
+<li id="GUID-52E77D28-A2BE-5FB7-A880-E71307832013"><p>Create and initialise
+an <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref> </p> <codeblock id="GUID-F53163E6-49F8-529A-9A9F-7BC76E0BD9F7" xml:space="preserve">RHostResolver hr;
+hr.Open(socketServ,pInfo.iAddrFamily,pInfo.iProtocol);</codeblock> </li>
+<li id="GUID-499255A3-BC66-5BC5-A37A-B883A0E4EE6A"><p>Get the local device
+name </p> <codeblock id="GUID-F880ACBE-5184-5A64-A287-1C7560233D70" xml:space="preserve">THostName name;
+TInt ret=hr.GetHostName(name);</codeblock> </li>
+</ol> <p><b>Setting
+the Local Device Name</b> </p> <p>Setting the device name differs only in
+the final step, where you will use the <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver::SetHostName()</apiname></xref> function. </p> <codeblock id="GUID-091A827B-197A-5672-AFA0-69E329058762" xml:space="preserve">_LIT(KDeviceName,"myDeviceName");
+TInt ret=hr.SetHostName(KDeviceName);</codeblock><note>  <xref href="GUID-4CF02002-FB24-376F-A84E-B26296539386.dita"><apiname>THostName</apiname></xref> is
+a descriptor buffer of a suitable  minimum size.</note> </section>
+<section><title>Where Next?</title> <p>This tutorial set takes you through
+all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul>
+<li id="GUID-CAA9C24D-4A3C-5D03-B6C7-EE21686BF869"><p> <xref href="GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita">Listening
+for Incoming Bluetooth Connections</xref> </p> </li>
+<li id="GUID-674A5D9A-4685-50F2-9FAC-36FA2E02F577"><p> <b>Handling the Local
+Device Name</b> - This document </p> </li>
+<li id="GUID-F3A7D62A-9FC8-5C74-8EF2-3E149FD81345"><p> <xref href="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita">Performing
+Low-level Configuration</xref> </p> </li>
+<li id="GUID-518978F0-6BBD-5A63-936B-8640BBBBFC9A"><p> <xref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita">Debugging
+the Host Controller</xref> </p> </li>
+<li id="GUID-D839475B-9640-5FE6-BD70-94002A0B1D3E"><p> <xref href="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita">Disconnecting
+ACL links</xref> </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-83630B57-D842-4B60-8AF0-D2965251DE29" xml:lang="en"><title>Retrieving
+Channel Properties</title><shortdesc>A sensor channel is associated with properties such as channel
+availability status, data transmission rate, data format and so on. Also,
+each field in the data type supplied by a sensor channel can have its own
+properties. The channel properties can be retrieved using the <apiname>CSensrvChannel::GetPropertyL()</apiname> and <apiname>CSensrvChannel::GetAllPropertiesL()</apiname> functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-91C43F20-A2FA-4A16-AA10-7BE00EC8E4AF">       <p>Before retrieving
+channel properties, you must <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88">open
+the sensor channel</xref>.</p>     </prereq>
+<context id="GUID-E36A1CB4-6973-42CF-8935-A3C5DEE2CE34"><p>A channel property
+is referenced by its property id and an index. The parameters of the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-1E9D960B-23C4-30DF-A184-7E978AC9AC1B"><apiname>CSensrvChannel::GetPropertyL()</apiname></xref> are
+listed with their meanings in the following table.</p><table id="GUID-D8B0C588-8648-4CB7-936D-A3CA70E1A49D">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.44*"/><colspec colname="col2" colwidth="1.56*"/>
+<thead>
+<row>
+<entry>Parameter</entry>
+<entry>Meaning</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>First parameter</entry>
+<entry>specifies the id of the property to retrieve.</entry>
+</row>
+<row>
+<entry>Second parameter</entry>
+<entry>is an index that specifies the property to be retrieved, if there are
+several properties associated with a particular property id.</entry>
+</row>
+<row>
+<entry>Third parameter</entry>
+<entry> is a <parmname>TSensrvProperty</parmname> that is passed by reference
+and populated by <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-1E9D960B-23C4-30DF-A184-7E978AC9AC1B"><apiname>CSensrvChannel::GetPropertyL()</apiname></xref>.</entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>The following list shows the different possible values of the index
+:</p><ul>
+<li><p>When the property id is for a simple property, that is, there is only
+one property item for the id (for example, <parmname>KSensrvPropIdChannelAccuracy</parmname>),
+the second parameter must be specified as <parmname>ESensrvSingleProperty</parmname>.</p></li>
+<li><p>When the given property id has an array of <parmname>TSensrvProperty</parmname> items,
+the index parameter indicates which item in the array to retrieve. One such
+case is when you want to retrieve a property of a particular data field that
+is supplied by the channel. For example, if you want to find out if the X
+axis of the accelerometer is enabled, you must specify <parmname>KSensrvPropIdAxisActive</parmname> as
+the property id, and <parmname>TSensrvAccelerometerAxisData::iAxisX </parmname> as
+the index. For details, see <xref href="GUID-8DCBAA05-9741-48C8-A831-966D37FBC05A.dita">Array
+Properties</xref>.</p></li>
+<li><p>When the given property id has an array of <parmname>TSensrvProperty</parmname> items,
+information about the array can be retrieved by specifying <parmname>ESensrvArrayPropertyInfo</parmname> as
+the index parameter. For example, when a channel can provide data at discrete
+data rates, the information for each data rate is stored in a <parmname>TSensrvProperty</parmname> item.
+You can use <parmname>KSensrvPropIdDataRate</parmname> as the property id
+and <parmname>ESensrvArrayPropertyInfo</parmname> as the index to retrieve
+the property item that contains this information. </p></li>
+</ul></context>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-6-1-3-3">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-4-1-4-1-6-1-3-3-1"><cmd>Create an instance
+of <parmname>TSensrvProperty</parmname>.</cmd>
+<stepxmp><codeblock xml:space="preserve">TSensrvProperty property;</codeblock></stepxmp>
+<info>           <p>Each channel property is encapsulated by the <parmname>TSensrvProperty</parmname> class.
+Therefore, the details of the retrieved property can be accessed using the
+functions of the <parmname>TSensrvProperty</parmname> class.</p>  </info>
+</step>
+<step id="GUID-BB85979A-442C-41AF-B406-C239369C923E"><cmd>Use the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-1E9D960B-23C4-30DF-A184-7E978AC9AC1B"><apiname>CSensrvChannel::GetPropertyL()</apiname></xref> function
+to retrieve the property item for a particular property id. For example, to
+check for the accuracy of a channel, pass the <parmname>KSensrvPropIdChannelAccuracy</parmname> as
+a property id.</cmd>
+<stepxmp><codeblock xml:space="preserve">...
+
+CSensrvChannel* iSensorChannel;
+....
+iSensorChannel-&gt;GetPropertyL( KSensrvPropIdChannelAccuracy,
+                                  KSensrvItemIndexNone,
+                                  property );
+
+....</codeblock></stepxmp>
+<info><note> You can retrieve all the properties associated with a particular
+sensor channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-ABF67AF4-BAC9-3BA3-B558-9AC1B8E0DFDE"><apiname>CSensrvChannel::GetAllPropertiesL()</apiname></xref> function.</note></info>
+</step>
+</steps>
+<postreq id="GUID-459AF9E3-B0EA-4E8F-81AF-726DA3B0E053"><ul>
+<li>End the session with the sensor channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-0B8F50A6-2CA1-316A-82AB-AA026005E810"><apiname>CSensrvChannel::CloseChannel()</apiname></xref> function.</li>
+<li>You can set the required channel properties. For details, see <xref href="GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita">Setting
+Channel Properties</xref>.</li>
+</ul></postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-83676985-070A-5CE9-BF36-D7C56C5025F9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-83676985-070A-5CE9-BF36-D7C56C5025F9" xml:lang="en"><title> Services
+Provided</title><shortdesc>This section provides details on the information that an application
+can access about basic services. The basic services are phone, network and
+call information that are accessed by the applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The telephony API for application allows client applications to access
+information about: </p>
+<ul>
+<li id="GUID-FB929DCD-DB6F-5DAD-8DAE-7151B776E203"><p> <xref href="GUID-83676985-070A-5CE9-BF36-D7C56C5025F9.dita#GUID-83676985-070A-5CE9-BF36-D7C56C5025F9/GUID-D863BBC8-1391-5BCA-A5B8-DB23471A385B">Phone</xref>  </p> </li>
+<li id="GUID-CBA13E00-AE97-5AF5-927D-07EBD22D97E0"><p> <xref href="GUID-83676985-070A-5CE9-BF36-D7C56C5025F9.dita#GUID-83676985-070A-5CE9-BF36-D7C56C5025F9/GUID-B9CD50FF-28BF-5247-885C-710697EBA539">Call</xref>  </p> </li>
+<li id="GUID-547FF098-8F01-5553-BFE0-DB1F5D7E923C"><p> <xref href="GUID-83676985-070A-5CE9-BF36-D7C56C5025F9.dita#GUID-83676985-070A-5CE9-BF36-D7C56C5025F9/GUID-A68352BE-5980-5F66-B04B-C2FFC44FB409">Network</xref>  </p> </li>
+</ul>
+<section id="GUID-D863BBC8-1391-5BCA-A5B8-DB23471A385B"><title>Phone Information</title> <p>The
+phone information available is: </p> <p><b>Device identification </b> </p> <p>The
+device identity provides the details about the manufacturer, device model
+and the serial number. The serial number is the International Mobile Equipment
+Identity (IMEI) which is a unique 15-digit serial number. The serial number
+is unique to the device and not the subscriber. </p> <p><b>Subscriber identification </b> </p> <p>A
+string of up to 15 characters that identifies the subscriber. It is the information
+of the Subscriber Identity Module (SIM) card on the GSM networks and WCDMA
+networks or the Removable User Identity Module (R-UIM) on the CDMA networks. </p> <p><b>Flight
+mode status </b> </p> <p>The phone can be put into a state with the network
+related operations disabled. This state is known as the flight mode. You cannot
+make or receive calls when the flight mode is enabled. The client applications
+cannot access the information about call, line and other supplementary services. </p> <p><b>Battery
+information </b> </p> <p>The client application can access the battery charge
+level and the battery status. The three states of a battery are: </p> <ul>
+<li id="GUID-2E5D8E44-0B52-57EC-9690-F4B3AD846CA0"><p>Powered </p> </li>
+<li id="GUID-04D411ED-A503-53E9-A177-1FAF28578C03"><p>No battery </p> </li>
+<li id="GUID-8A71BBC7-45B4-5204-B986-66AB24AC9E69"><p>Faulty battery </p> </li>
+</ul> <p><b>Battery charger information </b> </p> <p>The client application
+can find out if the charger is connected or not. </p> <p><b>Lock information </b> </p> <p>The
+phones allow the users to lock them to prevent unauthorised access. A code
+must be entered to unlock the phone. The client applications can access the
+lock information. This information does not concern the keypad locks, nor
+the lock that the networks use to prevent a phone from being used on other
+networks. A phone can have up to two locks. The client applications must specify
+the lock to access their information. </p> </section>
+<section id="GUID-B9CD50FF-28BF-5247-885C-710697EBA539"><title>Call Information</title> <p>The
+call information available is: </p> <p><b>Call-in-progress indicator </b> </p> <p>The
+client applications can retrieve information about when a call is in progress
+and the type of call. The calls can be data, voice or fax calls. The client
+applications can also get the information about the status of a call. </p> <p><b>Fax
+line status </b> </p> <p>Status information is available for the fax line
+and the different states include: </p> <ul>
+<li id="GUID-A8FE79DD-9651-5FBD-9CB8-7E80A8D89A3F"><p>idle </p> </li>
+<li id="GUID-B0DC6A12-8016-5EE8-A4DB-75065919F96C"><p>notify an inbound call </p> </li>
+<li id="GUID-F96EE593-E7C0-5519-B36D-BC50F8688844"><p>dialling a number </p> </li>
+<li id="GUID-84567467-1B0D-5365-82A0-3739C434B587"><p>answering an inbound
+call </p> </li>
+<li id="GUID-FA43C558-21DE-5E04-848A-10BE200EA587"><p>call on hold. </p> </li>
+</ul> <p><b>Data line status </b> </p> <p>Status information is available
+for the data line and the different states include: </p> <ul>
+<li id="GUID-AE8EFF6A-DA24-59A7-9BB1-50769EBC0F60"><p>idle </p> </li>
+<li id="GUID-E9F357E7-2420-5F04-B780-2C880D69FDC6"><p>notify an inbound call </p> </li>
+<li id="GUID-5E711492-C857-58F8-8D3D-4BF32486EAA4"><p>dialling a number </p> </li>
+<li id="GUID-EFD4A32A-9460-5403-8404-79720AB5C2E7"><p>answering an inbound
+call </p> </li>
+<li id="GUID-2783707D-D151-5F6B-81CA-07907ECFC545"><p>call on hold. </p> </li>
+</ul> <p><b>Voice call status </b> </p> <p>Status information is available
+for the voice line and the different states include: </p> <ul>
+<li id="GUID-E6E7F877-EFE7-54BD-A95C-301A88C606F7"><p>idle </p> </li>
+<li id="GUID-8C5DE194-8CE1-5E7B-B226-CD497CCE67F8"><p>notify an inbound call </p> </li>
+<li id="GUID-D671EBE6-C8A8-50B0-B223-D2DA568BB59B"><p>dialling a number </p> </li>
+<li id="GUID-34E12E0B-0417-5418-B8BC-4272F6AD2187"><p>answering an inbound
+call </p> </li>
+<li id="GUID-7D9C89BE-CF40-5386-9CCA-D3600A3653B9"><p>call on hold. </p> </li>
+</ul> <p>The client applications can get detailed voice call information such
+as: </p> <ul>
+<li id="GUID-6DD07BDD-04D5-54BA-B8B0-7928D0F70E22"><p>call status </p> </li>
+<li id="GUID-B70A7958-DFC1-52DA-B07D-3B704058489E"><p>date and time that the
+call started </p> </li>
+<li id="GUID-3D3FC0AA-1319-536B-80CA-FAEA36B517A4"><p>current duration of
+the call in seconds </p> </li>
+<li id="GUID-40890DAA-1F43-5B52-A97C-2D9134885A04"><p>dialled phone number </p> <p>This
+is only valid for outgoing calls. It includes any DTMF tones that have been
+sent. </p> </li>
+<li id="GUID-33E92A09-E559-5504-90E9-1A5098F50D3C"><p>ciphering status </p> <p>This
+is only valid on GSM and WCDMA networks </p> </li>
+<li id="GUID-A7BB8A56-1C6A-5647-B2F8-75941A181869"><p>Call ID </p> </li>
+</ul> <p><b>Remote party information </b> </p> <p>The client applications
+can retrieve the information of the remote party when details are available.
+The information is available for the voice line. It is not available for the
+fax or data lines. When the voice line is making more than one call, for example
+one call is active and another is on hold, then you can read this information
+for individual calls. You do not need to have dialled or answered the call
+in order to read this information. However, the remote party may not allow
+you to know this information. </p> <p>The remote party information available
+is: </p> <ul>
+<li id="GUID-C24ED61D-D2C1-5038-84E4-F4F0AD65D4C9"><p>remote identity status </p> </li>
+<li id="GUID-632BED79-5FA6-5FA5-B49B-32A9899A41F8"><p>remote party number </p> </li>
+<li id="GUID-9923B9FC-EF8D-5891-B89C-D0308444B8EA"><p>remote party name </p> </li>
+<li id="GUID-76C99712-2DF3-5B43-B247-A8EF144543D2"><p>call direction. </p> </li>
+</ul> <p><b>Dynamic call capabilities </b> </p> <p>The client application
+can get the information about call hold, call resume and all swap functions
+of the device. </p> </section>
+<section id="GUID-A68352BE-5980-5F66-B04B-C2FFC44FB409"><title>Network Information</title> <p><b>Network
+signal indicator </b> </p><p>The client applications can get the notification
+of the network signal availability. The network information available is: </p><p> <b>Signal
+strength</b> </p><p>Signal strength is measured in dBm. For example, "-51"
+is a signal strength of -51dBm. A value of zero indicates that the signal
+strength cannot be measured. The signal bars represent number of bars to display
+to the user. A value of '-1' indicates that the number of bars is not available.</p><p><b>Registration
+status  </b></p><p>The registration status indicates the service that the
+current network provides to the phone. For example, No Service, Emergency
+Only, Busy and Roaming.  </p><p><b>Current network information  </b></p><p>The
+information available for all types of network include: </p><ul>
+<li><p>network mode </p></li>
+<li><p>mobile country code </p></li>
+<li><p>network identity  </p></li>
+<li><p>network display tag  </p></li>
+</ul> <p>The network information available for GSM and WCDMA networks include:
+ </p><ul>
+<li><p>network short name </p></li>
+<li><p>network long name </p></li>
+<li><p>access technology</p></li>
+<li><p> location area code  </p></li>
+<li><p>cell ID of the base station  </p></li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-520F620F-03CE-5C4E-9783-745D2740F648.dita"><linktext>What Supplementary
+Services are Provided</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-837333EB-8BD1-551A-BFB4-05BE2056E2DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-837333EB-8BD1-551A-BFB4-05BE2056E2DA"><title>Introduction to formatting</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Editable text and plain text have content, but no formatting. This means they can be stored and manipulated, but cannot be viewed, because viewing needs format information — obviously, it needs a font and, more subtly, it also needs paragraph alignment, colour etc.</p> <p>There are two types of format: character and paragraph formats</p> <ul><li id="GUID-96460816-4F52-5FCC-86F6-EB9EC80C8AE8"><p>character format information includes font, colour, bold, italic, underline. Each character has an associated <keyword>effective format</keyword> which consists of any format attributes which have been applied directly to that character or applied via a character style, or inherited from the formatting of preceding text. </p> <p>The <xref href="GUID-3518B92C-D1BD-36D1-B447-728A1052292F.dita"><apiname>TCharFormat</apiname></xref> class contains all information necessary to specify a character format.</p> </li> <li id="GUID-2021FA70-3C2E-525E-B925-C1D02BE472A0"><p>paragraph format information includes left, right and hanging indent, space before, between and after lines, tabs, shading and borders and bullet points. Every paragraph has an <keyword>effective format</keyword>. This consists of the format attributes which have either been explicitly applied to that paragraph or applied via a paragraph style, or inherited from the formatting of preceding text.</p> </li> <li id="GUID-2EB43E75-ADB0-5ECE-B94B-2299A0BF70F7"><p>The <xref href="GUID-2F795E02-0704-39AE-8EC6-06CB5D5D670F.dita"><apiname>CParaFormat</apiname></xref> class contains all information necessary to specify a paragraph format.</p> <p>Paragraph format is a <codeph>C</codeph> class, rather than a <codeph>T</codeph>, because the object owns potentially unbounded arrays, such as the tab stops. Also, the representation of border specification is optimised to use minimum space if no borders are specified. So the paragraph format class needs a destructor, and it is therefore a <codeph>C</codeph>.</p> </li> </ul> <p>In order to economise on space, format specifications are built up in format layers <xref href="GUID-C5A6B3D4-1BDE-35B4-AC6B-DF517A4D4147.dita"><apiname>CParaFormatLayer</apiname></xref> and <xref href="GUID-7BEFAAD5-15C3-35A0-BDEF-BC56380D6CE5.dita"><apiname>CCharFormatLayer</apiname></xref>. Each layer specifies a number of attributes and their values. Functions are provided to manipulate and interrogate the attributes and values in a layer, and to find out the effective format from all the layers applying to a region of the text object. Format mask classes <xref href="GUID-C4220B5C-1037-342E-A409-B62F0429E7F2.dita"><apiname>TParaFormatMask</apiname></xref> and <xref href="GUID-4FD3211A-DFF8-3487-8DFF-5C7F2EF3997D.dita"><apiname>TCharFormatMask</apiname></xref> play a key role in specifying which attributes are involved in these operations.</p> <p>For global text, the same formatting applies to the entire text object. A character and paragraph format layer are specified for the global text object's constructor, and are used throughout the lifetime of the object. The effective format is taken by layering these over a default format which specifies values for all attributes.</p> <p>For rich text, format layers may be overlaid, and may apply to any region of the text object. By this means, formatting for each character and paragraph may be controlled individually.</p> <p>A paragraph style is a named format, represented by the <codeph>CParagraphStyle</codeph> class, which may be applied to a paragraph. A style may either replace all attributes already set, or change only the attributes specified in the layer. The paragraph style is a paragraph format layer with a name and, also, a character format layer which sets character formatting in the paragraph.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-837EF355-9154-506B-AE4F-4290FC9DBDC9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-837EF355-9154-506B-AE4F-4290FC9DBDC9" xml:lang="en"><title>Using
+CAsyncOneShot</title><shortdesc>This document descrbes the use of the <codeph>CAsyncOneShot</codeph> class
+in scheduling.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An instance of a class derived from the <xref href="GUID-619AF4A9-4DAF-3FA4-A704-717DB30B5389.dita"><apiname>CAsyncOneShot</apiname></xref> class
+can be used to perform one-off processing when no higher-priority active objects
+are ready to run.</p>
+<p>While it has many uses, a common usage is to use it to unload a library.
+A typical <codeph>CAsyncOneShot</codeph> derived class is defined as:</p>
+<codeblock id="GUID-6C063D5F-15FD-575E-8184-BED08FEE4BAA" xml:space="preserve">class CLibUnloader : public CAsyncOneShot
+    {
+public:
+    static CLibUnloader* NewL(RLibrary&amp; aLibrary);
+    inline void Unload();
+protected:
+    CLibUnloader();
+    ~CLibUnloader();
+    virtual void RunL();
+private:
+    RLibrary iLib;
+    };</codeblock>
+<p>The static <codeph>NewL()</codeph> function takes a reference to an existing
+open <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita"><apiname>RLibrary</apiname></xref> object and creates a new <codeph>CLibUnloader</codeph> object:</p>
+<codeblock id="GUID-2D743CF1-106E-5051-83E7-FFBD9F55148E" xml:space="preserve">CLibUnloader* CLibUnloader::NewL(RLibrary&amp; aLibrary)
+    {
+    CLibUnloader* u=new(ELeave)CLibUnloader;
+    u-&gt;iLib=aLibrary;
+    return u;
+    }</codeblock>
+<p>The remaining functions are implemented as follows:</p>
+<ul>
+<li id="GUID-CFE3C110-43B5-5E04-AACF-A6389EE374B5"><p>Constructor sets a low
+active object priority</p> <codeblock id="GUID-2961B2D0-E615-5529-9248-7389D3DE4E3E" xml:space="preserve">CLibUnloader::CLibUnloader()
+     :CAsyncOneShot(E_a_very_low_priority)
+     {}</codeblock> </li>
+<li id="GUID-6FCA9BDB-7D15-5AB6-B776-40BB18E17052"><p>Calling <codeph>Unload()</codeph> activates
+the active object; the active scheduler will call its <codeph>RunL()</codeph> function
+as soon as there are no other higher priority active objects ready to run.</p> <codeblock id="GUID-95E3596B-FC18-524E-B9EC-8F04702715A6" xml:space="preserve">void CLibUnloader::Unload()
+    {
+    Call();
+    }</codeblock> </li>
+<li id="GUID-691CD813-6A05-5BCA-8B90-FFDEFA3623E6"><p>The active scheduler
+calls <codeph>RunL()</codeph>, which, in this example, simply deletes the
+active object. This causes the destructor to be called which closes the library.
+It also has the effect of removing the active object from the active scheduler
+through the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> base class destructor. </p> <codeblock id="GUID-366FF87F-D994-5ED9-9DE8-0A195F4745D9" xml:space="preserve">void CLibUnloader::RunL()
+    {
+    delete this;
+    }</codeblock> <codeblock id="GUID-DBBF0C78-A941-5B62-A89B-698EA5CFB972" xml:space="preserve">CLibUnloader::~CLibUnloader()
+    {
+    Cancel();
+    iLib.Close();
+    }</codeblock> </li>
+</ul>
+<p>In other uses of <xref href="GUID-619AF4A9-4DAF-3FA4-A704-717DB30B5389.dita"><apiname>CAsyncOneShot</apiname></xref>, <codeph>RunL()</codeph> could
+do more complex processing, and indeed could re-queue the active object with
+another call to <xref href="GUID-619AF4A9-4DAF-3FA4-A704-717DB30B5389.dita#GUID-619AF4A9-4DAF-3FA4-A704-717DB30B5389/GUID-A7955FDB-B030-392F-B5D8-13F7EEDF4337"><apiname>CAsyncOneShot::Call()</apiname></xref>. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8390D842-B8A3-5042-952D-73240DB30D6B" xml:lang="en"><title>Message
+Server and Store Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of the functionality and the architecture
+of Message Server and Store. </p>
+<section><title>Purpose</title> <p>The following services that are provided
+by this component can be used by the client application: </p> <ul>
+<li id="GUID-67C56ED5-6996-585F-A6EB-DB64E3956DF8"><p><xref href="GUID-5CFA3F21-3E42-5B53-8EC1-BC0F7F0E8136.dita">Storing
+Messages</xref>  </p> </li>
+<li id="GUID-452071CE-E72F-5BE7-AF45-E4EA1C085E18"><p><xref href="GUID-4CD6C5CC-A91B-56BE-825F-5B10B63627DA.dita"> Handling
+Client Requests</xref>  </p> </li>
+<li id="GUID-F4732AD3-EB59-52E5-B3EF-E8C1D8B527E2"><p><xref href="GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita">Caching</xref> </p> </li>
+<li id="GUID-89ED7AA5-5DBB-5D7D-AE80-739813964183"><p><xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita"> Searching
+and Sorting Messages</xref>  </p> </li>
+</ul> </section>
+<section><title>Architecture</title> <p>Message type-dependent operations,
+such as address handling, are called by client applications using client MTMs
+and UI MTMs. These MTMs then access the appropriate Message Store and alter
+it as required. </p> <p>The following figure shows the logical structure of
+the Message Server. Dashed boxes indicate components that can be developed
+by third-parties. </p> <fig id="GUID-F469ED0A-E43F-5260-B86E-3EFE3CBA0DBB">
+<title>              Logical structure of Messaging Middleware architecture
+           </title>
+<image href="GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e253000_href.png" placement="inline"/>
+</fig><note> No lower-level communication components are shown, as the architecture
+is designed to be independent of any particular communication protocol. Instead,
+communication libraries are accessed as needed by Server MTMs. For example,
+an SMTP MTM would use TCP/IP, while the SMS MTM would use the Telephony Server
+(ETel).</note> <dl>
+<dlentry>
+<dt>Application/App UI</dt>
+<dd><p>This represents a message client application. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>User Interface MTM, Client-side MTM, UI Data MTM, Server-side MTM Bases</dt>
+<dd><p>These are base classes required for implementing protocol-specific
+MTM components. User Interface and UI Data MTMs handle user interface functionality
+and resources. Client-side MTMs provide message data handling functions. Server-side
+MTMs provide message transport functions. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Concrete User Interface MTM, Concrete Client-side MTM, Concrete UI Data
+MTM, Concrete Server-side MTM</dt>
+<dd><p>These represent instances of MTM components written to implement a
+particular messaging protocol. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Message Server</dt>
+<dd><p>The Message Server handles all requests to access or manipulate message
+data. Where necessary, it passes requests to the protocol-specific message
+transport components, the Server-side MTMs. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Session</dt>
+<dd><p>Sessions allow client-side components to issue requests to the Message
+Server. There are a number of classes provided to clients that allow message
+entries to be manipulated. </p> </dd>
+</dlentry>
+</dl> <p>The <filepath>msgs.dll</filepath> library provides a client-side
+session class called <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref> . Client applications
+typically create an instance of this class on start-up. Instances of Client
+MTMs, User Interface (UI) MTMs and high-level client library classes maintain
+a reference to the client application’s session object, to make requests if
+needed. </p> <p>Message client applications, Client MTMs and UI MTMs manipulate
+entries through <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> and <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> classes.
+The entry currently being operated on is called the context. A client application
+can begin by setting the context to the root entry. By finding the children
+of this initial entry, and then their children in turn, any entry can be found. </p> <p>Operations
+such as creating, deleting, sorting and accessing body text, or changing an
+index entry, which are independent of the message-type, are requested by client
+applications and MTMs through <xref href="GUID-BC3D2A73-3E8C-3D0C-8E18-5E35AA431D99.dita"><apiname>CMvsEntry</apiname></xref> or <xref href="GUID-681B56F3-B3A2-3147-B25A-FD69451F4A1D.dita"><apiname>CMsvServerEntry</apiname></xref>.
+The Message Server may either perform such operations itself or delegate them
+to a server MTM. </p> </section>
+<section><title>Description</title> <p>The Message Server is the core component
+in the Messaging Middleware module. It accepts asynchronous requests from
+clients through a kernel-maintained session. It performs the following functions: </p> <ul>
+<li id="GUID-55C60AD4-DCFD-5C31-AA33-1D081FFE2A47"><p> <b>Controls access
+to message data</b>  </p> <p>In response to client requests, the Message Server
+delegates temporary, exclusive access to message data, so that more than one
+client cannot edit the same message at the same time. It is the responsibility
+of Message Server to keep the message data in workable order, and cope with
+events such as failure recovery. </p> </li>
+<li id="GUID-BA07A6D4-194D-5908-9139-1A86F0D0C9E3"><p> <b>Delegates requests
+to Server MTMs</b>  </p> <p>Message Server must identify requests, such as
+sending a message that requires protocol-specific functionality, and load
+the appropriate Server MTM. </p> </li>
+</ul> <p id="GUID-8E01ADD0-A706-54B2-8159-E65C33274C30"><b>Message Store</b> </p> <p>Message
+Server provides persistent storage of messages and messaging account settings
+by providing a Message Store. The Message Store contains message data in a
+variable number of entries in a tree view, each of which is referenced by
+a unique identifier. This concept is known as a <xref href="GUID-D099551B-6E99-5210-B44A-693012A29DD1.dita">dictionary
+file store</xref>. Each entry in the tree can represent an email account,
+folder of messages, message part and so on. </p> <p>Message Store is secured
+in a protected data-caged area of Message Server. Message Server allows multiple
+read-only and a single read-write access to a message in the Message Store
+at given time. It also accepts copy and delete requests from clients trusted
+with <codeph>WriteUserData</codeph> capability. When a copy or delete is requested,
+the message server first flags itself as unavailable and then locks the files
+before attempting to process them. </p> <p>Message settings are stored in
+the Central Repository and attachment information is stored in the Message
+Store. MTMs can create additional streams in the message store to hold MTM-specific
+message data. Usually, at least one stream is devoted to non-generic header
+information such as recipient information. </p> <p>When Message Server starts,
+the Message Store is created unless there is already a Message Store present.
+Message Server initially creates the Message Store with just a root entry
+and then creates standard folders defined in the <filepath>msgs.rsc</filepath> resource
+file. Finally the Message Server runs <filepath>mailinit.exe</filepath> to
+customise of the Message Store. The behaviour of <filepath>mailinit.exe</filepath> is
+defined by the UI family of the device, such as Series 60 or UIQ. However,
+the typical behaviour is to load each of the UI MTMs and allow each to perform
+any message type specific initialisation. For example, the SMS plug-in typically
+creates a default service entry. </p> </section>
+<section><title>API summary</title> <p>The storage abstractions through which
+client applications access the various types of storage are key to the Messaging
+Middleware module. </p> <ul>
+<li id="GUID-5F7B2622-1FCB-57AB-B98B-32BED95E4CA5"><p>The <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> API
+access and acts on a particular Message Server entry. The main functions of
+this API are to provide means to: </p> <ul>
+<li id="GUID-A14A770E-2425-59C5-BCEC-A8C209B246CE"><p>access the various types
+of storage associated with an entry </p> </li>
+<li id="GUID-991A0D61-A67C-5BA0-B943-BFF5D60839B2"><p>discover and access
+other entries that the entry owns (its children) </p> </li>
+</ul> </li>
+<li id="GUID-40BDE827-355F-54E5-BFB3-DEF160FC8B4B"><p> <xref href="GUID-681B56F3-B3A2-3147-B25A-FD69451F4A1D.dita"><apiname>CMsvServerEntry</apiname></xref> is
+similar to <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref>, but used only by Server MTMs. </p> </li>
+<li id="GUID-54D77E17-1B5E-529F-916B-A628DA022901"><p> <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> encapsulates
+an index entry the Message Server index. </p> </li>
+<li id="GUID-DDF9FB6B-02EB-5976-8072-95FCD25FED49"><p> <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> encapsulates
+an entry’s <xref href="GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita#GUID-8390D842-B8A3-5042-952D-73240DB30D6B/GUID-8E01ADD0-A706-54B2-8159-E65C33274C30">Message
+Store</xref>. </p> </li>
+<li id="GUID-A17D856C-EE8C-5339-9EE8-108D8AE1229F"><p> <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> class
+is a pure virtual interface class that defines the APIs to be used for attachment
+management in the Messaging Framework. </p> </li>
+</ul> </section>
+<section><title>Typical uses</title> <ul>
+<li id="GUID-7669F08C-0D4A-5DB1-A965-EC6178B82568"><p>Configuring the Message
+Server ans Store </p> </li>
+<li id="GUID-B915A682-265E-58B9-A66A-DE9194685952"><p>Writing MTMs </p> </li>
+<li id="GUID-3DB37ED4-44D6-56EE-B8C0-D5BFD31567E4"><p>Searching and sorting
+messages </p> </li>
+<li id="GUID-7E268EA1-922D-5657-885A-298E29135603"><p>Processing emails in
+chunks </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita"><linktext>Messaging
+Framework</linktext></link>
+<link href="GUID-44CF5471-564E-5790-935B-51193A4978D6.dita"><linktext>Message Server
+and Store Concepts</linktext></link>
+<link href="GUID-DD27A452-8B0F-5C6D-A2E6-FC21145468B6.dita"><linktext>Message Server
+and Store Tutorials</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-83A4D862-368E-5DCC-998E-90144BE18A22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-83A4D862-368E-5DCC-998E-90144BE18A22"><title>How to Override Default Authentication Handling</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>SIP provides a feature to the SIP client to handle authentication handling for services such as registration and session establishment. By default, this authentication challenge handling is handled by the SIP server using the digest mechanism. This mechanism is used by profile plug-ins that implement nondefault SIP behaviour which is also known as extensible Service Provider (xSP). </p> <p>These components are used when a SIP client handles authentication challenges independently. When an authentication problem is reported use <xref href="GUID-5ACD0BA9-66C7-31E8-844E-B39AE8691B2A.dita"><apiname>CSIPAuthorizationHeader</apiname></xref> and <xref href="GUID-3689FC15-B236-3B16-BAA5-70FF873DF3F1.dita"><apiname>CSIPProxyAuthorizationHeader</apiname></xref> objects to manipulate the registration or session initiation request headers. Then re-register a profile or reinitiate a session using the updated headers. </p> <p>To enable a client to override default authentication handling mechanisms, it must inform the SIP server by disabling the built-in security mechanism of the SIP using the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita#GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B/GUID-FA3D6B89-4B41-3A56-85FB-06168D0B7B7B"><apiname>CSIP::SetSecurityHandlingL()</apiname></xref> function. The client uses <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita#GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B/GUID-0A3DB5AB-60D3-3756-B9DD-85F2B466E892"><apiname>CSIP::IsSecurityHandlingEnabled()</apiname></xref> function to determine what is handling the authentication challenges. This function returns <codeph>ETrue</codeph> if the built-in security mechanism of the SIP is used. </p> <p>When a SIP client handles authentication challenges independently, it uses <xref href="GUID-5ACD0BA9-66C7-31E8-844E-B39AE8691B2A.dita"><apiname>CSIPAuthorizationHeader</apiname></xref> and <xref href="GUID-3689FC15-B236-3B16-BAA5-70FF873DF3F1.dita"><apiname>CSIPProxyAuthorizationHeader</apiname></xref> objects to manipulate the registration or session initiation request headers when an authentication problem is reported. Re-registration of a profile or reinitiating a session is done using the updated headers. </p> <p>In the following illustration the client handles authentication challenges related to the profile registration. All authentication errors are then forwarded to the xSP profile agent plug-in. When an error is reported to the plug-in, it runs a proprietary authentication procedure and tries to re-register the profile. </p> <p>The following illustration shows the call flow of handling authentication challenges while registering a SIP profile: </p> <fig id="GUID-5A8E6082-8DD1-5465-AC32-8D34F45C11FF"><title>
+          Call flow for handling 401 challenges using xSP profile agent plug-in 
+        </title> <image href="GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e315036_href.png" placement="inline"/></fig> <p>In the following illustration the client handles authentication challenges related to the session initiation. All the authentication errors are then forwarded to the xSP provider. When an error is reported to the provider, it runs a proprietary authentication procedure and tries to reinitiate the session. </p> <p>The following illustration shows the call flow of handling authentication challenges while establishing a session: </p> <fig id="GUID-03AEF001-D35A-5DA8-842D-5B20451F16ED"><title>
+          Call flow for handling 401 challenges using xSP provider 
+        </title> <image href="GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e315048_href.png" placement="inline"/></fig> <section><title>See also</title> <p> <xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita">How to use the SIP Client API</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08"><title>What are tables</title><shortdesc>This topic describes the structure of a table. A table is an item that can be stored in the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>A table is a set of records. All records in a table are the same type. A table is also a container and an element. </p> <p>There are two types of table: </p> <ul><li id="GUID-C7ECF6E7-7011-5C3C-892C-CD8A11258309"><p>a table that has records defined at system compile time - these records have named fields and are defined by Symbian OS. </p> </li> <li id="GUID-D7BCD0AA-ECCC-500C-991A-1484F4970A2A"><p>a table that consists of records defined at run time - these records are user defined records - they are not known to Symbian OS when Symbian OS is built. </p> </li> </ul> <section><title>Tables that have records defined at system compile
+          time</title> <p>A table that has records defined at system compile time is represented by the templated class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> <codeph>&lt;T&gt;</codeph>. The template parameter defines the record type. The template parameter is a Symbian OS defined record. </p> <p>You create a table object on the heap. You use the <codeph>new
+          (Eleave)</codeph> construction to create this object. </p> <fig id="GUID-6B7087D6-BA28-578D-8BF8-83FFC9486FB0"><image href="GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e66504_href.png" placement="inline"/></fig> <p>The CommsDat API implements the table as an array of records and uses <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>RPointerArray</apiname></xref> <codeph>&lt;T&gt;</codeph> as the array. The CommsDat API implements <codeph>RPointerArray&lt;T&gt;</codeph> in the base class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSetBase</apiname></xref>, because this behaviour is common to all tables. Tools and applications can access the array and can use the sort behaviour provided by <codeph>RPointerArray&lt;T&gt;</codeph> to sort records. </p> </section> <section><title>Tables that have user defined records</title> <p>A table that has user defined records is represented by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBGenericRecord</apiname></xref>. The class has the behaviour that allows it to represent a record and a set of records. Internally, the class has an array that can contain the records. </p> <p>You use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CCDRecordBase::RecordFactoryL()</apiname></xref> factory function to create a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBGenericRecord</apiname></xref> object. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-83E4F989-0B73-5E83-8547-AB3070492CBF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-83E4F989-0B73-5E83-8547-AB3070492CBF" xml:lang="en"><title>What
+is the Comms Database?</title><shortdesc>The Comms Database contains the information necessary to configure
+components in the comms stack. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The Comms Database has a set of parameters used
+to configure communications on Symbian OS. The information stored in the Comms
+Database is used to configure components in the comms stack. Information such
+as connection preferences, account settings and some of the linkage between
+components can be set in the comms stack. The configuration data is stored
+in records in database tables. The data also has data schema to define the
+tables. For more information and a full list of the settings in the Comms Database,
+see the <xref href="GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita">Reference</xref></p><p>The
+Comms Database is configured in one of the following ways: </p> <ul>
+<li id="GUID-3CFE8D23-F087-54D1-A6F3-83EDD0510609"><p>It is compiled from
+a definition file into a binary file to ship in the ROM of a device. For more
+information about how to compile the default version of the database see <xref href="GUID-00696F18-F1C8-5810-A9F9-E7215CA451A4.dita">Configuring comms database
+using CED and CEDDUMP</xref>. </p> </li>
+<li id="GUID-9FACDEE5-5DD7-5118-9C50-84857A379083"><p>It is modified from
+the original ROM version via runtime changes made through the Comms Database
+(CommsDat) API. For more information about the CommsDat API, see the <xref href="GUID-A19A1F43-E42B-5FC2-AE58-A7BC67B6733A.dita">Migrating from CommDb to
+the CommsDat API</xref>. </p> </li>
+</ul> <p>For more information about the Comms Database, see <xref href="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita">Comms
+Database</xref>. </p> </context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8411E1C9-C6CC-5B0A-BEBA-74D0B8AABF35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8411E1C9-C6CC-5B0A-BEBA-74D0B8AABF35" xml:lang="en"><title>Bluetooth Client Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p id="GUID-9F98AA85-A84E-57DB-8ABC-57D2FC40C7FB"> This index contains links to API overviews and guide documentation related to the Bluetooth User component. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-842D8124-554F-5D89-9E20-8B48EA539D2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-842D8124-554F-5D89-9E20-8B48EA539D2F" xml:lang="en"><title>Video HAI Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Video HAI component provides facility for the hardware abstraction layer to play and record video applications.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-842D8557-076B-4A6E-B823-81164368FD86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-842D8557-076B-4A6E-B823-81164368FD86" xml:lang="en"><title>Disabling
+and enabling feedback</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Disabling and enabling feedback for your application</title><p>If
+you need to disable tactile feedback for any reason (and then possibly re-enable
+it later), use the function <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#68dc5cb09c94b8c42e50e2043249b4c4" format="application/java-archive"><codeph>SetFeedbackEnabledForThisApp</codeph></xref>. </p><p>You can also
+use an <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#f79365f3d12d54496715be253759dec6" format="application/java-archive">overloaded
+version</xref> of the function for disabling only audio or vibration based
+feedback.</p><p>Feedback may need to be disabled for example during video
+recording in camera applications, because otherwise device vibration sounds
+may be recorded along the video clip.</p><note><p>You can and are recommended
+to use the API normally for area registry updates even when feedback is disabled.
+This way feedback can be turned on successfully even if there was a layout
+or view change while feedback was disabled. </p><p>The only exceptions to
+this are those applications which will never enable the feedback again (for
+example, in some games you might do this if you don’t want feedback, or use
+the device vibration for effects in your game).</p></note><p>Any application
+can only disable the feedback for itself, i.e. this API provides no means
+for globally disabling feedback. </p><p>The user can still disable all the
+feedback by changing device feedback settings. Moreover, feedback can be globally
+disabled by the feedback system for e.g. during ongoing telephone calls (this
+depends on the device configuration).</p></section>
+<section><title>Disabling and enabling feedback for a control</title><p>Use
+the funtion <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#3430455447f3294fde61a91c545c7847" format="application/java-archive"><codeph>EnableFeedbackForControl</codeph></xref> to disable and enable feedback for a control.</p><p>You
+can also use an <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#087da56921ef7f5deca103ad568efa8d" format="application/java-archive">overloaded
+version</xref> of this function to disable or enable only audio or vibration
+based feedback.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-843B3C4E-153D-5673-95EA-88322D689297.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-843B3C4E-153D-5673-95EA-88322D689297"><title>File names</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The file server presents a DOS-like file system with long file names. For compatibility with traditional DOS filenames, an extension is recognised on names with appropriate formats. </p> <p>When creating a file or directory note the following restrictions which apply to the path and its components. </p> <ul><li id="GUID-59880AE6-D5E4-5D6B-91AC-22134438D44F"><p>The total length of the path including drive, path, name and extension, must not exceed 256 characters. </p> </li> <li id="GUID-F5DDBB15-3AC5-534C-8401-8C5B19D71963"><p>Wildcards cannot be used in any path component including the filename and extension, although some higher level classes allow the use of wildcard characters in the filename and extension. These classes are covered later in this guide. </p> </li> <li id="GUID-29CE26E0-ADE6-5C35-AF3C-9E9475D7D95D"><p>Two consecutive backslashes are not allowed in the path. </p> </li> <li id="GUID-64D83F1D-D2D3-555F-AA09-E88E53C85D14"><p>The following characters must not be included anywhere in the path (all other characters are acceptable) <filepath>&lt;</filepath>  <filepath>&gt;</filepath> <filepath>"</filepath>  <filepath>/</filepath>  <filepath>|</filepath> </p> </li> <li id="GUID-FB41B42D-61A0-5B63-AC0C-7419B22DDE8C"><p>A <filepath>:</filepath> (colon) may only be included immediately after the drive. </p> </li> <li id="GUID-34B762BC-BA07-5292-A974-00C4DC65271E"><p>The path components are separated by <filepath>\</filepath> backslashes, and a final backslash must be used to indicate that a name is a path. </p> </li> <li id="GUID-97825981-208E-5946-8F83-F8EB2EA4A4EE"><p>Long filenames are supported, so a path or filename may have any number of full stops in it, with the exception that following the final backslash (the filename and extension), the space characters and names "<filepath>.</filepath> " and "<filepath>..</filepath> " are not permitted as path components. </p> </li> <li id="GUID-2EB050AC-652C-55C1-AE3F-1C3FC775BF20"><p>Spaces between the drive, if specified, and the first directory in the path are illegal, although there may be spaces between other path components, for instance between directories. </p> </li> </ul> <p>The file server does not use <filepath>.</filepath> and <filepath>..</filepath> to mean current directory and parent directory respectively. If required, these must be implemented by higher-level code. The <xref href="GUID-F673F02A-AC5B-3D0F-8D14-21E6221E5015.dita"><apiname>TParseBase</apiname></xref> class provides filename parsing and manipulation functions. </p> <p>The function <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-91C2BEAC-2210-3CBA-A954-A5C52FFA1947"><apiname>RFs::IsValidName()</apiname></xref> tells you whether a path name is valid or not. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-844C335C-E8FD-5DF8-8E05-7DB1DF4C3360.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-844C335C-E8FD-5DF8-8E05-7DB1DF4C3360" xml:lang="en"><title>Call Tutorials</title><shortdesc>This section provides the tutorials related to calls. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8451102A-8E68-5C86-9E40-D53183E32261"><title>Bluetooth SDP Overview</title><shortdesc>The Bluetooth Service Discovery Protocol (SDP) component enables you to register services to the SDP database and query the database for available services. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Symbian OS Bluetooth Service Discovery Protocol (SDP) component provides APIs that allow you to register services to the SDP database or query the database for available services. This functionality is provided by the two SDP APIs: </p> <ul><li id="GUID-F5D35BDC-9FEC-5C29-9DB0-BAF1BF8F44B8"><p><xref href="GUID-756D831F-F302-594C-8116-144358DD8442.dita">SDP Database</xref>  </p> </li> <li id="GUID-A153C7B6-0B8C-5DA6-B765-8B60C1D39227"><p><xref href="GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita">SDP Agent</xref>  </p> </li> </ul> <p> </p> </section> <section><title>Required background</title> <p>You need to be familiar with the following: </p> <ul><li id="GUID-26920C05-C124-5276-A73B-952078316D88"><p><xref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita">Symbian OS Bluetooth User</xref>  </p> </li> <li id="GUID-89FB4CCE-8A1A-5ACA-AE34-57EA9DDFE6B5"><p><xref href="GUID-7640F878-2D99-52C8-ACBE-8B77A714E081.dita">Symbian OS Bluetooth Protocols</xref>  </p> </li> <li id="GUID-1623B937-2D45-5092-8A66-416FF2E930C2"><p>The Bluetooth Service Discovery Protocol specification, Volume 3 Part C of the Specification of the Bluetooth System, available at <xref scope="external" href="http://www.bluetooth.com/">www.bluetooth.com/</xref>  </p> </li> <li id="GUID-DDA0875F-0256-5454-907A-D52B33AAA613"><p>UUID Values for SDP services. </p> </li> </ul> <p> </p> </section> <section><title>Key concepts and terms</title> <p>The following terms are used frequently throughout the SDP Overviews and Tutorials. </p> <dl><dlentry><dt>Service Discovery Database</dt> <dd><p>This is the database that stores information about available services. If you are writing an application to advertise a specific service you will use the SDP Database APIs to register your service and if you are writing an application that needs to search for available services on other devices you will use the SDP Agent APIs. </p> </dd> </dlentry> <dlentry><dt>Service Record</dt> <dd><p>A data record for an individual service in the service discovery database. </p> </dd> </dlentry> <dlentry><dt>Service Record Attribute</dt> <dd><p>An attribute of the service that is stored in the service record. We will discuss service record attributes in greater detail in "<xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP Service records and attributes</xref> ". </p> </dd> </dlentry> <dlentry><dt>UUID</dt> <dd><p>Universally Unique Identifier - See the Service Discovery Protocol Assigned Numbers listing from the Bluetooth SIG for a current list of default UUIDs. </p> </dd> </dlentry> <dlentry><dt>DEA</dt> <dd><p>Data element alternative - A sequence of data elements of which one must be selected. </p> </dd> </dlentry> <dlentry><dt>DES</dt> <dd><p>Data element sequence - A sequence of data elements. </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>A service wishing to advertise on the SDP server must create a session with the SDP server using <xref href="GUID-0879B4D7-A6FA-382F-A124-0234BA89D33D.dita"><apiname>RSdp</apiname></xref>. A subsession must be created through <xref href="GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC.dita"><apiname>RSdpDatabase</apiname></xref> to access the database. A subsession allows service records and their attributes to be added, deleted and updated in the database. The application uses <xref href="GUID-6A33D6A1-63C8-3A15-A2BC-5D08F07C5AB6.dita"><apiname>CSdpAgent</apiname></xref> to query the services and has to implement <xref href="GUID-AD76DB7F-CD45-3903-A07A-E94BE583CDB0.dita"><apiname>MSdpAgentNotifier</apiname></xref> or <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita"><apiname>MSdpElementBuilder</apiname></xref> interfaces to handle and organize responses from the server. </p> <p><b>SDP Database </b> </p> <p>The SDP database maintains a list of service records that describe the characteristics of services on the local device that may be used by a remote device via Bluetooth. Each service record contains information about a single service. </p> <p><b>SDP Agent </b> </p> <p>The SDP agent retrieves information from a service record in the SDP database by issuing an SDP request. If an application chooses to use a service, it opens a separate connection with the service provider. For example; </p> <p>if you need to print a document on your Symbian OS phone you could: </p> <ol id="GUID-CC0974A0-26EA-599B-A624-1CCAA8CF218E"><li id="GUID-7C120CC4-EAC2-5F9F-A086-336F42554403"><p>do an SDP search for devices offering a print service. </p> </li> <li id="GUID-FCD7AD1B-CA98-53E2-99F2-77C6E9FC9A36"><p>Should a device be found offering the print service you would further query it for connection details. </p> </li> <li id="GUID-0ADFC4F6-810B-566F-A611-6A21784B9CCC"><p>With that information your application would then create a Bluetooth connection to the device in question using the connection configuration required and print the document. </p> </li> </ol> </section> <section><title>SDP library details</title> <p>The Bluetooth SDP component has two published libraries. The DLLs that provides the functionality and the libraries to which your code must link are identified below. </p> <table id="GUID-22CB200C-4F18-59DC-8F6F-2F8BE70B4CF9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short description</entry> </row> </thead> <tbody><row><entry><p> <filepath>sdpdatabase.dll</filepath>  </p> </entry> <entry><p> <filepath>sdpdatabase.lib</filepath>  </p> </entry> <entry><p>Allows a local service to register itself to a local Bluetooth service database. </p> </entry> </row> <row><entry><p> <filepath>sdpagent.dll</filepath>  </p> </entry> <entry><p> <filepath>sdpagent.lib</filepath>  </p> </entry> <entry><p>Enables a Bluetooth device to discover the Bluetooth services, and the attributes of those services, that are available on a remote Bluetooth device. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The following are typical uses for the SDP Database and SDP Agent APIs: </p> <p><b>SDP Database</b> </p> <p>The SDP Database API provides access to the database for creating and maintaining records of services and setting the service attributes. </p> <p>For more information see: </p> <ul><li id="GUID-EA5A4019-2F62-534A-8795-FD7873462DD5"><p><xref href="GUID-756D831F-F302-594C-8116-144358DD8442.dita">SDP Database Overview</xref>  </p> </li> <li id="GUID-D336C6C6-55A6-5007-BD7C-A18408EAE150"><p><xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP Service records and attributes</xref>  </p> </li> </ul> <p>The typical uses for the SDP Database are: </p> <ul><li id="GUID-F88F0267-8BFA-52F1-88CB-A436CB0CBC33"><p><xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">Connecting to the service discovery database</xref>  </p> </li> <li id="GUID-BF5ABE0A-0329-5C72-8445-C169102485D6"><p><xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">Handling SDP attributes</xref>  </p> </li> <li id="GUID-1EFA60F1-B700-52A5-BB25-A118167D93CE"><p><xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">Registering Services</xref>  </p> </li> <li id="GUID-AA370FC4-E2EE-5C0C-B199-DB187AEC9582"><p><xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">Setting service record attributes</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-845F3021-E3ED-4676-916A-75740886DCBD" xml:lang="en"><title>Providing
+a vertical list of selectable items</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>To provide a vertical list of selectable items using the Choice List API,
+follow the steps below:</p>
+<ol>
+<li id="GUID-7BC9F7F7-7C48-4D8B-AA78-E9F03B0037D1"><p>Link the AVKON libraries
+(<codeph>avkon.lib</codeph> and <codeph>eikcoctl.lib</codeph>) to the project
+file of the application.</p></li>
+<li id="GUID-2AAE484A-042E-413E-95C5-075213B1F9FD"><p>Provide an observer
+class that realizes the <codeph>McoeControlObserver</codeph> interface.</p></li>
+<li id="GUID-0DB766B5-F05E-4724-AEA3-3AD7ED200941"><p>Create an instance of
+the class <codeph>CAknChoiceList</codeph>.</p></li>
+<li id="GUID-02B3DF80-EBF2-463C-A347-256A2CEE08F6"><p>Add content to the created
+choice list instance.</p></li>
+<li id="GUID-4CBFB485-526E-4A94-B177-E7B8C89828F9"><p>Show the choice list.</p></li>
+<li id="GUID-1F3926D0-CCBE-4F16-98E2-8E6C0C0DA973"><p>Receive information
+from the choice list through the observer interface.</p></li>
+<li id="GUID-22CBB678-6954-42CF-8F8E-FA847A7FBEA9"><p>Delete the choice list.</p></li>
+</ol>
+<section><title>Indexing of items in the choice list</title><p>The client
+application is responsible for keeping track of item indexes in the choice
+list. The choice list component does not do this: it only returns the index
+of a list item.</p><p>The choice list items are indexed as follows:</p><ul>
+<li><p>When the items are added to the choice list from e.g. an array, the
+first item gets an index of 0.</p></li>
+<li><p>The other items added from the array get indexes 1, 2, 3 and so forth
+until the last item has received an index. Therefore, for example, in a list
+of four items, the items have indexes 0 - 3.</p></li>
+<li><p>If an item is added to the end of the list, it gets the next index
+number based on the number of items already in the list. For example, adding
+the fifth item in a four-item list results in that item having the index 4.</p></li>
+<li><p>If items are added to the middle of the list, the indexes of the items
+after the added items are shifted up accordingly. For example, if an item
+is added as the fourth item in a six-item list, the old fourth, fifth, and
+sixth items with indexes 3 - 5 get indexes 4 - 6.</p></li>
+<li><p>If an items is removed from the list, the indexes of the subsequent
+items in the list are shifted down accordingly. For example, if the second
+item is removed, the old third item becomes the second item and therefore
+gets an index of 1.</p></li>
+</ul></section>
+<section><title>Use cases</title><fig id="GUID-7FFCC838-A49D-4A91-9480-3295B0E036B7">
+<title>Choice list API use cases</title>
+<image href="GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e50349_href.png" scale="60" placement="inline"></image>
+</fig><p>To use a choice list in your application, implementing the following
+use cases is mandatory:</p><ul>
+<li><p><xref href="GUID-462239D1-4B40-4342-92DA-32AB0AF0D2F2.dita">Creating the
+choice list</xref></p></li>
+<li><p><xref href="GUID-17F3FFF4-00B8-492F-95BD-11AFF02CAAB2.dita">Adding items
+to the choice list</xref></p></li>
+<li><p><xref href="GUID-F2397B5A-0700-46D5-8E07-CBB9F769DA01.dita">Getting user
+selection from the choice list</xref></p></li>
+<li><p><xref href="GUID-A84EDC63-0A74-4B93-BED2-7BE273A6DDB3.dita">Deleting the
+choice list</xref></p></li>
+</ul><p>The following use cases are optional, allowing you to set additional
+properties for your choice list:</p><ul>
+<li><p><xref href="GUID-E332F544-0759-4C10-B29C-14AA5EAEBD49.dita">Showing the
+choice list</xref></p></li>
+<li><p><xref href="GUID-73DD8A9B-6F7A-4BF5-87A1-5D86662B30D3.dita">Removing items
+from the choice list</xref></p></li>
+<li><p><xref href="GUID-210606BE-A36C-4B65-B083-93F71024196C.dita">Setting the
+item selected when the choice list is opened</xref></p></li>
+</ul></section>
+<section><title>Main implementation files</title><p>The implementation file
+for the Choice list API is aknchoicelist.h.</p></section>
+</conbody><related-links>
+<link href="GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita"><linktext>Choice list
+API description</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-84921F68-9449-564A-8527-203FA84AF2AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-84921F68-9449-564A-8527-203FA84AF2AF"><title>Database compression</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Store database can be compressed.</p> <p>Once compressed, a store database is read-only, but otherwise operates as normal and is opened in exactly the same way as an uncompressed database; data is dynamically decompressed as required.</p> <p>The memory required to decompress data as it is read depends on the length of the streams in the database store, but is typically just a few kilobytes. A compressed database is not noticably slower than the equivalent uncompressed database, especially on slower media, such as CF-card.</p> <p>The <codeph>RDbStoreDatabase</codeph> class provides the functions <codeph>CompressL()</codeph> and <codeph>DecompressL()</codeph> to convert a Store database to compressed form and vice-versa.</p> <p>Note that:</p> <ul><li id="GUID-0DD719CA-9073-5F03-8BB0-C71BE702E957"><p>encrypted databases cannot be compressed</p> </li> <li id="GUID-BE9AD15E-3B20-56CF-AFF4-4528457881C3"><p>index data is not compressed as the presence of indexes reduces the effective compression ratio</p> </li> <li id="GUID-D782E99C-AE1E-5158-9F5D-FD9ED94C6B29"><p>compression code on the emulator is more aggressive than that on ARM builds and can achieve better compression ratios; the resulting files are about 5% smaller at the expense of doing two or three times as much work</p> </li> <li id="GUID-7DA7C65C-C0CB-5C9E-810C-7318D7AC48EA"><p>compressing or decompressing a database can require a significant amount of memory.</p> </li> </ul> <p>When a file-store database is constructed using the <codeph>RDbNamedDatabase</codeph> interface, there is no access to the underlying store</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-84922B27-FDCF-56FD-91ED-5E0BFE3ED0E4" xml:lang="en"><title>Compressing
+and Decompressing File - Zip Format </title><shortdesc>The Zip Compression Library, EZLib provides stream and file compression
+and decompression functionality for the Symbian platforms. The files can be
+compressed to two formats namely zip and gzip. Compression and Decompression
+are performed iteratively, till the completion of required task. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-BE620F4A-6D23-5832-8C2A-4B9C75F6BF12"/>
+<steps id="GUID-0DE92899-962B-5E18-9378-EB7B6C78E7BD">
+<step id="GUID-414B561B-4BCA-5D6F-A744-3944D0EBDBE2"><cmd>Pass the input and
+output files as parameters to construct an instance of <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref>.
+This returns a pointer to <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref> (input buffer). </cmd>
+<info> <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref> provides functions that accept
+and converts the data into buffers for <xref href="GUID-B90BA6D6-72A2-3EB8-B8EF-CD5408107A9E.dita"><apiname>MEZBufferManager</apiname></xref> class
+to manage it internally. </info>
+</step>
+<step id="GUID-BA8CC59E-FD6B-5ACA-A516-EBFFB5316D30"><cmd/>
+<info>Pass the input buffer and other compression parameters to the object
+of the <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita"><apiname>CEZCompressor</apiname></xref> class. </info>
+</step>
+<step id="GUID-BD4E38F1-78A7-5ED3-83D7-6C56EE7122DD"><cmd/>
+<info>Use <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita#GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5/GUID-03E4E3A2-3830-3209-9D7B-A2238B5AF219"><apiname>CEZCompressor::DeflateL()</apiname></xref> to compress the file. </info>
+</step>
+</steps>
+<example><p>The following code demonstrates a compression procedure. </p><codeblock xml:space="preserve">/*
+ * Compresses the file into a zip file using the EZlib component. 
+ * It is assumed that the input and output file names are contained in a 
+ * provided ini file.
+ */
+
+
+void CEZlibEZipTests::DoEZlibDeflateL()
+    {
+RFs iFs;
+ iFS.connect();
+    
+
+
+    //Open input file
+_LIT(KInputFileLocation, "c:\\private\\E80000B7\\zip\\input\\input.doc");
+TFileName inputFile(KInputFileLocation);
+    RFile input;
+    err = input.Open(iFs, inputFile, EFileStream | EFileRead | EFileShareExclusive);
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KOpenFileError);
+        User::Leave(err);
+        }   
+    
+    
+
+    //open output file
+
+_LIT(KOutputFileLocation, "c:\\private\\E80000B7\\zip\\input\\output.zip");
+TFileName outputFile(KOutputFileLocation);
+    RFile output;
+    err = output.Replace(iFs, outputFile, EFileStream | EFileWrite | EFileShareExclusive);
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KCreateFileError);
+        User::Leave(err);
+        }   
+        
+
+
+    CEZFileBufferManager *bufferManager = CEZFileBufferManager::NewLC(input, output);   
+    CEZCompressor *compressor = CEZCompressor::NewLC(*bufferManager, aLevel, aWindowBits, aMemLevel, aStrategy);
+
+    while(compressor-&gt;DeflateL())
+        {       
+        }   
+     output.Close(); 
+input.Close();
+ iFS.Close();
+    
+
+    
+    }
+</codeblock></example>
+<postreq><p>The decompression of a <filepath>.zip</filepath> file can be achieved
+through the following the steps: </p> <ol id="GUID-468D2F53-B015-5DAB-96A7-08DBE8101773">
+<li id="GUID-23A8B3BC-0C23-503A-969A-EAD80BBDA3ED"><p>Pass the
+input and output files as parameters to construct an instance of <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref>.
+This returns a pointer to <xref href="GUID-A54D8675-1874-3B4F-816D-001A235C0F9C.dita"><apiname>CEZFileBufferManager</apiname></xref> ( buffer). </p> </li>
+<li id="GUID-60335F30-42FF-57A1-8457-ADFAE6C34E76"><p>Pass the buffer to the
+object of the <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita"><apiname>CEZDecompressor</apiname></xref> class. </p> </li>
+<li id="GUID-969C35D8-AAB8-5875-9DA9-B80D0F402EB1"><p> <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita#GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35/GUID-0AC99B66-412B-3CCF-84DA-D7BC0F0D32B2"><apiname>CEZDecompressor::InflateL()</apiname></xref> is
+called repeatedly until the decompression is complete. </p> </li>
+</ol> <p>The following code demonstrates the decompression procedure. </p> <codeblock id="GUID-4A0A0D64-939C-587F-B9C7-F34B8F934E25" xml:space="preserve">/* Decompresses the file contained in a Zip file using the EZlib component. 
+ * It is assumed that the input and output file names are contained in a 
+ * provided ini file.
+ */
+
+void CEZlibEZipTests::DoEZlibInflateL()
+    {
+RFs iFs;
+ iFS.connect();
+
+//Open input file
+_LIT(KInputFileLocation, "c:\\private\\E80000B7\\zip\\input\\output.zip");
+TFileName inputFile(KInputFileLocation);
+    RFile input;
+    err = input.Open(iRfs, inputFile, EFileStream | EFileRead | EFileShareExclusive);
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KOpenFileError);
+        User::Leave(err);
+        }    
+    
+    
+
+    //open output file
+
+_LIT(KOutputFile, "c:\\private\\E80000B7\\zip\\input\\input.doc");
+TFileName outputFile(KOutputFile);
+    RFile output;
+    err = output.Replace(iFs, outputFile, EFileStream | EFileWrite | EFileShareExclusive);
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KCreateFileError);
+        User::Leave(err);
+        }    
+        
+
+
+CEZFileBufferManager *bufferManager = CEZFileBufferManager::NewLC(input, Output);    
+CEZDecompressor *decompressor = CEZDecompressor::NewLC(*bufferManager, aWindowBits);
+
+
+    while(decompressor-&gt;InflateL())
+        {        
+        }    
+output.Close();
+        input.Close();
+    ifs.Close();
+
+    }</codeblock> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-84AD87E9-B21A-52FC-B1E1-7287BA8A30D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-84AD87E9-B21A-52FC-B1E1-7287BA8A30D4" xml:lang="en"><title>SQLite
+Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces you to the interface that provides the native
+SQLite C APIs. </p>
+<section><title>Purpose</title> <p>The SQLite library provides an interface
+to the standard SQLite implementation for Symbian platform application developers.
+This allows you to create application using your own SQLite implementation,
+linking it as required. </p> <p><b>Intended
+Audience:</b> </p> <p>This document is intended to be used by Symbian platform
+licensees and third party application developers. </p> <p><b>SQLite Library Details</b> </p> <p>You can create your own SQLite implementation,
+link to the SQLite static library. This library provides an interface to the
+native SQLite C APIs. </p> <table id="GUID-2B770B4A-4B1F-5382-91C2-724A0A639544">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>LIB</entry>
+<entry>Short Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>sqlite.lib</filepath>  </p> </entry>
+<entry><p>Symbian platform implementation of SQLite. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Architectural Relationship</title> <p>Symbian platform SQLite
+is built on version 3.3.17 of the standard SQLite distribution. </p> <p>SQLite
+is a free standing component which can be accessed by any application and
+from anywhere in Symbian platform. </p> </section>
+<section><title>Description</title> <p>SQLite is included in Symbian platform
+mainly so that third party applications that make calls to SQLite can be supported
+on Symbian platforms. </p> <p>SQLite functions are called from within Symbian
+platform without using classes. </p> <p>SQLite is an open source
+implementation of the database query language SQL. </p> <p>Please see the <b>SQLite
+Foundation</b> web site, <xref href="GUID-B2652A94-E23A-5E2E-89F2-9874C0627766.dita">http://www.sqlite.org</xref>,
+for more details about this open source SQL database management system. </p> <p><b>SQLite functionality</b> </p> <p>SQLite is a collection of functions that
+enable you to create, delete, read and modify relational databases. </p> </section>
+</conbody><related-links>
+<link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext>
+</link>
+<link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQLDB Overview</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-84B088C0-7013-4B6A-BA34-8F022E38E822_d0e61914_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-84C20E6E-C5DF-5346-84A3-2D8C701303C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-84C20E6E-C5DF-5346-84A3-2D8C701303C8"><title>On-Target Debugging</title><shortdesc>On-target debugging refers to debugging environments where code is run on device hardware. This increases the debugging challenge due to the restrictive nature of such hardware. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>When debugging Comms software in such environments, the following tools are available to help: </p> <ul><li id="GUID-ADBC6B2E-4D34-5608-B1BE-98B59DD94CA3"><p>D_Exe </p> </li> <li id="GUID-AF56C4B7-7534-5B65-8252-E4A41FF343C0"><p>TRK </p> </li> <li id="GUID-FE9555CF-0E7E-56D8-B7E8-C06C37BD940C"><p>Lauterbach </p> </li> <li id="GUID-F972FCC2-2E85-526A-AB83-BD5CC2E404BE"><p>Crash Analyst </p> </li> <li id="GUID-AAB62AC9-E070-50AB-B560-BF898069CE61"><p>dtrace </p> </li> </ul> <p>For more information about these tools see <xref href="GUID-BB174A7C-9B72-55C8-8C8A-F5FB14AB3607.dita">Hardware debugging tools overview</xref> and <xref href="GUID-B5AEC7EF-3CE4-57A3-B450-C6B22E8C87C8.dita">Hardware Debugging Presentation</xref>. The RDebug::Print facility is rarely used by default by Symbian OS Comms software for debug tracing since the Comms software mostly uses CDU. If required, CDU's output can be redirected to the same output port used by the RDebug interface. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-84C75561-E082-4EFF-89A7-901361612CCA_d0e58408_href.png has changed
Binary file Symbian3/SDK/Source/GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e7445_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85372267-C352-4389-8FC9-32B8E1622BC9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-85372267-C352-4389-8FC9-32B8E1622BC9" xml:lang="en"><title>Getting
+Started</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8579426F-C443-558B-9380-FED79D4BA8F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8579426F-C443-558B-9380-FED79D4BA8F4"><title>Rules for DBMS names</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><keyword>Tables</keyword>, <keyword>indexes</keyword> and <keyword>columns</keyword> are named objects within a <keyword>database</keyword>. A DBMS name must begin with an alphabetic character, after which any alphabetic, numeric or the <codeph>_</codeph> (underscore) character may be used. DBMS names are also limited to 64 characters in length.</p> <p>Table names must be unique within a database, and columns and indexes must have unique names within the table to which they belong. For the purposes of uniqueness and identification, the names are folded before comparison, so two columns named <codeph>column_one</codeph> and <codeph>Column_ONE</codeph> are considered to have the same name.</p> <p>Names in a database have no further restrictions.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e225353_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-85873CBE-6077-4917-B2B0-5D00C6647CC8_d0e46080_href.png has changed
Binary file Symbian3/SDK/Source/GUID-85873CBE-6077-4917-B2B0-5D00C6647CC8_d0e52095_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B" xml:lang="en"><title>Graphics
+Composition</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Composition is the process of putting together the output elements from
+various different sources to create the screen display that the end user sees
+on the device. </p>
+<p> <b>Variant</b>: ScreenPlay. </p>
+<p>In a multi-tasking device many of the activities taking place simultaneously
+generate output for display on the screen. Their output can include words,
+pictures, video, games and the screen furniture (scroll bars, buttons, icons,
+borders, tabs, menus, title bars) familiar to every computer user. </p>
+<p>Many of these output elements can appear at the same time, either next
+to each other or overlapping each other. They can be opaque, such that they
+obscure anything behind, or semi-transparent such that the elements underneath
+are partially visible. </p>
+<p>The diagram below illustrates how the display that the viewer sees (looking
+down from the top) is a two-dimensional representation composed from a series
+of layers. </p>
+<fig id="GUID-19D41F69-1264-5726-9CDD-C4DD0F231BE3">
+<title>           The display is an orthogonal view of a series of layers.
+         </title>
+<image href="GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e162512_href.png" placement="inline"/>
+</fig>
+<p>Composition requires: </p>
+<ul>
+<li id="GUID-7C593A87-268F-59E1-B295-9DE2A0DF3092"><p>Calculations based on
+the size, position, visibility, transparency and ordering of the layers to
+determine what will be displayed. This is a <b>logic</b> exercise referred
+to as UI Composition. </p> </li>
+<li id="GUID-B10758D4-8C30-5446-958D-0B81530B69BF"><p>Handling of image content,
+which is a <b>data processing</b> exercise referred to as Image Composition. </p> </li>
+</ul>
+<p>For this reason the two are handled separately. </p>
+<p><b>UI Composition </b> </p>
+<p>UI Composition is performed by the Window Server. Each application has
+its own window group containing all of its child windows. The Window Server
+keeps track of the windows' positions, sizes, visibilities, transparencies
+and z-order and is able to establish which windows, and which bits of each
+window, are visible. It ensures that each visible bit of window is kept up-to-date
+by calling its application when necessary. </p>
+<p><b>Image composition </b> </p>
+<p>Prior to the introduction of ScreenPlay the Window Server did rudimentary
+composition in its main thread and rendered composited output to the screen
+buffer using the GDI (Graphics Device Interface). To achieve high frame rates,
+applications typically bypassed the Window Server using Direct Screen Access
+(DSA) and animation DLLs. </p>
+<p>In <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> sources
+that generate complex graphical output render directly to graphics surfaces.
+The Window Server delegates the composition of surfaces to a composition engine
+that device creators can adapt to take advantage of graphics processing hardware. </p>
+<p>Although the composition engine runs in the Window Server's process, it
+is largely transparent to application developers and works quite differently.
+Instead of using windows, it uses surfaces to store pixel data and elements
+to manipulate size, position, z-order, visibility and transparency. </p>
+<p>While an element is a simple lightweight object, and easy to manipulate,
+a surface stores a large amount of data and its handling requires more consideration. </p>
+<p>The diagram below is a simplistic representation of how applications create
+output which is rendered, composited and displayed. </p>
+<fig id="GUID-9DF4C86A-C06D-5C5A-9AB6-E9991CC1937A">
+<title>           Graphics Composition          </title>
+<image href="GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e162576_href.png" placement="inline"/>
+</fig>
+<p>In a device with graphics acceleration hardware (a Graphics Processing
+Unit or GPU) there might, in addition to the memory managed by the CPU, be
+additional memory managed by the GPU. Image data may therefore be considered
+to have been <b>software rendered</b> (onto a surface in CPU memory) or <b>hardware
+rendered</b> (onto a surface in hardware accelerated GPU memory). The following
+diagram shows applications and other graphical data sources rendering to surfaces
+in software and hardware. </p>
+<fig id="GUID-2717F861-0045-5598-A3EC-7CF678BEFA70">
+<title>           Hardware rendered graphics - the wrong way!          </title>
+<image href="GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e162593_href.png" placement="inline"/>
+</fig>
+<p>The diagram, however, represents a system with several problem areas that
+would render it unsuitable for any practical implementation </p>
+<ul>
+<li id="GUID-AF13B0A1-3DC0-576D-81B1-6DF66AA9FA77"><p>In practice it is likely
+that once data has been rendered to hardware-managed memory it is, to all
+intents and purposes, unavailable to software: the CPU is unable to access
+it sufficiently quickly. The dotted paths on the diagram above must therefore
+be avoided. </p> </li>
+<li id="GUID-0B109999-94FE-5A5C-B0D0-D3F2157B5CC6"><p>Furthermore, GDI rendered
+data (the UI) is typically 'stored' as redrawing instructions rather than
+bitmapped pixel data—so rendering it to bitmaps before composition is likely
+to use a lot of memory unnecessarily. </p> </li>
+</ul>
+<p>In ScreenPlay, the UI is therefore composed and rendered onto a single
+surface before being composited with any other surfaces. This surface is termed
+the <b>UI surface</b> and is displayed on a layer placed in front of all of
+the others. In fact, the UI surface is created for the Window Server during
+system start up and is then passed to the composition components as a 'special
+case' surface for composition. </p>
+<section id="GUID-6E274D1A-E4CB-4980-B351-B396FEC48DB8"><title>Combining Window Server and Composition </title> <p>The compositing
+of surfaces according to their origin means that the physical composition
+process behaves differently from the logical composition process that is based
+on what the user and the UI are doing. Logically the windows in the UI and
+memory rendered surfaces may be on layers that are interleaved yet the memory
+rendered surfaces are physically composed behind. </p> <p>ScreenPlay addresses
+this issue by associating 'external' surfaces with windows in the Window Server
+using the <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita#GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34/GUID-4EBFFA14-418A-3A2A-B147-39BFC96CE45F"><apiname>RWindowBase::SetBackgroundSurface()</apiname></xref> method. This
+means that the Window Server is able to include them in its logical composition
+and make provision for them during data composition. A window with its background
+set to a surface in this way becomes transparent in the UI rendered UI surface. </p> <p>In
+most cases this is not apparent to the viewer. Surfaces that are physically
+composed behind the UI appear in the correct position on the two-dimensional
+display. The diagram below illustrates how Window Server-rendered UI content
+and external surfaces are composited using the UI surface. </p> <fig id="GUID-3448FD6B-9A39-58CD-8819-39B0B6CC4E13">
+<title>              Hardware composition and the Flattened UI            </title>
+<image href="GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e162640_href.png" placement="inline"/>
+</fig> <p>Although this method of composition is flexible and powerful, it
+does have some limitations, particularly with respect to semi-transparent
+hardware-accelerated surfaces. </p> <p>It is not possible, for example, to
+include a semi-transparent surface in front of the UI surface. In such cases
+the composition engine determines how the display is composed. </p> <p>Here
+is a second version of the diagram at the top of the page showing how the
+same composition might be achieved in practice. The UI menus, windows and
+dialogs are composited by the Window Server onto a single surface. The light
+green layer displays a hardware rendered surface so it is actually behind
+the layer on which it appears. </p> <fig id="GUID-1FB1194D-FCAE-534C-94DC-AF4CF00E3A1C">
+<title>              The UI surface            </title>
+<image href="GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e162657_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-41E9CA54-759F-5651-95F8-9F39808BE740"><title>Composition
+Examples</title> <p>This illustrations below illustrate the use of hardware
+accelerated surfaces and the UI surface </p> <fig id="GUID-8178DBA8-E10C-56F3-A828-80746CE6A993">
+<title>              Video rendered to a hardware accelerated surface mapped
+to a layer              behind the UI surface            </title>
+<image href="GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e162673_href.png" placement="inline"/>
+</fig> <fig id="GUID-51411B10-6DC3-5B74-BCEF-11EC1D0FBCA8">
+<title>              As above with a semi-transparent dialog on the UI surface
+           </title>
+<image href="GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e162681_href.png" placement="inline"/>
+</fig> </section>
+</conbody><related-links>
+<link href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita"><linktext>The ScreenPlay
+Architecture</linktext></link>
+<link href="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita"><linktext>Hardware
+Acceleration</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85AA0FD4-3BD1-50A7-B241-AE3908ACCF30.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-85AA0FD4-3BD1-50A7-B241-AE3908ACCF30" xml:lang="en"><title>Basic Application
+Framework Library Tutorials</title><shortdesc>This section explains the tasks that can performed using Basic
+Application Framework Library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85CA1089-3F58-5E82-86A4-4674C893B25F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-85CA1089-3F58-5E82-86A4-4674C893B25F" xml:lang="en"><title> Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The SIP Codec API provides functions to encode and decode SIP headers and
+their fields. It converts SIP messages from the UTF-8 ASCII format to the
+API implementations internal structure and from the API implementations internal
+structure to the UTF-8 ASCII format. This implementation validates the SIP
+message syntax according to the SIP BNF definition and supports serialization
+and de-serialization of objects belonging to the SIP message structure. </p>
+<p>This implementation is provided in a shared DLL and is run in the context
+of the user. It creates class instances in the user heap area which means
+the instances cannot be shared between different users. </p>
+<section id="GUID-CB250850-D04A-5993-B0C9-3CC1761C686B"><title>Architectural
+relationships</title> <p>The SIP Codec API does not require any interfaces. </p><p><b>Capability
+information</b> </p><p>There is no capability required when you use the SIP
+Codec API. This API is valid for all platforms running Symbian OS version
+9.1. </p><p><b>Extending the API</b> </p><p>SIP Codec API cannot be extended. </p> </section>
+<section id="GUID-D3DA4AFB-AE7F-5496-9DA2-B6FFA0A59DF0"><title>Class structure</title> <p>The
+logical type of the SIP Codec API is Library API. This interface contains
+synchronous functions that do not block, but return immediately and it uses
+only local objects. </p> <p>The following illustration shows the relationships
+of the SIP Codec API classes. </p> <fig id="GUID-B09DF64C-B185-54BA-A7C3-49B8E561DDCD">
+<title>                 Relationships of the SIP Codec classes - Part 1  
+            </title>
+<image href="GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e315113_href.jpg" placement="inline"/>
+</fig> <fig id="GUID-76054C58-E841-5103-AB33-27754D80B757">
+<title>                 Relationships of the SIP Codec classes - Part 2  
+            </title>
+<image href="GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e315122_href.jpg" placement="inline"/>
+</fig><p>The SIP Codec API defines the functions required to create the SIP
+headers of a SIP message. CSIPHeaderBase is the base class for all SIP headers.
+A client creates a new instance of the CSIPXHeader class, where “X” is the
+name of the header required, and sets the values of the header with the setter
+functions of this class.</p></section>
+<section id="GUID-99EFD964-C3AB-5974-8B13-913D271B3232"><title>Memory used</title> <p>The
+amount of memory used by every header object of the SIP Codec API is equivalent
+to the memory used by the header as text (class + the size of SIP headers). </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85CE1EC7-E791-57B6-99BA-720699ABC880.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-85CE1EC7-E791-57B6-99BA-720699ABC880"><title>List of Constants and Enumerations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following are the Codec encoding errors for SDP fields that are available as a part of the SDP Codec API: </p> <p> <xref href="GUID-CDC804B6-AEAA-3919-8741-C35A6BDC0B64.dita"><apiname>KSdpCodecErrorBase</apiname></xref>, <xref href="GUID-E731B443-27F7-3487-BAEA-A6DEF48A5243.dita"><apiname>KErrSdpCodecVersionField</apiname></xref>, <xref href="GUID-CBFE017A-B173-3313-889F-C498A2D71F03.dita"><apiname>KErrSdpCodecOriginField</apiname></xref>, <xref href="GUID-1FABB9D8-3655-3F6F-B27C-08FB3072C713.dita"><apiname>KErrSdpCodecSessionField</apiname></xref>, <xref href="GUID-E299CF59-01B7-387D-A7B2-9F70D6726210.dita"><apiname>KErrSdpCodecInfoField</apiname></xref>, <xref href="GUID-86BECB53-E1C4-3FFA-9ED2-40C751A9AA85.dita"><apiname>KErrSdpCodecUriField</apiname></xref>, <xref href="GUID-BE042040-8626-3692-A68A-00F6B969794A.dita"><apiname>KErrSdpCodecEmailField</apiname></xref>, <xref href="GUID-7A2E1959-D36B-367C-AA63-CDD5F392BFE6.dita"><apiname>KErrSdpCodecPhoneField</apiname></xref>, <xref href="GUID-DFE8C69C-4EFF-3097-B4E5-7851F7AE6B61.dita"><apiname>KerrSdpCodecConnectionField</apiname></xref>, <xref href="GUID-2D940F82-4C7C-38B1-A5FF-B670B2644442.dita"><apiname>KErrSdpCodecBandwidthField</apiname></xref>, <xref href="GUID-4C810CEC-1899-3D6C-B56F-4FE6D2CA8701.dita"><apiname>KErrSdpCodecTimeField</apiname></xref>, <xref href="GUID-0777D00A-73C3-3D2C-AF21-32DA04444FD2.dita"><apiname>KErrSdpCodecRepeatField</apiname></xref>, <xref href="GUID-547AD78E-B9DD-3737-AFDC-DDFBBE517A19.dita"><apiname>KErrSdpCodecZoneField</apiname></xref>, <xref href="GUID-E0B01791-74ED-3250-8D83-5B80D1AEFB86.dita"><apiname>KErrSdpCodecKeyField</apiname></xref>, <xref href="GUID-3BC4D776-E4F5-3CD8-A48D-27BD80B9656F.dita"><apiname>KErrSdpCodecAttributeField</apiname></xref>, <xref href="GUID-8691D070-5E21-3BBA-AC31-A323B84DC932.dita"><apiname>KErrSdpCodecMediaField</apiname></xref>, <xref href="GUID-0D171C7B-BBC1-3C39-AF66-E8DC9F62FBF0.dita"><apiname>KErrSdpCodecMediaInfoField</apiname></xref>, <xref href="GUID-CF041550-8AEE-3A02-AFB7-76F2DFE16BC3.dita"><apiname>KErrSdpCodecMediaConnectionField</apiname></xref>, <xref href="GUID-CC2E7E57-157C-3B8B-8E97-847A6D82894E.dita"><apiname>KErrSdpCodecMediaBandwidthField</apiname></xref>, <xref href="GUID-F16972C0-4AE4-3FA4-B603-904F923CE4DF.dita"><apiname>KErrSdpCodecMediaKeyField</apiname></xref>, <xref href="GUID-0268BC9E-EFF2-3C0B-AA39-0773D37691C9.dita"><apiname>KErrSdpCodecMediaAttributeField</apiname></xref>, <xref href="GUID-10D36AFD-2342-3D18-8874-24535DF053FD.dita"><apiname>KErrSdpCodecTypedTime</apiname></xref>, <xref href="GUID-2C80E5C0-0A4D-3B2D-8D75-05FB60D32C85.dita"><apiname>KErrSdpCodecStringPool</apiname></xref>, <xref href="GUID-6BD89347-671F-3518-9777-55801A090C79.dita"><apiname/></xref><xref href="GUID-81F491CB-2BF5-3B3C-B074-CB8AA901681D.dita"><apiname>KErrSdpCodecDecode</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85D9878E-4FEF-5E45-9F87-53634CD171E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-85D9878E-4FEF-5E45-9F87-53634CD171E0" xml:lang="en"><title>Integrating
+a System Server with UPS</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>User Prompt Service (UPS) functionality
+is provided by the server process <filepath>upsserver.exe</filepath>. The
+process starts on demand when system servers make calls to the UPS client
+library. Only applications with a capability of <codeph>ProtServ</codeph> or
+higher can access <filepath>upsserver.exe</filepath>. </p> <p>A system server
+should only invoke the UPS for security decisions that a typical phone user
+will understand (For example, it is inappropriate to ask the user for permission
+to change a low level network setting.) . </p> <p>Device creators can write
+a system server that invokes the UPS, if a compatible dialog creator is available
+and the policies are delivered in an appropriately signed SIS file. They can
+also write a policy evaluator, but a default policy evaluator is provided
+by Symbian platform. </p> <p>If the device creators do not specify any policy
+file, the UPS uses the platform security check results to decide whether to
+access requested services. Thus not supplying policy files effectively turns
+UPS off. </p> </section>
+<section><title>Required background</title><p id="GUID-9C6EBADD-175A-5122-90C4-CED8A9855BAB"><b>Configuring
+the system server</b> </p> <p>For each system server that accesses the UPS,
+you need to do the following: </p> <ol id="GUID-D14BDAE1-BD62-530E-B3C4-2FA380BDBDC5">
+<li id="GUID-090CE65B-44BF-54CF-8961-69059655C5F5"><p>Create one <codeph>RUpsSession</codeph> per
+server. </p> <p>Typically, an <codeph>RUpsSubession</codeph> object is created
+for each connection by a client to the system server and can only have one
+outstanding call to <xref href="GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74.dita#GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74/GUID-82C3C51A-F785-3DBA-910A-47CAF47B39F6"><apiname>RUpsSubsession::Authorise()</apiname></xref>. </p> </li>
+<li id="GUID-61E4A569-F5C3-593C-9954-2803E822F0BF"><p> <xref href="GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74.dita#GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74/GUID-82C3C51A-F785-3DBA-910A-47CAF47B39F6"><apiname>RUpsSubsession::Authorise()</apiname></xref> completes
+immediately and uses the result of its <codeph>aServerCheckOk</codeph> parameter
+to set its <codeph>aDecision</codeph> parameter, if a policy file is not defined
+for a service. Therefore, the default behaviour of an unconfigured UPS is
+compatible with the existing platform security implementation. </p> </li>
+<li id="GUID-035F2AEE-95B8-5085-9079-A4B8A6EC9B6A"><p>Close each <xref href="GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74.dita"><apiname>RUpsSubsession</apiname></xref>. </p> </li>
+</ol><p id="GUID-75BD33B9-28AC-55CD-BF3E-7F62A8D039EB"><b>Considerations</b> </p> <p>Consider
+the following points before integrating the UPS to a system server </p> <ul>
+<li id="GUID-11A0A48F-47A3-5A89-9925-8FBAB3F5D8DE"><p>Even though the APIs
+for the UPS are relatively small, the integration is slightly more complicated
+than might be expected. This is because existing synchronous security checks
+must become asynchronous since interaction with the device user is inherently
+an asynchronous operation. For example, it would be undesirable to block the
+entire comms server while waiting for the user to respond to a dialog. </p> </li>
+<li id="GUID-747A3037-13E6-5895-895E-F700368A81B6"><p>Provide an informed
+security decision the user may need to know about the request they are authorizing.
+Consequently, it may be necessary to extract the parameters from the client
+application at the security check stage. </p> </li>
+<li id="GUID-27A11CBD-BBB5-5D32-8207-D01D207FEC9E"><p>Finally, depending on
+the service and the security requirements of the manufacturer, an operator
+user prompts may be in addition to the platform security (e.g. capabilities)
+checks. Alternatively, user prompts could be used to allow applications without
+capabilities limited access to a protected service. Because most implementations
+of the <codeph>CPolicyServer</codeph> fail the client immediately if the platsec
+check fails these checks may have to be modified. </p> </li>
+</ul><p> <b>Note</b>: For an example of how to include the above, see the
+example code later in this document. </p></section>
+<section><title>Integration of UPS</title> <p>If the system server uses the <codeph>CPolicyServer</codeph> framework,
+there are three candidates for the main integration point. </p> <table id="GUID-BBE389D8-77A0-52BA-910D-368BAC25DCC3">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Function </p> </entry>
+<entry><p>Description </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-5BDFF5B1-DC1F-393A-879B-9D8DE080B4E2.dita#GUID-5BDFF5B1-DC1F-393A-879B-9D8DE080B4E2/GUID-49DDDDAC-B256-3B43-B059-EE369EAEA2BB"><apiname>CPolicyServer::CustomSecurityCheckL()</apiname></xref>  </p> </entry>
+<entry><p>This allows an arbitrary and even asynchronous check to be made
+instead of using static security policies. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-5BDFF5B1-DC1F-393A-879B-9D8DE080B4E2.dita#GUID-5BDFF5B1-DC1F-393A-879B-9D8DE080B4E2/GUID-93C9B0EE-8B94-3A95-BBA7-5B1C8BED6E28"><apiname> CPolicyServer::CustomFailureActionL()</apiname></xref>  </p> </entry>
+<entry><p>This virtual method is invoked if the client fails the static security
+checks. The failure may be overridden or deferred. Asynchronous operations
+are possible. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita#GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51/GUID-B37413F7-D8FD-35AD-A037-99023D7CE986"><apiname> CSession2::ServiceL()</apiname></xref>  </p> </entry>
+<entry><p>The static policy checks could be deferred until the session is
+created provided that the server connection API is not guarded by user prompts. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Use one or a combination of above functions as required to implement
+UPS APIs </p><p><b>Procedure</b> </p> <p>This demonstrates how user permission
+prompt support (UPS) may be added to a system server. </p> <ol id="GUID-BC8CDF54-101F-563E-BA74-7DE871A93782">
+<li id="GUID-55A1C176-857B-539F-81F1-66FCDEDEF299"><p>An <codeph>RUpsSession</codeph> object
+has been added to the <codeph>CMsgServer</codeph> class. This is initialized
+at startup. </p> </li>
+<li id="GUID-8DD68273-846D-568A-A7BE-330523722503"><p> <xref href="GUID-AB9191BA-9E9B-3ED8-9968-4E43C1803C0D.dita#GUID-AB9191BA-9E9B-3ED8-9968-4E43C1803C0D/GUID-6A3E9888-EA11-3352-A634-946C66A3946C"><apiname>CMsgServer::iPolicyElements</apiname></xref> was
+changed to cause <codeph>CustomFailureActionL</codeph> to be invoked if the
+static security policy check fails instead of failing the client. </p> </li>
+<li id="GUID-C2AF0E9B-C46A-59E4-ADB7-21D2018582DD"><p> <xref href="GUID-AB9191BA-9E9B-3ED8-9968-4E43C1803C0D.dita#GUID-AB9191BA-9E9B-3ED8-9968-4E43C1803C0D/GUID-3498AEBD-A092-3D0B-98EB-50A1B9DC65B5"><apiname>CMsgServer::CustomFailureActionL()</apiname></xref> notifies
+the session object that the platsec check failed. This is important because <xref href="GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74.dita#GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74/GUID-82C3C51A-F785-3DBA-910A-47CAF47B39F6"><apiname>RUpsSubsession::Authorise()</apiname></xref> requires
+this information to allow unconfigured systems to be compatible with platsec.
+It also increases the flexibility of the UPS policy definitions. </p> </li>
+<li id="GUID-63A4E019-BDFF-5B37-993B-3ED8233EC781"><p>An <codeph>RUpsSubsession</codeph> instance
+is created for each <codeph>CSession2</codeph> object, i.e. requests from
+different clients are authorized independently. This could be modified so
+that there is one UPS sub-session for each client process instead of each
+connection from a client process. </p> </li>
+<li id="GUID-82211891-BA54-501F-9E81-D6D78C4476E7"><p>An extra state (<codeph>iAuthorising</codeph>)
+is added at the start of the CMsgProcessor state machine. </p> </li>
+<li id="GUID-EC85BB4D-83B9-5AF0-9A19-818B6AD4CE6C"><p>The <codeph>RMessage2</codeph> parameters
+from the client API are now extracted in the authorization stage to enable
+the information to be passed to the UPS. </p> </li>
+<li id="GUID-91D30A49-B703-5E01-BAC9-F9205DB9BAA2"><p> <xref href="GUID-C4092739-2792-3411-90CC-174398AE4A4C.dita#GUID-C4092739-2792-3411-90CC-174398AE4A4C/GUID-9DE31D77-70B7-3072-A602-75D995749DB3"><apiname>CMsgProcessor::DoCancel</apiname></xref> is
+updated to cancel the call to <xref href="GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74.dita#GUID-1C63BE5E-6F66-38CB-931E-B2C51309CB74/GUID-06BF925F-53C1-33D4-97F3-46ECB10CC27F"><apiname>RUpsSubsession::Authorise</apiname></xref>,
+if the client cancels the sending of the message or disconnects. </p> </li>
+<li id="GUID-684BEA9C-B6F7-5369-A243-9D0689BBD421"><p> <xref href="GUID-C4092739-2792-3411-90CC-174398AE4A4C.dita#GUID-C4092739-2792-3411-90CC-174398AE4A4C/GUID-013B385A-2A30-36D6-990A-873CF329F9E7"><apiname>CMsgProcessor::RunL</apiname></xref> now
+checks whether the request was authorized before changing from the authorization
+to the sending state. </p> </li>
+</ol> <p>The following code snippet explains how the UPS APIs can be called. </p> <codeblock id="GUID-1B2C7094-BFA3-5C49-ABDB-4721BC71D8CE" xml:space="preserve">
+
+using namespace UserPromptService;
+
+TUpsDecision AuthoriseL(RThread &amp;aClientThread, TDesC aDestination)
+    {
+ // Create and connect the session.
+ // In a real server this should be done once at server startup as it is a relatively
+ // expensive operation.
+ RUpsSession session;
+ User::LeaveIfError(session.Connect());
+ CleanupClosePushL(session);
+
+ // Initialise the subsession
+ // One of these is required per a concurrent Authorise request.
+ // Note that it only connects to the UPS if it has to.
+    RUpsSubsession subsession;
+ subsession.Initialise(session, aClientThread);
+ CleanupClosePushL(subsession);
+
+ TServiceId serviceId = {43};
+ // Out "service id", typically a constant
+ // Variable for the result, typically a member variable because it must exist until
+ // the Authorise request completes.
+ TUpsDecision decision = EUpsDecYes;
+
+ // Issue the Authorise request
+ TRequestStatus rs;
+ subsession.Authorise(EFalse, // Did out platsec checks pass?
+                         serviceId, 
+                         aDestination, 
+                         decision, 
+                         rs); // Would typically be the iStatus of a CActive object
+
+    // Wait for the request to complete
+ User::WaitForRequest(rs);
+
+ CleanupStack::PopAndDestroy(&amp;subsession);
+ CleanupStack::PopAndDestroy(&amp;session);
+ return decision;
+ }
+
+
+TInt E32Main()
+ {
+ __UHEAP_MARK;
+
+ // allocating a cleanup stack also installs it
+ CTrapCleanup* tc = CTrapCleanup::New();
+ if (tc == 0)
+  return KErrNoMemory;
+
+ RThread thd;
+ TRAPD(err, AuthoriseL(thd, _L("destination")));
+ if(err != KErrNone)
+  {
+  User::Panic(_L("example failed: "), err);
+  }
+ delete tc;
+
+ __UHEAP_MARKEND;
+ return KErrNone;
+ }
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85E1E45B-DD05-5B7D-84E7-9911E0A3E3CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-85E1E45B-DD05-5B7D-84E7-9911E0A3E3CC" xml:lang="en"><title>The wsini.ini
+File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <filepath>wsini.ini</filepath> file configures the Window Server.</p>
+</conbody><related-links>
+<link href="GUID-862D3B3B-3369-5FF4-B81A-ED5BE415B035.dita"><linktext>Window Server
+  Internals</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-85EAD2EA-6ADB-5866-9784-5E2B30E661AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-85EAD2EA-6ADB-5866-9784-5E2B30E661AF" xml:lang="en"><title>Deleting
+Keys </title><shortdesc>This section provides information on deleting keys. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The unified keystore allows the deletion of any key. The following
+steps explain the process of deleting a key: </p></context>
+<steps id="GUID-AFEDFA3B-FA51-5BF8-87A5-7E5DCD3C8D95">
+<step id="GUID-42688893-8588-5CF6-8F6C-959AA0495222"><cmd/>
+<info>Create a file system session using an <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object. </info>
+</step>
+<step id="GUID-CAE0DEDF-139F-52C3-9D3A-A2BD14CFA621"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-4F4C4296-50F5-593F-AA89-8FA043FA9908"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-19E5AAF5-1402-51F9-AE95-0970F286EF1C"><cmd/>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function to list
+the keys of the keystore. Retrieve the handle of the key to be deleted. </info>
+</step>
+<step id="GUID-435FCA01-D219-5BE3-B425-B4530F4C7F36"><cmd>Use the <codeph>CUnifiedKeyStore::DeleteKey()</codeph> function
+to delete the key. </cmd>
+</step>
+</steps>
+<result><p>The selected key is deleted from the keystore. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+initialise the unified keystore, list the keys in a keystore, select a particular
+key and delete it. </p> <codeblock id="GUID-C18C5FBD-400F-5DFB-8E02-916F5C8C11FA" xml:space="preserve">//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+//List the keys of the keystore
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the key for deletion
+TCTKeyAttributeFilter  filter.iUsage = EPKCS15UsageAll;
+keyStore-&gt;List(iKeys, filter, iStatus);
+
+
+...
+
+
+
+//Retrieve the handle of the key to be deleted
+_LIT(KLabel,”keylabel”);
+
+
+
+//Select the key with the label you are looking for
+for (TInt j = 0; j &lt; iKeys.Count(); j++)
+    {
+    if (Keys[j]-&gt;Label() == KLabel) 
+        {
+         keyIndex = j;
+         break;
+        }
+    }
+
+
+...
+
+
+
+//Delete the selected key
+keyStore-&gt;DeleteKey(*iKeys[keyIndex], iStatus);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita"><linktext>Unified Keystore</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-86086CA3-9A2E-4024-BE80-1763614A5079.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-86086CA3-9A2E-4024-BE80-1763614A5079" xml:lang="en"><title>Character
+Conversion in Symbian C++ and GNU C</title><shortdesc>Symbian C++ supports character conversion between Unicode and other
+native character sets.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>GNU C supports character conversion: <ul>
+<li><p>between Unicode and other native character sets</p></li>
+<li><p>from a native character set to another native character set.</p></li>
+</ul></p>
+<p>The following example illustrates the steps to be followed to convert from
+one native character set to another native character set. In GNU C it is straightforward.
+In Symbian C++ more lines of code are needed to do the same work. The example
+converts a string from the ISO-8859-1 character set to the ISO-8859-2
+character set. </p>
+<p><b>GNU C</b></p>
+<codeblock xml:space="preserve">#include &lt;iconv.h&gt;
+#include &lt;stddef.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &lt;errno.h&gt;
+
+int main (void)
+{
+ iconv_t cd;
+ const char *inbuf = "abcd";
+ char *outbuf = NULL;;
+ size_t inbytes,outbytes;
+ cd = iconv_open ("ISO-8859-2", "ISO-8859-1");
+ if (cd == (iconv_t) -1)
+ {
+   printf ("iconv_open failed errno = %d\n",errno);
+   iconv_close(cd);
+   return 1;
+ }
+ outbuf = (char*) malloc(4);
+ inbytes = outbytes = 4 ;
+ iconv (cd, &amp;inbuf, &amp;inbytes, &amp;outbuf, &amp;outbytes);
+ if (iconv (cd, &amp;inbuf, &amp;inbytes, &amp;outbuf, &amp;outbytes) == (size_t) -1)
+     printf(" errno = %d \n",errno);
+ else
+       printf("Iconv passed\n");
+ iconv_close (cd);
+ return 1;
+}
+</codeblock>
+<p><b>SYMBIAN C++ </b></p>
+<ul>
+<li><p>Specify the non-Unicode character set being converted to Unicode. In
+this case it is ISO-8859-1.</p></li>
+<li><p>Convert the text from the native character set to Unicode.</p></li>
+<li><p>Specify the non-Unicode character set being converted from Unicode.
+In this case it is ISO-8859-2 </p></li>
+<li><p>Convert the text from Unicode to the native character set </p></li>
+</ul>
+<codeblock xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;e32cons.h&gt;
+#include &lt;charconv.h&gt;
+#include &lt;f32file.h&gt;
+#include &lt;string.h&gt;
+#include &lt;stdlib.h&gt;
+
+LIT8(KNativeText, "abcd");
+LOCAL_C int doExampleL()
+{
+   char *inbuf = "abcd";
+   char *outbuf = NULL;
+   int inbytes,outbytes;
+   inbytes = outbytes = 4; 
+   
+   TInt retVal = KErrNone;
+   outbuf = (char*) malloc(outbytes);
+   RFs fileSession;
+   User::LeaveIfError(fileSession.Connect());
+   CleanupClosePushL(fileSession);
+  
+  //Allocates and constructs a CCnvCharacterSetConverter object
+  CnvCharacterSetConverter* conv = CCnvCharacterSetConverter::NewLC() ;
+  TPtrC8 remainderOfForeignText((const TText8*) inbuf,inbytes);
+  TBuf16&lt;256&gt; UnicodeText;
+  TBuf8&lt;256&gt; outputBuffer;
+  TInt numberOfUnconvertibleCharacters = 0;
+  TInt indexOfFirstByteOfFirstUnconvertibleCharacter = 0;
+  //Specifies the character set(ISO-8859-1) to convert to UNICODE
+  CCnvCharacterSetConverter::TAvailability  avail = conv-&gt;PrepareToConvertToOrFromL (KCharacterSetIdentifierIso88591, fileSession);
+ if(CCnvCharacterSetConverter::ENotAvailable == avail)
+ {
+   CleanupStack::PopAndDestroy(2);  //conv, fileSession
+   return KErrGeneral;
+ }
+ //Convert text encoded in the ISO-8859-1 character set into the Unicode character set (UCS-2).
+ retVal = conv-&gt;ConvertToUnicode(UnicodeText, remainderOfForeignText, numberOfUnconvertibleCharacters, indexOfFirstByteOfFirstUnconvertibleCharacter);
+ if(retVal &lt; 0 &amp;&amp; (retVal != CCnvCharacterSetConverter::EErrorIllFormedInput))
+ {
+  CleanupStack::PopAndDestroy(2);  //conv, fileSession
+  return retVal;
+ }
+ //Specifies the character set(ISO-8859-2) to convert from UNICODE
+ avail = conv-&gt;PrepareToConvertToOrFromL(KCharacterSetIdentifierIso88592, fileSession);
+ if(CCnvCharacterSetConverter::ENotAvailable == avail)
+ {
+   CleanupStack::PopAndDestroy(2);  //conv, fileSession
+   return KErrGeneral;
+ }
+ //Convert text encoded in the Unicode character set (UCS-2) to  ISO-8859-2
+ retVal = conv-&gt;ConvertFromUnicode(outputBuffer,UnicodeText, numberOfUnconvertibleCharacters, indexOfFirstByteOfFirstUnconvertibleCharacter);
+ if(retVal &lt; 0 &amp;&amp; (retVal != CCnvCharacterSetConverter::EErrorIllFormedInput))
+ {
+   CleanupStack::PopAndDestroy(2);  //conv, fileSession
+   return retVal;
+ }
+ TInt outputbufferLength = outputBuffer.Length();
+ strncpy(outbuf, (const char*) outputBuffer.Ptr(),outputbufferLength);
+ outbuf = outbuf + outputbufferLength;
+ CleanupStack::PopAndDestroy(2); //conv, fileSession
+ return retVal;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-862D3B3B-3369-5FF4-B81A-ED5BE415B035.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-862D3B3B-3369-5FF4-B81A-ED5BE415B035" xml:lang="en"><title>Window Server
+Internals</title><shortdesc>This section provides information about the internals of the Window
+Server. It is mainly aimed at system integrators, UI platform providers and
+device and hardware manufacturers. However, it also contains information about
+configuring the Window Server for testing and debugging, which may be of interest
+to application developers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-A0B84C7D-2A24-5C54-B136-E5BC5725CD7C">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Executable</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>wserv_nga.exe</filepath>  </p> </entry>
+<entry><p>The ScreenPlay version of the Window Server. </p> </entry>
+</row>
+<row>
+<entry><p> <filepath>wserv_nonnga.exe</filepath>  </p> </entry>
+<entry><p>The non-ScreenPlay version of the Window Server. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody><related-links>
+<link href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita"><linktext>Window Server
+  Component</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-863AD171-B40B-5056-96B1-A7B995DB3524.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-863AD171-B40B-5056-96B1-A7B995DB3524" xml:lang="en"><title>MIME Recognition Framework Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The plug-in writer writes the MIME recognizer and the plug-in user uses the MIME Recognizer. The procedure to be followed for writing and using the MIME recognizers are explained separately.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8661A7E0-F19A-41F8-9062-FBFAE70CF658.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-8661A7E0-F19A-41F8-9062-FBFAE70CF658" xml:lang="en"><title>Tactile
+feedback client API</title><shortdesc>The Tactile feedback client API is used for producing tactile feedback
+for different touch events.</shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Tactile feedback client API is a library API that has been implemented
+with a client-server technique. A major part of the processing is done on
+the client side, and thus API calls don't necessarily generate a client-server
+transaction immediately. Instead for e.g. changes to area registry are buffered,
+and then transferred to server-side at once.</p>
+<p>You can use tactile feedback in, for example, the following cases:</p>
+<ul>
+<li>When the user starts to scroll with the scroll bar, user can feel and/or
+hear when the scroll bar thumb has been caught.</li>
+<li>When button is pressed, user can feel and/or hear the button being pressed.</li>
+</ul>
+<p>The concept of logical feedback type is very important from this API's
+point of view. </p>
+<p>In practice it means that, for example, you should not try to use this
+API for producing vibrator feedback only. Instead, logical feedback types
+such as "basic" or "sensitive" are used on this level, and the actual physical
+effect then depends on the settings and device configuration. This way the
+feedback works in a unified way from the end user point of view in the whole
+device.</p>
+<section id="GUID-44CAF194-6B6A-4661-AB29-88BF700BBC60"><p>For user experience guidelines on tactile feedback, see <xref href="GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita">Tactile feedback</xref>.</p><p>For
+information on using the API, see <xref href="GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita">Providing
+tactile feedback for touch events</xref>.</p><p>For the Tactile feedback client
+API classes and header files, see Classes
+and Definitions.</p></section>
+<section id="GUID-E44747A5-92BF-4D7A-895C-C469112A4D32"><title>API class structure</title><p>All functionality of the Tactile
+feedback client API is provided in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html" format="application/java-archive"><codeph>MTouchFeedback</codeph></xref>.</p></section>
+<section id="GUID-0D0648C0-5AAE-48C1-82BD-025D6908E3B1"><title>Constraints</title><p>This API is valid for all platforms
+running on Symbian OS 9.4 or later.</p></section>
+<section id="GUID-E8D3D7BC-F365-45D7-A4AE-4393CF1B6795"><title>Error handling</title><p>The leave mechanism of Symbian environment is used to handle memory exhaustion. The panic mechanism is not
+used.</p> <p>The table below presents possible error conditions and responses
+to them.</p> <table id="GUID-E9186B9F-2C9B-4C09-B054-69D093BBE41D"><title>Possible
+error situations when using Tactile Feedback Client API</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Error situation</entry>
+<entry>Response</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><codeph>SetFeedbackArea</codeph> returns <codeph>KErrNoMemory</codeph> in
+case of an OOM situation.</entry>
+<entry>This error can usually be ignored by the application.</entry>
+</row>
+<row>
+<entry><codeph>SetFeedbackArea</codeph> returns <codeph>KErrArgument</codeph></entry>
+<entry>The given <codeph>CCoeControl</codeph> pointer is a <codeph>NULL</codeph> pointer
+or the control does not have any window associated with it (i.e., the feedback
+area setting is attempted before <codeph>SetContainerWindow</codeph> has been
+called on the control).</entry>
+</row>
+<row>
+<entry><codeph>SetFeedbackArea</codeph> returns <codeph>KErrNotSupported</codeph>.</entry>
+<entry>The given logical feedback type or triggering event type is out of
+range.</entry>
+</row>
+<row>
+<entry>A tactile feedback enabled control is moved with <codeph>CCoeControl::SetPosition</codeph>,
+but the feedback area is not moved.</entry>
+<entry>The control must override the <codeph>CCoeControl::PositionChanged</codeph> function,
+and update the feedback area there the same way as in the <codeph>SizeChanged</codeph> function.</entry>
+</row>
+<row>
+<entry>Area registry updates not are effective fast enough. This might happen
+in some applications which use very many frequently running active objects,
+so that the <codeph>CIdle</codeph> object used by the implementation of this
+API gets no change to run.</entry>
+<entry>Use the <codeph>FlushRegistryUpdates</codeph> function for forcing
+an update to the server side after doing all updates on the client side.</entry>
+</row>
+<row>
+<entry>A control's feedback areas are not automatically disabled when the
+control is dimmed.</entry>
+<entry><codeph>CCoeControl::SetMopParent</codeph> has not been called on the
+control, and thus the object provider hierarchy is broken.</entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-2190CCB3-0569-4A43-A300-BBE83AAD64B6"><title>Memory overhead</title><p>Using direct feedback does not cause
+additional memory overhead.</p> <p>Area registry based feedback consumes approximately
+32 bytes for each feedback area.</p></section>
+<section id="GUID-F903AC63-2526-4767-B326-56D43344B23B"><title>Extensions to the API</title><p>New logical feedback types
+can be added in later releases. Otherwise the Tactile feedback client API
+does not explicitly support any kinds of extensions to it.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8675AC01-E2D8-425C-899F-12BE99345AA9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8675AC01-E2D8-425C-899F-12BE99345AA9" xml:lang="en"><title>C++
+and Machine Architecture</title><shortdesc>The C++ language, following its foundation in C, is close to the
+machine architecture. This allows applications to be implemented efficiently,
+but, especially for developers new to the language, presents some issues of
+which you need to be aware. This topic reviews the basic language features
+from this perspective, and discusses how the resulting issues are handled.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section>       <title>Arithmetic types</title>       <p>An <codeph>int</codeph> is
+usually implemented as the natural machine word size of the particular implementation.
+This is 32 bits in most modern machines. It was 16 bits in older machines,
+and in a few machines it may even be 64 bits.     </p><p>Similarly, a pointer
+(a <codeph>void*</codeph>, for instance) is usually implemented as a machine
+word but, in some machines with special architectures, a pointer may be more
+complex.     </p><p>It is assumed that Symbian is implemented on a machine
+with a 32-bit or greater machine word, and 32-bit pointers. The types <codeph>TInt</codeph> and <codeph>TUint</codeph> are<codeph> typedefed</codeph> onto the built-in <codeph>int</codeph> and <codeph>unsigned int</codeph> types,
+and are guaranteed to be at least 32 bits.     </p><p>When you need a specific
+size, regardless of implementation, use a sized type. Several of these are
+available: </p><table id="GUID-8E1CEF20-AF41-4980-AA56-5CBF2B7F6A9E">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><codeph>TInt32</codeph>, <codeph>TUint32</codeph> </p> </entry>
+<entry><p>32-bit signed and unsigned integer</p>    <p> In each case, the
+representation is a 32-bit machine word which, in the ARM architecture, must
+be aligned to a four-byte boundary. The compiler ensures that this is always
+the case.</p>  </entry>
+</row>
+<row>
+<entry><p><codeph>TInt8</codeph>, <codeph>TUint8</codeph>, <codeph>TText8</codeph></p>  </entry>
+<entry><p>8-bit signed and unsigned integer, and 8-bit character     </p><p>In
+each case, the representation is an 8-bit byte, which has no specific alignment
+requirements.  </p></entry>
+</row>
+<row>
+<entry><p><codeph>TInt16</codeph>, <codeph>TUint16</codeph>, <codeph>TText16</codeph> </p></entry>
+<entry><p>16-bit signed and unsigned integer, and 16-bit character     </p><p>In
+each case, the representation is a 16-bit halfword, which should be aligned
+to a two-byte boundary.  </p></entry>
+</row>
+<row>
+<entry><p><codeph>TInt64</codeph>, <codeph>TUint64</codeph>  </p></entry>
+<entry><p>64-bit signed and unsigned integer     </p><p>These are typedefed
+to appropriate built-in types for the compiler being used (long long, and
+unsigned long long for ARM RVCT).  </p></entry>
+</row>
+<row>
+<entry><p><codeph>TReal</codeph>, <codeph>TReal64</codeph> </p></entry>
+<entry><p>Double-precision floating point, IEEE754 64-bit representation 
+   This is the floating-point type recommended for general use.     </p><p>You
+are recommended to perform operations in integer arithmetic if possible (for
+instance, most GUI calculations), and to use floating-point only when the
+problem demands it (for instance, a spreadsheet application).     </p><p>On
+processors that have floating point hardware, the compiler generates host
+instructions which use that hardware directly. On processors which don't have
+a floating point unit, the compiler implements the calculations in software.
+ </p></entry>
+</row>
+<row>
+<entry><p><codeph>TReal32</codeph> </p></entry>
+<entry><p>32-bit floating point     </p><p>This is smaller and quicker, but
+should only be used when space and/or time are at a true premium, as its precision
+is unsatisfactory for many applications.  </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>     </section>
+<section><title>Compound types</title><p>Apart from classes, C++ inherits
+from C various other types of compounding.     </p><p>A struct maps an area
+of memory: </p><codeblock xml:space="preserve">struct TEg
+    {
+    TInt iInt; // offset 0, 4 bytes
+    TText8 iText; // offset 4, 1 byte
+        // 3 wasted bytes
+    TReal iReal; // offset 8, 8 bytes
+    } // total length = 16 bytes</codeblock><fig id="GUID-70477651-EC14-4321-ACA5-79CEE4AEC69E">
+<image href="GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e2078_href.png" placement="inline"/>
+</fig><p>Structures are regarded as <codeph>T</codeph> types: that is they
+may not own heap-allocated resources such as <codeph>C</codeph> type classes.
+    </p><p>An array contains many built-ins or other types </p><codeblock xml:space="preserve">TInt a[32]; // 32 TInts, = 128 bytes  
+S b[3]; // 3 Ss, = 48 bytes </codeblock><p>The main disadvantage of using
+C++ arrays is that there is no automatic checking of index values. For this
+reason, and to support more complex containers, C++ has evolved the Standard
+Template Library (STL). Symbian OS does not use STL, but provides its own
+range of efficient container classes, for fixed, dynamic, and associative
+arrays. For details, see <xref href="GUID-2F64B579-73D3-548A-9104-16483AF77BCB.dita">Dynamic
+Arrays</xref>. </p></section>
+<section><title>Pointers</title><p>A pointer is a memory address. If you can
+take the address of an object, then you can refer to it by pointer:</p><codeblock xml:space="preserve">S* ps; // pointer to an S
+ps=&amp;s // take address of existing S
+</codeblock><p>A pointer is a 32-bit machine word, and could point to anything.</p><fig id="GUID-D33AB198-0B62-4391-B86D-088595AE6B8B">
+<image href="GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e2109_href.png" placement="inline"/>
+</fig><p>The specifier is placed next to the type rather than the name.   </p><p>There
+is often a need to refer to memory as anything: for this, a <codeph>void*</codeph> pointer
+is used in C++. In Symbian, a <codeph>TAny*</codeph> may be referred to instead.
+A <codeph>TAny*</codeph> is a pointer to anything. </p></section>
+<section><title>Strings</title><p>In C++, the basic string is an array of
+characters:</p><codeblock xml:space="preserve">char* hello="hello";</codeblock><p>This statement
+does two things: firstly, it sets aside six bytes of memory containing the
+characters 'h', 'e', 'l', 'l', 'o', '\0'. Secondly, it sets the pointer hello
+to contain the address of the first of those bytes. </p><fig id="GUID-08C1AF40-8D93-414E-B103-1E57AB17480F">
+<image href="GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e2138_href.png" placement="inline"/>
+</fig><p>Functions accessing the string rely on this address as its starting
+point, and the terminating <codeph>\0</codeph> to indicate its end. Functions
+which manipulate the string must either deliberately not extend it, or must
+have some cue as to the amount of memory reserved for the string (beyond the
+trailing<codeph>\0</codeph>) so they know how much it can be extended. This
+leads to an awkward programming style, and every C++ library provides a way
+to manipulate strings more elegantly. The Symbian platform solution is <i>descriptors</i>:
+these are introduced in <xref href="GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita">Descriptors</xref></p></section>
+<section><title>Functions</title><p>Functions are a piece of code which can
+be called and executed from anywhere else in a program. The stack is used
+to pass parameters and to contain local variables. The stack is often augmented
+by machine registers, especially in a register-rich processor such as the
+ARM, so that memory is often not used. But, conceptually, there is a stack,
+and for the purposes of this explanation it is convenient to consider the
+stack as if it were implemented entirely in memory.   </p><p>Parameters are
+passed by copying or evaluating onto the called functions stack frame. It
+is bad practice to pass large parameters, such as an entire struct, or, in
+fact, anything beyond two machine words in size, because this involves excessive
+copying. Instead, a pointer or a reference should be used to pass the address,
+instead of the data itself.   </p><p>In a multi-tasking system such as Symbian,
+each thread has its own stack, which is a pre-allocated area of memory. Each
+function then allocates its own frame from the stack on entry, and de-allocates
+it on exit. The advantage of the stack mechanism is that allocation and de-allocation
+are very rapid indeed— just a couple of instructions. Also, the lifetime of
+any variable on the stack is very well defined: it is the lifetime of its
+owning function, or, in fact, its owning block, since functions may have blocks
+within them.   </p><p>When a function returns, its stack memory is still there:
+it is just not allocated. The stack memory will be re-used by the next function
+that is called. A potential source of error is to allocate an object on a
+functions stack frame, and then return a pointer to it: </p><codeblock xml:space="preserve">TEg* foo()
+    {
+    TEg s;
+    TEg* ps=&amp;s
+    return ps; // !! error !!
+    }
+</codeblock><p>This pointer will not be valid for long, because the memory
+will be re-used when the next function is called. You should never allow this
+to happen. This error is so obvious that a compiler will trap it. But it can
+occur in more subtle forms: </p><codeblock xml:space="preserve">foo(CContainer* aContainer)
+    {
+    TEg s;
+    TEg* ps=&amp;s
+    aContainer-&gt;iMember=ps;
+    }
+</codeblock><p>These cannot be trapped so easily. </p></section>
+<section><title>Heap</title><p>Each thread also has a heap. You can allocate
+and de-allocate objects on the heap at will, and refer to them by pointer.
+The benefit of a heap is that the lifetime of an object is entirely within
+your control. This power comes with responsibility: you must not forget to
+de-allocate objects once you have finished with them, and you must not use
+pointers to objects that have been de-allocated. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-868C1A38-3CD0-4082-8106-DC3EE1F815D8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-868C1A38-3CD0-4082-8106-DC3EE1F815D8" xml:lang="en"><title>System
+events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>System events are enumerated in <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Architecture/APGTASK.HGlobals.html#%3a%3aTApaSystemEvent" format="application/java-archive"><parmname>TApaSystemEvent</parmname></xref>, which is defined in the <parmname>apgtask.h</parmname> header.
+You must override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleSystemEventL%28const%20TWsEvent%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeAppUI::HandleSystemEventL()</parmname></xref> to handle
+these events, which should be done in the UI controller. The default implementation
+is empty. The possible events are as follows:</p>
+<codeblock id="GUID-F0606F71-729A-4D6B-AAC6-876A526DDFAC" xml:space="preserve">enum TApaSystemEvent
+    {
+    EApaSystemEventShutdown = 1,
+    EApaSystemEventBackupStarting,
+    EApaSystemEventBackupComplete,
+    EApaSystemEventBroughtToForeground
+    };
+</codeblock>
+<p>The following is a code example of system event handling:</p>
+<codeblock id="GUID-86877508-AD28-4576-B9D5-55565B0F4A4A" xml:space="preserve">void CExampleAppUI::HandleSystemEvent( const TWsEvent&amp; aEvent )
+    {
+    switch( *( TApaSystemEvent* )( aEvent.EventData() ) )
+        {
+        case EApaSystemEventBackupStarting:
+            {
+            // Handle backup starting
+            //...
+            break;
+            }
+        case EApaSystemEventBackupComplete:
+            {
+            // Handle backup complete
+            //...
+            break;
+            }
+        case EApaSystemEventShutdown:
+            {
+            // Handle shutdown
+            //...
+            break;
+            }
+        }
+        // Call the base class implementation
+        CAknAppUi::HandleSystemEvent( aEvent );
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-868D5B32-1CC4-506E-9C49-C86428B9A50F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-868D5B32-1CC4-506E-9C49-C86428B9A50F" xml:lang="en"><title>Symbian SQL</title><shortdesc>The Symbian SQL component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA" xml:lang="en"><title>Menu</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Mobile device users can use the Menu to access applications. Pressing the
+Home / Menu key opens the Menu, where the user may browse and select an application.
+The Menu was previously called <i>Application Shell</i> and the Home / Menu
+key was called <i>Applications key</i>. In addition to direct access to applications,
+related applications can be collected in folders.</p>
+<p>Applications are presented as a grid of items by default. User can select
+a customized version of the Menu layout, such as a list. The recommended grid
+layout is 3 x 4 (portrait) or 4 x 3 (landscape), that is 12 icons. Pressing
+the Selection key opens an application and closes the Menu.</p>
+<fig id="GUID-10020DA4-B639-4D07-9395-52530C4E6813">
+<title>Menu with a 3 x 4 grid in portrait (left) and 4 x 3 grid in landscape
+(right)</title>
+<image href="GUID-913E38E4-F227-4976-B7DB-42163D52907C_d0e52681_href.png" scale="70" placement="inline"/>
+</fig>
+<p>For more details on the landscape orientation, see <xref href="GUID-685C3F33-1530-4984-B125-E4EF8EBB2EE8.dita">Symbian
+UI with rotation</xref>.</p>
+<section id="GUID-D50A0D9B-B093-4529-971A-7239FFBA0880"><title>Shortcuts</title>When
+the Menu is opened, numeric keys 1-9 can be used as shortcuts to select an
+application. The keys are mapped directly to the nine icons in Menu’s initial
+view, so that the Numeric key 1 corresponds to the top-left application and
+the Numeric key 9 to the bottom-right one.</section>
+<section id="GUID-84905F51-FD23-48EB-9C36-2022DB91DDF5"><title>Customizing
+Menu</title><p>The user can adjust the order of applications, create folders
+and move applications into folders within the Menu. It is possible to have
+folders within folders in Menu, allowing for more hierarchically organized
+structures. The number of levels for folder-in-folder is not limited and folders
+are user-customizable (the user can add and remove folders). These managing
+functions are available in the <b>Options</b>. In addition, the layout of
+the Menu can be customized.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-86E704A2-FB15-5D78-BFD2-0E7117360342.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-86E704A2-FB15-5D78-BFD2-0E7117360342"><title>Fields</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Fields allow calculated text, such as a page number, file name, or time and date, to be inserted into a text object and updated when required. Fields are designed to go into printer headers. As far as the content of a text object is concerned, fields are just a sequence of characters. The field data is maintained as a separate part of a plain text object’s data. The <xref href="GUID-2279727F-55BD-3D88-9E56-96B102F74E5C.dita"><apiname>CTextField</apiname></xref> class provides the base for fields.</p> <p>The field system is extensible: the <xref href="GUID-6202B0B7-663C-3172-BE13-88D77081B42C.dita"><apiname>MTextFieldFactory</apiname></xref> field factory allows new field types to be added to those already provided.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e402615_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486" xml:lang="en"><title>Confirmation
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-5DD4573D-61D8-4B78-9572-4D5BEAC53E8A"><p>Confirmation notes
+inform the user about a successfully completed operation. They have a short
+duration and a subtle tone (they should not be used after every kind of successful
+action).</p><fig id="GUID-E4323AE0-295E-42C0-8B7F-248F43CA33D6">
+<title>Confirmation note</title>
+<image href="GUID-6AE6AEA2-7330-433B-9994-3BC2EC5ECD38_d0e60608_href.png" scale="33" placement="inline"></image>
+</fig></section>
+<section id="GUID-8204F49B-E601-4CBB-8778-33912E4EF76F"><title>Guidelines
+for using confirmation notes</title><p>Use a confirmation note when:</p><ul>
+<li>         <p>The effect of the operation cannot be seen directly by some
+other means. For example, <uicontrol>Message sent</uicontrol>.</p>       </li>
+<li>         <p>There is some relevant information to be communicated by it.
+For example, <uicontrol>Last call duration</uicontrol>.</p>       </li>
+</ul><p>Confirmation notes should not be used after every completed operation,
+as this would easily start to annoy users. Confirmation notes should not be
+used when:</p><ul>
+<li>         <p>There is already another dialogue in the procedure, for example <uicontrol>Do
+you want to remove this message? Y/N</uicontrol>.</p>       </li>
+<li>         <p>A progress indication is visible during the procedure.</p> 
+     </li>
+<li>         <p>The user can see the result of the operation when it is performed.
+For example, when adding or removing objects in a list.</p>       </li>
+<li>         <p>A setting has been changed. The new value of the setting is
+visible in the setting item.</p>       </li>
+<li>         <p>The operation can be considered minor or so frequent that
+a note would be annoying. For example, Copy-Paste actions.</p>       </li>
+</ul></section>
+<section id="GUID-6EFD99CB-F754-4398-9526-7E51E16013A5"><title>Using
+confirmation notes in C++ applications</title><p>You can create either a basic
+confirmation note that is displayed only when your application is in the foreground
+or a global note that stays displayed even if the application launching the
+note is not in the foreground. The related APIs are the Notes
+API (for basic notes) and the Notifiers
+API (for global notes).</p><p>To use a confirmation note with the default
+icon, text, sound, and duration, create an instance of the note class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknConfirmationNote.html" format="application/java-archive"><codeph>CAknConfirmationNote</codeph></xref>.
+For implementation infomation, see Creating
+a waiting confirmation (basic) note. </p><p>To create a global confirmation
+note, use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref> in
+the Notifiers
+API. For implementation information, see Using
+global notes and Using
+global notes with user interaction.</p><p>For basic notes, you can
+change the icon or text displayed in the note, use a different kind of sound,
+or change the note duration using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p><p>For information on customizing
+global notes, see Enhancing
+global notes. You can change the graphic, animation, tone, and softkeys
+using the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#cee323af0704e07d3f1887a4a13c1639" format="application/java-archive"><codeph>SetGraphic</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#d23699273b28a39c0817bc575be767ab" format="application/java-archive"><codeph>SetAnimation</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#a8748ee0b3342c24a11b8ed0ea9121bc" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#f31895e5838994b1c70300cfd3d7d127" format="application/java-archive"><codeph>SetSoftkeys</codeph></xref>.</p></section>
+
+
+
+</conbody><related-links>
+<link href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita"><linktext>Information
+note</linktext></link>
+<link href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita"><linktext>Warning note</linktext>
+</link>
+<link href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita"><linktext>Error note</linktext>
+</link>
+<link href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita"><linktext>Permanent
+note</linktext></link>
+<link href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita"><linktext>Wait note</linktext>
+</link>
+<link href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita"><linktext>Progress
+note</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e361961_href.png has changed
Binary file Symbian3/SDK/Source/GUID-876EE000-01B7-4457-AE9C-CE56E48CFF11_d0e53301_href.png has changed
Binary file Symbian3/SDK/Source/GUID-879B4D94-2614-4515-9947-B1329F62E90A_d0e52830_href.png has changed
Binary file Symbian3/SDK/Source/GUID-87AA5195-AFC4-42C9-B9BC-B31008CA3882_d0e54417_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-87BEA6F9-B236-50CF-9DB3-36234A6EB797.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-87BEA6F9-B236-50CF-9DB3-36234A6EB797" xml:lang="en"><title>System GUI
+Framework example code</title><shortdesc>This describes the example code for the System GUI Framework module. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-87C81097-A892-5E45-A3CC-BE2C65A2FA70.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-87C81097-A892-5E45-A3CC-BE2C65A2FA70" xml:lang="en"><title>Subtitle Graphic Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-87CD8C58-F6B9-5D6B-9D7B-862979DE3B6F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-87CD8C58-F6B9-5D6B-9D7B-862979DE3B6F" xml:lang="en"><title>Notification
+Request Tutorial</title><shortdesc>This tutorial describes how to receive notification of the events
+with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+
+
+<context id="GUID-1EA31B19-BBB0-5723-9896-66666FEABC1D"><p> <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> can
+notify the client applications about the status changes to the events like: </p> <ul>
+<li id="GUID-180B5C84-9ECB-55FE-8B9E-E84ED56C32A3"><p>to detect inbound calls </p> </li>
+<li id="GUID-8305981A-F9B6-52EC-97F1-CF74C0238315"><p>to detect the phone
+charger connection </p> </li>
+<li id="GUID-F0140C6D-2A85-587B-91BB-C432918518AF"><p>battery charge information </p> </li>
+</ul> <p>The client applications can get the notification of the events that
+contain a <b>notification event</b>, an <b>information class</b> and a <b>cancellation
+code</b>. For example, the <xref href="GUID-0DA6722B-0700-5612-884A-F3B7733E5252.dita">Voice
+Line Status</xref> event describes that the client applications can receive
+the notification when it changes. The event description contains: </p> <table id="GUID-603AF473-FC6E-52FE-A2B7-CA4211A0D9BF">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Item</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EVoiceLineStatusChange</apiname></xref>  </p> </entry>
+<entry><p>notification event </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallStatus</apiname></xref>  </p> </entry>
+<entry><p>information class </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EVoiceLineStatusChangeCancel</apiname></xref>  </p> </entry>
+<entry><p>cancellation code </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </context>
+<steps id="GUID-0A66184A-7434-5CA1-B4A6-D07BB52AB6A9">
+<step id="GUID-78BA430F-A345-52AC-833A-FE170FEAF79A"><cmd/>
+<info>create an instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> </info>
+<stepxmp><codeblock id="GUID-8E9E0D08-7AB5-537F-880E-8342F38BA6C4" xml:space="preserve">CTelephony* telephonyApi = CTelephony::NewL();
+CleanupStack::PushL( telephonyApi );</codeblock> </stepxmp>
+</step>
+<step id="GUID-570A8873-7F1E-5569-9791-9F530FE03520"><cmd/>
+<info>create an instance of the class, passing it the pointer to <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> </info>
+<stepxmp><codeblock id="GUID-901E03A3-028E-5B2D-B336-3CD1E309F692" xml:space="preserve">CNotifyExample *exampleObject = new CNotifyExample( telephonyApi );
+CleanupStack::PushL( exampleObject );</codeblock> </stepxmp>
+</step>
+<step id="GUID-CC391D40-F006-5874-95EF-36683EE2180B"><cmd/>
+<info>call the object's <codeph>RequestNotification</codeph> method to start
+the request. This calls <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::NotifyChange()</apiname></xref>  </info>
+<stepxmp><codeblock id="GUID-EFC8D54E-B490-5E5E-A742-8E0796CA48BE" xml:space="preserve">exampleObject-&gt;RequestNotification();</codeblock> </stepxmp>
+<info>pass the notification event and an empty instance of the information
+class. This method starts an asynchronous operation that completes when the
+requested notification event occurs </info>
+<info>The new status will have been written into the <codeph>TCallStatus</codeph> object
+that was given to <codeph>NotifyChange()</codeph>  </info>
+</step>
+<step id="GUID-34EEDBDE-BA17-5261-8B22-222AAA95D3E2"><cmd/>
+<info>you can see all the notification events in <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TNotificationEvent</apiname></xref>.
+This also shows which information class is associated with each event </info>
+</step>
+<step id="GUID-BC613CF8-E088-55CF-A721-420B6ADC70FD"><cmd/>
+<info>you can cancel a request for notification any time before the operation
+finished. Do this by passing <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::CancelAsync()</apiname></xref> the
+cancellation code </info>
+<info><p><note> You should not request notification before the  previous notification
+request is either completed or cancelled. The notification request is started
+after the active object is created, so there could not be a request. If you
+are &lt;bold&gt;not&lt;/bold&gt; sure that previous requests for that object have
+completed, call the<xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita#GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F/GUID-0BEA3D01-369A-3ED4-A8DB-22D3B1A11C97"><apiname>CActive::Cancel</apiname></xref> method before issuing
+a new request:<codeblock xml:space="preserve">exampleObject-&gt;Cancel();exampleObject-&gt;RequestNotification();</codeblock> 
+This will cancel any previous requests.</note></p></info>
+</step>
+</steps>
+<example id="GUID-6366AAAA-6C55-517C-B702-420730097399"><title>Voice line
+status example</title> <p>Here is an active object that detects a change in
+voice line status. It doesn't do much when the voice line status changes;
+it simply stores the new status values and then starts the next asynchronous
+operation. </p> <p>This is a basic <xref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita">Active
+Object</xref>. You will need to know about active objects in order to use <codeph>CTelephony</codeph>'s
+notification abilities. </p> <codeblock id="GUID-86411553-8C98-5D4E-BBC5-5F7F3C8D8D91" xml:space="preserve">
+ /*
+   Example CTelephony Notification
+
+   This class uses the CTelephony API to get notification when a
+   phone's voice line status changes.
+
+   This class is an active object.  You will need to have knowledge of
+   active objects in order to understand this class.  All active
+   object are derived from CActive.
+
+   This program can be easily modified to get notification when other
+   events occur.
+
+   See CTelephony::TNotificationEvent for a list of
+   events.
+
+   */
+
+#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CNotifyExample : public CActive
+{
+
+ public:
+    // Constructor/Destructor
+    CNotifyExample( CTelephony* aTelephony );
+
+    // Request voice line status change notification
+    void RequestNotification();
+
+ private:
+    /*
+    These are the pure virtual methods from CActive that
+    MUST be implemented by all active objects
+    */
+    void RunL();
+    void DoCancel();
+
+ private:
+    /*
+    A reference to a CTelephony, obtained with CTelephony::NewL()
+    or NewLC()
+    */
+    CTelephony* iTelephony;
+
+    /*
+    When the voice line status changes (and hence the asynchronous
+    operation completes) the new voice line status is written into
+    iLineStatus. Until this point, iLineStatus is not valid.
+
+    If you change this class to get notification of other events,
+    then change this class. CTelephony::TNotificationEvent lists
+    the classes associated with each event.
+    */
+    CTelephony::TCallStatusV1 iLineStatus;
+    CTelephony::TCallStatusV1Pckg iLineStatusPckg;
+};
+
+
+
+
+/*
+   Default constructor.  Pass it a reference to a CTelephony, created
+   with CTelephony::NewL() or NewLC()
+   */
+CNotifyExample::CNotifyExample(CTelephony* aTelephony): CActive( EPriorityStandard ), iTelephony( aTelephony ), iLineStatusPckg( iLineStatus )
+    {
+        //default constructor
+        iLineStatus.iStatus = CTelephony::EStatusUnknown;
+    }
+
+
+
+/*
+   This method requests notification by calling
+   CTelephony::NotifyChange() to initialise an asynchronous operation.
+   Then it immediately calls CActive::SetActive to start the
+   operation.  The operation completes when the notification event
+   occurs.
+
+   In this case, we tell CTelephony to wait for the
+   CTelephony::EVoiceLineStatusChange notification event, hence the
+   event occurs when the voice line status changes.
+
+   For other events, change the notification event in the call to
+   CTelephony::NotifyChange().  The CTelephony::TNotificationEvent
+   description  all the notification events.
+   It also list the information class to
+   pass to CTelephony::NotifyChange().  The TCallStatus
+   class is associated with CTelephony::EVoiceLineStatusChange.
+   */
+void CNotifyExample::RequestNotification()
+    {
+
+    /*
+    Panic if this object is already performing an asynchronous
+    operation
+          */
+    _LIT( KNotifyExamplePanic, "CNotifyExample" );
+    __ASSERT_ALWAYS( !IsActive(), User::Panic( KNotifyExamplePanic, 1 ));
+    
+    iTelephony-&gt;NotifyChange( iStatus, CTelephony::EVoiceLineStatusChange, iLineStatusPckg );
+    SetActive();
+    }
+
+
+/*
+   The active object's RunL method is called when the asynchronous
+   event completes.  In this case, RunL is called when the voice line
+   status changes.  When this occurs, the new voice line status is
+   written to the iLineStatus.  iLineStatus was passed to
+   CTelephony::NotifyChange() when the asynchronous operation was
+   started.
+
+   This is where you put your code to respond to your chosen
+   notification event.
+
+   In all active objects, iStatus indicates whether the asynchronous
+   operation succeeded, failed, or is still in progress.  KErrNone
+   indicates success, and hence the value in iStatus is valid.
+   */
+void CNotifyExample::RunL()
+    {
+    if( iStatus==KErrNone )
+        {
+        /*
+        Insert code to respond to the change of voice line status
+        here.  A typical use to answer a call if the voice line
+        status is 'ringing' (EStatusRinging)
+
+        Remember that you must implement a RunError() method if
+        your code in RunL can leave.
+        */
+            if( iLineStatus.iStatus == CTelephony::EStatusRinging ); // Answer call by calling 'AnswerIncomingCall()'
+            {
+            /* Request the next notification */
+            iTelephony-&gt;NotifyChange( iStatus, CTelephony::ESignalStrengthChange, iLineStatusPckg );
+            SetActive();
+            }
+        }
+    }
+
+/*
+   Like all active objects, you must supply a DoCancel() method to
+   cancel the asynchronous operation.  This must cancel a CTelephony
+   notification operation with CTelephony::CancelAsync.  Give the method
+   the appropriate 'cancellation event' from those in 'TCancellationRequest'
+
+   In this case, we are cancelling the "voice line status Change" event,
+   and so we need to supply the EVoiceLineStatusChange cancellation code.
+   If you change this class to respond to a different notification
+   event, remember to change the call to CTelephony::CancelAsync.
+   */
+
+void CNotifyExample::DoCancel()
+    {
+        iTelephony-&gt;CancelAsync( CTelephony::EVoiceLineStatusChangeCancel );
+    }  </codeblock> </example>
+<postreq id="GUID-CD5428AA-DCE8-5BEA-AEC4-7A159853EF76"><p><b>Receive notification of other events </b> </p> <p>The previous examples
+detect changes in voice line status. You can adapt this example for other
+events as follows: </p> <ul>
+<li id="GUID-BC170E42-C666-5882-AA89-13804DC9B28E"><p>In the <codeph>RequestNotification()</codeph> method,
+pass <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::NotifyChange()</apiname></xref> the <b>notification
+event</b> you want to detect, listed in <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TNotificationEvent</apiname></xref>.
+Each event has an <b>information class</b> associated with it, which stores
+the new information after it has changed. Pass <codeph>NotifyChange()</codeph> an
+instance of the information class, too: </p> <codeblock id="GUID-D7A25EFA-D6C0-5EE3-965E-795F6DD99FF6" xml:space="preserve">CNotifyExample::RequestNotification()
+    {
+    _LIT( KNotifyExamplePanic, "CNotifyExample" );
+    __ASSERT_ALWAYS( !IsActive(), User::Panic( KNotifyExamplePanic, 1 ));
+        
+    iTelephony-&gt;NotifyChange( iStatus, 
+                              ---Insert notification event---
+                              ---Insert packaged information class instance--- );
+    SetActive();
+    }</codeblock> <p>You will need to declare the information class instance
+in the <codeph>CNotifyExample</codeph>'s declaration. </p> </li>
+<li id="GUID-FE3772D6-9624-528F-BDDD-0B474466CB0E"><p>Change the code in <codeph>CNotifyExample::RunL</codeph> that
+handles the event. </p> </li>
+<li id="GUID-F104AF0D-D6AC-5052-9A96-010B49D5C600"><p>Change the <codeph>DoCancel</codeph> method
+to cancel the correct event. Insert the correct <b>cancellation code</b> from
+those in <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCancellationRequest</apiname></xref>: </p> <codeblock id="GUID-2E58B2CD-BC95-5C79-86D9-0EC6EA81C9AF" xml:space="preserve">CNotifyExample::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(---Insert cancellation code--- );
+    }</codeblock> </li>
+</ul> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-87DB3E71-AAE1-57B6-BC79-CBAF8382614A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-87DB3E71-AAE1-57B6-BC79-CBAF8382614A"><title>Multiple Screens Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-3CAFBA33-DED4-572F-8CCC-03A1204397F5"><title>Purpose</title> <p>Multiple screens allow an application to be displayed on more than one screen simultaneously, and also to react to a change in the active screen whilst the application is running. Prior to the implementation of this feature, applications could only display on one screen during its lifetime. </p> <p>When an application creates a view it will be allowed to specify which screen that view will be displayed on. The view will be fixed to that screen, but the application can then create another view on a different screen. If the characteristics (for example, size or colour depth) of the screens are similar, the view on the second screen could just be a second instance of the original view. </p> <p>Some typical uses for taking advantage of multiple screens could be: </p> <ul><li id="GUID-981E73A1-7B5B-5286-94FB-B6A46B2FA90F"><p>A clamshell device with a screen on the inside and one on the outside. The user is working on an application on one screen. The device is opened or closed and the application switches itself to the other screen. </p> </li> <li id="GUID-22C700DD-AC66-5DF1-B35C-509E5C097773"><p>A clamshell device with two screens one on each side of the inside. An application shows part of its data on each screen. </p> </li> <li id="GUID-BC79265B-6156-5B76-908F-B1FC1D808A07"><p>A phone application which displays itself on all screens when the user is not using them for other purposes. </p> </li> </ul> </section> <section><title>Architectural Relationships</title> <p><b>Component Changes</b> </p> <p>The CONE component (which provides the control environment) has been extended to support multiple screens.<codeph>iCoeEnv-&gt;ScreenDevice(</codeph> <i>screennumber</i> <codeph>)</codeph> will return a pointer to the requested screen. </p> <p>WSERV has also been extended to support multiple screens. Specifically, <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-D784A90A-C7C0-37A9-A6AF-A83A50E78F72"><apiname>RWindowGroup::ConstructL()</apiname></xref> has been overloaded so that a screen device that is associated with a screen can be passed as a parameter during the construction of a window group. </p> </section> <section><title>Description</title> <p><b>Finding out information about a screen</b> </p> <p>The class <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref> can be used to query WSERV about the window groups on a particular screen and the number of screens on the device. </p> <p>The class <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref> can be used to query the physical characteristics of the screen, and set the parameters of the corresponding logical screen associated with it. </p> <p>The class <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> is the client side handle to the server side window group. </p> <p>Both <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref> and <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref> are needed as a pair to draw on a screen. </p> <p>The Cone component maintains the array of screen devices and window group pairs through its <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-0179374E-3601-3C6C-BC0F-168C7F34BC14"><apiname>RWsSession::WsSession()</apiname></xref> method. The screen number is used to index this array in order to retrieve a particular window group and its corresponding screen device. This array can be queried in order to find out information such as: </p> <ul><li id="GUID-D93FCD79-B12B-525B-8A2F-BA28436DCFEC"><p>the window group with the current keyboard focus </p> </li> <li id="GUID-EECD3D6D-D0A1-566A-B1DF-05AF59A7995F"><p>the window group with focus on a particular screen </p> </li> <li id="GUID-C4733651-B987-5990-962D-40A83A1F4B81"><p>the maximum colour and display mode on a particular screen </p> </li> <li id="GUID-B8617AA3-A46A-5866-8E0E-BD9763FB9EA7"><p>the list of colour modes for a particular screen </p> </li> </ul> <p><b>Creating a control on a particular screen</b> </p> <p>A control is associated with a window and a particular window group. A window group is associated with a screen device, which in turn is associated with a screen. To create a control on a particular screen, retrieve an appropriate window group on that screen and use it as the parameter in the control’s <codeph>ConstructL()</codeph>. The window for that control will then be created on that screen </p> <p><b>Graphics Context</b> </p> <p>The class <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> provides the interface for the application’s window graphics context and can be activated on any window in the application. This means that it can be used on any screen on the phone </p> <p><b>Window Group Focus Policy</b> </p> <p>There are two focus policies supported by WSERV. The default focus policy is that it is only the focused window group on the focused screen that receives focus gained and focus lost events. The new policy is that any window group can receive focus gained and lost events and can be switched on by defining the keyword <codeph>MULTIFOCUSPOLICY</codeph> in the <codeph>wsini.ini</codeph> file. </p> <p><b>Limitations</b> </p> <p><b>Pointer Events </b> </p> <p>The first screen created is also the primary screen in the system. It is important to note that only the primary screen can respond to pointer events. This is due to the fact that the kernel supports only one screen digitiser. </p> <p>For information about further limitations specifically related to the legacy nature of Cone, please see <xref href="GUID-779893C2-A9B5-591A-8A5B-6419C4244ACE.dita">How To Multiple Screens</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-88091838-03FC-550F-9A3D-DA70907EF955"><title>Imaging Frameworks Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Imaging Frameworks component. </p> <section><title>Purpose</title> <p>This is a lightweight component which supports the image conversion function (that enables you to encode and decode an image), the image transformation function and the image display function. </p> </section> <section id="GUID-B7129F68-719C-5C6A-A842-E8ACA71980E4"><title>Required background</title> <p>Imaging Frameworks provides access to the Imaging Plug-ins component to facilitate some of the more common image formats. </p> <p> <b>Note:</b> The image formats listed below, are supported only for <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> and <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref> : </p> <table id="GUID-33F74B43-9D62-54C3-8E6A-7E55C6EF6685"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Format</entry> <entry>Encode support</entry> <entry>Decode support</entry> </row> </thead> <tbody><row><entry><p>BMP (Bitmap) </p> </entry> <entry><p>1,4,8 and 24bpp formats </p> </entry> <entry><p>1,4,8,16,24,32 bpp and RLE encoded formats </p> </entry> </row> <row><entry><p>EXIF (Exchangeable Image File format) </p> </entry> <entry><p>EXIF 2.2 embedded metadata </p> </entry> <entry><p>EXIF 2.2 embedded metadata </p> </entry> </row> <row><entry><p>GIF (Graphics Interchange Format) </p> </entry> <entry><p>Single frame, no transparency ( GIF87a format ) </p> </entry> <entry><p>Single and multi frame, bitmap mask support (GIF87a format and GIF89a format) </p> </entry> </row> <row><entry><p>JPEG (Joint Photographic Experts Group) </p> </entry> <entry><p>Yes </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>MBM (Multi Bitmap) </p> </entry> <entry><p>Single frame </p> </entry> <entry><p>Single and multi frame </p> </entry> </row> <row><entry><p>MNG (Multiple Image Network Graphic) </p> </entry> <entry><p>No </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>PNG (Portable Network Graphics) </p> </entry> <entry><p>No transparency </p> </entry> <entry><p>Bitmap mask support </p> </entry> </row> <row><entry><p>SMS OTA (Over The Air) </p> </entry> <entry><p>No </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>TIFF (Tagged Image File Format) </p> </entry> <entry><p>No </p> </entry> <entry><p>LittleEndian and BigEndian sub-type support </p> </entry> </row> <row><entry><p>WBMP (Wireless Bitmap) </p> </entry> <entry><p>No </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>ICO (Icon) </p> </entry> <entry><p>No </p> </entry> <entry><p>Single and multi frame </p> </entry> </row> <row><entry><p>WMF (Windows Meta File) </p> </entry> <entry><p>No </p> </entry> <entry><p>Std, apm and clp sub-type support (all valid windows metafiles) </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural relationships</title> <p>Imaging Frameworks is a standalone image component in the Multimedia APIs and Frameworks collection. </p> </section> <section><title> Imaging Frameworks component summary</title> <p>This component includes the following functionality: </p> <ul><li id="GUID-103086A8-A32C-54D4-9DBA-5CD45E5AA3C3"><p> <b>Image Conversion </b> Provides facilities to convert single and multiframe images, stored in files or descriptors to <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> objects. The library also provides facilities to convert single frame images from <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> objects to files and descriptors. For more information about Image Conversion functionality, see <xref href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita#GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930/GUID-5BECDECD-C1EC-5579-BE91-8F8004CD0DC4">Image Conversion Overview</xref>. </p> </li> <li id="GUID-D64DCD73-74AA-5CF7-B054-397A2DB8DDB2"><p> <b> Image Transform </b>  <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> provides an interface for scaling the images which is still pictures encoded in the standard formats such as JPEG, GIF and PNG. This function works on the images stored in the files or the descriptors. For more information about Image Transform functionality, see <xref href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita">Image Transform Overview.</xref>  </p> </li> <li id="GUID-65999978-F0F7-5E9B-9E1C-946CE71D4528"><p> <b>Image Display </b>  <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> provides a convenient interface to convert the encoded images into <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object that are ready to be displayed on the screen. For more information about Image Display functionality, see <xref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita">Image Display overview</xref>. </p> </li> <li id="GUID-D2860DCB-06F2-5FDB-92B8-B38CF9363C40"><p> <b>Image Processor</b> <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-13E30312-DD05-3581-9A59-C3569A981657"><apiname>ImageProcessor::CImgProcessor</apiname></xref> class is used to process an image and the <codeph>TEffect</codeph> classes in <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita"><apiname>ImageProcessor</apiname></xref> apply various effects like overlay or antique to an image. For more information about Image Processor functionality, see <xref href="GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB.dita">Image Processor overview</xref>. </p> </li> <li id="GUID-F7D77F74-1C97-51E0-BC82-345053497184"><p> <b> Bitmap Transform </b> Provides the rotation functionality, the mirroring functionality and the scaling transformations for <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> bitmaps as asynchronous operations. For more information about Bitmap Transform functionality, see <xref href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita">Bitmap Transform overview</xref>. </p> </li> <li id="GUID-E9B30955-D4B9-5769-97F0-8ECDCD51980C"><p> <b>Exif Client </b> This is provided in all main functions like <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref>, <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita"><apiname>CImageEncoder</apiname></xref>, <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> and <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> through an abstract interface. This function can be implemented and managed through an Imaging plug-in for exposing functionality to the client through the plug-in extension mechanism. For more information about Exif Client functionality, see <xref href="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita">Exif Client overview</xref>. </p> </li> <li id="GUID-6456CCD1-8208-52BA-B5FF-BC864E38078B"><p> <b>GIF Scaler Client </b> Provides the scaling and the colour quantization of bitmaps as an asynchronous operations. This is primarily used to provide bitmaps suitable for the gif encoding. And transparency information can be supplied in the form of a mask bitmap. For more information about GIF Scaler Client functionality, see <xref href="GUID-257E223F-1612-5978-982A-38DE8E08211C.dita">GIF Scaler Client overview</xref>. </p> </li> <li id="GUID-0D170A40-8036-54D6-9E1E-5AEB2CEA3755"><p> <b>JPEG Image Frame Plug-in</b> Decodes an image data to <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object from a file or a descriptor containing JPEG data, encodes an uncompressed <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object to JPEG data format within a file or descriptor and allows access to EXIF metadata. For more information about JPEG Image Frame Plug-in functionality, see <xref href="GUID-636879DE-0D1B-5CB7-9552-5F38A89B3143.dita">JPEG Image Frame Plug-in overview</xref>. </p> </li> <li id="GUID-601CCB52-FBFC-56D5-B787-87C6A48F2EEE"><p> <b>Media Client Image</b> Provides interface to set image conversion utility functions. For more information about Media Client Image functionality, see <xref href="GUID-08304A3F-4331-5936-984E-74A1F35905B8.dita">Media Client Image overview</xref>. </p> </li> <li id="GUID-F1769B11-3ACA-5CF9-8892-7705D5C2FA07"><p> <b>JPEG Exif Plug-in</b> Provides a standard for storing JPEG compressed metadata tag in the digital image file. For more information about JPEG Exif Plug-in functionality, see <xref href="GUID-49882982-0DA2-5021-BAC8-7DC77BDFD27C.dita">JPEG Exif Plug-in overview</xref>. </p> </li> </ul> </section> <section><title>Typical uses</title> <p>The Imaging Frameworks component is used for the following tasks: </p> <ul><li id="GUID-346E3708-44AB-5FE8-9D5E-AA2ABE662360"><p>Decoding an image </p> </li> <li id="GUID-49FB98DC-20E6-5383-B119-647C71D46EB9"><p>Encoding an image </p> </li> <li id="GUID-9A7EB8DF-48C5-5F18-9B19-5EE91F2233D2"><p>Transforming an image </p> </li> <li id="GUID-3B585FE6-CFAB-50D9-800B-736BDD0FEA89"><p>Displaying an image </p> </li> <li id="GUID-C39F1B6F-08AD-56A0-BBEE-88ED831FD58F"><p>Image conversion </p> </li> </ul> </section> </conbody><related-links><link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB.dita"><linktext>Image Processor
+                overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext> Supported Image FormatsGuide to
+                Symbian</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA" xml:lang="en"><title>Email Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the tasks that can be performed by client applications using the services provided by the Email collection. </p> </conbody><related-links><link href="GUID-401A07E7-97CF-57BD-B37D-F6412762BBCB.dita"><linktext>Email  Concepts</linktext> </link> <link href="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita"><linktext>Email Settings</linktext> </link> <link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example: An Email manager using IMAP4 and SMTP</linktext> </link> <link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example: An Email manager using POP3 and SMTP</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8845AFD6-F238-43FF-BD7B-902CD8CD3973.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8845AFD6-F238-43FF-BD7B-902CD8CD3973" xml:lang="en"><title>Showing
+and hiding toolbar items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can set toolbar items hidden or dimmed if a toolbar function is temporary
+unavailable. </p>
+<p>The example below shows how to set a button unavailable. In the example,
+the boolean parameter <codeph>aHide</codeph> tells if the button should be
+hidden or dimmed. </p>
+<codeblock xml:space="preserve">void CMyAppView::SetButtonUnavailable( TBool aHide )
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        if ( aHide )
+            {
+            // To show the item again: 
+            // toolbar-&gt;HideItem( KButtonId, EFalse, ETrue );
+            toolbar-&gt;HideItem( KButtonId, ETrue, ETrue );
+            }
+        else
+            {
+            // To undim the item again:
+            // toolbar-&gt;SetItemDimmed( KButtonId, EFalse, ETrue );
+            toolbar-&gt;SetItemDimmed( KButtonId, ETrue, ETrue );
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e380028_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-88917386-AD48-4C76-A1C7-46F0B1E85A18.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-88917386-AD48-4C76-A1C7-46F0B1E85A18" xml:lang="en"><title>Implementing
+UI text localization</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To allow your application to support different languages:</p>
+<ol>
+<li id="GUID-4C53C331-EDCB-49A6-A2AE-1946E0CBA85E"><p>In the resource
+file for your application, use unique symbolic IDs, also known as a logical
+name, for all UI texts that need to appear on the screen.</p>
+<note>
+<p>The Symbian platform provides some unique symbolic IDs that you can use
+in your code, which means that the UI texts used for these IDs match those
+used elsewhere in the device. Do not define any values for these symbolic
+IDs.</p>
+</note>
+</li>
+<li id="GUID-F64825B7-7A7F-4F07-ADFF-21C794534B39"><p>For each language
+your application supports, create a resource file as follows:</p>
+<ol>
+<li id="GUID-509946C5-B45A-4481-8D71-F74DF32EF18A"><p>Create a text
+file with the extension <parmname>lNN</parmname>, where NN is a two digit
+number that matches the Symbian OS language code for your target language.</p>
+<itemgroup>
+<p>The file naming suggestion reflects the Symbian platform convention, Symbian
+OS uses <parmname>&lt;application_name&gt;_NN.rls</parmname>.</p>
+</itemgroup>
+</li>
+<li id="GUID-256733D4-214F-40E9-9DF1-E60469A8E8BD"><p>Define all
+the symbolic IDs using the following syntax:</p>
+<codeblock id="GUID-5EBA1490-2538-4AFA-B348-8D12D0322820" xml:space="preserve">#define symbolicID "value in target language"</codeblock>
+<p>Each symbolic ID must be on its own line.</p></li>
+<li id="GUID-AB1ADD82-91F4-4FEF-97C3-D077E73F8A4B"><p>Repeat for
+each supported language.</p></li>
+</ol>
+</li>
+<li id="GUID-089BCEFD-8E83-4CAE-80C8-14461BC333DC"><p>Create a file
+to include the compiled localization files in your resource file, as follows:</p>
+<ol>
+<li id="GUID-44F02DD4-1502-4BAB-B128-5FC570CB6ABC"><p>Create a text
+file with the extension <parmname>loc</parmname>.</p><p>The file naming
+suggestion reflects the Symbian platform naming convention, Symbian OS uses <parmname>&lt;application_name&gt;.rls</parmname>.</p>
+</li>
+<li id="GUID-D40E9CEB-031F-405A-B031-3B5DDB84C1B2"><p>Add <parmname>#ifdef</parmname>, <parmname>#elif</parmname>,
+and <parmname>#include</parmname> statements for including the appropriate
+languages in your application resource files. An example syntax is as follows:</p>
+<codeblock id="GUID-702C92E6-EEE5-4C0F-8498-8C182C0F0097" xml:space="preserve">#ifndef __LOCALIZATION_LOC__
+#define __LOCALIZATION_LOC__
+                            
+#ifdef LANGUAGE_SC			// language code for default                                               
+#include "..\data\localization.l01"
+
+#elif LANGUAGE_01			// language code for UK
+#include "..\data\localization.l01"
+
+#endif 
+#endif</codeblock>
+</li>
+</ol>
+</li>
+<li id="GUID-3B918E68-258B-4724-9C15-58BC60713E75"><p>Include your <parmname>loc</parmname> file
+in your resource file.</p></li>
+<li id="GUID-E15A7374-0C92-48E8-8D47-955C974BFBB6"><p>Add your supported
+language codes to the <parmname>LANG</parmname> statement in your project <parmname>mmp</parmname> file.</p>
+</li>
+<li id="GUID-F185FF9B-A926-44E5-9FAD-AD9ABFC8C215"><p>Build your
+resource files</p>
+<note>
+<p>Some IDEs do not fully support building resource files for different
+languages, so you may need to use the command line interface of the Symbian
+build chain.</p>
+</note>
+</li>
+<li id="GUID-88D12169-4847-426C-A0AE-8107DE18183F"><p>Include the
+appropriate compiled resource files in your deployment package.</p><p>For
+more information on deploying, see <xref href="GUID-7369BBF7-5432-455D-BBB3-872D310358F2.dita"/>.</p>
+</li>
+</ol>
+<p> The following localization strategies are available:</p>
+<ul>
+<li><p>Create an installation package for each language your application
+supports and add only the appropriate compiled resource file to the package</p>
+</li>
+<li><p>Create an installation package that includes support for
+more than one language, which means there is more than one compiled resource
+file in the package. The mobile device user selects the desired language upon
+installation, and only the compiled resource file is installed</p></li>
+<li><p>Create an installation package that includes support for
+more than one language, which means there is more than one compiled resource
+file in the package.</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-88E610C1-6662-5A12-B950-B695A7EB776C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-88E610C1-6662-5A12-B950-B695A7EB776C"><title>How to cleanup streams</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Store framework makes extensive use of the cleanup stack. </p> <p>Before read streams or write streams are disposed of, for example, when an <codeph>RStoreWriteStream</codeph> or <codeph>RStoreReadStream</codeph> object goes out of scope, resources acquired by the stream objects must be released.</p> <p>The easiest way to do this is to use the <codeph>CreateLC()</codeph>, <codeph>OpenLC()</codeph>, <codeph>AppendLC()</codeph> and <codeph>ReplaceLC()</codeph> variants that put a cleanup item onto the cleanup stack.</p> <p>Before disposing of the read or write stream object, but after any data is committed, call <codeph>CleanupStack::PopAndDestroy()</codeph>. For example:</p> <codeblock id="GUID-A2C41FDD-5A52-5A7B-8965-CCFFA458D244" xml:space="preserve">...
+TStreamId id = outstream.CreateLC(*store);
+...
+outstream.CommitL();
+...
+CleanupStack::PopAndDestroy();
+...</codeblock> <p>For write streams, data must be committed to the stream before releasing resources.</p> <p>Alternatively, if the <codeph>CreateL()</codeph>, <codeph>OpenL()</codeph>, <codeph>AppendL()</codeph> and <codeph>ReplaceL()</codeph> variants are used, then an explicit call to <codeph>PushL()</codeph> must be made to put a cleanup item onto the cleanup stack. For example:</p> <codeblock id="GUID-DF572C67-C2F8-52F5-A8DB-3A23DC6F1A50" xml:space="preserve">...
+TStreamId id = outstream.CreateL(*store);
+outstream.PushL();
+...
+outstream.CommitL();
+...
+CleanupStack::PopAndDestroy();
+...</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-88FDEE3B-83DF-5635-92FC-CF291D1D6C2D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-88FDEE3B-83DF-5635-92FC-CF291D1D6C2D" xml:lang="en"><title>Removing
+the Domain Name for Certificate Validation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to configure an IMAP, POP or SMTP email account
+to remove the domain name when connecting to a server using secure TLS or
+SSL sockets. </p>
+<section><title>Procedure</title> <ol id="GUID-1A664AF6-CED9-5630-99A6-0763A27867B1">
+<li id="GUID-C6466767-1C20-5674-8455-237932912224"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-67966B2C-6DBA-5DBC-8D3B-5F2B477AA45F"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-85A6F2B3-EE43-56AB-8A44-AE4A9B10EF59"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class. </p> <p>Where, &lt;protocol&gt;
+is Imap4, Pop3, or Smtp. </p> </li>
+<li id="GUID-77FEF184-F485-5E74-9C4B-8C57D845FC6C"><p>Populate the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+and the <codeph>CIm&lt;protocol&gt;Settings</codeph> class from central repository
+(CenRep) using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Load&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+<li id="GUID-F27AF2F3-A4FA-5EE4-B78C-58E5B4BE845C"><p>Use the <codeph>CIm&lt;protocol&gt;Settings::</codeph> <xref href="GUID-86633B7D-5AB8-3BBD-BB54-4697211AC86E.dita"><apiname>SetTlsSslDomainL()</apiname></xref> function
+to pass <codeph>KNullDesC8</codeph> to clear the existing domain name. </p> </li>
+<li id="GUID-12E99608-E016-5BD3-8F4E-AA3E25B564E2"><p>Store the updated settings
+classes to CenRep using the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Save&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+</ol> <note> All instances of &lt;protocol&gt; in the preceding steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>,
+or <codeph>Smtp</codeph>.</note></section>
+<section><title>See also</title> <p> <xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8905A627-1D13-5066-ABC4-7E0AF07D96A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8905A627-1D13-5066-ABC4-7E0AF07D96A5" xml:lang="en"><title>Concepts</title><shortdesc>This section describes the key ideas in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita"><linktext>Socket
+  Server</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1" xml:lang="en"><title>Active
+objects</title><shortdesc>This document describes the functionality and class membership
+of active objects.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An active object uses an asynchronous service provider class to provide
+a service. The active object hides the asynchronous service provider. The
+active object must provide: </p>
+<ul>
+<li id="GUID-C98FC10D-0ED4-5C6E-94DF-5B44143CB780"><p>a function that requests
+a service from the service provider </p> </li>
+<li id="GUID-CDA4E8D8-6E4A-5058-80AF-0CCC71956A7E"><p>a function that cancels
+a request for service from the service provider. </p> </li>
+</ul>
+<p>All active objects are derived from <codeph>CActive</codeph>. This class
+provides <i>derived</i> active objects with: </p>
+<ul>
+<li id="GUID-F6F9FD4E-1796-54F5-B90E-1784CAAB9BA5"><p>the data member <codeph>iStatus</codeph>.
+This data member is a <codeph>TRequestStatus</codeph> type object. This object
+is passed to the request functions of the asynchronous service provider. The
+request functions of the active object do not include a <codeph>TRequestStatus</codeph> in
+their parameters. The exception to this rule occurs when the active object
+acts as a secondary supplier of asynchronous services. </p> </li>
+<li id="GUID-E6BBFBF2-C909-5232-B37D-DD2AB5D56287"><p>the <codeph>Cancel()</codeph> function.
+This function cancels a request to the service provider. <codeph>Cancel()</codeph> does
+nothing if there is no outstanding request. If a request is pending, <codeph>Cancel()</codeph> calls <codeph>DoCancel()</codeph>. <codeph>DoCancel()</codeph> is a pure virtual function that a derived class supplies. <codeph>DoCancel()</codeph> must
+deal with the specific cancellation behavior that the service provider requires. <codeph>Cancel()</codeph> waits
+for the request to complete and then marks the request not active. </p> </li>
+<li id="GUID-48261AFE-F289-520B-9AE4-701487DC3376"><p>the <codeph>TPriority</codeph> enumeration.
+This enumeration defines the set of priorities that an active object can take.
+The priority of the active object is set during construction of the active
+object. When the active scheduler's wait completes, it checks the active object
+with the highest priority. Where active objects have the same priority, the
+order of checking is not defined. </p> </li>
+</ul>
+<p>Classes derived from <codeph>CActive</codeph> must: </p>
+<ul>
+<li id="GUID-07DFA89B-0690-56C4-B332-E48306B4FE4E"><p>own an asynchronous
+service provider. It may do this by containing either an instance of the required
+service provider or a handle to that provider. </p> </li>
+<li id="GUID-BAF677B6-C7EF-56DB-8C42-04F58C72777E"><p>provide one or more
+request functions, such as <codeph>IssueRequest()</codeph>, which pass on
+the request to an asynchronous service provider. </p> </li>
+<li id="GUID-16AE762B-88BF-5173-AD5F-000E82EC5267"><p>implement a <codeph>DoCancel()</codeph> function
+which passes on a cancel request to the asynchronous service provider </p> </li>
+<li id="GUID-8EBC0A7B-BF62-5568-BD26-DCA0C53961C3"><p>provide a <codeph>RunL()</codeph> function,
+which is called by the active scheduler when it detects that an active object’s
+request has completed. </p> </li>
+<li id="GUID-738F8086-7CCE-558E-A32C-10686214F288"><p>provide a <codeph>RunError()</codeph> function,
+which is called by the active scheduler if the active object's <codeph>RunL()</codeph> function
+leaves. A derived class can use the default implementation but this just propagates
+the leave code up to the active scheduler. </p> </li>
+</ul>
+<section id="GUID-FF78FFB3-6901-45D1-A5F3-4F1C44355836"><title>See also</title> <p> <xref href="GUID-2C5D53A3-0211-5C14-BD7F-E89EB27BAD2A.dita">Active
+Scheduler</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e167058_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8933D7D5-F84D-5BF2-BF2A-832DA183E26B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8933D7D5-F84D-5BF2-BF2A-832DA183E26B" xml:lang="en"><title>Security Config</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian <i>OS Security</i> components use configuration files to change their run-time behaviour. The SecurityConfig component is a collection of configuration files for specific OS Security components. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-894AB487-C127-532D-852B-37CB0DEA1440" xml:lang="en"><title>Symbian-Specific
+Behavior</title><shortdesc>This topic provides information about the points that the EGL specification
+explicitly states are platform-specific. This information is aimed at both
+users and implementers of EGL on the Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5F4317DF-EEDE-434C-906D-A354367AE38D"><title>Symbian windows</title> <p>EGL windows are tied to Symbian
+windows. To create an on-screen rendering surface, a Window Server window
+with attributes corresponding to the desired <codeph>EGLConfig</codeph> must
+be created first. The <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> class is a handle to a server-side
+window that can be displayed and drawn to, and whose redraws are performed
+by the application. </p> <p><b>Buffer handling</b>. EGL window surfaces have
+two buffers, known as the front and back buffers. This means that the client
+application can draw to the back buffer, while the front buffer is being composed
+to the screen. The client must call <codeph>eglSwapBuffers()</codeph> to post
+the back buffer to the screen. </p><p>EGL 1.4 introduces a preserve buffer
+feature. When this is supported by the implementation, the content of the
+buffer can be preserved from one frame to the next. This means that the client
+can provide incremental drawing operations rather than the entire drawing
+operations for each frame. When the implementation supports this feature,
+it is usually off by default. This means that legacy applications that do
+not expect this feature are not slowed down by the unnecessary copying of
+the buffer contents.</p> <p><b>Window resizing</b>. A window can be resized
+using one of the Window Server or UI Framework APIs, such as <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-BCD76117-54A3-3CD5-8911-E867512BF85B"><apiname>RWindow::SetExtent()</apiname></xref> or <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-B680C675-2146-3162-AAAC-F3E88FA8B045"><apiname>CCoeControl::SetExtent()</apiname></xref>. When these APIs are called on a window that is bound to an EGL window surface,
+the EGL implementation is expected to handle the situation by adjusting its
+internal buffers. Applications need not do anything specific with regard to
+EGL APIs. Depending on the type of application, APIs may want to adjust their
+rendering operations—for example, clip or scale the contents. </p> <p>EGL
+handles the resize in the next call to <codeph>eglSwapBuffers()</codeph> by
+creating a new surface for the resized window. If the preserve buffer option
+is in use, this function also copies across all the pixels from the old surface
+that overlap the new surface, although the exact details depend
+on the implementation. A client application may therefore need to provide
+extra drawing operations, for example, if the window is made larger.</p> <p> <b>Screen
+rotation</b>. There is no specific EGL handling for screen rotation—instead
+screen rotation is handled in the same way as a change of screen resolution.
+Applications can detect screen rotation by listening to the Window Server
+event <xref href="GUID-CC1E6B2E-F68F-3A00-B4EA-4917007F7320.dita"><apiname>EEventScreenDeviceChanged</apiname></xref>. However, applications
+do not normally use the Window Server API directly, because they are built
+on top of the UI Framework layer. This layer provides a different mechanism
+to notify applications using—for example, <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita#GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90/GUID-5723655E-FC84-35F1-A0E1-FCE92CEBC196"><apiname>CCoeAppUi::HandleScreenDeviceChangedL()</apiname></xref>. </p> <p>When
+one of the these events is detected, the application may need to resize its
+windows and update its content accordingly. If the application wants to accept
+the system rotation, it does not need to rotate its content. However, some
+applications may want to maintain a fixed physical orientation. They would
+then need to rotate the window content in order to counteract the physical
+rotation. </p> </section>
+<section id="GUID-9BC770D9-3736-495E-8485-19D71700C50D"><title>Symbian pixmap types</title> <p>An EGL implementation can
+support the <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> pointer as an <codeph>EGLNativePixmapType</codeph>.
+This means that it is possible to create an <codeph>EGLSurface</codeph> to
+render to a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>. </p> <p> <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> bitmaps
+are managed by the <xref href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita">Font
+and Bitmap Server</xref>. The format is internal to Symbian, but the Image
+Converter API can be used to convert them to standard formats. The <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> type
+has limitations with regard to hardware acceleration. </p> </section>
+<section id="GUID-44553B50-C48E-4E6B-AD9C-F3BC7D9D5347"><title>Display handling</title> <p>Most EGL calls include an <codeph>EGLDisplay</codeph> parameter.
+The EGL specification describes this as "the abstract display on which graphics
+are drawn". On some systems, this corresponds to a physical screen. However,
+the details are platform specific and on Symbian systems, it does <i>not</i> correspond
+to a physical screen. When working on the Symbian platform, it is generally
+more useful to think of an <codeph>EGLDisplay</codeph> as the EGL session. </p> <p>On
+Symbian systems, you usually use a single <codeph>EGLDisplay</codeph>. You
+get this by a call to <codeph>eglGetDisplay()</codeph> and passing <codeph>EGL_DEFAULT_DISPLAY</codeph> as
+the <codeph>&lt;display id&gt;</codeph> parameter. </p> <p>The physical screen
+on which the content is displayed is determined by the window's parent window
+group. In Symbian, every window (<xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>) has a parent
+window group (<xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita"><apiname>RWindowGroup</apiname></xref>), as shown in the following
+diagram. When you create a window group, you can specify the screen on which
+it is to be shown. </p> <fig id="GUID-5D5F3C6A-4CFA-5307-8B2D-D2881799D664">
+<title>Each window has a parent window group which is associated with a screen</title>
+<image href="GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e182376_href.png" placement="inline"/>
+</fig> <p>When you create a window surface in EGL using <codeph>eglCreateWindowSurface</codeph>,
+you pass in the <codeph>RWindow</codeph> as an argument. The window surface
+is then displayed on the screen associated with that window's parent window
+group. Currently a window can exist on only one screen. </p> </section>
+</conbody><related-links>
+<link href="GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C.dita"><linktext>EGL Interface
+Component</linktext></link>
+<link href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita"><linktext>EGL Collection
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-895A685E-83E8-51A3-A823-3A0E07B1E609" xml:lang="en"><title>Exporting
+the Implementation Factories </title><abstract><p>An implementation collection gathers one or more interface implementations
+in a DLL. It provides necessary information to the plug-in framework to use
+them. The collection must export a single function that provides an array.
+This array maps the UID of each implementation it contains with a pointer
+to its factory instantiation function (NewL() in our example). </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-B972BA4F-6146-59A7-AA8E-8ACC704F34FB">
+<step id="GUID-E2BCAA54-9873-5AB5-93F8-6F1CE28D184D"><cmd/>
+<info>Define a UID for each implementation. This UID maps to the instantiation
+function of the implementation. Construct an array of UID's for all the implementations
+in the collection. </info>
+<stepxmp><codeblock id="GUID-F1292D30-2559-5F6C-ACD5-CEFD60F84EA7" xml:space="preserve">// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] = 
+    {
+    {{0x10009DC3}, CImplementationClassOne::NewL();},
+    {{0x10009DC4}, CImplementationClassTwo::NewL();}
+    };
+    }</codeblock> </stepxmp>
+</step>
+<step id="GUID-D465B0AD-350A-597F-A0AB-D71F44F1CAEB"><cmd/>
+<info>The signature of this exported function must be: </info>
+<stepxmp><codeblock id="GUID-847AC15E-6714-5399-827C-2C04423A8CE7" xml:space="preserve">const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount);</codeblock> </stepxmp>
+</step>
+<step id="GUID-43C85534-AD27-5F72-A57E-5271397C1C21"><cmd/>
+<info>The exported function returns a pointer to an array of <xref href="GUID-A91AD391-D638-3FD4-93E3-B77B85767CCD.dita"><apiname>TImplementationProxy</apiname></xref> objects. </info>
+</step>
+<step id="GUID-D66DC4B4-3B8A-59CF-A74E-2FE499F5CA83"><cmd/>
+<info>Each <codeph>TImplementationProxy</codeph> contains a UID and a function
+pointer. </info>
+<info> <codeph>aTableCount</codeph> should be set to the number of items in
+the array. </info>
+<stepxmp><codeblock id="GUID-2AAD649D-BC66-55B1-9EA1-9C30CF96BB4B" xml:space="preserve">EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }</codeblock> </stepxmp>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-896A155F-2EAD-54BD-8D25-A484122576BB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e196056_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-898FF7CE-969C-5FE1-9346-34BCBE637A57.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-898FF7CE-969C-5FE1-9346-34BCBE637A57"><title>Data safety and recovery</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A robust stream structure is used to manage row data within a database, and relying on the permanent file store's update integrity, it will survive a crash; this excludes the case where the file itself is corrupted. Such an aborted access effects a rollback on the database when it is next opened, all committed data is immediately available, though indexes may have been damaged as for a controlled rollback.</p> <p>The database reports damage if it considers that it may have damaged indexes. When this is the case the database can still be used, but attempting to use any damaged index results in an error. Damaged indexes can be fully restored by recovering the database.</p> <p>Compacting the store which contains the database also guarantees no data loss.</p> <p>The store used by the database <note>must not be committed or reverted while the database is inside a transaction</note>, this can lead to loss of structural integrity within the database. Such damage is not repairable by DBMS. </p> <p>The database streams cannot be corrupted by any action of DBMS itself, but misuse of the store, the file or damage to the file system resulting in such corruption may be detected by the database and reported as an error. DBMS cannot repair such damage to a database.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89AD2E29-DF29-5B2B-9894-B7ECD62854F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-89AD2E29-DF29-5B2B-9894-B7ECD62854F4" xml:lang="en"><title>Font Store Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the Font Store to make fonts available to applications. </p> <p>The Font Store contains font files (files containing font data in bitmap or vector form) and rasterisers (plug-in code files for interpretting vector font files). You can add both types of file to the font store. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-89ADFC64-AF9F-51B1-AC5F-493897226270" xml:lang="en"><title>STRUCT
+member types</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;struct-member&gt;
+struct-member ::= 
+&lt;member-declaration&gt; [ = &lt;initialiser&gt; ]; &lt;member-declaration&gt;
+member-declaration ::= 
+&lt;type-name&gt; &lt;member-name&gt; | [ LEN [ BYTE ] ] &lt;type-name&gt; &lt;member-name&gt; [ ( &lt;length-limit&gt; ) ] [ [ [ &lt;array-size&gt; ] ] ] &lt;type-name&gt;
+type-name ::= 
+BYTE | WORD | LONG | TEXT | DOUBLE | LTEXT | BUF | BUF8 | BUF&lt;n&gt; | LINK | SRLINK | STRUCT </codeblock>
+<p><b>Member declaration</b> </p>
+<p>Each member of a struct is identified by a <varname>member-declaration</varname> followed
+by an optional <varname>initialiser</varname>, and then a semi-colon.</p>
+<p>The simplest form of <varname>member-declaration</varname> is to specify
+a <varname>type-name</varname> and a <varname>member-name</varname> only:</p>
+<codeblock id="GUID-1137C4C8-B450-5ECA-97E5-8DECB8ABBB20" xml:space="preserve">STRUCT TEST
+ {
+ WORD length;
+ }</codeblock>
+<p><b>Type name</b> </p>
+<p>The <varname>type-name</varname> must be in upper case (<codeph>WORD</codeph> in
+this example).</p>
+<p>These are the valid types:</p>
+<table id="GUID-0611DEBC-6A5E-565A-8BDB-317C2CCCA24F">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p><codeph>BYTE</codeph> </p> </entry>
+<entry><p>A single byte. </p> <p>Can be treated as a signed integer (–128
+to +127) or unsigned integer (0 to 255).</p> </entry>
+</row>
+<row>
+<entry><p><codeph>WORD</codeph> </p> </entry>
+<entry><p>Two bytes. </p> <p>Can be treated as a signed integer (–32,768 to
++32,767) or unsigned integer (0 to 65,535).</p> </entry>
+</row>
+<row>
+<entry><p><codeph>LONG</codeph> </p> </entry>
+<entry><p>Four bytes. </p> <p>Can be treated as a signed integer (–2,147,483,648
+to 2147483647) or an unsigned integer (0 to 4,294,967,295).</p> </entry>
+</row>
+<row>
+<entry><p><codeph>DOUBLE</codeph> </p> </entry>
+<entry><p>Eight byte real for double precision floating point numbers (approximately
+±1.7E±308).</p> </entry>
+</row>
+<row>
+<entry><p><codeph>TEXT</codeph> </p> </entry>
+<entry><p>A string, terminated by a null. </p> <p>This is deprecated: use <codeph>LTEXT</codeph> instead.</p> </entry>
+</row>
+<row>
+<entry><p><codeph>LTEXT</codeph> </p> </entry>
+<entry><p>A Unicode string with a leading byte which holds the length of the
+string, and no terminating null. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>BUF</codeph> </p> </entry>
+<entry><p>A Unicode string with no terminating null and no leading byte.</p> </entry>
+</row>
+<row>
+<entry><p><codeph>BUF8</codeph> </p> </entry>
+<entry><p>A string of 8-bit characters, with no terminating null and no leading
+byte. Used for putting 8-bit data into a resource.</p> </entry>
+</row>
+<row>
+<entry><p><codeph>BUF&lt;n&gt;</codeph> </p> </entry>
+<entry><p>A Unicode string with no terminating null and no leading byte but
+which has a maximum length <codeph>n</codeph>. </p> <p>This type is an alternative
+to using the length-limit with <codeph>BUF</codeph> types.</p> </entry>
+</row>
+<row>
+<entry><p><codeph>LINK</codeph> </p> </entry>
+<entry><p>The ID of another resource (16 bits), rather like a pointer to that
+resource.</p> </entry>
+</row>
+<row>
+<entry><p><codeph>LLINK</codeph> </p> </entry>
+<entry><p>The ID of another resource (32 bits).</p> </entry>
+</row>
+<row>
+<entry><p><codeph>SRLINK</codeph> </p> </entry>
+<entry><p>A self-referencing link. This is a 32 bit link which contains the
+resource ID of the resource it is defined in.</p> <p>An <codeph>SRLINK</codeph> member
+may not have an <codeph>initialiser</codeph> since it is self-referencing
+and, therefore, only takes the value of the resource ID the struct is declared
+in. This is assigned automatically by the resource compiler.</p> </entry>
+</row>
+<row>
+<entry><p><codeph>STRUCT</codeph> </p> </entry>
+<entry><p>Any struct, rather like including that struct as a member in this
+struct. </p> <p><codeph>STRUCT</codeph> members are useful because it means
+that once a struct has been defined it can be re-used for a variety of resources.</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>Note that:</p>
+<ul>
+<li id="GUID-CFC06150-A2AB-50E1-A309-841FD7A14A1F"><p>Numbers more than one
+byte long are stored little-endian: that is, their least significant byte
+is stored first.</p> </li>
+<li id="GUID-B3054853-8740-5891-B05B-7F45C7C0D154"><p><codeph>LINK</codeph> and <codeph>STRUCT</codeph> are
+not type-safe: it is the responsibility of the user of a struct to ensure
+that the correct resource type is linked or included. The definer of a struct
+should give some idea, perhaps using a comment:</p> <codeblock id="GUID-748ECC10-244C-513B-A417-BC1FF38DDA56" xml:space="preserve">STRUCT TEST
+ {
+ WORD length;
+ STRUCT text; // should be a STRING 
+ }</codeblock> </li>
+</ul>
+<p><b>Length limits</b> </p>
+<p>A length limit may be specified for members of string type (<codeph>BUF</codeph>, <codeph>TEXT</codeph> and <codeph>LTEXT</codeph>).
+The length limit is enclosed in parentheses after the member name, for instance:</p>
+<codeblock id="GUID-50C68BAE-63AD-50D6-A97F-8181478CACB2" xml:space="preserve">STRUCT TEST
+ {
+ TEXT string1(9);
+ LTEXT string2(MAX);
+ BUF string3;
+ }</codeblock>
+<ul>
+<li id="GUID-495CC55D-94BD-5775-9ADA-C548CC7BCE9E"><p><codeph>string1</codeph> has
+a maximum of 9 characters, <codeph>string2</codeph> a maximum of <codeph>MAX</codeph> characters
+(where <codeph>MAX</codeph> has been <codeph>#defined</codeph> elsewhere)
+and <codeph>string3</codeph> has no maximum length. Note that this maximum
+applies only to the actual characters and does not take account of the terminating
+zero (for <codeph>TEXT</codeph> members) or leading byte (for <codeph>LTEXT</codeph> members).</p> </li>
+<li id="GUID-C853D58D-EE65-5BA8-9F15-1DE1A57AC93A"><p>Note that from v5 onwards, <codeph>TEXT</codeph> is
+deprecated.</p> </li>
+<li id="GUID-1D3ADFB6-CC80-5951-9D9F-4CEFF86A2726"><p>An alternative method
+to using <varname>length-limit</varname> with a <codeph>BUF</codeph> type
+is to use the type <codeph>BUF&lt;n&gt;</codeph>. For example, see the definition
+of <codeph>TEST</codeph> and the resource definitions for <codeph>test1</codeph>, <codeph>test2</codeph> and <codeph>test3</codeph> in
+the examples below.</p> </li>
+</ul>
+<p><b>Member name</b> </p>
+<p>The <varname>member-name</varname> must be in lower case.</p>
+<example><codeblock id="GUID-0268988A-BB90-5926-AF3D-97016E53DBAD" xml:space="preserve">STRUCT TEST
+ {
+ BUF&lt;4&gt; string;
+ }</codeblock><codeblock id="GUID-563A42B3-3B7C-550E-BBF5-DA845FFA7F6C" xml:space="preserve">RESOURCE TEST test1
+ {
+ string="abcd";
+ }</codeblock><codeblock id="GUID-E76C4FB4-14D2-5BC2-B9C5-8065472E8191" xml:space="preserve">RESOURCE TEST test2
+ {
+ string="ab";
+ }</codeblock><codeblock id="GUID-60CA1CB6-B228-54AF-9086-C66C2E61D2E4" xml:space="preserve">RESOURCE TEST test3
+ {
+ string="abcdef";
+ }</codeblock><ul>
+<li id="GUID-D23F56A1-591D-5025-BE84-D8B2BF7BA521"><p><codeph>test1</codeph> generates <codeph>0x61
+0x00 0x62 0x00 0x63 0x00 0x64 0x00</codeph> </p> </li>
+<li id="GUID-3BB272D8-5BD1-5759-81B8-C2160CBAFB5A"><p><codeph>test2</codeph> generates <codeph>0x61
+0x00 0x62 0x00</codeph> </p> </li>
+<li id="GUID-7637A3EB-06BB-563C-A5D4-6F70755E22CF"><p>but <codeph>test3</codeph> generates
+an error because the maximum length of <codeph>string</codeph> permitted by
+the definition of the <codeph>STRUCT</codeph> is 4.</p> </li>
+</ul></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89B12BB4-877E-4157-9BD1-81AD02EE3543.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-89B12BB4-877E-4157-9BD1-81AD02EE3543" xml:lang="en"><title>Constructing
+the UI controller in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The call on the first phase constructor method of the UI controller
+occurs in the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref>-derived
+class of application. For more information, see <xref href="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita">Implementing
+framework requirements</xref>.</p>
+<p>The methods you need to implement for your <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUI</parmname></xref>-derived
+UI controller are as follows:</p>
+<ul>
+<li><p>C++ default constructor, which cannot contain any code that
+might leave. A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-ED243BA0-4466-47F3-8F17-0A901EE29671" xml:space="preserve">CMyViewAppAppUi::CMyViewAppAppUi()
+    {    
+    }</codeblock>
+<p>The class declaration for this constructor in the class header file
+needs to be public to support the construction method required.</p>
+</itemgroup>
+</li>
+<li><p>Symbian 2nd phase constructor with code that might leave.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-6665D735-D20A-4159-98B3-199BF15E7602" xml:space="preserve">
+void CMyViewAppAppUi::ConstructL()
+    {
+    
+    BaseConstructL(EAknEnableSkin); // Use EAknEnableSkin to make the application support themes.
+ 
+    CMyViewAppView* view1 = CMyViewAppView::NewL();
+
+    AddViewL( view1 );        // transfer ownership to CAknViewAppAppUi
+	  iViewId1 = view1-&gt;Id();   // view id to get view from CAknViewAppAppUi
+    
+
+    CMyViewAppView2* view2 = CMyViewAppView2::NewL();
+
+    AddViewL( view2 );      // transfer ownership to CAknViewAppAppUi
+	  iViewId2 = view2-&gt;Id(); // view id to get view from CAknViewAppAppUi
+    
+
+    SetDefaultViewL( *view1 );
+    }</codeblock>
+<p><parmname>ConstructL</parmname> completes the construction of the object.
+It is a public constructor in the header file.</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html#ebd48f5819a517d45755391fd3497b3b" format="application/java-archive"><parmname>CAknViewAppUi::BaseConstructL</parmname></xref> initializes the application UI with necessary UI components
+, including status and control panes. <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html#ebd48f5819a517d45755391fd3497b3b" format="application/java-archive"><parmname>CAknViewAppUi::BaseConstructL</parmname></xref> can
+accept flags enumerated in <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi" format="application/java-archive"><parmname>CEikAppUi</parmname></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref>.
+In particular, the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUiBase.html#68986ab776eb5d6b5a809a1c005a73008d94047a388aa6a9fa6381f45d548ffe" format="application/java-archive"><parmname>CAknAppUi::EAknEnableSkin</parmname></xref> flag enables <xref href="GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita">themes</xref> in
+the application.</p>
+<p><parmname>CMyViewAppView* view1 = CMyViewAppView::NewL()</parmname> is
+a two phase constructor for the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+view controller.</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html#369fea4cfb57a7bf69ad843355a66d67" format="application/java-archive"><parmname>CAknViewAppUi::AddViewL</parmname></xref> registers and adds the view controller to the UI controller</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#71e3a172cd418a5d73071f598fe8d26d" format="application/java-archive"><parmname>iViewId1
+= view1-&gt;Id()</parmname></xref> calls the view controller method that
+provides the UID of the view controller</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aSetDefaultViewL%28const%20MCoeView%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeAppUi::SetDefaultViewL</parmname></xref> registers a
+view as the default view of the application. The meaning of the default view
+varies depending on the UI. It is normally the view that is displayed when
+the application is launched. It may also be the view that is displayed when
+the application is brought to the foreground.</p>
+</itemgroup>
+</li>
+</ul>
+<p>You must implement other methods to support <xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">key
+event handling</xref>, <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref>, and other possible <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">events</xref>,
+as well as overriding default <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">control
+pane</xref> and status pane behavior.</p>
+<note>
+<p>Command, key event, and layout change support handling can take place
+at least partially in the view controller.</p>
+</note>
+<section id="GUID-4AA4BB6F-9331-4196-91F5-A3FF479667B2"><title>Scalability</title>
+<p>If you wish to support <xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">scalability</xref> in
+your application, then you need to implement <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aHandleResourceChangeL%28%29" format="application/java-archive"><parmname>CEikAppUi::HandleResourceChangeL</parmname></xref> in the UI controller , and then a <parmname>HandleClientRectChangeL</parmname> method
+in the view controller.</p>
+<p> A common implementation is:</p>
+<codeblock id="GUID-ADB8DC30-EFF6-4F66-B418-78FD90A1B568" xml:space="preserve">void CMyViewAppAppUi::HandleResourceChangeL( TInt aType )
+    {    	    
+    CAknAppUi::HandleResourceChangeL( aType );	
+
+    
+    if ( aType==KEikDynamicLayoutVariantSwitch )
+        {		
+		((CMyViewAppView*) View( iViewId1) )-&gt;HandleClientRectChange(  );
+		((CMyViewAppView2*) View( iViewId2) )-&gt;HandleClientRectChange(  );	        
+		}	
+	
+    }   </codeblock>
+<p>, where</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aHandleResourceChangeL%28%29" format="application/java-archive"><parmname>CEikAppUi::HandleResourceChangeL</parmname></xref> is a <xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">layout change event method</xref>.</p>
+<p><parmname>HandleClientRectChangeL</parmname> is a method in the view
+controller for passing the change onto to the control</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E" xml:lang="en"><title>Migrating
+from C Standard Library (ESTLIB) to P.I.P.S.</title><shortdesc>If you are using ESTLIB, it is recommended that you migrate to
+P.I.P.S. available from Symbian^1, as P.I.P.S. is much more POSIX compliant
+and feature-rich.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-8A3B8F03-A4E9-41C9-A600-C038D79FCB90">       <p>P.I.P.S.
+is supported from Symbian^1 onwards on ROM. ESTLIB applications
+can be ported to use P.I.P.S., by keeping the base source as it is while making
+changes to the MMP files and rebuilding the code.</p>     </prereq>
+<context id="GUID-963EA55A-3033-40AC-83AE-00687F7F185E">       <p>To migrate
+from C Standard Library (ESTLIB) to P.I.P.S., perform the following steps:</p> 
+   </context>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-10-1-1-5-1-3-1-10-1-3-3">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-5-1-3-1-10-1-3-3-1"><cmd/>
+<info><p>Replace the <codeph>LIBRARY</codeph> entry in the <filepath>.MMP</filepath> file
+from <filepath>estlib.lib</filepath> to <filepath>libc.lib libm.lib libpthread.lib</filepath>.</p></info>
+</step>
+<step id="GUID-BB644CB0-A911-4C80-A28D-361319D15580"><cmd/>
+<info><p>Replace the <codeph>LIBRARY</codeph> entry in the <filepath>.MMP</filepath> file
+from <filepath>ecrt0.lib</filepath> to <filepath>libcrt0.lib</filepath>.</p></info>
+</step>
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-5-1-3-1-10-1-3-3-3"><cmd/>
+<info><p>Replace the <codeph>SYSTEMINCLUDE</codeph> path from <filepath>\epoc32\include\libc</filepath> to <filepath>\epoc32\include\stdapis</filepath>.</p></info>
+<stepresult><p><b>Important</b>: If any non-POSIX worked around code (written
+to satisfy POSIX-deviated ESTLIB return codes) is present in your existing
+application, you will also need to modify it to make them POSIX complaint.</p></stepresult>
+</step>
+</steps>
+<postreq id="GUID-3BF4A7A3-6876-4987-8F17-B8A7BDA639D4"><p><b>Note</b>: For
+more information about using P.I.P.S. on Symbian platform, see <xref href="GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita">Open
+Environment Core (P.I.P.S.)</xref>. </p></postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89C83394-5F37-4AE5-AC5F-6006D2DD47DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-89C83394-5F37-4AE5-AC5F-6006D2DD47DA" xml:lang="en"><title>Using
+Visual Studio on Carbide.vs</title><shortdesc>Carbide.vs is a set of tools used for Symbian C++ application development
+using the Microsoft Visual Studio 2003 and Visual Studio 2005 IDEs and Symbian
+OS SDKs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> Carbide.vs is targeted at developers with Visual Studio skills who want
+to create C++ applications for Symbian platforms including Nokia S60 and Series
+80 as well as selected UIQ SDKs. Carbide.vs provides easy entry into Symbian
+C++ development with wizards and other automated functions that integrate
+with Visual Studio. User can get started with minimal manual configuration.
+Carbide.vs also contains functionality to automate several development tasks
+specific to Symbian platform. For more information about using Visual Studio
+on Carbide.vs, see <xref href="http://wiki.forum.nokia.com/index.php/Carbide.vs_Overview" scope="external">http://wiki.forum.nokia.com/index.php/Carbide.vs_Overview</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F"><title>Types of Email</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the types of email that Messaging Middleware supports and the structure of email messages. </p> <p>The following are the types of email that are supported. The diagrams represent the structure of the message entries in the Message Server. </p> <section><title>Plain text messages</title> <p>Non-MIME emails are the simplest type of mail message and contain only a plain text message body. </p> <fig id="GUID-7831EE1E-4F8D-526E-8B2F-28B88EF47590"><title>
+             Plain text messages 
+          </title> <image href="GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e247185_href.jpg" placement="inline"/></fig> </section> <section><title> UUEncoded messages</title> <p>To allow for binary files to be ‘attached’ to non-MIME emails, it is possible to UUEncode the binary data and include it as text within the message. A typical message would consist of some text, followed by the UUEncoded data, followed by more text and UUEncoded data. </p> <fig id="GUID-EE589E7D-D61D-53BB-BE6C-D987155511AA"><title>
+             UUEncoded messages 
+          </title> <image href="GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e247199_href.jpg" placement="inline"/></fig> </section> <section><title>Multipart messages</title> <p>The multipart messages are the most popular form of modern emails. Multipart messages contain a sequence of body parts which can in turn contain additional nested body parts. The simplest example would be a text message with a single binary attachment. Binary data is typically encoded using BASE64 encoding. </p> <fig id="GUID-73EA864D-7C20-56CF-8CAD-903AE24A3C57"><title>
+             Multipart messages 
+          </title> <image href="GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e247213_href.jpg" placement="inline"/></fig> </section> <section><title>HTML text messages</title> <p>HTML text messages contain an HTML representation of the message body text (complete with all text formatting) and a corresponding plain text version. The email client can then decide which to display to the user based in its capabilities. </p> <fig id="GUID-8C5A76B3-70E8-5419-9503-4D91D00940EA"><title>
+             HTML text messages 
+          </title> <image href="GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e247227_href.jpg" placement="inline"/></fig> </section> <section><title>HTML messages with attachments</title> <p>As with HTML text messages, these contain plain and HTML versions of the body text, as well as additional body parts containing potentially encoded attachment data. </p> <fig id="GUID-248A862E-F582-5E58-AEEF-07FEF662EC78"><title>
+             HTML messages with attachments 
+          </title> <image href="GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e247241_href.jpg" placement="inline"/></fig> </section> <section><title>HTML messages with embedded message</title> <p>Messages can contain embedded messages within their body parts. This example shows a message with parts consisting of plain text, an attachment, and an embedded message. The embedded message in turn contains an attachment as well a plain and html versions of the body text. </p> <fig id="GUID-E943461D-8FEE-5C72-82BA-24D8A4979283"><title>
+             HTML messages with embedded message 
+          </title> <image href="GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e247255_href.jpg" placement="inline"/></fig> </section> <section><title>Storage of email parts</title> <p>The majority of the message data is stored within a single file. This contain separate streams for header information, MIME headers, attachment information and the rich text store. If the message contained attachments, a corresponding folder exists that stores each attachment as a separate decoded file. </p> </section> </conbody><related-links><link href="GUID-B394A824-8745-505E-8429-8B9B6D418387.dita"><linktext> Message Server and Store</linktext> </link> <link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext> Message Type Module</linktext> </link> <link href="GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita"><linktext>IMAP4
+                MTM</linktext> </link> <link href="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita"><linktext>POP3 MTM</linktext> </link> <link href="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita"><linktext>SMTP MTM</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-89E0E8FE-6575-5A30-B25F-A873F5C5F389"><title>cd</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Change the current directory. </p> <ul><li id="GUID-0B5810A9-A1B0-56F3-9F37-21328F96CCC8"><p><userinput>cd [ -sLP ] [ arg ] </userinput> </p> <p>Changes the current directory. In the first form, change the current directory to <codeph>arg</codeph>, or to the value of <codeph>$HOME</codeph> if <codeph>arg</codeph> is not specified. If <codeph>arg</codeph> is <codeph>-</codeph>, change to the value of <codeph>$OLDPWD</codeph>, the previous directory. Otherwise, if a directory named <codeph>arg</codeph> is not found in the current directory and <codeph>arg</codeph> does not begin with a slash, search each component of the shell parameter <codeph>cdpath</codeph>. If no directory is found and the option <codeph>CDABLE_VARS</codeph> is set, and a parameter named <codeph>arg</codeph> exists whose value begins with a slash, treat its value as the directory. In that case, the parameter is added to the named directory hash table. </p> </li> <li id="GUID-EA30F198-E683-5D2C-A7EC-A9700BA5CF27"><p><userinput>cd [ -sLP ] old new</userinput> </p> <p>Here the <codeph>cd</codeph> substitutes the string <codeph>new</codeph> for the string <codeph>old</codeph> in the name of the current directory, and tries to change to this new directory. </p> </li> <li id="GUID-9FC556EA-CFF3-52C5-8F23-6C5040F3B0B4"><p><userinput>cd [ -sLP ] {+|-}n </userinput> </p> <p> <codeph> cd</codeph> extracts an entry from the directory stack, and changes to that directory. </p> <table id="GUID-AE9E862B-5F74-59F2-BD93-710531A12E8C"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>+n</codeph>  </p> </entry> <entry><p>A stack entry by counting from the left of the list shown by the dirs command, starting with zero. </p> </entry> </row> <row><entry><p> <codeph>-n</codeph>  </p> </entry> <entry><p>Counts from the right. If the <codeph>PUSHD_MINUS</codeph> option is set, the meanings of <codeph>+</codeph> and <codeph>-</codeph> in this context are swapped. </p> </entry> </row> <row><entry><p> <codeph>-s</codeph>  </p> </entry> <entry><p> <codeph>cd</codeph> refuses to change the current directory if the given pathname contains symlinks. </p> </entry> </row> <row><entry><p> <codeph>-P</codeph> or <codeph>CHASE_LINKS</codeph>  </p> </entry> <entry><p>Symbolic links are resolved to their true values. </p> </entry> </row> <row><entry><p> <codeph>-L</codeph>  </p> </entry> <entry><p>Symbolic links are followed regardless of the state of the <codeph>CHASE_LINKS</codeph> option. </p> </entry> </row> </tbody> </tgroup> </table> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-89EC9CD3-A41E-4CD6-90FE-0BECF44920B8_d0e54434_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89EDF464-8DC5-5A2A-9135-3FE82EF40FF4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-89EDF464-8DC5-5A2A-9135-3FE82EF40FF4" xml:lang="en"><title>DevSound Library Tutorials</title><shortdesc>This section describes how to use the DevSound library functionality. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-89F383B6-3730-51DF-8C41-CF2564B4D003.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-89F383B6-3730-51DF-8C41-CF2564B4D003"><title>TParse, TParsePtr and TParsePtrC</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The above three classes are provided for parsing filenames. All provide the same parsing capability (except that the path passed to <codeph>TParsePtrC</codeph> cannot be modified, for example by adding or removing a directory), but they differ in several respects. <codeph>TParse</codeph> uses a 256 byte <codeph>TFileName</codeph> as an internal buffer to store a copy of the fully parsed filename. The other two classes on the other hand do not have any storage space. They should be used in preference to <codeph>TParse</codeph> when minimizing stack usage is a priority. </p> <p>When using <codeph>TParsePtr</codeph> and <codeph>TParsePtrC</codeph> in preference to <codeph>TParse</codeph>, remember that: </p> <ul><li id="GUID-CF940612-A614-5FD6-9E7E-DF7D0885CFD6"><p>unlike <codeph>TParse</codeph>, these classes do not provide an option to disallow the use of wildcards in the filename and extension </p> </li> <li id="GUID-DD86AD7C-9979-5D29-B611-A54DAAAB3BDA"><p>because the path to be parsed is efficiently passed as an argument to the constructor for a <codeph>TParsePtr</codeph> or <codeph>TParsePtrC</codeph>, if this path is invalid, construction will fail and a panic will occur. <codeph>TParse</codeph>, on the other hand, returns an error if the specified path is invalid </p> </li> <li id="GUID-C4460819-95FD-573B-A9CD-4C2E1CE62898"><p>only instances of class <codeph>TParse</codeph> can be passed to calls to <codeph>RFs::Parse()</codeph>  </p> </li> <li id="GUID-C4517734-F446-5F06-9BE3-6DCFE2DD53E0"><p> <codeph>TParsePtrC</codeph> cannot modify the path which is passed to it, for example by adding or removing a directory </p> </li> </ul> <section><title> Filepath limitations</title> <p>If the length of the file path is more than 256 characters, file operations such as rename, copy and delete results in an error. However, it is possible to create a filepath which exceeds 256 character limit as follows: </p> <p>Consider the following path: </p> <codeblock id="GUID-277AC92A-7029-531D-AB57-B41DB1471EEB" xml:space="preserve">C:\Multimedia\AVCodec\testproduct\...\avtests.txt</codeblock> <p>Rename the <filepath>AVCodec</filepath> directory to <filepath>AVCodec123456789123456789</filepath>. If the length of the complete file path, <filepath>C:\Multimedia\AVCodec123456789123456789\testproduct\...\avtests.txt</filepath> exceeds 256 characters, any file operation will fail. Similarly, when you create a file with the filepath more than 256 characters will result in an error. </p> <p>However, on the emulator, the limit may be less than 256 characters. See <xref href="GUID-A0849E58-985F-566C-85DD-2D320FD9071F.dita">Files and locations</xref> section in the Emulator guide. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8A2029C7-1258-5B12-B217-DE3EE4340B72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8A2029C7-1258-5B12-B217-DE3EE4340B72"><title>How to externalise and internalise</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>For a class TX defined as:</p> <codeblock id="GUID-8F730CDE-638B-5D07-B5A8-864DEE4BCB7E" xml:space="preserve">class TX
+      {
+public:
+      ...
+      void ExternalizeL(RWriteStream&amp; aStream) const;
+      void InternalizeL(RReadStream&amp; aStream);
+      ...
+      };</codeblock> <p>an instance of <codeph>TX</codeph> can be externalised to the stream <codeph>outstream</codeph>, by calling the <codeph>ExternalizeL()</codeph> member function of <codeph>TX</codeph>:</p> <codeblock id="GUID-81A69F24-8A0E-5473-89A4-899DD96DDD65" xml:space="preserve">    ...
+    TX object;
+    ...
+    object.ExternalizeL(outstream);
+    ...</codeblock> <p>An alternative, and better way, is to use the templated stream <codeph>operator&lt;&lt;</codeph>. The Store framework implements this by calling <codeph>TX::ExternalizeL()</codeph>. The syntax is simply:</p> <codeblock id="GUID-8ABF4FD0-9F1E-5AB9-8D88-6A9EC3700C19" xml:space="preserve">    ...
+    outstream &lt;&lt; object; // externalise object
+    ...</codeblock> <p>Similarly, the <codeph>TX</codeph> object can be internalised from the stream <codeph>instream</codeph>, by calling the <codeph>InternalizeL()</codeph> member function of <codeph>TX</codeph>:</p> <codeblock id="GUID-6F2EE0E7-A9F2-5F87-AD16-AA6821C36313" xml:space="preserve">    TX object;
+       ...
+    object.InternalizeL(instream);
+    ...</codeblock> <p>The templated stream <codeph>operator&gt;&gt;</codeph> can also be used. The Store framework implements this by calling <codeph>TX::InternalizeL()</codeph>. The syntax is simply:</p> <codeblock id="GUID-A4B294A0-0311-5D38-805D-76CD6939D85E" xml:space="preserve">instream &gt;&gt; object; // internalise object</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE" xml:lang="en"><title>How
+to Create an Explicitly Bound Socket</title><shortdesc>This topic describes how create an explicitly bound socket. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Start the network interface connection with <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref> to
+create an explicitly bound socket. </p> <p><b>Creating an explicitly bound
+socket</b></p><p>  Explicitly bound sockets can be created in two ways: </p> </context>
+<steps id="GUID-46A5DC4D-4DF0-400D-ACA1-D34F7DC7D2AD">
+<step id="GUID-AF44E5D1-D088-4F16-A801-129E443B52F2"><cmd>Open a socket and bind the socket to a network interface connection.</cmd>
+<stepxmp><ul>
+<li><p>  Call <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-3491CE2A-A94D-34E0-B0DD-D476EE3334D7"><apiname>RSocket::Open()</apiname></xref> and pass an  <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> <p>  <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> binds
+to an interface  corresponding to the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> <p> 
+In the following example code, if <codeph>iConn</codeph> corresponds  to a
+WiFi <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> then, after a calling  <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-3491CE2A-A94D-34E0-B0DD-D476EE3334D7"><apiname>RSocket::Open()</apiname></xref> the
+socket is explicitly bound to WiFi. </p> <codeblock xml:space="preserve">iRecvSock.Open( ss, KAfInet, KSockStream, KProtocolInetTcp, iConn );</codeblock> </li>
+</ul></stepxmp>
+</step>
+<step id="GUID-8F737ED5-AEE8-4E3F-BBBF-F5EB4B05F815"><cmd>Open a socket and bind the socket to an IP address of the network
+interface connection.</cmd>
+<stepxmp><ul>
+<li><p>  Call <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-5550C9E4-2A1B-3F52-A6CF-F5822AB9DBC9"><apiname>RSocket::Bind()</apiname></xref> and bind the socket to  an
+IP address of the network interface connection. </p> <p>  <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-5550C9E4-2A1B-3F52-A6CF-F5822AB9DBC9"><apiname>RSocket::Bind()</apiname></xref> binds
+the socket to a unique  IP address of the network interface connection. </p> <p> 
+The following example code shows how to open a socket and bind  the socket
+to a unique IP address of the WiFi connection. </p>  <codeblock xml:space="preserve">// open an implicit socket
+TInt err = iRecvSock.Open( iSs, KAfInet, KSockDatagram, KProtocolInetUdp); 
+User::LeaveIfError( err );
+// This IP address maps to WiFi in the ced.cfg file
+_LIT(KRasAddr,"192.168.220.4");
+const TInt KPort = 7000;
+TInetAddr addr;
+err = addr.Input( KRasAddr ); 
+User::LeaveIfError( err );
+addr.SetPort( KPort );
+// Now the socket is explicitly bound to WiFi  
+err = iRecvSock.Bind( addr ); 
+RDebug::Print( _L("testapp: ETH Bind() = %d"), err ); 
+User::LeaveIfError( err );
+</codeblock> </li>
+</ul><p> The following code block shows an extract from the <filepath>ced.cfg</filepath> file.
+ </p><codeblock xml:space="preserve">
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+Name=Ethernet
+IfNetworks=ip
+IpNetMask=255.0.0.0
+IpGateway=0.0.0.0
+IpAddrFromServer=FALSE
+IpAddr=192.168.1.1
+IpDNSAddrFromServer=FALSE
+ConfigDaemonManagerName=NetCfgExtnDhcp
+ConfigDaemonName=!DhcpServ
+FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+Name=Ethernet WiFi
+IfNetworks=ip
+IpNetMask=255.0.0.0
+IpGateway=0.0.0.0
+IpAddrFromServer=FALSE
+-// This IP address maps to WiFi
+IpAddr=192.168.220.4
+IpDNSAddrFromServer=FALSE
+IpNameServer1=194.72.6.51
+IpNameServer2=194.72.6.52
+ConfigDaemonManagerName=NetCfgExtnDhcp
+ConfigDaemonName=!DhcpServ
+LanServiceExtensionTableName=WLANServiceExtensionTable
+LanServiceExtensionTableRecordId=4
+FIELD_COUNT=13
+END_ADD
+</codeblock></stepxmp>
+</step>
+</steps>
+<result><p>The socket is explicitly bound to the specific IP address of the
+network interface connection. </p> </result>
+<example><title>Explicit binding example</title> <p>Client A creates a socket
+with explicit binding using the specified interface connection. </p> <codeblock id="GUID-8CE9B83F-0091-5230-8F80-C27793E86437" xml:space="preserve">sock1 = RSocket.Open(srv,conn);</codeblock> <p>ESock
+creates the socket within the default connection and subconnection. </p> <fig id="GUID-BE26EF30-B103-5C3B-95A8-7ED66ECFE44C">
+<image href="GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e99068_href.png" placement="inline"/>
+</fig> </example>
+<postreq><p>A socket can also be opened over a sub-connection using <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>.
+When the socket is opened, a new Service Access Point (SAP) is created for
+the socket in <xref href="GUID-BE7D196E-357B-36BE-80BB-CCBBE00DFA90.dita"><apiname>ESock</apiname></xref>. The SAP is used to handle inbound
+and outbound data. </p> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8A58670C-D805-5E97-9B88-70C40CD011D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8A58670C-D805-5E97-9B88-70C40CD011D4" xml:lang="en"><title> NULL
+constant literals</title><shortdesc>Literal descriptor containing a NULL text string </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Three variants are provided and can be used directly:</p>
+<ul>
+<li id="GUID-D0742F7B-BB19-53CF-B5FC-70F34F424C46"><p><codeph>KNullDesC16</codeph> -
+the 16 bit variant for Unicode strings</p> </li>
+<li id="GUID-B97993A8-7495-54BF-A260-8957E5A3E3C5"><p><codeph>KNullDesC8</codeph> -
+the 8 bit variant for non-Unicode strings</p> </li>
+<li id="GUID-8BA001E9-6718-5A58-B8A6-2E69348BF1C8"><p><codeph>KNullDesC</codeph> -
+the build independent variant</p> </li>
+</ul>
+<p>These are defined in <filepath>e32std.h</filepath> and are defined as follows:</p>
+<ul>
+<li id="GUID-BC97F5BB-595A-5BC5-BCA2-7C5FABC055B8"><p><codeph>_LIT(KNullDesC,"");</codeph> </p> </li>
+<li id="GUID-A7AC1685-3C5F-579F-B9C6-2F3186A09123"><p><codeph>_LIT8(KNullDesC8,"");</codeph> </p> </li>
+<li id="GUID-1F6C6C8A-5354-57FD-BA41-1A3CE1ACC0E0"><p><codeph>_LIT16(KNullDesC16,"");</codeph> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA" xml:lang="en"><title> Variable
+TCP Receive Window</title><shortdesc>Explains how to improve performance of TCP/IP stack.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The performance of the existing Symbian platform TCP/IP stack is improved
+by doing the following:</p>
+<ul>
+<li id="GUID-00E77774-7DC6-513E-9CC3-46B499B4C196"><p>Setting an initial TCP
+receive window size that depends on the <xref href="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita#GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA/GUID-CDAA0409-6ECB-5ABB-A0E5-F7C5C58E6347">bearer
+type</xref>. </p> <p> </p> </li>
+<li id="GUID-22A70B8B-AD26-5898-8505-79F5434B5971"><p>Allowing the TCP receive
+window size to dynamically resize when there is a change in modulation. For
+example, GPRS to EDGE or 2G to 3G. </p> </li>
+</ul>
+<p>Bearers provide different bandwidth for data transmission using TCP/IP.
+The connection setup between TCP hosts are through three-way handshake. The
+TCP receive window size parameter is set during the connection startup. </p>
+<p>To indicate the TCP receive window size, the TCP header contains a 16-bit
+window field. The TCP receive window size denotes the maximum number of bytes
+that a sender can send and a receiver can receive. The TCP header can have
+any value between 0 and 64KB. Use the <xref href="http://www.ietf.org/rfc/rfc1323.txt" scope="external">TCP window scaling</xref> to increase the window size beyond
+64kB. The sender and receiver must agree to the scaling factor. The scaling
+factor can be multiplied at both the ends to increase the window size. For
+example, if the scaling factor is 2 and the window size negotiated is 96KB,
+then the stored window size is 48KB. Also a scaling factor of 2 yields the
+effective size of 96KB. The TCP receive maximum window size is mentioned in <codeph>tcpip.ini</codeph> file. </p>
+<p>At ROM build time, the (NetMCPR) plug-in configures the TCP receive window.
+It is possible to enable or disable the adaptive window size based on the
+bearer type. This helps some bearers to use adaptive window size and other
+bearers to use fixed pre-defined windows. The <xref href="GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA.dita#GUID-8A678AE5-A133-58EA-A4DD-B5BFC94D3AEA/GUID-E1123CF2-EA87-5F18-8F3C-3FD98DD6ABE8">lookup
+table</xref> provides the information on TCP receive window size at licensees
+specific MCPR (NetMCPR). Licensees are provided with the TCP receive window
+interface. </p>
+<p>TCP receive window must be changed due to the following reasons: </p>
+<ul>
+<li id="GUID-4E46CC4D-3CFA-5078-B801-9E0F20857CC8"><p>Change in modulation
+due to the network change - modulation value for bearer varies in different
+network. Modulation change in the network triggers the notification to change
+the TCP receive window for the connected TCP sockets. For example, change
+in network from 2.5G to 3G. </p> </li>
+<li id="GUID-41F0FC86-3E72-5372-8C43-B59F3835DD48"><p>Change in bearer - Forces
+the TCP/IP stack to supply a new TCP receive window that is specific to the
+new bearer. </p> </li>
+</ul>
+<section id="GUID-CDAA0409-6ECB-5ABB-A0E5-F7C5C58E6347"><title>Bearer types</title> <p>The
+following are the bearer types that support the TCP receive window: </p> <ul>
+<li id="GUID-302F21B4-FDBA-5052-939E-7FE309C4A7DF"><p>General Packet Radio
+Service (GPRS 2.5G) </p> </li>
+<li id="GUID-F60D6AF2-0EAA-5693-982B-B0B531E22862"><p>Enhanced Data Rate for
+GSM Evolution (EDGE 2.75G or 3G – depends on the modulation scheme) </p> </li>
+<li id="GUID-07D37BB9-2BBE-5C22-9D5C-A3477F73E766"><p>Universal Mobile Telecommunications
+System (UMTS 3G) </p> </li>
+<li id="GUID-1677511B-C52E-5E4D-8657-075468587E97"><p>High-Speed Downlink
+Packet Access (HSDPA 3G) </p> </li>
+<li id="GUID-DF4013BE-A1DE-5ECA-9124-2376924345C8"><p>WLAN </p> </li>
+</ul> </section>
+<section id="GUID-E1123CF2-EA87-5F18-8F3C-3FD98DD6ABE8"><title>Lookup table</title> <p>The
+lookup table contains the entries of TCP receive window size for each bearer
+type. To set the TCP receive window size for bearer, licensees must override
+the <xref href="GUID-5AC853D0-31FB-3944-8769-A59977F616B0.dita"><apiname>SetTcpWin()</apiname></xref> function. The licensees can define their
+own TCP window lookup table and set the TCP receive window size for a bearer. </p> <p>Symbian
+uses the following lookup table for testing purpose. The licensees can replace
+the TCP receive window size with their own values: </p> <table id="GUID-0697063E-F323-5824-9775-FE4413399697">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Bearer or Modulation</b>  </p> </entry>
+<entry><p> <b>TCP receive window size</b>  </p> </entry>
+</row>
+<row>
+<entry><p>GPRS </p> </entry>
+<entry><p>12240 – 17520 </p> </entry>
+</row>
+<row>
+<entry><p>EDGE </p> </entry>
+<entry><p>21760 – 49640 </p> </entry>
+</row>
+<row>
+<entry><p>UMTS </p> </entry>
+<entry><p>29920 – 33580 </p> </entry>
+</row>
+<row>
+<entry><p>HSDPA </p> </entry>
+<entry><p>65535 or greater </p> </entry>
+</row>
+<row>
+<entry><p>WLAN </p> </entry>
+<entry><p>65535 or greater </p> </entry>
+</row>
+<row>
+<entry><p>Ethernet </p> </entry>
+<entry><p>65335 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> </p> </section>
+<section id="GUID-6A97BEE5-8236-40A3-899B-6A4173D51C97"><title>Handling TCP receive window in TCP/IP stack</title> <p>The
+following are the scenarios to handle the TCP receive window: </p> <ul>
+<li id="GUID-2E1E9EC2-F481-54AE-A648-D9EC50EF77C4"><p>Increase window size
+- Change in the bearer increases the window size. </p> </li>
+<li id="GUID-B6C3EC7E-E0A0-521C-8830-4FDB27B409B8"><p>Decrease window size
+- Change in the bearer decreases the window size till it reaches the appropriate
+size for the new bearer. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-6822E7FA-D055-5693-8872-8D0E8554A734.dita"><linktext>Configuring
+TCP Receive                 Window</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8A7B837D-4069-5364-A596-686EEBAE351D"><title>Plug-In Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Plug-in (ECom) framework is a generic framework that provides a single mechanism to register and discover plug-ins and load an appropriate plug-in. </p> <section><title>Purpose</title> <p>In early versions of Symbian platform, plug-ins were provided by <xref href="GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita">polymorphic interface DLLs</xref>. All the frameworks within the Symbian platform that needed to use plug-ins had to provide their own mechanisms for the clients to discover and instantiate the implementations. This resulted in duplication of functionality. </p> <p>The Plug-In framework is intended to provide a common and system-wide mechanism for instantiating a dynamically determined component. </p> <p>Three distinct users of the plug-in framework are: </p> <ul><li id="GUID-B72B2ED5-545F-54BA-89F3-9F014A17D9D8"><p>Framework or Application designers </p> <p>These users need to understand interface definition design and platform security implications. </p> </li> <li id="GUID-F0961823-257F-553D-B58E-8061ECA03FCD"><p>Plug-in writers </p> <p>These users need to understand interface implementation, DLL creation and platform security implementation issue. </p> </li> <li id="GUID-939853D9-4C52-5C6E-9804-E0594DE2B152"><p>Plug-in users </p> <p>These users need to understand that the plug-in framework helps in selecting the plug-in but sometimes may need to specify which implementation the framework should choose. </p> </li> </ul> </section> <section><title>Required background</title> <p> <b>Run-time Binding</b>: This is called dynamic binding or late binding. The linking of a routine or object is performed during runtime based on the requirements. </p> <p> <b>DLL (Dynamic Link Library)</b>: Is a piece of code (a library) that is linked to a program at runtime rather than during the build process. The code inside a DLL can be shared by several clients at the same time without being duplicated in the mobile memory. </p> <p>In addition , the user should be aware of the<xref href="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita"> Platform Security Considerations</xref> of the plug-in framework architecture. </p> </section> <section><title>Key concepts and terms</title> <dl><dlentry><dt> Plug-in</dt> <dd><p>In computing, a plug-in(extension) consists of a computer program that interacts with a host application(a web browser or an email client) to provide a very specific function on demand. </p> <p>Applications support plugins to: </p> <ul><li id="GUID-E5F6B556-5957-50CE-9309-1013335A3911"><p>Enable third-party developers to create capabilities to extend an application. </p> </li> <li id="GUID-F882F8D5-A744-5079-9A15-DC5DD166C8BC"><p>Reduce the size of an application. </p> </li> <li id="GUID-6FC7254E-3CCF-58A2-810A-0B750CA178D5"><p>Separate source code from an application. </p> </li> </ul> </dd> </dlentry> <dlentry><dt>Plug-in System</dt> <dd><p>A client wishes to access a plug-in. The plug-in details are known only at run-time. The general characteristics of the plug-in are defined in an interface. Multiple variants of the plug-in can co-exist. </p> <p>The four clearly-defined roles of a plug-in system are: </p> <ul><li id="GUID-30A0D998-79B7-5039-B4B7-602C6C74F08B"><p>The <b>Client</b> that wishes to access services. </p> </li> <li id="GUID-8ED5CDA4-F17A-5BB2-A657-76ECE561844A"><p>The <b>Interface Definition</b> that defines how to request services. </p> </li> <li id="GUID-C371204A-5D56-52B9-AD55-D69BCCA5812B"><p>The <b>Interface Implementation/Plug-in </b> that provides the required processing. </p> </li> <li id="GUID-E89C937D-0DA1-5CDD-BDFC-6F4E3FD40FD2"><p>The <b>Framework</b> that provides the clients with the required access to the implementations. </p> </li> </ul> <p>The relationships can be represented as follows: </p> <fig id="GUID-47C384EC-4F9E-55EA-B50B-7DAD9E990865"><title>
+                  Plug-in relationships 
+                </title> <image href="GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e150560_href.png" placement="inline"/></fig> <p>The instantiation mechanism is responsible for providing the services that identify, and load the correct implementation at run-time. </p> </dd> </dlentry> <dlentry><dt> Interface</dt> <dd><p>Is an abstraction that an entity provides of itself to the outside. This separates the methods of external communication from internal operation. It allows internal modification and this modification does not affect the outside entities interaction with the interface. An interface can provide multiple abstractions. </p> </dd> </dlentry> <dlentry><dt> Interface API / Interface Definition</dt> <dd><p>Is a template for an interface implementation. </p> </dd> </dlentry> <dlentry><dt>Interface Client/Client</dt> <dd><p>Is an application that uses the interface definition. </p> </dd> </dlentry> <dlentry><dt>Interface Implementation Collection</dt> <dd><p>Is a collection of interface implementations/plug-ins. </p> </dd> </dlentry> <dlentry><dt>Registry</dt> <dd><p>Is a collection of plug-ins registered with the framework. </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>The plug-in framework employs the client server architecture. The client session is a singleton per process thread. </p> <fig id="GUID-7B34EF3B-5C56-5CA8-ABC0-60AB4F5652A1"><title>
+             Plug-in framework architecture 
+          </title> <image href="GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e150630_href.jpg" placement="inline"/></fig> <p>The functional components of the plug-in framework are: </p> <ul><li id="GUID-57437172-8AE4-5355-8776-E14C3298A6A1"><p>The <b> Client /Interface Client</b> that invokes the available services via the interface definition. </p> </li> <li id="GUID-807D6C07-9202-549D-9250-17806FBE1C40"><p>The <b>Server / Framework</b> controls access to a registry of available implementations that is used for interface implementation resolution and loading. </p> <p>The server facilitates: </p> <ul><li id="GUID-5A87C3FF-3576-5EAD-BD49-E2B498A09340"><p>Addition and removal of interface implementations. </p> <p>The addition, removal or modifications to an implementation is notified to the server. The server updates the changes in the registry. </p> </li> <li id="GUID-7D2957EE-C6BF-5687-84AA-A44C1EFBFD42"><p>Search/Access mechanisms. </p> <p>The registry data is maintained as a hierarchical arrangement of implementations. The complete data is scanned and matching interface implementation list is produced as a result of search. </p> </li> <li id="GUID-B44DA453-D953-515C-8B6C-D6F315CD03BD"><p>Resolution mechanisms. </p> <p>The best fit implementation from the resultant search is identified. </p> </li> <li id="GUID-1ABE83FD-E2DE-5A72-BBEA-F6F216961C9D"><p>Load control. </p> <p>Controls access to a single instance of the available implementations. The implementation identification information is used to load the appropriate collection. </p> </li> </ul> </li> </ul> </section> <section><title>APIs</title> <table id="GUID-1B7014F2-7210-554B-BE78-35560FF68FE0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita"><apiname>REComSession</apiname></xref>  </p> </entry> <entry><p>Resolves, instantiates, and destroys interface class implementations requested by the plug-in framework clients. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The plug-in framework allows: </p> <ul><li id="GUID-593D6FAD-EF95-53E8-B4C2-A60EF4A9DB1A"><p>Framework developers to write interface definitions and extend interfaces. </p> </li> <li id="GUID-DD0929A4-F9E4-5B70-8D3D-7D5697A09C27"><p>Plug-in writer to implement the interfaces. </p> </li> <li id="GUID-272F59F3-8EF6-58C4-9F61-9532D1D0EC46"><p>Plug-in user to use the interfaces. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-41D80358-473F-5B50-A09A-4F5601EAC4A9.dita"><linktext>Framework Developer Tutorials</linktext> </link> <link href="GUID-57F29787-B425-53EA-9DB4-372B77543584.dita"><linktext>Plug-in Writer's Tutorials</linktext> </link> <link href="GUID-DE9CB4F7-5129-5450-A6D6-9B0BA253FC81.dita"><linktext>Plug-in User's Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e336934_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091" xml:lang="en"><title>Control
+pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Control pane occupies the bottom part of the screen and
+displays the labels associated with the softkeys.</p>
+<fig id="GUID-04E1523C-BC5C-4951-83FD-FD48B8370B6E">
+<title>Control pane</title>
+<image href="GUID-4DEC6706-6189-4E91-AEA9-479DDF04B955_d0e53591_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The Control pane is also active during <xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options
+menus</xref>, <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">queries</xref>,
+and other states using <xref href="GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita">pop-up
+windows</xref>, although it does not itself reside in a pop-up window.</p>
+<p>The actual physical softkeys should be positioned directly beneath the
+screen so that the association between the keys and their respective labels
+is evident. Note, however, that the middle label refers to the Selection key
+(see <xref href="GUID-2F264A2A-FA7A-4718-A6B6-9A764C1D1E0E.dita">Labeling the Selection
+key</xref> for further details).</p>
+<section><title>Using the control pane
+in C++ applications</title><p>The APIs to use for the control pane are the Buttons
+API for the softkeys and the Options
+menu API for the menus.</p><p>For implementation information on using
+the softkeys, see Using
+the Buttons API. For implementation information on the menus, see Using
+the Options menu API.</p><p>The Symbian platform uses Control Button
+Area (CBA) resources to set the options in the control pane above the softkeys.
+CBA resources map the text that appears above the softkeys in the control
+pane with commands that are collected by the event loop of the application
+framework and delivered to your application for <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref>.</p><p>When a mobile device user selects an Options softkey,
+the application framework displays the Options menu based upon the definitions
+in the menu bar's resources.</p><p>The Symbian platform uses MENU_BAR resources
+to create the Options menu, when a mobile device user selects the Options
+softkey. The options that appear above the softkeys are determined by CBA
+resources. The MENU_BAR resources map the text that appears in the Options
+menu with commands that are collected by the event loop of the application
+framework and delivered to your application for command handling. </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e334987_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B28B8BB-6935-5332-B4D3-4183FDA3D202.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8B28B8BB-6935-5332-B4D3-4183FDA3D202" xml:lang="en"><title>Singly
+Linked Lists Overview</title><shortdesc>A singly linked list is an ordered, non-indexed list of elements,
+that can be traversed only from start to end. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-BEE97C73-8E2A-40F3-BBA0-4423B40346C4"><title>Purpose</title> <p>This
+section of documentation covers the APi that manipulates and manages a singly-linked
+list: an ordered, non-indexed list of elements, that can be traversed only
+from start to end. </p> <p>The API contains all the necessary functionality
+for singly-linked lists. It is possible to derive from its classes to add
+additional features.</p> </section>
+<section id="GUID-D998BA4E-B526-4B4A-A5C4-84E95D4ED456"><title>Description</title> <p> The
+API has three key concepts: list header (TSglQue), link class (TSglQueLink),
+and iterator class (TSglQueIter). </p> <p><b>General properties</b> </p><p>Note
+the following properties of singly-linked lists:</p> <ul>
+<li id="GUID-27F8B3DB-DB3B-5BBA-BBA9-170A0851E5F8"><p>elements can be accessed
+through iterating through the list, and added to the start and end of a list,
+but not to the middle </p> </li>
+<li id="GUID-3174EA23-FD0E-5C1A-8C9C-655814238EBB"><p>elements in a linked
+list need not be objects of the same type but ought to be derived from the
+same base class</p> </li>
+</ul> <p><b>List header</b> </p> <p>The <xref href="GUID-2364CAB0-E19E-5EBB-837F-F6484642C2E4.dita">list
+header</xref> supplies the behaviour for managing a singly-linked list of
+objects. </p> <p>The list header interface is provided by <xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref> <codeph>&lt;class
+T&gt;</codeph>. The <codeph>T</codeph> template parameter specifies the type
+of objects in the list.</p> <p><b>Link class</b> </p> <p>To be a member of
+a singly-linked list, an object must contain an instance of the<xref href="GUID-07045409-4714-5800-89EF-73590D4F0F37.dita">link</xref> class
+as a data member.</p> <p>The link class interface is provided by <xref href="GUID-463970A1-7F84-3916-9236-1FF92F6B85BA.dita"><apiname>TSglQueLink</apiname></xref>.</p> <p><b>Iterator
+class </b> </p> <p>The <xref href="GUID-82C53275-6F7C-5B3D-9A07-FA4801D42403.dita">iterator</xref> class
+supplies the behaviour for moving through the elements of a list. </p> <p>The
+iterator class interface is provided by <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref>.</p> </section>
+<section id="GUID-B7B5EDB5-1688-4745-AA23-975EB42A246D"><title>See also</title> <p><xref href="GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita">Doubly Linked Lists Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e11590_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B37D53D-77E1-58C6-9A44-3376A450228B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8B37D53D-77E1-58C6-9A44-3376A450228B" xml:lang="en"><title>Shared Memory Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Shared memory is a method of interprocess communication (IPC) where a single chunk of memory is shared between two or more processes. You can use shared memory APIs to set permissions on memory and to pass data between programs efficiently. </p> <p>The following topics describe how you can use shared memory APIs when you develop POSIX compliant applications or port POSIX-based applications to Symbian platform. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27" xml:lang="en"><title>Sensors
+Framework Overview</title><shortdesc>The Sensors Framework consists of a sensor server and channel based
+client APIs for supporting an extensible set of sensor hardware. The sensor
+server defines a plug-in interface for adding sensor plug-ins for any type
+of sensor hardware. The channel APIs enable client applications to interact
+with the sensor hardware.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-AB7AB8C8-DEB2-445C-A216-1FE142592C7D-GENID-1-6-1-8-1-1-6-1-4-1-3-1-3-1"><title>Key Concepts
+and Terms</title><dl>
+<dlentry>
+<dt>Sensor Channel</dt>
+<dd><p>The sensor channel forms a medium of interaction between the sensor
+hardware and client applications. </p><p>The data from one physical sensor
+can be mapped to several channels. For example, the Sensor System handling
+an acceleration sensor can provide raw data on one channel and preprocessed
+tap events on another.</p></dd>
+</dlentry>
+<dlentry>
+<dt>Channel Properties</dt>
+<dd><p>Channel properties contain properties of a specific channel, such as
+data rate, availability, connection type and so on.</p></dd>
+</dlentry>
+<dlentry>
+<dt>Data item</dt>
+<dd><p>A data item is a discrete data package that contains sensor data or
+an event parsed from sensor data and related values, such as timestamp. Each
+channel provides a single type of data item only. </p></dd>
+</dlentry>
+<dlentry>
+<dt>Channel condition</dt>
+<dd><p> A value-operator pair targeting a single value inside a data item,
+indicated by an index. A condition is met when the channel data value in comparison
+with the condition value using condition operator is true. The conditions
+are gathered in condition sets.</p><p>There are two condition types: single
+limit conditions and range conditions. Range conditions are formed from two
+separate conditions, representing the lower and upper limits of the range.</p></dd>
+</dlentry>
+<dlentry>
+<dt>Channel Condition Set</dt>
+<dd><p>A set of channel conditions. Following are the two types of condition
+sets: <ul>
+<li><p>AND condition set: An AND condition is met only if a data value satisfies
+all conditions in the set.</p></li>
+<li><p>OR condition: An OR condition is met if a data value satisfies even
+one single condition in the set.</p></li>
+</ul></p></dd>
+</dlentry>
+</dl>           </section>
+<section id="GUID-AB7AB8C8-DEB2-445C-A216-1FE142592C7D-GENID-1-6-1-8-1-1-6-1-4-1-3-1-3-2"><title>Description</title><p>The
+sensor server provides a plug-in interface (Sensor Definitions APIs) that
+enables platform developers to create sensor plug-ins for required sensors
+hardware. The sensor plug-ins enable the interaction between a client application
+and the sensor hardware through sensor channels. The Sensor Channel APIs provides
+access to each sensor channel.</p><p>One physical sensor can provide several
+different types of data.  For example, the physical magnetometer can provide
+data for the Magnetometer channel and the Magnetic North channel. Each sensor
+channel has its own sensor channel data definition in the Sensor Definitions
+APIs that defines the format of the data package supplied by the sensor channel.
+The data definition can also define properties for each data item in the data
+package.</p><p>The sensor server facilitates the transfer of data from one
+sensor hardware to multiple clients simultaneously. It also resolves any contention
+between client applications for opening channels or configuring a sensor device.</p> 
+         </section>
+<section id="GUID-AB7AB8C8-DEB2-445C-A216-1FE142592C7D-GENID-1-6-1-8-1-1-6-1-4-1-3-1-3-3">       <title>APIs</title> 
+     <table id="GUID-4D61C176-6A42-4F06-96A2-950F6ACD1C25">
+<tgroup cols="2"><colspec colname="col1" colwidth="0.44*"/><colspec colname="col2" colwidth="1.56*"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>CSensrvChannelFinder</entry>
+<entry>The channel finder provides functions to search and find sensor channels
+that are supported by the Symbian device. </entry>
+</row>
+<row>
+<entry>CSensrvChannel</entry>
+<entry>The sensor channel provides functions to open and control a sensor
+channel.</entry>
+</row>
+<row>
+<entry>CSensrvChannelCondition</entry>
+<entry>The sensor channel provides functions for notifying when a specific
+condition is met.</entry>
+</row>
+<row>
+
+<entry>CSensrvChannelConditionSet</entry>
+<entry>The sensor channel condition set provides functions for adding one
+or more channel conditions to a condition set.</entry>
+</row>
+<row>
+<entry>MSensrvChannelListener</entry>
+<entry>The sensor channel listener is a callback interface that tracks for
+new channels installed on the Symbian device.</entry>
+</row>
+<row>
+<entry>MSensrvChannelConditionListener</entry>
+<entry>The sensor channel condition listener is a callback interface that
+notifies the clients when a condition-set is satisfied.</entry>
+</row>
+<row>
+<entry>MSensrvDataListener</entry>
+<entry>The sensor data listener is a callback interface that notifies the
+clients when the sensor data is available.</entry>
+</row>
+<row>
+<entry>MSensrvPropertyListener</entry>
+<entry>The sensor property listener is a callback interface that notifies
+the client when a channel property changes.</entry>
+</row>
+</tbody>
+</tgroup>
+</table>  <fig id="GUID-90C26AB4-F003-444C-B9AF-422BB816557C">
+<image href="GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e113379_href.png" placement="inline"/>
+</fig><p>A physical sensor can supply data to several sensor channels (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCSensrvChannel.html" format="application/java-archive"><codeph>CSensrvChannel</codeph></xref>)
+. A sensor channel provides data to an application in a channel-specific data
+format (for example, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/Sensor_definitions_APIClassesIndexPage.html" format="application/java-archive"><codeph>TSensrvXyzData</codeph></xref>) through a callback to the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMSensrvDataListener.html#7ddce5c72a9d429ddb9e69f9e3a0a9b6" format="application/java-archive"><codeph>MSensrvDataListener::DataReceived()</codeph></xref> interface. A
+sensor channel has a single channel info item (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classTSensrvChannelInfo.html" format="application/java-archive"><codeph>TSensrvChannelInfo</codeph></xref>) that describes the channel in general. A sensor channel has multiple
+property items (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classTSensrvProperty.html" format="application/java-archive"><codeph>TSensrvProperty</codeph></xref>)
+that describe the channel in more detail. Each property item is referenced
+by a property id and an index.</p>   </section>
+<section id="GUID-7D9F56F7-0301-4FCF-8D88-1DDC6688E9CB"><title>Typical Uses</title><p>Using
+the sensor channel APIs, you can perform the following operations:<ul>
+<li><p>List all the sensor channels that are available for a particular sensor
+type. For details, see <xref href="GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita">Querying
+for Sensor Channels</xref></p></li>
+<li><p>Receive and control periodic sensor data. </p>For details, see <xref href="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita">Receiving Data from Sensors</xref></li>
+<li><p>Configure sensor channels. </p> For details, see <xref href="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita">Retrieving
+Channel Properties</xref> and <xref href="GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita">Setting
+Channel Properties</xref></li>
+<li><p>Receive notifications about sensor channel additions and removal. For
+details, see <xref href="GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita">Receiving
+Notifications about Channel Changes</xref></p></li>
+<li><p>Configure a sensor channel to support conditional listening. This means
+that you can configure it to notify you when the data on the channel matches
+some particular values, or exceeds specified boundaries. For details, see <xref href="GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita">Receiving Channel Data based
+on Conditions</xref>.</p></li>
+</ul></p></section>
+</conbody><related-links>
+<link href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita"><linktext>Using Sensor
+Channels APIs</linktext></link>
+<link href="GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita"><linktext>Compensating
+Sensor Data for Display Orientation </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B57B733-C418-5623-AFAD-34935FED1743.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8B57B733-C418-5623-AFAD-34935FED1743"><title>Basic Application Framework Utilities Overview</title><shortdesc>Basic Application Framework Utilities (BAFL) is a utility library that enables Symbian Developers to use the system resources such as clipboard and file system. It is a complementary interface to the Symbian file system handling functions, and most of the APIs provided by this library requires a session with Symbian file system. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>BAFL library details</title> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-1DF8D92D-37D4-54D5-BBA9-067DBC8A2199"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short description</entry> </row> </thead> <tbody><row><entry><p> <filepath>bafl.dll</filepath>  </p> </entry> <entry><p> <filepath>bafl.lib</filepath>  </p> </entry> <entry><p>Utility library providing APIs to access clipboard data, parse command-line arguments, and so on. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Description</title> <p>A Symbian application developer can use this library to use the system resources for the most common and frequent tasks such as copying and pasting data, reading files, producing sounds, comparing strings, handling notifications and so on. </p> </section> <section><title>APIs</title> <p>The key classes of BAFL are as follows: </p> <table id="GUID-5B5CEADB-B1E5-5374-8088-6A20E81554AA"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-7E9D05E4-FD8E-31C8-A3D5-9591F5784794.dita"><apiname>CClipBoard</apiname></xref>  </p> </entry> <entry><p>Provides access to the clipboard. </p> </entry> </row> <row><entry><p> <xref href="GUID-CE114EA5-A084-39A5-9F48-14344AB5BDBA.dita"><apiname>CCommandLineArguments</apiname></xref>  </p> </entry> <entry><p>Provides access to the arguments passed to an application when it is launched from the graphical shell. </p> </entry> </row> <row><entry><p> <xref href="GUID-1ABD9C74-01F0-3144-9E5C-550E83F4D424.dita"><apiname>CDesCArray</apiname></xref>  </p> </entry> <entry><p>Base class for implementing independent descriptor arrays. </p> </entry> </row> <row><entry><p> <xref href="GUID-A9F599D8-DCD8-3066-890B-EFE32B11CDE0.dita"><apiname>CEnvironmentChangeNotifier</apiname></xref>  </p> </entry> <entry><p>Enables an application to respond to changes in system environment. </p> </entry> </row> <row><entry><p> <xref href="GUID-1D10173D-17C1-3EA3-923E-6C7017F1F56F.dita"><apiname>RChangeNotifier</apiname></xref>  </p> </entry> <entry><p>Provides a handle to the kernel-side environment change notification service. This service will notify the registered applications of any change in system environment, so that the applications can respond to the change by taking necessary actions. </p> </entry> </row> <row><entry><p> <xref href="GUID-A735CD33-ABE9-30BA-95D3-16F3B17F82C3.dita"><apiname>RIncrMatcherBase</apiname></xref>  </p> </entry> <entry><p>Provides functions for comparing two text buffers. </p> </entry> </row> <row><entry><p> <xref href="GUID-1B8D19AA-9FCF-32D5-B072-CDBA52F89CCD.dita"><apiname>CBaNamedPlugins</apiname></xref>  </p> </entry> <entry><p>Supports locale-specific translation of plug-in names. </p> </entry> </row> <row><entry><p> <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref>  </p> </entry> <entry><p>Provides access to the application resource files. </p> </entry> </row> <row><entry><p> <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita"><apiname>RStringPool</apiname></xref>  </p> </entry> <entry><p>Provides access to the string pool. </p> </entry> </row> <row><entry><p> <xref href="GUID-DF7CBE32-6D4E-3C15-982F-D5C2E0EDE380.dita"><apiname>CoeSoundPlayer</apiname></xref>  </p> </entry> <entry><p>Utility class for simple sound playing. </p> </entry> </row> <row><entry><p> <xref href="GUID-D426C4BB-F317-3F22-AC37-E741FCB0B269.dita"><apiname>BaSystemSound</apiname></xref>  </p> </entry> <entry><p>Retrieves and modifies the system sounds settings. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Using BAFL</title> <p>The following tutorials will guide Symbian Developers to use the BAFL utility library for various use-cases supported: </p> <ul><li id="GUID-406779F6-8A12-56E8-8BBB-713FABAEDB8C"><p>Copying and pasting data from clipboard </p> </li> <li id="GUID-FF308E8D-F5FD-5DC7-8C5A-806473FDF715"><p>Parsing command-line arguments </p> </li> <li id="GUID-E9C55412-7569-57A1-9DFB-92456800EACA"><p>Creating and managing descriptor arrays </p> </li> <li id="GUID-9C577A7F-DB2D-55F2-AD4D-C557DBF64F84"><p>Handling environment change notifications </p> </li> <li id="GUID-46C49AC4-B48B-5EE0-B10A-598CE773F036"><p>Comparing text buffers </p> </li> <li id="GUID-4E26B2EA-60BC-5BF0-8926-0928C33A56DD"><p>Displaying names of plug-ins </p> </li> <li id="GUID-A0B5EAF7-4243-5B8B-81C5-A8DE386594E1"><p>Reading application resource files </p> </li> <li id="GUID-04B6A292-9C0E-5C01-B405-4DACD56A6543"><p>Producing sounds for common events such as messages and errors </p> </li> <li id="GUID-9A8DCB67-99B0-5DE2-84B4-1CB93945FBEF"><p>Handling pre-defined string constants </p> </li> </ul> </section> </conbody><related-links><link href="GUID-F61D1710-2D52-5B9B-A25F-6DFA606DAC0F.dita"><linktext>BAFL Concepts</linktext> </link> <link href="GUID-85AA0FD4-3BD1-50A7-B241-AE3908ACCF30.dita"><linktext>BAFL Tutorials</linktext> </link> <link href="GUID-7953ECE8-3935-57E1-86C2-D53132930B71.dita"><linktext>BAFL Examples</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B7ABDB0-B016-5106-824E-D823F1D2959F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8B7ABDB0-B016-5106-824E-D823F1D2959F"><title>Working with Overlays</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorials describes about the APIs used with Overlays. </p> <section><title>Purpose</title> <p>This documents provides detailed description about creating and working with Overlays. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following are the setup and configuration requirements you need to follow before Overlay implementation: </p> <ul><li id="GUID-80EF2621-E99E-5A6A-A45E-6BABE63A12BA"><p>Licensee need to provide <xref href="GUID-D54E15C8-4952-3A9C-807A-BC7DABB087D4.dita"><apiname>McameraOverlay</apiname></xref>, interface class implementation. </p> </li> <li id="GUID-3C86F967-D172-593D-82E9-ADADD64D0BA4"><p>The providers of the camera extension API for extra features of image overlays, must provide <xref href="GUID-9C5233B4-6BD6-3139-B0B7-B01B14C18D2B.dita"><apiname>MCameraOverlay2</apiname></xref>, interface class implementation. </p> </li> </ul> </section> <section><title>Creating Overlays </title> <p>The following tasks cover the creation of overlays: </p> <ol id="GUID-8BFAC0B2-5EDE-5307-9349-2ADAF73C3C14"><li id="GUID-5C74F98A-3C76-50AB-90CD-170A45A3D830"><p>Create an object of class <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-B37E8556-885D-3BDD-B4F2-3788CC242A7D"><apiname>Ccamera::CCameraOverlay</apiname></xref> using the <xref href="GUID-1F37AA0E-FFB6-3A85-B17A-303D3500C275.dita#GUID-1F37AA0E-FFB6-3A85-B17A-303D3500C275/GUID-2306CE6E-BA4B-33A1-8E05-2CBEE7F74E8F"><apiname>CcameraOverlay::NewL()</apiname></xref> factory method. </p> <p>This class maps the exported call to <xref href="GUID-D54E15C8-4952-3A9C-807A-BC7DABB087D4.dita"><apiname>McameraOverlay</apiname></xref> class and <xref href="GUID-3C1A0001-1653-391E-88E6-3844EF68C7ED.dita"><apiname>McameraOverlay2</apiname></xref>, which provides the overlay functionality. </p> </li> <li id="GUID-29884B0D-B736-5D21-8B19-4652DBD92BDB"><p>In second phase construction for <xref href="GUID-75F14618-727C-340C-B34A-ECEEA5F612F9.dita"><apiname>CCameraOverlay</apiname></xref>, </p> <ul><li id="GUID-2D552178-5650-5D10-A007-3F900732FC1B"><p>retrieve the handle to the concrete implementation for <xref href="GUID-D54E15C8-4952-3A9C-807A-BC7DABB087D4.dita"><apiname>McameraOverlay</apiname></xref> and <xref href="GUID-3C1A0001-1653-391E-88E6-3844EF68C7ED.dita"><apiname>McameraOverlay2</apiname></xref> using <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-1F537D7D-5451-3834-869D-3092A4773B83"><apiname>Ccamera::CustomInterface()</apiname></xref> method, when specific UIDS are passed. </p> </li> <li id="GUID-63D351BC-D785-5CDE-B1DE-C30CB0390A7E"><p> <xref href="GUID-A2495EB1-B50B-3557-BF43-098A1098371D.dita"><apiname>KECamMCameraOverlayUid</apiname></xref> and <xref href="GUID-7B0B09F8-AD72-3BD5-9D54-936666A15BCB.dita"><apiname>KECamMCameraOverlay2Uid</apiname></xref> are used to retrieve handle for <xref href="GUID-D54E15C8-4952-3A9C-807A-BC7DABB087D4.dita"><apiname>McameraOverlay</apiname></xref> and <xref href="GUID-3C1A0001-1653-391E-88E6-3844EF68C7ED.dita"><apiname>McameraOverlay2</apiname></xref> derived class objects respectively. </p> </li> </ul> </li> <li id="GUID-F8743483-77D7-56BF-AF45-89695A3770E0"><p>Get information about the overlay functionality supported by the ECam implementation server using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-3420058A-A1E3-3E80-99D3-CD0314B0227F"><apiname>CCamera::CCameraOverlay::GetOverlaySupport()</apiname></xref> method. </p> <ul><li id="GUID-1771B0D9-020B-5AA2-B5A4-3CFA723CBBC6"><p>Class <xref href="GUID-B78627FD-EE23-3814-B5F2-6CED8547734C.dita#GUID-B78627FD-EE23-3814-B5F2-6CED8547734C/GUID-E30DFE88-9F92-3848-9D61-E26EB6FC1317"><apiname>Ccamera::CcameraOverlay::ToverlaySupportInfo</apiname></xref> retrieves the supported color formats. </p> </li> <li id="GUID-27966949-6A01-5675-BAAB-BA3A09FE452F"><p>ECam implementation uses <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita#GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80/GUID-8C901E94-2828-38F2-A0C1-D23246D24416"><apiname>ToverlaySupportInfo::Size()</apiname></xref> and <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita#GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80/GUID-F0D764AD-96DA-3444-8BFE-A9D36F895433"><apiname>ToverlaySupportInfo::Version()</apiname></xref> to verify if client requires the same version of <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita"><apiname>ToverlaySupportInfo</apiname></xref>. Client retrieves the overlay support per camera mode by passing the desired camera mode through <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita#GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80/GUID-520DC7A2-5E3C-37F5-B7C3-3CFFF6F38E95"><apiname>ToverlaySupportInfo::iDesiredCameraMode</apiname></xref>. </p> </li> <li id="GUID-3B2B03DA-F106-5926-9E26-9D17AACA37D1"><p>In viewfinder mode, client also passes the viewfinder handle <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita#GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80/GUID-08F63ED9-DCE8-39FC-870E-1018F6B8A689"><apiname>ToverlaySupportInfo::iViewFinderHandle</apiname></xref>, for which the overlay support information is required. </p> </li> <li id="GUID-33D59B7F-B15E-554C-A5D3-E556D88BC45E"><p>If client specifies <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita#GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80/GUID-FEA78F59-AB9A-3AB7-B2D9-FC3F1AE45C60"><apiname>ToverlaySupportInfo::
+                     iDesiredCameraMode</apiname></xref> as <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-E73C6D08-FFA7-3BF1-A652-E801D3AB0855"><apiname>CCamera::CCameraOverlay::EmodeNone</apiname></xref> and <xref href="GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80.dita#GUID-FE6C2803-1928-34A9-A048-E92E2A4A2D80/GUID-ABE7B284-CB29-3D8E-872A-6B20F43E015B"><apiname>ToverlaySupportInfo:: iViewFinderHandle</apiname></xref> as <xref href="GUID-C028D6F6-B893-3B7B-A1A2-BD42F868E647.dita"><apiname>KECamOverlayNoSpecificViewFinderHandle</apiname></xref>, ECAM implementation provides the overlay support information applicable to every camera mode. </p> </li> </ul> </li> <li id="GUID-2286C915-17D9-5605-8974-1D2C835C9F38"><p>Create an image overlay object using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-197F2DA4-6184-31C4-ABF5-D33207C65DE5"><apiname>CCamera::CCameraOverlay::CreateOverlayL()</apiname></xref> method. After successful creation of overlay object on the ECam implementation, client receives a specific overlay handle as return value of <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-197F2DA4-6184-31C4-ABF5-D33207C65DE5"><apiname>CCamera::CCameraOverlay::CreateOverlayL()</apiname></xref>. Client also passes the parameters representing the overlay and the image to be used as an overlay. </p> </li> </ol> </section> <section><title>Working with Overlays</title> <p>You can do the following tasks when working with overlays. </p> <ol id="GUID-D0C94817-4057-5A18-8839-AC776C2AED5D"><li id="GUID-CC0ED63E-E99B-51ED-85E2-5047C15F4FF1"><p>Make sure that you create an overlay object using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-197F2DA4-6184-31C4-ABF5-D33207C65DE5"><apiname>CCamera::CCameraOverlay::CreateOverlayL()</apiname></xref> method. Multiple overlays may be created by the client. The specific overlay handle represents a particular overlay. </p> </li> <li id="GUID-1A9E9D8B-B9A9-5AF7-AB8A-65749AAE99AE"><p>Get the overlay image data for a specified overlay using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-8028C077-13AA-3214-92E9-6AE19570B931"><apiname>CCamera::CCameraOverlay::GetOverlayBitmapL()</apiname></xref> method. ECam implementation transfers the ownership of the overlay image to the client. </p> </li> <li id="GUID-49DA8F5B-68BB-540F-9F44-8D241DFD8A5E"><p>Get the overlay image parameters for a specified overlay using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-1C26E162-3263-38C2-9690-CBAE2272EBF6"><apiname>CCamera::CCameraOverlay::GetOverlayParametersL()</apiname></xref> method. </p> <ul><li id="GUID-3D8BE4C5-E3FB-5526-821B-AFEE385F4776"><p>ECam implementation uses <xref href="GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3.dita"><apiname>ToverlayParameters</apiname></xref> object passed by the client to provide the relevant information. If overlay type specified by <xref href="GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3.dita#GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3/GUID-C3155F45-35C4-35BF-9E7E-50607975A25D"><apiname>ToverlayParameters::iCurrentTypes</apiname></xref> is <xref href="GUID-9ED27C17-4F9B-3A2B-BCB6-AA10BB750531.dita#GUID-9ED27C17-4F9B-3A2B-BCB6-AA10BB750531/GUID-EAF2E2ED-2462-3D19-B18F-D4041CA4FE9A"><apiname>CCamera::CCameraOverlay::ToverlayType::EperPixel</apiname></xref>, alpha value given by <xref href="GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3.dita#GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3/GUID-6F18CD5F-36D9-332B-A00A-43BD42FED139"><apiname>ToverlayParameters::iAlphaValue</apiname></xref> will not be used. </p> </li> <li id="GUID-DF011E1E-B74E-5E09-B971-66351874E486"><p> <xref href="GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3.dita#GUID-AB5877A3-45BB-3E01-9037-86AB3C3F8CC3/GUID-7EFA28BE-D922-3D3A-BA1A-BFDF0F7F9D0B"><apiname>ToverlayParameters:: iViewFinderHandle</apiname></xref> provides the handle for the viewfinder on which the overlay is supposed to be applied. </p> </li> <li id="GUID-FB60F04F-26D8-5B2F-85E8-5661FEB1ED4F"><p>Only one viewfinder handle can be passed. If <xref href="GUID-C028D6F6-B893-3B7B-A1A2-BD42F868E647.dita"><apiname>KECamOverlayNoSpecificViewFinderHandle</apiname></xref> is provided by the implementation, then the overlay is supposed to be applied for every viewfinder handle of type as given by <xref href="GUID-8119DBE6-9344-3F9E-83A0-041B4CE74053.dita"><apiname>iCurrentModes</apiname></xref>. If <xref href="GUID-4170540A-7A57-3869-AE45-A0BC93D15110.dita"><apiname>KECamOverlayInvalidViewFinderHandle</apiname></xref> is provided, then <xref href="GUID-9A97AA55-4C2D-3CF3-A3E8-31774E26FC45.dita#GUID-9A97AA55-4C2D-3CF3-A3E8-31774E26FC45/GUID-5A318BA9-5DB2-363B-8CB7-4A8259F6C55F"><apiname>TOverlayParameters::iCurrentModes</apiname></xref> will not be omitted and overlay will be applied for every viewfinder along with other camera modes. </p> </li> </ul> </li> <li id="GUID-0F77DD3D-A2B9-5244-A16F-AF59C54062C1"><p>Set overlay image data using<xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-F2235006-F093-3DDD-AB80-E461F4A56CE0"><apiname>CCamera::CCameraOverlay::SetOverlayBitmapL()</apiname></xref> method, if it was not specified when the overlay was created using <xref href="GUID-7EB4D87A-5A4C-3A46-95BB-56BA4371C45C.dita"><apiname>CreateOverlayL()</apiname></xref> method. This changes the overlay image data for a specified overlay. </p> </li> <li id="GUID-58343E30-1DAC-54B7-95C5-6D28FE3255F6"><p>When this method is called, overlay size should not be changed for a given overlay. Hence, the client should not call <xref href="GUID-8C9476F2-D5BC-3A16-A3C4-8D9FD29AA86D.dita"><apiname>SetOverlayParametersL()</apiname></xref> after this method, since the new parameters might not be compatible with the overlay image set. </p> </li> <li id="GUID-F189DC8E-7ED5-5619-91BA-CCB5B88446B2"><p>Set the new parameters for the specific overlay using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-EC9D9EF2-72BB-32D7-8941-138EF68932F9"><apiname>CCamera::CCameraOverlay::SetOverlayParametersL()</apiname></xref> method. </p> <p>This might exit with an error if <xref href="GUID-24C99B98-57AE-347F-BDB8-E8E909CFE4FA.dita"><apiname>SetOverlayBitmapL()</apiname></xref> API is called before this method. </p> </li> <li id="GUID-43798A6D-41CE-5C69-8A24-2449E799FE7B"><p>Set the overlay image data using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-CF904B94-CCE4-3CC0-8147-3DAC352B20F0"><apiname>CCamera::CCameraOverlay::SetModifiableOverlayBitmapL()</apiname></xref> method, if it was not specified by<xref href="GUID-7EB4D87A-5A4C-3A46-95BB-56BA4371C45C.dita"><apiname>CreateOverlayL()</apiname></xref> during overlay creation. </p> <p>Ownership of the overlay image is passed to the ECam implementation. See also <b>step 5</b> above. </p> </li> <li id="GUID-FFD3E34A-9EA5-5769-8236-4E1DDA787CD6"><p>Use the overloaded <xref href="GUID-1CEA39E3-0011-3A6E-9EA0-514FC8B69D16.dita#GUID-1CEA39E3-0011-3A6E-9EA0-514FC8B69D16/GUID-51444180-74AC-3B78-BB7C-10F4F7A92EA4"><apiname>CCamera::CCameraOverlay::GetAllOverlaysInZOrderL
+                (CCamera::CCameraOverlay::TOverlayCameraMode aOverlayCameraMode, TInt
+                aViewFinderHandle, RArray&lt;TUint&gt;&amp; aOverlayHandles)</apiname></xref> method to get all mode-specific overlays in z-order from the ECam implementation server. </p> </li> <li id="GUID-41258620-81F5-51F0-9404-F78E1CD57257"><p>Implementation gives preference to the sequence in which the client has passed the overlay handles, if any mis-match occurs with the z-order of each such overlay. Implementation can improve the z-order of the overlays if required, to remove any ambiguity. </p> </li> <li id="GUID-2D28F459-3D76-5CD1-BB51-4D024D096874"><p>Use the overloaded <xref href="GUID-1D393214-187B-32F9-A36E-B98464F8395C.dita#GUID-1D393214-187B-32F9-A36E-B98464F8395C/GUID-B6DACCE3-212B-3967-82C0-26FE2930873E"><apiname>CCamera::CCameraOverlay::SetAllOverlaysInZOrderL(CCamera::CCameraOverlay::TOverlayCameraMode
+                aOverlayCameraMode, TInt aViewFinderHandle, const RArray&lt;TUint&gt;&amp;
+                aOverlayHandles)</apiname></xref> method to set all mode-specific overlays in z-order from the ECam implementation server. See <b>step 9</b> above. </p> </li> <li id="GUID-05B2747B-A467-5238-9F44-FE8A75F9247A"><p>Release the specific overlay from the ECam implementation server using <xref href="GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9.dita#GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9/GUID-CEA872C2-9ED7-378A-8112-1D0B9AE88B90"><apiname>CCamera::CCameraOverlay::ReleaseOverlay()</apiname></xref> method. </p> </li> </ol> <p>The following example code snippets illustrates the overlay implementation: </p> <codeblock id="GUID-E82A1C92-0CCC-509E-9679-5E87E713DDD0" xml:space="preserve">CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
+CCamera::CCameraOverlay::TOverlayParameters parameters;
+TUint ovrhandle =0; 
+ovrhandle = ovrlay-&gt;CreateOverlayL(parameters, bitmap));
+CFbsBitmap* getBitmap = new (ELeave) CFbsBitmap;
+ovrlay-&gt;GetOverlayBitmapL(ovrhandle, getBitmap);
+
+ovrlay-&gt;GetOverlayParametersL(ovrhandle, parameters);
+
+//client changes the bitmap as desired.
+ovrlay-&gt;SetOverlayBitmapL(ovrhandle, bitmap);
+
+
+CFbsBitmap* modifiedBitmap = new (ELeave) CFbsBitmap; 
+ovrlay-&gt;SetModifiableOverlayBitmapL(ovrhandle,modifiedBitmap);   
+
+ovrlay-&gt;ReleaseOverlay(ovrhandle);
+
+RArray&lt;TUint&gt; overlayHandles;
+ovrlay-&gt;GetAllOverlaysInZOrderL(CCamera::CCameraOverlay::EModeStillImage,1,overlayHandles);
+ovrlay-&gt;SetAllOverlaysInZOrderL(overlayHandles);</codeblock> </section> <section><title>Miscellaneous</title> <p><b>Overlay camera modes</b> </p> <p>You can specify the possible camera modes in which the overlay could be used using enum <xref href="GUID-4B373317-D44C-3831-B173-F566E2EEDDE1.dita"><apiname>TOverlayCameraMode</apiname></xref> in the following way: </p> <table id="GUID-FA244DD9-977E-5882-95EF-928BECD602CB"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><tbody><row><entry><p> <b>Enum</b>  </p> </entry> <entry><p> <b> Enum Value</b>  </p> </entry> <entry><p> <b> Description</b>  </p> </entry> </row> <row><entry><p>EModeStillImageSingleShot </p> </entry> <entry><p>0x0001 </p> </entry> <entry><p>The image is to be overlaid when single shot Still Image driving mode is active. </p> </entry> </row> <row><entry><p>EModeStillImageContinuous </p> </entry> <entry><p>0x0020 </p> </entry> <entry><p>The image is to be overlaid when Continuous Still Image driving mode is active. </p> </entry> </row> <row><entry><p>EModeStillImageBracket </p> </entry> <entry><p>0x0040 </p> </entry> <entry><p>The image is to be overlaid when Still Image Bracketing driving mode is active. </p> </entry> </row> <row><entry><p>EModeStillImageBracketMerge </p> </entry> <entry><p>0x0080 </p> </entry> <entry><p>The image is to be overlaid when Still Image Bracketing with Merge option driving mode is active. </p> </entry> </row> <row><entry><p>EModeStillImageTimed </p> </entry> <entry><p>0x0100 </p> </entry> <entry><p>The image is to be overlaid when Timed Still Image driving mode is active. </p> </entry> </row> <row><entry><p>EModeStillImageTimeLapse </p> </entry> <entry><p>0x0200 </p> </entry> <entry><p>The image is to be overlaid when Timed Still Image with Lapse option driving mode is active. </p> </entry> </row> <row><entry><p>EModeStillImageBurst </p> </entry> <entry><p>0x0400 </p> </entry> <entry><p>The image is to be overlaid when Still Image Burst driving mode is active. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>See also</title> <p><xref href="GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E.dita">Overview</xref> of the overlay functionality </p> <p>The <xref href="GUID-10E19876-85CA-5D45-854B-1F2C5A45A333.dita">Overlay</xref> tutorial </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8B843382-D27A-5E36-8F60-304903F3AA41" xml:lang="en"><title>Message Type Module</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides detailed conceptual information about MTMs and the steps to implement them. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8B938FEF-4D70-4589-921C-C99667193E20.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8B938FEF-4D70-4589-921C-C99667193E20" xml:lang="en"><title><codeph>TaskSchedulerExample</codeph>:
+Using Task Scheduler for Creating and Executing Tasks</title><shortdesc> This example application demonstrates the usage of the Task Scheduler
+API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title><p>Click on the following link to download
+the examples: </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c863a545-b00c-4065-8f95-04bd026abf82.zip" scope="external">TaskSchedulerExample.zip </xref></p><p>Click the following
+links to view the example code.</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c863a545-b00c-4065-8f95-04bd026abf82.html" scope="peer">TaskSchedulerExample</xref> </p> </section>
+<section><title>Purpose</title>The scheduler example has two applications;
+one to schedule the tasks, and the other to run the scheduled tasks. The scheduler
+application launches the application that runs the scheduled tasks, when the
+tasks are due to be completed. </section>
+<section>		  The scheduler application is the client of the scheduler server.
+It connects and registers itself with the scheduler server using the <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-C4EEE075-3B47-3964-AFCC-0CDF09DEDA0F"><apiname>RScheduler::Connect()</apiname></xref> and
+	<xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-C19048C5-DC9F-3B8A-B4AD-02C0D943B7AC"><apiname>RScheduler::Register()</apiname></xref>  methods, respectively. While registering
+itself with the scheduler server, the scheduler application provides the name
+of the application that runs the scheduled tasks, along with its complete
+path and its priority relative to other clients. </section>
+<section>When a session with the scheduler server is started, the scheduler
+creates a persistent time-based schedule using the <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-2DBDC4BB-3E58-30E4-88A4-024F8A8514A4"><apiname>RScheduler::CreatePersistentSchedule()</apiname></xref> method.
+Then, it 	adds a task to the persistent schedule using the <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-F86AED90-2992-380B-B9FD-2763EA041FE7"><apiname>RScheduler::ScheduleTask()</apiname></xref>method. </section>
+<section> The scheduler application also creates a transient time-based schedule
+using the <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-F86AED90-2992-380B-B9FD-2763EA041FE7"><apiname>RScheduler::ScheduleTask()</apiname></xref> method. The application
+passes the schedule information to the method using the <xref href="GUID-EA5C4B46-AC42-3D0F-8C48-E182D0D30A12.dita"><apiname>TScheduleEntryInfo2</apiname></xref>and<xref href="GUID-ACEB1944-5B06-32AD-9D55-3F02720F261E.dita"><apiname>TTaskInfo</apiname></xref> 
+  objects. It also edits the transient schedule entry to change its validity
+using <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-50B287A9-F62F-3C49-AD22-2760C96846EA"><apiname>RScheduler::EditSchedule()</apiname></xref></section>
+<section>The scheduler application launches the executor application, which
+runs 	 the scheduled tasks when they are due to be completed. The executor
+checks whether it has the necessary capability to run the scheduled tasks
+using the <xref href="GUID-049FF2D7-8444-3E87-BF2F-DD0EA9B10ED0.dita#GUID-049FF2D7-8444-3E87-BF2F-DD0EA9B10ED0/GUID-97B29D4C-FEA0-3103-BA54-31B1EA8C827C"><apiname>CScheduledTask::SecurityInfo()</apiname></xref> method. The executor
+application also checks whether the Secure ID (SID) is the same as that of
+the task requester, to be able to run the tasks. If these security checks
+pass, the executor prints the details of the scheduled task to the console. </section>
+<section>Finally, the scheduled tasks are deleted using the 	<xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-B4CECD92-82C6-3CEC-8DA6-E4D1580BEC00"><apiname>RScheduler::DeleteSchedule()</apiname></xref>	
+ and 	<xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita#GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1/GUID-BE934053-79EA-3101-899D-18BC91359BB7"><apiname>RScheduler::DeleteTask()</apiname></xref>methods, respectively. </section>
+<section><title>Class summary </title><p>The example shows the following APIs: </p><ul>
+<li><p>RScheduler</p></li>
+<li><p>CScheduledTask</p></li>
+<li><p>TScheduleEntryInfo2</p></li>
+<li><p>TTaskInfo</p></li>
+<li><p>TSchedulerItemRef</p></li>
+<li><p>TSecurityInfo</p></li>
+</ul></section>
+<section><title>Building and configuring </title><p>To build the example:</p><ul>
+<li><p>You can build the example from the Carbide.c++ IDE or the command line.</p><p>If
+you use an IDE, import the bld.inf file of the example into your IDE, and
+use the build command of the IDE. If you use the command line, open a command
+prompt, and set the current directory to examples\SysLibs\TaskSchedulerExample
+folder which contains the bld.inf file. You can then build the example with
+the following build commands:</p> <p><codeblock xml:space="preserve">bldmake bldfiles
+abld build winsw (For WINSCW platforms)
+abld build ARMV5 (For hardware)</codeblock></p><p>for running the obtained
+.exe, go to epoc32\release\winscw\udeb\ (or urel\), launch taskexecutor.exe
+:</p><p><codeblock xml:space="preserve">taskexecutor.exe</codeblock></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8BD6B29C-D905-5D2B-992A-A04AAD9ABBE3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8BD6B29C-D905-5D2B-992A-A04AAD9ABBE3" xml:lang="en"><title>Long-running
+services and background objects</title><shortdesc>This document describes the use of background objects to respond
+to requests for long-running services.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>System responsiveness is important. Threads must be responsive to their
+users — a delay of more than a few hundred milliseconds is generally unacceptable.</p>
+<p>This implies that <i>all </i> <codeph>RunL()</codeph> <i> functions should
+complete in a few hundred milliseconds in order to maintain system responsiveness</i>.</p>
+<p>In some cases, servicing a request may take longer than this. For example,
+printing a document, or sending a file, may take seconds or minutes to execute,
+but they should not hold up the main thread. It should also be possible to
+cancel long running services.</p>
+<p>The preferred solution is to use a background active object running in
+the same thread as all other active objects </p>
+<p>With this approach, the long running service is split into multiple chunks.
+The <codeph>RunL()</codeph> function allows itself to run for a relatively
+short period and then renews its request. This background active object tracks
+its own progress through the long running task so that when <codeph>RunL()</codeph> is
+next called, the it can continue from where it finished last time.</p>
+<p>The background active object has a lower priority than other active objects
+in the thread. The user driven event-handling active objects can cancel the
+background active object by calling its <codeph>Cancel()</codeph> function.</p>
+<p>The advantages of this approach are:</p>
+<ul>
+<li id="GUID-CAA7ED85-1F45-5D1F-95FE-5A2606A0C27F"><p>active objects are very
+cheap to create and use very few resources.</p> </li>
+<li id="GUID-3BF548A8-D3FA-5718-AB91-14C556199E70"><p>co-operating active
+objects cannot pre-empt each other; therefore, there is no need for locking
+and synchronization primitives when programming with multiple active objects.</p> </li>
+<li id="GUID-7B8FCF9D-C24A-59E9-B0F7-D6E81E7DAF3F"><p>active objects can share
+resources that are owned by a thread.</p> </li>
+</ul>
+<p>The active object framework allows the active-object implementation of
+a long-running operation to be concealed from the API, so that the service
+is presented to the user simply as an asynchronous request function together
+with an associated cancel function.</p>
+<p>In cases where an active object implementation is impossible or impractical
+to program, then a background thread may be used to implement a long-running
+service. This approach is <i>not</i> recommended for code specifically designed
+for Symbian platform.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8BE1690A-F331-5AD0-BC22-3122CA4C4E01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8BE1690A-F331-5AD0-BC22-3122CA4C4E01" xml:lang="en"><title>Supplementary Service Tutorial</title><shortdesc>This tutorial describes the tasks to get the supplementary service information with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Note</b>:The supplementary service information is not available if the device is in the flight mode. The call forward and caller identification supplementary services are available only in the GSM and WCDMA networks. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8C0900A8-1783-4C34-9ABD-27DC92D0AD4A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8C0900A8-1783-4C34-9ABD-27DC92D0AD4A_d0e46496_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8C1DF426-C85B-5124-970D-96119491926F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8C1DF426-C85B-5124-970D-96119491926F" xml:lang="en"><title>How to
+construct an iterator</title><shortdesc>An iterator allows you to access each element of the list in turn.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To create an iterator for a singly linked list of <codeph>CMyClass</codeph> elements,
+defined as:</p>
+<codeblock id="GUID-AFE2C594-F211-52E6-9378-4327A6AFD667" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TSglQueLink iSlink;
+    ...
+    };</codeblock>
+<p>first construct a <xref href="GUID-2364CAB0-E19E-5EBB-837F-F6484642C2E4.dita">Header</xref>:</p>
+<codeblock id="GUID-9EE3B51E-75D0-5F2E-921B-695E3FB55672" xml:space="preserve">TSglQue&lt;CMyClass&gt; queHeader(_FOFF(CMyClass,iSlink));</codeblock>
+<p> and then construct the <xref href="GUID-82C53275-6F7C-5B3D-9A07-FA4801D42403.dita">Iterator</xref>.
+The iterator requires the header at construction time but the list can be
+empty:</p>
+<codeblock id="GUID-0E4BEBDA-2EF2-5D6C-84D8-1CE1BCCCF00D" xml:space="preserve">TSglQueIter&lt;CMyClass&gt; queIter(queHeader);</codeblock>
+<p>The <codeph>TSglQueIter</codeph> class takes a class template parameter
+that defines the type of object which is to form an element of the list.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8C4EB8E0-78F0-553D-91AE-EC070A47B0EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8C4EB8E0-78F0-553D-91AE-EC070A47B0EE"><title>The handle-number and the object index</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The handle-number is an integer which uniquely identifies a reference counting object within an object index. </p> <p>Given a handle-number, a pointer to the corresponding reference counting object can be retrieved using <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita#GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E/GUID-6791F293-D18F-3AF5-BAD5-B76364AE8852"><apiname>CObjectIx::At()</apiname></xref> or <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita#GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E/GUID-1142C14A-AD46-3CCC-93DA-77E3D2ECF97E"><apiname>CObjectIx::AtL()</apiname></xref>. </p> <p>Every new reference counting object that is added to the object index, is assigned an instance number; this value is incremented for every new object added to the index. </p> <p>The handle-number is a <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> value which combines the instance number of the reference counting object with the index of its position within the object index's array. The combination of the two values is non-destructive, i.e. given a handle-number, both the instance part and the index part can be extracted. </p> <p>Handle-numbers are guaranteed to be unique for all objects in the index. However, once an object has been removed from the index, there can be no guarantee that the same handle-number will never be re-used; the probability is low but not zero. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8C5A65E6-D753-472F-B885-FD0409589036.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8C5A65E6-D753-472F-B885-FD0409589036" xml:lang="en"><title>HTTP
+Whole Message Filter Example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following diagram illustrates the class relationship between the <codeph>MHTTPDataOptimiser</codeph> interface
+and the <codeph>RHTTPSession</codeph> class: </p>
+<fig id="GUID-25859A19-F3C8-5FBD-B491-C58E5C973424">
+<title>              Class relationship between MHTTPDataOptimiser and   
+          RHTTPSession            </title>
+<image href="GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e186197_href.png" placement="inline"/>
+</fig>
+<p>For more information about <xref href="GUID-F34F7481-00CF-3A1B-8D45-D053AD6769A8.dita"><apiname>MHTTPTransactionCallback</apiname></xref>,
+see <xref href="GUID-1D32D093-1B7B-5CE8-B57D-5469C1E8E4B9.dita">A simple HTTP Client
+session</xref>. </p>
+<p>The following code segment illustrates how to define the header file required
+for implementing the HTTP Whole Message Filter APIs: </p>
+<codeblock id="GUID-1D7FA528-68D6-5AEE-B9F3-CBACC03855AB" xml:space="preserve">#include &lt;http.h&gt;
+
+class CMyHTTPClient: public CBase,
+                    public MHTTPTransactionCallback,
+                    public MHttpDataOptimiser
+{
+public: // methods from MHTTPTransactionCallback
+    virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent);
+    virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent);
+    
+public: // methods from MHttpDataOptimiser
+    virtual void EncodeL (const TDesC8&amp; aHttpData, HBufC8*&amp; aEncodedData);
+    virtual void DecodeL (const TDesC8&amp; aData, HBufC8*&amp; aHttpData, TBool&amp; aTransFail);
+};</codeblock>
+<p>The following code segment illustrates how HTTP Whole Message Filter APIs
+can be used to enable support for Web Acceleration: </p>
+<codeblock id="GUID-2F062305-2D15-534C-8239-FAE4002DB79E" xml:space="preserve">#include "CMyHTTPClient.h"
+
+//    CMyHTTPClient.cpp
+//
+//    defines CMyHTTPClient class: CMyHTTPClient
+// Literals used in the file
+_LIT8(KHttpAuthenticationUrl,        "http://remix.kwed.org");
+
+
+void CMyHTTPClient::CreateTransactionL()
+    {
+    TUriParser8 up;
+    up.Parse(KHttpAuthenticationUrl);
+
+    RHTTPSession session;
+    RHTTPTransaction trans;
+    
+    // Open the HTTP session
+    session.OpenL();
+    CleanupClosePushL(session);
+
+    RStringPool strP = session.StringPool();
+
+  //To enable MHTTPDataOptimiser for transaction
+
+    // Open a GET transaction, specifying this object as the request body data supplier
+    trans = session.OpenTransactionL(up, *this, strP.StringF(HTTP::EGET,RHTTPSession::GetTable()));
+    CleanupClosePushL(trans);
+    trans.SetupHttpDataOptimiser(*this);
+
+ trans.SubmitL();
+    CleanupStack::PopAndDestroy(&amp;trans);
+    CActiveScheduler::Start();
+    
+    CleanupStack::PopAndDestroy(&amp;session); //Closes the session
+
+    }
+
+TInt CMyHTTPClient::MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent)
+    {
+    // Handle Error appropriately
+    }
+
+void CMyHTTPClient::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent)
+    {
+    // Handle events from the framework.
+    switch (aEvent.iStatus)
+        {
+        case KErrHttpOptimiserFailsTrans:
+            {
+            INFO_PRINTF1(_L("Cancelling/Failing Transaction\n"));
+            aTransaction.Fail(THTTPFilterHandle::EProtocolHandler);
+            } break;
+
+        }
+    return;
+    //The following statement is used to eliminate leavescan errors
+    User::Leave(KErrGeneral);
+    }
+
+void CMyHTTPClient::EncodeL (const TDesC8&amp; aHttpData, HBufC8* &amp;aEncodedData)
+    {
+    //Provide your own custom encoding implementation
+    }
+
+void CMyHTTPClient::DecodeL (const TDesC8&amp; aData, HBufC8*&amp; aHttpData, TBool&amp; aTransFail)
+    {
+    //Provide your own custom decoding implementation
+    }</codeblock>
+<p>This code enables the <codeph>MHTTPDataOptimiser</codeph> for a transaction
+by using <codeph>RHTTPTransaction::SetupHTTPDataOptimiser()</codeph> and also
+illustrates where custom encoding and decoding mechanisms are implemented. </p>
+<p> <b>Note:</b> Alternatively, in this code, you can use the following code
+segment to enable <codeph>MHTTPDataOptimiser</codeph> for a particular session. </p>
+<p> <codeph>session.SetupHttpDataOptimiser(*this); </codeph>  </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E" xml:lang="en"><title>EGL Collection</title><shortdesc>The components within the EGL collection provide access to EGL
+on the Symbian platform. EGL, an open standard developed by the Khronos Group,
+provides an interface between rendering APIs such as OpenGL ES or OpenVG and
+an underlying native platform window system. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links>
+<link href="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita"><linktext>Khronos API
+  Support</linktext></link>
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8C8B97BF-E769-5C7B-A6E0-B8CA7F12071C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8C8B97BF-E769-5C7B-A6E0-B8CA7F12071C" xml:lang="en"><title>Bluetooth Remote Control Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Bluetooth Remote Control Framework allows you to send remote control commands over a Bluetooth enabled device. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8C94EE15-82EA-4A95-9044-C3404F95BD51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-8C94EE15-82EA-4A95-9044-C3404F95BD51" xml:lang="en"><title>Using
+Clipboard</title><shortdesc>Clipboard allows applications to read and write data to and from
+a shared clipboard. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The clipboard is implemented as a direct file store, as
+defined in the File Store API. Data placed on the clipboard is in streams.
+Every data type placed on the clipboard is identified by a UID. The store
+has a stream dictionary to allow an application to retrieve the data by specifying
+its UID. </p> <p>The clipboard class, <xref href="GUID-9C1E9536-01E8-3C0E-B1C5-F0A597ED0CA3.dita"><apiname>CClipboard</apiname></xref>, provides
+operations to get the clipboard file store and stream dictionary. Applications
+then read or write data using the standard store and stream interfaces. It
+also provides special support for copying and pasting a <codeph>TReal</codeph> to
+and from the clipboard. </p> <p>To place data on the clipboard, construct
+a <codeph>CClipboard</codeph> object and prepare it for the data to be written,
+using the <codeph>NewForWritingLC()</codeph> static member function as illustrated
+in the following code fragment: </p> <codeblock id="GUID-9A1E8DF1-2BA9-5DFE-BFEA-749592A35E84" xml:space="preserve">CClipboard* cb = CClipboard::NewForWritingLC( fsSession );</codeblock> <p>The function requires a file server session. </p> <p>The file associated
+with the clipboard's store may or may not exist. If it already exists, any
+existing content is discarded; if the file does not exist, it is created.
+In either event, <codeph>NewForWritingLC()</codeph> results in an empty clipboard. </p> <p>Once
+the <codeph>CClipboard</codeph> object has been created, data is stored into
+the clipboard 's store. Both the store (<codeph>CStreamStore</codeph>) and
+the stream dictionary (<codeph>CStreamDictionary</codeph>), which the example
+needs to access, are encapsulated by <codeph>CClipboard</codeph>. The class,
+therefore, provides the <codeph>Store()</codeph> and <codeph>StreamDictionary()</codeph> member
+functions to return suitable references. </p>      </context>
+<steps-unordered>
+<step id="GUID-4A467DE0-7F8F-4F49-BFA6-90A6BA1DCF73"><cmd><b>Creating the
+data for the clipboard</b>.</cmd>
+<substeps id="GUID-D2D6C0A3-9B55-4CBC-8650-9CAB416C5C38">
+<substep id="GUID-B6BE715A-6282-4161-93AF-1E5B9CCC09E0"><cmd>Prepare a new
+stream for writing using the <codeph>CreateLC()</codeph> member function of <codeph>RStoreWriteStream</codeph>. </cmd>
+<info><p>The CClipboard's store is to contain the new stream and so <codeph>cb-&gt;Store()</codeph> is
+passed as a parameter to <codeph>CreateLC()</codeph>. The item object is externalised.
+The stream is committed.   The resulting <codeph>streamId</codeph> and the <codeph>UID</codeph>,
+which identifies the data type, i.e. stid and <codeph>KExampleClipUid</codeph>,
+respectively, are placed in the stream dictionary using the stream dictionary's <codeph>AssignL()</codeph> member
+function.  </p></info>
+</substep>
+<substep id="GUID-513EA674-9E19-4020-AA8F-5C7E88221400"><cmd>Conclude by calling <codeph>CClipboard's
+CommitL()</codeph> member function to store the dictionary store as the root
+stream of the store and to commit all changes to the store.</cmd>
+<info><p>Deleting the <codeph>CClipboard</codeph> object causes the file associated
+with the clipboard's store to be closed, allowing other applications to access
+it.  </p></info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-2F30C4DD-1601-4D67-B18B-50F52DD211C0"><cmd><b>Pasting the data
+from clipboard </b></cmd>
+<info><p>To attempt to retrieve data from the clipboard, construct a <codeph>CClipboard</codeph> object
+and prepare it for reading using either <codeph>NewForReadingL()</codeph> or <codeph>NewForReadingLC()</codeph>.</p><codeblock xml:space="preserve">// Create clipboard object
+TRAPD( ret,cb=CClipboard::NewForReadingL( fsSession ) );
+CleanupStack::PushL( cb );
+_LIT( KNoPaste,"Nothing to paste" );
+if ( ret!=KErrNone )
+    {
+    doShow( KNoPaste,NULL );
+    User::Leave( ret );
+    }
+// Get stream from store
+TStreamId stid = ( cb-&gt;StreamDictionary() ).At( KExampleClipUid );
+if ( stid == KNullStreamId )
+    {
+    doShow( KNoPaste,NULL );
+    User::Leave( 0 );
+    }
+// Read stream
+RStoreReadStream stream;
+stream.OpenLC( cb-&gt;Store(),stid );
+stream &gt;&gt; *item;</codeblock></info>
+</step>
+<step id="GUID-0780BA8D-A141-4061-B5D1-BE9F73C3B349"><cmd><b>Copying and pasting
+real numbers</b> </cmd>
+<info><p>Use <codeph>CopyToL( TReal )</codeph> to place a <codeph>TReal</codeph> on
+the clipboard and use <codeph>PasteFromL( TReal&amp; )</codeph> to fetch a <codeph>TReal</codeph> from
+the clipboard, if there is any data.</p><p> Applications that use these functions
+to copy and paste <codeph>TReal</codeph> objects need not concern themselves
+with the UID used to identify the corresponding stream in the clipboard store.</p><p> It
+must be noted that applications which use <codeph>CopyToL( TReal )</codeph>,
+must still call <codeph>CClipboard's CommitL()</codeph> member function before
+deleting the <codeph>CClipboard</codeph> object.  </p></info>
+</step>
+</steps-unordered>
+<example><p>Following is an example on how to create data for clipboard. In
+this example, the data to be placed on the clipboard's store is a single object
+item:</p><codeblock xml:space="preserve">RStoreWriteStream  stream;
+TStreamId stid = stream.CreateLC( cb-&gt;Store() );
+stream &lt;&lt; *item;
+stream.CommitL();
+( cb-&gt;StreamDictionary() ).AssignL( KExampleClipUid,stid );
+CleanupStack::PopAndDestroy(); // stream
+cb-&gt;CommitL();
+CleanupStack::PopAndDestroy(); // cb</codeblock></example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558"><title>Starting Audio Play </title><shortdesc>This document describes how to play audio using DevSound. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-9C12E745-3DAB-58A0-A6B2-4403CD43BCBE"><title>Introduction</title> <p>To play audio data, you have to do the following: </p> <ul><li id="GUID-46E837E9-CF86-507A-ADC4-C18EF9E4682E"><p><xref href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita#GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558/GUID-C66399BB-F588-5831-A7FC-B62240E699CF">Constructing and initializing</xref>  </p> </li> <li id="GUID-823BBD55-CB56-5716-9632-DF7DD8F5DA63"><p><xref href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita#GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558/GUID-EC56C43B-D3C3-5956-A1C6-4E60C00552D4">Configuring</xref> </p> </li> </ul> </section> <section id="GUID-C66399BB-F588-5831-A7FC-B62240E699CF"><title>Constructing and initializing</title> <p>Use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-088CC167-C46D-3A2B-BE00-D7AEB98254AE"><apiname>CMMFDevSound::NewL()</apiname></xref> method to construct a new instance of DevSound. </p> <p>After construction, use an <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> method to initialize DevSound to play audio. This method requires that you specify the DevSound observer class to handle callbacks. </p> <p>Once initialization has completed, successfully or otherwise, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-089CF9C1-92EF-3F40-8669-A5EF5C064AD4"><apiname>MDevSoundObserver::InitializeComplete()</apiname></xref> function. </p> </section> <section id="GUID-EC56C43B-D3C3-5956-A1C6-4E60C00552D4"><title>Configuring</title> <p>The following settings can be configured before or during audio play: </p> <ul><li id="GUID-E02E3AC5-8012-5384-AA3E-64551853E35D"><p>To change the volume of the audio device to a specific value, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C93E8531-F569-3F6B-AE65-A36749FCE7DF"><apiname>CMMFDevSound::SetVolume()</apiname></xref> function. The volume can be set to any value from 0 to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1BFCB3CB-17C7-399B-9089-3ADFF43044BA"><apiname>CMMFDevSound::MaxVolume()</apiname></xref>. </p> </li> <li id="GUID-7F1F62F9-138C-59B8-A9FF-D97C4C442CBB"><p>To set the speaker balance, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0D55BCC4-9882-3F49-B1AD-922B48264F79"><apiname>CMMFDevSound::SetPlayBalanceL()</apiname></xref> function. This function has two parameters: </p> <ul><li id="GUID-122CEEB3-E33F-5AF2-8F11-0CCA336D6308"><p> <codeph>aLeftPercentage</codeph> - the left speaker volume percentage. </p> </li> <li id="GUID-97867944-B2EB-59C1-903C-6E4549F36D4F"><p> <codeph>aRightPercentage</codeph> - the right speaker volume percentage. </p> </li> </ul> </li> <li id="GUID-00D6AC47-CAF7-51E4-B715-B1FDE633EA9D"><p>To set the priority setting for this instance of DevSound to access the audio device, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1B3B1694-EED8-3B33-B424-C48DDAFBE75A"><apiname>CMMFDevSound::SetPrioritySettings()</apiname></xref> method. Priority settings are used by the Audio Policy component to resolve multiple requests to access the audio hardware. </p> </li> </ul> </section> <section><title>Procedure</title> <ul id="GUID-42C84711-FE87-5A6F-85B6-89669C41EE95"><li id="GUID-CD623297-23B2-5A63-BDA0-4DF4D5625302"><p>To start the play process, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-83CD0A0C-535B-31D2-946F-537BCB4D26A6"><apiname>CMMFDevSound::PlayInitL()</apiname></xref> method: </p> <p>Once started, audio data is played incrementally from a buffer. When there is data in the buffer, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-30349572-DFF6-380B-97A1-3549E00B8259"><apiname>CMMFDevSound::PlayData()</apiname></xref> method to play the data. </p> <p>When more data is needed for playing, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-FBB7A51D-771C-3820-80A6-1297F98CDCFF"><apiname>MDevSoundObserver::BufferToBeFilled()</apiname></xref> function. When the new data has been read into the buffer, again use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-30349572-DFF6-380B-97A1-3549E00B8259"><apiname>CMMFDevSound::PlayData()</apiname></xref> method. The client must supply audio data through the buffers at a sufficient rate to avoid buffer underflow. </p> <p> Note: The <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-83CD0A0C-535B-31D2-946F-537BCB4D26A6"><apiname>CMMFDevSound::PlayInitL()</apiname></xref> and <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-30349572-DFF6-380B-97A1-3549E00B8259"><apiname>CMMFDevSound::PlayData()</apiname></xref> methods are pseudo-asynchronous. They result in an <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> callback that can occur in context (before the method has returned) or out of context (after the method has returned). </p> </li> </ul> </section> </conbody><related-links><link href="GUID-609A4E83-F074-5A5D-A0DF-A95A7CDC8D2C.dita"><linktext>Pausing and
+                Resuming Playing</linktext> </link> <link href="GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6.dita"><linktext>Stopping Audio
+                Play</linktext> </link> <link href="GUID-57412030-6B02-592A-81D5-54D2767ED131.dita"><linktext>Retrieving Audio Play
+                Samples</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8CEB9CF3-2F33-58E3-B948-565B61A37BC3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8CEB9CF3-2F33-58E3-B948-565B61A37BC3" xml:lang="en"><title>Twips and Zooming</title><shortdesc>This section introduces twips and zooming. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>Graphics Device Interface
+  Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e228489_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e167315_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D130FC5-3AB8-5C70-A9D2-C753957E729F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8D130FC5-3AB8-5C70-A9D2-C753957E729F" xml:lang="en"><title>Basics:
+demonstrates basic use of the Symbian platform DBMS</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p>This is an example of database manipulation
+using the DBMS. </p> <p>Initially the database is created as a permanent file
+store, using <codeph>CFileStore</codeph> routines. A table ("CDs") is created
+with three fields ("Artist", "Title" and "Price") and this is then indexed
+on the "Artist" and "Title" fields. </p> <p>To prove the correct action of
+the previous code, the example iterates through the database, printing the
+contents to the console. Finally, the database is closed and
+the example exits. </p> </section>
+<section><title>Download</title> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-36e49706-602c-4aee-91d3-5083679e1d3d.zip" scope="external">Basics.zip</xref> </p><p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-36e49706-602c-4aee-91d3-5083679e1d3d.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref></p> </section>
+<section><title>Usage</title> <p>The example should be run from the command
+line with no parameters. </p> </section>
+<section><title>Class summary</title><ul>
+<li><p><xref href="GUID-AE1BEF00-5AA7-3F03-95B0-9E40395EDA6C.dita"><apiname>RDbView</apiname></xref> - Generates rowsets from an SQL query. The
+query is prepared and evaluated using the interface to this class, while the
+rowset is manipulated using the RDbRowset base class.</p></li>
+<li><p><xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref> - DBMS Store database implementation.</p></li>
+<li><p><xref href="GUID-0130C7AA-B143-32A4-BB33-0D90CEDABAAE.dita"><apiname>TDbCol</apiname></xref> - Defines a column in a table or rowset.</p></li>
+<li><p><xref href="GUID-DDB34DBF-4A96-3430-820A-97AB5585962D.dita"><apiname>TDbKeyCol</apiname></xref> - Defines a key column in an index.</p></li>
+<li><p><xref href="GUID-9B02D75E-1EE0-349E-9900-BEC1CAF9DECE.dita"><apiname>CDbColSet</apiname></xref> - Manages a set of column definitions
+which describe a table or rowset structure. Column definitions can be added
+and removed. The set can be iterated over, and ordinals for a column can be
+looked up.</p></li>
+<li><p><xref href="GUID-F861EB8F-F621-3E77-8F9A-5E4EFC4E9C2F.dita"><apiname>RDbRowSet</apiname></xref> - An abstract base class that provides
+functionality which is shared between SQL view objects and Table objects.</p></li>
+<li><p><xref href="GUID-0CA88018-0265-3853-AC64-3B938DD0F60C.dita"><apiname>CDbKey</apiname></xref> - Represents the definition of an index. </p></li>
+<li><p><xref href="GUID-E79A3B03-F8CB-37DB-A2A8-1C6C4E4D739A.dita"><apiname>TParse</apiname></xref></p></li>
+<li><p><xref href="GUID-1C4D4AFD-85E2-3D5D-B704-D1FA0E5E7DA2.dita"><apiname>TStreamId</apiname></xref> - Provides unique identification for stream
+within a store.</p></li>
+<li><p><xref href="GUID-9CBA8AB1-5BFC-3719-82AF-22A9BD93C306.dita"><apiname>CFileStore</apiname></xref> - File based persistent store abstract
+base class.</p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC" xml:lang="en"><title>Types
+of package</title><shortdesc>Describes the three types of package descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Three types of package are available:</p>
+<ul>
+<li id="GUID-F6734EA9-F7C3-5BAD-8D3D-31E74459DE60"><p>a packaged modifiable
+buffer descriptor</p> </li>
+<li id="GUID-F445EFBB-BD50-5277-9C2B-89D1F23A3A8A"><p>a packaged non-modifiable
+pointer descriptor</p> </li>
+<li id="GUID-E9DA31C2-63B8-5A6F-B139-E165CE56F104"><p>a packaged modifiable
+pointer descriptor</p> </li>
+</ul>
+<section id="GUID-894BE487-84FA-4182-85F1-636A985819A9"><title>Packaged modifiable buffer descriptor</title> <p>This is an
+object of type <codeph>TPckgBuf</codeph> and is a modifiable buffer descriptor.
+The class is templated; the template parameter defines the type of object
+that this descriptor can contain.</p> <p>For example, a package descriptor
+of type <codeph>TPckgBuf&lt;TExample&gt;</codeph> is a modifiable buffer descriptor
+that only contains objects of type <codeph>TExample</codeph>.</p> <p>The package
+class also allows functions to be called on the contained class.</p> <fig id="GUID-7EE59907-F6E0-5200-A4BF-6AD5C9BE2D67">
+<image href="GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e204099_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-C7714A6F-0E8D-43D4-B168-1EB333D8BCC7"><title>Packaged non-modifiable pointer descriptor</title> <p>This
+is an object of type <codeph>TPckgC</codeph> and is a non-modifiable pointer
+descriptor. The class is templated; the template parameter defines the type
+of object that this descriptor can represent.</p> <p>For example, a package
+descriptor of type <codeph>TPckgC&lt;TExample&gt;</codeph> is a non- modifiable
+pointer descriptor that only represents objects of type <codeph>TExample</codeph>.</p> <p>The
+package class also allows functions to be called on the contained class.</p> <fig id="GUID-31860379-F6A7-5D65-8160-EEDABBB73AD3">
+<image href="GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e204127_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-3AD2BB30-93E0-4E1F-B2BC-15693CE45A3E"><title>Packaged modifiable pointer descriptor</title> <p>This is
+an object of type <codeph>TPckg</codeph> and is a modifiable pointer descriptor.
+The class is templated; the template parameter defines the type of object
+that this descriptor can represent.</p> <p>For example, a package descriptor
+of type <codeph>TPckg&lt;TExample&gt;</codeph> is a modifiable pointer descriptor
+that only represents objects of type <codeph>TExample</codeph>.</p> <p>The
+package class also allows functions to be called on the contained class.</p> <fig id="GUID-5BB0AF3B-33FF-5374-A867-0BD49A15DC74">
+<image href="GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e204155_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-2A10BADF-1BD3-4F78-B321-180132E8EA88"><title>See also</title> <p><xref href="GUID-0B9C8884-6BFF-35E2-AA6F-E4057B85AFCF.dita"><apiname>TBuf</apiname></xref> </p> <p><xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> </p> <p><xref href="GUID-EA7DEFA4-D4D9-3B2B-86A3-C3FB1A682E61.dita"><apiname>TPtr</apiname></xref> </p> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita">Descriptor concepts</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e370366_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43" xml:lang="en"><title>Using Bluetooth Service Discovery Agent</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e195812_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495" xml:lang="en"><title>Versit
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the Versit component, which can be used to import
+and export contact and calendar information. </p>
+<section id="GUID-AECE894E-FC12-4A34-85C6-DA1693678E0C"><title>Purpose</title> <p>The Versit component provides a set of
+classes that can be used by application or system developers, to import and
+export data formatted according to a set of standards initially prescribed
+by the Versit consortium. </p> <p>The plain-text formatted data can be included
+in emails, saved to disk or transferred from one application to another using
+streams. Two specifications have been published, one for the transmission
+of contact information and the other for the transmission of calendaring information
+in the form of vCards and vCalendars. </p> <p>Although the information contained
+in vCard is different from that contained in vCalendar, the basic formatting
+of the information follows the same style. </p> </section>
+<section id="GUID-D85D8717-F895-4AA2-A8F7-7BA3F7F2C1FF"><title>Required background</title> <p>Some knowledge of vCard and
+vCalendar specifications, which are documented on the Internet Mail Consortium's
+website at <xref href="http://www.imc.org/pdi/" scope="external">http://www.imc.org</xref>. </p> </section>
+<section id="GUID-928B9A7F-5A93-4549-877E-19B48F747422"><title>Key concepts</title> <p>In this component a vCard or vCalendar
+is referred to as an entity. An entity has an array of properties. Entities
+can be nested, making them sub-entities. </p> <p>The component has the following
+key concepts: </p> <dl>
+<dlentry>
+<dt>Parser</dt>
+<dd><p>The parser converts the vCard and vCal data into a format understandable
+by the current system and vice-a-versa. The vCard and vCal are common standards
+used for exchanging contact and calendar data across different systems such
+as handheld devices, PDA and so on. Each handheld device or PDA store and
+interpret these kind of personal information in their own way. A parser reads
+and writes properties and sub-entities for an entity. The base class for parsers
+is provided by <xref href="GUID-6D7CB0C1-2311-30A3-B0E8-A9B5BBBA395C.dita"><apiname>CVersitParser</apiname></xref> which provides the basic functionality
+for both vCard and vCal. </p> <p>The <codeph>CVersitParser</codeph> class
+is extended to provide separate implementations for vCard, vCal and their
+sub-entities such as vEvent, vTodo and so on. The following are few such classes: </p> <ul>
+<li id="GUID-9D84C4F1-1802-56F6-AA12-611759FE04D5"><p> <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita"><apiname>CParserVCard</apiname></xref> is
+a vCard parser that converts between a vCard entities, stored in a stream
+using the format standard set by the Internet Mail Consortium, and a vCard
+entities stored on a Symbian OS phone. </p> </li>
+<li id="GUID-F03F393F-4D4C-5CD3-A914-CA9FA90BC3DE"><p> <xref href="GUID-6BEFF6A7-FBD8-306D-98A4-8711E788C702.dita"><apiname>CParserVCal</apiname></xref> is
+a vCalendar parser that converts between a vCalendar entities stored in a
+stream, and vCalender entities stored on a Symbian OS phone. </p> </li>
+<li id="GUID-078030ED-1974-55DF-948F-2F56544EE0F2"><p> <xref href="GUID-7E0772C1-42AC-3204-95CB-E0D2FB7FA17A.dita"><apiname>CParserVCalEntity</apiname></xref> is
+a parser for vCalendar sub-entities such as, events and to-do lists. </p> </li>
+</ul> <p>The <codeph>CVersitParser</codeph> class provides support for vCard
+version 2.1 and vCalendar version 1.0 by default. But this class is not compatible
+with higher versions of vCard, and these compatibility issues are addressed
+in <codeph>MVersitPlugIn</codeph> abstract class. An implementation of <codeph>MVersitPlugIn</codeph> class
+along with a derived class of <codeph>CParserVCard</codeph> can extend the
+parser support to vCard versions above 2.1. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Property</dt>
+<dd><p>A property consists of a property name, a property value and optionally
+one or more property parameters. They have the general form: </p> <codeblock id="GUID-52BCA483-C9AD-5F54-9733-3A1D45E638A0" xml:space="preserve">Property Name (; Parameter Name(= Parameter Value))* : Property Value</codeblock> <p>where
+items in brackets are optional and * indicates that the item may be repeated. </p> <p>For
+example, </p> <codeblock id="GUID-1AF7B9AA-6D83-5BF8-8CB4-919F069310D6" xml:space="preserve">TEL; HOME; ENCODING=QUOTED-PRINTABLE; CHARSET=US-ASCII : 01234 567890</codeblock> <p>Here, TEL is the property name, HOME, ENCODING and CHARSET are property
+parameter names and QUOTED-PRINTABLE and US-ASCII are property parameter values.
+The component following the colon is the property value. </p> <p>The property
+interface is provided by <xref href="GUID-895C3D03-FE10-329C-9437-2948686509C5.dita"><apiname>CParserProperty</apiname></xref>. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Property parameter</dt>
+<dd><p>A property parameter describes an aspect of a property. A property
+may have multiple aspects. In the above example the TEL property has several
+aspects (parameters), such as HOME, ENCODING and CHARSET with their associated
+values QUOTED-PRINTABLE and US-ASCII. </p> <p>The property parameter interface
+is provided by <xref href="GUID-4A02E5BD-39D3-34AD-B70B-8177144FF12C.dita"><apiname>CParserParam</apiname></xref>. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Property value</dt>
+<dd><p>A property value may be of any type, such as date/time, integer, string
+etc. </p> <p>A number of classes are provided to support any type of data
+as a property value, these classes are derived from <xref href="GUID-76E6CCFA-5BAC-34F1-A5B2-FB505A68E784.dita"><apiname>CParserPropertyValue</apiname></xref>. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Observer</dt>
+<dd><p>The versit parser observer can find out the version of the entity being
+parsed, which is the version number of the vCard/vCalendar. Then the behaviour
+of the parser is adjusted according to the version number detected. The observer
+is implemented as a pure virtual plug-in class <xref href="GUID-509B56E6-FA7B-3903-9DBC-908EC5363CFB.dita"><apiname>MVersitObserver</apiname></xref>,
+for use in conjunction with <codeph>MVersitPlugIn</codeph> class. </p> <p>The
+implementor of <codeph>MVersitObserver</codeph> class can respond to new parser
+creation by setting <codeph>MVersitPlugIn</codeph> as the parser, and itself
+as the observer to parse the embedded sub-entity. </p> </dd>
+</dlentry>
+</dl> </section>
+<section id="GUID-4E0DF6B1-B9B1-4A6C-966F-2C0237307E83"><title>Architectural relationships</title> <p>Any application or
+system intending to import or export vCards or vCalendars can use this component.
+At present, it is used by <xref href="GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita">Contacts
+Model</xref> and <xref href="GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita">Calendar</xref> components
+to support import and export of contact and calendar information. </p> <p>The
+Versit libraries export a set of utility classes that allow clients to parse
+and generate data formatted according to the specifications first published
+by the Versit consortium (The specifications are now owned by the IMC). </p> <p>In
+broad terms, the Versit API allows clients to: </p> <ul>
+<li id="GUID-F1CAD47E-986F-5BFD-906A-70FCEF8CAD56"><p>Internalise Versit formatted
+data into container classes. </p> </li>
+<li id="GUID-34EC2D80-F27E-54FE-827C-36EFC3692442"><p>Externalise contact
+and calendar data. </p> </li>
+<li id="GUID-FF90C782-49BE-57F8-8FEB-F97D62D7451B"><p>Derive a custom Versit
+parser from the base classes. </p> </li>
+<li id="GUID-DA2EDC5F-DD00-5F68-8EB8-D28CEDEDC5C5"><p>Perform various utility
+functions (searching, modifying etc.) on the data. </p> </li>
+</ul> <p>It delivers four files: </p> <ul>
+<li id="GUID-56543C10-C588-5B03-A78D-4B473DF9DCEA"><p>Versit.dll - defines
+the client API common to all versit parser. </p> </li>
+<li id="GUID-BD75E9BB-DB18-5121-985D-B342D9920854"><p>VCard.dll - implements
+a vCard v2.1 parser &amp; generator. </p> </li>
+<li id="GUID-830FF6FC-A5F1-54C1-AE99-67BC447F704D"><p>VCal.dll - implements
+a vCalendar 1.0 parser &amp; generator. </p> </li>
+<li id="GUID-212C14CC-7D30-54B0-812D-1BEEA041D348"><p>RVERSIT.MDL - implements
+a Recognizer which recognises Versit vCalendar and vCard files and reports
+their file type. This is according to the standard Symbian OS file recognizer
+pattern. For more information about recognizers, refer to <xref href="GUID-F18D0E06-2FB8-5339-AF31-02CC7D5A8010.dita">Using
+MIME</xref>. </p> </li>
+</ul> <p><b>Internal Relationships </b> </p> <p>The Versit libraries are designed
+to provide a self contained set of tools. As such, they have no internal dependencies
+with other App-Services components. The diagram below gives an abstract illustration
+of the internal dependencies of the Versit components themselves. </p> <fig id="GUID-EF3BAA2A-3072-551A-B89C-99AB7F0A70DF">
+<title>              Abstraction of Versit deliverables            </title>
+<image href="GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e355013_href.png" placement="inline"/>
+</fig> <p>As the diagram above illustrates, it is possible to make use of
+the Versit.dll library on its own. If vCard or vCalendar support is required
+then the Versit library must be included as both vCard.dll and vCal.dll depend
+on it. </p> <p>It is also possible for users to develop their own Versit parsers
+using the base classes provided in Versit.dll and not include the vCard and
+vCalendar libraries. </p> <p><b>External Relationships </b> </p> <p>It is possible for any third party
+code to make use of the Versit libraries. The only Symbian OS components that
+have a dependency on Versit are the App-Engines. The application engines provide
+API’s which allow their users to import and export Versit formatted data. </p> <p>The
+mechanism used to allow these operations differs depending on the application
+engine and the documentation associated to each should be referred to for
+more detail. The two application engines that make use of Versit are the <xref href="GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita">Contacts Model</xref> and <xref href="GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita">Calendar</xref> components. </p> </section>
+<section id="GUID-10536254-0D16-475C-82B3-451ADAFEC983"><title>API summary </title> <fig id="GUID-41DFB840-D409-5B34-949E-27E9B62A0F1E">
+<title>              Relationship between different classes of the Versit
+component            </title>
+<image href="GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e355049_href.png" placement="inline"/>
+</fig> <table id="GUID-B009CAB5-2555-5AB2-AF90-41C7E61C2401">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Class Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-6D7CB0C1-2311-30A3-B0E8-A9B5BBBA395C.dita"><apiname>CVersitParser</apiname></xref>  </p> </entry>
+<entry><p>This is a generic parser class which provides functions implementing
+behaviour common to both vCalendar and vCard parsers. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita"><apiname>CParserVCard</apiname></xref>  </p> </entry>
+<entry><p>This is a vCard parser class derived from <codeph>CVersitParser</codeph>.
+It implements additional functionality needed to parse vCards, other than
+the generic functionality inherited from <codeph>CVersitParser</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6BEFF6A7-FBD8-306D-98A4-8711E788C702.dita"><apiname>CParserVCal</apiname></xref>  </p> </entry>
+<entry><p>This is a vCalendar parser class derived from <codeph>CVersitParser</codeph>.
+It also implements additional functionality needed to parse vCalendar, other
+than the generic functionality inherited from <codeph>CVersitParser</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-7E0772C1-42AC-3204-95CB-E0D2FB7FA17A.dita"><apiname>CParserVCalEntity</apiname></xref>  </p> </entry>
+<entry><p>This is a parser for vCalendar sub-entities. A vCalendar sub-entity
+is a vEvent or vToDo contained in a vCalendar. vEvents and vToDos are derived
+from <xref href="GUID-5C95B1DF-4BBC-3196-AFA6-DC839837CF02.dita"><apiname>CRecurrenceParser</apiname></xref>, which provides recurrence functionality. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-895C3D03-FE10-329C-9437-2948686509C5.dita"><apiname>CParserProperty</apiname></xref>  </p> </entry>
+<entry><p>This is a property class used to store properties of vCard and vCalendar,
+and also sub-entities of vCalendar such as vEvent and vToDo. Each property
+has a name, an optional value and one or more optional parameters. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-2BC8DF31-058E-447F-A186-A563CBFAE550"><title>Typical uses</title> <p>The Versit component can be used by
+any application which needs to import or export vCards or vCalendars. The
+following are the typical use cases for this API. </p> <p><b>Importing contact and calendar data </b> </p> <p>Any application can import
+contact and/or calendar data using this API. To import contact or calendar
+data from an external source, the client has to make use of appropriate parsers.
+That is, vCard parser to import contact data, and vCalendar parser to import
+calendar data. For more information, refer to <xref href="GUID-2A39CCBD-CADB-56B7-872A-1EC617AC7D93.dita">How
+to Import Contact and Calendar Data</xref>. </p> <p><b>Exporting contact and calendar data </b> </p> <p>Any application can export
+contact and/or calendar data using this API. To export contact or calendar
+data to an external source, clients have to make use of appropriate parsers.
+That is, vCard parser to export contact data, and vCalendar parser to export
+calendar data. For more information, refer to <xref href="GUID-082E47B3-8AAB-51B7-93F9-3C528B97D0A9.dita">How
+to Export Contact and Calendar Data</xref>. </p> <p><b>Creating a custom Versit parser </b> </p> <p>Apart from the typical vCard
+and vCalendar parsers, custom versit parser can be implemented using the <xref href="GUID-6D7CB0C1-2311-30A3-B0E8-A9B5BBBA395C.dita"><apiname>CVersitParser</apiname></xref> class
+as the base class. These kind of parsers are needed, when the functionality
+provided by <codeph>CVersitParser</codeph>, <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita"><apiname>CParserVCard</apiname></xref> and <xref href="GUID-6BEFF6A7-FBD8-306D-98A4-8711E788C702.dita"><apiname>CParserVCal</apiname></xref> classes
+are not sufficient. </p> <p><b>Using various utility functions </b> </p> <p>In addition to the normal
+import and export functionality, the client applications can use these APIs
+for character set conversions and to parse character strings using the <xref href="GUID-71CCD94C-4F1B-3F80-A1F1-C8708B4181C6.dita"><apiname>VersitUtils</apiname></xref> class. </p> </section>
+</conbody><related-links>
+<link href="GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita"><linktext>Contacts
+Model Overview</linktext></link>
+<link href="GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita"><linktext>Calendar
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D7E5566-E297-5418-AC65-2FCA50FD1908.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8D7E5566-E297-5418-AC65-2FCA50FD1908"><title>more</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>more</userinput> </p> <p>The <codeph>more</codeph> command is used to display the contents of a text file on the terminal, one page at a time. This command is supported only for reading from a pipe. You can use the following key strokes along with this command to view the contents of a file: </p> <ul><li id="GUID-E352CD30-8AEA-5848-A8A2-2E6586629390"><p> <b>RETURN (ENTER)</b> - Scrolls up to display an additional line. </p> </li> <li id="GUID-47A1ADED-4E71-5771-917B-49C3E5687EA7"><p> <b>SPACE</b> - Displays the next page. </p> </li> <li id="GUID-C25EE5FE-49DB-563A-85D9-F1BBA3F59288"><p> <b>q</b> - Returns to the command prompt. </p> </li> </ul> <p> <b>Note:</b> This command does not support any options. </p> <p> <b>Example:</b> </p> <p><userinput>cat one.txt | more</userinput> </p> <p>This command enables you to view the contents of the <filepath>one.txt</filepath> file, one page at a time. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1" xml:lang="en"><title>MmfExCodec:
+Multimedia Framework codec plug-in example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>MmfExCodec</filepath> demonstrates
+how to implement a codec plug-in for the Multimedia Framework. A codec converts
+media data in one encoding into another encoding. The example converts audio
+data encoded with PCM8 into PCM16. </p> <p>The program is an ECom plug-in
+that implements the codec interface <codeph>CMMFCodec</codeph> by the class <codeph>CMMFExPcm8Pcm16Codec</codeph>.
+When a client or media format requires a PCM8 to PCM16 codec, the Multimedia
+Framework will instantiate a <codeph>CMMFExPcm8Pcm16Codec</codeph> object,
+and call its <codeph>ProcessL()</codeph> member function to convert data supplied
+a source buffer. As converting PCM8 into PCM16 only requires expanding each
+byte in the source buffer into two bytes in the destination buffer, <codeph>CMMFExPcm8Pcm16Codec::ProcessL()</codeph> is
+not very complex. </p> </section>
+<section id="GUID-98F50184-E319-592D-A350-785799248B3C-GENID-1-6-1-17-1-1-4-1-9-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-03d20b19-4462-40f7-bb6a-d91aaeea30b0.zip" scope="external"> MmfExCodec.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-03d20b19-4462-40f7-bb6a-d91aaeea30b0.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-18F4082A-D301-3007-88DD-0E13AB81C74A.dita"><apiname>CMMFCodec </apiname></xref>  <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname>CMMFDataBuffer </apiname></xref>  </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-5-1-7-1-6-1-5-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-5-1-7-1-6-1-5-1" xml:lang="en"><title>MmfExCodec:
+Multimedia Framework codec plug-in example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>MmfExCodec</filepath> demonstrates
+how to implement a codec plug-in for the Multimedia Framework. A codec converts
+media data in one encoding into another encoding. The example converts audio
+data encoded with PCM8 into PCM16. </p> <p>The program is an ECom plug-in
+that implements the codec interface <codeph>CMMFCodec</codeph> by the class <codeph>CMMFExPcm8Pcm16Codec</codeph>.
+When a client or media format requires a PCM8 to PCM16 codec, the Multimedia
+Framework will instantiate a <codeph>CMMFExPcm8Pcm16Codec</codeph> object,
+and call its <codeph>ProcessL()</codeph> member function to convert data supplied
+a source buffer. As converting PCM8 into PCM16 only requires expanding each
+byte in the source buffer into two bytes in the destination buffer, <codeph>CMMFExPcm8Pcm16Codec::ProcessL()</codeph> is
+not very complex. </p> </section>
+<section id="GUID-98F50184-E319-592D-A350-785799248B3C-GENID-1-6-1-17-1-1-5-1-7-1-6-1-5-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-03d20b19-4462-40f7-bb6a-d91aaeea30b0.zip" scope="external"> MmfExCodec.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-03d20b19-4462-40f7-bb6a-d91aaeea30b0.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-18F4082A-D301-3007-88DD-0E13AB81C74A.dita"><apiname>CMMFCodec </apiname></xref>  <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname>CMMFDataBuffer </apiname></xref>  </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e316963_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027"><title>Redraw Drawing</title><shortdesc>This topic provides background information about redraw drawing and tips for updating old code to comply with the recommendation that all drawing is migrated to redraw drawing. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>: Application developers. </p> <section><title>About Redraw Drawing</title> <p>Symbian recommends that all <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref> drawing is <b>redraw drawing</b>, which means that it takes place between <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-9337538E-7A53-3153-A330-968B5E4F2FF2"><apiname>RWindow::BeginRedraw()</apiname></xref> and <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-3DE16607-AD3B-3946-BEB3-88512EAAB9CE"><apiname>RWindow::EndRedraw()</apiname></xref> calls. <xref href="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita">The UI Control Framework (CONE)</xref> automatically takes care of this for you if you use the <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-D5458F8C-E199-37DD-B821-050B749122C6"><apiname>CCoeControl::DrawNow()</apiname></xref> and <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-9FB682AC-0209-302A-83F3-7BCB1162B998"><apiname>CCoeControl::DrawDeferred()</apiname></xref> methods. </p> <p>For example, suppose an application wants to write the text "Hello!" to a window and then add a red diagonal line below it (A in following diagram). When this is performed as redraw drawing, the application calculates the bounding rectangles of the "Hello!" text and the red line (B). For each one, the application passes the rectangle to <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-E50F6710-937C-32EC-A101-01E2EABD0160"><apiname>RWindow::BeginRedraw(const
+          TRect&amp;)</apiname></xref>, then calls the draw commands and afterwards calls <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-3DE16607-AD3B-3946-BEB3-88512EAAB9CE"><apiname>RWindow::EndRedraw()</apiname></xref>. </p> <fig id="GUID-53B962F7-D425-5D72-8148-F822A3462243"><image href="GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e166418_href.png" placement="inline"/></fig> <p>This has the advantage that the Window Server knows that the area of the window that has the "Hello!" text is not affected by the drawing of the red line. There are also advantages when some or all of the window needs to be repainted. For example, suppose another window (such as an OK dialog box) appears above the window (as shown in C). When the dialog box is closed, the Window Server repaints the screen behind the dialog box. Because in this example the OK dialog box was entirely within the red line's bounding rectangle, the Window Server simply replays that rectangle's drawing operations (D). This is more efficient than repainting the whole window. </p> <p>However, in earlier versions of Symbian you could, for example, draw the red line without bracketing it within <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> calls. This is called <b>non-redraw drawing</b>. In ScreenPlay, each non-redraw drawing operation triggers the Window Server to invalidate the entire window. This means that the client application must then perform a full window redraw, as shown in the next diagram. </p> <fig id="GUID-A36DF80C-6B53-5D9D-878B-0854BB36E44A"><title>
+             Non-redraw drawing sequence 
+          </title> <image href="GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e166439_href.png" placement="inline"/></fig> <p>This is less efficient than the Window Server replaying the draw operations for the affected area. </p> <p>Symbian recommends that all drawing is now performed as redraw drawing. Typically this involves dividing the window up into rectangular areas that represent different aspects of the user interface—for example, as shown in the following diagram. If anything spoils the screen, the Window Server then only needs to redraw the corresponding portions of the user interface. </p> <fig id="GUID-BAD0C762-0EBD-51E2-BC64-DF38749CA7D8"><image href="GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e166448_href.png" placement="inline"/></fig> <p>In earlier versions of Symbian, before the introduction of the <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-DE01101D-52D5-37DC-A397-94C23CBB36CE"><apiname>CCoeControl::DrawNow(TRect&amp;)</apiname></xref> overload, developers sometimes used non-redraw drawing to update a small part of a control. This technique has often been used for virtual keyboards and calendar controls. This type of use case is now particularly unsuited to non-redraw drawing because in ScreenPlay each non-redraw drawing command triggers a server-initiated client redraw of the entire window. This can be very slow if the window requires many drawing operations to redraw the scene. </p> <p>Symbian recommends that all non-redraw drawing is changed to redraw drawing. Sometimes this causes some subtle changes in behavior, as explained below. </p> </section> <section><title>Restrictions</title> <ol id="GUID-3BE36F7E-CFEC-5BFD-A311-E36D67D9097D"><li id="GUID-C6236CD8-C83E-5252-BCC6-336FE8677DCF"><p>You must supply <b>only</b> drawing operations between the <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> calls. For example, you must not change the window extent between a <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> call. </p> </li> <li id="GUID-652DF093-046F-58A3-961F-2A51DEB2FD74"><p>You must <b>not</b> call any functions that can leave between the <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> calls. This is because drawing operations must never leave. </p> </li> </ol> <p>Note: A redrawer's <codeph>RunL()</codeph> function must <b>never</b> perform any non-redraw drawing. See <xref href="GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita">Server-Initiated vs. Application-Initiated Redrawing</xref> for more information. </p> </section> <section><title>Tips for migrating old code</title> <p>Migrating non-redraw drawing to redraw drawing means that you must enclose all drawing operations between <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-9337538E-7A53-3153-A330-968B5E4F2FF2"><apiname>RWindow::BeginRedraw()</apiname></xref> and <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-3DE16607-AD3B-3946-BEB3-88512EAAB9CE"><apiname>RWindow::EndRedraw()</apiname></xref> calls or migrate it to use the <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-D5458F8C-E199-37DD-B821-050B749122C6"><apiname>CCoeControl::DrawNow()</apiname></xref> and <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-9FB682AC-0209-302A-83F3-7BCB1162B998"><apiname>CCoeControl::DrawDeferred()</apiname></xref> methods. The main points to note are provided below under separate subheadings. </p> <p><b>Performance </b> </p> <p>You can improve performance by passing the smallest possible bounding rectangle to the <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-9337538E-7A53-3153-A330-968B5E4F2FF2"><apiname>RWindow::BeginRedraw()</apiname></xref> and <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita#GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160/GUID-D5458F8C-E199-37DD-B821-050B749122C6"><apiname>CCoeControl::DrawNow()</apiname></xref> methods. If this still results in poor performance, because, for example, there is a large amount of incremental screen updating, the recommended solution in ScreenPlay is to render to a surface. </p> <p><b>Delay of execution </b> </p> <p>After you migrate non-redraw drawing to redraw drawing, the execution of the drawing operations is deferred compared to previously. This means that if the arguments of the drawing operations result in a panic, the panic also appears later than before. </p> <p><b>CRemoteGc usage </b> </p> <p>Device creators can use <xref href="GUID-9965F9F1-ACEE-398C-BDAB-B3D5D61D4EBE.dita"><apiname>CRemoteGc</apiname></xref> to create a data buffer containing a series of drawing operations. These can then be executed to display the drawing on the screen by using <xref href="GUID-B25363C2-8757-36D4-93D2-769CDA1BDF86.dita#GUID-B25363C2-8757-36D4-93D2-769CDA1BDF86/GUID-35C68602-7684-3A1C-ADA2-9C8822E18DE0"><apiname>CCommandBuffer::Play()</apiname></xref>. </p> <p>For example, consider a weather program that has one sub-system responsible for deciding the drawing operations that comprise a weather symbol and another sub-system that places weather symbols at different locations on the screen. Here we potentially have a Cloud symbol buffer created once and played many times. </p> <p>The points to note are: </p> <ul><li id="GUID-A8DCB4C4-9D80-5F0F-A894-512A432A9E11"><p>Any <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> commands that are placed into the <codeph>CRemoteGc</codeph> buffer are <b>not</b> transferred to the target window when the buffer is played </p> </li> <li id="GUID-4D5FB2B7-44F0-50F1-AB60-3A12B0AF287B"><p>You <b>must</b> bracket any call to <xref href="GUID-B25363C2-8757-36D4-93D2-769CDA1BDF86.dita#GUID-B25363C2-8757-36D4-93D2-769CDA1BDF86/GUID-35C68602-7684-3A1C-ADA2-9C8822E18DE0"><apiname>CCommandBuffer::Play()</apiname></xref> within <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> calls. </p> </li> </ul> <p>It may be puzzling to understand why any <codeph>BeginRedraw()</codeph> and <codeph>EndRedraw()</codeph> commands would be placed in the <codeph>CRemoteGc</codeph> buffer at all. This facility is to allow the commands already in the <codeph>CRemoteGc</codeph> buffer to be replaced with new drawing operations. In the weather example, it might be done to allow a "7<sup>o</sup> Celsius" label to partially occlude a cloud graphic placed earlier into the <codeph>CRemoteGc</codeph> buffer. </p> </section> <section><title>Configuring the emulator to panic clients that ignore the
+          convention</title> <p>In both ScreenPlay and the non-ScreenPlay variant, you can configure the TechView emulator to panic clients that ignore the convention (described above) that all drawing operations are performed as redraw drawing. </p> <p>To enable this feature, add the following line to the <filepath>epoc32/data/epoc.ini</filepath> file: </p> <codeblock id="GUID-50D79AD9-BB89-5A49-91A3-DDDAF9543551" xml:space="preserve">debug_wserv_exe_EnforceRedrawCallingConvention 1</codeblock> <p>This feature is disabled if you do not specify this parameter or if you set it to zero, like this: </p> <codeblock id="GUID-ACCA692B-42C6-593E-BA02-43D2EF52E9C8" xml:space="preserve">debug_wserv_exe_EnforceRedrawCallingConvention 0</codeblock> <p>The feature takes effect in debug emulator (WINSCW) builds only—it never affects ARM builds. </p> <p>When a Window Server panic code 79 (<codeph>EWservPanicWindowBeginRedrawNotCalled</codeph>) then occurs, it means that a non-redraw drawing operation has occurred. </p> <p>However, the Window Server buffers client requests. This means that the drawing that is at fault may have been issued by the client some time earlier. It is therefore helpful to enable <i>autoflushing</i>, because this removes the buffering between the client issuing the drawing operations and the Window Server processing them. This makes it easier to identify the drawing operation that is at fault. </p> <p>There are three ways to enable autoflushing: </p> <ol id="GUID-22E4AACD-5718-5774-B9B1-BF28D287ED76"><li id="GUID-EF604CC8-5138-5747-AD4F-CA8BE8DC335A"><p>To enable autoflushing globally across all clients, define <codeph>__AUTO_FLUSH</codeph> in <filepath>client/client.h</filepath> and re-compile the Window Server code. </p> </li> <li id="GUID-ACC8C257-1530-5808-9838-B905D2483455"><p>To enable autoflushing in your client-side code only, call <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-85232F8B-9FB8-3E19-9ECD-E64B63748A11"><apiname>RWsSession::SetAutoFlush(ETrue)</apiname></xref>. </p> </li> <li id="GUID-3CCA44EB-5375-59AA-B96B-E3C3E241D88B"><p>To enable autoflushing on an ad hoc basis in the TechView emulator, press <userinput>Ctrl-Alt-Shift-F</userinput>. </p> </li> </ol> </section> </conbody><related-links><link href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita"><linktext>Graphics and Drawing </linktext> </link> <link href="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita"><linktext>The UI Control Framework (CONE)</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496" xml:lang="en"><title>How
+to use makmake</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Symbian projects are defined by an <filepath>.mmp</filepath> file which
+specifies the essential elements of the project. The <filepath>makmake</filepath> tool
+then uses this environment-neutral file to build makefiles for use in various
+environments. These makefiles are then used for project development. </p>
+<p>Some makefiles are built for use in building the project from the command-line,
+while others are for use with an IDE. Command-line makefiles created by <filepath>makmake</filepath> contain
+syntax which it is not possible to incorporate into makefiles intended for
+an IDE: these are discussed below. </p>
+<section><title>Building and running a project for WINSCW</title> <p>Starting
+with <filepath>hello.mmp</filepath>, you can build the makefile file <filepath>hello.winscw</filepath> using: </p> <p><userinput>makmake
+hello winscw</userinput> </p> <p>You then build the project from the command
+line by running: </p> <p><userinput>make -f hello.winscw</userinput> </p> </section>
+<section><title>Building debug and release variants</title> <p>A command line
+makefile produced by <filepath>makmake</filepath> allows the executable (an
+EXE or any type of <filepath>DLL</filepath>) to be produced in one of two
+variants: </p> <ul>
+<li id="GUID-277C7FEF-E82E-534B-9D4A-E7202C55D902"><p> <filepath>udeb</filepath>:
+debug mode </p> </li>
+<li id="GUID-3E123400-CB9C-593B-8D10-9717FE0B52D4"><p> <filepath>urel</filepath>:
+release mode </p> </li>
+</ul> <p>which may be selected by specifying the variant as a target. </p> <p>For
+example, to build the <filepath>udeb</filepath> variant of the executable,
+you can do: </p> <p><userinput>make -f hello.armi udeb</userinput> </p> <p>If <filepath>make</filepath> /<filepath>nmake</filepath> is
+invoked with no target specified, then the following default targets will
+be built: the default for ARM is release mode; the default for WINSCW, and
+WINC is debug mode. </p> <p>You may use path specifications to locate the <filepath>.mmp</filepath> file
+in any directory. </p> <p>For example: </p> <p><userinput>makmake ..\..epoc32ex\e32\hello
+armv5</userinput> </p> <p>or </p> <p><userinput>makmake ..\..epoc32ex\e32\hello
+cw_ide</userinput> </p> <p>will locate the specified <filepath>.mmp</filepath> file.
+However, the generated <filepath>makmake</filepath> files are always written
+into the current directory. </p> </section>
+<section><title>Command line makefile utilities</title> <p>Command-line makefiles
+provide extra makefile targets which enable you to use <filepath>make</filepath> or <filepath>nmake</filepath> to
+create work directories and erase non-source files for a particular build
+variant of a project. </p> <p>For example, </p> <ul>
+<li id="GUID-E6B4369D-C966-59F4-A44B-E708930DB07F"><p> <systemoutput>make
+-f hello.winscw clean</systemoutput> attempts to delete the non-source files
+created during a build of all variants of the project <filepath>hello</filepath> </p> </li>
+<li id="GUID-C9E915E0-6339-5A74-9BDC-BD62D3B79B67"><p> <systemoutput>make
+-f hello.winscw makework</systemoutput> will create the work directories for
+a build of all variants of the project hello, while <codeph>nmake        
+        -f hello.wins makeworkurel</codeph> will create the work directories
+for a wide release build of the project. </p> </li>
+</ul> <p>The build-specific <codeph>makework</codeph> targets are listed as
+dependencies of the main build-specific targets in command-line makefiles,
+so work directories will automatically be created when a target is built with
+a command-line makefile if these directories do not already exist. </p> </section>
+</conbody><related-links>
+<link href="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita"><linktext>mmp file
+syntax</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8DF1C625-7963-55E9-BEEC-C9E37936F8CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8DF1C625-7963-55E9-BEEC-C9E37936F8CF" xml:lang="en"><title>How
+to use User::Leave()</title><shortdesc>Provides a code snippet to explain how to use <codeph>User::Leave()</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can use the <codeph>User::Leave()</codeph> function to terminate a
+function’s processing immediately when an exception condition occurs. In the
+example below, if the <codeph>new</codeph> fails, the function calls <codeph>User::Leave()</codeph> with
+an error code. The return type of the function is <codeph>void</codeph>, because
+it is not necessary to use it to return error information.</p>
+<codeblock id="GUID-98542124-DB23-5A8F-8387-F0781B32D1F2" xml:space="preserve">void doExampleL()
+ { 
+ CExample* myExample = new CExample;
+ if (!myExample) User::Leave(KErrNoMemory); 
+ // leave used in place of return to indicate an error
+ 
+ // do something
+ myExample-&gt;iInt = 5;
+ testConsole.Printf(_LIT("Value of iInt is %d.\n"),myExample-&gt;iInt);
+ // delete
+ delete myExample;
+ }</codeblock>
+<section id="GUID-98FF9DEC-DC09-43DE-ABAD-3EE9C2597A85"><title>Notes</title> <ul>
+<li id="GUID-7891ACB0-D39E-5982-BF3E-43DD01281F77"><p>the <codeph>L</codeph> suffix
+on a function name indicates that it may leave</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49"><title>Introduction to the Multimedia Validation Suite</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Multimedia Validation Suite (MVS) provides a set of packages that help in development and testing of Symbian Multimedia Plugins. It also provides the example Controller and Codec plugins for the developers to base their plugins. </p> <p>The MVS consists of, </p> <ul><li id="GUID-7BAB834B-0E29-57C5-A175-33E99D086DC2"><p>a TechView GUI </p> </li> <li id="GUID-FD985A88-D836-5060-A7D8-DB694C492824"><p>a UI-independent validation engine that help in exercising the MMF API which inturn test the underlying Controller and Codec Plugins </p> </li> <li id="GUID-AB6FC673-AA3F-539C-9F67-6715537D891D"><p>a set of reference controller plugins and codecs. You can base your solutions on these, or test new products against them. </p> </li> </ul> <p>These pages describe the MVS TechView <xref href="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita">GUI</xref>, which you use to <xref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita">record</xref>, <xref href="GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita">play</xref>, <xref href="GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita">edit</xref> and <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita">configure</xref> audio and video files. </p> <p><b>Log Files </b> </p> <p>All events during a session - your actions and the MVS's responses - are recorded in the event log file, <filepath>C:\logs\LogMVSappUi\LogFile.txt</filepath>. Each record in the file has the format: </p> <codeblock id="GUID-CC7B67EE-D81B-50B5-9E76-B7C912E08ED3" xml:space="preserve">Date: Time: Actions / Errors</codeblock> <p>If an error occurs during a session, you can check the contents of this file to help determine the cause. You can also <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita">clear the contents of the file</xref>. </p> <p><b>Session settings </b> </p> <p>When you start the MVS, it uses the following settings from the previous session: </p> <ul><li id="GUID-8D1F1BFF-BD35-5BCF-AA5B-CBEA756440A4"><p>last play format </p> </li> <li id="GUID-E373DE1A-D471-588D-8E8C-D0A90E77D7E2"><p>last folder played from </p> </li> <li id="GUID-7A246A08-DEA8-5E6D-B908-AE19547F32E2"><p>last folder recorded to </p> </li> <li id="GUID-F08F04A2-81D5-55E5-ABC2-120AFDEBDDC4"><p>last drive selected </p> </li> <li id="GUID-9E9DC09E-06E2-5507-A28B-8D8B61CF48B7"><p>sound volume </p> </li> <li id="GUID-AF953D41-DA82-5126-911F-9E77510F7A16"><p>sound gain </p> </li> <li id="GUID-84CCB6E7-50CD-58E7-9394-9674A5C21AD4"><p>stereo balance </p> </li> <li id="GUID-CDE2928E-BE30-59DC-AE61-EED69402457F"><p>file play on open. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E158109-AE22-5216-90E8-63A4BD4CC90B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8E158109-AE22-5216-90E8-63A4BD4CC90B" xml:lang="en"><title> Opening
+a Socket Server connection: Tutorial</title><shortdesc>This tutorial describes how an application can open and manage
+a connection to the Socket Server. Other Socket Server tutorials build upon
+this tutorial. The Socket Server is also known as ESock. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Connecting to the Socket Server</title><p>The <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref> class
+provides the <xref href="GUID-408D4D7E-FCD1-3ECF-AD62-6DA52E9580F5.dita"><apiname>Connect()</apiname></xref> function to create a session to
+the socket server. </p></section>
+<section><title>Procedure</title><p>The steps to connect and then close a
+session with the Socket Server are: </p><ul>
+<li><p>   Call one of the <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-C9E237C5-DCFB-3F66-87E5-63425156995C"><apiname>RSocketServ::Connect()</apiname></xref>    functions.
+ </p> </li>
+<li><p>   Perform socket operations  </p> </li>
+<li><p>   Call <codeph>Close</codeph> to end the session with the Socket Server
+   </p> </li>
+</ul></section>
+<section><title>Example</title><codeblock xml:space="preserve">RSocketServ ss;
+
+// Connect to ESOCK
+ss.Connect();
+
+// Perform operations on the socket server
+...
+
+// Close the connection
+ss.Close();
+</codeblock></section>
+<section><title>Further considerations</title><p> The <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-C9E237C5-DCFB-3F66-87E5-63425156995C"><apiname>RSocketServ::Connect()</apiname></xref> function
+allows optional extra information to be sent to the Socket Server to change
+the performance of the connection. Two optional parameters are available:
+ </p><ol>
+<li id="GUID-A41FB7DA-2EE4-460F-9698-70A50FB682EB"><p><b>Message Slots</b> - If the client application expects to   keep
+a large number of requests open at the same time, then the client   application
+can increase the message slots available to the connection.</p></li>
+<li id="GUID-FDEF0A30-F872-49DF-A7EC-3B975040E5DC"><p><b>Protocol Preference</b> - If the client application will   use the
+connection to interact with only one protocol, then this protocol   should
+be specified. The Socket Server uses the preferred protocol to improve   the
+efficiency of the messages between the client application and the protocol</p></li>
+</ol></section>
+<section id="GUID-5AA882EF-269B-54A6-8CDB-B1E9F26BB7D5"><p>The <codeph>RSocketServ</codeph> connection
+allows a number of <xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">sub-connections</xref> that
+offer more functionality. The sub-connections available are: </p> <ul>
+<li id="GUID-8C317F12-D19A-5B61-A88E-E1BC10BBFE78"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RConnection</apiname></xref>  </p> </li>
+<li id="GUID-DA08493B-DB72-57F0-9CB9-CF4BE80A94E9"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSubConnection</apiname></xref>  </p> </li>
+<li id="GUID-28A3F706-7A81-5F72-8E66-0D236EDE6A40"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocket</apiname></xref>  </p> </li>
+<li id="GUID-F0D169F8-7C22-5AC1-BF22-EAC4D07B9E21"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RHostResolver</apiname></xref>  </p> </li>
+<li id="GUID-3A4ADFEA-4FCD-54DD-8367-0A42D21A67A6"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RNetDatabase</apiname></xref>  </p> </li>
+</ul> <p>The purpose of each of these sub-connections is described in the
+. </p> <p><b>Procedure</b> </p> <p>The
+procedure to attach any of these sub-connections is: </p> <ol id="GUID-E146CDDE-DE2C-579C-901F-073C63C61F6D">
+<li id="GUID-E67862A6-17E4-5F5D-8A45-F7F8BEA01E04"><p>Create or use an existing <codeph>RSocketServ</codeph> session. </p> </li>
+<li id="GUID-C2AD2B55-F247-5D27-B368-4467E05D5800"><p>Call the <codeph>Open()</codeph> function
+on the object for the sub-connection class. Pass into the <codeph>Open()</codeph> function
+a reference to the <codeph>RSocketServ</codeph> session. </p> </li>
+<li id="GUID-18FF884F-8930-5851-9ECD-6B9BA55A48B2"><p>Perform sub-connection
+operations </p> </li>
+<li id="GUID-0A21C702-5125-55D1-8313-E1E7D1949C54"><p>Call <codeph>Close</codeph> to
+end the sub-session </p> </li>
+</ol> <p id="GUID-F5AEE180-B9A9-542E-84C9-2C505FD75AA4-GENID-1-6-1-7-1-1-10-1-5-1-4-1-3-1-3-5-7"><b>Example 1: Socket (RSocket)</b> </p> <codeblock id="GUID-FB43255E-E22E-5818-B00D-9351DA7B1BFF" xml:space="preserve">RSocketServ ss;
+RSocket sock;
+
+// Connect to the Sockets Server
+ss.Connect();
+
+// open a socket
+sock.Open(ss);
+
+// Perform operations on the socket
+...
+
+// Close the socket connection
+sock.Close();
+</codeblock> <p id="GUID-F5AEE180-B9A9-542E-84C9-2C505FD75AA4-GENID-1-6-1-7-1-1-10-1-5-1-4-1-3-1-3-5-9"><b>Example 2: Connection Management
+(RConnection)</b> </p> <codeblock id="GUID-BA4575AA-B370-594C-AAE0-8D2D970CA4E0" xml:space="preserve">RSocketServ ss;
+RConnection conn;
+
+// Connect to the Sockets Server
+ss.Connect();
+
+// Open the Connection Management sub-connection
+conn.Open(ss);
+
+// Perform operations on the connection
+...
+
+// Close the sub-connection and connection
+ss.Close();
+</codeblock> <p>This example shows that you do not need to close sub-connections
+explicitly. If you close the RSocketServ connection, the Comms Framework closes
+all attached sub-connections. </p> </section>
+</conbody><related-links>
+<link href="GUID-E34D0F11-4B34-575C-BE78-8EAD13E9CD64.dita"><linktext>How to  
+              Start and Close a Management Plane session: Tutorial</linktext>
+</link>
+<link href="GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita"><linktext>Socket Server
+Reference</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E160B29-18C4-574B-9259-9A8E958CDA91.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8E160B29-18C4-574B-9259-9A8E958CDA91" xml:lang="en"><title>Secure Software Install Tools</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Secure Software Install Tools collection provides a set of tools to generate certificate requests and installation files. It also provides tools to extract information from installation files, registry entries and certificate stores for analysis.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e284739_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27" xml:lang="en"><title>Starting
+as Target</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Target is the device that receives commands from a controller. </p>
+<p><b>Intended Audience: </b> </p>
+<p>This tutorial is designed for Symbian licensees and 3rd party application
+developers. </p>
+<section><title>Using the target</title> <p>The following tasks will be covered
+in this tutorial: </p> <ul>
+<li id="GUID-B38F1581-5750-51FB-B383-55DA66F4334C"><p>Starting a target </p> </li>
+<li id="GUID-6DC01733-3365-56AB-9BF6-DA5FA54BEFD5"><p>Stopping a target </p> </li>
+</ul> <p><b> Basic procedure</b> </p> <p>The high level steps to start a target
+are: </p> <ul>
+<li id="GUID-CD03C0DC-6C7C-5E14-9967-204BC272D32C"><p>Create a target interface </p> </li>
+<li id="GUID-56FB6161-7BDA-5E4F-B3B8-AA9A898D7A15"><p>Open a connectionless
+session </p> </li>
+</ul> </section>
+<section><title>Starting a target</title> <p>The steps required to start a
+device as a remote control target are given below: </p> <ol id="GUID-31A116B3-0035-539D-BED6-50D803B6025E">
+<li id="GUID-C256FBD7-39F6-52E6-A9D0-CAFC2A95979E"><p>Create a target interface
+by instantiating an interface selector using <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita#GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462/GUID-17C0EFFE-AEE4-31E6-97D6-701CFD3E761C"><apiname>CRemConInterfaceSelector::NewL()</apiname></xref>,
+as shown here: </p> <codeblock id="GUID-F5F2E656-705F-5FE0-B8EA-43A780EA14E5" xml:space="preserve">CRemConInterfaceSelector* iInterfaceSelector;
+iInterfaceSelector = CRemConInterfaceSelector::NewL();</codeblock> </li>
+<li id="GUID-5CFD7F73-398B-5CFB-ABF3-2C7B047F55A3"><p>Create a core remote
+control API target and add the interface selector created above as shown here: </p> <codeblock id="GUID-81C408AE-A678-5810-805B-CA082ECF6517" xml:space="preserve">CRemConCoreApiTarget* iCoreTarget;iCoreTarget = 
+   CRemConCoreApiTarget::NewL(*iInterfaceSelector,*this);</codeblock> <p>The <codeph>*iInterfaceSelector</codeph> is
+the <xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref> interface selector and <codeph>*this</codeph> is
+the owning observer. The remote control framework observers are used to send
+and receive commands and responses. </p> </li>
+<li id="GUID-250565A9-8BA2-535E-BA34-141BAE3337B3"><p>Open the above interface
+using <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita#GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462/GUID-87BDC40F-F3A9-3879-967D-38FF56E27E37"><apiname>CRemConInterfaceSelector::OpenTargetL()</apiname></xref>. </p> <codeblock id="GUID-012B8A1D-BAF9-5BC6-B102-025F8BB1013D" xml:space="preserve">iInterfaceSelector-&gt;OpenTargetL();</codeblock> </li>
+</ol> <p>The above code will start a device as a remote control target that
+is able to receive and handle remote control commands. </p> </section>
+<section><title>Stopping a target</title> <p>To stop your target use: </p> <codeblock id="GUID-53934A6A-8E38-5591-A333-F9A5D574172E" xml:space="preserve">delete iInterfaceSelector;</codeblock> </section>
+<section><title>What's next?</title> <ul>
+<li id="GUID-ECB765A0-C8B6-54F3-AE04-082E15A1770A"><p> <xref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita">Remote
+Control Basics</xref> </p> </li>
+<li id="GUID-C22F3018-EF6F-582D-BF93-94B1C4122806"><p> <xref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita">Starting
+as Controller</xref>  </p> </li>
+<li id="GUID-D399A6EB-966E-51F6-B273-E7DB5A04BCAE"><p> <b>Starting as Target</b> -
+This document </p> </li>
+<li id="GUID-93E9A8AE-5202-57FC-98B7-0651C301FB40"><p> <xref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita">Commands
+and Responses</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E2FA5CC-C582-4321-88BB-C5CE3AA047FE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8E2FA5CC-C582-4321-88BB-C5CE3AA047FE" xml:lang="en"><title>Layout
+changes in bi-directional languages</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If the display text language is following right-to-left writing direction
+(numbers are still left-to-right in bi-directional languages), also the standard
+panes change their places, and content can be mirrored if needed. The general
+rules for layouts in bi-directional UI languages are the following:</p>
+<ol>
+<li id="GUID-73433B79-FED1-481F-BF31-4DBF1C7BEF23"><p>The Status pane components are mirrored e.g. the signal and battery
+panes change their places.</p></li>
+<li id="GUID-098A0CDB-2DB1-4285-85A3-A49FAF792B09"><p>The main pane lists and grids are mirrored: the A column icons and
+texts are on the right rather than on the left, etc.</p></li>
+<li id="GUID-0F7210EA-6C23-4B44-B439-02A5BD865DF5"><p>The Control pane is not mirrored: the left softkey (typically Options
+or a positive selection) remains on the left, and the right softkey (typically
+a negative command such as Back, Exit, or Cancel) remains on the right.</p></li>
+</ol>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e247185_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E363123-A85E-521C-BC10-96C59130E45C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8E363123-A85E-521C-BC10-96C59130E45C" xml:lang="en"><title>How
+to walk the heap</title><shortdesc>The <codeph>THeapWalk</codeph> class provides behaviour for walking
+the heap. This class is pure virtual and developers must provide a derived
+class in order to use it.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A heap can be checked to make sure that its allocated and free cells are
+in a consistent state and that the heap is not corrupt.</p>
+<p>The <codeph>THeapWalk</codeph> class provides the behaviour for doing this.
+This class is pure virtual and developers must provide a derived class in
+order to use it.</p>
+<p>Simply construct a <codeph>THeapWalk</codeph> derived object, passing a
+reference to the heap which is to be checked in its constructor. Walking the
+heap is initiated by calling <codeph>Walk()</codeph>. This function follows
+the list of allocated and free cells in the heap. The function calls the virtual
+function <codeph>Info()</codeph> for every good cell it finds, passing the
+cell's address and length.</p>
+<p><codeph>Info()</codeph> is a pure virtual function and a derived class
+must provide an implementation for it.</p>
+<p><codeph>Walk()</codeph> terminates when it has successfully followed the
+entire list of free and allocated cells or until it finds the first bad cell.</p>
+<p>As a minimum, a class derived from <codeph>THeapWalk</codeph> might be:</p>
+<codeblock id="GUID-A3AC2314-4C1E-5F1F-9BCB-694893AB47FB" xml:space="preserve">class TMyClass : public THeapWalk
+    {</codeblock>
+<codeblock id="GUID-C45FDA92-5BEE-57A3-BB1B-F4AB203EC0EC" xml:space="preserve">public :
+    TMyClass(RHeap&amp; aHeap);
+    void Info(TCellType aType,TAny *aBase,TInt aLength);
+    }</codeblock>
+<p>where the constructor would be implemented as:</p>
+<codeblock id="GUID-F7B66153-EAFE-570C-997F-42BDBB05DE01" xml:space="preserve">TMyClass::TMyClass(RHeap&amp; aHeap)
+    : THeapWalk(aHeap)
+    {}</codeblock>
+<p>Typically, the <codeph>Info()</codeph> function might consist of a switch
+statement based on the value of <codeph>aType</codeph>:</p>
+<codeblock id="GUID-379F76EF-8FC0-5085-BB05-373E2B64508C" xml:space="preserve">TMyClass::Info(TCellType aType,TAny *aBase,TInt aLength)
+    {
+    switch(aType)
+        {
+    case EGoodAllocatedCell:
+        ...
+        break;
+    case EGoodFreeCell:
+        ...
+        break;
+    case EBadFreeCellAddress:
+        ...
+        break;
+    default:
+        ...
+        }
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e367004_href.png has changed
Binary file Symbian3/SDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e95877_href.png has changed
Binary file Symbian3/SDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e108810_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223" xml:lang="en"><title>JPEG
+Image Transform Extension Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces you to the JPEG image transform extensions. </p>
+<section id="GUID-3333CA2A-EF84-5E7B-B9BE-8FF00523897F-GENID-1-6-1-17-1-1-5-1-6-1-12-1-4-1-3-1-3-1-3-1-2-2"><title>Purpose</title> <p>The
+Image Transform framework supports standard extensions for advanced JPEG functions. </p> <p>The
+functions are, </p> <ul>
+<li id="GUID-5AEE7F00-B5AE-5D17-8280-BB86E1C3F309"><p><xref href="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita#GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223/GUID-3F1A77BC-C5C3-5A3D-B823-7310B97D449A">Orientation</xref> (Rotation and Mirror over horizontal and vertical Axis) </p> </li>
+<li id="GUID-48438448-064A-5FE4-96D4-769336CFC50E"><p><xref href="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita#GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223/GUID-3132C68A-4A30-51FD-9259-9425E3E5B5AE">Overlay</xref>  </p> </li>
+<li id="GUID-03E14C2D-A7D9-532F-9E3A-BB8A38770929"><p><xref href="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita#GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223/GUID-AAD925E2-9450-5ADC-B2D2-FF106392FC4C"> Squeeze</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-3F1A77BC-C5C3-5A3D-B823-7310B97D449A"><title>Orientation</title> <p>The
+COrientationTransformExtension extension to CImageTransform allows you to
+rotate in steps of 90 degrees or to mirror a JPEG file either from file or
+memory. </p> <p>When you require an Image Transform plugin which supports
+the Orientation extension, call <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita#GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4/GUID-141A948E-6070-335D-B0B2-1F4AD283EC1A"><apiname>CImageTransform::SetTransformationsL()</apiname></xref> or <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita#GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4/GUID-429C3968-9EB4-3B6E-85FF-13244E4505D2"><apiname>CImageTransform::EOrientation()</apiname></xref>.
+The client must get the COrientationTransformExtension extension and use this
+to set up the required transformation: </p> <codeblock id="GUID-12531AE6-3383-50F3-8D89-629010D967E1" xml:space="preserve">
+
+IMPORT_C  void COrientationTransformExtension::SetOrientationL(TOrientation aOrientation);
+
+</codeblock> <p>The orientation changes supported by the <xref href="GUID-593AD11D-3CE7-39E7-B5FE-EDEDABE8D936.dita"><apiname>COrientationTransformExtension</apiname></xref> are, </p> <ul>
+<li id="GUID-E3056EBA-DC74-5D99-95D5-3016AEAADA4A"><p>90 degree clockwise </p> </li>
+<li id="GUID-9E607A83-0846-56FC-95D4-CD7250934EC0"><p>180 degree clockwise </p> </li>
+<li id="GUID-27A48EA1-7774-5DA8-9FCB-201965A9EA59"><p>270 degree clockwise </p> </li>
+<li id="GUID-53B7C705-D2EE-5729-BE74-91291D7F30C5"><p>mirroring over the vertical
+axis </p> </li>
+<li id="GUID-D7806048-D30A-5D77-BA5E-1F581E76D5CC"><p>mirroring over the horizontal
+axis </p> </li>
+<li id="GUID-88EDAE03-DB13-5BF9-BAE8-60C20065D114"><p>transpose over the main
+diagonal </p> </li>
+<li id="GUID-8E508BFF-714C-58B4-A0BB-82B6507FC7EA"><p>transpose over the minor
+diagonal. </p> </li>
+</ul> <p>In the example function below a JPEG image is rotated by 90 degrees: </p> <codeblock id="GUID-9C13D4D9-1772-5FC1-A294-F0B52A5EFFA2" xml:space="preserve">
+
+    // Create the image transform
+       CImageTransform* imageTransform = CImageTransform::NewL(iFs);
+       CleanupStack::PushL(imageTransform);
+
+    // Setup the image transform
+       imageTransform-&gt;SetSourceFilenameL(aSrcFileName);
+       imageTransform-&gt;SetDestFilenameL(aDestFileName);
+       imageTransform-&gt;SetTransformationsL(CImageTransform::EOrientation);
+       imageTransform-&gt;SetupL();
+
+    // Get the extension plugin supporting orientation
+       TUid lRotateUid = {KUidOrientationTransformExtension    };
+       TInt err = KErrNone;
+    COrientationTransformExtension* lRotateExt = static_cast&lt;COrientationTransformExtension*&gt;
+    (imageTransform-&gt;Extension(lRotateUid, err));
+
+ // Check here whether the plugin supports this extension or not set the orientation on 
+ // the plugin    
+ lRotateExt-&gt;SetOrientationL(COrientationTransformExtension::ERotation90DegreesClockwise);
+
+    // Perform the transformation
+      imageTransform-&gt;Transform(aStatus);
+
+    // CImageTransform::Transform() is an asynchronous function
+    // and the result of the transformation would be known in the
+    // RunL() function of the active object associated with the aStatus
+
+</codeblock> <p>The image rotation can be performed in the compressed domain
+allowing a transformation of the image. Benefits of speed and memory usage
+can be obtained dependent on the implementation of the plugin. </p> </section>
+<section id="GUID-3132C68A-4A30-51FD-9259-9425E3E5B5AE"><title>Overlay</title> <p> <xref href="GUID-83EA2789-C3FE-383A-B81F-E9E362FE4283.dita"><apiname>COverlayTransformExtension</apiname></xref> extension
+to Image Transform framework allows lossless overlay or blend of images. Examples
+of the use of <xref href="GUID-83EA2789-C3FE-383A-B81F-E9E362FE4283.dita"><apiname>COverlayTransformExtension</apiname></xref> include adding
+timestamp or place-stamp, some text or inserting a company logo. The images
+below show an example of overlay functionality: </p> <fig id="GUID-BA901C57-D744-5353-8B25-2195EA084016">
+<image href="GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e283775_href.jpg" placement="inline"/>
+</fig> <p>The image overlay transformation can, depending on its implementation,
+be very fast eliminating the need to decode the whole image making it very
+useful, for example a camera application. The types of image that can be overlaid
+onto the main JPEG image can be discovered through the extension. It is also
+possible to overlay a <codeph>CFbsBitmap</codeph>. If you need transparency,
+then you have to choose an image format supporting a transparency channel
+such as PNG. </p> <p>When you require an Image Transform plugin which supports
+the Overlay extension, call <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita#GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4/GUID-141A948E-6070-335D-B0B2-1F4AD283EC1A"><apiname>CImageTransform::SetTransformationsL()</apiname></xref> or <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita#GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4/GUID-198CAB14-A6CB-3D51-9404-C4DED1DCF215"><apiname>CImageTransform::EOverlay()</apiname></xref>.
+The client must get the COverlayTransformExtension extension and use this
+to set up the required transformation. The client can control the desired
+position for overlay, and the transparency for image. The example below show
+the successful setup for <xref href="GUID-83EA2789-C3FE-383A-B81F-E9E362FE4283.dita"><apiname>COverlayTransformExtension</apiname></xref> with
+the JPEG image overlaid by an image at (0,0) position co-ordinates: </p> <codeblock id="GUID-648E2DC3-9BA2-59D3-88DA-3E9C31BC3F18" xml:space="preserve">
+
+    // Create the image transform
+    CImageTransform* imageTransform = CImageTransform::NewL(iFs);
+    CleanupStack::PushL(imageTransform);
+
+    // Setup the image transform
+    imageTransform-&gt;SetSourceFilenameL(aSrcFileName);
+    imageTransform-&gt;SetDestFilenameL(aDestFileName);
+    imageTransform-&gt;SetTransformationsL(CImageTransform::EOverlay);
+    imageTransform-&gt;SetupL();
+
+    // Get the extension plugin supporting overlay
+    TUid lOverlayUid = {KUidOverlayTransformExtension    };
+    TInt err = KErrNone;
+    COverlayTransformExtension * lOverlayExt = static_cast&lt; COverlayTransformExtension *&gt;
+ (imageTransform-&gt;Extension(lOverlayUid, err));
+
+    // Check here whether the plugin supports this extension or not Set the position on 
+ //  the plugin
+    lOverlayExt-&gt;Position(TPoint(0,0));
+
+    // Set the overlay file and its type
+    lOverlayExt-&gt;SetOverlayFileL(aOverlayFileName, KImageTypeJPGUid);
+
+    // Perform the transformation
+    imageTransform-&gt;Transform(aStatus);
+
+    // CImageTransform::Transform() is an asynchronous function
+    // and the result of the transformation would be known in the
+    // RunL() function of the active object associated with the aStatus
+
+</codeblock> </section>
+<section id="GUID-AAD925E2-9450-5ADC-B2D2-FF106392FC4C"><title>Squeeze</title> <p>The <xref href="GUID-1B022316-410D-328C-AFB2-E3A339E1609B.dita"><apiname>CSqueezeTransformExtension()</apiname></xref> extension
+to the Image Transform framework allows, </p> <ul>
+<li id="GUID-485ED69C-7895-5B8F-B2DC-D8A165F74D59"><p>Auto-resize </p> </li>
+<li id="GUID-8DDD9BE0-F079-5F6F-B4D7-26DC45170BEC"><p>Squeeze. </p> </li>
+</ul> <p>A auto-resize adjusts the image size and encoding quality to achieve
+a desired file size. If the file size requirement has not been met, then you
+can use squeeze to compress the image even further. The JPEG squeeze module
+is a convenient tool when creating MMS. </p> <p>When you require an Image
+Transform plugin which supports the Squeeze extension, call <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita#GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4/GUID-141A948E-6070-335D-B0B2-1F4AD283EC1A"><apiname>CImageTransform::SetTransformationsL()</apiname></xref> or <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita#GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4/GUID-FC837A02-243D-3A5B-A81D-63802678F6C6"><apiname>CImageTransform::ESqueeze()</apiname></xref>. </p> <p>Squeezing an image can be accomplished through: </p> <codeblock id="GUID-12A6E7C4-8627-5ACC-8692-64F247FB518D" xml:space="preserve">
+
+IMPORT_C void CSqueezeTransformExtension::SetDestSizeInBytes(TUint aMaxDestDataSize ) ;
+
+</codeblock> <p>Or </p> <codeblock id="GUID-97A7CE4F-A227-51EE-B8E6-CC04C5A2491A" xml:space="preserve">
+    IMPORT_C void SetAdvancedSqueezeModeL(TAdvancedSqueezeParams* aSqueezeAutoResizeParams ) ;
+</codeblock> <p>In the latter case can be made through the use of <xref href="GUID-4372B86B-111B-3B9E-838A-511D247846D4.dita#GUID-4372B86B-111B-3B9E-838A-511D247846D4/GUID-15AB4D19-1FDE-3D29-AED2-7776E3E08C10"><apiname>TAdvancedSqueezeParams::TAutoResizeAction</apiname></xref>.
+The enumeration to do auto resize are, </p> <ul>
+<li id="GUID-3240A4EE-6904-536C-BA05-5995738CE048"><p> <xref href="GUID-DAEB147E-2A50-30F5-85C8-863DC8C21AF7.dita"><apiname>         
+       EAutoResizeActionPreserveSourceEncodingQuality</apiname></xref> for preserving
+the source encoding quality while shrinking the width and height of the image </p> </li>
+<li id="GUID-B29AE145-B946-59CD-879E-6F77F0E48563"><p> <xref href="GUID-EAF60EAB-3E65-34AE-BD3F-C32BA331BCEE.dita"><apiname> EAutoResizeActionPrioritizeLargeImageSize</apiname></xref> for
+preserving the maxImageSize while lowering the encoding quality </p> </li>
+<li id="GUID-2B98FA22-2853-5DB0-B9A2-7B2BC6080522"><p> <xref href="GUID-EAF42079-109B-36E7-940F-C10C10743E31.dita"><apiname>EAutoResizeActionResizePrioritizeHighEncodingQuality</apiname></xref> for
+preserving the highest possible encoding quality while shrinking the width
+and height of the image </p> </li>
+<li id="GUID-3848F63C-D0CF-5888-BC68-127AA29DFE81"><p> <xref href="GUID-D8807BBD-5EAE-3BBE-B408-5841D7554287.dita"><apiname>EAutoResizeActionMiddleCourse</apiname></xref> for
+simultaneously lower the encoding quality and shrink the width and height
+of the image. </p> </li>
+</ul> <p>These settings are used by the auto resize to determine size and
+encoding quality for the new image file. </p> <p>The JPEG squeeze enblaes
+images to be set to a enblaes pre-defined size. This is useful if storage
+size is critical or if there are limitations when sending images i.e. MMS
+file size. The dimensions of the image are preserved; the JPEG compression
+ratio being changed to maintain the image size. </p> <p> <b>Note:</b> The
+JPEG squeeze functionality must be used with care. Drastically decreasing
+file size will result in poor image quality. </p> <p>In the below example,
+the JPEG image is squeezed to get a file size less than the specified maxium
+size: </p> <codeblock id="GUID-9E529BC6-0042-5EBE-A5AE-8F2ADAA8E4D8" xml:space="preserve">
+
+    // Create the image transform
+    CImageTransform* imageTransform = CImageTransform::NewL(iFs);
+    CleanupStack::PushL(imageTransform);
+    // Setup the image transform
+    imageTransform-&gt;SetSourceFilenameL(aSrcFileName);
+    imageTransform-&gt;SetDestFilenameL(aDestFileName);
+    imageTransform-&gt;SetTransformationsL(CImageTransform::ESqueeze);
+    imageTransform-&gt;SetupL();
+    // Get the extension plugin supporting squeeze
+    TUid lSqueezeUid = {KUidSqueezeTransformExtension    };
+    TInt err = KErrNone;
+    CSqueezeTransformExtension * lSqueezeExt = static_cast&lt; CSqueezeTransformExtension*&gt;
+(imageTransform-&gt;Extension(lSqueezeUid, err));
+    // Check here whether the plugin supports this extension or not
+    // Set the max dest size in bytes    
+    lSqueezeExt-&gt; SetDestSizeInBytes(aMaxSizeInBytes);
+    // Perform the transformation
+    imageTransform-&gt;Transform(aStatus);
+    // CImageTransform::Transform() is an asynchronous function
+    // and the result of the transformation would be known in the
+    // RunL() function of the active object associated with the aStatus
+
+</codeblock> <p>The example code below show how the JPEG squeeze image is
+used to make an image fulfill the MMS ‘Image Rich’ class constraints, i.e.
+file size less than 100k bytes and image size no more than 640*480 pixels. </p> <codeblock id="GUID-C04CB828-3307-5079-91CD-BEA7A15F0215" xml:space="preserve">
+
+    // Create the image transform
+    CImageTransform* imageTransform = CImageTransform::NewL(iFs);
+    CleanupStack::PushL(imageTransform);
+    // Setup the image transform
+    imageTransform-&gt;SetSourceFilenameL(aSrcFileName);
+    imageTransform-&gt;SetDestFilenameL(aDestFileName);
+    imageTransform-&gt;SetTransformationsL(CImageTransform::ESqueeze);
+    imageTransform-&gt;SetupL();
+    // Get the extension plugin supporting squeeze
+    TUid lSqueezeUid = {KUidSqueezeTransformExtension    };
+    TInt err = KErrNone;
+    CSqueezeTransformExtension * lSqueezeExt = static_cast&lt; CSqueezeTransformExtension*&gt;
+(imageTransform-&gt;Extension(lSqueezeUid, err));
+    TInt res = KErrNone;
+    TInt newSize = 0;
+    TAdvancedSqueezeParams info ;
+
+    // MMS Image Rich
+    info.iMaxDestSizeInBytes = 100000;
+    info.iMaxImageSize.iWidth = 640;
+    info.iMaxImageSize.iHeight = 480;
+    info.iMinImageSize. iWidth = 160;
+    info.iMinImageSize. iHeight = 120;
+    info.iResizeAction = EAutoResizeActionPrioritizeLargeImageSize;
+    info.iMinEncodingQuality = 0.5f;
+    info.iSamplingUid = KUidSamplingColor420;
+    lSqueezeExt-&gt;SetAdvancedSqueezeModeL(&amp;info);
+    // Perform the transformation
+    imageTransform-&gt;Transform(aStatus);
+    // CImageTransform::Transform() is an asynchronous function
+    // and the result of the transformation would be known in the
+    // RunL() function of the active object associated with the aStatus
+
+</codeblock> </section>
+
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8E7CCFD7-F820-596E-BACB-AE43878C6CD8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8E7CCFD7-F820-596E-BACB-AE43878C6CD8"><title>final</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This command allows extension makefiles to be used to carry out any commands required to complete the build.</p> <p><codeph>abld</codeph> [ test ] <codeph>final</codeph>  <codeph> [-k] [-v] </codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>The command has no effect for makefiles generated by <filepath>makmake</filepath>. It is provided only for extension makefiles.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e318126_href.png has changed
Binary file Symbian3/SDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e205603_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8EAB97D5-267A-58CC-BC3E-5CB1D72CB7ED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8EAB97D5-267A-58CC-BC3E-5CB1D72CB7ED" xml:lang="en"><title>Non
+pre-emptive servicing</title><shortdesc>This document describes how requests to active objects are serviced
+non pre-emptively.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The UI server frameworks spend most of their time waiting for some event
+to occur, and then spend a <i>short</i> time executing a <codeph>RunL()</codeph> function
+to service that event. When one event has been serviced, processing returns
+to the wait loop in the active scheduler allowing other events to be serviced.</p>
+<p>If a second request completes while the <codeph>RunL()</codeph> function
+is handling completion of the first request, then another call to <codeph>RunL()</codeph> to
+handle completion of the second request cannot be scheduled until the first
+invocation of <codeph>RunL()</codeph> is complete.</p>
+<p>This means that active object scheduling is non pre-emptive.</p>
+<p>Active objects are queued from the active scheduler in order of priority.
+The priority is usually determined at the time that the active object is constructed,
+although it can be changed later.</p>
+<p>If several requests complete while a <codeph>RunL()</codeph> function is
+handling the completion of earlier request, the active scheduler takes the
+first active object (i.e. the one with the highest priority) with a completed
+request and calls its <codeph>RunL()</codeph> function.</p>
+<p>As scheduling is non pre-emptive, a high-priority request cannot be serviced
+until the previously running request’s <codeph>RunL()</codeph> has completed.</p>
+<section id="GUID-55AEDDD4-72FB-4865-90AF-D4F9C5B47582"><title>Recommendations for active object priority</title> <p>Most
+active objects should have a priority of <codeph>TPriority::EPriorityStandard</codeph> and
+processing should not depend on the order in which active objects are scheduled.</p> <p>However,
+any active object involved in user input should have a higher priority over
+other active objects to ensure responsiveness and to allow user control over
+a device.</p> <p>Long running and background services should have a low priority.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8EAF5A96-EB48-4A58-82D7-0583A22A51D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-8EAF5A96-EB48-4A58-82D7-0583A22A51D0" xml:lang="en"><title>Information
+pop-up</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Information pop-up notes are used to provide additional information to
+the user, most typically regarding a focused item. Although the Information
+pop-up can be used in various applications and components, it should not be
+used too frequently as constantly appearing and disappearing notes may disturb
+smooth user experience.</p>
+<p>The Information pop-up does not have focus, its content cannot be scrolled,
+and the control always remains in the main pane. The maximum number of rows
+in the Information pop-up is four. In a typical case, the pop-up emerges one
+second after the user has taken the focus on an item but has not made any
+further actions. The pop-up is timed so that it (typically) remains visible
+for ten seconds or until some event interrupts it. Timeouts are application-specific
+and variation is possible.</p>
+<fig id="GUID-F7BBCA95-5754-44C1-9CCF-3A5B837E98B5">
+<title>Information pop-up related to the focused day</title>
+<image href="GUID-3405FD7F-6AE8-430A-914D-72DCC2D7829D_d0e61646_href.png" scale="33" placement="inline"></image>
+</fig>
+<section><title>Using information pop-ups
+in C++ applications</title><p>The API to use for the information pop-up is
+the Info
+popup API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e288487_href.png has changed
Binary file Symbian3/SDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e133724_href.png has changed
Binary file Symbian3/SDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e318241_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-8F04D882-B846-4A0D-B858-15FDA85758FA" xml:lang="en"><title>Displaying
+commands in a context menu </title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>To use a stylus pop-up menu in your application, implement the following
+use cases: </p>
+<ul>
+<li><p><xref href="GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita">Creating stylus
+pop-up menu</xref> </p></li>
+<li><p><xref href="GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita">Handling stylus
+pop-up menu events and commands</xref></p></li>
+<li><p><xref href="GUID-2045A3D6-88DB-41ED-905B-079A8DC35E24.dita">Handling user
+command selection</xref></p></li>
+<li><p><xref href="GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita">Showing and
+hiding stylus pop-up menu</xref></p></li>
+<li><p><xref href="GUID-7B863846-7666-4FBF-90B2-52F847710C45.dita">Adding and removing
+menu items</xref></p></li>
+</ul>
+<p><draft-comment translate="no" time="2008-05-15T13:43">We need to provide more clarity
+on the required order of implementing the use cases and clarify whether there
+are alternative approaches for achieving the same results.</draft-comment></p>
+<p>The following use cases are optional, allowing you to set additional properties
+for your stylus pop-up menu: </p>
+<ul>
+<li><p><xref href="GUID-D932955F-30AA-40C7-9653-63E48C38BECB.dita">Setting stylus
+pop-up menu position</xref></p></li>
+<li><p><xref href="GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita">Hiding and showing
+stylus pop-up menu items</xref></p></li>
+</ul>
+<section><title>Implementation file</title><p>The implementation file for
+the Stylus pop-up menu API is aknstyluspopupmenu.h.</p></section>
+</conbody><related-links>
+<link href="GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita"><linktext>Stylus pop-up
+menu API description</linktext></link>
+<link href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita"><linktext>Look and
+feel guidelines for the stylus pop-up menu</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8F1567B4-6957-5B93-9499-35489AD610F5" xml:lang="en"><title>Chunks</title><shortdesc>Chunks map RAM or memory-mapped I/O devices into contiguous virtual
+addresses.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> A chunk consists of a <i>reserved</i> region and a <i>committed</i> region.
+The reserved region is the contiguous set of virtual addresses accessible
+to running code. The committed region is the region in which RAM (or memory-mapped
+I/O) is actually mapped. The size of a chunk is dynamically alterable, allowing
+the committed region to vary in size from zero up to the reserved region size,
+in integer multiples of the processor page size. This allows processes to
+obtain more memory on demand. Generally the committed region starts at the
+bottom of the reserved region. </p>
+<p>A chunk also has a maximum size, which is defined when the chunk is created.
+The reserved region can be smaller than this maximum size, but it can also
+be made bigger by reallocating it. The reserved region cannot be made bigger
+than the maximum size. </p>
+<p>The size of the reserved region of a chunk is always an integer multiple
+of the virtual address range of a single entry in the processor page directory
+(PDE size). This means that the reserved region of a chunk is mapped by a
+number of consecutive page directory entries (PDEs). Any given PDE maps part
+of the reserved region of at most one chunk. </p>
+<p>Symbian platform has a number of chunk types, but for user side code, the
+chunks of interest are <i>User chunks</i> and <i>Shared chunks</i>. </p>
+<p>A chunk is a kernel side entity, and like all other kernel side entities,
+it is accessed from the user side using a handle, an instance of the <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita"><apiname>RChunk</apiname></xref> class.
+The concept of <i>local</i> and <i>global</i> also applies to chunks. </p>
+<ul>
+<li id="GUID-8F4C6D46-8A0D-582F-9CA3-B6E256A32A04"><p> <xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita#GUID-8F1567B4-6957-5B93-9499-35489AD610F5/GUID-F16E4C51-975B-58D6-808B-A865389AEF08">User chunks</xref>  </p> </li>
+<li id="GUID-FF713424-EAAA-576A-8559-5DC69FCE92DB"><p> <xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita#GUID-8F1567B4-6957-5B93-9499-35489AD610F5/GUID-FD985769-32EB-5A8C-97E8-A3D2D89BBC33">Shared chunks</xref>  </p> </li>
+<li id="GUID-DE72ABC0-787D-5CB9-90B8-E5B9CA230105"><p> <xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita#GUID-8F1567B4-6957-5B93-9499-35489AD610F5/GUID-8E371955-C475-5980-A04F-B33EAADE1B1B">Local and global chunks</xref>  </p> </li>
+</ul>
+<section id="GUID-F16E4C51-975B-58D6-808B-A865389AEF08"><title>User chunks</title> <p>On
+systems with an MMU, Symbian platform provides three types of user chunks.
+Each type is characterised by having a different subset of the reserved address
+range containing committed memory: </p> <ul>
+<li id="GUID-7466E379-0AEE-5302-B553-D2983612B0E7"><p> <xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita#GUID-8F1567B4-6957-5B93-9499-35489AD610F5/GUID-F0DB5A9F-EB24-5D2B-B2A8-90EEE2A2C33F">Normal chunks</xref>  </p> </li>
+<li id="GUID-12C654CE-8608-55AB-A8F9-D261E5286521"><p> <xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita#GUID-8F1567B4-6957-5B93-9499-35489AD610F5/GUID-0FB877CD-C4E1-5253-AFBC-563E3C715A44">Double-ended chunks</xref> </p> </li>
+<li id="GUID-26A7095A-36D4-508A-A2EB-6525540B5C3F"><p> <xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita#GUID-8F1567B4-6957-5B93-9499-35489AD610F5/GUID-230B66B1-7FD8-5944-9284-354C7564156B">Disconnected chunks</xref>  </p> </li>
+</ul> <p id="GUID-F0DB5A9F-EB24-5D2B-B2A8-90EEE2A2C33F"><b>Normal chunks</b> </p> <p>These
+chunks have a committed region consisting of a single contiguous range starting
+at the chunk's base address and a size that is a multiple of the MMU page
+size. The following diagram is an example of this kind of chunk: </p> <fig id="GUID-BD64E013-2750-5298-8C5A-8DAC9AB30E14">
+<title>Normal chunks</title>
+<image href="GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e215188_href.png" placement="inline"/>
+</fig> <p id="GUID-0FB877CD-C4E1-5253-AFBC-563E3C715A44"><b>Double-ended chunks</b> </p> <p>These
+chunks have a committed region consisting of a single contiguous range starting
+at arbitrary lower and upper endpoints within the reserved region. The only
+condition is that the lower and upper endpoints must be a multiple of the
+MMU page size. Both the bottom and top of the committed region can be altered
+dynamically. The following diagram shows an example of this kind of chunk: </p> <fig id="GUID-62D7BB5C-3BF1-5AA1-88A2-45D09D8684C9">
+<title>Double-ended chunks</title>
+<image href="GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e215204_href.png" placement="inline"/>
+</fig> <p id="GUID-230B66B1-7FD8-5944-9284-354C7564156B"><b>Disconnected chunks</b> </p> <p>These
+chunks have a committed region consisting of an arbitrary set of MMU pages
+within the reserved region. Each page-sized address range within the reserved
+region starting on a page boundary can be committed independently. The following
+diagram shows an example of this kind of chunk: </p> <fig id="GUID-13C9EED8-9C28-5289-A558-378DE49A0DAF">
+<title>Disconnected chunks</title>
+<image href="GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e215220_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-FD985769-32EB-5A8C-97E8-A3D2D89BBC33"><title>Shared chunks</title> <p>A
+shared chunk is a mechanism that allows kernel-side code to share memory buffers
+safely with user-side code. By kernel-side code, we usually mean device driver
+code. </p> <p>The main points to note about shared chunks are: </p> <ul>
+<li id="GUID-256C4B04-4B8E-5FDF-AF3B-703936BB2674"><p>They can only be created
+and destroyed by device drivers. It is typical behaviour for user-side code,
+which in this context we refer to as the client of the device driver, to pass
+a request to the device driver to open a handle to a shared chunk. This causes
+the device driver to open a handle to the chunk and return the handle <i>value</i> to
+the client. Successful handle creation also causes the chunk's memory to be
+mapped into the address space of the process to which the client's thread
+belongs. Note, however, that it is the driver that dictates exactly when the
+chunk itself is created, and when memory is committed. The precise protocol
+depends on the design of the driver; you need to refer to that driver's documentation
+for programming guidance. </p> </li>
+<li id="GUID-8FACA759-AE5C-5723-A01C-4E39B50B55C0"><p>Like all kernel side
+objects, a shared chunk is reference counted. This means that it remains in
+existence for as long as the reference count is greater than zero. Once all
+opened references to the shared chunk have been <i>closed</i>, regardless
+of whether the references are user-side, or kernel-side, then it is destroyed. </p> </li>
+<li id="GUID-FD61FB5B-E0E8-52B2-8DE0-1E9425B28C2F"><p>User-side code that
+has gained access to a shared chunk from one device driver can pass this to
+a second device driver. The second device driver must <i>open</i> the chunk
+before it can be used. </p> </li>
+<li id="GUID-989692D2-60C2-5B71-879F-6C4A9C7F348B"><p>More than one user side
+application can access the data in a shared chunk. A handle to a shared chunk
+can be passed from one process to another process using standard handle passing
+mechanisms. In practice, handles would be passed in a client-server context,
+either from client to server or from server to client using inter-process
+communication (IPC). </p> </li>
+<li id="GUID-20FF4363-CC7D-5CFB-863C-420A16362B21"><p>Processes that share
+data inside a chunk should communicate the location of that data as an offset
+from the start of the chunk, and <i>not</i> as an absolute address. The shared
+chunk may appear at different addresses within the address spaces of different
+user processes. </p> </li>
+</ul> </section>
+<section id="GUID-8E371955-C475-5980-A04F-B33EAADE1B1B"><title>Local and global
+chunks</title> <p><b>Local chunks </b> </p> <p>A chunk is local when it is private to the process
+creating it and is not intended for access by other user processes. </p> <p>A
+local chunk cannot be mapped into any other process and is, therefore, used
+for memory that does not need to be shared. </p> <p>A local chunk does not
+have a name. </p> <p><b>Global chunks </b> </p> <p>A chunk is global if it is intended to be accessed
+by other processes. </p> <p>Global chunks have names that can be used to identify
+the chunk to another process wishing to access it. A process can open a global
+chunk by name; this maps the chunk into that process's address space, allowing
+direct access and enabling the sharing of data between processes. </p> <p>If
+the name of the global chunk to be opened is known, use <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita#GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07/GUID-A6557BEE-D545-362E-AD00-A23DC64D5CEE"><apiname>RChunk::OpenGlobal()</apiname></xref>.
+If a part of the name is known, use the <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita#GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07/GUID-BE5915FF-4C43-30D8-A6E3-45C33973CD9D"><apiname>RChunk::Open()</apiname></xref> variant
+that takes a <xref href="GUID-DA41F070-0E54-3F8A-B301-39A0C6AFAB38.dita"><apiname>TFindChunk</apiname></xref>. </p> <p>A process can only access
+an unnamed global chunk if it is passed a handle to that chunk from another
+process. See <xref href="GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07.dita#GUID-326A2F4D-0E99-31C0-A35D-E8BF45913F07/GUID-BE5915FF-4C43-30D8-A6E3-45C33973CD9D"><apiname>RChunk::Open()</apiname></xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e375907_href.png has changed
Binary file Symbian3/SDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e303441_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04" xml:lang="en"><title>Communications
+Framework Guide</title><shortdesc>The Communications Framework is the base for all communications,
+network and telephony services that Symbian platform provides. The Communications
+Framework manages the communications threads and the flow of information between
+those threads. The Framework also manages and stores the communications related
+settings. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+
+</conbody><related-links>
+<link href="GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita"><linktext>Cellular
+Baseband Services      Guide</linktext></link>
+<link href="GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01.dita"><linktext>Networking
+Services Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8F2D8656-B7F4-4BDA-81CB-8440A2FDDD82.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-8F2D8656-B7F4-4BDA-81CB-8440A2FDDD82" xml:lang="en"><title>Dimming
+or hiding toolbar extension items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can dim or hide toolbar extension items if an extension item function
+is not available in certain cases.</p>
+<p>The example below shows how to set the extension button unavailable. In
+the example, the boolean parameter <codeph>aHide</codeph> indicates if the
+button should be hidden or dimmed.</p>
+<codeblock xml:space="preserve">void CMyAppView::SetExtensionButtonUnavailableL( TBool aHide )
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknToolbarExtension* toolbarExtension = toolbar-&gt;ToolbarExtension();
+        if ( toolbarExtension )
+            {
+            if ( aHide )
+                {
+                // To show the item again: 
+                // toolbar-&gt;HideItem( KExtensionButtonId, EFalse );
+                toolbarExtension-&gt;HideItemL( KExtensionButtonId, ETrue );
+                }
+            else
+                {
+                // To undim the item again:
+                // toolbar-&gt;SetItemDimmed( KExtensionButtonId, EFalse );
+                toolbarExtension-&gt;SetItemDimmed( KExtensionButtonId, ETrue );
+                }
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e170339_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8F6D6934-8FF0-5045-8AB1-74384BE792EA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8F6D6934-8FF0-5045-8AB1-74384BE792EA"><title>Retrieving Information about a Shared Memory Object</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use the <xref href="GUID-7A657C7B-0732-322C-8378-5230305EE59E.dita"><apiname>fstat()</apiname></xref> function to retrieve information about a shared memory object associated with a file descriptor. The <xref href="GUID-7A657C7B-0732-322C-8378-5230305EE59E.dita"><apiname>fstat()</apiname></xref> function retrieves only the following members associated with a shared memory from the structure <codeph>stat</codeph> declared in <filepath>&lt;sys/stat.h&gt;</filepath>: </p> <ul><li id="GUID-8458BD50-D542-59B0-93B5-2B7604D04D98"><p> <codeph> st_uid</codeph>  </p> </li> <li id="GUID-6E5438E5-4643-538D-9287-EB80525687AF"><p> <codeph> st_gid</codeph>  </p> </li> <li id="GUID-F91DAE1E-FBE6-5B0B-8B20-0970418FE24F"><p> <codeph>st_size</codeph>  </p> </li> <li id="GUID-42822FB5-C7F0-55A4-822C-A23BB6223100"><p> <codeph>st_mode</codeph>  </p> </li> </ul> <p>For more information about the members of the structure <codeph>stat</codeph>, see <xref scope="external" href="http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/stat.h.html">Open Group</xref>  </p> <p>Example: </p> <codeblock id="GUID-4AEA7CD0-3944-557D-A3D1-D802B318E5FC" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;sys/mman.h&gt;
+#include &lt;fcntl.h&gt;
+#include &lt;sys/stat.h&gt;
+#include &lt;errno.h&gt;
+int main(void)
+    {
+    int fd; //File descriptor
+    int ret;
+    struct stat buffer; //Stores the data associated with the members of the structure stat
+    if((fd = shm_open("page", O_RDWR|O_CREAT, 0666)) &lt; 0)
+        {
+        printf("Shared memory creation failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Shared memory creation was successful\n");
+        }
+    if((ret = fstat(fd,&amp;buffer) &lt; 0)
+        {
+        printf("fstat() on shared memory failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("fstat() on shared memory succeeded\n");
+        printf("mode = %d\n", buffer.st_mode);
+        printf("size = %d\n", buffer.st_size);
+        }
+    //Checks whether the shared memory mode is same as that of a regular file
+    if(S_ISREG(buffer.st_mode))
+        {
+        printf("Test passed");
+        }
+    else
+        {
+        printf("Test failed");
+        }
+    close(fd);//closing the file descriptor
+    if((ret = shm_unlink("page")) &lt; 0) 
+        {
+        printf("Shared memory unlinking failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Shared memory unlinking was successful\n");
+        }
+    return ret;
+    }</codeblock> </conbody><related-links><link href="GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita"><linktext>Librt Overview</linktext> </link> <link href="GUID-BE70DCBF-366A-5054-B0F1-7FCEF45FC735.dita"><linktext>Creating and Unlinking a File
+                Descriptor from a Shared Memory</linktext> </link> <link href="GUID-A4ECB450-02DA-5E85-91AC-4C8BDE0B9B58.dita"><linktext>Writing, Reading and Seeking from a
+                Shared Memory</linktext> </link> <link href="GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita"><linktext>Clocks and Timers Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8FC2BA94-2374-5BFE-B4CF-624A6B0056BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-8FC2BA94-2374-5BFE-B4CF-624A6B0056BC"><title>Call Waiting Status Tutorial</title><shortdesc>This tutorial describes how to get the call waiting status information with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-E24D656A-701E-5B29-B189-06304C4C7DE5"> <step id="GUID-4CDC8306-6814-5E5F-835A-694D1849A746"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-C37BEE6E-CB6F-50ED-81F1-4523E2312A6C"><cmd/><info>call<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname> CTelephony::GetCallWaitingStatus()</apiname></xref> to get the call waiting information </info> </step> <step id="GUID-020F7560-2DC2-59E1-B685-579A33235C56"><cmd/><info>you can cancel the asynchronous request with a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetCallWaitingStatusCancel</apiname></xref> enumeration. </info> </step> </steps> <example id="GUID-F3885187-FB33-5490-87C5-184138F7E4B3"><title>Call waiting status example</title> <codeblock id="GUID-05F9F0DE-5D96-55F8-B1B9-A9CE858CF5B7" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallWaitingSupplServicesV1 iCallWaitingSupplServicesV1;
+    CTelephony::TCallWaitingSupplServicesV1Pckg iCallWaitingSupplServicesV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallWaitingSupplServicesV1Pckg(iCallWaitingSupplServicesV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetCallWaitingStatus(iStatus, iCallWaitingSupplServicesV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       CTelephony::TSupplServiceStatus callWaitingStatus = iCallWaitingSupplServicesV1.iCallWaiting;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetCallWaitingStatusCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8FDCABBB-AD6D-513D-9FBF-631DC1846D20.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8FDCABBB-AD6D-513D-9FBF-631DC1846D20"><title>How to Associate Data with an Alarm</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>As part of flexible alarm functionality users may wish to associate data with an alarm. For example, when an alarm expires the Alarm Control can display an image, play a sound/video file or open a URL. The class <xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref> holds in memory 8-bit data of any type, or a link to 8-bit data such as a URL. </p> <p>To set up data associated with an alarm: </p> <ol id="GUID-3E86B9B9-95CF-5112-B5DA-5F8F201F7FC6"><li id="GUID-C5771F4B-BA6C-5BE8-A87C-2E1210EB537D"><p>Create a calendar entry such as an appointment or reminder: <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita#GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801/GUID-AAFDB9B2-260A-3CB4-BD6E-058A04FEC327"><apiname>CCalEntry::NewL()</apiname></xref>. </p> </li> <li id="GUID-0A33163C-1C39-5F6E-B0EB-3DE7B4E3DE08"><p>Use <xref href="GUID-211D3640-9862-3F78-98FC-9793578117A9.dita#GUID-211D3640-9862-3F78-98FC-9793578117A9/GUID-77A0F5D8-364A-34C9-BF51-AAAE2A0E92F4"><apiname>CCalAlarm::NewL()</apiname></xref> to create a calendar alarm containing expiry time details. It is optional to set user-defined sound when adding extra data. The following combinations are: </p> <ul><li id="GUID-24FF19EC-E103-581F-A575-E15DFCBF926B"><p>No user-defined sound and <xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref>  </p> </li> <li id="GUID-A739BB2C-6094-5AAC-B350-FAD97E4A5474"><p>User-defined sound and <xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref>  </p> </li> <li id="GUID-11C78A05-98C6-5EF8-99B9-75024005917C"><p>User-defined sound and no <xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref>  </p> </li> </ul> </li> <li id="GUID-6E5B9A2C-E4C1-50E6-83E3-4091416FF22B"><p>Create the arbitrary data (<xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref>) to be played or displayed when the alarm expires. Two kinds of data may be added to an alarm. They are a URL and raw data (also known as inline data). Because it is recommended to use the smallest possible amounts of data to add to an alarm it is usually best to add files as URLs. Thus, an image file can be added simply as the URL of its address. </p> <p>The following code sample shows how to add a URL to an alarm: </p> <codeblock id="GUID-0D5AB6AF-1284-5A04-8DBC-0DEF0ACCDA0C" xml:space="preserve"> CCalContent* content = CCalContent::NewL();
+ CleanupStack::PushL(content);
+ . . .
+ HBufC8* urlContentBuf = _L8("rtsp://radio.network.co.uk").AllocLC()
+ HBufC8* mimetype = KMimeType("http").AllocLC();
+    content-&gt;SetContentL(urlContentBuf, urlTypeBuf, CCalContent::EDispositionUrl);
+    CleanupStack::Pop(urlContentBuf); // SetContentL takes ownership
+    CleanupStack::Pop(urlTypeBuf);    //
+    alarm-&gt;SetAlarmAction(content); //takes ownership
+    CleanupStack::Pop(content);
+    . . .</codeblock> </li> <li id="GUID-93ACF59E-61EB-5306-9444-00FC3EBF1769"><p>Add the alarm to the entry using: </p> <codeblock id="GUID-DED01561-9750-5010-81EA-87D4C27A1B6A" xml:space="preserve">entry-&gt;SetAlarmL(alarm);</codeblock> <p>The entry does not take ownership of the alarm. </p> </li> <li id="GUID-DB8C4145-5687-5281-A942-5F9012A748DF"><p>Store the entry in the calendar database using <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita"><apiname>CCalEntryView</apiname></xref>. </p> </li> </ol> <section><title>Data Retrieval</title> <p>To retrieve data from an expired alarm the associated Calendar entry must be found, as well as the Calendar entry's alarm and data. </p> <p>The last entry ID and the recurrence ID can be used to find the unique entry in the calendar databse. To get the alarm data once the proper entry has been found <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita#GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801/GUID-CBF85531-8FBE-3BA1-AB0B-F780653C5ABF"><apiname>CCalEntry::Alarm()</apiname></xref> can be used. This returns a <xref href="GUID-211D3640-9862-3F78-98FC-9793578117A9.dita"><apiname>CCalAlarm</apiname></xref> object from which the <xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref> can be retrieved using the method <xref href="GUID-211D3640-9862-3F78-98FC-9793578117A9.dita#GUID-211D3640-9862-3F78-98FC-9793578117A9/GUID-B7EB9319-E22D-3C6B-9E3A-F7A0841E6DC8"><apiname>CCalAlarm::AlarmAction()</apiname></xref>. This returns a <xref href="GUID-A4B96729-C74A-3E0A-9906-2CDED08574AC.dita"><apiname>CCalContent</apiname></xref> object. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA"><title>-no_debug</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option does not generate symbolic debug information for release or debug builds. </p> <p>The option instructs the <codeph>makmake</codeph> tool to not generate the symbolic debug information for <codeph>UREL</codeph> or <codeph>UDEB</codeph> variants. It supports only ARM ABI compliant platforms. </p> <p>Note that the option is applicable to the <codeph>build</codeph> and <codeph>makefile</codeph> commands only. </p> <p>Also note that this option cannot be used with the <xref href="GUID-7971886A-8ED0-5924-9BC0-A163BA499888.dita">-debug</xref> option. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e62981_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F"><title>Accessing and Power Control of Camera</title><shortdesc>This tutorial describes how to access camera and control its power settings using Ecam APIs: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The purpose of the tutorial is to explain you how to use Ecam APIs to access and control power settings of a camera on a phone. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard Camera Overview</xref> introduces the camera utilities. </p> <p>Camera is implemented as Ecom plug-ins, the Ecom plug-in implements <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> interface defined in <filepath>ECam.h</filepath>. When you need to create a new camera object, the Ecam library requests a camera plug-in from the ECOM framework. </p> <p><b>Introduction</b> </p> <p>Ecam is a component of the Symbian platform Multimedia subsystem that represents the Onboard Camera API. Licensees may provide customised implementation for snapshots, histogram and image processing depending on the camera mode in which it is operated. </p> </section> <section><title>Using Camera </title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-1CE9E3AF-96C6-59E6-8242-798055D4FAFE"><p><xref href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita#GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F/GUID-4000B2F3-A948-5C35-AE2A-804CEF1EAA8E">Accessing the Camera</xref>  </p> <p> </p> </li> <li id="GUID-8A0C2A5D-AD79-55B3-AFEF-8EB20A6E10FF"><p><xref href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita#GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F/GUID-8A587F65-EDFB-5609-BE96-4869047F3E71">Power Control</xref>  </p> </li> </ul> <p id="GUID-4000B2F3-A948-5C35-AE2A-804CEF1EAA8E"><b>Accessing the Camera</b> </p> <p>The high level steps to access specific camera connected to the device are shown here: </p> <ol id="GUID-087EC84C-8EAC-5BF1-B5D7-00CDA28941B3"><li id="GUID-8FF5D72F-1719-5D2C-B301-69E547CBB391"><p>Make sure that you configure the initial settings and use <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-AE298F30-D55B-3812-95A8-8BAE319C2FB6"><apiname>CCamera::CamerasAvailable()</apiname></xref> method to get the number of cameras available for usage. </p> <codeblock id="GUID-2C77F771-E42B-5E94-B6BB-C46DA34F4671" xml:space="preserve">TInt numCameras = CCamera::CamerasAvailable();
+if (numCameras &lt;= 0)
+    {
+    INFO_PRINTF2(_L("Error %d returned"), numCameras);
+    return EFail;
+    }
+INFO_PRINTF2(_L("Available cameras  %d returned"), numCameras);
+return EPass;
+</codeblock> </li> <li id="GUID-6BB8429D-3580-53A6-BD6B-797CF7F63BB1"><p>Create a new camera object using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-9EAAE04E-9C9B-357A-B73E-55574E7CA02D"><apiname>CCamera::New2L()</apiname></xref> API. </p> <codeblock id="GUID-4B290B75-289E-58F6-BCB9-D6C618C417D4" xml:space="preserve">CCamera* camera = NULL;
+MCameraObserver2* observer2L; //exists beforehand
+
+camera = CCamera::New2L(*observer2, 0, 0);
+</codeblock> </li> <li id="GUID-CBF8CF4A-A558-5D81-B4A3-9FA55A22B52C"><p>Use <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-069D6532-4D43-3547-94BF-D0E5E6CDD78B"><apiname>Ccamera::NewDuplicate2L</apiname></xref>, if collaborative clients wants to share the same camera device. This makes sure that the client can receive unrecognised enum, UIDs and so on. </p> <p> <b>Note</b>: This is true if <xref href="GUID-94C66CB9-328A-3275-B5A9-198EC6D0DD30.dita"><apiname>New2L</apiname></xref> method instead of <xref href="GUID-E6F013A6-6413-3691-A70D-0289916ACD8A.dita"><apiname>NewL</apiname></xref> and <xref href="GUID-14200C39-1435-31B0-9768-363BD3D4331E.dita"><apiname>NewDuplicate2L</apiname></xref> method is instead of over <xref href="GUID-0DB8D81E-AEC1-364B-B404-996B35B449FD.dita"><apiname>NewDuplicateL</apiname></xref> method. </p> <codeblock id="GUID-A3E2D65F-B3A6-59DD-812E-5C940391CE1B" xml:space="preserve">CCamera* sharingCamera = NULL;
+sharingCamera = CCamera::NewDuplicate2L(*observer2, 0);</codeblock> </li> <li id="GUID-53C83699-8ACC-5F75-8F26-D6F21241DB7F"><p>Use <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-2B806D39-5C5C-357E-A4CC-240CE0C4D786"><apiname>CCamera::Reserve</apiname></xref>, an asynchronous method to gain exclusive access to a particular camera. </p> <p>Even if a camera object is created successfully based on specified camera index, the client cannot use it, if it is not reserved. </p> <ul><li id="GUID-E6677D62-D0C5-52A9-8A08-1DE41C79EA35"><p>The <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-2B806D39-5C5C-357E-A4CC-240CE0C4D786"><apiname>CCamera::Reserve</apiname></xref> call will be unsuccessful if a higher priority client is already using the camera and <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-1E3D825C-1924-3A1E-9B0F-1359504633E7"><apiname>MCameraObserver2::HandleEvent</apiname></xref> call back will return an error. </p> </li> <li id="GUID-C008313B-9AD6-5EFB-B01C-21D6ABF9EAB4"><p>Event UID <xref href="GUID-3D4AC57E-B975-3F91-A1FC-13AC526AD4A6.dita"><apiname>KUidECamEventCameraNoLongerReserved</apiname></xref> notifies that a high priority client has gained control over another client. </p> </li> </ul> </li> <li id="GUID-F8BE95D3-27CE-5323-9177-86B54F836C13"><p>Use <xref href="GUID-54A053B1-2B90-3A69-A6DD-B0A7A4B46BBA.dita"><apiname>HandleEvent()</apiname></xref> method to notify the client that the call is unsuccessful and the camera is not available. This can be due to completion of a call to <xref href="GUID-C318ACF6-1959-3BF4-9698-B7F0E228528E.dita"><apiname>Reserve()</apiname></xref>, a call to <xref href="GUID-97444FAF-67EB-3648-B4AA-22AFE912F68A.dita"><apiname>PowerOn()</apiname></xref> or a notification that the client has lost control of the camera. </p> <p>This provides a reference to a <xref href="GUID-2773C25B-19DF-38B0-84F7-CABC89F43DD2.dita"><apiname>TECAMEvent</apiname></xref> with uid <xref href="GUID-81136EE6-71EF-3D84-AD1A-B74BD3DE674E.dita"><apiname>KUidECamEventReserveComplete</apiname></xref> and error as <xref href="GUID-6CA4F1ED-7947-3087-B618-D35858FAA3BC.dita"><apiname>KErrNone</apiname></xref>. </p> <codeblock id="GUID-9A58EC65-5065-51FF-BFFA-2C32B6208545" xml:space="preserve">    void HandleEvent(const TECAMEvent&amp; aEvent); 
+void TDummyObserver::HandleEvent(const TECAMEvent&amp; /*aEvent*/)
+    {
+    return;
+    }</codeblock> </li> <li id="GUID-2E45D548-C1B0-51C7-9AF1-6113DBD5307F"><p>Use <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-635500E6-055A-36A0-8993-21BF2584A35C"><apiname>CCamera::Release()</apiname></xref> method to de-initialize and withdraw the client's access to the camera such that other clients might use it. </p> </li> </ol> <p> <b>Note</b>: Clients should not use the legacy call-back interface <xref href="GUID-F2DC0AB8-A896-3F7A-BBED-848A3F463853.dita"><apiname>MCameraObserver</apiname></xref> which is still supported. </p> <p id="GUID-8A587F65-EDFB-5609-BE96-4869047F3E71"><b>Power Control</b> </p> <p>The high level steps to control the power settings of the camera are shown here: </p> <ol id="GUID-45695F99-1C19-5D58-806C-1BF11DDDE704"><li id="GUID-33CA1CE5-72BE-58A4-AEDA-82570F448EB9"><p>Use <xref href="GUID-97444FAF-67EB-3648-B4AA-22AFE912F68A.dita"><apiname>PowerOn()</apiname></xref>, an asynchronous method, to switch on the camera, when the client gains exclusive access for the given camera. </p> <p>When power on is complete, client receives notification through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-1E3D825C-1924-3A1E-9B0F-1359504633E7"><apiname>MCameraObserver2::HandleEvent</apiname></xref> callback with uid <xref href="GUID-0683BF83-B8F7-3582-99D8-1448B8CEA92C.dita"><apiname>KUidECamEventPowerOnComplete</apiname></xref> and the appropriate error code. If the camera is not successfully reserved, <xref href="GUID-B6FDA0AB-750D-321C-BC7E-BEDE099006EB.dita"><apiname>PowerOn</apiname></xref> will fail. </p> </li> <li id="GUID-3FEDAA32-C41C-5201-80A1-32B41CC7ACA0"><p>The callback interface is notified when power on is complete via MCameraObserver2::HandleEvent() notification. The event used is KUidECamEventPowerOnComplete. </p> <codeblock id="GUID-7EF4B115-6C98-59AC-A280-683ED4FDAF23" xml:space="preserve">void CCamMyPlugin::PowerOn()
+    {
+    }</codeblock> </li> <li id="GUID-A669B86A-8878-5634-98BF-53B80E781833"><p>Once the processing is complete, use <xref href="GUID-816450E5-A395-3220-BEA0-1C1571CACD3F.dita"><apiname>PowerOff()</apiname></xref>, a synchronous method to switch off the camera power. </p> <codeblock id="GUID-9A062705-A90E-5B09-BC1F-07B49DC7F663" xml:space="preserve">void CCamMyPlugin::PowerOff()
+    {
+    }</codeblock> </li> </ol> </section> <section><title>Miscellaneous</title> <p>This section details miscellaneous camera access and control APIsl. </p> <p><b> Reserve Status Retrieval</b> </p> <p>Licensees need to implement <xref href="GUID-36BA124F-A7BE-3449-9C00-C2F2D4F15293.dita"><apiname>MSecureIdPlugin</apiname></xref> (<filepath>ecaminfoplugin.h)</filepath> to retrieve the secure ID of the process where serialized part of the ECam implementation runs, such as Ecam server. </p> <p>Clients can retrieve the reservation status of a particular camera prior to creating an instance of the <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita"><apiname>Ccamera</apiname></xref> class. This saves time, if the client is denied control to reserve the camera after creating an instance of the<xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita"><apiname>Ccamera</apiname></xref> class. Client needs to subscribe for receiving the reserve status by calling static method <xref href="GUID-AE32A954-5A26-367B-8F3F-99A19F93430A.dita#GUID-AE32A954-5A26-367B-8F3F-99A19F93430A/GUID-A56B25A1-B2F1-306E-952F-1FD0BA43B833"><apiname>TreservedInfo::SubscribeReserveInfoL()</apiname></xref> and this provides a reference to <xref href="GUID-104B8CDA-8F7E-3E41-BDE9-6EC5A9D7AA9C.dita"><apiname>CcameraStatusWatch</apiname></xref>. </p> <p>Symbian must provide implementation of <xref href="GUID-6C0DAE0A-F64C-3AE0-9F53-63E767E79E9B.dita"><apiname>CCameraStatusWatch</apiname></xref> class. Clients can use this to asynchronously receive the reserve status of a camera index through <xref href="GUID-FFC680A5-8BE5-355C-816E-F3B0625AC5CF.dita"><apiname>MReserveObserver</apiname></xref>. Client must implement <xref href="GUID-FFC680A5-8BE5-355C-816E-F3B0625AC5CF.dita"><apiname>MReserveObserver</apiname></xref> to handle the notifications of Reserve status and take appropriate steps accordingly. <b>Note</b>: If the client needs to unsubscribe, it must make sure to delete the <xref href="GUID-104B8CDA-8F7E-3E41-BDE9-6EC5A9D7AA9C.dita"><apiname>CcameraStatusWatch</apiname></xref> object. </p> <p>Get the reserve status of the camera using <xref href="GUID-0F901FF4-4F24-317B-9B0A-4733E0612AAF.dita"><apiname>ReserveStatus</apiname></xref> API. This can be used, when a low priority client interrupts a high priority client in a phone supporting multiple cameras. </p> </section> </conbody><related-links><link href="GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita"><linktext>Camera Preset Support</linktext> </link> <link href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita"><linktext> Capturing Image</linktext> </link> <link href="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita"><linktext>Capturing Video</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e96205_href.png has changed
Binary file Symbian3/SDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e172684_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9057474B-1ADB-4761-879B-6A03B61E6E00.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9057474B-1ADB-4761-879B-6A03B61E6E00" xml:lang="en"><title><b>GLib
+Concepts</b></title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9058F379-C495-4B22-B270-FF6A80E450B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9058F379-C495-4B22-B270-FF6A80E450B8" xml:lang="en"><title>Device
+security mechanisms</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The list below contains some common device security mechanisms.</p>
+<section id="GUID-24AD1095-E039-46B5-A39A-1D814D697DA1"><title>Device protection</title>
+<p>The Symbian platform is not well equipped to protect against a physical
+attack (that is, when an attacker has physical access to the mobile device)
+because access to a device is controlled by the device lock feature, which
+is often not used. Other external methods of protection, like a PIN code or
+Subscriber Identity Module (SIM) locking, tend to provide protection only
+when accessing a cellular network, leaving the information content vulnerable.
+Without <xref href="GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05.dita">cryptographic
+protection</xref>, it is possible to gain access to the device's information
+storage with hardware-based methods (for example, wiretapping connectors and
+direct reading of memory chips).</p>
+</section>
+<section id="GUID-BE16A5D1-B580-4ED6-82D7-16B33B8EEADF"><title>Device authentication</title>
+<p>Sometimes, for security reasons, an application needs to identify the
+mobile device it is running on, for example, to use specific ciphering keys
+or to apply copy protection. Identification can be done by checking the device's
+International Mobile Equipment Identity (IMEI) code, which is unique in each
+device used in cellular networks. To retrieve the IMEI code, you can use,
+for example the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/ETel_3rd_Party_API/CTelephonyClass.html#%3a%3aCTelephony%3a%3aGetPhoneId%28TRequestStatus%20%26amp%3b%2cTDes8%20%26amp%3b%29const" format="application/java-archive"><codeph>CTelephony::GetPhoneId</codeph></xref> method. For more information,
+ see <xref href="http://wiki.forum.nokia.com/index.php" scope="external">Retrieving
+Phone's Manufacturer, Model &amp; IMEI number in Symbian</xref> in the
+Forum Nokia Developer Community Wiki. There are different APIs for retrieving
+the IMEI code in different versions of SDKs. Refer to the SDK API or Symbian
+documentation for the proper method.</p>
+<p>Another way to get information about the running platform and the mobile
+device is to use the <codeph>HAL:Get()</codeph> method defined in <codeph>hal.h</codeph> header
+file. For more information and examples, see <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/61ae01cb-3c34-47f6-843e-485d4f56409b/S60_Platform_Identification_Codes.html" scope="external">S60 Platform: Identification Codes</xref> on Forum Nokia.</p>
+<p><b>User authentication</b></p>
+<p>When powering on the device, the user is authenticated in the <i>operating
+system level</i> with standard device authentication methods, such as a PIN
+code and security code requests. However, these features can be turned off
+by the user and are easily reset with special hardware. If an application
+needs to authenticate the user, it should be done in the <i>application level</i> by
+implementing a separate user name/password authentication mechanism.</p>
+</section>
+<section id="GUID-962E0183-0CBD-457D-B24C-C0BDB30A58A4"><title>Mobile hardware</title>
+<p>The Symbian platform attempts to ensure the integrity of data even in
+the presence of unreliable communication and a shortage of resources, such
+as memory, power, and storage.</p>
+<p>The user may detach removable storage media at any time, either intentionally
+or unintentionally. The platform has a built-in detach handling mechanism,
+but applications should still be prepared for a sudden loss of storage media
+to prevent data loss or corruption. To check the type of storage media (removable/fixed),
+use the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/F32_EKA2/RFsClass.html#%3a%3aRFs%3a%3aDrive%28%29" format="application/java-archive"><codeph>RFs::Drive()</codeph></xref> method. </p>
+<p>The device may shut down at any time, either by accident or because
+the battery runs out. Important data stored in nonpermanent memory should
+be written to permanent memory as early as possible. To query the battery
+level, use the <codeph>HAL::Get(EPowerBatteryStatus)</codeph> method. For
+information on how to retrieve system information, see <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/1bd6bf54-7886-43a5-8335-821bcb603049/S60_Platform_System_Information_Example_v2_0_en.zip.html" scope="external">S60 Platform: System Information Example</xref> on Forum Nokia.</p>
+<p>Even though internal storage is not physically protected, you can secure
+memory cards with password protection. If the locking option is used (method <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/F32_EKA2/RFsClass.html#%3a%3aRFs%3a%3aLockDrive%28%29" format="application/java-archive"><codeph>RFs::LockDrive</codeph></xref>), memory card contents are protected
+with a password and cannot be read in any other device without it. Password
+locking is an extended functionality of the Multimedia card (MMC), and may
+not be compatible with all hardware and software configurations.</p>
+</section>
+<section id="GUID-9058F379-C495-4B22-B270-FF6A80E450B9"><title>Third-party solutions</title>
+<p>A mobile device can be protected with third-party security applications. <i>Antivirus
+software</i> can detect and quarantine any viruses that try to access the
+device, as well as restore infected files. Antivirus software is usually used
+together with <i>firewalls</i> to observe and protect both incoming and outgoing
+data connections. This enables monitoring of important data and prevents it
+from being sent out of the device. Firewall and antivirus software can also
+be part of an <i>intrusion detection system</i> that notifies the user whenever
+a malicious attempt is detected.</p>
+<p>Furthermore, there are applications you can use to encrypt existing
+files, manage passwords, and store information and data securely (in vaults).
+You can even cipher information in applications and connection methods which
+do not initially support ciphering (for example, short message service [SMS]).</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D" xml:lang="en"><title>Font
+and Text Services Collection Overview</title><shortdesc>A font is a set of characters of matching size (height) and appearance.
+In order to be displayed each character must ultimately be drawn as a series
+of pixels (a bitmap). Symbian can store fonts in bitmap or vector form. A
+vector font (for example, an OpenType font) must be converted to bitmaps (or
+rasterized) before it can be drawn. Symbian caches and shares bitmaps for
+performance and memory efficiency. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-DB17AE5F-54E9-5288-89DB-7A38473D9C94"><p> <b>Application developers</b> can
+use Font and Text Services for selecting fonts for displaying text according
+to various criteria (size and typeface). </p> </li>
+<li id="GUID-ECFA8635-D278-5A1F-A8E8-8BADB73FE092"><p> <b> Device creators</b> can
+add fonts and font rasterizers. Fonts can be included in the ROM or installed
+on user drives. </p> </li>
+</ul>
+<section id="GUID-9F33DD34-F5E5-5EA0-8559-7A933D230129"><title>Concepts and
+terms</title> <dl>
+<dlentry>
+<dt>Points, twips and pixels</dt>
+<dd><p>Points (1/72th inch) and twips (a twentieth of a point) are absolute
+measurements of distance and specify device-independent size. Pixel sizes
+are only relevant for a specific graphics device. Each graphics device (screen
+or printer) must provide a mechanism for converting between pixels and twips. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Font</dt>
+<dd><p>A named set of characters of matching size (height) and <b>font style</b> (normal,
+bold, italic, underline). <b>Times Roman 14 point bold</b> is an example of
+a font. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Typeface</dt>
+<dd><p>A group of fonts with similar appearance. The typeface does not include
+the size or font style. <b>Times</b> is an example of a typeface. Typefaces
+are sometimes referred to as <b>font families</b>. </p> <p>Typefaces are grouped
+generically as mono-spaced, variable width, serif, sans-serif and symbol.
+This allows the grouping of typefaces that have similar characteristics, so
+that an alternative font can be selected when an exact match is not found.
+This means that applications can display text relatively accurately when a
+specific font is not available. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>OpenType font </dt>
+<dd><p>A font that is stored as vector data, which can be rasterized to any
+pixel size. OpenType fonts are sometimes simply called <b>open fonts</b>.
+An open font can only be used with a corresponding font rasterizer. The <xref href="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita">Font and Bitmap Server</xref> caches
+rasterized fonts into bitmap form. </p> <p>OpenType is an open source vector
+font format, which is similar to TrueType. Like TrueType fonts, OpenType fonts
+can contain font hinting information. However the font rasterizer's use of
+the font hinting information in OpenType fonts is restricted by a software
+patent. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Character</dt>
+<dd><p>A single element (such as a letter, number, ligature, symbol or punctuation
+mark) of written language. Each character has a unique number (its <xref href="http://www.unicode.org/standard/WhatIsUnicode.html" scope="external">Unicode</xref> code point). </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Glyph</dt>
+<dd><p>A graphical representation of a character in a specific font. The mapping
+between a character and a glyph is not always direct. For example, a character
+may be represented by different glyphs, depending on the context. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Font metrics</dt>
+<dd><p>Measurements (such as maximum height) that are common to all of the
+characters in a font. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Character metrics</dt>
+<dd><p>Measurements (such as character width) that apply to an individual
+character within a font. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Bitmap font</dt>
+<dd><p>A font stored as bitmap glyphs. The size of a font is described in
+pixels. However, the actual size is dependent on the pixel size of the graphics
+device. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Rasterizing</dt>
+<dd><p>The process of converting drawing instructions into bitmap data. Fonts
+provided in vector form (OpenType fonts) must be rasterized into fixed size
+fonts before they can be used. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Linked font</dt>
+<dd><p>A virtual font or typeface created from characters from other fonts.
+The component fonts must be open fonts or other linked fonts. Linked fonts
+are typically used where a preferred font does not contain all of the characters
+in the character set. One of the typefaces in a linked font must be designated
+as the principal typeface from which any unspecified default metrics or characters
+are used. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Contextual shaping</dt>
+<dd><p>In some scripts some characters are drawn differently depending on
+the adjacent characters. This means that different glyphs are used to represent
+a particular character in different contexts. Contextual shaping is the selection
+of the appropriate glyph from several glyphs that represent a particular character
+depending on the context. </p> <p>In Latin scripts, contextual shaping is
+normally used only when simulating handwriting. For example, the glyph used
+for the letter <b>p</b> might depend on whether the letter is at the start,
+middle or end of a word, as shown in the following diagram. For example, when
+it is in the middle of the word, it might have a "tail" on both sides to join
+it to the letters that appear before and after. </p> <fig id="GUID-30A9DA99-E1C5-5EE5-AEB3-0BCD6DB0A692">
+<title>                   Figure 1: Handwriting simulation might use different
+glyphs for                   the letter p depending on its position in a word
+                 </title>
+<image href="GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e375907_href.png" placement="inline"/>
+</fig> <p>Contextual shaping is an essential feature of some scripts, including
+Arabic and many Indian and East Asian scripts, such as Devanagari, Kannada,
+Telugu, Tamil, Bengali, Malayalam and Gurmukhi. For this reason, support for
+contextual shaping is sometimes referred to as <b>Brahmic support</b>. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Text shaper</dt>
+<dd><p>A plug-in that performs the contextual shaping for scripts that require
+this feature. Text shapers are font and language specific. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>System font</dt>
+<dd><p>A default font that is used when no font is specified. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architectural relationships</title> <p>The Font and Text Services
+components are closely integrated with the Font and Bitmap Server, GDI, BitGDI
+and Window Server components in the <xref href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita">Graphics
+package</xref>. Font size is only meaningful in the context of the current
+graphics device and its pixel size. Open fonts must be rasterized in the context
+of the current graphics device. The diagram below shows how BitGDI implements
+Graphics Devices and Contexts. </p> <fig id="GUID-36165480-E5BC-50F3-B205-5668EA7F0306">
+<title>              Figure 2: The Graphics Device and Context Architecture.
+           </title>
+<desc><p>Note that the names of the BitGDI classes begin with <codeph>CFbs</codeph>. </p> </desc>
+<image href="GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e375965_href.png" placement="inline"/>
+</fig> <p>Applications access font services through the <xref href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita">Font
+and Bitmap Server (FBSERV)</xref> which caches font bitmaps in a shared heap.
+The Font and Bitmap Server ensures that there is only ever a single instance
+of a particular glyph bitmap in memory. However, eXecute In Place (XIP) ROM-based
+bitmaps (including fonts) are used in place and are not copied into the heap. </p> <p>Use
+of the Font and Bitmap Server is transparent to clients of the Window Server.
+The Window Server client session (<xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref>) automatically
+creates an <xref href="GUID-E5B29AC0-4953-385F-84C5-13EE6CB77D46.dita"><apiname>RFbsSession</apiname></xref> and stores it in thread local storage
+(TLS). The Font and Bitmap Server provides two client-side classes for fonts: <xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname>CFbsFont</apiname></xref> and <xref href="GUID-5E287BF6-08C1-36A2-9085-F6B61CC52550.dita"><apiname>CFbsTypefaceStore</apiname></xref>. These find and use the session in TLS automatically. Clients of the Window
+Server are therefore automatically clients of the Font and Bitmap Server and
+need perform no explicit session management. </p> <p>Classes representing
+fonts, such as <xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname>CFbsFont</apiname></xref> (on the client side) and <xref href="GUID-25D4B920-6158-3014-8E7D-4E1C5267C5EF.dita"><apiname>CBitmapFont</apiname></xref> (on
+the server side), are derived from the abstract class <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref>. </p> <p>The <xref href="GUID-B798C19D-4030-564A-A208-D84738259D72.dita">Font Store</xref> lives in
+the <xref href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita">Font and Bitmap
+Server</xref> and contains all of the fonts on the device and the font rasterizers
+required to render them. The Font Store loads font files when the phone starts
+up. It scans all of the drives on the device so that new fonts can be installed
+from user drives. Font files can be loaded by the Font Store while the phone
+is running. However, font rasterizers can only be installed by restarting
+the phone. If a new font requires a font rasterizer to be installed, the phone
+must be restarted before the font can be used. </p> <p>Open font rasterizers
+are implemented as ECOM plug-ins. An open font file (represented by <xref href="GUID-FC62EDD7-A3F7-3611-A899-CA5F17BB2EEE.dita"><apiname>COpenFontFile</apiname></xref>)
+can contain one or more open fonts in proprietary vector format. A corresponding
+font rasterizer plug-in (<xref href="GUID-CA16238D-478A-302A-9671-97B62B0E738A.dita"><apiname>COpenFontRasterizer</apiname></xref>) must convert
+the vector data into bitmaps that the Font and Bitmap Server can cache and
+access using the <xref href="GUID-25D4B920-6158-3014-8E7D-4E1C5267C5EF.dita"><apiname>CBitmapFont</apiname></xref> and <xref href="GUID-039375D3-AFD9-3E31-9C1C-ACEDC10E27CE.dita"><apiname>COpenFont</apiname></xref> APIs.
+Applications use rasterized open fonts by using <xref href="GUID-DE966D8B-6E00-39B6-B136-6CF29EA384D3.dita"><apiname>CFbsFont</apiname></xref> in
+exactly the same way as native bitmap fonts. The open font framework means
+that Symbian can support any font in any format. There is a performance impact
+associated with open fonts, however, as they must be rasterized. </p> <p>Text
+shapers (<xref href="GUID-FF3DFCCC-DCFE-3DD9-B497-B96C46B4FDD1.dita"><apiname>CShaper</apiname></xref>) are used for contextual scripts, which
+require their glyphs to be modified according to the adjacent characters.
+Text shapers are font and language specific. </p> </section>
+<section><title>Components</title> <p>The Font and Text Services collection
+is made up of the following components: </p> <ul>
+<li id="GUID-0C4363B1-4340-5638-8A59-ECDF2AFFA088"><p><xref href="GUID-B798C19D-4030-564A-A208-D84738259D72.dita">Font
+Store</xref>. This manages font matching, ownership and rasterizing. </p> </li>
+<li id="GUID-AAE1BCA4-B9B4-5AD1-AC79-3308F231FCE7"><p> <xref href="GUID-75C5A614-CEC1-5832-ACEA-E3C31B8A0DE8.dita">FreeType
+Font Rasterizer</xref>. This open source plug-in rasterizes OpenType fonts.
+More information can be found at <xref href="http://www.freetype.org/" scope="external">www.freetype.org</xref>.
+This rasterizer is normally loaded by default. </p> </li>
+<li id="GUID-7EB97752-0F44-5625-8474-FDCF64654AE6"><p><xref href="GUID-DB453F9B-55B6-50C7-984D-7154F1E84AE6.dita">ICU
+Layout Engine Component</xref>. A plug-in that performs contextual shaping
+for specific scripts that require this feature. When a function, such as <xref href="GUID-4A501086-7EFF-376D-8901-6D9B2EB4EFF2.dita#GUID-4A501086-7EFF-376D-8901-6D9B2EB4EFF2/GUID-176B0A61-867E-35A6-AE53-0BABA48741D9"><apiname>CFbsBitGc::DrawText()</apiname></xref> draws
+text in one of these scripts, internally a text shaper is used to convert
+the string of characters into the appropriate series of glyphs. </p> </li>
+<li id="GUID-DED869DB-C45B-51A6-B594-BA1321BC272B"><p><xref href="GUID-F4C53728-B54B-5680-82FC-9A365B45F4B5.dita">Reference
+Fonts</xref>. This provides a collection of reference font files including
+bitmap and OpenType fonts. By default the Symbian platform supports the DejaVu
+OpenType typeface (which includes variable-width, monospaced, serif and sans
+serif fonts) and legacy Calculator and Agenda symbols (which are bitmap fonts). </p> </li>
+</ul> <p> <i>Note</i>: The <xref href="GUID-771AC6EC-348D-5535-9D91-5A0232BB9576.dita"> iType
+Font Rasterizer</xref> is an OpenType font rasterizer from MonoType Imaging®.
+This provides additional features compared to the FreeType font rasterizer,
+such as four color blending, which is required for outline and shadow fonts.
+This component is not provided by the Symbian Foundation because it belongs
+to Monotype. However, the Symbian platform has test cases for the four color
+blending that the iType Font Rasterizer provides. These test cases can be
+used by device creators who obtain this font rasterizer from MonoType. </p> </section>
+</conbody><related-links>
+<link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext>Font and
+Bitmap Server Component Overview </linktext></link>
+<link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext> Font Store
+Component Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834-master.png has changed
Binary file Symbian3/SDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e386628_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-90DF40EF-7D3F-551D-9957-A3756317A254"><title>OCSP Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Online Certificate Status Protocol (OCSP) is an internet protocol that determines whether a given <xref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita">certificate</xref> or a list of certificates has been revoked, and therefore, determines whether the certificate can be trusted. The protocol is defined in <xref scope="external" href="http://www.ietf.org/rfc/rfc2560.txt">RFC2560</xref>. </p> <p>In the Symbian platform, <xref href="GUID-0AED3485-D498-57F1-9532-116EA5C8F68B.dita">Secure Software Install (SWI)</xref> uses OCSP to verify whether a certificate associated with an application to be installed has been revoked. For details of how SWI uses OCSP revocation check, see <xref href="GUID-C893C9E6-47B8-5149-9808-0274C61CF3D7.dita">OCSP SWI Integration</xref>. </p> <section><title>OCSP request and response</title> <p>OCSP primarily consists of two parts: a request and a response, each specified in the Abstract Syntax Notation One - Distinguished Encoding Rules (<xref scope="external" href="http://tools.ietf.org/html/rfc4792">ASN.1</xref> -DER) format. A client application that wants to get information on the revocation status of a certificate, forms an OCSP request and sends this to an OCSP server. In its simplest form, an OCSP request consists of one or more identifiers for the certificates whose status is in question. The request is sent to the OCSP server identified by a Uniform Resource Identifier (URI). The URI is specified either in the Authority Information Access (AIA) extension of the certificate whose revocation status is to be checked, or as a global URI with the OCSP client. AIA is defined in <xref scope="external" href="http://www.ietf.org/rfc/rfc2459.txt">RFC2459</xref>. </p> <p>The OCSP server maintains information about the revocation of certificates. The server replies to the client with a signed OCSP response, mentioning the revocation status for each certificate. A response being signed with a key pair is trusted as authoritative by the client. Alternatively, a server can also return an error code as response (refer to <xref scope="external" href="http://www.ietf.org/rfc/rfc2560.txt">RFC2560</xref> for details of the various OCSP errors). OCSP is transport-neutral with the URI of the server indicating the required transport mechanism. Currently, only Hypertext Transfer Protocol (HTTP) is supported. </p> <p>The client, in turn, verifies whether the response is valid and is from a trusted entity. </p> </section> <section><title>OCSP client-server interaction</title> <p>The server to which the request for revocation check is sent may not actually be the server which is authoritative to answer the request, but may act as a proxy to the destination server. For information on the server to which the request actually gets routed, the client includes a <i>serviceLocator</i> extension (containing the URI) in the OCSP request. </p> <p>There may be a <i>serviceLocator</i> extension for each certificate in the request. Therefore, it is syntactically possible for the request to be split into multiple parts, with each part routed to a different OCSP responder (the server that actually responds to the OCSP request). The intermediate server collates the individual responses into one and returns this to the client. This response is signed only by the intermediate server. In such a situation, the client must trust this intermediate server. </p> <p>Three scenarios are associated with the routing of OCSP requests to the appropriate responder through intermediate servers. They are as follows: </p> <ul><li id="GUID-CD8AAEA0-AA94-58EA-978F-3C2E21A2FE9F"><p> <b>Single OCSP responder</b>  </p> <p>One OCSP server contains the revocation information for all the certificates to be checked. One request containing all the certificates is sent to the responder (in this case, the OCSP server), which replies with a single response. The following figure illustrates the interaction between the OCSP client and a single destination responder. </p> <fig id="GUID-11F6D229-29D0-510A-AB8A-64A906DC00F7"><image href="GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e367004_href.png" placement="inline"/></fig> </li> <li id="GUID-185C0C91-CC3F-5198-8EAB-BB1BF748A3D0"><p> <b>Multiple OCSP responders using an intermediate OCSP server</b>  </p> <p>Multiple OCSP responders use an intermediate OCSP server to route requests to the appropriate destination responders. One request is sent to the intermediate server, which sends multiple individual requests to the destination responders. The responses are collated, and one response is sent back to the client. The following figure shows the interaction between an OCSP client and multiple destination responders by using an intermediate responder. </p> <fig id="GUID-964E18AA-E4F7-5A71-A2F3-19F3007C24C6"><image href="GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e367018_href.png" placement="inline"/></fig> </li> <li id="GUID-F092252F-79EF-58E2-A596-77D3FC07CC54"><p> <b>Multiple OCSP responders without an intermediate server</b>  </p> <p>The client does the work of sending each request to the appropriate responder. The client collates the responses received. The following figure shows the interaction between the client and multiple destination responders. </p> <fig id="GUID-223A3DB6-538E-5A4E-946C-87AA03449857"><image href="GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e367032_href.png" placement="inline"/></fig> </li> </ul> <p>The choice of the correct method of interaction between the client and the responders depends on the nature of the Public Key Infrastructure (PKI) and the availability of OCSP responders for routing requests as intermediates. </p> </section> <section><title>Revocation check results</title> <p>If the response sent by the OCSP server passes all the validation, the application that sends the OCSP request determines the outcome by applying the following rules to the certificate statuses in the response: </p> <ul><li id="GUID-124E3CDE-7F74-5960-A92C-98B101644036"><p>If any certificate is revoked, the result is <b>Revoked</b>  </p> </li> <li id="GUID-C0AF0A69-28C4-528B-9E14-1AAF13CEA497"><p>If all certificates are valid, the result is <b>Good</b>  </p> </li> <li id="GUID-7BA5DACD-19B1-55CC-9378-28F4A47AAE12"><p>Otherwise, the result is <b>Unknown</b>. </p> </li> </ul> <p> <b>Note:</b> A certificate status of <b>Good</b> does not indicate that the certificate may be trusted. It merely indicates that the certificate has not been revoked. The normal validation of that certificate (or the <xref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita">certificate chain</xref> in which it lies) must still be performed. </p> </section> </conbody><related-links><link href="GUID-C893C9E6-47B8-5149-9808-0274C61CF3D7.dita"><linktext>OCSP SWI Integration</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9102DB10-3B93-4E79-9125-25791CEEBEFB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9102DB10-3B93-4E79-9125-25791CEEBEFB" xml:lang="en"><title>Sensors
+Framework</title><shortdesc>Sensors Framework provides a framework for creating plug-ins and
+connecting client applications with the sensor hardware.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-910780A3-D6AB-5EE2-966A-5F228AC5804F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-910780A3-D6AB-5EE2-966A-5F228AC5804F" xml:lang="en"><title>Feature
+Manager Notification Tutorials</title><shortdesc>This document introduces tutorials on the use of Feature Manager
+to request, handle and cancel feature notification. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-9B52156C-6031-53C3-ACC2-4389E98C078A"><p>You can request
+notification of changes to a feature on a phone. These tutorials describe
+how to make a notification request, handle it and cancel it. </p> </context>
+</taskbody><related-links>
+<link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+Overview</linktext></link>
+<link href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita"><linktext>Feature Manager
+Guide</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-91082AAB-DC8D-5AEA-A6C1-DD89932244FB" xml:lang="en"><title>Terminate
+a Call Tutorial </title><shortdesc>This tutorial describes how to terminate a call with the telephony
+API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The procedure for terminating incoming calls is the same whether
+there is a second call in progress or not. When you have two calls in progress,
+one will always be <b>active</b> while the other will always be <b>on hold</b>.
+You can either:<ul>
+<li><p>terminate an <b>on-hold</b> call and then you will be left with an
+active call</p></li>
+<li><p>terminate an <b>active</b> call and then you will be left with a call
+on hold; the on-hold call does <b>not</b> become active. You can make it active
+with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-EFF39B1C-4685-3E79-93B3-5D0FB5AFAD02"><apiname>CTelephony::Resume()</apiname></xref></p></li>
+</ul></p></context>
+
+<steps id="GUID-BEA74BFB-57B5-5542-87EC-6665695B8557">
+<step id="GUID-2B9D7115-E851-52A4-BD2E-A43351BEF456"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-DEAFC2E4-C540-5274-B7D6-711C9A33ED14"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::Hangup()</apiname></xref> terminates
+a call. </info>
+<info>Pass it the ID of the call to terminate. The ID is the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallId</apiname></xref> returned
+when you dialled or answered the call </info>
+</step>
+<step id="GUID-D7C8BE37-8AC8-5A61-963C-CAB33C347251"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EHangupCancel</apiname></xref> to
+cancel it </info>
+<info>Use <codeph>CTelephony::Hangup()</codeph> to terminate either call when
+you have two call in progress. Pass it the ID of the call you wish to terminate.
+To terminate them both, call the method twice with the two IDs.</info>
+</step>
+</steps>
+<example id="GUID-180B550B-0A93-5445-B6AC-2CA8D3D17528"><title>Call termination
+example</title> <codeblock id="GUID-DC840EA0-D367-5773-9716-090B313F0E0D" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallId;
+
+public:
+    CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallId(aCallId)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;Hangup(iStatus, iCallId);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The call has been terminted successfully;
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EHangupCancel);
+    }</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-42B10CBF-D45A-580F-A639-E2495FF3B4F3.dita"><linktext>Remote Call
+                Termination Tutorial</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-911CD800-2D1B-5D7B-A67C-66E01F91062C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-911CD800-2D1B-5D7B-A67C-66E01F91062C" xml:lang="en"><title>Heaps</title><shortdesc>The main thread of a process has a memory chunk that contains the
+thread's heap. A program's request for memory is allocated from this heap.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Each thread has a chunk which contains that thread's program stack. For
+the main thread of a process, this chunk also contains the thread's heap.
+A program's request for memory is allocated from this heap. For example, a
+code fragment such as: </p>
+<codeblock id="GUID-ED3A8BC9-7601-5035-B422-ED80E5504867" xml:space="preserve">CArrayFixFlat&lt;...&gt;* fixflat;
+...
+fixflat = new (ELeave) CArrayFixFlat&lt;...&gt;(3);</codeblock>
+<p>causes a portion of memory to be allocated from the heap and its address
+returned to the caller. Memory from the heap must be explicitly requested
+and, importantly, explicitly freed by the program. </p>
+<p>If a process creates additional threads, then a new chunk is created for
+each new thread. Each chunk contains the thread's stack; if a new thread is
+not sharing an existing heap, then the chunk also contains a new heap. </p>
+<p>When a new thread is created, either: </p>
+<ul>
+<li id="GUID-C915A4D8-70D9-55B4-A16F-9729B1F8D94B"><p>a new heap is created
+for it </p> </li>
+<li id="GUID-E72B8DF5-CB52-5333-9D3E-EFDBAFE6CB59"><p>it uses the creating
+thread's heap </p> </li>
+<li id="GUID-20C6F186-6EF6-511E-9291-3273CA930B5D"><p>it uses an explicitly
+referenced heap. </p> </li>
+</ul>
+<p>A thread gets the handle to its heap by calling <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-42AC433D-1C9C-3AC6-8640-EB1A7BA876B5"><apiname>User::Heap()</apiname></xref>. </p>
+<p>See <xref href="GUID-D557CC2C-C045-5818-B2F7-9BD8BC39257D.dita">Address Space
+and Process</xref> for more background on chunks and heaps.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780" xml:lang="en"><title>Certificates</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A certificate binds a public key to a certain individual/entity. This is
+usually done using digital signatures: if a certificate bearing a public key
+and an individual's name is signed with a key pair which you already trust,
+then you can rest assure that the public key in the certificate really does
+belong to the individual named in the certificate. </p>
+<p>Different standards using Public Key Cryptography employ different models
+for using certificates to establish trust. Such a model, encompassing data
+structures, rules for their use, and users of them, may be referred to as
+a Public Key Infrastructure (PKI). SSL, TLS and S/MIME all use X.509 v.3 certificates,
+and a hierarchical PKI in which users are certified by Certification Authorities. </p>
+<p>All data which appear in the interface between the Symbian platform and
+the rest of the world need a transport encoding, and it is in this form that
+they are sent and received. The transport encoding for X.509 data structures
+is DER encoded ASN.1. </p>
+<p><b>Certification Authorities </b> </p>
+<p>Certification Authorities (CAs) are trusted third parties which perform
+the following functions in the PKIX public key infrastructure: </p>
+<ul>
+<li id="GUID-9C43CBBB-EB93-5C63-B594-7469DDE13DCA"><p>provide trusted 'root'
+certificates to users (End Entities), by supplying them with the CA's public
+key </p> </li>
+<li id="GUID-B6F5E212-0DAF-5D3B-B46A-D890815738FF"><p>certifying End Entities:
+checking that they are who they say they are, and generating certificates
+for them. The certified End Entity is the <b>subject</b> of the certificate:
+the CA is the <b>issuer</b>  </p> </li>
+<li id="GUID-D2C8D180-66D6-52CF-8F1F-F8CC43ED3E5C"><p>supporting certificate
+revocation and revocation checking: if an End Entity suspects that their key
+has been compromised, they contact the Certification Authority which issued
+it. CAs publish lists of revoked certificates (known as Certificate Revocation
+Lists) at regular intervals, which End Entities can use to check that certificates
+sent to them have not been revoked </p> </li>
+<li id="GUID-92E8639C-E89E-5663-9766-D677EE837D18"><p>publishing certificates:
+the most likely place for this is an LDAP directory, since X.509 certificates
+identify their subjects and issuers by describing a path through an X.500
+directory </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE_d0e240271_href.png has changed
Binary file Symbian3/SDK/Source/GUID-913E38E4-F227-4976-B7DB-42163D52907C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-913E38E4-F227-4976-B7DB-42163D52907C_d0e52681_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9142B2F6-8D93-5366-9B3A-4932D2C7988E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-9142B2F6-8D93-5366-9B3A-4932D2C7988E"><title>C++ API items</title><shortdesc>This topic lists the C++ API items of the Root Server API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section/> <table id="GUID-D7E3C6AF-5F31-5D7E-A209-DE49E48EBA91"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Item</entry> <entry>Header</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-CB35FDB6-33C2-3724-9BC7-4E8722D507A3.dita"><apiname>RRootServ</apiname></xref>  </p> </entry> <entry><p>c32root.h </p> </entry> </row> </tbody> </tgroup> </table> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-914DD950-4332-5F23-B725-F4D330DB19EB" xml:lang="en"><title>UID2
+and UID3 statements</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;uid2-statement&gt;
+uid2-statement ::= 
+UID2 &lt;uid-value&gt; &lt;uid3-statement&gt;
+uid3-statement ::= 
+UID3 &lt;uid-value&gt;</codeblock>
+<p>Defines the second (<codeph>UID2</codeph>) and third (<codeph>UID3</codeph>)
+UIDs for the resource file. The <varname>uid-value</varname> is a UID number
+(or macro representing such a number).</p>
+<p>At the start of a resource file, a UID triplet is stored. The first UID
+of a resource file is always <codeph>0x101f4a6b</codeph>. By default, the
+second UID is zero and the third UID is the resource file’s “offset”, i.e.
+the twenty-bit integer generated from the resource file’s name. The defaults
+can be overriden using these statements (or from a <codeph>START         RESOURCE</codeph> statement
+in an mmp file).</p>
+<p>Some clients of resource files read the UID values (see <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita#GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA/GUID-142C2031-3101-34E0-8A16-5410123C8D18"><apiname>RResourceFile::UidType()</apiname></xref>)
+to test that a resource file is of a suitable type. In many other cases, the
+reader of the resource file does not use the UID values, so there is no need
+to use the <codeph>UID2/UID3</codeph> statements.</p>
+<example><codeblock id="GUID-8B72E4F7-DD19-5BF7-A170-53388CF6BBF1" xml:space="preserve">UID2 KUidAppRegistrationResourceFile
+UID3 0x10001234</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7"><title>ARMV7 build target</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <codeph>ARMV7</codeph> build target builds for the <codeph>ARMV7</codeph> architecture that supports Thumb-2 instruction set. For details on ARMV7 architecture, refer to <xref scope="external" href="http://www.arm.com/products/CPUs/architecture.html">http://www.arm.com/products/CPUs/architecture.html</xref>. To build for ARMV7, ARM's RealView Compilation Tools (RVCT) v3.1 or later is required. </p> <section><title>Building binaries for ARMV7</title> <p>To build binaries for <codeph>ARMV7</codeph> with <filepath>abld</filepath>, use: </p> <p><userinput>abld build ARMV7 [udeb | urel]</userinput> </p> <p>Binaries are generated in the <filepath>udeb</filepath> and <filepath>urel</filepath> sub-directories of the <filepath>epoc32\release\ARMV7\</filepath> directory for ABI v2. </p> <p> <b>Note:</b> Code is not built for <codeph>ARMV7</codeph> target by default. It has to be explicitly specified on the command line or in the <filepath>BLD.INF</filepath> file using the <codeph>prj_platforms</codeph> statement. </p> </section> </conbody><related-links><link href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita"><linktext>ARMV5 build
+                targets</linktext> </link> <link href="GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita"><linktext>ARMV6 build targets</linktext> </link> <link href="GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita"><linktext>GCCE build targets</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9169062F-3B6D-544C-847C-BA859DAB33B9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9169062F-3B6D-544C-847C-BA859DAB33B9" xml:lang="en"><title>Sessions
+and requests</title><shortdesc>Describes communication between the client and the server in the
+client-server framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Communication between client and server is represented by a <i>session</i>;
+this is initiated by the client. A client thread may have several sessions
+with a server. A session can also be shared by all the client threads in a
+process, if supported by the server, and also by all threads across all processes,
+again if supported by the server. </p>
+<p>Sessions are maintained by the Kernel and the important points are: </p>
+<ul>
+<li id="GUID-C8D3B5F7-6BCE-5AB2-A11D-F0436F8CE20C"><p>The client has an <codeph>RSessionBase</codeph> handle
+to the session. </p> </li>
+<li id="GUID-80F84FC0-AA11-5C5E-A067-A23D6069DE00"><p>The server uses a <codeph>CSession2</codeph> -derived
+class to represent the session. </p> </li>
+<li id="GUID-B6405FDE-1ECB-543E-BA11-6280A5CD8DF8"><p>A session may be sharable
+between the threads in the client process, between all threads across all
+processes, or it can be restricted to the thread connecting to the server. </p> </li>
+</ul>
+<p>If a call to the client interface requires a service from the server, the
+client interface must set up and send a message. The message has a 32-bit
+operation code to identify the request, and up to four 32-bit parameters.
+The message is encapsulated within a <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object. The
+process can be summarised as follows: </p>
+<ul>
+<li id="GUID-2810FEA1-D51E-534E-963C-425D9A3B09C0"><p>The client sends the
+message to the server using <codeph>RSessionBase::SendReceive()</codeph>.
+This call eventually returns with the completion code. </p> </li>
+<li id="GUID-785468D3-7D69-5A2C-818D-5961DCCB7FCA"><p>The Kernel packages
+the operation code and parameters and delivers an <codeph>RMessage2</codeph> to
+the server. </p> </li>
+<li id="GUID-7BF7D799-7999-51C8-BEBF-88822703F113"><p>The server delivers
+the message to the appropriate <codeph>CSession2</codeph> object, which deals
+with the request. The request is handled by <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita#GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51/GUID-B37413F7-D8FD-35AD-A037-99023D7CE986"><apiname>CSession2::ServiceL()</apiname></xref>.
+This is defined as pure virtual in <codeph>CSession2</codeph>, and is implemented
+by the class derived from <codeph>CSession2</codeph>. When the session has
+finished dealing with the request, it calls <codeph>RMessage2::Complete()</codeph> to
+indicate that the service has been performed and to return a 32-bit result
+to the client - this is returned from the <codeph>SendReceive()</codeph>. </p> </li>
+</ul>
+<p>The client-server framework also supports the sending of requests asynchronously
+to the server. </p>
+<p>The following diagram illustrates this: </p>
+<fig id="GUID-97810C53-3BF6-5ECF-B413-86EEE99E68DA">
+<image href="GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e211993_href.png" placement="inline"/>
+<p>Sending messages asynchronously to the server</p>
+</fig>
+<p>A server can support multiple connections from a client in a number of
+distinct ways: </p>
+<ul>
+<li id="GUID-DFBDEB83-48DE-5A94-A07B-B9BA1715FDE7"><p>The client may have
+a number of concurrent sessions with a particular server. </p> </li>
+<li id="GUID-C382BBE4-A94B-593E-9C9E-1E2E4DA60587"><p>Each session is independent
+of any other within the client thread; <codeph>Connect()</codeph> must be
+called to initialise each new connection. </p> </li>
+<li id="GUID-343295A2-AAE6-51AA-AFCF-5CD3CD39A510"><p>The client may create
+a number of <i>subsessions</i> within a single session. </p> </li>
+<li id="GUID-7228AA13-B73F-5996-8535-0C959B7C7788"><p>Each <i>client subsession </i> corresponds
+to a <i>subsession object</i> in the server. The client subsession contains
+a handle to this subsession object. All communication is via the owning session;
+the handle is used to match up corresponding client subsessions and subsession
+objects. </p> </li>
+<li id="GUID-8D01708B-CCC3-5B6C-9C26-4A4BE26A3D0C"><p>Subsessions use fewer
+Kernel resources than sessions, although they are slightly more complex to
+use. </p> </li>
+</ul>
+<p>A server can support the creation of sharable sessions allowing either
+all the threads in a client process to share a single session, or allowing
+all threads across all processes to share a single session. The important
+points are: </p>
+<ul>
+<li id="GUID-81929E38-1251-51C9-A3B0-CD82AD519D82"><p>The server must support
+the sharing of sessions. </p> </li>
+<li id="GUID-AE8DF750-FABF-55CE-A633-41E96A50413B"><p>The connecting thread
+can make the session sharable after creation, or it can create the session
+as sharable. </p> </li>
+<li id="GUID-E1962030-B977-5A90-AC3C-5419C2FAAF68"><p>Up to 255 threads can
+be concurrently attached to a session. </p> </li>
+</ul>
+<section id="GUID-8C971096-BD4A-408A-AF20-15810FAB9D4C"><title>See also</title> <p> <xref href="GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita">Subsessions
+within a session</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF"><title>How to build feature-based variants</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A feature-based variant defines features to which a DLL is sensitive. To build a DLL for a variant configuration of ARMV5, perform the steps outlined below: </p> <ol id="GUID-1A5FE282-FB0A-55BC-956D-982C35CF4573"><li id="GUID-21B59041-10F8-5F4E-B17A-9059DF42510D"><p>Add the <xref href="GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita">FEATUREVARIANT</xref> keyword in the .<filepath>mmp</filepath> file to mark the DLL as a feature variant. </p> </li> <li id="GUID-92CFAF5C-9BCC-5B34-86D3-92AAC30E4EEB"><p>Create a <filepath>.var</filepath> file containing the configuration for the variant. For variant file syntax, refer to <xref href="GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita">variant configuration file syntax</xref>. </p> </li> <li id="GUID-2A3CB5E0-3B70-5C44-93B9-38875A7B8CBD"><p>Place the <filepath>.var</filepath> file in<filepath>
+             /epoc32/tools/variant/</filepath> <varname>variant_name</varname>.var . </p> </li> <li id="GUID-C870EBC3-478F-5A35-BD02-124D4AF38306"><p>Build the DLL for a variant using the <codeph>abld</codeph> command. </p> <p>For example: </p> <codeblock id="GUID-1653B38A-30B9-57A3-BAC8-EFCF89026F85" xml:space="preserve">abld build armv5.myvar</codeblock> </li> </ol> <p>The DLL is built and placed in the <filepath>/epoc32/release/armv5/urel</filepath> folder. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e128501_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-91874A4A-57A4-54F9-966C-7D65D3782220.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-91874A4A-57A4-54F9-966C-7D65D3782220" xml:lang="en"><title>(x,y)
+Co-ordinate System</title><shortdesc>The co-ordinate origin of a window is its top left corner. Positive
+co-ordinate values indicate positions to the right and down from the origin.
+Negative values are also valid, and indicate co-ordinates outside the window's
+extent. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target
+audience</b>: Application developers. </p>
+<p>Each window has a position, which is the position of its origin relative
+to its parent’s origin. If its parent is a window group, then its position
+is effectively relative to the top left corner of the screen or display device,
+because window groups do not have a size. </p>
+</conbody><related-links>
+<link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9189A3F5-3016-5AF5-9D84-4E066A62D8DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9189A3F5-3016-5AF5-9D84-4E066A62D8DD"><title>Password Support</title><shortdesc>The Window Server provides support for a password screen. This can be configured to request a password at various times, such as once a day or when the machine is switched on. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>In order to implement password protection, one window in the system is made the password window, by calling <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWindowBase::PasswordWindow()</apiname></xref>. A parameter passed to this function determines at which times the password is requested (once a day, machine switch-on, etc.). </p> <p>When an <keyword>on event</keyword> occurs, and a password window exists, the Window Server may or may not enter its <keyword>password mode</keyword>, depending on the parameter given to <codeph>RWindowBase::PasswordWindow()</codeph>. In password mode, it does the following: </p> <ul><li id="GUID-6F62C17E-26F3-5F50-92E4-099335B79E3E"><p>Makes the password window visible and moves it to the front of the screen. It does this by giving it <keyword>ordinal
+             position</keyword> 0 within its window group and setting its window group's <keyword>priority</keyword> to <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>KPasswordWindowGroupPriority</apiname></xref>. This means that no other windows or window groups can be moved in front of the password window. </p> </li> <li id="GUID-F2CB265A-3AA2-5E1E-8EFB-8CDD0A7BE575"><p>Disables capture keys from all other applications. </p> </li> <li id="GUID-A1B98E44-C934-5F42-B9F8-511F735C0ADA"><p>Sends an <codeph>EEventPassword</codeph> message to the window group owning the password window. The password window should then perform password handling appropriately. </p> </li> </ul> <p>The Window Server remains in password mode until the session that owns the password window calls <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWsSession::PasswordEntered()</apiname></xref>. </p> </conbody><related-links><link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server Client-Side Library
+                Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-91C4F00B-E241-57DC-8520-8C16A302C983"><title>Creating a Personal Area Network (PAN) </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>We are looking at a two device PAN in this tutorial. So if you want to run the example it must be installed on both devices. One device will initiate a connection and the other will listen for a connection. We will refer to the listener as D1 and the initiator as D2 when necessary. </p> <p><b>Using the Tutorial </b> </p> <p>The code fragments in this tutorial are derived from the Bluetooth Example application available in <filepath>/src/COMMON/DEVELOPERLIBRARY/examples/Bluetooth/BTExample1</filepath>. Although the code has been reformatted to the requirements of the tutorial there is always enough information included with the code to find the actual example code. </p> <p><b>Intended Audience: </b> </p> <p>This tutorial is designed for Symbian licensees only. Several APIs mentioned ad used throughout this tutorial series are only available in a device creators kit environment. </p> <p><b>Basic procedure: </b> </p> <p>The high level steps to create a PAN are: </p> <ul><li id="GUID-72B7C882-CF40-5A36-A9DF-9282433F42E3"><p>Configure the Pan services extension table and the LAN services table in CommDB. </p> </li> <li id="GUID-8A972D2A-0093-59C6-9051-31B5C68BE785"><p>Load the Bluetooth Stack </p> </li> <li id="GUID-A574A7D0-7E53-5270-A912-31CD9BA31165"><p>Start the PAN connection </p> </li> </ul> <section><title>Configuring CommDB PAN IAP</title> <p>The PAN IAP (<codeph>PANServiceExtensions</codeph> table) will need to be configured for both devices. D1 will need to start a PAN listening connection. D2 will look for a listening device (D1) and connect to that device. </p> <p>To configure CommDB tables for PAN do the following: </p> <ol id="GUID-E4455A56-4DF3-5B28-B181-4B4D804BBCD0"><li id="GUID-657F3E7E-18BE-5D70-B19B-026F821D3E1B"><p>Open CommDB. </p> <codeblock id="GUID-2F0F9D67-416C-59E6-8E66-7A9A47543387" xml:space="preserve">CCommsDatabase* db = CCommsDatabase::NewL();
+CleanupStack::PushL(db);</codeblock> </li> <li id="GUID-6D26A97B-290F-5C4F-B5A4-3435BA9E55F5"><p>Open a view on the <codeph>PANServiceExtensionsTable1</codeph> table. </p> <codeblock id="GUID-4C3A2F04-4F43-5A5C-B826-843794DEA4A3" xml:space="preserve">CCommsDbTableView* tableView =
+db-&gt;OpenTableLC(TPtrC(PAN_SERVICE_EXTENSIONS));
+TBuf&lt;KMaxBufferSize&gt; tableName;
+tableView-&gt;GotoFirstRecord();
+tableView-&gt;ReadTextL(TPtrC(COMMDB_NAME), tableName);</codeblock> <p>Check that we are looking at the correct table. </p> <codeblock id="GUID-C8DB29FE-E08E-5C99-BAE1-C5FD5D5C31C1" xml:space="preserve">if(tableName == TPtrC(_S("PANServiceExtensionsTable1")))</codeblock> <p>The above simply ensures that the table name is what was expected. </p> </li> <li id="GUID-D3729BF0-D099-54C3-A3DF-2E60185B150B"><p>Open the table for editing. </p> <codeblock id="GUID-39F9B0B6-4800-574F-A81B-194B99B2418D" xml:space="preserve">User::LeaveIfError(tableView-&gt;UpdateRecord());</codeblock> </li> <li id="GUID-FE0CE957-3F36-5F2C-8D02-C6A7D020E9CC"><p>Set the device to listen for incoming PAN connection requests if necessary. </p> <codeblock id="GUID-C0C051FD-CC78-5CAD-8F11-32918A62EA07" xml:space="preserve">tableView-&gt;WriteBoolL(TPtrC(PAN_ALLOW_INCOMING),aIsListening);</codeblock> <p>The value of <codeph>aIsListening</codeph> is <codeph>ETrue</codeph> for D1, the listening device. </p> </li> <li id="GUID-8877DB52-0D09-51B7-A70F-9A38C671C6C5"><p>Decide if the device will prompt for remote devices. </p> <codeblock id="GUID-8ED99FED-419C-595B-A255-8B6305ABA1D7" xml:space="preserve">tableView-&gt;WriteBoolL(TPtrC(PAN_PROMPT_FOR_REMOTE_DEVICES),aUsePANNotifier);</codeblock> <p>The value of <codeph>aUsePANNotifier</codeph> is <codeph>EFalse</codeph> when you do not want the user to be prompted for a device. As with step 4 above this is the configuration for D1, the listening device, which will be accepting incoming connections instead of seeking other devices. </p> </li> <li id="GUID-B158348B-A10A-5221-A092-2E76B6C31CF7"><p>Set the PeerMacAddress to the Bluetooth device address of the device joining the PAN if known or to <codeph>NULL</codeph> if not known. </p> <p>D2 will prompt for a Bluetooth device address (<codeph>aDevAddr</codeph>) when making the connection. So if <codeph>aDevAddr</codeph> exists then the device is trying to initiate a PAN with D1, the listening device. The Peer Mac Address of the listener will be returned by the notifier (see "Finding the Bluetooth Device Address") and added to the CommDB table as shown. </p> <codeblock id="GUID-952DBDCE-CBCB-5179-9500-2BD7530A5334" xml:space="preserve">if(aDevAddr)
+{
+ TBuf&lt;KMaxBufferSize&gt; buf;
+ aDevAddr-&gt;GetReadable(buf);
+ tableView-&gt;WriteTextL(TPtrC(PAN_PEER_MAC_ADDRESSES), buf);
+}</codeblock> <p>D1 is the listener and so will not need a Bluetooth device address when creating the listening connection. </p> <codeblock id="GUID-5C8FFBDD-B575-51B9-8685-051CB7C47F05" xml:space="preserve">else
+{
+ tableView-&gt;WriteTextL(TPtrC(PAN_PEER_MAC_ADDRESSES), _L(""));
+}</codeblock> </li> <li id="GUID-EEFDAB7B-184F-50B9-907B-2EB255BE21FF"><p>Commit the CommDB <codeph>PANServiceExtensionsTable</codeph> changes. </p> <codeblock id="GUID-8AC18999-8FF4-5720-915F-8A1C8D5BB7D2" xml:space="preserve">User::LeaveIfError(tableView-&gt;PutRecordChanges());// Finish update
+User::LeaveIfError(db-&gt;CommitTransaction());
+}</codeblock> </li> </ol> <p>The code above comes from <codeph>CPanConnections::ConfigureIAPL()</codeph> in "<filepath>exampleroot/src/panconnection.cpp</filepath> ". </p> <codeblock id="GUID-CFDC191E-24DA-502B-9A19-AF27101AEA41" xml:space="preserve">ConfigureIAPL(TBool aIsListening,TBTDevAddr* aDevAddr,TBool aUsePANNotifier)
+{</codeblock> <p>The function is called when a connection is started. This function is called with three values: aIsListening, aDevAddr, and aUsePANNotifier. </p> <table id="GUID-974413E6-6D10-506F-B8AB-55BCB29F40A0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Attribute</entry> <entry>Value</entry> </row> </thead> <tbody><row><entry><p> <codeph>aIsListening</codeph>  </p> </entry> <entry><p>when called from <codeph>CPanConnections::StartConnection()</codeph>: </p> <ul><li id="GUID-6DCBB16D-FD7E-5479-A4DD-87E7B4B5497D"><p> <codeph>ETrue</codeph> if the device is listening for an incoming connection. </p> </li> <li id="GUID-7FACD95C-C658-5088-A294-C39B2C1C6513"><p> <codeph>EFalse</codeph> if the device is not listening for an incoming connection. </p> </li> </ul> </entry> </row> <row><entry><p> <codeph>aDevAddr</codeph>  </p> </entry> <entry><p>The Bluetooth device address. </p> </entry> </row> <row><entry><p> <codeph>aUsePANNotifier</codeph>  </p> </entry> <entry><p>when called from <codeph>CActiveConsole::ProcessKeyPressL()</codeph>: </p> <ul><li id="GUID-509E8AC0-CF79-58BD-B4B9-D70E9C6509F4"><p> <codeph>ETrue</codeph> if the PAN notifier is needed. </p> </li> <li id="GUID-5BE885F8-2BEB-5AE9-9423-9D1D7BA66997"><p> <codeph>EFalse</codeph> if the PAN notifier is not needed. </p> </li> </ul> </entry> </row> </tbody> </tgroup> </table> <p id="GUID-DE57E5EA-1C46-5AE4-86CF-06AC92203383"><b>Finding the Bluetooth Device Address</b> </p> <p>The following code shows how to get and manipulate the Bluetooth device address: </p> <codeblock id="GUID-8C4B51E9-5CC2-5EC1-948C-A3DAD2197253" xml:space="preserve">...
+TBTDevAddr devAddr; // Bluetooth device address.
+//
+TMenuMode = iMode; // from console.h
+//
+iMode = EPan;    //Ask user which device address we should connect to...
+RNotifier notify; // get a notifier
+User::LeaveIfError(notify.Connect()); // connect to the notifier
+TBTDeviceSelectionParamsPckg pckg; // Bluetooth device parameters package
+TBTDeviceResponseParamsPckg resPckg; // Response parameters package
+TRequestStatus stat;
+ // Start the notifier.
+notify.StartNotifierAndGetResponse(stat,KDeviceSelectionNotifierUid,pckg,resPckg);
+ // Wait for the notifier results.
+User::WaitForRequest(stat);
+notify.CancelNotifier(KDeviceSelectionNotifierUid);
+ // Close the notifier now that we have the device details.
+notify.Close();
+User::LeaveIfError(stat.Int()); 
+ // extract the Bluetooth device address from the notifier results.
+devAddr = resPckg().BDAddr();
+ // start the PAN connection request, send the Bluetooth device address.
+iPanConnection-&gt;StartConnection(&amp;devAddr, EFalse, EFalse);</codeblock> <p> <b>Note:</b> this fragment taken from <codeph>CActiveConsole::ProcessKeyPressL()</codeph> in "<filepath>exampleroot/src/console.cpp</filepath> ". </p> </section> <section><title>Loading the Bluetooth Stack</title> <p>The Bluetooth stack will need to be loaded before a PAN is created. </p> <codeblock id="GUID-D7E947FB-72E5-528F-81C5-B5FAC48F7141" xml:space="preserve">Initialise()
+{
+ _LIT(KPDDName, "EUART1");        
+ _LIT(KLDDName, "ECOMM");    
+ TInt rerr = KErrNone;
+ rerr = StartC32();// For any Serial comms
+ // Load required drivers
+ User::LoadPhysicalDevice(KPDDName);
+ User::LoadLogicalDevice(KLDDName);
+ iSockSvr.Connect();
+ TProtocolDesc iProtocolInfo;
+ TRequestStatus status;
+ iSockSvr.FindProtocol(_L("L2CAP"), iProtocolInfo);
+ // After Socket server is connected, start L2CAP protocol
+ iSockSvr.StartProtocol(iProtocolInfo.iAddrFamily,
+ iProtocolInfo.iSockType,iProtocolInfo.iProtocol, status);
+ User::WaitForRequest(status);
+}</codeblock> <p>The code above shows how to load the Bluetooth Stack using standard sockets. </p> </section> <section><title>Starting the PAN Connection</title> <p>Now that you have loaded the Bluetooth stack and configured the PAN service extensions table a PAN connection can be opened. </p> <ol id="GUID-8F3A4A6B-8363-5ADB-8A1A-217AE22B40E8"><li id="GUID-C880CE0D-67DB-5B63-92A2-57DCA637A05A"><p>Define the connection preferences. </p> <codeblock id="GUID-C88F1DF0-1AF6-50CA-9ACF-54D90A1109B1" xml:space="preserve"> // EGeneralIAP = 1
+PanProfileIAPs iap(EGeneralIAP); // panconnection.h
+connPref.SetIapId(iap);
+iConnPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
+TInt rerr = iSockSvr.Connect();
+if(rerr == KErrNone)
+{</codeblock> </li> <li id="GUID-C2CAC673-1042-567F-81AD-8D1FD6935776"><p>Load the Bluetooth stack. </p> <codeblock id="GUID-A966FFCA-2422-5472-811D-DEFBC594DC05" xml:space="preserve">Initialise();</codeblock> <p>Covered in the previous section. </p> </li> <li id="GUID-22D2273F-8029-589A-9C0B-85DBDAEB1778"><p>Open the connection </p> <codeblock id="GUID-85DE421F-9882-5BEB-8330-A5EDDE9C4A80" xml:space="preserve">rerr = iConnection.Open(iSockSvr);</codeblock> </li> <li id="GUID-08794D6C-A40C-505B-9EDC-DB012D4D7B1D"><p>Start the session if the connection opened correctly: </p> <codeblock id="GUID-9D85A068-6F17-5A4A-A03E-5292381FB60F" xml:space="preserve">if(rerr == KErrNone)
+{
+ iConnection.Start(iConnPref,iStat);    
+ User::WaitForRequest(iStat);
+}
+if(iStat==KErrNone)    
+{</codeblock> </li> </ol> <p>The code above is derived from <codeph>CPanConnections::StartIAP()</codeph> in "<filepath>exampleroot/src/panconnection.cpp</filepath> ". </p> <p>That's all there is to creating a PAN. </p> </section> <section><title>What's next?</title> <p>Having created a PAN you will need to add and remove devices and close the PAN. The following will help: </p> <ul><li id="GUID-9273F800-3857-51FD-A443-9AC246203FB2"><p> <b>Creating a Personal Area Network (PAN)</b> - This document </p> </li> <li id="GUID-245B7926-AA87-5B13-B46E-C8DF4DBB162C"><p> <xref href="GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita">Adding a device to the PAN</xref>  </p> </li> <li id="GUID-D070BE04-D2BB-593C-BEE4-23E0E4637E10"><p> <xref href="GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita">Removing a device from the PAN</xref>  </p> </li> <li id="GUID-FCFBE512-1321-57F0-9F5B-D13784700CD5"><p> <xref href="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita">Closing the PAN</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-91EBB6E0-932D-506D-B041-7FB8A531EFDD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-91EBB6E0-932D-506D-B041-7FB8A531EFDD" xml:lang="en"><title>Using Threads and Processes</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-91ED5F9C-216D-539D-B4D0-E6F2E087773E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-91ED5F9C-216D-539D-B4D0-E6F2E087773E" xml:lang="en"><title>Creating
+attachments to messages</title><shortdesc>The messaging framework allows you to create attachments to be
+added to messages. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-AD25E60B-49ED-57AB-B727-6A6CB5EBE730"><p>Attachments to
+messages are created as empty files before they are filled and added to a
+message. </p> </context>
+<steps id="GUID-C3909B48-18F8-5CCE-8661-EEBB64DDCF28">
+<step id="GUID-0257AD84-72B4-5C9F-B7B2-D0092F847AB7"><cmd/>
+<info>Create an active object implementation. All the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> functions
+that modify attachments for an entry are asynchronous, so a request must be
+called with an active object implementation. </info>
+<stepxmp><codeblock id="GUID-4667A5C6-7A2C-539B-9D86-8807032D0294" xml:space="preserve">void CFoo::CreateAttachmentL(CMsvEntry&amp; aEntry )
+    {
+    _LIT(KFileName, "textfile.txt");
+...
+    // Wait for request to complete
+    User::WaitForRequest(status);
+
+    // Write to the file at the current offset within the file. 
+    User::LeaveIfError(file.Write(_L8("text file as attachment")));
+
+    
+    CleanupStack::PopAndDestroy(&amp;file);
+    CleanupStack::PopAndDestroy(store);
+    }
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-9F363DA2-9281-595A-B115-FD63DDD05D10"><cmd>Get the details
+of the message to which you want to add an attachment using <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-1864B96D-CB22-3EE1-8E73-023F12C68CB0"><apiname>CMsvEntry::EditStoreL()</apiname></xref>. </cmd>
+<stepxmp><codeblock id="GUID-223B5F86-1D47-5F9A-97A4-45B6B28B277A" xml:space="preserve">    CMsvStore* store = aEntry.EditStoreL();
+    CleanupStack::PushL(store);
+</codeblock> </stepxmp>
+<info>This function returns <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> in writable mode. </info>
+</step>
+<step id="GUID-880AB139-CD3E-5283-A67B-0901482BC7B3"><cmd>Get an <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> attachment
+manager for the message entry, using <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-73CE27F3-855B-3F87-AE11-4B4F2B8F8825"><apiname>CMsvStore::AttachmentManagerL()</apiname></xref>. </cmd>
+<stepxmp><codeblock id="GUID-5719D172-1127-557A-AE3D-C138EFEFAF67" xml:space="preserve">    MMsvAttachmentManager&amp; attManager = store-&gt;AttachmentManagerL();
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-3D26FDBB-2E55-52BA-AB2A-98AB4B72A2B7"><cmd/>
+<info>Create a new attachment attributes object using the <xref href="GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F.dita#GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F/GUID-CB0C9E14-A0D3-340A-929D-8B2C3BC11300"><apiname>CMsvAttachment::NewL()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-D0C29614-2C96-59C0-8B33-3161764637EA" xml:space="preserve">    // create a new attachment attributes object
+    CMsvAttachment* attachment = CMsvAttachment::NewL(CMsvAttachment::EMsvFile);
+    CleanupStack::PushL(attachment);
+    
+    // set attachment file name
+    attachment-&gt;SetAttachmentNameL(KFileName());
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-0171595B-14E9-5F29-A0A0-ED7C7B2F05F6"><cmd/>
+<info>Initialise a file handle. </info>
+<stepxmp><codeblock id="GUID-678974F9-CF55-5D2C-A870-06FD0466B29C" xml:space="preserve">    // A file handle
+    RFile file;
+    CleanupClosePushL(file);
+    TRequestStatus status;
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-1136ACD3-307E-5C19-80BD-80AF901F8F7C"><cmd/>
+<info>Create a new attachment using the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-DA2E53AD-EC8F-38F9-8D5C-03AC356E7B64"><apiname>MMsvAttachmentManager::CreateAttachmentL()</apiname></xref> function. </info>
+<info>The <xref href="GUID-F9A3E3A7-664B-3684-89EA-3DD5CB975AF1.dita"><apiname>CreateAttachmentL()</apiname></xref> function creates a new empty
+attachment file and returns an open writable file handle to the empty attachment
+file in the Message Store. You must pass an uninitialised file handle. The
+file handle cannot be used until the asynchronous request completes successfully.
+If the request is successful, the file handle is opened for writing. </info>
+<stepxmp><codeblock id="GUID-448F438F-AD34-5A31-A79D-ED6DE2004E0A" xml:space="preserve">    // CreateAttachmentL API will return an open writable file handle 
+    // to an empty attachment file in the message store. 
+    attManager.CreateAttachmentL(KFileName, file, attachment, status);
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-3C167920-96C7-5081-AE58-8A65E68931A9"><cmd/>
+<info>Commit the store. </info>
+<stepxmp><codeblock id="GUID-DEAA9B94-C265-5536-A984-E07B5EC60DD7" xml:space="preserve">    // Commit the store
+    store-&gt;CommitL();
+</codeblock> </stepxmp>
+</step>
+</steps>
+<result id="GUID-F5F40B70-71ED-5150-A5A8-602FB2134C87"><p>The result of creating
+an attachment is an empty file with a handle opened for writing. </p> </result>
+<postreq id="GUID-52A82DB6-ECA7-5910-A0E7-FC5726F280CE"><p>You can now add
+the attachment to a file and retrieve and modify it. </p> </postreq>
+</taskbody><related-links>
+<link href="GUID-1963A487-D6A7-4225-8D0C-EC5FAB746854.dita"><linktext>Attachment
+Tutorial</linktext></link>
+<link href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita"><linktext>Messaging
+Framework Overview</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-91F971B6-CA7A-5FE4-B10A-6CADC935C3B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-91F971B6-CA7A-5FE4-B10A-6CADC935C3B4" xml:lang="en"><title>SendAs Concepts</title><shortdesc>This section describes the concepts and functionality of the SendAs
+component. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3" xml:lang="en"><title>Touch
+UI utilities API</title><shortdesc>The Touch UI utilities API is used for detecting long-tap events
+and showing an animation for them. </shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A long tap, also called a touch down and hold event, means that the user
+holds the stylus down on the screen at the same point for a long time.</p>
+<fig id="GUID-1E6C16F9-51AA-45CC-8E50-AB5E51DB9E4E">
+<title>Long-tap event used for opening a stylus pop-up menu</title>
+<image href="GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e50615_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The Touch UI utilities API can be used in all GUI applications. It is a
+library API that provides an interface for constructing and using the long-tap
+detector component.</p>
+<p>For user experience guidelines on the long-tap component, see <xref href="GUID-C11AF871-56C8-4EA4-A1E0-E2B23372EF84.dita">Touch
+down and hold</xref>.</p>
+<p>For the Touch UI utilities API classes and header files, see Classes and Definitions.</p>
+<p>For implementation information, see <xref href="GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita">Receiving
+long tap events</xref>.</p>
+<section id="GUID-139D3102-1273-4F4D-9239-309677968281"><title>Error handling</title><p>The
+leave mechanism of the Symbian OS environment is used for handling memory
+exhaustion.</p></section>
+<section id="GUID-A4320820-D2A9-44C1-B2F0-C47A8C6CED6B"><title>Constraints</title><p>This
+API is valid for all touch enabled Symbian platforms.</p></section>
+<section id="GUID-C1463788-923F-4AF2-884B-3B16C93E7536"><title>Emulator support</title><p>This
+API is fully supported in the WINS/WINSCW emulator environment.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA" xml:lang="en"><title>Root Certificates</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Root Certificates are self-signed certificates, which are at the root of a certification hierarchy.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e50349_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9208E03A-CC7A-57A9-84BD-778B99040842.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9208E03A-CC7A-57A9-84BD-778B99040842" xml:lang="en"><title>Compression Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Compression Library is a set of open source implementations of several well known lossless compression algorithms in portable ANSI C/C++. The Compression Library is completely independent of file input/output and memory allocation routines. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92156269-0645-54AB-9075-EE7708D333F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-92156269-0645-54AB-9075-EE7708D333F4"><title>UIDs that Identify vCard Properties</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>These tables list the UIDs that Symbian OS uses to identify vCard properties and property parameters. The mapping between vCard properties and Symbian OS-specific constants is done by the cntvcard component (<filepath>cntvcard.dll</filepath>). </p> <p>The first column describes the properties and the second lists the property names as they appear in a vCard. The third and fourth columns list the corresponding Symbian UIDs. The combination of one or more field type UIDs and an optional mapping UID uniquely identify each property. Field type and vCard mapping UIDs are defined in <filepath>cntdef.h</filepath>. </p> </section> <section><title>Properties and UIDs</title> <table id="GUID-7797FBC0-DD46-5152-9853-54800F90C145"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><tbody><row><entry><p> <b>Description</b>  </p> </entry> <entry><p> <b>vCard property</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> <entry><p> <b>Mapping UID</b>  </p> </entry> </row> <row><entry><p>PO Box </p> </entry> <entry><p> <codeph>ADR:</codeph> / Post Office Address </p> </entry> <entry><p> <codeph>KUidContactFieldPostOffice</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPOSTOFFICE</codeph>  </p> </entry> </row> <row><entry><p>Extended address </p> </entry> <entry><p> <codeph>ADR:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldExtendedAddress</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapEXTENDEDADR</codeph>  </p> </entry> </row> <row><entry><p>Street </p> </entry> <entry><p> <codeph>ADR:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldAddress</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapADR</codeph>  </p> </entry> </row> <row><entry><p>City </p> </entry> <entry><p> <codeph>ADR:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldLocality </codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapLOCALITY</codeph>  </p> </entry> </row> <row><entry><p>Region </p> </entry> <entry><p> <codeph>ADR:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldRegion</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapREGION</codeph>  </p> </entry> </row> <row><entry><p>Postcode </p> </entry> <entry><p> <codeph>ADR:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldPostcode</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPOSTCODE</codeph>  </p> </entry> </row> <row><entry><p>Country </p> </entry> <entry><p> <codeph>ADR:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldCountry</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapCOUNTRY</codeph>  </p> </entry> </row> <row><entry><p>Agent </p> </entry> <entry><p> <codeph>AGENT:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapAGENT</codeph>  </p> </entry> </row> <row><entry><p>Birthday </p> </entry> <entry><p> <codeph>BDAY:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldBirthday</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapBDAY</codeph>  </p> </entry> </row> <row><entry><p>Email </p> </entry> <entry><p> <codeph>EMAIL;INTERNET:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldEMail</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapEMAILINTERNET</codeph>  </p> </entry> </row> <row><entry><p>Formatted name </p> </entry> <entry><p> <codeph>FN:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedFN</codeph>  </p> </entry> </row> <row><entry><p>Longitude and latitude </p> </entry> <entry><p> <codeph>GEO:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapGEO</codeph>  </p> </entry> </row> <row><entry><p>Public encryption key </p> </entry> <entry><p> <codeph>KEY:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapKEY</codeph>  </p> </entry> </row> <row><entry><p>Label </p> </entry> <entry><p> <codeph>LABEL:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapLABEL</codeph>  </p> </entry> </row> <row><entry><p>Company logo </p> </entry> <entry><p> <codeph>LOGO:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldPicture</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapLOGO</codeph>  </p> </entry> </row> <row><entry><p>Email software </p> </entry> <entry><p> <codeph>MAILER:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapMAILER</codeph>  </p> </entry> </row> <row><entry><p>Title </p> </entry> <entry><p> <codeph>N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldPrefixName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>First name </p> </entry> <entry><p> <codeph>N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldGivenName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>Middle name </p> </entry> <entry><p> <codeph>N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldAdditionalName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>Last name </p> </entry> <entry><p> <codeph>N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldFamilyName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>Suffix </p> </entry> <entry><p> <codeph>N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldSuffixName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>Notes </p> </entry> <entry><p> <codeph>NOTE:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldNote</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapNOTE</codeph>  </p> </entry> </row> <row><entry><p>Company </p> </entry> <entry><p> <codeph>ORG:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldCompanyName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapORG</codeph>  </p> </entry> </row> <row><entry><p>Photograph </p> </entry> <entry><p> <codeph>PHOTO:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldPicture</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPHOTO</codeph>  </p> </entry> </row> <row><entry><p>Last Revision </p> </entry> <entry><p> <codeph>REV:</codeph>  </p> </entry> <entry><p>n/a – not stored in a field. See <xref href="GUID-7D48CA5C-D047-3512-A280-6A9C8F707CD2.dita#GUID-7D48CA5C-D047-3512-A280-6A9C8F707CD2/GUID-102275A3-A32B-3A83-85D9-F6F27A07804F"><apiname>CContactItem::SetLastModified()</apiname></xref>. </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapNotRequired</codeph>  </p> </entry> </row> <row><entry><p>Occupation </p> </entry> <entry><p> <codeph>ROLE:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapROLE</codeph>  </p> </entry> </row> <row><entry><p>Sound </p> </entry> <entry><p> <codeph>SOUND:</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapSOUND</codeph>  </p> </entry> </row> <row><entry><p>Given name pronunciation </p> </entry> <entry><p> <codeph>SOUND;X-IRMC-N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldGivenNamePronunciation</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>Family name pronunciation </p> </entry> <entry><p> <codeph>SOUND;X-IRMC-N:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldFamilyNamePronunciation</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnusedN</codeph>  </p> </entry> </row> <row><entry><p>Company name pronunciation </p> </entry> <entry><p> <codeph>SOUND;X-IRMC-ORG:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldCompanyNamePronunciation</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapORGPronunciation</codeph>  </p> </entry> </row> <row><entry><p>Tel </p> </entry> <entry><p> <codeph>TEL:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldPhoneNumber</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapTEL</codeph>  </p> </entry> </row> <row><entry><p>Fax </p> </entry> <entry><p> <codeph>TEL;FAX:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldFax KUidContactFieldVCardMapFAX </codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapTEL</codeph>  </p> </entry> </row> <row><entry><p>Job title </p> </entry> <entry><p> <codeph>TITLE:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldJobTitle</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapTITLE</codeph>  </p> </entry> </row> <row><entry><p>Unique Identifier </p> </entry> <entry><p> <codeph>UID:</codeph>  </p> </entry> <entry><p>n/a – not stored in a field. See <xref href="GUID-7D48CA5C-D047-3512-A280-6A9C8F707CD2.dita#GUID-7D48CA5C-D047-3512-A280-6A9C8F707CD2/GUID-CFB906FC-13AB-35FB-A0D0-6CFDDB650776"><apiname>CContactItem::SetUidStringL()</apiname></xref>. </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapNotRequired</codeph>  </p> </entry> </row> <row><entry><p>Web page </p> </entry> <entry><p> <codeph>URL:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldUrl</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapURL</codeph>  </p> </entry> </row> <row><entry><p>Version support </p> </entry> <entry><p> <codeph>VERSION:</codeph>  </p> </entry> <entry><p>n/a – not stored in a field. </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapNotRequired</codeph>  </p> </entry> </row> <row><entry><p>USIM second name (*) </p> </entry> <entry><p> <codeph>X-EPOCSECONDNAME:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldSecondName</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapSECONDNAME</codeph>  </p> </entry> </row> <row><entry><p>SIP address </p> </entry> <entry><p> <codeph>X-SIP:</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldSIPID</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapSIPID</codeph>  </p> </entry> </row> <row><entry><p>Other vCard extension properties </p> </entry> <entry><p> <codeph>X-</codeph>  </p> </entry> <entry><p>None </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapUnknownXDash</codeph>  </p> </entry> </row> <row><entry><p>Assistant name </p> </entry> <entry><p>X-ASSISTANT </p> </entry> <entry><p>KUidContactFieldAssistant </p> </entry> <entry><p>KUidContactFieldVCardMapAssistant </p> </entry> </row> <row><entry><p>Assistant phone </p> </entry> <entry><p>X-ASSISTANTTEL </p> </entry> <entry><p> <codeph>KUidContactFieldPhoneNumber</codeph>  </p> </entry> <entry><p>KUidContactFieldVCardMapAssistantTel </p> </entry> </row> <row><entry><p>Anniversary </p> </entry> <entry><p>X-ANNIVERSARY </p> </entry> <entry><p>KUidContactFieldAnniversary </p> </entry> <entry><p>KUidContactFieldVCardMapAnniversary </p> </entry> </row> <row><entry><p>Spouse </p> </entry> <entry><p>X-SPOUSE </p> </entry> <entry><p>KUidContactFieldSpouse </p> </entry> <entry><p>KUidContactFieldVCardMapSpouse </p> </entry> </row> <row><entry><p>Children </p> </entry> <entry><p>X-CHILDREN </p> </entry> <entry><p>KUidContactFieldChildren </p> </entry> <entry><p>KUidContactFieldVCardMapChildren </p> </entry> </row> <row><entry><p>Class </p> </entry> <entry><p>X-CLASS </p> </entry> <entry><p>KUidContactFieldClass </p> </entry> <entry><p>KUidContactFieldVCardMapClass </p> </entry> </row> <row><entry><p>Department </p> </entry> <entry><p>X-DEPARTMENT </p> </entry> <entry><p>KUidContactFieldDepartmentName </p> </entry> <entry><p>KUidContactFieldVCardMapDepartment </p> </entry> </row> </tbody> </tgroup> </table> <p>(*) This field stores an additional representation of the contact's name, such as a nickname or a different representation. An example is a Japanese contact which has a Romanised name and an alternative representation using kanji (pictogram) characters. </p> </section> <section><title>Property Parameters and UIDs, Grouped by Property</title> <p><b>ADR: </b> </p> <table id="GUID-3F7BE7AA-C166-58E2-8331-1E35280B9A93"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>HOME</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapHOME</codeph>  </p> </entry> </row> <row><entry><p> <codeph>WORK</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapWORK</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PREF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPREF</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>EMAIL: </b> </p> <table id="GUID-64FB0B2A-EDE3-5799-AA9B-15D419314956"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>HOME</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapHOME</codeph>  </p> </entry> </row> <row><entry><p> <codeph>WORK</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapWORK</codeph>  </p> </entry> </row> <row><entry><p> <codeph>CELL</codeph> </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapCELL</codeph> </p> </entry> </row> <row><entry><p> <codeph>INTERNET (*)</codeph> </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapINTERNET</codeph> </p> </entry> </row> <row><entry><p> <codeph>PREF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPREF</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p>(*) If HOME, WORK and CELL are absent then INTERNET is inserted by default. </p> <p><b>KEY: </b> </p> <table id="GUID-4255AD9F-35BD-55BE-842F-55831408F986"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>X509</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapX509</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PGP</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPGP</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>LABEL: </b> </p> <table id="GUID-E2D18245-F739-590D-A2B7-9F08C952BB5F"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>DOM</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapDOM</codeph>  </p> </entry> </row> <row><entry><p> <codeph>HOME</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapHOME</codeph>  </p> </entry> </row> <row><entry><p> <codeph>WORK</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapWORK</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PREF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPREF</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>PHOTO:/LOGO: </b> </p> <table id="GUID-B9005C1B-BDAD-5DD8-A46C-24CA4B112347"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>GIF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapGIF</codeph>  </p> </entry> </row> <row><entry><p> <codeph>CGM</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapCGM</codeph>  </p> </entry> </row> <row><entry><p> <codeph>WMF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapWMF</codeph>  </p> </entry> </row> <row><entry><p> <codeph>BMP</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapBMP</codeph>  </p> </entry> </row> <row><entry><p> <codeph>DIB</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapDIB</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PS</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPS</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PMB</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPMB</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PDF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPDF</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PICT</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPICT</codeph>  </p> </entry> </row> <row><entry><p> <codeph>TIFF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapTIFF</codeph>  </p> </entry> </row> <row><entry><p> <codeph>JPEG</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapJPEG</codeph>  </p> </entry> </row> <row><entry><p> <codeph>MET</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapMET</codeph>  </p> </entry> </row> <row><entry><p> <codeph>MPEG</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapMPEG</codeph>  </p> </entry> </row> <row><entry><p> <codeph>MPEG2</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapMPEG2</codeph>  </p> </entry> </row> <row><entry><p> <codeph>AVI</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapAVI</codeph>  </p> </entry> </row> <row><entry><p> <codeph>QTIME</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapQTIME</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>TEL: </b> </p> <table id="GUID-8A8F4DBE-A235-521C-AAD1-77D2B9CEBF8E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>HOME</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapHOME</codeph>  </p> </entry> </row> <row><entry><p> <codeph>WORK</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapWORK</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PREF</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPREF</codeph>  </p> </entry> </row> <row><entry><p> <codeph>VOICE</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapVOICE</codeph>  </p> </entry> </row> <row><entry><p> <codeph>CELL</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapCELL</codeph>  </p> </entry> </row> <row><entry><p> <codeph>PAGER</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPAGER</codeph>  </p> </entry> </row> <row><entry><p> <codeph>BBS</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapBBS</codeph>  </p> </entry> </row> <row><entry><p> <codeph>MODEM</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapMODEM</codeph>  </p> </entry> </row> <row><entry><p> <codeph>CAR</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapCAR</codeph>  </p> </entry> </row> <row><entry><p> <codeph>ISDN</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapISDN</codeph>  </p> </entry> </row> <row><entry><p> <codeph>VIDEO</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapVIDEO</codeph>  </p> </entry> </row> <row><entry><p> <codeph>MSG</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapMSG</codeph>  </p> </entry> </row> <row><entry><p> <codeph>FAX</codeph>  </p> </entry> <entry><p>(*) </p> </entry> </row> </tbody> </tgroup> </table> <p>(*) Fax numbers are not stored using a telephone number field type (<codeph>KUidContactFieldPhoneNumber</codeph>), but a fax field type (<codeph>KUidContactFieldFax</codeph>; mapping=<codeph>KUidContactFieldVCardMapFAX</codeph>). </p> <p><b>URL: </b> </p> <table id="GUID-1E146002-1DD7-5A6E-9711-6FB7BD78B82A"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>HOME</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapHOME</codeph>  </p> </entry> </row> <row><entry><p> <codeph>WORK</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapWORK</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p><b>X-SIP: </b> </p> <table id="GUID-186E7003-2AC0-52C1-82BC-4347AE745319"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>vCard property parameter</b>  </p> </entry> <entry><p> <b>Field type UID</b>  </p> </entry> </row> <row><entry><p> <codeph>POC</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapPOC</codeph>  </p> </entry> </row> <row><entry><p> <codeph>SWIS</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapSWIS</codeph>  </p> </entry> </row> <row><entry><p> <codeph>VOIP</codeph>  </p> </entry> <entry><p> <codeph>KUidContactFieldVCardMapVOIP</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Example</title> <p>The following example demonstrates how a contact item (<codeph>newCard</codeph>) is created and assigned fields of different types using some of the UIDs listed in the tables above. </p> <codeblock id="GUID-35C279F9-C016-5932-AA03-99D44ADD79F4" xml:space="preserve">#include &lt;cntitem.h&gt;
+#include &lt;cntfield.h&gt;
+#include &lt;cntfldst.h&gt;
+#include &lt;cntdef.h&gt;
+#include &lt;cntdef.hrh&gt; 
+
+// Create a contact card and add a work phone number. Numeric values are 
+// stored in a text field (storage type = KStorageTypeText).
+
+CContactCard* newCard = CContactCard::NewLC();
+_LIT(KWorkNumber,"02071234567");
+// First create the field to hold the phone number
+CContactItemField* phonefield=CContactItemField::NewLC(KStorageTypeText); 
+// Set the field types and mapping UIDs for a work phone number property
+phonefield-&gt;AddFieldTypeL(KUidContactFieldPhoneNumber);
+phonefield-&gt;AddFieldTypeL(KUidContactFieldVCardMapWORK); 
+// Make it the preferred number
+phonefield-&gt;AddFieldTypeL(KUidContactFieldVCardMapPREF);
+phonefield-&gt;SetMapping(KUidContactFieldVCardMapTEL);
+// Add the telephone number to the field and the field to the card
+phonefield-&gt;TextStorage()-&gt;SetTextL(KWorkNumber);
+newCard-&gt;AddFieldL(*phonefield); // newCard takes ownership
+CleanupStack::Pop(); // phonefield
+
+// Add a birthday property. Date property values are stored using "date/time" 
+// fields (storage type=KStorageTypeDateTime).
+
+CContactItemField* birthdayfield=CContactItemField::NewLC(KStorageTypeDateTime);
+birthdayfield-&gt;AddFieldTypeL(KUidContactFieldBirthday);
+birthdayfield-&gt;SetMapping(KUidContactFieldVCardMapBDAY);
+// Set birthday - 10 Jan 1970
+birthdayfield-&gt;DateTimeStorage()-&gt;SetTime(TDateTime(1970,EJanuary,9,0,0,0,0));
+newCard-&gt;AddFieldL(*birthdayfield); // newCard takes ownership
+CleanupStack::Pop(); // birthdayfield
+</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-922442FC-D9E0-53BD-B8AD-011A724C96FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-922442FC-D9E0-53BD-B8AD-011A724C96FF" xml:lang="en"><title>How
+to Detect Infrared Capability and Enable Infrared Mode: Tutorial</title><shortdesc>The Serial Communications Server API includes functionality to
+detect and configure an Infrared port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>These steps show the functionality of the Serial Communications
+Server API for Infrared. At the end of these steps, the port is set to Infrared
+mode. A port set to Infrared mode may still require further configuration
+specific to the Infrared driver. This further configuration is not included
+in this tutorial. </p> </context>
+<steps id="GUID-44197D73-A8BF-5662-B3BC-341766A7159B">
+<step id="GUID-F614BCBB-696E-50F0-8C99-32D8AB7FC306"><cmd>Load the CSY and
+open a port.</cmd>
+</step>
+<step id="GUID-0745F9D1-81E5-5331-B577-4D959B43635B"><cmd>Get the capabilities
+of the port by calling <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4A6ECC68-EBC7-3B6C-94AE-9272669F6FF2"><apiname>RComm::Caps()</apiname></xref></cmd>
+</step>
+<step id="GUID-8911D514-9E2B-55CC-BD74-77BAF1A13F9C"><cmd>Get the Infrared
+capabilities by checking the bits in <xref href="GUID-A0BE41DB-1B73-3029-8B84-547D771257EA.dita"><apiname>TCommCaps.iSIR</apiname></xref> with
+the three bitmasks <xref href="GUID-E3455500-9903-3B8F-B702-E419BDE5DB4C.dita"><apiname>KCapsSIR115kbps</apiname></xref>, <xref href="GUID-BC1F7C67-E41E-3892-A9C4-3E752DF2AACB.dita"><apiname>KCapsSIR2400bpsOnly</apiname></xref>,
+and <xref href="GUID-87867BAD-C91E-388B-A3DE-69AB9598C0EF.dita"><apiname>KCapsSIR4Mbps</apiname></xref>. </cmd>
+<info>If any of the bitmasks show the bit as set, then the port has Infrared
+capability. </info>
+<info>The infra-red characteristic of the port can be determined from the
+value <xref href="GUID-4B2001D0-DE8A-3A90-8AF5-6485FA5FE70A.dita"><apiname>TCommCapsV01.iSIRSettings</apiname></xref>. </info>
+</step>
+<step id="GUID-CA055EB0-A8E5-5F5C-AD91-44F72CAA638C"><cmd>To use the port
+as an Infrared port, follow these steps: </cmd>
+<substeps id="GUID-F8BE2BA0-7DB1-5813-B291-92B0D640EA9D">
+<substep id="GUID-8E02B974-1608-5AB9-808C-89281771712F"><cmd/>
+<info>Create an object of type <xref href="GUID-FA42F645-D2A8-384B-9FE6-6495EACFA479.dita"><apiname>TCommConfigV01</apiname></xref>. </info>
+</substep>
+<substep id="GUID-7596BE64-26E6-5F05-A113-CE9F54C66A8E"><cmd/>
+<info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with the <codeph>aConfig</codeph> parameter
+set to the <codeph>TCommConfigV01</codeph> object to get the port configuration. </info>
+</substep>
+<substep id="GUID-17F5B58E-5B10-519C-A6FA-A57BBE6B9FB1"><cmd/>
+<info>Set the <xref href="GUID-4EDA16F3-40B1-3C8A-BD00-C04FF81053BB.dita"><apiname>iSIREnable</apiname></xref> flag in the <codeph>TCommConfigV01</codeph> object. </info>
+</substep>
+<substep id="GUID-C2ADDCD3-8B01-5E21-948C-E383D4CB4528"><cmd/>
+<info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with the <codeph>TCommConfigV01</codeph> object
+as the <codeph>aConfig</codeph> parameter. </info>
+<info>The port is now set to Infrared mode. To use Infrared, the Infrared
+protocol must be understood so refer to the Infrared plugin section <xref href="GUID-D8E59924-4E17-56AE-8F6B-07749A2FF0B8.dita">IrDA Serial</xref>. </info>
+</substep>
+</substeps>
+</step>
+</steps>
+<example><title>Example</title> <codeblock id="GUID-F5B75720-86C3-5956-9238-255D46A2C013" xml:space="preserve">TCommCaps ourCapabilities;
+User::LeaveIfError(commPort.Caps (ourCapabilities));
+
+ if ((ourCapabilities ().iSIR &amp; KCapsSIR115kbps) ||
+(ourCapabilities ().iSIR &amp; KCapsSIR2400bpsOnly) ||
+(ourCapabilities ().iSIR &amp; KCapsSIR4Mbps))
+{
+   // IR is supported, so enable it
+   TCommConfig portSettings;
+   User::LeaveIfError(commPort.Config (portSettings));
+
+   portSettings ().iSIREnable = ESIREnable;
+   User::LeaveIfError (commPort.SetConfig (portSettings));
+}</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-D8E59924-4E17-56AE-8F6B-07749A2FF0B8.dita"><linktext>IrDA Serial</linktext>
+</link>
+<link href="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita"><linktext>GlassTerm
+-                 glass teletype terminal</linktext></link>
+<link href="GUID-397239F9-7EE8-52CF-9B37-328AE307BAA0.dita"><linktext>How to  
+              Open a Port with the IrDA Protocol Module: Tutorial</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92281C52-4F2E-4D9A-9D5A-E0C5F0433339.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-92281C52-4F2E-4D9A-9D5A-E0C5F0433339" xml:lang="en"><title>Enabling
+and disabling the long-tap detector</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use the method <codeph>EnableLongTapAnimation</codeph> to enable or disable
+the long-tap detector and its animation. </p>
+<p>The default setting is that the detector and animation are enabled. When
+set to disabled, the long tap event is not reported and the animation is hidden.</p>
+<codeblock xml:space="preserve">iLongTapDetector-&gt;EnableLongTapAnimation ( EFalse );  // event and animation off</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-923C50A1-813A-5B51-A630-FACFB8B35B3B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-923C50A1-813A-5B51-A630-FACFB8B35B3B" xml:lang="en"><title>Multimedia Framework Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides additional information about the Multimedia Framework component. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78-master.png has changed
Binary file Symbian3/SDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e190846_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-926EFFB3-B0E0-5627-87C5-20F8B4A56028.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-926EFFB3-B0E0-5627-87C5-20F8B4A56028" xml:lang="en"><title>How to use periodic timers</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-92966ADC-17CF-5411-A829-1201C182B59F" xml:lang="en"><title>ETel3rdParty:
+Using the Telephony Independent Software Vendor (ISV) API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This set of seven example applications demonstrate the use of the Telephony
+ISV API provided by the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref> public interface to
+the phone’s telephony system. This interface enables developers to access
+common mobile telephony services, such as finding phone information, dialling
+and answering voice calls. </p>
+<p>Each example demonstrates a different set of mobile telephony services,
+and is stored in a subdirectory of <filepath>ETel3rdPartyExample</filepath>.
+These subdirectories are explained in the description section. </p>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7bdecae0-8d0b-407e-b387-2543550d99e7.zip" scope="external"> ETel3rdParty.zip</xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7bdecae0-8d0b-407e-b387-2543550d99e7.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-BF0DBC82-2432-54B9-9A5F-78900F3FDA6C"><title>Description</title> <p><b>AutoDTMFDialler</b> </p> <p>This
+example performs the following operations: </p> <ul>
+<li id="GUID-AAA9F2D1-839B-5B68-A8AC-4C67E2573BBD"><p>Retrieves the line status
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-8075BB6F-29D6-3BD1-BDE2-6E287E475E5E"><apiname>CTelephony::GetLineStatus()</apiname></xref> function. </p> </li>
+<li id="GUID-2F14CEC3-9000-50B9-856E-E0BED7A0F617"><p>Retrieves the call status
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-AA41B779-3A44-3D14-8FB4-3DFF00065C41"><apiname>CTelephony::GetCallStatus()</apiname></xref> function </p> </li>
+<li id="GUID-698A96D0-3669-59C5-B81C-34D0DC651562"><p>Retrieves the current
+network registration status using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-6F919102-C5AA-39AB-8C58-64854C808154"><apiname>CTelephony::GetNetworkRegistrationStatus()</apiname></xref> function </p> </li>
+<li id="GUID-6725066A-EAA5-5530-807C-FA7D7FF510E0"><p>Retrieves the current
+flight mode status using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-FE20245B-0DC3-35A2-995A-2002E360443C"><apiname>CTelephony::GetFlightMode()</apiname></xref> function. </p> </li>
+<li id="GUID-A6E7E73E-D31F-5D0D-895F-FABBEA5FECFD"><p>Initiates a call using
+the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-E7A25EB6-B7FD-31DF-9A03-F100F93D7138"><apiname>CTelephony::DialNewCall()</apiname></xref> function </p> </li>
+<li id="GUID-541A9C02-ACAA-5017-BE5C-98FED025FF06"><p>Transmits DTMF tones
+across all the current active voice calls one after the other using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-21377F08-7A28-3D54-8B71-8C01140EB0A2"><apiname>CTelephony::SendDTMFTones()</apiname></xref> function </p> </li>
+<li id="GUID-6FA24CD2-FB5E-57B2-92A1-CE4D69969306"><p>Disconnects a call using
+the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-D4EEA60D-306E-358E-A1F8-9F93554D70BD"><apiname>CTelephony::Hangup()</apiname></xref> function. </p> </li>
+</ul> <p><b>Configs</b> </p> <p>This example directory contains the <filepath>config.txt</filepath> and
+the <filepath>TelephonyISVAppConfig.cfg</filepath> files, which are required
+to configure the SIM TSY to run the application. For more information, see
+the <xref href="GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita#GUID-92966ADC-17CF-5411-A829-1201C182B59F/GUID-F065BEFB-810D-5C25-97FD-8D953515D249">Configuring
+the Simulator TSY</xref> section. </p> <p><b>IncomingCalls</b> </p> <p>This
+example answers incoming calls using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-6D12DBA4-8902-3649-B144-47C91F16C4B3"><apiname>CTelephony::AnswerIncomingCall()</apiname></xref> function.
+It also retrieves information about the call using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-4B0493B4-A6C4-3289-A72E-B274C4EACD12"><apiname>CTelephony::GetCallInfo()</apiname></xref> function.
+It uses a test plug-in named Simulator TSY (SIMTSY) which simulates telephony
+functions like phonebook, voicecall, SMS etc. </p> <p><b>NetworkInformation</b> </p> <p>This
+example retrieves the over-the-air network information about the currently
+registered mobile network using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-5CE72D6B-06FA-32A3-B242-B89308FF4412"><apiname>CTelephony::GetCurrentNetworkInfo()</apiname></xref> function
+and also requests notification of changes to this information using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-2310069E-D6D2-3478-B358-2C3DB45771DC"><apiname>CTelephony::NotifyChange()</apiname></xref> function. </p> <p><b>OutgoingCalls</b> </p> <p>This uses a test plug-in named Simulator TSY (SIMTSY) which simulates
+telephony functions like phonebook, voicecall, SMS etc. This example performs
+the following operations: </p> <ul>
+<li id="GUID-6D961227-F152-5107-8495-EA7F25E4769A"><p>Initiates a call using
+the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-E7A25EB6-B7FD-31DF-9A03-F100F93D7138"><apiname>CTelephony::DialNewCall()</apiname></xref> function. </p> </li>
+<li id="GUID-E080260D-97EA-51B5-9DB3-A00818ACEE5D"><p>Places a call on hold
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-1CF45E69-84C7-3548-8C83-05C106304D9F"><apiname>CTelephony::Hold()</apiname></xref> function. </p> </li>
+<li id="GUID-A2B396AE-38AE-5776-AE15-782BAF848F19"><p>Swaps between calls
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-1EDFE08F-2C36-3193-AF73-2D7AC37079DA"><apiname>CTelephony::Swap()</apiname></xref> function. </p> </li>
+<li id="GUID-6224A13F-A467-583D-9A47-7945081DFD0E"><p>Resumes a call on hold
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-EFF39B1C-4685-3E79-93B3-5D0FB5AFAD02"><apiname>CTelephony::Resume()</apiname></xref> function. </p> </li>
+<li id="GUID-0E611A4B-B748-5FEC-9F8F-A1AA84B9BA7E"><p>Retrieves the status
+of ICC locks using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-FEAE2A06-DC15-3DE0-8F19-69E3B40875E2"><apiname>CTelephony::GetLockInfo()</apiname></xref> function. </p> </li>
+<li id="GUID-ED64D75F-7792-5009-B457-CB0871273F64"><p>Retrieves ICC-stored
+information about the (preferred) name of the currently registered mobile
+network using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-D51174DE-5CCD-3FCD-A9C4-AC1F2413F95D"><apiname>CTelephony::GetCurrentNetworkName()</apiname></xref> function
+and the network name using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-DB5E2992-B720-3194-91D2-66FF6655BCCC"><apiname>CTelephony::GetOperatorName()</apiname></xref> function. </p> </li>
+<li id="GUID-4521E90B-4E15-5087-AE9A-3FB3DFE5162C"><p> </p> <p>Retrieves the
+dynamic call capabilities for the calls that was dialled or answered using
+the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-3013F98E-4E22-3E1E-A871-5F892CFFC9F7"><apiname>CTelephony::GetCallDynamicCaps()</apiname></xref> function. </p> </li>
+</ul> <p><b>PhoneId</b> </p> <p>This example retrieves information about a
+phone, such as the manufacturer name, serial number, phone and SIM card number
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-A3C550FC-0D46-35C4-9DEC-D7EA01E10ED8"><apiname>CTelephony::GetPhoneId()</apiname></xref> function, and current
+subscriber information using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-CFF2D182-A13F-30A2-AE9C-9C8CE7209387"><apiname>CTelephony::GetSubscriberId()</apiname></xref> function.
+It then prints this information to the console. </p> <p><b>PhoneMonitoring</b> </p> <p>This
+example performs the following operations: </p> <ul>
+<li id="GUID-99718553-06A4-5BB3-986E-EA9B73EF0FCC"><p>Retrieves the status
+and charge level of the phone battery using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-9D545601-9C85-3EB5-AB5D-4233C93C9802"><apiname>CTelephony::GetBatteryInfo()</apiname></xref> function. </p> </li>
+<li id="GUID-DC238197-472A-5408-9F66-28F61FD185D0"><p>Indicates whether a
+phone battery is being charged using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-FA962113-84DB-3562-A072-42613FD05E98"><apiname>CTelephony::GetIndicator()</apiname></xref> function. </p> </li>
+<li id="GUID-A800C543-4FB4-5A62-B6CC-BBF4CFE0970A"><p>Retrieves the current
+signal strength of the phone using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-080BF320-A91A-3FF6-AA0E-7E1C7D256BC1"><apiname>CTelephony::GetSignalStrength()</apiname></xref> function. </p> </li>
+<li id="GUID-D8B692C0-C8A7-5CE9-8643-6C7B2150C57B"><p>Retrieves the current
+flight mode status using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-FE20245B-0DC3-35A2-995A-2002E360443C"><apiname>CTelephony::GetFlightMode()</apiname></xref> function. </p> </li>
+</ul> <p><b>Shared</b> </p> <p>This example directory contains the shared
+files to be used by other directories for synchronous and asynchronous operations. </p> <p><b>SuppleServices</b> </p> <p>This
+example retrieves the current status of the following services: </p> <ul>
+<li id="GUID-E1D17AB9-54A7-5EFB-A20F-5AA9A1D4BF3C"><p>call barring services
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-EDBA2DB4-976B-3FC6-9CED-ACD74A081788"><apiname>CTelephony::GetCallBarringStatus()</apiname></xref> function, </p> </li>
+<li id="GUID-F9338E27-96B4-54A6-BB27-8EDFB61DAE26"><p>call forwarding services
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-3D885BC3-1BBE-3673-A647-48F221D1A687"><apiname>CTelephony::GetCallForwardingStatus()</apiname></xref> function, </p> </li>
+<li id="GUID-70CEDAB7-6BD2-5F8B-BEFB-36B79223C9FC"><p>call waiting services
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-2B8C749F-5614-388E-B368-0EEFB32219B5"><apiname>CTelephony::GetCallWaitingStatus()</apiname></xref> function, </p> </li>
+<li id="GUID-D2A45950-D676-54F8-A365-AAC53160CE86"><p>call identity services
+using the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita#GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A/GUID-768817E6-D985-3C18-AD12-448D192B460F"><apiname>CTelephony::GetIdentityServiceStatus()</apiname></xref> function. </p> </li>
+</ul> </section>
+<section><title>Class summary</title> <p>The principal class used in this
+example is <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>. </p> </section>
+<section id="GUID-F065BEFB-810D-5C25-97FD-8D953515D249"><title>Configuring
+the simulator TSY</title> <p>To run the application you must configure the
+Simulator TSY. To do this, install the configuration files by performing the
+following steps: </p> <ol id="GUID-A72585E2-49F7-56CA-957F-2AAA6D2ADF9B">
+<li id="GUID-38B9A560-6511-5EC7-BB96-DD1ECBED96E2"><p>Copy the <filepath>config.txt</filepath> file
+and the <filepath>TelephonyISVAppConfig.cfg</filepath> file into the <filepath>\epoc32\winscw\c\</filepath> directory
+of the phone. </p> </li>
+<li id="GUID-3422372C-9843-55A2-9DB8-83A28EF61C94"><p>From the command prompt,
+go to the source root directory. </p> </li>
+<li id="GUID-A86CA3CE-500B-575F-BB3B-D4825579BA97"><p>Change directory to <filepath>\epoc32\release\winscw\udeb</filepath> and
+run the following command: </p> <p><userinput>ced c:\TelephonyISVAppConfig.cfg </userinput> </p> </li>
+<li id="GUID-8AFA4C77-F78F-5672-AF9C-E999930E1E51"><p>Check the <filepath>ced.log</filepath> file
+to ensure that the configuration file has been read successfully. </p> </li>
+</ol> </section>
+<section id="GUID-67006F52-C18C-576E-B645-20AE6CCD61C4"><title>Building and
+running</title> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build an application. </p> <p>The <codeph>ETel3rdPartyExample</codeph> builds
+the following executables in the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for
+CodeWarrior): </p> <ul>
+<li id="GUID-443AF336-E3B4-507E-9A13-A6AB7912B79F"><p> <filepath> phoneid.exe</filepath>  </p> </li>
+<li id="GUID-DAB579A4-B8D2-570E-BD25-5C5F9F5B90B5"><p> <filepath>phonemonitor.exe</filepath>  </p> </li>
+<li id="GUID-243981B3-581D-5716-AA4E-44FA6392E7D4"><p> <filepath>networkinformation.exe</filepath>  </p> </li>
+<li id="GUID-0799DF67-6E1E-5584-B9B5-5F146977E10A"><p> <filepath>suppleservices.exe</filepath>  </p> </li>
+<li id="GUID-1D7E2526-E35C-5522-BF06-C1CC72E5B15D"><p> <filepath>outgoingcalls.exe</filepath>  </p> </li>
+<li id="GUID-717B32F7-2DBE-5088-8B42-AC3437B39315"><p> <filepath>autodtmf.exe</filepath>  </p> </li>
+<li id="GUID-85027887-4C27-56FF-8A11-7ADE2BC89F93"><p> <filepath>incomingcalls.exe</filepath>  </p> </li>
+</ul> <p>Each executable must be run separately. </p> <p> <b>Note:</b> Set
+the <codeph>StartUpMode</codeph> mode to <codeph>1</codeph> in the <filepath>\epoc32\data\epoc.ini</filepath> file
+to start the emulator in text shell mode as the applications use a console
+based interface. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92A4F66E-252D-5C90-AE59-1B1991002D7B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-92A4F66E-252D-5C90-AE59-1B1991002D7B"><title>Installing a Font Rasterizer DLL</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita">Font Store</xref> automatically loads rasterizer DLLs from <filepath>\sys\bin\</filepath> on all drives at startup. The search path is soft to hard ( Y:, X:, W:, ..., C:, B:, A:, Z:) and if two or more files have the same name the first one found is used. This means that files in the ROM (Z:) can be replaced with files on user drives. </p> <p>Rasterizers are identified by their signatures: the second UID is <codeph>KUidOpenFontRasterizerValue</codeph> and they have the extension <filepath>.DLL</filepath>. </p> <p>To install a font rasterizer DLL: </p> <ul><li id="GUID-05B1DCC7-616E-518D-8E22-7D88BBEBBB75"><p>Copy it into <filepath>\sys\bin\</filepath> on any drive. </p> </li> <li id="GUID-8D9C4F93-8795-597C-80D0-26438AC61317"><p>Restart the device to restart the Font and Bitmap server. </p> <p>Note: there is no way to load a rasterizer without a restart. All rasterizers must be present on the device when the Font and Bitmap Server starts up. </p> </li> </ul> </conbody><related-links><link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692" xml:lang="en"><title>Sensor
+Data Compensator Overview</title><shortdesc>The Sensor Data Compensator provides APIs to correct sensor data,
+based on device or display orientation. That is, using the APIs, the coordinate
+system can be adjusted appropriately to get correct sensor axis data in relation
+to the Symbian device user's current display orientation.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-173CC4BB-4C2D-43B0-9ADD-85C716B9297B"><title>Description</title> 
+     <p>The sensor channel APIs retrieve coordinate information and angle
+data from different sensors when a display or device orientation change is
+detected. The data is bound to the device form factor and hardware configuration
+using device based coordinate system. Using the data, the sensor data compensator
+APIs can adjust the coordinate system to match the changed system characteristics.
+This procedure is called sensor data compensation. </p><p>For example, if
+a display orientation change (as illustrated in the following figure) is detected,
+the accelerometer sensor provides axis data using the device base coordinate
+system. To convert the axis data to match the current display orientation,
+sensor data compensator APIs can be used. The data compensator APIs enable
+you to adjust the coordinate system to match the changed system characteristics.</p><fig id="GUID-CB810DA3-6532-47DF-878E-A0D8A07ACC7C">
+<title>Example to illustrate adjustment of the coordinate system due to device
+orientation change</title>
+<image href="GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e114448_href.png" placement="inline"/>
+</fig><p>To convert the sensor data to the compensated values, the adjustment
+values (for example, interchanged x-axis with y-axis) for each device state
+that the compensation is applied to, must be configured and taken as an input
+for calculations.</p><fig id="GUID-15844543-6586-43AE-87C8-B90A4D24404D">
+<title>Correcting the coordinate system of a Symbian device</title>
+<desc>The figure depicts the correction of coordinate system in the Symbian
+device</desc>
+<image href="GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e114460_href.png" placement="inline"/>
+</fig><p>The following example explains how the sensor data compensation works,
+by illustrating the behavior of maps application of the Symbian device when
+the keyboard is in opened and closed state. </p><table id="GUID-6CF1E7CE-0076-415F-BF6A-E92034B6F6D4">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top">Symbian device position</entry>
+<entry valign="top">Symbian device movement</entry>
+<entry valign="top">Application behavior</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>The keyboard is closed and the display is upward and parallel with
+the table surface</entry>
+<entry>The Symbian device spins around the z-axis</entry>
+<entry>The compass needle points to the north and the map does not move on
+the screen.</entry>
+</row>
+<row>
+<entry>The keyboard is opened and the display is upward and parallel with
+the table surface</entry>
+<entry>The Symbian device spins around the z-axis</entry>
+<entry>The compass needle points to the north and the map is always in the
+north-south direction on the screen.</entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-983C07BB-4B1A-4030-A533-22728BDCF281"><title>APIs</title><table id="GUID-B0112D3A-0CCB-47FF-BF2C-6DC4EE1217A7">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>CSensorDataCompensator</entry>
+<entry>The sensor data compensator class provides functions to
+compensate sensor data.</entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+<section id="GUID-E046AE53-A268-4085-8BF4-293873115857"><title>Typical Uses</title><ul>
+<li><p><xref href="GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita">Compensating
+Sensor Data</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-92C2317A-57B8-558E-984B-B10FD0404981" xml:lang="en"><title>Searching
+a DOM Tree using XPath</title><shortdesc>This topic explains how to search in a DOM tree using an XPath
+expression. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before you start, you must: </p> <ul>
+<li id="GUID-3B777E07-07AE-5EF0-8CB1-F07217AFB2C2"><p>understand <xref href="http://www.w3schools.com/XPath/xpath_syntax.asp" scope="external">XPath syntax</xref> and the concept of <xref href="http://www.w3.org/DOM/" scope="external">Document Object Model (DOM)</xref>. </p> </li>
+<li id="GUID-ADB75A14-811C-53F9-90C3-B068D1506EE1"><p>understand the architecture
+and classes of the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML
+Engine</xref> component. </p> </li>
+<li id="GUID-1AF969E2-E11F-538B-A33C-762B1F0E5EA6"><p>have created an <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDocument</apiname></xref> (called <codeph>myDoc</codeph> in this
+example), either by parsing an XML file (as indicated in the <xref href="GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita">XML
+DOM Parsing Tutorial</xref>) or by adding nodes to a new DOM tree. </p> </li>
+</ul> </prereq>
+<context><p>XPath is a simple query language for XML. An XPath expression
+describes a subset of an XML tree, such as all the elements with a specified
+name, or all the children of a specific node. Evaluating an XPath expression
+means searching in the XML tree for matching nodes or content: clients of
+the XML Engine use it to explore XML data. </p> <p>The following steps show
+how to make an XPath query with the XML Engine. </p> </context>
+<steps id="GUID-AE83D04E-2094-5F9C-AD56-D9803C96FB2C">
+<step id="GUID-3E1709B9-A282-533F-B893-3E4962B29AA4"><cmd>Create an instance
+of <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngXPathExpression</apiname></xref> by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngXpathEvaluator::CreateExpressionL()</apiname></xref> method. </cmd>
+<stepxmp><codeblock id="GUID-95ED0151-D8E7-5CB2-9F3A-90C691B253B1" xml:space="preserve">RXmlEngXPathExpression expr = TXmlEngXpathEvaluator::CreateExpressionL( "@*" );</codeblock> </stepxmp>
+<info>This XPath expression is only useful to illustrate this tutorial: it
+returns all the attributes in an XML tree. </info>
+</step>
+<step id="GUID-77F768C2-E2F8-55AF-AAC3-DF95347AFBD2"><cmd/>
+<info>Evaluate the XPath expression by applying it to your XML document. </info>
+<stepxmp><codeblock id="GUID-65F9578E-CF76-5CCA-A8F5-D73E32C7D9D8" xml:space="preserve">RXmlEngXPathResult searchResult = expr.EvaluateL( myDoc );</codeblock> </stepxmp>
+<stepresult>The <codeph>searchResult</codeph> variable contains a tree of <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngAttr</apiname></xref> objects. This tree is a subset of the DOM
+tree. </stepresult>
+</step>
+<step id="GUID-C9981839-7BDB-5448-B161-A3524DD79AC9"><cmd/>
+<info>Use the result, for example by accessing it as a node set as follows: </info>
+<stepxmp><codeblock id="GUID-ABFD2D88-C8A0-58FE-9408-05B3F2714794" xml:space="preserve">RXMLEngNodeSet set = result.AsNodeSet();
+if( for TInt i = 0; i &lt; set.Length(); i++ )
+    {
+    TXmlEngNode resultNode = set[i];
+    /* [...] do something with the result */
+    }</codeblock> </stepxmp>
+</step>
+<step id="GUID-0D55DFAA-B583-5582-B197-8D07DEF37636"><cmd/>
+<info>Free your resources as necessary. </info>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E.dita"><linktext>Serialising
+XML DOM</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-92D6CC11-C597-5D00-AAE5-866289B7462F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-92D6CC11-C597-5D00-AAE5-866289B7462F"><title>MTM Resource File</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the MTM resource file format that is used for installing MTMs. </p> <section><title>Description</title> <p>You have to create and deliver an MTM resource file to register the MTM with the Message Server. The Message Server searches the ROM drive for MTM resource file on start-up and it automatically registers any MTMs found. </p> <p>MTMs are represented by four DLLs on the device, which are placed in a specific directory. The system finds installed MTMs by scanning the <filepath>\resource\messaging\mtm</filepath> directory on all drives for resource files containing a resource of type <xref href="GUID-50D650D3-8B2B-3FED-B09C-087971EEE7C9.dita"><apiname>MTM_INFO_FILE</apiname></xref>. </p> <p> <b>Important:</b> This compiled resource file must define the MTM's properties using the resource structures <xref href="GUID-50D650D3-8B2B-3FED-B09C-087971EEE7C9.dita"><apiname>MTM_INFO_FILE</apiname></xref>, <xref href="GUID-7D5C9320-17AB-381E-8369-1804EB143199.dita"><apiname>MTM_CAPABILITIES</apiname></xref> and <xref href="GUID-C4058AFE-56A4-3B43-B80C-8D03D15A0C2D.dita"><apiname>MTM_SECURITY_CAPABILITY_SET</apiname></xref>. </p> <p>The <xref href="GUID-50D650D3-8B2B-3FED-B09C-087971EEE7C9.dita"><apiname>MTM_INFO_FILE</apiname></xref> resource must define a MTM_COMPONENT_V2 resource for each MTM DLL for the Messaging protocol. This structure is as follows: </p> <ul><li id="GUID-FE61DA3D-BBCB-500C-9B4C-4EE6DFC964E8"><p>The second UID of DLL—indicates the message type or the protocol, such as SMTP, POP3, IMAP4, SMS that the MTM considers. </p> </li> <li id="GUID-4C9E649E-AAD1-5B9B-BEB5-4F2B738302CC"><p>The third UID of DLL—indicates the message type or the protocol (SMTP, POP3, IMAP4, SMS) that the MTM considers. </p> <p> <b>Note:</b> In practice, the MTM type UID may be different for each MTM. The technology type UID may be the same for an attached group of MTMs, such as the POP and SMTP MTMs, which are separate but work together. </p> </li> <li id="GUID-18AA66D4-44E7-51A4-8719-09EB25770D8C"><p>Ordinal number—indicates where the MTM component’s factory function can be found in the registered DLL. </p> </li> <li id="GUID-97AD0551-C80F-5446-AB10-14DF4E8A7A40"><p>Human-readable name—used to show to the user the available message types when the user has requested a Send As or a similar operation. </p> <p> <b>Note:</b> MTM UIDs are used to identify MTMs to the registry, but it is recommended to have meaningful (human-readable) names. </p> </li> <li id="GUID-2DA2E510-F9C9-52A4-9968-98FAEB825CFA"><p> <xref href="GUID-D82DEC7A-71C2-3004-BFC2-C82C009A2715.dita"><apiname>TVersion</apiname></xref> structure—version information, to allow updating of the MTMs by an installation program. </p> </li> </ul> <p> <b>Note:</b> The Message Server's <xref href="GUID-F8FB7A3E-9F7E-399A-AB40-C2E0D6777025.dita"><apiname>CMtmDllInfo</apiname></xref> class encapsulates the registration data for an MTM and the run-time data held for a registered MTM is represented by the <xref href="GUID-0D5D7FAC-4F14-3046-92FB-873B8350FF4C.dita"><apiname>CRegisteredMtmDll</apiname></xref> class. </p> <p> <b>Important:</b> The resource file must have the Server MTM DLL and Client MTM DLL information to handle various message manipulation functions in the server. </p> </section> <section><title>Example</title> <p>The following code snippet shows the details of an MTM resource file. </p> <codeblock id="GUID-6A043853-66EC-563E-9AE1-F0A96F32A254" xml:space="preserve">// txtdat.RSS
+//
+// Copyright (c) 2008 Symbian Ltd.  All rights reserved.
+//
+
+#include &lt;mtmconfig.rh&gt;
+
+RESOURCE MTM_INFO_FILE
+    {
+    mtm_type_uid = 0x100012FA;
+    technology_type_uid = 0x10001626;
+    components = 
+        {
+        MTM_COMPONENT_V2
+            {
+            human_readable_name = "My server dll info";
+            component_uid = KUidMtmServerComponentVal;
+            entry_point = 1;
+            version = VERSION_V2 {};
+            filename = "z:\\system\\libs\\servermtm.dll";
+            },
+        MTM_COMPONENT_V2
+            {
+            human_readable_name = "My client dll info";
+            component_uid = KUidMtmClientComponentVal;
+            entry_point = 1;
+            version = VERSION_V2 {};
+            filename = "z:\\system\\libs\\clientmtm.dll";
+            },
+        MTM_COMPONENT_V2
+            {
+            human_readable_name = "My ui dll info";
+            component_uid = KUidMtmUiComponentVal;
+            entry_point = 1;
+            version = VERSION_V2 {};
+            filename = "z:\\system\\libs\\dummyuimtm.dll"; // this does not exist
+            },
+        MTM_COMPONENT_V2
+            {
+            human_readable_name = "My ui data dll info";
+            component_uid = KUidMtmUiDataComponentVal;
+            entry_point = 1;
+            version = VERSION_V2 {};
+            filename = "z:\\system\\libs\\dummyuidatamtm.dll"; // this does not exist
+            }
+        };
+    }
+// flags to indicate that can send messages, and handle body text
+RESOURCE MTM_CAPABILITIES
+    {
+    send_capability = 1;
+    body_capability = 1;
+    }
+
+// additional capabilities required by clients of the MTM
+RESOURCE MTM_SECURITY_CAPABILITY_SET
+    {
+    capabilities = { ECapabilityNetworkServices };
+    }</codeblock> </section> </conbody><related-links><link href="GUID-B79B6DD2-40C5-591B-AF56-5ACD167C66F5.dita"><linktext>Installing an MTM</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93069514-BC40-5E53-B126-F5C5C43C3D83.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-93069514-BC40-5E53-B126-F5C5C43C3D83" xml:lang="en"><title>Exporting
+a Private Key</title><shortdesc>This section explains the steps to export a private key from the
+keystore. Private keys can be exported in plain text and encrypted formats. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The following steps explain the process of exporting a private
+key: </p></context>
+<steps id="GUID-57C9001B-6CC1-5178-8B12-26E62649DD30">
+<step id="GUID-D7C51FBC-5075-5CBB-AB88-760C522B1371"><cmd/>
+<info>Create a file system session using an <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object. </info>
+</step>
+<step id="GUID-1B781B79-7AC3-5075-A2CB-8852076D5CEA"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-801F826D-B469-5D19-90FF-D78A4C69A302"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-C7934758-ACC0-5343-8A7E-E4D5BFDB53C9"><cmd/>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function to list
+the keys of the keystore. Retrieve the handle of the private key to be exported. </info>
+</step>
+<step id="GUID-4B27945E-3202-5044-9B38-A30768721F1C"><cmd/>
+<info>Invoke the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C94CA3E9-F2D9-32B4-B691-29FF58293264"><apiname>CUnifiedKeyStore::ExportKey()</apiname></xref> function
+for exporting the private key in plain text format or the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-74223F7E-C4D2-3208-88FE-03D14860A5A6"><apiname>CUnifiedKeyStore::ExportEncryptedKey()</apiname></xref> function
+for exporting in encrypted format. </info>
+</step>
+</steps>
+<result><p>A private key is exported in plain text or encrypted format. </p> </result>
+<example id="GUID-0C2E82D5-5297-5A9C-A258-26B2DA29BC9A"><title>Example</title> <p>The
+following code snippet shows how to set a file system session object, list
+the keys in the keystore and then export the selected private key in plain
+text format. </p> <codeblock id="GUID-E6FECC50-782D-5B03-B680-A58E7A1F3651" xml:space="preserve">
+
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+//List the keys of the keystore
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; //This variable will contain the result after the completion of the export operation
+TCTKeyAttributeFilter  filter.iUsage = EPKCS15UsageAll;
+keyStore-&gt;List(iKeys, filter, iStatus);
+
+...
+
+
+//Retrieve the handle of the private key to be exported
+_LIT(KLabel,”keylabel”);
+TInt keyIndex;
+
+//Select the key
+for (TInt j = 0; j &lt; iKeys.Count(); j++)
+    {
+    if (iKeys[j]-&gt;Label() == KLabel) 
+        {
+         keyIndex = j;
+         break;
+        }
+    }
+
+...
+
+
+//Export the key 
+HBufC8* iKeyData = NULL;
+TCTTokenObjectHandle aHandle = iKeys[keyIndex]-&gt;Handle();
+keyStore-&gt;ExportKey(aHandle, iKeyData, iStatus);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-F6625E22-BFB2-5367-A1A8-916252999B78.dita"><linktext>Exporting
+a Public Key</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93086866-F6E1-5715-A3BE-EEACF8A760DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-93086866-F6E1-5715-A3BE-EEACF8A760DB"><title>Frameworks, Libraries and DLLs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian platform C++ supports two fundamentally different ways of using DLLs, called polymorphic interface DLLs and static interface DLLs. This topic describes these types and for what purposes they are used. </p> <section><title>Types of DLL</title> <p>Like other modern object-oriented systems, the Symbian platform makes extensive use of frameworks. A framework is a software system that defines a collection of abstract base classes and ready-made concrete classes, and which is designed for extension. The framework is shipped as part of the operating system in one or more system DLLs. These DLLs are conventional static interface DLLs, which export functions that can be called by other code that builds against its header files and links against its import library. </p> <p>To use the framework, a programmer derives a new implementation from its abstract base classes, providing new behaviour where required and making use of the default implementation otherwise. Traditionally on the Symbian platform, the new implementation is then built as what's known as a <i>polymorphic interface DLL</i>. Instead of exporting a table of functions which require an import library in order to identify them correctly, a polymorphic interface DLL exports a single function only at a well known location. Calling this function creates an instance of the newly derived framework class. </p> <p>An alternative to polymorphic DLLs is supplied by the <i>ECom plug-in architecture</i>. This is a generic framework for specifying plug-in interfaces, and for calling and writing plug-ins. Newer Symbian platform frameworks, such as those for SyncML and for the Transport Architecture, require plug-ins to be written using ECom, rather than polymorphic DLLs. Such frameworks delegate finding and instantiating suitable plug-in objects to ECom, rather than managing these tasks themselves. </p> <p> <i>Static interface DLLs</i> are also known as shared library DLLs. As well as providing system APIs, they also have a place in applications programming. In a complex project, abstraction and modularisation can be achieved by designing a system as a collection of separate units, each of which encapsulates a piece of the logical design and provides it as a black box to the rest of the system. Each unit is known to others only by its API, and is built as a library DLL. </p> <p>The Symbian platform build environment is designed to minimise the complexity to Symbian developers of working with multiple program types. Every project is fully specified by its project file, and makefiles are generated from project files by the toolchain. Correctly declaring the target type in the project file will ensure the correct build process and generate an appropriate target. Thus, ECom plug-ins are built as as <codeph>plugin</codeph> type targets, and static interface DLLs as <codeph>dll</codeph> type targets. </p> </section> <section><title>Use of frameworks</title> <p>Frameworks are a natural extension of the programming style which encourages memory efficient code reuse by implementing system APIs in DLLs. (In contrast, older systems require that object code libraries be linked in statically with every executable which uses them.) Frameworks take the notion of an API a step further and provide both architecture and ready-made building blocks for re-use. This makes them well suited to OO systems. </p> <p>For most Symbian developers most of the time, therefore, working with the Symbian platform means working with frameworks. This includes all programs which use the Application Architecture or the UIKON GUI framework. It also includes more specialist programming, including printer driver and device driver implementation, as well as writing new hardware abstractions to extend existing subsystems like comms or telephony, and implementing new protocols to extend the networking subsystem. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9309D482-8931-58FC-9B34-D0E5E942E404.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9309D482-8931-58FC-9B34-D0E5E942E404" xml:lang="en"><title>Array
+keys</title><shortdesc>This document provides an introduction to array keys.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A key is used by an array for sorting and finding elements and can also
+be used to locate the insertion position for new elements.</p>
+<p>The characteristics of a key are defined by a key object, constructed from
+one of the three concrete classes: <codeph>TKeyArrayFix</codeph>, <codeph>TKeyArrayVar</codeph> and <codeph>TKeyArrayPak</codeph>.
+In general, the choice of key class depends on the type of array being used
+and the specific member function of that array.</p>
+<p><codeph>TKeyArrayFix</codeph> is used by the following functions accessible
+through the <codeph>CArrayFixFlat</codeph> and <codeph>CArrayFixSeg</codeph> classes:</p>
+<ul>
+<li id="GUID-0E7B4699-4F6C-55C2-89B1-745150DC093F"><p><codeph>Sort()</codeph> </p> </li>
+<li id="GUID-A93FD22C-3AF2-52B9-A0A0-97AD55A4AD10"><p><codeph>InsertIsqL()</codeph> </p> </li>
+<li id="GUID-517388FF-9C57-57C2-B298-0CAAB089F115"><p><codeph>Find()</codeph>  </p> </li>
+<li id="GUID-361EC51C-F9C6-59CE-94F3-080B709A5CEE"><p><codeph>FindIsq()</codeph> </p> </li>
+</ul>
+<p><codeph>TKeyArrayVar</codeph> is used by the following functions accessible
+through the <codeph>CArrayVarFlat</codeph> and <codeph>CArrayVarSeg</codeph> classes:</p>
+<ul>
+<li id="GUID-FDC42164-4F6A-59A4-8068-253E2D7B4702"><p><codeph>Sort()</codeph> </p> </li>
+<li id="GUID-DF54D24C-B784-5297-8995-B9DFA228E773"><p><codeph>InsertIsqL()</codeph> </p> </li>
+<li id="GUID-CC54EE8D-EA27-527A-B9CB-3BEA2D672547"><p><codeph>Find()</codeph>  </p> </li>
+<li id="GUID-68A69B6F-1906-59C1-8502-74FAC80C2677"><p><codeph>FindIsq()</codeph> </p> </li>
+</ul>
+<p><codeph>TKeyArrayVar</codeph> is also used by <codeph>CArrayPakFlat::SortL()</codeph>.</p>
+<p><codeph>TKeyArrayPak</codeph> is used by the following functions accessible
+through the <codeph>CArrayPakFlat</codeph> class:</p>
+<ul>
+<li id="GUID-B180F59C-24BF-502B-BC94-2C1E67CB80DB"><p><codeph>InsertIsqL()</codeph> </p> </li>
+<li id="GUID-E4023130-CE1E-5E46-90AC-76958E346424"><p><codeph>Find()</codeph>  </p> </li>
+<li id="GUID-D31FCB05-78CB-51C5-8320-8B53362B83CD"><p><codeph>FindIsq()</codeph> </p> </li>
+</ul>
+<p>The concrete classes are all derived from the abstract base class <codeph>TKey</codeph> that
+encapsulates the characteristics of a key and defines the basic behaviour
+of keys. A class such as <codeph>TKeyArrayFix</codeph> provides an implementation
+for specific arrays or types of array.</p>
+<p>A key object is not a component of an array class but is constructed separately
+and passed, as an argument, to the appropriate array class member function.
+A key definition is not an integral part of an array, but is <i>used</i> by
+an array.</p>
+<p>A <codeph>TKey</codeph> derived object is also passed as an argument to
+the <codeph>User::BinarySearch()</codeph> and <codeph>User::QuickSort()</codeph> functions.</p>
+<p>An array can use various different key definitions during its life.</p>
+<p>The characteristics of a key as defined by the base <codeph>TKey</codeph> class
+are:</p>
+<ul>
+<li id="GUID-B73CBD70-BA02-55CF-915C-5E2CB5B1D2D3"><p>The type of data forming
+the key.</p> </li>
+<li id="GUID-0CD99B8B-0339-56F3-9ADA-888100D9EE05"><p>The type of comparison
+to be made between two keys.</p> </li>
+<li id="GUID-22BE001D-5C54-53C8-B4BE-7253182C5672"><p>The length of the key
+within an array element.</p> </li>
+<li id="GUID-394C8FE9-C9FB-593A-9A2B-6B682F0E8939"><p>The location of the
+key within an array element.</p> </li>
+</ul>
+<p>See also:</p>
+<ul>
+<li id="GUID-3B74F364-852D-58E8-B24B-368290034A8C"><p><xref href="GUID-E3F403EE-717B-5EA6-BC4E-6840097CAC10.dita">Using
+dynamic arrays</xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6"><title>Processing System Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following examples give some suggestions about how to process events related to the whole system, rather than individual windows or window groups. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <section><title>Window group with focus changes</title> <p>To detect if the window group with focus has changed, use the <codeph>EEventFocusGroupChanged</codeph> event type. </p> <p>You can get the handle of the window group with focus by calling the <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-1B9B5EE1-A999-3E5D-BAC5-96438BD27308"><apiname>RWsSession::GetFocusWindowGroup()</apiname></xref> function for the <codeph>iWs</codeph> Window Server session. </p> <codeblock id="GUID-A1E0F429-D06C-57D7-8D40-F43114B7FD80" xml:space="preserve">    // Window group with focus changes
+    case EEventFocusGroupChanged:
+        {
+        // Get the handle of the group with focus
+        TInt handle = iWs.GetFocusWindowGroup();
+        break;
+    }</codeblock> </section> <section><title>Window group destroyed, or changes name</title> <p>To detect if the window group has been destroyed or changed name, use the <codeph>EEventWindowGroupsChanged</codeph> event type. </p> <p>You can get a list of identifiers of window groups in the Window Server session by calling <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-8428FE72-E59F-3350-AE45-81ACB0463FAA"><apiname>RWsSession::WindowGroupList()</apiname></xref>. Call the <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-D9A204BF-192D-3B94-803B-3DABC7E0E074"><apiname>RWsSession::GetWindowGroupNameFromIdentifier()</apiname></xref> function to get the window group name passed to it in the <codeph>windowName</codeph> buffer. </p> <codeblock id="GUID-03531EA6-CAD6-5C75-9B7D-26A4EB66B164" xml:space="preserve">    // Window group destroyed, or changes name
+    case EEventWindowGroupsChanged:
+        {
+        // Get a list of the names and IDs of the all the window groups
+        CArrayFixFlat&lt;Tint&gt;* windowList = new CArrayFixFlat&lt;TInt&gt;(4);
+        CleanupStack::PushL(windowList);
+
+        // Get a list of window group IDs
+        User::LeaveIfError(iWs.WindowGroupList(windowList));
+        TBuf&lt;50&gt;windowName;
+        for (TInt I = 0; I&lt; windowList -&gt; Count(); I++)
+            {
+            // Get the window name for each window group ID
+            iWs.GetWindowGroupNameFromIdentifier( (*windowList)[I], windowName );
+
+            // do something with windowName...
+            // ..
+            }
+            CleanupStack::PopAndDestroy(); // windowList
+            break;
+        }</codeblock> </section> <section><title>Screen size mode changed</title> <p>To detect if screen size or mode changed event has been issued, use the <codeph>EEventScreenDeviceChanged</codeph> event type. </p> <p>You can get the screen rotation and size by calling <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-45FC8DC7-B17F-34E6-806C-B8BA585F4FD6"><apiname>CWsScreenDevice::GetScreenModeSizeAndRotation()</apiname></xref>. Pass as parameters the current screen mode and a <xref href="GUID-1AC86B43-CEAF-337D-A56C-0FFC42D435FD.dita"><apiname>TPixelsTwipsAndRotation</apiname></xref> object to get the orientation of the specified screen mode, and its size in both pixels and twips. </p> <codeblock id="GUID-63A5F00C-FA5D-5826-9217-C96087698394" xml:space="preserve">    // Screen size mode changed
+    case EEventScreenDeviceChanged:
+        {
+        // Get the new screen mode and size
+        TInt newMode = iScreen.CurrentScreenMode();
+        TPixelsTwipsAndRotation sizeAndRotation;
+        iScreen.GetScreenModeSizeAndRotation(newMode, sizeAndRotation);
+        break;
+        }</codeblock> <p>Note that for screen size mode changed events, often after having got the new size and rotation you would set it back on your screen device. </p> <p>In ScreenPlay this event is related to the <xref href="GUID-6426E0A6-35F2-3704-962C-0A8AE8AF7226.dita"><apiname>EEventDisplayChanged</apiname></xref> event. See <xref href="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita">Display Control and Mapping in the Window Server Client</xref> for more information. </p> </section> <section><title>Power on/off events</title> <p>To detect if power on/off events have been issued, use the <codeph>EEventSwitchOn</codeph>, <codeph>EEventSwitchOff</codeph> or <codeph>EEventKeySwitchOff</codeph> event types. </p> <codeblock id="GUID-EDAEABB6-E46A-5B90-A3D1-288782AE2349" xml:space="preserve">    // Power on/off events
+    case EEventSwitchOn:
+    case EEventSwitchOff:
+    case EEventKeySwitchOff:
+        {
+        break;
+        }</codeblock> </section> <section><title>Case open/closed events</title> <p>To detect if case open/closed events have been issued, use the <codeph>EEventCaseOpened</codeph>, <codeph>EEventCaseClosed</codeph> event types. </p> <codeblock id="GUID-4F3002C7-302F-5D3F-80D4-9B3425394E5A" xml:space="preserve">    // Case open/closed events
+    case EEventCaseOpened:
+    case EEventCaseClosed:
+        {
+        break;
+        }</codeblock> </section> <section><title>A Window Server error event message</title> <p>To detect if an error event message has been issued, use the <codeph>EEventErrorMessage</codeph> event type. </p> <p>You can get information about the error event by calling the <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita#GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31/GUID-61587DF0-0AA7-3287-B398-C83E5902E8C4"><apiname>TWsEvent::ErrorMessage()</apiname></xref> function. </p> <codeblock id="GUID-6953396C-B619-5172-8146-6D555AF7DEA1" xml:space="preserve">    // A Window Server error event message
+    case EEventErrorMessage:
+        {
+        // Get error category and code
+        TWsErrorMessage* msg = iWsEvent.ErrorMessage();
+        TWsErrorMessage::TErrorCategory errorCategory = msg -&gt; iErrorCategory;
+        TUint code = msg -&gt; iError;
+        break;
+        }</codeblock> </section> </conbody><related-links><link href="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita"><linktext>Handling General Events</linktext> </link> <link href="GUID-B830A1F7-9220-5879-80BE-C494A4CD155B.dita"><linktext>General Events</linktext> </link> <link href="GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita"><linktext>Declaring a
+                Window Server Event-Handling Class</linktext> </link> <link href="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita"><linktext>Processing Window-Group
+                Events</linktext> </link> <link href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita"><linktext>Processing Window Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD" xml:lang="en"><title>Audio
+Component Framework Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial describes how to use the Audio Component Framework (ACF). </p>
+<section><title>Purpose</title> <p>The purpose of this tutorial is to show
+you how to create an audio processing group containing a context, an audio
+stream and three audio processing units. </p> <p><b>Required
+Background</b> </p> <p>The following entities, specific to the Advanced Audio
+Adaptation Framework (A3F), are used to create an audio processing group: </p> <ul>
+<li id="GUID-437689C6-7501-5BBA-BC9C-CE35B6A104C7"><p>Context - one or more
+audio streams. </p> </li>
+<li id="GUID-D9B2967A-6BED-54DD-B1CF-90E9BCC60A79"><p>Audio stream - a source,
+a codec and a sink. </p> </li>
+<li id="GUID-18329FD1-5363-57E4-BA69-4B737F58879D"><p>Source - a source of
+multimedia data. </p> </li>
+<li id="GUID-B1158E48-D25E-5B54-BF27-435C4C6059C7"><p>Codec - an encoder or
+decoder of multimedia data. </p> </li>
+<li id="GUID-7BB58E22-E16A-5916-9A42-C2244904217C"><p>Gain control - a controller
+of gain balance. </p> </li>
+<li id="GUID-58F62DBD-7F05-59CD-8FCD-20095A4D10F8"><p>Sink - a consumer of
+multimedia data. </p> </li>
+</ul> <p><b>Introduction</b> </p> <p>To
+define audio functionality, the client must group the required audio processing
+units into an audio processing group. The starting point for the group is
+the context. Once a context has been created, an audio stream can be added
+to it. Once the audio stream has been added, the necessary audio processing
+units can be added. </p> </section>
+<section><title>Using ACF </title> <p>The framework described in this document
+allows you to manage and manipulate an audio processing group. </p> <p><b>Basic
+Procedure</b> </p> <p>The high level steps to create a context are shown here: </p> <ol id="GUID-269C487C-3778-586C-8B4D-6FA44FC14B65">
+<li id="GUID-153626D8-0BE8-520A-9309-EEF8F588872F"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-DD660782-09C6-5F45-9E1B-F9F1BAF48759">Create an ACF Factory</xref>  </p> </li>
+<li id="GUID-2DC88104-A404-5AAA-9293-77AD3CA3029C"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-9027F6F9-F8AB-5A87-A1D3-9A554C014296">Create and Configure the Context</xref>  </p> </li>
+<li id="GUID-2F225F37-F1D5-55B3-A3D6-CEC6F9ED4D61"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-97F42EDA-96C6-53DC-926D-20EE32660730"> Create and Configure the Audio Stream</xref>  </p> </li>
+<li id="GUID-0371A58A-47A6-5004-BC47-B844B16588F8"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-72F15689-BF39-5B01-BF77-5E3AA5258992">Add the Audio Source</xref>  </p> </li>
+<li id="GUID-217A1FBF-11AA-5F34-9597-9DBA8B3418D3"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-CB8D6E17-4977-590C-8153-0D0403370583"> Add the Audio Codec</xref>  </p> </li>
+<li id="GUID-0D6331F7-153D-5DB0-AF5A-7848C7A9B4B4"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-A2B536EF-3188-55FA-965A-F648742A94F8">Add the Audio Sink</xref>  </p> </li>
+<li id="GUID-78ED0513-F30E-5A2C-B65B-0F07BD10491F"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-F4E5DAD7-74D0-5946-98E5-D13C3FDF0F0D"> Commit the Changes</xref>  </p> </li>
+<li id="GUID-90BE6318-8993-5B60-86DC-81B810388990"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita#GUID-931207BE-3561-562D-8F67-0FB52CFF83CD/GUID-A09373E4-877F-5738-89CC-8D3F2CE52FC2">Initialize the Audio Stream</xref>  </p> </li>
+</ol> <p id="GUID-DD660782-09C6-5F45-9E1B-F9F1BAF48759"><b>Creating an ACF Factory</b> </p> <p>The
+steps to create an ACF Factory are shown here: </p> <ul>
+<li id="GUID-AD1CAAA7-6E8F-578D-9968-C9338C0FBAD8"><p>Construct a new instance
+of <codeph>CAudioContextFactory</codeph> using the <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita#GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73/GUID-D8C563D4-34AC-3460-BE6F-A19D3B1D5D23"><apiname>CAudioContextFactory::NewL()</apiname></xref> factory
+function. </p> <codeblock id="GUID-6BB8B93D-9506-507C-A946-C410CF69B711" xml:space="preserve">IMPORT_C static CAudioContextFactory* NewL();</codeblock> </li>
+</ul> <p id="GUID-9027F6F9-F8AB-5A87-A1D3-9A554C014296"><b>Creating and Configure the
+Context</b> </p> <p>The steps to create and configure the context are shown
+here: </p> <ol id="GUID-5462F1CE-8F88-5403-A8A9-764A46886553">
+<li id="GUID-6EB47771-E421-5220-9521-A9D082096233"><p>Call <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita#GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73/GUID-59496D3F-A541-35AA-BADB-28E487503955"><apiname>CAudioContextFactory::CreateAudioContext()</apiname></xref> to
+create the new context. </p> <codeblock id="GUID-480E8697-ACA4-56E6-97B9-756B45F4D7EF" xml:space="preserve">IMPORT_C TInt CreateAudioContext(MAudioContext*&amp; aContext);</codeblock> </li>
+<li id="GUID-6BC71F5F-51BD-5ED6-90A7-263566856518"><p>Set the client information
+for the new context by calling <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-AC784D04-E300-3295-9FA0-7D4E3F7BC768"><apiname>MAudioContext::SetClientSettings()</apiname></xref>.
+Client settings contain information about the client application utilising
+the audio functionality. </p> <codeblock id="GUID-22A53038-3363-5AC7-AA58-B6C9B015FC9D" xml:space="preserve">virtual TInt SetClientSettings(const TClientContextSettings&amp; aSettings)=0;</codeblock> <p> <b>Note:</b> This must be called before any call to <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref>. </p> </li>
+<li id="GUID-0C3D2D9C-3211-50E6-A581-A85207E8F3A2"><p>Register a context observer
+using <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-AE870243-CC91-3259-9525-8BB6A5BECEDA"><apiname>MAudioContext::RegisterAudioContextObserver()</apiname></xref>. </p> <codeblock id="GUID-AF678CDA-D78A-58D2-B123-BD04A2C1538A" xml:space="preserve">virtual TInt RegisterAudioContextObserver(MAudioContextObserver&amp; aObserver) = 0;</codeblock> </li>
+</ol> <p id="GUID-97F42EDA-96C6-53DC-926D-20EE32660730"><b>Creating and Configuring
+an Audio Stream</b> </p> <p>The steps to create and configure an audio stream
+are shown here: </p> <ol id="GUID-8638DCAA-226E-5344-9371-6E804D9E53F0">
+<li id="GUID-6783138A-BDD3-5F71-983C-C734C23CE847"><p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-E05FA869-2B49-319C-9172-2A7F40338F92"><apiname>MAudioContext::CreateAudioStream()</apiname></xref> to
+add a new audio stream to the existing context. </p> <codeblock id="GUID-2B99714B-E38A-5913-B2B0-7CB1252CCFE3" xml:space="preserve">virtual TInt CreateAudioStream(MAudioStream*&amp; aStream)=0;</codeblock> </li>
+<li id="GUID-191EE083-1AA1-5665-8F01-E4AB738D114B"><p>Set the type of audio
+being processed in the audio stream by calling <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-DB79EE0B-128D-3F54-8220-F0860085BF20"><apiname>MAudioStream::SetAudioType()</apiname></xref>. </p> <codeblock id="GUID-E37BCB2A-1E37-5178-A01E-387D6C74C9F7" xml:space="preserve">virtual TInt SetAudioType(const TAudioTypeSettings&amp; aAudioTypeSettings)=0;</codeblock> </li>
+<li id="GUID-81E11C16-7D5C-501B-8C97-C3CBB9FA62D7"><p>Register an audio stream
+observer by calling <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-7A67C317-826C-33B2-B586-3F295B700A28"><apiname>MAudioStream::RegisterAudioStreamObserver()</apiname></xref>. </p> <codeblock id="GUID-EAC5AE8D-4684-5864-9D5C-3A4F7F5C10B9" xml:space="preserve">virtual TInt RegisterAudioStreamObserver(MAudioStreamObserver&amp; aObserver)=0;</codeblock> </li>
+<li id="GUID-4EB3CA79-3800-545B-B1ED-4983119F8837"><p>Set the audio configuration
+using <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-79DB5B64-9289-3033-A55B-AF9E66D9C8FE"><apiname>MAudioStream::SetConfiguration()</apiname></xref>. </p> <codeblock id="GUID-13BB80D5-772C-5911-96AF-1E6368B0481A" xml:space="preserve">virtual TInt SetConfiguration(const TAudioConfiguration&amp;  aConfig)=0;</codeblock> </li>
+</ol> <p id="GUID-72F15689-BF39-5B01-BF77-5E3AA5258992"><b>Adding a Source</b> </p> <p>The
+audio stream cannot operate until a source, a codec and a sink have been added.
+To add a source: </p> <ol id="GUID-2AF428FA-EEAC-5A7B-A889-873BF1FF56D3">
+<li id="GUID-9F966F71-069C-590B-8198-FB23390486A1"><p>Create a new audio processing
+unit by calling <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-989C9D1A-C208-3515-BD71-E578365B5996"><apiname>MAudioContext::CreateAudioProcessingUnit()</apiname></xref>. </p> <codeblock id="GUID-F1E16AA9-40E3-5B48-87C2-93456DF0B32E" xml:space="preserve">virtual TInt CreateAudioProcessingUnit(TUid aTypeId, MAudioProcessingUnit*&amp; aProcessingUnit)=0;</codeblock> </li>
+<li id="GUID-E5A75B70-B2F3-5E1D-B054-A9C103918E08"><p>Call <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-7EEDFC7D-338B-320E-9F5D-86A87ED9C75E"><apiname>MAudioStream::AddSource()</apiname></xref> to
+add a source for the audio stream. </p> <codeblock id="GUID-15FDCAC5-0F0F-5853-94CB-D929268505B3" xml:space="preserve">virtual TInt AddSource(MAudioProcessingUnit* aSource)=0;</codeblock> <p> <b>Note:</b> This call is asynchronous, if <codeph>KErrNone</codeph> is
+returned, there will be a subsequent callback on <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-3D1B6F92-0363-3101-90F7-792B597A90CD"><apiname>MAudioStreamObserver::AddProcessingUnitComplete()</apiname></xref>. </p> </li>
+</ol> <p id="GUID-CB8D6E17-4977-590C-8153-0D0403370583"><b>Adding a Codec</b> </p> <p>To
+add a codec: </p> <ol id="GUID-2287DB65-C53F-5453-8681-18463392040D">
+<li id="GUID-AC11195A-4760-5416-A270-42D45592AF57"><p>Create another new audio
+processing unit by calling <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-989C9D1A-C208-3515-BD71-E578365B5996"><apiname>MAudioContext::CreateAudioProcessingUnit()</apiname></xref>. </p> <codeblock id="GUID-4819B6BF-AD60-50D5-A176-FAA905DEDC8E" xml:space="preserve">virtual TInt CreateAudioProcessingUnit(TUid aTypeId, MAudioProcessingUnit*&amp; aProcessingUnit)=0;</codeblock> </li>
+<li id="GUID-AF4A8DA1-2540-5C6D-B905-006B2702E964"><p>Call <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-FF7925E4-4E7D-3996-A1EB-64B8C0F5AE81"><apiname>MAudioStream::AddAudioCodec()</apiname></xref> to
+add the codec. </p> <codeblock id="GUID-9E587B45-5F65-5DD6-82D0-4BE5D3757A54" xml:space="preserve">virtual TInt AddAudioCodec(MAudioProcessingUnit* aCodec)=0;</codeblock> <p> <b>Note:</b> This call is asynchronous, if <codeph>KErrNone</codeph> is
+returned, there will be a subsequent callback on <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-3D1B6F92-0363-3101-90F7-792B597A90CD"><apiname>MAudioStreamObserver::AddProcessingUnitComplete()</apiname></xref>. </p> </li>
+</ol> <p id="GUID-A2B536EF-3188-55FA-965A-F648742A94F8"><b>Adding a Sink</b> </p> <p>To
+add a sink: </p> <ol id="GUID-4BD12D1E-5230-5A60-9552-E02C5CB0F089">
+<li id="GUID-BE2E694B-1E7A-573E-9399-74A51493AD43"><p>Create another audio
+processing unit by calling <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-989C9D1A-C208-3515-BD71-E578365B5996"><apiname>MAudioContext::CreateAudioProcessingUnit()</apiname></xref>. </p> <codeblock id="GUID-A41B7B0A-A221-55D3-A12D-9FA67075CA38" xml:space="preserve">virtual TInt CreateAudioProcessingUnit(TUid aTypeId, MAudioProcessingUnit*&amp; aProcessingUnit)=0;</codeblock> </li>
+<li id="GUID-C42682A9-D9D0-59CB-8F69-311ED51ACD82"><p>Call <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-643AD421-6C4B-3B72-A59B-E54CA85B43B3"><apiname>MAudioStream::AddSink()</apiname></xref> to
+add the sink for the audio stream. </p> <codeblock id="GUID-A5DE284E-8938-501E-BF6E-742E57C9AD18" xml:space="preserve">virtual TInt AddSink(MAudioProcessingUnit* aSink)=0;</codeblock> <p> <b>Note:</b> This call is asynchronous, if <codeph>KErrNone</codeph> is
+returned, there will be a subsequent callback on <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita#GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C/GUID-3D1B6F92-0363-3101-90F7-792B597A90CD"><apiname>MAudioStreamObserver::AddProcessingUnitComplete()</apiname></xref>. </p> </li>
+</ol> <p id="GUID-F4E5DAD7-74D0-5946-98E5-D13C3FDF0F0D"><b>Committing the Changes</b> </p> <p>To
+apply the changes made to the audio processing group, the client must call
+a <xref href="GUID-8330AA6E-8FA1-3F72-8AA6-6C24E9764B4B.dita"><apiname>Commit()</apiname></xref>. The <codeph>Commit()</codeph> call is the mechanism
+for implementing requested changes and all changes are considered to be pending
+until successfully committed. </p> <p>On success, the client is informed by
+the appropriate <xref href="GUID-67CA5D62-BCAA-393B-8452-FB2210859FDA.dita"><apiname>ContextEvent()</apiname></xref> callback. <xref href="GUID-570E513B-55CB-31B0-A325-C910D58C3F2C.dita"><apiname>KUidA3FContextUpdateComplete</apiname></xref> signals
+that all changes have been completed and <codeph>Commit()</codeph> can now
+be called again, if required. </p> <p> <b>Note:</b> The A3F <codeph>Commit()</codeph> cycle
+is transactional, that is, if a <codeph>Commit()</codeph> fails, then all
+changes are rolled back. </p> <p>The steps to commit the context are shown
+here: </p> <ul>
+<li id="GUID-19A12981-9F8D-5B7E-AE85-7E7DA447C7F7"><p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> to
+apply the changes to the audio processing group. </p> <codeblock id="GUID-73021763-BBD6-5A4D-B104-CBB048821028" xml:space="preserve">virtual TInt Commit()=0;</codeblock> </li>
+</ul> <p id="GUID-A09373E4-877F-5738-89CC-8D3F2CE52FC2"><b>Initializing the Audio Stream</b> </p> <p>During
+construction, the audio stream is in the <xref href="GUID-1C3D1D45-FCC4-36DE-A9E8-994AA3987D35.dita"><apiname>EUninitialized</apiname></xref> state.
+In order to relate the audio stream to a physical adaptation, it must be transitioned
+to the <xref href="GUID-9BC5AFA4-5C7A-3908-9CAB-9BC362D6494A.dita"><apiname>EInitialized</apiname></xref> state.</p> <p>The steps
+to initialize the audio stream are shown here: </p> <ol id="GUID-56EF988D-387A-5C7C-A0C2-162695B323B2">
+<li id="GUID-C537C9CA-8CD4-55DB-9EF9-E57FB25F07D4"><p>To request a transition
+to <codeph>EInitialized</codeph>, call <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita#GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6/GUID-1DFCCA16-7AD0-3AAF-87B8-96F0546DF488"><apiname>MAudioStream::Initialize()</apiname></xref>. </p> <codeblock id="GUID-BA552930-6A5A-57B0-829F-67D681716273" xml:space="preserve">virtual TInt Initialize()=0;</codeblock> </li>
+<li id="GUID-12EF44BC-FFD5-5517-86B6-84F63FB2340E"><p>Call <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> to
+apply the state change. </p> <codeblock id="GUID-B438156F-FBA6-5555-B6C7-440424275BE9" xml:space="preserve">virtual TInt Commit()=0;</codeblock> </li>
+</ol> <p> <b>Note:</b> This is one example of a state change to an audio stream.
+There are other state changes, for example, the transition from the <xref href="GUID-F424EEAA-C98B-39B2-B19A-FE2A665B02B8.dita"><apiname>EPrimed</apiname></xref> to <xref href="GUID-5DC87A99-1993-34BE-A1AA-84FF98B2ED24.dita"><apiname>EActive</apiname></xref> state
+which starts the audio processing. For more information, see <xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita#GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2/GUID-28D6AB9C-8F4F-573A-853D-726138249390">Stream States</xref> in the <xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita">Advanced
+Audio Adaptation Framework Technology Guide</xref>. </p> </section>
+<section><title>See Also</title> <p><xref href="GUID-06A43E09-CC6D-5799-A0F7-68B5696F4ADB.dita">Audio
+Component Library Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,493 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-931F2B0C-0F7D-5819-83AF-8EC2C8988538" xml:lang="en"><title>Email
+Settings</title><shortdesc>The Email collection provides IMAP MTM, POP3 MTM and SMTP MTM components
+to support the IMAP4, POP3 and SMTP email protocols respectively. These components
+provide APIs to modify configuration settings of an email MTM. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><p>The configuration settings are broadly classified as below: </p> <ul>
+<li id="GUID-C614F440-92D2-576C-BFFD-4C4CDBFEA092"><p> <b>Service settings:</b> Allows
+the messaging client to modify the settings parameters and save them. </p> </li>
+<li id="GUID-76F48B41-6C6A-5FDE-8A87-47C8B4F25D1B"><p> <b>Internet Access
+Provider (IAP) preferences setting:</b> Allows the messaging client to modify
+the IAP preferences and save them. </p> </li>
+<li id="GUID-D6247431-770B-549E-9B5C-9EE31820C3BF"><p> <b>SNAP preferences:</b> Allows
+the messaging client to set a SNAP identifier to use for internet access. </p> </li>
+</ul> </section>
+<section><title>Service settings</title> <p>These settings can be modified
+by the functions provided by the Email MTM component. Applicable settings
+for protocols are marked. </p> <table id="GUID-C85C1446-3106-59F4-9C02-06D7827327F6">
+<tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/>
+<thead>
+<row>
+<entry>Setting</entry>
+<entry>Description</entry>
+<entry>SMTP</entry>
+<entry>POP3</entry>
+<entry>IMAP4</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Acknowledge receipts </p> </entry>
+<entry><p>If the sender of an email message has requested a receipt notification,
+the messaging client can check this setting and compose a receipt notification
+message. </p> </entry>
+<entry><p>-</p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Bearer Mobility </p> </entry>
+<entry><p>If enabled, indicates that the email service shall attempt a bearer
+migration when a preferred carrier becomes available (upgrade), or when the
+carrier over which an existing connection has been made becomes unavailable
+(downgrade). </p> <p>The following is the default migration: </p> <ul>
+<li id="GUID-C185CE8D-4825-5288-9A86-E8AA2DED9FEF"><p> <b>upgrade:</b> allow
+any outstanding operation to complete, then attempt to switch to the new bearer. </p> </li>
+<li id="GUID-4F8B5FF0-147D-5CC2-A10F-5717ACA1409D"><p> <b>downgrade:</b> immediately
+close connected sockets, then attempt to switch to the new bearer. Any operations
+in progress at the time of the migration is resumed when connection has been
+made through the new carrier. </p> </li>
+</ul> <p>The default policy is plug-in replaceable, allowing migration notices
+to be ignored or modifying the handling of outstanding operations, which may
+be suspended and resumed following the migration. </p> <p>Note that Bearer
+Mobility can only be performed when the account connection preferences specify
+a SNAP, see <xref href="GUID-AD6587AD-A5B2-5369-9217-D752A37490C4.dita">Bearer
+Mobility</xref>. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Body encoding </p> </entry>
+<entry><p>Specifies the encoding used when sending an email message. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>-</p> </entry>
+<entry><p>-</p> </entry>
+</row>
+<row>
+<entry><p>Default character set </p> </entry>
+<entry><p>Sets the character set of the out-bound email message. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Disable IMAP Folder Tree Synchronisation </p> </entry>
+<entry><p>Specifies whether the remote folder tree shall be synchronised as
+part of account synchronisation operations. The default setting is <codeph>EFalse</codeph>,
+which means that the folder tree synchronisation shall be performed. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Disconnected user mode </p> </entry>
+<entry><p>If enabled, allows the messaging client to fetch, move, and delete
+mailbox messages while not connected by queuing offline operations. </p> <p>The
+queued offline operations are automatically processed the next time the messaging
+client connects, just before login and Inbox synchronisation. For the IMAP4
+protocol, messages are not marked as invisible when disconnected if this setting
+is enabled. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Email address </p> </entry>
+<entry><p>The email address of the subscriber. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Email alias </p> </entry>
+<entry><p>The name of the subscriber as they want it to appear in the header
+of the email messages they send. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Folder path </p> </entry>
+<entry><p>The path to the IMAP4 mailbox on the server if the subscriber’s
+primary mailbox is not the Inbox. </p> <p> <b>Note:</b> Most messaging clients
+need not have to set this. Refer to RFC 3501, Section 5.1 Mailbox naming for
+more information. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Get Mail Options </p> </entry>
+<entry><p>Specifies how new messages must be fetched when synchronising. The
+available options are: </p> <ul>
+<li id="GUID-F28822E7-6AC0-515E-B53F-C7C65CDF665B"><p>Headers only </p> </li>
+<li id="GUID-7DBDC59C-9E5D-5965-B133-A44A211AD6F1"><p>Body text only (applicable
+to IMAP4 only) </p> </li>
+<li id="GUID-B8820C8C-AA0D-5A86-A5E8-837F22887BB9"><p>Attachments only (applicable
+to IMAP4 only) </p> </li>
+<li id="GUID-57F98841-57F7-5180-8D6A-C00934875F94"><p>Entire message </p> </li>
+</ul> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>IMAP IDLE </p> </entry>
+<entry><p>Specifies whether the IMAP IDLE command must be used as defined
+in RFC2177. </p> <p>The default setting is <codeph>ETrue</codeph> which means
+that the IMAP IDLE command is used, if the server supports it. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>IMAP IDLE timeout </p> </entry>
+<entry><p>Specifies the IMAP IDLE timeout in seconds. The default setting
+is 1740 seconds (29 minutes). </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>IMAP Synchronisation Download Rules </p> </entry>
+<entry><p>Specifies which message parts to automatically download when synchronising
+the contents of an IMAP email account. See <xref href="GUID-75B1B1DF-4EC2-59BC-8BE0-A8AD681798C5.dita">IMAP
+Account Settings</xref> for more information. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>IMAP Transport Buffer Sizes </p> </entry>
+<entry><p>Allows a client to configure transport buffer sizes of IMAP accounts
+according to bearer type for fetching of large message parts. </p> <p>It is
+possible to specify: </p> <ul>
+<li id="GUID-8083E140-B97C-50FE-8582-92D5BAE8A390"><p>maximum fetch size (default
+is 20480 octets) </p> </li>
+<li id="GUID-170DDB00-B16E-5BCC-A4EC-98E6201C88F9"><p>maximum outstanding
+fetch requests (default is 2 outstanding requests) </p> </li>
+</ul> <p>Note that this is a global setting that affects all IMAP accounts. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Inbox refresh rate </p> </entry>
+<entry><p>Specifies whether to periodically poll the email server for new
+messages, and if so, how frequently. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Inbox synchronisation limit </p> </entry>
+<entry><p>Sets the limit (if any) for the number message headers stored in
+the Inbox of the local device when synchronising. </p> <p>Older message headers
+are deleted to make space for newer message headers. Messages that have had
+body text or attachments downloaded will not be deleted and are not considered
+part of the Inbox count limit. Can also be used to disable Inbox synchronisation
+after a connection. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Include signature </p> </entry>
+<entry><p>If the subscriber has a signature, it is append the body text of
+out-bound email messages. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Include VCard </p> </entry>
+<entry><p>If the subscriber has a VCard, the VCard is attached to out-bound
+email messages. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Login name </p> </entry>
+<entry><p>The subscriber’s login name. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Login password </p> </entry>
+<entry><p>The subscriber’s login password. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Mailbox synchronisation limit </p> </entry>
+<entry><p>Sets the limit (if any) for the number of messages headers stored
+in non-Inbox folders on the local device when synchronising. </p> <p>Older
+message headers are deleted to make space for newer message headers. Messages
+that have had body text or attachments downloaded will not be deleted and
+are not considered part of the non-Inbox count limit. Can also be used to
+disable folder synchronisation. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Maximum email size </p> </entry>
+<entry><p>Allows the messaging client to specify a maximum size (if any) in
+KB that are downloaded. If the email is larger than the maximum size, none
+of its body text or attachments are downloaded. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Path separator </p> </entry>
+<entry><p>Allows the messaging client to specify the character used to separate
+hierarchical mailbox names on the IMAP4 server. Refer to RFC 3501 section
+5.1.1 for more information. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Reply-to address </p> </entry>
+<entry><p>The email address that the subscriber wishes any replies to their
+email messages to be sent to. However, it is possible to override this on
+a per message basis when composing the message. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Request receipt </p> </entry>
+<entry><p>If enabled, sent messages indicates to the receiving messaging client
+that they want a receipt notification message (for example, a read notification)
+sent back to the email address specified in the receipt address setting. It
+is entirely up to the receiving messaging client whether it complies with
+this request. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Receipt address </p> </entry>
+<entry><p>The email address that message receipt notifications is sent to
+if request receipts has been enabled. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Secure sockets </p> </entry>
+<entry><p>If enabled, a secure TLS connection is negotiated over an un-secure
+socket on the specified server port according to RFC 2595 and 3207 specifications. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Send copy to self </p> </entry>
+<entry><p>Specifies how copies of messages must be send to the sender. The
+available options are: </p> <ul>
+<li id="GUID-28276A85-A423-5C85-B8DC-E5590877496D"><p>Do not send a copy </p> </li>
+<li id="GUID-E56F00B8-49C4-51F0-8223-06C0F2AB8D50"><p>Send a copy by including
+the sender’s email address in the To recipients of the email to be sent </p> </li>
+<li id="GUID-CA713DF3-97F0-54F1-84F7-F608FF1F4F1A"><p>Send a copy by including
+the sender’s email address in the Cc recipients of the email to be sent </p> </li>
+<li id="GUID-E28B8830-E87F-5351-9581-4C1BB2B26A9D"><p>Send a copy by including
+the sender’s email address in the Bcc recipients of the email to be sent </p> </li>
+</ul> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Send message options </p> </entry>
+<entry><p>Specifies how the message is sent. The available options are: </p> <ul>
+<li id="GUID-0DFFAD00-E8D0-5A7A-BAE7-9B288468EBDA"><p>Send messages next time
+the subscriber connects to their mailbox </p> </li>
+<li id="GUID-1A1F2366-F8F4-5563-9963-FCDC070A94FA"><p>Send messages immediately </p> </li>
+<li id="GUID-8EDFB259-896C-5709-9BC4-6B432F352F3A"><p>Send messages when messaging
+client requests </p> </li>
+</ul> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Server address </p> </entry>
+<entry><p>The hostname or IP address of the SMTP, IMAP4, or POP3 server. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Server port </p> </entry>
+<entry><p>The TCP port of the SMTP, IMAP4, or POP3 server. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Size Limiting of emails </p> </entry>
+<entry><p>If body text size limit is specified, then downloads the body text
+of a email partially and downloads the attachments only if their size is less
+than or equal to the specified attachment size limit. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>SMTP Account Override </p> </entry>
+<entry><p>Allows the client to associate “SMTP Mobility Accounts” with an
+SMTP account, to use when connected through specified internet access points. </p> <p>When
+attempting to send an email using SMTP, the IAP that the connection to the
+SMTP server is using is checked. If a SMTP mobility account is specified for
+that IAP, then the settings for that SMTP mobility account is used to send
+the email. If no SMTP mobility account is specified for that IAP, then the
+settings from the SMTP account is used. </p> <p>Only settings relating to
+the sending of emails are overridden – emails are constructed according to
+the over-ridden SMTP account settings. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>SSL wrapper </p> </entry>
+<entry><p>If enabled, a secure TLS connection is established on the specified
+server port. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>TLS/SSL Domain </p> </entry>
+<entry><p>Specifies the domain to use for certificate validation when establishing
+a secure TLS connection. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Update flags </p> </entry>
+<entry><p>If enabled, the seen flag is updated on the IMAP4 mailbox for messages
+that have been read. This indicates to email applications on other devices
+accessing the same mailbox that the message has already been read. </p> <p>Likewise,
+if an email application on another device marks messages as read on the server,
+then the messaging client indicates that the message has already been read. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+</row>
+<row>
+<entry><p>Use APOP authentication </p> </entry>
+<entry><p>Specifies whether to use APOP authentication to login to the POP3
+mailbox. </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+<row>
+<entry><p>Use SMTP authentication </p> </entry>
+<entry><p>Specifies whether to use SMTP AUTHentication to login to the SMTP
+server. </p> </entry>
+<entry><p>Supported </p> </entry>
+<entry><p>- </p> </entry>
+<entry><p>- </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>SNAP Preferences</b> </p> <p>A allow Service Network Access
+Point (SNAP) is a collection of access points (AP) that are used especially
+for bearer mobility to identify a service network with a service to be accessed
+on the network. That is, it is a collection of IAP that specify the same network
+and the same service on that network. SNAP uses the underlying Networking
+framework to select the best AP defined in the SNAP preference list to use
+to establish the connection. </p> <p>The <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+encapsulates preferences about IAPs for an email service. This class allows
+a single SNAP to be specified as an alternative to a list of preferred IAPs.
+A SNAP defines its own list of IAPs in preference order, and is reusable by
+multiple clients that requires network connections. </p> <p>To allow SNAP
+IDs to be defined, retrieved, and deleted when a network connection is made,
+the following functions are provided by the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class: </p> <ul>
+<li id="GUID-89871675-D443-5343-8D3E-8E5C1A86AC99"><p> <xref href="GUID-F4D57A3E-BC3E-3DEA-B969-B656C5FD3B68.dita"><apiname>SNAPDefined()</apiname></xref>  </p> </li>
+<li id="GUID-2F171496-91D5-530E-9809-10FBFDCA4A38"><p> <xref href="GUID-C0AF460A-8DC8-3115-9AEC-A63FF4DB2067.dita"><apiname>SNAPPreference()</apiname></xref>  </p> </li>
+<li id="GUID-AD0FC483-1646-5496-B2AD-6B643D1DBFE8"><p> <xref href="GUID-EBF66578-1CF1-3737-B78A-3A8D06A9CD16.dita"><apiname>SetSNAPL()</apiname></xref>  </p> </li>
+<li id="GUID-05777751-5244-5778-824C-E3D8834D4CA1"><p> <xref href="GUID-B15A0120-1D4D-33B9-AC8F-2F94AF7B1EFD.dita"><apiname>RemoveSNAPL()</apiname></xref>  </p> </li>
+</ul> <p><b>SMTP account override settings</b> </p> <p>The SMTP account override
+functionality allows the messaging client to associate <b>SMTP mobility accounts</b> with
+an SMTP account to use when connected through the specified Internet access
+points. </p> <p>A SMTP mobility account allows different send settings to
+be used by SMTP accounts depending on what access point is being used by the
+SMTP connection. When a connection is made for a SMTP account, its associated
+list of SMTP mobility accounts is examined to check, if any access point is
+linked to the bearer type that is used for the connection. If any access point
+is found, then the settings for the SMTP mobility account are used for the
+connection and subsequent email sending in preference to the settings for
+the SMTP account. </p> <p>To override the SMTP mobility account settings,
+the following class are provided. These classes describe the settings that
+are overridden when connecting to the mobility account through an IAP associated
+with the mobility account. </p> <ul>
+<li id="GUID-37CE33BF-27F2-5C61-93D4-E339F9AE2F03"><p> <xref href="GUID-72BF08A4-2724-3F42-A685-F97F68133B69.dita"><apiname>TSmtpMobilityAccount</apiname></xref>  </p> </li>
+<li id="GUID-54F87DB8-07F3-511C-A986-EFDEFA41BA6E"><p> <xref href="GUID-AA86050B-00E4-3EEC-9E41-32C1A4493D30.dita"><apiname>CImSmtpMobilitySettings</apiname></xref>  </p> </li>
+</ul> <p><b>TLS or SSL domain name for certificate validation</b> </p> <p>To
+enhance certification security checks, the <xref href="GUID-3EDD3DFA-AE8A-3941-960A-8BD2733E74C3.dita"><apiname>CImBaseEmailSettings</apiname></xref> class
+is enhanced to allow the Transport Layer Security (TLS) or Secure Sockets
+Layer (SSL) server domain name to be specified when creating email accounts.
+The following functions are added to the <xref href="GUID-3EDD3DFA-AE8A-3941-960A-8BD2733E74C3.dita"><apiname>CImBaseEmailSettings</apiname></xref> class: </p> <ul>
+<li id="GUID-120DA036-4153-552C-B712-8B593753EA8C"><p> <xref href="GUID-86633B7D-5AB8-3BBD-BB54-4697211AC86E.dita"><apiname>SetTlsSslDomainL()</apiname></xref>  </p> </li>
+<li id="GUID-DA875B46-D163-5397-A0D9-36D8732E872E"><p> <xref href="GUID-46A0BD1F-833E-3D55-B2C3-329770808AD2.dita"><apiname>TlsSslDomain()</apiname></xref>  </p> </li>
+</ul> </section>
+<section><title>IAP preferences setting</title> <table id="GUID-CDE2AF8B-FCE2-5DA1-83FD-9D09A131CE30">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Tittle </entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>IAP Number </p> </entry>
+<entry><p>The IAP identifier as specified in the CommDb record for the IAP. </p> </entry>
+</row>
+<row>
+<entry><p>Dialogue Preference </p> </entry>
+<entry><p>The dialog preference determines whether a user must be prompted
+with a dialog when connecting to the IAP. </p> <p>The available options are: </p> <ul>
+<li id="GUID-78F25ED9-DB36-5854-892B-DE27F0BC8CA3"><p>Prompt </p> </li>
+<li id="GUID-DDF46C83-0F5F-52F1-9D50-5EF315D156B7"><p>Warn </p> </li>
+<li id="GUID-967332AA-71AE-58D3-A4BC-69BEE8057843"><p>Do not prompt </p> </li>
+<li id="GUID-CBC5B2FB-221B-5B00-8D78-8281635827B9"><p>Prompt if wrong mode </p> </li>
+</ul> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<example><title>Email settings example</title> <ul>
+<li id="GUID-78EAF21A-8941-583E-861F-BADE2394A3B4"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">IMAP4
+Example: An Email manager using IMAP4 and SMTP</xref>  </p> </li>
+<li id="GUID-742F921B-CBD7-538F-8EB2-D823AC45E3E4"><p><xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">POP3
+Example: An Email manager using POP3 and SMTP</xref>  </p> </li>
+</ul> </example>
+</refbody><related-links>
+<link href="GUID-AD6587AD-A5B2-5369-9217-D752A37490C4.dita"><linktext>Bearer  
+              Mobility</linktext></link>
+<link href="GUID-179099DA-1CD9-5912-B41B-363C132C7A86.dita"><linktext>Processing
+Email in Chunks</linktext></link>
+<link href="GUID-4384066E-158A-5F63-A823-7793DAE680BF.dita"><linktext>Email</linktext>
+</link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9331EE17-1831-5D9F-A090-438E3D6D1375.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9331EE17-1831-5D9F-A090-438E3D6D1375" xml:lang="en"><title>Camera Overlay Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93491DAE-4D2D-5F5F-97E7-91B265E9951E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-93491DAE-4D2D-5F5F-97E7-91B265E9951E" xml:lang="en"><title>Libraries (Plug-in Converters)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Each library is a plug-in converter which convert text between a foreign encoding and Unicode. To convert SMS messages with reduced number of characters and low cost, various SMS converters and their supported alphabet are described. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-934AEB9C-77EA-5F50-BB84-2446DDD432C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-934AEB9C-77EA-5F50-BB84-2446DDD432C8" xml:lang="en"><title>How
+to Send Data: Tutorial</title><shortdesc>This tutorial describes how to send and receive data with the Serial
+Communications Server.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>This tutorial follows the tutorial How to Open a Port:  Tutorial<xref href="GUID-5D47DBF8-3DFE-5D0B-95B2-63302E91C423.dita">How to Open a Port: Tutorial</xref>. </p></context>
+<steps id="GUID-14170AC4-DD56-51C8-A7AD-CCE01EBBD398">
+<step id="GUID-E372C9DD-1344-5452-ABFD-9EF5AA070906"><cmd/>
+<info>All data sent from the serial device is 8-bit even on a Unicode system. </info>
+<info>Create a <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> Descriptor and fill the Descriptor
+with the data to send. </info>
+</step>
+<step id="GUID-74FDE5FB-22A4-509B-B52D-34F80BEA43EB"><cmd/>
+<info>Create a request object of type <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref>. </info>
+</step>
+<step id="GUID-79A3BCD9-8ACB-54C4-BE42-A34B464FD002"><cmd/>
+<info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-27B1F841-8478-33E0-A168-11DC468183C0"><apiname>RComm::Write()</apiname></xref> and set the <codeph>aDes</codeph> parameter
+as a reference to the Descriptor, and set the aStatus parameter to the request
+object. </info>
+<info>The RComm API does not allow another request to be made until the first
+request has completed. </info>
+</step>
+<step id="GUID-C66DC52F-6C68-5E82-A321-9646E20130B6"><cmd/>
+<info>The write request completes when the last character in the supplied
+buffer has been written to the serial hardware. There are three alternative
+ways the write request can complete: </info>
+<info><p><ol>
+<li id="GUID-4A9FF6B3-C625-4A3B-97E7-087F90CA3C93"><p>If the <codeph>aTimeOut</codeph> parameter
+was set with the <codeph>RComm::Write()</codeph> function then the request
+completes with <xref href="GUID-BAC2386E-8168-3CDB-9F9F-180319EF6920.dita"><apiname>KErrTimedOut</apiname></xref> if the Descriptor was not filled
+during the <codeph>aTimeOut</codeph> time. </p></li>
+<li id="GUID-3FED3BEA-C65E-4F0C-8046-9A0D2D9C072B"><p>If the write request
+is in progress, the write request can be cancelled by calling <xref href="GUID-0F0DE6EC-8525-3D7C-96A7-5328FB78A53C.dita"><apiname>WriteCancel()</apiname></xref>. </p></li>
+<li id="GUID-4AA18EA3-ACA6-4D03-A15E-16D30A905C7C"><p>A port can be configured
+to automatically terminate data transfer requests early when various error
+conditions occur. </p></li>
+</ol></p></info>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32-master.png has changed
Binary file Symbian3/SDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e189670_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-935DF48C-F014-5E2A-8BE6-29B00C4FD31D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-935DF48C-F014-5E2A-8BE6-29B00C4FD31D"><title>Component Specific Debugging Help</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-320B950A-06A8-54A2-89F4-87FE3D7384E1"><title>Node Framework</title> <p>To debug any Node in the Comms Three Plane Architecture, use: </p> <ul><li id="GUID-C43A1617-B957-5C76-B8CA-BDBEF4EB2CE6"><p>SVG diagrams to see the message traffic. See <xref href="GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita">How to Use ULogger with Comms</xref>  </p> </li> <li id="GUID-8ED2D6CD-D55C-5698-A49A-E8478C9FCD03"><p>Conditional breakpoints in the <codeph>ReceivedL</codeph> function of the Node. </p> <p>The extensive re-use of code for states and transitions causes breakpoints in the code for states and transitions to be called many times. These breakpoints may not be effective. Set conditional breakpoints in the ReceiveL functon of Nodes to track the processing of messages within a Node. </p> </li> </ul> </section> <section id="GUID-820398A9-17FD-5A87-8C45-64BDD99C312D"><title>IP Networking</title> <p> <b>General networking</b> - For debugging network problems, a version of ping and IPConfig are provided with the source code for Symbian OS and built into test builds. To build manually, the code is located in <codeph>\networking\inetutil\</codeph>. </p> <p> <b>IPSec, IPSec6, IPSecPol</b> - These components use Flogger. For more information see <xref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita">Textual Logging</xref>. </p> <p> <b>PPP, RAW IP and other NIF 's</b> - Full packet logging of each PPP frame is available from the PPP component. Enable the CDU tags and extract the binary output from the log file using the <codeph>splitlog.bat</codeph> program. For more information see <xref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita">Textual Logging</xref>. This binary output can then be loaded into a packet viewer program such as the freeware Wireshark (formerly Ethereal). For more information see <xref href="GUID-61B3E668-07ED-58BD-9D11-04BC293A5187.dita#GUID-61B3E668-07ED-58BD-9D11-04BC293A5187/GUID-D98CA3A0-5B40-5CF2-8DD7-552A6E12B34A">PPP Ini File: [log]</xref>. The RAW IP NIF will similarly log, using the CDU tag "<codeph>LOG RawIP *</codeph> ", in the Wireshark-compatible <i>pcap</i> format. The Ethernet NIF uses the "<codeph>LOG TCPDump
+          *</codeph> " tags. </p> <p>The TCPdumping example code hooks into the TCP/IP stack and dumps the TCP traffic in pcap format, which is suitable for loading into Wireshark. This is useful when using a NIF which does not provide its own logging. The TCPdumping executable is only built in test builds, so to build it manually refer to the source code located at <filepath>networking\examplecode\tcpdumping</filepath>. </p> <p> <b>Tcpip6</b> - The logs from this component are some of the most useful when debugging. Note that some versions of this component use Flogger, while others use CDU with the tags "<codeph>LOG inet6 *</codeph> ". </p> </section> <section id="GUID-867983C3-9C7F-5C28-AE1B-5DE0451C8AD4"><title>Bluetooth</title> <p> <b>Bluetooth</b> - The Bluetooth host controller allows vendor-specific debugging events to be reported back using a secure channel. For more information see <xref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita">Debugging the Host Controller</xref>. </p> </section> <section id="GUID-0FF90100-006F-55BE-8E5C-41BAE8D5C92E"><title>Telephony</title> <p> <b>Etel</b> - The <xref href="GUID-D49696D1-4B84-56B5-909D-A15F599F4B6D.dita">Telephony Server</xref> can record and play back the IPC messages passing through the server. It can be installed on the device to record the messages, and then the recording can be processing in a debugging environment without the need for the specific device or network environment. This is very useful for reproducing defects. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e154379_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9372CB71-2C75-5B3D-81EA-B4257C3162C7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9372CB71-2C75-5B3D-81EA-B4257C3162C7" xml:lang="en"><title>Store
+streams example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-CFC06048-6EAF-563E-A7BC-7CB4C99AA4C7"><title>WriteToMany:
+externalizing to more than one stream/deferred loading</title> <p><b>Description</b> </p> <p>This
+example shows how a network of objects can be written to more than one stream
+in a direct file store, and how the loading of an object from the store into
+memory may be deferred. </p> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3b74b037-3596-4387-b60c-30f55daa1cdf.zip" scope="external">WriteToMany.zip</xref>.</p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3b74b037-3596-4387-b60c-30f55daa1cdf.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.</p> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> -Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+<li><p><xref href="GUID-8B713854-7858-3E02-8A1C-B3E6C1C9EA85.dita"><apiname>CDirectFileStore</apiname></xref> - Direct file store.</p></li>
+<li><p><xref href="GUID-1C4D4AFD-85E2-3D5D-B704-D1FA0E5E7DA2.dita"><apiname>TStreamId</apiname></xref> - Provides unique identification for stream
+within a store.</p></li>
+<li><p><xref href="GUID-D10FA32F-32F7-3488-9AAC-CB95270EA006.dita"><apiname>TSwizzle</apiname></xref> - Maintains a dual representation for an
+object. </p></li>
+</ul> </section>
+<section id="GUID-8E522D0B-C74C-5B14-9483-827DC79DEF46"><title>WriteToEmbedded:
+using an embedded store</title> <p><b>Description</b> </p> <p>This example
+shows how an object can be externalized to a store embedded within a permanent
+file store. </p> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-2e15aa67-747d-4457-8f6a-3fe2a423861a.zip" scope="external">WriteToEmbedded.zip</xref>.</p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-2e15aa67-747d-4457-8f6a-3fe2a423861a.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref></p> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+<li><p><xref href="GUID-A61CA45C-B19A-33FC-8233-76530DCDF03C.dita"><apiname>CPermanentFileStore</apiname></xref> - Permanent file store.</p></li>
+<li><p><xref href="GUID-1C4D4AFD-85E2-3D5D-B704-D1FA0E5E7DA2.dita"><apiname>TStreamId</apiname></xref> - Provides unique identification for stream
+within a store.</p></li>
+<li><p><xref href="GUID-F2EC3A9D-5F4B-3C98-98DC-44394C54B6DE.dita"><apiname>CEmbeddedStore</apiname></xref> - Encapsulates an embedded store.</p></li>
+<li><p><xref href="GUID-21637329-EC49-39AD-8986-A22289D8CFE8.dita"><apiname>CPersistentStore</apiname></xref> - Persistent store abstract base
+class. It provides the behaviour for setting and retrieving the root stream
+id.</p></li>
+</ul> </section>
+<section id="GUID-4C25485D-7FE0-5699-86E7-F92BEE6BFADA"><title>StoreMap: using
+a store map</title> <p><b>Description</b> </p> <p>This example demonstrates
+the streaming of a compound object to multiple streams with deferred loading.
+It also illustrates the use of a store map (<codeph>CStoreMap</codeph>). </p><p><b>Related
+APIs</b></p><ul>
+<li><p><xref href="GUID-D3E27885-46A1-35C1-97E5-17E4EDF72E56.dita"><apiname>CStoreMap</apiname></xref> - Store map used when externalising swizzled
+in-memory objects.</p></li>
+</ul> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-901ebb49-18f8-4c15-81d9-79b22e2beb87.zip" scope="external">StoreMap.zip</xref>.</p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-901ebb49-18f8-4c15-81d9-79b22e2beb87.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.</p> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref></p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref></p></li>
+<li><p><xref href="GUID-A61CA45C-B19A-33FC-8233-76530DCDF03C.dita"><apiname>CPermanentFileStore</apiname></xref></p></li>
+<li><p><xref href="GUID-D3E27885-46A1-35C1-97E5-17E4EDF72E56.dita"><apiname>CStoreMap</apiname></xref></p></li>
+<li><p><xref href="GUID-D10FA32F-32F7-3488-9AAC-CB95270EA006.dita"><apiname>TSwizzle</apiname></xref></p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827"><title>Active Backup Client Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Active Backup Client enables Symbian Developers to write backup and restore software with complete control of which data is backed up and restored. </p> <p>The backup client application is often referred to as the data owner as it owns the data. The data owner is automatically invoked to prepare and supply the data to the Backup Engine at backup time. Similarly, the data is automatically supplied back to the data owner on restore. </p> <section><title>Required Background</title> <p>Before you start, you must understand the following architecture and concepts: </p> <ul><li id="GUID-D8AE221E-2356-5A98-B338-39847C69A845"><p><xref href="GUID-5CA933B9-7987-5DDE-AE12-B0D5AFD31451.dita">Symbian backup and restore architecture</xref>  </p> </li> <li id="GUID-1BC9B7B5-9DE9-5E7A-8E66-F1752111134B"><p><xref href="GUID-7FDD9FEC-5017-5E5D-A50A-5F343A3C7F6C.dita"> Backup and restore modes</xref> (active, passive and proxy). </p> </li> </ul> </section> <section><title>Key concepts and terms</title> <p> <b>Data owner </b>  </p> <p>A Symbian process that owns the data to be backed up or restored is a data owner. It can be an application or a server. </p> <p> <b>Initiator/Responder</b>  </p> <p>There are two roles in MTP exchanges, an initiator and a responder. An initiator is the device which initiates requests and operations to the connected responder. A responder is the device which passively responds the requests and operations. Symbian MTP is implemented as a responder role only. A host PC or a portable device on a Symbian device is usually an initiator. </p> </section> <section><title>Architecture</title> <p>The following flowchart shows how the Active Backup Client (data owner application) works with other components for data backup and restore. The components provided by Symbian are in green. The components that a device vendor must implement are in blue. </p> <fig id="GUID-A32E2101-8CF4-5DCB-B200-B4219A21733A"><title>
+             Active Backup Client 
+          </title> <image href="GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e146660_href.jpg" placement="inline"/></fig> <ul><li id="GUID-EA86CFF4-6504-5C52-9B48-961EE80D8C4F"><p>The <b>Backup Server</b> communicates directly with the backup and restore initiator, for example a host PC. </p> <p>The Backup Server receives a request from a host PC for a backup or restore operation. It then calls the Backup Engine using the Backup Engine Client API (<xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-FB671D02-0F15-396F-9FB7-EE3E9372093C"><apiname>conn::CSBEClient</apiname></xref>) for lists of data sets. It also transfers data during a backup or a restore. </p> <p> <b>Note</b>: The Symbian platform includes a backup server which a device vendor may replace. </p> </li> <li id="GUID-D533320B-B8E6-5660-A423-BDD4B36227FC"><p>The<b> Backup Engine</b> component contains the logic related to the data backup and restore. It signals the start or completion of a backup or restore to all data owners. </p> <p> <b>Note</b>: This component runs in a separate process which allows the Backup Server to operate synchronously and asynchronously. </p> </li> <li id="GUID-121E55AE-5E5A-5533-AB57-3521DDCB6894"><p>An active <b>Data Owner Application</b> responds to signals from the Backup Engine. It releases resources in case of file lock or data confliction. It must define a <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref> instance to connect to the Backup Engine and must provide a pointer to an <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-DB245BC3-2ADA-311D-8024-B40335D22822"><apiname>conn::MActiveBackupDataClient</apiname></xref> implementation. The <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-DB245BC3-2ADA-311D-8024-B40335D22822"><apiname>conn::MActiveBackupDataClient</apiname></xref> implementation prepares and transfers data to the Backup Engine for a backup and restore. </p> </li> </ul> </section> <section><title>APIs</title> <p>The Active Backup Client includes the following APIs: </p> <table id="GUID-78B19C43-C9D9-56F0-823F-7CF3F26238B8"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref>  </p> </entry> <entry><p>Establishes a connection to the Backup Engine for the data owing process. </p> </entry> </row> <row><entry><p> <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-DB245BC3-2ADA-311D-8024-B40335D22822"><apiname>conn::MActiveBackupDataClient</apiname></xref>  </p> </entry> <entry><p>The data owner application must implement this interface to provide the data to the Backup Engine. It is passed to the <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref> constructor. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The Active Backup Client can be used to prepare and transfer data for the Backup Engine to do a backup and restore. </p> </section> </conbody><related-links><link href="GUID-DFF9DFC5-1BE0-5CA2-A2B9-27FA2DECFF59.dita"><linktext>Writing an Active Backup Client Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e245569_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-939C0EE6-0931-4898-842B-9D0C9D61DD2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-939C0EE6-0931-4898-842B-9D0C9D61DD2F" xml:lang="en"><title>Application
+Layer Plugins and Utils</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e178906_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF" xml:lang="en"><title>Using
+TDes</title><shortdesc>Use TDes for interfaces which take narrow or wide (Unicode) text,
+depending on the build variant.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-3B3CC723-0555-5FCD-8783-F1467BB1191C"><title>Usage in a
+function interface</title> <p>An interface which needs to access and modify
+either narrow text or wide (Unicode) text, depending on the build variant,
+uses a <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> as the argument type. All build independent
+concrete descriptors are derived from <codeph>TDes</codeph> which means that
+the interface can accept any build independent descriptor.</p> <p>The following
+code fragment shows the most common function prototype pattern.</p> <codeblock id="GUID-87812092-5582-51F4-B67B-9A2F503C0A26" xml:space="preserve">void ClassX::foo(TDes&amp; anArg);</codeblock> <p>The
+use of <codeph>TDes</codeph> means that data can be accessed and modified
+through the descriptor.</p> <p>If the interface is to handle explicit 8 bit
+or explicit 16 bit data, regardless of the build variant, then use <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita"><apiname>TDes8</apiname></xref> or <xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita"><apiname>TDes16</apiname></xref> instead.</p> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-3D73DD8F-8D23-5D47-A4F7-3673C993EF8F.dita">Using class TDes8</xref></desc>
+</link>
+<link href="GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160.dita"><linktext>Using Class
+TDes16</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93EF4862-2395-5ED7-8446-A7FDA60535B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-93EF4862-2395-5ED7-8446-A7FDA60535B1"><title>Playing a Fixed Tone Sequence </title><shortdesc>This tutorial introduces you to play in sequence a fixed tone. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context id="GUID-9AD58F4C-7FD7-5C71-B9BA-CF14172CD515"><p>You have to configure DevSound in order to play a Fixed Tone Sequence. </p> <p>The following settings can be configured before or during tone play: </p> <ul><li id="GUID-A35BE674-E8C8-575D-AA17-4BF8DC413907"><p>To return the number of available predefined tone sequences, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-B47A7C84-5799-3D46-835A-86966961F14E"><apiname>CMMFDevSound::FixedSequenceCount()</apiname></xref> method: </p> <codeblock id="GUID-1C140C5B-A124-5290-9C46-5B6F7414083C" xml:space="preserve">IMPORT_C TInt FixedSequenceCount();</codeblock> <p>This is the number of fixed sequences supported by DevSound by default. </p> </li> <li id="GUID-5B97D91B-0254-5942-A67D-35023EB65617"><p>To return the name assigned to a specific predefined tone sequence, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-B0DF4DA1-A986-3B39-9538-4E8E9333450D"><apiname>CMMFDevSound::FixedSequenceName()</apiname></xref> method: </p> <codeblock id="GUID-84B33207-B56D-5080-ADDC-F0919E228793" xml:space="preserve">IMPORT_C const TDesC &amp;FixedSequenceName(TInt aSequenceNumber);</codeblock> <p>This method has one parameter, <codeph>aSequenceNumber</codeph>, the index identifying the specific predefined tone sequence and returns a reference to a descriptor containing the fixed sequence name indexed by <codeph>aSequenceNumber</codeph>. </p> </li> <li id="GUID-646F32CC-EEC7-5AB6-9C5B-3DE57E076D71"><p>To change the volume of the audio device to a specific value, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C93E8531-F569-3F6B-AE65-A36749FCE7DF"><apiname>CMMFDevSound::SetVolume()</apiname></xref> function. The volume can be set to any value from 0 to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1BFCB3CB-17C7-399B-9089-3ADFF43044BA"><apiname>CMMFDevSound::MaxVolume()</apiname></xref>. </p> <p>To define a period over which the volume rises from 0 to the normal volume level, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF47B65D-DEFA-3D11-B6AB-2DC876D25EF7"><apiname>CMMFDevSound::SetVolumeRamp()</apiname></xref> function. </p> <p> <b>Note:</b> The <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF47B65D-DEFA-3D11-B6AB-2DC876D25EF7"><apiname>CMMFDevSound::SetVolumeRamp()</apiname></xref> function is only available during tone play. </p> </li> <li id="GUID-9A084BD5-0129-515F-903D-BFF0C15CFD97"><p>To set the speaker balance, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0D55BCC4-9882-3F49-B1AD-922B48264F79"><apiname>CMMFDevSound::SetPlayBalanceL()</apiname></xref> function. This function has two parameters: </p> <ul><li id="GUID-81C55F4A-EDB6-5BF5-9C06-774CCA17A557"><p> <codeph>aLeftPercentage</codeph> - the left speaker volume percentage. </p> </li> <li id="GUID-500B8942-CDF6-5351-A477-DD5C877B9C97"><p> <codeph>aRightPercentage</codeph> - the right speaker volume percentage. </p> </li> </ul> </li> <li id="GUID-088FB072-2D31-5D74-8FC9-F73D2D2A5631"><p>To set the priority setting for this instance of DevSound to access the audio device, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1B3B1694-EED8-3B33-B424-C48DDAFBE75A"><apiname>CMMFDevSound::SetPrioritySettings()</apiname></xref> method. Priority settings are used by the Audio Policy component to resolve multiple requests to access the audio hardware. </p> </li> </ul> </context> <steps-unordered id="GUID-103647A5-E19B-50F6-B510-2DFBD62E123A"><step id="GUID-406FC4FC-6506-5BDB-930B-CEF50AFE3F64"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-32BCEB03-5399-390A-B842-949F30F76CB3"><apiname>CMMFDevSound::PlayFixedSequenceL(TInt)</apiname></xref> function to start playing a fixed tone sequence. </info> <info>This function has one parameter, <codeph>aSequenceNumber</codeph>, the index identifying the specific predefined tone sequence to be played. </info> </step> <step id="GUID-A1EA2CE4-51E3-5906-BF23-CE216924C669"><cmd/><info>Call <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-8AD3FCA2-84C3-3BFC-B0A9-CEAF132D0BF5"><apiname>MDevSoundObserver::ToneFinished(TInt)</apiname></xref> function to complete successfully a fixed tone sequence. </info> <info> Note: Further calls to <codeph>CMMFDevSound::PlayFixedSequenceL(TInt)</codeph> can be made both before and after the <codeph>MDevSoundObserver::ToneFinished(TInt)</codeph> callback is received. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita"><linktext>Pausing and
+                Resuming a Tone</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD" xml:lang="en"><title>Wait
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-DC7551FB-8858-42E2-A949-4AC6E40432FB"><p>Wait
+notes contain a wait graphic of indefinite duration. They are used during
+operations that take a long time when it is not possible to estimate the duration
+of the operation. Whenever possible, the user should be able to stop the operation.
+For this, a softkey labeled e.g. <uicontrol>Cancel</uicontrol> is provided.</p><fig id="GUID-12944F1C-48F3-4E80-804B-A585B911F0C8-GENID-1-6-1-6-1-1-5-1-18-1-1-8-1-2-1-2">
+<title>Wait note</title>
+<image href="GUID-3637DBF8-BABF-4F84-9A7D-8FF66A118261_d0e61285_href.png" scale="33" placement="inline"></image>
+</fig></section>
+<section id="GUID-C5FFA38F-BBFD-44D7-979A-5B0A46420D17"> 
+     <title>Using wait notes in C++ applications</title>      <p>You can create
+either a basic wait note that is displayed only when your application is in
+the foreground or a global note that stays displayed even if the application
+launching the note is not in the foreground. The related APIs are the Notes
+API (for basic notes) and the Notifiers
+API (for global notes). </p><p>Wait notes are predefined notes that
+cannot be used just by instantiating a simple note class. These notes' lifetime
+is based on a background process, and client code has to provide an interface
+to retrieve this information. For implementation information, see Creating a wait note.</p><p>To create a global wait note, use the
+class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref> in
+the Notifiers
+API. For implementation information, see Using
+global notes and Using
+global notes with user interaction.</p><p>For basic notes, you can
+change the icon or text displayed in the note, use a different kind of sound,
+or change the note duration using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p><p>For information on customizing
+global notes, see Enhancing
+global notes. You can change the graphic, animation, tone, and softkeys
+using the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#cee323af0704e07d3f1887a4a13c1639" format="application/java-archive"><codeph>SetGraphic</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#d23699273b28a39c0817bc575be767ab" format="application/java-archive"><codeph>SetAnimation</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#a8748ee0b3342c24a11b8ed0ea9121bc" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#f31895e5838994b1c70300cfd3d7d127" format="application/java-archive"><codeph>SetSoftkeys</codeph></xref>.</p></section>
+
+
+
+</conbody><related-links>
+<link href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita"><linktext>Confirmation
+note</linktext></link>
+<link href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita"><linktext>Information
+note</linktext></link>
+<link href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita"><linktext>Warning note</linktext>
+</link>
+<link href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita"><linktext>Error note</linktext>
+</link>
+<link href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita"><linktext>Permanent
+note</linktext></link>
+<link href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita"><linktext>Progress
+note</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-93F53961-9DA3-5D01-A881-D28E0EBF8B3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-93F53961-9DA3-5D01-A881-D28E0EBF8B3C"><title>Upgrading ROM Plug-ins</title><shortdesc>Phone manufacturers sometimes require to provide installable upgrades to the existing ROM plug-ins delivered with the phone. The requirement arises to fix defects or add a new functionality. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context id="GUID-5DD9A8CE-B14D-5681-A6EA-39D4B2303CE0"><p>The plug-in framework identifies and uses the plug-in upgrades in the following scenarios: </p> <ul><li id="GUID-C70CF089-B48C-5CB8-BCD7-26D77B475383"><p>Client code uses the ROM-only plug-in resolver, as described in <xref href="GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6.dita">Using the ROM-only resolver</xref>. </p> </li> <li id="GUID-5091E3A2-2382-5341-BAFF-E55C25714F0B"><p>The plug-in upgrade location is specified at ROM build time using the <filepath>SPI</filepath> (Static Plug-in Information) file. </p> </li> </ul> <p>For the upgrades to be successful, the existing ROM plug-in and the upgrade must meet certain conditions. When an upgrade is created, ensure the existing ROM plug-in and the upgrade meet the following requirements: </p> <ul><li id="GUID-50F1022F-D4D1-538A-B08A-3EEB74294555"><p>The name of the plug-in DLL and resource file of the upgrade must be the same as the existing ROM plug-in. </p> </li> <li id="GUID-802B0E54-6780-523F-8396-87689DB2FDAB"><p>The interface UID and implementation UID for the upgrade and the existing ROM plug-in must be the same. </p> </li> <li id="GUID-976DEBF1-D3DB-552D-8474-A818E729AA49"><p>The plug-in DLL's Vendor ID must be the same in the upgrade and the existing ROM plug-in. </p> </li> <li id="GUID-9372F89E-8A1F-59AC-8AE2-807CA94EF4D2"><p>The value of <codeph>version_no</codeph> member of <codeph>IMPLEMENTATION_INFO</codeph> must be higher for the upgrade than the existing ROM plug-in. For more details, see <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">Creating a Standard Registration Resource File</xref>. </p> </li> <li id="GUID-633E76F8-22F0-5852-BBCF-D8A20D1639BB"><p>The value of <codeph>VERSION</codeph> variable in the project file for the upgrade must be higher than the value for the <codeph>VERSION</codeph> variable in the project file (.mmp file) of the ROM plug-in. </p> <p>The <codeph>VERSION</codeph> variable normally has the default value of 10.0 and is not explicitly set. But for the upgrade it has to be set to a value higher than the ROM plug-in. For more details, see <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita">Language-Neutral Files </xref>. </p> </li> </ul> <p>If the values for plug-in DLL name ,interface UID and implementation UID differ, the plug-in framework treats the upgrade plug-in as a new implementation. </p> </context> <steps id="GUID-042C8B5D-5798-5CA2-992C-2C2E18B483AA"><step id="GUID-AE5911E0-6020-5DB5-A2B8-A5210E72C5DA"><cmd/><info>Provide a SIS stub package for the plug-in DLL of the upgrade on the same drive as the existing ROM plug-in. </info> <info>This step is a part of the general procedure that allows ROM-based files to be upgraded. </info> <info>The SIS file provides information that is utilized by the Software Installer program to identify the upgrade as a valid replacement for the original ROM plug-in. For more details, refer <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita">Language-Neutral Files </xref>. </info> </step> <step id="GUID-0D73CF5E-C668-54E1-BAF2-72BCEF5AF9CD"><cmd/><info>Set the <codeph>rom_only</codeph> member of <codeph>IMPLEMENTATION_INFO</codeph> to 0 in the registration resource file of the plug-in. </info> <info>  NOTE: If <codeph>rom_only</codeph> member is set to 1, upgrades are ignored. </info> <info>For more details, refer <xref href="GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6.dita">Preventing a ROM-based implementation from being overridden</xref>. </info> </step> </steps> </taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e54661_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50" xml:lang="en"><title>Classic
+UI Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Classic UI provides the native UI support library, AVKON, including standard
+controls, views, dialogs and some services for UI applications.  </p>
+<section id="GUID-CF554F82-ABFF-4BD8-BC09-4BAA90FB3787"><table id="GUID-FB49FC91-126A-4D94-B79A-A3B172F6417B">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry valign="top"><p>What you want to do</p></entry>
+<entry valign="top"><p>Where to start</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>I want to understand the fundamental architecture of a GUI application.</p></entry>
+<entry><xref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita">Application
+and UI frameworks</xref></entry>
+</row>
+<row>
+<entry><p>I want to design my application for a phone with a touch screen.</p></entry>
+<entry><xref href="GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita"/></entry>
+</row>
+<row>
+<entry><p>I want to use the standard controls and dialogs that Classic UI
+provides.</p></entry>
+<entry><xref href="GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita">UI components</xref></entry>
+</row>
+<row>
+<entry><p>I want to create my own controls and animations.</p></entry>
+<entry><xref href="GUID-6C16417B-5B37-5310-B59A-750D971AA6D4.dita">The UI Control Framework (CONE)</xref></entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e114928_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-940E3C48-D0ED-419A-9172-E4856C6CA809.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-940E3C48-D0ED-419A-9172-E4856C6CA809" xml:lang="en"><title>Register
+a view with the View Server</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p><codeph>CCoeAppUi</codeph> provides functions for view
+registration and pseudo-view registration for the application identified by <codeph>aAppUid</codeph>.
+Registering allows a view to participate in the view activities, such as activation,
+deactivation and their notifications in the View Server.</p>     <note> Views
+must be registered in the app UI's<codeph> CCoeAppUi::ConstructL(CCoeAppUi
+*)</codeph>.</note><p>The following code snippet shows registering a view:</p><codeblock xml:space="preserve">CNewView* iViewId = new( ELeave ) CNewView ( TVwsViewId( 0xA,0x1 ), iCCoeAppUi );
+CleanupStack::PushL( iViewId );
+iCCoeAppUi-&gt;RegisterViewL( iViewId );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB" xml:lang="en"><title>Application
+Architecture Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>APPARC provides access to a cached list of applications, and their properties,
+on the device. APPARC also provides a mechanism for launching applications
+and switching between tasks. </p>
+<section><title>Purpose</title> <p>The main purpose of APPARC is to </p> <ul>
+<li id="GUID-869A9DDC-5BCE-58FE-A404-8B10B00ED539"><p>manage and register
+applications with the device </p> </li>
+<li id="GUID-C4C659F3-027E-5216-A0FD-DEA4A135081F"><p>scan the device for
+installed applications and associate data types to the applications based
+on the information in the registration file </p> </li>
+<li id="GUID-37BADDBF-EFFF-56C6-9348-9CB8D162B8CF"><p>load applications and
+manage the creation and destruction of application objects and document objects </p> </li>
+<li id="GUID-4FBABF6C-D3E5-5086-A45B-90A5927185CF"><p>support the registration
+of non-native applications </p> </li>
+<li id="GUID-5A799FDF-A676-5538-BDE0-FCDAB7857631"><p>define a Server Application
+Framework, which allows applications to communicate through the client-server
+architecture </p> </li>
+<li id="GUID-907A3B8B-EF8B-5280-B825-7C8D15038E50"><p>support multiple service
+types over the client-server link and establish a client-server connection
+to an already running server application </p> </li>
+<li id="GUID-F4DCD71D-2713-5C7E-83AC-DE976DCD6ECD"><p>monitor the lifetime
+of the server application </p> </li>
+<li id="GUID-B11E42C5-4326-5A59-A07C-95AE266AEAE3"><p>define the basic polymorphic
+interfaces that applications must conform to, such as, <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> and <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref>  </p> </li>
+<li id="GUID-AED566ED-D731-5A2D-956A-41A5AD0B0943"><p>provide a list of available
+control panel applications present on the device. </p> </li>
+</ul> </section>
+<section><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>Server Application Framework</dt>
+<dd><p>The Server Application Framework provides generic service support over
+a client-server link, on which real services can be created. A service typically
+provides a client-side interface that clients can use directly, and a server-side
+interface that server applications have to implement. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>The following diagram shows the interaction
+of APPARC with other components. </p> <fig id="GUID-B597764E-2919-55D3-848B-D8579A4E0A98">
+<image href="GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e114928_href.jpg" placement="inline"/>
+</fig> <p>The following list describes the interaction between APPARC and
+each of the components depicted in the APPARC architectural diagram: </p> <ul>
+<li id="GUID-BAA2F511-151F-5B24-9B31-B6203C8905C4"><p>APPARC provides the
+basic behavior for GUI-based applications. APPARC also provides basic behavior
+for documents in a document-view based application. Uikon builds on the basic
+behavior that APPARC provides for GUI applications. PIM application components
+(Contacts and Calendar) derive the basic behavior for GUI-based applications
+from APPARC. </p> </li>
+<li id="GUID-6E250526-6427-5D7C-BED6-AA903C27E342"><p>APPARC maintains a list
+of installed applications on the device. APPARC supports rule-based application
+launching which is implemented as ECOM plug-ins. These plug-ins define rules
+that enable APPARC to either deny or accept the application launch requests. </p> </li>
+<li id="GUID-EF948E8F-3540-5346-BC63-FCEAD9AA80A7"><p>Software Install (SWI)
+allows installing, uninstalling and upgrading of native software on the device.
+When an application needs to be installed, SWI uses APPARC for launching applications
+if run-on-install or run-on-uninstall is specified. </p> </li>
+<li id="GUID-30282950-6E98-5988-A05B-2B5D8E86848C"><p>When an application
+is launched APPARC interacts with the GDI and BIT GDI components to associate
+the application with the appropriate application icon, caption and display
+screen. </p> </li>
+</ul> </section>
+<section><title>API summary</title> <table id="GUID-8AE3BE8D-64A7-5356-B7C8-9C399A2C09D7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry><p><b>API</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref>  </p> </entry>
+<entry><p>A class that defines the basic twin roles of an application class: </p> <ul>
+<li id="GUID-D25C2518-DEAB-54F1-AD7D-64D5C98C230E"><p>as a factory that creates
+concrete document objects </p> </li>
+<li id="GUID-5807892A-1432-5CD9-BF89-B9FF1DE369B5"><p>as a supplier of utility
+functions not specific to any particular instance of a document. </p> </li>
+</ul> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A7C7B19A-66D8-38A7-B5D6-03B81D2F2C93.dita"><apiname>CApaAppListNotifier</apiname></xref>  </p> </entry>
+<entry><p>An application list change notifier that provides a notification
+whenever an application is added or deleted. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-0510F0C4-2D81-3C4A-A3FC-95B9F624FF14.dita"><apiname>CApaCommandLine</apiname></xref>  </p> </entry>
+<entry><p>A class that provides information for launching an application.
+This class is often referred to as a command line and it contains </p> <ul>
+<li id="GUID-41D2C6FB-1E60-5BCB-B478-0DC4D0ECCCD6"><p>the name of the application
+EXE to be launched </p> </li>
+<li id="GUID-4D1DB1CC-8D6A-5A8C-921B-A6885F1B0336"><p>the document name </p> </li>
+<li id="GUID-A7E91EAD-7C40-56F6-83E2-106FA9E98F1D"><p>a command code that
+defines the way an application is launched (the structure of this depends
+on the application to be launched). </p> </li>
+</ul> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref>  </p> </entry>
+<entry><p>The base class for all documents. A document contains the data associated
+with the content of the application. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4FB064FC-210C-384A-BE92-35CA399B34C3.dita"><apiname>CApaSystemControlList</apiname></xref>  </p> </entry>
+<entry><p>A class that provides a list of all available control panel applications
+present on the device. This class is implemented as a linked list of <xref href="GUID-460DE2A7-6E12-3B0D-9026-63119F093EB6.dita"><apiname>CApaSystemControl</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-C4F91485-6386-36EC-982B-DC2B7AAE7B7A.dita"><apiname>CServiceRegistry</apiname></xref>  </p> </entry>
+<entry><p>The Service Registry stores associations between service-datatype
+pairs and applications. The service-datatype pair is the primary key for the
+registry. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-2E824A1A-078A-3D43-8B49-DF6328330B51.dita"><apiname>RApaAppServiceBase</apiname></xref>  </p> </entry>
+<entry><p>The base class that provides a client-side interface for accessing
+server applications. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref>  </p> </entry>
+<entry><p>A session with the APPARC server providing access to a cached list
+of applications on the device. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p><b>Developing a GUI-based application</b> </p> <p>A
+GUI-based application can be developed using the <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> and <xref href="GUID-D7041709-1EBE-3E42-8E16-C7F62081AFB7.dita"><apiname>CApaDocument</apiname></xref> interfaces.
+For more information, see <xref href="GUID-1D7BD70F-40A3-53FF-8150-A9CAFA4D01D8.dita"> A
+Minimal UI Application</xref>. </p> <p><b>Enumerating applications</b> </p> <p>APPARC
+provides a set of APIs that can enumerate the list of applications on the
+device. For more information, see <xref href="GUID-4E1B057E-5291-54FC-A0C0-37234CBFBD8E.dita">Enumerating
+applications</xref>. </p> <p><b>Accessing running applications</b> </p> <p>Applications
+running on a device are known as tasks. The <xref href="GUID-E1A1806C-8757-35DF-A4FB-AE3C63DED364.dita"><apiname>TApaTaskList</apiname></xref> class
+is used to access applications running on a device, where each task can be
+an instance of the <xref href="GUID-851055CF-D5E6-34EA-8D4B-53FC50D90C24.dita"><apiname>TApaTask</apiname></xref> class, which is used to manipulate
+or query tasks. For more information, see <xref href="GUID-0F1CB874-391F-5D44-B960-517E447DC712.dita">Accessing
+and manipulating running applications</xref>. </p> <p><b>Creating a control
+panel application</b> </p> <p>APPARC provides an API to create a control panel
+application. For more information, see <xref href="GUID-86AB2626-27F1-5761-85F7-5644C5D0A675.dita">Creating
+control panel applications</xref>. </p> <p><b>Creating a new service</b> </p> <p>The
+server application framework supports platform-level services between client
+and server applications. These services must be defined for client and server
+applications to communicate. For more information, see <xref href="GUID-5862F14F-5BB7-584B-A8B1-447975C42D49.dita">Creating
+a new service</xref>. </p> <p><b>Using a service in a client</b> </p> <p>Clients
+and server applications interact through a common service, which adheres to
+a protocol defining the communication channel between the two. This inter-process
+communication channel also provides a security checkpoint for application
+capability checking and so on. Services provide useful functionality to clients.
+For more information, see <xref href="GUID-B12A3024-44BF-51FF-9B84-14DB99ADC907.dita">Using
+a service in a client</xref>. </p> <p><b>Implementing services in a server
+application</b> </p> <p>Server applications can have one or many services.
+Each service type has a unique identification (UID). For more information,
+see <xref href="GUID-A5E4A8AD-8A40-5567-AE97-8CC6B496093E.dita">Implementing services
+in a server application</xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita"><linktext>Generic Application
+Support</linktext></link>
+<link href="GUID-827AFAA3-75A4-5F08-8F83-1E36DAD8533D.dita"><linktext>Secure Software
+Install</linktext></link>
+<link href="GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2.dita"><linktext>Using Uikon</linktext>
+</link>
+<link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics
+Device Interface (GDI)</linktext></link>
+<link href="GUID-638C061E-49BE-4297-8C02-E3EE261C7F26.dita"><linktext>Calendar
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-94215E49-605B-51BA-B215-10BDA1A0C013.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-94215E49-605B-51BA-B215-10BDA1A0C013" xml:lang="en"><title>Generic Services</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Generic Services is a collection of unrelated components that provide generic services to other components, applications and libraries of the Symbian platform. The services include support for active backup, handling Uniform Resource Indicators (URIs), recognising Multipurpose Internet Mail Extension (MIME) types and scheduling tasks.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16"><title>What are ESK files?</title><shortdesc>ESK files contain protocol module information that is used to load ESock. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Protocol modules are plug-ins to ESock that have .PRT extensions. Protocol modules implement a socket communication protocol, or a hook to a protocol. ESK files determine the protocol modules to load for ESock. ESK files also determine how the protocol modules are bound together. The ESK files are read during ESock startup and can also contain parameters specific to a particular protocol. </p> <p>The CMI file for an ESock worker thread specifies the ESK file to be processed and the protocols to be hosted. This is done using the EskMask parameter in the [IniData] section and then supplying a mask. For example: </p> <p> <codeph>EskMask = IP.*.ESK</codeph>  </p> <p>As a result of this example, all ESK files that start with "IP." are supplied to the specified ESock CPM. If required you can use EskMaskn (where n is an integer value between 1 and 8) for example EskMask1 = bt.*.esk. </p> <p> <b>Note:</b> The values for the EskMask and EskMask[1..8] parameters are limited to 16 characters. </p> <p>The EskMask parameter is specified in the <codeph>[IniData]</codeph> section of the CMI file because it is specific to ESock and is passed by Configurator onto the ESock server for interpretation. The parameter is ignored in the following circumstances: </p> <ul><li id="GUID-2D32B889-B830-5F16-9FC2-383C7AC5FB08"><p>If it is specified incorrectly in the [Loader] section of a CMI file </p> </li> <li id="GUID-94CCA305-6B59-5006-9BDB-01E6A6DC0AB3"><p>If it is specified incorrectly in a CMI file that does not run an ESock CPM. For example if FileName parameter is not esocksvr.dll. </p> </li> </ul> </conbody><related-links><link href="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita"><linktext>What are CMI files?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9444E57C-1C2F-5EAC-B162-25FC27BB9516.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9444E57C-1C2F-5EAC-B162-25FC27BB9516"><title>Pre-v5.1 non-Unicode resource format</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes the resource file format used with the pre-Unicode versions of Symbian platform (all versions before v5.1). This format is obsolete for later versions. </p> <table id="GUID-DDC8DE1F-2A89-5E70-B20F-14EE1003B810"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Number of bytes</b> </p> </entry> <entry><p> <b>Description</b> </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores the file-position of the start of the resource index (see the last row of this table for a description of the resource index). </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores the size of the resource index in bytes. </p> </entry> </row> <row><entry><p>[any] </p> </entry> <entry><p>This contains the data for all the resources stored in order, one after another with no byte-padding between them. The binary data of each resource is laid out exactly as specified in the resource definition. </p> </entry> </row> <row><entry><p>(number_of_resources+1)*2 </p> </entry> <entry><p>This is the resource index, which is a series of two-byte integers (in little-endian byte order), one for each resource in the resource file, each storing the file-position of that resource’s data (see row immediately above). </p> <p>The last 16-bit number gives the file offset of the end of the last resource (i.e. the beginning of the index table). </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9452D60C-CD3E-570D-885F-F329264AB6F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9452D60C-CD3E-570D-885F-F329264AB6F4" xml:lang="en"><title>The
+array buffer</title><shortdesc>Describes the array buffer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All arrays have an array buffer. The implementation of this buffer and
+the way it is used depend on the specific type of array.</p>
+<p>In fixed length arrays and packed arrays the elements are contained within
+the array buffer itself.</p>
+<p>In variable length arrays each element is contained within its own heap
+cell and the array buffer contains <i>pointers</i> to the elements.</p>
+<p>Logically, an array buffer is linear but, physically, it can be organised
+either as a flat buffer or a segmented buffer.</p>
+<p>In general, you can choose between array classes which use a flat array
+buffer and array classes which use a segmented array buffer. The choice depends
+on how the array is to be used.</p>
+<p>A segmented array buffer is implemented using a <codeph>CBufSeg</codeph> object.</p>
+<p>A flat array buffer is implemented either:</p>
+<ul>
+<li id="GUID-F3E43492-AE56-5290-863D-15ED57DFCC6F"><p>directly by the array
+as a piece of linear memory.</p> </li>
+</ul>
+<p>or</p>
+<ul>
+<li id="GUID-B7472961-5E2C-5ECA-864C-7B1FD547FD5F"><p>using a <codeph>CBufFlat</codeph> object.</p> </li>
+</ul>
+<p>The first has a simple and efficient implementation but has some restrictions
+on the size of an array element and is limited to holding fixed length elements.
+The second is a more general implementation but is only limited by the memory
+available.</p>
+<section id="GUID-72E6EC4A-DE51-44A9-A83D-16C3E33874E1"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-945FAA13-A302-55F5-917C-EAD2C9D960E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-945FAA13-A302-55F5-917C-EAD2C9D960E9" xml:lang="en"><title>WhiteList/BlackList TLD Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2" xml:lang="en"><title>armfpu</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>armfpu [ vfpv2 | softvfp ]</codeph>  </p>
+<p>Use the <codeph>armfpu</codeph> statement to specify how the compiler is
+to deal with floating point instructions. </p>
+<p>There are two ways in which floating point instructions can be handled
+on an ARM processor: </p>
+<ul>
+<li id="GUID-929D9EEB-1D4A-58DD-8E62-7E14EAB6566B"><p>through the use of floating
+point support functions. </p> </li>
+<li id="GUID-B28E550A-0785-50B5-B260-7F8C85F1CA2A"><p>directly on a hardware
+floating point co-processor, the Vector Floating Point (VFP) unit. </p> </li>
+</ul>
+<table id="GUID-A0C3733D-2744-5094-AF89-EF15737C68E9">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>softvfp</codeph>  </p> </entry>
+<entry><p>This keyword specifies that floating point instructions are handled
+by floating point support functions. </p> <p>On a device without a VFP unit,
+floating point support functions are implemented in software and operate slowly.
+On a device with a VFP unit, the floating point support functions are handled
+by the VFP unit, and operate faster than when implemented in software. </p> <p>Note
+that applications do not need to make any changes to take advantage of VFP-enabled
+floating point support functions, if they are provided in the device's ROM.
+Such functions are used automatically at run time. </p> <p>If <codeph>armfpu</codeph> is
+not specified in a <filepath>.mmp</filepath> file, then <codeph>armfpu softvfp</codeph> is
+assumed by default. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>vfpv2</codeph>  </p> </entry>
+<entry><p>This keyword specifies that VFP specific code is to be generated
+at compile time whenever floating point instructions are used. </p> <p>On
+a device with a VFP unit, this option results in code that runs faster than
+the floating point support functions generated by <codeph>softvfp</codeph>.
+Note, however, that binaries produced with VFP specific code do not work on
+devices without a VFP unit. <i>Software Install</i> attempts to prevent their
+installation, but if any such binaries are installed onto a device in some
+other way, for example by inclusion into the ROM at device creation time,
+then a call to VFP specific code results in a KERN-EXEC 3 panic (see also <xref href="GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita">Application Installation
+Guide</xref>). </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9473F793-29ED-42ED-933B-A995E56E71CB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-9473F793-29ED-42ED-933B-A995E56E71CB" xml:lang="en"><title>Creating
+a Certificate Store</title><shortdesc>certapp helps you create certificate stores. The following is an
+example for creating a certificate store. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-96BC4EFA-5D97-5125-82F3-8EFF6CB590D5">
+<step id="GUID-C87DB19B-8443-5F13-B623-2FF2839C44B6"><cmd>Create a configuration
+file, <codeph>certclients.txt</codeph>, which maps application name text strings
+to application UIDs. </cmd>
+<info>Make sure that only one application name maps to a UID. </info>
+<info> <b>Note:</b> Although no error is displayed when you map more than
+one application name to a UID, this is not recommended. </info>
+<info>The following is an example of a configuration file: </info>
+<stepxmp><codeblock id="GUID-C2C5476F-EE06-520A-A152-BD73F1E4374F" xml:space="preserve">
+StartClientInfo
+    # Entry 1
+        Uid 0x100042ab
+        Name "SW Install"
+    # Entry 2
+        Uid 0x1000a8b6
+        Name "SW Install OCSP Signing"
+EndClientInfo
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-10DCCA68-8018-5C5E-8659-2EEE13C6D663"><cmd/>
+<info>Convert <codeph>certclients.txt</codeph> to a binary file using the
+following command: </info>
+<info><p><cmdname>&gt; certapp --hcertclients=certclients.txt --out --bcertclients=certclients.dat</cmdname></p></info>
+</step>
+<step id="GUID-C1959BB6-6EA7-5D3F-AB72-6FC0632D8BBC"><cmd/>
+<info>Generate the file certificate store (<codeph>cacerts.dat</codeph>) and
+SWI certificate store (<codeph>swicertstore.dat</codeph>) files. </info>
+<info><p><cmdname>&gt; certapp --hcertclients=certclients.txt --hfilecertstore=cacerts.txt
+--out --bfilecertstore=cacerts.dat</cmdname></p></info>
+<info><p><cmdname>&gt; certapp --hcertclients=certclients.txt --hswicertstore=swicertstore.txt
+--out --bswicertstore=swicertstore.dat </cmdname></p></info>
+<info><p><b>Note:</b> You can use the following command to combine the listed
+commands into a single command and create a certificate store.   </p><p><cmdname>&gt;
+certapp --hcertclients=certclients.txt --hfilecertstore=cacerts.txt --hswicertstore=swicertstore.txt
+--out --bcertclients=certclients.dat --bfilecertstore=cacerts.dat --bswicertstore=swicertstore.dat </cmdname></p></info>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-7C96B363-7891-50D3-A40F-92B9CBC4624C.dita"><linktext>Using certapp</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-947F448A-34D1-570F-9017-ED7B70674FBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-947F448A-34D1-570F-9017-ED7B70674FBC" xml:lang="en"><title>Implementing
+TKey derived classes</title><shortdesc>This document describes how to implement TKey derived classes.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-1CA6BC6E-CC1A-4662-BC69-9F0551A19C2B"><title>Constructors</title> <p>The constructors are used to set the
+following information:</p> <ul>
+<li id="GUID-833E8D75-4336-501E-B131-FFAB85FF3CF1"><p>the key offset</p> </li>
+<li id="GUID-E1F4DD0A-D918-51D5-8775-D4D48FDE7914"><p>the type of comparison
+to be made between keys</p> </li>
+<li id="GUID-DEE000EE-C1D9-5FAD-8073-1D3BD0FA7C92"><p> the length of the key
+(for text type keys only).</p> </li>
+</ul> <p>For example:</p> <codeblock id="GUID-EA80D208-8559-5616-BB78-6B5B39183DE1" xml:space="preserve">TKeyDerived::TKeyDerived(TInt anOffset,TKeyCmpText aType)
+    : TKey(anOffset,aType)
+       {}
+</codeblock> <codeblock id="GUID-F7CCD8FA-0F40-5880-A602-29B4D068A86B" xml:space="preserve">TKeyDerived::TKeyDerived(TInt anOffset,TKeyCmpText aType,TInt aLength)
+       : TKey(anOffset,aType,aLength)
+       {}
+</codeblock> <codeblock id="GUID-2014FE37-1DFF-54B8-B095-824DDEFDBE7D" xml:space="preserve">TKeyDerived::TKeyDerived(TInt anOffset,TKeyCmpNumeric aType)
+       : TKey(anOffset,aType)
+       {}
+</codeblock> </section>
+<section id="GUID-B66EC4BD-6126-4515-995C-5EF82B9BD411"><title>Implementing the At() function</title> <p>A typical implementation
+of the virtual function <codeph>At()</codeph>, which gets a pointer to the
+key of an element corresponding to a given index, might be structured:</p> <codeblock id="GUID-B2EE7328-FF89-58DB-B08A-5E630CC88E35" xml:space="preserve">TAny* TKeyDerived::At(TInt anIndex) const
+       {
+       if (anIndex==KIndexPtr)
+        {
+              return((TUint8 *)iPtr+iKeyOffset);
+        }
+       //
+       // code to return a pointer to the key in the appropriate element
+       //
+       }
+</codeblock> <p>The derived class will need to have a pointer to the array
+it represents. At the very least, the derived class will need a data member
+for this pointer and, possibly, a member function to set it. This is needed
+in order to implement the <codeph>At()</codeph> function.</p> <p><codeph>TKey</codeph> and
+derived classes use untyped pointers, i.e. pointers of type <codeph>TAny*</codeph>.
+It may be desirable to provide type safety by further deriving a templated
+class.</p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e399939_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5" xml:lang="en"><title>Resource
+string handling</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Symbian platform provides support for loading and formatting
+resource strings through the StringLoader class.
+To use this class, you must define your strings in the resource file with
+the <parmname>RESOURCE TBUF</parmname> statement.</p>
+<p>The syntax for the resource string declaration is as follows:</p>
+<codeblock xml:space="preserve" id="GUID-04157BE9-A433-44BB-94B1-F6D32FF51163">RESOURCE TBUF r_name34 { buf = STRING_value_in_rls_file; }</codeblock>
+<p>where</p>
+<ul>
+<li><p><parmname>RESOURCE</parmname> is the keyword for the statement</p>
+</li>
+<li><p><parmname>TBUF</parmname> is a utility structure to contain
+the string</p></li>
+<li><p><parmname>r_name34</parmname> is the symbolic ID used in
+your code</p></li>
+<li><p><parmname>STRING_value_in_rls_file</parmname> maps to a value
+in an <parmname>rls</parmname> file to support <xref href="GUID-9EA7B72B-8394-48B8-A0CC-4BB34CBDB01C.dita">localization
+and internationalization</xref></p></li>
+</ul>
+<p> For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-resource/bafl/TBUFStruct.html#TBUF" format="application/java-archive"><parmname>TBUF</parmname></xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-94D67092-5EB3-4D83-A164-CA628F2E2DB0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-94D67092-5EB3-4D83-A164-CA628F2E2DB0" xml:lang="en"><title>GLib</title><shortdesc>GLib is  a general-purpose utility library, which provides many
+useful data types, macros, type conversions, string utilities, file utilities,
+a main loop abstraction, and so on. It works on many UNIX-like platforms,
+Windows, OS/2, and BeOS.  </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2" xml:lang="en"><title>List
+of Example Code Use Cases</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document lists all the example code programs available for each module,
+organised by use case. </p>
+<section id="GUID-2E20A530-17B3-4D82-AE38-33832BE1EE5F"><title>Symbian OS
+Fundamentals</title> <ul>
+<li id="GUID-1B1B8502-164E-55B1-A922-FC10F631719D"><p><xref href="GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita">Basic
+helloworld application</xref>  </p> </li>
+<li id="GUID-C418B11F-2806-5C26-9D0C-D2BBA08C49A5"><p><xref href="GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita"> How
+to create a C class</xref>  </p> </li>
+<li id="GUID-C49BC6C1-5DD9-5CD1-B78D-F58E446C8702"><p><xref href="GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita"> How
+to do single phase construction</xref>  </p> </li>
+<li id="GUID-D2DBFCF1-50A9-5632-8279-129366248751"><p><xref href="GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita"> How
+to do two-phase construction</xref>  </p> </li>
+<li id="GUID-A2B894D2-1A35-5FC2-8FF9-637F2FA63595"><p><xref href="GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita"> How
+to use an R class</xref>  </p> </li>
+<li id="GUID-E2958219-436C-550E-A9B3-26CB402C431E"><p><xref href="GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita"> How
+to use a T class</xref>  </p> </li>
+<li id="GUID-17416CA0-E455-535A-A06B-8C546D95D08D"><p><xref href="GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita">How
+to use a mixin class</xref>  </p> </li>
+<li id="GUID-35E98BB5-E747-53DC-BCC5-87968FF87913"><p><xref href="GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita"> How
+to create a static DLL</xref>  </p> </li>
+<li id="GUID-0A9F3C9F-C957-5ECA-A06F-5A3D3F42FFD9"><p><xref href="GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita"> How
+to use a static DLL</xref>  </p> </li>
+
+</ul> </section>
+<section id="GUID-EFBCC960-EDCD-48FB-9BB0-9609A633ECE4"><title>Application
+Framework</title> <ul>
+
+
+
+
+
+
+
+<li id="GUID-C0CFA5C6-0039-59FB-9A15-322A1752F9C2"><p><xref href="GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita">How
+to implement a simple GUI application with a single view</xref>  </p> </li>
+<li id="GUID-71EC6DCA-2989-5E40-8015-0F3F24508103"><p><xref href="GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA.dita">How to create an animation
+using the Bitmap Animation framework</xref>  </p> </li>
+<li id="GUID-70E03963-92C8-5274-8F2A-0B42A9502C4D"><p><xref href="GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA.dita">How to view an animation
+inside a window</xref>  </p> </li>
+</ul> </section>
+
+<section id="GUID-6B6D9D19-C847-44F8-A649-B168DD700042"><title>Communication
+Framework</title> <p><b>Data Server</b></p><ul>
+<li id="GUID-794A4BED-FAC8-5CAF-B57E-DD1222C11BC5"><p><xref href="GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita">How
+to do connection monitoring and management using the RConnection API</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-303CEED0-C6E2-4C00-94FA-88182B8C6851"><title>Device Services</title> <ul>
+<li id="GUID-54522F43-4012-58DD-9B9C-3E3020C38267"><p><xref href="GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita">How
+to write a System Wide Property (SWP) policy</xref>  </p> </li>
+<li id="GUID-4DBE7C9A-3A5C-5E1A-9307-FBA5BAB25B61"><p><xref href="GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita">How
+to write a System State policy</xref>  </p> </li>
+<li id="GUID-3ABE037D-D033-5BA0-8137-F8832D74993D"><p><xref href="GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita">How
+to request a change to an SWP, with and without notification</xref>  </p> </li>
+<li id="GUID-6C85F6F4-25B1-5BDA-8C1A-46736D42FB6D"><p><xref href="GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita">How
+to request a change to a system state, with and without notification</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-25D09F03-F721-4270-81E6-CD5F43859E3E"><title>High Level
+Internet Protocols </title> <ul>
+<li id="GUID-C8E2CFB4-F3B2-5F1E-AF0D-C6A7D4B46066"><p><xref href="GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita">How
+to use HTTP APIs</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-D84ED617-A6BF-4563-BBFF-FDADBC46F3D1"><title>Generic Application
+Support</title> <ul>
+<li id="GUID-8DD3CBC3-FFEE-5399-B0A0-EFB98F3DA09F"><p><xref href="GUID-74153585-D483-5761-85B6-2CF2D2615C00.dita">How
+to add a floating alarm to the alarm server</xref>  </p> </li>
+<li id="GUID-5F232D0C-A2EA-5C63-B308-F60C8B67FCCF"><p><xref href="GUID-74153585-D483-5761-85B6-2CF2D2615C00.dita">How
+to add a fixed alarm to the alarm server</xref>  </p> </li>
+<li id="GUID-474F7658-3DEB-56A4-AF63-69A23FBFD0D8"><p><xref href="GUID-74153585-D483-5761-85B6-2CF2D2615C00.dita">How
+to get notification from the alarm server</xref>  </p> </li>
+
+
+
+</ul> </section>
+<section id="GUID-ED27F9A8-98CD-4DE1-B916-EFD2FC52C425"><title>Generic OS
+Services</title> <ul>
+<li id="GUID-6DA76648-D820-59B7-B51C-35FB18D9FA99"><p><xref href="GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita">How
+to compress data using the EZLIB API</xref>  </p> </li>
+<li id="GUID-501BF7D9-2B8E-5056-8229-73CC61961C28"><p><xref href="GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita">How
+to decompress data using the EZLIB API</xref>  </p> </li>
+<li id="GUID-BF304C4A-FD6F-588C-9F54-E9F7036FFB50"><p><xref href="GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita">How
+to create a secure directory using PIPS</xref>  </p> </li>
+<li id="GUID-81D08636-1D94-5E37-91FD-5D225042198B"><p><xref href="GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita">How
+to read data from a file using PIPS</xref> </p> </li>
+<li id="GUID-DB774EFB-B96D-5792-B97B-4F14AA30C9AF"><p><xref href="GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita">How
+to write data to a file using PIPS</xref>  </p> </li>
+<li id="GUID-E77A4C18-6F2F-5B67-A4E3-4F8E6AD00577"><p><xref href="GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita">How
+to remove the secure directory using PIPS</xref>  </p> </li>
+<li id="GUID-16BAB341-EEC2-5724-A7B3-C65ED0EB90D2"><p><xref href="GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita">How
+to use the P.I.P.S. standard C maths library, libm.dll</xref>  </p> </li>
+<li id="GUID-7EDFF698-152D-5175-9C5A-CEC646857A71"><p><xref href="GUID-C5E99BB6-0CBE-51AE-882D-37D004106A2F.dita">How
+to write a simple console-based STDLIB (C Standard library) program</xref>  </p> </li>
+<li id="GUID-F7ADF2C8-A3B5-59FD-BD84-CDD4F41B7B88"><p><xref href="GUID-30DBE93F-1255-533F-9B02-4E19E248D065.dita">How
+to write a Techview GUI application whose engine is written using STDLIB</xref>  </p> </li>
+<li id="GUID-0E9CD40B-98F4-54B9-AFB6-696597537A8C"><p><xref href="GUID-F1BDE1DB-2749-52F4-AC9B-74A5D9A32A67.dita">How
+to create the most basic STDLIB application</xref>  </p> </li>
+<li id="GUID-42554490-3FB6-5919-99CF-A47EAA96958F"><p><xref href="GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita">How
+to develop hybrid application which uses both pure C and native Symbian C++
+APIs</xref>  </p> </li>
+<li id="GUID-D06B9590-D071-5F03-86EB-205D0EDFF691"><p><xref href="GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita">How
+to create a named pipe</xref>  </p> </li>
+<li id="GUID-5E873B57-54DB-583F-BE06-62E2E83A4611"><p><xref href="GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita">How
+a parent process communicates with its child process using named pipes (FIFO)</xref>  </p> </li>
+<li id="GUID-1C7E92C2-A51D-5E85-A549-3066274F12D3"><p><xref href="GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita">How
+a parent process communicates with its child process using a single pipe (popen())</xref>  </p> </li>
+<li id="GUID-598317ED-3B57-5CD6-9C7A-FFE1A5031DEC"><p><xref href="GUID-092C18D4-A525-5562-9BF6-41435E400290.dita">How
+to create multiple threads in PIPS using libpthread</xref>  </p> </li>
+<li id="GUID-C1817157-E53E-5E11-BC94-8F93BCFC1E7D"><p><xref href="GUID-092C18D4-A525-5562-9BF6-41435E400290.dita">How
+to synchronize among multi threads in PIPS</xref>  </p> </li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to handle
+a signal using the default handler</xref> </p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to handle
+a signal using a customized signal handler</xref> </p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to ignore
+an incoming signal</xref></p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to block
+and release a signal</xref></p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to wait
+for a signal</xref></p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to handle
+a SIGPIPE signal</xref></p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to gracefully
+terminate a process</xref></p></li>
+<li><p><xref href="GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita">How to handle
+an asynchronous event using signals</xref></p></li>
+<li id="GUID-BD1B9524-EC3A-5D15-8A8C-F3F737ABB0B3"><p><xref href="GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita">How to create a data recognizer</xref>  </p> </li>
+<li id="GUID-AA15D870-5CA0-50FB-9CB0-B2FBBCADB828"><p><xref href="GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita">How to get the MIME type(s)
+that a data recognizer is capable of recognizing</xref>  </p> </li>
+<li id="GUID-C0913B8A-CB5E-5526-93FE-D8F8380CD77D"><p><xref href="GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita">How to do data recognition</xref>  </p> </li>
+<li id="GUID-84B5F4AF-8813-59DC-85D8-4120862DEC77"><p><xref href="GUID-8B938FEF-4D70-4589-921C-C99667193E20.dita">How
+to run tasks using the task scheduler</xref>  </p> </li>
+<li id="GUID-87AC8A91-5C48-5B49-BAB1-07DCA7C8DEAA"><p><xref href="GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita">How
+to use the XML framework to parse XML and WBXML files</xref>  </p> </li>
+<li id="GUID-105BAEF8-1C52-5F96-A8C4-5C5386ADCA87"><p><xref href="GUID-E736B50D-F671-5CCB-A245-BA9791ADA395.dita">How
+to read data from a resource file into an array</xref>  </p> </li>
+<li id="GUID-F323A1E9-35F5-5309-A5BD-882B43AC6807"><p><xref href="GUID-4820CA37-982D-57BC-8829-498192801B1E.dita">How
+to use a resource reader to read data from a resource file into the data members
+of a class</xref>  </p> </li>
+<li id="GUID-722045B8-B596-5C93-B963-69E4A35A07DD"><p><xref href="GUID-4820CA37-982D-57BC-8829-498192801B1E.dita">How
+to read a resource from a resource file</xref>  </p> </li>
+<li id="GUID-4B800C0B-1547-5E51-9B79-3EE85F6D714F"><p><xref href="GUID-1DF62CB5-FB81-5802-9071-E492B0C81065.dita">How
+to read a string resource and print it</xref>  </p> </li>
+<li id="GUID-898F03EA-581C-5D7E-8456-42CF585125CA"><p><xref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita">How
+the signature of a resource file is checked before it is used</xref>  </p> </li>
+<li id="GUID-68031BED-04CA-5E0F-BDA7-79F9FA12DD49"><p><xref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita">How
+to read a text string from a resource file</xref>  </p> </li>
+<li id="GUID-9D47352E-2F93-59F9-A45C-E3C0F160BBA3"><p><xref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita">How
+to check the identity of a resource file</xref>  </p> </li>
+<li id="GUID-F8F236F3-E6A7-5632-80B7-537229AA0A51"><p><xref href="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita">How
+to read multiple resource files</xref>  </p> </li>
+<li id="GUID-8C50391F-C16B-5228-A4A3-F48A4BE38A2E"><p><xref href="GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB.dita">How
+to use multiple resource files with cross-referenced resources</xref>  </p> </li>
+<li id="GUID-02DC7916-A015-525E-9DD6-2CBBE7E66F1F"><p><xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">How
+to write an interface definition for an ECOM plug-in</xref>  </p> </li>
+<li id="GUID-FCD351BC-4518-561B-BED4-0F683C591EF6"><p><xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">How
+to implement an interface in an ECOM plug-in</xref>  </p> </li>
+<li id="GUID-7E344DA7-73C1-5C86-B67D-9EB4D2543BD6"><p><xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">How
+to obtain the default implementation of an interface in an ECOM plug-in</xref>  </p> </li>
+<li id="GUID-C82E4427-24A6-5BC6-BA7C-602EB76ADADD"><p><xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">How
+to obtain an implementation of an interface in an ECOM plug-in</xref>  </p> </li>
+<li id="GUID-69600CAF-72D8-5158-AC0A-881384657285"><p><xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">How
+a client application uses the interface in an ECOM plug-in</xref>  </p> </li>
+<li id="GUID-E080B95A-6D75-5680-B14F-903C6AA5C7C8"><p><xref href="GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita">How to do string handling
+with EUserHl</xref>  </p> </li>
+<li id="GUID-DA38E7D3-1DEC-5E9B-823B-87AA91F33A80"><p><xref href="GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita">How to do resource management
+using EUserHl</xref>  </p> </li>
+<li id="GUID-6C633D8B-06C8-53B8-8F47-ABFAEAE9F932"><p><xref href="GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita">How to get the memory overhead
+of using EUserHl</xref>  </p> </li>
+<li id="GUID-59193013-7146-54FB-B2FB-519865CE2627"><p><xref href="GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita">How
+to create a URI</xref>  </p> </li>
+<li id="GUID-8957C338-AAD3-5BAD-BC96-49A8A1F50903"><p><xref href="GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita">How
+to modify a URI</xref>  </p> </li>
+<li id="GUID-84E8D724-BDAA-5A2D-96AB-BA4490254128"><p><xref href="GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita">How
+to resolve a URI</xref>  </p> </li>
+<li id="GUID-D552E42B-21AF-597C-877A-527330F13B6E"><p><xref href="GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita">How
+to parse a URI</xref>  </p> </li>
+<li id="GUID-BF0F8F4A-D99C-56CD-9FF9-69263D8E83B7"><p><xref href="GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita">How
+to validate a URI</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-F934D199-D090-47D0-AD6F-98E44F54D7CB"><title>Graphics</title> <ul>
+<li id="GUID-8CFA8A2F-FA0F-5D05-B3CE-CBE7040414E2"><p><xref href="GUID-CF6355EF-3241-5196-AEBC-1337E1AE2259.dita">How
+to create an animated sprite from a bitmap</xref>  </p> </li>
+<li id="GUID-3D66363D-CA14-500B-A0CD-DE7D872D3544"><p><xref href="GUID-A15C553D-9D64-5C48-9274-6DD1642CDC23.dita">How
+to use the window server's direct screen access interface</xref>  </p> </li>
+<li id="GUID-5B1C7A2D-39E6-5ECA-840E-463B1BC3DF9F"><p><xref href="GUID-F09DA1AD-6D83-5267-B479-C857DFA2B939.dita">How
+to do ordinal positioning of windows</xref>  </p> </li>
+<li id="GUID-3E3251BB-5439-5D18-ABA1-9091009F5E24"><p><xref href="GUID-9FDF961E-D6CA-599C-8D1C-605ECA50F504.dita">How
+to implement simple freehand drawing using a pointer buffer</xref>  </p> </li>
+<li id="GUID-9CF75FE1-DEAA-5005-8EC7-8AF3C80020A8"><p><xref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita">How
+to load a bitmap</xref>  </p> </li>
+<li id="GUID-E9332993-C8C5-5742-9855-3FC28CB80342"><p><xref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita">How
+to draw a bitmap</xref>  </p> </li>
+<li id="GUID-A1AC068A-A4AD-5929-82A8-C29C2EFD2EF4"><p><xref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita">How
+to construct a control</xref>  </p> </li>
+<li id="GUID-63D12F06-952F-5092-B896-250051A870A3"><p><xref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita">How
+to rotate a bitmap</xref>  </p> </li>
+<li id="GUID-F59C6098-3065-5270-A21C-BC4CA88C8D67"><p><xref href="GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita">How
+to create a label</xref>  </p> </li>
+
+
+
+
+
+
+
+<li id="GUID-DDF37255-B1FF-5D9D-95E2-7D19599AD606"><p><xref href="GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita">How
+to draw various shapes in a window</xref> </p> </li>
+
+
+
+
+
+
+
+
+
+</ul> </section>
+<section id="GUID-8F0535DB-E323-470B-BCC3-F35A527B0B23"><title>Kernel and
+Hardware Services</title> <ul>
+<li id="GUID-B9AF4BF9-D13A-532B-85C4-8A8DEE66926A"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to insert elements into a dynamic array</xref>  </p> </li>
+<li id="GUID-5F9B9C90-3B69-594E-8E7A-3A7771F86278"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to append elements to a dynamic array</xref>  </p> </li>
+<li id="GUID-6A803B5C-AF53-58E2-85B8-568FC26E8DF7"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to access elements of a dynamic array</xref>  </p> </li>
+<li id="GUID-E981FB4E-F595-55C1-81AA-C6A43E17AE14"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to remove elements from a dynamic array</xref>  </p> </li>
+<li id="GUID-BF576282-EC17-500A-8E1D-3726FDCA1323"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to search a dynamic array</xref>  </p> </li>
+<li id="GUID-A72ADF94-4282-5903-AAF9-A6CA8E5B9BAD"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to sort a dynamic array</xref>  </p> </li>
+<li id="GUID-4C3AB0F9-701C-5AF0-BF45-FFD2C356AC02"><p><xref href="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita">How
+to destroy a dynamic array</xref>  </p> </li>
+<li id="GUID-A1DFC448-5720-59AB-89DD-21BE564E8C4B"><p><xref href="GUID-CEB1E9D7-3FAB-58D4-BD07-E924D0B87555.dita">How
+to check the range for fixed arrays</xref>  </p> </li>
+<li id="GUID-0D2E7F06-DF31-5A56-86C0-8D1BD188DAE7"><p><xref href="GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita">How
+to create a circular buffer</xref>  </p> </li>
+<li id="GUID-3E8971F3-B124-5FAF-B391-4007993E477D"><p><xref href="GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita">How
+to add elements to a circular buffer</xref> </p> </li>
+<li id="GUID-B2BB5D48-BFC3-55D1-A884-A326949E4D0E"><p><xref href="GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita">How
+to remove elements from a circular buffer</xref>  </p> </li>
+<li id="GUID-E78BFE47-4582-5C6D-8934-11AF7265C78B"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to insert elements into a dynamic buffer</xref>  </p> </li>
+<li id="GUID-E357C3D7-0DFB-50E7-A9E4-19F3E1DE1EFF"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to read the elements of a dynamic buffer</xref>  </p> </li>
+<li id="GUID-2DAA2B32-151A-5200-84B3-57AA43FC3948"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to overwrite a dynamic buffer</xref>  </p> </li>
+<li id="GUID-BDACC340-C731-5148-8F5B-1A7F96DBA787"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to expand a dynamic buffer</xref>  </p> </li>
+<li id="GUID-517FE433-E380-5ED4-BB51-ADA8C2AA9149"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to delete elements from a dynamic buffer</xref>  </p> </li>
+<li id="GUID-87491CAD-BB7D-5C13-8AC6-F1CB924226EB"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to compress a dynamic buffer</xref>  </p> </li>
+<li id="GUID-3C510F10-67FB-51C8-8CDC-555141A71220"><p><xref href="GUID-56FB0E4F-23BF-5B4E-B1F6-C485F0E0CC9D.dita">How
+to display the contents of a buffer</xref>  </p> </li>
+<li id="GUID-8BAD3A0C-AA33-5750-BB8E-853654D4D010"><p><xref href="GUID-3321A4E7-8652-511F-8A17-E816F5731E94.dita">How
+to do lexical analysis</xref>  </p> </li>
+<li id="GUID-13F6DCF7-9F80-5D10-A22B-482AE9F6E198"><p><xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita">How
+to create a resizable buffer</xref>  </p> </li>
+<li id="GUID-2AB464C2-4DEE-5655-90F3-BA88F319D0B0"><p><xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita">How
+to swap two resizable buffers</xref>  </p> </li>
+<li id="GUID-EDF5B370-7BCE-5FF7-8CF1-891D2C70716F"><p><xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita">How
+to assign data to a resizable buffer</xref>  </p> </li>
+<li id="GUID-4124AC74-6CBB-57A2-B00D-D414F9FB2DD4"><p><xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita">How
+to reallocate a resizable buffer</xref>  </p> </li>
+<li id="GUID-705B09E5-6B31-57B3-B590-E8AB0860DE73"><p><xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita">How
+to replace and modify the data in a resizable buffer</xref>  </p> </li>
+<li id="GUID-454A84B6-73DC-51A9-A4AA-8EA04CBD5230"><p><xref href="GUID-6B6532D0-6346-51E4-BC7A-6E8487EF8BA1.dita">How
+to do date and time handling</xref>  </p> </li>
+
+
+
+
+
+
+
+
+
+
+<li id="GUID-9ED882FE-8F56-5E73-8B31-036EB06540A1"><p><xref href="GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita">How
+to use the Publish and Subscribe mechanism</xref>  </p> </li>
+<li id="GUID-B5EED50E-D5DD-524D-BCAA-6F3F7F5BE696"><p><xref href="GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita">How
+to do security checking on a client by a server</xref>  </p> </li>
+<li id="GUID-FB6E72CF-900E-5DF3-873E-8990F606DD5B"><p><xref href="GUID-09FC1F03-B5EB-5228-832B-C64D95AEA05B.dita">How
+to get locale-specific currency values and symbols</xref>  </p> </li>
+<li id="GUID-D9CE44C7-837A-5B54-AE4B-9B20AF84884D"><p><xref href="GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita">How
+to synchronise threads</xref>  </p> </li>
+<li id="GUID-D66D4BF6-CA9E-54F9-A06A-E528F55DFC34"><p><xref href="GUID-47F14C10-3ACD-583C-9E7D-84641229A771.dita">How
+to use thread local storage</xref>  </p> </li>
+<li id="GUID-4787D6BE-2AFF-51D5-A739-9F543E0518FE"><p><xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita">How
+to implement an asynchronous timer</xref>  </p> </li>
+<li id="GUID-A8CE6217-E740-50C9-8164-F884D387E0AC"><p><xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita">How
+to implement a periodic timer</xref>  </p> </li>
+<li id="GUID-AA4CAC71-08E4-5590-908F-35B0A79FCADA"><p><xref href="GUID-086939FA-D381-5705-BEE6-6DF2D3624849.dita">How
+to implement a heartbeat timer</xref>  </p> </li>
+<li id="GUID-C615EDD0-7FC3-5458-BCB4-7FF878ED316D"><p><xref href="GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita">How
+to create a global message queue</xref>  </p> </li>
+<li id="GUID-A3EC156E-D822-50AF-9FB5-3F0879053D9E"><p><xref href="GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita">How
+to send a message to another process</xref>  </p> </li>
+<li id="GUID-DCB96FA1-FFBB-5195-A45F-D761F6DD40DC"><p><xref href="GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita">How
+to receive a message from another process</xref>  </p> </li>
+<li id="GUID-A578BBD4-4902-59AB-8323-0090655DD2AB"><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">How
+to load and unload a driver</xref>  </p> </li>
+<li id="GUID-6DB5EA21-904C-501F-833A-E4611E219953"><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">How
+to create multiple connections to a server</xref>  </p> </li>
+<li id="GUID-C331EF86-4FFF-5255-99E8-A58437D1CAA5"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita">How
+to use active objects and an active scheduler</xref>  </p> </li>
+<li id="GUID-C3341B19-6227-5305-9614-A731BC295457"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita">How
+a wait loop can be used to identify request completion</xref>  </p> </li>
+<li id="GUID-81471C2B-D2A8-5DE8-A5AC-92EE52A31554"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita">How
+to accept and print keyboard inputs to a console </xref>  </p> </li>
+<li id="GUID-A2E42CBB-BEE7-5D1F-9B5B-5CCEA33F8F2F"><p><xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-544EE3A6-86A2-57FF-A13B-94658F1DCA16">How to create multiple subsessions within a session</xref>  </p> </li>
+<li id="GUID-D829FBD5-233D-55BC-936C-DCDCA86B9AC6"><p><xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita">How
+to start a server</xref>  </p> </li>
+<li id="GUID-3F025DEA-1229-53F3-B085-B1181C58EE33"><p><xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita">How
+to create a single session with a server</xref>  </p> </li>
+
+<li id="GUID-8CD6FFB9-D79E-5680-B49E-5A37CE218735"><p><xref href="GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita">How
+to load and read from the locale DLL</xref>  </p> </li>
+<li id="GUID-5B1A7E4A-F173-52BF-B0F6-5E0E6B4E3906"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to construct an object and leave on failure</xref>  </p> </li>
+<li id="GUID-7728E27C-4879-5A03-8D31-4663EF80083D"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to construct an object and return an error code on failure</xref>  </p> </li>
+<li id="GUID-F85C5C38-ACF3-58F6-96B1-8E567214C6E7"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to cleanup compound classes</xref>  </p> </li>
+<li id="GUID-7FD774CF-9FBD-5855-A8DA-B73D5876401E"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to implement the NewL() static function</xref>  </p> </li>
+<li id="GUID-D59260AF-8874-5343-8BD4-9326AE35B2BA"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to implement the NewLC() static function</xref>  </p> </li>
+<li id="GUID-5A1CCECE-9201-579C-855D-E42AFFDD7587"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to use the cleanup stack</xref>  </p> </li>
+<li id="GUID-33156820-0599-5B81-AC4E-C4ED6AABC4EF"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to use the TRAPD macro</xref>  </p> </li>
+<li id="GUID-13EDD518-D5ED-5B98-A790-20AB1B3A6727"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to use CleanupDeletePushL()</xref>  </p> </li>
+<li id="GUID-9E066777-2A91-5F07-A021-1DC79600EAF7"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to use CleanupClosePushL()</xref>  </p> </li>
+<li id="GUID-3E03AE4E-FD85-5C77-9AD0-32C7F9055576"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to use CleanupReleasePushL()</xref>  </p> </li>
+<li id="GUID-9341CEA6-16DD-50B1-9CD3-65211BDBDF64"><p><xref href="GUID-16DD2138-617F-57EA-9A35-70155AA7F7D1.dita">How
+to use CleanupArrayDeletePushL()</xref>  </p> </li>
+<li id="GUID-24CD2B7C-11E2-578F-BF3B-25405AC0BB50"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD">How to use a doubly linked list </xref>  </p> </li>
+<li id="GUID-A4FB7405-06CD-54D5-BF0E-EC776EFF0654"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D">How to use a singly linked list</xref>  </p> </li>
+<li id="GUID-BE35252C-EDEB-533B-9D10-253C712FFB56"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0">How to use a delta queue</xref>  </p> </li>
+<li id="GUID-1EC9C3EE-B34E-5947-A236-78218D9F86AB"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0">How to generate timer events</xref>  </p> </li>
+<li id="GUID-57D999E0-60FE-5B80-ADD2-53B40516EF67"><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">How
+to use a logical device driver (LDD) and a physical device driver (PDD)</xref>  </p> </li>
+<li id="GUID-589090A1-AC62-573F-83B5-19C4B6EF7918"><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita">How
+to use a global condition variable</xref>  </p> </li>
+<li id="GUID-D9615395-2D69-5F1A-8CB3-6B0042A6A590"><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita">How
+to implement a write operation on a shared memory block</xref>  </p> </li>
+<li id="GUID-25EE3478-CCEC-5EED-A6D1-D08C5C326961"><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita">How
+to use a local condition variable</xref>  </p> </li>
+<li id="GUID-3378721F-E348-52B0-9ADA-F1B320190D98"><p><xref href="GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita">How
+to create a queue of integer tokens</xref>  </p> </li>
+<li id="GUID-9243C325-C2F9-5711-8B93-45056FEB64AB"><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">How
+to load and unload an ldd and pdd</xref>  </p> </li>
+<li id="GUID-AE3E44A5-99A7-51D7-919D-A64E7D955E99"><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">How
+to cancel an asynchronous request</xref>  </p> </li>
+<li id="GUID-EE3A5240-D313-592F-9B9C-D3753321EB1F"><p><xref href="GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita">How
+multiple clients in different processes connect to a server</xref>  </p> </li>
+<li id="GUID-E7C950DB-E82A-5959-B873-4D0367FACA89"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-90645A43-313B-55FC-91D0-547C237B680B">How to handle binary data using 8 bit descriptors</xref>  </p> </li>
+<li id="GUID-734CBC47-1D3E-5AE4-8193-E29DFB007BB5"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-FC2B9B70-F849-5F19-9F3C-25D5FDCC576D">How to use basic buffer descriptors</xref>  </p> </li>
+<li id="GUID-B2E541C5-6529-524E-B2DA-069D8B98FF44"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-CE601E1E-AF03-56E8-B7FB-0CDFF4EA4386">How to create and use a heap buffer descriptor</xref>  </p> </li>
+<li id="GUID-63E8CEC2-B65D-54A2-93CD-123FD5D1EADA"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-5040249B-55ED-5ACD-837B-6B0FD4AF24FE">How to use descriptors as function arguments</xref>  </p> </li>
+<li id="GUID-8583B379-AA83-507E-8435-D1F5986D5750"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-C79042EB-4ACF-5972-9F57-E7C0F37DECF6">How to use modifiable descriptors</xref>  </p> </li>
+<li id="GUID-D2B9845D-7CA8-51F7-AB75-5FBA74D7A45E"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-927CFF04-C0D1-5BDE-B221-4245113924F7">How to use non-modifiable descriptors</xref>  </p> </li>
+<li id="GUID-8A90092C-7536-56A6-B108-7BC273DAF79A"><p><xref href="GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9.dita#GUID-14FAE656-7CDE-56ED-ACB2-7853276C24E9/GUID-5AEFA6EB-A100-5B96-935D-2537EEFB56F5">How to use pointer descriptors</xref>  </p> </li>
+<li id="GUID-98FD0272-1A6D-51FB-8936-B77B62096C16"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get the number of available power-related resources</xref>  </p> </li>
+<li id="GUID-082AD630-9B2B-5907-84C3-66AFE3E36179"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get information about a power-related resource</xref>  </p> </li>
+<li id="GUID-13DDA999-E886-5217-BFF8-CEB3955211AC"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get information about all power-related resources</xref>  </p> </li>
+<li id="GUID-B96F159D-D327-5F55-9840-FC58C581DB7F"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get the state of a power-related resource</xref>  </p> </li>
+<li id="GUID-5C31B8AB-C524-5C5F-9DA6-F5EF9AACB74D"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get the number of clients using a particular power-related resource</xref>  </p> </li>
+<li id="GUID-2F1F01B3-6439-5B6D-A5FE-796592EFBD06"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get the number of power-related resources used by a client</xref>  </p> </li>
+<li id="GUID-CF45E4C4-9680-51E3-B320-29220427089A"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get information about all the power-related resources in use by a particular
+client</xref>  </p> </li>
+<li id="GUID-143AAF5A-BB38-5886-A525-A61886E572F9"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get information about all clients using a particular power-related resource</xref>  </p> </li>
+<li id="GUID-111416B6-9534-530C-9532-103A4F824CF0"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get the names of all Resource Manager clients</xref>  </p> </li>
+<li id="GUID-62B7DDDC-3114-529F-9FE7-5D4196E4CA83"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to change the state of a power-related resource</xref>  </p> </li>
+<li id="GUID-3F6EAE14-60E5-5C9F-9E78-8D6A64300CC9"><p><xref href="GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita">How
+to get notification about a state change to a power-related resource</xref>  </p> </li>
+
+<li><p id="BD60698B-5F00-4693-BDF7-849B3BFBD61F"><xref href="GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita">How
+to use semaphore in a multithreaded application</xref></p></li>
+<li><p><xref href="GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita">How to understand
+the differences between multithreaded code running in a unicore environment
+and in a multiprocessor environment</xref></p></li>
+<li><p><xref href="GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita">How to use a
+named database using RdbNamedDatabase</xref></p></li>
+</ul> </section>
+<section id="GUID-04145381-C665-41F9-8BC8-D5AEED089166"><title>Messaging</title> <ul>
+<li id="GUID-4AA84CE0-D56D-5998-818B-719B4A72E62F"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">How
+to create a client registry</xref>  </p> </li>
+<li id="GUID-58084600-8859-5796-A17A-BD90065CD2DC"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">How
+to create an IMAP account</xref>  </p> </li>
+<li id="GUID-0DFC0FE0-4535-5533-907F-75880C5CB925"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">How
+to create an SMTP account</xref>  </p> </li>
+<li id="GUID-A849443E-2C9E-5984-88EF-E33F36038CA6"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">How
+to create an SMTP message</xref>  </p> </li>
+<li id="GUID-EF57114C-9A49-57FD-A171-E8FB310108B2"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">How
+to send an SMTP message</xref>  </p> </li>
+<li id="GUID-1CA17BBF-E65F-5117-BC61-C7AFBF07FFAB"><p><xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">How
+to connect to the IMAP server and download mail sent using SMTP</xref>  </p> </li>
+<li id="GUID-FFB38E67-9107-57E3-BD36-6D0A2B003FA2"><p><xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">How
+to update registry information when MTM groups are installed or uninstalled</xref>  </p> </li>
+<li id="GUID-BCD5A910-504E-5B25-8CC5-ACA08E183FD9"><p><xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">How
+to create a POP3 account</xref>  </p> </li>
+<li id="GUID-2E5717A2-4264-5509-976D-ACBCEDF2DB47"><p><xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">How
+to connect to a POP3 server and download mail sent using SMTP</xref>  </p> </li>
+<li id="GUID-BBA241A4-03C4-562C-9B87-E615FE99E755"><p><xref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita">How
+to create a SendAs message</xref>  </p> </li>
+<li id="GUID-EFB6D825-F707-5810-8B01-6260FF55AB57"><p><xref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita">How
+to display account names</xref>  </p> </li>
+<li id="GUID-3F3DCFB7-FDE0-59F5-BC2E-E78D9F75E6F3"><p><xref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita">How
+to define the connected session's available message types</xref>  </p> </li>
+<li id="GUID-0DE038F8-2097-5FF9-B5FD-5036B469DCDC"><p><xref href="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita">How
+to forward a message from an MTM account</xref>  </p> </li>
+<li id="GUID-800A0E22-81B1-5F13-B1A2-B819989A85CD"><p><xref href="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita">How
+to query for the capability of an MTM account</xref> </p> </li>
+<li id="GUID-7C3A69D9-471C-57AF-AC84-BBD37A0F95E0"><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">How
+to create a BIO message</xref>  </p> </li>
+<li id="GUID-D07978C9-ED82-50C9-B6DA-C5E80E19D7BC"><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">How
+to create a session with the message server</xref>  </p> </li>
+<li id="GUID-3B655259-C85B-5F5B-B06D-618BFE2787BD"><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">How
+to send a BIO message</xref>  </p> </li>
+<li id="GUID-FEF9C70E-DFB1-557C-90BD-26D73DEE3A09"><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">How
+to create a BIO message parser</xref>  </p> </li>
+<li id="GUID-F75DB020-0138-5AE2-A8DD-8A4D1B3F5ACA"><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">How
+to read messages from the message store</xref>  </p> </li>
+<li id="GUID-F4782CB0-9900-57DC-98A0-58DBAB2A96F7"><p><xref href="GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita">How
+to parse a message's body text using the BIO message parser</xref>  </p> </li>
+<li id="GUID-F28AB654-9D9D-5663-9D3A-6B6410169BEC"><p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">How
+to display the header information for message entries</xref>  </p> </li>
+<li id="GUID-DE272737-9608-5CC6-9B02-2820E64D920B"><p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">How
+to search and sort a message store</xref>  </p> </li>
+<li id="GUID-DC3279E7-A022-5346-A8CA-365FA2D4FD8C"><p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">How
+to do a combined search/sort of a message store</xref>  </p> </li>
+<li id="GUID-178FB7F7-02E3-53F3-AE67-AFE3F1BF79DD"><p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">How
+to search and sort a message store iteratively</xref>  </p> </li>
+<li id="GUID-890C761F-ECDB-5669-A4B9-9BEAFF7A4919"><p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">How
+to search and sort a message store using a query ID</xref>  </p> </li>
+<li id="GUID-83A45635-37BC-5707-9214-2C684D3FB168"><p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">How
+to create an SMS service</xref>  </p> </li>
+<li id="GUID-64DAC51E-C7AF-573E-80A9-17307B2ED090"><p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">How
+to create an SMS</xref>  </p> </li>
+<li id="GUID-EF1EBCF8-83FE-5DCB-B5B4-2EFB19660C0B"><p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">How
+to send an SMS</xref>  </p> </li>
+<li id="GUID-9CCD6A6F-C790-51DF-B62F-D2627BE04279"><p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">How
+to access and display SMS messages in the inbox, outbox and sent folders</xref>  </p> </li>
+<li id="GUID-948F5BFC-A4A3-59F9-9EE9-0E51D43B7BB0"><p><xref href="GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita">How
+to delete SMS messages</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-EC20ACAC-6D20-4B90-94FD-2319894574AE"><title>Multimedia</title> <ul>
+<li id="GUID-7826DEB9-FCBE-5DD2-BA4E-8EB44E789EF2"><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">How
+to play an audio tone</xref>  </p> </li>
+<li id="GUID-DDB7E337-F93B-50E4-B240-70A23A651038"><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">How
+to play audio from a file</xref>  </p> </li>
+<li id="GUID-38FED1E9-F5BD-5EAB-BCD8-F56E676DE47E"><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">How
+to convert an audio file to another format</xref>  </p> </li>
+<li id="GUID-9D0588BF-E93C-58E6-8800-D2FAE67BB4A9"><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">How
+to record an audio file</xref>  </p> </li>
+<li id="GUID-10B9E43D-9CE9-5E6C-9AD2-8A5CD35C8A71"><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">How
+to stream data</xref>  </p> </li>
+<li id="GUID-EC97DF41-57EF-58F4-9B2D-1A1CCDC1E2DE"><p><xref href="GUID-21D0D9D5-B57F-5F16-A2AF-17BC00DC1B15-GENID-1-6-1-17-1-1-4-1-4-1.dita">How
+to set the volume of an audio file</xref>  </p> </li>
+<li id="GUID-CE92ADF3-F82A-502B-85D3-9EB722FBE5DC"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita">How
+to capture a still image</xref>  </p> </li>
+<li id="GUID-BBF7D525-7513-5ABD-89D4-A05F0206BDD7"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita">How
+to capture video</xref>  </p> </li>
+<li id="GUID-12C2E2C4-85F1-5969-B40A-CFE6BE077227"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita">How
+to transfer viewfinder data</xref>  </p> </li>
+<li id="GUID-63DD72DF-288B-599E-95DA-9A2C8ECA4BC2"><p><xref href="GUID-55BF8452-F9FF-5CF3-9D74-3BC7F5447551-GENID-1-6-1-17-1-1-4-1-5-1.dita">How
+to perform image processing</xref>  </p> </li>
+<li id="GUID-403BF127-9187-5B72-86A5-ABA1D2C1812A"><p><xref href="GUID-22446D23-3CF7-5E1B-B479-4DCA6B6A3DA9-GENID-1-6-1-17-1-1-4-1-11-1.dita">How
+to implement sink and source plug-ins for the Multimedia Framework</xref>  </p> </li>
+<li id="GUID-469A8390-F73A-50E8-908E-F52E4CC4FF70"><p><xref href="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita">How
+to convert images from one format to another</xref>  </p> </li>
+<li id="GUID-546639BE-E94F-5077-BDEE-0C3CAE07D2DB"><p><xref href="GUID-7594A012-166F-5F10-A3ED-256465B4623E-GENID-1-6-1-17-1-1-4-1-8-1.dita">How
+to manipulate images, for instance rotate, flip and zoom</xref>  </p> </li>
+<li id="GUID-23687B6B-FCA5-5DA7-936F-B98133C38C4F"><p><xref href="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita">How
+to record audio clips</xref>  </p> </li>
+<li id="GUID-B86BDF2F-844D-5B05-BEAE-0B83CF685054"><p><xref href="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita">How
+to get the list of audio formats supported</xref>  </p> </li>
+<li id="GUID-B4DDC9F9-0A89-5A5D-9B6C-04A663AF6EA1"><p><xref href="GUID-7082D222-72B8-580F-B4FD-D2934F1B3800-GENID-1-6-1-17-1-1-4-1-12-1.dita">How
+to record audio</xref>  </p> </li>
+<li id="GUID-66BE6C7C-FAEB-518B-A5E0-58512602B36E"><p><xref href="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita">How
+to implement a codec plug-in for the Multimedia Framework</xref>  </p> </li>
+<li id="GUID-62E53F5E-8063-5512-B46D-F5D925A516EA"><p><xref href="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita">How
+to convert media data from one encoding into another</xref>  </p> </li>
+<li id="GUID-2F04ACBF-09B1-5ECE-A8F3-21A2F056ABC6"><p><xref href="GUID-8D8202BB-1070-5EE2-85C0-E37AABA67340-GENID-1-6-1-17-1-1-4-1-9-1.dita">How
+to convert PCM8 into PCM16 encoded audio data</xref>  </p> </li>
+<li id="GUID-D89C563F-BACC-5196-83B5-FA5E6BCBF432"><p><xref href="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita">How
+to implement a format encoder plug-in to the Multimedia Framework</xref>  </p> </li>
+<li id="GUID-04F3E1E8-8A34-55DB-89EC-C181374D0C6A"><p><xref href="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita">How
+to implement a format decoder plug-in to the Multimedia Framework</xref>  </p> </li>
+<li id="GUID-3FDF0ACE-45EE-5278-84F6-08C81C43C0BB"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Basic
+panorama stitching</xref>  </p> </li>
+<li id="GUID-51DF46BE-2CFC-51FF-9E91-8CCAF6C8C21F"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Panorama
+stitching based on viewfinder tracking</xref>  </p> </li>
+<li id="GUID-1FDEC249-5192-5A4A-9A8A-03C024FF609B"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Image
+processing with some basic effects</xref> </p> </li>
+<li id="GUID-18137A68-6625-5325-B921-31FCE84405D3"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Generating
+Scalado SpeedView objects (Spmo)</xref>  </p> </li>
+<li id="GUID-0C7A22A6-6949-57AF-9B40-3CCE0E633FBF"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Removing
+effects from the images</xref>  </p> </li>
+<li id="GUID-8252C68E-415F-567E-A939-B73401AA2BEF"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Adding
+effects to the images and generating a preview</xref>  </p> </li>
+<li id="GUID-E9375C6A-95F9-5AB2-BB58-1C315EB4E421"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Adding
+effects to the images and generating an overlay</xref>  </p> </li>
+<li id="GUID-4E682084-B10C-5D3D-B344-6477F3FBE5EC"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Adding
+a SpeedView object to the image</xref>  </p> </li>
+<li id="GUID-649A6953-F093-5718-8A32-D459262FC8A5"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Squeeze
+an image from a file to a file</xref>  </p> </li>
+<li id="GUID-2B35C292-8A02-591A-8EF6-02DB51BCAD34"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Squeeze
+an image from buffer to buffer</xref>  </p> </li>
+<li id="GUID-D5270FFE-ED95-58F8-95DB-8AFFC9E0DB04"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Auto
+squeeze an image from file to file</xref>  </p> </li>
+<li id="GUID-ABF292DF-AB48-52F9-9FDC-FBE2A8F05D35"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Rotate
+an image from file to file</xref>  </p> </li>
+<li id="GUID-016DB7F9-F00D-5D37-8586-16CE2E52D87B"><p><xref href="GUID-63CBD66E-9E92-51EB-8709-9DE6F2808DC8-GENID-1-6-1-17-1-1-4-1-7-1.dita">Blend
+a jpg data in file to a file and squeeze it</xref>  </p> </li>
+</ul> </section>
+
+<section id="GUID-EE7772E0-6231-47A0-AE20-0A597DF287F2"><title>PC Tools</title> <ul>
+<li><p><xref href="GUID-AED57265-6106-4217-ADE6-1327CA3FDE7E.dita">How to create
+a simple installation file for an application</xref></p></li>
+<li id="GUID-86649DD7-42E4-5D82-BB79-A883ADE3689C"><p><xref href="GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita">How
+to create an installation file for a multilingual application</xref>  </p> </li>
+</ul> </section>
+
+
+
+<section id="GUID-70C7D0D2-3C97-4AA6-BAF7-5C2CD110161D"><title>System GUI
+Framework</title> <ul>
+
+
+<li id="GUID-903653B0-8D2E-5A39-899B-FA811F011DC1"><p><xref href="GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita">How to create and display
+a digital clock</xref>  </p> </li>
+<li id="GUID-931FD18A-086F-57F7-84E6-B25424DD046F"><p><xref href="GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita">How to create and display
+an analog clock</xref>  </p> </li>
+
+
+
+</ul> </section>
+<section id="GUID-C7601FFA-86E1-4F0B-9F09-2AC778726195"><title>Remote Connectivity</title><ul>
+<li><p><xref href="GUID-CE1F63A6-BF8E-4287-BECE-0248420C86AB.dita">How to implement
+a mtp data provider plugin</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-94F21522-D598-5F85-BE04-D606AE8D5A25"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Telnet refers to the client-side software implementation and TelnetD (Telnet Daemon) to the server-side implementation. A Telnet client (for example, host PC) is connected to a TelnetD (for example, device). Here the purpose is to run and control a shell on a device using a PC as a terminal with a keyboard. </p> <p>The main purpose of using Zsh connected through TelnetD is to launch utilities (such as, external programs), debug applications, generate logs and retrieve information (such as, contents of the file) from public directories. The Utilities are executables whose output can be made available to the remote Telnet user by viewing text, or archiving as files or as an another program. </p> <p>Zsh transfers characters to the Telnet client and vice versa using TelnetD. Zsh interface is provided to enable programs to be conveniently launched for testing purposes. The shell also supports a number of <xref href="GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita">built-in commands</xref>. </p> <section id="GUID-B6A34708-CA62-5B2C-918B-595B78D80EDA"><title>Using TelnetD and Zsh</title> <p>Zsh can be launched by selecting the <b>Zsh</b> icon on the device. It starts TelnetD automatically. A connection can then be established from the Telnet client (host PC) to TelnetD by giving the following command at a Windows® or a UNIX® command prompt: </p> <p><userinput>Telnet &lt;ip-address of the device&gt;</userinput> </p> <p>For information on retrieving the IP address refer to <xref href="GUID-A34D9893-C9AE-5C43-85D3-E14BC5DE2A92.dita">Setup</xref>. </p> <p>Every login to Zsh is through a key handshake. The device prompts for a key when you try to connect from the host PC. The same key given to the device has to be given at the host PC for the login to be successful. If the login is successful then the device starts the Zsh application. The maximum number of characters a key can accept is eight. The characters can be a combination of alphabets, numerals, and special characters. </p> <p>For existing Telnet clients on the host PC such as Microsoft Windows or Linux to connect to the server running on the device, the device needs an IP address. </p> <p>TelnetD supports send and receive functionality: TelnetD sends any data to and from Zsh to the host PC. TelnetD runs only when it is connected through a TCP/IP network. When the Telnet client places a request, TelnetD starts Zsh on the device, executes the specified command on the device, and sends the resultant data back to the host PC. </p> <fig id="GUID-0E8BE92D-447E-5C52-8179-F3FE045E8E13"><title>
+          Connection between the client (host PC) and the server (device) 
+        </title> <image href="GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e120285_href.png" placement="inline"/></fig> </section> </conbody><related-links><link href="GUID-643BECA3-FC08-58D0-8E1B-D3ECAEB25CB5.dita"><linktext>Reference</linktext> </link> <link href="GUID-A34D9893-C9AE-5C43-85D3-E14BC5DE2A92.dita"><linktext>Setup</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E"><title>The object container index</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>All object containers must be held within a special type of container known as an object container index. </p> <p>An object container index is an instance of a <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref> class. </p> <p>An object container index not only acts as a container for object containers, but also provides the mechanism through which object containers are created. </p> <p> <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita#GUID-72761B3C-ECB6-34B2-87ED-C972E479357A/GUID-8D0B0EC9-AE35-3D06-AEA0-648E107F8189"><apiname>CObjectConIx::CreateL()</apiname></xref> creates an object container and is responsible for assigning a unique ID to it. This unique ID forms part of the identity of all reference counting objects which that object container will, in due course, hold. </p> <p>For example, the sever creates a single object container index; from this it creates a number of object containers, each of which, in turn, holds reference counting objects. The following drawing shows the idea. </p> <fig id="GUID-253D9535-D893-575C-8970-D9A94799952B"><image href="GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e219907_href.png" placement="inline"/></fig> <p>An object container index is implemented as a simple array where each element of the array contains a pointer to an object container. <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita#GUID-72761B3C-ECB6-34B2-87ED-C972E479357A/GUID-8D0B0EC9-AE35-3D06-AEA0-648E107F8189"><apiname>CObjectConIx::CreateL()</apiname></xref> constructs an object container, assigns a unique ID to it and adds it into the <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref> array. </p> <p>See also: </p> <ul><li id="GUID-7766067F-FB87-57F4-B1C9-EB299B8F7F20"><p> <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref>  </p> </li> <li id="GUID-74D1FD14-DA1C-5C93-9036-9863A6C8ACC2"><p> <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref> </p> </li> <li id="GUID-FE6D8C1C-5F56-5C5F-855C-DE1386FAEB44"><p> <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5"><title>targettype</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>targettype</codeph>  <varname>target-type</varname>  </p> <p>Use the <codeph>targettype</codeph> statement to specify the kind of project. </p> <p>The following target types are supported: </p> <table id="GUID-62E080EB-BB41-51C4-BCCF-9DB1D785D8CC"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Target type</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>ani</codeph>  </p> </entry> <entry><p>A window server animation DLL. </p> </entry> </row> <row><entry><p> <codeph>app</codeph>  </p> </entry> <entry><p>A GUI application. This is deprecated at v9.0. Applications must be converted to EXEs. </p> </entry> </row> <row><entry><p> <codeph>ctl</codeph>  </p> </entry> <entry><p>A system control. This is deprecated at v9.0. They must be converted to applications. </p> </entry> </row> <row><entry><p> <codeph>dll</codeph>  </p> </entry> <entry><p>A DLL: either a shared library, or a polymorphic interface. </p> </entry> </row> <row><entry><p> <codeph>ecomiic</codeph>  </p> </entry> <entry><p>An ECOM implementation collection. This is deprecated at v9.0. The <codeph>plugin</codeph> target type should be used instead. </p> </entry> </row> <row><entry><p> <codeph>epocexe</codeph>  </p> </entry> <entry><p>A Symbian platform executable that can be launched from the shell. This is an executable program which exports no functions under a multi-process platform and a DLL which is linked with the <codeph>TIntWinsMain()</codeph> function exported as ordinal 1 under a single-process platform. </p> </entry> </row> <row><entry><p> <codeph>exe</codeph>  </p> </entry> <entry><p>An executable program. </p> </entry> </row> <row><entry><p> <codeph>exedll</codeph>  </p> </entry> <entry><p>An executable program for a multi-process platform, a DLL for a single-process platform. </p> </entry> </row> <row><entry><p> <codeph>exexp</codeph>  </p> </entry> <entry><p>An executable program with exports. </p> </entry> </row> <row><entry><p> <codeph>fsy</codeph>  </p> </entry> <entry><p>A plug-in file system. </p> </entry> </row> <row><entry><p> <codeph>implib</codeph>  </p> </entry> <entry><p>Results solely in the generation of a <filepath>.lib</filepath> file. It is an error for a component of the <codeph>IMPLIB</codeph> type to contain <codeph>SOURCE</codeph> statements and the build tools enforce this. </p> </entry> </row> <row><entry><p> <codeph>kdll</codeph>  </p> </entry> <entry><p>A kernel DLL. </p> </entry> </row> <row><entry><p> <codeph>kext</codeph>  </p> </entry> <entry><p>A kernel extension. </p> </entry> </row> <row><entry><p> <codeph>klib</codeph>  </p> </entry> <entry><p>A kernel library. </p> </entry> </row> <row><entry><p> <codeph>ldd</codeph>  </p> </entry> <entry><p>A logical device driver. </p> </entry> </row> <row><entry><p> <codeph>lib</codeph>  </p> </entry> <entry><p>A static library. </p> </entry> </row> <row><entry><p> <codeph>mda</codeph>  </p> </entry> <entry><p>A media-server plug-in DLL (deprecated). </p> </entry> </row> <row><entry><p> <codeph>mdl</codeph>  </p> </entry> <entry><p>A MIME recognizer. This is deprecated at v9.0, and should be converted to <codeph>PLUGIN</codeph> (ECOM). </p> </entry> </row> <row><entry><p> <codeph>none</codeph>  </p> </entry> <entry><p>A bitmap or resource file without any executable. </p> </entry> </row> <row><entry><p> <codeph>notifier</codeph>  </p> </entry> <entry><p>An extended notifier DLL. This is deprecated at v9.0, and should be converted to <codeph>PLUGIN</codeph> (ECOM). </p> </entry> </row> <row><entry><p> <codeph>opx</codeph>  </p> </entry> <entry><p>An OPL extension. </p> </entry> </row> <row><entry><p> <codeph>plugin</codeph>  </p> </entry> <entry><p>An ECOM implementation collection. </p> </entry> </row> <row><entry><p> <codeph>plugin3</codeph>  </p> </entry> <entry><p>An ECOM implementation collection that supports extended interfaces. </p> </entry> </row> <row><entry><p> <codeph>pdd</codeph>  </p> </entry> <entry><p>A physical device driver. You can export functions from <codeph>pdd</codeph> if you have a <filepath>.def</filepath> file specified in the <codeph>pdd</codeph>'s matching <filepath>.mmp</filepath> file. </p> </entry> </row> <row><entry><p> <codeph>pdl</codeph>  </p> </entry> <entry><p>A printer driver. </p> </entry> </row> <row><entry><p> <codeph>rdl</codeph>  </p> </entry> <entry><p>A recognizer. This is deprecated at v9.0, and should be converted to <codeph>PLUGIN</codeph> (ECOM). </p> </entry> </row> <row><entry><p> <codeph>stdexe</codeph>  </p> </entry> <entry><p>A P.I.P.S. EXE, which is identified by the following UIDs on a Symbian platform: </p> <ul><li id="GUID-C8D20CDE-93C3-5DAA-AF63-792CEDDAD8CA"><p>UID1 - <codeph>0x1000007a</codeph>  </p> </li> <li id="GUID-0CC91D83-3913-50CE-9A43-38A549013DAC"><p>UID2 - <codeph>0x20004C45</codeph>  </p> </li> </ul> </entry> </row> <row><entry><p> <codeph>stddll</codeph>  </p> </entry> <entry><p>A P.I.P.S. DLL, which is identified by the following UIDs on a Symbian platform: </p> <ul><li id="GUID-D740F0F0-2525-507F-8124-2EE6A5C6830D"><p>UID1 - <codeph>0x10000079</codeph>  </p> </li> <li id="GUID-4727392C-DF4B-52C4-82AF-8D24E32D713E"><p>UID2 - <codeph>0x20004C45</codeph>  </p> </li> </ul> </entry> </row> <row><entry><p> <codeph>stdlib</codeph>  </p> </entry> <entry><p>A P.I.P.S. static library. </p> </entry> </row> <row><entry><p> <codeph>var</codeph>  </p> </entry> <entry><p>A variant file. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b>Note</b>: </p> <ul><li id="GUID-D5C36122-4EF5-53FA-92E5-D9D867468121"><p>For more information about the target types <codeph>stdexe</codeph>, <codeph>stddll</codeph> and <codeph>stdlib</codeph>, refer to <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita">Target Types</xref>. </p> </li> <li id="GUID-BB14CA0D-AF24-5CDA-9ED7-C6AF63365788"><p>The target types <codeph>ecomiic</codeph>, <codeph>kdll</codeph>, <codeph>kext</codeph>, <codeph>klib</codeph>, <codeph>ldd</codeph>, <codeph>pdd</codeph> and <codeph>var</codeph> are built in ARM mode, as these targets have access to kernel APIs. That is, all the kernel code is built in ARM mode using <codeph>--arm</codeph> compiler option, whereas all the user code is built in THUMB mode using <codeph>--thumb</codeph> compiler option. </p> </li> <li id="GUID-64DACAC4-9262-511C-ACC6-ACEF3EB9B9FE"><p>The target types <codeph>stdexe</codeph>, <codeph>stddll</codeph> and <codeph>stdlib</codeph> are supported only on ARM ABI and Symbian emulator compliant platforms, such as, <codeph>ARMv5</codeph>, <codeph>ARMv5_ABIv2</codeph>, <codeph>GCCE</codeph> and <codeph>WINSCW</codeph>. </p> </li> <li id="GUID-6BC8C17A-D28E-5672-A6A5-AF5E2EFE8192"><p>When exporting functions from the target types, build system can auto generate <filepath>.def</filepath> files only for <codeph>DLL</codeph>, <codeph>EXEDLL</codeph>, <codeph>EXEXP</codeph>, and <codeph>STDDLL</codeph> target types even if, you do not have a <filepath>.def</filepath> file specified in the matching <filepath>.mmp</filepath> file. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95448841-5E5B-54C4-85A7-DCE6D078E036.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-95448841-5E5B-54C4-85A7-DCE6D078E036"><title>Constructing an embedded store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Embedded stores are represented by an instance of the <codeph>CEmbeddedStore</codeph> class.</p> <p>A <codeph>CEmbeddedStore</codeph> object is constructed from a host stream. </p> <p>When the <codeph>CEmbeddedStore</codeph> object represents a new embedded store, it is constructed from an <codeph>RWriteStream</codeph> object; for example, a class might include the following code fragment in one of its functions:</p> <codeblock id="GUID-47D69E5D-909D-5EA3-96CD-3FB6ED5E77CB" xml:space="preserve">...
+    // create the stream to contain the embedded store
+RStoreWriteStream childStream;
+                // we need to keep track of this stream id
+iEmbeddedStoreId = childStream.CreateLC(iStore);
+    // construct the embedded store
+CPersistentStore* embeddedStore = CEmbeddedStore::NewLC(childStream);
+...</codeblock> <p>Here, the code assumes that <codeph>iStore</codeph> refers to the top level store and <codeph>iEmbeddedStoreId</codeph> is a data member to hold the ID of the hosting stream.</p> <p>On successful construction, ownership of the host stream passes to the embedded store which means that the embedded store takes on the responsibility for closing the stream.</p> <p>When the <codeph>CEmbeddedStore</codeph> object represents an existing embedded store, it is constructed from an <codeph>RReadStream</codeph> object; for example, a class might include the following code fragment in one of its functions:</p> <codeblock id="GUID-A796CC6C-69C9-5F22-B7A1-30815086EAA3" xml:space="preserve">...
+RStoreReadStream childStream;
+childStream.OpenL(iStore,iEmbeddedStoreId);
+iEmbeddedStore = CEmbeddedStore::FromL(childStream);
+...</codeblock> <p>Where:</p> <ul><li id="GUID-7A3338F6-252E-5D47-9D22-CDD505222958"><p><codeph>iStore</codeph> refers to the top level store</p> </li> <li id="GUID-162A3315-AA91-55CD-B07A-2F02EDBCC5ED"><p><codeph>iEmbeddedStoreId</codeph> is a data member that holds the ID of the hosting stream</p> </li> <li id="GUID-8AE6849E-0BA8-5CB4-8F3F-B33CC4FEED4E"><p><codeph>iEmbeddedStore</codeph> holds a reference to the embedded store object.</p> </li> </ul> <p>When saving data, an application re-creates the embedded store by re-writing the complete partial object network to the embedded store, replacing any existing data.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-95493C3D-58C6-5EBF-85E1-167D58E68658" xml:lang="en"><title>Bluetooth
+Remote Control Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The Bluetooth Remote Control Framework
+provides the APIs needed to send (<xref href="GUID-45209316-9B3A-3384-8345-63638CA55705.dita"><apiname>CRemConCoreApiController</apiname></xref>)
+and receive (<xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref>) remote control commands
+to/from a Bluetooth enabled device. </p> <p><b>In this overview </b> </p> <p>You
+will learn about the Bluetooth Remote Control Framework. Several tutorials
+are provided, links are at the end of the overview, to help get you started
+writing remote control applications. </p> </section>
+<section><title>Architectural relationships</title> <p>The Bluetooth subsystem
+provides a number of APIs that you will use to establish a connection to a
+Bluetooth device that provides the required services. The APIs you need to
+know about include: </p> <ul>
+<li id="GUID-2CE04B62-CBF3-5051-808A-ED69036ED66A"><p><xref href="GUID-5FE7D4DB-B853-57C4-8A90-16DF92F6231A.dita">Bluetooth
+User</xref>  </p> <p>Establishing a Bluetooth connection. </p> </li>
+<li id="GUID-4677DB2E-5D9F-5FBC-A2A6-5C0C909C84C7"><p><xref href="GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita">Bluetooth
+SDP</xref>  </p> <p>Finding a device that can provide the necessary services. </p> </li>
+<li id="GUID-9990C09D-EEFA-5F00-B6E8-85BD96BFB685"><p><xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial
+Comms C32</xref>  </p> <p>The serial communications framework. </p> </li>
+<li id="GUID-6D927D93-DD66-507A-99C6-4301CAA9F9D7"><p><xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Socket
+Server</xref>  </p> <p>The interface to protocols. </p> </li>
+</ul> <p>The <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-7251B0E5-D6B1-524B-9714-6A469F8E1CB3">Audio
+Video Remote Control Profile</xref> (AVRCP) is implemented by the Remote Control
+Framework. A remote control bearer plug-in is required, which uses socket
+APIs internally to send and receive Audio Video Control Transport Protocol
+(AVCTP) data over ESock. </p> </section>
+<section><title>Key Concepts</title><dl>
+<dlentry>
+<dt>Controller</dt>
+<dd><p>The controller is a device that sends a control message or command
+to a target device and is ready to capture responses. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Target</dt>
+<dd><p>The target is a device that accepts the control message or command
+from the controller, invokes necessary procedures and sends out responses
+to controller. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Bearer</dt>
+<dd><p>The bearer is a carrier that acts like a vehicle of transmission for
+remote control messages. The bearer here is an Ecom plugin to the RemCon server. </p> </dd>
+</dlentry>
+<dlentry>
+<dt> Audio Video Remote Control Profile (AVRCP)</dt>
+<dd><p>The bearer that plugs into the RemCon server and transmits remote control
+messages (commands) and status responses. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Converter</dt>
+<dd><p>This is an ECom plug-in that converts the message format from the Client
+side API to the bearer format and vice versa. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Audio Video Control Transport Protocol (AVCTP)</dt>
+<dd><p>The protocol that defines the methods and messages used for controlling
+Audio/Video devices. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Audio Video Distribution Transport Protocol (AVDTP)</dt>
+<dd><p>The AVDTP is used to send frames of encoded multimedia data over Bluetooth. </p> </dd>
+</dlentry>
+</dl></section>
+<section><title>Description</title> <p>The Bluetooth Remote Control Framework
+provides APIs that make it possible for a device to participate in remote
+control relationship. The framework can be used to create an application with
+one of three behavior sets, they are: </p> <ul>
+<li id="GUID-B46D2342-789A-5503-B208-8685A07BEB3C"><p>Device acts as a remote
+controller </p> </li>
+<li id="GUID-85E8A346-1EAC-5A7C-A976-26E3ADC0FEDD"><p>Device is controlled
+remotely </p> </li>
+<li id="GUID-901A5D9A-B7A0-5429-A8EA-0D4E6B458CF6"><p>Combination of the above
+in a single device / application. </p> </li>
+</ul> <p><b>Remote Controller</b> </p> <p>As a controller the device will
+send commands to a target device. A controller can be connection-orientated,
+meaning it identifies a specific device to control and maintains a connection
+with that device, or connectionless, meaning remote control commands are sent
+out into the air for any receptive device to accept. </p> <p>The Controller
+APIs allow an application to send commands to a remote controlled device. </p> <p>Controller
+APIs include: </p> <ol id="GUID-C467E8F2-446E-5FFA-8703-81D1F8329C98">
+<li id="GUID-9D5A6982-FA04-5AC9-A0AE-D38CBC6A2E34"><p> <xref href="GUID-45209316-9B3A-3384-8345-63638CA55705.dita"><apiname>CRemConCoreApiController</apiname></xref>  </p> </li>
+<li id="GUID-E26F43AD-B427-57AB-B2AE-9E38C39B3F28"><p> <xref href="GUID-73C622B9-A91F-35B2-82D5-4D0AFCE0E220.dita"><apiname>CRemConTargetSelectorPlugin</apiname></xref>  </p> </li>
+<li id="GUID-DDDCFAFE-FD7D-5DB4-98A8-CD958048CC12"><p> <xref href="GUID-E11AC4F0-EFBF-3AED-9FB5-EE3974A54768.dita"><apiname>CRemConBearerPlugin</apiname></xref>  </p> </li>
+<li id="GUID-FB5D8C52-CCF2-52A4-8184-CF5E96C0FE17"><p> <xref href="GUID-AB5FFF47-430A-3F2D-AA0F-CA6D33FC3DB3.dita"><apiname> CRemConInterfaceBase</apiname></xref>  </p> </li>
+<li id="GUID-D6069C5A-2693-59E7-90B1-39EFD170D734"><p> <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita"><apiname>CRemConInterfaceSelector</apiname></xref>  </p> </li>
+</ol> <p><b>Controlled Remotely</b> </p> <p>Known as the target device, this
+device receives commands from a controller. Target devices may only be connectionless,
+meaning they will always respond to valid remote control commands, regardless
+of the source of said commands. </p> <p>The Target API enables applications
+to receive commands and to query for information from the controller. </p> <p>Target
+APIs include: </p> <ol id="GUID-B773F2C2-D2BE-5B86-94BE-536C7A1FB903">
+<li id="GUID-FD6A5629-FC0A-5BA1-A7FD-F2237DBB5883"><p> <xref href="GUID-723FC8F2-DB48-3C70-976F-D027E19F480B.dita"><apiname>CRemConCoreApiTarget</apiname></xref>  </p> </li>
+<li id="GUID-2E055556-D061-5993-95FB-66FA9DDAF0A8"><p> <xref href="GUID-7750ED3F-322E-3933-A3F7-6BB8AEE3F627.dita"><apiname>MRemConInterfaceIf</apiname></xref>  </p> </li>
+<li id="GUID-FCA09A7B-5DBB-50BB-92F9-B10706C3AC06"><p> <xref href="GUID-AB5FFF47-430A-3F2D-AA0F-CA6D33FC3DB3.dita"><apiname> CRemConInterfaceBase</apiname></xref>  </p> </li>
+</ol> <p><b>How Remote Control Works</b> </p> <p>The following diagram shows
+how the Remote Control Framework works for a handsfree headset example. </p> <fig id="GUID-C42AEF1A-3E1E-5CD1-84AE-80657ACEA1E1">
+<title>                 Bluetooth Remote Control Headset               </title>
+<desc><p>The controller application uses the Controller API, which is connected
+to the RemCon Server. The ECom plugin or AVRCP in this case is plugged into
+the RemCon server. The message format from the Controller API is converted
+into AVRCP format by the Converter plugin which in turn converts it into target
+API format at the other end. The target APIs invoke the necessary actions
+on the application and update the RemCon server of the status. The applicable
+Audio Video Distribution Transport Protocol (AVDTP) is used to deliver the
+output stream from the multimedia application to the controller device. The
+RemCon Server status is updated to the Controller through the AVRCP bearer. </p> </desc>
+<image href="GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e108810_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>What's next?</title> <p>The following tutorial series has
+been provided to make writing remote control applications easier. </p> <ul>
+<li id="GUID-5C8E6A29-4F25-58FD-9622-D23F81670953"><p><xref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita">Remote
+Control Basics</xref>  </p> </li>
+<li id="GUID-27F6911B-0072-5324-9645-D9BDA3ABA7F3"><p><xref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita">Starting
+as Controller</xref>  </p> </li>
+<li id="GUID-25FD58EC-A89C-5C25-A9BB-37A305BA0084"><p><xref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita">Starting
+as Target</xref>  </p> </li>
+<li id="GUID-567F3EF0-B3CD-5482-A7C8-7CDEBDF4F034"><p><xref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita">Commands
+and Responses</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522-master.png has changed
Binary file Symbian3/SDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e253309_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-956E7DD6-C7FA-5F0A-9C86-D7FE58373A25.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-956E7DD6-C7FA-5F0A-9C86-D7FE58373A25" xml:lang="en"><title>WhiteList/BlackList URI Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9574041E-183D-5C3F-8429-A62323B97739.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9574041E-183D-5C3F-8429-A62323B97739"><title>Dictionary-compressed resource format</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes the dictionary-compressed resource file format introduced from Symbian OS v7.0. This format can produce higher-compression than the simple compression format.</p> <p>The format is supported by the resource reading APIs, but Development Kits do not currently contain a resource compiler that produces this format.</p> <table id="GUID-BBB907BA-47D0-5218-94D8-C6DA502830EE"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p><b>Number of bytes</b> </p> </entry> <entry><p><b>Description</b> </p> </entry> </row> <row><entry><p>16</p> </entry> <entry><p>These bytes store the resource file’s UIDs.</p> <p> The first twelve bytes consist of three four-byte integers (in little-endian byte order) followed by a four-byte CRC checksum generated from those three integers. </p> <p>The first UID is always 0x101f5010. </p> <p>The second and third UIDs are the same as the second and third UIDs of the file from which the dictionary-compressed resource-file is generated.</p> </entry> </row> <row><entry><p>1</p> </entry> <entry><p><i>The least significant three bits:</i> </p> <p>These store the number of bits used for dictionary references, storing this value as an offset from 3. For example, if 2 is stored in these three bits, then the number of bits per dictionary reference would be 3+2=5. Thus, the number of bits per dictionary reference may range inclusively from 3 (=3+0) to 10 (=3+7). The maximum number of dictionary entries for each number of bits per dictionary reference is therefore 8 (=2<sup>3</sup>), 16 (=2<sup>4</sup>), 32 (=2<sup>5</sup>), 64 (=2<sup>6</sup>), 128 (=2<sup>7</sup>), 256 (=2<sup>8</sup>), 512 (=2<sup>9</sup>), 1024 (=2<sup>10</sup>).</p> <p><i>The most significant five bits:</i> </p> <p>This stores flags. Currently there are three flags defined:</p> <p>The most significant bit (0x80) indicates whether the third UID is actually the resource file’s offset (see the first row of the preceding table for a description of what the offset is). The bit is set to non-zero if it is, and zero if it is not.</p> <p>The second-most significant bit (0x40) indicates whether the first resource in the resource file (from the client’s point of view) is an <codeph>RSS_SIGNATURE</codeph> with default values for which <i>no</i> data is actually stored later in the resource file. The bit is set to non-zero if it is, and zero if it is not. This flag must only be on if the third UID of the resource file is the resource file’s offset (see the 0x80 flag described immediately above).</p> <p>The third-most significant bit (0x20) flags if the bit-array that indicates which resources contain compressed Unicode has been stored as a resource before the client’s actual resources. (If it is stored as a resource, it benefits by being dictionary-compressed.) The bit is set to non-zero if the bit-array is stored as a resource, and zero if it is simply stored as a field on its own (see the fifth row of this table).</p> <p>Note that the bit-array will not contain a bit that refers to the “non-stored” (if the 0x40 flag is on) initial <codeph>RSS_SIGNATURE</codeph> resource. It will also not contain a bit that refers to itself if it is stored as a resource (i.e. if the 0x20 flag is on).</p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores the size in bytes of the largest resource in the file (that is, the size when uncompressed with regard to both dictionary-compression and compressed Unicode).</p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores the file-position of the start of the resource data (see the penultimate row of this table for a description of the resource data).</p> </entry> </row> <row><entry><p>Number_of_resources/8 (rounded up to the nearest whole number), or zero if the 0x20 flag (described in the second row of this table) is on</p> </entry> <entry><p>This is a bit-array (one bit for each resource) storing which resources contain compressed Unicode. This field is not always present (see the left-hand column).</p> </entry> </row> <row><entry><p>[any]</p> </entry> <entry><p>This contains the data for all the dictionary entries stored one after another with no bit-padding between them, encoded according to the scheme described in the next table. The last dictionary entry, if not finishing on a byte-boundary, is followed by zero pad-bits up to the next byte-boundary.</p> </entry> </row> <row><entry><p>Number_of_dictionary_entries*2</p> </entry> <entry><p>This is the dictionary index which is a series of two-byte integers (in little-endian byte order), one for each dictionary entry, each storing the offset in bits from the start of the entire dictionary data to one-bit past the end of that dictionary entry’s data (see row immediately above).</p> </entry> </row> <row><entry><p>[any]</p> </entry> <entry><p>This contains the data for all the resources stored in order, one after another with no bit-padding between them, encoded according to the scheme described in the next table. The data for the last resource, if not finishing on a byte-boundary, is followed by zero pad-bits up to the next byte-boundary.</p> </entry> </row> <row><entry><p>Number_of_resources*2, or (number_of_resources-1)*2 if the 0x40 flag (described in the second row of this table) is on</p> </entry> <entry><p>This is the resource index which is a series of two-byte integers (in little-endian byte order), one for each <i>stored</i> resource, each storing the offset in bits from the start of the entire resource data to one-bit past the end of that resource’s data (see row immediately above).</p> </entry> </row> </tbody> </tgroup> </table> <p>The data for each dictionary entry and the data for each resource consist of zero, one or more of the following bit-sequences shown in the table below. Note that the order of bits is taken as going from least-significant to most-significant. Thus, for example, the binary prefix 10 (assuming that these bits were not split across a byte-boundary) would actually be stored with the 1 in the less significant bit of the bit-pair and the 0 in the more significant bit.</p> <table id="GUID-4CE924FB-B8D7-51FE-9E67-CD9188E06D3D"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p><b>Prefix bits</b> </p> </entry> <entry><p><b>Description of what follows</b> </p> </entry> </row> <row><entry><p>0</p> </entry> <entry><p>This is followed by a dictionary reference (the second row of the previous table describes the field indicating how many bits a dictionary reference occupies). A dictionary reference is a zero-based index* into the dictionary entries, i.e. a dictionary reference of 0 indicates the first dictionary entry, and dictionary reference of 1 indicates the second dictionary entry, etc.</p> </entry> </row> <row><entry><p>10</p> </entry> <entry><p>This is followed by one octet of data, the least significant bit of the octet being stored first.</p> </entry> </row> <row><entry><p>110</p> </entry> <entry><p>This is followed by two octets of data, the least significant bit of the first octet being stored first.</p> </entry> </row> <row><entry><p>1110</p> </entry> <entry><p>This is followed by a three-bit integer* storing the number of subsequent octets minus 3, followed by those octets themselves (the least significant bit of the first octet being stored first). Use this to store a run of between 3 and 10 octets (inclusive).</p> </entry> </row> <row><entry><p>1111</p> </entry> <entry><p>This is followed by an eight-bit integer* storing the number of subsequent octets minus 11, followed by those octets themselves (the least significant bit of the first octet being stored first). Use this to store a run of between 11 and 266 octets (inclusive).</p> </entry> </row> </tbody> </tgroup> </table> <p>* These integers, if split across one or more byte-boundaries are stored in little-endian “byte-order”, i.e. the segment of the integer stored in the “next” byte store <i>more</i> significant bits than the segment of the integer stored in the “current” byte.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95954813-A4BC-5557-9E42-EB1AB1A6F381.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-95954813-A4BC-5557-9E42-EB1AB1A6F381"><title>Unicode support</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Unicode support to the STDLIB. </p> <p>The Unicode changes for STDLIB are categorised into groups: </p> <ul><li id="GUID-BDAD96FD-2EF9-5284-A5FA-2D867003B600"><p>Impact on the existing "<codeph>char*</codeph> " interfaces. </p> </li> <li id="GUID-F7CCA015-3B25-553C-B0CD-834AEDACF340"><p>Addition of new "<codeph>wchar_t*</codeph> " functions which use Unicode directly. </p> </li> </ul> <section><title>Impact on existing interfaces</title> <p>Symbian platform is a Unicode-based operating system. Hence, all operating system services which use <i>text</i> require that text to be presented in the 16-bit Unicode character encoding known as UCS-2. For STDLIB on Symbian platform, this is most significant in dealing with the names of files and directories, all of which are now Unicode sequences. </p> <p>To minimise the impact of this change on existing <i>narrow</i> C code, the STDLIB has adopted the policy that all such names in <i>char*</i> interfaces will be interpreted using the UTF-8 standard for encoding Unicode strings as 8-byte sequences. UTF-8 is a <i>no surprises</i> encoding and matches the 7-bit ASCII encoding for character codes 0 to 127. Hence, the existing string handling code will work without modification. </p> </section> <section><title>New interfaces</title> <p>The <codeph>wchar_t</codeph> type is defined and ISO-C standard wide character constants are supported. The <codeph>wchar_t</codeph> definition chosen is unsigned short to match the use of UCS-2, and a range of relevant functions now have wide character analogues which use <codeph>wchar_t*</codeph> in place of <codeph>char*</codeph>, for example: </p> <codeblock id="GUID-6AEF4AFD-D78C-54B2-9CB5-D4A8A56ECB45" xml:space="preserve">FILE *    fopen( const char *_name, const char *_type );</codeblock> <codeblock id="GUID-025E581B-1D28-5AA6-9999-7A1C89280487" xml:space="preserve">FILE *    wfopen( const wchar_t *_name, const wchar_t *_type );</codeblock> <p>and </p> <codeblock id="GUID-CEECB833-4C5F-5708-BF3A-C68975A3C58F" xml:space="preserve">DIR * opendir( const char * );</codeblock> <codeblock id="GUID-4491BF3F-A755-5ED9-B633-3D6960C3D501" xml:space="preserve">WDIR *    wopendir( const wchar_t * );</codeblock> <p>When such a pair of functions exist, the <codeph>char*</codeph> interface is implemented by converting the UTF-8 parameters to Unicode and calling the matching <codeph>wchar_t*</codeph> interface. </p> <p>The <codeph>mbtowc</codeph> family of conversion functions is provided to convert between UTF8 and Unicode, but there is no additional support for locales or other forms of multibyte encoding; to convert from encodings such as Shift-JIS, programmers are recommended to use the CHARCONV conversion routines via C++ wrapper functions callable from C. </p> <p>There are no implementations of <codeph>wchar_t*</codeph> versions of STDIO functions such as <codeph>fputc</codeph>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-95B744FB-CCC0-433F-8314-CB0637F55803_d0e53568_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E"><title> Using the Domain Name Resolution Tutorial</title><shortdesc>This topic describes how to use the domain name resolution. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-7532AA62-7F2E-5366-870F-19679078A49D"><title>Required background</title> <p>You must be familiar with <codeph>RHostResolver()</codeph> to understand this tutorial. The <codeph>RHostResolver()</codeph> function is defined in <filepath>es_sock.h</filepath>. Types and constants specific to TCP/IP are used in <codeph>RHostResolver()</codeph> arguments are defined in <filepath>in_sock.h</filepath>. </p> </section> <section><title>Introduction</title> <p>The TCP/IP stack contains a Domain Name Service (DNS). The client programs conducts DNS queries through the generic host name resolution interface <codeph>RHostResolver</codeph>, specifying protocol-specific behaviour through the argument values. This tutorial describes how the <codeph>RHostResolver()</codeph> functions are used for DNS. </p> </section> <section><title>Procedure</title> <ol id="GUID-9B54766B-150D-5C97-A8CE-DDD3FE6905DD"><li id="GUID-F8AA8622-612A-5E54-A1ED-42148F42CC10"><p>The <codeph>RHostResolver::Open()</codeph> function starts the DNS access. </p> <p>The parameter values are as follows: </p> <p><table id="GUID-103482B4-11F7-5F14-9408-194BDA258A75"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Parameter</b> </p> </entry> <entry><p> <b>Description</b> </p> </entry> </row> <row><entry><p> <codeph>addrFamily</codeph>  </p> </entry> <entry><p>Always <codeph>KAfInet</codeph>  </p> </entry> </row> <row><entry><p> <codeph>aProtocol</codeph>  </p> </entry> <entry><p>Always <codeph>KProtocolInetUdp</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> </p> </li> <li id="GUID-97330842-8FAE-50FA-8CDA-2B51C29E2309"><p>The <codeph>RHostResolver::Close()</codeph> function closes the DNS access. </p> </li> </ol>  </section> <example><title>DNS Query example</title> <p>When a query is made, the protocol takes the following sequence of actions: </p> <ul><li id="GUID-E9AF9E05-3F92-535E-B855-C122CEA67F8B"><p>Searches the local HOSTS file, if it exists. The <filepath>hosts</filepath> file is stored in the <filepath>\private\10000882\</filepath> directory. </p> </li> <li id="GUID-086E42EC-E68B-56D7-98C0-9DFDF743FD51"><p>If an answer is not found, it checks the DNS cache. The protocol queries the DNS server using a UDP socket. If there is no current connection, a dial-up connection is called. </p> </li> <li id="GUID-1822F3AD-53ED-5CA2-A2CE-6E8BB9CFBECC"><p>If an answer is found, the answer is added to the cache. </p> </li> </ul> <p> <b>Note:</b> The cache entries are held continuously while the client <codeph>RHostResolver</codeph> object is open, for TTL 0 records. The client queries the <codeph>RHostResolver</codeph> object to get the latest records. </p> <p> <b>Note:</b> The DNS server used is managed by PPP to establish a dial-up connection, or configured by the user in ISP settings. </p> <p>The <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita#GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD/GUID-37A2B030-8FDE-372C-938D-FD3D26370BDC"><apiname>RHostResolver::GetByName()</apiname></xref> or <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita#GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD/GUID-B210BAF2-1D26-3F5A-8EBE-EF5B460A69E1"><apiname>RHostResolver::GetByAddress()</apiname></xref> can be called asynchronously, so that the application can select the program and the data when it is required. For more information see Next Result. </p> <p><b>Resolve name</b> </p> <p>Use <codeph>RHostResolver::GetByName()</codeph> to resolve a symbolic name to an IP address. The parameters are as follows: </p> <table id="GUID-4541EEBA-39CB-58BB-98BF-86B8BD885DA1"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Parameter</b> </p> </entry> <entry><p> <b>Description</b> </p> </entry> </row> <row><entry><p> <codeph>aName</codeph>  </p> </entry> <entry><p>The symbolic name to resolve. </p> <p> <b>Note:</b> If you pass the local host name or a null descriptor the result is the address of the network interface. The <codeph>RHostResolver::GetHostName()</codeph> returns the local host name. </p> </entry> </row> <row><entry><p> <codeph>aResult</codeph>  </p> </entry> <entry><p>Returns the result of the name resolution. Unpack the <codeph>TNameEntry</codeph> to get a <codeph>TNameRecord</codeph> with the following members: </p> <p> <codeph>iName</codeph>: the value of the passed <codeph>aName</codeph>  </p> <p> <codeph>iAddr</codeph>: the address information. Assign the <codeph>iAddr</codeph> to <codeph>TInetAddr</codeph> to get the IP address. </p> <p> <codeph>iFlags</codeph>: a bitmask of <codeph>TNameRecordFlags</codeph> flags. </p> </entry> </row> </tbody> </tgroup> </table> <p><b>Get name</b> </p> <p>Use <codeph>RHostResolver::GetByAddress()</codeph> to get an IP address from a symbolic name. The parameters are as follows: </p> <table id="GUID-DED037D9-5BB7-595C-907B-144FF98FC8B9"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Parameter</b> </p> </entry> <entry><p> <b>Description</b> </p> </entry> </row> <row><entry><p> <codeph>anAddr</codeph>  </p> </entry> <entry><p>A <codeph>TInetAddr</codeph> specifies the IP address to use. </p> <p> <b>Note:</b> If you pass a null address or an address that matches the primary network interface, the local host name is returned. </p> </entry> </row> <row><entry><p> <codeph>aResult</codeph>  </p> </entry> <entry><p>Returns the result of the name resolution. Unpack the <codeph>TNameEntry</codeph> to get a <codeph>TNameRecord</codeph> with the following members: </p> <p> <codeph>iName</codeph>: the symbolic name </p> <p> <codeph>iAddr</codeph>: the value of the passed <codeph>anAddr</codeph> </p> <p> <codeph>iFlags</codeph>: a bitmask of <codeph>TNameRecordFlags</codeph> flags. </p> </entry> </row> </tbody> </tgroup> </table> <p><b>Next result</b> </p> <p>The <codeph>Next()</codeph> function finds more answers after an initial <codeph>GetByName()</codeph> or <codeph>GetByAddress()</codeph> query. </p> <p>For <codeph>GetByName()</codeph>, the matching A record (IP address) is returned first. Calls to <codeph>Next()</codeph> return any further CNAME (alias) or A records. CNAME records have the IP address set to 0 and the <codeph>EDnsAlias</codeph> flag set. </p> <p>For <codeph>GetByAddress()</codeph>, the first matching PTR record (domain name) is returned first. Calls to <codeph>Next()</codeph> return any further PTR records. </p> <p> <b> Note:</b>  <codeph>The Next()</codeph> can be called synchronously, because all information is retrieved from a local buffer that was written by the initial query. </p> <p><b>Local host</b> </p> <p> <codeph>RHostResolver::GetHostName()</codeph> and <codeph>RHostResolver::SetHostName()</codeph> get and set the name of the local host. </p> </example> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95C188D0-EDB2-46D0-ACDE-19AAD524C9F4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-95C188D0-EDB2-46D0-ACDE-19AAD524C9F4" xml:lang="en"><title>Views
+in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<note>
+<p>This section includes:</p>
+<ul>
+<li><p><xref href="GUID-1A26BD9E-5B8E-4E6D-904E-B8354B14E111.dita">Constructing
+views in the view architecture</xref></p>
+</li>
+<li><p><xref href="GUID-C6E9D609-E82C-4FAC-9265-F6A4FF61049C.dita">Drawing
+in the view architecture</xref></p>
+</li>
+<li><p><xref href="GUID-57CA8A13-05C6-4AFE-9804-E2EA2453143A.dita">Compound
+controls in the view architecture</xref></p>
+</li>
+</ul>
+</note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662" xml:lang="en"><title>Enabling
+quick access to functions with a toolbar</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>To use the Toolbar API, follow the steps below.</p>
+<ol>
+<li id="GUID-EE77C9E2-8E00-4267-81D7-348CEA8196D5">Link the <codeph>AVKON</codeph> libraries
+(<codeph>avkon.lib</codeph>, <codeph>eikcoctl.lib</codeph>) to the project
+file of the application.</li>
+<li id="GUID-ACA972C5-9E34-4220-9161-AFC18AD3194F">Define the toolbar in the
+application resources. Set it as application or view specific.</li>
+<li id="GUID-5B1DAC49-E8B3-4602-A1DF-B9071FAD8587">Provide a class that implements
+the toolbar observer (<codeph><xref href="GUID-4C4ADE30-EE2A-31FE-B029-D0C62632064F.dita"><apiname>MAknToolbarObserver</apiname></xref></codeph>)
+interface. Set the class as the observer of the toolbar (<codeph><xref href="GUID-9E7F4397-3DE4-36A3-A55B-56D9E39BEFF2.dita"><apiname>CAknToolbar</apiname></xref></codeph>)
+created in the previous step.</li>
+<li id="GUID-37161421-986B-4DBA-8E81-57CF8AA3CBBC">If the toolbar items were
+not defined in the resources, add them dynamically in the application code.</li>
+<li id="GUID-FDCAC051-D66D-4061-98A7-7A0DDAE8F916">In the case of a floating
+toolbar, set the toolbar visible. (The framework sets the fixed toolbar automatically
+visible when activating the application/view.)</li>
+<li id="GUID-32345118-A446-458E-A91D-2AEEE33E13C3">Handle toolbar events using
+the observer interface methods.</li>
+</ol>
+<fig id="GUID-DF6096FC-49A1-4120-81BB-141A1B3ADC8B">
+<title>Fixed toolbar with implementation classes</title>
+<image href="GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e48280_href.png" scale="50" placement="inline"></image>
+</fig>
+<section><title>Implementing a toolbar</title><p>To use a toolbar in your
+application, implement the following use cases:</p><ul>
+<li><p><xref href="GUID-402C3EE7-8852-49B6-BE62-8588753FAC8F.dita">Constructing
+the toolbar</xref></p></li>
+<li><p><xref href="GUID-58318BAB-2EC4-4C9E-A7CA-580E701EE54F.dita">Adding and removing
+toolbar items</xref> (the toolbar buttons are defined in the <xref href="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita">Generic
+button API</xref>)</p></li>
+<li><p><xref href="GUID-BC3207BF-9E9F-4BA0-8F01-B72228110A61.dita">Accessing the
+toolbar from applications or application views</xref></p></li>
+<li><p><xref href="GUID-3FE04A31-C35F-47E2-B615-6C1202FB8485.dita">Accessing toolbar
+items</xref></p></li>
+<li><p><xref href="GUID-7AE34C8A-50C6-49BA-9E43-AE76873B5E12.dita">Handling toolbar
+item events</xref></p></li>
+</ul><p><draft-comment translate="no" time="2008-05-12T14:05">We need to provide more clarity
+on the required order of implementing the use cases and clarify whether there
+are alternative approaches for achieving the same results.</draft-comment></p><p>The
+following use cases are optional, allowing you to set additional properties
+for your toolbar:</p><ul>
+<li><p><xref href="GUID-81424A53-F598-4E25-BA0A-E2FFA8BCDF2B.dita">Controlling
+toolbar visibility</xref></p></li>
+<li><p><xref href="GUID-8845AFD6-F238-43FF-BD7B-902CD8CD3973.dita">Showing and
+hiding toolbar items</xref></p></li>
+<li><p><xref href="GUID-A32FFE7A-A531-48D4-AD23-1CC13CB7F4B7.dita">Dynamic initialization
+of the toolbar</xref></p></li>
+<li><p><xref href="GUID-A4D8326E-E72F-443D-9CA5-7835D6AE171F.dita">Setting toolbar
+properties</xref></p></li>
+</ul></section>
+<section><title>Implementing a toolbar extension (optional)</title><p>To use
+a toolbar extension in your application, implement the following use cases:</p><ul>
+<li><p><xref href="GUID-2D390781-4467-403D-8FFC-8ED5B2319993.dita">Creating the
+toolbar extension</xref></p></li>
+<li><p><xref href="GUID-6113CC3B-F994-4AA8-81E9-50433A3266E2.dita">Adding and removing
+toolbar extension items</xref></p></li>
+<li><p><xref href="GUID-A168E5EB-4CF7-4B74-B67C-EDFD5378C5BF.dita">Accessing toolbar
+extension items</xref></p></li>
+</ul><p>The following use cases are optional, allowing you to set additional
+properties for your toolbar extension:</p><ul>
+<li><p><xref href="GUID-270FC83E-1D47-4CF9-A560-FB5DDA53111E.dita">Showing or hiding
+the toolbar extension</xref></p></li>
+<li><p><xref href="GUID-8F2D8656-B7F4-4BDA-81CB-8440A2FDDD82.dita">Dimming or hiding
+toolbar extension items</xref></p></li>
+</ul></section>
+<section><title>Main implementation files</title><p>The main implementation
+files for the Toolbar API are:</p><ul>
+<li><p>akntoolbar.h for
+creating the toolbar and setting its properties</p></li>
+<li><p>akntoolbarobserver.h for
+handling toolbar events</p></li>
+<li><p>akntoolbarextension.h for
+creating the toolbar extension and setting its properties</p></li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita"><linktext>Toolbar API
+description</linktext></link>
+<link href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita"><linktext>Look and
+feel guidelines for the toolbar</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-95D75C36-4691-45E0-AF76-B344119C51D5-master.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95DD1440-01C9-4997-8DD4-FFD33D7DEAFF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-95DD1440-01C9-4997-8DD4-FFD33D7DEAFF" xml:lang="en"><title>Application-specific
+events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aHandleApplicationSpecificEventL%28TInt%2cconst%20TWsEvent%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeAppUi:HandleApplicationSpecificEventL()</parmname></xref> is
+called for application-specific events where event codes are from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TKeyEventStruct.html" format="application/java-archive"><parmname>EEventUser</parmname></xref> upwards in <parmname>TEventCode</parmname>. You can define
+a data structure to be delivered in the window server event. The data can
+be accessed through a pointer, which can be obtained by calling<xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TWsEventClass.html#%3a%3aTWsEvent%3a%3aEventData%28%29const" format="application/java-archive"><parmname> TWsEvent::EventData()</parmname></xref>. The maximum event
+data size is defined as <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TWsEventClass.html#%3a%3aTWsEvent%3a%3aEWsEventDataSize" format="application/java-archive"><parmname>EWsEventDataSize</parmname></xref>. </p>
+<codeblock id="GUID-80335267-13AB-49C8-8895-B6598F5D59A4" xml:space="preserve">void HandleApplicationSpecificEventL(TInt aType,const TWsEvent&amp; aEvent)
+</codeblock>
+<p>Code example: </p>
+<p>First define a data structure for the event data:</p>
+<codeblock id="GUID-BBC9DCFA-F46C-4AC9-BC7F-B1A2DB39963A" xml:space="preserve">class TEventsEventType
+    {
+    public:
+        // Event iData
+        TBufC&lt; TWsEvent::EWsEventDataSize&gt; data;
+        };
+</codeblock>
+<p>Then create an event and send it to all window groups:</p>
+<codeblock id="GUID-0E8CE3D4-19F2-46D6-9A22-9A7EBC73F5C5" xml:space="preserve">// Create a window server event
+TWsEvent event;
+TEventsEventType eventType;
+// Set event data. eventType.data = KData;
+event.SetType( ETestEvent1 ); // set event type
+event.SetTimeNow(); // set the event time
+event.SetHandle( iWsSession.WsHandle() ); // set window server handle
+*( TEventsEventType* )( event.EventData() ) = eventType; // set event data
+// Send the created event
+User::LeaveIfError( iWsSession.SendEventToAllWindowGroups( event ) );
+</codeblock>
+<p>Catch the event using the following method:</p>
+<codeblock id="GUID-1BF859E7-EC92-4BDA-AFCE-DEB82854C8D7" xml:space="preserve">void CEventsAppUi::HandleApplicationSpecificEventL(TInt aType,const TWsEvent&amp; aEvent)
+    {
+    // Check the event type
+    if( aType == ETestEvent1 )
+        {
+        // Cast to TEventsEventType
+        TEventsEventType event;
+        event = *( TEventsEventType* )aEvent.EventData();
+        // Print the data
+        iEikonEnv-&gt;InfoMsg( event.data );
+        }
+        // Call the base class implementation
+        CEikAppUi::HandleApplicationSpecificEventL( aType, aEvent );
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932" xml:lang="en"><title>UID Manipulation</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-95E557D0-9A84-514C-B51E-0556F26B3C98" xml:lang="en"><title>EzlibExample:
+Using EZLIB to Compress and Decompress Files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This overview describes the example application that demonstrates the usage
+of the EZLIB API. </p>
+<section id="GUID-20CDC26E-BD41-564A-A1CC-A271388CCE8C"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-dd523979-cb61-4784-b344-53a63f82e63f.zip" scope="external">EzlibExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-dd523979-cb61-4784-b344-53a63f82e63f.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-145D1AC6-E536-5C44-93EC-B468AC68FBF2"><title>Description</title> <p>EZLIB
+is a utility API used to compress and decompress data. The API is an extension
+of ZLIB compression library. For more information on ZLIB compression library,
+refer to <xref href="http://www.ietf.org/rfc/rfc1950.txt" scope="external">RFC1950</xref>. </p> <p>This
+example application uses the EZLIB API to extract files from a <filepath>.zip</filepath> and
+a <filepath>.gz</filepath> file into specified folders, and to compress a <filepath>.wav</filepath> file
+into a <filepath>.gz</filepath> file. The application reads input files and
+stores the extracted files in <filepath>c:\private\E80000B7\</filepath>. </p> <p>The
+application uses an object of the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> class to open the <filepath>EzlibZipFolder.zip</filepath> file.
+It reads the properties of each file in the archive using the <xref href="GUID-02A8BC62-D653-39A3-BE0C-92A5F3F43E85.dita"><apiname>CZipFileMember</apiname></xref> object
+and prints it to the console. </p> <p>After reading all the properties of
+each file in the archive, the application extracts all the files to the specified
+folder using the <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita#GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00/GUID-FAD44863-E938-34A7-B1D1-BD08521535F9"><apiname>CZipFile::GetInputStreamL()</apiname></xref> method. </p> <p>Other
+than extracting all the files in the archive, the application also searches
+for a specific file using the <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita#GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00/GUID-3D64677E-0D19-3B29-9D22-34773FB61C73"><apiname>CZipFile::CaseInsensitiveMemberL()</apiname></xref> method
+and extracts it. </p> <p>The application also opens the <filepath>icon.bmp.gz</filepath> file
+and extracts its contents to the specified location. The GZip file is represented
+by an object of the <xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita"><apiname>CEZGZipToFile</apiname></xref> class and its contents
+are extracted using the <xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita#GUID-8DE05785-D058-3855-A11F-7132EB4DE078/GUID-4A30D99E-EC51-359F-90B5-9CFA3841A538"><apiname>CEZGZipToFile::InflateL()</apiname></xref> method. </p> <p>Finally,
+the application compresses the <filepath>error.wav</filepath> file to a <filepath>.gz</filepath> file.
+The GZip file being created is represented by an object of the <xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita"><apiname>CEZFileToGZip</apiname></xref> class
+and the <filepath>.wav</filepath> file is compressed using the <xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita#GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162/GUID-4E51D7C5-C624-3F27-A5CD-01E92F96F72B"><apiname>CEZFileToGZip::DeflateL()</apiname></xref> method. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita"><apiname>CZipFile</apiname></xref></p><p><xref href="GUID-02A8BC62-D653-39A3-BE0C-92A5F3F43E85.dita"><apiname>CZipFileMember</apiname></xref></p><p><xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita"><apiname>CZipFileMemberIterator</apiname></xref></p><p><xref href="GUID-62F9728B-9C39-3496-BAEB-6E1456E6F197.dita"><apiname>RZipFileMemberReaderStream</apiname></xref></p><p><xref href="GUID-8DE05785-D058-3855-A11F-7132EB4DE078.dita"><apiname>CEZGZipToFile</apiname></xref></p><p><xref href="GUID-417AB4E0-FF07-34CB-A4A8-CEF31C48A162.dita"><apiname>CEZFileToGZip</apiname></xref></p></section>
+<section id="GUID-986B5547-0C87-57E1-893C-21444F82BE45"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build an application. </p> <p>The <codeph>EzlibExample</codeph> builds
+an executable file called <filepath>ezlibexample.exe</filepath> in the standard
+location (<filepath>\epoc32\release\winscw\</filepath> &lt;<varname>build_variant</varname> &gt;
+for CodeWarrior). After launching the executable, depending on the emulator
+you are using, you may need to navigate using the application launcher or
+the <codeph>eshell</codeph> screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-95EA435B-918A-4B68-8983-1D22B7840BA7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-95EA435B-918A-4B68-8983-1D22B7840BA7" xml:lang="en"><title>Using
+the Camera in Applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Camera API allows your application to use the device camera to capture
+still images and video clips, and store them in the internal memory or on
+removable media. </p>
+<p>You can implement applications that make use of the camera to capture images,
+record videos, or use the display as a viewfinder. </p>
+<p>To capture images or to record videos, you need a combination of Symbian
+APIs and classes, and device-specific components. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F" xml:lang="en"><title>Dynamically
+Loading Link Libraries Example Code</title><shortdesc>Examples that explain how to use Polymorphic DLLs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D3BB6165-14ED-44AD-83A9-C314A43D35B4"><title>Description</title> <p> <filepath>UsingDLLs</filepath> is
+an example which shows how to load and use the two DLLs implemented in the
+two examples <xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita#GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F/GUID-6B26A481-BBDC-53C3-A3AA-8CA3EA0F9F30">PolymorphicDLL1</xref> and <xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita#GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F/GUID-BE92D9E1-5C3E-5276-86E9-07BD751187A4">PolymorphicDLL2</xref>.
+Both DLLs implement the same interface in different ways. </p> <p>Note that
+this example just shows basic principles. In practice, applications will use
+the ECOM mechanism to load DLLs. </p> </section>
+<section id="GUID-0CF0BBCF-8FE1-4DB6-AA07-3CBAB0BAFCD2"><title>Build Notes</title> <p> <xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita#GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F/GUID-6B26A481-BBDC-53C3-A3AA-8CA3EA0F9F30">PolymorphicDLL1</xref> and <xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita#GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F/GUID-BE92D9E1-5C3E-5276-86E9-07BD751187A4">PolymorphicDLL2</xref> must
+be built before <filepath>UsingDLLs</filepath>. </p> </section>
+<section id="GUID-8D80DB9E-08AC-42D7-8FB9-2717BAB76E45"><title>Class summary</title><p> <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita"><apiname>RLibrary </apiname></xref>  <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack </apiname></xref> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref>  </p></section>
+<section id="GUID-6B26A481-BBDC-53C3-A3AA-8CA3EA0F9F30"><title>PolymorphicDLL1:
+polymorphic interface DLL 1</title><p> Part of</p><p><xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita#GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F/GUID-F99F3254-BB8A-5BE5-8D25-6BD14F2CC38C">Using polymorphic interface DLLs</xref></p> </section>
+<section id="GUID-BE92D9E1-5C3E-5276-86E9-07BD751187A4"><title>PolymorphicDLL2:
+polymorphic interface DLL 2</title><p>Part of </p><p><xref href="GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F.dita#GUID-960B2F4E-9012-53EE-973A-C3426A7DD48F/GUID-F99F3254-BB8A-5BE5-8D25-6BD14F2CC38C">Using polymorphic interface DLLs</xref></p> </section>
+<section id="GUID-F99F3254-BB8A-5BE5-8D25-6BD14F2CC38C"><title>UsingDLLs:
+using polymorphic interface DLLs</title> <p><b>Download</b> </p> <p>Download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-ba7b9fcb-839a-45e8-be09-00bba76a0895.zip" scope="external">Dll.zip</xref></p><p> Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref> </p> <p><b>Example code</b> </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-ba7b9fcb-839a-45e8-be09-00bba76a0895.html" scope="peer">browse</xref>to view the example code.</p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref> to view the addition file.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9620407B-0560-5D95-A862-5AE406C48983.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9620407B-0560-5D95-A862-5AE406C48983" xml:lang="en"><title>String
+resource reader overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-AF5A789B-6F00-42A9-86AE-CB972F97BE00"><title>Purpose</title> <p>String
+Resource Reader is part of the Symbian Text Utilities component. It reads
+strings from resource files without using the <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>CCoeEnv</apiname></xref> instance.
+This module is mainly for server usage, where there is a need for reading
+resources, but there is no <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>CCoeEnv</apiname></xref> instance
+present. </p> </section>
+<section id="GUID-F336660C-3F54-4B65-85AA-F6D557FE1DC2"><title>Architectural
+Relationships</title> <p>The key relationships between String Resource Reader
+and the components in its environment are shown below. It uses the <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>RResourceFile</apiname></xref> class to access
+the actual resource files. </p> <fig id="GUID-EF915116-AF30-58ED-A3AC-ED104AF22687">
+<title>              String Resource Reader environment            </title>
+<image href="GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e15352_href.png" placement="inline"/>
+</fig> <p>String Resource Reader consists of one class, <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>CTulStringResourceReader</apiname></xref>.
+String Resource Reader uses <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>BaflUtils</apiname></xref> and <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>RResourceFile.</apiname></xref>  </p> <fig id="GUID-497C1945-CD4F-5396-8B45-E809380A129C">
+<title>              Class diagram            </title>
+<image href="GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e15375_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-9595A884-0840-41D5-9448-E0297941DBA9"><title>Description</title> <p><b>Usage</b> </p> <p>String
+Resource Reader is designed to load strings from normal resource files. The
+interface can be accessed through the <codeph>tulstringresourcereader.h</codeph> file </p> <ul>
+<li id="GUID-9EEA6DC6-06BC-50B3-BB0B-9CCFCE21F852"><p>1. The user must first
+create an instance of the <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>CTulStringResourceReader</apiname></xref> class
+using one of the factory methods <codeph>NewL()</codeph> or <codeph>NewLC()</codeph>. </p> </li>
+<li id="GUID-B35D9F76-F4F8-5B43-8FEA-F044F2D63468"><p>2. The user can then
+call the exported <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>ReadResourceString()</apiname></xref> method
+to read resources </p> </li>
+<li id="GUID-51C7AB86-F420-584A-81A4-F652C7338714"><p>3. After usage the created
+instance must be deleted. </p> </li>
+</ul> <p>If the resource file that is given to a constructor is not found,
+the constructor leaves. The standard Symbian platform error codes are used. </p> <p><b>Example</b> </p> <p>An
+example of using the interface is given below: </p> <codeblock id="GUID-D484CAC5-5BA0-5666-B1DF-082E0A2A27BA" xml:space="preserve">#include &lt;tulstringresourcereader.h&gt;
+#include &lt;errorres.rsg&gt; // Resource to be read header 
+
+//...
+TFileName myFileName( _L("z:\\system\\data\\errorres.rsc") );
+TulTextResourceUtils* test = TulTextResourceUtils::NewL( myFileName );
+
+TPtrC buf;
+buf.Set(test-&gt; ReadResourceString(R_ERROR_RES_GENERAL)); 
+   
+// Note that buf will only be valid as long as TulTextResourceUtils 
+// instance is alive and no new string is read by the same instance.
+// If you need to read multiple strings, make copies.
+
+delete test;
+</codeblock> <p>For more information on individual methods, see the reference
+API for <xref href="GUID-0AAAEFCF-ACFC-302C-81FA-388AACEE979C.dita"><apiname>CTulStringResourceReader</apiname></xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96228425-F2C8-4767-95AD-520C655B73C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-96228425-F2C8-4767-95AD-520C655B73C5" xml:lang="en"><title>Deleting
+the long-tap detector</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You must delete the long tap detector after it is not used any more. You
+can do this in the client class destructor.</p>
+<codeblock xml:space="preserve">CMyContainer::~CMyContainer()
+    {
+    delete iLongTapDetector;
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9636A30F-39EB-54E6-8125-4487D4002FE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9636A30F-39EB-54E6-8125-4487D4002FE0" xml:lang="en"><title>Memory Management</title><shortdesc>Memory is allocated to programs in chunks, the documentation in this set explains how to allocate, manage and release that memory. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2" xml:lang="en"><title>Server
+MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Server MTMs provide specific message type storage and transport. It interacts
+with the Messaging Server to store and manage entries and provide a transport
+mechanism, using components such as the Telephony Server or Sockets Server,
+to send and receive messages. When a message is received, the Server MTM creates
+a new index entry and stores the message data in the entry’s store and binary
+files. Conversely, when a message is sent, the Server MTM retrieves the message
+data from the index, and converts the message into a format appropriate for
+the message transport. </p>
+<p>Server MTMs must provide the following capabilities: </p>
+<ul>
+<li id="GUID-9E456784-BFC9-5B2E-94F9-006B81E35C01"><p>Copy and move files
+to or from the local folders </p> </li>
+<li id="GUID-22540C83-541C-5728-820E-21C655757150"><p>Return the progress
+of the current operation </p> </li>
+<li id="GUID-8D06F04B-DE60-583C-B542-6467ECD7EC20"><p>Interpret MTM-specific
+commands </p> </li>
+</ul>
+<p> <b>Note:</b> Some Server MTMs may also have the ability to create, delete,
+and change messages and folders on remote servers. </p>
+<section id="GUID-54184D61-6325-525D-947F-D86EF8072BFC"><title>Server MTM
+base class</title> <p>The base class for Server MTM is <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref>. </p> <p> <b>Note:</b> Developers
+of Messaging client applications must not be concerned with this class and
+its sub-classes, as these are accessed only by the Message Server. </p> <p>Server
+MTM functions are called by the Message Server as a result of a client request
+that requires some remote operation with the MTM's protocol. The following
+are some significant functions that can be implemented in a class derived
+from the <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref> base class: </p> <ul>
+<li id="GUID-BE65FBCE-ACE6-5EE4-ACDD-86D738D08FD9"><p> <b>Copy and move from
+remote functions</b>  </p> <p>The <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-166EBB68-10B0-30E3-AFD8-0D69C157EE24"><apiname>CBaseServerMtm::CopyToLocalL()</apiname></xref> and <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-36023F8B-FCDA-333C-B4ED-09F757D8118C"><apiname>CBaseServerMtm::MoveToLocalL()</apiname></xref> functions
+are called by the Message Server to get a selection of entries from a remote
+location. For many protocols, this must be interpreted as message retrieval.
+For protocols where messages exist on a remote server, this function is typically
+used to download specific messages, after an initial connection has downloaded
+message headers. </p> </li>
+<li id="GUID-B83857B3-9C9D-5532-94DA-2A05A8DE6127"><p> <b>Copy and move to
+remote functions</b>  </p> <p>The <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-D6CF1EC5-E40F-3B8A-8085-AD38805614BC"><apiname>CBaseServerMtm::CopyFromLocalL()</apiname></xref> and <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-84A4D5CE-EEF5-3AC4-BB17-F870A9210BCA"><apiname>CBaseServerMtm::MoveFromLocalL()</apiname></xref> functions
+are called by the Message Server to copy or move a selection of entries to
+a remote location. For many protocols, this must be interpreted as message
+sending. </p> </li>
+<li id="GUID-D7DBB8BD-888C-5CB0-8279-2B38E0ADB9C9"><p> <b>Copy and move within
+remote functions</b>  </p> <p>The <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-5E5FF06A-D76D-3DF8-9594-178651D48F82"><apiname>CBaseServerMtm::CopyWithinServiceL()</apiname></xref> and <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-F4ABBEDC-2011-347E-9180-20A41DA792EF"><apiname>CBaseServerMtm::MoveWithinServiceL()</apiname></xref> functions are called by the Message Server to copy a selection of entries
+within a remote service. </p> </li>
+</ul> <p>The <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita"><apiname>CBaseServerMtm</apiname></xref> class provides the virtual
+functions for overriding in derived classes.</p> </section>
+</conbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM overview</linktext>
+</link>
+<link href="GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita"><linktext>MTM Capabilities</linktext>
+</link>
+<link href="GUID-5D5BF7E5-4105-572E-81B5-0E61E1AA443E.dita"><linktext>Writing a
+Server MTM</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9652782C-D5A7-584F-A61C-1340D49478A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9652782C-D5A7-584F-A61C-1340D49478A2"><title>Registering for and handling events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes how to register an event for a callback function and how to handle them when the event occured. </p> <p>Events can be registered for a session, a send source or a receive source using <codeph>RRtpXxx:RegisterEventCallbackL()</codeph>, where <codeph>Xxx</codeph> can be <codeph>Session</codeph>, <codeph>SendSource</codeph> or <codeph>ReceiveSource</codeph>, for the respective source of events. </p> <codeblock id="GUID-389805C0-3A8E-5270-AEE3-4C9E60C4E6A7" xml:space="preserve">RegisterEventCallbackL(ERtpPacketReceived, GetPacket, aPtr, ERtpOneShot);</codeblock> <p>In the above call, the event <codeph>ERtpPacketReceived</codeph> is registered to the callback function <codeph>GetPacket()</codeph>. <codeph>ERtpOneShot</codeph> indicates that the callback function can be called only once. </p> <p> <codeph>TRtpEvent</codeph> provides a handle to an RTP session, send stream or receive stream event. The event types supported by <codeph>TRtpEventType</codeph> are passed to <codeph>RegisterEventCallbackL()</codeph>, so that the registered callback function is called for the specified event. </p> <p>Some of the event types supported by <codeph>TRtpEventType</codeph> that may be handled are given below: </p> <ul><li id="GUID-4187B54E-E4A1-5A2C-9E4B-2D4C41E84CA5"><p> <codeph>ERtpAnyEvent</codeph> is called for any event failures. </p> </li> <li id="GUID-34E11BD0-2D71-586C-B913-0FE8FFAB4837"><p>Event types related to the session: </p> <ul><li id="GUID-048D9BA1-A3FC-5C48-A4F0-803B3ACE6E04"><p> <codeph>ERtpSessionFail</codeph> indicates a session-level error. </p> </li> <li id="GUID-15D13D17-2B08-5275-A3A9-060B1CE2177B"><p> <codeph>ERtpSessionEventEnd</codeph> defines the upper limit for session event type values. </p> </li> </ul> </li> <li id="GUID-45DA3A9F-4E04-53FB-85FA-9285F173488C"><p>Event types related to the send stream: </p> <ul><li id="GUID-0AFA7AE7-B81D-59A2-9DFE-CC57AC266153"><p> <codeph>ERtpSendFail</codeph> indicates an error has occurred while sending a packet. </p> </li> <li id="GUID-3804EB39-97A6-517A-B4C7-7EFE86B49232"><p> <codeph>ERtpSendSucceeded</codeph> indicates a send packet operation has succeeded. </p> </li> </ul> </li> <li id="GUID-AE3F984B-9816-5B44-AB8F-368008367049"><p>Event types related to the reception stream: </p> <ul><li id="GUID-D651EC2F-72D6-5DED-B017-873734C9B472"><p> <codeph>ERtpNewSource</codeph> indicates that a new stream has been received. </p> </li> <li id="GUID-F6A82FA7-D8C2-5F46-A5D2-2AFAEA1DBAAD"><p> <codeph>ERtpPacketReceived</codeph> indicates that an in-sequence packet has been received. </p> </li> </ul> </li> <li id="GUID-5F9B64A4-FEE5-5CD2-B95E-733FD7381CC1"><p>Event types related to non-RTP data: </p> <ul><li id="GUID-35D36569-71E0-57E5-B398-4D7DB248DCB4"><p> <codeph>ENonRtpDataReceived </codeph> indicates that non-RTP data has been received on the RTP socket. </p> </li> <li id="GUID-3BD0DD09-3244-5E28-901C-4400FF45ADFE"><p> <codeph>ENonRtcpDataReceived</codeph> indicates that non-RTP data has been received on the RTCP socket. </p> </li> </ul> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9660B072-9BD6-5A84-B45A-636F0D06D467.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9660B072-9BD6-5A84-B45A-636F0D06D467"><title>setopt</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>setopt [ {+|-}options | {+|-}o option_name ] [ name ... ] </userinput> </p> <p>Set the options for the shell. All options specified either with flags or by name are set. If no arguments are supplied, the names of all options currently set are printed. </p> <table id="GUID-A016C64A-86BC-5C8A-A627-3D155D21E452"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>The arguments are taken as patterns (which should be quoted to protect them from filename expansion), and all options with names matching these patterns are set. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b> Note</b>: For information about the options supported by the <codeph>setopt</codeph> command, refer to <xref scope="external" href="http://zsh.dotsrc.org/Doc/Release/zsh_15.html">http://zsh.dotsrc.org</xref>. Note that not all the options listed on this web page are supported by Symbian. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9665C072-EA52-54B8-87A3-A7F818940DCD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9665C072-EA52-54B8-87A3-A7F818940DCD"><title>What is the CommsDat API</title><shortdesc>This topic is an intrdouction to the CommsDat API. Tools and applications use the CommsDat API to access the data in the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The CommsDat DLL implements the CommsDat API. Symbian OS loads the CommsDat DLL at boot time. Tools and applications do not load the DLL. </p> <p>The API made available by the CommsDat DLL is the only method that users can use to access the data in the Comms Database. The API maps between client-side representations of the data and the data stored in the database. </p> <p>Tools and applications see the data as a set of tables. A table is a set of records, where each record is an ordered set of fields. Each field holds a specified piece of information. A field at a given position in a record contains the same type of data in all records. You can consider that each field at a given location in a record is in a column. A table can also be called a record set. </p> <fig id="GUID-5ABD88C0-67E4-5091-BE8F-56ABFED4FEC8"><image href="GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e65781_href.png" placement="inline"/></fig> <p>Tables, records, columns and fields are all CommsDat elements. An element is an item that can be stored in the Comms Database. </p> <p>The CommsDat API gives tools and applications a set of classes to retrieve, create and change the elements in the Comms Database. The API also gives the functionality to access the Comms Database. </p> <p> </p> </conbody><related-links><link href="GUID-B89D2828-0FEE-5206-97D2-C7D4BBD35799.dita"><linktext>How is the
+                Comms Database secured</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9668ADA2-7170-57AC-A5D7-1350894413FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9668ADA2-7170-57AC-A5D7-1350894413FF" xml:lang="en"><title>Using Bluetooth UI</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following Symbian OS v7.0s Bluetooth User guide is available: </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e46332_href.png has changed
Binary file Symbian3/SDK/Source/GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e52421_href.png has changed
Binary file Symbian3/SDK/Source/GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e55534_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96AB1D5A-932E-55BE-A025-F01608546B99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-96AB1D5A-932E-55BE-A025-F01608546B99"><title>RAII Idiom</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Resource Acquisition Is Initialization (RAII) idiom is the basis of implementation of the smart pointer class template. It is also used by the implementation of the file stream classes provided by C++ Standard Library and by many others. The Symbian C++ class templates for automatic resource management are based on the C++ RAII idiom, in order to provide exception-safe automatic cleanup on normal or exceptional exit from a scope. </p> <section><title>Need for RAII Idiom</title> <p>The current Symbian C++ resource management mechanism is the Symbian Cleanup Stack. The CleanupStack class and the associated functions provides Symbian C++ exception-safe (leave safe) cleanup when used in conjunction with the Symbian Leave mechanism. The RAII idiom can free resources automatically. The idiom consists of a class with a constructor that allocates a resource and a destructor that frees the resource. When a local variable of that class type is declared, it will automatically call the destructor to free the resource when leaving the scope. This also protects against leaks caused by thrown exceptions. </p> </section> <section><title>RAII APIs</title> <p>The LCleanedupX and LManagedX class templates share a common API as described below: </p> <ul><li id="GUID-73832E1B-FF2E-5779-AB4C-CAABAB564CE8"><p> <xref href="GUID-C945DFA5-819F-3EB4-8762-25AD191C8DCE.dita"><apiname> ReleaseResource()</apiname></xref>  </p> <codeblock id="GUID-3410D6E2-2A5C-54D2-95A5-AE38AFEA682F" xml:space="preserve">void ReleaseResource()</codeblock> <p> <b>Description:</b> This method forces cleanup of a managed resource. If automatic resource management is enabled, the specified cleanup strategy is invoked for the managed reference and the automatic resource management is then disabled. </p> </li> <li id="GUID-77F69FF8-E61A-5B57-B887-D66EC29F4CF9"><p> <xref href="GUID-BDB6254A-B55E-3834-8187-1CD9DF3C5968.dita"><apiname> Unmanage()</apiname></xref>  </p> <codeblock id="GUID-7D6FDC92-A0A6-5AB5-AD7E-69E9C9C52206" xml:space="preserve">T&amp; Unmanage()</codeblock> <p> <b>Description:</b> This method disables automatic cleanup of a managed resource and returns a reference to the object of type T. </p> </li> <li id="GUID-E1CC7B50-A4C6-599E-9A4B-A78D650B8121"><p> <xref href="GUID-344DF799-7861-3E54-8B92-7F96956A5237.dita"><apiname>IsEnabled()</apiname></xref>  </p> <codeblock id="GUID-36EED42A-0C9B-5BC3-B7B7-AFD2365DF2F8" xml:space="preserve">TBool IsEnabled()</codeblock> <p> <b>Description:</b> This method returns ETrue if automatic resource management is enabled, otherwise returns EFalse. </p> </li> <li id="GUID-4B6610DD-BD24-527E-A9C6-6E23391C789C"><p> <xref href="GUID-890C741F-EC69-30E3-AA89-CE35B3DE481F.dita"><apiname>Get()</apiname></xref>  </p> <codeblock id="GUID-F473AB80-49AC-5355-8879-649A05034E03" xml:space="preserve">T&amp; Get()</codeblock> <p> <b>Description:</b> This method returns a reference to the managed object of type T for Ref, Handle and Guard variants of LCleanedupX and LManagedX. </p> <codeblock id="GUID-F6F79274-1B93-5E05-8446-8C00E479F0AD" xml:space="preserve">T* Get()</codeblock> <p> <b>Description:</b> This method returns a pointer to the managed object of type T for Ptr and Array variants of LCleanedupX and LManagedX. </p> </li> <li id="GUID-96477A5F-5CB1-55DE-9924-7A4AB341AFBE"><p>Operators </p> <p>The <b>.</b> operator gives access to the public members of the managing class. </p> <p>The <b>-&gt;</b> operator gives access to the public members of the managed class. </p> <p>The <b>*</b> operator is used to get a reference or pointer to the underlying managed object. </p> <p> </p> <p> </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita">EUser High Level Library Overview</xref>  </p> <p><xref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita">EUser High Level Library Tutorials</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96B8657D-FC07-5D5C-8ADE-3B2167A9229E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-96B8657D-FC07-5D5C-8ADE-3B2167A9229E"><title>Pausing and Resuming Audio Record </title><shortdesc>The <codeph>Pause()</codeph> function stops recording audio, without stopping the buffer traffic. If the <codeph>Resume()</codeph> function is supported, you can then use it to continue recording. The buffer traffic continues because the Pause() function does not terminate the <apiname>MMMFAudioDataConsumer::BufferToBeEmptied(MMMFBufferSink *,CMMFBuffer
+        *)</apiname>  <codeph>RecordData()</codeph> cycle. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps id="GUID-77CE5F17-DDAA-5B0A-B56C-FEF3091BC504"><step id="GUID-CC7C9116-E829-5DA3-8500-CA69D894E525"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D9C071E1-9F7D-39C5-8B6E-34321A46D3A9"><apiname>CMMFDevSound::Pause()</apiname></xref> function to pause the audio record state. </info> </step> <step id="GUID-061CB8E0-EDC7-57D7-9BD7-7D35B7D29EBA"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-FF81EF26-C315-395C-99EC-CE54B4FFCAA4"><apiname>CMMFDevSound::IsResumeSupported()</apiname></xref> function to check that the <codeph>Resume()</codeph> function is supported. </info> <substeps id="GUID-DCFBAA7B-3013-5B26-BCA1-B637D8B3656B"><substep id="GUID-3571F82F-D1C9-5755-9A7C-256FD547F2C3"><cmd/><info>If the resume function is supported, call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-263CCA90-A3AA-31A0-A62B-795E5F988A17"><apiname>CMMFDevSound::Resume()</apiname></xref> function to pause the audio record state. </info> </substep> <substep id="GUID-7FDE2976-64BA-5C6A-BCF0-95843D44FA4D"><cmd/><info>Otherwise you must use the shut down stop function. For more information about the shut down stop function, see <xref href="GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2.dita">Stopping Audio Record</xref>. </info> </substep> </substeps> </step> </steps> </taskbody><related-links><link href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita"><linktext>Starting Audio
+                Record</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96BCE05D-2984-4A85-9633-69ECE5BE945E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-96BCE05D-2984-4A85-9633-69ECE5BE945E" xml:lang="en"><title>Soft
+indicators</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Soft indicators are textual indicators displayed in the main pane of the
+Idle state. Examples of cases where a soft indicator can be used are call
+charges indication and MCN (Micro-Cellular Network) area indication.</p>
+<section><p>The soft indicators are not
+accessible to applications.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644"><title>capability</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>capability</codeph>  <varname>capability-names</varname>  </p> <p>Use the <codeph>capability</codeph> statement to specify the platform security capabilities of the executable. </p> <p>The setting is only functional on OS versions based on the EKA2 kernel. For those versions based on EKA1, the keyword is ignored. </p> <p>The keyword is followed by a space separated set of capabilities, for example: </p> <codeblock id="GUID-F7231B14-D74B-5056-8752-245E29A3AFFA" xml:space="preserve">CAPABILITY LocalServices ReadDeviceData ReadUserData</codeblock> <p>The special capability name <codeph>ALL</codeph> is used to represents all capabilities supported by the current version of Symbian platform. This can be used as an alternative to naming all capabilities individually. </p> <p>ALL can also be used together with capability names prefixed by a '-', to indicate which capabilities to exclude, e.g. </p> <codeblock id="GUID-C694A53C-60CF-516B-A41B-E2F2A9DA0AB8" xml:space="preserve">CAPABILITY ALL -TCB -TrustedUI</codeblock> <p>indicates a set of all capabilities excluding <codeph>TCB</codeph> and <codeph>TrustedUI</codeph>. </p> <p>If no capabilities are required, then <codeph>NONE</codeph> can be used. </p> <p>If the <codeph>CAPABILITY</codeph> keyword is not present in the MMP file, then the default of <codeph>CAPABILITY NONE</codeph> is used. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96C49728-8C78-4D82-876D-6B1196362D44.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-96C49728-8C78-4D82-876D-6B1196362D44" xml:lang="en"><title>Setting
+button properties not specific to any state</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-03E298C7-E545-423F-B1FE-52EDDFEDEDC9">       <title>Button
+frame</title>       <p>If the button has a frame, change its features by setting
+new frame IDs using the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#9307c6a78e16837dddf3d55ad462cd03" format="application/java-archive"><codeph>SetFrameAndCenterIds()</codeph></xref> in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref>. </p><p>Use the flag <codeph>KAknButtonStateHasLatchedFrame</codeph> for
+a button state to set whether the frame for the button in the state in question
+should look latched down. </p><p>To disable the frame for the button, use
+the <codeph>KAknButtonNoFrame</codeph> flag.</p>     </section>
+<section id="GUID-3ED77835-CFA7-45EB-8DC7-548A46C39936"><title>Button text</title><p>By
+default, the button text is truncated to fit the size of the button. Use the <codeph>KAknButtonSizeFitText</codeph> flag
+to make the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#f42c28866284991b8ee1a9717498f245" format="application/java-archive"><codeph>MinimumSize()</codeph></xref> return the size into which the text fits. To change the font, color,
+and alignment of the text, use the following methods in <codeph>CAknButton</codeph>:</p><ul>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#cfb256140a4d572c62e88e6bd44b9cf4" format="application/java-archive"><codeph>SetTextFont()</codeph></xref></p></li>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#6fb1525ce1a318954ab760ff09851e0f" format="application/java-archive"><codeph>SetTextColorIds()</codeph></xref></p></li>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#ef346ee5cbe9492b00eddf7f145fcad8" format="application/java-archive"><codeph>SetTextHorizontalAlignment()</codeph></xref></p></li>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#6edfd9a6ac89bd6905d7c1f3cd361234" format="application/java-archive"><codeph>SetTextVerticalAlignment()</codeph></xref></p></li>
+</ul></section>
+<section id="GUID-068F5301-03A8-43BF-A274-5359D7073500"><title>Button icon</title><p>If
+you use an icon in your button, you can use the same icon for both the pressed
+and non-pressed states; however, for the dimmed state another icon is recommended.
+For the icon's appearance, follow the <xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita">Symbian
+look and feel guidelines</xref>. Dimmed icons are generated automatically
+if they are not provided by the application.</p><p>To change the scale mode
+for the icon image, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#a941a1e729d7b4da8754e0e3339463ef" format="application/java-archive"><codeph>CAnkButton::SetIconScaleMode()</codeph></xref>. By default, the button
+component uses the <codeph>EAspectRatioNotPreserved</codeph> mode, so that
+the icon fits the size of the button. To adjust the icon’s alignment on the
+button, use the methods <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#6cbee93c541f38be959543f196bb5af3" format="application/java-archive"><codeph>CAknButton::SetIconHorizontalAlignment()</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#800758db92e0a4f11d5c6a1e109f8a57" format="application/java-archive"><codeph>CAknButton::SetIconVerticalAlignment()</codeph></xref>.</p></section>
+<section id="GUID-96802265-17DD-486C-B7DA-4B74317D9D72"><title>Button help
+text</title><p>If the button provides a help text, it is shown close to the
+button if the button is focused or the stylus is held down for some time.
+You can set the state-specific help text when constructing the button, at
+the construction of a button state, or by calling <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButtonState.html#3aa033c14f22fc44efd11e6177249b75" format="application/java-archive"><codeph>CAknButtonState::SetHelpTextL()</codeph></xref>. To set the help
+text for a dimmed button, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#62e188e1891ea1419ea57c4dd7a03b43" format="application/java-archive"><codeph>CAknButton::SetDimmedHelpTextL()</codeph></xref>. </p><p>To change
+time-outs for the help text, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#8645dabaee65d8f9f36203b44c01d788" format="application/java-archive"><codeph>CAknButton::SetHelpNoteTimeouts()</codeph></xref>.</p><p>To display
+and hide the button help text, use the methods <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#2e56627db2398a090d5adaf84c38d87b" format="application/java-archive"><codeph>ShowHelpL()</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#efb2ac6870f957b496494b942d340596" format="application/java-archive"><codeph>HideHelp()</codeph></xref> in the class <codeph>CAknButton</codeph>.</p></section>
+<section id="GUID-C36C83B8-C98B-43A5-8CD6-A3E729AC0463"><title>Button background</title><p><codeph>CAknButton</codeph> supports
+a background composed of both a <codeph>CCoeControl</codeph> background interface
+and an Avkon skin background. If both are set, the <codeph>CCoeControl</codeph>-based
+background has higher priority. In case of <codeph>CCoeControl</codeph>-based
+background, do the following in order for the button’s background to be drawn
+by the container:</p><ul>
+<li><p>Set the container class to be derived from the <codeph>MCoeControlBackground</codeph> interface.</p></li>
+<li><p>Provide implementation for the <codeph>Draw()</codeph> method in the <codeph>MCoeControlBackground</codeph> interface.</p></li>
+<li><p>Call the <codeph>SetBackground( pointerToContainer )</codeph> method
+for the button.</p></li>
+</ul><p>If the background is set from the skin, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html#9853c317f7f3801bd003c9aad7d9c8d6" format="application/java-archive"><codeph>CAknButton::SetBackGroundIds()</codeph></xref>.</p><p>For implementation
+examples, see the sample code below:</p><codeblock xml:space="preserve">// Text alignment top-left corner 
+CGraphicsContext::TTextAlign horAlignment( CGraphicsContext::ELeft ); 
+CAknButton::TAlignment verAlignment( CAknButton::ETop ); 
+textButton-&gt;SetTextHorizontalAlignment( horAlignment ); 
+textButton-&gt;SetTextVerticalAlignment( verAlignment ); 
+
+// Preserve icon button aspect ratio 
+iconButton-&gt;SetIconScaleMode( EAspectRatioPreserved ); 
+
+// Help texts 
+HBufC* helpText = StringLoader::LoadLC( R_MYAPP_HELPTEXT );  
+HBufC* dimmedHelpText = StringLoader::LoadLC( R_MYAPP_DIM_HELPTEXT ); 
+// Set help text to current state 
+textButton-&gt;State()-&gt;SetHelpTextL( *helpText ); 
+// Set dimmed help text to all states 
+textButton-&gt;SetDimmedHelpTextL( *dimmedHelpText ); 
+CleanupStack::PopAndDestroy( 2 );  // helpText, dimmedHelpText 
+// Help note timeout adjustments 
+const TInt KButtonTimeoutBeforeNote = 300; 
+const TInt KButtonTimeoutNoteInView = 5000; 
+textButton-&gt;SetHelpNoteTimeouts( KButtonTimeoutBeforeNote, KButtonTimeoutNoteInView ); 
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96C7CBD4-4B25-5AA1-A54F-1764B54FDC7E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-96C7CBD4-4B25-5AA1-A54F-1764B54FDC7E" xml:lang="en"><title>How
+to write a derived class with two-phase construction</title><shortdesc>This document illustrates how to implement two-phase construction
+in a derived class with example code.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When writing a derived class, you must use the derived class <codeph>ConstructL()</codeph> to
+call the correct base class <codeph>ConstructL()</codeph>. </p>
+<p>Call the base class <codeph>ConstructL()</codeph> before the derived-class
+specific construction starts. This mirrors the action of C++ constructors.</p>
+<codeblock id="GUID-DA0E4184-AC27-565F-9DA1-2CBB59A1E949" xml:space="preserve">class CCompoundDerived : public CCompound
+    {
+public:
+    ...
+protected:
+    ...
+    void ConstructL();
+private:
+    ...
+    };</codeblock>
+<codeblock id="GUID-C67C0AC0-8974-54C2-AEBE-0557DA7C6838" xml:space="preserve">void CCompoundDerived::ConstructL()
+    {
+    this-&gt;CCompound::ConstructL();
+    // own construction
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-96CE7427-83DB-47DE-83FB-A65920EE0319.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-96CE7427-83DB-47DE-83FB-A65920EE0319" xml:lang="en"><title>Using
+GCCE and P.I.P.S.</title><shortdesc>There are some known issues when compiling a P.I.P.S. application
+containing the <codeph>main()</codeph> entry point and using the GCCE target
+compiler. A workaround is described in this section:</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A workaround is described in this section: </p>
+<ol>
+<li id="GUID-0492B41A-8395-4B82-8394-D4FBA25E56DF"><p>Patch file <filepath>\epoc32\tools\compilation_config\gcce.mk</filepath> file
+with the following details: </p><codeblock xml:space="preserve">AR=arm-none-symbianelf-ar
+ARCHIVER=$(AR)
+export ARCHIVER
+</codeblock></li>
+<li id="GUID-F335DD81-42C1-4488-854E-0CEBC1357636"><p>Modify the MMP file
+with the following statement: <codeblock xml:space="preserve">STATICLIBRARY libcrt0.lib
+</codeblock></p></li>
+<li id="GUID-7804B57D-EC39-4DF6-B8CC-58A84BF3126F"><p>Build the application
+using the GCCE target like <codeph>abld build gcce urel</codeph>. </p></li>
+</ol>
+<p>The user code may look like the following:</p>
+<codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+
+int main(void)
+{
+   printf("Hello Open C!\n");
+   printf("Press a character to exit!");
+   getchar();
+   return 0;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-971C9B81-1D6F-59E7-9416-385A0787D642.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-971C9B81-1D6F-59E7-9416-385A0787D642" xml:lang="en"><title>The
+control stack</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The control stack is a mechanism provided by the control framework for
+handling key press events. The Window Server, which generates events for control
+framework applications, channels all key press events to the application that
+currently has keyboard focus (Strictly speaking it channels key press events
+to the <keyword>window group</keyword> ). It is up to the application itself
+to channel the event to the correct destination as the Window Server does
+not associate a key press event with a particular control. </p>
+<p>In control framework applications using the <keyword>standard app     
+   UI</keyword> the control stack contains a list of controls that wish to
+receive keyboard events. Controls are added to the stack using <codeph>CCoeAppUi::AddToStackL()</codeph> and
+their ordering on the stack determines their priority in receiving key events:
+The one with the lowest position on the stack receiving key events first.
+When a key press event occurs, it is offered to each control on the stack
+in turn until it is consumed (i.e. used by that control). </p>
+<p>The ordering of controls on the stack is determined by their priority,
+a value passed to <codeph>CCoeAppUi::AddToStackL()</codeph>. If several controls
+on the stack have the same priority, their ordering is determined by the order
+in which they were added to the stack. </p>
+<codeblock id="GUID-02BC135C-66C4-5FBD-9085-2F6946A24660" xml:space="preserve">enum
+    {
+    ECoeStackPriorityDefault=0,  // Low Priority
+    ECoeStackPriorityMenu=10,
+    ECoeStackPriorityDialog=50,
+    ECoeStackPriorityCba=60,
+    ECoeStackPriorityAlert=200,
+    ECoeStackPriorityFep=250,
+    ECoeStackPriorityEnvironmentFilter=300  // High Priority
+    };
+</codeblock>
+<p>The diagram below shows a hypothetical stack containing 4 controls added
+in the following order: control A (priority <codeph>ECoeStackPriorityDialog</codeph>),
+control B (<codeph>ECoeStackPriorityMenu</codeph>), control C (<codeph>ECoeStackPriorityDefault</codeph> —
+used for application views) and control D (<codeph>ECoeStackPriorityDialog</codeph>). </p>
+<fig id="GUID-02308139-5BC5-5098-BE15-178434158843">
+<title>           Example showing the order and priority of controls on the
+control stack                    </title>
+<image href="GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e13258_href.png" placement="inline"/>
+</fig>
+<p>On the stack shown in the diagram key-press events will be offered first
+to control D, followed by A, B and C in that order. A control on the stack
+can refuse key press events by setting a flag. This might be done by a dialogs
+when it is not visible. </p>
+<p>Applications use the control stack to channel key press events to destinations
+in decreasing order of priority, such as: </p>
+<ul>
+<li id="GUID-EA1211C7-F2F1-5469-8EEB-66D44BC7542D"><p>debug keys </p> </li>
+<li id="GUID-D4063EC0-102F-563D-9D56-84760F447F7A"><p>any active dialog </p> </li>
+<li id="GUID-1ABFD001-B3A4-55C1-9D6A-F268457B8619"><p>any menu bar (i.e.,
+its <keyword>hot-keys</keyword>) </p> </li>
+<li id="GUID-DAD2BC72-CC2A-501A-BD40-E2234D4AE1F2"><p>the application view </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094" xml:lang="en"><title>Compound
+controls in traditional architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">Compound controls</xref> are
+controls that contain other controls. To create a compound control, you must
+do the following:</p>
+<ul>
+<li><p>construct the control in the parent control, which is the
+control that owns the window in which the control appears. The control should
+be constructed in the constructor for the window. An example of an implementation
+is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-F5320B9F-2CC1-4190-B75A-AF303DC5EB8B" xml:space="preserve">void CMyViewContainer::ConstructL(const TRect&amp; aRect)
+    {
+    CreateWindowL();
+
+    iLabel = new (ELeave) CEikLabel;
+    iLabel-&gt;SetContainerWindowL( *this );
+    iLabel-&gt;SetTextL( _L("MyView 1\n\nSelect local view\nswitching from menu") );
+
+    SetRect(aRect);
+    ActivateL();
+    }</codeblock>
+<p>, where</p>
+<p><parmname>iLabel = new (ELeave) CEikLabel;</parmname> creates a <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikLabel.html" format="application/java-archive"><parmname>CEikLabel</parmname></xref> object,
+which is a class that supports the display of text in the parent window.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetContainerWindowL%28const%20CCoeControl%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetContainerWindowL</parmname></xref> makes
+the <xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">non-window-owning
+control</xref> a child of the window-owning control.</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikLabel.html#bcf1d51ebf4177465387f76584078f0c" format="application/java-archive"><parmname>CEikLabel::SetTextL</parmname></xref> sets a text for the label</p>
+<p>The other methods are the standard methods for creating a window for
+the window-owning control.</p>
+</itemgroup>
+</li>
+<li><p>add a method to the owning control that returns the number
+of controls in the compound control. An example of an implementation is as
+follows:</p>
+<itemgroup>
+<codeblock id="GUID-73DD2770-41FC-4B29-AA8A-4B9010654B64" xml:space="preserve">TInt CMyViewAppContainer::CountComponentControls() const
+    {
+    return KNumberOfControls; // return nbr of controls inside this compound control
+    }</codeblock>
+<p>, where</p>
+<p><parmname>CMyViewAppContainer::CountComponentControls()</parmname> overrides <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCountComponentControls%28%29const" format="application/java-archive"><parmname>CCoeControl::CountComponentControls</parmname></xref> to
+return the number of controls in the compound control</p>
+<p><parmname>KNumberOfControls</parmname> is a <parmname>TInt</parmname> constant
+for the number of controls in the application. Other approaches could be used.</p>
+</itemgroup>
+</li>
+<li><p>Add a method to the owning control that returns each of the
+controls by a zero-based index. An example of an implementation is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-14C8180C-9A7E-4CA8-A631-EB2A0179352C" xml:space="preserve">CCoeControl* CContainerContainer::ComponentControl(
+    TInt aIndex)  const
+    {
+        switch ( aIndex )
+        {
+        case 0:
+            return iLabel; // return a pointer to the 
+                             //iLabel
+        default:
+            return NULL;
+        }
+    }
+</codeblock>
+<p>, where</p>
+<p><parmname>CCoeControl* CContainerContainer::ComponentControl(TInt aIndex)</parmname> gets
+an indexed component of a compound control.  There are two ways to implement
+a compound control. One way is to override this function. The other way is
+to use the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlArrayClass.html#_top%20title=" format="application/java-archive"><parmname>CCoeControlArray</parmname></xref> functionality (see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aInitComponentArrayL%28%29" format="application/java-archive"><parmname>CCoeControl::InitComponentArrayL</parmname></xref> method).
+ </p>
+<note>
+<p>Within a compound control, each component control is identified by an
+index. </p>
+</note>
+<p>All child controls should be accessible by <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aComponentControl%28TInt%29const" format="application/java-archive"><parmname>CCoeControl::ComponentControl</parmname></xref> at any time, regardless
+of whether they are visible or not. You can adjust the visibility of a control
+using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aMakeVisible%28TBool%29" format="application/java-archive"><parmname>CCoeControl::MakeVisible</parmname></xref> method.</p>
+</itemgroup>
+</li>
+</ul>
+<p><parmname>CCoeControl* CContainerContainer::ComponentControl(TInt aIndex)</parmname> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCountComponentControls%28%29const" format="application/java-archive"><parmname>CCoeControl::CountComponentControls</parmname></xref> work
+in conjunction with each other. The Symbian platform can query the control
+as to how many components it has and then request a pointer to each of the
+component's controls. Controls can be added or removed at run time using these
+two methods. The framework uses this information to draw the container. </p>
+<p>The compound control usually owns the child controls and therefore it
+is responsible of their construction and destruction. The compound control
+should also set the positions and sizes of its child controls; it must ensure
+that all child controls are inside the compound control rectangle and visible
+child rectangles do not overlap each other.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e245297_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595" xml:lang="en"><title>Graphics Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Find everything you need to know about the Symbian Graphics package in
+this section. </p>
+<p>The graphics documentation is organized around the collections and components
+in the Graphics package in the Symbian System Model. </p>
+
+<fig id="GUID-135CE360-B441-42A7-81E9-A702ADD5BB82">
+<title>The collections and components in the Graphics package       </title>
+<image href="GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e161979_href.png" placement="inline"/>
+</fig>
+
+<p>The following list gives links to high-level Graphics topics and the collections
+that make up the Graphics package: </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-975F53E5-1C13-5063-B817-795F2623737B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-975F53E5-1C13-5063-B817-795F2623737B" xml:lang="en"><title>Sharable
+sessions</title><shortdesc>Describes how a session can be shared by threads.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A session can be shared by threads provided the server is marked as supporting
+shared sessions. </p>
+<section id="GUID-33D699D4-50DD-4B46-BFEA-8E9AD46C66C1"><title>Sharing</title> <p>Once a server has started, and a client
+has connected to that server (by creating a session), then the client thread
+can make the session sharable. There are two types of sharing: </p> <ul>
+<li id="GUID-4AF39204-BA70-50CB-9D13-185655322A1D"><p>where the session is
+sharable among all threads belonging to the same process as the originating
+thread. </p> </li>
+<li id="GUID-69DFB418-D434-58B0-A27E-57C053C822A5"><p>where the session is
+sharable among all threads in the system, i.e. across all processes. </p> </li>
+</ul> <p>A server must support the creation of sharable sessions, otherwise
+an attempt to make a session sharable panics the calling thread. Servers can
+be created to be either unsharable, sharable among threads in the same process,
+or sharable among all threads in the system. </p> <p><b>Sharing
+a session among threads in a single process</b> </p> <p>There are two ways
+of doing this: </p> <ul>
+<li id="GUID-285E2AE9-DEB7-502E-B8B2-47D3B45F50EB"><p>if the session has already
+been created, then call <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita#GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6/GUID-0A453CA9-9DF7-35B8-963E-D75763626136"><apiname>RSessionBase::ShareAuto()</apiname></xref>, which
+has the effect of mutating the handle from a thread relative handle to a process
+relative handle. The handle can then be shared by the threads. Until this
+function is called, the session is specific to the originating thread, and
+cannot be used by any other thread. </p> </li>
+<li id="GUID-BD414669-EE7A-5821-A591-12D77CD0FBA9"><p>if the session has not
+yet been created, then create the session as sharable from the beginning using
+one of the overloads of <codeph>RSessionBase::CreateSession()</codeph> that
+takes a <codeph>TIpcSessionType</codeph> argument - <i>this is the preferred
+method</i>  </p> </li>
+</ul> <b>Sharing
+a session among threads across all processes</b><p> There are two ways of
+doing this:<ul>
+<li><p>if the session has already been created, then call <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita#GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6/GUID-943BCB86-1497-3940-BDA5-6DB1767DA395"><apiname>RSessionBase::ShareProtected()</apiname></xref>,
+which has the effect of mutating the handle from a thread relative handle
+to a process relative handle; this is also protected and can be passed to
+another process. The handle can then be shared by the threads. Until this
+function is called, the session is specific to the originating thread, and
+cannot be used by any other thread.</p></li>
+<li><p>if the session has not yet been created, then create the session as
+sharable from the beginning using one of the overloads of <codeph>RSessionBase::CreateSession()</codeph> that
+takes a <codeph>TIpcSessionType</codeph> argument - <i>this is the preferred
+method</i></p></li>
+</ul></p> </section>
+<section id="GUID-49F7BFC0-2DD3-4AA5-A105-18ACFE702789"><title>Server exit</title> <p>If the server terminates, all outstanding
+messages which have been sent to it are completed with a <codeph>KErrServerTerminated</codeph> code.
+Any attempt to send further messages, or to share session, fail immediately
+with <codeph>KErrServerTerminated</codeph>. The only valid operation on such
+a session is to close it. </p> </section>
+<section id="GUID-20F18655-D04E-40CE-8199-058DA9AD1585"><title>Session closure</title> <p>If <codeph>Close()</codeph> is
+called on a session, any outstanding messages on the session may not be completed
+for the client. Following this, the only message that the server receives
+from the session is the disconnect message. </p> </section>
+<section id="GUID-C4508E0A-50FC-4780-AEAA-08018CF2AB7F"><title>Client thread exit</title> <p>If a session has not been shared,
+then the session is closed as part of normal thread cleanup. </p> <p>If a
+session has been shared, the session handle is owned by the process and is
+not automatically cleaned up with the thread. In addition, the server is not
+informed that the thread has terminated. </p> <p>The only way to free resources
+owned by the session is to explicitly close the session, or to terminate the
+client process. Note that this makes it possible for a session to have no
+client threads ! </p> </section>
+<section id="GUID-9F7C4330-C524-4D8E-A78D-B519CF737D7D"><title>Message slots</title> <p>The maximum number of message slots
+that can be allocated to a session, or the maximum number that can be dynamically
+acquired from the system-wide pool, is 255. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9761C39D-30E9-5BFA-ABF0-2C2377E3EADB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9761C39D-30E9-5BFA-ABF0-2C2377E3EADB"><title>How to manipulate rich text</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Creating a rich text object</title> <p>Like global text, when a rich text object is constructed, the character and paragraph format layers upon which the rich text object's formatting is based (the "global" layers) must be specified. Here, their formatting is taken from the system-provided default settings. Other variants of <codeph>CRichText::NewL()</codeph> exist for creating rich text objects supporting paragraph styles, fields and pictures.</p> <codeblock id="GUID-77627DFF-30BC-55B5-B732-30BF88C5A7F7" xml:space="preserve">CRichText* iRichText; // rich text document
+CParaFormatLayer* iParaFormatLayer;// global paragraph format layer
+CCharFormatLayer* iCharFormatLayer;// global character format layer
+iParaFormatLayer=CParaFormatLayer::NewL(); // required para format
+iCharFormatLayer=CCharFormatLayer::NewL(); // required char format
+iRichText=CRichText::NewL(iParaFormatLayer, iCharFormatLayer);</codeblock> </section> <section><title>Inserting formatted text</title> <p>In the following example, some text is inserted into the text object using the default character and paragraph formatting. Then an italicised text string is inserted at the <keyword>document position</keyword> between the fifth and sixth characters. In rich text, character formatting may be applied to any portion of the rich text object, from a single character to the entire document.</p> <p>After the text has been inserted, call <codeph>CancelInsertCharFormat()</codeph> to cancel the character formatting insertion command. If this is not done and text is subsequently inserted at any document position other than <codeph>pos</codeph>, a panic will occur.</p> <codeblock id="GUID-0E88E743-B8CE-5CFA-93D4-1C1E85F4EB7A" xml:space="preserve">TInt pos=0; // will be insertion position
+// insert some rich text
+iRichText-&gt;InsertL(pos,_L("Hello world!"));
+// insert text with different formatting from rest of paragraph
+charFormatMask.SetAttrib(EAttFontPosture); // interested in posture
+charFormat.iFontSpec.iFontStyle.SetPosture(EPostureItalic); 
+pos=5; 
+iRichText-&gt;SetInsertCharFormatL(charFormat, charFormatMask,pos);
+        // set formatting, when inserting at this position
+iRichText-&gt;InsertL(pos,_L(" all the"));
+iRichText-&gt;CancelInsertCharFormat();
+        // cancel is necessary before inserting anywhere else</codeblock> </section> <section><title>Rich text character formatting</title> <p>The following code applies character formatting to existing text, preserving its format attributes.</p> <codeblock id="GUID-B0E7B745-8D76-5C4D-A58B-E2EFF31D4C64" xml:space="preserve">charFormatMask.SetAttrib(EAttFontUnderline); 
+    // interested in underline
+charFormat.iFontPresentation.iUnderline=EUnderlineOn; // set it on
+iRichText-&gt;ApplyCharFormatL(charFormat, charFormatMask,10,9);
+    // apply this character formatting, from position 10,9 characters</codeblock> <p><b>Notes</b> </p> <ul><li id="GUID-B04F5523-8FBF-5A7F-9751-6E56A28AE099"><p>The above code applies underlining to the substring "the world" whose existing formatting is a mixture of italics and normal. The string's existing formatting is preserved, with underline added as an additional format layer. </p> </li> <li id="GUID-B7B10D19-1E87-5E61-AC14-C6BED9C64041"><p>Rich text is formatted in exactly the same way as global text, except that the length and position arguments now are relevant and must specify a valid range of characters. Only characters in the range specified are affected.</p> </li> </ul> </section> <section><title>Rich text paragraph formatting</title> <p>The following code demonstrates paragraph formatting in rich text by applying right alignment to a single paragraph.</p> <p>Use <codeph>CRichText::CharPosOfParagraph()</codeph> to find the document position of the first character in the second paragraph. The second argument to this function is the offset number of the paragraph so that. paragraph number 1 indicates the second paragraph. Note that when applying paragraph formatting, any character position within the paragraph is equally valid.</p> <p><codeph>ApplyParaFormatL()</codeph> applies formatting to all paragraphs containing one or more characters in the range covered by the third and fourth arguments. In this case, a single character is specified and this is sufficient to apply paragraph formatting to the entire second paragraph.</p> <codeblock id="GUID-0AED5210-B510-58D5-ADD0-D9F1B803587D" xml:space="preserve">// Insert two new paragraphs 
+...
+...
+// make second para right-aligned (para numbering starts at 0)
+paraFormatMask.SetAttrib(EAttAlignment); // interested in alignment
+paraFormat-&gt;iHorizontalAlignment=CParaFormat::ERightAlign; 
+    // right-align
+pos=iRichText-&gt;CharPosOfParagraph(1,1); // get start of second para
+iRichText-&gt;ApplyParaFormatL(paraFormat,paraFormatMask,pos,1);
+    // apply format to entire para - even length = 1 char will do</codeblock> </section> <section><title>Deleting rich text</title> <p>The following code demonstrates the differences between the two functions available to delete rich text. <codeph>CRichText::DeleteL()</codeph> deletes a range of characters and all formatting within the range.<codeph>CRichText::DelSetInsertCharFormatL()</codeph> deletes text, but retains any inserted formatting. </p> <p>This code deletes all text between document position 10 and the end of document using <codeph>DelSetInsertCharFormatL()</codeph>. The underline attribute which was previously set at document position 10 is retained, so that the new text inserted at position 10 is italicized and underlined.</p> <p>Following the use of <codeph>DelSetInsertCharFormatL()</codeph> a panic will occur if text is inserted at any position other than position 10. This restriction persists until it is cancelled using <codeph>CancelInsertCharFormat()</codeph>.</p> <codeblock id="GUID-BCB62569-8907-5447-86A5-F3843E212698" xml:space="preserve">iRichText-&gt;DelSetInsertCharFormatL
+        (10,(iRichText-&gt;DocumentLength()-10));
+iRichText-&gt;InsertL(10,_L("Text deleted, formatting preserved"));
+        // ... and then insert text with same format
+iRichText-&gt;CancelInsertCharFormat(); 
+    // must cancel before inserting elsewhere</codeblock> <p>To demonstrate how <codeph>DeleteL()</codeph> differs from<codeph>DelSetInsertCharFormatL()</codeph>, <codeph>DeleteL()</codeph> is used below to delete both the text commencing at document position 10 and the formatting inserted at that position. Only format attributes which apply to position 9 are inherited by the text subsequently inserted at position 10, so the inserted text is italicised but not underlined.</p> <codeblock id="GUID-B95EAF2C-732D-5040-B4B3-9EF8A1C57C81" xml:space="preserve">iRichText-&gt;DeleteL(10,(iRichText-&gt;DocumentLength()-10));
+// ... then insert new text at that point
+iRichText-&gt;InsertL(10,_L("Text and its formatting deleted"));
+    // insert, inheriting current formatting from char before 10
+    // (no need to cancel anything!)</codeblock> </section> <section><title>Resetting the text object</title> <p>Resetting an editable text object deletes all text and formatting, leaving the end of text paragraph delimiter.</p> <codeblock id="GUID-D790227B-D4FB-5304-A15C-24C9CC736480" xml:space="preserve">iRichText-&gt;CancelInsertCharFormat();
+//reset document
+iRichText-&gt;Reset();</codeblock> <p>Before resetting a rich text object, it is advisable to clear any outstanding format insertion commands using <codeph>CancelInsertCharFormat()</codeph>.</p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9770F3B4-998D-474F-9A82-1B134A4C2869_d0e267623_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97712509-84AD-462F-8FFB-E1E6D8278938.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-97712509-84AD-462F-8FFB-E1E6D8278938" xml:lang="en"><title>Enabling
+touch support for buttons</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>To use a touch-enabled button in your application, implement the following
+use cases:</p>
+<ul>
+<li><p><xref href="GUID-CDBBD44F-C5F6-4D51-B4BA-23DA9BB58D69.dita">Creating generic
+button</xref></p></li>
+<li><p><xref href="GUID-96C49728-8C78-4D82-876D-6B1196362D44.dita">Setting button
+properties not specific to any state</xref></p></li>
+<li><p><xref href="GUID-07DD47FD-86B7-4AFD-BEDB-DF6EA12DFC6C.dita">Using button
+states</xref></p></li>
+<li><p><xref href="GUID-089FE9FA-44C8-48D5-A473-9486BF763283.dita">Setting properties
+for button states</xref></p></li>
+<li><p><xref href="GUID-E1A2872E-6E8D-4C02-B3C0-23213FD56106.dita">Handling button
+events</xref></p></li>
+</ul>
+<p><draft-comment translate="no" time="2008-05-12T14:05">We need to provide more clarity
+on the required order of implementing the use cases and clarify whether there
+are alternative approaches for achieving the same results.</draft-comment></p>
+<p>The following use cases are optional, allowing you to set additional properties
+for your button:</p>
+<ul>
+<li><p><xref href="GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita">Using long-tap
+events</xref></p></li>
+<li><p><xref href="GUID-79B4468A-2CF6-45E2-BC05-064CA300C12C.dita">Using skin support
+in buttons</xref></p></li>
+</ul>
+<section><title>Implementation file</title><p>The implementation file for
+the Generic button API is aknbutton.h.</p></section>
+</conbody><related-links>
+<link href="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita"><linktext>Generic button
+API description</linktext></link>
+<link href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita"><linktext>Look and
+feel guidelines for the generic button in a toolbar</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9782BF84-B91C-5D7C-BFAD-6B7E6A9ADD02.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9782BF84-B91C-5D7C-BFAD-6B7E6A9ADD02" xml:lang="en"><title>Device
+Framework Overview </title><shortdesc>This document introduces you to the Device Framework collection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>Device Framework provides a framework and
+plug-ins for hardware accelerated access to media services. </p> </section>
+<section><title>Architectural Relationship</title> <p>The Device Framework
+is the layer below the controller plug-ins and above the hardware. </p> </section>
+<section><title>Description</title> <p>The Device Framework provides the following
+for hardware accelerated access to sound, video, and speech recognition services: </p> <ul>
+
+<li id="GUID-3F8010B9-B35C-59A9-A07C-4D21D3A1A348"><p>The Speech Recognition
+framework provides a uniform interface to underlying speech algorithms that
+can be implemented in software, or potentially in hardware to take advantage
+of hardware acceleration. </p> </li>
+</ul> </section>
+<section><title>Components</title> <p>The collection comprises the following
+components: </p> <ul>
+
+<li id="GUID-73D6456E-6F71-5A39-943D-087B968A5842"><p>Speech Recognition Controller </p> </li>
+</ul> </section>
+<section><title>See also</title> <p><xref href="GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita">Speech Recognition Controller
+Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-978DFDB1-4B20-5302-A9E4-9C7404A7CB16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-978DFDB1-4B20-5302-A9E4-9C7404A7CB16" xml:lang="en"><title>The range
+checking wrapper for fixed length C++ arrays</title><shortdesc>C++ arrays do not provide range checking so Symbian platform offers
+a thin wrapper to add this functionality to arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The C++ language provides <i>fixed length</i> arrays.</p>
+<p>It is often convenient to use these arrays in applications whenever the
+number of elements is fixed and known at compile time.</p>
+<p>The main disadvantage of using C++ arrays is that there is no automatic
+checking of index value. This means that it is possible to write over data
+that lies beyond the end of the allocated array size, and to read invalid
+data from beyond the end of the array.</p>
+<p>The templated class <codeph>TFixedArray&lt;class T,TInt S&gt;</codeph>, is
+a thin wrapper for C++ arrays. The major benefits of using this class over
+a basic C++ array are the provision of range-checked indexing and support
+for object deletion. There is no runtime penalty for using this class if debug-only
+range-checking is used.</p>
+<p>The class can be embedded as a data member of <codeph>CBase</codeph>-derived
+objects. The class can also be used on the program stack.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0"><title>Bluetooth Manager Overview</title><shortdesc>The Bluetooth Manager component provides non-volatile storage of details of Bluetooth devices in the Bluetooth Registry. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-91B15415-B73F-54E5-9594-5653EA049A42"><title>Purpose</title> <p>The Bluetooth Manager enables you to store details of devices in the Bluetooth Registry. It also enables you to retrieve, modify and delete the information about devices. </p> </section> <section><title>Key concepts and terms</title> <p>Documentation on the Bluetooth Manager component uses the following key concepts and terms: </p> <dl><dlentry><dt>Cookie</dt> <dd><p>Stored data that can be used by the UI whenever it is needed. </p> </dd> </dlentry> <dlentry><dt>EIR (Extended Inquiry Response)</dt> <dd><p>Information that is supplied by the host and transmitted in the inquiry responses sub-state. </p> </dd> </dlentry> <dlentry><dt>'Bonded' settings</dt> <dd><p>Details of peer devices with which a device has formed secure relationships in the past. </p> </dd> </dlentry> <dlentry><dt>'Last used' settings</dt> <dd><p>Details of when devices were last connected. </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p> </p> <fig id="GUID-7E2B3D62-0831-5DE3-AC04-E52452462219"><title>
+             Diagram showing Bluetooth Manager relationships 
+          </title> <image href="GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e372138_href.png" placement="inline"/></fig> </section> <section><title>Bluetooth Manager summary</title> <p>The Bluetooth Manager component provides the following: </p> <ul><li id="GUID-4F873B73-56D7-50A0-A613-E2F729F8BE2B"><p> <b>BT Device</b>  </p> <p> <filepath>btdevice.dll </filepath>  </p> <p>Provides a mechanism for discovering, setting and retreiving information about the various properties of a Bluetooth device. </p> </li> <li id="GUID-44EC161A-6BBD-5831-81C6-0F0C19C5F39A"><p> <b>BT Manager Client</b>  </p> <p> <filepath>btmanclient.dll</filepath>  </p> <p>Provides access to the Bluetooth Manager server. </p> </li> <li id="GUID-ECD90A67-CBDC-5AEA-8DA5-AA6CFD20432F"><p> <b>BT Manager Server</b>  </p> <p> <filepath>btmanserver.exe </filepath>  </p> <p>Provides access to the Bluetooth Registry. </p> </li> <li id="GUID-32617F23-964F-5EE1-8742-25646D4BA933"><p> <b>EIR Client</b>  </p> <p> <filepath>eirclient.dll</filepath>  </p> <p>Provides ways of publishing information over the Bluetooth EIR mechanism. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Session Description Protocol (SDP) provides the users with a standard representation for media details, transport addresses, and session description metadata. This representation is independent of the method the information is transported. The SDP Codec subsystem enables its clients the SDP Codec API do the following: </p> <ul><li id="GUID-F23DAFF5-DEA1-5461-9D63-5DD2EB14B604"><p>encode SDP descriptions into an internal form </p> </li> <li id="GUID-4004AFE6-86E9-5B41-919A-44B28F0229FB"><p>decode the descriptions from an internal form </p> </li> <li id="GUID-5EB2D0EE-B445-55C1-B01F-0094191DF6DB"><p>set and get the SDP field values </p> </li> </ul> <section id="GUID-3391D293-B505-5A83-A65F-327EBB6DC8D1"><title>Architectural Relationships</title> <p>The calls to the SDP Codec API are synchronous. The SDP Codec API does not require capabilities and it cannot be extended. </p> </section> <section id="GUID-992D636B-1616-5406-9781-4AF7C5920E76"><title>SDP Codec API class structure</title> <p>The client uses some or all the <xref href="GUID-390AECC6-C8FF-34ED-8717-7BFCC4CF92BE.dita"><apiname>SDP Codec API</apiname></xref> classes during the handling of a SDP description. The interface classes are derived from <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref>. The client has a 'use' relationship with the SDP Codec API library. </p> <p>The following illustration shows the SDP Codec API class structure. </p> <fig id="GUID-32BE2AEF-3C5C-5A3E-9A3D-0A438C63AB90"><image href="GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e317224_href.png" placement="inline"/></fig> </section> <section id="GUID-43570589-DEDC-5C5C-B26B-E848E05DA782"><title>Memory used</title> <p>The amount of memory used by every header object of the SDP Codec API is equivalent to the memory used by the header as text. </p> </section> <section><title>See also</title> <ul><li id="GUID-A789B4B4-EBEC-5503-9F0F-B89243ACEB4B"><p> <xref scope="external" href="http://www.ietf.org/html.charters/mmusic-charter.html">Multiparty Multimedia Session Control (mmusic)</xref>  </p> </li> <li id="GUID-7F67EFC9-D5B5-5398-99BC-6FBBA06F63C3"><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc2326.txt?number=2326"> Real Time Streaming Protocol (RTSP)</xref>  </p> </li> <li id="GUID-09246FFB-A8D0-59D6-9C70-31554115EDD2"><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc3312.txt?number=3312">Integration of Resource Management and Session Initiation Protocol (SIP)</xref>  </p> </li> <li id="GUID-3CB30366-70AE-5EB6-A2C0-B1A56BAC4C5C"><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc3388.txt?number=3388">Grouping of Media Lines in the Session Description Protocol (SDP)</xref>  </p> </li> <li id="GUID-5507546A-0BDB-5CB6-B9C3-A730E7D38875"><p> <xref scope="external" href="http://www.ietf.org/rfc/rfc3264.txt?number=3264">An Offer/Answer Model with the Session Description Protocol (SDP)</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97C0A5B1-99AE-5F71-9092-A6976E54AEA7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-97C0A5B1-99AE-5F71-9092-A6976E54AEA7" xml:lang="en"><title>How
+to initialise STRUCT RESOURCE members</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><i><codeph>&lt;struct-initialiser&gt;</codeph></i>
+</p>
+<p><b>struct-initialiser ::=</b>
+    </p>
+<p><i><codeph>&lt;struct-name&gt;</codeph></i><b> {</b> <i><codeph>&lt;struct-initialiser-item-list&gt;</codeph></i> <b>}</b> <i><codeph>&lt;struct-initialiser-item&gt;</codeph></i>
+</p>
+<p><b>struct-initialiser-item ::=</b>
+    </p>
+<p><i><codeph>&lt;member-name&gt; = &lt;initialiser&gt; ;</codeph></i></p>
+<p>To initialise a member of <codeph>STRUCT</codeph> type, give the <varname>struct-name</varname> with
+which you wish to initialise it, and then specify each member of that struct
+which you wish to initialise.</p>
+<p>The <varname>member-name</varname>s listed must be members of the <varname>struct-name</varname> struct.
+Each <varname>initialise</varname> must be of a type compatible with the member
+it is initialising.</p>
+<p><b>Example</b> </p>
+<p>Given the previously defined struct types,</p>
+<codeblock id="GUID-B7A47237-F871-5A07-B97B-11034F7019D1" xml:space="preserve">STRUCT STRINGCOUNT
+ {
+ BUF message;
+ WORD num;
+ }</codeblock>
+<codeblock id="GUID-562D9436-F734-5E07-B452-08BD40F08959" xml:space="preserve">STRUCT SAMPLE
+ {
+ WORD anynumber;
+ STRUCT text; // should be a STRINGCOUNT 
+ }</codeblock>
+<p>the following example shows how to define the struct within a resource:</p>
+<codeblock id="GUID-425AD6B0-750B-56C2-8643-2726904C7DB7" xml:space="preserve">RESOURCE SAMPLE show_how
+ {
+ anynumber=10;
+ text=STRINGCOUNT
+  {
+  message="Hello"
+  num=5;
+  };
+ }</codeblock>
+<p><b>Type safety</b> </p>
+<p>The compiler does not enforce type safety. Any struct can be used to initialise
+a member declared to be of struct type. Usually, however, the designer of
+the struct will have intended only one or a limited number of structs ever
+be used to initialise a member. You should ensure that you initialise struct
+members with the intended struct type.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97CCEF05-8F3D-5802-A33A-ED349084D524.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-97CCEF05-8F3D-5802-A33A-ED349084D524" xml:lang="en"><title>Application Framework
+Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97E8BB93-DFEC-558F-BF7A-0F5FF0D16F06.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-97E8BB93-DFEC-558F-BF7A-0F5FF0D16F06"><title>What is the Serial Protocol Module Interface</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Serial Protocol Interface is the API that the Serial Communications Server uses to manage and communication with the Serial Protocol Modules. </p> <p>There are two interfaces which make up the Serial Protocol Module Interface. These interfaces are the Serial Protocol Factory and the Serial Service Provider. </p> <p>The Serial Protocol Module Interface cannot be used by applications. </p> <section><title>Serial Protocol Factory</title> <p>Serial protocol modules are DLLs with a single entry point which returns a factory object. The factory object is capable of creating one or more objects that actually implement serial services. The factory object is known as the Serial protocol factory. </p> <p>The Serial Communications Server calls the Serial protocol factory to create serial service providers. The Serial protocol factory is derived from the <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita"><apiname>CSerial</apiname></xref> class. </p> <p><b>Serial Protocol Information</b> </p> <p>Serial protocol information specifies information about the ports of the serial protocol module, for example name and number. A serial protocol module provides protocol information to the server. </p> <p>The serial protocol information is provided to the client by <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita#GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306/GUID-EB42477B-11C1-3A88-86C9-6E9A1BAE5790"><apiname>RCommServ::GetPortInfo()</apiname></xref>. The Serial Protocol module uses the function derived from <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita#GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3/GUID-B53A32A7-8AB0-31D2-ACAA-69DA0EF2DD23"><apiname>CSerial::Info()</apiname></xref> to provide the Serial protocol information to the Serial Communications Server. The information is provided in an object of type <xref href="GUID-A6E4627A-A3AE-3B64-9E5C-710EE15C5595.dita"><apiname>TSerialInfo</apiname></xref>. </p> </section> <section><title> Serial Service Provider</title> <p>The Serial Service Provider defines an interface that represents a port, with functions corresponding to the port interface provided to clients by the Serial Communications Server Client Side (<xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref>) API. A Serial Protocol Module implements the interface to access the hardware ports for its protocol. </p> <p>The serial service provider interface is provided by <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita"><apiname>CPort</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97EC9722-242B-5DF4-99E9-B63AC4BA97DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-97EC9722-242B-5DF4-99E9-B63AC4BA97DA" xml:lang="en"><title>Reference</title><shortdesc>This section provides a summary of related documentation for the
+telephony API for applications to which you can refer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+
+<section id="GUID-4B50C369-0A59-578C-A5A0-D9DEBFBDA737"><title>API Reference</title> <table id="GUID-706DF913-3C7C-52B1-B7FD-D0CB2BF0A1E7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Item </entry>
+<entry>Header </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony </apiname></xref>  </p> </entry>
+<entry><p>Etel3rdParty.h </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97F83011-BE3C-512C-9599-028CBB92BD51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-97F83011-BE3C-512C-9599-028CBB92BD51" xml:lang="en"><title>Multimedia
+Plug-ins Collection</title><shortdesc>The Multimedia Plug-ins collection facilitates a plug-in framework
+to handle the Multimedia audio, video and image data. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-97FFA8D2-4515-448B-8107-61151F252048.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-97FFA8D2-4515-448B-8107-61151F252048" xml:lang="en"><title>Content security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Information content security can be defined in many ways. The most common way is to determine the confidentiality, integrity, and availability of information.</p>
+<ul>
+<li><p>Confidentiality defines the privacy level of the information and the importance of its content to critical operations. There may be different levels of confidentiality, which are defined by the author and the policies of the system. Information that is not classified as confidential is considered public.</p></li>
+<li><p>Integrity classifies information according to its importance to operations. At the highest level of integrity, the information should remain intact at all times, without fragmentation or delays in updates.</p></li>
+<li><p>Availability is the most important factor if the information must be accessible without interruption for operational reasons.</p></li>
+</ul>
+<p>By applying <xref href="GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05.dita">cryptography</xref> to the elements above, you can introduce additional security features, such as traceability, access control, authentication, and repudiation.</p>
+<p>Any data that is stored in the application <codeph>\private\&lt;SID&gt;\</codeph> folder can be considered safe, since other applications need the <codeph>AllFiles</codeph> <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref> to read or write to this location.</p>
+<p>The following aspects of content security  are covered in this section:</p>
+<ul>
+<li><p><xref href="GUID-E9E5556C-101B-48F2-B9AA-9DBEF5D85D5E.dita">Backup and restore</xref></p></li>
+<li><p><xref href="GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05.dita">Cryptography</xref></p></li>
+<li><p><xref href="GUID-5F38F219-B22D-42E6-973A-B4DBBC5984F8.dita"/></p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-983C5DB9-85EF-541E-B494-19E3E617914A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-983C5DB9-85EF-541E-B494-19E3E617914A"><title>Introduction to embedded stores </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Data contained in a stream can represent a store in its own right rather than just objects. Such a store is known as an embedded store.</p> <p>The stream containing the embedded store is known as the host stream.</p> <p>It is often convenient, and sometimes necessary, to collect the streams representing a partial object network into an embedded store. This makes it easier for the streams representing such a partial object network to be deleted, by deleting (from the top level store) the stream containing the embedded store.</p> <p> The alternative is to traverse the individual streams representing the partial object network and deleting them in the correct sequence; this can be difficult.</p> <p>The following diagram shows the idea:</p> <fig id="GUID-612A6C2C-D706-50BB-A6C4-F2B5639685F8"><image href="GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e334987_href.png" placement="inline"/></fig> <p>An embedded store can contain an arbitrarily complex network of streams. As well as being easy to delete, this stream network can also be copied by simply copying the host stream from the containing store.</p> <p>Embedded stores are persistent stores.</p> <p>The embedded store is constructed on a write stream in its containing store and, for writing, the embedded store behaves like a direct file store — once streams within the embedded store have been committed and closed, they cannot subsequently be changed, i.e. streams cannot be replaced, deleted, extended or changed in any way.</p> <p>Embedded stores are used for object embedding by the application architecture. Because the embedded store behaves like a direct file store, only document types with direct representations can be embedded. In particular, documents using permanent-type stores, such as the database or the agenda, cannot be embedded. Such documents may, however, contain any type of embeddable document.</p> <section><title>See also</title> <p><xref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita">File stores</xref> </p> <p><xref href="GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita">Direct file store</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-98499337-5CB4-5A9C-907A-95FF57775983.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-98499337-5CB4-5A9C-907A-95FF57775983" xml:lang="en"><title>Camera Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Camera Framework provides facilities to access the camera in the mobile device as an ECom plug-in.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-988CE67F-F5EB-52DB-95B8-A0AB48307EE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-988CE67F-F5EB-52DB-95B8-A0AB48307EE0" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-98903A01-CD04-5345-84AE-2E440CE06E11.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-98903A01-CD04-5345-84AE-2E440CE06E11" xml:lang="en"><title> Resource File Examples</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-98AC61E5-57C9-445E-98CB-79C6642CB041_d0e38543_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-98B0A83B-0064-598E-BE88-84305CA6A4F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-98B0A83B-0064-598E-BE88-84305CA6A4F1" xml:lang="en"><title>Finding
+Keys</title><abstract><shortdesc>You can find a specific set of keys using the unified
+keystore. This section explains the process of finding keys. </shortdesc> <p>The
+unified keystore allows you to search all keys on a device regardless of which
+keystore they are in. </p> <p>You can specify a filter object that determines
+which keys are returned. The criteria by which you can filter the keys are
+as follows:<table id="GUID-3DF1621B-E407-43D7-B5EC-AE40FC7A9F27">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><b>Filter Criteria</b></entry>
+<entry><b>Description</b></entry>
+</row>
+<row>
+<entry>The key identifier</entry>
+<entry>Used when searching for a particular key.</entry>
+</row>
+<row>
+<entry>The key usage</entry>
+<entry>Used when searching for a key usage, for example encryption. </entry>
+</row>
+<row>
+<entry>The key owner UID</entry>
+<entry>Used when searching for a key owner.<p>Applications must use this to
+prevent them seeing insecure keys  that might have been added by a malicious
+application. </p></entry>
+</row>
+<row>
+<entry>The key algorithm</entry>
+<entry>Used when searching for a particular key algorithm, for example RSA.</entry>
+</row>
+</tbody>
+</tgroup>
+</table> </p> </abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The following steps explain the process of finding keys in a keystore:</p></context>
+<steps id="GUID-E1B35E8F-3E58-4B3B-A816-CDEE0602224E">
+<step id="GUID-3781197E-1F7E-43C7-BD97-47EE3322C38E"><cmd>Create a file system
+session using an RFs object.</cmd>
+</step>
+<step id="GUID-29A3C0CB-A9B8-42CC-8A32-353664BCF8B6"><cmd>Create an object
+of type CUnifiedKeyStore using CUnifiedKeyStore::NewL() or CUnifiedKeyStore::NewLC(). </cmd>
+</step>
+<step id="GUID-EFE9A46D-CDF9-444E-B1DF-9BB78AEA4553"><cmd>Initialize the member
+functions and keystore using the asynchronous function CUnifiedKeyStore::Initialize().</cmd>
+</step>
+<step id="GUID-8A6A6604-F452-47CF-87C4-991444BB52C0"><cmd>Specify a filter
+object corresponding to the type of keys that are to be returned. </cmd>
+</step>
+<step id="GUID-A67D52B9-39FD-4BAE-80F0-BC53E6D985FE"><cmd>Use the CUnifiedKeyStore::List()
+function to list the filtered keys.</cmd>
+</step>
+</steps>
+<result><p>Keys are listed based on the specified filter criteria. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+set a file system session object, initialize the keystore and its member functions,
+specify filter criteria for the types of keys to be listed, and then list
+the specific set of keys. </p> <codeblock id="GUID-2513B075-350E-5EE1-94CC-EC386D7C09A8" xml:space="preserve">
+
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+//Specify the filter criteria
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the keys found
+TCTKeyAttributeFilter filter;
+filter.iOwner = KApplicationUID; // The UID of the key owner application
+filter.iUsage = EPKCS15UsageSign;    
+filter.iKeyAlgorithm = CCTKeyInfo::EDSA;
+
+
+//List keys based on specified filter criteria
+iKeyStore-&gt;List(iKeys, filter, iStatus);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita"><linktext>Unified Keystore</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-98B85D7F-7BD9-5056-A99F-0BC99D921B87.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-98B85D7F-7BD9-5056-A99F-0BC99D921B87" xml:lang="en"><title>Font and Text
+Services Tutorials</title><shortdesc>You can use the Font and Text Services to select a font or typeface
+for your text. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The current font is part of the current graphics context. The list of typefaces,
+and therefore fonts, available is dependent upon the current graphics device. </p>
+</conbody><related-links>
+<link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext>Font and
+Text Services Collection Overview</linktext></link>
+<link href="GUID-89AD2E29-DF29-5B2B-9894-B7ECD62854F4.dita"><linktext>Font Store
+Tutorials</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-98F104F6-8850-4417-907E-113F2166EBD9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-98F104F6-8850-4417-907E-113F2166EBD9" xml:lang="en"><title>Threats</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Increasingly sophisticated mobile software has improved features and
+intelligence in mobile devices. At the same time, the increasing volume of
+high-end mobile devices has shaped the profile of an average user from an
+IT professional to an average-skilled end user.</p>
+<p>This shift has created new opportunities for malicious parties who usually
+want to gain access to the valuable information stored in mobile devices.</p>
+<section id="GUID-1F289359-8538-4352-AD30-DB83C0779E9C"><title>Types of threats</title>
+<p>The following list classifies threats according to the most common reasons
+for security breaches, in descending order of frequency:</p>
+<ul>
+<li><p>Intentional hostile action, where an attacker is deliberately
+trying to harm the system</p></li>
+<li><p>Administrative flaws in the management of a device (for example,
+in a security area)</p></li>
+<li><p>User mistakes, such as deletion of critical information or
+typing errors</p></li>
+<li><p>Technical failures that cause data corruption, deletion,
+or inaccessibility</p></li>
+<li><p>Other unpredictable or unavoidable failures and incidents
+that cannot be prevented (usually system wide)</p></li>
+</ul>
+</section>
+<section id="GUID-2FE0C29F-FC65-49A7-9F51-79847232C991"><title>Types of malicious
+software </title>
+<p>There are different types of malicious software that you need to be
+aware of when designing new applications. The following common classification
+is based on the way these programs spread.</p>
+<p/>
+<p>Software that needs a host to spread:</p>
+<ul>
+<li><p><i>Backdoors and trapdoors</i> are debug-type entrances to
+programs, for example, via hard-coded password access.</p></li>
+<li><p><i>Logical bomb</i> "explodes" under certain conditions,
+that is, it stops working or corrupts data. Like backdoors, the logical bombs
+can be unintentional, there may be a bug in the application that the developer
+did not discover in the testing phase.</p></li>
+<li><p><i>Trojan horse</i> is a useful-looking software that acts
+maliciously without notifying the user.</p></li>
+<li><p><i>Virus</i> modifies other software to reproduce new viruses.</p>
+</li>
+</ul>
+<p/>
+<p>Software that spreads independently:</p>
+<ul>
+<li><p><i>Bacteria</i> (also known as <i> rabbits</i>) reproduce
+themselves as quickly as possible to jam the system and its services. A single
+unit of bacteria is not usually dangerous, the strength comes from a large
+quantity.</p></li>
+<li><p><i>Worm</i> spreads through networks and can act in a system
+like bacteria or a virus.</p></li>
+</ul>
+<p>These classifications are not strict or self-contained. For example,
+a worm can be used to install a Trojan horse into a system. The Trojan horse
+can then be used to activate a backdoor or logical bomb.</p>
+<p>Controlling and restricting the access rights to your soft ware is an
+effective precaution to protect the system against these malicious programs.
+From Symbian OS v9.1, onwards, control and authentication of access rights
+is performed by the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> mechanisms.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-98FBEA7E-78BA-5A64-90D6-4641418003B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-98FBEA7E-78BA-5A64-90D6-4641418003B4" xml:lang="en"><title>Video Renderer Component</title><shortdesc>This section describes the Video Renderer component. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e63540_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9903E2AB-9D96-5005-8DC5-26653F93616C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9903E2AB-9D96-5005-8DC5-26653F93616C" xml:lang="en"><title>SWI Analysis Toolkit</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The SWI Analysis Toolkit provides a set of PC-side tools that extracts information from installation files, registry entries and certificate stores for analysis.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD"><title>RTP overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Multimedia Protocols RTP (Real-Time Transport Protocol) component provides RTP communication services. This overview shows the usage of the RTP/RTCP protocol as defined in RFC 3550. </p> </section> <section><title>Required background</title> <p>The clients that make use of this API need to be familiar with <xref scope="external" href="http://www.faqs.org/ftp/rfc/rfc3550.pdf">RFC 3550</xref> standard. </p> </section> <section><title>Key concepts</title> <p>The component has the following key concepts: </p> <dl><dlentry><dt>RTP</dt> <dd><p>RTP provides end-to-end network transport services for data with real-time characteristics, such as interactive audio and video. It is built on top of the User Datagram Protocol (UDP). </p> <p>RTP contains two closely linked parts: </p> <ul><li id="GUID-B54B151C-BEBF-5747-9FD9-C46960E81153"><p> <b>RTP:</b> Real-Time Transport Protocol to carry data that has real-time properties. </p> </li> <li id="GUID-038C9C19-BF66-51B5-AF06-06B7DF132C0D"><p> <b>RTCP:</b> RTP Control Protocol to provide feedback on the quality of service being provided by RTP. </p> </li> </ul> </dd> </dlentry> <dlentry><dt>RTCP</dt> <dd><p>RTP Control Protocol used to provide feedback on the quality of service being provided by RTP. RTP and RTCP support transmission of the data and the control packets. </p> </dd> </dlentry> </dl> </section> <section><title>Architectural Relationship</title> <p>The RTP component of MM-protocols uses the following: </p> <ul><li id="GUID-E50A8973-7050-5986-9ED2-CB4B0955F446"><p>Comms-infras ESOCK  </p> </li> <li id="GUID-628BE20E-C415-52E0-B6CC-1DA781F6CF6B"><p>Networking INSOCK </p> </li> </ul> </section> <section><title>API summary</title> <p>The following are some of the main classes used for RTP communication. </p> <table id="GUID-589CE9B8-D2DF-5125-BC78-6261C6138DF0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Class Name</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-97FC8566-E4AD-3881-8669-134798A88779.dita"><apiname>RRtpSession</apiname></xref>  </p> </entry> <entry><p>A handle to an RTP session that abstracts all RTP information going to and from an RTP socket, and its corresponding RTCP data. </p> </entry> </row> <row><entry><p> <xref href="GUID-2A2D5CCF-1B51-3B68-BE48-CF2125FEA65F.dita"><apiname>RRtpPacket</apiname></xref>  </p> </entry> <entry><p>A handle to an RTP packet used to access the packet through the interface provided by this handle. </p> </entry> </row> <row><entry><p> <xref href="GUID-0720D1BD-7F73-3EF6-80A6-17127EF17C91.dita"><apiname>RRtpSendPacket</apiname></xref>  </p> </entry> <entry><p>Derived from <xref href="GUID-2A2D5CCF-1B51-3B68-BE48-CF2125FEA65F.dita"><apiname>RRtpPacket</apiname></xref> and used as a handle to an RTP send packet. </p> </entry> </row> <row><entry><p> <xref href="GUID-3E4F47A8-0432-307A-B871-A2F7F3A7505F.dita"><apiname>RRtpReceivePacket</apiname></xref>  </p> </entry> <entry><p>Derived from <xref href="GUID-2A2D5CCF-1B51-3B68-BE48-CF2125FEA65F.dita"><apiname>RRtpPacket</apiname></xref> and used as a handle to an RTP receive packet. </p> </entry> </row> <row><entry><p> <xref href="GUID-3690BFA1-A4EA-34EA-AD63-5FCC14CB67A2.dita"><apiname>RRtpReceiveSource</apiname></xref>  </p> </entry> <entry><p>A handle to a receive stream. An object of this type represents the stream of data on a single SSRC and delivers the RTP packets and RTCP information in the order they arrive. </p> </entry> </row> <row><entry><p> <xref href="GUID-EF30A0A3-612A-362D-9AC5-07FD314E5CDC.dita"><apiname>RRtpSendSource</apiname></xref>  </p> </entry> <entry><p>A handle to a send stream, used to manage the creation and sending of packets. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following diagram shows the RTP classes and their relationships. </p> <fig id="GUID-BE272665-0B86-5F96-BB2D-53ADCCB1B620"><title>
+             Class diagram for RTP classes 
+          </title> <image href="GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e310419_href.png" placement="inline"/></fig> </section> <section><title>Typical uses</title> <p>Any application requiring RTP as its transport protocol should use this API. RTP provides the following key services: </p> <ul><li id="GUID-7AD5E984-BD60-56A8-BDD6-2F64343B4027"><p>Payload-type identification </p> </li> <li id="GUID-CC6E6950-0A3C-54A8-8298-EBEB463536D4"><p>Sequence numbering </p> </li> <li id="GUID-9B2044AC-135E-5F9E-AF7D-E0DDED1F4FF9"><p>Time stamping </p> </li> <li id="GUID-FD863CED-3C19-5050-9E15-35758A9C18AB"><p>Delivery monitoring </p> </li> </ul> <p>The RTP API allows you to perform the following tasks: </p> <ol id="GUID-05A64980-7516-5D26-BFA0-DCD146132B40"><li id="GUID-7948F75D-8FB6-52B9-B24C-22875FC56764"><p><xref href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita">Creating and Managing an RTP session</xref>  </p> </li> <li id="GUID-6A5300CB-19FE-51E3-96A5-607C81EFD2CE"><p><xref href="GUID-9652782C-D5A7-584F-A61C-1340D49478A2.dita">Registering for and handling events</xref>  </p> </li> <li id="GUID-948EA33A-37BA-5233-BCC7-4066B4D2BB6F"><p><xref href="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita">Accessing an RTP packet</xref>  </p> </li> <li id="GUID-B12DF03E-1117-5BE9-9776-B556429A042F"><p><xref href="GUID-D7A8E007-CCCD-5E4F-A7DE-4D474C864104.dita">Creating a send stream</xref>  </p> </li> <li id="GUID-F32FE481-F916-5428-8562-13B5AE73B974"><p><xref href="GUID-46047253-4471-502D-B48E-E1990E7F7962.dita">Sending an RTP packet</xref>  </p> </li> <li id="GUID-A5440B31-C0F2-567D-9647-4F8F224968C9"><p><xref href="GUID-A81854C9-25F1-5C3B-AF3F-ECB7CFA26677.dita">Creating receive stream</xref>  </p> </li> <li id="GUID-14432538-9217-5EA0-81F4-F3089DD0E5AA"><p> <xref href="GUID-765F43E2-39E8-53F5-881F-593F379623CA.dita">Sending and receiving non RTP-data</xref>  </p> </li> <li id="GUID-90AE2FC2-0ABA-5F40-A50F-7BED93BCE9F0"><p><xref href="GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01.dita">Managing RTCP packets and reports</xref>  </p> </li> <li id="GUID-832ADC62-982E-5ED7-A270-74B708B706C6"><p><xref href="GUID-D5F57D81-6B59-5C7E-A2C8-A5E29873346B.dita">Managing send and receive reports</xref>  </p> </li> <li id="GUID-E07027C3-5F87-5F33-BB6B-5D5F03F8D0C2"><p> <xref href="GUID-7D1E2DBD-004B-5047-BDA5-21CD55D0A95C.dita">Securing RTP with SRTP</xref> </p> </li> </ol> <p> <b> Note:</b> Before using any of these services, a connection to the socket server must have been made and the socket must be open. </p> </section> <section><title>See also</title> <p><xref href="GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita">RTPExample: RTP packet streaming</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF" xml:lang="en"><title>Class
+structure for the toolbar API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Toolbar API consists of following classes: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknToolbar.html" format="application/java-archive"><codeph>CAknToolbar</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknToolbarExtension.html" format="application/java-archive"><codeph>CAknToolbarExtension</codeph></xref>,
+and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknToolbarObserver.html" format="application/java-archive"><codeph>MAknToolbarObserver</codeph></xref>.
+The Toolbar API class structure and its simplified environment is described
+in the figure below.</p>
+<fig id="GUID-3E08B03E-BE4C-481A-82BB-B7EB03BC806A">
+<title>Toolbar API class structure</title>
+<image href="GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e48187_href.png" placement="inline"/>
+</fig>
+<p><codeph>CAknToolbar</codeph> is the API main class that provides the most
+of the API functionality. The UI framework classes <codeph>CEikAppUiFactory</codeph>, <codeph>CAknView</codeph>,
+and <codeph>CAknAppUi</codeph> take care of creating and destructing the <codeph>CAknToolbar</codeph> object.
+Moreover, you can access the toolbar in your application through these UI
+framework classes.  </p>
+<p><codeph>CAknToolbar</codeph> is a compound (window-owning) control that
+contains simple (non-window-owning) controls that are the toolbar items. Toolbar
+items can be for example <codeph>CAknButton</codeph> type controls. Each toolbar
+can also have one extension that expands the toolbar. The extension contains
+also for example <codeph>CAknButton</codeph> type controls.  </p>
+<p><codeph>MAknToolbarObserver</codeph> is an interface that can be used to
+observe toolbar events. The application class can implement this interface
+and register itself as the toolbar observer. <codeph>CAknToolbar</codeph> then
+informs the observer when toolbar events occur (when toolbar is about to be
+shown and when some toolbar item state has changed e.g. a button is pressed).</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67"><title>How to use the SIP Profile API</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-D9ED74C5-20D0-5636-993B-06C05CD90E6A"><title>Protocols</title> <p>This section provides the information about the protocol and error handling related to the SIP Profile API: </p> <ul><li id="GUID-71AB3403-EAD0-5444-8B54-8F9A9F463942"><p>When you create a <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> object, the client connects to the shared SIP Profile server. <b>Note</b>: If the server is not running, it is started by the API implementation. </p> <p>When the <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> object is deleted, the corresponding connection to the server is closed. The server stops if it has no other users. </p> </li> <li id="GUID-35DDE98D-1135-5556-8C8B-0CD5F65CA642"><p>The profile data is transferred from the server to the client when a user retrieves a <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> object through <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref>. </p> <p>When the client holds an instance of <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> in its memory, all events related to the corresponding profile use <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref> callback functions to notify the client. The callback functions are implemented by the client. </p> <p> <b>Note</b>: A <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> object is created each time a profile is retrieved. </p> </li> <li id="GUID-12B99D92-A992-5C77-8E3E-65472E1994AF"><p>When the client deletes the <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> object, the client is not notified about events. </p> </li> <li id="GUID-B13A5C15-B9EB-5AEF-A490-C4295762D0F8"><p>The profile must be active before a <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> object is used by the SIP Client API. Use the <xref href="GUID-F0663140-8AF3-3831-A741-483D276BF91C.dita#GUID-F0663140-8AF3-3831-A741-483D276BF91C/GUID-2CDFD2CB-C3C2-3765-9155-2899F76B0A40"><apiname>MSIPRegistrationContext::IsContextActive()</apiname></xref> function to check. A profile becomes active when it is enabled by the client and the state of the profile is <codeph>ERegistered</codeph>. <codeph>ERegistered</codeph> is an enum value of the <codeph>TSIPProfileState</codeph> enum defined in the class <xref href="GUID-F324C2F6-1336-361C-B270-EFBAA256C46A.dita"><apiname>CSIPProfileAgent</apiname></xref>. </p> </li> <li id="GUID-9B116C46-DE47-5838-9753-A7C05844F886"><p>All profiles are automatically registered when they are enabled. If a profile is not registered before being enabled, the registration status change is acknowledged through <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref>. If the enabled profile is already registered, no additional registration or status change events are sent. </p> </li> <li id="GUID-5F49EEA6-523D-5080-92BA-344EDBE71C57"><p>When a profile is enabled and registered, the client can use it and the SIP Client API to create SIP sessions. An enabled profile cannot be removed from the system while it is used by the client. </p> </li> <li id="GUID-0E0CD639-0976-5B47-A0D1-CB84BFF759D0"><p>When a profile is not needed by the client, it is disabled. When you delete an instance of the profile the profile is disabled. </p> </li> </ul> <p>The following illustration shows use of the SIP Profile API. </p> <fig id="GUID-191B67CA-9715-5A3F-A571-1353BF69F5A4"><image href="GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e316101_href.png" placement="inline"/></fig> </section> <section id="GUID-7DDA5B21-FC36-54DC-A717-0BF360DD961B"><title>Error handling</title> <p>The errors are indicated by return codes, by functions leaving, or by calling callback functions. If an error occurs during a synchronous operation initiated by the client, the called function leaves with a correct error code. </p> <p>If an error occurs during an asynchronous operation, the error is passed to the client through the callback function <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita#GUID-91663686-42B7-3C88-B773-3C5343CDCFCE/GUID-8CDFC758-2BA9-3262-9A98-D2C9EC6E65C0"><apiname>MSIPProfileRegistryObserver::ProfileRegistryErrorOccurred()</apiname></xref>. In this case, both the profile identifier and an error code are passed to the client. Any error passed to the client means that the indicated profile is not registered or enabled by the client. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-998DCA78-2488-5D6D-B5B3-D86C52F32823.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-998DCA78-2488-5D6D-B5B3-D86C52F32823" xml:lang="en"><title>Modifications
+to Keyspaces</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the types of keyspace modifications </p>
+<p>Keyspaces are modified by operations including </p>
+<ul>
+<li id="GUID-3642D0A6-456B-55A8-8CDF-FE5E56C4C5BC"><p>installation of new
+software, </p> </li>
+<li id="GUID-8FEA1A45-CC2B-5346-8ABC-853CF3EC319D"><p>firmware updates, </p> </li>
+<li id="GUID-DDFAA956-9F88-5CE5-A00E-A6B7B90453AF"><p>the restore factory
+settings operation, and </p> </li>
+<li id="GUID-2948CF00-2335-51CF-A5A1-9746D62FAB53"><p>backup and restore. </p> </li>
+</ul>
+<p>The integrity of the keyspace is maintained over modifications of this
+kind by applying the appropriate rules for each operation and combination
+of operations. </p>
+<section><title>Installating keyspaces </title> <p><b>Steps to be taken at
+device creation</b> </p><p>         There are two ways of equipping an application
+with a keyspace when the
+application is installed on the device. One is to save the keyspace to the
+directory <filepath>z:\private\10202BE9\</filepath>at ROM build, as explained
+above.
+This method has the disadvantage that a keyspace created in this way cannot
+subsequently be uninstalled, though it can be modified by the software installer
+or firmware upgrades. The other way is to install the keyspace along
+with the application using the software installer. Application writers cannot
+do this on their own because the process requires one of the necessary files, the
+stub .sis file, to be set up appropriately by device creators, and another, the
+upgrade .sis file, to be signed by Symbian. 
+</p><p>          You install a keyspace by placing a stub .sis file (installation
+file) in the <filepath>\System\Install</filepath>&lt;file&gt;\System\Install&lt;/file&gt;
+directory in ROM. This file is written by
+device creators rather than developers. It must contain the central repository
+server executable. It must list all the ROM-supplied keyspace files which
+are ntended to be upgradable.  
+</p><p>          The following template is supplied for use in device creation.
+Device
+creators are free to modify the major and minor version numbers but are
+strongly recommended to retain the UID 0x20007770 which is allocated for use
+with the central repository. 
+</p><codeblock xml:space="preserve">;
+; template_stub.pkg
+
+; Template Central Repository Stub Package File
+
+; Copyright (c) 2006 Symbian Software Ltd. All rights reserved.
+
+
+; Language
+&amp;EN
+
+; Package Header
+
+; #{"Package name"}, (Package UID), major-version, minor-version, build-number
+
+; You are free to modify the version and build numbers but the package UID
+; should NOT be altered.
+
+#{"Centrep Stub"}, (0x20007770), 0, 0, 0
+
+; Vendor
+%{"Symbian Software Ltd."}
+:"Symbian Software Ltd."
+
+; Central Repository Server - this must be in the stub package file
+"&lt;INSERT-LOCAL-PATH-HERE&gt;centralrepositorysrv.exe"-"z:\sys\bin\centralrepositorysrv.exe"
+; eg "\epoc32\release\armv5\urel\centralrepositorysrv.exe"-"z:\sys\bin\centralrepositorysrv.exe"
+
+; List of upgradeable ROM keyspaces
+
+; If you wish to provide the ability for a keyspace supplied in ROM to be upgraded
+; by Software Install then list it below.  Any keyspaces not included in this list
+; may not be upgraded.
+
+; Each entry in the list should take the following form:
+;  ""-"z:\private\10202be9\&lt;keyspace-file.ext&gt;"
+
+; For example:
+;  ""-"z:\private\10202be9\ace1ace1.cre"
+REPLACE THIS LINE WITH THE KEYSPACE LIST OR REMOVE IF ROM KEYSPACES SHOULD NOT BE UPGRADED
+</codeblock> <p><b>How to upgrade a keyspace during software installation</b> </p> <p>Installing
+an application is explained <xref href="GUID-9C4C3F93-4F9F-5FE0-9979-7729CE255255.dita">here</xref> and
+upgrading is explained <xref href="GUID-0B9C52E5-490D-5CF0-9789-1EC50D6C7919.dita">here</xref>.
+Upgrading software in ROM is explained <xref href="GUID-30FFE6C4-FE79-55F9-A805-D98F83D90441.dita">here</xref>.
+It involves using the CreateSIS tool to compile files listed in a package
+(.pkg) file into an installation (.sis) file. A package file may refer to
+an existing .sis file: if so, the .sis file is said to be embedded. An upgrade
+is essentially the installation of a software patch. You upgrade a keyspace
+in the same way as you upgrade the associated application and the two operations
+are often combined. Installing a keyspace is the same as upgrading one: you
+are eclipsing the stub .sis file discussed in the previous section. To do
+this you need: </p> <ul>
+<li id="GUID-BCEB30EA-7C0F-5333-9033-0DA3521A56E7"><p>the upgrade .pkg file
+and corresponding .sis file, </p> </li>
+<li id="GUID-DA3E131F-98C3-57AF-BD28-C6858A2F53E4"><p>and the application
+.pkg file and corresponding .sis file if you are upgrading the application. </p> </li>
+</ul> <p>A third party developer cannot create a stub .sis file: it must have
+been created as part of the device's ROM. If one does not exist, you cannot
+upgrade a keyspace. </p> <p>The upgrade .sis file must be signed. </p> <p>You
+do not need the application .sis and .pkg files if you are installing or upgrading
+a keyspace without the associated application. </p> <p>In both cases you write
+a .pkg file with details of the software upgrade. It can upgrade the application
+and the keyspace at the same time or could upgrade the keyspace alone as shown
+in the following example: </p> <codeblock id="GUID-5436AF6A-5A82-51A4-BC52-3FEDFCBA431F" xml:space="preserve">&amp;EN
+
+#{"Example new keyspace"}, (0x20007770), 1, 2, 3, TYPE=SP
+
+%{"Symbian Software Ltd."}
+:"Symbian Software Ltd."
+
+; Install keyspace in Central Repository’s private data cage
+"12345678.cre"-"c:\private\10202be9\12345678.cre"
+</codeblock> <p>The important thing is that the package UID, (0x20007770),
+must match the UID in the stub package header. You compile the .pkg file into
+a .sis file and, if required, go through the signing process at this point.
+At this point you can deploy the keyspace .sis file on its own. However, it
+is more usual to embed the keyspace .sis file into your application .pkg file
+and install the application. </p> <p><b>How to uninstall a keyspace during
+software uninstallation</b> </p> <p>You uninstall a keyspace by uninstalling
+the application which it was embedded in. This has the effect of uninstalling
+all the software patches with which you upgraded the keyspace. If there is
+a version of the keyspace in ROM, placed there at device creation, it comes
+back into use. If the keyspace was installed subsequently then no version
+of it remains after uninstallation. It is not possible to remove individual
+upgrades, only the entire set of upgrades which have ever been applied. </p> <p><b>Effects
+of upgrading a keyspace during software installation</b> </p> <p>An upgrade
+to a keyspace may conflict with user modifications to the keyspace. In that
+case the existing settings are merged with those in the upgrading keyspace
+in accordance with the following rules. The keyspaces are merged in accordance
+with the principle that user modifications override upgrade modifications. </p> <ul>
+<li id="GUID-D0E7853C-D91D-53C4-9DA8-C581A9AB5A79"><p>If a setting exists
+in the existing keyspace on the phone and the upgrading keyspace and the existing
+setting has not been modified by the user, the upgrading setting replaces
+the existing setting. </p> </li>
+<li id="GUID-C94441FB-0967-53D5-9EAE-750BDABE48E2"><p>If a setting exists
+in the existing keyspace and the upgrading keyspace and the existing setting
+has been modified by the user, the existing setting is preserved. </p> </li>
+<li id="GUID-DEEF31A4-5CF6-540A-A81A-E43DF2026C77"><p>If a setting exists
+in the existing keyspace but not in the upgrading keyspace, the existing setting
+is preserved. </p> </li>
+<li id="GUID-1270CCEC-7836-51BA-99EA-9BD46CA4BBCA"><p>If a setting exists
+in the upgrading keyspace but not in the existing keyspace, the upgrading
+setting is created. </p> </li>
+</ul> <p>Upgrades preserve the existing platform security policies. Metadata
+values assigned by default or to a range remain unchanged, but metadata values
+of individual keys take their upgrade settings. </p> <p>The first time you
+upgrade a keyspace which is provided in ROM you only need to list the keys
+which are being added to or changed from the ROM keyspace. However, if you
+are performing an upgrade to a keyspace which has previously been upgraded,
+you must include all the changes in all the previous upgrades: this is also
+the case where the keyspace was originally installed as an upgrade to a stub
+.sis file. </p> <p>If there are notification requests on any of the keys,
+the requests will complete as a result of installation, upgrading and uninstallation.
+If transactions are pending during an upgrade or uninstallation, those transactions
+will fail. It is advisable to close all sessions on a keyspace before uninstalling. </p> </section>
+<section><title>Firmware updates</title> <p>Symbian OS provides limited support
+for firmware updates to ROM over a serial connection or by FOTA (firmware
+over the air). The generic term for these firmware updates is FOTx. When this
+happens, the Central Repository detects the upgrade when the device is next
+restarted and makes corresponding updates to its keyspaces. A firmware update
+reboots the device: as part of this process the Central Repository gets the
+current ROM version using <codeph>SysUtil::GetSWVersion</codeph> and compares
+it with a previously saved version. Where the Central Repository detects a
+difference it merges the relevant keyspaces at the level of the file or of
+individual settings. </p> <p>The rule is that user values (settings modified
+by the user) override SWI values (settings modified by a software upgrade
+or installation) and that SWI values override ROM values. </p> <p>There are
+two cases where a difference is resolved at the level of the file. </p> <ul>
+<li id="GUID-8B050D35-F362-5B75-A779-DC162C3DFF79"><p>Where a keyspace is
+non-persisted (ROM was never overridden), the ROM update replaces the current
+ROM. </p> </li>
+<li id="GUID-5388506C-9908-518E-A3B4-63E609E0BB55"><p>Where the ROM update
+deletes an existing ROM file, any persisted keyspaces are removed along with
+the deleted file. This rule also applies when the user has modified the keyspace
+in existing ROM, but not when the software installer has modified the keyspace
+in existing ROM. </p> </li>
+</ul> <p>Where the ROM update conflicts with user-modified keyspaces or SWI-modified
+keyspaces, the new ROM is merged with the persisted file at the level of the
+setting. The rules for resolving conflicts involve creation, modification
+and deletion of settings and they vary according to the point at which a setting
+was created. </p> <ul>
+<li id="GUID-D50380BB-2DBC-5320-8221-54DCE3A3C235"><p>If a setting is created
+by the firmware update it is simply added to the keyspace. </p> </li>
+<li id="GUID-AE312886-DDB5-5B9F-9D73-97741AD8324D"><p>If a setting was created
+by the software installer, an attempted modification by FOTx is not applied.
+A FOTx update will have no impact on any settings created by the software
+installer that are not in ROM. </p> </li>
+<li id="GUID-91A7F55A-60BD-5267-97F1-BD88F241C2FC"><p>If a setting was created
+by the device user, an attempted modification by FOTx is not applied. A FOTx
+update will have no impact on any settings created by the user that are not
+in ROM. </p> </li>
+<li id="GUID-ADF63BBA-0F4C-558A-9CC2-8A330F4A3C4A"><p>If a setting was present
+in existing ROM, these rules apply: </p> <ul>
+<li id="GUID-D4FA6716-FEC9-5A84-9C32-C429D6C105A0"><p>A modification by the
+user overrides a modification by FOTx. </p> </li>
+<li id="GUID-6CA71AAD-41F6-5CBA-8F2C-36FABA542A6E"><p>A modification by the
+user overrides a deletion by FOTx. </p> </li>
+<li id="GUID-7F619ECB-A5CE-5D42-B3AE-C261FD6222F1"><p>A deletion by the user
+is cancelled by a modification by FOTx. </p> </li>
+<li id="GUID-CE7F094E-4270-535D-8198-71C8D021A8C3"><p>A deletion by the user
+is confirmed by a deletion by FOTx. </p> </li>
+<li id="GUID-F49E35FF-22E1-5D53-ACE8-551B5B08C41D"><p>A modification by the
+software installer overrides a modifcation by FOTx. </p> </li>
+<li id="GUID-708220F5-90AD-56F5-B11C-CF178F3B56CB"><p>A modification by the
+software installer overrides a deletion by FOTx. </p> </li>
+<li id="GUID-12B84510-4DB5-530B-B21A-B17E7FEED881"><p>Deletions by the software
+installer do not occur. </p> </li>
+</ul> </li>
+<li id="GUID-75404D8E-11D5-53EE-963A-53C3E1E9A720"><p>Conflicts between user
+modified keyspaces and SWI modified keyspaces were covered in the previous
+section. </p> </li>
+</ul> </section>
+<section><title>Restore factory settings</title> <p>The Central Repository
+can restore factory settings across all keyspaces. Only device creators can
+restore factory settings by starting the Central Repository in a special mode
+during a reboot. The restore does not affect all settings in the keyspace,
+only those which have the appropriate metadata bit set. </p> <p>The effect
+of restoring factory settings is to revert settings to their value at the
+most recent software install or firmware update, to reverse changes made by
+the user. It does not return the device to the state in which it was created.
+To reverse the effects of software installation and firmware updates an uninstall
+is required. </p> <ul>
+<li id="GUID-95098D31-07C2-508A-A5C0-F2A9E9191306"><p>If a setting was created
+by the user, a restore factory settings operation deletes the setting. </p> </li>
+<li id="GUID-771F205B-218A-50E2-A18B-F4FCE751905E"><p>If a setting was created
+by SWI, a restore factory settings operation reverts the setting to the value
+it last had after any modifications by SWI or FOTx. </p> </li>
+<li id="GUID-E325ABDC-1286-5763-8C01-6D99662C20B6"><p>If a setting was created
+in existing ROM and modified by the user only, the setting reverts to its
+original value. </p> </li>
+<li id="GUID-4DAA44F5-218D-52A1-BE53-688B3FF4540F"><p>If a setting was created
+in existing ROM and deleted by the user, the setting reverts to the value
+it last had after any modifications by SWI or FOTx. </p> </li>
+<li id="GUID-09EA88F1-2A32-5207-B6FE-FF9E0B3C9F85"><p>If a setting was created
+in existing ROM and modified or deleted by SWI or firmware upgrade, the changes
+are not reversed. </p> </li>
+</ul> </section>
+<section><title>Backup and restore</title> <p>The Central Repository can back
+up data in a repository. Backup does not affect all repository entries, only
+those which have the appropriate metadata bit set. </p> <p>The effect of a
+restore is to merge the backed up values of backed up settings with the current
+values of non-backed up settings. It does not mean restoring the device state
+at the time of backup. </p> <ul>
+<li id="GUID-11F0ED5C-0C50-55F3-886D-E65042DAAE63"><p>A backed up setting
+is restored to its value at the time of backup. </p> </li>
+<li id="GUID-F1383EFE-D685-5923-AF99-1181E34860BB"><p>A non-backed up setting
+retains its current value. </p> </li>
+<li id="GUID-943725DE-9598-5ADF-B3B3-36DA8EE6FA26"><p>A backed up setting
+is restored after a deletion, but only if the backup took place before the
+deletion. </p> </li>
+<li id="GUID-3ECAB92B-B9B3-5F01-801F-5FEA81A632CD"><p>A non-backed up setting
+is never restored after a deletion. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-1C683226-C142-5C7B-BD20-060058352B08.dita"><linktext>Central Repository
+Guide</linktext></link>
+<link href="GUID-724BA3CD-7648-51DF-9285-3AA7470987F4.dita"><linktext>Optimising
+Repository                 Access</linktext></link>
+<link href="GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita"><linktext>Central Repository
+                Transactions</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title><p>The File Converter Framework converts data
+from one format to another format. For example, HTML files can be converted
+to Symbian word documents. </p> </section>
+<section><title>Architecture</title><p>The File Converter Framework
+architecture provides a framework for ECOM plug-ins, called converters, that
+can convert data between different formats. When an application requests to
+convert data from one format to another format, the framework checks the list
+of available converters. If there is a converter that can do the conversion,
+then the framework assigns the request to that converter. </p> <p>The following
+diagram shows the File converter framework architecture. </p> <fig id="GUID-E4ECB2BD-53D8-53F7-B248-2D2EE5888F1E">
+<image href="GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e119354_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>API summary</title> <table id="GUID-82B5BE7F-1DE7-5FBA-9770-05D9B8A74E2F">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-D7356C00-8DFE-33D5-937D-59A90CC0412E.dita"><apiname>CCnaConverter</apiname></xref>  </p> </entry>
+<entry><p>A class that contains the properties of a converter. These are a
+UID and the data types that the converter supports. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-66797353-CD46-36C1-A719-4CF50A75250C.dita"><apiname>CConverterBase</apiname></xref>  </p> </entry>
+<entry><p>A class that provides an interface to access the converters. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-583F9530-59DD-3546-B2F9-94D130A3EDD1.dita"><apiname>CConverterBase2</apiname></xref>  </p> </entry>
+<entry><p>A base class for converters. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6C51F1E2-7794-3830-9D52-CA98827C0156.dita"><apiname>CCnaConverterList</apiname></xref>  </p> </entry>
+<entry><p>A class that provides a list of available converters. It allows
+clients to search for and obtain converters for specific source and target
+data types. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3C5F0946-1A4F-3ADA-A41A-BC408F9B9414.dita"><apiname>CCnaConvInfoFileReader2</apiname></xref>  </p> </entry>
+<entry><p>A class that encapsulates a collection of converter properties, <xref href="GUID-D7356C00-8DFE-33D5-937D-59A90CC0412E.dita"><apiname>CCnaConverter</apiname></xref>,
+read from a converter information <filepath>.rsc</filepath> file. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6AF2AE70-9FA4-3B06-B01F-86DE3581AE10.dita"><apiname>CMimeInfo</apiname></xref>  </p> </entry>
+<entry><p>A class that contains the localized names for a data type. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-AC297E11-FD37-3572-9612-042F68324F6E.dita"><apiname>MConverterUiObserver</apiname></xref>  </p> </entry>
+<entry><p>An interface implemented by the client of a conversion operation
+to observe conversion progress. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p><b>Using a converter</b> </p> <p>File
+Converter Framework provides APIs to list and search for converters. It also
+provides an observer interface through which the progress and success or failure
+of the conversion can be reported. For more information, see <xref href="GUID-C1C0E7DF-6519-5648-AE5E-6D149AF1A89A.dita">Using
+a converter</xref>. </p> <p><b>Writing a converter</b> </p> <p>File Converter
+Framework specifies a plug-in interface for converters. For more information,
+see <xref href="GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita">Writing a Converter</xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-99ACBD00-2F61-5984-BE77-91D5EF547289.dita"><linktext>File Converter
+Tutorials</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-99ACBD00-2F61-5984-BE77-91D5EF547289.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-99ACBD00-2F61-5984-BE77-91D5EF547289" xml:lang="en"><title>File Converter Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the tasks that can be performed using File Converter Framework.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52" xml:lang="en"><title>Windows</title><shortdesc>This section provides information about the various types of windows
+and some related concepts. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>:
+Application developers. </p>
+</conbody><related-links>
+<link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server
+Client-Side Library</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF" xml:lang="en"><title>Graphics Concepts</title><shortdesc>This section provides overview material about some important graphics
+topics, including introductions to ScreenPlay and the graphics architecture
+when ScreenPlay is not enabled. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links>
+<link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>Graphics
+Device Interface   Concepts</linktext></link>
+
+<link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server
+  Client-Side Library Concepts</linktext></link>
+<link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita#GUID-90644B52-69D7-595C-95E3-D6F7A30C060D/GUID-9F33DD34-F5E5-5EA0-8559-7A933D230129">
+<linktext>Font and Text Services   Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA-master.png has changed
Binary file Symbian3/SDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e215204_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-99F36ADE-EBBF-5EE7-B4C9-A540D4CA1776.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-99F36ADE-EBBF-5EE7-B4C9-A540D4CA1776"><title>Flight Mode Status Tutorial </title><shortdesc>This tutorial describes how to retrieve the flight mode status of the device. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-C2A1C88C-48FB-5964-9AF6-9F1E1FEBAC0D"> <step id="GUID-56D070D5-04FC-5353-9346-B1362082CB2E"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-34A6A05B-4FE9-5BCC-8606-6230AF02510E"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetFlightMode()</apiname></xref> to get the flight mode status of the device </info> <info>The function returns the flight mode status in a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TFlightModeV1</apiname></xref> object. </info> </step> <step id="GUID-3E742228-588B-5EAA-9822-F40B8418F3C3"><cmd/><info>pass the enuemeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetFlightModeCancel</apiname></xref> to cancel the asynchronous request. </info> </step> </steps> <example id="GUID-60B27F7D-0EA6-57E4-914A-6AA11731B59C"><title>Flight mode status example</title> <codeblock id="GUID-D0977E82-668B-5755-99AF-538A6E87C052" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TSubscriberIdV1 iSubscriberIdV1;
+    CTelephony::TSubscriberIdV1Pckg iSubscriberIdV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+    };
+
+CClientApp:: CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iSubscriberIdV1Pckg(iSubscriberIdV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetSubscriberId(iStatus, iSubscriberIdV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       TBuf&lt;CTelephony::KIMSISize&gt; suscriberId = iSubscriberIdV1.iSubscriberId;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetSubscriberIdCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0" xml:lang="en"><title>SigCheck:
+Checking a Resource file's Signature</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-cf9dc49f-7944-44e7-b46f-03f1d75f01db.zip" scope="external">SigCheck.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-cf9dc49f-7944-44e7-b46f-03f1d75f01db.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.   </section>
+<section><title>Description</title> <p>This example shows how the signature
+of a resource file is checked before it is used. <filepath>SigCheck</filepath> reads
+a text string from a single resource file, <filepath>SigCheck.rss</filepath>,
+in the standard way and uses <codeph>RResourceFile::ConfirmSignatureL()</codeph> to
+check the 'identity' of the resource file. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC" xml:lang="en"><title>libmexample:
+Using the Standard C Math Library</title><shortdesc>This example demonstrates the use of math functions, such as <apiname>gamma(double)</apiname>,
+that are part of the Standard C Maths support library (<codeph>libm.dll</codeph>). </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-D3589080-5DD4-5DDF-A269-A7D1687F4705"><title>Purpose</title> <p>This
+example application shows how to use the <filepath>libm.dll</filepath> library.
+It: </p> <ol id="GUID-BDAA52E1-6D3C-520C-9C3F-74A558955A86">
+<li id="GUID-85A5E6A3-19BD-5060-A92E-CFAA7E522DF4"><p>reads an input value
+supplied by the user </p> </li>
+<li id="GUID-7D292EC7-FE00-5E35-9261-C11CB406CF32"><p>applies the gamma function
+on the input value </p> </li>
+<li id="GUID-B1C92272-17F9-5520-AC5D-A55B0C11963C"><p>prints the output. </p> </li>
+</ol> </section>
+<section id="GUID-2638D79E-A3D2-5A08-AFC3-00AF68C3C194-GENID-1-6-1-10-1-1-5-1-3-1-11-1-8-1-3-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-b6b7503f-d331-4664-a6c8-a3e72b1f6c5b.zip" scope="external"> libmexample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-b6b7503f-d331-4664-a6c8-a3e72b1f6c5b.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-C3619B7E-3AF5-58D1-99D1-45CADE74B54C"><title>Class summary</title> <p>The
+example shows the use of the following API: </p> <ul>
+<li id="GUID-3DF01930-3A0E-5645-8D7E-F70321CB2B31"><p> <xref href="GUID-D1B12DAA-B281-3D8C-9CFF-A2062EA72A0A.dita"><apiname>gamma(double)</apiname></xref> from
+the Standard C Maths support library (<filepath>libm.dll</filepath>). </p> </li>
+</ul> </section>
+<section id="GUID-7D90F88D-B6DC-5287-AC55-AAF46443874A"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-A00084B3-336E-57DE-A399-33DE044E6021"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p> <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-91962C9F-6048-588E-8100-352354DC49C9"><p>For the emulator, the
+example builds an executable called <filepath>libmexample.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section id="GUID-97F66C8D-36A9-50D4-8318-2A19BE9832D6"><title>Running the
+example</title> <p>Run the <filepath>libmexample.exe</filepath> executable.
+The example application waits for the user to enter an input value. </p> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9A3E0279-4F87-594D-A987-66DC77F408A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9A3E0279-4F87-594D-A987-66DC77F408A0" xml:lang="en"><title>Creating and Reading Email Messages in Chunks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can perform the following tasks by using the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref> (<filepath>imcm.dll</filepath>) API. This API is used by email client MTMs. </p> </conbody><related-links><link href="GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita"><linktext>IMAP4 MTM</linktext> </link> <link href="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita"><linktext>POP3 MTM</linktext> </link> <link href="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita"><linktext>SMTP MTM</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e237755_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9A5D0303-6C22-53A1-86DA-0431F726010B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9A5D0303-6C22-53A1-86DA-0431F726010B" xml:lang="en"><title>Messaging
+Dependencies</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following are the major dependencies of other subsystems on the Messaging
+subsystem: </p>
+<ul>
+<li id="GUID-E2E94CC5-C780-5B7C-8DC9-9CC4D4FF5853"><p> <b>File server:</b> needs
+to be able to clone open file handles. This allow processes to access files
+in another process’s data cages area. </p> </li>
+<li id="GUID-2FE4E644-AA53-524E-9420-419F19515CC5"><p> <b>Task scheduler:</b> needs
+to store the capabilities of the process that creates a schedule within the
+task information for that schedule. The task scheduler must data cage the
+schedule information. </p> </li>
+<li id="GUID-0BAF2FEE-3D7E-58DF-A159-8F5F47B3307E"><p> <b>Kernel:</b> a process
+needs to be able to obtain the Secure ID (SID) (that is allocated by the kernel
+to a process) and capabilities of the process that started it. </p> </li>
+<li id="GUID-C5550F67-A0B1-5564-B83C-573EBB8A6DA5"><p> <b>Application Architecture:</b> ability
+to launch an application by passing an open file handle that can then be used
+by the launched application. </p> </li>
+<li id="GUID-386D0E24-24C6-5464-88E4-517C821B26DA"><p> <b>Central repository:</b> ability
+to assign different security capabilities to settings within a repository,
+and to be able to guarantee committing multiple settings. This can be either
+as APIs to set an array of settings or as APIs to store settings in memory
+and provide a commit to disk API. </p> </li>
+<li id="GUID-A169571C-CFCB-52E3-A820-3FAE33623C95"><p> <b>ESock:</b> hosts
+the service-providing protocol modules and network interfaces. </p> </li>
+<li id="GUID-931E092A-C043-51FA-BE78-136FCC849882"><p> <b>ETel:</b> a telephony
+server to provide a generic interface to initiate, control, and terminate
+telephone calls. </p> </li>
+<li id="GUID-5947368C-87C3-54AA-B8C8-5C529CA25627"><p> <b>SQL:</b> a component
+that provides an SQL database service. </p> </li>
+</ul>
+</conbody><related-links>
+<link href="GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita"><linktext>Messaging
+Overview</linktext></link>
+<link href="GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita#GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107/GUID-10265557-F31B-50B3-A955-A548A5A78D7B">
+<linktext>Operating with the SQL database</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0" xml:lang="en"><title>Creating
+a Registration Resource File</title><shortdesc>The properties of the implementation are published in a compiled
+resource file. This file is known as the registration resource file of the
+implementation and has a<filepath>.rss</filepath> extension. The plug-in framework
+reads the resource files to find the interface implementations available on
+the system. In case of an implementation collection, the collection has one
+registration resource file and the properties of all the implementations of
+the collection are described in the file. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-391778B3-5055-5368-AB5F-2C032B69D905"><p>The plug-in framework
+supports three versions of the resource structure types from which the registration
+resource files can be constructed: </p> <ul>
+<li id="GUID-47AD6ECD-92B2-512C-B72B-9423CFE2F3A0"><p>The standard version
+that allows ROM-based plug-ins to be overridden by RAM-based plug-ins. </p> </li>
+<li id="GUID-0E0AFCE2-DE9E-58DD-9450-450FA386B64C"><p>The version 2 (modified
+version) that can prevent the ROM-based plug-ins from being overridden by
+RAM-based plug-ins. </p> </li>
+<li id="GUID-3BF5C69F-1D07-5600-B507-7C20295826BC"><p>The version 3 (modified
+version) to accommodate extended interfaces. </p> </li>
+</ul> </context>
+<steps-unordered>
+<step id="GUID-B48A984F-E654-4F78-AC03-173730E6D2CB"><cmd><xref href="GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita">Writing
+a Standard Registration Resource File</xref></cmd>
+</step>
+<step id="GUID-8AA2CDA3-CF5F-494A-B663-448C6CFCC363"><cmd><xref href="GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69.dita">Writing
+the Version 2 Registration Resource File</xref></cmd>
+</step>
+<step id="GUID-BA230F46-EE50-4673-8CBF-DC1945CDC07A"><cmd><xref href="GUID-39186342-960A-46A4-BC35-851F53665FA8.dita">Writing
+the Version 3 Registration Resource File</xref></cmd>
+</step>
+</steps-unordered>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9AA99D27-D646-54D0-92B9-204FDA1F3162.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9AA99D27-D646-54D0-92B9-204FDA1F3162" xml:lang="en"><title>Maths</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e284626_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9"><title>Librt Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Support for the Librt library on Symbian platform enables you to port Librt-based applications to Symbian platform quickly and easily. With knowledge of the Librt library you can also develop Librt-based applications on Symbian platform with minimal coding effort and without much knowledge of the native Symbian Utility C++ APIs. </p> <section><title>Librt library details</title> <p>The <filepath>librt.dll</filepath> provides the Librt functionality and your code must link to <filepath>librt.lib</filepath>. </p> <p> <b>Important:</b> Your application or library that uses the Librt library for the clock solutions must link to <filepath>librt.dll</filepath> prior to all other libraries in the link order. This is because both <filepath>libc.dll</filepath> and <filepath>librt.dll</filepath> provide similar clock interfaces but only the Librt library is modified to behave according to the LSB 3.1 specification. </p> </section> <section><title>Architecture</title> <p>The following image illustrates how the Librt library interacts with the components of the P.I.P.S. environment and also with Symbian platform: </p> <fig id="GUID-A29F100E-2726-501C-B141-BED577C50768"><title>
+             The Librt library interacting with P.I.P.S. and Symbian platform
+          </title> <image href="GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e143159_href.png" placement="inline"/></fig> </section> <section><title>APIs</title> <p>The following table is a comprehensive list of Librt APIs as per the <xref scope="external" href="http://refspecs.linux-foundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/librt.html">LSB 3.1 specification</xref>: </p> <table id="GUID-843027AF-D604-5C35-9879-BE79121EE94D"><tgroup cols="1"><colspec colname="col0"/><thead><row><entry>API</entry> </row> </thead> <tbody><row><entry><p> <b>Shared Memory APIs</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-FF8FD54D-4CD3-3DC7-9A48-56043F26E5DD.dita"><apiname>shm_open()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-BF359599-0088-3F3E-BD80-B09C1F5DA380.dita"><apiname>shm_unlink()</apiname></xref>  </p> </entry> </row> <row><entry><p> <b>Clock APIs</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-D4D30F8D-82D9-3919-9711-DFEE78946DBE.dita"><apiname>clock_getcpuclockid()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-B27CD3ED-C472-3226-8B9F-C920E42FA918.dita"><apiname>clock_getres()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-2E94C94E-6D65-3B18-959D-60E6224E6C40.dita"><apiname>clock_gettime()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-24155E9E-530A-3D43-9B71-CF59153B33C9.dita"><apiname>clock_nanosleep()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-7FA65BF7-2F4F-3AA9-A52F-2CF655053AB7.dita"><apiname>clock_settime()</apiname></xref>  </p> </entry> </row> <row><entry><p> <b>Timer APIs</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-FD961A81-8D92-38D6-A2CE-F3215D5CCF38.dita"><apiname>timer_create()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-3C9E5145-5A20-3AE6-88C1-2D76BD68B2F0.dita"><apiname>timer_delete()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-C77553E5-ABEA-3253-B119-2F71C6241EAA.dita"><apiname>timer_getoverrun()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-F2DCFCBA-65B7-3184-B870-A63C6CF7EBA9.dita"><apiname>timer_gettime()</apiname></xref>  </p> </entry> </row> <row><entry><p> <xref href="GUID-5FE65EC4-4F2A-30C1-BA89-A92B1F9B1B2E.dita"><apiname>timer_settime</apiname></xref>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Using Librt</title> <p>The following tutorials describe some high-level usage scenarios of the Librt library functions: </p> <ul><li id="GUID-81EAC75C-5233-5440-95B9-E950AA7527BF"><p><xref href="GUID-8B37D53D-77E1-58C6-9A44-3376A450228B.dita">Shared Memory Tutorial</xref>  </p> </li> <li id="GUID-BA00DA3A-FD9A-52CA-AA40-F1CB0CC571A5"><p><xref href="GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita">Clocks and Timers Tutorial</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5" xml:lang="en"><title>Advanced
+Pointer States and Event Communication</title><shortdesc>The Window Server provides advanced pointer features, such as support
+for multiple pointers and proximity and pressure coordinates. This topic provides
+a summary of advanced pointer states and the events that communicate changes
+of their state. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. <b>Target
+audience</b>: Application developers. </p>
+<p>This topic builds on the <xref href="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita">Advanced
+Pointer Overview</xref>. </p>
+<section><title>Communication between an input driver and the Window Server</title> <p>Figure
+1 below shows how an input driver communicates changes in pointer state to
+the Window Server. The diagram shows the logical pointer states and how <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita"><apiname>TRawEvent</apiname></xref> types
+change those states. From the driver's perspective, the pointer can be in
+one of three basic logical states: <i>Up</i>, <i>Down</i> or <i>OutOfRange</i>. </p> <p>The
+driver sends a number of types of event to move the pointer between these
+states. For example, <xref href="GUID-0FD31DF6-3EA2-3EB3-8940-05F187B98B86.dita"><apiname>EButton1Up</apiname></xref> is an <i>Up</i> event that
+changes the pointer from the <i>Down</i> to the <i>Up</i> state. <xref href="GUID-2786B13B-B95C-3D15-B7D2-205E99A64FBC.dita"><apiname>EButton1Down</apiname></xref> is
+a <i>Down</i> event. <codeph>EButton1Down</codeph> changes the pointer from
+the <i>Up</i> to the <i>Down</i> state, and from <i>OutOfRange</i> to the <i>Down</i> state. </p> <p>There
+can be any number of pointers, and each pointer has a maximum of three buttons.
+A platform UI is free to implement buttons in any way. However, the Window
+Server interprets only Button1 as an <b>action</b> and does not interpret
+the other buttons. </p> <fig id="GUID-2664573F-C5E8-573F-9427-783074351585">
+<title> Driver communicates pointer state changes to the Window Server   
+        </title>
+<image href="GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e169274_href.png" placement="inline"/>
+</fig> <p>For a complete list of pointer states, the events that can be sent
+by the driver, and the associated events that the Window Server sends to the
+client, see the <xref href="GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita#GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5/GUID-EC2B9C82-D678-5DFE-89A8-8CFCF5376244">Pointer
+states and event communication</xref> table below. </p> </section>
+<section id="GUID-3698CDAC-A904-5C44-BFD1-669D9673D02B"><title> Pointer states</title> <p>Pointing
+devices can be in one of the following basic states: </p> <table id="GUID-5255E70E-EF7C-5AA6-9F94-AF720B5B805F">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>State</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>Out of range</b>  </p> </entry>
+<entry><p>Not detected by the device's sensors. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Up</b>  </p> </entry>
+<entry><p>Detected by sensors, coordinates available, not performing an action. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Down</b>  </p> </entry>
+<entry><p>Detected by sensors, coordinates available, performing an action
+(as defined above). </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Figure 2 shows the extension of the <i>Up</i> and <i>Down</i> states
+with additional substates. <i>Up</i> is extended with substates describing
+the <b>closeness</b> of the pointer to the screen. <i>Down</i> is extended
+with substates describing <b>pressing</b>. </p> <fig id="GUID-54DA3BEC-A650-5223-8E46-5B68F414A909">
+<title> Extension of Up and Down states with substates            </title>
+<image href="GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e169388_href.png" placement="inline"/>
+</fig> <p>The Window Server generates the following events for changes of
+closeness and pressing: </p> <ul>
+<li id="GUID-72265325-882B-5B38-ABE7-EFDF05758B97"><p> <codeph>EExitCloseProximity</codeph>  </p> </li>
+<li id="GUID-D22BF039-8D17-53A4-83C1-3390EBDFBE46"><p> <codeph>EEnterCloseProximity</codeph>  </p> </li>
+<li id="GUID-5968A499-B87B-54D2-9926-EF446ED1BCCD"><p> <codeph>EExitHighPressure</codeph>  </p> </li>
+<li id="GUID-4FB8633D-29F1-5794-A922-65603035F23A"><p> <codeph>EEnterHighPressure</codeph>  </p> </li>
+</ul> <p>These are all types of <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>. Because
+these state changes depend on the pressure and proximity of the pointer, both
+of these values are checked each time a new <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita"><apiname>TRawEvent</apiname></xref> concerning
+the pointer arrives from the driver. <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita#GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD/GUID-C7FB5C5F-B7E1-3738-B72D-1AD81699414F"><apiname>TRawEvent::EPointer3DOutOfRange</apiname></xref> means
+that the proximity is infinite and pressure is zero. </p> <p>These events
+are based on four thresholds: </p> <ul>
+<li id="GUID-6B27FB3B-EFFE-5D25-B039-FA84F0BFCE66"><p>The <codeph>EExitHighPressure</codeph> threshold
+(<codeph>EPointer3DExitHighPressureThreshold</codeph> in HAL) </p> <p>This
+is a threshold on the pointer's Z coordinate. In general, if the pointer crosses
+this threshold by decreasing pressure (thus decreasing its Z coordinate),
+the Window Server generates <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita#GUID-1FFA0073-3D83-388E-A824-08C31F90CC54/GUID-9062D892-DE16-3F74-AC0D-76A7F047B52B"><apiname>TPointerEvent::EExitHighPressure</apiname></xref> and
+sends it to the client. </p> </li>
+<li id="GUID-6F8E2E38-59A5-5FF3-B332-5D68252749B9"><p>The <codeph>EEnterHighPressure</codeph> threshold
+(<codeph>EPointer3DEnterHighPressureThreshold</codeph> in HAL) </p> <p>This
+is a threshold on the pointer's Z coordinate. In general, if the pointer crosses
+this threshold by increasing pressure (thus increasing its Z coordinate),
+the Window Server generates <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita#GUID-1FFA0073-3D83-388E-A824-08C31F90CC54/GUID-39963088-400D-3F0B-B7B1-36064CE92A67"><apiname>TPointerEvent::EEnterHighPressure</apiname></xref> and
+sends it to the client. </p> </li>
+<li id="GUID-CB32D252-B1CD-56D4-A5CF-88E99C2BCDD8"><p>The <codeph>EEnterCloseProximity</codeph> threshold
+(<codeph>                 EPointer3DEnterCloseProximityThreshold</codeph> in
+HAL) </p> <p>This is a threshold on the pointer's Z coordinate. In general,
+if the pointer crosses this threshold by decreasing its proximity from the
+device (thus increasing its Z coordinate), the Window Server generates <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita#GUID-1FFA0073-3D83-388E-A824-08C31F90CC54/GUID-7BDBA988-0D3A-35B2-A5AE-FFA56CC48D12"><apiname>TPointerEvent::EEnterCloseProximity</apiname></xref> and
+sends it to the client. </p> </li>
+<li id="GUID-C60E937A-E786-55CE-BEEC-655E78B6ED41"><p>The <codeph>EExitCloseProximity</codeph> threshold
+(<codeph>EPointer3DExitCloseProximityThreshold</codeph> in HAL) </p> <p>This
+is a threshold on the pointer's Z coordinate. In general, if the pointer crosses
+this threshold by increasing its proximity from the device (thus decreasing
+its Z coordinate), the Window Server generates <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita#GUID-1FFA0073-3D83-388E-A824-08C31F90CC54/GUID-C9226074-F285-3934-83C1-5533485FE6A6"><apiname>TPointerEvent::EExitCloseProximity</apiname></xref> and
+sends it to the client. </p> </li>
+</ul> <p>Applications can configure these thresholds at runtime by using Window
+Server APIs in <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref>. All applications can read these
+thresholds. However, only code with <codeph>WriteDeviceData</codeph> capability
+can change them because these changes should be made only by the device's
+configuration application. </p> </section>
+<section id="GUID-EC2B9C82-D678-5DFE-89A8-8CFCF5376244"><title>Pointer states
+and event communication</title> <p>The table below shows all possible pointer
+states. For each state it shows all of the events that can be sent by the
+driver and all of the events that are sent by the Window Server to the client.
+The end state of the pointer is also shown. There are five pointer zones (states)
+and four thresholds. An event is generated when the pointer's z position crosses
+a threshold. </p> <table id="GUID-630982B7-0367-558B-A1B0-B115EB7625A9">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry> Pointer state</entry>
+<entry>  <codeph>TRawEvent</codeph> received from driver</entry>
+<entry>  <codeph>TPointerEvent</codeph> sent by Window Server</entry>
+<entry>Resulting pointer state</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>OutOfRange </p> </entry>
+<entry><p> <codeph>EPointer3DOutOfRange</codeph>  </p> </entry>
+<entry><p>— </p> </entry>
+<entry><p> <codeph>EOutOfRange</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p>OutOfRange </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &lt; <codeph>EEnterCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EMove</codeph>  </p> </entry>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>OutOfRange </p> </entry>
+<entry><p> <codeph> EMove</codeph> (Z &gt;= <codeph>EEnterCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EEnterCloseProximity</codeph>  </p> </entry>
+<entry><p>Up/InCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>OutOfRange </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph> (Z &lt; <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph>  </p> </entry>
+<entry><p>Down/NotPressing </p> </entry>
+</row>
+<row>
+<entry><p>OutOfRange </p> </entry>
+<entry><p> <codeph> EButton1Down</codeph> (Z &gt;= <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph>, <codeph>EEnterHighPressure</codeph>  </p> </entry>
+<entry><p>Down/Pressing </p> </entry>
+</row>
+<row>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+<entry><p> <codeph>EPointer3DOutOfRange</codeph>  </p> </entry>
+<entry><p> <codeph>EOutOfRange</codeph>  </p> </entry>
+<entry><p>OutOfRange </p> </entry>
+</row>
+<row>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &lt; <codeph>EEnterCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EMove</codeph>  </p> </entry>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &gt;= <codeph>EEnterCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EEnterCloseProximity</codeph>  </p> </entry>
+<entry><p>Up/InCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph> (Z &lt; <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph>  </p> </entry>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph> (Z &gt;= <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph>, <codeph>EEnterHighPressure</codeph>  </p> </entry>
+<entry><p>Down/InHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Up/InCloseProximity </p> </entry>
+<entry><p> <codeph>EPointer3DOutOfRange</codeph>  </p> </entry>
+<entry><p> <codeph>EOutOfRange</codeph>  </p> </entry>
+<entry><p>OutOfRange </p> </entry>
+</row>
+<row>
+<entry><p>Up/InCloseProximity </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &lt; <codeph>EExitCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EExitCloseProximity</codeph>  </p> </entry>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Up/InCloseProximity </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &gt;= <codeph>EExitCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EMove</codeph>  </p> </entry>
+<entry><p>Up/InCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Up/InCloseProximity </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph> (Z &lt; <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph>  </p> </entry>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Up/InCloseProximity </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph> (Z &gt;= <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Down</codeph>, <codeph>EEnterHighPressure</codeph>  </p> </entry>
+<entry><p>Down/InHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph> (Z &lt; <codeph>EExitCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph>, <codeph>EExitCloseProximity</codeph>  </p> </entry>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph> (Z &gt;= <codeph>EExitCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph>  </p> </entry>
+<entry><p>Up/InCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &lt; <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EDrag</codeph>  </p> </entry>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &gt;= <codeph>EEnterHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EEnterHighPressure</codeph>  </p> </entry>
+<entry><p>Down/InHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Down/InHighPressure </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph> (Z &lt; <codeph>EExitCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph>, <codeph>EExitCloseProximity</codeph>  </p> </entry>
+<entry><p>Up/OutOfCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Down/InHighPressure </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph> (Z &gt;= <codeph>EExitCloseProximity</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EButton1Up</codeph>  </p> </entry>
+<entry><p>Up/InCloseProximity </p> </entry>
+</row>
+<row>
+<entry><p>Down/InHighPressure </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &lt; <codeph>EExitHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EExitHighPressure</codeph>  </p> </entry>
+<entry><p>Down/OutOfHighPressure </p> </entry>
+</row>
+<row>
+<entry><p>Down/InHighPressure </p> </entry>
+<entry><p> <codeph>EMove</codeph> (Z &gt;= <codeph>EExitHighPressure</codeph> threshold) </p> </entry>
+<entry><p> <codeph>EDrag</codeph>  </p> </entry>
+<entry><p>Down/InHighPressure </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The driver is prohibited from sending <codeph>EPointer3DOutOfRange</codeph> when
+the pointer is in the Down state. Therefore this is not included in this table.
+Because <codeph>TRawEvent</codeph>'s <codeph>EPointer3DOutOfRange</codeph> events
+do not have coordinates, the Window Server makes sure the event is delivered
+to the place where the previous event for the same pointer occurred. It does
+this by maintaining the last state of the pointer. </p> <p>Figure 3 shows
+the events sent from the Window Server to the client while the pointer traverses
+the full cycle of events—from OutOfRange, through Down/InHighPressure and
+back to OutOfRange. This diagram does not show all of the possible state transitions
+that are described in the table above. </p> <fig id="GUID-C39B447C-0908-5F9A-95EC-2F97E56E2C20">
+<title> Events sent from Window Server to client while the pointer traverses
+the full cycle of states.            </title>
+<image href="GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e170339_href.png" placement="inline"/>
+</fig> </section>
+</conbody><related-links>
+<link href="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita"><linktext>Advanced
+Pointer Overview</linktext></link>
+<link href="GUID-C60DC070-572B-5960-B394-550426FDB909.dita"><linktext>Advanced
+Pointer Tutorial</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9B428B4E-83B7-5EE3-8D63-E2B0602D1D91.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9B428B4E-83B7-5EE3-8D63-E2B0602D1D91"><title>Calendar Entries</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Overview</title> <p>A calendar entry has a number of properties. Firstly, it has a type, which is one of the following: </p> <ul><li id="GUID-65BB35D3-C4C3-523E-8CFB-B407B51008AD"><p>an appointment </p> </li> <li id="GUID-9278D429-D6C9-59E3-A133-6A1B2C93EAB4"><p>a to-do item </p> </li> <li id="GUID-AAB0A11C-948A-55B1-A19F-05F4E7CAB169"><p>a reminder </p> </li> <li id="GUID-F26F1AD3-CC4E-5B89-AF53-9D99F4B4A0A0"><p>an event </p> </li> <li id="GUID-A259A672-333D-51A9-BC10-E9BBBC182F0F"><p>an anniversary </p> </li> </ul> <p>Other properties that can be set on calendar entries include attendees, location, description, status, and alarm setting. These are discussed in the appropriate sections that follow. </p> <p>There are also properties provided to enable simple group scheduling services. Entries can hold properties defined in RFC2445 such as the unique identifier (UID), sequence number (SEQUENCE), Recurrence ID (RECURRENCE-ID), repeating events defined by the RDATE property, local time zone rules and the METHOD property. Group scheduling entries that act on the same event can be a stored and retrieved in an associative manner by means of a common UID. </p> </section> <section><title>Creating a calendar entry object</title> <p>Once you have a calendar session object, you can create a calendar entry object using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::NewL()</apiname></xref>. </p> <codeblock id="GUID-E7AF1B7D-0A69-5AC9-ACB3-04BF130F0A34" xml:space="preserve">CCalEntry::NewL(TType aType, HBufC8 *aUid, TMethod aMethod, TUint aSeqNum, const TCalTime &amp;aRecurrenceId, CalCommon::TRecurrenceRange aRange);</codeblock> <p> <i>aType</i> specifies the type of calendar entry. This can also be set later using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>TCalRRule::SetType()</apiname></xref>. </p> <p>Further arguments are relevant to group scheduling: </p> <ul><li id="GUID-C0288BAF-F3E9-5D14-877C-A133A4103FA8"><p>global UID of the entry </p> </li> <li id="GUID-91EDC103-28F4-578A-8CEB-FC506083A404"><p>optionally, the method property such as add, publish, request and reply. This can also be set later, using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetMethodL()</apiname></xref>  </p> </li> <li id="GUID-73EB1D22-4318-56E3-BBFC-1C91E940C071"><p>the entry sequence number </p> </li> <li id="GUID-505AC8D9-BDA5-5030-AC71-A3CB0B7E78DD"><p>the recurrence ID and recurrence range. </p> </li> </ul> <p>When a calendar entry object has been obtained you can set further properties, as described below. For brevity, only the 'setter' function for a property is usually described, without the corresponding 'get' property function. </p> </section> <section><title> Setting the calendar entry details</title> <p> <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetSummaryL()</apiname></xref> sets the summary text for calendar entry. </p> <codeblock id="GUID-06331311-19E3-583C-84E4-F4D6414FF6D9" xml:space="preserve">_LIT(KSummaryText1,"Project meeting schedule"); 
+entry-&gt;SetSummaryL(KSummaryText1);
+//This is used to set one line information about the event, for example, the meeting topic. 
+CCalEntry::SetLocationL() sets the location field (venue) for the calendar entry.  
+_LIT(KLocation1,"Lake View Discussion Room");
+entry-&gt;SetLocationL(KDLocation1);
+CCalEntry::SetDescriptionL() sets the description text to the calendar entry. 
+_LIT(KDescription1,"Project kick off meeting is scheduled for 1st week of August");  
+entry-&gt;SetDescriptionL(KDescription1);</codeblock> <p>This is used to give detailed information of the calendar entry, such as the meeting agenda. </p> </section> <section><title>Setting the calendar entry dates</title> <p>You can set the start and end date for a calendar entry. For example: </p> <codeblock id="GUID-C472913F-0103-5B92-B7A1-F60E2AFE62CD" xml:space="preserve">//Set the start and end time for a calendar entry 
+TCalTime startTime; 
+TCalTime endTime; 
+entry-&gt;SetStartAndEndDateL(startTime,endTime);
+//You can find the date/time when a calendar entry was last modified by calling CCalEntry::LastModifiedDateL(). You can also set this using CCalEntry::SetLastModifiedDateL(). 
+TCalTime lastModified; 
+entry-&gt;SetLastModifiedDateL(lastModified);//set last modified time for entry
+</codeblock> </section> <section><title>Setting the recurring dates</title> <p>You can set dates for repeating entries using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetRDatesL()</apiname></xref>: </p> <codeblock id="GUID-5F671AF9-E2F7-5847-A726-302E5B0666B1" xml:space="preserve">SetRDatesL(const RArray&lt; TCalTime &gt; &amp;aRDateList); //Set the repeat dates to the calendar entry</codeblock> <p> <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetExceptionDatesL()</apiname></xref> allows you to provide the dates that need to be excluded from the recurrence dates for an entry. For example, for a project meeting scheduled for 3rd, 10th, 17th, 24th and 31st, if you have to cancel meetings scheduled on 17th and 24th, call <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetExceptionDatesL()</apiname></xref> and pass these dates. </p> <codeblock id="GUID-9E42F48C-18A6-5DE8-B770-09A5A0250D80" xml:space="preserve">SetExceptionDatesL(const RArray&lt; TCalTime &gt; &amp;aExDateList); //Set the exception dates to the calendar entry.</codeblock> </section> <section><title>Setting status for a calendar entry</title> <p>An event can have a status such as tentative, confirmed or cancelled. For a to-do type event, the status can indicate whether an item needs action, is completed, is in progress or has been cancelled. </p> <codeblock id="GUID-F167F25C-951E-5840-B1B6-57D67EA5BDA5" xml:space="preserve">entry-&gt;SetStatusL(EConfirmed); // Set meeting status to ‘Confirmed’ </codeblock> <p>To protect the data in a calendar entry, you can impose certain restrictions on accessing the data. These can be: no restrictions, no access or restricted access. Call <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetReplicationStatusL()</apiname></xref> to set the above restrictions to a calendar entry. To get the restrictions set for a specific entry call <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::ReplicationStatusL()</apiname></xref>. </p> <codeblock id="GUID-B014FBA0-98E4-5672-8B41-E30A0314F44E" xml:space="preserve">entry-&gt;SetReplicationStatusL(ERestricted); // entry data has restricted access</codeblock> <p>When more than one event is scheduled for a given time period, it can be useful to give a specific event a priority value. Priority values ranges from 0 to 255. 0 is the default value. 1 is the for highest priority. </p> <codeblock id="GUID-D1B1D6B4-8BAE-5857-99EE-B204A6F104D9" xml:space="preserve">entry-&gt;SetPriorityL(1); // the meeting is of high priority </codeblock> </section> <section><title>To do list entries</title> <p>To strike out an action item in a to-do list call <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::SetCompletedL()</apiname></xref>. When this function is called for an entry other than a to-do list, it leaves with <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>KErrNotSupported</apiname></xref>. </p> </section> <section><title>Comparing and copying</title> <p>You can compare a calendar entry with another entry using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::CompareL()</apiname></xref>. You can also copy the contents of an entry to the current entry using <xref href="GUID-725D11A2-8805-3466-98DB-EF5CDEAF2801.dita"><apiname>CCalEntry::CopyFromL()</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08" xml:lang="en"><title>Serial Communications Server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This server provides access to the device's serial ports. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9B8655A7-2F6D-53E0-8855-78D88BB84643.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9B8655A7-2F6D-53E0-8855-78D88BB84643" xml:lang="en"><title>Open Environment Utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Open environment utilities correspond to a set of phone and PC-side utilities that support a Unix-like shell on a Symbian platform phone using a PC as the client. This functionality is supported by porting Text Shell (Zsh) on to the Symbian platform.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BADA8E9-15AA-5867-BF14-DB8C4D9B40A6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9BADA8E9-15AA-5867-BF14-DB8C4D9B40A6"><title>Naming Conventions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Applications on the Symbian platform use a standard set of conventions to name their classes, structs, variables, functions, macros, enumerations, and constants. This topic explains the meaning of these conventions. </p> <section><title>Class names</title> <p>Most class names are formed with a prefix letter <codeph>C</codeph>, <codeph>T</codeph>, <codeph>R</codeph>, or <codeph>M</codeph>. Briefly, the meaning of these is as follows: </p> <ul><li id="GUID-2F4845E7-26DF-585A-A04B-5FA92C602D5D"><p> <codeph>C</codeph>: heap-allocated classes, that are derived from a base class <codeph>CBase</codeph>  </p> </li> <li id="GUID-1769E8BD-E386-59EE-A631-CB2B998812DB"><p> <codeph>T</codeph>: value classes, that do not own any external object </p> </li> <li id="GUID-69F2347E-9CF6-5E56-9124-4D4D2B6B1620"><p> <codeph>R</codeph>: resource classes, that contain handles to a real resource which is maintained elsewhere </p> </li> <li id="GUID-81D42168-744A-55EF-BFD5-13A2E2609CD9"><p> <codeph>M</codeph>: interface classes, that define abstract protocol definitions that are implemented by derived classes </p> </li> </ul> <p>For a detailed discussion on the meaning of these prefixes, see <xref href="GUID-2458916B-55B2-5E08-A825-4EBDB3503E67.dita">Class types</xref>. </p> <p>Classes that consist solely of static member functions have no prefix letter. Beyond the prefix, the class name is usually a noun that indicates the purpose of the class. </p> </section> <section><title>Struct names</title> <p>Structure types are considered as similar to <codeph>T</codeph> classes, as they should not own external objects, and are normally given names beginning with <codeph>T</codeph> (although some begin with <codeph>S</codeph>). </p> </section> <section><title>Variable names</title> <p>Member variables’ names begin with <codeph>i</codeph>, e.g. <codeph>iMember</codeph>. This makes it easy to check that certain cleanup-related rules are being obeyed. Arguments’ names begin with <codeph>a</codeph>, e.g. <codeph>aControl</codeph> or <codeph>aIndex</codeph>. Local variables’ names have no initial letter. Global variables are usually avoided, but when used, their names begin with a capital letter. </p> <p>The Symbian platform does not use Hungarian or any notation which attempts to include the variable type in its name: such notations are ugly, and become impossible to manage when there are several hundred classes in the system. They are irrelevant anyway: functions are usually so short that it is easy to see the types of variables defined in them, and class browsers provide a quick way to find the types of class members. </p> </section> <section><title>Function names</title> <p>Functions’ names indicate what they do. They are usually verbs. One exception is “getter” functions: for a function which returns the value of a member variable, the function name is usually the name of the variable, without the leading <codeph>i</codeph>: </p> <codeblock id="GUID-D2C3445C-50C9-5C11-8D3B-67DE163C9600" xml:space="preserve">inline RWindow&amp; Window() const { return iWindow; };</codeblock> <p>A corresponding “setter” function would include the word <codeph>Set</codeph>, e.g. <codeph>SetWindow()</codeph>. </p> <p>To terminate functions because of error conditions, the Symbian platform does not use standard C++ exception handling, but its own system called leaving (see <xref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita">Cleanup Support Overview</xref>). Any function that might leave has a name ending in <codeph>...L()</codeph>. This makes the fundamental process of checking for errors easier. The <codeph>new (ELeave)</codeph> function might also leave. The fundamental leaving function is <codeph>User::Leave()</codeph>. Any function that contains any of these, and does not trap them, might itself leave, and should be coded with a trailing <codeph>L</codeph> in its name. If a function calls another which might leave, then its name should have the <codeph>L</codeph> suffix also. </p> <p>Associated with the leaving mechanism, is the cleanup stack, which allows memory allocated on the heap to be recovered when a leave occurs. An allocation or construction function which places data on the cleanup stack ends with <codeph>...LC()</codeph>. For instance, many <codeph>new</codeph>, <codeph>PushL()</codeph>, <codeph>ConstructL()</codeph> sequences are encapsulated in a <codeph>NewLC()</codeph> function: </p> <codeblock id="GUID-51A820E0-923C-5626-A791-7FA0E8F6B6AF" xml:space="preserve">CS* s=CS::NewLC(p1, p2);</codeblock> <p>This allocates the object, initialises it, and leaves it on the cleanup stack. This process may leave (if only through the <codeph>PushL()</codeph> !), so such functions always include an <codeph>L</codeph>, and are therefore <codeph>...LC()</codeph>. </p> <p>A function which takes ownership of its object and destroys it has a name ending in <codeph>...D()</codeph>. An example is the UI framework dialog protocol: </p> <codeblock id="GUID-865E8BED-1C1B-5BC7-A92F-1B5DA6885100" xml:space="preserve">CEikDialog* dialog=new (ELeave) CBossSettingsDialog;
+if (dialog-&gt;ExecuteLD(R_BOSS_SETTINGS_DIALOG))
+    {
+    // handle successful settings
+    }</codeblock> <p>The <codeph>ExecuteLD()</codeph> function includes second-phase construction, execution of the dialog and then destruction. </p> </section> <section><title>Macro names</title> <p>Macro names are all capitalised, with underscores to separates words. </p> </section> <section><title>Enumeration names</title> <p>Enumerations are named as follows: </p> <ul><li id="GUID-FFB2E991-CB2B-5F95-BF13-E0019EF0FDD8"><p>as enumerations are types, they have the <codeph>T</codeph> prefix </p> </li> <li id="GUID-9E021588-6989-59D7-93D6-6E6B27A88E45"><p>enumeration members have the prefix <codeph>E</codeph>  </p> </li> <li id="GUID-95C953A3-6E0F-5FE2-B357-D1A470DC92E5"><p>type and members should have a meaningful, unambiguous name </p> </li> </ul> <p>Enumerations should be scoped within the relevant class, so as not to pollute the global name space. </p> <p>An example of the declaration and use of an enumeration is as follows: </p> <codeblock id="GUID-035D6258-29BD-5104-A758-81F0C8098DF2" xml:space="preserve">class TDemo
+    {
+public:
+    enum TShape {EShapeRound, EShapeSquare};
+    };
+
+TDemo::TShape shape=TDemo::EShapeSquare;</codeblock> </section> <section><title>Constant names</title> <p>Names of constants have a prefix <codeph>K</codeph>. For example, </p> <codeblock id="GUID-4270AB29-EE1F-5DA4-ADA1-16A8DC43A9FC" xml:space="preserve">const TInt KMaxNameLength=0x20;</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BAEF0E8-5414-597C-B0B7-5F6E02DBF3C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9BAEF0E8-5414-597C-B0B7-5F6E02DBF3C5" xml:lang="en"><title>Accessory Services</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Accessory Services collection provides Remote Control Framework component for sending and receiving remote controlled commands from devices. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BB736AD-1224-587B-AC8C-355E7C8AEDC6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9BB736AD-1224-587B-AC8C-355E7C8AEDC6" xml:lang="en"><title>Same-thread
+services</title><shortdesc>Describes asynchronous services provided by same thread code.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Sometimes, services are presented as asynchronous even when they are provided
+by code in the same thread as its client.</p>
+<p>Symbian platform’s asynchronous services are so easy to use that it’s often
+convenient to code some long-running background operations as an asynchronous
+service, which in other operating systems would be coded using a separate
+thread.</p>
+<p>It can also be convenient to define a high level class that can pass on
+requests to an asynchronous service provider in the Kernel. The class presents
+an asynchronous interface to its clients, but is intended to run in the same
+thread.</p>
+<section id="GUID-515A0FEF-CD4E-4C1D-909E-4ADEB6027B7A"><title>See also</title> <p><xref href="GUID-8BD6B29C-D905-5D2B-992A-A04AAD9ABBE3.dita">Long-running
+services and background objects</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9BB849A2-8F69-580D-8A52-C7002D919521"><title>Email Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Email collection provides support for sending and receiving emails using the individual email protocols, such as IMAP4, POP3 and SMTP, and also has support for parsing and generating plain and rich text, MIME and M-HTML format emails. </p> <section><title>Architecture</title> <p>The Email collection consists of a set of utilities and <xref href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita">MTMs</xref> for the POP3, IMAP4 and SMTP messaging protocols. </p> <fig id="GUID-3CF863C6-7627-55E4-951B-36BE4B4C43B9"><title>
+             Email architecture 
+          </title> <image href="GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e246946_href.jpg" placement="inline"/></fig> <dl><dlentry><dt>Autosend</dt> <dd><p>Autosend is an executable file that is executed by the POP3 and IMAP4 client MTMs if the send on next connection setting is set. This executable makes a request to the SMTP server MTM to send messages associated with the SMTP service related to the POP3 or IMAP4 service, wait for the operation to finish and then exit. </p> </dd> </dlentry> <dlentry><dt>Server MTM</dt> <dd><p>A Server MTM provides specific message type storage and transport. It interacts with the Message Server to store and manage entries and provide a transport mechanism. </p> </dd> </dlentry> <dlentry><dt>Email client MTMs</dt> <dd><p>Email client MTMs provide client-side APIs (<filepath>IMCM DLL</filepath>) for IMAP4, POP3 and SMTP. </p> <p>The email client MTMs are used directly by clients to access parts of email messages for display. The <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> class provides the functionality used by clients to display email messages, including listing attachments, getting body text and resolving URIs in M-HTML messages. </p> </dd> </dlentry> <dlentry><dt>Email client utilities </dt> <dd><p>The email client MTM uses the email client utilities when they are requested to create, reply to and forward messages. The <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita"><apiname>CImEmailOperation</apiname></xref> class provides the functionality to perform these operations. Each email is represented by a parent message entry with child entries that represent MIME folders and MIME parts. Adding or deleting MIME parts involves navigating the tree of entries and inserting or removing entries as appropriate. </p> </dd> </dlentry> <dlentry><dt>Email server utilities</dt> <dd><p>Email server utilities are responsible for generating and parsing of RFC2822 format email messages and providing an API to wrap up a TCP/IP connection to a remote email server. </p> </dd> </dlentry> </dl> </section> <section id="GUID-0E61C259-29CC-5FE3-AD4D-B2755F62A015"><title>Description</title> <p>Email messages are represented in a common format whether they are being sent by SMTP and downloaded by POP3 or IMAP4. Messaging clients can use the email client MTMs to create and compose email messages with attachments and a <xref href="GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita#GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B/GUID-6E7D52CF-F18C-5C92-9DB2-611EDD018048">vCard</xref> signature. They can reply to or forward email messages. When connecting to a POP3 mailbox, just the header can be downloaded, or the entire message including attachments. However, when connecting to an IMAP4 mailbox, any or all of the following can be downloaded: </p> <ul><li id="GUID-4DBC9D2A-06F3-5282-A434-05AE87D82ABE"><p>the header </p> </li> <li id="GUID-BD0B15B3-713C-557B-9C01-2E73BB95DC7E"><p>the header and body text </p> </li> <li id="GUID-309E9C9C-EBB0-5363-847F-31986B64A10A"><p>the entire message including attachments </p> </li> <li id="GUID-98BFABA1-3706-5DE4-8990-AC29E249FAB7"><p>partial body text where the body text size limit is specified </p> </li> <li id="GUID-887FD8E3-BDEC-50E9-AA4B-3619DFF9CFA4"><p>download attachments if the attachment size is less then or equal to attachment size limit </p> </li> </ul> <p>Messaging clients can access any part of the message for display to the user. Messages can be moved or copied within folders on the local device and, for IMAP4 only, within the mailbox as well. </p> <p>Email client MTMs provide APIs that allow configuration information, such as secure or non-secure TCP/IP connection, username, password and message limits to be stored on the local device. Email client MTMs can be commanded to stay online during a client session, or connect and disconnect only when necessary. Operations such as moving, deleting, or sending a message while not connected can be queued for execution when the next connection to the subscriber's mailbox is established. </p> <p> <b>Note:</b> Email client MTMs are not responsible for any graphical or user interface associated functionality, such as rendering HTML or images, although they do provide access to images and HTML downloaded to the local device. </p> <p>For each email account a pair of services entries is created in the Message Store. For a POP3 account there will be an SMTP service and a POP3 service. For an IMAP4 account there will be an SMTP service and an IMAP4 service. These entries are used to store the settings for the email transport. Each of the service entry has its related ID that is set to the other member of the pair. The SMTP service is invisible, so that the user only sees the POP3 or IMAP4 service entry. Copying a message to the SMTP service causes the SMTP server MTM to attempt to send the message. The POP3 and IMAP4 MTMs provide functionality to synchronise with a remote email server by using the client MTM interface through the <xref href="GUID-0BD3DB31-2F8B-36B1-AF55-22E649D56164.dita"><apiname>InvokeAsync</apiname></xref> API. </p> <fig id="GUID-6BA2DAFE-B804-5D65-B350-5638DB31A366"><title>
+             Email operation sequence diagram 
+          </title> <image href="GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e247075_href.jpg" placement="inline"/></fig> </section> <section><title>Components</title> <p>The Email collection constitutes the following components: </p> <ul><li id="GUID-EA99CD44-E4C6-5067-954C-363FD6841440"><p><xref href="GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita">IMAP4 MTM</xref>  </p> </li> <li id="GUID-DE41A457-509E-505A-8229-506AEA78F9B1"><p><xref href="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita">POP3 MTM</xref> </p> </li> <li id="GUID-CC0575AC-F1BC-5983-B589-83C2D048B2AC"><p><xref href="GUID-3988C2DE-3FC5-5AF8-BB9F-499E7082F7D5.dita">SMTP MTM</xref>  </p> </li> </ul> </section> <section><title>Using Email</title> <p>Email client applications can use the following functionality provided by the Email collection to: </p> <ul><li id="GUID-9C57E57B-F5E7-5087-ABEA-16431C8E6919"><p>Store emails including MIME headers, RFC2822 headers, attachments, body text and encoding information in the Message Store. </p> </li> <li id="GUID-54CDD32C-FEFB-57D1-BEFD-50B30FD6A03E"><p>Manipulate email messages, for example, adding attachments and replying. </p> </li> <li id="GUID-9C3725B3-738F-540A-8E36-6482FDE15AEA"><p>Encapsulate the character converters, which are used to convert between standard character sets and Unicode. </p> </li> <li id="GUID-4D56BD8D-9B80-55B6-9EF7-DB9847E69459"><p>Store email settings in the central repository. </p> </li> <li id="GUID-68F54B38-09EF-5D9D-B844-930E33B38BE4"><p>Get progress information for email operations. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type Module</linktext> </link> <link href="GUID-8832AED4-6B9F-5B35-8211-0C6661CD6DCA.dita"><linktext>Email Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BE3DEBE-A1CE-5A2F-9746-1E6F2B5B050E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9BE3DEBE-A1CE-5A2F-9746-1E6F2B5B050E" xml:lang="en"><title>Environment
+and DST Changes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains the effect on alarms due to the environment and DST
+changes. </p>
+<section><title>Environment Changes</title> <p>An environment change typically
+involves change in the system time/date, workdays or UTC offset, and due to
+this, alarm's expiry time can be put in the past.</p><p>When an environment
+change occurs, the Alarm Server can respond in any of the following ways:</p><ul>
+<li><p>The Alarm Server queues the alarms that have been skipped. These alarms
+then expire immediately and must be acknowledged by the device user.</p></li>
+<li><p>The Alarm Server uses <codeph>KSkippedAlarmInstancesPubSubKey</codeph> P&amp;S
+key to notify the clients about the skipped calendar alarms. This key can
+be used only by the device creators.</p></li>
+</ul><p>Alarm Server observes changes in the UTC offset as a locale change
+since the UTC offset is set according to the localized position. It observes
+this offset from the system, and on change of this offset, only the alarms
+in the alarm queue that are based on the floating time undergoes changes.</p><p><b>NOTE</b>:
+All alarms in the alarm queue are re-evaluated only if system time/date and
+workday changes. This is applicable for all alarms irrespective of their time
+formats. The workday changes are also a locale change for the system.</p></section>
+<section><title>Daylight Saving Time Changes</title> <p>Daylight Saving Time
+(DST) or Summer Time, is a way of utilizing more daylight by advancing the
+local time by one hour during the summer. </p> <p>The clocks are adjusted
+forward by one hour at the beginning of spring and are adjusted backward in
+autumn. The time adjusted backward by one hour in autumn is usually referred
+as Standard Time (or Winter Time). In a typical case where a one-hour shift
+occurs at 02:00 local time, the clock is adjusted forward from 02:00 standard
+time to 03:00 DST in spring and that day has 23 hours. Whereas in autumn,
+the clock is adjusted backward from 02:00 DST to 01:00 standard time, repeating
+that hour, and that day has 25 hours. </p> <p>Alarm Server observes this DST
+event from the Time Zone Server using <xref href="GUID-EAB78B96-8373-3A96-AA36-43207C3FB514.dita"><apiname>KDSTChangePropertyKey</apiname></xref> P&amp;S
+key. This key can be used only by the device creators. On receiving notification
+of this event through the key, all alarms (based on the floating time format)
+in the alarm queue are re-evaluated for their expiry time. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BF04EB2-7050-51D2-9559-66BC47ECC5B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9BF04EB2-7050-51D2-9559-66BC47ECC5B1" xml:lang="en"><title>Twips and Zooming Tutorials</title><shortdesc>This section provides examples that demonstrate the effects of different zoom factors on text and graphics. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita"><linktext>Graphics Device
+  Interface Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e403048_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9BF78E98-E376-5EE4-9350-C77BF9F540E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9BF78E98-E376-5EE4-9350-C77BF9F540E6"><title>Using the Bitmap Utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides example code that shows how to use the pixel manipulation functions in <codeph>TBitmapUtil</codeph>. In this example they are used to create a bitmap that is a rotated version of an existing bitmap. </p> <codeblock id="GUID-F6828C32-3C17-5DF5-8681-BFA4FB9A6DD4" xml:space="preserve">/* create a new bitmap (iBitmap4), with the same size as an existing bitmap (iBitmap1), but with the height and width swapped */
+iBitmap4 = new (ELeave) CFbsBitmap();
+TSize inSize = iBitmap1-&gt;SizeInPixels();
+User::LeaveIfError(iBitmap4-&gt;Create(TSize(inSize.iHeight,inSize.iWidth), iBitmap1-&gt;DisplayMode());
+    
+// create the bitmap utils
+TBitmapUtil bitmap1Util(iBitmap1);
+TBitmapUtil bitmap4Util(iBitmap4);
+    
+// Begin manipulation with bitmap1Util, setting initial pixel to 0,0 
+bitmap1Util.Begin(TPoint(0,0)); 
+    
+// Begin manipulation with bitmap4Util, setting initial pixel to 0,0
+bitmap4Util.Begin(TPoint(0,0),bitmap1Util); 
+    
+// set the bits of iBitmap4 as iBitmap1, rotated through 90 degrees
+TInt xPos;
+for (TInt yPos=0;yPos&lt;inSize.iHeight;yPos++)
+ {
+ bitmap1Util.SetPos(TPoint(0,yPos));
+ bitmap4Util.SetPos(TPoint(yPos,0));
+ for (xPos=0;xPos&lt;inSize.iWidth;xPos++) 
+  {
+  bitmap4Util.SetPixel(bitmap1Util);
+  bitmap1Util.IncXPos();
+  bitmap4Util.IncYPos();
+  }
+ }
+    
+// each Begin() must have a corresponding End()
+bitmap1Util.End();
+bitmap4Util.End();</codeblock> <p><b>Notes </b> </p> <ul><li id="GUID-5B1DED55-BC39-5DC3-A14B-48A78F9C84F4"><p> <codeph>Begin()</codeph> and <codeph>End()</codeph> calls must surround the other <codeph>TBitmapUtil</codeph> function calls. They tell the Font and Bitmap Server when to lock (that is, not to attempt to compress) the heap where bitmaps are stored, while operations are in progress. </p> </li> <li id="GUID-9CE06E09-B9DF-5F06-BA89-1E09070B2EE8"><p>The second call to <codeph>Begin()</codeph> specifies that the heap has already been locked by <codeph>bitmap1Util</codeph>. </p> </li> </ul> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C251352-B5CD-5BD2-B420-E14E40E137B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9C251352-B5CD-5BD2-B420-E14E40E137B1" xml:lang="en"><title>Automatic Speech Recognition Custom Commands Library</title><shortdesc>This section describes the Automatic Speech Recognition Custom Commands library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-B0F7EFB9-3502-50F7-BBE1-FD0DD7A360F8.dita"><linktext>Speech Recognition Controller
+  Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B"><title>Advanced Pointer Overview </title><shortdesc>This is an overview of the Window Server extensions that support the use of advanced pointers. These extensions enable mobile devices to respond to events from multiple pointers, including their proximity and pressure. These extensions are available only in ScreenPlay. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <section id="GUID-773C3275-F562-5428-A34C-7D54F10D4BC1"><title>Architecture</title> <p>In response to multi-touch pointer movements, an input driver generates a pointer event for each touch. The Window Server changes and delivers the pointer events to the client application, as shown in the following diagram. </p> <fig id="GUID-4A02299F-8401-5761-863C-91F0338731DA"><title>
+             Pointer events 
+          </title> <image href="GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e168668_href.png" placement="inline"/></fig> <p>Pointer-related events move from the driver to the application. The <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita"><apiname>TRawEvent</apiname></xref>, <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent</apiname></xref> and <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref> classes encapsulate the event information. </p> </section> <section><title>Key concepts/terms</title> <p>The following terms are introduced here and are used throughout the advanced pointer documentation: </p> <dl><dlentry><dt>Pointer</dt> <dd><p>A device that points at the screen, for example, a mouse, pen, finger, or touchpad. </p> </dd> </dlentry> <dlentry><dt>Multi-pointer support</dt> <dd><p>Handling more than one pointer at the same time. </p> </dd> </dlentry> <dlentry><dt>Proximity</dt> <dd><p>Proximity in this context means the distance of the pointer from the mobile device. Sensors detect the value of the proximity of the pointer from the mobile device. </p> </dd> </dlentry> <dlentry><dt>Pressure</dt> <dd><p>Pressure in this context is a value that indicates the force applied to the mobile device by the pointer. Sensors detect the value of the pressure of the pointer on the mobile device. </p> </dd> </dlentry> </dl> </section> <section><title>Logical model of pointing devices</title> <p>A logical model is used to handle all of the different pointing devices correctly. In this logical model, the pointer is <b>performing an action</b> when any of the following scenarios occur: </p> <ul><li id="GUID-3A57E7AE-A8FB-5C2B-AC54-4F60DDD35783"><p>An <codeph>EButton1Down</codeph> event is sent to the client. </p> </li> <li id="GUID-BBD5660A-2A72-5F14-9A28-D7F31761F963"><p> <codeph>EDrag</codeph> events are sent to the client (optional). </p> </li> <li id="GUID-54B774E8-6BD8-51EB-9854-9953F95AFBF5"><p>An <codeph>EButton1Up</codeph> event is sent to the client. </p> </li> </ul> <p>Pointing devices can be in one of the following states: </p> <table id="GUID-AAE663FE-E94F-556B-B635-93DDD6C27902"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>State</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <b>Out of range</b>  </p> </entry> <entry><p>Not detected by the device's sensors. </p> </entry> </row> <row><entry><p> <b>Up</b>  </p> </entry> <entry><p>Detected by sensors, coordinates available, not performing an action. </p> </entry> </row> <row><entry><p> <b>Down</b>  </p> </entry> <entry><p>Detected by sensors, coordinates available, performing an action (as defined above). </p> </entry> </row> </tbody> </tgroup> </table> <p>The mapping between these states and physical actions performed by the user vary for different pointing device types (mouse, finger) and different phone models. Here are two example interpretations of physical pointing device states: </p> <ul><li id="GUID-E01E8EC4-8535-5FD4-980E-214FC7542717"><p> <b>Mouse</b>. An example interpretation by a driver of the physical state of a mouse is as follows: It is always in the <i>up</i> state except when the left button is pressed, when it is in the <i>down</i> state. It is never out of range. </p> </li> <li id="GUID-7CC705BF-FC6C-534B-B00B-0C07A6B9A856"><p> <b>Fingers with proximity support</b>. The following is an example interpretation of finger physical states when the device has proximity support (that is, it can measure the finger's proximity from the screen): </p> <ul><li id="GUID-F4F27FC9-F4F3-5475-8DA5-771B804828CD"><p> <i>Out of range</i> when proximity &gt; 10cm </p> </li> <li id="GUID-0B8F3832-24C1-5421-A224-5FFFC6EBA3F4"><p> <i>Up</i> when 1cm &lt; proximity &lt;= 10cm </p> </li> <li id="GUID-CE65B2EC-AD8E-5B9D-A514-07EC73137518"><p> <i> Down</i> when proximity &lt;= 1cm </p> </li> </ul> <p>In this way the finger can perform actions (for example, press buttons, drag items) without touching the screen. </p> </li> </ul> </section> <section><title>Multiple pointers</title> <p>The system handles multiple pointers at the same time by identifying each one with a number and sending pointer events separately for each of them. A field (<codeph>iPointerNumber</codeph>) in the pointer event classes (<xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita"><apiname>TRawEvent</apiname></xref> and the <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita"><apiname>TAdvancedPointerEvent</apiname></xref> class which extends <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>) identifies the pointer for which the event occurred. The order and frequency of pointer events depends on the driver of the pointing device. </p> <p>On each phone there is a pool of available pointer numbers, ranging from 0 to <codeph>HALData::EPointerNumberOfPointers</codeph> - 1. Every time the driver detects a new pointer coming into the range of the device, the driver assigns a number from the pool. After the pointer goes out of the range of the device, the number no longer identifies that particular pointer and the driver sends <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita#GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD/GUID-C7FB5C5F-B7E1-3738-B72D-1AD81699414F"><apiname>TRawEvent::EPointer3DOutOfRange</apiname></xref> with this pointer number. The number is then released back to the pool and may be reused to identify another pointer coming into the device's range. </p> </section> <section><title>Pressure and proximity</title> <p>The pressure of the pointer on the screen is represented as a positive integer. The proximity of the pointer to the screen is represented as a negative integer. It is up to the UI Platform to define units of pressure and proximity, which may be non-linear. In the <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita"><apiname>TRawEvent</apiname></xref> class, pressure and proximity are expressed in terms of the Z coordinate of the pointer. The definition of the Z coordinate is based on the assumption that the pointer is either hovering over the screen (proximity &lt; 0, pressure = 0) or touching the screen (proximity = 0, pressure &gt;= 0): </p> <ul><li id="GUID-21CB6F60-3076-5EBE-9900-D870C670FE5B"><p>If proximity &lt; 0 and pressure = 0 then the Z coordinate = proximity. </p> </li> <li id="GUID-B5EA992D-4F86-54E1-A64C-673691460945"><p>If proximity = 0 and pressure &gt;= 0 then the Z coordinate = pressure. </p> </li> </ul> <fig id="GUID-FCE3CEAF-CCF3-5472-AC15-5DF5F092AA5E"><title>
+             Relationships between the pointer proximity, pressure and z
+             coordinate 
+          </title> <image href="GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e168955_href.png" placement="inline"/></fig> </section> <section><title>API summary</title> <table id="GUID-07002499-484E-500E-AC57-4089AB0197E8"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-8BE90160-2C60-3582-82C8-4A108C7C0317.dita"><apiname>HALData</apiname></xref>  </p> </entry> <entry><p>Includes z coordinate, pressure precision and number of pointers. Also contains threshold values for proximity and pressure. </p> </entry> </row> <row><entry><p> <xref href="GUID-668CEA36-3933-3BBE-A980-CAB62617B4FD.dita"><apiname>TRawEvent</apiname></xref>  </p> </entry> <entry><p>Includes the pointer number and a structure for proximity and pressure data. </p> </entry> </row> <row><entry><p> <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWindowBase</apiname></xref>  </p> </entry> <entry><p>Enables advanced pointer events for the window. </p> </entry> </row> <row><entry><p> <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent</apiname></xref>  </p> </entry> <entry><p>Supports <codeph>TAdvancedPointerEvent</codeph> (derived from <codeph>TPointerEvent)</codeph>. </p> </entry> </row> <row><entry><p> <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>  </p> </entry> <entry><p>Includes event types for pressing and closeness. </p> </entry> </row> <row><entry><p> <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita"><apiname>TAdvancedPointerEvent</apiname></xref>  </p> </entry> <entry><p>Inherits from <codeph>TPointerEvent</codeph>. </p> <p>Provides capabilities for pressure, proximity and multi-touch support. </p> </entry> </row> <row><entry><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession</apiname></xref>  </p> </entry> <entry><p>Provides get and set methods to manipulate threshold values for proximity and pressure. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <ul><li id="GUID-CA055058-AAD6-5A89-BC7E-7B5E81FA8963"><p> <b>Enabling many pointers for a window</b>  </p> <p>Enables multiple pointers to act on one window. </p> </li> <li id="GUID-DBD49B85-207D-5722-8AE3-B00946899559"><p> <b>Enabling concurrent control of many objects</b>  </p> <p>Controls many objects on one or more windows with many pointers. </p> </li> <li id="GUID-AF442CD4-FDEC-5FF4-B8F9-6ED8CDB9E957"><p> <b>Getting z coordinates from TPointerEvent</b>  </p> <p>Reads the pressure and proximity values for a pointer. </p> </li> <li id="GUID-13E0E5DA-609A-52B3-A90A-9A84C3A8BF22"><p> <b>Pinch zooming</b>  </p> <p>Enables the user to zoom in and out of data by using two fingers to pinch an area of the screen. Pinch zooming is normally used in web-page, map, picture, chart and control applications. </p> </li> <li id="GUID-C038F18F-94DE-5391-A1F8-BEF83274D143"><p> <b>Responding to high pressure events</b>  </p> <p>As the pointer state changes, the pressure value can be checked. When it passes over a threshold value, the Window Server responds appropriately to the client. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita"><linktext>Pointer States and Event
+                Communication</linktext> </link> <link href="GUID-C60DC070-572B-5960-B394-550426FDB909.dita"><linktext>Advanced Pointer
+                Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C36CF76-6ED2-5674-908F-A3DF8930CEB0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9C36CF76-6ED2-5674-908F-A3DF8930CEB0" xml:lang="en"><title>How
+to renew a request from the active scheduler</title><shortdesc>This document describes how to maintain an outstanding request
+from an active scheduler.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>It is possible to maintain an outstanding request from the active scheduler,
+by overriding the <codeph>CActiveScheduler::WaitForAnyRequest()</codeph> function.</p>
+<p>In this case, it is useful for the active scheduler to have a data member
+which points to the active object for which it will maintain an outstanding
+request. Implement the active scheduler as follows:</p>
+<codeblock id="GUID-92FD6B7D-54E8-5E1D-828F-AEE77C45CA3A" xml:space="preserve">class CExampleScheduler : public CActiveScheduler
+    {
+public:
+    void Error (TInt aError) const;
+    void WaitForAnyRequest();
+    void SetActiveObject(CActiveConsole* aActiveConsole);
+private:
+    CActiveConsole* iActiveConsole;
+    };</codeblock>
+<codeblock id="GUID-156BDAD4-B9EB-55AB-827A-16739A66AC2D" xml:space="preserve">void CExampleScheduler::SetActiveObject(CActiveConsole* aActiveConsole)
+    {
+    iActiveConsole = aActiveConsole;
+    }</codeblock>
+<p>where <codeph>iActiveConsole</codeph> is a pointer to an active object,
+initialized by call to <codeph>SetActiveObject()</codeph> during the construction
+of the controlling active object:</p>
+<codeblock id="GUID-721C2A53-CE4F-5C37-9599-DE359A586C9C" xml:space="preserve">void CMessageKeyProcessor::ConstructL()
+    {
+    CActiveScheduler::Add(this);
+    (CExampleScheduler*)(CActiveScheduler::Current())-&gt;SetActiveObject(this);
+    }</codeblock>
+<p>Now override <codeph>CActiveScheduler::WaitForAnyRequest()</codeph>:</p>
+<codeblock id="GUID-7646ED79-B891-5F94-BCBC-37A025FA5270" xml:space="preserve">void CExampleScheduler::WaitForAnyRequest()
+    {
+    if (!(iActiveConsole-&gt;IsActive()))
+        {
+        iActiveConsole-&gt;RequestCharacter();
+        }
+    CActiveScheduler::WaitForAnyRequest();
+    }</codeblock>
+<section id="GUID-52635F6A-E5F8-4F08-A77F-136FC80C39BF"><title>Notes</title> <ul>
+<li id="GUID-76CC4644-1909-5423-BF85-44F6AA4053A3"><p>The state of the active
+request flag is examined and a request is not issued if it is active. This
+check is important because the function may be called as a result of other
+active objects completing (for example, a timed messenger) and in these cases
+it would be inappropriate to renew the keyboard service request.</p> </li>
+<li id="GUID-5DA7C2E5-4BB2-54B1-9800-53FB2E41793D"><p>It is no longer necessary
+to call <codeph>RequestCharacter()</codeph> either before starting the active
+scheduler, or as part of key processing.</p> </li>
+<li id="GUID-7535854A-24C9-581C-9B49-FE17E2252E8E"><p>The static function <codeph>CActiveScheduler::Current()</codeph> is
+used to fetch a pointer to the currently installed active scheduler (in this
+example, an object of type <codeph>CExampleScheduler</codeph>). This is necessary
+in order to access the <codeph>SetActiveObject()</codeph> member function
+of <codeph>CExampleScheduler</codeph>.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF" xml:lang="en"><title>JPEG Exif Plug-in Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230"><title>Descriptors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Descriptors are the classes that Symbian platform C++ uses to manage strings. They are fundamental to the Symbian platform, and an excellent example of the difference of approach between non-OO and OO designs. </p> <section><title>Overview</title> <p>In C, a string such as </p> <codeblock id="GUID-D12A339F-7ADE-5BDE-A8B3-59AB67E2BD8B" xml:space="preserve">char* hello="hello";</codeblock> <p>causes some memory to be set aside containing the six characters 'h', 'e', 'l', 'l', 'o', '\0'. A function such as <codeph>strlen()</codeph> works by scanning the bytes starting from the beginning, and counting until it reaches the trailing null character. If you wish to extend the string, you need to know how much memory is allocated to it. </p> <p>In Symbian platform C++ however, strings are managed using a family of classes called descriptors. The abstract descriptor classes define common interfaces for all descriptor classes. Buffer, pointer, and heap descriptor classes provide implementations of the abstract descriptor interfaces, and provide different methods of storing the data. </p> </section> <section><title>Abstract descriptors</title> <p>We can represent the basic requirements for strings by two abstract classes: <codeph>TDesC</codeph> and <codeph>TDes</codeph>. </p> <p> <codeph>TDesC</codeph> is a constant, or non-modifiable, descriptor. It has an address and a length. Using a class like this, you can do any manipulations to a string, provided they do not alter the data. As a consequence, the <codeph>TDesC</codeph> class has many non-modifying functions. </p> <p> <codeph>TDes</codeph> is a modifiable descriptor: it has, in addition, a maximum length. This allows the data to be manipulated, extended or contracted, provided it does not exceed the maximum length. As a consequence, <codeph>TDes</codeph> has many modifying functions which allow string manipulation. </p> <p>It is a fundamental aspect of descriptors that they do not allow modification to exceed the allocated length. Other classes are provided to allow this, for instance <codeph>CBufBase</codeph> and derived classes. If a <codeph>TDes</codeph> function causes overflow, a panic will occur. </p> <p>Because <codeph>TDesC</codeph> and <codeph>TDes</codeph> define all the functions needed to access and manipulate string and memory data, many functions take a <codeph>const TDesC&amp;</codeph> parameter if they need to access data, or a <codeph>TDes&amp;</codeph> parameter if they need to modify it. </p> </section> <section><title>Pointer descriptor</title> <p>The abstract descriptor classes have several implementations. The simplest are pointer descriptors. </p> <p> <codeph>TPtrC</codeph> just has length and address: its representation needs just two machine words. A <codeph>TPtrC</codeph> may be set up to describe any existing data. A <codeph>TPtr</codeph> adds a maximum length, and so may be used to describe a buffer which is perhaps only partially allocated. </p> <fig id="GUID-07AAB2BD-6645-5E19-A69D-C7BDD770FBF6"><image href="GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e3275_href.png" placement="inline"/></fig> <p> <codeph>TPtrC</codeph> and <codeph>TPtr</codeph> are somewhat like C <codeph>char*</codeph> pointers. But because the length is contained in the descriptor itself, there is no need to scan for trailing null characters, or to allocate room for them. </p> </section> <section><title>Buffer descriptors</title> <p>Buffer descriptors, <codeph>TBufC</codeph> and <codeph>TBuf</codeph>, contain their data as part of themselves, like <codeph>char[]</codeph> arrays in C. </p> <fig id="GUID-2D00C669-3E47-5352-9730-73035D059B15"><image href="GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e3307_href.png" placement="inline"/></fig> <p>These descriptor classes exploit C++'s template mechanism, using an integer parameter to specify the length. </p> </section> <section><title>Heap descriptors</title> <p>Heap descriptors contain their data in heap cell. These are used when you do not know the length required for a buffer at build time, but decide it at run-time. This is like <codeph>(char*) malloc(length+1)</codeph> in C. </p> <p>The non-modifiable heap descriptor type, <codeph>HBufC</codeph>, is allocated on the heap. They are always referred to through an <codeph>HBufC*</codeph>, rather than an <codeph>HBufC</codeph> directly: </p> <fig id="GUID-C2909A73-C585-5A0B-B0B8-15BBB05EBCAE"><image href="GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e3336_href.png" placement="inline"/></fig> <p>The modifiable heap descriptor type, <codeph>RBuf</codeph>, can be created on the stack, but contains a pointer to data on the heap. This is similar to a <codeph>TPtr</codeph> pointer descriptor, but an <codeph>RBuf</codeph> owns the data that it points to, and is responsible for freeing the memory when it is closed. An <codeph>RBuf</codeph> object can allocate its own buffer, take ownership of a pre-existing section of allocated memory, or take ownership of a pre-existing heap descriptor. </p> <fig id="GUID-084AC324-8928-53FE-8CF5-75A544522AD8"><image href="GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e3354_href.png" placement="inline"/></fig> <p> <codeph>RBuf</codeph> is easier to use than <codeph>HBufC</codeph>, so should generally be preferred. <codeph>RBuf</codeph> was only introduced in version 8.0, however, so older code and APIs use <codeph>HBufC</codeph>. </p> </section> <section><title>Descriptor classes</title> <p>The complete descriptor class hierarchy is </p> <fig id="GUID-9FA30B6B-12C7-58CB-92B6-684053EE9FCD"><image href="GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e3380_href.png" placement="inline"/></fig> <p>It represents an elegant use of OO. The <codeph>TBufCBase</codeph> class is used as an implementation convenience, which is also a frequent OO idiom (though it should be used with caution). </p> <p>Versions of the descriptors classes are available that store 16-bit or 8-bit wide items. When using descriptors for strings, you should always use classes such as <codeph>TDes</codeph> etc. These classes are <codeph>typedef</codeph> ed to use the 16-bit implementations, such as <codeph>TDes16</codeph> etc. </p> <p>Because descriptors may contain any data, including nulls, they may also be used to refer to byte data and general buffers. In these contexts, you should use the 8-bit implementations, such as <codeph>TDes8</codeph>, directly. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-7-1-1-5-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-7-1-1-5-1-4-1" xml:lang="en"><title>Resource
+compiler tool: rcomp</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-7-1-1-5-1-4-1-2-1"><title>Purpose</title> <p>The
+resource compiler, <filepath>rcomp</filepath>, compiles source <filepath>rss</filepath> resource
+files into a <filepath>rsc</filepath> resource data file which can be used
+by applications, and a <filepath>rsg</filepath> resource header file. The
+operation of the resource compiler is usually wrapped in an <filepath>abld</filepath> batch
+file. That provides the most commonly used <filepath>rcomp</filepath> functionality,
+but does not provide some of the debugging options available directly through <filepath>rcomp</filepath>. </p><p><b>Note</b>:
+From Symbian^4 onwards, <filepath>rcomp</filepath> supports long strings and
+supplementary characters (not included in code point range of BMP) of the
+range <codeph>0x10000</codeph> to <codeph>0x10ffff</codeph> in rss files.</p> </section>
+<section id="GUID-C8BD2B09-0D01-4CE3-B575-0A076F1E926D"><title>Command line syntax</title><userinput>rcomp [—v] [—p] [—l]
+[—force] [—u] [—o <varname>DataOutputFile</varname>] [-{<varname>uid2</varname>,<varname>uid3</varname> }]
+[—h <varname>HeaderOutputFile</varname>] [—s <varname>SourceFileName</varname>]
+[—i <varname>BaseInputFileName</varname>]</userinput> <p><b>Arguments</b> </p> <table id="GUID-787D72D2-564C-569A-B7C4-B244DD46C87E">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>-v</codeph>  </p> </entry>
+<entry><p>verbose output. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-p</codeph>  </p> </entry>
+<entry><p>parser debugging </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-l</codeph>  </p> </entry>
+<entry><p>Check localisation comments </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-force</codeph>  </p> </entry>
+<entry><p>Emit warnings if the localisation comment tags are not present </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-u</codeph>  </p> </entry>
+<entry><p>generate Unicode resource binary </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-o</codeph>  <varname>DataOutputFile</varname>  </p> </entry>
+<entry><p>Specify full path and name for data output file <varname>DataOutputFile</varname>.
+If this is not specified, no data output file is created. </p> </entry>
+</row>
+<row>
+<entry><p>[-{<varname>uid2</varname>,<varname>uid3</varname> }] </p> </entry>
+<entry><p>Second and third UIDs for the resource file </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-h</codeph>  <varname>HeaderOutputFile</varname>  </p> </entry>
+<entry><p>Specify header output file <varname>HeaderOutputFile</varname>;
+this is the name only, and does not include the path. If this is not specified,
+no header output file is created. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-s</codeph>  <varname>SourceFileName</varname>  </p> </entry>
+<entry><p>Specify resource compiler source file <varname>SourceFileName</varname> (output
+of pre-processor <varname>BaseInputFileName</varname>.rpp). If not specified,
+or specified as <codeph>-s-</codeph>, source is read from the standard input. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-i</codeph>  <varname>BaseInputFileName</varname>  </p> </entry>
+<entry><p>The file given to the pre-processor </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Output files</b> </p> <table id="GUID-2CF9D84F-B657-56FF-8AB3-DF14CE693ED5">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <varname>DataOutputFile</varname>  </p> </entry>
+<entry><p>The resource data referred to by the application at run-time. Note
+that the generated file can have any name. However, before the resource file
+can be used it must be renamed to have an extension <filepath>.rsc</filepath>. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>HeaderOutputFile</varname>  </p> </entry>
+<entry><p>The generated header file, which contains <codeph>#define</codeph> statements
+for each resource defined in the source file. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C5A86D2-E602-55AE-B54B-8511E70CD23D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-9C5A86D2-E602-55AE-B54B-8511E70CD23D"><title>Send Dual Tone Multi Frequency (DTMF) Tutorial </title><shortdesc>This tutorial describes how to send DTMF tones with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-8C057CAF-1357-5601-A1DF-C39BA93C0288"> <step id="GUID-FA2F0A51-0AF8-5E40-9E94-CDE2EF395A3B"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-CB487FDE-4DF8-5BB3-A562-316DF4E1E8D3"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::SendDTMFTones()</apiname></xref> to transmit a sequence of DTMF tones across the currently active call </info> <info>The sequence of tones is a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TDesC</apiname></xref> string. It contains one or more occurrences of the numbers 0 to 9, * and #. </info> </step> <step id="GUID-F0797883-2489-5054-B7C2-8071EBE1F12B"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ESendDTMFTonesCancel</apiname></xref> to cancel the asynchronous request. </info> </step> </steps> <example id="GUID-BB3EA31B-FC0D-5107-A7C0-D57BD66CC0D1"><title>Send DTMF example</title> <p>This example sends the string <codeph>123456789</codeph>: </p> <codeblock id="GUID-AEB5A9BF-3576-5544-81CE-2D6DB981D7F0" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+_LIT(KTheTones, "123456789");
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;SendDTMFTones(iStatus, KTheTones);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The tones were sent successfully;
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::ESendDTMFTonesCancel);
+    }
+</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9C6D94B2-8F03-5A4D-9AEC-7C3FEA0E1ACA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9C6D94B2-8F03-5A4D-9AEC-7C3FEA0E1ACA"><title>Dictionary read streams</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Applications must construct an <codeph>RDictionaryReadStream</codeph> object before they can read from a stream located in a dictionary store. </p> <p>The dictionary store in which the stream is located and the UID associated with that stream are specified when the <codeph>RDictionaryReadStream</codeph> is opened.</p> <p>The following code fragment is typical. <codeph>store</codeph> is a pointer to an opened dictionary store. <codeph>RDictionaryReadStream::OpenLC()</codeph> opens the stream associated with the UID <codeph>theuid</codeph>:</p> <codeblock id="GUID-DDAF541C-43E2-54D0-A4BD-1484F208A6F1" xml:space="preserve">...
+TUid theuid;
+CDictionaryStore* store;
+...
+RDictionaryReadStream instream;
+instream.OpenLC(*store,theuid);
+TSomeData data;
+instream &gt;&gt; data;
+CleanupStack::PopAndDestroy();
+...</codeblock> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e355954_href.png has changed
Binary file Symbian3/SDK/Source/GUID-9C848E60-DD02-4787-90F3-1857AC3C3D1A_d0e62025_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9CA1C115-2DA3-59A8-AAE7-E99928B889BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-9CA1C115-2DA3-59A8-AAE7-E99928B889BE"><title>Socket Server Reference (Partner version)</title><shortdesc>This topic provides a summary of related documentation for the Socket Server APIs restricted to Partners. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><table id="GUID-6AFD983C-B5C5-5F89-8D4B-2433CE459DBD"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Client application APIs</entry> <entry>Header</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref>  </p> </entry> <entry><p>es_connectionserv.h </p> </entry> <entry><p>Provides access to the comms management plane. </p> </entry> </row> </tbody> </tgroup> </table> <section><p> </p> </section> <table id="GUID-B2962295-9E36-5DDB-BF33-F99B249CFF14"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Plug-in Server APIs</entry> <entry>Header</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-555339E4-203F-360E-9382-51CFD46FCE00.dita"><apiname>AMobilityProtocolReq</apiname></xref>  </p> </entry> <entry><p>ss_mobility_apiext.h </p> </entry> <entry><p>Interface to be implemented by the client to support mobility API extension on the server side. The client is a protocol implementation plug-in. </p> </entry> </row> <row><entry><p> <xref href="GUID-7B832980-F14D-325A-88BA-E7B4C0192CD5.dita"><apiname>CCommsMobilitySrvResp</apiname></xref>  </p> </entry> <entry><p>ss_mobility_apiext.h </p> </entry> <entry><p>Interface to be implemented by the client. The client is a protocol implementation plug-in. The interface is a Server side mobility response API extension. This response is called from <xref href="GUID-555339E4-203F-360E-9382-51CFD46FCE00.dita#GUID-555339E4-203F-360E-9382-51CFD46FCE00/GUID-8444F94E-2BB3-37C4-BD1B-A5B204266F67"><apiname>AMobilityProtocolReq::SubscribeForMessage()</apiname></xref>  </p> </entry> </row> </tbody> </tgroup> </table> <section><title>Test programs</title> <p>None </p> </section> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9CB10936-3201-546D-BC81-B53293EE1933.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9CB10936-3201-546D-BC81-B53293EE1933" xml:lang="en"><title>Configuring Security Components</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Security Config contains security ROM build-time configuration files. Device creators use the configuration files to customize the behavior of security components. This section provides detailed description about the configuration settings of specific security concepts.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e237829_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D00655C-AFBA-5DF7-B11B-6B2355BDF08D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9D00655C-AFBA-5DF7-B11B-6B2355BDF08D"><title>Using Semaphores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Semaphores are provided to synchronise co-operating threads. They are Kernel objects and, as such, are managed by the Kernel.</p> <p>Access to a semaphore is through an RSemaphore handle.</p> <p>The semaphores are counting semaphores, having a <codeph>TInt</codeph> count value that is incremented by calling the <codeph>Signal()</codeph> member function of the semaphore handle and decremented by calling the <codeph>Wait()</codeph> member function of the semaphore handle. A semaphore with a negative value implies that a thread must wait for the completion of some event.</p> <p>The mechanism by which a thread waits on a semaphore is part of the overall management of thread scheduling.</p> <p>For general applications, it is not common to explicitly create a semaphore; most applications are interested in making asynchronous requests to service providers. When a thread is created, a <keyword>request
+        semaphore</keyword> is also created that support asynchronous requests.</p> <p>After making one or more asynchronous requests, a thread calls User::WaitForAnyRequest() to wait for one of the requests to complete or calls User::WaitForRequest() to wait for a specific request to complete. A service provider calls User::RequestComplete() to signal request completion.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e239986_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D278187-8B5E-581D-9869-EE8861048F93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9D278187-8B5E-581D-9869-EE8861048F93" xml:lang="en"><title>Dynamic
+Link Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5B4A95B4-FE2E-4541-B185-1B4590DE5974"><title>Introduction</title> <p>A
+Dynamic Link Library (DLL) contains an executable code that can be shared
+by many processes in a system at any one time. A program can link against
+a DLL at compile time, meaning that the linker will match the DLL's symbols
+(such as function names and variables) with references from the program and
+ascertain the address within the DLL of the functions or variables. </p> <p>Alternatively
+a program can dynamically load a DLL into memory during execution, locate
+the address of a symbol, use it and then unload the DLL. Traditionally and
+for greater memory efficiency, Symbian platform links by ordinal, whereas
+Unix-like operating systems link by name. The following sections provide example
+code to illustrate how the DLL loader works with each operating system. </p><p>The
+Symbian platform v9.3 kernel supports all functionalities of P.I.P.S. libraries
+- referred to as "P.I.P.S.- ready". Pre v9.3 the kernel only supports the
+Symbian platform- standard ordinal lookup in DLLs; it does not support symbolic
+lookup. Thus the function <codeph>dlsym()</codeph> cannot be used with a symbolic
+name. To overcome this restriction, pass the function's ordinal number as
+symbol parameter refer the library's list of exports (the DEF file) for the
+function's ordinal number. For example, instead of: <codeph>dlsym(&amp;handle,
+"foo")</codeph> use <codeph>dlsym (&amp;handle, "3")</codeph> where the function <codeph>foo()</codeph> has
+ordinal 3.</p> </section>
+<section id="GUID-CCE3F3DC-307A-41F2-BAB4-523834C12E93"><title>Using shared
+libraries in a Unix-like environment</title><p>The following code shows how
+a shared library is dynamically loaded and used in a Unix-like environment
+using the <codeph>dl</codeph> interface.</p><codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+  //Handle
+  void* dll_handle;
+
+  //Function prototype
+  void (*printSum)(int a, int b);
+
+  //Error message
+  const char* errorMsg;
+ 
+  //Filename of dll to load 
+  char dllFileName[] = "/root/PortDoc/Example6/dll/shareddll";
+
+  //Load the dll
+  dll_handle = dlopen(dllFileName, RTLD_LAZY);
+  if (!dll_handle)
+  {
+     fprintf(stderr, "Error during load of library: %s\n", dlerror()); 
+     return EXIT_FAILURE;
+  }
+
+  //Find the symbol
+  printSum = dlsym(dll_handle, "printSum");   
+
+  //Get the error message 
+  errorMsg = dlerror();
+  if (errorMsg)
+  {
+     fprintf(stderr, "Error during symbol lookup: %s\n", errorMsg);
+     return EXIT_FAILURE;
+  } 
+
+  //Now call the function
+  printSum(4, 6);
+
+  //Dispose of the DLL
+  dlclose(dll_handle);
+
+  return EXIT_SUCCESS;
+}
+</codeblock><p>As an example, the <codeph>shareddll</codeph> might have a
+function such as:</p><codeblock xml:space="preserve">void printSum(int a, int b)
+    {
+    printf("Result is : %d\n", a + b);
+    }</codeblock></section>
+<section id="GUID-7C649A95-3F73-454B-AAD4-80889D6B34E3"><title>DLLs on Symbian
+platform(prior to v9.3)</title><p>Symbian platform programs uses the function
+or variable's ordinal position within a DLL to link with DLLs. For example,
+implementing a shared DLL on Symbian platform could look like this:</p><codeblock xml:space="preserve">EXPORT_C void printSum(int a, int b)
+    {
+    printf("Result is : %d\n", a + b);
+    }</codeblock><p>Compiling this will generate a <filepath>.def</filepath> file,
+which contains the ordinals of each symbol in the DLL. For instance:</p><codeblock xml:space="preserve">EXPORTS
+    printSum @ 1 NONAME</codeblock><p>Here, the <filepath>.def</filepath> shows
+that the ordinal for the <codeph>printSum()</codeph> function is 1. </p><p>The
+following code shows how the <codeph>main()</codeph> function is changed in
+P.I.P.S.. </p><codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+  //Handle
+  void* dll_handle;
+
+  //Function prototype
+  void (*printSum)(int a, int b);
+
+  //Error message
+  const char* errorMsg;
+ 
+  //Filename of dll to load 
+  char dllFileName[] = "/root/PortDoc/Example6/dll/shareddll";
+
+  //Load the dll
+  dll_handle = dlopen(dllFileName, RTLD_LAZY);
+  if (!dll_handle)
+  {
+     fprintf(stderr, "Error during load of library: %s\n", dlerror()); 
+     return EXIT_FAILURE;
+  }
+
+  //Find the symbol, using the ordinal
+  printSum = dlsym(dll_handle, "1");   
+
+  //Get the error message 
+  errorMsg = dlerror();
+  if (errorMsg)
+  {
+     fprintf(stderr, "Error during symbol lookup: %s\n", errorMsg);
+     return EXIT_FAILURE;
+  } 
+
+  //Now call the function
+  printSum(4, 6);
+
+  //Dispose of the DLL
+  dlclose(dll_handle);
+
+  return EXIT_SUCCESS;
+}
+</codeblock><p>Note that for the Symbian library loader, the mode parameter
+for the <xref href="GUID-51FB35C0-CFC2-357A-8ACA-FE7480C53AD3.dita"><apiname>dlopen()</apiname></xref> function is irrelevant and the library
+will be loaded immediately. So although <codeph>RTLD_LAZY</codeph> is the
+mode parameter in the example, it will behave just as <codeph>RTLD_NOW</codeph>.
+Also note that there is no facility to call any library constructor and destructor
+functions using <codeph>__attribute((constructor))</codeph> or <codeph>__attribute((destructor))</codeph>. </p></section>
+<section id="GUID-DEF804DF-CECC-4739-9ACD-24F46A945F6E"><title>DLLs on Symbian
+platform (v9.3 onwards)</title><p>P.I.P.S. provides APIs from libdl to support
+dynamic lookup by name, which is used in Unix-like platforms, instead of the
+native Symbian platform lookup by ordinal mechanism. Lookup by name is possible
+thanks to the new libdl, which in turn uses the existing <ph>RLibrary</ph> functions
+to load and unload DLLs. </p><p>A symbol name lookup version of the dlsym()
+function is provided, similar to UNIX®, which does not need any special treatment
+(the example shown in the <b>Using Shared libraries in a Unix-like environment</b> section
+will suffice). However, it is still necessary to generate the <filepath>.def</filepath> file
+for the DLL. The following sections provides a brief summary of the functionality
+provided by <codeph>libdl</codeph>. </p><p>The <codeph>libdl</codeph> APIs,
+which support dynamic lookup by name, are described in the following table:</p><table id="GUID-71331BB8-6E91-4239-9183-F4B51A383F06">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><b>libdl API</b></p></entry>
+<entry><p><b>Description</b></p></entry>
+</row>
+<row>
+<entry><codeph>void *dlopen (const char *path, int mode) </codeph></entry>
+<entry><p>Call <xref href="GUID-51FB35C0-CFC2-357A-8ACA-FE7480C53AD3.dita"><apiname>dlopen()</apiname></xref> to gain access to symbols of any
+shared library or DLL. If <xref href="GUID-51FB35C0-CFC2-357A-8ACA-FE7480C53AD3.dita"><apiname>dlopen()</apiname></xref> fails for any reason,
+it will return a NULL. The default search path for the library can be provided
+in the environment variable <codeph>LD_LIBRARY_PATH</codeph>. </p></entry>
+</row>
+<row>
+<entry><codeph>void *dlsym(void *handle, const char *symbol)</codeph></entry>
+<entry><p>The <xref href="GUID-6B94A42A-888B-3761-84DA-4FADC6D3B126.dita"><apiname>dlsym()</apiname></xref> function returns the address binding
+of the symbol described in the null-terminated character string 'symbol',
+as it occurs in the shared object identified by 'handle'. </p></entry>
+</row>
+<row>
+<entry><codeph>int dlclose(void *handle)</codeph></entry>
+<entry><p>Call <xref href="GUID-F74DC7CB-1E3F-368E-99A7-DD4B38FF7EF0.dita"><apiname>dlclose()</apiname></xref> with a valid dlopen-ed handle
+to remove it from the cache list maintained by <xref href="GUID-51FB35C0-CFC2-357A-8ACA-FE7480C53AD3.dita"><apiname>dlopen()</apiname></xref>.
+If it fails, dlclose() will return -1; otherwise, it will return 0. </p></entry>
+</row>
+<row>
+<entry><codeph>char *dlerror(void)</codeph></entry>
+<entry><p>Call <xref href="GUID-F5B2CFAB-99F5-3A24-8F6C-ECAA61922FB0.dita"><apiname>dlerror()</apiname></xref> to obtain the most recent error
+that occurred due to any of the dl routines, that is, <xref href="GUID-51FB35C0-CFC2-357A-8ACA-FE7480C53AD3.dita"><apiname>dlopen()</apiname></xref>, <xref href="GUID-6B94A42A-888B-3761-84DA-4FADC6D3B126.dita"><apiname>dlsym()</apiname></xref>,
+or <xref href="GUID-F74DC7CB-1E3F-368E-99A7-DD4B38FF7EF0.dita"><apiname>dlclose()</apiname></xref>. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p/></section>
+</conbody><related-links>
+<link href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-3CA8FF29-79B4-5D43-8A23-EDB136BF7A8F">
+<linktext>One Definition Rule - warning</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B" xml:lang="en"><title>How
+to construct and manipulate a singly linked list</title><shortdesc>Code fragments showing how to create a singly linked list and how
+to manipulate the list and the elements of the list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following code fragments show how a singly linked list can be constructed
+and manipulated. The list consists of instances of an example class, <codeph>CItem</codeph>,
+which forms items on a stack implemented as a singly linked list using the <codeph>iSlink</codeph> data
+member as the link object. In this example, a <codeph>CItem</codeph> object
+can contain an item of text implemented as an <codeph>HBufC</codeph>.</p>
+<p>The class is declared as:</p>
+<codeblock id="GUID-EF742BDF-7292-51DF-B7D4-6219D9CDFFCE" xml:space="preserve">class CItem : public CBase
+    {
+public  :
+    static CItem* NewL(const TDesC&amp; aText);
+    static CItem* NewLC(const TDesC&amp; aText); 
+                  CItem();
+    virtual       ~CItem();
+    const HBufC*  GetText(); 
+public  :        
+    static const  TInt iOffset;
+private :
+    void          ConstructL(const TDesC&amp; aText);
+private :    
+    TSglQueLink   iSlink;
+    HBufC*        iText;
+    friend  class CStack;
+    };</codeblock>
+<p>The <codeph>CItem</codeph> member functions are implemented as:</p>
+<codeblock id="GUID-2B4A1C64-7C4C-5950-93F0-2A80A0AEF343" xml:space="preserve">const TInt CItem::iOffset = _FOFF(CItem,iSlink);</codeblock>
+<codeblock id="GUID-67788B52-9B64-556B-B4BF-D940C49B2E3E" xml:space="preserve">CItem* CItem::NewLC(const TDesC&amp; aText)
+    {
+    CItem* self = new (ELeave) CItem();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL(aText);
+    return self;
+    }</codeblock>
+<codeblock id="GUID-5CC6AD98-E877-5699-9BAC-14DE0A4413E2" xml:space="preserve">CItem* CItem::NewL(const TDesC&amp; aText)
+    {
+    CItem* self = CItem::NewLC(aText);
+    CleanupStack::Pop();
+    return self;
+    }</codeblock>
+<codeblock id="GUID-14D5FB76-1FC9-5D7D-A35C-9AC87222DA64" xml:space="preserve">void CItem::ConstructL(const TDesC&amp; aText)
+    {
+    iText    = aText.AllocL();
+    }</codeblock>
+<codeblock id="GUID-44FB4D1A-D567-5181-B425-D988BF364A55" xml:space="preserve">CItem::CItem()
+    {}</codeblock>
+<codeblock id="GUID-DF4603B2-56E0-5CC1-8920-27C04FCE2899" xml:space="preserve">CItem::~CItem()
+    {
+    delete iText;
+    }</codeblock>
+<codeblock id="GUID-E306FFA8-9A93-5047-9999-A36DE087D9BF" xml:space="preserve">const HBufC* CItem::GetText()
+    {
+    return (iText);
+    }
+</codeblock>
+<p>As part of the construction process, a <codeph>CItem</codeph> constructs
+an <codeph>HBufC</codeph> of the correct length and copies the content of
+the descriptor parameter into it.</p>
+<p>The stack is implemented by an instance of the example class <codeph>CStack</codeph>.
+This maintains the stack by adding <codeph>CItem</codeph> objects onto the
+end of the list and removing them from the end of the list. When removing
+them from the end of the list, a pointer to the removed <codeph>CItem</codeph> object
+is returned.</p>
+<p>In this example, the list header, <codeph>iStack</codeph>, and the iterator, <codeph>iStackIter</codeph>,
+are declared as data members of the class and are constructed when the <codeph>CStack</codeph> object
+is constructed. A C++ constructor must be supplied so that <codeph>iStackIter</codeph> can
+be constructed. (<codeph>TSglQueIter</codeph> has no default constructor).</p>
+<p><codeph>AddToStack()</codeph> takes a <codeph>CItem</codeph> object and
+adds it to the end of the singly linked list.</p>
+<p><codeph>RemoveFromStack()</codeph> takes the <codeph>CItem</codeph> object
+at the end of the singly linked list, removes it from the list and returns
+a pointer to it.</p>
+<p>The <codeph>CStack</codeph> class is declared as:</p>
+<codeblock id="GUID-9640ACCC-5C02-5238-9866-C3E5F24BF256" xml:space="preserve">class CStack : public CBase
+    {
+public :
+    static CStack* NewL();
+    static CStack* NewLC();
+                   CStack();
+    void           Construct();
+    virtual        ~CStack();
+    CItem*         RemoveFromStack();
+    void           AddToStack(CItem&amp; anItem);
+private :
+    TSglQue&lt;CItem&gt;     iStack; 
+    TSglQueIter&lt;CItem&gt; iStackIter;
+    };
+</codeblock>
+<p>The <codeph>CStack</codeph> member functions are implemented as:</p>
+<codeblock id="GUID-6DB67609-DFD9-5C3E-B0DE-DCBF24E2004B" xml:space="preserve">CStack* CStack::NewLC()
+    {
+    CStack* self = CStack::NewL();
+    CleanupStack::PushL(self);
+    return self;
+    }</codeblock>
+<codeblock id="GUID-1A43592A-6670-5DB7-A66C-586F054DA96B" xml:space="preserve">CStack* CStack::NewL()
+    {
+    CStack* self = new (ELeave) CStack;
+    return self;
+    }</codeblock>
+<codeblock id="GUID-7B084689-CEFA-5F12-A112-F57E3969EF64" xml:space="preserve">CStack::CStack()
+    : iStack(CItem::iOffset),iStackIter(iStack) 
+    {}</codeblock>
+<section id="GUID-6C00AE42-5876-4C9B-8530-4E3BCEC12295"><title>Using the list
+iterator</title> <p>The C++ constructor is needed so that the list header
+(<codeph>iStack</codeph>) and the list iterator (<codeph>iStackIter</codeph>)
+can be properly constructed.</p> <p>Before destroying a <codeph>CStack</codeph> object,
+the list is destroyed. This is achieved using the iterator (<codeph>iStackIter</codeph>).
+The iterator pointer is set to point to each element in turn, removing that
+element from the list before destroying it.</p> <p>Once the iterator has reached
+the end of the list, the operator<codeph>++</codeph> returns <codeph>NULL</codeph>.</p> <p>The
+destruction process is safe if the list is empty; the statement <codeph>iStackIter.SetToFirst()</codeph> is
+harmless, the operator<codeph>++</codeph> returns <codeph>NULL</codeph> and
+execution of the body of the <codeph>while</codeph> loop never happens.</p> <codeblock id="GUID-05A85DC1-BA5A-52BD-BC3A-6DD27F050B3A" xml:space="preserve">CStack::~CStack()
+    {
+    CItem*  item;
+    
+    iStackIter.SetToFirst(); 
+    while ((item = iStackIter++) != NULL)
+        {
+        iStack.Remove(*item);
+        delete item;
+        };
+    }</codeblock> </section>
+<section id="GUID-9B58504D-1C1C-4D2C-93BB-085F04EA62B3"><title>Adding an element
+to the stack</title> <p>Adding an element to the stack simply involves adding
+the <codeph>CItem</codeph> object to the end of the list.</p> <codeblock id="GUID-819F3511-AFC1-57CB-A6B6-0A3A778B9737" xml:space="preserve">void CStack::AddToStack(CItem&amp; anItem)
+    {
+    iStack.AddLast(anItem);
+    }</codeblock> </section>
+<section id="GUID-99C58AE1-4EA3-41FA-82AF-C1B9D08FB57F"><title>Removing an
+element from the stack</title> <p>The <codeph>RemoveFromStack()</codeph> function
+returns <codeph>NULL</codeph>, if the list is empty, otherwise it just uses
+the <codeph>Last()</codeph> member function to return a pointer to the last
+element in the list before removing it.</p> <codeblock id="GUID-5BDC3F9B-1C99-534B-82CC-18731E3C22B9" xml:space="preserve">CItem* CStack::RemoveFromStack()
+    {
+    CItem* lastitem;
+    
+    if (iStack.IsEmpty())
+        return NULL;
+    
+    lastitem = iStack.Last();
+    iStack.Remove(*lastitem); 
+    
+    return (lastitem);
+    }</codeblock> </section>
+<section id="GUID-BC25EB70-D1D2-4045-8345-C002C17D9114"><title>Executing the
+code</title> <p>Executing the code results in a singly linked list of <codeph>CItem</codeph> objects
+each containing a pointer to an <codeph>HBufC</codeph> descriptor each of
+which, in turn, contains the text “8”, “89”, and so on through to “89ABCDEF”:</p> <codeblock id="GUID-F00B6DDF-54C8-541D-8688-FDD227DC48F4" xml:space="preserve">    {
+    CStack*  stack;
+    CItem*   item;
+    TBuf&lt;16&gt; buffer;
+    
+    TRAPD(leavecode,stack = CStack::NewL());
+    if (leavecode != KErrNone)
+        {
+        // Cannot create stack
+        return;
+        }</codeblock> <codeblock id="GUID-18506411-26D8-5866-A80E-D36BD20DFD01" xml:space="preserve">    for (TUint jj = 8; jj &lt; 16; jj++)
+        {
+        buffer.AppendNumUC(jj,EHex); 
+        TRAPD(leavecode,item = CItem::NewL(buffer));
+        if (leavecode != KErrNone)
+            {
+            // Cannot create item
+            delete stack;
+            return;
+            }
+        stack-&gt;AddToStack(*item);
+        }</codeblock> <p>as the following shows:</p> <fig id="GUID-27C947C7-3035-54A4-BA6E-C701C3007DD6">
+<title>Example singly linked list</title>
+<image href="GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e190046_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-CB47362B-7068-45AD-9D60-7D93174ED858"><title>Removing elements
+from list</title> <p>The following code removes each <codeph>CItem</codeph> element
+from the list, starting with the last and working through to the first until
+the list is empty.</p> <codeblock id="GUID-36122717-2CA8-5E9E-B223-4921860A4027" xml:space="preserve">    while ((item = stack-&gt;RemoveFromStack()) != NULL)
+        {
+        // item-&gt;GetText());can be used to access the text.
+        delete item;
+        };</codeblock> <codeblock id="GUID-7A4C3458-9676-5ED2-82DB-703C48F347DB" xml:space="preserve">    delete stack;</codeblock> <p>Note
+that unlike doubly linked lists, elements can only be added to the start or
+the end of a singly linked list. Elements <i>cannot</i> be added to the middle
+of the list.</p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e315122_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D56FF77-A20B-5BFB-8DE6-19CC4535DFED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-9D56FF77-A20B-5BFB-8DE6-19CC4535DFED"><title>Following a link to another table and finding a field by Id and by name: Tutorial</title><shortdesc>This tutorial shows you how to follow a link to a Symbian OS defined table. The tutorial also shows two methods to get the value of a field. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-E4B235C3-CD22-57E0-BC48-DDDB0A6AFFFC"><p>Before you start, you must understand: </p> <ul><li id="GUID-6C352504-E6D4-5C17-88A3-1563F3AEE53E"><p>the general concept of the Comms Database </p> </li> <li id="GUID-AC4D044B-3B8E-522A-AB9D-5EBA1BCCE299"><p>the specific concept of fields, records, links and tables </p> </li> <li id="GUID-51754AAB-7EE7-5FB4-869C-7FADD29951D9"><p>how to write and build application code to run on Symbian OS </p> </li> </ul> </prereq> <context id="GUID-A7FE99ED-D5CC-5F71-8B64-E0CCB1F8222E"><p>The tutorial shows you how to follow a link from a record in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-57197DDE-9DE0-5978-8F2F-D2E370489E3C">IAP</xref> table to a record in the service table. The tutorial then shows you how to find the "Bearer Speed" field by its Id and by its name in the linked record. </p> <p>The principles that apply here also apply to the other Symbian OS defined tables </p> </context> <steps id="GUID-02024A4A-F0D7-5EC0-BB5C-8BCC12D33BBB"><step id="GUID-FEB0F22C-F0F7-575F-9063-0D21D6708021"><cmd>Make sure that you have created a session. </cmd> </step> <step id="GUID-D7D8189E-EE40-5305-B993-26D9F28D3EC5"><cmd>Create the IAP record object in the tool or application process and prime it for the search for the service type "DialOutISP". </cmd> <info>Symbian OS defines the <codeph>CCDIAPRecord</codeph> class to represent a <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-57197DDE-9DE0-5978-8F2F-D2E370489E3C">IAP</xref> record. The class is a schema for the record. The class defines the fields and links that make a IAP record. </info> <info>Symbian OS defines <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-32E556BC-55C3-5FBD-9A60-9708139C20D6">unique numeric Id</xref> s for Symbian OS defined tables. The symbol <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPRecord</apiname></xref> defines the value of this Id for the IAP table. The Id allows the CommsDat API to retrieve the table from the Comms Database efficiently. </info> <stepxmp><codeblock id="GUID-31732ADA-3BC7-5D6E-8579-6CE700C2A9B7" xml:space="preserve">...
+// Create a single IAP record in memory and prime it with the type of service
+// that you want to find. In this case, the type of service is "DialOutISP".
+// This code fragment assumes that a session with the Comms Database has been created.
+// "iDb" is a pointer to a CMDBSession object
+
+_LIT(KISPType, "DialOutISP");
+TUint32 bearerSpeed;
+
+
+// Use the factory function CCDRecordBase::RecordFactoryL() to create the IAP record obejct. 
+//
+// Note:
+// 1. the template parameter CCDIAPRecord defines 
+//    the "IAP" record type.
+// 2. the unique numeric Id KCDTIdIAPRecord is passed as a parameter
+//    to the constructor.
+
+CCDIAPRecord* ptrSingleIAPRecord = static_cast&lt;CCDIAPRecord*&gt;(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); 
+
+
+// The storage for string or binary fields must be allocated
+// explicitly if set or reset by the application. Storage required for
+// storing data  retrieved from the database is handled by the implementation of the CommsDat API.
+//
+// Set the service type.
+ptrSingleIAPRecord-&gt;iServiceType.SetMaxLengthL(KISPType().Length());
+ptrSingleIAPRecord-&gt;iServiceType = KISPType; 
+
+
+// Note that you can replace the above two function calls with the 
+// single function call:
+//
+// ptrSingleIAPRecord-&gt;iServiceType.SetL(KISPType); 
+...</codeblock> </stepxmp> </step> <step id="GUID-A661444B-A268-56C5-81FF-B3AB0063BA9C"><cmd>Search for the first IAP record that has "DialOutISP" as the service type. If the record is found, load the associated service table record. </cmd> <stepxmp><codeblock id="GUID-E197DCA4-4E3D-5963-A548-8FD84F797C6B" xml:space="preserve">...
+if(ptrSingleIAPRecord-&gt;FindL(*iDb))
+    { 
+    // An IAP record with "DialOutISP" as the service type has
+    // been found and loaded into memory. 
+     
+    // Load the service table record associated with this IAP.
+    ptrSingleIAPRecord-&gt;iService.LoadL(*iDb);
+    ...</codeblock> </stepxmp> </step> <step id="GUID-5A28A3C4-BB43-52BF-8F98-00B125549A45"><cmd/><substeps id="GUID-B20735EC-2966-5C31-9591-8108A0A4BB5C"><substep id="GUID-76112AFB-54C4-55D8-AC6E-1B9D86CC35A7"><cmd>CASE 1 : Access the service record when you know the service type. This is the most effiecient method. </cmd> <stepxmp><codeblock id="GUID-316366CE-97B7-5093-8480-2AA021F764D5" xml:space="preserve">
+    ...
+    CCDDialOutISPRecord* ptrIspRecord = static_cast&lt;CCDDialOutISPRecord*&gt;(ptrSingleIAPRecord-&gt;iService.iLinkedRecord);
+    bearerSpeed = ptrIspRecord-&gt;iBearerSpeed;
+    ...</codeblock> </stepxmp> </substep> <substep id="GUID-2A8FE5F5-D7AD-5F95-A2D5-AD6DA1C4EDA0"><cmd>CASE 2: Access the service record when you do not know the service type. This is also the more general case and is slower than case 1. </cmd> <info>You can find a field by its Id, or you can find a field by its name. To find a field by its name is not recommended, because this operation is slow. </info> <stepxmp><codeblock id="GUID-0FDC8EF4-45FF-542B-87FD-042FC31F431C" xml:space="preserve">
+    ...
+    // Use the base class "CCDServiceRecordBase" instead of the more specific
+    // class "CCDDialOutISPRecord" [or any other specific class derived from "CCDServiceRecordBase"].
+    CCDServiceRecordBase* ptrServiceRecord = static_cast&lt;CCDServiceRecordBase*&gt;(ptrSingleIAPRecord-&gt;iService.iLinkedRecord);
+    CMDBField&lt;TUint32&gt;* field; 
+    ...
+
+    // Find a field by its Id
+
+    field = (CMDBField&lt;TUint32&gt;*)ptrServiceRecord-&gt;GetFieldByIdL(KCDTIdBearerSpeed);
+    bearerSpeed = *field;
+    ...
+
+   // Find a field by its name. Symbian OS defines KCDTypeNameBearerSpeed to represent 
+   // the name of the field.
+
+    TPtrC16 BearerName(KCDTypeNameBearerSpeed);
+    TInt valueType; 
+    field = (CMDBField&lt;TUint32&gt;*)ptrServiceRecord-&gt;GetFieldByNameL(BearerName,valueType);
+    bearerSpeed = *field;
+    ...
+    </codeblock> </stepxmp> </substep> </substeps> </step> <step id="GUID-5B8443D8-DA79-57E6-9FC4-6A36C158090F"><cmd>Clean up. </cmd> <stepxmp><codeblock id="GUID-0E70C9AB-49B2-5ECB-9262-3A251135B5F9" xml:space="preserve">
+    ...
+    //
+    // This also deletes "ptrSingleIAPRecord-&gt;iService.iLinkedRecord"     
+    //
+    delete ptrSingleIAPRecord;
+    ...        
+    }
+}</codeblock> </stepxmp> </step> </steps> </taskbody><related-links><link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database
+                concepts</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F" xml:lang="en"><title>Language
+Dependent Files</title><abstract><p>The text and the images that are required to be localized, must
+be defined in language-specific resource and icon files. You must specify
+the filenames and path of the resource files in the <filepath>PKG</filepath> file,
+for the resource files to be installed on the Symbian device. Based on the
+parameters specified in the <filepath>PKG</filepath> file, the resource files
+that are specific to the supported languages on the Symbian device are installed
+or the resource files for the language selected by the Symbian device user
+are installed. </p> <p>This section explains the ways of specifying resource
+files, based on the requirement for installing resource files for languages
+supported on the Symbian device, or language selected by the Symbian device
+user, during installation. </p> <ul>
+<li id="GUID-C3E6265B-3676-5B59-8A61-F244DA5C9632"><p> <xref href="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita#GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F/GUID-4756EAA2-C287-5A3C-9940-184A435EC556">Specific to the languages supported by the Symbian device</xref>  </p> </li>
+<li id="GUID-EF3BCF4E-6567-51AE-BB28-FAB70E0F5719"><p> <xref href="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita#GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F/GUID-B59B2FA0-AA8F-5FC0-AEF9-37C10AE74E62">Specific to the language selected by the Symbian device user</xref>  </p> </li>
+<li id="GUID-71E8A9E4-9EAA-5726-9B20-C591FFA227FF"><p> <xref href="GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F.dita#GUID-9D5F3B5E-37FB-5156-808B-F92519412A7F/GUID-B188FC32-F607-5927-85DB-6E6813DC1047">Specific to the languages supported by the Symbian device or language selected
+by Symbian device user</xref>  </p> </li>
+</ul></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-4756EAA2-C287-5A3C-9940-184A435EC556"><title>Specific to
+the languages supported by the Symbian device </title> <p>Specify each of
+the language-specific resource files within an IF conditional block and set
+the <codeph>SUPPORTED_LANGUAGE</codeph> parameter to a <xref href="GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita#GUID-31C133DE-F245-5992-9A41-20A99291E72A/GUID-1F01A43F-64F7-5C90-92D1-974356A6C386">TLanguage numerical value</xref>, as shown in the following code snippet: </p> <codeblock id="GUID-ED64C003-6656-53EF-AAD7-98F71C305874" xml:space="preserve">
+if supported_language=01 
+    "HelloWorld.r01"          -"!: \ resource\apps\HelloWorld.r01"
+endif
+
+if supported_language=02 
+    "HelloWorld.r02"          -"!: \ resource\apps\HelloWorld.r02"
+endif</codeblock> <p>During installation, the languages supported by the Symbian
+device are matched with the languages supported in the SIS file. The result
+is based on the following two conditions: </p> <ul>
+<li id="GUID-9D31BDA0-E407-5E7F-8906-E10473C03E34"><p>If an exact match is
+found, the files corresponding to that language are copied to the Symbian
+device. </p> <p>For example, if the SIS file specifies UK English(01), French(02)
+and Zulu(98), and the Symbian device supports only UK English(01) and French(02),
+during installation, only the files related to UK English(01) and French(02)
+are copied to the Symbian device. The files for Zulu(98) are not copied to
+the Symbian device. </p> </li>
+<li id="GUID-248D9FB8-EEE7-5362-B76D-5397CE21DE99"><p>If an exact match is
+not found for any of the device supported languages, the files for all equivalent
+languages (supported by the SIS files) corresponding to each of the device
+supported languages are copied to the Symbian device. </p> <p>For example,
+if the SIS file supports UK English(01), French(02) and International English(47),
+and the Symbian device supports only American English(10) then during installation,
+as an exact match for American English is not found, the files for UK English
+and International English (both equivalent match) are copied to the Symbian
+device. See <xref href="GUID-10A50B7C-63DB-599B-86C1-17989595CBD2.dita">Equivalent
+Languages Reference</xref> for a list of all language equivalents supported
+by Symbian Foundation. </p> </li>
+</ul> <p> <b>Important</b>: </p> <p>Language-specific resource files must
+have filenames with language-specific extensions. For example, the resource
+files for UK English(01) must have the filename as <filepath>Filename.r01</filepath>. </p> <p>If
+you use the <filepath>.rsc</filepath> file extension, as shown in the following
+code snippet, and if both the languages are supported on the Symbian device,
+the resource files of UK English(01) are overwritten by resource files of
+French (02) language during installation. </p> <codeblock id="GUID-6DB66C22-4CDC-51B1-B3E3-789567FCC3E0" xml:space="preserve">
+if supported_language=01 //UK English
+    "HelloWorld.r01"          -"!: \ resource\apps\HelloWorld.rsc" //do not use this extension format
+endif
+
+if supported_language=02 //French
+    "HelloWorld.r02"          -"!: \ resource\apps\HelloWorld.rsc"
+endif</codeblock> </section>
+<section id="GUID-B59B2FA0-AA8F-5FC0-AEF9-37C10AE74E62"><title>Specific to
+the language selected by the Symbian device user </title> <p>You can use one
+of the following formats: </p><ul>
+<li><p>Format1</p></li>
+<li><p>Format2</p></li>
+</ul> <p><b>Format1</b> </p> <p>Specify each of the language-specific resource
+files within an IF conditional block and set the <codeph>LANGUAGE</codeph> parameter
+to a <xref href="GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita#GUID-31C133DE-F245-5992-9A41-20A99291E72A/GUID-1F01A43F-64F7-5C90-92D1-974356A6C386">TLanguage
+numerical value</xref>, as shown in the following code snippet: </p> <codeblock id="GUID-FE86BD13-40C2-5F56-8630-542C56B6CFBE" xml:space="preserve">
+if language=01
+    "HelloWorld.r01"          -"!: \ resource\apps\HelloWorld.r01"
+endif
+
+if language=02
+    "HelloWorld.r02"          -"!: \ resource\apps\HelloWorld.r02"
+endif</codeblock> <p>During installation, Symbian device user is prompted
+to select a language. Based on the selection, the resource files for the selected
+language are installed. </p> <p>For example, if the SIS file specifies UK
+English(01) and French(02), Symbian device user is prompted to select UK English
+or French language for installation. Based on the selection, the resource
+files for the selected language are copied to the Symbian device. </p> <p>If
+the Symbian device supports only one language, the resource files for only
+that language are installed. In this scenario the Symbian device user is not
+prompted to select a language for installation. </p> <p><b>Format2</b> </p> <p>The
+syntax is as follows: </p> <codeblock id="GUID-E0599A9A-2174-5B99-8D2A-3F05BF4B3343" xml:space="preserve">{"source-filename1", "source-filename2", ...} - "destination-filename"[, install-options]</codeblock> <p>For example: </p> <codeblock id="GUID-9F400876-379E-55F8-B751-9EC04362BC0F" xml:space="preserve">{
+"examples\HelloWorld\HelloWorld.ruk"
+"examples\HelloWorld\HelloWorld.rfr"
+"examples\HelloWorld\HelloWorld.rzu"
+}-"!:\resource\apps\HelloWorld.rsc"</codeblock> <p>For a description of each
+argument, see <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita">Language-Neutral
+Files</xref>. </p> <ul>
+<li id="GUID-E9BD1B9C-86B4-5C91-A0DA-21CF3A0DF87A"><p>The opening brace denotes
+the start of the block of language-dependent files. </p> </li>
+<li id="GUID-06331C76-E7AD-560C-B260-AA8C97B66725"><p>The order of the files
+must be the same as the order in which the languages are specified in the
+languages line. </p> </li>
+<li id="GUID-46884386-2751-52FE-8954-276AAC437E3E"><p>The number of files
+specified must be the same as the number of languages supported. </p> </li>
+<li id="GUID-663D8D87-7E19-5733-8CE4-CD5A511A3344"><p>Install options can
+be specified after the destination name, for example, <codeph>FT</codeph> to
+display a language specific dialog. </p> </li>
+<li id="GUID-9753E3DF-12B3-5A29-930A-862474F138E0"><p>Language dependent file
+blocks, and other conditional blocks are evaluated at the end of the installation.
+For example, the executables launched using <codeph>FILERUN</codeph> or <codeph>FILEMIME</codeph> statements
+must not depend on conditionally installed or language-dependent files in
+the same package file. </p> </li>
+</ul> <p>This format is commonly used to specify lists of resource files.
+Resource files are installed to <filepath>\resource\apps</filepath>. </p> <p>If
+a resource file is to be accessed only by the application, it can be installed
+to the application's private directory, <filepath>\private\&lt;process   
+          SID&gt;\</filepath>. The SID (secure ID) is normally the same as the <codeph>UID3</codeph>,
+which is specified in the <filepath>MMP</filepath> file. </p> <p>An application
+registration (resource) file is an exception. The applications built into
+the ROM must provide their registration file in the <filepath>z:\private\10003a3f\apps</filepath> and
+applications installed through Software Installer must locate their registration
+file in <filepath>\private\10003a3f\import\apps</filepath>. </p> <note> The
+registration file in ROM must be located in <filepath>z:\private\10003a3f\import\apps\</filepath> and
+can be eclipsed.</note><p>Also, ECom registration resource files for ECom
+plug-ins must be installed in <filepath>\resource\plugins\</filepath>. </p> </section>
+<section id="GUID-B188FC32-F607-5927-85DB-6E6813DC1047"><title>Specific to
+the languages supported by the Symbian device or language selected by Symbian
+device user</title> <p>Specify each of the language-specific resource files
+within an IF conditional block and set the <codeph>SUPPORTED_LANGUAGE</codeph> and <codeph>LANGUAGE</codeph> parameters
+to a <xref href="GUID-31C133DE-F245-5992-9A41-20A99291E72A.dita#GUID-31C133DE-F245-5992-9A41-20A99291E72A/GUID-1F01A43F-64F7-5C90-92D1-974356A6C386">TLanguage
+numerical value</xref> separated by an <codeph>OR</codeph> condition, as shown
+in the following code snippet: </p> <codeblock id="GUID-50F06B9B-3552-5221-80C1-F9B06BAC328A" xml:space="preserve">
+if supported_language=02 or language=02
+    "HelloWorld.r01"          -"!: \ resource\apps\HelloWorld.r01"
+endif
+
+if supported_language=98 or language=98
+    "HelloWorld.r98"          -"!: \ resource\apps\HelloWorld.r98"
+endif</codeblock> <p> <b>Important:</b> Language-specific resource files must
+have filenames with language-specific extensions. For example, the resource
+files for UK English(01) must have the filename as <filepath>Filename.r01</filepath>. </p> <p>If
+the SIS file does not include the Symbian device supported languages or its
+equivalent, the Symbian device user is prompted to select a language. Based
+on the selection, the files for the selected language are installed. </p> <p>For
+example, if the SIS file supports French(02) and Zulu(98), and the Symbian
+device supports UK English(01) and German(03), the Symbian device user is
+prompted to select French or Zulu language for installation. Based on the
+selection, the files for the selected language are installed. </p> <note>During
+installation, if an exact or an equivalent language match is not found, the
+Symbian device user is prompted to select a language. If you have not specified
+the <codeph>LANGUAGE</codeph> parameter in <filepath>PKG</filepath> file,
+as there is no resource file found for the selected language, no resource
+files are installed. To avoid this, ensure that you always specify the <codeph>LANGUAGE</codeph> parameter
+in the <filepath>PKG</filepath> file. </note> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125"><title>Bitmap Transform Library Guide</title><shortdesc>This topic provides more detailed information about and code snippets for the Bitmap Transform library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-7D1E45F2-2793-5BE5-8F9E-1F92228A4C06"><title>Purpose</title> <p>Bitmap Transform makes it possible for bitmap images to be resized and rotated as described below. </p> </section> <section><title>Introducing Bitmap Transformation</title> <p>The resizing or scale (<xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref>) and rotation (<xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator</apiname></xref>) actions are asynchronous operations that take a pointer to a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object, which is signalled on completion of the requested action. The client application or calling DLL will hold the <codeph>TRequestStatus</codeph> values within active objects. As with any use of an active object it is necessary to have an active scheduler present in the same thread as the application making use of the object. </p> <p> <b>Note:</b>  <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> and <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator</apiname></xref> are not able them to run in their own thread. </p> </section> <section><title>Bitmap Transformation Example - Bitmap scaling</title> <p>There are two variants of the <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita#GUID-2008D827-A84A-3170-A8BD-86002BA37979/GUID-CCE10188-A9FD-38C8-89EC-3908C91DD25A"><apiname>CBitmapScaler::Scale()</apiname></xref> function. The first variant performs rescaling on an image contained in one <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object and places the result in another object. The second variant rescales an image contained in a <codeph>CFbsBitmap</codeph> object and places the result back in the same object. This is illustrated below. </p> <codeblock id="GUID-0979C855-4592-5652-BE58-4DA92C54CEFD" xml:space="preserve">void Scale(TRequestStatus* aRequestStatus, CFbsBitmap&amp; aSrcBitmap, CFbsBitmap&amp; aTgtBitmap, TBool aMaintainAspectRatio = ETrue);
+void Scale(TRequestStatus* aRequestStatus, CFbsBitmap&amp; aBitmap, const TSize&amp; aDestinationSize, TBool aMaintainAspectRatio = ETrue);</codeblock> <p>If two <codeph>CFbsBitmap</codeph> objects are specified in the scale operation, the dimensions of the destination object are used as the rescaling factors, subject to the aspect ratio setting (described below). </p> <p>If only the one <codeph>CFbsBitmap</codeph> object is specified in the scale operation, the scaling factor is taken from <xref href="GUID-938244B2-5E1A-39F7-8ACA-E6DE4C44A313.dita"><apiname>TSize</apiname></xref> subject to the aspect ratio setting. </p> <p>The aspect ratio is maintained if <codeph>aMaintainAspectRatio</codeph> is <codeph>ETrue</codeph>. If the ratio is used, then the image is rescaled to the smaller of the horizontal and vertical scaling factors. This is best explained by use of an example. </p> <p>In this example, the source image is 50 pixels wide by 150 pixels high (an aspect ratio of 1:3), <codeph>aMaintainAspectRatio</codeph> is set to <codeph>ETrue</codeph>, and the proposed rescaling is to 75 pixels wide by 300 high. Applying this ratio to the smaller of the horizontal and vertical factors means using a new value for the larger rescaling factor so that the aspect ratio matches that of the source image. The smaller value is 75 pixels, the aspect ratio required is 1:3 so the larger value will be 75*3 which is 225. The image will be rescaled to 75 wide by 225 high. </p> </section> <section><title>Bitmap Transformation Example - Bitmap rotation</title> <p>There are two variants of the <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita#GUID-2008D827-A84A-3170-A8BD-86002BA37979/GUID-A655241C-5339-35E2-8BDE-EDAF13ECC87A"><apiname>CBitmapScaler::Rotate()</apiname></xref> function. The first performs a rotational action on an image contained in one <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object and places the result in another object. The second variant performs a rotational action on an image contained in a <codeph>CFbsBitmap</codeph> object and places the result back in the same object. Valid rotational increments are specified in <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita#GUID-D0835677-6790-3038-8893-83E7186F47E7/GUID-D89261A3-D59C-38BC-BF55-B0C758AC9C85"><apiname>CBitmapRotator::TRotationAngle</apiname></xref>. </p> <p>Note: <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita#GUID-2008D827-A84A-3170-A8BD-86002BA37979/GUID-A655241C-5339-35E2-8BDE-EDAF13ECC87A"><apiname>CBitmapScaler::Rotate()</apiname></xref> does not support user specified rotational angles. The only values allowed are those specified in <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita#GUID-D0835677-6790-3038-8893-83E7186F47E7/GUID-D89261A3-D59C-38BC-BF55-B0C758AC9C85"><apiname>CBitmapRotator::TRotationAngle</apiname></xref>. </p> <codeblock id="GUID-4FF39951-1B71-5267-813B-32828EB4A73B" xml:space="preserve">void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap&amp; aSrcBitmap, CFbsBitmap&amp; aTgtBitmap, TRotationAngle aAngle);
+
+void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap&amp; aBitmap, TRotationAngle aAngle);
+</codeblock> <table id="GUID-A207445C-18A1-5BA0-9E98-2D1C8A3126E7"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><fig id="GUID-E8157802-DA4E-5C30-94CE-E91DCD632187"><image href="GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e279533_href.png" placement="inline"/></fig> </entry> <entry><p> <codeph>ERotation90DegreesClockwise</codeph>  </p> </entry> </row> <row><entry><fig id="GUID-FEF7BCE4-26B8-552A-9E86-C7F21AA8D88A"><image href="GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e279548_href.png" placement="inline"/></fig> </entry> <entry><p> <codeph>ERotation180DegreesClockwise</codeph>  </p> </entry> </row> <row><entry><fig id="GUID-A12CB5D1-599B-5F85-B879-610EA9CD2CF9"><image href="GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e279563_href.png" placement="inline"/></fig> </entry> <entry><p> <codeph>ERotation270DegreesClockwise</codeph>  </p> </entry> </row> <row><entry><fig id="GUID-37EC2688-E3AC-51A4-86F9-95124DDF40F8"><image href="GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e279578_href.png" placement="inline"/></fig> </entry> <entry><p> <codeph>EMirrorHorizontalAxis</codeph>  </p> </entry> </row> <row><entry><fig id="GUID-DFFCC6D6-B7F7-5047-B93D-CF79B2D47F17"><image href="GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e279593_href.png" placement="inline"/></fig> </entry> <entry><p> <codeph>EMirrorVerticalAxis</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks overview</linktext> </link> <link href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita"><linktext> Bitmap Transform Library
+                Overview</linktext> </link> <link href="GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita"><linktext>Bitmap Transform Library Guide</linktext> </link> <link href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita"><linktext>Enhanced Features for Encoder and
+                Decoder Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e375965_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D6E0EB4-CBF8-48BC-A76F-FE6366D4D96E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-9D6E0EB4-CBF8-48BC-A76F-FE6366D4D96E" xml:lang="en"><title>Downloading</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>You can use the Download Manager Client
+API to create and manage a session in which files are downloaded
+over HTTP or HTTPS. </p>
+<p>The DRM
+APIs provided by the multimedia framework in the Symbian platform
+allow you to provide DRM services in your application.</p>
+<section id="GUID-541D396A-FAD1-4B8B-A4AB-09758369293B"><title>OMA download</title>
+<p>The Symbian platform supports the <xref scope="external" href="http://www.openmobilealliance.org/">Open
+Mobile Alliance</xref> (OMA) download v1.0 open standard and application-level
+protocol that enables reliable content downloads. It can be integrated with
+other services, such as billing, allowing premium-priced content to be made
+available to mobile users. OMA download replaces content object descriptor
+(COD) download as the preferred method for downloading content to mobile devices.</p>
+<p>OMA download improves the mobile device user experience by informing
+users of the success of the content download. This helps ensure that the content
+can be used in the mobile device and that users are not charged if downloading
+fails. OMA download is used on top of HTTP or the wireless session protocol
+(WSP). </p>
+<p>The effort needed to implement OMA download is minimal. An operator
+only needs to create a so-called download descriptor file for each piece of
+content and make simple changes in the HTTP server to enable the OMA download
+protocol. For example, OMA download can be adopted without any changes in
+the billing mechanisms. However, to fully benefit from it, some changes are
+required in order to know whether users received the ordered content and hence
+ensure that they will not be charged if downloading fails. The install notification
+feature of OMA download can, for example, be used as an event that triggers
+billing.</p>
+<p>OMA DRM and OMA download are independent technologies for independent
+tasks. Both promote the mobile content downloading business as well as improve
+the mobile device user experience of mobile content. Content protected by
+OMA DRM can be delivered using OMA download as well as multimedia messaging
+service (MMS), mobile information device profile (MIDP) OTA, and so on. OMA
+DRM and OMA download are standardized in parallel by OMA. For more information,
+see <xref href="GUID-60F25F66-8CC5-46BF-9274-BDE8F9A10B74.dita"></xref>.</p>
+</section>
+<section id="GUID-5968A533-AC94-4DC6-B0B3-4F9A0D149F88"><title>Additional information</title>
+<p>For general information on DRM and reliable download technologies, see
+the <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/drm_and_download/index.html">DRM
+and Download page</xref>. It includes links to information on Open Mobile
+Alliance (OMA) DRM and OMA download standards as well as a useful table on
+DRM support in different releases of the Symbian platform.</p>
+<p>For additional information on DRM, see the <xref scope="external" href="http://www.forum.nokia.com/main/resources/documentation/drm.html">DRM
+documentation page </xref>.</p>
+<p>Forum Nokia also provides documentation on using downloading and DRM
+features in <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/symbian/documentation/browsing___drm___download.html">applications
+written in Symbian C++</xref>.</p>
+<p>For more information on multimedia and the multimedia framework, see <xref href="GUID-C5738F3D-E1D5-492D-89C9-5AC28F22BE71.dita"></xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D871368-ADB9-5588-A1F3-39A432F4F32E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9D871368-ADB9-5588-A1F3-39A432F4F32E"><title>Command Line Parsing </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Command Line Parsing provides access to arguments passed on the command-line. </p> <p>Conventional C and C++ programs receive their arguments from <codeph>main(
+        int argc, char* argv[] )</codeph>. On Symbian platform, programs are invoked through an <codeph>E32Main()</codeph> function taking no arguments. Most Symbian programs are launched through a graphical shell rather than through a command-line. The common exceptions are <filepath>.exe</filepath> s on the PC platform, which can be run from a Windows command prompt. </p> <p>For <filepath>.exe</filepath> programs, control is received through the <codeph>E32Main()</codeph> function, which does not supply arguments. Instead, access to arguments is provided by <xref href="GUID-CE114EA5-A084-39A5-9F48-14344AB5BDBA.dita"><apiname>CCommandLineArguments</apiname></xref>. This class is not intended primarily for code running on a Symbian phone. Its main use is in parsing the arguments of WINC command-line utilities. </p> <p>For a program that is launched as a new process, the arguments are available as part of the process command line and may be obtained in full using code as the following: </p> <codeblock id="GUID-CA0EBC3E-1FB5-5E39-8790-DE3131DB1B77" xml:space="preserve">TInt argLen = User::CommandLineLength();
+HBufC16* hBuf = HBufC::NewL( argLen );
+TPtr tPtr = hBuf-&gt;Des();
+User::CommandLine( tPtr );</codeblock> <p>However, the arguments are in a raw form. For convenience, the <codeph>CCommandLineArguments</codeph> class provides functions to access the program name as argument 0, and each command-line argument as argument 1, 2 etc. Arguments beginning with a quote may contain blanks and doubled quotes. Arguments not beginning with a quote are terminated by a blank. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9D9A67E0-CA0D-51B9-BD0D-3F474E90808D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9D9A67E0-CA0D-51B9-BD0D-3F474E90808D"><title>What are Serial Port Configuration Blocks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The serial port configuration block specifies the operation of a serial port. This includes settings such as the data rate, parity type, and handshaking control. A client sets up a serial port before use by providing a configuration block. </p> <p>The serial port configuration block interface is provided by <xref href="GUID-FA42F645-D2A8-384B-9FE6-6495EACFA479.dita"><apiname>TCommConfigV01</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e186197_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9DCD2076-0F73-5BB7-85BF-580567E0AB53.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9DCD2076-0F73-5BB7-85BF-580567E0AB53" xml:lang="en"><title>Package Upgrades</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Package Upgrade is the replacement of a package with its newer version
+to enhance functionalities or fix software defects.</p>
+<p>Package upgrades are based on the following two scenarios:</p>
+<ul>
+<li id="GUID-8A64D17D-9C9B-55E7-9744-027139BF992E"><p>Packages that are installed
+on the data drive or the RAM drive can be upgraded directly by installing
+a SIS file of type <codeph>SA</codeph>, <codeph>SP</codeph> or <codeph>PU</codeph>.</p> </li>
+<li id="GUID-D334752D-12BF-56A4-B7F1-5C8C01E3B030"><p> Packages that are installed
+on the ROM drive can be upgraded only by means of <xref href="GUID-F8A26275-883A-5299-9C37-9DDCC2F62108.dita">eclipsing</xref>.
+For details on how to upgrade package files on ROM, see <xref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita">Upgrading
+OS Components</xref>.</p> </li>
+</ul>
+<p>Orphan files that are not installed by an installation package can be overwritten
+only if the device creator has enabled the corresponding option (<codeph>AllowOrphanedOverwrite</codeph>)
+in the installation policy file. </p>
+
+
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e247227_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629"><title>Camera API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives you more information about the Camera API. </p> <section><title>Purpose</title> <p>The clients can use the Camera API to access the camera on a phone. This includes configuring the camera, running viewfinder and capturing still images and video. </p> <p> <b> Note:</b> The functionality that can be obtained through the API is camera hardware dependent. The API includes functions that you should call to check if functionality is available before using it. </p> <p><b>Required Background</b> </p> <p>The camera client is a component of the Multimedia subsystem. </p> <p><b>Introduction</b> </p> <p>Ecam is an API which allows an application to access and control any camera hardware which is attached to the device. The API provides functions to query the status of the camera, adjust camera settings, and capture still images and video. </p> </section> <section><title>Using Camera</title> <p>The camera can be used for: </p> <ul><li id="GUID-A330317B-BF54-59E9-BF96-8E6822AEF8AA"><p>Capturing still images </p> </li> <li id="GUID-1AADB8FE-7372-5189-8EBD-6CC84FAAF6D6"><p>Capturing video </p> </li> </ul> <p><b>What's Next?</b> </p> <p>The following tasks will be covered in this tutorial series: </p> <ul><li id="GUID-2E46B521-F169-5DC5-A424-2422DD0DF5BA"><p><xref href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita">Accessing and Power Control of Camera </xref>  </p> </li> <li id="GUID-AA4B4913-7F22-5DEE-90CF-5D4666E4A831"><p><xref href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita">Capturing Image</xref>  </p> </li> <li id="GUID-4F278DFE-49AE-549A-BB0E-445C8B648134"><p><xref href="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita">Capturing Video</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9DFB1340-FA1E-530E-9372-DB6509CECA2B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9DFB1340-FA1E-530E-9372-DB6509CECA2B" xml:lang="en"><title>Bitmap Transform Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E00A9B2-9656-5569-B164-B7EFD2B2A9F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9E00A9B2-9656-5569-B164-B7EFD2B2A9F6" xml:lang="en"><title>Example Code</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>An example application that demonstrates the use of the Camera Frameworks is shown below: </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e60273_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E0CBB66-A573-5BBE-9788-95B313325C7E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9E0CBB66-A573-5BBE-9788-95B313325C7E"><title>Interface definition </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>It was stated earlier that an interface definition serves <i>two</i> purposes: </p> <ul><li id="GUID-46362D8E-60FF-5A22-89E2-4474B88E097E"><p>defining functions that offer services to clients </p> </li> <li id="GUID-8F65910F-1A63-5DD5-94A2-78E4B80FA6CA"><p>offering object instantiation functions </p> </li> </ul> <section><title>Interface definition class</title> <p>So, an interface definition class is a normal abstract class plus some implemented functions that use ECom to create object instances. The class can have any base class: for example, </p> <ul><li id="GUID-6CF03FB1-B927-5AE2-AE01-26BA132D7442"><p>for <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref> -based classes, you can implement the object construction in <codeph>NewL()</codeph> and destruction in the destructor </p> </li> <li id="GUID-8B704ED3-65B2-5BC5-8680-7CEC8720386B"><p>for a <xref href="GUID-727D2B62-09A9-3CBC-AB6F-591E52EC68EB.dita"><apiname>RHandleBase</apiname></xref> -based class, the <codeph>Open()</codeph> and <codeph>Close()</codeph> functions would be the natural place to conceal the implementation instantiation and destruction </p> </li> </ul> <p>The class must always declare a private UID member. This is set on object instantiation and is used by ECom to identify the instance when object destruction occurs. </p> </section> <example><title>Interface definition class example</title> <p>The following shows an example segment of a interface definition class that derives from <codeph>CActive</codeph> (i.e. it is an active object). </p> <codeblock id="GUID-60EE59FA-361B-5650-A04C-AA35021D6FD9" xml:space="preserve">class CExampleInterfaceDefinition : public CActive
+    {
+public:
+    // Wraps ECom object instantitation
+    static CExampleInterfaceDefinition* NewL();
+    // Wraps ECom object destruction 
+    virtual ~CExampleInterfaceDefinition();
+    // Interface service 
+    virtual void DoMethodL() = 0;
+...
+private:
+    // Instance identifier key
+    TUid iDtor_ID_Key;
+    };</codeblock> <p>The class: </p> <ul><li id="GUID-3E08C27A-FF75-5C4A-AC97-6FBAD991F24E"><p>Has a pure virtual method: this means that this class must be a base, although a <codeph>NewL()</codeph> usually implies that there is no derivation from this class. </p> </li> <li id="GUID-7A5334B5-331E-578B-B75C-2346B037998D"><p>Does not need a constructor, private or otherwise, because for an abstract base there is no requirement for construction. </p> </li> <li id="GUID-2392510F-4BD1-51F2-A650-64AD6CC88DFA"><p>Has no <codeph>ConstructL()</codeph> to accompany the <codeph>NewL()</codeph>, construction isn't going to happen in the standard two-phase pattern, but through ECom. </p> </li> </ul> </example> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E0DCB19-5775-5E23-B758-163D747A71C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9E0DCB19-5775-5E23-B758-163D747A71C9"><title>Multiple Inheritance and Interfaces </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Multiple inheritance is a powerful aspect of C++. This topic explains its use in Symbian platform C++. </p> <section id="GUID-DB8C6A7D-515F-59E4-B2CD-454ACD203DAC"><title>Overview</title> <p>Experience of multiple inheritance indicates that its benefits are best realised by carefully controlling the ways in which it is used within a system to a few easily understood paradigms. Use of multiple inheritance without such control has usually led to designs that are difficult to understand. </p> <p>Multiple inheritance is used for a single purpose on the Symbian platform: namely, interface protocol definitions. These are used in the following kinds of situation: there is a <i>protocol provider</i> class, and a <i>protocol user</i>. It is desirable that the protocol user be independent of all aspects of the protocol provider, except its ability to provide the specified protocol. Examples of such situations include: </p> <ul><li id="GUID-F092AADB-57BD-5D05-95E9-4A4E482BE49F"><p>an application control is a protocol provider; its menu tree uses the protocol for menu observing. When a menu item has been selected, the menu observing protocol is invoked, so that the application control may handle the menu command. Apart from this, the menu control knows nothing about the application control. </p> </li> <li id="GUID-6257FC9B-96A1-5697-9031-2EAE2543CE8E"><p>an application, such as a spreadsheet, may have an <i>engine</i> which provides protocols for updating and getting its model contents, and a <i>user interface</i>, which uses these protocols to drive the engine. The engine is written with no knowledge of the user interface, and the user interface is written with minimal knowledge of the engine. They interact using a protocol provided by the engine. </p> </li> </ul> <p>To understand why interfaces are used, this page examines in turn: </p> <ul><li id="GUID-38F4E007-C040-5CA0-B2DE-F6BD0E369A0F"><p>the traditional method which uses single inheritance </p> </li> <li id="GUID-25E00997-6A10-5EEF-BAD1-784C9F9B5349"><p>a technique of overcoming the disadvantages of single inheritance, using protocol intermediary classes </p> </li> <li id="GUID-7AAE1568-0FF7-5C3E-98C0-29674C5FABDF"><p>a better technique, which uses multiple inheritance with interface classes </p> </li> <li id="GUID-E81625F6-CD1C-5C54-85E3-B4CF292422E0"><p>the restrictions on C++ multiple inheritance on the Symbian platform </p> </li> </ul> </section> <section id="GUID-099DC498-32E2-573A-9404-A60C55FE0D32"><title>Protocols using classic single inheritance</title> <p>A classical use of single inheritance is to define an abstract protocol from which derived classes may inherit. A base class defines a protocol: </p> <codeblock id="GUID-9BA46070-85BD-5806-A781-A9E7BD0F1CC3" xml:space="preserve">class CProtocol : public CBase
+    {
+public:
+    virtual void HandleEvent(TInt aEventCode)=0;
+    };</codeblock> <p>The protocol includes just one function, <codeph>HandleEvent()</codeph>, where the event is defined by an integer event code. </p> <p>A concrete protocol provider class is then derived from this base class. It provides a concrete implementation of the pure virtual function in the base class: </p> <codeblock id="GUID-55ABB36D-2131-570C-A23A-AC02B3F154D5" xml:space="preserve">class CProtocolProvider : public CProtocol
+    {
+public:
+    // construct/destruct
+    static CProtocolProvider* NewLC();
+    void Destruct();
+    // implement the protocol
+    void HandleEvent(TInt aEventCode); // handle protocol
+protected:
+    void ConstructL();
+    };</codeblock> <p>In addition, there is a protocol user class which knows nothing about the derived <codeph>CProtocolProvider</codeph> class, but it does know about the <codeph>CProtocol</codeph> class and the functions that specify its protocol. It has a function which uses <codeph>HandleEvent()</codeph>: </p> <codeblock id="GUID-30356ABC-7148-5004-B4A4-B55DA1053381" xml:space="preserve">void CProtocolUser::DoSomething(CProtocol* aProtocol)
+    {
+    _LIT(KOutput1,"External system doing something\n");
+    _LIT(KOutput2,"invoking protocol - event 3\n");
+    testConsole.Printf(KOutput1);
+    testConsole.Printf(KOutput2);
+    aProtocol-&gt;HandleEvent(3); // handle an event
+    }</codeblock> <p>The virtual function defined by <codeph>CProtocol</codeph> is provided by <codeph>CProtocolProvider</codeph>. This is the virtual function that is actually executed: </p> <codeblock id="GUID-A718C56C-6555-5D15-9C52-FE4F5E0120ED" xml:space="preserve">void CProtocolProvider::HandleEvent(TInt aEventCode)
+    { // handle an event in the protocol user
+    _LIT(KOutput1,"CProtocolProvider handling event %d\n");
+    testConsole.Printf(KOutput1,aEventCode);
+    }</codeblock> <p>Thus, although the protocol user knows nothing about the derived <codeph>CProtocolProvider</codeph> class, it can invoke its member functions through a pointer to its derived class, using the C++ virtual function mechanism. </p> <p>This code may be used in the following way: </p> <codeblock id="GUID-6355012A-2413-5B0E-811C-BF28A30FDC4F" xml:space="preserve">void doExampleL()
+    {
+    // show use of interface with simple class
+    CProtocolProvider* provider=CProtocolProvider::NewLC();
+    CProtocolUser* user=CProtocolUser::NewLC();
+    user-&gt;DoSomething(provider);
+    CleanupStack::PopAndDestroy(); // user
+    CleanupStack::PopAndDestroy(); // provider
+    }</codeblock> <p>In the function call, the <codeph>provider</codeph> pointer is cast to its <codeph>CProtocol*</codeph> base class, as required by <codeph>CProtocolUser::DoSomething()</codeph>. </p> <p>The advantages of this method are </p> <ul><li id="GUID-E9B232B6-42F9-5A34-A9E9-116D82D269E9"><p>it achieves independence of the protocol user from the specific protocol provider </p> </li> </ul> <p>This was the goal we set out to achieve. However, this method has a serious disadvantage: </p> <ul><li id="GUID-FA6702D5-AE01-5367-ABD0-AF92892BE871"><p>it forces the protocol provider to be <i>derived</i> from a protocol base class </p> </li> <li id="GUID-1B4D6785-1BE5-534B-B4FA-B0FADA87E268"><p>however, if <i>more than one</i> protocol must be provided by the provider class, the only solution is to include all the protocols into a single umbrella protocol, and to derive the provider class from that. This is bad encapsulation. Firstly, the base class can become quite large and it can be unclear why it contains so many member functions, or which function belongs to which protocol. Secondly, it may be desirable to have another provider class which provides some of the protocols provided by the first class, and others in addition. To support this requires an even larger umbrella protocol. </p> </li> </ul> <p>The straightforward method of providing protocols by strict single inheritance often leads to large base classes, representing many protocols which should really be independent of one another. </p> </section> <section id="GUID-75614A8E-B613-5E2E-AF34-EFAF854DCD92"><title>Protocols using an intermediate class</title> <p>Some of these disadvantages can be overcome by using an intermediary object which represents the protocol, and has a pointer to the protocol provider. The base protocol class is essentially the same: </p> <codeblock id="GUID-F8A493FA-77EE-5C9D-9BB2-DB2547558EAF" xml:space="preserve">class TProtocol
+    {
+public:
+    virtual void HandleEvent(TInt aEventCode)=0;
+    };</codeblock> <p>but there is now a derived class for use with the <codeph>CProtocolProvider</codeph> only: </p> <codeblock id="GUID-9448AEDC-5B25-51FC-BCF8-E1C747DE89F3" xml:space="preserve">class TProtocolProviderIntermediary : public TProtocol
+    {
+public:
+    // construct
+    TProtocolProviderIntermediary(CProtocolProvider* aRealProvider);
+    // protocol itself
+    void HandleEvent(TInt aEventCode);
+private:
+    CProtocolProvider* iRealProvider; // real provider
+    };</codeblock> <p>This class provides the protocol as far as the protocol user is concerned. The concrete implementation of <codeph>HandleEvent()</codeph> just passes the function call to the real protocol provider class, which has a non-virtual <codeph>DoHandleEvent()</codeph> to provide the required functionality: </p> <codeblock id="GUID-4A035C1A-ABBD-5557-BBB8-A2D2AAABF85E" xml:space="preserve">void TProtocolProviderIntermediary::HandleEvent(TInt aEventCode)
+    {
+    iRealProvider-&gt;DoHandleEvent(aEventCode);
+    }</codeblock> <p>With this system, <codeph>CProtocolProvider</codeph> is derived, not from the protocol definition class, but from <codeph>CBase</codeph>: </p> <codeblock id="GUID-63868CC8-2FAD-5013-BE90-0C258EC79319" xml:space="preserve">class CProtocolProvider : public CBase
+    {
+public:
+    // construct/destruct
+    static CProtocolProvider* NewLC();
+    void Destruct();
+    // implement the protocol
+    void DoHandleEvent(TInt aEventCode); // handle protocol
+protected:
+    void ConstructL();
+public:
+    TProtocolProviderIntermediary* iProviderIntermediary;
+    };</codeblock> <p>The <codeph>TProtocolProviderIntermediary</codeph> is constructed by the <codeph>CProtocolProvider</codeph> ’s constructor, and destroyed by its destructor. For this reason, the <codeph>TProtocolProviderIntermediary</codeph> is a <codeph>T</codeph> class: it does not own the <codeph>CProtocolProvider</codeph>, and cannot be orphaned. </p> <p>When a function in the protocol user requiring the protocol provider is called, it must now be called passing the intermediary object as a parameter: </p> <codeblock id="GUID-EDE3C9FC-71AF-59B6-B339-0819FE6AA578" xml:space="preserve">LOCAL_C void doExampleL()
+    {
+    // show use of interface with simple class
+    CProtocolProvider* provider=CProtocolProvider::NewLC();
+    CProtocolUser* user=CProtocolUser::NewLC();
+    user-&gt;DoSomething(provider-&gt;iProviderIntermediary);
+    CleanupStack::PopAndDestroy(); // user
+    CleanupStack::PopAndDestroy(); // provider
+    }</codeblock> <p>The protocol user’s <codeph>DoSomething()</codeph> is essentially as it was before, except that its parameter is now a <codeph>TProtocol*</codeph>. Thus, the user knows only about the base <codeph>TProtocol</codeph> class. The virtual function mechanism causes the derived intermediary’s <codeph>HandleEvent()</codeph> to be called, and this function passes on the request to the real protocol provider’s <codeph>DoHandleEvent()</codeph>. </p> <p>This method solves the problems associated with using only single inheritance: </p> <ul><li id="GUID-67EBED78-BA71-5D6E-8642-0EBE413EAE48"><p>any number of protocols may be supported, and separately encapsulated, by a particular class: each protocol requires an intermediary class, and objects of each intermediary class point to corresponding objects of the real protocol provider class </p> </li> <li id="GUID-D6D043F9-86D3-5486-B584-24BE27E58D3A"><p>no large base classes are needed to provide umbrellas for several protocols </p> </li> </ul> <p>However, it has a serious disadvantage: </p> <ul><li id="GUID-66694BCD-5C3F-505F-9B51-A4D37801F6B1"><p>it is awkward: not only does each protocol require an abstract class (which cannot be avoided), but also, at each point in the derivation tree at which a protocol is introduced, a derived protocol class must be written which implements the protocol for the relevant class which really provides the protocol: further, the derived protocol object and the real protocol provider must be linked </p> </li> <li id="GUID-363DEB0D-E3B9-513C-ADEC-654C315390B4"><p>if there are many classes which use many protocols in this way, not only is the method cumbersome to program, but it is uneconomical on memory, since each derived protocol class object requires at least two machine words of heap memory. This consideration becomes more serious if there are more small real protocol providers, providing many different protocols. </p> </li> </ul> </section> <section id="GUID-EBBC826E-BD8C-5753-9F86-BE601C8E1852"><title>Protocols using interface classes</title> <p>These problems can be overcome by using multiple inheritance. A base <codeph>MProtocol</codeph> class specifies the protocol: </p> <codeblock id="GUID-BAA67F7D-95A9-52E7-80B5-CA0EB447FE55" xml:space="preserve">class MProtocol
+    {
+public:
+    virtual void HandleEvent(TInt aEventCode)=0;
+    };</codeblock> <p>This time, however, the protocol provider is derived both from <codeph>CBase</codeph>  <i>and</i> from <codeph>MProtocol</codeph>: </p> <codeblock id="GUID-2768C379-BE30-58E3-8EB3-EFB9CEC1CFD3" xml:space="preserve">class CProtocolProvider : public CBase, public MProtocol
+    {
+public:
+    // construct/destruct
+    static CProtocolProvider* NewLC();
+    void Destruct();
+    // implement the protocol
+    void HandleEvent(TInt aEventCode); // handle protocol
+protected:
+    void ConstructL();
+    };</codeblock> <p>The protocol provider class provides a concrete implementation of the <codeph>HandleEvent()</codeph> function required by the protocol. The user class may now be invoked as follows: </p> <codeblock id="GUID-88E052C2-7796-5E30-A5D4-C0D8640E6E98" xml:space="preserve">LOCAL_C void doExampleL()
+    {
+    // show use of interface with simple class
+    CProtocolProvider* provider=CProtocolProvider::NewLC();
+    CProtocolUser* user=CProtocolUser::NewLC();
+    user-&gt;DoSomething(provider);
+    CleanupStack::PopAndDestroy(); // user
+    CleanupStack::PopAndDestroy(); // provider
+    }</codeblock> <p>The <codeph>DoSomething()</codeph> function requires an <codeph>MProtocol*</codeph> parameter. C++ casts the <codeph>CProtocolProvider*
+          provider</codeph> pointer down to an <codeph>MProtocol*</codeph>, because <codeph>MProtocol</codeph> is one of the base classes of <codeph>CProtocolProvider</codeph>. When <codeph>DoSomething()</codeph> invokes <codeph>HandleEvent()</codeph>, the C++ virtual function mechanism ensures that it is <codeph>CProtocolProvider</codeph> ’s <codeph>HandleEvent()</codeph> that is actually called. Thus, the user may use the protocol, without knowing anything specific about the concrete protocol provider class. </p> <p>This method achieves the intended goals: </p> <ul><li id="GUID-1E2C3B6E-DD7E-511E-91EF-324215FC11EB"><p>the protocol user is dependent on the protocol, but not on any particular provider </p> </li> <li id="GUID-03479EC5-0AEC-5D44-B601-95351773D2A3"><p>the protocol can be introduced into a class hierarchy at any desired point, by multiply inheriting from a base class and one or more interface classes </p> </li> <li id="GUID-E6D3B4B5-DDEB-50D0-9052-6D0149CA1298"><p>full encapsulation of different protocols is achieved </p> </li> <li id="GUID-DC84E8E4-3DB8-52C2-80EC-CEF35C25C15F"><p>there is no inconvenient intermediate class, with its programming difficulties and wasteful memory use </p> </li> </ul> <p>Because protocols may be mixed into the derivation hierarchy of conventional classes at any convenient point in the hierarchy, such protocol specification classes are sometimes also called mixins, the origin of the prefix <codeph>M</codeph>. </p> </section> <section id="GUID-66C2EC3E-8047-5A0C-AFC5-8D486E67A1E1"><title>Restrictions on the use of multiple inheritance</title> <p>The use of multiple inheritance is restricted to interfaces used as described above. C++’s full multiple inheritance facilities are unnecessarily complex. This is perhaps recognised by the OO community now. Java, for instance, allows only single inheritance, but the <codeph>interface</codeph> and <codeph>implements</codeph> keywords support the same facilities as are provided by <codeph>M</codeph> classes. The restrictions are given in more detail here. </p> <p>Firstly, <codeph>M</codeph> classes primarily define protocols, not implementations. In particular, they should not have any member data. The restriction implies that certain types of behaviour (e.g., that of active objects, see <xref href="GUID-890F06C6-DE32-5EB1-BF0F-D41794F47AE1.dita">Active objects</xref>) may <i>not</i> be encapsulated in an interface, but must be derived in the conventional way. </p> <p>Secondly, a <codeph>C</codeph> class may be derived from one other <codeph>C</codeph> class, and zero or more <codeph>M</codeph> classes. This restriction reflects the fact that multiple inheritance is only to be used for interfaces. It implies that it is still possible to uniquely identify a primary inheritance tree (the <codeph>C</codeph> class hierarchy), with interfaces as a side feature. If arbitrary multiple inheritance were allowed, it would be impossible to identify a primary inheritance tree. The restriction also guarantees that no <codeph>C</codeph> class will be a multiple base class, which makes it unnecessary to consider the complications of multiple base class inclusion, virtual inheritance, etc. </p> <p>Thirdly, the <codeph>C</codeph> class must be the first specified class in any base class list. This emphasises the primary inheritance tree and, importantly, it makes conversions between any <codeph>C</codeph> class (including those with interfaces) and <codeph>void*</codeph> pointers freely possible. Admittedly, the C++ standards do not mandate that object layout follows the order in which base classes are specified, but in practice this is the case for most compilers, including those used for the Symbian platform. </p> <p>Fourthly, no <codeph>M</codeph> class may be mixed in more than once in any class, either as a direct base or as a base of any of its primary base classes. To put it another way: when deriving a <codeph>C</codeph> class <codeph>CD</codeph> from a base class <codeph>CB</codeph>, you may not mix in any <codeph>M</codeph> class <codeph>MP</codeph> which has already been mixed into the derivation of <codeph>CB</codeph>. This reflects the fact that <codeph>CB</codeph> already supports the protocol defined by <codeph>MP</codeph>: there is nothing to gain from mixing in this protocol class again. In addition, it makes it unnecessary to consider the complications of multiple base class inclusion, virtual inheritance, etc. </p> <p>Finally, although it is legal to derive one <codeph>M</codeph> class from another, it is not legal to include a protocol twice by including both it and a derived protocol into a <codeph>C</codeph> class, at any point in the <codeph>C</codeph> class’s base class graph. To put it another way, if there is a class <codeph>MD</codeph> derived from <codeph>MB</codeph>, then a <codeph>C</codeph> class cannot include both <codeph>MB</codeph> and <codeph>MD</codeph>. This is because any function in the <codeph>C</codeph> class which provided an implementation of <codeph>MB</codeph> protocol could conflict with the implementation of <codeph>MD</codeph> protocol. </p> </section> <section><title>Example uses</title> <p><b>Callbacks</b> </p> <p>A special case of an interface is the callback. In this situation, one class performs a certain function for another and, when this is done, calls a single function in the requesting class, to indicate that the requested operation is complete. This call-back function represents a protocol: the requesting class is the provider, and the performing class is the user. Apart from this, the performing class need know little or nothing about the requesting class. This is an ideal situation for a interface. </p> <p><b>Two-way use</b> </p> <p>So far, we have discussed interfaces in the context where one class provides services according to a given protocol, and another uses those services. In a more general case, two classes (or systems of classes) may require services from each other, so that there is two-way interaction. </p> <p>Services are always provided according to a protocol. The protocol can be provided using any of the techniques described in this document: </p> <ul><li id="GUID-7C71224B-9E1D-5277-B58F-C3B51E48D91C"><p>conventional derivation, which is most appropriate where the protocol characterises a class’s main purpose </p> </li> <li id="GUID-F9D18F75-C44B-5E52-8140-454A79AFF31F"><p>interface inheritance, which is most appropriate where a protocol may be a characteristic of many classes, but where these classes have diverse main purposes </p> </li> <li id="GUID-642E0CAD-5804-5364-9BDA-2C0AC334B670"><p>intermediary objects, which may be appropriate where an interface would otherwise be used, but when multiple inheritance is disallowed, or inconvenient for some other reason </p> </li> </ul> <p><b>Observers</b> </p> <p>GUI applications use menus to present a user interface for selecting options. When an option has been chosen, the menu bar should forward a command somewhere by calling a member function of some class. The only thing that is important to the menu bar is that some object exists which can handle the command: beyond that, nothing matters about the object. </p> <codeblock id="GUID-3525BD39-699B-5977-A36B-A8B2355AA1DD" xml:space="preserve">class CEikMenuBar ...
+    {
+public:
+    ConstructL(MEikMenuObserver* aObserver, ...);
+    // ...
+private:
+    MEikMenuObserver* iObserver;
+    // ...
+    }</codeblock> <p>A menu bar therefore <i>uses</i> a menu observer. This is passed in as a parameter at construction, stored as member data, and used when an option has been selected. The menu observer interface is defined by the menu component, as the <codeph>MEikMenuObserver</codeph> class. </p> <p>This interface is implemented by the app UI (which also does many other things, which are irrelevant to menus). So, <codeph>CEikAppUi</codeph> implements menu observer interface by deriving from <codeph>MEikMenuObserver</codeph>: </p> <codeblock id="GUID-FD7DE6CD-31ED-5F58-BA37-F6DA5CFCB6B7" xml:space="preserve">class CEikAppUi : public CCoeAppUi, MEikMenuObserver</codeblock> <p>The app UI has a menu bar, and when it constructs the menu bar, the app UI passes itself to the menu bar, as the observer: </p> <codeblock id="GUID-86E37F76-3B90-5179-9AAC-27B30C30735E" xml:space="preserve">iMenuBar-&gt;ConstructL(this, ...);</codeblock> <p>C++ causes the <codeph>this</codeph> to be cast into the appropriate base class—in this case, an <codeph>MEikMenuObserver</codeph> —automatically. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e284722_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E2AEFF3-6C6E-5F09-B5C0-A70AECB421B0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9E2AEFF3-6C6E-5F09-B5C0-A70AECB421B0" xml:lang="en"><title>Text
+and Zooming</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5E27D8F4-E5F7-4589-801A-4ADE62E9BD59"><title>Text Style and Colour</title><p>Note that the following does
+not yet apply for S60 and MOAP. </p><p>The style (plain, bold, shadowed etc.)
+and colour of text in a control typically depends upon the state or properties
+of its parent control. Prior to Symbian OS 9.1 a control was able to use the <codeph>MCoeControlContext</codeph> interface
+to share properties. That interface is now deprecated. Text is now drawn using
+a Text Drawer. The Text Drawer takes the text itself as a parameter along
+with the font, graphics context and text location rectangle. </p><p>The text
+drawer is provided by the run-time hierarchy. Each control in the hierarchy,
+from the topmost downwards, has the option of modifying or replacing the text
+drawer. </p><p>Text drawers are derived from <xref href="GUID-C8C7B785-B3CF-3488-AEB1-BE0A70F6C1F2.dita"><apiname>CCoeTextDrawerBase</apiname></xref> (a
+default <xref href="GUID-4941BB90-573F-3582-AD7D-0769E463ECC6.dita"><apiname>CCoePlainTextDrawer</apiname></xref> is provided by Cone) and require
+special use to avoid multiple allocations on the heap. Instead of being allocated
+directly text drawers must be used through the <xref href="GUID-2280260C-3A4F-3C1E-ADF2-3219ED7FE0DE.dita"><apiname>XCoeTextDrawer</apiname></xref> class
+which acts as a smart-pointer to a single <xref href="GUID-C8C7B785-B3CF-3488-AEB1-BE0A70F6C1F2.dita"><apiname>CCoeTextDrawerBase</apiname></xref> derived
+class on the heap. The smart-pointer deletes or resets the text drawer on
+the heap if necessary and provides fail-safe measures to ensure that a valid
+text drawer is returned. </p><p>A control that draws text calls its <codeph>TextDrawer()</codeph> function
+to retrieve the appropriate text drawer from the run-time hierarchy </p><codeblock id="GUID-42C036D2-539B-51CF-94DD-594612EE7B60" xml:space="preserve">XCoeTextDrawer textDrawer( TextDrawer() );
+textDrawer-&gt;SetAlignment( iAlignment ); 
+textDrawer-&gt;SetMargins( iMargin );
+textDrawer-&gt;SetLineGapInPixels( iGapBetweenLines );
+textDrawer.SetClipRect( aRect );
+
+textDrawer.DrawText( gc, *iTextToDraw, Rect(), *Font() );
+</codeblock><p>Note that <xref href="GUID-2280260C-3A4F-3C1E-ADF2-3219ED7FE0DE.dita"><apiname>XCoeTextDrawer</apiname></xref>'s <codeph>-&gt;()</codeph> operator
+is overriden to return a pointer to the <xref href="GUID-C8C7B785-B3CF-3488-AEB1-BE0A70F6C1F2.dita"><apiname>CCoeTextDrawerBase</apiname></xref> object.
+i.e. </p><codeblock id="GUID-27F4D9F1-0AAF-57C5-9783-C26F4B0046ED" xml:space="preserve">
+    textDrawer-&gt;SetAlignment(iAlignment); 
+</codeblock><p>is equivalent to </p><codeblock id="GUID-7AE5D018-8EC8-55AF-BFCE-5D9B5E0A402F" xml:space="preserve">
+    textDrawer.(iTextDrawer*).SetAlignment(iAlignment); 
+</codeblock><p>Unfortunately, as <codeph>SetClipRect()</codeph> is not a function
+of <xref href="GUID-C8C7B785-B3CF-3488-AEB1-BE0A70F6C1F2.dita"><apiname>CCoeTextDrawerBase</apiname></xref>, but of <xref href="GUID-2280260C-3A4F-3C1E-ADF2-3219ED7FE0DE.dita"><apiname>XCoeTextDrawer</apiname></xref>,
+it can only be accessed through the . [dot] operator. There are worse things
+in life. </p><p>A control that wishes to provide its own text drawer, or to
+modify its parent's text drawer, may do so by providing its own implementation
+of the virtual function <codeph>GetTextDrawer()</codeph>. </p></section>
+<section id="GUID-BFE5E25F-A36C-4B33-A283-095F2E60FDBA"><title>Fonts</title><p>The control framework provides a mechanism
+for delivering the correct font at run-time. The mechanism consists of a Font
+Provider (<xref href="GUID-372CDE49-2148-3A21-8EA3-8D4656548C23.dita"><apiname>CCoeFontProvider</apiname></xref>) and a <xref href="GUID-463C1928-878D-3B06-ABFD-178BE1BAD776.dita"><apiname>TCoeFont</apiname></xref> class,
+which represents a font's size (logical or absolute in pixels) and style (plain,
+bold, italic, subscript or superscript). Along similar lines to the Text Drawer,
+the Font Provider is attached to a parent control and serves controls further
+down the run-time hierarchy. </p><p> <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> includes a
+default <xref href="GUID-372CDE49-2148-3A21-8EA3-8D4656548C23.dita"><apiname>CCoeFontProvider</apiname></xref>: UI-variant specific libraries
+are expected to provide their own. </p><p>The desired font is affected by
+the control's zoom state (see below) which must be included when requesting
+a font from a font provider. </p><p> <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> includes
+a <codeph>ScreenFont()         </codeph> method which encapsulates the font
+provider and zoom APIs to provide a simple means of obtaining a <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> object
+for drawing text. </p><p>The final line of the code snippet above should,
+therefore, look like this: </p><codeblock id="GUID-D4C2C0E7-740B-52B2-9945-8855F4D07F45" xml:space="preserve">textDrawer.DrawText(gc, *iTextToDraw, Rect(), ScreenFont(TCoeFont::NormalFont());</codeblock><p>Controls must not keep references or pointers to <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> objects
+in member data. Nor should they use the <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref> functions <codeph>NormalFont()</codeph>, <codeph>LegendFont()</codeph>, <codeph>TitleFont()</codeph>, <codeph>AnnotationFont()</codeph> and <codeph>DenseFont()</codeph>.
+Moreover, instances of these calls should be removed from old code and replaced
+with code like that above. This is so that run-time font changes can be propagated
+and is essential for zoom support. </p></section>
+<section id="GUID-881F77D3-383F-4D48-B56C-35A68B51A57B"><title>Zooming</title><p>Each control may have a <xref href="GUID-DDE4C9C0-7218-385E-B239-0DEFDE19FCCC.dita"><apiname>TZoomFactor</apiname></xref> attached.
+It applies to the control itself and all of its component controls. The factor
+can be absolute or relative to a control's parent and influences the size
+of the font in the control and all of its children. </p><p> <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> has
+an <codeph>AccumulatedZoom()</codeph> function which aggregates its own zoom
+factor with those of its parents. </p></section>
+<section id="GUID-45183B25-33F2-4EB7-A3CB-8A6922B097F1"><title>See also</title> <ul>
+<li><p><xref href="GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita">Run-time control
+hierarchy</xref></p></li>
+<li><p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita">How to write
+controls</xref></p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e336549_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A" xml:lang="en"><title>ECom
+and the Platform Security Architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Symbian Platform Security Architecture is designed to provide defences
+against malicious or badly implemented code. The following aspects of platform
+security are particularly relevant to the ECom plug-in architecture: </p>
+<ul>
+<li id="GUID-299B3BF1-9A55-5CCC-AA77-49F4EBE07ABD"><p>The <i>platform security
+capability model</i>, which protects processes from loading and using DLLs
+that are less secure than the process itself. </p> </li>
+<li id="GUID-92E6F90B-EFE0-5026-AA61-1C068376C21C"><p>Control over software
+installation, so that insecure software cannot disrupt legitimately installed
+software. </p> </li>
+<li id="GUID-2DE8CE05-57EE-582F-80F8-BAEB82B38FAB"><p>Control over which processes
+have access to particular files. </p> </li>
+</ul>
+<p>For more information on the Platform Security Architecture, see <i>Symbian
+OS v9 Security Architecture</i> in the <xref href="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita">Platform
+security</xref> section. </p>
+<section><title>ECom and the platform security capability model</title> <p>The
+Platform Security Architecture protects processes against loading and using
+DLLs that are less secure than the processes themselves. This is done using
+platform security capabilities assigned to the process and the DLL. The rule
+applied is that the DLL must have the same or greater capabilities than the
+process in which it is loaded. </p> <p>With ECom, a plug-in is a DLL that
+is loaded into a client process when an interface implementation provided
+by that DLL is instantiated. If the plug-in DLL has lower capabilities than
+the loading process, then a "permission denied" (-46) error is returned. See <xref href="GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita">How to troubleshoot plug-in
+loading errors</xref> for details of how to investigate this error. </p> <p>Providers
+of plug-in DLLs must consider the following with respect to platform security
+capabilities: </p> <ul>
+<li id="GUID-FB693866-59D7-56DD-9FF4-07AB3CDDA9F7"><p>If you give a plug-in
+DLL no capabilities, it can only be used by client processes that also have
+no capabilities. </p> </li>
+<li id="GUID-8FA6F9BF-9631-5110-8121-219041C07C4A"><p>If you intend a plug-in
+to work only with one client program, such as a particular server, then the
+documentation for that program should tell you what capabilities it needs. </p> </li>
+<li id="GUID-494937B7-AF39-5222-A97E-5F7478A4EC9E"><p>If you want a plug-in
+to be usable by any program (apart from the kernel and the file server), then
+the capability setting <codeph>All -Tcb</codeph> may be what you require.
+Note, however, programs with such high platform security capabilities require
+signing and authorisation to be installed by users on phones. See <xref href="https://www.symbiansigned.com/" scope="external">Symbian Signed</xref> for details. </p> </li>
+<li id="GUID-B5CD618B-F202-553A-BB5F-F1DF9AF70B58"><p> <i> Custom resolver</i> plug-ins
+are a special case. They are loaded by a server process in ECom itself, and
+so must be trusted by that server. This requires that you give the plug-in
+the <codeph>ProtServ</codeph> capability. See <xref href="GUID-E10A3336-9C4C-59A5-B94F-6CECA92FFB9F.dita">How
+to provide a custom resolver</xref> for more details on writing resolvers. </p> </li>
+</ul> <p>Platform security also allows you to specify that clients should
+only use plug-in implementations supplied by a particular company. See <xref href="GUID-7F4692A0-1801-5D91-8F28-06075AC45DE2.dita">How to filter implementations
+by vendor ID</xref> for more details. </p> </section>
+<section><title>Installation and upgrade controls</title> <p>Under Platform
+Security, the Software Installer program controls what software is installed
+to the device. It enables programs originally delivered in ROM, including
+ECom plugins, to be upgraded securely. </p> <p>Before platform security, applications
+could chose to use only ROM-based plug-ins. This guaranteed that the plug-ins
+were secure, but did not allow upgrades. Alternatively, both ROM-based and
+installed plug-ins were used, which allowed upgrades, but also risked the
+use of possibly insecure plug-ins. </p> <p>Platform security improves this
+situation, as it allows clients to access securely both ROM-based plug-ins
+and any installed upgrades to those plug-ins. For more information for how
+clients can do this, see <xref href="GUID-08007041-CE18-5B1C-9AE6-042EBBFD1AB6.dita">Using
+the ROM-only resolver</xref>. </p> <p>Providers of ROM-based plug-ins should
+see <xref href="GUID-93F53961-9DA3-5D01-A881-D28E0EBF8B3C.dita">How to upgrade
+ROM-based plug-ins securely</xref>. </p> </section>
+<section><title>File locations</title><p>The Platform Security architecture
+tightly controls access to executable code by: <ul>
+<li><p>requiring that all such code, including plug-in DLLs, is located under
+a directory <filepath>\sys\bin</filepath></p></li>
+<li><p>restricting access to that directory to a small number of key system
+processes. </p></li>
+</ul></p><p>The registration resource file for a plug-in must be readable
+by ECom, but should not be alterable after installation. For this reason,
+registration resource files are always installed to the read-only directory <filepath>\resource\plugins</filepath>.</p><p>To
+build plug-in code to these locations, set the target type in the project
+file to <codeph>PLUGIN</codeph>. For more information, see the <xref href="GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita">Creating an Implementation
+Project File</xref> section.  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E6822BE-BDF0-5710-9E60-A8DB14622C55.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9E6822BE-BDF0-5710-9E60-A8DB14622C55"><title>Storing a Picture Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an example of storing a picture in a direct file store (including the creation of a picture header). </p> <codeblock id="GUID-82106C5C-1044-56C4-8E1F-7D4E9DA2A0C6" xml:space="preserve">_LIT(KFileName,"C:\\grpict.dat");
+    
+// Create (replace, if it exists) the direct file store
+CDirectFileStore* store = CDirectFileStore::ReplaceLC(fsSession,KFileName,EFileWrite);
+// Must say what kind of file store.
+iStore-&gt;SetTypeL(KDirectFileStoreLayoutUid);
+    
+// Create picture header
+TPictureHeader header;
+header.iPicture = iPicture;
+header.iSize = TSize(iPicture-&gt;SpecToFactor()*40,iPicture-&gt;SpecToFactor()*40);
+header.iPictureType = KUidExampleSmileyPicture;
+    
+// Store picture header and picture
+CStoreMap* map=CStoreMap::NewLC(*store);
+TStreamId id = iPicture-&gt;StoreL(*store);
+map-&gt;BindL(iPicture,id);
+    
+RStoreWriteStream stream(*map);
+TStreamId headerId = stream.CreateLC(*store);
+header.ExternalizeL(stream);
+stream.CommitL();
+map-&gt;Reset();
+CleanupStack::PopAndDestroy(2); // stream, map
+    
+// Make header stream the root stream
+store-&gt;SetRootL(headerId);
+    
+// Close store
+CleanupStack::PopAndDestroy();</codeblock> <ol id="GUID-34C146E1-BFBD-531E-86DD-D0C87746FD91"><li id="GUID-1F00BB7A-C59D-5504-A531-C8081FC67714"><p>Create a direct file store into which to store the picture. </p> </li> <li id="GUID-81F80023-10A8-542C-9613-ED1FACF642CE"><p>Create a picture header object and set its attributes: <codeph>iPicture</codeph> is assumed to be picture object, derived from <codeph>CPicture</codeph>. </p> </li> <li id="GUID-AF878051-FF1D-52CD-AE28-28F8CCEE9366"><p>Store the picture header and picture in the file store. </p> </li> <li id="GUID-E5DDE3A1-E26F-5D63-BAF9-2C0D3F6B05DD"><p>Store the picture data and picture header using a store map as a temporary repository for the stream ID of the picture data stream. Store the stream ID as an element of the picture header's externalized stream to link the picture header’s stream and the picture data’s stream. </p> </li> </ol> </conbody><related-links><link href="GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita"><linktext>Picture Tutorials</linktext> </link> <link href="GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita"><linktext>Picture Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2" xml:lang="en"><title>Plug-in Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Plug-in (ECom) framework is a generic framework that provides a common and system-wide mechanism for instantiating a dynamically determined component. The Plug-in (ECom) framework allows the framework or application designers to design interface definitions, plug-in writers to implement interfaces and plug-in users to use the required plug-in.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e253528_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9EA7B72B-8394-48B8-A0CC-4BB34CBDB01C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9EA7B72B-8394-48B8-A0CC-4BB34CBDB01C" xml:lang="en"><title>UI text
+strings</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Mobile device users can select the language used by their devices for
+UI texts. Symbian platform native applications typically use these language settings
+to determine which language is displayed when an application is launched.
+The language used in your application depends on how you have implemented
+your UI texts:</p>
+<ul>
+<li><p><i>Recommended:</i> In the recommended approach, text strings
+in resource files are mapped to logical names in the code. This means that
+your application can switch between different language packs according to
+locale and the wishes of the end-user.</p></li>
+<li><p><i>Not recommended</i>: If you hard code text strings into
+your code, then your application will only be in the language used in the
+code and will not be able to take advantage of the flexibility made available
+by the recommended approach described approach.</p></li>
+</ul>
+<p>In the recommended approach, when the application framework launches
+an application, it loads the application resource file. The application framework
+compares the system locale language setting with the available resource files,
+and loads the resource file whose extension matches the locale language code.
+If there is no match, then the system loads the resource file with the extension <parmname>rsc</parmname>.</p>
+<p>For example, if the language of a device is set to German, then the
+application framework attempts to find a resource file for the application
+with the extension <parmname>r03</parmname>, since <parmname>03</parmname> is
+the code for German. If there is no resource file with a matching extension,
+then the application framework loads the resource file for the application
+with the extension <parmname>rsc</parmname>.</p>
+<p>In order to ensure that your application will be localizable:</p>
+<ul>
+<li><p>Do not embed UI text strings in your code files</p></li>
+<li><p>Do not hard code the size of text buffers</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9EBF45BC-79C3-56B3-B52A-A4C3D615602C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9EBF45BC-79C3-56B3-B52A-A4C3D615602C"><title>break</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>break [n]</userinput> </p> <p>Exit from within a <codeph>for</codeph>, <codeph>while</codeph> or <codeph>until</codeph> loop. If <codeph>n</codeph> is specified, break <codeph>n</codeph> levels. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9EE405E2-2D58-525B-8C33-B1EAC0C5A71A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-9EE405E2-2D58-525B-8C33-B1EAC0C5A71A"><title>Network Signal Status Tutorial </title><shortdesc>This tutorial describes how to get the network signal status with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-457C44A1-1947-51F5-9BBB-7DC61AE2BE3D"> <step id="GUID-DC0EA5D5-2F74-5AEA-B96E-727809E45043"><cmd/><info>create new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-8BB0592B-C650-5FC1-B32A-3D41778D99A2"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetIndicator()</apiname></xref> to get the network signal status information </info> </step> <step id="GUID-0DE72B37-076D-5C92-9439-DC28F91EDB23"><cmd/><info>you can cancel the asynchronous request with a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EGetIndicatorCancel</apiname></xref> object </info> </step> <step id="GUID-7841BBB1-8081-5A91-B8D5-5210971EFDB3"><cmd/><info>use the enumeration<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EIndicatorChange</apiname></xref> to get the notification of any changes to the network signal status </info> </step> <step id="GUID-6E4772BB-C48B-5613-A1C7-5A5A549F4596"><cmd/><info>cancel the notification request with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EIndicatorChangeCancel</apiname></xref> enumeration. </info> </step> </steps> <example id="GUID-B8922F87-D2CA-5103-B629-628D875CFBBD"><title>Network signal status example</title> <codeblock id="GUID-2EC900DF-10B9-5E63-8F0E-84D396520FDE" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TIndicatorV1 iIndicatorV1;
+    CTelephony::TIndicatorV1Pckg iIndicatorV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iIndicatorV1Pckg(iIndicatorV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetIndicator(iStatus, iIndicatorV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if(iIndicatorV1.iCapabilities &amp; CTelephony::KIndNetworkAvailable)
+          {
+          // We can detect when a network is present
+          if(iIndicatorV1.iIndicator &amp; CTelephony::KIndNetworkAvailable)
+             {} // Network is present
+          else
+             {} // Network is no present
+          }
+       else
+          {} // We do not know whether a network is present
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetIndicatorCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1"><title>How to use the audio tone player utility</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Audio Tone Player, provided by the class <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref>, has an interface for generating the following tones on all audio capable devices. Using this class you can play the following tones: </p> <ul><li id="GUID-6F7555FF-A11D-5D34-9602-75E9B9F4E70E"><p>Single tone of a specified duration and frequency </p> </li> <li id="GUID-B99BA7D8-E58F-5206-AAEE-55D47DC0629B"><p>Dual Tone Multi Frequency (DTMF) strings </p> </li> <li id="GUID-97874FB6-0884-53D7-9667-EC96604DEF30"><p>Sequences of tones held in files or descriptors </p> </li> <li id="GUID-B4704DBA-54C9-5B74-B518-2F5EBA1396C9"><p>Predefined (fixed) sequences of tones held in any mobile equipment </p> </li> </ul> <p>Client applications such as ringtone applications, use <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> to generate the tones they produce. The tone player in turn uses MMF for playing sounds and is also credited for interfacing with the audio hardware. An active scheduler is needed for all the clients applications for the use of active objects and callbacks. </p> <section id="GUID-B86646DF-E472-556C-B9AF-F82CBAEE468A"><title>Using the tone player</title> <p>The tone player provides a simple interface to generate single and multiple tones. Once the tone player object has been constructed, multiple tones and tone sequences can be played without having to create new instances of the object. </p> <p>Using the tone player typically involves the following steps: </p> <fig id="GUID-BF7D8243-53BE-5AF8-B9EF-4E7DC202AA1F"><title>
+             Tone Player Utility 
+          </title> <image href="GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e288487_href.png" placement="inline"/></fig> <ol id="GUID-11853890-B5E8-5797-918B-A1105C35F5BC"><li id="GUID-C1ED28E3-AF25-562B-B2BC-E70F2790961C"><p><xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-B5EAD538-CB1F-556C-B38D-26A4327B6454">Constructing a tone player </xref>  </p> </li> <li id="GUID-ED14F3E0-7FCF-5B7C-B9B3-FCC048480302"><p><xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-60775FAF-EB16-5462-9EDD-B18E9831CB70">Preparing a tone player </xref>  </p> </li> <li id="GUID-657C713C-82D4-5579-ACBD-1DA372972012"><p><xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-BA2A90F5-C36C-547E-B415-C877C22F321A">Playing a tone </xref>  </p> </li> <li id="GUID-18F9686A-740F-582C-B4C7-547338231F28"><p><xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-0E2324A3-9290-56B4-BF68-A00FEF8B26ED">Cancelling a tone </xref>  </p> </li> <li id="GUID-BB3FE6DE-FE3B-5E1E-A482-2359D638EE69"><p><xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-9D861D80-F6E4-577F-80AB-BD321D413764">Retrieving a custom interface </xref>  </p> </li> </ol> <p id="GUID-B5EAD538-CB1F-556C-B38D-26A4327B6454"><b>Constructing a tone player</b> </p> <p>The <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> object can be constructed using the <codeph>NewL()</codeph> member function. There are two versions of this constructor function: </p> <ul><li id="GUID-A395EF84-C992-57B2-9A7A-2F9EE94E4E1E"><p>create a tone player with default priority settings: </p> <codeblock id="GUID-C4C5F891-A369-5819-965E-D879941247D1" xml:space="preserve">static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver&amp; aObserver, CMdaServer* aServer=NULL);</codeblock> </li> <li id="GUID-9152BA40-7543-5915-A508-1E98EAD288FD"><p>create a tone player with your own settings: </p> <codeblock id="GUID-F5D92EE4-66D5-5BA5-9328-113F2AD289A1" xml:space="preserve">static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver&amp; aObserver, CMdaServer* aServer, TInt aPriority,
+TMdaPriorityPreference aPref=EMdaPriorityPreferenceTimeAndQuality); </codeblock> </li> </ul> <p>Both functions pass a reference of the <xref href="GUID-A6D27F43-AC44-38EA-B16F-31A14390582E.dita"><apiname>MMdaAudioToneObserver</apiname></xref> object to the tone player. The <xref href="GUID-A6D27F43-AC44-38EA-B16F-31A14390582E.dita"><apiname>MMdaAudioToneObserver</apiname></xref> is an observer interface to notifications from the member functions <xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-60775FAF-EB16-5462-9EDD-B18E9831CB70">Prepare</xref>, <xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-BA2A90F5-C36C-547E-B415-C877C22F321A">Play</xref>, and, <xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-0E2324A3-9290-56B4-BF68-A00FEF8B26ED">CancelPlay</xref> callback functions. </p> <p id="GUID-60775FAF-EB16-5462-9EDD-B18E9831CB70"><b>Preparing a tone player</b> </p> <p>Once the tone player object is created, it has to be prepared to play a tone or a DTMF string. use one of the following prepare member functions to get it ready for playing the corresponding tone. </p> <ul><li id="GUID-6B9AFA66-9748-5E38-A712-188A8CA6BA77"><p> <codeph> PrepareToPlayTone()</codeph> - to play a single tone of a fixed frequency (Hz) and duration (microseconds). For example: </p> <codeblock id="GUID-B6943FB2-A5E5-5A92-A0BC-31AC567FE647" xml:space="preserve">virtual void PrepareToPlayTone(TInt    aFrequency, const TTimeIntervalMicroSeconds&amp; aDuration);</codeblock> </li> <li id="GUID-28A30DA0-F52D-59E4-B05D-9A1D8CFBCE2A"><p> <codeph>PrepareToPlayDTMFString()</codeph> - to play a DTMF string held in a descriptor. For example: </p> <codeblock id="GUID-2D18C9CF-86CC-554C-9336-5C656EDD71E5" xml:space="preserve">virtual void PrepareToPlayDTMFString(const TDesC&amp; aDTMF);</codeblock> </li> <li id="GUID-0F67C0F8-E60F-5B42-9536-231FE9086AB7"><p> <codeph>PrepareToPlayFileSequence()</codeph> - to play a sequence of non-DTMF tones held in a file. For example: </p> <codeblock id="GUID-7BCD3441-7CA9-581B-96E0-D230FBF6A7E4" xml:space="preserve">virtual void PrepareToPlayFileSequence(const TDesC&amp; aFilename);</codeblock> </li> <li id="GUID-09048A04-0869-5208-B3BE-51217690527D"><p> <codeph>PrepareToPlayDesSequence()</codeph> - to play a sequence of non-DTMF tones held in a descriptor. For example: </p> <codeblock id="GUID-52063B5D-1131-5236-A06F-BFD67A09CF71" xml:space="preserve">virtual void PrepareToPlayDesSequence(const TDesC8&amp; aSequence);</codeblock> </li> <li id="GUID-6328FB13-16F3-51BC-9B13-F00E8B8532DB"><p> <codeph> PrepareToPlayFixedSequence()</codeph> - to play a sequence of non-DTMF tones stored on the mobile equipment. For example: </p> <codeblock id="GUID-839C7AFA-0D3E-5D05-BA0C-34CEF841D3F7" xml:space="preserve">virtual void PrepareToPlayFixedSequence(TInt aSequenceNumber); </codeblock> </li> <li id="GUID-EB7F1FA3-849F-5169-B88F-49512CD1E14C"><p> <codeph>PrepareToPlayDualTone()</codeph> - to play a dual tone. For example: </p> <codeblock id="GUID-FBE9AAAE-E188-58C9-8167-0B7049BCAB13" xml:space="preserve">void PrepareToPlayDualTone(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds&amp; aDuration); </codeblock> <p>The two tones, aFrequencyOne and aFrequencyTwo, are measured in Hz, and the duration of the tone, aDuration, is measured in microseconds. </p> </li> </ul> <p>All the prepare member functions are asynchronous. In response to each, <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> creates a <codeph>CMMFToneConfig</codeph> derived object that stores the data for the type of tone to play. </p> <p>On completion of a prepare, the observer function <xref href="GUID-A6D27F43-AC44-38EA-B16F-31A14390582E.dita#GUID-A6D27F43-AC44-38EA-B16F-31A14390582E/GUID-6B3BF4AC-3E50-3927-A09F-E4E5DDD1AECA"><apiname>MMdaAudioToneObserver::MatoPrepareComplete()</apiname></xref> is called, indicating the success or failure of the prepare operation. If successful you can play the tone. </p> <p>You can cancel any prepare function using <xref href="GUID-D4BCECEA-A42F-372D-85D7-66762D2F7B0D.dita"><apiname>CancelPrepare()</apiname></xref> (the observer callback function is <i>not</i> called on completion of the cancel). </p> <p id="GUID-BA2A90F5-C36C-547E-B415-C877C22F321A"><b>Playing a tone</b> </p> <p>Once the player is prepared successfully, certain configurations can be done before playing the tone as listed below: </p> <ul><li id="GUID-6FAFAB95-55B7-5C74-BF0B-31962859DF32"><p> <xref href="GUID-657CDF11-EA74-3074-9872-412D2C26F3E6.dita"><apiname>Volume()</apiname></xref> and <xref href="GUID-171667CD-06F4-3DF5-A4E1-360422F362D2.dita"><apiname>SetVolume()</apiname></xref> - This retrieves the current volume settings and sets to a new value specified by the user respectively. </p> </li> <li id="GUID-F5BC6F5F-57C0-5BEC-9783-AF06358A59E2"><p> <xref href="GUID-C2B76645-A50F-3DFF-943B-4F3D5A33ED31.dita"><apiname>GetBalanceL()</apiname></xref> and <xref href="GUID-D1856981-6A17-3CD9-80B5-65781A803BA4.dita"><apiname>SetBalanceL()</apiname></xref> - This retrieves the current balance of the audio device and sets the audio balance specified by the user respectively.. </p> </li> <li id="GUID-06D4BAEF-52CF-5CD8-90A2-8163336B016F"><p> <xref href="GUID-A2BDF5F7-06F0-3788-905E-D53FC9C67446.dita"><apiname>SetPriority()</apiname></xref> - This sets the priority of the audio device. The priority is defined to arbitrate between multiple objects trying to access the controller at the same time. </p> </li> <li id="GUID-0109EFE3-8CA8-5E5A-B4F5-693E87BEEE0E"><p> <xref href="GUID-5B03528A-E19C-3782-95E0-179E0C03B349.dita"><apiname>SetVolumeRamp()</apiname></xref> - This defines the period over which the volume level is to rise (in microseconds) smoothly from zero to the specified volume level. A value of <codeph>0</codeph> causes the tone to be played at the <codeph>SetVolume()</codeph> level for the full duration of the playback. A value that is longer than the duration of the tone sequence means that the tone never reaches the specified volume. </p> <codeblock id="GUID-AB8860AD-2E15-5DF1-97B2-BA9BDA2D5D38" xml:space="preserve">virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds &amp;aRampDuration);</codeblock> </li> <li id="GUID-47A3F620-FA41-5A85-B9E4-3D8BA3D9251B"><p> <xref href="GUID-9BBB8929-42B9-3862-BEFF-D845D4EC8E4E.dita"><apiname>SetDTMFLengths() </apiname></xref> - This alters the duration of DTMF tone, the gaps between two DTMF tones, and the pauses in microseconds. </p> </li> <li id="GUID-5AC9A8EF-995D-5FD7-9AAD-309673819F33"><p> <xref href="GUID-CD5229CE-04B7-3CED-B997-688C9251D1B9.dita"><apiname>FixedSequenceCount() </apiname></xref> - This returns the number of available pre-defined tone sequences, the number always being greater than zero. </p> </li> <li id="GUID-A5118A3F-43BF-5A34-B552-C0B57937928B"><p> <xref href="GUID-ECB22EFB-F630-35FB-9153-6D130945412E.dita"><apiname>FixedSequenceName()</apiname></xref> - This returns the name of the specified fixed tone sequence. </p> </li> </ul> <p>Upon successful configuration, the Play() can be called as shown below. </p> <p> <codeph> Play()</codeph> - plays the tone, DTMF or tone sequence specified by the prepare statement. For example: </p> <codeblock id="GUID-D152802E-768B-5001-B362-05F7438B5106" xml:space="preserve">virtual void Play();</codeblock> <p>Here, the tone player uses the <xref href="GUID-E9006092-2ED1-3486-985A-0A4821FF90EC.dita"><apiname>Play()</apiname></xref> from the audio player utility to play the tone. </p> <p>This function is asynchronous. It retrieves the details of the type of tone to play from the previous <codeph>Prepare</codeph> statement. When the tone has been played to completion, the observer callback function <xref href="GUID-A6D27F43-AC44-38EA-B16F-31A14390582E.dita#GUID-A6D27F43-AC44-38EA-B16F-31A14390582E/GUID-65AAF2C6-FD4F-3365-99F7-FCD15287A1B9"><apiname>MMdaAudioToneObserver::MatoPlayComplete()</apiname></xref> is called, indicating the success or failure of the play operation. The play operation can be cancelled by calling the <xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-0E2324A3-9290-56B4-BF68-A00FEF8B26ED">CancelPlay()</xref> member function. </p> <p>Playing the tone or DTMF string can be customised using the following member functions as mentioned below: </p> <ul><li id="GUID-03F93CEA-1B61-5262-B720-2313E79662E6"><p> <codeph>SetRepeats()</codeph> - sets the number of times the tone sequence (plus an optional trailing silent period, measured in microseconds) is repeated during the play operation. For example: </p> <codeblock id="GUID-7B2A1D5A-BB07-5CAA-86F3-CF7C011A939A" xml:space="preserve">virtual void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds &amp;aTrailingSilence);</codeblock> <p>You can repeat the tone sequence indefinitely by setting <codeph>aRepeatNumberOfTimes</codeph> to <codeph>KMdaRepeatForever</codeph>. </p> </li> <li id="GUID-5E34283D-17EF-59FC-842E-AD54DF7659C4"><p> <codeph>State()</codeph> - returns the current state of the tone player (an enum): </p> <ul><li id="GUID-A997198F-F638-5071-9333-6835E24EB23B"><p> <codeph>EMdaAudioToneUtilityNotReady</codeph> - not prepared to play a tone </p> </li> <li id="GUID-CAF8DAEB-E147-5F08-B86C-E3C3735690EB"><p> <codeph>EMdaAudioToneUtilityPrepared</codeph> - prepared and ready to play a tone </p> </li> <li id="GUID-F10E01C6-F237-58E9-8213-423FEAAE3DDC"><p> <codeph>EMdaAudioToneUtilityPlaying</codeph> - currently playing a tone </p> </li> </ul> <p>For example: </p> <codeblock id="GUID-B2BB2135-C055-5A5E-B66B-63118DD7F654" xml:space="preserve">virtual TMdaAudioToneUtilityState State();</codeblock> </li> </ul> <p>To play another tone or sequence, either wait for <xref href="GUID-A6D27F43-AC44-38EA-B16F-31A14390582E.dita#GUID-A6D27F43-AC44-38EA-B16F-31A14390582E/GUID-65AAF2C6-FD4F-3365-99F7-FCD15287A1B9"><apiname>MMdaAudioToneObserver::MatoPlayComplete()</apiname></xref> callback to be issued when the current tone or DTMF string completes playing, or use <xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita#GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1/GUID-0E2324A3-9290-56B4-BF68-A00FEF8B26ED">CancelPlay()</xref> and then issue the relevant prepare statement. The <xref href="GUID-E9006092-2ED1-3486-985A-0A4821FF90EC.dita"><apiname>Play()</apiname></xref> function following the prepare statement plays the tone or DTMF string based on the previously issued prepare statement. </p> <p id="GUID-0E2324A3-9290-56B4-BF68-A00FEF8B26ED"><b>Cancelling a tone</b> </p> <p> <xref href="GUID-E5898C2C-12A4-3803-BB97-A9C3F3CDDDE4.dita"><apiname>CancelPlay()</apiname></xref> - cancels the tone, DTMF, or tone sequence currently playing. For example: </p> <codeblock id="GUID-5F4A763E-BB07-5ACC-BC6C-6EA78DC85A44" xml:space="preserve">virtual void CancelPlay();</codeblock> <p>The observer callback function is <i>not</i> called on completion of the cancel. </p> <p id="GUID-9D861D80-F6E4-577F-80AB-BD321D413764"><b>Retrieving a custom interface</b> </p> <p>To retrieve a custom interface to the underlying device, use the <codeph>CustomInterface()</codeph> member function. For example: </p> <codeblock id="GUID-AC62D116-853B-5216-9E22-FB9A68A53179" xml:space="preserve">IMPORT_C TAny *CustomInterface(TUid aInterfaceId);</codeblock> <p> <codeph>aInterfaceId</codeph> is the UID of the interface function required. </p> <p>The function returns a pointer to the interface implementation, or NULL if the device does not implement the interface requested. You must cast the return value to the correct type. </p> </section> <section><title>See Also</title> <p><xref href="GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita">How to use the audio player utility</xref>  </p> <p><xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita">How to use the audio convert utility</xref>  </p> <p><xref href="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita">How to use audio recorder utility</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9EF1B1D2-7048-5198-8BC2-3FC960F073E4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9EF1B1D2-7048-5198-8BC2-3FC960F073E4" xml:lang="en"><title>Tutorials</title><shortdesc>Describes how to start and shutdown the DNS Proxy server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e378239_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9F22E663-8BC4-5502-879F-E6B790465E74.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-9F22E663-8BC4-5502-879F-E6B790465E74"><title>exportunfrozen</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>exportunfrozen</codeph> </p> <p>Use the <codeph>exportunfrozen</codeph> statement if unfrozen exports are to appear in the project’s import library. </p> <p>When it is used, the import library is created as a side-effect of linking so that all exported functions, even unfrozen ones, appear in the import library. This also means that import libraries for compatible ABIs are not created. </p> <p>If this is not used, you must supply a <filepath>.def</filepath> file with the frozen exports. </p> <p>Use of <codeph>exportunfrozen</codeph> is only recommended for the early stages of project development, when the Application Programming Interface is likely to be subject to change.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9F82E4D3-DDD4-50A5-AB12-50B216B73368.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9F82E4D3-DDD4-50A5-AB12-50B216B73368" xml:lang="en"><title>How to use the heap descriptor - HBufC</title><shortdesc>Heap descriptors provide a buffer of fixed length, allocated on the heap. Descriptors are useful for holding constant strings or data, when the length of the data may not be known until run time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+    
+    <section id="CONTEXT_361D960801D14A01BDCA84C4583DBC07"><p>Some key points about heap descriptors:</p><ul id="UL_1B2EE288A79A45CDADC061A8AD013AA1"><li id="LI_593B247AD60649A3995B848E524423FF">For text data, it is usual to construct a &lt;code&gt;<codeph>HBufC</codeph>&lt;/code&gt; type and			 allow the appropriate variant, either a &lt;code&gt;<codeph>HBufC8</codeph>&lt;/code&gt; or a <codeph>HBufC16</codeph> to be selected at build time.</li><li id="LI_5FB940C2E42143B9BFE6961D6CD72B86">For binary data, an explicit <codeph>HBufC8</codeph> is used.</li><li id="LI_9D41DDF6F4544E90A79494F10D453DC4">It is rare to use an explicit <codeph>HBufC16</codeph>.</li><li id="LI_0C6D6B9242EC473B8754A321A68A1BB2">Data cannot be changed through this descriptor although it can be
+			 replaced using the assignment operators.
+</li><li id="LI_FFFA4A8EB811448BB63BED6865555087">If you need to pass an <codeph>HBufC</codeph> to a function that takes a <codeph>TDesC&amp;</codeph> parameter, simply dereference the <codeph>HBufC</codeph> pointer.</li><li id="LI_D010A4CD7E26494EA8AB123A6FD76BEA">If you need to modify the <codeph>HBufC</codeph>'s data, use its <codeph>Des()</codeph> function to construct a <codeph>TPtr/TPtr8/TPtr16</codeph> modifiable pointer descriptor for the buffer's data.</li><li id="LI_1317203B41FC4D1887AC3E4F9E62EEBC">The size of the heap descriptor buffer can be replaced by
+			 reallocating it with a new length.
+</li></ul><p>Although the following notes refer to the build independent types, they are equally valid for the 8 bit and 16 bit types.</p> 
+
+
+</section>
+    <section id="SECTION_C424B2F2D52D477AA71C739E4B27BBBC">
+		<title>Constructing an <codeph>HBufC</codeph></title>
+		<p>
+		  A heap descriptor can be constructed in one of two ways:
+		</p> 
+
+		<ul id="UL_97F558DD94EA45068D1C8B885D092AB1"> 
+		  <li id="LI_FAA60C6043CB42BF84558932764C1054"> 
+			 <p>
+				using the static member functions <codeph>New()</codeph>,
+				<codeph>NewL()</codeph> or <codeph>NewLC()</codeph>
+			 </p> 
+		  </li> 
+		  <li id="LI_3A20A3574E404335BFFE058BB3DEA02F"> 
+			 <p>
+				using the <codeph>Alloc()</codeph>, <codeph>AllocL()</codeph> or
+				<codeph>AllocLC()</codeph> functions of an existing descriptor
+			 </p> 
+		  </li> 
+		</ul>
+
+		<p>
+		  The following code fragment constructs a heap descriptor which can hold up to 15 data items. The current length is zero.
+		</p> 
+		<codeblock xml:space="preserve">HBufC* buf;
+...
+buf = HBufC::NewL(15);</codeblock> 
+		<p>
+		  The following code fragment constructs a heap descriptor from an existing descriptor. The new heap descriptor is initialised with the content of
+		  <codeph>buf1</codeph>, i.e. the string: "Hello World!"
+		</p> 
+		<p>
+		  The source descriptor is a literal which is converted to descriptor type.
+		</p> 
+		<codeblock xml:space="preserve">_LIT(KText,"Hello World!");
+TBufC&lt;16&gt; buf1(KText);
+...
+HBufC* hptr;
+hptr = buf1.AllocL();
+...</codeblock> 
+	 </section> 
+
+	 <section id="SECTION_B06A1A56ECEE4F02BEB57288C759CF80">
+		<title>Replacing data and re-allocating</title>
+		<p>
+		  Although existing data within a heap descriptor cannot be modified, the
+		  assignment operator can be used to replace that data.
+		</p> 
+		<codeblock xml:space="preserve">_LIT(KText,"Hello World!");
+...
+HBufC* buf;
+...
+buf  = HBufC::NewL(15);
+*buf = KText;</codeblock> 
+		<p>
+		  The source descriptor is a literal which is converted to descriptor
+		  type.
+		</p> 
+		<p>
+		  To allow more than 15 characters or data items to be assigned into the
+		  heap descriptor, it must be reallocated:
+		</p> 
+		<codeblock xml:space="preserve">buf = buf-&gt;ReAllocL(20);</codeblock> 
+		<p>
+		  This permits the following assignment to be done without raising a
+		  panic:
+		</p> 
+		<codeblock xml:space="preserve">_LIT(KNewText,"Hello World! Morning");
+...
+*buf = KNewText;</codeblock> 
+		<p>
+		  <codeph>buf</codeph> may or may not point to a different location in the
+		  heap after reallocation. The location of the reallocated descriptor depends on
+		  the heap fragmentation and the size of the new cell. It is always safer to
+		  assume that the location changes.
+		</p> 
+	 </section> 
+
+	 <section id="SECTION_27A2310F89E141159A3DF3169D860CDA">
+		<title>Changing data through a modifiable pointer descriptor.</title>
+		<p>
+		  The data contained by a heap descriptor <i>can</i> be changed by
+		  constructing a <codeph>TPtr</codeph> modifiable pointer descriptor using the
+		  <codeph>Des()</codeph> member function and then changing the data through that
+		  <codeph>TPtr</codeph>.
+		</p> 
+		<p>
+		  The maximum length of the <codeph>TPtr</codeph> is determined from the size
+		  of the cell allocated to the data area of the heap descriptor.
+		</p> 
+		<p>
+		  The following code fragment changes the data in the heap descriptor and
+		  the length of the heap descriptor.
+		</p> 
+		<codeblock xml:space="preserve">TPtr ptr = buf-&gt;Des();
+...
+ptr.Delete((ptr.Length()-9),9);
+ptr.Append(_LIT(" &amp; Hi"));</codeblock> 
+		<p>
+		  Take particular care if a the heap descriptor is re-allocated after the
+		  <codeph>TPtr</codeph> has been constructed. A <codeph>TPtr</codeph> created before
+		  re-allocating the heap descriptor is not guaranteed to have a valid pointer
+		  after re-allocation. Any attempt to modify data through the original
+		  <codeph>TPtr</codeph> after re-allocation may have undefined consequences.
+		</p><note>it is a common error to use <codeph>Des()</codeph> to create a
+		  <codeph>TDesC&amp;</codeph> reference. While not incorrect, it is simpler and much
+		  more efficient to simply dereference the heap descriptor.</note>
+		 
+	 </section>     
+  </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08" xml:lang="en"><title>Defining
+localizable registration information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You need to register your applications in order to make them visible
+to the application menu and to provide other information to the underlying
+system. To register, you need to provide a <xref href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita">registration
+resource file</xref> that contains the non-localized information for your
+application. You also need to provide the localizable registration information.
+The registration resource file is compiled during the build process and included
+in the <xref href="GUID-7F1B2577-2FEF-45F9-B32F-745DFE0F0D95.dita"><parmname>pkg</parmname></xref> file
+used to make the  file used to make the <parmname>sis</parmname> <xref href="GUID-61EE2BE0-7B86-42CD-A03F-857DD8FAC246.dita">installation
+file</xref>.</p>
+<p>Localizable registration information is defined in a <parmname>LOCALISABLE_APP_INFO</parmname> resource
+statement, which may be in a separate file or in the resource file for the
+GUI resources. For a discussion of the available options for where you can
+place this resource statement, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools/RegFiles/Tool_Guide_LocalisableIconFile.html#Tool_Guide_LocalisableIconFile" format="application/java-archive">Localisable
+icon/caption definition files</xref>.</p>
+<p>To define the localizable registration information:</p>
+<ol>
+<li id="GUID-A5E13549-C926-45ED-A081-165742AAF157"><p>Determine
+the requirements of your application, including deciding on whether the resource
+statement should be in its own file or part of the GUI resource file.</p>
+</li>
+<li id="GUID-B8106EC5-BDA0-4F59-B943-9B63895347EE"><p>Create a <parmname>LOCALISABLE_APP_INFO</parmname> resource.
+The data structure is declared in the <parmname>appinfo.rh</parmname> file
+in the <parmname>./epoc32/include</parmname> folder, as is the <parmname>CAPTION_AND_ICON_INFO</parmname> structure
+used in the resource. The syntax is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-4A202ECA-380D-4FE2-AE41-3D1035F3FF7A" xml:space="preserve">RESOURCE  LOCALISABLE_APP_INFO r_name36
+	{
+	short_caption = "";
+	CAPTION_AND_ICON_INFO
+        {
+        caption = "";
+        number_of_icons =0;
+	   	icon_file = "";
+	    };
+	view_list[]; // VIEW_DATA
+	group_name(KAppMaxGroupName) = "";
+	}</codeblock>
+<p>where</p>
+<ul>
+<li><p><parmname>r_name36</parmname> is the resource name that uniquely
+identifies this RESOURCE statement in the application, and is used in the <xref href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita">registration resource file</xref></p>
+</li>
+<li><p><parmname>short_caption</parmname> indicates a shortened
+version of the caption used by some UIs when screen space is limited</p>
+</li>
+<li><p><parmname>caption</parmname> indicates the caption used for
+the application on the grid and list menu.</p></li>
+<li><p><parmname>number_of_icons</parmname> indicates the number
+of icons used for the application in the menu</p></li>
+<li><p><parmname>icon_file</parmname> indicates the name of the
+file that contains the icon, including the path but not the drive name</p>
+</li>
+</ul>
+<p>For information on the other possible values, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools/RegFiles/Tool_Guide_LocalisableIconFile.html#Tool_Guide_LocalisableIconFile" format="application/java-archive">Localisable
+icon/caption definition files</xref>.</p>
+</itemgroup>
+</li>
+<li id="GUID-1F9CBCC9-B366-43E8-9ADB-E4AB6A255181"><p>Add the resource
+name of this resource to the <parmname>localisable_resource_id</parmname> in
+the registration resource file.</p></li>
+</ol>
+<p>For a commented example, see <xref href="GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita">helloworldbasic.rss</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-9F96807F-25DC-5DE1-B327-3E339665FF64.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-9F96807F-25DC-5DE1-B327-3E339665FF64"><title>Reference</title><shortdesc>This topic contains all reference information for the Network Interface Manager (NifMan). </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><title>Time-out values in the CommDb bearer table</title> <p>There are three time-out values, which are set in the CommDb bearer table: </p> <table id="GUID-42A9DBFC-A6D5-5934-ABD8-59919C564143"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Name</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-F3CC7887-8BB4-3A7E-8236-E80268FFDB7E.dita"><apiname>LAST_SESSION_CLOSED_TIMEOUT</apiname></xref>  </p> </entry> <entry><p>This time-out is used if there are no ESock <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> objects and no sockets for the interface. </p> </entry> </row> <row><entry><p> <xref href="GUID-954BA47C-8EE3-3E89-B05E-0A135052C103.dita"><apiname>LAST_SOCKET_CLOSED_TIMEOUT</apiname></xref>  </p> </entry> <entry><p>This time-out used if there are <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> objects, but no sockets for the interface. </p> </entry> </row> <row><entry><p> <xref href="GUID-C9C979F4-48C8-37F1-9FA9-47B9EFC1832B.dita"><apiname>LAST_SOCKET_ACTIVITY_TIMEOUT</apiname></xref> </p> </entry> <entry><p>This time-out used if there are any sockets for the interface. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Progress Notification Types</title> </section> <section><p>The NIFMAN configuration plug-in that calls the daemon provides progress notifications for a range of generic events. These are: </p> </section> <table id="GUID-054AB529-02A5-5279-91BE-EC4750285750"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Progress type</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-6DD2FDE1-DED1-31DC-AA6B-CCC7FF64EAD9.dita"><apiname>KConfigDaemonLoading</apiname></xref>  </p> </entry> <entry><p>Generated before the daemon is loaded </p> </entry> </row> <row><entry><p> <xref href="GUID-DE9C3BA7-D5BD-3F32-94FF-A15E9C3449D0.dita"><apiname>KConfigDaemonLoaded</apiname></xref>  </p> </entry> <entry><p>Generated after the daemon was successfully loaded </p> </entry> </row> <row><entry><p> <xref href="GUID-B9BBF996-55CE-3F79-A518-D274FBC1AA8C.dita"><apiname>KConfigDaemonStartingRegistration</apiname></xref>  </p> </entry> <entry><p>Generated before the <xref href="GUID-4F97FE50-2E9C-3527-92E0-F1221184B7FD.dita"><apiname>EConfigDaemonConfigure</apiname></xref> message is sent </p> </entry> </row> <row><entry><p> <xref href="GUID-75C817CC-39BD-34B1-ADE8-FB7AC90418E7.dita"><apiname>KConfigDaemonFinishedRegistration</apiname></xref>  </p> </entry> <entry><p>Generated after the <xref href="GUID-4F97FE50-2E9C-3527-92E0-F1221184B7FD.dita"><apiname>EConfigDaemonConfigure</apiname></xref> message is completed by the daemon </p> </entry> </row> <row><entry><p> <xref href="GUID-02E2F5FD-9A76-3274-9AC7-018DAD07E6E3.dita"><apiname>KConfigDaemonStartingDeregistration</apiname></xref>  </p> </entry> <entry><p>Generated before the <xref href="GUID-274DF45D-B3A7-334B-9688-5161FA8B3327.dita"><apiname>EConfigDaemonDeregister</apiname></xref> message is sent </p> </entry> </row> <row><entry><p> <xref href="GUID-E7C83D74-D06E-3AFC-BBFE-0A041169C6FE.dita"><apiname>KConfigDaemonFinishedDeregistrationStop</apiname></xref>  </p> </entry> <entry><p>Generated after the <xref href="GUID-274DF45D-B3A7-334B-9688-5161FA8B3327.dita"><apiname>EConfigDaemonDeregister</apiname></xref> message is completed by the daemon indicating that the NIF is to be stopped (<xref href="GUID-04AD3BC8-5581-3305-B3CC-F59829E3FF42.dita"><apiname>EConfigDaemonDeregisterActionStop</apiname></xref>) </p> </entry> </row> <row><entry><p> <xref href="GUID-63B8B96B-EADD-38E2-A86D-133D3DE648C1.dita"><apiname>KConfigDaemonFinishedDeregistrationPreserve</apiname></xref>  </p> </entry> <entry><p>Generated after the <xref href="GUID-274DF45D-B3A7-334B-9688-5161FA8B3327.dita"><apiname>EConfigDaemonDeregister</apiname></xref> message is is completed by the daemon indicating that the system is in dormant mode (<xref href="GUID-B8FAD27D-432A-395C-852C-FC5E8A1D8813.dita"><apiname>EConfigDaemonDeregisterActionPreserve</apiname></xref>) </p> </entry> </row> <row><entry><p> <xref href="GUID-5D39682D-E0CB-3DA6-AE53-04078ADAB0D8.dita"><apiname>KConfigDaemonUnloading</apiname></xref>  </p> </entry> <entry><p>Generated immediately before the session to the daemon is closed </p> </entry> </row> <row><entry><p> <xref href="GUID-5C591AAA-5E34-3E3D-99B5-C63A42A664F9.dita"><apiname>KConfigDaemonUnloaded</apiname></xref>  </p> </entry> <entry><p>Generated after the session to the daemon is closed </p> </entry> </row> </tbody> </tgroup> </table> </refbody><related-links><link href="GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita"><linktext>What is Network Interface Management
+                (NifMan)?</linktext> </link> <link href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita"><linktext>What are the daemon message
+                types?</linktext> </link> </related-links></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e92515_href.png has changed
Binary file Symbian3/SDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e64017_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e317076_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0122085-369E-46EF-9CA1-0269982A5284.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A0122085-369E-46EF-9CA1-0269982A5284" xml:lang="en"><title>Release
+device vibra</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>ReleaseVibra()</codeph> call releases the vibration
+feature if it was previously reserved with a <codeph>ReserveVibraL()</codeph> method
+for the client. If the client has not reserved the vibration feature, the
+method does nothing. If the vibra is ON when it is released and no other client
+has a suspended reservation, vibra is stopped. </p><p>The following code snippet
+demonstrates how to release the vibration feature:</p><codeblock xml:space="preserve">iVibra-&gt;ReleaseVibra();</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A035B592-F423-5980-8E7E-E726CF24CF3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A035B592-F423-5980-8E7E-E726CF24CF3E" xml:lang="en"><title>Using Bluetooth Security Manager</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9" xml:lang="en"><title>Font and Bitmap
+Server Collection </title><shortdesc>The Font and Bitmap Server collection contains only one component—the
+Font and Bitmap Server. As its name suggests, the Font and Bitmap Server manages
+fonts and bitmaps.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p>The CBR package name for the Font and Bitmap Server component is <filepath>graphics_fbserv</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext>Font and
+Text Services Collection Overview </linktext></link>
+
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B" xml:lang="en"><title>Buffer
+descriptors</title><shortdesc>Describes modifiable and non-modifiable buffer descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A buffer descriptor provides a fixed length buffer to contain and access
+data. The data is part of the descriptor object.</p>
+<p>A buffer descriptor object is an instance of a templated class, where the
+template parameter is an integer value that defines the size of the descriptor's
+data area.</p>
+<p>A buffer descriptor comes in two forms:</p>
+<ul>
+<li id="GUID-9F038469-EA34-5086-84AC-DEA306CC63FD"><p>a non-modifiable buffer
+descriptor.</p> </li>
+<li id="GUID-B4A065D3-31DE-5F2D-863F-C91B7A7200FF"><p>a modifiable buffer
+descriptor.</p> </li>
+</ul>
+<section id="GUID-96A5D9DD-7754-4AD7-9C8F-1F664DB4719D"><title>Non-modifiable buffer descriptor</title> <p>The data contained
+in a non-modifiable buffer descriptor can be accessed, but not changed, through
+this descriptor. The data can, however, be completely replaced using the assignment
+operators.</p> <p>Data is accessed through functions provided by the base
+class.</p> <p>A non-modifiable buffer descriptor is supplied in two variants:</p> <ul>
+<li id="GUID-30B702C6-238F-573A-8604-8CE126432723"><p>the 16 bit variant,
+a <codeph>TBufC16&lt;TInt&gt;</codeph>, to contain Unicode strings.</p> </li>
+<li id="GUID-EC2B5476-257C-5DDC-B8AE-4F7F2AF8723E"><p>the 8 bit variant, a <codeph>TBufC8&lt;TInt&gt;</codeph>,
+to contain non-Unicode strings and binary data.</p> </li>
+</ul> <p>There is also a build independent type, <codeph>TBufC&lt;TInt&gt;</codeph>.
+This is the type which is most commonly used in program code; the appropriate
+variant is selected at build time.</p> <p>An explicit 8 bit variant is chosen
+for binary data. The explicit 16 bit variant is rarely used.</p> <p>The base
+class, <codeph>TDesC</codeph>, contains a data member which holds the length
+of the data. The following drawing shows the layout of a <codeph>TBufC&lt;5&gt;</codeph> object
+initialised with the string of five characters representing the English word
+"Hello".</p> <fig id="GUID-12064B13-BA8E-5552-9907-AD4F28329A24">
+<image href="GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e195746_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-4FE409A2-F70B-4755-8C0F-E86799728550"><title>Modifiable buffer descriptor</title> <p>The data contained
+in a modifiable buffer descriptor can be both accessed and changed through
+this descriptor.</p> <p>The template parameter, as well as determining the
+size of the data area created as part of the descriptor object, also defines
+the maximum length of the descriptor.</p> <p>The length of the data can vary
+between zero and the maximum length. When the length of the data is less than
+the maximum, a portion of the data area within the descriptor is unused.</p> <p>Data
+is accessed and modified through functions provided by the base classes.</p> <p>A
+modifiable buffer descriptor is supplied in two variants:</p> <ul>
+<li id="GUID-6FA9F924-4EBF-5AAE-B2E8-DD67CE15C8EE"><p>the 16 bit variant,
+a <codeph>TBuf16&lt;TInt&gt;</codeph>, to contain Unicode strings.</p> </li>
+<li id="GUID-F0C6A0B2-2ADF-5457-A910-6038816D95FD"><p>the 8 bit variant, a <codeph>TBuf8&lt;TInt&gt;</codeph>,
+to contain non-Unicode strings and binary data.</p> </li>
+</ul> <p>There is also a build independent type, <codeph>TBuf&lt;TInt&gt;</codeph>.
+This is the type which is most commonly used in program code; the appropriate
+variant is selected at build time.</p> <p>An explicit 8 bit variant is chosen
+for binary data. The explicit 16 bit variant is rarely used.</p> <p>The base
+class <codeph>TDesC</codeph>, contains a data member that holds the length
+of the data. The base class <codeph>TDes</codeph>, contains a data member
+that holds the maximum length of the data. The following drawing shows the
+layout of a <codeph>TBuf&lt;12&gt;</codeph> object initialised with the string
+of five characters representing the English word "Hello".</p> <fig id="GUID-1988349D-C4DF-5CA4-A913-D6E0AF4DB104">
+<image href="GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e195812_href.png" placement="inline"/>
+</fig> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-5-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-5-1-4-1" xml:lang="en"><title>How
+to stop a periodic timer</title><shortdesc>Describes how to stop a periodic timer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To stop a periodic timer, call <codeph>Cancel()</codeph>. After the cancel,
+the <codeph>CPeriodic</codeph> may be started again, and so on until it is
+destroyed.</p>
+<codeblock id="GUID-2A0611B0-FBCE-5D1D-89F2-39502F68A7BF-GENID-1-6-1-13-1-1-4-1-4-1-22-1-5-1-4-1-3-2" xml:space="preserve">
+iPeriodic-&gt;Cancel();
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-6-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-6-1-13-1-1-4-1-4-1-22-1-6-1-4-1" xml:lang="en"><title>How
+to stop a periodic timer</title><shortdesc>Describes how to stop a periodic timer. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To stop a periodic timer, call <codeph>Cancel()</codeph>. After the cancel,
+the <codeph>CPeriodic</codeph> may be started again, and so on until it is
+destroyed.</p>
+<codeblock id="GUID-2A0611B0-FBCE-5D1D-89F2-39502F68A7BF-GENID-1-6-1-13-1-1-4-1-4-1-22-1-6-1-4-1-3-2" xml:space="preserve">
+iPeriodic-&gt;Cancel();
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A05F0124-AE28-5088-8AFE-22956D1549AD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A05F0124-AE28-5088-8AFE-22956D1549AD"><title>noexportlibrary</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>noexportlibrary</codeph>  </p> <p>This stops the generation of a component's <filepath>.lib</filepath> file.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-4-1-10-1" xml:lang="en"><title>MmfExFormatPlugin:
+Multimedia Framework format encoder/decoder plug-ins example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>MmfExFormatPlugin</filepath> demonstrates
+how to implement format encoder and decoder plug-ins for the Multimedia Framework.
+Multimedia data is usually packaged in a particular format, which specify
+the properties of the data (e.g. duration, frame intervals), and how the buffers
+for holding the data are organised. A format decoder plug-in is responsible
+for reading a particular format; a format encoder plug-in for writing a particular
+format. </p> <p>The example handles the RAW audio format (PCM data with no
+headers). The decoder plug-in <codeph>CMMFRawFormatRead</codeph> reads RAW
+audio; it implements the ECom interface <codeph>CMMFFormatDecode</codeph>.
+The encoder plug-in <codeph>CMMFRawFormatWrite</codeph> writes RAW audio:
+it implements the ECom interface <codeph>CMMFFormatEncode</codeph>. </p> </section>
+<section id="GUID-274A59C1-E06A-584E-A014-6DBDFA772CB8-GENID-1-6-1-17-1-1-4-1-10-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c45b20eb-0700-4957-9e3a-d7c3e5a2180f.zip" scope="external">MmfExFormatPlugin.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c45b20eb-0700-4957-9e3a-d7c3e5a2180f.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink </apiname></xref>  <xref href="GUID-765257E7-403F-3D8E-8A5E-E1679F247F33.dita"><apiname>CMMFFormatDecode </apiname></xref>  <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource </apiname></xref> <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname> CMMFDataBuffer </apiname></xref>  <xref href="GUID-3E6BEFFD-698D-397A-9112-C9D330B5244B.dita"><apiname>CMMFChannelAndSampleRateConverterFactory </apiname></xref>  <xref href="GUID-A032838C-1F41-328E-900A-2683B1EBF1A7.dita"><apiname>CMMFChannelAndSampleRateConverter </apiname></xref>  <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer </apiname></xref> <xref href="GUID-9CD77063-1956-3EA9-9A82-17FDD6497CC7.dita"><apiname> CMMFFormatEncode </apiname></xref>  </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-5-1-7-1-6-1-6-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A0620D7E-F54C-5DE1-BED9-B34C5B851716-GENID-1-6-1-17-1-1-5-1-7-1-6-1-6-1" xml:lang="en"><title>MmfExFormatPlugin:
+Multimedia Framework format encoder/decoder plug-ins example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>MmfExFormatPlugin</filepath> demonstrates
+how to implement format encoder and decoder plug-ins for the Multimedia Framework.
+Multimedia data is usually packaged in a particular format, which specify
+the properties of the data (e.g. duration, frame intervals), and how the buffers
+for holding the data are organised. A format decoder plug-in is responsible
+for reading a particular format; a format encoder plug-in for writing a particular
+format. </p> <p>The example handles the RAW audio format (PCM data with no
+headers). The decoder plug-in <codeph>CMMFRawFormatRead</codeph> reads RAW
+audio; it implements the ECom interface <codeph>CMMFFormatDecode</codeph>.
+The encoder plug-in <codeph>CMMFRawFormatWrite</codeph> writes RAW audio:
+it implements the ECom interface <codeph>CMMFFormatEncode</codeph>. </p> </section>
+<section id="GUID-274A59C1-E06A-584E-A014-6DBDFA772CB8-GENID-1-6-1-17-1-1-5-1-7-1-6-1-6-1-2-2"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-c45b20eb-0700-4957-9e3a-d7c3e5a2180f.zip" scope="external">MmfExFormatPlugin.zip file</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-c45b20eb-0700-4957-9e3a-d7c3e5a2180f.html" scope="peer">browse </xref> to view the example code. </p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink </apiname></xref>  <xref href="GUID-765257E7-403F-3D8E-8A5E-E1679F247F33.dita"><apiname>CMMFFormatDecode </apiname></xref>  <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource </apiname></xref> <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname> CMMFDataBuffer </apiname></xref>  <xref href="GUID-3E6BEFFD-698D-397A-9112-C9D330B5244B.dita"><apiname>CMMFChannelAndSampleRateConverterFactory </apiname></xref>  <xref href="GUID-A032838C-1F41-328E-900A-2683B1EBF1A7.dita"><apiname>CMMFChannelAndSampleRateConverter </apiname></xref>  <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer </apiname></xref> <xref href="GUID-9CD77063-1956-3EA9-9A82-17FDD6497CC7.dita"><apiname> CMMFFormatEncode </apiname></xref>  </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A09AFA5C-7B2A-503C-A218-987F2F9BF7B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A09AFA5C-7B2A-503C-A218-987F2F9BF7B8" xml:lang="en"><title>Adding
+attachments to messages</title><shortdesc>The messaging framework allows you to add attachments to messages. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-DCEBCACA-CABD-59C7-A172-2BBA58ACA037"><p>A message attachment,
+once it has been created, must be added to its message in a separate procedure
+explained in this document. </p> </context>
+<steps id="GUID-A4D8D1D3-5A11-5107-9A4C-55BAB1837024">
+<step id="GUID-EB4005D6-C444-5FA7-BEEB-C8C2D795D1D6"><cmd/>
+<info>Create an active object implementation. All the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> functions
+that modify attachments for an entry are asynchronous, so a request must be
+called with an active object implementation. </info>
+<stepxmp><codeblock id="GUID-7104871F-A46F-5E98-9C17-CB555D374D02" xml:space="preserve">//* Active object request function to add an attachment.
+Arguments:
+aEntry -  entry to make attachment for
+aAttachPath -  path of file to attach
+aSize - size of attachment in bytes 
+*/
+
+void CFoo::AttachFileL(CMsvEntry&amp; aEntry, const TFileName&amp; aAttachPath, TInt aSize)
+    { 
+...
+    // Wait for request to complete
+    User::WaitForRequest(status);
+        
+    CleanupStack::PopAndDestroy(store);    
+    }
+
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-43BF419C-2571-506A-A4F0-B33EAB231394"><cmd>Get the details
+of the message to which you want to add an attachment using <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-1864B96D-CB22-3EE1-8E73-023F12C68CB0"><apiname>CMsvEntry::EditStoreL()</apiname></xref>. </cmd>
+<info>This function returns <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> in writable mode. </info>
+<stepxmp><codeblock id="GUID-0CF9F084-CA32-5E2B-90A9-C962BED421D2" xml:space="preserve">    // Get store   
+    CMsvStore* store = aEntry.EditStoreL();
+    CleanupStack::PushL(store);
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-D202696D-6ECF-5F0A-AB3F-6BA939911EAB"><cmd>Get an <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> attachment
+manager for the message entry, using <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-73CE27F3-855B-3F87-AE11-4B4F2B8F8825"><apiname>CMsvStore::AttachmentManagerL()</apiname></xref>. </cmd>
+<stepxmp><codeblock id="GUID-4DD6C7CB-BB2F-5953-9D15-BA0EA4DA08A6" xml:space="preserve">    // Get attachment manager from the entry's store     
+    MMsvAttachmentManager&amp; attManager = store-&gt;AttachmentManagerL();    
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-77E5F564-264F-524F-8DEA-C22AB05504B2"><cmd/>
+<info>Create a new attachment attributes object using the <xref href="GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F.dita#GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F/GUID-CB0C9E14-A0D3-340A-929D-8B2C3BC11300"><apiname>CMsvAttachment::NewL()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-5FA4C954-39F0-5EC6-BF51-B352FE03883C" xml:space="preserve">    // Create a new attachment attributes object    
+    CMsvAttachment* attachment = CMsvAttachment::NewL(CMsvAttachment::EMsvFile);    
+    CleanupStack::PushL(attachment);    
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-4405D256-83F8-554B-A39B-05E273D47E76"><cmd/>
+<info>Set the attachments name and size attributes using the functions of
+the <xref href="GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F.dita"><apiname>CMsvAttachment</apiname></xref> class. </info>
+<stepxmp><codeblock id="GUID-0ED897B3-BBC3-5FD0-8602-574F58DA287F" xml:space="preserve">    // Set the attachment name and size attributes    
+    TParse fparse;    
+    User::LeaveIfError(fparse.Set(aAttachPath,NULL,NULL));    
+    attachment-&gt;SetAttachmentNameL(fparse.NameAndExt());    
+    attachment-&gt;SetSize(aSize);
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-BF384C85-B97E-585E-BDFA-57132E11BE5B"><cmd/>
+<info>Add the attachment using any of the following functions: </info>
+
+<substeps id="GUID-9412CD8C-D6C6-5245-A9D2-55A51636A028">
+<substep id="GUID-EE27135A-9ACB-5BCE-B21C-C283756343D7"><cmd/>
+<info>For copied attachments, use the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-283B631D-0166-30F9-BBA3-CA364DB66B45"><apiname>MMsvAttachmentManager::AddAttachmentL()</apiname></xref> function. </info>
+</substep>
+<substep id="GUID-6EEC55E5-0D9E-596B-924D-CAA207E64F3D"><cmd/>
+<info>For linked attachments, use the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-D11BB466-2529-3C49-AFAB-810806376478"><apiname>MMsvAttachmentManager::AddLinkedAttachmentL()</apiname></xref> function. </info>
+</substep>
+</substeps>
+<info> Note: For OBEX MTM, to add headers to an attachment, use the <xref href="GUID-F4577312-35AC-32DE-AE0E-45BB0E0A761F.dita#GUID-F4577312-35AC-32DE-AE0E-45BB0E0A761F/GUID-B1806BF9-78F5-31A2-AD51-D9B163EA62D6"><apiname>CObexHeaderList::ExportToAttachmentL()</apiname></xref> function.
+Headers can be retrieved using the <xref href="GUID-F4577312-35AC-32DE-AE0E-45BB0E0A761F.dita#GUID-F4577312-35AC-32DE-AE0E-45BB0E0A761F/GUID-1BD1998A-7C9C-32CF-AD6B-CB96358A0438"><apiname>CObexHeaderList::ImportFromAttachmentL()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-81899562-C23C-5737-A08E-6FDD157CDBA0" xml:space="preserve">    TRequestStatus status;
+         
+    // Ownership of attachment will transfer to attachManager    
+    CleanupStack::Pop(attachment);
+    // Add the attachment    
+    attManager.AddAttachmentL(aAttachPath, attachment, status);    
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-05B4EF20-8994-582B-9C7E-3A27141BAD08"><cmd/>
+<info>Commit the store. </info>
+</step>
+</steps>
+<result id="GUID-8D1AA546-5150-5778-A716-B2933EEDF028"><p>You now have an
+attachment added to its message. </p> </result>
+<postreq id="GUID-FD541AE4-7474-5CBB-AC0D-6987D6B0F9AE"><p>You can now retrieve
+and modify the message attachment. </p> </postreq>
+</taskbody><related-links>
+<link href="GUID-1963A487-D6A7-4225-8D0C-EC5FAB746854.dita"><linktext>Attachment
+Tutorial</linktext></link>
+<link href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita"><linktext>Messaging
+Framework Overview</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A09EAA46-47B4-5E3B-85F9-F6256B8B10CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A09EAA46-47B4-5E3B-85F9-F6256B8B10CF"><title>which</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>which [ -wm ] name ... </userinput> </p> <p>Same as <xref href="GUID-0368678A-6963-5558-8DC2-0E618B927538.dita">whence</xref>  <codeph>-c</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0E75BD9-E3C6-5D28-B53C-B76260F63B89.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A0E75BD9-E3C6-5D28-B53C-B76260F63B89" xml:lang="en"><title> Persistent stores </title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A0F56EA1-49BA-5306-9ADC-A0647270F720.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A0F56EA1-49BA-5306-9ADC-A0647270F720" xml:lang="en"><title> Embedded stores</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e46281_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e52361_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e55510_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e212325_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A1148010-887F-549D-9DA0-D36FF4661FFE"><title>What are Access Points</title><shortdesc>This topic describes the concept of an <i>Access Point</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Layer can make a service available to the Layer immediately above it. The service is called an Access Point. </p> <p>Each Layer except the highest Layer can have an Access Point. The highest Layer is called the Application Layer. The Communications Framework can limit the use of an Access Point to selected clients. </p> <p>The following diagram shows five Access Points. Each Access Point offers a service to the Layer above it. </p> <fig id="GUID-C002DF58-616A-5F4F-A0C7-5C66C6B9B597"><title>
+          Access Points in the Communications Framework
+        </title> <image href="GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e62981_href.png" placement="inline"/></fig> <p>In this diagram the Link Layer has three bearers. Each bearer has an Access Point. An application or a Layer above the Link Layer does not need to know which bearer in the Link Layer is in use during the connection. The Communication Framework can replace the bearer with another bearer. The Communication Framework does not need to tell the application when the bearer changes. An application can continue to send and receive data when the change occurs. </p> <p>For example, consider an email application on a device. The device connects over a GPRS network. A short time later the device detects that a Wi-Fi connection is available. This event can occur if the device has moved from an office location to a coffee shop. The device can have a selection policy. The policy can state that the device switch to WiFi without the creation of a new connection. </p> <p>The selection policy contains a list of Access Points in order of priority. Device manufacturers, Network Operators and users can configure the order of priority. The priority can be based on items like available bandwidth and cost. An alternative to selection policy is the concept of connection preference. For example, a device connects with a specific bearer (for example, GPRS) unless the application changes the bearer explicitly. </p> <p>It is useful to note that an Internet Access Point (IAP) is a specialisation of the Access Point concept for a Link Layer. IAPs identify a service to be accessed through a concrete link-layer bearer. Each IAP has an associated Access Point with the same physical value. </p> </conbody><related-links><link href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-57197DDE-9DE0-5978-8F2F-D2E370489E3C"><linktext> IAP</linktext> </link> <link href="GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita"><linktext>Layers</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0" xml:lang="en"><title>Application
+Engines </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-85D629ED-30D4-5608-A816-07BD375C6A76"><title>Calendar</title> <p> <xref href="GUID-00631ED2-1B7F-5FC4-9E81-4B6DF7946631.dita">Calendar</xref> allows a
+user to store and manage a collection of calendar events and to-do items.
+A calendar event represents a scheduled amount of time, such as a team meeting.
+To-do items represent action-items or a task assigned to an individual. Electronic
+schedule exchange is provided using the vCalendar 1.0 standard. </p> <p>The
+Calendar API for Symbian OS v9.5 provides access to calendar stores, with
+functionality to fetch, update, save and delete calendar entries. This functionality
+complies with the standard RFC 2445, which defines a common format
+for openly exchanging calendar and scheduling information across the internet.
+New functionality includes: attachment support, defining geographic locations,
+logging, expanded search capabilities and support for removable media. </p> </section>
+<section id="GUID-5F20F757-46F6-5652-AB0F-6B22DBB61111"><title>Contacts Model</title> <p>The
+Contacts Model is an engine component that provides access to contact information
+stored on a Symbian OS device. Just like a real-world address book it stores
+and organises names, telephone numbers, addresses and other details of individuals
+and companies. It can be used to: </p> <ul>
+<li id="GUID-2A32B258-B59F-5BA2-998A-AFEA77065C46"><p>add, delete and edit
+data </p> </li>
+<li id="GUID-0DF77DE5-267B-54BB-AD9F-1A05C9FCE0C5"><p>provide information
+to clients </p> </li>
+<li id="GUID-BD1AED25-AA07-5053-9A03-34F8863036D0"><p>sort and search contacts. </p> </li>
+</ul> <p>The component provides a unified interface for accessing contact
+information that is stored in the phone’s internal store or on an integrated
+circuit card (such as a SIM/USIM). The data store contains a collection of
+contact items. An item can be: </p> <ul>
+<li id="GUID-B60D8D4A-B32A-54AC-8015-C1145BB88EE1"><p>a contact card, such
+as a particular person </p> </li>
+<li id="GUID-5024C061-C9B3-5C33-A1B7-65C618E393A6"><p>an own card (the phone
+owner’s card) </p> </li>
+<li id="GUID-B98D42E5-A5A7-5F7F-814B-DACAF67A67CB"><p>a template for creating
+other contact items </p> </li>
+<li id="GUID-B998990E-BA67-5941-AC5F-53D1CE949345"><p>a contact group, such
+as a collection of contact cards. </p> </li>
+</ul> <p>Electronic business card exchange is provided using the vCard 2.1
+standard. vCard 3.0 Export for PBAP capability has been added in Symbian OS
+v9.2. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4" xml:lang="en"><title>Advanced Pointers </title><shortdesc>In ScreenPlay, the Window Server provides advanced pointer features, such as support for multiple pointers and proximity and pressure coordinates. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> </conbody><related-links><link href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita"><linktext>Window Server
+                Client-Side Events Overview</linktext> </link> <link href="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita"><linktext>Pointer
+     Handling</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2"><title>prj_platforms</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>prj_platforms</codeph> <varname>list_of_platforms</varname> </p> <p>In the <codeph>prj_platforms</codeph> section, list the platforms that the component supports.</p> <p>If the platforms section is not found, <filepath>bldmake</filepath> assumes the default build targets.</p> <p>Note, building for the MARM platform is no longer supported. If MARM is specified as a platform, it will be expanded to mean ARM4, ARMI and THUMB, but really these platforms should be listed explicitly, or the default relied upon.</p> <p>Specifying the pseudo-platform <codeph>DEFAULT</codeph> at the start of the list will cause any subsequent platforms to be added to the default list, unless these platforms are prefixed with a hyphen (-), in which case these platforms will be removed from the list. </p> <p>Platforms can be listed on several separate lines if required.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557"><title>Inquiring about Services on a Remote Device</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You will normally connect to a device to perform a specific task over Bluetooth. Connecting to any random device is not sensible. A better way is to check that the device you are about to establish a connection with is able to provide the required functionality. This document discusses the service discovery options. </p> <section><title>How to inquire about services on a remote device</title> <p>There are two ways to inquire about the services on offer on a remote device, they are: </p> <ol id="GUID-64E55628-0CA6-5D59-AC4F-0D28A313D4C4"><li id="GUID-711C218D-5A7C-5966-8570-457A7C49BC2E"><p>Use <xref href="GUID-A5BBFFE0-7B86-3FD0-BC9E-D9EABB60C25C.dita"><apiname>MajorClassOfDevice()</apiname></xref> to examine the class of device attribute when making an address inquiry. </p> </li> <li id="GUID-E9E5C4D8-0BA5-5914-80D0-1F4DBA6E86B5"><p>Use the Bluetooth Service Discovery Protocol (SDP) Agent APIs. </p> </li> </ol> <p><b>Examining the Class of Device</b> </p> <p>A broad indicator of the services provided can be read from the class of device. This could be used, for example, to decide the appropriate icon with which to represent a device to the user. The class of device is got through <xref href="GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D.dita#GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D/GUID-67A45289-4919-3B0B-BE96-95202940D198"><apiname>TInquirySockAddr::MajorClassOfDevice()</apiname></xref> after an address inquiry. </p> <p>How it works: </p> <ol id="GUID-D7C0ECC4-38E7-592A-A3B3-ECAADE5665E9"><li id="GUID-B94C52B2-54DC-53DF-8ABC-C750ED23FBFD"><p>Perform a device inquiry. </p> </li> <li id="GUID-A3DC575B-0378-5CB1-89B6-64549BDC83DC"><p>Check the class of device. </p> </li> <li id="GUID-13A46F03-5475-5DB2-8DDF-D23BF17C2AE3"><p>Make the connect or pass decision. </p> </li> </ol> <p>When the service discovery provided by the class of device is not adequate to determine which device to select, use the SDP Agent, discussed below. </p> <p><b>Using the Bluetooth SDP Agent</b> </p> <p>The Bluetooth SDP database contains information about the services available on a device. Service discovery queries can be used on each device found to establish if it is a suitable choice. SDP queries are performed through the <xref href="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita">Bluetooth Service Discovery Agent Overview</xref>. </p> <p>You can use the SDP Agent to discover the services available on a device and to look up specific attributes of a service. Several tutorials exist to show how the SDP Agent is used. See <xref href="GUID-2F1C6B4C-2C23-5A35-A0D2-223EC6238F7D.dita">Bluetooth Service Discovery Agent Overview</xref> for more information. </p> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-21D01027-20A5-5FD6-AEC0-71DC8D84B61F"><p> <xref href="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita">Selecting a Remote Device</xref>  </p> </li> <li id="GUID-F5A3B917-F0B1-525C-98EC-F28AA6C4D95E"><p> <xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring About Remote Devices</xref>  </p> </li> <li id="GUID-BFFCABA0-BAFF-5515-91A2-03A070B2990C"><p> <b>Inquiring About Services on a Remote Device</b> - This document </p> </li> <li id="GUID-46194C36-BD1A-530E-8B2F-9D3E729DAA6E"><p> <xref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita">Connecting and Transferring Data to a Remote Device</xref>  </p> </li> <li id="GUID-1F1F844D-827A-55CE-96B0-8C59292387B3"><p> <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">Using security on outgoing sockets</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1598248-EE3D-5ED5-A431-02DCEBEDF472.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A1598248-EE3D-5ED5-A431-02DCEBEDF472" xml:lang="en"><title> SIP
+Profile Setting</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>SIP Profiles are a set of configurable parameters related to registration.
+The SIP Profiles are stored in <xref href="GUID-27F39152-0AF2-577A-A367-BCEE9060902E.dita">CenRep</xref>.
+The applications retrieve the profiles based on parameters (AOR, Profile Type
+to mention a few) from CenRep and use them. </p>
+<p>The SIP Profiles can be provided with the device.(Default) </p>
+<p>The user can create new SIP Profiles as per requirement. </p>
+<p>The existing SIP Profiles (Default) can be customised by the user. </p>
+<p>A Key Schema ( Key Space Design) is defined for the storage of the SIP
+Profile in CenRep. </p>
+<section><title> Key Schema for a SIP Profile</title><p>SIP Profile data is
+referenced by using TUint32 constant as a Key. Several Keys defined in CSIPProfile,CSIPManagedProfile
+classes together define the parameters that constitute a complete SIP Profile.
+For more details refer to SIP Profile API Parameters. </p><p>The following
+schema is used to store SIP profile information in the Central Repository:
+ </p><table id="GUID-6521952F-3664-40EE-BEF8-40FAA9B82D45">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top"><p>8 bits   </p></entry>
+<entry valign="top"><p> 12 bits</p></entry>
+<entry valign="top"><p>12 bits</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Profile Id      </p></entry>
+<entry><p> Variable Id</p></entry>
+<entry><p>Array index</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Profile Id</b> defines a SIP profile Id. The valid range for
+profile Id is 1 to 255. </p><p><b>Variable Id</b> identifies the variable.
+There can be a maximum of 4095 variables. </p><p><b>Array Index</b> indexes
+the array attribute. </p><ul>
+<li><p>The value at the ‘zero index’ contains the number of items in the array.</p></li>
+<li><p>Two different type of arrays are used :</p><ul>
+<li><p>Arrays that contain only data items. These arrays contain up to 4095
+elements .  </p></li>
+<li><p>Arrays that contain a list of Key value pairs. These arrays contain
+up to 2047 elements.</p><table id="GUID-E3BCE901-5E92-4305-94E6-9C7C81E8555B">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top"><p>Element </p></entry>
+<entry valign="top"><p>Binary value</p></entry>
+<entry valign="top"><p> Data saved</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Array[0]    </p></entry>
+<entry><p> 000000000000b</p></entry>
+<entry><p> 2(array length) </p></entry>
+</row>
+<row>
+<entry><p>Array[1]      </p></entry>
+<entry><p> 000000000001b</p></entry>
+<entry><p>45</p></entry>
+</row>
+<row>
+<entry><p>Array[2]     </p></entry>
+<entry><p>000000000002b </p></entry>
+<entry><p>67</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>Key/value array are stored in Key first order as {Key, value},{Key,
+value} pairs.</p><table id="GUID-F65C1D91-EA0E-4263-94A3-064D9645495B">
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry valign="top"><p>Element  </p></entry>
+<entry valign="top"><p>Binary value</p></entry>
+<entry valign="top"><p>Data saved</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Array[0]      </p></entry>
+<entry><p> 000000000000b</p></entry>
+<entry><p>4(array length)</p></entry>
+</row>
+<row>
+<entry><p>Array[1]     </p></entry>
+<entry><p>000000000001b</p></entry>
+<entry><p> ‘Server’(Key)</p></entry>
+</row>
+<row>
+<entry><p>Array[2]      </p></entry>
+<entry><p> 000000000002b</p></entry>
+<entry><p>‘ 192.168.1.1’(value)</p></entry>
+</row>
+<row>
+<entry><p>Array[3]      </p></entry>
+<entry><p> 000000000003b</p></entry>
+<entry><p>‘ Proxy’(Key)</p></entry>
+</row>
+<row>
+<entry><p>Array[4]     </p></entry>
+<entry><p> 000000000004b</p></entry>
+<entry><p>‘ 192.168.1.1’(value)</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></li>
+</ul></li>
+</ul></section>
+<example><p>The following example shows the complete CenRep Key/value data
+stored for a single predefined profile.The Key values are provided assuming
+Profile ID is '1' .  </p><p>  Provider Name: ‘Example Profile’
+  </p><p>Profile Id: 1   </p><p>Profile Type/Class: Internet  </p><p> Profile
+Type/Name : ‘IETF’  </p><p> Registrar Address: ‘192.168.1.1’  </p><p> Registrar
+User: ‘reguser’</p><p> Registrar Password: ‘regpass’   </p><p>Registrar Realm:
+’realm’   </p><p>Proxy Address: ‘192.168.1.1’   </p><p>Proxy User: ‘proxyuser’
+ </p><p> Proxy Password: ‘proxypass’  </p><p> Proxy Realm: ‘realm’   </p><p>Public
+User Name: ‘user@192.168.1.1’  </p><p> Password: ‘password’   </p><p>Proxy
+extension parameters : [key_1=‘value 1’, key_n=‘value n’]  </p><p> Registrar
+extension parameters : [key_1=‘value 1’, key_2=‘value 2’, key_n=‘value n’]
+  </p><p>Extension integer parameters :[11=1234, 22=5678]   </p><p>Extension
+boolean parameters :[33=1]  </p><p> Extension descriptor parameters : [44=‘extension
+descriptor parameter value’]  </p><p> Extension descriptor array parameters
+: [ [55, ‘Sub Array1 value1’, ‘Sub Array1 value2’, ‘Sub Array1 value3’], [66,
+‘Sub Array2 value1’, ‘Sub Array2 value2’, ‘Sub Array2 value3’, ‘Sub Array2
+value4’] ]  </p><table id="GUID-60D1747B-E298-5F42-B2CE-9802A995A539">
+<tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry> Member</entry>
+<entry> CenRep Key</entry>
+<entry> Key value</entry>
+<entry> Data saved</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>iSIPProviderName </p> </entry>
+<entry><p>KSIPProviderName </p> </entry>
+<entry><p>0x01002000 </p> </entry>
+<entry><p>‘Example Profile’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPProfileType. iSIPProfileClass </p> </entry>
+<entry><p>KSIPProfileClass </p> </entry>
+<entry><p>0x01FFA000 </p> </entry>
+<entry><p>0 (0=Internet,1=Ims,2=Other) </p> </entry>
+</row>
+<row>
+<entry><p>iSIPProfileType. iSIPProfileName </p> </entry>
+<entry><p>KSIPProfileName </p> </entry>
+<entry><p>0x01FFD000 </p> </entry>
+<entry><p>'IETF’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrar </p> </entry>
+<entry><p>KiSIPRegistrar </p> </entry>
+<entry><p>0x01082000 </p> </entry>
+<entry><p>‘192.168.1.1[:port]’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarParameter[i] </p> </entry>
+<entry><p>KSIPRegistrarDigestUserName </p> </entry>
+<entry><p>0x01FF1000 </p> </entry>
+<entry><p>‘Proxy’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarParameter[i] </p> </entry>
+<entry><p>KSIPRegistrarDigestPassword </p> </entry>
+<entry><p>0x01FEF000 </p> </entry>
+<entry><p>'192.168.1.1’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarParameter[i] </p> </entry>
+<entry><p>KSIPRegistrarDigestRealm </p> </entry>
+<entry><p>0x01FF0000 </p> </entry>
+<entry><p>‘realm’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxy </p> </entry>
+<entry><p>KSIPOutboundProxy </p> </entry>
+<entry><p>0x01083000 </p> </entry>
+<entry><p>‘192.168.1.1[:port;lr]’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyParameter[i] </p> </entry>
+<entry><p>KSIPProxyDigestUserName </p> </entry>
+<entry><p>0x01FF4000 </p> </entry>
+<entry><p>‘proxyuser’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyParameter[i] </p> </entry>
+<entry><p>KSIPProxyDigestPassword </p> </entry>
+<entry><p>0x01FF2000 </p> </entry>
+<entry><p>‘proxypass’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyParameter[i] </p> </entry>
+<entry><p>KSIPProxyDigestRealm </p> </entry>
+<entry><p>0x01FF3000 </p> </entry>
+<entry><p>‘realm’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPProfileId </p> </entry>
+<entry><p>KSIPProfileId </p> </entry>
+<entry><p>0x01001000 </p> </entry>
+<entry><p>1(first profile = 1, second = 2, …) </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyExtParameter[0] </p> </entry>
+<entry><p>KSIPExtProxyParam </p> </entry>
+<entry><p>0x01FFE000 </p> </entry>
+<entry><p>4 (the length of proxy extension parameter array) </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyExtParameter[1] </p> </entry>
+<entry><p>KSIPExtProxyParam </p> </entry>
+<entry><p>0x01FFE001 </p> </entry>
+<entry><p>'key_1' </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyExtParameter[2] </p> </entry>
+<entry><p>KSIPExtProxyParam </p> </entry>
+<entry><p>0x01FFE002 </p> </entry>
+<entry><p>‘value 1’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyExtParameter[n-1] ‘ </p> </entry>
+<entry><p>KSIPExtProxyParam </p> </entry>
+<entry><p>0x01FFE003 </p> </entry>
+<entry><p>'key_n’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPOutboundProxyExtParameter[n] </p> </entry>
+<entry><p>KSIPExtProxyParam </p> </entry>
+<entry><p>0x01FFE004 </p> </entry>
+<entry><p>‘value n’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[0] </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC000 </p> </entry>
+<entry><p>6 (the length of registrar extension parameter array) </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[1] ‘ </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC001 </p> </entry>
+<entry><p>'key_1’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[2] </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC002 </p> </entry>
+<entry><p>‘value 1’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[3] </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC003 ‘ </p> </entry>
+<entry><p>'key_2’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[4] </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC004 </p> </entry>
+<entry><p>‘value 2’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[n-1] </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC005 ‘ </p> </entry>
+<entry><p>'key_n’ </p> </entry>
+</row>
+<row>
+<entry><p>iSIPRegistrarExtParameter[n] </p> </entry>
+<entry><p>KSIPRegistrarExtParam </p> </entry>
+<entry><p>0x01FFC006 </p> </entry>
+<entry><p>‘value n’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionIntParams[0] </p> </entry>
+<entry><p>KSIPExtensionIntParam </p> </entry>
+<entry><p>0x01FF8000 </p> </entry>
+<entry><p>4 (the length of extension int parameter array) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionIntParams[1] </p> </entry>
+<entry><p>KSIPExtensionIntParam </p> </entry>
+<entry><p>0x01FF8001 </p> </entry>
+<entry><p>11 (the id of the first extension int parameter) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionIntParams[2] 1234 </p> </entry>
+<entry><p>KSIPExtensionIntParam </p> </entry>
+<entry><p>0x01FF8002 </p> </entry>
+<entry><p>1234(value of the first extension int parameter) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionIntParams[3] </p> </entry>
+<entry><p>KSIPExtensionIntParam </p> </entry>
+<entry><p>0x01FF8003 </p> </entry>
+<entry><p>22 (the id of the second extension int parameter) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionIntParams[4] 5678 (value of the second extension int parameter) </p> </entry>
+<entry><p>KSIPExtensionIntParam </p> </entry>
+<entry><p>0x01FF8004 </p> </entry>
+<entry><p>5678 (value of the second extension int parameter) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionBoolParams[0] </p> </entry>
+<entry><p>KSipExtensionBoolParam </p> </entry>
+<entry><p>0x01FF7000 </p> </entry>
+<entry><p>2 (the length of extension Boolean parameter array) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionBoolParams[1] </p> </entry>
+<entry><p>KSipExtensionBoolParam </p> </entry>
+<entry><p>0x01FF7001 </p> </entry>
+<entry><p>33 (the id of the boolean parameter ) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionBoolParams[2] </p> </entry>
+<entry><p>KSipExtensionBoolParam </p> </entry>
+<entry><p>0x01FF7002 </p> </entry>
+<entry><p>1 (ETrue) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrParams[0] </p> </entry>
+<entry><p>KSIPExtensionDescParam </p> </entry>
+<entry><p>0x01FF6000 </p> </entry>
+<entry><p>2 (the length of extension descriptor array) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrParams[1] </p> </entry>
+<entry><p>KSIPExtensionDescParam </p> </entry>
+<entry><p>0x01FF6001 </p> </entry>
+<entry><p>44 (the id of the descriptor parameter ) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrParams[2] </p> </entry>
+<entry><p>KSIPExtensionDescParam </p> </entry>
+<entry><p>0x01FF6002 </p> </entry>
+<entry><p>‘extension descriptor parameter value’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[0] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5000 </p> </entry>
+<entry><p>11 (total count of array) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[1] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5001 </p> </entry>
+<entry><p>3 (Sub Array1 count) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[2] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5002 </p> </entry>
+<entry><p>55 (Sub Array1 id) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[3] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5003 </p> </entry>
+<entry><p>‘Sub Array1 value1’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[4] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5004 </p> </entry>
+<entry><p>‘Sub Array1 value2’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[5] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5005 </p> </entry>
+<entry><p>‘Sub Array1 value3’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[6] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5006 </p> </entry>
+<entry><p>4 (Sub Array2 count) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[7] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5007 </p> </entry>
+<entry><p>66 (Sub Array2 id) </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[8] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5008 </p> </entry>
+<entry><p>‘Sub Array2 value1’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[9] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF5009 </p> </entry>
+<entry><p>‘Sub Array2 value2’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[10] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF500A </p> </entry>
+<entry><p>‘Sub Array2 value3’ </p> </entry>
+</row>
+<row>
+<entry><p>iExtensionDescrArrayParams[11] </p> </entry>
+<entry><p>KSIPExtensionDescArrayParam </p> </entry>
+<entry><p>0x01FF500B </p> </entry>
+<entry><p>‘Sub Array2 value4’ </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA" xml:lang="en"><title>Receiving
+long-tap events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To  receive long-tap events in your application using the Touch UI utilities
+API, follow the steps below:</p>
+<ol>
+<li id="GUID-4726E563-99AA-42E8-8AED-63BC9F176A83"><p>Link the Avkon libraries <codeph>avkon.lib</codeph> and <codeph>eikcoctl.lib</codeph> to
+the project file of the application.</p></li>
+<li id="GUID-95DE053E-A494-4C33-8FDB-125C77370EC1"><p>Provide an observer
+class that implements the <codeph>MAknLongTapDetectorCallBack</codeph> interface.</p></li>
+<li id="GUID-3E2B0808-78F8-48B6-8A58-B1A41C8DB5D6"><p>Create an instance of
+the class <codeph>CAknLongTapDetector</codeph> and pass pointer events to
+the long-tap detector.</p></li>
+<li id="GUID-C7E73EDE-6BC3-4E51-9E18-675FD3B32881"><p>Receive long-tap events
+through the observer interface.</p></li>
+<li id="GUID-04839B40-D170-484E-A4BC-C724FB715814"><p>Delete the long-tap
+detector.</p></li>
+</ol>
+<p>Use cases for the long-tap detector are shown in the figure below.</p>
+<fig id="GUID-1439445E-81AB-4AA4-86E0-00F53CD46D8F">
+<title>Touch UI utilities API use cases</title>
+<image href="GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e50755_href.png" scale="70" placement="inline"/>
+</fig>
+<p>To use the Touch UI utilities long-tap detector in your application, implement
+the following use cases.</p>
+<ul>
+<li><p><xref href="GUID-4102F39E-6215-44AD-9E30-6D8E86114D7D.dita">Creating the
+long-tap detector</xref></p></li>
+<li><p><xref href="GUID-C0C93B8A-C63C-424E-9C30-5D69C1578660.dita">Handling long-tap
+events</xref></p></li>
+<li><p><xref href="GUID-96228425-F2C8-4767-95AD-520C655B73C5.dita">Deleting long-tap
+detector</xref></p></li>
+</ul>
+<p>The following use cases are optional, allowing you to set additional properties
+for your long-tap detector.</p>
+<ul>
+<li><p><xref href="GUID-92281C52-4F2E-4D9A-9D5A-E0C5F0433339.dita">Enabling and
+disabling the long-tap detector</xref></p></li>
+<li><p><xref href="GUID-BEA5E4F1-B355-47A1-99DC-8E8EDB7B1CB3.dita">Setting the
+time after which the long-tap event is sent</xref></p></li>
+<li><p><xref href="GUID-BF3767E9-054E-4894-9216-00866FC9C3D8.dita">Setting the
+time before the long-tap animation starts</xref></p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A16508C2-2743-5E36-BCFB-C509ACCD372F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A16508C2-2743-5E36-BCFB-C509ACCD372F" xml:lang="en"><title>Fixed
+Processes</title><shortdesc>A fixed process is a process in which its chunks always reside
+at the same linear address - their home address; only their access permissions
+are modified during a context switch. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The usual re-mapping from the data section to the home section is not done
+and greatly improves performance.</p>
+<p>Fixed processes do not see the virtual machine model; each process must
+have its data at a different linear address. It is, therefore, not possible
+to run multiple copies of a fixed process.</p>
+<p>Fixed processes are suitable only for system server processes such as the
+file server, window server etc. since the majority of context switches involve
+these processes.</p>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita">chunks</xref></desc>
+</link>
+<link href="GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita"><linktext>Virtual machine
+model</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A168E5EB-4CF7-4B74-B67C-EDFD5378C5BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A168E5EB-4CF7-4B74-B67C-EDFD5378C5BF" xml:lang="en"><title>Accessing
+toolbar extension items</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Like with the actual toolbar, each control in the toolbar extension should
+have a unique ID. You can access the toolbar extension controls from your
+application using these IDs.</p>
+<p>The example below shows how to access toolbar extension items using the
+contol ID.</p>
+<codeblock xml:space="preserve">void CMyAppView::DoSomethingToExtensionButton()
+    {
+    CAknToolbar* toolbar = Toolbar();
+    if ( toolbar )
+        {
+        CAknToolbarExtension* toolbarExtension = toolbar-&gt;ToolbarExtension();
+        if ( toolbarExtension )
+            {
+            CAknButton* button = 
+                static_cast&lt;CAknButton*&gt;( toolbarExtension-&gt;ControlOrNull( KExtensionButtonId ) );
+            if ( button )
+                {
+                ...
+                } 
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A18153C0-230C-51FB-9384-A48BB4E42F03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A18153C0-230C-51FB-9384-A48BB4E42F03" xml:lang="en"><title>Cleanup
+Strategy</title><shortdesc>The support for custom cleanup strategies is based on a template-based
+implementation of the Strategy design pattern. Cleanup strategies can be specified
+as an optional template parameter of the class templates for automatic resource
+management. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Default Cleanup Strategy </title> <p>The default cleanup strategy
+is determined by the <xref href="GUID-72BC7E43-1ABA-334A-B8ED-F9A152505FE6.dita"><apiname>TResourceCleanupStrategy</apiname></xref> class template
+which by default calls a function named <xref href="GUID-78FEE338-1BD4-360B-93E2-80FD2753396D.dita"><apiname>Cleanup()</apiname></xref> function.
+The <xref href="GUID-CE0F22BA-8789-3659-87C4-164EB5862B4C.dita"><apiname>DEFINE_CLEANUP_FUNCTION</apiname></xref> macro defines an inline function
+named Cleanup() function which is invoked for cleanup of the managed object
+in place of the default CallCleanupFunction function defined in the header
+file. </p> </section>
+<section><title>DEFINE_CLEANUP_FUNCTION Macro</title> <p> <xref href="GUID-CE0F22BA-8789-3659-87C4-164EB5862B4C.dita"><apiname>DEFINE_CLEANUP_FUNCTION</apiname></xref> is
+provided in order to enable Symbian Developers to easily define the default
+cleanup member function for a class type, such as an R-class. The macro can
+be used in the same namespace in which the R-class is defined or in a namespace
+in which the R-class is used. The DEFINE_CLEANUP_FUNCTION can be used by class
+designers, but if a class does not have a cleanup function specified, then
+the class users can use the DEFINE_CLEANUP_FUNCTION in order to define the
+default cleanup function for that class. </p> </section>
+<example><title>Clean-up Strategy example</title> <codeblock id="GUID-4F8920C6-A073-503B-8DB0-74900745B47B" xml:space="preserve">DEFINE_CLEANUP_FUNCTION(RSimple, ReleaseData);</codeblock> <p>This sets the default cleanup behaviour for the RSimple class to be <xref href="GUID-343443A2-42F8-320E-A90C-5A7EA92F3C31.dita#GUID-343443A2-42F8-320E-A90C-5A7EA92F3C31/GUID-B87E7EAD-DCB3-3528-A74F-17887291F845"><apiname>RSimple::ReleaseData()</apiname></xref>.
+If this Macro is not used then the default cleanup behaviour would be to call <xref href="GUID-343443A2-42F8-320E-A90C-5A7EA92F3C31.dita#GUID-343443A2-42F8-320E-A90C-5A7EA92F3C31/GUID-08235146-9589-368E-B223-A2E464A2169B"><apiname>RSimple::Close()</apiname></xref>. </p> </example>
+</conbody><related-links>
+<link href="GUID-3799F0DA-B99C-55BB-B44F-63B971DF1865.dita"><linktext>Cleanup Strategy
+Tutorial</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A188606F-4A8E-5A85-A241-E15219960EFA"><title>Loader Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-AE825AB3-3799-5A7A-A74D-D6E457A6997E"><p> <xref href="GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita#GUID-A188606F-4A8E-5A85-A241-E15219960EFA/GUID-E36370EC-CD5E-54AE-AD62-2BA3B70F5379">Purpose</xref>  </p> </li> <li id="GUID-9D2C951C-6092-53BB-BFA9-4D33230721FA"><p> <xref href="GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita#GUID-A188606F-4A8E-5A85-A241-E15219960EFA/GUID-89A8CABD-6B31-5D10-87F6-922CCFB83186">Key concepts</xref>  </p> </li> <li id="GUID-B21577D8-3B8B-596F-A3B6-6AC2538F6F28"><p> <xref href="GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita#GUID-A188606F-4A8E-5A85-A241-E15219960EFA/GUID-64154337-D706-5DE1-9319-4FEA6181EFC4">Architectural relationships</xref>  </p> </li> </ul> <section id="GUID-E36370EC-CD5E-54AE-AD62-2BA3B70F5379"><title>Purpose</title> <p>The loader makes EXEs and DLLs ready to run. </p> <p>The build tools compile the source code into an executable file. An executable file is called a binary. The build tools arrange the compiled code into EXEs and DLLs. The source code, header files and other information that defines an executable file is defined in an mmp file. The loader applies relocation information to the code and data sections of EXEs and DLLs. The loader also loads DLLs that are referred to by other EXEs and DLLs. EXEs and DLLs can then run in the process into which they are loaded. </p> </section> <section id="GUID-89A8CABD-6B31-5D10-87F6-922CCFB83186"><title>Key concepts</title> <p><b>The loader server</b> </p> <p>The Symbian OS loader is a server. The loader server has no public client interface. The client interface is internal to Symbian OS. Requests to load an EXE or a DLL are passed to the loader when you do the following: </p> <ul><li id="GUID-5DFBB7F5-2F30-50C7-9144-3D6D85C0ACA1"><p>start a new process - a call to <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-DD214BA3-907E-3C7F-93C6-924A9A115A02"><apiname>RProcess::Create()</apiname></xref>  </p> </li> <li id="GUID-B88FC041-7643-5CA0-9796-A51E64CAA1DF"><p>load a DLL - a call to <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>  </p> </li> <li id="GUID-A7578989-6BDB-5CEA-B3C3-0B5A08E57166"><p>load a logical device driver - a call to <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-AE0D51B7-7ADC-3C9F-ACAA-8F6D9EA0AEFA"><apiname>User::LoadLogicalDevice()</apiname></xref>. A logical device driver is a type of DLL. </p> </li> <li id="GUID-34DC54FE-FCEF-5F83-B205-9BA5B7140680"><p>load a physical device driver - a call to <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-A0F4BF4A-9C58-3E5E-88E1-6D98597DDA18"><apiname>User::LoadPhysicalDevice()</apiname></xref>. A physical device driver is a type of DLL. </p> </li> <li id="GUID-51318E5E-4534-589B-B4BD-92D73F832A6F"><p>load a file system - a call to <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-51353BE2-9133-39F5-83F3-A5DB88D858CA"><apiname>RFs::AddFileSystem()</apiname></xref>. A file system is a type of DLL. A call to <codeph>RFs::AddFileSystem()</codeph> requires DiskAdmin capability. See <xref href="GUID-99D8A4E8-BC4F-39FF-A3DF-832CF0411629.dita"><apiname>ECapabilityDiskAdmin</apiname></xref>. </p> </li> <li id="GUID-8394C231-341B-5EA6-B9C2-01F75685813D"><p>load a file server extension - call to <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-D45FD363-EEF9-3F77-8FA1-49270D8E89A0"><apiname>RFs::AddExtension()</apiname></xref>. A file server extension is a type of DLL. This function requires DiskAdmin capability. See <xref href="GUID-99D8A4E8-BC4F-39FF-A3DF-832CF0411629.dita"><apiname>ECapabilityDiskAdmin</apiname></xref>. </p> </li> <li id="GUID-F1889916-80EB-55B6-BEAF-F66164F3838C"><p>load a locale - a call to <xref href="GUID-454ACAB5-1573-323C-820E-AF542B149D2A.dita#GUID-454ACAB5-1573-323C-820E-AF542B149D2A/GUID-9F04584E-DD0B-39CE-8666-88F67F3B83BF"><apiname>TExtendedLocale::LoadLocale()</apiname></xref>. </p> </li> </ul> <p><b>Version numbers</b> </p> <p><b>The reason for version numbers</b> </p> <p>More than one version of an EXE can exist on a device at the same time. More than one version of a DLL can exist on a device at the same time. A device can store versions of an EXE or DLL that are not compatible with an older version of that EXE or DLL. </p> <p>A version number is a set of two numbers. The loader uses these numbers to identify copies of the executable file. The two numbers are called the major version number and the minor version number. The build tools encode the two numbers into the header of the executable file. When a DLL is built, the version numbers are encoded into the import library. </p> <p><b>The structure of version information</b> </p> <p>DLLs are the most common users of versions. You assign new values to the version numbers of a DLL when you change the published API of the DLL. Symbian recommends the following procedure: </p> <ul><li id="GUID-A3D6B7C6-E48E-5374-8EFE-29EB129FEE04"><p>change the minor version number if you make a change to a DLL that is backward compatible. An example is a new function in the DLL. </p> </li> <li id="GUID-F6813400-1E6A-58B9-8360-7FD364F2153A"><p>change the major version number if you make a change to a DLL that breaks an interface. An example is the removal of a function or a change to the signature of a function. An interface break is disruptive and must be prevented. </p> </li> </ul> <p>The major and minor version numbers are defined in the <filepath>.mmp</filepath> file that defines the source code, header files and other options that apply to the executable file. </p> <p>If you do not specify version numbers, the build tools apply the following default values: </p> <ul><li id="GUID-CBF4D098-3A83-53E6-9E54-0A9B487D6E22"><p>Major version number : 10 </p> </li> <li id="GUID-46E7516E-988B-5F92-9877-FEE17D3F26A7"><p>Minor version number : 0 </p> </li> </ul> <p>The major version number and the minor version number are stored in the header of an EXE and DLL. The two numbers are stored in a single 32 bit value. The high 16 bits hold the major version number. The low 16 bits hold the minor version number. </p> <p>When you build a DLL, the build tools encode the version numbers into the filename of the import library (the <filepath>.lib</filepath> file). The build tools also create an import library that does not have the version numbers encoded as part of the filename.The following example shows how the version numbers are encoded in the filename. The major version number is (decimal) 11 and the minor version number is (decimal) 2. The version numbers in the filename are in hexadecimal. </p> <p> <filepath>abcdsrv{000B0002}.lib</filepath>  </p> <p>Notes: </p> <ul><li id="GUID-7DC90016-5A54-5939-84B1-DDB0B2D4D9F5"><p>The left bracket and the right bracket are part of the name. </p> </li> <li id="GUID-BC291976-EB6D-59D2-8941-64F6ED3AC191"><p>The first four digits after the open bracket are the hexadecimal representation of the major version number. </p> </li> <li id="GUID-51590778-985F-5DCC-9191-E937B1058F51"><p>The second four digits are the hexadecimal representation of the minor version number. </p> </li> </ul> <p>The build tools do not encode the version numbers in the filename of the executable file. </p> <p><b>Loader search rules</b> </p> <p>EXEs and DLLs can exist on more than one drive. There can be more than one version of an EXE and more than one version of a DLL. The loader uses search rules to select the EXE and DLL to load. </p> <p>See <xref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita">Loader search rules</xref>  </p> <p><b>Emulator</b> </p> <p>Version numbers are stored in import files for DLLs that run on devices and the emulator. Version numbers change how the loader functions on devices, but not in the emulator. You cannot encode the version numbers in the import library file name on the emulator. </p> <p><b>Tools support</b> </p> <p>Use the build tools to apply version numbers to EXEs and DLLs. You specify version numbers in the <filepath>.mmp</filepath> file that describes the EXE or DLL. </p> <p>See also <xref href="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita">mmp file syntax</xref> and <xref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita">Build tools guide</xref>. </p> </section> <section id="GUID-64154337-D706-5DE1-9319-4FEA6181EFC4"><title>Architectural relationships</title> <p>The loader is a server that runs in a separate thread in the file server process. The loader is built as part of the file server. </p> <p>The loader server starts when the file server starts. The file server starts after the kernel is loaded at system start. </p> <p>The loader runs on the user side, but calls the kernel for services that are not available to general applications. Examples of services are process creation and code segment creation. A code segment is an object that represents a piece of code loaded into RAM. A code segment also represents a piece of code that runs directly from ROM. The kernel services that the loader uses are protected. The file server process only is allowed to access these services. </p> <p>The following picture is an example of program flow. In this example, a client calls <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>, which exists in <filepath>euser.dll</filepath>. Internal functions make client-server calls to the loader server. The loader server code exists in <filepath>efile.exe</filepath>. The loader server uses kernel services. </p> <fig id="GUID-5FCAE81A-19BC-5BE7-89D2-096A87735381"><image href="GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e239585_href.png" placement="inline"/></fig> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A19A1F43-E42B-5FC2-AE58-A7BC67B6733A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A19A1F43-E42B-5FC2-AE58-A7BC67B6733A"><title>Migrating from CommDb to the CommsDat API</title><shortdesc>This section highlights some of the issues in the migration from the CommDb to the CommsDat API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The CommsDat API replaces CommDb. Users of CommDb do not need to make changes to their code. Symbian OS provides a shim that translates the calls to the CommDb API to calls to the CommsDat API. </p> <p>The CommDb API will be withdrawn in the future. Developers are recommended to migrate to the CommsDat API. </p> <section><title>Removal of the CommDb SQL API</title> <p>The Commdb SQL API is removed. </p> <p>The CommDb API allows tools and applications to select views of database tables that match field values. The CommDb API also allows tools and applications to create new user defined tables in the database at run time. </p> <p>The CommsDat keeps this behaviour. Tools and applications can select sets of records by pattern matching fields in a primed table, record or field object with records in the database. Tools and applications can also use the CommsDat API to define and store user defined records. </p> </section> <section><title>Referring to database elements by Id instead of by
+          Name</title> <p>The Commdb API has an interface based on column names. This method is not efficient. </p> <p>The CommsDat API allows tools and applications to find elements in the database by numeric id and to provide direct access through mapped data objects. You can continue to find elements in the Comms Database by name. The Nifman API continues to use this method. This method is not recommended, because it is very inefficient. </p> </section> <section><title>Retrieving small amounts of data</title> <p>Tools and applications do not need to simulate the use of a whole view when they use the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> &lt;T&gt; class. Tools and applications can use <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> &lt;T&gt; objects for data retrieval. </p> </section> <section><title>Use record tags instead of record names in user defined
+          fields</title> <p>Many CommDb searches are for records by user defined record name. This type of search is not efficient. </p> <p>The use of numeric Ids improves the performance of searches. User defined records can define a record tag field. Tools and applications give this field the unique numeric Id <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdRecordTag</apiname></xref>. Current procedure fills this field with the record Id of the record. This procedure provides backward compatibility with CommdbId. The field value can be any numeric record tag. For example, a <keyword>UID</keyword> value gives a convenient way to link records . </p> <p>See <xref href="GUID-A96ABD2C-A338-58E5-A674-E840B1F53670.dita">Creating a User Defined Table: Tutorial</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1BD83F8-C6DB-5737-8052-7B710B19147F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A1BD83F8-C6DB-5737-8052-7B710B19147F" xml:lang="en"><title>Using Memory
+Allocation</title><shortdesc>These documents cover heap management, specifically sharing, walking
+and switching heaps. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE" xml:lang="en"><title>Capturing still images</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To capture still images or to use the display as a viewfinder, build
+your application around the Symbian Ecam camera utility. To make use of the
+device camera to capture an image, the application needs to repeat the steps
+described in the illustration below.</p>
+<fig id="GUID-65212152-6862-4990-9869-CF643B9A5845"><title>The steps required to capture a still image</title><image href="GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e266838_href.png"/></fig>
+<note>
+<p>The settings you can use in your application depend on what the camera
+hardware on the device supports.</p>
+</note>
+<p>To capture images, use the methods of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html" format="application/java-archive"><codeph>CCamera</codeph></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/MCameraObserver2Class.html" format="application/java-archive"><codeph>MCameraObserver2</codeph></xref> classes to construct your application. <codeph>MCameraObserver2</codeph> uses
+the advanced camera features of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aCCameraAdvancedSettings" format="application/java-archive"><codeph>CCamera::CCameraAdvancedSettings</codeph></xref> class. </p>
+<p>For a reference example, see <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/9a3e1226-79db-4c8e-bd70-7d9d22aaa6eb/S60_Platform_Camera_Example.html" scope="external">S60 Platform: Camera Example</xref> on Forum Nokia.</p>
+<section><title>To capture still images on a mobile device</title>
+<ol>
+<li id="GUID-9E819F98-B4C6-4C0B-A723-F82494E8655B"><p>Initialize
+the onboard camera.</p>
+<ul>
+<li><p>Create a camera object using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aNew2L%28MCameraObserver2%20%26amp%3b%2cTInt%2cTInt%29" format="application/java-archive"><codeph>CCamera::New2L()</codeph></xref> method.</p></li>
+<li><p>Reserve the camera for your application using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aReserve%28%29" format="application/java-archive"><codeph>CCamera::Reserve()</codeph></xref> method. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/MCameraObserver2Class.html#%3a%3aMCameraObserver2%3a%3aHandleEvent%28const%20TECAMEvent%20%26amp%3b%29" format="application/java-archive"><codeph>MCameraObserver2::HandleEvent</codeph></xref> is called upon
+completion.</p></li>
+<li><p>Switch on the camera power using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aPowerOn%28%29" format="application/java-archive"><codeph>CCamera::PowerOn()</codeph></xref> method. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/MCameraObserver2Class.html#%3a%3aMCameraObserver2%3a%3aHandleEvent%28const%20TECAMEvent%20%26amp%3b%29" format="application/java-archive"><codeph>MCameraObserver2::HandleEvent</codeph></xref> is called upon
+completion.</p></li>
+<li><p>If needed, share the camera between multiple clients using
+the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aNewDuplicate2L%28MCameraObserver2%20%26amp%3b%2cTInt%29" format="application/java-archive"><codeph>CCamera::NewDuplicate2L()</codeph></xref> function. This function
+needs the handle of an existing camera object (use <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aHandle%28%29" format="application/java-archive"><codeph>CCamera::Handle()</codeph></xref>).</p></li>
+</ul>
+</li>
+<li id="GUID-1A42718C-0158-4BB6-B99F-48278369C3F3"><p>Configure
+the camera settings.</p>
+<ul>
+<li><p>Before you adjust the settings, make sure the camera hardware
+supports the particular option. Use <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aCameraInfo%28TCameraInfo%20%26amp%3b%29const" format="application/java-archive"><codeph>CCamera::CameraInfo()</codeph></xref> to retrieve and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/TCameraInfoClass.html" format="application/java-archive"><codeph>TCameraInfo</codeph></xref> to
+specify the camera information.</p><p>For example, to find out what
+image formats are supported by the onboard camera, use the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/TCameraInfoClass.html#%3a%3aTCameraInfo%3a%3aiImageFormatsSupported" format="application/java-archive"><codeph>TCameraInfo::iImageFormatsSupported</codeph></xref> member variable.</p></li>
+<li><p>Specify the image format using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aPrepareImageCaptureL%28TFormat%2cTInt%29" format="application/java-archive"><codeph>CCamera::PrepareImageCaptureL</codeph></xref> method. For a list of
+possible formats, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aTFormat" format="application/java-archive"><codeph>CCamera::TFormat</codeph></xref>.</p><p>Devices support image capture in EXIF JPEG format (<xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aEFormatExif" format="application/java-archive"><codeph>CCamera::EFormatExif</codeph></xref>), which is encoded with
+JPEG and requires no additional conversion.</p></li>
+<li><p>Specify the desired image size using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aEnumerateCaptureSizes%28TSize%20%26amp%3b%2cTInt%2cTFormat%29const" format="application/java-archive"><codeph>CCamera::EnumerateCaptureSizes()</codeph></xref> method.</p>
+</li>
+<li><p>Additionally, you can set, for example, the brightness, contrast,
+zoom level, flash mode, exposure and white balance of the image. For more
+information on the options, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aCCameraAdvancedSettings" format="application/java-archive"><codeph>CCamera::CCameraAdvancedSettings</codeph></xref> class. You can also use the settings directly under <codeph>CCamera</codeph>.</p>
+</li>
+</ul>
+<ul>
+<li><p>Before you can call <codeph>CCamera::CaptureImage()</codeph>,
+allocate memory and set up image format, size and clipping rectangle using
+the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aPrepareImageCaptureL%28TFormat%2cTInt%29" format="application/java-archive"><codeph>CCamera::PrepareImageCaptureL()</codeph></xref> method. This
+needs to be called only once for multiple captures.</p></li>
+</ul>
+</li>
+<li id="GUID-A7ED7A90-1432-4905-A0A5-0CC725997127"><p>Use the display
+of the device as a viewfinder by transferring image data from the camera to
+the display memory.</p>
+<ul>
+<li><p>Start the transfer of viewfinder data with direct screen
+access using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aStartViewFinderDirectL%28RWsSession%20%26amp%3b%2cCWsScreenDevice%20%26amp%3b%2cRWindowBase%20%26amp%3b%2cTRect%20%26amp%3b%29" format="application/java-archive"><codeph>CCamera::StartViewFinderDirectL()</codeph></xref> method.</p>
+</li>
+<li><p>Transfer viewfinder data as a bitmap using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aStartViewFinderBitmapsL%28TSize%20%26amp%3b%29" format="application/java-archive"><codeph>CCamera::StartViewFinderBitmapsL()</codeph></xref> method.
+ <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/MCameraObserver2Class.html#%3a%3aMCameraObserver2%3a%3aViewFinderReady%28MCameraBuffer%20%26amp%3b%2cTInt%29" format="application/java-archive"><codeph>MCameraObserver2::ViewFinderReady</codeph></xref> is called
+upon completion.</p></li>
+<li><p>Set viewfinder mirroring on and flip the image horizontally
+using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aSetViewFinderMirrorL%28TBool%29" format="application/java-archive"><codeph>CCamera::SetViewFinderMirrorL()</codeph></xref> method.</p>
+</li>
+<li><p>Stop the transfer of viewfinder data to the screen using
+the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aStopViewFinder%28%29" format="application/java-archive"><codeph>CCamera::StopViewFinder()</codeph></xref> method.</p></li>
+</ul>
+</li>
+<li id="GUID-136AEB7B-B618-456E-A7AA-27105A50B9DE"><p>Capture one
+or multiple images using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aCaptureImage%28%29" format="application/java-archive"><codeph>CCamera::CaptureImage()</codeph></xref> method. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/MCameraObserver2Class.html#%3a%3aMCameraObserver2%3a%3aImageBufferReady%28MCameraBuffer%20%26amp%3b%2cTInt%29" format="application/java-archive"><codeph>MCameraObserver2::ImageBufferReady()</codeph></xref> is called
+upon completion.</p></li>
+<li id="GUID-9EF06D1B-EB64-4406-A97F-FE0C9DA1664F"><p>To exit the
+application or to switch it to the background, switch off the camera power
+using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aPowerOff%28%29" format="application/java-archive"><codeph>CCamera::PowerOff()</codeph></xref> method and release the
+camera for other applications using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aRelease%28%29" format="application/java-archive"><codeph>CCamera::Release()</codeph></xref> method.</p></li>
+<li id="GUID-DDC63446-DACC-434D-B6EE-E661C4FC2813"><p>The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html" format="application/java-archive"><codeph>CCamera</codeph></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/MCameraObserver2Class.html" format="application/java-archive"><codeph>MCameraObserver2</codeph></xref> classes
+are defined in the <codeph>ecam.h</codeph> header file. Add the following
+line to the <codeph>.h</codeph> file, which is used to deploy the API:</p>
+<codeblock id="GUID-BB25E774-4122-47AE-BDDD-6691BEAEB15E" xml:space="preserve">#include &lt;ecam.h&gt;</codeblock>
+</li>
+<li id="GUID-0053A8A8-8664-4E35-8D80-EA579503C463"><p>Make sure
+you have correct <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capabilities</xref> information
+set for your application. You need at least the <codeph>UserEnvironment</codeph> capability.</p>
+</li>
+<li id="GUID-CE8449BB-25A8-462A-8010-6B64F0120603"><p>Make sure <codeph>ecam.lib</codeph> is
+accessible to your linker when compiling your application by including it
+in your <codeph>mmp</codeph> file or by editing the project properties in
+your IDE, depending on your build environment.</p></li>
+</ol>
+</section>
+<section><title>See also</title>
+<p><xref href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita">Capturing Image</xref></p>
+<p><xref href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita">Controlling Pre-Image
+Capture </xref></p>
+<p><xref href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita">Controlling Captured
+Image</xref></p>
+<p><xref href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita">Controlling Still-image
+Capture</xref></p>
+<p><xref href="GUID-36BD6059-6547-5754-8BE0-F8051A838C14.dita">Using Time Nudge
+Capture Drive Mode </xref></p>
+<p><xref href="GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita">Background Processing
+for Ecam</xref></p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD" xml:lang="en"><title>Themes</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<fig id="GUID-26C36C79-765F-4E2A-85F8-BE2C44FDBBDA"><title>Personalization through themes</title><image href="GUID-B45B4D81-E2DF-436F-8138-8DAB6BAB27C9_d0e42350_href.png"></image></fig>
+<p>The term <i>theme</i> refers to a set of design elements installed in
+a package in a mobile device based on the Symbian platform that determines
+the visual appearance of the UI. Themes, also known as <i>skins</i>, only
+affect the visual appearance of the UI, the underlying architecture, interaction
+style, language settings, and general functionality are not affected. The
+Symbian platform provides an API to allow you to support themes in your applications.
+Although a mobile device based on the Symbian platform can contain several
+themes, mobile device users can only activate one theme at a time. When a
+new theme is activated, the appearance of all applications that support themes
+is altered.</p>
+<p>The following list contains some of the UI design elements that can
+change:</p>
+<ul>
+<li><p>display background</p></li>
+<li><p>color palette</p></li>
+<li><p>highlights</p></li>
+<li><p>pop-up window appearance</p></li>
+<li><p>ring tones</p></li>
+<li><p>common component look and feel</p></li>
+</ul>
+<p>Themes also support SVG-T graphics, which allow them to be scalable.
+Themes can contain bitmaps or SVG graphics or a mixture of both. </p>
+<p>For more information on the API that enables theme support in applications,
+see the Skins
+API documentation.</p>
+<p>For information on tools available for creating and modifying themes,
+see <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/nokia_themes.html">Forum
+Nokia</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A1ED2377-E196-423F-A5A2-1889C1CC3E05" xml:lang="en"><title>Cryptography</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Encryption and decryption of information are not part of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> architecture by default. A cryptography module is available separately, and it offers features such as cryptography algorithms, hash key, and random number generation.</p>
+<p>For more information, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Security-subsystem-guide/Crypto/index.html" format="application/java-archive">Cryptography API guide</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E"><title>inflatecompresstarget</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>inflatecompresstarget</codeph> </p> <p>Use the <codeph>inflatecompresstarget</codeph> statement to specify that the target executable should be compressed. In detail, the code and data sections of the executable are compressed with the Deflate, Huffman+LZ77 algorithm. </p> <p>Compression allows the stored executable to use less space on the file system. The executable loader decompresses the file when it is loaded. </p> <p>See also <xref href="GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita">compresstarget</xref>. </p> <p>See also <xref href="GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita">bytepaircompresstarget</xref>. </p> <p>See also <xref href="GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita">nocompresstarget</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A2031A61-3319-4FBA-BC71-AC1327182053.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A2031A61-3319-4FBA-BC71-AC1327182053" xml:lang="en"><title>Getting
+started with C++ Standard Library</title><shortdesc>The Standard C++ library depends on P.I.P.S.. The user must have
+the P.I.P.S. components installed before using the library.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D42A187D-603E-4D66-BAA8-86782B9C2717"><title>C++ IOstream
+and Standard Template Library Documentation</title><p>C++ IOStream library
+documentation can be found at <xref href="http://www.slac.stanford.edu/comp/unix/gnu-info/iostream_toc.html" scope="external">http://www.slac.stanford.edu/comp/unix/gnu-info/iostream_toc.html</xref>.</p><p>Similarly,
+Standard Template Library (STL) documentation can be found at <xref href="http://www.informatik.uni-freiburg.de/~danlee/fun/STL-doc/STL.html" scope="external">http://www.informatik.uni-freiburg.de/~danlee/fun/STL-doc/STL.html</xref>.</p></section>
+<section id="GUID-BF521201-7BE5-4AC5-8D35-1E15AC4887C7-GENID-1-6-1-10-1-1-9-1-5-1-3-2"><title>Changes to
+the MMP file</title><p><b>Add needed libraries used by the MMP file structure: </b></p><p>If
+developers want to use any of Standard C++ library, they must link to the
+corresponding library in the MMP file using the <codeph>LIBRARY</codeph> keyword.</p><p>If
+the application has <codeph>main()</codeph> as the entry point, the library <filepath>libcrt0.lib</filepath> must
+be specified as the first library otherwise, it results in linker errors.
+The user must link to the Symbian platform <filepath>euser.dll</filepath>.
+This is required since the static library uses some of the services of the
+Symbian platform, such as, creating cleanup stack, and having a top level
+TRAP. All these details are hidden from the developer. The developer will
+write the application as if it were for the UNIX environment.</p><codeblock xml:space="preserve">STATICLIBRARY  libcrt0.lib
+LIBRARY        libc.lib 
+LIBRARY        euser.lib  // Needed in order to use Symbian services
+</codeblock><p>The <filepath>libcrt0.lib</filepath> library is required for
+writing to <codeph>E32Main</codeph> within our application (EXE). This static
+library has an implementation of <codeph>E32Main</codeph> within which it
+calls the library initialization method followed by calling main written by
+the developer. This static library also retrieves command-line arguments and
+passes the same to main.</p><p>If the application has <codeph>E32Main()</codeph> as
+an entry point, there is no need to link to <filepath>libcrt0.lib</filepath> like
+in the example below.</p><codeblock xml:space="preserve">LIBRARY         libc.lib 
+LIBRARY         euser.lib</codeblock><p><b>Add required include paths</b></p><codeblock xml:space="preserve">SYSTEMINCLUDE   \epoc32\include\stdapis
+SYSTEMINCLUDE   \epoc32\include\stdapis\sys
+SYSTEMINCLUDE   \epoc32\include\stdapis\stlport 
+</codeblock><p><b>Linking of <codeph>libstdcpp</codeph></b></p><p>Following
+snippet shows how to perform the linking to <codeph>libstdcpp</codeph> on
+an emulator: </p><codeblock xml:space="preserve">#ifdef EPOC32
+LIBRARY  libstdcpp.lib
+#else
+FIRSTLIB ../udeb/libstdcpp.lib
+STATICLIBRARY    eexe.lib 
+#endif</codeblock><p>Add the below option and macro in the MMP file</p><codeblock xml:space="preserve">//This is required even if the wchar type is not used.
+OPTION CW -wchar_t on 
+MACRO  _WCHAR_T_DECLARED</codeblock><note> Standard C++ applications may require
+more stack space. The recommended stack size is 10K. To set the stack size
+to 10K add: </note><codeblock xml:space="preserve">EPOCSTACKSIZE 0x10000</codeblock><p>in the MMP
+file.</p></section>
+<section id="GUID-BF521201-7BE5-4AC5-8D35-1E15AC4887C7-GENID-1-6-1-10-1-1-9-1-5-1-3-3"><title>Example using <codeph>main()</codeph></title> 
+     <p>A simple example using <codeph>main()</codeph> as an entry point is
+described below. The example writes a text to a console.</p><ul>
+<li><p>Modify the MMP file as mentioned before.</p></li>
+<li><p>Do usual C++ style coding.</p></li>
+</ul><codeblock xml:space="preserve">//  Include Files  
+#include &lt;iostream&gt;
+#include &lt;cstring&gt;
+// This is a GCCE toolchain workaround needed when compiling with GCCE
+// and using main() entry point
+#ifdef __GCCE__
+
+// This is a GCCE toolchain workaround needed when compiling with GCCE
+// and using main() entry point
+#ifdef __GCCE__
+
+#include &lt;staticlibinit_gcce.h&gt;
+#endif
+
+using namespace std;
+
+class myclass {
+public:
+  void show(){cout&lt;&lt;"Hello World\n"; }
+} ;
+
+int main()
+{
+  myclass obj;
+  obj.show();
+  cout&lt;&lt;"Press a character to exit!";
+  int c = getchar();
+  return 0;
+}
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB" xml:lang="en"><title>Multimedia
+Framework Overview</title><shortdesc>This document introduces you to the Multimedia Framework component.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The Multimedia Framework (MMF) is a lightweight
+multithreaded ECOM-plugin based framework which is used for playing and recording
+audio and video data. It offers client utilities for common audio and video
+tasks. </p> </section>
+<section id="GUID-D2AD9327-54A4-5D73-94E0-4E09577AD7BD"><title>Required background</title> <p>The <xref href="GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita">Multimedia APIs and Frameworks
+Overview</xref> provides an introduction to the MMF and related components. </p> </section>
+<section><title>Architectural relationships</title> <p>MMF is a framework
+component in the Multimedia APIs and Frameworks collection. </p> </section>
+<section><title> API summary</title> <p>The MMF component includes the following
+APIs: </p> <table id="GUID-FA16B202-7DCE-526D-AD7C-E1297545FB70">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>Audio Client</b>  </p> </entry>
+<entry><p>Provides functionality for audio playing, recording, and conversion. </p> <p>For
+more information, see <xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio
+Client Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Audio Input Streaming</b>  </p> </entry>
+<entry><p>Provides functionality for opening, setting audio and mobile equipment
+properties, to read and close the stream. </p> <p>For more information, see <xref href="GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita">Audio Input Streaming Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Audio Output Streaming</b>  </p> </entry>
+<entry><p>Provides functionality for opening, setting audio properties, to
+write and close the stream. </p> <p>For more information, see <xref href="GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita">Audio
+Output Streaming Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>GSM 6.10 Codec Implementation</b>  </p> </entry>
+<entry><p>Provides speech encoding and decoding functionality using GSM 6.10
+full rate. </p> <p>For more information, see <xref href="GUID-ED109E7B-EFCA-59B9-92D9-EBFBC0F8BF21.dita">GSM
+6.10 Codec Implementation Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Media Client Observer</b>  </p> </entry>
+<entry><p>Provides functionality to monitor and to handle events during audio
+record and convert operations. </p> <p>For more information, see <xref href="GUID-E92BEA67-CF92-5E0E-8B0D-F918178CE9E8.dita">Media
+Client Observer Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>MIDI Client</b>  </p> </entry>
+<entry><p>Provides functionality to open, to play and obtain information in
+MIDI format. </p> <p>For more information, see <xref href="GUID-61E219A3-7D9D-5AAA-B6B3-61F0749E12B3.dita">MIDI
+Client Overview</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Video Client</b>  </p> </entry>
+<entry><p>Provides functionality to record and play back video clips with
+and without attached audio. </p> <p>For more information, see <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video
+Client Overview</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The MMF Framework component is used
+for the following tasks: </p> <ul>
+<li id="GUID-FE3F209B-A7A1-5439-8082-B29722BF6F80"><p>To manipulate advance
+audio features like to play back, record, and convert sound clips. </p> </li>
+<li id="GUID-B10A305F-3301-5802-B43B-E153D2315C08"><p>Enable to play the tone
+sequences and the DTMF (Dual-Tone Multi-Frequency) strings. </p> </li>
+<li id="GUID-5BDE9E01-F288-5842-8F15-39073D4B6B7B"><p>To play, open, control,
+retrieve information and handle notifications for MIDI format. </p> </li>
+<li id="GUID-FBD58B74-1518-5A1F-BEDC-0236992B993C"><p>To manipulate advance
+video features like to record and play back video clips. </p> </li>
+</ul> </section>
+<section><title>See also</title> <p><xref href="GUID-DDF4EA2E-59D6-5FE0-9C61-C5A9CBD8D4FE.dita">Multimedia
+Utility Library Overview</xref>  </p> <p><xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound
+Overview</xref>  </p> <p><xref href="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita">DevVideo
+Overview</xref>  </p> <p><xref href="GUID-9782BF84-B91C-5D7C-BFAD-6B7E6A9ADD02.dita">Device
+Framework Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A24491E4-867F-4006-9798-07281553EA51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A24491E4-867F-4006-9798-07281553EA51" xml:lang="en"><title>Release
+Notes</title><shortdesc>The Symbian Developer Library for Application Developers is intended
+for application developers for the Symbian platform. The information in the
+library corresponds to the Symbian^3 platform release.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-C454C6AE-8348-45C4-A374-11598B78193A"><title>What's new
+in this release</title><p><b>New content:</b></p><ul>
+<li><p><xref href="GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita">Classic UI Guide</xref></p></li>
+<li><p><xref href="GUID-C0D38954-2FC5-4E8B-BC11-229464DCF16C.dita">High
+Level Internet Protocols Guide</xref></p></li>
+<li><p><xref href="GUID-DD13AA8E-BDAD-57EC-81EC-49C8D6D30A86.dita">Short Link Services
+Guide</xref></p></li>
+<li><p><xref href="GUID-F9F53050-AAFA-4685-8C62-033E585F061B.dita">Web Guide</xref></p></li>
+</ul><p>The following S60 5th Edition C++ Developer's Library 'Technology
+area guides' have been integrated into the Symbian guide:</p><ul>
+<li><p><xref href="GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita">Application
+and UI frameworks</xref> is now in Classic UI Guide.</p></li>
+<li><p><xref href="GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita">S60 UI components</xref> is
+now in Classic UI Guide.</p></li>
+<li><p><xref href="GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita">Multimedia</xref> is
+now in Multimedia Guide.</p></li>
+<li><p><xref href="GUID-377F7C19-C799-45CE-9ADA-4BB884B422BA.dita">Browsing and
+downloading</xref> is now in Web Guide. </p></li>
+<li><p><xref href="GUID-1E158DE6-33F5-4B45-8923-28117EBAB68A.dita">Location</xref> is
+now in Location Based Services (LBS).</p></li>
+<li><p><xref href="GUID-AB3D07E6-83C9-4948-A13F-75A65498F444.dita">Security</xref> is
+now found at the top level. </p></li>
+</ul><p>The S60 Open C and Open C++ documentation has been merged into the
+Symbian P.I.P.S. documentation and is now in <xref href="GUID-5072BE46-B1B4-5C3A-BF55-BEA7443E7657.dita">Generic
+OS Services Guide</xref>.</p><p><b>Other changes:</b> </p><p>The Symbian Developer
+Library for Application Developers is now released under the <xref href="http://www.eclipse.org/legal/epl-v10.html" scope="external">Eclipse Public License</xref> (EPL). </p></section>
+<section id="GUID-712A36C3-BC09-4702-916D-30B6C423FDAB"><title>Known issues</title><p>This
+release does not contain any API specifications. These are available in the
+Symbian Developer Library for the Symbian^2 platform release.   </p><p>Some
+topics previously included in the S60 5th Edition C++ Developer's Library
+are not yet available, including S60 device user experience, UI porting guide,
+and What's new. These are planned to be included in an upcoming release.</p><p>The
+library contains some broken links, and some links to legacy websites for
+instance Symbian Developer Network.</p><p>Some sections under Symbian guide
+do not map correctly  to Symbian Foundation packages. </p><p>A “Getting Started”
+section is not included in this release. Until this has been addressed, it
+is recommended that you refer to the Symbian Foundation's <xref href="http://developer.symbian.org/wiki/index.php/Symbian_C++_Quick_Start" scope="external">Symbian C++ Quick Start</xref> and <xref href="http://developer.symbian.org/wiki/index.php/Going_Beyond_Hello:_A_Tutorial_for_Symbian_C%2B%2B_Applications" scope="external">Going Beyond Hello</xref> for this information.</p></section>
+<section id="GUID-6DECC8BE-0CEB-4C47-8028-56EF53C29C7B"><title>Upcoming releases
+and improvements in the Symbian Developer Library for Application Developers</title><p>See
+the <xref href="http://developer.symbian.org/wiki/index.php/Documentation_Content_Package/Backlog" scope="external">Documentation Content Package Backlog</xref>.</p></section>
+<section id="GUID-24E1938C-E8AA-4B82-8FE5-3F35F31CCA3E"><title>Feedback</title><p>To
+give feedback, please go to the <xref href="http://developer.symbian.org/bugs/enter_bug.cgi?product=Documentation%20Content" scope="external">Symbian Foundation Bugtracker</xref> (login required).</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A248C2C0-5F64-5484-85B2-57C86E3499E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A248C2C0-5F64-5484-85B2-57C86E3499E1" xml:lang="en"><title>Memory Management in the Communications Framework</title><shortdesc>This topic describes essential memory management aspects of the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92"><title>Connecting and Transferring Data to a Remote Device</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Once the device and service have been established, you can connect to the remote service and start using it. </p> <section><title>How to Communicate with a Remote Device</title> <p>Connect to the device through the <codeph>Connect()</codeph> function of the generic Symbian OS socket interface <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>. Bluetooth sockets can be opened using the L2CAP and RFCOMM protocols. For an L2CAP Bluetooth socket, the "port" is the Protocol/Service Multiplexer (PSM) to which to connect; for an RFCOMM the port is the server channel. Where these values are not known, they can be read from the service attribute <codeph>ProtocolDescriptorList</codeph>. See <xref href="GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita">Using Bluetooth Service Discovery Agent</xref> for details. </p> <p>You can read and write data using the socket in whatever format the target service expects (AT commands, text, HTTP, PPP etc). </p> <p><b>Example </b> </p> <codeblock id="GUID-A5B48D01-EBBA-59E1-8016-72655F7683E7" xml:space="preserve">
+// Assume have a TInquirySockAddr object, addr, with relevant device info
+
+// Connect an L2CAP socket
+RSocket socket;
+// although CBluetoothSocket may be a better option.
+RSocketServ socketServ;
+TRequestStatus status;
+User::LeaveIfError(socket.Open(socketServ,KBTAddrFamily,KSockSeqPacket,KL2CAP));
+User::LeaveIfError(socket.Connect(addr,status));
+User::WaitForRequest(status);
+
+if (status == KErrNone)
+    {
+    // Write some simple data
+    _LIT8(KDataToWrite,"01234");
+    socket.Write(KDataToWrite,status);
+    User::WaitForRequest(status);
+    }
+
+// Close socket
+socket.Close();
+</codeblock> <p><b>Notes </b> </p> <ul><li id="GUID-29346F87-A859-52D6-851D-45956A92C78A"><p>For both the RFCOMM and L2CAP protocols, no data can be sent or received in the <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>Connect()</apiname></xref> and <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>Shutdown()</apiname></xref> calls. The versions of these calls that take extra data panic. </p> </li> <li id="GUID-5548E996-442E-5DF6-A82B-3027FEE78FD0"><p>RFCOMM uses sockets of the stream socket (<xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockStream</apiname></xref>) type. </p> </li> <li id="GUID-B0B91FCD-E794-5BDD-B0E7-4E09AEFA5A10"><p>L2CAP uses sockets of the sequenced packet (<xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>KSockSeqPacket</apiname></xref>) type. </p> </li> </ul> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-C29A5CAD-04E7-5A51-98D2-4E7131633D1E"><p> <xref href="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita">Selecting a Remote Device</xref>  </p> </li> <li id="GUID-EE602D07-9849-5E45-B5D9-FEB8020C2F04"><p> <xref href="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita">Inquiring About Remote Devices</xref>  </p> </li> <li id="GUID-8D4E47A9-B098-5B76-8BAC-BB3F7932CC5E"><p> <xref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita">Inquiring About Services on a Remote Device</xref>  </p> </li> <li id="GUID-ED85B28C-845F-5394-A186-6D60901D50BB"><p> <b>Connecting and Transferring Data to a Remote Device</b> - This document </p> </li> <li id="GUID-8246800D-5362-5179-9CB2-4C5168D17934"><p> <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">Using security on outgoing sockets</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A257C677-7155-413A-AC5C-1DDF71DF1187.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-A257C677-7155-413A-AC5C-1DDF71DF1187" xml:lang="en"><title>Storing and accessing an image or a video</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>To query the default system paths used for storing different types of media files, use the Platform Environment API.</p>
+<p>To manage images, video clips, audio files, music tracks, and streaming links (URLs) stored in the device memory or on the memory card, use the S60 Media Gallery application. For information on how to use the application, see <xref scope="external" href="http://wiki.forum.nokia.com/index.php/CS000828_-_Launching_Media_Gallery_from_another_application">Launching Media Gallery from another application</xref> on Forum Nokia. The Media Gallery includes the following embedded applications:</p>
+<ul>
+<li><p>Image Viewer for viewing images</p></li>
+<li><p>Media Player for playing video clips and streaming media</p></li>
+<li><p>Music Player for playing audio files</p></li>
+</ul>
+<p>Alternatively, use the Media Fetch API to fetch media files. To retrieve information on multimedia content stored in mobile devices, you can use the Content Listing Framework API.</p>
+<p>For more information on the different options, see <xref scope="external" href="http://wiki.forum.nokia.com/index.php/How_to_fetch_media_files">How to fetch media files</xref> on Forum Nokia.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A25E730C-F34D-5464-BE78-650B3DEA4A88.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A25E730C-F34D-5464-BE78-650B3DEA4A88" xml:lang="en"><title>XML</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>XML collection provides an generic XML framework for processing, parsing and validating the XML and WBXML based contents. It also implements the tree-based XML parsing and editing.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A278C1A2-0724-5800-B353-46809C44C142.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A278C1A2-0724-5800-B353-46809C44C142"><title>Transactions on store databases</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>As the store database, <codeph>RDbStoreDatabase</codeph>, runs completely client side and requires the user program to provide a store for its operations, isolation, concurrency and serializability are not issues for the transaction model. However, support for multiple rowsets concurrently updating the same table is provided, and the rowset cursors attempt to maintain their current position through such (potentially conflicting) updates.</p> <p>Transactions on a store database do guarantee atomicity of updates. As <codeph>RDbStoreDatabase</codeph> is designed to be a small-scale relational database, it does not make sense for it to use transaction systems more suited to large server hosted databases. Instead of using a logfile, the store database provides transaction support by using the commit and revert functionality of <codeph>CStreamStore</codeph>. If the actual store class does not support this protocol, then it cannot be used as a basis for a DBMS store database. Practically, this means that store databases are permanent file stores, i.e. <codeph>CPermanentFileStore</codeph>.</p> <p>Successful transaction support by <codeph>RDbStoreDatabase</codeph> requires that <i>the client must not call </i> <codeph>CommitL</codeph> <i>() and </i> <codeph>Revert</codeph> <i>() on the store while the database is open</i>. Should a client need to modify its own stream data using the store's commit/revert protocol while a database is open, it can enclose the stream operations within a database transaction, using rollback on error; this achieves an equivalent result. Such store operations can be combined with database updates within a transaction to ensure that the separate updates are treated atomically.</p> <p>Committing a transaction leaves all open rowsets in a valid state. How and when updates are reflected within those rowsets depends on how they have been evaluated. </p> <p>Rolling back a transaction causes all rowsets on the database to lose their current place, they must be reset and possibly re-evaluated before they can be used again: however, they do not need to be opened or prepared again.</p> <p>Indexes cannot be recovered easily on rollback, so they are marked as unusable, and the database is marked as damaged. Tables and untouched indexes continue to operate as before. Recovering the database restores the damaged indexes fully. </p> <p>For multiple updates, explicitly using a transaction can also reduce the time required by a factor of more than 50. It also reduces the transient store size requirement by a factor of more than 6 — compaction of the store results in similar sizes for updates whether or not a transaction was used.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A2793EFD-F765-5392-8471-C8A0C2FFC163.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A2793EFD-F765-5392-8471-C8A0C2FFC163"><title>How to set service security requirements</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The security requirements that can be set for a service are simple: you can only specify whether authentication, authorisation, and/or encryption are required or not. You cannot, for example, set the security algorithms used: these are the same for all Bluetooth devices.</p> <p>To set security requirements, take the following steps:</p> <ul><li id="GUID-C593CAD4-B3CF-5B7D-A91A-3A3607870C56"><p> Create a security settings object, <xref href="GUID-BC29B643-2CE8-30C1-BF41-4D2B5585DC81.dita"><apiname>TBTServiceSecurity</apiname></xref>. Initialise it with the service's Bluetooth protocol, its port, and a unique identifier for the service (this identifier is <i>not</i> related to the service class UUID).</p> </li> <li id="GUID-BCFD92A9-4FF6-5A2A-900A-CDF1C5BC8345"><p>Set in the <codeph>TBTServiceSecurity</codeph> object whether authentication, authorisation, and/or encryption are required.</p> </li> <li id="GUID-7EC0E37C-1AE9-5572-B01C-F0F249407106"><p>Call <xref href="GUID-D536FA83-2535-3BF2-AC0D-EA0C7CA806BA.dita#GUID-D536FA83-2535-3BF2-AC0D-EA0C7CA806BA/GUID-026CE232-E988-3C7E-A01D-6C70A3CCFC63"><apiname>RBTSecuritySettings::RegisterService()</apiname></xref> to pass the settings to the security manager.</p> </li> </ul> <p><b>Example</b> </p> <p>The following example sets that authentication, authorisation, and encryption are required for a service.</p> <codeblock id="GUID-9953CEBA-273F-5277-A3C5-78FF1171AB16" xml:space="preserve">// Assumes secmanSubSession is an open subsession, and channel
+// is the port on which an RFCOMM service is running
+
+// 1. Create security settings object
+TUid serviceUID;
+serviceUID.iUid = 0X10008AD0;
+TBTServiceSecurity secSettings(serviceUID, KSolBtRFCOMM, channel);
+
+// 2. Set the security options
+secSettings.SetAuthentication(ETrue);
+secSettings.SetAuthorisation(ETrue);
+secSettings.SetEncryption(ETrue);
+
+// 3. Register the service
+TRequestStatus status;
+secmanSubSession.RegisterService(secSettings,status);
+User::WaitForRequest(status);</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44"><title>Polymorphic DLL targettype summary</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following table summarises the polymorphic DLL types to which the build tools give special support through the <codeph>targettype</codeph> keyword. Projects using one of these target types do not require a DEF file to specify the frozen exports: the build tools will assume the correct frozen exports for the type.</p> <table id="GUID-7ADE0A48-160D-5F33-913A-AEF56C119A46"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><tbody><row><entry><p><b>Description</b> </p> </entry> <entry><p><b>Target type</b> </p> </entry> <entry><p><b>UID2</b> </p> </entry> </row> <row><entry><p>animation</p> </entry> <entry><p>ani</p> </entry> <entry><p>0x10003b22</p> </entry> </row> <row><entry><p>file system</p> </entry> <entry><p>fsy</p> </entry> <entry><p>0x100039df</p> </entry> </row> <row><entry><p>ECom plug-in</p> </entry> <entry><p>PLUGIN</p> </entry> <entry><p>0x10009D8D</p> </entry> </row> <row><entry><p>front-end processor</p> </entry> <entry><p>fep</p> </entry> <entry><p>0x10005e32</p> </entry> </row> <row><entry><p>notifier for text window server</p> </entry> <entry><p>TEXTNOTIFIER2</p> </entry> <entry><p>0x101fe38b</p> </entry> </row> <row><entry><p>printer device</p> </entry> <entry><p>PDL</p> </entry> <entry><p>0x10003b1c</p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F" xml:lang="en"><title>Views
+in traditional architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section includes:</p>
+<ul>
+<li><p><xref href="GUID-BE871265-147B-45F3-8772-A4E091223EDB.dita">Constructing
+views in traditional architecture</xref></p>
+</li>
+<li><p><xref href="GUID-DC59BEAD-0047-4D7A-96D1-C5E3EC4F982B.dita">Drawing
+in traditional architecture</xref></p>
+</li>
+<li><p><xref href="GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094.dita">Compound
+controls in traditional architecture</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The SIP Client API manages the multimedia sessions, subscribes to events,
+and sends SIP messages. It also provides access to the basic services of the
+SIP stack such as: </p>
+<ul>
+<li id="GUID-E9BF6031-1DAF-5238-A306-C44F0F91682D"><p>Sending and receiving
+of SIP messages </p> </li>
+<li id="GUID-C6A3FA97-1F09-587E-9504-9685D8306B04"><p>Creating registrations </p> </li>
+<li id="GUID-A02F02C7-A903-53E0-A64E-F0B62C93A90F"><p>Forming and tearing
+down dialogs initiated by INVITE, REFER and SUBSCRIBE requests </p> </li>
+</ul>
+<section id="GUID-8D3D5FB3-6037-5956-B3F0-DB14BD1BB17B"><title>Architectural
+relationships</title> <p>The SIP Client API uses the client-server mechanism
+to interact with the SIP stack. This means more than one client can use the
+SIP stack at the same time. The calls to the SIP Client API are synchronous.
+The SIP Client API implements a set of callback functions to pass the events
+back to the application. </p> <p><b>Capability information</b> </p> <p>The
+following table describes the capabilities required to use the SIP Client
+API and the conditions in which they are required: </p> <table id="GUID-B3DCF31A-C6D5-58B9-87FA-B2CD3E0ABA1F">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Capability </entry>
+<entry>Reason needed </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>NetworkServices </p> </entry>
+<entry><p>to send or receive SIP messages </p> </entry>
+</row>
+<row>
+<entry><p>WriteDeviceData </p> </entry>
+<entry><p>to create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class </p> </entry>
+</row>
+<row>
+<entry><p>NetworkControl </p> <p>Location </p> <p>ReadDeviceData </p> </entry>
+<entry><p>to use the function <codeph>CSIPConnection::SetOptL()</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Extending the API</b> </p> <p>SIP Client API cannot be extended. </p> </section>
+<section id="GUID-E055BF09-9605-57E6-9502-CB3F4CAC29B8"><title>SIP Client
+API class structure</title> <ul>
+<li id="GUID-3E500E7D-ECB9-50F8-B996-A212EE294E68"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-581B8017-EAA0-59CB-A9CB-490370E0CEC9"> CSIP, MSIPObserver, CSIPConnection and MSIPConnectionObserver</xref>  </p> </li>
+<li id="GUID-461F8201-ED85-582A-945C-7471F9BF27AA"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-0E726099-31C4-5DD4-9AEA-67765589F462">Registration services</xref>  </p> </li>
+<li id="GUID-F69AEAB7-0E13-5673-B696-843957CC4C72"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-80CE8929-9DFD-5DCA-A929-662BD996223B"> SIP dialog associations</xref>  </p> </li>
+<li id="GUID-BFE257A7-EF1A-58BF-A047-00E0B11B1FD3"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-B0D208E4-D1F9-5C5F-B937-11118E778074">Requests sent to, and received from, the network</xref>  </p> </li>
+<li id="GUID-D0AC4583-B181-501C-A97A-63F094AD4046"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-0427709F-CD4B-5363-9377-10402B8A5819">SIP message related classes</xref>  </p> </li>
+<li id="GUID-31ED307B-2285-5DE0-A83B-D0CB7A8C585D"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-4E4FAFCA-0BF6-510C-B8E3-28A83936A154">Automatically refreshing a SIP request</xref>  </p> </li>
+<li id="GUID-B6E46736-A250-5064-B4F8-595A20025478"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-B71BC486-18C2-5E71-965E-0881FBA9CE85">Managing HTTP digest security settings</xref>  </p> </li>
+</ul> <p id="GUID-581B8017-EAA0-59CB-A9CB-490370E0CEC9"><b> CSIP, MSIPObserver,
+CSIPConnection and MSIPConnectionObserver </b> </p> <fig id="GUID-0834012C-083F-5FA0-B29D-E3E852165528">
+<image href="GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e312757_href.png" placement="inline"/>
+</fig> <p>An application creates a single instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class,
+and implements the callback functions defined by <xref href="GUID-C6FF4A83-0097-3A82-B4ED-802E1FEA05D1.dita"><apiname>MSIPObserver</apiname></xref>.
+The <codeph>CSIP</codeph> uses the <codeph>MSIPObserver</codeph> functions.
+The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class asks the supported security mechanisms and
+determines whether a <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object exists for a
+given IAP. </p> <p>The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object creates an instance
+of <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> that allows you to send standalone SIP
+requests and ask for the state of the network connection. Responses are received
+through the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref> interface that defines
+a set of callback functions that an application must implement. </p> <p>An
+application can have many <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects, but each
+of them must have a different IAP. </p> <p id="GUID-0E726099-31C4-5DD4-9AEA-67765589F462"><b>Registration
+services</b> </p> <fig id="GUID-63E38B2E-975E-554C-8EDC-65B8BBA86838">
+<image href="GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e312814_href.png" placement="inline"/>
+</fig> <p>An existing <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> is required to create
+an instance of <codeph>CSIPRegistrationBinding</codeph>. The <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> class
+provides services for registration, updating the registration, and deregistration.
+This class also provides instructions to the SIP stack to automatically refresh
+the registration, and to query and set the outbound proxy used by the registration. </p> <p id="GUID-80CE8929-9DFD-5DCA-A929-662BD996223B"><b> SIP dialog
+associations</b> </p> <fig id="GUID-4870BE80-44B6-50F0-B77E-73FEAD136304">
+<image href="GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e312839_href.png" placement="inline"/>
+</fig> <p> <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref> is the base class for SIP
+dialog associations, such as <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> and <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref>. The <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref> class
+is used to obtain the associated SIP dialog, for the associated <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> instance,
+and for sending a non-target Refresh request within the dialog. </p> <p> <b> Note: </b> The
+SIP Client API creates the <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> instance, it cannot
+be created by the application. </p> <p>If any of the <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> and <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref> objects
+are associated, they are bound to an existing <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> object,
+or they can be used to create a new <codeph>CSIPDialog</codeph> object. </p> <p> <b>Note:</b>  </p> <ul>
+<li id="GUID-6A085F6F-C243-53AD-B33C-F37D14DFE0A4"><p> <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> allows
+an application to initiate a dialog and to send <codeph>INVITE</codeph>,,<codeph>PRACK</codeph>,,<codeph>ACK</codeph>, <codeph>UPDATE,</codeph> and <codeph>BYE</codeph> requests related to the dialog. </p> </li>
+<li id="GUID-19C504F0-EAD5-524A-82E9-2D15BFA2A6D2"><p> <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref> allows
+an application to subscribe to different events by sending SUBSCRIBE and UNSUBSCRIBE
+requests. It also orders the SIP stack to automatically refresh the SUBSCRIBE
+request. </p> </li>
+<li id="GUID-C47B74D8-2251-5FCC-A356-1364EB61CF05"><p> <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> allows
+an application to define and send REFER requests. </p> </li>
+<li id="GUID-18AD2000-2A37-5CD9-8118-8B3322211D28"><p> <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname> CSIPNotifyDialogAssoc</apiname></xref> allows
+an application to define and send NOTIFY requests. </p> </li>
+</ul> <p id="GUID-B0D208E4-D1F9-5C5F-B937-11118E778074"><b>Sent and received
+network requests</b> </p> <fig id="GUID-2E0C9020-1863-5644-BF7E-62B4DB9104D2">
+<image href="GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e312976_href.png" placement="inline"/>
+</fig> <p>When a SIP request is sent to the network, the SIP Client API implementation
+creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to
+the application. A <codeph>CSIPClientTransaction</codeph> object represents
+the SIP transaction and consists of the SIP request and the SIP response.
+After receiving a response, the application gets <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> from
+the <codeph>CSIPClientTransaction</codeph> object. <b>Note:</b> Some client
+transactions can also be cancelled or refreshed. </p> <p>When a SIP request
+is received from the network, it is passed to the application as a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object.
+The application gets <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> from the <codeph>CSIPServerTransaction</codeph> object.
+A <codeph>CSIPRequestElements</codeph> object describes the kind of SIP request
+received. After the application determines the type of response to send, it
+uses the <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> to send the responses. </p> <p> <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> is
+the base class for <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>.
+It provides the functions to obtain the current state of the transaction and
+the transaction type. Some operations are only allowed when the transaction
+is in a certain state. <b>Note:</b> The SIP Client API creates instances of <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and they cannot be created by the application. </p> <p id="GUID-0427709F-CD4B-5363-9377-10402B8A5819"><b>SIP
+message related classes</b> </p> <fig id="GUID-B99CF040-E91F-5281-8AAC-2151049C0EA8">
+<image href="GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e313053_href.png" placement="inline"/>
+</fig> <p>When a SIP request is sent to the network, the SIP Client API implementation
+creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to
+the application. A <codeph>CSIPClientTransaction</codeph> object represents
+the SIP transaction and consists of the SIP request and the SIP response.
+After receiving a response the application gets <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> from
+the <codeph>CSIPClientTransaction</codeph> object. <b>Note:</b> Some client
+transactions can be cancelled or refreshed. </p> <p>When a SIP request is
+received from the network, it is passed to the application as a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object.
+The application gets <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> from the <codeph>CSIPServerTransaction</codeph> object.
+A <codeph>CSIPRequestElements</codeph> object describes the type of SIP request
+received. After the application determines the type of response to send, it
+uses the <codeph>CSIPServerTransaction</codeph> to send the responses. </p> <p> <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> is
+the base class for <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>.
+It provides functions to obtain the current state of the transaction and the
+transaction type. Some operations are only allowed when the transaction is
+in a certain state. <b>Note:</b> The SIP Client API creates instances of <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and they cannot be created by the application. </p> <p id="GUID-4E4FAFCA-0BF6-510C-B8E3-28A83936A154"><b> Automatically
+refreshing a SIP request</b> </p> <fig id="GUID-49ACB697-512C-5FCF-AD48-20D6AAB0FEFC">
+<image href="GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e313129_href.png" placement="inline"/>
+</fig> <p>The SIP stack automatically refreshes a SIP request using the <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> object. <codeph>REGISTER</codeph>, <codeph>SUBSCRIBE</codeph> and a request outside the dialog are refreshed. After
+sending a refresh request, the application queries the state of the refresh
+from <codeph>CSIPRefresh</codeph>. </p> <p> <codeph>CSIPRefresh</codeph> provides
+functions for updating and terminating the refresh, for requests outside the
+dialog. The <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> and <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref> classes
+are used to update and terminate a refreshed <codeph>REGISTER</codeph> or <codeph>SUBSCRIBE</codeph>. </p> <p id="GUID-B71BC486-18C2-5E71-965E-0881FBA9CE85"><b> Managing HTTP digest security
+settings </b> </p> <fig id="GUID-7C296C1B-67E3-569F-A5E9-92A4F7922088">
+<image href="GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e313175_href.png" placement="inline"/>
+</fig> <p>An application must create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class
+to use <codeph>CSIPHttpDigest</codeph>. The <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita"><apiname>CSIPHttpDigest</apiname></xref> class
+manages HTTP digest security settings and contains only static functions. </p> </section>
+<section id="GUID-4195FAF9-D0D7-5046-BD62-9A314791BEFE"><title>Memory used</title> <p>After
+the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> and <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects
+are created, most of the memory consumed is by <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements</apiname></xref>, <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> and <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> classes. <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> holds the most recent SIP
+response in a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object. When another
+response is received, the previous <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object
+is deleted and a new one is created. </p> <p> <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> contains
+a <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> object until the SIP request is transferred
+to the server side of the SIP stack. <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> contains
+the SIP request as <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref>. The application
+owns the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> objects.
+When the transaction terminates, the application deletes these objects to
+conserve memory. </p> <p>A non-<codeph>INVITE</codeph>  <codeph>CSIPClientTransaction</codeph> is
+deleted when it has received a final response or when the <codeph>ErrorOccured()</codeph> callback
+is called. A non-<codeph>INVITE</codeph> <codeph>CSIPServerTransaction</codeph> is
+deleted after the application sends a final response. </p> <p>The <codeph>INVITE</codeph> related
+transactions are deleted if the <codeph>ErrorOccured()</codeph> callback function
+is called. These transactions behave differently because of the presence of
+an <codeph>ACK</codeph>. </p> <p>When the application sends a 2xx response
+to an <codeph>INVITE</codeph> related <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>,
+it enters the <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita#GUID-93256B64-49C9-37F1-9A4E-72C521759749/GUID-DF7E4DCE-1F6D-3F2A-A638-5516A733AA9D"><apiname>CSIPTransactionBase::ETerminated</apiname></xref> state and
+it is deleted at this point. A new <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object
+receives the ACK. </p> <p>When the application sends an <codeph>INVITE</codeph> request
+and the <codeph>CSIPClientTransaction</codeph> receives a 2xx response, the
+transaction enters the <codeph>CSIPTransactionBase::ETerminated</codeph> state.
+The associated <codeph>CSIPClientTransaction</codeph> must not be deleted
+as it is required to send the <codeph>ACK</codeph> and also to receive the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-2E76BDA0-CE87-3538-A791-963A90230FD4"><apiname>MSIPConnectionObserver::InviteCompleted()</apiname></xref> callback.
+An <codeph>INVITE</codeph> related <codeph>CSIPClientTransaction</codeph> must
+be deleted only after a <codeph>MSIPConnectionObserver::InviteCompleted</codeph> or <xref href="GUID-D14D6845-1C5E-3C15-8310-574A2A8C6C95.dita#GUID-D14D6845-1C5E-3C15-8310-574A2A8C6C95/GUID-DED382FB-A6D5-37D7-B8E4-05262F690068"><apiname>MSIPConnectionObserver
+::ErrorOccured</apiname></xref> event is received, or if the state of the associated <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> goes
+to <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-68DD22DC-67E4-387B-BBE9-B9B96D9C9016"><apiname>CSIPConnection::EInactive</apiname></xref> or <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-5963A947-BD5C-3B34-9D10-2CB5DC413774"><apiname>CSIPConnection::EUnavailable</apiname></xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e36820_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e141139_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A30C1204-F130-501E-BD2D-1EE1537BEFC3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A30C1204-F130-501E-BD2D-1EE1537BEFC3" xml:lang="en"><title>How
+to implement a client interface with subsessions</title><shortdesc>Provides code snippets to help you to implement a
+client interface with subsessions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A client side subsession is represented by an instance of a class derived
+from <codeph>RSubSessionBase</codeph> which provides the behaviour for: </p>
+<ul>
+<li id="GUID-E82084CE-E5AF-56D8-934C-A183809532A2"><p>creating a subsession
+in the server </p> </li>
+<li id="GUID-F810EEC0-E0B1-52F1-9587-72BB41AD54C0"><p>sending messages to
+the subsession. </p> </li>
+</ul>
+<p>In the following code fragment, taken from the example that can be found
+at <filepath>...\examples\Base\IPC\ClientServer\complex</filepath>, the class <codeph>RCountSubSession</codeph>,
+derived from <codeph>RSubSessionBase</codeph>, represents the client side
+subsession with a server (in the example the server is also referred to as
+the count server). The assumption is made that the client has already established
+a session with the server as represented by the <codeph>RCountSession</codeph> class. </p>
+<codeblock id="GUID-C9F043AD-A44B-5EC8-9ED4-932747EB6C9B" xml:space="preserve">class RCountSubSession : public RSubSessionBase
+    {
+public:
+    TInt Open(RCountSession&amp; aServer);
+    TInt SetFromString(const TDesC&amp; aString);
+    void Close();
+    void Increase();
+    void Decrease();
+    void IncreaseBy(TInt anInt);
+    void DecreaseBy(TInt anInt);
+    void Reset();
+    TInt CounterValue();
+    };
+</codeblock>
+<codeblock id="GUID-7CE73750-213F-56EF-AEE5-04125147F934" xml:space="preserve">class RCountSession : public RSessionBase
+    {
+public:
+    RCountSession();
+    TInt Connect();
+    TVersion Version() const;
+    TInt ResourceCount();
+    void Close();
+private:
+    RThread iServerThread;    
+    };</codeblock>
+<p>The important points in this example are: </p>
+<ul>
+<li id="GUID-AC212539-94D5-515D-991A-1D9E2D756922"><p> <codeph>Open()</codeph> creates
+a subsession within the client-side session. A reference to the client-side
+session is specified as the function's single argument. The function calls <codeph>RSubSessionBase::CreateSubSession()</codeph> which,
+in turn, causes a server side subsession object to be created and its handle
+number to be returned. </p> </li>
+<li id="GUID-3762EF2B-D88B-5F8A-A0CD-C9D83ACEC208"><p>Client subsession interface
+functions, such as <codeph>CounterValue()</codeph>, send a specific message
+to the server. </p> <codeblock id="GUID-ABFAD354-7632-5FF5-A721-C95B0B8D29AD" xml:space="preserve">TInt RCountSubSession::CounterValue()
+    {
+    TInt res = KErrNotFound;
+    TPckgBuf&lt;TInt&gt; pckg;
+    
+    if (SubSessionHandle())
+        {
+          // Note that TPckgBuf is of type TDes8
+        TIpcArgs args(&amp;pckg);
+        SendReceive(ECountServValue, args);
+        
+          // Extract the value returned from the server. 
+        res = pckg();
+        }
+        
+    return res;        
+    }</codeblock> </li>
+</ul>
+<ul>
+<li id="GUID-64C2EC87-84BF-5892-AD04-40B8DDC0DEA0"><p> <codeph>Close()</codeph> closes
+the subsession. </p> </li>
+</ul>
+<section id="GUID-5E96565F-8D14-43AB-80A0-F6FD558F0073"><title>Notes</title> <ul>
+<li id="GUID-49CCA864-57FD-5E28-8890-F2A1CE707428"><p>The operation code passed
+to <codeph>RSubSessionBase::CreateSubSession()</codeph> must be interpreted
+by the server as a request to create a subsession. </p> </li>
+<li id="GUID-8F920E77-7FFF-5591-87A7-40BFE75A7649"><p>When sending a message
+to the server with a call to <codeph>RSubSessionBase::SendReceive()</codeph>,
+only three arguments can be passed . This function always uses the fourth
+argument to hold the client subsession handle number which is used to identify
+the corresponding server side subsession object. The message arguments are
+subsequently passed to a call to <codeph>RSessionBase::SendReceive()</codeph>. </p> </li>
+<li id="GUID-C690D49E-F5F0-5B71-BE11-5461556FF3A0"><p>The operation code passed
+to <codeph>RSubSessionBase::CloseSubSession()</codeph> must be interpreted
+by the server as a request to close the subsession. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A32FFE7A-A531-48D4-AD23-1CC13CB7F4B7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A32FFE7A-A531-48D4-AD23-1CC13CB7F4B7" xml:lang="en"><title>Dynamic
+initialization of the toolbar</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section>      <p>Use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknToolbarObserver.html#201783ed07a47bc4081e3f1183030ca7" format="application/java-archive"><codeph>MAknToolbarObserver::DynInitToolbarL()</codeph></xref> to set properties
+of toolbar items before the toolbar is shown. </p><p><codeph>DynInitToolbarL()</codeph> is
+used for the toolbar notifying the observer when the toolbar is about to be
+shown. This way you can use the toolbar observer to initialize the toolbar
+before showing it, for example by dimming or hiding certain controls if their
+functions are not available.</p>       <p>The example below shows how to hide
+a toolbar item before the toolbar is drawn.</p>       <codeblock xml:space="preserve">void CMyAppView::DynInitToolbarL( TInt aResourceId, 
+                                          CAknToolbar* toolbar )
+    {
+    if ( toolbar )
+        {
+        toolbar-&gt;HideItem( KButtonId, ETrue, EFalse );
+        }
+    }
+</codeblock>     </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA"><title>source</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>source</codeph>  <varname>source-file-list</varname> </p> <p>Use the <codeph>source</codeph> statement to specify source files.</p> <p>Each <codeph>source</codeph> statement may specify an arbitrary number of source files. Each source file should be specified including its extension, e.g. <filepath>hello.cpp</filepath>. </p> <p>There may be an arbitrary number of <codeph>source</codeph> statements in the project description file relative to each <codeph>sourcepath</codeph>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3320A1E-E85E-508D-A47E-E35824C947A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A3320A1E-E85E-508D-A47E-E35824C947A3"><title>Non-embeddable Applications</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Procedure</title> <p>The <codeph>TARGETTYPE</codeph> in the MMP file changes from <codeph>app</codeph> to <codeph>exe</codeph>. However, for applications that need to also run on the EKA1 emulator, the <codeph>TARGETTYPE</codeph> must be <codeph>exedll</codeph>. Hence, the following lines should replace the existing <codeph>TARGET</codeph> and <codeph>TARGETTYPE</codeph> lines: </p> <codeblock id="GUID-12EE5D60-8E31-5E0B-912F-F4E989778F5E" xml:space="preserve">#if !defined(EKA2) &amp;&amp; defined(WINS) 
+TARGET ExeAppTest.app 
+TARGETTYPE exedll 
+deffile \epoc32\release\wins\exedllapp.def 
+#else 
+TARGET ExeAppTest.exe 
+TARGETTYPE exe 
+#endif</codeblock> <p>The <codeph>TARGET</codeph> filename's extension should be <filepath>.exe</filepath>. It is also important is that the second UID (the application identifier) remains the same: <codeph>0x100039CE</codeph>. For EKA1 emulator builds, the binary produced is a DLL with the entry point exported at ordinal one. Therefore, as in the example above, a <codeph>deffile</codeph> statement is used to define the export. </p> <p>The stack size should be explicitly set to a value greater than the default of 8K. Previously, applications were launched in a process initiated by <filepath>apprun.exe</filepath> which had a stack size of 20K. Therefore, to ensure the converted application will not have any problems with stack size, this is the minimum value the stack size should be set to. This is done in the MMP file with the line: </p> <codeblock id="GUID-EFC7436D-6023-5DF2-8338-474871E22DA6" xml:space="preserve">epocstacksize 0x5000</codeblock> <p>Note that embedding an EXE-app inside another EXE-app (see the <xref href="GUID-BD7C45B2-11BF-5162-9F9B-B84E51C5C6D4.dita#GUID-BD7C45B2-11BF-5162-9F9B-B84E51C5C6D4/GUID-4CE56897-FEB9-523F-843A-E5BAFFDBBCDB">Embeddable applications</xref> section below) is enough to overflow the default 8K stack. </p> <p>The API for starting the application framework is in <filepath>eikcore.dll</filepath>, so <filepath>eikcore.lib</filepath> needs to be listed in the <codeph>LIBRARY</codeph> section of the MMP file. </p> <p>The <xref href="GUID-E5533B10-D01F-3133-8E74-28071766885B.dita#GUID-E5533B10-D01F-3133-8E74-28071766885B/GUID-275C4B9B-53BD-38C5-8C8E-05D480358836"><apiname>EikStart::RunApplication()</apiname></xref> function needs to be called from the EXE's entry point, passing as an argument a pointer-to-function which creates an instance of the <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> -derived class (this is the same function that is exported at ordinal 1 for DLL-apps). In EKA1 emulator builds, the command line also needs to be passed to this function. This is demonstrated by the following code, which works for all builds: </p> <codeblock id="GUID-CBB2C08F-1E2F-516C-A0D7-B172F3C03C40" xml:space="preserve">#include &lt;eikstart.h&gt; 
+LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CExampleApplication;
+    } 
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }
+
+#if defined(__WINS__) &amp;&amp; !defined(EKA2) 
+GLDEF_C TInt E32Dll(TDllReason)
+    {
+    return KErrNone;
+    } 
+EXPORT_C TInt WinsMain(TDesC* aCmdLine)
+    {
+    return EikStart::RunApplication(NewApplication, aCmdLine);
+    } 
+#endif</codeblock> <p>If the application needs to store configuration or application data, a private directory will need to be created. For more information on private directories, see the documentation on the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> class. </p> <p>The relevant functions in the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> class for private directories are are: </p> <dl><dlentry><dt><codeph> RFs::PrivatePath</codeph> </dt> <dd><p>gets the private path for a process </p> </dd> </dlentry> <dlentry><dt>  <codeph>RFs::CreatePrivatePath</codeph> </dt> <dd><p>creates the private directory for a process on the specified drive </p> </dd> </dlentry> <dlentry><dt><codeph>RFs::SetSessionToPrivate</codeph> </dt> <dd><p>sets the session path to point to the private directory on the specified drive </p> </dd> </dlentry> </dl> </section> </conbody><related-links><link href="GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita"><linktext>Application
+                Architecture Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3449F37-89BB-5208-8FD5-F4DF73F7E71A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A3449F37-89BB-5208-8FD5-F4DF73F7E71A" xml:lang="en"><title>System
+Startup Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-C41A0540-2C28-4CCC-B8AA-8236C68CEB18"><title> Configuring and Controlling a device's boot process </title> <p>Whenever
+a Symbian device is powered up a number of things have to happen before it
+is ready to be used. A number of processes and applications have to be started
+and certain tasks performed. </p> <p>The System Starter and its related components
+control the startup process. This guide describes what the System Starter
+does and how it may be configured. Configuration is the responsibility of
+device manufacturers. A manufacturer may choose to enable operators, third
+parties and users to extend the startup configuration. </p> <p>There are numerous
+considerations when configuring device startup. These include: </p> <ul>
+<li id="GUID-5BA1769D-D1FC-59A4-87F6-30D031443CD9"><p>which processes, tasks
+and applications are required, </p> </li>
+<li id="GUID-48D7345B-0D3B-5ADA-A646-A3DAC85FE4F5"><p>the sequence of, and
+inter-dependencies between, activities, </p> </li>
+<li id="GUID-9C7A919A-8C67-5DC0-BDD8-D1DC12AE0636"><p>the user experience, </p> </li>
+<li id="GUID-9F2C5CCC-EAD6-5AD6-8B85-7EB459F385BA"><p>the impact on manufacturing
+and testing, </p> </li>
+<li id="GUID-7212D20D-2A6C-51BC-A3B4-23FAF4CA5EC0"><p>operators' customisation
+requirements, </p> </li>
+<li id="GUID-1D75BFB9-9E0C-5E60-8473-278D3ABCF7B7"><p>users' customisation
+requirements, </p> </li>
+<li id="GUID-41225C9C-047B-59BF-A670-0981A73BF6FC"><p>what to do when something
+goes wrong </p> <p>and </p> </li>
+<li id="GUID-5E519AE8-3268-5C2B-A623-2E99229947F8"><p>aftermarket applications </p> </li>
+</ul> <p><b>Processes and Applications </b> </p> <p>In the interest of readability
+this document frequently<b> uses the terms application and process interchangeably</b>.
+Unless specifically stated otherwise you may assume that the term used refers
+to both. </p> </section>
+<section id="GUID-528B2FD1-7233-413A-81C8-5064095135AB"><title>Static Startup Configuration</title> <p>The System Starter
+is automatically invoked as part of the boot process once the file system
+has been mounted. It works by processing a list of instructions in sequence.
+The list is referred to as a Static Startup Configuration, or SSC. In practical
+terms the SSC is defined in a resource file and is built into the ROM. </p> <p>A
+fundamental feature of the SSC is that it allows the start up procedure to
+be optimised. Though the commands are processed in sequence their effect is
+to perform tasks not only in <b>sequence</b> (wait for the application or
+process to initialise before continuing) but also in <b>parallel</b> (do not
+wait for initialisation) and <b>at the optimum time</b> (wait until conditions
+are right). </p> <p>For further information on the contents of an SSC see: </p> <ul>
+<li id="GUID-1F8911D9-F92B-5A4F-8548-942842A7ED2A"><p><xref href="GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita">Static
+Startup Configuration</xref>  </p> </li>
+</ul> <p>Though an SSC cannot be changed, a number of SSCs may be included
+in a ROM. This allows a device to be started with one of a number of different
+configurations, i.e. to be booted into different <b>modes</b>. </p> <ul>
+<li id="GUID-92E0E027-8A4F-55A5-AC48-4252164E2E77"><p>The mode determines
+which SSC the System Starter uses to start the system. Symbian has defined
+(and reserved) a number of Startup Modes (for test and reference purposes):
+Full, Emulator, Emergency, Battery charge &amp; Test. Device manufacturers
+may use their own startup modes and reserve their own unique range of values
+by sending an email to the Device Services package mailing list (<xref href="mailto:td-os_base_services-dev@lists.symbian.org" scope="external">td-os_base_services-dev@lists.symbian.org</xref>)
+specifying: </p> <ol id="GUID-E4D9A3AB-4BD5-5E5E-8B70-8E6435842F06">
+<li id="GUID-9F4658CA-4DCE-5E88-91FC-AE0F3CA65997"><p>the device manufacturer
+name </p> </li>
+<li id="GUID-AA1CC293-099A-5534-BA71-3EEE6691BE53"><p>the number of start-up
+mode ranges required (each range has 32 values)</p> </li>
+</ol> </li>
+</ul> <p>SSC files are named <filepath>SCCForStartupModeN.rss</filepath> where
+N is the number of the mode. The method of selecting the mode, and therefore
+the SSC file, for each startup is defined by the licensee. </p> <p>The degree
+to which an SSC can control and optimise the boot process is further enhanced
+by the concepts of <b>Startup States</b> and <b>Staged Startup</b>. </p> <p><b> Startup States</b> </p> <p>An SSC is divided into a series of states which
+follow each other sequentially. Those described here are defined by Symbian.
+Licencees may add or insert further states by defining them and including
+them in an SSC. The Symbian defined states have a certain significance: </p> <ul>
+<li id="GUID-4C3113C7-CFAF-59AE-A271-51424F6B2478"><p> <b>The Critical Static
+State:</b> This is when the essential ROM based components are started. Nothing
+started in this state relies on anything outside the ROM. </p> </li>
+<li id="GUID-56754FF8-08A4-56BE-A4C2-A8F2A25AE738"><p> <b> The Critical Dynamic
+State:</b> This is when essential non-ROM based components and components
+which use non-ROM based files are started. </p> </li>
+<li id="GUID-804244EC-006E-5216-B286-D9FC6B9495EA"><p> <b> The Non-critical
+State:</b> Components started here are not essential for the basic functionality
+of the device. i.e. the phone will be 'up and running' before these components
+are started. </p> </li>
+</ul> <p><b>Staged
+Startup</b> </p> <p>A further level of startup control and configuration can
+be achieved using Staged Startup. This technique enables components to perform
+their initialisation procedure as separate stages - essential earlier, non-essential
+later. This enables further reduction of the effective boot time. </p> <p>Applications
+must be <b>Staged Startup Aware (SSA)</b> to take advantage of the staged
+startup facilities. They must register with the Starter so that they can receive
+state-change notifications. An SSA application may perform a <b>stage</b> of
+its startup during each SSC <b>state</b>. </p> <p>Staged startup subdivides
+each state into five ordered domains: Kernel, Base, OS Services, Application
+Services and UI Framework (these correspond to the <xref href="GUID-98E4DFEE-D7FA-581B-A56C-89797890D418.dita">Symbian
+OS System Model</xref>). Each SSA component associates itself with a domain
+according to its location in the System Model. Within each state the domains
+are processed sequentially. This allows application dependency to be accommodated
+without individual applications having to manage these dependencies. </p> </section>
+<section id="GUID-F58AE201-31BF-4E36-96B6-50D61A53B9CA"><title>Dynamic Startup Configuration (DSC) </title> <p>All of the
+components included in the Static Startup Configuration are present for the
+life of the device. Components installed after the ROM has been built, or
+after the device has been shipped, may also be started during boot by being
+added to a Dynamic Startup Configuration (DSC). </p> <p>One or more DSCs may
+be included at various points in an SSC. </p> <p>A run-time API allows entries
+to be added to and deleted from a DSC. This means that aftermarket applications,
+updates and patches can be inserted automatically on installation, over the
+air by a Network Operator, or by the user. </p> <ul>
+<li id="GUID-84D36270-880B-56F4-BBD9-5C80F9DA1BEF"><p><xref href="GUID-E3941FAF-988E-5FB3-8E62-84E192E41EA1.dita">How
+to use the DSC API</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-D6D28700-0BAD-4F88-8CE9-2E0330233468"><title>Specifying action on failure </title> <p>Though system startup
+is an automatic process, things can go wrong. In some cases the device can
+continue to function if a component fails to start, in others it cannot. Applications
+can fail to start or fail after they have started for a variety of reasons.
+Symbian OS provides mechanisms for detecting and handling failure. </p> <p>When
+an application is started using an SSC or a DSC several parameters must be
+specified in its resource. These include: </p> <ul>
+<li id="GUID-4DC8B8DA-FA50-57E9-B1FD-B60991C927C1"><p>a startup method (<codeph>EFireAndForget</codeph>, <codeph>EWaitForStart</codeph>, <codeph>EDeferredWaitForStart</codeph>) </p> </li>
+<li id="GUID-8236B8FB-CDD9-544A-91FA-F53231EDEDAF"><p>the number of retries
+(attempts to start the application) </p> </li>
+<li id="GUID-A9EA3792-BA99-59C8-8AE1-40A34CFAC095"><p>a timeout period (after
+which an EWaitForStart startup will be considered to have failed) </p> </li>
+<li id="GUID-F9CEA642-4140-5430-9092-C5B70BE9B691"><p>a restart action (<codeph>EIgnoreProcessFailure</codeph>, <codeph>ERestartOS</codeph>, <codeph>ERestartOSWithMode</codeph> - the action to be taken in the event of failure
+to rendezvous or failure while running normally.) </p> </li>
+<li id="GUID-F737C84D-3BAB-5256-858E-4D9EF9C0AB19"><p>a restart mode (the
+phone might restart in a 'Safe Mode', for instance) </p> </li>
+<li id="GUID-2030D3D4-D1C6-5E80-B75E-F8F656CA5168"><p>whether to initiate
+monitoring after the component has made its rendezvous. </p> </li>
+</ul> <p>If, after the <b>timeout period</b> the application has not made
+its rendezvous, the OS can make further attempts to start it. If, after the <b>number
+of retries</b> specified, it has not succeeded it will take the specified <b>restart
+action</b>. If the restart action is <codeph>ERestartOS</codeph> or <codeph>ERestartOSWithMode</codeph> it
+will shut down the device and restart it (in the second case in the <b>restart
+mode</b> specified). If <b>monitoring</b> is enabled the System Monitor will
+continue to monitor the process after a successful rendezvous and, if it stops
+unexpectedly at any time, will re-use the same configuration information and
+act accordingly. </p> <ul>
+<li id="GUID-64BFBF8C-3279-5DE5-9350-19DB7FD5D481"><p><xref href="GUID-4E195F2A-78AE-5664-A115-AD65BF457AB1.dita">How
+to use the System Monitor</xref>  </p> </li>
+</ul> <p>Note that processes or threads declared 'System Critical' use an
+aternative monitoring mechanism, which pre-dates the System Monitor, to restart
+the OS when they fail (see <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-AF3E8BE4-FE65-3CCE-8B5A-6C4585BEA2EC"><apiname>RThread::SetCritical()</apiname></xref>). The
+System Monitor offers two significant advantages: the ability to restart the
+process without restarting the OS and the option of restarting in a specified
+mode. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A34D9893-C9AE-5C43-85D3-E14BC5DE2A92.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A34D9893-C9AE-5C43-85D3-E14BC5DE2A92" xml:lang="en"><title>Setup</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides information about the setup that must be done on the device and the emulator. Here, various protocols such as Bluetooth, Wi-Fi, and USB are supported. You can use these protocols to establish a connection between the device and the host PC. The emulator setup is done for debugging purposes. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A36C2DE6-21D8-5558-B223-1E81CEB16891.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A36C2DE6-21D8-5558-B223-1E81CEB16891" xml:lang="en"><title>Clock
+Overview</title><shortdesc>Provides the graphical display of digital and analogue clocks. The
+clocks are animated to change with system time. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-E3C63EE0-9955-469D-BAE5-34D6B237B309"><title>Architectural relationships</title> <p>The animation
+of the clocks is performed by an animation DLL that plugs-in to the Window
+Server. The key classes in this API are client-side animation classes, derived
+from the animation client-side class <xref href="GUID-4180CDBA-E9A5-3A4B-9778-26D172FAFD10.dita"><apiname>RAnim</apiname></xref>. </p> </section>
+<section id="GUID-61371D21-F9AE-46A5-BE3F-BDEC6050DAE0"><title>Description</title> <p>The API has three key concepts: clock
+base classes, analogue clock, and digital clock. </p> <p><b>Clock base classes</b> </p> <p>A
+number of base classes provide shared functionality for the clocks, including
+basic display control, and time setting. They derive ultimately from <xref href="GUID-4180CDBA-E9A5-3A4B-9778-26D172FAFD10.dita"><apiname>RAnim</apiname></xref>,
+and are, in inheritance order, <xref href="GUID-9DE6D2BB-2563-3196-B9A7-D9CD34C09BA5.dita"><apiname>RAnimWithUtils</apiname></xref>, <xref href="GUID-88506D0C-7206-3571-BCF8-1BED522849D4.dita"><apiname>RTimeDevice</apiname></xref>,
+and <xref href="GUID-4185D78E-3C41-3597-9F62-6D968C92E415.dita"><apiname>RClock</apiname></xref>. </p> <p><b>Analogue clock</b> </p> <p>Derived
+from <xref href="GUID-4185D78E-3C41-3597-9F62-6D968C92E415.dita"><apiname>RClock</apiname></xref>, the class <xref href="GUID-6D7509CD-7AD9-3C5D-AFDB-6F23D17224C7.dita"><apiname>RAnalogClock</apiname></xref> provides
+an analogue clock with configurable color, size, position, and number of hands. </p> <p>How
+a hand is drawn is specified by a <xref href="GUID-0D6ECBF5-EC03-3BF7-9C74-C0EC9BAF0CE6.dita"><apiname>TAnalogDisplayHand</apiname></xref> object.
+The settings for displaying an AM/PM indicator is provided by <xref href="GUID-5B7850F6-F0D8-3009-AB9A-5B67A534314C.dita"><apiname>SAnalogDisplayAmPm</apiname></xref>. </p> <p><b>Digital
+clock</b> </p> <p>Derived from <xref href="GUID-4185D78E-3C41-3597-9F62-6D968C92E415.dita"><apiname>RClock</apiname></xref>, the class <xref href="GUID-17CFBF88-1C4A-3CAD-9299-C1698FA20401.dita"><apiname>RDigitalClock</apiname></xref> provides
+a digital clock with configurable color, size, position, and font. What time
+information is displayed is configured through one or more <xref href="GUID-0BF934F0-6B1D-3B73-87BE-8DA87F40CB4F.dita"><apiname>TDigitalDisplayTextSection</apiname></xref> objects. </p> </section>
+<section id="GUID-979F2DEE-519E-4040-ACD9-2E5628C932BD"><title>See also</title><ul>
+<li><p><xref href="GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE.dita">Animation</xref></p></li>
+<li><p><xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Window server</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A399508A-DE6A-490D-9BFB-4FCF56FF9D4C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A399508A-DE6A-490D-9BFB-4FCF56FF9D4C" xml:lang="en"><title>Derive
+a class from the MCoeView class</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Derive a class from the <codeph>MCoeView</codeph> class
+and provide the definition for each of the following functions:</p><ul>
+<li><p><codeblock xml:space="preserve">TVwsViewId ViewId() const</codeblock></p><p>This function
+defines the unique identifier of the view within the given application.</p></li>
+</ul><ul>
+<li><p><codeblock xml:space="preserve">void ViewActivatedL(const TVwsViewId&amp; aPrevViewId,TUid aCustomMessageId,const TDesC8&amp; aCustomMessage)</codeblock></p><p>This is the function is called by the operating system when a view is activated.
+The call gets several arguments: the view ID of the previous view that was
+displayed (in case a switch back to it is desired), and the identifier and
+text of a message that comes from the process that is activating the view.
+This message can convey specialized information, such as information on what
+to display, from the activating process.</p></li>
+</ul><ul>
+<li><p><codeblock xml:space="preserve">void ViewDeactivated()</codeblock></p><p>This function is
+called by the operating system when a view is deactivated. </p></li>
+</ul><ul>
+<li><p><codeblock xml:space="preserve">TVwsViewIdAndMessage ViewScreenDeviceChangedL()</codeblock></p><p>This
+function has a default implementation. It handles a change to the screen device
+returning the value of the <codeph>TVwsViewIdAndMessage</codeph> object. By
+default, returns the ID of the active view.</p><p>Cone provides a default
+screen device change handler <codeph>CCoeScreenDeviceChangeDefaultHandler</codeph>. <codeph>CCoeScreenDeviceChangeDefaultHandler</codeph> handles
+any screen device changes that occur while a view is active. It is used to
+activate a default view when a screen flip (changing the screen orientation,
+for example, landscape to portrait) occurs, if the currently active view does
+not implement <codeph>MCoeView::ViewScreenDeviceChangedL()</codeph>.</p></li>
+</ul><p>The following code snippet shows deriving a class from <codeph>MCoeView</codeph> and
+implementing the required functions:</p><codeblock xml:space="preserve">class CNewView : public MCoeView
+    {
+    public:
+        //construction
+        CNewView( const TVwsViewId&amp; aViewId, CCoeAppUi&amp; aAppUi );
+        void ConstructL();
+        ~CNewView();
+    private:
+        // From MCoeView class
+        void ViewActivatedL( const TVwsViewId&amp; aPrevViewId, 
+                             TUid aCustomMessageId, 
+                             const TDesC8&amp; aCustomMessage );    
+        void ViewDeactivated();
+        TVwsViewIdAndMessage ViewScreenDeviceChangedL();
+        void ViewConstructL();
+    private:
+        CCoeAppUi&amp; iCCoeAppUi;
+        TVwsViewId&amp; iViewId;
+    };
+</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3AF142B-F9DF-43FD-9D3F-788A74D0C575.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A3AF142B-F9DF-43FD-9D3F-788A74D0C575" xml:lang="en"><title>Using
+precompiled CBA button resources</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To define <xref href="GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita#GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84/GUID-5F749184-C804-41FC-BA81-038783BDC967">resources</xref> for
+a precompiled <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA button</xref> option:</p>
+<ol>
+<li id="GUID-5225D60A-D8D2-4FB0-B938-F2FAE91F4955"><p>Determine
+the CBA button requirements of your application.</p></li>
+<li id="GUID-C7B01995-16A6-45AD-8616-FFB290870BC2"><p>Declare <parmname>cba
+= precompiled symbolic ID in avkon.hrh</parmname> in the <xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita"><parmname>EIK_APP_INFO</parmname></xref> or <xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita"><parmname>AVKON_VIEW</parmname></xref> resource.
+where <parmname>precompiled symbolic ID in avkon.hrh</parmname> is an <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">enumerated value</xref> in
+the <parmname>avkon.hrh</parmname> file delivered with the SDK and in the <parmname>./Epoc32/include</parmname> folder.
+An example is as follows:</p>
+<itemgroup>
+<codeblock id="GUID-6D73CAC8-36C6-4AC1-B5A3-E53B97F9B6FF" xml:space="preserve">RESOURCE EIK_APP_INFO
+    {
+    menubar = r_value_menubar;
+    cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
+    }</codeblock>
+<p>In this case, <parmname>Options</parmname> and <parmname>Exit</parmname> appear
+above the softkeys at runtime.</p>
+<p>The <parmname>Options</parmname> softkey is bound to a command that
+results in the application framework opening the options menu based on the <parmname>MENU_BAR</parmname> resource.
+The <parmname>Exit</parmname> softkey returns the <parmname>EAknSoftkeyExit</parmname> command,
+which would need to be handled in the appropriate place for command handling
+in your application architecture. Note that the Symbian platform enumerations
+are in the <parmname>avkon.hrh</parmname> file. In general, you can map the
+commands returned from the CBA options by comparing the names of the symbolic
+IDs to the symbolic names in the enumerated list.</p>
+</itemgroup>
+</li>
+<li id="GUID-EBEB81FE-4A51-4E22-A815-BA49CB7E3E03"><p>If required, <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">handle the commands</xref> caused
+by the selection of a CBA option in your application.</p></li>
+</ol>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3B5381F-7D81-52D5-97DE-CCF56C2A49A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A3B5381F-7D81-52D5-97DE-CCF56C2A49A9"><title>Shape Operations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A graphics context provides line and shape drawing graphics operations for points, lines, and fillable shapes. </p> <section><title>Lines</title> <p>There are three line primitives - straight line, <keyword>polyline</keyword> and arc. These are drawn with the pen, with all its current settings. Straight lines can be drawn between two given points, to a single given point from the current internal drawing position, or by moving the internal drawing position by a given vector. They are constructed with the help of a linear DDA. </p> </section> <section><title>Fillable shapes</title> <p>There are five shape drawing primitives - pie slice, ellipse, rectangle, rounded rectangle, and polygon. All may be drawn with or without an outline. </p> <p>Outlines are drawn with the pen, and thus subject to pen color, pen size and pen style settings. The effective outline color depends on the drawing mode. If the pen size has been set to greater than or equal to half the size of the shape, then the shape will be filled with solid pen color. The pen style should be set to null if no outline is required. </p> <p>Shapes are filled using the brush, and thus subject to the brush style (color, hash or pattern) and brush pattern origin. The effective fill color depends on the drawing mode. The brush style should be set to null if no fill is required. </p> </section> <section><title>Pen size</title> <p>Note that when the pen is a single pixel wide: </p> <ul><li id="GUID-75979B1B-2AED-5F65-A3B9-2E3C54B32005"><p>There is a guarantee that each pixel will be written only once on the display. This allows shapes to be drawn in exclusive-or mode, without the risk that multiple writes will cancel each other out. </p> </li> <li id="GUID-1FD0FD50-F349-5241-A716-2A94B7F11DEE"><p>When straight lines are drawn, their last point is not included. This allows a polyline to be constructed without the pixels at the joins being written twice. The single write guarantee can thus be maintained for multiple consecutive primitives. However, the last point of an arc is always drawn. </p> </li> </ul> <p>If the pen size is greater than one pixel, a straight line is drawn as a rectangular shaped region of pixels, with rounded ends that extend beyond the start and end points. See <codeph>CGraphicsContext::SetPenSize()</codeph> for details. </p> </section> <section><title>Rectangles</title> <p>All the fillable shape drawing primitives, (except <codeph>DrawPolygon()</codeph>), either use a rectangle directly or to define the position of an ellipse that is used in the construction of the shape. This rectangle is passed as an argument of type <codeph>TRect</codeph>. </p> <p>Care is needed when specifying rectangles. The <codeph>TRect</codeph> class is defined to include the pixel at its top left corner, but to exclude the pixel at its bottom right corner. Thus, a rectangle specified as: </p> <codeblock id="GUID-87FCDD0F-E8EE-580D-9277-9BA385A2C1A4" xml:space="preserve">TRect(TPoint(100,50),TPoint(300,150))</codeblock> <p>includes the point (100,50) but not the point (300,150). No pixels will be written to column 300, nor to row 150, on the display. The rectangle drawn on the screen will be 300-100=200 pixels wide, and 150-50=100 pixels high. </p> </section> <section><title>Ellipses</title> <p>Ellipses whose axes are aligned with the x and y axes of the co-ordinate system, are supported; other ellipses are not. Ellipses are defined with reference to their bounding rectangle. The comments above on the behavior of <codeph>TRect</codeph> also need to be observed when drawing ellipses. Arcs, pie slices and the corners of rounded rectangles are all defined as sections of an ellipse. </p> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> <link href="GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita"><linktext>The Linear DDA</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3B58436-07E4-565B-800B-86435D205461.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A3B58436-07E4-565B-800B-86435D205461" xml:lang="en"><title>Certificate
+Validation in PKIX</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Certificates of different types are trusted by different applications.
+Therefore certificates need to be signed by certification authority (CA) and
+the signature must be verified and validated. This section describes about
+certificate chain and certificate validation processes. </p>
+<section><title>Certificate Chain</title> <p>Certificate validation is a recursive
+process. It begins with the need to verify the signature on some data presented
+by an End Entity (EE). This involves checking that the key pair is actually
+owned by that EE. To do this the public signing key of that EE is acquired
+by getting its certificate. That certificate would have been signed by the
+EE's certification authority (CA), so the signature on the certificate can
+be verified by getting the CA's public signing key. In turn the CA's certificate
+might require verifying in which case the process is repeated until the process
+bottoms out when an entity which is already trusted is reached; that entity
+is usually self signed. This process is illustrated in the figure below: </p> <fig id="GUID-A0956B2A-B12F-58E1-9172-C1EDBBE593CE">
+<title>              Certificate chain            </title>
+<image href="GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e363824_href.png" placement="inline"/>
+</fig> <p>The set of certificates from an EE up to a trusted root CA certificate
+is called a <keyword>certificate chain</keyword>. Once a certificate chain
+has been constructed ,the EE's key pair at the start can be validated. </p> </section>
+<section><title> Input to Certificate Validation</title> <p id="GUID-21CE5C18-856E-57B6-A5B6-3C1104EB8151"><b> End
+Entity &amp; Intermediate Certificates</b> </p> <p>A set of certificates,
+from the entity requesting authentication up to, but not including, one already
+trusted by the relying party. </p> <p>Where these certificates come from is
+potentially a difficult problem if certificate management is expected to search
+for intermediate certificates in remote repositories; however for TLS at least
+servers are required to supply a complete, ordered set of certificates in
+the form of DER-encoded ASN.1; so client code can just pass this into the
+certificate chain object. </p> <p id="GUID-2533ACD8-29FC-5297-A462-7D93BF029A59"><b> Trusted
+Root Certificates</b> </p> <p>Authentication cannot be done entirely by software:
+there must be a point at which the user confirms that they trust a particular
+entity. The validation algorithm can only ascertain that if the user trusts
+certificate X then they may also trust certificate Y. Certificates which the
+user trusts directly are called root certificates because they are the root
+of the validation chain. They are usually self-signed. </p> <p>It is likely
+that different applications will have different requirements about which certificates
+may be considered trust roots and for the level of protection they require
+for trust roots. To this end, applications will pass in a unique ID (<codeph>TUid</codeph>)
+which Certificate and Key Management will use to identify the application,
+and so work out which certificates can be considered trusted for that application. </p> <p>For
+additional flexibility, an overload is provided enabling clients to pass a
+set of root certificates directly into the validation function. </p> <p>For
+more detailed discussion of the storage and management of root certificates
+see <xref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita">Root Certificate
+Management, Storage, and Client registration</xref>. </p> <p id="GUID-0E4B09EF-74B8-5272-98F4-60C423614F50"><b> Validation
+Time</b> </p> <p>The time for which validation will be performed. </p> <p id="GUID-288B55BA-E0B0-5F67-BD62-A08832A09889"><b> Acceptable Policies</b> </p> <p>A
+set of OIDs, each of which represents a certification policy acceptable to
+the application. This enables client code to restrict the certificates that
+may occur in a valid certificate chain. Client code does not have to specify
+any preferred policies here. An empty set is interpreted as any policy. </p> </section>
+<section id="GUID-AE46492C-5F13-5B73-B1F5-81DD6C15AFAF"><title>Configuring
+for Certificate Validation</title> <p>The following settings can be configured
+for the validation process: </p> <table id="GUID-D88105DD-347A-5E33-8B79-1A75CCC28ED0">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>Supported critical extensions </p> </entry>
+<entry><p>You can list supported X.509 v3 critical extensions. Once you have
+set a list, you have full control over the processing of X.509 v3 critical
+extensions. If a critical extension is found whose OID matches an element
+in this list, certificate validation treats this as a warning instead of an
+error. </p> <p>You can set, add, remove and reset the list of supported critical
+extensions. </p> <p>If critical extensions are not configured, the validation
+process uses a default set. This includes standard X.509 critical extensions
+and Symbian specific critical extensions. </p> </entry>
+</row>
+<row>
+<entry><p>Date validity checks </p> </entry>
+<entry><p>You can specify whether a failed check on the certificate validity
+date is treated as an error or a warning. You can use this to verify the certificate
+validity period post-installation. By default the certificate validity period
+only needs to be checked at installation. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title> Chain Validation</title> <p><b> Chain Construction</b> </p> <p>The
+chain object parses the encoded set of certificates. The first certificate
+is considered to be the EE certificate, and subsequent certificates must each
+certify the preceding one. The chain object then searches the set of trusted
+root certificates for a certificate trusted by the client and whose subject
+name matches the issuer name in the last certificate in the decoded set. If
+two or more match, it will attempt to resolve this be comparing the authority
+key ID in the last certificate with the subject key ID in each candidate root.
+If this extension is not present, it will attempt to find a single root by
+signature verification. If no root is found validation will fail immediately
+with an error. </p> <p><b> Initialisation of Chain Validation Algorithm</b> </p> <p>The
+certificate chain initialises the following state variables: </p> <ul>
+<li id="GUID-00BFA3CA-ECE2-5D69-B90F-B1B01D40006D"><p>Validation Time: time
+for which validation is calculated. Initialised to the time supplied by client
+code. </p> </li>
+<li id="GUID-266D360B-2793-5963-B2B2-D79E9745AF4D"><p>Initial Policies: set
+of policy OIDs, initialised to the policies supplied by client code </p> </li>
+<li id="GUID-4DEBA756-99FA-54CB-9E93-85F8F54301B7"><p>Acceptable Policies:
+set of X.509 policy information objects, initially any policy </p> </li>
+<li id="GUID-B7FD8FF3-61E1-5CAB-8B6E-25092186727E"><p>Mapped Policies: set
+of policy OIDs, initially empty </p> </li>
+<li id="GUID-280A775A-4F34-5A1B-9A9A-BAFFE7A4E77B"><p>Excluded Subtrees: set
+of X.500 General Name objects, initially empty </p> </li>
+<li id="GUID-C4059DDE-16AC-5B3F-8001-09DC1FF789A8"><p>Permitted Subtrees:
+set of X.500 General Name objects, initially any subtree </p> </li>
+<li id="GUID-A27F8096-0F6B-5942-9019-3D7685AE3E10"><p>Max Path Length: integer
+representing the maximum path length. Initially the actual path length </p> </li>
+<li id="GUID-89B057B9-E26E-594C-B23F-E73FA97E07C8"><p>Inhibit Policy Mapping:
+integer whose value is the number of certificates that may appear after the
+current one before policy mapping is no longer permitted. Initially the chain
+length </p> </li>
+<li id="GUID-3D92E10D-2BF5-5DD3-B061-9CB332631880"><p>Require Explicit Policy:
+integer whose value is the number of certificates that may appear after the
+current one before an acceptable policy OID must appear in the certificate.
+Initially the chain length </p> </li>
+<li id="GUID-1CEA8529-2141-5083-9279-F464B217BDE1"><p>Current Cert: integer
+whose value is the position of the current certificate in the chain. Initially
+the chain length -1 </p> </li>
+</ul> <p><b> Validation Algorithm</b> </p> <p>Validation of a certificate
+chain starts at the root and ends at the End Entity. </p> <p><i>Validation
+warnings </i></p> <p>Validation returns warnings. Warnings enable client code
+to evaluate whether irregularities are errors. </p> <p>From Version 9.3, validation
+returns a warning object for every certificate in the chain. Each warning
+object has the following characteristics: </p> <ul>
+<li id="GUID-4C016BA3-99EF-5D7C-9EDC-AC958C9AA937"><p>It includes the object's
+index. Clients use the index to get the certificate from the certificate chain
+object (<xref href="GUID-A919BE84-8257-3911-9AD1-B1DB736346CE.dita#GUID-A919BE84-8257-3911-9AD1-B1DB736346CE/GUID-9A843DCB-54C7-3BF4-BF30-2515969079A9"><apiname>CX509CertChain::Cert()</apiname></xref>). </p> </li>
+<li id="GUID-81C9B8B1-F8B4-50E8-B7DC-53C131B646B9"><p>It encapsulates the
+warnings and the critical extensions' OID values for that certificate. </p> <p> </p> </li>
+</ul> <p>Clients can query the object for two sets of data: </p> <ul>
+<li id="GUID-A7E6D671-1966-5DA7-821C-C7AD3880D7F1"><p>the critical extensions
+for the certificate </p> </li>
+<li id="GUID-5FCA36E5-CEDB-567C-8E95-759C13A64362"><p>a set of warning values,
+each consisting of a reason for the warning and an integer identifying the
+certificate that the warning is associated with. </p> </li>
+</ul> <p>After querying the warning object for the critical extension, the
+client must process any custom critical extensions it supplied that are not
+in the supported list. This meets the X.509 certificate specification. </p><note> Prior
+to version 9.3, the set of warning values returned included any warnings about
+critical extensions. Warning values no longer include this information. But
+backward compatibility has been maintained for warning objects prior to version
+9.3. </note> <p><i>Certificate validation step</i>s </p> <p>Certificate
+validation takes place through the following steps: </p> <ul>
+<li id="GUID-70351BB4-CE56-559E-81A2-1EE0DBA19AFD"><p>Signature Verification
+&amp; Name Chaining </p> <p>Each certificate must be signed by, and its subject
+name should match the issuer name in, the certificate above it in the chain.
+The only exception is the root certificate, which, if it claims to be self
+signed (i.e. its subject and issuer names match) must really be self signed;
+otherwise its signature is not verified, but a warning is generated. </p> </li>
+<li id="GUID-9597F61C-7ECE-5754-85BC-12D50035D7D1"><p>Validity Period Checking </p> <p>For
+each certificate, the Validation Time must lie within the validity period
+in the certificate. The check is always carried out. The check treats a failure
+as an error or a warning depending on how the validation process is configured
+(See Date validity checks in <xref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita#GUID-A3B58436-07E4-565B-800B-86435D205461/GUID-AE46492C-5F13-5B73-B1F5-81DD6C15AFAF">Configuring
+for Certificate Validation</xref>). By default the check treats the failure
+as an error. </p> </li>
+<li id="GUID-1EB6F83B-C10D-5809-B5A8-4AF45FFA9A92"><p>Extension Processing </p> <p>Extensions
+can be marked critical. All critical extensions must be in the supported list
+to be recognized and processed. When a critical extension that is not in the
+supported list is encountered, an error results and validation fails. The
+client must process critical extensions that are not in the supported list. </p> </li>
+<li id="GUID-463F6C6E-7C3B-514E-A7E8-91D07CFFD102"><p>Revocation Checking </p> </li>
+</ul> <p>Additionally, for each certificate: </p> <ul>
+<li id="GUID-91579F6C-2C98-50DF-9637-E08EBDEC4CDE"><p>the <i>Max Path Length</i>, <i>Inhibit
+Policy Mapping</i> and <i>Require Explicit Policy</i> variables are decremented, </p> </li>
+<li id="GUID-05687909-8111-53D0-9760-88FF557C26AA"><p>and Current Cert must
+be less than or equal to <i>Max Path Length</i>. </p> </li>
+</ul> <p>When validation is complete the <i>Acceptable Policies</i> variable
+will be copied into the set of policies in the result object. </p> </section>
+<section><title>See also</title> <ul>
+<li id="GUID-A6095947-6CFF-50CC-BBAC-181B91CD9132"><p><xref href="GUID-E326C00B-6E07-5902-AB19-F00D1761795C.dita">PKIXCert</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3BCC33F-D11B-4F98-BCC3-9A06381A02E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A3BCC33F-D11B-4F98-BCC3-9A06381A02E7" xml:lang="en"><title>Constructing
+the view controller in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Each view controller acts like a small UI controller.</p>
+<p>The call on the first phase constructor of the view controller occurs
+in the<xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita"> UI controller</xref>.</p>
+<p>The methods you need to implement in your <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+class are as follows:</p>
+<ul>
+<li><p>C++ default constructor, which cannot contain any code that
+might leave. A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-CA1A42F0-2B6F-4520-B408-1B46037B6E29" xml:space="preserve">
+CMyViewAppView::CMyViewAppView()
+    {
+    }</codeblock>
+<p>The class declaration for this constructor in the class header file
+needs to be public to support the construction method required.</p>
+</itemgroup>
+</li>
+<li><p>two-phase constructor, a common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-A98C61E4-8C11-4F7D-9782-C440B8FAE374" xml:space="preserve">CMyViewAppView* CMyViewAppView::NewL( const TRect&amp; aRect )
+    {
+    CMyViewAppView* self = CMyViewAppView::NewLC( aRect );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+CMyViewAppView* CMyViewAppView::NewLC( const TRect&amp; aRect )
+    {
+    CMyViewAppView* self = new ( ELeave ) CMyViewAppView;
+    CleanupStack::PushL( self );
+    self-&gt;ConstructL( aRect );
+    return self;
+    }
+</codeblock>
+<p>The declarations for <parmname>CMyViewAppView::NewL</parmname> and <parmname>CMyViewAppView::NewLC</parmname> in
+the class header file needs to be public to support the construction method
+required. </p>
+<p>In this approach, <parmname>CMyViewAppView::NewL</parmname> is called
+from the UI controller. It creates a view object by calling <parmname>CMyViewAppView::NewLC</parmname>. <parmname>CMyViewAppView::NewLC</parmname> calls new (<parmname>ELeave</parmname>) on the C++ default constructor <parmname>CMyViewAppView</parmname> to
+create the object (and leave if it cannot), <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CCleanupClass.html#%3a%3aCCleanup%3a%3aPushL%28CBase%20%2a%29" format="application/java-archive">pushes</xref> a pointer to the clean-up stack in case the second phase construction method
+leaves, and then calls the second phase construction method of the object.
+When it returns to <parmname>CMyViewAppView::NewL</parmname>, the pointer
+pushed to the cleanup stack is <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CCleanupClass.html#%3a%3aCCleanup%3a%3aPop%28%29" format="application/java-archive">removed</xref>.</p>
+</itemgroup>
+</li>
+<li><p>Symbian 2nd phase constructor with code that might leave.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-F282B41C-0AF0-4B62-853A-812F34667C78" xml:space="preserve">void CMyViewAppView::ConstructL()
+    {
+    // construct r_name32 resources
+    BaseConstructL(r_name32 );
+    }
+</codeblock>
+<p><parmname>CMyViewAppView::ConstructL</parmname> is a public class providing
+the second phase construction that accepts the rectangle the view is drawn
+to.</p>
+<p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#04bb841d875636d632ada39cb12514c4" format="application/java-archive"><parmname>CAknView::BaseConstructL</parmname></xref> initializes this view with standard values. It accepts the
+symbolic ID name of a resource from the resource file.</p>
+</itemgroup>
+</li>
+<li><p>a method for returning the UID for the view. A common implementation
+is:</p>
+<itemgroup>
+<codeblock id="GUID-272134EE-D14C-4F97-A46D-0BEC71EF01ED" xml:space="preserve">
+TUid CMyViewAppView::Id() const
+    {
+    return KViewId;
+    }
+
+</codeblock>
+<p><parmname>CMyViewAppView::Id()</parmname> is the override of <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#71e3a172cd418a5d73071f598fe8d26d" format="application/java-archive"><parmname>CAknView::ID</parmname></xref> to return the UID of the view</p>
+<p><parmname>KViewId</parmname> is defined somewhere in a header file,
+and is unique to this application</p>
+</itemgroup>
+</li>
+</ul>
+<section id="GUID-952D9762-EA63-489D-9698-FC504BD73001"><title>Scalability</title>
+<p>If you wish to support <xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">scalability</xref> in
+your application, then you need to implement <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/UIKON/CEikAppUiClass.html#%3a%3aCEikAppUi%3a%3aHandleResourceChangeL%28%29" format="application/java-archive"><parmname>CEikAppUi::HandleResourceChangeL</parmname></xref> in the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita"> UI
+controller</xref>, and then a <parmname>HandleClientRectChange</parmname> method
+in the view controller.</p>
+<p>A common implementation is as follows:</p>
+<codeblock id="GUID-F5BC393D-EA47-45B2-8892-B71CE934F5B6" xml:space="preserve">
+void CMyViewAppView::HandleClientRectChange()
+    {
+    if ( iContainer )
+        {
+        iContainer-&gt;SetRect( ClientRect() );
+        }
+    }
+
+</codeblock>
+<p>, where</p>
+<p><parmname>CMyViewAppView::HandleClientRectChange</parmname> calls <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetRect%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetRect(aRect)</parmname></xref> to set the
+window size according to the requirements of the mobile device.</p>
+</section>
+<section id="GUID-DC760F92-C154-4DAA-AAD1-A0C02766C6B0"><title>Activating and
+deactivating views</title>
+<p>In order for a view to be displayed, it needs to be activated by <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#486d490d911ce5e9495e0ee19b0442db" format="application/java-archive"><parmname>CAknView::DoActivateL</parmname></xref>. The override of this method in the view controller must create
+a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view to display visual
+content to mobile device users. The <parmname>DoActivateL()</parmname> call
+must be prepared to handle the case where it is called while the view is already
+active.</p>
+<p>If the view is not published for external use, or does not handle message
+parameters, a simple check and return if the view is already active is sufficient.</p>
+<p>A common implementation is as follows:</p>
+<codeblock id="GUID-01819343-975C-499B-9DF6-14DA9BB5912E" xml:space="preserve">
+void CMyViewAppView::DoActivateL(
+   const TVwsViewId&amp; /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+   const TDesC8&amp; /*aCustomMessage*/)
+    {
+    if (!iContainer)
+        {
+        iContainer = new (ELeave) CMyViewAppContainer;
+        iContainer-&gt;SetMopParent(this);
+        iContainer-&gt;ConstructL( ClientRect() );
+        AppUi()-&gt;AddToStackL( *this, iContainer );
+        } 
+
+    // Message handling would take place here.
+   }
+</codeblock>
+<p>, where</p>
+<ul>
+<li><p><parmname>CMyViewAppView::DoActivateL</parmname> is the override
+for <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#486d490d911ce5e9495e0ee19b0442db" format="application/java-archive"><parmname>CAknView::DoActivateL</parmname></xref> for the application.</p></li>
+<li><p><parmname>if (!iContainer)</parmname> checks to see if the
+view already exists.</p></li>
+<li><p><parmname>iContainer = new (ELeave) CMyViewAppContainer;</parmname> calls
+the first phase constructor of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+class that provides the view.</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetMopParent%28MObjectProvider%20%2a%29" format="application/java-archive"><parmname>iContainer-&gt;SetMopParent(this);</parmname></xref> sets the
+context for the view being created. In this case, it assigns the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view to the view controller.</p>
+</li>
+<li><p><parmname>iContainer-&gt;ConstructL( ClientRect() )</parmname> calls
+the second phase constructor of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+class that provides the view.</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aAddToStackL%28CCoeControl%20%2a%2cTInt%2cTInt%29" format="application/java-archive"><parmname>AppUi()-&gt;AddToStackL( *this, iContainer );</parmname></xref> adds
+the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view to the control
+stack for <xref href="GUID-542550FA-F9F1-46D6-8182-6E7FAA013572.dita">key event
+handling.</xref></p></li>
+</ul>
+<p>The view architecture supports an automatic recovery mechanism if <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#486d490d911ce5e9495e0ee19b0442db" format="application/java-archive"><parmname>CAknView::DoActivateL()</parmname></xref> leaves. The Symbian platform calls <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#f47363eacbe46c5827282407b354b535" format="application/java-archive"><parmname>CAknView::DoDeactivate()</parmname></xref> in
+the view that has left, reinstates the previous view of the application, and
+returns to the view that was just displayed. If the application had no previous
+view, it exits. If the application’s previous view was the same as the activating
+view (that is, the view is reactivated with a new message), the application
+attempts to recover to the default view.</p>
+<p>In most cases, this mechanism removes the need to put any recovery mechanism
+in the <parmname>DoActivateL()</parmname> methods. The one situation where
+you may consider something more complex is when the view can be reactivated
+(that is, activated with a new message while already active). In this case,
+the view may attempt a more complex strategy to preserve the existing state
+if a leave happens during the attempt to handle the new message.</p>
+<p>To destroy the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+control in a view control, you must override <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#f47363eacbe46c5827282407b354b535" format="application/java-archive"><parmname>CAknView::DoDeactivate</parmname></xref>.
+It is called when the application exits, or another view has been activated
+and the previous active window needs to be shut down. This order makes view
+switching fast. In <parmname>DoDeactivate</parmname> the view is removed from
+the stack and therefore the view’s container and its controls are destroyed.
+This function must not leave.</p>
+<p>A common implementation is as follows:</p>
+<codeblock id="GUID-01F7257D-47C2-4A42-9717-97D3913F3AB0" xml:space="preserve">
+void CMyViewAppView::DoDeactivate()
+    {
+    if ( iContainer )
+        {
+        AppUi()-&gt;RemoveFromViewStack( *this, iContainer );
+        }
+    
+    delete iContainer;
+    iContainer = NULL;
+    }</codeblock>
+<p>, where</p>
+<ul>
+<li><p><parmname>CMyViewAppView::DoDeactivateL</parmname> is the
+override for <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#f47363eacbe46c5827282407b354b535" format="application/java-archive"><parmname>CAknView::DoDeactivateL</parmname></xref> for
+the application.</p></li>
+<li><p><parmname>if (!iContainer)</parmname> checks to see if the
+view already exists.</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aRemoveFromViewStack%28const%20MCoeView%20%26amp%3b%2cCCoeControl%20%2a%29" format="application/java-archive"><parmname>AppUi()-&gt;RemoveFromViewStack( *this, iContainer );</parmname></xref> removes
+the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived view from the control
+stack.</p></li>
+<li><p><parmname>delete iContainer;</parmname> deletes the <parmname>CCoeControl</parmname>-derived
+view.</p></li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596" xml:lang="en"><title>SIP Client Resolver API</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674"><title>Drawing Bitmaps</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides example code that demonstrates blitting a bitmap to the screen, blitting a rectangular piece of a bitmap to the screen and blitting a bitmap under a mask. </p> <p>These examples assume that <codeph>bitmap</codeph> is a pointer to a valid <codeph>CFbsBitmap</codeph> object. </p> <section><title>Bitmap block transfer</title> <p>Use <codeph>CBitmapContext::BitBlt()</codeph> to blit a <codeph>CFbsBitmap</codeph> to the screen. </p> <codeblock id="GUID-C40381A2-3729-5606-824F-7208421C76C2" xml:space="preserve">// draw the bitmap using bitmap block transfer
+TPoint pos(50,50);
+gc.BitBlt(pos, bitmap);</codeblock> </section> <section><title>Block transfer of a rectangular piece of a bitmap</title> <p>You can blit a rectangular piece of a bitmap to the screen. </p> <codeblock id="GUID-F216FE85-C2B4-586B-86D1-F6C859FA9891" xml:space="preserve">...
+// set a rectangle for the top-left quadrant of the source bitmap
+TSize bmpSizeInPixels=bitmap-&gt;SizeInPixels();
+TSize bmpPieceSize(bmpSizeInPixels.iWidth/2,bmpSizeInPixels.iHeight/2);
+TRect bmpPieceRect(TPoint(0,0),bmpPieceSize); 
+    
+// blit only the piece of the bitmap indicated by bmpPieceRect
+TPoint pos(100,100);
+gc.BitBlt(pos, bitmap, bmpPieceRect);</codeblock> </section> <section id="GUID-22430013-D8A8-5A09-8DD9-D95A6EF00B2D"><title>Masked bitmap block transfer</title> <p>Masks can be used to select which parts of a bitmap are drawn by <codeph>CBitmapContext::BitBltMasked()</codeph>. </p> <p>Masks can be used to not display pixels of the source bitmap if their corresponding mask pixel is black, or, alternatively, where the mask is white (called an inverted mask). </p> <p>The following figure shows successively a source bitmap, a mask, and the outcome when they are blitted with <codeph>BitBltMasked()</codeph>. </p> <fig id="GUID-425B6A42-6B3B-5FE4-BDD6-59CD7E695C4A"><image href="GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e180248_href.png" placement="inline"/></fig> <codeblock id="GUID-8D967F91-A768-5DA7-A7D7-D5CA2D40B8D9" xml:space="preserve">// Load the mask bitmap, just like any other
+CFbsBitmap* maskBitmap = new (ELeave) CFbsBitmap();
+CleanupStack::PushL(maskBitmap);
+User::LeaveIfError(maskBitmap-&gt;
+  Load(multiBitmapFile,EMbmGrbmap2Smilmask));
+    
+// Calculate rectangle for the whole bitmap
+TRect bmpPieceRect(TPoint(0,0),bitmap-&gt;SizeInPixels());
+    
+// Blit using a masking bitmap, with no inversion
+gc.BitBltMasked(TPoint(50,50),bitmap,bmpPieceRect,maskBitmap,EFalse);
+    
+...
+// clean up
+CleanupStack::PopAndDestroy();
+</codeblock> <p><b>Notes </b> </p> <ul><li id="GUID-4CDB8020-D42D-517D-BA3A-2D6FDD2DEA33"><p>Unlike with an ordinary <codeph>BitBlit()</codeph>, with <codeph>BitBltMasked()</codeph> you always have to specify what part of the bitmap to display: here we just set <codeph>bmpPieceRect</codeph> so that the whole bitmap is displayed. </p> </li> <li id="GUID-67FFCC84-B364-50DF-ACDA-54FF865FB423"><p>If the mask bitmap is smaller than the source bitmap, then it is tiled across the bitmap. </p> </li> <li id="GUID-A2A17DA3-5B03-56EF-B5FE-E6C8837F26F6"><p>For an inverted mask, set the last argument to <codeph>BitBltMasked()</codeph> to <codeph>ETrue</codeph>. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A3EE649B-FF95-539F-8037-54706E4702D5" xml:lang="en"><title>How
+to Choose Thread Priority</title><shortdesc>Explains the factors to consider when choosing a thread priority.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The two main considerations when choosing the priority of a thread are:
+the timing requirements of the task that the thread must accomplish, and the
+other tasks that are likely to be running at the same time. </p>
+<ul>
+<li id="GUID-53666CA1-A159-595C-A077-418C161670CB"><p> <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-1E013283-E81C-5144-8055-5667215A3D00">Choosing a process priority</xref> </p> </li>
+<li id="GUID-D592C147-7A98-5722-B345-7DECC98F0B94"><p> <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-4248FC3D-8901-5B16-9ACB-9F96830875A6">Choosing the priority of a thread relative to a process</xref> </p> </li>
+<li id="GUID-B11798AA-E313-5E1F-94A9-F15729744DFC"><p> <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-255A62AC-AE94-5296-9B23-87414F68BC0D">Choosing a process-independent thread priority</xref> </p> </li>
+<li id="GUID-133625B3-1DBB-5937-908B-1FEDDD99C79A"><p> <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-D11BCB87-CC0F-50EF-AB81-F3E46C6C4081">Guideline summary</xref> </p> </li>
+<li id="GUID-389CD1F8-D39D-599E-9582-AA052DA99AC3"><p> <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-357FC034-EEB4-5D9F-B51A-E6A1400247AD">Long running background tasks</xref> </p> </li>
+<li id="GUID-21950134-8365-576C-AC8F-FD1BE93EB8DF"><p> <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-86CD6AE8-33E2-549D-8B51-DE705CE017E7">Special timing requirements</xref> </p> </li>
+</ul>
+<section id="GUID-1E013283-E81C-5144-8055-5667215A3D00"><title>Choosing a
+process priority</title> <p>Choose one of the four standard process priorities
+listed below as the <i>basis</i> for a <i>range of relative priorities</i>: </p> <ol id="GUID-D1020288-02AD-5BDD-A3EA-F7716EB7A941">
+<li id="GUID-D87CB980-CBAC-5302-AB28-92ACBED89A8C"><p> <codeph>EPriorityForeground</codeph>  </p> <p>This
+is the default process priority. Use this priority for: </p> <ul>
+<li id="GUID-4354C28F-9929-5CEA-B515-E235CD90C961"><p>The currently selected
+user interface application which appears in the foreground on the device screen.
+This application is said to have the <i>focus</i>. </p> </li>
+<li id="GUID-8EE56372-79AB-5841-A2FC-B87282F61CD3"><p>Servers that do not
+have specific timing or response requirements. </p> </li>
+</ul> <p>The UIKON framework calls <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-B5FBAB15-4946-3F3F-B03B-C66D6DF573CE"><apiname>User::SetPriorityControl</apiname></xref> <codeph>(ETrue)</codeph> so
+that the window server can switch applications to background when not in focus.
+This is known as <i>priority control</i>. The application can further specify
+how the window server makes the priority change using <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-E940B930-A882-3624-B8FF-D11626B6EA95"><apiname>RWsSession::ComputeMode()</apiname></xref>.
+However, applications should not disable <i>priority control</i> to run permanently
+at <codeph>EPriorityForeground</codeph> process priority without strong justification. <i>Priority
+control</i> is irrelevant to processes without a user interface, for which
+it should remain disabled. </p> </li>
+<li id="GUID-CF0DAC60-5149-56BE-A5DF-F9A86C5037B8"><p> <codeph>EPriorityBackground</codeph>  </p> <p>Use
+this process priority for: </p> <ul>
+<li id="GUID-8B43DFDD-9B1A-52A3-A2B0-C4D4C3067D46"><p>all running user interface
+applications except the currently selected application. These applications
+appear in the background on the device screen. </p> </li>
+<li id="GUID-AA41948D-6929-5C67-A501-3612AF76F750"><p>applications which do
+not need to respond rapidly to user actions. For example applications that
+do not have a graphical user interface. </p> </li>
+</ul> </li>
+<li id="GUID-6AF283AE-E3B9-558A-A526-4CFCA79E77C7"><p> <codeph>EPriorityHigh</codeph>  </p> <p>Use
+this process priority for system servers which should respond quickly to client
+requests. These servers must do minimal work at this priority level before
+quitting to allow other threads to run. </p> </li>
+<li id="GUID-5C69DA26-9106-50A7-B4C4-55940BFB071B"><p> <codeph>EPriorityLow</codeph>  </p> <p>Use
+this priority for processes which can run in the background. </p> </li>
+<li id="GUID-4B16E703-2EA0-526D-89A1-D0F59C06BAC1"><p>The remaining priority
+values:<codeph>EPriorityWindowServer</codeph>,<codeph>EPriorityFileServer</codeph>, <codeph>EPrioritySupervisor</codeph> and <codeph>EPriorityRealTimeServer</codeph> can only be used by processes with <codeph>ProtServ</codeph> (Protected
+Server) Security Capability. </p> </li>
+</ol> <p>See <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-B9022468-F4E7-536B-B1D4-58DAA9EA5914">Process-relative
+scheme</xref> in <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-0194B574-806B-5BA3-B65C-6DC5A80CAB86">Priority
+scheme for general user-side threads</xref> in <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita">Thread
+priority scheme</xref>. </p> </section>
+<section id="GUID-4248FC3D-8901-5B16-9ACB-9F96830875A6"><title>Choosing the
+priority of a thread relative to a process</title> <p> <codeph>EPriorityNormal</codeph> is
+the default <i>relative</i> thread priority. Choose <codeph>EPriorityLess</codeph> and <codeph>EPriorityMuchLess</codeph> to
+set a lower priority than the owning process. Choose <codeph>EPriorityMore</codeph> and <codeph>EPriorityMuchMore</codeph> to
+set a higher priority than the owning process. </p> <p>Application programs
+and system servers with no <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-86CD6AE8-33E2-549D-8B51-DE705CE017E7">special
+timing requirements</xref> running with a <i>process</i> priority of <codeph>EPriorityForeground</codeph> or <codeph>EPriorityBackground</codeph> should
+use the default <i>relative</i> priority <codeph>EPriorityNormal</codeph> for
+their main thread. </p> </section>
+<section id="GUID-255A62AC-AE94-5296-9B23-87414F68BC0D"><title>Choosing a
+process-independent thread priority</title> <p>Use process-independent thread
+priorities only when <i>strictly</i> required. Typically, this is when the
+thread's behaviour means that its priority must lie outside the range of relative
+priorities available with a chosen process priority. Such threads are used
+for tasks with <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-86CD6AE8-33E2-549D-8B51-DE705CE017E7">special
+timing requirements</xref>, such as long running background tasks or time
+critical tasks. </p> <p>Avoid "absolute" priorities in the middle of the range
+of relative priorities available with the chosen process priority. For example,
+consider what happens if you use <xref href="GUID-1054385C-7168-31ED-89D9-4C33E28836A0.dita"><apiname>EPriorityAbsoluteForegroundNormal</apiname></xref>.
+This is in the middle of the range of priorities relative to the <codeph>EPriorityForeground</codeph> process
+priority. If the process priority is changed to <codeph>EPriorityBackground</codeph>,
+then the thread will now pre-empt all threads that have been assigned process-relative
+priorities. </p> <p>Time critical tasks can be divided into those that must
+complete as quickly as possible and those that need to complete within a fixed
+time interval. The former are simply high priority tasks, the latter are known
+as real-time tasks. See <xref href="GUID-25F853BF-BA95-5348-809E-670C04734AB7.dita">How
+to choose a real-time thread priority</xref>. </p> </section>
+<section id="GUID-D11BCB87-CC0F-50EF-AB81-F3E46C6C4081"><title>Guideline summary</title> <ul>
+<li id="GUID-988EA6D9-3534-565B-80CB-C63B7F808E88"><p>Use process-relative
+thread priorities instead of process-independent thread priorities whenever
+possible. </p> </li>
+<li id="GUID-F5CCDDE0-BB38-5043-87FC-ED7D41826E11"><p>Only use process-independent
+thread priorities for threads that need to run at particularly high or low
+priorities compared to other threads running on the system. Examples of these
+two extremes are short term, time critical tasks or <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-357FC034-EEB4-5D9F-B51A-E6A1400247AD">long running background tasks</xref>. </p> </li>
+<li id="GUID-BC583446-B98E-5D47-910C-5D4E0037D39B"><p>Ensure that threads
+with priorities above <xref href="GUID-1054385C-7168-31ED-89D9-4C33E28836A0.dita"><apiname>EPriorityAbsoluteForegroundNormal</apiname></xref> such
+as the GUI foreground application and system servers do not perform long-running
+tasks. </p> </li>
+<li id="GUID-8166180C-05CA-5514-B6D1-7D21DF9B9C57"><p>Ensure that threads
+with priorities in the range above <xref href="GUID-CD20880F-21EB-389C-A0A4-8DFFE714B102.dita"><apiname>EPriorityAbsoluteBackgroundNormal</apiname></xref>,
+and below or equal to <xref href="GUID-1054385C-7168-31ED-89D9-4C33E28836A0.dita"><apiname>EPriorityAbsoluteForegroundNormal</apiname></xref> do
+not perform long-running tasks. </p> </li>
+<li id="GUID-697D648E-FE24-5F18-8622-1BAEEDEBB9F9"><p>Threads can have equal
+priorities. Higher or lower priorities are only needed if one thread must
+pre-empt another. </p> </li>
+<li id="GUID-D4753029-3139-59B6-8C29-BFF9FEADB003"><p>GUI applications must
+not disable <i>priority control</i> to run permanently at <codeph>EPriorityForeground</codeph> process
+priority without very good reason. See also <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-1E013283-E81C-5144-8055-5667215A3D00">choosing
+a process priority</xref> for a description of <i>priority control</i>. </p> </li>
+<li id="GUID-56084ABD-AF39-5EB9-8AFE-145CCD2EF55B"><p>Unless there is a specific
+requirement, disable priority control for processes without a user interface. </p> </li>
+<li id="GUID-4B743232-CFD3-5CEC-9B9D-FDC99CB194A0"><p>Avoid adding unnecessary
+extra functionality to high priority threads. Instead, create a new lower
+priority thread for this code. Always perform the minimum work at a given
+priority to meet a task deadline. </p> </li>
+<li id="GUID-3C3C4B91-28DC-5083-B80C-77F54C06B7E3"><p>Never assume a higher
+priority thread will run before a lower priority thread. The scheduling algorithm
+and the <xref href="GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita#GUID-7B173E02-9697-51F4-A7E8-795AEF547109/GUID-F5B98A28-EEDA-58BD-A6CC-62C1621D44DF">thread
+priority value mapping table</xref> might change. Use a synchronization mechanism
+such as a semaphore or mutex to guarantee that a thread is not interrupted. </p> </li>
+<li id="GUID-5FFBE78D-511C-5DAF-A410-BDCC4F8AC57B"><p>Always avoid unnecessary <xref href="GUID-A3EE649B-FF95-539F-8037-54706E4702D5.dita#GUID-A3EE649B-FF95-539F-8037-54706E4702D5/GUID-357FC034-EEB4-5D9F-B51A-E6A1400247AD">long
+running background tasks</xref> as this reduces battery performance. </p> </li>
+<li id="GUID-60AA26FC-A170-50B1-8F7E-27FC4718220A"><p>Devices only have a
+finite amount of processing power. The full impact of choosing a particular
+thread priority is often only observed when the system is under stress, causing
+some tasks to succeed at the expense of others. This can only be discovered
+through appropriate stress testing. </p> </li>
+<li id="GUID-324C10ED-218D-51C9-88E5-C23913C54D0A"><p>When testing new software
+use realistic scenarios. Run applications which are likely to be used at the
+same time as the new code, for example making and receiving calls at the same
+time as sending a text message. Adjust thread priorities as necessary to ensure
+a good end-user experience. Choosing too high a priority for your software
+can adversely effect the end-user's experience just as severely as using a
+priority which is too low. </p> </li>
+</ul> </section>
+<section id="GUID-357FC034-EEB4-5D9F-B51A-E6A1400247AD"><title>Long running
+background tasks</title> <p>Long running tasks usually run in the background.
+They use a low priority thread and do not directly respond to user interaction.
+They generally use all the CPU time available to them and run for a period
+of a fraction of a second to a few seconds. Occasionally long running tasks,
+critical to the currently selected UI application, run at a higher priority
+for a few seconds. </p> </section>
+<section id="GUID-86CD6AE8-33E2-549D-8B51-DE705CE017E7"><title>Special timing
+requirements</title> <p>Tasks with special timing requirements fall into two
+distinct categories: </p> <ul>
+<li id="GUID-DD200274-40B1-5009-8BC9-86C35565B423"><p>Short term, time critical
+tasks. </p> <p>These use high priority or real-time threads. </p> </li>
+<li id="GUID-26F57B7B-F75E-5E8E-A40F-8A97BF08E1B2"><p>Long running background
+tasks such as garbage collection and other cleanup tasks. </p> <p>These use
+low priority threads. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A40376B6-8B2B-551A-B72F-CFCADBC84BE7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A40376B6-8B2B-551A-B72F-CFCADBC84BE7" xml:lang="en"><title>Security and Data Privacy Tools</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Security and Data Privacy Tools contains Security Config and Security Tools components. This section provides detailed description of configuration settings for specific OS Security components and security tools used in OS Security. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A432469D-F594-4A94-8889-142AB39A795D_d0e46138_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A432469D-F594-4A94-8889-142AB39A795D_d0e52170_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB"><title> Using Subtitle Graphic Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives you more information about how to use Subtitle Graphic. </p> <section><title>Purpose</title> <p>Subtitle Graphic displays subtitles on the screen when you use two different drawing modes: </p> <ul><li id="GUID-955E7707-F33A-57B3-B859-F6D73FBE1B04"><p>swap frame mode </p> </li> <li id="GUID-71D61E03-6B70-500A-A4FC-DA414548849A"><p>draw frame mode </p> </li> </ul> <p><b>Required background</b> </p> <p>Subtitle Graphic is loaded by Video Player Controller to render subtitle graphics on a window when subtitle is added to a video screen. </p> <p><b>Introduction</b> </p> <p>Subtitle Graphic (<xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita"><apiname>CMMFSubtitleGraphic</apiname></xref>) takes bitmap handles to display subtitles on the window. The bitmap handle must be a transparent bitmap. The bitmap handle contains the subtitle image to render on the top of the video window. The bitmap handle must be the same size as the subtitle region. </p> </section> <section><title>Using Subtitle Graphic</title> <p>The following task is done using Subtitle Graphic: </p> <ul><li id="GUID-A15E631F-155C-572D-8078-9283AB76DD9D"><p><xref href="GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita#GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB/GUID-E1D035E5-5E17-5DDB-B82F-ECF36C7E00C3">How to use Subtitle Graphic</xref>. </p> </li> </ul> <p id="GUID-E1D035E5-5E17-5DDB-B82F-ECF36C7E00C3"><b>Basic procedure to use Subtitle Graphic</b> </p> <p>The high-level steps to use Subtitle Graphic are as follows: </p> <ul><li id="GUID-BE4F403A-BCC2-5F25-9757-7710EA89B95E"><p>To create a new <codeph>CMMFSubtitleGraphic</codeph> call <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-9655DE26-C42B-354D-BD57-2C1EC7FC7454"><apiname>CMMFSubtitleGraphic::NewL()</apiname></xref>. </p> </li> <li id="GUID-398524C5-71DE-5089-89E2-FA3CEF3F5991"><p>To get the graphic identity of the created <codeph>CMMFSubtitleGraphic</codeph> call <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-3DCC1206-D30E-36F6-B26E-478CB9793255"><apiname>CMMFSubtitleGraphic::GetId(TWsGraphicId &amp;)</apiname></xref>. </p> <p> <b>Note:</b> If multiple window support is required, multiple Subtitle Graphics can be created at the same time, and each Subtitle Graphic will have a different graphic ID. Each instance of <codeph>CMMFSubtitleGraphic</codeph> can be used for one window. </p> </li> <li id="GUID-E0B844B0-3A43-5275-994F-3CE84C0DB749"><p>To draw to <codeph>CMMFSubtitleGraphic</codeph> there are two drawing modes: </p> <ul><li id="GUID-380735D0-EA1D-5D2D-AB05-F4E468C56ACA"><p> <b>Swap frame mode </b>  </p> <p> <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-6388C482-214B-370B-9376-E55A76540C47"><apiname>CMMFSubtitleGraphic::Initialize(TInt,
+                        TInt)</apiname></xref> initialises the CRP with two bitmap handles, which act as a front buffer and a back buffer. To swap the current drawing bitmap call <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-4AECA96C-4F4B-3444-8A79-47D215540492"><apiname>CMMFSubtitleGraphic::SwapFrame()</apiname></xref>. </p> <p>The example below shows Subtitle Graphic swap frame mode: </p> <codeblock id="GUID-AED66EBF-71FD-59AA-A8EC-6F3080C9587F" xml:space="preserve">
+
+// initialize crp with the specified bitmap handles
+crp-&gt;Initialize(bitmap1.Handle(), bitmap2.Handle()); 
+
+&lt;snip&gt; decode first frame into bitmap1 here… &lt;snip&gt;
+
+// display drawrect1 of bitmap1 for displayDuration number of microsecond
+crp-&gt;SwapFrame(1, drawRect1, displayDuration); 
+
+&lt;snip&gt; decode second frame into bitmap2 here… &lt;snip&gt;
+
+// display drawrect2 of bitmap2 for displayDuration number of microsecond
+crp-&gt;SwapFrame(2, drawRect2, displayDuration); 
+
+&lt;snip&gt; decode third frame into bitmap1 here… &lt;snip&gt;
+
+// display drawrect1 of bitmap1 for displayDuration number of microsecond
+crp-&gt;SwapFrame(1, drawRect1, displayDuration); 
+
+</codeblock> </li> <li id="GUID-7208CFB0-F006-5B12-9192-05F978D6F2C2"><p> <b>Draw frame mode</b>  </p> <p> <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-18A5204C-1C6F-3A8F-9174-CE20317668DF"><apiname>CMMFSubtitleGraphic::Initialize()</apiname></xref> initialises the CRP with no bitmap handles. To draw bitmap call <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-BBFF5CE4-D734-3844-810D-F1E2AB683813"><apiname>CMMFSubtitleGraphic::DrawFrame()</apiname></xref>. </p> <p>The example below shows Subtitle Graphic draw frame mode: </p> <codeblock id="GUID-7620F12E-2D57-5BA5-9C70-E821D37A62F6" xml:space="preserve">
+
+// initialize crp for drawing any bitmap handle
+crp-&gt;Initialize(); 
+
+&lt;snip&gt; decode first frame into bitmap1 here… &lt;snip&gt;
+
+// draw drawrect1 of bitmap1 for displayDuration number of microsecond
+crp-&gt;DrawFrame(bitmap1.Handle(), drawRect1, displayDuration); 
+
+&lt;snip&gt; decode second frame into bitmap2 here… &lt;snip&gt;
+
+// draw drawrect2 of bitmap2 for displayDuration number of microsecond
+crp-&gt;DrawFrame(bitmap2.Handle(), drawRect2, displayDuration);
+
+</codeblock> </li> </ul> <p>In both of the examples above, the <codeph>drawRect1</codeph> and <codeph>drawRect2</codeph> represent the region of the bitmap that contains the subtitle. The region is relative to the bitmap. The region is sent to indicate the region of the bitmap that needs to be drawn. The <codeph>displayDuration</codeph> is the time that the subtitle bitmap will be displayed before it is cleared. If the value is 0, the subtitle bitmap will not be cleared until the next <codeph>DrawFrame()</codeph>, <codeph>SwapFrame()</codeph>, or <codeph>Clear()</codeph> call. </p> </li> <li id="GUID-0B552DEC-75F9-539E-A7F5-7977CB8C1F62"><p>To clear Subtitle Graphic call <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita#GUID-A6DB8EBA-56B2-35F2-A791-918400779A85/GUID-25F7CD6B-659E-3CE7-90E3-0B3C13AE3F5C"><apiname>CMMFSubtitleGraphic::Clear()</apiname></xref>. This may be used when a video is stopped to remove the clear the subtitle bitmap from window. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita"><linktext> Subtitle Graphic Overview</linktext> </link> <link href="GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita"><linktext>Video Subtitle CRP Support from
+                MMF</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4560E99-C124-49A1-ADA1-D1B1F18EE539.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A4560E99-C124-49A1-ADA1-D1B1F18EE539" xml:lang="en"><title>Relationship
+between framework and applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><draft-comment time="2007-03-05T10:12">Comment for reviewers: we will
+be adding a picture to illustrate this point in future releases of the CDL.</draft-comment></p>
+<p>The displays and keys for the mobile device are shared between all running
+applications. The Symbian platform controls and coordinates access to them.
+When you meet the <xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">application
+framework architecture</xref> requirements, the application framework manages
+connections to the underlying architecture and also controls some of the elements
+on the display. While the details of what is controlled by default by the
+Symbian platform and what is controlled by your application are covered in
+the relevant sections of this UI section, the following cases illustrate some
+divisions about what is managed where: </p>
+<ul>
+<li><p>in the status pane: </p>
+<itemgroup>
+<p>The drawing of the status pane is managed by the Symbian platform.</p>
+<p>The <i>battery pane/universal indicator pane</i> and <i>signal pane</i> are
+managed by the Symbian platform.</p>
+<p>The <i>title pane</i>, <i>context pane,</i> and <i>navi pane</i> are
+managed by your application, although a default behavior is provided by the
+application framework.</p>
+</itemgroup>
+</li>
+<li><p>in the control pane:</p>
+<itemgroup>
+<p>The drawing of the control pane is managed by the Symbian platform.</p>
+<p>The labels associated with the two softkeys are provided by application
+resources.</p>
+<p>The event loop that collects the commands that result from selections
+and the passing of these commands on to your application are handled by the
+application framework.</p>
+<p>The <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">handling
+of the commands</xref> received from the application framework need to be
+handled in your application.</p>
+<p>For more details, see <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBA buttons</xref> and <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">Menu
+bars</xref>.</p>
+</itemgroup>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A467E933-C4B4-5518-96D6-471E44B216B3"><title> Advanced Pond Guide</title><shortdesc>This topic describes Comms ponds in more detail. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-504F0262-7142-5AE0-8E56-675028D7711B"><title>APIs</title> <p>The following diagram is a partial representation of the class relationships for <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita"><apiname>RCommsBufPond</apiname></xref>. </p> <fig id="GUID-ECAD1BBF-7319-53E5-9719-0BEEE52CFC0D"><title>
+             Comms pond 
+          </title> <image href="GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e92651_href.png" placement="inline"/></fig> <p> </p> <p>An <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita"><apiname>RCommsBufPond</apiname></xref> instance manages a number of memory pools. Each pool contains buffers of identical size. </p> <p>The Comms Data Plane uses chains of buffers to transfer data up and down the stack. For more information about buffers and chains, see <xref href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita">Comms Buffers (MBuf) and Comms Chains</xref>. </p> </section> <section id="GUID-7BA25CFC-91A4-5A72-A281-FE1CD89179A1"><title>Lifecycle</title> <ol id="GUID-FC7EDD22-6ADB-566F-9DD0-C2B001B86474"><li id="GUID-A0EA1F6F-2E8C-5A0E-AACB-AF799D3B6B27"><p> <codeph>c32start.exe</codeph> reads the pond configuration stored in the <codeph>c32start.ini</codeph> file (see <xref href="GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita">Pond Configuration Reference</xref>). </p> </li> <li id="GUID-8DF535A1-CE52-575A-85A1-4A88DC275E6C"><p> <codeph>c32start.exe</codeph> provides the configuration information to the Root Server when initializing it. For more information about the C32 process, see <xref href="GUID-2FED5145-58E4-5560-8E52-6BD499EECE13.dita">Root Server</xref>. </p> </li> <li id="GUID-7D3ED0BE-2616-53A2-9F75-EA3FB491586B"><p>The Root Server creates the pond with the specified pools. </p> </li> <li id="GUID-B9989E00-6052-5D0E-B273-69FDF36C4A74"><p>The Root Server puts the pond handle in the TLS of each thread in <codeph>c32exe.exe</codeph> (see <xref href="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita">TLS Look-up Reduction Tutorial</xref>). </p> </li> </ol> <fig id="GUID-7DB5C332-6F20-5C84-892A-FBEE2B7A6F25"><image href="GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e92718_href.png" placement="inline"/></fig> </section> </conbody><related-links><link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> <link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf)
+                and Comms Chains</linktext> </link> <link href="GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita"><linktext>Pond Configuration
+                Reference</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4726E90-4F72-5986-947A-D948A8029240.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A4726E90-4F72-5986-947A-D948A8029240" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the architecture of Root Server and the C32 process.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4761D73-E2EA-512A-863B-D19F8698C69A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A4761D73-E2EA-512A-863B-D19F8698C69A"><title>where</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>where [ -wm ] name ... </userinput> </p> <p>Same as <xref href="GUID-0368678A-6963-5558-8DC2-0E618B927538.dita">whence</xref>  <codeph>-c</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243" xml:lang="en"><title>Duplicating
+handles to Kernel side objects</title><shortdesc>This document describes when you should duplicate a handle in kernel
+side programming.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-E9B67C16-E1D1-42D4-872D-6731F94DBC87"><title>Duplicating a thread-relative handle in another thread</title> <p>A
+handle in one thread (a thread-relative handle) may be duplicated in another
+thread within the same process.</p> <p>Typically, thread B may want to access
+a Kernel object which already exists and for which thread A, within the same
+process, already holds a handle.</p> <p>For example, if thread A has a handle
+on a semaphore, it is insufficient to pass a copy of the handle, an <codeph>RSemaphore</codeph>,
+to thread B. The handle passed to thread B does not refer to anything known
+by thread B. In order for thread B to gain a valid handle on the DLL, the
+handle must be duplicated.</p> <p>Note that, in practice, real code may or
+may not want to duplicate a semaphore handle, however the principle remains
+valid.</p> <p>In thread B, then:</p> <codeblock id="GUID-A6110799-7A92-5EF9-9AE8-CBB532D7542B" xml:space="preserve">...
+RSemaphore cs;
+cs.SetHandle(h.Handle()); 
+                          // ...where  h  is an RSemaphore, the
+                          // handle to the DLL, and
+                          // passed from thread A code.
+                                  
+cs.Duplicate(tA);
+                          // ...where  tA  is an RThread, the handle to
+                          // thread A, and passed from threadA code.
+                          // Duplicate also opens the resulting
+                          // handle, cs.
+...
+</codeblock> <p>The dotted line in the following diagram shows the effect
+of this:</p> <fig id="GUID-731954F6-D85E-5940-96A4-15AC6E3AA5F5">
+<image href="GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e205879_href.png" placement="inline"/>
+</fig> <p>Note that for process-relative handles, there is no need to use <codeph>Duplicate()</codeph>;
+the handle passed from thread A to thread B can be used directly.</p> </section>
+<section id="GUID-83BE173E-F73D-46A8-8267-A1055E486FE3"><title>Making specific handles from generic handles</title> <p>There
+are two types of generic handle, one for threads and one for processes, both
+of which are created using the default constructor of the appropriate handle.</p> <codeblock id="GUID-F42A0EEB-3142-527A-9BD4-724B9969CF5D" xml:space="preserve">RThread  thisThread;  // Generic handle meaning "the current thread"
+RProcess thisProcess; // Generic handle meaning "the current process"
+</codeblock> <p>An important fact about generic handles is that they make
+no claim on the object that they refer to, so you don't need to call <codeph>Close()</codeph> when
+you get rid of them. This is not true of specific handles, which always add
+a reference to the object that they refer to, preventing that object being
+fully destroyed until all specific handles have been closed.</p> <p>Use Duplicate()
+to make a specific handle from a generic handle; for example:</p> <codeblock id="GUID-D5588FB1-8ACE-526F-A8D7-6E2C5C089823" xml:space="preserve">RThread thisThread;                        // generic handle
+TInt err=thisThread.Duplicate(thisThread);    // a specific handle
+...
+thisThread.Close();                        // don't forget.
+</codeblock> </section>
+<section id="GUID-83C281F6-1C91-4F1A-9C69-3C5BF3843DE5"><title>Promoting a thread-relative handle to a process-wide handle</title> <p>The
+second parameter passed to <codeph>Duplicate()</codeph> specifies whether
+the resulting handle is specific to the calling thread, or is valid for all
+threads in the same process.</p> <p><codeph>Duplicate()</codeph> offers a
+way of making a handle, which is specific to a thread, known to all the threads
+in a process.</p> <p>This does not work for all handles but <codeph>RLibrary</codeph> is
+an example of one where it can make sense to promote an <codeph>RLibrary</codeph> thread-relative
+handle to a process-relative handle because this ensures that the library
+will not be automatically unloaded when the original thread terminates. For
+example:</p> <codeblock id="GUID-E02BE012-EE3F-53A0-A3E0-7B57E03B9D28" xml:space="preserve">...
+_LIT(KMyLib,"MYLIB");
+...
+RLibrary threadLibrary;
+err=threadLibrary.Load(KMyLib);        // Load up a DLL, this gives
+                                       // a thread-specific handle.
+RLibrary aDup=threadLibrary;           // Copies handle without
+                                       // doing Open().
+err=threadLibrary.Duplicate(RThread());// Overwrite the original.
+if (err==KErrNone)
+    {
+       aDup.Close();                      // Close the original.
+    }
+...
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4B391F0-058F-5B51-8D28-6A7B5C4A1BB9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A4B391F0-058F-5B51-8D28-6A7B5C4A1BB9"><title>v5.1-v6.1 legacy Unicode resource format</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes the resource file format introduced with the first Unicode version of Symbian OS, v5.1. This was based on the resource-file format used from the initial version of Symbian platform. The format uses no compression at all. </p> <p>Resource files in this format are generated by the resource compiler from v5.1 up to, but not including, Symbian OS v7.0. </p> <table id="GUID-C389837C-9CFD-5197-9C47-1F8C679190DF"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Number of bytes</b> </p> </entry> <entry><p> <b>Description</b> </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores the file-position of the start of the resource index (see the last row of this table for a description of the resource index). </p> </entry> </row> <row><entry><p>2</p> </entry> <entry><p>This two-byte integer (in little-endian byte order) stores 1 + the size of the resource index in bytes. The addition of 1 was to distinguish this resource file format from an older, now obsolete, resource-file format. </p> </entry> </row> <row><entry><p>[any] </p> </entry> <entry><p>This contains the data for all the resources stored in order, one after another with no byte-padding between them. The binary data of each resource is laid out exactly as specified in the resource definition, with the exception that extra padding bytes (arbitrarily 0xab) are inserted in front of any Unicode text-string that would otherwise not be aligned on a two-byte boundary relative to the start of that resource’s data. </p> </entry> </row> <row><entry><p>(number_of_resources+1)*2 </p> </entry> <entry><p>This is the resource index which is a series of two-byte integers (in little-endian byte order), one for each resource in the resource file, each storing the file-position of that resource’s data (see row immediately above). </p> <p>This is followed by a two-byte integer (in little-endian byte order), which is the file-position one byte past the end of the last resource’s data. This is so that working out the length of a resource’s data is trivially done by subtracting the file-position stored in that resource’s index-entry from the file-position in the next index-entry. </p> <p>This last entry in the resource index, which stores the file-position one byte past the end of the last resource’s data, can also be thought of as storing the file-position of the start of the resource index. This means that resource files in this format have the same two-byte integer at the very start and at the very end of the file. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634" xml:lang="en"><title>How
+to Use Positioning Module Information</title><shortdesc>This document describes how a client application uses the API to
+get information about the available Positioning Modules. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>This section describes how a client application
+gets Positioning Module information using the Location Acquisition API and
+how this information can be used in a request for location information. </p> </section>
+<section><title>Required background</title> <p><xref href="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita">Positioning
+Modules</xref> describes module concepts. </p> </section>
+<section><title>How to get information about all Positioning Modules</title> <p>Client
+applications use the <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita"><apiname>RPositionServer</apiname></xref> class to get information
+about the Positioning Modules available to the Location Server. Applications
+may want this information in order to choose a particular Positioning Module
+to use for location information requests. </p> <p>The following code is a
+simple example of how a client application can get Positioning Module information.
+The client specifies use of assisted GPS and accuracy better than 10 metres. </p> <codeblock id="GUID-CEB67C2F-3FE7-5622-BDD1-253264A5467B" xml:space="preserve">#include &lt;lbs.h&gt;
+#include &lt;LbsErrors.h&gt;
+
+RPositionServer server;
+
+TUint numModules;
+TPositionModuleId modId;
+TPositionModuleInfo modInfo;
+TPositionModuleStatus modStatus;
+
+TBool foundModule = EFalse;
+
+
+// 1. Create a session with the Location Server
+User::LeaveIfError(server.Connect());
+CleanupClosePushL(server);
+
+// 2. Get the number of modules installed
+User::LeaveIfError(server.GetNumModules(numModules));
+
+// 3. Iterate over the modules to get information about each module
+// 4. Get the availability of a module
+// 5. Get information about the module technology, quality etc.
+
+for (TUint I=0 ; I &lt; numModules ; I++)
+ {
+ User::LeaveIfError(server.GetModuleInfoByIndex(I, modInfo));
+        
+ /* Check module technology type and availability 
+    In this example - does the module support assisted capability
+    and is the module available? */
+ 
+ if ( modInfo.IsAvailable() &amp;&amp; (modInfo.TechnologyType() == ETechnologyAssisted) )
+  {
+
+  /* Check module capabilities
+        In this example does the module supply speed information? */
+
+  TCapabilities caps = modInfo.Capabilities();
+  if (caps &amp; ECapabilitySpeed) 
+   { 
+   // Check module position quality
+   TPositionQuality quality;
+   modInfo.GetPositionQuality(quality);
+                                    
+   // In this example, check for horizontal accuracy better than 10 metres
+   if ( !quality.HorizontalAccuracy().IsNaN() &amp;&amp; quality.HorizontalAccuracy() &lt; 10 )
+    {
+    // This module has all the required characteristics!
+    modId = modInfo.ModuleId();
+    foundModule = ETrue;
+    break; // stop searching
+    }
+   }    
+  }
+ }
+
+if (foundModule)
+ {
+ // Can use the module to get location information
+ ...
+ }
+else 
+ {
+    // No module meets these requirements. Look for another?
+    ...
+ }
+
+// 6. Close the server session
+CleanupStack::PopAndDestroy(&amp;server);
+
+</codeblock> <p>The following sections describe the steps to get Positioning
+Module information: </p> <p><b>1. Create a session with the Location Server </b> </p> <p>A client application
+creates a session with the Location Server from which Positioning Module information
+is obtained. Note that if a server session has been created already (for example
+to get location information) then the application must use it. If the application
+attempts to open a second session with the server a panic will occur. </p> <p><b>2. Get the number of Positioning Modules installed </b> </p> <p>The number
+of installed Positioning Modules is known to the Location Server and is available
+to client applications by calling <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-75239E9F-6062-3EA2-8830-D0E4D5BE0E64"><apiname>RPositionServer::GetNumModules()</apiname></xref>. </p> <p><b>3. Iterate over the Positioning Modules to get information about each
+one </b> </p> <p>Once a client application knows the number of Positioning
+Modules, it can easily iterate over them to get information for each one by
+calling <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-C5ED1EFB-FABC-30C4-8AD9-02344E52D8AF"><apiname>RPositionServer::GetModuleInfoByIndex()</apiname></xref>. </p> <p><b>4. Get the availability of a Positioning Module </b> </p> <p> <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-1020CC8C-30B6-355B-8AB0-99E23DEE74D2"><apiname>TPositionModuleInfo::IsAvailable()</apiname></xref> returns
+the availability of a Positioning Module. If this method returns <codeph>EFalse</codeph> then
+the Positioning Module cannot be used. It may have been taken offline or there
+may be a device hardware problem. The availability will not change unless
+there is some kind of user intervention, such as bringing the unavailable
+Positioning Module back online in a control panel. </p> <p> <i>Note</i>  </p> <p>A
+Positioning Module also has a status that can change over time. Module status
+provides more detailed information about a Positioning Module's state than
+a simple availability flag. Module status information is held in a <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita"><apiname>TPositionModuleStatus</apiname></xref> object.
+A Positioning Module's status at a point in time is discovered by calling <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-676FAC1B-1989-3D3C-84A5-DF82B874D7A3"><apiname>RPositionServer::GetModuleStatus()</apiname></xref>. </p> <p><b>5. Get information about the Positioning Module technology, capabilities
+and position quality </b> </p> <p> <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-A806BBFD-007C-372A-95F5-A53FCE1BA07F"><apiname>TPositionModuleInfo::TechnologyType()</apiname></xref> returns
+information about the type of technology used by the Positioning Module. </p> <p> <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-1C4AAC64-DAD0-39D7-BD39-3DEE548CEA84"><apiname>TPositionModuleInfo::Capabilities()</apiname></xref> returns
+a Positioning Module's capabilities as a bit mask. </p> <p> <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-AE23F158-982D-388E-B188-D86E9951856E"><apiname>TPositionModuleInfo::GetPositionQuality()</apiname></xref> returns
+a <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita"><apiname>TPositionQuality</apiname></xref> object that describes the quality of
+position that the Positioning Module can provide. </p> <p><b>6. Close the server session </b> </p> <p>If the server session is not
+needed for any further processing then the application must close it. </p> </section>
+<section><title>How to get information about a specific Positioning      
+    Module</title> <p>A client application calls <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-068D63E2-BCA1-3575-B3A2-F87C80CEB61C"><apiname>RPositionServer::GetModuleById()</apiname></xref> to
+get information about a Positioning Module when its ID is known. </p> <codeblock id="GUID-F7A4BA9A-A02D-5439-95EF-237DBBCC2C0F" xml:space="preserve">
+TPositionModuleInfo modInfo;
+
+// modId is known to the client application
+User::LeaveIfError(server.GetModuleInfoById(modId, modInfo));
+...
+</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita"><linktext>How to Get
+Location Information</linktext></link>
+<link href="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita"><linktext>How to Get
+Module Status Changes</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4C26317-9F76-587E-A4B6-D94892ACF11B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A4C26317-9F76-587E-A4B6-D94892ACF11B" xml:lang="en"><title>Secure Software Install SIS Tools Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the tasks that can be performed usig Secure Software Install SIS Tools.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4D8326E-E72F-443D-9CA5-7835D6AE171F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A4D8326E-E72F-443D-9CA5-7835D6AE171F" xml:lang="en"><title>Setting
+toolbar properties</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section>  <p>Use the following methods and flags to set toolbar properties:</p> 
+ <ul>
+<li>           <p>Vertical orientation: use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknToolbar.html#95874e42b6ee5bfe31af0dddbc3a86ec" format="application/java-archive"><codeph>CAknToolbar::SetOrientation()</codeph></xref> with the values <codeph>EAknOrientationVertical</codeph> or <codeph>EAknOrientationHorizontal</codeph> in <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/avkon_8hrh.html#4b729387cba7879c1c51f2be8f4a6ff7" format="application/java-archive">TAknOrientation</xref> (floating
+toolbar).</p>         </li>
+<li>           <p>Semi-transparent outlook: use the <codeph>KAknToolbarTransparent</codeph> flag.</p> 
+       </li>
+<li>           <p>Flexible positioning: use the <codeph>KAknToolbarFlexiblePosition</codeph> flag
+(floating toolbar).</p>         </li>
+<li><p>To set the focus on the middle item by default, use the flag <codeph>KAknToolbarMiddleItemFocused</codeph> (floating
+toolbar).</p></li>
+<li><p>To set the toolbar always focusing, use the flag <codeph>KAknToolbarAlwaysFocusing</codeph> (floating
+toolbar). </p></li>
+<li><p>To set the focus on the last used item by default, use the flag <codeph>KAknToolbarLastUsedItemFocused</codeph> flag
+(floating toolbar). </p></li>
+<li><p>To set the toolbar to use no softkeys but still have the focus, use
+the flag <codeph>KAknToolbarWithoutCba</codeph> (floating toolbar). </p></li>
+<li><p>Small toolbar: use the flag <codeph>KAknToolbarSmall</codeph> flag
+(floating toolbar). </p></li>
+<li><p>Fixed toolbar: use the flag <codeph>KAknToolbarFixed</codeph>.</p></li>
+<li><p>Toolbar with no skin background: use the flag <codeph>KAknToolbarNoBackground</codeph>.</p></li>
+</ul><p>Below is an example of a fixed toolbar with three buttons.
+One of the fixed toolbar buttons is a toolbar extension with three buttons.</p><codeblock xml:space="preserve">RESOURCE AVKON_TOOLBAR r_myapp_fixed_toolbar 
+    { 
+    flags = KAknToolbarFixed; 
+    items = 
+        { 
+        TBAR_CTRL 
+            { 
+            type = EAknCtToolbarExtension; 
+            id = ECmdExtExample; 
+
+            control = AVKON_TOOLBAR_EXTENSION 
+                { 
+                items = 
+                    { 
+                    TBAR_CTRL 
+                        { 
+                        type = EAknCtButton; 
+                        id = ECmdExtExample1; 
+                        control = AVKON_BUTTON 
+                            { 
+                            flags = 0; 
+                            states = 
+                                { 
+                                AVKON_BUTTON_STATE 
+                                    { 
+                                    txt = STRING_r_myapp_ext_example1_text; 
+                                    helptxt = STRING_r_myapp_ext_example1_help; 
+                                    } 
+                                }; 
+                            }; 
+                        }, 
+                    TBAR_CTRL 
+                        { 
+                        type = EAknCtButton; 
+                        id = ECmdExtExample2; 
+                        control = AVKON_BUTTON 
+                            { 
+                            flags = 0; 
+                            states = 
+                                { 
+                                AVKON_BUTTON_STATE 
+                                    { 
+                                    txt = STRING_r_myapp_ext_example2_text; 
+                                    helptxt = STRING_r_myapp_ext_example2_help; 
+                                    } 
+                                }; 
+                            }; 
+                        }, 
+                    TBAR_CTRL 
+                        { 
+                        type = EAknCtButton; 
+                        id = ECmdExtExample3; 
+                        control = AVKON_BUTTON 
+                            { 
+                            flags = 0; 
+                            states = 
+                                { 
+                                AVKON_BUTTON_STATE 
+                                    { 
+                                    txt = STRING_r_myapp_ext_example3_text; 
+                                    helptxt = STRING_r_myapp_ext_example3_help; 
+                                    } 
+                                }; 
+                            }; 
+                        } 
+                    }; 
+                }; 
+            }, 
+        TBAR_CTRL 
+            { 
+            type = EAknCtButton; 
+            id = ECmdExample1; 
+            control = AVKON_BUTTON 
+                { 
+                flags = 0; 
+                states = 
+                    { 
+                    AVKON_BUTTON_STATE 
+                        { 
+                        txt = STRING_r_myapp_example1_text; 
+                        helptxt = STRING_r_myapp_example1_help; 
+                        }  
+                    }; 
+                }; 
+            }, 
+        TBAR_CTRL 
+            { 
+            type = EAknCtButton; 
+            id = ECmdExample2; 
+            control = AVKON_BUTTON 
+                { 
+                flags = 0; 
+                states = 
+                    { 
+                    AVKON_BUTTON_STATE 
+                        { 
+                        txt = STRING_r_myapp_example2_text; 
+                        helptxt = STRING_r_myapp_example2_help; 
+                        }  
+                    }; 
+                }; 
+            } 
+        }; 
+    } 
+</codeblock><p>Example of a floating toolbar without CBA buttons: </p><codeblock xml:space="preserve">RESOURCE AVKON_TOOLBAR r_myapp_floating_toolbar 
+    { 
+    flags = KAknToolbarWithoutCba; 
+    items = 
+        { 
+        TBAR_CTRL 
+            { 
+            type = EAknCtButton; 
+            id = ECmdExample3; 
+            // A button with two states ("on" and "off") 
+            control = AVKON_BUTTON 
+                { 
+                flags = 0; 
+                states = 
+                    { 
+                    AVKON_BUTTON_STATE 
+                        { 
+                        txt = STRING_r_myapp_example3_off_text; 
+                        helptxt = STRING_r_myapp_example3_off_help; 
+                        }, 
+                    AVKON_BUTTON_STATE 
+                        { 
+                        flags = KAknButtonStateHasLatchedFrame; 
+                        txt = STRING_r_myapp_example3_on_text; 
+                        helptxt = STRING_r_myapp_example3_on_help; 
+                        }  
+                    }; 
+                }; 
+            }, 
+        TBAR_CTRL 
+            { 
+            type = EAknCtButton; 
+            id = ECmdExample4; 
+            control = AVKON_BUTTON 
+                { 
+                flags = 0; 
+                states = 
+                    { 
+                    AVKON_BUTTON_STATE 
+                        { 
+                        txt = STRING_r_myapp_example4_text; 
+                        helptxt = STRING_r_myapp_example4_help; 
+                        } 
+                    }; 
+                }; 
+            }, 
+        TBAR_CTRL 
+            { 
+            type = EAknCtButton; 
+            id = ECmdExample5; 
+            control = AVKON_BUTTON 
+                { 
+                flags = 0; 
+                states = 
+                    { 
+                    AVKON_BUTTON_STATE 
+                        { 
+                        txt = STRING_r_myapp_example5_text; 
+                        helptxt = STRING_r_myapp_example5_help; 
+                        } 
+                    }; 
+                }; 
+            } 
+        }; 
+    } 
+</codeblock>     </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4ECB450-02DA-5E85-91AC-4C8BDE0B9B58.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A4ECB450-02DA-5E85-91AC-4C8BDE0B9B58"><title>Writing, Reading and Seeking from a Shared Memory</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the <xref href="GUID-4BABB86A-966A-3535-BD35-568338359825.dita"><apiname>write()</apiname></xref> function to write to shared memory </p> <p>Use the <xref href="GUID-99F32AF6-7248-37B7-901A-76FA23DBCD8A.dita"><apiname>read()</apiname></xref> function to read data from shared memory. </p> <p>Use the <xref href="GUID-84F93A85-9DD3-3D5A-98A7-769E6EDA77D1.dita"><apiname>lseek()</apiname></xref> function to set the file offset associated with a shared memory file descriptor </p> <p>Example: </p> <codeblock id="GUID-60F8E5BB-57F5-5520-A061-43D71436543D" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;sys/mman.h&gt;
+#include &lt;fcntl.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;errno.h&gt;
+int main(void)
+    {
+    int fd; //File descriptor
+    int ret = 0;
+    if((fd = shm_open("page", O_RDWR|O_CREAT, 0666)) &lt; 0)
+        {
+        printf("Shared memory creation failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Shared memory creation was successful\n");
+        }
+    if((ret = write(fd, "symbian", 7)) &lt; 0)
+        {
+        printf("Writing into shared memory failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Writing into shared memory was successful\n");
+        }
+    if((ret = lseek(fd, -6, SEEK_END)) &lt; 0)
+        {
+        printf("Seeking from end failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("lseek was successful\n");
+        }
+    char buf[7];
+    if((ret = read(fd, (void*)buf, 6)) &lt; 0)
+        {
+        printf("Reading from shared memory failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Reading from shared memory was successful\n");
+        printf("Buffer read = %s\n", buf);
+        }
+    close(fd);//closing the file descriptor
+    if((ret = shm_unlink("page")) &lt; 0) 
+        {
+        printf("Shared memory unlinking failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Shared memory unlinking was successful\n");
+        }
+    return ret;
+    }</codeblock> </conbody><related-links><link href="GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita"><linktext>Librt Overview</linktext> </link> <link href="GUID-BE70DCBF-366A-5054-B0F1-7FCEF45FC735.dita"><linktext>Creating and Unlinking a File
+                Descriptor from a Shared Memory</linktext> </link> <link href="GUID-8F6D6934-8FF0-5045-8AB1-74384BE792EA.dita"><linktext>Retrieving Information about a
+                Shared Memory Object</linktext> </link> <link href="GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita"><linktext>Clocks and Timers Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-A4F3738C-CBFD-4151-9132-26FE05966715" xml:lang="en"><title>CBA buttons</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<fig id="GUID-CBFDE06F-86CA-4ADA-AB5B-CE9E46DEC576"><title>Application with Options and Exit softkeys, portrait and landscape
+views</title><image href="GUID-5F9E2762-855A-4DE6-A11B-A5F0D51E19D9_d0e53650_href.png"></image></fig>
+<p>The Symbian platform uses Control Button Area (CBA) resources to set
+the options in the control pane above the softkeys. CBA resources map the
+text that appears above the softkeys in the control pane with commands that
+are collected by the event loop of the application framework and delivered
+to your application for <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref>.</p>
+<p>When a mobile device user selects an <parmname>Options</parmname> softkey,
+the application framework displays the <parmname>Options</parmname> menu based
+upon the definitions in the <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">menu
+bars</xref> resources.</p>
+<p>Depending upon the requirements of your application, you can either:</p>
+<ul>
+<li><p><xref href="GUID-A3AF142B-F9DF-43FD-9D3F-788A74D0C575.dita">use
+precompiled CBA button options contained in <parmname>avkon.hrh</parmname></xref></p>
+</li>
+<li><p><xref href="GUID-5B26AB8E-E20A-4C15-B4F8-812ED9A4A96C.dita">create
+your own buttons</xref></p></li>
+</ul>
+<p>CBA buttons are constructed using the Buttons API.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e314506_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e162764_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C"><title>Processing Window-Group Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following examples demonstrate how to get window-group related event types, which are global within the window group and include: key events, modifier changed events, window focus lost and gained events and user defined events. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <section><title>Key events</title> <p>To detect if a key event has occurred, use the <codeph>EEventKey</codeph>, <codeph>EEventKeyUp</codeph> or <codeph>EEventKeyDown</codeph> event types. </p> <p>You can get key event information by calling the <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent::Key()</apiname></xref> function. </p> <codeblock id="GUID-0FBDBD4E-29B6-5379-AD25-C6729BEC7FF2" xml:space="preserve">    // Key events - get the key code
+    case EEventKey:
+    case EEventKeyUp:
+    case EEventKeyDown:
+    {
+    // Get the key event
+    TKeyEvent&amp; keyEvent=*iWsEvent.Key();
+
+    // Get the key code: values are defined in TKeyEvent
+    TUint code = keyEvent.iCode;
+    break;
+    }
+</codeblock> </section> <section><title>Modifier changed events</title> <p>To detect if a key modifier (the state of SHIFT, CTRL, etc. keys) changed event has occurred, use the <codeph>EEventModifiersChanged</codeph> event type. </p> <p>You can get key event information by calling the <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent::ModifiersChanged()</apiname></xref> function. </p> <codeblock id="GUID-70671D31-2EFE-5D8F-ADD4-C8F8591EE967" xml:space="preserve">    // A key modifier (e.g. SHIFT) changed
+    case EEventModifiersChanged:
+    {
+    // Get the state of the modifier keys
+    TKeyEvent&amp; keyEvent=*iWsEvent.ModifiersChanged();
+
+    // Get the key modifiers: values are defined in TEventModifier
+    TUint modifiers = keyEvent.iModifiers;
+    break;
+    }</codeblock> <p>This event type is not reported unless explicitly requested by a window. Use <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>RWindowTreeNode::EnableModifierChangedEvents()</apiname></xref> to request this event type. </p> </section> <section><title>Window focus lost and gained events</title> <p>To detect if the window focus has been lost or gained, use the <codeph>EEventFocusLost</codeph> and <codeph>EEventFocusGained</codeph> event types. </p> <p>You can get the handle to the window group whose focus has changed by calling <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent::Handle()</apiname></xref>. </p> <codeblock id="GUID-E4E6CE7E-D73C-58D6-8387-9912E1830EA5" xml:space="preserve">    // Window focus lost and gained events
+    case EEventFocusLost:
+    case EEventFocusGained:
+    {
+    // Get handle (typically a pointer) to the window group whose focus has changed
+    TUint handle = iWsEvent.Handle();
+    break;
+    }</codeblock> </section> <section><title>User-defined event received from another window</title> <p>To detect if user-defined events have been received from another window, use <codeph>EEventUser</codeph>. </p> <p>You can get information about the event by calling <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent::EventData()</apiname></xref>. </p> <codeblock id="GUID-7059133B-1A1A-5EB1-9978-2FEEE9BB61B0" xml:space="preserve">
+    // User-defined event received from another window
+    case EEventUser:
+    { 
+    // Get a pointer to the event data
+    TAny* data = iWsEvent.EventData();
+    }</codeblock> </section> </conbody><related-links><link href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita"><linktext>Window Server Client-Side Events
+                Overview</linktext> </link> <link href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita"><linktext>Processing Window Events</linktext> </link> <link href="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita"><linktext>Processing System Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4" xml:lang="en"><title>Graphics
+Quick Start</title><shortdesc>The Graphics package provides Symbian devices with a means of visual
+communication. It is responsible for providing a system-wide interface with
+the physical display(s) and handles input events from physical input devices
+such as keypads and touch screens. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>There are two variants of the graphics architecture in Symbian^3. These
+are referred to as <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> (sometimes
+also called the New Graphics Architecture or NGA) and the <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay
+variant</xref> (sometimes called the non-NGA variant). The Graphics guide
+documentation covers both variants. When the documentation applies to only
+one variant, it is clearly stated at the top of the page. </p>
+
+
+
+<section id="GUID-7CED3F9D-72CC-4C2B-896A-68860CA9703E"><title>System Model</title> <p>The
+following diagram shows the Graphics package within the Symbian^3 System Model.
+The System Model is a high-level overview of the Symbian architecture. The
+components are grouped to show their relationships to each other. Within the
+Graphics package, components are grouped into collections, which are shown
+as white boxes in the diagram. The Graphics documentation is organized according
+to the System Model structure. </p><p>Although the System Model provides a
+useful way of grouping the large number of components that make up the Graphics
+package, it does not completely reflect the architectural relationships between
+the components. </p> <fig id="GUID-73E547BA-5AC2-5B10-8422-3B8BA28E2D40">
+<title>              The Graphics package in the Symbian Foundation System
+Model            </title>
+<image href="GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e162018_href.png" placement="inline"/>
+</fig> <p>This documentation
+only covers collections and components that are relevant to application developers. </p> </section>
+<section id="GUID-7164B04D-C0C6-47DA-9D70-E0924D68C462"><title>Technologies</title> <ul>
+<li id="GUID-BCA14E5B-B637-5A43-8A1E-4A945507CF35"><p>For information on the
+two architectures, see <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">The
+ScreenPlay Architecture</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">The
+Non-ScreenPlay Architecture</xref>. </p> </li>
+
+<li id="GUID-28824D17-7E98-57CD-B618-AFA2109E95D8"><p>The graphics architecture
+enables device creators to take advantage of graphics processing hardware
+when it is available, and to use software implementations when it is not.
+For more information, see <xref href="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita">Graphics
+Hardware Acceleration</xref>. </p> </li>
+<li id="GUID-BEB89CAC-B735-5D45-925F-1C35C15A4B36"><p>Symbian provides support
+for a number of APIs defined and administered by the Khronos group. These
+enable the authoring and playback of dynamic media on a wide variety of platforms
+and devices. For more information, see <xref href="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita">Khronos
+API Support </xref>. </p> </li>
+<li id="GUID-27F78BF4-FA0E-5A3D-B64B-A1596E212724"><p>Application developers
+use the Window Server client-side library to control windows and respond to
+key and pointer events in their applications. For more information, see <xref href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita">Window Server Client-Side
+Library</xref>. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-47851718-8DCA-57F5-8520-7044048A5852.dita"><linktext>Graphics
+Example Code</linktext></link>
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+                Guide</linktext></link>
+<link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics
+Concepts</linktext></link>
+
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A51FE292-3E9D-52FE-B751-246C64F30BBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A51FE292-3E9D-52FE-B751-246C64F30BBC" xml:lang="en"><title>Concepts</title><shortdesc>This section contains the conceptual information for NifMan. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A52E8853-9A8A-5B66-A2B0-F943B32AA5C6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A52E8853-9A8A-5B66-A2B0-F943B32AA5C6" xml:lang="en"><title>Reference Counting Objects</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A5693758-495B-598E-A514-24C48D459BB6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A5693758-495B-598E-A514-24C48D459BB6"><title>Drawing Arcs and Ellipses</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate how to draw ellipses and arcs. The first draws the whole ellipse; the second, one section of the ellipse; and in the third, the other section of the ellipse is drawn (also illustrating construction lines and points). It also shows how to draw two pie slices making an ellipse. </p> <p>The code assumes that the ellipse and arc examples all use a common pre-defined rectangle: </p> <codeblock id="GUID-E2CBAA84-72BA-5E97-97F9-52AEB00C6E5C" xml:space="preserve">...
+TRect ellipseRect=Rect(); // for arcs and ellipse
+ellipseRect.Shrink(10,10); // set size so inside the border rectangle
+...</codeblock> <p>The arc and pie slice examples use two construction points as arguments: </p> <codeblock id="GUID-A701FA54-8AB4-5622-9DCC-4BF6B55C8C8F" xml:space="preserve">...
+TPoint screenCenterPoint=rect.Center(); // the center of the screen
+    
+// set up a pair of construction points for arc and pie slice drawing
+TPoint constructionPoint1(15,15); // outside the construction ellipse
+TPoint constructionPoint2(200,150); // inside the construction ellipse
+...</codeblock> <p>The center point is drawn in the second arc example to clarify arc construction. </p> <section><title>How to draw an ellipse</title> <p>You can use <codeph>DrawEllipse()</codeph> to draw an ellipse. </p> <codeblock id="GUID-076DE9D4-9F7F-56E7-8A13-AA546C8672E2" xml:space="preserve">...
+// draw an ellipse centered in the rectangle
+gc.DrawEllipse(ellipseRect);
+...</codeblock> </section> <section><title>How to draw an arc</title> <p>An arc is drawn as a portion of an ellipse. As well as the ellipse rectangle, the call must specify the two points: the first defines one end of a line from the geometric center of the ellipse; the point of intersection between this line and the ellipse defines the start point of the arc. The second specified point acts in the same way for the end of the arc. </p> <fig id="GUID-ED34ADD7-004F-5BE6-822F-B5592E4F1A9A"><title>
+             Arc construction 
+          </title> <image href="GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e178718_href.png" placement="inline"/></fig> <p>The example code here shows how an arc is drawn in an anti-clockwise direction using <codeph>constructionPoint1</codeph> and <codeph>constructionPoint2</codeph> as the start to the end points. </p> <codeblock id="GUID-956A154F-EE60-5286-97BA-B05ABBA2C949" xml:space="preserve">...
+// draw an arc centered in the rectangle
+gc.DrawArc(ellipseRect,constructionPoint1,constructionPoint2);
+...</codeblock> <p>You can reverse the pair of construction point arguments to draw the other half of the ellipse. The construction points and screen center are also drawn, with dotted construction lines: </p> <codeblock id="GUID-CAB960B4-66DC-5996-9D2E-094B0171BFB5" xml:space="preserve">...
+// draw an arc centered in the rectangle
+// that is the other portion of the ellipse
+ gc.DrawArc(ellipseRect,constructionPoint2,constructionPoint1);
+    
+// draw construction lines and points
+gc.SetPenStyle(CGraphicsContext::EDottedPen);
+gc.MoveTo(constructionPoint1);
+gc.DrawLineTo(screenCenterPoint);
+gc.DrawLineTo(constructionPoint2);
+gc.SetPenSize(penSizeBold);
+gc.Plot(constructionPoint1);
+gc.Plot(constructionPoint2);
+gc.Plot(screenCenterPoint);
+...</codeblock> </section> <section><title>Drawing pie slices</title> <p>The example code here shows how two pie slices are drawn. A pie slice is the area bounded by: </p> <p>an arc as used above </p> <p>the straight line from the start point from the geometric center of the ellipse </p> <p>the straight line from the end point from the geometric center of the ellipse </p> <fig id="GUID-71C67896-8B38-5D1E-B34A-0425CF135915"><title>
+             Pie slice construction 
+          </title> <image href="GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e178759_href.png" placement="inline"/></fig> <p>Solid and patterned brush styles are used to fill the portions of the elliptical disc. </p> <ol id="GUID-8A734874-8E67-5ABF-9C65-308B136D25D4"><li id="GUID-31A563CE-3043-5713-9FBA-A42C6902F544"><p>Use <codeph>SetBrushStyle()</codeph> to set the brush style to solid. </p> </li> <li id="GUID-0F8D5C04-DD38-5B8A-9BAA-B2E9F9C53C1E"><p>Use <codeph>SetBrushColour()</codeph> to set the brush color to black. </p> </li> <li id="GUID-6EDBBFE4-640C-5E40-8AFE-8B0E99F843A3"><p>Use <codeph>DrawPie()</codeph> to draw a pie slice. </p> </li> <li id="GUID-5ADA6FF4-D9B8-5624-AE74-8C58FF06B624"><p>Use <codeph>SetBrushStyle()</codeph> to set the patterned brush style. </p> </li> <li id="GUID-FA09E650-1E1E-5565-8329-41490F77A974"><p>Use <codeph>DrawPie()</codeph> and reverse the pair of construction point arguments so that the two pie slices together form a whole ellipse. </p> </li> </ol> <codeblock id="GUID-79463D92-F260-52BD-BF5B-5917365E9C19" xml:space="preserve">...
+// draw a pie slice centered in the rectangle
+gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+gc.SetBrushColor(black);
+gc.DrawPie(ellipseRect,constructionPoint1,constructionPoint2);
+    
+// draw the other portion of the elliptical disc
+gc.SetBrushStyle(CGraphicsContext::EVerticalHatchBrush);
+gc.DrawPie(ellipseRect,constructionPoint2,constructionPoint1);
+...</codeblock> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A56D550A-BF08-5D9C-A64C-67E8654F449B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A56D550A-BF08-5D9C-A64C-67E8654F449B" xml:lang="en"><title>Creating
+Keys</title><shortdesc>This section explains how to create a key using the keystore. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Before you create a key, you must know which keystore the new
+key must be stored in. See <xref href="GUID-1733B4E1-3264-58DF-957B-F5C0AE1E0644.dita">Retrieving
+Keystores</xref> for more information. </p><p>The following steps explain
+the process of creating a key:</p> </context>
+<steps id="GUID-5947641D-B308-5E35-B6E1-1E9561A8495B">
+<step id="GUID-75536534-0982-54E0-BF52-0BC3DE8A2200"><cmd/>
+<info>Create a file system session using an <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object. </info>
+</step>
+<step id="GUID-7648129E-7206-5C6A-BDDC-F3AA0A930B87"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-6DEAD07A-5AAE-5876-B1EF-3728C8C4EB07"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-EE225F78-78B5-54B8-82A7-CCC8A5DBAF01"><cmd/>
+<info>Create a key using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-F4546E33-BCE9-330A-913A-88A0253EF498"><apiname>CUnifiedKeyStore::CreateKey()</apiname></xref>. </info>
+</step>
+</steps>
+<result><p>A new key is created and stored in the selected keystore. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+set a file system session object, initialise keystore and member functions,
+and create a key. </p> <codeblock id="GUID-6A28C0E5-2708-5875-976B-F319DDC2148F" xml:space="preserve">//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+//Initialise the arguments to be passed into the CreateKey() function
+TKeyUsagePKCS15 usage = EPKCS15UsageSign | EPKCS15UsageSignRecover;
+TUint keysize = 512;
+_LIT(KLabel,”keylabel”);
+CCTKeyInfo::EKeyAlgorithm algorithm = CCTKeyInfo::EDSA;
+TInt accessType = CCTKeyInfo::EExtractable;    
+TTime startDate, endDate;
+startDate.HomeTime(); 
+endDate.HomeTime();
+
+
+// Create a pointer for data returned by CreateKey()
+CCTKeyInfo* keyInfo;
+
+//Create the key
+keyStore-&gt;CreateKey(0, usage, keysize, KLabel, algorithm,
+accessType, startDate, endDate, keyInfo, iStatus);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita"><linktext>Unified Keystore</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683" xml:lang="en"><title>Form
+items</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Empty items (that contain no data) can be hidden in a form's View state.
+However, this is not a requirement; forms can be designed either way, whichever
+is better for the given application.</p>
+<p>Unlike ordinary list items, the form items may have different sizes in
+the layout but only in the Edit state. A long data field may occupy more than
+one line in the Edit state, but in the View state it is truncated to the first
+line.</p>
+<p>The user may be able to add and remove form items. This is done with commands
+in the Options menu.</p>
+<p>Form items always have a label. The label has a text part, or a text and
+a graphical part; however, all items in one form must have the same column
+layout (see <xref href="GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita">List layouts</xref> for
+detailed information about layouts).</p>
+<p>The following item types can be used in a form:</p>
+<ul>
+<li><p>Text field (alphanumeric or numeric content) </p></li>
+<li><p>Pop-up field </p></li>
+<li><p>Slider</p></li>
+</ul>
+<p>Any combination of these types is possible within one form.</p>
+<p>When a form is in the Edit state, the user can move the focus up and down
+like in a list. The highlight in the Edit state is different from the highlight
+in the View state, acting as a visual cue. The cursor blinks in the text field
+that is in focus. There is no need to save each field separately; the user
+can browse and modify the fields in any order and then accept all modifications.
+During the browsing of a form in the Edit state, the keypad functions are
+as follows:</p>
+<table id="GUID-437191CE-D3E0-4CFB-875C-9C308B18F7E9"><title>Default key events
+in editing state of a form</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Key</entry>
+<entry>Action</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Arrow up / down</p></entry>
+<entry><p>Move the focus between form items (when in a text field, move the
+cursor within an item line by line).</p></entry>
+</row>
+<row>
+<entry><p>Arrow left / right</p></entry>
+<entry><ul>
+<li><p>In a pop-up field: change the value without opening the list. </p></li>
+<li><p>In a text field: move the cursor character by character. </p></li>
+<li><p>In a slider: adjust the slider value.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Selection key</p></entry>
+<entry><ul>
+<li><p>In a pop-up field: opens the list. </p></li>
+<li><p>In a text field: opens the context sensitive <b>Options</b> menu or
+no action.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Left softkey (Options)</p></entry>
+<entry><p>Opens the <b>Options</b> menu (in a form without the <b>Options</b> menu,
+the left softkey is <b>Done</b>).</p></entry>
+</row>
+<row>
+<entry><p>Right softkey (Done)</p></entry>
+<entry><p>Accepts the contents and returns to the previous state (in a form
+without the Options menu, the right softkey is Cancel.)</p></entry>
+</row>
+<row>
+<entry><p>Clear</p></entry>
+<entry><ul>
+<li><p>Pop-up: ignored. </p></li>
+<li><p>Text: deletes characters. </p></li>
+<li><p>Slider: ignored.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Edit</p></entry>
+<entry><ul>
+<li><p>Pop-up: ignored. </p></li>
+<li><p>Text: opens the editing menu; selects text. </p></li>
+<li><p>Slider: ignored.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Numeric keypad</p></entry>
+<entry><ul>
+<li><p>Pop-up: ignored. </p></li>
+<li><p>Text: input. </p></li>
+<li><p>Slider: ignored.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Other keys</p></entry>
+<entry><p>The default action of the key.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>The field types are described in the following table:</p>
+<table id="GUID-A22394D3-9C39-4DC2-8A65-255F985F97E9"><title> Form field types</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Field</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Text field</p></entry>
+<entry><p>A text field contains some type of numeric or alphanumeric data.
+It can be edited directly using the usual editing functions when the form
+is in the Edit state. The text field can expand to more than one lines if
+necessary.</p><p>In the View state, a text field looks identical to a corresponding
+list item.</p></entry>
+</row>
+<row>
+<entry><p>Pop-up field</p></entry>
+<entry><p>A pop-up field offers the possibility to choose one value from a
+pre-defined list. In the View state, a pop-up field looks identical to a list
+item; the text is the current value of the field. In the Edit state, it has
+a distinct look that identifies the field as a pop-up list.</p><p>To edit
+an item in the Edit state, the user can press the Selection key, which opens
+a menu list that contains the available values. The highlight is on the current
+value. When the list is open, the softkeys are <b>OK</b> and <b>Cancel</b>,
+as usual with a menu list. Both the softkeys return to the Edit state in the
+form.</p><p>A pop-up field may also allow the user to enter a textual value
+in addition to the pre-defined values. In this case, the last option is named
+for example <b>Other</b>, and selecting it opens a Data query.</p><p>See figure
+below.</p></entry>
+</row>
+<row>
+<entry><p>Slider</p></entry>
+<entry><p>With a slider, the user can adjust a numeric value (although it
+is not necessary to present the actual value to the user as a number). In
+the View state, the item is presented as a textual item. In the Edit state,
+the value of the slider is immediately adjustable using the Arrow left and
+Arrow right keys.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<fig id="GUID-AA0170E3-BBB2-478A-A9A1-24C48BCF917F">
+<title>Pop-up field</title>
+<image href="GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e56297_href.png" scale="40" placement="inline"></image>
+</fig>
+<section><title>Using forms in C++ applications</title><p>The
+API to use for creating forms is the Form
+API. For implementation information, see Using
+the Form API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A578ECBB-28C5-51C6-A040-4AE65AD38C07.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A578ECBB-28C5-51C6-A040-4AE65AD38C07" xml:lang="en"><title>Stream
+Encoding And Stream Decoding</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document gives you more information about the stream encoding and
+stream decoding method. </p>
+<section><title>Purpose</title> <p>This tutorial explains how to encode and
+decode an image by passing pixel data block by block. </p> <p><b>Required
+Background</b> </p> <p>The image is decoded / encoded using <filepath>imageconversion.dll</filepath> and
+currently only JPEG codec is supported for the streaming block method, so <filepath>jpegcodec.dll</filepath> is
+used from the Imaging Plugins component. </p> <p><b>Introduction</b> </p> <p>An image is compressed into an image frame. This
+is decoded / encoded in one go which consumes more memory usage. </p> <p>The
+Symbian <filepath>JPEG</filepath> codec now supports enhanced functionality
+during the encode / decode operation using Stream Encoding and Stream Decoding
+methods. In these methods an image frame which is part of a compressed image
+can be divided into sub blocks and these are encoded / decoded block by block
+of YUV pixel data. </p> <p>For decoder <xref href="GUID-7EC0A873-5ABA-3D11-880B-65466CBAA399.dita"><apiname>MImageConvStreamedDecode</apiname></xref> and <xref href="GUID-D4A1D719-6A38-39E2-9664-789CBABAC92E.dita"><apiname>TImageConvStreamedDecode</apiname></xref> are
+used to adapt the streaming functionality. And for encoder <xref href="GUID-D95B2E2D-CBE9-3838-86F5-EC0FBC03C6A6.dita"><apiname>MImageConvStreamedEncode</apiname></xref> and <xref href="GUID-653CA65B-13B7-3EFE-A25E-3EF8C41AABBB.dita"><apiname>TImageConvStreamedEncode</apiname></xref> are used to adapt the streaming functionality. </p> <p> <b>Note:- </b> Only
+the Symbian JPEG codec supports decoding / encoding of an image using Stream
+Encoding and Stream Decoding methods which consumes less memory usage. No
+other Symbian codecs are modified to provide this support. </p> <p>The Stream
+Encoding And Stream Decoding methods also supports cropping or scaling an
+image in sequence order or random order. </p> <p><b>Setup
+and Configuration Requirements</b> </p> <p>For the encoder / the decoder to
+perform streaming you need to set up the navigation mode by using the streaming
+capabilities. </p> <ul>
+<li id="GUID-1936B31A-8043-5401-9D7F-4F2BCFE26B9A"><p>The
+streaming capabilities for decoding are supported by the <xref href="GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB.dita#GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB/GUID-A5E7656C-6537-5D06-B81B-119614B73DB9">Image Processor Adaptation Plug-in</xref> decoder. For example you can obtain
+the optimum number of blocks through streaming in a single request to get
+maximum performance by using the parameter <codeph>aOptimalBlocksPerRequest</codeph>. </p> </li>
+<li/>
+<li id="GUID-CF5BEF30-BE94-5982-A816-522323FE6C0B"><p>The streaming capabilities
+for encoding are supported by the <xref href="GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB.dita#GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB/GUID-A5E7656C-6537-5D06-B81B-119614B73DB9">Image
+Processor Adaptation Plug-in</xref> encoder. For example you can obtain the
+maximum number of blocks through streaming by using the parameter <codeph>aMaxBlocksPerRequest</codeph>. </p> </li>
+</ul> <p>During the decode operation, the blocks or sub-frames can be navigated
+in the following order : </p> <ul>
+<li id="GUID-CB2510A3-8BF8-5A13-8BB1-9B9820D9B584"><p>The sub-frames or blocks
+can be passed sequentially from top left of the image, left to right and top
+to bottom. </p> </li>
+<li id="GUID-DF38C7D7-DA96-5A42-999B-6A6FC5BB218B"><p>The blocks can be passed
+in random order to access each block. </p> </li>
+</ul> <p>During the encode operation,the blocks or sub-frames can be navigated
+: </p> <ul>
+<li id="GUID-23349B8D-C81D-5550-A49C-A50AE231AB7A"><p>Sequentially from top
+left of the image, left to right and top to bottom. </p> </li>
+<li id="GUID-74F35DB8-90A3-52DA-A207-B3519D25F925"><p>Randomly from top of
+the image to bottom and bottom of the image to top. </p> </li>
+</ul> </section>
+<section><title>Using Stream Encoding And Stream Decoding </title> <p>The
+Following tasks are covered in this tutorial: </p> <ul>
+<li id="GUID-BF113946-4EA4-5076-A88F-DC177873030F"><p><xref href="GUID-A578ECBB-28C5-51C6-A040-4AE65AD38C07.dita#GUID-A578ECBB-28C5-51C6-A040-4AE65AD38C07/GUID-FE6502E4-30C6-5E9F-A3A4-537352065026">How to encode and decode an image by the streaming block method</xref>  </p> </li>
+</ul> <p id="GUID-FE6502E4-30C6-5E9F-A3A4-537352065026"><b>Basic Procedure For Stream
+Encoding And Stream Decoding</b> </p> <p>The high level steps to perform streaming
+block during encode and decode operation are as follows: </p> <ol id="GUID-151BD6BB-9028-5DA0-B616-E93F3C328311">
+<li id="GUID-BFCC59BD-C76A-5AEF-AED7-CAD35E7171C4"><p>To create the encoder
+call <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-1F25CC18-A8E4-3E1D-BA3D-F5F472E20CC0"><apiname>CImageEncoder::FileNewL()</apiname></xref> or <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-51ECB4D3-5A87-35E7-82EB-DF2BAEAB2CAC"><apiname>CImageEncoder::DataNewL()</apiname></xref> and
+to create the decoder call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> or <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref>. </p> </li>
+<li id="GUID-7D610B86-BF34-5772-B901-3582CD7A600D"><p>For the encoder streaming,
+requests a streaming interface through <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-452047D4-E3A8-3200-9F10-697FF5200BB3"><apiname>CImageEncoder::BlockStreamerL()</apiname></xref> and
+for the decoder streaming, request an interface through <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-14A53DAA-DFCE-347F-AFC5-4C0F9FE3081F"><apiname>CImageDecoder::BlockStreamerL()</apiname></xref>. </p> <p>After
+requesting the streaming interface, if the streaming extension is supported
+then a T class pointer is returned which gives access to the JPEG codec extension. <xref href="GUID-D4A1D719-6A38-39E2-9664-789CBABAC92E.dita"><apiname>TImageConvStreamedDecode</apiname></xref> gives
+the extension functionality for stream decoding and <xref href="GUID-653CA65B-13B7-3EFE-A25E-3EF8C41AABBB.dita"><apiname>TImageConvStreamedEncode</apiname></xref> gives
+the extension functionality for stream encoding. </p> </li>
+<li id="GUID-1517FF6C-4F5E-55FD-A71F-18A200616BB5"><p>To
+set the navigation mode for the encode streaming call the Image Processor
+Adaptation Plug-in encoder navigator and for the decode streaming call the
+Image Processor Adaptation Plug-in decoder navigator. </p> <p>For
+decode streaming, the navigation possibilities are : </p> <ul>
+<li id="GUID-910F6950-4355-5989-BA29-1319EEFF26B0"><p>The blocks are returned
+from first to last. </p> </li>
+<li id="GUID-B5E34D8E-8DBD-5D63-AF5A-4D88E57BA6F2"><p>The blocks are returned
+from last to first. </p> </li>
+<li id="GUID-421A8EA9-FE99-59AB-BED7-4051DD798120"><p>The blocks are returned
+randomly e.g. 18, 5, 20. </p> </li>
+<li id="GUID-C1AD41C6-FD4D-5602-875F-A14F4778866F"><p>The blocks are returned
+in a random order but moving only from first to last e.g. 1, 5, 18. </p> </li>
+<li id="GUID-B0D25618-B77B-5F63-AF7D-8DC0B39277AC"><p>The blocks are returned
+in a random order but moving only from last to first e.g. 18, 5, 1. </p> </li>
+</ul> <p>The navigation are shown below: </p> <codeblock id="GUID-88CF01B6-2F4B-57C9-A30D-4651DB32496E" xml:space="preserve">
+
+enum TNavigation
+        {
+    
+        ENavigationSequentialForward = 0x01, // Sequential order from first to last
+  ENavigationSequentialBackwards = 0x10, // Sequential order from last to first
+  ENavigationRandom = 0x08, // random order
+        ENavigationRandomForward     = 0x02, // random order frist to last
+        ENavigationRandomBackwards   = 0x04, // random order last to first
+        
+        }
+
+</codeblock> <p>For encode streaming, the navigation possibilities are: </p> <ul>
+<li id="GUID-EC70F523-E8BE-5FC9-8B52-7550685FB77A"><p>The blocks are returned
+from first to last. </p> </li>
+<li id="GUID-7076D2D9-C438-5A56-9220-98C26D0D5D5C"><p>The blocks are returned
+in a random order but moving only from first to last e.g. 1, 5, 18. </p> </li>
+<li id="GUID-6E1049DC-165F-5B49-A2A9-7C0879E9F6AB"><p>The blocks are returned
+in a random order but moving only from last to first e.g. 1, 5, 18. </p> </li>
+</ul> <codeblock id="GUID-68FCCD3B-0616-584C-AB88-84F4F68732B2" xml:space="preserve">
+
+enum TNavigation
+        {
+    
+        ENavigationSequentialForward = 0x01, // sequential order from first to last        
+        ENavigationRandomForward     = 0x02, // random order from first to last    
+        EnavigationRandomBackwards   = 0x04, // random order from last to first     
+        
+  };
+
+</codeblock> </li>
+<li id="GUID-731867F0-3873-51BD-8CB6-6E549B1802F4"><p>To initialize the stream
+decoder use <xref href="GUID-D4A1D719-6A38-39E2-9664-789CBABAC92E.dita#GUID-D4A1D719-6A38-39E2-9664-789CBABAC92E/GUID-3DDDDAB5-DDF7-3904-BA67-B66FBBD19DCF"><apiname>TImageConvStreamedDecode::InitFrameL()</apiname></xref> and
+use its parameter. </p> </li>
+<li id="GUID-E3231926-0292-5A3D-88C5-47E798818294"><p>To initialize the encode
+streaming use <xref href="GUID-653CA65B-13B7-3EFE-A25E-3EF8C41AABBB.dita#GUID-653CA65B-13B7-3EFE-A25E-3EF8C41AABBB/GUID-C98EF919-247F-37EE-A10A-091441C940B9"><apiname>TImageConvStreamedEncode::InitFrameL()</apiname></xref> and
+use its parameter. </p> </li>
+<li id="GUID-91DAA7B8-9437-5F8C-9628-CA562080A923"><p>During decode function,
+the memory for storing <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref> must be large enough
+to contain the decoded frame. To obtain the buffer size for a particular decode
+function call <xref href="GUID-D4A1D719-6A38-39E2-9664-789CBABAC92E.dita#GUID-D4A1D719-6A38-39E2-9664-789CBABAC92E/GUID-8DF0A327-AD84-3E66-939C-042BC266A8A5"><apiname>TImageConvStreamedDecode::GetBufferSize()</apiname></xref>. </p> <p>The <codeph>GetBufferSize()</codeph> function
+returns: </p> <ul>
+<li id="GUID-9A3EA468-28C5-592B-AAE6-FEA02E2B37A4"><p>The required size to
+store the image when using the Imaging plugins format code. </p> </li>
+<li id="GUID-91AC139C-7E44-50FC-8AEB-7BA7ADCF4AAD"><p>The size in pixels of
+the block from the stream are returned by calling <codeph> aBlockSizeInPixels</codeph>,
+when <codeph>aNumBlocks</codeph> of minimum block size are requested. </p> </li>
+</ul> </li>
+<li id="GUID-BE2118E1-0E23-5309-B4E1-7490BC228B2D"><p>To store the image data
+in any format or layout which is described by a format code UID, create an
+empty image frame using <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita"><apiname>CImageFrame</apiname></xref>. </p> </li>
+<li id="GUID-9B0A1F73-D1FA-543F-AA9A-96FFA8CE0225"><p>To set the image frame
+size in pixels call <xref href="GUID-54159F7E-C9A9-3FB5-806D-751DAF213290.dita#GUID-54159F7E-C9A9-3FB5-806D-751DAF213290/GUID-BC2B18A5-0C3C-388B-A613-80D623F26F08"><apiname>CImageFrame::SetFrameSizeInPixels()</apiname></xref>.
+The parameter <codeph>aFrameSize</codeph> is used to returned <codeph>aBlockSizeInPixels</codeph> from <codeph>GetBufferSize</codeph>. </p> </li>
+<li id="GUID-9F9887F0-D93F-54C7-8476-D2AC6413F4BE"><p>In decode streaming,
+in order to start asynchronous call to return blocks use <xref href="GUID-7EC0A873-5ABA-3D11-880B-65466CBAA399.dita#GUID-7EC0A873-5ABA-3D11-880B-65466CBAA399/GUID-92A9FB31-2B0D-305D-A8A2-04B63C2861CB"><apiname>MImageConvStreamedDecode::GetNextBlocks()</apiname></xref>. </p> </li>
+<li id="GUID-54FF23F9-5A7F-55B5-9AE3-599E78F755CB"><p>In encode streaming,
+in order to start asynchronous call to append blocks use <xref href="GUID-D95B2E2D-CBE9-3838-86F5-EC0FBC03C6A6.dita#GUID-D95B2E2D-CBE9-3838-86F5-EC0FBC03C6A6/GUID-F3618D7A-94C4-3259-AFBD-1E83C222765C"><apiname>MImageConvStreamedEncode::AppendBlocks()</apiname></xref>. </p> </li>
+</ol> <p> <b>Note:</b> The memory optimization is mainly achieved by <codeph>GetNextBlocks</codeph> and <codeph>AppendBlocks</codeph> applying
+effect to the image frame block. And the streaming is only supported by the
+images which are multiples of Minimum Coded Unit (MCU). </p> <p><b>Example </b> </p> <p>The example below shows how to use stream encoding
+and stream decoding methods: </p> <codeblock id="GUID-985CFE87-9321-5C4F-A112-B8A722DC35FE" xml:space="preserve">
+
+void CIclExample::StreamDecodeAndEncodeYuvFrameL(const TDesC&amp; aSrcFileName, const TDesC&amp; aDestFileName)
+    {
+    const TInt KFrameNumber = 0; // first frame
+    const TUid KFormat = KUidFormatYUV422Interleaved; // 422 sampling scheme
+    const TInt KNumBlocksToGet = 1;
+    RChunk chunk;
+    TSize streamBlockSizeInPixels;
+    TEncodeStreamImgProcPlugin ImgProcPlugin;
+    TInt numBlocksRead = 0;
+    TBool haveMoreBlocks = ETrue;
+    // Create the decoder, passing the filename. The image is recognised by the 
+    // Image Conversion Library, an appropriate codec plugin loaded and the image headers parsed.
+    // If the image is not recognised or valid then the call will leave with an error
+    CImageDecoder* jpegImageDecoder = static_cast&lt;CJPEGImageFrameDecoder*&gt;( CImageDecoder::FileNewL(iFs, aSrcFileName));
+    CleanupStack::PushL(jpegImageDecoder);
+
+    // Create the encoder, passing the filename. The image is recognised by the 
+    // Image Conversion Library, an appropriate codec plugin loaded and the image headers parsed.
+    // If the image is not recognised or valid then the call will leave with an error    
+    CImageEncoder* jpegImageEncoder = static_cast&lt;CJPEGImageFrameEncoder*&gt;( CImageEncoder::FileNewL(iFs, aDestFileName, CImageEncoder::EOptionNone, KImageTypeJPGUid));
+    CleanupStack::PushL(jpegImageEncoder);
+    
+    // Create encode &amp; decode Block Streamer
+    TImageConvStreamedDecode* streamDecode = jpegImageDecoder-&gt;BlockStreamerL();    
+    TImageConvStreamedEncode* streamEncode = jpegImageEncoder-&gt;BlockStreamerL();
+    
+    TFrameInfo frameInfo = jpegImageDecoder-&gt;FrameInfo();
+    TSize frameSizeInPixels(frameInfo.iOverallSizeInPixels); //NOTE: The image used for decoding should be multiple of MCU(Minimum coded unit)
+    
+    //set the navigation mode initialize decoder frame
+    TDecodeStreamImgProcPlugin::TNavigation decodeNavigation = TDecodeStreamImgProcPlugin::ENavigationSequentialForward;
+    streamDecode-&gt;InitFrameL(KFormat, KFrameNumber, decodeNavigation);
+    
+    streamEncode-&gt;GetCapabilities(KFormat,ImgProcPlugin);
+    TSize blockSizeInPixels = TSize(ImgProcPlugin.MinBlockSizeInPixels());
+    
+    //initialize encoder frameImgProcPlugin::ENavigationSequentialForward;
+    streamEncode-&gt;InitFrameL(KFormat, KFrameNumber, frameSizeInPixels, blockSizeInPixels, encodeNavigation, NULL);
+
+    //When decoding, the buffer wrapped by the destination CImageFrame must be large enough to contain the decoded frame.
+    //GetBufferSize() should be used to obtain the buffer size required for a particular decode
+    TInt imageSizeInBytes = streamDecode-&gt;GetBufferSize(KFormat, streamBlockSizeInPixels, KNumBlocksToGet);
+            
+    User::LeaveIfError(chunk.CreateGlobal(KRChunk, imageSizeInBytes, imageSizeInBytes, EOwnerProcess));    
+    CleanupClosePushL(chunk);
+        
+    // Create an empty imageframe   
+    CImageFrame* imageFrame = CImageFrame::NewL(&amp;chunk, imageSizeInBytes, 0);
+    CleanupStack::PushL(imageFrame);
+
+    imageFrame-&gt;SetFrameSizeInPixels(streamBlockSizeInPixels);
+    
+    while(haveMoreBlocks)
+        {
+        // See Note 1
+        CActiveListener* activeListener = CreateAndInitializeActiveListenerLC();
+        
+        //decoder get blocks
+        streamDecode-&gt;GetNextBlocks(activeListener-&gt;iStatus, *imageFrame, KNumBlocksToGet, numBlocksRead, haveMoreBlocks);
+        
+        // See Note 2
+        CActiveScheduler::Start();
+        User::LeaveIfError(activeListener-&gt;iStatus.Int()); // decode complete.
+        
+        //NOTE: Apply effects like adjust brightness etc in low memory conditions by use of streaming to the image frame block
+                
+        // See Note 1
+        activeListener-&gt;InitializeActiveListener();
+        
+        //encoder append blocks
+        streamEncode-&gt;AppendBlocks(activeListener-&gt;iStatus, *imageFrame, numBlocksRead);
+
+        // See Note 2
+        CActiveScheduler::Start();
+        User::LeaveIfError(activeListener-&gt;iStatus.Int()); // encode complete.
+        
+        CleanupStack::PopAndDestroy(activeListener); // encodeActiveListener 
+        }
+    
+    CleanupStack::PopAndDestroy(4); // imageFrame, chunk, jpegImageEncoder and jpegImageDecoder
+    }
+</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks
+overview</linktext></link>
+<link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion
+Overview</linktext></link>
+<link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding
+Tutorial</linktext></link>
+<link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding
+Tutorial</linktext></link>
+<link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext>Guide to
+Symbian supplied Codecs </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A5914CFF-6F86-53E8-9928-36D3379835B1" xml:lang="en"><title>EGL
+Interface Overview</title><shortdesc>The EGL Interface component defines the interface to EGL on the
+Symbian platform. The component standardizes the source and binary interfaces
+by providing header and LIB/DSO files for EGL users as well as DEF files for
+EGL implementers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Supported APIs</title> <p>The EGL specifications are defined
+by the Khronos Group (<xref href="http://www.khronos.org" scope="external">www.khronos.org</xref>).
+The following table provides links to the relevant specifications. </p> <table id="GUID-43D6B812-B4AB-506E-8159-61FA0DEC6F2A">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>APIs</entry>
+<entry>Specification</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>EGL 1.4 </entry>
+<entry><xref href="http://www.khronos.org/registry/egl/specs/eglspec.1.4.pdf" scope="external">http://www.khronos.org/registry/egl/specs/eglspec.1.4.pdf</xref> </entry>
+</row>
+<row>
+<entry>EGL 1.3 </entry>
+<entry><xref href="http://www.khronos.org/registry/egl/specs/eglspec.1.3.pdf" scope="external">http://www.khronos.org/registry/egl/specs/eglspec.1.3.pdf </xref> </entry>
+</row>
+<row>
+<entry>EGL 1.2 </entry>
+<entry><xref href="http://www.khronos.org/files/egl_1_2.pdf" scope="external">http://www.khronos.org/files/egl_1_2.pdf</xref> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Header files</title> <p>The EGL Interface component includes
+the Khronos-released header file, <filepath>egl.h</filepath>, and <filepath>egltypes.h</filepath>,
+which is the Symbian equivalent of the Khronos <filepath>eglplatform.h</filepath>.
+Use of the header files supplied in the EGL Interface component helps to ensure
+binary compatibility for applications across different Symbian platforms.
+It also provides source compatibility between different operating systems.
+These header files incorporate minor changes such as Doxygen tags (/** comments)
+but these have no effect on the functionality. </p> <p>The header files are
+provided for EGL 1.2, 1.3 and 1.4. The EGL 1.4 headers are used by default.
+However, there is a variability point that can expose the headers for EGL
+1.3 or 1.2 instead. </p> <p>The Symbian-defined header file <filepath>\epoc32\include\khronos_types.h</filepath> maps
+the Khronos-defined basic types to native Symbian types. </p> </section>
+<section><title> Library file</title> <p>The following library is provided
+by the EGL Interface component. </p> <table id="GUID-0AA8A4D7-72F2-5C6D-A32B-11CB5631F5E0">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Library</entry>
+<entry>Name</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>EGL </entry>
+<entry><filepath> libEGL.lib</filepath> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title> DEF files</title> <p>The EGL Interface component also supplies
+DEF files to further ensure binary compatibility between different platforms.
+These files exist for the WINS and WINSCW emulator and ARM hardware platforms.
+Although the names have a trailing 'u', this is not specified by MMP file
+entries as it is appended to references automatically. </p> <p><b>DEF files
+for WINS and WINSCW </b> </p> <table id="GUID-1FF2D995-AAB9-5B86-9EAD-C6E533A7B339">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Library</entry>
+<entry>Name</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>EGL 1.4 </entry>
+<entry><filepath>\epoc32\include\platform\def\win32\libegl14u.def </filepath> </entry>
+</row>
+<row>
+<entry>EGL 1.3  </entry>
+<entry><filepath>\epoc32\include\platform\def\win32\libegl13u.def </filepath> </entry>
+</row>
+<row>
+<entry>EGL 1.2 </entry>
+<entry><filepath>\epoc32\include\platform\def\win32\libegl12u.def </filepath> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>DEF files for ARM </b> </p> <table id="GUID-153A4DF2-F1AA-5878-914C-D6D4A7270549">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Library</entry>
+<entry>Name</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>EGL 1.4 </entry>
+<entry><filepath>\epoc32\include\platform\def\eabi\libegl14u.def </filepath> </entry>
+</row>
+<row>
+<entry>EGL 1.3  </entry>
+<entry><filepath>\epoc32\include\platform\def\eabi\libegl13u.def </filepath> </entry>
+</row>
+<row>
+<entry>EGL 1.2 </entry>
+<entry><filepath>\epoc32\include\platform\def\eabi\libegl12u.def </filepath> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C.dita"><linktext>EGL Interface
+Component</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-A5B74E5C-A26F-5699-8885-3C7F3121FAD6"><title>Stopping Audio Play </title><shortdesc>This tutorial describes how to stop the audio that is currently being played. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps-unordered id="GUID-F867187D-2989-5992-BF43-6ECEAEDD3F56"><step id="GUID-17DB69D2-ADB6-54BB-AFB6-FC4377BD9723"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D135FACF-07B2-377D-9FF6-6C3B47628897"><apiname>CMMFDevSound::Stop()</apiname></xref> function to stop the playing audio. </info> <info>The <codeph>CMMFDevSound::Stop()</codeph> can occur either after the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-30349572-DFF6-380B-97A1-3549E00B8259"><apiname>CMMFDevSound::PlayData()</apiname></xref> call or after the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-FBB7A51D-771C-3820-80A6-1297F98CDCFF"><apiname>MDevSoundObserver::BufferToBeFilled()</apiname></xref> callback. </info> <info> Note: After calling <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D135FACF-07B2-377D-9FF6-6C3B47628897"><apiname>CMMFDevSound::Stop()</apiname></xref>, the client should not call <xref href="GUID-978C8C5A-CA6E-3453-B700-12DE154C1F60.dita"><apiname>PlayData()</apiname></xref> for any outstanding <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-FBB7A51D-771C-3820-80A6-1297F98CDCFF"><apiname>MDevSoundObserver::BufferToBeFilled()</apiname></xref> callbacks as they will be ignored. The client should not attempt to write any data into the buffer after the call to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D135FACF-07B2-377D-9FF6-6C3B47628897"><apiname>CMMFDevSound::Stop()</apiname></xref> as the buffer may no longer be valid. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-8CCA6352-DC3D-5BFE-9AAF-B70173DF2558.dita"><linktext>Starting Audio
+                Play</linktext> </link> </related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A5C1DDAC-C8D5-4966-8102-8F052B91CE1F_d0e47496_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e38364_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A5F65344-BE05-5295-85BB-E8114505FB82" xml:lang="en"><title>Alarm
+Sound Play Control</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains the use of sound, which is one of the several ways
+that the Alarm Server can notify the user. </p>
+<section><title>Alarm Play Interval Configuration</title> <p>The alarm sound
+play definition (<xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita"><apiname>TASCliSoundPlayDefinition</apiname></xref>) is set using
+the <xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita"><apiname>RASCliSession</apiname></xref> class. Alarm sounds are played according
+to intervals that consist of a duration and an offset. The <xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita"><apiname>TASCliSoundPlayDefinition</apiname></xref> class
+defines when alarm sounds are to be played, and for how long. </p> <p>The
+purpose of configuring alarm sound play is to enable the Alarm Server to perform
+the following operations: </p> <ul>
+<li id="GUID-954909FC-2690-50A6-A967-AB4E3C97A319"><p>set the alarm sound
+state to ON or OFF (<xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-EE45EA45-0289-3946-ACB8-25971D32FDC7"><apiname>RASCliSession::SetAlarmSoundState()</apiname></xref>). </p> </li>
+<li id="GUID-B8D77E1F-0F9C-5AA2-8269-68A04CD73525"><p>silence all alarms until
+a specific time (<xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-C15F814F-AFB6-3FE4-8674-B961A1EFA6F2"><apiname>RASCliSession::SetAlarmSoundsSilentUntil()</apiname></xref>).
+No sound is played for any alarm that is notified before this time. </p> </li>
+<li id="GUID-7359767C-FFC6-5903-B4C1-099C55EB0C3E"><p>silence all alarms for
+a specified interval (<xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-D86F97E4-3407-32C9-ADBA-0FD44D5A3ED3"><apiname>RASCliSession::SetAlarmSoundsSilentFor()</apiname></xref>).
+No alarm sound is played for any alarm notified during this period. </p> </li>
+<li id="GUID-79917BFC-C399-5FCB-A1B3-9E3CA16250F7"><p>cancel the silent period,
+turning the alarm sounds ON (<xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-92A4C2FD-46B9-36CA-A624-002EEFA9671C"><apiname>RASCliSession::CancelAlarmSilence()</apiname></xref>). </p> </li>
+<li id="GUID-D701C819-91AC-55F6-8A2B-99A3B95BB22D"><p>configure alarm sound
+play intervals (<xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-BB9A298E-C3AE-3E98-A677-E7A028F67602"><apiname>RASCliSession::SetAlarmPlayIntervalsL()</apiname></xref>),
+which specify the duration of the ‘play/silence/play’ when an alarm expires. </p> </li>
+<li id="GUID-4FCCE100-C356-5F22-8300-C4BFD6A64F0B"><p>determine whether the
+alarm server has temporarily silenced the sounds (<xref href="GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4.dita#GUID-3598EAEE-0EF4-35A2-89E5-F3B2555B1AB4/GUID-EB8DC5EB-ABA9-3AB9-9D1B-E37DA612C0BB"><apiname>RASCliSession::AlarmSoundsTemporarilySilenced()</apiname></xref>).
+This returns <xref href="GUID-781E8158-805B-3784-8FED-D7A191822FC3.dita"><apiname>ETrue</apiname></xref> if alarm sound playing is temporarily
+silenced, else <xref href="GUID-A759CA2D-8327-348F-9337-4886E619D920.dita"><apiname>EFalse</apiname></xref> is specified. </p> </li>
+</ul> <p> <b>NOTE</b>: These APIs can be used <i>only</i> if the alarm sound
+play control is enabled from the Alarm Server side. </p> <p>To perform these
+operations, the Alarm Server uses a resource file, which defines the sound
+play intervals and durations. </p> <p><b>Resource File</b> </p> <p>The alarm
+play intervals are defined in <codeph>AlarmServer.rss</codeph> resource file.
+The compiled resource file (configuration file) must be named as <codeph>alarmserver.rsc</codeph> and
+be placed in the Alarm Server’s private directory (<codeph>C:\private\101F5027</codeph> on
+emulator, or <codeph>Z:\private\101F5027</codeph> on target platforms). </p> <p>The
+resource file must start with the necessary include directives, resource name,
+and standard signature entry as illustrated in the following code fragment: </p> <codeblock id="GUID-A6885AA2-38C0-54BA-8765-9B10A20B0478" xml:space="preserve">#include &lt;badef.rh&gt;
+#include &lt;alarmserver.rh&gt;
+
+NAME ASRV
+RESOURCE BA_RSS_SIGNATURE
+    {
+    signature = 1;
+    }</codeblock> <p>The resource file specifies only the Offset (in minutes)
+and Duration (in seconds) of the Alarm play intervals. It is used only for
+initial configuration. </p> <p>At runtime, Alarm Server configurations are
+backed up to a file called as <filepath>AlarmServer.ini</filepath>, on the
+PC side. The backup operation performed can be one of the following types: </p> <ul>
+<li id="GUID-46E046BC-44CB-5B8C-90DD-4E022F258145"><p> <b>Secure Backup</b> -
+In this method, <codeph>backuprestorenotification.lib</codeph> (provides a
+notification mechanism) is used for backing and restoring operation to and
+from <codeph>C:\private\101F5027\AlarmServer.ini</codeph>. </p> </li>
+<li id="GUID-B17FCD6F-500A-5D49-9FC2-389B7F41E810"><p> <b>Passive Backup</b> -
+In this method, the required backup behavior is mentioned in a backup registration
+file called <filepath>backup_registration.xml</filepath>, placed in its private
+directory. The list of private directories and files that must be backed up
+are mentioned in this backup registration file. </p> </li>
+</ul> <p> <b>NOTE</b>: The backup file takes precedence over the resource
+file the next time the Alarm Server is started. Therefore, if changes are
+made to the resource file, <filepath>AlarmServer.ini</filepath> must be deleted
+manually before restarting the Alarm Server. </p> <p><b>Alarm Sound Play Intervals
+and Durations</b> </p> <p>The following diagram illustrates the alarm sound
+play intervals: </p> <fig id="GUID-477088D0-57BD-58BF-91BC-BF05E3EF2162">
+<title>                 ALARM SOUND PLAY INTERVALS               </title>
+<image href="GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e118282_href.png" placement="inline"/>
+</fig> <p>Alarm play intervals define the toggling of alarm sound playing/stopping
+and alarm dialog show/hide when an alarm expires. It consists of a duration
+and an offset. The offset is the time, in minutes, from the beginning alarm
+time or the end of the last snooze. The duration is the time period, in seconds,
+during which the alarm sound is played. </p> <p>At each offset, the Alarm
+Server makes a request to the Alarm Alert server to display the alarm dialog
+and play the alarm sound. At the end of each duration period, the Alarm Server
+makes a request to the Alarm Alert server to hide the alarm and stop playing
+the alarm sound. </p> <p>The following is an example code fragment that plays
+the sound for 30 seconds, then pauses for 30 seconds, and repeats the pattern
+two more times: </p> <codeblock id="GUID-7ECBB50D-0C81-5059-A334-81BC979A04B2" xml:space="preserve">RESOURCE sound_controller
+    {
+    intervals =
+        {
+        SOUND_INTERVAL { offset = 0; duration = 30; },
+        SOUND_INTERVAL { offset = 1; duration = 30; },
+        SOUND_INTERVAL { offset = 2; duration = 30; };
+        };
+    }</codeblock> <p>An interval must have an offset of zero if more than
+one offset is specified. </p> <p> <b>NOTE</b>: The <xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita"><apiname>TASCliSoundPlayDefinition</apiname></xref> class
+is the runtime equivalent of the sound intervals array. It defines <xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita#GUID-0075C5BA-8084-33EB-A246-7EED717E2B88/GUID-79792213-24E6-3862-BEF5-832F8C34BF5A"><apiname>TASCliSoundPlayDefinition::Offset()</apiname></xref> length
+in minutes and defines <xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita#GUID-0075C5BA-8084-33EB-A246-7EED717E2B88/GUID-1900BA63-48B2-32A6-93DB-F77CC7AA3E39"><apiname>TASCliSoundPlayDefinition::Duration()</apiname></xref> length
+in seconds. The API to set a <xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita"><apiname>TASCliSoundPlayDefinition</apiname></xref> array
+is <xref href="GUID-0075C5BA-8084-33EB-A246-7EED717E2B88.dita#GUID-0075C5BA-8084-33EB-A246-7EED717E2B88/GUID-AB1E72B5-D9CE-3BAD-860D-6C1F443442E8"><apiname>TASCliSoundPlayDefinition::SetAlarmPlayIntervalsL()</apiname></xref>. </p> </section>
+<section><title>Alarm Play Sequence Repeat Option</title> <p>The resource
+file provides an option to repeat the sequence when the end of the alarm play
+sequence is reached. </p> <p>For backward compatibility, the default behavior
+is to restart the sequence when the end of the alarm play sequence is reached
+(see <xref href="GUID-0056DE57-61FD-3452-B65B-EFADC0069B8F.dita"><apiname>EAlarmSoundRepeatSettingStop</apiname></xref>). This occurs if there
+is no resource file, or if the resource file does not specify an option. There
+are two more end-of-sequence options: </p> <ul>
+<li id="GUID-73A1D734-2938-5477-81F7-B17F5237C374"><p> <xref href="GUID-41015640-AD70-3D56-9D89-AFAF67E15BCA.dita"><apiname>EAlarmSoundRepeatSettingLoop</apiname></xref> -
+stop when the end of sequence reached. </p> </li>
+<li id="GUID-F531E88D-AAD6-5F8D-9CDE-B153467D4DB1"><p> <xref href="GUID-98CE95CB-96F7-37A5-8C49-0B11D7CAEE6B.dita"><apiname>EAlarmSoundRepeatSettingRepeatLast</apiname></xref> -
+repeat last interval indefinitely. This is an optional entry in the resource
+file. </p> </li>
+</ul> <p>The following is a resource file example illustrating the use of
+an option to repeat the alarm play sequence: </p> <codeblock id="GUID-07ADF881-C2CE-558A-9237-2BF0E4E28064" xml:space="preserve">RESOURCE sound_controller
+    {
+    option = EAlarmSoundRepeatSettingRepeatLast;
+    intervals = 
+        {
+         ...
+        }
+    }</codeblock> </section>
+<section><title>See also</title> <p><xref href="GUID-59D2B677-63D7-5FE7-98F4-549D9C235E56.dita">Playing
+Alarm Sound Continuously</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A60BFFE4-E527-547C-AF4D-30BB7A1C0D07.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A60BFFE4-E527-547C-AF4D-30BB7A1C0D07" xml:lang="en"><title>Text
+and binary data</title><shortdesc>Describes how C strings are handled in text and binary data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In ‘C’, strings are characterised by the need for a zero terminator to
+flag the end of the string. They suffer from a number of problems. In particular,
+they cannot include binary data within them (in case that data includes binary
+zeroes) and operations on them are, in general, inefficient. ‘C’ strings need
+to be handled in a different way to binary data, as reflected in the <codeph>memxxx()</codeph> and <codeph>strxxx()</codeph> function
+groups in the ANSI ‘C’ library.</p>
+<p>Descriptors allow strings and binary data to be represented in the same
+way; this allows the same functions to be used in both cases.</p>
+<p>For binary data, the 8 bit descriptors should be used explicitly. The distinction
+between Unicode and non-Unicode has no meaning for binary data</p>
+<p>Note that there is no practical use for explicit 16 bit binary data.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A60C4549-9FAA-496A-B743-D395A461B61F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A60C4549-9FAA-496A-B743-D395A461B61F" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><taskbody/></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F" xml:lang="en"><title>Defining
+application icons, captions and properties</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>This document describes the properties
+of an application that are defined in application registration files and in
+other related files. Various resource structs declared in <filepath>AppInfo.rh</filepath> are
+used to hold the definitions. </p> </section>
+<section id="GUID-33B76C7B-0A73-5890-9786-F18839309A4A"><title>Application
+icons</title> <p>Icons are used to represent applications and their associated
+document files in the system shell or application launcher. If the phone's
+UI supports embedding, icons may also be used to represent embedded documents. </p> <p>The
+source icon files may be <filepath>.bmp</filepath> bitmaps, or a vector graphics
+format. If bitmaps are used, they are built into a single <filepath>.mbm</filepath> file
+(Symbian platform multiple bitmap file) as part of the build process, see <xref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita">start bitmap</xref> for details.
+Different sizes of source bitmap should be supplied. The OS selects the most
+appropriate icon size for the UI's current zoom state. This avoids the need
+for the icon to be dynamically scaled when it is drawn at a different size.
+Scaling small bitmaps generally results in a loss of quality. The required
+icon sizes are specific to the UI. </p> <p>For each icon size, an image bitmap
+and a mask bitmap are needed. The mask should be black for the parts of the
+image that should be visible, and white for the transparent areas, where the
+background should appear instead. </p> <p>In addition to <filepath>.mbm</filepath> icon
+files, registration files also support vector graphics formats for instance <filepath>.svg</filepath>.
+If the icon file is a vector graphics format, the <codeph>number_of_icons</codeph> value
+in the <codeph>CAPTION_AND_ICON_INFO</codeph> struct is irrelevant. </p> <p>In
+either case, the name of the icon file is specified in the <codeph>LOCALISABLE_APP_INFO</codeph> resource. </p> <p><b>Localising
+icons </b> </p> <p>Some applications may need to localise their icons and
+captions. </p> <p>Icon filenames can be localised by defining them in <filepath>.rls</filepath> files.
+There should be one <filepath>.rls</filepath> file per language supported.
+In the <codeph>LOCALISABLE_APP_INFO</codeph> definition, the icon filenames
+should be referred to by their symbolic identifiers, rather than as the strings
+themselves. Conditional compilation statements are used in the resource file
+to include the appropriate <filepath>.rls</filepath> file. See <xref href="GUID-188F9462-F805-522A-84FF-770EAB045504.dita">an
+example registration file and icon/caption file</xref>. Captions are localised
+using the same technique. </p> </section>
+<section id="GUID-E8B8F865-D363-535C-A51B-EC66B8C76296"><title>Application
+captions</title> <p>An application's caption is the text displayed beside
+its icon. Typically it is the application's name. </p> <p>Captions are defined
+in the localisable icon/caption definition, which provides for short and long
+captions. The short caption may be used in situations where screen space is
+limited. Captions are localised in the same way as icon filenames, see above. </p> </section>
+<section><title>Filename</title> <p>Registration files must provide the filename,
+excluding path and extension of the application's executable. This is needed
+in order for the application architecture to be able to find and launch the
+application. The application architecture expects it to be located in <filepath>\sys\bin\</filepath> on
+the same drive as the registration file. </p> </section>
+<section><title>Attributes</title> <p>Registration files have an <codeph>attributes</codeph> field
+which is used to identify non-standard types of application. For instance, <codeph>KAppIsControlPanelItem</codeph> identifies
+control panel-type applications. Refer to the documentation for
+the targetted UI platform for other supported values. </p> </section>
+<section id="GUID-A28ABF97-3EF0-5554-8A66-C9EB1FF954B6"><title>Application
+properties</title> <p>The following properties can be defined in registration
+files. In C++ they can be retrieved using the <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref> class.
+Note that not all of these are supported by every UI. </p> <p><i>embeddability</i></p> <p>An
+application can have one of the following attributes: <codeph>KAppEmbeddable</codeph>, <codeph>KAppNotEmbeddable</codeph>,
+or <codeph>KAppEmbeddableOnly</codeph>. The other listed values (<codeph>KAppEmbeddableUiOrStandAlone</codeph> and <codeph>KAppEmbeddableUiNotStandAlone</codeph>) are not used. The default value is <codeph>KAppNotEmbeddable</codeph>.
+Embeddable applications appear in lists of embeddable applications, see for
+example <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-E0F9B1FA-976A-3A07-8A69-1713F81CE146"><apiname>RApaLsSession::GetEmbeddableApps()</apiname></xref>. A file with
+the property <codeph>KAppEmbeddableOnly</codeph> appears in the embeddable
+list, but not in the shell or application launcher. </p> <p><note><ul>
+<li id="GUID-13D03388-1689-5B82-8343-AF85AB597138"><p>document embedding may
+not be not supported by all UIs, </p> </li>
+<li id="GUID-54F48257-3849-5635-9430-C7968BAF42C9"><p>the embeddable and embeddable-only
+properties should only be set for file-based applications, in other words,
+applications that create embeddable documents. </p> </li>
+</ul></note> </p> <p><i>hidden</i></p> <p>Hidden applications run in the background.
+They are not shown to the user and do not appear in the application launcher
+or in the embeddable applications list. </p> <p>The default value is <codeph>KAppNotHidden</codeph>. </p> <p><i>newfile</i> </p> <p>This
+property indicates whether the application is document-based and supports
+the creation of new files. </p> <p>The default value is <codeph>KAppDoesNotSupportNewFile</codeph>. </p> <p><i>launch</i> </p> <p>Indicates
+whether the application will be launched in the foreground so that it takes
+focus, or in the background. </p> </section>
+<section><title>Default screen number</title> <p>This number identifies the
+screen on which the application is displayed. It can be omitted if the phone
+has a single screen. In v8.1b, the application can only ever appear on this
+screen; this may change in later releases. For the Symbian emulator, screen
+numbers are initialised in the window server initialisation file, <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini</xref>. </p> </section>
+<section id="GUID-500CEB11-DA89-5A6D-B0E5-E5C881030FCD"><title>UIDs</title> <p>Two
+UIDs must be specified in the source registration file: <codeph>UID2</codeph> and <codeph>UID3</codeph>. <codeph>UID2</codeph> always
+has the value <codeph>KUidAppRegistrationResourceFile</codeph>; <codeph>UID3</codeph> is
+the third UID of the application. </p> </section>
+<section id="GUID-2E24E9DA-4EBF-5CB5-96CB-112E7610227A"><title>MIME support</title> <p>Multipurpose
+Internet Mail Extensions, MIMEs, define a file format for transferring non-ASCII
+data, such as graphics, audio and fax, over the Internet. The <codeph>datatype_list</codeph> section
+lists the MIME types that the application supports, and the priority of support
+that each type is given. When a file is opened, Symbian platform launches
+the application which has the highest priority of support for the type of
+data in the file. </p> <p>There are four priority levels, of which only <codeph>EDataTypePriorityNormal</codeph> or <codeph>EDataTypePriorityLow</codeph> should normally be used. For example, a text editor is good at editing text/plain
+files, and would be given a priority of <codeph>EDataTypePriorityNormal</codeph> for
+that file type. A web browser is less good at handling text files, and would
+be assigned the lower priority <codeph>EDataTypePriorityLow</codeph>. So,
+either application can be launched to handle a text file, however if both
+applications are present, the text editor is launched in preference. </p> <p> <codeph>EDataTypePriorityHigh</codeph> should
+only be assigned under exceptional conditions, for instance if no other application
+could ever handle a particular MIME type as well. </p> <p> <codeph>EDataTypePriorityLastResort</codeph> should
+also be used sparingly. Text editors are terrible at displaying HTML, and
+would either have the priority <codeph>EDataTypePriorityLastResort</codeph>,
+or would not support the type at all. </p> <p>Given two applications with
+the same MIME type priority, Symbian platform arbitrarily launches one of
+them. </p> </section>
+<section><title>View-specific information</title> <p>For view-based applications,
+as an alternative to using an application-wide caption and icons, each view
+in the application can define its own icon and captions. This is so that specific
+application views can be launched directly from the phone's application launcher/shell.
+This feature may not be supported by all phone UIs. </p> <p>The following
+view-specific properties can be specified, using a <codeph>VIEW_DATA</codeph> resource
+struct, declared in <filepath>appinfo.rh</filepath>: </p> <ul>
+<li id="GUID-27E58734-77D5-5420-A0E5-E5635530913A"><p>The view's UID. </p> <p>This
+uniquely identifies the view within the application (in C++ this corresponds
+to <xref href="GUID-3DEA9A17-CB50-3DCD-87AC-0E91B377FB0E.dita#GUID-3DEA9A17-CB50-3DCD-87AC-0E91B377FB0E/GUID-2A49E3A5-815F-339C-AFB3-CB21D9AC53EB"><apiname>TVwsViewId::iViewUid</apiname></xref>). This must be specified. </p> </li>
+<li id="GUID-BA449839-7205-5997-99BF-CA0E23C6A796"><p>The screen mode that
+the view uses. </p> <p>A screen mode is a combination of screen rotation and
+screen size. Screen modes are identified by an index; the first one is zero.
+For the Symbian emulator, screen modes are initialised in the window server
+initialisation file, <xref href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita">wsini.ini</xref>.
+The default value is zero. </p> <p>For example, on phones that use a flip-down
+keypad, the screen mode changes when the flip is opened or closed. On such
+phones, there may be a flip open and flip closed version of each view. </p> </li>
+<li id="GUID-79366634-C36E-5FEC-B77A-01D594A9BDD2"><p>The number of icons
+for the view. </p> <p>The icons are contained in the icon file. If the icon
+file is a vector graphics format, the <codeph>number_of_icons</codeph> value
+is irrelevant. </p> </li>
+<li id="GUID-E79B5B73-7527-5EBA-922E-8787AA6D43AF"><p>The view's caption. </p> </li>
+</ul> <p>The view-specific information is defined in the <codeph>view_list</codeph> which
+is an array of <codeph>VIEW_DATA</codeph> structs, one for each view in the
+application. It can be accessed in C++ through the <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref> class,
+see for example <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-3687ED39-4D19-3C96-AAB4-FF6C977411BB"><apiname>RApaLsSession::GetAppViews()</apiname></xref>, and <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-FFB678A1-A717-3D0D-9996-858E77E0AB80"><apiname>RApaLsSession::GetAppViewIcon()</apiname></xref>. </p> </section>
+<section><title>Service list</title> <p>Server applications implement services
+on behalf of client applications, using a server. They are new in v9.0 and
+the motivation behind them is platform security. Because the client and the
+server applications run in separate processes, their memory areas and private
+data files are protected from each other. </p> <p>The service list is a list
+of services offered by a server application. Each entry in the list consists
+of a <codeph>uid</codeph>, which identifies the service, and the ID of another
+resource (<codeph>opaque_data</codeph>) that describes how the service is
+implemented. The latter is called opaque data because how it is used is up
+to the server application, not the UI framework. For example, it might contain
+the ID of a localised text resource for display in the UI, or the ID of a
+resource struct that allows client code to distinguish between different implementations
+of the service. </p> <p>The information defined in the service list can be
+retrieved using the <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref> class. For example, clients
+can find out which server applications implement a particular service by calling <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita#GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA/GUID-F5482751-DC3B-3C31-9BE4-6CFDF076E76A"><apiname>RApaLsSession::GetServiceImplementationsLC()</apiname></xref>. </p> <p>The opaque data may be non-localisable and therefore defined as a resource
+in the registration file, or localisable and therefore defined as a resource
+in the localisable icon/caption definition file, if one exists, or in the
+UI resource file. If the localisable icon/caption definition file is used,
+it must include a four character <codeph>NAME</codeph> and an <codeph>RSS_SIGNATURE</codeph> resource,
+like most other resource files, and as it would no longer be the only resource
+defined in the file, the <codeph>LOCALISABLE_APP_INFO</codeph> resource must
+be given an ID, which must be specified in the registration file's <codeph>localisable_resource_id</codeph> field. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A626197A-3FA7-588C-B649-E33CCA990B99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A626197A-3FA7-588C-B649-E33CCA990B99" xml:lang="en"><title>FEP
+Introduction</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5917F986-4386-401E-A8F2-4BE111C1A48F"> <p>This guide is
+adapted from material originally intended to accompany source code for sample
+front end processors (FEPs) TFEP1Plugin (a keyboard-based FEP) and TFEP2Plugin
+(a mouse/pen-based FEP). </p> <p>TFEP1Plugin and TFEP2Plugin are available
+to Symbian DevKit licensees and may be found in the Symbian platform source
+in the <filepath>app-framework\feptest\</filepath> directory. </p> <p>SDK
+licensees do not have access to the source but must find sufficient information
+within the guide. </p> <p><b>Note:</b> Platform security that was introduced
+in Symbian OS v9.1, brought some changes to the way FEPs are created and loaded. <i>Prospective
+FEP developers must note that FEPs now require a capability of All-Tcb and
+must therefore ensure that they are able to achieve this before commencing.</i> </p> <p>The
+guide is divided into the following sections: </p> <p><xref href="GUID-6CEAFE12-EB30-5231-94F4-2D097E79BFE0.dita">Implementing
+the FEP API</xref>  </p> <p><xref href="GUID-1BAF17A9-B71B-5003-AEB5-4631F019C6AC.dita">Fixed
+and Floating Windows</xref>  </p> <p><xref href="GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96.dita">Simulating
+and Intercepting Key Events</xref>  </p> <p><xref href="GUID-A7E39E45-02BA-58F4-8807-EFABB8F6E5D0.dita">Processing
+Pen Events</xref>  </p> <p><xref href="GUID-ACC71D0D-32C4-5DAF-B4D9-66013A073FD4.dita">Synchronizing
+FEP Instantiations</xref>  </p> <p><xref href="GUID-238D6070-96AC-5D8A-86EA-488C59DF2AE3.dita">Detecting
+Changes in the Environment</xref> </p> <p><xref href="GUID-38679CA2-0066-589C-988F-AC14B7E2F107.dita">Interacting
+with Text Editor Controls</xref>  </p> <p><xref href="GUID-31A28040-6C8E-5C65-A697-04B30B441686.dita">FEP
+References</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A62E89DE-0762-5827-856D-F20EEF46EE4B-GENID-1-6-1-3-1-1-7-1-7-1-4-1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A62E89DE-0762-5827-856D-F20EEF46EE4B-GENID-1-6-1-3-1-1-7-1-7-1-4-1"><title>Simple controls and compound controls</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In addition to being window-owning or non-window-owning, each control is either a simple control or a compound control. </p> <section><title>Simple controls</title> <p>A simple control, such as a label or an image, is one which contains no other controls. A simple control may be window-owning or non-window-owning. The majority of simple controls, in practice, are non-window-owning. </p> </section> <section id="GUID-A62E89DE-0762-5827-856D-F20EEF46EE4B-GENID-1-6-1-3-1-1-7-1-7-1-4-1-2-3"><title>Compound controls</title> <p>A compound control is one which contains one or more simple or compound controls. Compound controls are also known as container controls and may be window-owning or non-window-owning. </p> <p>The controls contained by a compound control are its component controls. Components may also be window-owning or non-window-owning. The majority, in practice, are non-window-owning. </p> <p>The implementation of compound controls changed in version 9.1 of Symbian OS. The previous APIs and the old 'way of working' are still supported but do not support new automated features such as background drawing, font provision, layout managers and accumulated zoom. </p> <p>The new 'way of working' is currently used by UIQ v3. </p> <p>S60, MOAP and older versions of UIQ use the old scheme. </p> <p>Under the old (pre 9.1) scheme the way in which a compound control stored its component controls is not mandated by the framework. Controls derived from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> are free to store their components as they see fit. They have to implement the virtual function <codeph>CCoeControl::CountComponentControls()</codeph> to return the number of components, and also to provide <codeph>CCoeControl::ComponentControl()</codeph> to return the <codeph>CCoeControl*</codeph> pointing to a particular component. This is very flexible but places a greater burden on application developers and means that it is impossible for tools or agents to make assumptions about the internal structure of controls. </p> <p>Under the new (9.1 and onwards) scheme <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> provides a storage mechanism and an API for adding, retrieving and removing components. Besides simplifying the API and making life easier for developers this ensures consistency which allows run-time agents, such as layout managers and skins managers, to act across all of the controls in the UI. The <codeph>CCoeControl::CountComponentControls()</codeph> and <codeph>CCoeControl::ComponentControl()</codeph> functions are now implemented by the base class. By default, <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> also now takes responsibility for deleting its lodgers. </p> <p>The new scheme provides two methods for identifying component controls - one to be used by the parent, which gives each sibling component a unique ID, and one which allows each control within a view to have a UniqueHandle. The latter is primarily to enable resource driven view construction but is also useful for automated testing. </p> <p>The control framework (both old and new) provides logic to handle redrawing and the distribution of pointer events to component controls. A compound control must handle distribution of key events to its components. Non-window owning lodger components should not overlap* and must be contained within the extent of the compound control. This does not pose a restriction for most UI elements, such as buttons and labels, as they never need to overlap and never need to be displayed outside their containers. </p> <p>Component controls may themselves be compound. There is no limit on the number of levels of compounding. </p> <p> </p> <p>*Overlapping controls may be used in conjunction with <xref href="GUID-48DD4B1F-E056-344F-9311-43D89F3817B8.dita"><apiname>MCoeControlHitTest</apiname></xref>. See <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-AC723EE4-1482-59C5-9F13-CAE119C7800D">How to write controls</xref>  </p> </section> <section><title>See also</title> <p> <xref href="GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita">Run-time control hierarchy</xref>  </p> <p> <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita">How to write controls</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A63025D1-7FD4-5120-8A1F-537D6B70103D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A63025D1-7FD4-5120-8A1F-537D6B70103D" xml:lang="en"><title>User Library</title><shortdesc>The User Library allows the applications and services that run
+on a phone to access the functionality provided by the Symbian platform
+Kernel. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p id="GUID-7C269315-36CD-5439-AFEE-B6549C72C7C7"> User Library provides APIs
+to access the functionality of the processor and memory hardware, and a large
+number of programming utilities like arrays, strings, and maths. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A636C1B3-8AB2-52D7-BB19-4CC93F4BDD97.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A636C1B3-8AB2-52D7-BB19-4CC93F4BDD97"><title>WTLS Certificates</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Wireless Transport Layer Security (WTLS) certificates are used for authenticating entities in WTLS, the security layer protocol in the WAP architecture. The WTLS specification [WTLS 1.0], defines the certificate and its use, as well as the protocol itself. </p> <p>The WTLS protocol is heavily based on TLS [RFC 2246], which is widely used to provide privacy and data integrity between two applications communicating using the Internet. In turn, TLS is heavily based on SSL version 3.0. </p> <p>All these protocols use <xref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita">Public Key Cryptography</xref> to achieve the goals of privacy and data integrity. Public Key Cryptography is used to reduce the problem of how to achieve these goals from a secrecy requirement to a requirement of authentication. That is, given two entities A and B, if A can demonstrate possession of the private key corresponding to the public key which it supplies, and B can do the same, then the use of Public Key Cryptography will enable them to communicate privately. <xref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita">Certificates</xref> are used to demonstrate this possession: the prover will supply a set of certificates beginning with their own, and the verifier will attempt to construct and validate a chain beginning with the prover's own certificate and terminating in a certificate already trusted by the verifier. </p> <p>Three levels of security are provided by WTLS: </p> <ul><li id="GUID-2C63B01D-00D9-5389-904B-FAA13D2EE40D"><p>no authentication: anonymous key exchange is used for creation of an encrypted channel between server and client; no authentication takes place, so no certificate management is required. </p> </li> <li id="GUID-BCAF0499-50FA-5B05-A510-399D0EF855DD"><p>server authentication: the server provides a certificate mapping back to an entity trusted by the client, enabling the client to authenticate the server. This is often all the authentication that is required; for online shopping, for example, the client will generally authenticate the server but the reverse will often not be necessary since the client will supply their credit card number to pay for the stuff, which is all the server usually cares about. </p> </li> <li id="GUID-48DBD5E5-C833-5FFC-BA2F-DBE1BEB7A84C"><p>client authentication: the client possesses its own private key and associated public key certificate which it may use to identify itself to other entities in the network. </p> </li> </ul> <p>For server authentication WTLS certificates are used: thus, WAP clients do not have to deal with X.509 certificates. However, for client authentication X.509 certificates are used to leverage existing PKIs. </p> <p>Symbian platform support for TLS/SSL and WTLS certificate management only includes server authentication. Thus, the WTLS certificate management only offers support for the validation of chains composed exclusively of WTLS certificates, and the storage of WTLS certificates. </p> <p>The Certificate and Key Management component offers the following functionality for processing WTLS certificates: </p> <ul><li id="GUID-848C67F6-3B12-535E-AF88-A140DE35E2DE"><p>parses a set of WTLS certificates sent from the server from their binary encoded form into a form in which they are useful, and in which client code can extract interesting information (for example name information). </p> </li> <li id="GUID-AABA31C8-AD82-526E-B826-205D017B067A"><p>uses these certificates to construct a chain back to a locally stored trusted root certificate. </p> </li> <li id="GUID-406CAF57-BDF8-5CC1-A467-59B5568E8732"><p>validates this chain: this would include verifying the signature and validity dates on each certificate. </p> </li> <li id="GUID-AF72A928-D50C-585B-8E98-60ED89F78F92"><p>maintains a local store of certificates, with trust settings for each one, and offering an API to edit these trust settings, and add and delete certificates. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A64625D4-F101-5DB7-896B-F91A21BABE01"><title>Reclaiming Free Space</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document discusses the benefits to be had, such as performance improvements, from performing a <b>compaction</b> operation. </p> <section><title>Purpose</title> <p>Database compaction frees up diskspace and improves overall performance when performing certain database operations. </p> </section> <section id="GUID-E7319024-5988-5398-8F77-FAD6F644D1DB"><title>Database compaction</title> <p>Databases using database compaction will experience a performance improvement for some operations, such as DELETE. There will also be a better trade-off between performance and disk usage. </p> <p>Legacy databases will be automatically migrated to use the new default free space reclaim policy when they are used with the 9.5 version of Symbian SQL. The migration takes place the first time the legacy database is opened with the new version of Symbian SQL. The database will be configured to use the default free space reclaim policy from then on. <b>Note</b>: Such migration will not be possible (or necessary) for databases that are on read-only media, but these databases will still be readable by Symbian SQL. </p> <p>Databases can be configured to use a free space reclaim policy of their choice. There are three modes of database compaction: </p> <ul><li id="GUID-7394A159-1BFA-53FF-ABBB-50D1DC8453F0"><p> <xref href="GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita#GUID-A64625D4-F101-5DB7-896B-F91A21BABE01/GUID-4AF5A27E-9793-5931-B2D0-3673B556DB6D">background</xref>, </p> </li> <li id="GUID-DCA4B080-B17B-5AFB-916A-9B84C1C3DC5E"><p> <xref href="GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita#GUID-A64625D4-F101-5DB7-896B-F91A21BABE01/GUID-CE6F567F-7300-574A-A180-E42786DC04DB">synchronous</xref>, </p> </li> <li id="GUID-72035C8D-9B12-5EDB-BD3D-59762DFB46B9"><p> <xref href="GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita#GUID-A64625D4-F101-5DB7-896B-F91A21BABE01/GUID-F9D40D87-B383-5EF5-9959-2A344436477A">manual</xref>. </p> </li> </ul> <p>The compaction mode is set when the database is created and cannot be changed later. Only the database creator can specify the compaction mode. This avoids the possibility of conflicting policy change requests by clients of shared databases. When a database compaction mode is not specified, background mode is the default mode. </p> <p id="GUID-4AF5A27E-9793-5931-B2D0-3673B556DB6D"><b>Background compaction</b> </p> <p>Compaction activities are deferred and scheduled by the server allowing client requests that delete records to complete more quickly. This mode offers clients no guarantees on when space will be reclaimed. When under high load the server will defer reclamation indefinitely. </p> <p>The server maintains an <xref href="GUID-4000D46C-29C0-3497-8E20-FFC908670EC8.dita"><apiname>EPriorityIdle</apiname></xref> active object for each open database that is set to background compaction mode. </p> <p>The amount of reclaimable disk space is retrieved after an SQL statement is executed on a database. If this value exceeds the compaction threshold then the database is marked as <i>dirty</i> by setting its active object as ready to run: </p> <ul><li id="GUID-93948590-87D5-541A-99FE-F166656E85B1"><p> The compaction threshold is a server-wide parameter that specifies the amount of reclaimable disk space (in bytes) that must exist in a database before the server compacts that database. A default value for this threshold is supplied by Symbian but device creators can override this in the server configuration file.  </p> </li> <li id="GUID-C5E412DF-E015-592D-8BF9-16D2E82E5514"><p>Each active object contains a <i>free pages</i> threshold that is derived from the compaction threshold. The <i>free pages</i> threshold is the number of pages that must be in the database for it to be marked as <i>dirty</i>. </p> </li> <li id="GUID-2B3A1FEB-C351-5CA9-870D-F87051A36476"><p>Each time a <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-6D2120DC-C193-3E2E-A802-B4CD180BDF11"><apiname>RSqlDatabase::Exec()</apiname></xref> or <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita#GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A/GUID-52E3CE72-D495-388F-8829-952E32F0F37D"><apiname>RSqlStatement::Exec()</apiname></xref> operation has been completed the number of free pages in the database is checked against the free pages threshold. If the threshold is met then the database is marked as <i>dirty</i>. </p> </li> </ul> <p>Whenever the Symbian SQL server is idle (not processing a client request) runnable idle active objects are processed that cause free space to be reclaimed from the dirty databases: </p> <ul><li id="GUID-D82FD580-ECDA-5449-BC40-C016723D7510"><p> Each active object reclaims no more pages from its database than the single reclaim limit. This limit is a server-wide parameter specifying the maximum number of free pages that the server will attempt to reclaim in one step and should be small enough to ensure that the server can remain responsive to client requests. An appropriate default value is supplied by Symbian but device creators can override this in the server configuration file.  </p> </li> <li id="GUID-84319C82-076C-5EA8-AF5D-F6D907678254"><p>Following the reclaim action an active object will again set itself as ready to run if the number of free pages following the reclaim meets the free pages threshold. </p> </li> <li id="GUID-F10B583B-F098-542D-9D6F-0F8A63A08CD0"><p>The idle priority active objects for background compaction continues to be processed until either: </p> <ul><li id="GUID-21EE7484-817C-5EEF-80F1-0600440FD74A"><p>there is no more free space left to reclaim, </p> </li> <li id="GUID-AA4694AB-D403-5807-9CC9-3608F9E86246"><p>a higher priority active object becomes ready to run. </p> </li> </ul> </li> </ul> <p><b>Scheduling of background compaction</b> </p> <p>The server’s active scheduler maintains a priority queue for servicing the active objects. The scheduling algorithm is such that following the successful execution of any active object's <codeph>RunL()</codeph>, the scheduler will reset to the beginning of the queue. This has two implications: </p> <ul><li id="GUID-CF778079-5E0F-5D74-9A8A-5DB69E4B5B00"><p>There is an implicit priority scheme among the active objects for background compaction – a database opened earlier will always be given priority over one opened later due to its location in the queue. </p> </li> <li id="GUID-9EECC098-FC0A-5DB7-8A88-FB59C826582E"><p>Compaction of a later database in the queue cannot begin until an earlier database has been fully compacted. This is because the active scheduler resets to the beginning of the queue following every active object execution. </p> </li> </ul> <p>With this lack of <i>fair scheduling</i> it is advised that certain situations are avoided: </p> <ul><li id="GUID-EAE8BC01-15F8-5A8E-99A6-48F4AB73AD68"><p>Background compaction is not intended to be an antidote for critical disk space rescue scenarios – a fairer scheduling algorithm may help but the system would already be in severe difficulties by this stage. </p> </li> <li id="GUID-D17C590B-31E4-582E-A07B-AA411B123BA2"><p>The compaction operation itself requires free disk space and thus would be inoperable in critically low disk space situations. Thus a fairer scheduling algorithm would not help here. </p> </li> <li id="GUID-80E5F115-4602-5B56-AEAC-B4490992101F"><p>background compaction is not designed to work efficiently when the server load is such that idle periods do not occur in sufficient quantity. </p> </li> </ul> <p id="GUID-CE6F567F-7300-574A-A180-E42786DC04DB"><b>Synchronous compaction</b> </p> <p>compaction occurs at the end of the client request. A request is not completed until compaction has finished. This mode is equivalent to the compaction profile of previous versions of Symbian SQL. </p> <p id="GUID-F9D40D87-B383-5EF5-9959-2A344436477A"><b>Manual compaction</b> </p> <p>No automatic compaction occurs. This mode is intended for clients that wish to manage compaction directly. </p> <p>Clients wishing to exercise direct control over database compaction may select manual mode. The server performs no automated compaction in manual mode. </p> <p>Clients can request database compaction with <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-6F94DDD2-2586-3DEC-B5E6-B74C3A7E6DB5"><apiname>RSqlDatabase::Compact()</apiname></xref>. The client can specify a limit to the number of bytes to reclaim. Compaction can be performed as either a synchronous or an asynchronous operation. <codeph>Compact()</codeph> can be called on either a “manual” or a “background” database (it can also be called on a “synchronous” database although this will have no effect). </p> <p>The database file size and the amount of reclaimable free space in the database can be retrieved with <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-F45D9371-F212-3D62-877A-3C31C4F49CA0"><apiname>RSqlDatabase::Size()</apiname></xref>. This API supports clients wishing to trigger compaction based on either absolute free space or a proportion of free space in the database. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link><linktext/></link><link href="GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita"><linktext>Handling Blobs</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A658690F-8F46-56F7-8CF6-06757C550A9A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A658690F-8F46-56F7-8CF6-06757C550A9A"><title>pushln</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>pushln [ arg ... ] </userinput> </p> <p>Equivalent to <xref href="GUID-4911D998-5B1A-53E1-B1A7-920748489CD0.dita">print</xref> <codeph>-nz</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A668442E-0768-5AF1-829B-A80864756A0B"><title>bytepaircompresstarget</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>bytepaircompresstarget</codeph>  </p> <p>Use the <codeph>bytepaircompresstarget</codeph> statement to specify that the target executable should be compressed using the bytepair algorithm. </p> <p>Bytepair compression allows faster decompression than the default Deflate, Huffman+LZ77 algorithm and supports demand paging by performing compression and decompression of code in independent 4kbyte pages. </p> <p>See also <xref href="GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita">inflatecompresstarget</xref>. </p> <p>See also <xref href="GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita">compresstarget</xref>. </p> <p>See also <xref href="GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita">nocompresstarget</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A668C70B-1AFF-5D58-9527-8530E2472227.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A668C70B-1AFF-5D58-9527-8530E2472227" xml:lang="en"><title>Buffers
+And Strings Overview</title><shortdesc>This document provides an overview of buffers and strings.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-247120B1-68AD-4827-B7B3-AE9696BE7F8E"><title>Purpose</title> <p>Manipulates
+strings and general data buffers.</p> </section>
+<section id="GUID-775BAD91-2920-4027-9E47-C727847A45DD"><title>Description</title> <p>The
+central Symbian platform idiom for both strings and buffers is descriptors.
+Some APIs in this group, such as Literals, Lexical Analysis, and Package Buffers
+provide additional descriptor handling facilities. In some circumstances,
+applications may need to manage raw data buffers directly in memory. For this,
+the Dynamic Buffers and Raw Memory APIs are available.</p> <p><b>APIs</b> </p> <p>Use the APIs as follows:</p> <p><xref href="GUID-21C04887-9F9C-5066-AA1D-B30C433CC0AE.dita">Circular
+Buffers Overview</xref> </p> <p>Provides a fixed length first-in first-out
+queue of fixed size objects. </p> <p><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors
+Overview</xref> </p> <p>Manipulates string and data buffer.</p> <p><xref href="GUID-C15F56E3-753C-55CA-B3EF-63B2D139BCE4.dita">Dynamic
+Buffers Overview</xref> </p> <p>Manipulates data buffers of variable length.</p> <p><xref href="GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita">Lexical Analysis Overview</xref> </p> <p>Provides
+string analysis and string-to-number conversions.</p> <p><xref href="GUID-106B5A31-012E-503D-A972-A745ECADC1E7.dita">Literals
+Overview</xref> </p> <p>Provides simple creation of descriptors that contain
+read-only literal text.</p> <p><xref href="GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita">Package
+Buffers Overview</xref> </p> <p>Allows any value type (<codeph>T</codeph> class)
+to be encapsulated as a descriptor, for the purpose of inter-thread parameter
+passing.</p> <p><xref href="GUID-506642C2-A14F-55F2-9377-43DDB14F4053.dita">Raw
+Memory Overview</xref>  </p> <p>Performs simple manipulations of data in memory.</p> </section>
+<section id="GUID-0FA9F64E-BE2B-4BF0-9E20-24758DBD3660"><title>See also</title> <p><xref href="GUID-EA98D77C-743B-5BA5-B131-A327B12A099C.dita">Character Representation
+Of Real Numbers Overview</xref> </p> <p><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server
+Overview</xref> </p> <p><xref href="GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita">Doubly
+Linked Lists Overview</xref> </p> <p><xref href="GUID-54417A4F-710D-5257-BF49-13D9F28C92B9.dita">Memory
+Management Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A68D1F27-FE7E-503E-B5B6-7BD555B88558.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A68D1F27-FE7E-503E-B5B6-7BD555B88558" xml:lang="en"><title>Image Conversion Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A6A6BC5B-4988-45B4-863D-0E3733B77EA2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A6A6BC5B-4988-45B4-863D-0E3733B77EA2" xml:lang="en"><title>Getting
+an Equivalent Language List</title><abstract><p>You can use the <codeph>GetEquivalentLanguageList()</codeph> function
+to get the equivalent language list. The <codeph>GetEquivalentLanguageList()</codeph> returns
+an array (<codeph>TLanguagePath</codeph>) which contains the equivalent languages.
+If no equivalent language is found, <codeph>ELangNone</codeph> is returned.</p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<example><p>In this example, an application calls <codeph>BaflUtils::GetEquivalentLanguageList()</codeph> to
+get the equivalent languages for Cyprus Greek.   The <codeph>TLangugage</codeph> value
+for Cyprus Greek, <codeph>ELangCyprusGreek</codeph>, is passed to the <codeph>GetEquivalentLanguageList()</codeph> function
+as a given language.  </p><codeblock xml:space="preserve">TLanguagePath lp;
+BaflUtils::GetEquivalentLanguageList(ELangCyprusGreek, lp);</codeblock><p><b>Result</b>:
+According to the equivalent language list, three elements are returned: <codeph>ELangCyprusGreek </codeph>(Cyprus
+Greek), <codeph>ELangGreek</codeph> (Greek) and <codeph>ElangNone</codeph>. </p></example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A6B5CB55-9928-580E-AE62-6017211457B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A6B5CB55-9928-580E-AE62-6017211457B8"><title>history</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Same as <xref href="GUID-7E2891DB-372F-517C-95A4-D706EF1DB8B3.dita">fc</xref>  <codeph>-l</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A6CF0AD2-BDE4-548C-A165-581FCD019D7C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A6CF0AD2-BDE4-548C-A165-581FCD019D7C"><title>Wildcard Usage with Stub SIS files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A wildcard is a character that can be used as a substitute to define files that are similar, in the Stub SIS filename definitions. The <codeph>*</codeph> and <codeph>?</codeph> characters are used as wildcards. The wildcards enable device creators to define multiple files with a single definition. For example, device creators can use wildcards to specify all possible language variants in a single Stub SIS file. This prevents upgrade failures on a Symbian device due to mismatch of Stub SIS file in the ROM. </p> <p>The following example illustrates the usage of wildcards. </p> <codeblock id="GUID-697AE203-144E-5B4A-8401-637A035DACA6" xml:space="preserve">""-"z:\resource\apps\HelloWorld.r*</codeblock> <p>The definition in the preceding example results in eclipsing all language variants of the application resource files. </p> <p> <b>Note</b>: Do not use wildcards to specify the executables (<filepath>.exe</filepath>) in the ROM Stub SIS file. </p> </conbody><related-links><link href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita"><linktext>Upgrading OS Components</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e338995_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e367032_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e163209_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A721FC4A-03C6-59F7-A0D2-565C4828E5E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A721FC4A-03C6-59F7-A0D2-565C4828E5E1"><title>Camera Stub Plug-in Library Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Camera Stub Plug-in library overview. </p> <section><title>Purpose</title> <p>The purpose of this document is to provides a detailed description about the Camera Stub Plug-in implementation. </p> </section> <section><title>Camera Stub Plug-in library details</title> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-F04D49F6-7EDD-5FF3-B3F4-379266D7F4DB"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-5B53C229-F86B-32EA-9185-290EB508942A.dita"><apiname>EcamStubPlugin.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-75314782-EFB5-3BBA-82CF-D40A986631CD.dita"><apiname>ECamStubPlugin.h</apiname></xref>  </p> <p> <xref href="GUID-36E234FB-4049-3601-92B6-ACC451A3A983.dita"><apiname>ecom/ecom.h</apiname></xref>  </p> <p> <xref href="GUID-78112462-7106-3990-8ADE-2F5378A65922.dita"><apiname>ecom/implementationproxy.h</apiname></xref>  </p> <p> <xref href="GUID-2C80914C-987C-3208-9FA5-FD9D29FD3D8E.dita"><apiname>ecamuids.hr</apiname></xref>  </p> </entry> <entry><p>These files are used to implement the Camera Stub Plug-in functionalities. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architecture</title> <p>The Symbian platform no longer supports re-implementation of ECam component. Device creators who re-implement ECam should complete their migration to the ECam plug-in framework. Device creators already using the ECam plug-in framework are unaffected. Clients of the interfaces are also unaffected. </p> </section> <section><title>Description</title> <p>Symbian introduced the plug-in support for ECam from v9.1 onwards. Before that, device creators were supposed to re-implement ecam.cpp, which was effectively reference code. </p> <p>Device creators who re-implement ECam should use the Symbian-provided implementations. These implementations are available through the affected cpp files. In particular, to complete migration to the ECam plug-in framework, device creators should derive their class from <xref href="GUID-A738B809-754B-3090-9209-0880687F173C.dita"><apiname>CCameraPlugin</apiname></xref> instead of <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref>. A resource file also needs to be created so that the specific plug-in gets chosen. Device creators will have to link against <codeph>ecampluginsupport</codeph>. </p> <p> <codeph>ECamStubplugin</codeph> is example code that helps in understanding the steps needed to migrate to the plug-in framework, and the API design is described in the ECam Design Onboard Camera API document. </p> </section> <section><title>APIs</title> <p>The key classes that make up the Camera Plug-in API is <xref href="GUID-A738B809-754B-3090-9209-0880687F173C.dita"><apiname>CCameraPlugin</apiname></xref>. </p> </section> <section><title>Using Camera Stub Plug-in</title> <p>The Camera Stub Plug-in is used to facilitate the creation of a new Camera Plug-ins component. </p> <p>The following test code is used as an example to create a new Camera Plug-ins component: </p> <codeblock id="GUID-93E2D806-8A6B-5498-BE38-E5C27168F6BB" xml:space="preserve">// 10207084.RSS
+//
+
+#include “Ecom\RegistryInfo.rh”
+#include “EcamUids.hrh”
+
+RESOURCE REGISTRY_INFO theInfo
+    {
+    dll_uid = KuidOnboardCameraTestDll;
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            interface_uid = KuidOnboardCameraPlugin;
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = KuidOnboardCameraTestPlugin;
+                    version_no = 2;
+                    display_name =”Ecam Test Plug-in”;
+                    opaque_data = “0;”;
+                    default_data=”*”;
+                    }
+                };
+            },
+        INTERFACE_INFO
+            {
+            interface_uid = KuidOnboardCameraInfoPlugin;
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = KuidOnboardCameraTestInfo;
+                    version_no = 2;
+                    display_name = “Ecam Test InfoPlugin”;
+                    opaque_data = “0;”;
+                    default_data=”*”;
+                    }
+                };
+            }
+        };
+    }</codeblock> </section> </conbody><related-links><link href="GUID-F25862A3-51E5-581A-9CC9-964791781E69.dita"><linktext>Camera Plug-in Support
+                Overview</linktext> </link> <link href="GUID-93D08C5F-D864-59E3-963D-D836EBE88B4D.dita"><linktext>Camera Plug-in Support Tutorial</linktext> </link> <link href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita"><linktext>Camera
+                Component Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A748041F-5925-54F8-AA21-C1CE8E0473AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-A748041F-5925-54F8-AA21-C1CE8E0473AA"><title>Playing a Tone </title><shortdesc>This tutorial introduces you to play a single tone. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context id="GUID-57A12D2A-A008-587A-A2B0-FFC53146638D"><p>You have to configure DevSound in order to play a tone. The following settings can be configured before or during tone play: </p> <ul><li id="GUID-1FE5CE6D-2F97-502E-852A-593636201148"><p>To set the number of times a tone is to be repeated during playback use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-080489F4-4182-326D-816C-900E8DE6E384"><apiname>CMMFDevSound::SetToneRepeats(TInt,const
+                TTimeIntervalMicroSeconds &amp;)</apiname></xref> method. </p> </li> <li id="GUID-30873992-AA8A-5F7A-B787-BBA44F6E0580"><p>To change the volume of the audio device to a specific value, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-3E55CE57-AACB-3CCF-ABD8-FB50A02FC155"><apiname>CMMFDevSound::SetVolume(TInt)</apiname></xref> function. The volume can be set to any value from 0 to <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1BFCB3CB-17C7-399B-9089-3ADFF43044BA"><apiname>CMMFDevSound::MaxVolume()</apiname></xref>. </p> <p>To define a period over which the volume rises from 0 to the normal volume level, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-8CC8138A-9FD5-3879-81EC-26DADBAF9BD8"><apiname>CMMFDevSound::SetVolumeRamp(const
+                TTimeIntervalMicroSeconds &amp;)</apiname></xref> function. </p> <p> <b>Note:</b> The <codeph>CMMFDevSound::SetVolumeRamp()</codeph> function is only available during tone play. </p> </li> <li id="GUID-4E4CBDD6-33B4-57FB-AA3A-BD5D1847FAD8"><p>To set the speaker balance, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AF5037CC-D04C-312F-B821-9DF46D5DBBDE"><apiname>CMMFDevSound::SetPlayBalanceL(TInt,TInt)</apiname></xref> function. </p> </li> <li id="GUID-112F1BC7-7D12-539C-BA9A-2A5B889DDD3E"><p>To set the priority setting for this instance of DevSound to access the audio device, use the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-1B3B1694-EED8-3B33-B424-C48DDAFBE75A"><apiname>CMMFDevSound::SetPrioritySettings()</apiname></xref> method. Priority settings are used by the Audio Policy component to resolve multiple requests to access the audio hardware. </p> </li> </ul> </context> <steps-unordered id="GUID-5401CF97-E5A0-5AC7-9BCD-8733CC69C9CA"><step id="GUID-03077308-77F3-5A4C-B3BA-664BFDB0EEF1"><cmd>Call <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0849016F-D457-3521-A53A-85023D8561B8"><apiname>CMMFDevSound::PlayToneL(TInt,const
+                TTimeIntervalMicroSeconds &amp;)</apiname></xref> to start playing a tone. </cmd> <info>When an attempt to play a tone has completed, successfully or otherwise, DevSound calls the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-F89960BE-A51C-3148-AF19-58303BF5250F"><apiname>MDevSoundObserver::ToneFinished()</apiname></xref> function. </info> <info> Note: Further calls to <codeph>CMMFDevSound::PlayToneL()</codeph> can be made both before and after the <codeph>MDevSoundObserver::ToneFinished()</codeph> call back is received. If subsequent calls are made to <codeph>CMMFDevSound::PlayToneL()</codeph>, only one <codeph>MDevSoundObserver::ToneFinished()</codeph> call back is received. </info> </step> </steps-unordered> <result id="GUID-E5AFA3FF-EC73-58F9-A49F-4721CAD8BD3B"><p>The result of this tutorial is you can play a single tone successfully. </p> </result> <postreq id="GUID-076D021D-12F2-5521-AE1F-F70C5E91062A"><p>When you want to play two tones simultaneously, the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D2C197B2-BB55-3B46-8F4D-FEDEE846B166"><apiname>CMMFDevSound::PlayDualToneL(TInt,TInt,const TTimeIntervalMicroSeconds
+          &amp;)</apiname></xref> function is called instead of <codeph>PlayToneL()</codeph>. <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-AD5A51B8-9A32-39CE-92DE-59D75FD848B3"><apiname>CMMFDevSound::PlayDualToneL</apiname></xref> has an extra parameter, <codeph>aFrequencyTwo</codeph>, to specify the frequency at which the second tone is to be played. </p> </postreq> </taskbody><related-links><link href="GUID-12A754EE-7D90-56C8-BDA7-3293F34BE456.dita"><linktext>Playing a Tone
+                Sequence</linktext> </link> <link href="GUID-93EF4862-2395-5ED7-8446-A7FDA60535B1.dita"><linktext>Playing a Fixed Tone
+                Sequence</linktext> </link> <link href="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita"><linktext>Pausing and
+                Resuming a Tone</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A7498DE3-E9A1-5921-9867-4254685CAC18.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A7498DE3-E9A1-5921-9867-4254685CAC18" xml:lang="en"><title>Recording Audio</title><shortdesc>This section introduces how to record audio using various functionality:</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A7884A6F-384E-5A52-B2F4-C2FA1B3BAC29.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A7884A6F-384E-5A52-B2F4-C2FA1B3BAC29" xml:lang="en"><title>Message
+Window Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-AAE226F2-67D8-4907-9F7E-4F2C64577A7C"><title>Purpose</title> <p>Provides a window that displays a message
+to the user and then disappears. </p> </section>
+<section id="GUID-5548707A-49A2-4CFD-BA1F-0359A2CF3715"><title>Architectural relationships</title> <p>The animation of the
+window is performed by an animation DLL that plugs-in to the Window Server.
+The message window class is a client-side animation class, derived from the
+animation client-side class <xref href="GUID-4180CDBA-E9A5-3A4B-9778-26D172FAFD10.dita"><apiname>RAnim</apiname></xref>. </p> <p>The API is used
+by such higher-level APIs and device-family specific UIs to provide
+information and message windows. Such APIs would normally be used by client
+applications, but this API can be used to implement specialist new types of
+message window. </p> </section>
+<section id="GUID-E8AA90C9-09FF-483B-AEDA-89A055C9B090"><title>Description</title> <p>A message window is provided by <xref href="GUID-D48FA7A3-09E5-3EF5-90CC-325680071EEA.dita"><apiname>RMessageWindow</apiname></xref>.
+The window's font and colors for background, text, border and plinth can be
+configured. </p> </section>
+<section id="GUID-911756E1-E9E6-4960-B463-B055694C3BEC"><title>See also</title> <ul>
+<li><p><xref href="GUID-3D577CFE-A6C7-5C4C-A9AA-9382A062A3BE.dita">Animation</xref></p></li>
+<li><p><xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Window server</xref></p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A7D95E53-67DA-54C7-B093-995CA9CC39B5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A7D95E53-67DA-54C7-B093-995CA9CC39B5" xml:lang="en"><title>How to
+represent general binary data</title><shortdesc>Construct an 8 bit variant descriptor to represent general binary
+data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The kind of data represented or contained by descriptors is not restricted
+to text. Descriptors can also handle general binary data.</p>
+<p>Binary data should always be treated as 8 bit data regardless of the build.</p>
+<p>For example, starting with an area in memory initialised with binary data
+as follows:</p>
+<codeblock id="GUID-2541B451-E008-5AD7-A8F7-4A19B76AB2A2" xml:space="preserve">TUint8 data[6] = {0x00,0x01,0x02,0xAD,0xAE,0xAF};</codeblock>
+<p>construct a modifiable buffer descriptor using the default constructor
+as follows:</p>
+<codeblock id="GUID-DDAF1F08-29EC-572F-83B0-0A4437EF1DB9" xml:space="preserve">TBuf8&lt;32&gt; buffer;</codeblock>
+<p>The following code fragment puts the binary data into the descriptor and
+appends a number of single byte values. The length of the buffer is 9, the
+maximum length is 32 and the size is 9 regardless of the build.</p>
+<codeblock id="GUID-B9AB3D57-1EFB-5A10-882E-E29301FF8759" xml:space="preserve">TInt index;
+TInt counter;</codeblock>
+<p>Text and general binary data can be freely mixed and the following code
+is acceptable:</p>
+<codeblock id="GUID-2D7B1A85-82F6-5B67-8A49-5E79745602A3" xml:space="preserve">buffer.Append('A');
+buffer.Append('B');
+buffer.Append(0x11);</codeblock>
+<p>Note that fixed length C++ arrays such as <codeph>data</codeph> above can
+be packaged inside a thin wrapper class, a <codeph>TFixedArray&lt;class T,TInt
+S&gt;</codeph> type, to guarantee that all array accesses are safe.</p>
+<section id="GUID-A0922DAD-0D96-4758-8ABA-4C33DC6FE01B"><title>See also</title> <p><xref href="GUID-E41C4E77-C48B-548E-A2F5-14FA5CC68982.dita">Using
+wrappers</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A7DFDC4F-56C2-46B3-8B76-A6488BE4ABE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A7DFDC4F-56C2-46B3-8B76-A6488BE4ABE0" xml:lang="en"><title>Get
+a converter</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>To obtain a suitable converter, complete the following
+steps:</p><ol>
+<li id="GUID-C976E9F3-245D-4502-89FB-175AE749FD59"><p>Create a <codeph>CCnaConverterList</codeph> object and use it to get
+the UID of the converter that convert from a particular data type to another.</p></li>
+<li id="GUID-509D3420-2060-4865-8269-934B273643F5"><p>Create the converter (a <codeph>CConverterBase2</codeph>-based object)
+using <codeph>CCnaConverterList::NewConverterL()</codeph>. The converter architecture
+loads the converter DLL and instantiates the converter object from it. </p></li>
+<li id="GUID-08E51DD7-BB74-4E8A-BE2F-C1D203B10C52"><p>Check whether the converter supports file or stream conversion using <codeph>CConverterBase2::Capabilities()</codeph>.</p></li>
+</ol><p>The following code snippet creates a converter that can convert files
+of data type <b>text/abc</b> to type <b>text/xyz</b>.</p><codeblock xml:space="preserve">_LIT( KFromType, "text/abc" );
+_LIT( KToType, "text/xyz" );
+CCnaConverterList* list = CCnaConverterList::NewLC();
+TUid uid = list-&gt;ConverterL( TDataType( KFromType ), TDataType( KToType ) );
+CConverterBase* converter = list-&gt;NewConverterL( uid );
+User::LeaveIfNull( converter );
+if( !( converter-&gt;Capabilities() &amp; CConverterBase::EConvertsFiles ) )
+    {
+    delete converter;
+    converter = NULL;
+    }
+CleanupStack::PushL( converter );
+...
+CleanupStack::PopAndDestroy( 2 ); // list, converter</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A7E39E45-02BA-58F4-8807-EFABB8F6E5D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A7E39E45-02BA-58F4-8807-EFABB8F6E5D0" xml:lang="en"><title>Processing
+pen events</title><shortdesc>This topic describes various events processed by Pen or Mouse.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-FB1CCFC8-F70A-4D6E-BF27-3652413359AE"><title>Simple drag
+events</title> <p>In order for the FEP control to receive drag events occurring
+in its window, all that is needed is to call <codeph>EnableDragEvents()</codeph> in
+the control’s construction routine. Having done that, the control will receive
+drag events as calls to its <codeph>HandlePointerEventL()</codeph> virtual
+function. The <codeph>iType</codeph> member of <codeph>HandlePointerEventL()</codeph> ’s <codeph>aPointerEvent</codeph> parameter
+is set to <codeph>TPointerEvent::EDrag</codeph> for drag events. </p> <p>This
+method makes heavy use of IPC (inter-process communication) as the user drags
+the mouse/pen around the FEP control’s window, which means that the FEP does
+not get drag events at optimum frequency. This may be problematic for something
+like handwriting recognition software. If there is a requirement to follow
+the path traced by the mouse/pen as closely as possible, another method can
+be used, namely buffered drag events. </p> </section>
+<section id="GUID-739BD481-1EAF-42B3-B0F0-8C50D01CE488"><title>Buffered drag
+events</title> <p>The advantage of buffered drag events over simple drag events
+is that the window server client can receive multiple mouse/pen positions
+in a single event, which reduces the IPC overhead. To enable this, the following
+code needs to be called in the FEP control’s construction routine: </p> <codeblock id="GUID-3247B04E-05FD-534E-8F8D-C15DE2FEA33C" xml:space="preserve">User::LeaveIfError(DrawableWindow()-&gt;AllocPointerMoveBuffer(ENumberOfPointsInBuffer, 0));</codeblock> <p>This assumes that <codeph>ENumberOfPointsInBuffer</codeph> has been defined
+elsewhere; TFEP2Plugin sets this constant to 32. The control
+then receives drag events as calls to its <codeph>HandlePointerBufferReadyL()</codeph> virtual
+function, rather than as calls to <codeph>HandlePointerEventL()</codeph>.
+To retrieve these drag events, include the following code at the start of
+the FEP control’s <codeph>HandlePointerBufferReadyL()</codeph> function: </p> <codeblock id="GUID-18B4F1EB-7090-5C6C-9EB4-98F6CF37FA88" xml:space="preserve">TPoint arrayOfPoints[ENumberOfPointsInBuffer];
+TPtr8 bufferOfPoints(REINTERPRET_CAST(TUint8*, arrayOfPoints), 0, ENumberOfPointsInBuffer*sizeof(TPoint));
+User::LeaveIfError(DrawableWindow()-&gt;RetrievePointerMoveBuffer(bufferOfPoints));
+const TInt numberOfPointsInBuffer=bufferOfPoints.Length()/sizeof(TPoint);</codeblock> <p>Having
+done that, <codeph>numberOfPointsInBuffer</codeph> of <codeph>arrayOfPoints</codeph> can
+be used for whatever purpose the FEP requires, for example handwriting recognition.
+Note that <codeph>AllocPointerMoveBuffer()</codeph> ’s counterpart <codeph>FreePointerMoveBuffer()</codeph> does
+not need to be called in the FEP control’s destructor as this happens automatically
+when the control’s window is destroyed. </p></section>
+<section id="GUID-9E66280C-65AE-4AB1-9F00-65FBE6CF218D"><title>Intercepting
+pen events anywhere on the screen</title> <p>In order to intercept mouse/pen
+events anywhere on the screen it is necessary to write a plugin into the window
+server (WSERV). This is in addition to the FEP plugin which plugs into the
+FEP architecture. TFEP2plugin provides a working example of this (TFEP2be).
+The details of how to write a window server plugin DLL are beyond the scope
+of this document because the APIs involved belong to the window server. See <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref> and <codeph>CAnimDll</codeph> in
+the SDK for information on this. The way mouse/pen events can be intercepted
+is by returning <codeph>ETrue</codeph> from the function overriding <codeph>MEventHandler::OfferRawEvent()</codeph> (<xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref> derives
+from <xref href="GUID-F1B47E38-4585-3903-93C7-0BCB075465AA.dita"><apiname>MEventHandler</apiname></xref>). Events which are handled in this way
+will not be sent to the relevant window server client, in other words, the
+client who would otherwise have received this event. </p> <p>The sprite feature
+of the window server (<xref href="GUID-75C09150-E93B-323D-AFBF-E42C7BD78229.dita"><apiname>RWsSprite</apiname></xref>, defined in <filepath>epoc32\include\W32STD.H</filepath>)
+can be used to display to the user the path on the screen being traced out
+by their mouse/pen movements. However, care should be taken when using sprites
+for this purpose. Sprites use bitmaps, which in this context would need to
+be the size of the screen. Because each running application has its own FEP,
+which would have its own sprite, which in turn would have its own screen-sized
+bitmap, it becomes apparent that some optimization must be done to avoid huge
+amounts of memory being consumed. TFEP2Plugin solves this problem by using
+a single bitmap shared between each sprite. It uses the 4 byte thread-local
+storage of the window server plugin DLL to store the identifier of this bitmap.
+The code which constructs the sprite is protected by a mutex (<xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex</apiname></xref>,
+defined in <filepath>epoc32\include\E32STD.H</filepath>) as it tests to see
+if the bitmap to be used by the sprite has already been created by a FEP running
+the same code in another thread. If it has then it merely calls <codeph>CFbsBitmap::Duplicate()</codeph> which
+simply increments the existing bitmap’s reference count, thus only one large
+bitmap is created rather than one per running application. </p> <p>Intercepting
+mouse/pen events anywhere on the screen is likely to be most useful to handwriting-interpreting
+FEPs. Given that using this feature involves two polymorphic DLLs (plugging
+into different frameworks) running in two separate threads in separate processes,
+there is a choice regarding where the bulk of the FEP’s processing is done.
+The advantage of the processing being done outside of the window server process
+(in other words, in the FEP architecture plugin) is that bugs in the processing
+code (for instance crashing or hanging) do not affect the whole machine. The
+advantage of the processing being done inside the window server process (in
+other words, in the window server plugin) is that the long lists of screen
+positions (tracing out the path of where the user has dragged the mouse/pen)
+do not need to be communicated between processes. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A80ED7B2-4A58-570A-A671-4F4B1BB9FDAF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A80ED7B2-4A58-570A-A671-4F4B1BB9FDAF" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the concepts that Symbian OS uses in its implementation of sockets. The section includes a description of the architecture and the Sockets Server API. </p> <p> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8" xml:lang="en"><title>Writing
+a UPS Dialog Creator</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Dialog creators are EComplug-ins that
+device creators can write to generate the dialogs containing prompts for phone
+users. </p> <p>The plug-in has an API that consists of two asynchronous functions: </p> <ul>
+<li id="GUID-96CBCE79-4F5D-5F87-AC6B-C366346447AB"><p>The <codeph>PrepareDialog()</codeph> function.
+This function is called first by the UPS server. It enables the dialog creator
+to query other system servers such as AppArc or the SIS registry to retrieve
+additional information to display in the dialog. For example it might query
+the SIS registry using the client application’s secure id. </p> </li>
+<li id="GUID-A439E217-B95B-5B68-8893-BDBD61D694D1"><p>The <codeph>DisplayDialog()</codeph> function.
+This function is called second by the UPS server. It displays the prompt,
+most commonly through the notification framework. This function also returns
+the option selected by the user and, if applicable, the fingerprint for a
+new decision record. </p> </li>
+</ul> <p>The UPS displays only one prompt at a time so it is possible for
+there to be a delay between calling the function to prepare the dialog and
+the function to display the dialog. It is also possible for other dialogs
+to be displayed between the dialog being prepared and its being displayed. </p> <p>Both <codeph>PrepareDialog()</codeph> and <codeph>DisplayDialog()</codeph> are asynchronous and must support cancellation through <codeph>CActive::Cancel</codeph>.
+If either function is cancelled, the dialog creator instance is destroyed
+without calling further methods. </p> <p>The work split between <codeph>PrepareDialog()</codeph> and <codeph>DisplayDialog()</codeph> described
+above is a recommendation, and some of the functionality could be implemented
+directly in the notifier implementation. </p> <p>In the example given in this
+document, the functionality for dialogs is implemented separately from the
+functionality for policy evaluators. This allows multiple policy evaluators
+to share common UI code. However, it is possible to deliver policy evaluator
+and dialog creator plug-ins in the same DLL. </p> </section>
+<section><title>Procedure</title> <p>Dialog creators implement the <codeph>CDialogCreator</codeph> interface.
+This section shows how to implement the functions that prepare and display
+the user prompt. </p> <ol id="GUID-0F29F8B7-F303-5D42-BB95-A32B1FE13A9A">
+<li id="GUID-9FDDAD1F-4B9A-516A-8A00-0C331F38C4CA"><p>Prepare a dialog using
+the <xref href="GUID-2308E2F4-A878-3B0A-951B-EFC4908AD9BB.dita"><apiname>PrepareDialog()</apiname></xref> function. </p> </li>
+<li id="GUID-45C16A52-A05E-545A-AB3A-967CCA35BB15"><p>Display the dialog using
+the <xref href="GUID-E6C3B0F0-43A7-3656-946B-5CFE97DCFC80.dita"><apiname>DisplayDialog()</apiname></xref> function. </p> </li>
+</ol> <p>The Dialog Creator plug-in creates a dialog prompt in cases where
+no previous decision is found in the decision database. </p> <p><b> Preparing
+the dialog</b> </p> <p>The parameters to <codeph>PrepareDialog()</codeph> are
+mostly <codeph>const</codeph> pointers and references to the data that has
+already been generated by the UPS or policy evaluator. </p> <p>The following
+table describes the parameters for the <codeph>PrepareDialog()</codeph> function: </p> <table id="GUID-6D139216-B6A8-55A1-8D9B-C15134198198">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Parameter</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>aRequest</codeph>  </p> </entry>
+<entry><p>Data that the system server provides to the UPS, including the ClientSid,
+ServerSid and ServiceId. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aPolicy</codeph>  </p> </entry>
+<entry><p>Details of the policy for the service. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aFingerprints</codeph>  </p> </entry>
+<entry><p>A pointer to the fingerprints array generated by the policy evaluator.
+(If the user selects "Always" or “Never”, the dialog creator returns a pointer
+to an existing fingerprint object instead of re-generating the fingerprint.) </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aClientEntity</codeph>  </p> </entry>
+<entry><p>Details of client entity (will be null if the client process is
+not an execution host or the policy evaluator does not support client entities). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aEvalPrivateData</codeph>  </p> </entry>
+<entry><p>Opaque data, which can be any other information for use in the fingerprint
+or to be displayed in the dialog. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>aStatus</codeph>  </p> </entry>
+<entry><p>The request status used to contain completion information for the
+function. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><note/> The UPS does not allow any responses to be returned
+to the system server except those defined in the UPS policy file. If the dialog
+creator returns an option that was not specified in the policy, the request
+is rejected and <codeph>EUpsDecNo</codeph> is returned. </p><p>Your implementation
+can assume that the pointers remain valid until after <codeph>DisplayDialog()</codeph> has
+been called. </p><p>The <codeph>PrepareDialog()</codeph> function sets values. </p><p>The<codeph> DoPrepareDialogL()</codeph> function
+prepares the data for the prompt. The DoPrepareDialogL() function is called
+through a switch statement, which can be seen in the full code sample at the
+end of this. </p> <p><b>Displaying the dialog </b> </p> <p>The <codeph>DisplayDialog()</codeph> function
+displays the dialog created by <codeph>PrepareDialog()</codeph>. On completion,
+it sets the option selected by the user and the fingerprint value if “Always”
+or “Never” was selected. Usually, dialogs are displayed using the notifier
+framework, but device creators are free to use other mechanisms. </p> <p>On
+completion <codeph>iOptionSelected</codeph> must be set to the option selected
+by the user: Yes, No, Session, Always or Never. </p> <ul>
+<li id="GUID-C657A459-6ED4-59EF-9A8A-C9FE41AF2DD0"><p>If the user selects
+“Always” or “Never”, <codeph>iFingerprint</codeph> must be set to point to
+the fingerprint to use for the new decision record. Usually, this would just
+point to one of the fingerprints passed to <codeph>PrepareDialog()</codeph>,
+but generating a new fingerprint is also permitted. </p> </li>
+<li id="GUID-0E2690AB-B44B-5C8B-9365-E09BC3031398"><p>If the decision record
+already exists and <codeph>DisplayDialog()</codeph> modifies the value of <codeph>aEvaluatorInfo</codeph>,
+the record is updated with the new value. </p> </li>
+</ul> <p>In the example at the end of this section, the <codeph>DisplayDialog()</codeph> function
+sets values. The <codeph>DoDisplayDialogL()</codeph> function calls the notifier
+framework to display the dialogs. The <codeph>DoDisplayDialogL()</codeph> function
+is called through a <codeph>switch</codeph> statement, which can be seen in
+the full code sample at the end of this section: </p> </section>
+<section><title>Example</title> <p>The following code shows an example of
+a full implementation of the dialog creator file: </p> <codeblock id="GUID-314673F2-BBA0-56C0-A76D-07862BB4592F" xml:space="preserve">// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+
+// refdialogcreator.cpp
+
+
+#include "refdialogcreator.h"
+#include &lt;ecom/implementationproxy.h&gt;
+#include &lt;apaid.h&gt;
+#include &lt;apgcli.h&gt;
+#include &lt;ups/promptrequest.h&gt;
+#include &lt;swi/sisregistrypackage.h&gt;
+#include &lt;swi/sisregistrysession.h&gt;
+#include &lt;scs/nullstream.h&gt;
+#include &lt;s32mem.h&gt;
+
+static const TUint KRefDialogCreatorImplementationId = 0x10283694;
+
+static const TUint KRefNotifierImplementationId = 0x1028369B;
+
+CDialogCreator* CRefDialogCreator::CreateDialogCreatorL()
+/**
+Factory method that instantiates a new dialog creator EComplug-in.
+
+@return A pointer to the new reference dialog creator object.
+*/
+    {
+    CRefDialogCreator* self = new (ELeave)CRefDialogCreator();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+static const TImplementationProxy ImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY(KRefDialogCreatorImplementationId, CRefDialogCreator::CreateDialogCreatorL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+/**
+Standard EComfactory
+*/
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }    
+    
+
+CRefDialogCreator::CRefDialogCreator() 
+/**
+Constructor
+*/
+    : CDialogCreator(), iPromptResult(), iPromptResultPckg(iPromptResult), iState(EIdle)
+    {
+    CActiveScheduler::Add(this);    
+    }
+    
+CRefDialogCreator::~CRefDialogCreator()
+/**
+Destructor
+*/
+    {
+    Deque();
+    delete iPromptData;
+    iPromptDataDes.Close();
+    iNotifier.Close();
+    }
+
+void CRefDialogCreator::ConstructL()
+/**
+Second phase constructor
+*/
+    {
+    User::LeaveIfError(iNotifier.Connect());
+    }
+
+void CRefDialogCreator::DoCancel()
+    {
+    if (iState == EProcessResult)
+        {
+        iNotifier.CancelNotifier(TUid::Uid(KRefNotifierImplementationId));
+        }
+    if (iClientStatus)
+        {
+        User::RequestComplete(iClientStatus, KErrCancel);
+        }
+    }
+    
+TInt CRefDialogCreator::RunError(TInt aError)
+    {
+    if (iClientStatus)
+        {
+        User::RequestComplete(iClientStatus, aError);
+        }
+    return KErrNone;
+    }
+
+void CRefDialogCreator::RunL()
+    {
+    User::LeaveIfError(iStatus.Int());
+    switch (iState)
+        {
+        case EPrepareDialog:
+            DoPrepareDialogL();
+            break;
+        case EDisplayDialog:
+            DoDisplayDialogL();
+            break;
+        case EProcessResult:
+            DoProcessResultL();
+            break;
+        default:
+            ASSERT(EFalse);            
+        }
+    }
+    
+void CRefDialogCreator::DoPrepareDialogL()
+    {
+    iPromptData = CPromptData::NewL();
+    
+    // Only one state at the moment but more should be
+    // added for long running operators e.g. querying the SIS registry
+    // or resolving the client entity.
+    ResolveClientNameL(iRequest-&gt;ClientSid());
+    
+    // Get the vendor name for the client process
+    ResolveVendorNameL(iRequest-&gt;ClientVid());
+    
+    // Server / Service localized names generated in notifier plug-in. 
+    iPromptData-&gt;iServerSid = iRequest-&gt;ServerSid();
+    iPromptData-&gt;iServiceId = iRequest-&gt;ServiceId();
+    
+    // Different dialog text is displayed depending on whether the client application
+    // is signed.
+    // N.B. Protected SID is assumed to be signed or included at ROM build.
+    if (iRequest-&gt;IsClientSidProtected()) iPromptData-&gt;iFlags |= ETrustedClient;
+    
+    // Use the options specified by the policy
+    iPromptData-&gt;iOptions = iPolicy-&gt;Options();
+    
+    // Add the descriptions of the fingerprints. This could be used
+    // to allow the user to grant access to all destinations 
+    // or a single destination.
+    TInt count = iFingerprints-&gt;Count();
+    for (TInt i = 0; i &lt; count; ++i)
+        {
+        HBufC* description = (*iFingerprints)[i]-&gt;Description().AllocLC();
+        iPromptData-&gt;iDescriptions.AppendL(description);
+        CleanupStack::Pop(description);
+        }
+    
+    User::RequestComplete(iClientStatus, KErrNone);
+    // DisplayDialog is invoked by the UPS, this just verifies 
+    // that PrepareDialog was called first.
+    iState = EDisplayDialog;
+    }
+    
+void CRefDialogCreator::DoDisplayDialogL()
+/**
+Uses the notifier framework to display the dialog.
+*/
+    {
+    // Externalize the prompt data to a descriptor
+    RNullWriteStream ns;
+    ns &lt;&lt; *iPromptData;
+    ns.CommitL();
+    iPromptDataDes.CreateL(ns.BytesWritten());
+    RDesWriteStream ws;    
+    ws.Open(iPromptDataDes);
+    ws &lt;&lt; *iPromptData;
+    ws.CommitL();    
+    iNotifier.StartNotifierAndGetResponse(iStatus, TUid::Uid(KRefNotifierImplementationId),
+        iPromptDataDes, iPromptResultPckg);
+    SetActive();
+    iState = EProcessResult;
+    }
+    
+void CRefDialogCreator::DoProcessResultL()
+/**
+Processes the result returned by the notifier.
+*/
+    {
+    if (iPromptResult.iSelected == CPolicy::EAlways ||
+        iPromptResult.iSelected == CPolicy::ENever)
+        {
+        // The Always or Never option was selected so return the fingerprint 
+        // for the new decision record.
+        // 
+        // In this implementation a copy of the original fingerprint is returned. However,
+        // it is permitted to return a different fingerprint e.g. a modifier description.        
+        if (iPromptResult.iDestination &gt;= 0 &amp;&amp; iPromptResult.iDestination &lt; iFingerprints-&gt;Count())        
+            {
+            *iFingerprint = (*iFingerprints)[iPromptResult.iDestination];
+            }
+        else
+            {
+            ASSERT(EFalse);    // should never happen, unless the notifier has errors.
+            }
+        }            
+    *iOptionSelected =    iPromptResult.iSelected;
+    iState = EIdle;
+    User::RequestComplete(iClientStatus, KErrNone);        
+    }
+
+void CRefDialogCreator::ResolveVendorNameL(const TVendorId&amp; aVid)
+/**
+Looks up the localized vendor name for the client process and writes
+this to iPromptData-&gt;iVendorName.
+
+Typically, this would be resolved from the SIS registry or a lookup table.
+
+@param aVid    The vendor id of the client process.
+*/
+    {
+    if (iPromptData-&gt;iVendorName.Length() != 0)
+        {
+        // already obtained vendor name from SIS registry
+        return;
+        }
+        
+    if (aVid.iId == 0x70000001)
+        {
+        _LIT(KSymbian, "Symbian Foundation");
+        iPromptData-&gt;iVendorName.Create(KSymbian);
+        }
+    else 
+        {
+        _LIT(KUnknown, "Unknown vendor");
+        iPromptData-&gt;iVendorName.Create(KUnknown);
+        }
+    }
+    
+void CRefDialogCreator::ResolveClientNameL(const TSecureId&amp; aSid)
+/**
+Generates a human readable name for the client process. In order of 
+preference the following data is returned
+
+- The AppArc caption name.
+- The localized package name that owns this SID.
+- A value from a lookup table.
+- The filename for the client process executable.
+
+@param aSid    The secure id of the client process.
+*/
+    {
+    TBool found = EFalse;
+    
+    // Although the client name from AppArc takes precedance the SIS
+    // registry is always invoked in order to retrieve the vendor name
+    found |= ResolveClientNameFromSisRegistryL(aSid);
+    found |= ResolveClientNameFromAppArcL(aSid);
+            
+    // A lookup that maps secure-ids to application names could
+    // be used here.
+
+    // Fall back to the filename of the client process
+    // The original thread may have exited so the process handle is used instead.
+    // because the client-side object e.g. RSocket may be shared between threads.
+
+    // If the process has exited then it's o.k. to leave.
+    if (! found)
+        {            
+        RProcess clientProcess;
+        User::LeaveIfError(clientProcess.Open(iRequest-&gt;ClientProcessId()));
+        CleanupClosePushL(clientProcess);
+        iPromptData-&gt;iClientName.Create(clientProcess.FileName());        
+        CleanupStack::PopAndDestroy(&amp;clientProcess); 
+        }
+    }
+
+TBool CRefDialogCreator::ResolveClientNameFromAppArcL(const TSecureId&amp; aSid)
+/**
+Gets the caption name for the application from AppArc (if available).
+
+@param    aSid    The secure id of the client process.
+@return            ETrue if a match was found in apparc; otherwise, EFalse is returned.
+*/
+    {
+    TBool found(EFalse);
+        
+    RApaLsSession apa;
+    CleanupClosePushL(apa);    
+    TInt err = apa.Connect();
+    if (err == KErrNone)
+        {        
+        TApaAppInfo* info = new(ELeave) TApaAppInfo();
+        CleanupStack::PushL(info);
+        
+        err = apa.GetAppInfo(*info, TUid::Uid(aSid));
+        if (err == KErrNone)
+            {
+            iPromptData-&gt;iClientName.Close();
+            iPromptData-&gt;iClientName.Create(info-&gt;iCaption);
+            found = ETrue;
+            }
+        else if (err != KErrNotFound)
+            {
+            User::Leave(err);
+            }    
+        CleanupStack::PopAndDestroy(info); 
+        }
+    else if (err != KErrNotFound)
+        {
+        // If the connection to apparc failed with KErrNotFound
+        // then the error is ignored becase we assume the dialog
+        // creator was invoked from text-shell
+        User::Leave(err);
+        }
+    CleanupStack::PopAndDestroy(&amp;apa);
+    return found;
+    }
+    
+TBool CRefDialogCreator::ResolveClientNameFromSisRegistryL(const TSecureId&amp; aSid)
+/**
+Retrieves the client and vendor information from the SIS registry.
+@param aSid        The secure-id of the client application to lookup in the registry.
+@return            ETrue, if the lookup was successful; otherwise, EFalse is returned.
+*/
+    {
+    TBool found(EFalse);
+    Swi::RSisRegistrySession r;
+    User::LeaveIfError(r.Connect());
+    CleanupClosePushL(r);
+    
+    Swi::CSisRegistryPackage* p(0);
+    TRAPD(err, p = r.SidToPackageL(TUid::Uid(aSid.iId)));
+    if (err == KErrNone)
+        {
+        iPromptData-&gt;iClientName.Create(p-&gt;Name());
+        iPromptData-&gt;iVendorName.Create(p-&gt;Vendor());
+        found = ETrue;
+        delete p;
+        }
+    CleanupStack::PopAndDestroy(&amp;r);
+    return found;
+    }
+
+// From CDialogCreator
+void CRefDialogCreator::PrepareDialog(
+    const UserPromptService::CPromptRequest&amp; aRequest, const CPolicy&amp; aPolicy,            
+    const RPointerArray&lt;CFingerprint&gt;&amp; aFingerprints, const CClientEntity* aClientEntity,
+    const TAny* aEvalPrivateData, TRequestStatus&amp; aStatus)
+    {
+    aStatus = KRequestPending;
+    iClientStatus = &amp;aStatus;
+    
+    iRequest = &amp;aRequest;
+    iPolicy = &amp;aPolicy;
+    iFingerprints = &amp;aFingerprints;
+    iEvalPrivateData = aEvalPrivateData;
+    (void) aClientEntity;
+
+    // Kick off dialog creator state machine
+    iState = EPrepareDialog;
+    iStatus = KRequestPending;
+    TRequestStatus* status = &amp;iStatus;
+    SetActive();
+    User::RequestComplete(status, KErrNone);
+    }
+    
+void CRefDialogCreator::DisplayDialog(CPolicy::TOptions&amp; aOptions, const CFingerprint*&amp; aFingerprint,
+        TUint&amp; aEvaluatorInfo, TRequestStatus&amp; aStatus)
+    {    
+    aStatus = KRequestPending;
+    iClientStatus = &amp;aStatus;
+    
+    iOptionSelected = &amp;aOptions;
+    iFingerprint = &amp;aFingerprint;
+    aFingerprint = 0;
+    iEvaluatorInfo = &amp;aEvaluatorInfo;
+    iClientStatus = &amp;aStatus;
+    
+    // Start state machine
+    ASSERT(iState == EDisplayDialog); // PrepareDialog should have been called first
+    iStatus = KRequestPending;
+    TRequestStatus* status = &amp;iStatus;
+    SetActive();
+    User::RequestComplete(status, KErrNone);
+    }
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A81854C9-25F1-5C3B-AF3F-ECB7CFA26677.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A81854C9-25F1-5C3B-AF3F-ECB7CFA26677"><title>Creating the receive stream</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes how to create a receive source. </p> <p>The <codeph>RRtpReceiveSource</codeph> class represents the stream of data on a single SSRC (synchronised source) and delivers the RTP packets and RTCP information in the order they arrive. </p> <p> <codeph>RRtpSession</codeph> allows you to create a new receive stream. <codeph>NewReceiveSourceLC()</codeph> and <codeph>NewReceiveSourceL()</codeph> create a new receive stream and return a handle to an <codeph>RRtpReceiveSource</codeph>. </p> <section><title>Receiving the packet</title> <p> <codeph>RRtpReceivePacket</codeph> is derived from <codeph>RRtpPacket</codeph> and provides a handle to a received RTP packet. To access the packet information, use the functions listed in <xref href="GUID-46047253-4471-502D-B48E-E1990E7F7962.dita#GUID-46047253-4471-502D-B48E-E1990E7F7962/GUID-9E7AAB77-6F14-51AE-8008-B2F1C49667A5">Preparing the packet</xref>. </p> <p> <codeph>RRtpReceiveSource</codeph> provides the following functionality: </p> <p> <codeph>IsOpen</codeph> returns <codeph>ETrue</codeph> if the stream is open. </p> <p> <codeph>GetByeReason</codeph>: Retrieves the reason for terminating the session </p> <p> <codeph>GetLastApp</codeph>: Retrieves the parameters from the last APP packet. You must specify the application name, application data, and sub-type of the APP packet. </p> <p> <codeph>Packet</codeph>: Gets the packet that has just arrived, or a closed packet if there is not one. </p> <p> <codeph>GetSDES</codeph>: Gets the data associated with the SDES (Source Description) item such as CNAME, NAME and so on. </p> <p> <codeph>SSRC</codeph>: Gets the source of stream of the RTP packets. </p> <p> <codeph>Close</codeph>: Closes the receive stream and releases all its resources. </p> <p>To register for events from a stream, refer to the section <xref href="GUID-9652782C-D5A7-584F-A61C-1340D49478A2.dita">Registering for and handling events</xref>. </p> <p> <b>Note</b>: Before receiving an RTP packet you must set the bandwidth for the RTP session. The following code snippet shows how to set the bandwidth for an RTP session. </p> <codeblock id="GUID-E4210BDD-FC9C-5660-9773-FE91683994EF" xml:space="preserve">IMPORT_C void SetBandwidth(TUint aBandwidth) </codeblock> </section> <section><title>See also</title> <p> <xref href="GUID-5287A403-1094-5682-A443-A6C2A04A1F23.dita">Creating and Managing an RTP session</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6" xml:lang="en"><title>Publish and
+Subscribe</title><shortdesc>This section explains the publish and subscribe concepts.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8"><title>Supported Image Formats Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the many Symbian supported data formats. </p> <section><title>Purpose</title> <p>The Symbian platform provides support for many audio, video and image formats as part of the Multimedia Framework out of the box to shorten development and integration by device manufactures, device implementors and application developers. </p> </section> <section><title>Architectural Relationship</title> <p>The formats described in this document form part of the Multimedia subsystem. </p> </section> <section><title>Description</title> <p>The symbian supported formats are as follows: </p> <ul><li id="GUID-202D682C-1AC5-5F5E-A1DE-549327889140"><p> <xref scope="external" href="http://local.wasp.uwa.edu.au/~pbourke/dataformats/bmp/">BMP</xref> This is an image file format used to store bitmap digital images, especially the form at used by Windows. It sometimes called as bitmap or DIB (device-independent bitmap) file format. </p> </li> <li id="GUID-BE48597E-0474-5A63-A3C8-6F3F70C5DBCE"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/GIF">GIF</xref> Graphics Interchange Format is a common file format licensed by Unisys. The first format of GIF was called as GIF87a, this is 8 bit single image with 256 colour level. And another updated GIF format is GIF89a, this is a multiple image format which support animation, transparency, and interlacing. </p> </li> <li id="GUID-B91C4EDA-9F4D-5E8B-8F9C-664CDA3E9CD8"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/JPEG">JPEG</xref> Joint Photographic Experts Group is an image format, approved by ISO (International Organization for Standardization ) and IEC (International Electrotechnical Commission ) group of experts to develop and maintain standards for a suite of compression algorithms for computer image files. </p> </li> <li id="GUID-2C692A77-85E3-5A12-A37C-B4DCD1D379BD"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/JPEG_File_Interchange_Format">JFIF</xref> JPEG File Interchange Format is a file format created by the Independent JPEG Group (IJG) for the transport of single JPEG-compressed images. </p> </li> <li id="GUID-A5EC68CE-C003-58C0-9682-0AAC73A968C3"><p> <xref scope="external" href="http://www.4neurons.com/other/mbm/mbm.html"> MBM</xref> MyBitmap (MBM) is a Symbian platform Bitmap format. </p> </li> <li id="GUID-A4B5410E-5112-55E2-909A-D53E06035CD6"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/PNG"> PNG</xref> Portable Network Graphics is an image format similar to the GIF format but with no licensing issues. This format is pronounced "ping". </p> </li> <li id="GUID-8309981D-0E24-5482-9676-F5F364D1D129"><p> <xref scope="external" href="http://www.faximum.com/manual.d/client.server.d/ref.57.html">TIFF/F</xref> Tagged Image File Format/Fax is an image format for fax transmission. </p> </li> <li id="GUID-AD2D29EA-3B67-5FE6-B8C1-9005ECD78914"><p> <xref scope="external" href="http://www.developershome.com/wap/wml/wmlImages.asp">WBMP</xref> Wireless Bitmap format is an image format for the WAP devices. </p> </li> <li id="GUID-AAFCDABC-93EC-5E9A-963D-6F1AD0DCCB82"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/Exif"> EXIF</xref> Exchangeable image file format is specially used by digital cameras. </p> </li> <li id="GUID-8209C137-9217-5DFF-B1EF-BD79C536B8AF"><p> <xref scope="external" href="http://netpbm.sourceforge.net/doc/ppm.html"> PPM</xref> Portable Pixel Map is an image format traditionally used on Unix systems. This is a lowest common denominator colour image file format. </p> </li> <li id="GUID-672AD90F-9D0A-5A90-A6BF-F0F3EDABB9F7"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/OTA_Bitmap"> OTA</xref> Over The Air bitmap format is an image format used for Short Message Service. </p> </li> <li id="GUID-30A219B9-4368-5F22-8466-60D2C9E39469"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/ICO_%28icon_image_file_format%29">ICO</xref> Icon Image File Format is mainly used for icons. </p> </li> <li id="GUID-12376969-E2F7-5FAF-A1A8-62025EE92666"><p> <xref scope="external" href="http://en.wikipedia.org/wiki/Windows_Metafile">WMF</xref> Windows Metafile Format is mainly used for GIF and JPEG vector graphics formats. </p> </li> </ul> <p>For more information about the decoder / the encoder supported image formats, see <xref href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita#GUID-88091838-03FC-550F-9A3D-DA70907EF955/GUID-B7129F68-719C-5C6A-A842-E8ACA71980E4">Supported Image Format For Encoder / Decoder</xref>  </p> </section> <section><title>Using Supported Formats</title> <p>The Supported Formats are used for the following: </p> <ul><li id="GUID-E39F4E3D-3050-5F91-9197-2A08DB5D0960"><p>JPEG and TIFF image formats are used for the colour sampling and the quality factor information. </p> </li> <li id="GUID-12F98C3F-F0AE-5D84-81DB-D127B84CC7BA"><p>GIF image format is used for the background colour information. </p> </li> <li id="GUID-F184BBDA-03B8-543D-A83F-99E23DEF257C"><p>MBM, PNG and ICO image formats are used for holding the image frame data information. </p> </li> <li id="GUID-E23FC23F-0565-54F0-B87A-FD40E29783AF"><p>BMP image format is used for holding the bits per pixel information and the compression information. It is only used when configuring the BMP encoder. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks Overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transform Overview</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display Overview</linktext> </link> <link href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita"><linktext>Bitmap Transform overview</linktext> </link> <link href="GUID-257E223F-1612-5978-982A-38DE8E08211C.dita"><linktext> Gifscaler Overview</linktext> </link> <link href="GUID-08304A3F-4331-5936-984E-74A1F35905B8.dita"><linktext>Media Client Image Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita"><linktext>Image Decoding Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A837D8F6-B9D3-5119-8C63-51772B388999" xml:lang="en"><title>Symbian Platform
+Tools And Utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The guide describe the tools for developing and building programs. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A84EDC63-0A74-4B93-BED2-7BE273A6DDB3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A84EDC63-0A74-4B93-BED2-7BE273A6DDB3" xml:lang="en"><title>Deleting
+the choice list</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>After the choice list is no longer needed, you can delete the <codeph>CAknChoiceList</codeph> instance.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45"><title>How to control Application Level Roaming for SIP Profiles</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Application Level Roaming (ALR) is a facility which allows a SIP Profile to switch between service providers by using Internet Access Points (IAPs). By default, all SIP clients allow the SIP profiles they are using to roam across IAPs. </p> <p>To restrict roaming for a SIP profile to a set of IAPs, configure the profile with a Service Network Access Point (SNAP) ID. A SNAP ID is a unique identifier for a set of IAPs. The SIP profile store must include the SNAP ID that can be used by the SIP profile while roaming. </p> <p>Use the <xref href="GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8.dita"><apiname>CSipProfileAlrController</apiname></xref> and <xref href="GUID-2034A76E-DF82-3E1B-810D-D98819C7C153.dita"><apiname>MSipProfileAlrObserver</apiname></xref> classes to control ALR. </p> <p>To register for ALR events, use an instance of the <xref href="GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8.dita"><apiname>CSipProfileAlrController</apiname></xref> class and implement the <xref href="GUID-2034A76E-DF82-3E1B-810D-D98819C7C153.dita"><apiname>MSipProfileAlrObserver</apiname></xref> interface to register for ALR events. When registered for the ALR event, the <xref href="GUID-2034A76E-DF82-3E1B-810D-D98819C7C153.dita"><apiname>MSipProfileAlrObserver</apiname></xref> interface notifies the client when a SIP profile used by the client tries to migrate to another IAP. Then the client can allow or disallow the migration request using the <xref href="GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8.dita#GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8/GUID-95B63021-C6C7-39AF-8D34-4D860A8E1772"><apiname>CSipProfileAlrController::AllowMigrationL()</apiname></xref> or <xref href="GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8.dita#GUID-99F30475-E6A5-3B37-A7F0-D186101F60A8/GUID-735767B1-A2B4-3944-B960-C5E6C9A9ADFA"><apiname>CSipProfileAlrController::DisallowMigrationL()</apiname></xref> functions. </p> <p>The following illustration shows the call flow of enabling a SIP profile configured with a SNAP ID. </p> <fig id="GUID-CF28B128-D560-516D-BF6E-DA46ECB96DF2"><title>
+          Call flow of enabling a SIP profile with a SNAP ID 
+        </title> <image href="GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e317076_href.png" placement="inline"/></fig> <p>When the SIP profile is registered with a SNAP ID, you can allow the SIP profile to migrate to another IAP within the SNAP. </p> <p>In the following illustration, the SIP profile is deregistered after migrating to another IAP. To use it again, you must register the profile again. </p> <p>The following illustration shows the call flow of SIP profile migration. </p> <fig id="GUID-CC95AEE1-EABD-5C36-BB2D-C2BC585C6769"><title>
+          Call flow of migrating a SIP profile to another IAP 
+        </title> <image href="GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e317091_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A87610FF-2FBC-4BA3-8F6B-0BBB441F8066.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A87610FF-2FBC-4BA3-8F6B-0BBB441F8066" xml:lang="en"><title>Hardware
+Resource Manager Overview</title><shortdesc>Introduction to topic for overview page or search</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Hardware Resource Manager (HWRM) is a client-server solution, which utilizes
+ECom plug-ins to achieve device independency. ECom plug-ins convert the client
+requests into the hardware control commands. </p>
+<section><title>Purpose</title> <p>HWRM performs the following functions: </p> <ul>
+<li id="GUID-B9558230-898F-51E8-8839-4CEB8C8D3FB4"><p>Provide client APIs
+to control lights, vibra. </p> </li>
+<li id="GUID-6CC6C834-CE06-534C-A39A-D1C617F04094"><p>Retrieve battery information
+of the device. </p> </li>
+<li id="GUID-B45D85ED-6DD6-5445-A51C-561D6C609204"><p>Publish certain power-state
+related Publish and Subscribe properties. </p> </li>
+<li id="GUID-34B70C64-2C40-55F5-9C30-6C851E1351D1"><p>Enable clients to retrieve
+status information on the hardware elements such as light, vibration, power. </p> </li>
+</ul> </section>
+<section><title>Required background</title> <p>Knowledge of the client-server
+architecture, asynchronous processing, and active objects feature of the Symbian
+system model architecture. </p> </section>
+<section><title>HWRM architecture</title> <p>HWRM is made up of the following
+components: </p> <ul>
+<li id="GUID-52035A19-05AF-5C9B-A525-9B84523EFA30"><p><b>Client APIs</b>  </p> </li>
+<li id="GUID-E833B270-2E7A-583B-9177-7F5AB0386D6E"><p><b>HWRM Server</b>  </p> </li>
+</ul> <fig id="GUID-81607D15-1867-51EF-81B8-39AC75FDD4B6">
+<title>              Hardware Resource Manager's Architectural Relationships
+           </title>
+<image href="GUID-DF37DAC3-8B86-5674-B025-931F743ED888_d0e109814_href.png" placement="inline"/>
+</fig> <p><b>Client APIs </b> </p> <p>HWRM provides client APIs that can control
+various hardware elements. It also provides callback pointers, so that the
+client applications can register to receive notification on the hardware status
+changes. Refer to the <xref href="GUID-2E3BE23C-B9DC-5B5D-A56A-1DB819EFC9A6.dita">tutorials</xref> for
+information on how to use client APIs. Client APIs are useful for both application
+developers and the handset manufacturers. </p> <p><b>HWRM server</b> </p> <p>HWRM
+server uses plug-in handlers to forward the client API requests to appropriate
+plug-ins. The client application communicates with HWRM server through the
+client APIs (Light API, Vibra API, and Power API). HWRM server defines the
+observer classes, which provide the callback pointers. </p> <p>The server
+calls <xref href="GUID-4603653B-34E4-3CC5-9978-95F9532A0616.dita#GUID-4603653B-34E4-3CC5-9978-95F9532A0616/GUID-5FB0A5EF-C2BB-3D0D-ACFD-9C7EE5BF41D2"><apiname>CHWRMPluginService::ProcessCommandL()</apiname></xref> function to
+forward the client requests to plug-ins. An ongoing <xref href="GUID-DC7941A2-9310-3739-AB95-EF080EAEA042.dita"><apiname>ProcessCommandL()</apiname></xref> is
+cancelled by HWRM server using <xref href="GUID-4603653B-34E4-3CC5-9978-95F9532A0616.dita#GUID-4603653B-34E4-3CC5-9978-95F9532A0616/GUID-3BF46D44-ED10-30AC-AE0A-18776FE69A83"><apiname>CHWRMPluginService::CancelCommandL()</apiname></xref>.
+The plug-ins process the server's request and pass the response by calling <xref href="GUID-5F264EF2-6E50-34F7-96E1-99645EC86265.dita#GUID-5F264EF2-6E50-34F7-96E1-99645EC86265/GUID-6DDB5354-C3C1-35F9-B237-9ECA5018BA41"><apiname>CHWRMPluginCallback::ProcessResponseL()</apiname></xref> function.
+The <xref href="GUID-E053425D-3A2F-39A5-B18A-0E2E8883D8F6.dita#GUID-E053425D-3A2F-39A5-B18A-0E2E8883D8F6/GUID-6F02C8B1-B01F-35C5-9010-51B8A3E04FDC"><apiname>MHWRMPluginCallback::EventL()</apiname></xref> method is used to communicate
+various events that takes place in the plug-ins. </p> <p>HWRM uses the central
+repository to store the various values and settings such as the light intensity,
+duration and delays. </p> </section>
+<section><title>APIs</title> <p>The HWRM provides the following client APIs
+and plug-in APIs: </p> <table id="GUID-3EBE4E80-0F05-5BE3-BFCB-440B15246AE8">
+<tgroup cols="2">
+
+<colspec colname="col0" colwidth="0.79*"/><colspec colname="col1" colwidth="1.21*"/>
+<thead>
+<row>
+<entry><b>Class</b></entry>
+<entry><b>Description</b></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><codeph>CHWRMLight</codeph> </p> </entry>
+<entry><p>Abstract class defining Lights client API. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>CHWRMExtendedLight</codeph></p></entry>
+<entry><p>Abstract class defining Extended Lights client API.</p></entry>
+</row>
+<row>
+<entry><p><codeph>CHWRMVibra</codeph> </p> </entry>
+<entry><p>Abstract class defining Vibra client API. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>CHWRMPower</codeph> </p> </entry>
+<entry><p>Class defining Power client API. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical use cases</title> <p>HWRM is used for the following: </p> <ul>
+<li><p>Used to configure a plug-in.</p></li>
+<li id="GUID-EC0ED774-FA8C-5795-A8B8-828915C925B0"><p>Start/stop device vibra. </p> </li>
+<li id="GUID-A7F6688C-3421-566B-96C1-FAC8A27E994E"><p>Release the reserved
+lights </p> </li>
+<li id="GUID-760C9732-6587-55BD-A8B3-C1838A668347"><p>Retrieve the supported
+light targets of the device, current light status, vibra settings and status. </p> </li>
+<li id="GUID-831C3322-D28C-507A-BB5C-EA85944D8BB7"><p>Reserve light targets,
+device vibra. </p> </li>
+<li id="GUID-83313ED4-CC3F-575D-9D5B-01485DC2B7B4"><p>Switch ON/OFF the lights. </p> </li>
+<li id="GUID-9A30DBFC-3CE4-5A85-9E7B-27178872AE5A"><p>Request for tactile
+vibration pulse. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A88F4A4E-49D7-4F92-8047-CA287C54B964.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A88F4A4E-49D7-4F92-8047-CA287C54B964" xml:lang="en"><title>Transaction
+Properties</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Transaction properties are accessed using the <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-88CFB38B-9E3F-389A-B020-F2E62A09998F"><apiname>RHTTPTransaction::PropertySet()</apiname></xref> method,
+which returns an <xref href="GUID-C23D0EDB-E024-35AD-97E9-88FB6DC0EC7E.dita"><apiname>RHTTPTransactionPropertySet</apiname></xref> handle. They
+are used to store information related to a transaction that is required to
+persist during the transaction lifetime. Such information is not transmitted;
+the mechanism only provides an association, mainly used by Symbian developers
+for filter. </p>
+<p>The two pre-defined properties that can be set by the client are <xref href="GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04.dita#GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04/GUID-C9F345D9-C713-3C99-AFEE-1292D1EB61D9"><apiname>HTTP::EUsername</apiname></xref> and <xref href="GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04.dita#GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04/GUID-A803D500-6EED-35BE-B0CB-B01B2150B1CC"><apiname>HTTP::EPassword</apiname></xref>.
+Their use is described in <xref href="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita#GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D/GUID-8DB0C8B3-4ED6-59D6-A796-F4EA2DE5DC5B">Validation
+filter</xref>. </p>
+<p>An example of properties in use is taken from the Redirection filter, where
+a count is maintained of the number of redirections made in response to 300-series
+HTTP status codes: </p>
+<codeblock id="GUID-4B3457B6-9B5C-551A-B830-4D839E01BACE" xml:space="preserve">// see if this transaction has been redirected before
+THTTPHdrVal redirectCountProperty;
+if (aTransaction.PropertySet().Property(p.StringF(HTTP::ERedirectCount,RHTTPSession::GetTable()), 
+redirectCountProperty))
+    {
+    __ASSERT_DEBUG(redirectCountProperty.Type() == THTTPHdrVal::KTIntVal, HTTPPanic::Panic(HTTPPanic::EHeaderInvalidType));
+    redirectCount = redirectCountProperty.Int();
+    __ASSERT_DEBUG(redirectCount &gt; 0, HTTPPanic::Panic(HTTPPanic::EHeaderInvalidType)); 
+    }
+
+// Only redirect a certain number of times, and update the redirect count property of the transaction
+if (++redirectCount &lt; KRedirectLimit)
+    aTransaction.PropertySet().SetPropertyL(p.StringF(HTTP::ERedirectCount,RHTTPSession::GetTable()), redirectCount);</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e337257_href.png has changed
Binary file Symbian3/SDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e284554_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A8EADD99-561C-5077-834F-DFC2CC4AE6E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A8EADD99-561C-5077-834F-DFC2CC4AE6E2"><title>Copying</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When a container object has been edited, but some of its component objects have not been changed, it is desirable to be able to copy the component object, or a reference to it, without first restoring that object into memory and then storing it back again. There are many motivations for this:</p> <ul><li id="GUID-7B627D93-02CC-5420-9E99-469D450322C5"><p>space requirement: in most contexts, both the external representation of the component object (in a file) and its internal representation use RAM space. Restoring an object from a file generates a second instance of it; storing it back into another file generates a third instance, before the first file and the internal representation can be deleted. This triplication of space requirement is especially undesirable for large objects.</p> </li> <li id="GUID-C8FF1473-6A29-59B2-B497-0B4318D681A2"><p>generality: it is desirable to be able to copy an object without knowing its detail, e.g. which program created it.</p> </li> <li id="GUID-0176016A-090E-58BA-9178-6AFF779B437B"><p>security: if an object is password protected, it cannot be opened without specifying a password. It is undesirable to have to specify a password to copy an embedded object, especially if the only requirement is to edit that object's container.</p> </li> </ul> <p>There are two main cases:</p> <ul><li id="GUID-45E6CC23-B06A-5635-A2E5-784B58DACDAF"><p>with a direct file store, the component object data must be copied from one store to another without internalizing it: this is achieved by copying the streams directly, and this itself is only possible because of embedded stores </p> </li> <li id="GUID-3DE700D1-D34B-5C87-A9A6-3608A21303CE"><p>with a permanent file store, the component object can be left in place, and just its stream id re-used: this is achieved by copying the Swizzle, and is provided by store map functions</p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0"><title>epocstacksize</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>epocstacksize</codeph>  <varname>stacksize</varname>  </p> <p>Use the <codeph>epocstacksize</codeph> statement to specify a stack size for your executable other than the default 8KB. </p> <p>The maximum stack size is 80KB. </p> <p>The size of the stack, in bytes, can be specified in decimal or hexadecimal format. Use of this statement will have no effect under the WINSCW/WINS platforms. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A8EE55C2-0636-44E2-8B2B-05EA8D4A96A4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-A8EE55C2-0636-44E2-8B2B-05EA8D4A96A4" xml:lang="en"><title>Obtaining
+Alarm ID or Category List</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>To retrieve a list of all alarms maintained within the
+Alarm Server's queue, use <codeph>GetAlarmIdListL</codeph> as shown in the
+following code fragment:</p><codeblock xml:space="preserve">RArray&lt;TAlarmId&gt; alarmIds;
+CleanupClosePushL( alarmIds );
+TheAlarmServerSession.GetAlarmIdListL( alarmIds );</codeblock><p>You can retrieve
+a list of all categories utilized within the alarm server using <codeph>GetAvailableCategoryListL</codeph>,
+as shown in the following code fragment:</p><codeblock xml:space="preserve">RArray&lt;TAlarmCategory&gt; categories;
+TheAlarmServerSession.GetAvailableCategoryListL( categories );</codeblock><p>Use <codeph>GetAlarmIdListForCategoryL</codeph> to
+retrieve an array containing all, for example, Clock alarms, as shown in the
+following code fragment:</p><codeblock xml:space="preserve">//Get alarms with category 
+KASCliCategoryClockRArray&lt;TAlarmId&gt; alarms;
+CleanupClosePushL( alarms );
+TheAlarmServerSession.GetAlarmIdListForCategoryL( KASCliCategoryClock, alarms );</codeblock><p>You
+can also retrieve a list of alarm IDs associated with alarms in a given state
+using <codeph>GetAlarmIdListByStateL</codeph>, as shown in the following code
+fragment:</p><codeblock xml:space="preserve">RArray&lt;TAlarmId&gt; alarmIds;
+TheAlarmServerSession.GetAlarmIdListByStateL( EAlarmStateSnoozed, alarmIds );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A928E956-9800-5277-B0D3-34BBB2707AE1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A928E956-9800-5277-B0D3-34BBB2707AE1"><title>Stream ID</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Each stream within a store has a unique identity. This is the stream ID, encapsulated by an instance of the <codeph>TStreamId</codeph> class.</p> <p>Stream IDs can be compared with each other; they can also be externalised and internalised. The ID of one stream can be externalised into another stream, and this lays the foundations for building networks of streams. The <codeph>TStreamId</codeph> class provides <codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph> functions for this purpose.</p> <p> A stream ID is a 32-bit number. 4 bits are reserved, which means that a store can contain up to 2<sup>28</sup> =256M streams. No guarantees are given about the value of a stream ID. In particular, IDs are not allocated in sequence. Each store format has its own method for allocating IDs, designed to make stream lookup efficient in the context of that store.</p> <p>In the context of a given store, a stream can be opened by specifying its ID.</p> <p>Note that <codeph>KNullStreamId</codeph> is a stream ID that is guaranteed not to exist. As the name suggests, it represents a NULL stream ID.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C" xml:lang="en"><title>Event
+handling</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes the different events that a Symbian application
+can receive from the application framework, focusing in particular on events
+that are most beneficial for application developers.</p>
+<p>The Symbian platform passes user input and system events to applications
+on the device, which then are responsible for handling the events in the appropriate
+control. </p>
+<p>This section includes:</p>
+<ul>
+<li><p><xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">Commands</xref></p>
+</li>
+<li><p><xref href="GUID-5A292526-5B71-4076-9DBD-1385CD1FFD37.dita">System
+environment events</xref></p>
+</li>
+<li><p><xref href="GUID-51CD4B23-F4C1-4CD2-8CDB-6335365CE44B.dita">Domain-specific
+events</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C" xml:lang="en"><title>Battery
+pane</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Battery pane displays the remaining energy level of the battery, using
+a graphical indicator. It also acts as a charging indicator. The battery indicator
+is visible in all applications.</p>
+<fig id="GUID-2259AAFC-0A81-4723-B47C-41713FB9EFFB">
+<title>Battery pane</title>
+<image href="GUID-4D82B904-71BF-4945-85ED-655AF8879FF9_d0e53548_href.png" scale="40" placement="inline"/>
+</fig>
+<p>The battery pane is not accessible
+to applications.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e251491_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757"><title>The object index</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>An object index is used to generate handle-numbers for reference counting objects. </p> <p>An object index is an instance of a <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita"><apiname>CObjectIx</apiname></xref> class. </p> <p>An object index acts as a collector of reference counting objects but, unlike an object container, it does not act as a container for them. The difference is emphasised by the fact that removing a reference counting object from its object container causes that reference counting object to be <i>destroyed</i>, while removing it from an object index causes it to be <i>closed</i>. </p> <p>An object index can hold reference counting objects which belong to different object containers. The same reference counting object can also be added to an object index any number of times; each is regarded as a different instance of that object and each instance generates a different handle-number. </p> <p> <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita#GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E/GUID-03EC7FEC-030F-3F4E-9FF1-669284626DF5"><apiname>CObjectIx::AddL()</apiname></xref> adds a reference counting object to an object index, and is the way in which a unique handle-number can be generated for that object. A handle-number is the way in which an object which is owned or managed by another thread or process can be identified. For example, on the server side, the object representing a thread (a <codeph>DThread</codeph>) maintains an object index for all objects which are open in that thread. Semaphores, mutexes and other threads are examples. Typically, user code running in that thread will have handles, <codeph>RHandleBase</codeph> derived types, open on those objects. </p> <p>The following drawing shows the idea. </p> <fig id="GUID-139E5A87-1E6E-5102-AE60-A707EFC5AD5D"><image href="GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e219996_href.png" placement="inline"/></fig> <p>An object index is implemented as an array where each element of the array contains a pointer to the reference counting object. An object index can index up to 32,768 (0x8000) reference counting objects. </p> <p>See also: </p> <ul><li id="GUID-3BD162E5-C0A7-5D42-94E3-6E2A0468749A"><p> <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita"><apiname>CObjectIx</apiname></xref> </p> </li> <li id="GUID-C7108AB5-3F32-5F1D-B15F-E6DBE5CF9809"><p> <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref> </p> </li> <li id="GUID-00290334-9DA4-5FC0-874A-CD839027FD28"><p> <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref> </p> </li> <li id="GUID-25EBCB93-A34E-57C3-BD33-B20398FD3CC0"><p> <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e221479_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9640739-462C-5D95-8DCC-D273CD8439AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A9640739-462C-5D95-8DCC-D273CD8439AE"><title>TCP/IP</title><shortdesc>This section describes the TCP/IP concepts as implemented by Symbian OS. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The TCP/IP is a plug-in architecture. Clients access its services through the generic Sockets Server Client API, and specify protocol-specific behaviour through TCP/IP specific utility types and constants. </p> <p>The TCP/IP API has the following three key concepts: </p> <ul><li id="GUID-7D1C1EC3-87D6-5C30-9671-63CDF8CDC05A"><p>TCP/IP Socket </p> </li> <li id="GUID-1412D36F-1834-56E7-A904-8C5577BFD841"><p>Domain Name Resolver </p> </li> <li id="GUID-A2A04887-0E9E-5A94-BD78-CAD2CB720343"><p>Internet Addresses </p> </li> </ul> <section><title>TCP/IP Socket</title> <p>The TCP/IP protocol module (tcpip.prt) provides TCP/IP communication services to client applications. This module provides the following four fundamental transport and network layer protocols: </p> <ul><li id="GUID-4EE43C12-9065-5B5A-8DA1-C1D299408E41"><p>Internet Protocol (IP) <xref scope="external" href="http://www.ietf.org/rfc/rfc791.txt">RFC791</xref>  </p> </li> <li id="GUID-8219260F-D83C-575B-B92B-A9FF30E06100"><p>Internet Control Message Protocol (ICMP) <xref scope="external" href="http://www.ietf.org/rfc/rfc792.txt">RFC792</xref> and <xref scope="external" href="http://www.ietf.org/rfc/rfc950.txt">RFC950</xref>  </p> </li> <li id="GUID-18E9FDB7-EB17-5DEB-B075-6840F72B9F11"><p>Transmission Control Protocol (TCP) <xref scope="external" href="http://www.ietf.org/rfc/rfc793.txt">RFC793</xref>  </p> </li> <li id="GUID-509BB14D-7EF9-5768-A992-4A08B23204A5"><p>User Datagram Protocol (UDP) <xref scope="external" href="http://www.ietf.org/rfc/rfc768.txt">RFC768</xref>  </p> </li> </ul> <p>Clients do not access the protocol module directly. Clients use the protocol module through the Sockets Server Client API. The module also provides a DNS service that can be accessed through the Sockets Server Client API standard host name resolution interface, <xref href="GUID-5442E589-1BFB-39A0-98B3-3744E51F8386.dita"><apiname>RHostResolver()</apiname></xref>. Socket services are provided through the generic interface <xref href="GUID-66497E39-6A48-3B2C-BE17-5826210505AB.dita"><apiname>RSocket()</apiname></xref>. It is possible for TCP/IP services to be used over many types of network interface. To enable access to TCP/IP networks through a dial-up serial connection, Point-to-Point protocol (PPP) is provided. </p> </section> <section><title>Domain Name Resolver</title> <p>Domain name resolver is a program that extracts the information from name servers in response to client requests. The domain name resolution service uses the normal sockets API, for example, UDP and TCP to communicate with the name servers. Resolvers must access at least one name server and uses its information to answer a query directly. A resolver is a system procedure that is accessible to the user programs, for example, mail programs, TELNET and FTP. This indicates that the protocol is not required between the resolver and the user programs. </p> <p>A very important goal of the resolver is to eliminate the network delay and the load on the name server. </p> </section> <section><title>Internet Addresses</title> <p>The TCP/IP program uses a socket address encapsulated in a <codeph>TInetAddr</codeph> object. The <codeph>TInetAddr</codeph> object stores the IP address and port of a socket. This is the expected form for passing address information when using <codeph>RSocket()</codeph> and <codeph>RHostResolver()</codeph> for TCP/IP. </p> <p>The TCP/IP program also handles IP addresses represented in the following formats: </p> <ul><li id="GUID-0310B249-26DE-53E6-AA50-BEE114EA6E53"><p>As a dotted-decimal string, For example, 194.129.2.54 stored in a descriptor. </p> </li> <li id="GUID-D5BCC6F8-954D-564C-B9D6-032FED950F8F"><p>As an unsigned 32-bit integer - the usual binary representation of an IP address. This can be used to initialise a <codeph>TInetAddr</codeph> through the relevant constructor. </p> </li> <li id="GUID-C683FEEC-C3F5-5542-8AAA-2E1A76F3E1C5"><p>The 4 integers forms a dotted-decimal address and the macro INET_ADDR is used to convert this into integer format in the appropriate byte-order. </p> </li> </ul> <p> <b>Note:</b> All addresses are handled in the native byte order. It means the user do not need to use byte-order conversion functions, for example, BSD’s <xref href="GUID-1E24E920-D34A-38D4-98B1-6AE44B98113C.dita"><apiname>htonl()</apiname></xref> or <xref href="GUID-013170BC-E395-3887-8EE1-BBDBE5AD8C31.dita"><apiname>htons()</apiname></xref>. </p> </section> <section><title>Routes and Interfaces</title> <p>The TCP/IP protocol must establish the following information to communicate with a remote host through a socket: </p> <ul><li id="GUID-F9ABF503-6687-5B87-A082-C0844A36C0E6"><p>the IP address and port of the socket </p> </li> <li id="GUID-D3423B61-CBE1-58A4-83EF-9AD18BB018EE"><p>a route to the remote host </p> </li> <li id="GUID-85BA7CE9-93E0-58A7-A9D1-5E15FBF523FF"><p>a network interface by which to access that route </p> </li> </ul> <p>The actions to do this are performed when: </p> <ul><li id="GUID-FA6AD28F-3EC9-5429-B5DE-CAEAF1633CDA"><p>A TCP socket is connected with <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref>  </p> </li> <li id="GUID-02FA2CD0-AD09-5E9F-AF10-6018AA9D6001"><p>a UDP socket is written to with <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-ADE2383D-3075-30B4-8F63-6D837EB75AEF"><apiname>RSocket::Send()</apiname></xref>, <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-29825F33-D844-358A-8CCA-791AE167CDCE"><apiname>RSocket::Write()</apiname></xref> or <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-F948E0A6-DC1A-3FCD-A391-0FEE0F673D36"><apiname>RSocket::SendTo()</apiname></xref>  </p> </li> <li id="GUID-53FC4772-8A69-5514-A3F1-48E0FF1CC305"><p>A UDP socket is connected with <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-AC5A49E9-337D-334A-9CD0-DB8226372306"><apiname>RSocket::Connect()</apiname></xref>  </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F.dita"><linktext>Accessing TCP/IP Sockets</linktext> </link> <link href="GUID-182A7A60-80BD-5E54-917A-8F4C26BB94CB.dita"><linktext> Connecting and
+                Disconnecting a remote host</linktext> </link> <link href="GUID-3AAE78A4-75C5-5607-8775-43DFB43DCFE8.dita"><linktext> Getting and Setting IP
+                Addresses</linktext> </link> <link href="GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita"><linktext> Using Domain Name
+                Resolution</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A96ABD2C-A338-58E5-A674-E840B1F53670.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-A96ABD2C-A338-58E5-A674-E840B1F53670"><title>Creating a User Defined Table: Tutorial</title><shortdesc>This tutorial shows you how to create a user defined table. The tutorial, then shows you how to store a new record. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-AE5DC98C-AF4A-5727-8090-42FF74E80BF4"><p>Before you start, you must understand: </p> <ul><li id="GUID-FA757DB7-B25F-5ECA-9030-6D7B9EC4D7E4"><p>the general concept of the Comms Database </p> </li> <li id="GUID-54CB318E-7A04-5D63-8AEB-C2D75F428B38"><p>the specific concepts of fields, records, links and tables </p> </li> <li id="GUID-C95C350C-9DC8-5445-A58B-333CEFA97AA8"><p>how to write and build application code to run on Symbian OS </p> </li> </ul> </prereq> <context id="GUID-24246F22-49AD-5AC3-A0BF-7C1C625035C7"><p>This tutorial shows you: </p> <ul><li id="GUID-06AFEA66-4293-5D92-AD13-11B84A4DBCBF"><p>how to create a user defined table </p> </li> <li id="GUID-D304F5AA-29E6-510A-9B14-E0746C71D111"><p>how to create a user defined record and store that record in the table </p> </li> </ul> </context> <steps id="GUID-79745846-CD3D-5CEB-8F3C-CB090D60FF03"><step id="GUID-10AB178C-0854-5947-ADB8-A81379C0A464"><cmd>Make sure that you have created a session. </cmd> </step> <step id="GUID-D5F5C68A-9391-51AA-91F3-6F874BAEF8DF"><cmd>Define a schema for the new table. </cmd> <info>Create an array of <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>SGenericRecordTypeInfo</apiname></xref> items. Each <codeph>SGenericRecordTypeInfo</codeph> item defines a field in the record. </info> <stepxmp><codeblock id="GUID-59343FD3-9183-55C1-B6CC-5E9690B5A928" xml:space="preserve">const SGenericRecordTypeInfo recordInfo[] =
+        {
+        SGenericRecordTypeInfo(KCDTIdRecordName,EText,ENotNull,KCDTypeNameRecordName),
+        SGenericRecordTypeInfo(KCDTIdRecordTag,EUint32,ENoAttrs,KCDTypeNameRecordTag),
+        SGenericRecordTypeInfo(KCDTIdWLANServiceId,EUint32,ENoAttrs,KNameWLANServiceId),
+        SGenericRecordTypeInfo(KCDTIdWLANType,EUint32,ENoAttrs,KNameWLANType),
+        SGenericRecordTypeInfo(KCDTIdWLANEnabled,EBool,ENoAttrs,KNameWLANEnabled),
+        SGenericRecordTypeInfo(KCDTIdWLANPriority,EUint32,ENoAttrs,KNameWLANPriority),
+        SGenericRecordTypeInfo(0,0,ENoAttrs,KCDNull)
+        };</codeblock> </stepxmp> </step> <step id="GUID-7C23139E-C4EC-585E-B333-862C0C9D2B5F"><cmd>Define a name for the table. </cmd> <stepxmp><codeblock id="GUID-948FFFF5-DE3A-5614-9F93-6C44ACBD8F76" xml:space="preserve">_LIT(KGenericTable,"MyGenericTable");</codeblock> </stepxmp> </step> <step id="GUID-9BCE5E36-7BF8-545F-8D9E-859A6CC2BECA"><cmd>Create a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBGenericRecord</apiname></xref> object. </cmd> <info>A <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBGenericRecord</apiname></xref> object represents a record and a set of records </info> <info>Give the object the name of the table and the name of the schema. </info> <stepxmp><codeblock id="GUID-5F88809A-8246-5D78-AFF1-7BF2F3B1A145" xml:space="preserve">...
+// Record factory creates the CMDBGenericRecord object. The KCDNewTableRequest value 
+// passed to the record factory allocates a new table Id.
+CMDBGenericRecord* ptrNewTable = 
+      static_cast&lt;CMDBGenericRecord*&gt;(CCDRecordBase::RecordFactoryL(KCDNewTableRequest));
+
+// Initialise with the name of the table and the name of the schema.
+ptrNewTable-&gt;InitialiseL(KGenericTable(),recordInfo);
+...</codeblock> </stepxmp> </step> <step id="GUID-DA35A3FB-E7C5-5284-A681-FD6658FB123D"><cmd>Access fields in the record. </cmd> <info>The code uses <codeph>GetFieldByNameL()</codeph> and <codeph>GetFieldByIdL()</codeph>. </info> <stepxmp><codeblock id="GUID-0C746871-2A0D-55DE-8FF8-54F876635EF5" xml:space="preserve">...
+TInt valueType;
+
+CMDBElement* LanType = ptrNewTable-&gt; GetFieldByNameL(KNameWLANType, valueType);
+CMDBElement* RecordName = ptrNewTable-&gt;GetFieldByIdL(KCDTIdRecordName);
+...</codeblock> </stepxmp> </step> <step id="GUID-4C0E0735-0D3C-55B0-9415-015572D40915"><cmd>Change the valuie of the fields and create a new record. </cmd> <stepxmp><codeblock id="GUID-4DEC5D91-F890-5EF1-B8C5-C49DA84B4192" xml:space="preserve">...
+// Cast the field objects to the appropriate type
+CMDBField&lt;TUint32&gt;* LanTypefield = static_cast&lt;CMDBField&lt;TUint32&gt;*&gt;(LanType);
+CMDBField&lt;TDesC&gt;* RecordNamefield = static_cast&lt;CMDBField&lt;TDesC&gt;*&gt;(RecordName);
+
+// Change the field value
+*LanTypefield = 100;
+
+// Change the field value
+_LIT(KNewName, " NewName ");
+RecordNamefield-&gt;SetMaxLengthL(KNewName().Length());
+*RecordNamefield = KNewName();
+
+// Can also use this format: RecordNamefield-&gt;SetL(KNewName());
+
+
+// Asks for a new record
+ptrNewTable-&gt;SetRecordId(KCDNewRecordRequest);
+
+// Stores the new record
+ptrNewTable-&gt;StoreL(*iDb);
+...</codeblock> </stepxmp> </step> </steps> </taskbody><related-links><link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database
+                concepts</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A97250DA-A80C-4971-97DA-1C3E6520A44E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A97250DA-A80C-4971-97DA-1C3E6520A44E" xml:lang="en"><title>New flags
+in <codeph>CEikDialog</codeph></title><shortdesc><codeph>CEikDialog</codeph> has one touch-related flag: <codeph>EEikDialogFlagCloseDialogWhenTapped</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-5A4CB747-EB81-45BD-B937-09F325A221CE"><title>Touch-related
+flags in CEikDialog</title>
+<tgroup cols="2"><colspec colname="col1" colwidth="0.73*"/><colspec colname="col2" colwidth="1.27*"/>
+<thead>
+<row>
+<entry valign="top"> <p>Flag</p> </entry>
+<entry valign="top"> <p>Functionality</p> </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry> <p><codeph>EEikDialogFlagCloseDialogWhenTapped</codeph></p> </entry>
+<entry> <p>Indicates that a dialog or note is closed after the user taps anywhere
+on the screen.</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A97AD7EB-43C2-545A-9756-57D65A4905D9"><title>How to create a basic animation</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The animation framework provides a concrete implementation of the <xref href="GUID-40CEAB8C-2202-3E88-929F-35DA5BD554A4.dita"><apiname>CAnimation</apiname></xref> class called <xref href="GUID-12B29886-1D43-37ED-8DC0-6F43D3E591E8.dita"><apiname>CBasicAnimation</apiname></xref> class to create a basic client-side animation. A basic client-side animation needs data, which can range from a simple file to a complex data structure. The data provider is responsible for handling this data and cater to the needs of the animation whenever required. The <xref href="GUID-467B3417-C343-3637-B3AE-C1971C4C0BE3.dita"><apiname>CICLAnimationDataProvider</apiname></xref> class acts as a data provider and handles the data needed for any type of animation. </p> <p>To create a basic client-side animation, create an object of the <codeph>CICLAnimationDataProvider</codeph> class. Associate the data required for the animation with the data provider object. In the example used below, the data needed for the animation is a simple animated <filepath>GIF</filepath> file. </p> <p>The following code shows how to create a data provider object and associate a <filepath>GIF</filepath> file with it: </p> <codeblock id="GUID-9E8D5A00-0166-51A1-A4B6-8C3600916CA0" xml:space="preserve">//Path to the GIF file
+_LIT(KAnimExGuitarPlayer,"Z:\\resource\\apps\\AnimExample\\GuitarPlayer.gif");
+
+//Creating the data provider object and setting the GIF file using the string literal created above.
+//The iEikonEnv macro is used to open a session with the file system, before setting the GIF file to the data provider. 
+CICLAnimationDataProvider* basicDataProvider = new (ELeave)CICLAnimationDataProvider;
+basicDataProvider-&gt;SetFileL(iEikonEnv-&gt;FsSession(), KAnimExGuitarPlayer());</codeblock> <p>Now that the data provider object is ready with the required data, you can create an object of <codeph>CBasicAnimation</codeph> class. The control and behaviour for the animation is defined using the <xref href="GUID-7B02B3D6-D460-3274-8CE6-839549E6EFD3.dita"><apiname>TAnimationConfig</apiname></xref> class. You should create such an object and provide it to the animation. The behaviour of the animation can be set to any of the following: </p> <ul><li id="GUID-9A2A1585-3D12-5FFE-8F73-069A5848B5FA"><p>Play in a loop: Set the <codeph>iFlags</codeph> variable of the <codeph>TAnimationConfig</codeph> class to <codeph>ELoop</codeph>, and set the number of cycles the animation should complete using the <codeph>iData</codeph> variable. If you want the animation to be played for an indefinite number of cycles, set <codeph>iData</codeph> to <codeph>-1</codeph>. </p> </li> <li id="GUID-F554156C-6481-5E8E-AADA-3DA956BB29B4"><p>Play immediately: Set the <codeph>iFlags</codeph> variable of the <codeph>TAnimationConfig</codeph> class to <codeph>EStartImmediately</codeph>. By default, the animations will wait till the data is loaded completely. </p> </li> <li id="GUID-A5DF5715-5A9F-5EC5-A1D7-7309B2FA2174"><p>Play only specified number of frames: Set the <codeph>iFlags</codeph> variable of the <codeph>TAnimationConfig</codeph> class to <codeph>ECountFrames</codeph>, and set the number of frames the animation should play using the <codeph>iData</codeph> variable. </p> </li> <li id="GUID-0A7DC95B-0ECC-597E-9008-132C9E67DC95"><p>Stop the animation at the last frame: Set the <codeph>iFlags</codeph> variable of the <codeph>TAnimationConfig</codeph> class to <codeph>EEndOnLastFrame</codeph>. By default, when animations stop they return to the first frame. </p> </li> </ul> <p>In this case, the animation is configured to play in an infinite loop. </p> <p>The following code shows how to create and start a basic client-side animation. It loads an animated <filepath>GIF</filepath> file and plays it in an infinite loop : </p> <codeblock id="GUID-8E743CED-5EAF-5717-B098-F4111F143893" xml:space="preserve">//Integer constant defining the X and Y co-ordinates of the animation
+const TInt KAnimExBasicPositionX = 300;
+const TInt KAnimExBasicPositionY = 100;
+TPoint position = TPoint(KAnimExBasicPositionX, KAnimExBasicPositionY);
+
+//configure the animation to play in an infinite loop
+TAnimationConfig config;
+config.iFlags = TAnimationConfig::ELoop;
+config.iData = -1;
+
+//Creating the basic animation object using the data provider object and the X and Y coordinates defined above
+iBasicAnim = CBasicAnimation::NewL(basicDataProvider,position, iEikonEnv-&gt;WsSession(), Window());        
+
+//Starting the animation using the configuration created above
+iBasicAnim-&gt;Start(config);</codeblock> <p>The animation will be visible only when it is rendered to the window. To do so, implement a private virtual member function of <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> class called <codeph>Draw()</codeph> in your client application view class. This function should in-turn call the <xref href="GUID-12B29886-1D43-37ED-8DC0-6F43D3E591E8.dita#GUID-12B29886-1D43-37ED-8DC0-6F43D3E591E8/GUID-07FA25D5-3B07-3611-B838-C850C648006C"><apiname>CBasicAnimation::Draw</apiname></xref> function by passing the windows graphics context as an argument. </p> <p>The following code shows how to draw the animation to the window: </p> <codeblock id="GUID-A1314244-8C18-54E9-A403-3D5786CDD6BF" xml:space="preserve">void CClientAppView::Draw(const TRect&amp;) const
+{
+    
+    CWindowGc&amp; gc = SystemGc();    
+    if( iBasicAnim )
+        {
+        iBasicAnim-&gt;Draw( gc );    
+        }
+}</codeblock> <p> <i>Note that you should include proper error checks in the given code before using it for production.</i>  </p> <p>When a new frame is required for the animation, the entire window or an area within in the window need to be redrawn using the <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-28202F81-52FE-30F5-8B8C-ABED0915822E"><apiname>RWindow::Invalidate()</apiname></xref> function. This function will force a client redraw. </p> <p>This code creates a client-side animation which loads an animated <filepath>GIF</filepath> file and plays it in an infinite loop. </p> </conbody><related-links><link href="GUID-829761B6-ECF7-5E15-A475-AEE357687067.dita"><linktext>Animation
+                overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A9803A57-BB43-53F3-97BA-3B5E91D925F0"><title> Subtitle Graphic Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Subtitle Graphic library. </p> <section><title>Purpose</title> <p>Subtitle Graphic is used to add subtitle CRP for Multimedia Framework (MMF). </p> <p><b>Subtitle Graphic library details</b> </p> <p>The Dynamic Link Library (DLL) that provides the Subtitle Graphic functionality and the library to which your code must include is identified in the table below. </p> <table id="GUID-8325B375-6524-5072-BE1A-CF35E0CFD5B9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>subtitlegraphic.dll</b>  </p> </entry> <entry><p> <b>subtitlegraphic.lib</b>  </p> </entry> <entry><p>These files are necessary to implement Subtitle Graphic functionality. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural relationship</title> <p>Subtitle Graphic is key library for the Video Subtitle CRP component to interact with MMF. </p> </section> <section><title>Description</title> <p>Subtitle Graphic displays subtitles artwork on the screen through its interaction with Client Process, Controller Process and WServ Process. For information about Client Process, Controller Process and WServ see Architectural relationship session in <xref href="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita#GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09/GUID-845818F1-02CA-59FE-85F8-22623880759D">Video Subtitle CRP Overview</xref>. </p> <p>In Client Process, the Client Application passes a subtitle support request to the Video Client API. In Controller Process, the Video Player Controller gets notified by MMF to handle the corresponding subtitle commands and stream. </p> <p>The subtitle commands and stream are decoded and rendered in Controller Process and sent to WServ Process. Video Player Controller provides artwork for Video Subtitle CRP to render content to the application window within WServ Process. </p> </section> <section><title>Key Subtitle Graphic Class</title> <p>The Subtitle Graphic functionality is provided by the following key class: </p> <p> <xref href="GUID-A6DB8EBA-56B2-35F2-A791-918400779A85.dita"><apiname>CMMFSubtitleGraphic</apiname></xref> is a client class representation of WServ Process. </p> </section> <section><title>Using Subtitle Graphic</title> <p>You can initialise and use the functionality to display subtitles artwork on a video window. </p> </section> </conbody><related-links><link href="GUID-A4354C8C-2A00-50C1-8DC6-6CE748BC01EB.dita"><linktext>Using Subtitle Graphic
+                </linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1"><title>secureid</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>secureid</codeph>  <varname>secureid</varname>  </p> <p>This keyword specifies the secure identifier of the executable. </p> <p>Each executable contains a secure identifier, which is guaranteed to be locally unique (i.e. in the phone where it is installed). </p> <p>The secure identifier (SID) may be used when verifying an executable's rights of access to system resources. It is also used to form the path name for an executable's private data area. </p> <p>The secureid need not be explicitly specified in the <filepath>.mmp</filepath> file, but if it is omitted, then the value of the UID3, specified elsewhere in the <filepath>.mmp</filepath> file, is used. If the UID3 is not specified, then the secureid will take the value <xref href="GUID-ADE2FE59-2086-3065-8668-D34618D666D2.dita"><apiname>KNullUID</apiname></xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A996FAAF-DB18-4F78-A8DA-873ACD771560.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-A996FAAF-DB18-4F78-A8DA-873ACD771560" xml:lang="en"><title>Finding
+the location of a mobile device</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Location
+Acquisition API allows applications to access the <xref href="GUID-BC8D1F02-3FBB-406A-80CE-5836E61EBD82.dita">location
+information</xref> of a mobile device regardless of the <xref href="GUID-647F0CA5-5568-4C72-9CB5-C8CBF09B4B4B.dita">location
+technology</xref> used. </p>
+<p>Typical use cases include:</p>
+<ul>
+<li><p>Finding the location of a mobile device by using the Global
+Positioning System (GPS).</p></li>
+<li><p>Finding the location of a mobile device by network based
+positioning.</p></li>
+<li><p>Basic calculations using location information such as distances,
+bearing, and timestamp (see <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classTPosition.html" format="application/java-archive"><codeph>TPosition</codeph></xref> and Extended
+location information)</p></li>
+</ul>
+<p>Important implementation considerations include:</p>
+<ul>
+<li><p>Applications should close their <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classRPositioner.html" format="application/java-archive"><codeph>RPositioner</codeph></xref> when
+they do not need positioning for an extended period of time. Also, when staying
+in background for more then a minute.<draft-comment time="2007-10-01T11:34">Question
+for the reviewers, is there any advice we can give the developers on this
+issue (For example, can developers use something in TPositionUpdateOptions
+to manage this issue?)</draft-comment></p></li>
+<li><p>The system automatically selects an appropriate positioning
+method, based on the type of the class given as input for Open (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classRPositionServer.html" format="application/java-archive"><codeph>RPositionServer</codeph></xref> <codeph>&amp;aPosServer</codeph>) method. The system tries all available methods until it succeeds. Generally
+applications use this method. For special cases, applications can use Open
+(<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classRPositionServer.html" format="application/java-archive"><codeph>RPositionServer</codeph></xref> <codeph>&amp;aPosServer</codeph>, <codeph>TPositionModuleId aModuleId</codeph>) to
+force system to use specified positioning method. In that case system does
+not fallback in case of failure</p></li>
+</ul>
+<note>
+<p>The Symbian SDK does not have a Map API, and therefore you must use
+a third party API to display the location information you receive on a map.</p>
+</note>
+<section id="GUID-7BB06E28-B1A5-4CBB-95B3-6F5735F945A6"><title>Getting the location
+of a device</title>
+<p>To find the location of a mobile device:</p>
+<ol>
+<li id="GUID-21F99413-A2DC-4588-856B-292FF3C0F6D4"><p>Use the methods
+of the Location
+Acquisition API to construct your application. </p>
+<itemgroup>
+<p>The <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classRPositionServer.html" format="application/java-archive"><codeph>RPositionServer</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classRPositioner.html" format="application/java-archive"><codeph>RPositioner</codeph></xref> classes
+are particularly relevant in getting the location of your device, which is
+typically stored in the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classTPositionInfo.html" format="application/java-archive"><codeph>TPositionInfo</codeph></xref> class.</p>
+<p>For information on some detailed uses of the API, see the Location Acquisition
+API Usage section for:</p>
+<ul>
+<li><p> list of the steps required
+for finding the location of a mobile device in a basic use case</p></li>
+<li><p>how to obtain the current location estimate</p>
+</li>
+<li><p>how to obtain an extended location estimate,
+including information such as bearing, speed, and available satellites, which
+is not normally returned with the current location estimate</p></li>
+<li><p>how to obtain your last known position
+information, using cached information if available. This means
+that this method does not retrieve the location information from the underlying
+positioning methods.</p></li>
+</ul>
+</itemgroup>
+</li>
+<li id="GUID-AC8282F7-4916-4364-960A-0217659C57DD"><p>Make sure <codeph>lbs.lib</codeph> is
+accessible to your linker when compiling your application by including it
+in your <xref href="GUID-1F7E1476-D7A3-49E4-B05B-F3A0FD6333B6.dita"><codeph>mmp</codeph></xref> file
+or by editing the project properties in your IDE, depending on your build
+environment.</p></li>
+<li id="GUID-6AF9355F-BB88-4C44-A0C7-96ED3B0EF720"><p>Make sure
+you have the correct capabilities information set for your application, depending
+on your application you need at least <codeph>Location</codeph>.</p></li>
+</ol>
+</section>
+<section id="GUID-3D55E67C-8A43-4214-AB1C-0924285B6DA3"><title>Additional information
+on locating your device</title>
+<p>For more information, see:</p>
+<ul>
+<li><p>The purpose and general overview of
+the Location Acquisition API.</p></li>
+<li><p>description and class structure of
+the API.</p></li>
+<li><p>a general overview on how to create applications using
+the API.</p></li>
+<li><p>for an example of how to use the Location Acquisition API,
+see the <codeph>LocationRefAppForS60</codeph> in the SDK (<codeph>&lt;SDK
+installation directory&gt;\S60CppExamples\AutoAdaptedToTouchEx</codeph>).</p>
+</li>
+</ul>
+</section>
+<section id="GUID-94FC6381-CDB3-4F70-B3F5-66D450F827EC"><title>Related APIs</title>
+<p>The Symbian platform also offers the following related
+services:</p>
+<ul>
+<li><p>EXIF API</p>
+<itemgroup>
+<p>Allows you to include data, such as location information, in image files.</p>
+</itemgroup>
+</li>
+<li><p>Landmarks API</p>
+<itemgroup>
+<p>Allows you to <xref href="GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita">store
+location information on your mobile device</xref>.</p>
+</itemgroup>
+</li>
+<li><p><xref href="GUID-34A82EC4-E795-4884-A1F0-616BFB38F7C3.dita">Bluetooth</xref></p>
+<itemgroup>
+<p>Allows you to use Bluetooth functions when creating connections between
+your mobile device and a Bluetooth enabled GPS receiver.</p>
+</itemgroup>
+</li>
+<li><p><xref href="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita">How
+to Get Location Information</xref></p>
+<itemgroup>
+<p>Allows you to use the Location Acquisition API to obtain the position
+of the mobile device from the LBS subsystem.</p>
+</itemgroup>
+</li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9A49E91-B4EC-5D92-A021-7D08F4ED094C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A9A49E91-B4EC-5D92-A021-7D08F4ED094C" xml:lang="en"><title>Text types</title><shortdesc>This document describes the Text data types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-317497AE-D70D-3FD5-9865-6446FF4AD035.dita"><apiname>TText</apiname></xref> represents a character in the natural character
+width for the Symbian platform build. For Unicode builds, (i.e. from v5.1
+onwards) this is 16 bits. For non-Unicode builds, this is 8 bits. </p>
+<p><xref href="GUID-0DC8E9A8-8B5A-3566-B1C5-27B6E4F47F3C.dita"><apiname>TText8</apiname></xref> is always available for build-independent 8-bit
+characters, and <xref href="GUID-9A863E0A-E588-367C-9444-C13AC0D44234.dita"><apiname>TText16</apiname></xref> is always available for build-independent
+16-bit characters. <xref href="GUID-317497AE-D70D-3FD5-9865-6446FF4AD035.dita"><apiname>TText</apiname></xref> is mapped onto either of these
+types, depending on the build.</p>
+<p><xref href="GUID-317497AE-D70D-3FD5-9865-6446FF4AD035.dita"><apiname>TText</apiname></xref> types are implemented as <xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> s
+of the appropriate size. <xref href="GUID-317497AE-D70D-3FD5-9865-6446FF4AD035.dita"><apiname>TText</apiname></xref> should be used for representing
+characters, as a reminder to the programmer.</p>
+<p>The <xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita"><apiname>TChar</apiname></xref> class wraps a character value and provides
+a number of utility functions to manipulate it and to test its properties,
+such as converting the character to uppercase and testing whether it’s a control
+character.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9A8C0C1-4B89-40FE-917E-7D4F7387DDA9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A9A8C0C1-4B89-40FE-917E-7D4F7387DDA9" xml:lang="en"><title>Using
+GThreads</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>GLib threads provide a portable way of writing multi-threaded applications.
+There are:</p>
+<ul>
+<li><p>primitives for mutexes to protect concurrent accesses to portions of
+the memory</p></li>
+<li><p>primitives for conditional variables to allow synchronization between
+threads</p></li>
+<li><p>primitives for thread-private data that every thread has an instance
+of</p></li>
+<li><p>APIs for creating and managing threads. </p></li>
+</ul>
+<p>To use thread-related APIs the application must link to <filepath>libgthread.lib</filepath>.
+The function <codeph>g_thread_init()</codeph> must be called to initialize
+the thread system before calling any other thread-related functions.</p>
+<note>The function <codeph>g_thread_init()</codeph> must be called only once.
+The second call to it will abort the application.</note>
+<p>The code given below verifies whether the thread system is initialized.</p>
+<codeblock xml:space="preserve">if (!g_thread_supported ()) 
+	g_thread_init (NULL);
+</codeblock>
+<p><codeph>g_thread_init()</codeph> can be called with a non-NULL parameter;
+however, the user must be sure of what is done since this will override the
+default thread implementation.</p>
+<p>The following example code explains the usage of some of the thread APIs.
+In the example code, create <codeph>NTHREADS</codeph> thread and wait in the
+main thread for all the threads to start before proceeding with some other
+work. Finally, join to all the threads so that the main thread waits for all
+the other threads to terminate.</p>
+<codeblock xml:space="preserve">#include &lt;glib.h&gt;
+
+/* g_mutex_lock is a macro that uses the dll global variable
+ * g_thread_functions_for_glib_use. To use the global variable
+ * we must include glib_global.h.
+ */
+#include &lt;glib_global.h&gt; // Always include as the last include.
+
+#define NTHREADS 5
+
+int no_threads = 0;
+GMutex *mutex;
+GCond *cond; 
+
+void* thread_function(void *data)
+{
+	/*
+	.
+	local data declaration
+	.
+	 */
+	
+	// lock on the mutex before changing the global variable no_threads
+	g_mutex_lock(mutex);
+	no_threads++;
+	
+	//do a broadcast on the conditional variable once NTHREDS have been created
+	if(no_threads == NTHREADS)
+		g_cond_broadcast(cond);
+	
+	//unlock the mutex
+	g_mutex_unlock(mutex);
+
+	/*
+	.
+	some code
+	.
+	 */
+	
+	return NULL;
+ 	
+}
+
+int main ()
+{
+	int i;
+	GThread *thread[NTHREADS];
+	/*
+	 .
+	 other local data declaration
+	 .
+ 	 */ 
+
+	
+	if(!g_thread_supported())
+		g_thread_init (NULL);
+	
+	mutex = g_mutex_new ();
+	cond = g_cond_new (); 
+ 	
+	for(i=0; i&lt;NTHREADS; i++)
+		thread[i] = g_thread_create(thread_function, NULL,TRUE, NULL);
+	
+	g_mutex_lock (mutex);
+	
+	if (no_threads &lt; NTHREADS)
+g_cond_wait (cond, mutex);
+	
+	g_mutex_unlock (mutex);
+	
+	/*
+	.
+	some code
+	.
+	 */
+	 
+	for(i=0; i&lt;NTHREADS; i++)
+		g_thread_join(thread[i]);
+	 
+	g_mutex_free(mutex);
+	g_cond_free(cond);
+	
+	/*
+	.
+	some code
+	.
+	 */
+	 
+	return 0;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC"><title>MIDI Playing</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to play MIDI data using the MIDI Client. </p> <section id="GUID-53D7B505-C4AE-51E4-A898-AABCD4E2C037"><title>Purpose</title> <p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>CMidiClientUtility</apiname></xref> provides an interface to open, play and obtain information in MIDI format. The MIDI data can supplied either in a file, a descriptor or a URL. </p> <p>For the purposes of this description, the playing process has been broken down into the following sections. </p> <ul><li id="GUID-90EBD7DC-CD75-5938-917D-550D3BF90196"><p> <xref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita#GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC/GUID-FD49B0DB-2CC8-53CF-B114-FE9D62C3FC5F">Playing</xref> - describes the options for playing MIDI resources. This includes the ability to play MIDI events in realtime during playback. </p> </li> <li id="GUID-6F69D654-70EF-58AA-BD50-FC266B16689E"><p> <xref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita#GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC/GUID-D7DF30C6-5763-521C-808C-189B04E7B576">Opening</xref> - describes the options available for opening MIDI resources after the <codeph>CMidiClientUtility</codeph> object has been instantiated. </p> </li> <li id="GUID-3079F694-D68F-5358-87F1-7D80A0444F24"><p> <xref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita#GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC/GUID-32FDA9B1-099C-5FC3-9B52-AE2F288F6B9C">Control</xref> - describes how to control the MIDI player, or a MIDI song. </p> </li> <li id="GUID-B1D70D5F-3D60-566A-A6F6-8B65B0D43C99"><p> <xref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita#GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC/GUID-E7257586-812E-52D6-A379-1077F67F1393">Information</xref> - describes how you can retrieve information from the MIDI player. </p> </li> <li id="GUID-A4076EEF-3C35-5F5D-8FAB-83BB201BD628"><p> <xref href="GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC.dita#GUID-A9AAADAF-12B1-5D0C-B8B3-6E7FDB9823DC/GUID-DE0AB6B1-70E7-5DD2-8ED6-410861FDF939">Events</xref> - handling MIDI events and notifications. </p> </li> </ul> </section> <section id="GUID-FD49B0DB-2CC8-53CF-B114-FE9D62C3FC5F"><title>Playing</title> <p>This class is intended for playing MIDI resources only. <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>CMidiClientUtility</apiname></xref> is capable of playing more than one clip within the same instance of the object. </p> <p>The play related methods are as follows: </p> <ul><li id="GUID-96545E05-E2EE-559D-90D3-29DCD27488C2"><p> <b>Starting and Stopping</b>  </p> <p>You can use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>Play</apiname></xref> to start a playback of the initialised MIDI resource at the current volume and priority levels, starting from the current playback head position, or together with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetPositionMicroSecondsL</apiname></xref> to set a starting position. </p> <p>You can also play a MIDI note even without a MIDI source, using <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>PlayNote</apiname></xref>, for example: </p> <codeblock id="GUID-2866D894-4189-5F8F-BA3E-980AD52C85B5" xml:space="preserve">CMidiClientUtility* midi=CMidiClientUtility::NewL(*this);
+CleanupStack::PushL(midi);
+TTimeIntervalMicroSeconds duration(1000000);
+midi-&gt;PlayNoteL(1, 60, duration, 64, 64) //play middle C on channel 1 for 1 second at average velocity.
+CleanupStack::PopAndDestroy();
+</codeblock> <p>When you use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>Stop</apiname></xref> to halt the playback of the audio sample as soon as possible, nothing happens if playback has already completed. The head is positioned at the last played data. </p> </li> <li id="GUID-39951BBE-2949-5DF6-A2B7-4A36797FC3D2"><p> <b>MIPs and Events</b>  </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SendMipMessageL</apiname></xref> to send an SP-MIDI MIP message to the MIDI player. </p> <p>You can send real-time MIDI events to the MIDI player using <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>PlayNote</apiname></xref> or <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NoteOnL</apiname></xref>, or <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>StopNote</apiname></xref> and <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NoteOffL</apiname></xref>. The MIDI file must be available to play back at the same time. </p> </li> <li id="GUID-8B3E305F-2BEF-5963-91DA-9B82F3335E2B"><p> <b>Timing</b>  </p> <p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetPositionMicroSecondsL</apiname></xref> provides a mechanism to synchronise the playback of the MIDI player with an external time base (the MIDI player act as a slave). </p> </li> </ul> </section> <section id="GUID-D7DF30C6-5763-521C-808C-189B04E7B576"><title>Opening</title> <p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>CMidiClientUtility</apiname></xref> provides methods to play multiple MIDI resources within a single instance. MIDI resources are not be opened during instantiation of the <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>CMidiClientUtility</apiname></xref> object. Instead, all MIDI resources must be opened using one of the open methods listed below. </p> <p>The following open methods are provided: </p> <codeblock id="GUID-92269EFD-C239-5377-A8D3-58086202535C" xml:space="preserve">OpenFileL(const TDesC&amp; aFileName);
+
+OpenDesL(const TDesC8&amp; aDescriptor);
+
+OpenUrlL(const TDesC&amp; aUrl, TInt aIapId = KUseDefaultIap, const TDesC8&amp; aMimeType=KNullDesC8);</codeblock> <p>As soon as the open method has completed, successfully or otherwise, the callback function <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MMIDIClientUtilityObserver::MmcuoStateChanged()</apiname></xref> is called. </p> <p>If a MIDI file is already open and playing, use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>Stop()</apiname></xref> followed by <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>Close()</apiname></xref> to unload the clip before specifying new MIDI data to open. </p> </section> <section id="GUID-32FDA9B1-099C-5FC3-9B52-AE2F288F6B9C"><title>Control</title> <p>You can control the MIDI player, or a MIDI song, in the following ways: </p> <ul><li id="GUID-93109D35-7EC1-5F91-8DD1-E5761DDA4705"><p> <b>Setting the head position</b>  </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetPositionMicroSecondsLSet</apiname></xref> to set the playback head according to the time interval measured from the beginning of the MIDI data. </p> </li> <li id="GUID-AE9AFBAF-FC40-5A6E-A857-A1C42C0F9C66"><p> <b>Timing</b>  </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetRepeatsL</apiname></xref> to set the number of times the playback of the MIDI source is to be repeated. This can be set to infinite. You can also insert a period of silence after each repitition. </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetStopTimeLSet</apiname></xref> to set the media time that the player must stop. </p> </li> <li id="GUID-F8830C38-4E52-55C2-8F08-01693294E05C"><p> <b>Muting</b>  </p> <p>Mute or unmute a MIDI channel or track with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetMuteL</apiname></xref>. </p> </li> <li id="GUID-2CA8A15E-D449-5D7B-87F6-0CC3D50F585B"><p> <b>Sound</b>  </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetTempoL</apiname></xref> to set the playback tempo of the current MIDI song. </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetPitchTranspositionL</apiname></xref> to set the global pitch transposition for the current MIDI song. </p> <p>Use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetVolumeL</apiname></xref> to sets the volume of the specified MIDI channel. </p> <p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetInstrumentL</apiname></xref> sets the program for the specified MIDI channel. </p> <p>You can send a "note on" message to a MIDI channel with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NoteOnL</apiname></xref>, and send a "note off" message with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NoteOffL</apiname></xref>. </p> </li> <li id="GUID-C9E56A2D-1C55-5084-BF06-15C55A37F3E0"><p> <b>Sound bank</b>  </p> <p>If you want to send a user instrument to the sound bank to replace a factory instrument, use <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>LoadInstrumentL</apiname></xref>. </p> <p>Set an alternative sound bank to the default with<xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetInstrumentLActivate</apiname></xref>, and reset to the default soundbank with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>SetInstrumentLReturn</apiname></xref>. </p> </li> </ul> </section> <section id="GUID-E7257586-812E-52D6-A379-1077F67F1393"><title>Information</title> <p>The <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>CMidiClientUtility</apiname></xref> class can return information about the MIDI player or MIDI songs in the following ways: </p> <ul><li id="GUID-FEDAA9AB-04F4-5C2E-8D7D-AA447AEAD45D"><p> <b>Timing</b>  </p> <p>The player's current media time is gained from <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>PositionMicroSeconds</apiname></xref>. This is the current playback head position for the MIDI data. The media time can be set both in temporal as well as metrical formats. </p> <p>The duration of the MIDI data is retrieved with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>DurationMicroSecondsL</apiname></xref> (temporal) and <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>DurationMicroBeatsL</apiname></xref> (metrical). The duration is based on the MIDI data played back at its default rate. </p> <p>The defined time at which the player will stop is returned by <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>StopTimeL</apiname></xref>. In case the stop time is not set, the API returns a pre-defined constant value. </p> </li> <li id="GUID-6312E100-D907-5B50-83C5-624958559018"><p> <b>Formats</b>  </p> <p>You can get the format of the MIDI data (such as SMF, XMF, MIME ) <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>using MimeTypeL</apiname></xref>. </p> <p>Use these functions to get the MIME content types supported <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NumberOfMimeTypesSupportedL</apiname></xref> and <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MimeTypeL</apiname></xref>. </p> </li> <li id="GUID-68502473-DF7A-5FCB-963A-5F3F69AD04C5"><p> <b>Song information</b>  </p> <p>You can discover a wide range of information about the current MIDI data. </p> <table id="GUID-94A17BB9-B088-57B1-B402-5A009EEFB336"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p>The number of channels in the MIDI data </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>ChannelsUsedL</apiname></xref>  </p> </entry> </row> <row><entry><p>The number of tracks in the MIDI data </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NumTracksL</apiname></xref>  </p> </entry> </row> <row><entry><p>The current playback tempo of the MIDI song </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>TempoMicroBeatsPerMinuteL</apiname></xref>  </p> </entry> </row> <row><entry><p>The global pitch transposition currently in use </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>PitchTranspositionCentsL</apiname></xref>  </p> </entry> </row> <row><entry><p>The volume assigned to a specified MIDI channel </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>VolumeL</apiname></xref>  </p> </entry> </row> <row><entry><p>A list of installed instrument banks </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NumberOfBanksL</apiname></xref> and <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>GetBankIdL</apiname></xref>. </p> </entry> </row> <row><entry><p>Program numbers for a given instrument bank </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NumberOfInstrumentsL</apiname></xref> and <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>GetInstrumentIdL</apiname></xref>  </p> </entry> </row> <row><entry><p>The name of the program for a given instrument bank and program number </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>InstrumentNameL</apiname></xref>  </p> </entry> </row> <row><entry><p>The name of the key for a given instrument bank, program number and key </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>PercussionKeyNameL</apiname></xref>  </p> </entry> </row> <row><entry><p>Information regarding whether the sound bank can be queried </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>NumberOfBanksL</apiname></xref> and <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>GetBankIdL</apiname></xref>  </p> </entry> </row> </tbody> </tgroup> </table> </li> </ul> </section> <section id="GUID-DE0AB6B1-70E7-5DD2-8ED6-410861FDF939"><title>Events</title> <p>The MIDI API allows you to monitor MIDI progress. </p> <ul><li id="GUID-88647BBF-920E-5C66-A971-070C85AC65A9"><p> <b>Status</b>  </p> <p>You can discover the current state of the MIDI data with <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>Status</apiname></xref>. This can tell you if MIDI data is playing, or a MIDI file is open but no playback operation is in progress. </p> </li> <li id="GUID-9D4C8BF4-B4F6-584C-B9C2-0294C88E1A0E"><p> <b>Callback mechanisms</b>  </p> <p>The MIDI player provides a set of callback mechanisms. </p> <table id="GUID-433A8323-521A-5CD0-98B9-4001502B45DC"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p>The player has stopped: </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoStateChanged</apiname></xref>. You can pass the media time that the player stopped with the callback mechanism. </p> </entry> </row> <row><entry><p>The player has reached the end of the media </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoStateChanged</apiname></xref>. The playback has been completed. You can pass the media time that the player stopped with the callback mechanism. </p> </entry> </row> <row><entry><p>The playback tempo has changed </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoTempoChanged</apiname></xref>. The callback returns the new tempo as a parameter. </p> </entry> </row> <row><entry><p>A SP-MIDI MIP message has been received </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoMipMessageReceived</apiname></xref>  </p> </entry> </row> <row><entry><p>Metadata found </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoMetaDataEntryFound</apiname></xref>. The metadata contained in the MIDI data is passed to the application. </p> </entry> </row> <row><entry><p>The playback of SP-MIDI file has gone silent due to system constraints </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoStateChanged</apiname></xref>  </p> </entry> </row> <row><entry><p>The song position has been changed </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoPositionChanged</apiname></xref>. The callback returns the new song position as a parameter. </p> </entry> </row> <row><entry><p>The playback state has changed </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoStateChanged</apiname></xref>. The callback returns the new playback state as a parameter. </p> </entry> </row> <row><entry><p>The volume of one of the channels has been changed </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoVolumeChanged</apiname></xref>. The API provides a callback mechanism to indicate that. The callback returns the channel number and the new volume level as parameters. </p> </entry> </row> <row><entry><p>One of the channels' muting status has been changed </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoMuteChanged</apiname></xref>. The callback returns the channel number and the new channel muting status as parameters. </p> </entry> </row> <row><entry><p>The audio policy has taken over the MIDI player resources </p> </entry> <entry><p> <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoStateChanged</apiname></xref>  </p> </entry> </row> </tbody> </tgroup> </table> </li> </ul> <p>The API also provides a callback mechanism to synchronise the playback of an external device with MIDI player's time base (MIDI player acting as a master): <xref href="GUID-533353BF-BBDC-3841-A46F-12B5FD67E186.dita"><apiname>MmcuoSyncUpdateL</apiname></xref>  </p> </section> <section><title>See also</title> <p> <xref href="GUID-61E219A3-7D9D-5AAA-B6B3-61F0749E12B3.dita">MIDI Client Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400-master.png has changed
Binary file Symbian3/SDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e313619_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9DBE9E4-8239-526C-9D57-447DA628EE59.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-A9DBE9E4-8239-526C-9D57-447DA628EE59" xml:lang="en"><title>Deleting
+the SNAP Preference</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to delete the existing SNAP preference used
+by an email account. </p>
+<section><title>Procedure</title> <ol id="GUID-FA9EAADC-618E-5334-8843-C1D32F5AD98C">
+<li id="GUID-54BBC6CB-3C59-51F6-9B0B-99C4EAB66A25"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-0C786AAC-9DAB-5426-B49B-63B92F1469BC"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-7E68C505-F5F6-5BCA-AA01-2382CCD544D0"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class. </p> <p>Where, &lt;protocol&gt;
+is either Imap4, Pop3, or Smtp. </p> </li>
+<li id="GUID-A869FE3C-52BA-548E-A6A6-0829AE638FC0"><p>Populate the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+and the <codeph>CIm&lt;protocol&gt;Settings</codeph> class from central repository
+(CenRep) using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Load&lt;protocol&gt;SettingsL</codeph> function. </p> </li>
+<li id="GUID-0B350FE9-28DF-519D-B4B9-A960341026DE"><p>Use the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita#GUID-9CAB9BE5-7233-3A01-A906-756177CF4460/GUID-E90DA071-41EE-37F8-86DF-18D7869806DD"><apiname>CImIAPPreferences::DeleteSnap()</apiname></xref> function
+to delete SNAP preferences that are used for the connection. </p> </li>
+<li id="GUID-F2473DCE-24BB-5FA5-ABCE-18CA8C88C77E"><p>Specify the IAP preference
+by using the existing <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> APIs. </p> </li>
+<li id="GUID-8DE27592-9F1A-5999-A3C7-82CB4C21CED9"><p>Store the updated settings
+classes to CenRep using the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref>::<codeph>Save&lt;protocol&gt;SettingsL</codeph> function. </p> </li>
+</ol> <note> All instances of &lt;protocol&gt; in the preceding steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>,
+or <codeph>Smtp</codeph>.</note></section>
+<section><title>See also</title> <p> <xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e6837_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-A9EA16CE-2F80-5344-827D-0C2ED5812788.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-A9EA16CE-2F80-5344-827D-0C2ED5812788"><title>File store type and layout</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>File stores can be given a unique identity, known as the file store type, in order to differentiate them from each other.</p> <p>The file store type is defined as a <codeph>TUidType</codeph> which can be constructed from one, two or three UIDs, i.e. <codeph>TUid</codeph> components.</p> <p>The first UID component identifies the layout of the file store; i.e. it identifies the file store as either a direct file store or a permanent file store. The second and/or the third UID components are application dependent.</p> <p>After creating a new file store, an application must set the type of the file store using the file store's <codeph>SetTypeL()</codeph> member function.</p> <p>As a minimum requirement, the first UID component of the <codeph>TUidType</codeph>, which identifies the layout of the file store, must be specified. This component takes one of the values:</p> <ul><li id="GUID-0BFB4EDE-6C99-586F-BEE4-2F85BF338512"><p><codeph>KPermanentFileStoreLayout</codeph> to identify a permanent file store.</p> </li> <li id="GUID-32FD6BB3-1D1B-5CC4-BC3C-903655E08E86"><p><codeph>KDirectFileStoreLayout</codeph> to identify a direct file store.</p> </li> </ul> <p>The following code fragment is typical:</p> <codeblock id="GUID-DA3A8804-C597-522E-8AB4-2D971F3085CB" xml:space="preserve">...
+CFileStore* store = CDirectFileStore::ReplaceLC(...,...,...);
+store-&gt;SetTypeL(KDirectFileStoreLayoutUid);
+...</codeblock> <p>If an application needs to explicitly set the second or the third UID component, then the <codeph>TUidType</codeph> object must be constructed explicitly and passed to <codeph>SetTypeL()</codeph>; for example:</p> <codeblock id="GUID-0389703A-8AAD-5716-863C-9121B26097DE" xml:space="preserve"> ...
+ CFileStore* store = CDirectFileStore::ReplaceLC(...,...,...);
+ TUidType thetype(KDirectFileStoreLayoutUid,...,...);
+ store-&gt;SetTypeL(thetype);
+ ...</codeblock> <p>The file store's type can be retrieved by calling the file store’s <codeph>Type(</codeph>) member function.</p> <p>The file store's layout can be retrieved by calling the file store’s <codeph>Layout()</codeph> member function.</p> <section><title>See also</title> <p><xref href="GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932.dita">UID manipulation</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA02BFA9-E62E-56FC-BF22-8FE092ABD9DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AA02BFA9-E62E-56FC-BF22-8FE092ABD9DA"><title>The wsini.ini File</title><shortdesc>This topic provides an introduction to the <filepath>wsini.ini</filepath> file, which configures the Window Server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use the parameters in the <filepath>wsini.ini</filepath> file to configure the emulator and the shell running on a target phone for debugging or test purposes. For example, you can specify parameters to turn on Window Server logging in order to log all Window Server events. This is useful for debugging Window Server client applications. Window Server logging is controlled by parameters in the <filepath>wsini.ini</filepath> file. Other <filepath>wsini.ini</filepath> settings control the choice of shell, the shell reboot behavior, and configure screens and plug-ins. </p> <p>On a multi-screen device, you can specify the screen-specific parameters separately for each screen. Each screen can have several modes (such as portrait and landscape). For each mode you can specify a variety of parameters, such as scaling and the origin from which all top-level windows are positioned. </p> </conbody><related-links><link href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita"><linktext>The wsini.ini File
+                Reference</linktext> </link> <link href="GUID-6E8807F5-9CC0-5A70-8182-22230D43AA9E.dita"><linktext>Setting Up Window Server
+                Logging</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D"><title>Filters</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A filter is used to alter a transaction moving to or from the server. Behaviours can be implemented in filters to modify transactions, for example, change headers, add headers, and remove headers. The transaction body can also be changed to terminate or cancel a transaction, either to resubmit a replacement, or perform other operations on the client device using information from transaction headers or body. </p> <p>HTTP filters can be loaded explicitly (by the client) or implicitly. The way the filter is loaded is dependent on the <codeph>default_data</codeph> setting in the <i>IMPLEMENTATION_INFO</i> section of the filter's resource file. The options are: </p> <ul><li id="GUID-1802931A-BEEB-5D0C-A512-AE884DA30D56"><p> <codeph>HTTP/+FILTERNAME</codeph>: The filter is always loaded </p> </li> <li id="GUID-D9096021-077B-53A3-AFB3-D4F72428246D"><p> <codeph>HTTP/FILTERNAME</codeph>: The filter is loaded unless the client removes it </p> </li> <li id="GUID-CFF97C97-8500-551A-80E8-81CE73999E01"><p> <codeph>HTTP/-FILTERNAME</codeph>: The filter is not loaded unless the client adds it </p> </li> </ul> <p>In the preceding options, <codeph>FILTERNAME</codeph> is the name of your filter. </p> <p>An <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref> contains a queue that can hold zero or more filters, which are arranged in a priority order. The filter objects are shared amongst all transactions. To join the filter queue, a filter must be registered on the session, providing registration details that specify its triggers. </p> <p>Filter triggers include: particular events, the presence of particular headers, or particular status codes. </p> <p>When an event occurs on a transaction, the event traverses the filter queue either from the client to the server, or from the server back to the client. Priority order determines which filters are visited first when events traverse away from the client (that is, events that originate from the client such as <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-8E201ED0-7AC9-37D4-A5CD-E26C81A72CC1"><apiname>THTTPEvent::ESubmit</apiname></xref>, which is sent when <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-F3A8B916-5618-319D-89D8-9B7B04A8A2FC"><apiname>RHTTPTransaction::SubmitL()</apiname></xref> is called). Reverse priority order applies to events that traverse back towards the client (that is, those that originate from the server, such as <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-0056851B-2933-3701-BFE2-E28162F4EE5B"><apiname>THTTPEvent::EResponseComplete</apiname></xref>). </p> <section><title>Adding, removing and querying filters</title> <p>When an <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref> is opened, a standard set of filters is pre-installed. The client does not need to do anything further if these filters are acceptable. The standard set includes: </p> <ul><li id="GUID-7315BBF2-709E-5F18-85D5-9597F340DE21"><p>Redirection filter </p> </li> <li id="GUID-6110EFD0-D9B2-5328-9CE5-BD0A8729D87B"><p>Validation filter </p> </li> </ul> <p>The client may add more filters of its own, or remove filters from the pre-installed set. <xref href="GUID-1B7541CC-9B0B-361C-9BF0-64C027DB6745.dita"><apiname>RHTTPFilterCollection</apiname></xref>, for which a handle is obtained using <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita#GUID-651801A5-5473-3856-9647-46823598C5C1/GUID-E1775A83-8494-3B3F-8DFA-57F4FB64F35A"><apiname>RHTTPSession::FilterCollection()</apiname></xref>, provides facilities for adding and deleting filters, and for querying what filters are installed. <xref href="GUID-2495D233-106D-3223-A84B-2C04EEB1E98F.dita"><apiname>TFilterConfigurationIterator</apiname></xref> allows a client to enumerate and query all available filters, and to install and uninstall a selected one. </p> <p>Filters may only be added to, or removed from, a session when no transactions are opened on that session. This is easy to determine immediately when a session is opened. To help the client in determining the condition later, <xref href="GUID-1B7541CC-9B0B-361C-9BF0-64C027DB6745.dita#GUID-1B7541CC-9B0B-361C-9BF0-64C027DB6745/GUID-C9809478-62A4-37EF-B582-9128DDEA4812"><apiname>RHTTPFilterCollection::CanChangeFilters()</apiname></xref> is provided. </p> <p>The collection of currently installed filters can be queried using an iterator. The following sample code demonstrates the use of the iterator: </p> <codeblock id="GUID-548547E4-408F-5F2A-82B4-92CD23ABB007" xml:space="preserve">void CHttpClient::ShowFilters()
+    {
+    RHTTPFilterCollection filtColl = iSess.FilterCollection();
+    THTTPFilterIterator iter = filtColl.Query();
+
+    THTTPFilterRegistration regInfo;
+    iter.First();
+    TInt lines = 0;
+    while (!iter.AtEnd())
+        {
+        // Get next filter registration info
+        regInfo = iter();
+
+        TBuf&lt;KMaxFilterNameLength&gt; name;
+        name.Copy(iSess.StringPool().StringF(regInfo.iName).DesC().Left(KMaxFilterNameLength));
+        TBuf&lt;KMaxHeaderNameLength&gt; header;
+        header.Copy(iSess.StringPool().StringF(regInfo.iHeader).DesC().Left(KMaxHeaderNameLength));
+
+        Printf(_L("\n%16S | %4d  | %4d   | %16S |   %3d  | %2d"),
+        &amp;name, regInfo.iPosition, regInfo.iEvent.iStatus, &amp;header, regInfo.iStatus, regInfo.iHandle);
+        ++iter;
+        }
+    filtColl.Close();
+    }</codeblock> </section> <section><title>Authentication filter</title> <p>The authentication filter provides an easy way of supporting basic and digest authentication, as defined in RFC2617. As it needs to get passwords, it is not installed as standard, but only when a <xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita"><apiname>MHTTPAuthenticationCallback</apiname></xref> installs it. To use it, you need to implement a subclass of <xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita"><apiname>MHTTPAuthenticationCallback</apiname></xref>, and should refer to the documentation of that class for more details. </p> <p>Users of HTTP authentication should be aware of its security limitations. In particular, basic authentication passes passwords in plaintext. <xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita#GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC/GUID-1B96E431-2572-30D2-AEFD-E1460C477A93"><apiname>MHTTPAuthenticationCallback::GetCredentialsL()</apiname></xref> is told the authentication scheme being used, and applications where plaintext passwords would be an issue must consider rejecting challenges using basic authentication. See section 4 of RFC2617 for more details. </p> <p>The authentication filter supports the following: </p> <ul><li id="GUID-B330D7E7-98A5-5185-9DFF-9826FC2B8668"><p>Basic (Base64) authentication </p> </li> <li id="GUID-D882595D-FB59-5895-B8FF-B1F836EA6A39"><p>Digest authentication using the MD5 algorithm and the 'auth' Quality of Protection. </p> </li> <li id="GUID-D17C8599-6052-5F84-B1B1-5991CF864318"><p>The older RFC2069 style digest authentication for backwards compatibility. </p> </li> </ul> <p>The MD5-sess algorithm is not supported as no major servers support it. The 'auth-int' QoP (Quality of Protection) is not supported as it does not add any real benefit. For integrity checking, SSL is preferred. </p> <p>The filter remembers passwords and attempts to use them for subsequent challenges where appropriate. It will forget them if they turn out to be wrong. Currently, there is no facility to persist the passwords. For basic authentication, an attempt is made to supply the username and password with the first request, if the URI suggests that a previously stored username and password are applicable. This is not done for digest, as that introduces extra complications into the digest algorithm. </p> <p>If an authentication challenge is received which the filter cannot understand, or if the <xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita"><apiname>MHTTPAuthenticationCallback</apiname></xref> does not supply credentials (returns <codeph>EFalse</codeph>) the filter effectively does nothing, that is, the client will receive a 401 error response in the same way as other error responses. </p> <p>There are two alternative methods of supplying the username and password with a request. Clients that already know the username and password can consider using these methods and getting their <xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita#GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC/GUID-1B96E431-2572-30D2-AEFD-E1460C477A93"><apiname>MHTTPAuthenticationCallback::GetCredentialsL()</apiname></xref> to always return <codeph>EFalse</codeph>. The first method is to supply a URI of the form <codeph>http://&lt;username&gt;:&lt;password&gt;@host/</codeph>. In this case, the username and the password are removed from the URI when it is submitted, but will be used for any subsequent authentication challenge. The other method is to define transaction properties called 'username' and 'password' containing the username and password. </p> <p>The filter is registered at position <xref href="GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841.dita#GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841/GUID-CD1FDCD5-57B8-3888-8753-55A1F9F31466"><apiname>MHTTPFilter::EStatusCodeHandler</apiname></xref> for handling the '401' return code, and at position <codeph>EStatusCodeHandler</codeph> + 1 for handling submit events. </p> </section> <section><title>Redirection filter</title> <p>The Redirection filter handles 300-series status codes from HTTP servers. These are used to tell the client of the correct location of a resource that has moved. Most clients will want this situation to be handled transparently: that is, to make a new request for the resource at the location specified by the server using the 'Location' header. </p> <p>When an HTTP response is received that includes the status codes 300, 301, 302, 303, or 307, the Redirection filter cancels the current transaction and uses the URI from the 'Location' response header to resubmit a request on the same transaction. This means that all the headers in the original client request are preserved in the new request. </p> <p>If no 'Location' header is found in the server response, the filter sends a <xref href="GUID-704A16D9-577F-3F63-8CE9-97397BE3318C.dita"><apiname>KErrHttpRedirectNoLocationField</apiname></xref> error to the client. The response body can contain further information about the possible location of the resource. </p> <p>In the case of the HTTP 305 'Use Proxy' status code, the transaction is not resubmitted. Instead, a <xref href="GUID-C02EC58E-DE33-3BA8-BB32-4BFCA19F537A.dita"><apiname>KErrHttpRedirectUseProxy</apiname></xref> error is sent to the client. The 'Location' header will contain the address of a proxy to which the client must send the request for that URL. In practice, this means the client should modify the properties of their current <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref> as described in <xref href="GUID-F9184A82-A467-5022-B02F-2FDF52258618.dita">Session and transaction properties</xref>. </p> <p>HTTP 304 'Not Modified' responses are not handled by the redirection filter as they are used to indicate that the client contains a valid copy of the resource in the cache. </p> <p>It is possible for the client request to be redirected more than once. To prevent the request getting into an endless loop of redirections, successive redirections that the filter will handle is limited to five. </p> </section> <section id="GUID-8DB0C8B3-4ED6-59D6-A796-F4EA2DE5DC5B"><title>Validation filter</title> <p>The Validation filter has three main roles: </p> <ul><li id="GUID-8B074A32-E937-5179-9DC1-3DE0B89A055A"><p>It checks the presence of a request body to ensure that it is consistent with the HTTP method in use. </p> </li> <li id="GUID-79346A52-732A-5D1D-8AB0-3B58A9C932B9"><p>It validates client requests to ensure that they do not include inappropriate header fields. </p> </li> <li id="GUID-71D96A1F-29EB-5D3E-AF2A-5607A9C7DBF6"><p>It provides a simplified result status for transactions. </p> </li> </ul> <p>Request bodies are only allowed for HTTP methods POST and PUT. If GET, HEAD, or TRACE requests contain a body, the filter will cancel the transaction and send a <xref href="GUID-18F87B91-ADD5-36FE-A772-0481294D1C4A.dita"><apiname>KErrHttpRequestHasBody</apiname></xref> error event to the client. </p> <p>If the request headers contain any fields that are defined by RFC 2616 as response header fields, then the error event <xref href="GUID-5B018652-B72C-397F-B508-E9E61683DC82.dita"><apiname>KErrHttpInvalidHeaderInRequest</apiname></xref> is sent to the client. Invalid fields are removed, and the transaction is allowed to continue. </p> <p>If the request does not have a body, and the request headers contain any fields that are defined by RFC 2616 as entity header fields, then <xref href="GUID-5B018652-B72C-397F-B508-E9E61683DC82.dita"><apiname>KErrHttpInvalidHeaderInRequest</apiname></xref> is sent to the client, the fields are removed, and the transaction continues. </p> <p>If the request has a body, and the 'Content-Type' header is not present in the request headers, then the transaction will be cancelled and the <xref href="GUID-6962B618-0A93-36AE-8E79-C970EEA7A845.dita"><apiname>KErrHttpEntityHeaderMissingContentType</apiname></xref> error event is sent to the client. </p> <p>See also <xref href="GUID-F6CF2920-9095-568B-B332-D5F4A05BD23A.dita">Headers</xref> and the header enumerations in HTTP for further information about different header types. </p> <p>When a transaction response is received, the validation filter will determine from the status code if the transaction has been a success or a failure. The two events <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-619AC671-5679-3036-82C9-DAAF5B892100"><apiname>THTTPEvent::ESucceeded</apiname></xref> and <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-6BC33448-9CB9-3488-87DD-EFB0C5435044"><apiname>THTTPEvent::EFailed</apiname></xref> are used to inform the client of this. The client can assume that no further events for that transaction will arrive after it has received either of these two events. </p> </section> <section><title>Configuring and installing filters</title> <p>Apart from the standard set of filters, the client must manually install any other filter it wishes to use. Some filters may need to be configured before they can be installed; this should be done when the filter is instantiated. </p> <p>An example of where filter configuration is needed is the authentication filter, which requires a callback to gather user credentials from the client. The client must implement the <xref href="GUID-4818EAC3-BE59-3438-A864-E4746FE8DDBC.dita"><apiname>MHTTPAuthenticationCallback</apiname></xref> class, and at the time it opens an HTTP session must specify the object that implements the callback to configure the filter. </p> <p>From <filepath>httpexampleclient.h</filepath>: </p> <codeblock id="GUID-45462F17-0A0F-57A2-ACBC-F96FBAAE67D5" xml:space="preserve">class CHttpClient : public CBase, public MHTTPDataSupplier, 
+                    public MHTTPAuthenticationCallback
+    {
+public:
+    ...
+    // methods inherited from MHTTPAuthenticationCallback
+    virtual TBool GetCredentialsL(const TUriC8&amp; aURI, RString aRealm, 
+                                 RStringF aAuthenticationType,
+                                 RString&amp; aUsername, 
+                                 RString&amp; aPassword);
+    ...</codeblock> <p>From <filepath>httpexampleclient.cpp</filepath>: </p> <codeblock id="GUID-8B67CD14-96BC-514E-85E8-A762948F4388" xml:space="preserve">void CHttpClient::ConstructL()
+    {
+    ...
+
+    // Open the RHTTPSession and install this class as the callback for authentication requests
+    iSess.OpenL();
+    InstallAuthenticationL(iSess);
+    ...
+    }</codeblock> <p>In this case, <filepath>MHTTPAuthenticationCallback::InstallAuthenticationL()</filepath> is already implemented in the library. It creates and installs the filter on the client's behalf: </p> <codeblock id="GUID-EC6D0967-F3F3-54C0-AAD8-B25700B84AB6" xml:space="preserve">void MHTTPAuthenticationCallback::InstallAuthenticationL(RHTTPSession aSession)
+    {
+    // Create an authentication filter. This will install itself, and
+    // will delete itself when uninstalled, so we don't need to keep
+    // track of it at all.
+    CAuthenticationFilter::NewL(*this, aSession);
+    }</codeblock> <p>However in other cases, the client may have to construct the filter itself and configure it, before installing it on the session, for example: </p> <codeblock id="GUID-79FDC884-B74C-5F22-BD0D-31CD6B1B4050" xml:space="preserve">void CAuthenticationFilter::ConstructL(RHTTPSession aSession)
+    {
+    ...
+    // Register for WWW-Authenticate headers and 401 status codes
+    aSession.FilterCollection().AddFilterL(*this, 
+        THTTPEvent::EGotResponseHeaders, 
+        iStringPool.StringF(HTTP::EWWWAuthenticate,RHTTPSession::GetTable()), 
+        401, 
+        EStatusCodeHandler, 
+        iStringPool.StringF(HTTP::EAuthentication,RHTTPSession::GetTable()));
+    ...
+}</codeblock> </section> <section><title>Writing a filter</title> <p>This section provides an overview of writing filters. Refer to the functions mentioned for more details. </p> <p>Filters need to derive from the <xref href="GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841.dita"><apiname>MHTTPFilter</apiname></xref> class. Normally, the constructor or <codeph>NewL()</codeph> of a filter would take a session as a parameter, and would then register itself by calling <xref href="GUID-1B7541CC-9B0B-361C-9BF0-64C027DB6745.dita#GUID-1B7541CC-9B0B-361C-9BF0-64C027DB6745/GUID-B4659DF8-C5DD-30DC-AFF8-D4F22D540386"><apiname>RHTTPFilterCollection::AddFilterL()</apiname></xref>. </p> <p>Filters can often delete themselves automatically. If a filter only registers itself once, it can delete itself simply by overriding <codeph>MHFUnload()</codeph> and <codeph>delete this</codeph> in it. If you register several times, it is probably easiest to overload both <xref href="GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841.dita#GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841/GUID-CFFDC252-CC6F-30F3-87A6-5F1398D5C3CD"><apiname>MHTTPFilter::MHFLoad()</apiname></xref> and <xref href="GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841.dita#GUID-2E1C08E2-9024-3269-A1BD-C6B901E78841/GUID-33452FD8-4AB4-32F8-BD98-0FC9B7E46717"><apiname>MHTTPFilter::MHFUnload()</apiname></xref>, increment a reference count in <codeph>MHFLoad()</codeph>, decrement it in <codeph>MHTTPFilter::MHFUnload()</codeph> and when it reaches zero, <codeph>delete this</codeph>. </p> <p>A filter is notified of events through <xref href="GUID-57216A14-97B8-324C-BB00-63CA880CC779.dita#GUID-57216A14-97B8-324C-BB00-63CA880CC779/GUID-50C6321D-AFEF-3B0F-84DD-5AE0E70274C4"><apiname>MHTTPFilterBase::MHFRunL()</apiname></xref>, similar to client notification. If the <codeph>MHFRunL()</codeph> implementation leaves, the filter must handle the error in <xref href="GUID-57216A14-97B8-324C-BB00-63CA880CC779.dita#GUID-57216A14-97B8-324C-BB00-63CA880CC779/GUID-4ED494E3-6499-3C89-A35A-A672A24FA849"><apiname>MHTTPFilterBase::MHFRunError()</apiname></xref>. There is a potential problem there, in that you may well want to tell the client that something has gone wrong by <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-7F9EAF08-316A-3641-B145-10534D72A9FB"><apiname>RHTTPTransaction::SendEventL()</apiname></xref>, which can itself leave. If it does leave, you may be forced to call <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-BAED8ED4-CFC0-3CF4-88E1-784F7C68C219"><apiname>RHTTPTransaction::Fail()</apiname></xref>, which cancels the transaction and sends an <xref href="GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3.dita#GUID-518CC5C3-1CE1-316E-9688-93DB12E58EB3/GUID-623B9859-6DEC-313F-8D07-0B1F3C93E1BD"><apiname>THTTPEvent::EUnrecoverableError</apiname></xref> message outwards. </p> <p>It is important to note that a filter object is per-session, and so might be shared by several transactions. This means that if you have a per-transaction state that you need to store, it must be stored in the transaction's property set. Do <i>not</i> store any per-transaction information in the filter object. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA49FB68-22A1-417F-AB57-9C22CE016B21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AA49FB68-22A1-417F-AB57-9C22CE016B21" xml:lang="en"><title>Parent
+and Child IPC Using a Single Pipe</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In this scenario, the parent and child processes communicate using a single
+pipe. The following pseudo code details the mechanism used by code in the
+parent process in a Unix-like system. <codeblock xml:space="preserve">//Call pipe() to create the pipe.
+//Call Fork().
+if (child process)
+{
+   //Child Process.
+   //duplicate (via a dup2() call) the read/write end of the pipe using  
+   //prior agreed file descriptor numbers which will subsequently be used by the   //child process following the exec() call.
+   //Close the original file descriptors.
+   //Call exec() to replace the code image in the child process.
+}
+else
+{
+   //Parent process
+   //Do Whatever
+}
+</codeblock></p>
+<p>Instead of using the <codeph>fork()</codeph>/<codeph>exec()</codeph> as
+described above, POSIX libraries including P.I.P.S. provide the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function
+as defined in <filepath>stdio.h</filepath>. Rather than using a pipe for the
+IPC mechanism the parent process communicates with the child using the stream
+returned by the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> call, while the child process input
+or output is using the <xref href="GUID-C0C1D22B-298F-3E8D-A1E9-6F5EFA81F9E8.dita"><apiname>stdin()</apiname></xref>/<xref href="GUID-85797574-E2A2-3C0C-9670-C178078DE199.dita"><apiname>stdout()</apiname></xref> streams. </p>
+<p>However if the parent process requires a file descriptor it can be obtained
+by using the <xref href="GUID-7A399B7D-553D-345E-92BD-43A8A8224D39.dita"><apiname>fileno()</apiname></xref> API call. For more information about
+the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function, see <xref href="http://www.opengroup.org" scope="external">http:\\www.opengroup.org</xref>. </p>
+<p><b>Parent process <codeph>fork()</codeph> and <codeph>exec()</codeph> functions</b></p>
+<p>The following code shows the use of a pipe and subsequent <codeph>fork()</codeph>/<codeph>exec()</codeph> calls
+to create a Pipe for IPC. The example shown is the child process writing data
+to the pipe, and the parent process receiving the data.</p>
+<codeblock xml:space="preserve">//Child Process File Descriptors for the pipe. These should be defined in a common header 
+//file used to compile both the parent and child process's executable.
+//However #define is here for clarity.
+#define WRITE_FD  104
+int main(int argc, char *argv[])
+{
+  int pipeEnds[2]; //Pipe file descriptors [0] is for read [1] is for write
+  
+  //create the pipe
+  if(pipe(pipeEnds) != 0)
+  {
+     //Pipe creation error
+     return EXIT_FAILURE;
+  }
+  else
+  {
+     pid_t Childpid = fork();
+     
+     if(Childpid == 0)
+     {
+         //close the redundant read FD obtained from the parent process
+         (void)close(pipeEnds[0]);
+    
+         //duplicate the file descriptor for use following exec().
+         if(dup2(pipeEnds[1], WRITE_FD) == -1)
+         {
+            printf("dup2 error\n");
+            return EXIT_FAILURE;
+         }
+         //close the redundant write FD obtained from the parent process
+         (void)close(pipeEnds[1]);
+    
+         //exec() to replace the child process executable
+         char execFileName[] = "/root/PortDoc/Example1_c/Posix/Child/ChildProg";
+         execl(execFileName,NULL);
+      }
+      else
+      {
+         //Parent process. This reads from the pipe. Therefore close the write end of the
+         //pipe.
+         close(pipeEnds[1]);
+    
+         //declare receive buffer, and clear its contents
+         char RxBuffer[100];
+         memset(RxBuffer,0,sizeof(RxBuffer));
+    
+         //Wait for data from the child process. Child sends a string.
+         read(pipeEnds[0],RxBuffer,sizeof(RxBuffer));
+    
+         printf(RxBuffer);
+
+         //close the Read end of the pipe
+         close(pipeEnds[0]);
+    
+         //Wait for the child process to terminate
+         waitpid(Childpid,NULL,0);
+      }
+   }
+   return EXIT_SUCCESS;
+}
+</codeblock>
+<p><b>Child process created using <codeph>fork()</codeph> or <codeph>exec()</codeph> functions</b></p>
+<p>The following code shows an example of the child process source which will
+be executed following the <codeph>exec()</codeph>. </p>
+<codeblock xml:space="preserve">//Child Process File Descriptors for the pipe. These should be defined in a common header 
+//file used to compile both the parent and child process's executable. Shown here for
+//clarity.
+#define WRITE_FD  104
+
+int main(void)
+{
+   char TxMsg[] = "Hello Parent\n";
+    
+   //Send the message to the parent
+   write(WRITE_FD,TxMsg,sizeof(TxMsg));
+    
+   //close the File Descriptor
+   close(WRITE_FD);
+   return EXIT_SUCCESS;
+}
+</codeblock>
+<p><b>Parent process P.I.P.S. example for <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function</b></p>
+<p>The following code shows how the above code can be modified to use <codeph>popen()</codeph>,
+rather than the <codeph>fork()</codeph>/<codeph>exec()</codeph> combination. </p>
+<codeblock xml:space="preserve">int main(int argc, char *argv[])
+{
+   //Create child process using popen(). Child process writes to the Parent therefore "r" 
+   //parameter.
+   FILE* ChildProcessStream = popen("/root/PortDoc/Example1_c/Symbian/Child/ChildProg","r");
+          
+   if(ChildProcessStream == NULL)
+   {
+      printf("\n Failure to create child process with popen()\n");
+      return EXIT_FAILURE;
+   }
+   else
+   {
+      //Use a file descriptor rather than a stream
+      int ChildProcessFD = fileno(ChildProcessStream);
+
+      //Create a receive buffer, and zero contents before receiving.
+      char RxBuffer[100];
+      memset(RxBuffer,0,sizeof(RxBuffer));
+      
+      //Wait for data from the child process. Child sends a string.
+      int nbytes = read(ChildProcessFD,RxBuffer,sizeof(RxBuffer));
+
+      //printf is slightly different from the POSIX example to verify that the data output to the 
+      //screen is done by the parent process.
+      printf("\n Message Received by Parent=%s",RxBuffer);
+      
+      //Wait for Child Process to complete
+      pclose(ChildProcessStream);
+   }
+   return EXIT_SUCCESS;
+}
+</codeblock>
+<p><b>Child process P.I.P.S. example for <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> function</b></p>
+<p>The following code shows how the child process source can be modified when
+it is executed using <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref>. Note that rather
+than using a file descriptor for the communication via the pipe the <xref href="GUID-C0C1D22B-298F-3E8D-A1E9-6F5EFA81F9E8.dita"><apiname>stdin()</apiname></xref> or
+the <codeph>stdout</codeph> streams are directed to the parent process, as
+defined in the usage of the <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> call. </p>
+<codeblock xml:space="preserve">int main(void)
+{
+    //Child process created by popen() so that its stdout is streamed to the parent process
+    char TxMsg[] = "Hello Parent\n";
+    
+    //Send the message to the parent
+    printf(TxMsg);
+    
+    return EXIT_SUCCESS;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e46028_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e46234_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e52023_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e52301_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e60459_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255" xml:lang="en"><title>CreateSIS</title><abstract><p>The <codeph>CreateSIS</codeph> tool is a wrapper around the <codeph>MakeSIS</codeph>, <codeph>SignSIS</codeph> and <codeph>MakeKeys</codeph> tools. </p> <p>This tool supports the creation and signing of SIS files,
+and generation of keys and certificate pairs for signing. It also displays
+signatures and certificate chain details of a SIS file. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title> <p><userinput>createsis <parmname>[OPTIONS]</parmname> <cmdname> &lt;ARGS&gt;</cmdname> </userinput> </p> <p>The following table lists the options supported by the <codeph>CreateSIS</codeph> tool. </p> <table id="GUID-2CD8E0F4-8F71-53CC-8563-9542F1D6F2C2">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Options</entry>
+<entry>Description</entry>
+<entry>Usage</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>create</varname>  </p> </entry>
+<entry><p>Creates and signs the SIS file with a trusted key. </p> </entry>
+<entry><p><userinput>createsis create [-cert &lt;cert&gt;] [-key &lt;key&gt;] [-pass
+&lt;passphrase&gt;] &lt;pkgfile&gt;</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>sign</varname>  </p> </entry>
+<entry><p>Signs a pre-existing SIS file with a trusted key. </p> <p> <b>Note</b>:
+The output SIS file created is different from the input SIS file, therefore
+the original data is not destroyed. </p> </entry>
+<entry><p><userinput>createsis sign –cert &lt;cert&gt; -key &lt;key&gt; [-pass &lt;passphrase&gt;]
+&lt;sis_input&gt; &lt;sis_output&gt;</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>dump</varname>  </p> </entry>
+<entry><p>Displays all valid signatures and certificates associated with the
+SIS file. </p> </entry>
+<entry><p><userinput>createsis dump &lt;sisfile&gt;</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>strip</varname>  </p> </entry>
+<entry><p>Removes the most recent signatures from the SIS file. </p> </entry>
+<entry><p><userinput>createsis strip &lt;sisfile&gt;</userinput> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table lists the arguments to be specified with the <codeph>CreateSIS</codeph> tool. </p> <table id="GUID-18BDE074-7F57-5DDE-ABCD-2D5370DF502A">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Arguments</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-cert</varname>  </p> </entry>
+<entry><p>Specifies the certificate file used for signing. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-key</varname>  </p> </entry>
+<entry><p>Specifies private key file of the certificate. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-pass</varname>  </p> </entry>
+<entry><p>Specifies passphrase of the private key file. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>sis_input</varname>  </p> </entry>
+<entry><p>Specifies the SIS file to be signed, unsigned or investigated. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>sis_output</varname>  </p> </entry>
+<entry><p>Specifies the name of the output SIS file. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>pkgfile</varname>  </p> </entry>
+<entry><p>Specifies the PKG file, for which a SIS file is generated. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>sisfile</varname>  </p> </entry>
+<entry><p>Specifies the name of the output SIS file to be generated. </p> <p> <b>Note</b>:
+If not specified, is derived from the name of the PKG file, but with a <filepath>SIS</filepath> file
+extension. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </refsyn>
+<example id="GUID-939FFCE6-1155-5539-8B04-8DB2A0980514"><title> Examples</title> <p>The
+following examples illustrate the usage of the <codeph>CreateSIS</codeph> tool: </p> <ul>
+<li id="GUID-C64C6EAF-63DC-54C8-9A37-6DB6DF810A62"><p> <b>To create and sign
+a SIS file using a trusted key</b>  </p> <p>You can specify the trusted End
+Entity (EE) certificate and matching key using the <codeph>-cert</codeph> and <codeph>-key</codeph> parameters
+while creating the SIS file. Optionally, you can specify a passphrase to decrypt
+the private key using the <codeph>-pass</codeph> parameter. </p> <p>The trusted
+EE Certificate is one that chains back to a trusted root in the target device
+SWI certstore. </p> <codeblock id="GUID-92E43CF0-EFF5-529D-A0B1-669A59625D93" xml:space="preserve">createsis create -cert trustedchain.pem -key eecertkey.key mypackage.pkg</codeblock> </li>
+<li id="GUID-F9218BC9-97BA-5488-84AA-8375F635FD81"><p> <b>To sign a pre-existing
+SIS file with a trusted key</b>  </p> <p>You can sign and re-sign a pre-existing
+SIS file using the <codeph>sign</codeph> method. To sign a package, a key
+and certificate chain must be provided on the command line. The output SIS
+file is different from the input SIS file, so the original data is not destroyed. </p> <codeblock id="GUID-BCCA34C3-F780-5AF0-B713-A7D328D9EB32" xml:space="preserve">createsis sign -cert trustedchain.pem -key eecertkey.key mysis.sis mysis-signed.sis</codeblock> </li>
+<li id="GUID-C659BE6E-AA48-5AED-8AD4-ADAF667BDD1C"><p> <b>To sign a pre-existing
+SIS file with a self-signed certificate</b>  </p> <p>When using <codeph>sign</codeph> method
+if key-certificate pair is not provided then CreateSIS signs the specified
+SIS file with an automatically generated self-signed certificate. </p> <codeblock id="GUID-B9EB4F8F-5C22-5BAF-96C6-ED9507A047B7" xml:space="preserve">createsis sign mysis.sis mysis-signed.sis</codeblock> </li>
+</ul> </example>
+</refbody><related-links>
+<link href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita"><linktext>PKG Format</linktext>
+</link>
+<link href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita"><linktext>MakeSIS</linktext>
+</link>
+<link href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita"><linktext>SignSIS</linktext>
+</link>
+<link href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita"><linktext>Creating
+and Signing an Installation File</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF" xml:lang="en"><title>CentRepExample:
+Using central repository for persistent storage</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application demonstrates the usage of Central Repository API
+for persistent storage. </p>
+<section id="GUID-E2129D18-6FBB-55B9-8D79-420EB2CF2401"><title>Description</title> <p>Several
+Symbian OS components have state and settings information that need to be
+persistent. There is also a global state that needs to persist, for example,
+default filenames, locale settings, user preferences. </p> <p>The CentRep
+example application first registers a group of settings with the central repository
+server. It uses <filepath>E80000AD.txt</filepath>, a UTF-16 format text file
+to initialise the repository. This text file contains access control structure
+and the initial content of the repository. It is recommended to convert the
+initialisation text file into a binary file using the central repository converter
+tool to speed up the execution. </p> <p>The application creates a <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> object
+using the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-B8DD1F6F-5A03-30C7-A5B5-51053D9FBDD3"><apiname>CRepository::NewLC()</apiname></xref> method to access a repository
+using its UID. It resets the whole repository using <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-BA806B9D-C347-3722-886E-1290A4A0618A"><apiname>CRepository::Reset()</apiname></xref> method
+with the contents in the initialisation file. </p> <p>Each setting stored
+in the repository will have a unique key to identify the setting. This unique
+key is used to read and change the setting by calling the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-AB3918A5-BA69-3EE8-89B4-51DD8A899AF5"><apiname>CRepository::Get()</apiname></xref> and <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-114079A1-A8CA-3FE7-8FAD-F5E61453FF6B"><apiname>CRepository::Set()</apiname></xref> methods
+respectively. The application moves these keys to a different location using <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-4F005B5F-2664-3F7C-848D-B6F93462F2F4"><apiname>CRepository::Move()</apiname></xref> method
+and deletes them from their original location. </p> <p>The application also
+creates another <codeph>CRepository</codeph> object to demonstrate that, at
+any given point a repository cannot be opened with <i>READ/WRITE</i> access
+by more than one client. In such situations, it is recommended to start a
+transaction before a write operation using <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-1F14EB0C-89CF-3A76-A678-5F6F86F50B32"><apiname>CRepository::StartTransaction()</apiname></xref> method.
+A transaction guarantees the consistency and persistence of all values read
+and written during the transaction. </p> <p>Finally, the application requests
+the central repository server to notify any changes to the original settings. </p><p><b>Related
+APIs</b></p><ul>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> - Provides access to a repository.</p></li>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-AB3918A5-BA69-3EE8-89B4-51DD8A899AF5"><apiname>CRepository::Get()</apiname></xref></p></li>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-4F005B5F-2664-3F7C-848D-B6F93462F2F4"><apiname>CRepository::Move()</apiname></xref></p></li>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-B8DD1F6F-5A03-30C7-A5B5-51053D9FBDD3"><apiname>CRepository::NewLC()</apiname></xref></p></li>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-BA806B9D-C347-3722-886E-1290A4A0618A"><apiname>CRepository::Reset()</apiname></xref></p></li>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-114079A1-A8CA-3FE7-8FAD-F5E61453FF6B"><apiname>CRepository::Set()</apiname></xref></p></li>
+<li><p><xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita#GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78/GUID-1F14EB0C-89CF-3A76-A678-5F6F86F50B32"><apiname>CRepository::StartTransaction()</apiname></xref></p></li>
+</ul> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e78b3d2c-7205-45ca-abe0-163e33a0fcc3.zip" scope="external">CentRepExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e78b3d2c-7205-45ca-abe0-163e33a0fcc3.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-DCCBE8DE-0BBD-5528-A460-E1645116DD4F"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build an application. </p> <p>The <codeph>CentRepExample</codeph> builds
+an executable called <filepath>CentRepExample.exe</filepath> in the standard
+location (\epoc32\release\winscw\&lt;<i>build_variant</i> &gt; for CodeWarrior).
+After launching the executable, depending on the emulator you are using, you
+may need to task away from the app launcher/shell screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e46315_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e52401_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e55526_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E" xml:lang="en"><title>systemresource</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><codeph>systemresource</codeph> <varname>resource-file-list</varname> </p>
+<p><note> From v9.0, platform security requires projects to
+specify the directory for the built resource. You need to use the </note> <xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start resource</xref> syntax
+to do this..</p>
+<p>Use the <codeph>systemresource</codeph> statement to specify resource files
+for system components. </p>
+<p>The makefile will build the resource file into <filepath>epoc32\release\</filepath> <varname>platform</varname> <filepath>\</filepath> <varname>variant</varname> <filepath>\z\system\data\</filepath> for a WINSCW, WINS
+or WINC build. </p>
+<p>Each resource file should be given with its extension, e.g. <filepath>squash.rss</filepath>.</p>
+<p>If more than one language is specified with the <codeph>lang</codeph>,
+then each resource will be compiled multiple times, once for each language
+specified.</p>
+<p>For application projects, use the <codeph>resource</codeph> statement.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AA978F65-C25B-59DC-82BC-6892228EA3F9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AA978F65-C25B-59DC-82BC-6892228EA3F9" xml:lang="en"><title>Schedule
+Send Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Schedule Send MTM (Message Type Module) allows other MTMs to send messages
+at scheduled times. </p>
+<p>This tutorial describes how to schedule SMS sending. For instructions on
+sending SMS messages, see <xref href="GUID-A2408186-1927-45F4-8972-C9273E5135CF.dita">SMS
+Tutorial</xref>. </p>
+<section><title>Required background</title> <p>Before you start, you must
+understand: </p> <ul>
+<li id="GUID-E818F9A1-74F9-56A2-ADE6-421E3CEFA625"><p><xref href="GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita">SMS
+MTM</xref>  </p> </li>
+</ul> </section>
+<section><title>Introduction</title> <p>Scheduled Send MTM enables you to
+do the following tasks: </p> <ul>
+<li id="GUID-7BE42BD7-E4BC-586E-987F-2F7AD54EB1AC"><p>Schedule a message to
+be sent at a specific scheduled time. </p> </li>
+<li id="GUID-E05C56E1-5AB2-50E8-ADD1-F5FEFDA48A3A"><p>Check whether specified
+conditions are met before sending a message. </p> </li>
+<li id="GUID-18AE81ED-E795-55BD-9796-41AAFA43D021"><p>Resend a message if
+an error occurs while sending. </p> </li>
+</ul> <p>An SMS service can have configuration settings which control the
+scheduled sending of messages. These configuration settings are in four parts: </p> <ul>
+<li id="GUID-FE65B7D1-C834-5F38-B766-4CFAA79152AB"><p>General settings: <xref href="GUID-3A9254B7-77C2-300A-9128-6A7BD45F8CBA.dita"><apiname>CMsvScheduleSettings</apiname></xref>  </p> </li>
+<li id="GUID-2E2F2C04-41F4-587D-A222-DFBDC5903AB0"><p>Off-peak times settings: <xref href="GUID-E58A2F58-AF45-3D97-ACA6-6548FE507C3D.dita"><apiname>CMsvOffPeakTimes</apiname></xref>,
+which contains <xref href="GUID-0FAB21AD-16D5-34F4-A8E4-6A75EA02566E.dita"><apiname>TMsvOffPeakTime</apiname></xref> objects </p> </li>
+<li id="GUID-EC741167-6EBD-5E1C-956B-CE1AE755CB67"><p>Send error actions settings: <xref href="GUID-BF841328-372B-3F68-8BC9-5CB8639650D0.dita"><apiname>CMsvSendErrorActions</apiname></xref>,
+which contains <xref href="GUID-4F039FEB-4821-3871-A5CF-0D453BF91EAD.dita"><apiname>TMsvSendErrorAction</apiname></xref> objects </p> </li>
+<li id="GUID-1E957A78-1369-5DAE-9AAD-8A833AC1AA1A"><p>System agent actions
+settings: <xref href="GUID-95828565-7389-381C-BD7E-B7F7B98A2487.dita"><apiname>CMsvSysAgentActions</apiname></xref>, which contains <xref href="GUID-322332B3-5259-3D51-A9AF-CFA2CD5617B6.dita"><apiname>TMsvSysAgentConditionAction</apiname></xref> objects </p> </li>
+</ul> <p>The above settings can be initialised and edited by a client application
+using the following member functions of <xref href="GUID-40DD66D7-D08E-3A04-9583-1C5E60E352FF.dita"><apiname>CSmsAccount</apiname></xref>: </p> <ul>
+<li id="GUID-C724F70C-3299-57DB-9152-5059F398FDC1"><codeblock id="GUID-90932F48-82BA-5D61-A011-3EC155753146" xml:space="preserve">void InitialiseDefaultSettingsL( CMsvScheduleSettings&amp; aScheduleSettings,
+                                    CMsvOffPeakTimes&amp; aOffPeakTimes,
+                                    CMsvSendErrorActions&amp; aErrorActions,
+                                    CMsvSysAgentActions&amp;  aSysAgentActions ); </codeblock> </li>
+<li id="GUID-B220B17C-DBEF-56FF-8AC5-A9B760E27660"><codeblock id="GUID-59F2D2ED-0BF3-5802-92FF-F1D93B7CD3F0" xml:space="preserve">void LoadSettingsL( CMsvScheduleSettings&amp; aScheduleSettings,
+                       CMsvOffPeakTimes&amp; aOffPeakTimes,
+                       CMsvSendErrorActions&amp; aErrorActions,
+                       MsvSysAgentActions&amp; aSysAgentActions );</codeblock> </li>
+<li id="GUID-9993E309-541D-58A9-9556-E767848533D3"><codeblock id="GUID-6E50378E-21E6-509B-ABB0-5F1D21F132FA" xml:space="preserve">void SaveSettingsL(const CMsvScheduleSettings&amp; aScheduleSettings,
+                       const CMsvOffPeakTimes&amp; aOffPeakTimes,
+                       const CMsvSendErrorActions&amp; aErrorActions,
+                       const CMsvSysAgentActions&amp; aSysAgentActions ) const; 
+             </codeblock> </li>
+</ul> </section>
+<section><title>Procedure</title> <ol id="GUID-8AE541F3-1B0A-5D1D-AA3E-9D56B9513B38">
+<li id="GUID-73A15840-8DC6-5EEE-BCCD-36AE86BC30EC"><p>Create an SMS account
+using the <xref href="GUID-40DD66D7-D08E-3A04-9583-1C5E60E352FF.dita#GUID-40DD66D7-D08E-3A04-9583-1C5E60E352FF/GUID-91341F9C-C5DF-35A4-9E09-8EC18A96938A"><apiname>CSmsAccount::NewL()</apiname></xref> function. </p> </li>
+<li id="GUID-9E5F5C1B-D4A3-5A5F-A351-FBDC34CC8F9C"><p>Create an object of <xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref> (SMS
+service) and set it with appropriate settings as per your requirement. </p> <note> For
+instructions on creating an SMS account and using the settings APIs, see <xref href="GUID-A2408186-1927-45F4-8972-C9273E5135CF.dita">SMS Tutorial</xref>. </note> </li>
+<li id="GUID-5125AF39-9039-5257-9260-579ADAEF7AFC"><p>Create an instance of <xref href="GUID-3A9254B7-77C2-300A-9128-6A7BD45F8CBA.dita"><apiname>CMsvScheduleSettings</apiname></xref> to
+specify general settings for sending a message. </p> </li>
+<li id="GUID-01448B12-C1A7-5E5E-8991-2095363AF338"><p>Load the schedule send
+settings using the <xref href="GUID-31D274E3-CCD9-3948-912A-C3328D507A9A.dita"><apiname>LoadSettingsL()</apiname></xref> function. </p> </li>
+<li id="GUID-BF412FB6-DF4A-5EE9-9BED-5C95FFFD84F8"><p>Save the settings using
+the <xref href="GUID-BBACEDE8-3EB6-3486-996B-1188AF15752C.dita"><apiname>SaveSettingsL()</apiname></xref> function. </p> <p><codeblock id="GUID-9F54ADF1-4015-5D7D-BEA1-F0DDFEB2360D" xml:space="preserve">
+// See SMS tutorial for detailed instructions on the initial set up of SMS, such as message server session,
+// MTM, SMS account and SMS message
+
+    // Create objects for schedule send settings
+
+    CMsvScheduleSettings* scheduleSettings = CMsvScheduleSettings::NewLC();
+    TTimeIntervalSeconds interval(5);
+    scheduleSettings-&gt;SetShortInterval(interval);
+
+    // Load the schedule send settings
+    smsAccount-&gt;LoadSettingsL(*scheduleSettings, *offPeakTimes);
+
+    // save the settings 
+    CSmsAccount *smsAccount = CSmsAccount::NewLC();
+    smsAccount-&gt;SaveSettingsL( *scheduleSettings, *offPeakTimes);
+    CleanupStack::PopAndDestroy(); // scheduleSettings, smsAccount</codeblock> </p> </li>
+<li id="GUID-47E51360-87FF-5742-A08F-9653B34BF2B8"><p>Create an SMS message
+and set <xref href="GUID-7D31C4C6-2752-39E5-A789-73AD516F5CBD.dita"><apiname>SetSendingState()</apiname></xref> and <xref href="GUID-895BE1CB-1D52-33A0-B280-485D06088DB2.dita"><apiname>SetScheduled()</apiname></xref>. </p> <p><codeblock id="GUID-D8D7734B-2BA2-5D5E-8A55-11E0F2A75C58" xml:space="preserve">
+    //Create an SMS message (set up index entry)
+    TMsvEntry newEntry;
+    newEntry.iType = KUidMsvMessageEntry;
+    newEntry.iServiceId = KMsvLocalServiceIndexEntryId;
+    newEntry.iMtm = KUidMsgTypeSMS;
+    newEntry.SetVisible(EFalse);
+    newEntry.SetInPreparation(ETrue);
+    newEntry.SetSendingState(KMsvSendStateWaiting);
+    newEntry.SetScheduled(ETrue);</codeblock> </p> </li>
+<li id="GUID-3594C62C-099C-53AE-A9FE-E6F57D7DD3E6"><p>Send the message at
+a specified time. </p> <p>To set a message to be sent at a specified time: </p> <ol id="GUID-B030C1F9-6779-5244-9FDC-611D0F4A8A5E">
+<li id="GUID-4B74937C-8A41-5024-9508-2806245FA2FC"><p>Update the time to send,
+using <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita#GUID-5A23B804-2C06-3407-9D48-1BFB212D699F/GUID-F60F7920-792C-3E53-870F-FC5BFFF84C73"><apiname>TMsvEntry::iDate</apiname></xref>, with the scheduled time. </p> </li>
+<li id="GUID-132F5600-986B-5AE8-A1E1-8F99D646FEEB"><p>Create a selection of
+messages to be sent using <xref href="GUID-6BC8851B-D913-3CE5-B343-5163661E8AD5.dita"><apiname>CMsvEntrySelection</apiname></xref>. </p> <p> Note:
+Every message in the selection must have the same scheduled time. </p> </li>
+<li id="GUID-E725D40B-2806-5D5F-8A5C-49E9AF9281DC"><p>Add the message to the
+selection. </p> </li>
+<li id="GUID-A9AA2EA7-6F52-53CF-8482-1C7E02C88118"><p>Call <xref href="GUID-C499ABDB-BA30-3D97-A850-D5790FE49634.dita#GUID-C499ABDB-BA30-3D97-A850-D5790FE49634/GUID-986D06BF-8427-338A-8EFC-9369E88D62C3"><apiname>CSmsClientMtm::InvokeAsyncFunctionL()</apiname></xref> with
+command ID <codeph>ESmsMtmCommandScheduleCopy</codeph>. </p> </li>
+</ol> <p>The following code snippet schedules a message to be sent in on day’s
+time: </p> <p><codeblock id="GUID-CD68D5F5-3BC3-5B51-A1E4-202233C81ECF" xml:space="preserve">CMsvEntrySelection* smsEntries = new (ELeave) CMsvEntrySelection;
+CleanupStack::PushL(smsEntries);
+TMsvId entryId;
+entryId=newEntry-&gt;Id();
+
+// Set the scheduled time for tomorrow
+TTime t;
+t.HomeTime();
+t += TTimeIntervalDays(1);
+newEntry.iDate=t;// update the time to send in the message (TMvsEntry) itself.
+
+// Create a selection of messages to send
+CMsvEntrySelection* smsEntries = new (ELeave) CMsvEntrySelection;
+CleanupStack::PushL(smsEntries);
+
+// Add the newly scheduled message to the selection
+smsEntries-&gt;AppendL( newEntry-&gt;Id() );
+TBuf8&lt;1&gt; p; 
+CMsvOperation* op = iMtm-&gt;InvokeAsyncFunctionL(ESmsMtmCommandScheduleCopy,
+*smsEntries, p, iStatus);
+CleanupStack::PopAndDestroy(); //smsEntries
+</codeblock> </p> </li>
+</ol> <note> <ul>
+<li><p>When the scheduled task occurs, not only will the selected messages
+be sent but also any waiting SMS messages in the Outbox.</p></li>
+<li><p>Messages successfully sent by the scheduled task are moved to the Sent
+folder.</p></li>
+</ul></note><p>Messages can be removed from the scheduler using the asynchronous
+function ID <codeph>ESmsMtmCommandDeleteSchedule</codeph>. </p><p><b>Resend
+on errors or failed conditions</b></p><p>A message can be rescheduled at two
+stages of sending: </p><ul>
+<li id="GUID-B3FC8C98-D165-5E7A-B2F5-9D42CDE2807E"><p>If send conditions are
+not met (as seen above): The behaviour when this occurs is configured as part
+of the send actions. </p> </li>
+<li id="GUID-4154A12E-A6D8-5C90-BD0C-AF305BE63BA6"><p>If sending to any recipient
+fails: The behaviour in this event is determined by a <xref href="GUID-86A889FA-CF7F-3B67-9D9E-349E3E0155CC.dita"><apiname>SEND_ERROR_ACTIONS</apiname></xref> resource
+in the SMS Server MTM resource file (in the device ROM). The resource specifies
+the actions that must be taken if errors occur. </p> </li>
+</ul><p>Two additional factors can prevent rescheduling occurring: </p><ul>
+<li id="GUID-6D141526-EB60-53B3-A734-1477CB4372D7"><p>In order to avoid an
+infinite loop of attempting to send a message, which may result in running
+the device battery down, a rescheduled message can be limited to a maximum
+number of re-tries. If the maximum number of re-tries is reached, then the
+message marked as failed and no further retries are attempted. The maximum
+number of re-tries is defined in the <xref href="GUID-95828565-7389-381C-BD7E-B7F7B98A2487.dita"><apiname>CMsvSysAgentActions</apiname></xref> error
+action. </p> </li>
+<li id="GUID-9483768D-B2CA-5616-B789-B6519F5E6826"><p>A timeout can be specified
+for waiting for sending conditions to occur. If the timeout occurs before
+the conditions are met the pending SMS messages are marked as failed. The
+timeout is configurable through the <xref href="GUID-3A9254B7-77C2-300A-9128-6A7BD45F8CBA.dita#GUID-3A9254B7-77C2-300A-9128-6A7BD45F8CBA/GUID-DF0D64F1-5408-335C-8FA8-FE5F874B97E4"><apiname>CMsvScheduleSettings::SetPendingConditionsTimeout()</apiname></xref> function.
+The default is 0 (no timeout). The <xref href="GUID-3A9254B7-77C2-300A-9128-6A7BD45F8CBA.dita"><apiname>CMsvScheduleSettings</apiname></xref> is
+a separate stream in the SMS service entry store. </p> </li>
+</ul></section>
+<section><title>See also</title> <p><xref href="GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita">Schedule
+Send MTM Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AAA27EE5-E323-5822-A339-690316C2D9B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-AAA27EE5-E323-5822-A339-690316C2D9B4"><title>Viewfinder's Region of Interest</title><shortdesc>This topic describes how to add area of interest specification and control for viewfinder in the Ecam API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><prereq id="GUID-F0AEDC78-B1C7-59FB-AE09-A52813BD902D"><p>Before you start: </p> <ul><li id="GUID-92CA2EA9-8AE9-573A-BCF8-5399DDE53301"><p>Understand <xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita">Overview</xref> of Viewfinder API. </p> </li> </ul> </prereq> <context id="GUID-F2F8630C-5C25-555E-B433-F950BE2D3B0A"><p>The <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> API is extended to allow you to give region of interest (ROI) for viewfinder. The areas of interest are approximated by the rectangle shape. You select a preference order for ROIs. This selection of preference is supported by <codeph>CCamera</codeph>. Your selection of preference has higher priority. </p> <p>The ROIs provides multiple uses for <codeph>CCamera</codeph>, they are as follows: </p> <ul><li id="GUID-470B8A6A-B004-5124-8A95-893C1BA5DED6"><p>Extended focus control </p> </li> <li id="GUID-C2F469C9-5D4B-5C8E-A336-0705236833F0"><p>Selection of ROI for 3A algorithms computations (autofocus, automatic exposure and automatic white balance). </p> </li> </ul> </context> <steps id="GUID-4A701EAC-92B4-5098-B641-8E119782FA3B"><step id="GUID-693A56F7-CA46-5C52-B9E0-AC440A59662A"><cmd/><info>Call <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-F54A4A2C-7C7D-3FED-BDD2-3B370AF9CB17"><apiname>CCameraViewFinder::GetSupportedROIScopeL(TInt&amp;
+                )</apiname></xref> to get support and query the number of scope for a viewfinder. For example, If n is the number of ROI scope supported, then scope indices will vary from 0 to –1. </info> </step> <step id="GUID-1E56ECC1-C0B1-5C6E-9006-038F2D3D593C"><cmd/><info>Call <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-C595C971-DEE6-382C-890F-57E279E5141E"><apiname>CCameraViewFinder::TROIParameters( )</apiname></xref> to provide the ROI per scope to the <codeph>CCamera</codeph> adaptation. The <codeph>TROIParameters</codeph> function is used to allow you to specify a priority with every ROI. </info> </step> <step id="GUID-12CD9C6F-BA8E-5776-9586-0BCFA6DACAF4"><cmd/><info>Call <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-74970283-BD6F-3E7B-AD58-4DB0249416A9"><apiname>CCameraViewFinder::StartROIOperation(const
+                RArray&lt; TROIParameters&gt;&amp;, TInt)</apiname></xref> to perform the operation depending on the ROI scope, <codeph>CCamera</codeph> adaptation adjust the scope priority. </info> <info>When the ROI operation is completed, <codeph>CCamera</codeph> adaptation notifies you the completion of the ROI Operation. You have to know the viewfinder and the scope with which this ROI operation is linked. This can be done by issuing a new event <codeph>KUIdECamEvent2ViewFInderROIReady</codeph> with <codeph>iParam</codeph> as <codeph>iViewFinderHandle</codeph> and <codeph>iParam1</codeph> as <codeph>iROIScopeIndex</codeph>. </info> <info>  Note: You have to prepare a group of the desired region set with high priorities scopes. When you have set the high priorities scopes, you needs to specify the scope based on which the <codeph>CCamera</codeph> adaptation uses the ROIs. </info> </step> <step id="GUID-59F854ED-0EB4-529A-B99B-A12051AC4076"><cmd/><info>Call <xref href="GUID-C8A9654A-AA22-39FE-B1DC-11F49E1D80C1.dita#GUID-C8A9654A-AA22-39FE-B1DC-11F49E1D80C1/GUID-B4DBFB05-BB2D-322B-91D8-45326B340126"><apiname>MDirectViewFInderObserver::ROIChangeReady(CCamera::CCameraV2DirectViewFinder&amp;,
+                Tint, Tint)</apiname></xref> to extend the callback associated with the two viewfinders in order to provide the ROI scope notifications. </info> <info>The two notification function notifies you that <codeph>CCamera</codeph> adaptation starts the ROI operation based on the modified set of ROI parameter. </info> </step> <step id="GUID-417A4073-1DC7-5484-B4C6-8413359A229D"><cmd/><info>When the <codeph>CCamera</codeph> adaptation changes the ROI scope, call <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-94C432C4-EEFC-3A31-8779-5F8698FCF733"><apiname>CCameraViewFinder::GetROIParameters (RArray&lt;
+                TROIParameters&gt;&amp;, TInt)</apiname></xref> to retrieve the ROI according to their higher priorities. </info> <info>You can use these regions for any desired purpose depending on the scope. </info> </step> <step id="GUID-578B8B56-46D6-5E3A-B735-2CB1EB19D922"><cmd/><info>Call <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-B8EBF2A4-3791-3D32-AFE1-8582B2C37654"><apiname>CCameraViewFinder::StopROIOperation(TInt)</apiname></xref> to stop ROI operation for the specific scope. </info> </step> </steps> </taskbody><related-links><link href="GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4.dita"><linktext>Client Viewfinder</linktext> </link> <link href="GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C.dita"><linktext>Direct Viewfinder</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AAA2ABA4-5555-5E4B-AEFF-3DF61462B170.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AAA2ABA4-5555-5E4B-AEFF-3DF61462B170" xml:lang="en"><title>Introduction
+to asynchronous programming</title><shortdesc>This document introduces the concept of asynchronous programming.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a program requests a service, this service can be performed either <i>synchronously</i> or <i>asynchronously</i>. </p>
+<p>A synchronous service is the normal pattern for function calls where the
+function returns and the service requested has either performed successfully
+or has failed and an error code returned.</p>
+<p>An asynchronous service is <i>requested</i> by a function call but completion
+occurs later. Completion is indicated by a <i>signal</i>. Between the issue
+of the request and the signal, the request is said to be <i>pending</i>. The
+requesting program can do other processing while the request is pending or
+it can issue a <i>wait</i>. The operating system wakes the program up when
+completion of any of its pending requests is signalled.</p>
+<p>A program may contain a number of independently-executing units, called
+threads. All programs have a primary thread, and may create other threads,
+possibly for providing or using asynchronous services.</p>
+<p>If all threads are in a wait state, for example, waiting for user input,
+Symbian platform powers down as much as possible of the machine’s electronics.
+This results in battery savings and, consequently, a considerable extension
+of useful battery life.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AAAC7887-93A8-5F8D-98D4-44FAD26C228A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AAAC7887-93A8-5F8D-98D4-44FAD26C228A"><title>Multimedia Shared Library Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Multimedia Shared Library. </p> <section><title>Purpose</title> <p>This library provides shared utilities for Digital Rights Management (DRM) protected content sources. </p> <p><b>Multimedia Shared Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-38BA2E75-A617-5901-BA0A-B0C5061C7A0A"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>mmcommon.dll</b>  </p> </entry> <entry><p> <b>mmcommon.lib</b>  </p> </entry> <entry><p>These files are used for implementing the Multimedia Shared Library. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The Multimedia Shared Library is used by MMF audio and video clients with DRM capability. For more information, see <xref href="GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita">Multimedia Framework Guide</xref>. </p> </section> <section><title>Description</title> <p>The Symbian platform provides support for playback of DRM protected content. The Multimedia Shared Library enables multimedia clients to handle sources of DRM protected content. </p> </section> <section><title>Key Multimedia Shared Library Classes</title> <p>The functionality provided by the Multimedia Shared Library is contained within the following classes: </p> <ul><li id="GUID-FE0F1E1B-7CD7-5424-9B2C-84F1C9C62194"><p> <xref href="GUID-D5CAB47C-B2BE-34F5-AD5C-E00D78632F13.dita"><apiname>TMMSource</apiname></xref> - provides a lightweight encapsulation of a DRM protected content source. </p> </li> <li id="GUID-E8DD6A12-AF37-531C-9F62-2364B9534C71"><p> <xref href="GUID-9927F238-DBE6-3399-AD4F-D669C8A59158.dita"><apiname>TMMFileSource</apiname></xref> - provides a consistent interface between filename based and file handle based interfaces. </p> </li> <li id="GUID-AACA6E7C-B6D5-564F-9208-83B6D59469F3"><p> <xref href="GUID-7DA9F454-E46E-3AA3-883F-8EC1687C42C7.dita"><apiname>TMMFileHandleSource</apiname></xref> - provides a file handle to DRM protected content source. </p> </li> </ul> </section> <section><title>Using the Multimedia Shared Library</title> <p>Clients can use the Multimedia Shared Library to: </p> <ul><li id="GUID-D73F2F59-D099-5DC0-A7C8-95306024C853"><p>Initialise a DRM protected content source. </p> </li> <li id="GUID-88D13621-2F0E-5279-B14C-5CF5877D1596"><p>Construct a new <codeph>TMMFileSource</codeph> object. </p> </li> <li id="GUID-77736B31-A72B-5344-84F2-FE874CD937A7"><p>Construct a new <codeph>TMMFileHandleSource</codeph> object. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-7EE46FD9-DC9E-5C1F-9AC5-48F5212AF0CA.dita">Content Access Framework</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AAE39139-B377-5122-A2B0-98708EA00614.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-AAE39139-B377-5122-A2B0-98708EA00614" xml:lang="en"><title>Writing
+a UI Data MTM </title><abstract><p>This section explains the initial steps to be performed to write
+a UI Data MTM. It does not explain the implementation of all <xref href="GUID-D7600D93-CFB8-565D-8200-7082B2CF1791.dita">UI
+Data MTM functionality</xref>, however, you can refer to the <xref href="GUID-70B9796F-8CF3-5DC4-93B4-0B1FED936169.dita">UI
+Data MTM example</xref>for detailed implementation steps.</p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>A derived UI Data MTM is simpler to implement than the MTM classes,
+and most of its code is specific to the protocol that is being implemented.
+The UI Data MTM implementation can require a resource file that details the
+strings used by the MTM and a list of functions (as command IDs) and flags
+that are specific to the MTM. </p> </context>
+<steps id="GUID-6E0C8880-28B0-5ADC-B65E-B3AEE6E932AE">
+<step id="GUID-C6574E7B-1748-583F-89AA-9B0FA60FF875"><cmd/>
+<info>Derive a class from the <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref> class. </info>
+</step>
+<step id="GUID-2DDD85DF-A8C9-5BFA-8060-09D547F95992"><cmd/>
+<info>Register it using the <xref href="GUID-0D5D7FAC-4F14-3046-92FB-873B8350FF4C.dita"><apiname>CRegisteredMtmDll</apiname></xref> parameter. </info>
+</step>
+</steps>
+<result><p>Use the derived <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref> class
+functionality in the Messaging client application. </p><codeblock xml:space="preserve">//
+// CTxtiMtmUiData: UI Data MTM
+//
+
+CTxtiMtmUiData* CTxtiMtmUiData::NewL(CRegisteredMtmDll&amp; aRegisteredDll)
+    {
+    CTxtiMtmUiData* base=new(ELeave) CTxtiMtmUiData(aRegisteredDll);
+    CleanupStack::PushL(base);
+    base-&gt;ConstructL();
+    CleanupStack::Pop();
+    return base;
+    }</codeblock></result>
+<example><title>UI Data MTM example</title> <p>For more details on implementing
+all UI MTM functionalities, see <xref href="GUID-70B9796F-8CF3-5DC4-93B4-0B1FED936169.dita">example
+code</xref>. </p> </example>
+</taskbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM overview</linktext>
+</link>
+<link href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita"><linktext>User Interface
+Data MTM</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB0A3E87-6725-5E83-B462-1219CE205187.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AB0A3E87-6725-5E83-B462-1219CE205187"><title>Bluetooth Notifiers Support Overview</title><shortdesc>The Bluetooth Notifiers Support component enables you to create dialogs to interact with device users about Bluetooth interactions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Bluetooth Notifiers component enables you to create dialogs for interacting with device users about Bluetooth interactions. You can offer Bluetooth dialogs for several purposes, but the main purpose is to provide security for Bluetooth interactions. </p> </section> <section><title>Required background</title> <p>You need to be familiar with the core Bluetooth concepts. </p> </section> <section><title>Key concepts and terms</title> <dl><dlentry><dt>Pairing</dt> <dd><p>Pairing takes place when two devices establish a trusted relationship with each other for secure communication. </p> </dd> </dlentry> <dlentry><dt>Passkey</dt> <dd><p>A passkey is a piece of data known only to the two parties involved in the communication. It is also known as a shared secret. In the Symbian Bluetooth context, a Passkey Display notifier is a dialog that uses a 6-digit number, which is generated by Symbian OS and then manually entered on a peer device. </p> </dd> </dlentry> <dlentry><dt>Secure Simple Pairing (SSP)</dt> <dd><p>Secure Simple Pairing is pairing that takes place with an automatically generated PIN. The user does not create a PIN. </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> </section> <section><title>APIs</title> <p>The key classes of Symbian's implementation of Bluetooth Notifiers are as follows: </p> <table id="GUID-8DD9C644-EE92-5CA6-B9E0-97833F4675EA"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-848C1394-A007-3B4A-84FF-C790EC2FECAD.dita"><apiname>CPinCodeEntryNotifier</apiname></xref>  </p> </entry> <entry><p>The class to provide a PIN-code entry notifier. </p> </entry> </row> <row><entry><p> <xref href="GUID-1D32697F-4A33-3B9B-9A53-B3ADCA8A215A.dita"><apiname>CNumericComparisonNotifier</apiname></xref>  </p> </entry> <entry><p>The class to provide a numeric comparison notifier. </p> </entry> </row> <row><entry><p> <xref href="GUID-CA141385-E969-359A-9706-42451962CE0F.dita"><apiname>CPasskeyNotifier</apiname></xref>  </p> </entry> <entry><p>The class to provide a passkey display notifier. </p> </entry> </row> <row><entry><p> <xref href="GUID-986EFB63-1F05-35AF-87DB-3FED6B8E4588.dita"><apiname>CPasskeyDisplayNotifier</apiname></xref>  </p> </entry> <entry><p>The class to provide a passkey display notifier. The passkey entry display notifier can currently receive two types of updates: </p> <ul><li id="GUID-5A532F95-97D6-5687-96F9-A583CF5C0EA7"><p>Updates to the remote device name (the same as the other notifiers). </p> <p>Updates to provide the notification of a key press by the remote keyboard. </p> </li> </ul> <p>As a Symbian OS device will be the display part of the pairing method, the remote device will be keyboard only and so not feature a display. It is highly recommended that the key press notifications provide a visual representation of keys being registered to help the device user. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Text notifiers library details</title> <p>The Bluetooth Notifiers component has one published library. The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-C6EC280C-A748-55CE-8C82-34289E9F0B99"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short description</entry> </row> </thead> <tbody><row><entry><p> <filepath>textnotifiers.dll </filepath>  </p> </entry> <entry><p> <filepath>textnotifiers.lib</filepath>  </p> </entry> <entry><p>Basic types used to allow interactions with standard Bluetooth notifiers. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The key purpose of Bluetooth Notifiers is to create dialogs to enable secure pairing. The Bluetooth Notifier provides the following types of authentication dialog to enable secure pairing: </p> <ul><li id="GUID-E2DE8A0B-33A7-5863-BE2C-28C0C2AA44AE"><p> <b>Authorisation dialog</b>  </p> <p>Authorisation dialogs offer device users the choice to accept or reject connections. </p> </li> <li id="GUID-B1940F8D-12E5-50E7-9109-2CAB7758B774"><p> <b>PIN-code entry notifier</b>  </p> <p>A user creates a PIN and sends it to the peer. </p> </li> <li id="GUID-07996989-0294-5CDD-8018-3450415F30D4"><p> <b>Numeric comparison notifier</b>  </p> <p>Numeric Comparison involves the user comparing 6-digit numbers displayed on both devices that are authenticating. Authentication is completed by the users of both devices signalling a confirmation that the displayed numbers are identical – if one device is unable to input a confirmation then only the other device needs to signal confirmation </p> </li> <li id="GUID-0BC7AA7C-7539-510D-8D0B-179A69D43200"><p> <b>Passkey display notifier </b>  </p> <p>Authentication by Passkey Entry involves the Symbian OS device displaying a 6-digit number which is manually entered on a device without a display (but with a numeric keypad). This is similar to PIN Code Entry except in this case the number is chosen for the user, and it need only be entered on the peer device. </p> </li> </ul> <p>In addition to the authentication notifiers, it is possible to use Bluetooth Notifiers for device selection dialogs. Device selection dialogs are for use by applications and profiles to decide which device the user wishes to connect to. Device selection dialogs do not need to be Bluetooth notifiers. Whereas the authentication notifiers are not associated with an application, device selection notifiers are. Therefore it is best to get the relevant application, for example a camera, to create the dialog. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e162776_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB3D07E6-83C9-4948-A13F-75A65498F444.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AB3D07E6-83C9-4948-A13F-75A65498F444" xml:lang="en"><title>Security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>S60 3rd Edition introduced the platform security architecture, which
+enhanced the existing security features. Security in mobile devices has the
+following objectives:</p>
+<ul>
+<li><p>Providing confidentiality for private data</p></li>
+<li><p>Protecting the integrity of the mobile device and the software
+in it</p></li>
+<li><p>Controlling access to sensitive operations and interfaces</p>
+</li>
+</ul>
+<section id="GUID-677730FB-A881-4ECA-B890-D45B97A22A14">
+<p><xref href="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita">Application signing</xref> is
+now mandatory in order to install the application. All Symbian
+applications must be signed before they can be installed. All applications
+which use <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref>-protected
+APIs, where the capability cannot be granted by the end user, have to be certified.
+Such certification can be obtained through <xref href="https://www.symbiansigned.com/" scope="external">Symbian
+Signed</xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AB5BD17E-F482-54A1-AE6F-4AEC178B2E0E"><title> Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces to the Overlay API. </p> <section><title>Purpose</title> <p>This provides support for image overlays. It is used to overlay an image onto the viewfinder, snapshots, still images and video. </p> <p><b>Overlay API Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-9AD06CC5-2348-5CE0-84CC-5FD536881ACA"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-0DB2FE27-331D-3F91-BAD0-64A9C2EF6EEC.dita"><apiname>ecamoverlay.dll </apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-645E6782-2610-3E79-A6A8-66A65C325E5F.dita"><apiname>euser.lib </apiname></xref>  </p> <p> <xref href="GUID-EA31C23F-8081-3A82-ABAA-168F970B5381.dita"><apiname>ecampluginsupport.lib </apiname></xref>  </p> <p> <xref href="GUID-F6ECE528-3581-3503-BD94-77BFA16CFAA3.dita"><apiname>fbscli.lib </apiname></xref>  </p> <p> <xref href="GUID-B4E2E996-CFBE-3156-B02D-D0F2F634B3C7.dita"><apiname>ecam.lib </apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Overlay functionalities. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>This is part of the camera component. </p> </section> <section><title>Description</title> <p>Overlay is an image which is superimposed on top of the main image with a required transparency. The main image can be a single image during image capture mode (still image/ burst/ bracket), video image frame, snapshot image, or image frames for viewfinder (direct or client-based). </p> </section> <section><title>Key Overlay API Classes</title> <p>The key classes that make up the Overlay are as follows: </p> <p> <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-5CF1EE7D-EAED-39F7-AF9D-73DD813B64F9"><apiname>CCamera::CCameraOverlay</apiname></xref>: This class provides support for image overlays. The client can use it to overlay an image onto the view finder, snapshots, still images and video. A client can create multiple overlays, where each overlay can be in a different format. The properties of an overlay can be changed after it has been created. </p> <p> <xref href="GUID-D54E15C8-4952-3A9C-807A-BC7DABB087D4.dita"><apiname>McameraOverlay</apiname></xref>: An interface class, for which Licensees need to provide implementation. </p> <p> <xref href="GUID-9C5233B4-6BD6-3139-B0B7-B01B14C18D2B.dita"><apiname>MCameraOverlay2</apiname></xref>: An interface class, for which the providers of the camera extension API for extra features of image overlays must provide implementation. </p> </section> <section><title>Using Overlay API</title> <p>Clients can use the Overlay to: </p> <ul><li id="GUID-B469F00E-CCC8-5DDA-A3A9-B055AA21154C"><p>overlay an image onto the viewfinder, snapshots, still images and video. </p> </li> <li id="GUID-F44D372D-5480-5473-82CD-F7A7BA5DB919"><p>create multiple overlays, where each overlay can be in a different format </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Overview</xref> of Camera Framework </p> <p>The <xref href="GUID-10E19876-85CA-5D45-854B-1F2C5A45A333.dita">Overlay</xref> tutorial </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AB68F150-1005-54AE-8F71-A88949463FDD-master.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB705D21-87A3-5F32-A4B9-17B7593DD5C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AB705D21-87A3-5F32-A4B9-17B7593DD5C3" xml:lang="en"><title>UID
+Manipulation Overview</title><shortdesc>Describes how globally unique identifiers are manipulated.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-78302F5A-97C3-4B95-9F72-842D91C2C25C"><title>Purpose</title> <p>To guarantee uniqueness,
+all UID values are assigned to developers centrally by Symbian. </p> </section>
+<section id="GUID-0600181A-2383-419B-BB57-2833C05F9AE3"><title>Architectural relationships</title> <p>Symbian platform makes
+extensive use of UIDs to provide lightweight identification of file types.
+This includes both document and executable files. APIs that need to manipulate
+files therefore typically use UIDs.</p> </section>
+<section id="GUID-B4652BA6-A500-4F3E-9AFF-02C339706B2B"><title>Description</title> <p>The API has two key concepts: UID and
+compound identifier. </p> <p><b>UID</b> </p> <p>The
+UID is a small wrapper class around a 32-bit value that provides comparison
+operators and conversion to text.</p> <p>The UID interface is provided by <xref href="GUID-530281E6-29FC-33F2-BC9B-610FBA389444.dita"><apiname>TUid</apiname></xref>.</p> <p><b>Compound identifier</b> </p> <p>The compound identifier is a group of
+up to three UIDs that identify the type of a file. The meaning of the UIDs
+varies according to whether the file is a DLL, or document file, etc. </p> <p>The
+compound identifier interface is provided by <xref href="GUID-B6D6B0AD-B15C-339A-8540-40540885089A.dita"><apiname>TUidType</apiname></xref>.</p> </section>
+<section id="GUID-ECF8B994-B8F0-4EC4-8CE8-06F031541D79"><title>See also</title> <p><xref href="GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita">Dynamically
+Loading Link Libraries Overview</xref> </p> <p><xref href="GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76.dita">File
+Server Client Side Overview</xref> </p> <p><xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File
+Stores Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625" xml:lang="en"><title>OpenGLES Collection</title><shortdesc>The components within the OpenGLES collection provide access to
+OpenGL ES on the Symbian platform. OpenGL ES, an open standard developed by
+the Khronos Group, provides an API for 2D and 3D graphics on embedded systems,
+such as smartphones. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p>
+</conbody><related-links>
+<link href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita"><linktext>OpenVG Collection</linktext>
+</link>
+<link href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita"><linktext>EGL Collection</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41" xml:lang="en"><title>Capturing
+a video clip</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To record video data to a file, descriptor, or an URL, use the video
+recorder utility of the Multimedia Framework (MMF) to develop your application.
+To make use of the onboard camera to capture a video clip, the application
+needs to repeat the steps described in the illustration below.</p>
+<fig id="GUID-FEDF24E9-1171-4814-B3C9-21B4E37003BB"><title>The steps required to capture a video clip</title><image href="GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e267376_href.png"/></fig>
+<p>Important implementation considerations include:</p>
+<ul>
+<li><p>To open a file for recording the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html" format="application/java-archive"><codeph>CVideoRecorderUtility</codeph></xref> class requires the MMF Controller Framework API to specify controller and
+format UIDs.</p></li>
+<li><p>If you need to use the display of the device as a viewfinder
+for your video application, request viewfinder frames using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html" format="application/java-archive"><codeph>CCamera</codeph></xref> class, and draw them yourself. For more information, see step
+3 in <xref href="GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita#GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE/GUID-A7ED7A90-1432-4905-A0A5-0CC725997127"/>.</p>
+</li>
+<li><p>The settings you can use in your application depend on what
+the camera hardware on the device supports.</p></li>
+</ul>
+<section><title>To capture a video clip</title>
+<p>Use the methods of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html" format="application/java-archive"><codeph>CVideoRecorderUtility</codeph></xref> class to construct your application.</p>
+<ol>
+<li id="GUID-77A80BE7-A452-42C4-A815-712402597071"><p>Initialize
+the video recorder.</p>
+<ul>
+<li><p>Create a video recorder object using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aNewL%28MVideoRecorderUtilityObserver%20%26amp%3b%2cTInt%2cTMdaPriorityPreference%29" format="application/java-archive"><codeph>CVideoRecorderUtility::NewL</codeph></xref> method.</p>
+</li>
+<li><p>Resolve the supported video format and retrieve a list of
+controllers using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CMMFControllerPluginSelectionParametersClass.html" format="application/java-archive"><codeph>CMMFControllerPluginSelectionParameters</codeph></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CMMFFormatSelectionParametersClass.html" format="application/java-archive"><codeph>CMMFFormatSelectionParameters</codeph></xref> classes, and the respective type definitions <codeph>RMMFControllerImplInfoArray</codeph> and <codeph>RMMFFormatImplInfoArray</codeph>. </p></li>
+<li><p>Open a file, descriptor or an URL to store the video clip
+in using the respective <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aOpenFileL%28const%20TDesC%20%26amp%3b%2cTInt%2cTUid%2cTUid%2cconst%20TDesC8%20%26amp%3b%2cTFourCC%29" format="application/java-archive"><codeph>CVideoRecorderUtility::OpenFileL</codeph></xref>, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aOpenDesL%28TDes8%20%26amp%3b%2cTInt%2cTUid%2cTUid%2cconst%20TDesC8%20%26amp%3b%2cTFourCC%29" format="application/java-archive"><codeph>CVideoRecorderUtility::OpenDesL</codeph></xref>, or <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aOpenUrlL%28const%20TDesC%20%26amp%3b%2cTInt%2cTInt%2cTUid%2cTUid%2cconst%20TDesC8%20%26amp%3b%2cTFourCC%29" format="application/java-archive"><codeph>CVideoRecorderUtility::OpenUrlL</codeph></xref> method.</p>
+</li>
+<li><p>Set the maximum video clip size using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aSetMaxClipSizeL%28TInt%29" format="application/java-archive"><codeph>CVideoRecorderUtility::SetMaxClipSizeL()</codeph></xref> method.</p>
+</li>
+<li><p>Prepare the record controller using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aPrepare%28%29" format="application/java-archive"><codeph>CVideoRecorderUtility::Prepare()</codeph></xref> method. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/MVideoRecorderUtilityObserverClass.html#%3a%3aMVideoRecorderUtilityObserver%3a%3aMvruoPrepareComplete%28TInt%29" format="application/java-archive"><codeph>MVideoRecorderUtilityObserver::MvruoPrepareComplete</codeph></xref> is
+called upon completion.</p></li>
+</ul>
+</li>
+<li id="GUID-8A46469A-E0BE-4789-ADEE-C900FF7CB331"><p>Configure
+the audio and video settings.</p><p>You can check and set, for example,
+the recording priority, audio track, video frame size and frame rate, audio
+and video codecs and bit rates, and recording gain of the video clip. For
+more information on the options, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html" format="application/java-archive"><codeph>CVideoRecorderUtility</codeph></xref> class.</p></li>
+<li id="GUID-CB57B0CC-14AD-464F-82FF-9D80CD369CD5"><p>Capture the
+video clip.</p>
+<ul>
+<li><p>Start recording a video using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aRecord%28%29" format="application/java-archive"><codeph>CVideoRecorderUtility::Record()</codeph></xref> method.</p></li>
+<li><p>Pause recording using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aPauseL%28%29" format="application/java-archive"><codeph>CVideoRecorderUtility::PauseL()</codeph></xref> method.</p></li>
+<li><p>Stop recording using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aStop%28%29" format="application/java-archive"><codeph>CVideoRecorderUtility::Stop()</codeph></xref> method.</p></li>
+</ul>
+</li>
+<li id="GUID-6CB8476D-CC81-4776-B42F-F6AF3EDEBE76"><p>To exit the
+application or to switch it to the background, close audio and video controllers
+using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoRecorderUtilityClass.html#%3a%3aCVideoRecorderUtility%3a%3aClose%28%29" format="application/java-archive"><codeph>CVideoRecorderUtility::Close()</codeph></xref> method.</p>
+</li>
+<li id="GUID-1E55A71D-1A7F-4734-9DC5-713DA776F3C6"><p>Include <codeph>VideoRecorder.h</codeph> and <codeph>mmfcontrollerpluginresolver.h</codeph> header files in the appropriate class files.</p></li>
+<li id="GUID-CA9BF127-499A-4EFE-9E63-74032194200F"><p>Make sure
+you have correct <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capabilities</xref> information
+set for your application. You need at least the <codeph>UserEnvironment</codeph> capability.
+If you want to set the recording priority for the video and audio device,
+you need the <codeph>MultimediaDD</codeph> capability.</p></li>
+<li id="GUID-78DDD170-958F-4FD2-87ED-A550CCB4D7E3"><p>Make sure <codeph>mediaclientvideo.lib</codeph> and <codeph>mmfcontrollerframework.lib</codeph> are accessible to your linker when compiling your application by including
+it in your <codeph>mmp</codeph> file or by editing the project properties
+in your IDE, depending on your build environment.</p></li>
+</ol>
+</section>
+<section><title>Additional information on capturing a video</title>
+<p>For a reference example, see the <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/48d38e98-2b78-4da8-b111-63e9c7d34feb/S60_Platform_Video_Example_v2_0_en.zip.html" scope="external">S60 Platform Video Example v2.0</xref> on Forum Nokia.</p>
+<p>For more information on <codeph>CVideoRecorderUtility</codeph>, see <xref href="http://developer.symbian.com/main/documentation/books/books_files/quick/multimedia_recipes.pdf?strScope=website&amp;searchString=CVideoPlayerUtility" scope="external">Multimedia recipes</xref> in the Symbian Developer Network.</p>
+<p>For more information on <codeph>CVideoRecorderUtility</codeph> see the <xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref> tutorial
+in the Video Client library.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-AB9D7D52-BCF0-5E89-8A99-A6590FAD7AF6" xml:lang="en"><title>Recognizer:
+Data Recognizer example</title><shortdesc>Shows how to implement a data recogniser. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-F17896C9-F714-5771-81B7-4AC7A02C0139"><title>Purpose</title> <p>This
+example shows how to implement a data recogniser. For more information about
+this example, see the <xref href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita">Data
+Recogniser tutorial</xref>. </p> </section>
+<section id="GUID-BB99D1FC-1993-51A9-858B-A66ACB787E5C"><title>Download</title><p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7194aafc-2cbf-4587-a306-6f493bbe1f61.zip" scope="external">ExampleRecognizer.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7194aafc-2cbf-4587-a306-6f493bbe1f61.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita"><apiname>CApaDataRecognizerType</apiname></xref></p><p><xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref></p></section>
+<section id="GUID-EBFC36A2-F523-5D8C-8C7D-73B25857ADD9"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-F7656FA4-C77E-55F7-880F-11EDB848A8F3"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-22006F8A-D5D7-56E2-92E2-3FDD444338B4"><p>For the emulator, the
+example builds an dll called <filepath>examplerecognizer.dll</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita"><linktext>Data Recognizer
+Tutorial</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D"><title>Position data and info classes</title><shortdesc>This document describes the basic and extended classes that hold position data. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Location Acquisition API defines a set of position data classes. Some of these classes store the co-ordinates of a location fix and others store information about course and positioning satellites. The API also defines position info classes that wrap the position data classes. These classes are used to pass data across the Location Acquisition API. Figure 1 illustrates the position data and position info classes with some of the most important methods. </p> <fig id="GUID-F94FF72F-D6F3-5913-BAEF-CF6B682A27D6"><title>
+          Figure 1 Position data and info classes 
+        </title> <image href="GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e241392_href.png" placement="inline"/></fig> <section><title>The position data classes</title> <ul><li id="GUID-4C4B6DB7-B417-5505-8F02-B27102922E8D"><p> <xref href="GUID-DDCBA817-9D88-3332-ABD3-1DDC6E397851.dita"><apiname>TCoordinate</apiname></xref> is the base class for all the position data classes. It holds latitude, longitude and altitude data. All positioning modules must provide latitude and longitude information, but not all modules are guaranteed to provide altitude information. </p> </li> <li id="GUID-B8698831-583A-5527-A5F4-2FCB264CA97F"><p> <xref href="GUID-17A40F7C-E4CD-3F82-832A-AA8142973053.dita"><apiname>TLocality</apiname></xref> adds accuracy information to co-ordinates. </p> </li> <li id="GUID-87EC3A5C-FE30-5D79-9025-64153337CF85"><p> <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> adds the time at which the location fix was obtained and also allows the average speed between two positions to be calculated. </p> </li> </ul> <p>There are two additional position data classes that are not part of this position data class inheritance hierarchy. </p> <ul><li id="GUID-CCE8AC41-C64D-5CB3-8297-4CB5E319080B"><p> <xref href="GUID-E66165C3-6391-39CF-BF88-99A61D69E6FA.dita"><apiname>TCourse</apiname></xref> holds bearing and current speed data. </p> </li> <li id="GUID-A214CDDF-8823-5F61-87C8-0537809A5F8F"><p> <xref href="GUID-5440B1A0-98B0-3689-AC0B-27D5A35BFDA1.dita"><apiname>TSatelliteData</apiname></xref> holds information on one of the satellites used to obtain the location fix. </p> </li> </ul> <p>Note that it is a position info object and not a position data object that is passed across the Location Acquisition API. Client applications extract the position data object from the wrapper position info object. </p> <p>See <xref href="GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita">Position data</xref> for a description of how the location data is represented inside the position data classes. </p> </section> <section><title>The position info classes</title> <p>Client applications use three position info classes that wrap the position data classes: </p> <ul><li id="GUID-E5BF9465-73F0-5F88-9D26-F74061DC14EB"><p> <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref> wraps a <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> class </p> </li> <li id="GUID-C65D7549-456B-5AE1-B3E4-5ED7A0F1888A"><p> <xref href="GUID-B4CD3637-0FC6-38B8-AE89-C03EEC83C50D.dita"><apiname>TPositionCourseInfo</apiname></xref> wraps a <xref href="GUID-E66165C3-6391-39CF-BF88-99A61D69E6FA.dita"><apiname>TCourse</apiname></xref> class </p> </li> <li id="GUID-B333B4A1-3D91-5C4A-9711-836769CB4B59"><p> <xref href="GUID-54AE0674-C49D-3329-8B77-3A58EFFC03D7.dita"><apiname>TPositionSatelliteInfo</apiname></xref> wraps a <xref href="GUID-5440B1A0-98B0-3689-AC0B-27D5A35BFDA1.dita"><apiname>TSatelliteData</apiname></xref> class </p> </li> </ul> <p>To get location information, a reference to an object of a class derived from <xref href="GUID-73D6F438-C270-33B9-974B-D4D1583E1738.dita"><apiname>TPositionInfoBase</apiname></xref> is passed in a call to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> or <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-D9E0BC1D-7783-35BA-8D88-223576E4C85E"><apiname>RPositioner::GetLastKnownPosition()</apiname></xref>. The position info class hierarchy allows simple location information (<codeph>TPositionInfo</codeph>), course information (<codeph>TCourse</codeph> Info) or satellite information (<codeph>TSatelliteInfo</codeph>) to be obtained via the same calls to the Location Acquisition API. </p> <p><b>HPositionGenericInfo</b> </p> <p> <xref href="GUID-C0D87E5C-315E-37E6-829E-73F93E83748E.dita"><apiname>HPositionGenericInfo</apiname></xref> is an extended position info class that allocates memory on the heap. Applications can use the class to retrieve additional position information from positioning hardware that can provide it (such as NMEA strings provided by Bluetooth GPS hardware). </p> <p> <codeph>HPositionGenericInfo</codeph> is only supported by the Location Server <codeph>eposserver.exe</codeph>. It can only be used by applications that link with <filepath>lbs.lib</filepath>. Not all PSYs support this class. </p> </section> <section><title>See also</title> <p><xref href="GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita">Position data</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ABD45929-DEA1-5500-B64A-B32F623B6A06.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-ABD45929-DEA1-5500-B64A-B32F623B6A06"><title>DumpSWIRegistryTool</title><shortdesc> <codeph>DumpSWIRegistryTool</codeph> interprets the software install registry entry (<filepath>.reg</filepath> file) and displays its content. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><refsyn><title>Syntax</title> <p><userinput>dumpswiregistrytool <parmname>[OPTIONS]</parmname> <cmdname>
+          &lt;ARGS&gt;</cmdname> </userinput> </p> <p>The following table lists all the options supported by <codeph>DumpSWIRegistryTool</codeph>. </p> <table id="GUID-F66CFDF9-0C3F-5ED0-B271-C3EC7D7E41D9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Options</entry> <entry>Description</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p> <varname>-v</varname>  </p> </entry> <entry><p>Displays version of the tool. </p> </entry> <entry><p><userinput>dumpswiregistrytool -v</userinput> </p> </entry> </row> <row><entry><p> <varname>-h</varname>  </p> </entry> <entry><p>Displays help message </p> </entry> <entry><p><userinput>dumpswiregistrytool -h</userinput> </p> </entry> </row> <row><entry><p> <varname>-p</varname>  </p> </entry> <entry><p>Displays all the registry entries for a package file along with package information such as package name, package uid, vendor name and so on. </p> </entry> <entry><p><userinput>dumpswiregistrytool [RegistryPath] [-p PackageUid]</userinput> </p> </entry> </row> <row><entry><p> <varname>-r</varname>  </p> </entry> <entry><p>Displays controller information about a package for a specified registry entry. </p> <p>The registry entry is recognized based on package uid, package name and vendor name. </p> </entry> <entry><p><userinput>dumpswiregistrytool [RegistryPath] [-r PackageUid PackageName VendorName]</userinput> </p> </entry> </row> </tbody> </tgroup> </table> <p>The following table lists the arguments to be specified with <codeph>DumpSWIRegistryTool</codeph>. </p> <table id="GUID-D28532B7-5069-518E-B4F2-9F399806B3B6"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Arguments</entry> <entry> Description</entry> </row> </thead> <tbody><row><entry><p> <varname>RegistryPath</varname>  </p> </entry> <entry><p>Specifies the software installation registry path. This overwrites the default PATH provided in environment variable. </p> <p> <b>Note:</b> The default path specified by <codeph>DUMPSWIREGISTRY</codeph> environment variable is <filepath>\epoc32\&lt;platform&gt;\c\sys\install\sisregistry\</filepath>. </p> </entry> </row> <row><entry><p> <varname>PackageUID</varname>  </p> </entry> <entry><p>Specifies the UID of the package. </p> </entry> </row> <row><entry><p> <varname>PackageName</varname>  </p> </entry> <entry><p>Specifies the name of the package. </p> <p>Can be obtained using the <varname>-p</varname> option. </p> </entry> </row> <row><entry><p> <varname>VendorName</varname>  </p> </entry> <entry><p>Specifies the name of the vendor. </p> <p>Can be obtained using the <varname>-p</varname> option. </p> </entry> </row> </tbody> </tgroup> </table> </refsyn> <example id="GUID-AE23E1B6-6816-5413-ACD1-0489E5030570"><title>Examples</title> <p>The following examples illustrates the usage of <codeph>DumpSWIRegistryTool</codeph>: </p> <ul><li id="GUID-E2F0001E-DDA5-51CD-B1DA-540D171DCA74"><p>To retrieve package level information </p> <p><userinput>dumpswiregistrytool -p 101f7989</userinput> </p> <p>This command displays information about all the registry entries of the specified package. In addition to this, it also displays package information such as packageuid, package name, vendor name, number of executables and so on, as shown in the following sample output: </p> <codeblock id="GUID-50992BB5-2979-5B7E-8D33-E0E27AC30F3B" xml:space="preserve">Package Information:
+
+Registry File :C:\sisregistry\101f7989\00000000.reg
+
+Package UID :0x101f7989
+Package Name :c32exe
+Vendor :symbianfoundation
+Package Index :0
+Drives :2000000
+No of executables :0
+Package Version :1.2.3
+Languages :English
+Selected Drive :No Drive Selected
+File Major Version :5
+File Minor Version :3
+Package Vendor Localized Name :symbianfoundation
+Package Install Type :Installation
+Is Package in ROM :Yes
+Package Preinstalled :No
+Is Package Signed :No
+Package Trust :SisPackageBuiltIntoRom
+</codeblock> </li> <li id="GUID-15734E5D-940D-5431-A798-4A04227B17D2"><p>To retrieve controller information for a package when a registry entry (<filepath>.reg</filepath> file) is specified. </p> <p><userinput>dumpswiregistrytool -r 101f7989 c32exe symbianfoundation</userinput> </p> <p>This command displays the controller information at the command prompt as shown in the following sample output: </p> <codeblock id="GUID-DD752B72-2CC2-5CB2-89D8-6C10407B7F9E" xml:space="preserve">Registry Controller Information:
+
+Registry Entry :\sisregistry\101f7989\00000000.reg
+
+Package UID :0x101f7989
+Package Name :c32exe
+Vendor :symbianfoundation
+Package Index :0
+
+Controller1 Version :1.2.3
+Controller1 Algorithm :SHA1
+
+Number of Dependencies : 0
+
+Number of Embedded Packages : 0
+
+SISProperty Count:0
+
+Number Of File Descriptions :1
+
+SIS File Description:
+
+Target1:z:\sys\bin\c32exe.exe
+File Operation Type :Install
+File Operation Options Type :VerifyOnRestore
+Algorithm :SHA1
+SID :0x0
+
+Validation Status : PackageInRom
+Revocation Status : OcspNotPerformed
+</codeblock> </li> </ul> </example> </refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ABD741AE-7F66-564C-895C-6E4682308CEA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ABD741AE-7F66-564C-895C-6E4682308CEA" xml:lang="en"><title>Example Code</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The list of example applications that demonstrates the use of the Imaging Frameworks is shown below: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ABE77283-EED8-5A33-B574-3B771EF11086" xml:lang="en"><title>How
+to Use ULogger with Comms</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial summarises one approach for enabling, retrieving and post-processing
+the <xref href="GUID-B25AB5A9-52A6-50C2-8656-F8ADEE260FC9.dita">ULogger</xref> logs
+for Comms. ULogger is part of the Unified Trace framework which replaces other
+logging mechanisms for Symbian OS including Flogger and CDU. </p>
+<p>The Unified Trace framework has greater flexibility and speed compared
+to Flogger and CDU. </p>
+<section><title>Introduction</title> <p>The Comms logging which has been migrated
+to ULogger is as follows: </p> <ul>
+<li id="GUID-677DDC92-E655-50AD-85A3-7B6817F9E12A"><p>Comms Framework Node
+messages - creation and destruction of Nodes and messages between Nodes. </p> </li>
+<li id="GUID-E496D531-2CF2-5042-8820-BC8CE75CE4C6"><p>Mesh Machine messages </p> </li>
+<li id="GUID-E4892E5F-845B-5672-AB90-944A8B7DAEBE"><p>data to support the
+SVG generation </p> </li>
+</ul> <p>This logging replaces some of what was logged through the "<codeph>LOG
+CFNode *</codeph> ", "<codeph>LOG Mesh *</codeph> " and "<codeph>LOG ESock
+*</codeph> " tags. In the case of the <codeph>ESock</codeph> tag, the logging
+which is written to ULogger is also written to CDU. </p> <p>This usage description
+assumes that the development tools already include ULogger support. </p>  </section>
+<section><title>Procedure - Using ULogger</title> <p><b>Requirements</b></p> <p> 
+          For this tutorial, the code under observation must be run from <xref href="GUID-D90C86C6-B85D-5941-9919-3725A9FFD548.dita">EShell</xref>.          </p> <p> 
+          The following binaries must include logging:          </p> <ul>
+<li><p>                 <filepath>nodemessages.dll</filepath>            
+   </p> </li>
+<li><p>                 <filepath>meshmachine.dll</filepath>             
+  </p> </li>
+<li><p>                 <filepath>commsfw.dll</filepath>                </p> </li>
+<li><p>                 <filepath>serverden.dll</filepath>                </p> </li>
+<li><p>                 <filepath>esocksvr.dll</filepath>                </p> </li>
+</ul><p> To enable logging for a binary either use the UDEB version of the
+ binary or rebuild the binary with the <codeph>SYMBIAN_TRACE_ENABLED</codeph> macro
+defined. </p></section>
+<section><title>Steps</title> <ol>
+<li id="GUID-E3B09A4E-C87A-45F9-8DE6-653BA1A2E426"><p>                 <b>Start
+Eshell</b> - ULogger only supports asynchronous                 logging, so
+from EShell start a second instance of EShell.                </p> <codeblock xml:space="preserve">start eshell</codeblock> <p> 
+               This allows ULogger to be stopped even if the code under  
+              observation does not exit normally.                </p> </li>
+<li id="GUID-8A912D95-8D99-4D2A-9A5E-C51132924DAC"><p>                 <b>Set
+the ULogger Filters</b> - To allow Comms logging                 enable the
+following filters:                </p><table id="GUID-56D45DFD-FD08-4B16-AB72-E5DD51C888E1">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Level</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry> <p>                         194                        </p></entry>
+<entry> <p>                         Node Messages                        </p></entry>
+</row>
+<row>
+<entry> <p>                         195                        </p></entry>
+<entry> <p>                         Mesh Machine                        </p></entry>
+</row>
+<row>
+<entry> <p>                         196                        </p></entry>
+<entry> <p>                         SVG Logging - provides extra logging so
+that 194 and 195                         can be displayed in an SVG file 
+                      </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>                 The following filter is also useful:        
+       </p> <table id="GUID-F2BA543D-0396-4552-9546-EF332B6BD747">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Level</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry> <p>                         3</p></entry>
+<entry> <p>                         Kernel Thread ID's - Thread and process
+creation                        </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>                 Set these filters with the following command:
+               </p> <codeblock xml:space="preserve">ulogger -efv 194 195 3 196
+ </codeblock> </li>
+<li id="GUID-72C31641-7F65-4AA8-83BB-752E7A6EE77E"><p>                 <b>Start
+ULogger</b> - The following command starts ULogger                 with the
+filter:                </p> <codeblock xml:space="preserve">
+ 
+ulogger -rv</codeblock> </li>
+<li id="GUID-CEDCDC01-1E86-4A67-9822-D94370DAF5E8"><p>                 <b>Run
+the code under observation</b> - In the first Eshell                 session,
+run the code to be tested or debugged.                </p> </li>
+<li id="GUID-8EA473A7-6609-48C2-8E66-BA56D0178669"><p>                 <b>Stop
+ULogger</b> - To stop ULogger and generate the                 logs, use the
+command:                </p> <codeblock xml:space="preserve">ulogger -qv</codeblock> </li>
+<li id="GUID-AC7549F8-4010-45D6-8C76-9322C16C86A1"><p>                 <b>Process
+the binary logs into text</b> - The log file                 created by ULogger
+is in a binary format and is located in the                 <filepath>c:\logs</filepath> folder
+on the device.                </p> <p>                 To use the log file,
+the file must be converted to a text format.                             
+  </p> <p>                 The Comms software has a decoder to interpret the
+ULogger output                 for Comms. This decoder is an MS Windows-compatible
+application and is located                 in <filepath>…\os\commsfw\commsfwtools\</filepath>.
+               </p> <p>                 An example command to run the decoder
+is:                </p> <codeblock xml:space="preserve">utracedecoder - -message-def esockmessages.definition.txt ulogger.log &gt; log.txt</codeblock> <p> 
+               The decoder uses a definition file to decipher the binary data
+in                 the log, and the decoder has definition files configured
+for the current scope                 of Comms logging. This example uses
+the ESock messages definition file, which                 is located in  
+              <filepath>…\os\commsfw\commsfwtools\commstools\utracedecoder\data\esockmessages.definition.txt</filepath>.
+                               </p> <p>                 The output in log.txt
+contains an interpretation of the original                 binary logs.  
+             </p> </li>
+<li id="GUID-73E7C874-4487-492C-875C-642ECEBDF74F"><p>                 <b>Generating
+the SVG diagram</b> - The exchange of                 messages between Nodes
+can be rendered into a diagram.                </p> <p>                 From <filepath>…\os\commsfw\commsfwtools\commstools\svg</filepath> run
+                <filepath>parseit.bat</filepath> specifying the path to the
+generated log.txt file:                </p> <codeblock xml:space="preserve">parseit.bat /log M:\path_to_log_file\log.txt</codeblock><fig id="GUID-F6E85A8D-09B3-40A1-B3DC-5B968C3F1A4C">
+<desc>Example SVG output from the Message Sequence Display Tool </desc>
+<image href="GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e65485_href.png" placement="inline"/>
+</fig> <p>                 Key to the SVG diagram:                </p> <ol>
+<li id="GUID-64C07144-E5BD-465E-915F-1A867AD62FAB"><p>                   
+   Vertical black lines are tagged with names to represent node          
+            lifetimes. For example: <codeph>IPCpr</codeph>               
+     </p> </li>
+<li id="GUID-4BEE656D-9DEB-402B-B3A9-3A5C822B5E99"><p>                   
+   Vertical lines forking from the node lifetime lines are               
+       MeshMachine activity lifetimes.                     </p> </li>
+<li id="GUID-BA5C28EF-856F-45CD-B6B8-AD1C0D663CA1"><p>                   
+   Black horizontal lines are message deliveries.                     </p> </li>
+<li id="GUID-61D41E05-7269-4A95-843D-E536141E56E0"><p>                   
+   Green horizontal lines are message postings.                     </p> </li>
+</ol> <p>                     New message types can be added to the definition
+files. See the documentation with the utracedecoder component.           
+     </p> </li>
+</ol></section>
+</conbody><related-links>
+<link href="GUID-A3E77067-7982-5803-A274-0C8F2562B483.dita"><linktext>Unified Trace
+Solution</linktext></link>
+<link href="GUID-9006B4EE-194E-50FA-A803-F9EAA13E14AA.dita"><linktext>How to Use
+the ULogger Configuration File</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AC39AA12-4F39-58DB-BE67-C624C0A96DE2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AC39AA12-4F39-58DB-BE67-C624C0A96DE2" xml:lang="en"><title>Symbian Platform Fundamentals Example Code</title><shortdesc>This code demonstrates the fundamental Symbian platform classes and shows basic techniques that can be employed in developing Symbian platform applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>These examples are simple standalone executables. They use a console to display lines of text to demonstrate the behaviour of the classes. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950" xml:lang="en"><title> Modifying
+TLD Policy Data</title><shortdesc>This document explains how to update the TLD character lists. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-229CD8D8-0BC4-443A-B3BA-7CA4E2DEEDF8"><p>Before you start, you must: </p> <ul>
+<li id="GUID-93E6F781-F32E-591C-AFF0-5E2965672620"><p>Be familiar with the
+general concepts of Top-Level Domain (TLD) and International Domain Name (IDN):
+see <xref href="GUID-6A78F618-09A9-56A7-8C58-98C353BF0788.dita">What is the Domain
+Name Server</xref>. </p> </li>
+<li id="GUID-2E726E0D-4BBA-51BB-9F9B-A89B2A2C2B5A"><p>Understand SIS files
+and how to install them: see <xref href="GUID-ED2D5BEA-AD2A-51CE-8CBC-8B5E33DD6356.dita">Secure
+Software Install SIS Tools</xref>. </p> </li>
+</ul> </prereq>
+<context id="GUID-352A7085-58F8-4D18-9FD2-E42CA9C6E7DC"><p>For each TLD, the InetURIList database contains a white list of
+safe characters and a black list of forbidden characters. These Unicode character
+sets improve the phone security by restricting access to potential phishing
+addresses. </p> <p>The default policy data is stored in an XML file in the
+ROM. To change the policy data, install an SIS package with a new TLD policy
+file. </p> </context>
+<steps id="GUID-FC107B6B-8AD5-5088-9687-C4A76905A62D">
+<step id="GUID-2AB5E926-62F2-5536-A8F5-855E9FEB2541"><cmd>Create a policy
+file with the updated data. For more information, see the <xref href="GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950.dita#GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950/GUID-4319147E-A6A0-5FBE-AC15-C61C287A762A">Policy data file example</xref> section below. </cmd>
+<info>The version must be higher than in the TLD policy file already installed
+on the phone. </info>
+<stepxmp><codeblock id="GUID-7759073B-9D6D-578E-8E85-2D32F79A3D21" xml:space="preserve">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+&lt;PolicyData version="2"&gt;
+   ...
+&lt;/PolicyData&gt;</codeblock> </stepxmp>
+</step>
+<step id="GUID-FA0E5385-250A-51A8-A34D-3F7588DECAB0"><cmd>Create a SIS package
+containing the TLD policy file. </cmd>
+<info>For more information, see <xref href="GUID-AFE0238A-D6A4-5D07-BB99-85E8CF97BD26.dita">SIS
+Tools Overview</xref>. </info>
+</step>
+<step id="GUID-ABB82F08-20B6-5B77-9FCC-E9ED9B04BC00"><cmd>Install the SIS
+package on the phone. </cmd>
+<info>The SIS installation replaces the previous TLD policy file by the new
+one. </info>
+</step>
+</steps>
+<result id="GUID-8B69E81C-D10B-4B75-866B-28A5C17B1EAC"><p>The next time the InetURIList server starts, it updates the InetURIList
+database if the policy data's version is higher than the current one. </p> </result>
+<example id="GUID-4319147E-A6A0-5FBE-AC15-C61C287A762A"><title>Policy data
+file example</title> <p>Here is a sample XML file for the TLD policy data:
+the character separator for the white and black lists is the space (blank)
+character. </p> <codeblock id="GUID-871D3153-DCCD-5B05-8776-6653ADBC2FD1" xml:space="preserve">
+&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+&lt;PolicyData version="2"&gt;
+        &lt;TLD name="TEST"&gt;
+               &lt;Whitelist&gt;
+            a b c d e f g h i j k l m n o p r s t u v w y 0 1 2 3 4 5 6 7 8 9 0 _ - A B C D E F G H I J K L M N O P R S T U V W Y
+               &lt;/Whitelist&gt;
+               &lt;Blacklist&gt;
+            q z Q Z
+               &lt;/Blacklist&gt;
+        &lt;/TLD&gt;
+     &lt;TLD name="GRK"&gt;
+               &lt;Whitelist&gt;
+            a b c d e f g h i j k l m n o p r s t u v w y 0 1 2 3 4 5 6 7 8 9 0 _ - A B C D E F G H I J K L M N O P R S T U V W Y
+               &lt;/Whitelist&gt;
+               &lt;Blacklist&gt;
+            α ν β ξ    γ ο δ π ε Ρ Ζ Σ Η Τ Θ Υ Ι ι Φ Κ κ Χ χ Λ Ψ ψ Μ μ    Ω ω
+               &lt;/Blacklist&gt;
+        &lt;/TLD&gt;
+ &lt;/PolicyData&gt;</codeblock> </example>
+<postreq id="GUID-0E78E46A-3D54-455A-B2B0-1657C811396B"><p>To remove the updated policy data, uninstall the SIS package.
+The policy database reverts to the default policy data. </p> </postreq>
+</taskbody><related-links>
+<link href="GUID-EDA831F7-7248-5C00-B6BE-B7F44097C9B6.dita"><linktext>WhiteList/BlackList
+TLD Services Overview</linktext></link>
+<link href="GUID-E97C2A7E-8E8F-58E6-99D4-288589385B44.dita"><linktext>Querying
+the TLD policy data</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AC5665B4-8E33-58A3-824B-6CC40E13160A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-AC5665B4-8E33-58A3-824B-6CC40E13160A"><title>Signal Strength Information Tutorial</title><shortdesc>This tutorial describes how to get the signal strength information with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-118619CA-9C07-578D-B36A-0CEDA713DEF6"> <step id="GUID-C52B6FA6-6291-5222-8943-C2AF63432054"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-7AF254B4-BBDE-5F65-801E-95E39353CDDB"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetSignalStrength()</apiname></xref> to get the signal strength information </info> </step> <step id="GUID-A9D065A3-6247-5600-9501-F0D78367D874"><cmd/><info>you can cancel the asynchronous request with a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EGetSignalStrengthCancel</apiname></xref> </info> </step> <step id="GUID-46E2E940-FFC4-5C20-A809-65966C993A0E"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ESignalStrengthChange</apiname></xref> to get the notification of any changes to the signal strength information </info> </step> <step id="GUID-99E58056-7B48-5439-B084-4E06CABC49D0"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ESignalStrengthChangeCancel</apiname></xref> to cancel the notification request. </info> </step> </steps> <example id="GUID-7D719A16-CC6E-59F8-9B2B-ED7A8E9EC516"><title>Signal strength example</title> <codeblock id="GUID-E35C1AE7-A832-57DB-8600-E1CA73F0B308" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TSignalStrengthV1 iSigStrengthV1;
+    CTelephony::TSignalStrengthV1Pckg iSigStrengthV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iSigStrengthV1Pckg(iSigStrengthV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetSignalStrength(iStatus, iSigStrengthV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       TInt32 sigStrength = iSigStrengthV1.iSignalStrength;
+       TInt8 bar = iSigStrengthV1.iBar;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetSignalStrengthCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e162018_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AC6FCBB0-E4FD-4D30-B000-1F652B2EE96A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-AC6FCBB0-E4FD-4D30-B000-1F652B2EE96A" xml:lang="en"><title>Create
+an instance of CCoeAppUi</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Create a <codeph>CCoeAppUi</codeph> object using the <codeph>ConstructL(CCoeAppUi
+*)</codeph>. This creates the <codeph>CCoeAppUi</codeph> object and the application's
+control stack, and starts a session with the View Server.     <codeblock xml:space="preserve">/** 
+Construct a control 
+*/
+class CAppUiNewControl : public CCoeControl
+    {
+    public:    
+        CAppUiNewControl();
+        void ConstructL();
+        ~CAppUiNewControl();
+    private:    
+        CAppUiNewControl* iControl;
+    };
+class CMCoeViewActivationObserver : public MCoeViewActivationObserver               {
+    public:
+        void ConstructL();
+        // from MCoeViewActivationObserver
+        void NotifyNextActivation( TVwsViewId&amp; aViewId,
+                                   MCoeViewActivationObserver&amp; aViewActivationObserver );
+        CMCoeViewActivationObserver* NewL();
+    private:
+        CCoeAppUi* iCCoeAppUi;
+    }
+/**
+Create a session
+*/
+CNewAppUi::ConstructL()
+    {
+    CCoeAppUi::ConstructL( iCCoeAppUi );
+    iControl=new( ELeave ) CAppUiNewControl();
+    iControl-&gt;ConstructL();
+    }</codeblock></p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672"><title>Positioning Module Status</title><shortdesc>This document describes positioning technology module status, which applications access through the Location Acquisition API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>This document describes Positioning Module status, which applications access through the Location Acquisition API. </p> </section> <section><title>Positioning Module status</title> <p>A Positioning Module has a <i>status</i> which is represented by a <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita"><apiname>TPositionModuleStatus</apiname></xref> object. The status describes the low-level state of a Positioning Module, such as whether it is disabled, initialising, or ready to retrieve location data, as well as its data quality status. </p> <p>A change in Positioning Module status is indicated by a <i>status event</i>. Details of the event are held in a <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> object. Client applications can receive notification of status events from the location server. </p> <p>Figure 1 illustrates Positioning Module status and event classes. </p> <fig id="GUID-C17083CB-4252-547F-BAAC-4388A105FEC1"><title>
+             Figure 1. TPositionModuleStatus and
+             TPositionModuleStatusEvent classes 
+          </title> <image href="GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e242212_href.png" placement="inline"/></fig> <p><b>TPositionModuleStatus </b> </p> <p> <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita"><apiname>TPositionModuleStatus</apiname></xref> describes the status of a Positioning Module. An application gets information about a Positioning Module's current status by calling <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-676FAC1B-1989-3D3C-84A5-DF82B874D7A3"><apiname>RPositionServer::GetModuleStatus()</apiname></xref>. There are two status types - <i>device status</i> and <i>data quality status</i>. </p> <p><b>Device status </b> </p> <p>Device status is the status of the hardware device utilised by a Positioning Module, such as the chipset used by an A-GPS Positioning Module. </p> <p> <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita#GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039/GUID-3702B7D3-EDE5-3FD9-B0D5-96C5FD4B32E6"><apiname>TPositionModuleStatus::DeviceStatus()</apiname></xref> returns the device status as a <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita#GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039/GUID-4C1E0860-4813-3B3F-A766-9F759ADC9E7C"><apiname>TPositionModuleStatus::TDeviceStatus</apiname></xref> value. The value returned can indicate a transient device status, such as whether the hardware is disabled, initialising, or ready. It can also indicate a more serious device error state. </p> <p><b>Data quality status </b> </p> <p>Data quality status describes the accuracy of the location data that a Positioning Module is able to provide at a point in time. </p> <p> <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita#GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039/GUID-FE9B37E2-7302-3818-A5F1-95669500FB14"><apiname>TPositionModuleStatus::DataQualityStatus()</apiname></xref> returns the data quality status as a <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita#GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039/GUID-08F4C71A-86B1-3B4C-A6C4-E181E218C533"><apiname>TPositionModuleStatus::TDataQualityStatus</apiname></xref> value. This value indicates whether the quality of location data is normal (the ideal condition), partially degraded or completely degraded. Location data quality can become degraded because the mobile device has moved out of range of any base stations or is in a position where it cannot receive signals from positioning satellites. Note that loss of information quality does not indicate a device error, which would be flagged by a change in the device status. </p> </section> <section><title>Positioning Module status events</title> <p>When a Positioning Module's status changes, a Positioning Module status event occurs. </p> <p>There are three types of Positioning Module status events: </p> <ul><li id="GUID-0852F3C8-9301-53E8-8769-74387D8499F1"><p>Device status events </p> </li> <li id="GUID-21995DC6-54A5-5585-85D2-0B09E7008533"><p>Data quality status events </p> </li> <li id="GUID-66A5D75B-9E5D-588A-872D-CBF2D818A6DF"><p>System level events. These events indicate that a Positioning Module has been added or removed in the system. </p> </li> </ul> <p><b>TPositionModuleStatusEvent </b> </p> <p>An object of class <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> has two functions: </p> <ul><li id="GUID-3389C877-68DE-505E-BB83-F8977D0E1C6D"><p>As the object on which an application defines the types of Positioning Module status events for which it requests notification. These are set by calling <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita#GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA/GUID-132DB32E-6A60-3CEC-9445-146B82E6D9CC"><apiname>TPositionModuleStatusEvent::SetRequestedEvents()</apiname></xref> passing a <xref href="GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B.dita#GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B/GUID-65DC3D52-46D8-33C9-BC70-6289022419A1"><apiname>TPositionModuleStatusEventBase::TModuleEvent</apiname></xref> bitmask value as a parameter to define the combination of events </p> </li> <li id="GUID-4E812AE8-5342-58DA-9690-EFA7E575DA46"><p>As the object on which the location framework sets the type of events that have occurred. These are retrieved by calling <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita#GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA/GUID-56695C9E-B488-3F9A-ADB6-04BB33433BF3"><apiname>TPositionModuleStatusEvent::OccurredEvents()</apiname></xref> and checking the returned <xref href="GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B.dita#GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B/GUID-65DC3D52-46D8-33C9-BC70-6289022419A1"><apiname>TPositionModuleStatusEventBase::TModuleEvent</apiname></xref> value. </p> </li> </ul> <p><b>Event notification </b> </p> <p>An application calls <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-3AA81126-EB13-3F1B-9464-E86CC7769EB5"><apiname>RPositionServer::NotifyModuleStatusEvent()</apiname></xref> to receive notification of Positioning Module status changes, passing a reference to a <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> object on which it has set the requested events. An application also supplies a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object and optionally a <xref href="GUID-1104624D-88F7-36EE-9C9D-470346C10318.dita"><apiname>TPositionModuleId</apiname></xref> object if status changes from only one Positioning Module are required. </p> <p>When the status of a Positioning Module changes, the client application is notified. The <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> <codeph/> object that was supplied to the location server now also contains details of the events that have occurred and these are obtained by calling <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita#GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA/GUID-56695C9E-B488-3F9A-ADB6-04BB33433BF3"><apiname>TPositionModuleStatusEvent::OccurredEvents()</apiname></xref>. </p> <p>The Positioning Module status is obtained by calling <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita#GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA/GUID-7707E844-34A2-3454-88C9-0456382ACD40"><apiname>TPositionModuleStatusEvent::GetModuleStatus()</apiname></xref> providing a <xref href="GUID-F8376F62-46F2-3E7C-9536-920DB6FC6039.dita"><apiname>TPositionModuleStatus</apiname></xref> reference as a parameter. </p> <p>See <xref href="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita">How to Get Positioning Module Status Changes</xref> for an example. </p> </section> <section><title>Uses of Positioning Module status</title> <p>Quality status events are useful for applications that need to modify their behaviour based on the quality of location information that can be received. For example, an application may need to show a message when a user moves into an area where the accuracy of location information is degraded to a lower quality than is required because of distance from a base station or inability to receive satellite signals. </p> <p>Device status events and system Positioning Module events are most useful to software components that perform administrative operations, such as taking a Positioning Module online or offline. The events can be used to notify when such an administrative operation is complete. </p> <p>Device status events can also be used to keep a user informed as to the status of a particular Positioning Module. For example, a phone status bar could be updated to show that GPS is active when location information is being received. </p> </section> <section><title>See also</title> <p><xref href="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita">Positioning Modules</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AC99E9ED-2C02-561A-ABA4-DCDD415E8653.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AC99E9ED-2C02-561A-ABA4-DCDD415E8653" xml:lang="en"><title>Math
+functions</title><shortdesc>Describes the maths functions used by application programs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-965ABD80-2C30-43D1-8F40-7BF573301630"><title>Calling syntax</title> <p>Math functions are designed for
+use by application programs which must be able firstly to do the desired calculation
+and secondly to handle error conditions arising from the calculations. Thus,
+the ANSI-style functions of the form</p> <codeblock id="GUID-C277F9D8-5FDD-5460-B059-DF02E36B4948" xml:space="preserve">double sin(double); // typical declaration</codeblock> <codeblock id="GUID-8A9C44FE-7EDF-59DB-AFE0-B48148CBE0C8" xml:space="preserve">double x=1; // argument
+double a; // result
+a=sin(x); // typical use</codeblock> <p>are not implemented by the Symbian
+software platform. Rather, all functions return error information explicitly.</p> <p>All
+functions are provided as static member functions of the <codeph>Math</codeph> class.
+This is a convenient packaging mechanism. A typical math function is thus
+declared like this:</p> <codeblock id="GUID-C363CF23-CE56-59FA-A4EB-2DA2AD886C0D" xml:space="preserve">class Math
+    {
+public:
+    // ...
+    static TInt Sin(TReal &amp;aTrg,const TReal &amp;aSrc);
+    // ...
+    };</codeblock> <p>and used like this:</p> <codeblock id="GUID-EA13F019-D473-5757-B036-8461BD3B0143" xml:space="preserve">TReal x=1; // argument
+TReal a; // result
+TInt matherror; // error indication
+matherror=Math::ASin(a,x); // get result and error
+User::LeaveIfError(matherror); // handle error</codeblock> <p>This syntax
+is unusual for those used to the ANSI library. However, the ANSI library functions
+are designed for speed, and for users whose programs control the valid range
+of the arguments, and can thus reasonably ensure that they are within range.
+The <codeph>Math</codeph> class, however, provides direct support to expression
+interpreters acting on numbers entered by users. In this context, error checking
+is a vital part of the process.</p> <p>In most cases, the same variable may
+be used for both argument and result, i.e., <codeph>Math::Sin(x,x)</codeph> will
+work as expected, because the function has finished with the argument by the
+time the result is written to.</p> </section>
+<section id="GUID-8633E2E3-316D-40AE-9F88-77E6CF7FA041"><title>Precision</title> <p>The <codeph>TReal</codeph> type is equated
+to <codeph>double</codeph>. With an IEEE754 floating-point implementation,
+this gives a range from about 2.225074 × 10<sup>–</sup> <sup>308</sup> to
+about 1.797693 × 10<sup>+308</sup>, and an accuracy of 15 decimal places.</p> </section>
+<section id="GUID-2D26DDD3-FE18-4D0A-AC10-F445708750BB"><title>Error indications</title> <p>All functions return a standard
+error code. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495-master.png has changed
Binary file Symbian3/SDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e132376_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACB3786B-38EB-58F4-87B6-6A46A390B154.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ACB3786B-38EB-58F4-87B6-6A46A390B154" xml:lang="en"><title>Bluetooth Comms Profiles Collection</title><shortdesc>The Bluetooth Comms Profiles collection provides implementations of Bluetooth Profiles. Currently it provides an implementation of the Bluetooth PAN profile. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACC71D0D-32C4-5DAF-B4D9-66013A073FD4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ACC71D0D-32C4-5DAF-B4D9-66013A073FD4" xml:lang="en"><title>Synchronising
+FEP Instantiations</title><shortdesc>This topic describes how to synchronize settings across different
+instances of the same FEP.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>As mentioned previously, the FEP architecture has been designed so that
+each running application has its own instance of the current FEP. <codeph>CCoeFep</codeph> provides
+support for synchronizing attributes across all of these instances, so that
+when one instance changes the value of an attribute, the others are automatically
+updated. In order for this to happen, the FEP has to do several things. </p>
+<ul>
+<li id="GUID-EC8E4D77-BE0E-5A5E-87B0-817109AD5D44"><p>Override the four pure
+virtual functions that <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> inherits from <xref href="GUID-B0007B23-6745-31BE-A832-9ACA4C12E3E6.dita"><apiname>MFepAttributeStore</apiname></xref>: <codeph>NumberOfAttributes()</codeph>, <codeph>AttributeAtIndex()</codeph>, <codeph>WriteAttributeDataToStreamL()</codeph> and <codeph>ReadAttributeDataFromStreamL()</codeph>. <codeph>NumberOfAttributes()</codeph> should return the number of attributes that are to be synchronized across
+all instances of the FEP, <codeph>AttributeAtIndex()</codeph> should return
+the UID of the specified attribute, and <codeph>WriteAttributeDataToStreamL()</codeph> and <codeph>ReadAttributeDataFromStreamL()</codeph> should
+write/read the specified attribute’s data to/from the provided stream. </p> </li>
+<li id="GUID-0163FF77-8495-5812-AF0D-2FB9AB376EC5"><p>When the object of the <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> -derived
+class has been fully constructed, call <codeph>CCoeFep::ReadAllAttributesL()</codeph>.
+This calls the <codeph>ReadAttributeDataFromStreamL()</codeph> virtual function
+for each of the UIDs that the FEP requires to be synchronized (as specified
+by <codeph>NumberOfAttributes()</codeph> and <codeph>AttributeAtIndex()</codeph>). </p> </li>
+<li id="GUID-E4435F88-8C8F-5E93-8587-101DBCA7FA03"><p>After internally changing
+the value of an attribute that is to be synchronized, call <codeph>CCoeFep::WriteAttributeDataAndBroadcastL()</codeph> to
+propagate that change to all the other instances of the FEP. The parameter
+identifies the attributes that are to be synchronized, using UIDs. See the
+Symbian website for information on how to be allocated UIDs. </p> </li>
+</ul>
+<p>The purpose of the <codeph>SynchronouslyExecuteSettingsDialogL()</codeph> exported
+function, which the FEP must provide, is to launch a dialog that allows the
+user to change any settings specific to that FEP. As mentioned above, there
+is no guarantee that any instance of that particular FEP exists when this
+function is called. In order for the dialog launched by <codeph>SynchronouslyExecuteSettingsDialogL()</codeph> to
+be able to edit settings that are required to be synchronized across all running
+applications, the dialog class must derive from <xref href="GUID-270424BB-124B-39FF-9CDA-5CAFB5407FAE.dita"><apiname>MFepAttributeStorer</apiname></xref>.
+The dialog class’ implementation of <xref href="GUID-270424BB-124B-39FF-9CDA-5CAFB5407FAE.dita"><apiname>MFepAttributeStorer</apiname></xref> ’s
+virtual functions should be the same as the <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> -derived
+class’ implementation of them. For an example of this, see TFEP1Plugin. When
+the dialog is launched it needs to call <codeph>MFepAttributeStorer::ReadAllAttributesL()</codeph> to
+correctly initialize all the settings. Conversely, the settings in the dialog
+are committed by calling <codeph>MFepAttributeStorer::WriteAttributeDataAndBroadcastL()</codeph>. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04"><title>SQL Joins</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This guide explains how to use CROSS JOIN phrases to override the optimizer's ordering of tables. </p> <section><title>Introduction</title> <p>SQLite uses the “CROSS JOIN” phrase as a means to override the table reordering decisions of the query optimizer. The CROSS JOIN connector is rarely needed and should probably never be used prior to the final performance tuning phase of application development. Even then, SQLite usually gets the order of tables in a join right without any extra help. But on those rare occasions when SQLite gets it wrong, the CROSS JOIN connector is an invaluable way of tweaking the optimizer to do what you want. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-8B5F579E-B94D-527C-9530-367B5B0729C9"><title>Use CROSS JOIN to Force a Particular Join Ordering</title> <p>The SQLite query optimizer will attempt to reorder the tables in a join in order to find the most efficient way to evaluate the join. The optimizer usually does this job well, but occasionally it will make a bad choice. When that happens, it might be necessary to override the optimizer's choice by explicitly specifying the order of tables in the SELECT statement. </p> <p>To illustrate the problem, consider the following schema: </p> <codeblock id="GUID-8B2D4E3C-7231-5D63-B8CD-CD687750CD1E" xml:space="preserve">
+CREATE TABLE node(
+    id INTEGER PRIMARY KEY,
+    name TEXT
+);
+
+CREATE INDEX node_idx ON node(name);
+
+CREATE TABLE edge(
+    orig INTEGER REFERENCES node,
+    dest INTEGER REFERENCES node,
+    PRIMARY KEY(orig, dest)
+);
+
+CREATE INDEX edge_idx ON edge(dest,orig);
+</codeblock> <p>This schema defines a directed graph with the ability to store a name on each node of the graph. Similar designs (though usually more complicated) arise frequently in application development. Now consider a three-way join against the above schema: </p> <codeblock id="GUID-61383F86-E84F-58F4-B2B1-81CD25635B88" xml:space="preserve">
+SELECT e.*
+FROM edge AS e,
+ node AS n1,
+ node AS n2
+WHERE n1.name = 'alice'
+ AND n2.name = 'bob'
+ AND e.orig = n1.id
+ AND e.dest = n2.id;
+</codeblock> <p>This query asks for information about all edges that go from nodes labelled “alice” over to nodes labelled “bob”. </p> <p>There are many ways that the optimizer might choose to implement this query, but they all boil down to two basic designs. The first option looks for edges between all pairs of nodes. The following pseudocode illustrates: </p> <codeblock id="GUID-19A9F537-D791-5894-9FA9-E205B3768CF7" xml:space="preserve">
+foreach n1 where n1.name='alice' do:
+    foreach n2 where n2.name='bob' do:
+        foreach e where e.orig=n1.id and e.dest=n2.id do:
+            return e.*
+        end
+    end
+end
+</codeblock> <p>The second design is to loop over all 'alice' nodes and follow edges off of those nodes looking for nodes named 'bob'. (The roles of 'alice' and 'bob' might be reversed here without changing the fundamental character or the algorithm): </p> <codeblock id="GUID-02A72F7B-D5AB-5306-95F9-9832EF05FB25" xml:space="preserve">
+foreach n1 where n1.name='alice' do:
+    foreach e where e.orig=n1.id do:
+        foreach n2 where n2.id=e.dest and n2.name='bob' do:
+            return e.*
+        end
+    end
+end
+</codeblock> <p>The first algorithm above corresponds to a join order of n1-n2-e. The second algorithm corresponds to a join order of n1-e-n2. </p> <p>The question the optimizer has to answer is which of these two algorithms is likely to give the fastest result, and it turns out that the answer depends on the nature of the data stored in the database. </p> <p>Let the number of alice nodes be M and the number of bob nodes be N. Consider two scenarios: In the first scenario, M and N are both 2 but there are thousands of edges on each node. In this case, the first algorithm is preferred. With the first algorithm, the inner loop checks for the existence of an edge between a pair of nodes and outputs the result if found. But because there are only 2 alice and bob nodes each, the inner loop only has to run 4 times and the query is very quick. </p> <p>The second algorithm would take much longer here. The outer loop of the second algorithm only executes twice, but because there are a large number of edges leaving each 'alice' node, the middle loop has to iterate many thousands of times. So in the first scenario, we prefer to use the first algorithm. </p> <p>Now consider the case where M and N are both 3500. But suppose each of these nodes is connected by only one or two edges. In this case, the second algorithm is preferred. </p> <p>With the second algorithm, the outer loop still has to run 3500 times, but the middle loop only runs once or twice for each outer loop and the inner loop will only run once for each middle loop, if at all. So the total number of iterations of the inner loop is around 7000. </p> <p>The first algorithm, on the other hand, has to run both its outer loop and its middle loop 3500 times each, resulting in 12 million iterations of the middle loop. Thus in the second scenario, second algorithm is nearly 2000 times faster than the first. </p> <p>In this particular example, if you run ANALYZE on your database to collect statistics on the tables, the optimizer will be able to figure out the best algorithm to use. But if you do not want to run ANALYZE or if you do not want to waste database space storing the SQLITE_STAT1 statistics table that ANALYZE generates, you can manually override the decision of the optimizer by specifying a particular order for tables in a join. You do this by substituting the keyword phrase “CROSS JOIN” in place of commas in the FROM clause. </p> <p>The “CROSS JOIN” phrase forces the table to the left to be used before the table to the right. For example, to force the first algorithm, write the query this way: </p> <codeblock id="GUID-E0FE82CE-0D32-535F-A4F7-EF582BFA7AE9" xml:space="preserve">
+SELECT *
+FROM node AS n1 CROSS JOIN
+ node AS n2 CROSS JOIN
+ edge AS e
+WHERE n1.name = 'alice'
+ AND n2.name = 'bob'
+ AND e.orig = n1.id
+ AND e.dest = n2.id;
+</codeblock> <p>And to force the second algorithm, write the query like this: </p> <codeblock id="GUID-33AD25F2-E58E-5018-BE0C-025FC2116643" xml:space="preserve">
+SELECT *
+FROM node AS n1 CROSS JOIN
+ edge AS e CROSS JOIN
+ node AS n2
+WHERE n1.name = 'alice'
+ AND n2.name = 'bob'
+ AND e.orig = n1.id
+ AND e.dest = n2.id;
+</codeblock> <p>The CROSS JOIN keyword phrase is perfectly valid SQL syntax according to the SQL standard, but it is syntax that is rarely if ever used in real-world SQL statements. Because it is so rarely used otherwise, SQLite has appropriated the phrase as a means to override the table reordering decisions of the query optimizer. </p> <p>The CROSS JOIN connector is rarely needed and should probably never be used prior to the final performance tuning phase of application development. Even then, SQLite usually gets the order of tables in a join right without any extra help. But on those rare occasions when SQLite gets it wrong, the CROSS JOIN connector is an invaluable way of tweaking the optimizer to do what you want. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link><linktext/></link><link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ACD9E338-DF75-5811-B696-C3900B498218" xml:lang="en"><title>Privacy
+Requester Classes</title><shortdesc>This document describes the classes that were used in earlier versions
+of the Symbian platform to identify the requester of location information
+to the LBS subsystem. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use of these classes is now optional. It is recommended that you still
+use them if your LBS applications must run on devices based on earlier versions
+of Symbian. </p>
+<section><title>Purpose</title> <p>The privacy requester classes were defined
+as part of the Location Acquisition API before platform security was introduced
+in Symbian OS v9. On all platforms based on Symbian OS v9 and later, client
+applications are required to have the <codeph>Location</codeph> capability
+to use the Location Acquisition API. Platform security checks fulfil much
+of the role of the privacy requester classes. </p> </section>
+<section><title>Privacy requester classes</title> <p>This section describes
+the privacy requester classes. </p> <p><b>Class
+description</b> </p> <p>Figure 1 shows the Privacy classes provided by the
+Location Acquisition API. </p> <fig id="GUID-BE65E6CB-5286-5DFE-B50C-8C088960432B">
+<title>                 Figure 1. Location Acquisition API privacy classes.
+              </title>
+<image href="GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e241834_href.png" placement="inline"/>
+</fig> <p>A requester is defined as an agent
+that requests location information. There are two requester types: </p> <ul>
+<li id="GUID-79C7473E-C3DD-5011-BE50-F8D1075E9B07"><p>Service requesters </p> <p>A
+service requester represents any terminal or network application or service. </p> </li>
+<li id="GUID-FCEA02C9-CB00-5BD4-89FB-55D703DDE0B4"><p>Contact requesters </p> <p>A
+contact requester represents an individual person requesting the location. </p> </li>
+</ul> <p> <xref href="GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA.dita#GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA/GUID-B484D0AF-BEB1-3D08-8D14-8E510AB8C465"><apiname>CRequestor::RequestorType()</apiname></xref> defines the type
+of the requester. The requester information is sent to Location Server before
+requesting location estimates. </p> <p><b>Defining
+requesters</b> </p> <p>Requesters may be defined in one of two ways: </p> <p><b>Defining a single requester</b> </p> <p>A single requester is defined by
+calling <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-E1B082DC-9C01-3852-B1D8-B2FD18235319"><apiname>RPositioner::SetRequestorL()</apiname></xref>. The method signature
+is: <codeph>TInt SetRequestor(CRequestor::TRequestorType aType,          
+      CRequestor::TRequestorFormat aFormat, const TDesC&amp;             
+   aData)</codeph>. </p> <p>The requester is defined directly by the values
+supplied to the function’s parameters. This case is used by applications or
+services if they are the only request source. </p> <p> <xref href="GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA.dita#GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA/GUID-5EE5AFBF-D212-34A9-8DF5-9B193673FA3F"><apiname>CRequestor::TRequestorType</apiname></xref> defines
+the type of requester: a service or contact. </p> <p> <xref href="GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA.dita#GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA/GUID-EF476AFD-2F46-39FA-B6E2-74759B549223"><apiname>CRequestor::TRequestorFormat</apiname></xref> defines
+the format of the requester identifier passed in <codeph>aData</codeph>: an
+application name, contact, email address etc. </p> <p><b>Defining a stack of requesters</b> </p> <p>If an application requests
+location information on behalf of another agent or agents, it can specify
+the chain of requesters by calling a second variant of <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-E1B082DC-9C01-3852-B1D8-B2FD18235319"><apiname>RPositioner::SetRequestorL()</apiname></xref>.
+The method signature is: <codeph>TInt SetRequestor(const                 RRequestorStack&amp;
+aRequestorStack)</codeph>  </p> <p> <xref href="GUID-BAB32310-D928-3314-B253-9685721EABE0.dita"><apiname>RRequestorStack</apiname></xref> is
+a container for a list of the requesters on behalf of which the request is
+made. Each requester in the stack is represented by a <xref href="GUID-AA0D6BF8-DFD6-3A6D-8366-CFCB301D17CA.dita"><apiname>CRequestor</apiname></xref> class. </p> <p>Note: Regardless of the number of requesters, there is always one service
+requester, because the application executing the location request must be
+always shown, even if it made the request on behalf of a contact requester.
+For this reason, the last item in the requester stack must always be a service
+requester (type <xref href="GUID-B59CCB2E-400A-3359-B27D-06F75AC588A6.dita#GUID-B59CCB2E-400A-3359-B27D-06F75AC588A6/GUID-33B2120D-3388-304B-A0DC-E08F86F696FB"><apiname>CRequestorBase::ERequestorService</apiname></xref>). </p> </section>
+</conbody><related-links>
+<link href="GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita"><linktext>Position
+Area Data Classes</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28" xml:lang="en"><title>Data
+caging</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Data caging means that the applications and the users have access only
+to certain areas of the file system. In practice the applications can access
+their own private folders and folders that are marked as open. It means, for
+example, that one application cannot access the private folder and data of
+another application. There are restricted file storage areas for system, private,
+and resource data.</p>
+<p>The file system has the following structure:</p>
+<ul>
+<li><p>The <codeph>\sys</codeph> folder is the restricted system
+area. You need <codeph>AllFiles</codeph> capability to read the content, and
+Trusted Computing Base (<codeph>TCB</codeph>) capability to modify the content.</p>
+<p>The subfolder <codeph>\sys\bin\</codeph> contains all binaries (<codeph>exe</codeph>, <codeph>dll</codeph>,
+etc.). All binaries must have a different name. An application can only be
+launched from this subfolder.</p></li>
+<li><p>The <parmname>\private\</parmname> folder includes folders
+for all applications.</p><p>The <codeph>\private\&lt;SID&gt;\</codeph> subfolder
+contains private data only to be accessed by the application itself. SID is
+determined by the <xref href="GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita#GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC652">Secure
+Identifier</xref> of the process. Without any capabilities you can read and
+write only in the application's own directory. You need <codeph>AllFiles</codeph> capability
+to access all private directories. Backup software can read and write to this
+directory.</p><p>The <codeph>\private\&lt;SID&gt;\import\</codeph> subfolder
+is for resource files, such as registration files, that are not directly related
+to the application. You can write into this subfolder only after it is created
+and named correctly.</p><p>Application registration resource files should
+be installed in the <parmname>\private\10003a3f\import\apps</parmname> subfolder.</p>
+</li>
+<li><p>The <parmname>\resource</parmname> folder is for sharing
+resource files.  This data can be icons, bitmaps, and other material useful
+for all the applications. You do not need any capabilities to read these files.
+You need <codeph>TCB</codeph> capability to modify the content.</p><p>ECom
+registration resource files should be installed in the <parmname>\resource\plugins</parmname> subfolder.</p>
+</li>
+</ul>
+<p>For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Base-subsystem-guide/f32/FileServerClientSide/FileServerClientSideGuide5/ApplicationArchitecture.guide.html" format="application/java-archive">File
+locations</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACE7D63F-9544-56DB-A72D-FFB0A35661EC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-ACE7D63F-9544-56DB-A72D-FFB0A35661EC" xml:lang="en"><title>Loading
+a Symbian platform Defined Table, Changing a Field, Write Changed Record:
+Tutorial</title><shortdesc>This tutorial shows you how to load a Symbian platform defined
+table from the Comms Database, change a field, and write the changed record
+to the database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+
+
+<prereq id="GUID-A9D46D95-97E9-537C-BDAA-80CF7A780A99"><p>Before you start,
+you must understand: </p> <ul>
+<li id="GUID-A70B727A-1BE6-5443-91DD-103CD9842F16"><p>the general concept
+of the Comms Database </p> </li>
+<li id="GUID-15D683C4-D755-5BEC-845D-A81891190114"><p>the specific concept
+of fields, records, links and tables </p> </li>
+<li id="GUID-686874B2-2B58-5B2A-A9FF-71C156232E62"><p>how to write and build
+application code to run on Symbian platform </p> </li>
+</ul> </prereq>
+<context id="GUID-9837C422-F698-5621-AE3D-2410D5FBDA37"><p>This tutorial shows
+you: </p> <ul>
+<li id="GUID-72E9465D-1003-521A-8449-37ABB8A5F84E"><p>how to load the <i>Internet
+Access Points Configuration</i> table. This table is also called the IAP table </p> </li>
+<li id="GUID-E4E3455F-1A38-53A2-B609-314580025107"><p>how to search for a
+records that have a specific <i>Service Type</i> field. </p> </li>
+<li id="GUID-810269E0-5159-5028-9A8F-E9DEA5BCB815"><p>how to change the <i>Network
+Weighting</i> field in the last record found </p> </li>
+<li id="GUID-240F862B-4292-5E86-A7F2-AEF989BBAF7F"><p>how to store the changed
+record in the Comms Database. </p> </li>
+</ul> <p>The principles that apply here also apply to the other Symbian platform
+defined tables. </p> </context>
+<steps id="GUID-DCCB1FCB-FC9C-5D02-AD5C-F85560BE77E4">
+<step id="GUID-F8378F77-253C-5FC0-9235-05E15F8A7E2F"><cmd>Make sure that you
+have created a session. </cmd>
+</step>
+<step id="GUID-6FD057FB-F78B-5524-8DAB-9EF7EEE03DC7"><cmd>Create the table
+object in the tool or application process. </cmd>
+
+<info>You create a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> <codeph>&lt;T&gt;</codeph> object
+and specify <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDIAPRecord</apiname></xref> as the template
+parameter. </info>
+
+<info>Symbian platform defines the <codeph>CCDIAPRecord</codeph> class to
+represent a IAP record. The class is a schema for the record. The class defines
+the fields and links that make a IAP record. </info>
+<info>Symbian platform defines <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-32E556BC-55C3-5FBD-9A60-9708139C20D6">unique
+numeric Id</xref> s for Symbian platform defined tables. The symbol <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdIAPRecord</apiname></xref> defines the value of this Id for
+the IAP table. The Id allows the CommsDat API to retrieve the table from the
+Comms Database efficiently. </info>
+<info>To work with other Symbian platform defined tables, use the correct
+class name and the correct unique numeric Id values. The <xref href="GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita">Reference</xref> section
+contains a list of all Symbian platform defined tables. </info>
+<stepxmp><codeblock id="GUID-AB6A65B1-4FBB-5712-97CC-B9223A1538B6" xml:space="preserve">...
+
+// This code fragment assumes that a session with the Comms Database has been created.
+// iDb is a pointer to a CMDBSession object
+...
+
+// Use the standard "new (ELeave)" construction to create the object to 
+// represent the table. 
+//
+// Note:
+// 1. the template parameter CCDIAPRecord defines 
+//    the "IAP" record type.
+// 2. the unique numeric Id KCDTIdIAPRecord is passed as a parameter
+//    to the constructor.
+CMDBRecordSet&lt;CCDIAPRecord&gt;* iapRecordSet = 
+   new (ELeave) CMDBRecordSet&lt;CCDIAPRecord&gt;(KCDTIdIAPRecord);
+...
+             </codeblock> </stepxmp>
+</step>
+<step id="GUID-78143DEF-8DA6-5FAB-A2D1-60891D85CED9"><cmd>Create a record
+that contains the type of Service Typefield needed. </cmd>
+
+<info>To search for a record the tool or application creates a record in memory.
+The fields in the record are set to the specific values on which the search
+is to match. In this tutorial this record is called the "search record". The
+record is appended to the set of records in the table object. At this point,
+the search record is the only record in the table, because the Comms Database
+has not yet been accessed. </info>
+
+<info>In this tutorial, the Service Type field in the search record is set
+to DialOutISP. </info>
+<stepxmp><codeblock id="GUID-0477C3F8-1ECF-50F8-B60A-55E3FF58BEB2" xml:space="preserve">...
+// Searching for all IAP records that support the DialOutISP service.
+_LIT(KServiceType, "DialOutISP");
+
+    
+// Create the "search record". You use the unique numeric Id KCDTIdIAPRecord 
+// to identify the type record to the factory function.
+CCDIAPRecord* ptrPrimingRecord = static_cast&lt;CCDIAPRecord *&gt;
+    (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+
+
+// Prime the Service    Types field with the string "DialOutISP"
+ptrPrimingRecord-&gt;iServiceType.SetMaxLengthL(KServiceType().Length());
+ptrPrimingRecord-&gt;iServiceType = KServiceType; 
+
+
+// Append the search record to the table in memory. Remember that the table only 
+// contains this record. The Comms Database has not yet been accessed.
+iapRecordSet-&gt;iRecords.AppendL(ptrPrimingRecord);
+
+
+// Set the record pointer to NULL, because ownership of the "search record" has
+// been passed to the table object.
+ptrPrimingRecord = NULL; 
+...</codeblock> </stepxmp>
+</step>
+<step id="GUID-CAE140E8-AE1E-5B7A-A9E1-4A0885F02429"><cmd>Perform the search. </cmd>
+
+<info>Use the <codeph>FindL()</codeph> function to search the table in the
+Comms Database. The function is called on the class that defines the table.
+The function is implemented in the base class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref>.
+You pass a reference to the session object into the <codeph>FindL()</codeph> function. </info>
+<stepxmp><codeblock id="GUID-1F8AC8D1-3C78-534F-8658-7D439BFFCF6D" xml:space="preserve">...
+// Perform the search. 
+if(iapRecordSet-&gt;FindL(*iDb))
+    {
+    // At least one record found. 
+    // Find the number of records found.   
+    TInt iapRecordsFound = iapRecordSet-&gt;iRecords.Count();
+
+    // Change the Network Weighting field in the last record.
+    CCDIAPRecord* iapRecord = 
+        static_cast&lt;CCDIAPRecord*&gt;( iapRecordSet-&gt;iRecords [iapRecordsFound-1]);
+    iapRecord-&gt;iNetworkWeighting = 1;
+
+    // Update the changed record in the Comms Database
+    
+    // EITHER
+    // Check through all records and submit all changes
+    // made by the tool or application.
+    iapRecordSet-&gt;ModifyL(*iDb);
+
+    // OR 
+    // Explicitly submit this record only
+    iapRecord -&gt;ModifyL(*iDb); 
+    ...
+    }
+else 
+    {
+    // No matching records found.
+    // Note that iRecords[0] still contains the "search record". The "search record"
+    // only contains the priming values.
+    // It is important to check the return code from the call to ModifyL()
+    }           
+...</codeblock> </stepxmp>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database
+                concepts</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ACF6C0A2-87ED-55B3-B22A-9B331D9940AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ACF6C0A2-87ED-55B3-B22A-9B331D9940AC" xml:lang="en"><title>File management and searching</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33"><title>-verbose</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option pipes to STDOUT the calls to tools that a particular build step is making, and can be useful in determining exactly where an error occurs during the build process.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AD5F35EC-4459-589F-9C46-94901562E05F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AD5F35EC-4459-589F-9C46-94901562E05F" xml:lang="en"><title>Clock</title><shortdesc>This section explains how to display digital and analogue clocks.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AD6587AD-A5B2-5369-9217-D752A37490C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AD6587AD-A5B2-5369-9217-D752A37490C4" xml:lang="en"><title>Bearer Mobility</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section gives detailed information on the APIs that enable the email server Message Type Modules (MTM), such as, POP3, IMAP4, and SMTP for non-seamless network bearer mobility. It also gives information on the bearer mobility policy plug-in that is used to receive notifications when a switch to a new bearer occurs, or when the current network connection is lost. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AD6A057D-D514-4145-B7A6-E43959543E92.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AD6A057D-D514-4145-B7A6-E43959543E92" xml:lang="en"><title>HTTP
+Proxy Property</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>By default, a new <codeph>RHTTPSession</codeph> is set to make direct connections
+to an origin server. To switch it to use a proxy, the following two properties
+must be set: <codeph>HTTP::EProxyUsage</codeph> and <codeph>HTTP::EProxyAddress</codeph>. </p>
+<ul>
+<li id="GUID-6E1C24B1-590B-5FFE-8C00-FDF030B22B19"><p> <codeph>HTTP::EProxyUsage</codeph> can
+take the values <codeph>HTTP::EDoNotUseProxy</codeph> (the default) or <codeph>HTTP::EUseProxy</codeph>. </p> </li>
+<li id="GUID-DDAE87A1-A5E8-53CD-A6C7-464066930AB8"><p> <codeph>HTTP::EProxyAddress</codeph> must
+be set using an <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> value that contains the proxy
+address as an IP Address and port number separated by a colon, for example,
+"10.158.7.4:9003". </p> </li>
+</ul>
+<codeblock id="GUID-D7CF5B00-1F32-5424-8B81-1C1B53E4E6D7" xml:space="preserve">void CHttpClient::SetProxyL(RStringF aProxyAddr)
+    {
+    RHTTPConnectionInfo connInfo = iSess.ConnectionInfo();
+    THTTPHdrVal proxyUsage(iSess.StringPool().StringF(HTTP::EUseProxy,RHTTPSession::GetTable()));
+    connInfo.SetPropertyL(iSess.StringPool().StringF(HTTP::EProxyUsage,RHTTPSession::GetTable()), proxyUsage);
+
+    THTTPHdrVal proxyAddr(aProxyAddr);
+    connInfo.SetPropertyL(iSess.StringPool().StringF(HTTP::EProxyAddress,RHTTPSession::GetTable()), aProxyAddr);
+
+    Printf(_L("Proxy set to:%S\n\n"), &amp;iProxyName);
+    }</codeblock>
+<p>Changes made to the proxy settings will affect only new transactions opened
+on the session, and not any currently in progress. </p>
+<section id="GUID-AEA826D4-0F86-4817-8B06-BB0FA0799525"><title>Transaction proxy properties</title><p>A proxy setting can
+be set for an individual transaction by setting the proxy properties on the
+transaction. Proxy properties set on the transaction override any proxy properties
+set on the session. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AD6CF225-CFF9-5F76-AA00-3535EA7D6FF1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AD6CF225-CFF9-5F76-AA00-3535EA7D6FF1" xml:lang="en"><title>Image Processor Library Concept</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section introduces to the Image Processor Library concept. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AD7D9D39-6FF0-5811-9708-98538271BA0D" xml:lang="en"><title>Position
+data</title><shortdesc>This document describes the basic and extended classes that hold
+position data. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>This document describes how position data
+is represented within the <xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">position
+data classes</xref>. </p> </section>
+<section><title>Values and co-ordinates</title> <ul>
+<li id="GUID-23C5B7B1-8F7E-5E67-BFC5-8B6ADF2EC263"><p>The World Geodetic System
+reference datum (WGS 84) is used by LBS. This is a global co-ordinate system
+in which co-ordinates are expressed as latitude and longitude in degrees and
+altitude in metres above the reference datum. In WGS 84, latitude values have
+the range (-90 &lt;= Lat &lt;= +90) and longitude values have the range (-180
+&lt;= Long &lt; +180). </p> </li>
+<li id="GUID-3F2BFE0F-29A1-516D-A27B-35298AD35FC8"><p>In LBS, latitude and
+longitude are held as <codeph>TReal64</codeph> values and altitude is held
+as a <codeph>TReal32</codeph> value. </p> </li>
+<li id="GUID-EB9BEB2B-2CC2-5C70-9A88-4C9D80F42D0A"><p>Both horizontal and
+vertical accuracy are held as <codeph>TReal32</codeph> values and represent
+a possible error values in metres. </p> </li>
+<li id="GUID-9909202F-8C8C-5EAA-814F-B9760CE63F6C"><p>Bearings and headings
+are held as <codeph>TReal32</codeph> values and represent a direction in degrees.
+Bearing and heading accuracies are also held as <codeph>TReal32</codeph> values
+and represent a possible error value in degrees. </p> </li>
+</ul> </section>
+<section><title>Co-ordinate adjustment</title> <p>The <xref href="GUID-DDCBA817-9D88-3332-ABD3-1DDC6E397851.dita"><apiname>TCoordinate</apiname></xref> base
+class holds the latitude, longitude and altitude of a position. If an application
+attempts to assign values that are outside of the ranges specified by WGS
+84 to an instance of a <codeph>TCoordinate</codeph> class then the values
+are adjusted to lie within the correct interval. </p> </section>
+<section><title>Unassigned values</title> <p>In some situations, one of the
+position co-ordinates, typically altitude may not be known. This is usually
+because the positioning module that was used to obtain the location fix was
+unable to obtain data for that co-ordinate. Where LBS cannot assign a value
+to a co-ordinate value, the value "Not a Number" (NaN) is assigned to it.
+Applications must test for this situation by calling <xref href="GUID-1DB7AE7A-A505-3530-AC2B-EBAEFCD3F36A.dita#GUID-1DB7AE7A-A505-3530-AC2B-EBAEFCD3F36A/GUID-79B7EC5D-973E-3B91-91C4-48F10FC0038D"><apiname>Math::IsNaN()</apiname></xref> on
+each returned co-ordinate value before using it in a calculation. </p> </section>
+</conbody><related-links>
+<link href="GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita"><linktext>Position
+Area Data Classes</linktext></link>
+<link href="GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita"><linktext>Privacy Requester
+Classes</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755-master.png has changed
Binary file Symbian3/SDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e128205_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ADAD07E4-3539-52DC-B117-7078B3045B74.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ADAD07E4-3539-52DC-B117-7078B3045B74" xml:lang="en"><title>Defining
+the SNAP Preference</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to define the SNAP preference to be used by
+an email account. </p>
+
+<section><title>Required background</title> <p>Before you configure an email
+account to support bearer mobility, you have to define the SNAP preference
+for an email account. To define SNAP preference, complete the following steps: </p> </section>
+<section><title>Procedure</title> <ol id="GUID-92E04740-21FC-594B-90FD-3B4DD6AEA4E8">
+<li id="GUID-11B44717-3D14-539F-9759-E7BC4CD2DAD7"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-EB8E4F39-3AA4-5140-B610-41D8BC62D0C1"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-9049A392-002B-5BF3-947B-2C797588BE2C"><p>Use the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita#GUID-9CAB9BE5-7233-3A01-A906-756177CF4460/GUID-39CEA074-06E2-336A-9373-5060019BDCE2"><apiname>CImIAPPreferences::SetSnap()</apiname></xref> function
+to specify the SNAP to be used for connections. </p> </li>
+<li id="GUID-B93C7AE1-9035-5E21-8EF6-6BFD87C3DA6F"><p>Create an instance of
+the <xref href="GUID-DFE18962-0022-3833-A8F0-6E4C969177C0.dita"><apiname>CImSmtpSettings</apiname></xref> class, and populate with required access
+settings </p> </li>
+<li id="GUID-8FA47936-1B8F-5C74-94AC-6A0921D4F7B6"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class, and populate with required
+access settings. </p> <p>Where, &lt;protocol&gt; is either Imap4 or Pop3. </p> </li>
+<li id="GUID-322CF3D7-BF47-5015-8D3C-9C485A9A4C66"><p>Create the associated
+IMAP4, POP3, or SMTP accounts in the central repository using the appropriate <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Create&lt;protocol&gt;AccountL()</codeph> function. </p> </li>
+</ol> <note> All instances of &lt;protocol&gt; in the preceding steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>,
+or <codeph>Smtp</codeph>.</note></section>
+
+<section><title>Result</title> <p>An instance of one of the derived classes
+is used with an instance of <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> to configure
+an email account. These are stored and retrieved from the central repository
+through the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Save&lt;protocol&gt;SettingsL</codeph> function. </p> </section>
+<section><title>See also</title> <p> <xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e42127_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ADB9AD91-37A2-4FE6-B378-C43CD0A7B513.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ADB9AD91-37A2-4FE6-B378-C43CD0A7B513" xml:lang="en"><title>Alternatives
+to <codeph>fork()</codeph> and <codeph>exec()</codeph> for creating child
+processes</title><shortdesc>P.I.P.S. supports some industry standard alternatives for <codeph>fork()</codeph> and <codeph>exec()</codeph> while
+creating child processes. The scenarios are discussed in the following sections:</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ADDF9C0F-32D3-5CB1-B3B5-2FAD3A4EC278.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ADDF9C0F-32D3-5CB1-B3B5-2FAD3A4EC278"><title>Overview of GUI app building</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A Symbian platform GUI application has several components: </p> <ul><li id="GUID-49172324-8711-537E-8125-0BE7BCBAB06C"><p>an application executable, which is an EXE that uses the GUI framework </p> </li> <li id="GUID-822B7EB4-C8B1-5ABF-B7E3-DD9D8836E427"><p>a registration file, which contains non-localisable information </p> </li> <li id="GUID-D5D76B63-F909-5518-ADE6-A11FBC746625"><p>optional localisable information, provided by one or more localisable resource files and icon files </p> </li> </ul> <p>To appear on the shell, a GUI application (e.g. <filepath>AppName.exe</filepath>) must be located in the <filepath>sys\bin</filepath> directory. Applications built into the ROM must provide their registration files (e.g. <filepath>AppName_reg.rsc</filepath>) in the <filepath>\private\10003a3f\apps</filepath> directory, whilst applications installed via Software Install must provide their registration files in <filepath>\private\10003a3f\import\apps</filepath>. Resource files (e.g. <filepath>AppName.rss</filepath> and <filepath>AppName_loc.rss</filepath>) should be located in the <filepath>resource\apps</filepath> directory. </p> <p>For further information on TARGETPATHs see this <xref href="GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita#GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E/GUID-C8E8AB80-4EE5-5593-8981-4A91A0111419">table</xref>. </p> <p>The following pages discuss the special configuration issues associated with building for GUI application targets. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ADF4BBBC-E771-5A12-A246-B5EA8EEE8D79.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ADF4BBBC-E771-5A12-A246-B5EA8EEE8D79" xml:lang="en"><title>Initialising
+a subsession</title><shortdesc>Describes how to initialise a subsession.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>On the client side, the function <xref href="GUID-1BBE1448-1DF8-33C4-BF9E-5A5F427AEE35.dita#GUID-1BBE1448-1DF8-33C4-BF9E-5A5F427AEE35/GUID-9319F9AF-36E3-32AE-9D3D-619B203AD881"><apiname>RSubSessionBase::CreateSubSession()</apiname></xref> is
+used to create a new subsession and register it with the server. </p>
+<p>The client must already have established a session with the server. A reference
+to the client side session handle must be passed to the <codeph>CreateSubsession()</codeph> function. </p>
+<p>The operation code must be one which the server interprets as a request
+to create a sub-session. </p>
+<p>Only the first three 32 bit elements of the message argument array can
+be used by the client. The fourth element is used to communicate the handle
+number of the new server side subsession object.. In subsequent client requests,
+the fourth element is always used to pass the handle number to the server. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AE31B2A5-40BA-5FD4-9CCA-2CDF5B00DFDC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AE31B2A5-40BA-5FD4-9CCA-2CDF5B00DFDC" xml:lang="en"><title> Using
+a Management Plane session to receive Access Point notifications: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial shows how to register for Access Point notifications from
+the Management Plane. Filters allow the notifications to be restricted to
+certain Access Point fields. </p>
+<p>The <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ</apiname></xref> API
+has to be accessed through the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Sockets
+Server</xref> client API, so you need to ensure that <filepath>esock.lib</filepath> is
+included in the MMP file. </p>
+<section><title>Procedure</title> <ol id="GUID-D9D1E509-2DB7-56FD-ACF2-B9F76B415AA5">
+<li id="GUID-FAB284BB-919C-5B4F-AD78-A190E4032AA9"><p>Implement a class derived
+from <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>MAccessPointNotificationObserver</apiname></xref>. </p> </li>
+<li id="GUID-E9CE079D-5E47-5804-AC70-4754BC227CA0"><p>Construct a bundle of
+type <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>ConnectionServParameterBundle</apiname></xref>.
+The bundle specifies: </p> <ol id="GUID-3B94D198-D12D-5B32-B65B-60D4A5023243">
+<li id="GUID-F6B10B9E-8A56-5173-BEC7-3525D6266FA2"><p>When to notify <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ</apiname></xref> about
+the availability of Access Points. </p> </li>
+<li id="GUID-3627A9A8-ECAB-5E77-9257-F9BE55252C1E"><p>What information the
+client will receive in every notification. </p> </li>
+</ol> </li>
+<li id="GUID-C707D9E4-B15D-525F-906D-47E94E2415ED"><p>Call <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ::AccessPointNotification(const
+                CConnectionServParameterBundle&amp; aQuery,              
+  MAccessPointNotificationObserver&amp; aObserver)</apiname></xref> to register for
+notifications from the Management Plane. Specify <codeph>aObserver</codeph> as
+the class from the first step, and <codeph>aQuery</codeph> as the bundle from
+the previous step. </p> <ol id="GUID-D7FBCBD3-1F5D-5FA3-A90A-7EDF3D27C261">
+<li id="GUID-224E8F20-E034-52C6-AD53-0DBEE08B8842"><p>The client application
+receives the first notification with an empty bundle. </p> <p>For example,
+the client receives an instance of <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>CConnectionServParameterBundle</apiname></xref> with
+no <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>CParameterSetContainer</apiname></xref> as
+an argument. The receipt of this empty bundle is a signal to the client application
+that all relevant notifications have been set up and are active. At this point
+a call to <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>AccessPointStatusQuery()</apiname></xref> ensures
+that the client application has an accurate current view of the Management
+Plane. </p> </li>
+<li id="GUID-85DB2515-6099-58C5-8A55-C68D5DBC76E1"><p>Only one outstanding
+notification is allowed for each <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ</apiname></xref> session.
+If a second attempt is made then <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ::AccessPointNotification()</apiname></xref> returns <codeph>KErrInUse</codeph>. </p> </li>
+</ol> </li>
+<li id="GUID-0C30553B-DC7A-59B2-8829-A5E2F2ED9DDE"><p>Each notification is
+received through a call to the <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>AccessPointNotification(CConnectionServParameterBundle*
+                aResult)</apiname></xref> function of the class you derived from <codeph>MAccessPointNotificationObserver</codeph>. </p> <p>Each
+notification includes a parameter bundle in <codeph>aResult</codeph>. Ownership
+of this bundle is passed on this call. The client application must store this
+bundle until the bundle is no longer needed. The client application must delete
+the bundle once the bundle is no longer needed. </p> </li>
+<li id="GUID-DAF15ADB-B059-54A8-B8E4-B4D53448C296"><p>Call <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ::CancelAccessPointNotification()</apiname></xref>. </p> </li>
+</ol> </section>
+<section><title>Example Code</title> <p>The following is an example of Access
+Point notification: </p> <codeblock id="GUID-65754B1A-75F0-56C8-BDCA-00238C3F818A" xml:space="preserve">
+// Start the session as mentioned in starting a session
+ 
+// create bundle (This bundle is owned by this class so the destructor of this class    
+// must delete the bundle) 
+iQueryBundle = CConnectionServParameterBundle::NewL();
+
+// monitoring a specific Access Point
+ASSERT(iKnownAccessPointId);
+
+TAccessPointInfo apinfo;
+apinfo.SetAccessPoint(iKnownAccessPointId);
+
+// helper function to create basic query structure
+//   for example, specification of the record to monitor the change
+iQueryBundle-&gt;AddMatchConditionL(apinfo);
+
+// specify the set of records to be monitored for change, for example,
+//  the situation in which we want to be notified
+TAccessPointStatusFilter availFilter;
+
+// a) notify on all changes to this field
+availFilter.Available(EAccessPointFlagMatchTrue);
+
+// b) don’t notify on changes to these fields
+availFilter.Configured(EAccessPointFlagIgnore);
+availFilter.Restricted(EAccessPointFlagIgnore);
+availFilter.Started(EAccessPointFlagIgnore);
+
+iQueryBundle-&gt;AddMatchConditionL(availFilter);
+
+// helper function to specify what we want to get for each Access Point
+iQueryBundle-&gt;AddParameterSetToReturnL(XAccessPointGenericParameterSet::TypeId());
+
+// start the notifications with this object as the handler
+iConnServ.AccessPointNotification(*iQueryBundle,*this);
+
+    </codeblock> <p>Notification handlers are defined in the <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>RConnectionServ</apiname></xref> object.
+If all the notification handlers are set up and ready, you must call <codeph>AccessPointNotification()</codeph> with
+an empty bundle. This enables you not to miss any future events. You can now
+make a status query of the Access Point in which you are interested. At this
+point in time, you can delete the passed-in query bundle and later delete
+the bundle that contains changed Access Points. You can delete these whenever
+an Access Point enters or leaves the set of Access Points defined by the query
+parameters, or some other custom circumstances that are defined in a technology
+specific way in a particular <xref href="GUID-4AC100CB-D15E-35B0-9A68-FC2B49B747EA.dita"><apiname>XAccessPointGenericParameterSet</apiname></xref> derived
+class. </p> <p>The code example continues as follows: </p> <codeblock id="GUID-5FE31600-F7D0-5BCC-9EE4-6BBA7988BA9D" xml:space="preserve">
+/*virtual*/
+void CMyClass::AccessPointNotification(
+CConnectionServParameterBundle* aNotification)
+  {
+  // process results.
+  //  only expecting 1 Access Point record back as only 1 Access Point was in the query
+  CConnectionServParameterSetContainer* parSetCtr
+               = aNotification-&gt;GetParamSetContainer(0);
+  ASSERT(parSetCtr); // very bad if nothing in bundle
+
+  XAccessPointGenericParameterSet* genParamSet =
+    XAccessPointGenericParameterSet::FindInParamSetContainer(parSetCtr);
+  ASSERT(genParamSet); // we asked for this set back so fatal if
+                // it’s not present in notification
+
+  TUint apId = genParamSet-&gt;AccessPointInfo().AccessPoint();
+  ASSERT(apId == iKnownAccessPointId);
+
+  TAccessPointStatus availStatus = genParamSet-&gt;AccessPointStatus();
+
+  if(availStatus.Availability() == ETrue)
+    {
+    ChangeIconToAvailable(); // your handler function
+    }
+  else if(availStatus.Availability() == EFalse)
+    {
+    ChangeIconToUnavailable();// your handler function
+    }
+
+  if(YouWantToStoreThisNotificationForLater())
+    {
+    iStoredNotifications.Append(aNotification);
+    }
+  else
+    {
+    delete aNotification;
+    }
+
+  if(BoredReceivingNotifications())
+    {
+    iConnServ-&gt;CancelAccessPointNotification();
+    }
+  }
+//Later, in the destructor of this class the bundles must be deleted
+delete iQueryBundle;
+delete iStatusBundle;</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AE3BE603-21ED-5DEA-B1E9-0F1ADBED06D0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AE3BE603-21ED-5DEA-B1E9-0F1ADBED06D0"><title>Build-time variants</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>It is a common requirement to be able to build more than one variant of a program from a single set of source code. For example, you might have evaluation and full variants of a program that are identical in most respects, but which differ in a few features; or might want to build a program for more than one platform, with some features being present on platform but not on the other. </p> <p>A traditional way to handle this requirement is to use the pre-preprocessor to conditionally include sections of code depending on whether a macro is set or not. For example: </p> <codeblock id="GUID-28BD78C2-15CB-52F8-8725-E9A7692AA8DF" xml:space="preserve">#ifdef MY_FLAG
+    // code that is compiled if MY_FLAG exists
+#else
+ // code that is compiled if MY_FLAG doesn't exists
+#endif</codeblock> <p>Note that this is not always the best approach, as it can make code difficult to read and maintain. Alternative approaches to consider can include: </p> <ul><li id="GUID-2556ADBE-D6F5-53A2-A00D-8ACE7C26ACC5"><p>run-time detection: e.g. unless a file with a registration key is present, restrict the available options to those for the evaluation version </p> </li> <li id="GUID-B632DA8E-2AAF-548B-B527-EF31B5A1C9CC"><p>plug-in architectures: e.g. if you want to write a program that runs on platforms that may or may not have Bluetooth, then isolate all Bluetooth code in a plug-in that can be dynamically loaded at run-time if appropriate </p> </li> </ul> <p>However, if conditional compilation is needed, you can configure the build tools to read a file that defines the macros to use. To do this: </p> <ul><li id="GUID-EBDB484D-4C1C-5384-BB3D-BEB781DB0983"><p>create a file that defines the macros as <filepath>#define</filepath> statements. By Symbian platform convention, such files should have an <filepath>.hrh</filepath> extension. The file can be anywhere on the same drive as the <filepath>epoc32\</filepath> directory. </p> </li> <li id="GUID-5AD4F8EC-0BF1-56E3-8EAB-46C0DF929789"><p>create a sub-directory of <filepath>epoc32\tools\</filepath> called <filepath>variant\</filepath>, and create in it a text file called <filepath>variant.cfg</filepath>. The file must specify the full path to the <filepath>.hrh</filepath> macro file. Perl-type comments (marked with #) are also allowed. </p> </li> </ul> <p>When you use <filepath>bldmake</filepath> or <filepath>abld</filepath> on the command line, the build tools look for the <filepath>variant.cfg</filepath> file, and set any macros defined in the specified file. By adding/removing/changing the <filepath>variant.cfg</filepath> file in your build environment, you can alter which macros are set, and so how your project is built. </p> <p>For IDE builds, the macros are set when the IDE project file is created, and not changed unless you recreate the IDE project file. </p> <p>Note that you can use the macros in bld.inf and .mmp files as well as in C++ files: this allows you to conditionally specify projects, source files, etc. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AE5432AE-C699-4403-BCFC-474515C9BEC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-AE5432AE-C699-4403-BCFC-474515C9BEC8" xml:lang="en"><title>Retrieving
+the vibra status</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>VibraStatus()</codeph> method retrieves the
+current vibra status. The following code snippet demonstrates how to retrieve
+the vibra status:</p><codeblock xml:space="preserve">CHWRMVibra::TVibraStatus vibraStatus = iVibra-&gt;VibraStatus();</codeblock></context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19-master.png has changed
Binary file Symbian3/SDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e403017_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4" xml:lang="en"><title>Touch
+UI</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When designing a Symbian application, the UI must be designed so that everything
+can be done with touch. Therefore, the design must not rely on hardware keys
+(except for turning the power on and off).  </p>
+<p>The touch UI in the Symbian OS involves a number of specific touch components,
+component and UI behavior changes, layout changes and additions to the <xref href="GUID-0D093C3D-4D85-455E-B685-064A9B25B1FE.dita">user experience</xref>. The
+main differences or additions include the following:</p>
+<ul>
+<li><p>Resistive touch screen (HW) </p></li>
+<li><p>Capacitive touch screen (HW)</p></li>
+<li><p>Toolbar in touch UI (component) </p><p>For
+more information, see <xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita">Toolbar</xref>.</p></li>
+<li><p>Touch input (virtual keyboard, hand-writing recognition and virtual
+ITU-T) (components) </p><p>For more information,
+see <xref href="GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita">Text input</xref>.</p></li>
+<li><p>Stylus pop-up menu (component) </p><p>For
+more information, see <xref href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita">Stylus
+pop-up menu</xref>.</p></li>
+<li><p>On-screen dialer (an application) </p></li>
+<li><p>Additional touch functionality to some components (for example, Preview
+pop-up) </p><p>For more information,
+see <xref href="GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita">Preview
+pop-up</xref>.</p></li>
+<li><p>Touch-enabled common components</p><p>For
+more information, see <xref href="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita">Touch
+support for common UI components</xref>.</p></li>
+</ul>
+<p>There are two generic layouts for touch UI: portrait orientation and landscape
+orientation, see the figure below. The <xref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita">Status
+pane</xref> in Touch UI has three variants: extended, flat and small.</p>
+<fig id="GUID-81426DEE-7FBB-48C1-AB46-BCFF3944699C">
+<title>Default Symbian Touch UI layouts for portrait and landscape</title>
+<image href="GUID-6285AC85-C16B-4EAF-87EB-2080B24D943F_d0e45965_href.png" scale="45" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066-master.png has changed
Binary file Symbian3/SDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e143159_href.png has changed
Binary file Symbian3/SDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e263269_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5" xml:lang="en"><title>Certificate
+and Key Management Overview</title><abstract><p>The Certificate and Key Management component provides authentication
+services for <xref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita">Public
+Key Cryptography</xref>.</p></abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The main purpose of the Certificate and
+Key Management component is to provide validation services according to the
+Public Key Infrastructure (PKI) for <xref href="GUID-C676C4E6-93AF-59E9-886D-74D59F154490.dita">X.509</xref> Certificates. </p> <p>The
+Certificate and Key Management component provides interfaces for the following: </p> <ul>
+<li id="GUID-A3109F52-09A5-5ACD-9844-883EB9E6E37B"><p>Storage and retrieval
+of certificates </p> </li>
+<li id="GUID-27F48C66-606E-594D-A1E0-8E1B7C048C6B"><p>Assignment of trust
+status to a certificate on an application-by-application basis </p> </li>
+<li id="GUID-CF4BAB94-8FC1-5375-BDA6-1DA46DF3F68B"><p>Certificate chain construction
+and validation </p> </li>
+<li id="GUID-C44175FE-15D6-5145-8F73-CAC7F10A506A"><p>Verification of trust
+of a certificate </p> </li>
+<li id="GUID-EFDD6039-5F57-5F41-B90C-2776B247F659"><p>Generation of asymmetric
+key pairs </p> </li>
+<li id="GUID-AB119A48-43E3-5C5F-80B6-F1A92E9B6531"><p>Protected storage of
+keys </p> </li>
+<li id="GUID-14E232E1-73F1-58EE-A435-53B3D46680D4"><p>Key import and export </p> </li>
+<li id="GUID-21FCB8AB-8399-50E3-847A-53DF092BBA25"><p>Authenticated execution
+of private key operations </p> </li>
+</ul> </section>
+<section><title>Required background</title> <p>To understand Certificate and
+Key Management in detail, you need to have a basic understanding of the following: </p> <ul>
+<li id="GUID-1A307F21-3BBF-525D-98B1-3AC2035786EC"><p><xref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita">Public
+Key Cryptography</xref>  </p> </li>
+<li id="GUID-0EA3DF92-DFE8-5265-97F6-862D5198E9FF"><p><xref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita">Certificates</xref>  </p> </li>
+<li id="GUID-0D2E1131-4C60-56CB-BCDD-432AC5F660F1"><p><xref href="GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446.dita">Digital
+Signatures</xref>  </p> </li>
+</ul> </section>
+<section><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>Certificate</dt>
+<dd><p>A certificate is an electronic document that binds an identity to a
+particular public or private key pair. It is commonly used to authenticate
+cryptographic public keys. </p> <p>Certificates are issued by a Certification
+Authority (CA). They usually include information such as a label, serial number,
+validity period, certificate format (for example, X.509) and algorithm type
+(for example, MD2RSA). </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Key</dt>
+<dd><p>A cryptography key is a constant value applied using a cryptographic
+algorithm to encrypt text or to decrypt encrypted text. </p> <p>Keys are classified
+as symmetric and asymmetric based on the type of algorithm applied. If the
+same key is used for both encryption and decryption, it is symmetric. If different
+keys are used for encryption and decryption, they are asymmetric. Asymmetric
+keys exist in the form of a public and private key pair, where the public
+key is used for encryption and the private key is used for decryption. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Certificate Store</dt>
+<dd><p>A certificate store is a database or a file that stores and manipulates
+certificates. </p> <p>The certificate store provides the following functionality: </p> <ul>
+<li id="GUID-4FABC2C2-8133-5398-9747-0A247344A52C"><p>Generation, storage
+and retrieval certificates </p> </li>
+<li id="GUID-F527AAE6-DCDE-5ECC-AB89-1299DC0800A4"><p>Assignment of trust
+status to certificates </p> </li>
+<li id="GUID-BA60380A-BAC7-59D4-BD7E-5C28ED24921A"><p>Retrieval of list of
+applications trusting a certificate </p> </li>
+</ul> </dd>
+</dlentry>
+<dlentry>
+<dt>Key Store</dt>
+<dd><p>A key store is a repository of keys that can be retrieved and used
+to accomplish a variety of tasks. </p> <p>The key store provides the following
+functionality: </p> <ul>
+<li id="GUID-F5BC1B3C-B400-5392-A68C-ACDB84ABACFC"><p>Generation, import and
+export of RSA, DSA, and DH key pairs </p> </li>
+<li id="GUID-4A5C1491-C922-5C00-94D6-0E9E05310102"><p>Listing of stored keys </p> </li>
+<li id="GUID-1F7B3427-3EB7-5411-A30C-0BB749C1EE73"><p>Authentication of users </p> </li>
+<li id="GUID-2DB4F4DF-BB77-5B7F-A724-BBAE21D5B4F4"><p>Private key operations
+for authenticated users </p> </li>
+</ul> </dd>
+</dlentry>
+<dlentry>
+<dt>Token</dt>
+<dd><p>A token is a physical instantiation of an object, such as a certificate
+or a key, stored in a phone. Each token belongs to a group of tokens called
+a token type. For example, an X.509 certificate is a token which belongs to
+the X.509 token type. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>The following diagram shows the basic
+architecture of the Certificate and Key Management component. The blocks in
+blue are internal to the component. </p> <fig id="GUID-4532D14E-A9FE-595C-8B75-4FA2AE57B8EA">
+<image href="GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e362837_href.jpg" placement="inline"/>
+</fig> <p>The various blocks in the basic architecture diagram of the Certificate
+and Key Management component are explained as follows: </p> <ul>
+<li id="GUID-0FCBBCA0-CD31-51AB-84D1-93994EAC54E2"><p> <b>Client Application</b>:
+This is a typical application that accesses the certificates or the keys of
+the device through Certificate and Key Management component. </p> <p>For example,
+a web browser that wishes to load a bank's web page to perform a money-transfer
+operation (in a secured mode using an <codeph>https</codeph> connection) first
+checks the device's certificate store for a certificate that trusts the bank's
+server and then loads the particular page. </p> </li>
+<li id="GUID-B649A55C-7446-56D8-85FB-98AB4879B8CE"><p> <b>Unified Stores</b>:
+The <xref href="GUID-39B459CD-8210-59B5-95F4-85CE36676735.dita">Unified Stores</xref> APIs
+form the primary access point for client applications to use certificates
+or keys stored in the device. The <xref href="GUID-0010EB39-8C23-5453-BE96-4EFC520B6F81.dita">Unified
+Certificate Store</xref> provides a unified view of all the certificates in
+the device while the <xref href="GUID-695FCEB8-EA04-5C1C-A197-648275BA0281.dita">Unified
+Key Store</xref> provides a similar view of all the keys in the device. </p> </li>
+<li id="GUID-0A28DE19-3E16-5094-9964-32BE1BF50107"><p> <b>Generic Certificate
+and Key Stores</b>: These are the various certificate and key stores in the
+device. </p> </li>
+<li id="GUID-197709E0-7811-55F1-9EA9-7D80389B3D0A"><p> <b>File-Based Store
+Implementation</b>: The certificate and key stores use Symbian's <xref href="GUID-C7150120-74C2-5FF1-99F0-0A267393E342.dita">file-based
+store implementation</xref>. Based on the operations to be performed on the
+keys and certificates, the file-based implementation updates the physical
+certificate and key store files. </p> </li>
+</ul> </section>
+<section><title>APIs</title> <p>The following table lists the key APIs of
+the Certificate and Key Management component. The table lists APIs that perform
+the following tasks: </p> <ul>
+<li id="GUID-F6DF549D-F1B7-5662-AC36-50453FB56E02"><p>Provide implementation
+for certificate and key stores, and for manipulating various types of certificates. </p> </li>
+<li id="GUID-47864D9B-97A7-596F-9638-978E236212DE"><p>Perform different types
+of ASN.1 (Abstract Syntax Notation One) encoding. </p> </li>
+</ul> <table id="GUID-C78DF93D-7684-52FB-BA00-3A060789E26B">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>Unified Store APIs</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita"><apiname>CUnifiedCertStore</apiname></xref>  </p> </entry>
+<entry><p>Provides a common implementation for all certificate stores in the
+device. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita"><apiname>CUnifiedKeyStore</apiname></xref>  </p> </entry>
+<entry><p>Provides a common implementation for all key stores in the device. </p> </entry>
+</row>
+<row>
+<entry><p> <b>Certificate APIs</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4C645733-8F0C-3AC8-A19E-0AB005F4CE7F.dita"><apiname>CX500DistinguishedName</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for parsing and matching the <xref href="GUID-C93D021E-D99A-5839-AB54-3D8D7620214A.dita">X.500</xref> distinguished
+names. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-21954042-44FA-3376-A4C1-D7DE560144C8.dita"><apiname>CX520AttributeTypeAndValue</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for parsing and matching attribute types
+and values, as defined by the X.520 standard. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1309FCDC-229B-36C7-85A9-4540ABC869F9.dita"><apiname>CX509GeneralName</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for manipulation of X.509 certificates. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A919BE84-8257-3911-9AD1-B1DB736346CE.dita"><apiname>CX509CertChain</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for X.509 certificate chain validation. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A9B59AEF-C278-3E20-A57B-15293F833A71.dita"><apiname>CX509RSAPublicKey</apiname></xref>  </p> </entry>
+<entry><p>Provides APIs for encoding and decoding of RSA public keys. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9AD19EB1-44D4-339A-A30A-2B43817DB2CB.dita"><apiname>CX509ExtensionBase</apiname></xref>  </p> </entry>
+<entry><p>Provides APIs for manipulating various X.509 certificate extensions. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3E94241B-3B37-3C64-8CFF-7795063160AF.dita"><apiname>CWTLSCertificate</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for construction and manipulation of <xref href="GUID-A636C1B3-8AB2-52D7-BB19-4CC93F4BDD97.dita">WTLS</xref> (Wireless Transport
+Layer Security) certificates. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-04C4024C-2987-37F9-8D85-ACCB3D4C1293.dita"><apiname>CWTLSName</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for manipulation of WTLS names. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A8600958-D424-366C-A56D-68A77949EA28.dita"><apiname>CWTLSRSAPublicKey</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for manipulation of RSA public keys associated
+with WTLS certificates. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-56E949D5-EA4F-361C-8523-2965A336B009.dita"><apiname>CWTLSCertChain</apiname></xref>  </p> </entry>
+<entry><p>Provides implementation for validation of WTLS certificate chains. </p> </entry>
+</row>
+<row>
+<entry><p> <b>ASN.1 Encoding APIs</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1EBCC3C4-3E57-3424-BB41-E74E8120197E.dita"><apiname>CASN1EncBigInt</apiname></xref>  </p> </entry>
+<entry><p>Encodes Big Integer objects. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6B9883C8-9382-3941-A949-3D8E2B7C7EA5.dita"><apiname>CASN1EncBitString</apiname></xref>  </p> </entry>
+<entry><p>Encodes bit strings (for example, keys). </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-DE64C76D-D70B-36DC-826C-1662CFBD26D4.dita"><apiname>CASN1EncBoolean</apiname></xref>  </p> </entry>
+<entry><p>Encodes Boolean values. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1E9BA30C-729E-3C49-8DB4-5D693EF2C84E.dita"><apiname>CASN1EncEncoding</apiname></xref>  </p> </entry>
+<entry><p>Encapsulates already encoded information. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-964E6C04-4AE0-3085-AF0A-6580264AEF36.dita"><apiname>CASN1EncExplicitTag</apiname></xref>  </p> </entry>
+<entry><p>Wraps other encoding objects and provides them with an explicit
+tag. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-523EA13D-42F1-31DE-95F2-91AC56C58B62.dita"><apiname>CASN1EncGeneralizedTime</apiname></xref>  </p> </entry>
+<entry><p>Encodes time-related objects. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B4839A2D-E3C1-3405-8776-38A3F5D47FD3.dita"><apiname>CASN1EncInt</apiname></xref>  </p> </entry>
+<entry><p>Encodes <codeph>TInt</codeph> objects. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1ED494A4-503F-3651-946E-E99771348EF6.dita"><apiname>CASN1EncNull</apiname></xref>  </p> </entry>
+<entry><p>Encodes NULL values. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-45B0317A-CBB5-369E-877B-C166F9BAE3DF.dita"><apiname>CASN1EncObjectIdentifier</apiname></xref>  </p> </entry>
+<entry><p>Encodes object identifiers. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4170E6D8-A1A5-3E84-B12D-D737CEC0A698.dita"><apiname>CASN1EncOctetString</apiname></xref>  </p> </entry>
+<entry><p>Encodes octet strings. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-1B53FA4B-3D36-38AF-97CE-6BA64E9520F3.dita"><apiname>CASN1EncPrimitive</apiname></xref>  </p> </entry>
+<entry><p>All ASN.1 primitive type encoding classes derive from this class. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-22AC4FE1-1EB4-341C-9CF8-F153F0346858.dita"><apiname>CASN1EncPrintableString</apiname></xref>  </p> </entry>
+<entry><p>Encodes printable strings. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A0846E03-BC80-3549-B59D-A0F2230E9AC9.dita"><apiname>CASN1EncSequence</apiname></xref>  </p> </entry>
+<entry><p>Encodes the <xref href="http://www.asn1.org/books/Explain.html" scope="external">SEQUENCE</xref> and <xref href="http://www.asn1.org/books/Explain.html" scope="external">SEQUENCE-OF</xref> data types. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-98D3BDD5-8136-3C66-8381-73E0A8EE910E.dita"><apiname>CASN1EncSet</apiname></xref>  </p> </entry>
+<entry><p>Encodes the <xref href="http://www.asn1.org/books/Explain.html" scope="external">SET</xref> and <xref href="http://www.asn1.org/books/Explain.html" scope="external">SET-OF</xref> data types. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The Certificate and Key Management
+component performs the following tasks: </p> <ul>
+<li id="GUID-1C7ED95B-442D-5D05-8E20-95B0F3E17438"><p>Validating certificates
+in PKIX </p> </li>
+<li id="GUID-8D85F504-F3AB-545E-8FF1-3F6FCEC0D5E8"><p>Adding certificates </p> </li>
+<li id="GUID-AC9BF0B0-1A1B-5995-A443-F4E21123CE56"><p>Finding certificates </p> </li>
+<li id="GUID-24C041AA-A7BF-5887-B993-E1EA5BA35B66"><p>Managing applicability
+and trust settings </p> </li>
+<li id="GUID-1FC9F3D9-69C5-56E1-99F6-31B36644B42D"><p>Removing certificates </p> </li>
+<li id="GUID-2923D772-0455-5B9A-BD9E-0CC20678A729"><p>Retrieving certificates </p> </li>
+<li id="GUID-B1BEDD53-5309-529F-B29A-C42D62ABCC3E"><p>Creating keys </p> </li>
+<li id="GUID-46E25298-08E8-560B-9084-5BD38154FA32"><p>Importing keys </p> </li>
+<li id="GUID-6FFE5197-8FA0-5760-A068-544CBAB21798"><p>Exporting keys </p> </li>
+<li id="GUID-6B1E12DA-6B0C-58F5-8A31-3BF5D2A9D464"><p>Retrieving keys </p> </li>
+<li id="GUID-F13A93BD-B5F5-5FD8-A035-817EFD6A2CF6"><p>Deleting keys </p> </li>
+<li id="GUID-3BC3D476-6DE9-5DF2-AC9E-7952C87C38DE"><p>Signing keys </p> </li>
+<li id="GUID-B9D742CE-C2DE-5930-B3E6-4837B7AC1579"><p>Retrieving key stores </p> </li>
+<li id="GUID-0B2B267D-F907-5E0D-BE31-DDB4D06F51D8"><p>Setting and retrieving
+authentication policies </p> </li>
+<li id="GUID-ED651B05-554A-5B02-BDAF-B61282F7DB4D"><p>Setting use and management
+policies </p> </li>
+</ul> <p>See <xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita">Unified
+Certificate Store Tutorial</xref> and <xref href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita">Unified
+Keystore Tutorials</xref> for details of these tasks. </p> </section>
+</conbody><related-links>
+<link href="GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA.dita"><linktext>OS Security
+Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e7734_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7" xml:lang="en"><title>NAME
+statement</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;name-statement&gt;
+name-statement ::= 
+NAME &lt;short-name&gt;</codeblock>
+<p>Use this statement to ensure that the resources in the file have a unique
+ID so that an application can use multiple resource files without resource
+ID conflict.</p>
+<p>This statement must be the first non-comment statement in the file.</p>
+<p>The <varname>short-name</varname> must be between one and four alphabetic
+characters long and be unique (no other file may use the same one). For the
+sake of consistency this constant should be in upper case although lower case
+is allowed (and will be converted to upper case by the compiler). This <varname>short-name</varname> is
+then converted into a number and shifted onto the leading 20 bits of the resource
+ID, leaving the bottom 12 bits for the number of the resource in the file.
+This allows a maximum of 4095 resources to be defined in a source file.</p>
+<p>Since the <codeph>NAME</codeph> statement maps all resource IDs within
+the file onto 32-bit numbers, only <codeph>LLINK</codeph> s may be used for
+resource references in that file. Using the <codeph>NAME</codeph> statement
+in a resource file means that any attempt to use a <codeph>LINK</codeph> will
+generate an error.</p>
+<example><p>With <codeph>NAME</codeph> set to <codeph>AAAA</codeph>,
+if this resource is the first resource in the file</p><codeblock id="GUID-42436ADC-996A-5D24-BC6B-8072DF8F271F" xml:space="preserve">RESOURCE STRING one
+ {
+ wd=5;
+ }</codeblock><p>the first entry in the generated header file will be</p><codeblock id="GUID-707F02E8-CD7D-54BB-B11D-FB3B46876DF5" xml:space="preserve">#define ONE 0x04FD8001</codeblock><p>04FD8
+is the leading 20 bits for all IDs in the file and 001 is the reference of
+that resource within the file.</p></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AED57265-6106-4217-ADE6-1327CA3FDE7E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AED57265-6106-4217-ADE6-1327CA3FDE7E" xml:lang="en"><title>PKG
+file format to support simple installation</title><abstract><p>The simplest installation file supports a single language version
+only and requires no special capabilities. It installs a fixed list of files
+to the Symbian device and is self-signed. The PKG file must contain the following
+elements: </p> <ul>
+<li id="GUID-9B77CB46-60E1-56CE-8232-BD279E17335F"><p><xref href="GUID-0BE71FC3-4759-50FC-A74F-C3DD42C9FCED.dita">Languages</xref>  </p> </li>
+<li id="GUID-D049FACA-2B95-5705-893F-A4E048112815"><p><xref href="GUID-7664A4D4-C24B-5225-9E0B-7A021DA6A3AF.dita">Vendor
+Names</xref>  </p> </li>
+<li id="GUID-294AFEF8-DD71-5EB0-930B-DC120BDB9879"><p><xref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita">Package-Header</xref>  </p> </li>
+<li id="GUID-28A5B022-61FF-59A2-B003-4F67E8A5D6E7"><p><xref href="GUID-FF39192E-9C93-593F-8F47-DB18DB876F6F.dita">Installation
+Files</xref>  </p> </li>
+</ul> </abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Example</title><p>The following PKG file is provided in <filepath>examples\HelloWorld\</filepath>.
+The associated files are built from the source code located in the same directory.
+See <xref href="GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita">here</xref> for
+information. </p> <codeblock id="GUID-2541A514-BAA9-54E6-8927-2F0044F28D5B" xml:space="preserve">; List of languages supported
+&amp;EN
+
+; List of localised vendor names
+%{"Nokia Corporation"}
+; Single, non-localised (global) vendor name
+:"Nokia Corporation"
+
+; Package header format: Package Name, UID, Major version, Minor Version, Build Number
+#{"Minimal application"},(0xE8000091),1,0,0
+
+; Files to install for the minimal application: "Files located on PC" - "Target location on Symbian device"
+"HelloWorld.exe"-"!:\sys\bin\HelloWorld.exe"
+"HelloWorld.rsc"-"!:\resource\apps\HelloWorld.rsc"
+"HelloWorld.mbm" - "!:\resource\apps\HelloWorld.mbm"
+"HelloWorld_reg.rsc" - "!:\private\10003a3f\import\apps\HelloWorld_reg.rsc"</codeblock> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-44A14482-9E1F-58FE-B09E-90E57A88CB55"><p>The package UID is used
+to uniquely identify the package. It can be requested in the same way as an
+application's third UID, through https://www.symbiansigned.com or for convenience
+it can use the same value as the application's third UID </p> </li>
+<li id="GUID-A04BA1AD-6933-5F4B-A405-6F0D8E9862FB"><p>By default, the contents
+of SIS files are compressed. This can be prevented by using the <codeph>NOCOMPRESS</codeph> option
+in the PKG header. Specifying <codeph>NOCOMPRESS</codeph> is not recommended
+unless you are installing files that are already compressed, for example JPEGs. </p> </li>
+<li id="GUID-9CA46545-2DDD-5257-B9D0-A14097DAC422"><p>The package major and
+minor version numbers are required for version control. </p> </li>
+<li id="GUID-993965FB-D45C-5891-8535-8154E584F554"><p>The build number must
+be incremented whenever the component is rebuilt. </p> </li>
+<li id="GUID-5728DA6F-AF8C-557F-91BF-301C8C0E937C"><p>The <codeph>!</codeph> character
+must be used as the target drive letter to allow the Symbian device user select
+the target drive during installation. To prevent the Symbian device user from
+being able to select the target drive, <codeph>$</codeph> can be used, to
+denote the system drive. </p> </li>
+<li id="GUID-B5916D13-9177-5205-A027-005F1EE8B2E5"><p>If folders in the target
+installation path do not exist, they are automatically created by the installer. </p> </li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AF07AD54-86F1-5DB7-80FF-633A559DA4BD" xml:lang="en"><title>Creating
+Processes and Threads </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-6E0A2832-98BA-54AF-B7A7-28DFFD5FEC76"><title>Introduction</title> <p>Process
+creation on Unix-like machines is normally done in two stages. Firstly, <codeph>fork()</codeph> is
+called. This creates a child process, which is a clone of the calling (parent)
+process. The child process is identical (except for a few details) to the
+parent. Secondly, a call to one of the <codeph>exec()</codeph> family functions
+is invoked by the child which changes the program being executed by that process.
+For more information about <codeph>fork()</codeph> or <codeph>exec()</codeph>,
+see <xref href="http://www.opengroup.org" scope="external">Open Group</xref>. </p> <p>P.I.P.S.
+does not support <codeph>fork()</codeph> and <codeph>exec()</codeph> and the
+reasons for the same are described in the following sections. However, there
+are industry standard alternatives supported by P.I.P.S. and are detailed
+in the following sections: </p> <ul>
+<li><p><xref href="GUID-ADB9AD91-37A2-4FE6-B378-C43CD0A7B513.dita">Alternatives
+to <codeph>fork()</codeph> and <codeph>exec()</codeph> for creating child
+processes</xref></p></li>
+<li><p><xref href="GUID-545DA961-217E-49CA-A90E-7A41E2C03A99.dita">Forking without <codeph>exec()</codeph></xref></p></li>
+<li><p><xref href="GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563.dita"><codeph>exec()</codeph> without
+forking using <apiname>posix_spawn()</apiname></xref></p></li>
+</ul> <p><b>Omission of fork()</b> </p> <p>A Unix-like kernel
+is designed with the two stage process creation in mind. On Symbian platform
+(and Microsoft Windows®) the kernel was designed to create a process, which
+runs a single executable, in a single step. </p> <p>P.I.P.S. does not implement
+the <codeph>fork()</codeph> operation because this would require an entirely
+new way of dealing with processes in the kernel and memory model. For example,
+duplicating the address space of an existing process was not something that
+was considered in the Symbian platform kernel's design. Symbian took this
+decision as the effort involved in customising this feature would be more
+than the benefit of providing the <codeph>fork()</codeph> function, especially
+in the provision of Pthreads. For more information about Pthreads, see the <xref href="http://en.wikipedia.org/wiki/POSIX_Threads" scope="external">Pthread
+Wikipage</xref>. </p> <p><b>Omission of exec()</b> </p> <p>On Unix-like systems, <codeph>exec()</codeph> is
+the standard way to load a process image into memory. Only the initialisation
+process is loaded directly into a new address space (special case code in
+the kernel), all other processes are loaded into an existing address space
+which was initially created by forking. </p> <p>On Symbian platform, the only
+way to load a process image into memory is using the loader. It assumes that
+the image is being loaded as a new process - one that owns no resources, has
+no open handles and so on. The change to the loader and any associated kernel
+changes, to support the <codeph>exec()</codeph> function were deemed to be
+too risky. </p> <p><b>Generic IPC</b> </p> <p>P.I.P.S. supports two types
+of Inter-Process Communication (IPC) between processes or threads: </p> <ul>
+<li><p> <b>Pipes (named and unnamed):</b> Unnamed pipes are created using <xref href="GUID-EC7F85FF-FD4E-324C-8D01-EF6F7E7A79FE.dita"><apiname>pipe()</apiname></xref> and
+named pipes are created using <xref href="GUID-F4749DAA-1B29-3D1D-A3AA-0D52B851E501.dita"><apiname>mkfifo()</apiname></xref>. Pipe-based communication
+is also possible between a parent and a child process when the child is created
+using <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> or <xref href="GUID-A1E2E172-C4E4-30FB-99CF-E4140E31DF59.dita"><apiname>popen3()</apiname></xref>. </p></li>
+<li><p> <b>Local file sockets:</b> These correspond to sockets created with <codeph>AF_LOCAL/PF_LOCAL/AF_UNIX</codeph> as
+the address family. The semantics of their use are similar to those of their
+Unix equivalents. </p></li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-6590B534-D976-5305-BE95-48DD05120DFB.dita#GUID-6590B534-D976-5305-BE95-48DD05120DFB/GUID-3CA8FF29-79B4-5D43-8A23-EDB136BF7A8F">
+<linktext>One Definition Rule - warning</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF26E3D3-D0CD-4715-B9F6-FBB1BCF2DDE2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-AF26E3D3-D0CD-4715-B9F6-FBB1BCF2DDE2" xml:lang="en"><title>PKG file
+format to Display Licence Information</title><abstract><p>Package files can be used to display text information during
+installation or removal. This feature can be used to display a license agreement
+during installation. </p> <p>To display a licence information, the PKG file
+must include a line as shown in the following example: </p> <codeblock id="GUID-955278E3-048B-514F-A468-D8EF63B4AE3D" xml:space="preserve">"HelloWorld.txt"-"", FT, TA</codeblock> <p>No destination is specified, because the file is not installed. <codeph>FT</codeph> means
+that the file contains text to be displayed during installation and <codeph>TA</codeph> (text
+abort) specifies that the license agreement dialog contains an option to abort
+the installation. If <codeph>TA</codeph> is not specified, the default is
+a dialog with a Continue button. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody/></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF28D930-6BD1-5DC5-9BE5-7512241E90CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AF28D930-6BD1-5DC5-9BE5-7512241E90CD" xml:lang="en"><title>XML Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The XML Framework provides features for parsing XML and WBXML (WAP Binary XML), and options for validating and auto-correcting using a single interface. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46" xml:lang="en"><title>Possible
+Problems</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes the possible problems that you may encounter when
+you develop applications or libraries on Symbian platform based on Standard
+C++. These problems can occur in the following scenarios: </p>
+<ul>
+<li id="GUID-A3F0DCD7-CA38-5405-B01D-1E3B3F75B67D"><p><xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-39350E32-26C2-5440-B221-10EE693CCF18">Use of operator new</xref>  </p> </li>
+<li id="GUID-9B185254-36B9-58F7-888D-8198EAD77769"><p><xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-A85386B3-3E37-5303-8FBF-211551D5CB71">Use of one definition rule</xref>  </p> </li>
+<li id="GUID-01A440D6-7E35-5F4E-8E1E-F5877F3967F2"><p><xref href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita#GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46/GUID-6CE49D59-46BB-5145-B346-6FD3EA8BC011"> Standard C++ calling Symbian C++ functions </xref>  </p> </li>
+</ul>
+<section id="GUID-39350E32-26C2-5440-B221-10EE693CCF18"><title> Use of operator
+new()</title> <p>The function signatures of the global <codeph>operator new</codeph> on
+Symbian C++ and Standard C++ differ only in the exception specification. As
+per Standard C++, global <codeph>operator new</codeph> has the following signature: </p> <codeblock id="GUID-4369105F-C969-54E1-BBE5-C14ECA239F83" xml:space="preserve">void* operator new(std::size_t size) throw(std::bad_alloc);</codeblock> <p>While
+in Symbian C++, it is: </p> <codeblock id="GUID-9FCCB90D-3E2D-505B-8FC9-6E0FACAC09F3" xml:space="preserve">void* operator new(unsigned int aSize) throw();</codeblock> <p>Since the compiler name-mangles references to both these symbols as the same,
+it is possible (for the linker) to resolve a reference to one with the definition
+to the other. If such a combination is not identified at build time, the memory
+allocation may fail in the following cases: </p> <ol id="GUID-C6D4BDDD-B981-519C-9F2C-35DA294A23D9">
+<li id="GUID-FFD5DB62-462F-5A4A-BC51-DBE213B9BD0F"><p>If a reference to Symbian
+C++ <codeph>operator new</codeph> is resolved against the definition of Standard
+C++ <codeph>operator new</codeph>, then it throws an exception which may leave
+the <codeph>CleanupStack</codeph> in an unstable state. </p> </li>
+<li id="GUID-19A3119A-E882-5C17-9674-9B45D6307FFE"><p>If a reference to Standard
+C++ <codeph>operator new</codeph> is resolved against the definition of Symbian
+C++ <codeph>operator new</codeph>, then the <codeph>operator new</codeph> returns <b>NULL</b> (while
+an exception was expected). Since the return is not checked by the compiler,
+it may cause a bus error. </p> </li>
+</ol> <p>So, the declarations must be kept separate in the translation unit.
+In this case only one of them can appear in a translation unit. Also, since
+they have the same mangled names, they cannot appear in the same link unit. </p> </section>
+<section id="GUID-A85386B3-3E37-5303-8FBF-211551D5CB71"><title>Use of one
+definition rule</title> <p>As per Standard C++, one definition rule (ODR)
+says that there must be only one definition of a symbol in a program. But
+to be able to maintain a single definition in a program, symbol pre-emption
+must be possible. This functionality is not supported on the DLL model of
+Symbian platform. </p> <p><b>Example</b> </p> <p>The following example illustrates
+the problem with the use of one definition rule: </p> <codeblock id="GUID-FB9FBAAD-8CB8-5EAB-BA25-18A92822CF8E" xml:space="preserve">//MySingleton.h
+template &lt;class T&gt;
+class MySingleton
+    {
+    public:
+    static T&amp; GetInstance()
+        {
+        static T * aT = NULL;
+        if (!aT) aT = new T;
+        return *aT;
+        }
+    };
+class X: public MySingleton&lt;X&gt;
+    {
+    public:
+    X(): iX(0) {};
+    int Prod()
+        {
+        return ++iX;
+        }
+    private:
+    int iX;
+    };</codeblock> <p> <b>Foo.cpp</b>  </p> <codeblock id="GUID-3AFCAE2C-8028-5813-BED1-889AD2909302" xml:space="preserve">#include &lt;MySingleton.h&gt;
+EXPORT_C int Foo()
+    {
+    return X::GetInstance().Prod();
+    }</codeblock> <p> <b>Bar.cpp</b>  </p> <codeblock id="GUID-6C00938A-2CD5-58D8-B937-6EE73C5BF483" xml:space="preserve">#include &lt;MySingleton.h&gt;
+EXPORT_C int Bar()
+    {
+    return X::GetInstance().Prod();
+    }</codeblock> <p>In a scenario where <filepath>Foo.cpp</filepath> is in <filepath>Foo.dll</filepath> and <filepath>Bar.cpp</filepath> is
+in <filepath>Bar.dll.</filepath> To call <codeph>Foo</codeph> and <codeph>Bar</codeph> from
+an application: </p> <codeblock id="GUID-E4A0FA6F-9792-5052-80B5-2372EB53FBFA" xml:space="preserve">int Baz()
+    {
+    return Foo() + Bar();
+    }
+int E32Main()
+    {
+    printf("%d\n", Baz());
+    }</codeblock> <p>This example must have displayed the output as <b>1,
+2</b>. But on Symbian platform, it displays <b>1,1</b>. </p> <p>The problem
+here is Symbian platform's DLL model. In particular Symbian platform does
+not support symbol pre-emption. In Symbian platform <codeph>static T * aT</codeph> gets
+allocated in each DLL in which <codeph>X::GetInstance</codeph> is invoked.
+Here the problem arises because Symbian platform cannot redirect the references
+in distinct DLLs to a single unique location as required by the ODR. </p> </section>
+<section id="GUID-6CE49D59-46BB-5145-B346-6FD3EA8BC011"><title>Standard C++
+calling Symbian C++ functions</title> <p>The following example illustrates
+the nature of one of the problems associated with achieving <i>seamless</i> integration
+of Standard C++ with Symbian C++. Here <i>seamless</i> means: without the
+manual introduction of additional harness or barrier code to effect the integration. </p> <p> <codeph>SymbianCallerLC</codeph> calls
+two different functions: </p> <ul>
+<li id="GUID-CC89E765-AF86-5300-BB76-F84DCF9E3910"><p>one which expects standard
+C++ semantics (<codeph>CppCallee</codeph>), and </p> </li>
+<li id="GUID-2E9D21A4-8FD3-5DC9-A264-7E7FEA05F4A9"><p>another which expects
+Symbian platform semantics (<codeph>GetAK1LC</codeph>). </p> </li>
+</ul> <p> <codeph>SymbianCallerLC</codeph> itself belongs to the Symbian C++
+world since it participates in the LC convention (it imposes a contract on
+its caller with respect to the object that it returns). </p> <codeblock id="GUID-D88FA0A6-1107-570D-B79A-30EA10E4AB0C" xml:space="preserve">K1 * SymbianCallerLC()
+    {
+    K1 * aK1 = GetAK1LC();
+    CppCallee(aK1);
+    return aK1;
+    }</codeblock> <p>The sole point of this function is to demonstrate that <i>stack
+depth</i> cannot be used as an implicit means to synchronize the cleanup stack
+with the control stack. It might be thought that recording <i>stack depth</i> at
+the point at which an object is pushed onto the cleanup stack can be used
+by the runtime to determine if the object should be <i>popped and destroyed</i> during
+a standard C++ <i>throw</i>. Such a belief would be erroneous. For example,
+a stack allocated object of sufficient size (<codeph>aArray</codeph> in this
+case). The <i>stack depth</i> when the object allocated by <codeph>K1::NewLC</codeph> is
+pushed on the cleanup stack is bound to be greater than the <i>stack depth</i> when
+the <codeph>try</codeph> statement is executed in <codeph>CppCallee</codeph>.
+From this example, therefore, that the <i>stack depth</i> at which an object
+was allocated (or rather pushed onto the cleanup stack) gives no indication
+of the ordering of various operations and can therefore not be used to determine
+the inclusion of one extent within another. </p> <codeblock id="GUID-4FD53631-1369-5833-B0C0-1FD4F3C28BFB" xml:space="preserve">K1 * GetAK1LC()
+    {
+    int aArray[100]; 
+    // stack frame for GetAK1LC has space for 100 ints - i.e. sp in this call to K1::NewLC 
+    // will be less than at the 'try' in CppCallee
+    return K1::NewLC(aArray);
+    }</codeblock> <p>In the current context the object returned by <codeph>GetAnotherK1LC</codeph> will
+be pushed on the cleanup stack when stack depth is less than it was in the
+earlier call to <codeph>GetAK1LC</codeph>, more evidence that stack depth
+cannot be used to determine ordering or extent inclusion. </p> <codeblock id="GUID-798CD3AA-0E08-5641-9FDA-DCE5224C7457" xml:space="preserve">K1 * GetAnotherK1LC()
+    {
+    return K1::NewLC();
+    }</codeblock> <p> <codeph> CppCallee(K1 * aK1)</codeph> is a <i>catcher</i> which
+calls <codeph>CppCallee(K1 * aK1, K1 aK2)</codeph> which can throw. It also
+calls <codeph>GetAnotherK1LC()</codeph> in the extent of the <codeph>try</codeph> statement.
+If <codeph>CppCallee(K1 * aK1, K1 aK2)</codeph> throws it might seem desirable
+that <codeph>anotherK1</codeph> must be cleaned up by the runtime as part
+of the throw. </p> <codeblock id="GUID-EAB8D25C-F8C4-5CF1-8AE4-5BEE7A877567" xml:space="preserve">void CppCallee(K1 * aK1)
+    {
+    try 
+        {
+        K1 * anotherK1 = NULL;
+        anotherK1 = GetAnotherK1LC();
+        CppCallee(aK1, anotherK1);
+        }
+    catch (...)
+        {
+        }
+    }</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright
+Acknowledgments for Standard C++ (STLport)</linktext></link>
+<link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard
+C++ Library Overview</linktext></link>
+<link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext>Standard
+C++ Support on Symbian Platform</linktext></link>
+<link href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita"><linktext>Use Cases
+for Writing Standard C++ Code</linktext></link>
+<link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building
+a Standard C++ Application or Library</linktext></link>
+<link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext>
+</link>
+<link href="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita"><linktext>Troubleshooting</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF30D941-BFD8-5260-9588-C5DA6983F558.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AF30D941-BFD8-5260-9588-C5DA6983F558" xml:lang="en"><title>System Startup</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF408E56-D2CB-557C-9D04-C6F7CE1A5424.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AF408E56-D2CB-557C-9D04-C6F7CE1A5424"><title>How to store and restore text</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Storing text and its formatting</title> <p><codeph>theFs</codeph> represents a session with the file server.</p> <codeblock id="GUID-C99E3E76-4464-519F-9DDC-744E8AC31EEE" xml:space="preserve">RFs theFs;
+CFileStore* theStore;
+TParse fileStoreName;
+TBufC&lt;28&gt; name(_L("C:\\Documents\\richtxt.dat"));
+TStreamId streamId;</codeblock> <p>A session with the file server must be opened before file-related operations are carried out. Use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-34CED17B-226B-303F-A76A-57EABC04EC94"><apiname>RFs::Connect()</apiname></xref> to open a session with the file server.</p> <p>Call <codeph>StoreL()</codeph> on the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object to externalise the text object to a <xref href="GUID-9CBA8AB1-5BFC-3719-82AF-22A9BD93C306.dita"><apiname>CFileStore</apiname></xref>. The stream in which the text is stored is identified by its ID. This will later be used to restore the rich text.</p> <p>Call <codeph>Close()</codeph> on the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object to close the file as well as the file server session.</p> <codeblock id="GUID-6F01639A-012D-5258-813F-25BB465E3603" xml:space="preserve">// Store text to a file store
+theFs.Connect();
+theFs.Parse(name,fileStoreName);
+theStore=CDirectFileStore::ReplaceLC
+    (theFs,fileStoreName.FullName(),EFileRead|EFileWrite);
+theStore-&gt;SetTypeL(KDirectFileStoreLayout);
+// externalize the rich text
+streamId=iRichText-&gt;StoreL(*theStore); // Store and get ID
+CleanupStack::PopAndDestroy(); // pop and destroy store
+theFs.Close();</codeblock> </section> <section><title>Restoring rich text</title> <p>The following example restores the text object by calling <codeph>RestoreL()</codeph> on the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object, specifying the file store and the ID of the stream in which the rich text is stored.</p> <p>The file is opened for reading only.</p> <codeblock id="GUID-5EE0AC49-32B0-5BC3-826E-29FC7006F7CA" xml:space="preserve">// Restore text from file store
+theFs.Connect();
+theFs.Parse(name,fileStoreName);theStore=CDirectFileStore::OpenLC
+    (theFs,fileStoreName.FullName(),EFileRead|EFileShareReadersOnly);
+if (theStore-&gt;Type()[0]!=KDirectFileStoreLayout)
+    User::Leave(KErrUnknown);
+ // internalize from the store
+RichText-&gt;RestoreL(*theStore,streamId);
+CleanupStack::PopAndDestroy(); // pop and destroy store
+theFs.Close();</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217"><title>SQL WHERE Clause Tips</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The guide provides tips for using the WHERE clause. </p> <section><title>Introduction</title> <p>You should use indexed column names rather than expressions in WHERE clauses. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-54EE7DC6-1E73-5A90-9442-7056C355DB63"><title>Used Indexed Column Names, not Expressions, in WHERE Clauses</title> <p>Suppose you have a table with an indexed column you want to search against, like this: </p> <codeblock id="GUID-0BEAF3EE-EFEC-50E2-81AD-38AFC4BA3A79" xml:space="preserve">
+CREATE TABLE demo312(
+    id INTEGER PRIMARY KEY,
+    name TEXT
+);
+</codeblock> <p>When you use the demo312.id column in a query, it is important that the column name appear by itself on one side of the comparison operation and that it not be part of an expression. So the following query works very efficiently: </p> <codeblock id="GUID-FA12E021-9464-5F19-B192-84CF46BE6028" xml:space="preserve">
+SELECT name FROM demo312 WHERE id=?;
+</codeblock> <p>But the following variations, although logically equivalent, result in a full table scan: </p> <codeblock id="GUID-D37A64D9-9480-572E-86DD-D7A6C36CF8F5" xml:space="preserve">
+SELECT name FROM demo312 WHERE id-?=0;
+SELECT name FROM demo312 WHERE id*1=?;
+SELECT name FROM demo312 WHERE +id=?;
+</codeblock> <p>In other words, you want to make sure that the indexed column name appears by itself on one side or the other of the comparison operator, and not inside an expression of some kind. Even a degenerate expression such as a single unary “+” operator will disable the optimizer and cause a full table scan. </p> <p>Some variation in terms of the WHERE clause is permitted. The column name can be enclosed in parentheses, it can be qualified with the name of its table, and it can occur on either side of the comparison operator. So all of the following forms are efficient, and will in fact generate identical bytecode: </p> <codeblock id="GUID-F400BDF3-3A5D-53EB-A94D-D2A75CB156AE" xml:space="preserve">
+SELECT name FROM demo312 WHERE id=?;
+SELECT name FROM demo312 WHERE demo312.id=?;
+SELECT name FROM demo312 WHERE ?=id;
+SELECT name FROM demo312 WHERE (id)=?;
+SELECT name FROM demo312 WHERE (((demo321.id))=?);
+</codeblock> <p>The previous examples have all shown SELECT statements. But the same rules apply for the WHERE clause in DELETE and UPDATE statements: </p> <codeblock id="GUID-BFF2D644-12F1-5CF4-9658-CCA9A38A258E" xml:space="preserve">
+UPDATE demo312 SET name=? WHERE id=?;
+DELETE FROM demo312 WHERE id=?;
+</codeblock> </section> <section id="GUID-DA77E2E3-2F9D-5F56-A699-8BFDFE6CD3ED"><title>Use Conjunctions in WHERE Clause Expressions</title> <p>SQLite works best when the expression in a WHERE clause is a list of terms connected by the conjunction (AND) operator. Furthermore, each term should consist of a single comparison operator against an indexed column. The same rule also applies to ON clauses in a join and to a HAVING clause. </p> <p>SQLite is able to optimize queries such as this: </p> <codeblock id="GUID-0B7F11E0-E50E-5C3B-B0B6-7390BDF7F201" xml:space="preserve">
+SELECT * FROM demo313 WHERE a=5 AND b IN ('on','off') AND c&gt;15.5;
+</codeblock> <p>The WHERE clause in the example above consists of three terms connected by the AND operator and each term contains a single comparison operator with a column as one operand. The three terms are: </p> <codeblock id="GUID-A2B87FA7-DBFC-534F-B549-9AAB0AB6A48F" xml:space="preserve">
+a=5
+b IN ('on','off')
+c&gt;15.5
+</codeblock> <p>The SQLite query optimizer is able to break the WHERE clause down and analyze each of the terms separately, and possibly use one or more of those terms with indexes to generate bytecode that runs faster. But consider the following similar query: </p> <codeblock id="GUID-E6734A32-D04F-5594-B435-4EA15B4B03F9" xml:space="preserve">
+SELECT * FROM demo313 WHERE (a=5 AND b IN ('on','off') AND c&gt;15.5) OR d=0;
+</codeblock> <p>In this case, the WHERE clause consist of two terms connected by an OR. The query optimizer is not able to break this expression up for analysis. As a result, this query will be implemented as a full table scan in which the complete WHERE clause expression will be evaluated for each row. </p> <p>In this case, refactoring the WHERE clause does not help much: </p> <codeblock id="GUID-1B5F89D5-F21C-5F53-B427-C2EC6ACEAF21" xml:space="preserve">
+SELECT * FROM demo313 WHERE (a=5 OR d=0) AND (b IN ('on','off') OR d==0)
+    AND (c&gt;15.5 OR d=0)
+</codeblock> <p>The WHERE clause is now a conjunctive expression but its terms are not simple comparison operators against table columns. The query optimizer will be able to break the WHERE expression into three smaller subexpressions for analysis, but because each subexpression is a disjunction, no indexes will be usable and a full table scan will result. </p> <p>If you know in advance that all rows in the result set are unique (or if that is what you want anyway) then the following query can be used for an efficient implementation: </p> <codeblock id="GUID-D1C700BD-F69C-5C67-8EF4-CC7BED64A2BB" xml:space="preserve">
+SELECT * FROM demo313 WHERE a=5 AND b IN ('on','off') AND c&gt;15.5
+UNION
+SELECT * FROM demo313 WHERE d=0
+</codeblock> <p>In this form, the two queries are evaluated separately and their results are merged to get the final result. The WHERE clause on both queries is a conjunction of simple comparison operators so both queries could potentially be optimized to use indexes. </p> <p>If the result set could potentially contain two or more identical rows, then you can run the above query efficiently as follows: </p> <codeblock id="GUID-CDCBAE0D-BE30-575B-A7A4-E3E7E8F99000" xml:space="preserve">
+SELECT * FROM demo313 WHERE RowID IN (
+    SELECT RowID FROM demo313 WHERE a=5 AND b IN('on','off') AND c&gt;15.5
+    UNION ALL
+    SELECT RowID FROM demo313 WHERE d=0
+)
+</codeblock> <p>The subquery computes a set containing the RowID of every row that should be in the result set. Then the outer query retrieves the desired rows. When a WHERE clause contains OR terms at the top level, most enterprise-class SQL database engines such as PostgreSQL or Oracle will automatically convert the query to a form similar to the above. But in order to keep minimize the complexity and size of SQLite, such advanced optimizations are omitted. In the rare cases where such queries are required, than can be optimized manually by the programmer by recasting the query statements as shown above. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link><linktext/></link></related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF65EC50-0922-57DD-809B-DB8970C8E4C6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AF65EC50-0922-57DD-809B-DB8970C8E4C6"><title>File server session</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>All files are handled by the file server, using either its local file system, or an installed file system. The server manages i/o activity, and contention, sharing and locking. </p> <p>Client programs access the file server through a client API defined in <filepath>f32file.h</filepath>. This API includes all classes and functions needed for file system, device, directory and file access, and associated utilities. </p> <p>All access from client to server is through a file server session, an instance of the <codeph>RFs</codeph> class. After a client has connected an <codeph>RFs</codeph> to the file server, it can perform any file-related operation. An <codeph>RFs</codeph> is associated with a single current path: when a connection to the file server is made the session path is automatically set to the private directory of the connecting process. </p> <p>After operations have been completed, file server-related clean-up should be carried out using <codeph>Close()</codeph> defined in the <codeph>RHandleBase</codeph> class. Note that for the majority of functions, when a file or directory name is passed as an argument to the function, if no drive letter or directory is specified, the missing path component will be taken from the <keyword>session path.</keyword> </p> <p><b>Component-based design </b> </p> <p>Only a single path is supported, and the path includes the drive. Each component must have its own <codeph>RFs</codeph> for its file access purposes. This gives each component all the flexibility it needs to maintain its own current path and other settings related to an <codeph>RFs</codeph>. There is no limit on the number of <codeph>RFs</codeph> handles available to a single thread. </p> <p>This is unlike DOS, which effectively maintains 26 current paths, one for each drive. DOS also maintains a current drive, and the effective current path is therefore the current path on the current drive. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD"><title>debuglibrary</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>debuglibrary</codeph>  <varname>filename-list</varname> </p> <p>Use the <codeph>debuglibrary</codeph> statement to specify the libraries that are only required in debug builds.</p> <p>Any number of files may be specified, and there may be many <codeph>debuglibrary</codeph> statements. Specify the entire filename, e.g. <filepath>euser.lib</filepath>.</p> <p>The keyword indicates libraries which are only required in debug builds; this situation can arise when complex functions are called from <codeph>__ASSERT_DEBUG()</codeph> macros, for example in the <codeph>TSwizzleCBase</codeph> constructor which calls a function in <filepath>estor.lib</filepath>.</p> <p><filepath>makmake</filepath> constructs two lists of libraries, one for debug builds and the other for release builds. The <codeph>library</codeph> keyword contributes to both lists, but the <codeph>debuglibrary</codeph> keyword only contributes to the debug list. There is no support for libraries which are only used in release builds.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AF937B6E-7BC0-5B7D-818E-93F7CAFD8808"><title>Parsing an XML document using Content Handler</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains how to parse an XML document by implementing the content handler functionality of the parser framework. </p> <p> <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref> class defines the interface required by a client of the XML framework. It allows a client to be placed in a chain with other clients such as a Parser or a Validator, and therefore allows the flow of information within chain. It provides callbacks similar to that of the SAX 2.0 interface. </p> <section><title>Introduction</title> <p>Consider a scenario when an application with numerous settings require the settings being saved, so that when the application is restarted after a shutdown, the settings are available. This can be achieved (while ensuring the cross-platform compatibility) by saving the setting in an XML file, which the application parses on start-up. The application responds to the XML statements by implementing the <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref> interface. Since the parser detects tags and their content, it calls the associated content handler functions to respond with the required behaviour. </p> <p>The callback functions which an implementation of <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref> must provide are depicted in the table. These correspond to functions defined in the <codeph>ContentHandler</codeph> interface of the <xref scope="external" href="http://www.saxproject.org">SAX specification</xref>. The last parameter of each function is an error code. If no error has taken place, then the <xref href="GUID-6CA4F1ED-7947-3087-B618-D35858FAA3BC.dita"><apiname>KErrNone</apiname></xref> null error code is returned by the framework. </p> <p> </p> <table id="GUID-BF14F3DB-7880-5299-874C-3B56554C8080"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>MContentHandler callback</entry> <entry>SAX specification function</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-6F240EEF-81FA-3A27-9593-A7ADC9118627.dita"><apiname>OnStartDocumentL()</apiname></xref>  </p> </entry> <entry><p> <codeph>startDocument() </codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-81F0FD8C-825D-3283-B998-6B44CC3294FE.dita"><apiname>OnEndDocumentL()</apiname></xref>  </p> </entry> <entry><p> <codeph>endDocument() </codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-5BFFB049-5C71-31FB-ADBE-89FF4296E125.dita"><apiname>OnStartElementL()</apiname></xref>  </p> </entry> <entry><p> <codeph>startElement()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-6F1E258D-CE57-3C22-BBDE-AF5B6D6C90EB.dita"><apiname>OnEndElementL()</apiname></xref>  </p> </entry> <entry><p> <codeph>endElement() </codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-37601F09-7C8A-3397-8750-92CE95C1B87B.dita"><apiname>OnContentL()</apiname></xref>  </p> </entry> <entry><p> <codeph>characters()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-DA03C829-A9E3-3A8E-9367-208545FA0721.dita"><apiname>OnStartPrefixMappingL()</apiname></xref>  </p> </entry> <entry><p> <codeph>startPrefixMapping()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-CC4C2F12-DC24-3F7F-BB5F-7D744F41E095.dita"><apiname>OnEndPrefixMappingL()</apiname></xref>  </p> </entry> <entry><p> <codeph> endPrefixMapping()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-92826CB4-B56E-3E9F-BD4B-31ADE3974D91.dita"><apiname>OnIgnorableWhiteSpaceL()</apiname></xref>  </p> </entry> <entry><p> <codeph> ignorableWhitespace()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-3D25881F-192F-3A21-B3DE-ECAB29C1D5CA.dita"><apiname>OnSkippedEntityL()</apiname></xref>  </p> </entry> <entry><p> <codeph>skippedEntity()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-7DAF7316-BD31-3AD4-9854-F8CB6319D3D4.dita"><apiname>OnProcessingInstructionL()</apiname></xref>  </p> </entry> <entry><p> <codeph>processingInstruction()</codeph>  </p> </entry> </row> <row><entry><p> <xref href="GUID-BF4510DE-7C8B-3404-91C0-FAC737AA1A07.dita"><apiname>OnError()</apiname></xref>  </p> </entry> <entry><p> </p> </entry> </row> <row><entry><p> <xref href="GUID-A03D96B2-56B2-33A7-AC51-E1F5D1CA681C.dita"><apiname>GetExtendedInterface()</apiname></xref>  </p> </entry> <entry><p> </p> </entry> </row> </tbody> </tgroup> </table> <p>The following table lists the classes that are parameter of functions that must be implemented: </p> <table id="GUID-B34320E0-B8B1-5992-94AE-DA6D587D84F1"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Class</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-D79A2F59-8DC1-3493-92F6-2E1337CD9405.dita"><apiname>RDocumentParameters</apiname></xref>  </p> </entry> <entry><p>Contains the character set which the document uses. </p> </entry> </row> <row><entry><p> <xref href="GUID-58047BD6-FECF-3BF0-869B-65F833D972A4.dita"><apiname>RAttributeArray</apiname></xref>  </p> </entry> <entry><p>Consists of an array of <xref href="GUID-BAD00F6C-6E5C-3331-BA58-85A186F933E8.dita"><apiname>RAttribute</apiname></xref> objects. The array holds the name (as an <xref href="GUID-6CEDFB6D-16B6-3860-922B-15A23C182DB2.dita"><apiname>RTagInfo</apiname></xref> object), value and type of each attribute of the element. </p> </entry> </row> <row><entry><p> <xref href="GUID-6CEDFB6D-16B6-3860-922B-15A23C182DB2.dita"><apiname>RTagInfo</apiname></xref>  </p> </entry> <entry><p>Contains information about an XML tag, its namespace URI and prefix, and its local name. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-948C5BEE-0E05-525A-B601-909A1818FDA0"><title>Procedure</title> <p>Follow the steps given below to understand how to parse an XML document by implementing the content handler functionality: </p> <ol id="GUID-9404AB58-0C3C-5CE9-A4BE-D15861B145E8"><li id="GUID-D4F71FA7-3DC7-5CB7-89D6-459E4F35D43E"><p>Implement the <codeph>MContentHandler</codeph> interface. </p> <p>The following code snippet illustrates how to implement <codeph>MContentHandler</codeph>: </p> <codeblock id="GUID-DE2A07E6-00BD-577D-AF67-83B85CD59572" xml:space="preserve">class CMyContentHandler : public CBase, public MContentHandler
+{
+public:
+    // A callback to indicate the start of the document. 
+    void CXmlExample::OnStartDocumentL( const RDocumentParameters&amp;, TInt )
+    {
+    iConsole-&gt;Printf( KOnStartDoc );
+    iConsole-&gt;Printf( KPressAKey );
+    iConsole-&gt;Getch();
+
+    iNumElements = 0;
+    iNumSkippedEntities = 0;
+    iNumPrefixMappings = 0;
+    iNumPrefixUnmappings = 0;
+    }
+    
+// A callback to indicate an element has been parsed.     
+void CXmlExample::OnStartElementL( const RTagInfo&amp;, const RAttributeArray&amp;, TInt )
+    {
+    iConsole-&gt;Printf( KOnStartEle );
+
+    if( iLeaveOnStartElement )
+        {    
+        if( iNumElements++ == 0 )
+                  {
+                  iConsole-&gt;Printf( KOnStartErr, KExpectedLeaveCode );
+            User::After( 1 );
+                  User::Leave( KExpectedLeaveCode );
+                  }
+
+           iNumElements++;
+        }
+    }
+  
+// implementations of the other callbacks
+// ...
+
+}</codeblock> </li> <li id="GUID-A6BB0985-37A3-526D-B678-266A55F57862"><p>Instantiate the <codeph>ContentHandler</codeph> object in the client application code and pass it to the constructor method of a parser object. </p> <codeblock id="GUID-14F1FCEB-7475-583B-867A-E7D19E8369B0" xml:space="preserve">...
+CMyContentHandler* ch = CMyContentHandler::NewL();
+CParser* parser = CParser::NewLC( KXmlMimeType,ch );
+parser-&gt;ParseL( myXMLdata ); // this will result in callbacks to ch
+...</codeblock> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFAB4B17-1E9B-562D-AC36-48C4B0FFDD50.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AFAB4B17-1E9B-562D-AC36-48C4B0FFDD50" xml:lang="en"><title>Panoramic Stitching</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFBD4ED6-9588-531C-8EDF-566DB1D03088.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AFBD4ED6-9588-531C-8EDF-566DB1D03088" xml:lang="en"><title>Signing
+SIS Files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An installation (SIS) file must be signed with a digital signature, which
+helps in verifying the identity of the vendor. This ensures that the file
+has not been tampered with since it was signed. </p>
+<p>Software install package files can be signed multiple times. However, it
+is not required to sign the file with multiple signatures at the same time.
+Signatures can be added and removed from a package file at any time if the
+relevant keys are available. <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref> supports
+the signing of SIS files with self-signed certificates or Symbian developer
+certificates. </p>
+<section id="GUID-52029821-0FA4-58C7-94B9-C6B845C42098"><title>Self-signed
+certificates</title> <p>The term <i>self-signed</i> means that the SIS file
+is signed by the creator of the SIS file. A SIS file is <i>self-signed</i> if
+it signed by a certificate that has been self generated. For example, using <xref href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita">MakeKeys</xref>. </p> <p>SIS
+files can be signed by Symbian application developers for programs that: </p> <ul>
+<li id="GUID-E2CB54EA-B638-5589-88FF-36DDA57E3388"><p>do not use any APIs
+protected by capability checks. </p> </li>
+<li id="GUID-717FBB11-F58A-5DE5-855A-F41A0CC9AF1B"><p>only require platform
+security capabilities that belong to the "user" or "basic" capabilities group.
+If the Software Installer is required to install a program with these capabilities,
+it can display capability information to the Symbian device user and provide
+an option to continue or cancel the installation. </p> <p>As long as the application
+requests no system capabilities, self-signed SIS files can be installed depending
+on how the installation policy has been configured by the device creator. </p> </li>
+</ul> <p> <b>Note</b>: Self-signed SIS files are not associated with a root
+certificate present on the device. </p> </section>
+<section id="GUID-95FEC08E-0E38-5F88-9FE5-D2DE16BE08FD"><title>Symbian developer
+certificates</title> <p>To test applications on Symbian devices, the SIS file
+can be signed with a Symbian developer certificate. This allows the application
+to be installed without the need for an external testing and signing process.
+Symbian developer certificates can be obtained through <xref href="http://www.symbiansigned.com" scope="external">www.symbiansigned.com</xref>. </p> <p>The usage of Symbian
+developer certificates is restricted to the following: </p> <ul>
+<li id="GUID-01E1055E-C77B-5C42-B54F-EF7A396669BD"><p>Usage with one or more
+listed phones only (through the IMEI/ESN number). </p> </li>
+<li id="GUID-D78F1294-5BB2-52BE-BA31-C06D72261B28"><p>Validity until a specific
+date, after which the certificate expires. </p> </li>
+<li id="GUID-676EB812-5C9B-5291-8746-6FA50B41F651"><p>An agreed set of capabilities
+that the certificate can grant. </p> </li>
+<li id="GUID-8C79AB5F-6708-538E-A0EA-71D493D3D576"><p>A set of SIDs of executables
+that can be installed by the SIS file. If the SIS file package UID is in the
+protected range then it must be included in the list of UIDs in the certificate. </p> </li>
+</ul> <p> <b>Note</b>: A Symbian developer certificate is indirectly signed
+against one of the Symbian root certificates, which are present on the Symbian
+device by default. </p> </section>
+<section id="GUID-C35BB441-E849-5CC4-B1B8-C50C6F250129"><title>Symbian signed
+program</title> <p>Some applications require platform security capabilities
+that cannot be granted by the Symbian application developer. These programs
+must be tested externally and signed with a certificate, which the Software
+Installer recognizes as provided by a trusted entity. </p> <p>This process
+is done through the Symbian Signed programme. For details on ACS Publisher
+ID certificates, Symbian developer certificates and the signing process, see <xref href="http://www.symbiansigned.com" scope="external">www.symbiansigned.com</xref>. </p> </section>
+<section id="GUID-D04B60BA-59A7-59FF-824F-2DC27CE01B74"><title> MANDATORY
+certificates </title> <p>If a certificate is marked as <codeph>MANDATORY</codeph> then
+any package certificate presented during the software installation, must have
+a certificate chain that resolves to this certificate (and any other certificates
+marked as <codeph>MANDATORY</codeph>). If the certificate chain does not resolve
+to a mandatory certificate, the installation fails. This feature prevents
+any unauthorized applications from being installed on the device. </p> <p> <b>Note</b>:
+Unsigned or self-signed applications cannot be installed, if a <codeph>MANDATORY</codeph> certificate
+is present. </p> </section>
+</conbody><related-links>
+<link href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita"><linktext>Creating
+and Signing an Installation File</linktext></link>
+<link href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita"><linktext>SignSIS</linktext>
+</link>
+<link href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita"><linktext>MakeKeys</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e163163_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFD7E241-7DC5-5C7B-A7FB-D0B6DCF95ECD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-AFD7E241-7DC5-5C7B-A7FB-D0B6DCF95ECD" xml:lang="en"><title>Rendering
+Video to a Graphics Surface Tutorial</title><shortdesc>This tutorial shows you how to use the Video Renderer utility class
+to create a new surface for rendering and render a video buffer onto the display. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-438441C2-6B59-566F-91CD-8082A75A831B"><p>Before you start,
+you must: </p> <ul>
+<li id="GUID-834E7619-14ED-5C02-B9C7-B71D4FAA8EE3"><p>Understand the <xref href="GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita">Video Renderer</xref>. </p> </li>
+</ul> </prereq>
+<context id="GUID-C2896E81-541E-57A2-92F7-4693975F28C1"><p>You use the <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita"><apiname>CVideoRenderer</apiname></xref> utility
+class to render video to a graphics surface. <codeph>CVideoRenderer</codeph> has
+two modes: </p> <ul>
+<li id="GUID-BAC03F4E-200E-5959-8EE7-40459CC3B302"><p> <b>Timed</b>  </p> <p>In
+timed mode, a frame is rendered at a specific time called its presentation
+time. A frame's presentation time is the system clock time when that frame
+must be visible on the display. <codeph>CVideoRenderer</codeph> launches its
+own high-priority thread to handle timed rendering. </p> </li>
+<li id="GUID-39DD6061-2847-53F8-A066-9720913F576C"><p> <b>Non-timed</b>  </p> <p>In
+non-timed mode, a frame is rendered as soon as possible. Non-timed mode requires
+a <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler</apiname></xref> to be present in the calling thread. </p> </li>
+</ul> <p> <codeph>CVideoRenderer</codeph> uses the <xref href="GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0.dita"><apiname>MVideoRendererObserver</apiname></xref> interface
+to provide notifications about the status of video buffers. <codeph>MVideoRendererObserver</codeph> provides
+the following notifications: </p> <table id="GUID-F871259A-07DE-5C4E-8441-7AAF5988E935">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry> Callback </entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0.dita#GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0/GUID-BCFD3522-F252-3347-AF99-38B1CC7C8722"><apiname>MVideoRendererObserver::MvroBufferDisplayed(TInt,const
+                  TTime &amp;)</apiname></xref>  </p> </entry>
+<entry><p>A buffer has been rendered onto the display. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0.dita#GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0/GUID-561CE3AE-B3B3-37DF-8836-8636B53E3D76"><apiname>MVideoRendererObserver::MvroBufferSkipped(TInt)</apiname></xref> </p> </entry>
+<entry><p>A buffer was skipped in the rendering process. This could be because
+it missed its presentation time or an error occurred. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0.dita#GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0/GUID-8C80E5DC-9BCD-3A4E-BC3E-191213BC966A"><apiname>MVideoRendererObserver::MvroVideoBufferAvailable()</apiname></xref> </p> </entry>
+<entry><p>A new buffer is available which can be used to store a video frame
+for rendering. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Note</b>: You must implement <codeph>MVideoRendererObserver</codeph> to
+receive these notifications. </p> </context>
+<steps id="GUID-6C9FF04E-B88A-57EA-BE76-37D0E08A496F">
+<step id="GUID-BB5997B5-8A52-590E-8DE3-73061508883B"><cmd>Create a new Video
+Renderer instance by calling <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita#GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6/GUID-2B582029-8A47-316B-A85F-03EEA0B9BB9C"><apiname>CVideoRenderer::NewL(MVideoRendererObserver&amp;,
+TBool)</apiname></xref>. </cmd>
+<info>Set the <codeph>aTimed</codeph> parameter to <codeph>ETrue</codeph> for
+timed mode or <codeph>EFalse</codeph> for non-timed mode. </info>
+<stepxmp><codeblock id="GUID-8F673E2F-35B0-50BA-9D01-D65DD496A222" xml:space="preserve">//Create new timed Video Renderer
+CVideoRenderer* renderer = CVideoRenderer::NewL(observer, ETrue);</codeblock> </stepxmp>
+<stepresult>If in timed mode, <codeph>CVideoRenderer</codeph> launches its
+own high-priority thread. </stepresult>
+</step>
+<step id="GUID-655E965E-0EC8-522E-84E1-1BE770D40CD4"><cmd>Get the list of
+supported surface formats by calling <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita#GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6/GUID-14039C33-2A8E-3573-B8E8-0F872A9990D6"><apiname>CVideoRenderer::GetSupportedFormatsL(RArray&lt;TUncompressedVideoFormat&gt;&amp;)</apiname></xref>. </cmd>
+<info>The Video Renderer maintains a list of supported formats in an RSS file.
+For more information, see <xref href="GUID-6021BE18-3416-55DF-A628-0071024D7586.dita">Video
+Renderer Resource File</xref>. </info>
+<stepxmp><codeblock id="GUID-DD5B2FC8-F437-5980-A3FC-8066ED6E624D" xml:space="preserve">//Get an array of supported formats
+renderer-&gt;GetSupportedFormatsL(array);</codeblock> </stepxmp>
+<info> <codeph>GetSupportedFormatsL()</codeph> returns an array of supported
+formats. Use the supported format you require as an input parameter when creating
+your surface. </info>
+</step>
+<step id="GUID-5DF2626B-59D1-505E-9C27-7E88C3D9F5C6"><cmd>Create a new surface
+for rendering by calling <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita#GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6/GUID-2E3C8649-B979-3D0C-9580-09EA30BDB883"><apiname>CVideoRenderer::CreateSurfaceL(const
+TSize&amp;, TInt, const                 TUncompressedVideoFormat&amp;, TSurfaceId&amp;)</apiname></xref> </cmd>
+<stepxmp><codeblock id="GUID-D8CBC1CB-3ED4-5252-9E8E-B475F62891CA" xml:space="preserve">TSurfaceId surfaceId;
+renderer-&gt;CreateSurfaceL(size, buffers, format, surfaceId);</codeblock> </stepxmp>
+<stepresult> <codeph>CVideoRenderer::CreateSurfaceL()</codeph> returns a Surface
+ID for the new surface. You use the Surface ID whenever you need to refer
+to the surface, for example, when you need to destroy it. </stepresult>
+</step>
+<step id="GUID-37C2073C-D6C5-5499-A069-2B74152147AC"><cmd>Retrieve the next
+free buffer from the Video Renderer by calling <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita#GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6/GUID-8A620888-269F-3ED8-A71C-C4CED54CFE5D"><apiname>CVideoRenderer::NextBuffer()</apiname></xref>. </cmd>
+<stepxmp><codeblock id="GUID-FF65F277-7D82-5ACB-8A10-31AE27831A51" xml:space="preserve">TVideoFrameBuffer* buffer = renderer-&gt;NextBuffer();
+// use buffer</codeblock> </stepxmp>
+<info><p>Note you should only perform this step after your observer's <codeph>MvroVideoBufferAvailable()</codeph> routine
+has been called.</p></info>
+<stepresult> <codeph>CVideoRenderer::NextBuffer()</codeph> returns the next
+available buffer. </stepresult>
+</step>
+<step id="GUID-49DD97C3-9989-59F8-B07C-5EDF9302DBFD"><cmd>Render the buffer
+onto the display by calling <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita#GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6/GUID-01F200BC-C024-396D-BC61-8305938117C9"><apiname>CVideoRenderer::UpdateBuffer(TVideoFrameBuffer
+*,const TTime                 &amp;)</apiname></xref>. </cmd>
+<info>If you created your Video Renderer in timed mode, set <codeph>aPresentationTime</codeph> to
+be the required presentation time for the buffer. If you created your Video
+Renderer in non-timed mode, then <codeph>aPresentationTime</codeph> is ignored
+and the buffer is displayed as soon as possible. </info>
+<stepxmp><codeblock id="GUID-53911688-D44F-5A54-B42E-46CA0F0CE4C8" xml:space="preserve">FillWithData(buffer-&gt;Buffer()); // Fills buffer with data
+renderer-&gt;UpdateBuffer(buffer, presentationTime);</codeblock> </stepxmp>
+<stepresult>When the buffer has been displayed, you are notified via the <xref href="GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0.dita#GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0/GUID-BCFD3522-F252-3347-AF99-38B1CC7C8722"><apiname>MVideoRendererObserver::MvroBufferDisplayed(TInt,const TTime   
+             &amp;)</apiname></xref> callback. </stepresult>
+</step>
+</steps>
+<result id="GUID-D23C8609-FEDE-55C9-9B61-B680D062F7AF"><p>You have now created
+a surface and rendered a video buffer onto the display. </p> </result>
+</taskbody><related-links>
+<link href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita"><linktext>Video Player
+2 Tutorial</linktext></link>
+<link href="GUID-528BDE53-327A-5D34-B4BF-CB2421BE43C8.dita"><linktext>Writing a
+Controller Plug-in</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFE0238A-D6A4-5D07-BB99-85E8CF97BD26.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AFE0238A-D6A4-5D07-BB99-85E8CF97BD26" xml:lang="en"><title>Secure
+Software Install SIS Tools Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <b>Secure Software Install SIS Tools</b> enable you to create, sign,
+decompile and preinstall SIS files. </p>
+<section id="GUID-7FDA2D06-5E36-4757-BC83-E78A206FF64B"><title>Description</title> <p>The Secure Software Install SIS Tools
+component comprises the following PC-side command-line tools: </p> <ul>
+<li id="GUID-08851BF3-9C9B-5B82-A231-6B18773E7411"><p>The <xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">MakeSIS</xref> tool
+creates unsigned SIS files based on the information provided in an input package
+(PKG) file. </p> </li>
+<li id="GUID-9A4C3909-108E-50F0-A50B-23D95537F56A"><p>The <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref> tool
+signs SIS files using a certificate and private key. </p> </li>
+<li id="GUID-951A5574-4C25-5EC4-A024-76907FF2A4C6"><p>The <xref href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita">CreateSIS</xref> tool
+is a wrapper around the MakeSIS, SignSIS, and MakeKeys tools, which automates
+the process of generating and signing SIS files. It supports creating new
+SIS files from package (PKG) files, signing existing package files and generating
+private-public key pair and certificate requests for signing. </p> </li>
+<li id="GUID-F1D3CFEF-7562-5E6C-B2CC-7801DF4D642C"><p>The <xref href="GUID-42CF6D55-CAD2-5049-A1B6-35479404C273.dita">DumpSIS</xref> tool
+decompiles input SIS file and extracts the corresponding PKG and source files. </p> </li>
+
+</ul> </section>
+<section id="GUID-5B284ADE-E9D1-437F-9610-78F20CDD2697"><title>Required background</title> <p>Before you start, you must
+be familiar with the following: </p> <ul>
+<li id="GUID-74F7883B-84E6-5CEF-8B17-90554A3F6048"><p><xref href="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita">Public
+Key Cryptography</xref>  </p> </li>
+<li id="GUID-F3A86986-12F1-5E93-9DD8-DB21EFC84885"><p><xref href="GUID-911E9F7E-D0AD-55EC-A3F4-1D427F803780.dita">Digital
+Certificates</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-CF573733-60C3-4EBA-9A87-11A12E06EA4E"><title>Key concepts and terms</title> <dl>
+<dlentry>
+<dt>PKG File</dt>
+<dd><p>A package (PKG) file contains information required by the SIS file
+creation tools to create a SIS file. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>SIS File</dt>
+<dd><p>A Symbian Installation Source (SIS) file is a collection of executables
+and data files, packaged in a way that the software installer can install
+them onto a device. SIS files can be preinstalled on a device. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Signing</dt>
+<dd><p>A SIS file must be signed with a digital signature, which is used in
+verifying the identity of the vendor of an installation file. This ensures
+that the file has not been tampered with since it was signed. For details
+see, <xref href="GUID-AFBD4ED6-9588-531C-8EDF-566DB1D03088.dita">Signing</xref>. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Eclipsing</dt>
+<dd><p>Eclipsing is a mechanism to upgrade files existing on the ROM drive,
+by installing a new version of the same on the RAM drive. For details see, <xref href="GUID-F8A26275-883A-5299-9C37-9DDCC2F62108.dita">Eclipsing</xref>. </p> </dd>
+</dlentry>
+
+
+</dl> </section>
+<section id="GUID-B5A78585-05EF-4763-8C70-33AE5882F1EA"><title>Typical Uses</title> <p>The SIS tools can be used to perform
+the following: </p> <ul>
+<li id="GUID-0E5E3BED-B678-54E1-98F0-09672A5BDA8C"><p> <b>Create and sign
+an installation file</b>  </p> <p>Symbian application developers can create
+installation packages using <codeph>MakeSIS</codeph> and sign them using <codeph>SignSIS</codeph>.
+Alternatively, the <codeph>CreateSIS</codeph> tool, which is a wrapper around <codeph>MakeSIS</codeph> and <codeph>SignSIS</codeph>,
+can be used to create and sign an installation file. For details see <xref href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita">Creating and Signing an Installation
+File</xref>  </p> </li>
+<li id="GUID-E5CAFFB6-7396-5220-942D-2406C39D8E01"><p> <b>Upgrade OS components</b>  </p> <p>The
+software installer enables a device manufacturer to replace binaries and data
+files in ROM, for example, to fix a software issue, by means of eclipsing.
+For details, see <xref href="GUID-7F65B69A-6AC1-509C-91E8-9E49ED0BFEC0.dita">Upgrading
+an OS Component</xref>. </p> </li>
+
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-C55D1D74-B764-5DD1-8C43-5A5138578EAC.dita"><linktext>Secure Software
+Install SIS Tools Concepts</linktext></link>
+<link href="GUID-A4C26317-9F76-587E-A4B6-D94892ACF11B.dita"><linktext>Secure Software
+Install SIS Tools Tutorials</linktext></link>
+<link href="GUID-100F41B4-67BE-5978-99DA-C9B6DE8760F7.dita"><linktext>Secure Software
+Install SIS Tools Reference</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06"><title>How the target Client is Resolved using CSIPResolvedClient2</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The SIP Client Resolver determines the target clients by comparing the Request-URI of the incoming SIP request to the information stored in SIP Client Resolver mapping table in the Central Repository. The information required to access the map table in the Central Repository is defined in the <filepath>sipclientresolverconfigcrkey.h</filepath> file. The incoming SIP request compares with the Request-URI’s user part in the Central Repository mapping table. </p> <p>If a match is found, the related ECOM plug-in is loaded by its UID. The loaded plug-in matches the incoming SIP requests based on their fields. If the request matches, the plug-in returns the UID of the matching client. SIP Client Resolver requests the resolved ECom plug-in to connect to the Symbian OS server that uses SIP. </p> <p>The resource (<filepath>.rss</filepath>) file contains the information in the Central Repository and also the following information: </p> <ul><li id="GUID-6CF8E2D5-5BF3-5E56-93BE-97A0D2054B0E"><p> <codeph> dll_uid</codeph> and <codeph>implementation_uid</codeph>: These UIDs are obtained from <xref scope="external" href="http://www.symbiansigned.com">Symbian Signed</xref>. </p> <p> <b>Note:</b> Both these UIDs can be the same. </p> </li> <li id="GUID-A2F95B01-F707-51D1-AD67-4EB364865C33"><p>The <codeph>interface_uid</codeph> must be <codeph>0x10282EE5</codeph>. </p> </li> </ul> <section><title>Resolving the target client using CSIPResolvedClient2</title> <p>The following illustration shows how the SIP Client Resolver subsystem resolves the target client implementing <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> and requests the resolved client to connect to the SIP implementation. </p> <fig id="GUID-750221F0-A98E-5C47-B804-5A6CDD16B2E9"><title>
+             Call flow of resolving a target client implementation using
+             CSIPResolvedClient2 
+          </title> <image href="GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e318241_href.jpg" placement="inline"/></fig> <p>The target clients must implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface to receive SIP requests including SIP dialogs and enable the client resolution mechanism. <b/><b>Note</b>: The channel UIDs must be unique across all SIP clients. For example clients may use UIDs assigned for binaries. </p> <p>The SIP stack uses the plug-ins that implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface as follows: </p> <ol id="GUID-E0C735BE-BBBD-533B-AB2B-59F8936060BA"><li id="GUID-7854B67A-2143-5EA4-949D-B3C96CA51866"><p>If the SIP request does not contain an Accept-Contact-header, go to step 2. If it does, the SIP stack calls <codeph>CSIPResolvedClient2::MatchAcceptContactsL</codeph> for all the plug-ins and applies the following logic: </p> <ul><li id="GUID-E975B348-52DB-519A-9AC0-98821BA27E95"><p>If none of the clients match, go to step 2 </p> </li> <li id="GUID-99DB2FEE-470B-5E76-8183-AD2C0E1B6FF0"><p>If one of the client match, the SIP request is sent to the matching client </p> </li> <li id="GUID-5F420FD9-2AEE-5517-A216-FA3868941902"><p>If more than one of the clients match, go to step 2 </p> </li> </ul> </li> <li id="GUID-F28D6940-D404-5E0F-B52A-6A47980ADA68"><p>If the SIP request does not contain an Event-header go to step 3. If it does, the SIP stack calls <codeph>CSIPResolvedClient2::MatchEventL</codeph> for all the plug-ins and applies the following logic: </p> <ul><li id="GUID-390E2FBC-305E-59C0-BE1F-E7C961B47251"><p>If none of the clients match, go to step 3 </p> </li> <li id="GUID-6A41D1A5-7636-51CC-864D-F2AB095D97E6"><p>If one of the client match, the SIP request is sent to the matching client </p> </li> <li id="GUID-8C51B40C-FC7B-566E-B56F-4279233C192E"><p>If more than one of the clients match, go to step 3 </p> </li> </ul> </li> <li id="GUID-9C094348-B7F4-572D-B49B-B99F81C902F2"><p>The SIP stack calls <codeph>CSIPResolvedClient2::MatchRequestL</codeph> for all the plug-ins and applies the following logic: </p> <ul><li id="GUID-63351732-E32A-58BC-8F32-7BA3832788FD"><p>If none of the clients match, the SIP generates an error response </p> </li> <li id="GUID-9E8765F8-A55F-5EA3-A63E-ACBF8A4BEF24"><p>If one of the client match, the SIP request is sent to the matching client </p> </li> <li id="GUID-AE679FD1-163D-5F3B-ADE8-1C6AEF490552"><p>If more than one of the clients match, SIP selects one of these clients randomly and sends the request to it. The ROM-based clients are preferred. </p> </li> </ul> </li> </ol> </section> <section><title>See also</title> <p> <xref href="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita">Example of a SIP Client Resolver Plug-in</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3" xml:lang="en"><title>BitGDI Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides examples that demonstrate using the BitGDI component. </p> </conbody><related-links><link href="GUID-E9FF94D2-AFFD-54A4-A6C2-00929BC70DB0.dita"><linktext>BitGDI
+  Concepts</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI
+  Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFF0B669-E0D8-5533-A105-0F5EBC6AF5E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-AFF0B669-E0D8-5533-A105-0F5EBC6AF5E1"><title>List of Symbian tools</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides links to the documentation for the tools provided with Symbian platform. Note that these lists are not exhaustive. </p> <p> <b>Note:</b> Additional tools for integrating and customising software to produce a Symbian-based platform or phone are supplied as part of Platform Developer Toolkit (PDT). The tools include Symbian Build System v2 (SBSv2), API Usage Report Analysis (AURA), Code Database (CDB), Component Based Release (CBR), EmulatorBuild, Symbian Test Automation Tool (STAT), Test Execute Framework (TEF), TestDriver, Use Case Controller (UCC) and WinTAP. Documentation for these tools is supplied with the PDT. </p> <section><title>Application development tools</title> <p>The application development tools help to speed up development of Symbian platform applications. </p> <table id="GUID-297995D9-2C57-5FAF-8BA3-A4B4DD0D197A"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Name</entry> <entry>Description</entry> <entry>Reference</entry> </row> </thead> <tbody><row><entry><p>Application Resource Tools </p> </entry> <entry><p>Tools for building resource files. </p> </entry> <entry><p><xref href="GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita">Application resource tools guide</xref>  </p> </entry> </row> <row><entry><p>Build Tools </p> </entry> <entry><p>Tools used to build Symbian platform programs. </p> </entry> <entry><p><xref href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita">Build tools guide</xref>  </p> </entry> </row> </tbody> </tgroup> </table> <p>In addition to these, the Symbian Build System v2 (SBSv2) provides tools for building Symbian platform and applications developed for Symbian platform. For more information about SBSv2, see <i>Symbian Build System v2</i> provided with PDT. </p> </section> <section><title> Analysis tools</title> <table id="GUID-5D9F7579-4456-56AA-896D-82504906BBF1"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Name</entry> <entry>Description</entry> <entry>Reference</entry> </row> </thead> <tbody><row><entry><p>Capability Management tools </p> </entry> <entry><p>Allows you to compare the capabilities of binaries that are developed against Symbian platform. </p> </entry> <entry><p><xref href="GUID-01F1C399-25F6-54E8-B48D-521187A63096.dita">Capability Management tools</xref>  </p> </entry> </row> <row><entry><p>Set capability test tool </p> </entry> <entry><p>Allows you to make a copy of an executable and assign different capabilities to it. </p> </entry> <entry><p><xref href="GUID-1CBDCDE6-1FC6-59BE-BA4A-9EAD3D6627CD.dita">Set Capability Test tool</xref>  </p> </entry> </row> </tbody> </tgroup> </table> <p>In addition to these, Symbian provides more analysis tools as part of the PDT. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-AFF7DA70-E993-5943-A27A-266541922E2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-AFF7DA70-E993-5943-A27A-266541922E2F" xml:lang="en"><title>IMAP4 MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides concepts and functions related to IMPA4 MTM. The client applications can use the APIs that are provided by this MTM to retrieve email messages. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B007634D-4D55-528A-8B85-6120C633AC8B" xml:lang="en"><title>EUser
+High Level Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The EUser High Level (EUserHL) library introduces a new L-Class idiom.
+L-Classes have characteristics close to standard C++ value and handle classes,
+including constructors, operators, and implicit operations may leave. </p>
+<section><title>Purpose</title> <p>EUserHL introduces three APIs to improve
+string handling, object creation and resource management. </p> </section>
+<section><title>Intended Audience:</title> <p>This document is intended to
+be used by Symbian platform licensees and application developers. </p> </section>
+<section><title>EUserHL Library Details</title> <p>The DLL that provides the
+functionality and the library to which your code must link is identified below. </p> <table id="GUID-35A8E4A4-E329-521E-8BE6-EE46B0B8C954">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>DLL</entry>
+<entry>LIB</entry>
+<entry>Short Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>euserhl.dll</filepath>  </p> </entry>
+<entry><p> <filepath>euserhl.lib</filepath>  </p> </entry>
+<entry><p>The published interface for the EUserHL library. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Functional Specification</title> <p>The EUserHL library is
+a general purpose user library that provides a usability layer to hide away
+some of the complexities of Symbian platform. </p> <p>The new <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> class
+provides a self-managing, auto-extending wrapper around RBuf which removes
+the need for the application developer to pre-declare the maximum length of
+the descriptor. The class can be used as a local or member variable and is
+automatically cleaned up when it goes out of scope. <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> provides
+the essentially the same API as RBuf, but the RBuf methods that panic if the
+descriptor runs out of space are replaced by leaving variants. These leaving
+variants attempt to re-allocate the string buffer behind the scenes to make
+room for the new data and leave if no memory can be allocated. </p> <p>The
+template classes for automatic resource management allow application developers
+to write robust code in fewer lines and hide away exception handling code.
+Class templates are provided for automatically managing local and member variables
+of pointer, reference, handle and generic types. The library provides the
+ability for the application developer to define a clean up strategy of their
+choosing to free managed resource when the managing object goes out of scope. </p> <p>The
+new LString and automatic resource management classes introduce a new L-Class
+idiom. The L prefix denotes that construction, copying, passing and returning
+by value, assignment, and manipulation via operators should all be considered
+potentially leaving operations unless otherwise explicitly documented. Code
+that uses L-Classes should be written accordingly, in leave-safe style. </p> <p>The
+new RAII concepts introduced through the LClass Idiom provide the means for
+the safe handling of single phase construction. The automatic resource management
+classes may be used as the basis for implementing leave-safe single-phase
+construction, since fully initialized data members protected in this way will
+get destroyed if their containing classes leave during execution of their
+constructors. </p> </section>
+<section><title>Architectural Relationship</title> <p>EUserHL provides three
+technology areas, namely strings, automatic resource management, and single
+phase construction. The class LString is derived from RBuf and HBufc is a
+part of RBuf. </p> <p>EUserHL is a plugin to three <xref href="GUID-8919270A-B5CE-302D-B7CE-3A4680D5E8CF.dita"><apiname>EUser</apiname></xref> interfaces
+including strings, which are instances or buffers, <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref>, <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> and <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref>. </p> <p><b>Description</b> </p> <p>EUserHL makes developing for Symbian platform easier by removing
+some of the Symbianisms and making things like string handling, resource management
+and error handling and object creation more familiar with standard C++ practices. </p> <p>EUserHL's
+functionality is split into the following: </p> <ul>
+<li id="GUID-74905CAF-AB9E-54CF-844A-27F5DF2FACA4"><p>Strings </p> </li>
+<li id="GUID-311DEC6F-5258-5BE7-BCC1-54FEF4D74B9D"><p>Automatic Resource Management </p> </li>
+<li id="GUID-B117718F-9556-5A4C-885C-DAF089CE7213"><p>Single Phase Construction </p> </li>
+</ul> <p><b>Strings</b> </p> <p>The string handling classes provide self managing
+resizable descriptors that are familiar to C++ developers. They provide a
+std::string like interface. </p> <p>There are four variants of strings available: </p> <ul>
+<li id="GUID-B9A77F84-3BAD-500D-BDFC-15428D5542DE"><p> <xref href="GUID-C5A68FFA-9AED-319D-B29D-723F9AA7FFD7.dita"><apiname>LString16</apiname></xref> is
+derived from an <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita"><apiname>RBuf16</apiname></xref> and replaces the <xref href="GUID-9A863E0A-E588-367C-9444-C13AC0D44234.dita"><apiname>TText16</apiname></xref>. </p> </li>
+<li id="GUID-D68149F2-A283-5500-80EF-508A1FAE0091"><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> is
+a syntatical typedef of <xref href="GUID-C5A68FFA-9AED-319D-B29D-723F9AA7FFD7.dita"><apiname>LString16</apiname></xref>. </p> </li>
+<li id="GUID-FACEC1E3-5EAF-52FA-A30F-99836F729719"><p> <xref href="GUID-C788743B-AD3C-3508-83CD-942EFA243B26.dita"><apiname>LString8</apiname></xref> is
+derived from an <xref href="GUID-955061A8-A83E-39E5-8745-8FAC7DEA7BCC.dita"><apiname>RBuf8</apiname></xref> and replaces the <xref href="GUID-0DC8E9A8-8B5A-3566-B1C5-27B6E4F47F3C.dita"><apiname>TText8</apiname></xref>. </p> </li>
+<li id="GUID-33A50E40-C955-5FB6-BD38-7317916B2D2B"><p> <xref href="GUID-1FF260A8-442C-34C6-A609-2A3E14EC1E19.dita"><apiname>LData</apiname></xref> is
+a syntatical typedef of <xref href="GUID-C788743B-AD3C-3508-83CD-942EFA243B26.dita"><apiname>LString8</apiname></xref>. </p> </li>
+</ul> <p><b>String Management</b> </p> <p>The following functions are provided
+to manage these strings: </p> <ul>
+<li id="GUID-A586D455-19D0-54EF-8E69-4C0EC09C8FBC"><p> <xref href="GUID-B7878C32-D093-3B15-A5B6-E91DA3A0961E.dita"><apiname>SetMaxLengthL()</apiname></xref> function
+- To allocate an exact allocated size </p> <codeblock id="GUID-AFFCF3B0-0D8A-501F-831E-79EECA09853E" xml:space="preserve">s.SetMaxLengthL(2 * KMaxFileName);</codeblock> </li>
+<li id="GUID-6DC23DC6-9A31-5D1E-B938-9E25568FFDA2"><p> <xref href="GUID-A3EE1898-D58C-3C15-8A98-7BEF85963AEB.dita"><apiname>ReserveFreeCapacityL()</apiname></xref> function
+- To reserve extra free space in preparation for an operation that adds characters
+to the string. </p> <codeblock id="GUID-008D9C13-D9AE-5D97-B97E-D96B5541603B" xml:space="preserve">s.ReserveFreeCapacityL(4);</codeblock> <p> </p> </li>
+<li id="GUID-3E69FB9B-CAB9-507C-8EE5-5EF4D3D745F5"><p> <xref href="GUID-E016AEA6-D901-3AF4-AE52-CBE4308E962C.dita"><apiname> Compress()</apiname></xref> function
+- To trade-off speed efficiency for space efficiency. </p> <codeblock id="GUID-C2EE7BC3-F9A1-5B56-8D25-C4021BE62876" xml:space="preserve">s.Compress();</codeblock> </li>
+<li id="GUID-AEFBDD85-2E9C-5593-94D2-19A453587407"><p> <xref href="GUID-ABC0096D-A6DD-3AAA-8AA6-57474737983A.dita"><apiname>Reset()</apiname></xref> function
+- To release the buffer used by the string without destroying the string itself. </p> <codeblock id="GUID-E7BF411C-9954-5160-A08E-1DF767DB6A79" xml:space="preserve">s.Reset();</codeblock> </li>
+</ul> <p><b>Automatic Resource Management</b> </p> <p>Automatic resource management
+improves on the Symbian platform memory management syntax by providing a number
+of macros that hide the complexities of the clean-up stack. Once implemented,
+it provides automatic, exception-safe clean-up when the object goes out of
+scope. </p> <p>There are two variants of this simplified memory management
+syntax: </p> <ul>
+<li id="GUID-E1E27B21-9BBB-5703-93D2-D7150EB5C58F"><p> <b> LCleanedup</b> -
+LCleanedup manages local variable clean-up routines. There are five LCleanedup
+class templates. For more information, see <xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita#GUID-B007634D-4D55-528A-8B85-6120C633AC8B/GUID-760B7568-6A4D-5D6E-BC71-9651DF4F4E30">Key
+EUserHL Classes</xref>  </p> </li>
+<li id="GUID-8674C50E-B1B7-5A66-AC75-ABACDEDA08D2"><p> <b>LManaged </b> -
+LManaged manages member variable clean-up routines. There are five LManaged
+class templates. For more information, see <xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita#GUID-B007634D-4D55-528A-8B85-6120C633AC8B/GUID-760B7568-6A4D-5D6E-BC71-9651DF4F4E30">Key
+EUserHL Classes</xref>  </p> </li>
+</ul> <p><b>Single Phase Construction</b> </p> <p>Object initialisation is
+simplified by single phase construction. Automatic resource management classes
+allow the implementation of leave-safe single-phase construction. Fully initialised
+data members are destroyed if their containing classes leave during constructor
+execution. </p> <p>EUserHL provides the <xref href="GUID-8BB41BAD-5ED4-32E5-B4B4-312E472297CB.dita"><apiname>CONSTRUCTORS_MAY_LEAVE</apiname></xref> macro,
+which is used to enable single phase construction. This macro provides memory
+management capabilities for leaving constructors that would otherwise trigger
+memory leaks. </p> <p><b>OR_LEAVE Macro</b> </p> <p>The OR_LEAVE macro is
+a convenience macro that replaces <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> function
+and allows auxiliary error checking code to be deemphasized in most cases. </p> </section>
+<section id="GUID-760B7568-6A4D-5D6E-BC71-9651DF4F4E30"><title>Key EUserHL
+Classes</title> <p>The key classes that make up the EUserHL are as follows: </p> <table id="GUID-2F029AA2-1BBB-5426-AD94-1192D187B079">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Classes</b>  </p> </entry>
+<entry><p> <b> Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-33268411-26FD-39EF-9D21-A046023BFAE9.dita"><apiname>TClose</apiname></xref>  </p> </entry>
+<entry><p>Calls the <xref href="GUID-01D2AF56-21E1-3FF3-BF86-0C356A1658EF.dita"><apiname>Close()</apiname></xref> member function of the managed
+class </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-05EC3007-E3F2-3FA3-B07D-618EDC2EB55F.dita"><apiname>TRelease</apiname></xref>  </p> </entry>
+<entry><p>Calls the <xref href="GUID-7F8FDB43-B847-3AFF-A78F-48F2E3DBFDC2.dita"><apiname>Release()</apiname></xref> member function of the managed
+class. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9E005556-76E5-306B-982C-B2C2BC268EB8.dita"><apiname>TDestroy</apiname></xref>  </p> </entry>
+<entry><p>Calls the <xref href="GUID-38F49D2C-2798-37DB-82CC-A49EAB22B829.dita"><apiname>Destroy()</apiname></xref> member function of the managed
+class. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B5DB195A-C656-3BF6-8DCD-22AB6674B8F6.dita"><apiname>TFree</apiname></xref>  </p> </entry>
+<entry><p>Calls the <xref href="GUID-14C80D6F-A201-397C-B3C1-642FEDC7C9DC.dita"><apiname>Free()</apiname></xref> member function of the managed
+class. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-2455FD29-1396-38DE-B90D-F8099DCCA524.dita"><apiname>TResetAndDestroy</apiname></xref>  </p> </entry>
+<entry><p>Calls the <xref href="GUID-AB4E9ABC-A09D-3974-8C1A-D7F7E9CBA2A6.dita"><apiname>ResetAndDestroy()</apiname></xref> member function of
+the managed class. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-62F589DD-DFBB-3112-A9A7-D3943871E7AE.dita"><apiname>TPointerDelete</apiname></xref>  </p> </entry>
+<entry><p>Deletes the managed pointer </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-5073F469-386E-3B06-BAD5-16A910D74BD9.dita"><apiname>TPointerFree</apiname></xref>  </p> </entry>
+<entry><p>Calls <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-A1B58B92-E9B2-3C0F-89B3-BA3230A1E14F"><apiname>User::Free()</apiname></xref> with the managed pointer </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-428DE7ED-E76A-3A75-AA4D-185179A36D1E.dita"><apiname>TArrayDelete</apiname></xref>  </p> </entry>
+<entry><p>Deallocates the array using array delete </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-166B7262-50A5-3C2E-B7DD-3291F96B31AA.dita"><apiname>LManagedPtr</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for pointers </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-2F473656-DD2D-33A7-8BC8-BA2C3337849C.dita"><apiname>LManagedRef</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for object references. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-FCBCB7A9-AF28-3591-A54D-8AF354E01D11.dita"><apiname>LManagedHandle</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for resource handles. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B0B92876-6BE7-3B34-B19D-4B5E318F7BED.dita"><apiname>LManagedArray</apiname></xref>  </p> </entry>
+<entry><p>Deletes the managed array. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-577F5B2D-0A1D-31AA-84EB-BE0B39F5A624.dita"><apiname>LManagedGuard</apiname></xref>  </p> </entry>
+<entry><p>Generic automatic memory management </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-BD4E0CC4-75A2-306D-A860-06B4138F86EB.dita"><apiname>LCleanedupPtr</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for pointers. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-83938A18-23EF-301A-9D40-C89AEDB5DFF0.dita"><apiname>LCleanedupRef</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for object references. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9ECEAE0C-3D5A-3B1F-88DD-28B37CE9950D.dita"><apiname>LCleanedupHandle</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for resource handles. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A7B3BEBB-3805-3149-A9DB-075FFF3DED3F.dita"><apiname>LCleanedupArray</apiname></xref>  </p> </entry>
+<entry><p>Automatic memory management for arrays. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-E6D04730-8064-3846-99E4-FB638C5EAA65.dita"><apiname>LCleanedupGuard</apiname></xref>  </p> </entry>
+<entry><p>Generic automatic memory management </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Using EUserHL</title> <p>EUserHL may be used to: </p> <ul>
+<li id="GUID-0BCE773E-470B-5C83-91EB-0A8B4EE31F66"><p><xref href="GUID-B419D99E-8312-5336-9693-3ED8DFCD0559.dita"> Automatic
+Resource Management Tutorial</xref>  </p> </li>
+<li id="GUID-1052381F-0F5C-511D-B11C-C65AFBBE03E3"><p><xref href="GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482.dita">Automatic
+Resource Management Class Templates Tutorial</xref>  </p> </li>
+<li id="GUID-B0ED575A-01F1-5F81-A798-AC6978799901"><p><xref href="GUID-3799F0DA-B99C-55BB-B44F-63B971DF1865.dita"> Cleanup
+Strategy Tutorial</xref>  </p> </li>
+<li id="GUID-440F2390-D2BD-5803-9EC1-1FEAC03DA44C"><p><xref href="GUID-7984F8F7-DC7B-56E0-A5DA-071A3D87714A.dita">LString
+Tutorial</xref> </p> </li>
+<li id="GUID-AE5A4093-20C9-5182-9603-28ECE6634011"><p><xref href="GUID-5872329F-2B52-5F52-83C1-205F2F933877.dita">OR_LEAVE
+macro Tutorial</xref>  </p> </li>
+<li id="GUID-971A54D9-EA95-5669-A079-A09963D69FD7"><p><xref href="GUID-B9F07057-4B31-5FE8-BE4C-98CC8151CD29.dita">Single
+Phase Constructor Tutorial</xref>  </p> </li>
+</ul> </section>
+<section><title>See Also</title> <p><xref href="GUID-ECE93783-F571-51DA-AB92-EDDA8618A85C.dita">EUser
+High Level Library Concepts</xref>  </p> <p><xref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita">EUser
+High Level Library Tutorials</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B01427FA-B857-532B-B2F3-BD90CA042233.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B01427FA-B857-532B-B2F3-BD90CA042233" xml:lang="en"><title>DND</title><shortdesc>DND provides the DNS domain name resolution daemon. It is owned
+and started by the TCP/IP protocol stack, TCP/IPv4/v6 PRT. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65" xml:lang="en"><title>SendAs
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section describes the overview and functions provided by the SendAs
+component. </p>
+<section><title>Purpose</title> <p>The SendAs component provides a high-level
+APIs for client applications that wish to include a <b>SendAs</b> menu to
+allow users to send content through any of the supported message types. It
+acts as a wrapper that allows access to the common functionality of email,
+SMS, and OBEX components. </p> <p>For example, SendAs allows a word processor
+document to be sent as an email, or a contact as a vCard (either attached
+to an email or as an SMS). </p> </section>
+<section><title>Key terms</title> <dl>
+<dlentry>
+<dt>SendAs Server</dt>
+<dd><p>The server that maintains and controls access to all the SendAs entries. </p> </dd>
+</dlentry>
+<dlentry>
+<dt>Message Type Module (MTM)</dt>
+<dd><p>A group of components that together provide message handling functionality
+for a particular protocol. </p> </dd>
+</dlentry>
+</dl> </section>
+<section><title>Architecture</title> <p>The main client-side API is the <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> class.
+Client applications use this to connect to the SendAs Server. </p> <p>Client
+applications create messages using the <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> API.
+Opening an <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> object on SendAs Server session
+creates a SendAs message in the SendAs Server. This allows client applications
+to create multiple messages concurrently. </p> <p> <b>Important:</b> There
+is no exposure to Message Server APIs on the client-side. The SendAs Server
+encapsulates the Message Server completely. </p> <fig id="GUID-4B2E7B20-8C11-5E21-ABA1-AA01129A32DC">
+<title>              SendAs architecture            </title>
+<image href="GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e263086_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-24801AA6-6CDE-584F-A233-F7B68C1C59E3"><title>SendAs Server</title> <p>The <xref href="GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita">SendAs Server</xref> maintains
+all SendAs entries and controls the access to a Message Store. It allows client
+applications to create messages in the Drafts folder of a Message Store. The
+SendAs APIs also allow a client application to launch an appropriate message
+editor for a given message type. They support two methods of sending messages:
+confirmed or unconfirmed send. A confirmed send requires a confirmation by
+the UI MTM; typically it queries the phone user. An unconfirmed send does
+not require confirmation by the UI MTM. </p> <p>The following are the key
+functions of SendAs Server : </p> <ul>
+<li id="GUID-8235CD94-6D3E-5728-850D-4153386263F6"><p>Get a list of the names
+of the MTMs that have the required capabilities. </p> </li>
+<li id="GUID-946F453E-BAEA-5035-AA6D-2B4AE7C2BCB0"><p>Get a list of the services
+that can be used with the chosen MTM. </p> </li>
+<li id="GUID-A1E21B0F-AAA7-57B3-850D-BB52CEDD74C4"><p>Create a message, define
+the body and attachments for that message, without forcing the client application
+to start any message-specific user interface. </p> </li>
+<li id="GUID-FE2A9EC0-4442-5294-A4FC-F8D2036353C1"><p>Store the message so
+that it is ready for sending from the device next time it is connected to
+the appropriate service. </p> </li>
+<li id="GUID-0E735F08-EAA7-5FBF-A50A-F1FDEB8347AA"><p>Send the message. </p> </li>
+<li id="GUID-7D0587B2-CCD8-54FE-B3D3-F8D74334B292"><p>Start the editor for
+the message type. </p> </li>
+<li id="GUID-F638D1BC-E4D1-5FF7-9142-95EA38E55CBD"><p>Allow client applications
+to query the message type. </p> </li>
+</ul> </section>
+<section><title>API summary</title> <p>The following are the two main SendAs
+Server classes: </p> <ul>
+<li id="GUID-7C72A929-BE6C-557F-A1BB-5923F97573AE"><p>The <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> class
+is the main interface to the SendAs Server. </p> </li>
+<li id="GUID-52BF638C-7C93-5F44-A0DB-4EB7651EF837"><p>The <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> class
+encapsulates creating and sending a message. It requires a connected <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> session. </p> </li>
+</ul> </section>
+<section><title>Typical use cases</title> <p>The <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> class
+is used for the following tasks: </p> <ul>
+<li id="GUID-0A747A06-DF16-53D2-9B36-A5C0CC9BB538"><p>Connecting to and disconnecting
+from the SendAs Server </p> </li>
+<li id="GUID-D5969E75-99AC-5ED1-A05A-719E60782FC3"><p>Querying the message
+type registry </p> </li>
+</ul> <p>The <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> class is used for the following
+tasks: </p> <ul>
+<li id="GUID-E9F965AB-9B58-5EF0-950D-5AA56FE38927"><p>Creating and managing
+a SendAs message </p> </li>
+<li id="GUID-E343398A-7261-5D21-BADF-96D676A41F81"><p>Launching a message
+editor for the created SendAs message </p> </li>
+<li id="GUID-15195205-3175-5597-9CF0-E70B50F674DD"><p>Modifying a SendAs message </p> </li>
+<li id="GUID-9EED6F4B-83F8-524F-896A-808725A0A729"><p>Sending a SendAs message </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita"><linktext>SendAs Server</linktext>
+</link>
+<link href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita"><linktext>SendAs Example
+Code</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2" xml:lang="en"><title>Scalability</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The term <i>scalability</i> refers to the ability of an application
+UI to function as designed in mobile devices with different screen resolutions
+or orientations. For example, in the figure below, the UI scales to fit both
+portrait and landscape orientations.</p>
+<fig id="GUID-573B32DC-5C53-47B2-8239-AA038E945E81"><title>Scaling</title><image href="GUID-5F9E2762-855A-4DE6-A11B-A5F0D51E19D9_d0e42268_href.png"></image></fig>
+<p>When you enable scaling in your application, you allow your application
+to support the different display sizes, resolutions, and layouts for different
+devices based on the Symbian platform. The Symbian platform provides APIs
+and other support to enable scaling in applications. Some scaling issues are
+handled by the application framework if support is enabled, while other issues
+need to be handled by the application. The details of what can be handled
+where depend on the nature of your UI architecture. A general rule of thumb
+is that the greater the degree of customization in your application, the more
+you need to handle scalability issues in the application.</p>
+<p>You are not required to enable scaling in your applications, although
+it is recommended as it enhances usability for mobile device users.</p>
+<p>The following issues should be kept in mind when enabling your application
+for scaling:</p>
+<ul>
+<li><p>Layout information should not be hard-coded.</p>
+<itemgroup>
+<p> The Symbian platform provides the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classAknLayoutUtils.html" format="application/java-archive"><parmname>AknLayoutUtils</parmname></xref> class
+for building layouts from resource files.</p>
+<p>Note that you also need to <xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">override <parmname>CCoeControl::HandleResourceChange</parmname> and <parmname>CEikAppUi::HandleResourceChangeL</parmname></xref> in your
+application to draw your application again in the event that the orientation
+of the display changes.</p>
+</itemgroup>
+</li>
+<li><p>Scalable fonts should be used.</p>
+<itemgroup>
+<p>The Symbian platform provides methods in the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classAknLayoutUtils.html" format="application/java-archive"><parmname>AknLayoutUtils</parmname></xref> for
+using logical fonts from an enumeration in the avkon.hrh file.</p>
+</itemgroup>
+</li>
+<li><p>Scalable icons should be used.</p>
+<itemgroup>
+<p>Scalable icons are based on SVG Tiny (SVG-T) format <xref href="GUID-D76B1001-BAF5-4557-A07E-61065523ECBE.dita">graphics</xref>.</p>
+</itemgroup>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e188712_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2"><title>Advanced Audio Adaptation Framework Technology Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides additional information about the Advanced Audio Adaptation Framework. </p> <section><title>Purpose</title> <p>The Advanced Audio Adaptation Framework (A3F) provides a common interface for accessing audio resources, playing tones, and configuring audio for playing and recording. </p> </section> <section><title>Understanding A3F</title> <p>A3F functionality is provided by the <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita"><apiname>CAudioContextFactory</apiname></xref> class. <xref href="GUID-C4AD7B75-9027-3F62-889C-ADEF5E6DBC73.dita"><apiname>CAudioContextFactory</apiname></xref> is responsible for creating audio contexts. The Audio Context API (<xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioContext</apiname></xref>) maintains all audio components created in a context, where audio components are instances of the <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>MAudioStream</apiname></xref> and <xref href="GUID-0536EF5D-3DA6-3F30-A404-52FE9E21B359.dita"><apiname>MAudioProcessingUnit</apiname></xref> classes. </p> <p>An <xref href="GUID-0536EF5D-3DA6-3F30-A404-52FE9E21B359.dita"><apiname>MAudioProcessingUnit</apiname></xref> is created in a context by giving the type of the processing unit such as codec and source sink. <xref href="GUID-0536EF5D-3DA6-3F30-A404-52FE9E21B359.dita"><apiname>MAudioProcessingUnit</apiname></xref> allows extension interfaces to set additional audio processing unit settings. </p> <p>The Audio Stream API (<xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>MAudioStream</apiname></xref>) is an audio component that links together processing units into an audio stream. <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>MAudioStream</apiname></xref> manages the audio processing state requested by the client and interacts with the audio processing units added to the stream. <xref href="GUID-C5B1FE01-DCFC-3CA5-931B-E371AEC918A6.dita"><apiname>MAudioStream</apiname></xref> provides runtime control over a stream's (composite) behaviour and lifetime management of the entities in a stream (whether the state of the stream is uninitialized, initialized, idle, primed, active or dead). For more information, see <xref href="GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita#GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2/GUID-28D6AB9C-8F4F-573A-853D-726138249390">Stream States</xref>. </p> <p>The Audio Context API allows a grouping notion for multimedia allocations. <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita"><apiname>MAudioContext</apiname></xref> groups component actions made inside a context. This means any allocation or loss of resources which occurs in any single audio component affects all of the components grouped in the context. </p> <p id="GUID-C13977B1-D855-5D46-913C-15059421C225"><b>The Commit Cycle</b> </p> <p>Changes made to an audio stream are handled in a transactional manner. If changes fail to be applied, then any other changes made to the stream are considered to fail also. The application of changes is dependent on a successful commit cycle. If there is a failure, a “rollback" mechanism is executed and the stream states are reverted to their previous state. </p> <p>The client requests changes through various <codeph>Set()</codeph> calls and then calls the <xref href="GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3.dita#GUID-67BE95B2-BE4A-32AF-8BDF-92FD8FBE6DC3/GUID-7011BDC1-C4D8-3BB5-9B7C-8729FADCE67E"><apiname>MAudioContext::Commit()</apiname></xref> function. The platform-specific implementation then decides whether the <codeph>Commit()</codeph> request is allowed, possibly dictates new values if needed, and then applies the changes. If successful, the client is informed through callbacks. If there is a need to modify the context because resources are needed in another context, then the platform-specific implementation can take the resources by pre-empting the context. In this case, the client is informed about the pre-emption. </p> <p>The following diagram shows this behaviour: </p> <fig id="GUID-18D00361-18E7-5A5C-B8C0-115E1D2DF29F"><title>
+                A3F Commit / Pre-emption Cycle 
+             </title> <image href="GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e304892_href.png" placement="inline"/></fig> <p><b>Observers</b> </p> <p>Most of the A3F API functions are asynchronous. For example, the functions <codeph>Foo()</codeph> or <codeph>SetFoo()</codeph> are followed with <codeph>FooComplete(Tint aError)</codeph> or <codeph>FooSet(Tint aError)</codeph>. </p> <p>The following A3F observers are defined: </p> <ul><li id="GUID-11C7E019-8628-533E-ACAB-E7A7C4893C65"><p> <xref href="GUID-3336EC2B-4FB8-3FD0-A702-0CB50DE059B4.dita"><apiname>MAudioContextObserver</apiname></xref>  </p> <p>Informs with <codeph>ContextEvent()</codeph> about the commit cycle. Note that <codeph>ContextEvent()</codeph> is in the same thread context as the A3F client. </p> </li> <li id="GUID-1E628CBE-641F-54B2-B144-FFEC88AB2ECF"><p> <xref href="GUID-D2075F61-F6FA-3FAE-9FBB-20CEFE81334C.dita"><apiname>MAudioStreamObserver</apiname></xref>  </p> <p>Informs with <codeph>StateEvent()</codeph> about state changes </p> </li> <li id="GUID-611327B3-9278-5793-9BE2-072B898A5245"><p> <xref href="GUID-805E421D-9143-326D-9455-FF40205AA70A.dita"><apiname>MAudioCodecObserver</apiname></xref>  </p> <p>Informs about completion of setters and getters. </p> </li> <li id="GUID-CD6FC1B2-B581-5CD2-9355-8B3AF8681680"><p> <xref href="GUID-B235174E-E8AC-36EE-8BCC-F466EEB8E720.dita"><apiname>MAudioGainControlObserver</apiname></xref>  </p> <p>Informs about changes in gain or changes in maximum gain values. </p> </li> <li id="GUID-A46EF843-AD06-583E-8E1E-712CC0341421"><p> <xref href="GUID-C070F06A-E77A-3477-90A2-C2E38B0E823C.dita"><apiname>MAudioProcessingUnitObserver</apiname></xref>  </p> <p>Informs about any additional errors in audio processing units. </p> </li> <li id="GUID-178B9281-35A8-519A-A01A-920134606A87"><p> <xref href="GUID-BC675A52-D3B5-3F97-B986-8643A8FEFE59.dita"><apiname>MMMFAudioDataConsumer</apiname></xref>  </p> <p>Informs about recorded buffer to be ready for storing. Also informs the client if there is a buffer to be ignored. </p> </li> <li id="GUID-8F5E2944-DB55-5601-B150-490919C98C4E"><p> <xref href="GUID-5F500DE3-5253-326C-B94A-1CBD7C83C082.dita"><apiname>MMMFAudioDataSupplier</apiname></xref>  </p> <p>Informs about new buffer ready to be filled with audio data. Also informs the client if any requested buffer should be ignored. </p> </li> </ul> <p id="GUID-28D6AB9C-8F4F-573A-853D-726138249390"><b>Stream States</b> </p> <p>Clients using A3F should be aware that requested audio resources can be lost at any time while they are being used. A client with a higher importance can cause requests for resources to be denied or available resources to become unavailable. In these cases, the commit cycle informs the client through pre-emption events and the resulted stream state is usually demoted to the highest non-disturbing state. </p> <p>The possible audio stream states are described in the following table: </p> <table id="GUID-33D9A149-C1CF-52F0-87E1-234CF93F677E"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>State</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>EUninitialized</codeph>  </p> </entry> <entry><p>This is the state of the chain before it is initialized. However, the settings in the logical chain cannot be related to the adaptation because no adaptation has been selected yet. </p> </entry> </row> <row><entry><p> <codeph>EInitialized</codeph>  </p> </entry> <entry><p>This state is set after a successful initialization request. </p> <p>The physical adaptation has been selected but may not be fully allocated. </p> <p>There should be no externally visible buffers allocated at this point </p> <p> <b>Note</b>: For zero copy and shared chunk buffers, a stream in the <codeph>EInitialized</codeph> state should not require buffer consumption. This is an important issue if the base port only has 16 addressable chunks per process. </p> <p>In terms of DevSound compatibility, some custom interfaces are available at this point (although others may require further construction before they are available). </p> </entry> </row> <row><entry><p> <codeph>EIdle</codeph>  </p> </entry> <entry><p>All the chain resources are allocated. However, no processing time (other than that expended to put the chain into the <codeph>EIdle</codeph> state) is consumed in this phase. </p> <p>In the <codeph>EIdle</codeph> state, any existing allocated buffers continue to exist. </p> <p>The codec is allocated in terms of hardware memory consumption. </p> <p>A stream in the <codeph>EIdle</codeph> state can be ‘mid-file position’. There is no implied reset of position or runtime settings (that is, time played) by returning to <codeph>EIdle</codeph>. </p> </entry> </row> <row><entry><p> <codeph>EPrimed</codeph>  </p> </entry> <entry><p>This state is the same as <codeph>EIdle</codeph> but the stream can consume processing time by filling its buffers. The purpose of this state is to prepare a stream such that it is ready to play in as short a time as possible (for example, low-latency for audio chains which can be pre-buffered). </p> <p>Note that once the buffer is full, the stream may continue to use some processing time. </p> <p>There will not be an automatic transition to the <codeph>EIdle</codeph> state when the buffer is full. If such behaviour is desired, the client must request it. </p> <p>There will not be an automatic transition to <codeph>EActive</codeph> when the buffer is full. If such behaviour is desired, the client must request it. </p> </entry> </row> <row><entry><p> <codeph>EActive</codeph>  </p> </entry> <entry><p>The chain has the resources as <codeph>EIdle</codeph> and <codeph>EPrimed</codeph> but also has started to process the actions requested by the client. </p> <p> <b>Note:</b> A chain can be in the <codeph>EActive</codeph> state and performing a wide range of operations. However the semantics are that it is processing the stream and that it is consuming both processing and memory resources. </p> </entry> </row> <row><entry><p> <codeph>EDead</codeph>  </p> </entry> <entry><p>The stream can no longer function due to a fatal error. The logical chain still exists, but any physical resources should be reclaimed by the adaptation. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following diagram shows the stream states: </p> <fig id="GUID-1FA73F08-1C43-57AA-AEFA-DDEDD9464DDA"><title>
+                A3F State Machine 
+             </title> <image href="GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e305210_href.png" placement="inline"/></fig> </section> <section><title>A3F Tutorials</title> <p>The following tutorials are provided to help you create A3F solutions: </p> <ul><li id="GUID-EC27BD5D-A1DB-53E7-87F1-4A0AD6280F8B"><p><xref href="GUID-931207BE-3561-562D-8F67-0FB52CFF83CD.dita">Audio Component Framework Tutorial</xref>  </p> </li> <li id="GUID-4BBFA92A-F174-57A6-B512-9F0D56C0EA6D"><p><xref href="GUID-2A543E1C-F3DE-59EF-8A43-1B655F367FBC.dita">Audio Processing Tutorial</xref>  </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita">Advanced Audio Adaptation Framework Overview</xref> </p> <p><xref href="GUID-174D98FF-6782-564E-9FDF-1AE32F770591.dita">Sound Device Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0492A3A-A7F6-5F41-AE5C-4B31AC85769B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B0492A3A-A7F6-5F41-AE5C-4B31AC85769B" xml:lang="en"><title>How to
+construct an iterator</title><shortdesc>This document describes how to create an iterator for a doubly
+linked list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To create an iterator for a doubly linked list of <codeph>CMyClass</codeph> elements,
+defined as:</p>
+<codeblock id="GUID-B8421BFF-00DF-5BFB-9B6D-6FB9AED822C2" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TDblQueLink iDlink;
+    ...
+    };</codeblock>
+<p>first construct a header:</p>
+<codeblock id="GUID-CAD57B34-4E72-54BE-AE08-2D51C0EA3A24" xml:space="preserve">TDblQue&lt;CMyClass&gt; queHeader(_FOFF(CMyClass,iDlink));</codeblock>
+<p> and then construct the iterator. The iterator requires the header at construction
+time but the list can be empty:</p>
+<codeblock id="GUID-FD953418-DBCD-594B-AFD1-2BF6BA81E37E" xml:space="preserve">TDblQueIter&lt;CMyClass&gt; queIter(queHeader);</codeblock>
+<p>The <codeph>TDblQueIter</codeph> class takes a class template parameter
+that defines the type of object which is to form an element of the list.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5" xml:lang="en"><title>Toolbar
+API</title><shortdesc>The Toolbar API is used for enabling quick access to functions
+by displaying them in a toolbar.</shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A toolbar contains Avkon buttons. The toolbar supports touch, and can be
+with focus or without focus. It contains application-specific buttons (at
+least three) that launch application-specific commands. The toolbar content
+is application-specific, but you can choose whether the toolbar is displayed
+in an application view or not.</p>
+<p>The Toolbar API supports two types of toolbars: a fixed toolbar for touch
+UI, and a floating toolbar which can also be used in non-touch UIs.</p>
+<fig id="GUID-65384C58-D95F-4E3F-A3E8-41B2FBA237BB">
+<title>Fixed toolbar, floating toolbar, and toolbar extension</title>
+<image href="GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e48067_href.png" scale="90" placement="inline"></image>
+</fig>
+<p>The fixed toolbar doesn’t have focus, whereas the floating toolbar owns
+the focus and it can be used also with navigation and selection keys. By default,
+the floating toolbar owns the CBA buttons (<uicontrol>Select</uicontrol> and <uicontrol>Close</uicontrol>)
+but the floating toolbar can be defined as not having the CBA buttons with
+suitable flags. </p>
+<p>The toolbars are also located differently: a fixed toolbar has a permanent
+place in the layout but a floating toolbar can be freely located when it is
+defined as having a flexible position.</p>
+<p>The toolbar extension is a toolbar button that expands the fixed or floating
+toolbar. When the extension button is pressed, a grid of toolbar items opens
+up. The extension items can be used as actual toolbar items. </p>
+<p>The extension button itself looks like an ordinary toolbar button. The
+only difference is that there is a default icon for the extension button that
+is shown if the application does not change the icon itself.</p>
+<p>For user experience guidelines on the toolbar component, please see the <xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita">toolbar UI component description</xref>.</p>
+<section><p>For information on using the API, see <xref href="GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita">Enabling
+quick access to functions with a toolbar</xref>.</p><p>For the Toolbar API
+classes and header files, see Classes
+and Definitions.</p></section>
+<section><title>Constraints</title><p>This API is valid for all platforms
+running on Symbian OS 9.3 or later.</p></section>
+<section><title>Emulator support</title><p>This API is supported in the WINS/WINSCW
+emulator environment, with the following exception:</p><ul>
+<li><p>Tactile feedback is not supported.</p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e162640_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B088B74A-9A6D-4C72-9069-391ECAD38514.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B088B74A-9A6D-4C72-9069-391ECAD38514" xml:lang="en"><title>Communications
+security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Mobile devices support multiple communication methods, which in turn
+sets high requirements for security. A mobile device with various connection
+methods is exposed to a large number of attackers.</p>
+<p>If you are developing a networked application, consider the following
+scenarios and determine how to recover from them:</p>
+<ul>
+<li><p>The end user may lose network connection at any time or may
+not be able to establish a connection at all.</p></li>
+<li><p>A connection may pass over a public network, which may expose
+the data if it is not encrypted during transmission.</p></li>
+<li><p>Peer-to-peer connections are vulnerable to man-in-the-middle
+attacks. To prevent this, use strong authentication and proper ciphering methods.</p>
+</li>
+</ul>
+<p>For details on networking facilities, see the <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/c4536832-3dd0-45af-94be-1c4289cc3003/Symbian_OS_Overview_To_Networking_v1_0_en.pdf.html" scope="external">Symbian OS: Overview To Networking</xref> on Forum Nokia. For more information
+about communication with a mobile device, see the <xref href="GUID-02EE9C85-5942-40F7-BF60-B5D8B04B9AA6.dita#GUID-02EE9C85-5942-40F7-BF60-B5D8B04B9AA6/GUID-15C32932-3088-4FC9-BE83-2EC00FCEB694">Communication</xref> section. </p>
+<p>The following aspects of communication security are covered in this
+section:</p>
+<ul>
+<li><p><xref href="GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita">Secure
+Sockets</xref></p></li>
+<li><p><xref href="GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita">IPv4/IPv6
+dual-stack</xref></p></li>
+<li><p><xref href="GUID-21F92FAD-1EF1-4E36-9157-9214E7C6BB01.dita">Host
+name resolution</xref></p></li>
+<li><p><xref href="GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita">Local
+connectivity</xref></p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0C99FFF-DAF8-5E0D-9EE0-60CBAEF6E8D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B0C99FFF-DAF8-5E0D-9EE0-60CBAEF6E8D7"><title>Stream store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Most Symbian software platform programs use the stream store for their data requirements. </p> <p>Non-stream-stores are used in the following cases: </p> <ul><li id="GUID-688C970D-EE51-5DEA-9099-7CF68FDF66C4"><p>when the file format must be directly interchangeable with a non-Symbian software platform-format file </p> </li> <li id="GUID-59530811-14CB-5FD4-B397-BB8BA791A41D"><p>for resource files generated by the resource compiler </p> </li> <li id="GUID-CE19FD45-F71D-5987-BFF9-4EE6D6776B54"><p>for multi-bitmaps (<filepath>.mbm</filepath>) </p> </li> <li id="GUID-458DF1A8-5C41-527F-8644-F700A16C8280"><p>for executables, including DLLs </p> </li> </ul> <p>The stream store API provides both low- and high-level functions for manipulating data in stores, and provides several types of file store as concrete implementations. It is easier to program in an object-orientated way with the stream store, and various aspects of the Symbian software platform depend on it. </p> <p><b>See also </b> </p> <p> <xref href="GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita">Store streams</xref> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0D76734-1DB7-5465-91AE-BB3521599A75.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B0D76734-1DB7-5465-91AE-BB3521599A75"><title>Log Engine Tutorial Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This overview provides the information to perform various tasks that clients perform with Log Engine. </p> <section id="GUID-976D4359-6836-5501-8C53-1C2B0E577160"><title>Purpose</title> <p>The log engine stores events generated by operating system components, particularly telephony and messaging. This document explains how to use the log engine to create a record of events and how to create views of the events for display. </p> </section> <section id="GUID-61FEA51A-D091-59D7-A645-8E008E3A7C3E"><title>Introduction</title> <p>The log engine uses a client-server architecture. The log server is a permanent process maintaining event data and the log clients attach to it to add and retrieve data. When writing an application which uses the log engine you create a log client wrapped in a customised component. This component has two purposes. Firstly it causes the server to log events of a specified kind. Secondly it uses log filter and log view classes to extract and present the data appropriately. </p> <p>The log engine is designed to abstract from the details of how events are notified, stored and displayed. You do not need to know exactly how this functionality is implemented. </p> <p>The log engine is an interface to a database holding records of communication events. You do not need to know the implementation of the database, merely that the log engine has functionality to add, read, modify and delete records. </p> <p>Not all devices are equipped with logging functionality. You need to determine whether your application will only run on platforms with logging functionality guaranteed or else write the application so as to fail gracefully. For this reason the class <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> and its parent class <xref href="GUID-4A7D312F-A8C6-3663-8455-13FA73F1CFB5.dita"><apiname>CLogBase</apiname></xref> are often wrapped in a class <xref href="GUID-146D719E-BDD6-3F20-80B1-EDE09081A6EA.dita"><apiname>CLogWrapper</apiname></xref> which handles cases where logging functionality is absent. </p> <p>Logging calls are asynchronous. The application developer is responsible for maintaining the integrity of the log client session. A typical way of doing this is to maintain a queue of log events. </p> <p>The log engine provides limited configuration functionality. If you are involved in device creation and want to tune performance you need to know how to manage memory and configure the logging component explicitly: the topic is not covered in this document. </p> <p>The log engine models standard types of communication event by default. If your application involves non-standard functionality you need to know how to create user defined data types to represent non-standard events. </p> <p>The log engine uses the Symbian OS capabilities model of security. This means that your application must police its own security and you must therefore know the security capabilities required by each item of functionality. </p> <p>The purpose of the log engine is to provide data for a viewer application which displays information such as missed calls to the end user of the device. You do not need to know anything about the viewer, merely that it requires data views to be provided in certain data structures. </p> <p>The log engine gets updated by an observer component which notifies it of new communication events affecting either the data tables or the views created from them. You do not need to know the details of the interprocess communication, merely that an observer component exists and performs notifications. </p> </section> <section id="GUID-F0F5CEB4-7BFD-5C7E-AEAE-B9A5EAC306B3"><title>Log clients and log views</title> <p>The log engine API consists of two types of classes, the client classes and the view classes. The client classes exist to create logs and maintain and modify them. They are <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref>, <xref href="GUID-4A7D312F-A8C6-3663-8455-13FA73F1CFB5.dita"><apiname>CLogBase</apiname></xref> and <xref href="GUID-146D719E-BDD6-3F20-80B1-EDE09081A6EA.dita"><apiname>CLogWrapper</apiname></xref>. It is <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> which contains the actual functionality: the purpose of <xref href="GUID-4A7D312F-A8C6-3663-8455-13FA73F1CFB5.dita"><apiname>CLogBase</apiname></xref> and <xref href="GUID-146D719E-BDD6-3F20-80B1-EDE09081A6EA.dita"><apiname>CLogWrapper</apiname></xref> is to provide default functionality when logging functionality is not available. The view classes exist to filter the log data and prepare it for presentation in a viewer application. They are <xref href="GUID-3A3E6F09-0F78-38E1-95F5-00C743F41073.dita"><apiname>CLogViewEvent</apiname></xref> and <xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref>, which inherit from a class <xref href="GUID-F33ADAF2-FD57-3662-B3AC-1000B69289D6.dita"><apiname>CLogView</apiname></xref> which cannot be instantiated. </p> </section> <section id="GUID-D511597A-013F-5ECA-97C5-A75770575EFF"><title>Events and event types</title> <p>The log engine is designed to log events having to do with communications: messaging, telephony, email and so on. The class <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref> represents events of this kind: its member objects mainly have to do with types of communication. The class <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> contains information about the event type which a particular event belongs to. </p> <p><b>Log events</b> </p> <p>The <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref> class encapsulates data about communication events. </p> <ul><li id="GUID-0B904A94-48BE-5534-81C0-B3103B33EA06"><p>The ID is the unique identifier of the event. </p> </li> <li id="GUID-FC68C424-C8B8-51AC-96E0-498C59AEB905"><p>The remote party is the device originating or receiving the communication. </p> </li> <li id="GUID-E362093C-3618-5EF6-977C-9FA6FA9384EA"><p>The direction indicates whether the communication is incoming or outgoing. </p> </li> <li id="GUID-1007760C-A467-5697-8F5D-5EE586959B66"><p>The time of the event is the time at which it began. </p> </li> <li id="GUID-3D3A7537-1F54-5F36-AFD1-1B6D29B236E2"><p>The duration type is one of three constants: <xref href="GUID-8ADA7A0F-0A96-3B80-B09F-F01ACA7CB51C.dita"><apiname>KLogDurationNone</apiname></xref>, <xref href="GUID-F9F30026-EBA8-334C-B926-95886F9D0B82.dita"><apiname>KLogDurationData</apiname></xref> or <xref href="GUID-8F476C11-5DEA-3690-84D2-F3C56A5ECDEE.dita"><apiname>KLogDurationValid</apiname></xref>. You typically use them where the event being represented either has no duration, or has a duration of no relevance (such as a data transfer), or has a valid duration (such as a voice call). </p> </li> <li id="GUID-6184A320-07E4-5968-B92E-79619C4593ED"><p>The duration is the duration in seconds from the start of the event to the end. </p> </li> <li id="GUID-79D55852-1670-540D-901C-54EF22DC0A80"><p>The delivery status is one of a set of flags indicating whether the communication was successfully delivered. </p> </li> <li id="GUID-FF64F139-E294-5D35-97D5-FCDB41FF56AC"><p>The subject is a string to be displayed in the subject line of the viewer application. </p> </li> <li id="GUID-2F387309-992C-5E97-9C11-D579E2786E00"><p>The log link is the ID of the event in the calling application, as distinct from its ID in the log. </p> </li> <li id="GUID-D14F2BB8-EE85-57AE-B8C1-F5CEB0E039CF"><p>The description is a human readable description of the event type. </p> </li> <li id="GUID-485D6CB5-1433-5A4A-B9F6-2292F05BD878"><p>There is only one flag, <xref href="GUID-D593DD54-B0A6-38A2-BC17-5D4542343A67.dita"><apiname>KLogEventRead</apiname></xref>, which is set to true if the event has been read by a client. It can be cleared either by passing the constant <xref href="GUID-1FB349A5-F3D2-3D75-BB6A-9BA3AD1F30B6.dita"><apiname>KLogFlagsMask</apiname></xref> to the function <xref href="GUID-E6477727-53AA-3092-AB4E-54E2EC50C891.dita"><apiname>SetFlags()</apiname></xref> or by calling the function <xref href="GUID-AD7C319E-5ACA-3D1C-B000-AD45B388FA4E.dita"><apiname>ClearFlags()</apiname></xref>. </p> </li> </ul> <p><b>Log event types</b> </p> <p>The log engine API defines constants of type <xref href="GUID-530281E6-29FC-33F2-BC9B-610FBA389444.dita"><apiname>TUid</apiname></xref> representing the standard types of communication event which can be logged. </p> <ul><li id="GUID-DCCB5455-5251-5394-8E36-BB0493D230A2"><p> <xref href="GUID-5A0DEBDD-EE90-336A-8990-0C8E65D87B8D.dita"><apiname>KLogCallEventType</apiname></xref>: voice call </p> </li> <li id="GUID-345EF3F1-9FAA-530F-B13E-086333EB16B2"><p> <xref href="GUID-95C9EA37-216C-3012-8579-D27EDE985F37.dita"><apiname>KLogDataEventType</apiname></xref>: data call </p> </li> <li id="GUID-95B204BD-D1CD-528D-BCE4-2202C8B6C70A"><p> <xref href="GUID-1F4D6F37-7095-37D1-9CFD-4C612854F1D9.dita"><apiname>KLogFaxEventType</apiname></xref>: fax call </p> </li> <li id="GUID-D7A6070F-96ED-57B0-B4AC-16BD30182EEB"><p> <xref href="GUID-9939CC72-09CF-3AAE-A7B7-BCA1FC036BB7.dita"><apiname>KLogShortMessageEventType</apiname></xref>: SMS call </p> </li> <li id="GUID-355B1AF2-403D-5EF7-9656-E526E5C9FFAA"><p> <xref href="GUID-95E66461-EBD7-3843-AD05-D632AB113F2A.dita"><apiname>KLogMailEventType</apiname></xref>: email </p> </li> <li id="GUID-95FC2F4A-0D7F-5378-AF50-38F40440347F"><p> <xref href="GUID-EA11EA32-F6A1-3C57-8C20-98E9D98F5ED8.dita"><apiname>KLogTaskSchedulerEventType</apiname></xref>: task scheduler event </p> </li> </ul> <p>The log engine API provides the class <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> which acts on all events of a specified type. Its functions are: </p> <ul><li id="GUID-06AFACB8-A994-5A60-BD35-35D1054118FD"><p> <xref href="GUID-260722ED-60D9-37EB-A95C-6F0BF4692D97.dita"><apiname>Uid()</apiname></xref> and <xref href="GUID-05D6F7AA-878A-32D6-BD81-C8D30838FB71.dita"><apiname>SetUid()</apiname></xref> get and set the UID identifying the event type. </p> </li> <li id="GUID-480DAE38-65A8-52A1-ADCF-6B70ED1D08F4"><p> <xref href="GUID-E7339978-FFE8-3C38-818A-FEE7CBDAE34A.dita"><apiname>Description()</apiname></xref> and <xref href="GUID-37D64FF2-A036-3511-B7B3-54BC33DF0805.dita"><apiname>SetDescription()</apiname></xref> get and set the description in words of the event type. </p> </li> <li id="GUID-B6C7ACBC-080D-5295-8E1B-E0DCA546F3E2"><p> <xref href="GUID-D498B4D9-7106-396F-B750-CB7BFAB26851.dita"><apiname>LoggingEnabled()</apiname></xref> and <xref href="GUID-E366A706-736E-3530-88B3-26727B8D9C17.dita"><apiname>SetLoggingEnabled()</apiname></xref> get and set a flag which enables events of this type to be logged. </p> </li> <li id="GUID-F2C2D7A2-A0DE-59D3-BD25-0D794D7566F1"><p> <xref href="GUID-CD3C9BD5-1386-3CF5-A8F6-9BE1AE40689F.dita"><apiname>Copy()</apiname></xref> copies an existing event type. </p> </li> <li id="GUID-EB4393F4-02E7-5422-85C0-7B3FEC0D2D6A"><p> <xref href="GUID-B677E528-7C32-3483-8B30-F1CDC6875B03.dita"><apiname>InternaliseL()</apiname></xref> and <xref href="GUID-0304F040-A7C1-3911-ACA3-6A75FBDB8ACF.dita"><apiname>ExternaliseL()</apiname></xref> implement streaming input and output of an event type object. </p> </li> </ul> <p>You may need an event type not supplied with the log engine API, for instance if you are developing a new kind of messaging application. A new event type requires a new unique Id which must be allocated by Symbian Signed. Once you have that Id you can create a <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> and pass the Id to <xref href="GUID-05D6F7AA-878A-32D6-BD81-C8D30838FB71.dita"><apiname>SetUid()</apiname></xref> just like the standard event type constants. </p> <p>The main use of <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> is to enable or disable logging for all events of a particular type. You do this by creating a <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> object with its UID set to the relevant event type and calling its <xref href="GUID-E366A706-736E-3530-88B3-26727B8D9C17.dita"><apiname>SetLoggingEnabled()</apiname></xref> function with <xref href="GUID-781E8158-805B-3784-8FED-D7A191822FC3.dita"><apiname>ETrue</apiname></xref> or <xref href="GUID-A759CA2D-8327-348F-9337-4886E619D920.dita"><apiname>EFalse</apiname></xref> as argument. </p> <p>It is important to know that only an explicit call to the <xref href="GUID-E366A706-736E-3530-88B3-26727B8D9C17.dita"><apiname>SetLoggingEnabled()</apiname></xref> function of a <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> object will cause logging to take place. For instance if you create a new event type <xref href="GUID-C2D1CC20-9AF0-3B02-B42B-BE96534F44DE.dita"><apiname>myEventType</apiname></xref> and want such events to be logged, you have to call its <xref href="GUID-E366A706-736E-3530-88B3-26727B8D9C17.dita"><apiname>SetLoggingEnabled()</apiname></xref> function before logging will occur. </p> <codeblock id="GUID-F3C05730-5CB0-51A0-8975-311D64C21213" xml:space="preserve">    CLogEventType* myEventType = CLogEventType::NewL();myEventType-&gt;SetLoggingEnabled(ETrue);</codeblock> </section> <section id="GUID-5CE676D6-7F07-5C37-99F7-A17C2FC9185C"><title>Log engine and platform security</title> <p>The Symbian OS uses a capabilities model of security in which an application being called verifies that the calling application has the required security policies before returning data. This is important in connection with message logging which involves the end user's confidential information. When writing an application which incorporates logging functionality you must ensure that it has the capabilities to call the log engine APIs. </p> <p>To call a log client, a calling application must have the capabilities required by the event type of the event being accessed. This means that a call to <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita#GUID-51C67545-12BA-326D-BD8F-662B24C68ED2/GUID-034027BA-BD4B-331B-8F1D-1B5750FD2BCD"><apiname>CLogClient::GetEvent()</apiname></xref> must have the capability specified in the read policy of the event type, while calls to <xref href="GUID-91804418-6DCC-3ACF-BA1E-399B112285A3.dita"><apiname>AddEvent()</apiname></xref>, <xref href="GUID-C8F2B567-6B68-3460-9799-6658DF3771A8.dita"><apiname>ChangeEvent()</apiname></xref> and <xref href="GUID-EC15284E-B1CF-3DB6-87C1-E639F270E434.dita"><apiname>DeleteEvent()</apiname></xref> must have the capability specified in the write policy. To modify the event type by calling <xref href="GUID-1AC902E9-EAE0-329A-A69E-6823A317DEE8.dita"><apiname>AddEventType()</apiname></xref>, <xref href="GUID-966DB6EC-CE70-3F08-A4D1-30F76AF5A54F.dita"><apiname>ChangeEventType()</apiname></xref> and <xref href="GUID-FA3CA920-0F43-3B7C-8171-905BC8C8C2A4.dita"><apiname>DeleteEventType()</apiname></xref> a calling application requires the <xref href="GUID-7BA52F1C-159D-3F72-91A3-1A2B5870C48B.dita"><apiname>WriteDeviceData</apiname></xref> capability. No capability is required to call <xref href="GUID-BF3481A7-85D0-3431-81C8-905FF0D40887.dita"><apiname>GetEventType()</apiname></xref>. </p> <p>No security capability is required to access the view classes. </p> </section> <section id="GUID-4B5E20B7-5689-5AB1-B265-9C9956B32635"><title>Using filters when displaying a log</title> <p>An event view typically contains only a selection of items from the main log which satisfy the constraints of a filter. A <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref> has members representing the same information as a <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref> object but is used to select on data not modify it. (In the database implementation, a filter corresponds to the WHERE clause of a SELECT query.) An event view is empty when created. To initialise it you first create and initialise a <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref> object and then pass this as a parameter of the <xref href="GUID-409E06DF-141C-3352-8E31-87646F9C2DCA.dita"><apiname>SetFilterL()</apiname></xref> function of the event view. You may also want to initialise a view to satisfy any one of several filters, in which case you pass in a <xref href="GUID-84D55725-6357-3596-B1DE-3F3388884504.dita"><apiname>CLogFilterList</apiname></xref>: this is an array of several <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref> objects. You would do this, for instance, if you wanted to create a view to display events of several different event types such as voice mail, SMS and email, since a single <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref> only has one event type. </p> </section> <section><ol id="GUID-DB02C018-8542-5E49-AB88-44708F78AF3F"><li id="GUID-0A180E8B-8D5F-5C74-BCF3-24F5387B3F73"><p><xref href="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita">Configuring Log Engine </xref>  </p> <p>The clients must configure the Log Engine before using it. </p> </li> <li id="GUID-5920F750-32FE-537B-90E1-AA9A5814FF01"><p><xref href="GUID-2022F702-9899-5798-8932-D70119C7177D.dita">Setting Up A Log Engine Client</xref>  </p> <p>After configuring the log engine, a log engine client must be developed. </p> </li> <li id="GUID-2449AFDC-998A-51CF-A81C-B9209445895C"><p><xref href="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita">Maintaining Log Events</xref>  </p> <p>The client applications can then add event, event types and delete if necessary. </p> </li> <li id="GUID-B87FA355-BD1B-5595-8FD5-008D281A5D6A"><p><xref href="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita">Requesting Log Engine Notifications</xref> </p> <p>Client applications can receive notification from log engine to get events recorded by other applications. </p> </li> <li id="GUID-5E27A02E-D120-5410-A1F6-54909E9F8324"><p><xref href="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita">Displaying Log Events</xref>  </p> <p>Finally the client applications can then diaplay the log events to the user. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B0E6F296-1340-4458-B9F6-EDC13BBF20E9_d0e54374_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B0E6F296-1340-4458-B9F6-EDC13BBF20E9_d0e55123_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693"><title>How to use the SIP Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-DC93FFFF-1981-5EA1-9B88-E3CC56CCCEB7"><title>Protocols</title> <p>The following sections describe how to do the following: </p> <ul><li id="GUID-7E5B3D7B-45E4-543A-8219-A5C1C0D25913"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-AFD6AB5D-1B1B-53CB-ABC7-4585D9A91CE8">Starting the SIP Client</xref>  </p> </li> <li id="GUID-39810F58-A7EB-5F1C-96C6-4A2E62B263EB"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-42784C1C-600A-53AE-9AEB-463EBF34C636">Closing SIP Client</xref>  </p> </li> <li id="GUID-544748CF-463C-546B-A291-08D1C2887C01"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-AC90094E-BF4E-5C2B-81B2-EF9BF5603BA2"> Sending a SIP request</xref>  </p> </li> <li id="GUID-F71538DD-111C-5DFE-88A3-2E025E05429C"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-5E5EC61F-5AB3-55F6-9AB0-463D5D0876DA">Receiving a SIP request</xref>  </p> </li> <li id="GUID-CC881957-ACE4-597F-85B4-1859886B61E7"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-820D689F-6404-5E40-AAC2-A45ABECDBADC">Receiving a SIP request and creating a session</xref>  </p> </li> <li id="GUID-5FBBC17B-D4B7-51F3-8560-13F6730010B6"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-109B933C-1063-577F-9A58-BA809869A0DF">Registration</xref>  </p> </li> <li id="GUID-8E35F949-CC67-546C-9899-3A2C1BF8BBC1"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-E683488B-B7EA-5215-8476-8C39950AC21B">Creating a dialog with INVITE</xref>  </p> </li> <li id="GUID-3246EFA2-48AB-5D54-9E5C-E8095886FCCD"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-E4E6E0C2-7B0F-51AA-B1E3-282E8F728EDC"> Generating a '100 SIP response'</xref>  </p> </li> <li id="GUID-6E4E101D-8638-5AD8-B105-D5FD5D9ED6E5"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-C1ED4FC7-5DEB-5C5B-AE82-549D4577A9A9">Responding to a CANCEL request</xref>  </p> </li> <li id="GUID-010BA345-B521-54AC-8208-B0C5969BA87D"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-CB27D3C3-D28B-5081-B201-8C10DE60CF25">Sending a SIP request and responding to a HTTP Digest challenge</xref>  </p> </li> <li id="GUID-4A8CF777-7379-5AF6-90A9-B15480B2E67E"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-B882D001-CDE9-579F-8DDE-C087D8707C2E">Notification of a failed refresh</xref>  </p> </li> <li id="GUID-79F2A3B3-2CC0-52ED-903B-3D4855E4A274"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-DDD7FDBD-FBC9-5111-BE71-A71E6CCEFB2A">Error handling</xref>  </p> </li> <li id="GUID-AB416C57-9986-54AD-BB8A-7240D8FBCD7D"><p><xref href="GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita#GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693/GUID-0FC8038A-64AE-5E98-A9F9-ADBC6F05DF2B">Refreshing a Connection</xref>  </p> </li> </ul> </section> <section id="GUID-AFD6AB5D-1B1B-53CB-ABC7-4585D9A91CE8"><title>Starting the SIP Client</title> <p>To start the SIP Client: </p> <ol id="GUID-62B966F0-272C-5A03-9364-7685412436B0"><li id="GUID-626ACA6E-6CA9-5A3C-8582-EDEE7AE823D0"><p>Create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class. The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class creates a <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object and implements the callback functions defined by <xref href="GUID-C6FF4A83-0097-3A82-B4ED-802E1FEA05D1.dita"><apiname>MSIPObserver</apiname></xref>. The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object connects the client to a shared server. </p> <p> <b>Note:</b> The server is started if it is not active. This may take a short time while the server side resources are created and initialised. </p> </li> <li id="GUID-BEE4CC97-50C6-5681-ACEB-180CA59B0CD3"><p>Create an instance of the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> class to use an IAP. The <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> class must implement the callback functions defined by <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref>. The <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> class creates <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object. The <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object forms a sub-session between the client and the server. </p> </li> <li id="GUID-1B0B51F8-37DF-5495-AEEC-F49A6C7EE947"><p>Call the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-7F3A8623-2989-3CCE-BF0C-BA4717D29D64"><apiname>CSIPConnection::NewL()</apiname></xref> function to create an active connection. The <codeph>CSIPConnection::EActive</codeph> state indicates that the object can be used to send SIP messages and create registrations and dialogs. The current state is asked by calling <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-A1A6D679-936C-3156-BA7D-5CBC3E2DEF7F"><apiname>CSIPConnection::State()</apiname></xref>. The <codeph>MSIPConnectionObserver::ConnectionStateChanged(CSIPConnection::
+                EActive)</codeph> callback function is called. </p> </li> </ol> <p>The following illustration shows the sequence of events involved in starting the SIP Client API. </p> <fig id="GUID-86E80D26-544B-587A-B2FD-B15CF44E47B4"><image href="GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e313553_href.png" placement="inline"/></fig> </section> <section id="GUID-42784C1C-600A-53AE-9AEB-463EBF34C636"><title>Closing the SIP Client</title> <p>To close the SIP Client: </p> <ul><li id="GUID-9FA5F4F3-9403-5256-9B80-939042BB2A8A"><p>Delete the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object to close the connection to the SIP server. </p> </li> <li id="GUID-2C9F26A2-D5D1-585A-87C8-222A57D05F2F"><p>Delete the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object to close the sub-session between the client and the server. </p> </li> <li id="GUID-78A46553-52E1-57E3-BB0A-AEC70FC36F0F"><p>When the connection has been closed, operations on objects that depend on the connection fail with the <codeph>KErrSIPResourceNotAvailable</codeph> error code. </p> </li> </ul> <p>For example, if an application has <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> and <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> objects, and it deletes the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object, then subsequent attempts to use the <codeph>CSIPRegistrationBinding</codeph> object fails. This is because <codeph>CSIPRegistrationBinding</codeph> cannot communicate with the server side of the SIP stack without the <codeph>CSIPConnection</codeph> object. </p> <p>The following illustration shows the order for deleting SIP Client API objects. </p> <fig id="GUID-5C5F0C8E-76BD-56CC-AA9E-BECF035D1A9F"><image href="GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e313619_href.png" placement="inline"/></fig> </section> <section id="GUID-AC90094E-BF4E-5C2B-81B2-EF9BF5603BA2"><title> Sending a SIP request</title> <p>To send a SIP request: </p> <ul><li id="GUID-C92F9ADF-1BF5-5057-8851-0940E67A3C6A"><p>Create a <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> object and enter the required fields of the request. </p> </li> <li id="GUID-E69DA3E7-5C13-5D10-BD82-1D37AEE0EE8A"><p>Call the <codeph>CSIPConnection::SendRequestL(CSIPRequestElements*)</codeph> function to take control of the <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> objects and communicate the request to the server side of the SIP stack. </p> <p> <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname> CSIPConnection</apiname></xref> creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to the application. </p> </li> </ul> <p> <b>Note:</b>  <codeph>SendRequestL()</codeph> starts the server side processing of sending the MESSAGE request. This task takes time as address resolving and socket operations are done only after the <codeph>SendRequestL()</codeph> call is returned. If an error occurs after <codeph>SendRequestL()</codeph> returns, then the error is communicated to the application through one of the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-E4E56635-42BB-351A-8356-DB12B5BE24CC"><apiname>MSIPConnectionObserver::ErrorOccured()</apiname></xref> callback functions. An example of such a failure is failure to resolve the address. When <codeph>SendRequestL()</codeph> returns, the MESSAGE request is not yet sent to the network, and is being processed on the server side of the SIP stack. </p> <p>After <codeph>SendRequestL()</codeph> returns and the sending of a MESSAGE request is in progress on the shared server, there is no way for the application to cancel that operation. This also applies to other operation types. However the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita#GUID-059F9C3A-EA04-3295-912F-50444F073CE7/GUID-8F7BF1A8-75C4-39A1-BCB3-4E1F7CDE59CC"><apiname>CSIPClientTransaction::CancelL()</apiname></xref> function is used to send a CANCEL request after the application sends an INVITE request. </p> <p>When the SIP response is received from the server side, the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object: </p> <ol id="GUID-0DB00054-27E8-57BF-8BB0-7F8231C7627B"><li id="GUID-D207CF42-5B04-5625-8CF8-4EEAD3451542"><p>creates a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object to represent the SIP response </p> </li> <li id="GUID-7131D953-EFF6-5D31-B20F-64B56C968368"><p>attaches it to the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object </p> </li> <li id="GUID-72C682B2-05BE-58ED-B743-0554C9476CC2"><p>notifies the application through a call to one of the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-EE7CC7B8-CC03-3814-9177-CFBFBB043426"><apiname>MSIPConnectionObserver:: IncomingResponse()</apiname></xref> callback functions. </p> </li> </ol> <p>The application determines the kind of response received by accessing the <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object through <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref>. As the response is provisional, the application does not delete the <codeph>CSIPClientTransaction</codeph> object. A '200 response' is received later, and the application then deletes the <codeph>CSIPClientTransaction</codeph> object. </p> <p>Then, create a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object to represent the SIP response, attach it to <codeph>CSIPClientTransaction</codeph> and notify the application with <codeph>MSIPConnectionObserver::
+          IncomingResponse</codeph>. </p> <p>The following illustration shows the sequence of events involved in sending a MESSAGE request and receiving two responses to it. </p> <fig id="GUID-6724EF0B-9B98-5225-BABA-3967A5065711"><image href="GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e313765_href.png" placement="inline"/></fig> </section> <section id="GUID-5E5EC61F-5AB3-55F6-9AB0-463D5D0876DA"><title>Receiving a SIP request</title> <p>A standalone SIP request is received through an existing <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object. The <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> creates <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> objects before notifying the application through the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-2DF68D26-9787-3D00-B86F-1999D20E4981"><apiname>MSIPConnectionObserver::IncomingRequest()</apiname></xref> callback function. The <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> represent the incoming SIP request </p> <p>The <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object is passed to the <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> object through the callback function. The application retrieves information about the request from the <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object. </p> <p>To send a response, the application creates a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object and passes it to <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita#GUID-7E54C95E-5155-30B1-8169-A59778774403/GUID-2D5A77B6-114D-3A22-B622-5342BF235B67"><apiname>CSIPServerTransaction::SendResponseL()</apiname></xref>. This passes the response to the server side for further processing. When <codeph>SendResponseL()</codeph> is returned, the application no longer needs the <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object and deletes it. </p> <p>The following illustration shows the sequence of events involved in receiving a MESSAGE request and sending a response to it. </p> <fig id="GUID-8C9A8944-1150-52E2-A031-BA65F16191F4"><image href="GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e313840_href.png" placement="inline"/></fig> </section> <section id="GUID-820D689F-6404-5E40-AAC2-A45ABECDBADC"><title>Receiving a SIP request and creating a session</title> <p>The SIP stack receives a SIP INVITE request from the network acting as a User Agent Server (UAS) and creates an invite server transaction for the received request. The SIP stack sends a '100 SIP response' to the remote UA. After comparing the received request with the stored application capabilities, the SIP stack routes the received INVITE request to the chosen application. </p> <p>The application creates a <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> object and the SIP stack creates an instance of <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref>. The application sends a '200 SIP response' to the remote UA. The remote UA acknowledges the '200 SIP' response with ACK and creates a SIP session is between the local and remote UA. </p> <p>The following illustration shows the sequence of events involved in receiving a SIP request and creating a SIP dialog. </p> <fig id="GUID-8A8D96E1-99DC-5F11-847A-9D407212CA6E"><image href="GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e313865_href.png" placement="inline"/></fig> </section> <section id="GUID-109B933C-1063-577F-9A58-BA809869A0DF"><title>Registration</title> <p>An application creates a <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> object to initiate a registration. It then creates a <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> object, passing <codeph>CSIPRefresh</codeph> to it. </p> <p> <b>Note:</b> It is not mandatory to create a <codeph>CSIPRefresh</codeph> object. It is required if the registration is to be refreshed by the SIP stack. </p> <p>After the <codeph>CSIPRegistrationBinding</codeph> object exists, the application initiates the registration process by calling <codeph>RegisterL()</codeph> on the <codeph>CSIPRegistrationBinding</codeph> object. <codeph/>  <codeph>CSIPRegistrationBinding</codeph> forms a REGISTER request and communicates it to the server side of the SIP stack, it instantiates the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to the application. </p> <p>When the '200 SIP response' is received from the server side, <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> creates the <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object to contain the response, and then routes the response to <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref>. <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> attaches the response to <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref>. The application is informed about the response through one of the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-7DE6337F-4EAA-3AE4-B573-1F7E59EDCFE5"><apiname>MSIPConnectionObserver::IncomingResponse()</apiname></xref> callback functions. </p> <p>The application does not require the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and can delete it. The <codeph>IsContextActive()</codeph> finds out if the registration is successful. </p> <p>The following illustration shows the sequence of events involved in registering with a refresh and receiving a '200 OK response'. </p> <fig id="GUID-7F489E97-2ADE-5753-A03B-5600E4BD1C55"><image href="GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e313957_href.png" placement="inline"/></fig> </section> <section id="GUID-45BEF04F-64A3-5B29-8CE4-8B1F5CA0E64F"><title>Configuring the registration</title> <p>When registering an SIP connection, applications have two options to configure the registration : outbound proxy caching and expiration value removal. To set each of these options, call <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita#GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4/GUID-B3C68013-AF24-3529-8595-5CC9497F2E98"><apiname>CSIPRegistrationBinding::SetProperty()</apiname></xref> with the corresponding property constant, as explained below. </p> <p>The SIP stack resolves the IP address of the outbound proxy during registration. The default behavior is to resolve the address again for each SIP message sent using this registration context. However, you can also cache the address to optimise network traffic. If you set <xref href="GUID-9A7A7547-76EB-3CC7-9C3D-7F1C08A160D0.dita"><apiname>KSIPCacheOutboundProxyIP</apiname></xref> property to <codeph>ETrue</codeph>, the SIP stack reuses the proxy address that was resolved during registration. The proxy address is refreshed by successful REGISTER transactions, which always perform a DNS query. </p> <p>By default, the SIP stack sends the expiration value in the REGISTER request. In the '200 OK' answer to a REGISTER message, the registrar returns an expiration value that may be different from the value that was sent. The SIP stack validates the returned expiration value against the minimum and maximum expiration values: if the returned expiration value is out of range, the SIP stack uses the minimum value or the maximum value. </p> <ul><li id="GUID-478291AE-D709-5AF1-AE4A-F1C115F8BE7C"><p>The minimum expiration value is 30 seconds, to reduce network activity and battery consumption. </p> </li> <li id="GUID-A0C7C631-F4CF-5CC0-BAA7-236C939E87C8"><p>The maximum expiration value is the expiration value that you specify for the REGISTER request. By default, the maximum expiration value is 3600 seconds, to protect the application from DOS attacks that provide '200 OK' responses with a very high expiration value. </p> </li> </ul> <p>If you set <xref href="GUID-C0920ECB-95CC-3152-8D6F-C4751AA8271E.dita"><apiname>KSIPSendWithExpires</apiname></xref> to <codeph>EFalse</codeph>, the SIP stack does not send the application's expiration value in the REGISTER message. </p> </section> <section id="GUID-E683488B-B7EA-5215-8476-8C39950AC21B"><title>Creating a dialog with INVITE</title> <p>To create a dialog with INVITE an application creates <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> and <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements</apiname></xref> objects. The application must enter the relevant SIP headers in the <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements </apiname></xref> object before passing it to <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> using the <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita#GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8/GUID-D587F38B-3631-3399-9A82-04EA473E7694"><apiname>CSIPInviteDialogAssoc::SendInviteL()</apiname></xref> function. </p> <p> <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> then forms an INVITE request and communicates it to the server side of the SIP stack. It then creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object, and returns it to the application. </p> <p>When the server sends '180 response', the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> creates a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object to contain the response, and then routes the response to <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref>. <codeph>CSIPDialog</codeph> attaches the response to <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref>. The application is informed about the receipt of the '180 response' through a call to one of the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-EE7CC7B8-CC03-3814-9177-CFBFBB043426"><apiname>MSIPConnectionObserver:: IncomingResponse()</apiname></xref> callback functions. </p> <p>When the '200 response' is received, processing similar to '180 response' occurs. Then the application responds by sending an ACK request. This is done by invoking the <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita#GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8/GUID-DBA0B06D-EC23-3458-9397-402E6CA17106"><apiname>CSIPInviteDialogAssoc::SendAckL()</apiname></xref> function, which forms the ACK request and sends it to the server side of the SIP stack. </p> <p>The INVITE request might fork at a proxy, so the server side of the SIP stack waits for several possible responses. When the forking is does not happen, the server side of the SIP stack sends an <codeph>InviteCompleted</codeph> event. The SIP Client API forwards the <codeph>InviteCompleted</codeph> event to the application, indicating that the application can now delete the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref>. </p> <p>The following figure shows the sequence of events involved in sending an INVITE, receiving a response and sending an ACK. </p> <fig id="GUID-3AE23155-63D4-5948-855E-9D44F48E4D11"><image href="GUID-C8D04D54-D391-5505-9E80-596589410179_d0e314095_href.png" placement="inline"/></fig> </section> <section id="GUID-E4E6E0C2-7B0F-51AA-B1E3-282E8F728EDC"><title> Generating a '100 SIP response'</title> <p>The SIP stack generates a '100 response' automatically when it receives an <codeph>INVITE</codeph> request from the network. Applications are not allowed to send '100 responses'. </p> </section> <section id="GUID-C1ED4FC7-5DEB-5C5B-AE82-549D4577A9A9"><title>Responding to a CANCEL request</title> <p>When the SIP stack receives a CANCEL request from the network, it automatically responds to it. CANCEL requests are never passed to an application. </p> <p>If the SIP stack: </p> <ul><li id="GUID-05B62303-9453-5E42-8E2A-6D50A5857312"><p>does not find a matching transaction for a CANCEL request, it automatically generates a '481 response'. </p> </li> <li id="GUID-69DBD19D-1871-57C5-AF95-8858A92BE6C5"><p>finds a matching transaction for a CANCEL request, it automatically generates a '200 response'. </p> </li> <li id="GUID-C806FF70-7EBD-5D06-989E-971E2E7589DD"><p>finds a matching INVITE server transaction that is in the <codeph>Proceeding</codeph> state (that is a final response is not yet sent), it also automatically generates a '487 response' to the INVITE transaction. </p> </li> </ul> <p>After these actions are complete, the SIP stack informs the application by calling the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-500F0C1D-6FCF-32DB-B9CC-4F7CEC1A9053"><apiname>MSIPConnectionObserver::InviteCanceled()</apiname></xref> callback function. </p> </section> <section id="GUID-CB27D3C3-D28B-5081-B201-8C10DE60CF25"><title>Sending a SIP request and responding to a HTTP Digest challenge</title> <p>A SIP server in the signalling chain challenges any SIP request initiated by the application with an HTTP Digest challenge by responding with a '401 SIP response', '407 SIP response' or a '494 SIP response'. The responses contain details of the challenge. These responses are never passed directly to the application. Instead, they are passed to the application through a call to the callback function <xref href="GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF.dita#GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF/GUID-D12ED59B-FF9F-3AAD-9740-1108B1091421"><apiname>MSIPHttpDigestChallengeObserver::ChallengeReceived()</apiname></xref>. </p> <p>To enable an application to respond to a challenge, it must: </p> <ul><li id="GUID-69B100E7-A67F-5F0C-B886-1B0FAE9DBEB4"><p>create a <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita"><apiname>CSIPHttpDigest</apiname></xref> object </p> </li> <li id="GUID-A58199C3-57A0-536F-8EC2-76A29F3003DA"><p>provide an implementation of the callback function <xref href="GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF.dita#GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF/GUID-D12ED59B-FF9F-3AAD-9740-1108B1091421"><apiname>MSIPHttpDigestChallengeObserver::ChallengeReceived()</apiname></xref> . </p> </li> </ul> <p>The application can either accept or reject the challenge: </p> <ul><li id="GUID-8EFD6F96-73E8-594E-9971-95DB3DA5B5ED"><p>If it accepts the challenge, the callback function must call <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita#GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D/GUID-FBDFE260-789F-3FB1-9884-D958B82E3734"><apiname>CSIPHttpDigest::SetCredentialsL()</apiname></xref>, specifying the username, password, and the realm passed to the callback function. </p> <p>Then, SIP stack re-sends the original SIP request with the HTTP Digest response. </p> </li> <li id="GUID-C1A1BCCC-7E0C-5B4F-A0D9-EDC52F081D59"><p>If it rejects the challenge, the callback function must call <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita#GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D/GUID-2F3A2A6D-B825-30A5-A133-EEBBFCD3F52B"><apiname>CSIPHttpDigest::IgnoreChallenge()</apiname></xref>, specifying the realm passed to the callback function. </p> <p>Then, SIP stack calls the callback function <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-E4E56635-42BB-351A-8356-DB12B5BE24CC"><apiname>MSIPConnectionObserver::ErrorOccured()</apiname></xref>, by passing the error code <xref href="GUID-FF8BB656-99F5-369E-A6CE-56684D329AD5.dita"><apiname>KErrSIPForbidden</apiname></xref>. </p> </li> </ul> <p>If an application does not want to receive the HTTP Digest challenge then it must not create a <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita"><apiname>CSIPHttpDigest</apiname></xref> object. In this event, the SIP stack calls the callback function <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-E4E56635-42BB-351A-8356-DB12B5BE24CC"><apiname>MSIPConnectionObserver::ErrorOccured()</apiname></xref>, passing the error code <xref href="GUID-FF8BB656-99F5-369E-A6CE-56684D329AD5.dita"><apiname>KErrSIPForbidden</apiname></xref>. </p> <p> <b>Note:</b>  </p> <ul><li id="GUID-A028B39A-292E-5556-B4A0-AF801F6131F3"><p>If an application uses the SIP Profile Agent for SIP registration, the SIP Profile Agent handles the HTTP Digest challenges related to the registration procedure according to the SIP profile information. </p> </li> <li id="GUID-19A777A8-E8D0-54F4-A59E-53550B6A802C"><p>The SIP stack maintains a HTTP Digest cache which stores username and password pairs for realms. If the username and password have been configured for a proxy, or if the application has already provided them after being asked through a <xref href="GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF.dita#GUID-FA0A893D-E3E3-33F8-9C63-B2A6A2A053EF/GUID-D12ED59B-FF9F-3AAD-9740-1108B1091421"><apiname>MSIPHttpDigestChallengeObserver::ChallengeReceived()</apiname></xref> call, then the SIP stack uses them to answer subsequent challenges for a matching realm automatically. </p> <p>For example, if the application uses a SIP Profile whose proxy is configured with HTTP Digest passwords and then sends an INVITE, it does not need to provide the passwords for the proxy as the SIP stack gets it from the HTTP Digest cache. </p> </li> </ul> </section> <section id="GUID-B882D001-CDE9-579F-8DDE-C087D8707C2E"><title>Notification of a failed refresh</title> <p>The following example shows how an application is notified when a refresh request within a dialog terminates after an error occurs. In this example the application sends a SUBSCRIBE request with refresh, and receives a <codeph>2xx</codeph> class response. The SIP stack periodically sends a refreshed SUBSCRIBE message. After successfully refreshed SUBSCRIBE requests, the remote server responds with a '481 response', and the application receives the following callback: </p> <codeblock id="GUID-A7F94C80-1224-5A70-B757-98FFAAD92B3B" xml:space="preserve">MSIPConnectionObserver::ErrorOccured(TInt aError, CSIPDialogAssocBase&amp; aDialogAssoc)</codeblock> <p>If the value of <codeph>aError</codeph> is <xref href="GUID-D711A918-6BCE-3A6A-988C-1B1917CD19A6.dita"><apiname>KErrSIPTerminatedWithResponse</apiname></xref>, then the actual SIP response causing the refresh to end can be found as follows: </p> <ul><li id="GUID-76291322-B9F0-55D3-A019-73A9040F2652"><p>Check that <codeph>aDialogAssoc.Type()</codeph> returns <codeph>"SUBSCRIBE"</codeph>. </p> </li> <li id="GUID-52B18DCF-2308-52A9-AB13-5920042C2E5D"><p>Call the function with the following signature to get the refresh instance (<xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> object): </p> <codeblock id="GUID-F0E7DFDA-506F-5377-9F87-CE9775436133" xml:space="preserve">const CSIPRefresh* CSIPSubscribeDialogAssoc::SIPRefresh() const</codeblock> </li> <li id="GUID-6AB4677A-19F9-5CD3-8DAB-E1A242A98D54"><p>Use the <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> object to get the associated transaction by calling the following function: </p> <codeblock id="GUID-D4889AC1-1281-5367-B19B-2136AE9DA707" xml:space="preserve">const CSIPClientTransaction* CSIPRefresh::SIPTransaction() const</codeblock> <p> <b>Note:</b> The returned <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object is not similar to the one returned from the call to <codeph>SendSubscribeL(),</codeph> that the application originally used to send the SUBSCRIBE request. </p> </li> <li id="GUID-D1B61B14-7B99-59EA-9FDD-5ECEB839C4DA"><p>Call the following function to get the SIP response: </p> <codeblock id="GUID-04849100-2F81-5B03-9B1A-2797AF7F96DD" xml:space="preserve">const CSIPResponseElements* CSIPClientTransaction::ResponseElements() const</codeblock> </li> </ul> </section> <section id="GUID-DDD7FDBD-FBC9-5111-BE71-A71E6CCEFB2A"><title>Error handling</title> <p>Errors are passed to an application by calling the callback functions or by leaving. For more information, see <xref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita">Cleanup support overview</xref>. If an error occurs during the synchronous part of an operation is initiated by the application, functions leave with an error code. If an error occurs during the asynchronous processing stage, the error is passed to the application through one of the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-E4E56635-42BB-351A-8356-DB12B5BE24CC"><apiname>MSIPConnectionObserver::ErrorOccured()</apiname></xref> callback functions. </p> <p>There are several overloaded variants of <codeph>ErrorOccured()</codeph> functions. Each of them takes the error code and reference to the SIP Client API object that encountered the error: </p> <ul><li id="GUID-2734ECF0-1751-5AB8-BFE3-425965D01CF0"><p>A call to the variants of <codeph>ErrorOccured()</codeph> taking a <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> or <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> parameter means that transaction has entered the state <xref href="GUID-8E445232-29A0-3EED-94C3-43BFDD328358.dita#GUID-8E445232-29A0-3EED-94C3-43BFDD328358/GUID-288F503D-3EEA-3B4B-8D31-B58E3777F875"><apiname>CTransactionBase::ETerminated</apiname></xref>. </p> </li> <li id="GUID-C45D4A2D-F175-542B-92BF-211E1673F3F1"><p>A call to the variant of <codeph>ErrorOccured()</codeph> taking a <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> parameter means that the registration context is no longer active, that is <codeph>CSIPRegistrationBinding::IsContextActive() == EFalse</codeph>. </p> <p>If the registration was being refreshed, then the refresh has also ended and its state is <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita#GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3/GUID-EFEDCA93-E338-32A1-B005-8BA316B3C172"><apiname>CSIPRefresh::ETerminated</apiname></xref>. </p> </li> </ul> <p>If the callback function <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-27DE00DC-5572-3B55-B92B-5325794EE663"><apiname>MSIPConnectionObserver::ConnectionStateChanged()</apiname></xref> is called and the <codeph>aState</codeph> parameter is either <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-68DD22DC-67E4-387B-BBE9-B9B96D9C9016"><apiname>CSIPConnection::EInactive</apiname></xref> or <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-5963A947-BD5C-3B34-9D10-2CB5DC413774"><apiname>CSIPConnection::EUnavailable</apiname></xref>, then all dialogs, registrations, and standalone transactions using the <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> are terminated. </p> <p>To avoid an overload of callback calls in this type of situation, calls to <codeph>ErrorOccured()</codeph> for the individual dialog, registration and transaction objects are not sent to the application. </p> <p>When the connection state changes, the <codeph>MSIPConnectionObserver::ConnectionStateChanged()</codeph> callback function does not provide a reason. Call <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-B9D5319D-D569-3D4A-AF73-66F057ACF88D"><apiname>CSIPConnection::GetConnectionError()</apiname></xref> to get details about the connection error that caused the change. </p> </section> <section id="GUID-0FC8038A-64AE-5E98-A9F9-ADBC6F05DF2B"><title>Refreshing a Connection</title> <p>To refresh a connection, do the following steps: </p> <ol id="GUID-368431B7-E9FB-56E7-A45F-01B686DBECAA"><li id="GUID-97E972C7-E839-5942-A487-48A9FD1EEC0E"><p>Start the connection on the desired IAP. </p> </li> <li id="GUID-35157131-E6EA-5EB2-8773-33832C45F46E"><p>Monitor the status of the connection using the <xref href="GUID-64C272AA-5727-3AB9-A131-68303E5A75D6.dita#GUID-64C272AA-5727-3AB9-A131-68303E5A75D6/GUID-7984D221-06F6-3F4B-B373-11C96D0A17F3"><apiname>MSIPConnectionObserver::ConnectionStateChanged(CSIPConnection::TState
+                aState)</apiname></xref> function. </p> </li> <li id="GUID-85CDAB12-933A-5748-B2B8-33971F58B7B4"><p>If the connection is inactive, notify the <codeph>EInactive</codeph> state to the application through <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-27DE00DC-5572-3B55-B92B-5325794EE663"><apiname>MSIPConnectionObserver::ConnectionStateChanged()</apiname></xref> function that is, if <xref href="GUID-8239C16D-74EC-3B97-ADB0-B6AE57D30C89.dita#GUID-8239C16D-74EC-3B97-ADB0-B6AE57D30C89/GUID-3380638E-B5BA-3C88-82CB-9E52385F6A38"><apiname>(CSIPConnection::TState == EInactive)</apiname></xref>, then send a <xref href="GUID-7FBF47FB-7D1F-3F20-BBCA-A195BB540D67.dita"><apiname>RefreshConnection()</apiname></xref> function to make it active. </p> <p> <b>Note:</b> This requires a bearer monitor on that IAP to which a refresh request is sent. </p> </li> <li id="GUID-49A770C0-0992-5D27-B8A6-4D68E4B90E09"><p>Any changes to the state of the connection is notified through <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-27DE00DC-5572-3B55-B92B-5325794EE663"><apiname>MSIPConnectionObserver::ConnectionStateChanged()</apiname></xref>. </p> </li> </ol> <p>The following sequence diagram shows how a client refreshes a connection. </p> <fig id="GUID-B3D9E694-31F8-59AA-A722-BE6F9C0D5E89"><image href="GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e314506_href.jpg" placement="inline"/></fig> <p>The following example code describes how to refresh a connection. </p> <codeblock id="GUID-B14ADDEF-1E3C-5B21-8426-4D0FE65FBC28" xml:space="preserve">// It is assumed that the connection is started and is in an Inactive state that is, 
+// (CSIPConnection::TState == EInactive)
+
+// Refresh the IAP ID of the connection by sending a Refresh Request to the Bearer monitor of the IAP
+CSIPConnection:: RefreshConnection()
+
+// Note: The application is notified of the changes in the state of the connection through the 
+// ConnectionStateChanged() function of MSIPConnectionObserver Interface.</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0F7EFB9-3502-50F7-BBE1-FD0DD7A360F8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B0F7EFB9-3502-50F7-BBE1-FD0DD7A360F8" xml:lang="en"><title>Speech Recognition Controller Component</title><shortdesc>The Speech Recognition Controller component provides a framework for speech recognition. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B0F9CDEC-A953-51D0-B7A3-8B341A7C784A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B0F9CDEC-A953-51D0-B7A3-8B341A7C784A"><title>Persistent data</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Persistent data is data that remains after a program has finished. On desktop machines, it is conventional to refer to data on a disk file as persistent, because it persists after the machine has been turned off.</p> <p>Data in RAM is volatile, because it is lost when power is removed. On a Symbian OS phone, these distinctions are less clear (because the “disk” is itself in RAM). It is, nevertheless, useful to refer to data in files as persistent.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A"><title>Image Decoding</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives you more information about the Image Decoding functionality. </p> <section><title>Purpose</title> <p>The image decoding class <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> provides functions to decode images held in descriptors or files from standard formats for use with devices such as screens, browsers and viewer applications. </p> <p><b>Required Background</b> </p> <p>Image decoding features are provided through Imaging Frameworks and Imaging plugins. The standard formats supported by the decode plugins are shown in the table in <xref href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita">Imaging Frameworks Overview</xref>. </p> <p><b>Introduction</b> </p> <p>The decoding process comprises the following sections: </p> <ul><li id="GUID-BE3B993F-3793-55B4-9ADB-9456FE73CA19"><p> <b>Creation</b> - The creation of the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> object and any requirements necessary. </p> </li> <li id="GUID-D5FE22F6-687F-560D-A336-4F01B5945273"><p> <b>Conversion</b> - Covers the basic form of image decoding. More advanced features such as progressive and buffered decoding are described separately. </p> </li> <li id="GUID-9A4AD0DE-AFCF-5F33-AAC7-007FD9F8A291"><p> <b>Enquiry features</b> - Additional features that enable you to retrieve information stored in certain types of images, for example frame information and comments. </p> </li> <li id="GUID-643CE012-6C73-5068-A7AD-FDA810FBBFD8"><p> <b>Streamed and progressive decoding</b> - Reading partial image files and displaying image data before the entire image is read. </p> </li> <li id="GUID-E3D6BB50-DBE9-5967-9FAC-B56BCBCCADAC"><p> <b>Buffered decoding</b> - The decoding of an image using a buffered input rather than a file or descriptor. </p> </li> </ul> <p><b>Setup and Configuration Requirements</b> </p> <p>The <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> classes use synchronous methods to open an image and asynchronous methods to perform conversions or transformations. The asynchronous operations use the standard system of taking a pointer to a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object that is signalled on completion of the requested action. The assumption is that the client application or the calling DLL holds the <codeph>TRequestStatus</codeph> values within active objects. The structure of the active objects is dependent on the code that uses the Imaging Frameworks and its own requirements, particularly its internal architecture and how many images are opened simultaneously. </p> <p>In addition to the use of active objects in the interfacing, many of the Imaging Frameworks internal functions make extensive use of them to provide asynchronous behaviour. As with any use of an active object it is necessary to have an active scheduler in the same thread as the application making use of the object. The Decoders can also be created so the plugin and framework runs in a separate thread. This is achieved by setting the <codeph>EOptionAlwaysThread</codeph> option when constructing the decoder objects. By running the object in its own thread, the application is shielded from any latency that can occur during image conversion, or possibly due to a badly written plugin. </p> </section> <section><title>Using Image Decoding </title> <p>The Following tasks are covered in this tutorial: </p> <ul><li id="GUID-085EEC3C-C78B-5FDC-B630-C3A28DF0CA1F"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-1F8A0DCC-CB95-5245-9ED0-FE4A775152D0">How to create the object during decoding</xref> </p> </li> <li id="GUID-A5E71C36-E811-509B-A547-04F174B7000B"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-7A3F98C2-C86B-5DC4-9F0E-EAE030341325">How to convert encoded data to decoded data</xref>  </p> </li> <li id="GUID-D6EDE32F-F011-5191-AD15-AD8FAEFC5C75"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-FF418A2D-436B-515F-B9D1-E0A0C87E7394"> How to retrieve the information stored in certain types of images</xref>  </p> </li> <li id="GUID-05966714-BB75-5DB1-86E5-4FE075507C2D"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-AA950124-42DE-5A65-B371-7D85F43D71A6">How to perform the streaming and the progressive during decoding</xref>  </p> </li> <li id="GUID-3BBA8FBB-FB2E-5774-921E-8BBAC95DF55C"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-C7FEA8F9-B367-52B1-9D26-84F9E225D17C">How to perform the buffered decoding</xref>  </p> </li> </ul> <p id="GUID-1F8A0DCC-CB95-5245-9ED0-FE4A775152D0"><b>Basic Procedure For Creation</b> </p> <p>The high level steps to create the object during decoding are as follows: </p> <ol id="GUID-A8F73379-5277-5ACC-82A4-9199BE24142A"><li id="GUID-166216C0-5CAA-5FF4-8B40-BB562EEF3C61"><p> <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> decodes images stored in files or in descriptors. The decoder object is owned by the client and must be deleted once decoding is finished. <codeph>CImageDecoder</codeph> objects cannot be reused to decode other images, each image requires its own instance of the decoder. </p> </li> <li id="GUID-BB617D39-8A46-5C7F-A28B-7C334F24594C"><p> <codeph>CImageDecoder</codeph> objects are created using the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> factory functions for images held in descriptors or files respectively. </p> </li> <li id="GUID-F1D28859-A28F-56EA-8755-25C8FF70BB50"><p>When you create a <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> object, a suitable plugin must be associated with the image to be decoded. The Imaging plugin depends on the factory function you use to create the object and what parameters you specify. There are four alternatives: </p> <ul><li id="GUID-A40501AD-3679-5612-AA43-06DB6345C79D"><p> <b>MIME type</b> The plugin is determined by looking up a specified MIME type against a list of known MIME type/plugin implementations. Use the following "File" factory function (or its "Data" equivalent). </p> <codeblock id="GUID-FF20429E-3D1D-5D99-9548-9AA701AC1B32" xml:space="preserve">static CImageDecoder* FileNewL(RFs&amp; aFs, const TDesC&amp; aSourceFilename, const TDesC8&amp; aMIMEType, const TOptions aOptions = EOptionNone);
+</codeblock> </li> <li id="GUID-9D96F47A-F784-5252-AAC9-3DDEF2E96764"><p> <b>Image type and sub-type</b> The plugin is determined by looking up the specified image type and sub-types against a list of known type/sub-type plugin implementations. Use the following "File" factory function (or its "Data" equivalent). </p> <codeblock id="GUID-2D5A7779-CBE9-5B3E-B9E7-C5CD7631DB33" xml:space="preserve">static CImageDecoder* FileNewL(RFs&amp; aFs, const TDesC&amp; aSourceFilename, const TOptions aOptions = EOptionNone, const TUid aImageType = KNullUid, const TUid aImageSubType = KNullUid, const TUid aDecoderUid = KNullUid);
+</codeblock> <p> <b>Note:</b> For images types that do not have sub-types use <codeph>KNullUid</codeph>. </p> </li> <li id="GUID-D80A799E-E49E-547C-9286-1AB38F8EB819"><p> <b>Implementation UID</b> The plugin is determined by looking up its specific UID and the image type and sub-type. Use the same <codeph>FileNewL()</codeph> factory function shown in "Image type and sub-type", but in addition to the type and sub-type parameters, also specify the plugin UID using <codeph>aDecoderUid</codeph>. </p> <p> <b>Note:</b> Implementation UID is supported because it is possible to have more than one plugin for a particular image type. This method is recommended if the application or calling DLL needs to exploit features of a particular plugin. </p> </li> <li id="GUID-A08944FA-6BE6-574A-AE00-5F12F5A07F0B"><p> <b>Automatic detection</b> - no MIME type, format type/sub-type or UIDs are specified. The plugin analyses the header information of the specified image. Use the same <codeph>FileNewL()</codeph> factory function shown in "Image type and sub-type", but do not specify any values for <codeph>aImageType</codeph>  <codeph>aImageSubType</codeph> or <codeph>aDecoderUid</codeph>. </p> <p>If a suitable plugin cannot be found, the factory function leaves with <codeph>KErrNotFound</codeph>. If a suitable plugin is found, but that plugin cannot interpret the image data the factory function leaves with <codeph>KErrCorrupt</codeph>. </p> <p>Note: Some image formats cannot be automatically detected because they do not contain sufficient header information, for example, WBMP and OTA images. Under such circumstances, use one of the other three alternative for opening the image. </p> </li> </ul> </li> </ol> <p>It is possible for more than one valid plugin decoder to be available for a specific image format. If a plugin determined by MIME type or type/sub-type fails to open an image due to <codeph>KErrCorrupt</codeph>, it will continue to try with subsequent valid plugins if available. This mechanism is carried out in the system and is not visible to the application. If you require a specific function available within a specific plugin, specify that plugin using <codeph>aDecoderUid</codeph>. </p> <p id="GUID-7A3F98C2-C86B-5DC4-9F0E-EAE030341325"><b>Basic Procedure For Conversion </b> </p> <p>The high level steps to convert encoded data to decoded data are as follow: </p> <ol id="GUID-495365EB-B53D-5229-AD45-F9700A22F2AB"><li id="GUID-4B6AEB44-3426-5B83-A12E-755230627D23"><p>As part of the <codeph>CImageDecoder</codeph> creation basic information about the image is pre-read from the image headers. This information is used to support certain enquiry methods such as <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6506DA99-55E9-3524-BD64-528E145915F4"><apiname>CImageDecoder::FrameCount()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-7CE85F05-6D58-30F1-87D3-324BFB6131FB"><apiname>CImageDecoder::FrameInfo()</apiname></xref> (For more information about the retrieve information stored in certain types of images is supplied in <xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-FF418A2D-436B-515F-B9D1-E0A0C87E7394">Retrieve Information features</xref>). </p> </li> <li id="GUID-18D5494C-BECC-52A5-9C51-60A9E560C816"><p>You can decode any subset of individual frames, in any order, and to repeat the decoding if necessary. To decode an image frame use the asynchronous conversion method <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref>, as follows. </p> </li> </ol> <codeblock id="GUID-557B2DE9-6AA7-593B-A1A7-0D1E4352E184" xml:space="preserve">
+void Convert(TRequestStatus* aRequestStatus, CFbsBitmap&amp; aDestination, TInt aFrameNumber = 0);
+
+void ContinueConvert(TRequestStatus* aRequestStatus);</codeblock> <p> <b> Note:</b> The use of <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-F4F5A5F6-03E5-3801-93CC-A023363F35F8"><apiname>CImageDecoder::ContinueConvert()</apiname></xref> is described in <xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-AA950124-42DE-5A65-B371-7D85F43D71A6">Streamed and progressive decoding</xref>. </p> <p>There are different type of sub-procedures which have to be followed before decode conversion, they are: </p> <ul><li id="GUID-1F27341A-4A6A-5269-AA61-CBB0FB620258"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-52CAB4D2-BFA9-528C-ADB6-88515893F2B1">Bitmap Masks conversion</xref>  </p> </li> <li id="GUID-3537322C-B7E7-502D-A773-294DEC45A6DC"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-03A3E6BD-8702-5C0D-8265-F956EC03CD73">Scaling and display modes</xref>  </p> </li> <li id="GUID-D11765E3-CD93-5CF2-A530-B7725F742861"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-9C2E0BFC-61FE-5F83-A78A-C9248C5D6FA3">Animations</xref>  </p> </li> <li id="GUID-EA7899D9-F950-514D-9696-072C14116B44"><p><xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-9BD9C48A-B582-5730-B03F-CF6CB00DF6D1">Background colours </xref>  </p> </li> </ul> <p id="GUID-52CAB4D2-BFA9-528C-ADB6-88515893F2B1"><b>Basic Procedure For Bitmap Masks conversion</b> </p> <p>The high level steps to Bitmap Masks conversion are as follows: </p> <ol id="GUID-A330923C-DA1E-55CF-A01C-151CD203D37B"><li id="GUID-E493B5B2-D8A2-5428-846B-0BA902EAF641"><p>There is a second variant of the <codeph>Convert()</codeph> function intended for use when decoding images with bitmap masks. </p> <codeblock id="GUID-F6213C82-A604-57F0-B4C2-5667007CAD53" xml:space="preserve">
+void Convert(TRequestStatus* aRequestStatus, CFbsBitmap&amp; aDestination, CFbsBitmap&amp; aDestinationMask, TInt aFrameNumber = 0);
+</codeblock> </li> <li id="GUID-1E7DC04E-A101-5C33-B6B5-BE5F83E95801"><p>Within the Symbian platform it is normal to store the bitmap mask separately from the main image data. Calls such as <xref href="GUID-2395FA67-5DCD-3CD7-BBB6-66625A3E2B6E.dita"><apiname>BitBltMasked()</apiname></xref> expect this data to be provided separately. This separation is true for both <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> objects and MBM files. </p> </li> <li id="GUID-B9CE26DF-AE1C-592F-8C0E-DD0AAD69BF60"><p>To determine whether an image contains a bitmap mask use <codeph>FrameInfo()</codeph>, the presence or absence of a mask will be indicated the <codeph>ETransparencyPossible</codeph> flag. </p> <p>The following two types of mask are available: </p> <ul><li id="GUID-1A03053A-C797-57EF-978E-C25A1D32163A"><p> <b>8-bit alpha blend</b> - indicated by the <codeph>EAlphaChannel</codeph> flag of <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-7CE85F05-6D58-30F1-87D3-324BFB6131FB"><apiname>CImageDecoder::FrameInfo()</apiname></xref>  <codeph>iFlags</codeph>. The destination mask bitmap must be of type <codeph>EGray256</codeph>. </p> </li> <li id="GUID-9B51A424-66ED-584F-A3CD-55D575B38FEA"><p> <b>Simple on/off mask</b> - if no <codeph>EAlphaChannel</codeph> flag is set. The destination bitmap mask can be either <codeph>EGray2</codeph> or <codeph>EGray256</codeph>. </p> </li> </ul> </li> </ol> <p> <b>Note:</b> Images that contain bitmap masks do not have to have those masks decoded if they are not required. </p> <p id="GUID-03A3E6BD-8702-5C0D-8265-F956EC03CD73"><b>Basic Procedure For Scaling and display modes</b> </p> <p>The high level steps to Scale and display are shown here: </p> <ol id="GUID-DE0D4041-CBBF-5841-BE53-A8F6EA2CDE38"><li id="GUID-921CCDF6-7346-577E-AEC2-217C82329D44"><p>Before <codeph>Convert()</codeph> is used, the destination <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> objects for image data and bitmap masks are created. The simplest way to do this is to use a 1 to 1 approach, that is, create the <codeph>CFbsBitmap</codeph> object with the same properties as the source image. This is achieved by using something similar to: </p> <codeblock id="GUID-198859CC-C33A-5BE8-B75C-C32746D65DF7" xml:space="preserve">iFrameInfo = &amp;imageDecoder-&gt;FrameInfo(FrameNum);
+
+iBitmap-&gt;Create(iFrameInfo-&gt;iOverallSizeInPixels, iFrameInfo-&gt;iFrameDisplayMode );
+</codeblock> </li> <li id="GUID-B3559310-560A-5671-9560-509F14B729ED"><p>If the <codeph>ECanDither</codeph> flag of <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-7CE85F05-6D58-30F1-87D3-324BFB6131FB"><apiname>CImageDecoder::FrameInfo()</apiname></xref>  <codeph>iFlags</codeph> is set then the destination display mode can be adjusted. It is recommended that the window display mode is used as it is more efficient. </p> <p> <b>Note:</b> The mask bitmap must have the same size in pixels as the main image, even though the display mode is generally different. </p> </li> <li id="GUID-B517656C-3294-5D3A-92E3-442CAE099FE1"><p>The size of the image bitmap is available via <codeph>FrameInfo()</codeph> (<codeph>iOverallSizeInPixels</codeph>). However, in addition to a direct mapping of the size of an image, <xref href="GUID-062B8E74-EDEF-3A98-9728-79C3E5A8C829.dita"><apiname>ReducedSize()</apiname></xref> function can be used to calculate the reduced size of the decoded bitmap based on the input parameters. </p> </li> <li id="GUID-52299AC9-377C-5DEB-B16A-BDA0538D91A7"><p>If the <codeph>EFullyScaleable</codeph> flag of <codeph>FrameInfo()</codeph>  <codeph>iFlags</codeph> is set, you can specify any size for the <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> and the image will be resized accordingly. </p> </li> </ol> <p id="GUID-9C2E0BFC-61FE-5F83-A78A-C9248C5D6FA3"><b>Basic Procedure For Animations</b> </p> <p>The high level steps to decode a GIF multi-frame image are as follow: </p> <ol id="GUID-C7E99D55-48C9-5329-B07B-28A65AB102D6"><li id="GUID-53364690-F9D3-5A80-9FAA-2046F8DB80AB"><p>Included in the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-7CE85F05-6D58-30F1-87D3-324BFB6131FB"><apiname>CImageDecoder::FrameInfo()</apiname></xref> result are flags that enable the support of GIF animation. These flags are <codeph>iDelay</codeph>, <codeph>ELeaveInPlace</codeph>, <codeph>ERestoreToBackground</codeph> and <codeph>ERestoreToPrevious</codeph>. ICL provides these flags to enable the application to implement the animation; ICL does not provide functions to display the animation directly. </p> </li> <li id="GUID-3BAC1045-E210-5B1A-93E9-BB15C9FC1871"><p>Processing the information from these flags will inevitably require a state machine, and additional timers, within the application. Requirements will vary depending on the architecture of the client application itself. </p> </li> </ol> <p id="GUID-9BD9C48A-B582-5730-B03F-CF6CB00DF6D1"><b>Basic Procedure For Background colours</b> </p> <ol id="GUID-2D46054E-1344-5B17-B353-8A68A0C97DB0"><li id="GUID-41959955-766E-5AAD-AA6D-65C4F99E5581"><p>Some image formats contain background colour information. This is information is presented through <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-7CE85F05-6D58-30F1-87D3-324BFB6131FB"><apiname>CImageDecoder::FrameInfo()</apiname></xref>  <codeph>iBackgroundColor</codeph>. </p> </li> <li id="GUID-B3419EC0-109F-5A37-9A4F-CD0F7A96FCDC"><p>If a non-masked image with background colour is decoded, the colour is included in the image data. If the decoded image also contains a bitmap mask, then the background colour will be a component of the mask <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object. Depending on your application, you may want to choose your own background colour rather than use the one provided by the source image. </p> </li> </ol> <p id="GUID-FF418A2D-436B-515F-B9D1-E0A0C87E7394"><b>Basic Procedure To Retrieve Information From An Image</b> </p> <p>The high level steps to retrieve the information stored in certain types of images are shown here: </p> <ol id="GUID-2D40722B-5BEA-52ED-B143-A4E85CE8EB22"><li id="GUID-B40D32A1-CC43-50B8-A873-A6E14C27D165"><p> <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-7BB6FC3D-2721-3902-B6BD-C99697C35D6D"><apiname>CImageDecode::FrameData()</apiname></xref> Provides access to additional chunks of data within the images, for example, palette and similar lookup tables, copyright information and other strings. This information should be used with care, the returned data is merely a reference to the original data within the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> object, and is only valid for the lifetime of the object. </p> </li> <li id="GUID-875B1CFA-CE86-50D7-BD8A-4E7453EEF35F"><p> <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-08674EE0-C31A-3E42-A121-4341983A6B0C"><apiname>CImageDecode::NumberOfImageComments()</apiname></xref> and <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-26AFE814-96FB-333F-B545-1E18B835206B"><apiname>CImageDecode::ImageCommentL()</apiname></xref> Images can have comments embedded in them. These comments are usually either embedded as a single repository which can be retrieved on an image level, or multiple repositories attached to individual frames within the image. The two functions above return the number of comments attached to the entire image and provide a mechanism for retrieving any of those comments. </p> </li> <li id="GUID-6854DEC9-4348-56DD-B5E2-47DEE3DC43AE"><p> <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-AB2B99F5-49E5-37DD-80F1-3776CB9A0D1A"><apiname>CImageDecode::NumberOfFrameComments()</apiname></xref> and <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-A12EAD36-D2F0-3CAA-A6CE-033ABE8DE258"><apiname>CImageDecode::FrameCommentL()</apiname></xref> Similar functionality to above, but these functions return the number of comments attached to individually specified frames and provide a mechanism for retrieving any of those comments. </p> </li> <li id="GUID-F51D81A1-61A7-5C1C-B0FB-99B18C1203DC"><p> <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-BD657401-E04F-331E-B72E-3729CB35C919"><apiname>CImageDecode::FrameInfoStringsLC</apiname></xref> and <xref href="GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B.dita#GUID-5F0CD3F3-8833-3D31-A9B9-B832BAAA588B/GUID-E9107BE1-58BF-3C1A-BBFF-B7027C35331B"><apiname>CImageDecode::FrameInfoStringsL()</apiname></xref> Provide a list of data for a specified frame, including data items such as format, plugin description, size and so on, in a readable format. Although the property strings can be accessed by name, it is recommended that they be generally treated as a list of strings. </p> </li> </ol> <p id="GUID-AA950124-42DE-5A65-B371-7D85F43D71A6"><b>Basic Procedure Streamed and Progressive Decoding</b> </p> <p> <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> includes facilities to support the simultaneous decoding and display of images as they are being loaded. The decoder does not wait for the entire image to be loaded before processing it, rather it begins as soon as possible, stops when it runs out of data and then carries on when more data is available. </p> <p>The high level steps to perform the streaming and the progressive during decoding are shown here: </p> <ol id="GUID-0E29E833-4435-5E55-908F-938A13473B79"><li id="GUID-CE64D3C8-8923-5BAF-AF29-9BA6470008F8"><p>If there is insufficient data to work out the image format (plugin decoder to use) <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> (or its "Data" equivalent) leaves with <codeph>KErrUnderflow</codeph>. This is only applicable to instances where automatic detection of the plugin decoder is used. For more information see, "Automatic detection" in <xref href="GUID-B10B048F-37FF-53E7-92B9-83F8C197566A.dita#GUID-B10B048F-37FF-53E7-92B9-83F8C197566A/GUID-1F8A0DCC-CB95-5245-9ED0-FE4A775152D0">Creation</xref>. </p> </li> <li id="GUID-23175979-940A-507D-B478-0C4ACB5F9071"><p>As soon as the correct plugin decoder has been determined it is opened and whatever addition image data available is scanned. The plugin decoder continues to decode image data as it arrives, updating <codeph>FrameCount()</codeph> whenever it becomes aware of a new frame within the data. The internal flag <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-26084926-42C1-38FC-9F30-E1801AE5167D"><apiname>CImageDecoder::IsHeaderProcessingComplete()</apiname></xref> is maintained at <codeph>EFalse</codeph> until the entire image has been loaded. </p> </li> <li id="GUID-75959B88-7CE2-598E-9F83-EC0189BD2F6C"><p>Frames can be decoded before the entire image is loaded, but the frame to be decoded must be at least partially loaded. If <codeph>IsHeaderProcessingComplete()</codeph> is set to <codeph>EFalse</codeph> and <codeph>FrameCount()</codeph> is equal to or less than the frame to decode, the application must wait for the relevant frame to load. In such circumstances a call to <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-A74CEA6D-ED47-3EA4-8917-FEE4B51B7639"><apiname>CImageDecoder::ContinueProcessingHeadersL()</apiname></xref> should be made that scans for any further headers. <codeph>FrameCount()</codeph> and <codeph>IsHeaderProcessingComplete()</codeph> should then be recalled to determine if the frame has arrived. </p> </li> <li id="GUID-C390495B-840E-541B-A0C5-061D3706AD8A"><p>Once <codeph>FrameCount()</codeph> is greater than the frame the application wants to decode, it is possible to start to decoding the frame using <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref>. Frame headers and their associated data do not always follow each other in some image formats. This has the implication that although <codeph>FrameCount()</codeph> has indicated that the frame is available, it may not yet be fully loaded. Under such circumstances as much decoding as possible is undertaken, and <codeph>Convert()</codeph> then completes with the error code <codeph>KErrUnderflow</codeph>. If the <codeph>EPartialDecodeInvalid</codeph> flag (from <codeph>FrameInfo()</codeph>) is not set, the partially decoded image can be displayed - for some image formats, a partially decoded image is not generally usable, but this facility is supported by most known formats. Obviously, if all of the image is present, <codeph>Convert()</codeph> completes with <codeph>KErrNone</codeph> as normal. </p> </li> <li id="GUID-44864401-5DB5-56A5-BE6D-5B8B4570CCBF"><p>Where only a partial conversion has been completed, <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-F4F5A5F6-03E5-3801-93CC-A023363F35F8"><apiname>CImageDecoder::ContinueConvert()</apiname></xref> should be used to continue converting when new data arrives. <codeph>ContinueConvert()</codeph> continues to convert the frame data where the previous call left off. This function should continue to be called until it returns the error code <codeph>KErrNone</codeph> rather than <codeph>KErrUnderflow</codeph>. </p> <p>Note: The <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> must never be resized during a conversion session using <codeph>ContinueConvert()</codeph>, if resizing does occur, a panic will be raised by the function. If resizing or any other parameter changes need to be made to the <codeph>CFbsBitmap</codeph>, frame decoding should be restarted by using <codeph>Convert()</codeph> rather than trying to continue an existing conversion session. </p> </li> </ol> <p>There is no explicit decoder call to say "all of the data is now present". This could be done via inference, continuously checking <codeph>IsHeaderProcessingComplete()</codeph> until it returns <codeph>ETrue</codeph>. However, this is not advisable as it is possible that <codeph>IsHeaderProcessingComplete()</codeph> could continue to return <codeph>EFalse</codeph> even after the application has finished sending image data. Your state machine should be written so that it takes this possibility into account. </p> <p id="GUID-C7FEA8F9-B367-52B1-9D26-84F9E225D17C"><b>Basic Procedure For Buffered Decoding</b> </p> <p> <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita"><apiname>CBufferedImageDecoder</apiname></xref> is a wrapper that encapsulates not only a <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> but also the descriptor used to store the image, and in some circumstances can replace the use of <codeph>CImageDecoder</codeph> itself. <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita"><apiname>CBufferedImageDecoder</apiname></xref> can always be created, even if there is no data available at the time of creation. Another key feature of <codeph>CBufferedImageDecoder</codeph> is that it can be reused to decode multiple images. </p> <p>The high level steps to perform the buffered decoding are shown here: </p> <ol id="GUID-0EEA3303-59C3-5326-8E10-3C54BE69B336"><li id="GUID-8749D5E2-2E9D-578B-A02C-C4C1309E2AC5"><p>The decoder is created using the <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita#GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378/GUID-D255B2EF-1DA0-336E-A173-0FD03210B349"><apiname>CBufferedImageDecoder::NewL()</apiname></xref> factory function, and the decoding process is started with one of the two <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita#GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378/GUID-A8D36C2B-C057-3F6A-A1AF-F7421D204B11"><apiname>CBufferedImageDecoder::OpenL()</apiname></xref> calls, specifying either MIME-type or image type/sub-type and UID, which are similar to <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref>. If not enough data is available to create an internal decoder a call to <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita#GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378/GUID-0C7E0E24-8352-353E-9E55-D216300D1CFA"><apiname>CBufferedImageDecoder::ValidDecoder()</apiname></xref> returns <codeph>EFalse</codeph>. The decoder keeps an internal copy of the data provided so the client can discard its own copy. </p> <p> <b>Warning:</b> The decoding and enquiry functions must not be used until an internal decoder has been created, otherwise calls will panic with <codeph>EDecoderNotCreated</codeph>. </p> </li> <li id="GUID-A1DD251D-D1B2-57EE-9A2D-94AE75DBA35B"><p>Additional data can be supplied to the decoder, when it becomes available, by using <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita#GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378/GUID-5CF4094C-A829-347A-835C-17ABF439445A"><apiname>CBufferedImageDecoder::AppendDataL()</apiname></xref> and <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita#GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378/GUID-B85FD15C-337A-393F-A9DA-65EC1EB546C5"><apiname>CBufferedImageDecoder::ContinueOpenL()</apiname></xref>, which will copy the data and try to find an appropriate plugin. This step should be repeated until enough data is available to create the internal decoder, indicated by <codeph>ValidDecoder()</codeph> returning <codeph>ETrue</codeph>. <codeph>OpenL()</codeph> and <codeph>ContinueOpenL()</codeph> will leave with <codeph>KErrCorrupt</codeph> if a suitable decoder is found, but that decoder was unable to interpret the supplied image data. </p> <p>Note: As with <codeph>OpenL()</codeph>, data provided by <codeph>AppendDataL()</codeph> is kept in an internal buffer by the decoder so the client can discard its own copy. </p> </li> <li id="GUID-E4E67E99-0D9A-5CA9-8FE3-6A32A36C3F42"><p>The process for decoding the image header and frames are the same as for <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita"><apiname>CImageDecoder</apiname></xref> with <codeph>IsHeaderProcessingComplete()</codeph>, <codeph>FrameCount()</codeph>, <codeph>Convert()</codeph> and <codeph>ContinueConvert()</codeph> calls except that the data is not appended to a descriptor, but supplied to the decoder with <codeph>AppendDataL()</codeph>. </p> </li> <li id="GUID-E40CF367-2601-5B9F-9E20-34CD8F2754EB"><p>The decoder can be reused by calling a <xref href="GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378.dita#GUID-DD2EDAB6-784C-3FC9-A53D-84D133049378/GUID-44030283-5CB8-3317-8498-0B70C0C358A9"><apiname>CBufferedImageDecoder::Reset()</apiname></xref>, which destroys the internal data buffer and decoder. A new decoder plugin can then be started using <codeph>OpenL()</codeph>. </p> </li> </ol> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks overview</linktext> </link> <link href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita"><linktext>Image Conversion Overview</linktext> </link> <link href="GUID-6DC34798-86CE-537D-B3B8-9A94FF77B283.dita"><linktext>Image Encoding Tutorial</linktext> </link> <link href="GUID-A825B62E-B5F6-5FDD-B267-E47103D57FD8.dita"><linktext>Guide to Symbian supplied Codecs </linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B10B6363-9FB9-562C-8DCA-42FEF8D5413B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B10B6363-9FB9-562C-8DCA-42FEF8D5413B" xml:lang="en"><title>Interface to DBMS databases</title><shortdesc>This section provides details about various interfaces available to access relational database on Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B11304D7-284A-5165-9565-F9CC4405E258.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B11304D7-284A-5165-9565-F9CC4405E258" xml:lang="en"><title>How
+to handle multiple asynchronous requests with a wait loop</title><shortdesc>This document describes how to handle multiple asynchronous requests
+with a wait loop.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A user thread which requires asynchronous services from more than one asynchronous
+service provider uses a <i>wait loop</i>.</p>
+<p>The allows a thread to issue as many request as are necessary and to handle
+their completion. This construction forms the heart of almost all programs
+that run under Symbian platform.</p>
+<p>A typical program:</p>
+<ul>
+<li id="GUID-1D4A7780-CC16-5D02-A80E-C1DB031B62A1"><p>waits for any request
+to complete by waiting on the thread’s request semaphore.</p> </li>
+<li id="GUID-E5AEA62E-4C85-55CD-96DD-02E322D8E238"><p>scans in turn through
+the asynchronous service providers for which a request is known to have been
+issued and tests the relevant <codeph>TRequestStatus</codeph> for completion;
+this is identified by a value other than <codeph>KRequestPending</codeph>.</p> </li>
+<li id="GUID-3DA7B3E5-F5CB-5853-A29F-AE78E837B9F0"><p>when the first such
+completed request has been identified, handles the completed request, possibly
+by issuing a further request to an asynchronous service provider.</p> </li>
+<li id="GUID-3A0108AF-7833-5D6C-88C0-6794EC8E0600"><p>goes back to the top
+of the wait loop and waits again.</p> </li>
+</ul>
+<p>As an example, a terminal emulator must work with multiple requests simultaneously,
+to deal with:</p>
+<ul>
+<li id="GUID-9979D5C7-72B1-53E8-BE4F-9D50ECE7AB6B"><p>key presses and user
+input in general, to control the action of the program and put characters
+on the emulated terminal screen and/or send them to the remote host</p> </li>
+<li id="GUID-A091EA85-0697-5C6D-B843-4AB3BFC7ACEC"><p>received data and to
+put characters on the emulated terminal screen or perform some control function.</p> </li>
+<li id="GUID-CF81C9D8-E73F-5474-9127-10169285B30F"><p>the completion of any
+transmit operation that was in progress; if successful, there may be more
+data to transmit; if unsuccessful, some recovery action may be necessary</p> </li>
+</ul>
+<section id="GUID-30FFEA97-13E6-4269-ABD4-F5832E6D4C09"><title>Typical wait loop protocol</title> <p>The typical protocol
+of a wait loop is:</p> <ul>
+<li id="GUID-5810F6C5-0E37-53B0-AE99-5C9FF0295709"><p>The initialization phase
+which issues the first asynchronous requests.</p> </li>
+<li id="GUID-A4C2AAD7-EDDE-50B3-9B60-1DC0D7AD84A0"><p>Entry into the main
+loop which waits for <i>any</i> of these requests to complete and then handles
+the completion of one of them.</p> </li>
+<li id="GUID-3119355F-B74D-5AB3-AC77-FD0206411F8F"><p>Detection of conditions
+which imply termination of the program. Typically, one of the request completion
+handlers sets appropriate flags and the wait loop terminates.</p> </li>
+<li id="GUID-F4323300-37BB-5BCD-926C-E3EAB1F8018E"><p>Cleanup and final termination.</p> </li>
+</ul> <codeblock id="GUID-D788337C-777D-533A-8832-8B4F669B005E" xml:space="preserve">initialize;
+while (!finished())
+    {
+    wait for one or more requests to complete
+    decide which request completed, and handle it
+    }
+terminate;</codeblock> <p>Note that only one request should be handled per
+iteration of the loop. As part of the request completion handling process,
+the request may be re-issued, or new requests issued or existing ones cancelled.
+If the request cannot be identified, then the thread’s request semaphore has
+been signalled invalidly; this is indicative of a programming error, a condition
+is known as a stray signal - the wait loop should raise a panic.</p> </section>
+<section id="GUID-1487241F-94B2-46BC-BEDD-7079E2ED968D"><title>Multiple outstanding requests</title> <p>In the case of a
+terminal emulator which works with multiple outstanding requests, it must
+be able to service whichever request completes and must be able to re-issue
+a request, if necessary. For example, when one key has been processed, a request
+for the next key must be issued.</p> <p>In the following example:</p> <ul>
+<li id="GUID-E29D808F-332E-5859-8693-A94C76597BDC"><p>Call <codeph>Initialize()</codeph> to
+initialize the emulator.</p> </li>
+<li id="GUID-0DAA2678-04D4-584A-80C2-814457662D7B"><p>Implement <codeph>while()</codeph> to
+handle events.</p> </li>
+<li id="GUID-012E4941-8119-5047-A07B-FC3CB9A1A916"><p>Call the function <codeph>User::WaitForAnyRequest()</codeph> to
+wait for any request to complete instead of waiting for a specific request
+to complete.</p> </li>
+<li id="GUID-412709CA-945B-547F-8D73-7E282BF02223"><p>Identify the particular
+request that completed by checking the request status objects for a value
+not equal to <codeph>KRequestPending</codeph>.</p> </li>
+</ul> <codeblock id="GUID-99FCFA14-81E8-5594-A716-BDE02B237F44" xml:space="preserve">class TerminalEmulator
+    {
+public:
+    void MainLoop(); // main loop
+private:
+    void Initialize(); // initialize
+    void Terminate(); // clean up and terminate
+    TBool IsFinished(); // whether finished
+private:
+    // request status objects
+    TRequestStatus iKeyPressed; // whether key pressed
+    ...                         // ...etc for other request status
+    // handler functions
+    void HandleKeyPressed();    // handle key pressed
+    ...                         // ... etc other handlers
+    ...
+    };</codeblock> <codeblock id="GUID-1F3EBBF4-4141-5B4F-9B75-EFD3D820441B" xml:space="preserve">void TerminalEmulator::MainLoop()
+    {
+    Initialize();         // Initialize emulator
+    while (!IsFinished()) // Handle events until finished
+        {
+        // wait for any request to complete
+        User::WaitForAnyRequest();
+
+        // identify and handle the completed request
+        if (iKeyPressed!=KRequestPending)
+            {
+            HandleKeyPressed();
+            }
+        else if (iReceiveCompleted!=KRequestPending)
+                {
+                HandleReceiveCompleted();
+                }
+            else if (iTransmitCompleted!=KRequestPending)
+                    {
+                    HandleTransmitCompleted();
+                    }
+                else
+                    {
+                    // something we weren’t expecting
+                    // panic !
+                    }
+        }
+    }</codeblock> <p><b>Note</b> </p> <ul>
+<li id="GUID-12F90A7C-738C-5A3D-B4BB-1604B9FA0534"><p>The request status is
+set by the service provider to <codeph>KRequestPending</codeph> when a request
+is issued. When the request is complete, the service provider uses an operating
+system call to set the request status value to some other value — usually
+a standard error code — and then to wake up the thread that requested
+the service, causing its <codeph>WaitForAnyRequest()</codeph> to complete.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B1254526-3C72-59E7-88C0-667FC051379F"><title>Extended SMS Converter</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Extended SMS Converter uses the lossy mechanism to extend the alphabet of the standard converter. It maps a wider set of input character codes, including commonly-used Eastern European Unicode characters, to the standard 7-bit alphabet. This section describes the Extended SMS Converter and the alphabet it supports. </p> <section><title>Introduction</title> <p>Languages supported by this converter include Croatian, Czech, Estonian, Hungarian, Icelandic, Latvian, Lithuanian, Polish, Romanian, Serbian, Slovak, Slovenian, Turkish, Portuguese and Spanish. This converter is identified by the <codeph>KCharacterSetIdentifierExtendedSms7Bit</codeph> UID, which is defined in the <filepath>charconv.h</filepath> file. </p> <p>Any undefined Unicode is converted to a question mark (?)–GSM code <codeph>0x37</codeph>. Any code outside GSM <codeph>0x00</codeph> ~<codeph>0x7F</codeph> is converted to the Unicode replacement character <codeph>0xFFFD</codeph>. </p> </section> <section><title>Alphabet</title> <p>The highlighted boxes in Figure 1 illustrate the alphabet of the extended SMS converter: </p> <ul><li id="GUID-8FA8C1B0-6D40-5081-8D55-6EC36A42E7EB"><p>GSM 7-bit default alphabet </p> </li> <li id="GUID-2AA234D6-0592-5AEE-93B2-2CE9833E7AED"><p>GSM 7-bit default alphabet extension table </p> </li> <li id="GUID-189BB933-8DAC-5B20-B57B-90D4864FE362"><p>Extra lossy conversions–exclude 9 characters listed in Table 2 </p> </li> <li id="GUID-EEC2BFAC-81D4-5588-B56A-9A7509CEAD26"><p>Extended lossy conversions–shown as Lossy Characters 2 in Figure 1. </p> </li> </ul> <p>Figure 1 </p> <fig id="GUID-B2B055C3-132F-50D2-A071-AAF782E052E5"><image href="GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e382893_href.png" placement="inline"/></fig> <p>Table 1 lists the extra lossy conversions supported by this converter in addition to those supported by the standard converter. </p> <p>Table 1 </p> <table id="GUID-5CDD01C1-99D0-502A-A4E3-7C9514289424"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><tbody><row><entry><p> <b>Character</b>  </p> </entry> <entry><p> <b>Unicode</b>  </p> </entry> <entry><p> <b>GSM</b>  </p> </entry> <entry><p> <b>Converted Character</b>  </p> </entry> </row> <row><entry><p>Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS </p> </entry> <entry><p>U+038F </p> </entry> <entry><p>0x15 </p> </entry> <entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> </row> <row><entry><p>(NO-BREAK SPACE) </p> </entry> <entry><p>U+00A0 </p> </entry> <entry><p>0x20 </p> </entry> <entry><p>(SPACE) </p> </entry> </row> <row><entry><p>« LEFT-POINTING DOUBLE ANGLE QUOTATION MARK * </p> </entry> <entry><p>U+00AB </p> </entry> <entry><p>0x22 </p> </entry> <entry><p>" QUOTATION MARK </p> </entry> </row> <row><entry><p>» RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK * </p> </entry> <entry><p>U+00BB </p> </entry> <entry><p>0x22 </p> </entry> <entry><p>" QUOTATION MARK </p> </entry> </row> <row><entry><p>` GRAVE ACCENT </p> </entry> <entry><p>U+0060 </p> </entry> <entry><p>0x27 </p> </entry> <entry><p>' APOSTROPHE </p> </entry> </row> <row><entry><p>´ ACUTE ACCENT </p> </entry> <entry><p>U+00B4 </p> </entry> <entry><p>0x27 </p> </entry> <entry><p>' APOSTROPHE </p> </entry> </row> <row><entry><p>΄ GREEK TONOS </p> </entry> <entry><p>U+0384 </p> </entry> <entry><p>0x27 </p> </entry> <entry><p>' APOSTROPHE </p> </entry> </row> <row><entry><p>΅ GREEK DIALYTIKA TONOS </p> </entry> <entry><p>U+0385 </p> </entry> <entry><p>0x27 </p> </entry> <entry><p>' APOSTROPHE </p> </entry> </row> <row><entry><p>× MULTIPLICATION SIGN </p> </entry> <entry><p>U+00D7 </p> </entry> <entry><p>0x2A </p> </entry> <entry><p>* ASTERISK </p> </entry> </row> <row><entry><p>¸ CEDILLA </p> </entry> <entry><p>U+00B8 </p> </entry> <entry><p>0x2C </p> </entry> <entry><p>, COMMA </p> </entry> </row> <row><entry><p>SOFT HYPHEN </p> </entry> <entry><p>U+00AD </p> </entry> <entry><p>0x2D </p> </entry> <entry><p>- HYPHEN-MINUS </p> </entry> </row> <row><entry><p>· MIDDLE DOT </p> </entry> <entry><p>U+00B7 </p> </entry> <entry><p>0x2E </p> </entry> <entry><p>. FULL STOP </p> </entry> </row> <row><entry><p>÷ DIVISION SIGN </p> </entry> <entry><p>U+00F7 </p> </entry> <entry><p>0x2F </p> </entry> <entry><p>/ SOLIDUS </p> </entry> </row> <row><entry><p>¹ SUPERSCRIPT ONE </p> </entry> <entry><p>U+00B9 </p> </entry> <entry><p>0x31 </p> </entry> <entry><p>1 DIGIT ONE </p> </entry> </row> <row><entry><p>² SUPERSCRIPT TWO </p> </entry> <entry><p>U+00B2 </p> </entry> <entry><p>0x32 </p> </entry> <entry><p>2 DIGIT TWO </p> </entry> </row> <row><entry><p>³ SUPERSCRIPT THREE </p> </entry> <entry><p>U+00B3 </p> </entry> <entry><p>0x33 </p> </entry> <entry><p>3 DIGIT THREE </p> </entry> </row> <row><entry><p>; GREEK QUESTION MARK (Erotimatiko) </p> </entry> <entry><p>U+037E </p> </entry> <entry><p>0x3B </p> </entry> <entry><p>; SEMICOLON </p> </entry> </row> <row><entry><p>Ā LATIN CAPITAL LETTER A WITH MACRON </p> </entry> <entry><p>U+0100 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Ă LATIN CAPITAL LETTER A WITH BREVE </p> </entry> <entry><p>U+0102 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Ą LATIN CAPITAL LETTER A WITH OGONEK </p> </entry> <entry><p>U+0104 </p> </entry> <entry><p>0x41 </p> </entry> <entry><p>A LATIN CAPITAL LETTER A </p> </entry> </row> <row><entry><p>Ć LATIN CAPITAL LETTER C WITH ACUTE </p> </entry> <entry><p>U+0106 </p> </entry> <entry><p>0x43 </p> </entry> <entry><p>C LATIN CAPITAL LETTER C </p> </entry> </row> <row><entry><p>Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX </p> </entry> <entry><p>U+0108 </p> </entry> <entry><p>0x43 </p> </entry> <entry><p>C LATIN CAPITAL LETTER C </p> </entry> </row> <row><entry><p>Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE </p> </entry> <entry><p>U+010A </p> </entry> <entry><p>0x43 </p> </entry> <entry><p>C LATIN CAPITAL LETTER C </p> </entry> </row> <row><entry><p>Č LATIN CAPITAL LETTER C WITH CARON </p> </entry> <entry><p>U+010C </p> </entry> <entry><p>0x43 </p> </entry> <entry><p>C LATIN CAPITAL LETTER C </p> </entry> </row> <row><entry><p>Ð LATIN CAPITAL LETTER ETH (Icelandic) </p> </entry> <entry><p>U+00D0 </p> </entry> <entry><p>0x44 </p> </entry> <entry><p>D LATIN CAPITAL LETTER D </p> </entry> </row> <row><entry><p>Ď LATIN CAPITAL LETTER D WITH CARON </p> </entry> <entry><p>U+010E </p> </entry> <entry><p>0x44 </p> </entry> <entry><p>D LATIN CAPITAL LETTER D </p> </entry> </row> <row><entry><p>Đ LATIN CAPITAL LETTER D WITH STROKE </p> </entry> <entry><p>U+0110 </p> </entry> <entry><p>0x44 </p> </entry> <entry><p>D LATIN CAPITAL LETTER D </p> </entry> </row> <row><entry><p>Ē LATIN CAPITAL LETTER E WITH MACRON </p> </entry> <entry><p>U+0112 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ĕ LATIN CAPITAL LETTER E WITH BREVE </p> </entry> <entry><p>U+0114 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ė LATIN CAPITAL LETTER E WITH DOT ABOVE </p> </entry> <entry><p>U+0116 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ę LATIN CAPITAL LETTER E WITH OGONEK </p> </entry> <entry><p>U+0118 </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ě LATIN CAPITAL LETTER E WITH CARON </p> </entry> <entry><p>U+011A </p> </entry> <entry><p>0x45 </p> </entry> <entry><p>E LATIN CAPITAL LETTER E </p> </entry> </row> <row><entry><p>Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX </p> </entry> <entry><p>U+011C </p> </entry> <entry><p>0x47 </p> </entry> <entry><p>G LATIN CAPITAL LETTER G </p> </entry> </row> <row><entry><p>Ğ LATIN CAPITAL LETTER G WITH BREVE </p> </entry> <entry><p>U+011E </p> </entry> <entry><p>0x47 </p> </entry> <entry><p>G LATIN CAPITAL LETTER G </p> </entry> </row> <row><entry><p>Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE </p> </entry> <entry><p>U+0120 </p> </entry> <entry><p>0x47 </p> </entry> <entry><p>G LATIN CAPITAL LETTER G </p> </entry> </row> <row><entry><p>Ģ LATIN CAPITAL LETTER G WITH CEDILLA </p> </entry> <entry><p>U+0122 </p> </entry> <entry><p>0x47 </p> </entry> <entry><p>G LATIN CAPITAL LETTER G </p> </entry> </row> <row><entry><p>Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX </p> </entry> <entry><p>U+0124 </p> </entry> <entry><p>0x48 </p> </entry> <entry><p>H LATIN CAPITAL LETTER H </p> </entry> </row> <row><entry><p>Ħ LATIN CAPITAL LETTER H WITH STROKE </p> </entry> <entry><p>U+0126 </p> </entry> <entry><p>0x48 </p> </entry> <entry><p>H LATIN CAPITAL LETTER H </p> </entry> </row> <row><entry><p>Ĩ LATIN CAPITAL LETTER I WITH TILDE </p> </entry> <entry><p>U+0128 </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ī LATIN CAPITAL LETTER I WITH MACRON </p> </entry> <entry><p>U+012A </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ĭ LATIN CAPITAL LETTER I WITH BREVE </p> </entry> <entry><p>U+012C </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Į LATIN CAPITAL LETTER I WITH OGONEK </p> </entry> <entry><p>U+012E </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>İ LATIN CAPITAL LETTER I WITH DOT ABOVE </p> </entry> <entry><p>U+0130 </p> </entry> <entry><p>0x49 </p> </entry> <entry><p>I LATIN CAPITAL LETTER I </p> </entry> </row> <row><entry><p>Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX </p> </entry> <entry><p>U+0134 </p> </entry> <entry><p>0x4A </p> </entry> <entry><p>J LATIN CAPITAL LETTER J </p> </entry> </row> <row><entry><p>Ķ LATIN CAPITAL LETTER K WITH CEDILLA </p> </entry> <entry><p>U+0136 </p> </entry> <entry><p>0x4B </p> </entry> <entry><p>K LATIN CAPITAL LETTER K </p> </entry> </row> <row><entry><p>Ĺ LATIN CAPITAL LETTER L WITH ACUTE </p> </entry> <entry><p>U+0139 </p> </entry> <entry><p>0x4C </p> </entry> <entry><p>L LATIN CAPITAL LETTER L </p> </entry> </row> <row><entry><p>Ļ LATIN CAPITAL LETTER L WITH CEDILLA </p> </entry> <entry><p>U+013B </p> </entry> <entry><p>0x4C </p> </entry> <entry><p>L LATIN CAPITAL LETTER L </p> </entry> </row> <row><entry><p>Ľ LATIN CAPITAL LETTER L WITH CARON </p> </entry> <entry><p>U+013D </p> </entry> <entry><p>0x4C </p> </entry> <entry><p>L LATIN CAPITAL LETTER L </p> </entry> </row> <row><entry><p>Ŀ LATIN CAPITAL LETTER L WITH MIDDLE DOT </p> </entry> <entry><p>U+013F </p> </entry> <entry><p>0x4C </p> </entry> <entry><p>L LATIN CAPITAL LETTER L </p> </entry> </row> <row><entry><p>Ł LATIN CAPITAL LETTER L WITH STROKE </p> </entry> <entry><p>U+0141 </p> </entry> <entry><p>0x4C </p> </entry> <entry><p>L LATIN CAPITAL LETTER L </p> </entry> </row> <row><entry><p>Ń LATIN CAPITAL LETTER N WITH ACUTE </p> </entry> <entry><p>U+0143 </p> </entry> <entry><p>0x4E </p> </entry> <entry><p>N LATIN CAPITAL LETTER N </p> </entry> </row> <row><entry><p>Ņ LATIN CAPITAL LETTER N WITH CEDILLA </p> </entry> <entry><p>U+0145 </p> </entry> <entry><p>0x4E </p> </entry> <entry><p>N LATIN CAPITAL LETTER N </p> </entry> </row> <row><entry><p>Ň LATIN CAPITAL LETTER N WITH CARON </p> </entry> <entry><p>U+0147 </p> </entry> <entry><p>0x4E </p> </entry> <entry><p>N LATIN CAPITAL LETTER N </p> </entry> </row> <row><entry><p>Ŋ LATIN CAPITAL LETTER ENG (Sami) </p> </entry> <entry><p>U+014A </p> </entry> <entry><p>0x4E </p> </entry> <entry><p>N LATIN CAPITAL LETTER N </p> </entry> </row> <row><entry><p>Ō LATIN CAPITAL LETTER O WITH MACRON </p> </entry> <entry><p>U+014C </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ŏ LATIN CAPITAL LETTER O WITH BREVE </p> </entry> <entry><p>U+014E </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Œ LATIN CAPITAL LIGATURE OE </p> </entry> <entry><p>U+0152 </p> </entry> <entry><p>0x4F </p> </entry> <entry><p>O LATIN CAPITAL LETTER O </p> </entry> </row> <row><entry><p>Ŕ LATIN CAPITAL LETTER R WITH ACUTE </p> </entry> <entry><p>U+0154 </p> </entry> <entry><p>0x52 </p> </entry> <entry><p>R LATIN CAPITAL LETTER R </p> </entry> </row> <row><entry><p>Ŗ LATIN CAPITAL LETTER R WITH CEDILLA </p> </entry> <entry><p>U+0156 </p> </entry> <entry><p>0x52 </p> </entry> <entry><p>R LATIN CAPITAL LETTER R </p> </entry> </row> <row><entry><p>Ř LATIN CAPITAL LETTER R WITH CARON </p> </entry> <entry><p>U+0158 </p> </entry> <entry><p>0x52 </p> </entry> <entry><p>R LATIN CAPITAL LETTER R </p> </entry> </row> <row><entry><p>Ś LATIN CAPITAL LETTER S WITH ACUTE </p> </entry> <entry><p>U+015A </p> </entry> <entry><p>0x53 </p> </entry> <entry><p>S LATIN CAPITAL LETTER S </p> </entry> </row> <row><entry><p>Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX </p> </entry> <entry><p>U+015C </p> </entry> <entry><p>0x53 </p> </entry> <entry><p>S LATIN CAPITAL LETTER S </p> </entry> </row> <row><entry><p>Ş LATIN CAPITAL LETTER S WITH CEDILLA * </p> </entry> <entry><p>U+015E </p> </entry> <entry><p>0x53 </p> </entry> <entry><p>S LATIN CAPITAL LETTER S </p> </entry> </row> <row><entry><p>Š LATIN CAPITAL LETTER S WITH CARON </p> </entry> <entry><p>U+0160 </p> </entry> <entry><p>0x53 </p> </entry> <entry><p>S LATIN CAPITAL LETTER S </p> </entry> </row> <row><entry><p>Þ LATIN CAPITAL LETTER THORN (Icelandic) </p> </entry> <entry><p>U+00DE </p> </entry> <entry><p>0x54 </p> </entry> <entry><p>T LATIN CAPITAL LETTER T </p> </entry> </row> <row><entry><p>Ţ LATIN CAPITAL LETTER T WITH CEDILLA * </p> </entry> <entry><p>U+0162 </p> </entry> <entry><p>0x54 </p> </entry> <entry><p>T LATIN CAPITAL LETTER T </p> </entry> </row> <row><entry><p>Ť LATIN CAPITAL LETTER T WITH CARON </p> </entry> <entry><p>U+0164 </p> </entry> <entry><p>0x54 </p> </entry> <entry><p>T LATIN CAPITAL LETTER T </p> </entry> </row> <row><entry><p>Ŧ LATIN CAPITAL LETTER T WITH STROKE </p> </entry> <entry><p>U+0166 </p> </entry> <entry><p>0x54 </p> </entry> <entry><p>T LATIN CAPITAL LETTER T </p> </entry> </row> <row><entry><p>Ũ LATIN CAPITAL LETTER U WITH TILDE </p> </entry> <entry><p>U+0168 </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Ū LATIN CAPITAL LETTER U WITH MACRON </p> </entry> <entry><p>U+016A </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Ŭ LATIN CAPITAL LETTER U WITH BREVE </p> </entry> <entry><p>U+016C </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Ů LATIN CAPITAL LETTER U WITH RING ABOVE </p> </entry> <entry><p>U+016E </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Ų LATIN CAPITAL LETTER U WITH OGONEK </p> </entry> <entry><p>U+0172 </p> </entry> <entry><p>0x55 </p> </entry> <entry><p>U LATIN CAPITAL LETTER U </p> </entry> </row> <row><entry><p>Ŵ LATIN CAPITAL LETTER W WITH CIRCUMFLEX </p> </entry> <entry><p>U+0174 </p> </entry> <entry><p>0x57 </p> </entry> <entry><p>W LATIN CAPITAL LETTER W </p> </entry> </row> <row><entry><p>Ŷ LATIN CAPITAL LETTER Y WITH CIRCUMFLEX </p> </entry> <entry><p>U+0176 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS </p> </entry> <entry><p>U+0178 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>Ź LATIN CAPITAL LETTER Z WITH ACUTE </p> </entry> <entry><p>U+0179 </p> </entry> <entry><p>0x5A </p> </entry> <entry><p>Z LATIN CAPITAL LETTER Z </p> </entry> </row> <row><entry><p>Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE </p> </entry> <entry><p>U+017B </p> </entry> <entry><p>0x5A </p> </entry> <entry><p>Z LATIN CAPITAL LETTER Z </p> </entry> </row> <row><entry><p>Ž LATIN CAPITAL LETTER Z WITH CARON </p> </entry> <entry><p>U+017D </p> </entry> <entry><p>0x5A </p> </entry> <entry><p>Z LATIN CAPITAL LETTER Z </p> </entry> </row> <row><entry><p>Ö LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry> <entry><p>U+00D6 </p> </entry> <entry><p>0x5C </p> </entry> <entry><p>Ö LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry> </row> <row><entry><p>Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE </p> </entry> <entry><p>U+0150 </p> </entry> <entry><p>0x5C </p> </entry> <entry><p>Ö LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry> </row> <row><entry><p>Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE </p> </entry> <entry><p>U+0170 </p> </entry> <entry><p>0x5E </p> </entry> <entry><p>Ü LATIN CAPITAL LETTER U WITH DIAERESIS </p> </entry> </row> <row><entry><p>ā LATIN SMALL LETTER A WITH MACRON </p> </entry> <entry><p>U+0101 </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>ă LATIN SMALL LETTER A WITH BREVE </p> </entry> <entry><p>U+0103 </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>ą LATIN SMALL LETTER A WITH OGONEK </p> </entry> <entry><p>U+0105 </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>ª FEMININE ORDINAL INDICATOR </p> </entry> <entry><p>U+00AA </p> </entry> <entry><p>0x61 </p> </entry> <entry><p>a LATIN SMALL LETTER A </p> </entry> </row> <row><entry><p>ć LATIN SMALL LETTER C WITH ACUTE </p> </entry> <entry><p>U+0107 </p> </entry> <entry><p>0x63 </p> </entry> <entry><p>c LATIN SMALL LETTER C </p> </entry> </row> <row><entry><p>ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX </p> </entry> <entry><p>U+0109 </p> </entry> <entry><p>0x63 </p> </entry> <entry><p>c LATIN SMALL LETTER C </p> </entry> </row> <row><entry><p>ċ LATIN SMALL LETTER C WITH DOT ABOVE </p> </entry> <entry><p>U+010B </p> </entry> <entry><p>0x63 </p> </entry> <entry><p>c LATIN SMALL LETTER C </p> </entry> </row> <row><entry><p>č LATIN SMALL LETTER C WITH CARON </p> </entry> <entry><p>U+010D </p> </entry> <entry><p>0x63 </p> </entry> <entry><p>c LATIN SMALL LETTER C </p> </entry> </row> <row><entry><p>¢ CENT SIGN </p> </entry> <entry><p>U+00A2 </p> </entry> <entry><p>0x63 </p> </entry> <entry><p>c LATIN SMALL LETTER C </p> </entry> </row> <row><entry><p>© COPYRIGHT SIGN </p> </entry> <entry><p>U+00A9 </p> </entry> <entry><p>0x63 </p> </entry> <entry><p>c LATIN SMALL LETTER C </p> </entry> </row> <row><entry><p>ð LATIN SMALL LETTER ETH (Icelandic) </p> </entry> <entry><p>U+00F0 </p> </entry> <entry><p>0x64 </p> </entry> <entry><p>d LATIN SMALL LETTER D </p> </entry> </row> <row><entry><p>ď LATIN SMALL LETTER D WITH CARON </p> </entry> <entry><p>U+010F </p> </entry> <entry><p>0x64 </p> </entry> <entry><p>d LATIN SMALL LETTER D </p> </entry> </row> <row><entry><p>đ LATIN SMALL LETTER D WITH STROKE </p> </entry> <entry><p>U+0111 </p> </entry> <entry><p>0x64 </p> </entry> <entry><p>d LATIN SMALL LETTER D </p> </entry> </row> <row><entry><p>ē LATIN SMALL LETTER E WITH MACRON </p> </entry> <entry><p>U+0113 </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>ĕ LATIN SMALL LETTER E WITH BREVE </p> </entry> <entry><p>U+0115 </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>ė LATIN SMALL LETTER E WITH DOT ABOVE </p> </entry> <entry><p>U+0117 </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>ę LATIN SMALL LETTER E WITH OGONEK </p> </entry> <entry><p>U+0119 </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>ě LATIN SMALL LETTER E WITH CARON </p> </entry> <entry><p>U+011B </p> </entry> <entry><p>0x65 </p> </entry> <entry><p>e LATIN SMALL LETTER E </p> </entry> </row> <row><entry><p>ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX </p> </entry> <entry><p>U+011D </p> </entry> <entry><p>0x67 </p> </entry> <entry><p>g LATIN SMALL LETTER G </p> </entry> </row> <row><entry><p>ğ LATIN SMALL LETTER G WITH BREVE </p> </entry> <entry><p>U+011F </p> </entry> <entry><p>0x67 </p> </entry> <entry><p>g LATIN SMALL LETTER G </p> </entry> </row> <row><entry><p>ġ LATIN SMALL LETTER G WITH DOT ABOVE </p> </entry> <entry><p>U+0121 </p> </entry> <entry><p>0x67 </p> </entry> <entry><p>g LATIN SMALL LETTER G </p> </entry> </row> <row><entry><p>ģ LATIN SMALL LETTER G WITH CEDILLA </p> </entry> <entry><p>U+0123 </p> </entry> <entry><p>0x67 </p> </entry> <entry><p>g LATIN SMALL LETTER G </p> </entry> </row> <row><entry><p>ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX </p> </entry> <entry><p>U+0125 </p> </entry> <entry><p>0x68 </p> </entry> <entry><p>h LATIN SMALL LETTER H </p> </entry> </row> <row><entry><p>ħ LATIN SMALL LETTER H WITH STROKE </p> </entry> <entry><p>U+0127 </p> </entry> <entry><p>0x68 </p> </entry> <entry><p>h LATIN SMALL LETTER H </p> </entry> </row> <row><entry><p>ĩ LATIN SMALL LETTER I WITH TILDE </p> </entry> <entry><p>U+0129 </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>ī LATIN SMALL LETTER I WITH MACRON </p> </entry> <entry><p>U+012B </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>ĭ LATIN SMALL LETTER I WITH BREVE </p> </entry> <entry><p>U+012D </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>į LATIN SMALL LETTER I WITH OGONEK </p> </entry> <entry><p>U+012F </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>ı LATIN SMALL LETTER DOTLESS I </p> </entry> <entry><p>U+0131 </p> </entry> <entry><p>0x69 </p> </entry> <entry><p>i LATIN SMALL LETTER I </p> </entry> </row> <row><entry><p>ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX </p> </entry> <entry><p>U+0135 </p> </entry> <entry><p>0x6A </p> </entry> <entry><p>j LATIN SMALL LETTER J </p> </entry> </row> <row><entry><p>ķ LATIN SMALL LETTER K WITH CEDILLA </p> </entry> <entry><p>U+0137 </p> </entry> <entry><p>0x6B </p> </entry> <entry><p>k LATIN SMALL LETTER K </p> </entry> </row> <row><entry><p>ĸ LATIN SMALL LETTER KRA (Greenlandic) </p> </entry> <entry><p>U+0138 </p> </entry> <entry><p>0x6B </p> </entry> <entry><p>k LATIN SMALL LETTER K </p> </entry> </row> <row><entry><p>ĺ LATIN SMALL LETTER L WITH ACUTE </p> </entry> <entry><p>U+013A </p> </entry> <entry><p>0x6C </p> </entry> <entry><p>l LATIN SMALL LETTER L </p> </entry> </row> <row><entry><p>ļ LATIN SMALL LETTER L WITH CEDILLA </p> </entry> <entry><p>U+013C </p> </entry> <entry><p>0x6C </p> </entry> <entry><p>l LATIN SMALL LETTER L </p> </entry> </row> <row><entry><p>ľ LATIN SMALL LETTER L WITH CARON </p> </entry> <entry><p>U+013E </p> </entry> <entry><p>0x6C </p> </entry> <entry><p>l LATIN SMALL LETTER L </p> </entry> </row> <row><entry><p>ŀ LATIN SMALL LETTER L WITH MIDDLE DOT </p> </entry> <entry><p>U+0140 </p> </entry> <entry><p>0x6C </p> </entry> <entry><p>l LATIN SMALL LETTER L </p> </entry> </row> <row><entry><p>ł LATIN SMALL LETTER L WITH STROKE </p> </entry> <entry><p>U+0142 </p> </entry> <entry><p>0x6C </p> </entry> <entry><p>l LATIN SMALL LETTER L </p> </entry> </row> <row><entry><p>ń LATIN SMALL LETTER N WITH ACUTE </p> </entry> <entry><p>U+0144 </p> </entry> <entry><p>0x6E </p> </entry> <entry><p>n LATIN SMALL LETTER N </p> </entry> </row> <row><entry><p>ņ LATIN SMALL LETTER N WITH CEDILLA </p> </entry> <entry><p>U+0146 </p> </entry> <entry><p>0x6E </p> </entry> <entry><p>n LATIN SMALL LETTER N </p> </entry> </row> <row><entry><p>ň LATIN SMALL LETTER N WITH CARON </p> </entry> <entry><p>U+0148 </p> </entry> <entry><p>0x6E </p> </entry> <entry><p>n LATIN SMALL LETTER N </p> </entry> </row> <row><entry><p>ʼn LATIN SMALL LETTER N PRECEDED BY APOSTROPHE </p> </entry> <entry><p>U+0149 </p> </entry> <entry><p>0x6E </p> </entry> <entry><p>n LATIN SMALL LETTER N </p> </entry> </row> <row><entry><p> ŋ LATIN SMALL LETTER ENG (Sami) </p> </entry> <entry><p>U+014B </p> </entry> <entry><p>0x6E </p> </entry> <entry><p>n LATIN SMALL LETTER N </p> </entry> </row> <row><entry><p>ō LATIN SMALL LETTER O WITH MACRON </p> </entry> <entry><p>U+014D </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>ŏ LATIN SMALL LETTER O WITH BREVE </p> </entry> <entry><p>U+014F </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>° DEGREE SIGN </p> </entry> <entry><p>U+00B0 </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>º MASCULINE ORDINAL INDICATOR </p> </entry> <entry><p>U+00BA </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>œ LATIN SMALL LIGATURE OE </p> </entry> <entry><p>U+0153 </p> </entry> <entry><p>0x6F </p> </entry> <entry><p>o LATIN SMALL LETTER O </p> </entry> </row> <row><entry><p>ŕ LATIN SMALL LETTER R WITH ACUTE </p> </entry> <entry><p>U+0155 </p> </entry> <entry><p>0x72 </p> </entry> <entry><p>r LATIN SMALL LETTER R </p> </entry> </row> <row><entry><p>ŗ LATIN SMALL LETTER R WITH CEDILLA </p> </entry> <entry><p>U+0157 </p> </entry> <entry><p>0x72 </p> </entry> <entry><p>r LATIN SMALL LETTER R </p> </entry> </row> <row><entry><p>ř LATIN SMALL LETTER R WITH CARON </p> </entry> <entry><p>U+0159 </p> </entry> <entry><p>0x72 </p> </entry> <entry><p>r LATIN SMALL LETTER R </p> </entry> </row> <row><entry><p>® REGISTERED SIGN </p> </entry> <entry><p>U+00AE </p> </entry> <entry><p>0x72 </p> </entry> <entry><p>r LATIN SMALL LETTER R </p> </entry> </row> <row><entry><p>ś LATIN SMALL LETTER S WITH ACUTE </p> </entry> <entry><p>U+015B </p> </entry> <entry><p>0x73 </p> </entry> <entry><p>s LATIN SMALL LETTER S </p> </entry> </row> <row><entry><p>ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX </p> </entry> <entry><p>U+015D </p> </entry> <entry><p>0x73 </p> </entry> <entry><p>s LATIN SMALL LETTER S </p> </entry> </row> <row><entry><p>ş LATIN SMALL LETTER S WITH CEDILLA * </p> </entry> <entry><p>U+015F </p> </entry> <entry><p>0x73 </p> </entry> <entry><p>s LATIN SMALL LETTER S </p> </entry> </row> <row><entry><p>š LATIN SMALL LETTER S WITH CARON </p> </entry> <entry><p>U+0161 </p> </entry> <entry><p>0x73 </p> </entry> <entry><p>s LATIN SMALL LETTER S </p> </entry> </row> <row><entry><p>þ LATIN SMALL LETTER THORN (Icelandic) </p> </entry> <entry><p>U+00FE </p> </entry> <entry><p>0x74 </p> </entry> <entry><p>t LATIN SMALL LETTER T </p> </entry> </row> <row><entry><p>ţ LATIN SMALL LETTER T WITH CEDILLA * </p> </entry> <entry><p>U+0163 </p> </entry> <entry><p>0x74 </p> </entry> <entry><p>t LATIN SMALL LETTER T </p> </entry> </row> <row><entry><p>ť LATIN SMALL LETTER T WITH CARON </p> </entry> <entry><p>U+0165 </p> </entry> <entry><p>0x74 </p> </entry> <entry><p>t LATIN SMALL LETTER T </p> </entry> </row> <row><entry><p>ŧ LATIN SMALL LETTER T WITH STROKE </p> </entry> <entry><p>U+0167 </p> </entry> <entry><p>0x74 </p> </entry> <entry><p>t LATIN SMALL LETTER T </p> </entry> </row> <row><entry><p>ũ LATIN SMALL LETTER U WITH TILDE </p> </entry> <entry><p>U+0169 </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>ū LATIN SMALL LETTER U WITH MACRON </p> </entry> <entry><p>U+016B </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>ŭ LATIN SMALL LETTER U WITH BREVE </p> </entry> <entry><p>U+016D </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>ů LATIN SMALL LETTER U WITH RING ABOVE </p> </entry> <entry><p>U+016F </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>ų LATIN SMALL LETTER U WITH OGONEK </p> </entry> <entry><p>U+0173 </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>µ MICRO SIGN </p> </entry> <entry><p>U+00B5 </p> </entry> <entry><p>0x75 </p> </entry> <entry><p>u LATIN SMALL LETTER U </p> </entry> </row> <row><entry><p>ŵ LATIN SMALL LETTER W WITH CIRCUMFLEX </p> </entry> <entry><p>U+0175 </p> </entry> <entry><p>0x77 </p> </entry> <entry><p>w LATIN SMALL LETTER W </p> </entry> </row> <row><entry><p>ŷ LATIN SMALL LETTER Y WITH CIRCUMFLEX </p> </entry> <entry><p>U+0177 </p> </entry> <entry><p>0x79 </p> </entry> <entry><p>y LATIN SMALL LETTER Y </p> </entry> </row> <row><entry><p>ź LATIN SMALL LETTER Z WITH ACUTE </p> </entry> <entry><p>U+017A </p> </entry> <entry><p>0x7A </p> </entry> <entry><p>z LATIN SMALL LETTER Z </p> </entry> </row> <row><entry><p> ż LATIN SMALL LETTER Z WITH DOT ABOVE </p> </entry> <entry><p>U+017C </p> </entry> <entry><p>0x7A </p> </entry> <entry><p>z LATIN SMALL LETTER Z </p> </entry> </row> <row><entry><p>ž LATIN SMALL LETTER Z WITH CARON </p> </entry> <entry><p>U+017E </p> </entry> <entry><p>0x7A </p> </entry> <entry><p>z LATIN SMALL LETTER Z </p> </entry> </row> <row><entry><p>ő LATIN SMALL LETTER O WITH DOUBLE ACUTE </p> </entry> <entry><p>U+0151 </p> </entry> <entry><p>0x7C </p> </entry> <entry><p>ö LATIN SMALL LETTER O WITH DIAERESIS </p> </entry> </row> <row><entry><p>ű LATIN SMALL LETTER U WITH DOUBLE ACUTE </p> </entry> <entry><p>U+0171 </p> </entry> <entry><p>0x7E </p> </entry> <entry><p>ü LATIN SMALL LETTER U WITH DIAERESIS </p> </entry> </row> </tbody> </tgroup> </table> <p>Table 2 lists the 9 characters in Lossy Character 1 supported by Standard SMS Converter but not by Extended SMS Converter. </p> <p>Table 2 </p> <table id="GUID-B6A56A5A-12EB-5AA0-9541-E7916F6509C6"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><tbody><row><entry><p> <b>Character</b>  </p> </entry> <entry><p> <b>Unicode</b>  </p> </entry> <entry><p> <b>GSM</b>  </p> </entry> <entry><p> <b>Converted Character</b>  </p> </entry> </row> <row><entry><p>ϕ GREEK PHI SYMBOL </p> </entry> <entry><p>0x03D5 </p> </entry> <entry><p>0x12 </p> </entry> <entry><p>Φ GREEK CAPITAL LETTER PHI </p> </entry> </row> <row><entry><p>Ω OHM SIGN </p> </entry> <entry><p>0x2126 </p> </entry> <entry><p>0x15 </p> </entry> <entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry> </row> <row><entry><p>∏ N-ARY PRODUCT </p> </entry> <entry><p>0x220F </p> </entry> <entry><p>0x16 </p> </entry> <entry><p>Π GREEK CAPITAL LETTER PI </p> </entry> </row> <row><entry><p>∑ N-ARY SUMMATION </p> </entry> <entry><p>0x2211 </p> </entry> <entry><p>0x18 </p> </entry> <entry><p>Σ GREEK CAPITAL LETTER SIGMA </p> </entry> </row> <row><entry><p>ϑ GREEK THETA SYMBOL </p> </entry> <entry><p>0x03D1 </p> </entry> <entry><p>0x19 </p> </entry> <entry><p>Θ GREEK CAPITAL LETTER THETA </p> </entry> </row> <row><entry><p>ϐ GREEK BETA SYMBOL </p> </entry> <entry><p>0x03D0 </p> </entry> <entry><p>0x42 </p> </entry> <entry><p>B LATIN CAPITAL LETTER B </p> </entry> </row> <row><entry><p>ϒ GREEK UPSILON WITH HOOK SYMBOL </p> </entry> <entry><p>0x03D2 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ϓ GREEK UPSILON WITH ACUTE AND HOOK SYMBOL </p> </entry> <entry><p>0x03D3 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> <row><entry><p>ϔ GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL </p> </entry> <entry><p>0x03D4 </p> </entry> <entry><p>0x59 </p> </entry> <entry><p>Y LATIN CAPITAL LETTER Y </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>See also</title> <p><xref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita">SMS Encodings and Converters Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e336622_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e188883_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B142FB0F-518F-436A-83D1-57BDE9671E44_d0e55158_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01" xml:lang="en"><title>Networking Services Guide</title><shortdesc>Networking Services provides a standard framework for accessing network services and actual implementations of network protocols. The components of the Networking Services are closely related to the framework provided by the Communications Framework module. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita"><linktext>Cellular Baseband Services
+  Guide</linktext> </link> <link href="GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04.dita"><linktext>Communications
+  Framework Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B16A0370-F18F-4035-B3D6-ED550D8D68F9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B16A0370-F18F-4035-B3D6-ED550D8D68F9" xml:lang="en"><title>Presentation
+of text</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D15030E7-08E0-4FBD-AA00-90C63DE0A09B"><title>Alignment</title><p>The
+default text alignment in left-to-right languages is on the left. There are
+only a few exceptions to this in specific cases, for example, soft indicators
+in the Idle state, which are right-aligned.</p><p>In right-to-left UI languages,
+the default text alignment is on the right.</p></section>
+<section id="GUID-A95C4D65-947E-4F69-B165-7CE080CF53CD"><title>Truncation</title><p>When
+a text does not fit into the view where it is displayed, it should be truncated.
+By default, texts are truncated from the end, and ellipsis (...) is displayed
+at the end of the truncated text as an indication. There are two exceptions
+to this main rule:</p><ul>
+<li><p>Phone numbers are truncated from the beginning, because the first digits
+of a phone number are usually considered less important than the numbers at
+the end.</p></li>
+<li><p>This general rule may be overridden in certain detailed components,
+where the latter part of the text is more differentiating than the beginning.
+Such might be, for example, queries to select an email address.</p></li>
+</ul></section>
+<section id="GUID-B2BC7CED-1704-4D90-A5A5-7FB434BE3704"><title>Marquee scrolling</title><p>When
+a text does not fit to a list view, the list text can be horizontally scrolling.
+Marquee scrolling should be used for texts that are not generated by the phone
+and for which truncation is not desired for some reason. For example, a Web
+address may not fit to one row of text in a list and it may be important to
+see the whole address.</p><p>Scrolling is done only when the item is highlighted.
+The text is scrolled in only one direction, and it does not loop.</p></section>
+<section id="GUID-6541BB9F-7232-47F3-ACFA-AEC260CA3EA3"><title>Content zooming</title><p>Content
+zooming is supported in the various lists, forms and settings in the Symbian
+UI. In this way, users can either use smaller font sizes to fit more information
+on the screen, or they can increase the text size if necessary. The user can
+choose between three different zoom levels using General Settings.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e321822_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1800856-3516-5D22-B1C5-556866CDDF46.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B1800856-3516-5D22-B1C5-556866CDDF46" xml:lang="en"><title>bldmake
+command syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <filepath>bldmake</filepath> tool processes the component description
+file (<filepath>bld.inf</filepath>) in the current directory and generates
+the batch file <filepath>abld.bat</filepath> and several build batch makefiles
+(<filepath>.make</filepath>). The makefiles are used by <filepath>abld</filepath> to
+perform the various stages of building the component. </p>
+<p><b>Invocation syntax </b> </p>
+<p> <codeph>bldmake</codeph> [ <codeph>options</codeph> ] <codeph>command</codeph> [ <codeph>platform</codeph> ] </p>
+<p>Details of <varname>command</varname> and <varname>options</varname> are
+given in the following tables: </p>
+<p><b>Command </b> </p>
+<table id="GUID-36F68EE0-3993-55A3-8FE8-B0AA83865FCE">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry><b>Command</b></entry>
+<entry><b>Description</b></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>bldfiles</codeph>  </p> </entry>
+<entry><p>Creates abld and the project makefiles. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>clean</codeph>  </p> </entry>
+<entry><p>Removes all files created by bldmake. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>inf</codeph>  </p> </entry>
+<entry><p>Displays basic <filepath>bld.inf</filepath> syntax. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>plat</codeph>  </p> </entry>
+<entry><p>Displays a list of the supported platforms, and the macros defined
+for each for the preprocessing of <codeph>prj_mmpfiles</codeph> and <codeph>prj_testmmpfiles</codeph> sections
+of bld.inf files. </p> <p>If a platform name is given, just the macros for
+that platform are displayed: for example, <codeph>bldmake plat thumb</codeph>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p><b>Options </b> </p>
+<table id="GUID-4BBBDC0A-652C-5079-B581-11CF52CBD9C7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry><b>Options</b></entry>
+<entry><b>Description</b></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>-v</codeph>  </p> </entry>
+<entry><p>Instructs <filepath>bldmake</filepath> to print progress messages. </p> <p>Only
+error messages are printed by default. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> -k</codeph> or <codeph>-keepgoing </codeph>  </p> </entry>
+<entry><p>Instructs <filepath>bldmake</filepath> to continue with the process
+even if the files specified in <xref href="GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9.dita">bld.inf
+file</xref> are missing. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p><b>Platform </b> </p>
+<p>Defines the target for which to create the makefiles. If not specified,
+all the default targets are assumed. </p>
+<p>For v9.1, the default targets are WINSCW, GCCXML, ARMV5, and CW_IDE. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC" xml:lang="en"><title>Certificate
+Store Human-Readable File Formats</title><shortdesc>This section provides details of the human-readable form of the
+following certificate store files: </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><ul>
+<li id="GUID-16491000-D0D0-520A-B34F-EAA564D3F026"><p><xref href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita#GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC/GUID-1CC16061-C0BA-5039-BABC-797279366531">File certificate store</xref>  </p> </li>
+<li id="GUID-B475B679-D428-5E43-8A1C-4200663A0ACD"><p><xref href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita#GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC/GUID-A8DABE5B-AF91-5775-8FBB-00B85E656D12">SWI certificate store</xref>  </p> </li>
+<li id="GUID-5081908D-4031-595C-A962-CB53990361FE"><p><xref href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita#GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC/GUID-015E1FBA-AD2D-5BB0-8D5D-5F9C537A127D">Certificate client files</xref>  </p> </li>
+</ul><note> For details of the fields that make up these certificate store
+files, see <xref href="GUID-46D6DF29-38F7-5842-9FDD-82754AE8D9A0.dita">Human-Readable
+File Formats Reference</xref>.</note> </section>
+<section id="GUID-1CC16061-C0BA-5039-BABC-797279366531"><title>File certificate
+store</title> <p>Use the <codeph>--hfilecertstore</codeph> command-line option
+to specify the file certificate store in human-readable form. The file certificate
+store has the following format: </p> <codeblock id="GUID-39C9F9C1-7909-5BE6-9295-E1F2FDB2148A" xml:space="preserve">
+StartCertStoreEntries
+
+            StartEntry "Root5CA"
+
+                        Deletable true
+
+                        Format EX509Certificate
+
+                        CertOwnerType ECACertificate
+
+                        SubjectKeyId auto
+
+                        IssuerKeyId auto
+
+                        StartApplicationList
+
+                                    # Entry 1
+
+                                                    Application "Server Authentication"
+
+                        EndApplicationList
+
+                        Trusted true
+
+                        DataFileName "root5ca.pem"
+
+            EndEntry
+
+EndCertStoreEntries
+</codeblock> <p> <b>Notes:</b>  </p> <ul>
+<li id="GUID-A2A73C93-6B0F-5122-8839-33095714286C"><p>All the fields are mandatory
+and must be in the specified order. </p> </li>
+<li id="GUID-9F2D2186-207C-56C9-8C43-8687ECE5030A"><p>Text outside quotes
+is not case-sensitive. </p> </li>
+</ul> </section>
+<refsyn id="GUID-A8DABE5B-AF91-5775-8FBB-00B85E656D12"><title>SWI certificate
+store</title> <p>Use the <codeph>--hswicertstore</codeph> command-line option
+to specify the Software Install (SWI) certificate store in human-readable
+form. The SWI certificate store is of the following format: </p> <codeblock id="GUID-E7504CCF-7CAD-550B-8567-CF89480D4C05" xml:space="preserve">
+StartSwiCertStoreEntries
+
+            StartEntry "SymbianA"    
+
+                        Format EX509Certificate
+
+                        CertOwnerType ECACertificate
+
+                        SubjectKeyId auto
+
+                        IssuerKeyId auto
+
+                        StartApplicationList
+
+                                    # Entry 1
+
+                                                    Application "SW Install"
+
+                                    # Entry 2
+
+                                                    Application "SW Install OCSP Signing"
+
+                        EndApplicationList
+
+                        Trusted true
+
+                        DataFileName "cert.der"
+
+                        CapabilitySet { TCB CommDD PowerMgmt MultimediaDD ReadDeviceData 
+WriteDeviceData DRM TrustedUI ProtServ DiskAdmin NetworkControl 
+AllFiles SwEvent NetworkServices LocalServices ReadUserData 
+WriteUserData Location SurroundingsDD UserEnvironment }
+
+                        Mandatory false
+
+                        SystemUpgrade false
+
+            EndEntry
+
+EndSwiCertStoreEntries
+</codeblock> <p> <b>Note:</b>  </p> <ul>
+<li id="GUID-4C4BFD71-F93B-5BC1-981F-75D7D39714CE"><p>All the fields are mandatory
+and must be in the specified order. </p> </li>
+<li id="GUID-A0FC27EF-5D48-5EB1-A395-1B719C6D0399"><p>Text outside quotes
+is not case-sensitive. </p> </li>
+</ul> </refsyn>
+<refsyn id="GUID-015E1FBA-AD2D-5BB0-8D5D-5F9C537A127D"><title>Certificate
+client files</title> <p>Use the <codeph>–hcertclients</codeph> command-line
+option to specify the certificate client files in human-readable form. A certificate
+client file has the following format: </p> <codeblock id="GUID-3B21193B-EA11-5A8A-9FED-004A21CB392D" xml:space="preserve">
+
+StartClientInfo
+
+        # Entry 1
+
+        Uid 0x100042ab
+
+        Name "SW Install"
+
+        # Entry 2
+
+        Uid 0x1000a8b6
+
+        Name "SW Install OCSP Signing"
+
+        # Entry 3
+
+        Uid 0x101f9b28
+
+        Name "MIDlet Installation"
+
+        # Entry 4
+
+        Uid 0x1000183d
+
+        Name "Server Authentication"
+
+EndClientInfo
+
+</codeblock> <p> <b>Important:</b>  </p> <ul>
+<li id="GUID-496D4072-75FD-5598-BC43-A5895392D15B"><p>All the fields are mandatory
+and must be in the specified order. </p> </li>
+<li id="GUID-B500E6D5-3D42-5847-B075-B6EFFEA75A22"><p>Only one entry is allowed
+for each UID. </p> </li>
+</ul> </refsyn>
+</refbody><related-links>
+<link href="GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita"><linktext>Certificate
+Store Binary Files</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B1BDF68C-F989-56BD-AED4-727595D7355C" xml:lang="en"><title>Doubly
+Linked Lists Overview</title><shortdesc>This document is an overview of doubly linked lists.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-BC85DA5B-8918-4668-AB55-7E5689C145FB"><title>Purpose</title> <p>Manipulates a doubly-linked list: an ordered,
+non-indexed list of elements, that can be traversed in both directions. </p> <p>The
+API contains all the necessary functionality for doubly-linked lists. It is
+possible to derive from its classes to add additional features.</p> </section>
+<section id="GUID-110D347E-8D54-4E07-900B-9DD6E4BD1967"><title>Description</title> <p>The API has three key concepts: list
+header (TDblQue), link class (TDblQueLink), and iterator class (TDblQueIter). </p> <p><b>General properties</b> </p> <p>Note the following properties of doubly-linked
+lists:</p> <ul>
+<li id="GUID-C0A25098-7340-59E4-BE7D-2E8C3063CCB0"><p>the list is circular:
+the last element points forward to the head element and the head element points
+back to the last element</p> </li>
+<li id="GUID-869E862F-6DA6-5065-8933-B787C25747CC"><p>elements can be accessed
+through iterating through the list, and added to the start and end of a list,
+but not to the middle </p> </li>
+<li id="GUID-14AEAE92-5DDF-5FEE-AF26-F983AD238365"><p>elements in a linked
+list need not be objects of the same type but ought to be derived from the
+same base class</p> </li>
+</ul> <p><b>List
+header</b> </p> <p>The list header supplies the behaviour for managing a doubly
+linked list of objects. </p> <p>The list header interface is provided by <xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> <codeph>&lt;class
+T&gt;</codeph>. The <codeph>T</codeph> template parameter specifies the type
+of objects in the list.</p> <p><b>Link
+class</b> </p> <p>To be a member of a doubly linked list, an object must contain
+an instance of the link class as a data member.</p> <p>The link class interface
+is provided by <xref href="GUID-603E3D27-6A5C-3E3D-8067-69E44AAACC1B.dita"><apiname>TDblQueLink</apiname></xref>.</p> <p><b>Iterator class </b> </p> <p>The iterator class supplies the behaviour
+for moving through the elements of a list. </p> <p>The iterator class interface
+is provided by <xref href="GUID-46C6F8E4-C7B5-39B2-A9E6-F022A924FF8C.dita"><apiname>TDblQueIter</apiname></xref>. </p> </section>
+<section id="GUID-655D5DDF-9F7A-4DD7-AA3B-4CDF3A02B081"><title>See also</title> <p><xref href="GUID-21C04887-9F9C-5066-AA1D-B30C433CC0AE.dita">Circular
+Buffers Overview</xref> </p> <p><xref href="GUID-8B28B8BB-6935-5332-B4D3-4183FDA3D202.dita">Singly
+Linked Lists Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B1C0C5E2-DC8D-5230-8D4B-338DF619F1D2"><title>Critical Sections Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Synchronises exclusive access to shared resources within a single process. </p> </section> <section><title>Description</title> <p>Critical sections are typically used to serialize access to a section of re-entrant code that cannot be executed concurrently by more than one thread within a process. A critical section object only allows one thread into a controlled section, forcing other threads which attempt to gain access to that critical section to wait until the first thread has exited from that section.</p> <p>A critical section <i>cannot</i> be used to control access to a resource shared by threads across different processes. For that, use a mutex.</p> <p>Critical sections are Kernel objects and, as such, are managed by the Kernel, and accessed by user programs through handles. They are implemented using a semaphore. </p> <p>The critical section handle is provided by <xref href="GUID-FC5F1EC1-28CC-3B06-83C4-B90EF8EEBA07.dita"><apiname>RCriticalSection</apiname></xref>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1C79738-0449-5C26-BA8A-4612C6BF652F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B1C79738-0449-5C26-BA8A-4612C6BF652F"><title>prj_testexports</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>prj_testexports</codeph> </p> <p>  <varname>source_file_1</varname>  <varname>[destination_file]</varname>  </p> <p>  <varname>source_file_n</varname>  <varname>[destination_file]</varname>  </p> <p>In the <codeph>prj_testexports</codeph> section, list the files to be copied from the source directories to the releasables’ directories for use with test programs.</p> <p>Specify each file on a separate line. </p> <p>Note that:</p> <ul><li id="GUID-0208BB0E-D639-586B-B74D-38448A6CAB13"><p>If the source file is listed with a relative path, the path will be considered relative to the directory containing the <filepath>bld.inf</filepath> file. </p> </li> <li id="GUID-DC28ABF4-E2FA-560A-A5EA-31E3AB58D9BA"><p>If a destination file is not specified, the source file will be copied to the directory containing the <filepath>bld.inf</filepath> file. </p> </li> <li id="GUID-FBB7DB9F-B73A-5281-A843-0A3761130ADA"><p>If a relative path is specified with the destination file, the path will be considered relative to directory containing the <filepath>bld.inf</filepath> file.</p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8" xml:lang="en"><title>Display
+Control and Mapping in the Window Server Client</title><shortdesc>ScreenPlay provides support for externally connected displays,
+such as TV-out. Previous versions of Symbian and the non-ScreenPlay variant
+consider the size of each display to be fixed, assuming it to be built into
+the phone. However, for High-Definition Multimedia Interface (HDMI) and composite
+video connectors, there is a range of resolutions that can change dynamically.
+ScreenPlay provides an optional feature that supports switching between resolutions
+at runtime and notifies Window Server clients when there are changes to the
+resolution and connectedness. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic builds on the introduction in <xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic
+Resolution Switching</xref>. </p>
+<p>The <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref> Window Server client-side API has
+a <xref href="GUID-49DCA149-A46F-3DB1-9879-AEDDFE1746B9.dita"><apiname>GetInterface()</apiname></xref> function, which you can use to return
+pointers to the <codeph>MDisplayControl</codeph> and <codeph>MDisplayMapping</codeph> interfaces
+or null if the interface is not supported. For example: </p>
+<codeblock id="GUID-1F87BCBD-F4FB-5C20-8B94-01088F79CD73" xml:space="preserve">// Establish connection and get display control interface.
+class CWindowClient : public CBase
+    {
+    ...
+    RWsSession iSession;
+    CWsScreenDevice* iScreenDevice;
+    MDisplayControl* iDisplayControl;
+    MDisplayMapping* iDisplayMapping;
+    TWsDisplayChangedEvent iLastEvent;
+    }
+    
+void CWindowClient::ConstructL(TInt aDisplayNumber)
+    {
+    User::LeaveIfError(iSession.Connect());
+    iScreenDevice = new(ELeave) CWsScreenDevice(iSession);
+    User::LeaveIfError(iScreenDevice-&gt;Construct(aDisplayNumber));
+    iDisplayControl = iScreenDevice-&gt;GetInterface(EDisplayControl);
+    User::LeaveIfNull(iDisplayControl);
+    iDisplayMapping = iScreenDevice-&gt;GetInterface(EDisplayMapping);
+    User::LeaveIfNull(iDisplayMapping);
+    }</codeblock>
+<p>In addition, <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita"><apiname>CWsScreenDevice</apiname></xref> provides the <xref href="GUID-01040953-1D8A-3DD8-B3E4-047C29F7BAAC.dita"><apiname>IsCurrentModeDynamic()</apiname></xref> and <xref href="GUID-259598EF-8A53-3EED-8A4D-E24038B902F2.dita"><apiname>IsModeDynamic()</apiname></xref> functions
+for querying whether the current screen mode and a given screen mode are dynamic.
+If a screen mode is dynamic, the application extent always fills the full
+UI space and the area returned by <xref href="GUID-30479BE3-296E-3B4D-914D-B080ABD733E4.dita#GUID-30479BE3-296E-3B4D-914D-B080ABD733E4/GUID-8E1B5729-FD1C-3D4A-AC73-C6364E7D5BBF"><apiname>CWsScreenDevice::SizeInPixels()</apiname></xref> always
+matches the actual resolution that is in use. However, the <codeph>MDisplayMapping</codeph> interface
+also provides features that enable you to draw outside the application UI
+extent. </p>
+<section> <title>MDisplayControl</title> <p>The <xref href="GUID-0C384D35-77DD-318E-AF3E-C9ED5ADD9D11.dita"><apiname>MDisplayControl</apiname></xref> interface
+provides Window Server clients with functions for setting and getting the
+current display configuration, getting a list of available resolutions and
+enabling display change event notifications (<xref href="GUID-6426E0A6-35F2-3704-962C-0A8AE8AF7226.dita"><apiname>EEventDisplayChanged</apiname></xref>).
+The following diagram shows the class hierarchy. </p> <fig id="GUID-F9D95387-151F-5725-8BDD-C44A3D333A97">
+<title> Display control class diagram            </title>
+<image href="GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e165199_href.png" placement="inline"/>
+</fig>  <p>Once you have obtained
+the <xref href="GUID-0C384D35-77DD-318E-AF3E-C9ED5ADD9D11.dita"><apiname>MDisplayControl</apiname></xref> interface, you can call <xref href="GUID-B50897AC-CF6F-3887-9475-A46A7C86A42D.dita"><apiname>GetResolutions()</apiname></xref> on
+it. For example: </p> <codeblock id="GUID-C82D0166-0E29-5F90-8087-800EDDE2D895" xml:space="preserve">// Get available resolutions
+RArray&lt;MDisplayControl::TResolution&gt; resolutions;
+User::LeaveIfError(iDisplayControl-&gt;GetResolutions(resolutions));
+          
+// Use resolution list.
+       
+</codeblock> <p>You can use the <xref href="GUID-66F4BAEC-13F4-3617-B86A-5BD3BCAB82A0.dita"><apiname>EnableDisplayChangedEvents()</apiname></xref> function
+to register for notifications of the <xref href="GUID-6426E0A6-35F2-3704-962C-0A8AE8AF7226.dita"><apiname>EEventDisplayChanged</apiname></xref> event.
+This is generated when the display device is attached or detached or there
+is a change in the current resolution, the resolution list or the current
+configuration. For example, this can be generated by a render stage or the
+composition engine in response to a hardware event (such as an external display
+being connected or disconnected). The event is sometimes, but not always,
+triggered by a change in the screen mode. </p> <p>There are therefore two
+aspects to the event in that it can be triggered by a display change or a
+configuration change. Typically you check the event against the previous one
+to see what has changed. </p> <p>The following table provides a summary of
+how this event compares to <xref href="GUID-CC1E6B2E-F68F-3A00-B4EA-4917007F7320.dita"><apiname>EEventScreenDeviceChanged</apiname></xref>. </p> <table id="GUID-50D8232A-E394-590F-A762-79567E4424C3">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Action</entry>
+<entry><codeph>EEventScreenDeviceChanged</codeph> </entry>
+<entry><codeph>EEventDisplayChanged</codeph> </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Screen mode change </p> </entry>
+<entry><p>Always triggers this event </p> </entry>
+<entry><p>Triggers this event only if it causes a change in the configuration. </p> </entry>
+</row>
+<row>
+<entry><p>Display configuration change </p> </entry>
+<entry><p>Generally does not trigger this event </p> </entry>
+<entry><p>Generally triggers this event </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following example first registers for notification of <xref href="GUID-6426E0A6-35F2-3704-962C-0A8AE8AF7226.dita"><apiname>EEventDisplayChanged</apiname></xref> events
+and then changes the screen mode. The second part illustrates a simplified
+handler for the events. It demonstrates checking the event against the previous
+one to see whether the resolution or configuration has changed. </p> <codeblock id="GUID-E78D2CA8-4C1E-5E19-92EC-7E87B010E5BE" xml:space="preserve">// Establish connection and get display control interface.
+
+iDisplayControl-&gt;EnableDisplayChangeEvents(ETrue);
+
+iScreenDevice-&gt;SetScreenMode(2);    // Number depends on WSINI.INI config.
+iScreenDevice-&gt;SetAppScreenMode(2); // Ensure application windows are
+                                    // shown in the new mode.
+...
+    
+// Simplified event handler.
+TWsEvent event;
+iSession.GetEvent(event);
+    
+switch (event.Type())
+    {
+    case EEventScreenDeviceChanged:
+        {
+        TSize screenSize = iScreenDevice-&gt;SizeInPixels();
+        // Re-layout windows for new application screen dimensions
+        }
+        break;
+    case Redraw:
+        {
+        // Draw content of window
+        }
+        break;
+    case EEventDisplayChanged:
+        {
+        TWsDisplayChangedEvent* newEvent;
+        newEvent = event.DisplayChanged();
+
+        if (newEvent-&gt;iResolutionListChangeId !=
+            iLastEvent.iResolutionListChangeId)
+            {
+            // ...
+            }
+        
+        if (newEvent-&gt;iConfigurationChangeId !=
+            iLastEvent.iConfigurationChangeId)
+            {
+            TDisplayConfiguration config;
+            User::LeaveIfError(
+                iDisplayControl-&gt;GetConfiguration(config)));
+            // Handle updated configuration
+            // May be entirely handled by screen device changed event
+            }
+        iLastEvent = *newEvent;
+        }
+        break;
+    }</codeblock> <p>Here is an example of setting a new display resolution: </p> <codeblock id="GUID-B9C0254D-3990-5B41-9F63-1A81D30A3FB6" xml:space="preserve">TDisplayConfiguration config;
+config.SetResolution(TSize(1280, 720));
+config.SetRotation(MDisplayControl::ERotation180);
+          
+User::LeaveIfError(iDisplayControl-&gt;SetConfiguration(config));
+</codeblock> </section>
+<section> <title>MDisplayMapping</title> <p>The <xref href="GUID-BA6FEFAE-8891-3286-A38F-2EA522D7A27E.dita"><apiname>MDisplayMapping</apiname></xref> interface
+enables Window Server clients to map between coordinate spaces, allowing for
+translation and scaling of coordinates. For example, suppose an application
+is to draw a virtual keyboard outside of the application's extent. This requires
+knowing the extent of both the application and the full UI area. The application
+can use the <xref href="GUID-BA6FEFAE-8891-3286-A38F-2EA522D7A27E.dita"><apiname>MDisplayMapping</apiname></xref> interface to get this information,
+so that the virtual keyboard can be drawn within the full UI area but outside
+of the application's extent. </p> <fig id="GUID-55BD49C6-9A51-53A7-A587-29A151FACF6B">
+<title> Display mapping class diagram            </title>
+<image href="GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e165342_href.png" placement="inline"/>
+</fig> <p> </p> <p>The <xref href="GUID-BA6FEFAE-8891-3286-A38F-2EA522D7A27E.dita"><apiname>MDisplayMapping</apiname></xref> interface is very
+flexible. UIDs are used to signify the application UI coordinate space, the
+full UI space, the composition/display coordinate space (which may be a different
+scale to the UI coordinate space) and the Direct Screen Access (DSA) space
+(which may match the full UI space, or be offset relative to the application
+UI space). </p> <p>The <xref href="GUID-53AF1470-F06E-321C-AF64-FE422A7662DA.dita"><apiname>MapCoordinates()</apiname></xref> function takes
+a rectangle, a source space and a target space and returns the correspondingly
+mapped rectangle in the target space. To map a point, use a rectangle with
+a width and height of one pixel, because the scaling between UI space and
+composition/display space may enlarge (or sometimes reduce) the rectangle’s
+size. </p> <p>For example, consider the following diagram, in which the outer
+rectangle represents the display area and the inner one represents the application
+space (screen mode). </p> <fig id="GUID-6935A7BE-C651-5582-8E2A-11A18CDD531F">
+<title>Display area and application extent            </title>
+<image href="GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e165370_href.png" placement="inline"/>
+</fig> <p>The display resolution is 1280 x 720, the application size is 176
+x 208 and a virtual resolution of 426 x 240 has been introduced, which gives
+a scaling factor of three in each direction. All pixels are approximately
+square, for simplicity. The application area has been centered in the display,
+giving an <i>X</i> offset of (426-176)/2 and a <i>Y</i> offset of (240-208)/2,
+or (125, 16). </p> <p>To put a window on screen to fill the display, create
+a rectangle positioned at (0,0) with a size of the current resolution (426
+x 240). Then pass this in with a source space of the full UI and target space
+of the application. This results in a rectangle of the same size but at offset
+(125,16). </p> <p>In addition, to use an external surface at the real resolution,
+pass this rectangle in with a source space of the application UI and a target
+space of the composition/display. This results in a rectangle with size of
+1280 x 720, which you can then use when creating the surface. Because the
+UI surface and external surface are scaled independently, the UI memory requirements
+can remain low, even with high resolution video, viewfinder and games. For
+an example code snippet, see <xref href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita">External
+Surfaces Overview</xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server
+Client-Side Library                 Concepts</linktext></link>
+<link href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita"><linktext>Dynamic Resolution
+                Switching</linktext></link>
+<link href="GUID-1D529BDC-6665-58E2-AB3F-7023D8A84F69.dita"><linktext>The wsini.ini
+File                 Reference</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1D5B680-00E3-5702-985A-94256180E2D8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B1D5B680-00E3-5702-985A-94256180E2D8" xml:lang="en"><title>Automatic
+Resource Management</title><shortdesc>Automatic resource management is designed to increase the baseline
+usability of Symbian platform for Symbian Developers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Need for Automatic resource management</title><p>The use of
+the Symbian Cleanup Stack is more difficult, error-prone and requires writing
+extra code for explicit cleanup using the CleanupStack. In contrast, the Symbian
+C++ class templates for automatic resource management are relatively easier
+to use. They provide automatic exception-safe cleanup upon normal or exceptional
+exit from a scope, in which case they do not require writing any code for
+invoking the cleanup of resources. The resources are automatically cleaned
+up by the destructors of the template classes in that case. </p></section>
+<section><title>Characteristics of Automatic resource management</title><p>The
+following are the characteristics of automatic resource management: </p> <ul>
+<li id="GUID-3A2FF8D0-FB26-5DBB-AD48-5381FF1BF3FA"><p>Improved usability versus
+the cleanup stack and the manual authoring of destructors. </p> </li>
+<li id="GUID-FEA29BB7-4A22-5B38-B729-778799A87C64"><p>Covering data member
+management as well as local variable management. </p> </li>
+<li id="GUID-BB5C0699-F7D3-5137-A486-CD9A635195CB"><p>A comprehensive replacement
+for the existing cleanup stack API. </p> </li>
+<li id="GUID-BD725E12-50A8-5741-BE49-D5054BA78813"><p>Ability to handle C-classes,
+R-classes, and custom cleanups. </p> </li>
+</ul></section>
+<section><title>Template classes</title><p>The following variants of the class
+templates for automatic resource management have been provided: </p> <ul>
+<li id="GUID-B08EC001-AECA-50E0-BAA4-5A9779703350"><p> <xref href="GUID-24AEB510-9FB5-318C-BA1E-C6ACA0BB87BC.dita"><apiname> LCleanedup</apiname></xref> class
+templates </p> <p>The LCleanedup class templates provided are: </p> <table id="GUID-0D32DEDA-4F92-506E-8335-A0C182ECD7AD">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Templates</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-BD4E0CC4-75A2-306D-A860-06B4138F86EB.dita"><apiname>LCleanedupPtr </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of pointers </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9ECEAE0C-3D5A-3B1F-88DD-28B37CE9950D.dita"><apiname> LCleanedupHandle </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of resource handles </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-83938A18-23EF-301A-9D40-C89AEDB5DFF0.dita"><apiname>LCleanedupRef </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of object references </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A7B3BEBB-3805-3149-A9DB-075FFF3DED3F.dita"><apiname>LCleanedupArray </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of C++ style arrays </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-E6D04730-8064-3846-99E4-FB638C5EAA65.dita"><apiname>LCleanedupGuard </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic generic cleanup </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </li>
+<li id="GUID-A97A0B3A-A991-5AA2-B501-5D3DA00A3B6D"><p> <xref href="GUID-7AFEC8E9-22D6-3905-81D2-E514FC1779D8.dita"><apiname>LManaged </apiname></xref> class
+templates </p> <p>The LManaged class templates provided are: </p> <table id="GUID-49B28928-A504-5931-BBF9-8BDCABD9B380">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Templates</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-166B7262-50A5-3C2E-B7DD-3291F96B31AA.dita"><apiname> LManagedPtr </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of pointers </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-FCBCB7A9-AF28-3591-A54D-8AF354E01D11.dita"><apiname> LManagedHandle </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of resource handles </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-2F473656-DD2D-33A7-8BC8-BA2C3337849C.dita"><apiname> LManagedRef </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of object references </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-B0B92876-6BE7-3B34-B19D-4B5E318F7BED.dita"><apiname>LManagedArray </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic management of C++ style arrays </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-577F5B2D-0A1D-31AA-84EB-BE0B39F5A624.dita"><apiname>LManagedGuard </apiname></xref>  </p> </entry>
+<entry><p>Provides automatic generic cleanup </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </li>
+</ul></section>
+<section><title>See Also</title> <p><xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita">EUser
+High Level Overview</xref>  </p> <p><xref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita">EUser
+High Level Tutorials</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03" xml:lang="en"><title>How to
+construct and manipulate a doubly linked list</title><shortdesc>This document describes how to construct and use a doubly linked
+list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following code fragments show how a doubly linked list can be constructed
+and manipulated. The list consists of <codeph>CItem</codeph> objects. In this
+example, a <codeph>CItem</codeph> object can contain an item of text implemented
+as an <codeph>HBufC</codeph>. The <codeph>CItem</codeph> objects can form
+elements of a doubly linked list using the <codeph>iDlink</codeph> data member
+as the link object. </p>
+<p>The class is declared as:</p>
+<codeblock id="GUID-F98B0D2C-486A-59C5-B487-A0F1D7D022FD" xml:space="preserve">class CItem : public CBase
+    {
+public  :
+    static CItem* NewL(const TDesC&amp; aText);
+    static CItem* NewLC(const TDesC&amp; aText); 
+    virtual       ~CItem();
+public   :
+    static const  TInt iOffset;
+private  :
+    void          ConstructL(const TDesC&amp; aText);
+private  :
+    TDblQueLink  iDlink;
+    HBufC*       iText;
+    friend class CXy;
+    };</codeblock>
+<p>The <codeph>CItem</codeph> member functions are implemented as:</p>
+<codeblock id="GUID-1DAC73DB-A599-5BAC-AAB5-707BA89B8382" xml:space="preserve">const TInt CItem::iOffset = _FOFF(CItem,iDlink);</codeblock>
+<codeblock id="GUID-6FEA34D4-0937-56E3-ACA5-3912E1595511" xml:space="preserve">CItem* CItem::NewLC(const TDesC&amp; aText)
+    {
+    CItem* self = new (ELeave) CItem;
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL(aText);
+    return self;
+    }</codeblock>
+<codeblock id="GUID-75110620-3EDC-5B4D-84EB-C4D6C78BF2F9" xml:space="preserve">CItem* CItem::NewL(const TDesC&amp; aText)
+    {
+    CItem* self = CItem::NewLC(aText);
+    CleanupStack::Pop();
+    return self;
+    }</codeblock>
+<codeblock id="GUID-8EABC406-6C95-5139-9A97-AB467D526019" xml:space="preserve">void CItem::ConstructL(const TDesC&amp; aText)
+    {
+    iText    = aText.AllocL();
+    }</codeblock>
+<codeblock id="GUID-235AC477-3C7E-52E2-B85B-57C404C8BC08" xml:space="preserve">CItem::~CItem()
+    {
+    delete (iText);
+    }</codeblock>
+<p>As part of its construction process, a <codeph>CItem</codeph> constructs
+an <codeph>HBufC</codeph> of the correct length and copies the content of
+the descriptor parameter into it.</p>
+<p>A <codeph>CXy</codeph> object maintains the list by:</p>
+<ul>
+<li id="GUID-048EFEF6-B2EC-5333-A835-BC735C334220"><p> creating <codeph>CItem</codeph> objects
+and adding them into the list</p> </li>
+<li id="GUID-310AB703-85C5-5DFC-8AB6-2A0938095134"><p>removing <codeph>CItem</codeph> objects
+from the list and then destroying them</p> </li>
+</ul>
+<p>The class is declared as:</p>
+<codeblock id="GUID-F5CF044D-650A-5446-9713-BE84362FD793" xml:space="preserve">class CXy : public CBase
+    {
+public :
+    CXy();
+    virtual ~CXy();
+    void    DoItems();
+    TBool   AddItem(const TDesC&amp; anItem,TItemPos aPos);
+private :
+    TDblQue&lt;CItem&gt;     iHdr; 
+    TDblQueIter&lt;CItem&gt; iIter;
+    };</codeblock>
+<p>Here, the list header, <codeph>iHdr</codeph>, and the iterator, <codeph>iIter</codeph>,
+are declared as data members of the class and are constructed when the <codeph>CXy</codeph> object
+is constructed. A C++ constructor must be supplied so that <codeph>iIter</codeph> can
+be properly constructed. (<codeph>TDblQueIter</codeph> has no default constructor).</p>
+<p>Specifically:</p>
+<ul>
+<li id="GUID-36B75BBC-B6EA-5717-9E88-8C1FFB4F9119"><p><codeph>AddItem()</codeph> constructs
+a new <codeph>CItem</codeph> and adds it to the list, either after the current
+item or at the end of the list.</p> </li>
+<li id="GUID-B85DEE50-218E-5CC9-B60D-D6EA2176643F"><p><codeph>DoItems()</codeph> scans
+through the list, removing and destroying each element from the list.</p> </li>
+</ul>
+<p>The <codeph>CXy</codeph> member functions are implemented as:</p>
+<codeblock id="GUID-910891C0-DBEF-592F-8CA3-FC354DE16B3E" xml:space="preserve">CXy::CXy()
+    : iHdr(CItem::iOffset),iIter(iHdr) //construct header &amp; iterator
+    {}</codeblock>
+<codeblock id="GUID-C471B1FC-05A6-56AD-B3D6-C65FB045B864" xml:space="preserve">CXy::~CXy()
+    {
+    CItem*  anyitem;
+    
+    iIter.SetToFirst();
+    while ((anyitem = iIter++) != NULL)
+        {
+        anyitem-&gt;iDlink.Deque();
+        delete anyitem;
+        };
+    }</codeblock>
+<p>Before destroying a <codeph>CXy</codeph> object, the list is destroyed.
+This is achieved using the iterator. The iterator pointer is set to point
+to each element in turn, removing that element from the list before destroying
+it.</p>
+<p>Once the iterator has reached the end of the list, the operator<codeph>++</codeph> returns <codeph>NULL</codeph>.</p>
+<p>The destruction process is safe if the list is empty; the statement <codeph>iter.SetToFirst()</codeph> is
+harmless, the operator<codeph>++</codeph> returns <codeph>NULL</codeph> and
+execution of the body of the <codeph>while</codeph> loop never happens.</p>
+<codeblock id="GUID-8E2FD32B-B8FF-5F37-9C66-20695B296079" xml:space="preserve">TBool CXy::AddItem(const TDesC&amp; aText,TItemPos aPos)
+    {
+    CItem* newitem;
+    
+    TRAPD(leavecode,newitem = CItem::NewL(aText));
+    if (leavecode != KErrNone)
+        return EFalse;              // Cannot create a CItem</codeblock>
+<codeblock id="GUID-6A38CF3D-9547-562D-BB4C-F53938943D15" xml:space="preserve">    switch (aPos)
+        {
+    case EAtEnd:
+        iHdr.AddLast(*newitem);     // Add at back of list
+        return ETrue;
+
+    case EAfterCurrent:
+        CItem* currentitem = iIter; 
+        if (currentitem)
+            {
+            newitem-&gt;iDlink.Enque(&amp;currentitem-&gt;iDlink);
+            iIter.Set(*newitem);
+            }
+        else
+            {
+            iHdr.AddFirst(*newitem);
+            iIter.SetToFirst();    
+            }
+        return ETrue;
+        }
+                
+    return EFalse;
+        }</codeblock>
+<p>This member function creates a new <codeph>CItem</codeph> and then, depending
+on the value of <codeph>aPos</codeph>, either adds it at the back of the list
+or after the current element. <codeph>TItemPos</codeph> is just an enumeration
+taking the enumerators <codeph>EAtEnd</codeph> and <codeph>EAfterCurrent</codeph>.</p>
+<p>The statement:</p>
+<codeblock id="GUID-FBCE5C8F-D42A-50E6-BA1E-A6B2887AF0C1" xml:space="preserve">newitem-&gt;iDlink.Enque(&amp;currentitem-&gt;iDlink);</codeblock>
+<p>inserts the newly created <codeph>CItem</codeph> with pointer <codeph>newitem</codeph>, <i>after</i> the
+existing item with pointer <codeph>currentitem</codeph>.</p>
+<p>Note also that the statement:</p>
+<codeblock id="GUID-F875FA76-2768-5713-8462-44610B17F35A" xml:space="preserve">CItem* currentitem = iIter; 
+</codeblock>
+<p>implicitly uses the conversion operator <codeph>T*()</codeph> where, in
+general, <codeph>T</codeph> is the class forming elements of the list. In
+this specific example, the conversion operator returns a pointer to the current
+element, of type <codeph>CItem</codeph>, in the list. Immediately after construction
+of the iterator <codeph>iIter</codeph>, the value of <codeph>currentitem</codeph> is <codeph>NULL</codeph>.</p>
+<codeblock id="GUID-96C01CEC-29F5-537B-9E44-531A313D8796" xml:space="preserve">void CXy::DoItems()
+    {
+    CItem* currentitem;
+
+    iIter.SetToFirst();
+
+    while((currentitem = iIter++) != NULL)
+        {
+        // do something with the text;
+        currentitem-&gt;iDlink.Deque();
+        delete currentitem;
+        };
+    }</codeblock>
+<p>The <codeph>DoItems()</codeph> member function iterates through the whole
+list, removing each <codeph>CItem</codeph> object in turn before destroying
+it. This member function could be modified to include extra functionality
+before the removal and destruction of the <codeph>CItem</codeph> element.</p>
+<p>If the list is empty on entry to this function, the <codeph>iter.SetToFirst()</codeph> statement
+is safe, <codeph>currentitem</codeph> is <codeph>NULL</codeph> on the first
+execution of the <codeph>while</codeph> condition and the body of the <codeph>while</codeph> loop
+is never executed.</p>
+<p>Executing the code:</p>
+<codeblock id="GUID-081282AE-93D7-59FB-93A7-93D7E1F2080C" xml:space="preserve">    {
+    _LIT(KTxtOne,"one");
+    _LIT(KTxtTwo,"two");
+    _LIT(KTxtThree",three");
+    _LIT(KTxtFour,"four");
+    _LIT(KTxtFive,"five");
+    _LIT(KTxtSix,"six");
+
+    CXy* items;
+
+    items = new CXy;
+
+    items-&gt;AddItem(KTxtone,EAfterCurrent);
+    items-&gt;AddItem(KTxttwo,EAtEnd);
+    items-&gt;AddItem(KTxtthree,EAfterCurrent);
+    items-&gt;AddItem(KTxtfour,EAtEnd);
+    items-&gt;AddItem(KTxtfive,EAfterCurrent);
+    items-&gt;AddItem(KTxtsix,EAtEnd);
+    ...
+</codeblock>
+<p>results in the construction of a doubly linked list of <codeph>CItem</codeph> objects
+each containing a pointer to an <codeph>HBufC</codeph> descriptor containing
+the text as shown:</p>
+<fig id="GUID-10DC05B0-64A2-52D0-ABC6-ACD231F402C4">
+<title/>
+<image href="GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e189390_href.png" placement="inline"/>
+</fig>
+<p>The following code destroys the list elements and the <codeph>CXy</codeph> object
+containing the list header and iterator:</p>
+<codeblock id="GUID-37EF4182-834F-51BF-9250-61B479BFD3D1" xml:space="preserve">    ...
+    items-&gt;DoItems();
+    delete items;
+    }</codeblock>
+<p>There are a number of other possible ways to proceed, depending on the
+precise needs of an application. In the previous example, the list header
+and the iterator are declared as members of the class.</p>
+<p>Some situations may demand that a list be created, used and destroyed within
+the scope of a member function. Because list headers and iterators are “<codeph>T</codeph> ”
+types, they can be declared on the stack; for example:</p>
+<codeblock id="GUID-E29EDC0D-C7DE-5E35-B39F-DA63110DF630" xml:space="preserve">void CXy::SomeFunction();
+    {
+    TDblQue&lt;CItem&gt;     iHdr(CItem::iOffset); 
+    TDblQueIter&lt;CItem&gt; iIter(iHdr);
+
+    // the body of the function
+    //
+
+    }
+</codeblock>
+<p>The list header and the iterator go out of scope at the end of the function
+and are destroyed. Unless the list elements themselves are “<codeph>T</codeph> ”
+types and exist on the stack, make sure that they are explicitly destroyed
+before the function terminates.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B1DD21A3-674A-5193-95CF-F533FDBBD319.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B1DD21A3-674A-5193-95CF-F533FDBBD319" xml:lang="en"><title>Using
+Date and Time Handling</title><shortdesc>Explains how to manipulate Date and Time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Points in time are stored and manipulated using the <codeph>TTime</codeph> class. <codeph>TTime</codeph> uses
+a 64-bit integer to represent time as the number of microseconds since midnight
+on 1st January 0 AD, using a nominal Gregorian calendar. This gives a possible
+range of 580,000 years.</p>
+<p>The date/time and its individual components may be set and retrieved using
+the <codeph>TDateTime</codeph> class. <codeph>TDateTime</codeph> is the human
+readable form of <codeph>TTime</codeph>. It is provided to allow easy user
+access to the year, month, day, hour, minute, second and microsecond components
+of the time. It does not support manipulation of the date/time, or of its
+components, but may be converted into a <codeph>TTime</codeph>, and vice versa.</p>
+<p>Intervals between points in time are represented by the classes derived
+from <codeph>TTimeIntervalBase</codeph> and by class <codeph>TTimeIntervalMicroSeconds</codeph>.
+Time intervals can be added or subtracted, either to or from each other or
+to or from points in time. Time interval classes exist because adding two
+points in time or subtracting one point in time from another is not possible.</p>
+<p>The <codeph>Time</codeph> class is a collection of time related utility
+functions; for example, functions that check for leap years and return the
+number of days in the month.</p>
+<section id="GUID-EA8DB5D2-2979-44A9-9D12-AB454050B03E"><title>Arithmetic operations</title> <p>Care should be taken when
+performing arithmetic operations on <codeph>TTime</codeph> s especially when
+dealing with the last day in the month. For example: </p> <ul>
+<li id="GUID-81A3ED23-55B5-5BEF-A2C5-D05458512637"><p>adding one month to
+October 18th adds 31 days</p> </li>
+<li id="GUID-CBF68BC9-7F83-5FEC-B5BC-2E63906A5747"><p>adding one month to
+November 18th adds 30 days</p> </li>
+<li id="GUID-019F031D-5228-594E-8ECF-9DCAA7C04B09"><p>adding one year to February
+29th, 1996 gives Feb 28th, 1997</p> </li>
+<li id="GUID-D019C0F8-9B74-5405-82D4-1ECEB7C3329B"><p>adding one month to
+March 31st gives April 30th but subtracting one month from April 30th gives
+March 30th</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B2089965-546C-5FF2-8596-13A2221E02E6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B2089965-546C-5FF2-8596-13A2221E02E6" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> This section lists the tasks that can be performed using the services provided by User Prompt Service component.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E" xml:lang="en"><title>SignSIS</title><abstract><p>The <codeph>SignSIS</codeph> tool digitally signs Software Installation
+(SIS) files using a certificate and private key. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title> <p><userinput>signsis <parmname>[OPTIONS]</parmname> <cmdname>&lt;ARGS&gt;</cmdname> </userinput> </p> <p>The
+following table lists the options supported by the <codeph>SignSIS</codeph> tool. </p> <table id="GUID-CDA62104-777D-5874-AF0D-BF2B2085B689">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Options</entry>
+<entry>Description</entry>
+<entry>Usage</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>-?</varname>  </p> </entry>
+<entry><p>Displays help message. </p> </entry>
+<entry><p><userinput>signsis [-? | -h]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-cd</varname>  </p> </entry>
+<entry><p>Signs using a DSA algorithm </p> </entry>
+<entry><p><userinput>signsis [-cd] [-s] input [output [certificate key [passphrase]
+] ]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-cr</varname>  </p> </entry>
+<entry><p>Signs using the RSA algorithm </p> </entry>
+<entry><p><userinput>signsis [-cr] [-s] input [output [certificate key [passphrase]
+] ]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-i</varname>  </p> </entry>
+<entry><p>Displays the Open SSL licence. </p> </entry>
+<entry><p><userinput>signsis [-i]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-o</varname>  </p> </entry>
+<entry><p>Extracts the signing information from a SIS file. </p> </entry>
+<entry><p><userinput>signsis [-o] input </userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-p</varname>  </p> </entry>
+<entry><p>Extracts the certificates from the SIS file. This option must be
+specified along with <varname>-o</varname> option. </p> </entry>
+<entry><p><userinput>signsis [-o[-p]] input </userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-s</varname>  </p> </entry>
+<entry><p>Signs SIS file (requires SIS file, certificate, key and passphrase) </p> </entry>
+<entry><p><userinput>signsis [-s] input [output [certificate key [passphrase]
+] ]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-u</varname>  </p> </entry>
+<entry><p>Removes most recent signature from SIS file. </p> </entry>
+<entry><p><userinput>signsis [-u] input [output [certificate key [passphrase]
+] ]</userinput> </p> </entry>
+</row>
+<row>
+<entry><p> <varname>-v</varname>  </p> </entry>
+<entry><p>Displays verbose output. </p> </entry>
+<entry><p><userinput>signsis [-v]</userinput> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table lists the arguments to be specified with the <codeph>SignSIS</codeph> tool. </p> <table id="GUID-6036A656-B714-57A8-97A7-602831FEFE62">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Arguments</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <varname>input</varname>  </p> </entry>
+<entry><p>Specifies the SIS file to be signed, unsigned or investigated. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>output</varname>  </p> </entry>
+<entry><p>Specifies the SIS file generated by signing or unsigning. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>certificate</varname>  </p> </entry>
+<entry><p>Specifies the certificate file used for signing. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>key</varname>  </p> </entry>
+<entry><p>Specifies private key file of the certificate. </p> </entry>
+</row>
+<row>
+<entry><p> <varname>passphrase</varname>  </p> </entry>
+<entry><p>Specifies passphrase of the private key file. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <note>Before digitally signing a SIS file, <codeph>SignSIS</codeph> prompts
+for a password to access the private key file if required.</note></refsyn>
+</refbody><related-links>
+<link href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita"><linktext>PKG Format</linktext>
+</link>
+<link href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita"><linktext>MakeSIS</linktext>
+</link>
+<link href="GUID-AA555CC1-5CFF-5609-9191-8970F32BA255.dita"><linktext>CreateSIS</linktext>
+</link>
+<link href="GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita"><linktext>Creating
+and Signing an Installation File</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95" xml:lang="en"><title>Build tools guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e99068_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F" xml:lang="en"><title>Templated
+functions</title><shortdesc>This document describes templated functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In <filepath>e32std.h</filepath>, there are also a variety of inline templated
+functions for performing simple operations: </p>
+<ul>
+<li id="GUID-D15013BD-D91A-5AFF-A6B9-F14159E7C2AB"><p>return lower of two
+values: Min()</p> </li>
+<li id="GUID-40CF86D7-4FD3-5525-9466-C994C4927C86"><p>return higher of two
+values: Max()</p> </li>
+<li id="GUID-6F1E8AC5-0B70-58B0-AA9A-113712C25A14"><p>return absolute value:
+Abs()</p> </li>
+<li id="GUID-C2EBFE55-C146-53E4-8619-16D1EEA94D95"><p>check if a value is
+between two other values: Rng()</p> </li>
+</ul>
+<p>These can be called on any type that supports the required operators (<codeph>&lt;</codeph>,<codeph>&gt;</codeph>,<codeph>&lt;=</codeph>,<codeph>&gt;=</codeph>,<codeph>-</codeph>).</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD" xml:lang="en"><title>View
+resource statements in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If defined, the Symbian platform uses the <parmname>VIEW</parmname> <xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">resources</xref> statements
+to define separate <xref href="GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita">menu
+bars</xref> and <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">CBAs</xref> for
+different views in your application. For more information on views, see <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">Views</xref>.</p>
+<p>To define specific GUI component resources for a view:</p>
+<ol>
+<li id="GUID-33696BB5-19CF-4A04-90DA-DB4063308E6B"><p>Determine
+the view requirements of your application.</p></li>
+<li id="GUID-52943370-2366-4794-8731-E7D5AC3219FE"><p>Create a <parmname>AVKON_VIEW</parmname> resource
+in your resource file. The <parmname>AVKON_VIEW</parmname> structure is defined
+in the <parmname>avkon.rh</parmname> file. The syntax is as follows:</p>
+<codeblock id="GUID-39D69E48-33FD-4B24-8969-AC6CA113ABF5" xml:space="preserve">RESOURCE AVKON_VIEW r_myapp_view1
+{
+menubar = r_myapp_menubar1;
+cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
+}</codeblock>
+<p>where:</p>
+<ul>
+<li><p><parmname>r_myapp_view1</parmname> is a unique name for the
+resource declaration.</p></li>
+<li><p><parmname>menubar</parmname> defines the <xref href="GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita">menubar</xref> resource.</p>
+</li>
+<li><p><parmname>cba</parmname> defines the <xref href="GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita">control
+pane</xref> resource.</p></li>
+</ul>
+<p>All values refer to other resources defined either in the resource file
+or to <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">precompiled values
+available from the Symbian platform</xref>. Note that if an element is not
+declared, then the default value declared in the structure is used. By default,
+all elements are not used.</p></li>
+<li id="GUID-28EA7785-EE88-4901-B525-DC864506FBC6"><p>Call the view
+resource in the UI implementation.</p></li>
+</ol>
+<note>
+<p>You can call <parmname>BaseConstructL()</parmname> without any parameters,
+in which case the default application menu and CBA are used for the view. </p>
+</note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B24F1029-39FE-539F-847E-1296A1574F95.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B24F1029-39FE-539F-847E-1296A1574F95" xml:lang="en"><title>Loader</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section gives an overview of the loader and the concept of versions. The section describes the rules that the loader uses to select the correct version of an EXE or DLL. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-B26A4743-F331-5AC3-A40A-28B14B785857" xml:lang="en"><title>SearchSortExample:
+enhanced search and sort for Message Store</title><shortdesc>This example demonstrates the enhanced search and sort API for
+message stores. This API was implemented in Symbian OS v9.5. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Purpose</title> <p>Prior to v9.5 the Message Store API had
+limited support for selecting and sorting message records and fields. In v9.5,
+the API implements more extensive search and sort options. </p> <p>This example
+demonstrates the new functionality by implementing the following use cases: </p> <ul>
+<li id="GUID-E9B88EDB-8DD1-5CC2-B6DD-CA8498FE1865"><p>Display the header information
+for all message entries. </p> </li>
+<li id="GUID-5D07456E-DEDE-578D-961F-138E9DBD9470"><p>Perform a simple (single
+search criteria) non-iterative search-sort and display the matching entries.
+This has the following options: </p> <ul>
+<li id="GUID-73CAF478-2B69-5883-B7A1-4F8B20D884E8"><p>case sensitivity on
+/ off, </p> </li>
+<li id="GUID-D158CBA7-4947-589F-9C1E-FFB0E36A8CEF"><p>whole word search on
+/ off. </p> </li>
+</ul> </li>
+<li id="GUID-F2FC91DD-8198-53BB-9C77-5DC30C071AE1"><p>Perform a combined (more
+than one search criteria) non-iterative search-sort and display the number
+of matching entries. This has the following options: </p> <ul>
+<li id="GUID-25CDF7E6-9D22-58C8-8832-03B0723A7F6E"><p>case sensitivity on
+/ off, </p> </li>
+<li id="GUID-35902CB3-B4AF-56D0-937A-A840B3F40CDA"><p>whole word search on
+/ off. </p> </li>
+</ul> </li>
+<li id="GUID-54A5DEF1-21F3-5B24-85BA-71450C7E3D2D"><p>Perform an iterative
+search-sort (searches for entries one at a time) and display the number of
+matching entries. </p> </li>
+<li id="GUID-5412D0A2-2A38-5F34-AE9E-AE7940345DDC"><p>Perform a search-sort
+using a query ID. The query ID is generated by a previous search-sort operation. </p> </li>
+</ul> <p>Before implementing these use cases, the example creates a POP3/SMTP
+message store with five message entries. </p> </section>
+<section><title>Class summary</title><p>The example demonstrates the following
+classes and enums:</p><p><xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita"><apiname>CMsvSearchSortOperation</apiname></xref> <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita"><apiname> CMsvSearchSortQuery</apiname></xref> <xref href="GUID-D9BB2EF0-262F-3BCF-8F48-F40FE0D4C107.dita"><apiname> TMsvMessagePart</apiname></xref> <xref href="GUID-A60B4636-F309-3FD6-8D12-D4EE3AC6BC58.dita"><apiname> TMsvSearchSortResultType</apiname></xref></p></section>
+<section id="GUID-9331568B-0BA3-5138-BDCC-65AC225A5328"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-dbb3813f-c947-4359-805e-eeada16f1dbb.zip" scope="external">searchsortexample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-dbb3813f-c947-4359-805e-eeada16f1dbb.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-F8B3E0E7-FB82-5266-AB40-C1149A782E83"><title>Design
+and implementation</title> <p><b>Project Implementation</b> </p> <p>The project
+implements the following classes: </p> <p> <b>CKeyReader:</b> Derived from <codeph>CActive</codeph>.
+This reads keypresses and calls the appropriate example function. </p> <p> <b>CMessAsyncWaiter:</b> Derived
+from <codeph>CActive</codeph>. This handles the <codeph>CMsvSearchSortOperation::RequestL()</codeph> asynchronous
+request. This <codeph>RequestL()</codeph> function takes <codeph>CMessAsyncWaiter::iStatus</codeph> as
+one of its parameters and then waits on the status. When the search is complete
+the client is notified of the event's completion by <codeph>CMessAsyncWaiter::RunL()</codeph> being
+called, after which the example prepares the buffer and displays the results. </p> <p> <b>CSearchsortExample:</b> Derived
+from <codeph>CBase</codeph> and <codeph>MMsvSessionObserver</codeph>. <codeph>MMsvSessionObserver</codeph> is
+an interface for notification of events from a Message Server session. </p> <p> <codeph>CSearchsortExample</codeph> implements <codeph>HandleSessionEventL()</codeph> to handle the two event types <codeph>EMsvEntriesCreated</codeph> and <codeph>EMsvServerReady</codeph>.
+It also creates the SMTP message entries and carries out searching and sorting. </p> <p><b>Simple
+non-iterative search-sort</b> </p> <p>The example starts by creating a message
+server session using <codeph>CMsvSession</codeph>, which represents a channel
+of communication between a client thread (client-side MTM, user interface
+MTM, or message client application) and the Message Server thread. Then it
+creates an instance of <codeph>CMsvSearchSortOperation</codeph> to perform
+the search-sort operation, and passes the session object into it. </p> <p>A
+search-sort query is created using <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-B39D5F47-158A-38C8-8552-B3B5581554F7"><apiname>CMsvSearchSortQuery::NewL()</apiname></xref> and
+is configured using various member functions of class <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita"><apiname>CMsvSearchSortQuery</apiname></xref> for
+instance whether to search for whole or partial words and the case sensitivity. </p> <p>The
+search and sort options are added to the query using <codeph>CMsvSearchSortQuery::AddSearchOptionL()</codeph> and <codeph>CMsvSearchSortQuery::AddSortOptionL()</codeph>. </p> <p>The search-sort operation is started by calling <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-6C81A72A-3BEC-3D18-9CAD-46E9309C3FEB"><apiname>CMsvSearchSortOperation::RequestL()</apiname></xref>,
+passing the query as a parameter. If no iterator parameter is specified, the
+search defaults to non-iterative. </p> <p>An instance of the <codeph>CMessAsyncWaiter</codeph> class
+is created for handling the asynchronous search request. This object is waited
+on until the Message Server completes the request. The results of the search
+are stored in an array using <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-1D6974D1-FF31-3B7C-A726-47A8510E9819"><apiname>CMsvSearchSortOperation::GetResultsL()</apiname></xref>. </p> <p>The
+result count is displayed by calling <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-5E95F638-1252-3C63-A408-8FBAB445918D"><apiname>CMsvSearchSortOperation::GetResultCountL()</apiname></xref>. </p> <p>The
+query ID of the search is retrieved from the Message server, for later use,
+using the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-989B6F32-DE88-373B-9CA4-5474BB6858CD"><apiname>CMsvSearchSortOperation::GetQueryId()</apiname></xref> function. </p> <p><b>Simple
+iterative search-sort</b> </p> <p>Iterative search-sort follows the same steps
+as described above, except that an iterator parameter is passed to the <codeph>RequestL()</codeph> function.
+To retrieve the results, <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-3F38D82E-D350-3C80-8146-A339F1E189D8"><apiname>CMsvSearchSortOperation::GetNextResultL()</apiname></xref> is
+called in a <codeph>while</codeph> loop to retrieve one entry at a time. Iterative
+searching is useful when the client may not have enough memory to store an
+array of results. </p> <p><b>Combined search-sort</b> </p> <p>A combined search-sort
+is done by adding additional search options using <codeph>CMsvSearchSortQuery::AddSearchOptionL()</codeph>. </p> <p><b>Search-sort
+using a query ID</b> </p> <p>A query ID identifies a search-sort query. It
+is obtained by calling <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-1893C3C7-4F77-3630-B115-A161CCA2665A"><apiname>CMsvSearchSortOperation::GetQueryIdL()</apiname></xref> following
+the completion of <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-6C81A72A-3BEC-3D18-9CAD-46E9309C3FEB"><apiname>CMsvSearchSortOperation::RequestL()</apiname></xref>.
+In this example, the query ID generated by the simple non-iterative search-sort
+is used to repeat the same search-sort. The overloaded <codeph>CMsvSearchSortOperation::RequestL()</codeph> function
+is used to initiate a search-sort operation with a query ID. </p> <p>After
+the request completes, a list of index entry ID objects (<xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> or <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> depending
+on how the query was configured, using <xref href="GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7.dita#GUID-A1ECA70D-1D50-3B5F-9D22-74D0215146E7/GUID-B040D6BA-670D-3CBF-B1F7-9AFD1F99267B"><apiname>CMsvSearchSortQuery::SetResultType()</apiname></xref>)
+is retrieved using <codeph>CMsvSearchSortOperation::GetResultsL()</codeph>.
+Finally the matching results are displayed in the console. </p> </section>
+<section id="GUID-AE5E0880-9CAB-57E5-83CB-196D487935DE"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-61C94258-567F-575E-A75C-29D2165FC2CA"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p> <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-F470E492-C920-58E0-860C-5CCE24B0C7F4"><p>For the emulator, the
+example builds an executable called <filepath>searchsortexample.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb                 or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section id="GUID-B72B706B-BB9F-5A0D-A36A-03135FE99E5C"><title>Running the
+example</title> <p> <filepath>searchsortexample.exe</filepath> takes user
+input from the console. The menu for the current example is as shown below: </p> <fig id="GUID-53020118-A1E3-56C3-AA81-9CED04533E27">
+<image href="GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e262349_href.jpg" placement="inline"/>
+</fig> <p>The user input is handled by <codeph>CKeyReader::RunL()</codeph>. </p> <p>For
+simple and combined non-iterative search-sort, the user provides the following
+inputs: 1) the text in the "To" field to search for, 2) whether case sensitivity
+is on of off, 3) whether whole word searching is on or off. </p> <p>The input
+values are saved in variables which are passed to the function <codeph>CSearchsortExample::SearchSortRequestWithoutIteratorL()</codeph>,
+and the settings are made accordingly. </p> <p>For the combined search-sort
+the 2nd and 3rd search options (size and subject) are hard coded. The iterative
+search-sort searches by size, which is also hard coded. </p> <p>To execute
+a search-sort using a query ID, <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-6C81A72A-3BEC-3D18-9CAD-46E9309C3FEB"><apiname>CMsvSearchSortOperation::RequestL()</apiname></xref> must
+first have been called because it generates the query ID. So, either option
+2 or 3 must have been called before option 5. </p> </section>
+<section><title>See also</title><p><xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita">Search-Sort
+Overview</xref></p></section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B2737D23-936F-4968-99DE-7FAB28968AA9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-B2737D23-936F-4968-99DE-7FAB28968AA9" xml:lang="en"><title>Basic
+implementation</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>When the dialog architecture is used
+for the main view, it is recommended that the dialog is run as a modeless
+dialog. This ensures the framework works as it is supposed to.</p>
+<p>This section includes:</p>
+<ul>
+<li><p><xref href="GUID-5578DF32-65ED-47F9-8A10-7538206AC473.dita">Resources</xref></p>
+</li>
+<li><p><xref href="GUID-2BD20EF8-B6B8-4A1B-8B0D-3326B839FD37.dita">Constructing
+a dialog</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B29D55DC-D2EE-5F05-A0BF-7C7C30615479.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B29D55DC-D2EE-5F05-A0BF-7C7C30615479"><title>Database manager</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The database manager builds on the stream store to provide a file-based relational database. The function provided is powerful, and the implementation is very efficient. The database manager is very useful for most data-intensive programs.</p> <p><b>See also</b> </p> <p><xref href="GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E.dita#GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E/GUID-7CFECB38-1A52-5384-B9A7-2DAE624C1468">DBMS</xref> </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e163220_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e154368_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B3248893-9944-5544-84EA-0F4D40992152.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B3248893-9944-5544-84EA-0F4D40992152"><title>Introduction to DBMS databases</title><shortdesc>DBMS provides a functional interface to a relational <keyword>database</keyword>. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction</title> <p>A database contains a collection of <keyword>tables</keyword>. A table contains a set of <keyword>rows</keyword>. A row contains a set of <keyword>columns</keyword>. Every row in a table conforms to a structure described by the table's <keyword>column set</keyword>. Tables can also <keyword>index</keyword> certain columns to sort their rows into a particular order, or provide fast <keyword>key</keyword> -based access to their rows. </p> <p>Database application programs use a <keyword>rowset</keyword>, which maintains a <keyword>cursor</keyword> on a current row within that set. The rowset provides an abstract interface, two types of rowset are provided: </p> <ul><li id="GUID-8348CDA0-FACF-5010-813E-325FFFC66C62"><p>a table is an entire table in a database. Row ordering is either undefined, or by one of the table’s indexes. Fast key-based retrieval using an index can be performed on a table. </p> </li> <li id="GUID-7FAF3656-05E2-5C1B-8E3E-C3523D133995"><p>an SQL view is a rowset generated by an <keyword>SQL</keyword> query on a database. Cursor navigation is implemented by evaluating the view as necessary. Since evaluation may be expensive, a pre-evaluation window may be specified, allowing the rowset to be evaluated once and navigated quickly. Rowsets can also be evaluated in steps. </p> </li> </ul> </section> <section><title>DBMS transactions</title> <p>DBMS supports various DDL (Schema update) statements and DML (Data update) statements. </p> <p>Atomicity of updates is supported by a <keyword>transaction</keyword> mechanism. A transaction may be begun explicitly, otherwise all updates are made inside an <keyword>automatic transaction</keyword>. Explicitly begun transactions are ended by either a <keyword>commit</keyword> or a <keyword>rollback</keyword>. One restriction is that transactions may contain either only data manipulation operations, or only data definition operations: combinations are not supported. </p> <p>There are a few operations on a database which may take an unknown and potentially long time to execute, such as index creation or recovery. An interface is provided to run these operations <keyword>incrementally</keyword>, so that a user program can remain responsive to other events. </p> </section> <section><title>DBMS API</title> <p>There are two implementations of the API, <xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref> and <xref href="GUID-6433D7F9-B4C7-39DA-BEF4-5EA22B8478A2.dita"><apiname>RDbNamedDatabase</apiname></xref>. </p> <p>The <xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref> class provides the means to create and open an exclusive client-side database. The <xref href="GUID-6433D7F9-B4C7-39DA-BEF4-5EA22B8478A2.dita"><apiname>RDbNamedDatabase</apiname></xref> provides the interface for creating and opening a database identified by name and its format; this is used when accessing a shared database through the DBMS client/server mechanism. The default data storage method is as a store database. </p> <p>The DBMS API was written specifically to allow alternative implementations to be written, although a new implementation would be a non-trivial undertaking. </p> </section> </conbody><related-links><link href="GUID-B3248893-9944-5544-84EA-0F4D40992152.dita"><linktext>Introduction to DBMS
+                databases</linktext> </link> <link href="GUID-A278C1A2-0724-5800-B353-46809C44C142.dita"><linktext>Transactions on store
+                databases</linktext> </link> <link href="GUID-F5B0FE6A-6DE6-56B5-89A5-684CD2602B40.dita"><linktext>Implementation limits</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF"><title>Drawing a Rounded Rectangle</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an example that demonstrates how to draw a rounded rectangle using <codeph>DrawRoundRect()</codeph>. The dimensions of each corner (corner size and corner height) are given by a <codeph>TSize</codeph> argument. </p> <fig id="GUID-F54B5E46-9C2A-50DF-BAA9-222BD8EEF283"><title>
+          Rounded rectangle construction 
+        </title> <image href="GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e178839_href.png" placement="inline"/></fig> <codeblock id="GUID-50D54618-4C7E-57D1-90BE-8A92CD5F4161" xml:space="preserve">...
+// draw a rectangle with rounded corners, centered in the rectangle
+TSize cornerSize(20,20); // set up the size of a rounded cornerSize
+gc.DrawRoundRect(box,cornerSize);
+...</codeblock> <p>In the following example code, one of the ellipses specified by the corner argument is shown, to illustrate how the rounded rectangle is constructed: </p> <codeblock id="GUID-ABF288C3-C830-5E44-B31A-6E4FCEE29A9E" xml:space="preserve">...
+// draw a rectangle with rounded corners,
+//centered in the rectangle, showing a corner ellipse
+TSize cornerSize(20,20); // size of a rounded corner
+    
+// rect for corner ellipse is twice the corner size
+TSize cornerEllipseSize(cornerSize.iHeight*2,cornerSize.iWidth*2);
+TRect cornerRectTl(box.iTl,cornerEllipseSize);
+gc.DrawRoundRect(box,cornerSize);
+gc.SetPenStyle(CGraphicsContext::EDottedPen);
+gc.DrawEllipse(cornerRectTl); // corner construction ellipse
+...</codeblock> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B340078C-9EFC-4017-8F43-B0BBCE4935DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B340078C-9EFC-4017-8F43-B0BBCE4935DC" xml:lang="en"><title>Playing
+a video clip</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To open, play and retrieve information about video data stored in a
+file, descriptor, or URL, use the video player utility of the Multimedia Framework
+to develop your application. To play a video clip, the application needs to
+repeat the steps described in the illustration below.</p>
+<fig id="GUID-FC95D96A-BD76-4296-AAA0-832206A27B73"><title>The steps required to play a video clip</title><image href="GUID-9770F3B4-998D-474F-9A82-1B134A4C2869_d0e267623_href.png"/></fig>
+<p>To play a video clip, use the methods of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html" format="application/java-archive"><codeph>CVideoPlayerUtility</codeph></xref> class
+to construct your application.</p>
+<section><title>To play a video</title>
+<ol>
+<li id="GUID-6BBE2F20-3EF8-4397-B36B-7F8AE0411650"><p>Create a video
+player object, open a video clip and prepare it to be played.</p>
+<ul>
+<li><p>Create a player object using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aNewL%28MVideoPlayerUtilityObserver%20%26amp%3b%2cTInt%2cTMdaPriorityPreference%2cRWsSession%20%26amp%3b%2cCWsScreenDevice%20%26amp%3b%2cRWindowBase%20%26amp%3b%2cconst%20TRect%20%26amp%3b%2cconst%20TRect%20%26amp%3b%29" format="application/java-archive"><codeph>CVideoPlayerUtility::NewL()</codeph></xref> method.</p>
+</li>
+<li><p>Open a video clip from a file, descriptor using the respective <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aOpenFileL%28const%20TDesC%20%26amp%3b%2cTUid%29" format="application/java-archive"><codeph>CVideoPlayerUtility::OpenFileL()</codeph></xref> or <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aOpenDesL%28const%20TDesC8%20%26amp%3b%2cTUid%29" format="application/java-archive"><codeph>CVideoPlayerUtility::OpenDesL()</codeph></xref>. <xref href="GUID-795ED4C0-7C82-41DE-AD5B-AC69A426E2A5.dita">Streamed
+content</xref> can be opened with <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aOpenUrlL%28const%20TDesC%20%26amp%3b%2cTInt%2cconst%20TDesC8%20%26amp%3b%2cTUid%29" format="application/java-archive"><codeph>CVideoPlayerUtility::OpenUrlL()</codeph></xref>. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/MVideoPlayerUtilityObserverClass.html#%3a%3aMVideoPlayerUtilityObserver%3a%3aMvpuoOpenComplete%28TInt%29" format="application/java-archive"><codeph>MVideoPlayerUtilityObserver::MvpuoOpenComplete()</codeph></xref> is
+called upon completion.</p></li>
+<li><p>Prepare the video clip to be read using <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aPrepare%28%29" format="application/java-archive"><codeph>CVideoPlayerUtility::Prepare()</codeph></xref>. <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/MVideoPlayerUtilityObserverClass.html#%3a%3aMVideoPlayerUtilityObserver%3a%3aMvpuoPrepareComplete%28TInt%29" format="application/java-archive"><codeph>MVideoPlayerUtilityObserver::MvpuoPrepareComplete()</codeph></xref> is
+called upon completion.</p></li>
+</ul>
+</li>
+<li id="GUID-3582516A-2E58-4024-BC82-86E79DF253CF"><p>Configure
+the player settings.</p><p>You can check and set, for example, the playback
+priority, display window, audio track, video frame size and frame rate, audio
+and video codecs and bitrates, and the MIME type of the video clip. For more
+information on the options, see the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html" format="application/java-archive"><codeph>CVideoPlayerUtility</codeph></xref> class.</p>
+</li>
+<li id="GUID-FF788EF1-6991-48CE-A43D-50E5F98856BD"><p>Play the video
+clip.</p>
+<ul>
+<li><p>Start the playback of a video clip using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aPlay%28%29" format="application/java-archive"><codeph>CVideoPlayerUtility::Play()</codeph></xref> method.</p>
+</li>
+<li><p>Pause playback using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aPauseL%28%29" format="application/java-archive"><codeph>CVideoPlayerUtility::PauseL()</codeph></xref> method. Resume playback
+by calling <codeph>CVideoPlayerUtility::Play()</codeph> again.</p></li>
+<li><p>Stop playback using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aStop%28%29" format="application/java-archive"><codeph>CVideoPlayerUtility::Stop()</codeph></xref> method. If the playback
+is not explicitly stopped, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/MVideoPlayerUtilityObserverClass.html" format="application/java-archive"><codeph>MVideoPlayerUtilityObserver::MvpuoPlayComplete()</codeph></xref> is called upon completion.</p></li>
+</ul>
+</li>
+<li id="GUID-C517833F-4A5C-438B-BFAD-05691C805A6F"><p>To exit the
+application or to switch it to the background, close the video clip and unload
+all controllers using the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Multimedia_Framework/CVideoPlayerUtilityClass.html#%3a%3aCVideoPlayerUtility%3a%3aClose%28%29" format="application/java-archive"><codeph>CVideoPlayerUtility::Close()</codeph></xref> method.</p></li>
+<li id="GUID-EDF371B0-40E6-4FE4-AB3B-6E7E7615D888"><p>Include the <codeph>VideoPlayer.h</codeph> header
+file in the appropriate class file(s).</p></li>
+<li id="GUID-F9642238-8046-476A-89C1-78092B67800F"><p>Make sure
+you have correct <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capabilities</xref> information
+set for your application. You need at least the <codeph>UserEnvironment</codeph> capability.
+If you want to set the recording priority for the video/audio device, you
+need the <codeph>MultimediaDD</codeph> capability.</p></li>
+<li id="GUID-7E812E69-C12E-43A5-809F-4A47104F7822"><p>Make sure <codeph>mediaclientvideo.lib</codeph> is
+accessible to your linker when compiling your application by including it
+in your <codeph>mmp</codeph> file or by editing the project properties in
+your IDE, depending on your build environment.</p></li>
+</ol>
+</section>
+<section><title>Additional information on playing a video clip</title>
+<p>For code examples, see <xref href="http://wiki.forum.nokia.com/index.php/How_to_play_a_video_file_using_CVideoPlayerUtility" scope="external">How
+to play a video using CVideoPlayerUtility</xref> on Forum Nokia Developer
+Community Wiki.</p>
+<p>For more information on <codeph>CVideoPlayerUtility</codeph>, see <xref href="http://developer.symbian.com/main/documentation/books/books_files/quick/multimedia_recipes.pdf?strScope=website&amp;searchString=CVideoPlayerUtility" scope="external">Multimedia recipes</xref> in the Symbian Developer Network.</p>
+<p>For information on the codecs needed to play a video clip, see <xref href="GUID-536DCEAF-3598-4D3E-A812-E266720F350D.dita"/>.</p>
+<p>For more information about <codeph>CVideoPlayerUtility</codeph> in the
+Video Client library see following documents:</p>
+<ul>
+<li><p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating
+and Preparing a Video Player</xref></p></li>
+<li><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring
+the Video Player</xref></p></li>
+<li><p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling
+Video Playback</xref></p></li>
+<li><p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling
+the Video Controller Plugin</xref></p></li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B36F47DC-0A62-5B8F-A761-2717B921A339.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B36F47DC-0A62-5B8F-A761-2717B921A339" xml:lang="en"><title>Pre-configuring
+the URI List</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The URI List framework provides support for pre-configuration of URIs in
+the list. This enables clients to pre-define URIs before shipping the device
+to end users. The URIs can be pre-configured to both BlackList and WhiteList.
+The pre-configuration also allows clients to secure such URIs by disabling
+removal or modification of the URIs. </p>
+<p>The pre-configuration is done by creating an XML data file and installing
+it in a server's secure path. The pre-configuration happens only once, that
+is, when the first session with the server is created after installing the
+XML file. When the server is started and if the URI List is empty, the server
+checks for an XML file in its private path. If it exists, it copies the data
+to the list. </p>
+<p> <note>You cannot pre-configure the list after you have added URIs to it</note>. </p>
+<p>Here are the steps to be performed for pre-configuration of the URI List: </p>
+<ol id="GUID-4E19F75F-64DF-5A28-8F7E-9E4AAD5043FE">
+<li id="GUID-5D93C60B-C815-58F2-B969-225D097037B3"><p>Create the XML data
+file referring to the DTD shown in the <xref href="GUID-B36F47DC-0A62-5B8F-A761-2717B921A339.dita#GUID-B36F47DC-0A62-5B8F-A761-2717B921A339/GUID-14380740-AAA6-519E-BA97-B1A9581424B2">URI
+List pre-configuration DTD</xref> section. </p> </li>
+<li id="GUID-4DA0CF7D-0D5E-5CAF-A3B1-A068D7E6BD7C"><p>Create an SIS package
+containing this XML file. Sign it with ProtServ capability. </p> <p> <b>Note:</b> The
+installation path of the XML file is <filepath>c:\\private\\20009D70\\</filepath>.
+The name of the XML file should be <filepath>ineturilist.xml</filepath>. </p> </li>
+<li id="GUID-985654A0-ADC3-50EE-97C8-4EF06E3DE47E"><p>Install the SIS package. </p> </li>
+</ol>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B3760707-2810-4CD9-82C7-6A40DE638D36.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B3760707-2810-4CD9-82C7-6A40DE638D36" xml:lang="en"><title>Submenu
+indicators</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A submenu is at times used for changing the mode or temporary settings
+in applications. Radio buttons are used when only one item may be selected
+and tick marks are used where the user can choose more than one item. The
+indicators show the currently active mode or settings when the submenu is
+opened.</p>
+<fig id="GUID-8FB52F80-B668-4377-9FD0-45C9B0EAF266">
+<title>Submenu indicators: radio buttons</title>
+<image href="GUID-3978E21E-9B7A-4BEA-9B0A-10C247F6451B_d0e58793_href.png" scale="40" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679"><title>What are the Daemon Message Types?</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes the daemon message types that the configuration daemon server's <codeph>ServiceL()</codeph> function handles. </p> <p>The server must handle 5 message types in its session <codeph>ServiceL()</codeph> function. These message types are as follows: </p> <ul><li id="GUID-6E5C7BFB-4600-5317-8ED6-0B2751FA0260"><p>The Configuration message type allows the daemon to configure the interface as it starts up. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-5E6928F9-9ACD-598A-A08B-DF779E15B2E1">Configuration</xref>. </p> </li> <li id="GUID-13BA483C-B4E8-5F5C-9813-6BF17531ACC5"><p>The deregistration message type allows the daemon to take action when the interface is shutting down. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-7AA93E7F-3285-54E0-8EFD-DD45600C5F8E">Deregistration</xref>. </p> </li> <li id="GUID-9C9A556C-7808-59DC-9F33-B2EA54C05F78"><p>Progress notifications allow the daemon to notify clients of events. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-8E23F63F-B5C8-57E3-A870-D5D2EC201A02">Progress notifications</xref>. </p> </li> <li id="GUID-8489091B-2DEF-5BF2-A151-DDDD2EE13003"><p>Ioctl commands allow the daemon to handle daemon-specific requests from clients. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-043DA160-844E-5406-8A73-99A26152647A">Ioctl commands</xref>. </p> </li> <li id="GUID-B19C54C9-2E60-541C-AC0A-FEE746A23EC2"><p>Cancellation and Cancellation mask messages allow asynchronous requests to the daemon to be cancelled. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-7E4F8183-F5A8-5E83-BB36-FD769A53A7EB">Cancellation</xref>  </p> </li> </ul> <section id="GUID-5E6928F9-9ACD-598A-A08B-DF779E15B2E1"><title>Configuration</title> <p>When a new connection is requested, the server receives an <codeph>EConfigDaemonConfigure</codeph> message. It occurs when a NIF calls <xref href="GUID-B0FB98F0-4327-3186-81F5-82653A854167.dita#GUID-B0FB98F0-4327-3186-81F5-82653A854167/GUID-7C4DABD0-D8DA-32CB-9CCD-1EBA7C8BFF87"><apiname>MNifIfNotify::LinkLayerUp()</apiname></xref> to indicate to NIFMAN that the link layer is up. </p> <p> <xref href="GUID-E104DE5D-FF3F-3E07-ACC3-E24A96DF3629.dita"><apiname>TConnectionInfoBuf</apiname></xref> packages a <xref href="GUID-BC490B7D-F1A8-399A-9D61-6D3CAC7F44AA.dita"><apiname>TConnectionInfo</apiname></xref> object that specifies the IDs of CommDb IAP and Network records used for the connection. </p> <p>The message has a data buffer parameter that provides a <xref href="GUID-E104DE5D-FF3F-3E07-ACC3-E24A96DF3629.dita"><apiname>TConnectionInfoBuf</apiname></xref> object. </p> <p>The following code reads the CommDb IAP ID from a received message: </p> <codeblock id="GUID-1F07E6F2-092E-52CE-8DB4-410D91FC07AE" xml:space="preserve">TConnectionInfoBuf conInfoBuf;
+aMessage.Read(0, conInfoBuf);
+TConnectionInfo conInfo = conInfoBuf();
+TInt iap = conInfo.iIapId;</codeblock> <p>This information allows the daemon to access the relevant CommDb records, and to update the fields. A Mobile IP daemon obtains a care-of-address for the phone and set the IP address for the interface using <codeph>RSocket::SetOpt(KSoInetConfigInterface, KSolInetIfCtrl,
+          interfaceInfoBuf)</codeph>. </p> <p>The message request is asynchronous, and can be cancelled with a <xref href="GUID-43933310-47FA-399D-9362-BD48D375B316.dita"><apiname>EConfigDaemonCancel</apiname></xref> or <xref href="GUID-86450E9D-1DED-3A4B-A6CD-0D0E5F8B8930.dita"><apiname>EConfigDaemonCancelMask</apiname></xref> request. </p> <p>If the configuration is slow or if the idle timeouts are short, the daemon configuration may be interrupted by the expiry of the NIFMAN idle timer. To overcome this, the configuration daemon can disable and then enable idle timers at appropriate times using <codeph>RConnection::SetOpt(KCOLProvider,
+          KConnDisableTimers, ETrue)</codeph>. </p> <p> <b>Note:</b> NIFMAN waits indefinitely for a configuration daemon to finish configuration of the interface if the idle timers have been disabled. The configuration daemon must be implemented robustly to ensure that the request is always terminated. </p> </section> <section id="GUID-7AA93E7F-3285-54E0-8EFD-DD45600C5F8E"><title>Deregistration</title> <p>The server receives a <codeph>EConfigDaemonDeregister</codeph> message when an interface is shuts down for one of the following reasons: </p> <ul><li id="GUID-7112394B-5621-5AA9-B9F8-BFD8F4B53341"><p>The NIFMAN idle timer is expired. This timer shuts down the interface if there has not been activity for a specified time. For more information about the time out values, see <xref href="GUID-9F96807F-25DC-5DE1-B327-3E339665FF64.dita">Reference</xref>  </p> </li> <li id="GUID-DE4DC647-144D-5B47-B0EC-5BA022E1BCDD"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-52878713-A4E8-327E-901B-449EF3D39E0A"><apiname>RConnection::Stop()</apiname></xref> is called on the interface. </p> </li> </ul> <p>When it receives a deregistration message, the configuration daemon instructs NIFMAN to go into fast dormant mode. NIFMAN then keeps the NIF and the agent loaded, and stops the idle timer. </p> <p>When the daemon instructs NIFMAN to go into fast dormant mode, the daemon tells NIFMAN when the link is up again. It does this by issuing a <xref href="GUID-EFEF01EA-9EF6-35FC-812E-47E95E9D4183.dita"><apiname>KConfigDaemonFinishedDormantMode</apiname></xref> progress notification. For more information about progress notifications, see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-8E23F63F-B5C8-57E3-A870-D5D2EC201A02">progress notifications</xref>. NIFMAN sets the link state to indicate that it is up, and restarts the idle timer. </p> <p>The deregistration message has two parameters: </p> <ul><li id="GUID-29B497D7-F068-5AFA-A89B-198C0F39EDA5"><p>0: an integer <i>in</i> parameter that identifies the cause of the deregistration request. </p> <p>This is an enum <xref href="GUID-39B98E76-15C6-3294-A188-DA4C5296F83E.dita"><apiname>EConfigDaemonDeregisterCause</apiname></xref> value, being either <xref href="GUID-C1B80703-45CF-32C1-AE40-087D0F97087E.dita"><apiname>EConfigDaemonDeregisterCauseTimer</apiname></xref>, meaning the deregistration was caused by the NIFMAN idle timer, or <xref href="GUID-5E2B1486-994D-338C-B1F8-2986070A6447.dita"><apiname>EConfigDaemonDeregisterCauseStop</apiname></xref> which means the deregistration was caused by <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-52878713-A4E8-327E-901B-449EF3D39E0A"><apiname>RConnection::Stop()</apiname></xref>. </p> </li> <li id="GUID-4686A6F8-7F5A-52F2-AE55-06E3889F7A01"><p>1: a <codeph>TDes8*</codeph>  <i>out</i> parameter that identifies the action NIFMAN must take. </p> <p>The daemon should package into this output buffer an enum <xref href="GUID-8DF05BAE-3D02-3C16-B941-D9F6EAC8D9B4.dita"><apiname>EConfigDaemonDeregisterAction</apiname></xref> value. The defined values are <xref href="GUID-04AD3BC8-5581-3305-B3CC-F59829E3FF42.dita"><apiname>EConfigDaemonDeregisterActionStop</apiname></xref>, meaning to stop the interface, or <xref href="GUID-B8FAD27D-432A-395C-852C-FC5E8A1D8813.dita"><apiname>EConfigDaemonDeregisterActionPreserve</apiname></xref>, meaning to preserve the interface state. </p> </li> </ul> <p>The message request is asynchronous, and can be cancelled with an <xref href="GUID-43933310-47FA-399D-9362-BD48D375B316.dita"><apiname>EConfigDaemonCancel</apiname></xref> or <xref href="GUID-86450E9D-1DED-3A4B-A6CD-0D0E5F8B8930.dita"><apiname>EConfigDaemonCancelMask</apiname></xref> request. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-7E4F8183-F5A8-5E83-BB36-FD769A53A7EB">Cancellation</xref>. </p> <p>Deregistration can be interrupted when the NIFMAN idle timer expires. For more information see <xref href="GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679.dita#GUID-B380482B-CF42-50BF-B09C-F4B3BDAA1679/GUID-5E6928F9-9ACD-598A-A08B-DF779E15B2E1">Configuration</xref>. </p> </section> <section id="GUID-8E23F63F-B5C8-57E3-A870-D5D2EC201A02"><title>Progress notifications</title> <p>When running, a daemon can generate progress notifications at any time. The NifMan receives these notifications and pass them to ESock and all ESock clients that subscribe to <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-96DC395D-B5EE-3F26-8EFC-52E7AF64ED93"><apiname>RConnection::ProgressNotification()</apiname></xref> for the current interface. </p> <p>When the daemon is loaded it receives an <xref href="GUID-94D54DB4-1418-3938-940A-C79F79BFBCFC.dita"><apiname>EConfigDaemonProgress</apiname></xref> message that requests progress notifications. The message has a single <i>out</i> parameter, a <xref href="GUID-8E5DEEC4-5715-34B7-9A43-E17774A0D418.dita"><apiname>TDaemonProgressBuf</apiname></xref>, which packages a <xref href="GUID-67C2F692-09FB-3AAF-A96F-447788913F17.dita"><apiname>TDaemonProgress</apiname></xref> object. This has integer fields to hold the progress stage and error code. The integer fields correspond to those in the <xref href="GUID-883CEFF1-146E-30FF-9AD7-E13D0E9C6183.dita"><apiname>TNifProgress</apiname></xref> object. The client receives the <xref href="GUID-883CEFF1-146E-30FF-9AD7-E13D0E9C6183.dita"><apiname>TNifProgress</apiname></xref> object from <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-96DC395D-B5EE-3F26-8EFC-52E7AF64ED93"><apiname>RConnection::ProgressNotification()</apiname></xref>. To send a notification from the client, the daemon writes its progress information into this parameter and complete this message. NifMan handles the notification and issues a progress request to the daemon. </p> <p>The daemon can define the appropriate stages for the function. <xref href="GUID-EFEF01EA-9EF6-35FC-812E-47E95E9D4183.dita"><apiname>KConfigDaemonFinishedDormantMode</apiname></xref> is used when resuming the link from dormant mode. </p> </section> <section id="GUID-043DA160-844E-5406-8A73-99A26152647A"><title>Ioctl commands</title> <p>When a client issues a <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-9F820CF9-1D4F-3452-983B-E0C694D6783A"><apiname>RConnection::Ioctl()</apiname></xref> call the server receives an <codeph>EConfigDaemonIoctl</codeph> message. The configuration daemon can define its own set of ioctl commands, appropriate to its function. </p> <p>The following 4 parameters can be used: </p> <ul><li id="GUID-F8DAFE60-7CEA-5C8F-BE5B-D37A4B10B242"><p>0: an integer specifying the ioctl option level </p> </li> <li id="GUID-E1F331D3-A0CE-5942-90FE-429097D06927"><p>1: an integer specifying the ioctl option name </p> </li> <li id="GUID-D9BBECC6-EA44-57E7-B636-BF4F0986A29D"><p>2: a pointer to a caller supplied data buffer (<codeph>TDes8*</codeph>). This is optional. If set, the message handler reads data from the buffer, and writes back to it to return data to the caller. </p> </li> <li id="GUID-2C0021AA-C6EF-5A11-9FC1-341AFFEA8E18"><p>3: an integer specifying the maximum length of the caller supplied data buffer. If a buffer is not supplied this has a value of 0. </p> </li> </ul> <p>The following code gets the option level and name from the message. For messages that supply a data buffer (length&gt;0) the code calls a handler function <codeph>HandleClientRequestL()</codeph>. <codeph>HandleClientRequestL()</codeph> includes the returned buffer in the message. </p> <codeblock id="GUID-1480D18A-764C-5E38-B6E4-6292AAD75920" xml:space="preserve">  TUint optionLevel = aMessage.Int0();
+  TUint optionName = aMessage.Int1();
+  TInt length = aMessage.Int3();
+
+  if (length&gt;0)
+    {
+    HBufC8* buffer = HBufC8::NewMaxLC(length);
+    TPtr8 ptr = buffer-&gt;Des();
+    aMessage.ReadL(2, ptr);
+    HandleClientRequestL(optionLevel, optionName, &amp;ptr);
+    aMessage.Write(2, ptr);
+    CleanupStack::PopAndDestroy(buffer);
+    aMessage.Complete(KErrNone);
+    }</codeblock> <p>The message request is asynchronous, and can be cancelled with an <xref href="GUID-43933310-47FA-399D-9362-BD48D375B316.dita"><apiname>EConfigDaemonCancel</apiname></xref> or <xref href="GUID-86450E9D-1DED-3A4B-A6CD-0D0E5F8B8930.dita"><apiname>EConfigDaemonCancelMask</apiname></xref> request. </p> </section> <section id="GUID-7E4F8183-F5A8-5E83-BB36-FD769A53A7EB"><title>Cancellation</title> <p>An <xref href="GUID-43933310-47FA-399D-9362-BD48D375B316.dita"><apiname>EConfigDaemonCancel</apiname></xref> message cancels all outstanding requests except progress notifications. It does not have parameters. The service function completes the message and cancels any current asynchronous operations. </p> <p>An <xref href="GUID-86450E9D-1DED-3A4B-A6CD-0D0E5F8B8930.dita"><apiname>EConfigDaemonCancelMask</apiname></xref> message has a single integer parameter. If the parameter is <xref href="GUID-97EB0475-4421-3884-A56B-402A86CF1D94.dita"><apiname>KConfigDaemonOpMaskProgress</apiname></xref> the progress notifications are cancelled. If the parameter is <xref href="GUID-E0148481-84D9-3F78-81AC-7FBBA6CCE89D.dita"><apiname>KConfigDaemonOpMaskGeneral</apiname></xref>, all other outstanding operations are cancelled. <xref href="GUID-E0148481-84D9-3F78-81AC-7FBBA6CCE89D.dita"><apiname>KConfigDaemonOpMaskGeneral</apiname></xref> provides the same functionality as <xref href="GUID-43933310-47FA-399D-9362-BD48D375B316.dita"><apiname>EConfigDaemonCancel</apiname></xref>. </p> </section> </conbody><related-links><link href="GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita"><linktext>What is Network Interface Management
+                (NifMan)?</linktext> </link> <link href="GUID-82499F0B-2791-59B6-9BAE-F9F87234FBF1.dita"><linktext>Implementing a NifMan Daemon
+                Tutorial</linktext> </link> <link href="GUID-9F96807F-25DC-5DE1-B327-3E339665FF64.dita"><linktext>Reference</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B386CA7A-F527-5584-9455-371E623DCF76.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B386CA7A-F527-5584-9455-371E623DCF76" xml:lang="en"><title> System
+Start Example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-e4fe3134-4d3b-443f-80fe-374972df6f9b.zip" scope="external"> SysStart.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-e4fe3134-4d3b-443f-80fe-374972df6f9b.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-F3EFB022-A771-50D2-9C36-FFEFA4924441"><title> Description</title> <p>This
+example demonstrates the use of resource files at the time of System Start-up.
+System starter is an architecture designed to provide a consistent, transparent,
+easily customisable method of starting components (i.e. servers and applications)
+at device boot. It allows an ordering of components according to criticality
+and dependency by means of a Static Start-up Configuration (SSC). </p> </section>
+<section><title>Related APIs</title><p><xref href="GUID-478D0251-D49B-36C5-B9DF-09FFFE7CDB53.dita#GUID-478D0251-D49B-36C5-B9DF-09FFFE7CDB53/GUID-E99F5505-FC87-3232-A933-4C522C04931A"><apiname>egSysStart::E32Main () </apiname></xref></p><p><xref href="GUID-478D0251-D49B-36C5-B9DF-09FFFE7CDB53.dita#GUID-478D0251-D49B-36C5-B9DF-09FFFE7CDB53/GUID-54F036C5-D86E-34B0-B74A-AD4DF2328086"><apiname>egSysStart::Simple
+()</apiname></xref></p></section>
+<section id="GUID-693F8259-B441-50F2-8E2A-EB2A57E5665A"><title>Resource files</title> <p>In
+this example a resource file <codeph>SSCForStartupMode0.rss</codeph> is used
+at Start-up. </p> <p>On a target device booting normally, the SSC <codeph>SSCForStartupMode0.rss</codeph> is
+always used for start-up. This SSC is associated with startup mode zero, which
+is defined as <xref href="GUID-6866563D-8AF5-3F3F-A777-50B264194B83.dita"><apiname>EStartupModeUndefined</apiname></xref> in e32modes.h. The
+System Starter architecture provides an ability to select between a number
+of static Start-up configurations (rss files) depending on the desired Start-up
+Mode, for example: Full, Emergency, Charging, or Test. Each of these modes
+may require different sets of components and order of execution. </p> <p>The
+start-up process in the resource file is staged via an ordering of Start-up
+States or phases. These states cannot be removed or their values altered.
+They appear in the following order: </p> <p> <xref href="GUID-F4C1F118-3580-3D25-AB14-DAD8D20CF302.dita"><apiname>EStartupStateUndefined</apiname></xref> –
+Value before the system enters its first state/ undefined state. </p> <p> <xref href="GUID-DA625784-61CA-3256-9D93-EB447BF9AA62.dita"><apiname>EStartupStateCriticalStatic</apiname></xref> –
+Within this Start-up State all ROM based (static) components or resources
+that are critical to the operation of the phone function are started. </p> <p> <xref href="GUID-737BC60E-ECA2-3B22-A0A4-5F6F5136D6F0.dita"><apiname>EStartupStateCriticalDynamic</apiname></xref> –
+Within this Start-up State all non-ROM based (dynamic) components or resources
+that are critical to the operation of the phone function are started. </p> <p> <xref href="GUID-3C0E080D-7FF1-3347-B129-D2805FCD7840.dita"><apiname>EStartupStateNonCritical</apiname></xref> –
+Within this Start-up State all ROM based (static) or non-ROM based (dynamic)
+components or resources that are non-critical to the operation of the phone
+function are started. All components that have not already been started and
+are required at device boot are started in this Start-up State. </p> <p>This
+allows start-up to be split into separate, distinct states with a defined
+order. Within each state, a <codeph>STATE_INFO</codeph> structure containing
+information regarding that state is located. This contains the following information: </p> <table id="GUID-A370B739-910B-55E5-9C92-FAC72362FDCB">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>Id</codeph>  </p> </entry>
+<entry><p>The id of the state as defined in the custom header file </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Name</codeph>  </p> </entry>
+<entry><p>A text string describing the state </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Command_list</codeph>  </p> </entry>
+<entry><p>The name of the Command array in the SSC which contains the list
+of Commands to invoke in that state </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>Next</codeph>  </p> </entry>
+<entry><p>The name of the Command array corresponding to the next state </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Following the <codeph>STATE_INFO</codeph> structure in the SSC
+is a <codeph>COMMAND_ARRAY</codeph> structure. This contains details of all
+commands to be executed within that list. Its name matches the command_list
+identifier in the <codeph>STATE_INFO</codeph> struct and contains one array
+entry: Commands. The Command entry contains a list of all commands to be executed.
+Each instance in the rss file is headed with the <codeph>START_PROCESS_INFO </codeph> identifier
+and contains any value needed to override the defaults specified in <codeph>startup.rh</codeph>. </p> <table id="GUID-7E7519BC-54C9-59E7-AB07-46748C6F7A44">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><codeblock id="GUID-44EDEC24-A19F-5991-9528-11804376ABB2" xml:space="preserve">Type</codeblock> </entry>
+<entry><p>Set by default. Should not be specified in the SSC. </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-7559D8D5-DD16-5E7B-86EB-0337ED7ACCE7" xml:space="preserve">Path</codeblock> </entry>
+<entry><p>The location of the binary e.g. path = "Z:\sys\bin\fbserv.exe" </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-C4C5EE86-3E58-552B-8607-F1AC8B6EDCD1" xml:space="preserve">Args</codeblock> </entry>
+<entry><p>Arguments passed to the process. </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-6C04D96F-6B77-5368-9B48-9BC9D35B6710" xml:space="preserve">start_method</codeblock> </entry>
+<entry><p>The enum <codeph>TStartupCommandType</codeph> is defined in <codeph>startup.hrh</codeph>.
+Currently it takes one of three values: </p> <ul>
+<li id="GUID-EB15D58C-A9FC-5C92-A5F6-23CA7D547C86"><p> <xref href="GUID-119A71D6-F979-345B-8AC7-7768F68A36BE.dita"><apiname>EFireAndForget</apiname></xref> (the
+default) </p> </li>
+<li id="GUID-FC24705E-4144-5FCA-AA4D-04871C5ED6F9"><p> <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref>  </p> </li>
+<li id="GUID-BE71C616-0E0B-5916-9058-43B0CA5A278F"><p> <xref href="GUID-3C5930DE-E84C-3170-AC5A-BCFC16D6AE77.dita"><apiname>EDeferredWaitForStart</apiname></xref>  </p> </li>
+</ul> <p>Use <xref href="GUID-119A71D6-F979-345B-8AC7-7768F68A36BE.dita"><apiname>EFireAndForget</apiname></xref> if there is no need for the
+process to be started serially in other words as soon as the process has been
+invoked, the System Starter can continue with starting the next process without
+waiting for the process to rendezvous. </p> <p>Use <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref> if
+the process needs to get to a certain stage before starting the next process.
+The starter cannot continue with the next Command until a rendezvous has been
+made with the first process. </p> <p>Note that the apparc component must be
+started with mode <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref> to allow connection with
+the server to take place. </p> <p>Use <xref href="GUID-3C5930DE-E84C-3170-AC5A-BCFC16D6AE77.dita"><apiname>EDeferredWaitForStart</apiname></xref> if
+there is no need to start the process serially, but at a later stage there
+is a command which cannot be invoked until this process has initialized. Using
+this value allows a number of commands to be started and the System Starter
+to wait for them all at a later point in the SSC. This ensures later on that
+the initializations of all <xref href="GUID-3C5930DE-E84C-3170-AC5A-BCFC16D6AE77.dita"><apiname>EDeferredWaitForStart</apiname></xref> commands
+have completed. </p> <p> <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref> and <xref href="GUID-3C5930DE-E84C-3170-AC5A-BCFC16D6AE77.dita"><apiname>EDeferredWaitForStart</apiname></xref> depend
+upon receiving a rendezvous from the started process. By default this is performed
+automatically by EikonEnv. If however, you wish your component to perform
+its own rendezvous, then the following function should be overridden in your
+AppUi class and return <codeph>EFalse.</codeph>  </p> <p> <codeph>TBool CCoeAppUi::FrameworkCallsRendezvous();</codeph>  </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-1E9E11D2-3BAA-54F2-9481-6A1987CF4100" xml:space="preserve">timeout</codeblock> </entry>
+<entry><p>This field is for use with start_method <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref> only. </p> <p>Indicate
+if a timer should be started when attempting to start the process by filling
+in this timeout value in milliseconds. The value is 0 by default indicating
+that no timer will be started. </p> <p>Note that if the timer expires before
+a rendezvous with the component is made, the component will be killed. If
+the component is a critical process this will result in a Kern:4 Panic (which
+on licensee phones usually initiates in a system restart). </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-CFDA47D2-551B-5215-8854-6FC63433A22B" xml:space="preserve">retry_failure_recovery_method</codeblock> </entry>
+<entry><p>This specifies the action to take if an error is returned from an
+attempt to start the process. </p> <p>It is set to <xref href="GUID-644CC7B0-3B94-307A-A5A1-D7EC78F10105.dita"><apiname>ERestartOS</apiname></xref> by
+default. This means if the process fails to start the system will restart
+in the default start-up mode. </p> <p>If it is set to <xref href="GUID-1E757E7A-98C8-3455-8D82-28A24FBEA729.dita"><apiname>EIgnoreOnFailure</apiname></xref> then
+the starter will continue with the next Command. This option is intended for
+non-critical components on which nothing critical is dependent. </p> <p>If
+it is set to <xref href="GUID-D7BCDD4C-97A0-3068-AC4C-F10DA31DD636.dita"><apiname>ERestartOSWithMode</apiname></xref> the system will be restarted
+in a specific start-up mode. </p> <p>Note: this field has a slightly different
+use depending on the start mode: in modes <xref href="GUID-119A71D6-F979-345B-8AC7-7768F68A36BE.dita"><apiname>EFireAndForget</apiname></xref> and <xref href="GUID-3C5930DE-E84C-3170-AC5A-BCFC16D6AE77.dita"><apiname>EDeferredWaitForStart</apiname></xref> a
+failure will be indicated only if there is an immediate error for example
+the initial process creation/invocation fails. In <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref> a
+failure will also be indicated if there is no successful rendezvous. </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-33D3ABEE-9A48-51B7-BFB7-6CEF2AED8DAE" xml:space="preserve">no_of_retries_on_failure</codeblock> </entry>
+<entry><p>For use with start_method <xref href="GUID-8415D00B-79D9-36BE-9F0B-2DAA3A553CD2.dita"><apiname>EWaitForStart</apiname></xref> only.
+Set to 0 by default. </p> <p>This specifies the maximum number of times the
+starter should try to start a failed process. After the process has been retried
+the specified number of times, the starter will act according to the value
+in the <codeph>retry_failure_recovery_method</codeph> field. This is used
+in conjunction with the timeout value. </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-782C1BA6-D764-5C6C-A232-9CCD5C22AEA3" xml:space="preserve">monitor</codeblock> </entry>
+<entry><p>Indicates whether the started process should be monitored for failure
+by the System Monitor component. The value is 0 by default indicating that
+no monitoring will be done. </p> <p>A value of 1 indicates monitoring should
+be performed. The recovery policy set by <codeph>retry_failure_recovery_method</codeph> (and
+if applicable retry_failure_recovery_startup_mode) will be used by the System
+Monitor if a failure occurs to this process during the lifetime of the system. </p> <p>Note:
+if the component being started is a System Critical process, monitoring must
+not be enabled. </p> </entry>
+</row>
+<row>
+<entry><codeblock id="GUID-8305C64D-3198-5C5B-9AD4-C774D38B9369" xml:space="preserve">retry_failure_recovery_startup_mode</codeblock> </entry>
+<entry><p>For use with retry_failure_recovery_method <xref href="GUID-D7BCDD4C-97A0-3068-AC4C-F10DA31DD636.dita"><apiname>ERestartOSWithMode</apiname></xref> only. </p> <p>Used
+to specify the start-up mode the system should restart with. This is set to <xref href="GUID-6866563D-8AF5-3F3F-A777-50B264194B83.dita"><apiname>EStartupModeUndefined</apiname></xref> by
+default. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B38EBDBA-2A30-5595-9639-6AE58C530DCB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-B38EBDBA-2A30-5595-9639-6AE58C530DCB"><title>Creating a Database </title><shortdesc>This document shows you how to create a database for Symbian SQL. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <context id="GUID-9C6BDAAF-0547-51AF-8F47-5436C0D1697D"><p>Working with databases is not possible until the database exists. In this tutorial you will learn how to create a simple database. </p> <p>This tutorial uses code from the <xref href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita">Basic SQL example application</xref>. </p> <p>The SQL statement used for this tutorial is shown here: </p> <codeblock id="GUID-EA0CADFD-53BF-5599-AD76-92EB15A94E9B" xml:space="preserve">CREATE DATABASE \\Basic_db.db</codeblock> </context> <steps id="GUID-65CD4149-1978-5FD9-84A3-ADACDE6C5B89"> <step id="GUID-3F8A65A1-7682-5C32-B92B-360CB923AA58"><cmd>Declare a constant to hold the database handle: </cmd> <info> <codeph>KDatabaseName</codeph> will be used when creating and accessing the database. </info> <stepxmp><codeblock id="GUID-7BAB1756-75A0-5C8A-B868-F8CD4BB3DEC1" xml:space="preserve">_LIT(KDatabaseName, "\\Basic_db.db");
+_LIT(KDatabaseMsg,"\nCreating a database\n");
+RSqlDatabase db;
+CConsoleBase* iConsole;</codeblock> </stepxmp> <stepresult>The objects and constants needed to create the database are now ready. </stepresult> </step> <step id="GUID-677801E7-CCEB-5158-9853-5BFC800BA6C2"><cmd>Create the database: </cmd> <info>You are telling Symbian SQL to execute the CREATE DATABASE command. </info> <stepxmp><codeblock id="GUID-D3D95DE0-2C19-5216-8160-1E92CC4D7F20" xml:space="preserve">iConsole-&gt;Printf(KDatabaseMsg);
+User::LeaveIfError(db.Create(KDatabaseName));
+iConsole-&gt;Printf(KDatabaseName);</codeblock> </stepxmp> <stepresult>The database now exists. <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase::Create()</apiname></xref> executes the SQL engine command that makes the actual database. You can look in the <filepath>C:\</filepath> drive on the device to confirm that the database object exists. </stepresult> </step> </steps> <result id="GUID-9814EF32-E1BA-52F3-8D2C-F1776D9EF8FE"><p>The database now exists. You can perform all the standard SQL operations on the database including creating and populating a table, querying the database, editing records and deleting the database, to name a few. </p> </result> <example id="GUID-4D518486-E7E1-57DB-AD33-CFFD29CA5DBA"><title>Create database example</title> <p>The following code snippet is from the example code used for this tutorial: </p> <codeblock id="GUID-2DD57F74-DEC1-54AC-82B8-9A186EF7E0B2" xml:space="preserve">...
+_LIT(KDatabaseName, "\\Basic_db.db");
+_LIT(KDatabaseMsg,"\nCreating a database\n");
+...
+CConsoleBase* iConsole;
+...
+void CBasicSqlExample::CreateDatabaseL()
+    {
+    RSqlDatabase db;
+
+    iConsole-&gt;Printf(KDatabaseMsg);
+    //create the database
+    User::LeaveIfError(db.Create(KDatabaseName));
+
+    iConsole-&gt;Printf(KDatabaseName);
+    CleanupClosePushL(db);
+    ...
+    }</codeblock> </example> <postreq id="GUID-762047BF-ED5B-51EF-9B90-2E7B0E8A8A89"><p>Now that you have created a database you need to add a table and populate it with some data. The following will show you how: </p> <ul><li id="GUID-FBF36438-2EC4-5E58-A70A-4C255B9315B6"><p> <xref href="GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita">Creating a Table</xref>  </p> </li> <li id="GUID-53C27AF6-6B97-53AB-B72D-5BD92AB33BA8"><p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting Data into a Table</xref> </p> </li> <li id="GUID-7674D43E-0F60-5C6A-9D5D-4E007B6A9BEB"><p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing from a Data Stream</xref>  </p> </li> </ul> </postreq> </taskbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita"><linktext>Basic SQL Example
+                Application</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B394A824-8745-505E-8429-8B9B6D418387.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B394A824-8745-505E-8429-8B9B6D418387" xml:lang="en"><title>Message Server and Store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides conceptual information and tutorials related to the Message Server and Store component. Client applications can use the services provided by this component. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324" xml:lang="en"><title>Language-Neutral
+Files</title><abstract><p>Language-Neutral files are files that are required to be installed
+irrespective of the languages supported on the Symbian device.</p><p>This
+Language-Neutral files section specifies the location and name of each file
+on the PC and its target location on the Symbian device. Files are installed
+in the order in which they are specified in the PKG file. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn id="GUID-744D2F39-8483-44C0-B335-03882385063E"><title>Syntax</title> <codeblock id="GUID-8B696DC5-3F23-5AD6-AECC-651887995037" xml:space="preserve">"source-filename" - "destination-filename"[, install-options]</codeblock> <p>where </p> <table id="GUID-B9A07521-29B4-5F5C-925F-B261E52FB1D6">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Argument</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p>source-filename </p> </entry>
+<entry><p>Specifies the name and location of the file on computer that must
+be included in the SIS file. </p> </entry>
+</row>
+<row>
+<entry><p>destination-filename </p> </entry>
+<entry><p>Specifies the location on the Symbian device, to which the file
+must be installed. See, <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita#GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324/GUID-1584AED6-8583-51FC-AF7A-24C135DDC5AA">destination-filename</xref> for more information. </p> </entry>
+</row>
+<row>
+<entry><p>install-options </p> </entry>
+<entry><p>Specifies the type of file and how it affects the installation or
+removal. It is an optional comma-separated list. See, <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita#GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324/GUID-E2911CFD-7B9D-55B7-86D1-4DA68870944D">install-options</xref>, for more information. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-1584AED6-8583-51FC-AF7A-24C135DDC5AA"><b>destination-filename</b> </p> <p>The <codeph>destination-filename</codeph> must
+specify the full path. A <codeph>!</codeph> character can be used instead
+of a drive letter to enable the Symbian device user to install the file to
+any required location. As an alternative to <codeph>!</codeph>, the <codeph>$</codeph> character
+can be used to denote the system drive. </p> <p>The <codeph>destination-filename</codeph> must
+not be specified if the file is not required to be installed. For example,
+a text file containing a licence agreement to be displayed during the installation
+must not include destination-filename and can be specified with empty quotes. </p> <p>If
+a file can be installed by other packages, for example, a shared DLL, it is
+recommended to install it using an embedded SIS file. </p> <p>The <codeph>destination-filename</codeph> can
+be specified in one of the following formats: </p> <codeblock id="GUID-D15405BA-B72F-5985-8713-966A33F4B257" xml:space="preserve">"drive:path"</codeblock> <codeblock id="GUID-96AF5EF7-B7BA-5B98-83E8-55D49A4C36AF" xml:space="preserve">"!:path"</codeblock> <codeblock id="GUID-50AA0C70-D535-5436-8732-875D24196EA0" xml:space="preserve">""</codeblock> <p id="GUID-E2911CFD-7B9D-55B7-86D1-4DA68870944D"><b> install-options</b> </p> <p>The
+following table provides a list of the <codeph>install-options</codeph>. </p> <table id="GUID-947C0669-A1F7-52F7-985F-3F75FFBB17C4">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Abbreviation</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>FILE</codeph>  </p> </entry>
+<entry><p> <codeph>FF</codeph>  </p> </entry>
+<entry><p>Specifies a standard installable file. For example: </p> <codeblock id="GUID-923A445F-87A5-5D0C-8B28-A6656D7D8830" xml:space="preserve">"text\file1.txt"-"!:\private\E800005A\file1.txt", FF</codeblock> </entry>
+</row>
+<row>
+<entry><p> <codeph>FILETEXT</codeph>  </p> <p> <codeph>[,text-options]</codeph>  </p> </entry>
+<entry><p> <codeph>FT</codeph>  </p> <p> <codeph>[,text-options]</codeph>  </p> </entry>
+<entry><p>A text file that is displayed in a dialog box during installation.
+The dialog type is determined by the <codeph>text-options</codeph> specified.
+See, <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita#GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324/GUID-E6210579-BFAB-505B-A99F-99175FA0F572">text-options</xref> for
+more information. </p> <p>Text files are not installed on the target device,
+so the target location is empty. An example <codeph>FILETEXT</codeph> line
+is: </p> <codeblock id="GUID-D0728FED-F1A1-5574-BC3B-A24B8A881760" xml:space="preserve">"text\textfilec.txt"-"", FT, TC</codeblock> <p>Any <codeph>FILETEXT</codeph> statements
+present in a PKG file for a preinstalled application are ignored by the software
+installer. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FILERUN</codeph>  </p> <p> <codeph>[,run-options][,RUNWAITEND]</codeph>  </p> </entry>
+<entry><p> <codeph>FR</codeph>  </p> <p> <codeph>[,run-options][,RW]</codeph>  </p> </entry>
+<entry><p>Specifies a file that is installed on the Symbian device and run
+during installation or uninstallation of packages based on the <codeph>RI</codeph>, <codeph>RR</codeph> and <codeph>RB</codeph> arguments.
+For details, see <xref href="GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324.dita#GUID-B3BE018B-0EC5-5866-9BD7-50CBF5670324/GUID-B913501B-A5AB-5ADB-96FF-8060DD45A87E">run-options</xref>. </p> <p>For
+example: </p> <codeblock id="GUID-D985FEB8-4E60-5897-AFE0-89D723EA9350" xml:space="preserve">"\epoc32\release\armv5\urel\zoom.exe"-"!:\sys\bin\zoom.exe", FILERUN, RUNINSTALL</codeblock> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-62883591-AE70-5ABA-B86B-232084BCACF1"><p>The file can be an executable
+or a document containing text. </p> </li>
+<li id="GUID-84B90271-D1A2-578B-AC19-52B04DC9284C"><p>The untrusted applications
+are run through the <codeph>FILERUN</codeph> (<codeph/><codeph>FR</codeph>)
+or <codeph>FILEMIME</codeph> (<codeph>FM</codeph>) statements based on configuration
+of the installation policy. </p> </li>
+</ul> </entry>
+</row>
+<row>
+<entry><p> <codeph>FILEMIME,</codeph>  </p> <p> <codeph>mime-type</codeph>  </p> <p> <codeph>,run-options</codeph>  </p> <p> <codeph>[,RUNWAITEND]</codeph>  </p> </entry>
+<entry><p> <codeph>FM,</codeph>  </p> <p> <codeph>mime-type</codeph>  </p> <p> <codeph>,run-options
+[,RW]</codeph>  </p> </entry>
+<entry><p>Instructs the installer to associate the file with the default application
+associated with the given MIME type, for example, <codeph>text or        
+             x-vCard</codeph> is required to be open for contact details. </p> <p>The
+MIME type in quotes must be specified after the <codeph>FM</codeph> argument. <codeph>FILEMIME</codeph> is
+intended for use with files that are launched during the installation or uninstallation
+and not for standard installation files. For example: </p> <codeblock id="GUID-94D600A6-C80A-5EBB-8240-D481CD24E27B" xml:space="preserve">"my_picture.gif"-"", FM, "image/gif", RI</codeblock> <p>The Software Installer ignores any <codeph>FILEMIME</codeph> statements
+present in a PKG file for a preinstalled application. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-E6210579-BFAB-505B-A99F-99175FA0F572"><b>text-options</b> </p> <p> <codeph>text-options</codeph> can
+be used after <codeph>FT</codeph> is specified. It is used by the UI to determine
+the type of dialog that is used to display the text. It can have one of the
+following values. </p> <table id="GUID-2DDEC392-244A-505C-B102-EBE19D8A3CC3">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Abbreviation</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>TEXTCONTINUE</codeph>  </p> </entry>
+<entry><p> <codeph>TC</codeph>  </p> </entry>
+<entry><p>It is recommended that the UI displays a dialog containing a <codeph>Continue</codeph> button. </p> <p>The
+installation continues regardless of the return value of the dialog. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TEXTABORT</codeph>  </p> </entry>
+<entry><p> <codeph>TA</codeph>  </p> </entry>
+<entry><p>It is recommended that the UI displays a dialog containing <codeph>Yes</codeph> /<codeph>No</codeph> buttons. </p> <p>The
+software installer continues with the installation if the dialog returns true
+(if the Symbian device user selects <codeph>Yes</codeph>). It aborts the installation
+if the dialog returns false (if the Symbian device user selects <codeph>No</codeph>). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>TEXTEXIT</codeph>  </p> </entry>
+<entry><p> <codeph>TE</codeph>  </p> </entry>
+<entry><p>Same as <codeph>TEXTABORT</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>FORCEABORT</codeph>  </p> </entry>
+<entry><p> <codeph> FA </codeph>  </p> </entry>
+<entry><p>It is recommended that the UI displays a dialog containing a <codeph>ForceAbort</codeph> button. </p> <p>On
+selecting this dialog, it aborts the installation. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>TEXTSKIP</codeph></p></entry>
+<entry><p><codeph>TS</codeph></p></entry>
+<entry><p>It is recommended that the UI displays a dialog containing <codeph>Yes</codeph> /<codeph>No</codeph> buttons. </p><p>The
+software installer continues the installation without skipping
+the file mentioned in the next statement if the dialog returns true (if the
+Symbian device user selects <codeph>Yes</codeph>). It skips the installation
+of the file mentioned in the next statement if the dialog returns false (if
+the Symbian device user selects <codeph>No</codeph>).</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p> <b>Note</b>: UIs can implement installation dialogs differently,
+so you must refer to the UI SDK for details about the actual behaviour. </p> <p id="GUID-B913501B-A5AB-5ADB-96FF-8060DD45A87E"><b>run-options</b> </p> <p> <codeph> run-options</codeph> can
+be used after <codeph>FR</codeph> or <codeph>FM</codeph> has been specified.
+It can be any of the following: </p> <table id="GUID-7B193CA1-4057-5680-93E3-9DC931924D3B">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Abbreviation</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>RUNINSTALL</codeph>  </p> </entry>
+<entry><p> <codeph>RI</codeph>  </p> </entry>
+<entry><p>Run on install </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RUNREMOVE</codeph>  </p> </entry>
+<entry><p> <codeph>RR</codeph>  </p> </entry>
+<entry><p>Run on uninstall and upgrade </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RUNBOTH</codeph>  </p> </entry>
+<entry><p> <codeph>RB</codeph>  </p> </entry>
+<entry><p>Run on install, uninstall and upgrade </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>RUNBEFORESHUTDOWN</codeph>  </p> </entry>
+<entry><p> <codeph>RBS</codeph>  </p> </entry>
+<entry><p>Run on uninstall before the applications in the package are shut
+down </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Optionally, <codeph>RW</codeph> (or <codeph>RUNWAITEND</codeph>)
+can be specified in addition to the <codeph>run-options</codeph>. If this
+option is specified, the installation server waits for the program to terminate
+before continuing with the install. If this option is not specified, the installation
+server runs the program and continues with the installation. The program is
+shut down after the installation is complete. </p><p>When uninstalling a package
+with a <codeph>RUNREMOVE</codeph> or <codeph>RUNBOTH</codeph> executable specified,
+the installation server always waits for the executable to terminate or timeout
+before continuing with the uninstall.</p> <p><b>Verification options</b> </p> <p>The
+following option is available for checking the integrity of a file at restore
+time: </p> <table id="GUID-78249B09-3D1C-5A89-AC4B-BA53DA2ACA4F">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Name</entry>
+<entry>Abbreviation</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>VERIFY</codeph>  </p> </entry>
+<entry><p> <codeph>VR</codeph>  </p> </entry>
+<entry><p>This flag is necessary if the integrity of a file installed in a
+directory outside <filepath>\sys</filepath> or <filepath>\restore</filepath> needs
+to be verified at restore time. For example, an application can check this
+flag to verify that a security policy file restored to its private directory
+is identical to the file delivered by the SIS file. </p> <p>The following
+example illustrates the usage of this option: </p> <codeblock id="GUID-1E310E2B-94BB-5877-91E6-14C5895BCF91" xml:space="preserve">"data\ups_01041000_01041001.rsc"-
+"$:\private\10283558\policies\ups_01041000_01041001.rsc", VERIFY</codeblock> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-90E6B97B-3A6A-5D88-80D1-B66248C82543"><b>Import and Private
+Directories</b> </p> <p>The software installer ensures that files are placed
+in appropriate areas of the file system. The following rules are applied: </p> <ul>
+<li id="GUID-F92635A7-7B97-5CA8-8C2C-E2E52CBB279C"><p>A package can only deliver
+a data file into the private directory belonging to any executable in the
+package. If a package delivers three executables: <codeph>SID1</codeph>, <codeph>SID2</codeph>, <codeph>SID3</codeph> (where
+SID stands for Secure ID), then data files can be delivered to <filepath>/private/SID1/</filepath>, <filepath>/private/SID2/</filepath>,
+or <filepath>/private/SID3/</filepath>. In an upgrade, this is possible by
+associating the upgrade package with the SIDs present in the original package
+unless one of the original executables is to be removed during the upgrade. </p> </li>
+<li id="GUID-AB6861A6-C1DB-5F82-B621-798D8C131417"><p>Any package can deliver
+a file into the <filepath>//private/SID/import</filepath> of an entirely unrelated
+package. However, replacement and eclipsing rules apply. </p> </li>
+</ul> </refsyn>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B4039418-6499-555D-AC24-9B49161299F2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B4039418-6499-555D-AC24-9B49161299F2"><title>Creating a Periodic Timer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can use a periodic timer to provide repeated signals to your process. </p> <p>The following example illustrates a periodic timer with a delay of a second and a repeating interval of ten milliseconds. It also configures a thread function as the timer expiry notification using <codeph>SIGEV_THREAD</codeph>. </p> <p>The following example code performs the following tasks: </p> <ol id="GUID-B648631F-8CC2-5304-B2DC-6A9293385E3E"><li id="GUID-228938F5-3F52-5853-96FC-2556650A617A"><p>Creates a notification function (thread function) that must be invoked after timer expiry. </p> </li> <li id="GUID-7F02B8B1-7AE3-566A-A864-A64B45837C79"><p>Sets the thread priority to <b>255</b> using the thread scheduling parameters (<codeph>struct sched_param</codeph>). This ensures that the thread function has the highest priority when it is invoked as a result of a timer expiry. </p> </li> <li id="GUID-14F0D0AC-65EF-56B6-B82A-EC41C4DDA94F"><p>Creates a timer based on the current system time (<codeph>CLOCK_REALTIME</codeph>) and a notification function (<codeph>struct
+             sigevent sig</codeph>) that must be invoked when the timer expires. </p> </li> <li id="GUID-0A915D17-5113-563B-9CE4-7A7B7B7D7B23"><p>Defines the input values for <xref href="GUID-344F836B-FAC8-344A-B458-0CEFB714ADEB.dita"><apiname>timer_settime()</apiname></xref>. The key input values are the timer value (<codeph>in.it_value.tv_sec = 1;</codeph>) and the interval (<codeph>in.it_interval.tv_nsec = 100000000;</codeph>). The periodic timer will expire after a second and then invoke the notification function every one-tenth of a second until it is destroyed. </p> </li> <li id="GUID-126A5B20-133D-585A-9FF9-9CB5456D2D71"><p>Starts the periodic timer using <xref href="GUID-344F836B-FAC8-344A-B458-0CEFB714ADEB.dita"><apiname>timer_settime()</apiname></xref>. </p> </li> <li id="GUID-FD1EEA8C-3215-5DBE-BB29-47576DED3955"><p>Uses <codeph>sleep(2)</codeph> to pause the program execution for two seconds before destroying the timer. </p> </li> </ol> <codeblock id="GUID-60B88762-E6C3-52F8-8DBC-E77D70B03FAE" xml:space="preserve">#include &lt;time.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;signal.h&gt;
+#include &lt;pthread.h&gt;
+#include &lt;unistd.h&gt;
+#include &lt;errno.h&gt;
+static int i = 0;
+
+//Thread function to be invoked when the periodic timer expires
+void sighler (union sigval val)
+    {
+    printf("Handler entered with value :%d for %d times\n", val.sival_int, ++i);
+    }
+int main()
+    {
+    int Ret;
+
+    pthread_attr_t attr;
+    pthread_attr_init( &amp;attr );
+
+    struct sched_param parm;
+    parm.sched_priority = 255;
+    pthread_attr_setschedparam(&amp;attr, &amp;parm);
+
+    struct sigevent sig;
+    sig.sigev_notify = SIGEV_THREAD;
+    sig.sigev_notify_function = sighler;
+    sig.sigev_value.sival_int =20;
+    sig.sigev_notify_attributes = &amp;attr;
+
+    //create a new timer.
+    timer_t timerid;
+    Ret = timer_create(CLOCK_REALTIME, &amp;sig, &amp;timerid);
+    if (Ret == 0)
+        {
+        struct itimerspec in, out;
+        in.it_value.tv_sec = 1;
+        in.it_value.tv_nsec = 0;
+        in.it_interval.tv_sec = 0;
+        in.it_interval.tv_nsec = 100000000;
+        //issue the periodic timer request here.
+        Ret = timer_settime(timerid, 0, &amp;in, &amp;out);
+        if(Ret == 0)
+            sleep(2);
+        else
+            printf("timer_settime() failed with %d\n", errno);
+        //delete the timer.
+        timer_delete(timerid);
+        }
+    else
+    printf("timer_create() failed with %d\n", errno);
+    return Ret;
+    }</codeblock> <p>The output of the above program is: </p> <codeblock id="GUID-313450D1-6766-58C6-933C-49AD55A5D985" xml:space="preserve">Handler entered with value :20 for 1 times
+Handler entered with value :20 for 2 times
+Handler entered with value :20 for 3 times
+Handler entered with value :20 for 4 times
+Handler entered with value :20 for 5 times
+Handler entered with value :20 for 6 times
+Handler entered with value :20 for 7 times
+Handler entered with value :20 for 8 times</codeblock> <p> <b>Note:</b> Ideally, in the preceding output the handler must have entered <b>10</b> times. This is not the case on Symbian platform as there is some latency due to the timer emulation solution and the underlying Symbian platform clock resolution. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e15352_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B419D99E-8312-5336-9693-3ED8DFCD0559.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B419D99E-8312-5336-9693-3ED8DFCD0559" xml:lang="en"><title>Automatic
+Resource Management Tutorial</title><abstract><p>The class templates for automatic resource management rely on
+guaranteed execution of their destructor to trigger cleanup. Due to potential
+issues with cleanup order when used in conjunction with the Symbian cleanup
+stack, different variants are required for managing local and member variables
+as described below.  </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before beginning you must know the following: </p> <ul>
+<li id="GUID-2B05A77D-54BF-5658-B620-F9F63C121DAA"><p> <b> LcleanedupX Classes:</b> The
+LCleanedupX class provide a means of automatically cleaning up local variables
+on scope exit. </p> </li>
+<li id="GUID-06C21765-F4F9-5884-8C1E-93227E253DDF"><p> <b> LmanagedX Classes:</b> The
+LManagedX classes provide a means of automatically cleaning up member variables
+when the containing object is destroyed </p> </li>
+</ul> </prereq>
+<context><p>The collection of C++ class templates that provide automatic resource
+management provided by EuserHl library is based on the C++ RAII idiom. The
+Symbian C++ class templates for automatic resource management are based on
+the C++ RAII idiom, in order to provide exception-safe automatic cleanup on
+normal or exceptional exit from a scope. </p><p><b>Automatic Resource Management
+Class templates</b></p><p>The Symbian C++ class templates for automatic resource
+management are relatively easier to use. They provide automatic exception-safe
+cleanup upon normal or exceptional exit from a scope. In which case they do
+not require writing any code for invoking the cleanup of resources. The resources
+are automatically cleaned up by the destructors of the template classes in
+that case.  </p><p> The following are the class templates for automatic resource
+management: </p><ul>
+<li><p><b>LcleanedupX Classes </b></p></li>
+<li><p><b>LmanagedX Classes</b> </p></li>
+</ul><note> Due to potential issues with cleanup order when used in conjunction
+with the Symbian cleanup stack, different variants are required for managing
+local and member variables. Click here for more information on
+Automatic Resource Management Class templates. </note></context>
+</taskbody><related-links>
+<link href="GUID-B1D5B680-00E3-5702-985A-94256180E2D8.dita"><linktext>Automatic
+Resource Management</linktext></link>
+<link href="GUID-69D916D3-ED05-58DA-BA42-CE4D7E4F6482.dita"><linktext>Automatic
+ Resource Management Class Templates Tutorial</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B4218FA6-5BE0-4000-BC85-3078892EDADA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B4218FA6-5BE0-4000-BC85-3078892EDADA" xml:lang="en"><title>Environment
+changes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Environment Change Notifier informs an application about changes
+in the system environment. The class that implements the API is <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Utilities/CEnvironmentChangeNotifierClass.html#%3a%3aCEnvironmentChangeNotifier" format="application/java-archive"><parmname>CEnvironmentChangeNotifier</parmname></xref>, which is an
+active object. The following changes are notified:</p>
+<ul>
+<li><p>Change of system locale</p></li>
+<li><p>System time passes midnight</p></li>
+<li><p>System time changes</p></li>
+<li><p>Death of any thread</p></li>
+<li><p>Status of the power supply changes</p></li>
+</ul>
+<p>In order to receive environment change events, a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TCallBackClass.html#%3a%3aTCallBack" format="application/java-archive"><parmname>TCallBack</parmname></xref> object must be created. The constructor of the callback object takes two
+parameters: The first is a pointer to a function to be called when an event
+occurs and the second is a pointer to the object that implements the function.</p>
+<codeblock id="GUID-E2EF1177-95F9-4286-A7A7-84B8A84733B3" xml:space="preserve">TCallBack( TInt ( *aFunction )( TAny* aPtr ) )</codeblock>
+<p>The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Application_Utilities/CEnvironmentChangeNotifierClass.html#%3a%3aCEnvironmentChangeNotifier" format="application/java-archive"><parmname>CEnvironmentChangeNotifier</parmname></xref> object takes
+two parameters. The first one is a priority of the active object and the second
+one is a reference to the callback object.</p>
+<codeblock id="GUID-CA2369AC-310D-4EB5-8D23-5554D53555B0" xml:space="preserve">static CEnvironmentChangeNotifier* NewL(TInt aPriority, const TCallBack&amp; aCallBack)</codeblock>
+<p>The <parmname>Start()</parmname> function is called in order to start
+observation. </p>
+<codeblock id="GUID-D468B6A3-1DD7-4D9B-A9B1-85B140BD8186" xml:space="preserve">void Start()</codeblock>
+<p>When an environment change event occurs, the function whose pointer
+was given to the callback object is called. Details about an event that occurred
+can be queried using the <parmname>Change()</parmname> function. </p>
+<codeblock id="GUID-A21AD287-6EBF-4426-8DE9-6D014DF61A44" xml:space="preserve">TInt Change() const</codeblock>
+<p>The function returns a bit pattern, where each bit value corresponds
+to one of the enumerations defined in <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/e32const.hGlobals.html#%3a%3aTChanges" format="application/java-archive"><parmname>TChanges</parmname></xref> <parmname> (e32const.h)</parmname>.</p>
+<codeblock id="GUID-3096C720-C190-47CC-AD44-E8C6B8833092" xml:space="preserve">enum TChanges
+    {
+    EChangesLocale = 0x01,
+    EChangesMidnightCrossover = 0x02,
+    EChangesThreadDeath = 0x04,
+    EChangesPowerStatus = 0x08,
+    EChangesSystemTime = 0x10,
+    EChangesFreeMemory = 0x20,
+    EChangesOutOfMemory = 0x40,
+    };
+</codeblock>
+<p>Code example:</p>
+<codeblock id="GUID-15A3C2A9-1AAD-4C1A-A4D6-9EE13E659583" xml:space="preserve">void CExampleEnvChangeNotifier::ConstructL()
+    {
+    iCallBack = new( ELeave )TCallBack( CallBackFunction, this );
+    iChangeNotifier =
+    CEnvironmentChangeNotifier::NewL( 0, *iCallBack );
+    iChangeNotifier-&gt;Start();
+    }
+CExampleEnvChangeNotifier::~CMyEnvChangeNotifier()
+    {
+    iChangeNotifier-&gt;Cancel();
+    delete iChangeNotifier;
+    delete iCallBack;
+    }
+TInt CExampleEnvChangeNotifier::CallBackFunction( TAny* aFunction )
+    {
+    return( (CEventsEnvChangeNotifier* )aFunction )-&gt;ChangeL();
+    }
+TInt CExampleEnvChangeNotifier::ChangeL()
+    {
+    TInt change = iChangeNotifier-&gt;Change();
+    if( change &amp; EChangesLocale )
+        {
+        // Locale change, do something
+        }
+    if( change &amp; EChangesMidnightCrossover )
+        {
+        // Midnight crossover, do something
+        }
+    if( change &amp; EChangesThreadDeath )
+        {
+        // Thread death, do something
+        }
+    if( change &amp; EChangesPowerStatus )
+        {
+        // Power status change, do something
+        }
+    if(change &amp; EChangesSystemTime )
+        {
+        // System status change, do something
+        }
+    return 1;
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B432A48B-46CE-4FD4-880E-DA15AA304CAA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B432A48B-46CE-4FD4-880E-DA15AA304CAA" xml:lang="en"><title>Adding,
+removing, and accessing header field parameters</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D96EA794-4D54-4F15-B839-EBA42687751F"> <p>Parameters can be associated with header field parts at the time
+of adding the part. There are two variants of <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-A8708AE6-8EAE-37C9-BAD2-87E4A7DCE266"><apiname>RHTTPHeaders::SetFieldL()</apiname></xref>:
+the first is described previously. The second variant takes four parameters,
+of which two specify the part name/value and two specify the parameter name/value. </p> <p>To
+associate more than one parameter with the part, the function must be invoked
+repeatedly. This does not create duplicate parts; rather it locates the part
+with the specified value, and then adds additional parameters. </p> <p>To
+remove parameters from header parts, the entire part must be removed using <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-656EF7AC-479E-3408-B00C-9FAE3022A37B"><apiname>RHTTPHeaders::RemoveFieldPart()</apiname></xref>,
+and then added again. </p> <p>To access parameter values, the header name
+and parameter name must be specified. <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita#GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9/GUID-AAEA368C-D8E6-365E-8B05-31CC812F0469"><apiname>RHTTPHeaders::GetParam()</apiname></xref> is
+used, and has an optional fourth parameter in which the part index can be
+provided. If not, the API assumes that the first header part contains the
+parameter. </p> <p>The following code from <filepath>HTTPEXAMPLECLIENT</filepath> illustrates
+the use of header parameters with the <codeph>WWW-Authenticate</codeph> header: </p> <codeblock id="GUID-DAD45847-DD81-54D3-AD90-C40A5F7ABC45" xml:space="preserve">// Display realm for WWW-Authenticate header
+            RStringF wwwAuth = strP.StringF(HTTP::EWWWAuthenticate,RHTTPSession::GetTable());
+            if (fieldNameStr == wwwAuth)
+                {
+                // check the auth scheme is 'basic'
+                RStringF basic = strP.StringF(HTTP::EBasic,RHTTPSession::GetTable());
+                RStringF realm = strP.StringF(HTTP::ERealm,RHTTPSession::GetTable());
+                THTTPHdrVal realmVal;
+                if ((fieldVal.StrF() == basic) &amp;&amp; 
+                    (!hdr.GetParam(wwwAuth, realm, realmVal)))
+                    {
+                    RStringF realmValStr = strP.StringF(realmVal.StrF());
+                    fieldVal16.Copy(realmValStr.DesC());
+                    iUtils.Test().Printf(_L("Realm is: %S\n"), &amp;fieldVal16);
+                    realmValStr.Close();
+                    }
+                basic.Close();
+                realm.Close();
+                }
+            wwwAuth.Close();</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B454C08F-0531-5789-ABFA-171D3C2319D9"><title>Automatic Speech Recognition Client Utility Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Automatic Speech Recognition (ASR) Client Utility. </p> <section><title>Purpose</title> <p>The ASR Client Utility provides speech recognition services. </p> <p><b>ASR Client Utility Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-19EA9049-D28E-5097-9190-C02672EC8BEC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>speechrecognitionutility.dll</b>  </p> </entry> <entry><p> <b> speechrecognitionutility.lib</b>  </p> </entry> <entry><p>These files are used for implementing the ASR Client Utility. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The ASR Client Utility provides the interface between clients and the Multimedia Framework. The ASR Client Utility uses ASR Custom Commands and ASR Data Handling to provide clients with speech recognition functionality. </p> </section> <section><title>Description</title> <p>The ASR Client Utility provides speech recognition services for clients requiring speech recognition functionality. </p> </section> <section><title>Key ASR Client Utility Classes</title> <p>The speech recognition functionality provided by the ASR Client Utility is contained within the following key classes: </p> <ul><li id="GUID-BE9AA45C-99F6-5D9D-9A7B-02D47F29D227"><p> <xref href="GUID-EC7AB5C3-CA05-32F9-BF4F-629289123B05.dita"><apiname>CSpeechRecognitionUtility</apiname></xref> - main class of the ASR Client Utility. </p> </li> </ul> </section> <section><title>Using the ASR Client Utility</title> <p>Clients can use the ASR Client Utility to: </p> <ul><li id="GUID-6A83459B-4A8F-57B1-BA9C-9F90445944C0"><p>Create a new lexicon. </p> </li> <li id="GUID-0B43288E-8E21-5235-A321-56BDCA55C0BC"><p>Create a new grammar. </p> </li> <li id="GUID-4627E2A4-E484-5ABD-86B8-C0E15F01E94E"><p>Add a new entry into the lexicon </p> </li> <li id="GUID-3E8EFE1D-1770-518F-860C-A62BE0CB2FFF"><p>Add a new rule into the grammar. </p> </li> <li id="GUID-EEA0F3B2-CB56-543B-8161-D05DEB870C24"><p>Record user utterance. </p> </li> <li id="GUID-E1FB7E3C-39C1-5397-8FF8-BFAAD291FE1A"><p>Playback user utterance. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-F684F363-B361-5868-9195-41305428AB2D.dita">Automatic Speech Recognition Data Handling Overview</xref>  </p> <p><xref href="GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD.dita">Automatic Speech Recognition Custom Commands Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674_d0e256663_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B45B4D81-E2DF-436F-8138-8DAB6BAB27C9_d0e42350_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e21417_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e50755_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e67151_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B4A54501-4AA4-5ACB-96D7-4427C7752639.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B4A54501-4AA4-5ACB-96D7-4427C7752639" xml:lang="en"><title>Using HTTP Client</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B4C8B3D8-0272-577D-A669-C0AE84D035B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B4C8B3D8-0272-577D-A669-C0AE84D035B4" xml:lang="en"><title>Camera Plug-in Support Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72"><title>Comms Buffers (MBuf) ans Comms Chains</title><shortdesc>This topic describes Comms buffers (MBuf) and Comms chains. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-2290A2C1-C15B-5767-8BA5-0109457715AA"><title>APIs</title> <p>The following diagram is a partial representation of the class hierarchy for <codeph>RMBuf</codeph>. </p> <fig id="GUID-129D60A5-5FAB-52B1-BDD8-7B40F0038DD0"><title>
+             Comms buffer 
+          </title> <image href="GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e92428_href.png" placement="inline"/></fig> <p>For more information about these classes, see the following table and the reference documentation: </p> <table id="GUID-BC77F10C-E6C7-5447-A61F-63671B5F0FEC"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Class</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-E0ADB108-D3B2-3670-907D-2AE595BECE3F.dita"><apiname>RMBuf</apiname></xref>  </p> </entry> <entry><p>Representation of a shared buffer designed to carry packets within the Comms Data Plane. </p> <p>It includes Comms metadata (such as the offset, the size and the type of the data within the buffer) and links to the next buffer in the buffer chain. </p> <p>Part of the API is located in the parent class : <xref href="GUID-4FB33BFE-DCF7-3B77-A447-F9C049DF86CB.dita"><apiname>RCommsBuf</apiname></xref>. </p> </entry> </row> <row><entry><p> <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita"><apiname>RMBufChain</apiname></xref>  </p> </entry> <entry><p>Chain of <codeph>RMBuf</codeph> objects. </p> <p>Part of the API is located in the parent class : <xref href="GUID-107ADE6D-7AFF-3B07-9606-BCA33A3B63EF.dita"><apiname>RCommsBufChain</apiname></xref>. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-5EBCD46C-5E07-5DB1-90D9-6A5CA3E36C0B"><title> Buffer layout</title> <p>The following diagram shows the contents of a Comms buffer and the location of the metadata. The metadata is at the end so that the device drivers can ignore the metadata and write their payload at the beginning of the buffer. </p> <fig id="GUID-6598A097-0453-5499-9507-2419DF73C023"><title>
+             Comms buffer contents 
+          </title> <image href="GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e92515_href.png" placement="inline"/></fig> <p>The metadata contains information about the payload: its length and offset, the type of data it contains, and references to the pond and the pool where the buffer's memory is located. Whenever you perform an operation on an MBuf, the chain or the pond update the metadata. </p> <p>The offset at the beginning of the buffer is an important optimisation when sending data downwards through the Comms Data Plane. Leaving enough space for the protocol headers enables Comms Framework components to prepend their data to the payload without requesting a new MBuf and its addition to the front of the buffer chain. Therefore, you should always define a pool according to the biggest packet that the bottom of the stack may receive : for example, 1518 bytes for Ethernet packets. </p> <p>The following diagram is an example illustrating how the Comms Data Plane removes the headers from the payload (on the way up the stack) or prepend header to the payload (on the way down): </p> <fig id="GUID-17B63072-ED95-5626-88D0-80AF8790B5CE"><title>
+             Header manipulation example 
+          </title> <image href="GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e92530_href.png" placement="inline"/></fig> <p>For simplified code corresponding to this diagram, see <xref href="GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita">Data Access Example</xref>. </p> </section> </conbody><related-links><link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> <link href="GUID-65C49B47-6C63-536E-9B31-1FFA518A63F1.dita"><linktext>Shared Buffers</linktext> </link> <link href="GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita"><linktext>Advanced Pond
+                Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B507490F-6BD3-5DF5-97E4-EFDFEA2B4EDD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B507490F-6BD3-5DF5-97E4-EFDFEA2B4EDD" xml:lang="en"><title>Using Asynchronous Programming</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB" xml:lang="en"><title><ph>Symbian
+Developer Library for Application Developers</ph></title><shortdesc>Welcome to the Developer Library for Symbian^3. <ph>This library is
+intended for C++ developers creating applications for Symbian^3.</ph></shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<table id="GUID-709B1F4B-5504-41EA-B659-8F2B6810A700">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Getting Started</entry>
+<entry>Application and Middleware Layers</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>These sections provide some starting points for using the library
+and the platform.</p><p><xref href="GUID-00113601-193D-5214-9DFB-1C67456B7039.dita">About
+the Symbian Developer Library</xref></p> <p><xref href="GUID-35D7EEFC-B2E4-5444-8875-2A24790E08C2.dita">Essential
+idioms</xref></p> <p><xref href="GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita">Example
+programs</xref></p><p/><p>These pages on the Symbian Foundation wiki provide
+useful information for developers new to the Symbian platform. </p><p><xref href="http://developer.symbian.org/wiki/index.php/Symbian_C++_Quick_Start" scope="external">Symbian C++ Quick Start</xref></p><p><xref href="http://developer.symbian.org/wiki/index.php/Going_Beyond_Hello:_A_Tutorial_for_Symbian_C++_Applications" scope="external">Going Beyond Hello: A Tutorial for Symbian C++ Applications</xref></p></entry>
+<entry><p>The Application Layer provides application user interfaces and application
+engines.</p><p><xref href="GUID-1A43A45B-80AE-56A0-A94C-64BA75519C67.dita">Messaging
+Applications</xref></p><p><xref href="GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita">PIM</xref></p><p/><p>The
+Middleware Layer provides application services, including UI frameworks and
+high level communications.</p><p><xref href="GUID-772F9CC3-71B3-53F0-9307-91D35B133810.dita">Application
+Installation</xref></p><p><xref href="GUID-377F7C19-C799-45CE-9ADA-4BB884B422BA.dita">Browsing and downloading</xref></p><p><xref href="GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita">Classic
+UI</xref></p><p><xref href="GUID-58035B49-2EAE-5144-B226-28AF2EDD62E7.dita">Generic
+Application Support</xref></p><p><xref href="GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita">Messaging
+Middleware</xref></p><p><xref href="GUID-6425B722-4095-56E3-9198-70BA3E06C617.dita">Multimedia
+Protocols</xref></p></entry>
+</row>
+</tbody>
+</tgroup>
+<tgroup cols="2"><colspec colname="col1" colwidth="0.58*"/><colspec colname="col2" colwidth="1.42*"/>
+<thead>
+<row>
+<entry>Key APIs</entry>
+<entry>OS Layer</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>These are quick links to some APIs that most Symbian C++ programs
+use.</p><p><xref href="GUID-F6F9B2AC-A47E-5B0B-A1E2-EE2B31B59F2A.dita">Arrays and
+lists</xref></p> <p><xref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita">Basic
+types</xref></p> <p><xref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita">Cleanup
+support</xref></p> <p><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/server</xref></p> <p><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors</xref></p></entry>
+<entry><p>The OS Layer provides the Symbian Kernel, and frameworks to support
+fundamental services.</p><p/><p><xref href="GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita">Cellular
+Baseband Services</xref></p> <p/><p><xref href="GUID-8F2D6AC8-8357-55C7-970B-CD2684BA9B04.dita">Communications
+Framework </xref></p><p><xref href="GUID-F8C8CE42-E7C9-5AFC-86BC-B78F677F1B05.dita">Device
+Services</xref> </p><p/><p><xref href="GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita">Generic
+OS Services</xref></p> <p><xref href="GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita">Graphics</xref></p><p/><p><xref href="GUID-E3D2A6ED-8192-563D-8966-DD96B3AF1783.dita">Kernel and Hardware Services</xref></p> <p/> <p><xref href="GUID-7F476137-5E7F-5288-9F4A-6C20F0A1AD9B.dita">Locating Services</xref></p><p><xref href="GUID-E2252589-DCFB-5272-8FB3-701712D7F417.dita">Multimedia</xref></p><p><xref href="GUID-BC191AA8-696F-51A2-801F-B3F952037F54.dita">OS Security</xref> </p><p/><p><xref href="GUID-B144EAB9-53AB-579B-9E12-B16518E4FC01.dita">Networking Services</xref></p><p><xref href="GUID-FBCBF8A0-7922-5881-A1C5-5DB41630E75A.dita">Persistent Data Services</xref></p><p/> <p><xref href="GUID-DD13AA8E-BDAD-57EC-81EC-49C8D6D30A86.dita">Shortlink
+Services</xref></p><p><xref href="GUID-1DCA2F4D-ABE6-52A0-AC4E-5AAC1AB5909D.dita">Text
+and Localization</xref></p><p/></entry>
+</row>
+</tbody>
+</tgroup>
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Expert Programming</entry>
+<entry>All Documents</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>These documents help you write better and safer programs.</p> <p><xref href="GUID-AB3D07E6-83C9-4948-A13F-75A65498F444.dita">Security</xref></p></entry>
+<entry><p>These links take you to full lists of packages and tools described
+in the library.</p><p><xref href="GUID-32E29020-1956-461A-B79A-1492E06049E7.dita">Symbian
+guide</xref></p><p><xref href="GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita">Tools
+and utilities</xref></p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27" xml:lang="en"><title>Compilation
+and Build Process on Symbian Platform</title><shortdesc>This article discusses a few basic things about the compilation
+and build process in Symbian platform.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>bldmake</codeph> tool processes the component description file <filepath>bld.inf</filepath> in
+the current directory and generates the batch file <filepath>abld.bat</filepath> and
+several build batch <codeph>makefiles</codeph> (<filepath>.make</filepath>)
+. The <codeph>makefiles</codeph> are used by <codeph>abld</codeph> to carry
+out the various stages of building the component. </p>
+<p>The basic usage of <codeph>abld</codeph> command is:</p>
+<codeblock xml:space="preserve">abld command[options][platform][build][program]</codeblock>
+<p>This enables the programmer to build for different platforms with varied
+specifications. The parameter command specifies which action to perform to
+the <codeph>abld</codeph> tool. The actions can be build, clean, <codeph>cleanexport</codeph> and
+so on. The parameter options includes <codeph>–c</codeph>, <codeph>-w</codeph> and
+so on, these enable the user to check for the presence of releasables. The
+parameter platform specifies the platform for which the project will be built.
+The platform can be <codeph>WINSCW</codeph>, <codeph>GCCE</codeph>, <codeph>GCCXML</codeph>, <codeph>EDG</codeph>, <codeph>ARMV5</codeph>, <codeph>VS6</codeph>, <codeph>CW_IDE</codeph> or <codeph>VS2003</codeph>. The parameter
+build specifies whether to build for debug (<codeph>udeb</codeph>) or release
+(<codeph>urel</codeph>) version. Finally the parameter program specifies which
+project definition file or mmp file to build. If left unspecified, all the
+MMP files mentioned in the <filepath>bld.inf</filepath> file are built. For
+more information, see <xref href="GUID-49397CFD-955A-5DF6-9251-368C44224966.dita">Build
+tools reference</xref>.</p>
+<p>The example below demonstrates the use of <codeph>bldmake</codeph>:</p>
+<codeblock xml:space="preserve">bldmake bldfiles</codeblock>
+<p>The <cmdname>abld build</cmdname> command compiles and links the target.</p>
+<codeblock xml:space="preserve">abld build</codeblock>
+<p>The <cmdname>abld freeze</cmdname> command freezes the project export.
+This is needed only for DLLs. </p>
+<codeblock xml:space="preserve">abld freeze</codeblock>
+<section id="GUID-CF5D3059-BDC4-407D-83D5-7C8DE9F5C3E7">       <title>Creating
+PKG file and Installation file for the target</title><p>A package (PKG) file
+is a text file containing items or statements that define the information
+required by the installation (SIS) file creation utility <codeph>makesis</codeph>.
+The PKG file format can be broken down into the following items:</p><ul>
+<li><p>Languages</p></li>
+<li><p>Language code table</p></li>
+<li><p>Package-header</p></li>
+<li><p>Vendor</p></li>
+<li><p>Logo</p></li>
+<li><p>Package-signature</p></li>
+<li><p>Package-body</p></li>
+<li><p>Dependency</p></li>
+<li><p>Properties </p></li>
+</ul><p>For more information on PKG files, see <xref href="GUID-43B4B4E7-413E-5D18-811C-4B9E38CDEB69.dita">PKG
+File Format</xref>.</p><p>The <cmdname>makesis</cmdname> utility creates software
+installation packages (SIS files) based on the information and the file locations
+on the source PC or target phone, defined in a package (PKG) file.</p><p>For
+example, consider the code snippet given below:</p><codeblock xml:space="preserve">makesis somefile.pkg</codeblock><p>The
+code goes through the PKG file and by default creates somefile.sis in the
+directory where the PKG file is present. </p><p>For more information on the <cmdname>makesis</cmdname> utility,
+see <xref href="GUID-4BDC9F63-83A1-53A5-91A0-B092AA821755.dita">MakeSIS</xref>.</p><p>After
+creating the SIS file it, has to be signed using <cmdname>signsis</cmdname> to
+install it on the phone. <cmdname>signsis</cmdname> is a Symbian supplied
+tool to digitally sign software installation (SIS) files using a specified
+certificate and private key. For example consider the code snippet given below:</p><codeblock xml:space="preserve">signsis somefile.sis somefile.sisx rd.cer rd-key.pem</codeblock><p>The parameter<filepath> somefile.sis</filepath> gives, the path to the
+SIS file which is to be signed. The second parameter, <filepath>somefile.sisx</filepath> specifies
+the name of the resultant signed SIS file. The third parameter, <filepath>rd.cer</filepath> specifies
+the path to the certificate file and the last parameter, <filepath>rd-key.pem</filepath> specifies
+the path to the file containing the private key. </p><p>For more information
+on <cmdname>signsis</cmdname>, see <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4" xml:lang="en"><title>Writing
+a Standard Registration Resource File</title><shortdesc>For Symbian OS V9.1 and onwards, the name of the standard registration
+resource file must be the same as that of the executable with <filepath>.rss</filepath> extension.
+All the registration resource structure types are defined in <codeph>RegistryInfo.rh</codeph>.
+This file has to be included in the registration resource file.  </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-10-1-1-8-1-4-1-5-1-4-1-5-1-4-1-3-1">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-8-1-4-1-5-1-4-1-5-1-4-1-3-1-1"><cmd>Define a single <codeph>REGISTRY_INFO</codeph> resource.
+ </cmd>
+</step>
+<step id="GUID-0711500A-DB15-4AF2-86E7-07751B7D0CE6"><cmd>Set the dll_uid
+to the DLL's UID.  </cmd>
+</step>
+<step id="GUID-73CC8347-CE83-43E4-81D2-FFB10C058E5B"><cmd>Set interfaces member
+to be an array of <codeph>INTERFACE_INFO</codeph> resources.  </cmd>
+<info><p>Each <codeph>INTERFACE_INFO</codeph> resource defines registration
+information for implementations of the interface identified by interface_uid
+member. The information takes the form of an array of <codeph>IMPLEMENTATION_INFO</codeph> resources.
+ </p></info>
+</step>
+<step id="GUID-BB178AA4-0BE4-4DC2-9A4E-28D8AFEBA2A2"><cmd>Each <codeph>IMPLEMENTATION_INFO</codeph> resource
+declares the properties of a single implementation. It has five members:  </cmd>
+<substeps id="GUID-D09853C8-5054-4D4D-AE76-E5787263F02B">
+<substep id="GUID-5F45453F-4D21-4983-ABA8-DB2F025A9326"><cmd><codeph>implementation_uid</codeph>:
+An unique identifier for the implementation.  </cmd>
+<info><p>For this value, use a new UID allocated by Symbian Signed. The allocated
+value can be from the protected or non-protected range of UIDs.  </p></info>
+</substep>
+<substep id="GUID-2AC39D58-D817-43D4-8130-F012C7CBA9A9"><cmd><codeph>version_no</codeph>:
+The version of the interface implementation.  </cmd>
+</substep>
+<substep id="GUID-4F545F1B-AD20-4EFC-B09A-6F7E19E27B75"><cmd><codeph>display_name</codeph>:
+The external name of the implementation. </cmd>
+</substep>
+<substep id="GUID-078E43CD-C238-4361-86D7-5372CA9ACD23"><cmd><codeph>default_data</codeph>:
+The data identifier field used by the resolver to determine if the implementation
+matches a client request. </cmd>
+</substep>
+<substep id="GUID-CE0BE654-08E5-4693-AF25-9098080640B9"><cmd><codeph>opaque_data</codeph>:
+A binary data field that can contain additional data. This additional data
+can be used by the custom resolvers. </cmd>
+</substep>
+</substeps>
+</step>
+</steps>
+<example><p>The following example depicts a resource registration file for
+an implementation collection with two implementations.</p><codeblock xml:space="preserve">// 10009DB1.RSS
+//
+#include "RegistryInfo.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+{
+dll_uid = 0x10009DB1;
+interfaces = 
+	{
+	INTERFACE_INFO
+		{
+		interface_uid = 0x10009DC0;
+		implementations = 
+			{
+			IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10009DC3;
+				version_no = 1;
+				display_name = "Implementation name 1";
+				default_data = "text/wml";
+				opaque_data = "some extra data";
+				},
+			IMPLEMENTATION_INFO
+				{
+				implementation_uid = 0x10009DC4;
+				version_no = 1;
+				display_name = "Implementation name 1";
+				default_data = "text/xml||Type of data handled";
+				opaque_data = "";
+				}
+			};
+		}
+	};
+}</codeblock></example>
+</taskbody><related-links>
+<link href="GUID-64D62DD8-3D9C-4659-9658-C0B4D74D6E69.dita"><linktext>Writing
+the Version 2 Registration Resource File</linktext></link>
+<link href="GUID-39186342-960A-46A4-BC35-851F53665FA8.dita"><linktext>Writing the
+Version 3 Registration Resource File</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B54E84A4-2F81-57C2-BEDC-48C6B3F6A023.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B54E84A4-2F81-57C2-BEDC-48C6B3F6A023" xml:lang="en"><title>Video Player Utility 2 Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to use the Video Player Utility 2. </p> </conbody><related-links><link href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita"><linktext>Video Client Library
+  Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B5509C73-9A72-5E4D-B9BB-733B10EF842E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B5509C73-9A72-5E4D-B9BB-733B10EF842E" xml:lang="en"><title>Exif Utility Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B5576E47-CBB6-5E50-91BD-1CA1425EACE8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B5576E47-CBB6-5E50-91BD-1CA1425EACE8"><title>Microsoft Visual Studio support</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Microsoft Visual Studio IDE can be used to compile and debug applications built for Symbian OS v9.2 and above. The two versions of Visual Studio supported are: </p> <ul><li id="GUID-4D09A2B0-BB9A-55A1-B52E-31E0B109AF92"><p>Visual Studio 6 </p> </li> <li id="GUID-50BB739A-A7BE-56E5-BDC4-2B567BE1C560"><p>Visual Studio .NET 2003 </p> </li> </ul> <p>In summary, the steps for using Visual Studio are: </p> <ul><li id="GUID-DF940813-C534-5AE6-9694-C1269FD00D3D"><p>Make sure that your program has a <xref href="GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita">bld.inf file</xref> and a <xref href="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita">mmp</xref> project file. </p> </li> <li id="GUID-8EF5BC4A-5B7D-59AE-9C90-36474A64C6EB"><p>Use the Symbian platform <xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">abld</xref> command to create a Visual Studio project file from the <filepath>mmp</filepath> file. </p> </li> <li id="GUID-18A4779C-B284-5E8F-9648-797200F9B9F2"><p>Open the created Visual Studio project file in the IDE, and build, run, and debug the program from there. </p> </li> </ul> <p>The underlying compiler used for the Visual Studio support is the Nokia x86 standalone compiler, version 3.2.3. This compiler is provided on Symbian platform kits in the <filepath>epoc32</filepath> tree under <filepath>epoc32/tools/nokia_compiler/</filepath>. Note that the C++ compiler supplied with Microsoft Visual Studio itself is <i>not</i> used. </p> <p>The Visual Studio support uses the operating system binaries that are created for the <filepath>winscw</filepath> platform. Support is provided by the introduction of two build targets, called <codeph>vs6</codeph> and <codeph>vs2003</codeph>. </p> <section id="GUID-0446B041-DA7A-5B3E-9BBE-DE15B64CFC14"><title>Microsoft Visual C++ 6</title> <p>To use Visual C++ 6: </p> <ol id="GUID-A37F5384-7F3C-5F37-9B35-C24680DB5F8C"><li id="GUID-7BBFD685-6959-5B46-9776-0786B7E696A4"><p>Start a command line prompt </p> </li> <li id="GUID-069A3C30-8C4F-5271-9310-2205B3A204F2"><p>Run the Visual Studio environment configuration batch file, <filepath>vsvars32.bat</filepath>, which is part of your Visual Studio installation. This ensures that the necessary Visual Studio environment variables are set up. </p> </li> <li id="GUID-F535FA4C-9297-56F7-AF64-E12561DC11AC"><p>Change directory to the directory that contains your program's <filepath>bld.inf</filepath> file, and use the following commands: </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld makefile vs6 [project-name]</userinput> </p> <p>The <codeph>vs6</codeph> argument here specifies to the tools that Visual C++ 6 project files should be produced. The project name is optional. If it is not mentioned, Visual Studio project files are created for all projects specified in the <filepath>bld.inf</filepath> file. </p> </li> </ol> <p>These commands creates a Visual C++ workspace (<filepath>.dsw</filepath>) file generated under the kit's <filepath>epoc32\build\&lt;SOURCE_PATH&gt;\&lt;PROJECT_NAME&gt;\WINSCW</filepath> directory. For example, if the kit is installed in <codeph>\Symbian\9.2\</codeph>, and the project is <filepath>helloworld</filepath>, then the <filepath>.dsw</filepath> file is created in the directory <filepath>\Symbian\9.2\epoc32\build\src\helloworld\helloworld\winscw</filepath>. </p> <p>The workspace can then be opened in the IDE, and the project built and debugged from there. </p> <p>To both build the project and create the workspace, use the commands: </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld build vs6 [udeb | urel] [project-name]</userinput> </p> <p>The <codeph>vs6</codeph> platform can optionally be added to the <xref href="GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita">prj_platforms</xref> section in the <codeph>bld.inf</codeph> file. If this is done, <filepath>abld</filepath> commands will use the <codeph>vs6</codeph> target without it being explicity specified. </p> </section> <section id="GUID-6BAD5FE2-04E6-5477-8D3A-66ED2FCCB4CE"><title>Microsoft Visual Studio .NET2003</title> <p>To use Visual Studio .NET2003: </p> <ol id="GUID-C797613A-E6CD-5FDF-923C-68692EE40B79"><li id="GUID-09F71472-F96E-5B63-ACB0-87CDD318843E"><p>Start a command line prompt </p> </li> <li id="GUID-E34B1487-FECD-5793-ADF3-9F9ECC556FC1"><p>Run the Visual Studio environment configuration batch file, <filepath>vsvars32.bat</filepath>, which is part of your Visual Studio installation. This ensures that the necessary Visual Studio environment variables are set up. </p> </li> <li id="GUID-4F706853-59EC-5FC3-935F-22B513235758"><p>Change directory to the directory that contains your program's <filepath>bld.inf</filepath> file, and use the following commands: </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld makefile vs2003 [project-name]</userinput> </p> <p>The <codeph>vs2003</codeph> argument here specifies to the tools that Visual Studio .NET2003 files should be produced. The project name is optional. If it is not mentioned, Visual Studio files are created for all projects specified in the <filepath>bld.inf</filepath> file. </p> </li> </ol> <p>These commands create a Visual Studio solution file (<filepath>.sln</filepath>) file generated under the kit's <filepath>epoc32\build\&lt;SOURCE_PATH&gt;\&lt;PROJECT_NAME&gt;\WINSCW</filepath> directory. For example, if the kit is installed in <codeph>\Symbian\9.2\</codeph>, and the project is <filepath>helloworld</filepath>, then the <filepath>.sln</filepath> file is created in the directory <filepath>\Symbian\9.2\epoc32\build\src\helloworld\helloworld\winscw</filepath>. </p> <p>The solution file can then be opened in the IDE, and the project built and debugged from there. </p> <p>To both build the project and create the workspace, use the commands: </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld build vs2003 [udeb | urel] [project-name]</userinput> </p> <p>The <codeph>vs2003</codeph> platform can optionally be added to the <xref href="GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita">prj_platforms</xref> section in the <codeph>bld.inf</codeph> file. If this is done, <filepath>abld</filepath> commands will use the <codeph>vs2003</codeph> target without it being explictly specified. </p> </section> <section><title>Limitations</title> <ol id="GUID-B9E5639E-442E-568A-8AB6-E53C70FE2CBC"><li id="GUID-6896FE67-3A30-5F28-B6B1-CDDF738213A9"><p>If you add a source file into the project directly from Visual Studio, the source file is <i>not</i> included in the build process. You must add the source file to the <filepath>mmp</filepath> project file, and then repeat the <filepath>abld makefile</filepath> step to recreate the workspace. </p> </li> <li id="GUID-16C95FA9-66DE-5845-B2DC-B0F556A5E655"><p>There is no Edit-And-Continue support on the makefile project when debugging. This means that if you edit a file while debugging, you will have to exit the debugging session, rebuild the project, and then restart debugging session. </p> </li> <li id="GUID-AF48237B-41E5-595A-BEFC-C2CA9E8503AC"><p>If the project produces an EXE, and that EXE already exists, then when the debugger is started, Visual Studio doesn't call Make to check if all targets are up-to-date, but directly starts the program. So, to ensure that all targets are up-to-date during a debug session, a build should be done first before using the debugger. </p> </li> <li id="GUID-9C6CE751-C237-5869-A0C4-E8BA02C9DC02"><p>In .NET2003, a problem sometimes seen is that the Build
+                Solution command doesn't build the projects included in that solution, while the Build &lt;project name&gt; command builds correctly. This occurs when the Visual Studio program <filepath>uuidgen.exe</filepath> is not available in the path. Executing <filepath>vsvars32.bat</filepath> usually sets up the appropriate path. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863"><title>Using CDirScan</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Setting up the scan using SetScanDataL()</title> <fig id="GUID-CC897DCB-73B0-53A4-B1AA-351DF18F0AE0"><image href="GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e235933_href.png" placement="inline"/></fig> <p>Taking the above directory structure, if <codeph>SetScanData()</codeph> is called as follows:</p> <codeblock id="GUID-B6CEF818-9044-58B9-BEBF-EB05BE6F89A9" xml:space="preserve">_LIT(KDirText,"C:\\TopDir\\");
+...
+SetScanDataL(KDirText,KEntryAttDir,ESortByName|EAscending,CDirScan::EScanDownTree);
+...</codeblock> <p>then the directories are scanned, by repeatedly calling <codeph>CDirScan::NextL()</codeph> in the following order: <filepath>TopDir</filepath>, <filepath>Dir1</filepath>, <filepath>Dir2</filepath>, <filepath>Dir3</filepath>, <filepath>Dir4</filepath>, <filepath>Dir5</filepath>, <filepath>Dir6</filepath>, <filepath>Dir7</filepath>. The sort key of <codeph>EAscending</codeph> means that multiple directories within the same parent directory are scanned in ascending alphabetic or numeric order.</p> <p>If the scan direction is upwards, i.e.<codeph>CDirScan::EScanUpTree</codeph>, the directories are scanned in the order: <filepath>Dir2</filepath>, <filepath>Dir4</filepath>, <filepath>Dir3</filepath>, <filepath>Dir1</filepath>, <filepath>Dir6</filepath>, <filepath>Dir7</filepath>, <filepath>Dir5</filepath>, <filepath>TopDir</filepath>.</p> </section> <section><title>Parsing paths using FullPath()</title> <p>If the full path of the entry currently being scanned is:</p> <p><filepath>C:\Topdir\Middledir\Bottomdir\</filepath> </p> <p>and the top level directory in the scan as passed to <codeph>SetScanDataL()</codeph> is:</p> <p><filepath>C:\Topdir\</filepath> </p> <p>then:</p> <ul><li id="GUID-016B0C1F-D5BD-53D7-82F0-9393B3B45FD7"><p><codeph>AbbreviatedPath()</codeph> returns <filepath>\Middledir\</filepath> </p> </li> <li id="GUID-80ECD7D1-9532-5ED3-8CBD-2A9E6F04C067"><p><codeph>FullPath()</codeph> returns <filepath>C:\Topdir\Middledir\</filepath>.</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B5696711-C79B-5239-B587-33507BF2B3BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B5696711-C79B-5239-B587-33507BF2B3BE"><title>Supported Zsh Features</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Zsh has an extensible set of features which are also supported, maintained and used in other operating systems such as Windows®, UNIX® and OSX®. </p> <p>Zsh supports the following features: </p> <ul><li id="GUID-C1CD13F6-9DB0-55CB-A8FF-89159937E133"><p> <b> Configurability </b>: </p> <ul><li id="GUID-12BC7982-B027-5712-83DD-8EB1556B025B"><p>Shell variables: These are variables that are set, stored in the shell and available to shell applications. The <xref href="GUID-CE18D940-FEB9-5678-A3CC-AA8A979AD4DA.dita">set</xref> is a command that creates new shell variables and sets new values for existing shell variables. </p> </li> <li id="GUID-5B71FD16-BF52-5834-8EA8-AA958C0225C6"><p> <codeph>alias</codeph> and <codeph>unalias</codeph>: For more information on these commands refer to the <xref href="GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita">Zsh Command Syntax</xref> section. </p> </li> <li id="GUID-C03EA78B-6A64-51F1-B598-AEACA2B22A74"><p>Shell functions: These are read in and stored internally. They are executed like a regular command. The following is the syntax for a shell function: </p> <codeblock id="GUID-EC491BC1-732D-5D20-9560-E6694F12E8A1" xml:space="preserve">shell_function1()
+{
+//definition of the function will go here....
+}</codeblock> <p>The syntax for invoking the above function is </p> <codeblock id="GUID-9BE52422-0E5C-5331-A79A-696D6EB2D82E" xml:space="preserve">shell_function1</codeblock> </li> <li id="GUID-D92009C5-4E08-53AD-BFE0-09FE418D20CB"><p>Input files: Zsh supports the execution of commands through script files and these script files can be passed as input to the shell. </p> </li> </ul> </li> <li id="GUID-0FE26D0C-7EB8-5F24-AF53-8B5636539A54"><p> <b> Execution of commands </b>: Zsh supports the execution of both built-in commands and external programs. For further details see the <xref href="GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita">Zsh Command Syntax</xref> and <xref href="GUID-00FFF2B3-F8E4-5CBF-B031-240D98BB2111.dita">External Programs</xref> sections. </p> </li> <li id="GUID-74F035F8-B321-5028-82BA-FB4A6517EA5C"><p> <b> Redirection </b>: Redirection is a function that allows the standard streams to be re-directed to a specified location. For example, </p> <codeblock id="GUID-C8007670-E926-5DE8-9375-2204F918EF0F" xml:space="preserve">pwd &gt; file1</codeblock> <p>which executes <codeph>pwd</codeph>, placing the output in <codeph>file1</codeph>. </p> </li> <li id="GUID-891A474A-6B64-5368-9DE8-DBDD61F3779E"><p> <b>Piping</b>: The output of one command can be the input to another command without an intermediate file. For example, </p> <codeblock id="GUID-44A31B61-CAF9-572C-BC76-9255C47991DE" xml:space="preserve">cmd1 | cmd2</codeblock> <p>which executes <codeph>cmd1</codeph> and the output of <codeph>cmd1</codeph> will be the input for <codeph>cmd2</codeph>. The character <codeph>|</codeph> is known as a pipe. </p> </li> </ul> <section><title>See also</title> <p> <xref href="GUID-DE099071-8401-5DD0-B72A-672B307463A2.dita">Porting with Zsh</xref>  </p> <p> <xref href="GUID-3F577531-9798-537F-8F8B-7CAB0257560C.dita">Zsh Command Syntax</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B57857D6-F00B-458A-8194-42CACA0BF131.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B57857D6-F00B-458A-8194-42CACA0BF131" xml:lang="en"><title>Starting
+the device vibra</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>StartVibraL()</codeph> call starts the device
+vibration feature. If <codeph>StartVibraL()</codeph> is called again before
+the first vibration completes, the first vibration is interrupted and the
+second vibrations starts immediately, that is, the periods of vibration are
+not cumulative. The vibration can be interrupted with the method <codeph>StopVibraL()</codeph> before
+the specified interval has elapsed. Vibra settings of the vibration feature
+in the user profile must be active.</p> <note> The device may have implementation
+defined or hardware imposed limits to the duration of the vibration feature.
+In such circumstances, any vibration is cut off at that limit even if the
+duration parameter is greater than the limit.</note><p>The following code
+snippet demonstrates how to start the device vibration feature with factory-defined
+intensity:</p><codeblock xml:space="preserve">iVibra-&gt;StartVibraL( 5000 ); // Start vibra for five seconds.</codeblock><p>The
+following code snippet demonstrates how to start the device vibration feature
+with client-defined intensity:</p><codeblock xml:space="preserve">iVibra-&gt;StartVibraL( 5000, 50 ); // Start vibra for five seconds with intensity 50.</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B57D7C53-DFDB-4590-8227-EA251D1ABBC7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B57D7C53-DFDB-4590-8227-EA251D1ABBC7" xml:lang="en"><title>Using
+autofocus</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Autofocus support for camera applications is controlled through the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aCCameraAdvancedSettings" format="application/java-archive">CCameraAdvancedSettings class</xref>. For more information on using autofocus,
+see <xref href="http://wiki.forum.nokia.com/index.php/TSS001129_-_Using_the_camera_autofocus_feature_in_S60_devices" scope="external">Using the camera autofocus feature in S60 devices</xref> on
+Forum Nokia.</p>
+<fig id="GUID-BD935125-B7F9-4223-BC94-0B4A663DE13C">
+<title>Implementation of autofocus</title>
+<image href="GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e266789_href.png" placement="inline"/>
+</fig>
+<p>Pressing the camera shutter key on the device halfway down generates additional
+key events. The key events can be used to activate autofocus if the camera
+hardware supports the functionality. Shutter release (image capture) can be
+triggered by pressing the key all the way down. The key presses generate separate
+key events. To capture other than autofocus key events from the shutter key,
+you need the <codeph>SwEvent</codeph> <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref>.</p>
+<p>The settings you can use in your application depend on the camera hardware
+on the device. The Camera API allows you to query almost all features of the
+device camera. For example, to get a list of supported advanced settings,
+use the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Camera_Framework/CCameraClass.html#%3a%3aCCamera%3a%3aCCameraAdvancedSettings%3a%3aGetSupportedSettingsL%28RArray%26lt%3b%20TUid%20%26gt%3b%20%26amp%3b%29const" format="application/java-archive"><codeph>CCameraAdvancedSettings::GetSupportedSettingsL()</codeph></xref> method.</p>
+<p>For more information on how to easily use the device camera with zoom and
+autofocus by using a CameraWrapper made by Forum Nokia, see <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/9a3e1226-79db-4c8e-bd70-7d9d22aaa6eb/S60_Platform_Camera_Example.html" scope="external">Camera Example</xref> on Forum Nokia. The Camera Wrapper
+provides a unified interface for various Symbian camera APIs.
+The example application supports the use of both the keypad and touch UI.
+The application can be self-signed, but it also provides an option to use
+the dedicated camera key (Symbian signing required).</p>
+<section id="GUID-0EABEC5B-D4B0-47F1-AEC1-11A929465BC5"><title>See also</title><p><xref href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita">Advanced Settings for Focus,
+Drive Modes, and Bracket Modes</xref></p><p><xref href="GUID-0FD204B8-4207-577B-AF3A-6E210D63F78E.dita">Advanced
+Camera Settings Tutorial</xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B57ECD51-85EF-50EA-B3EE-62A85CD9C382.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B57ECD51-85EF-50EA-B3EE-62A85CD9C382" xml:lang="en"><title>How
+to use a notifier to display a simple dialog, asynchronously</title><shortdesc>Provides code snippets to show you how to use a notifier to display
+a simple dialog asynchronously.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To display a simple dialog box:</p>
+<ul>
+<li id="GUID-9BB8982B-727E-57FB-951F-EEA8CA49D203"><p>construct an <codeph>RNotifier</codeph> object
+and then call its <codeph>Connect()</codeph> member function to create a session
+with the Notifier server.</p> </li>
+<li id="GUID-F6523ED3-4816-538B-86BB-576A05E47197"><p>call the <codeph>Notify()</codeph> member
+function of the <codeph>RNotifier</codeph>, passing descriptors containing
+the two lines of text to be displayed and the characters for the buttons. <codeph>Notify()</codeph> makes
+an asynchronous request to the notifier server.</p> </li>
+</ul>
+<p>When the user keys in one of the button characters, the requesting thread's <keyword>request
+semaphore</keyword> is signalled to indicate that the notifier request is
+complete. The <codeph>TRequestStatus</codeph> object supplied by the requesting
+thread is set to <codeph>KErrNone</codeph>.</p>
+<p>In addition, a <codeph>TInt</codeph>, passed by reference to <codeph>Notify()</codeph>,
+is set to 0 or 1 depending on whether the first or the second button is selected.</p>
+<p>The session is closed by calling the <codeph>Close()</codeph> member function
+of the <codeph>RNotifier</codeph>.</p>
+<p>The following code fragments demonstrate this:</p>
+<codeblock id="GUID-8FDAA342-A5C9-5D27-B3DE-8F62124BADA4" xml:space="preserve">{
+_LIT(KTxtLine1,"First line");
+_LIT(KTxtLine2,"Second line");
+_LIT(KButt1,"a");
+_LIT(KButt2,"b");
+...
+TInt           whichbutton(-1);
+TRequestStatus stat;
+...
+RNotifier      notifier;
+...
+notifier.Connect();
+...
+notifier.Notify(KTxtLine1,KTxtLine2,KButt1,KButt2,whichbutton,stat);
+...
+// other code
+...
+User::WaitForRequest(stat);
+...
+if (whichbutton==0)
+    {
+    // first button selected
+    }
+if (whichbutton==1)
+    {
+    // Second button selected
+    }
+...
+notifier.Close();
+...
+}</codeblock>
+<p>Note that the descriptor parameters passed to <codeph>Notify()</codeph> must
+remain in existence until the notify request completes; this may be some time
+after the call to <codeph>Notify()</codeph> itself.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B58D282E-E6EC-4AE1-96DB-30A5FB850563" xml:lang="en"><title><codeph>exec()</codeph> without
+forking using <apiname>posix_spawn()</apiname></title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A UNIX® program may exec without forking. The result is that the calling
+process executes another binary, but inherits certain properties, for example,
+file descriptors.  </p>
+<p>The P.I.P.S. equivalent would be to call <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> and
+pass any inherited data via <codeph>argv</codeph> parameters.  </p>
+<p>Note that if a parent process is waiting for the child to terminate then
+the termination of the newly created task must be synchronised. Therefore
+a <xref href="GUID-8F5C89A4-7813-32C7-973E-F7F0F3690BC6.dita"><apiname>waitpid()</apiname></xref> call should follow the <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> call
+so that it does not exit prematurely. Otherwise <xref href="GUID-FED685F4-5FAD-39F4-9812-3B0A85D8718C.dita"><apiname>exit()</apiname></xref> can
+be called after the posix_spawn().  </p>
+<p>Also, note that if the process which formerly executed and
+which now uses <xref href="GUID-E7C4DE71-BC5B-34AE-ACB3-C34A0DB1FC16.dita"><apiname>posix_spawn()</apiname></xref> stores its PID (for example,
+in the file system) to allow other processes to target it, then care must
+be taken to store the relevant PID (Process ID). This is because the PID for
+the newly spawned process may need to be stored instead.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5" xml:lang="en"><title>Window
+Server Client-Side Events Overview</title><shortdesc>A client application connects to the Window Server by creating
+a Window Server session and calling <codeph>RWsSession::Connect()</codeph>.
+Events generated by the Window Server are then delivered to the client via
+the session, and the client must handle these events appropriately.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Application developers. </p>
+<section id="GUID-BC5A4EC6-12CA-4E35-8E05-3FCDDC2AF8E9"><title>Window server event types</title> <p>The Window Server generates
+events of three different classes, as shown in the following diagram. </p> <fig id="GUID-04CE3E9E-2DB3-5771-B00F-532A57A74E5B">
+<title>              Window server event types            </title>
+<image href="GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e167315_href.png" placement="inline"/>
+</fig> <table id="GUID-5390256E-7A53-58D4-B698-9AD199182515">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Class</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>TWsEvent</apiname></xref>  </p> </entry>
+<entry><p><xref href="GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7.dita">General events</xref>,
+which represent user input events, such as pointer and key events. You handle
+these by using an active object of standard priority. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>TWsRedrawEvent</apiname></xref>  </p> </entry>
+<entry><p><xref href="GUID-7750D4BE-9FBA-5D29-806D-B80911170ECD.dita">Redraw events</xref>.
+You handle these by using an active object of lower priority. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>TWsPriorityKeyEvent</apiname></xref>  </p> </entry>
+<entry><p><xref href="GUID-EF87F8F8-1521-5C50-85A9-94038A99021C.dita">Priority
+key events</xref>. You handle these by using an active object of higher priority. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>All Window Server applications handle standard events, and nearly
+all handle redraw events. Only a few, however, handle priority key events.
+It is only in very rare cases that an application does not handle redraw events,
+because this requires that all its windows are backed-up windows. </p> <p>Events
+are always associated with a window. For some event types, such as key events,
+this is a window group. For other event types, such as pointer events, it
+is a drawable window. The event delivered to the client contains a handle
+that can be used to identify the window: this is the handle that was passed
+as a parameter when the window was created. For window groups, however, this
+is usually unnecessary, because most applications have only one window group. </p> <p>Symbian
+recommends that you handle each event class with a separate active object,
+in order that the classes can be handled at different priorities. </p> </section>
+<section id="GUID-B6D5EAC2-E9C2-4478-B081-F3F516EA9CE1"><title>Handling events</title> <p>The Window Server maintains a server-side
+buffer of all events queued to an application—each application has its own
+queue within the buffer (this is only for general events—redraw and priority
+key events are handled by a different mechanism). Each application must handle
+events appropriately. The <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::GetEvent()</apiname></xref> function
+(or <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::GetRedraw()</apiname></xref> or <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::GetPriorityKey()</apiname></xref>) must be called
+as the first stage of handling a completed request, and the event must then
+be analyzed and handled. </p> <p>Each event must be handled relatively quickly
+(at most a couple of seconds) so that the application remains responsive to
+user input. If an event requires more extended processing (such as a key which
+causes a large spreadsheet recalculation), then this processing should be
+split into smaller chunks and handled by a client-side active object running
+at lower priority than the <codeph>GetEvent()</codeph> handler. </p> <p>An
+application which does not observe these protocols will stop running—although
+it will not stop the whole device. The Window Server supports hotkeys which
+it handles directly, so that a badly behaved application may be killed by
+the server. </p> </section>
+</conbody><related-links>
+<link href="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita"><linktext>Pointer Handling</linktext>
+</link>
+<link href="GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita"><linktext>Declaring
+a                 Window Server Event-Handling Class</linktext></link>
+<link href="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita"><linktext>Processing
+Window-Group                 Events</linktext></link>
+<link href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita"><linktext>Processing
+Window Events</linktext></link>
+<link href="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita"><linktext>Processing
+System Events</linktext></link>
+<link href="GUID-08427065-B8E5-5194-B095-3B5213836BED.dita"><linktext>Window Server
+Client-Side Events</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B58D93D7-597C-5200-82ED-F434B297CAC9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B58D93D7-597C-5200-82ED-F434B297CAC9"><title>strictdepend</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>strictdepend</codeph> </p> <p>If your project’s dependencies may differ with the variant, use the <codeph>strictdepend</codeph> statement.</p> <p>Without this statement, dependencies will be evaluated for one variant, and then used for all. </p> <p>With <codeph>strictdepend</codeph>, dependencies are evaluated explicitly—a sometimes lengthy process—for each variant.</p> <p>Use <codeph>strictdepend</codeph> if, for instance, you conditionally include a header file, e.g.</p> <codeblock id="GUID-A3FD318E-0006-54A4-ADA4-419B13041B35" xml:space="preserve">#if defined(_DEBUG)
+include &lt;debug.h&gt;
+#endif</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B58DEF65-B08F-5D0B-98E7-EB8DB7082F8B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B58DEF65-B08F-5D0B-98E7-EB8DB7082F8B" xml:lang="en"><title>Multimedia Plug-in Collection Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Multimedia framework can be extended through writing several types of plug-in: </p> <ul><li id="GUID-2D77A342-ED13-5158-A28B-5789AA87EE25"><p>A <i>controller plug-in</i> supports playing or recording one or more multimedia formats (usually for a particular media type, such as audio) </p> </li> <li id="GUID-79143BF8-C8C7-5B9F-A8E1-D0568889DB1C"><p>A <i>format decoder plug-in</i> reads a particular media data format; a <i>format encoder plug-in</i> writes a particular media data format </p> </li> <li id="GUID-170A2E26-5BC2-5B40-B0ED-F4AEB7D8A619"><p>A <i>codec plug-in</i> converts media data between two different encodings (compression/decompression algorithms) </p> </li> <li id="GUID-CB3BEEAF-8510-5F6B-A72E-8C34609D1D1C"><p>A <i>source plug-in</i> encapsulates handling reading data from a source of media data; a <i>sink plug-in</i> encapsulates handling writing data to a media output device </p> </li> </ul> <p>You are advised to familiarise yourself with the information on how to write a controller plugin before attempting to write any of the other plugins. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B5BB6A00-7CD8-4322-ACD4-B9F0E1EEA6B2.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6" xml:lang="en"><title>Traditional
+Symbian UI application architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following image illustrates the components of the traditional architecture
+approach.</p>
+<fig id="GUID-F38DBC9C-31C0-4E4F-934C-38BA4A4B649F"><title>Traditional Symbian UI application architecture classes</title><image href="GUID-E477BB63-FE72-4460-AB42-D82FFFCE4CF0_d0e43239_href.png"/></fig>
+<p>Symbian platform applications that follow the traditional Symbian UI
+application architecture require:</p>
+<ul>
+<li><p>a <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref> derived from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref></p>
+</li>
+<li><p>a <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">view</xref> or
+views derived from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref></p>
+</li>
+</ul>
+<p>The traditional Symbian UI application architecture provides the most
+flexible approach to application UI construction. Traditional architecture
+is easier to port across different platforms than <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">view
+architecture</xref>. Traditional architecture is also the best choice for
+single-view applications, if launching the view from external applications
+is not required.</p>
+<p>Typical responsibilities in this architecture are:</p>
+<ul>
+<li><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref>-derived
+class acts as a UI controller:</p>
+<ul>
+<li><p>It <xref href="GUID-A29FB4CA-2161-4407-BA69-48FBF5D7543F.dita">creates</xref> one
+or more <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived views.</p></li>
+<li><p>It handles <xref href="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita">events</xref>,
+including enabling views to handle <xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">key
+events</xref>.</p></li>
+<li><p>To <xref href="GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C.dita">switch
+between views</xref>, it creates and destroys or shows and hides views.</p>
+</li>
+<li><p>It handles menu <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">commands</xref>.</p>
+</li>
+<li><p>It receives events such as <xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">layout</xref> and <xref href="GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.dita">foreground</xref> notifications
+from the run-time environment.</p></li>
+</ul>
+</li>
+</ul>
+<ul>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+view:</p>
+<ul>
+<li><p>Shows application data and state on the screen.</p></li>
+<li><p>Receives user input.</p></li>
+<li><p>Notifies the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref>-derived
+class of relevant events.</p></li>
+<li><p>Often observes model changes (directly or via the UI controller)
+and updates the screen accordingly.</p></li>
+</ul>
+</li>
+</ul>
+<p>For more information on the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref>-derived
+classes, see <xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">Framework
+requirements for GUI applications</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B5F98445-3CFF-5067-B89A-AC80F56C40C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B5F98445-3CFF-5067-B89A-AC80F56C40C3" xml:lang="en"><title>Porting
+Data Recognizers to Secure Platform</title><shortdesc>This page describes how to migrate data recognizers to the secure
+version of Symbian platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <p id="GUID-37D4A6C5-1A14-5CE3-A852-1AAD412C57DA"><b>Converting
+data recognizers into ECOM plugins</b> </p> <ol id="GUID-56EF676C-103E-5B68-85A1-D6A66B9EC046">
+<li id="GUID-18ED65F4-B508-5DC7-8869-A5035C7922B3"><b>Changing the project
+specification (.mmp) file</b> - Change the project specification (<filepath>.mmp</filepath>)
+file to specify an ECOM plug-in. For example: <p><codeblock id="GUID-8AD243FE-63AE-5971-98BA-D105E2756FCA" xml:space="preserve">target            EXAMPLEREC.DLL 
+targettype        PLUGIN 
+UID                0x10009D8D &lt;DLLUID&gt; 
+capability        ProtServ 
+sourcepath        ..\path 
+systeminclude    ..\inc 
+systeminclude    ..\inc\ecom  
+source            EXAMPLEREC.CPP 
+start resource    &lt;DLLUID&gt;.RSC  
+TARGET            examplerec.rsc  
+library            EUSER.LIB APMIME.LIB</codeblock> </p> </li>
+<li id="GUID-202CFB50-4DE2-5BD5-8F3B-03C3305DD992"><p><b>Changing the ECOM
+resource file</b> - Change the ECOM resource file to specify:</p> <ul>
+<li id="GUID-E0038901-3017-5B9D-9F2E-4ACC3877AEE6"><p>interface UID. This
+identifies the plugin scheme, and should be <codeph>0x101F7D87</codeph> for
+data recognizers </p> </li>
+<li id="GUID-C4D4DAB8-DD0B-597D-A9A8-E3A202A15688"><p>implementation UID.
+This uniquely identifies the plugin. </p> </li>
+</ul><p>For example: </p> <codeblock id="GUID-47351321-C97D-553C-8E32-6D3F9D08C380" xml:space="preserve">#include &lt;RegistryInfo.rh&gt; 
+RESOURCE REGISTRY_INFO r_registry
+{ 
+dll_uid = &lt;DLLUID&gt;;  // Should match the name of this file 
+                    // The name of the resource file is &lt;DLLUID&gt;.rss 
+interfaces =  
+    { 
+    INTERFACE_INFO 
+        { 
+        interface_uid = 0x101F7D87; // Const for all data recognizers 
+        implementations = 
+            { 
+            IMPLEMENTATION_INFO 
+                { 
+                implementation_uid = &lt;Unique Implementation Uid&gt;;  
+                version_no = 1; 
+                display_name = "DataRecName"; 
+                default_data = "";  
+                opaque_data = ""; 
+                } 
+            }; 
+        } 
+    }; 
+}</codeblock></li>
+<li id="GUID-0C63777C-524D-55F3-9C17-34D2FB26A1E3"><p><b>Changing the source
+code</b> - </p> Both the data recognizer's <filepath>.h</filepath> and <filepath>.cpp</filepath> files
+need code adding to create the data recognizer. For example: <p><b>example.h</b> </p> <codeblock id="GUID-7571422C-2A48-53D6-8385-6F3AAA07BC3F" xml:space="preserve">
+class CExampleDataRecognizer : public CApaDataRecognizerType
+     {
+     public:
+         static CApaDataRecognizerType* CreateRecognizerL();
+     };</codeblock> <p><b>example.cpp</b> </p> <codeblock id="GUID-CC663D38-25C1-58D9-8E27-054AEC4C08F4" xml:space="preserve">
+CApaDataRecognizerType* CExampleDataRecognizer::CreateRecognizerL()
+    {
+    return new (ELeave) CExampleDataRecognizer ();
+    }
+
+const TImplementationProxy ImplementationTable[] =
+    { 
+    IMPLEMENTATION_PROXY_ENTRY(UNIQUE IMPLEMENTATION UID, CExampleDataRecognizer::CreateRecognizerL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }
+
+// Remove the previously EXPORTED function
+EXPORT_C CApaDataRecognizerType* CreateRecognizer ()
+    {
+    }</codeblock></li>
+</ol> <p id="GUID-7AA2AA79-4CD2-5C44-BE9B-66051E22514F"><b>Converting data
+recognizers into pre-platform security style plugins</b> </p> <p>You can convert
+data recognizers into plug-ins of the sort used before Platform Security was
+introduced by: </p> <ol id="GUID-BC2F8B96-B270-58A2-A4BD-D09EDB7F7A7A">
+<li id="GUID-BA29280D-2CE5-5E8C-8805-8D841EB364C7"><b>Changing the project
+specification (.mmp) file</b> - Change the project specification (<filepath>.mmp</filepath>)
+file to specify a plug-in of the style used before Platform Security was introduced.
+For example: <p><codeblock id="GUID-521E33C5-9A00-5C8A-AC4A-E1D509F82DAA" xml:space="preserve">
+target            EXAMPLEREC.MDL 
+targettype        DLL 
+UID                0x10003A37 &lt;DLLUID&gt; 
+capability        TrustedUI ProtServ 
+sourcepath        ..\path 
+systeminclude    ..\inc 
+source            EXAMPLEREC.CPP 
+library            EUSER.LIB APMIME.LIB</codeblock> </p> </li>
+<li id="GUID-757324F0-742B-5FC7-A809-DBAC0ECFA5F9"><p><b>Changing the source
+code</b> - The data recognizer's <filepath>.cpp</filepath> file needs code
+adding to create the data recognizer. For example:</p>  <p><b>example.cpp</b> </p> <codeblock id="GUID-A16D2566-2C14-5015-AB9B-D54FE96DB906" xml:space="preserve">EXPORT_C CApaDataRecognizerType* CreateRecognizer() 
+    { 
+    CExampleDataRecognizer * thing=NULL; 
+    thing = new CExampleDataRecognizer(); 
+    return thing; // null if new failed 
+    }</codeblock></li>
+</ol> </section>
+<section><title>See also</title> <p><xref href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita">Writing
+a MIME Recognizer</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B6088C0A-20AE-5108-A28C-9CA884205493.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B6088C0A-20AE-5108-A28C-9CA884205493"><title>Resource initialisation punctuation</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A semicolon must follow <i>all</i> member initialisations. For longer, more complicated resources deciding where semicolons must be placed may become confusing. As shown in the following example, array lists are separated by commas and terminated without a semi-colon. Similarly, resources are not terminated by a semi-colon.</p> <codeblock id="GUID-3A6DD81D-7C2A-5B41-9AE1-4B31F9F3BAA1" xml:space="preserve">RESOURCE DIALOG example_dialog
+    {
+    title="Example";
+    topsection=DLAY_SECTION
+        {
+        control_list=
+            {
+            ACLIST
+                {
+                butlist_flags=BUTLIST_HORIZONTAL;
+                rid=R_HCIL_BUTTONS_OK_CANCEL;
+                },    // array member so comma needed
+            ACLIST
+                {
+                butlist_flags=BUTLIST_HORIZONTAL;
+                rid=R_HCIL_BUTTONS_OK_CANCEL;
+                } // last item in array so nothing needed
+            }; // end of struct member control_list so ‘;’ needed
+        };  // end of struct member topsection so ‘;’ needed
+    }   // end of resource so nothing needed</codeblock> <p>The rules to remember are as follows:</p> <table id="GUID-D3314534-0BD3-568A-96A2-9B822CEA4B47"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p><b>Type of entity</b> </p> </entry> <entry><p><b>Punctuation needed after closing }</b> </p> </entry> </row> <row><entry><p>resource</p> </entry> <entry><p>nothing</p> </entry> </row> <row><entry><p>array member (not last one)</p> </entry> <entry><p>,</p> </entry> </row> <row><entry><p>last array member</p> </entry> <entry><p>nothing</p> </entry> </row> <row><entry><p>struct member</p> </entry> <entry><p>;</p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B60A4401-56C0-5C70-BAA9-020321FEDCBB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B60A4401-56C0-5C70-BAA9-020321FEDCBB" xml:lang="en"><title>Multimedia Shared Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Multimedia Shared Library. </p> </conbody><related-links><link href="GUID-1AFD6B2D-C6CD-5BBF-A968-F68CCDFDA927.dita"><linktext>Multimedia
+  Utility Library Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B6101F63-280D-5CF7-92EC-337FEDF5E148.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B6101F63-280D-5CF7-92EC-337FEDF5E148"><title>false</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>false [ arg ... ] </userinput> </p> <p>Do nothing and return an exit code of 1. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B61EA8C5-0966-51DE-AC73-01DD34C7D3CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B61EA8C5-0966-51DE-AC73-01DD34C7D3CC"><title>Deleting Rows from a Table</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to delete rows from a database table. </p> <section><title>Introduction</title> <p>The deletion of a record from a database can be performed by executing the <codeph>DELETE</codeph> SQL statement. The query does not pass or return any data. </p> </section> <section><title>Basic procedure</title> <ul><li id="GUID-9C914C4E-72E0-5115-8C66-BE37C6DBD21A"><p>Configure the SQL statement </p> </li> <li id="GUID-6CA0261D-EE6B-53B5-921C-163AB03F0D04"><p>Execute the statement. </p> </li> </ul> </section> <section><title>Detailed steps</title> <p><b>Configure the SQL statement</b> </p> <p>Create a literal for your <codeph>DELETE</codeph> statement. You do not need to create a <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object to run a <codeph>DELETE</codeph> statement. You need to just execute the query with the <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita"><apiname>RSqlDatabase</apiname></xref> object, which has its own <xref href="GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF.dita#GUID-4688F6B7-E1B0-37CF-BAA2-C6BD103D4FDF/GUID-6D2120DC-C193-3E2E-A802-B4CD180BDF11"><apiname>RSqlDatabase::Exec()</apiname></xref> function taking a query string as its parameter. </p> <codeblock id="GUID-16ECCA77-5B8D-5D64-AFF0-ED634323C1DD" xml:space="preserve">_LIT(kQueryString,"DELETE FROM countries WHERE population &lt; 2;"); 
+</codeblock> <p> <b>NOTE :</b> It is possible to call a <codeph>DELETE</codeph> statement from an <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object, but it is computationally more expensive and you are recommended not to do so. </p> <p><b>Execute the statement</b> </p> <p>Execute the <codeph>DELETE</codeph> statement. This code assumes that the <codeph>countriesDatabase</codeph> object is open. </p> <codeblock id="GUID-E247DCDC-8EAA-5543-AB4C-C938CEAA51FB" xml:space="preserve">countriesDatabase.Exec(kQueryString);</codeblock> </section> <section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying a Database</xref>  </p> <p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting a Row into a Table</xref>  </p> <p>Deleting Rows from a Table - This document </p> <p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a Buffer</xref>  </p> <p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"> Reading to Memory </xref>  </p> <p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref>  </p> <p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref>  </p> <p> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B61F5B98-E76E-52BF-ACB6-0C68314F190E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B61F5B98-E76E-52BF-ACB6-0C68314F190E" xml:lang="en"><title>Imaging Plug-in Component</title><shortdesc>This page gives you link for the Imaging Plug-in Component: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B641E030-E605-5A51-9C95-D9A23A38AF20.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B641E030-E605-5A51-9C95-D9A23A38AF20" xml:lang="en"><title>MMS Engine</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The MMS Engine provides encapsulation classes for MMS Settings .</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B659AD98-FB73-5C3C-8E13-D2CDBD2B84A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B659AD98-FB73-5C3C-8E13-D2CDBD2B84A2" xml:lang="en"><title>How to use heartbeat timers</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B661DFBC-9779-597D-A1DA-4FE085DAA61A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B661DFBC-9779-597D-A1DA-4FE085DAA61A" xml:lang="en"><title>CRT0
+Libraries of STDLIB</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains the CRT0 libraries provided by STDLIB. </p>
+<p>The following table lists the CRT0 libraries: </p>
+<table id="GUID-D74087AE-6FCA-5C46-98AE-EAC4AE3B6867">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Simple Mode (thread local mode)</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>ecrt0.lib</codeph>  </p> </entry>
+<entry><p>EABI Emulators Narrow <codeph>char main (int
+argc, char *argv[], char                 *envp[])</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>wecrt0.lib</codeph>  </p> </entry>
+<entry><p>EABI Emulators Wide <codeph>char main (int
+argc, wchar_t *argv[],                 wchar_t *envp[])</codeph>  </p> </entry>
+</row>
+<row>
+<entry valign="bottom"><p><b>Complex Mode (multi threaded mode / POSIX server
+mode)</b></p></entry>
+<entry valign="bottom"/>
+</row>
+<row>
+<entry><p> <codeph> mcrt0.lib</codeph>  </p> </entry>
+<entry><p>EABI Emulators Narrow <codeph>char main (int
+argc, char *argv[], char                 *envp[]</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>wcrt0.lib</codeph>  </p> </entry>
+<entry><p>Emulators Narrow <codeph>char main (int argc,
+char *argv[], char                 *envp[])</codeph> with stdxxx redirection
+to Win32 using RWin32Stream server </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>wmcrt0.lib</codeph>  </p> </entry>
+<entry><p>EABI Emulators Wide <codeph>char wmain (int
+argc, wchar_t *argv[],                 wchar_t *envp[])</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>wwcrt0.lib</codeph>  </p> </entry>
+<entry><p>Emulator Wide <codeph>char wmain (int argc,
+wchar_t *argv[], wchar_t                 *envp[])</codeph> with stdxxx redirection
+to Win32 using RWin32Stream server </p> </entry>
+</row>
+<row>
+<entry valign="bottom"><p><b>Other</b></p></entry>
+<entry valign="bottom"/>
+</row>
+<row>
+<entry><p> <codeph>estw32.dll</codeph>  </p> </entry>
+<entry><p>Emulators: Provides the RWin32Stream server </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>redircli.dll</codeph>  </p> </entry>
+<entry><p>EABI Emulators: Provides application specific redirection
+(for example, to Java RT or test applications). </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>These static libraries provide the compiler runtime glue code that runs
+from the Symbian <codeph>E32Main()</codeph> entry point for regular Symbian
+executables into the standard C <codeph>main()</codeph> entry point. </p>
+<p>These executables are considered to be C programs hosted in a Symbian executable
+image. The glue code has a number of functions to perform, for example: </p>
+<ul>
+<li id="GUID-2692C4C1-78E3-5F5B-BA1F-53FCE4CC085C"><p>marshalling the process
+command arguments in the types used by <codeph>main()</codeph>  </p> </li>
+<li id="GUID-822978FA-C8B4-5E01-A19A-F99306D31582"><p>initialising the C Standard
+library context and mode of operation for example, calling <codeph>SpawnPosixServerThread()</codeph>. </p> </li>
+</ul>
+<section><title>ECRT0.lib and the cleanup stack</title> <p>A normal Symbian
+platform executable provides an <codeph>E32Main()</codeph> function which
+is called by the operating system to start the program. The file <filepath>ecrt0.lib</filepath> provides
+an <codeph>E32Main()</codeph> function for programs which use STDLIB. This
+function prepares the traditional <codeph>argc</codeph> and <codeph>argv</codeph> arguments,
+and passes them to <codeph>main()</codeph>. </p> <p>For a simple example demonstrating
+how to link to <filepath>ecrt0.lib</filepath>, see the description of the
+project specification for "Hello World" in <xref href="GUID-F51062B0-90BB-5659-9F23-2FF25116D78A.dita">Porting</xref>.
+The user of STDLIB need not use <filepath>ecrt0.lib</filepath>, and may provide
+their own <codeph>E32Main()</codeph>. In this case, a <codeph>CTrapCleanup</codeph> pointer
+should normally be provided. This pointer is required because although STDLIB
+does not call Symbian platform functions which can leave, it uses few functions
+which require a cleanup stack. Code in <filepath>ecrt0.lib</filepath> provides
+such a cleanup stack ("<codeph>TheTrapCleanup</codeph> "), but programs which
+do not link with <filepath>ecrt0.lib</filepath> must supply one directly. </p> <p>For
+more details on the motivation behind Symbian's use of the cleanup stack,
+see <xref href="GUID-61DEE78D-4E78-5367-BC8A-F99D3B4E9D5A.dita">Cleanup support</xref>. </p> <p> <b> NOTE</b>:
+If the program is a UI application, that is, one that includes the following
+code in one of the source files: </p> <codeblock id="GUID-D8C4F7A9-9755-58EC-BED9-0232259970BE" xml:space="preserve">GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(NewApplication);
+    }</codeblock> <p>then, the <codeph>CTrapCleanup</codeph> pointer is provided
+by the application framework. </p> </section>
+</conbody><related-links>
+<link href="GUID-F51062B0-90BB-5659-9F23-2FF25116D78A.dita"><linktext>Porting Tutorials</linktext>
+</link>
+<link href="GUID-61DEE78D-4E78-5367-BC8A-F99D3B4E9D5A.dita"><linktext>Cleanup support
+guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B66323BB-7AC0-5303-BC3A-DD577D28CF16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B66323BB-7AC0-5303-BC3A-DD577D28CF16" xml:lang="en"><title>Caller
+Identification Status Tutorial</title><shortdesc>This tutorial describes how to get the caller identification status
+information with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-B45A8C02-1C5E-4902-8231-F98B1838CCE4"><p>The caller identification service is available only on GSM and
+WCDMA networks.  </p><p/><p>The steps to get the caller identification
+status information are:  </p></context>
+
+
+<steps id="GUID-4E8D8774-7C57-5190-A896-E045B8028AE6">
+<step id="GUID-76D5CC80-CC9D-59D1-BB44-CD9E689DBACA"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-FD81FA29-62DC-5519-8C71-456FD09EEC0B"><cmd/>
+<info>call <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetIdentityServiceStatus()</apiname></xref> to
+get the caller identification service status information </info>
+<info>Pass a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TIdentityService</apiname></xref> object
+with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EIdServiceCallerPresentation</apiname></xref>  </info>
+</step>
+<step id="GUID-662113AC-889C-51E2-9053-294B8CEE35CB"><cmd/>
+<info>pass a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TIdentityService</apiname></xref> object
+with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EIdServiceCallerRestriction</apiname></xref> to
+with hold the number </info>
+</step>
+<step id="GUID-16AA1108-AAC2-577F-A611-26224C493597"><cmd/>
+<info>pass the enumeration<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EGetIdentityServiceStatusCancel</apiname></xref> to
+the to cancel the asynchronous request. </info>
+</step>
+</steps>
+<example id="GUID-1BDF5DCA-672D-56C5-9DB2-A777F6E9B68E"><title>Caller identification
+status example</title> <p>Example code to get the caller identification status. </p> <codeblock id="GUID-5C67664C-8D4E-56FE-8745-F38072CE4B60" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TIdentityServiceV1 iTIdentityServiceV1;
+    CTelephony::TIdentityServiceV1Pckg iTIdentityServiceV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iTIdentityServiceV1Pckg(iTIdentityServiceV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    CTelephony::TIdentityService condition = CTelephony::EIdServiceCallerPresentation;
+    iTelephony-&gt;GetIdentityServiceStatus(iStatus, condition, iTIdentityServiceV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if( iTIdentityServiceV1.iIdentityStatus == CTelephony::EIdServiceActivePermanent )
+          {} // CLIP is permanently active; 
+             // Your phone will display the callers number whenever this is allowed by the caller
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetIdentityServiceStatusCancel);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B67DB652-A489-55C7-A3A2-D00C43BE161E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B67DB652-A489-55C7-A3A2-D00C43BE161E" xml:lang="en"><title>How
+to handle completed requests</title><shortdesc>This document describes how an active scheduler handles a completed
+request.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When an asynchronous service provider signals completion of a request,
+the active scheduler's wait completes. </p>
+<p>The active scheduler scans those active objects whose active request flags
+are set. The active objects are checked in priority order. It invokes the <codeph>RunL()</codeph> function
+of the first active object whose request has completed. If there are no such
+active objects then the signal cannot be identified and the active scheduler
+raises a panic. </p>
+<p>The <codeph>RunL()</codeph> function performs whatever processing is required
+to complete the request, for example retrieving the results of the service
+function and displaying them. It may also: </p>
+<ul>
+<li id="GUID-F3DBFA70-BDC7-5205-89B8-6FD52D60F7E6"><p>schedule another request,
+for example, in a keyboard handler, a request for the next key press. </p> </li>
+<li id="GUID-387D63C5-8A05-5281-B825-47673094F0CB"><p>terminate the active
+scheduler by calling <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita#GUID-B4C76104-EA1B-3FC3-A31E-86A976598171/GUID-B59D1017-1D81-3D5E-B0A2-73FC9C06194B"><apiname>CActiveScheduler::Stop()</apiname></xref>. </p> </li>
+</ul>
+<p>If it is possible for the <codeph>RunL()</codeph> function to leave, then
+the active object should implement the <codeph>RunError()</codeph> function. </p>
+<p>The active scheduler traps any leave occurring in the <codeph>RunL()</codeph> function
+and calls the active object's <codeph>RunError()</codeph> function, passing
+it the leave code. <codeph>RunError()</codeph> has the opportunity to do appropriate
+cleanup and, when complete, should return <codeph>KErrNone</codeph>. </p>
+<p>If <codeph>RunError()</codeph> returns anything other than <codeph>KErrNone</codeph>,
+then the <i>active scheduler</i>'s <codeph>Error()</codeph> function is called.
+As the default implementation of <codeph>Error()</codeph> raises a panic,
+then a <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler</apiname></xref> derived class <i>must</i> be defined
+to implement a suitable <codeph>Error()</codeph> function. </p>
+<p>It may be simpler to ensure that the active objects's <codeph>RunError()</codeph> function <i>always</i> returns <codeph>KErrNone</codeph>. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B683496C-652E-5F48-924E-52D2FF3A78A7"><title>Direct file store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The main characteristic of a direct file store is that streams can be created and objects externalised to them but, once the streams have been committed and closed, they cannot subsequently be changed, i.e. streams cannot be replaced, deleted, extended or changed in any way.</p> <p>A direct file store is useful for the type of application which treats the in-memory copy of its data as its prime copy, such as a word processor which implements the classic load/save paradigm. In this paradigm:</p> <ul><li id="GUID-DE651688-71D8-5E52-BA3A-D3ED93B58F55"><p>application data is first created, in an internal, non-persistent, form — i.e., in RAM</p> </li> <li id="GUID-F6012000-CE82-5940-9CEB-386664FF0EA5"><p>when the file is first saved, the data is externalised to the file store. When saving its data, an application writes the whole object network forming the data to a new direct file store, replacing any existing file of the same name. The last stream written is always the root stream.</p> </li> <li id="GUID-9896F0DD-1D96-5EC7-959F-D3C7EB226BD6"><p>the application can exit</p> </li> <li id="GUID-27B6B647-FA91-52BF-855C-2F6CE31AB0E6"><p>when the application is started again, it can open the file store and read in the persistent data. It need not load the whole object network into memory; the loading of objects can be deferred by using Swizzles. </p> </li> <li id="GUID-1BF73B14-8CB1-57B3-A687-7C76B5100C9E"><p>the data is edited in its internal, non-persistent form</p> </li> <li id="GUID-8FFA6658-0753-5601-979A-2833AD415691"><p>when data is saved again, the old file is erased (or renamed for safety!) and completely rewritten</p> </li> </ul> <p>With a direct file store, a stream may not be appended once it has been written and closed. Writing to different streams may not be interleaved. The root stream must be the last stream to be written. The direct file store is very efficient as the allocation of new streams, and finding existing streams, are trivially mapped onto the most efficient operations of the underlying file system.</p> <p>For this type of application, the most efficient file format is obtained when all the data is written in sequence to the file. Any references within the file are to data which was written earlier. When reading the file back, it is read in several sections starting with a section that is at the <i>end</i> of the file.</p> <p>A typical relationship between a direct file store and its contained streams is shown below. In this stream network streams <i>I</i> and <i>J</i> must be written before stream <i>A</i>; stream <i>K</i> must be written before stream <i>C</i>; streams <i>A</i>,<i>B</i> and <i>C</i> must be written before the root stream.</p> <fig id="GUID-D45A96E3-5900-5817-8B32-8AA74E3DE584"><title/><image href="GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e334283_href.png" placement="inline"/></fig> <p>Direct file stores are encapsulated by the <codeph>CDirectFileStore</codeph> class. </p> <section><title>See also</title> <p><xref href="GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita">Store streams</xref> </p> <p><xref href="GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3.dita">Introduction to stores</xref> </p> <p><xref href="GUID-53112730-5871-5920-8861-D2F6BF1595BC.dita">Swizzles and deferred loading</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B68FF699-923B-530E-A877-86507B1D42F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B68FF699-923B-530E-A877-86507B1D42F1"><title>mmp file syntax overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A <filepath>.mmp</filepath> project definition file specifies the properties of a project in a platform and compiler independent way. The <filepath>makmake</filepath> tool converts project definition files into makefiles for particular platforms. The <filepath>abld</filepath> tool wraps calls to <filepath>makmake</filepath>, and can be more convenient to use than <filepath>makmake</filepath> directly. </p> <p>A project definition file has extension <filepath>.mmp</filepath>. </p> <p>Note that: </p> <ul><li id="GUID-5796376B-2834-5C3D-BF27-B987C87B6222"><p>Each statement occupies a single line. </p> </li> <li id="GUID-310510D2-B28C-5069-A98F-A19A6E7A86F3"><p>Use the C++ style comment syntax for comments. </p> </li> <li id="GUID-9AF3002F-9175-5F7E-B6A2-8443994954F1"><p>A trailing backslash is used to indicate a line continuation. Therefore, specify directories without their trailing backslash, for example: Do <codeph>SYSTEMINCLUDE \epoc32\include</codeph>, rather than <codeph>SYSTEMINCLUDE
+             \epoc32\include\</codeph>  </p> </li> </ul> <section><title>Example:</title> <p>An example of an <filepath>.mmp</filepath> file called <filepath>hello.mmp</filepath>: </p> <codeblock id="GUID-26AF80DF-870D-5638-8875-F9085C525EA0" xml:space="preserve">TARGET        HelloWorld.exe
+TARGETTYPE    exe
+UID           0x100039CE 0x10004299
+TARGETPATH                \sys\bin
+VENDORID               0x70000001
+SOURCEPATH    .
+SOURCE        HelloWorld_Main.cpp
+SOURCE        HelloWorld_Application.cpp
+SOURCE        HelloWorld_Document.cpp
+SOURCE        HelloWorld_AppUi.cpp
+SOURCE        HelloWorld_AppView.cpp
+USERINCLUDE   .
+SYSTEMINCLUDE \epoc32\include
+
+START RESOURCE    HelloWorld.rss
+HEADER
+TARGETPATH        \resource\apps
+end
+
+START RESOURCE    HelloWorld_reg.rss
+TARGETPATH        \private\10003a3f\apps
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib
+</codeblock> </section> <section><title>See also</title> <p> <xref href="GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita">Using makmake</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76"><title>File Server Client Side Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides an application interface to file systems. </p> </section> <section><title>Architectural relationships</title> <p>File access is provided by an Symbian OS server, the file server. It provides local file systems (ROM, NAND/NOR flash and removable media), and an interface to allow dynamically installable file systems, such as those required to communicate with remote disks over a network. </p> <p>The drive, directory and file hierarchy is VFAT, thus making the file system naturally compatible with desktop PCs. </p> <p>Stream stores, as defined in the Stores API, provides a layer over the file interface, and are commonly used instead of the file API directly. </p> <p>The application architecture, as defined in the Application Architecture Framework API, and associated components, provide the policy for file locations. Because of this, most application programs do not need to know the details of the directory-related APIs. </p> <p>Some additional utilities are provided in the Application Utilities API. </p> </section> <section><title>Description</title> <p>The API has seven key concepts: file server session, file, directory, drives and volumes, path and filename parser, file management, file searching and directory scanning. </p> <p><b>File server session</b> </p> <p>All access from client to server is through a file server session. It provides file system manipulation functions, including adding, removing, moving and renaming files and directories; inspecting and changing file and directory attributes and entry details; and requesting notifications of when significant change occurs. </p> <p>The file server session is provided by <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref>. </p> <p><b>File</b> </p> <p>A specified file can be opened, created, or replaced. Files must be opened before they are read from or written to. Data in read and write operations is passed through descriptors. Files can also be read and written through the file stream classes provided by the File Stores API. </p> <p>The file interface is provided by <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>. </p> <p><b>Directory</b> </p> <p>A directory entry is a directory, file or volume label. Directory entries can be read and sorted. </p> <p>To read through a directory one entry at a time, use <xref href="GUID-12AE154F-7741-38C0-ADFE-9784FCF5E516.dita"><apiname>RDir</apiname></xref>. To read many entries at a time, use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> functions and the associated <xref href="GUID-15AEDE72-80FF-3689-A771-E00F1CF3EB88.dita"><apiname>CDir</apiname></xref>. The directory entry class is <xref href="GUID-1F240E05-55D4-3161-B22E-B48D93A981DF.dita"><apiname>TEntry</apiname></xref>. </p> <p><b> Drives and volumes</b> </p> <p>A drive corresponds to a logical device. A volume applies to removable media. As users insert and remove individual devices, so different volumes are said to be mounted and demounted. For media types that can be split into partitions, each partition corresponds to a separate volume. </p> <p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> provides means to find out which drives and volumes are present. Information for them is encapsulated in <xref href="GUID-9BDD476C-04E1-3271-AFD9-8F86D818CE46.dita"><apiname>TDriveUnit</apiname></xref>, <xref href="GUID-4D883FA4-115C-3425-8A34-B00D1D4BBCF9.dita"><apiname>TDriveInfo</apiname></xref> and <xref href="GUID-F7AECD65-6C3C-3056-847A-FD49BB2E927F.dita"><apiname>TVolumeInfo</apiname></xref>. </p> <p><b>Path and filename parser</b> </p> <p>A filename has the logical parts of drive, path, name, and extension. An interface to manipulate filenames is provided by <xref href="GUID-F673F02A-AC5B-3D0F-8D14-21E6221E5015.dita"><apiname>TParseBase</apiname></xref>. Concrete implementations are provided by the derived classes, <xref href="GUID-E79A3B03-F8CB-37DB-A2A8-1C6C4E4D739A.dita"><apiname>TParse</apiname></xref>, <xref href="GUID-A6268E58-68EC-3041-93FD-5368CD230947.dita"><apiname>TParsePtr</apiname></xref> and <xref href="GUID-C65BCDAB-0476-3EAC-9BFC-37243AE43FE9.dita"><apiname>TParsePtrC</apiname></xref>. </p> <p><b>File management</b> </p> <p>Efficient large-scale copying, moving and other file management operations, are provided by <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref>. </p> <p><b>File searching</b> </p> <p>High-level file finding functionality is provided by <xref href="GUID-98CC1E75-D2DE-3700-928C-7D530237ECBA.dita"><apiname>TFindFile</apiname></xref>. </p> <p><b>Directory scanning</b> </p> <p> <xref href="GUID-C657AF2D-1183-3CD2-ACAF-3B0B00FC91BB.dita"><apiname>CDirScan</apiname></xref> can be used to scan through a directory hierarchy, either up or down, returning a filtered list of the entries contained in each directory. </p> </section> <section><title>See also</title> <p> <xref href="GUID-D80D6D46-27B7-500E-A83C-63EF038606BF.dita">Application Utilities Overview</xref>  </p> <p> <xref href="GUID-21CF1D5F-44C5-5407-B3C9-8BC103C97079.dita">File Stores Overview</xref>  </p> <p> <xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server Overview</xref>  </p> <p> <xref href="GUID-5EAED550-5FFC-54A6-BB4A-720975B127B8.dita">Stores Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B" xml:lang="en"><title>How
+to use abld</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <filepath>abld.bat</filepath> batch file is used to control all aspects
+of building a project. It is created in the current directory by the <filepath>bldmake</filepath> tool
+from a component description file <filepath>bld.inf</filepath>. </p>
+<p>The syntax reference for this tool exhaustively lists all of the possible
+build operations which can be performed using <filepath>abld</filepath>. The
+tool's flexibility obscures the fact that most Symbian developers will only
+need to use two commands: one for cleaning up all files created in a previous
+build, and another for building the current project. </p>
+<section><title>Cleaning</title> <p>Cleaning removes all the intermediate
+files created during compilation, and all the executables and import libraries
+created by the linker. The simplest invocation of this operation deletes the
+files for all platforms, and projects belonging to the component. </p> <p><userinput>abld
+clean</userinput> </p> <p>It is also possible to specify the platform and
+build variant to be cleaned. </p> </section>
+<section><title>Building</title> <p> <filepath>abld</filepath> builds projects
+based on the makefiles created by <filepath>bldmake</filepath> from the component
+information file and project files. </p> <p>The simplest invocation of this
+command builds the project for all possible build variants: </p> <p><userinput>abld
+build</userinput> </p> <p>However building for a platform can take some time,
+and it is usual to only specify the platform required. For example, to build
+the debug version on the WINSCW platform specify: </p> <p><userinput>abld
+build winscw udeb</userinput> </p> <p>or to build the release version for
+ARMV5 use: </p> <p><userinput>abld build armv5 urel</userinput> </p><note>The <codeph>build</codeph> command
+combines the other <filepath>abld</filepath> commands: <codeph>export</codeph>, <codeph>makefile</codeph>, <codeph>library</codeph>, <codeph>resource</codeph>, <codeph>target</codeph> and <codeph>final</codeph>, which are carried out
+in turn. </note> <p><b>See also </b> </p> <p><xref href="GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita">Abld
+syntax</xref> </p><p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">Using
+bldmake</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B6D4AEE9-5C17-51D9-BBDE-7CCB5218279D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B6D4AEE9-5C17-51D9-BBDE-7CCB5218279D" xml:lang="en"><title>GDI Component</title><shortdesc>The GDI component provides abstract interfaces for drawing to devices,
+such as screens and printers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p>The CBR package name for the GDI component is <filepath>graphics_gdi</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>GDI Concepts</linktext>
+</link>
+<link href="GUID-1E68A78A-52E5-5DF7-B540-85C7194E4617.dita"><linktext>GDI Tutorials</linktext>
+</link>
+<link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics
+Device Interface (GDI)   Collection</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321"><title>start bitmap</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>start bitmap</codeph>  <varname>target-file</varname> </p> <p>[<codeph>targetpath</codeph>  <varname>targetpath</varname>] </p> <p>[<codeph>header</codeph>] </p> <p>[<codeph>sourcepath</codeph>  <varname>sourcepath</varname>] </p> <p> <codeph>source</codeph>  <varname>color-depth</varname> <varname>source-bitmap-list</varname> </p> <p> <codeph>end</codeph> </p> <p>A <codeph>start bitmap</codeph> section specifies how to compile bitmap (<filepath>.bmp</filepath>) files into a Symbian platform format multi-bitmap (<filepath>.mbm</filepath>) file. </p> <p>The <varname>target-file</varname> to be produced should be given with its extension, e.g. <filepath>squash.mbm</filepath>. </p> <p>If a target path is specified, that path will be interpreted as a location on the emulated <filepath>z:</filepath> drive; otherwise, the target file will be built into the same directory as the application. </p> <p>If the <codeph>header</codeph> keyword is supplied in the section, a bitmap header will be generated in directory <filepath>epoc32\include</filepath>, e.g. <filepath>squash.mbg</filepath>. </p> <p>Multiple <codeph>sourcepath</codeph> and <codeph>source</codeph> statements can be specified. Source bitmaps specified with each <codeph>source</codeph> statement will be expected to exist in the directory specified with the latest <codeph>sourcepath</codeph> statement above it. </p> <p>Just a single colour-depth must be specified for all the source bitmaps within a single <codeph>source</codeph> statement, and must be of the form [<codeph>c</codeph>]<varname>digit</varname>,<varname>digit</varname>, where the optional <codeph>c</codeph> denotes whether the bitmap is a colour bitmap and the digits represent the colour-depth of the bitmap and the bitmap mask respectively. It is recommended that the mask has a colour depth of 1 bit per pixel, to minimise memory usage. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B70E22E6-CF28-58A0-9D1E-C9A12D1FBC72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B70E22E6-CF28-58A0-9D1E-C9A12D1FBC72" xml:lang="en"><title>Using
+RPointerArray&lt;class T&gt;</title><shortdesc>This document covers the issues involved in using a RPointerArray.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-F7FD2F4C-A187-5289-B28D-1A7A40A7EF4B"><title>Freeing all
+memory before the array goes out of scope</title> <p>By convention, class
+names starting with the letter <codeph>R</codeph> do not allocate memory on
+the heap. <codeph>RPointerArray&lt;class T&gt;</codeph> is an <i>exception</i> and
+this should be remembered when using the class. </p> <p>If an array is declared
+on the program stack, then its <codeph>Close()</codeph> or <codeph>Reset()</codeph> member
+function must be called to ensure that allocated memory is freed. </p> <p>Similarly,
+if <codeph>RPointerArray&lt;class T&gt;</codeph> is a data member of another
+class, then the destructor of that class must call <codeph>Close()</codeph> or <codeph>Reset()</codeph>. </p> <p>Another
+issue to remember is the ownership of objects whose pointers are contained
+within an <codeph>RPointerArray&lt;class T&gt;</codeph> array. If ownership of
+the objects lies elsewhere, then calling <codeph>Close()</codeph> or <codeph>Reset()</codeph> before
+the array goes out of scope is sufficient. If, however, ownership of these
+objects is vested in the array, and it is the intention that these objects
+be destroyed when the array is destroyed, then <codeph>ResetAndDestroy()</codeph> must
+be called before the array goes out of scope. </p> </section>
+<section id="GUID-7CBFF894-9704-5018-A062-6EB2DC2D181A"><title>Packaging the
+algorithm for ordering array objects</title> <p>A <codeph>RPointerArray&lt;class
+T&gt;</codeph> array allows its contained pointers to be ordered so that the
+objects themselves are in object order. The array provides the behaviour for
+inserting and sorting instances of pointers to the template class. To help
+with this, the template class must provide an algorithm for deciding how two
+template class objects are ordered. This algorithm is implemented by a function
+which must be wrapped in a <codeph>TLinearOrder&lt;class T&gt;</codeph> package. </p> <p>The
+function implementing the algorithm can be a static member of the class but
+need not necessarily be so. </p> <p>Here, we aim to build an array of <codeph>CMyTest</codeph> objects
+ordered in a way which makes sense for the <codeph>CTMyTest</codeph> class. </p> <codeblock id="GUID-46BBDDDA-9AF5-5A1D-80B0-7F9441D1DBF8" xml:space="preserve">class CMyTest
+ { 
+public 
+ ~CMyTest();
+ Static CMytest* NewL(const TDesC&amp; aText);
+ static TInt Compare(const CMyTest&amp; aFirst, const CMyTest&amp; Second);
+public:
+ HBufC* iText;
+ };</codeblock> <p>In this example, the algorithm is implemented by a static
+function called <codeph>Compare()</codeph>. It takes const references to two <codeph>CMyTest</codeph> objects
+and returns zero if the objects are equal, a negative value if <codeph>aFirst</codeph> is
+less than <codeph>aSecond</codeph> and a positive value if <codeph>aFirst</codeph> is
+greater than <codeph>aSecond</codeph>. </p> <codeblock id="GUID-FE525095-5A8F-52CB-A56C-6E0148011478" xml:space="preserve">TInt CMyTest::Compare(const CMyTest&amp; aFirst,const CMyTest&amp; aSecond)
+ {
+ TInt ret = (aFirst.iText)-&gt;Compare(*aSecond.iText);
+ if (ret &gt; 0)
+  return 1;
+ if (ret &lt; 0)
+  return -1;
+ return 0;
+ }</codeblock> <p>Construct three <codeph>CMyTest</codeph> objects and then
+construct an array object for an array of pointers to <codeph>CMyTest</codeph> objects;
+the array has default granularity. </p> <codeblock id="GUID-DA86C3D4-1D9C-5FAD-B418-9EB65DECB045" xml:space="preserve">_LIT(KTextOne,"First Text");
+_LIT(KTextTwo,"Second Text");
+_LIT(KTextThree,"Third Text");
+...
+CMyTest* one   = CMyTest::NewL(KTextOne);
+CMyTest* two   = CMyTest::NewL(KTextTwo);
+CMyTest* three = CMyTest::NewL(KTextThree);
+...
+RPointerArray&lt;CMyTest&gt; x;</codeblock> <p>There are at least three ways
+of proceeding, some of which are more efficient than others. </p> <ul>
+<li id="GUID-502B71BF-A649-5E1A-90C1-B7822FD61CF8"><p>Explicitly build a <codeph>TLinearOrder&lt;CMyTest&gt;</codeph> and
+pass this as a parameter to <codeph>InsertInOrder()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-65DCB793-5FE3-59F7-B479-DCEDB2FEC5BC" xml:space="preserve">...
+TLinearOrder&lt;CMyTest&gt; order(CMyTest::Compare);
+...
+x.InsertInOrder(one,order);
+...</codeblock> <ul>
+<li id="GUID-A9BEE65B-EA73-57C8-8E3A-FCDAF7D7AFD3"><p>Construct a temporary <codeph>TLinearOrder&lt;CMyTest&gt;</codeph> on
+the call to <codeph>InsertInOrder()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-A61509B0-8473-56BA-B343-3F62A9D54A0B" xml:space="preserve">...
+x.InsertInOrder(one,TLinearOrder&lt;CMyTest&gt;(CMyTest::Compare));
+...</codeblock> <ul>
+<li id="GUID-46064641-BA0A-5FE5-93A1-1C2F3981AB1B"><p>Implicitly construct
+a temporary <codeph>TLinearOrder&lt;CMyTest&gt;</codeph> on the call to <codeph>InsertOrder()</codeph>. </p> </li>
+</ul> <codeblock id="GUID-9B4DA4D7-2DAC-58C6-B958-EDC20ED785B6" xml:space="preserve">...
+x.InsertInOrder(one,CMyTest::Compare);
+...</codeblock> <p>This applies to all member functions of <codeph>RPointerArray&lt;class
+T&gt;</codeph> which take a <codeph>TLinearOrder&lt;class T&gt;</codeph> argument. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B" xml:lang="en"><title>Feature
+Manager Collection Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Feature Manager collection is a set of classes used to manipulate feature
+flags. </p>
+<section id="GUID-E1E8BB89-C634-51D3-BBA1-A98BCCA3BD44"><title>Purpose</title> <p>A
+feature is any piece of functionality which can be included in a phone at
+ROM build time or excluded from it. An excluded feature is often written to
+ROM at build time but excluded from the build by disabling it. </p> </section>
+<section id="GUID-E914F975-B33E-55D0-9F7A-8CA65C321296"><title>Architecture</title> <p>The
+feature management system uses the standard client server architecture. The
+relationship between the components is : </p> <fig id="GUID-CA8AE056-6988-5611-BFE0-9999C0F02FF7">
+<title>              Architecture of the feature management system       
+    </title>
+<image href="GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e325727_href.png" placement="inline"/>
+</fig><p>  Feature Manager Client is not supplied with all versions of Symbian
+Platform. Feature Discovery, which is always supplied, provides a subset of
+the functionality of Feature Manager Client and offers superior performance
+under certain circumstances. </p><p> The data which the Feature Manager manages
+is stored as a collection of  XML files in the feature database. These files
+define a set of feature flags  which can be accessed using the Feature Manager
+API. The file <filepath>featureuid.xml</filepath> is the master record of
+all features in the database. You do not manipulate the feature database directly.
+  </p><p> The feature manager database is also accessed by the tool <filepath>feat2hdr.pl</filepath> which
+is used at ROM build time to convert the data relating to each feature into
+.iby and .h files used by the source code of the  components which the features
+refer to.   </p> </section>
+<section id="GUID-A9D9B55D-8B3F-54E3-A272-0EF74757846F"><title>Description</title> <p> </p> <p>The
+Feature Manager provides the functionality to </p> <ul>
+<li id="GUID-946849BE-FD32-5C15-A14D-652962D7B907"><p>query features and report
+on them, </p> </li>
+<li id="GUID-97184F11-834D-510B-A9C5-685E87ADC256"><p>modify the status of
+features, and </p> </li>
+<li id="GUID-A7A9F8C0-21A1-5017-9DEA-334DA2345692"><p>set up notification
+of changes to features. </p> </li>
+</ul> </section>
+<section id="GUID-B0C40DD9-CE3F-5855-AD6C-C56140CB27FF"><title>Components</title> <ul>
+<li id="GUID-854A0F17-CC56-5673-9BA4-49E2D36AEEA2"><p>Feature Manager Client
+provides the complete functionality required for feature management. </p> </li>
+<li id="GUID-FEF9EA74-AC3B-507E-BFCA-599CEEBA3C4D"><p>Feature Manager Server
+maintains the table containing the list of features available on the device. </p> </li>
+<li id="GUID-EB3A9157-0659-5288-8FB8-18379EB2EE62"><p>Feature Discovery provides
+the functionality to discover if a feature or feature set is available but
+not to enable, disable or modify features. </p> </li>
+</ul> <p>Feature flags were formerly managed using the Feature Registry component,
+which has now been deprecated. The old Feature Registry API calls continue
+to be supported, but the old implementation has been scrapped in favour of
+wrapper functions which call Feature Manager. </p> </section>
+<section><title>Using Feature Manager</title> <p>Feature flags, which are
+held in the feature database, track changes to the status of features. It
+is important to know that modifications through Feature Manager do not modify
+the features themselves, though feature flags may be used by other components
+which actually modify features. </p> <p>The Feature Manager provides the functionality
+to: </p> <ul>
+<li id="GUID-9D4F29E1-3E82-5527-8F49-C77346235CF2"><p>report the availability
+of feature flags, </p> </li>
+<li id="GUID-6A2B037D-46C6-595A-A9BF-3FBEBE4A063B"><p>enable and disable feature
+flags, </p> </li>
+<li id="GUID-262022F4-D777-5FD1-961E-6FDF22E77BC0"><p>modify the status of
+feature flags and the data associated with them, and </p> </li>
+<li id="GUID-893BC294-3503-5020-A507-0CBC455CB269"><p>set up notification
+of changes to the status of feature flags. </p> </li>
+</ul> <p>The <xref href="GUID-1A22E574-831B-5D00-98BD-0DFFA9CC09A0.dita">Feature
+Manager Tutorial</xref> provides detailed instructions on how to perform these
+tasks. </p> </section>
+</conbody><related-links>
+<link href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita"><linktext>Feature Manager
+Guide</linktext></link>
+<link href="GUID-6F716E31-490E-5CA1-871A-D8D1661E3078.dita"><linktext>Feature Manager
+Installation                 Tutorial</linktext></link>
+<link href="GUID-D01C4682-619E-501E-8992-9F7FA35D7682.dita"><linktext>Feature Manager
+Modification                 Tutorials</linktext></link>
+<link href="GUID-1A22E574-831B-5D00-98BD-0DFFA9CC09A0.dita"><linktext>Feature Manager
+Querying                 Tutorials</linktext></link>
+<link href="GUID-910780A3-D6AB-5EE2-966A-5F228AC5804F.dita"><linktext>Feature Manager
+Notification                 Tutorials</linktext></link>
+<link href="GUID-F2489DE2-18E2-5C5B-A174-49B5B7A64A7C.dita"><linktext>Feature Manager
+Reporting                 Tutorials</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B71F0B0C-CFEB-583F-841D-07340DD6B9CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B71F0B0C-CFEB-583F-841D-07340DD6B9CE" xml:lang="en"><title>Using
+TDes8Overflow</title><shortdesc>Use TDes8Overflow to handle overflow issues when calling the<apiname>TDes8::AppendFormat()</apiname> function.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>Overflow()</codeph> member function of the overflow handler, <xref href="GUID-6A13E649-D15A-3BD7-B5C2-4DC23211F276.dita"><apiname>TDes8Overflow</apiname></xref>,
+can be defined and implemented to handle a potential descriptor overflow resulting
+from a call to <xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita#GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507/GUID-E8BE9DD1-2D96-3E8E-943A-CD2ECFD78333"><apiname>TDes8::AppendFormat()</apiname></xref>.</p>
+<p>There are many actions that the overflow function can perform but some
+possibilities are:</p>
+<ul>
+<li id="GUID-0543F1D9-4DAA-5433-BF08-55CF7DB7D690"><p>just return - in effect,
+this suppresses the panic caused by the overflow.</p> </li>
+<li id="GUID-F8D403D7-903E-5FAC-8ADC-F2FD0EE6CA6B"><p>leave.</p> </li>
+<li id="GUID-B28E1AF3-F1C0-51F4-97C3-EA8CCD2CDF2D"><p>replace the entire string
+with some error indication, e.g. "Overflowed"</p> </li>
+</ul>
+<p>For more complex recovery actions, it may be easier to set a flag in the
+implementation of the <codeph>TDes8Overflow</codeph> class and check it on
+return from the call to <codeph>AppendFormat()</codeph>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1" xml:lang="en"><title>dynamicarray:
+Using Dynamic Arrays</title><shortdesc>This example application demonstrates how to construct and use
+dynamic arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> The example includes both simple dynamic arrays and extended dynamic arrays.
+You are likely to use simple dynamic arrays often. Extended dynamic arrays
+are combinations of element properties and storage types. </p>
+<p>The example implements the following operations for the <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita"><apiname>RArray</apiname></xref> and <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita"><apiname>RPointerArray</apiname></xref> classes: </p>
+<ul>
+<li id="GUID-B97ECA5C-C85B-5FFE-85C8-5CF63B1E28BE"><p>Appends elements </p> </li>
+<li id="GUID-94B944CD-E9E2-5C4D-AACB-9E132A042D9E"><p>Inserts elements </p> </li>
+<li id="GUID-C08769D8-4921-53BE-A07C-08ADE237D05F"><p>Accesses elements </p> </li>
+<li id="GUID-CB9EE059-E64B-5178-962F-1B21569581DF"><p>Removes elements </p> </li>
+<li id="GUID-FFD58188-D8E0-5B53-8E59-91911186C7CB"><p>Finds elements (in various
+ways) </p> </li>
+<li id="GUID-6ADD8D2B-9B4E-52C5-838E-DA0F3D646390"><p>Sorts array </p> </li>
+<li id="GUID-BF05324F-470C-5DE6-8BAD-E842D7C2BBC8"><p>Destroys the array </p> </li>
+</ul>
+<section id="GUID-C469AD45-C916-48B9-A621-944D8FE0B625"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a0e27f39-b574-424f-af5c-8e764d4e3aa0.zip" scope="external">DynamicArrays.zip</xref></p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a0e27f39-b574-424f-af5c-8e764d4e3aa0.html" scope="peer">browse </xref> . View the additional files:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> </section>
+<section id="GUID-B7551573-B14D-45A9-9F29-39033C2058EC"><title>Description</title> <p>This example demonstrates how to construct
+and use the following types of dynamic arrays: </p> <p><b>CArrayFixFlat</b> </p> <p>This
+example uses the <xref href="GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3.dita"><apiname>CArrayFixFlat</apiname></xref> array class to create an
+array of objects. These objects are of fixed length and are stored in a flat
+buffer. </p> <p>The following operations are performed on this array: </p> <ul>
+<li id="GUID-98A1051E-C6A9-5A4D-9AC0-6421E7D2B972"><p> <b>Append elements:</b> The
+example uses the <xref href="GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585.dita#GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585/GUID-B4C14DDC-78BF-3A11-9A7C-6B7F948CE162"><apiname>CArrayFix::AppendL()</apiname></xref> function to append
+objects to the array. </p> </li>
+<li id="GUID-EC85E528-D19E-5E93-B3D7-09A5E4920335"><p> <b>Insert elements:</b> The
+example uses the <xref href="GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585.dita#GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585/GUID-C6A1753D-E8A6-39CA-ACCA-42192A7B1BA3"><apiname>CArrayFix::InsertL()</apiname></xref> function to insert
+objects into the array at the specified position. </p> </li>
+<li id="GUID-2572C5EC-A0AF-59AE-A165-A47741C035B1"><p> <b>Remove elements:</b> The
+example uses the <xref href="GUID-B0159EFA-B76E-3C59-8B35-42CC93DAF0FF.dita#GUID-B0159EFA-B76E-3C59-8B35-42CC93DAF0FF/GUID-3B6B91EE-B89F-3BA9-8F07-5036A347A6DE"><apiname>CArrayFixBase::Delete()</apiname></xref> function to delete
+objects from the array. </p> </li>
+<li id="GUID-437DB73D-A4CB-573C-B75F-1E56A667F196"><p> <b>Sort elements:</b> The
+example defines an array key to sort the array using the <xref href="GUID-5BC09594-7D9F-3B3F-95B0-7828A756537B.dita"><apiname>TKeyArrayFix</apiname></xref> class.
+The <xref href="GUID-B0159EFA-B76E-3C59-8B35-42CC93DAF0FF.dita#GUID-B0159EFA-B76E-3C59-8B35-42CC93DAF0FF/GUID-B62662E3-F359-3A16-8C61-38A9E2EC7A56"><apiname>CArrayFixBase::Sort()</apiname></xref> function is used to sort the
+array using this array key. </p> </li>
+<li id="GUID-3EF730BC-B9DC-5906-ACE5-EC57DB8FDF46"><p> <b>Swap two elements:</b> The
+example implements the <xref href="GUID-04117018-A42A-3D49-9EA3-D1D7A7785B0A.dita#GUID-04117018-A42A-3D49-9EA3-D1D7A7785B0A/GUID-22AB214D-552D-3F5B-9A04-E620453FFD08"><apiname>TSwap::Swap()</apiname></xref> function through the <codeph>CMySwap</codeph> class.
+The <codeph>CMySwap::Swap()</codeph> function is used to swap two elements
+of the array. </p> </li>
+<li id="GUID-58714E19-49E6-528B-A462-F88BCB0063A3"><p> <b>Find an element:</b> The
+example implements the <codeph>TKeyElementFix</codeph> class. This class is
+a <xref href="GUID-0756A649-486C-3CE5-9F1E-467E008A63C7.dita"><apiname>TKey</apiname></xref> derived class. It overrides the <xref href="GUID-0756A649-486C-3CE5-9F1E-467E008A63C7.dita#GUID-0756A649-486C-3CE5-9F1E-467E008A63C7/GUID-EE6812EB-9E48-303D-88B7-B0D49581E9B1"><apiname>TKey::At()</apiname></xref> function.
+The <codeph>TKeyElementFix::At()</codeph> function gets a pointer to the key
+of a specified array element. This function is used by the <xref href="GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3.dita#GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3/GUID-D5FB0842-E883-3977-95EB-EA2D0189A429"><apiname>CArrayFixFlat::Find()</apiname></xref> function
+to find an element in the array. </p> </li>
+</ul> <p><b>CArrayPtrFlat</b> </p> <p>This example uses the <xref href="GUID-FCE7D958-96AA-346D-8D22-0EF24B9DB7CC.dita"><apiname>CArrayPtrFlat</apiname></xref> array
+class to create an array of pointers to <codeph>CBase</codeph> derived objects. </p> <p>The
+following operations are performed on this array: </p> <ul>
+<li id="GUID-291A9D24-E360-59A5-9856-D727920E06A3"><p> <b>Append elements:</b> The
+example uses the <xref href="GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585.dita#GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585/GUID-B4C14DDC-78BF-3A11-9A7C-6B7F948CE162"><apiname>CArrayFix::AppendL()</apiname></xref> function to append
+objects to the array. </p> </li>
+<li id="GUID-17E609B9-837D-528B-A4EC-983AFCCC9D55"><p> <b>Insert elements:</b> The
+example uses the <xref href="GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585.dita#GUID-79EFD210-2C4F-31E5-83CD-DC9FE54FD585/GUID-C6A1753D-E8A6-39CA-ACCA-42192A7B1BA3"><apiname>CArrayFix::InsertL()</apiname></xref> function to insert
+objects into the array at the specified position. </p> </li>
+<li id="GUID-CC2A6E70-76E1-5029-B409-09EE2ADFCF0D"><p> <b>Remove elements:</b> The
+example uses the <xref href="GUID-B0159EFA-B76E-3C59-8B35-42CC93DAF0FF.dita#GUID-B0159EFA-B76E-3C59-8B35-42CC93DAF0FF/GUID-3B6B91EE-B89F-3BA9-8F07-5036A347A6DE"><apiname>CArrayFixBase::Delete()</apiname></xref> function to delete
+objects from the array. </p> </li>
+</ul> <p><b>CArrayVarFlat</b> </p> <p>This example uses the <xref href="GUID-5BC7EAFE-FC9C-3E86-BFDC-FDE9FE086D53.dita"><apiname>CArrayVarFlat</apiname></xref> array
+class to create an array of objects. These objects are of different lengths.
+Pointers to these elements are maintained in a flat dynamic buffer. </p> <p>The
+following operations are performed on this array: </p> <ul>
+<li id="GUID-D44919CC-40CF-5BE9-8228-633B752E83BE"><p> <b>Append elements:</b> The
+example uses the <xref href="GUID-C2430ABF-D276-3F70-A18B-7059F3099BF1.dita#GUID-C2430ABF-D276-3F70-A18B-7059F3099BF1/GUID-8C5D0DD4-880F-357C-92F5-C4750EF3F0CA"><apiname>CArrayVar::AppendL()</apiname></xref> function to append
+objects to the array. </p> </li>
+<li id="GUID-DE339118-3311-5603-8925-9C540E2E3B5F"><p> <b>Sort elements:</b> The
+example defines an array key to sort the array using the <xref href="GUID-03CE0E0B-3731-338A-87E4-49B669AD4EBC.dita"><apiname>TKeyArrayVar</apiname></xref> class.
+The <xref href="GUID-1BA1D5FF-BE4A-3EA5-9784-ADEA1B81EF39.dita#GUID-1BA1D5FF-BE4A-3EA5-9784-ADEA1B81EF39/GUID-9E6E6A98-12F0-3D18-A9A2-5AECEE597FCD"><apiname>CArrayVarBase::Sort()</apiname></xref> function is used to sort the
+array using this array key. </p> </li>
+</ul> <p><b>CArrayPakFlat</b> </p> <p>This example uses the <xref href="GUID-4D6E6B46-32B5-34AD-BD8A-84BF6B2B7C81.dita"><apiname>CArrayPakFlat</apiname></xref> array
+class to create an array of objects. These objects are of variable lengths.
+These are stored in a flat buffer. Each element is preceded by its length
+information. </p> <p>The following operations are performed on this array: </p> <ul>
+<li id="GUID-DC8D9F36-DD53-52CB-B28B-585EF92A4F6E"><p> <b>Append elements:</b> The
+example uses the <xref href="GUID-899495E6-C20E-3614-A3A9-C49A7916E5E7.dita#GUID-899495E6-C20E-3614-A3A9-C49A7916E5E7/GUID-2AA0BFE1-E86D-3E4C-99C0-116A4D23458E"><apiname>CArrayPak::AppendL()</apiname></xref> function to append
+objects to the array. </p> </li>
+<li id="GUID-CC45322E-DD5A-5A59-99C5-E5EC5F50102F"><p> <b>Find an element:</b> The
+example defines an array key to find an element in the array using the <xref href="GUID-F3BF9485-BA32-36A4-9B39-FC51E28F5A24.dita"><apiname>TKeyArrayPak</apiname></xref> class.
+The <xref href="GUID-800D79F0-D735-3AC5-BDFD-F1E7B8C37B99.dita#GUID-800D79F0-D735-3AC5-BDFD-F1E7B8C37B99/GUID-A52664B1-8E1F-3570-92EC-E7EEEA26F204"><apiname>CArrayPakBase::Find()</apiname></xref> function is used to find an element
+in the array. </p> </li>
+</ul> <p><b>RArray</b> </p> <p>This example constructs a simple dynamic array
+called <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita"><apiname>RArray</apiname></xref>. It is an efficient array of fixed length
+objects. The elements of this array are the instances of another class, so
+this is specified as a template parameter <codeph>T</codeph>. </p> <p>This
+example shows the following operations to this array: </p> <ul>
+<li id="GUID-C70C80B2-E102-5B25-AE9C-9A81FF8A98EB"><p> <b>Append elements:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Appends the objects into the array using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-91876009-5DB6-3EC3-A666-C641DFD9F6AC"><apiname>RArray::AppendL()</apiname></xref>.</p></li>
+<li><p>Displays the number of objects and prints each object present in the
+array.</p></li>
+</ul> </li>
+<li id="GUID-6DE66AF3-ECD0-599C-9BE0-CE56FAAE8DEB"><p> <b>Insert elements:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Inserts the objects at a specified position using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-16727B8A-AFFB-3980-AD43-5F48FDE6636F"><apiname>RArray::InsertL()</apiname></xref>.</p></li>
+<li><p>Passes the position of the object to the second parameter of <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-16727B8A-AFFB-3980-AD43-5F48FDE6636F"><apiname>RArray::InsertL()</apiname></xref>. </p></li>
+<li><p>Inserts objects in the beginning, middle, and at the end of the array. </p></li>
+<li><p>Displays the number of objects and prints each object present in the
+array. </p></li>
+</ul> </li>
+<li id="GUID-4D341B6F-68F2-5111-9016-DF394371E9D9"><p> <b>Access elements:</b> The
+example accesses each object in the array and display into the console. </p> </li>
+<li id="GUID-1BC1A5E9-2C9D-56C3-BD68-ABF6887A6611"><p> <b>Remove elements:</b> The
+example removes an object at a specific position from the array using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-1DB4CB58-EFC8-3A83-9F37-19269C6C2C3B"><apiname>RArray::Remove()</apiname></xref>. </p> </li>
+<li id="GUID-9A8AE90E-5FBC-546E-8486-B49E9C102ADE"><p> <b>Find elements:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Finds the first object in the array that matches the specified object
+using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-3E855FCF-DF2C-3466-86F8-DD1EB6E29276"><apiname>RArray::Find()</apiname></xref>.</p></li>
+<li><p>Finds the last object in the array that matches the specified object
+using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-C6D7018E-764D-3F22-B2AC-9DD440803E29"><apiname>RArray::FindReverse()</apiname></xref>. </p></li>
+<li><p>Finds the object using a binary search technique in the array, which
+matches the specified object using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-DCB1F823-9EF6-34DB-8355-2BC2EF26FE7C"><apiname>RArray::FindInSignedKeyOrder()</apiname></xref>.
+It assumes that the existing objects within the array are in signed key order.</p></li>
+<li><p>Finds the object using a binary search technique in the array, which
+matches the specified object using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-0E388DD6-B45D-3446-8962-A0EDBD342638"><apiname>RArray::FindInUnsignedKeyOrder()</apiname></xref>.
+It assumes that the existing objects within the array are in unsigned key
+order. </p></li>
+<li><p>Finds the object using a binary search technique in the array, which
+matches the specified object using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-A18066A7-E8D1-3639-A1A3-28FC305530AC"><apiname>RArray::SpecificFindInSignedKeyOrder()</apiname></xref>.
+It passes the mode as the second parameter of this API to find the first,
+last, or any match in case of multiple matches. It assumes that the existing
+objects within the array are in signed key order.</p></li>
+<li><p>Finds the object using a binary search technique in the array, which
+matches the specified object using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-A2A443D0-0BC5-3918-8F4D-02EE8631DFA5"><apiname>RArray::SpecificFindInUnsignedKeyOrder()</apiname></xref>.
+It passes the mode as the second parameter of this API to find the first,
+last, or any match in case of multiple matches. It assumes that the existing
+objects within the array are in unsigned key order.</p></li>
+</ul> </li>
+<li id="GUID-BCE082EF-B079-5CCD-A05D-E75673D41F6A"><p> <b>Sort elements:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Constructs two arrays of 64-bit signed integer type objects. </p></li>
+<li><p>Appends random objects to the first array using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-B765D192-0DFD-3C6C-9CC2-DF9127CCBCD1"><apiname>RArray::Append()</apiname></xref>. </p></li>
+<li><p>Inserts the data present in the first array to the second array.</p></li>
+<li><p>Sorts the element of second array using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-1341082A-2B94-39A8-9392-C7579703448B"><apiname>RArray::sort()</apiname></xref>.</p></li>
+</ul> </li>
+<li id="GUID-0C4013C6-FF11-5EF5-997D-FC700B0EA074"><p> <b>Destroy the array:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Destroys the array using delete operator. </p></li>
+<li><p>Closes the array and removes all the memory allocated to the array
+using <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita#GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707/GUID-03B4185C-48D1-3006-850C-3FEC64624652"><apiname>RArray::Close()</apiname></xref>.</p></li>
+</ul> </li>
+</ul> <p><b>RPointerArray</b> </p> <p>This example constructs a simple dynamic
+array of pointers to objects called <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita"><apiname>RPointerArray</apiname></xref>. It is
+an efficient pointer array of fixed-length objects. The elements of this array
+are the instances of another class so this is specified as a template parameter <codeph>T</codeph>. </p> <p>This
+example shows the following operations to this array: </p> <ul>
+<li id="GUID-407A782D-D24C-57F1-9186-EA282BAED7DE"><p> <b>Append elements:</b> The
+example performs the following steps: <ul>
+<li><p>Appends the object pointers into the array using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-E68CDC4B-4F61-38CA-8B15-18316FB3E474"><apiname>RPointerArray::AppendL()</apiname></xref>.</p></li>
+<li><p>Displays the number of object pointers and prints each object pointer
+present in the array. </p></li>
+</ul> </p></li>
+<li id="GUID-F912B096-C0D2-54AB-83BC-5EF5AE27056D"><p> <b>Insert elements:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Inserts the objects pointer at a specified position using <xref href="GUID-DB067403-726B-3DCF-B1D9-F51CB2003608.dita#GUID-DB067403-726B-3DCF-B1D9-F51CB2003608/GUID-F93DF5F8-3FEF-3688-8734-CBB14E6359ED"><apiname>RpointerArray::InsertL()</apiname></xref>. </p></li>
+<li><p>Passes the position of the object pointer to the second parameter of <xref href="GUID-DB067403-726B-3DCF-B1D9-F51CB2003608.dita#GUID-DB067403-726B-3DCF-B1D9-F51CB2003608/GUID-F93DF5F8-3FEF-3688-8734-CBB14E6359ED"><apiname>RpointerArray::InsertL()</apiname></xref>. </p></li>
+<li><p>Inserts object pointer at the beginning, in the middle, and at the
+end of the array. </p></li>
+<li><p>Displays the number of object pointers and prints each object pointer
+present in the array. </p></li>
+</ul> </li>
+<li id="GUID-EA24F055-BEE4-59D3-AE73-0050D234B210"><p> <b>Access elements:</b> The
+example accesses each object pointer in the array and displays it to the console. </p> </li>
+<li id="GUID-07DEA041-3DA6-50F0-A741-B35BCE2A8F5E"><p> <b>Remove elements:</b> The
+example removes an object pointer at a specific position from the array using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-EC933901-F350-3A6E-8685-A67CA37A1E11"><apiname>RPointerArray::Remove()</apiname></xref>. </p> </li>
+<li id="GUID-FA180B99-1F67-59ED-A3D0-72301D9C8715"><p> <b>Find elements:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Finds the first object pointer in the array that matches the specified
+object using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-8A9FDFE2-36DF-3761-9954-F109772AF61A"><apiname>RPointerArray::Find()</apiname></xref>. </p></li>
+<li><p>Finds the last object pointer in the array that matches the specified
+object using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-C5A21601-1A65-3511-ABD6-A8FFD980557A"><apiname>RPointerArray::FindReverse()</apiname></xref>. </p></li>
+<li><p>Finds the object pointer in the array that matches the specified object
+pointer, using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-A481AF4B-3E62-3C1F-B5D7-8AF728FDF669"><apiname>RPointerArray::FindInAddressOrder()</apiname></xref>. It
+assumes that object pointers in the array are in address order. </p></li>
+</ul> </li>
+<li id="GUID-04A741B2-2B7B-582C-A3EB-9826D55A2E09"><p> <b>Sort elements:</b> The
+example performs the following steps: </p><ul>
+<li><p>Constructs two arrays of <codeph>TAny</codeph> pointer objects. </p></li>
+<li><p>Appends random objects to the first pointer array using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-C58AEACF-A227-365B-BFA8-90EFA488ED41"><apiname>RPointerArray::Append()</apiname></xref>. </p></li>
+<li><p>Inserts the data present in the first pointer array to the second pointer
+array. </p></li>
+<li><p>Sorts the element of the second pointer array using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-46A0EC17-43BA-33B8-B24C-7D30F5726668"><apiname>RPointerArray::sort()</apiname></xref>. </p></li>
+</ul> </li>
+<li id="GUID-2B2521B2-815E-5798-8258-76B812BA42B5"><p> <b>Destroy the array:</b> The
+example performs the following steps: </p> <ul>
+<li><p>Destroys and resets the pointer array using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-5F92DA38-9A3C-3D78-9E8B-F0341025F73C"><apiname>RPointerArray::ResetAnddestroy()</apiname></xref>. </p></li>
+<li><p>Closes the pointer array and removes all the memory allocated to the
+array using <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita#GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F/GUID-B96DA352-0983-31F3-BF46-EE30122F27B5"><apiname>RPointerArray::Close()</apiname></xref>. </p></li>
+</ul> </li>
+</ul> </section>
+<section id="GUID-232031B9-5964-45FC-A497-1FBC6FB068B1"><title>Class summary</title><p> <xref href="GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3.dita"><apiname>CArrayFixFlat </apiname></xref>  <xref href="GUID-FCE7D958-96AA-346D-8D22-0EF24B9DB7CC.dita"><apiname>CArrayPtrFlat </apiname></xref> <xref href="GUID-5BC7EAFE-FC9C-3E86-BFDC-FDE9FE086D53.dita"><apiname>CArrayVarFlat </apiname></xref>  <xref href="GUID-4D6E6B46-32B5-34AD-BD8A-84BF6B2B7C81.dita"><apiname>CArrayPakFlat </apiname></xref>  <xref href="GUID-04117018-A42A-3D49-9EA3-D1D7A7785B0A.dita"><apiname>TSwap </apiname></xref> <xref href="GUID-5BC09594-7D9F-3B3F-95B0-7828A756537B.dita"><apiname>TKeyArrayFix </apiname></xref>  <xref href="GUID-03CE0E0B-3731-338A-87E4-49B669AD4EBC.dita"><apiname>TKeyArrayVar </apiname></xref>  <xref href="GUID-F3BF9485-BA32-36A4-9B39-FC51E28F5A24.dita"><apiname>TKeyArrayPak </apiname></xref> <xref href="GUID-0756A649-486C-3CE5-9F1E-467E008A63C7.dita"><apiname>TKey </apiname></xref>  <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita"><apiname>RArray </apiname></xref>  <xref href="GUID-C028C373-CE25-3832-855E-17FB738721CF.dita"><apiname>TLinearOrder </apiname></xref>  <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita"><apiname>RPointerArray</apiname></xref>  </p></section>
+<section id="GUID-7F5416FD-580C-4CD5-8167-DB6C546B75A4"><title>Build</title> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this example. </p> <p>For
+the emulator, the example builds an executable file called <filepath>DynamicArrays.exe</filepath> in
+the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for
+CodeWarrior) directory. After launching the executable file, depending on
+the emulator you are using, you can task away from the application launcher
+or shell screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e356080_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08"><title>What are links</title><shortdesc>This topic describes the structure of links. A link is a container and an element. A link is an item that can be stored in the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>A link is a container. A link refers to another record. A link can be included in a record. </p> <p>A link is represented by the templated class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordLink&lt;T&gt;</apiname></xref>. The template parameter defines the type of record to which the link refers. </p> <fig id="GUID-0DFAC1B1-F79B-5C11-8EF3-13E70DBC5984"><image href="GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e66374_href.png" placement="inline"/></fig> <p>A link is a public data member of a class. The class defines the structure of record. This record is the 'parent' record of the linked record. For example, Symbian OS defines the class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDIAPRecord</apiname></xref> that represents an Internet Access Point (IAP) record. A set of IAP records form an IAP table. The public data members of this class are the fields and links that make the record. The following code shows part of the class definition. Some parts are omitted - this is not the complete class definition. </p> <codeblock id="GUID-AF4A223F-5A3F-53ED-B797-AB75BB80E174" xml:space="preserve">class CCDIAPRecord : public CCDRecordBase
+    {
+    public:
+        CMDBField&lt;TDesC&gt;                        iServiceType;
+        CMDBRecordLink&lt;CCDServiceRecordBase&gt;    iService;
+        CMDBField&lt;TDesC&gt;                        iBearerType;
+        CMDBRecordLink&lt;CCDBearerRecordBase&gt;     iBearer;
+        CMDBRecordLink&lt;CCDNetworkRecord&gt;        iNetwork;
+        CMDBField&lt;TUint32&gt;                      iNetworkWeighting;
+        CMDBRecordLink&lt;CCDLocationRecord&gt;       iLocation;
+        ...
+    }
+ </codeblock> <p>A <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordLink&lt;T&gt;</apiname></xref> object contains an integer. The integer is the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of the linked record in the database. </p> <p>If you have a parent record in memory, you call the <codeph>LoadL()</codeph> function on the link object <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordLink&lt;T&gt;</apiname></xref> to get the linked record into memory. You can access the linked record through the <codeph>iLinkedRecord</codeph> pointer. This pointer is a member of the <codeph>CMDBRecordLinkBase</codeph> class, but you can access this data member through the <codeph>CMDBRecordLink&lt;T&gt;</codeph> object. </p> <p>There are two cases: </p> <ul><li id="GUID-EB395834-73F0-592B-ADB0-0DB6499B534C"><p>If you know what type of record the link refers to you cast the pointer to the correct type. For example: </p> <codeblock id="GUID-A72D6DD6-31F4-5CB9-8688-810E33250DC7" xml:space="preserve">CCDDialOutISPRecord* ptrIspRecord = static_cast&lt;CCDDialOutISPRecord*&gt;(ptrSingleIAPRecord-&gt;iService.iLinkedRecord);</codeblock> <p>where <codeph>ptrSingleIAPRecord</codeph> is of type <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDIAPRecord</apiname></xref>. </p> </li> <li id="GUID-A1E77CBE-3E79-55A1-9FA2-3CFF55C9FADB"><p>If you do not know what type of record the link refers to you cast the pointer to the base class for records. You use <codeph>GetFieldByNameL()</codeph> or <codeph>GetFieldByIdLaccess()</codeph> to access the data in the linked record. For example: </p> <codeblock id="GUID-684703C6-0754-5F69-91E1-6ED1202A0895" xml:space="preserve">CCDServiceRecordBase* ptrServiceRecord = static_cast&lt;CCDServiceRecordBase*&gt;(ptrSingleIAPRecord-&gt;iService.iLinkedRecord);
+CMDBField&lt;TUint32&gt;* field; 
+
+// Find a field by its Id. In this code fragment, the field we are looking for 
+// is the bearer speed field.
+field = (CMDBField&lt;TUint32&gt;*)ptrServiceRecord-&gt;GetFieldByIdL(KCDTIdBearerSpeed);</codeblock> </li> </ul> </conbody><related-links><link href="GUID-9D56FF77-A20B-5BFB-8DE6-19CC4535DFED.dita"><linktext>Following
+                a link to another table and finding a field by Id and by name: Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795"><title>Connecting to the service discovery database</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Bluetooth services are registered to the service discovery database. </p> <section><title>How to connect to the service discovery database</title> <p>The first step in registering a service to the service discovery database is establishing a connection to the database. </p> <p><b>Basic Procedure</b> </p> <p>To use the service discovery database, a client must: </p> <ol id="GUID-094BC503-E351-513D-9EAE-5E75E93104AC"><li id="GUID-4564B0E1-5CF7-53F1-B4E7-38CB386A4E28"><p>Create a session to the database object, <xref href="GUID-0879B4D7-A6FA-382F-A124-0234BA89D33D.dita"><apiname>RSdp</apiname></xref>, and open a connection. </p> </li> <li id="GUID-BBB6AB46-AE11-5579-9426-36CF9DF26D11"><p>Create a subsession to the database object, <xref href="GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC.dita"><apiname>RSdpDatabase</apiname></xref>, and open it. A client can have multiple subsessions open if required. (Sessions and subsessions are part of Symbian OS's architecture for interprocess communication: see <xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server Overview</xref>). </p> </li> <li id="GUID-6A5DE434-5D70-54EC-9584-3E1179F1AA8A"><p>Close subsessions and sessions when they are no longer needed. </p> </li> </ol> <p><b> Connecting to the database </b> </p> <p>The following example shows how to connect to the database: </p> <ul><li id="GUID-5B6792CF-D05F-5DA6-8CAC-2694705BEEA2"><p>Create and open a session to the database </p> <codeblock id="GUID-BB8D1A05-E9D4-5252-90D6-58493545C53A" xml:space="preserve">RSdp sdp;
+User::LeaveIfError(sdp.Connect());</codeblock> </li> <li id="GUID-F962F78D-8875-517D-8DA6-5C42BAED5C50"><p>Create and open a subsession </p> <codeblock id="GUID-93C2E486-13BA-5B42-9947-A8E9D260C022" xml:space="preserve">RSdpDatabase sdpSubSession;
+User::LeaveIfError(sdpSubSession.Open(sdp));</codeblock> </li> <li id="GUID-2F7C3D26-8DA2-54F7-B2D2-061E5A1B4EEE"><p>Cleanup </p> <codeblock id="GUID-98CCF2D7-F1DC-5FD3-B4BC-0A762DF70EA1" xml:space="preserve">sdpSubSession.Close();
+sdp.Close();</codeblock> </li> </ul>   </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Database tutorials are shown below: </p> <ol id="GUID-0B5EA0D5-88F7-5E3B-A322-9DDB2632C245"><li id="GUID-B5C6757E-67DE-50E9-9823-E37F6268689A"><p> <b>Connecting to the service discovery database</b> - This document </p> </li> <li id="GUID-9AA92312-5798-596B-A690-147DC7358BBC"><p> <xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">Handling SDP attributes</xref>  </p> </li> <li id="GUID-5F8F22AB-476E-5E65-8EBE-750278B3CBD6"><p> <xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">Registering Services</xref>  </p> </li> <li id="GUID-6926A768-C9EA-594F-B81F-6CF4F79CF66C"><p> <xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">Setting service record attributes</xref>  </p> </li> <li id="GUID-68498D90-4BE3-5826-9DF1-06D790301F1C"><p> <xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP Service records and attributes</xref>  </p> </li> </ol> <p>Also refer to the <xref href="GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita">Bluetooth Service Discovery Database overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B76CF2DF-8705-5C44-BBE5-29706957578D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B76CF2DF-8705-5C44-BBE5-29706957578D"><title>functions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>functions [ {+|-}UXmtu ] [ name ... ]</userinput> </p> <p>Equivalent to <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref> <codeph>-f</codeph>. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e181268_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B798C19D-4030-564A-A208-D84738259D72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B798C19D-4030-564A-A208-D84738259D72" xml:lang="en"><title>Font Store
+Component</title><shortdesc>The Font Store is encapsulated by the Font and Bitmap Server. It
+represents all of the fonts stored as files in the file system. Font files
+may be of the native Symbian bitmap format or they may require rasterising
+into bitmaps. Font rasterisers are ECOM plug-ins to the Font Store. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The CBR package name for the Font Store component is <filepath>graphics_fntstore</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita"><linktext>Font and
+Text Services Collection</linktext></link>
+<link href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita"><linktext>Font and
+Bitmap Server Component Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B79B6DD2-40C5-591B-AF56-5ACD167C66F5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B79B6DD2-40C5-591B-AF56-5ACD167C66F5" xml:lang="en"><title>Installing
+an MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains how to install MTMs during build time to include
+them in ROM and how to install MTMs at run time on to a target phone (not
+in ROM). </p>
+<section><title>Build time</title> <p>To install an MTM during build time,
+complete the following steps: </p> <ol id="GUID-69A643BE-D84D-5799-AC9B-DE4909FC474A">
+<li id="GUID-4D566FC3-1D68-52A6-B089-20D10FDD86E4"><p>Build the MTM DLLs to
+a <filepath>\sys\bin</filepath> directory on any drive. For example, <filepath>c:\sys\bin</filepath>. </p> </li>
+<li id="GUID-1FD3BE6E-75CB-52E9-9437-1F099DE63777"><p>Build the MTM resource
+file to <filepath>resource\messaging\mtm</filepath>. </p><note> You can do
+this manually or use the mmp file syntax to export it to the <filepath>\resource\messaging\mtm</filepath> directory
+automatically at build time.</note> </li>
+</ol> <p><b>Example</b> </p> <codeblock id="GUID-90D8E09C-7F3D-5D07-8056-083A0EAC1486" xml:space="preserve">// mtm.mmp
+//
+// Copyright  2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+@file
+
+@SYMPurpose mtm.dll
+*/
+
+TARGET        mtm.dll
+TARGETTYPE    dll
+TARGETPATH    sys/bin
+
+CAPABILITY    ReadDeviceData WriteDevicedata 
+UID        0x1000008d 0x10204286
+VENDORID    0x70000001
+
+SOURCEPATH    ../src
+
+USERINCLUDE     ../inc
+SYSTEMINCLUDE    /epoc32/include 
+
+LIBRARY        euser.lib 
+LIBRARY        msgs.lib 
+LIBRARY        bafl.lib 
+LIBRARY        efsrv.lib 
+
+SOURCEPATH    .
+start resource mtm.rss
+TARGET        mtm.rsc
+TARGETPATH  resource/messaging/mtm
+end
+
+</codeblock> </section>
+<section><title>Run time</title> <p>After creating a group of MTMs, you have
+to write an MTM installation application to install and register the MTMs
+with the Message Server using the <xref href="GUID-92D6CC11-C597-5D00-AAE5-866289B7462F.dita">MTM
+resource file</xref>. A program to do this would typically be run at the end
+of installation. </p> <p><b>Procedure</b> </p> <p>To install an MTM at run
+time on to a target phone, complete the following steps: </p> <ol id="GUID-33B69DC3-8A6B-585F-BE2F-F8484CACAC4C">
+<li id="GUID-209A4F6B-05D8-5F3E-979B-B28153FD66F9"><p>Create a session with
+the Message Server using the <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref> class. </p> </li>
+<li id="GUID-ECF08244-F9C6-582D-8A90-1387D627E5B8"><p>Call <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-E6553712-78CF-366C-B72A-5B673616C1A0"><apiname>CMsvSession::InstallMtmGroup()</apiname></xref> to
+install a new group of MTMs. </p> <p> <b> Result:</b> The <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-E6553712-78CF-366C-B72A-5B673616C1A0"><apiname>CMsvSession::InstallMtmGroup()</apiname></xref> function
+notifies the Message Server about the availability of a new MTM. When this
+is done, all running client processes are also notified about the availability
+of a new MTM. </p> <codeblock id="GUID-5CEEAD15-9165-5346-99B8-FB80240438E6" xml:space="preserve">// Creating a Message Server session
+CDummyObserver ob;
+iSession=CMsvSession::OpenSyncL(ob);
+CleanupStack::PushL(iSession);
+//Install an MTM using a resource file
+iSession-&gt;InstallMtmGroup(ResourceFileName);</codeblock> </li>
+</ol> <p>To remove an MTM, call the <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-808E9D5B-9F41-3450-B48C-3312E4296E8E"><apiname>CMsvSession::DeInstallMtmGroup()</apiname></xref> function. </p> <p> <b>Result:</b> The <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-808E9D5B-9F41-3450-B48C-3312E4296E8E"><apiname>CMsvSession::DeInstallMtmGroup()</apiname></xref> function dynamically notifies the running client processes about the non-availability
+of the MTM. </p><note> The <xref href="GUID-C8FBC95B-223A-31E5-8D4C-D45B61BD078F.dita"><apiname>InstallMtmGroup()</apiname></xref> and <xref href="GUID-D32B5980-3046-31D7-A516-5556B4FED834.dita"><apiname>DeInstallMtmGroup()</apiname></xref> functions
+must be used only by an MTM installation application.</note> </section>
+<section><title>See also</title> <p><xref href="GUID-92D6CC11-C597-5D00-AAE5-866289B7462F.dita">MTM
+Resource File</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B7A40638-BA80-5175-B23D-2F3964C274A0"><title>Goals of the Comms Architecture</title><shortdesc>This topic describes the goals of the Symbian OS Comms Architecture and summarises how the architecture addresses these goals. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Symbian OS Comms Architecture is also known by other terms such as the <i>Three-Plane Comms Architecture</i> and <i>Freeway</i>. The Comms Architecture provides several framework components for generic functionality and a number of plug-in modules which plug into this framework to implement the comms protocols. </p> <p>The small number of components that make up the framework itself are referred to as "Comms Framework" components while the plug-in modules themselves are known as "Nodes" which are arranged in "Layers" within the framework. Many of the Nodes are supplied as part of Symbian OS but their plug-in nature allows some of these to be replaced with tailored modules by a device-manufacturer. </p> <p>The Comms Architecture has several goals: </p> <ul><li id="GUID-72B9693A-E2D1-560D-B640-092019245F63"><p> <xref href="GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita#GUID-B7A40638-BA80-5175-B23D-2F3964C274A0/GUID-D7936ACA-491A-545F-98CB-002F789A276A">Separation of Data and Control functions</xref>  </p> </li> <li id="GUID-F0A5DBBF-7516-54E3-8FB0-B3A2D3DC3891"><p> <xref href="GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita#GUID-B7A40638-BA80-5175-B23D-2F3964C274A0/GUID-CD056265-7468-557A-A6F6-85B13E63A238">Flexibility</xref> </p> <ul><li id="GUID-BFC6D0A0-1650-592E-91C1-48E32A4E634F"><p>no limitations in the creation of individual stacks from the available protocols </p> </li> <li id="GUID-B8E890D7-3CA9-5764-BED5-6A4632C0B998"><p>streamline the addition of new protocols </p> </li> <li id="GUID-723FCD21-A8A5-577F-BF8B-25462955DD3D"><p>support for switching between protocols depending on the current network availability </p> </li> </ul> </li> <li id="GUID-BEC4C7CB-307A-53AE-B648-C804E2C4CC83"><p>Improving <xref href="GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita#GUID-B7A40638-BA80-5175-B23D-2F3964C274A0/GUID-1BAC904D-F705-5416-A0F6-3D5FA3B10A7E">performance</xref> so that high-priority data transfers are not interrupted by lower-priority tasks. </p> </li> </ul> <p>Other requirements on the Architecture include the need to remain efficient in the use of ROM, RAM and processor resources, and to provide a high level of reliability. </p> <section id="GUID-D7936ACA-491A-545F-98CB-002F789A276A"><title>Separation of Data and Control functions</title> <p>By separating the code for the data flow and the control functions, it is possible to have each in a separate thread or even each in a separate process. This allows appropriate resources to be allocated and priority to be assigned to support Quality of Service, prioritisation of time-critical data flows and optimised plug-ins for specific protocols. </p> <p>Communication between the data and control threads, and between the layers is performed by an asynchronous messaging system known as the <i>Transport</i>. </p> <fig id="GUID-5467DE40-01FB-5D50-BB6D-866D5C425ADA"><title>
+             Separation of Data Flows and Control in the Comms Architecture 
+          </title> <image href="GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e62802_href.png" placement="inline"/></fig> <p>In fact the Comms Architecture actually divides the area marked Control above into two areas, <i>Control</i> and <i>Management</i>. This is the reason that this Comms Architecture is also known as the <i>Three-Plane Architecture</i>. In future diagrams there will be three <i>Planes</i>: Data Flow, Control, and Management. The Control Plane is often shown divided in half to indicate that the Control Plane handles both Connections and data channels within a Connection. This is described in more detail in <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita">Planes</xref>. </p> </section> <section id="GUID-CD056265-7468-557A-A6F6-85B13E63A238"><title>Flexibility </title> <p>The Comms Architecture uses the concept of multiple stacks of technologies, from high level technologies such as FTP down to lower level technologies (link layer technologies) running on GPRS or Wi-Fi. An individual <i>Stack</i> is a set of technologies which make up a communication path. A Stack in this context is a single list of technologies from the application to the physical hardware. An example of such a Stack is: HTTP over TCP over IP over GPRS, which might be used in web browsing via a subscriber's mobile network. The layered architecture allows both flexibility in the configuration of these Stacks, as well as dynamic reconfiguration of the Stacks in response to changes in the environment of the device (for example moving from a Wi-Fi to a 3G environment). The link-layer technologies are known as <i>Bearers</i> and the ability to switch a Data Flow from one bearer to another is called <i>Bearer Mobility</i>. But it is possible to have the ability to switch from one technology to another at any level in the stack providing full mobility. </p> <fig id="GUID-BE9C7C7A-DD4C-5199-81C1-E8856BA48AD6"><title>
+             Example of several potential stacks of protocols reusing the same
+             protocols. 
+          </title> <desc><p>In this example IP and TCP are used in three different stacks. A combination of these Stacks could be running concurrently. </p> </desc> <image href="GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e62848_href.png" placement="inline"/></fig> <p>Each stack requires a configuration that details how these protocols find and work with each other; the protocols themselves need to know how to talk with the other protocols. To allow flexibility, each protocol must avoid making assumptions about the protocols below or above it, and instead rely on the framework and device configuration. The framework ensures that each protocol is created and appropriately configured when required, and is attached to the protocols above and below it. </p> <p>The advent of multiple wireless technologies has allowed a device to switch between protocols depending on what is available. This is known as Freeway, and an example would be for a browser to switch from Wi-Fi to GPRS when a mobile device goes out of range of a Wi-Fi hotspot but is in range of a GPRS signal. The Comms Architecture provides for this by allowing such transitions to be defined on the device as part of the definition of the possible combinations of protocols that could make up the various Stacks. </p> <p>The figure below illustrates the scope of the Comms Architecture in Symbian OS from the point of view of an end-to-end connection. </p> <fig id="GUID-8DFF2EAE-21F7-5119-88E7-19BF2076A76F"><title>
+             The Comms Architecture shown in the scope of a complete protocol
+             stack and the end-to-end path between the applications on each device. 
+          </title> <image href="GUID-26399981-1E45-5578-851E-D234295F3B05_d0e62863_href.png" placement="inline"/></fig> </section> <section id="GUID-1BAC904D-F705-5416-A0F6-3D5FA3B10A7E"><title>Performance</title> <p>A key requirement of the Comms Architecture is the performance of data transfer. The data transfer performance can be measured in three different ways: </p> <ul><li id="GUID-02E93F2D-E249-516C-98B2-AFB9A22CCEF4"><p> <b>Throughput</b> - the amount of data transferred measured against time </p> </li> <li id="GUID-73E3B61E-C731-5BFC-9E5D-01C50FC94344"><p> <b>Latency</b> - the amount of time it takes a single element of data to move from one end of the communication route to the other </p> </li> <li id="GUID-0C8AE3B7-C9BC-56C7-9372-99657EF64E79"><p> <b>Jitter</b> - the unwanted variance in the potential delay for each item of data sent, which in turn causes data to arrive in the wrong order or for unacceptably-long pauses in the data stream . </p> </li> </ul> <p>The Comms Architecture addresses these needs by separating all control and data tasks. The control tasks are those that are involved with the creation and management of the data connections, but which are not directly involved with the transfer of data itself. The data tasks are those involved directly with the transfer of data. The control tasks are deemed as lower priority than the data tasks, and thus the data tasks are always run in preference to the control tasks. For example, if an application requests a new connection, the creation of this connection will not interrupt any existing data transfer operations. </p> <p>The Comms Architecture also improves the handling of Quality of Service resource reservation by structuring the framework around the concept of channels, with the framework then able to specify the Quality of Service parameters per channel. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B7B7F611-BCA0-498F-BEC1-16B276F680D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B7B7F611-BCA0-498F-BEC1-16B276F680D5" xml:lang="en"><title>Calling
+Symbian Asynchronous APIs in Applications</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When porting an P.I.P.S.-based C or C++ application on top of Symbian C++,
+the developer may need to make use of Symbian asynchronous APIs. If asynchronous
+APIs are made use of in an P.I.P.S. application, the application needs to
+wait for the completion of the asynchronous API. This can be done in two ways:
+ <ul>
+<li><p>Wait for the asynchronous request to complete. This can be achieved
+by making use of <codeph>User::WaitForRequest(iStatus)</codeph>; where <codeph>iStatus</codeph> is
+the <codeph>TRequestSemaphore</codeph> used by the asynchronous API. </p></li>
+<li><p>Call the asynchronous API in an active object, run an active scheduler,
+and let the active scheduler wait for the asynchronous operation to complete. </p></li>
+</ul></p>
+<p><b>The problems with these approaches are: </b></p>
+<p>The open source application would get blocked till the asynchronous operation
+completes in the first approach. In the second approach, the active scheduler
+would be running in a wait loop, checking for asynchronous API completion.
+Even in this case, the P.I.P.S. application would not be able to perform any
+other operations outside the active scheduler framework.</p>
+<p>The asynchronous APIs could be called in a separate process, and the P.I.P.S.
+application could communicate with this process by making use of the client/server
+framework of Symbian or by making use of other P.I.P.S. IPC mechanisms. However,
+making a different process for calling asynchronous APIs might pose a performance
+hit.</p>
+<p>One of the ways to solve these problems is to call the asynchronous APIs
+in a separate thread.</p>
+<p><b>Example:</b></p>
+<codeblock xml:space="preserve">class CActiveThread:  public CActive
+{
+public: 
+
+    enum TState
+    {
+    EInitialized = 0x0,
+    EDoFirst = 0x1,
+    EDoSecond = 0x2,
+    EDoThird = 0x4,
+    ECompleted = 0x8
+    };
+ 
+     // thread startup routine
+    static int StartMyThread(void* thisptr);
+    // leaving variant of the thread startup routine
+    static int StartMyThreadL(void* thisptr);
+    // Helper function to start the thread
+    void StartThread();    
+    // Do Function
+    void DoFunction(TState aState );      
+              
+    // CActive Functions
+    void RunL();
+    void DoCancel();
+    		
+    // Constructors and destructor      
+    static CActiveThread* NewL(); 
+    CActiveThread ();
+    void ConstructL();
+    ~ CActiveThread();      
+           
+private:    
+  
+    // Active Scheduler
+    CActiveSchedulerWait *iWait;          
+    // Command/State
+    TInt iState;        	    
+    TRequestStatus iThreadExitWait;	    
+    // my thread handle
+    RThread iActiveThread;    	    
+    sem_t iSem;
+};
+</codeblock>
+<p>The <codeph>StartThread</codeph> member function of <xref href="GUID-7968C6B4-3247-335A-845B-3D196E2EB14C.dita"><apiname>CActiveThread</apiname></xref> creates
+the thread which runs the active scheduler. <codeph>StartMyThread</codeph> is
+the entry point function for the new thread that starts an active scheduler
+and sets up the clean up stack. To call an asynchronous function, <codeph>DoFunction()</codeph> needs
+to be called with the corresponding state. The parent thread signals the child
+thread using the child thread’s thread request semaphore. When the thread
+request semaphore is signaled, the child thread wakes up, calls the corresponding
+asynchronous API in <codeph>RunL()</codeph> based on the <codeph>iState</codeph> and
+again goes back to the active scheduler wait loop.  </p>
+<p>To synchronize between the parent thread and the child thread, a semaphore
+can be used as shown in the following code snippet. </p>
+<codeblock xml:space="preserve">CActiveThread* CActiveThread::NewL()
+{
+CActiveThread* self = new (ELeave) CActiveThread();
+self-&gt;ConstructL();
+return self;
+}
+     
+CActiveThread::CActiveThread():CActive(EPriorityStandard),iState(EInitialized)
+{       
+}
+
+void CActiveThread::ConstructL()
+{  
+// semaphore for Synching
+sem_init(&amp;iSem,0,0);  
+}
+     
+void CActiveThread::StartThread()
+{       
+//Create Thread 
+TInt err = iActiveThread.Create( KThreadName(),&amp;CActiveThread::StartMyThread, KDefaultStackSize, NULL, (TAny*)this );
+iActiveThread.Logon( iThreadExitWait );
+iActiveThread.Resume();
+sem_wait(&amp;iSem );    
+}
+ 
+int CActiveThread::StartMyThread( void* ptr )
+{
+CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
+CActiveScheduler::Install(scheduler);     
+CTrapCleanup* pCleanup = CTrapCleanup::New();
+TRAPD(err, StartMyThreadL(ptr));        
+}
+ 
+int CActiveThread::StartMyThreadL( void* ptr )
+{        
+CActiveThread *thisptr = (CActiveThread*)ptr;    
+CActiveScheduler::Add(thisptr);
+thisptr-&gt;iWait = new (ELeave) CActiveSchedulerWait();	    
+thisptr-&gt;iState = EInitialized;
+thisptr-&gt;iStatus = KRequestPending;
+thisptr-&gt;SetActive();
+sem_post( &amp;(thisptr-&gt;iSem ));    
+thisptr-&gt;iWait-&gt;Start();   
+}
+
+ void CActiveThread::RunL()
+ {
+ switch ( iState )
+     {
+     case  EDoFirst:
+     // Call 1st asynchronous function
+     break;
+     
+     case EDoSecond:
+     // Call 2nd asynchronous function
+     break;
+      
+     case EDoThird:
+     // Call 3rd asynchronous function
+     break;
+     
+     case ECompleted:
+     iWait-&gt;AsyncStop();    
+     return;			
+     }
+	
+iStatus = KRequestPending;
+SetActive();
+// wake up the waiting thread
+sem_post(&amp;iSem);
+}
+
+void CActiveThread::DoCancel()
+{    
+}
+
+void CActiveThread::DoFunction(TState aState )
+{
+iState = aState;
+TRequestStatus *reqPtr = &amp;iStatus;
+iActiveThread.RequestComplete( reqPtr, KErrNone );
+sem_wait(&amp;iSem);
+}    
+ 
+CActiveThread::~CActiveThread()
+{  
+if ( iState != EInitialized )
+    {
+    iState = ECompleted;
+    TRequestStatus *reqPtr = &amp;iStatus;	
+    iActiveThread.RequestComplete( reqPtr, KErrNone ); 
+    User::WaitForRequest( iThreadExitWait);
+    }    
+sem_destroy(&amp;iSem);
+}
+</codeblock>
+<p><b>Using <xref href="GUID-7968C6B4-3247-335A-845B-3D196E2EB14C.dita"><apiname>CActiveThread</apiname></xref>:</b></p>
+<codeblock xml:space="preserve">iMyAsyncIf = CActiveThread::NewL();   
+iMyAsyncIf-&gt;StartThread();    
+iMyAsyncIf-&gt;DoFunction(EDoFirst);
+</codeblock>
+<p><b>Limitations: </b></p>
+<p>In this approach, only the parent thread communicates with the child thread.
+There is no way for the child thread to communicate with the parent thread.
+ </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2"><title>Architecture</title><shortdesc>This topic describes the architecture of the Root Server and the C32exe process.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <fig id="GUID-0C913075-CD53-5834-8F3F-077AA8556C4B"><title>Figure 1 - The architecture of Root Server and
+      the C32exe process</title> <image href="GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e93852_href.png" placement="inline"/></fig> <p>Figure 1 shows that the Root Server is a thread in the C32 process. The Root Server provider a Client library which other applications can use to request services of the Root Server. This client library is the only interaction the Root Server has outside the C32 process.</p> <p>The Root Server contains the functionality to manage the MBufs and Bindings of the C32 process. The Root Server creates Comms Provider Modules within the C32 process only. These Comms Provider Modules may have client libraries outside the C32 process. For example, the Socket Server Comms Provider Module loads <filepath>esocksvr.dll</filepath>. The <codeph>esocksvr</codeph> DLL has a client library <filepath>esock.lib</filepath> which applications use to request services from the Socket Server.</p> <p>Figure 2 shows the C32 process and Root Server with some example Comms Provider Modules and the Comms Configurator using the Root Server client API.</p> <fig id="GUID-4FC93F03-ABE7-5519-A665-32C968AA66C8"><title>Figure 2 - Comms Process with example CPMs
+      loaded</title> <image href="GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e93876_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0"><title>ANALYZE Command</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This guide gives details of how to use the ANALYZE command to help the optimizer. </p> <section><title>Introduction</title> <p>The ANALYZE command is used to provide the query optimizer with statistical information about the distribution of values in a database so that it can make better decisions about which indexes to use. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-3C9732D5-8F18-5835-A7D5-1D17B870E439"><title>Use the ANALYZE Command to Help the Optimizer</title> <p>A big part of the job of the SQL compiler is to choose which of many implementation options should be used for a particular SQL statement. </p> <p>Often a table will have two or more indexes and the optimizer will need to choose which one of those indexes to use. Or the optimizer will have to decide between using an index to implement the WHERE clause or the ORDER BY clause. For a join, the optimizer has to pick an appropriate order for the table in the join. And so forth. </p> <p>By default, the only information the optimizer has to go on when trying to choose between two or more indexes is the database schema. In many cases the schema alone is not sufficient to make a wise choice. Suppose, for example, you have a table with two indexes: </p> <codeblock id="GUID-2DE5BC4C-0A22-575F-B1FF-C0B47A0421AB" xml:space="preserve">
+CREATE TABLE demo318(a,b,c,data);
+CREATE INDEX idx318a ON demo381(a);
+CREATE INDEX idx318b ON demo381(b);
+</codeblock> <p>And further suppose SQLite is trying to compile a statement such as the following: </p> <codeblock id="GUID-F0AA8C8F-B6F8-5F50-8AB8-7DE583FDF4F6" xml:space="preserve">
+SELECT data FROM demo318 WHERE a=0 AND b=11;
+</codeblock> <p>The optimizer has to decide whether it should use idx318a with the “a=5” term of the WHERE clause or if it should use idx318b with the “b=11” term. </p> <p>Without additional information, the two approaches are equivalent and so the choice is arbitrary. But the choice of indexes might have a big impact on performance. </p> <p>Suppose that the demo318 table contains one million rows of which 55% have a=0, 40% have a=1, and the rest have a=2 or a=3. If the idx381a index is chosen, it will only narrow down the set of candidate rows by half. In this situation you are unlikely to notice any performance gain at all. In fact, in this extreme case, using the index is likely to make the query slower! </p> <p>On the other hand, let us assume that there are never more than 2 or 3 rows with the same value for column b. In this case using index idx381b allows us to reduce the set of candidate rows from one million to 2 or 3 which will yield a huge speed improvement. </p> <p>So clearly, in this example we hope that the optimizer chooses index idx318b. But without knowledge of the table contents and the statistical distributions of values for the “a” and “b” columns, the optimizer has no way of knowing which of the idx318a and idx318b indexes will work better. </p> <p>The ANALYZE command is used to provide the query optimizer with statistical information about the distribution of values in a database so that it can make better decisions about which indexes to use. </p> <p>When you run the ANALYZE command, SQLite creates a special table named SQLITE_STAT1. It then reads the entire database, gathers statistics and puts those statistics in the SQLITE_STAT1 table so that the optimizer can find them. ANALYZE is a relatively slow operation, since it has to read every single row of every single table in your database. </p> <p>The statistical information generated by ANALYZE is not kept up-to-date by subsequent changes to the database. But many databases have a relatively constant statistical profile so running ANALYZE once and using the same statistical profile forever thereafter is often sufficient. </p> <p>For embedded applications, you can often get by without ever having to run ANALYZE on a real database on the embedded device. Instead, generate a template database that contains typical data for your application and then run ANALYZE on that database on a developer workstation. Then just copy the content of the resulting SQLITE_STAT1 table over to the embedded device. </p> <p>The SQLITE_STAT1 table is special in that you cannot CREATE or DROP it, but you can still SELECT, DELETE, and UPDATE the SQLITE_STAT1 table. So to create the SQLITE_STAT1 table on the embedded device, just run ANALYZE when the database is empty. That will take virtually no time and will leave you with an empty SQLITE_STAT1 table. Then copy the content of the SQLITE_STAT1 table that was created on the developer workstation into the database on the embedded device and the optimizer will begin using it just as if it had been created locally. </p> <p>There is one entry in the SQLITE_STAT1 table for each index in your schema. Each entry contains the name of the table being indexed, the name of the index itself, and a string composed of two or more integers separated by spaces. These integers are the statistics that the ANALYZE command collects for each index. </p> <p>The first integer is the total number of entries in the table. The second integer is the average number of rows in a result from a query that had an equality constraint on the first term of the index. The third integer (if there is one) is the average number of rows that would result if the index were used with equality constraints on the first two terms of the index. And so forth for as many terms as there are in the index. </p> <p>The smaller the second and subsequent integers are, the more selective an index is. And the more selective the index is, the fewer rows have to be processed when using that index. So the optimizer tries to use indexes with small second and subsequent numbers. </p> <p>The details are complex and do not really add any understanding to what is going on. The key point is that the second and subsequent integers in the SQLITE_STAT1 table are a measure of the selectivity of an index and that smaller numbers are better. </p> <p>The statistics gathered by the ANALYZE command reflect the state of the database at a single point in time. While making the final performance tweaks on an application, some developers may want to adjust these statistics manually to better reflect the kinds of data they expect to encounter in the field. This is easy to do. The SQLITE_STAT1 table is readable and writable using ordinary SQL statements. You are free to adjust or modify the statistics in anyway that seems to performance benefit. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link><linktext/></link><link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e93852_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41"><title>Declaring a Window Server Event-Handling Class</title><shortdesc>The following example demonstrates how to declare an active object Window Server event handling class. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <p>The steps are: </p> <ul><li id="GUID-D311D61A-A40F-5202-B087-59A315D61015"><p>Provide a <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita#GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F/GUID-5D018F25-5173-36C1-A0B9-5C3A33211C5D"><apiname>CActive::RunL()</apiname></xref> function to handle the completion of an asynchronous request—that is, the event being received. </p> </li> <li id="GUID-62FE072C-7BAC-539E-BDF8-061E319DAB66"><p>Provide a <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita#GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F/GUID-4396079C-A0C9-3F40-82FD-1F47ABFFD511"><apiname>CActive::DoCancel()</apiname></xref> function to implement a cancellation request. </p> </li> <li id="GUID-0A86A321-0DDC-52EF-85C1-8099B1242C50"><p>Provide a function, here called <codeph>IssueRequest()</codeph>, to issue a request to the Window Server for events. </p> </li> <li id="GUID-F2970459-02CF-559F-B096-3620065F0089"><p>Create a <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent</apiname></xref> object to store the events. </p> </li> </ul> <codeblock id="GUID-2157B256-BC10-58D5-80F2-BA4FCF01BC9F" xml:space="preserve">/* An active object that wraps a Window Server session.
+   An event being received causes RunL() to be called,
+   where the event is processed. */
+
+class CExampleWsClient : public CActive
+    {
+public:
+ ...
+
+    // Active object protocol
+    void RunL ();
+    void DoCancel();
+
+    // Issue request to Window Server for events
+    IssueRequest();
+
+private:
+
+    // Access to Window Server session 
+    RWsSession&amp; iWs;
+
+    // Access to screen device 
+    CWsScreenDevice&amp; iScreen;
+
+    // Window server general event
+    TWsEvent iWsEvent;
+    };</codeblock> <section><title>Issuing a request to the Window Server</title> <p>Once the active object has been constructed, a request can be issued. In the following code fragment, the active object provides the function <codeph>IssueRequest()</codeph> to invoke the encapsulated event request function. Pass the a <codeph>TRequestStatus</codeph> object, <codeph>iStatus</codeph>, to the <codeph>EventReady()</codeph> function to request Window Server events from the <codeph>iWs</codeph> Window Server session. </p> <p>Use the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita#GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F/GUID-89083923-C044-3C7A-9FF8-6E5338533271"><apiname>CActive::SetActive()</apiname></xref> function, to indicate that the active object is currently active. </p> <codeblock id="GUID-0C12A024-2FCF-51BF-B477-1EFFD1CFAF03" xml:space="preserve">/* Request Window Server events */
+void CExampleWsClient::IssueRequest()
+    {
+    iWs.EventReady(&amp;iStatus;); // request an event
+    SetActive(); // so we're now active
+    }</codeblock> </section> </conbody><related-links><link href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita"><linktext>Window Server Client-Side Events
+                Overview</linktext> </link> <link href="GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7.dita"><linktext>General Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B80ADD0D-2834-4478-A4AD-1FEBC0112A43.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B80ADD0D-2834-4478-A4AD-1FEBC0112A43" xml:lang="en"><title>Stopping
+device vibra</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>StopVibra()</codeph> call interrupts immediately
+the device vibration that was started with the <codeph>StartVibraL()</codeph> method.</p><p>The
+following code snippet demonstrates how to stop the vibration feature:</p><codeblock xml:space="preserve">iVibra-&gt;StopVibraL();</codeblock></context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e177877_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B82829FB-1F3D-53C9-8E3B-E9F8E3820E24.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B82829FB-1F3D-53C9-8E3B-E9F8E3820E24"><title>unsetopt</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>unsetopt [ {+|-}options | {+|-}o option_name ] [ name ... ] </userinput> </p> <p>Unset the options for the shell. All options specified either with flags or by <codeph>name</codeph> are unset. If no arguments are supplied, the names of all options currently unset are printed. </p> <table id="GUID-0C5D68FF-7543-54D0-A959-B635458F8962"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>The arguments are taken as patterns (which should be quoted to preserve them from being interpreted as glob patterns), and all options with names matching these patterns are unset. </p> </entry> </row> </tbody> </tgroup> </table> <p> <b> Note</b>: For information about the options supported by the <codeph>setopt</codeph> command, refer to <xref scope="external" href="http://zsh.dotsrc.org/Doc/Release/zsh_15.html">http://zsh.dotsrc.org</xref>. Note that not all the options listed on this web page are supported by Symbian. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B82FBA26-6B34-4387-A5BC-758B74F37E5F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B82FBA26-6B34-4387-A5BC-758B74F37E5F" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B830A1F7-9220-5879-80BE-C494A4CD155B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B830A1F7-9220-5879-80BE-C494A4CD155B"><title>Handling General Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When a Window Server event is received, the active scheduler calls the <codeph>RunL()</codeph> function to handle the event. Use <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-06AA86EE-4494-3990-935A-62B9E995DAC2"><apiname>RWsSession::GetEvent()</apiname></xref> to get the event, a <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent</apiname></xref>. An event object always has an event type, a <xref href="GUID-420348F5-4A82-3780-9D27-A3E1F4780F0B.dita"><apiname>TEventCode</apiname></xref>, accessed through <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita#GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31/GUID-8FA62E05-3FE8-39B0-81ED-5FBF2D941739"><apiname>TWsEvent::Type()</apiname></xref>, and other data that is useful in handling specific types of event. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <p>The following example uses a switch statement to execute some function when the associated event type is received. </p> <codeblock id="GUID-696026F1-DA33-5AEC-894E-C09BB9EABAFE" xml:space="preserve">/*  Called by active scheduler when an event occurs
+Processes events according to their type */
+void CExampleWsClient::RunL()
+    {
+    // Get the event from the Window Server session iWs
+    iWs.GetEvent(iWsEvent);
+    // Get the event type: types are defined in TEventCode
+    TInt eventType=iWsEvent.Type();/ Process event
+    switch (eventType)
+    {
+    /* Window-group related event types */
+
+    ...
+
+    }</codeblock> </conbody><related-links><link href="GUID-7AC3477E-09C1-519A-9079-DA969B9FC4D7.dita"><linktext>General Events</linktext> </link> <link href="GUID-B7FF0B9C-3A17-5AAA-A986-7BA4F44DBD41.dita"><linktext>Declaring a
+                Window Server Event-Handling Class</linktext> </link> <link href="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita"><linktext>Processing Window-Group
+                Events</linktext> </link> <link href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita"><linktext>Processing Window Events</linktext> </link> <link href="GUID-930A3ABD-84FB-5D76-938C-79383273DAE6.dita"><linktext>Processing System Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,552 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290" xml:lang="en"><title>How
+to write controls</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Cone itself does not provide any concrete controls. Uikon and the UI variant
+libraries provide a large number of 'stock' controls for application writers.
+Application writers often need to supplement the standard set of controls
+with application specific controls of their own. These may be completely new
+controls or, more often, compound controls which contain a number of standard
+controls. </p>
+<p>This section describes how to create controls and how to integrate them
+in to the control framework. It is divided into the following sections: </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-341017B2-8CF9-5124-8D20-C75A8A51F0B7">Creating
+a control</xref>  </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-3F0E8223-2218-5C95-AFBC-D66AD1DB12A7">Window
+owning or not?</xref>  </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-795EBF51-AD26-513E-9A82-A99C629CE779">Creating
+a compound control</xref>  </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-795EBF51-AD26-513E-9A82-A99C629CE779">Size,
+position and layout</xref>  </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-351911EE-87C7-5D11-8434-BA7FD3741745">Drawing
+and refreshing</xref>  </p>
+<p> <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-FF7DB067-24AD-50C3-BF52-952F836609B0">Drawing
+backgrounds</xref>  </p>
+<p> <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-54C6A39A-CBD0-52E5-8CD0-76BE22247A54">Drawing
+text</xref>  </p>
+<p> <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-D1AED2A8-94AC-54BB-9CEB-C8C3643AFBBD">Drawing
+graphics</xref>  </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-AC723EE4-1482-59C5-9F13-CAE119C7800D">Handling
+events</xref>  </p>
+<p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-FE221E89-1817-5A73-8FBA-212FBC030766">Implementing
+the Object Provider (MOP) interface</xref>  </p>
+<section id="GUID-341017B2-8CF9-5124-8D20-C75A8A51F0B7"><title>Creating a
+control</title> <p>A control is a class which derives from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>.
+It should have a public constructor and, if any leaving function calls or
+memory allocations are required during construction, a <codeph>ConstructL()</codeph> function.
+The majority of re-useable and configurable controls have a <codeph>ConstructFromResourceL()</codeph> function
+which allows a specific instance of a control to be configured using an application's
+resource file. Obviously any memory allocated must be freed in the destructor.
+Before a control is drawn to the screen it must be activated. The <codeph>ActivateL()
+function</codeph> may be overriden to perform last-minute configuration (but
+must call the function in the base class). </p> <codeblock id="GUID-18D48E7E-9846-5CE0-BE1E-FAB723419B90" xml:space="preserve">
+Class CMyControl : public CCoeControl
+    {
+    public:
+        CMyControl() ;
+        void ConstructL(...) ;
+        // from CCoeControl
+        void ConsructFromResourceL( TResourceReader&amp; aReader ) ; 
+    private:
+        ~CMyControl() ;
+
+    // additional functions to handle events 
+    // additional functions to draw the control
+    // additional functions to determine the size, layout and position the control
+    }</codeblock> </section>
+<section id="GUID-3F0E8223-2218-5C95-AFBC-D66AD1DB12A7"><title>Window owning
+or not? </title> <p>The decision over whether to make a control window owning
+or not is usually straightforward. Each view requires a window, so the top-level
+control must be window-owning and a child of the AppUi. Below this a window
+owning control is normally only necessary where a sense of layering is required:
+for instance a pop-up window or a scrolling window. Dialogs and menus are
+window owning controls but these are normally implemented in the Uikon and
+UI variant libraries and do not require custom derivation from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>.
+Unnecessary window-owning controls should be avoided as they require more
+infrastructure, place greater demand on the Window Server and reduce performance. </p> <p>If
+a control must be window owning its window must either be created in the <codeph>ConstructL()</codeph> function
+or by the caller. The former is preferred. There are several overloads of
+the <codeph>CreateWindowL()</codeph> and <codeph>CreateBackedUpWindowL()</codeph> functions.
+Those which do not take a parent parameter create a top-level window which
+is a child of the root window. </p> <p>If a control is not window owning its <codeph>SetContainerWindowL()</codeph> function
+must be called when it is instantiated. </p> <p>If it can, the Framework will
+automatically set up the parent pointer when the window, or associated window
+relationship is established. If it cannot do this, because <codeph>CreateWindowL()</codeph> or <codeph>SetContainerWindowL()</codeph> did
+not provide a <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>, the parent pointer (and MopParent)
+may be set expicitly using <codeph>SetParent()</codeph> and <codeph>SetMopParent()</codeph>. </p> </section>
+<section id="GUID-795EBF51-AD26-513E-9A82-A99C629CE779"><title>Creating a
+compound control</title> <p>Most applications UIs are built from compound
+controls. Many custom controls are built up from stock controls and are therefore
+also compound controls. When a compound control is constructed it constructs
+its components in its <codeph>ConstructL()</codeph> function. When it receives
+commands itself, such as <codeph>ActivateL()</codeph> and <codeph>DrawNow()</codeph> it
+passes them on to each of its components. In most cases the Framework does
+much of the donkey work as long as the compound control has been constructed
+correctly. </p> <p>There are now two methods of creating and managing lodger
+controls. The first method described is the one that should be used. </p> <codeblock id="GUID-F77661F7-6A68-58DB-B875-9D957A937617" xml:space="preserve">
+void MyControl::ConstructL( ... )
+    {
+    // initialise the component array. This must be called once (subsequent calls have no effect)
+    InitComponentArrayL() ; 
+
+    // construct each component control and add it to the component array.
+    CComponent* myComponent = new (ELeave) CComponent ;
+    Components().AppendLC( myComponent ) ; // or InsertLC or InsertAfterLC().  Places item on cleanup stack.
+    myComponent-&gt;ConstructL() ;
+    myComponent-&gt;SetThisAndThatL() ;
+    CleanupStack::Pop( myComponent ) ;    
+    }</codeblock> <p>The return value of the insert and append methods is
+a <xref href="GUID-2D8BFBA2-79AC-364D-875D-E863CD4A2FE1.dita#GUID-2D8BFBA2-79AC-364D-875D-E863CD4A2FE1/GUID-AD37D86C-F9FA-3514-BFD4-7139A0B8543F"><apiname>CCoeControlArray::TCursor</apiname></xref> object which works as an iterator.
+It will remain valid when other items are inserted or deleted, or even if
+the whole array is re-ordered. </p> <p>The insert and append methods leave
+the component on the Cleanup Stack using a dedicated Cleanup Item that protects
+the parent's array as well as the component itself. </p> <p>The insert and
+append methods allow each component to be given an ID. The ID must be unique
+only within the parent so typically a compound control will have an enum listing
+each of its children's IDs. <xref href="GUID-2D8BFBA2-79AC-364D-875D-E863CD4A2FE1.dita"><apiname>CCoeControlArray</apiname></xref> , accessed
+using <codeph>CCoeControl::Components()</codeph>, has a <codeph>ControlById()</codeph> method
+to retrieve components using their IDs. </p> <p>Components in the array are,
+by default, owned by the parent and will be deleted automatically when the
+parent is deleted. The default may be overridden using <codeph>CCoeControlArray::SetControlsOwnedExternally()</codeph>.
+The setting applies to all of the components. </p> <p>Controls may be removed
+from the array using one of the <codeph>Remove()</codeph> methods. These do
+not delete. </p> <codeblock id="GUID-9F9EC327-E7DE-59B8-838B-F5052E3750D3" xml:space="preserve">
+class CCoeControlArray
+        ...
+    public:
+        IMPORT_C TInt Remove(const CCoeControl* aControl);
+        IMPORT_C CCoeControl* Remove(TCursor aRemoveAt);
+        IMPORT_C CCoeControl* RemoveById(TInt aControlId);
+        ...
+</codeblock> <p>Using the component array as described is now the approved
+method of constructing and managing compound controls. In older versions of
+Symbian OS a specific method of handling components was not provided and developers
+were obliged to design their own. Bypassing the component array is still possible.
+It is necessary to allocate and store the components (typically as member
+data) and to implement the <codeph>CountComponentControls()</codeph> and <codeph>ComponentControl()</codeph> functions
+to return the number of components and a specified component to the framework.
+The new method offers significant advantages when controls are added and removed
+dynamically or are dependant on run-time data. The new method is also integrated
+with new layout managers. </p> </section>
+<section id="GUID-7E144310-9AF4-50F1-AD8A-9F9E05D554D1"><title>Size, position
+and layout</title> <p>There are several factors which contribute to a control's
+size and position. The control itself will require a certain size in order
+to display itself (and its data) correctly. The control's container will be
+responsible for positioning the control but is also likely to be responsible
+for positioning other controls - each of which will have its own requirements.
+Additionally there are the requirements of the UI's look and feel that must
+be complied with. </p> <p>Each control is responsible for implementing its
+own <codeph>Size()</codeph> function. </p> <p>Until Symbian OS version 9.1
+it was normal to write layout code for simple and compound controls in the <codeph>SizeChanged()</codeph> function.
+This is called by the framework, as one might expect, when a control's size
+(its 'extent') is changed. From 9.1, however, Symbian OS supports the use
+of the layout manager interface (<xref href="GUID-A622B8C7-60F4-38E8-B102-14883BCBA249.dita"><apiname>MCoeLayoutManager</apiname></xref>) and
+the <codeph>SizeChanged()</codeph> function is now implemented in the base
+class. (Note that if a control's position is changed, with no size change,
+using <codeph>CCoeControl::SetPosition()</codeph> its <codeph>PositionChanged()</codeph> function
+is called and that default implementation of <codeph>PositionChanged()</codeph> is
+empty). </p> <codeblock id="GUID-53A10820-550A-52C2-AE80-D556FD77E8FA" xml:space="preserve">
+class MCoeLayoutManager
+        ...
+    protected:
+        IMPORT_C MCoeLayoutManager();
+    
+    public:
+        virtual TBool CanAttach() const = 0;
+        virtual void AttachL(CCoeControl&amp; aCompoundControl) = 0;
+        virtual void Detach(CCoeControl&amp; aCompoundControl) = 0;
+        virtual TSize CalcMinimumSize(const CCoeControl&amp; aCompoundControl) const = 0;
+        virtual void PerformLayout() = 0;
+        virtual TInt CalcTextBaselineOffset(const CCoeControl&amp; aCompoundControl, const TSize&amp; aSize) const = 0;
+        virtual void SetTextBaselineSpacing(TInt aBaselineSpacing) = 0;
+        virtual TInt TextBaselineSpacing() const = 0;
+        virtual void HandleAddedControlL(const CCoeControl&amp; aCompoundControl, const CCoeControl&amp; aAddedControl) = 0;
+        virtual void HandleRemovedControl(const CCoeControl&amp; aCompoundControl, const CCoeControl&amp; aRemovedControl) = 0;
+        virtual TInt HandleControlReplaced(const CCoeControl&amp; aOldControl, const CCoeControl&amp; aNewControl) = 0;
+        ...
+</codeblock> <p>A layout manager may be attached to a compound control. </p> <codeblock id="GUID-ACCD143C-8618-5606-B749-D7EFE5C83ACD" xml:space="preserve">
+class CCoeControl
+        ...
+    protected: 
+        IMPORT_C MCoeLayoutManager* LayoutManager() const;
+        IMPORT_C virtual void SetLayoutManagerL(MCoeLayoutManager* aLayoutManager);
+
+    public:
+        IMPORT_C virtual TBool RequestRelayout(const CCoeControl* aChildCtrl);
+        ...</codeblock> <p>The default implementations of <codeph>MinimumSize()</codeph> and <codeph>SizeChanged()</codeph> now
+use the layout manager. </p> <codeblock id="GUID-88340A33-A58C-5856-AD47-C2E1637DD45F" xml:space="preserve">
+EXPORT_C TSize CCoeControl::MinimumSize()
+    { 
+    const MCoeLayoutManager* layoutManager = LayoutManager();
+    if (layoutManager)
+        return layoutManager-&gt;CalcMinimumSize(*this);
+    else    
+        return iSize;
+    }
+
+EXPORT_C void CCoeControl::SizeChanged()
+    {
+    MCoeLayoutManager* layout = LayoutManager();
+    if (layout)
+        layout-&gt;PerformLayout();
+</codeblock> <p>The layout manager is responsible for the size and position
+of the component controls. In practice it's likely that the UI variant libraries
+will provide concrete layout managers. Application developers should use these
+as the basis for control-specific layout managers. </p> </section>
+<section id="GUID-351911EE-87C7-5D11-8434-BA7FD3741745"><title> Drawing and
+refreshing</title> <p>A fundamental requirement of most controls is that they
+are able to render themselves onto the screen. For most controls the drawing
+process involves outputting text, painting backgrounds (either plain or from
+a bitmap), drawing shapes (graphics objects) and drawing component controls. </p> <p>Screen
+drawing may be initiated by the application itself, following something within
+the application changing, or by the Window Server, due to something else in
+the system updating the screen while the application is visible. In both cases
+the control's <codeph>Draw()</codeph> function will be called automatically
+by the framework. For compound controls all of the components' <codeph>Draw()</codeph> functions
+will also be called - unless the component lies completely outside the area
+that requires redrawing. </p> <p>As a control writer you will probably have
+to implement a <codeph>Draw()</codeph> function. </p> <p>Here is the signature
+for <codeph>Draw()</codeph>: </p> <codeblock id="GUID-7A83E8B5-9673-5EBC-B628-674734A07E0F" xml:space="preserve">private:
+    void Draw( const TRect&amp; aRect ) const ;</codeblock> <p>Note that it
+is private, takes a <codeph>const TRect&amp;</codeph> as a parameter, must
+not leave and is <codeph>const</codeph>. </p> <p>It should only be called
+by the framework. Application initiated redraws should be through calls to <codeph>DrawNow()</codeph>, <codeph>DrawDeferred()</codeph> or
+custom functions for drawing smaller elements. </p> <p>The <codeph>aRect</codeph> parameter
+is the part of the control that requires drawing (refreshing). </p> <p>The
+function is <codeph>const</codeph> and non-leaving because it is intended
+to support the decoupling of drawing actions from application state. </p> </section>
+<section id="GUID-FF7DB067-24AD-50C3-BF52-952F836609B0"><title>Drawing backgrounds</title> <p>A
+control's background is typically determined by the current colour scheme
+or skin. It may be a plain colour or a bitmap. It's also possible that a control
+is to appear non-rectangular or transparent in which case some of the background
+will be the control underneath. Prior to Symbian OS 9.1 controls were required
+to clear and update their whole area and creating these effects was rather
+complex. From 9.1 controls are drawn 'backmost first'. </p> <p>Background
+drawing should be done by a dedicated background drawer - i.e. an object which
+implements the <xref href="GUID-88936D48-B801-3D9C-8A9D-3498807937CE.dita"><apiname>MCoeControlBackground</apiname></xref> interface. A background
+can be attached to a <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> using <codeph>SetBackground()</codeph> and
+is used for that control and all of its children. When a control is drawn
+the framework looks for the nearest background up the run-time hierarchy and
+calls <codeph>MCoeControlBackground::Draw()</codeph>. </p> <p>UI variant libraries
+typically provide backgrounds. They are not owned by the controls to which
+they are attached. </p> </section>
+<section id="GUID-54C6A39A-CBD0-52E5-8CD0-76BE22247A54"><title>Drawing text</title> <p>Text
+must be drawn with the correct color, font, size and direction. As with backgrounds,
+these are determined at runtime according to UI customizations. This is achieved
+by means of a Text Drawer. Note the use of the <xref href="GUID-2280260C-3A4F-3C1E-ADF2-3219ED7FE0DE.dita"><apiname>XCoeTextDrawer</apiname></xref> class.
+This is a smart pointer (note the use of the <codeph>-&gt;</codeph> operator
+to access <xref href="GUID-C8C7B785-B3CF-3488-AEB1-BE0A70F6C1F2.dita"><apiname>CCoeTextDrawerBase</apiname></xref> functions) which ensures that
+only one text drawer is allocated on the heap at a time. </p> <codeblock id="GUID-511A9CEE-F02C-5667-A334-3C61A2428F0F" xml:space="preserve">
+XCoeTextDrawer textDrawer( TextDrawer() );
+textDrawer-&gt;SetAlignment(iAlignment); 
+textDrawer-&gt;SetMargins(iMargin);
+textDrawer-&gt;SetLineGapInPixels(iGapBetweenLines);
+textDrawer.SetClipRect(aRect); // have to use . [dot] operator for SetClipRect() as not CCoeTextDrawerBase function.
+
+textDrawer.DrawText(gc, *iTextToDraw, Rect(), *Font());
+</codeblock> <p>Text drawers are typically provided by the UI variant library
+or skin manager. Controls within the run-time hierarchy can set the text drawer
+for their children by overriding <codeph>GetTextDrawer()</codeph>. </p> <p>Note
+that the text drawer expects text to be passed as a <xref href="GUID-07D86324-ED54-3FCD-B301-53B7A6E04AE3.dita"><apiname>TBidiText</apiname></xref> rather
+than a descriptor. Controls should store all display text in <xref href="GUID-07D86324-ED54-3FCD-B301-53B7A6E04AE3.dita"><apiname>TBidiText</apiname></xref> objects.
+Application writers should consider the implications of right-to-left layouts
+for languages such as Hebrew and Arabic. </p> <p>A control's <codeph>GetTextDrawer()</codeph> function
+might look something like this. It checks on the current state of the control
+(<codeph>IsDimmed()</codeph>) and passes the call on to a skin manager. </p> <codeblock id="GUID-155AD8EC-17DD-5155-BE20-23246A33695C" xml:space="preserve">
+EXPORT_C void CMyButtonControl::GetTextDrawer(CCoeTextDrawerBase*&amp; aTextDrawer, const CCoeControl* aDrawingControl, TInt /*aKey*/) const
+    {
+    const TInt textDrawerIndex = (IsDimmed() ? EButtonTextDimmed : EButtonText);
+
+    SkinManager::GetTextDrawer(aTextDrawer, KSkinUidButton, textDrawerIndex, aDrawingControl);
+    }
+</codeblock> <p>If the control is drawing text on its own graphics (and does
+not care about the text drawer of its parents) it can just create an <xref href="GUID-2280260C-3A4F-3C1E-ADF2-3219ED7FE0DE.dita"><apiname>XCoeTextDrawer</apiname></xref> object
+on the stack in its <codeph>Draw()</codeph> method and initiate it from the
+skin that it is currently using to draw its graphics, using the <codeph>CSkinPatch::TextDrawer()</codeph> method,
+like this: </p> <codeblock id="GUID-3DFDBF27-8744-5283-AC7B-EC512EEEBB7D" xml:space="preserve">
+const CSkinPatch&amp; skin = SkinManager::SkinPatch(KSomeSkinUid, KSomeSkinIndex, this);
+
+skin.DrawBitmap(gc, Rect(), aRect);
+XCoeTextDrawer textDrawer( skin.TextDrawer(KSomeSkinUid, ESomeSkinTextDimmed, this) );
+
+const CFont&amp; font = ScreenFont(TCoeFont::NormalFont);
+textDrawer.DrawText(gc, iText, rect, font);
+</codeblock> <p>The example above also illustrates how to retrieve the correct
+font. <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> objects must not be stored in control member
+data as they must change when the control's zoom state changes. Instead, a <xref href="GUID-463C1928-878D-3B06-ABFD-178BE1BAD776.dita"><apiname>TCoeFont</apiname></xref> that
+represents a font's size (logical or absolute in pixels) and style (plain,
+bold, italic, subscript, or superscript) should be used. </p> <codeblock id="GUID-864A57DB-BCDA-50B6-B876-9EF62CFB27C6" xml:space="preserve">
+class TCoeFont 
+        ...
+    public: 
+        IMPORT_C TCoeFont(TLogicalSize aSize, TInt aStyle, TInt aFlags = ENoFlags); 
+        IMPORT_C TCoeFont(TInt aHeightInPixels, TInt aStyle, TInt aFlags = ENoFlags); 
+        IMPORT_C TCoeFont(const TCoeFont&amp; aFont);
+        IMPORT_C TCoeFont();
+        ...</codeblock> <p>By creating a <xref href="GUID-463C1928-878D-3B06-ABFD-178BE1BAD776.dita"><apiname>TCoeFont</apiname></xref> object
+describing the properties of the desired font, a <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> object
+reference (needed to actually draw the text) can be fetched from the <xref href="GUID-372CDE49-2148-3A21-8EA3-8D4656548C23.dita"><apiname>CCoeFontProvider</apiname></xref>.
+A font provider can be attached to any <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> and
+will keep information about the typeface used by that control and all controls
+below. A default font provider is attached to the <xref href="GUID-12A9389D-363B-3F54-857F-89EE0EDCDF40.dita"><apiname>CCoeEnv</apiname></xref>. </p> <codeblock id="GUID-C46BEB52-33DB-564B-9A64-53763C7CD226" xml:space="preserve">
+class CCoeControl
+        ...
+    public:
+        IMPORT_C const CCoeFontProvider&amp; FindFontProvider() const;
+        IMPORT_C void SetFontProviderL(const CCoeFontProvider&amp; aFontProvider);
+        ...
+        </codeblock> <p>To get hold of the <xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref> object
+a <codeph>Draw()</codeph> method can be implemented like this: </p> <codeblock id="GUID-45292362-1E39-59B0-AC7F-14C98592F059" xml:space="preserve">
+void CMyControl::Draw(const TRect&amp; aRect)
+    {
+    const CCoeFontProvider&amp; fontProvider = FindFontProvider();
+    const CFont&amp; font = fontProvider.Font(TCoeFont::LegendFont(), AccumulatedZoom());
+
+    XCoeTextDrawer textDrawer( TextDrawer() );
+    textDrawer-&gt;SetAlignment(EHCenterVCenter);
+    textDrawer.DrawText(gc, iText, rect, font);
+    }
+</codeblock> <p>For convenience there’s a <codeph>CCoeControl::ScreenFont()</codeph> method
+that locates the font provider and calls it with the control’s accumulated
+zoom: </p> <codeblock id="GUID-5974F900-84B7-5262-8428-88797911F94A" xml:space="preserve">
+class CCoeControl
+        ...
+    protected:
+        IMPORT_C const CFont&amp; ScreenFont(const TCoeFont&amp; aFont) const;
+        ...
+</codeblock> </section>
+<section id="GUID-D1AED2A8-94AC-54BB-9CEB-C8C3643AFBBD"><title>Drawing graphics</title><p>Controls
+draw graphics objects - lines, rectangles, shapes and bitmaps to a <keyword>graphics
+context</keyword>. The graphics context is provided by the Window Server and
+represents a group of settings appropriate for the physical device that is
+ultimately being drawn to. In most cases the device is a screen and a graphics
+context should be obtained using <codeph>CCoeControl::SystemGc()</codeph>. <codeph>CCoeControl::SystemGc()</codeph> gets
+the current graphics context from the run-time hierarchy. Controls in the
+hierarchy may override graphics context settings which will then be passed
+on to their children. <i>Controls should not get their graphics context directly
+from CCoeEnv as to do so would bypass the hierarchy</i>. </p> <codeblock id="GUID-DC2B7A84-BA93-5AE0-BABA-9CF6B156A54E" xml:space="preserve">
+void CMyControl::Draw( const TRect&amp; aRect )
+    {
+    CWindowGc&amp; gc = SystemGc() ; // get gc from run time hierarchy
+    TRect rect = TRect( Size() ) ;
+    if ( IsBlanked() )
+        {
+        // blank out the entire control
+        gc.SetPenStyle( CGraphicsContext::ENullPen ) ;
+        gc.SetBrushStyle( CGraphicsContext::ESolidBrush ) ;
+        TRgb blankColor = BlankingColor() ;
+        gc.SetBrushColor( blankColor ) ;
+        gc.DrawRect( rect ) ;
+        }
+    else
+        {
+        // draw masked bitmap in the centre of the control 
+        // The parent will draw the background 
+        TInt id = BitMapId() ;
+
+        TInt x = Size().iWidth - iBitmap[id]-&gt;SizeInPixels().iWidth ;
+        TInt y = Size().iHeight - iBitmap[id]-&gt;SizeInPixels().iHeight ;
+
+        TPoint pos = Rect().iTl ;
+        pos.iX = pos.iX + ( x / 2 ) ;
+        pos.iY = pos.iY + ( y / 2 ) ;
+
+        gc.BitBltMasked( pos, iBitmap[id], rect, iMaskBitmap, ETrue ) ;
+        }
+    }</codeblock> <p>Before a graphics context can be used it must be activated.
+After use it must be deactivated. Activation and deactivation are done automatically
+by the framework in <codeph>DrawNow()</codeph>, <codeph>DrawDeferred()</codeph> and <codeph>HandleRedrawEvent()</codeph> but
+must be done explicitly for any other application initiated drawing by calling <codeph>ActivateGc()</codeph> and <codeph>DeactivateGc()</codeph>. </p> <p>Controls may implement partial drawing to speed up performance. The <codeph>Draw()</codeph> function
+may be split into sub functions: <codeph>DrawThis()</codeph>, <codeph>DrawThat()</codeph>, <codeph>DrawTheOther()</codeph>.
+Each of these requires a corresponding <codeph>DrawThisNow()</codeph> and/or <codeph>DrawThisDeferred()</codeph> function. </p> <codeblock id="GUID-EDC0D6F1-61BC-552F-B56D-C32148ADECA3" xml:space="preserve">
+CMyControl::Draw()
+    {
+    DrawThis() ;
+    DrawThat() ;
+    DrawTheOther() ;
+    }</codeblock> <codeblock id="GUID-E026186D-7B55-5AB5-9391-8587E3510D6D" xml:space="preserve">
+CMyControl::DrawThisNow()
+    {
+    ActivateGc() ;
+    DrawThis() ;
+    DeactivateGc() ;
+    }</codeblock> </section>
+<section id="GUID-AC723EE4-1482-59C5-9F13-CAE119C7800D"><title>Handling events </title> <p>The
+Control Framework supports user interaction in two ways: key-press events
+and pointer events. Both types of event arrive through the Window Server though
+they each arrive in a slightly different way. Both are closely related to
+the concept of 'focus' and the location of the cursor. </p> <p><b>Handling
+key events </b> </p> <p>Key events are delivered to the AppUi. The Window
+Server channels them through the root window of its current window group which
+maps to the AppUi foreground application. The AppUi offers each key event
+to each of the controls on its control stack in priority order until one of
+the controls 'consumes' it. </p> <p>To receive key events a control must implement <codeph>CCoeControl::OfferKeyEventL()</codeph>.
+If it handles the event it must return <codeph>EKeyWasConsumed</codeph>: If
+it doesn't it must return <codeph>EKeyWasNotConsumed</codeph> so that the
+next control on the stack receives it. </p> <codeblock id="GUID-448E9DF8-9D63-5BA4-94A7-4FB4B96A6DEA" xml:space="preserve">
+TKeyResponse CMyControl::OfferKeyEventL( const TKeyEvent&amp; aKeyEvent, TEventCode aType)
+    {
+    TKeyResponse returnValue = EKeyWasConsumed ;
+    switch( aKeyEvent.iCode ) 
+        {
+        case EKeyEnter :
+            // do stuff
+            break ;
+        case EKeyEscape :
+            // do stuff :
+            break ;
+
+            ...
+                
+        default :
+            // did not recognise key event
+            returnValue = EKeyWasNotConsumed ;
+            break ;
+        }
+    return returnValue ;
+    }</codeblock> <p>The handling of key events will depend on the design
+and purpose of the control itself. Compound controls might need to keep track
+of an input <b>focus</b>, or <b>cursor</b>, and to pass key events amongst
+its lodgers. Input into one lodger might have an effect on another - pressing
+a navigation key might cause one control to lose the highlight and another
+to gain it, pressing a number key might cause a text editor to grow which
+might, in turn, require all of the components below it to shuffle downwards
+and a scroll bar to become visible (which might also require some controls
+to be laid out differently). </p> <p><b>Handling pointer events </b> </p> <p>Pointer
+events are slightly different as the position of the pointer, rather than
+of the focus, is significant. The Window Server passes a pointer event to
+the top-most visible window at the point of contact. The Framework uses the
+functions <codeph>ProcessPointerEventL()</codeph> and <codeph>HandlePointerEventL()</codeph> to
+work down the hierarchy. The Framework also uses the <xref href="GUID-A2BF9AE8-CF42-3D94-8763-66DB11EDDA46.dita"><apiname>MCoeControlObserver</apiname></xref> and
+focussing mechanisms to inform the observer of the controls that will be losing
+and gaining the focus. </p> <p><b>Using the Control Observer Interface</b></p><p>The
+Control Framework facilitates this type of relationship between a container
+and its lodgers with the <codeph>MCoeControlObserver</codeph> interface. Typically
+the container implements the interface and becomes the observer for each lodger
+that can receive user input (focus). There is only one function in <codeph>MCoeControlObserver</codeph>:</p><codeblock xml:space="preserve">virtual void HandleControlEventL( CCoeControl *aControl, TCoeEvent aEventType ) = 0 ;</codeblock><p>and it is called when an observed control calls</p><codeblock xml:space="preserve">void CCoeControl::ReportEvent( MCoeControlObserver::TCoeEvent aEvent ) ;</codeblock><p>A control can have only one observer (or none) so <codeph>ReportEvent()</codeph> does
+not need to specify an observer. An observer may observe any number of controls
+so <codeph>HandleControlEventL()</codeph> takes the observed control as a
+parameter. The other piece of information passed to the observer is a <codeph>TCoeEvent</codeph>.</p><codeblock xml:space="preserve">enum TCoeEvent
+    {
+    EEventRequestExit,
+    EEventRequestCancel,
+    EEventRequestFocus,
+    EEventPrepareFocusTransition,
+    EEventStateChanged,
+    EEventInteractionRefused
+	 };</codeblock><p><codeph>CCoeControl</codeph> also provides <codeph>IsFocused()</codeph>, <codeph>SetFocused()</codeph> and <codeph>IsNonFocussing()</codeph>. Note that Framework does not attempt to ensure exclusivity of focus, nor
+does it give any visible indication of focus. It is up to the application
+developer to ensure that only one control has the focus at a time, that the
+focus is correctly transferred between controls, that only appropriate controls
+receive the focus and that the focus is visible at all times.</p><codeblock xml:space="preserve">void CContainer::HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType)
+    {
+	 switch (aEventType)
+        {
+		   case EEventRequestFocus:
+			    {
+			    if( !(aControl-&gt;IsFocussed()) )
+				     {
+				     aControl-&gt;SetFocus( ETrue ) ;
+				     // remove focus from other controls
+				     for ( Tint ii = 0 ; ii &lt; CountComponentControls() ; ii++ ) 
+                     {
+					       CCoeControl* ctl = ComponentControl( ii ) ;
+					       if( ( ctl != aControl ) &amp;&amp; !( ctl-&gt;IsNonFocussing() ) )
+						        {
+						        aControl-&gt;SetFocus( EFalse ) ;
+						        }
+					       }
+				      }
+			     }
+			     break;
+	           ...
+		     }
+	    }</codeblock> <p>Control developers may implement <codeph>HandlePointerEventL()</codeph>,
+which is a virtual function, to perform pointer event functionality. The implementation
+must, however, call the base class function. </p> <p>Controls may modify their
+pointer area, possibly if they appear non-rectangular or overlap. To do so
+requires the addition of a hit test which describes a hit-test region. A hit-test
+region may cover all or part of one or more controls. A hit for a control
+is registered in the area covered by both the control and its associated hit
+test. </p> <p>The diagram below represents three controls, each of which is
+rectangular but which appears on the screen as a non-rectangular bitmap. Only
+a hit on a bitmap area should register. This could be achieved by defining
+a single hit-test region in the shape (and position) of the three blue areas
+and associating it with each of the controls. The class that implements the
+hit-test region must implement the MCoeControlHitTest interface. </p> <fig id="GUID-5C856964-8553-543A-B7E2-8D5DCA9BF52C">
+<title>              Hit-test region example            </title>
+<image href="GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e13986_href.png" placement="inline"/>
+</fig> <codeblock id="GUID-D2AF9CEB-3072-5239-A157-D19852076CEF" xml:space="preserve">
+class MCoeControlHitTest
+        ...
+    public:
+        virtual TBool HitRegionContains( const TPoint&amp; aPoint, const CCoeControl&amp; aControl ) const = 0;
+</codeblock> <p>A hit test is associated with a control using <codeph>CCoeControl::SetHitText()</codeph>.
+The base class implementation of <codeph>HandlePointerEventL()</codeph> performs
+the following test: </p> <codeblock id="GUID-35C26C5B-A19A-528A-B5BE-B8177F81B05D" xml:space="preserve">
+    ...
+    const MCoeControlHitTest* hitTest = ctrl-&gt;HitTest() ;
+    if( hitTest )
+        {
+        if( hitTest-&gt;HitRegionContains( aPointerEvent.iPosition, *ctrl ) &amp;&amp;
+                        ctrl-&gt;Rect().Contains( aPointerEvent.iPosition ) )</codeblock> <p>Note
+that this is performed by a container when deciding which lodger to pass the
+event onto. This snippet also illustrates how a control can find where (<codeph>iPosition</codeph>)
+the pointer event actually occurred. </p> <p>Pointer support includes dragging
+&amp; grabbing. See <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref>. </p> </section>
+<section id="GUID-FE221E89-1817-5A73-8FBA-212FBC030766"><title>Implementing
+the Object Provider (MOP) interface</title> <p>The <xref href="GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita">Object
+Provider mechanism</xref> exists to allow a control to call a function on
+another control in the hierarchy for which it does not have a reference. It
+simply calls <codeph>MopGetObject()</codeph> specifying the interface containing
+the function. It may also call <codeph>MopGetObjectNoChaining()</codeph> to
+inquire of a specific object whether it supports the requested interface. </p> <p>Only
+controls which wish to supply an interface require customisation. In order
+to be identifiable an interface must have an associated UID. The following
+code samples show how <xref href="GUID-0DC77F9B-718A-31DF-B076-3C3F83378BF4.dita"><apiname>CEikAlignedControl</apiname></xref> implements and
+supplies <xref href="GUID-65610725-E873-3F8D-AD60-FC0AD726E0C5.dita"><apiname>MEikAlignedControl</apiname></xref>: </p> <codeblock id="GUID-9926598F-163B-5ACF-B320-66B43D331E1A" xml:space="preserve">
+class MEikAlignedControl
+        ...
+    public:
+        DECLARE_TYPE_ID( 0x10A3D51B )  // Symbian allocated UID identifies this interface
+        ...
+</codeblock> <codeblock id="GUID-1C2FE28B-7A1F-5726-8690-50FBA8672A2C" xml:space="preserve">
+class CEikAlignedControl : public CCoeControl, public MEikAlignedControl
+    {
+        ...
+    private: //from CCoeControl
+        IMPORT_C TTypeUid::Ptr MopSupplyObject( TTypeUid aId ) ;
+        ...
+</codeblock> <codeblock id="GUID-03CD8613-9C1D-556C-94B7-5D9A1C23FF83" xml:space="preserve">
+EXPORT_C TTypeUid::Ptr CEikAlignedControl::MopSupplyObject( TTypeUid aId )
+    {
+    if( aId.iUid == MEikAlignedControl::ETypeId )
+        return aId.MakePtr( static_cast&lt;MEikAlignedControl*&gt;( this ) ) ;
+
+    return CCoeControl::MopSupplyObject( aId ) ; // must call base class!
+    }
+</codeblock> <p>To get an interface from the object provider framework the
+caller must use a pointer to the interface. </p> <codeblock id="GUID-CB641ADD-5AFE-5D72-A909-CD3F0C3BAA9A" xml:space="preserve">
+    ...
+    MEikAlignedControl* alignedControl = NULL ;
+    MyControl-&gt;MopGetObject( alignedControl ) ;
+    if ( alignedControl )
+        {
+        ... // etc.</codeblock> <p>To get an interface from a specific object
+the caller may use the no-chaining function call. </p> <codeblock id="GUID-AEB5EB12-6289-5DCB-BF07-71B8F7A67E33" xml:space="preserve">
+    ...
+    MEikAlignedControl* alignedControl = NULL ;
+    aControl-&gt;MopGetObjectNoChaining( alignedControl ) ;
+    if ( alignedControl )
+        {
+        ... // etc.</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B85CA4E7-3DF5-5D5C-BF7B-5D0DDCD468AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B85CA4E7-3DF5-5D5C-BF7B-5D0DDCD468AE"><title>What are containers</title><shortdesc>This topic describes the abstract idea of a containers. A container is the general term for a field, a record, a link and a table. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <p>A container is the general term for a Table, a Record, a Field, and a Link. </p> <p>A container is an element, and is an item that the CommsDat implementation can store in the Comms Database. </p> <p>A container allows tools and applications and the CommsDat implementation to prepare, store and change the data in the client process. A container acts like a cache of Comms Database information in the client process. </p> <p>A container derives from <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref>. A container inherits the behaviour of an element and the behaviour that allows it to operate with the Comms Database. </p> <p>All function calls to a Container perform actions that are local to that Container. Actions can propagate down to other elements in the container. </p> <p> </p> <p> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B861091F-DFD7-5BDD-B73C-52833F972CBD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B861091F-DFD7-5BDD-B73C-52833F972CBD"><title>Porting Notifiers to Secure Platform</title><shortdesc>This page describes how to migrate notifiers to Symbian OS v9.1. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-EC370F04-02A3-57D6-8B5A-C085950FAFCD"><title>Introduction</title> <p>Notifier plug-in DLLs ("notifiers") allow components with no direct UI linkage to interact with the user through a UI element; for example, a dialog box. </p> <p>You can migrate notifiers to Symbian OS v9.1 without major changes. Any notifier classes derived from <codeph>MEikSrvNotifierBase</codeph> must now derive from <xref href="GUID-DE445C4B-22EF-3A1F-8A69-57CB703BFAD0.dita"><apiname>MEikSrvNotifierBase2</apiname></xref>. An enumeration is used to define an ECom-based notifier plug-in interface. This acts as a primary key to separate ECom-based notifier plug-ins from other types. </p> <p> <b> Note:</b> The Symbian platform architecture still supports old-style (non-ECom-based) plug-ins. </p> <p>Notifiers have the following features: </p> <ul><li id="GUID-FC1E274F-203B-5DE9-A382-762C3C97BFE3"><p>They can be installed in ROM (<filepath>Z:</filepath>), RAM (<filepath>C:</filepath>), or on a memory card (for example, <filepath>E:</filepath>). </p> </li> <li id="GUID-E36D43EE-B2EC-5219-B969-FC2CCEE50868"><p>They can be installed and un-installed using SIS files. </p> </li> <li id="GUID-784483E3-D297-5228-8BDA-0C93018DD640"><p>A single plug-in DLL can provide multiple notifiers. The plug-in DLL returns an array of <xref href="GUID-DE445C4B-22EF-3A1F-8A69-57CB703BFAD0.dita"><apiname>MEikSrvNotifierBase2</apiname></xref> class pointers through ECom. </p> </li> <li id="GUID-D9D6A40E-D26F-5448-9E50-6D81544B9F7D"><p>Each notifier can have multiple implementations. </p> </li> </ul> </section> <section id="GUID-A53A1B64-4250-53B9-BD0F-32AFE2F34E5F"><title>Notifier source code example</title> <p>ECom defines standard framework functions that plug-ins implement. Here is an example of the required notifier source code: </p> <codeblock id="GUID-CD591744-90C4-57B5-918B-ABE3B41CBA00" xml:space="preserve">EXPORT_C CArrayPtr&lt;MEikSrvNotifierBase2&gt;* NotifierArray1()
+// Lib main entry point
+      {...}
+ 
+EXPORT_C CArrayPtr&lt;MEikSrvNotifierBase2&gt;* NotifierArray2()
+// Lib main entry point
+      {...}
+ 
+// Adding ECom support
+#include &lt;ImplementationProxy.h&gt;
+const TImplementationProxy ImplementationTable[] =
+      {
+      IMPLEMENTATION_PROXY_ENTRY(0x10022238,NotifierArray1),
+      IMPLEMENTATION_PROXY_ENTRY(0x10022237,NotifierArray2)
+      }; 
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+      {
+      aTableCount = sizeof(ImplementationTable)/sizeof(TImplementationProxy);
+      return ImplementationTable;
+       }</codeblock> </section> <section id="GUID-3F83B740-F999-55F1-A244-83C97F240883"><title>Resource file example</title> <p>ECom uses resource files to define the main elements of application GUIs. Resource file names must have the format: <filepath>&lt;dll_uid&gt;.rss</filepath>. </p> <p>The following UIDs may appear in the resource file. </p> <table id="GUID-8A60EEFE-E0FB-559C-B864-CB37EC324AD4"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>UID Name</b>  </p> </entry> <entry><p> <b>Description</b>  </p> </entry> </row> <row><entry><p> <codeph>dll_uid</codeph>  </p> </entry> <entry><p>The UID of the notifier plug-in DLL. </p> </entry> </row> <row><entry><p> <codeph> interface_uid</codeph>  </p> </entry> <entry><p>The interface UID for all notifiers, which is defined in <filepath>uikon.hrh</filepath> as: </p> <codeblock id="GUID-E664FEB0-AD66-5598-BD88-C72F068372C6" xml:space="preserve">#define KUikonUidpluginInterfaceNotifiers    0x101fdfae.</codeblock> </entry> </row> <row><entry><p> <codeph> implementation_uid</codeph>  </p> </entry> <entry><p>This is implementation-specific. </p> </entry> </row> <row><entry><p>plug-in_UID </p> </entry> <entry><p>The notifier’s UID. </p> </entry> </row> <row><entry><p>channel_UID </p> </entry> <entry><p>The channel for a notifier (for example, a screen or LED). </p> </entry> </row> </tbody> </tgroup> </table> <p>Together, the <codeph>plug-in_UID</codeph> and <codeph>channel_UID</codeph> uniquely identify the notifier plug-in. </p> <p>The following resource file corresponds to the C++ <xref href="GUID-B861091F-DFD7-5BDD-B73C-52833F972CBD.dita#GUID-B861091F-DFD7-5BDD-B73C-52833F972CBD/GUID-A53A1B64-4250-53B9-BD0F-32AFE2F34E5F">Source code</xref>, above. It defines two implementations of the notifier interface. </p> <codeblock id="GUID-D0D2F679-5196-5150-988E-ED5EB30668E2" xml:space="preserve">// 10021239.rss
+//
+
+#include "RegistryInfo.rh"
+#include "Uikon.hrh"
+
+RESOURCE REGISTRY_INFO theInfo
+   {
+      dll_uid = 0x10021239;
+      interfaces =
+      {
+      INTERFACE_INFO
+            {
+            interface_uid = KUikonUidPluginInterfaceNotifiers;
+            implementations =
+                  {
+                  IMPLEMENTATION_INFO
+                        {
+                        implementation_uid = 0x10022237;
+                        version_no = 1;
+                        display_name = "TTNOTIFY2V2 Plugin 1";
+                        default_data = "TTNOTIFY2V2";
+                        opaque_data     = "0";
+                        },
+                  IMPLEMENTATION_INFO
+                        {
+                        implementation_uid = 0x10022238;
+                        version_no = 1;
+                        display_name = "TTNOTIFY2V2 Plugin 2";
+                        default_data = "TTNOTIFY2V2";
+                        opaque_data     = "0";
+                        }
+                  };
+            }
+      };
+}</codeblock> </section> <section id="GUID-8E585844-E5B3-5909-9B48-A288D89E621F"><title>MMP file example</title> <p>This is an example project specification (<filepath>.mmp</filepath>) file for the notifier: </p> <codeblock id="GUID-2316985A-2B7D-5255-ACD0-1A4E72026232" xml:space="preserve">
+target            TESTNOTIFIER.DLL 
+targettype        PLUGIN 
+capability         TrustedUI ProtServ 
+UID                0x10009D8D 0x10021239 
+sourcepath        ...
+userinclude        ... 
+systeminclude    \epoc32\include \epoc32\include\techview 
+lang                SC 
+
+start resource    10021239.rss  
+target            TESTNOTIFIER.rsc  
+
+start resource    TNOTDIAL.RSS 
+targetpath        \private\10003a4a 
+header 
+end 
+source            filename.cpp 
+library            ECOM.LIB</codeblock> </section> </conbody><related-links><link href="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita"><linktext>Using the extended notifier
+                framework</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B876D548-FD40-4369-B328-7427002B4851.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-B876D548-FD40-4369-B328-7427002B4851" xml:lang="en"><title>Title
+pane touch observer API</title><shortdesc>The Title pane touch observer API is used for observing when the
+title pane has been tapped.</shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>For user experience guidelines on the title pane, see the <xref href="GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita">title
+pane UI component description</xref>.</p>
+<p>For implementation information, see <xref href="GUID-6F120C75-4D58-405C-8713-0626EE22E5DF.dita">Setting
+the title pane touch pane observer</xref>.</p>
+<p>For Title pane touch observer API classes and header files, see Classes and Definitions.</p>
+<section id="GUID-A04C5FBD-F778-4B4D-B259-B94D2D4180F6"><title>API class structure</title><p><xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknTitlePaneObserver.html" format="application/java-archive"><codeph>MAknTitlePaneObserver</codeph></xref> is
+part of <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknTitlePane.html" format="application/java-archive"><codeph>CAknTitlePane</codeph></xref>.</p></section>
+<section id="GUID-9A845610-B9FD-4640-AFB6-2BD8DBF600D1">       <title>Constraints</title> 
+     <p>This API is valid for touch-enabled Symbian platforms.</p> 
+   </section>
+<section id="GUID-18668729-AFCB-42DA-AE4B-0A0CC8411098"><title>Emulator support</title><p>This
+API is fully supported in the WINS/WINSCW emulator environment.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B89D2828-0FEE-5206-97D2-C7D4BBD35799.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B89D2828-0FEE-5206-97D2-C7D4BBD35799"><title>How is the Comms Database secured</title><shortdesc>This topic describes the security issues that govern access to the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Symbian OS uses platform security capabilities to protect the data in the Comms Database. The CommsDat API accesses the Comms Database through a client/server mechanism. Capabilities are policed at the client/server interface. </p> <p>All elements in the Comms Database can have an access level. This means that all tables, records, columns, and fields can have an access level. The access level defines the type of access that elements offer to tools and applications. The access level available to tools and applications also depends on the platform security capabilities assigned to those tools and applications. </p> <section id="GUID-01939D1C-B904-5388-AC5E-C727BEA808C8"><title>Access levels</title> <p>The CommsDat API offers tools and applications 5 access levels to an element : </p> <ul><li id="GUID-60820978-310E-5785-A11B-47E132F07330"><p>hidden : the element contains data that must not be seen. </p> </li> <li id="GUID-3414C7B7-8A30-5320-B49F-53527793148D"><p>private : the element contains private data. For example, username or password data. </p> </li> <li id="GUID-EA1DFE7F-5F9D-5E32-9211-3742169175D9"><p>protected write : the element contains data that must be protected from most processes. For example, this can be data set by network operators. </p> </li> <li id="GUID-08E8B6B9-DE74-574F-9382-1CE85D0B2B94"><p>basic read-only guard : this access level is not used by the CommsDat API but exists for backward compatibilty with the legacy CommDb. </p> </li> <li id="GUID-AA0B2EA9-63DA-53B4-B1CA-3106A54148E8"><p>default : the element has no explicit access level. </p> </li> </ul> <p>The CommsDat API uses the flag bits defined by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TCDAttributeFlags</apiname></xref> enum to indicate the levels of access to an element. The bits are known as the access control attributes of an element. </p> <p>Tools and applications use the CommsDat API functions <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBElement::SetAttributes()</apiname></xref> and <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBElement::ClearAttributes()</apiname></xref> to set the access control bits in the <codeph>iElementId</codeph> member of <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> and to set the access levels into the element in the Comms Database. </p> </section> <section id="GUID-834A910B-336E-5DB0-94B3-BB41E9691D28"><title>How platform security capabilities work with access
+          levels</title> <p>Tools and application processes without capabilities cannot write to the Comms Datababase. Processes without capabilities cannot damage the integrity of data in the Comms Database. Platform security makes sure that processes without capability cannot deny use of the database to other clients. </p> <p>To read or write elements in the Comms Database, tools and application processes must have the correct platform security capabilities. The following table lists the combination of capabilities and access levels to read and write elements. </p> <table id="GUID-1AEB546F-72E3-5AF9-98FA-2E8ABE75EF0B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><tbody><row><entry><p> <b> Access</b>  </p> </entry> <entry><p> <b> Capability needed to read data</b>  </p> </entry> <entry><p> <b>Capability needed to write data</b>  </p> </entry> </row> <row><entry><p> <codeph> hidden</codeph>  </p> <p>This is indicated by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDHidden</apiname></xref> bit set in the in the <codeph>iElementId</codeph> member of an element. </p> </entry> <entry><p>None </p> </entry> <entry><p>WriteDeviceData </p> </entry> </row> <row><entry><p> <codeph> Private</codeph>  </p> <p>This is indicated by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDPrivate</apiname></xref> bit set in the <codeph>iElementId</codeph> member of an element. </p> </entry> <entry><p> <codeph>ReadDeviceData</codeph>  </p> </entry> <entry><p> <codeph>WriteDeviceData</codeph> + <codeph>ReadDeviceData</codeph>  </p> </entry> </row> <row><entry><p> <codeph> Protected write</codeph>  </p> <p>This is indicated by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDProtectedWrite</apiname></xref> bit set in the <codeph>iElementId</codeph> member of an element. </p> </entry> <entry><p> <codeph>None</codeph>  </p> </entry> <entry><p> <codeph>WriteDeviceData</codeph> + <codeph>NetworkControl</codeph>  </p> </entry> </row> <row><entry><p> <codeph> Basic read-only guard</codeph>  </p> <p>This is indicated by the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDNoWriteButDeletee</apiname></xref> bit set in the <codeph>iElementId</codeph> member of an element. </p> </entry> <entry><p> <codeph>None</codeph>  </p> </entry> <entry><p> <codeph>WriteDeviceData</codeph>  </p> </entry> </row> <row><entry><p> <codeph> Default</codeph>  </p> <p>None of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TCDAttributeFlags</apiname></xref> bits set in the <codeph>iElementId</codeph> member of an element. </p> </entry> <entry><p> <codeph>None</codeph>  </p> </entry> <entry><p> <codeph>WriteDeviceData</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p>Tools and applications that have the capability to change the access control attributes must follow data access control protocols. </p> <p>Tools and applications must also have <codeph>WriteDeviceData</codeph> capability to use database functions. For example, to open a transaction to write to the database. </p> <p>The platform security settings are cumulative. For example, to change an element that is marked <i>private </i> and has <i>protected write access</i> in the database requires: </p> <ul><li id="GUID-9378062D-31AB-50C7-99D7-116184077C74"><p>the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDPrivate</apiname></xref> bit and the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDProtectedWrite</apiname></xref> bit to be set set. </p> </li> <li id="GUID-99D1C214-BE33-53E1-8A26-687BE22ACE3D"><p>the tools and application process to have the <codeph>WriteDeviceData</codeph>, <codeph>ReadDeviceData</codeph> and <codeph>NetworkControl</codeph> capabilities. </p> </li> </ul> </section> <section id="GUID-3FDDACD8-25E5-54B2-B105-65C147B620FE"><title>Changing the access attributes for each session</title> <p>Tools and applications can choose to change the access levels of elements for the period of a session. For example, tools and applications can choose to view elements that have the <codeph>hidden</codeph> access level. Tools and applications set an <i>attribute mask</i> to change the access levels of elements for a session. </p> <p>An attribute mask does not change the access levels of elements in the database. The functions that set an attribute mask do not make a call to the Comms Database and do not check the capabilities of the process of the tool or application. An attribute mask does not remove platform security checks. For example, a tools or application process without <codeph>NetworkControl</codeph> capability can not update elements protected with <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDProtectedWrite</apiname></xref>. </p> <p>The most common use for this behaviour is to view elements that are hidden. </p> <p>For example, to view hidden records, call the session function <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBSession::SetAttributeMask()</apiname></xref> and pass the value for <i>hidden</i> to this function. The attribute value for <i>hidden</i> is the enum value <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>ECDHidden</apiname></xref>. </p> <p>Use the session function <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CommsDat::CMDBSession::ClearAttributeMask()</apiname></xref> to clear an attribute mask. </p> </section> </conbody><related-links><link href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita"><linktext>Platfom Security</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91" xml:lang="en"><title>Stylus
+pop-up menu API</title><shortdesc>The Stylus pop-up menu API is used for displaying commands in a
+context menu the user can access by tapping an item on the device screen.</shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<fig id="GUID-69B92ECC-A4D7-4B17-A5EB-AED6E545DB93">
+<title>Stylus pop-up menu displayed in a preview pop-up</title>
+<image href="GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e49768_href.png" scale="75" placement="inline"></image>
+</fig>
+<p>A stylus pop up menu (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref>, defined in AknStylusPopUpMenu.h) is a floating menu component that contains stylus-specific menu
+content. As the name implies, the stylus pop up menu is meant to be used only
+with the stylus by tapping a stylus interactive area. The pop-up menu is displayed
+near the tapping position. </p>
+<p>It is the application’s responsibility to create the stylus pop up menu
+and handle the actions its menu items trigger.</p>
+<p>For look and feel guidelines on the stylus pop-up menu, see the <xref href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita">stylus
+pop-up menu UI component description</xref>.</p>
+<p>For implementation information, see <xref href="GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita">Displaying
+commands in a context menu</xref>.</p>
+<p>For the Stylus pop-up menu API classes and header files, see Classes and Definitions.</p>
+<section id="GUID-B08E958B-0FCC-4327-96D8-39055A2DB9D8"><title>Constraints</title><p>This
+API is valid for touch-enabled Symbian platforms.</p></section>
+<section id="GUID-731474BF-1AD5-4450-8A57-18B674ECAE09"><title>Emulator support</title><p>This
+API is fully supported in the WINS/WINSCW emulator environment.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026" xml:lang="en"><title>Definitions</title><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-4D35808B-97EE-4D2F-87FC-17480BFAC0FC">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry>Area registry based feedback</entry>
+<entry>Feedback is triggered by centralized registry, which is hosted by the
+feedback system. When some area with defined feedback is touched, the feedback
+is triggered by the system before any application even receives the pointer
+event. <p/>For this kind of feedback it is on application’s responsibility
+to add, update and remove areas to the registry according to application state.<p/> Area
+registry’s main purpose is to minimize the feedback latency by processing
+the pointer event faster than what would be possible from a normal GUI application.</entry>
+</row>
+<row>
+<entry>Direct feedback</entry>
+<entry>Feedback is triggered directly from the application, which receives
+the pointer event.</entry>
+</row>
+<row>
+<entry>Feedback latency</entry>
+<entry>The time that it takes from the moment when user touches the screen,
+until feedback is generated. This includes all the processing in touch driver
+and window server, as well as the time that it takes for actually starting
+the feedback.</entry>
+</row>
+<row>
+<entry>Logical feedback type</entry>
+<entry>Defines the nature of the feedback effect (e.g. “basic” or “sensitive”),
+but does not tell which type of physical feedback effect (vibrator pulse,
+sound effect etc.) is produced. Logical feedback type is decided by the UI
+component or application, which is using Tactile Feedback Client API for producing
+feedback. </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B8DEA3EE-7BA7-5A29-9A27-B87EE0EB254F" xml:lang="en"><title>Accessing
+TCP/IP Sockets Tutorial</title><shortdesc>This topic describes how to access TCP/IP sockets. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>You must be familiar with <codeph>RSocketServ()</codeph> and <codeph>RSocket()</codeph> to
+understand this tutorial. </p> </prereq>
+<context><p>Client programs access TCP/IP sockets through the generic socket
+interface <codeph>RSocket()</codeph>. The <codeph>RSocket()</codeph> specifies
+the protocol-specific behaviour through argument values. This tutorial contains
+notes on the usage of <codeph>RSocket()</codeph> functions for TCP and UDP
+sockets. </p><p> The high level steps to access the TCP/IP sockets are as
+follows: </p> </context>
+<steps id="GUID-613D3E19-02F2-578A-89AC-B639B8952357">
+<step id="GUID-B608A9CE-1A99-5A6F-AE6D-63015A0BE089"><cmd>The <codeph>RSocket()</codeph> function
+takes a number of parameters that determine the type of socket connection
+to provide. </cmd>
+<info>The following are the important parameters for TCP/IP or UDP: </info>
+<substeps id="GUID-507B471D-EFD5-5DD2-B457-76AF61A863C9">
+<substep id="GUID-1743A72D-3FB7-57CE-AF20-4CB4452334B9"><cmd/>
+<info>addrFamily </info>
+</substep>
+<substep id="GUID-111B511D-1F1B-52FD-8820-8A4F8DF7DB66"><cmd/>
+<info>sockType </info>
+</substep>
+<substep id="GUID-0049E8E2-3A84-5C5D-97ED-09367BA11259"><cmd/>
+<info>protocol </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-D63213B5-180D-5B82-A699-4CD1FF8AC066"><cmd/>
+<info>The following constant values must be used for TCP/IP: </info>
+<info>addrFamily: <codeph>KAfInet</codeph> or <codeph>KAfInet6</codeph> for
+IPv6 </info>
+<info>sockType: <codeph>KSockStream</codeph> for TCP/IP or <codeph>KSockDatagram</codeph> for
+UDP </info>
+<info>protocol: <codeph>KProtocolInetTCP</codeph> or <codeph>KProtocolInetUDP</codeph>  </info>
+</step>
+</steps>
+<example><title>Example</title> <p>The following code is an example to access
+the TCP/IP socket: </p> <codeblock id="GUID-E61E7089-2F9C-5E8A-ADFB-4BF25451AA59" xml:space="preserve">
+void Example::open(void)
+{    
+    TInt err;
+    RSocketServ ss;
+    RSocket sock;
+
+    err = ss.Connect();
+    err = sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp);
+    // ... now connect to the socket to send and receive data
+</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita"><linktext>Sockets Server</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B8E16769-0B82-57BB-8DA0-FEB4E181FA84.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B8E16769-0B82-57BB-8DA0-FEB4E181FA84"><title>integer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>integer [ {+|-}Hghilprtux ] [ name[=value] ... ] </userinput> </p> <p>Equivalent to <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref> <codeph>-i</codeph>, except that options irrelevant to integers are not permitted. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e7648_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e222082_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B93D6BAE-B9B9-5118-92DF-5E566E5BE8EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B93D6BAE-B9B9-5118-92DF-5E566E5BE8EB" xml:lang="en"><title>Configuring Comms</title><shortdesc>This section contains conceptual information required to configure the Comms Infrastructure. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF" xml:lang="en"><title>Application
+signing</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All Symbian applications must be signed before they can be installed.
+All applications which use <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref>-protected
+APIs, where the capability cannot be granted by the end user, have to be certified.
+Such certification can be obtained through <xref href="https://www.symbiansigned.com/" scope="external">Symbian
+Signed</xref>.</p>
+<p>Signing is a means of encoding a digital certificate into the application
+installation file. The certificate identifies the application’s vendor, and
+grants access to capabilities defined during the build process.</p>
+<p>The signing process is described in detail on the <xref href="https://www.symbiansigned.com/" scope="external">Symbian
+Signed</xref> website.</p>
+<section id="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EH"><title>Signing options</title>
+<p>If your application only needs <i>user capabilities</i> (<codeph>LocalServices</codeph>, <codeph>NetworkServices</codeph>, <codeph>ReadUserData</codeph>, <codeph>WriteUserData</codeph>, <codeph>UserEnvironment</codeph>, and<codeph>Location</codeph>),
+you can self-sign the application.</p>
+<note>
+<p>When the end users are installing a self-signed application, they are
+informed that the application is untrusted and may decide to abort the installation.
+In Nokia E-series devices the user must change a setting to allow self-signed
+applications to install.</p>
+</note>
+<p>Sign the <codeph>sis</codeph> <xref href="GUID-61EE2BE0-7B86-42CD-A03F-857DD8FAC246.dita">installation
+file</xref> file with any private key. You can use the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Installing/IntroductionToSecurity.guide.html" format="application/java-archive">MakeKeys</xref> application
+to create the needed private key and, for example, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Installing/IntroductionToSignSIS.guide.html" format="application/java-archive">SignSIS</xref> to
+sign the application. Both applications are delivered with the SDK. For more
+information, see <xref href="http://wiki.forum.nokia.com/index.php/How_to_sign_a_.Sis_file_with_Self-Sign_Certificate" scope="external">How
+to sign a .Sis file with Self-Sign Certificate</xref> in the Forum Nokia
+Developer Community Wiki.</p>
+<p>The other signing options (Open Signed, Express Signed and Certified
+Signed) are described in detail in <xref href="http://developer.symbian.com/ssguide" scope="external">The
+Complete Guide to Symbian Signed</xref>.</p>
+</section>
+<section id="GUID-44AC868B-484A-4B84-8A3A-0351E70F1141"><title>Additional information
+on signing</title>
+<p>The UID value you need to use for your application depends on whether
+your application is signed or self-signed. For more information, see <xref href="GUID-EA05F9B6-52C7-4BD9-8B9A-4BA3456E70B5.dita">UID</xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/BuildTools/UsingUids.guide.html" format="application/java-archive">How
+to use UIDs</xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E" xml:lang="en"><title>Unified
+Certificate Store Tutorial</title><shortdesc>The Unified Certificate Store is the single point of access for
+client applications to access and manipulate certificate stores in the device.
+This tutorial provides information on how you can use the Unified Certificate
+Store to perform various certificate-manipulation operations. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <p>Follow these steps to perform the various
+certificate manipulation operations using the Unified Certificate Store: </p> <ol id="GUID-FF80C823-255E-5EF6-B433-A56190C80A8F">
+<li id="GUID-B9D2FEBD-776E-5940-94CC-FDFF775DF1E6"><p>Create an instance of
+the Unified Certificate Store and initialize it. </p> <p>You can create a
+certificate store in read-only or writable mode. Operations like adding and
+removing certificates can be performed when the certificate store is in writable
+mode. Basic operations like listing certificates, retrieving certificate details,
+viewing trust statuses of certificates can be performed when the certificate
+store is in read-only mode. </p> <p>The following steps explain the processing
+of creating and initialising a Unified Certificate Store: </p> <ol id="GUID-99B8E435-FDCF-5D5A-B15F-2685B18D6E4B">
+<li id="GUID-9B955334-F229-54B4-8F48-039AAED1685C"><p>Create an instance of
+the <codeph>RFs</codeph> class. Use the object created as a file system session. </p> </li>
+<li id="GUID-53BDC7C5-1380-53E3-840F-61E7BAB0BD53"><p>Create an object of
+type <codeph>CUnifiedCertStore</codeph> using <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-FB4204E6-EEB5-3C8E-9938-5466C8AA318E"><apiname>CUnifiedCertStore::NewL()</apiname></xref> or <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-E66689D6-82C9-33B5-8CB6-7CE40EBAFF4E"><apiname>CUnifiedCertStore::NewLC()</apiname></xref>. </p> <p> <b>Note:</b>  </p> <p>The value that you set for the Boolean variable <codeph>aOpenForWrite</codeph> decides
+if you can open the certificate store in read-only or writable mode. Set the
+value of the variable to: </p> <ul>
+<li id="GUID-FF0DA388-7DFC-504A-9C0F-AAB32F44C6D3"><p> <codeph>ETrue</codeph> to
+open the certificate store with write access. </p> </li>
+<li id="GUID-F1DF4204-DE2A-59B6-BB85-E65BFED1A929"><p> <codeph>EFalse</codeph> to
+open the certificate store with read-only access. </p> </li>
+</ul> </li>
+<li id="GUID-C158790B-DE2D-52DC-A387-90961DC77F4B"><p>Initialize the certificate
+store and the member functions using the asynchronous function <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-949ACD5A-756A-356A-8DC5-462FBDFB0B95"><apiname>CUnifiedCertStore::Initialize()</apiname></xref>. </p> </li>
+</ol> <p>The code snippet to create and initialize a Unified Certificate Store
+is as follows: </p> <codeblock id="GUID-9DE1EB37-DDFE-5D22-9A3B-ADE97CBD4A5D" xml:space="preserve">
+//Create a file system session object
+RFs iFs;
+iFS.connect();
+CleanupClosePushL(iFs);
+
+
+//Create and initialize the Unified Certificate Store
+CUnifiedCertStore* iCertStore = CUnifiedCertStore::NewL(iFs, ETrue);
+
+//iStatus is a TRequestStatus
+iCertStore-&gt;Initialize(iStatus); 
+</codeblock> </li>
+<li id="GUID-ED591EC4-417B-5D57-BA41-3B4F8C97D2D6"><p>Complete any of the
+following tasks as per your requirement: </p> <ul>
+<li id="GUID-E5BFB9AB-1754-5D58-84E2-49395DC2A87D"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita#GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E/GUID-A9389658-0ECD-59BA-A602-C528767456D5">Adding certificates</xref>  </p> </li>
+<li id="GUID-99C0B5EC-8204-522A-94EC-08D06BB00C1D"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita#GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E/GUID-2842C30A-579C-5E1A-8307-7AFF399BCCDE">Removing certificates</xref>  </p> </li>
+<li id="GUID-1DCEFAE8-36AF-50AB-B925-FBBB6E35DCA4"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita#GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E/GUID-7C74D0F9-25A3-5FDE-9FF1-EB865A31535E">Finding certificates</xref>  </p> </li>
+<li id="GUID-AAB713A9-450A-5ADF-8B4D-852BF418E2C0"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita#GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E/GUID-42C7CD98-4617-57D2-8331-C0A05DF7F7E7">Retrieving certificate as a parsed object</xref>  </p> </li>
+<li id="GUID-61C6704B-4A88-5FD4-90D5-310BF7D98180"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita#GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E/GUID-1F1F9608-C387-5597-8041-AB1BC1F65992">Retrieving certificate details</xref>  </p> </li>
+<li id="GUID-71FD55FF-2619-59B0-8F96-13AFDABC0E4E"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita#GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E/GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6"> Managing applicability and trust settings for certificates</xref>  </p> </li>
+</ul> </li>
+</ol> </section>
+<section id="GUID-A9389658-0ECD-59BA-A602-C528767456D5"><title>Adding certificates</title> <p>Before
+adding a certificate, it is essential to determine the certificate store to
+which the certificate will be added. </p> <p>The following steps explain the
+process of retrieving the certificate store by specifying an appropriate index
+value and then adding a certificate to the particular store: </p> <ol id="GUID-B4CC2EBE-BCCC-5BC3-B0B1-88B9086A8D7E">
+<li id="GUID-33EF0F8B-C0D0-5E34-9FB6-0EC694D6F8C0"><p>Create an object of
+a writable certificate store using <xref href="GUID-135A2547-5D64-3223-82DC-8133F8FEAD37.dita"><apiname>MCTWritableCertStore</apiname></xref> and
+retrieve the certificate store to which the certificate will be added. </p> </li>
+<li id="GUID-5095B782-EF13-5A92-B025-DFA523A5E638"><p>Specify the details
+of the certificate to be added and include it to the selected store using <xref href="GUID-135A2547-5D64-3223-82DC-8133F8FEAD37.dita#GUID-135A2547-5D64-3223-82DC-8133F8FEAD37/GUID-0913D6AB-35ED-3525-BDD1-11C93514C5F5"><apiname>MCTWritableCertStore::Add()</apiname></xref>. </p> </li>
+</ol> <p>The following code snippet explains how to add a certificate to the
+certificate store: </p> <codeblock id="GUID-EFE9F14D-15CE-5977-A1B1-B2DCB1241C69" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+
+//Create an object of the writable certificate store 
+
+//Retrieve the certificate store present at the specified index
+//If the certificate store index is invalid 
+//or the specified certificate store cannot be opened
+//then the store object is NULL
+
+MCTWritableCertStore&amp; ustore = iCertStore-&gt;iWritableCertStore(0);
+.
+.
+.
+//Specify details of the certificate
+
+//The certificate label
+HBufC* iCertLabel; 
+iCertLabel = HBufC::NewL(20);
+_LIT(KTxtLabel,"CertificateLabel");
+*iCertLabel = KTxtLabel;
+
+//The certificate format
+TCertificateFormat icertFormat = EX509Certificate;
+
+//The certificate owner type
+TCertificateOwnerType iCertOwnerType = ECACertificate;
+
+//The certificate's subject key id and issuer key id
+//Both are optional fields
+
+TKeyIdentifier* aSubjectKeyId = NULL;
+TKeyIdentifier* aIssuerKeyId = NULL;
+
+//iCertData is an HBufC8* buffer that holds certificate data
+HBufC* iCertData  = HBufC::NewL(200);
+
+//Add the certificate
+//The subject key id and issuer key id values are 0
+
+ustore-&gt;Add(*iCertLabel, EX509Certificate, ECACertificate, 0, 0, iCertData-&gt;Des(), iStatus); 
+</codeblock> </section>
+<section id="GUID-2842C30A-579C-5E1A-8307-7AFF399BCCDE"><title>Removing certificates</title> <p>Specify
+details of the certificate to be removed and then remove it from the certificate
+store. The following steps provide the require details: </p> <ol id="GUID-C3D2E9DF-8CFA-5F23-A620-DCDE2EE49D44">
+<li id="GUID-C55FC085-7037-5447-BBF4-A69EE77B0055"><p>Create an object of
+a writable certificate store using <xref href="GUID-135A2547-5D64-3223-82DC-8133F8FEAD37.dita"><apiname>MCTWritableCertStore</apiname></xref> and
+retrieve the certificate store from which the certificate will be removed. </p> </li>
+<li id="GUID-9E4DE5E2-E0D1-5ED2-8415-B0B44C54A424"><p>Create a <codeph>CCTCertInfo</codeph> object
+of the certificate to be removed. Pass this to the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-C5782446-6A63-32E7-A4CE-1DDC4F8AC5CB"><apiname>CUnifiedCertStore::Remove()</apiname></xref> function
+to remove the particular certificate from the certificate store. </p> </li>
+</ol> <p>The following code snippet explains how to remove a certificate from
+the certificate store: </p> <codeblock id="GUID-721E6910-928F-52E4-B7A5-F281D9947539" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+
+//Create an object of the writable certificate store 
+
+//Retrieve the certificate store present at the specified index
+//If the certificate store index is invalid 
+//or the specified certificate store cannot be opened
+//then the store object is NULL
+
+MCTWritableCertStore&amp; ustore = iCertStore-&gt;iWritableCertStore(0);
+.
+.
+.
+//Create a CCTCertInfo object for the certificate to be removed
+
+//Instantiate a token
+
+_LIT(KTokenString,"certtoken");
+
+class CSimpleToken:: public CBase,public MCTToken
+{
+public:
+    static MCTToken* NewL(MCTTokenType* aTokenType);
+
+public: //  From MCTToken
+     MCTTokenType&amp; TokenType();
+     const TDesC&amp; Label();
+     TCTTokenHandle Handle();
+
+private:
+     MCTTokenType* iTokenType;
+}
+
+MCTToken* CSimpleToken::NewL(MCTTokenType* aTokenType)
+     {
+     CDummyTokenClient* self = new (ELeave) CSimpleTokenType(aTokenType);
+     return static_cast&lt;MCTToken*&gt;(self);
+     }
+ 
+ CSimpleToken::CSimpleToken(MCTTokenType* aTokenType)
+             :   iTokenType(aTokenType),
+     {
+     }
+
+ MCTTokenType&amp; CSimpleToken::TokenType()
+     {
+     return *iTokenType;
+     }
+ const TDesC&amp; CSimpleToken::Label()
+     {
+     return KTokenString();
+     }
+ TCTTokenHandle CSimpleToken::Handle()
+     {
+     return (TCTTokenHandle(iTokenType-&gt;Type(), 0));
+     }
+// Create token type
+TUid tokenUid = 0x103478;
+CCTTokenType* tokenType =  CCTTokenType(tokenUid,iFs);
+CleanupReleasePushL(*tokenType);
+
+// Open the token
+MCTToken* token = NULL;
+tokenType.openToken(KTokenString, token, iStatus);  
+.
+.
+.
+//The certificate label
+HBufC* iCertLabel = HBufC::NewL(20);
+_LIT(KTxtLabel,"CertificateLabel2");
+*iCertLabel = KTxtLabel;
+  
+//The certificate format
+TCertificateFormat icertFormat = EX968Certificate;
+
+//The certificate owner type
+TCertificateOwnerType iCertOwnerType = EUserCertificate;
+
+//The certificate's subject key id and issuer key id fields
+TKeyIdentifier* aSubjectKeyId = NULL;
+TKeyIdentifier* aIssuerKeyId = NULL;
+
+//The certificate ID 
+const TInt KCertificateId = 0x00001234;
+
+//iCertInfo is a CCTCertInfo object that points to the certificate to be removed
+CCTCertInfo* iCertInfo  = CCTCertInfo::NewLC(*iCertLabel, icertFormat, iCertOwnerType, 999, aSubjectKeyId, aIssuerKeyId, token, KCertificateId, ETrue);
+
+
+//Remove the certificate
+ustore-&gt;Remove(iCertInfo, iStatus);
+CleanupStack::PopAndDestroy(2, tokenType);
+</codeblock> </section>
+<section id="GUID-7C74D0F9-25A3-5FDE-9FF1-EB865A31535E"><title>Finding certificates</title> <p>You
+can specify filter criteria like certificate format, certificate owner type
+and so on to find a particular set of certificates from the certificate store.
+The following steps explain the process of finding certificates: </p> <ol id="GUID-C7E944A0-9B0C-58E0-A2D8-15CEA6369B76">
+<li id="GUID-B7170624-BA1B-58A5-B52D-DDDA55B02494"><p>Specify a filter object
+for the certificates to be returned. </p> </li>
+<li id="GUID-63746FE1-B1D8-593D-8262-5F27635E7EEA"><p>Specify the filter criteria
+for returning a specific category of certificates. </p> </li>
+<li id="GUID-246E4834-0C0E-5721-BE8D-01B7B688BC1A"><p>Use the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-F88680D5-737A-3BF5-98E4-1BAD101A6B1C"><apiname>CUnifiedCertStore::List()</apiname></xref> function
+to list the filtered certificates. </p> </li>
+</ol> <p>The following code snippet explains how to find certificates in a
+certificate store: </p> <codeblock id="GUID-FC4077EB-0B5A-5832-BA3F-1EA9CAA80BC5" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+
+RPointerArray&lt;CCTCertInfo&gt; iCerts; //This variable will contain the certificates found
+
+//Specify filter object for the certificates
+CCertAttributeFilter&amp; iCertFilter;
+iCertFilter = CCertAttributeFilter::NewL(); 
+
+
+//Specify the filter criteria           
+iCertFilter-&gt;SetFormat(EWTLSCertificate); 
+iCertFilter-&gt;SetOwnerType(ECACertificate);
+
+
+//List the certificates based on the filter criteria
+iCertStore-&gt;List(iCerts, iCertFilter, iStatus);
+</codeblock> </section>
+<section id="GUID-42C7CD98-4617-57D2-8331-C0A05DF7F7E7"><title>Retrieving
+certificate as a parsed object</title> <p>You can retrieve a certificate as
+a parsed object only in case of <xref href="GUID-C676C4E6-93AF-59E9-886D-74D59F154490.dita">X.509</xref> or
+Wireless Transport Layer Security (WTLS) certificates. This method of retrieval
+does not work for URL certificates. </p> <p>Use the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-DE63711C-95CA-3C92-B406-3BEF04184866"><apiname>CUnifiedCertStore::Retrieve()</apiname></xref> function
+to retrieve the certificate as a parsed object. </p> <p>The following code
+snippet explains how to retrieve a certificate as a parsed object: </p> <codeblock id="GUID-233AA2D2-5A2B-5F29-8C30-79C2AB821C8A" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+
+//Retrieve the certificate
+
+//iCertInfo is a CCTCertInfo object that points to the certificate to be retrieved
+//iCert contains the returned certificate
+ 
+iCertStore-&gt;Retrieve(iCertInfo, iCert, iStatus);
+</codeblock> </section>
+<section id="GUID-1F1F9608-C387-5597-8041-AB1BC1F65992"><title>Retrieving
+certificate details</title> <p>You can retrieve Abstract Syntax Notation One
+(ASN.1) encoded certificate data from the certificate store. The certificate
+data is returned as an ASN.1-encoded string. </p> <p>Use the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-DE63711C-95CA-3C92-B406-3BEF04184866"><apiname>CUnifiedCertStore::Retrieve()</apiname></xref> function
+to retrieve the certificate details. Unlike the function used to retrieve
+a certificate as a parsed object, this function also accepts a buffer object
+to hold the details of the certificate that is being retrieved. </p> <p>The
+following code snippet explains how to retrieve details of a specific certificate: </p> <codeblock id="GUID-7D781666-11BF-5BAF-A642-F5C02C79E0E7" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+
+//Retrieve the certificate details
+
+//iCertInfo is a CCTCertInfo object that points to the certificate to be retrieved
+//iCertData is an HBufC8* buffer that holds certificate data
+
+iCertStore-&gt;Retrieve(iCertInfo, iCertData-&gt;Des(), iStatus); 
+</codeblock> </section>
+<section id="GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6"><title>Managing applicability
+and trust settings</title> <p>The trust status of a certificate indicates
+if it can be considered as a trust anchor for validating any application.
+This status is valid only for certificates issued by the Certificate Authority
+(CA). The applicability settings of a certificate indicate the applications
+for which the trust status is valid. </p> <p>The Unified Certificate Store
+API provides the following functions to get and set the applicability and
+trust settings for certificates: </p> <table id="GUID-B1E90AB7-D5AF-5DC2-AC8C-13922449A1A7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Function</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>Applications()</codeph>  </p> </entry>
+<entry><p>Gets a list of application UIDs for a certificate </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> IsApplicable()</codeph>  </p> </entry>
+<entry><p>Determines whether a certificate has a specific application UID </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> Trusted()</codeph>  </p> </entry>
+<entry><p>Determines whether a certificate is trusted </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SetApplicability()</codeph>  </p> </entry>
+<entry><p>Sets the list of application UIDs </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SetTrust() </codeph>  </p> </entry>
+<entry><p>Sets the trust flag. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Setting applicability and trust settings</b> </p> <p>You can
+change the existing applicability and trust settings of a certificate. The
+details are as follows: </p> <ul>
+<li id="GUID-97330D30-CE30-5B54-9E8D-54DDCB469BC4"><p> <b>Set applicability:</b> Specify
+a <codeph>CCTCertInfo</codeph> object for the certificate, an array for containing
+the new applicability settings and a request status object that will contain
+the result of the applicability setting operation when complete. Pass these
+as parameters to the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-2A38AD3B-A04A-3382-858A-232E4BD64207"><apiname>CUnifiedCertStore::SetApplicability()</apiname></xref> function
+and apply the settings. </p> </li>
+<li id="GUID-783FF55B-65EF-5ED3-BE18-DAE1E596EA79"><p> <b>Set trust: </b> Specify
+a <codeph>CCTCertInfo</codeph> object for the certificate, a <codeph>TBool</codeph> object
+to decide if the certificate is to be trusted (<codeph>ETrue</codeph> if trusted
+and <codeph>EFalse</codeph> if not) and a request status object that will
+contain the result of the trust setting operation when complete. Pass these
+as parameters to the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-96640E22-0F69-3053-A609-4708AE3E6559"><apiname>CUnifiedCertStore::SetTrust()</apiname></xref> function
+and apply the trust settings. </p> </li>
+</ul> <p>The following code snippet explains how to set the applicability
+and trust settings for a certificate: </p> <codeblock id="GUID-11E65DD8-F148-5241-8C9C-693E076973C0" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+
+//Parameters for applicability and trust settings 
+
+RArray&lt;TUid&gt; iApplications; //The applicability settings
+TBool iTrustStatus = ETrue; //The trust setting
+
+//Set Applicability
+
+//iCertInfo is a CCTCertInfo object that points to the certificate whose applicability and trust settings are to be updated
+
+iCertStore-&gt;SetApplicability(iCertInfo, iApplications, iStatus); 
+
+//Set Trust
+
+iCertStore-&gt;SetTrust(iCertInfo, iTrustStatus, iStatus);
+</codeblock> <p><b>Getting applicability and trust settings</b> </p> <p>You
+can determine whether a certificate is trusted as well as get a list of application
+UIDs for a certificate. The details are as follows: </p> <ul>
+<li id="GUID-0083812D-C352-5BB3-A4FD-09A10FBB7375"><p> <b>Get applicability:</b> Specify
+a <codeph>CCTCertInfo</codeph> object for the certificate, an array for containing
+applicability settings (Application UIDs pertaining to the certificate) and
+a request status object that will contain the result of getting the applicability
+settings when the operation is complete. Pass these as parameters to the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-7B518009-7848-30FB-BE52-7F38E3C88C59"><apiname>CUnifiedCertStore::Applications()</apiname></xref> function. </p> </li>
+<li id="GUID-1FD626D2-965C-5CBC-AD13-6D8DA90F065D"><p> <b>Get trust:</b> Specify
+a <codeph>CCTCertInfo</codeph> object for the certificate, a <codeph>TBool</codeph> object
+that returns the trust status of the certificate (<codeph>ETrue</codeph> if
+trusted and <codeph>EFalse</codeph> if not) and a request status object that
+will contain the trust settings. Pass these as parameters to the <xref href="GUID-AD63C29A-17C3-375C-840F-42A92422300D.dita#GUID-AD63C29A-17C3-375C-840F-42A92422300D/GUID-183B8E74-1F85-380D-B69C-0303FD4B9A1C"><apiname>CUnifiedCertStore::Trusted()</apiname></xref> function. </p> </li>
+</ul> <p>The following code snippet explains how to get the applicability
+and trust settings for a certificate: </p> <codeblock id="GUID-309E1640-E00E-59CF-A4B3-17FC0C8AE3C7" xml:space="preserve">
+//Create and initialize the Unified Certificate Store
+.
+.
+.
+//Get Applicability
+
+//iCertInfo is a CCTCertInfo object that points to the certificate whose applicability and trust settings are to be updated
+//iApplications is an RArray&lt;TUid&gt; that returns the application UIDs for the certificate
+
+iCertStore-&gt;Applications(iCertInfo, iApplications, iStatus); 
+
+//Get Trust
+//iTrustStatus is a TBool returns the trust status of a certificate
+
+iCertStore-&gt;Trusted(iCertInfo, iTrustStatus, iStatus);
+</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-037225BC-AC45-540E-A899-1B8AB9112D6E.dita"><linktext>Unified Certificate
+Store Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e310419_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED-master.png has changed
Binary file Symbian3/SDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e304279_href.png has changed
Binary file Symbian3/SDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e284714_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6"><title>SQL Insertion Tips</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This guide provides some tips for using COMMIT statements. </p> <section><title>Introduction</title> <p>INSERT, UPDATE and DELETE operations are all very fast. However, COMMIT statements are very slow. You need to consider several techniques to ensure you make the best use of COMMIT statements. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-C12416F0-87D5-59AA-A08F-A1741A3FD3ED"><title>INSERT and UPDATE are Fast but COMMIT is Slow</title> <p>A programmer migrating to this database engine might write a test program to see how many INSERT statements per second it can do. They create an empty database with a single empty table. Then they write a loop that runs a few thousand times and does a single INSERT statement on each iteration. Upon timing this program they find that it appears to only be doing a couple of dozen INSERTs per second. </p> <p>“Everybody I talked to says SQLite is suppose to be really fast”, the new programmer will typically complain, “But I'm only getting 20 or 30 INSERTs per second!” </p> <p>In reality, SQLite can achieve around 50000 or more INSERTs per second on a modern workstation, although less on a typical embedded platform. But the characteristics of the underlying storage medium and the fact that the database engine guarantees atomic updates to the database mean that it can only achieve a few dozen COMMIT operations per second. </p> <p>Unless you take specific action to tell SQLite to do otherwise, it will automatically insert a COMMIT operation after every insert. So the programmers described above are really measuring the number of transactions per second, not the number of INSERTs. This is a very important distinction. </p> <p>Why is COMMIT so much slower than INSERT? SQLite guarantees that changes to a database are ACID – Atomic, Consistent, Isolated, and Durable. The Atomic and Durable parts are what take the time. </p> <p>In order to be Atomic, the database engine has to go through an elaborate protocol with the underlying file system, which ultimately means that every modified page of the database file must be written twice. </p> <p>In order to be durable, the COMMIT operation must not return until all content has been safely written to nonvolatile media. At least two consecutive non-concurrent writes to flash memory must occur in order to COMMIT. </p> <p>An atomic and durable COMMIT is a very powerful feature that can help you to build a system that is resilient, even in the face of unplanned system crashes or power failures. But the price of this resilience is that COMMIT is a relatively slow operation. Hence if performance is a priority you should strive to minimize the number of COMMITs. </p> <p>If you need to do more than one INSERT or UPDATE or DELETE operation, you are advised to put them all inside a single explicit transaction by running the BEGIN statement prior to the first changes and executing COMMIT once all changes have finished. In this way, all your changes occur within a single transaction and only a single time-consuming COMMIT operation must occur. </p> <p>If you omit the explicit BEGIN...COMMIT, then SQLite automatically inserts an implicit BEGIN...COMMIT around each of your INSERT, UPDATE, and DELETE statements, which means you end of doing many COMMITs which will always be much slower than doing just one. </p> </section> <section id="GUID-0E57010E-E3AB-573E-B550-72DE36725D1B"><title>Batch INSERT, UPDATE, and DELETE Operations Using TEMP Tables</title> <p>As described above, when you have many changes to make to a database, you are advised to make all those changes within a single explicit transaction by preceding the first change with a BEGIN statement and concluding the changes with a COMMIT statement. </p> <p>The problem with BEGIN...COMMIT is that BEGIN acquires an exclusive lock on the database file which is not released until the COMMIT completes. That means that only a single connection to the database can be in the middle of a BEGIN...COMMIT at one time. If another thread or process tries to start a BEGIN...COMMIT while the first is busy, the second has to wait. To avoid holding up other threads and processes, therefore, every BEGIN should be followed by a COMMIT as quickly as possible. </p> <p>But sometimes you run into a situation where you have to make periodic INSERTs or UPDATEs to a database based on timed or external events. For example, you may want to do an INSERT into an event log table once every 250 milliseconds or so. You could do a separate INSERT for each event, but that would mean doing a separate COMMIT four times per second, which is perhaps more overhead than you desire. On the other hand, if you did a BEGIN and accumulated several seconds worth of INSERTs you could avoid doing a COMMIT except for every 10<sup>th</sup> second or so. The trouble there is that other threads and processes are unable to write to the database while the event log is holding its transaction open. </p> <p>The usual method for avoiding this dilemma is to store all of the INSERTs in a separate TEMP table, then periodically flush the content of the TEMP table into the main database with a single operation. </p> <p>A TEMP table works just like a regular database table except that a TEMP table is only visible to the database connection that creates it, and the TEMP table is automatically dropped when the database connection is closed. You create a TEMP table by inserting the “TEMP” or “TEMPORARY” keyword in between “CREATE” and “TABLE”, like this: </p> <codeblock id="GUID-90068863-645B-551F-8A85-A12ED647F1AA" xml:space="preserve">
+CREATE TEMP TABLE event_accumulator(
+        eventId INTEGER,
+        eventArg TEXT
+    );
+</codeblock> <p>Because TEMP tables are ephemeral (meaning that they do not persist after the database connection closes) SQLite does not need to worry about making writes to a TEMP table atomic or durable. Hence a COMMIT to a TEMP table is very quick. </p> <p>A process can do multiple INSERTs into a TEMP table without having to enclose those INSERTs within an explicit BEGIN...COMMIT for efficiency. Writes to a TEMP table are always efficient regardless of whether or not they are enclosed in an explicit transaction. </p> <p>So as events arrive, they can be written into the TEMP table using isolated INSERT statements. But because the TEMP table is ephemeral, one must take care to periodically flush the contents of the TEMP table into the main database where they will persist. So every 10 seconds or so (depending on the application requirements) you can run code like this: </p> <codeblock id="GUID-F51D81FE-5F85-5C22-96AC-4CC69AF00BC4" xml:space="preserve">
+BEGIN;
+INSERT INTO event_log SELECT * FROM event_accumulator;
+DELETE FROM event_accumulator;
+COMMIT;
+</codeblock> <p>These statements transfer the content of the ephemeral event_accumulator table over to the persistent event_log table as a single atomic operation. Since this transfer occurs relatively infrequently, minimal database overhead is incurred. </p> </section> <section id="GUID-83C876AB-7C3F-5BFC-8F02-6503A0B3D8D6"><title>Use Bound Parameters</title> <p>Suppose you have a descriptor, nameDes, and you want to insert that value into the namelist table of a database. One way to proceed is to construct an appropriate INSERT statement that contains the desired string value as a SQL string literal, then run that INSERT statement. Pseudo-code for this approach follows: </p> <codeblock id="GUID-B96D98B4-ED28-566D-A0AA-073E4BEC6954" xml:space="preserve">
+_LIT(KSql, “INSERT INTO namelist VALUES('%S')”);
+sqlBuf.Format(KSql, nameDes);
+sqlDatabase.Execute(sql);
+</codeblock> <p>The INSERT statement is constructed by the call to <codeph>Format()</codeph> on the second line of the example above. The first argument is a template for the SQL statement. The value of the nameDes descriptor is inserted where the %S occurs in the template. Notice that the %S is surrounded by single quotes so that the string will be properly contained in SQL standard quotes. </p> <p>This approach works as long as the value in nameDes does not contain any single-quote characters. If nameDes does contain one or more single-quotes, then the string literal in the INSERT statement will not be well-formed and a syntax error might occur. Or worse, if a hostile user is able to control the content of nameDes, they might be able to put text in nameDes that looked something like this: </p> <codeblock id="GUID-12627B2F-D98A-5170-9E6F-6C3EFA33EA87" xml:space="preserve">
+hi'); DELETE FROM critical_table; SELECT 'hi
+</codeblock> <p>This would result in the sqlBuf variable holding </p> <codeblock id="GUID-FD6A2B42-8260-535B-80D3-B99C726B02FC" xml:space="preserve">
+INSERT INTO namelist VALUES('hi'); DELETE FROM critical_table; SELECT 'hi'
+</codeblock> <p>Your adversary has managed to convert your single INSERT statement into three separate SQL statements, one of which does things that you probably do not want to happen. This is called an “SQL Injection Attack”. You want to be very, very careful to avoid SQL injection attacks as they can seriously compromise the security of your application. </p> <p>SQLite allows you to specify parameters in SQL statements and then substitute values for those parameters prior to running the SQL. Parameters can take several forms, including: </p> <codeblock id="GUID-8255AFE5-CFA2-5DAD-A168-2A7294021AC6" xml:space="preserve">
+?
+?NNN
+:AAA
+@AAA
+$AAA
+</codeblock> <p>In the above, NNN means any sequence of digits and AAA means any sequence of alphanumeric characters and underscores. In this example we will stick with the first and simplest form – the question mark. The operation above would be rewritten as shown below. (Error checking is omitted from this example for brevity.) </p> <codeblock id="GUID-292857E5-9219-5AD5-B05A-9C9A47055741" xml:space="preserve">
+_LIT(KSql, “INSERT INTO namelist VALUES(?)”);
+RSqlStatement s;
+s.PrepareL(db, KSql);
+s.BindText(1, nameDes);
+s.Exec();
+s.Close();
+</codeblock> <p> <codeph> PrepareL()</codeph> compiles the SQL statement held in the literal KSql. This statement contains a single parameter. The value for this parameter is initially NULL. </p> <p>The <codeph>BindText()</codeph> sets the value of this parameter to the content of the <codeph>nameDes</codeph> descriptor and then <codeph>Exec()</codeph> executes the SQL statement with the bound parameter value. </p> <p>There are variations of <codeph>BindXxx()</codeph> to bind other kinds of values such as integers, floating point numbers, and binary large objects (BLOBs). The key point to observe is that none of these values need to be quoted or escaped in any way. And there is no possibility of being vulnerable to an SQL injection attack. </p> <p>Besides reducing your vulnerability to SQL injection attacks, the use of bound parameters also happens to be more efficient that constructing SQL statements from scratch, especially when inserting large strings or BLOBs. </p> </section> <section id="GUID-3EC5A35D-67E0-5C85-9DA3-CD6AA40BB6A7"><title>Cache and Reuse Prepared Statements</title> <p>Using <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> is a two-step process. Firstly the statement must be compiled using <codeph>Prepare()</codeph>. Then the resulting prepared statement is run using either <codeph>Exec()</codeph> or <codeph>Next()</codeph>. </p> <p>The relative amount of time spent doing each of these steps depends on the nature of the SQL statement. SELECT statements that return a large result set or UPDATE or DELETE statements that touch many rows of a table will normally spend most of their time in the Virtual Machine module and relatively little time being compiled. But simple INSERT statements on the other hand, can take twice as long to compile as they take to run in the virtual machine. </p> <p>A simple way to reduce the CPU load of an application that uses SQLite is to cache the prepared statements and reuse them. Of course, one rarely needs to run the exact same SQL statement more than once. But if a statement contains one or more bound parameters, you can bind new values to the parameters prior to each run and thus accomplish something different with each invocation. </p> <p>This technique is especially effective when doing multiple INSERTs into the same table. Instead of preparing a separate insert for each row, create a single generic insert statement like this: </p> <codeblock id="GUID-C66EEE5F-27C3-59A8-9DD4-2E32A49367AF" xml:space="preserve">
+INSERT INTO important_table VALUES(?,?,?,?,?)
+</codeblock> <p>Then for each row to be inserted, use one or more of the <codeph>BindXxx()</codeph> interfaces to bind values to the parameters in the insert statement, and call <codeph>Exec()</codeph> to do the insert, then call <codeph>Reset()</codeph> to rewind the program counter of the internal bytecode in preparation for the next run. </p> <p>For INSERT statements, reusing a single prepared statement in this way will typically make your code run two or three times faster. </p> <p>You can manually manage a cache of prepared statements, keeping around only those prepared statements that you know will be needed again and closing prepared statements using <codeph>Close()</codeph> when you are done with them or when they are about to fall out of scope. But depending on the application, it can be more convenient to create a wrapper class around the SQL interface that manages the cache automatically. </p> <p>A wrapper class can keep around the 5 or 10 most recently used prepared statements and reuse those statements if the same SQL is requested. Handling the prepared statement cache automatically in a wrapper has the advantage that it frees you to focus more mental energy on writing a great application and less effort on operating the database interface. It also makes the programming task less error prone since with an automatic class, there is no chance of accidentally omitting a call to <codeph>Close()</codeph> and leaking prepared statements. </p> <p>The downside is that a cache wrapper will not have the foresight of a human programmer and will often cache prepared statements that are no longer needed, thus using excess memory, or sometimes discard prepared statements just before they are needed again. </p> <p>This is a classic ease-of-programming versus performance trade-off. For applications that are intended for a high-power workstation, it can be best to go with a wrapper class that handles the cache automatically. But when designing an application for a resource constrained devices where performance is critical and engineering design talent is plentiful, it may be better to manage the cache manually. </p> <p>Regardless of whether or not the prepared statement cache is managed manually or automatically using a wrapper class, reusing prepared statements is always a good thing, and can in some cases double or triple the performance of the application. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link href="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita"><linktext>SQL Index
+                Tips</linktext> </link> <link><linktext/></link><link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B998B8FC-3DC3-57B5-A4E6-C4D903B4ACF9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-B998B8FC-3DC3-57B5-A4E6-C4D903B4ACF9" xml:lang="en"><title>Creating
+a Source Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A data source plugin needs to implement the pure virtual, and where appropriate
+override the virtual, <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> base class mixin functions.
+This section describes how to implement the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> base
+class.</p>
+<p>Note that a single plugin can be both a source and a sink, i.e. derive
+from both <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> and <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref>. </p>
+
+
+<p><b> Source Plugin Instantiation</b> </p>
+<p>A client application instantiates a source plugin using the <xref href="GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841.dita#GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841/GUID-7649C65D-AFF5-3216-A149-E743FB7B826C"><apiname>RMMFController::AddDataSource()</apiname></xref> method,
+passing in the UID of the source as one of the method's parameters. The controller
+framework instantiates a source via the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-284ECE44-65BF-343A-A1D1-2B9BA0F5BE3F"><apiname>MDataSource::NewSourceL()</apiname></xref> method,
+rather than the more conventional <codeph>NewL()</codeph> method. This is
+because a plugin can be both a source and a sink of multimedia data, in which
+case the instantiation methods for sources and sinks need to be distinct.
+The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> base class instantiation methods are described
+below, followed by information on how to write the instantiation methods in
+the derived class. </p>
+<p>The derived data source needs to implement <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-284ECE44-65BF-343A-A1D1-2B9BA0F5BE3F"><apiname>MDataSource::NewSourceL()</apiname></xref> and <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-3B28E1FD-F785-370E-A406-87E80B1B59DE"><apiname>MDataSource::ConstructSourceL()</apiname></xref> for
+instantiation. The constructor of a data source plugin needs to specify what
+type of data source it is. This is achieved by passing a type UID into the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> constructor. </p>
+<p>If the source has additional methods, that are not part of the base <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> class,
+then a further layer of instantiation is required. For example, suppose <codeph>CAcmeDataSource</codeph> has
+some extra methods that are not part of the base class, then an additional
+mxin interface for this class is required. For example:</p>
+<codeblock id="GUID-2DCF0159-3C31-5AB0-B074-A09502D6A0F9" xml:space="preserve">class MAcmeDataSource : public MDataSource
+    {
+public:
+    inline static MAcmeDataSource* NewAcmeDataSourceL(TUid aImplemetationUid, const TDesC8&amp; aInitData);
+    //This allows dynamic linkage to the Class:    
+    }
+</codeblock>
+<p>The <codeph>NewAcmeDataSourceL</codeph> should be implemented as follows:</p>
+<codeblock id="GUID-94313354-6AE8-5B88-9E26-E84033D7A5F2" xml:space="preserve">MAcmeDataSource* retPtr = static_cast&lt;MAcmeDataSource*&gt;(MDataSource::NewSourceL(aImplementationUid, aInitData)); </codeblock>
+<p>The class should derive from the <codeph>MAcmeDataSource</codeph> rather
+than <codeph>MDataSource</codeph> as follows:</p>
+<codeblock id="GUID-CA92EA62-9533-5576-88FA-79A6A05196DF" xml:space="preserve">class CAcmeDataSource: public CBase, public MAcmeDataSource
+    {
+public: 
+    MDataSource* NewSourceL();
+</codeblock>
+
+
+<p><b>Source Plugin Buffer Creation</b> </p>
+<p>Buffers are required to transfer data between a data source and a data
+sink. These buffers can be created by the source and/or sink. The methods
+below are for source buffer creation.</p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-F8E0C364-A401-3EDF-B46B-55286FCEF011"><apiname>MDataSource::CanCreateSourceBuffer()</apiname></xref> method must
+be implemented by the data source plugin. Most sources should be capable of
+creating their own buffer and so would return <codeph>ETrue</codeph>. Note
+that just because a source can create a source buffer, this does not guarantee
+that the framework will use the buffer created by the source. The buffer that
+is used depends on factors such as whether a null codec is used and whether
+the sink is the reference buffer, in either of these cases the source buffer
+will not be used.</p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-047464BF-66A3-3B42-ACB3-528F4098FA6F"><apiname>MDataSource::CreateSourceBufferL()</apiname></xref> method is called
+by the framework to create a buffer from the source. This method should create
+a buffer of length zero bytes and a maximum length of an appropriate size
+for the source. The appropriate size is determined by source specifics, such
+as whether the source data ultimately comes from hardware that supplies buffers
+of a certain size. Generally a larger buffer size means a smaller number data
+transfers between the source and sink are required. The returned buffer must
+derive from <xref href="GUID-9A7A83ED-592B-3A0C-BABB-3B90099BCF7C.dita"><apiname>CMMFBuffer</apiname></xref> but will be a derived buffer, for
+example <xref href="GUID-AE26E6A4-C1AD-3B35-B5F7-CE0AB60169BB.dita"><apiname>CMMFDataBuffer</apiname></xref> or a video frame buffer.</p>
+<p>The overloaded <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-047464BF-66A3-3B42-ACB3-528F4098FA6F"><apiname>MDataSource::CreateSourceBufferL()</apiname></xref> method,
+which has an additional <codeph>aSinkBuffer</codeph> parameter, is optional.
+The default implementation is identical to the standard <codeph>CreateSourceBufferL</codeph> above.
+This version is used where the nature of the sink buffer may impact the created
+source buffer. This method should only be overridden if the size and/or type
+of the sink buffer can influence the size and/or type of the created source
+buffer.</p>
+
+
+<p><b> Data Transfer</b> </p>
+<p>Data transfer methods are used by a datapath to perform the transfer of
+data between the source and the sink.</p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-F9457D80-0FA4-3133-BB70-1AEF18AEEC81"><apiname>MDataSource::FillBufferL()</apiname></xref> method is used to obtain
+data from the data source. It is a passive method in that an external component
+such as a datapath must ask the source to fill the buffer with data from the
+source. The <codeph>MDataSource::FillBufferL()</codeph> method may operate
+either synchronous and asynchronously:</p>
+<ul>
+<li id="GUID-E50C97F2-5531-5081-94F0-8A5DBB3025CE"><p>A synchronous source
+is one in which the mechanism for filling the source buffer is synchronous.
+That is, the source fills the buffer and calls the <codeph>BufferFilledL()</codeph> method
+on the consumer of the dat, which is itself derived from <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita"><apiname>MDataSink</apiname></xref> to
+indicate that the buffer has now been filled.</p> </li>
+<li id="GUID-67FEB4E0-F9DE-5F7E-B38A-44FFDA1F16D2"><p>An asynchronous source
+is one in which the mechanism for filling the source buffer operates asynchronously.
+The <codeph>MDataSource::FillBufferL()</codeph> method will typically make
+an asynchronous request, for example via an active object, such that when
+the <codeph>FillBufferL</codeph> method has returned, the buffer has not yet
+been filled. The <codeph>BufferFilledL()</codeph> call back will occur some
+time later when the asynchronous request has been processed.</p> </li>
+</ul>
+<p>The <codeph>MDataSink::BufferFilledL()</codeph> method is the callback
+on a sink when the source has filled a buffer with source data. The source
+normally operates in a passive mode in that a sink of data will ask the source
+to fill a buffer via a call to <codeph>MDataSource::FillBufferL()</codeph> above.
+However, the sink that makes the <codeph>FillBufferL()</codeph> call on the
+source needs this callback to know when the buffer has been filled. This is
+applicable to a datapath which is both a sink and source of data. The actual
+sink, as seen by the controller, would normally operate passively and return <codeph>KErrNotSupported</codeph> for
+this procedure.</p>
+<p>The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-2B3B176E-47C3-34E6-9F12-2FB70463759D"><apiname>MDataSink::EmptyBufferL()</apiname></xref> method is used to transfer
+data to the data sink. This is a passive method in that an external component,
+such as a datapath, must send the buffer with data to the sink. This method
+may operate either synchronously or asynchronously:</p>
+<ul>
+<li id="GUID-5D31EF73-0202-5506-8333-8E75C43C140F"><p>A synchronous sink is
+one in which the emptying of the sink buffer is synchronous. That is, the
+sink finishes processing the buffer and then calls the <codeph>BufferEmptiedL()</codeph> method
+on the data supplier.</p> </li>
+<li id="GUID-6CA3D7C0-0730-5153-938A-BE3F3FF865F3"><p>An asynchronous sink
+is one in which the mechanism for emptying the sink buffer operates asynchronously.
+The <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-2B3B176E-47C3-34E6-9F12-2FB70463759D"><apiname>MDataSink::EmptyBufferL()</apiname></xref> method will typically make
+an asynchronous request, for example via an active object, such that when
+the <codeph>EmptyBufferL()</codeph> method has returned, the buffer is not
+yet available for reuse. The <codeph>BufferEmptiedL()</codeph> call back should
+occur some time later when the asynchronous request has been processed.</p> </li>
+</ul>
+<p>Note that the 'Empty' in the method name does not imply that the sink really
+has to empty the buffer. The returned buffer does not have to contain no data
+and have a length of 0. The buffer passed back to the supplier by the <codeph>BufferEmptiedL()</codeph> could
+be the same buffer that was passed in with the <codeph>EmptyBufferL()</codeph> method,
+although it does not have to be. The buffer passed back is intended to be
+used as the next buffer passed into the subsequent call to <codeph>EmptyBufferL()</codeph>.</p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-48568E16-4AB4-3C76-A81B-ABE2A8ECF6A2"><apiname>MDataSource::BufferEmptiedL()</apiname></xref> method is the callback
+on the source when the source asks a sink to empty a buffer that originated
+from the sink. The sink normally operates in a passive mode (will not ask
+the source to fill a buffer with data) in that a source of data will ask the
+sink to empty a buffer via a call to <codeph>EmptyBufferL()</codeph> above,
+but a source can ask a sink to empty a buffer by calling <codeph>EmptyBufferL()</codeph> on
+the sink. In which case the sink informs the source that it has finished with
+the buffer by calling the source's <codeph>BufferEmptiedL()</codeph> method.
+Sources which only support the passive mode of operation should return <codeph>KErrNotSupported</codeph>.</p>
+
+
+<p><b>Source State Methods</b> </p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita"><apiname>MDataSource</apiname></xref> mixin provides a number of state-related
+functions used to inform a source/sink that the data path (via the controller)
+has made a transition to a particular state. These state transition methods
+are usually called on the source/sink from the datapath and so will be called
+on the data source/sink plugin. These methods are not pure virtual and so
+it is not compulsory to implement them. </p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-ABDE0CD2-2FED-34A5-991C-10F7C998D377"><apiname>MDataSource::SourceThreadLogon()</apiname></xref> method indicates
+to the source that it can perform any thread specific initialisation. This
+is so that the thread in which the data source is instantiated is not necessarily
+the same thread in which the actual transfer of data between the source and
+the sink takes place. It is only necessary to provide an implementation of <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-ABDE0CD2-2FED-34A5-991C-10F7C998D377"><apiname>MDataSource::SourceThreadLogon()</apiname></xref> if
+the source has thread specific initialisation and/or can generate events during
+data transfer.</p>
+<p>The <xref href="GUID-8512F793-107A-3166-A62F-750696D942CE.dita"><apiname>MAsyncEventHandler</apiname></xref> must also be passed into the
+source in the same thread in which the source is to transfer data. If the
+source can generate events during a data transfer, then it must keep the reference
+to event handler.</p>
+<p>Implementation of the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-C12C9339-F515-3A60-9CA1-DDB4F9891D71"><apiname>MDataSource::SourcePrimeL()</apiname></xref>, <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-2078F38C-DE70-3D20-BC0A-CF522AD9F39C"><apiname>MDataSource::SourcePlayL()</apiname></xref>, <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-91ED949B-9440-3E31-AAA5-D132F3F6DDC4"><apiname>MDataSource::SourcePauseL()</apiname></xref> and <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-A1A741E8-A492-3953-BD85-AFBE638F8146"><apiname>MDataSource::SourceStopL()</apiname></xref> methods is optional. They
+are called when a controller performs a transition to the corresponding state.
+For example, if the controller starts, or resumes, playing then <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-2078F38C-DE70-3D20-BC0A-CF522AD9F39C"><apiname>MDataSource::SourcePlayL()</apiname></xref> is
+called.</p>
+<p>Implementation of the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-1AD10FF2-F2AD-3E1C-A132-348BD4AD7FFD"><apiname>MDataSource::SouceThreadLogoff()</apiname></xref> method
+is optional This method is called when the controller has finished with the
+data source and is called in the same thread as the data transfer. This allows
+the data source to perform any thread specific destruction such as the closure
+of handles. </p>
+
+
+<p><b>Source Data Types</b> </p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-FBAA4A85-0481-32A8-9ADE-325DBA8F28C8"><apiname>MDataSource::SourceDataTypeCode() </apiname></xref> method must be
+implemented by the data source. It should return the data type of the source
+for the specified media ID. Some data sources may need their data type to
+be explicitly set, via the <codeph>SetSourceDataTypeCode</codeph> method or
+via negotiation with a data sink, in which case this function should either
+return a default <codeph>FourCC</codeph> code, or a <codeph>NULL</codeph> code,
+to indicate that the data type is not yet known.</p>
+<p>Implementation of the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-7EDAC41D-630F-39A4-97B6-06384E214592"><apiname>MDataSource::SetSourceDataTypeCode()</apiname></xref> method
+is optional. It should be implemented where the source can support multiple
+data types.</p>
+
+
+<p><b>Source Sink Negotiation</b> </p>
+<p>In many cases a data source will need to adjust its settings and data type
+according to the settings of the data sink. The opposite is also true in that
+a data sink may need to adjust its settings and data type according to the
+data source. This process is known as negotiation. An example of negotiation
+is where the source is an audio input recording to a clip of a certain data
+type. The source audio input (such as a microphone) attempts to match its
+settings to that required by the clip. For example, if the audio input supports
+the same data type as that required by the clip to be recorded to, then the
+negotiation should set the source audio input to the same data type and settings
+as the clip sink.</p>
+<p>Implementation of the <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-1AD0F9E7-A7CC-3E81-8E03-D6E694767676"><apiname>MDataSource::NegotiateSourceL()</apiname></xref> method
+is optional. It needs to be implemented by a data source only if the source
+needs to configure itself in accordance with the sink.</p>
+<p>Implementation of the <xref href="GUID-708A7583-5C55-3FE1-8238-974C8821588D.dita#GUID-708A7583-5C55-3FE1-8238-974C8821588D/GUID-022E2D1E-AFCD-3DD8-89EB-FC7E8D1F09F4"><apiname>MDataSink::NegotiateL()</apiname></xref> method
+is optional. It only needs to be implemented by a data sink if the data sink
+needs to configure itself in accordance with the source. </p>
+<p>Note that it is not always necessary to call both the source and sink negotiate
+functions. It is up to the controller to determine whether one, or both, are
+the most appropriate. The controller is also responsible for determining the
+sequence of the negotiate functions. For example, if an audio input data source
+is negotiating with a format sink such that the audio input needs to adjust
+it's settings to that of the sink, then there is need to perform this negotiation
+until the sink has been configured.</p>
+
+
+<p><b>Source Custom Commands</b> </p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-A8D195EE-795A-3EBE-A2EC-0B0321D95DBD"><apiname>MDataSource::SourceCustomCommand()</apiname></xref> method facilitates
+the use of custom commands. An example implementation is shown below:</p>
+<codeblock id="GUID-BA1BAE27-9C99-5C78-9112-178115E4784F" xml:space="preserve">void CAcmeDataSource::SourceCustomCommand(TMMFMessage&amp; aMessage)
+    {
+    // First, check we can handle message by checking its interface id
+    if (aMessage.InterfaceId() != KUidAcmeDatasourceCustomCommandInterface)
+        {
+        aMessage.Complete(KErrNotSupported);
+        return;
+        }
+
+    // Next, dispatch the command to the appropriate method.
+    TInt error = KErrNone;
+    switch (aMessage.Function())
+        {
+    case EAcmeDatasourceCustomCommandOne:
+       error = HandleCustomCommandOne(aMessage);
+       break;
+    case EAcmeDataSourceCustomCommandTwo:
+       error = HandleCustomCommandTwo(aMessage);
+       break;
+    default:
+       error = KErrNotSupported;
+       break;
+       }
+    aMessage.Complete(error);
+    }
+</codeblock>
+<p>Use of the custom command mechanism is preferable to adding extra methods
+as it avoids extra casting as described is required for source/sink instantiation.</p>
+
+
+<p><b>Source Priority Settings</b> </p>
+<p>The <xref href="GUID-2230F976-A798-30EB-ABA6-09C86716A4B5.dita#GUID-2230F976-A798-30EB-ABA6-09C86716A4B5/GUID-71972EC3-9389-3893-A998-482C8A9B537B"><apiname>MDataSource::SetSourcePrioritySettings()</apiname></xref> method
+is optional. It is used to provide a mechanism to determine which source should
+have priority in cases where more than one client wishes to use the same physical
+source. An example might be an audio output, although several audio output
+sinks can be created, the actual hardware may only have one physical speaker.
+Therefore, if one audio output is being used to play music, and another is
+being used to play a ring tone due to an incoming call, then the latter needs
+to take precedence. <xref href="GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3.dita"><apiname>TMMFPrioritySettings</apiname></xref> contains an <codeph>iPriority
+TInt</codeph> data member, where 100 is maximum priority, 0 is normal and
+-100 is minimum priority. The <xref href="GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3.dita#GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3/GUID-3B14D763-139C-3A4E-9640-CABBC3427D6E"><apiname>TMMFPrioritySettings::TMdaPriorityPreference</apiname></xref> and <xref href="GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3.dita#GUID-AA73C7C3-5874-34D1-8879-597B0900E9F3/GUID-A2E1FCFD-2058-3E1D-9FEF-C562F613C65D"><apiname>TMMFPrioritySettings::TMMFStateA</apiname></xref> data members provide further information which may be used if required.
+These specify whether the priority applies to recording or playing.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC"><title>Writing from a Data Stream</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to write data from a data stream to a database. </p> <section><title>Introduction</title> <p>This is useful when populating your database with the results of some other operation. </p> </section> <section><title>Basic procedure</title> <p>The high level steps to write from a data stream to a database table are shown here: </p> <ol id="GUID-FDE9AAB3-C033-5700-B173-75F229BFA230"><li id="GUID-117F41A0-B71D-5327-A053-F9C458636D48"><p>Instantiate the necessary objects. </p> </li> <li id="GUID-6999251A-C025-5F3C-AEEF-B9FBED0C5AF5"><p>Write data into the table. </p> </li> <li id="GUID-4E8B4501-9EAF-5B31-8C6D-6D28BAB82445"><p>Commit the stream. </p> </li> </ol> </section> <section><title>Writing from a data stream into a table</title> <p>The process of writing data from a data stream into a table can be explained as follows: </p> <p><b> Instantiate the necessary objects</b> </p> <ol id="GUID-9EDAB491-57F6-59E9-A7FA-ADB5F1E7E8F7"><li id="GUID-C21DE9E5-6A8D-5B18-9D95-D978BC1ABF20"><p>Instantiate an object of the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> and <xref href="GUID-6313887C-8DE0-3702-BF4B-0622BAB2EE8E.dita"><apiname>RSqlParamWriteStream</apiname></xref> class. Also declare the variables as shown. </p> <codeblock id="GUID-83A9423B-4CC6-5965-B25A-01748EFA85C8" xml:space="preserve">RSqlStatement myStatement;
+TInt err;
+TInt myParameterIndex;
+RSqlParamWriteStream myStream;
+RBuf buf;
+</codeblock> </li> <li id="GUID-5C911C98-E0DB-5DE8-9FDB-A154F6C4746E"><p>Clean up the stack. </p> <codeblock id="GUID-F5445748-B8A6-50F5-9066-ECFC2CC8A866" xml:space="preserve">CleanupClosePushL(myStream);</codeblock> </li> </ol> <p><b> Write data into the table</b> </p> <ol id="GUID-0AA1F57B-13A2-5E13-8D42-7B0A4FE6F36B"><li id="GUID-38F8CC09-123A-59B5-B51B-01AD770A4F19"><p>Obtain access to the data as a stream of characters. </p> <codeblock id="GUID-61291241-3C46-5624-A355-FA370B3142D0" xml:space="preserve">User::LeaveIfErrormyStream.BindTextL(myStatement,myParameterIndex));</codeblock> </li> <li id="GUID-C5D72E6D-935B-5708-B05F-24F1C3B3FFE1"><p>Write the buffer. </p> <codeblock id="GUID-92F8A3E8-D0F6-5065-9983-64453465BF18" xml:space="preserve">myStream.WriteL(buf);</codeblock> </li> </ol> <p><b> Commit the stream</b> </p> <p>Commit the stream. This ensures that the streamed data is written into the table and cannot be rolled back. </p> <codeblock id="GUID-426B03C1-A1DE-5D03-92B5-C79C3BD0ADA9" xml:space="preserve">myStream.CommitL();</codeblock> </section> <section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying a Database</xref>  </p> <p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting a Row into a Table</xref>  </p> <p> <xref href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita">Deleting Rows from a Table</xref>  </p> <p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a Buffer</xref>  </p> <p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"> Reading to Memory </xref>  </p> <p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref>  </p> <p>Writing from a Data Stream - This document </p> <p> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-B9F07057-4B31-5FE8-BE4C-98CC8151CD29.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-B9F07057-4B31-5FE8-BE4C-98CC8151CD29" xml:lang="en"><title>Single
+Phase Constructor Tutorial</title><shortdesc>Single phase construction is enabled by defining the <apiname>CONSTRUCTORS_MAY_LEAVE()</apiname> macro
+in a public section of a class definition if the single phase construction
+is part of the public interface of the class. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p><b>Required background</b></p><p>Before beginning you must know
+the following: </p> <ul>
+<li id="GUID-DC57A39F-122C-545C-A2A1-D26F71209C10"><p> <b>RAII:</b> The Resource
+Acquisition Is Initialization (RAII) idiom is the basis of the implementation
+of the smart pointer class templates. </p> </li>
+<li id="GUID-C0228985-A32D-5652-8CCC-4BF401998FCC"><p> <xref href="GUID-764C2888-7EA7-3F58-B519-878A82E879CA.dita"><apiname>CONSTRUCTORS_MAY_LEAVE()</apiname></xref>:
+This macro is used for enabling single phase construction, particularly for
+CBase-derived classes. </p> </li>
+</ul> </prereq>
+<context><p>Single phase constructor provides a means to use the RAII concepts
+for Symbian Developers who are familiar with C++ standards. It is provided
+as a tool and needs to be used after careful consideration. </p> </context>
+<steps id="GUID-DF51DCE9-ACA3-4376-B4B3-4A31728670D2">
+<step id="GUID-FA70E487-145A-4502-BB58-B09A42F69183"><cmd>Enabling single
+phase constructor</cmd>
+<stepxmp><p>Single phase construction is enabled by defining the CONSTRUCTORS_MAY_LEAVE()
+macro in a public section of a class definition if the single phase construction
+is part of the public interface of the class. An example of this is given
+below: </p><codeblock xml:space="preserve">class CManagedUserSinglePhase : public CBase
+	{
+public:
+	CONSTRUCTORS_MAY_LEAVE
+	static CManagedUserSinglePhase* NewL(CTicker* aTicker)
+		{
+		return new(ELeave) CManagedUserSinglePhase(aTicker);
+		}
+	. . .
+	}	</codeblock></stepxmp>
+</step>
+<step id="GUID-5A449AB7-512E-4701-928A-2209C1A41A06"><cmd>Using single phase
+constructor</cmd>
+<stepxmp><p>This macro must be used within a public section of a class definition,
+if the single phase construction is part of the public interface of the class.
+Other classes, not derived from CBase will not be affected by this macro. </p><p>The
+following example code snippet the class demonstrates the use of an embedded
+string in the ingle-phase construction pattern, where a leave-safe constructor
+fully initializes the object.  </p><codeblock xml:space="preserve">class CStringUserSinglePhase : public CBase
+	{
+public:
+		CONSTRUCTORS_MAY_LEAVE
+
+	static CStringUserSinglePhase* NewL(const TDesC&amp; aName)
+		{
+		return new(ELeave) CStringUserSinglePhase(aName);
+		}
+
+	~CStringUserSinglePhase()
+		{
+		
+		}</codeblock></stepxmp>
+</step>
+<step id="GUID-D41D3443-FBFA-44DA-8E35-E82C12829F3D"><cmd>Need to declare the CONSTRUCTORS_MAY_LEAVE macro</cmd>
+<stepxmp><p>This is necessary because Symbian platform currently lacks the
+placement delete operator counterparts corresponding to the CBase placement
+new operators that take a TLeave parameter (new(ELeave)). The macro defines
+these missing placement delete operators and ensures that all allocated memory
+can be freed if a constructor leaves.</p></stepxmp>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita"><linktext>EUser High
+Level Library Overview</linktext></link>
+<link href="GUID-96AB1D5A-932E-55BE-A025-F01608546B99.dita"><linktext>RAII Idiom</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231" xml:lang="en"><title>Receiving
+Data from Sensors</title><shortdesc>You can implement a data listener to receive data from the sensors.
+Based on the data received, you can perform specific actions on the Symbian
+device. For example, if you receive information from the sensor about the
+distance between the device and the user then based on this information, you
+can disable or enable the loudspeaker mode on the Symbian device.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-E09C6ABC-F717-4791-A2EE-491421D2BD30">       <p>Before listening
+for sensor channel data, you must <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88">open
+the sensor channel</xref>.</p>     </prereq>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-5-1-3-2">
+<step id="GUID-CE0EE6EE-84A7-46F6-8590-C75FAA381843"><cmd>Implement the data
+listener.</cmd>
+<info><p>Inherit from the <parmname>MSensrvDataListener</parmname> interface
+and implement the following pure virtual functions: <xref href="GUID-519E744E-246C-3F4A-A869-F25B03F1126F.dita#GUID-519E744E-246C-3F4A-A869-F25B03F1126F/GUID-92EDE76E-F5D8-3D45-939B-FD5C03347AE8"><apiname>MSensrvDataListener::DataReceived</apiname></xref>, <xref href="GUID-519E744E-246C-3F4A-A869-F25B03F1126F.dita#GUID-519E744E-246C-3F4A-A869-F25B03F1126F/GUID-F6C22940-A276-38C2-890F-CA45B75D613F"><apiname>MSensrvDataListener::DataError</apiname></xref> and <xref href="GUID-519E744E-246C-3F4A-A869-F25B03F1126F.dita#GUID-519E744E-246C-3F4A-A869-F25B03F1126F/GUID-4062844D-2F25-38FC-B91A-DD5B41E6FF3F"><apiname>MSensrvDataListener::GetDataListenerInterfaceL</apiname></xref></p><codeblock xml:space="preserve">class DataListener:public MSensrvDataListener
+    {
+    public:
+        void DataReceived(CSensrvChannel&amp; aChannel, TInt aCount, TInt aDataLost )
+        {
+        ...
+         //Implementation
+        }
+    void DataError( CSensrvChannel&amp;, TSensrvErrorSeverity)
+        {
+        ...
+         //Implementation
+        }
+    void GetDataListenerInterfaceL( TUid, TAny*&amp;)
+        {
+        ...
+         //Implementation
+        }
+    };</codeblock></info>
+</step>
+<step id="GUID-107B26D8-CD5A-4571-8441-F1A5A2C0EB2B"><cmd>Start data listening.</cmd>
+<info><p>Pass an instance of data listener implementation using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-F851A108-C72F-3132-BE15-DC41CACB64F9"><apiname>CSensrvChannel::StartDataListeningL()</apiname></xref> function.</p><codeblock xml:space="preserve">//Instance of the data listener implementation
+DataListener dataListener; 
+...
+CSensrvChannel* channel;
+...
+channel-&gt;StartDataListeningL(&amp;dataListener, 1, 1, 0);
+...</codeblock><p> When new data is available to be read in the sensor channel,
+the client is notified by the <xref href="GUID-519E744E-246C-3F4A-A869-F25B03F1126F.dita#GUID-519E744E-246C-3F4A-A869-F25B03F1126F/GUID-7EE31046-31A6-356E-AFEF-2E8C003A7F15"><apiname>MSensrvDataListener::DataReceived(CSensrvChannel
+&amp;,TInt,TInt)</apiname></xref> callback function. The channel data is received
+into the receiving buffer. The receiving buffer is allocated from the heap
+in the client's thread and its size is the channel data item size multiplied
+by the maximum number of data items. </p></info>
+</step>
+<step id="GUID-40F9F566-475E-4ECD-B420-70EB1B77DEAA"><cmd>Read the channel
+data from the receiving buffer using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-EC1AF564-F05D-3729-B0C9-7573A1F79B86"><apiname>CSensrvChannel::GetData()</apiname></xref> function.
+For more information about handling data notifications, see the following <xref href="GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita#GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231/5876a529-0484-497d-8cf8-9ceb9c725388">Example</xref>.</cmd>
+</step>
+<step id="GUID-D3928C98-3D10-40BE-A63E-584969AA0416"><cmd>After you get the
+required sensor data feeds from the sensor channel, you can stop data listening
+using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-0129F5FA-BD26-37F0-8FE4-19F393AA817C"><apiname>CSensrvChannel::StopDataListening()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">channel-&gt;StopDataListening();</codeblock></stepxmp>
+</step>
+</steps>
+<example id="5876A529-0484-497D-8CF8-9CEB9C725388"><p>The following example
+shows how to handle the double tapping data notification that is received. </p><p>Check
+the channel type of the received data and then receive the data object using
+the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-EC1AF564-F05D-3729-B0C9-7573A1F79B86"><apiname>CSensrvChannel::GetData()</apiname></xref> function. The <parmname>aCount</parmname> parameter
+provides the details about the number of data objects in the channels receiving
+buffer. This number can be zero if the buffering period is used when data
+listening is started. The <parmname>aDataLost</parmname> parameter provides
+the details about the number of the lost data objects. For example, in heavy
+load situations. </p><codeblock xml:space="preserve">void CTestClass::DataReceived( CSensrvChannel&amp; aChannel, 
+                               TInt aCount, 
+                               TInt aDataLost )
+    {
+    if ( aChannel.GetChannelInfo().iChannelType == KSensrvChannelTypeIdAccelerometerDoubleTappingData )
+        {
+        TSensrvTappingData tappingData;
+        TPckg &lt;TSensrvTappingData&gt; tappingPackage( tappingData );
+        aChannel.GetData( tappingPackage );
+        }
+    }</codeblock></example>
+<postreq id="GUID-69071DC2-EB41-43BA-8DFC-CE2D4423AF8A"><p>End the session
+with the sensor channel using the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-0B8F50A6-2CA1-316A-82AB-AA026005E810"><apiname>CSensrvChannel::CloseChannel()</apiname></xref> function.</p></postreq>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e279578_href.png has changed
Binary file Symbian3/SDK/Source/GUID-BA13D0D6-DE42-43D3-BCA8-5B83181B009E_d0e42119_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E"><title>How to use audio recorder utility</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA362536-C9C9-5BA4-BEE3-0E1AD7FA45F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BA362536-C9C9-5BA4-BEE3-0E1AD7FA45F1" xml:lang="en"><title>Authorisation</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> Authorisation contains User Prompt Service (UPS) component. This section provides detailed information of User Prompt Service and its functionalities. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA49FDC0-808B-5E05-81AC-98637214F304.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BA49FDC0-808B-5E05-81AC-98637214F304" xml:lang="en"><title>LBS
+Quick Start</title><shortdesc>Location Based Services (LBS) provides location information for
+installed applications and for remote services via a network. Location information
+can be used for location stamping artefacts such as photographs and memos,
+finding nearby services and facilities, navigation, and the ability for remote
+parties to discover the user's whereabouts. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Location-based services (LBS) use coordinates from the World Geodetic System
+(WGS 84), which is also used as a reference system by the Global Positioning
+System (GPS). </p>
+<p>The coordinates are based on values for latitude, longitude, and altitude
+(elevation above sea level). </p>
+<p>The North Pole is 90 degrees North (+90 degrees) and the South Pole is
+90 degrees South (-90 degrees). The Equator is defined as 0 degrees; locations
+above it have positive latitudes (0 to +90 degrees); those below (0 to -90
+degrees) negative ones.</p>
+<p>There are two definitions of North Pole; Magnetic North Pole and True (Geographical)
+North Pole. Any application with a compass must check how the API defines
+North Pole.</p>
+<p>The Magnetic North Pole is the point to which compasses point. The True
+North Pole defines latitude as +90 degrees. </p>
+<p>Meridians are constant longitudinal (north-south) values. The Prime (Greenwich)
+Meridian’s value is 0 degrees. WGS84, which LBS use, defines its zero meridian
+some 100 meters east of the Prime one. Locations east of the Prime Meridian
+have positive longitudinal values (0 to +180 degrees), those west (0 to -180
+degrees) have negative ones. </p>
+<p>As seen in the figure below, latitude lines are smaller near the poles.
+At the equator, one degree of longitude is roughly 111.3 km, whereas at 60
+degrees of latitude one degree of longitude is only 55.8 km, which is more
+difficult to see.</p>
+<fig id="GUID-D98458F6-8EBD-43B9-9C3C-5204BD837D2D">
+<image href="GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e240538_href.png" placement="inline"/>
+</fig>
+<section id="GUID-D4201DF5-26DD-5E46-B228-A3CAA467C7C6"><title>Getting started
+with LBS</title> <p>This section provides links to the most important documentation.</p> <p><b>For
+application developers</b> </p> <p>The <xref href="GUID-D0318BB6-0B9F-5A1C-AB0B-61BA22D28661.dita">Location
+Acquisition API</xref> is the interface that programmers use to create location-aware
+applications. The API gives developers the ability to get location fixes and
+to obtain information about the positioning technologies available to the
+mobile device. </p>      </section>
+
+<section id="GUID-CA5D2674-B469-44D8-9255-1F35CA7B8D41"><title>Technologies</title> <p>The
+main technologies enabled on the Symbian platform by the LBS subsystem are
+as follows: </p> <ul>
+<li id="GUID-62F84865-11D4-50BA-A139-7EEA7232BC8F"><p>Global Positioning System
+(GPS) </p> <p>The GPS system provides accurate, worldwide positioning. The
+main disadvantage of GPS is the long time required to obtain a position fix
+when the GPS hardware is first powered. LBS supports Assisted GPS (A-GPS)
+to reduce the time required to get a position fix. </p> </li>
+<li id="GUID-64669486-6B59-5AE4-A337-E9E50C3C3F1E"><p>Network based positioning </p> <p>Network
+based positioning is typically less accurate than GPS, but often provides
+a faster fix of adequate accuracy for some applications. </p> </li>
+<li id="GUID-05A9FF0E-A974-5CD7-A854-784CB23AA2A4"><p>Secure User Plane Location
+(SUPL) v1.0 </p> <p>SUPL defines an architecture for supporting Location Based
+Services using IP bearers to connect handsets and network hosts. The Symbian
+LBS subsystem contains a SUPL Protocol Module to support SUPL. </p> </li>
+</ul><fig id="GUID-52D81395-87C4-4706-97E5-84336EA53C69">
+<image href="GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e240595_href.png" placement="inline"/>
+</fig><p>The above figure illustrates how the location information can be
+provided to the device. Access to these location methods is provided through
+the positioning modules.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D" xml:lang="en"><title>SendAs
+Server</title><shortdesc>This section provides detailed description of the SendAs Server
+functions and how the SendAs Server processes the client request. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>SendAs Server process and data flow</title> <p>The following
+figure details the processes and data flow with SendAs Server. </p> <fig id="GUID-644B137D-D8A4-514F-9D3F-238CC69C751E">
+<title>              SendAs Server process and data flow            </title>
+<image href="GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e263269_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>SendAs Server functionality</title> <p>The following sections
+give detailed information about the SendAs sever functionality: </p> <p><b>Creating
+a SendAs message</b> </p> <p>Client applications can create a message of a
+given type that supports SendAs only in the Drafts folder of the message store.
+It uses <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita#GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6/GUID-C7CD5EC4-14EE-3375-BEA0-C7FD273C2574"><apiname>RSendAsMessage::Create()</apiname></xref> to create the message.
+An MTM can specify its support of SendAs for a message type in the following
+two ways: </p> <ul>
+<li id="GUID-E25A3621-D706-5016-9F94-AE823C597AD7"><p>The message type can
+set the <xref href="GUID-7D5C9320-17AB-381E-8369-1804EB143199.dita#GUID-7D5C9320-17AB-381E-8369-1804EB143199/GUID-4EDB6002-8750-3E7D-AC60-BFD2BD441E69"><apiname>MTM_CAPABILITIES::send_capability</apiname></xref> resource in its
+resource file. This allows the Message Server to know whether the message
+type supports SendAs without loading its MTMs. </p> </li>
+<li id="GUID-1663559F-C4CE-5B40-848C-B312E60FD8A0"><p>If the MTM does not
+declare whether it supports SendAs in its resource file, the Message Server
+loads the MTM and queries if it supports the <xref href="GUID-AB92627B-67B0-39AC-9B00-854EA1589B35.dita"><apiname>KUidMtmQueryCanSendMsg</apiname></xref> capability. </p> </li>
+</ul> <p><b>Modifying a SendAs message</b> </p> <p>Client applications can
+modify a message created by the <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita#GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6/GUID-C7CD5EC4-14EE-3375-BEA0-C7FD273C2574"><apiname>RSendAsMessage::Create()</apiname></xref> method.
+After sending the request, client applications can no longer modify the message.
+They can add the following message parts, if supported by the message type. </p> <ul>
+<li id="GUID-C84B4945-0E7A-5309-94FF-B849D16F11B7"><p>Body text </p> </li>
+<li id="GUID-169AEA41-8650-5BE4-8386-36DD3BE1215B"><p>Attachment </p> </li>
+<li id="GUID-EA862642-6FD7-5248-B7ED-6981AB73CA69"><p>BIO type </p> </li>
+<li id="GUID-BF7BDB3F-5EAA-565B-8238-3F34E4608222"><p>Recipients—address,
+alias and type. For example, To, Cc or Bcc. </p> </li>
+<li id="GUID-9509C4D9-A1B1-5C9D-9890-AEBA109ECA0A"><p>Subject </p> </li>
+</ul> <p><b>Sending a SendAs Message </b> </p> <p>When a client application
+requests to send a message, it must specify whether SendAs must get confirmation
+from the user to send the message or not. </p> <p>If a client application
+that requests a unconfirmed send is not trusted with the capabilities specified
+by the Server MTM of the given message type, the SendAs Server automatically
+performs a confirmed send. </p> <p>For a confirmed send, the SendAs Server
+uses the UI MTM for the message type to confirm the send request by querying
+the phone user. If the send is confirmed by the phone user, the SendAs Server
+moves the message to Outbox and sends the message. If the send is refused,
+then the message remains in the Drafts folder and the Send-As Server fails
+the send request. </p> <p>After the message send is initiated, the Server
+MTM for the message type takes responsibility of the message. For successful
+and unsuccessful sends, the Server MTM decides to which folder the message
+must be moved to. It also governs the rescheduling policy for a failed send
+request. </p> <p>A client application can obtain progress for both types of
+send requests. Any failures associated with the send are reported back to
+the client application through this progress information. The progress information
+also provides a send state. For example, message waiting to be sent, sending,
+message sent, or message send failed. </p> <p><b>Launching an editor for a
+message type</b> </p> <p>The SendAs Server allows client applications to launch
+an editor for a specified message type that supports SendAs. After creating
+a message, a client application can request to launch the appropriate editor.
+It can launch the editor in two ways: a fire-and-forget launch or a launch
+and wait. With the fire-and-forget launch, the client application is not notified
+when an editor is closed. The launch and wait notifies the client application
+when an editor closes. </p> <p>After the editor is launched, the SendAs Server
+is no longer responsible for that message, the editor takes the responsibility.
+The message editors are applications that are trusted with the required capabilities
+to modify and send messages of that type. They communicate directly with the
+Message Server using the Message Server APIs. </p> <p><b>Querying the message
+type registry</b> </p> <p>The SendAs Server provides several APIs to allow
+client applications to query the message type registry. The following are
+the available queries: </p> <ul>
+<li id="GUID-51165376-26AF-524E-8BA8-B4EFC0C1716D"><p>List the registered
+message types that support a specified set of message capabilities. For example,
+amount of body text allowed, attachments supported and so on. </p> </li>
+<li id="GUID-E875CF63-B35F-581B-A8AE-A04E15A356CE"><p>Obtain the available
+account names for a specified message type </p> </li>
+<li id="GUID-EBE65718-F480-5840-8A89-A47C099021E3"><p>Get the localised human
+readable name for a specified message type that supports SendAs. </p> </li>
+</ul><note> Message types that have no accounts or invalid accounts are not
+listed. Validation is done by SendAs querying whether the UI MTM supports
+validation of the accounts. If the UI MTM does not support validation, all
+accounts are assumed to be valid. If the UI MTM supports the verification,
+then the list of service IDs is passed to <xref href="GUID-1471F3BD-21BF-3600-BEA2-F3B2C6DC4FFB.dita"><apiname>InvokeSyncFunctionL</apiname></xref> using
+the <xref href="GUID-EFB2418B-F3A9-3BF6-90D2-22985845EAAE.dita"><apiname>KMtmUiFunctionValidateService</apiname></xref> command.</note> <p>The
+SendAs Server allows client applications only to query the message type registry
+about message types that support SendAs. Other message types are ignored. </p> </section>
+</conbody><related-links>
+<link href="GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita"><linktext>SendAs Overview</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA8806CC-BE7C-4927-ACF6-DA0CB6E96AAA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-BA8806CC-BE7C-4927-ACF6-DA0CB6E96AAA" xml:lang="en"><title>Indicators</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Indicators are graphical or textual objects on the screen that provide
+information about the status of the system. They cannot be used for input,
+and there is no focus on an indicator: in non-touch UI the user cannot point
+at an indicator to perform actions.</p>
+<p>The various indicator types in use are described in the following subsections.</p>
+<section><title>Using indicators in C++
+applications</title><p>The API to use for indicators is the Indicators API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA89F4DF-E2F6-5E0B-BF20-F8898FC5D5F8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BA89F4DF-E2F6-5E0B-BF20-F8898FC5D5F8"><title>Mutexes Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Synchronises exclusive access to shared resources within and between processes.</p> </section> <section><title>Description</title> <p>Mutexes are typically used to serialise access to a section of re-entrant code that cannot be executed concurrently by more than one thread. A mutex object only allows one thread into a controlled section, forcing other threads which attempt to gain access to that section to wait until the first thread has exited from that section.</p> <p>A mutex can be used by threads across any number of processes. If a resource is only shared between the threads within the same process, it can be more efficient to use a critical section.</p> <p>Mutexes are Kernel objects and, as such, are managed by the Kernel, and accessed by user programs through handles. </p> <p>The mutex handle is provided by <xref href="GUID-C0FEA3A0-7DD3-3B87-A919-CB973BC05766.dita"><apiname>RMutex</apiname></xref>.</p> <p><xref href="GUID-A907C7B1-BD90-3E8F-AEA8-5A634BC98D0D.dita"><apiname>TFindMutex</apiname></xref> is used for finding a mutex created by another process.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA96913A-38D2-4E57-BA95-52F1642A6D06.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BA96913A-38D2-4E57-BA95-52F1642A6D06" xml:lang="en"><title>Operator
+indicator</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In the Idle state, the title pane contains the operator indicator. It is
+either a text or a graphical image.</p>
+<section><p>The operator indicator is
+not accessible to applications.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BA9A7DF9-258A-5822-9115-E1102D609749.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BA9A7DF9-258A-5822-9115-E1102D609749"><title>Ownership of reference counting objects</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A reference counting object, a <codeph>CObject</codeph> type, may be owned by another. This, in turn, may be owned by yet another. </p> <p>Ownership simply reflects a natural relationship. For example, a timer is owned by a thread and a thread is owned by a process. These objects are all instances of classes derived from <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref>. </p> <p>A reference counting object assigns ownership of itself to another reference counting object using <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita#GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97/GUID-992FB670-72FC-31CA-9DE9-C7918169C022"><apiname>CObject::SetOwner()</apiname></xref>. For example: </p> <codeblock id="GUID-4D6F9852-44A4-5C3F-8B1B-1BBFA6B83C20" xml:space="preserve">
+...
+class CMyobject : public CObject
+    {
+    ...
+    };
+class CTheOwner : public CObject
+    {
+    ...
+    }
+...
+CMyobject*    owned;
+CTheOwner*    owner;
+...
+owned-&gt;SetOwner(owner);
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BAAB73D8-EF7F-5F62-B819-25EB2F5CCE3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BAAB73D8-EF7F-5F62-B819-25EB2F5CCE3E"><title>Using TFileText</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-AE64FFF5-CD6A-56AE-9A73-809F0BBD41D3"><title>Using Write()</title> <p>The code fragment below causes three records to be written. This means that three calls to <codeph>Read()</codeph> are needed to read the data. </p> <codeblock id="GUID-EBB424E4-A6DA-50B9-B3E6-A64EA01C7D75" xml:space="preserve">_LIT8(KData,"Record1\nRecord2\nRecord3");
+...
+TInt err=fileText.Write(KData);
+...</codeblock> <p><b>See also</b> </p> <p> <xref href="GUID-95310602-EA12-3AEE-BDBD-F750FC17CAC4.dita#GUID-95310602-EA12-3AEE-BDBD-F750FC17CAC4/GUID-ED60FF88-7296-300B-BE40-2CB5ADFBF5B4"><apiname>TFileText::Read()</apiname></xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D"><title>MTM Capabilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides guidelines to the MTM implementors for assigning the capability set for different types of MTMs. </p> <section><title>Description</title> <p>MTMs are implemented as DLLs. According to the Symbian platform security model a DLL can be loaded by a process only if the DLL has a capability set equal to or greater than the capability set of the process loading it. </p> <p>The characteristics of a plug-in module are described by its set of capabilities. The standard capabilities are characteristics, such as the maximum message body size, the maximum total size of a message, the character widths supported by a message type, presence or absence of support for attachments, presence or absence of support for the subject field, folders and so on. Capabilities are referenced by unique identifiers, which are managed by Symbian. </p> <p>The capability set is defined in the MMP files of the MTMs. The following sections list the capability set required by Symbian platform for each type of MTM. </p> </section> <section><title>Server MTM</title> <p>A Server MTM is always loaded by the Messaging Server. It is therefore necessary for the Server MTMs to have the following capability set assigned. </p> <p> <codeph>ReadDeviceData WriteDeviceData ProtServ NetworkControl
+          NetworkServices LocalServices ReadUserData WriteUserData</codeph>  </p> </section> <section><title>Client MTMs, UI MTMs and UI Data MTMs</title> <p>These MTMs are used by modules both within and outside of the Messaging Framework. If a Client MTM is to provide all the supported Messaging functionality it must have at least the minimum capabilities listed below. </p> <p> <codeph>ReadDeviceData WriteDeviceData NetworkServices LocalServices
+          ReadUserData WriteUserData</codeph>  </p> <p>If a Client MTM does not need to provide the complete set of Messaging functionality then a subset of the capabilities mentioned above may be selected. For example, if a Client MTM communicates over a local connection, such as IR or Bluetooth, it needs the <codeph>LocalServices</codeph> capability only and does not need the <codeph>NetworkServices</codeph> capability. Refer to the Platform Security Engineering Guide to understand the requirements for each capability recommended above. </p> <p>Authors of Client MTMs that are loaded by the standard Messaging applications must give their MTMs the capabilities that those applications have, that is, the capabilities of Client MTMs are determined by the processes that load them. </p> <p>The capabilities that need to be selected for applications that use Client MTMs depends on the functionality that those applications provide. If the Client MTM does not have those capabilities, the application will not be able to load the MTM. It is up to the creator of the MTM to make sure that it is assigned enough capabilities to be loaded into applications that require that MTM. </p> </section> <section id="GUID-ED8C15BD-A2C9-564B-8339-36C6C9C508D1"><title>Security capability specification</title> <p>With the introduction of platform security, individual MTMs are required to specify the additional security capabilities that Messaging client applications require in order to send messages by that MTM. These capabilities must be set in the <xref href="GUID-92D6CC11-C597-5D00-AAE5-866289B7462F.dita">MTM resource file</xref> that describes the MTM's properties. </p> <p>This is done using the resource structure <codeph>MTM_SECURITY_CAPABILITY_SET</codeph>. This has a single array member capabilities that specifies the required capabilities: each value must be a capability as defined in <codeph>TCapability</codeph>. For example, this resource specifies that the client must have the local services (for example, Bluetooth) capability: </p> <codeblock id="GUID-B19B4A70-BB61-5492-98DA-CE8E44D1AF8E" xml:space="preserve">
+RESOURCE MTM_SECURITY_CAPABILITY_SET 
+    {
+    capabilities = { ECapabilityLocalServices }; 
+    }</codeblock> <p>An <codeph>MTM_SECURITY_CAPABILITY_SET</codeph> must be the third resource in the resource file (following the <codeph>MTM_INFO_FILE</codeph> and <codeph>MTM_CAPABILITIES</codeph> resources), even if the MTM requires no additional capabilities to be defined. </p> <p> <codeph>MTM_CAPABILITIES</codeph> has nothing to do with platform security, but specifies flags used by <codeph>SendAs</codeph>. If the MTM can support <codeph>SendAs</codeph>, it should define the resource as: </p> <codeblock id="GUID-CC28EEDB-2CD0-57BB-A66E-FA1B73C1D596" xml:space="preserve">
+RESOURCE MTM_CAPABILITIES 
+    {
+    send_capability=1; 
+    body_capability=1; 
+    }</codeblock> <p>If the MTM does not support SendAs, use the following: </p> <codeblock id="GUID-BD133C80-D048-5E49-BBB2-66BD6D6A80D2" xml:space="preserve">
+RESOURCE MTM_CAPABILITIES 
+    {
+    }</codeblock> </section> <section><title>Specifying the capability set</title> <p>Developers are advised that keywords such as <codeph>ReadDeviceData</codeph> are case sensitive, and care should be taken when specifying them in the MMP file. For example a server side MTM will have the capability set defined in the MMP file as follows: </p> <p> <codeph>CAPABILITY ReadDeviceData WriteDeviceData ProtServ NetworkControl
+          NetworkServices LocalServices ReadUserData WriteUserData </codeph>  </p> </section> <section><title>Example</title> <codeblock id="GUID-DEF8AF54-2EA9-541F-A8D5-10C7C4690D1F" xml:space="preserve">// TXUT.MMP
+//
+// Copyright © 2000 Symbian Ltd.  All rights reserved.
+
+target          TXUT.dll
+targettype      dll
+uid      0x1000008d 0x10003C75
+VENDORID 0x70000001
+CAPABILITY   ReadDeviceData WriteDeviceData ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData LocalServices ReaduserData WriteUserData
+
+source          txut.cpp txutdll.cpp
+
+userinclude     .
+systeminclude   \Epoc32\include
+
+library         euser.lib estor.lib msgs.lib efsrv.lib 
+library         centralrepository.lib  
+
+// v2 def files
+
+#if defined(WINS)
+    deffile .\txutWINS.def
+#else
+    deffile .\txutEABI.def    
+#endif
+
+nostrictdef</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0"><title>Positioning Modules</title><shortdesc>This document describes the classes that give information about Positioning Modules. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>This document is an overview of the Positioning Module information that is available to client applications using the Location Acquisition API. A Positioning Module is a software component that allows the Location Server to communicate with the mobile device hardware that obtains position data. </p> <p>See <xref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita">How to Use Positioning Module Information</xref> for an example of how to get Positioning Module information using the Location Acquisition API. </p> </section> <section><title>Types of Positioning Modules</title> <p>In mobile devices there may be several Positioning Modules: </p> <ul><li id="GUID-124DDB54-1792-5414-92BF-2EE320962899"><p>A Positioning Module that use GPS and/or A-GPS. </p> </li> <li id="GUID-BCBDB83F-13CE-5421-AFAC-244A94D036D5"><p>A Positioning Module that uses the network to obtain cell-based positions. </p> </li> <li id="GUID-372D7C0E-B264-545D-866A-4BEBD6083DE0"><p>Positioning Modules that use other technologies, such as WLAN positioning. </p> </li> </ul> </section> <section><title>Positioning Module information classes</title> <p>The classes <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita"><apiname>TPositionModuleInfo</apiname></xref> and <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita"><apiname>TPositionQuality</apiname></xref> hold information about the capabilities of Positioning Modules and the quality of position information that they can provide. Figure 1 illustrates these classes. </p> <fig id="GUID-C2A99C08-4F58-56C3-B86B-C032C21EBBF9"><title>
+             Figure 1. TPositionModuleInfo and TPositionQuality classes 
+          </title> <image href="GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e242014_href.png" placement="inline"/></fig> </section> <section><title>TPositionModuleInfo</title> <p> <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita"><apiname>TPositionModuleInfo</apiname></xref> describes a Positioning Module. This description includes: </p> <ul><li id="GUID-25D7701B-2A8A-5738-A33A-EA6EA5A8A9C2"><p>The technology type used by the Positioning Module. </p> <p>A Positioning Module can use positioning technology which is terminal-based (such as GPS), network based, or a combination of the two (such as A-GPS). The method <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-A806BBFD-007C-372A-95F5-A53FCE1BA07F"><apiname>TPositionModuleInfo::TechnologyType()</apiname></xref> returns this information. </p> </li> <li id="GUID-58481363-B2A3-5E25-B78E-1C3F6B13F27B"><p>The capabilities of the Positioning Module. </p> <p>Different Positioning Modules have different capabilities which depend on the Positioning Module technology type. Most Positioning Modules have the capability to provide latitude and longitude information. Some Positioning Modules can also supply altitude information, course information and satellite data. This information is returned by the method <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-1C4AAC64-DAD0-39D7-BD39-3DEE548CEA84"><apiname>TPositionModuleInfo::Capabilities()</apiname></xref> as a bit mask of type <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-68CCD83C-23D2-3A90-8830-839B8CB7E712"><apiname>TPositionModuleInfo::TCapabilities</apiname></xref>. </p> </li> <li id="GUID-ACD5EC2F-0541-5116-A984-908D0FC3E3D3"><p>A unique identifier returned by <xref href="GUID-CFB2518D-1AF0-3A4F-91E7-D0612F2B3A51.dita#GUID-CFB2518D-1AF0-3A4F-91E7-D0612F2B3A51/GUID-9F461332-6933-36C9-8CF6-649212CC7EB0"><apiname>TPositionModule::ModuleId()</apiname></xref>. </p> <p>This identifier is used to select a specific Positioning Module when a client application wishes to use a specific positioning technology to obtain a location fix. </p> </li> </ul> <p>A <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita"><apiname>TPositionModuleInfo</apiname></xref> object obtains a reference to its <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita"><apiname>TPositionQuality</apiname></xref> object by calling <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-AE23F158-982D-388E-B188-D86E9951856E"><apiname>TPositionModuleInfo::GetPositionQuality()</apiname></xref>. </p> </section> <section><title>TPositionQuality</title> <p> <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita"><apiname>TPositionQuality</apiname></xref> describes the quality of information that a Positioning Module can provide. The quality describes the accuracy of information, the time to obtain a location fix, the cost of obtaining the fix and power consumption: </p> <ul><li id="GUID-F62CA8E5-841E-5DDF-9080-162BE4FA75A3"><p> <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-BF970003-EB72-3692-8540-FA79BE17F5EC"><apiname>TPositionQuality::HorizontalAccuracy()</apiname></xref> and <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-5AA1DF65-BE1D-338F-8083-60647C1BDF95"><apiname>TPositionQuality::VerticalAccuracy()</apiname></xref> return location accuracy information. </p> </li> <li id="GUID-A57721DA-FE53-5936-A21D-C2EDC37DDA4D"><p> <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-FC1FF7A2-E341-3EB8-8B7E-36C56FADCF10"><apiname>TPositionQuality::TimeToFirstFix()</apiname></xref> and <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-33E94EAF-F9A3-3C13-997B-23359DC87731"><apiname>TPositionQuality::TimeToNextFix()</apiname></xref> return a typical time to get a location fix as a <xref href="GUID-B7D6F874-1ABD-3AC6-9329-19DC54C12F18.dita"><apiname>TTimeIntervalMicroSeconds</apiname></xref> value. </p> </li> <li id="GUID-57421139-A63F-59DE-819E-1DF760CEC989"><p> <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-3C24190E-14FA-362F-8F25-D3324A35F5DC"><apiname>TPositionQuality::CostIndicator()</apiname></xref> returns a cost for using the Positioning Module to get location information. The value returned is an estimate, not a precise cost value and is of type <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-78C084A0-43F8-3040-BD98-70E2E62A5D45"><apiname>TPositionQuality::TCostIndicator</apiname></xref>. The cost estimate helps the location server to make a choice of the Positioning Module to use to get a location fix when a specific Positioning Module is not chosen by a client application. </p> </li> <li id="GUID-CD7D504D-5DEF-5E56-B9A6-A60500390D24"><p> <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-A0949CFB-FEAE-30A4-A6B5-B901DDC65850"><apiname>TPositionQuality::PowerConsumption()</apiname></xref> returns an estimate of power consumption for using a Positioning Module. This estimate is of type <xref href="GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D.dita#GUID-1AA235FA-CEC1-3853-8F96-C538C02B596D/GUID-AD77543D-625A-39CF-A1D5-F5B5636E17F7"><apiname>TPositionQuality::TPowerConsumption</apiname></xref> and as with cost, it helps the Location Server make a choice of Positioning Module to use to get a location fix. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita">How to Use Positioning Module Information</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931"><title>epocprocesspriority</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>epocprocesspriority</codeph>  <varname>priority</varname> </p> <p>Use the <codeph>epocprocesspriority</codeph> statement to specify the process priority for your executable <filepath>EXE</filepath>. </p> <p>Specify <codeph>low</codeph>, <codeph>background</codeph>, <codeph>foreground</codeph>, <codeph>high</codeph>, <codeph>windowserver</codeph>, <codeph>fileserver</codeph>, <codeph>realtimeserver</codeph> or <codeph>supervisor</codeph>. </p> <p>The value specified will be passed on to <filepath>petran</filepath> via its <codeph>-priority</codeph> switch.</p> <p>Use of this statement will have no effect under Win32 platforms.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB149ADF-3F4C-426C-8852-78FF4C144AD5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB149ADF-3F4C-426C-8852-78FF4C144AD5" xml:lang="en"><title>Using
+Compilers and IDEs</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC" xml:lang="en"><title>Pop3Example:
+An Email manager using POP3 and SMTP</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-44678B4B-8A01-566A-B8D7-8C844F85D08E"><title>Description</title> <p>This
+example application demonstrates how to create SMTP (Simple Mail Transfer
+Protocol) and POP (Post Office Protocol) accounts to send and receive emails
+respectively. The application creates dummy messages and sends them using
+SMTP. </p> <p>The application opens a session with the messaging server using <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-423E2320-FB34-3249-80D9-9AA62C9DDF60"><apiname>CMsvSession::OpenSyncL()</apiname></xref> and
+gets an instance of the client MTM (Message Type Module) registry using <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita#GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8/GUID-DBD7038B-A0E2-3791-A4C9-3A22FFCA146A"><apiname>CClientMtmRegistry::NewL()</apiname></xref>.
+Using this registry it creates POP3 client-side MTM objects for the specified
+UID. </p> <p>After creating the client MTM objects, the application creates
+POP3 and SMTP accounts using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita#GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE/GUID-5740110F-F5FD-333B-9239-1FDF9EE2E42D"><apiname>CEmailAccounts::CreatePopAccountL()</apiname></xref> and <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita#GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE/GUID-89066942-2526-3B2E-B6DC-FCEF9EC2EFB6"><apiname>CEmailAccounts::CreateSmtpAccountL()</apiname></xref> respectively.
+Settings and preferences for these accounts are configured using the <xref href="GUID-6A7DFCF7-7268-3013-A5B6-5B77B6233329.dita"><apiname>CImPop3Settings</apiname></xref>, <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> and <xref href="GUID-DFE18962-0022-3833-A8F0-6E4C969177C0.dita"><apiname>CImSmtpSettings</apiname></xref>. It creates an SMTP message using the method <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-FCDC47D2-0446-3CD7-A246-4DCED7C8A063"><apiname>CImEmailOperation::CreateNewL()</apiname></xref> and
+send it to the email address stored in the literal <codeph>KTo</codeph>. </p> <p> <b>Note</b>:
+Each email account created by the application has a pair of service entries,
+which are used to store settings required for email transport. </p> <p>The
+application also provides the <codeph>CMessAsyncWaiter</codeph> class to issue
+asynchronous requests to the messaging server and handles completed requests.
+This class implements the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> abstract interface. </p> </section>
+<section id="GUID-8ABB4326-8878-5F1E-B134-52DEE44C1DD7"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4a81a474-9ff8-4d73-8712-89ea4b8f7e36.zip" scope="external">Pop3Example.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4a81a474-9ff8-4d73-8712-89ea4b8f7e36.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-CB59C794-B808-509A-858E-1084220D3AE6"><title>Pre-requisites</title> <p>A
+null modem cable (NTRAS - New Technology Remote Access Services) must be connected
+to your system for the example to be functional. Also, change the values of
+literals <codeph>KSmtpServerAddress</codeph> and <codeph>KPopServer</codeph> defined
+in the <filepath>Pop3Example.cpp</filepath> file to your system address. </p> <p>In
+addition to the above mentioned changes, you must have an account with the
+messaging server. You can create an account using any messaging proxy server
+application such as Communigate-Pro, which is freely downloadable from <xref href="http://www.stalker.com/CommuniGatePro/#Current" scope="external">http://www.stalker.com/CommuniGatePro/</xref>.
+The name of the newly created account can either be the account name used
+by the application or a different one. If you choose to name the new account
+different from the account name used by the application, change the value
+of the literal <codeph>KPopLoginName</codeph> defined in the <filepath>Pop3Example.cpp</filepath> file
+to the new account name. </p> <p> <b>Note</b>: To check the messages sent
+by the application, you must configure your email client to retrieve messages
+for the newly created POP3 account. For information on how to configure your
+email client, refer its user guide. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref></p><p> <xref href="GUID-BDE23754-4536-3AF7-8549-3B953F51167C.dita"><apiname>MMsvSessionObserver</apiname></xref></p><p> <xref href="GUID-513528C7-4741-3494-9272-4E8F6CDBF20F.dita"><apiname>TMsvSessionEvent</apiname></xref></p><p> <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita"><apiname>CClientMtmRegistry</apiname></xref></p><p> <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref></p><p> <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref></p><p> <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref></p><p> <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref></p><p> <xref href="GUID-B3E0E2AF-DB48-3D53-A8A6-E5A3D0F0D754.dita"><apiname>TPopAccount</apiname></xref></p><p> <xref href="GUID-C1545507-56B1-3533-9D7D-1F17F95AB6F8.dita"><apiname>TSmtpAccount</apiname></xref></p><p> <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> </p></section>
+<section id="GUID-866D9B76-9D9A-5EED-8220-290ECA6F2607"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build an application. </p> <p>The POP3 example builds an executable
+called <filepath>Pop3Example.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to task away from the app launcher/shell screen to
+view the console. </p> </section>
+<section><title>See also</title> <p> <xref href="GUID-5B43ED43-21B4-54C6-8637-76554769E6FE.dita">POP3
+MTM Overview</xref>  </p> <p> <xref href="GUID-4F703F85-080F-5B77-B94D-5449764828F3.dita">SMTP
+MTM Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e303118_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9" xml:lang="en"><title>GUI App: Porting an Engine for Use in a Symbian Application</title><shortdesc>This section describes the steps to port an engine for use in a Symbian
+		application.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The application uses the FreeBSD <codeph>cksum</codeph> utility as its
+		  engine. The checksum example is an application with a user interface and an
+		  engine written in C.</p>
+<p>The first stage in porting this program is to split the project into
+		  the engine (GUIAppEng) and the application (GUIApp).</p>
+<section id="SECTION_1B097EC0E8EC43BE82B88BE0D04DC5F8"><title>The engine</title>
+<p>The engine is written in C. At its core is the <codeph>crc()</codeph>
+			 function. This function accepts a file descriptor and returns the checksum and
+			 the file size.</p>
+<p>The engine's project specification file (<filepath>GUIAppEng.mmp</filepath>)
+			 is as follows:</p><codeblock xml:space="preserve">TARGET		GUIAppEng.dll
+TARGETTYPE	dll
+UID             0x1000008d 0x01000a02
+VENDORID 0x70000001
+SOURCEPATH	.
+SOURCE		crc.c
+SYSTEMINCLUDE	\epoc32\include\libc \epoc32\include
+LIBRARY		estlib.lib euser.lib 
+
+#if defined(WINS)
+    deffile GuiAppEngWINS.def
+#else if defined(ARM)
+    deffile GuiAppEngARM.def
+#endif
+nostrictdef</codeblock>
+<p>
+			 The output file is <filepath>GUIAppEng.dll</filepath>, whose import library
+			 will be included by the UI. 
+		  </p> 
+		  <p>
+			 The first UID specified (<codeph>0x1000008d</codeph>) is the standard UID
+			 for an interface DLL. The second UID (<codeph>0x01100a02</codeph>) is unique to the
+			 <filepath>GUIApp</filepath> project. 
+		  </p> 
+		  <p>
+			 Splitting the project into engine and UI means that the definition of
+			 <codeph>crc()</codeph> in <filepath>crc.c</filepath> must be marked <codeph>EXPORT_C</codeph>
+			 because this function will be exported from the engine's DLL. 
+		  </p> 
+		  <p>
+			 For more information on DLLs, see <xref href="GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.dita">DLLs</xref>. 
+		  </p> 
+</section>
+<section>
+<title>Porting checksum - the GUI app</title>
+<p>
+			 The implementation of checksum (<filepath>GUIApp.app</filepath>) limits the
+			 user to the selection of a single file at a time and uses the default algorithm
+			 <codeph>crc()</codeph>, defined in <filepath>crc.c</filepath>, to produce a 32-bit value. 
+		  </p> 
+		  <p>
+			 The user interface provides two main menu commands; <codeph>Calculate
+			 checksum</codeph> (invokes a file selection dialog) and <codeph>View
+			 checksums</codeph>. When a file is selected and <codeph>OK</codeph> is pressed, the
+			 selected file name is retrieved and opened as shown in the following code: 
+		  </p> 
+		  <codeblock xml:space="preserve">const TUint16* fn = iFileName-&gt;PtrZ();
+int fd = wopen( ( const wchar_t* )fn, O_RDONLY, 0 ); </codeblock> 
+		  <p>
+			 This code fragment is taken from
+			 <filepath>examples\stdlib\GUIApp.cpp.</filepath> 
+		  </p> 
+		  <p>
+			 <codeph>open()</codeph> returns a file descriptor which the engine's
+			 <codeph>crc()</codeph> function uses to identify the file. The checksum is
+			 calculated (unless an error occurred in attempting to open or read the file),
+			 and is displayed. The file is closed. 
+		  </p> 
+		  <p>
+			 The file name and checksum are appended to an array, the contents of
+			 which may be viewed by selecting <codeph>View checksums</codeph>. 
+		  </p>
+</section>
+<section id="SECTION_7A8BA355A42C45C3A14EDF1756AB1126">
+		  <title>Linking to STDLIB - The project specification</title>
+		  <p>
+			 The application program includes several STDLIB header files, located
+			 in <filepath>\epoc32\include\libc\</filepath>. At link time, the program includes
+			 <filepath>estlib.lib</filepath> and the engine DLL's <filepath>.lib</filepath>
+			 (<filepath>GUIAppEng.lib</filepath>). Unlike the previous examples, this application
+			 does not link to <filepath>ecrt0.lib</filepath>. In this application there is no
+			 <codeph>main()</codeph> and Symbian platform provides its own
+			 <codeph>E32Main()</codeph>. 
+		  </p> 
+		  <p>
+			 For information on Symbian applications, their project specification,
+			 and resource files, see <xref href="GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita">How to build GUI applications</xref>. 
+		  </p> 
+		</section> 
+<section>
+		<title>Some potential issues</title>
+<ul id="UL_632D231449CE4474996ACD148CB9754D">
+<li>
+<p><b>Removing writeable static</b></p>
+        <p>
+			 The PETRAN stage of building may report a message similar to the
+			 following: 
+		  </p> 
+		  <codeblock xml:space="preserve">WARNING: Dll 'SLSUMENG[0x01000a02].DLL' has initialised data.</codeblock> 
+		  <p>
+			 This warning, which is not reported when building for the Emulator,
+			 indicates that the DLL contains non-const static data. This is not allowed in
+			 ARM builds. If it is not obvious where the problem occurs, the associated
+			 <filepath>.map</filepath> file
+			 (<filepath>epoc32\release\&lt;target&gt;\urel\&lt;dllname&gt;.map</filepath>) contains
+			 information which can help to track down the source file involved. A search for
+			 <codeph>from *(.bss)</codeph> (to find uninitialised data) or <codeph>from
+			 *(.data)</codeph> (to find initialised data) in <filepath>GUIAPPEng.map</filepath> will
+			 reveal the file in which the problem occurs, and the names of the offending
+			 variables, although static variables will not be named. 
+		  </p> 
+</li><li id="LI_BAD062FD16EC4CC8A11F13D0ACEE8378"><p><b>Include file clashes</b></p>
+<p>
+			 In C++ source files which use STDLIB routines, the Symbian platform
+			 C++ include files must be included before any of the STDLIB files. Failure to
+			 do this will result in the following warning: 
+		  </p> 
+		  <codeblock xml:space="preserve">'NULL' : macro redefinition"</codeblock> 
+</li>
+<li>
+<p><b>Mixing C and C++</b></p>
+<p>
+			 C and C++ have different views about the names of functions. If you
+			 refer to a C function from C++, ensure that its prototype is declared as
+			 <codeph>extern "C"</codeph>. If there are several such function declarations, it
+			 may be more convenient to enclose them within the following: 
+		  </p> 
+		  <codeblock xml:space="preserve">#ifdef __cplusplus
+extern "C" 
+    {
+    #endif
+    ...
+    #ifdef __cplusplus
+    }
+#endif</codeblock> 
+		  <p>
+			 See for example <filepath>examples\stdlib\GUIApp\extern.h</filepath>. 
+		  </p> 
+</li>
+
+<li id="LI_68EE8B3B25594B48864D5183BA8155AB">
+<p><b>Stack usage</b></p>
+<p>
+			 Some programs produce the following error: 
+		  </p> 
+		  <codeblock xml:space="preserve">unresolved external symbol __chkstk</codeblock> 
+		  <p>
+			 unless the amount of stack they use is reduced. Symbian threads have
+			 only 8k stack by default. 
+		  </p> 
+</li>
+
+<li>
+<p><b>Resource cleanup</b></p>
+<p>
+			 Symbian platform has a requirement that all resources which were
+			 allocated by an application must be cleaned up by the time the program
+			 terminates. On the Emulator, in debug builds, failure to do this will cause a
+			 panic from the <codeph>__UHEAP_MARKEND</codeph> macro. 
+		  </p> 
+		  <p>
+			 Because the data allocated in the thread-local storage for STDLIB's
+			 DLL (the <codeph>_reent</codeph> structure) is not automatically cleaned up when
+			 the environment is destroyed, it must be cleaned up by the user of STDLIB. 
+		  </p> 
+		  <p>
+			 The function to achieve this is <codeph>CloseSTDLIB()</codeph>. To use
+			 this function, file <filepath>epoc32\include\libc\sys\reent.h</filepath> must be
+			 included in the project. Call <codeph>CloseSTDLIB()</codeph> after the point at
+			 which it is known that code in STDLIB's DLL will no longer be called and its
+			 thread-local storage no longer needed. 
+		  </p> 
+		  <p>
+			 For example, see the destructor for <codeph>CExampleDocument</codeph> in
+			 <filepath>examples\stdlib\GUIApp\GUIApp.cpp</filepath>. 
+		  </p> 
+
+</li>
+</ul>
+
+		  
+		</section> 
+
+</conbody><related-links><link href="GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.dita"><linktext>DLLs</linktext></link><link href="GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita"><linktext>How to build GUI applications</linktext></link></related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB67D4AA-EE75-559D-8180-D1BE923F22D8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB67D4AA-EE75-559D-8180-D1BE923F22D8" xml:lang="en"><title>Streaming
+example code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>These examples demonstrate aspects of streaming. </p>
+<section id="GUID-CAA3834A-2781-5259-A0BC-4D40F39595E4"><title>SimpleClass:
+streaming a simple class to a single stream</title> <p><b>Description</b> </p> <p>This
+example shows the basic idea of streaming, i.e. externalizing a simple object
+to a stream using an <codeph>ExternalizeL()</codeph> function (or the <codeph>&lt;&lt;</codeph> operator)
+and internalizing an object from a stream using <codeph>InternalizeL()</codeph> function
+(or the <codeph>&gt;&gt;</codeph> operator). </p> <p><b>Download</b> </p> <p>Download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-54324d6f-39fb-4543-a63e-c15f09a12605.zip" scope="external">SimpleClass.zip</xref> .</p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-54324d6f-39fb-4543-a63e-c15f09a12605.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.</p> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+</ul> </section>
+<section id="GUID-F831D318-2C97-571A-B2DB-26172B22288E"><title>CompoundClass:
+streaming a compound class to a single stream</title> <p><b>Description</b> </p> <p>This
+example shows how a compound object is externalized to and internalized from
+a single stream. </p> <p><b>Download</b> </p> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-68df4c76-f86b-4ae8-a2b9-d8b3081c9cd1.zip" scope="external">CompoundClass.zip</xref>. </p><p>Download some additional
+files required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-68df4c76-f86b-4ae8-a2b9-d8b3081c9cd1.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.</p> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref> - Supports the writing of a stream
+to a store.</p></li>
+<li><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> - Supports the opening and manipulation
+of an existing stream in a store.</p></li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB6C60B4-9D34-5AC0-A4FD-3B604A35B8BD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB6C60B4-9D34-5AC0-A4FD-3B604A35B8BD" xml:lang="en"><title>Enabling
+the Bearer Mobility</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to enable the bearer mobility for an email account. </p>
+
+<section><title>Required background</title> <p>Bearer mobility is possible
+only on the connections that are established using a SNAP preference list.
+See <xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita#GUID-24860917-0FE2-5C8F-B436-96928350996E/GUID-24BF7108-9229-5F0D-A3B0-27A8E419ABFF">Important
+considerations</xref> before enabling the non-seamless bearer mobility. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-33FDAF89-19E8-59E5-8974-D000B18BE61D">
+<li id="GUID-2C19A596-9FAE-588F-A2BC-2BE1BEF9C812"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-D576D44D-C006-527F-B9BC-9D518C9B94FE"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-487865ED-E636-5724-B13A-1DDBBAD1AFE9"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class. </p> <p>Where, &lt;protocol&gt;
+is either Imap4, Pop3, or Smtp. </p> </li>
+<li id="GUID-A1118650-157A-530B-B724-145BCB23A865"><p>Populate the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+and the <codeph>CIm&lt;protocol&gt;Settings</codeph> class from central repository
+(CenRep) using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Load&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+<li id="GUID-B9239A82-DC25-5A91-BCDB-BF8BDD2710A1"><p>Use the <codeph>CIm&lt;protocol&gt;Settings::</codeph> <xref href="GUID-7E4A95AA-1614-3058-B08C-B81878C37489.dita"><apiname>SetBearerMobility</apiname></xref> function
+to set the <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> parameter to <codeph>ETrue</codeph>. </p> </li>
+<li id="GUID-ADB56EA1-FE9C-5C2F-875F-F12F4BFE94CD"><p>Store the updated settings
+classes to CenRep using the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Save&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+</ol> <note> All instances of &lt;protocol&gt; in the preceding steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>,
+or<codeph> Smtp</codeph>.</note></section>
+<section><title>See also</title> <p><xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F" xml:lang="en"><title>Touch
+support for common UI components</title><prolog><metadata><keywords/></metadata></prolog><conbody><table id="GUID-CB1618F8-C658-42A5-BF86-3AA8CDCFF681-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1">
+<tgroup cols="3"><colspec colname="col1" colwidth="0.77*"/><colspec colname="col2" colwidth="1.54*"/><colspec colname="col3" colwidth="0.69*"/>
+<thead>
+<row>
+<entry><p>Component</p></entry>
+<entry><p>Example image</p></entry>
+<entry><p>Touch support</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-5B9F25B5-5FE1-4E38-BC8D-A0273F458C36.dita">Discreet
+pop-up  menu</xref></p></entry>
+<entry><fig id="GUID-4FBB5E9D-A58B-4043-BFF1-27DEADD5A411">
+<image href="GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e46010_href.png" placement="inline"/>
+</fig></entry>
+<entry><p>Touch down keeps the pop-up visible. Touch release either dismisses
+the pop-up or activates the application-specific functionality. Most commonly,
+it activates the application.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita">Stylus pop-up
+menu</xref></p></entry>
+<entry><fig id="GUID-F042CCE6-26B3-4BC0-B9C2-80E5B36730F2-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-2-2-1">
+<image href="GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e46028_href.png" scale="27" placement="inline"/>
+</fig></entry>
+<entry><p>A single tap moves the focus and activates the item.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita">Toolbar</xref></p></entry>
+<entry><fig id="GUID-785BE9BB-451F-44BA-A061-35D613D87E61-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-3-2-1">
+<image href="GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e46046_href.png" scale="27" placement="inline"/>
+</fig></entry>
+<entry><p>Focusable or non-focusable.  A single tap moves the focus and activates
+the item (emulates a selection key press).</p></entry>
+</row>
+<row>
+<entry><p>Choice list</p></entry>
+<entry><fig id="GUID-DAC03F73-EF8E-40C7-8AB2-FB8680AD1188">
+<image href="GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e46063_href.png" scale="27" placement="inline"/>
+</fig></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita">Forms</xref></p></entry>
+<entry><fig id="GUID-0329DFE0-EC57-41D3-A3A8-E016A88EB9AD-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-5-2-1">
+<image href="GUID-85873CBE-6077-4917-B2B0-5D00C6647CC8_d0e46080_href.png" scale="25" placement="inline"/>
+</fig></entry>
+<entry><p>In the view state (i.e., a normal two-row list item), one tap moves
+focus. A second tap on a focused item activates it (emulates a selection key
+press). </p><p>In the edit state, one tap moves the focus and launches a touch
+input window. Within a focused item, the functionality is as for a text field.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita">Form items</xref></p><ul>
+<li><p>Text field</p></li>
+<li><p>Pop-up field</p></li>
+<li><p>Slider</p></li>
+</ul></entry>
+<entry><fig id="GUID-07C6A080-2E8E-47D7-84FA-F659EC137F73">
+<image href="GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e46114_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>Same as for equivalent setting items</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita">Grouped soft
+notification</xref>, <xref href="GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita">List
+query</xref>, <xref href="GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita">Grid
+query</xref></p></entry>
+<entry><fig id="GUID-53B1D1D1-CE34-4271-9AEA-57A9EE81EDA7-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-7-2-1">
+<image href="GUID-A432469D-F594-4A94-8889-142AB39A795D_d0e46138_href.png" scale="25" placement="inline"/>
+</fig></entry>
+<entry><p>A single tap moves the focus and activates the item (emulates a
+selection key press).</p></entry>
+</row>
+<row>
+<entry><p>Left/Right arrows in the <xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi
+pane</xref></p></entry>
+<entry><fig id="GUID-13EFAD4E-B334-4B64-85B0-C5EE3294FD97-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-8-2-1">
+<image href="GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e46157_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>A non-focusable item. One tap to activate.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita">Markable
+list</xref></p><p><xref href="GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita">Selection
+list</xref></p></entry>
+<entry><fig id="GUID-D0A31598-850F-41C7-BAB7-EB131975A95D-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-9-2-1">
+<image href="GUID-CA4C11C4-CDD3-4154-B401-B37A88676322_d0e46178_href.png" scale="20" placement="inline"/>
+</fig></entry>
+<entry><p>One tap moves the focus. A second tap on a focused item activates
+it (emulates a selection key press). </p></entry>
+</row>
+<row>
+<entry><p>Menu list (e.g., <xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options
+menu</xref> and submenus)</p></entry>
+<entry><fig id="GUID-9130451A-B2CF-4D0C-A673-1FDBE6143E2A-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-10-2-1">
+<image href="GUID-C14D29C2-EDE6-4AB2-A346-668591B7ED3C_d0e46198_href.png" scale="25" placement="inline"/>
+</fig></entry>
+<entry><p>A single tap moves the focus and activates the item (emulates a
+selection key press).</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-0E695106-4139-4335-A11F-BD04418DD583.dita">Multi-selection
+list</xref></p></entry>
+<entry><fig id="GUID-4D2CEDA3-7797-41EE-AD2B-0822284E2066-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-11-2-1">
+<image href="GUID-6A28C9DE-6EAC-4F39-921A-083198C89004_d0e46216_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>One tap moves the focus and marks/unmarks the item. </p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita">Preview pop-up</xref></p></entry>
+<entry><fig id="GUID-24E4E456-920A-4708-A8F0-C285A30A75A0">
+<image href="GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e46234_href.png" scale="27" placement="inline"/>
+</fig></entry>
+<entry/>
+</row>
+<row>
+<entry><p>Scroll pane</p><p>For more
+information, see <xref href="GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita">Scroll
+pane</xref>.</p></entry>
+<entry><fig id="GUID-7EE54852-05A5-40B4-9EFD-B94E8941EB8F">
+<image href="GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e46254_href.png" scale="27" placement="inline"/>
+</fig></entry>
+<entry/>
+</row>
+<row>
+<entry><p><b>Setting items</b></p></entry>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p>Pop-up setting</p></entry>
+<entry><fig id="GUID-D8DF403D-D02A-4398-B885-44184DB811F3">
+<image href="GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e46281_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>A single tap moves the focus and activates the item (emulates a
+selection key press).</p></entry>
+</row>
+<row>
+<entry><p>Multi-selection list setting</p></entry>
+<entry><fig id="GUID-B447B5A0-E786-449F-95EA-696265862662">
+<image href="GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e46298_href.png" scale="18" placement="inline"/>
+</fig></entry>
+<entry><p>The functionality is for a multi-selection list.</p></entry>
+</row>
+<row>
+<entry><p>Text setting</p></entry>
+<entry><fig id="GUID-23648A4B-D511-43FA-9CAF-8B73AC93A709">
+<image href="GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e46315_href.png" scale="18" placement="inline"/>
+</fig></entry>
+<entry><p>The cursor can be moved with the text field. Dragging selects a
+block of text.</p></entry>
+</row>
+<row>
+<entry><p>Slider setting</p></entry>
+<entry><fig id="GUID-63CEA696-D7FD-4348-A50C-722C566229BA">
+<image href="GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e46332_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>The slider thumb is draggable.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita">Setting list</xref></p></entry>
+<entry><fig id="GUID-A7120F4F-0B07-4E33-B109-9760F16B22E6-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-19-2-1">
+<image href="GUID-51AB13C3-755C-45CD-841D-1CDF45338A2F_d0e46350_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>One tap moves the focus. A second tap on a focused item activates
+it (emulates a selection key press).</p></entry>
+</row>
+<row>
+<entry><p>Softkeys (left and right) in the <xref href="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita">Control
+pane</xref></p><note>There is no middle softkey label in Touch UI</note></entry>
+<entry><fig id="GUID-0DE5F819-8841-4AFE-A0EE-897A106CFA17-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-20-2-1">
+<image href="GUID-82ECE53F-FF7B-4DFB-874D-24487E6BB5BD_d0e46371_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>A non-focusable item.</p></entry>
+</row>
+<row>
+<entry><p>Tabs in the <xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi
+pane</xref></p></entry>
+<entry><fig id="GUID-F16305FA-14A3-4252-A1D8-A30E078D5CD2-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-21-2-1">
+<image href="GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23_d0e46390_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>A non-focusable item. One tap to activate.</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita">Status pane</xref></p> 
+             <ul>
+<li>                   <p><xref href="GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita">Title
+pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi
+pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita">Battery
+pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita">Universal
+indicator pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita">Signal
+pane</xref></p>                 </li>
+</ul></entry>
+<entry><fig id="GUID-DB24556D-1254-425A-B5ED-2C76E50B7735-GENID-1-6-1-6-1-1-4-2-1-3-1-2-1-1-5-22-2-1">
+<image href="GUID-22BE45B9-7788-41B5-9E81-E0420CB956C7_d0e46446_href.png" scale="23" placement="inline"/>
+</fig></entry>
+<entry><p>Non-focusable items. A single tap activates the functionality if
+the sub-pane has one (the signal and battery panes are inactive).</p></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-60B979FB-43BD-480E-8E17-1D3DA2002CB1.dita"><b>Slider
+pop-up</b></xref></p><ul>
+<li><p><xref href="CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita">Volume Controller</xref></p></li>
+</ul></entry>
+<entry><fig id="GUID-EB3D6B8C-D64E-4814-BA38-882CE2103BD1">
+<image href="GUID-21F0026B-58EF-4E19-834D-C3C08BB89CB1_d0e46472_href.png" placement="inline"/>
+</fig></entry>
+<entry><p>Draggable slider thumb. Icons can set as tappable. </p><ul>
+<li><p>Volume slider thumb is draggable, and muting can be done directly by
+tapping the speaker icon.</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p><xref href="GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita">Universal
+indicator pop-up</xref></p></entry>
+<entry><fig id="GUID-01050257-59D4-4224-8756-22F9524B94AB">
+<image href="GUID-8C0900A8-1783-4C34-9ABD-27DC92D0AD4A_d0e46496_href.png" placement="inline"/>
+</fig></entry>
+<entry><p>Tapping the link performs the application-specific functionality.
+Most commonly, opens the application. Tapping the description text without
+the link functionality is inactive.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BB9760B4-4F3F-5326-81FB-B644C82F0E65.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BB9760B4-4F3F-5326-81FB-B644C82F0E65" xml:lang="en"><title>File Server</title><shortdesc>Symbian OS manages the basic permanent storage of data through file systems. Drives and file systems are common resources used by many programs, and access to them is managed by the <i>File Server</i>. The File Server is flexible, and can use many different file system formats and physical storage media. Applications and services access files, directories, and drives through the File Server client side API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p id="GUID-320ADCFB-8449-541D-99A5-68F29A815559"> The different storage media on a phone can use different types of file system to organise files. Symbian OS provides a number of types of file system. You can implement a new file system in a type of DLL called a file system plug-in. You can also implement DLLs called a file server extensions to change the behaviour of a file system. You can implement a DLL called a file server plug-in to extend the behaviour of the File Server itself. </p> <p>The File Server is started by the Base Starter component. The configuration of the File Server, such as which file systems are loaded to which drives, is done in the Base Starter configuration file. </p> </conbody><related-links><link href="GUID-80698E62-E310-59CA-A524-5CF44C437BE4.dita"><linktext>Base
+  Starter</linktext> </link> <link href="GUID-F3BD37EC-0CCB-5859-908F-215E22C9FC20.dita"><linktext>File Server
+  Extensions</linktext> </link> <link href="GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita"><linktext>File Server
+  Client Side</linktext> </link> <link href="GUID-6CF2F4EF-383F-5850-A522-F425A83AA89E.dita#GUID-6CF2F4EF-383F-5850-A522-F425A83AA89E/GUID-20E09BC9-35CA-594A-BA91-D8D0C928FD98"><linktext>File Systems</linktext> </link> <link href="GUID-5C223AD5-4676-58B4-B3A5-066F6B69AA4D.dita#GUID-5C223AD5-4676-58B4-B3A5-066F6B69AA4D/GUID-868866C8-E90C-5291-8732-BB4E86D6B43E"><linktext>Local Media Subsystem</linktext> </link> <link href="GUID-9540A82E-F83D-55F5-B441-868CF77468E9.dita#GUID-9540A82E-F83D-55F5-B441-868CF77468E9/GUID-CFED15B1-E768-534E-9043-7AADE45EE9AF"><linktext>Media Drivers</linktext> </link> <link scope="external" href="http://developer.symbian.com/wiki/display/ppg/Chapter+9+-+The+File+Server"><linktext>Symbian OS Internals book online at SDN++ (SDN++ login required):
+  Chapter 9 - The File Server</linktext> </link> <link scope="external" href="http://developer.symbian.com/wiki/display/ppg/Chapter+10+-+The+Loader"><linktext>Symbian OS Internals book online: Chapter 10 - The
+  Loader</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140" xml:lang="en"><title>Clipboard</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Symbian platform supports the concept of cut, copy and paste by providing
+a clipboard. An application can copy data to the clipboard and the same data
+can then be pasted in by the same application or by any other application. </p>
+<p>The clipboard is a resource which is shared by all applications. An application
+must, therefore, hold the clipboard for the minimum time possible. </p>
+<section><title>Cut, copy and paste</title> <p>The clipboard is encapsulated
+by the <codeph>CClipboard</codeph> class. Applications use this class when
+they place data on, or retrieve data from the clipboard. </p> <p>It is implemented
+as a direct file store. When the data is placed on the clipboard, it is stored
+in the clipboard's store as a stream or a network of streams. Every data type
+placed on the clipboard is identified by a UID. This allows a pasting application
+to identify the required data. </p> <p>It uses a stream dictionary to maintain
+UID and stream ID pairs, and always makes the stream dictionary the root stream
+of the store. </p> <p>The essential features of the <codeph>CClipboard</codeph> class
+are shown in the following diagram: </p> <fig id="GUID-22419444-933C-5431-9717-CD332A17FCF2">
+<title>              Clipboard class structure            </title>
+<image href="GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e153880_href.png" placement="inline"/>
+</fig> <p>Any type of data can be placed on the clipboard. When retrieving
+data, applications check the UID in the stream dictionary to determine whether
+there is any data relevant to them. The following diagram illustrates a typical
+situation: </p> <fig id="GUID-3ABDDCDD-DBC9-5BD5-8448-8249F535FB06">
+<title>              Clipboard store            </title>
+<image href="GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e153891_href.png" placement="inline"/>
+</fig> </section>
+</conbody><related-links>
+<link href="GUID-8C94EE15-82EA-4A95-9044-C3404F95BD51.dita"><linktext>Using
+Clipboard</linktext></link>
+<link href="GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita"><linktext>Direct file
+stores</linktext></link>
+<link href="GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita"><linktext>Dictionary
+stores</linktext></link>
+<link href="GUID-AB705D21-87A3-5F32-A4B9-17B7593DD5C3.dita"><linktext>UID manipulation</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8" xml:lang="en"><title>MMP file syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BBBFC0AF-2E35-5F5C-A3A5-57C4196A6CDA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BBBFC0AF-2E35-5F5C-A3A5-57C4196A6CDA" xml:lang="en"><title>Thread And Process Management</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA" xml:lang="en"><title>Application
+user interface (AppUi)</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Cone provides the <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> class as a generic base
+for application user interface development. Uikon provides a specialization, <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref>,
+from which concrete application UIs can be derived. UI variant libraries typically
+derive their own AppUi base class from <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref> to standardize
+common UI paradigms. <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> is, therefore, normally
+a 'long way' from the surface of the finished application and knows little
+of the concrete controls or functionality that it contains. </p>
+<p> <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> provides the following key functionality: </p>
+<ul>
+<li id="GUID-96F849A2-4022-5564-8A28-A8D3615304CF"><p>An event-handling framework </p> <p> <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> is
+the at the top of the run-time control hierarchy. It is the point at which
+key-press events are received from the Window Server. Many of the event-handling
+functions are virtual and implemented in the derived AppUi classes. </p> </li>
+</ul>
+<fig id="GUID-9FC56BFC-6DF5-5BF8-BDCD-65579655C558">
+<image href="GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e13148_href.png" placement="inline"/>
+</fig>
+<ul>
+<li id="GUID-380D267D-F442-5AE3-A361-CACEA4E97A88"><p>View Management </p> <p>The
+View Manager (<xref href="GUID-1444A0B4-8828-3EEB-8DC7-C331648A5201.dita"><apiname>CCoeViewManager</apiname></xref>) is encapsulated by <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref> which
+provides a view management API. </p> <p>Views are concrete classes that implement
+the <xref href="GUID-2C5E3F6C-6679-3914-9736-62296E7715A7.dita"><apiname>MCoeView</apiname></xref> interface. Typically they are top-level window-owning
+controls. </p> <p>The significance of views is that they are known of outside
+the application to which they belong. This allows one application to switch,
+or link, directly to a view in another. If the target application is running
+it will be brought to the foreground with the linked view activated. If it
+isn't running it will be started up first. </p> <p>All of the API required
+for implementing, registering, activating, deactivating, linking and observing
+is provided by <xref href="GUID-2C5E3F6C-6679-3914-9736-62296E7715A7.dita"><apiname>MCoeView</apiname></xref> and <xref href="GUID-3AC2CDAC-0291-309F-A020-049BC9F2CF90.dita"><apiname>CCoeAppUi</apiname></xref>. </p> <p>To
+participate fully in the view architecture an application must register at
+least one view. An application with no views may still be linked to using
+the view architecture. It registers itself with a <codeph>TVwsViewId</codeph> containing
+its application UID. Obviously it will not receive activation and deactivation
+events but will trigger view switch events in other applications' views. </p> <p>An
+application may opt out of the view architecture (see <xref href="GUID-42003A58-F3FE-3FEB-8019-A819B860C64B.dita#GUID-42003A58-F3FE-3FEB-8019-A819B860C64B/GUID-DC2562EE-67C1-3FD3-8A43-FA9F1B02DE07"><apiname>TApaCommand::EApaCommandRunWithoutViews</apiname></xref> and <xref href="GUID-42003A58-F3FE-3FEB-8019-A819B860C64B.dita#GUID-42003A58-F3FE-3FEB-8019-A819B860C64B/GUID-84C2A808-B397-3656-A422-E1E10FE04330"><apiname>TApaCommand::EApaCommandBackgroundAndWithoutViews</apiname></xref>) </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BBC49BE2-5147-5988-93FD-9CECF90BB223.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BBC49BE2-5147-5988-93FD-9CECF90BB223"><title>Memory Management</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The P.I.P.S. System Call Adaptation Layer (SCAL) known as <i>Backend</i> uses its own private heap for storing objects in memory. </p> <p>By using a private heap, </p> <ul><li id="GUID-5EBDFF66-316F-56CC-8F19-B684B904A6BF"><p>the SCAL retains complete control over usage of the heap </p> </li> <li id="GUID-83256AD7-A1C3-5A4C-A558-00F7FF012AC8"><p>system wide resources are not allocated within the context of users' private and thread owned heaps </p> </li> <li id="GUID-65F6AA57-E8E5-5FA3-810A-0C489E931054"><p>the SCAL is virtually out-of-memory protected; that is, if the client application exhausts its own heap, most P.I.P.S. APIs will continue to function correctly, for example, opening or closing file descriptors </p> </li> <li id="GUID-810D513C-77ED-538F-A2EE-F9668DBA523E"><p>there is no need for application <codeph>EXE</codeph> s to explicitly clean up memory used by the SCAL prior to thread or process termination (this would be necessary to prevent <codeph>UHEAP</codeph> macros from panicking). The explicit calling of cleanup APIs is especially unintuitive for open-source applications and it is not obvious when a native Symbian platform <codeph>EXE</codeph> is using a <codeph>STDDLL</codeph>. </p> </li> </ul> <p>The use of a private heap might not make P.I.P.S. very memory efficient but it makes it much more intuitive to the user and memory safe. </p> <section><title>Limitations</title> <p>During low memory conditions, your P.I.P.S. application may crash at launch with an <codeph>STDLIBS-INIT</codeph> panic. This indicates that the P.I.P.S. subsystem was unable to initialise its core components and cannot function. Hybrid applications may also encounter this panic, for the same reasons, when it invokes a P.I.P.S. API. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BC191AA8-696F-51A2-801F-B3F952037F54.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BC191AA8-696F-51A2-801F-B3F952037F54" xml:lang="en"><title>OS
+Security Quick Start</title><shortdesc>OS Security on Symbian platform enables data confidentiality, integrity
+and authentication. It provides high-level services, such as key and certificate
+management, authentication, secure user prompting, and Digital Rights Management
+(DRM) framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-3925A78F-68F0-4D92-BE2D-4AA7A2071C38"><title>Getting started with OS Security </title> <p>OS Security is
+intended to support: </p> <ul>
+<li id="GUID-29D6A956-E19D-5015-8AF7-08C2AC607100"><p>Secure communication
+protocols that provide data confidentiality and integrity </p> </li>
+<li id="GUID-250B6FC2-44CB-5C3E-824C-AFFDA315421E"><p>Authentication of installable
+software </p> </li>
+<li id="GUID-521A3365-8C88-559C-92D5-E487047BFC4D"><p>Protection of device
+integrity </p> </li>
+</ul> </section>
+<section id="GUID-9337A628-41D8-4450-8EDB-8D89AB6FA3A1"><title>Architecture</title> <p>OS Security includes the following
+collections: </p> <ul>
+<li id="GUID-5A81451B-7E7F-55D9-8FF5-1AD439A237AD"><p><xref href="GUID-BA362536-C9C9-5BA4-BEE3-0E1AD7FA45F1.dita">Authorisation</xref> contains <xref href="GUID-5329AE68-39E0-55E7-9878-2D8FF9E29B21.dita">User Prompt Service</xref> (UPS)
+component that provides standard interfaces for the device creators to set
+policies that determine if requests made by applications to access system
+services, such making telephone calls, need confirmation from the user. </p> </li>
+
+<li id="GUID-BC9ED5D1-58C7-5126-BF16-E49316A6A198"><p><xref href="GUID-A40376B6-8B2B-551A-B72F-CFCADBC84BE7.dita">Security
+and Data Privacy Tools</xref> contains <xref href="GUID-8933D7D5-F84D-5BF2-BF2A-832DA183E26B.dita">Security
+Config</xref> and <xref href="GUID-4B03733F-D84D-5A28-B772-2E256D86ABC7.dita">Security
+Tools</xref> components. Security Config contains security ROM build-time
+configuration files. Device creators use the configuration files to customize
+the behavior of security components. Security Tools comprises of <codeph>certapp</codeph> tool
+that creates, augments, dumps and debugs certificate stores. It also dumps
+certificate files in human-readable form. </p> </li>
+<li id="GUID-14FFA600-49D0-51B4-A211-83E57E0311CF"><p><xref href="GUID-E6C91CF2-A616-5E52-8BB2-630C42C8D540.dita">Crypto
+Management Libraries</xref> provides interfaces for management of tokens used
+for secure authentication, such as cryptographic keys and certificates. It
+contains <xref href="GUID-A6FF1073-AA55-588D-8DC1-0A8C16864891.dita">CryptoToken
+framework</xref> to provide interfaces for managing cryptography certificates,
+keys and certificate applications. </p> </li>
+<li id="GUID-9905841F-3578-508F-B808-B639E630C907"><p><xref href="GUID-C00FBDE4-EF59-5FED-BA92-625414AF45AE.dita">Crypto
+Libraries</xref> contains a Weak CryptoSPI and Strong CryptoSPI components
+together called as CryptoSPI framework. The framework provides software-based
+implementations of cryptographic algorithms. It allows device creators to
+include alternative implementations as plug-in DLLs. </p> </li>
+<li id="GUID-98FCDDF0-F056-5C80-9DF1-2A8E9EB9A31C"><p>Crypto Plug-ins contains
+CryptoSPI Plug-ins component. These are plug-ins to the <xref href="GUID-C00FBDE4-EF59-5FED-BA92-625414AF45AE.dita">Crypto
+Libraries'</xref> Crypto SPI framework. It provides software-based implementations
+of cryptographic algorithms for encryption, decryption, hash and random number
+generation. </p> </li>
+<li id="GUID-E531D513-BFB8-575C-A512-5757B3568522"><p><xref href="GUID-2663ED06-8C97-5867-B7F6-6167EBFEA223.dita">Crypto
+Services</xref> provides interfaces to handle cryptographic keys and certificates.
+It contains <xref href="GUID-C3290344-486B-554D-97FC-42DF48E150AA.dita">Certificate
+and Key Management</xref>, <xref href="GUID-A5DCCEB1-77DA-53C9-A1A3-07615DFCD403.dita">File-Based
+Certificate and Key Stores</xref>, <xref href="GUID-314992D7-F6E1-5335-9EDA-DE89E67CDF57.dita">ASN-PKCS</xref>  <xref href="GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA.dita">Root Certificates</xref> and
+OpenSSL components. </p> </li>
+</ul> <p>The following diagram shows the OS Security's components grouped
+into collections, which are shown as white boxes: </p>  </section>
+<section id="GUID-37CD3D25-4861-4277-AF70-C8A3038C85C4"><title>Technologies</title> <p> <b>DRM</b>  </p> <p>DRM refers to
+an access control technology that prevents unauthorised use of copyrighted
+content. </p> <p>To know more about the key concepts used in OS
+Security, see <xref href="GUID-6F73ED8C-E259-5717-AB84-0C2933A866DA.dita">OS Security
+Concepts</xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-B2089965-546C-5FF2-8596-13A2221E02E6.dita"><linktext>User Prompt
+Service Tutorials</linktext></link>
+
+
+<link href="GUID-16BA7B80-DC75-512C-AAEC-F571B5B73F09.dita"><linktext>Crypto Libraries
+Tutorials</linktext></link>
+<link href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita"><linktext> Unified
+Certificate Store Tutorial</linktext></link>
+<link href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita"><linktext>Unified Keystore
+Tutorials</linktext></link>
+
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BC3207BF-9E9F-4BA0-8F01-B72228110A61.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BC3207BF-9E9F-4BA0-8F01-B72228110A61" xml:lang="en"><title>Accessing
+the toolbar from applications or application views</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section>      <p>To access the current toolbar (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknToolbar.html" format="application/java-archive"><codeph>CAknToolbar</codeph></xref>, defined in <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/akntoolbar_8h-source.html" format="application/java-archive"><codeph>akntoolbar.h</codeph></xref>)
+in applications, use the methods <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html#3fa2b237b46b9074374e352b912a4210" format="application/java-archive"><codeph>CAknAppUi::CurrentPopupToolbar()</codeph></xref> or <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikAppUiFactory.html#3fa2b237b46b9074374e352b912a4210" format="application/java-archive"><codeph>CEikAppUiFactory::CurrentPopupToolbar()</codeph></xref> in the case
+of a floating toolbar. For a fixed toolbar, use <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html#6542dafaefd94c9903fe12385c65a701" format="application/java-archive"><codeph>CAknAppUi::CurrentFixedToolbar()</codeph></xref> or <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikAppUiFactory.html#6542dafaefd94c9903fe12385c65a701" format="application/java-archive"><codeph>CEikAppUiFactory::CurrentFixedToolbar()</codeph></xref>. The methods
+return a pointer to either the application toolbar or a view-specific toolbar
+(if defined). </p><p>To access the application toolbar directly from applications,
+you can also call <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html#ed75774769dbeb3d960072e333eaa383" format="application/java-archive"><codeph>CAknAppUi::PopupToolbar()</codeph></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCEikAppUiFactory.html#ed75774769dbeb3d960072e333eaa383" format="application/java-archive"><codeph>CEikAppUiFactory::PopupToolbar()</codeph></xref>. To access the view-specific toolbar as a client, call <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html#183e12214247e0b3ca27ed99b8aab396" format="application/java-archive"><codeph>CAknView::Toolbar()</codeph></xref>. These calls do not transfer
+the ownership of the toolbar, so the framework takes care of the toolbar destruction.</p></section>
+<section><p>The example below shows how to access the toolbar in the application
+AppUi class. (You can also use <codeph>CEikAppUiFactory</codeph> methods.)</p><codeblock xml:space="preserve">void CMyAppUi::DoSomethingToToolbar()
+    {
+    
+    // Current fixed toolbar (if view has no fixed toolbar, returns application toolbar)
+    CAknToolbar* fixedToolbar = CurrentFixedToolbar();
+    
+    // Current popup toolbar (if view has no popup toolbar, returns application toolbar)
+    CAknToolbar* popupToolbar = CurrentPopupToolbar();
+    
+    // Application toolbar
+    CAknToolbar* appToolbar = PopupToolbar();
+
+    …
+
+    }</codeblock><p>The example below shows how to access a view specific
+toolbar in the application view class.</p><codeblock xml:space="preserve">
+void CMyView::DoSomethingToToolbar()
+    {
+    
+    // View toolbar
+    CAknToolbar* toolbar = Toolbar();
+    
+    …
+
+    }
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BC32CC7C-99BA-59E8-A268-42F411CF336F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BC32CC7C-99BA-59E8-A268-42F411CF336F" xml:lang="en"><title>Array
+Keys Overview</title><shortdesc>The document provides an overview of array keys.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-E936A40A-CE40-400A-A534-B06F0339871D"><title>Purpose</title> <p>Defines a property of an array element
+by which a heap based array can sorted and searched.</p> </section>
+<section id="GUID-5550159B-8E50-4FF4-A7D4-EAB1E325CF8F"><title>Architectural relationships</title> <p>Keys are declared by
+client programs, and used in conjunction with the heap based array classes
+defined by the Dynamic Arrays API.</p> <p>Keys are also used by the low-level
+sorting functions supplied by the System Static Functions API.</p> </section>
+<section id="GUID-9A7E535D-A289-4B43-B04E-B9F76E66242D"><title>Description</title> <p>The API has four key concepts: abstract
+key base, fixed-length element array key, variable-length element array key,
+packed array key, and array element swap operation base. </p> <p><b>General
+properties</b> </p> <p>A key specifies a data member within a type. It allows
+the caller to manipulate an array of elements of this type. The Symbian platform
+array classes have member functions for sorting, finding, and inserting elements
+by key.</p> <p>Concrete classes are defined for each of the basic Symbian
+platform array types, fixed length, variable length, and packed.</p> <p><b>Abstract key base</b> </p> <p>The abstract key base defines the characteristics
+of a key and defines the basic behaviour of keys. The most important properties
+of a key are:</p> <ul>
+<li id="GUID-77B18DD9-C54C-59E2-94D5-4ECF30615D5A"><p>location: defines which
+data member of the array element type should be used for sorting, etc.</p> </li>
+<li id="GUID-9B2CEF3B-026E-5A3E-A9E7-629BFC2D8A21"><p>type: whether the data
+member is a descriptor, text (NULL terminated string), or a number.</p> </li>
+</ul> <p>The abstract key base interface is provided by <codeph>TKey</codeph>.</p> <p><b>Fixed-length array key</b> </p> <p>The fixed-length element array key
+specifies the key to be used with fixed-length element (<codeph>CArrayFix</codeph> -based)
+arrays.</p> <p>The abstract key base interface is provided by <codeph>TKeyArrayFix</codeph>.</p> <p><b>Variable-length array key</b> </p> <p>The variable-length element array
+key specifies the key to be used with variable-length element (<codeph>CArrayVar</codeph> -based)
+arrays, and for sorting packed (<codeph>CArrayPakFlat</codeph> -based) arrays.</p> <p>The
+variable length array key interface is provided by <codeph>TKeyArrayVar</codeph>.<codeph> </codeph> </p> <p><b>Packed array key</b> </p> <p>The packed array key specifies the key to
+be used for searching and inserting elements by key with packed (<xref href="GUID-4D6E6B46-32B5-34AD-BD8A-84BF6B2B7C81.dita"><apiname>CArrayPakFlat</apiname></xref> -based)
+arrays.</p> <p>The packed array key interface is provided by <codeph>TKeyArrayPak</codeph>.</p> <p><b>Array element swap operation base</b> </p> <p>If a client uses the sort
+function provided by the System Static Functions API, instead of sorting through
+the Symbian platform array classes, it must define a class able to swap elements. </p> <p>The
+array element swap operation base interface is provided by <codeph>TSwap</codeph>.</p> </section>
+<section id="GUID-8A098367-CCDF-4E35-86C6-13F5824B8153"><title>See also</title> <p><xref href="GUID-56EE13F0-CAEE-5E1C-99CD-2FEC8C3BCA6B.dita">Dynamic
+Arrays Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System
+Static Functions Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64-master.png has changed
Binary file Symbian3/SDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e297675_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BC627588-E8C7-4DDB-8313-7C57E0CCD93B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-BC627588-E8C7-4DDB-8313-7C57E0CCD93B" xml:lang="en"><title>Create
+a power client power session</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Create a <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower</apiname></xref> object
+using <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>NewL()</apiname></xref> or <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>NewLC()</apiname></xref> with
+the required parameters. The parameters are pointers to an object that is
+derived from <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryPowerObserver</apiname></xref>. </p> <p>The
+following code snippet demonstrates how to create an instance with notify
+handling for creating the power client session. </p> <codeblock id="GUID-FDA303F4-2503-5B07-AA4D-0AC768F87407" xml:space="preserve">Void CPowerApp::ConstructL()
+    {
+    //Create Power client.
+    iPower = CHWRMPower::NewL( this, this );
+    }</codeblock> <p>The <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::NewL()</apiname></xref> API
+creates a power session for client and interacts with the battery. </p> </context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BC67F13E-4B5A-5078-AE9B-826304BC14FD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BC67F13E-4B5A-5078-AE9B-826304BC14FD" xml:lang="en"><title>Versit:
+Versit Example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-315BA525-228E-46A2-82D7-A03258C21771"><title>Description</title> <p>This example code first creates a vCard
+parser using the <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita"><apiname>CParserVCard</apiname></xref> class. Then it creates a
+NOTE property with a string literal as its value, using <xref href="GUID-07A6B09A-823D-3CE7-B621-157EACF60A8D.dita"><apiname>CParserGroupedProperty</apiname></xref> and <xref href="GUID-76E6CCFA-5BAC-34F1-A5B2-FB505A68E784.dita"><apiname>CParserPropertyValue</apiname></xref> classes.
+The property is associated with the vCard parser using the <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita#GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7/GUID-43BF4FFE-E22D-32D9-9952-6F7BDF1DA348"><apiname>CParserVCard::AddPropertyL()</apiname></xref> method.
+Finally, the vCard is externalized or exported to a file by calling the <xref href="GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7.dita#GUID-F4BEE3F4-F268-345D-B727-2C1D5E25F3F7/GUID-804FAC27-5985-3986-92E1-87D825F42D49"><apiname>CParserVCard::ExternalizeL()</apiname></xref> method. </p> <p>The
+example also shows how to internalize or import a vCard from a file. A session
+with the file server is established using the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> class
+to read the vCard from the file using a file read stream (<xref href="GUID-90A3AE1D-DCB2-3E98-8BE9-C48C15964E7D.dita"><apiname>RFileReadStream</apiname></xref> class). </p> <p>Note
+that the procedure to create a vCal parser using the <xref href="GUID-6BEFF6A7-FBD8-306D-98A4-8711E788C702.dita"><apiname>CParserVCal</apiname></xref> class
+is similar to that of creating a vCard parser. </p> </section>
+<section id="GUID-FCC37BE4-D45C-45C2-81F4-821A3CAB096C"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-58cce3c4-5d99-4c45-a395-4861992faf0c.zip" scope="external">VersitExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-58cce3c4-5d99-4c45-a395-4861992faf0c.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-2A3E5516-EAD4-4F61-A930-9E919F7D2927"><title>Usage</title> <p>This is a console application and it builds
+an executable called <filepath>VersitExample.exe</filepath> in the standard
+location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to navigate from the app launcher/shell screen to
+view the console. </p> </section>
+<section id="GUID-89FD1B79-98F9-4B7C-88D1-161DFBE3C108"><title>Class Summary</title><p>CParserVCard</p><p>CParserGroupedProperty
+ </p><p>CParserPropertyValue</p></section>
+<section id="GUID-6697889A-3C09-427A-A6AD-8038D13ACF49"><title>See also</title> <p> <xref href="GUID-27E38FBB-F417-56C8-BFCF-B32215668902.dita">Using
+Versit</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BC9001F9-BA41-5916-B2B2-175E37D6F880.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BC9001F9-BA41-5916-B2B2-175E37D6F880" xml:lang="en"><title>Gifscaler Library </title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79"><title>Configuring Log Engine </title><shortdesc>This tutorial describes how to configure Log Engine using <apiname>TLogConfig</apiname> class. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <context id="GUID-F9BA2879-3ECB-5664-9DA2-F26D9E753BDB"><p>There are three parameters which you can configure at run time using a Log Engine client. They are implemented as the three members of a <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>TLogConfig</apiname></xref> class: </p> <ul><li id="GUID-2B751065-91F0-5FD9-A497-8539DBC11289"><p> <codeph>iMaxLogSize</codeph>, the maximum size of an event log, </p> </li> <li id="GUID-31A4E81C-571F-50B8-AB98-7D365B71CD67"><p> <codeph>iMaxRecentLogSize</codeph>, the maximum size of a recent list, and </p> </li> <li id="GUID-74C0D6ED-A6AF-5682-B905-2D58CE1364D4"><p> <codeph>iMaxEventAge</codeph>, the maximum age of a logged event. </p> </li> </ul> <p> </p> </context> <steps id="GUID-AD40FCED-2095-593A-96FD-B0536FBDAE66"> <step id="GUID-605DC5E4-7B92-5A07-B6BE-37782F698D55"><cmd>create a <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>TLogConfig</apiname></xref> object </cmd> </step> <step id="GUID-8B08BE98-EC49-54D3-92E1-99BC0833AD0B"><cmd/><info>set the required values to the members <codeph>iMaxLogSize</codeph>, <codeph>iMaxRecentLogSize</codeph> and <codeph>iMaxEventAge</codeph>  </info> </step> <step id="GUID-3EBEF31F-467B-51E0-9909-93034306260A"><cmd/><info>pass it to the <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>ChangeConfig()</apiname></xref> function of a log client. </info> </step> </steps> <result id="GUID-DE7C6982-718C-5679-8BEC-08A412620BF8"><p>The Log Engine will be configured with new values. </p> </result> <postreq id="GUID-7BD74B31-4C3D-5936-B461-0A8B901DA106"><p>The <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>TLogConfig</apiname></xref> class also has the two functions <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>InternalizeL()</apiname></xref> and <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>ExternalizeL()</apiname></xref> which implement streaming input and output of a <xref href="GUID-2DFAE1E1-55D4-3319-86A1-7582EB1C6BB6.dita"><apiname>TLogConfig</apiname></xref> object. </p> </postreq> </taskbody><related-links><link href="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita"><linktext>Maintaining Log Events</linktext> </link> <link href="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita"><linktext>Requesting Log Engine Notifications</linktext> </link> <link href="GUID-2022F702-9899-5798-8932-D70119C7177D.dita"><linktext>Setting Up A Log Engine Client</linktext> </link> <link href="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita"><linktext>Displaying Log Events</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BCC6F8D1-9F6C-41C4-A2FB-AB7528B03F8D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BCC6F8D1-9F6C-41C4-A2FB-AB7528B03F8D" xml:lang="en"><title>View
+controller in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section includes:</p>
+<ul>
+<li><p><xref href="GUID-A3BCC33F-D11B-4F98-BCC3-9A06381A02E7.dita">Constructing
+the view controller in the view architecture</xref></p>
+</li>
+<li><p><xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita">View
+resource statements in the view architecture</xref></p>
+</li>
+<li><p><xref href="GUID-DFDDF0C5-0E66-4394-A746-7FE35EEA4E6A.dita">Switching
+views in the view architecture</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD11A724-2364-5D40-A9D1-2774993BA4A4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BD11A724-2364-5D40-A9D1-2774993BA4A4" xml:lang="en"><title>Character Encoding and Conversion Framework References</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD463EF4-2538-51AF-8946-BFEC902A2DD0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BD463EF4-2538-51AF-8946-BFEC902A2DD0"><title>Drawing Lines</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate how to draw lines of different widths and styles. </p> <p>The examples assume common start and end points have been defined as follows: </p> <codeblock id="GUID-28F12668-9CDD-5AD4-9EE7-32B01DBBE583" xml:space="preserve">...
+// set up a pair of points for drawing diagonal lines
+TPoint startPoint(50,50);
+TPoint endPoint(590,190);
+...</codeblock> <section><title>Drawing a line a single pixel wide</title> <p>You can draw a thin line diagonally across the screen using <codeph>DrawLine()</codeph>. This illustrates how thin a single pixel width line is, and the visible stepping: </p> <codeblock id="GUID-40B3F1CC-567F-59AD-8A8A-B286D3AD95E5" xml:space="preserve">...
+// draw a thin line from top left to bottom right 
+gc.DrawLine(startPoint,endPoint);
+...</codeblock> <p> <b>Note</b>: The line width is a single pixel by default. </p> </section> <section><title>Drawing a line three pixels wide</title> <ol id="GUID-4E0BACED-4D3E-51B9-92FE-569DC594A4BD"><li id="GUID-B3E6B674-5F50-5E53-9ED9-F9C01430363B"><p>Use <codeph>SetPenSize()</codeph> to increase the pen size to three pixels. </p> </li> <li id="GUID-07130AED-6D1C-54B3-81CC-30DA3402FC82"><p>Use <codeph>DrawLine()</codeph> to draw a wide line diagonally across the screen. </p> </li> </ol> <codeblock id="GUID-65E94B19-C30D-5C5A-99E3-BFFEA68B2A9D" xml:space="preserve">// Set up a "bold" size for the pen tip to (default is 1,1)
+TSize penSizeBold(3,3);
+...
+// draw a line from top left to bottom right 
+gc.SetPenSize(penSizeBold);
+gc.DrawLine(startPoint,endPoint);
+...</codeblock> </section> <section><title>Drawing a line thirty pixels wide</title> <ol id="GUID-CD9DD7A1-D62F-5B31-A6EB-3739800317C9"><li id="GUID-7492D2DB-7F32-55F0-8760-AAF1FD85A9BD"><p>Use <codeph>SetPenWidth()</codeph> to set the pen width to thirty pixels wide. </p> </li> <li id="GUID-C24B8085-30DD-584F-A5D6-BD024E5C1215"><p>Use <codeph>DrawLine()</codeph> to draw a thirty pixel wide line, (x dimension), diagonally across the screen. </p> </li> </ol> <codeblock id="GUID-587C939D-359D-5618-946D-1A0C5286D0E0" xml:space="preserve">// Set up a "fat" size for the pen tip
+TSize penSizeFat(30,30);
+...
+// draw a rather wide line from top left to bottom right,
+// illustrating rounded ends and their clipping
+gc.SetPenWidth(penSizeFat);
+gc.DrawLine(startPoint,endPoint);
+...</codeblock> <p><b>Notes </b> </p> <ul><li id="GUID-9C1799DF-A1B3-5047-B23E-0AC340EBB607"><p>The ends of wide lines are rounded. </p> </li> <li id="GUID-5888D165-DD1E-5E41-81B5-ADFDF0ED9FF2"><p>The effective width of the line depends on the size of the pen tip, which is elliptical. </p> </li> <li id="GUID-1396D6C5-4F90-56E2-923F-94C4EDC7B170"><p>The rounded end of a wide line may be clipped to the window, even though the end point is within the window. </p> </li> </ul> </section> <section><title>Drawing a dotted line</title> <ol id="GUID-3524D696-5ABC-5E06-910B-26EACA1E2A5E"><li id="GUID-3B6DB02F-BAD2-5EB2-B7EC-9056D737C727"><p>Use <codeph>SetPenStyle()</codeph> to set the style of the pen to dotted. </p> </li> <li id="GUID-3866320E-CEC6-5444-A629-888ABE6B8E4F"><p>Use <codeph>DrawLine()</codeph> to draw a thin dotted line diagonally across the screen. </p> </li> </ol> <codeblock id="GUID-D2785C65-6614-5A2D-8405-295D7C39F96D" xml:space="preserve">...
+// draw a dotted line from top left to bottom right 
+gc.SetPenStyle(CGraphicsContext::EDottedPen);
+gc.DrawLine(startPoint,endPoint);
+...</codeblock> <p> <b>Note</b>: The pen style remains in effect until changed by another call to <codeph>SetPenStyle()</codeph> or the graphics context is reset to its default settings. </p> </section> <section><title>Drawing a dot-dashed line</title> <ol id="GUID-92BB412D-E3A3-5D18-A806-EAE6BD960043"><li id="GUID-8F2FEDB5-067E-586D-8531-4761CEBFC1B0"><p>Use <codeph>SetPenStyle()</codeph> to set the style of the pen to dot-dashed. </p> </li> <li id="GUID-252ED7E4-9A04-5D7B-8D0B-9F0869BCC959"><p>Use <codeph>DrawLine()</codeph> to draw a thin dot-dashed line diagonally across the screen. </p> </li> </ol> <codeblock id="GUID-3FDE1DE2-64BD-5312-AA84-A36CE362E655" xml:space="preserve">...
+// draw a dot dash line from top left to bottom right 
+gc.SetPenStyle(CGraphicsContext::EDotDashPen);
+gc.DrawLine(startPoint,endPoint);
+...</codeblock> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A" xml:lang="en"><title>How to
+use the non-modifiable buffer descriptor — TBufC&lt;TInt&gt;</title><shortdesc>Non-modifiable buffer descriptors are useful for holding constant
+strings or data and providing safe ways to access that data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-74A075D5-195D-5BB7-BC40-D683635BE6F7"><p>For text data, it is
+usual to construct a <codeph>TBufC&lt;TInt&gt;</codeph> type and allow the appropriate
+variant, either a <codeph>TBufC8&lt;TInt&gt;</codeph> or a <codeph>TBufC16&lt;TInt&gt;</codeph> to
+be selected at build time.</p> </li>
+<li id="GUID-0AA8DD41-55DF-5448-A5D5-DC403E60C3A4"><p>For binary data, an
+explicit <codeph>TBufC8&lt;TInt&gt;</codeph> is used.</p> </li>
+<li id="GUID-441D5170-8C00-5BE6-AF0C-44DB149E87F1"><p>It is rare to use an
+explicit <codeph>TBufC16&lt;TInt&gt;</codeph>.</p> </li>
+</ul>
+<p>Data cannot be changed through this descriptor although it can be replaced
+using the assignment operators.</p>
+<p>By using the <codeph>Des()</codeph> function to construct a <codeph>TPtr/TPtr8/TPtr16</codeph> modifiable
+pointer descriptor for the buffer's data, it becomes possible to modify that
+data.</p>
+<p>Although, the following notes refer to the build independent types; they
+are equally valid for the explicit 8 bit and 16 bit types.</p>
+<section id="GUID-5591AC50-485E-413D-B3A7-BCE59F3B634D"><title>Constructing a TBufC&lt;TInt&gt;</title> <p>A non-modifiable
+buffer descriptor can be constructed in a number of ways:</p> <ul>
+<li id="GUID-8328A45B-EB36-5C80-9B3D-969DA033B71E"><p>as an empty buffer descriptor.</p> </li>
+<li id="GUID-D0CDC7BA-A2A2-5953-8700-F43FF5FD2AE2"><p>by copying data from
+any other type of descriptor.</p> </li>
+<li id="GUID-A7CC00D3-16AB-5D2F-B25E-011D689C3BA9"><p>by copying data from
+another non-modifiable buffer descriptor of the same size.</p> </li>
+</ul> <p>The following code fragment constructs a <codeph>TBufC&lt;16&gt;</codeph> object.
+The buffer descriptor is uninitialised, i.e. it contains no data. The assignment
+operator can be used to put data into the buffer descriptor after construction:</p> <codeblock id="GUID-BED8AC0B-4F0B-5859-994B-723F4B8F84A1" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1; // length of buf1 is 0
+...
+buf1 = KText;   // data assigned</codeblock> <p>The following code fragment
+constructs a <codeph>TBufC&lt;16&gt;</codeph> object, initialised with the 12
+characters making up the English language phrase "Hello World!".</p> <p>The
+source descriptor is a literal which is converted to descriptor type.</p> <codeblock id="GUID-737E0C5F-AE11-586D-B81C-0E3D1AD96414" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);  // length of buf1 is 12</codeblock> <p>The following
+code fragment constructs a <codeph>TBufC&lt;16&gt;</codeph> object, initialised
+with the content of another <codeph>TBufC&lt;16&gt;</codeph> object.</p> <codeblock id="GUID-A8A21448-DBE4-5F68-8CA0-57298E04036C" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);
+TBufC&lt;16&gt; buf2(buf1);  // data copied from descriptor buf1
+                       // length of buf2 is 12</codeblock> </section>
+<section id="GUID-1C814D9C-5F53-4885-90B9-B83480CF623E"><title>Replacing data</title> <p>Data within a non-modifiable buffer
+descriptor can be completely replaced by using the assignment operator:</p> <codeblock id="GUID-C3F90B27-EB1C-5864-A80A-0D0C77BB67FC" xml:space="preserve">_LIT(KText,"Hello World!");
+_LIT(KNewText,"New text");
+...
+TBufC&lt;16&gt; buf1(KText);
+TBufC&lt;16&gt; buf2;
+...
+buf2 = buf1;               // buf2 now contains "Hello World!"
+...
+buf2 = KNewText;           // buf2 now contains "New text".
+                           // the literal is converted to a descriptor
+                           // type.</codeblock> <p>To prevent data replacement,
+declare <codeph>buf2</codeph> as const.</p> </section>
+<section id="GUID-5F3BEAB3-B469-4673-A3D8-04DB697B8D0F"><title>Constructing a modifiable pointer descriptor to change the
+data</title> <p>The data contained in non-modifiable buffer descriptor <codeph>TBufC&lt;TInt&gt;</codeph>  <i>can</i> be
+changed by constructing a <codeph>TPtr</codeph> modifiable pointer descriptor
+using the<codeph>Des()</codeph> member function and then changing the data
+through that <codeph>TPtr</codeph>.</p> <p>The maximum length of the <codeph>TPtr</codeph> is
+the value of the <codeph>TBufC&lt;TInt&gt;</codeph> template parameter.</p> <p>The
+following code fragment shows data being changed:</p> <codeblock id="GUID-02B09EBC-3E58-51B1-8D14-E388250A674A" xml:space="preserve">_LIT(KText,"Hello World!");
+_LIT(KExtraText," &amp; Hi");
+...
+TBufC&lt;16&gt; buf1(KText);
+...
+TPtr ptr = buf1.Des();
+...
+ptr.Delete((ptr.Length()-1),1);
+ptr.Append(KExtraText);
+...</codeblock> <p>This deletes the last character in <codeph>buf1</codeph> and
+adds the characters " &amp; Hi" so that <codeph>buf1</codeph> now contains
+the text "Hello World &amp; Hi" and its length is 16. Note that the length
+of both <codeph>buf1</codeph> and <codeph>ptr</codeph> change to reflect the
+data that they now both represent.</p> <p>Note that any attempt to append
+more data raises a panic.</p> </section>
+<section id="GUID-9DD4E5D1-B0A0-41BC-AE54-FC062D21173C"><title>Accessing data</title> <p>Once a non-modifiable buffer descriptor
+has been constructed, the functions in the base class, <codeph>TDesC</codeph>,
+are available to access the data.</p> <codeblock id="GUID-CE288FF9-26F7-533D-ADC4-E535035039B2" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);
+...</codeblock> <codeblock id="GUID-656150B0-C7DF-54B7-9127-6BE685EEEA83" xml:space="preserve">buf1.Length();</codeblock> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722.dita">Literal Descriptors</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD7C45B2-11BF-5162-9F9B-B84E51C5C6D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BD7C45B2-11BF-5162-9F9B-B84E51C5C6D4" xml:lang="en"><title>Embeddable
+Applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4CE56897-FEB9-523F-843A-E5BAFFDBBCDB"><title>Procedure</title> <p>Embeddable
+applications are implemented as ECom plug-ins. The <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> class
+defines the interface, and the majority of an application's code will be in
+the ECom plug-in. To allow an embeddable application to run as a standalone
+application a small EXE also needs to be created which calls the <codeph>EikStart::RunApplication()</codeph> function,
+but this time specifying the UID of the ECom plug-in rather than a pointer
+to the factory function. </p> <p>This section describes the steps for converting
+an existing embeddable application to an ECom plug-in and executable. </p> <p id="GUID-D3711552-3728-592E-9244-4A94D17B430D"><b>Creating the ECom plug-in</b> </p> <p>The
+MMP file of the embeddable application needs to be changed to create an ECom
+plug-in instead of a DLL application, using the following lines: </p> <codeblock id="GUID-5A76A5A1-5E8B-50A5-A222-03775DB8784C" xml:space="preserve">TARGET Example_embedded.dll 
+TARGETTYPE PLUGIN 
+UID 0x10009d8d 0x01010101</codeblock> <p>where <codeph>0x01010101</codeph> is
+a newly allocated UID, not the application's original UID - this is used elsewhere,
+see below. </p> <p>The MMP file also needs to create the ECom plug-in resource,
+and the original resource line needs to be modified so the application resource
+file(s) are created in the correct directory. </p> <codeblock id="GUID-C47AD0E7-8A92-5AB4-A742-C1DDB6AC74D4" xml:space="preserve">START RESOURCE 01010101.rss 
+#ifdef SYMBIAN_SECURE_ECOM 
+TARGET Example_embedded.rsc 
+#endif 
+END 
+
+START RESOURCE Example.rss 
+HEADER 
+TARGETPATH \resource\apps 
+LANG SC
+END</codeblock> <p>The <filepath>01010101.rss</filepath> ECom plug-in resource
+file uses the standard format for ECom plug-ins, where the interface definition
+UID for <xref href="GUID-C0297A58-2E39-3211-A2B4-C334192CE2A7.dita"><apiname>CApaApplication</apiname></xref> s is: </p> <codeblock id="GUID-AEDBF454-0768-5A16-BC2B-CFF4EEF81D87" xml:space="preserve">const TUid KUidFileEmbeddedApplicationInterfaceUid={0x101f8c96};</codeblock> <p>The implementation UID should be the application's original UID (<codeph>0x01234567</codeph> in
+the example below), and therefore the file should look like this: </p> <codeblock id="GUID-04F88175-A0D8-5358-8183-8DDF040CBD01" xml:space="preserve">#include &lt;RegistryInfo.rh&gt; 
+RESOURCE REGISTRY_INFO
+    {
+    dll_uid = 0x01010101; 
+    interfaces =
+        {
+        INTERFACE_INFO
+            {
+            interface_uid=0x101f8c96;
+            implementations=
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid=0x01234567;
+                    version_no=1;
+                    }
+                };
+            }
+        };
+    }</codeblock> <p> <filepath> ECom.lib</filepath> should be included in
+the library section in the MMP file. </p> <p>The AIF section is not needed
+as the application information is now provided by the registration file, localizable
+resource file and icon file. A registration file should be provided to inform
+the framework about the embeddable capability of the plug-in. This can be
+achieved by setting the ‘embeddability' flag in <codeph>APP_REGISTRATION_INFO</codeph> structure.
+If a stub EXE is provided to start the ECom plug-in, set the embeddability
+flag to <codeph>KAppEmbeddable</codeph>, otherwise set <codeph>KAppEmbeddableOnly</codeph>.
+For more information about the registration file please refer to the <xref href="GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita">How to port guide - data
+caged applications</xref> document. </p> <p>The code for the application should
+no longer export the <codeph>NewApplication()</codeph> function at ordinal
+1, but instead the function which informs the ECom framework of the implementations
+this ECom plug-in provides (as is standard for an ECom plug-in). This is demonstrated
+by the following code: </p> <codeblock id="GUID-77C1A71A-E4DB-5D1D-BBFC-8DB508BE439C" xml:space="preserve">#include "ExampleApp.h" 
+#include &lt;ecom.h&gt; 
+#include &lt;implementationproxy.h&gt; 
+GLDEF_C TInt E32Dll(TDllReason)
+    {
+    return KErrNone;
+    }
+
+LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CExampleApplication;
+    }
+
+LOCAL_D const TImplementationProxy ImplementationTable[]= 
+    { 
+    IMPLEMENTATION_PROXY_ENTRY(0x01234567, NewApplication)
+    };
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount) 
+    { 
+    aTableCount=sizeof(ImplementationTable)/sizeof(ImplementationTable[0]);
+    return ImplementationTable; 
+    }</codeblock> <p id="GUID-F2901432-ED44-576A-B081-D3AF916C9A93"><b>Creating
+the standalone EXE for the application</b> </p> <p>The MMP file for the standalone
+EXE should create an EXE-app (as described in the section above) and the EXE
+should have the application's UID as its third UID. The AIF file should be
+replaced by a registration file. The registration file is used to inform the
+framework that the application is capable of being embedded by setting <codeph>KAppEmbeddable</codeph> in
+the ‘embeddability' field of the <codeph>APP_REGISTRATION_INFO</codeph> structure. </p> <codeblock id="GUID-BE2079A0-F267-583F-8098-3F7143EE22FF" xml:space="preserve">#if !defined(EKA2) &amp;&amp; defined(WINS)
+TARGET Example.app 
+TARGETTYPE exedll 
+deffile \epoc32\release\wins\exedllapp.def 
+#else 
+TARGET Example.exe 
+TARGETTYPE exe 
+#endif 
+UID 0x100039CE 0x01234567 
+TARGETPATH \sys\bin 
+EPOCSTACKSIZE 0x5000 
+SOURCEPATH . 
+SOURCE Example_Standalone.cpp 
+USERINCLUDE . 
+SYSTEMINCLUDE \epoc32\include
+
+// Application exe registration resource file 
+start resource     Example_reg.rss 
+targetpath     \private\10003a3f\apps 
+lang        sc 
+end
+
+LIBRARY euser.lib apparc.lib eikcore.lib</codeblock> <p>The executable need
+only be a 'stub' to start the application architecture with the ECom UID.
+Therefore the single source file should contain code similar to the following: </p> <codeblock id="GUID-F6746743-4040-51C8-837A-851AE41B69F5" xml:space="preserve">#include &lt;e32std.h&gt; 
+#include &lt;eikstart.h&gt;
+
+const TUid KExampleUid = {0x01234567}; 
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication(KExampleUid);
+    } 
+#if defined(__WINS__) &amp;&amp; !defined(EKA2) 
+GLDEF_C TInt E32Dll(TDllReason)
+    {
+    return KErrNone;
+    } 
+EXPORT_C TInt WinsMain(TDesC* aCmdLine)
+    {
+    return EikStart::RunApplication(KExampleUid, aCmdLine);
+    } 
+#endif</codeblock> <p>Finally, the <filepath>bld.inf</filepath> for the application
+needs to be modified to build both MMP files, for example: </p> <codeblock id="GUID-ADA03DA8-4AE4-50BB-9A28-5745A0F807E2" xml:space="preserve">PRJ_MMPFILES 
+Example_embedded.MMP 
+Example_standalone.MMP</codeblock> <p id="GUID-C75A516F-B0BA-5E5C-8C86-2A4FBA9C3034"><b>Embedding
+a new-style application in an existing application</b> </p> <p>To add a new
+document to an application, an overload of <codeph>CApaProcess::AddNewDocumentL()</codeph> has
+been created which can accept an ECom UID or an ECom <xref href="GUID-3107B19B-0607-3E9E-AEA5-BAD07EEC59D0.dita"><apiname>CImplementationInformation</apiname></xref> reference.
+However, the existing overload of <codeph>AddNewDocumentL()</codeph> handles
+the case where the application for the document is an EXE, and attempts to
+find an ECom plug-in with the correct UID to create the embedded application.
+Therefore, existing applications (which perhaps offer a list of available
+embeddable applications to the user) do not need to be modified. Also, the
+internalizing and externalizing of embedded documents (through <xref href="GUID-F9CF2D9A-DF57-3603-896F-E2D5A2AE7481.dita"><apiname>CApaDoor</apiname></xref>)
+works with no modifications necessary. </p> </section>
+</conbody><related-links>
+<link href="GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita#GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F/GUID-A28ABF97-3EF0-5554-8A66-C9EB1FF954B6">
+<linktext>Application properties</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F"><title>Connection Management</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic introduces the concept of Connection Management and the APIs needed to perform Connection Management operations. The APIs discussed include <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>. </p> <p>The RConnection API provides: </p> <ul><li id="GUID-395ABFCE-2A51-5205-B3FF-F85C882AF761"><p>an interface for actively creating and managing connections </p> </li> <li id="GUID-C3A61C1A-72DF-5304-9758-F6C298DF93AD"><p>facilities that are not available when creating connections by other methods. Such facilities include support for multihoming. </p> </li> </ul> <p>Introduced with the <keyword>multihoming</keyword> functionality, which allows multiple Circuit/Packet Switched Data connections to be active. </p> <p><b>Implementation </b> </p> <p>The connection management API is implemented by <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> <p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> objects are implemented as sub-sessions to the <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>. </p> <p><b>Connections and subconnections </b> </p> <p>An RConnection is the handle for an application onto an underlying interface. (But there may be a number of RConnections per interface). </p> <p>Technologies such as W-CDMA and later releases of GPRS are capable of establishing multiple subconnections within a connection. This is supported by the management interface. </p> <p>Note that all subconnections within a connection will have certain parameters in common, such as the Access Point Name in the case of GPRS and WCDMA. However, each subconnection may have a different Quality-of-Service. </p> <p><b>Guidelines for use </b> </p> <p> <codeph>RConnection</codeph> s need to be opened on an existing socket server session, <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>. </p> <p>In the API as a whole, there is an important distinction made between an <codeph>RConnection</codeph> object which has been newly opened on an socket server session but not yet associated with an underlying interface on the server, and one which is opened and associated. There are certain operations that require a <codeph>RConnection</codeph> object to be in the associated state to work successfully. The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref> and <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-EAB8B0B1-0F5B-31E5-BFD6-B3AE1181868E"><apiname>RConnection::Attach()</apiname></xref> methods are used to associate an <codeph>RConnection</codeph> object with an interface. </p> <p>There is no restriction on the number of <codeph>RConnection</codeph> objects per socket server session. It is also possible for several <codeph>RConnection</codeph> objects to refer to the same underlying interface. For example, several applications, each with its own socket server session and <codeph>RConnection</codeph> object, could refer to the same underlying interface. It is also technically possible for the said <codeph>RConnection</codeph> objects to be on the same socket server session, though this may be somewhat redundant. </p> <p>Rather like <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> /<xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref> objects, an individual <codeph>RConnection</codeph> object is not designed to be used by multiple clients simultaneously (i.e. have multiple requests outstanding on it from different clients). </p> <p>Although <codeph>RConnection</codeph> objects are automatically closed when the corresponding socket server session is closed, appropriate use of <codeph>CleanupClosePushL(RConnection&amp;)</codeph> is more likely to ensure proper operation. </p> <p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> and <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref> objects can be associated with an <codeph>RConnection</codeph> object. In this case, data will flow over the same underlying interface as the <codeph>RConnection</codeph> to which they have been associated. For this to work, the <codeph>RSocket/RHostResolver/RConnection</codeph> objects must all be on the same socket server session, and the <codeph>RConnection</codeph> object must have been previously opened and active (i.e. associated with an underlying interface). </p> <section><title>Connection Management functionality</title> <p> <codeph>RConnection</codeph> provides clients with the following functionality: </p> <ul><li id="GUID-882DB251-213D-58BF-9398-9ADC68341298"><p>Opening and closing the connection </p> </li> <li id="GUID-E20078EE-FE93-5452-877B-C3F7985142FD"><p>Starting a connection, which means associating it with a new underlying interface </p> </li> <li id="GUID-FBBB3514-280E-5989-AC76-B81DD8CAC8B8"><p>Attaching the <codeph>RConnection</codeph> instance to an existing interface </p> </li> <li id="GUID-BB58A700-B58C-5C26-BD67-688EE0CF55C2"><p>Stopping the connection, which means disassociating it from the underlying interface </p> </li> <li id="GUID-A74BD98D-F3A7-5FE4-9F74-60AC2E1FBB78"><p>Obtaining progress information and notification during connection start-up </p> <p>This is useful because the process of dialling an ISP, logging in and starting network protocols can be quite lengthy, taking up to a minute in some cases. In addition, the application can get the last error which occurred in setting up the connection. </p> <p> </p> </li> <li id="GUID-9AAABE2A-3FB0-5B63-948F-2B3112683B0C"><p>Notifying when subconnections come up and go down </p> </li> <li id="GUID-418DFF66-415A-510D-AB86-1090EE0DC6B8"><p>Notifying when there is a service change for the connection </p> </li> <li id="GUID-CF7D3A21-0A1F-537B-AF50-4EDDBB931557"><p>Notifying when a given amount of data has been sent or received on a connection or subconnection </p> </li> <li id="GUID-E192532A-F857-5869-B5E0-D657AAFC8290"><p>Reading CommDB fields specific to an active connection </p> </li> <li id="GUID-1A83A7BD-FA23-5F4F-8D28-A0A24481DB9F"><p>Collecting statistical information on the network connection and subconnections. A UI component can display the collected statistical information in order to allow the user to examine the status of connections. The information that can be gathered is the following: </p> <ul><li id="GUID-AF90F93C-DA10-539F-842A-34337C51427F"><p>All available internet access point names and internet access point 'friendly' names as appropriate for each network (GPRS/UMTS) connection </p> </li> <li id="GUID-66B29945-C319-5E56-ABCA-301188643CDB"><p>Enumerating the currently active connections and subconnections </p> </li> <li id="GUID-8E888149-A79D-5608-9875-9753CEE59EE9"><p>The current status of all network connections e.g. active/suspended </p> </li> <li id="GUID-B1125663-747F-5F8C-927F-94AB17482FE5"><p>The amount of data (in bytes) transferred uplink and downlink by the network connection and subconnections </p> </li> <li id="GUID-E00B23A4-E91B-54E7-9AE1-429E19C520AB"><p>The amount of time each network connection has been active (in seconds) </p> </li> <li id="GUID-7AC5AC0D-9147-52A5-A427-B5D798D9A119"><p>The current status of the connection and subconnections with respect to data transfer, i.e. active/inactive </p> </li> <li id="GUID-AD4C0A7A-E48E-513F-806A-40934415D42B"><p>The Quality of Service profile associated with each Packet Data Protocol (GPRS/UMTS) context, e.g. low/medium/high </p> </li> </ul> </li> </ul> </section> <section><title>Historical Note</title> <p>Symbian OS 7.0S introduced the RConnection API. The RConnection API replaces the <xref href="GUID-DB9E15BA-BA79-3473-98F0-CF3FAF0016C4.dita"><apiname>RNif</apiname></xref>, <xref href="GUID-4838E090-0184-3153-A1A3-5C277F64E2C2.dita"><apiname>RGenericAgent</apiname></xref> and <xref href="GUID-495456DE-8C19-35FD-8555-5C321DAFDF78.dita"><apiname>RNifMonitor</apiname></xref> APIs used for connection startup. </p> </section> </conbody><related-links><link href="GUID-5CFC075C-8F53-5E1B-A111-C6F4567DFD1E.dita"><linktext>RConnection API Summary
+                Reference</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BD971173-E009-58DA-AF9C-F4AAFF77B138" xml:lang="en"><title>Comms Database</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Comms Database provides system wide storage for communications related settings. </p> <p>Comunications related settings specify the available connections. The settings can also enable connections. Information is arranged into a number of different tables. For example, tables of Internet Access Providers (IAPs) and tables of Internet Service Providers (ISPs). </p> <p>The Comms Database provides an abstract data storage API to tools and applications. This API allows future versions of Symbian OS to change the implementation of the data store. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD988DF9-45CA-53F3-816F-6DB81185CE40.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BD988DF9-45CA-53F3-816F-6DB81185CE40"><title>Control observers</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Each control may have an observer, typically another control, to which it can send events. An observer must: </p> <ul><li id="GUID-E3C3E0C7-3C33-59F1-9CF0-DC678D001A51"><p>implement the mixin class <xref href="GUID-A2BF9AE8-CF42-3D94-8763-66DB11EDDA46.dita"><apiname>MCoeControlObserver</apiname></xref> and </p> </li> <li id="GUID-1C882B62-4368-5118-A3CF-101A54FA5ED6"><p>be set as the observer for the control (or controls) it is to observe using <codeph>CCoeControl::SetObserver()</codeph>. </p> </li> </ul> <p>A control may have one observer only, but an observer may observe more than one control. </p> <p>A control sends an event to its observer using <codeph>CCoeControl::ReportEventL()</codeph>. The observer receives the event using <codeph>MCoeControlObserver::HandleControlEventL()</codeph>. Event types, which are <i>not</i> the same as window server events, are defined by the <xref href="GUID-A2BF9AE8-CF42-3D94-8763-66DB11EDDA46.dita"><apiname>MCoeControlObserver</apiname></xref> enum <codeph>TCoeEvent</codeph>. </p> <p>A typical use of an observer is a <keyword>compound
+        control</keyword> being the observer for its own components. The components send events to their compound control when they receive user input and the compound control manages the interaction between them. For example a control receiving a <codeph>TPointerEvent::EButton1Down</codeph> event sends an <codeph>MCoeControlObserver::EEventRequestFocus</codeph> event to its observer. This allows the observer to move focus between its components and to update their appearance. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BD9CBBE8-9389-50F9-98B1-0A07F7E2891C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BD9CBBE8-9389-50F9-98B1-0A07F7E2891C"><title>How to Wait for the Write Buffer to Empty: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial shows how to wait for the device driver to transmit data when a write request has previously been terminated early. </p> <p>The tutorial <xref href="GUID-294EF1C3-E7EC-5B93-B4F4-ECA50DD6993F.dita">How to Terminate Write Requests Early</xref> shows how the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-8FB1FC0F-EF29-3EE9-BD4B-359CE42F3796"><apiname>RComm::Write</apiname></xref> API can return early. </p> <p>To wait for the buffer to be empty, call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-27B1F841-8478-33E0-A168-11DC468183C0"><apiname>RComm::Write()</apiname></xref> in one of two ways: </p> <ul><li id="GUID-92DCE453-6E78-57DA-BAC3-CC62645B359F"><p>sending an empty descriptor: </p> <codeblock id="GUID-9A469B13-EEEF-5465-92E4-B271801408C5" xml:space="preserve">outputBuffer.Zero();
+commPort.Write (requeststatus,outputBuffer);</codeblock> </li> <li id="GUID-982A2F50-B25B-55F2-BEB2-FEB3ABE13080"><p>sending a descriptor with an optional length parameter of zero: </p> <codeblock id="GUID-013C9C10-2F2E-5574-BA1B-F27219B99226" xml:space="preserve">commPort.Write (requeststatus,outputBuffer,0);</codeblock> </li> </ul> <p>The state of the <codeph>KConfigWriteBufferedComplete</codeph> bit has no effect when the above methods are used. </p> <p>This is a useful feature that enables something like a file transfer of a series of blocks to be sent efficiently making use of early completion, while still being able to guarantee through the method above that all the data has actually cleared the transmitter at end of the transfer. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BDB622BF-1CFA-5F1C-81FB-5579C8599689.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BDB622BF-1CFA-5F1C-81FB-5579C8599689" xml:lang="en"><title>Camera Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BDC03973-45B0-54BD-99D1-298F4F59DB95.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BDC03973-45B0-54BD-99D1-298F4F59DB95"><title>How to execute SQL incrementally</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>DDL and DML statements can be executed incrementally.</p> <section><title>Incremental execution of a DDL statement</title> <p>The following code fragment illustrates the incremental execution of a DDL statement. In practice, this is no better than direct execution but shows the 'end conditions' for running <codeph>RDbIncremental</codeph>.</p> <codeblock id="GUID-BC862C15-ACC4-5D29-A814-358C88116B6F" xml:space="preserve">_LIT(KTxt,"DROP TABLE Suppliers");
+...
+RDbIncremental op;
+TInt step;
+TInt r=op.Execute(database,KTxt,step);
+while (step&gt;0 &amp;&amp; r==KErrNone)
+    {
+    r=op.Next(step);
+    }
+op.Close();
+...
+// r has the error code from the operation</codeblock> </section> <section><title>Incremental execution of a DML statement</title> <p>The following code fragment is an example of driving the incremental execution of a DML statement to completion.</p> <codeblock id="GUID-F25A1017-B103-530C-B426-54098A696014" xml:space="preserve">_LIT(KTxt,"DELETE FROM Suppliers");
+...
+RDbUpdate update;
+TInt r=update.Execute(database,KTxt);
+while (r&gt;0)
+    {
+    r=op.Next();
+    }
+op.Close();
+...
+// r has the error code from the operation
+// update.RowCount() returns the number of rows deleted, if successful</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D"><title> Writing a Format Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To write a Multimedia Framework (MMF) format plugin, the following needs to be done: </p> <ul><li id="GUID-224F84F6-9E61-5179-8128-CE564C000C48"><p>Write the appropriate source <codeph>.cpp</codeph> and <codeph>.h</codeph> files that make up the implementation of the format plugin. See <xref href="GUID-30FDDA7A-FF46-51A5-B73A-277C9FF69FFD.dita">Creating a Format Decode Plugin</xref> and <xref href="GUID-55B9AF74-DF38-5490-BD3C-908A2FE362E6.dita">Creating a Format Encode Plugin</xref> for information on how to do this. </p> </li> <li id="GUID-F2D1BC6D-BFF5-5E1C-85CC-379A2DBDEF5F"><p>Write a <xref href="GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita#GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D/GUID-0F5F293C-B22E-5D28-AAA5-2310F22B79D7">resource file</xref> defining the formats available in the plugin DLL. </p> </li> <li id="GUID-16FE0B2E-C90F-5FB9-A72C-8964BC27F61A"><p>Write the appropriate <xref href="GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita#GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D/GUID-A9569AB3-CAE5-5B2B-BFCB-10C1F7A9FC15">build</xref> files. </p> </li> <li id="GUID-E53D8658-17BC-50B0-955E-DBFD6BD1EDEE"><p> <xref href="GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D.dita#GUID-BDC081CA-FB0D-5F56-8C1B-F7AC9DD6875D/GUID-69DCE433-8D1C-535C-817A-7568EA58F911">Implementation considerations</xref>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9" xml:lang="en"><title>Framework
+requirements for GUI applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Applications developed for the Symbian platform can use a number of
+different architecture solutions to meet their requirements. One example of
+a common approach includes the Model - View - Controller (MVC) pattern used
+in GUI-based applications. In this approach, the application is split into
+three separate logical parts. Each part contains a different aspect of the
+entire application, and has a specific role.</p>
+<fig id="GUID-5E3A844B-CCF3-4F2A-82A9-DA7A5B65A572"><title>Logical dependencies in the MVC pattern</title><image href="GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e38364_href.png"/></fig>
+<p>In this approach, the model:</p>
+<ul>
+<li><p>contains and manipulates the data in the application</p>
+</li>
+<li><p>is owned by the controller</p></li>
+<li><p>is typically implemented in its own class or classes</p>
+</li>
+</ul>
+<p>the <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">view</xref> :</p>
+<ul>
+<li><p>displays the application state known by the model</p>
+</li>
+<li><p>receives user input</p></li>
+<li><p>notifies the controller of relevant events</p></li>
+<li><p>is implemented either with a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref> derived
+class or a <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref> derived
+class</p><p>For more information on these options, see <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">Traditional
+Symbian UI application architecture</xref> and <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">View
+architecture</xref>.</p></li>
+</ul>
+<p>the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">controller</xref> :</p>
+<ul>
+<li><p>handles application-wide events</p></li>
+<li><p>commands the model, typically based on user input</p>
+</li>
+<li><p>selects the view to be displayed</p></li>
+<li><p>is implemented either with a <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref>-derived
+class or a <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi_1_1CViewActivationItem.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref> derived class.</p><p>For more information on these options,
+see <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">Traditional
+Symbian UI application architecture</xref> and <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">View
+architecture</xref>.</p></li>
+<li><p>requires the implementation of <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref> and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref> derived
+classes.</p></li>
+</ul>
+<p>The pattern is implemented with the following classes.</p>
+<fig id="GUID-B4508A88-B688-4BB7-B42A-31BFF41CD4FA"><title>Relationship between the classes that make up a typical Symbian application</title><image href="GUID-DD6CB072-E152-4683-83B3-DB4BBFD6C4B6_d0e38484_href.png"/></fig>
+<p>The <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknApplication.html" format="application/java-archive"><parmname>CAknApplication</parmname></xref>-derived class:</p>
+<ul>
+<li><p>provides the application object expected by the application
+framework when the application is launched</p></li>
+<li><p>defines the application properties</p></li>
+<li><p>creates the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref> derived
+class if it does not exist yet</p></li>
+<li><p>if an instance of the application is already running, switches
+to that instance and exits</p></li>
+</ul>
+<p>The <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknDocument.html" format="application/java-archive"><parmname>CAknDocument</parmname></xref>-derived class:</p>
+<ul>
+<li><p>creates the controller class</p></li>
+<li><p>is the base class for application documents</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D"><title>Reference Counting Objects Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides reference counting objects and specialist containers for using them. </p> </section> <section><title>Architectural relationships</title> <p>Reference counting objects are largely used by server-side code to record the use of, and support access to, server-provided resources by multiple clients. The various container classes in the API provide the support for tracking the use of groups of such objects. </p> </section> <section><title>Description</title> <p><b>Reference counting object</b> </p> <p>A reference counting object tracks the number of references to itself, and destroys itself when the final reference is removed. As well as a reference count, the interface provides special provision for such objects to have a name, and to have ownership relationships between each other. </p> <p>The base class for reference counting objects is provided by <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref>. A program sub-classes this to provide support for a type of a reference-counted resource. </p> <p><b>Object container</b> </p> <p>A program needs to manage the instances of each type of reference counting object that it provides. For this reason, all reference counting objects must be held in array-like objects called object containers. Each object container is assigned a unique ID on construction. Objects in the container can be found by index position, name, or find-handle (a combination of container ID and object index position). </p> <p>The object container class is <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref>. </p> <p><b>Object container index</b> </p> <p>Object containers are themselves constructed through a class called an object container index, <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref>. The object container index also has array-like features: it assigns an ID to each container created, and allows containers to be accessed through their IDs. </p> <p><b>Object index</b> </p> <p>It can be useful to treat reference counting objects as members of groups other than their object containers. An object index is an array of references to reference-counted objects. Multiple instances of the same object, and objects from multiple object containers are allowed. As a way to identify their members, indexes can provide handle-numbers that combine the instance number of the reference counting object with the index of its position within the object index's array. </p> <p>The object index class is <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita"><apiname>CObjectIx</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94-master.png has changed
Binary file Symbian3/SDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e302302_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE26CD1E-C566-572D-9B2D-B6CFCA647C72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BE26CD1E-C566-572D-9B2D-B6CFCA647C72"><title>Text objects</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Four classes provide increasing levels of support for text content:</p> <ul><li id="GUID-F9C43495-C400-5520-9DC9-D97968C79DD4"><p><xref href="GUID-49DBB305-A043-3D23-AC33-6E5C8ABAD1EE.dita"><apiname>CEditableText</apiname></xref> provides just text content, no formatting</p> </li> <li id="GUID-1E267A97-3E79-5909-98E2-A6461EB3FF18"><p><xref href="GUID-ED1FFBC5-23C3-3C9E-B5D1-04B72B9369E6.dita"><apiname>CPlainText</apiname></xref> supports characters and paragraphs, <i>fields</i> and a page table. It can be manipulated and stored (using either a flat or segmented memory buffer), but has no formatting information and cannot be displayed. Examples of possible uses are spell checking and for explicit text handling buffers. </p> </li> <li id="GUID-80E7E899-F8B4-51B6-BC28-BB80F46D7788"><p><xref href="GUID-4F502FE5-44D4-3947-9D73-67EF4886059A.dita"><apiname>CGlobalText</apiname></xref> has a global format for all characters and all paragraphs</p> <p>This is the lowest-specification text class that can be laid out and displayed on the screen or printer. This is because layout and display require paragraph and character formats, however primitive.</p> </li> <li id="GUID-FCAAC812-263E-5144-9690-494C5408F66B"><p><xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> all characters and paragraphs may have individually set format attributes; pictures are supported</p> <p>This provides fully general formatting.</p> </li> </ul> <p>A text object has any number of characters, and always ends with a paragraph mark, which is not included in the length. The shortest document contains zero characters. The characters in a text object are contained in a dynamic buffer, usually a <codeph>CBufSeg</codeph> but, for short text objects of bounded length, a <codeph>CBufFlat</codeph> may be more appropriate. </p> <section><title>Manipulating text objects</title> <p>Text objects provide functions to insert and delete text, and to exchange text with descriptors. Definitions for special characters are also provided. </p> <p>Facilities to count characters, words and paragraphs are provided, and also to find the beginning of the next or previous word or paragraph. When scanning words, various types of delimiters may be used. For example picture characters and punctuation delimiters may be set, which is useful for spell checking. Delimeters, such as <codeph>EScanPictureIsDelimiter</codeph>, are set in a scan mask parameter to the <codeph>ScanWords()</codeph> functions of the <codeph>CEditableText</codeph> and <codeph>CPlainText</codeph> classes.</p> </section> <section><title>Addressable document positions</title> <p>Characters are addressed by a document position, which may range from zero through to the length of the buffer. A document position is considered to mark the point between two adjacent characters. Thus document position 2 is located between the second and third characters. Document position 0 is located before the first character in the text object. Inserting text at position 5 will insert text immediately after the fifth character. Special elements such as paragraph marks, non-breaking spaces etc. are assigned to their Unicode character codes.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE3B53A8-B06D-53C4-8FC0-85B3BA4F39EF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BE3B53A8-B06D-53C4-8FC0-85B3BA4F39EF" xml:lang="en"><title>PIM Application Engines
+and Services Guide</title><shortdesc>These topics provide information about the Personal Information
+Management components. Functionality includes Calendar, Contacts and Time
+zone.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e289045_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F" xml:lang="en"><title>Requesting
+Log Engine Notifications </title><shortdesc>This tutorial describes how to request notification from Log Engine. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-026E70FC-4181-56D2-810A-F9D70BE9A2E7"><p>The Log Engine
+records events so that other applications can react to them in ways which
+are not part of its own specification. A typical reaction to an event might
+be refreshing the screen of the device or causing it to beep, but that is
+not Log Engine functionality. The Log Engine notifies other applications of
+a change to its database. It provides two interfaces which you implement to
+set up notification of changes: </p> <ul>
+<li id="GUID-7CE07F32-E2D1-5E2B-A491-4B3DC5CC5F31"><p> <xref href="GUID-37519930-C95E-3FF1-A32D-D42D0A9E710F.dita"><apiname>MLogClientChangeObserver</apiname></xref>  </p> </li>
+<li id="GUID-5D5CFA78-7B04-56CD-B919-D0703F1696EF"><p> <xref href="GUID-7DE036FC-7ECE-38FE-8BC0-7B0CA2B3B195.dita"><apiname>MLogViewChangeObserver</apiname></xref>  </p> </li>
+</ul> </context>
+<steps id="GUID-5E3B8D4C-C912-5E74-8744-44FE6427754F">
+<step id="GUID-81E579ED-7379-5ED9-AAD8-F49A0AE50F06"><cmd>Implement <xref href="GUID-37519930-C95E-3FF1-A32D-D42D0A9E710F.dita"><apiname>MLogClientChangeObserver</apiname></xref>  </cmd>
+<info> <xref href="GUID-37519930-C95E-3FF1-A32D-D42D0A9E710F.dita"><apiname>MLogClientChangeObserver</apiname></xref> concerns changes which
+are global to the database and it has a single member function to be implemented: </info>
+<substeps id="GUID-E55DB2B7-A71E-4EB6-8A69-4F4BB5EABE9B">
+<substep id="GUID-E509EE1B-92F6-4C45-BFC6-8370BA3FE4AA"><cmd>Implement <xref href="GUID-539F45CB-1182-38EE-A15C-BCD9093AC24F.dita"><apiname>HandleLogClientChangeEventL</apiname></xref> of <xref href="GUID-37519930-C95E-3FF1-A32D-D42D0A9E710F.dita"><apiname>MLogClientChangeObserver</apiname></xref></cmd>
+<info>Its arguments are: </info>
+<info><ul>
+<li id="GUID-393080A5-BAF1-5461-AF2A-46F413C56383"><p> <xref href="GUID-530281E6-29FC-33F2-BC9B-610FBA389444.dita"><apiname>TUid</apiname></xref> aChangeType
+the UID of the type of event which occurred </p> </li>
+<li id="GUID-73B0B616-C029-52EF-AF31-53996B639051"><p> <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> aChangeParameter1 </p> </li>
+<li id="GUID-34CF35D8-6078-587B-A8C1-00337F5C3C31"><p> <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> aChangeParameter2 </p> </li>
+<li id="GUID-800AC30F-DF6F-55CF-9455-D49C25F253D0"><p> <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> aChangeParameter3 </p> </li>
+</ul></info>
+<info>The last three arguments are context-specific: their meaning is specific
+to the type of event that occurred. </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-75C55B15-FA43-5E6D-9967-6B6086BCA32B"><cmd/>
+<info>Implement <xref href="GUID-7DE036FC-7ECE-38FE-8BC0-7B0CA2B3B195.dita"><apiname>MLogViewChangeObserver</apiname></xref>  </info>
+<info> <xref href="GUID-7DE036FC-7ECE-38FE-8BC0-7B0CA2B3B195.dita"><apiname>MLogViewChangeObserver</apiname></xref> concerns changes which are
+specific to a database view and it has three member functions to be implemented: </info>
+<substeps id="GUID-5645F222-5B4C-4B28-8AC2-F28256821883">
+<substep id="GUID-DB5501DF-E345-426E-B13D-5B3CEF840A28"><cmd/>
+<info><xref href="GUID-A41FB471-60EC-3786-8CCC-BD35048ED38A.dita"><apiname>HandleLogViewChangeEventAddedL</apiname></xref></info>
+</substep>
+<substep id="GUID-D68B3B48-8D28-4086-B5FE-B22D622A741C"><cmd/>
+<info><xref href="GUID-D799F87B-C0CE-3129-A526-A3B06469B328.dita"><apiname>HandleLogViewChangeEventChangedL</apiname></xref></info>
+</substep>
+<substep id="GUID-0698E95C-F370-49B5-B43E-176BF5C5F713"><cmd/>
+<info><xref href="GUID-6C1A90CC-BA78-3B37-A39C-DC6D1F714654.dita"><apiname>HandleLogViewChangeEventDeletedL</apiname></xref></info>
+</substep>
+</substeps>
+<info>Each of them has the same arguments: </info>
+<substeps id="GUID-368850E6-5B7F-4ADB-99ED-F1843BE1340C">
+<substep id="GUID-649209D5-146A-445B-B7FF-E67F061148B8"><cmd/>
+<info><xref href="GUID-271367A8-DD4F-3A82-AD88-F3E94F2AA980.dita"><apiname>TLogId</apiname></xref> aId </info>
+</substep>
+<substep id="GUID-982974D3-2D00-40EB-9A32-1F7588390CAA"><cmd/>
+<info><xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> aViewIndex</info>
+</substep>
+<substep id="GUID-46F2D7CB-5016-4F08-94DA-12BFFDDD535F"><cmd/>
+<info><xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> aChangeIndex </info>
+</substep>
+<substep id="GUID-DF50A88D-DE13-4693-9376-CF6143D8FC7C"><cmd/>
+<info><xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> aTotalChangeCount</info>
+</substep>
+</substeps>
+</step>
+</steps>
+<postreq><p>A change to a view typically occurs as part of a sequence of changes,
+and the position of the change event record in the view typically reflects
+this
+fact. 
+</p><p>The argument <codeph>aId</codeph> is the Id of the log event in the database.
+The argument <codeph>aViewIndex</codeph> is the position in the view
+where the event record was added, changed or deleted. The argument
+<codeph>aChangeIndex</codeph> is the index of the event in the sequence of
+changes. The argument <codeph>aTotalChangeCount</codeph> is the total number
+of events in the sequence of changes  
+</p></postreq>
+</taskbody><related-links>
+<link href="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita"><linktext>Maintaining
+Log Events</linktext></link>
+<link href="GUID-2022F702-9899-5798-8932-D70119C7177D.dita"><linktext>Setting Up
+A Log Engine Client</linktext></link>
+<link href="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita"><linktext>Displaying
+Log Events</linktext></link>
+<link href="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita"><linktext>Configuring
+Log Engine </linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE70DCBF-366A-5054-B0F1-7FCEF45FC735.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BE70DCBF-366A-5054-B0F1-7FCEF45FC735"><title>Creating and Unlinking a File Descriptor from a Shared Memory</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-FF8FD54D-4CD3-3DC7-9A48-56043F26E5DD.dita"><apiname>shm_open()</apiname></xref> function enables you to create shared memory and associate a file descriptor. Use the <xref href="GUID-BF359599-0088-3F3E-BD80-B09C1F5DA380.dita"><apiname>shm_unlink()</apiname></xref> function to remove (unlink a file descriptor from a shared memory) the name of the shared memory object. </p> <p>Example: </p> <codeblock id="GUID-F030E460-536D-53A8-86F1-36E63860677D" xml:space="preserve">#include &lt;stdio.h&gt;
+#include &lt;sys/mman.h&gt;
+#include &lt;fcntl.h&gt;
+#include &lt;errno.h&gt;
+int main(void)
+    {
+    int fd;// File Descriptor
+    int ret;
+    if((fd = shm_open("page", O_RDWR|O_CREAT, 0666)) &lt; 0)
+        {
+        printf("Shared memory creation failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Shared memory creation was successful\n");
+        }
+    close(fd);//closing the file descriptor
+    if((ret = shm_unlink("page")) &lt; 0) 
+        {
+        printf("Shared memory unlinking failed with errno %d\n", errno);
+        }
+    else
+        {
+        printf("Shared memory unlinking was successful\n");
+        }
+    return ret;
+    }</codeblock> </conbody><related-links><link href="GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita"><linktext>Librt Overview</linktext> </link> <link href="GUID-A4ECB450-02DA-5E85-91AC-4C8BDE0B9B58.dita"><linktext>Writing, Reading and Seeking from a
+                Shared Memory</linktext> </link> <link href="GUID-8F6D6934-8FF0-5045-8AB1-74384BE792EA.dita"><linktext>Retrieving Information about a
+                Shared Memory Object</linktext> </link> <link href="GUID-66402932-5C44-556B-A7AC-1C2D245C8B05.dita"><linktext>Clocks and Timers Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE871265-147B-45F3-8772-A4E091223EDB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BE871265-147B-45F3-8772-A4E091223EDB" xml:lang="en"><title>Constructing
+views in traditional architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The call on the first phase constructor method of the view occurs in <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller</xref>. The
+view serves as the top-level window under the UI controller.</p>
+<p>The methods you need to implement for your <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+view are as follows:</p>
+<ul>
+<li><p>C++ default constructor, which cannot contain code that leaves.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-83E49AC1-37CD-43B0-AFEA-321BF8F62A92" xml:space="preserve">
+CMyAppView::CMyAppView()
+    {
+    // No implementation required
+    }</codeblock>
+<p><draft-comment time="2007-03-06T13:00">Comment to reviewers: We will
+link these Cleanup stack and new (ELeave) methods to the Symbian Developer
+Library API Reference.</draft-comment></p>
+</itemgroup>
+</li>
+<li><p>two-phase constructor, a common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-D1B0073F-A8C6-4F6B-8F31-9F9DA4F164D9" xml:space="preserve">CMyAppView* CMyAppView::NewL( const TRect&amp; aRect )
+    {
+    CMyAppView* self = CMyAppView::NewLC( aRect );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+CMyAppView* CMyAppView::NewLC( const TRect&amp; aRect )
+    {
+    CMyAppView* self = new ( ELeave ) CMyAppView;
+    CleanupStack::PushL( self );
+    self-&gt;ConstructL( aRect );
+    return self;
+    }
+</codeblock>
+<p>The declarations for <parmname>CMyAppView::NewL</parmname> and <parmname>CMyAppView::NewLC</parmname> in
+the class header file needs to be public to support the construction method
+required. <parmname>CMyAppView</parmname> is the default constructor for the <parmname>CMyAppView</parmname> class
+and it is private.</p>
+<p>In this approach, <parmname>CMyAppView::NewL</parmname> is called from
+the UI controller. It creates a view object by calling <parmname>CMyAppView::NewLC</parmname>. <parmname>CMyAppView::NewLC</parmname> calls
+new (<parmname>ELeave</parmname>) on the C++ default constructor <parmname>CMyAppView</parmname> to
+create the object (and leave if it cannot), <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CCleanupClass.html#%3a%3aCCleanup%3a%3aPushL%28CBase%20%2a%29" format="application/java-archive">pushes</xref> a pointer to the clean-up stack in case the second phase construction method
+leaves, and then calls the second phase construction method of the object.
+When it returns to <parmname>CMyAppView::NewL</parmname>, the pointer pushed
+to the cleanup stack is <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CCleanupClass.html#%3a%3aCCleanup%3a%3aPop%28%29" format="application/java-archive">removed</xref>.</p>
+</itemgroup>
+</li>
+<li><p>Symbian 2nd phase constructor with code that might leave.
+A common implementation is:</p>
+<itemgroup>
+<codeblock id="GUID-34901188-B037-4862-9DA4-80D9EDBDEC5F" xml:space="preserve">void CMyAppView::ConstructL( const TRect&amp; aRect )
+    {
+    // Create a window for this application view
+    CreateWindowL();
+
+     //add construction for other controls if required
+
+	   // Set the windows size
+    SetRect( aRect );
+
+    // Activate the window, which makes it ready to be drawn
+    ActivateL();
+    }</codeblock>
+<p><parmname>CMyAppView::ConstructL</parmname> is a private class providing
+the second phase construction that accepts the rectangle the view is drawn
+to.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCreateWindowL%28%29" format="application/java-archive"><parmname>CCoeControl::CreateWindowL</parmname></xref> creates a window
+for the control. Note that this window is a child of the UI controller. This
+method makes the control a <xref href="GUID-352850A9-227F-45DB-8DCD-C6268954B4ED.dita">window-owning
+control</xref>. While the use of window-owning controls is generally discouraged
+to prevent the taxing of run-time resources, this is the top-level window
+for the UI controller.</p>
+<p>This is a simple control that does not contain other controls; other
+controls could be added to the control between <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aCreateWindowL%28%29" format="application/java-archive"><parmname>CCoeControl::CreateWindowL</parmname></xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetRect%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetRect(aRect)</parmname></xref>. For more information,
+see <xref href="GUID-97486385-88F7-4AF1-B880-D9A8AA4D7094.dita">Compound
+controls in traditional architecture</xref>.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetRect%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetRect(aRect)</parmname></xref> sets the window
+size according to the requirements of the mobile device. The top-level control
+rectangle is set to the area that the framework provides for the application.
+Calling <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSetRect%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeControl::SetRect(aRect)</parmname></xref> calls the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSizeChanged%28%29" format="application/java-archive"><parmname>CCoeControl::SizeChanged</parmname></xref> method, where
+the control should set the position and size for any child controls and thus
+adjust the control layout to the UI.</p>
+<p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aActivateL%28%29" format="application/java-archive"><parmname>CCoeControl::ActivateL</parmname></xref> sets the control
+as ready to be drawn.</p>
+</itemgroup>
+</li>
+</ul>
+<p>If required for your application, you may need to implement other methods
+for your control. For top-level windows, you would need to implement <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSizeChanged%28%29" format="application/java-archive"><parmname>CCoeControl::SizeChanged</parmname></xref>  to respond to
+changes to the size and position of the contents of this control. This is
+called by the platform when a change occurs. A typical implementation for
+a compound control is:</p>
+<codeblock id="GUID-A100010E-DF65-4EB7-AC5D-707604805976" xml:space="preserve">void CMyAppView::SizeChanged()
+    {
+    // Control resize code
+    iControl-&gt;SetExtent( const TPoint &amp;aPosition, const TSize &amp;aSize);
+    }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BE893F87-E7F6-56E5-BD27-328B532F8332" xml:lang="en"><title>Hello
+World Example: Using P.I.P.S.</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example application shows a simple EXE and DLL written using P.I.P.S.
+(P.I.P.S. Is POSIX on Symbian Platform). It also shows the dynamic lookup
+of symbols by name mechanism used in Unix-like operating systems, instead
+of the native Symbian Platform lookup by ordinal mechanism. P.I.P.S., from
+Symbian OS v9.3, provides APIs from <filepath>libdl</filepath> library to
+implement this lookup by name mechanism. </p>
+<p>The example defines a simple DLL using the P.I.P.S. <codeph>STDDLL</codeph> target
+type, with an exported function. It also creates a simple EXE, using the <codeph>STDEXE</codeph> target
+type, which calls the DLL's exported function using the lookup by name mechanism.
+These P.I.P.S. specific target types are required to enable the specific options
+for compilers and linkers to generate P.I.P.S. executables and to make symbol
+information available in the executable image. </p>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-42af5ea2-87c6-46ef-b872-af35876c73c7.zip" scope="external">HelloWorldExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-42af5ea2-87c6-46ef-b872-af35876c73c7.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p>The following sections provide more
+information about the example. </p> <p><b> Creating a simple DLL using P.I.P.S.
+STDDLL target type</b> </p> <p>The example creates a DLL file that declares
+and defines an exported function. The target type of this DLL file is <codeph>STDDLL</codeph>.
+It contains a header and a source file: </p> <ul>
+<li id="GUID-A0857840-AD8C-5313-A642-801A79382855"><p> <filepath>helloworlddllexample.h</filepath>:
+this declares a function with external linkage. Note that for a <codeph>STDDLL</codeph> library,
+functions and data with external linkage are exported by default, without
+any requirement for <codeph>IMPORT_C</codeph> and <codeph>EXPORT_C</codeph> declarations
+in header or source files. </p> </li>
+<li id="GUID-973CE8AE-5B87-5234-8145-20A6632E7F9C"><p> <filepath>helloworlddllexample.cpp</filepath>:
+this defines the function declared in the header file, which displays a hello
+world message to the console. </p> </li>
+</ul> <p><b> Creating a simple EXE using P.I.P.S. STDEXE target type</b> </p> <p>The
+example creates an EXE file which calls the exported function of the loaded
+DLL. The target type of this EXE file is <codeph>STDEXE</codeph>. It calls
+the following <filepath>libdl</filepath> functions to use the lookup by name
+mechanism: </p> <ul>
+<li id="GUID-08422DA9-EE4F-502C-8D31-EB19BC86F98B"><p> <xref href="GUID-51FB35C0-CFC2-357A-8ACA-FE7480C53AD3.dita"><apiname>dlopen()</apiname></xref>:
+This function is used to load the DLL file which contains an exported function. </p> </li>
+</ul> <ul>
+<li id="GUID-0EC17FCA-7B6A-5FBF-8693-1C4BD629F553"><p> <xref href="GUID-312604D7-59D9-3C67-9D4F-42CFA24EAA2B.dita"><apiname>dlsysm()</apiname></xref>:
+This function gets the address of a symbol defined within the DLL loaded by
+the <codeph>dlopen()</codeph> call. </p> </li>
+</ul> <ul>
+<li id="GUID-EFC5BA53-F378-5D2B-A550-1055DA8CBAD7"><p> <xref href="GUID-F74DC7CB-1E3F-368E-99A7-DD4B38FF7EF0.dita"><apiname>dlclose()</apiname></xref>:
+This function informs the system that the DLL loaded by a previous <codeph>dlopen()</codeph> call
+is no longer needed by the application. </p> </li>
+</ul> <ul>
+<li id="GUID-B6003F4A-8919-5D15-844E-294A9020A2C2"><p> <xref href="GUID-F5B2CFAB-99F5-3A24-8F6C-ECAA61922FB0.dita"><apiname>dlerror()</apiname></xref>:
+This function is used to get the last error that occurred from any of the <filepath>libdl</filepath> APIs. </p> </li>
+</ul> <p>The EXE links to <filepath>libdl.lib</filepath> to use these functions. </p> </section>
+<section><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian
+build process</xref> describes how to build this example application. </p> <p>The <filepath>HelloWorldExample</filepath> builds
+two files, a DLL file <filepath>helloworlddllexample.dll</filepath>, and an
+EXE file <filepath>helloworldexeexample.exe</filepath>, in the standard locations. </p> <p>To
+run the example, start <filepath>helloworldexeexample.exe</filepath> from
+the file system or from your IDE. After launching the executable, depending
+on the emulator you are using, you may need to navigate away from the application
+launcher or shell screen to view the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BEA5E4F1-B355-47A1-99DC-8E8EDB7B1CB3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BEA5E4F1-B355-47A1-99DC-8E8EDB7B1CB3" xml:lang="en"><title>Setting
+the time after which the long-tap event is sent</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The most important setting for the long-tap detector is the time for which
+the stylus needs to be held on a control before the long-tap event is sent.
+Use the method <codeph>SetLongTapDelay</codeph> to change this time setting. </p>
+<p>If you do not set any time value, then the default time (0.8 seconds) will
+be used. The time is set in microseconds.</p>
+<codeblock xml:space="preserve">TInt time ( 2000000 ); // 2 seconds
+iLongTapDetector-&gt;SetLongTapDelay( time );
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e303317_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BEC25BA5-A994-48B6-B781-26900B04C8BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BEC25BA5-A994-48B6-B781-26900B04C8BE" xml:lang="en"><title>Introduction
+to GLib Low Memory Handler</title><shortdesc>The default behavior of GLib in Linux is such that in case of a
+memory allocation failure, the GLib memory allocation API will call abort
+and hence terminate the application.  </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Memory allocation failures are more likely on a mobile device and aborting
+the application in such cases is undesirable. Therefore, the implementation
+of GLib for Symbian platform has been modified so that the GLib memory allocation
+APIs return NULL and do not call <codeph>abort()</codeph>. This requires the
+application written using GLib to start handling memory allocation failures
+which they are currently not doing.</p>
+<p>If the user, for example, wants to change the first character of a string
+with z and return the string to the caller a GLib code for this can be written
+as follows:  </p>
+<codeblock xml:space="preserve">gchar * f1(gchar * x) 
+{ 
+ 	  gchar *temp; 
+    temp = g_strdup(x); 
+    temp[0] = ‘z’; 
+    return temp; 
+}</codeblock>
+<p>If there is a memory allocation failure in Linux, the call to <codeph>g_strdup</codeph> which
+internally uses <codeph>g_malloc</codeph> will cause the application to abort.
+However, in Symbian platform the <codeph>g_malloc()</codeph> function will
+return NULL, but the implementation of <codeph>g_strdup()</codeph> is such
+that the return value of <codeph>g_malloc()</codeph> is not checked for NULL.
+This causes the<codeph> g_strdup()</codeph> API to panic or crash the application.
+Thus, a mechanism to deal with the failures, panics or crash resulting from
+low memory situations within Symbian platform is needed.</p>
+<section id="GUID-003701F2-1AFE-4780-995F-A17FBA777A52">       <title>Illustration
+of the mechanism to handle a memory allocation failure scenario</title>  
+    <p>The user needs to initialize the framework which handles the low memory
+scenarios using the below-mentioned macros:</p><ol>
+<li id="GUID-5093158D-046C-4964-B220-E03B8D8DCF9B"><p><b><codeph>SET_LOW_MEMORY_TRAP(failure_value)</codeph>:</b> This
+macro will set a trap handler for low memory cases. In case there is an allocation
+failure, the failure value will be returned from the function where the trap
+handler is set.</p></li>
+<li id="GUID-E7809DD2-865E-48FE-99DE-863B7BF8C776"><p><b><codeph>SET_LOW_MEMORY_TRAP_VOID()</codeph>:</b> This
+will do the same as the above except that the function where this is set will
+just return. This will typically be used by functions which return void. In
+this case, however, the caller must check the <codeph>errno</codeph> value.
+If it is <codeph>ENOMEM</codeph>, then the user must handle things appropriately.</p></li>
+<li id="GUID-46A09236-E182-4780-B7C4-4FF31823CC37"><p><b><codeph>REMOVE_LOW_MEMORY_TRAP()</codeph>:</b> This
+will remove the trap handler which was set. </p></li>
+</ol><p>The function <codeph>f1()</codeph> will now be rewritten as:</p><codeblock xml:space="preserve">#include &lt;glowmem&gt;
+gchar * f1(gchar * x) 
+{ 
+	gchar *temp; 
+  SET_LOW_MEMORY_TRAP(NULL); 
+  temp = g_strdup(x); 
+	temp[0] = ‘z’; 
+	REMOVE_LOW_MEMORY_TRAP(): 
+	return temp; 
+} </codeblock><p>If there is a memory allocation failure when the above function <codeph>f1()</codeph> is
+called, then <codeph>f1()</codeph> will return NULL to its caller. The caller
+of <codeph>f1()</codeph> is expected to check the failure value of <codeph>f1()</codeph> instead
+of ignoring the same. </p><p><b>Some words of caution</b>: The
+macro <codeph>SET_LOW_MEMORY_TRAP()</codeph> defines a variable so it is necessary
+to make the call after all the local variables declarations in C. <codeph>REMOVE_LOW_MEMORY_TRAP()</codeph> must
+be called just before the return from the function, which means that if there
+are four return statements in the function then all of them must be preceded
+with a call to <codeph>REMOVE_LOW_MEMORY_TRAP()</codeph>.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e208130_href.png has changed
Binary file Symbian3/SDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8-master.png has changed
Binary file Symbian3/SDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e190046_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A" xml:lang="en"><title>Creating
+registration resource files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You need to register your applications in order to make them visible
+to the application menu and to provide other information to the underlying
+system. To register, you need to provide a registration resource file, typically
+named <parmname>&lt;application_name&gt;_reg.rss</parmname>, that contains the
+non-localized information for your application. You also need to provide the <xref href="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita">localizable registration
+information</xref>. The registration resource file is compiled during the
+build process and included in the <xref href="GUID-7F1B2577-2FEF-45F9-B32F-745DFE0F0D95.dita"><parmname>pkg</parmname></xref> file
+used to make the <parmname>sis</parmname> <xref href="GUID-61EE2BE0-7B86-42CD-A03F-857DD8FAC246.dita">installation
+file</xref>.</p>
+<p>To create a registration resource file:</p>
+<ol>
+<li id="GUID-D97F1C74-A29A-4EF1-92C1-8FBAF2EE6F2F"><p>Determine
+the requirements of your application.</p></li>
+<li id="GUID-41830892-AA07-44F7-BCEE-4FACD88932FF"><p>Create a text
+file with the name <parmname>&lt;application_name&gt;_reg.rss</parmname>.</p>
+</li>
+<li id="GUID-7EE5ADE9-C5D4-43E0-BB94-977CB064CF2D"><p>Include the
+appropriate header files. Typically, you need to include the following files:</p>
+<itemgroup>
+<ul>
+<li><p><parmname>appinfo.rh</parmname>, which is the resource header
+file that includes the data structure declaration for the resource statement
+used in the registration resource file</p></li>
+<li><p>compiled resource header file for the resource file with
+the symbolic ID for the<xref href="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita"> localizable
+registration information</xref></p></li>
+<li><p>localization file, depending on you implementation of the
+registration resource file</p></li>
+</ul>
+<p>For more information on pre-processor statement syntax, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.preprocess.html#DevTools%2dref%2erss%2e3" format="application/java-archive">C++ pre-processor statements</xref>.</p>
+</itemgroup>
+</li>
+<li id="GUID-42A15A31-6A2C-4937-9615-A128068E2F76"><p>Add a statement
+for the UID2 value for the registration resource file as follows:.</p>
+<itemgroup>
+<codeblock id="GUID-A82F0146-5B48-48C8-A5F5-F200D08A6C4D" xml:space="preserve">UID2 KUidAppRegistrationResourceFile</codeblock>
+<p>UID2 always has the same value in registration resource files.</p>
+</itemgroup>
+</li>
+<li id="GUID-4C96D57D-FBA2-4BF6-A1AF-715467663A27"><p>Add a statement
+for the <xref href="GUID-EA05F9B6-52C7-4BD9-8B9A-4BA3456E70B5.dita">UID3</xref> value
+of the application as follows</p>
+<itemgroup>
+<codeblock id="GUID-EA7F044D-2BB2-4552-B768-3248DF6DAF7F" xml:space="preserve">UID3 &lt;uid3 value for application&gt;</codeblock>
+</itemgroup>
+</li>
+<li id="GUID-6A8002EA-AFF5-4750-833C-81ED5F355C6C"><p>Create a <parmname>APP_REGISTRATION_INFO</parmname> resource
+for your application. The definition for the registration code block is as
+follows:</p>
+<itemgroup>
+<codeblock id="GUID-EF44E298-635E-40BD-8FBE-8A6712FCA0FB" xml:space="preserve">
+RESOURCE  APP_REGISTRATION_INFO
+	{
+	app_file = ""; // name of application binary file (not including extension) - mandatory
+	attributes = 0;
+	localisable_resource_file = ""; // path (not including drive) and name of localisable resource file
+	localisable_resource_id = r_name36;
+	hidden = KAppNotHidden;
+	embeddability = KAppNotEmbeddable;
+	newfile = KAppDoesNotSupportNewFile;
+	launch = KAppLaunchInForeground;
+	group_name(KAppMaxGroupName) = "";
+	default_screen_number = 0;
+	datatype_list[]; // SUPPORTED DATATYPES
+	file_ownership_list[]; // FILE_OWNERSHIP_INFO
+	service_list[]; // SERVICE_INFO
+	opaque_data = 0;	// use for opaque data to send to non-native application launchers i.e. MIDlet id
+	}</codeblock>
+<p>where,</p>
+<ul>
+<li><p><parmname>app_file</parmname> indicates the name of the application
+executable binary file without the extension</p></li>
+<li><p><parmname>localisable_resource_file</parmname> indicates
+the path and name of the localizable resource file for the application</p>
+</li>
+<li><p><parmname>localisable_resource_id</parmname> indicates the
+symbolic name of the resource for the <xref href="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita">localizable
+registration resource</xref></p></li>
+<li><p><parmname>newfile</parmname> indicates whether the application
+is document-based and supports the creation of new files. The default value
+is <parmname>KAppDoesNotSupportNewFile</parmname>.</p></li>
+<li><p><parmname>embeddability</parmname> indicates whether an application
+is embeddable.</p>
+<itemgroup>
+<p>The default value is <parmname>KAppNotEmbeddable</parmname>.</p>
+<p>For more information on embeddability, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/faqSDK/faq_1129.html" format="application/java-archive">FAQ-1129 What is an embeddable application?</xref>.</p>
+</itemgroup>
+</li>
+</ul>
+<p>The header file for the registration resource files is <parmname>appinfo.rh</parmname> and
+is located in the <parmname>./epoc32/include</parmname> folder.</p>
+<p>For more information on the other values in the resource, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools/RegFiles/Tool_Guide_Reg_Properties.html#DevTools%2eRegProperties" format="application/java-archive">Defining application icons, captions and properties</xref>.</p>
+</itemgroup>
+</li>
+</ol>
+<p>For a commented example, see <xref href="GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita">HelloWorldBasic_reg.rss</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BF3767E9-054E-4894-9216-00866FC9C3D8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BF3767E9-054E-4894-9216-00866FC9C3D8" xml:lang="en"><title>Setting
+the time before the long-tap animation starts</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can set the time for the long-tap animation to start after the stylus
+has been set down on a control. Use the method <codeph>SetTimeDelayBeforeAnimation</codeph> for
+changing the time setting. </p>
+<p>If not set, then default value (0.15 seconds) will be used. The time is
+set in microseconds.</p>
+<codeblock xml:space="preserve">TInt time ( 500000 ); // 0.5 seconds
+iLongTapDetector-&gt;SetTimeDelayBeforeAnimation ( time );
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E"><title>Architecture</title><shortdesc>This topic describes the Network Interface Manager (NifMan) architecture. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>NifMan Architecture</title> <p>The following diagram outlines the main components in the NifMan architecture: </p> <fig id="GUID-71FB9DE6-1171-5486-9480-8A8A6A8F0B29"><image href="GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e94885_href.png" placement="inline"/></fig> <p>As shown, the NIFMAN configuration daemon architecture consists of two parts: </p> <ul><li id="GUID-E2F1FCB0-9A25-52ED-BD80-4C91E271F099"><p>An ECom plug-in for NIFMAN </p> <p>The ECom plug-in manages the interface between NIFMAN and the configuration daemon. The ECom plug-in is referred to as the configuration daemon manager. </p> </li> <li id="GUID-335CBA17-63CF-5309-AA5B-009A3CC6198C"><p>The configuration daemon </p> <p>The configuration daemon is a Symbian OS server that runs in its own process. It does not run in the NIFMAN thread. Licensees can write new configuration daemons. </p> </li> </ul> <p>The framework for configuration daemons support the following: </p> <ul><li id="GUID-5B004464-1411-5CDC-8504-0AEE9AFFCA82"><p>Deregistration events </p> <p>Deregistration events notify the daemon when the interface is shutting down. For Mobile IP, the phone can deregister its foreign agent address with the home agent. </p> <p>Alternatively, the daemon can instruct NIFMAN to maintain the logical state of a user session and release the resources associated with the wireless connection. This is called fast dormant mode. </p> </li> <li id="GUID-9D5648A1-0683-5B27-90CD-3C0836CAF09E"><p>Progress notifications </p> <p>Mobile IP reports progress notifications when it registers and deregisters with the foreign agent. The notifications are passed by NIFMAN to the sockets client using <codeph>RConnection::ProgressNotification()</codeph>, for the current interface. </p> </li> </ul> <p>The configuration daemon manager handles one outstanding daemon request at a time. If a request is already being processed, NIFMAN queues a deregistration request which is processed when the previous request is complete. Other types of request are not queued. This permits the handling of the following scenarios: </p> <ul><li id="GUID-CDD25CFF-B4B1-5472-91C8-45EC27D6AF89"><p>Deregistration notification during registration. </p> </li> <li id="GUID-24E5A80D-50A3-5BAA-9B78-07C0872491E5"><p>Deregistration notification during an Ioctl request. </p> </li> <li id="GUID-8859117E-F118-5C21-B0F2-AB327A3C3C72"><p>Deregistration notification when the daemon is being requested to enter fast dormant mode. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita"><linktext>What is Network Interface Management
+                (NifMan)?</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BF6ECC83-C7A0-4183-B835-6299CC2114AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BF6ECC83-C7A0-4183-B835-6299CC2114AF" xml:lang="en"><title>Querying
+if feedback is supported</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You do not normally need to check whether tactile feedback is supported
+or not, as it is safe to call the API functions even if feedback is not supported.</p>
+<p>However, in some cases using the area registry can require complex calculations
+for e.g. at portrait/landscape mode changes. In case these calculations cause
+too much overhead, you can use the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#c2b7967bf3d203ca223ea5d99647a2ef" format="application/java-archive"><codeph>TouchFeedbackSupported</codeph></xref> function to check whether
+feedback is supported or not, and skip the calculations in case there is no
+feedback at all.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BF796290-E9BC-5A18-AC59-9848823FBE34.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BF796290-E9BC-5A18-AC59-9848823FBE34" xml:lang="en"><title>Using
+CActive</title><shortdesc>This document describes the use of the <codeph>CActive</codeph> class
+to implement asynchronous services and requests.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A9EA0646-0C98-54B8-A88D-35E759400D55"><title>Writing derived
+classes</title> <p>A <codeph>CActive</codeph> -derived class must fulfil a
+number of requirements, including providing a constructor and a number of
+functions.</p> <p>To write a class which encapsulates an asynchronous service:</p> <ul>
+<li id="GUID-31F66997-600E-554A-9DE2-038C419DC37D"><p>define and implement
+a C++ constructor through which the priority of the active object can be specified.
+A typical implementation calls the <codeph>CActive</codeph> constructor through
+a constructor initialization list.</p> </li>
+<li id="GUID-83C464D7-2950-5C24-9469-210AE6A86A53"><p>define data members
+representing the asynchronous service provider; the number and meaning of
+these members depends on the services offered by the service provider</p> </li>
+<li id="GUID-731C8F60-1410-5E85-99FD-CC58312A2690"><p>define and implement
+a second-phase <codeph>ConstructL()</codeph> member function, if this is necessary
+to initialize contact with the asynchronous service provider.</p> </li>
+<li id="GUID-C316327D-8C8E-515F-9E9C-CDBD208EF437"><p>define and implement
+a <codeph>DoCancel()</codeph> member function to handle a cancel request to
+the service provider. This function is defined as pure virtual in <codeph>CActive</codeph> and
+any class derived from <codeph>CActive</codeph> must define and implement
+it.</p> </li>
+<li id="GUID-413E95E4-7E2B-565B-BF49-1DC51F29BD0F"><p>define and implement
+one or more service request functions which forward requests to the service
+provider</p> </li>
+</ul> <p>To write a class which handles the completion of an asynchronous
+request, a <codeph>RunL()</codeph> function should be provided. The function
+is defined as pure virtual in <codeph>CActive</codeph> and any class derived
+from <codeph>CActive</codeph> must define and implement it. <codeph>RunL()</codeph>:</p> <ul>
+<li id="GUID-274B7335-4DFF-5B22-A752-5DD1828575A8"><p>handles completion of
+a request, if appropriate</p> </li>
+<li id="GUID-633B97B6-2B1C-59FA-8221-C52A0B6DEEFB"><p>if appropriate, renews
+the request, or initiates other requests, or decides to terminate the series
+of requests handled by the active object</p> </li>
+</ul> <p>In some cases, a derived-class's <codeph>RunL()</codeph> will do
+some pre-handling of the request, and then invoke one or more appropriate
+virtual functions to handle particular types of completion. A further-derived
+class must provide virtual functions to specify the way various types of completion
+are handled.</p> <p>In the general case, the derivation of a concrete active
+object from the <codeph>CActive</codeph> base class may involve</p> <ul>
+<li id="GUID-922E8B94-6EE8-550C-929F-1EACDE81C977"><p>a derivation for encapsulating
+the service</p> </li>
+<li id="GUID-FBE75575-543C-59D1-9830-1FE3BBE36F7A"><p>a derivation for encapsulating
+the abstract handling of completion</p> </li>
+<li id="GUID-EF3D5B9C-C3BD-5DCA-9014-D42EC7A9471F"><p>further derivations
+for making that handling more concrete</p> </li>
+</ul> <p>Depending on the circumstances, some of these stages of derivation
+may be amalgamated into one stage; or stages may be refined into even finer
+derivation stages.</p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e114460_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BF990E15-8B41-5C34-8CE0-04660A475043.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BF990E15-8B41-5C34-8CE0-04660A475043" xml:lang="en"><title>Documentation Conventions</title><shortdesc>This section describes the design and typographic conventions used
+in this edition of the Symbian Developer Library.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15"><title>uid</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>uid</codeph> [<varname>uid2</varname>] [<varname>uid3</varname> ] </p> <p>Use the <codeph>uid</codeph> statement to specify the UIDs for a project. </p> <p>Each executable has three UIDs. The first is dictated by the target type of the project (whether an EXE or DLL), so is never specified in an MMP file. The second and third are optional. An MMP file may define none, one or two. See <xref href="GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita">How to use UIDs</xref> for details. </p> <p>UIDs may be specified in either hex or decimal. </p> <p>Under WINSCW, a separate source file is created with the generated makefile containing code to incorporate UIDs into the executable. The name of this file is created by taking the basename of the executable and adding the extension <filepath>.uid.cpp</filepath>. </p> <p>In OS versions with platform security, the Secure ID for a binary is taken to be the same as the third UID for that file. If no UID statement appears in an MMP file, then zero is used for uid3. If an application (EXE) has a Secure ID of zero, this means 'undefined', and has several consequences, including lack of privacy for data used by that application. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11"><title> Controlling Still-image Capture</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document explains how to control the still-image capture process. </p> <section><title>Purpose</title> <p>This document explains how to control the overall image capture process and to capture a still image based on given image parameters. </p> <p><b>Introduction</b> </p> <p>The Image Capture API allows the client to capture the still image and control the capture operation. This class lets you issue still image capture calls even if the previous capture calls are pending. To do this, you need to create another instance of this class. If you use the same instance, the handle to retrieve the previously captured still image will be lost. </p> </section> <section><title>Using Image Capture </title> <p>The following tasks are covered during image capture implementation: </p> <ol id="GUID-A6F12244-55D3-54AD-B6BD-0889AA4C8C43"><li id="GUID-A7F18293-C1D3-57C4-B17A-447624D853FA"><p>Provide implementation of <xref href="GUID-146FDB43-52C2-3951-8231-57B40F06A355.dita#GUID-146FDB43-52C2-3951-8231-57B40F06A355/GUID-419D6154-D265-39E7-8EEB-DB547CF05C16"><apiname>McameraPreImageCaptureControl::PrepareImageCapture</apiname></xref>. </p> </li> <li id="GUID-674D1725-EA0B-596C-BE58-86ABAF8A8A9C"><p>Use <xref href="GUID-CC3E371F-3037-3F7C-ACFF-DCC24972F0B7.dita#GUID-CC3E371F-3037-3F7C-ACFF-DCC24972F0B7/GUID-63F08B87-84BB-31DB-8215-6ECB6F2792DE"><apiname>MpreImageCaptureControlObserver::PrepareImageComplete</apiname></xref> call-back to pass this to the client to create <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4"><apiname>CCamera::CCameraImageCapture</apiname></xref> class. </p> </li> <li id="GUID-96AADAA2-5499-5DCC-92A1-C8D8EC5E56E3"><p>Create <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4"><apiname>CCamera::CCameraImageCapture</apiname></xref> object and pass it to the client, when it calls <xref href="GUID-90E10EF6-5B7E-3A0B-B1FA-293D19A2B346.dita#GUID-90E10EF6-5B7E-3A0B-B1FA-293D19A2B346/GUID-0DF29ACB-C828-3FF2-A32D-6B67203E6190"><apiname>CCameraPreImageCaptureControl::PrepareImageCapture</apiname></xref>. </p> <p>See also <xref href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita#GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C/GUID-3905D703-E2DD-50B4-A48C-DE84E504B5FB">Implementation of MCameraPreImageCaptureControl</xref> class. </p> </li> <li id="GUID-4AE7CE9B-ACED-5CA5-942F-15BA608FFDC4"><p>Request still image capture using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4"><apiname>CCamera::CCameraImageCapture</apiname></xref> object. </p> </li> <li id="GUID-F50FFDD3-E38D-5A9D-9CA6-87C7C1FE0F6F"><p>Perform image capture using <xref href="GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4.dita#GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4/GUID-83958C31-770B-3293-80D5-5215A0E6CFC7"><apiname>CCamera::CCameraImageCapture::CaptureImage</apiname></xref> method. This delays the background processing involved with current image captured, so as to capture next images. </p> </li> <li id="GUID-9CC20C23-2DE7-588F-A651-71C9549E4BDA"><p>Use <xref href="GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8.dita#GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8/GUID-33204396-4AC5-39E0-A3E5-7BE6F7A75413"><apiname>MCaptureImageObserver::IndividualImageControlHandle</apiname></xref> callback to provide client with the handle to control captured individual still images. This callback may be send to the client after the image is exposed to the sensor. For example, client may need to destroy the image even before the completion for some reasons. </p> </li> <li id="GUID-86CD113A-0F87-51BA-8E69-AFDCFD3046BE"><p>Use <xref href="GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8.dita#GUID-430C206E-24D7-30BE-98E9-ACD176DDA3A8/GUID-150CF08A-F0A8-3D73-B406-269425A403A0"><apiname>MCaptureImageObserver::ImageCaptureComplete</apiname></xref> callback to inform the client that the image capture operation has been completed. This lets to use <xref href="GUID-992BCFCD-9F06-35A5-B166-3058F650E360.dita"><apiname>CCameraImageCapture</apiname></xref> for next still image capture. </p> </li> </ol> <p>Note: </p> <p>Licensees need to provide concrete implementation of <xref href="GUID-65D8585F-4841-3AF4-9A9D-5EAB188C6754.dita"><apiname>McameraImageCapture</apiname></xref> interface class. </p> <p>The following example code snippets illustrate the use of the <b>PreImageCaptureControl</b> classes. </p> <codeblock id="GUID-8E714EFD-1430-5E3F-A954-0F34FAF7BF66" xml:space="preserve">static_cast&lt;MCameraPreImageCaptureControl*&gt;(CCamPreImageCaptureControl::NewL(static_cast&lt;CCamUnitTestPlugin&amp;&gt;(*this)));
+
+CCamera::CCameraImageCapture* cameraImageCapture;
+
+MPreImageCaptureControlObserver* PreImageCaptureControlObserver() {return iPreImageCaptureControlObserver;}
+PreImageCaptureControlObserver()-&gt;PrepareImageComplete(cameraImageCapture, err);
+
+CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters&amp; aPrepareImageParameters;
+MCaptureImageObserver&amp; aCaptureImageObserver;                                
+
+CreateCaptureImageL(cameraImageCapture, aPrepareImageParameters, aCaptureImageObserver));
+
+CaptureImageObserver()-&gt;IndividualImageControlHandle(*cameraImageCapture, 1);</codeblock> </section> <section><title>See also</title> <p><xref href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita"> Controlling Pre-Image Capture </xref>  </p> <p><xref href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita">Controlling Captured Image</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-BFE8B989-8B73-5D3E-B5F4-13AC016C122C"><title>Direct Viewfinder Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial introduces you to the Direct Viewfinder API of the Ecam component. </p> <section><title>Purpose</title> <p>This documents provides a detailed description about the Direct Viewfinder API. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following are the setup and configuration requirements you need to follow before Direct Viewfinder implementation: </p> <ul><li id="GUID-3978F378-FC87-5848-BD7F-CD2ECC4D2FB6"><p>Client needs to implement the <xref href="GUID-05EEF6CC-E007-348C-8643-AA02D634F90C.dita"><apiname>MdirectViewFinderObserver</apiname></xref>, an observer class to use version 2 direct viewfinder API. This class contains the call-backs necessary to provide notifications in relation to version2 direct viewfinder operations. </p> </li> <li id="GUID-4DDF9DCB-5111-5DEB-A69A-78CF42EF8A8E"><p>Licensee must provide concrete implementation for an interface class <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref>, and <xref href="GUID-3B71FBB0-4F32-3CDE-931E-4A1428761E23.dita"><apiname>McameraViewFinder</apiname></xref>. </p> </li> </ul> </section> <section><title>Direct viewfinder</title> <p>Direct viewfinder provides the necessary framework for multiple direct viewfinder support. The direct viewfinder classes are provided as a part of Version2 direct viewfinder implementation. </p> <p><b> Direct Viewfinder Implementation</b> </p> <p>The following tasks will be covered during Direct Viewfinder implementation: </p> <ul><li id="GUID-26D10C6B-2BA0-5C45-B21F-FFDC77D9D368"><p>Create an instance of class <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita"><apiname>CcameraV2DirectViewFinder</apiname></xref> using <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita#GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B/GUID-7627ECE8-0029-353E-BA20-A1EFCEB7371A"><apiname>CcameraV2DirectViewFinder::NewL()</apiname></xref> method. Client also needs to pass the reference to the instance of class that provides concrete implementation for <xref href="GUID-05EEF6CC-E007-348C-8643-AA02D634F90C.dita"><apiname>MdirectViewFinderObserver</apiname></xref>. </p> </li> <li id="GUID-C5EF0B3A-C9E1-59ED-B650-3B6E0E1564BD"><p>In second phase construction for class <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-E0A0EECD-1150-3BC4-B3C6-307B7CE5A1C0"><apiname>Ccamera::CcameraV2DirectViewFinder</apiname></xref>, do the following: </p> <ol id="GUID-AAC445FA-7D43-5695-8BE1-0140C751FFBF"><li id="GUID-3684726A-C33F-5E12-9E61-2F7ACB23C530"><p>Retrieve the handle to the concrete implementation for <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> and <xref href="GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C.dita"><apiname>MCameraViewFinder</apiname></xref> through a call to <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-1F537D7D-5451-3834-869D-3092A4773B83"><apiname>Ccamera::CustomInterface()</apiname></xref>, when appropriate UIDs are provided. </p> <p>UID <xref href="GUID-2789C380-3855-3D91-8ED9-95AF2BFEF8D6.dita"><apiname>KECamMCameraV2DirectViewFinderUid</apiname></xref> is used to retrieve the handle for concrete implementation of <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref>. </p> <p>Uid <xref href="GUID-4D9485FF-BA60-3B47-B18C-2E68F907EA62.dita"><apiname>KECamMCameraBaseV2DirectViewFinderUid</apiname></xref> is used to retrieve the handle to concrete implementation for <xref href="GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C.dita"><apiname>MCameraViewFinder</apiname></xref>. </p> </li> <li id="GUID-3A3B21DC-9D53-5D1D-9252-3E829E29C617"><p>Pass the reference to the direct viewfinder observer to the concrete implementation of <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> through <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita#GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1/GUID-A4ED722C-7C61-3194-84D5-98FF12C6C03D"><apiname>MCameraV2DirectViewFinder::SetDirectViewFinderObserver()</apiname></xref>. </p> </li> <li id="GUID-4FB2F394-B7AA-5326-9D80-0626D7105F32"><p>The next step includes the following steps: </p> <ul><li id="GUID-5495C37A-12CF-5613-920F-0107467265C3"><p>Pass the handle of the <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-E0A0EECD-1150-3BC4-B3C6-307B7CE5A1C0"><apiname>Ccamera::CcameraV2DirectViewFinder</apiname></xref> to the concrete implementation of <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> through <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita#GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1/GUID-25FA000B-3AFC-31A6-8615-3371A92FD8FA"><apiname>MCameraV2DirectViewFinder::SetDirectViewFinderHandle()</apiname></xref>. </p> </li> <li id="GUID-26EA34F3-B1CB-5BF5-BA7E-A8688D16DDBE"><p>Implementation might use this handle in implementing <xref href="GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C.dita#GUID-0ED13F2A-A4C1-34B6-ADAA-6D04EA60802C/GUID-11B4B0DB-85BB-3CDF-980E-E1F2E25FC3B4"><apiname>MCameraViewFinder:: GetViewFinderHandleL()</apiname></xref> and provide a unique identity to the given viewfinder handle. </p> </li> <li id="GUID-AE796035-D29A-5775-B641-60EA9119BD34"><p>The implementation passes this handle back to the client through direct viewfinder observer callbacks and allows the client to identify the actual direct viewfinder instance that should receive the notification. </p> </li> <li id="GUID-DAF6ED1C-49FA-59A1-9E3E-87DFC2D5667A"><p>Implementation is not supposed to destroy this object. Client will use <xref href="GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A.dita#GUID-24FF5ADF-77FD-3F0C-9905-CE9F3AC0144A/GUID-C60C6C01-EDE8-3A5D-803C-348FF4263CD3"><apiname>CCameraViewFinder::GetViewFinderHandleL()</apiname></xref> to distinguish a particular direct viewfinder instance. </p> </li> </ul> </li> <li id="GUID-CBD24403-842E-52EB-A211-85A9CBF1635B"><p>Client creates a new instance of the class <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita"><apiname>CcameraV2DirectViewFinder</apiname></xref> for every new direct viewfinder. </p> </li> <li id="GUID-5278C078-CFED-5636-928E-A77FB1E0E8C2"><p>Ecam implementation should keep track of <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita"><apiname>CcameraV2DirectViewFinder</apiname></xref> object deletion. </p> <p>Makes sure that a call-back is not sent, if the client destroys the particular version2 direct viewfinder object. </p> <p>This situation may arise when the call-back gets queued by the Ecam implementation in order to send it across to the client. </p> </li> </ol> <p> <b>Note:</b> Client retains the ownership of <xref href="GUID-9DE13B2C-F605-348F-8056-519DDE4CAE1B.dita"><apiname>CcameraV2DirectViewFinder</apiname></xref> class object. </p> </li> </ul> <p><b>Working with Direct Viewfinder</b> </p> <p>The following steps describe working with direct viewfinder. </p> <ol id="GUID-3824BA16-BF08-5FAE-89D1-FC1E33C078D9"><li id="GUID-3D385A86-D2B3-5522-BE49-E91A49E32E9E"><p>Before starting the direct viewfinder, client has the following options: </p> <ul><li id="GUID-1227612B-E4F9-5792-A9E3-DC4949589BFB"><p>Client can use specific histogram over a direct viewfinder frame by creating specific histogram object through <xref href="GUID-5E76AB90-FE62-37B2-BAAE-A39EA6CE51DA.dita#GUID-5E76AB90-FE62-37B2-BAAE-A39EA6CE51DA/GUID-623EB26C-B5B6-3251-A079-2AC74489042A"><apiname>CCamera::CCameraV2DirectViewFinder::CreateHistogramHandleL()</apiname></xref>. Concrete implementation for <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> provides the concrete factory handle (of type MImplementationFactory*) for the histogram implementation to use it for a particular viewfinder. </p> <p>Histogram related callbacks that would be issued to the client are <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-62EA446B-24AF-37CB-B08B-F261023F12DD"><apiname>MDirectViewFinderObserver::DirectHistogramDisplayed()</apiname></xref> and <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-007D1D36-2EB2-333E-83EB-88E0C024C7C9"><apiname>MDirectViewFinderObserver::ClientHistogramReady()</apiname></xref>. </p> </li> <li id="GUID-864B3109-39E7-52DD-BC26-58F4C257D44E"><p>Client can also use specific image processing over the direct viewfinder frame by creating a dedicated image processing object using <xref href="GUID-34696DA2-68E3-36CB-9B38-61DD25DA89C3.dita#GUID-34696DA2-68E3-36CB-9B38-61DD25DA89C3/GUID-94A6EC52-0218-3DDA-AAE5-70623DFCDC14"><apiname>CCamera:: CCameraV2DirectViewFinder
+                        ::GetTransformationHandleL()</apiname></xref>. </p> <p> <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> concrete implementation provides the concrete factory handle of type <xref href="GUID-6BD89347-671F-3518-9777-55801A090C79.dita"><apiname/></xref>, for the image processing implementation to use it for a particular viewfinder. Image processing related callbacks would be issued to the client through <xref href="GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F.dita#GUID-09C6DDB6-A208-3C81-9F54-697D4865D99F/GUID-AA5629D4-6228-3EAE-86DB-CE8A735557B0"><apiname>MCameraObserver2::HandleEvent()</apiname></xref>. </p> </li> </ul> </li> <li id="GUID-D8A60B15-1F68-5E67-877E-DF0418D70BE0"><p>Use <xref href="GUID-A1E81FF5-3F58-3D41-8FE2-9D6D21004B08.dita#GUID-A1E81FF5-3F58-3D41-8FE2-9D6D21004B08/GUID-FC7D1C16-7619-35C2-91B6-B180440C4521"><apiname>CCameraV2DirectViewFinder::StartViewFinderDirectL()</apiname></xref> method to start direct viewfinder. In case of direct viewfinder, you can specify the in-screen co-ordinates, to which view finder data is to be transferred. The in-screen co-ordinates can be modified, for example, the camera requires the destination to have a certain byte alignment. </p> </li> <li id="GUID-B810E08C-37E5-57B5-A39E-7A6AD0BE3DF1"><p>If there is a conflict, the size of image returned by the view finder will not be the exact size requested. This occurs when the requirement of the view finder to show the unclipped view in the ratio required for image capture or video capture. The camera will return the best match. </p> </li> <li id="GUID-6579DEA2-D08A-5C65-983A-2E45F715A8C6"><p>Implementation issues callback <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-163D5092-A013-3477-8459-CEC9FFF1EDBA"><apiname>MDirectViewFinderObserver::DirectViewFinderFirstFrameDisplayed()</apiname></xref> and notifies the client that the first viewfinder frame has been displayed successfully. Implementation passes the viewfinder handle along with the callback. </p> </li> <li id="GUID-22758BBB-526D-55B5-9CF1-368A4DB5E8A3"><p>If the implementation finds any error during direct viewfinder processing, it stops the specific direct viewfinder and issue the callback <xref href="GUID-3E9347CF-F172-3E7B-B209-7F9836090F61.dita#GUID-3E9347CF-F172-3E7B-B209-7F9836090F61/GUID-B02ED9B8-B195-36F4-BA0F-489DD677B080"><apiname>MDirectViewFinderObserver::DirectViewFinderFailed()</apiname></xref>. </p> </li> <li id="GUID-65DAA94C-554D-5815-85E9-27912404ED5F"><p>Client can use direct snapshot for still images captured over the direct viewfinder screen by creating a dedicated direct snapshot object through <xref href="GUID-5E76AB90-FE62-37B2-BAAE-A39EA6CE51DA.dita#GUID-5E76AB90-FE62-37B2-BAAE-A39EA6CE51DA/GUID-54FCD3DA-8255-33A5-9181-F8817226A821"><apiname>CCamera::CCameraV2DirectViewFinder::GetDirectSnapshotHandleL()</apiname></xref>. </p> <p>See also <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE"><apiname>CCamera::CCameraDirectSnapshot</apiname></xref> and their related M class <xref href="GUID-E75CBA2D-933F-33CF-9F66-0868D6BC0649.dita"><apiname>MCameraDirectSnapshot</apiname></xref>. </p> </li> </ol> </section> <section><title>See also</title> <p><xref href="GUID-367ADFD7-A0F5-59D3-BF83-913CB8126B9D.dita">Viewfinder API Overview</xref>  </p> <p><xref href="GUID-2CC30ECA-053D-57FF-8E9D-8FA733A031C9.dita">Viewfinder Tutorial</xref>  </p> <p><xref href="GUID-2A6AAD9C-BB99-5145-B4A2-FCEF6BECCFD4.dita">Client Viewfinder Tutorials</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645" xml:lang="en"><title>Memory Management
+Concepts</title><shortdesc>Provides an introduction to memory management, especially chunks
+and heaps.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690" xml:lang="en"><title>Options
+menu</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The <uicontrol>Options</uicontrol> menu is a tool that offers the user
+a set of possible functions in the current context. Pressing the left softkey
+labeled <uicontrol>Options</uicontrol> opens the <uicontrol>Options</uicontrol> menu.</p>
+<fig id="GUID-DE323941-E70E-4169-9F67-6E7A11047481">
+<title>Options menu</title>
+<image href="GUID-C0C1E654-8A7B-4745-A2A9-252B8E57B0E2_d0e58682_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The <uicontrol>Options</uicontrol> menu is a menu list displayed in a pop-up
+window. An item is selected by pressing either the left softkey (<uicontrol>Select</uicontrol>)
+or the Selection key. The user must either select an item from the list or
+cancel the menu; it cannot be left pending during another action (see <xref href="GUID-0BAE2D0E-604B-4A62-B5EB-AC68EAF7F589.dita">Navigating in applications</xref>).</p>
+<p>The pop-up window is located above the <xref href="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita">Control
+pane</xref>, and its height is dynamic; the maximum size is approximately
+the size of the standard main pane. The content on the screen outside the
+menu pop-up is dimmed, except the Control pane.</p>
+<p>Items in the <uicontrol>Options</uicontrol> menu use the single item layout;
+that is, they are text-only. The number of items in the menu is not limited,
+because the list scrolls as necessary. The <uicontrol>Options</uicontrol> always
+loops, which allows users to easily reach the end of the list.</p>
+<section><title>Using the Options menu
+in C++ applications</title><p>The API to use for the <uicontrol>Options</uicontrol> menu
+is the Options
+menu API. For implementation information, see Using
+the Options menu API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C00FBDE4-EF59-5FED-BA92-625414AF45AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C00FBDE4-EF59-5FED-BA92-625414AF45AE" xml:lang="en"><title>Crypto Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Crypto Libraries contains a Weak CryptoSPI and Strong CryptoSPI components together called as CryptoSPI framework. The framework provides software-based implementations of cryptographic algorithms. It allows device creators to include alternative implementations as plug-in DLLs. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e189606_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E" xml:lang="en"><title>DBMS</title><shortdesc>The proprietary database management system developed for Symbian
+platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p id="GUID-7CFECB38-1A52-5384-B9A7-2DAE624C1468"> Use this section to learn
+more about DBMS database engine and server. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C05374FC-CF33-58C2-9442-B9EE78C81A4F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C05374FC-CF33-58C2-9442-B9EE78C81A4F" xml:lang="en"><title>DevSound Library</title><shortdesc>This section describes the DevSound library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5"><title>How to write an extension makefile template</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A makefile can be defined as a collection of instructions (build steps) that are needed to build a program. <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian build process</xref> generates the required makefiles from project (<filepath>.mmp</filepath>) files, and these makefiles cater to all the usual build steps. There might be few build steps which are specific to your project, and are not catered for by the generated makefiles. These build steps are addressed by separate set of makefiles called extension makefiles. The need for extension makefiles purely depend on requirements of the project you are working with. </p> <p>Since Symbian OS v9.3 the functionality and data for extension makefiles are kept separate. That is, extension makefiles with similar functionality can be generalised into a template makefile, which contains only the basic functionality. The same template can be used for various use cases by passing appropriate parameters (data). The parameters can be passed using the <xref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita">prj_extensions</xref> and <xref href="GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81.dita">prj_testextensions</xref> call mechanism in the <filepath>bld.inf</filepath> file, which deprecates the old approach of referring to the extension makefiles using the <codeph>makefile</codeph> or <codeph>gnumakefile</codeph> directive. </p> <p>This template makefile approach reduces the number of makefiles, as the extension makefiles with similar functionality are generalized into a single template. </p> <p>The following provides an overview of designing an extension makefile template. Details of the syntax are given in the reference topic <xref href="GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita">Template extension makefiles</xref>. </p> <ol id="GUID-7F7E55AD-8FF3-5B15-86CD-42F0A2FA6849"><li id="GUID-B770DD49-E546-551E-BF7E-B99BBD3ED19C"><p>Define the input variables used by the template. The values for these variables are passed through a component's <filepath>bld.inf</filepath> file. If necessary, assign the default values for these variables in the corresponding meta file (see <xref href="GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita">Meta files</xref>). </p> </li> <li id="GUID-55F18BBE-9F63-525C-B36F-975E9471DE97"><p>Specify the set of targets that the makefile should respond to. An extension makefile responds to a few mandatory targets, apart from the project-specific targets. For more information on mandatory targets, refer to <xref href="GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita">Extension makefile targets</xref>. </p> </li> <li id="GUID-6CC0F7AE-B273-5317-9C78-6F637A81A502"><p>Specify the build steps to create/update the target. These build steps can include basic shell operations, called through platform independent variables, such as <codeph>CP</codeph> to copy a file, and <codeph>RM</codeph> to delete a file. Other than calling these basic shell commands, the makefile can call other tools required to complete the build step, such as calling a Perl program. </p> </li> </ol> <p>For more information on the syntax of template extension makefiles and variables, refer to <xref href="GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita">Template extension makefiles</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD"><title>Controlling Video Recording Quality</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to control video recording quality. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to set the appropriate quality level for a video recording. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>Factors such as bit rate, frame rate, resolution and so on, determine the quality of video recordings. You can control the quality of video recordings by selecting the appropriate quality level. </p> </section> <section><title>Using Video Quality </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-1DE5BE82-4DD2-58D6-BA4E-6CBCBB01E3B4"><p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita#GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD/GUID-80287440-07EC-5D3D-A21A-CFC9FF8A1A0E">Set the Video Recording Quality</xref>  </p> </li> </ul> <p id="GUID-80287440-07EC-5D3D-A21A-CFC9FF8A1A0E"><b>Basic Procedure</b> </p> <p>The high level steps to set the recording quality are shown here: </p> <ol id="GUID-83BB5B61-E310-507D-92D4-E281FEE601A5"><li id="GUID-BD6DE799-8A16-597D-BD8C-2A06722A0827"><p>Create a new video recorder utility object. </p> </li> <li id="GUID-78592F1C-6EDA-55E4-B24D-61B1789911B4"><p>Open a video clip to record. </p> </li> <li id="GUID-F11A6955-3FB0-51FC-A7F1-CFE082B38037"><p>To set the video quality call <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-3233F877-46EE-334D-B6E5-2E0D10B5B7E6"><apiname>CVideoRecorderUtility::SetVideoQualityL()</apiname></xref> and set <xref href="GUID-0ECBD369-32A4-3867-AC16-A1BDF3D8CB2C.dita"><apiname>aQuality</apiname></xref> to a value between 0 (lowest quality) and 100 (highest quality). The default value for video quality is 50. </p> </li> <li id="GUID-EAE1C7EC-5198-5141-B548-232FC797B0F6"><p>Call the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-A8B11252-2852-36E4-BE16-BC05888F4ECF"><apiname>CVideoRecorderUtility::Prepare()</apiname></xref> method. </p> </li> <li id="GUID-2D9C2530-19FA-5259-A996-E1FF38E4620E"><p>Control recording normally. </p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-7BC06AC6-DCB7-586F-BB65-029E7A7806A3" xml:space="preserve">//Create new video recorder utility object (iVideoRecorder)
+// Open the video clip
+
+iVideoRecorder-&gt;SetVideoQualityL(75); 
+// set to high quality video recording
+
+// Call Prepare() and then Record() to record normally</codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita">Creating and Preparing a Video Recorder</xref>  </p> <p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita">Configuring the Video Recorder</xref>  </p> <p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita">Enabling/Disabling Video Recording</xref>  </p> <p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref>  </p> <p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita">Setting Video Metadata</xref>  </p> <p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita">Controlling the Video Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C08CE95C-E1D4-5C43-93FB-21B6E86F4565.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C08CE95C-E1D4-5C43-93FB-21B6E86F4565" xml:lang="en"><title>About
+the types of services</title><shortdesc>Describes the asynchronous services used by a client program.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>There are a variety of asynchronous services that a client program can
+utilise. The main types are: </p>
+<ul>
+<li id="GUID-31716F0B-9C79-5DF9-B249-9A1D00E15705"><p>service provided by
+the kernel</p> </li>
+<li id="GUID-EA18A7D2-EB48-5476-83CF-5621FCFD1EF7"><p>service provided by
+a server thread, running in user mode</p> </li>
+<li id="GUID-AC3B80B6-981B-5DBB-9521-A6B169DCEB6B"><p>service provided by
+a device driver</p> </li>
+<li id="GUID-A0F6BAB0-DE36-5CA4-B607-B03EB9EC1740"><p>service provided in
+the same thread</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C0B39D73-0A3C-5289-A774-7BE590037404"><title>Bitmap Transform Library Overview </title><shortdesc>This document introduces you to the Bitmap Transform library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Allows images to be scaled or rotated. of course the image must be a bitmap, either the actual source file or after converting from some other format to a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object. </p> <p><b>Bitmap Transform Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-486D0170-3922-54FC-AFD9-4B3F1A632106"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-157D00CF-72DB-3DD1-843F-64F5397EEA11.dita"><apiname>bitmaptransforms.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-2DB83568-2E1E-3DED-80A4-FA215B935E7B.dita"><apiname>bitmaptransforms.lib</apiname></xref>  </p> </entry> <entry><p>These files are used for implementing Bitmap Transform operation. But these files are not used for the enhanced functionality of encoder / decoder during bitmap transformation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Bitmap Transform is a member of the Imaging Frameworkss component. </p> </section> <section><title>Key Bitmap Transform Library Classes</title> <p>The bitmap transform classes <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita"><apiname>CBitmapRotator</apiname></xref> and <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> provide image rotation and scaling as explained below: </p> <ul><li id="GUID-1CA4B6CC-038B-5622-9801-6D0DF97D657A"><p> <b>Image Rotation:</b>  </p> <p> <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita#GUID-D0835677-6790-3038-8893-83E7186F47E7/GUID-7D85DD3C-2692-3FBE-8E23-F991CEF83CE3"><apiname>CBitmapRotator::Rotate()</apiname></xref> rotates the image stored in a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object according to the <xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita#GUID-D0835677-6790-3038-8893-83E7186F47E7/GUID-D89261A3-D59C-38BC-BF55-B0C758AC9C85"><apiname>CBitmapRotator::TRotationAngle</apiname></xref> selected and optionally either stores the resulting image in a new <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> or replaces the original. </p> </li> <li id="GUID-3006F5B3-A25D-5AA3-927C-7AF64C1721EC"><p> <b>Image Scaling:</b>  </p> <p> <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita"><apiname>CBitmapScaler</apiname></xref> provides scaling for the image stored in <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object according to the size and <xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita#GUID-2008D827-A84A-3170-A8BD-86002BA37979/GUID-707C9EE8-2FEA-3A21-9E8F-FC947BA51B15"><apiname>CBitmapScaler::TQualityAlgorithm</apiname></xref> quality selected and optionally either stores the resulting image in a new <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> or replaces the original. </p> </li> </ul> <p>The scale and rotate actions are asynchronous operations that use the standard system of taking a pointer to a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object, that is signalled on completion of the requested action. It is assumed that the client application or calling DLL will hold the <codeph>TRequestStatus</codeph> values within active objects. The bitmap transform classes also make extensive use internally of active objects to provide asynchronous behaviour. As with any use of an active object it is necessary to have an active scheduler present in the same thread as the application making use of the object. </p> <p> <b>Note:</b> Some more enhanced features are supported by the encoder and the decoder during the bitmap transformation, they are scaling, rotation / mirroring, cropping. For more information see, <xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita">Tutorial About Enhanced Features for Encoder and Decoder</xref>. </p> </section> <section><title>Description</title> <p>Bitmap Transform enables two operations, rotating and scaling images. </p> </section> <section><title>Rotate images</title> <p>This allows an image to be rotated as discussed below. </p> <p>The application must supply the following details to rotate an image: </p> <ul><li id="GUID-5A550A36-6CEA-5AA4-9D0C-6A841229CD7A"><p>A <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object representing the image to be rotated, flipped or mirrored </p> </li> <li id="GUID-E55D1374-C613-5BE8-AA4F-04A077987868"><p>Optionally a second <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object representing the destination image if the original is to be maintained or for whatever reason cannot be modified </p> </li> <li id="GUID-772E3CC4-FF43-5B37-A899-26C7A6F1DD15"><p>The rotation angle (<xref href="GUID-D0835677-6790-3038-8893-83E7186F47E7.dita#GUID-D0835677-6790-3038-8893-83E7186F47E7/GUID-D89261A3-D59C-38BC-BF55-B0C758AC9C85"><apiname>CBitmapRotator::TRotationAngle</apiname></xref>) </p> <p>There are five possible rotation angles: </p> <ul><li id="GUID-E027E5C4-98D7-5D96-836D-1AFDA1AD38D5"><p>90 degrees (<xref href="GUID-047C4788-75EA-3BFC-B115-EFC93F44CDDC.dita"><apiname>ERotation90DegreesClockwise</apiname></xref>) </p> </li> <li id="GUID-81CBDE6F-3F2B-570F-ADC9-5F7A5230E8AD"><p>180 degrees (<xref href="GUID-D1D029ED-36D0-3984-922D-89F4F837BD80.dita"><apiname>ERotation180DegreesClockwise</apiname></xref>) </p> </li> <li id="GUID-CB912954-E99C-5993-9F88-54D22DB9BF62"><p>270 degrees (<xref href="GUID-FB621014-25BD-32B7-A1F7-EC335CB003DF.dita"><apiname>ERotation270DegreesClockwise</apiname></xref>) </p> </li> <li id="GUID-573E5903-2C16-5623-8B15-3BC4052D9014"><p>Horizontal Flip (<xref href="GUID-8656A4FF-9357-3460-AD53-7B59ACDACA52.dita"><apiname>EMirrorHorizontalAxis</apiname></xref>) </p> </li> <li id="GUID-E36C28A4-95F8-5FB2-9AE2-BB3482C35EAA"><p>Vertical Flip (<xref href="GUID-FCF62F65-CCE4-31A7-AC3C-6D516895C43A.dita"><apiname>EMirrorVerticalAxis</apiname></xref>) </p> </li> </ul> </li> </ul> </section> <section><title>Scale Images</title> <p>This allows an image to be scaled or resized. </p> <p>The application must supply the following details for a scaling operation: </p> <ul><li id="GUID-E5C8F705-BC09-5C51-BB30-80A7860EE725"><p>A <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object representing the image to be scaled </p> </li> <li id="GUID-F7C2CD3B-3BB2-5ED6-9A16-F5DF4AF55622"><p>Optionally a second <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object representing the destination image if the original is to be maintained or for whatever reason cannot be modified. </p> </li> <li id="GUID-C4C4B1CD-2028-5E4F-8100-37C25DADAFAB"><p>The target size (<xref href="GUID-938244B2-5E1A-39F7-8ACA-E6DE4C44A313.dita"><apiname>TSize</apiname></xref>) </p> <p>The size parameter is expressed as a width and height in pixels. </p> </li> <li id="GUID-1E74F97F-3AFF-5B1A-BE54-92E40AB0C219"><p>Aspect ratio indicator </p> <p>The aspect ratio is maintained by default (<codeph>TBool aMaintainAspectRatio =
+                ETrue</codeph>). Disabling this (<codeph>aMaintainAspectRatio
+                = EFalse</codeph>) may result in the image stretching in one direction. </p> </li> <li id="GUID-61522724-8966-5C3B-825E-D2A14EE00C30"><p>A scaling quality and speed preference (<xref href="GUID-2008D827-A84A-3170-A8BD-86002BA37979.dita#GUID-2008D827-A84A-3170-A8BD-86002BA37979/GUID-707C9EE8-2FEA-3A21-9E8F-FC947BA51B15"><apiname>CBitmapScaler::TQualityAlgorithm</apiname></xref>) </p> <p>There are three scaling settings available representing the image quality and scaling speed, they are: </p> <ul><li id="GUID-AF720659-AC70-53C2-B411-35763717B18C"><p>Minimum (<xref href="GUID-D84A4C9C-6E38-37A8-A02A-7AAB0E4FA085.dita"><apiname>EMinimumQuality</apiname></xref>) </p> </li> <li id="GUID-9134876B-CB13-5D44-AF5E-05BC6CCC3928"><p>Medium (<xref href="GUID-AE7AAC9E-53AB-32A9-9243-94A207513DE7.dita"><apiname>EMediumQuality</apiname></xref>) </p> </li> <li id="GUID-02E190FA-AE15-5EF7-A310-4586275698DF"><p>Maximum (<xref href="GUID-5C0F3148-239E-3ED1-9D7A-BD16D2A2B78F.dita"><apiname>EMaximumQuality</apiname></xref>) </p> </li> </ul> </li> </ul> <p>To rotate or scale an image, it must be decoded and stored in a <xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref> object. Some decoder supports enhanced functionality in transformation. For more information see, <xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita">Tutorial About Enhanced Features for Encoder and Decoder</xref>. </p> </section> <section><title>Using Bitmap Transform</title> <p>Bitmap Transform is used for the following: </p> <ul><li id="GUID-F1A26399-C0E1-51EE-A55A-3F10FC550013"><p>Rotating and mirroring bitmap images. </p> </li> <li id="GUID-2EF44CB5-D9E8-519F-B3E9-429851FC6B9E"><p>Scaling and resizing bitmap images. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks overview</linktext> </link> <link href="GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita"><linktext>Bitmap Transform Library Guide</linktext> </link> <link href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita"><linktext> Enhanced Features for Encoder
+                and Decoder Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C0C19F93-D804-5AED-90E4-A814FA6A3732.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C0C19F93-D804-5AED-90E4-A814FA6A3732" xml:lang="en"><title>Low Level Asynchronous Service Handling</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C0C1E654-8A7B-4745-A2A9-252B8E57B0E2_d0e54910_href.png has changed
Binary file Symbian3/SDK/Source/GUID-C0C1E654-8A7B-4745-A2A9-252B8E57B0E2_d0e58682_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C0C93B8A-C63C-424E-9C30-5D69C1578660.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C0C93B8A-C63C-424E-9C30-5D69C1578660" xml:lang="en"><title>Handling
+long-tap events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The client application receives long tap events through the <codeph>MAknLongTapDetectorCallBack</codeph> interface. </p>
+<p>Use the method <codeph>HandleLongTapEventL</codeph> to perform actions
+when the long-tap event is received.</p>
+<codeblock xml:space="preserve">void CMyContainer::HandleLongTapEventL( const TPoint&amp; aPenEventLocation, 
+                                        const TPoint&amp; aPenEventScreenLocation)
+    {
+    // perform your actions when the event is received
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e192037_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C0D38954-2FC5-4E8B-BC11-229464DCF16C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C0D38954-2FC5-4E8B-BC11-229464DCF16C" xml:lang="en"><title>High Level
+Internet Protocols Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C0E7CBC4-C525-4CA8-8D21-E7E2ABE396CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C0E7CBC4-C525-4CA8-8D21-E7E2ABE396CE" xml:lang="en"><title>URI Permission
+Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C119A79A-D705-50B3-B174-70F517947BBD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-C119A79A-D705-50B3-B174-70F517947BBD" xml:lang="en"><title>How
+certapp Processes Input File Information</title><abstract><p>This section provides information on the guidelines that the <codeph>certapp</codeph> tool
+follows to process various entities in the input files used to create certificate
+store files. </p><note> Input text files can be 7-bit text or UTF-8. If a
+file is UTF-8, it can optionally start with a UTF-8 Byte Order Marker. This
+is the marker that Windows uses when saving files as UTF-8.</note></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>White spaces</title> <p>The <codeph>certapp</codeph> tool
+ignores white space (space, tab, carriage return and line feed characters)
+in input files. Instead, the line-ending convention of the platform on which
+the tool runs is followed. </p> </section>
+<refsyn><title>Double-quoted strings</title> <p>The <codeph>certapp</codeph> tool
+treats a series of bytes within double quote characters (in the input files)
+as a single token. </p> <p>A double quote character can be included in a double-quoted
+string by preceding it with a back slash, as shown in the following example: </p> <p>This
+is how you include \” in a double-quoted string. </p> <p>A backslash character
+can be included in a double quoted string by preceding it with another back
+slash, as shown in the following example: </p> <p>This is how you include
+\\ in a double-quoted string. </p> <p>The double quote syntax can be used
+to set any text field value, such as the certificate label, to any UTF-8 value,
+including quote characters, spaces, UTF-8 escape sequences and so on. </p> <p><note>UTF-8
+values are defined such that a UTF-8 escape sequence never contains a back
+slash character.</note> </p> </refsyn>
+<section><title>Enumerated types</title> <p>All enumerated values can be specified
+as numeric values, though using text values is strongly recommended. </p> </section>
+<refsyn><title>Numeric values</title> <p>Any numeric value can be entered
+in decimal as a raw number or in hexadecimal by prefixing the number with
+0x. </p> </refsyn>
+<section><title>Capability sets</title> <p>For a certificate, a capability
+set is a list of capabilities allowed in applications that have the certificate
+as their trust anchor. Capability set values can be specified as numeric bit
+offsets (starting from 0), though using text values is strongly recommended,
+as shown in the following example: </p> <codeblock id="GUID-DAB82140-EDF4-51D8-A483-CD41852C9B19" xml:space="preserve">CapabilitySet {ProtServ DiskAdmin NetworkControl 
+AllFiles SwEvent NetworkServices LocalServices}</codeblock> </section>
+<section><title>Subject and issuer key identifiers</title> <p>It is recommended
+that you set the <codeph>SubjectKeyId</codeph> field to an <codeph>auto</codeph> value
+in the input file for creating the certificate store file. In addition, set
+the <codeph>IssuerKeyId</codeph> field either to <codeph>auto</codeph> or
+to an empty octet string. </p> <p>When the <codeph>SubjectKeyId</codeph> and
+the <codeph>IssuerKeyId</codeph> fields are set to <codeph>auto</codeph> or
+if you omit setting values for these fields in the input file, the certapp
+tool performs its own processing to determine their values. The following
+sub-sections provide the details. </p> <p><b>Setting SubjectKeyId to auto</b> </p> <p>When <codeph>SubjectKeyId</codeph> is
+set to <codeph>auto</codeph> or if the field is omitted, then the following
+algorithm is used for determining the value of the field: </p> <ul>
+<li id="GUID-33035419-FAEC-572A-BA63-C0E49C1C90A3"><p>If the store type is
+not SWI certificate store, the certificate type is not user, and an X.509 <codeph>SubjectKeyId</codeph> extension
+with length less than or equal to 20 bytes is present, then this extension
+is used as the value of the <codeph>SubjectKeyId</codeph> field. </p> </li>
+<li id="GUID-AE8A59EF-E064-5C12-B9E3-3D99DFCE7F78"><p>Otherwise, the value
+of the <codeph>SubjectKeyId</codeph> field is calculated based on the certificate’s
+public key characteristics using a Symbian-specific algorithm. </p> </li>
+</ul> <p>The <codeph>SubjectKeyId</codeph> field value is stored in the certificate
+metadata and can be used by applications when querying the certificate store
+using a filter. </p> <p><b>Setting IssuerKeyId set to auto</b> </p> <p>If
+the <codeph>IssuerKeyId</codeph> field is set to <codeph>auto</codeph> or
+if the field is omitted, the following algorithm is used for determining the
+value of the field: </p> <ul>
+<li id="GUID-BC5FBF12-E8E8-5AA2-AB0D-FE8D2ACE4220"><p>If the store type is
+not SWI certificate store, and an X.509 <codeph>AuthorityKeyId</codeph> extension
+with length less than or equal to 20 bytes is present, then this extension
+is used as the value of the <codeph>IssuerKeyId</codeph> field. An authority
+key identifier specifies the public key that is used to sign the certificate. </p> </li>
+<li id="GUID-143490B1-B30A-57E7-9FB5-C7BA40080966"><p>If a single certificate
+is present in the certificate store with the subject matching the issuer of
+the original certificate (for which the <codeph>IssuerKeyId</codeph> is to
+be set), the <codeph>IssuerKeyId</codeph> is set to the <codeph>SubjectKeyId</codeph> of
+the matching certificate. </p> <p> <b>Note:</b>  </p> <p>When generating <codeph>IssuerKeyId</codeph> values
+for SWI store certificates, all certificates within the SWI certificate store
+are considered. When generating values for file certificate store, all certificates
+in both the SWI certificate store and the file certificate store are considered. </p> </li>
+<li id="GUID-2153579B-2651-5FF8-A5B6-75BEB59E7B25"><p>Otherwise, the <codeph>IssuerKeyId</codeph> is
+set to an empty octet string. </p> </li>
+</ul> <p>The <codeph>IssuerKeyId</codeph> field value is stored in the certificate
+metadata and can be used by applications when querying the certificate store
+using a filter. To filter certificates by <codeph>IssuerKeyId</codeph>, set
+the field to auto, otherwise set it to an empty octet string (for example,
+’’). </p> <p> <b>Note:</b> In case of a certificate that is not of type X.509,
+if you do not set the IssuerKeyId or the SubjectKeyId values to auto or empty
+octet strings, you can set them to octet strings, as explained in the following
+sub-sections. </p> <p><b>Setting SubjectKeyId and IssuerKeyId to octet strings</b> </p> <p>Consider
+the following example of an octet string value to which you can set the <codeph>SubjectKeyId</codeph> field: </p> <codeblock id="GUID-A04C2F3D-E87B-5FDC-BFF3-E39C719761FD" xml:space="preserve">SubjectKeyId ’01:02:43’</codeblock> <p>The <codeph>SubjectKeyId</codeph> field
+is set to an octet string consisting of the numbers <codeph>0x01</codeph>, <codeph>0x02</codeph> and <codeph>0x03</codeph>.
+The string can be 0 to 20 bytes long. The length limit is imposed by the certificate
+store metadata structure, but the usual values are SHA1 hash of certificate
+fields and hence 20 bytes long. </p></section>
+</refbody><related-links>
+<link href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita"><linktext>Certificate
+Store Human-Readable File Formats</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C11AF871-56C8-4EA4-A1E0-E2B23372EF84.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C11AF871-56C8-4EA4-A1E0-E2B23372EF84" xml:lang="en"><title>Touch
+down and hold</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Touch down and hold is used, for example, to open the Symbian
+stylus pop-up menu. Applications can use an animation (starts after 0.15 seconds
+from the start of a stylus down event) to indicate that a Touch down and hold
+action has been initiated.</p>
+<p>On the whole, Touch down and hold may be difficult for users to find, and
+therefore its use should be considered carefully. As in the case of task swapping,
+the use of Touch down and hold should aim at being analogous to using a long
+key press on the hardware keys.</p>
+<section id="GUID-F3F82BBF-587D-471E-A2DE-E9248077EE0A"><title>Using
+touch down and hold events in C++ applications</title><p>The API to use for
+receiving touch down and hold events in applications or controls is the <xref href="GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita">Touch UI utilities API</xref>.</p><p>Use
+the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknLongTapDetector.html" format="application/java-archive"><codeph>CAknLogTapDetector</codeph></xref> to
+receive touch down and hold events, called long tap events in the API reference.</p><p>Your
+long tap handler must inherit from the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknLongTapDetectorCallBack.html" format="application/java-archive"><codeph>MAknLongTapDetectorCallBack</codeph></xref> and implement the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMAknLongTapDetectorCallBack.html#fe6ac5bacc8f58579a53889d524e661f" format="application/java-archive"><codeph>MAknLongTapDetectorCallBack::HandleLongTapEventL()</codeph></xref> call
+back function.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C11D2D1A-F901-5439-BEAF-37E4BDE13EF7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C11D2D1A-F901-5439-BEAF-37E4BDE13EF7" xml:lang="en"><title>Image Display Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99" xml:lang="en"><title>UID Protection</title><shortdesc>Describes the identifiers used in a polymorphic DLL.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All files have an associated compound identifier, a <xref href="GUID-B6D6B0AD-B15C-339A-8540-40540885089A.dita"><apiname>TUidType</apiname></xref>,
+comprising three component UIDs that together identify the file. A compound
+identifier is also commonly known as a UID type.</p>
+<p>For a polymorphic DLL, the first UID component always has the value <codeph>KDynamicLibraryUidValue</codeph>.
+The second UID component is used to verify that the DLL satisfies the protocol
+defined by the programming interface. Indeed, this UID <i>identifies</i> that
+protocol. The third UID component is used to identify a specific implementation;
+the use of the third component UID depends on the protocol.</p>
+<p>For a UI application, the second UID component takes the value <codeph>KAppUidValue</codeph>.
+The third UID component must be defined and must be unique in order to differentiate
+it from all other applications. In contrast, a DLL which implements a printer
+driver does not require a third UID component.</p>
+<p>The use of UIDs in DLLs provides a guarantee that the loaded DLL is the
+correct type. This prevents files which just happen to have the right name
+from being loaded inadvertently.</p>
+<p>A polymorphic interface DLL is loaded dynamically. The handle to the DLL
+is encapsulated by an <codeph>RLibrary</codeph> object. The <codeph>Type()</codeph> member
+function of <codeph>RLibrary</codeph> is used to return the DLL's <codeph>TUidType</codeph> from
+which the individual UID components can be extracted.</p>
+<p><codeph>KDynamicLibraryUidValue</codeph> is defined in <filepath>e32uid.h</filepath> and <codeph>KAppUidValue</codeph> is
+defined in <filepath>apadef.h</filepath>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C14D29C2-EDE6-4AB2-A346-668591B7ED3C_d0e46198_href.png has changed
Binary file Symbian3/SDK/Source/GUID-C14D29C2-EDE6-4AB2-A346-668591B7ED3C_d0e52252_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C156607A-5929-5971-8077-E8974FA43B3C" xml:lang="en"><title>Basics:
+Store and Restore Object using Clipboard</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-2638D79E-A3D2-5A08-AFC3-00AF68C3C194-GENID-1-6-1-10-1-1-8-1-5-1-4-1-6-1-3-1-2-1"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-46db067a-e98e-4717-8fc7-232af34839de.zip" scope="external">Clipboard.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-46db067a-e98e-4717-8fc7-232af34839de.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.  </section>
+<section><title>Description</title> <p>This is an example of basic clipboard
+use. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-9C1E9536-01E8-3C0E-B1C5-F0A597ED0CA3.dita"><apiname>CClipboard</apiname></xref></p><p><xref href="GUID-346D4908-15C7-3F15-945F-D561E774022D.dita"><apiname>RStoreWriteStream</apiname></xref></p><p><xref href="GUID-4FA6EE6C-5B4E-39E0-B888-ABDE19985976.dita"><apiname>RStoreReadStream</apiname></xref> </p><p><xref href="GUID-1C4D4AFD-85E2-3D5D-B704-D1FA0E5E7DA2.dita"><apiname>TStreamId</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C15F56E3-753C-55CA-B3EF-63B2D139BCE4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C15F56E3-753C-55CA-B3EF-63B2D139BCE4" xml:lang="en"><title>Dynamic
+Buffers Overview</title><shortdesc>This document provides an overview of dynamic buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-48A3C000-BAAB-4F20-801C-1F6E7C24C93D"><title>Purpose</title> <p>Manipulates data buffers of variable length.</p> <p>For
+fixed length data buffers, or buffers whose length does not vary much from
+a known maximum size, use descriptors rather than this API.</p> </section>
+<section id="GUID-092B2DE6-4E3D-424A-879A-B7BEC34796B0"><title>Description</title> <p>The API has three key concepts: dynamic
+buffer base, flat dynamic buffer, and segmented dynamic buffer. </p> <p><b>Dynamic
+buffer base</b> </p> <p>The dynamic buffer base specifies a common interface
+to dynamic buffers. It provides operations to manage the buffer position,
+a byte offset into the buffer’s data. Clients use a buffer position to reference
+the buffer, rather than explicit pointers, which can become outdated when
+reallocations occur.</p> <p>The dynamic buffer base interface is provided
+by the abstract class <xref href="GUID-33BEE1B4-20A1-392B-89B3-DA5D4F46418E.dita"><apiname>CBufBase</apiname></xref>.</p> <p><b>Flat dynamic buffer</b> </p> <p>The flat dynamic buffer stores all data
+in a single contiguous memory area. A flat buffer is the most efficient choice
+when resizing the buffer beyond a certain maximum length is not expected often.</p> <p>The
+flat dynamic buffer interface is provided by <xref href="GUID-F915EF7D-7C06-3902-AB84-C8E89ABE7F18.dita"><apiname>CBufFlat</apiname></xref>.</p> <p><b>Segmented dynamic buffer</b> </p> <p>The segmented dynamic buffer can
+store data in multiple memory areas. They are to be preferred for very large
+amounts of data, and where resizing of the buffer is commonly expected. </p> <p>The
+segmented dynamic buffer interface is provided by <xref href="GUID-74CD841C-49EE-3512-9C05-2A05924A63A7.dita"><apiname>CBufSeg</apiname></xref>.</p> </section>
+<section id="GUID-1DA4B527-F43B-4762-A747-C0F639A14291"><title>See also</title> <p><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors
+Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD" xml:lang="en"><title>transient:
+transient server example</title><shortdesc>This example demonstrates the use of transient servers that are
+started on demand when a client needs to use the server, and exit after the
+last client has disconnected, sometimes after a short delay. It demonstrates
+how to handle startup and shutdown situations correctly. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-BF4C4CB4-D495-49D6-8035-F8BA724851B7"><title>Class summary</title><ul>
+<li><p><xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase</apiname></xref> - Client-side handle to a session with
+a server.</p></li>
+<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li>
+<li><p><xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2</apiname></xref> - Abstract base class for servers (version
+2).</p></li>
+<li><p><xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref> - Represents a session (version 2) for
+a client thread on the server-side.</p></li>
+</ul></section>
+<section id="GUID-E688F8C0-0A4A-4D25-B7B4-779CB6A08157"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-cbf7e18e-3788-4ec1-a225-268ce1a22c51.zip" scope="external">transient.zip</xref></p><p>click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-cbf7e18e-3788-4ec1-a225-268ce1a22c51.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-87B18963-ACE8-464B-9863-A37ADA57379C"><title>Background</title> <p>The client-server framework is an important
+part of Symbian platform. There is a level of complexity in implementing a
+server for an application, but this example provides client interface code
+and server code that can be re-used in your own implementations. </p> <p>Symbian
+platform servers are of three basic types: </p> <ul>
+<li id="GUID-6D0F8C69-CFEA-5BB1-A0CB-C4D178DFAE25"><p> <b>Transient servers:</b> these
+are started on demand when a client needs the server, and exit after the last
+client has disconnected - sometimes after a short delay, for example, the
+socket server. </p> </li>
+<li id="GUID-5B824584-C8E6-57F7-A83C-564DA256F622"><p> <b>System servers:</b> these
+are started as part of the system boot process, for example, the kernel, the
+file server, the window server etc. </p> </li>
+<li id="GUID-9BE0FD09-B112-5AF6-A5D1-FBDD6A4EC00B"><p> <b>Local servers:</b> these
+are "local" to a process to provide multi-threaded access to thread-specific
+resources, for example, the posix server (in the C Standard Library). </p> </li>
+</ul> </section>
+<section id="GUID-EEA0A38B-F8A6-4308-A50D-B3E74B12420A"><title>Description</title> <p>The transient server supplied here
+runs in a thread in its own process. This gives the server independence from
+its clients. This is important because if the client were to create the server
+as a separate thread within its own process, then the server would exit, i.e.
+terminate, if its owning process terminated. This would be true even if clients
+in other processes were still connected to it. </p> <p>Equally as important: </p> <ul>
+<li id="GUID-432FCF7B-2393-5E59-BDE5-0A5B4BAFD155"><p>a client does not explicitly
+need to start the server prior to connecting; this is done by the client interface. </p> </li>
+<li id="GUID-D89C8F48-2CA2-5769-8DB9-42FD8FFA5879"><p>the server terminates
+when not in use shortly after the last client disconnects. </p> </li>
+<li id="GUID-968AB243-908B-5709-BB82-4213860CBC8A"><p>the code handles concurrency
+issues, the most common of which is handling the case where the server is
+closing down or exiting at the same time that another client is trying to
+connect. </p> </li>
+</ul> <p>The example consists of four main parts: </p> <ul>
+<li id="GUID-BC6A15E0-07CB-562C-99E8-0AAF39B0ED26"><p>Client interface: this
+is a DLL (<filepath>t-client.dll</filepath>) that is used by clients. </p> <p>The
+client interface effectively forms the gateway to the server. All requests
+to the server, including requests to connect to it are routed through this. </p> <p>The
+client interface defines just one class: <codeph>RMySession</codeph>, derived
+from <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase</apiname></xref>. An <codeph>RSessionBase</codeph> (derived)
+object represents the client side session and forms a channel of communication
+between the client and the server. Requests to the server, and information
+received from the server are channelled through this object. Note that the
+client side session object is mirrored by a server side session object; an
+instance of a class derived from <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref>, which in this
+server is called <codeph>CMySession</codeph>. </p> <p>The client calls <codeph>Connect()</codeph> to
+set up a connection to the server. This function attempts to start the server
+if necessary and then issues a request to create a session with the server.
+If the server fails to start, or a session cannot be created then this is
+reported back.Simultaneous launching of two server processes is also detected,
+with the second attempt failing with <xref href="GUID-D1D25122-F2B8-3C78-8599-84905BFD47B8.dita"><apiname>KErrAlreadyExists</apiname></xref>.
+On successful completion the connection is established, and a session is created
+with the server. </p> <p>The client uses the <codeph>Send()</codeph> method
+to send messages to the server and the <codeph>Receive()</codeph> method to
+request information from the server. <codeph>Send()</codeph> is implemented
+by calling down to the synchronous variant of <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita#GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6/GUID-479FE087-DD9F-31D7-98F7-9F96535F0584"><apiname>RSessionBase::SendReceive()</apiname></xref> in
+the base class. Synchronous means that it does not return until the server
+has dealt with the request. </p> <p> <codeph>Send()</codeph> passes an operation
+code (or function number) identifying the request and a descriptor containing
+information to the server. The descriptor is wrapped into a <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object.
+In practice, your client interface would probably be richer, having variants
+of the <codeph>Send()</codeph> function that take more than one parameter.
+You might also choose to have asynchronous variants of <codeph>Send()</codeph>;
+your client code (not the client interface) would then need to use active
+objects to deal with this. </p> <p> <codeph>Receive()</codeph> is implemented
+by calling down to the asynchronous variant of <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita#GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6/GUID-479FE087-DD9F-31D7-98F7-9F96535F0584"><apiname>RSessionBase::SendReceive()</apiname></xref> in
+the base class. Asynchronous means that the call returns immediately, but
+the request itself may not complete until some time later. </p> <p> <codeph>Receive()</codeph> passes
+an operation code (or function number) identifying the request, a descriptor
+into which the server will place the information, and a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object,
+which the server will use to report how the request completes. The descriptor
+is wrapped into a <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object. Again, you might want
+a richer client interface; perhaps different function names to represent different
+request types. </p> <p> <codeph>CancelReceive()</codeph> allows the client
+to cancel a pending <codeph>Receive()</codeph> request. It is usual to provide
+some mechanism to cancel asynchronous requests. This is implemented by calling
+down into the asynchronous variant of <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita#GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6/GUID-479FE087-DD9F-31D7-98F7-9F96535F0584"><apiname>RSessionBase::SendReceive()</apiname></xref> in
+the base class. Note: the <codeph>Receive()</codeph> method simply passes
+an operation code (or function number) and no data. </p> <p>The operation
+codes (or function numbers) are defined by an enum in the header file <filepath>clientserver.h</filepath>.
+This file is included in both the client interface code and server code as
+both need access to these common symbols. </p> </li>
+<li id="GUID-A76A5A09-CB86-5D58-8771-3DE4131E51B9"><p>Server: this is an EXE
+(<filepath>t-server.exe</filepath>) that runs in its own process, and E32Main()
+is the entry point. After setting up heap checking (in debug builds only)
+the implementation creates a cleanup stack and then executes the main body
+of the code inside a trap harness. </p> <p>The server code implements several
+classes: </p> <p> <codeph>CMyServer</codeph>: this class derives from the
+class <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2</apiname></xref>. The main role of this class is to handle
+messages sent by client threads; this includes requests from clients for connection
+to the server. The connection is established by starting a session with the
+server. The session is represented by a session object, in this case the <xref href="GUID-8B50E9C7-CA33-3E11-A881-16E230A082CB.dita"><apiname>CMySession</apiname></xref> object. </p> <p>Once
+the <codeph>CMyServer</codeph> object has been created, the active scheduler
+can be started by the call to <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita#GUID-B4C76104-EA1B-3FC3-A31E-86A976598171/GUID-3281C85C-1A45-3049-B711-64CA8BFBC452"><apiname>CActiveScheduler::Start()</apiname></xref>.
+This call will not return until the active scheduler is stopped by the <codeph>CShutdown</codeph> timer,
+which is primed after the last client has disconnected. In simple terms, the
+active scheduler is a wait loop. It sits inactive until it receives a message
+from (potential) clients (or until the timer completes and stops the active
+scheduler). Messages that represent requests for connection result in the
+creation of a session. Other messages are passed to the relevant <codeph>CMySession</codeph> active
+object. </p> <p> <codeph> CMySession</codeph>: one of these objects is created
+for each session, i.e. as a result of a request by a client for connection
+to the server. Once sessions have been created, requests received by <codeph>CMyServer</codeph> are
+then forwarded to the corresponding session, and specifically to the virtual
+function <codeph>ServiceL()</codeph>, which handles <codeph>Send()</codeph>, <codeph>Receive()</codeph> and <codeph>CancelReceive()</codeph> requests. </p> <p> <codeph>CShutdown</codeph>: this class represents a timer that is started
+before the first client has connected, and after the last client has disconnected.
+The timer is stopped once the server has at least one client attached to it.
+If the server has no clients, then there is 2 second interval before the server
+terminates. This is implemented as an active object. </p> </li>
+<li id="GUID-07B2ACEC-C457-547D-B1FE-78FCF980AEEF"><p>Test code:this corresponds
+to the client, and uses the client interface to communicate with the server
+- application developers should make use of the principles applied here and
+include them into their own client code. </p> </li>
+<li id="GUID-91B89143-B380-524D-89CF-918FAE5CE055"><p>bld.inf: which is a
+component description file. </p> </li>
+</ul><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita#GUID-B4C76104-EA1B-3FC3-A31E-86A976598171/GUID-3281C85C-1A45-3049-B711-64CA8BFBC452"><apiname>CActiveScheduler::Start()</apiname></xref></p></li>
+<li><p><xref href="GUID-8B50E9C7-CA33-3E11-A881-16E230A082CB.dita"><apiname>CMySession</apiname></xref></p></li>
+<li><p><xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2</apiname></xref> - Abstract base class for servers (version
+2).</p></li>
+<li><p><xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref> - Represents a session (version 2) for
+a client thread on the server-side.</p></li>
+<li><p><xref href="GUID-D1D25122-F2B8-3C78-8599-84905BFD47B8.dita"><apiname>KErrAlreadyExists</apiname></xref> - System wide error code -11 :
+an object already exists.</p></li>
+<li><p><xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase</apiname></xref> - Client-side handle to a session with
+a server.</p></li>
+<li><p><xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita#GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6/GUID-479FE087-DD9F-31D7-98F7-9F96535F0584"><apiname>RSessionBase::SendReceive()</apiname></xref></p></li>
+<li><p><xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> - A Version 2 client/server class that
+clients use to package the arguments to be sent to a server.</p></li>
+<li><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> - Indicates the completion status
+of a request made to a service provider.</p></li>
+</ul> </section>
+<section id="GUID-86D3479E-216B-4D5D-AF57-C4C9963CD9F0"><title>Building and configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-FDC690A6-D68B-58E5-A10D-89220DB9B89E"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-DD18F4AF-6AB1-5E0F-95C3-9EB899BA99C9"><p>For the emulator, the
+example builds the following executables : </p> <p> <filepath>t-client.dll</filepath> </p> <p> <filepath>t-server.exe</filepath>  </p> <p> <filepath>t-test.exe</filepath> (test executable) </p> <p> <filepath>t-testc.dll</filepath> (test
+client) </p> <p>in the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita"><linktext>Platform
+security</linktext></link>
+<link href="GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita"><linktext>Build tools
+guide</linktext></link>
+<link href="GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita"><linktext>How     
+           to build DLLs</linktext></link>
+<link href="GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita"><linktext>MMP file
+syntax</linktext></link>
+</related-links></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e370338_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1A5C1C5-2D97-516E-9B0F-CCE02C33B47D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C1A5C1C5-2D97-516E-9B0F-CCE02C33B47D" xml:lang="en"><title>Playing Tones</title><shortdesc>This section introduces you to play a tone in different ways:</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381_d0e268269_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C1AA34CB-D63D-57E3-87F6-28AD22537D21" xml:lang="en"><title>Store map</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E" xml:lang="en"><title>GDI
+Collection Overview</title><shortdesc>The Graphics Device Interface (GDI) collection is an important
+collection within the Graphics subsystem. It provides a suite of abstract
+base classes, interfaces and data structures. The suite represents and interacts
+with physical graphics hardware such as display screens, off-screen memory
+and printers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Architectural Relationship</title> <p>The GDI collection provides
+base classes and utility functions. Every graphics component ends up using
+it. The components in this collection are closely linked and provide important
+functionality. The GDI component is a low-level component in this collection,
+BitGDI is based on this and DirectGDI is a potentially faster alternative
+to BitGDI. The Colour Palette provides coloring indexing operations. </p> </section>
+<section><title>Description</title> <p>GDI consists of a large number of diverse
+APIs that cover many different aspects of graphics including graphics device
+abstraction, color value handling, linear digital differential analysis, font
+description and information, printer devices abstraction, line breaking, text
+rendering, handling of bidirectional text, text wrapper and linked font creation. </p> <p>Graphics
+Device Interface collection includes the following components: </p> <ul>
+<li id="GUID-BA77A047-4A77-5527-9EE8-AE4302E759C9"><p><xref href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita#GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E/GUID-25C920A3-EF7C-5E8E-B94E-531B56E36DB9">GDI</xref>  </p> </li>
+<li id="GUID-08EB75C6-0E70-5F16-9CF1-BF43AFDB3CC7"><p><xref href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita#GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E/GUID-4CDF56F2-E278-5488-AD9D-D42EFC145A40">BitGDI</xref>  </p> </li>
+<li id="GUID-13396341-EBF4-54F4-BC5A-5223F269114C"><p><xref href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita#GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E/GUID-81F903E9-F9BD-5141-8402-483D6E26F1F0">DirectGDI</xref>  </p> </li>
+<li id="GUID-61FA0D95-AE43-50AB-B0BF-0BE9BF9D3C95"><p><xref href="GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita#GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E/GUID-059D5B88-E69F-5898-8D87-161B349B7C0C">Colour Palette</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-25C920A3-EF7C-5E8E-B94E-531B56E36DB9"><title>GDI</title> <p>GDI
+is a low level component. Two key concepts related to GDI are Device (<xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref>)
+and Context (<xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref>). Throughout the Graphics
+sub-system a graphics device provides a graphics context through which the
+device may be drawn to. The context maintains 'settings', such as the pen
+and brush colors and styles in use, and provides a rich API of drawing commands
+for creating graphical and textual output. </p> <p>Most display devices use
+bitmap graphics and the GDI provides specializations of both <xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref> and <xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref> to
+act as base classes for bitmap devices: namely <xref href="GUID-2DEFEC47-F36E-3133-A08D-55F7C2534CC0.dita"><apiname>CBitmapDevice</apiname></xref> and <xref href="GUID-FC746873-0570-3900-AD89-42B205FDC0D3.dita"><apiname>CBitmapContext</apiname></xref>.
+These add, amongst other attributes, pixel awareness, blitting, scanlines
+and fading. </p> <p>The GDI defines abstract base classes for storing and
+manipulating fonts (<xref href="GUID-2A12FE3B-47F2-3016-8161-A971CA506491.dita"><apiname>CFont</apiname></xref>, <xref href="GUID-0CA79D2D-827F-3A20-A10C-1CC9C576E803.dita"><apiname>CTypefaceStore</apiname></xref>, <xref href="GUID-B68B7BC8-CFBA-32F4-A0BE-8378F0C105DA.dita"><apiname>CFontCache</apiname></xref>)
+and additional supporting classes and structures. </p> <p>The GDI defines
+the interface for mapping between device-specific pixels and real-world twips.
+A twip is a twentieth of a point and a point is 1/72 of an inch. That makes
+a twip 1/1440 of an inch, 1/567 of a centimeter or about 0.018mm. </p> <p>The
+GDI defines a base class for representing embedded pictures, <xref href="GUID-829D57CD-9659-347B-AAE9-5F0A0ECD555C.dita"><apiname>CPicture</apiname></xref>,
+and supporting classes. It also provides base classes, interfaces and structures
+for printing. </p> </section>
+<section id="GUID-4CDF56F2-E278-5488-AD9D-D42EFC145A40"><title> BitGDI</title> <p>The <xref href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita">BitGDI Component</xref> is
+used by legacy applications and the Window Server in the <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay
+variant</xref>. The BitGDI component provides the <xref href="GUID-B229156F-2344-3F46-8542-AC65882D80DE.dita"><apiname>CFbsScreenDevice</apiname></xref> and <xref href="GUID-4A501086-7EFF-376D-8901-6D9B2EB4EFF2.dita"><apiname>CFbsBitGc</apiname></xref> APIs,
+which are concrete implementations of <xref href="GUID-500FC564-35E9-3B66-A0C2-1269371A2EA0.dita"><apiname>CGraphicsDevice</apiname></xref> and <xref href="GUID-DAD09DCF-3123-38B4-99E9-91FB24B92138.dita"><apiname>CGraphicsContext</apiname></xref> for
+bitmap-based devices. This component enables: </p> <ul>
+<li id="GUID-989D5F4A-3DB5-55DA-91FE-5E70D3DFF57E"><p>hardware-independent
+access to screen attributes </p> </li>
+<li id="GUID-7E420A37-E7A9-5583-8FE0-393677696319"><p>bitmapped drawing which
+holds settings and supports drawing to bitmapped devices and screens independent
+of the display. </p> </li>
+</ul> <fig id="GUID-C75462F4-7DB3-57BF-ABDE-C500669F45C5">
+<image href="GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e177233_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-059D5B88-E69F-5898-8D87-161B349B7C0C"><title>Colour
+Palette</title> <p>The <xref href="GUID-E82FABA9-9CCC-548F-99DB-EF2B9036B405.dita">Colour
+Palette component</xref> provides coloring functionality. A user can specify
+the use of a particular color, as described by a <xref href="GUID-F84C7F40-6DEB-39D1-B172-CB0CC3918E27.dita"><apiname>TRgb</apiname></xref>,
+and have that color rendered on a machine’s display device as closely as possible
+to the color specified. A related functionality allows arrays of colors to
+be stored as bitmaps, and displayed at a later date in the same manner. </p> <p>Color
+palettes also provide user-definable palette support to the GDI. A palette
+is a user-defined set of colors, which is a subset of the full range of 24-bit
+colors. This allows users the advantages of having a low bpp color mode whilst
+being able to specify the colors available in that mode. Only a palette of
+16 colors enables changing the palette. Palettes are also used to allow 24-bit
+bitmaps to be stored in a more compressed form by finding the actual number
+of different colors used in the bitmap. This creates a palette that allows
+mapping of colors to a smaller index space. The pixels of the bitmaps are
+encoded using indexes to this new index space. A palette has a size which
+is set at its creation and cannot alter the number of entries in the palette.
+Each entry in a palette is a mapping between that entry's index and a <codeph>TRgb</codeph> value.
+Palette entries can be got and set at any time between the palette's creation
+and destruction. The GDI's palette support also provides functions to find
+the nearest palette color to a requested <codeph>TRgb</codeph> color. </p> </section>
+</conbody><related-links>
+<link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics
+Device Interface (GDI) Collection</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1BCBA03-4E64-5188-8D33-25B4121C1582.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C1BCBA03-4E64-5188-8D33-25B4121C1582"><title>Use of the Internalize class</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The implementation of the family of operators <xref href="GUID-81749C6F-A341-37A6-9F17-C6028F975764.dita"><apiname>operator&gt;&gt;()</apiname></xref> calls the internal Symbian OS function <codeph>DoInternalizeL()</codeph>. There are two variants of this function distinguished by the value of the third parameter as either <xref href="GUID-0A518426-B517-33C3-B2E3-874CAF36E963.dita#GUID-0A518426-B517-33C3-B2E3-874CAF36E963/GUID-1B393431-A301-3B49-858A-8915017E8CC9"><apiname>Internalize::Member</apiname></xref> or <xref href="GUID-0A518426-B517-33C3-B2E3-874CAF36E963.dita#GUID-0A518426-B517-33C3-B2E3-874CAF36E963/GUID-0F3DF32C-128B-36A0-A4F7-8B7574CE4621"><apiname>Internalize::Function</apiname></xref>.</p> <p>The family of operators <xref href="GUID-81749C6F-A341-37A6-9F17-C6028F975764.dita"><apiname>operator&gt;&gt;()</apiname></xref> are implemented as follows:</p> <codeblock id="GUID-5DCCDC49-ADD3-59F1-9243-BA91C521DFFD" xml:space="preserve">template &lt;class T&gt;
+inline RWriteStream&amp; operator&gt;&gt;(RReadStream&amp; aStream,T&amp; anObject)
+    {
+    DoInternalizeL(anObject,aStream,Internalization(&amp;anObject));
+    return aStream;
+    }</codeblock> <p>The two variants of <codeph>DoInternalizeL()</codeph> are defined and implemented as:</p> <codeblock id="GUID-0BFB5C93-B2E4-5050-936A-465A077728FB" xml:space="preserve">template &lt;class T&gt;
+inline void DoInternalizeL(T&amp; anObject,RReadStream&amp; aStream,Internalize::Member)
+    {anObject.InternalizeL(aStream);}</codeblock> <codeblock id="GUID-916AE079-80BB-5039-8F96-771F81CC1077" xml:space="preserve">template &lt;class T&gt;
+inline void DoInternalizeL(T&amp; anObject,RReadStream&amp; aStream,Internalize::Function)
+    {InternalizeL(anObject,aStream);}</codeblock> <p>The variant called depends on the value returned from a call to the internal selector function, <codeph>Internalization()</codeph>. This selector function returns either <codeph>Internalize::Function</codeph> or <codeph>Internalize::Member</codeph>, depending on the type of <codeph>anObject</codeph>.</p> <p>The internal selector function <codeph>Internalization()</codeph> is a convenience mechanism that allows the <xref href="GUID-81749C6F-A341-37A6-9F17-C6028F975764.dita"><apiname>operator&gt;&gt;()</apiname></xref> to call either the <codeph>InternalizeL()</codeph> member function of a templated class or an <codeph>InternalizeL()</codeph> templated global function.</p> <p>The store framework defines and implements a default selector function, prototyped as:</p> <codeblock id="GUID-28AEEF03-52AC-522B-BFEF-730031BCCFC2" xml:space="preserve">Internalize::Member Internalization(const TAny*)</codeblock> <p>By default, a call to <codeph>Internalization()</codeph> passing a parameter of general class type, is resolved at compile time into a call to this variant, and the return type is <xref href="GUID-0A518426-B517-33C3-B2E3-874CAF36E963.dita#GUID-0A518426-B517-33C3-B2E3-874CAF36E963/GUID-1B393431-A301-3B49-858A-8915017E8CC9"><apiname>Internalize::Member</apiname></xref>. The store framework also defines and implements a number of other variants that take more specific argument types; for example, as part of its implementation of <xref href="GUID-81749C6F-A341-37A6-9F17-C6028F975764.dita"><apiname>operator&gt;&gt;()</apiname></xref> for descriptors, the framework defines and implements:</p> <codeblock id="GUID-442D9DD2-6643-5F3F-ACD4-3D4D42B65639" xml:space="preserve">Internalize::Function Internalization(const TDesC8*)</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1C0E7DF-6519-5648-AE5E-6D149AF1A89A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C1C0E7DF-6519-5648-AE5E-6D149AF1A89A" xml:lang="en"><title>Using
+a Converter </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>File Converter Framework provides APIs to list and search for converters.
+It also provides an observer interface through which the progress and success
+or failure of the conversion can be reported. </p>
+
+<section><title>Introduction</title> <p>To convert a file or stream-based
+object from one format to another, you must obtain a suitable converter from
+the converter framework, request the converter to perform the conversion,
+and clean up. You can optionally supply a conversion observer. </p> <p> <b>Note:</b> A
+converter handles the relevant source and target data types. It can handle
+files or streams or both, so its capabilities must be checked. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-53E64933-F26C-5A52-AE83-D2CEB7FD29FD">
+<li id="GUID-CB63A5A9-C95A-5723-9258-02C18E794383"><p><xref href="GUID-A7DFDC4F-56C2-46B3-8B76-A6488BE4ABE0.dita">Get
+a converter</xref>. </p> </li>
+<li id="GUID-93618B1E-8F44-509B-8B51-1A93D9AF3578"><p><xref href="GUID-5E7A1041-B0E1-47E3-A3BF-6C9AE221B98F.dita">Request
+for conversions</xref>. </p> </li>
+<li id="GUID-52807E3E-D84A-5BFF-9F0F-552B73875117"><p><xref href="GUID-FC46AA09-3E04-426B-BAC0-A992EA1AE0B6.dita">Write
+a conversion observer</xref>. </p> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita"><linktext>Writing a
+Converter</linktext></link>
+<link href="GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita"><linktext>File Converter
+Framework  Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C1F71368-E35A-512D-A9DF-F81491F35E62.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C1F71368-E35A-512D-A9DF-F81491F35E62" xml:lang="en"><title>Messaging Middleware Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the concepts of the Messaging Middleware module. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e247241_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C" xml:lang="en"><title>MessageQueue
+Example</title><shortdesc>This example application shows the use of message queue in interprocess
+communication using the RMsgQueue class.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-ED679CA7-FF4C-4E69-8663-5DA46A3D94F4"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-d72e85ad-4659-4f66-9cb3-f084e9505709.zip" scope="external">MessageQueueExample.zip</xref>.</p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-d72e85ad-4659-4f66-9cb3-f084e9505709.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-39D2064D-AD24-4785-956F-18A0CAD57B81"><title>Description</title> <p>The example describes the global message
+queue. The following sections provide more information. </p> <p><b> MessageQueueExample</b> </p> <p>The
+example comprises two processes: a Collector, which collects words from the
+user via the console, and an Inverter, which periodically reverses the order
+of the collected words. The Collector and the Inverter pass words to each
+other using two message queues: InverterInQ and InverterOutQ. The Collector
+is the main process which starts the Inverter process. The Collector process
+takes user input in form of different words and sends to the Inverter process
+via message queue. The Inverter process receives messages at a regular interval
+of 10 seconds, inverts the words in the message and sends it back to the Collector. </p> <p>The
+Collector creates an active object to collect words from the user and another
+active object to receive words from the Inverter. Each active object has its
+own console for display. More information about running the example is given
+in the build section of this document. </p> <p><b>Design</b> </p> <p>The following
+block diagram describes the example in more detail. </p> <fig id="GUID-27A0C389-EDDD-5E17-82EE-2727F21803AF">
+<image href="GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e229882_href.png" placement="inline"/>
+</fig><p><filepath>CCollector.exe</filepath> is the Collector process. The
+user starts the Collector and creates an active scheduler and two global message
+queues. It also starts the Inverter process called <filepath>Inverter.exe</filepath>.
+The Collector creates one active object to collect words from the user and
+another active object to monitor its input queue (InverterOutQ). The active
+object to collect words is an object of class CCollector and the active object
+which monitors <codeph>InverterOutQ</codeph> is an object of class <xref href="GUID-A39BC295-2845-3018-B8B8-49418277E7EB.dita"><apiname>CMsgQActive</apiname></xref>.
+The two active objects have different consoles (one for user input and one
+for displaying the output message). </p><p> The user inputs words in the console.
+The set of words goes to the <codeph>InverterInQ</codeph> when the "<codeph>Enter</codeph>"
+key is pressed. If the "<codeph>ESC</codeph>" key is pressed, the system stops
+and sends the command to the Inverter process to stop.</p><p> The Inverter
+is another process which opens the global message queues. It creates an active
+scheduler and implements a periodic timer. The timer wakes every 10 seconds
+to receive the words from the <codeph>InverterInQ</codeph>. It also checks
+for a stop command, which closes the message queue and the two process. The
+Inverter inverts the received words and sends the result to <codeph>InverterOutQ</codeph>. </p><p>In
+the Collector process, the active object that monitors the <codeph>InveterOutQ</codeph> opens
+the message queue, receives the received words and displays  them in its console.
+It uses the <xref href="GUID-6E6B3CD0-FB61-336D-9357-2FFBE3F7A57A.dita"><apiname>NotifyDataAvailable()</apiname></xref> API to monitor the queue
+for the next set of data. </p><p>The Class diagram of the example is shown
+below </p><fig id="GUID-E93EF1D6-1B9D-4C76-80B0-1FF660B5C75A">
+<image href="GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e229930_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-86B04D06-7046-49BD-AE1A-57D5E406F864"><title>Class summary</title><ul>
+<li><p> <xref href="GUID-3CECC9FC-58C1-3117-AAF2-FDF88341F56F.dita"><apiname>CPeriodic</apiname></xref> - Periodic timer active object.</p></li>
+<li><p><xref href="GUID-5195B8D1-851E-3BEE-A72D-1841C0937300.dita"><apiname> RMsgQueue</apiname></xref> - A handle to a message queue.</p></li>
+<li><p><xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita"><apiname> RProcess</apiname></xref>A handle to a process.</p></li>
+<li><p><xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname> CActive</apiname></xref> - The core class of the active object abstraction.</p></li>
+</ul></section>
+<section id="GUID-F8D41313-760D-417E-834C-09D41F4EDB06"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian
+OS build process</xref> describes how to build this example application. </p> <p>The
+example builds an executable called <filepath>Inverter.exe</filepath> and <filepath>Collector.exe</filepath> in
+the standard locations. </p> <p>To run the example, first build <filepath>Inverter.exe</filepath> and
+start <filepath>Collector.exe</filepath> from the file system or from your
+IDE. After launching the .exes (and depending on the emulator you are using)
+you may need to navigate away from the application launcher or shell screen
+to view the console. </p> <p>A message input console is used for user input
+and an output message console is used to display inverted words. The output
+message console that is displayed at startup. The user can switch between
+two consoles by <cmdname>Ctrl+Shift+Alt+t </cmdname> combination. </p> <p>The
+input message console is used to input words. A user presses enter to send
+the words to the Inverter and presses <cmdname>ESC</cmdname> to exit the application.
+When a user presses "Enter" the words go to the <codeph>InverterInQ</codeph>.
+The Inverter opens the <codeph>InverterInQ</codeph> at periodic intervals
+of 10 secs and inverts the words which it sends to the collector via <codeph>InverterOutQ</codeph>.
+The Collector opens the <codeph>InverterOutQ</codeph> and display the words
+in the output message console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9" xml:lang="en"><title>Applications with an user interface</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If you are developing an application with an user interface, consider the following issues:</p>
+<ul>
+<li><p>Other applications may have access to the information that the user inputs.</p></li>
+<li><p>A hostile application may lure the user to enter information that belongs to another application.</p></li>
+</ul>
+<p>Password dialogs in particular should be designed so that the user easily recognizes the currently running application.</p>
+<section><title>User input</title>
+<p>It is possible for the user to unintentionally enter incorrect data that can interfere with the normal operation of the application. All input should be checked and validated before processing. A one-time check may not be enough because the content of data can change during processing, so it is therefore advisable to quickly check the data every time it is used.</p>
+<p>The following figure shows an example of input processing phases.</p>
+<fig id="GUID-6C871726-D4DB-40FC-A2F8-ADDA2B9A4E9C"><title>Examples of input processing</title><image href="GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e7305_href.png"/></fig>
+<p/>
+</section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e18553_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C258D231-4B08-51C4-BA09-8C61239666E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C258D231-4B08-51C4-BA09-8C61239666E0"><title>RS232 Control Lines</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the <codeph>RComm::Signal</codeph> and <codeph>RComm::SetSignal</codeph> APIs. </p> <p>While the handshaking facilities allow an application to ignore the status of the control lines, the levels of the control lines can be read at any time using the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-B2A751BB-6784-31B8-8808-F5BFC087427B"><apiname>RComm::Signals()</apiname></xref> member function. This is a bit field that needs to be masked with the <codeph>KCapsSignalXXX</codeph> bitmasks. The status of the output lines as well as the input lines is returned. </p> <p>However, when a value of 0 is returned for any bit, the meaning is ambiguous. The value could mean that a particular signal is low, or that reading its status is not supported. For example, if the <keyword>RNG</keyword> Ring Indicator input is not supported, the value returned by <codeph>Signals(&amp;KSignalRNG)</codeph> would always be 0 even if the serial port was attached to a ringing telephone. </p> <p>This is something that can be checked using <codeph>Caps()</codeph>. The <codeph>KCapsSignalXXX</codeph> bitmasks can be used with the <codeph>TCommCaps</codeph> version of <codeph>iSignals</codeph> to find out what signals are supported. For example <xref href="GUID-1143A8A7-829B-38EB-95C6-DB116801BB84.dita"><apiname>KCapsSignalCTSSupported</apiname></xref>. </p> <p>Only the voltage levels on the output lines can be set. This can be done at any time. The recommended method is using the inline function <xref href="GUID-B6392845-B724-35FF-80A5-3911B64535B9.dita"><apiname>SetSignals()</apiname></xref> which takes two integers as parameters. The first is a bitmask for the signals to be set and the second is a bitmask for the values to be read. These masks are the same signal line constants as those defined for getting signal levels, but only those relating to the RTS and DTR lines are valid. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C25DEDBC-83B8-5502-BD2A-9561F81551A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C25DEDBC-83B8-5502-BD2A-9561F81551A0" xml:lang="en"><title>Audio Component
+Framework Library Tutorials</title><shortdesc>This section describes how to the use Audio Component Framework
+library. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2608BF5-CDA7-530A-B67A-0414C7FA585D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C2608BF5-CDA7-530A-B67A-0414C7FA585D" xml:lang="en"><title>High Level Asynchronous Service Handling</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2709212-FD91-5245-9A1D-0E8114D7B202.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C2709212-FD91-5245-9A1D-0E8114D7B202"><title>cleanexport</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph>  <codeph>cleanexport</codeph>  <codeph>( ( [-c] | [-w] ) | ( [-k] [-v] ) )</codeph> </p> <p>This command will erase the files created by the corresponding <codeph>abld
+          export</codeph> command.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C290FA5E-8E41-5D19-B8C1-F88491EE6388.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C290FA5E-8E41-5D19-B8C1-F88491EE6388" xml:lang="en"><title>Messaging Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Messaging Framework enables feature-rich message applications with plug-in modules to support additional messaging protocols. This section provides an overview of the functionality and the architecture of the Messaging Framework collection. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-C29FE12C-C412-40A8-A067-27C63A519D71" xml:lang="en"><title>Choice
+list API</title><shortdesc>The Choice list API is used for providing a vertical list of selectable
+items. </shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<fig id="GUID-00782901-3982-4482-82E0-EE5E527A82D7">
+<title>Choice list</title>
+<image href="GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e50171_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>You can use the Choice list API in all GUI applications. It is a library
+API that provides an interface for constructing and using the choice list
+UI component.</p>
+<p>You can use the choice list in two ways, with or without the current selection. </p>
+<p>If the current selection is displayed, there is an label showing the currently
+selected item and an arrow button indicating that a list is available. </p>
+<p>If without current selection, the choice list must be created with providing
+a generic button to the list. This button will be used to open the list for
+selection. The label of the button is defined by the client application when
+creating the button and will not be changed by the choice list.</p>
+<p>For implementation information, see <xref href="GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita">Providing
+a vertical list of selectable items</xref>.</p>
+<p>For the Choice list API classes and header files, see Classes and definitions.</p>
+<section><title>Error handling</title><p>The leave mechanism of the Symbian
+OS environment is used to handle memory exhaustion.</p></section>
+</conbody><related-links>
+<linklist><title>Related APIs</title>
+<link href="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita"><linktext>Generic button
+API</linktext></link>
+</linklist>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2A203B1-3D30-5CC0-BAF8-0624E9A8B2A9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C2A203B1-3D30-5CC0-BAF8-0624E9A8B2A9"><title>unhash</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>unhash [ -adfms ] name ... </userinput> </p> <p>Remove the element named name from an internal hash table. The default is remove elements from the command hash table. The <codeph>-a</codeph> option causes <codeph>unhash</codeph> to remove regular or global aliases. </p> <table id="GUID-8148F99D-841F-5F4D-B298-1D4CA9556FCF"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-a</codeph>  </p> </entry> <entry><p>Removes regular or global aliases. </p> </entry> </row> <row><entry><p> <codeph>-d</codeph>  </p> </entry> <entry><p>Removes named directories. </p> </entry> </row> <row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p>Removes shell functions. </p> </entry> </row> <row><entry><p> <codeph>-m</codeph>  </p> </entry> <entry><p>The arguments are taken as patterns (should be quoted) and all elements of the corresponding hash table with matching names will be removed. </p> </entry> </row> <row><entry><p> <codeph>-s</codeph>  </p> </entry> <entry><p>Removes suffix aliases. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2BF3044-CC37-554D-9496-C7B18AE94561.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C2BF3044-CC37-554D-9496-C7B18AE94561" xml:lang="en"><title>Audio Input Stream Tutorials</title><shortdesc>This section describes how to use the Audio Input Stream library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia Framework
+  Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e284697_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2E24953-3D83-59FB-8B7A-C850474406DB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C2E24953-3D83-59FB-8B7A-C850474406DB" xml:lang="en"><title>OpenVG Interface
+Component</title><shortdesc>The OpenVG Interface component provides a consistent interface
+to OpenVG on the Symbian platform, enabling cross-device compatibility. The
+component includes the Khronos-released header files, some Symbian-specific
+header files and some other files (such as LIB, DEF and MMP files) and UIDs.
+It does not provide any implementations of the APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p>
+<p>The CBR package name for the OpenVG Interface component is <filepath>graphics_openvgheaders</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita"><linktext>OpenVG  
+Collection</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A"><title>SQL Index Tips</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document includes several tips for using SQL indexes. </p> <section><title>Introduction</title> <p>You can use indexes to speed up access. You create indexes automatically using PRIMARY KEY and UNIQUE. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section id="GUID-765F0DF1-ACB0-57DB-B9A8-3697E4637065"><title>Use an Index to Speed up Access</title> <p>Suppose you have a table like this: </p> <codeblock id="GUID-F70B25AB-A151-52CE-A413-1C62A2464D6A" xml:space="preserve">
+CREATE TABLE demo5(
+    id INTEGER,
+    content BLOB
+);
+</codeblock> <p>Further suppose that this table contains thousands or millions of rows and you want to access a single row with a particular ID: </p> <codeblock id="GUID-B02FA452-4093-5383-BAFA-AE035919D720" xml:space="preserve">
+SELECT content FROM demo5 WHERE id=?
+</codeblock> <p>The only want that SQLite can perform this query, and be certain to get every row with the chosen ID, is to examine every single row, check the ID of that row, and return the content if the ID matches. Examining every single row this way is called a <i>full table scan</i>. </p> <p>Reading and checking every row of a large table can be very slow, so you want to avoid full table scans. The usual way to do this is to create an index on the column you are searching against. In the example above, an appropriate index would be this: </p> <codeblock id="GUID-82E337F1-2CA2-51B0-A7BC-071A83779A18" xml:space="preserve">
+CREATE INDEX demo5_idx1 ON demo5(id);
+</codeblock> <p>With an index on the ID column, SQLite is able to use a binary search to locate entries that contain a particular value of ID. So if the table contains a million rows, the query can be satisfied with about 20 accesses rather than 1000000 accesses. This is a huge performance improvement. </p> <p>One of the features of the SQL language is that you do not have to figure out what indexes you may need in advance of coding your application. It is perfectly acceptable, even preferable, to write the code for your application using a database without any indexes. Then once the application is running and you can make speed measurements, add whatever indexes are needed in order to make it run faster. </p> <p>When you add indexes, the query optimizer within the SQL compiler is able to find new more efficient bytecode procedures for carrying out the operations that your SQL statements specify. In other words, by adding indexes late in the development cycle you have the power to completely reorganize your data access patterns without changing a single line of code. </p> </section> <section id="GUID-BB1F17C5-1174-5DF4-AA61-611173237F3F"><title>Create Indexes Automatically Using PRIMARY KEY and UNIQUE</title> <p>Any column of a table that is declared to be the PRIMARY KEY or that is declared UNIQUE will be indexed automatically. There is no need to create a separate index on that column using the CREATE INDEX statement. So, for example, this table declaration: </p> <codeblock id="GUID-E4BE6077-F639-5CE7-964A-276B0D58A129" xml:space="preserve">
+CREATE TABLE demo39a(
+    id INTEGER,
+    content BLOB
+);
+
+CREATE INDEX demo39_idx1 ON demo39a(id);
+</codeblock> <p>Is roughly equivalent to the following: </p> <codeblock id="GUID-DB3167E0-FA95-50CA-92C7-102B5C2C13E3" xml:space="preserve">
+CREATE TABLE demo39b(
+    id INTEGER UNIQUE,
+    content BLOB
+);
+</codeblock> <p>The two examples above are “roughly” equivalent, but not exactly equivalent. Both tables have an index on the ID column. In the first case, the index is created explicitly. In the second case, the index is implied by the UNIQUE keyword in the type declaration of the ID column. Both table designs use exactly the same amount of disk space, and both will run queries such as </p> <codeblock id="GUID-7ACAE270-6D20-557B-B7D1-C90EDD757E43" xml:space="preserve">
+SELECT content FROM demo39 WHERE id=?
+</codeblock> <p>using exactly the same bytecode. The only difference is that table demo39a lets you insert multiple rows with the same ID whereas table demo39b will raise an exception if you try to insert a new row with the same ID as an existing row. </p> <p>If you use the UNIQUE keyword in the CREATE INDEX statement of demo39a, like this: </p> <codeblock id="GUID-0EE5E186-CC4A-5CC3-AEAE-F1482F1F8F9A" xml:space="preserve">
+CREATE UNIQUE INDEX demo39_idx1 ON demo39a(id);
+</codeblock> <p>Then both table designs really would be exactly the same in every way. In fact, whenever SQLite sees the UNIQUE keyword on a column type declaration, all it does is create an automatic unique index on that column. </p> <p>The PRIMARY KEY modifier on a column type declaration works like UNIQUE; it causes a unique index to be created automatically. The main difference is that you are only allowed to have a single PRIMARY KEY. This restriction of only allowing a single PRIMARY KEY is part of the official SQL language definition. </p> <p>The idea is that a PRIMARY KEY is used to order the rows on disk. Some SQL database engines actually implement PRIMARY KEYs this way. But with SQLite, a PRIMARY KEY is like any other UNIQUE column, with only one exception: INTEGER PRIMARY KEY is a special case which is handled differently, as described in the next section. </p> </section> <section id="GUID-BF7A0301-8490-58ED-BB37-FAC403A84230"><title>Use Multi-Column Indexes</title> <p>SQLite is able to make use of multi-column indexes. The rule is that if an index is over columns <i>X</i>  <i> 0 </i>, <i>X</i>  <i> 1 </i>, <i>X</i>  <i> 2 </i>, ..., <i>X</i>  <i> n </i> of some table, then the index can be used if the WHERE clause contains equality constraints for some prefix of those columns <i>X</i>  <i>0 </i>, <i>X</i>  <i>1 </i>, <i>X</i>  <i>2 </i>, ..., <i>X</i>  <i>i </i> where <i>i</i> is less than <i>n</i>. </p> <p>As an example, suppose you have a table and index declared as follows: </p> <codeblock id="GUID-C18C97F7-23CA-5636-9F00-130A8FB3DEF5" xml:space="preserve">
+CREATE TABLE demo314(a,b,c,d,e,f,g);
+CREATE INDEX demo314_idx ON demo314(a,b,c,d,e,f);
+</codeblock> <p>Then the index might be used to help with a query that contained a WHERE clause like this: </p> <codeblock id="GUID-8A0944F4-1ACF-5267-B49F-EB83EFBB5670" xml:space="preserve">
+... WHERE a=1 AND b='Smith' AND c=1
+</codeblock> <p>All three terms of the WHERE clause would be used together with the index in order to narrow the search. But the index could not be used if there WHERE clause said: </p> <codeblock id="GUID-B5F1C17F-0F5E-5FC2-A9A4-DF19D699A076" xml:space="preserve">
+... WHERE b='Smith' AND c=1
+</codeblock> <p>The second WHERE clause does not contain equality terms for a prefix of the columns in the index because it omits a term for the “a” column. </p> <p>In a case like this: </p> <codeblock id="GUID-EF2CFE7D-0456-5414-847D-BADCC057CFD8" xml:space="preserve">
+... WHERE a=1 AND c=1
+</codeblock> <p>Only the “a=1” term in the WHERE clause could be used to help narrow the search. The “c=1” term is not part of the prefix of terms in the index which have equality constraints because there is no equality constraint on the “b” column. </p> <p>SQLite only allows a single index to be used per table within a simple SQL statement. For UPDATE and DELETE statements, this means that only a single index can ever be used, since those statements can only operate on a single table at a time. </p> <p>In a simple SELECT statement multiple indexes can be used if the SELECT statement is a join – one index per table in the join. In a compound SELECT statement (two or more SELECT statements connected by UNION or INTERSECT or EXCEPT) each SELECT statement is treated separately and can have its own indexes. Likewise, SELECT statements that appear in subexpressions are treated separately. </p> <p>Some other SQL database engines (for example PostgreSQL) allow multiple indexes to be used for each table in a SELECT. For example, if you had a table and index in PostgreSQL like this: </p> <codeblock id="GUID-F5DE8F24-7471-5992-9896-295CE173D855" xml:space="preserve">
+CREATE TABLE pg1(a INT, b INT, c INT, d INT);
+CREATE INDEX pg1_ix1 ON pg1(a);
+CREATE INDEX pg1_ix2 ON pg1(b);
+CREATE INDEX pg1_ix3 ON pg1(c);
+</codeblock> <p>And if you were to run a query like the following: </p> <codeblock id="GUID-A35663B7-4E7D-5CC0-BF5E-CF3A4CFED63F" xml:space="preserve">
+SELECT d FROM pg1 WHERE a=5 AND b=11 AND c=99;
+</codeblock> <p>Then PostgreSQL might attempt to optimize the query by using all three indexes, one for each term of the WHERE clause. </p> <p>SQLite does not work this way. SQLite is compelled to select a single index to use in the query. It might select any of the three indexes shown, depending on which one the optimizer things will give the best speedup. But in every case it will only select a single index and only a single term of the WHERE clause will be used. </p> <p>SQLite prefers to use a multi-column index such as this: </p> <codeblock id="GUID-40FB7075-1239-5089-BBC5-0D994F4A0C39" xml:space="preserve">
+CREATE INDEX pg1_ix_all ON pg1(a,b,c);
+</codeblock> <p>If the pg1_ix_all index is available for use when the SELECT statement above is prepared, SQLite will likely choose it over any of the single-column indexes because the multi-column index is able to make use of all 3 terms of the WHERE clause. </p> <p>You can trick SQLite into using multiple indexes on the same table by rewriting the query. Instead of the SELECT statement shown above, if you rewrite it as this: </p> <codeblock id="GUID-D7DE75D4-BB01-50DF-A9DC-956A83DED5D0" xml:space="preserve">
+SELECT d FROM pg1 WHERE RowID IN (
+    SELECT RowID FROM pg1 WHERE a=5
+    INTERSECT
+    SELECT RowID FROM pg1 WHERE b=11
+    INTERSECT
+    SELECT RowID FROM pg1 WHERE c=99
+)
+</codeblock> <p>Then each of the individual SELECT statements will using a different single-column index and their results will be combined by the outer SELECT statement to give the correct result. The other SQL database engines like PostgreSQL that are able to make use of multiple indexes per table do so by treating the simpler SELECT statement shown first as if they where the more complicated SELECT statement shown here. </p> </section> <section id="GUID-E90057A8-70B6-590C-B8AE-616DA25BB543"><title>Use Inequality Constraints on the Last Index Term</title> <p>Terms in the WHERE clause of a query or UPDATE or DELETE statement are mostly likely to trigger the use of an index if they are an equality constraint – in other words if the term consists of the name of an indexed column, an equal sign (“=”), and an expression. </p> <p>So, for example, if you have a table and index that look like this: </p> <codeblock id="GUID-84AADB9D-5853-57C2-B489-87DC7FB7AADE" xml:space="preserve">
+CREATE TABLE demo315(a,b,c,d);
+CREATE INDEX demo315_idx1 ON demo315(a,b,c);
+</codeblock> <p>And a query like this: </p> <codeblock id="GUID-A2B7DA9F-DB82-5D06-80E2-7AF714E403D5" xml:space="preserve">
+SELECT d FROM demo315 WHERE a=512;
+</codeblock> <p>The single “a=512” term of the WHERE clause qualifies as an equality constraint and is likely to provoke the use of the demo315_idx1 index. </p> <p>SQLite supports two other kinds of equality constraints. One is the IN operator: </p> <codeblock id="GUID-EA5D7637-A6B8-5BC0-A72E-D576B0F945A3" xml:space="preserve">
+SELECT d FROM demo315 WHERE a IN (512,1024);
+SELECT d FROM demo315 WHERE a IN (SELECT x FROM someothertable);
+</codeblock> <p>There other is the IS NULL constraint: </p> <codeblock id="GUID-B2C1C84B-C33D-55C5-8484-24B28EFC8E37" xml:space="preserve">
+SELECT d FROM demo315 WHERE a IS NULL;
+</codeblock> <p>SQLite allows at most one term of an index to be constrained by an inequalty such as less than “&lt;”, greater than “&gt;”, less than or equal to “&lt;=”, or greater than or equal to “&gt;=”. </p> <p>The column that the inequality constrains will be the right-most term of the index that is used. So, for example, in this query: </p> <codeblock id="GUID-563231B5-EC3A-57C2-BC6F-1A8129ADE308" xml:space="preserve">
+SELECT d FROM demo315 WHERE a=5 AND b&gt;11 AND c=1;
+</codeblock> <p>Only the first two terms of the WHERE clause will be used with the demo315_idx1 index. The third term, the “c=1” constraint, cannot be used because the “c” column occurs to the right of the “b” column in the index and the “b” column is constrained by an inequality. </p> <p>SQLite allows up to two inequalities on the same column as long as the two inequalities provide an upper and lower bound on the column. For example, in this query: </p> <codeblock id="GUID-4EB94886-EDFF-58F2-8692-011A67AC5A60" xml:space="preserve">
+SELECT d FROM demo315 WHERE a=5 AND b&gt;11 AND b&lt;23;
+</codeblock> <p>All three terms of the WHERE clause will be used because the two inequalities on the “b” column provide an upper and lower bound on the value of “b”. </p> <p>SQLite will only use the four inequalities mentioned above to help constrain a search: “&lt;”, “&gt;”, “&lt;=”, and “&gt;=”. Other inequality operators such as not equal to (“!=” or “&lt;&gt;”) and NOT NULL are not helpful to the query optimizer and will never be used to control an index and help make the query run faster. </p> </section> <section id="GUID-CAD0C181-37E7-578A-A7E1-7843447C247F"><title>Use Indexes To Help ORDER BY Clauses Evaluate Faster</title> <p>The default method for evaluating an ORDER BY clause in a SELECT statement is to first evaluate the SELECT statement and store the results in a temporary tables, then sort the temporary table according to the ORDER BY clause and scan the sorted temporary table to generate the final output. </p> <p>This method always works, but it requires three passes over the data (one pass to generate the result set, a second pass to sort the result set, and a third pass to output the results) and it requires a temporary storage space sufficiently large to contain the entire results set. </p> <p>Where possible, SQLite will avoid storing and sorting the result set by using an index that causes the results to emerge from the query in sorted order in the first place. </p> <p>The way to get SQLite to use an index for sorting is to provide an index that covers the same columns specified in the ORDER BY clause. For example, if the table and index are like this: </p> <codeblock id="GUID-F0103033-C5C8-5177-8AD7-70BCC45C33C9" xml:space="preserve">
+CREATE TABLE demo316(a,b,c,data);
+CREATE INDEX idx316 ON demo316(a,b,c);
+</codeblock> <p>And you do a query like this: </p> <codeblock id="GUID-D67BB6FF-E213-5B86-A2C1-E1992DA96A62" xml:space="preserve">
+SELECT data FROM demo316 ORDER BY a,b,c;
+</codeblock> <p>SQLite will use the idx316 index to implement the ORDER BY clause, obviating the need for temporary storage space and a separate sorting pass. </p> <p>An index can be used to satisfy the search constraints of a WHERE clause and to impose the ORDER BY ordering of outputs all at once. The trick is for the ORDER BY clause terms to occur immediately after the WHERE clause terms in the index. For example, one can write: </p> <codeblock id="GUID-02063968-34B5-5766-9D02-86D696D39C1E" xml:space="preserve">
+SELECT data FROM demo316 WHERE a=5 ORDER BY b,c;
+</codeblock> <p>The “a” column is used in the WHERE clause and the immediately following terms of the index, “b” and “c” are used in the ORDER BY clause. So in this case the idx316 index would be used both to speed up the search and to satisfy the ORDER BY clause. </p> <p>This query also uses the idx316 index because, once again, the ORDER BY clause term “c” immediate follows the WHERE clause terms “a” and “b” in the index: </p> <codeblock id="GUID-6760EC7E-E86A-5EBD-BDDD-32A68BE78A9E" xml:space="preserve">
+SELECT data FROM demo316 WHERE a=5 AND b=17 ORDER BY c;
+</codeblock> <p>But now consider this: </p> <codeblock id="GUID-9363996C-8C30-5E04-B05F-392C8262F1F6" xml:space="preserve">
+SELECT data FROM demo316 WHERE a=5 ORDER BY c;
+</codeblock> <p>Here there is a gap between the ORDER BY term “c” and the WHERE clause term “a”. So the idx316 index cannot be used to satisfy both the WHERE clause and the ORDER BY clause. The index will be used on the WHERE clause and a separate sorting pass will occur to put the results in the correct order. </p> </section> <section id="GUID-109AF0DA-A054-504A-A432-76BD145B2AC4"><title>Add Result Columns To The End Of Indexes</title> <p>Queries will sometimes run faster if their result columns appear in the right-most entries of an index. Consider the following example: </p> <codeblock id="GUID-63292052-B523-5671-B3EE-E10A66C7275F" xml:space="preserve">
+CREATE TABLE demo317(a,b,c,data);
+CREATE INDEX idx317 ON demo316(a,b,c);
+</codeblock> <p>A query where all result column terms appears in the index, such as </p> <codeblock id="GUID-41F740E7-EAFC-583B-BFE6-E63DBEA354D7" xml:space="preserve">
+SELECT c FROM demo317 WHERE a=5 ORDER BY b;
+</codeblock> <p>will typically run about twice as fast or faster than a query that uses columns that are not in the index, e.g. </p> <codeblock id="GUID-098752F4-304A-5A84-834E-240D97D97C2D" xml:space="preserve">
+SELECT data FROM demo317 WHERE a=5 ORDER BY b;
+</codeblock> <p>The reason for this is that when all information is contained within the index entry only a single search has to be made for each row of output. But when some of the information is in the index and other parts are in the table, first there must be a search for the appropriate index entry then a separate search is made for the appropriate table row based on the RowID found in the index entry. Twice as much searching has to be done for each row of output generated. </p> <p>The extra query speed does not come for free, however. Adding additional columns to an index makes the database file larger. So when developing an application, the programmer will need to make a space versus time trade-off to determine whether the extra columns should be added to the index or not. </p> <p>Note that if any column of the result must be obtained from the original table, then the table row will have to be searched for anyhow. There will be no speed advantage, so you might as well omit the extra columns from the end of the index and save on storage space. The speed-up described in this section can only be realized when every column in a table is obtainable from the index. </p> <p>Taking into account the results of the previous few sections, the best set of columns to put in an index can be described as follows: </p> <ul><li id="GUID-EBF4DEFB-2F5F-5D78-92FA-06FEAB0C3650"><p>The first columns in the index should be columns that have equality constraints in the WHERE clause of the query. </p> </li> <li id="GUID-E5CB725C-6304-5946-9E18-E69B5F1A6A88"><p>The second group of columns should match the columns specified in the ORDER BY clause. </p> </li> <li id="GUID-FBC00251-C3AD-5AC0-9102-EF66EA37DE4E"><p>Add additional columns to the end of the index that are used in the result set of the query. </p> </li> </ul> </section> <section id="GUID-D7B5B389-E031-5512-8186-235B22F0D9C1"><title>Resolve Indexing Ambiguities Using the Unary “+” Operator</title> <p>The SQLite query optimizer usually does a good job of choosing the best index to use for a particular query, especially if ANALYZE has been run to provide it with index performance statistics. But occasions do arise where it is useful to give the optimizer hints. </p> <p>One of the easiest ways to control the operation of the optimizer is to disqualify terms in the WHERE clause or ORDER BY clause as candidates for optimization by using the unary “+” operator. </p> <p>In SQLite, a unary “+” operator is a no-op. It makes no change to its operand, even if the operand is something other than a number. So you can always prefix a “+” to an expression in without changing the meaning of the expression. As the optimizer will only use terms in WHERE, HAVING, or ON clauses that have an index column name on one side of a comparison operator, you can prevent such a term from being used by the optimizer by prefixing the column name with a “+”. </p> <p>For example, suppose you have a database with a schema like this: </p> <codeblock id="GUID-E7747EFD-FE58-5EA4-88B3-097C0A303F52" xml:space="preserve">
+CREATE TABLE demo321(a,b,c,data);
+CREATE INDEX idx321a ON demo321(a);
+CREATE INDEX idx321b ON demo321(b);
+</codeblock> <p>If you issue a query such as this: </p> <codeblock id="GUID-87BD59FC-33A8-598B-B91F-607B26F7349D" xml:space="preserve">
+SELECT data FROM demo321 WHERE a=5 AND b=11;
+</codeblock> <p>The query optimizer might use the “a=5” term with idx321a or it might use the “b=11” term with the idx321b index. But if you want to force the use of the idx321a index you can accomplish that by disqualifying the second term of the WHERE clause as a candidate for optimization using a unary “+” like this: </p> <codeblock id="GUID-E6EAB459-726A-5FE4-8065-6C46AC2C5B5C" xml:space="preserve">
+SELECT data FROM demo321 WHERE a=5 AND +b=11;
+</codeblock> <p>The “+” in front of the “b=11” turns the left-hand side of the equals comparison operator into an expression instead of an indexed column name. The optimizer will then not recognize that the second term can be used with an index and so the optimizer is compelled to use the first “a=5” term. </p> <p>The unary “+” operator can also be used to disable ORDER BY clause optimizations. Consider this query: </p> <codeblock id="GUID-0488D466-77B7-50E0-AB85-FF033A2D75DC" xml:space="preserve">
+SELECT data FROM demo321 WHERE a=5 ORDER BY b;
+</codeblock> <p>The optimizer has the choice of using the “a=5” term of the WHERE clause with idx321a to restrict the search. Or it might choose to use do a full table scan with idx321b to satisfy the ORDER BY clause and thus avoid a separate sorting pass. You can force one choice or the other using a unary “+”. </p> <p>To force the use of idx321a on the WHERE clause, add the unary “+” in from of the “b” in the ORDER BY clause: </p> <codeblock id="GUID-E55A085F-D91F-58E0-B964-317BB3A9D7ED" xml:space="preserve">
+SELECT data FROM demo321 WHERE a=5 ORDER BY +b;
+</codeblock> <p>To go the other way and force the idx321b index to be used to satisfy the ORDER BY clause, disqualify the WHERE term by prefixing with a unary “+”: </p> <codeblock id="GUID-D97EF52A-1F74-57EB-AC11-7911B4E088B3" xml:space="preserve">
+SELECT data FROM demo321 WHERE +a=5 ORDER BY b;
+</codeblock> <p>The reader is cautioned not to overuse the unary “+” operator. The SQLite query optimizer usually picks the best index without any outside help. Premature use of unary “+” can confuse the optimizer and cause less than optimal performance. But in some cases it is useful to be able override the decisions of the optimizer, and the unary “+” operator is an excellent way to do this when it becomes necessary. </p> </section> <section id="GUID-7BEBC49C-0528-5D58-9626-2A92F3D0D9E8"><title>Avoid Indexing Large BLOBs and CLOBs</title> <p>SQLite stores indexes as b-trees. Each b-tree node uses one page of the database file. In order to maintain an acceptable fan-out, the b-tree module within SQLite requires that at least 4 entries must fit on each page of a b-tree. There is also some overhead associated with each b-tree page. So at the most there is about 250 bytes of space available on the main b-tree page for each index entry. </p> <p>If an index entry exceeds this allotment of approximately 250 bytes excess bytes are spilled to overflow pages. There is no arbitrary limit on the number of overflow pages or on the length of a b-tree entry, but for maximum efficiency it is best to avoid overflow pages, especially in indexes. This means that you should strive to keep the number of bytes in each index entry below 250. </p> <p>If you keep the size of indexes significantly smaller than 250 bytes, then the b-tree fan-out is increased and the binary search algorithm used to search for entries in an index has fewer pages to examine and therefore runs faster. So the fewer bytes used in each index entry the better, at least from a performance perspective. </p> <p>For these reasons, it is recommended that you avoid indexing large BLOBs and CLOBs. SQLite will continue to work when large BLOBs and CLOBs are indexed, but there will be a performance impact. </p> <p>On the other hand, if you need to lookup entries using a large BLOB or CLOB as the key, then by all means use an index. An index on a large BLOB or CLOB is not as fast as an index using more compact data types such as integers, but it is still many order of magnitude faster than doing a full table scan. So to be more precise, the advice of this section is that you should design your applications so that you do not need to lookup entries using a large BLOB or CLOB as the key. Try to arrange to have compact keys consisting of short strings or integers. </p> <p>Note that many other SQL database engines disallow the indexing of BLOBs and CLOBs in the first place. You simple cannot do it. SQLite is more flexible that most in that it does allow BLOBs and CLOBs to be indexed and it will use those indexes when appropriate. But for maximum performance, it is best to use smaller search keys. </p> </section> <section id="GUID-DD40F29F-DF93-536E-9B52-F9B9FF45155D"><title>Avoid Excess Indexes</title> <p>Some developers approach SQL-based application development with the attitude that indexes never hurt and that the more indexes you have, the faster your application will run. This is definitely not the case. There is a costs associated with each new index you create: </p> <ul><li id="GUID-FD257BF7-F938-54B5-AC03-9536712D6281"><p>Each new index takes up additional space in the database file. The more indexes you have, the larger your database files will become for the same amount of data. </p> </li> <li id="GUID-E1B74FB6-246A-5148-AF06-04E1B4B949F1"><p>Every INSERT and UPDATE statement modifies both the original table and all indexes on that table. So the performance of INSERT and UPDATE decreases linearly with the number of indexes. </p> </li> <li id="GUID-56AAE2D1-71D6-5A23-8190-B0C80B204DED"><p>Compiling new SQL statements using <codeph>Prepare()</codeph> takes longer when there are more indexes for the optimizer to choose between. </p> </li> <li id="GUID-24B7F7D8-FAA9-5C78-B3C7-B886FA774C0B"><p>Surplus indexes give the optimizer more opportunities to make a bad choice. </p> </li> </ul> <p>Your policy on indexes should be to avoid them wherever you can. Indexes are powerful medicine and can work wonders to improve the performance of a program. But just as too many drugs can be worse than none at all, so also can too many indexes cause more harm than good. </p> <p>When building a new application, a good approach is to omit all explicitly declared indexes in the beginning and only add indexes as needed to address specific performance problems. </p> <p>Take care to avoid redundant indexes. For example, consider this schema: </p> <codeblock id="GUID-89F20101-1628-5783-82B0-2ABE84078C7D" xml:space="preserve">
+CREATE TABLE demo323a(a,b,c);
+CREATE INDEX idx323a1 ON demo323(a);
+CREATE INDEX idx323a2 ON demo323(a,b);
+</codeblock> <p>The idx323a1 index is redundant and can be eliminated. Anything that the idx323a1 index can do the idx323a2 index can do better. </p> <p>Other redundancies are not quite as apparent as the above. Recall that any column or columns that are declared UNIQUE or PRIMARY KEY (except for the special case of INTEGER PRIMARY KEY) are automatically indexed. So in the following schema: </p> <codeblock id="GUID-2FE7B726-4027-518C-9217-B4BD1ECDA991" xml:space="preserve">
+CREATE TABLE demo323b(x TEXT PRIMARY KEY, y INTEGER UNIQUE);
+CREATE INDEX idx323b1 ON demo323b(x);
+CREATE INDEX idx323b2 ON demo323b(y);
+</codeblock> <p>Both indexes are redundant and can be eliminated with no loss in query performance. Occasionally one sees a novice SQL programmer use both UNIQUE and PRIMARY KEY on the same column: </p> <codeblock id="GUID-CDE12649-BDB4-58D4-8981-02628BDF5C79" xml:space="preserve">
+CREATE TABLE demo323c(p TEXT UNIQUE PRIMARY KEY, q);
+</codeblock> <p>This has the effect of creating two indexes on the “p” column – one for the UNIQUE keywords and another for the PRIMARY KEY keyword. Both indexes are identical so clearly one can be omitted. A PRIMARY KEY is guaranteed to always be unique so the UNIQUE keyword can be removed from the demo323c table definition with no ambiguity or loss of functionality. </p> <p>It is not a fatal error to create too many indexes or redundant indexes. SQLite will continue to generate the correct answers but it may take longer to produce those answers and the resulting database files might be a little larger. So for best results, keep the number of indexes to a minimum. </p> </section> <section id="GUID-9337E315-BB5A-56D0-8319-6C398D26151F"><title>Avoid Tables and Indexes with an Excessive Number of Columns</title> <p>SQLite places no arbitrary limits on the number of columns in a table or index. There are known commercial applications using SQLite that construct tables with tens of thousands of columns each. And these applications actually work. </p> <p>However the database engine is optimized for the common case of tables with no more than a few dozen columns. For best performance you should try to stay in the optimized region. Furthermore, we note that relational databases with a large number of columns are usually not well normalized. So even apart from performance considerations, if you find your design has tables with more than a dozen or so columns, you really need to rethink how you are building your application. </p> <p>There are a number of places in <codeph>Prepare()</codeph> that run in time O(N<sup>2</sup>) where N is the number of columns in the table. The constant of proportionality is small in these cases so you should not have any problems for N of less than one hundred but for N on the order of a thousand, the time to run <codeph>Prepare()</codeph> can start to become noticeable. </p> <p>When the bytecode is running and it needs to access the i-th column of a table, the values of the previous i-1 columns must be accessed first. So if you have a large number of columns, accessing the last column can be an expensive operation. This fact also argues for putting smaller and more frequently accessed columns early in the table. </p> <p>There are certain optimizations that will only work if the table has 30 or fewer columns. The optimization that extracts all necessary information from an index and never refers to the underlying table works this way. So in some cases, keeping the number of columns in a table at or below 30 can result in a 2-fold speed improvement. </p> <p>Indexes will only be used if they contain 30 or fewer columns. You can put as many columns in an index as you want, but if the number is greater than 30, the index will never improve performance and will never do anything but take up space in your database file. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-78773BCA-ADF6-53E6-AC80-5CB2AE1F8BCC.dita"><linktext>SQL Server Guide</linktext> </link> <link href="GUID-E51836E1-D33E-506C-B75B-19B8E3CC313A.dita"><linktext>SQLite</linktext> </link> <link href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita"><linktext>SQL DB Overview</linktext> </link> <link href="GUID-43CA02E7-0101-5824-B91B-E15EE20C829A.dita"><linktext>Avoid Transient
+                Tables</linktext> </link> <link href="GUID-49A3419F-D20A-5C5D-B2FF-51724EF37704.dita"><linktext>Prevent
+                Datafile Corruption</linktext> </link> <link><linktext/></link><link href="GUID-B994E6F7-228A-5433-B87F-91857C5D93D6.dita"><linktext>SQL Insertion
+                Tips</linktext> </link> <link href="GUID-4FC23DB7-4758-5DA4-81FF-0DAB169E2757.dita"><linktext>SQL Schema
+                Tips</linktext> </link> <link href="GUID-2A2920E0-5D40-5358-BC0C-8572CEFE078C.dita"><linktext>SQL
+                Expressions</linktext> </link> <link href="GUID-126FCCCC-0E7D-59AE-959A-2F94A7319C4B.dita"><linktext>SQL Statement
+                Tips</linktext> </link> <link href="GUID-ACCCB148-DAF9-59EC-B585-8EF632B9BF04.dita"><linktext>SQL Joins</linktext> </link> <link href="GUID-B7E978C1-45CA-554C-8028-D901B97BA2E0.dita"><linktext> ANALYZE
+                Command</linktext> </link> <link href="GUID-AF5A75D7-0687-546C-87B2-0B7DF7D33217.dita"><linktext> SQL WHERE CLause
+                Tips</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C2FCE726-FD87-52BF-8AF8-7F54FB6D6CB1" xml:lang="en"><title>Basic SQL Example Application</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3018CEE-865B-595A-A735-40E11665E50A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C3018CEE-865B-595A-A735-40E11665E50A" xml:lang="en"><title>Communications Configuration Utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Communications Configuration Utilities provide components that allow tools, applications to access Communications Configuration Settings. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C302BD91-12AB-5888-98AC-33EB7A146312.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C302BD91-12AB-5888-98AC-33EB7A146312" xml:lang="en"><title>Fixed
+Size Arrays Overview</title><shortdesc>This document is an overview of fixed size arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-6ECBAC31-1772-49F6-84F9-D49B250CF7F5"><title>Purpose</title> <p>Provides a simple wrapper to C++ arrays
+with additional automatic checking of index values.</p> </section>
+<section id="GUID-DEEAB5CC-2992-4C90-AD90-7FC027B3D128"><title>Description</title> <p>Fixed Size Arrays provide an inexpensive
+but defensive programming alternative to standard C++ arrays. Panics are produced
+on attempts to access out-of-range index values.</p> <p>The fixed sized array
+interface is provided by <xref href="GUID-1EC847DC-6858-3BEE-A5B2-F7737F1D50AD.dita"><apiname>TFixedArray</apiname></xref> <codeph>&lt;class
+T, TInt S&gt;</codeph>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3086910-D7B4-5549-BF65-374C8B602E8F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-C3086910-D7B4-5549-BF65-374C8B602E8F" xml:lang="en"><title>Compressing
+and Decompressing Memory Streams </title><shortdesc>The Zip Compression Library, EZLib provides stream compression
+and decompression functionality for the Symbian platforms. This tutorial summarizes
+the procedure involved in the compression and decompression of memory streams
+by EZLib. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-FF2527FF-1DFC-59B3-AC6D-5D7FDF7CCDF7"><p>The functions used
+for memory stream compression and decompression are provided by the <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita"><apiname>CEZCompressor</apiname></xref> class. </p> <p>The
+compression can be executed in single or multiple steps. This is depenedent
+on the buffer size of the memory stream. Small buffers are compressed in a
+single step. Larger buffers are compressed in small chunks repeatedly till
+the entire buffer is compressed. Clients must respond to callbacks from the
+library to provide information and resources required to complete the task. </p> </context>
+<steps id="GUID-9F423FB8-8AC5-54EC-B879-04EFA022FD38">
+<step id="GUID-D640BCC5-5F5D-5377-9553-F86F5E5D0D56"><cmd/>
+<info>Define a buffer manager that implements <xref href="GUID-B90BA6D6-72A2-3EB8-B8EF-CD5408107A9E.dita"><apiname>MEZBufferManager</apiname></xref>. </info>
+</step>
+<step id="GUID-C8020D99-632E-578A-85A4-4934380A0FD2"><cmd/>
+<info>Create an instance of the classs <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita"><apiname>CEZCompressor</apiname></xref>. </info>
+<substeps id="GUID-F4B79439-492C-56A1-A1D9-D92139842405">
+<substep id="GUID-C43B76C8-7A9A-5F41-9A9F-210A9267D50E"><cmd/>
+<info>Invoke <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita#GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5/GUID-8A60D49C-5E3A-3CF8-9738-B53E7439910A"><apiname>CEZCompressor::CompressL()</apiname></xref> for small buffers. </info>
+</substep>
+<substep id="GUID-06D723F2-2B7A-5865-B32F-945CE361A4E9"><cmd/>
+<info>Invoke <xref href="GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5.dita#GUID-AEF8BCC8-6B24-3D59-AD3A-17B5203B3AA5/GUID-03E4E3A2-3830-3209-9D7B-A2238B5AF219"><apiname>CEZCompressor::DeflateL()</apiname></xref> repeatedly on larger
+buffers until the entire buffer is compressed. </info>
+</substep>
+</substeps>
+<stepxmp><codeblock xml:space="preserve">class CBufferManager : public CBase, public MEZBufferManager
+    {
+public:
+  CBufferManager* CBufferManager::NewLC();
+  CBufferManager* CBufferManager::NewL();
+    ~CBufferManager();
+    void InitializeL(CEZZStream &amp;aZStream);
+    void NeedInputL(CEZZStream &amp;aZStream);
+    void NeedOutputL(CEZZStream &amp;aZStream);
+    void FinalizeL(CEZZStream &amp;aZStream);
+    };
+        
+CBufferManager* CBufferManager::NewLC()
+    {
+    CBufferManager* bm = new (ELeave) CBufferManager();
+    CleanupStack::PushL(bm);
+    return bm;
+    }
+
+CBufferManager* CBufferManager::NewL()
+    {
+    CBufferManager* bm = new (ELeave) CBufferManager();
+    CleanupStack::PushL(bm);
+    CleanupStack::Pop();
+    return bm;
+    }
+ 
+static void doExampleL()
+    {
+    
+  CBufferManager* bm = CBufferManager::NewLC();
+  //TInt aLevel = EDefaultCompression, TInt aWindowBits = EMaxWBits, TInt aMemLevel = EDefMemLevel, TStrategy aStrategy = EDefaultStrategy);
+  CEZCompressor* iCEZCompressor = CEZCompressor::NewLC(*bm); // all other flag values are default in its constructer
+   
+  while(icompressor-&gt;DeflateL())
+        {       
+        }     
+   
+
+  CleanupStack::PopAndDestroy(2);
+
+    }
+</codeblock></stepxmp>
+</step>
+</steps>
+<postreq id="GUID-4B702763-6D4E-5C32-803B-042024622BAE"><p>To decompress the
+memory streams: </p> <ol id="GUID-F4AEDE06-67FC-5624-9D36-FC08D5B460C2">
+<li id="GUID-5F44590E-8F53-5B75-ADC9-59073140BA57"><p>Define a buffer manager
+that implements <xref href="GUID-B90BA6D6-72A2-3EB8-B8EF-CD5408107A9E.dita"><apiname>MEZBufferManager</apiname></xref>. </p> </li>
+<li id="GUID-014484C5-7F1A-5350-B0AD-383091DDA300"><p>Create an instance of
+the classs <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita"><apiname>CEZDecompressor</apiname></xref>. </p> </li>
+<li id="GUID-EAE82B73-E86B-5E81-8E19-22FCD5EA95AC"><p>Invoke <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita#GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35/GUID-D9133787-E96C-3E9B-8991-0F0184C7AE7E"><apiname>CEZDecompressor::DecompressL()</apiname></xref> for
+small buffers. </p> <p>Invoke <xref href="GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35.dita#GUID-BC3CEC02-B747-38FB-8B35-E7390DB06E35/GUID-0AC99B66-412B-3CCF-84DA-D7BC0F0D32B2"><apiname>CEZDecompressor::InflateL()</apiname></xref> repeatedly
+on larger buffers until the entire buffer is compressed. </p> </li>
+</ol> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3290344-486B-554D-97FC-42DF48E150AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C3290344-486B-554D-97FC-42DF48E150AA" xml:lang="en"><title>Certificate and Key Management</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Certificate and Key Management provides validation services according to the Public Key Infrastructure (PKI) for X.509 Certificates.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C32D14AD-CC99-59D6-BA22-321F705418AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C32D14AD-CC99-59D6-BA22-321F705418AF" xml:lang="en"><title>Condition-Blocks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides detailed information about the syntax and usage of conditions and functions within a conditional-block of the PKG file.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C33BAB87-9CFA-58F4-95B7-7A05AB529708-master.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C37790B3-967C-489C-8753-0434938CBE2B" xml:lang="en"><title>Secure
+Sockets</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In addition to VPN and IPSec, the Symbian platform provides a generic
+client interface for communication through end points known as <i>Secure Sockets</i>.
+The required security protocol modules can be plugged into the Secure Sockets
+interface. </p>
+<p>The following figure shows the relationship between applications, secure
+socket classes, and secure socket plug-ins.</p>
+<fig id="GUID-80DE6518-CDBE-4652-9FE2-1663A1874822"><title>Relationship between applications and secure socket</title><image href="GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e7648_href.png"/></fig>
+<p>For more information on Secure Sockets, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Networking-subsystem-guide/SecureSocketsGuide/index.html" format="application/java-archive">Using
+Secure Sockets (TLS)</xref> and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Communications-Infrastructure-subsystem-guide/esock/index.html" format="application/java-archive">Using
+Sockets Server (ESOCK)</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3846503-BEFE-5539-B7ED-FD1915D38380.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C3846503-BEFE-5539-B7ED-FD1915D38380"><title>Crypto Services Overview</title><shortdesc>The Crypto Services collection provides interfaces for handling cryptographic keys, certificates and certificate applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-DB24DEE4-0371-5A9D-8312-E1A30D16BE98"><title>Description</title> <p>The Crypto Services collection provides the following functionality: </p> <ul><li id="GUID-8A5BBCFD-8C51-5691-8BAB-ABA61E2A89A5"><p> <b>Certificate and key management</b>  </p> <ul><li id="GUID-4B48DCF2-6141-57DB-B94F-D5EADE25F81C"><p>Storage and retrieval of certificates </p> </li> <li id="GUID-97D8D57A-9C86-5AE8-BDF1-D3CC243160C2"><p>Construction and validation of certificate chains </p> </li> <li id="GUID-10A80D2E-3005-55B7-A18D-C4494E979305"><p>Verification of trust of a certificate </p> </li> <li id="GUID-3C2A949E-0B87-508E-AB00-50D2CF4AA76E"><p>Generation, import and export of RSA, DSA and DH key pairs </p> </li> <li id="GUID-7FB614C5-3AF3-5D87-AEC3-8C24F6C546B4"><p>Listing of available keys </p> </li> <li id="GUID-2A2DE7EA-19F0-562E-ABA2-2C6B6D96713E"><p>Private key operations </p> </li> </ul> <p>Certificates and key are stored in a number of stores. Device creators can deploy their own key and certificate stores or use the <xref href="GUID-B8EF4291-18FE-572F-AAA1-CF7C491F4DA1.dita">file-based implementation</xref> provided by the Symbian platform. </p> </li> <li id="GUID-7EF058BA-BE55-53CF-9769-6D8A8223A65D"><p> <b>Encoding and decoding Public Key Cryptography Standards (PKCS) key pairs</b>  </p> <p>The ASN-PKCS component of the Crypto Services collection provides functionality for encoding and decoding <xref scope="external" href="http://www.rsasecurity.com/rsalabs/node.asp?id=2130">PKCS#8</xref> key pairs (including the key pairs encrypted in the <xref scope="external" href="http://www.rsasecurity.com/rsalabs/node.asp?id=2127">PKCS#5</xref> format). For details, see <xref href="GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita">ASN-PKCS Overview</xref>. </p> <p> </p> </li> <li id="GUID-597AFD26-3B68-5C91-9D0E-A9B6582B1EF8"><p> <b>Validating certificates</b>  </p> <p>To validate a certificate, an application must have at least one certificate which it trusts directly. This is called a root certificate. Different applications trust different certificates. </p> <p>The Crypto Services collection enables validation of certificates on an application-by-application basis. For details, see <xref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita">Certificate Validation in PKIX</xref>. </p> </li> </ul> </section> <section id="GUID-0F3F2A3E-827D-54E6-BADF-7D736E246ABC"><title>Components</title> <p>The Crypto Services collection comprises the following components: </p> <ul><li id="GUID-C7CB9014-9077-52EF-9617-6931C1DFB1BE"><p><xref href="GUID-C3290344-486B-554D-97FC-42DF48E150AA.dita">Certificate and Key Management</xref>  </p> </li> <li id="GUID-E1B8CA80-E7CD-535E-A0D7-9DE5536C5EBC"><p><xref href="GUID-A5DCCEB1-77DA-53C9-A1A3-07615DFCD403.dita">File-Based Certificate and Key Stores</xref>  </p> </li> <li id="GUID-200F5F0E-CECA-51D0-8C49-87E685641619"><p><xref href="GUID-92025FE2-16B1-59FE-9967-6972F6E7D4CA.dita">Root Certificates</xref>  </p> </li> <li id="GUID-FABDB4C9-A7F0-5FD6-B084-9B1273CA97E6"><p><xref href="GUID-314992D7-F6E1-5335-9EDA-DE89E67CDF57.dita">ASN-PKCS</xref>  </p> </li> </ul> </section> <section><title>Using Crypto Services</title> <p>See the following topics for details of the key uses of the Crypto Services collection: </p> <ul><li id="GUID-ED4F09F1-DBCC-5E18-95CD-C579E6E964D4"><p><xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita">Unified Certificate Store Tutorial</xref>  </p> </li> <li id="GUID-C42469DA-F805-5CF9-A987-7F0855414326"><p><xref href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita">Unified Key Store Tutorials</xref>  </p> </li> <li id="GUID-70FCBC23-3F48-5F9A-8A22-82D7FF16528F"><p><xref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita"> Root Certificates</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C38E6D35-43DF-54E6-809B-A7B871258944.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C38E6D35-43DF-54E6-809B-A7B871258944"><title>Application Framework Overview</title><shortdesc>The Application Framework defines a framework to register and manage applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The Application Framework enables native and non-native applications to run on Symbian devices. </p> </section> <section><title>Components</title> <p>The Application Framework collection consists of the following components: </p> <ul><li id="GUID-8DE6E633-E4B0-559E-9135-9187D93DB9CB"><p> <b>Application Architecture</b>, which provides access to </p> <ul><li id="GUID-2D04D787-2BCC-573B-96C2-D43FB68E1239"><p>a cached list of applications, and their properties, on the device. </p> </li> <li id="GUID-F238481A-54E5-5947-8870-BC8BB804F0D4"><p>various mechanisms for launching applications and switching between tasks. </p> </li> </ul> <p>For more information on Application Architecture, refer to <xref href="GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita">Application Architecture Overview</xref>. </p> </li> <li id="GUID-E384F0F8-E53A-56C0-A502-4E24F6AABAFC"><p> <b>View server</b>, which is a view-based framework, enables UI applications to have multiple views and supports switching between the views. </p> </li> </ul> <p>For more information on View Server, refer to <xref href="GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita">View Server Overview</xref>. </p> </section> </conbody><related-links><link href="GUID-1578590A-FC00-5C3B-8BF9-F6E43CA9D9A0.dita"><linktext>Application Architecture</linktext> </link> <link href="GUID-D468BDDD-FC61-5571-A4E2-334B6BB9C1E3.dita"><linktext>View Server</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C39CA508-86F7-5B99-9390-56980DD0EFFB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C39CA508-86F7-5B99-9390-56980DD0EFFB"><title>Lexical conventions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Resource files obey the following lexical conventions:</p> <ul><li id="GUID-264E846C-AF83-554C-B2D1-097440DC0458"><p>Whitespace, except when enclosed in quotes for strings, is ignored by the compiler.</p> </li> <li id="GUID-6F871557-C810-5FB6-840B-79752D219D19"><p>Both C-style (<codeph>/* */</codeph>) and C++-style (<codeph>//</codeph>) comments are supported.</p> </li> <li id="GUID-35147257-8611-5D39-8B8B-0CA777BEBF24"><p>Strings must be enclosed with double-quotes.</p> </li> <li id="GUID-3805200E-8819-5411-AB09-53F5151D216C"><p>To include a double-quote within a string, enter a double-quote preceded by a backslash. The following resource:</p> <codeblock id="GUID-2B2A9997-0ED7-5395-9235-A32415C04889" xml:space="preserve">RESOURCE SIMPLE quote_example
+ {
+ string="\"text\"";
+ }</codeblock> <p>where <codeph>string</codeph> is of type <codeph>BUF</codeph>, generates the output string <codeph>"text"</codeph>.</p> </li> <li id="GUID-10A87C58-27FA-515D-8D2D-C09A999C85DA"><p>To include a backslash within a string, enter two backslash characters. The following resource:</p> <codeblock id="GUID-B7F09354-DB70-5CB6-97AC-3C8414DCBCCA" xml:space="preserve">RESOURCE SIMPLE backslash_example
+ {
+ string="\\text\\";
+ }</codeblock> <p> generates the output string <codeph>\text\</codeph>.</p> </li> <li id="GUID-40AF99E2-53A7-5B0D-85E6-94FC2FDA7ED0"><p>You can use the syntax <varname>number</varname>, to specify a character by character code. If a Unicode resource is being created, this must be a Unicode character value.</p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C" xml:lang="en"><title>Image Processor Overview</title><shortdesc>Introduction to topic for overview page or search</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces to the Image Processor library. </p>
+<section><title>Purpose</title> <p>Image Processor is specially developed
+for imaging on mobile devices. The main objective is to create powerful applications: </p> <ul>
+<li><p>Photo editors </p> </li>
+<li><p>Viewers </p> </li>
+<li><p>Cameras. </p> </li>
+</ul> </section>
+<section><title>Image Processor library details</title> <p>The DLL that provides
+the functionality and the library to which your code must link is identified
+below. </p> <table id="GUID-DE2B2BFA-39FE-4895-B75C-332D9CA3B1A5">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>DLL</entry>
+<entry>LIB</entry>
+<entry>Short Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>imageprocessor.dll</filepath>  </p> </entry>
+<entry><p> <filepath>imageprocessor.lib</filepath>  </p> </entry>
+<entry><p>These files are used for implementing Image Processor operations. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Architectural relationship</title> <p>Image Processor is designed
+with hardware constraints often associated with mobile devices in mind. The
+Image Processor framework minimizes both memory consumption and the CPU power
+required. </p> <p>The diagrammatic representation of the Image Processor library
+is as follows: </p> <fig id="GUID-BD94B563-020A-4E81-808A-6A5C04AF74B9">
+<desc><p>The architectural relationship diagram for the Image Processor library </p> </desc>
+<image href="GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e283467_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Image Processor</title> <p>Image Processor is a high-level
+library and framework. Image Processor encapsulates all the internal processing
+and basic functionality required to create applications. Basic functions include </p> <ul>
+<li><p>initiate image processing </p> </li>
+<li><p>decode images </p> </li>
+<li><p>zoom images </p> </li>
+<li><p>pan images </p> </li>
+<li><p>render images to screen or file. </p> </li>
+</ul> <p>The Image Processor library also allows some geometrical operations
+to the image: </p> <ul>
+<li><p>rotate or flip </p> </li>
+<li><p>crop. </p> </li>
+</ul> <p>Optionally, the Image Processor library supports </p> <ul>
+<li><p>effects </p> </li>
+<li><p>overlays. </p> </li>
+</ul> </section>
+<section><title>Image Processor Adaptation Plug-in</title><p>The Image Processor
+adaptation plug-in is an attachable component which implements the features
+of the Image Processor library. The Image Processor adaptation plug-ins are
+dependant on the Image Processor library, and will not function as standalone
+components. </p> <p> <b>Note: You must write your own Image Processor adaptation
+plug-in, because the Image Processor adaptation plug-in is not provided.</b> </p></section>
+<section><title>Key Image Processor Class</title> <p>The principal classes
+of the Image Processor library are as follows: </p> <ul>
+<li><p> <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-13E30312-DD05-3581-9A59-C3569A981657"><apiname>ImageProcessor::CImgProcessor</apiname></xref>, which provides a
+convenient interface to process images. </p> </li>
+<li><p> <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB"><apiname>ImageProcessor::TEffect</apiname></xref>, which is the parent class
+of all effects, for example, <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-6703666E-4B7E-3AD2-A03F-A6B7D2F8AD02"><apiname>ImageProcessor::TEffectAntique</apiname></xref>. </p> </li>
+</ul> </section>
+<section><title>Using Image Processor</title> <p>Image Processor is used for
+the following: </p> <ul>
+<li><p>To initialize and process an input image </p> </li>
+<li><p>To apply effects and filters to the image. </p> </li>
+<li><p>Overlay images onto an image. </p> </li>
+<li><p>To render a low resolution preview of the image for display on screen. </p> </li>
+<li><p>To render a high resolution compressed image to disk or memory. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e289578_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3AC4F95-67E9-5F1D-8CF0-F6B209319EC0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C3AC4F95-67E9-5F1D-8CF0-F6B209319EC0" xml:lang="en"><title>What
+asynchronous service providers do</title><shortdesc>This document describes the purpose of asynchronous service providers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-3653AC36-81A4-4207-B174-1EBBCCA43E65"><title>Request functions and the request status</title> <p>An asynchronous
+service provider offers one or more <i>request functions</i>. </p> <p>Only
+one request on a service provider can be outstanding at any one time. A <i>request
+function</i> is one that takes a <codeph>TRequestStatus&amp;</codeph> parameter
+or, in rare cases, a <codeph>TRequestStatus*</codeph> parameter.</p> <p>When
+a request function is called (or when the asynchronous service provider is
+constructed, opened or initialized), the handle of the client thread is noted
+by the asynchronous service provider, so it knows which thread made the request.
+A panic results if any other thread tries to use the asynchronous service
+provider — for instance, to call its cancel function, or to issue another
+request — since the client of an asynchronous service provider is assumed
+to be a single thread.</p> <p>The asynchronous service provider's request
+function:</p> <ul>
+<li id="GUID-DB0F6F6D-DC43-568F-B675-5EEEE1EB0E2F"><p>first sets the value
+of the passed <codeph>TRequestStatus</codeph> to <codeph>KRequestPending</codeph> </p> </li>
+<li id="GUID-A1745B0E-E46F-5541-BE62-CE7B23864767"><p>then initiates the request,
+which may complete any time later.</p> </li>
+</ul> <p>There are several typical cases:</p> <ul>
+<li id="GUID-E82051C8-83B0-5263-8359-40A3DB47D694"><p>the request completes
+normally some time after the request function has returned.</p> </li>
+<li id="GUID-C061E1FA-2B91-5A1F-B2CA-9FA2AD668412"><p>the request completes
+during the request function call, either because the request completes immediately,
+or because of an error such as bad parameters meaning that the request cannot
+even be initiated.</p> </li>
+<li id="GUID-EEDCAE49-4BAE-52FE-B33D-0AD288671624"><p>some other type of abnormal
+completion such as cancellation, which can occur either during the request
+function call or later.</p> </li>
+</ul> </section>
+<section id="GUID-73EEA278-054A-4393-8264-5DBD2DB88A4A"><title>Thread request semaphore</title> <p>When a request completes,
+the client thread’s request semaphore is signalled to indicate completion.</p> <p>Each
+thread has a single request semaphore. A thread which uses asynchronous services
+must have a program whose main loop waits on the thread’s request semaphore
+for any outstanding request to complete.</p> <p>When any request completes,
+the thread program must identify which of the outstanding requests has completed.
+It does this by checking the <codeph>TRequestStatus</codeph> object associated
+with each outstanding request and, if its value is not <codeph>KRequestPending</codeph>,
+the program knows that the request is complete and can handle the completion
+of that request.</p> </section>
+<section id="GUID-D1A4AE55-CD75-43E5-AD4D-AA5BDDEF7FD5"><title>Cancel functions</title> <p>All asynchronous service providers
+provide one or more <i>cancel functions</i>, which cancel any outstanding
+request.</p> <p>Because of the asynchronous nature of requests, a cancel function
+may be called after the request has actually completed. For this reason, a
+cancel function should be viewed as a request for <i>early completion</i>.
+If you issue a cancel, the asynchronous service provider may complete the
+request abnormally by posting <codeph>KErrCancel</codeph> in the request status
+object, or it may complete the request normally by posting an appropriate
+completion code.</p> </section>
+<section id="GUID-7C8829A7-9FDB-46FA-A9E2-692E90398371"><title>See also</title> <p><xref href="GUID-E6D9F8CA-F293-5CE6-93C4-5FEC5EBCB2E9.dita">Asynchronous
+service provider's responsibilities</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6" xml:lang="en"><title>Power
+API Tutorial </title><shortdesc>This tutorial explains how to use the Power API of the HWRM. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Power API methods can be used by constructing
+an instance of <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower</apiname></xref> and calling
+its functions. However, to use its full functionality write a class which
+implements one or more of the observer interfaces described in the following
+table. Then, construct an instance of <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower</apiname></xref> and
+provide it with pointers to observers. </p> <table id="GUID-CC645CB8-B78E-5624-B669-31B5A08F77C2">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Interface</entry>
+<entry>Notification</entry>
+<entry>Method to override</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryPowerObserver</apiname></xref>  </p> </entry>
+<entry><p>Average battery voltage and current consumption </p> </entry>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>PowerMeasurement</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryChargingStatusObserver</apiname></xref>  </p> </entry>
+<entry><p>Charging status </p> </entry>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>ChargingStatusChange</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryChargingCurrentObserver</apiname></xref>  </p> </entry>
+<entry><p>Average charging current </p> </entry>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>AverageChargingCurrentChange</apiname></xref>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryFullChargingTimeObserver</apiname></xref>  </p> </entry>
+<entry><p>Remaining charging time </p> </entry>
+<entry><p> <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>BatteryFullChargingTimeChange</apiname></xref>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>For example, if the application requires periodic measurements
+of average battery voltage and current consumption, it must implement <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryPowerObserver</apiname></xref> and instantiate a <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower</apiname></xref> object using the <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::NewL(NULL,
+MHWRMBatteryPowerObserver *)</apiname></xref> method. </p> <p> <b>Note:</b> The battery
+charging observers cannot be passed to <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower</apiname></xref> using
+a <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>NewL()</apiname></xref> function. Call the dedicated
+function, <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHRMPower::SetBatteryChargingObserver()</apiname></xref>. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-8FD35358-CFCD-5010-AFD8-C277463B2970">
+<li id="GUID-E7A8616C-DA3A-5CC7-831F-3BA977F7C129-GENID-1-6-1-8-1-1-5-1-4-1-5-1-6-1-3-2-2-1"><p><xref href="GUID-047E3462-F806-4C54-9DC5-6B78907CA949.dita">Derive
+a class from one or more of the above interfaces</xref>. </p> </li>
+<li id="GUID-E7A8616C-DA3A-5CC7-831F-3BA977F7C129-GENID-1-6-1-8-1-1-5-1-4-1-5-1-6-1-3-2-2-2"><p><xref href="GUID-047E3462-F806-4C54-9DC5-6B78907CA949.dita">Implement
+the appropriate observer functions.</xref></p> </li>
+<li id="GUID-6DF35505-CA49-56AB-94E2-4291E2DFF232"><p><xref href="GUID-BC627588-E8C7-4DDB-8313-7C57E0CCD93B.dita">Create
+a power client using <apiname keyref="CHWRMPower">CHWRMPower::NewL()</apiname> or <apiname keyref="CHWRMPower">NewLC()</apiname>.</xref> </p><p><xref href="GUID-7CF7D29B-14A4-432E-BBB2-E3AF283E45E3.dita">You
+can retrieve the battery voltage or consumption information.</xref></p> </li>
+<li id="GUID-300E10F0-5414-55CB-8D9C-2B78E3782C34"><p><xref href="GUID-6CF00375-0A3E-4B85-9BA3-307BBB4ECFC7.dita">Call <apiname keyref="CHWRMPower">CHRMPower::SetBatteryChargingObserver()</apiname>, if
+necessary.</xref></p> </li>
+<li id="GUID-76E7EFB8-0464-5887-B144-1ACDFDE1D7F6"><p><xref href="GUID-FC7F8CFE-F9AD-4442-9289-CCEFEC62DF68.dita">Start
+receiving notification using the appropriate start function(s).</xref> </p> </li>
+<li id="GUID-209732A3-E374-54D2-87F7-5C3C45A23E85"><p><xref href="GUID-6A0D353D-A9B0-46EA-8FDC-1FBBD4A20CFB.dita">Stop
+receiving notification using the appropriate stop function(s).</xref></p> </li>
+</ol> <p> <b>Note: </b> If the notification period exceeds the maximum reporting
+period, set when the HWRM server starts, notification is cancelled. </p> </section>
+</conbody><related-links>
+<link href="GUID-1E55DD3C-D699-5062-88C1-C826F06CD48C.dita"><linktext>Power API</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e176468_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3D309CB-EA9E-4D8D-8C88-3EBC5695385F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C3D309CB-EA9E-4D8D-8C88-3EBC5695385F" xml:lang="en"><title>Tuning
+the HTTP protocol handler</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Some tuning can be made to optimize HTTP comms performance. The session
+properties <xref href="GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04.dita#GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04/GUID-6BA3F3C6-EF66-3948-B593-3CC4EBC5D11E"><apiname>HTTP::EMaxNumTransportHandlers</apiname></xref> and <xref href="GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04.dita#GUID-7BB3CFA5-4697-305D-B4FD-D8747BB56E04/GUID-53990AF7-D4E6-3379-888C-CA4F1C484FE7"><apiname>HTTP::EMaxNumTransPerTranspHndlr</apiname></xref> determine
+how the internal queueing works. </p>
+<ul>
+<li id="GUID-2EEE0E66-027A-5AD0-8AAF-E79E391B8FA5"><p> <codeph>HTTP::EMaxNumTransportHandlers</codeph> determines
+the maximum number of sockets that may be open at a time. Its default value
+is 4. </p> </li>
+<li id="GUID-D7AB0AC9-7A40-5035-91EB-BAC4D8D8ABCA"><p> <codeph>HTTP::EMaxNumTransPerTranspHndlr</codeph> determines
+how many transactions may be allocated to a given transport handler (that
+is, socket) before being backed up in a pending queue. Its default value is
+5. </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C3FC557E-72B4-5714-AE21-930F421204D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C3FC557E-72B4-5714-AE21-930F421204D6"><title>Clearing a Rectangle</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic shows you how to use <codeph>CBitmapContext::Clear()</codeph> to clear a rectangle to the current brush color. </p> <codeblock id="GUID-616556DA-B502-51D7-A08E-BC84022F2D3B" xml:space="preserve">TRect largeBox(0,0,100,100);
+TRect clearBox(20,20,40,40);
+    
+// draw a cross-hatched box
+gc.SetBrushColor(KRgbDarkGray);
+gc.SetBrushStyle(CGraphicsContext::ESquareCrossHatchBrush);
+gc.DrawRect(largeBox);
+    
+// clear a small rectangle
+gc.SetBrushColor(KRgbGray); // change the brush color
+gc.Clear(clearBox);   // clear to brush color</codeblock> <p> <b>Note</b>: When clearing a rectangle, the brush style is ignored, even if it is <codeph>TBrushStyle::ENullBrush</codeph>. </p> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF" xml:lang="en"><title>Unified
+Keystore Overview</title><shortdesc>The Unified Keystore provides a unified view of all the keystores
+in a device.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>The Unified Keystore provides an interface
+to access keys in various keystore implementations in the device. Symbian
+provides a default keystore implementation. Device creators may include Symbian's
+keystore implementation in a device and may add their own keystores. </p> </section>
+<section id="GUID-9DD8C1BF-A106-5E77-88A3-43A94AB68335"><title>Keystore functionality</title> <p>The
+Unified Keystore API provides the following functionality: </p> <ul>
+<li id="GUID-3447C46E-8AD1-577F-9B92-808FD92C91DA"><p>Generate keys </p> </li>
+<li id="GUID-FF0A58FD-9210-52CA-A10F-EBB12AF559E0"><p>List Keystores </p> </li>
+<li id="GUID-2DC65FE5-A070-518B-BDA5-481E40D7351D"><p>Import keys </p> </li>
+<li id="GUID-DC9B0CC5-2219-5913-B93A-5443E1F8FE4E"><p>Export keys </p> </li>
+<li id="GUID-BECC7117-3B1E-574C-ADE1-D03C4FABB2E3"><p>List keys </p> </li>
+<li id="GUID-BC1658CB-043E-54AB-BD74-202E67B65D05"><p>Delete keys </p> </li>
+<li id="GUID-3B6A82DD-523F-500E-8C52-731EF0AEC278"><p>Sign keys </p> </li>
+</ul> <p>These tasks are performed differently depending on the keystore version
+being used. </p> <p>The Symbian keystore supports access control to the keystore
+using application UIDs. There are two modes of access:</p><ul>
+<li><p>Owner: As key owners, applications can create, delete and manage keys. </p></li>
+<li><p>User: As key users, application can view and retrieve keys but cannot
+perform any modification operations.</p></li>
+</ul> <p> <b>Notes:</b>  </p> <ul>
+<li id="GUID-B59BCD78-E184-534A-AB28-776E6257F6FF"><p>For details on the Unified
+Keystore functionality, refer to the <xref href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita">Unified
+Keystore Tutorials</xref>. </p> </li>
+<li id="GUID-91CE40A2-D00E-5A31-9EAD-ABF87585AFAE"><p>The <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita"><apiname>CUnifiedKeyStore</apiname></xref> class
+provides functions for performing the various keystore operations. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita"><linktext>Unified Keystore
+Tutorials</linktext></link>
+<link href="GUID-C7150120-74C2-5FF1-99F0-0A267393E342.dita"><linktext>Crypto Token
+Framework Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C459D462-772A-58FC-8C46-B7559436C12C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C459D462-772A-58FC-8C46-B7559436C12C" xml:lang="en"><title>Control and
+animation framework</title><shortdesc>This section provides example code for the Control and Animation
+framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C467E6CD-6656-55F6-BDDF-BFA4F187B14F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C467E6CD-6656-55F6-BDDF-BFA4F187B14F" xml:lang="en"><title>RTP</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E"><title>Performing Scalar Queries</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes the way in which you can execute scalar queries. </p> <section><title>Introduction</title> <p>A scalar query is a <codeph>SELECT</codeph> statement which refers to several data fields and returns a single result, for example, a <codeph>COUNT</codeph> query on a database column. This gives the number of records in the database. Symbian OS provides a class <xref href="GUID-E7B775B0-A609-313A-8BFD-375C81D782A5.dita"><apiname>TSqlScalarFullSelectQuery</apiname></xref>, for making scalar queries. This is more efficient than the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> class. </p> </section> <section><title>Basic procedure</title> <p>The high level steps to perform scalar queries are shown here: </p> <ol id="GUID-55223195-5C72-5F61-A0E7-96B6EE3274F3"><li id="GUID-DCD1126E-F922-5D1F-84AE-DCEAD36005F4"><p>Declare the necessary variables. </p> </li> <li id="GUID-7218837C-3E0A-5B66-8814-234CB1DC5739"><p>Execute the query string. </p> </li> </ol> </section> <section><title>Detailed steps</title> <p>To make a scalar query, do the following: </p> <p><b>Declare the necessary variables</b> </p> <ol id="GUID-9B0B542F-F123-5933-8C54-A376EBD6C97F"><li id="GUID-6252DA75-22E2-5AB7-8F80-6C0EC52EEFD1"><p>Instantiate an object of the database class. </p> <codeblock id="GUID-2EA8226E-5867-59C2-B4D9-BEE0A2D1F730" xml:space="preserve">RSqlDatabase myDatabase;</codeblock> </li> <li id="GUID-95BB8C0A-4BCB-5F2F-AB02-4F30F9077CAB"><p>Declare a literal to hold the query string </p> <codeblock id="GUID-D76C33E4-9914-5D82-9CEB-0C94BFF0E0F4" xml:space="preserve">_LIT(kQueryString,"SELECT COUNT (*) FROM myTable");</codeblock> </li> <li id="GUID-2821B159-D8F7-5F8B-80D5-90A8EABE7D22"><p>Instantiate an object of the <xref href="GUID-E7B775B0-A609-313A-8BFD-375C81D782A5.dita"><apiname>TSqlScalarFullSelectQuery</apiname></xref> class. This class has a peculiar feature of instantiating an instance of it with a parameter that refers to the database to be queried. The class supplies a number of functions taking <codeph>SELECT</codeph> statements as parameters. </p> <codeblock id="GUID-FAF6DE03-B9CE-54B3-B58D-77BF47489E6E" xml:space="preserve">TSqlScalarFullSelectQuery myFullSelectQuery(myDatabase);</codeblock> </li> </ol> <p><b> Execute the query</b> </p>  </section> <section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying a Database</xref>  </p> <p> <xref href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita">Inserting a Row into a Table</xref>  </p> <p> <xref href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita">Deleting Rows from a Table</xref>  </p> <p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a Buffer</xref>  </p> <p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"> Reading to Memory </xref>  </p> <p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref>  </p> <p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref>  </p> <p>Performing Scalar Queries - This document </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e219907_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C48890DD-BBFD-53FA-95D6-7F39D9C3C263.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-C48890DD-BBFD-53FA-95D6-7F39D9C3C263"><title>Current Network Information Tutorial </title><shortdesc>This tutorial describes how to get the current network information with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-200DAECA-5ABF-570A-8D51-66BEB8FD28C5"> <step id="GUID-EA612306-767E-52CF-9106-F37D09D9EC18"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-E28FA43C-9DCD-503C-B338-A055F957DB45"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCurrentNetworkInfo()</apiname></xref> to get the current network information </info> </step> <step id="GUID-DB2736DE-3665-5C59-B7BB-5BE160834FA3"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetCurrentNetworkInfoCancel</apiname></xref> to cancel the asynchronous request </info> </step> <step id="GUID-238778A6-986B-5F82-8B6C-7B5467CFD195"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ECurrentNetworkInfoChange</apiname></xref> to get the notification of any changes to the current network information </info> </step> <step id="GUID-2197F674-C205-5D74-A175-941CD4CDA24D"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ECurrentNetworkInfoChangeCancel</apiname></xref> to cancel the notification request. </info> </step> </steps> <example id="GUID-294DCE91-58A5-5AFE-90FC-7F8C6E4BE1EF"><title>Current network information example</title> <codeblock id="GUID-26F49E05-4B6E-5C58-B26D-59D4ADC40AD2" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TNetworkInfoV1 iNetworkInfoV1;
+    CTelephony::TNetworkInfoV1Pckg iNetworkInfoV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+    };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iNetworkInfoV1Pckg(iNetworkInfoV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetCurrentNetworkInfo(iStatus, iNetworkInfoV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       CTelephony::TNetworkMode mode = iNetworkInfoV1.iMode;
+       if((mode == CTelephony::ENetworkModeCdma2000) || (mode == CTelephony::ENetworkModeCdma95))
+          {} // CDMA network; process CDMA-specific information
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetCurrentNetworkInfoCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C49F63A4-BA9D-5C99-8C82-EB3163E30D3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C49F63A4-BA9D-5C99-8C82-EB3163E30D3E"><title>How to prompt the user to select a remote device</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When there are several suitable remote devices, you can want to prompt the user to pick the one to which a connection should be made. A dialog to do this is supplied. Note that the dialog is not provided by a standard dialog class as this would require a Bluetooth client to have its own UI, and for this to be brought to the foreground. Instead, clients request a background thread called the notifier server to create the dialog: the server can put a dialog over the UI of whatever application happens to have the foreground.</p> <p>To use the dialog:</p> <ol id="GUID-3EAFB634-327F-578B-B739-E1C689999D39"><li id="GUID-E5598C77-5F6D-5D45-84E2-60B2F2463561"><p>Create an <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita"><apiname>RNotifier</apiname></xref> object, and connect it with <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita#GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D/GUID-C3191BF8-2F6F-36CC-B5CF-92AC58249E09"><apiname>RNotifier::Connect()</apiname></xref> </p> </li> <li id="GUID-9E199C38-33A9-5E49-BF21-6917D2D5110F"><p>Call <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita#GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D/GUID-A5E799C6-E6E4-3C58-A053-F4307179060F"><apiname>RNotifier::StartNotifierAndGetResponse()</apiname></xref> passing in:</p> <ul><li id="GUID-5B591C13-E8EC-53E6-BD26-90345D31C8BC"><p>the UID of the authorisation plug-in (<xref href="GUID-8297F7B3-980E-3E82-B30C-6AF583C8ED02.dita"><apiname>KDeviceSelectionNotifierUid</apiname></xref>)</p> </li> <li id="GUID-87019B90-CC1F-55A9-B447-03C13E86E10E"><p>the device and/or service classes by which to filter suitable remote devices; these are packaged in a <xref href="GUID-6A7B0905-3B9C-367D-AA6C-720C77465206.dita"><apiname>TBTDeviceSelectionParamsPckg</apiname></xref> </p> </li> <li id="GUID-918D02D7-46D5-513E-A31F-8E2C06452EF3"><p>a Bluetooth address object that on completion of the dialog will hold information about the device the user selected in a packaged <xref href="GUID-C6AB3507-A05F-3AC3-9C73-58529D4A106C.dita"><apiname>TBTDeviceResponseParams</apiname></xref>.</p> </li> </ul> </li> <li id="GUID-A2CF8242-B588-5463-8714-D2E59712EAB0"><p>When the <codeph>StartNotifierAndGetResponse()</codeph> calls completes, extract the device information returned from its buffer.</p> </li> <li id="GUID-B1CC149D-7EB7-5B97-9846-3940C544D643"><p>Clean up by cancelling and closing the notifier.</p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-7BF59FB9-4FAC-5CF9-AD47-FB50A4024642" xml:space="preserve">// 1. Create a notifier
+RNotifier not;
+User::LeaveIfError(not.Connect());
+
+// 2. Start the device selection plug-in
+TBTDeviceSelectionParams selectionFilter;
+TUUID targetServiceClass(0x2345);
+selectionFilter.SetUUID(targetServiceClass);
+TBTDeviceSelectionParamsPckg pckg(selectionFilter);
+TBTDeviceResponseParams result;
+TBTDeviceResponseParamsPckg resultPckg(result);
+TRequestStatus status;
+not.StartNotifierAndGetResponse(status, KDeviceSelectionNotifierUid, pckg, resultPckg);
+User::After(2000000);
+
+// 3. Extract device name if it was returned
+User::WaitForRequest(status);
+TPtrC name;
+if (status.Int() == KErrNone)
+    {
+    if (resultPckg.IsValidDeviceName())
+        {
+     name.Set(resultPckg().DeviceName());
+        }
+    }
+    
+// 4. Clean up
+not.CancelNotifier(KDeviceSelectionNotifierUid);
+not.Close();
+</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C4A072E1-4385-5C98-98C1-56F297132F11" xml:lang="en"><title> Remote
+Control Framework Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In this tutorial series we will be looking at creating a Bluetooth Remote
+Control application. </p>
+<p><b>Intended Audience: </b> </p>
+<p>This tutorial is designed for Symbian licensees and 3rd party application
+developers. </p>
+<section><title>Remote Control Basics</title> <p>Before moving on to the tutorials
+it may be useful to review some of the basic Remote Control Framework concepts. </p> <ul>
+<li id="GUID-2C9A13C1-7E05-5187-990E-983665A150EB"><p> <b>Roles</b>  </p> <ul>
+<li id="GUID-FE3159BE-E2DE-56F7-A2A2-12A938E46799"><p>Controller </p> <p>This
+device creates a connection over Bluetooth to the device to be controlled
+and sends the commands as required. </p> </li>
+<li id="GUID-B1C76224-3980-5CB8-8D81-A4672A9F2F25"><p>Target device </p> <p>The
+target device receives remote control commands and sends responses back along
+the same route to the controller. The target device can only operate in the
+connectionless mode. (See below) </p> </li>
+<li id="GUID-BEDEAFAB-BB73-5047-8430-D104C88C829F"><p>Both </p> <p>Operates
+as both a remote controller and a target. </p> </li>
+</ul> </li>
+<li id="GUID-B1B438C0-3551-5E16-8B28-53D6B923660F"><p> <b>Modes</b>  </p> <ul>
+<li id="GUID-B66F1E23-DCDB-5C66-9B10-62111B3A30FA"><p>Connection-Oriented </p> <p>Creates
+a connection over a known bearer to a known device. </p> </li>
+<li id="GUID-9C42F717-7C4D-5308-9DA1-F23933BDD3DC"><p>Connectionless </p> <p>Creates
+a connection using the Target Selector Plugin, which discovers the bearer
+and device address. </p> </li>
+</ul> </li>
+</ul> <p>See the <xref href="GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita">Remote
+Control Framework Overview</xref> for more details. </p> </section>
+<section><title>Using Bluetooth Remote Control Framework</title> <p>The following
+tasks will be covered in this tutorial series: </p> <ul>
+<li id="GUID-5EF72DEF-DB48-5E3B-8D8F-121171CF54E4"><p>Starting as Controller </p> <ul>
+<li id="GUID-2DCBA125-5055-5780-809B-B889E590C281"><p>Sending Commands </p> </li>
+<li id="GUID-DB4AFDDD-AEA7-5F2A-9330-7AE3C60A88D6"><p>Receiving Responses </p> </li>
+</ul> </li>
+<li id="GUID-9837115E-E6E5-5D61-92F3-B0C610C52FB0"><p>Starting as Target </p> <ul>
+<li id="GUID-E845DB73-9270-509D-B570-C490F810AD2A"><p>Receiving Commands </p> </li>
+<li id="GUID-A2216024-F00B-5775-843C-35F55DF31234"><p>Sending Responses </p> </li>
+</ul> </li>
+</ul> </section>
+<section><title>What's next?</title> <ul>
+<li id="GUID-DACBAEB3-B112-5C82-9CF9-2740545BA29E"><p> <b>Remote Control Basics</b> -
+This document </p> </li>
+<li id="GUID-2DB02042-DBBE-58E5-908B-7D0E3C8109AB"><p> <xref href="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita">Starting
+as Controller</xref>  </p> </li>
+<li id="GUID-8EE2DF84-7D0C-5752-AB11-9B0724CCDD05"><p> <xref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita">Starting
+as Target</xref>  </p> </li>
+<li id="GUID-D44A89B6-7620-5E9B-9D51-EDBB95FAC083"><p> <xref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita">Commands
+and Responses</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984" xml:lang="en"><title>P.I.P.S. Porting Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>P.I.P.S. porting tutorials act as a guideline document that explains how to create and build POSIX-compliant code on Symbian platform v9.x. The porting tutorials describe how can Symbian developers use the <codeph>libc</codeph>, <codeph>libm</codeph>,<codeph>libpthread</codeph> and <codeph>libdl</codeph> libraries when they port POSIX-based applications to the Symbian platform.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C4CC3CA3-8C02-5F73-A482-4F849DD08111.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C4CC3CA3-8C02-5F73-A482-4F849DD08111" xml:lang="en"><title>Porting Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes changes and the instructions required to migrate from apps to exes, control panel plug-ins to Symbian OS v9.1 and later, exe-apps to a data caged directory structure, data recognizers to the secure version of Symbian platform and notifiers to Symbian OS v9.1.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A" xml:lang="en"><title>Stylus
+pop-up menu</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The stylus pop-up menu is a separate pop-up mainly used when a view cannot
+offer dynamic functions, and the pop-up only offers tap-enabled functions.
+The stylus pop-up menu can also be used directly on top of applications. For
+example, on an image in Browser, the stylus pop-up menu can be used for offering <uicontrol>Save
+as…</uicontrol> and similar options.</p>
+<fig id="GUID-0C99C154-156D-4399-B8F5-811363D438E6">
+<title>Stylus pop-up menu opened from a preview pop-up. A tap on any other
+name or even anywhere else on the screen closes the stylus pop-up menu without
+moving the focus. </title>
+<image href="GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e60459_href.png" scale="33" placement="inline"/>
+</fig>
+<p>Activation of the stylus pop-up menu can be done with a short or long tap,
+which ever suits the given application and situation the best. Background
+is not dimmed when the stylus pop-up menu is shown. The menu disappears automatically
+after six seconds (or as soon as the user selects an item or taps outside
+the pop-up area).</p>
+<p>As the purpose of the component is only to offer some primary functions
+(a maximum of six functions), the stylus pop-up menu is not a scrollable component.
+Thus it has no focus.</p>
+<section><title>Using stylus pop-up menus
+in C++ applications</title><p>The API to use for creating a stylus pop-up
+menu is the <xref href="GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita">Stylus
+pop-up menu API</xref>.</p><p>For implementation information, see <xref href="GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita">Displaying
+commands in a context menu</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C501E703-E39D-598C-B962-7A32AC9091DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C501E703-E39D-598C-B962-7A32AC9091DD" xml:lang="en"><title>Folding
+and collation (comparing strings)</title><shortdesc>Describes descriptor folding and descriptor collation.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>There are two techniques that may be used to modify the characters in a
+descriptor prior to performing operations such as comparisons on text strings: </p>
+<ul>
+<li id="GUID-C550B19E-0312-52F4-936C-95C53D4D4FA9"><p>folding </p> </li>
+<li id="GUID-77D0249A-F9B7-5189-808F-C4FB88BED5B3"><p>collation </p> </li>
+</ul>
+<section id="GUID-4AD769A8-A90B-4BE5-B514-DCE9C808C4A8"><title>Folding</title> <p>Folding is a relatively simple way of normalising
+text for comparison by removing case distinctions, converting accented characters
+to characters without accents etc. Folding is used for tolerant comparisons,
+i.e. comparisons that are biased towards a match. </p> <p>For example, the
+file system uses folding to decide whether two file names are identical or
+not. Folding is locale-independent behaviour, and means that the file system,
+for example, can be locale-independent. </p> <p> <i> It is important to note
+that there can be no guarantee that folding is in any way culturally appropriate,
+and should not be used for comparing strings in natural language; </i> <xref href="GUID-C501E703-E39D-598C-B962-7A32AC9091DD.dita#GUID-C501E703-E39D-598C-B962-7A32AC9091DD/GUID-F93D3C40-FDB4-5D92-A90C-736BB0225982">collation</xref> <i>is
+the correct functionality for this.</i>  </p> <p>Variants of member functions
+that fold are provided where appropriate. For example, <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-7BDF7FA1-39FF-35D2-97DE-12A223514345"><apiname>TDesC16::CompareF()</apiname></xref> for
+folded comparison. </p> <p>See also: </p><p><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-7BDF7FA1-39FF-35D2-97DE-12A223514345"><apiname>TDesC16::CompareF()</apiname></xref><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-57DED784-A51D-308B-888C-968EFB35B732"><apiname>TDesC16::MatchF()</apiname></xref><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-D4BDA3FC-E11A-392B-A8A5-B468AC800396"><apiname>TDesC16::FindF()</apiname></xref><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-F88740FB-C90A-30AF-AA19-E2260EB39A47"><apiname>TDesC16::LocateF()</apiname></xref> <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-F88740FB-C90A-30AF-AA19-E2260EB39A47"><apiname>TDesC16::LocateF()</apiname></xref> <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-BE28DE82-AEF1-3E71-A0E1-7A053095B5B0"><apiname>TDesC16::LocateReverseF()</apiname></xref></p> </section>
+<section id="GUID-F93D3C40-FDB4-5D92-A90C-736BB0225982"><title>Collation</title> <p>Collation
+is a much better and more powerful way to compare strings and produces a dictionary-like
+('lexicographic') ordering. Folding cannot remove piece accents or deal with
+correspondences that are not one-to-one like the mapping from German upper
+case SS to lower case ß. In addition, folding cannot optionally ignore punctuation. </p> <p>For
+languages using the Latin script, for example, collation is about deciding
+whether to ignore punctuation, whether to fold upper and lower case, how to
+treat accents, and so on. In a given locale there is usually a standard set
+of collation rules that can be used. </p> <p> <i>Collation should always be
+used for comparing strings in natural language.</i>  </p> <p>Variants of member
+functions that use collation are provided where appropriate. For example, <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-8B44C890-6E64-37CF-B3D9-AEF9EFCBA284"><apiname>TDesC16::CompareC()</apiname></xref> for
+collated comparison. </p> <p><b>Comparing
+and sorting strings</b> </p> <p>The <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-8B44C890-6E64-37CF-B3D9-AEF9EFCBA284"><apiname>TDesC16::CompareC()</apiname></xref> variant
+prototyped as: </p> <codeblock id="GUID-42E8C509-DA19-50AD-8A80-D381F812639A" xml:space="preserve">TInt CompareC(const TDesC16&amp; aDes, TInt aMaxLevel, const TCollationMethod* aCollationMethod) const;</codeblock> <p>returns 0, if two strings match. </p> <p>There are many ways in which
+two strings can match, even when they do not have the same length: </p> <ul>
+<li id="GUID-8BD9DEF8-3B24-576D-B634-0E38BA2D5859"><p>if one string includes
+combining characters, but the collation level is set to 0 (which means that
+accents are ignored) </p> </li>
+<li id="GUID-999CCABF-D8DC-5967-90F1-7739EDCAEFF9"><p>if one string contains
+"pre-composed" versions of accented characters and the other contains "decomposed"
+versions of the same character </p> </li>
+<li id="GUID-9491E1CF-9BA3-52D6-8996-FC32BB54538A"><p>if one string contains
+a ligature that, in a collation table, matches multiple characters in the
+other string and the collation level is set to less than 3 (for example "æ"
+might match "ae") </p> </li>
+<li id="GUID-2D4FF198-7C41-5838-97FB-8A23A2D3DD49"><p>if one string contains
+a "surrogate pair" (a 32-bit encoded character) which happens to match a normal
+character at the level specified </p> </li>
+<li id="GUID-66B770C7-3215-559A-B70D-68FF3AC9DDAC"><p>if the collation method
+does not have its "ignore none" flag set and the collation level is set to
+less than 3, then spaces and punctuation are ignored; this means that one
+string could be much longer than the other just by adding a large number of
+spaces </p> </li>
+<li id="GUID-33026C64-3740-527A-97E0-DCBB6D7F087D"><p>if one string were to
+contain the Hangul representation of Korean and the other were to contain
+the Jamo representation of the same Korean and the collation level is set
+to less than 3. </p> </li>
+</ul> <p>The collation level is an integer that can take one of the values:
+0, 1, 2 or 3, and determines how tightly the matching of two strings should
+be. This value is passed as the second parameter to <codeph>CompareC()</codeph>.
+The values have the following meanings: </p> <ul>
+<li id="GUID-EDA2DAB4-E6B4-5815-ADC1-1BDF216D0C2E"><p>0 - only test the character
+identity; accents and case are ignored </p> </li>
+<li id="GUID-B0300A5F-6AF5-5722-B538-E0DBDE25576B"><p>1 - test the character
+identity and accents; case is ignored </p> </li>
+<li id="GUID-B6B7E302-120D-5240-B2AE-C14B19A36FF6"><p>2 - test the character
+identity, accents and case </p> </li>
+<li id="GUID-22E919E8-819D-5DE2-BABA-ECCC6F105B3C"><p>3 - test the Unicode
+value as well as the character identity, accents and case. </p> </li>
+</ul> <p>At levels 0-2: </p> <ul>
+<li id="GUID-E08F7C36-2E53-5348-A8D4-6A1E420CEB76"><p>ligatures (e.g. "æ")
+are the same as their decomposed equivalents (e.g. "ae") </p> </li>
+<li id="GUID-937B9898-878A-59BE-B185-A5347038F14C"><p>script variants are
+the same (for example "R" matches the mathematical real number symbol (Unicode
+211D) </p> </li>
+<li id="GUID-6D1AF8EB-E8E8-565E-BA1E-CAED0382D801"><p>the "micro" symbol (Unicode
+00B5) matches Greek "mu" (Unicode 03BC)). </p> </li>
+</ul> <p>At level 3 these are treated differently. </p> <p>If the aim is to <b>sort</b> strings,
+then <b>level 3 must be used</b>. For any strings <codeph>a</codeph> and <codeph>b</codeph>,
+if <codeph>a</codeph> &lt; <codeph>b</codeph> for some level of collation,
+then <codeph>              a</codeph> &lt; <codeph>b</codeph> for all higher
+levels of collation as well. It is impossible, therefore, to affect the order
+that is generated by using lower collation levels than 3. This just causes
+similar strings to sort in a random order. In standard English, sorting at
+level 3 gives the following order: </p> <p>bat &lt; bee &lt; BEE &lt; bus </p> <p>The
+case of the B only affects the comparison after all the letter identities
+have been found to be the same - this is usually what people are trying to
+achieve by using lower collation levels than 3 for sorting. It is never necessary. </p> <p>The
+sort order can be affected by setting flags in the <xref href="GUID-78C4965C-BFCD-3E7E-8F46-2EE3D1BAF6EC.dita"><apiname>TCollationMethod</apiname></xref> object. </p> <p>Note
+that when strings match at level 3, they do not necessarily have the same
+binary representation, or even the same length. Unicode contains many strings
+that are regarded as equivalent, even though they have different binary representations. </p><p> 
+       See also:  </p><p><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-8B44C890-6E64-37CF-B3D9-AEF9EFCBA284"><apiname>TDesC16::CompareC()</apiname></xref><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-ACEEA02F-2594-3C61-B7A9-E96F0737C3AE"><apiname>TDesC16::MatchC()</apiname></xref><xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita#GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23/GUID-33D33034-0757-31F9-B3A2-BA351AADC816"><apiname>TDesC16::FindC()</apiname></xref></p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C5103B39-6F67-47E3-938A-32933E75F98E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C5103B39-6F67-47E3-938A-32933E75F98E" xml:lang="en"><title>C++
+Standard Library (STLport v4)</title><shortdesc>C++ Standard Library is a Symbian platform port of STLport v4.
+It enables applications written using Standard C++ to be ported to Symbian
+platform.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><b>Notes:</b><ul>
+<li><p>It is recommended that you use the latest version of <xref href="GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita">Standard
+C++ Library (STLport v5)</xref> to take advantage of it's latest features.
+For more information about STLport, see <xref href="http://www.stlport.org/.dita">http://www.stlport.org/</xref>.
+For information about how to migrate to STLport v5, see <xref href="GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita">Migrating from STLport v4
+to v5</xref>.</p></li>
+<li><p>For more information about Open C++ (C++ Standard Library - STLport
+v4) API reference and examples, see <xref href="http://library.forum.nokia.com/topic/S60_5th_Edition_Cpp_Developers_Library/GUID-02F20077-73B5-4A63-85DB-D909E0ADE01C/html/main.html" scope="external">Forum Nokia Library</xref>.</p></li>
+</ul></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C519E523-E908-5185-949C-C1FAC0BAF0D9" xml:lang="en"><title>Histograms</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces you to the Histogram API of the Ecam component. </p>
+<section><title>Purpose</title> <p>This document shows you the detailed description
+of tutorial and how to work with it. </p> </section>
+<section><title>Introduction</title> <p>A Histogram is a graph that gives
+the information about the exposure of the captured frame. It gives details
+about the distribution of light on a picture. </p> <p>The histogram explains
+which portions of the frame are over-exposed or under-exposed and helps you
+to adjust the captured frame accordingly. </p> <p>You can display the histogram
+information directly on a viewfinder or analyze it using any analysis software. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following examples
+assume a camera object exists. </p> <p>The code in this tutorial
+can be found in <filepath>…\os\mm\imagingandcamerafws\cameraunittest\src\ECamUnitTestPlugin\extended_functionality.cpp</filepath>. </p> </section>
+<section><title>Using Histogram </title> <p>The histograms can be created
+for: </p> <ul>
+<li id="GUID-F84ADD35-2C3E-5FCD-9AD7-E7868874767F"><p>still image </p> </li>
+<li id="GUID-24EDCC63-7DC9-5176-BDD8-CF5555358876"><p>video frames </p> </li>
+<li id="GUID-8F776636-79CA-5ED6-AFD3-1BF5D878E6A5"><p>both client and direct
+viewfinders. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-5A5DDB8C-1E70-5B63-96F1-7ABBFA568866.dita"><linktext>Creating
+Histograms</linktext></link>
+<link href="GUID-7022455A-E738-574E-897E-33243482D69A.dita"><linktext>Working with
+Histograms</linktext></link>
+<link href="GUID-7F6A463C-2D33-5B6D-9394-DCB55FEEB5A3.dita"><linktext>Stopping
+Histograms</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,1850 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB" xml:lang="en"><title>Portuguese
+National Language Support</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Portuguese plug-in converters support the Portuguese SMS encoding using
+the <xref href="GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita#GUID-FE94596E-B5BB-51FE-BE38-069840323915/GUID-93B3DDF2-8EB1-5853-9DFD-3ABF42ADCB40">National
+Language Encoding</xref>. </p>
+<p>This section describes the different Portuguese plug-in converters supported
+by the Symbian Platform and the alphabets supported by the individual converters. </p>
+<section><title>Introduction</title> <p>The Symbian platform provides three
+plug-in converters to support Portuguese SMS encoding. </p> <ul>
+<li id="GUID-53CE91FB-4786-51E2-B15A-08E1ECA81E8F"><p> <b>Default GSM 7bit
+&amp; Portuguese Single Shift Converter</b>: This converter is identified
+by <codeph>KCharacterSetIdentifierPortugueseSingleSms7Bit</codeph> UID. </p> </li>
+<li id="GUID-545D7D78-AB7D-5773-B361-7A396D4C4E04"><p> <b> Portuguese Locking
+Shift &amp; GSM 7Bit Extension Converter</b>: This converter is identified
+by the <codeph>KCharacterSetIdentifierPortugueseLockingSms7Bit</codeph> UID. </p> </li>
+<li id="GUID-21411490-7C44-550E-BC4E-6A6B41EDB4B2"><p> <b>Portuguese Locking
+Shift &amp; Single Shift Converter</b>: This converter is identified by the <codeph>KCharacterSetIdentifierPortugueseLockingAndSingleSms7Bit</codeph> UID. </p> </li>
+</ul> <p>The UID's are defined in the <filepath>charconv.h</filepath> file. </p> <p> <b>Note</b>:
+For all the converters, any undefined Unicode character is converted to the
+GSM replacement character (?)<codeph>0x3F</codeph> and undefined GSM character
+is converted to the Unicode replacement character <codeph>0xFFFD</codeph>. </p> </section>
+<section id="GUID-3E29EDE0-D942-5C24-A681-43DE497A5AEC"><title>Alphabet</title> <p>The
+comparison tables listed below are constructed using the Standard SMS Converter
+as the baseline to provide a better understanding of the character set supported
+by each converter. The comparison tables help in identifying the character
+set supported by each converter in comparison with the standard SMS converter. </p> <p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita#GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB/GUID-C76A9113-8C67-5ADC-B9A1-0EE865AAEB4B">Table
+1A Default GSM 7bit &amp; Portuguese Single Shift Converter vs. Standard SMS
+Converter – Unicode to GSM Code </xref>  </p> <p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita#GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB/GUID-8F562B28-3488-5F1A-BF31-0E4A97F866CA">Table 1B Default GSM 7bit &amp; Portuguese Single Shift Converter vs. Standard
+SMS Converter – GSM Code to Unicode </xref>  </p> <p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita#GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB/GUID-279435AC-5AD8-527D-989C-5141AB42885D">Table 2A Portuguese Locking Shift &amp; GSM 7Bit Extension Converter vs.
+Standard SMS Converter – Unicode to GSM Code</xref>  </p> <p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita#GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB/GUID-47D05BED-B0FB-59BD-9B21-CE3AA6AD0873">Table 2B Portuguese Locking Shift &amp; GSM 7Bit Extension Converter vs.
+Standard SMS Converter – GSM Code to Unicode</xref>  </p> <p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita#GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB/GUID-3CA95F46-C8C5-5D26-9C9A-64CEA891E57C">Table 3A Portuguese Locking Shift &amp; Single Shift Converter vs. Standard
+SMS Converter – Unicode to GSM Code</xref>  </p> <p><xref href="GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB.dita#GUID-C524C3E8-D151-5AB2-8791-1342C297FFBB/GUID-F73002A5-B70C-5DA4-9E0E-E93E648C91B7">Table 3B Portuguese Locking Shift &amp; Single Shift Converter vs. Standard
+SMS Converter – GSM Code to Unicode</xref>  </p> <p id="GUID-C76A9113-8C67-5ADC-B9A1-0EE865AAEB4B"><b>Default
+GSM 7bit &amp; Portuguese Single Shift Converter vs. Standard Converter– Unicode
+to GSM Code</b> </p> <p>Table 1A </p> <table id="GUID-C6A18774-072A-5A4E-A3A5-40D0D8F82B74">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b>Default GSM 7bit &amp; Portuguese Single Shift converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry/>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>0x1B0E </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>0x1B5B </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CA </p> </entry>
+<entry><p>0x1B1F </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CD </p> </entry>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>0x1B5C </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00DA </p> </entry>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>0x1B0F </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>0x1B7F </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>0x1B7B </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00EA </p> </entry>
+<entry><p>0x1B05 </p> </entry>
+<entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00ED </p> </entry>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F4 </p> </entry>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>0x1B7C </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-8F562B28-3488-5F1A-BF31-0E4A97F866CA"><b> Default GSM
+7bit &amp; Portuguese Single Shift Converter vs. Standard Converter– GSM Code
+to Unicode</b> </p> <p>Table 1B </p> <table id="GUID-A0A96A18-0450-5E13-B0FB-1812BB4AFE3C">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b>Default GSM 7bit &amp; Portuguese Single Shift converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry/>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>0x0041 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0E </p> </entry>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x1B0E </p> </entry>
+<entry><p>0x00C5 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry/>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>0x0061 </p> </entry>
+<entry><p>LATIN SMALL LETTER A </p> </entry>
+</row>
+<row>
+<entry><p>0x1B5B </p> </entry>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry/>
+<entry><p>0x1B5B </p> </entry>
+<entry><p>0x00C4 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B1F </p> </entry>
+<entry><p>0x00CA </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry/>
+<entry><p>0x1B1F </p> </entry>
+<entry><p>0x00C9 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER E WITH ACUTE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B49 Í </p> </entry>
+<entry><p>0x00CD </p> </entry>
+<entry><p>LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x0049 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>0x004F </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry/>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B5C </p> </entry>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B5C </p> </entry>
+<entry><p>0x00D6 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>0x00DA </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>0x0055 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER U </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0F </p> </entry>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0F </p> </entry>
+<entry><p>0x00E5 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B7F </p> </entry>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B7F </p> </entry>
+<entry><p>0x00E0 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B7B </p> </entry>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B7B </p> </entry>
+<entry><p>0x00E4 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B09 </p> </entry>
+<entry><p>0x00C7 </p> <p> </p> </entry>
+<entry><p>LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B05 </p> </entry>
+<entry><p>0x00EA </p> </entry>
+<entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B05 </p> </entry>
+<entry><p>0x00E9 </p> </entry>
+<entry><p>LATIN SMALL LETTER E WITH ACUTE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x00ED </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x0069 </p> </entry>
+<entry><p>LATIN SMALL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>0x006F </p> </entry>
+<entry><p>LATIN SMALL LETTER O </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x00F4 </p> <p> </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>LATIN SMALL LETTER G WITH BREVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B7C </p> </entry>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B7C </p> </entry>
+<entry><p>0x00F6 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B75 </p> </entry>
+<entry><p>0x00FA </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B75 </p> </entry>
+<entry><p>0x0075 </p> </entry>
+<entry><p>LATIN SMALL LETTER U </p> </entry>
+</row>
+<row>
+<entry><p>0x1B13 </p> </entry>
+<entry><p>0x0393 </p> </entry>
+<entry><p>Γ GREEK CAPITAL LETTER GAMMA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B13 </p> </entry>
+<entry><p>0x0393 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER GAMMA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B19 </p> </entry>
+<entry><p>0x0398 </p> </entry>
+<entry><p>Θ GREEK CAPITAL LETTER THETA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B19 </p> </entry>
+<entry><p>0x0398 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER THETA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B16 </p> </entry>
+<entry><p>0x03A0 </p> </entry>
+<entry><p>Π GREEK CAPITAL LETTER PI </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B16 </p> </entry>
+<entry><p>0x03A0 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PI </p> </entry>
+</row>
+<row>
+<entry><p>0x1B18 </p> </entry>
+<entry><p>0x03A3 </p> </entry>
+<entry><p>Σ GREEK CAPITAL LETTER SIGMA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B18 </p> </entry>
+<entry><p>0x03A3 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER SIGMA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B12 </p> </entry>
+<entry><p>0x03A6 </p> </entry>
+<entry><p>Φ GREEK CAPITAL LETTER PHI </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B12 </p> </entry>
+<entry><p>0x03A6 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PHI </p> </entry>
+</row>
+<row>
+<entry><p>0x1B17 </p> </entry>
+<entry><p>0x03A8 </p> </entry>
+<entry><p>Ψ GREEK CAPITAL LETTER PSI </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B17 </p> </entry>
+<entry><p>0x03A8 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PSI </p> </entry>
+</row>
+<row>
+<entry><p>0x1B15 </p> </entry>
+<entry><p>0x03A9 </p> </entry>
+<entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B15 </p> </entry>
+<entry><p>0x03A9 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER OMEGA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0D </p> </entry>
+<entry><p>0x000D </p> </entry>
+<entry><p>&lt;control&gt; CARRIAGE RETURN </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0D </p> </entry>
+<entry><p>0x000D </p> </entry>
+<entry><p>CARRIAGE RETURN </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-279435AC-5AD8-527D-989C-5141AB42885D"><b> Portuguese
+Locking Shift &amp; GSM 7Bit Extension Converter vs. Standard Converter– Unicode
+to GSM Code</b> </p> <p>Table 2A </p> <table id="GUID-5DE10C1D-49E5-5FBC-84B6-467FEB30A6F3">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b> Portuguese Locking Shift &amp; GSM 7Bit Extension Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry/>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x0060 </p> </entry>
+<entry><p>0x7D </p> </entry>
+<entry><p>` GRAVE ACCENT </p> </entry>
+<entry><p> </p> </entry>
+<entry/>
+<entry/>
+<entry/>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+<row>
+<entry><p>0x00AA </p> </entry>
+<entry><p>0x12 </p> </entry>
+<entry><p>ª FEMININE ORDINAL INDICATOR </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00BA </p> </entry>
+<entry><p>0x24 </p> </entry>
+<entry><p>º MASCULINE ORDINAL INDICATOR </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>0x14 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>0x0E </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>0x1c </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>0x5b </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CA </p> </entry>
+<entry><p>0x1E </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CD </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>0x19 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>0x0b </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>0x5c </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00DA </p> </entry>
+<entry><p>0x5D </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>0x0F </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>0x7b </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00EA </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00ED </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>0x08 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F4 </p> </entry>
+<entry><p>0x0c </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>0x7c </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00FA </p> </entry>
+<entry><p>0x06 </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x221E </p> </entry>
+<entry><p>0x15 </p> </entry>
+<entry><p>∞ INFINITY </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-47D05BED-B0FB-59BD-9B21-CE3AA6AD0873"><b> Portuguese
+Locking Shift &amp; GSM 7Bit Extension Converter vs. Standard Converter– GSM
+Code to Unicode</b> </p> <p>Table 2B </p> <table id="GUID-A9B9E935-E5BC-5DCA-8F1D-F59DF542F894">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b> Portuguese Locking Shift &amp; GSM 7Bit Extension Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x40 </p> </entry>
+<entry><p>0x00CD </p> </entry>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x40 </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+<row>
+<entry><p>0x60 </p> </entry>
+<entry><p>0x007E </p> </entry>
+<entry><p>~ TILDE </p> </entry>
+<entry/>
+<entry><p>0x60 </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>INVERTED QUESTION MARK </p> </entry>
+</row>
+<row>
+<entry><p>0x12 </p> </entry>
+<entry><p>0x00AA </p> </entry>
+<entry><p>ª FEMININE ORDINAL INDICATOR </p> </entry>
+<entry/>
+<entry><p>0x12 </p> </entry>
+<entry><p>0x03A6 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PHI </p> </entry>
+</row>
+<row>
+<entry><p>0x13 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>0x13 </p> </entry>
+<entry><p>0x0393 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER GAMMA </p> </entry>
+</row>
+<row>
+<entry><p>0x04 </p> </entry>
+<entry><p>0x00EA </p> </entry>
+<entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry/>
+<entry><p>0x04 </p> </entry>
+<entry><p>0x00E8 </p> </entry>
+<entry><p>LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x14 </p> </entry>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry/>
+<entry><p>0x14 </p> </entry>
+<entry><p>0x039B </p> </entry>
+<entry><p>GREEK CAPITAL LETTER LAMDA </p> </entry>
+</row>
+<row>
+<entry><p>0x24 </p> </entry>
+<entry><p>0x00BA </p> </entry>
+<entry><p>º MASCULINE ORDINAL INDICATOR </p> </entry>
+<entry/>
+<entry><p>0x24 </p> </entry>
+<entry><p>0x00A4 </p> </entry>
+<entry><p>CURRENCY SIGN </p> </entry>
+</row>
+<row>
+<entry><p>0x15 </p> </entry>
+<entry><p>0x221E </p> </entry>
+<entry><p>∞ INFINITY </p> </entry>
+<entry/>
+<entry><p>0x15 </p> </entry>
+<entry><p>0x03A9 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER OMEGA </p> </entry>
+</row>
+<row>
+<entry><p>0x06 </p> </entry>
+<entry><p>0x00FA </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x06 </p> </entry>
+<entry><p>0x00F9 </p> </entry>
+<entry><p>LATIN SMALL LETTER U WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x16 </p> </entry>
+<entry><p>0x005E </p> </entry>
+<entry><p>^ CIRCUMFLEX ACCENT </p> </entry>
+<entry/>
+<entry><p>0x16 </p> </entry>
+<entry><p>0x03A0 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PI </p> </entry>
+</row>
+<row>
+<entry><p>0x07 </p> </entry>
+<entry><p>0x00ED </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x07 </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x17 </p> </entry>
+<entry><p>0x005C </p> </entry>
+<entry><p>\ REVERSE SOLIDUS </p> </entry>
+<entry/>
+<entry><p>0x17 </p> </entry>
+<entry><p>0x03A8 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PSI </p> </entry>
+</row>
+<row>
+<entry><p>0x08 </p> </entry>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x08 </p> </entry>
+<entry><p>0x00F2 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x18 </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x18 </p> </entry>
+<entry><p>0x03A3 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER SIGMA </p> </entry>
+</row>
+<row>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>0x19 </p> </entry>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x19 </p> </entry>
+<entry><p>0x0398 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER THETA </p> </entry>
+</row>
+<row>
+<entry><p>0x1a </p> </entry>
+<entry><p>0x007C </p> </entry>
+<entry><p>| VERTICAL LINE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1A </p> </entry>
+<entry><p>0x039E </p> </entry>
+<entry><p>GREEK CAPITAL LETTER XI </p> </entry>
+</row>
+<row>
+<entry><p>0x0b </p> </entry>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0B </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>0x5b </p> </entry>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x5B </p> </entry>
+<entry><p>0x00C4 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x7b </p> </entry>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x7B </p> </entry>
+<entry><p>0x00E4 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x0c </p> </entry>
+<entry><p>0x00F4 </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>0x1c </p> </entry>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER AE (ASH) * </p> </entry>
+</row>
+<row>
+<entry><p>0x5c </p> </entry>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x5C </p> </entry>
+<entry><p>0x00D6 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x7c </p> </entry>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x7C </p> </entry>
+<entry><p>0x00F6 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>LATIN SMALL LETTER AE (ASH) * </p> </entry>
+</row>
+<row>
+<entry><p>0x5D </p> </entry>
+<entry><p>0x00DA </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x5D </p> </entry>
+<entry><p>0x00D1 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER N WITH TILDE </p> </entry>
+</row>
+<row>
+<entry><p>0x7D </p> </entry>
+<entry><p>0x0060 </p> </entry>
+<entry><p>` GRAVE ACCENT </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x7D </p> </entry>
+<entry><p>0x00F1 </p> </entry>
+<entry><p>LATIN SMALL LETTER N WITH TILDE </p> </entry>
+</row>
+<row>
+<entry><p>0x0E </p> </entry>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0E </p> </entry>
+<entry><p>0x00C5 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1E </p> </entry>
+<entry><p>0x00CA </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1E </p> </entry>
+<entry><p>0x00DF </p> </entry>
+<entry><p>LATIN SMALL LETTER SHARP S (GERMAN) </p> </entry>
+</row>
+<row>
+<entry><p>0x0F </p> </entry>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0F </p> </entry>
+<entry><p>0x00E5 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-3CA95F46-C8C5-5D26-9C9A-64CEA891E57C"><b>Portuguese Locking
+Shift &amp; Single Shift Converter vs. Standard SMS Converter – Unicode to
+GSM Code</b> </p> <p>Table 3A </p> <table id="GUID-BDCC4FC4-89C4-513D-9BFA-2BD03AEC53A7">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b>Portuguese Locking Shift &amp; Single Shift Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Converted Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x0060 </p> </entry>
+<entry><p>0x7D </p> </entry>
+<entry><p>` GRAVE ACCENT </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+<row>
+<entry><p>0x00AA </p> </entry>
+<entry><p>0x12 </p> </entry>
+<entry><p>ª FEMININE ORDINAL INDICATOR </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00BA </p> </entry>
+<entry><p>0x24 </p> </entry>
+<entry><p>º MASCULINE ORDINAL INDICATOR </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>0x14 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>0x0E </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>0x1c </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>0x5b </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CA </p> </entry>
+<entry><p>0x1E </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00CD </p> </entry>
+<entry><p>0x40 </p> </entry>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>0x19 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>0x0b </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>0x5c </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00DA </p> </entry>
+<entry><p>0x5D </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>0x0F </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>0x7b </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00EA </p> </entry>
+<entry><p>0x04 </p> </entry>
+<entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00ED </p> </entry>
+<entry><p>0x07 </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>0x08 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F4 </p> </entry>
+<entry><p>0x0c </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>0x7c </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x00FA </p> </entry>
+<entry><p>0x06 </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p>0x221E </p> </entry>
+<entry><p>0x15 </p> </entry>
+<entry><p>∞ INFINITY </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x039B </p> </entry>
+<entry><p>0x14 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER LAMDA </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x039E </p> </entry>
+<entry><p>0x1A </p> </entry>
+<entry><p>GREEK CAPITAL LETTER XI </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-F73002A5-B70C-5DA4-9E0E-E93E648C91B7"><b>Portuguese Locking
+Shift &amp; Single Shift Converter vs. Standard SMS Converter – GSM Code to
+Unicode</b> </p> <p>Table 3B </p> <table id="GUID-F8F6822C-E5DB-5CCE-BE4F-1A044B85E085">
+<tgroup cols="7"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><colspec colname="col6"/>
+<tbody>
+<row>
+<entry><p> <b>Portuguese Locking Shift &amp; Single Shift Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b>Standard SMS Converter</b>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+<entry><p> <b/>  </p> </entry>
+</row>
+<row>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+<entry><p> </p> </entry>
+<entry><p> <b>GSM</b>  </p> </entry>
+<entry><p> <b>Unicode</b>  </p> </entry>
+<entry><p> <b> Character</b>  </p> </entry>
+</row>
+<row>
+<entry><p>0x40 </p> </entry>
+<entry><p>0x00CD </p> </entry>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x40 </p> </entry>
+<entry><p>0x00A1 </p> </entry>
+<entry><p>INVERTED EXCLAMATION MARK </p> </entry>
+</row>
+<row>
+<entry><p>0x60 </p> </entry>
+<entry><p>0x007E </p> </entry>
+<entry><p>~ TILDE </p> </entry>
+<entry/>
+<entry><p>0x60 </p> </entry>
+<entry><p>0x00BF </p> </entry>
+<entry><p>INVERTED QUESTION MARK </p> </entry>
+</row>
+<row>
+<entry><p>0x12 </p> </entry>
+<entry><p>0x00AA </p> </entry>
+<entry><p>ª FEMININE ORDINAL INDICATOR </p> </entry>
+<entry/>
+<entry><p>0x12 </p> </entry>
+<entry><p>0x03A6 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PHI </p> </entry>
+</row>
+<row>
+<entry><p>0x13 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>Ç LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>0x13 </p> </entry>
+<entry><p>0x0393 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER GAMMA </p> </entry>
+</row>
+<row>
+<entry><p>0x04 </p> </entry>
+<entry><p>0x00EA </p> </entry>
+<entry><p>ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry/>
+<entry><p>0x04 </p> </entry>
+<entry><p>0x00E8 </p> </entry>
+<entry><p>LATIN SMALL LETTER E WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x14 </p> </entry>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry/>
+<entry><p>0x14 </p> </entry>
+<entry><p>0x039B </p> </entry>
+<entry><p>GREEK CAPITAL LETTER LAMDA </p> </entry>
+</row>
+<row>
+<entry><p>0x24 </p> </entry>
+<entry><p>0x00BA </p> </entry>
+<entry><p>º MASCULINE ORDINAL INDICATOR </p> </entry>
+<entry/>
+<entry><p>0x24 </p> </entry>
+<entry><p>0x00A4 </p> </entry>
+<entry><p>CURRENCY SIGN </p> </entry>
+</row>
+<row>
+<entry><p>0x15 </p> </entry>
+<entry><p>0x221E </p> </entry>
+<entry><p>∞ INFINITY </p> </entry>
+<entry/>
+<entry><p>0x15 </p> </entry>
+<entry><p>0x03A9 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER OMEGA </p> </entry>
+</row>
+<row>
+<entry><p>0x06 </p> </entry>
+<entry><p>0x00FA </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x06 </p> </entry>
+<entry><p>0x00F9 </p> </entry>
+<entry><p>LATIN SMALL LETTER U WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x16 </p> </entry>
+<entry><p>0x005E </p> </entry>
+<entry><p>^ CIRCUMFLEX ACCENT </p> </entry>
+<entry/>
+<entry><p>0x16 </p> </entry>
+<entry><p>0x03A0 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PI </p> </entry>
+</row>
+<row>
+<entry><p>0x07 </p> </entry>
+<entry><p>0x00ED </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x07 </p> </entry>
+<entry><p>0x00EC </p> </entry>
+<entry><p>LATIN SMALL LETTER I WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x17 </p> </entry>
+<entry><p>0x005C </p> </entry>
+<entry><p>\ REVERSE SOLIDUS </p> </entry>
+<entry/>
+<entry><p>0x17 </p> </entry>
+<entry><p>0x03A8 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PSI </p> </entry>
+</row>
+<row>
+<entry><p>0x08 </p> </entry>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry/>
+<entry><p>0x08 </p> </entry>
+<entry><p>0x00F2 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x18 </p> </entry>
+<entry><p>0x20AC </p> </entry>
+<entry><p>€ EURO SIGN </p> </entry>
+<entry/>
+<entry><p>0x18 </p> </entry>
+<entry><p>0x03A3 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER SIGMA </p> </entry>
+</row>
+<row>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry/>
+<entry><p>0x09 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>0x19 </p> </entry>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p><p>0x0398 </p><p>0x19 </p><p>GREEK
+CAPITAL LETTER THETA </p></entry>
+</row>
+<row>
+<entry><p>0x1a </p> </entry>
+<entry><p>0x007C </p> </entry>
+<entry><p>| VERTICAL LINE </p> </entry>
+<entry/>
+<entry><p>0x1A </p> </entry>
+<entry><p>0x039E </p> </entry>
+<entry><p>GREEK CAPITAL LETTER XI </p> </entry>
+</row>
+<row>
+<entry><p>0x0b </p> </entry>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry/>
+<entry><p>0x0B </p> </entry>
+<entry><p>0x00D8 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>0x5b </p> </entry>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry/>
+<entry><p>0x5B </p> </entry>
+<entry><p>0x00C4 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x7b </p> </entry>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry/>
+<entry><p>0x7B </p> </entry>
+<entry><p>0x00E4 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x0c </p> </entry>
+<entry><p>0x00F4 </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0C </p> </entry>
+<entry><p>0x00F8 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH STROKE </p> </entry>
+</row>
+<row>
+<entry><p>0x1c </p> </entry>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1C </p> </entry>
+<entry><p>0x00C6 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER AE (ASH) * </p> </entry>
+</row>
+<row>
+<entry><p>0x5c </p> </entry>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x5C </p> </entry>
+<entry><p>0x00D6 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x7c </p> </entry>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x7C </p> </entry>
+<entry><p>0x00F6 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1D </p> </entry>
+<entry><p>0x00E6 </p> </entry>
+<entry><p>LATIN SMALL LETTER AE (ASH) * </p> </entry>
+</row>
+<row>
+<entry><p>0x5D </p> </entry>
+<entry><p>0x00DA </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x5D </p> </entry>
+<entry><p>0x00D1 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER N WITH TILDE </p> </entry>
+</row>
+<row>
+<entry><p>0x7D </p> </entry>
+<entry><p>0x0060 </p> </entry>
+<entry><p>` GRAVE ACCENT </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x7D </p> </entry>
+<entry><p>0x00F1 </p> </entry>
+<entry><p>LATIN SMALL LETTER N WITH TILDE </p> </entry>
+</row>
+<row>
+<entry><p>0x0E </p> </entry>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0E </p> </entry>
+<entry><p>0x00C5 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1E </p> </entry>
+<entry><p>0x00CA </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1E </p> </entry>
+<entry><p>0x00DF </p> </entry>
+<entry><p>LATIN SMALL LETTER SHARP S (GERMAN) </p> </entry>
+</row>
+<row>
+<entry><p>0x0F </p> </entry>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x0F </p> </entry>
+<entry><p>0x00E5 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>0x00C0 </p> </entry>
+<entry><p>À LATIN CAPITAL LETTER A WITH GRAVE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B41 </p> </entry>
+<entry><p>0x0041 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0E </p> </entry>
+<entry><p>0x00C1 </p> </entry>
+<entry><p>Á LATIN CAPITAL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0E </p> </entry>
+<entry><p>0x00C5 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>0x00C2 </p> </entry>
+<entry><p>Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B61 </p> </entry>
+<entry><p>0x0061 </p> </entry>
+<entry><p>LATIN SMALL LETTER A </p> </entry>
+</row>
+<row>
+<entry><p>0x1B5B </p> </entry>
+<entry><p>0x00C3 </p> </entry>
+<entry><p>Ã LATIN CAPITAL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B5B </p> </entry>
+<entry><p>0x00C4 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B1F </p> </entry>
+<entry><p>0x00CA </p> </entry>
+<entry><p>Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B1F </p> </entry>
+<entry><p>0x00C9 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER E WITH ACUTE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x00CD </p> </entry>
+<entry><p>Í LATIN CAPITAL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B49 </p> </entry>
+<entry><p>0x0049 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>0x00D3 </p> </entry>
+<entry><p>Ó LATIN CAPITAL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B4F </p> </entry>
+<entry><p>0x004F </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x00D4 </p> </entry>
+<entry><p>Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0B </p> </entry>
+<entry><p>0x011E </p> </entry>
+<entry><p>LATIN CAPITAL LETTER G WITH BREVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B5C </p> </entry>
+<entry><p>0x00D5 </p> </entry>
+<entry><p>Õ LATIN CAPITAL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B5C </p> </entry>
+<entry><p>0x00D6 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>0x00DA </p> </entry>
+<entry><p>Ú LATIN CAPITAL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B55 </p> </entry>
+<entry><p>0x0055 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER U </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0F </p> </entry>
+<entry><p>0x00E1 </p> </entry>
+<entry><p>á LATIN SMALL LETTER A WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0F </p> </entry>
+<entry><p>0x00E5 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH RING ABOVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B7F </p> </entry>
+<entry><p>0x00E2 </p> </entry>
+<entry><p>â LATIN SMALL LETTER A WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B7F </p> </entry>
+<entry><p>0x00E0 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH GRAVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B7B </p> </entry>
+<entry><p>0x00E3 </p> </entry>
+<entry><p>ã LATIN SMALL LETTER A WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B7B </p> </entry>
+<entry><p>0x00E4 </p> </entry>
+<entry><p>LATIN SMALL LETTER A WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B09 </p> </entry>
+<entry><p>0x00E7 </p> </entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B09 </p> </entry>
+<entry><p>0x00C7 </p> </entry>
+<entry><p>LATIN CAPITAL LETTER C WITH CEDILLA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B05 </p> </entry>
+<entry><p>0x00E </p> </entry>
+<entry><p>A ê LATIN SMALL LETTER E WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B05 </p> </entry>
+<entry><p>0x00E9 </p> </entry>
+<entry><p>LATIN SMALL LETTER E WITH ACUTE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x00ED </p> </entry>
+<entry><p>í LATIN SMALL LETTER I WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B69 </p> </entry>
+<entry><p>0x0069 </p> </entry>
+<entry><p>LATIN SMALL LETTER I </p> </entry>
+</row>
+<row>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>0x00F3 </p> </entry>
+<entry><p>ó LATIN SMALL LETTER O WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B6F </p> </entry>
+<entry><p>0x006F </p> </entry>
+<entry><p>LATIN SMALL LETTER O </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x00F4 </p> </entry>
+<entry><p>ô LATIN SMALL LETTER O WITH CIRCUMFLEX </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0C </p> </entry>
+<entry><p>0x011F </p> </entry>
+<entry><p>LATIN SMALL LETTER G WITH BREVE </p> </entry>
+</row>
+<row>
+<entry><p>0x1B7C </p> </entry>
+<entry><p>0x00F5 </p> </entry>
+<entry><p>õ LATIN SMALL LETTER O WITH TILDE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B7C </p> </entry>
+<entry><p>0x00F6 </p> </entry>
+<entry><p>LATIN SMALL LETTER O WITH DIAERESIS </p> </entry>
+</row>
+<row>
+<entry><p>0x1B75 </p> </entry>
+<entry><p>0x00FA </p> </entry>
+<entry><p>ú LATIN SMALL LETTER U WITH ACUTE </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B75 </p> </entry>
+<entry><p>0x0075 </p> </entry>
+<entry><p>LATIN SMALL LETTER U </p> </entry>
+</row>
+<row>
+<entry><p>0x1B13 </p> </entry>
+<entry><p>0x0393 </p> </entry>
+<entry><p>Γ GREEK CAPITAL LETTER GAMMA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B13 </p> </entry>
+<entry><p>0x0393 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER GAMMA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B19 </p> </entry>
+<entry><p>0x0398 </p> </entry>
+<entry><p>Θ GREEK CAPITAL LETTER THETA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B19 </p> </entry>
+<entry><p>0x0398 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER THETA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B16 </p> </entry>
+<entry><p>0x03A0 </p> </entry>
+<entry><p>Π GREEK CAPITAL LETTER PI </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B16 </p> </entry>
+<entry><p>0x03A0 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PI </p> </entry>
+</row>
+<row>
+<entry><p>0x1B18 </p> </entry>
+<entry><p>0x03A3 </p> </entry>
+<entry><p>Σ GREEK CAPITAL LETTER SIGMA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B18 </p> </entry>
+<entry><p>0x03A3 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER SIGMA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B12 </p> </entry>
+<entry><p>0x03A6 </p> </entry>
+<entry><p>Φ GREEK CAPITAL LETTER PHI </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B12 </p> </entry>
+<entry><p>0x03A6 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PHI </p> </entry>
+</row>
+<row>
+<entry><p>0x1B17 </p> </entry>
+<entry><p>0x03A8 </p> </entry>
+<entry><p>Ψ GREEK CAPITAL LETTER PSI </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B17 </p> </entry>
+<entry><p>0x03A8 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER PSI </p> </entry>
+</row>
+<row>
+<entry><p>0x1B15 </p> </entry>
+<entry><p>0x03A9 </p> </entry>
+<entry><p>Ω GREEK CAPITAL LETTER OMEGA </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B15 </p> </entry>
+<entry><p>0x03A9 </p> </entry>
+<entry><p>GREEK CAPITAL LETTER OMEGA </p> </entry>
+</row>
+<row>
+<entry><p>0x1B0D </p> </entry>
+<entry><p>0x000D </p> </entry>
+<entry><p>&lt;control&gt; CARRIAGE RETURN </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>0x1B0D </p> </entry>
+<entry><p>0x000D </p> </entry>
+<entry><p>CARRIAGE RETURN </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>See also</title> <p><xref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita">SMS
+Encodings and Converters Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51" xml:lang="en"><title>Structure
+of a heap</title><shortdesc>A heap consists of two lists of cells; the list of allocated cells
+and the list of free cells.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A heap simply consists of two lists of cells; one is the list of allocated
+cells and the other the list of free cells. Each list is anchored in the heap
+object.</p>
+<p>A cell consists of a cell header followed by the body of the cell itself.
+The body of the cell is the area of memory which is considered allocated.</p>
+<p>The cell header is a struct of type <codeph>RHeap::SCell</codeph> defined
+as part of the <codeph>RHeap</codeph> class in <filepath>e32std.h</filepath>.</p>
+<p>The following diagram shows a typical mix of free and allocated cells.</p>
+<fig id="GUID-A066C7F2-B6E9-5F64-8A00-F2AC5D16B585">
+<title>Example of the allocated and free cells in a heap</title>
+<image href="GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e215415_href.png" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C55D1D74-B764-5DD1-8C43-5A5138578EAC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C55D1D74-B764-5DD1-8C43-5A5138578EAC" xml:lang="en"><title>Secure Software Install SIS Tools Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the key concepts of Secure Software Install SIS Tools.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C585871E-BE82-49EF-A4B9-4340A7154264.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C585871E-BE82-49EF-A4B9-4340A7154264" xml:lang="en"><title>Limitations</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Some APIs of the Standard C Library are not implemented because of the
+constraints or limitations of Symbian platform:</p>
+<ul>
+<li><p><codeph>AF_LOCAL</codeph> sockets only support <codeph>SO_SNDBUF</codeph> and <codeph>SO_RCVBUF</codeph> in <codeph>setsockopt</codeph> and <codeph>SO_TYPE</codeph>, <codeph>SO_SNDBUF</codeph> and <codeph>SO_RCVBUF</codeph> in <codeph>getsockopt</codeph>.
+No <codeph>ioctl</codeph> commands are available.</p></li>
+<li><p><codeph>AF_LOCAL</codeph> sockets do not support <xref href="GUID-45E5490B-7951-395D-9B88-0A95ACB50C73.dita"><apiname>shutdown()</apiname></xref>.</p></li>
+<li><p>The <codeph>stdioserver</codeph> does not support per-process configurations.</p></li>
+<li><p>Signals cannot be directed at an individual thread.</p></li>
+<li><p><codeph>kill(self)</codeph>/<codeph>sigqueue(self)</codeph>/<codeph>raise()</codeph> is
+not synchronous in the current implementation.</p></li>
+<li><p>Semantics of signal delivery is different from that of *nix OSes.</p></li>
+<li><p>The <codeph>tm_tzname</codeph> in the <codeph>struct tm</codeph> is
+not updated by <xref href="GUID-C0143331-6DC4-3FEA-8BD3-5D6C2A24FD73.dita"><apiname>localtime()</apiname></xref> and <xref href="GUID-CAA7C4BC-6C35-3AAE-AD4E-B11C9B58A605.dita"><apiname>mktime()</apiname></xref>.
+This is owing to a limitation of localisation resource files in these platforms.
+The field will always be set to "UTC".</p></li>
+<li><p>On S60 emulators started in <codeph>textshell</codeph> mode, the time
+zone offset returns the wrong value. In GUI mode, the offset is set correctly.</p></li>
+<li><p>The <codeph>tm_isdst</codeph> field in the struct tm (used in <xref href="GUID-C0143331-6DC4-3FEA-8BD3-5D6C2A24FD73.dita"><apiname>localtime()</apiname></xref> and <xref href="GUID-CAA7C4BC-6C35-3AAE-AD4E-B11C9B58A605.dita"><apiname>mktime()</apiname></xref>)
+is not updated properly on the S60 3rd Edition SDK and devices; the field
+is simply set to -1.</p></li>
+<li><p><xref href="GUID-CAA7C4BC-6C35-3AAE-AD4E-B11C9B58A605.dita"><apiname>mktime()</apiname></xref> and <xref href="GUID-C0143331-6DC4-3FEA-8BD3-5D6C2A24FD73.dita"><apiname>localtime()</apiname></xref> APIs
+are about 3 times slower on the S60 3rd Edition SDK and devices, because of
+lack of native support for more efficient code that is used for S60 3rd Edition,
+Feature Pack 1 and later SDKs.</p></li>
+<li><p>In text mode <codeph>stdio</codeph>, <xref href="GUID-10B78898-E3AF-371B-A280-6F33CEDAB864.dita"><apiname>fseek()</apiname></xref> to
+the return value of <xref href="GUID-BC4F6F39-1894-329E-8157-871B841E705A.dita"><apiname>ftell()</apiname></xref> does not behave as expected.</p></li>
+<li><p>In text-mode, <xref href="GUID-7ECDC892-F515-3DF3-BCBB-00E9C639E537.dita"><apiname>fread()</apiname></xref>, <xref href="GUID-56F38DFC-0A8D-3891-9B5F-86FD2AA6729C.dita"><apiname>fwrite()</apiname></xref> and
+their siblings will take approximately twice the time compared to binary mode.
+This is because of extra code required to perform newline-translations in
+text-mode.</p></li>
+<li><p>P.I.P.S. applications built using the plug-in with this SDK, will not
+run on earlier versions of runtimes.</p></li>
+<li><p><xref href="GUID-A89FA772-80F2-39E8-AEFB-B9B4E833A1FA.dita"><apiname>stat()</apiname></xref> retrieves the modification time of a directory
+incorrectly, if it was set (by <xref href="GUID-234DE8F8-1D41-3BE0-980B-37ACF281DDA6.dita"><apiname>utime()</apiname></xref>) to an odd value.</p></li>
+<li><p>Owing to the difference in the Symbian platform model (when compared
+to UNIX -like OS), <xref href="GUID-432C9AA0-A698-3A62-95D8-CB010965F92C.dita"><apiname>fork()</apiname></xref> and <xref href="GUID-1F3AB7F6-B354-36DB-AA0C-D8F2DC89A6DD.dita"><apiname>exec()</apiname></xref> functions
+are not supported.</p></li>
+<li><p>Since <xref href="GUID-432C9AA0-A698-3A62-95D8-CB010965F92C.dita"><apiname>fork()</apiname></xref> and <xref href="GUID-1F3AB7F6-B354-36DB-AA0C-D8F2DC89A6DD.dita"><apiname>exec()</apiname></xref> are not
+supported, <xref href="GUID-A9DB6E7C-B8D6-377A-BBE6-39E0A7A09E5D.dita"><apiname>popen()</apiname></xref> is not complete. It will create a child
+process and open a pipe between a parent and a child process either in read
+or write mode. It does not copy the address space to a child.</p></li>
+<li><p>The following are the limitations with <codeph>waitpid(pid_t waitpid(pid_t
+pid, int *stat_loc, int options);</codeph></p><ul>
+<li><p>On OpenC there is no process group Ids. So, passing pid as <codeph>0</codeph> and
+less than <codeph>-1</codeph> does not work as intended.</p></li>
+<li><p>On OpenC, support is provided only for options - <codeph>WNOHANG</codeph>.
+Others are not supported.</p></li>
+<li><p>The macros which related to job control which work on the <codeph>stat_loc</codeph> do
+not work:</p><ul>
+<li><p> <codeph>WIFSIGNALED</codeph></p></li>
+<li><p><codeph>WTERMSIG</codeph></p></li>
+<li><p><codeph>WIFSTOPPED</codeph></p></li>
+<li><p><codeph>WSTOPSIG</codeph></p></li>
+<li><p><codeph>WIFCONTINUED</codeph>.</p></li>
+</ul></li>
+<li><p>On Symbian, the following additional macros that work on the <codeph>stat_loc</codeph> are
+provided:</p><ul>
+<li><p><codeph>WIFTERMINATED</codeph></p></li>
+<li><p><codeph>WTERMINATESTATUS</codeph></p></li>
+<li><p><codeph>WIFPANICED</codeph></p></li>
+<li><p><codeph>WPANICCODE</codeph></p></li>
+</ul></li>
+</ul></li>
+<li><p>For <codeph>int dup2(int oldfd, int newfd);</codeph>, the return value
+of <codeph>dup2</codeph> can be different from the one the developer expected
+it to be (<codeph>newfd</codeph>). So, the developer of <codeph>dup2</codeph> should
+use the return value of <codeph>dup2</codeph> as the new allocated fd rather
+than the one passed to <codeph>dup2 (newfd)</codeph>. According to the standard, <codeph>newfd</codeph> and
+return values are the same, if <codeph>dup2</codeph> is successful.</p></li>
+<li><p>Some of the APIs of Open C assume that a cleanup stack is created and
+there is a top-level TRAP for the current thread. All the threads created
+using <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-6C840907-C3F7-34B7-97DB-CEDBA68EA277"><apiname>RThread::Create()</apiname></xref> should create them explicitly.</p></li>
+<li><p>In case of Open C, <codeph>libc</codeph> will have its own console
+object maintained and all threads console I/O will be routed to the console.
+In case of a hybrid application, if the application creates one more console,
+then switching between these consoles will be a problem. The user may not
+be aware of this problem.</p></li>
+<li><p>In case of an emulator, the developer can configure the window size
+dynamically. But the console maintained by Open C <codeph>libc</codeph> will
+remain the same. So, if the configuration is changed, data displayed on the
+console may not be aligned properly. </p></li>
+</ul>
+<p>More detailed information about the limitations can be found in the P.I.P.S.
+API reference documentation.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-C5C30218-311C-58D9-A990-3F95642F7517" xml:lang="en"><title>Parsing
+XML DOM</title><shortdesc>This topic explains how to build a DOM tree by parsing an XML file. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before you start, you must: </p> <ul>
+<li id="GUID-B39FCCC0-8791-5234-977A-868616FF4A46"><p>understand the concept
+of <xref href="http://www.w3.org/DOM/" scope="external">Document Object Model
+(DOM)</xref>  </p> </li>
+<li id="GUID-5FEE15C3-9808-5B50-B19B-52C62CC10E46"><p>understand the architecture
+and classes of the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML
+DOM Engine</xref> component </p> </li>
+<li id="GUID-462DFB7D-1E1D-54C1-A63B-8CE73A8775B5"><p>prepare an XML file
+containing valid XML data </p> </li>
+</ul> </prereq>
+<steps id="GUID-3D797BCC-4D06-5275-9B4F-CAB51649E6D1">
+<step id="GUID-3DF73431-C215-59FD-9AE7-B4C8FDB98A1C"><cmd/>
+<info>Call the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlEnginePushL()</apiname></xref> method to
+put parser resources on the clean-up stack. </info>
+<stepxmp><codeblock id="GUID-975C0070-DD3D-58CE-908F-687659F45F76" xml:space="preserve">
+XmlEnginePushL();
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-63B2D6CC-5B11-5466-BD05-837F18D0A810"><cmd>Initialise your
+instance of the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDOMImplementation</apiname></xref> class
+by calling its <codeph>OpenL()</codeph> method. </cmd>
+<stepxmp><codeblock id="GUID-F750DC25-5702-5424-AF2F-5C5D229AB296" xml:space="preserve">
+RXMlEngDOMImplementation impl;
+impl.OpenL();
+</codeblock> </stepxmp>
+<info>The <codeph>RXMlEngDOMImplementation</codeph> instance is the DOM Engine. </info>
+</step>
+<step id="GUID-5C57654A-7B78-5E5D-90E1-94CA025B024B"><cmd/>
+<info>Initialise the DOM parser by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDOMParser::Open()</apiname></xref> method
+on its instance. </info>
+<stepxmp><codeblock id="GUID-F29FAB78-BAE3-553C-858A-6E80A76F754D" xml:space="preserve">
+RXmlEngDOMParser parser;
+parser.Open( impl );
+</codeblock> </stepxmp>
+<info>You can also have several parsers registered on a DOM Engine instance. </info>
+</step>
+<step id="GUID-70BA1E03-92D4-5A3A-9079-A00236D30923"><cmd/>
+<info>Parse the specified XML file by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDOMParser::ParseFileL()</apiname></xref> method. </info>
+<stepxmp><codeblock id="GUID-3E26315C-F901-5350-9936-11A6045E7FE7" xml:space="preserve">
+RXmlDocument myDoc = parser.ParseFileL( "tutorial.xml" );
+</codeblock> </stepxmp>
+<info>The <codeph>myDoc</codeph> object is a DOM tree containing the data
+from the XML file. </info>
+</step>
+<step id="GUID-97FC75A5-A4EA-55DC-841B-745E391E2C90"><cmd/>
+<info>Use the created DOM tree. </info>
+<info>For example, refer to the <xref href="GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita">Searching
+a DOM Tree using XPath</xref> to search for specific elements or attributes
+in the DOM tree. </info>
+</step>
+<step id="GUID-9935393A-1359-5708-A9F3-B779F2E2B418"><cmd/>
+<info>Free your resources as necessary. </info>
+<substeps id="GUID-CB3D86A2-561D-5281-9DA4-AA8C70A0F498">
+<substep id="GUID-6D1DC97D-5068-5FCD-AD69-510778348899"><cmd>Close the parser
+and the engine by calling their <codeph>Close()</codeph> functions. </cmd>
+<stepxmp><codeblock id="GUID-53680EE0-8291-5C9A-9A7A-04437B1A0836" xml:space="preserve">
+parser.Close();
+impl.Close();
+</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-1C28D8BE-D03B-5D9B-BCC7-355FB2A6A93C"><cmd/>
+<info>Close the XML library by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlPopAndClose()</apiname></xref> method.
+This method also removes the serialisation resources from the clean-up stack. </info>
+</substep>
+<substep id="GUID-BCD8662A-7C1E-5239-87C9-E3917D79C326"><cmd/>
+<info>Perform any other clean-up operations. </info>
+</substep>
+</substeps>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-92C2317A-57B8-558E-984B-B10FD0404981.dita"><linktext>Searching
+a DOM Tree using XPath</linktext></link>
+<link href="GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E.dita"><linktext>Serialising
+XML DOM</linktext></link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e205684_href.png has changed
Binary file Symbian3/SDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e295130_href.png has changed
Binary file Symbian3/SDK/Source/GUID-C5E7D88B-C73D-56D8-A8F4-2393E5EEDC8E-master.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C5E99BB6-0CBE-51AE-882D-37D004106A2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C5E99BB6-0CBE-51AE-882D-37D004106A2F" xml:lang="en"><title>ConsoleApp:
+Simple Console Program</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bc020c79-5785-42ef-9629-a1f300820399.zip" scope="external">ConsoleApp.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bc020c79-5785-42ef-9629-a1f300820399.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Description</title> <p> <filepath>ConsoleApp</filepath> is
+a simple console-based STDLIB program. It converts quantities from one unit
+of measurement into another. The user is prompted for input. Conversion information
+is provided by the file <filepath>slunits.dat</filepath>. </p> </section>
+<section><title>Usage</title> <p>Enter the type of unit you want to convert
+from, and then the type of unit you want to convert to. For example, to convert
+from inches to centimetres, enter "in", then "cm". The program replies with
+the ratio of inches to centimetres, and of centimetres to inches. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C5F4CF0F-EC1B-595D-8C95-41891CB5930D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C5F4CF0F-EC1B-595D-8C95-41891CB5930D"><title>resource</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>resource</codeph> <codeph> [-k] [-v]</codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>This command builds the resource files, bitmaps and application information files for a component by calling the <codeph>RESOURCE</codeph> targets in makefiles generated by <filepath>makmake</filepath>.</p> <p>These resources are created implicitly when <codeph>abld
+          target</codeph> (and thus, <codeph>abld build</codeph>) is called. The resources will not be regenerated if they have later datestamps than their source dependencies.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C5F9AAD3-5183-57E5-A33B-032DE3C063AE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-C5F9AAD3-5183-57E5-A33B-032DE3C063AE" xml:lang="en"><title>Functions</title><abstract><p>The following functions can be used in PKG file: </p> <ul>
+<li id="GUID-D0F2AEDF-9A04-512A-B0EB-913ECDE5FD09"><p> <codeph>package()</codeph>:
+Tests for the existence of an installed package. </p> </li>
+<li id="GUID-1D19648D-F906-525A-B25E-42A84D481425"><p> <codeph>exists()</codeph>:
+Tests for the existence of a file or a non-root folder. </p> </li>
+<li id="GUID-63990301-2907-5265-8EE0-8E93AE7B06D1"><p> <codeph>appprop()</codeph>:
+Retrieves the properties from a registry entry. </p> </li>
+<li id="GUID-61E19BBA-8DD1-5AAF-ACBE-6705F7E4F2B4"><p> <codeph>version()</codeph>:
+Tests for the existence of an installed package version. </p> </li>
+</ul></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>package ()</title> <p>The <codeph>package()</codeph> function
+returns true if a package with the specified UID is installed, returns false
+otherwise. </p> <p>The following example code installs <filepath>foo.txt</filepath> if
+a package exists with package UID <codeph>0x11223344</codeph>. </p> <codeblock id="GUID-49A08579-B63B-5F62-8C4E-33D2BCD30F67" xml:space="preserve">IF package(0x11223344)
+"foo.txt"-"c:\foo.txt"
+ENDIF</codeblock> </section>
+<section><title>exists()</title> <p>In the following example code, the <codeph>exists()</codeph> function
+installs the <filepath>exists.txt</filepath> file, if <filepath>test.txt</filepath> exists. </p> <codeblock id="GUID-2B7215C3-94AF-5440-A721-94A0E9559440" xml:space="preserve">if exists("c:\test.txt")    
+    "text\exists.txt"-"!:\private\01234567\exists.txt"
+endif</codeblock> </section>
+<section><title>appprop()</title> <p>The first parameter to the <codeph>appprop()</codeph> function
+must be the package UID of the package file, in which the property is defined.
+The second parameter must be the property ID (<codeph>propid</codeph>) for
+which the property is to be retrieved. </p> <p>The following example code
+tests the capabilities of another PKG file on which it is dependent: </p> <codeblock id="GUID-B74003A5-FACD-5BD6-8EF1-12309D757904" xml:space="preserve">;Dependencies
+(0x10000003), 1, 2, 3, {"Depend-EN"}
+
+if (appprop(0x10000003,0) = 1)
+   "text\appprop1.txt"-"!:\Documents\appprop1.txt" 
+elseif (appprop(0x10000003,0) = 2)
+   "text\appprop2.txt"-"!:\Documents\appprop2.txt" 
+endif</codeblock> </section>
+<section><title>version()</title> <p>The <codeph>version ()</codeph> function
+returns true if the specified package exists on the Symbian device and its
+version satisfies the condition specified by the function parameters. Otherwise,
+it returns false. </p> <p>In the following example, if the package with pUID
+0x10000042 is installed on the device and its version is less than 1.1.1,
+the condition returns true. If the package does not exist or the package version
+does not satisfy the condition, it returns false: </p> <codeblock id="GUID-B328B82C-27F2-5BD0-BEC3-FCDAB68BDE56" xml:space="preserve">if version(0x10000042,&lt;,1,1,1)
+  "text\config.txt"-"!:\private\10000042\import\InstTest\config.txt"
+endif
+</codeblock> </section>
+</refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C6086C67-963B-455F-8BA6-58DC568084F0_d0e53206_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF"><title>Querying a database</title><shortdesc>This tutorial shows you how to create a simple SQL database query. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-0A238212-37C9-5B4B-A449-F8C81CE971A8"><title>Introduction</title> <p>This tutorial shows you how to wrap a SQL query statement into an <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object to query a database. </p> <p>The SQL statement used for the tutorial is shown here: </p> <p><userinput><parmname>SELECT</parmname> <cmdname>name</cmdname>  <parmname>FROM</parmname> <cmdname>countries</cmdname>  <parmname>WHERE</parmname> <cmdname>population &gt; 10</cmdname> </userinput> </p> <p>The (<codeph>SELECT</codeph>) results of the query will be the value in the '<codeph>name</codeph>' column <codeph>FROM</codeph> the '<codeph>countries</codeph>' table <codeph>WHERE</codeph> the value of the '<codeph>population</codeph>' column of the same record is <codeph>&gt;</codeph> the value specified. </p> </section> <section><title>Procedure</title> <ol id="GUID-2C39BABE-F2D4-510A-A406-D2C48412B6F8"><li id="GUID-56D39707-7D55-5843-8966-36223BB20EFC"><p>Prepare the Statement: </p> <p>The steps to prepare a SQL statement are shown here. </p> <ol id="GUID-8B003014-94BB-5B4E-9D9C-8098A3642EA6"><li id="GUID-A988E274-8B21-5DCB-A616-06CD3C6F5680"><p>Set up some constants used by the SQL statement object to define the SQL query: </p> <p><codeblock id="GUID-37E8467F-7AFC-5DBA-AF29-1A910E5CABC5" xml:space="preserve">_LIT(kName,"name");
+_LIT(kPopulation,"population");
+_LIT(kVal,":Value");
+_LIT(kQueryString,"SELECT name FROM countries WHERE population &gt; :Value");</codeblock> </p> <p>This defines the query parameters. </p> </li> <li id="GUID-39F138F2-591F-586E-A06F-91981A1F6388"><p>Instantiate the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> SQL statement: </p> <p><codeblock id="GUID-41EB4CD0-E131-5C85-B799-5940853B9F60" xml:space="preserve">RSqlStatement myStatement;</codeblock> </p> </li> <li id="GUID-5FD16C7C-591D-5006-A177-C899314AA798"><p>Define the indices to be used in the search: </p> <p><codeblock id="GUID-351298BC-348F-57E4-BC30-E6706385D8AA" xml:space="preserve">TInt nameIndex = myStatement.ColumnIndex(kName); 
+TInt populationIndex = myStatement.ColumnIndex(kPopulation);</codeblock> </p> </li> <li id="GUID-17A647B3-6E8C-54FB-A21E-23425AD343FD"><p>Set the 32-bit integer value for the SQL parameter 'value': </p> <p><codeblock id="GUID-838D0598-1E98-57E8-AC66-68AA590EDFBA" xml:space="preserve">TInt parameterIndex = myStatement.ParameterIndex(kVal);
+err = myStatement.BindInt(parameterIndex,10);</codeblock> </p> <p>The SQL parameter to which the integer is being assigned is identified by the constant <codeph>kVal</codeph> from: </p> <p><codeblock id="GUID-71AB4003-65D7-5035-ACFB-E106ACF2AB15" xml:space="preserve">_LIT(kVal,":Value");
+...
+...WHERE population &gt; :Value")  </codeblock> </p> <p>The parameter plus constant, along with other parts of the statement, are converted into: </p> <p>in SQL syntax. </p> </li> <li id="GUID-AEBF05BB-08E7-5628-8B5F-8CD30F08D638"><p>Prepare the statement: </p> <p><codeblock id="GUID-C518EA02-81AC-5B93-9FAF-1BDC987985DB" xml:space="preserve">TInt err;
+err = myStatement.Prepare(countriesDatabase,kQueryString);</codeblock> </p> <p>This creates a parameterised SQL statement executable. </p> </li> </ol> </li> <li id="GUID-1153684C-697C-5C84-A15C-99C96820C8FB"><p>Run the SQL query: </p> <ol id="GUID-186BD930-F9A1-5244-BEA8-3774DC6D3F91"><li id="GUID-1D0B5C50-E1C6-51DC-8CCE-2C2B4C33F7F6"><p>Search the records until a match is found: </p> <p><codeblock id="GUID-DEF39928-2DBB-5017-A47C-1BB6475B44B7" xml:space="preserve">while((err = myStatement.Next()) == KSqlAtRow)
+ {
+  Do something with the query results
+ }</codeblock> </p> <p>Next() fires the executable SQL statement and stops at and returns the matched record. </p> <p>Do something if no results are found. </p> <p><codeblock id="GUID-ADD04732-1D9C-5716-B885-14D92D341149" xml:space="preserve">if(err == KSqlAtEnd)
+    &lt;OK - no more records&gt;;
+else
+    &lt;process the error&gt;;</codeblock> </p> </li> </ol> </li> <li id="GUID-26B8C900-50D3-59D2-BACD-61C825B2A3A4"><p>The query is done and you have the results. In this section we look at a simple way to do something with the results and we close the SQL statement object. </p> <ol id="GUID-79A55F5A-E42B-5AA2-B451-080E36100E0A"><li id="GUID-5F24A346-F2DA-5544-9AB2-DD046E4D80DD"><p>Get the results of the search: </p> <p><codeblock id="GUID-86F158DF-88FF-5128-9B6E-461D6C3163D7" xml:space="preserve">TPtrC myData;
+myData = myStatement.ColumnTextL(nameIndex);
+RDebug::Print(_L("Name=%d\n"), myData);</codeblock> </p> </li> <li id="GUID-0C40380F-9A06-5546-A366-33EBAAA5E9D6"><p>Close the SQL search statement: </p> <p><codeblock id="GUID-1D856776-5557-57EC-8047-270A751405B1" xml:space="preserve">err = myStatement.Close(); </codeblock> </p> <p>When the database search is finished the object should be closed to free up resources. </p> </li> </ol> </li> </ol>  </section> <section id="GUID-8F3A39B6-6514-5A48-BE2E-7893D7625A9C-GENID-1-6-1-20-1-1-6-1-1-10-1-8-1-7-1-3-3"><p>Now that you have performed a basic database query you can start thinking about more advanced querying options. The following will show you how: </p> <ul><li id="GUID-3F4608F9-92E9-52AA-8843-7535688A0D57"><p> <xref href="GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita">Querying Databases: Basic</xref>  </p> </li> <li id="GUID-02919F4F-2F55-5446-9E5B-A1A8CBE9D017"><p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a buffer</xref>  </p> </li> <li id="GUID-2A715BF4-6BE3-50A0-8F46-DBD28C1494A7"><p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita">Reading to memory</xref>  </p> </li> <li id="GUID-A4C14656-EE85-53B8-8859-F7F56BC49004"><p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a data stream</xref>  </p> </li> </ul> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link><linktext/></link><link href="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita"><linktext>Inserting a row into a
+                table</linktext> </link> <link href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita"><linktext>Deleting rows from a
+                table</linktext> </link> <link href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita"><linktext>Reading to a
+                buffer</linktext> </link> <link href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"><linktext>Reading to memory</linktext> </link> <link href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita"><linktext>Reading to a data
+                stream</linktext> </link> <link href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita"><linktext>Writing to a data
+                stream</linktext> </link> <link href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita"><linktext>Scalar queries</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C60DC070-572B-5960-B394-550426FDB909.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C60DC070-572B-5960-B394-550426FDB909" xml:lang="en"><title> Advanced
+Pointer Tutorial</title><shortdesc>This tutorial provides step-by-step instructions and sample code
+to help you write applications using advanced pointers. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref>. <b>Target
+audience</b>: Application developers. </p>
+<section><title>Required background </title> <p>This topic builds on the material
+in the following topics: </p> <ul>
+<li id="GUID-C4209FBD-3860-5F4B-8458-87D22D483953"><p><xref href="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita">Advanced
+Pointer Overview</xref>  </p> </li>
+<li id="GUID-9D3C3B31-F43A-5201-A1EC-A1F2848CFF43"><p><xref href="GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita">Advanced
+Pointer States and Event Communication</xref>  </p> </li>
+</ul> </section>
+<section><title>Using advanced pointers</title> <p>This topic covers the following: </p> <ul>
+<li id="GUID-C3AD43AA-09C0-5BA2-8496-5B87D40C89F5"><p><xref href="GUID-C60DC070-572B-5960-B394-550426FDB909.dita#GUID-C60DC070-572B-5960-B394-550426FDB909/GUID-8CBE862B-0C1D-5088-89B7-9B3EC898E4FC">Enabling multi-touch for a window</xref>  </p> </li>
+<li id="GUID-177323F2-55C6-56D9-B3D2-A8DDACF69E10"><p><xref href="GUID-C60DC070-572B-5960-B394-550426FDB909.dita#GUID-C60DC070-572B-5960-B394-550426FDB909/GUID-C026DAB9-C11C-5D29-A1EA-6730E914250F">Getting Z coordinates from TPointerEvent</xref>  </p> </li>
+<li id="GUID-91CEA92C-A692-5853-96F0-625A76B7DC8D"><p><xref href="GUID-C60DC070-572B-5960-B394-550426FDB909.dita#GUID-C60DC070-572B-5960-B394-550426FDB909/GUID-B7057F69-191F-5AA4-8C61-EBECE66D92F6"> Pinch zooming</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-8CBE862B-0C1D-5088-89B7-9B3EC898E4FC"><title>Enabling multi-touch
+in a window</title> <ol id="GUID-210D17A8-4869-5F9B-B71C-672101AC591C">
+<li id="GUID-81A2AC5C-7837-5216-8F47-FC5959C27522"><p> <xref href="GUID-637F82AF-0CF9-3C85-834D-7C1A0866DF87.dita"><apiname>RWindow</apiname></xref> provides
+a handle to a standard window. Call <codeph>RWindow</codeph> to create an
+instance of a window. </p> <codeblock id="GUID-0E31C3F6-3719-5F16-9F74-C405850604B8" xml:space="preserve">
+RWindow window(ws);
+
+User::LeaveIfError(window.Construct(wg, reinterpret_cast&lt;TUint32&gt;(&amp;wg) + 1));
+</codeblock> </li>
+<li id="GUID-B67D3702-1A8F-5C6A-AB0F-FEA7C4D04A07"><p>Call <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita#GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79/GUID-05293539-F1B0-3C7D-BB14-3FD42F23D5C8"><apiname>RWindow::EnableAdvancedPointers()</apiname></xref> to
+enable advanced pointers. Then call <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita#GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34/GUID-4E02165A-DFCC-3D18-BB18-18726B28E90A"><apiname>RWindowBase::Activate()</apiname></xref> to
+display the window and enable the window to receive events. <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> inherits
+from <xref href="GUID-1460DD8F-9AA1-3B99-8FFD-F309959CCA34.dita"><apiname>RWindowBase</apiname></xref>, so you can call the <codeph>Activate()</codeph> function
+on <codeph>RWindow</codeph>. </p> <codeblock id="GUID-DB2FB570-2BB0-5C5F-9E4F-076D6A0E469E" xml:space="preserve">
+window.EnableAdvancedPointers();
+window.Activate();
+</codeblock> <p>When an application needs to receive advanced pointer events
+in a window, it must call <codeph>RWindowBase::EnableAdvancedPointers()</codeph> for
+the window <i>before</i> it is activated. </p> <p>If advanced pointers are
+not enabled for a window, it receives only standard <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita"><apiname>TPointerEvent</apiname></xref> information
+from a single pointer with no pressure and proximity data. The single pointer
+environment rules describe the way in which pointer events coming from many
+pointers in the multi-pointer model are transformed into events of one pointer.
+They are necessary to ensure that old single-pointer applications work in
+a multi-touch environment intuitively and as expected by the user. </p> <p>However,
+the new <codeph>TPointerEvent</codeph> types, <xref href="GUID-239D0A8B-2759-321D-AD48-976E80192239.dita"><apiname>EEnterCloseProximity</apiname></xref>, <xref href="GUID-8C6264B4-5E19-33A7-92B0-BB79C871BEC7.dita"><apiname>EExitCloseProximity</apiname></xref>, <xref href="GUID-F02DB96E-1541-3223-9B7B-79D45840DB7B.dita"><apiname>EEnterHighPressure</apiname></xref> and <xref href="GUID-15B5991C-B075-3110-B0A4-540EC282AA56.dita"><apiname>EExitHighPressure</apiname></xref>, are delivered to all windows,
+even to those that do not enable advanced pointers. </p> </li>
+</ol> </section>
+<section id="GUID-C026DAB9-C11C-5D29-A1EA-6730E914250F"><title>Getting Z coordinates
+from TPointerEvent</title> <ol id="GUID-4CC2271D-1798-51B3-9A9D-E7E0B9A33DAE">
+<li id="GUID-184B5B63-4EFC-55CD-8D1F-E015EEBACBE2"><p>Call <xref href="GUID-1FFA0073-3D83-388E-A824-08C31F90CC54.dita#GUID-1FFA0073-3D83-388E-A824-08C31F90CC54/GUID-E961DA4D-AD38-31F0-88DD-A07D36346DCB"><apiname>TPointerEvent::AdvancedPointerEvent()</apiname></xref> on
+a <codeph>TPointerEvent</codeph> to return a pointer to a <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita"><apiname>TAdvancedPointerEvent</apiname></xref>. </p> <codeblock id="GUID-6E81680A-3070-546B-B575-49EA9E34FAF9" xml:space="preserve">
+TZType aZType;
+TPointerEvent&amp; aPointerEvent;
+TInt* aZ; 
+TInt* aPoint3D;
+
+TAdvancedPointerEvent *advancedP = aPointerEvent.AdvancedPointerEvent();
+</codeblock> <p> <codeph>TPointerEvent</codeph> is a struct that contains
+details of a pointer event. <codeph>TZType</codeph> is a struct provided by
+the programmer containing members to hold proximity, pressure, and "proximity
+and pressure" data. </p> </li>
+<li id="GUID-ABA8FA09-5F57-51BC-8CAE-43649B5ED6D3"><p>Now we need to test
+whether the pointer event contains advanced pointer data. If it is not an
+advanced pointer, the code leaves. </p> <p>If it is an advanced pointer, we
+call functions to detect proximity, pressure, "proximity and pressure" data
+and coordinates. </p> <codeblock id="GUID-DF109643-2564-51A0-B0F6-33BF4DA1F6E3" xml:space="preserve">
+if(!advancedP)
+    {
+    // The TPointerEvent isn't an instance of TAdvancedPointerEvent
+    User::Leave(KErrArgument);
+    }
+
+switch(aZType)
+    {
+    case EZTypeProximity:
+        aZ = advancedP-&gt;Proximity();
+        aPoint3D = advancedP-&gt;Proximity3D(); 
+        break;
+    case EZTypePressure:
+        aZ = advancedP-&gt;Pressure();
+        aPoint3D = advancedP-&gt;Pressure3D();
+        break;
+    case EZTypeProximityAndPressure:
+        aZ = advancedP-&gt;ProximityAndPressure();
+        aPoint3D = advancedP-&gt;ProximityAndPressure3D();
+        break;
+    default: 
+        User::Leave(KErrArgument);
+        break;
+    }
+</codeblock> <ul>
+<li id="GUID-40C01884-AC86-5882-935D-2EC2E27C9004"><p> <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-0ED4B1CC-0655-3246-8645-AAC9E0C27298"><apiname>TAdvancedPointerEvent::Proximity()</apiname></xref> returns
+the proximity. </p> </li>
+<li id="GUID-16A9A86B-A837-5E43-BB3A-F5A04A7F4552"><p> <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-15DEBFBF-7B7D-3FCF-9929-C973824A5FD3"><apiname>TAdvancedPointerEvent::Pressure()</apiname></xref> returns
+the pressure. </p> </li>
+<li id="GUID-3E614890-C317-596E-A5B9-FD76426DBD12"><p> <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-114AE77E-D0BD-321E-BFCB-1388B35582EC"><apiname>TAdvancedPointerEvent::ProximityAndPressure()</apiname></xref> returns
+the proximity and pressure combined. </p> </li>
+<li id="GUID-6F62C0D1-FAE4-5F8F-B451-68ABA404A369"><p> <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-E5AA7737-D217-3FDE-9E4D-AAA7F5D2C300"><apiname>TAdvancedPointerEvent::
+Position3D()</apiname></xref> returns the proximity and the X, Y and Z coordinates. </p> </li>
+<li id="GUID-5AD1811D-BCBF-5A44-B6E7-EB71BF254BCA"><p> <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-2F30A8F5-75BA-3FE3-84B7-3C772ED75857"><apiname>TAdvancedPointerEvent::Pressure3D()</apiname></xref> returns
+the pressure and the X and Y coordinates. </p> </li>
+</ul> <p>Proximity is <i>always</i> negative and pressure is <i>always</i> positive.
+Internally they are combined together as a Z coordinate. When Z &gt; 0, the proximity
+is 0 and the Z value represents the pressure. When Z &lt; 0, the pressure
+is 0 and the Z value represents the proximity. Some APIs use only a Z coordinate
+(such as the threshold getters and setters and <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-114AE77E-D0BD-321E-BFCB-1388B35582EC"><apiname>TAdvancedPointerEvent::ProximityAndPressure()</apiname></xref>).
+In these, the Z coordinate is interpreted in terms of pressure and proximity. </p> </li>
+</ol> <fig id="GUID-7A49B143-5458-5916-B937-55D98B77BB2C">
+<title> Relationships between the pointer proximity, pressure and Z      
+       coordinate            </title>
+<image href="GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e170634_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-B7057F69-191F-5AA4-8C61-EBECE66D92F6"><title>Pinch zooming</title> <p>This
+example shows an easy way to pinch zoom an image when the screen receives
+pointer events from two pointers. There are two functions in this code that
+must be implemented by the programmer: <codeph>BitmapCoordinates()</codeph> and <codeph>MoveBitmap()</codeph>.
+They are not included in the example because they involve complex calculations
+that are not related to advanced pointers. </p> <p>The high-level steps to
+perform pinch zooming are: </p> <ol id="GUID-AEF3917C-AAFE-5C25-9609-396D08478AC0">
+<li id="GUID-7839E665-C4E1-59C8-BA89-22A62615EFA3"><p>Define the coordinates,
+equivalent to the given on-screen coordinates. In the code example, this is
+done using the function <codeph>BitmapCoordinates()</codeph>. </p> </li>
+<li id="GUID-FC4B1BDA-8120-53C9-9C88-BEFEF1AD54B4"><p>Define the ID of the
+pointer by using <xref href="GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023.dita#GUID-FADA3278-FF8B-308F-90AD-3DCF8911A023/GUID-67593D7E-CE40-303F-B847-81D6FC0578B1"><apiname>TAdvancedPointerEvent::PointerNumber()</apiname></xref>.
+If the device can handle two pointers (two fingers) at the same time, their
+numbers are 0 and 1. The pointer number enables you to distinguish a given
+pointer from other pointers. </p> </li>
+<li id="GUID-1E8F7D23-EEAD-5EA5-8863-276076D6B54E"><p>For each pointer assign
+its coordinates to a local variable. We assume there are only two pointers
+handled by the system here. </p> </li>
+<li id="GUID-E44B3D9B-560A-5959-996D-A63CBD4C3786"><p>Use the <codeph>MoveBitmap()</codeph> function
+to achieve the zoom effect. </p> <codeblock id="GUID-D85CCFDD-8F65-530A-ACD7-93DD1D435FC6" xml:space="preserve">
+/**
+Receives pointer events from two pointers to perform Pinch Zoom of the image.
+Function will finish when EButton1Up is received for any of the pointers.
+@param aPointer1    Coordinates of pointer number 1 when zoom is started
+@param aPointer2    Coordinates of pointer number 2 when zoom is started
+*/
+
+void PinchZoom(TPoint aPointer1, TPoint aPointer2)
+    {
+    TPoint actualP1 = aPointer1;
+    TPoint actualP2 = aPointer2;
+    
+    // translate on-screen pointer coordinates to coordinates of displayed bitmap
+    TPoint bitmapCatching1 = BitmapCoordinates(aPointer1);
+    TPoint bitmapCatching2 = BitmapCoordinates(aPointer2);
+    
+    TBool repaint = EFalse;
+                                
+    while (ETrue)
+        {
+        TAdvancedPointerEvent event = GetNextPointerEvent();
+        
+        if (event.iType == TPointerEvent::EDrag)
+            { 
+            if (event.PointerNumber() == 1)
+                { 
+                actualP1 = event.iPosition;
+                repaint = ETrue;
+                }
+            else if (event.PointerNumber() == 2)
+                {
+                actualP2 = event.iPosition;
+                repaint = ETrue;
+                }
+            }
+        else if (event.iType == TPointerEvent::EButton1Up)
+            {
+            break;
+            }
+        
+        if (repaint)
+            {
+            // move bitmap on the screen in the way that
+            // bitmapCatching1 point of the bitmap will be displayed at actualP1 screen coordinate,
+            // bitmapCatching2 point of the bitmap will be displayed at actualP2 screen coordinate.
+            MoveBitmap(bitmapCatching1, actualP1, bitmapCatching2, actualP2);
+            repaint = EFalse;
+            }
+        }
+    }
+</codeblock> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita"><linktext>Advanced
+Pointer                 Overview</linktext></link>
+<link href="GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita"><linktext>Advanced
+Pointer States and                 Event Communication</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C61A6E8E-F295-53B4-ACC6-CFE1D9117895.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C61A6E8E-F295-53B4-ACC6-CFE1D9117895" xml:lang="en"><title>Version
+Handling Overview</title><shortdesc>Encapsulates version information.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4FD51AA8-991F-4996-BB8A-1AEF89ECAFF6"><title>Description</title> <p>It can be useful for
+components that provide APIs to be able to report the version of the interface.
+For example, many of the Symbian servers do this. Version information is made
+of three parts:</p> <ul>
+<li id="GUID-D5FB5D3E-5321-566C-8BFB-7D3873000CA9"><p>major version number </p> </li>
+<li id="GUID-DB5357A4-BDE5-50F0-8C17-59F971A81941"><p>minor version number </p> </li>
+<li id="GUID-52FDCD8C-5E0E-5C55-B0EC-1BC9FEA0BACA"><p>build number </p> </li>
+</ul> <p>This is encapsulated in <xref href="GUID-D82DEC7A-71C2-3004-BFC2-C82C009A2715.dita"><apiname>TVersion</apiname></xref>. A string representation
+of this information is encapsulated in <xref href="GUID-01604C97-E5DB-3747-A40C-5B9804645245.dita"><apiname>TVersionName</apiname></xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C61B979A-921A-5756-8D7E-691C3DDD3437.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C61B979A-921A-5756-8D7E-691C3DDD3437"><title>Sharing databases overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Provides access to a server that allows databases to be accessed by multiple clients.</p> </section> <section><title>Description</title> <p>The API has two key concepts: DBMS server session, and database change notifier. </p> <p><b>DBMS server session</b> </p> <p>A session with the DBMS server allows suitable databases to be shared with read/write access by multiple clients. Note that a session can be used to open any number of databases, and that if write access is required by one client, then all clients of that database must use the DBMS server.</p> <p>The DBMS server session is provided by <xref href="GUID-3B846E0B-F161-3C5F-939B-4F4078AF9D95.dita"><apiname>RDbs</apiname></xref>.</p> <p><b>Database change notifier</b> </p> <p>Clients can be notified of changes (such as transactions committed or rolled back, database closed or recovered) to shared databases through <xref href="GUID-53AB4535-A859-3A8C-8344-53865B2FE0B4.dita"><apiname>RDbNotifier</apiname></xref>.</p> </section> <section><title>See also</title> <p><xref href="GUID-EACA05F0-7291-535C-82BC-16DF3AAA417E.dita">Interface to DBMS databases overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C642BA79-0E9B-5C62-9DC7-C64759830CD4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C642BA79-0E9B-5C62-9DC7-C64759830CD4" xml:lang="en"><title>Dynamic
+buffers versus descriptors, arrays and heap cells</title><shortdesc>Explains the difference between various types of buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The essential difference between dynamic buffers and more straightforward
+means of storing binary data is that C arrays and descriptors provide essentially
+non-extensible buffers. Any attempt to write beyond the end of a C array results
+in undefined (and usually disastrous) consequences. Any attempt to write beyond
+the end of a descriptor results in a panic.</p>
+<p>Heap cells may be extended, but not without limit; it may be impossible
+to extend a heap cell further, because the heap is exhausted, or too fragmented
+to permit the extension. In addition, if heap cell re-allocation results in
+movement of the cell, re-allocation can be unduly expensive. If re-allocation
+is undesirable, then a buffer could be extended by allocating a new segment
+in a new allocation cell. Segmented buffers have this behaviour: flat buffers
+use re-allocation alone.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e313865_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C668AEF1-B7E2-53BB-A7EF-B92CA253DE2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C668AEF1-B7E2-53BB-A7EF-B92CA253DE2F" xml:lang="en"><title>Preventing
+closure of a handle</title><shortdesc>This document describes how to make a handle not closable.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A handle may be marked as not closable. This is an obscure but important
+property of handles and their associated Kernel objects.</p>
+<p>A handle is marked as not closable when the handle-number has the enumerator <codeph>CObjectIx::ENoClose</codeph> ORed
+into it. For example, the current thread is always marked as not closable.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C670D31C-82A7-519C-8506-3C4B99294B21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C670D31C-82A7-519C-8506-3C4B99294B21"><title>Bluetooth Security Manager overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Enables Bluetooth services to set appropriate security requirements that incoming connections to that service must meet. Security settings are simply whether authentication, authorisation, and/or encryption are required or not. </p> <p>Note that the API only deals with incoming connections: for outgoing services, see <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">How to use security on outgoing sockets</xref>. </p> </section> <section><title>Architectural relationships</title> <p>The API uses the <xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">client/server</xref> framework. The API provides <codeph>R</codeph> classes that send requests to a server process that stores and manages security information. </p> </section> <section><title>Description</title> <p>Before using the security manager, clients must open a session to it using <xref href="GUID-B7CBABF9-93A1-3275-9CB0-CDF8A6606BB1.dita"><apiname>RBTMan</apiname></xref>, and then a subsession using <xref href="GUID-D536FA83-2535-3BF2-AC0D-EA0C7CA806BA.dita"><apiname>RBTSecuritySettings</apiname></xref>. </p> <p>A security settings object, <xref href="GUID-BC29B643-2CE8-30C1-BF41-4D2B5585DC81.dita"><apiname>TBTServiceSecurity</apiname></xref>, is used to set whether authentication, authorisation, and/or encryption are required. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C676C4E6-93AF-59E9-886D-74D59F154490.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C676C4E6-93AF-59E9-886D-74D59F154490" xml:lang="en"><title>X.509
+and PKIX</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A certificate consists of a public key together with some identifying information,
+all of which is signed with a Certificate Authority's private key. Different
+certificate specifications elaborate on this in different ways with varying
+syntax, encoding rules and processing requirements. </p>
+<p>X.509 is currently the dominant specification and is used by TLS, S/MIME
+and IPSEC. In addition to this certificate type the Symbian platform also
+provides support for and implements WTLS certificates: this page deals with
+X.509, for information on WTLS see <xref href="GUID-A636C1B3-8AB2-52D7-BB19-4CC93F4BDD97.dita">WTLS
+Certificates</xref>. </p>
+<section><title>The need for profiles in X.509</title> <p>The X.509 specification
+alone is not restrictive or specific enough to form the basis of an implementation
+of a certificate management component. Realisation of this fact has led to
+the creation of a set of mostly incompatible profiles. </p> <p>While X.509
+defines an extensible syntax for all the data structures required to perform
+certificate management, a profile adds three things: </p> <ul>
+<li id="GUID-5399F944-9BDA-5325-9E0D-93F189287A13"><p>a restriction on the
+sorts of data structures that an implementation is required to understand </p> </li>
+<li id="GUID-9276E4DF-0B64-5D16-A9A0-CD7D58E67F09"><p>a requirement that certain
+specific sorts of data structure be present, so an implementation may rely
+on their presence </p> </li>
+<li id="GUID-A16903C7-911F-531C-8583-D8B8EF7C387D"><p>a clear definition of
+the behaviour of a certificate management component, that is, a specification
+of what it is supposed to do with the data structures involved </p> </li>
+</ul> <p>The best example of this is seen in certificate extensions. X.509
+defines the syntax of a series of extension types, and permits new extensions
+to be defined using object identifiers. It does not require the presence of
+any extensions and does not clearly indicate what it means to support a particular
+extension. Thus an implementation cannot know which extensions will be present,
+or exactly what to do with them. A profile like PKIX defines a set of extensions
+that a PKIX-compliant certificate management component must be able to deal
+with, which extensions can be assumed to be present, and a definition of what
+it means to deal with them. </p> <p>The distinction between X.509 and its
+profiles is largely one of syntax versus behaviour: X.509 defines the syntax
+of the objects, and the profile defines how the presence and values of objects
+affects the behaviour of certificate management. In addition, a profile may
+define extra pieces of syntax, specific to the application for which it is
+designed. </p> </section>
+<section><title>Profile support in Certman</title> <p>Certificate Management
+implements X.509 along with one profile, the PKIX profile, defined in RFC
+3280. Its design attempts to incorporate the distinction between X.509 and
+its profiles, enabling further additions to be made to the X.509 part without
+affecting any profiles, and enabling further profiles to be defined without
+affecting the X.509 specific part. </p> <p>The decision to use a particular
+profile rests with the application. </p> <p>All general classes defined in
+X.509 are prefixed with 'X509', all profile specific classes are prefixed
+with the name of the profile. </p> <p><b>X.509 specific part</b> </p> <p>The
+X.509 certificate itself and the generic extension object are both clearly
+part of X.509 itself. </p> <p>The generic extension object is simply an ASN1
+'any defined by' structure, with accessors for its OID and its encapsulated
+data. </p> <p>The X.509 certificate provides a function that, given a particular
+OID, returns a pointer to a particular extension object or NULL if the extension
+is not present. It also provides functions to verify its signature, given
+a key, and return the various data members that X.509 requires, such as its
+subject and issuer DNs. However, it does not provide accessors for any particular
+extensions (for example there is no <codeph>KeyUsage()</codeph> function,
+since it cannot be assumed that key usage is present). </p> <p>A generic certificate
+chain object is also provided; this simply has a set of X.509 certificates,
+provides accessors to them and implements a function to decode a set of certificates
+from DER encoded ASN.1. </p> <p>Specific extension classes are in a bit of
+a no-man's land. This is because many of them are defined by X.509, but more
+can be added by any profile, and a profile will require the use of a particular
+set of extensions. So, all the extensions used by PKIX in X.509 have been
+implemented on the assumption that they are likely to be useful for other
+profiles, however, profiles are free to define extra extensions. Since these
+extension classes are implemented in X.509, they only define the syntax of
+the extension, not the way it should be used. Because they are radically different
+they do not share a common base class. </p> <p><b>Profile specific part</b> </p> <p>The
+profile specific part defines two significant public classes: </p> <ul>
+<li id="GUID-E1F336F8-CEE3-52CC-931A-F71D6911871D"><p>PKIX certificate chain
+object </p> <p>This is main class which encapsulates path processing in the
+PKIX profile. Thus it defines which extensions are required, which extensions
+are understood, and how they are understood. </p> </li>
+<li id="GUID-79ACFD2B-3E61-5612-BDD0-164CE791F9A5"><p>PKIX validation result
+object </p> <p>This is constructed by the chain object in the course of validation
+and handed to the client to examine. </p> </li>
+</ul> <p>These classes are described in more detail in <xref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita">Certificate
+validation in PKIX</xref>; the validation process discussed there is PKIX
+specific. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C67A7554-256C-5392-8309-A0138CC4EBF2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C67A7554-256C-5392-8309-A0138CC4EBF2"><title>Basic SQL Example: basicsqlexample.mmp </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A copy of the basicsqlexample.mmp file for the basic SQL example application. </p> <section><title>Introduction</title> <p>The MMP project file tells the compiler how to build <filepath>basicsqlexample.exe</filepath>, assigns a UID, identifies the platform security capibilities, identifies the source path and files and sets the include path and libraries. </p> </section> <section><title>Code</title> <p>Build instructions for <filepath>basicsqlexample.exe</filepath>. </p> <codeblock id="GUID-567E4081-82F6-5887-B6DA-A49576BABDB8" xml:space="preserve">// basicsqlexample.mmp
+//
+// Copyright (c) Nokia Ltd 2009. All rights reserved.
+//
+
+TARGET            basicsqlexample.exe
+TARGETTYPE        exe
+
+UID                   0 0xE80000AF
+
+CAPABILITY       ReadUserData WriteUserData NetworkControl
+
+SOURCEPATH        .
+SOURCE            BASICSQLEXAMPLE.CPP
+
+USERINCLUDE       .
+SYSTEMINCLUDE     \Epoc32\include
+
+LIBRARY         euser.lib estor.lib 
+
+LIBRARY         sqldb.lib efsrv.lib</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C6AB2B3A-BBFC-5B57-BECB-F46C96250502.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C6AB2B3A-BBFC-5B57-BECB-F46C96250502" xml:lang="en"><title>Cleanup
+stack support for non-CBase classes</title><shortdesc>The cleanup stack supports other types of cleanup using <codeph>CleanupStack::PushL()</codeph>.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The discussion of clean up so far has assumed objects to be cleaned up
+are derived from <codeph>CBase</codeph>, with clean up by invoking <codeph>delete</codeph>.
+Other classes need explicit cleanup support to be provided by the programmer. </p>
+<p>The cleanup stack supports other types of cleanup. You can push: </p>
+<ul>
+<li id="GUID-7BD04FAD-E88D-5549-95DA-B62C5D07493F"><p>a pointer to any type
+of object. This is an object of type <codeph>TAny*</codeph>. The cleanupstack
+destroys this type of object with a call to <codeph>User::Free()</codeph> on
+the pointer pushed. This is less powerful than standard cleanup, because it
+frees memory and does not call the C++ destructor. </p> <p>You use the <codeph>CleanupStack::PushL(TAny*
+aPtr);</codeph> overload. </p> </li>
+<li id="GUID-2D143181-B8B5-5449-B29C-358CE7F8FB4A"><p>a pointer to an object
+together with a specific cleanup operation for that object. The pointer and
+the cleanup operation are contained in a <codeph>TCleanupItem</codeph> object. </p> <p>You
+use the <codeph>CleanupStack::PushL(TCleanupItem anItem)</codeph> overload. </p> <p>You
+must understand that the <codeph>TCleanupItem</codeph> object does not go
+on the cleanupstack. The pointer to the object that is contained within the <codeph>TCleanupItem</codeph> object
+goes on the cleanupstack. For example, if you created a TCleanupItem called
+myCleanupItem, you must never call <codeph>CleanupStack::Pop(myCleanupItem);</codeph> </p> </li>
+</ul>
+<p>Some utility functions are provided that make construction of a suitable <codeph>TCleanupItem</codeph> easy.
+See <xref href="GUID-18EF9CFA-5080-5F89-89EC-C64897612D6B.dita">How to clean up
+non-CBase classes</xref>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C6B65A53-BE0A-4C35-B355-379D9FE494F8_d0e59665_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C6D3827F-8F73-593E-A339-B510EEB9771F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C6D3827F-8F73-593E-A339-B510EEB9771F" xml:lang="en"><title>SQL Concept Guides</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e243532_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C" xml:lang="en"><title>Other
+Options menus</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Certain Options menus are accessed in other ways than by using the Options
+softkey. The usage of these menus is similar to the normal Options menu. Examples
+of such menus are:</p>
+<table id="GUID-C1DF65EC-A38D-4799-8856-9BDD810E6F82"><title>Other Options
+menus</title>
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Menu</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Context sensitive Options menu</p></entry>
+<entry><p>The Selection key opens this context sensitive Options menu when
+there is no single intuitive function (such as opening the item in focus)
+for it. The context sensitive Options menu only lists functions that: </p><ul>
+<li><p>Affect only the item in focus. </p></li>
+<li><p>Could be regarded as potentially intuitive. </p></li>
+<li><p>Are competing for the topmost place of the menu.</p></li>
+</ul><p>Other functions can be accessed through the Options softkey. The number
+of items in the context sensitive Options menu is usually two or three; it
+should never be more than four. As an example, in a message editor, the functions
+in the context sensitive Options menu could be Send and Add recipient.</p><p>In
+case there are marked items in a list, the context sensitive Options menu
+should include the Mark/Unmark functions. When a list is empty, it may make
+sense to offer a Create new type of option in the context sensitive Options
+menu, but only when it would be an appropriate function in the context.</p></entry>
+</row>
+<row>
+<entry><p>Editing menu</p></entry>
+<entry><p>Opened by pressing the Edit key in a text editor. Contains only
+editing commands. See <xref href="GUID-2E0F793F-3D80-4303-AF48-C7341F417DC9.dita">Editing
+menu</xref>.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C6E3A784-EE17-5A3C-9D81-9662114FD923.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C6E3A784-EE17-5A3C-9D81-9662114FD923" xml:lang="en"><title>Audio Input Stream Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Audio Input Stream library. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C6E9D609-E82C-4FAC-9265-F6A4FF61049C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C6E9D609-E82C-4FAC-9265-F6A4FF61049C" xml:lang="en"><title>Drawing
+in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Symbian platform calls <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> when a control area needs
+to be updated on the display. Controls may implement <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> or leave the drawing
+to their child controls. For more information on control hierarchies, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/RunTimeControlHierarchy.guide.html" format="application/java-archive">The run-time control hierarchy</xref>. </p>
+<p>The Symbian platform calls <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> for the parent control
+first, and then recursively for each control.</p>
+<p>Controls should override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> to draw their content.
+The override should do nothing else and should be as fast as possible. For
+example, it is bad design to create fonts dynamically, and read any bitmaps
+or resources while drawing. A good rule of thumb is that there should not
+be trap handlers in the method override; any time-consuming functionality
+that can be done beforehand should be cached.</p>
+<p>In most cases controls are drawn on the display using the screen device
+graphics context, accessed with <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSystemGc%28%29const" format="application/java-archive"><parmname>CCoeControl::SystemGc()</parmname></xref>. The graphics context provides a wide set of <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/GDI/index.html" format="application/java-archive">GDI</xref> (Graphics
+Device Interface  - common Symbian platform graphics API) drawing primitives
+that can be used for drawing virtually anything on screen.</p>
+<p>An example of a basic override of <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> for a control that is
+a top-level window in an application is as follows:</p>
+<codeblock id="GUID-9EF298F3-9B92-48C1-BA7C-0C91143D075C" xml:space="preserve">void CMyAppView::Draw( const TRect&amp; /*aRect*/ ) const
+    {
+    // Get the standard graphics context
+    CWindowGc&amp; gc = SystemGc();
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    gc.SetBrushColor( KRgbWhite);
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+
+    // Gets the control's extent
+    TRect rect( Rect());
+
+        {
+        gc.Clear( rect );
+        }
+    }
+</codeblock>
+<p>, where</p>
+<ul>
+<li><p><parmname>CWindowGc&amp; gc = SystemGc();</parmname> gets
+the graphics context that is used when drawing the control.</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aSetPenStyle%28TPenStyle%29" format="application/java-archive"><parmname>CWindowGc::SetPenStyle</parmname></xref>, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aSetBrushColor%28const%20TRgb%20%26amp%3b%29" format="application/java-archive"><parmname>CWindowGc::SetBrushColor</parmname></xref>, and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aSetBrushStyle%28TBrushStyle%29" format="application/java-archive"><parmname>CWindowGc::SetBrushStyle</parmname></xref> are used to set the drawing primatives for the context.</p>
+</li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TRectClass.html" format="application/java-archive"><parmname>TRect</parmname></xref> gets
+the size of the control rectangle.</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aClear%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CWindowGc:Clear(rect)</parmname></xref> clears the control rectangle.</p>
+</li>
+</ul>
+<section id="GUID-DBACBFCC-F260-4ABE-B55C-BBB23F332E42"><title>Drawing with
+caches</title>
+<p>For controls that perform intensive drawing operations, the drawing
+should be cached: a process also known as double-buffering. Here the drawing
+is done to a memory context first and then in the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> method only the context's
+bitmap is passed to screen. In the Symbian platform, the easiest way to implement
+a double buffer is to create a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Font_and_Bitmap_Server/CFbsBitmapClass.html" format="application/java-archive"><parmname>CFbsBitmap</parmname></xref> and
+then bind a graphics context to that  - this makes it possible to use the
+same GDI interface for drawing as the display context. The drawing is done
+to a memory bitmap buffer, and when the Symbian platform updates the invalidated
+screen area, the memory buffer is copied to it. Double-buffering is a common
+paradigm used in games, but can also be utilized in any application when performance
+of drawing controls is important.</p>
+<p>The following is a short example of how a double buffer is created and
+used:</p>
+<codeblock id="GUID-995DBACE-EE60-4666-BDCF-975EE98B01FD" xml:space="preserve">iGcBmp = new (ELeave) CWsBitmap(iEikonEnv-&gt;WsSession());
+User::LeaveIfError(iGcBmp-&gt;Create(aClientRect.Size(), iEikonEnv-&gt;ScreenDevice()-&gt;DisplayMode()));
+iGcDevice = CFbsBitmapDevice::NewL(iGcBmp);
+User::LeaveIfError(iGcDevice-&gt;CreateBitmapContext(iGc));
+</codeblock>
+<p><parmname>iGcBmp</parmname> is a pointer to <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWsBitmapClass.html" format="application/java-archive"><parmname>CWsBitmap</parmname></xref>,
+the bitmap memory buffer, that is created with the same width and height as
+the top-level window and with the same color bit depth as the display.<parmname> iGcDevice</parmname> is
+a pointer to the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/GDI/CBitmapDeviceClass.html" format="application/java-archive"><parmname>CBitmapDevice</parmname></xref> device
+class and the context <parmname>iGc</parmname> holds the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/GDI/CBitmapContextClass.html" format="application/java-archive"><parmname>CBitmapContext</parmname></xref> instance. <parmname>iGc</parmname> is then used instead of <parmname>CScreenGc</parmname>, obtained from the <parmname>CCoeControl::SystemGc()</parmname> method,
+when the control draws itself. The double-buffer drawing should be done outside
+of the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> method and can be called
+directly when needed. Only at the end of the off-screen drawing is the memory
+buffer flushed to the screen by calling <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDrawDeferred%28%29const" format="application/java-archive"><parmname>CCoeControl::DrawDeferred()</parmname></xref></p>
+<codeblock id="GUID-13A1E553-7A78-422C-85AC-7C89696B2D18" xml:space="preserve">void CMyDrawingExample::Draw(const TRect&amp; /*aRect*/) const
+    {
+    SystemGc().BitBlt(TPoint(0, 0), iGcBmp);
+    }</codeblock>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C705B0D5-055A-5DAA-9C6E-2FC3519FA50C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C705B0D5-055A-5DAA-9C6E-2FC3519FA50C" xml:lang="en"><title>Publish
+and Subscribe Overview</title><shortdesc>This topic explains the overview of publish and subscribe.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5F3F1973-C819-436F-A9E2-B02E62F94A29"><title>Purpose</title> <p>Allows global variables to be set and retrieved,
+and allows subscribers to be notified that variables have changed. Note that
+you may find such global variables referred to as properties.</p> </section>
+<section id="GUID-40E87759-7EF6-4503-95CF-9297D2EC2AB1"><title>Architectural relationships</title> <p>Publish and Subscribe
+is implemented on the Kernel side and is accessed from the user side through
+the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> handle.</p> </section>
+<section id="GUID-70948A73-79DA-4033-94D0-E6B2046E55B3"><title>Description</title> <p>Publish and Subscribe has three main
+components: properties, publishers and subscribers.</p> <p><b>Properties</b> </p> <p>A property is a single data value, that can be either a single 32-bit
+value or a variable length set of bytes referred to as a byte array. A byte
+array has a maximum size defined by <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-57E64054-610A-31D1-AD7F-E2F9F9FC1DCB"><apiname>RProperty::KMaxPropertySize</apiname></xref>.</p> <p><b>Publishers</b> </p> <p>Publishers are threads that define and update a
+property.</p> <p><b>Subscribers</b> </p> <p>Subscribers
+are threads that listen for changes to a property, and can get the current
+value of a property. Typically, a thread gets the value of a property when
+notified of changes.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C71311A7-F747-57EB-B31F-6E634D5976A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C71311A7-F747-57EB-B31F-6E634D5976A3" xml:lang="en"><title> Character
+Conversion (Charconv) Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Symbian platform uses UTF-16 encoded Unicode text. The Charconv Framework
+provides the APIs and <xref href="GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292.dita#GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292/GUID-5E593C5A-882B-5B11-AD6E-CFD10EA6700B">converters</xref> to
+convert characters between foreign encodings and Unicode (UTF-16). </p>
+<p> </p>
+<section><title>Architecture</title> <p>The Character Conversion Framework
+comprises two components: </p> <ul>
+<li id="GUID-BD14B058-9F17-5B43-B3B4-12298700A6C2"><p>The Character Encoding
+and Conversion Framework component is also referred to as Charconv Framework.
+It contains built-in converters for many languages. It also provides APIs
+for selecting built-in or plug-in converters. </p> </li>
+<li id="GUID-91F95B05-7345-5617-81C0-1FF02119CC04"><p>The Character Encoding
+and Conversion Plug-ins component, also referred to as Charconv Plug-ins,
+contains ECom <xref href="GUID-001F6216-48AE-57D4-8985-65CF77B26F19.dita#GUID-001F6216-48AE-57D4-8985-65CF77B26F19/GUID-74C42671-A14C-5E38-8618-06CD8AFB5C70">plug-in
+converters</xref> for various languages not supported by the built-in converters.
+Device creators can write additional plug-in converters by implementing the <codeph>CCharacterSetConverterPluginInterface</codeph> interface. </p> </li>
+</ul> <fig id="GUID-4B8A7DE4-6A72-5950-96CE-D8BEACD977A0">
+<title>              Charconv Framework collection            </title>
+<image href="GUID-F681C857-086F-527A-9946-A91560601658_d0e377073_href.jpg" placement="inline"/>
+</fig> <p> </p> </section>
+<section><title>Using the Character Conversion Framework </title> <p>Application
+developers can use the Charconv API to convert text between various encodings
+and Unicode. </p> <p>Device creators can also write additional
+plug-in converters for specific encodings. </p> </section>
+</conbody><related-links>
+<link href="GUID-06EDE5E8-04EA-5A74-ADE2-E5B8C49AB292.dita"><linktext>Character
+Conversion (Charconv) Framework Concepts</linktext></link>
+<link href="GUID-E64C06D7-B138-5BCC-A814-3F9E2C517404.dita"><linktext>Character
+Encoding and Conversion Framework Component</linktext></link>
+<link href="GUID-E7ACEC20-27C9-5124-A46E-2812A64E3E4B.dita"><linktext>Character
+Encoding and Conversion Plug-ins Component</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7213C52-F867-574E-B99A-93BA92A1FE2F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C7213C52-F867-574E-B99A-93BA92A1FE2F" xml:lang="en"><title>Communications Process and Settings</title><shortdesc>This section describes the Communications Root Server and Root Server Configurator and their configuration files. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C72CF928-F32E-55CF-A4B0-B51CD7D14F8A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C72CF928-F32E-55CF-A4B0-B51CD7D14F8A"><title>How to use file server sessions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <codeph>Rfs</codeph> class represents a session with the file server. The following code demonstrates the use of the <keyword>session
+        path</keyword> and shows how to connect and disconnect to and from the file server. </p> <ul><li id="GUID-6D41700D-4355-5029-A767-4D26E830522D"><p>Use <codeph>Connect()</codeph> to connect to the file server. </p> </li> <li id="GUID-AD64EBC8-00EF-5AB9-9902-33CA63FBD41E"><p>Use <codeph>SessionPath()</codeph> to get the session path. </p> </li> <li id="GUID-E38A2DDB-0071-505F-9D6A-37A4BB22C4C5"><p>Use <codeph>SetSessionPath()</codeph> to set the session path. </p> </li> <li id="GUID-54C5D745-D2DE-5B3B-AA67-9A3B0505515B"><p>Use <codeph>Close()</codeph> to close the file server session when its use is complete. </p> </li> </ul> <codeblock id="GUID-AFD9152A-0439-5807-905D-1EA6FBC2BF8B" xml:space="preserve">_LIT(KSession,"Session path for fsSession is %S\n"); 
+RFs fsSession;
+CleanupClosePushL(fsSession);
+User::LeaveIfError(fsSession.Connect()); 
+TFileName path;
+User::LeaveIfError(fsSession.SessionPath(path));
+console-&gt;Printf(KSession,&amp;path); 
+... 
+... 
+fsSession.Close();
+CleanupStack::PopAndDestroy();</codeblock> <p>Use <xref href="GUID-16B0008A-0F85-3C1E-89E1-E7431E2C93B9.dita"><apiname>CleanupClosePushL()</apiname></xref> and <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita#GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA/GUID-C3BB6B4F-8096-3D74-9BEA-D77F309D900A"><apiname>CleanupStack::PopAndDestroy()</apiname></xref> so that <codeph>fsSession</codeph> is still closed if any of the <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> functions leave. </p> <p>See also <xref href="GUID-76D1438E-445E-5864-BA9D-27BC61D72C1B.dita">How to use CleanupClosePushL()</xref>. </p> <section><title>Notes</title> <ul><li id="GUID-FB2F41D7-445D-52B1-85DA-AF48CD4E7AA7"><p>The session path is the path in which, by default, all operations in the current file server session take place. The path can be changed by a call to <codeph>RFs::SetSessionPath()</codeph>. </p> </li> <li id="GUID-DEA3DC5E-3315-5091-B69A-396A93588791"><p>Unlike some other systems, there is a <i>single</i> path, rather than a path for each drive: the path consists of a drive and a path specification. </p> </li> <li id="GUID-9FE6A9C7-08C8-57D4-8E5F-FA3FE7894544"><p>You can make several connections to the file server from the same program, and each can have a different session path. </p> </li> <li id="GUID-349AE117-FB3F-5147-B62D-9A74AA0326EC"><p>If a file server session is not closed using the <codeph>Close()</codeph> function, it is closed automatically when the thread that opened it terminates. However, when operations using the file server session have finished, it is good practice to close all resources immediately. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C73318E7-44E2-5F42-BDB0-AAE9BD72BF5C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C73318E7-44E2-5F42-BDB0-AAE9BD72BF5C" xml:lang="en"><title>Using
+TCallBack</title><shortdesc>This document describes the TCallBack class.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The class encapsulates a pointer to a function which takes an argument
+of type <codeph>TAny*</codeph> and returns a <codeph>TInt</codeph>. The class
+is generally useful but, in particular, simplifies the programming interface
+of the <codeph>CIdle</codeph> and <codeph>CPeriodic</codeph> classes.</p>
+<p>Given a suitable function and a pointer to an object, a callback is constructed
+simply. The function must be a non-member function or a static member of a
+class. For example:</p>
+<codeblock id="GUID-B70261EB-D95A-52EE-954E-D7062BF8A7EF" xml:space="preserve">TInt Foo(TAny *);  // a non-member function
+X* pX=new X;       // a class X object</codeblock>
+<p>or, as a static member of class <codeph>X</codeph>:</p>
+<codeblock id="GUID-DA631174-BFA6-5348-9807-5417DCA17523" xml:space="preserve">TInt X::Foo(TAny *); // a static function of class X
+X* pX=new X;         // a class X object</codeblock>
+<p>A callback function returns a true value to indicate whether it should
+be called again. This is important when used with the <codeph>CIdle</codeph> and <codeph>CPeriodic</codeph> classes.
+The following code fragment shows the programming paradigm:</p>
+<codeblock id="GUID-58BF3CFB-D8E3-549B-B30F-568F2C566295" xml:space="preserve">TCallBack cb(Foo,pX);  // construction of the callback</codeblock>
+<codeblock id="GUID-3B88A62E-0350-53DF-9479-D5749D96E2FD" xml:space="preserve">for (;;)
+ {
+ if (!cb.CallBack()) // invoke callback until it returns
+  {    // a false value
+  break;
+  }
+ }</codeblock>
+<p>Calling <codeph>cb.CallBack()</codeph> results in a call to the callback
+function <codeph>Foo()</codeph> passing it the pointer <codeph>pX</codeph>.</p>
+<p>A common requirement is for the callback function to be a non-static member
+of a class. This can be implemented by passing, to the callback function,
+a pointer to an instance of the class of which it is a static member. For
+example:</p>
+<codeblock id="GUID-85DDB62D-FDDC-5B04-9F9C-D5C20C8735DB" xml:space="preserve">class X
+ {
+ static X* NewL();
+ static TInt Foo(TAny* pX);
+private:
+ TInt DoFoo();
+ ...
+ }</codeblock>
+<p>where the static function <codeph>Foo()</codeph> is implemented as:</p>
+<codeblock id="GUID-D3FD2FA5-960D-540C-9BCA-0206004CC92C" xml:space="preserve">static TInt X::Foo(TAny* pX)
+ {
+ return ((X*)pX)-&gt;DoFoo();
+ }</codeblock>
+<p>Typically, create an instance of class <codeph>X</codeph> and, at some
+later stage, create the callback:</p>
+<codeblock id="GUID-4E685C8E-9185-50FA-9402-A2B4351C3AEA" xml:space="preserve">...
+X* pX = X::NewL();
+...
+TCallBack cb(Foo,pX);
+...</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e247213_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7589C93-B517-4251-ACFB-B03E07993242.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C7589C93-B517-4251-ACFB-B03E07993242" xml:lang="en"><title>Hybrid
+Applications with Symbian C++ and Standard C</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If the developers want to use any of the P.I.P.S. APIs while writing some
+Symbian application, they need to link to the corresponding library. The only
+difference being that the developer does not have to link with the <codeph>STATICLIBRARY</codeph> <filepath>libcrt0.lib</filepath> in
+the MMP file.</p>
+<p>There are no additional P.I.P.S. specific changes that need to be done
+in the source file in this case. This is possible, because the P.I.P.S. developer
+of does not have to call any library initialization routine before use or
+cleanup routine after use.</p>
+<p>Some of the P.I.P.S. APIs assume that a cleanup stack is created and there
+is a top-level TRAP. If the developer does not create either of the two, calling
+such APIs may lead to application crash. </p>
+<note>In a hybrid application, the user must make sure that the
+cleanup stack is created and a top-level TRAP marker is done.</note>
+<p>Hybrid application can also contain threads created using both <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-6C840907-C3F7-34B7-97DB-CEDBA68EA277"><apiname>RThread::Create()</apiname></xref> and <codeph>pthread_create()</codeph>,
+and can still use P.I.P.S. APIs in both the threads. In case of <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-6C840907-C3F7-34B7-97DB-CEDBA68EA277"><apiname>RThread::Create()</apiname></xref> the
+developer has to create cleanup stack and a top level TRAP for this thread
+in the thread entry Function, if it is required; else this thread may crash
+or panic. </p>
+<p>An application can have both C++ and C source codes. In this case, in order
+to give C linkage to C++ code- that is calling a function defined in a C++
+file that may have C++ code, use extern “C”. For example:</p>
+<codeblock xml:space="preserve">// File: sample.c
+  void OtherFoo();
+  
+  void Foo() {
+     OtherFoo();
+  }
+
+// File: useme.cpp
+  
+  extern “C” {
+  void OtherFoo() {
+     //Can use any C++ code here
+     //Can use Symbian C++ code here
+  }
+  }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C762E5B4-A7E3-5CAD-B639-A31F5D1899D3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C762E5B4-A7E3-5CAD-B639-A31F5D1899D3"><title>Overview of DLL building</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Building a DLL target generates two files: </p> <ul><li id="GUID-4D007B23-B8D2-56AB-87F9-D52D873094AE"><p>The compiled DLL binary: this file contains the executable code that is called at run-time. It often has the extension <filepath>.DLL</filepath>, though some DLLs have extensions that indicate their particular purpose, e.g. <filepath>.ANI</filepath> for animation DLLs. </p> </li> <li id="GUID-6FDF4195-AB87-5539-97C3-2755B24797B2"><p>Import library: represents the exported interface of the DLL. This allows other programs to use the DLL, by linking against the import library at build time. </p> <p>Import libraries have the extension <filepath>.lib</filepath> in the Symbian emulator and ARM ABIv1 builds, or <filepath>.dso</filepath> in the ARM ABIv2 builds. </p> </li> </ul> <p>Other programs can use DLLs in two ways: </p> <ul><li id="GUID-836D29E7-3257-50EB-943A-3FA1CC932DFC"><p>By linking against them at build time, using the interface defined in a C++ header file, and in the DLL's import library. </p> <p>DLLs designed to be used in this way are called <xref href="GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A.dita">static interface DLLs</xref>. </p> </li> <li id="GUID-571E1BEF-C35C-5AB9-BE6E-E45717E7DE5D"><p>By using an API to dynamically load and call the DLL at run-time. DLLs designed to be used in this way are called <xref href="GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita">polymorphic interface DLLs</xref>. </p> <p>See <xref href="GUID-93086866-F6E1-5715-A3BE-EEACF8A760DB.dita">Frameworks, libraries and DLLs</xref> for more on this idiom, and <xref href="GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita">Dynamically Loading Link Libraries API</xref> for details of the API. </p> </li> </ul> <p>The following pages discuss the special configuration issues associated with building for DLL targets. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7786266-FCE7-5A96-AA92-9A71486D3B6C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C7786266-FCE7-5A96-AA92-9A71486D3B6C"><title>Troubleshooting Plug-in loading Errors</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Sometimes, attempts by clients to instantiate a plug-in leave with a generic error code of -46 or -1. This page discusses the most likely reasons why this might happen. </p> <p>This page contains some help on interpreting error messages </p> <table id="GUID-5BFE11FA-4D4B-5663-9972-1B25B71F78E8"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Error</b>  </p> </entry> <entry><p> <b>Action</b>  </p> </entry> </row> <row><entry><p> <i>Error -46</i> (<xref href="GUID-213DE05E-24F7-3E94-9B35-F4A72B3EBFD8.dita"><apiname>KErrPermissionDenied</apiname></xref>): </p> </entry> <entry><ul><li id="GUID-E1D548E6-E200-5960-86D6-7E00278B8199"><p>The plug-in DLL providing the implementation has less platform security capabilities than the client process. This is a problem as the platform security DLL loading rules require a DLL to have the same or greater capabilities as the process trying to use it. </p> <p>Refer <xref href="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita">ECom and the Platform Security Architecture</xref> for more details. </p> </li> <li id="GUID-6C2EDB7E-1E8C-53B7-941D-579114751DC5"><p>The plug-in DLL providing the implementation was incorrectly installed on a media card. The system hash value of the plug-in DLL was missing, or it was inconsistent with the one calculated for the plug-in DLL at load time. </p> <p>Refer <xref href="GUID-9E4D75C0-D797-5541-8E52-3C6D154CC74A.dita">ECom and the Platform Security Architecture</xref> for more details. </p> </li> <li id="GUID-1C2AE301-2B98-524B-9A7D-4D6BCC5C715C"><p>There is an error in the plug-in registration file. The UID value specified in the <codeph>dll_uid</codeph> member of the <xref href="GUID-7181E6D8-0FFB-3F5B-B394-FFEE1BB9C950.dita"><apiname>REGISTRY_INFO</apiname></xref> structure in the plug-in's resource file did not match the Secure ID (UID3 value) of the plug-in DLL. If a match is not found the plug-in is discarded and is not added to the registry of available plug-ins. </p> <p>Refer <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">Creating a Standard Registration Resource File</xref> for more details. </p> </li> </ul> </entry> </row> <row><entry><p> <i>Error -1</i> (<xref href="GUID-5E653C17-372C-32E1-A1B2-9E69A9991C40.dita"><apiname>KErrNotFound</apiname></xref>): </p> </entry> <entry><p>This indicates an error in coding or installing the plug-in. The problem needs to be fixed by the creator of the plug-in. </p> <p>Possible causes of the error are: </p> <ul><li id="GUID-4AD8C2D2-B16D-5B7B-A3F0-98C53FAE8A8B"><p>When porting a plug-in from a version of Symbian platform before 9.1, the files were not installed in the locations required by Symbian OS v9.1 and later versions. This prevents the framework from discovering the plug-in. </p> <p>Refer <xref href="GUID-641A276D-F618-50CE-BA5A-658DCC26BAB5.dita">How to write an implementation project file</xref> for more details. </p> </li> <li id="GUID-20E11737-174E-5A5D-B2E9-FE051A40E669"><p>The plug-in was compiled using the CodeWarrior IDE before version 3.1. This ignores the <codeph>TARGET</codeph> keyword in <codeph>START
+                     RESOURCE</codeph>...<codeph>END</codeph> blocks, so that the wrong resource file is built. </p> <p>For example in the code block below: </p> <codeblock id="GUID-0F16893A-04A1-52DA-8FDA-7BBF302042B8" xml:space="preserve">START RESOURCE 123456789.rss
+TARGET foo.rsc
+END</codeblock> <p>The resource file built is <codeph>123456789.rsc</codeph> rather than the expected <codeph>foo.rsc</codeph>. </p> <p>Solution for the above error are to build from the command line or from a later version of CodeWarrior. </p> </li> <li id="GUID-7FD7CDD8-6335-5748-8BC9-71797097E111"><p>DLLs to which the plug-in links are absent from the phone. </p> <p>The eshell text shell provides these commands to help you check for missing DLLs: </p> <ul><li id="GUID-2DA368DE-04DA-50E9-86A0-D70C90214EDE"><p> <codeph>chkdeps</codeph> checks the dependencies of an executable. </p> </li> <li id="GUID-2E1257B2-4FA4-5E60-A827-C43544956511"><p> <codeph>trace /L</codeph> in debug builds outputs messages describing why an attempt to load a DLL fails. </p> </li> </ul> </li> <li id="GUID-1333A0F7-6BB3-570C-9D6C-B09FF6CDEA12"><p>The <codeph>TImplementationProxy</codeph> array coding does not contain a matching entry for the plug-in. </p> <p>See <xref href="GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita">How to export the implementation factories</xref> for more information. </p> </li> </ul> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C79B3D8C-499C-58B8-9DF4-B2D41CC82186.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C79B3D8C-499C-58B8-9DF4-B2D41CC82186" xml:lang="en"><title>Thread-death
+notifier</title><shortdesc>Describes the thread-death notifier.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Thread-death notifiers allow threads to be notified when another thread
+dies.</p>
+<p>A thread-death notifier is a Kernel object and, as such, is managed by
+the Kernel. Access to a thread-death notifier is through an <codeph>Rundertaker</codeph> handle.</p>
+<p>The thread-death notifier service is an asynchronous service provider and
+is intended to be part of an active object.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C7B748CF-D080-5448-98AF-1634D821E713" xml:lang="en"><title> SMP
+Example</title><shortdesc>This example demonstrates symmetric multiprocessing using multiple
+threads. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This example shows the differences between code running in a unicore environment
+and in a multiprocessor environment.</p>
+<section id="GUID-7AC2BE12-4F01-4140-8379-672475DE7681"><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-577596d8-76a2-4a41-aa0f-deefe5638e23.zip" scope="external">SmpExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-577596d8-76a2-4a41-aa0f-deefe5638e23.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-7A70847E-40A2-4267-9BD4-36F88F48C84A"><title>Class summary</title><ul>
+<li><p><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> - A handle to a thread.</p></li>
+<li><p><xref href="GUID-F4A68645-2265-307F-B951-8295827E000B.dita"><apiname>RDbStoreDatabase</apiname></xref> - DBMS Store database implementation</p></li>
+</ul></section>
+<section id="GUID-BE13F08D-09FD-41DF-9210-D46EBECADA69"><title>Design and implementation</title> <p>The example creates two
+databases named DBforSMP1.db and DBforSMP2.db and three threads: </p> <ul>
+<li id="GUID-F4EE1C84-FE30-5C99-872B-1881D852CAEA"><p> <codeph>WriterThread1</codeph>:
+It creates the DBforSMP1.db database and writes integers to it. The thread
+has the lowest priority amongst all the threads. </p> </li>
+<li id="GUID-7B2D0419-E069-59FA-A6CE-70EBC203F656"><p> <codeph>WriterThread2</codeph>:
+It creates the DBforSMP2.db database and writes some integers to it. The thread
+has highest priority amongst all the threads. </p> </li>
+<li id="GUID-7C9584F2-E6C8-5A02-B4C2-4845CF4BAA36"><p> <codeph>ReaderThread</codeph>:
+It reads the two databases and prints the output to the console. It has normal
+priority. </p> </li>
+</ul> <p>In a unicore enviroment, the threads are executed according to their
+priorities. This means first <codeph> WriterThread2</codeph>, then <codeph>ReaderThread</codeph> and
+finally <codeph>WriterThread1</codeph> is executed. Hence <codeph>ReaderThead</codeph> can
+only print the contents of the DBforSMP2.db in the console because DBforSMP1
+is empty. in an SMP environment, threads run simultaneously and <codeph>ReaderThread</codeph> can
+print the contents of both the databases. </p> </section>
+<section id="GUID-3686F166-C4DD-4269-9B9C-F0027F53547E"><title>Building and configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-037442C7-2436-5152-9A3E-9DC0B4283A9C-GENID-1-6-1-13-1-1-4-1-4-1-25-1-30-1-3-5-3-1"><p>The example builds an
+executable called <filepath>smpexample.exe</filepath> in the standard location. </p> </li>
+<li id="GUID-B7C849B9-0885-5253-A78B-71854F86D772-GENID-1-6-1-13-1-1-4-1-4-1-25-1-30-1-3-5-3-2"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+</ul> </section>
+<section id="GUID-F773B722-7612-4BAF-99CB-84E39CE10C40"><title>Running the example</title> <p>To test the example in an SMP
+environment, add <codeph>crazyscheduling on</codeph>in the <filepath>epoc32\data\epoc.ini</filepath> file.
+This emulates SMP behaviour in the techview emulator. Execute the example
+in both unicore and multiprocessor environment and see the difference. Run
+the example following the instructions provided in the console. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-C7C5F7B8-F024-57F0-968B-1839E1E07DAA" xml:lang="en"><title>BmpAnim:
+Bitmap Animation example</title><shortdesc>This example shows how to create an animation using the Bitmap
+Animation framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-2CF5FF44-3E8C-5859-9F73-49C80A8D218F"><title>Purpose</title> <p>This
+example demonstrates the Bitmap Animation API. For more information about
+this example, see <xref href="GUID-05D6AB1C-8548-58C6-AA6C-EE362FF49247.dita">Bitmap
+Animation Overview</xref> which is based around code snippets taken from the
+example. </p> </section>
+<section id="GUID-907EEE02-5ADC-5412-BD80-BB026F75B978"><title>Download</title><p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-57050a2d-62c2-4133-a538-763183139e00.zip" scope="external">BmpAnimGui.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-57050a2d-62c2-4133-a538-763183139e00.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-4FB74226-E8E2-373D-98E7-072E3D0813B5.dita"><apiname>CFbsBitmapNote</apiname></xref></p><p><xref href="GUID-ED772C8E-C04C-3E8E-9A9A-F6B09A7D7964.dita"><apiname>CBitmapFrameDataEncapsulates</apiname></xref></p><p> <xref href="GUID-B9B0343A-8231-3CDA-B514-7B8ED8E41A7B.dita"><apiname>CBitmapAnimClientDataEncapsulates</apiname></xref></p><p><xref href="GUID-640E3089-EE56-3B7A-A80C-6D6498FAF86E.dita"><apiname>RBitmapAnimEnables</apiname></xref></p><p> <xref href="GUID-8E9042C8-7E83-3214-851E-64EC804972D5.dita"><apiname>RAnimDllClient</apiname></xref></p></section>
+<section id="GUID-39371B5F-F99B-5936-A7C7-C139599369EA"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-D7599050-5BBB-566E-9511-6F24CD881EC8"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-CD188E99-3050-5B1F-88B3-1EAE4BAA86CB"><p>For the emulator, the
+example builds an executable called <filepath>bmpanimgui.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody><related-links>
+<link href="GUID-05D6AB1C-8548-58C6-AA6C-EE362FF49247.dita"><linktext>Bitmap Animation
+Overview</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7E37B5D-C7AA-5624-B34F-B3CA44516E1D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C7E37B5D-C7AA-5624-B34F-B3CA44516E1D"><title>What are Serial Protocol Modules (CSYs)</title><shortdesc>This topic describes the Comms SYstem (CSY) plug-ins, which the Serial Communications Server uses to control serial ports. Serial protocol module are also known as CSYs after the extension of the filename for their DLLs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Serial protocol modules are DLLs with a single entry point which return a factory object which is capable of creating one or more objects that implement serial services. </p> <p>Serial protocol modules have a <filepath>.csy</filepath> extension and a <keyword>UID</keyword> 2 of 0x10000049. </p> <p>Serial protocol modules are loaded by the Serial Communications Server, and are not directly accessed by client applications. The server passes client requests to the appropriate Serial protocol module. An example of a client request is to read from a port. </p> <p>A client of the Serial Communications Server must have at least one Serial protocol module loaded in the client session to be able to send and receive serial data. Serial protocol modules are loaded into a client session by using the <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita#GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306/GUID-F851835B-4585-3C3A-B257-ADAE04CD95AA"><apiname>RCommServ::LoadCommModule()</apiname></xref> API and are unloaded using the <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita#GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306/GUID-98B29787-1CC4-35AF-9C56-B2D2E29C897C"><apiname>RCommServ::UnloadCommModule()</apiname></xref> API. The Serial Communications Server manages the situation where multiple clients load and unload the same Serial protocol module. A Serial protocol module remains loaded by the server for as long as at least one client has the Serial protocol module loaded. </p> <p>An example Serial protocol module is IrCOMM, the infrared serial protocol module. IrCOMM is a presentation layer ISO model network protocol that programmers access through a serial API. IrCOMM includes specifications for sending information about RS-232 signal lines, handshaking and emulating full duplex data transfer over the single <i>wire</i> of the infrared link. </p> <p>A theoretical Serial protocol module would be the Telnet protocol, which runs over TCP/IP or GSM Data services which run over the GSM digital network. The Telnet protocol could simulate a serial port. </p> </conbody><related-links><link href="GUID-7651FA57-4C0E-5EB6-8DB1-AAF23D39CD7C.dita"><linktext>List of
+                Serial Communications Server protocol modules</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C7FB54C4-43C9-562A-A18C-2818AF624774.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C7FB54C4-43C9-562A-A18C-2818AF624774"><title>Permanent file store</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A permanent file store implements most of the operations defined by the store abstract framework. Most importantly, streams in a permanent file store can be:</p> <ul><li id="GUID-5D731E0A-C4B7-56CE-AC27-25118A58506A"><p>overwritten</p> </li> <li id="GUID-13FF892F-8241-59A6-A39F-D0F2705F79A0"><p>replaced</p> </li> <li id="GUID-A8E9E699-6017-58FA-BC54-155B7838A172"><p>deleted</p> </li> <li id="GUID-95C70244-4BE3-5E20-83FA-1B1DCFB03F49"><p>created in advance of being written to.</p> </li> </ul> <p>A permanent file store is useful for the type of application which treats the data in the store as its prime copy. Typically, the object network comprising the application’s data is structured so that sections of data can be loaded in, and, if changed, written back to the store. Memory is used as a workplace for changing data. Such an application never replaces the entire store. This approach requires a sophisticated structure and greater sophistication within the application.</p> <p>Typically, a permanent file store is used by an application, such as a database, which maintains all its data in a file, but occasionally edits some entries in that database.</p> <p> In this paradigm:</p> <ul><li id="GUID-56E7EE36-B74F-57B4-9CD6-FCA87D987B89"><p>the database file is initially created</p> </li> <li id="GUID-4BA53AA2-0304-581A-AD48-2411C9986F69"><p>when an entry is created, it as added to the database</p> </li> <li id="GUID-70E72107-4ADE-5BF0-8199-C7B904CA72EB"><p>the program maintains an internal, non-persistent, copy of the indexes in the database file</p> </li> <li id="GUID-EB9EAF48-6D8A-5D6F-BC63-C2036FAC61D4"><p>when an entry is selected for display or editing, its data is retrieved from the database; all such entries’ data are maintained in an internal, non-persistent, form</p> </li> <li id="GUID-C455382A-F50F-5C92-B59B-A5E5FC966C93"><p>when an entry is edited and saved, just that single entry is replaced in the database</p> </li> <li id="GUID-3BE61AA6-BA20-577B-88AD-8798A12B9F52"><p>when the application exits, there is nothing to do to the database, since there should be no data that was not already saved (except, perhaps, the current entry if it was being edited)</p> </li> </ul> <p>Such an application never replaces the entire store. The database file itself is permanent; it is not erased when an entry is saved. Because of this, much more care is needed when maintaining this type of store. All links within the database must be maintained without corruption, and no stream subnetworks in the database should become inaccessible, otherwise space is wasted. The order in which streams are written to a permanent file store is not important as streams can be changed and rewritten. </p> <p>Overwriting an existing stream does not change its length. However, attempting to write beyond the end of the stream fails and results in a leave. Replacing a stream can result in a stream which is longer or shorter than the original.</p> <p>Note the difference between a persistent store (one that can be closed and re-opened), and a permanent file store (it is not replaced wholesale; rather, its individual entries are edited, inserted and deleted, but the store itself is permanent). A permanent file store is, of course, persistent.</p> <p>When the content of a permanent file store is naturally represented by a relational database, it is usually much more convenient to manipulate it using the relational database manager.</p> <p>Permanent file stores are encapsulated by the <codeph>CPermanentFileStore</codeph> class.</p> <section><title>See also</title> <p><xref href="GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E.dita#GUID-C0414BDC-06FD-5E3C-93F7-DD3467CAA75E/GUID-7CFECB38-1A52-5384-B9A7-2DAE624C1468">DBMS</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C82A6822-DDC5-5372-A830-6BCF517F1526.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C82A6822-DDC5-5372-A830-6BCF517F1526" xml:lang="en"><title>Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C83D7112-0CF4-588D-8A0C-D27AB387F4D3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-C83D7112-0CF4-588D-8A0C-D27AB387F4D3" xml:lang="en"><title>certapp
+Reference</title><shortdesc>The <codeph>certapp</codeph> tool is a PC command line utility
+which converts certificate store files between text and binary formats, and
+vice versa. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title> <p><userinput>certapp <parmname>general_options</parmname> <cmdname>input_files
+-out output_files</cmdname> </userinput> </p> <p>It is essential that you
+specify at least one input file name and an output file name with <codeph>certapp</codeph>.
+If you specify input files but do not specify any output file, the tool only
+reads the input file data and displays the same. No output file is created
+to hold the displayed data. </p> <p>The following sub-sections provide information
+on specifying general options, and specifying input or output file arguments
+as command-line arguments with <codeph>certapp</codeph>. </p> <p><b>General
+options</b> </p> <p>The following table summarises the general options that
+can be specified as command-line arguments: </p> <table id="GUID-2317E69A-A923-5A1E-8E81-197A6A012D62">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Name</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-h</codeph>  </p> </entry>
+<entry><p>Displays the usage message. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--progress=filename</codeph>  </p> </entry>
+<entry><p>Saves progress output to a specified file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--errors=filename</codeph>  </p> </entry>
+<entry><p>Saves error output to a specified file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--verbose</codeph>  </p> </entry>
+<entry><p>Includes additional debug comments in output files. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--license</codeph>  </p> </entry>
+<entry><p>Displays license information. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--pemout</codeph>  </p> </entry>
+<entry><p>Displays certificates in PEM format. (The format is auto-detected
+when reading.) </p> </entry>
+</row>
+<row>
+<entry nameend="col1" namest="col0"><p> <b>Note:</b> If you do not specify
+any file name with <codeph>--progress</codeph> or <codeph>--errors</codeph> options,
+the respective outputs are written to default progress or error text files.
+If the file names specified with the <codeph>errors</codeph> and <codeph>progress</codeph> options
+are identical, their outputs are merged. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Input and output file arguments</b> </p> <p>In the <codeph>certapp</codeph> syntax,
+the files specified before the <codeph>-out</codeph> argument are input files
+while those after the argument are output files. You can use the <codeph>-in</codeph> option
+to specify additional input files at the end of the command line. </p> <p>The
+following table summarises the input and output file arguments that can be
+specified at the command line: </p> <table id="GUID-B9761515-2EC2-513B-8141-72682F9891F3">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Name</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--bswicertstore=filename</codeph>  </p> </entry>
+<entry><p>Specifies a binary SWI certificate store file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--hswicertstore=filename</codeph>  </p> </entry>
+<entry><p>Specifies a human-readable SWI certificate store file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--bfilecertstore=filename</codeph>  </p> </entry>
+<entry><p>Specifies a binary file of the file certificate store. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--hfilecertstore=filename</codeph>  </p> </entry>
+<entry><p>Specifies a human-readable file of the file certificate store. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--bcertclients=filename</codeph>  </p> </entry>
+<entry><p>Specifies a binary certificate clients file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--hcertclients=filename</codeph>  </p> </entry>
+<entry><p>Specifies a human-readable certificate clients file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--out</codeph>  </p> </entry>
+<entry><p>Files listed after <codeph>–out</codeph> are output files. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--in</codeph>  </p> </entry>
+<entry><p>Specifies input files listed in the command line. Files listed after
+–in are input files. </p> <p> <b>Note:</b>  <codeph>--in</codeph> is not required
+when input files are specified before output files. It may be used to specify
+additional input files after output files. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>--chdir=dirname</codeph>  </p> </entry>
+<entry><p>Changes directory for the specified input or output files. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>Consider the following while specifying input and output file
+command-line arguments: </p> <ul>
+<li id="GUID-8C36BA85-E4D3-5F96-8BC0-60991C11A085"><p>Information in file
+certificate store and SWI certificate store files can depend on information
+contained in the certificate client files. Therefore, all the certificate
+client files are read before the other certificate store files. </p> </li>
+<li id="GUID-5D3C1156-B924-5CA8-A28A-A88E4BDAF345"><p>You can use the <codeph>--chdir</codeph> option
+to change to the current directory for reading or writing files. You can also
+use this option to read input files from one directory and write all output
+files to a different directory or to multiple directories. </p> </li>
+</ul> <p> <b> Important:</b> Duplicate entries should not be included in certificate
+store files. If duplicate entries are detected in a certificate store file,
+then this is reported as a fatal error. </p> <p>For file certificate store
+or SWI certificate store files, duplicates are determined by labels. For certificate
+client files, duplicates are determined by the client application name (that
+is, multiple client application names can map to a single UID, but not vice
+versa). </p></refsyn>
+<example><title>Example</title> <p>The following is an example for dumping
+a SWI certificate store (<codeph>swicertstore.dat</codeph>) into human-readable
+form (<codeph>swicertstore.txt</codeph>). The input files are <codeph>swicertstore.dat</codeph> and <codeph>certclients.dat</codeph> which
+maps the application UIDs in the certificates to application description strings.
+The <codeph>certclients.dat</codeph> file is provided as input so that the
+tool can dump the certificate application-related metadata in the form of
+text and not as a series of UIDs. </p> <codeblock id="GUID-1368ED7C-8D15-598F-9A46-6358C2631786" xml:space="preserve">certapp --bcertclients=certclients.dat --bswicertstore=swicertstore.dat --out 
+--hcertclients=certclients.txt --hswicertstore=swicertstore.txt</codeblock> </example>
+</refbody><related-links>
+<link href="GUID-04FB9E08-DDFE-53B1-B8E1-687A1AEC4286.dita"><linktext>Security
+Tools Overview</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C85B4EA2-0184-52AF-B097-152E4A023CEF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C85B4EA2-0184-52AF-B097-152E4A023CEF" xml:lang="en"><title>Abstract
+base descriptor classes</title><shortdesc>Describes the modifiable descriptor class and the non-modifiable
+descriptor class.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The concrete descriptor classes are all derived from a set of base classes.
+The base classes are abstract and implement nearly most of the behaviour of
+descriptors. They are:</p>
+<ul>
+<li id="GUID-0942F246-8BB5-50DB-8314-AA4B1DD1B8C0"><p>The abstract non-modifiable
+descriptor</p> </li>
+<li id="GUID-1750CF5B-E6F3-57E5-A107-B17DA0481E22"><p>The abstract modifiable
+descriptor</p> </li>
+</ul>
+<section id="GUID-136970EE-DFB5-469F-9597-1105AA05947E"><title>The abstract non-modifiable descriptor class</title> <p>The
+class has a data member containing the length of the data represented by the
+serived concrete descriptor. It also provides the set of functions through
+which data can be accessed but not modified.</p> <p>This class is supplied
+in two variants:</p> <ul>
+<li id="GUID-669B11F1-84DA-5064-88B8-5D3F603114F6"><p>the 16 bit variant,
+a <codeph>TDesC16</codeph>, to handle Unicode strings.</p> </li>
+<li id="GUID-A9F1113E-0736-570D-BF57-B060817549C8"><p>the 8 bit variant, a <codeph>TDesC8</codeph>,
+to handle non-Unicode strings and binary data.</p> </li>
+</ul> <p>There is also a build independent type, <codeph>TDesC</codeph>. This
+is the type which is most commonly used in program code; the appropriate variant
+is selected at build time.</p> <p>An explicit 8 bit variant is chosen when
+handling binary data. The explicit 16 bit variant is rarely used.</p> </section>
+<section id="GUID-DA165923-2587-4F77-AEAF-FA012B7EAC24"><title>The abstract modifiable descriptor class</title> <p>The class
+has a data member containing the maximum length of data that the descriptor
+is capable of representing. It also provides the set of functions through
+which data can be modified.</p> <p>This class is supplied in two variants:</p> <ul>
+<li id="GUID-3F876EFE-1E91-5834-914A-45478D70B0A7"><p>the 16 bit variant,
+a <codeph>TDes16</codeph>, to handle Unicode strings.</p> </li>
+<li id="GUID-1F1F3894-3CD0-5DEB-AA75-8259CC86BF58"><p>the 8 bit variant, a <codeph>TDes8</codeph>,
+to handle non-Unicode strings and binary data.</p> </li>
+</ul> <p>There is also a build independent type, <codeph>TDes</codeph>. This
+is the type which is most commonly used in program code; the appropriate variant
+is selected at build time.</p> <p>An explicit 8 bit variant is chosen when
+handling binary data. The explicit 16 bit variant is rarely used.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832" xml:lang="en"><title>rbufexample:
+Using resizable buffer descriptors</title><shortdesc>This example application demonstrates how to use the <apiname>RBuf</apiname> class. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> is a resizable buffer descriptor. It is part of
+the user library. It is used to contain strings and binary data when the maximum
+size of the data is not known until run time. </p>
+<p>This overview contains the following sections: </p>
+<ul>
+<li id="GUID-6A429EA8-8396-5A67-BF08-5CC81426D99A"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-7605348A-0F8B-56A4-A48C-C83CB1CD546D">Download</xref> </p> </li>
+<li id="GUID-9BBBEFB0-D463-5A81-9AF8-8FE0FB781D5A"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-BC0B8F0D-94A8-51D1-9BC2-85E4F76C482A">Description</xref>  </p> </li>
+<li id="GUID-4946F730-6E6A-5EC2-8A73-F0E29EBB09D9"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-69043124-f5fc-499b-8550-0c5b6ed66fe5">Class summary</xref>  </p> </li>
+<li id="GUID-4D0A67AF-FAC5-51F5-8C4F-5E9FBF1C2981"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-111B7B66-A3C4-5A15-8CF2-C6A227483651">Build</xref>  </p> </li>
+<li id="GUID-F01C5F43-391A-562A-A6E2-B7C34A2FB01A"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-E30CC1D4-B854-5080-8F37-950CA4D86DD0">See also</xref>  </p> </li>
+</ul>
+<section id="GUID-7605348A-0F8B-56A4-A48C-C83CB1CD546D"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7520d937-647a-495a-9196-edca52b98e89.zip" scope="external">rbufexample.zip</xref>.</p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7520d937-647a-495a-9196-edca52b98e89.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section id="GUID-BC0B8F0D-94A8-51D1-9BC2-85E4F76C482A"><title>Description</title> <ul>
+<li id="GUID-87468748-0221-5005-9A98-EE03F5280421"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-B2AF4A97-A93B-5437-A31D-85C98AFC7DBB"> Creating an RBuf</xref>  </p> </li>
+<li id="GUID-6A66563D-F504-5D7E-8274-78126F2877F8"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-88B88124-BB7D-58DC-9F8A-61C32BDD58C4">Swapping two RBufs</xref>  </p> </li>
+<li id="GUID-6F41B457-6A2B-5895-8404-DCE5F971B59B"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-893B2BF3-AD9F-587D-95D5-165014C932B4">Copying data to an RBuf using the assignment operator</xref>  </p> </li>
+<li id="GUID-0B584C6E-A740-5CD6-A8F7-E2DA4327D2B9"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-2B6B8519-6306-5F0C-8A79-4094A3037901">Reallocating an RBuf</xref>  </p> </li>
+<li id="GUID-D96AC20C-5F22-52F7-B299-F178B90AE214"><p> <xref href="GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita#GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832/GUID-DE5A5DC0-07C6-50B9-AFDA-E69A92A02980"> Replacing and modifying the data in an RBuf</xref>  </p> </li>
+</ul> <p id="GUID-B2AF4A97-A93B-5437-A31D-85C98AFC7DBB"><b>Creating an RBuf</b> </p> <p>The
+example demonstrates creating an <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> in the following
+ways: </p> <ol id="GUID-B4E38F9F-B275-5364-B59C-71087CDDAF1C">
+<li id="GUID-0482EE2B-165C-5B55-B819-741026C38F02"><p> <b>Using RBuf::Create()
+or RBuf::CreateL():</b> These functions create either an empty descriptor,
+or one with data copied from another descriptor. </p> </li>
+<li id="GUID-00E1680C-CB9C-5CC8-BC4A-C7337E0B9B9D"><p> <b>Using RBuf::CreateMax()
+or RBuf::CreateMaxL():</b> These functions set the buffer's current length
+to be the same as its maximum length. </p> </li>
+<li id="GUID-A0E4C908-5542-53D3-8452-BDA3BFB8887D"><p> <b>By assigning from
+an HBufC:</b> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-74F343A0-4ABB-378E-99D0-CAA13581AA4E"><apiname>RBuf::Assign()</apiname></xref> transfers ownership of the
+heap descriptor. It is not possible to access the original heap descriptor
+once ownership has been transferred. </p> </li>
+<li id="GUID-B8812B95-CE27-5850-B866-F6DBC18ADF8C"><p> <b>By assigning some
+previously allocated memory:</b> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-74F343A0-4ABB-378E-99D0-CAA13581AA4E"><apiname>RBuf::Assign()</apiname></xref> transfers
+ownership of allocated memory. It is then not possible to access the original
+memory. </p> </li>
+<li id="GUID-9FCBF30F-815B-5CA9-B0B6-1698DA0C4F0E"><p> <b>Using RReadStream:</b> The
+example writes some text to a file stream (<codeph>RFileWriteStream</codeph>).
+Then it creates the buffer by passing the open stream object to <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-7CACD30A-D6FC-38CB-A754-CB4B5C3728FF"><apiname>RBuf::CreateL()</apiname></xref>. </p> </li>
+</ol><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> - Defines a build-independent resizable buffer
+descriptor.</p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-74F343A0-4ABB-378E-99D0-CAA13581AA4E"><apiname>RBuf::Assign()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-938BB912-4B66-3FF0-B830-CC4F778B23A9"><apiname>RBuf::Create()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-7CACD30A-D6FC-38CB-A754-CB4B5C3728FF"><apiname>RBuf::CreateL()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-7F4E287B-F06C-33CF-9F17-E0E69244860A"><apiname>RBuf::CreateMax()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-792C0C3B-203E-37FF-9BCF-8C9AEDB1CECE"><apiname>RBuf::CreateMaxL()</apiname></xref></p></li>
+</ul> <p id="GUID-88B88124-BB7D-58DC-9F8A-61C32BDD58C4"><b>Swapping two RBufs</b> </p> <p>The
+example creates two resizable buffers using <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-938BB912-4B66-3FF0-B830-CC4F778B23A9"><apiname>RBuf::Create()</apiname></xref>.
+Then it swaps the contents of them using <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-D3EA0EA9-EC2C-3555-8D39-7AF1EF6C7E8B"><apiname>RBuf::Swap()</apiname></xref>. </p> <p> <b>Note:</b> When
+you swap data between two <codeph>RBuf</codeph> s ensure that the maximum
+length of the target <codeph>RBuf</codeph> is sufficient to hold the data,
+otherwise a panic (<codeph>User 11</codeph>) occurs. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-938BB912-4B66-3FF0-B830-CC4F778B23A9"><apiname>RBuf::Create()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-D3EA0EA9-EC2C-3555-8D39-7AF1EF6C7E8B"><apiname>RBuf::Swap()</apiname></xref></p></li>
+</ul> <p id="GUID-893B2BF3-AD9F-587D-95D5-165014C932B4"><b>Copying data to
+an RBuf using the assignment operator</b> </p> <p>The example creates two
+resizable buffers and allocates memory using <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-938BB912-4B66-3FF0-B830-CC4F778B23A9"><apiname>RBuf::Create()</apiname></xref>.
+It then copies data to these buffers. It also copies data from the first buffer
+to the second buffer using the assignment operator. </p> <p> <b> Notes:</b>  </p> <ul>
+<li id="GUID-9B2835F9-BD3E-56DD-9CFD-F71677FFC71C"><p>When you use <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-74F343A0-4ABB-378E-99D0-CAA13581AA4E"><apiname>RBuf::Assign()</apiname></xref>,
+ownership of the buffer is transferred. <codeph>Assign()</codeph> neither
+checks nor frees any pre-existing owned allocated memory. If this descriptor
+already owns some allocated memory, <xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita#GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74/GUID-32EB41B6-A1C8-326C-9D52-095B05D4D20B"><apiname>RBuf16::Close()</apiname></xref> should
+be invoked on it before calling <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-74F343A0-4ABB-378E-99D0-CAA13581AA4E"><apiname>RBuf::Assign()</apiname></xref>, otherwise
+a memory leak will occur. </p> </li>
+<li id="GUID-41218102-1810-5E83-BAEE-5683D378F75F"><p>When you use the assignment
+operator, you must make sure the target descriptor's maximum length is equal
+to or greater than the length of the source descriptor, otherwise a <codeph>User
+11</codeph> panic (descriptor overflow) occurs. Any existing data in the target
+descriptor is replaced. </p> </li>
+</ul> <p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74.dita#GUID-BEFF9C91-DA64-3032-96E8-F5054405DC74/GUID-32EB41B6-A1C8-326C-9D52-095B05D4D20B"><apiname>RBuf16::Close()</apiname></xref></p></li>
+<li><p> <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-74F343A0-4ABB-378E-99D0-CAA13581AA4E"><apiname>RBuf::Assign()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-938BB912-4B66-3FF0-B830-CC4F778B23A9"><apiname>RBuf::Create()</apiname></xref></p></li>
+</ul><p id="GUID-2B6B8519-6306-5F0C-8A79-4094A3037901"><b>Reallocating an
+RBuf</b> </p> <p>The example creates a resizable buffer descriptor, then it
+resizes it using <codeph>RBuf::ReAlloc()</codeph>. The old and new lengths
+are printed to the console to show how <codeph>ReAlloc()</codeph> does not
+change the length of the descriptor, but only its maximum length. Calling <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-D07FA48B-6FD0-3683-AEC9-ABC672AB2D80"><apiname>RBuf::ReAlloc()</apiname></xref> with
+a value of zero frees the memory and sets the length and maximum length to
+zero. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-D07FA48B-6FD0-3683-AEC9-ABC672AB2D80"><apiname>RBuf::ReAlloc()</apiname></xref></p></li>
+</ul> <p id="GUID-DE5A5DC0-07C6-50B9-AFDA-E69A92A02980"><b> Replacing and
+modifying the data in an RBuf</b> </p> <p>The example creates a resizable
+buffer descriptor and replaces a portion of the data in it using <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-0958525F-DB10-3D9A-AE99-B8113CA15810"><apiname>RBuf::Replace()</apiname></xref>.
+The start position and length of the data to be replaced, and the replacement
+text are passed as parameters. <xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-019690E0-EFD2-3A9D-9332-11FB5A16D407"><apiname>RBuf::Delete()</apiname></xref> is then used
+to delete the replacement text, by specifying the position and length of the
+data to be deleted. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-019690E0-EFD2-3A9D-9332-11FB5A16D407"><apiname>RBuf::Delete()</apiname></xref></p></li>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita#GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8/GUID-0958525F-DB10-3D9A-AE99-B8113CA15810"><apiname>RBuf::Replace()</apiname></xref></p></li>
+</ul> </section>
+<section id="GUID-69043124-F5FC-499B-8550-0C5B6ED66FE5"><title>Class summary</title><ul>
+<li><p><xref href="GUID-BFBC574B-EFF6-37A4-9189-B71DA1505BC8.dita"><apiname>RBuf</apiname></xref> - Defines a build-independent resizable buffer
+descriptor.</p></li>
+<li><p> <xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref> - Defines a build-independent heap descriptor.</p></li>
+<li><p><xref href="GUID-EFFA9A71-4CA4-3227-879D-17EFEB8B07D6.dita"><apiname>RFileWriteStream</apiname></xref> - Supports the writing of a stream
+to a file.</p></li>
+<li><p><xref href="GUID-90A3AE1D-DCB2-3E98-8BE9-C48C15964E7D.dita"><apiname>RFileReadStream</apiname></xref> - Supports the reading of a stream
+from a file.</p></li>
+<li><p><xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref></p></li>
+</ul></section>
+<section id="GUID-111B7B66-A3C4-5A15-8CF2-C6A227483651"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build this example application. The example builds an executable file
+called <filepath>rbufexample.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\&lt;build_variant&gt;</filepath> for
+the emulator). After launching the executable, depending on the emulator you
+are using, you may need to navigate away from the application launcher/shell
+screen to view the console. </p> </section>
+<section id="GUID-E30CC1D4-B854-5080-8F37-950CA4D86DD0"><title>See also</title> <p> <xref href="GUID-4AC3CC42-6E8D-584A-AA39-84B5E0F3C16A.dita">How to use the resizable
+buffer descriptor - RBuf</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C8674786-6C09-45C2-BA5D-4F69EBD8E42F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C8674786-6C09-45C2-BA5D-4F69EBD8E42F" xml:lang="en"><title>Creating
+the MMP File</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><b>Add needed libraries used by the MMP file structure:</b></p>
+<p>If developers want to use any of the P.I.P.S. libraries, they need to link
+to the corresponding library in the MMP file using the <codeph>LIBRARY</codeph> keyword.</p>
+<p>If the application has <codeph>main()</codeph> as the entry point, the
+library <filepath>libcrt0.lib</filepath> must be specified as the first library
+otherwise, it will result in linker errors. The user must link to the Symbian
+platform <filepath>euser.dll</filepath>. This is required since the static
+library uses some of the services of the Symbian platform such as creating
+cleanup stack, and having a top level TRAP. All these details are hidden from
+the developer. The developer will write the application as if it were for
+the UNIX environment.</p>
+<codeblock xml:space="preserve">STATICLIBRARY  libcrt0.lib
+LIBRARY        libc.lib 
+LIBRARY        euser.lib  // Needed in order to use Symbian services
+// and whatever Open C libraries are needed…
+</codeblock>
+<p>The <filepath>libcrt0.lib</filepath> library is required if the user is
+not going to write <codeph>E32Main</codeph> within the application (EXE).
+This static library has an implementation of <codeph>E32Main</codeph> within
+which it calls the library initialization method followed by calling main
+written by the developer. This static library also gets command-line arguments
+and passes the same to main. </p>
+<p>If the application has <codeph>E32Main()</codeph> as an entry point, there
+is no need to link to <filepath>libcrt0.lib</filepath> like in the example
+below.  </p>
+<codeblock xml:space="preserve">LIBRARY         libc.lib 
+LIBRARY         libm.lib libpthread.lib 
+LIBRARY         euser.lib</codeblock>
+<p><b>Add needed include paths</b></p>
+<codeblock xml:space="preserve">SYSTEMINCLUDE   \epoc32\include\stdapis 
+</codeblock>
+<note>Some of the SSL/cryptography functions need more than the default available
+stack. The recommended stack size is 10K. To set the stack size to 10K add
+in the MMP file.</note>
+<codeblock xml:space="preserve">EPOCSTACKSIZE 0x10000</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C87DB5C9-160E-5D58-8782-6ADA833ED24F-master.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C87EED5E-8000-5F73-875D-5C82117339A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C87EED5E-8000-5F73-875D-5C82117339A2" xml:lang="en"><title>Camera SnapShot Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e119354_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C893C9E6-47B8-5149-9808-0274C61CF3D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C893C9E6-47B8-5149-9808-0274C61CF3D7" xml:lang="en"><title>OCSP-SWI
+Integration</title><abstract><p>The Symbian platform provides the ability to validate and manage <xref href="GUID-C676C4E6-93AF-59E9-886D-74D59F154490.dita">X.509</xref> certificates.
+This ability is integrated into the software installation process to provide
+Secure Software Install (SWI) with the functionality of performing certificate
+checking at installation time. During installation, SWI checks whether the
+certificates associated with the application to be installed have been revoked.
+It performs this check by using Online Certificate Status Protocol (OCSP). </p><p>You
+can configure SWI to enable or disable the revocation status check of certificates.
+In addition, SWI can also be configured to supply the OCSP client with a default
+Uniform Resource Identifier (URI) for the OCSP server.</p></abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You can configure SWI to enable or disable the revocation status check
+of certificates. In addition, SWI can also be configured to supply the OCSP
+client with a default Uniform Resource Identifier (URI) for the OCSP server. </p>
+<section><title>Installing software based on OCSP check</title> <p>SWI validates
+the certificate in the install file. As part of validation, it carries out
+revocation check, depending on the setting of the <codeph>OcspEnabled</codeph> parameter
+in the <codeph>swipolicy.ini</codeph> file. If the revocation check option
+is not enabled, a warning is displayed giving options to carry out revocation
+check, to continue without revocation check or to cancel the installation.
+If the option is enabled, all certificates in the chain except the <xref href="GUID-2800C486-2FB4-5C5C-990F-CC1A290F7E0C.dita">root</xref> are
+checked. </p> <p> <b>Note:</b> For details on how certificates are validated,
+see <xref href="GUID-A3B58436-07E4-565B-800B-86435D205461.dita">Certificate Validation
+in PKIX</xref>. </p> <p>The results of revocation check decide whether the
+application can be installed. The following are the scenarios associated with
+the certificate revocation check: </p> <ul>
+<li id="GUID-EE8C335A-B74D-56D3-9DC5-8E7D9D9C8EB8"><p>If the OCSP client indicates
+that no certificates are revoked and the operation completes successfully
+with no errors or warnings, the software can be installed. </p> </li>
+<li id="GUID-0F861436-15DE-56C7-A06D-C93C30829313"><p>If OCSP indicates that
+any of the certificates is revoked or if the signature on the OCSP response
+is invalid, a security error is issued and the software cannot be installed. </p> </li>
+<li id="GUID-F8A8F1FB-DC90-58B0-98B7-8EFE4255A2D6"><p>If the revocation status
+of a certificate cannot be determined (because of reasons like lack of network
+access or OCSP responder error), SWI behaves as if the software were unsigned.
+The setting of the <codeph>AllowUnsigned</codeph> parameter in the <codeph>swipolicy.ini</codeph> file
+determines whether the unsigned software can be installed or not. If the parameter
+value is true, SWI issues a warning before installing but allows installation
+of the software. Otherwise it issues an error and does not allow installation. </p> </li>
+</ul> <p> <b>Note:</b> For details of the various parameters in <codeph>swipolicy.ini</codeph>,
+see <xref href="GUID-F8C2E97C-35EC-5437-BC6B-E2A622D2DC4D.dita">Secure Software
+Install Reference</xref>. </p> </section>
+</conbody><related-links>
+<link href="GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita"><linktext>Online Certificate
+Status Protocol</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F" xml:lang="en"><title>Basic Application Framework Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Basic Application Framework Library (BAFL) is a utility library which provides system resources such as clipboard, system sounds, environmental matcher and so on.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C8C2645A-F5A4-53F0-8F43-485FC0B472DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C8C2645A-F5A4-53F0-8F43-485FC0B472DC" xml:lang="en"><title>External
+and internal representations</title><shortdesc>Describes the <codeph>Internalize()</codeph> and <codeph>Externalize()</codeph> functions
+for representing objects.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Since packages may be used to describe an object of any type, and may be
+conveniently written to a file and sent over communications links, it is tempting
+to use them to transmit all application data types.</p>
+<p><note>This is strongly discouraged in Symbian platform programming.</note> </p>
+<p>Packages directly package the <i>internal</i> representation of an object.
+They should only be used when the internal representation is expected by all
+recipients of the package. This would be the case, say, with inter thread
+data transfer or certain rare types of file.</p>
+<p>When an object is stored on file, or sent over a link, it is usually desirable
+to define an <i>external</i> representation which may be safely read by <i>any</i> Symbian
+platform implementation, even on a machine with different endianness, different
+compiler options, and different machine word size.</p>
+<p>In such a case, writing a struct directly is inappropriate. Instead, the <codeph>InternalizeL()</codeph> and <codeph>ExternalizeL()</codeph> functions
+should be implemented for the object and should encapsulate all internalisation
+and externalisation. The stream interface should be used, which may refer
+to file, communications, clipboard and a number of other possibilities.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e163101_href.png has changed
Binary file Symbian3/SDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179_d0e314095_href.png has changed
Binary file Symbian3/SDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e3336_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C90FE253-B88B-5F01-AC8B-E89249083C93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C90FE253-B88B-5F01-AC8B-E89249083C93" xml:lang="en"><title>Console App:
+A Simple Console Program</title><shortdesc> 		This section explains the steps to build the ConsoleApp program
+using the 		FreeBSD source code.  	 </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="SECTION_4C65EFF4E704402B917B1CECC81F76FE"> 		<title>Introduction</title> 
+	<p> 		  This program converts a quantity from one unit of measurement into
+		  another, prompting the user for input. Conversion information is provided
+in a 		  data file, <filepath>slunits.dat</filepath>.  		</p>  		<p> 		  The
+user is prompted for input, but it is important to note that STDLIB 		  does
+not provide all of the functionality of a traditional console driver. 		 
+STDLIB is intended to be a "behind-the-scenes" enabling technology, rather
+than 		  an alternative user interface.  		</p>  		<p> 		  The code for the
+ConsoleApp program was taken from the FreeBSD source 		  code (See <xref href="http://www.freebsd.org" scope="external">http://www.freebsd.org</xref>).  		</p>  	 </section>
+<section> 		<title>Procedure to build the ConsoleApp</title> 		<p> 		  Build
+the program using <filepath>bldmake</filepath> and <filepath>abld</filepath> as
+		  the Hello example. For the Emulator, <filepath>slunits.dat</filepath> is
+copied 		  automatically by <filepath>abld</filepath> into the correct directory.
+For a target 		  phone, ensure that <filepath>slunits.dat</filepath> is located
+in the directory 		  specified in <filepath>pathname.h</filepath>; this is
+the root of the drive on which 		  the program is installed.  		</p>  		<p> 
+	  To install <filepath>ConsoleApp.exe</filepath> on the target phone, create
+a 		  <filepath>.sis</filepath> file using the Symbian Installation system.
+ 		</p>  		<p> 		  To run it on the target phone, invoke <filepath>ConsoleApp.exe</filepath>.
+ 		</p>  	 </section>
+</conbody><related-links>
+<link href="http://www.freebsd.org" scope="external"><linktext>http://www.freebsd.org</linktext>
+</link>
+<link href="GUID-0AF47934-0A16-51A2-9254-992D7C6B322B.dita"><linktext>Application
+Installation Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C93D021E-D99A-5839-AB54-3D8D7620214A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C93D021E-D99A-5839-AB54-3D8D7620214A"><title>X500 and X509</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>X500 provides services for the handling of X500 distinguished names. It implements the Distinguished Name as defined in the X.500 standard. An X.500 Distinguished Name consists of a sequence of <codeph>AttributeTypeAndValue</codeph> objects, as defined in the X.520 standard. Thus the two public classes implemented in this DLL are <codeph>CX520AttributeTypeAndValue</codeph> and <codeph>CX500DistinguishedName</codeph>. </p> <p>X509 provides classes for handling X509 certificates. It provides an implementation of the X.509 certificate and its components. In fact X500 also includes structures from X.520, but for simplicity they are considered to be part of X.500. </p> <p>For the most part these DLLs simply represent data which the <filepath>PKIXCert</filepath> DLL operates on: they are the primary input to certificate validation. </p> <p>In the X.500, X.509 and X.520 standards the structures are specified with Abstract Syntax Notation 1 (ASN.1) and are encoded for transport using the Basic Encoding Rules (BER) which encode ASN.1 as 8-bit binary data. </p> <p>In addition, when they represent data to be signed, the signature is calculated on the data encoded using Distinguished Encoding Rules (DER: a subset of BER which has the property that the same data always encodes to the same binary representation). </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e39244_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C9823942-CE52-53E3-B183-3B1F6509749F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C9823942-CE52-53E3-B183-3B1F6509749F" xml:lang="en"><title>UI
+graphics utilities overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-FF9BDA9A-2DD5-489E-8481-D3554969F2E5"><title>Purpose</title> <p>Provides miscellaneous user interface utility
+functions, relating to fonts, colours, and drawing. </p> </section>
+<section id="GUID-6740AB63-A542-43E1-AC7D-582EC8F69A68"><title>Architectural relationships</title> <p>The API is a simple
+library that is used by applications and other UI framework APIs. </p> </section>
+<section id="GUID-9ABBAE7A-8733-4C09-9F0D-49148D4FEF94"><title>Description</title> <p><b>Colour utilities</b> </p> <p>Colour
+utilities are available from <codeph>CColorArray</codeph>, <codeph>CColorList</codeph>,
+and <codeph>ColorUtils</codeph>. </p> <p><b>Font utilities</b> </p> <p>Font
+utilities are available from <codeph>CCleanupStackableFont</codeph>, <codeph>FontUtils</codeph>, <codeph>ResourceUtils</codeph>,
+and <codeph>TLogicalFont</codeph>. A family of classes derived from <codeph>TFindWidthOfWidestTextItem</codeph> find
+the pixel width for common items, such as days and digits, using a particular
+font. </p> <p><b>Icon utility</b> </p> <p> <codeph>CGulIcon</codeph> packages
+two bitmaps, one each for an icon image and its mask. </p> <p><b>Text and
+drawing utilities</b> </p> <p>Text and drawing utilities are available from <codeph>TextUtils</codeph> and <codeph>DrawUtils</codeph>. </p> <ul>
+<li id="GUID-74A1F756-80BB-5E1E-850A-826B1C3A67D9"><p>Utilities for help with
+finding text are available from <xref href="GUID-10299A6C-D7E0-35B3-B473-D23A174E6611.dita"><apiname>CTulAddressStringTokenizer</apiname></xref>. </p> </li>
+<li id="GUID-762B76D2-A181-582C-B75F-C7445C33F8A5"><p>Utilities for help with
+loading and formatting resource strings are available from <xref href="GUID-10299A6C-D7E0-35B3-B473-D23A174E6611.dita"><apiname>TulTextResourceUtils</apiname></xref> </p> </li>
+<li id="GUID-966D4095-A0DF-5CD0-8EAA-FC8FDED9ED9A"><p>Utilities for help with
+parsing and validating phone numbers are available from <xref href="GUID-10299A6C-D7E0-35B3-B473-D23A174E6611.dita"><apiname>TulPhoneNumberUtils</apiname></xref> </p> </li>
+<li id="GUID-4B8F2543-8945-538B-8166-6DE9DA891448"><p>Utilities for help with
+reading strings from resource files are available from <xref href="GUID-10299A6C-D7E0-35B3-B473-D23A174E6611.dita"><apiname>CTulStringResourceReader</apiname></xref> </p> </li>
+<li id="GUID-9253C784-6BFF-5266-BB91-398503133BCD"><p>Utilities for help with
+rectangular areas are provided by <xref href="GUID-10299A6C-D7E0-35B3-B473-D23A174E6611.dita"><apiname>TGulAlignment</apiname></xref> and <xref href="GUID-10299A6C-D7E0-35B3-B473-D23A174E6611.dita"><apiname>TGulBorder</apiname></xref>. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8" xml:lang="en"><title>HelloWorldBasic_reg.rss</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You need to register your applications in order to make them visible
+to the application launcher and to provide other information to the underlying
+system. To register, you need to provide a registration resource file, typically
+named <parmname>&lt;application_name&gt;_reg.rss</parmname>, that contains the
+non-localized information for your application. This section contains an example
+of such a file.</p>
+<p>For more information on registration files in general, see <xref href="GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita">Registration</xref>. </p>
+<p>For information on creating your own registration resource files, see <xref href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita">Creating
+registration resource files</xref>.</p>
+<codeblock id="GUID-631DE04B-6396-4CAD-B428-3342D06BA732" xml:space="preserve">#include "Helloworldbasic.rls"
+</codeblock>
+<p>This preprocessor statement adds the <parmname>rls</parmname> project
+file that controls the strings loaded for different languages based on the
+Symbian OS language setting to the preprocessing path. For more information
+on localisation, see <xref href="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita">Internationalization
+and localization</xref>.</p>
+<codeblock id="GUID-1081D8D5-FE34-4A9F-B335-32E9A809314F" xml:space="preserve">#include  &lt;appinfo.rh&gt;
+</codeblock>
+<p>This preprocessor statement adds the resource header file that provides
+the data structure used for the <parmname>RESOURCE</parmname> statement in
+this registration resource file.</p>
+<codeblock id="GUID-C78D64EE-3ED7-4A8A-96C6-C048879F35C2" xml:space="preserve">#include  &lt;HelloWorldBasic.rsg&gt;
+
+</codeblock>
+<p>This preprocessor statement adds the generated resource header file
+for the <i>HelloWorldBasic</i> application to the preprocessor path to allow
+access to the <parmname>R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO</parmname> resource.</p>
+<codeblock id="GUID-6921E324-DF9E-4646-9ED9-8139F1A7816A" xml:space="preserve">UID2 KUidAppRegistrationResourceFile
+</codeblock>
+<p>This required statement defines the UID2 value for a registration resource
+file. </p>
+<codeblock id="GUID-C3F02E64-0C14-4A31-BBC2-772021D3E833" xml:space="preserve">UID3 0xA000017F
+
+</codeblock>
+<p>This required statement defines the <xref href="GUID-EA05F9B6-52C7-4BD9-8B9A-4BA3456E70B5.dita">UID3</xref> of
+the application.</p>
+<codeblock id="GUID-CCFD588A-30DC-43ED-9AB1-AB2AC3A83079" xml:space="preserve">RESOURCE APP_REGISTRATION_INFO
+  {
+  app_file="HelloWorldBasic";
+  localisable_resource_file =  STRING_r_helloworldbasic_loc_resource_file_1;
+  localisable_resource_id = R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO;
+
+  embeddability=KAppNotEmbeddable;
+  newfile=KAppDoesNotSupportNewFile;
+  }
+
+</codeblock>
+<p>This <parmname>RESOURCE</parmname> definition contains the nonlocalizable
+properties of the <i>HelloWorldBasic</i> application, where</p>
+<ul>
+<li><p><parmname>HelloWorldBasic</parmname> is the name of the application
+executable</p></li>
+<li><p><parmname>STRING_r_helloworldbasic_loc_resource_file_1</parmname> contains
+the value <parmname>\\resource\\apps\\HelloWorldBasic</parmname> in all <parmname>rls</parmname> files.
+This is the location of the <i>HelloWorldBasic</i> resource files.</p>
+</li>
+<li><p><parmname>R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO</parmname> is
+the identifier for the resource declared in <parmname>helloworldbasic.rss</parmname> that
+contains the short caption, caption, and icon information</p></li>
+<li><p><parmname>KAppNotEmbeddable</parmname> indicates that <i>HelloWorldBasic</i> is
+not embeddable</p></li>
+<li><p><parmname>KAppDoesNotSupportNewFile</parmname> indicates
+that <i>HelloWorldBasic</i> does not support new files</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C9A1CC1E-2398-5887-8C64-7B8EE0B22022.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C9A1CC1E-2398-5887-8C64-7B8EE0B22022"><title>SQL Interfaces</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document examines both SQL options in the Symbian OS: Symbian SQL and SQLite. </p> <section><title>Purpose</title> <p>If you are creating or porting an SQL capable application to Symbian OS you should read this document to get a better understanding of the issues and options. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section><title>Introduction</title> <p>Symbian OS exposes two interfaces to SQL: </p> <ol id="GUID-EC4FEAFB-BF19-5B50-9375-D01DE46B93FF"><li id="GUID-6503D03A-7D56-5D90-A0A9-A22BB47292F3"><p>the Symbian SQL component of Symbian OS </p> </li> <li id="GUID-D30E8F76-CCC4-556C-9082-1B823875017F"><p>the open source SQLite 3 API. </p> </li> </ol> <p>If you are developing an application for Symbian OS which involves accessing a database with SQL you must decide which of these interfaces to use before you begin. This is for two reasons. </p> <ol id="GUID-DBDCA7D4-3CC9-5D98-A159-A0BE9BA579F5"><li id="GUID-AB276B85-649B-5711-9FF8-554A1F4D1A2A"><p>It is not possible to access the same database with both interfaces, whether concurrently or not. </p> </li> <li id="GUID-EEA6698B-9407-5EB7-AF61-E78325A5E187"><p>The two interfaces are different and do not have identical functionality. </p> </li> </ol> <p><b>Choose an SQL interface</b> </p> <p>Here is a simple set of rules to help you select the interface most appropriate to your development needs. </p> <ul><li id="GUID-8D28DF39-824E-5E0A-801B-33CB924BF406"><p> <xref href="GUID-1F12E3F5-45B2-55EC-B021-00338277C608.dita">Symbian SQL DB</xref> if you are developing a new application for the Symbian OS platform </p> </li> <li id="GUID-83033CC7-D55F-5C96-9BB1-DC1A6B00ECA1"><p> <xref href="GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246.dita"> SQLite</xref> 3 interface if you are porting an existing SQLite application written in C </p> </li> </ul> </section> <section><title>Advantage of Symbian SQL</title> <p>The advantages of using Symbian SQL to develop a Symbian OS database application are its close integration into the Symbian OS platform as a whole and the consequent robustness, efficiency and security that this provides. </p> <ul><li id="GUID-0F131E72-2374-5E23-B675-790D0B5C2861"><p>Symbian SQL is robust because applications are isolated from the server. Errors in the application do not affect the server and vice versa. </p> </li> <li id="GUID-9E6100F8-2D80-574D-9252-9E893C877628"><p>Symbian SQL is robust because an application can be configured to be included in database backup and restore. </p> </li> <li id="GUID-2BC27055-6799-5FA7-82BB-E353B2587CC3"><p>Symbian SQL is efficient because multiple applications share one instance of a database cache. The server has a single connection to the file system and there is no need of multiple caches that duplicate the use of memory. </p> </li> <li id="GUID-B3FD8457-9107-5EB6-817D-B7226C41A8FA"><p>Symbian SQL is efficient because the single connection from the server to the file system eliminates the need for mutexes. This makes efficient use of kernel resources. </p> </li> <li id="GUID-61CAB80A-1A51-5CF4-B9BC-2529269046DC"><p>Symbian SQL is efficient because it sets up a soft heap limit. This means that the server reuses free memory before it attempts to allocate more. The limit may still be overridden, for example when a blob or a large text column is accessed. This limits RAM usage. </p> </li> <li id="GUID-33FF23F0-96DF-5FB2-A300-82D59D44C6E9"><p>Symbian SQL is efficient because it provides asynchronous APIs. This allows the application to make a database call and perform other work while it waits for the call to return. </p> </li> <li id="GUID-AA010085-DA9F-5944-AC8D-28A07BB5FBA6"><p>Symbian SQL is efficient because the server is single threaded and no file locking mechanism is required. </p> </li> </ul> </section> <section><title>Advantages of SQLite 3 API</title> <p>The advantages of the SQLite 3 API are its open source status, excellent documentation, widespread use and large developer community. For a single cross platform application written by a team of developers it may not be worthwhile mastering the C++ interface and to use the SQLite 3 API instead. </p> <p>The SQLite 3 API exposes many functions not available in Symbian SQL, particularly the SQLite C extension API. However, it should be noted that Symbian SQL provides several built-in collation functions and a built-in implementation of the LIKE operator. </p> <p>SQLite 3 API supports multi-threaded applications and provides concurrent database access. </p> </section> </conbody><related-links><link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>SQL Overview</linktext> </link> <link href="GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246.dita"><linktext>SQLite Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA" xml:lang="en"><title>CClasses:
+typical ‘C’ class</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p>This shows a typical ‘C’ class, derived
+from <codeph>CBase</codeph>, and highlights the use of two phase construction
+and use of the cleanup stack to implement the complete construction of an
+instance of that class on the heap. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-f7ec77dd-0d09-4301-be78-4c7fb7b8b3e9.zip" scope="external"> CClasses.zip</xref></p><p>Click on the following link to
+download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.zip" scope="external">CommonFramework.zip</xref>.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-f7ec77dd-0d09-4301-be78-4c7fb7b8b3e9.html" scope="peer"> browse CClasses</xref> to view the example code. </p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.html" scope="peer">browse CommonFramework</xref> to view additional
+files.</p></section>
+<section><title>Class summary</title><p><xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase </apiname></xref> <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack </apiname></xref>  </p></section>
+<section><title>Build</title> <p>The example source code includes the two
+project files needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p> <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian platform build
+process</xref> describes how to build this application, which results in an
+executable called: </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or udeb&gt;\CCLASSES.EXE</filepath>. </p> </section>
+<section><title>Usage</title> <p>Run the executable <filepath>CCLASSES.EXE</filepath>. </p> <p>Executables
+for the emulator targets <filepath>wins</filepath> and <filepath>winscw</filepath> can
+be run on your PC. Executables for ARM targets must be copied to your target
+platform before being run. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C9D4D586-58BF-5676-A53F-9C3A51101430.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-C9D4D586-58BF-5676-A53F-9C3A51101430"><title>Guidelines for Writing Standard C++ Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Ensure that you adhere to the following guidelines while writing Standard C++ Libraries on Symbian platform: </p> <ol id="GUID-A32C6BC0-A0FE-55DF-B553-C565E0429986"><li id="GUID-C89A488D-91C2-5D87-A0CD-50E8EA4906C5"><p> <b> Developing a DLL - Import/Export static data</b>  </p> <p>Importing or exporting writable static data from a DLL is not supported on Symbian platform. To achieve this, you must provide an exported function in the DLL to return a reference or pointer to that data. For more information about limitations on static data, see the <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static data</xref> section. </p> </li> <li id="GUID-B6D7252A-8B10-55D9-8548-FFAF2BBB89B6"><p> <b>Developing a static library</b>  </p> <p>The Symbian build environment enforces the following rules: </p> <ol id="GUID-CE3218B3-CE02-538B-9045-3174E3DD8E66"><li id="GUID-4E9EDEDF-C7F4-58B6-B699-96E93C80AE06"><p>If a static library is of type <codeph>STDLIB</codeph>, it is allowed to be linked to by an <codeph>STDEXE</codeph> or <codeph>STDDLL</codeph>. </p> </li> <li id="GUID-09D8FC39-DEB9-5C48-83D9-DBDD2914BB21"><p>If a static library is of type <codeph>STDLIB</codeph>, it is allowed to be linked to by an executable (<codeph>EXE</codeph> or a <codeph>DLL</codeph>) that has the <codeph>STDCPP</codeph> keyword in its <filepath>.mmp</filepath> file. </p> </li> <li id="GUID-5F808BD6-30BC-5D0A-A0C1-71798D6D1187"><p>If a static library is of target type <codeph>LIB</codeph> and its <filepath>.mmp</filepath> file contains the keyword <codeph>STDCPP</codeph>, it is allowed to be linked to by an <codeph>STDEXE</codeph> or <codeph>STDDLL</codeph>. </p> </li> <li id="GUID-AAEE8D74-4B40-571F-B8ED-675239711EF9"><p>If a static library is of target type <filepath>LIB</filepath> and its <filepath>.mmp</filepath> file does <b>not</b> contain the keyword <codeph>STDCPP</codeph>, it is allowed to be linked to by an executable that does <b>not</b> contain the keyword <codeph>STDCPP</codeph>. </p> </li> <li id="GUID-E1FA66C4-138A-5BE7-9E79-9AEDE01FB2BC"><p>If a static library is of target type <codeph>LIB</codeph> and its <filepath>.mmp</filepath> file does <b>not</b> contain the keyword <codeph>STDCPP</codeph>, it is <b>not</b> allowed to be linked to by an executable that is an <codeph>STDEXE</codeph> or <codeph>STDDLL</codeph>. </p> <p> <b>Note:</b> An attempt to violate this rule causes a build time error. </p> </li> <li id="GUID-016A6448-F8EC-5D46-B4BF-DBE9130CBF8B"><p>If a static library is of target type <codeph>STDLIB</codeph>, it is <b>not</b> allowed to be linked to by an executable (<codeph>EXE</codeph> or <codeph>DLL</codeph>) that does <b>not</b> mention the keyword <codeph>STDCPP</codeph>. </p> <p> <b>Note:</b> An attempt to violate this rule causes a build time error. </p> </li> </ol> </li> </ol> </conbody><related-links><link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright Acknowledgments for Standard C++
+                (STLport)</linktext> </link> <link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard C++ Library Overview</linktext> </link> <link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext> Standard C++ Support on Symbian Platform</linktext> </link> <link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building a Standard C++ Application or
+                Library</linktext> </link> <link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext> </link> <link href="GUID-1ACD01D1-2055-581A-9478-2C0D7D1CF9E6.dita"><linktext>
+                Use Cases for Writing Standard C++ Code</linktext> </link> <link href="GUID-AF2CE612-F12E-5A18-81A5-C303992D2D46.dita"><linktext>Possible Problems</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2" xml:lang="en"><title>File Stores</title><shortdesc>Provides permanent, direct and dictionary file stores as well as file stream stores. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the material in this section to learn about file stores. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-C9F4AF3A-158C-4438-930D-9E351B89280C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-C9F4AF3A-158C-4438-930D-9E351B89280C" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Tactile feedback client API is an SDK API and first released in S60
+5th Edition.  </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e405579_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CA35A708-C6D9-51D7-873B-A79606FFAF66.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CA35A708-C6D9-51D7-873B-A79606FFAF66"><title>How to search for files with TFindFile</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following example accumulates a list of all the files on any drive which are in a particular directory and which match a name with wildcards, for example, all files matching <filepath>\resources\fonts\*.gdr</filepath>. </p> <p>To start a search, use <codeph>TFindFile::FindWildByDir()</codeph>. You can then call <codeph>TFindFile::FindWild()</codeph> to perform the same search on another drive. </p> <p>To retrieve the fully qualified path of the matching files, class <codeph>TParse</codeph> is used to combine the filename with the drive letter and directory which contains the file. The example works as follows: </p> <ol id="GUID-E589950F-603A-5BB3-9387-06D1B2CE2E4B"><li id="GUID-A748895E-D312-505C-A2D7-3C35952F7913"><p>Construct a <codeph>TFindFile</codeph> object. </p> </li> <li id="GUID-A6DE36F9-033A-534B-A27D-A3B8FC50A8D5"><p>Use <codeph>FindWildByDir()</codeph> to start the search for matching files. There is considerable flexibility in the handling of <codeph>aWildName</codeph> and <codeph>aScanDir</codeph>, but the simplest and most common case is where <codeph>aWildName</codeph> is the filename and extension (for example, <filepath>*.gdr</filepath>) and <codeph>aScanDir</codeph> is the directory name, without a drive letter, but including a trailing directory separator (for example, <filepath>\resources\fonts\</filepath>). </p> </li> <li id="GUID-44EE24DB-880F-52A4-85E1-02C575CC6B9F"><p>The list of matching files is returned in a <codeph>CDir</codeph> object, which is implemented as an array. <codeph>Count()</codeph> retrieves the number of items in the list. </p> </li> <li id="GUID-FE931EA6-0AB0-5D5C-88ED-7E4F506DDE60"><p>Use <codeph>file_finder.File()</codeph> to retrieve the drive and path of the folder containing the files in the <codeph>CDir</codeph>, (for example <filepath>Z:\resources\fonts\</filepath>). </p> </li> <li id="GUID-67ACA73A-CDDE-5C95-8B31-4D421BE4D95D"><p>Use <codeph>TParse::Set()</codeph> to combine the file name and path into a full filename. </p> </li> <li id="GUID-B9EEB198-264B-5A82-869D-329077498849"><p>Use <codeph>TFindFile::FindWild()</codeph> to continue the search on the next drive in the search sequence. </p> </li> </ol> <codeblock id="GUID-FECFC563-7050-5A63-B29F-BF757B608818" xml:space="preserve">void ForAllMatchingFiles(RFs&amp; aSession, const TDesC&amp; aWildName, 
+            const TDesC&amp; aScanDir)
+    {        
+    TFindFile file_finder(aSession);
+    CDir* file_list;        
+    TInt err = file_finder.FindWildByDir(aWildname,aScanDir, file_list);
+    while (err==KErrNone)
+        {
+        TInt i;
+        for (i=0; i&lt;file_list-&gt;Count(); i++)
+            {
+            TParse fullentry;
+            fullentry.Set((*file_list)[i].iName,&amp; file_finder.File(),NULL);
+            // Do something with the full filename...
+            // ...
+            }
+        delete file_list;
+        err=file_finder.FindWild(file_list);
+        }
+    }</codeblock> <section><title>Notes</title> <ul><li id="GUID-70ACE146-F1EF-50DE-8B9A-C6A7AEAB14A3"><p> <codeph>(*file_list)[i].iName</codeph> is the name of a file matching the pattern specified (e.g. <filepath>Eon.gdr</filepath>). </p> </li> <li id="GUID-F002137B-9501-5552-9B33-09CFF804B922"><p>It is your responsibility to delete the <codeph>CDir</codeph> object when you have finished with it. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CA4C11C4-CDD3-4154-B401-B37A88676322_d0e46178_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CA4C11C4-CDD3-4154-B401-B37A88676322_d0e52225_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e225553_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CABA0B4D-11E4-5659-B949-C4277FB63804.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CABA0B4D-11E4-5659-B949-C4277FB63804" xml:lang="en"><title>Notifier</title><shortdesc>A notifier is a simple service that allows either a single line
+message (an infoprint) or a simple dialog box to be displayed on the hardware's
+display device. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>It is used for sending (debug) trace messages to the screen and putting
+up debug dialog boxes. It can be used in any environment, including the text
+shell used for development of engine or low level type code. Because it doesn't
+require Uikon it is invaluable for developers who need to work without GUI
+dependencies. </p>
+<p>The dialog box consists of two lines of text and two buttons. The buttons
+each display a single text character and the user is expected to key in one
+of these characters. </p>
+<p>The notifier is a server, managed by the Kernel. The client side creates
+a session through an <codeph>RNotifier</codeph> handle. </p>
+<p> <note/> If a plug-in notifier DLL fails to load successfully, the
+OS will not start. Notifiers are critical system resources which must not
+fail to load correctly. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321" xml:lang="en"><title>elf2e32
+command syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Overview</title> <p>The <filepath>elf2e32</filepath> tool's
+primary function is to create executables (DLLs and EXEs) in the format required
+by Symbian platform, known as the E32Image format. The tool takes as input,
+the executables produced by a compiler in the standard Executable and Linking
+Format (ELF), and Symbian platform-specific options specified as command-line
+arguments to the tool. The tool is located in at <filepath>epoc32\tools\elf2e32.exe</filepath>. </p> <p><b>Invocation
+syntax </b> </p> <p> <codeph>elf2e32 [--capability=&lt;capabilities&gt;] [--compressionmethod
+          [none | inflate | bytepair]] [--debuggable] [--dlldata]        
+  [--definput=&lt;file-path&gt;] [--defoutput=&lt;file-path&gt;]           [--dso=&lt;file-path&gt;]
+[--dump=&lt;dump-options&gt;]           [--e32input=&lt;file-path&gt;] [--elfinput=&lt;file-path&gt;]
+[--fixedaddress]           [--heap=&lt;committed-size&gt;[,&lt;reserved-size&gt;]]
+[--help]           [--libpath=&lt;search-paths&gt;] [--linkas=&lt;name&gt;] [--namedlookup]
+          [--noexportlibrary] [--output=&lt;file-path&gt;] [--sid=&lt;secure-ID&gt;]
+          [--stack=&lt;size&gt;] [--sysdef=&lt;ordinal-number&gt;,&lt;symbol&gt;] 
+         [--targettype=&lt;target-type&gt;] [--uid1=&lt;UID&gt;] [--uid2=&lt;UID&gt;]
+          [--uid3=&lt;UID&gt;] [--uncompressed]</codeph>  </p> </section>
+<section><title>Options</title> <table id="GUID-40226F24-CBEA-5810-832A-9FEC90B108AB">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Option</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>capability=&lt;capabilities&gt;</codeph>  </p> </entry>
+<entry><p>Platform security capabilities to be assigned to the executable. </p> <p>Capabilities
+can be specified by name using the set of identifiers used in mmp files, i.e.: <codeph>TCB</codeph>, <codeph>CommDD</codeph>, <codeph>PowerMgmt</codeph>, <codeph>MultimediaDD</codeph>, <codeph>ReadDeviceData</codeph>, <codeph>WriteDeviceData</codeph>, <codeph>DRM</codeph>, <codeph>TrustedUI</codeph>, <codeph>ProtServ</codeph>, <codeph>DiskAdmin</codeph>, <codeph>NetworkControl</codeph>, <codeph>AllFiles</codeph>, <codeph>SwEvent</codeph>, <codeph>NetworkServices</codeph>, <codeph>LocalServices</codeph>, <codeph>ReadUserData</codeph>, <codeph>WriteUserData</codeph>, <codeph>Location</codeph>, <codeph>SurroundingsDD</codeph>, and <codeph>UserEnvironment</codeph>. </p> <p>Multiple
+capabilities can be specified using "+" as a separator. For example: </p> <codeblock id="GUID-80CCAB8E-AA0C-5B48-9E68-59AB1670BCA6" xml:space="preserve">--capability=LocalServices+ReadDeviceData+ReadUserData</codeblock> <p>The
+special capability name <codeph>ALL</codeph> can be used to represent all
+capabilities supported by the current version of Symbian platform. This can
+also be used together with capability names prefixed with a '-' to indicate
+which capabilities to exclude. For example: </p> <codeblock id="GUID-08672BAE-CABA-564E-B49C-6AB6FA8E8BA5" xml:space="preserve">--capability=ALL-TCB-TrustedUI</codeblock> <p>The default is no capabilities though the word <codeph>NONE</codeph> can
+be used explicitly. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>debuggable</codeph>  </p> </entry>
+<entry><p>Specifies that the application can be debugged using the run-mode
+debug subsystem. Only executables (EXEs and EXEXPs) can be specified as <codeph>debuggable</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>definput=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Input DEF file. </p> <p>This is used to specify a DEF file when
+constructing a DLL and/or import library. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>defoutput=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Output DEF file. </p> <p>Specifies a DEF file to be constructed
+by the tool. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>dlldata</codeph>  </p> </entry>
+<entry><p>Allow writable static data in the DLL. </p> <p>The default is that
+a DLL may not have writable static data. For more information, see <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static
+data</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>dso=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Output DSO (or library) file. </p> <p>Specifies the LIB file to
+be constructed by the tool. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>dump=&lt;dump-options&gt;</codeph>  </p> </entry>
+<entry><p>Used to specify the information generated when the <codeph>e32input</codeph> option
+is used. The sections to include are specified as follows: </p> <ul>
+<li id="GUID-840C91A5-4C8A-507A-A4A3-D78BA9A370D7"><p> <codeph>h</codeph>:
+Header </p> </li>
+<li id="GUID-4BE04059-6BA5-51D2-9581-74808320B726"><p> <codeph>s</codeph>:
+Security information </p> </li>
+<li id="GUID-F61A5E32-808F-553F-B65E-6DB64270434B"><p> <codeph>c</codeph>:
+Code section </p> </li>
+<li id="GUID-B61E0C72-4DEC-5160-BC55-FE4F9094B0D9"><p> <codeph>d</codeph>:
+Data section </p> </li>
+<li id="GUID-8D16EF3E-63E0-577D-9DEE-EAD64D5B342D"><p> <codeph>e</codeph>:
+Export information </p> </li>
+<li id="GUID-158B2410-6EBF-5D09-88E7-3CFC2E46DC25"><p> <codeph>I</codeph>:
+Import table </p> </li>
+</ul> </entry>
+</row>
+<row>
+<entry><p> <codeph>e32input=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Dumps a description of the specified E32Image file to standard output.
+The output describes the executable's properties such as its header, its imports
+and exports, and the contents of its code and data sections. Output options
+are specified using the <codeph>--dump</codeph> parameter. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>elfinput=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Input ELF file. </p> <p>Specifies a compiler-generated executable
+in ELF format to be converted into E32Image format by the tool. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>fixedaddress</codeph>  </p> </entry>
+<entry><p>Indicates that the process must have a fixed address. </p> <p>See <xref href="GUID-A16508C2-2743-5E36-BCFB-C509ACCD372F.dita">Fixed processes</xref> for
+more information. </p> <p>The default is no fixed address. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>heap=&lt;committed-size&gt;[,&lt;reserved-size&gt;]</codeph>  </p> </entry>
+<entry><p>The committed size and reserved size of the heap for the process,
+specified in bytes. </p> <p>The first value given is the committed size, followed
+by the reserved size which is optional. </p> <p>The default committed size
+is 0x1000 and the default reserved size is 0x100000. </p> <p>See <xref href="GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645.dita">Memory
+Management concepts</xref> for more information. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>help</codeph>  </p> </entry>
+<entry><p>Displays help text for the tool. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>libpath=&lt;search-paths&gt;</codeph>  </p> </entry>
+<entry><p>A semi-colon separated list of search paths that the tool should
+use to locate import libraries. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>linkas=&lt;name&gt;</codeph>  </p> </entry>
+<entry><p>The internal name used in the image file for the executable. This
+can include information that specifies the executable version (in braces)
+and the UID3 (in square brackets). For example, <codeph>foo{00020001}[10011235].exe</codeph>,
+would be used for an executable <filepath>foo.exe</filepath>, at version 2.1,
+with UID3 <codeph>0x10011235</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>log=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Redirects console log messages to the specified file </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>compressionmethod [none | inflate | bytepair]</codeph>  </p> </entry>
+<entry><p>The compression method to be used to compress the files. The tool
+uses the <codeph>inflate</codeph> method by default. </p> <p>The following
+compression methods can be used: </p> <p><table id="GUID-66F65203-1E4F-56D9-9AB8-7D47420C0B3B">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p>none </p> </entry>
+<entry><p>The files are not compressed. This is equivalent to using the <codeph>uncompressed</codeph> keyword. </p> <p> <b>Note</b>:
+The <codeph>uncompressed</codeph> keyword, when specified, takes precedence
+over any <codeph>compressionmethod</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>inflate </p> </entry>
+<entry><p>Compresses executable files using the default (Deflate, Huffman+LZ77)
+algorithm. </p> </entry>
+</row>
+<row>
+<entry><p>bytepair </p> </entry>
+<entry><p>Compresses executable files using the bytepair algorithm. Bytepair
+compression allows faster decompression than the default Deflate, Huffman+LZ77
+algorithm and supports demand paging by performing compression and decompression
+of code in independent 4KB pages. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>namedlookup</codeph>  </p> </entry>
+<entry><p>Enables symbol lookup by name using the <xref href="http://www.opengroup.org/onlinepubs/009695399/functions/dlsym.html" scope="external">dlsym</xref> Open Group API. This option has an impact on
+the binary size as Symbian platform binaries do not include symbol information
+by default. </p> <p> <b>Note</b>: If the tool is invoked by the Symbian platform
+build toolchain, symbol lookup is enabled for the <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> target
+types only. To enable symbol lookup for other target types, the tool must
+be invoked independently. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>noexportlibrary</codeph>  </p> </entry>
+<entry><p>Suppress implicit exports. </p> <p>As part of the library exports,
+the RVCT tools generate items not marked as <codeph>EXPORT_C</codeph> in the
+source code. These include Virtual Table and Run-time Type Information entries.
+Specifying this option causes the tool not to include these exports. </p> <p>For
+background information, see <filepath>cedar\generic\tools\documentation\Migrating_from_RVCT21_build_328_to_build_416_v1.0.doc</filepath>. </p> <p>The default is to include these items generated by RVCT. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>output=&lt;file-path&gt;</codeph>  </p> </entry>
+<entry><p>Output E32 image file name. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>sid=&lt;secure-ID&gt;</codeph>  </p> </entry>
+<entry><p>Secure ID (SID) of the executable. </p> <p>An SID identifies an
+executable uniquely on a phone. This allows service providers such as servers
+to make security checks on the basis of the executable making the request. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>stack=&lt;size&gt;</codeph>  </p> </entry>
+<entry><p>Specifies the stack size for a process in bytes. </p> <p>The default
+is 0. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>sysdef=&lt;ordinal-number&gt;, &lt;symbol&gt;</codeph>  </p> </entry>
+<entry><p>This option forces the specified symbol to be exported at the specified
+ordinal position. </p> <p>This is required for some target types (polymorphic
+DLLs). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>targettype=&lt;target-type&gt;</codeph>  </p> </entry>
+<entry><p>Target type. The vaild types are as specified by the mmp <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref> keyword. </p> <p>If <codeph>elfinput</codeph> is specified and there is no targettype,
+a <xref href="GUID-9605B59D-F9DB-4BA3-8C87-1C5205976CBB.dita#GUID-9605B59D-F9DB-4BA3-8C87-1C5205976CBB/GUID-cd54fdec-8587-4d01-b839-d23af95c76b8">Custom
+target</xref> is assumed. </p> <p>An <codeph>IMPLIB</codeph> target is assumed
+if <codeph>--elfinput</codeph> is not specified and <codeph>-deffilein</codeph> is
+specified. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uid1=&lt;UID&gt;</codeph>  </p> </entry>
+<entry><p>UID 1 value for output executable. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uid2=&lt;UID&gt;</codeph>  </p> </entry>
+<entry><p>UID 2 value for output executable. </p> <p>The default is 0. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uid3=&lt;UID&gt;</codeph>  </p> </entry>
+<entry><p>UID 3 value for output executable. </p> <p>The default is 0. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uncompressed</codeph>  </p> </entry>
+<entry><p>Specifies that the target executable must not be compressed. </p> <p>By
+default, the target executable is compressed. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>unfrozen</codeph>  </p> </entry>
+<entry><p>Specifies that the input DEF file (specified with <codeph>--definput</codeph>)
+is not treated as frozen. This means that the tool will not report errors
+if the executable does not contain symbols that are specified in the DEF file. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>vid</codeph>  </p> </entry>
+<entry><p>Vendor ID (VID) of the executable. </p> <p>A VID allows service
+providers such as servers to make security checks on the basis of the supplier
+of the executable making the request. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table specifies whether an option is required, optional
+or not applicable (N/A) for the main use cases of the tool (namely creating
+DLLs, EXEs, EXEs with exports (EXEXP target), and import libraries (IMPLIB
+target)). </p> <table id="GUID-E566D771-4098-5A82-8FBF-4C061D76BEEF">
+<tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/>
+<tbody>
+<row>
+<entry><p> <b>Option</b>  </p> </entry>
+<entry><p> <b>DLL (static/polymorphic)</b>  </p> </entry>
+<entry><p> <b>EXE</b>  </p> </entry>
+<entry><p> <b>EXEXP</b>  </p> </entry>
+<entry><p> <b>IMPORT LIB</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>capability</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>debuggable</codeph>  </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>dlldata</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>definput</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>required </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>defoutput</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>dso</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>elfinput</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>fixedaddress</codeph>  </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>heap</codeph>  </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>libpath</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>linkas</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>noexportlibrary</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>output</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>sid</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>stack</codeph>  </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>no </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>sysdef</codeph>  </p> </entry>
+<entry><p>Required for polymorphic DLL target types only </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>targettype</codeph>  </p> </entry>
+<entry><p>DLL, or polymorphic DLL target type </p> </entry>
+<entry><p>EXE </p> </entry>
+<entry><p>EXEXP </p> </entry>
+<entry><p>IMPLIB </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uid1</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uid2</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uid3</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>uncompressed</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>unfrozen</codeph>  </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+<entry><p>optional </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>vid</codeph>  </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>required </p> </entry>
+<entry><p>N/A </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CAD36EEF-42CF-52AE-A619-64F988FF342D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CAD36EEF-42CF-52AE-A619-64F988FF342D" xml:lang="en"><title>Legal
+Notices</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This page provides copyright and acknowledgement information. </p>
+<section id="GUID-AF837579-4E73-45CC-AB57-600CF171BB22"><title>Copyright</title> <p>Copyright © 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 <xref href="http://www.eclipse.org/legal/epl-v10.html.dita">http://www.eclipse.org/legal/epl-v10.html</xref>. </p> <p>Initial Contributors: </p> <p>Nokia Corporation - initial contribution </p> </section>
+<section id="GUID-F0030E9A-8035-5EDF-A80E-52418F88F3CC"><title>Trademarks</title> <p>These
+trademarks, and others, are acknowledged. Conventional abbreviations of these
+trademarks are used throughout this documentation. </p> <p>Nokia and Nokia
+Connecting People are registered trademarks of Nokia Corporation. </p> <p>S60
+and logo is a trademark of Nokia Corporation. </p> <p>Symbian OS is a trademark
+of Nokia Corporation. </p> <p>ARM and Thumb are registered trademarks of ARM
+Limited. </p> <p>Java and all Java-based marks are trademarks or registered
+trademarks of Sun Microsystems, Inc. </p> <p>Microsoft®, Microsoft® Windows®,
+Microsoft® Visual C++®, Microsoft® Visual Studio® are registered trademarks
+of Microsoft Corporation. </p> <p>OpenGL® ES is a registered trademark of
+Silicon Graphics, Inc. in the United States and/or other countries worldwide.
+The Symbian Foundation is independent of Silicon Graphics, Inc. </p> <p>Khronos,
+OpenVG and OpenMAX are trademarks of the Khronos Group Inc. </p> <p>The Bluetooth
+word mark and logos are owned by the Bluetooth SIG, Inc. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CADAABB4-C957-502E-BA4D-E9614C0D3878.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CADAABB4-C957-502E-BA4D-E9614C0D3878" xml:lang="en"><title>Schedule Send MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the concepts and functions related to Schedule Send MTM. The client applications can use the APIs that are provided by this MTM to schedule messages. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074" xml:lang="en"><title>Initializing
+DevSound Functionality Tutorial</title><shortdesc>DevSound provides a common interface to the audio hardware for
+all audio functionality. DevSound is responsible for providing access to available
+audio resources, initialization and configuration of hardware devices, and
+playing and recording audio. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<section id="GUID-5364D394-21F7-5327-BCD3-8F91DB5EEC8D-GENID-1-6-1-17-1-1-11-1-5-1-4-1-5-1-4-1-3-1"><title>Required background</title> <p>Before
+you start, you must: </p> <ul>
+<li id="GUID-67BD381F-4B0B-5B87-9439-7B72DBF29AFD"><p>Understand the <xref href="GUID-170A1D9C-12CB-502A-BCB3-9E2AEBB207FA.dita">A3F DevSound Component</xref> to
+which the DevSound library belongs. </p> </li>
+<li id="GUID-1E1F544F-06EF-5EFD-981B-8B179E37136E"><p>Understand the architectural
+relationship of the DevSound. For information see <xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound
+Overview</xref>. </p> </li>
+</ul> </section>
+<section><title>Introduction</title> <p>DevSound's functionality is provided
+by the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita"><apiname>CMMFDevSound</apiname></xref> class. </p> <p><b>Construction
+and initialization</b> </p> <p>Each client using audio resources must have
+an instance of the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita"><apiname>CMMFDevSound</apiname></xref> class associated with it.
+The <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-088CC167-C46D-3A2B-BE00-D7AEB98254AE"><apiname>CMMFDevSound::NewL()</apiname></xref> method is used to construct a
+new instance of DevSound. </p> <codeblock id="GUID-7E5C8C3A-B09B-5CC3-870E-1A28C75C50CF" xml:space="preserve">static IMPORT_C CMMFDevSound *NewL();</codeblock> <p>Once
+created, the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> method is used
+to initialize DevSound to play and record. There are three versions of the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> method,
+differing in type and number of parameters. The three versions are: </p> <ul>
+<li id="GUID-5492383B-33F4-5884-A926-567B49C44948"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> -
+initializes CMMFDevSound object to play and record PCM16 raw audio data with
+sampling rate of 8 KHz. </p> <codeblock id="GUID-3FC67F03-CE07-5174-B70A-82C3AC55AC4C" xml:space="preserve">IMPORT_C void InitializeL(MDevSoundObserver &amp;aDevSoundObserver, TMMFState
+aMode);</codeblock> <p>This method has two parameters: </p> <ul>
+<li id="GUID-84931A64-8268-5E15-9FD1-0D8F33CD243B"><p> <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> -
+a reference to a DevSound Observer instance. </p> </li>
+<li id="GUID-AE152880-C8E8-5923-97C6-A3D44B65515B"><p> <xref href="GUID-66044171-C6DA-305C-97D2-181311F9D839.dita"><apiname>TMMFState</apiname></xref> -
+the mode for which this object is to be used, for example, <codeph>EMMFStatePlaying</codeph>. </p> </li>
+</ul> </li>
+<li id="GUID-67B42425-FBD1-5FFA-8382-68E0CD4D2EA8"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> -
+initializes DevSound object for the mode <codeph>aMode</codeph> for processing
+audio data with hardware device <codeph>aHWDev</codeph>. </p> <codeblock id="GUID-168BD108-045C-52E9-BB97-BDA05643022F" xml:space="preserve">IMPORT_C void InitializeL(MDevSoundObserver &amp;aDevSoundObserver, TUid aHWDev,
+TMMFState aMode);</codeblock> <p>This method has three parameters: </p> <ul>
+<li id="GUID-917DF4D4-FD55-59EA-B0E8-64A7B5F5F35B"><p> <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> -
+a reference to a DevSound Observer instance. </p> </li>
+<li id="GUID-760E73CF-E957-57B2-9F7B-9C2AACA7B3F3"><p> <xref href="GUID-530281E6-29FC-33F2-BC9B-610FBA389444.dita"><apiname>TUid</apiname></xref> -
+the <xref href="GUID-E18CF25C-82DE-3C69-BD86-5DF67579C1A6.dita"><apiname>CMMFHwDevice</apiname></xref> implementation identifier. </p> </li>
+<li id="GUID-33E8A5C9-4609-5B4B-8050-438DF9317BAA"><p> <xref href="GUID-66044171-C6DA-305C-97D2-181311F9D839.dita"><apiname>TMMFState</apiname></xref> -
+the mode for which this object is to be used, for example, <codeph>EMMFStatePlaying</codeph>. </p> </li>
+</ul> </li>
+<li id="GUID-A88F2138-5F4E-527D-8BEA-B27F2D330B83"><p> <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> -
+initializes DevSound object for the mode <codeph>aMode</codeph> for processing
+audio data with hardware device supporting FourCC <codeph>aDesiredFourCC</codeph>. </p> <codeblock id="GUID-415E6B82-08A9-5CB8-BA49-F4FA6005E529" xml:space="preserve">IMPORT_C void InitializeL(MDevSoundObserver &amp;aDevSoundObserver, TFourCC
+aDesiredFourCC, TMMFState aMode);</codeblock> <p>This method has three parameters: </p> <ul>
+<li id="GUID-6C1B960C-4455-504A-B115-7FB416D7A288"><p> <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> -
+a reference to a DevSound Observer instance. </p> </li>
+<li id="GUID-7D427CCC-6248-5C79-BB21-8D0E2C43C633"><p> <xref href="GUID-691F7FFC-D026-30D5-B08D-A06915272C92.dita"><apiname>TFourCC</apiname></xref> -
+the <xref href="GUID-E18CF25C-82DE-3C69-BD86-5DF67579C1A6.dita"><apiname>CMMFHwDevice</apiname></xref> implementation FourCC code. </p> </li>
+<li id="GUID-D459814C-4892-5A30-B86A-AC125BC9B0F7"><p> <xref href="GUID-66044171-C6DA-305C-97D2-181311F9D839.dita"><apiname>TMMFState</apiname></xref> -
+the mode for which this object is to be used, for example, <codeph>EMMFStatePlaying</codeph>. </p> </li>
+</ul> </li>
+</ul> <p>All versions of <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-CBBB4A4E-0705-37E2-9832-A55861ACF299"><apiname>CMMFDevSound::InitializeL()</apiname></xref> require
+a reference to a DevSound Observer instance. As soon as initialization of
+DevSound has completed, successfully or otherwise, the callback function <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-089CF9C1-92EF-3F40-8669-A5EF5C064AD4"><apiname>MDevSoundObserver::InitializeComplete()</apiname></xref> is
+called. </p> <p><b>The
+DevSound Observer</b> </p> <p>Most methods in the CMMFDevSound class are asynchronous.
+Callbacks occur through the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> class. <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> is
+an interface to a set of DevSound callback functions. It serves as the method
+of communication between the client and the DevSound. A class that uses DevSound
+will typically inherit from <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref>. </p> <p> <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita"><apiname>MDevSoundObserver</apiname></xref> handles
+the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-089CF9C1-92EF-3F40-8669-A5EF5C064AD4"><apiname>MDevSoundObserver::InitializeComplete()</apiname></xref> initialization
+completion event. </p> </section>
+<section><title>Purpose</title> <p>Refer to the following sections for detailed
+information on how to use the main features of DevSound: </p> <ul>
+<li id="GUID-5FC7D66B-50C0-5229-A343-80FA4E865828"><p><xref href="GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita">Playing
+Audio</xref>  </p> </li>
+<li id="GUID-E5B271E4-F39B-5E75-BEEA-34AF087B8DDF"><p><xref href="GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita">Recording
+Audio</xref>  </p> </li>
+<li id="GUID-BCC46964-D281-50B3-82E6-1A3CDC025455"><p><xref href="GUID-14BAAB7C-35CD-5A43-B362-79F88C7712DE.dita">Playing
+Tones</xref>  </p> </li>
+</ul> </section>
+<section><title>Example uses</title> <p>These examples describe some different
+uses of DevSound: </p> <p><b>Recording
+a WAV file</b> </p> <p>In this example, a client application wants to record
+a WAV file. As WAV is a standard file format supported by the MMF controller
+framework, the <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref> client API is used
+to interact with DevSound. </p> <p>The main steps in recording the WAV file
+are: </p> <ol id="GUID-24DBEAE0-D054-53CD-965E-A89B7F66410C">
+<li id="GUID-0A785BE2-5896-5490-9C6D-7C66BB575BF5"><p>The client application
+gives a request to record to the MMF <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref> client
+API. </p> </li>
+<li id="GUID-14622FA3-A7FD-5DDD-9BD6-AD7B4CB9F04C"><p>The MMF <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref> client
+API passes the command down through the controller framework to the MMF controller
+plug-in. </p> </li>
+<li id="GUID-F0400FAB-4644-5764-B806-FC4F9B3A42DF"><p>The MMF controller plug-in
+initializes DevSound for recording. </p> </li>
+<li id="GUID-692A4C69-6E04-52CE-9835-FD4E2B59D498"><p>Recording starts and
+continues until the client stops the recording or the limit on the file size
+is reached. </p> </li>
+<li id="GUID-579CFF58-4C6D-51F1-9249-CB1BCCC7D08F"><p>Upon completion, the
+client gives a request to the MMF controller framework to stop the recording.
+The controller framework passes the command down to the MMF controller plug-in. </p> </li>
+<li id="GUID-8F3214E6-DFA0-533A-BE7F-86657BFE82E0"><p>The MMF controller plug-in
+stops DevSound and sends the completion event back to the client via controller
+framework. </p> </li>
+</ol> <p><b>Playing
+a DTMF tone</b> </p> <p>In this example, a client application wants to play
+a Dual-Tone Multi-Frequency (DTMF) tone. The MMF <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> client
+API is used to play the DTMF tone. Unlike other MMF APIs, the <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> does
+not require a controller plug-in. This is because the input and output of
+the API is already in a known data format and does not require encoding or
+decoding. The <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> communicates directly
+with DevSound. </p> <p>The main steps in playing the DTMF tone are: </p> <ol id="GUID-653E4665-1469-5EDA-B83E-94DB580ECFB0">
+<li id="GUID-5B600730-C908-5D5E-9C7E-05B8FAE685AA"><p>The client application
+prepares the <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> to play a DTMF tone. </p> </li>
+<li id="GUID-EA9E73E1-AACE-52E8-BF8A-B11FE2117D2C"><p>The client application
+asks the <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> to start playing the tone. </p> </li>
+<li id="GUID-4DE7CB4B-3873-5B5E-ADCF-2AC712ADB2C0"><p>The <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> asks
+DevSound to play the tone. </p> </li>
+<li id="GUID-016EA63D-DF56-5ACC-9A8A-536092EE145F"><p>The <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> informs
+the client application that the playing of the tone is complete. </p> </li>
+</ol> <p><b>Playing
+an AVI file</b> </p> <p>In this example, a client application wants to play
+an Audio Video Interleaved (AVI) file; output is to a screen and speakers.
+The AVI file contains audio and video data, so the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> class
+that can manipulate both types of data is used. </p> <p>The main steps in
+playing the AVI file are: </p> <ol id="GUID-D1F0C730-45BF-5B58-BBCE-3483C951BD72">
+<li id="GUID-83EF3725-22BE-5140-96C6-8F530DC7AAA3"><p>The client application
+requests to play an AVI file to the MMF CVideoPlayerUtility class. </p> </li>
+<li id="GUID-C8C8E7D2-982F-5561-A707-BCC5131E7C8D"><p>The MMF CVideoPlayerUtility
+class passes the request to the MMF controller framework. The controller framework
+loads the AVI controller </p> </li>
+<li id="GUID-980A38CF-CAA3-5A54-8888-A54AACF538B6"><p>The AVI controller plug-in
+initializes the DevSound and DevVideo. </p> </li>
+<li id="GUID-46DD25A9-62C1-5B6F-8BC8-21E57BB706F2"><p>The AVI controller plug-in
+reads the data in the AVI file and sends the audio data to DevSound and the
+video data to DevVideo. </p> </li>
+<li id="GUID-CFDEDC57-E5BD-5680-AC20-1A8F10A6328D"><p>DevSound outputs the
+audio data.</p> </li>
+<li id="GUID-AB78F54C-76B8-419A-AC24-F22371AFB506"><p>DevVideo sends the video
+data to be decoded to the corresponding codec. The decoded video data is then
+displayed on the screen. </p></li>
+</ol><note> AVI files support Dolby audio also. The client application requests
+for Dolby play back are processed in the similar way.</note></section>
+</conbody><related-links>
+<link href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita"><linktext>DevSound
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5" xml:lang="en"><title>Volume
+Control pop-up</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In case the hardware has no dedicated volume keys, the audio volume is
+adjusted using the Arrow up and Arrow down keys. When the user is controlling
+the volume, the key event brings the Volume Control pop-up to the view, and
+the pop-up disappears after a timeout when the user has done the adjustment.</p>
+<p>The application may need up/down key events for controlling some other
+component, such as list. In this case it needs to be decided whether that
+view can be left without Volume Control or whether the Volume Control component
+is accessed via the Options menu or toolbar.</p>
+<p>In touch UI it is possible to activate Volume Control via universal indicator
+pane. Volume is adjusted with touch by dragging the slider handle and audio
+can be muted by tapping the icon in the UI component, refer to <xref href="GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita">Touch
+support for common UI components</xref>.</p>
+<p>The Volume Control UI component may also be always available in the view.
+In this case it is fixed in the layout.</p>
+<fig id="GUID-FF02BFFC-828C-4D17-BF2E-D46A3C0EC4F0">
+<title>Volume control UI component </title>
+<image href="GUID-21F0026B-58EF-4E19-834D-C3C08BB89CB1_d0e62207_href.png" scale="40" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CB1E1921-9CF7-55B7-9F70-6AD61A961208.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CB1E1921-9CF7-55B7-9F70-6AD61A961208"><title>Using the Bearer Mobility APIs</title><shortdesc>This topic describes how sockets clients can use the bearer mobility APIs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Required background</title> <p>Before you start, you must understand what <xref href="GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita">Bearer Mobility</xref> is. </p> </section> <section><title>Introduction</title> <p>The two Bearer Mobility APIs are <xref href="GUID-D5F43DFB-5143-3563-8655-16E245A9735F.dita"><apiname>RCommsMobilityApiExt</apiname></xref> and <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita"><apiname>CActiveCommsMobilityApiExt</apiname></xref>. Both APIs provide the same functionality. </p> <p> <codeph>CActiveCommsMobilityApiExt</codeph> is an active object. We recommend that a Socket Server client uses this class if the client uses an active scheduler. </p> <p>If a socket server client does not use an active scheduler, the client must use the <codeph>RCommsMobilityApiExt</codeph> class. A client that uses an active scheduler can also use this class, but the class is more complicated to use. </p> <p>The Bearer Mobility API requests the notification of a change to the bearer. <codeph>CActiveCommsMobilityApiExt</codeph> completes requests through the active scheduler, and automatically issues new requests. The users of <codeph>RCommsMobilityApiExt</codeph> must explicitly register for notification of changes, and must make explicit requestsfor notification after the completion of each request. </p> <p>These two APIs are known as <i>Extension</i> APIs. Extension APIs are used to extend an existing API without adding new function members to the API class. Instead, the Extension API adds a new class that contains the function members for the extended API. The Bearer Mobility APIs extend the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> API. The Bearer Mobility APIs are provided as an Extension API because the Bearer Mobility APIs are classified as PublishedPartner, while the host RConnection API is classified as PublishedAll. </p> <p>To use an Extension API, the client must use the existing API to connect to the server. The client passes the object for the server session to the constructor of the Extension API. The client can then use the Extension API with the same server session. </p> <p>An example of how to use an Extension API is provided in sample code in the next section. </p> <p>Once attached, the Extension API does not need to be detached before closing the RConnection session. </p> </section> <section><title>Procedure</title> <p>A client that wants to use Bearer Mobility must register for notifications. A client can register for notifications even if it is already sending data. The rest of this discussion uses the <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita"><apiname>CActiveCommsMobilityApiExt</apiname></xref> API. </p> <p>If a client uses the <codeph>CActiveCommsMobilityApiExt</codeph> class to register for notifications, the client must implement the functionality of the <xref href="GUID-9A3979A9-F882-3053-B5B1-E0E125774271.dita"><apiname>MMobilityProtocolResp</apiname></xref> class. For example: </p> <codeblock id="GUID-AF6D0D55-2F8C-5CC6-BA6E-9079FA5B18AB" xml:space="preserve">class CBearerMobility : public MMobilityProtocolResp
+    {
+public:
+
+    // constructors and other functions (not shown)
+
+    ConnectAndProcessBearerChangesL();
+
+private:
+    // MMobilityProtocolResp
+    void PreferredCarrierAvailable(TAccessPointInfo aOldAP, TAccessPointInfo aNewAP, TBool aIsUpgrade, TBool aIsSeamless);
+    void NewCarrierActive(TAccessPointInfo aNewAP, TBool aIsSeamless);
+    void Error(TInt aError);
+
+    RConnection iConnection;
+    RSocketServ iSocketServ;
+    CActiveCommsMobilityApiExt* iMobilityExtension;
+    };</codeblock> <p>In the above example, the same class contains the reference to the <codeph>CActiveCommsMobilityApiExt</codeph> Active Object used to control the requests, and contains the <codeph>MMobilityProtocolResp</codeph> functions that receive the requests. The following example code shows how to connect the CActiveCommsMobilityApiExt Extension API to an RConnection session and initiate the request: </p> <codeblock id="GUID-B6F1C5A3-60F4-5708-BEA8-606D532CADE3" xml:space="preserve">ConnectAndProcessBearerChangesL()
+   {
+   User::LeaveIfError(iSocketServ.Connect());
+   CleanupClosePushL(iSocketServ);
+   User::LeaveIfError(iConnection.Open(socketServ));
+   CleanupClosePushL(iConnection);
+
+   // ...possibly do more here to set the connection preferences (not shown)
+
+   // Start the connection using an Access Point (AP) which has a bearer priority list (SNAP)
+   // NOTE: The bearer priority list is dependent on the bearer implementation - for this example we use Comms Database
+   const TUInt KSNAPPref = 50;    // AP Record ID in Comms Database
+
+   TConnSnapPref snapPref(KSNAPPref);
+
+   User::LeaveIfError(iConnection.Start(snapPref));
+
+   iMobilityExtension = CActiveCommsMobilityApiExt::NewL(connection, *this); 
+   CActiveScheduler::Start();
+
+   // once the scheduler is stopped, close the connections
+   CleanupStack::PopAndDestroy(); //iConnection.Close();
+   CleanupStack::PopAndDestroy(); //iSocketServ.Close();
+   }
+</codeblock> <p>The client uses the MMobilityProtocolResp class to process the notification of Bearer Mobility events. The functions are: </p> <codeblock id="GUID-38974384-5036-50F3-A417-DA754598287B" xml:space="preserve">MMobilityProtocolResp::PreferredCarrierAvailable(TAccessPointInfo aOldAP, TAccessPointInfo aNewAP, TBool aIsUpgrade, TBool aIsSeamless);</codeblock> <p>Comms mobility notification about a preferred bearer becoming available. </p> <table id="GUID-597406DA-D0BA-5D41-B162-76CF56D90EB3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Parameter </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p> <codeph> TAccessPointInfo aOldAP</codeph>  </p> </entry> <entry><p>Information on the current access point </p> </entry> </row> <row><entry><p> <codeph>TAccessPointInfo aNewAP</codeph>  </p> </entry> <entry><p>Information on the new proposed access point </p> </entry> </row> <row><entry><p> <codeph>TBool aIsUpgrade</codeph>  </p> </entry> <entry><p>ETrue if the new bearer is preferred over the current one; EFalse if the new bearer is preferred from the rest of the bearers because the current one is no longer available </p> </entry> </row> <row><entry><p> <codeph>TBool aIsSeamless</codeph>  </p> </entry> <entry><p>Always set to EFalse. This parameter is reserved for future use. </p> </entry> </row> </tbody> </tgroup> </table> <codeblock id="GUID-22A6EF79-09AF-5F1F-894A-D01D941579F7" xml:space="preserve">MMobilityProtocolResp::NewCarrierActive(TAccessPointInfo aNewAP, TBool aIsSeamless);</codeblock> <p>The Comms Stack calls this function in response to CActiveCommsMobilityApiExt::MigrateToPreferredCarrier when the migration is complete. </p> <table id="GUID-C0EF15E4-7CAF-508D-A8A2-7C536A19B3CA"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Parameter </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p> <codeph> TAccessPointInfo aNewAP</codeph>  </p> </entry> <entry><p>Information on the new access point </p> </entry> </row> <row><entry><p> <codeph>TBool aIsSeamless</codeph>  </p> </entry> <entry><p>Always set to EFalse. This parameter is reserved for future use. </p> </entry> </row> </tbody> </tgroup> </table> <codeblock id="GUID-13E7B1DA-3A7C-518D-8D02-7F595B4393D3" xml:space="preserve">MMobilityProtocolResp::Error(TInt aError);</codeblock> <p>An error response for the previous request. The call to this function represents the completion of the request. </p> <table id="GUID-548599E0-46BA-5029-9A6F-2856C27F0522"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Parameter </entry> <entry> Description </entry> </row> </thead> <tbody><row><entry><p> <codeph>TInt aError</codeph>  </p> </entry> <entry><p>The error code. </p> </entry> </row> </tbody> </tgroup> </table> <p>When a new bearer is available to the client, the Comms Stack calls <codeph>PreferredCarrierAvailable</codeph>. </p> <p>In the simplest implementation, the client can always migrate. For example: </p> <codeblock id="GUID-FBE37654-15F2-5619-9A6A-DC16B3DFC843" xml:space="preserve">void CBearerMobility::PreferredCarrierAvailable(TAccessPointInfo aOldAP, TAccessPointInfo aNewAP, TBool aIsUpgrade, TBool aIsSeamless)
+    {
+    // Arrange for migration
+    iMobilityExtension-&gt;MigrateToPreferredCarrier();
+    }</codeblock> <p>The client can indefinitely before responding to the call from <codeph>PreferredCarrierAvailable</codeph>. </p> <p>After the client responds with <codeph>MigrateToPreferredCarrier()</codeph> the client must be ready for all its existing sockets to receive errors. When the client receives <codeph>PreferredCarrierAvailable()</codeph> it does not receive any further <codeph>PreferredCarrierAvailable()</codeph> requests until the bearer has been migrated or the client receives a call to the Error() function. </p> <p>In the normal case, the device calls the client's <codeph>NewCarrierActive()</codeph> function when the new bearer is available. The client must then reconnect all the sockets. </p> <p>If the device calls the client's <codeph>PreferredCarrierAvailable()</codeph> function and the client does not want to migrate, the client can reject the bearer by calling <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita#GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83/GUID-B19E6E04-5DA4-38D1-9D21-213806B1CB50"><apiname>CActiveCommsMobilityApiExt::IgnorePreferredCarrier()</apiname></xref>. This ends the request. </p> <p>If the client responds with <codeph>MigrateToPreferredCarrier()</codeph> and then the client decides that the new bearer is inadequate, the client can reject the new bearer by calling <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita#GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83/GUID-38E6A4AA-D94A-3DD3-A271-713C10090022"><apiname>CActiveCommsMobilityApiExt::NewCarrierRejected()</apiname></xref>. In the normal case where the client was able to reconnect all sockets, the client calls <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita#GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83/GUID-BCA429FB-BD4E-3C35-AB02-5151CFADAE5A"><apiname>CActiveCommsMobilityApiExt::NewCarrierAccepted()</apiname></xref>. An example <codeph>NewCarrierActive</codeph> function: </p> <codeblock id="GUID-13CBDF67-B0F7-5DE3-81A2-7A94358A7E8C" xml:space="preserve">void CBearerMobility::NewCarrierActive(TAccessPointInfo aNewAP, TBool aIsSeamless)
+   {
+   // Reconnect all sockets 
+
+   TInt aRet = ReconnectSockets();   // not shown - client must implement
+
+   if (aRet == KErrNone)
+      {
+      // Accept the new bearer
+      iMobilityExtension-&gt;NewCarrierAccepted();
+      }
+   else
+      {
+      // problem with the new bearer
+      iMobilityExtension-&gt;NewCarrierRejected();
+      }
+   }
+    </codeblock> <p>If the client calls <codeph>NewCarrierAccepted()</codeph> then the Bearer Mobility request is complete. </p> <p>If the client calls <codeph>NewCarrierRejected()</codeph> the client will be offered another bearer or will have the <codeph>Error()</codeph> function called. </p> <p>The <codeph>Error()</codeph> function allows error conditions to be captured and logged. It is called by the Comms Stack as a response to a Bearer mobility request when an error occurs. Once the <codeph>Error()</codeph> function is called, the request is complete. Examples of error scenarios are: </p> <ul><li id="GUID-1D850C3D-D77B-5631-839D-67DB5D87408B"><p>The client receives a call to <codeph>Error()</codeph> after calling <codeph>MigrateToPreferredCarrier()</codeph>. Potential reasons for this are: </p> <ul><li id="GUID-B068F269-1340-5449-980D-BF24C3139FA7"><p>The preferred bearer becomes unavailable </p> </li> <li id="GUID-09A79C94-6E07-52F4-9106-305E6DDF174C"><p>Another preferred bearer becomes available so the bearer offered is no longer the best bearer available </p> </li> </ul> <p>A possible reason for this error is that the client takes too long to respond to the <codeph>PreferredCarrierAvailable()</codeph> function call. </p> </li> <li id="GUID-584A0282-6A4F-512D-A109-51399A380CD1"><p>The client calls <codeph>CActiveCommsMobilityApiExt::NewCarrierRejected()</codeph> and there are no other bearers available </p> </li> </ul> <p>An example <codeph>Error()</codeph> function: </p> <codeblock id="GUID-976FF594-67A7-59DC-A53F-2625D4EA352A" xml:space="preserve">void CBearerMobility::Error(TInt aError)
+   {
+   // Most likely a cancel but check for any kind of error
+   if(aError == KErrCancel)
+      {
+      INFO_PRINTF1(_L("Mobility extension cancelled"));
+      }
+   else
+      {
+      // Some kind of unexpected error during mobility migration
+      INFO_PRINTF2(_L("Unexpected error (ordinarily KErrCancel) from mobility extension. error:%d"), aError);
+
+      // Make sure that the sockets are reconnected if the migration was attempted and then aborted
+      // (client to implement ReconnectSockets function)
+      TInt aRet = ReconnectSockets();
+
+      if (aRet != KErrNone)
+            {
+            INFO_PRINTF2(_L("Could not reconnect sockets from mobility extension. error:%d"), aRet);
+            // will need to retry reconnection at some stage
+            }
+      }
+   }</codeblock> </section> </conbody><related-links><link href="GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita"><linktext>Bearer Mobility</linktext> </link> <link href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita"><linktext>Socket
+                Server</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The SIP Profile API provides the SIP registration service for applications.
+This API allows an application to register through a profile. The profile
+holds the information to provide the required registration behaviour. The
+behaviour of the registration service depends on the profile type used. </p>
+<p>Each standard has an associated profile type such as 3GPP R5 IMS, IETF,
+or proprietary. Each profile has a one-to-one communication with each SIP
+registration. The API allows more than one application to share the same profile
+and the same SIP registration. The implementation of the API stores SIP profiles
+in persistent store. </p>
+<p>A profile stores the following main parameters: </p>
+<ul>
+<li id="GUID-B7071F02-6EA0-5CE6-B143-A1840048218D"><p>The user-friendly name
+of the service provider. </p> </li>
+<li id="GUID-93B07153-99F2-54D3-8116-216E713296BC"><p>The type of the profile,
+for example 3GPP R5 IMS, IETF or proprietary. </p> </li>
+<li id="GUID-CD548B53-8C9E-5D13-820A-DE53183A7D25"><p>The registered public
+name of the user (SIP AOR). </p> </li>
+<li id="GUID-7CA9FF5E-B876-57DD-9203-B0DA282785D8"><p>The access provider
+identifier of the IAP used. </p> </li>
+<li id="GUID-850E144B-1F5A-55EF-8A71-9F6A404D05FC"><p>The address of the SIP
+registrar server, with optional connection and security parameters. </p> </li>
+<li id="GUID-214EEE38-6FAC-5349-8B9A-E5EFA53D0EAB"><p>The address of the SIP
+proxy server, with optional connection and security parameters. </p> </li>
+<li id="GUID-4C6501CC-2431-5027-B614-0BF7B8E56F76"><p>The compression and
+security preferences. </p> </li>
+<li id="GUID-7993263B-EA1C-5A87-A8D4-585A9B9A0EC8"><p>An indication if the
+profile is always registered automatically, or registered when it is used
+by an application. </p> </li>
+<li id="GUID-90F43095-BFBF-5858-8FCD-622C680A043D"><p>Any extension parameters
+stored as key-value pairs. </p> </li>
+</ul>
+<section id="GUID-D68DCE64-4F0A-55C7-87B7-AD0176DC000F"><title>Architectural
+Relationships</title> <p>The interface allows clients to share the common
+resources, profiles and SIP registrations through the client-server mechanism.
+It also gives access to permanently stored profiles and allows the reading
+of profile configuration values. </p> <p>All lengthy operations are asynchronous. </p> <p id="GUID-EFED18E0-D710-5484-B44B-905188C55894"><b>Capability information</b> </p> <p>The
+following table describes the capabilities the user must have to use the SIP
+Profile API. </p> <table id="GUID-DC2D1A38-8600-5071-B5DC-7C2E13B10DDA">
+<tgroup cols="1"><colspec colname="col0"/>
+<tbody>
+<row>
+<entry><p> <b>Capability</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> NetworkControl</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NetworkServices</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> ReadUserData</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-3A7EC69E-9C4C-55ED-8998-07640410D17B"><b> Extending
+the API</b> </p> <p>The API cannot be extended. </p> </section>
+<section id="GUID-BB1CA3D9-B29C-54A7-9772-E9ACD6D57A1F"><title>SIP Profile
+API class structure</title> <p>The client must create a <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object,
+and must implement the callback functions defined by the <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref> class.
+A client of the SIP Profile API must then create a <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> object. </p> <p>A <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> object
+is created using one of the retrieval functions that can be accessed through
+the <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref> class. Profile data is copied from
+the permanent store into the new object. The copied values can be accessed
+using the access functions of <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>. </p> <p>The
+client must enable a profile before you can use it. A profile can be enabled
+in the following ways: </p> <ul>
+<li id="GUID-C1F4C96E-794C-5CD1-81FE-2AD8208A8217"><p>provide an implementation
+of the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref> class </p> </li>
+<li id="GUID-5BE21413-BF91-53F8-923F-555B4014B973"><p>call <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita#GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9/GUID-DB3F6FFC-FE96-3A35-A60F-DAAAFF13C357"><apiname>CSIPProfileRegistry::EnableL()</apiname></xref> </p> </li>
+</ul> <p>When you enable a profile it is automatically registered. If the
+profile is not registered before it is enabled the client is notified about
+the registration status through the <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita#GUID-91663686-42B7-3C88-B773-3C5343CDCFCE/GUID-FAC7E932-24CB-3C5E-B2A4-057B33C784FC"><apiname>MSIPProfileRegistryObserver::ProfileRegistryEventOccurred()</apiname></xref> callback
+function. </p> <p>When a profile is enabled, the client indicates that the
+profile is in use, and cannot be removed. You can update the profile but,
+it is not recommended. </p> <p>If required, the client can disable a profile.
+The client can then delete the <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> object. </p> <p>The
+following illustration shows the SDP Profile API class structure. </p> <fig id="GUID-333B9964-A742-55C4-A731-FF172B930C16">
+<image href="GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e315964_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-CBB17EE7-FA26-5D08-942B-223C6C5B5205"><title>Memory used</title> <p>The
+amount of memory used by a profile depends on its content. A normal usage
+is approximately 0.2 KB for each profile. The SIP Profile server monitors
+all instantiated profiles to send the asynchronous events to clients when
+required. It is recommended that clients create the minimum number of profiles
+required, and delete instances immediately when they are no longer required. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e303388_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43" xml:lang="en"><title>List
+layouts</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>List items can in general be more complex (contain more elements) than
+grid items. Certain layout rules apply to all lists:</p>
+<ul>
+<li><p>All items in a list have equal height on the screen (forms do not follow
+this rule in the Edit state, see <xref href="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita">Forms</xref>). </p></li>
+<li><p>The column structure of all items in a list must be similar. It is
+not possible to combine e.g. single-column items to a three-column item list
+(however, it is possible to use some different item types having the same
+general appearance), see <xref href="GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita">Column
+structure of lists</xref> for columns. </p></li>
+<li><p>Partial items are not visible: when the list/grid pane area does not
+exactly correspond to an integer number of items, the remaining area outside
+the last fully visible item appears empty, displaying the background of the
+particular pane.</p></li>
+</ul>
+<p>In landscape layout, all two row lists can be stretched to be displayed
+in one row. This enables displaying more items in the list. In list stretching,
+the second row is moved next to the first row. List stretching is ON by default,
+but application can decide to disable it.</p>
+<fig id="GUID-425291FD-35BB-4145-A509-9BBC5B18022C">
+<title>Two row list in stretched mode in landscape layout</title>
+<image href="GUID-ED91B1F0-552D-46A1-97CD-7E1CD7AFE358_d0e56354_href.png" placement="inline"></image>
+</fig>
+<section id="GUID-A3F9AF92-392F-4EF6-8CFB-5B8CF0AA5210"><title>Using list layouts in
+C++ applications</title><p>The API to use for lists is the Lists
+API. For implementation information, see Using
+the Lists API.</p><p>For grids, the APIs to use are the Grids API and the Lists
+API. For implementation information, see Using
+the Grids API and Using
+the Lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CB568D14-1B0C-568F-B9CA-DDD15C53EEF3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CB568D14-1B0C-568F-B9CA-DDD15C53EEF3"><title>Writing a Parser Plug-in</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to write a parser plug-in. </p> <section><title>Introduction</title> <p>The Symbian XML framework supplies an XML parser plug-in which is based on <xref scope="external" href="http://expat.sourceforge.net/">Expat</xref>. The framework provides plug-ins with standard features. However a user can customize a plug-in according to his requirement such as parsing only a part of a document or releasing a specific resource. </p> <p>The Symbian platform XML framework defines certain standard features which a parser may have, and while designing a parser, consider the features it provides. The following is a list of standard features provided by a parser: </p> <ul><li id="GUID-86B70B90-0CAA-53CE-9B81-1B22A9B83A89"><p>Report unrecognised tags, namespace, namespace prefix and mappings. </p> </li> <li id="GUID-20C1FD61-F800-57D0-A489-5C4243D661CA"><p>Convert elements and attributes to lower case, that is, it is case-insensitive like an HTML parser. </p> </li> <li id="GUID-D67D42B2-0B50-5F2A-A41F-57D04FDEB610"><p>Describe the data in a specified encoding: the default is UTF-8. </p> </li> <li id="GUID-99EA2A0E-D83E-5E1A-8E81-B1005AEE67E8"><p>Accept XML 1.0 and XML 1.1. The default is to accept XML 1.0 only. </p> </li> </ul> <p>A user defined parser plug-in must implement the <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref> interface which has six pure virtual APIs. Three of them concern the parser features listed above. Two other methods perform the parsing; their purpose is to implement the parse functions of the <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> class discussed in <xref href="GUID-E16070E5-379A-5818-81CC-B00059A40084.dita">Choosing a Parser Plug-in</xref> and one method is for releasing resources. The following is the list of APIs of <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref>: </p> <table id="GUID-66D19903-DB61-5E37-B79E-65DD12F80A7C"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Class</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-7A7E7EF1-BF0B-32E7-B278-2E0D32B51629.dita"><apiname>EnableFeature()</apiname></xref>  </p> </entry> <entry><p>Enables the feature. </p> </entry> </row> <row><entry><p> <xref href="GUID-E5481858-1D95-3870-B0E9-66DFA521E873.dita"><apiname>DisableFeature()</apiname></xref>  </p> </entry> <entry><p>Disables the feature. </p> </entry> </row> <row><entry><p> <xref href="GUID-F593E8CE-4D9C-39B6-9CE1-AA4CA6D5A240.dita"><apiname>IsFeatureEnabled()</apiname></xref>  </p> </entry> <entry><p>Checks if the feature is enabled. </p> </entry> </row> <row><entry><p> <xref href="GUID-E603C5F8-7D4E-3857-A82F-45C78D654C68.dita"><apiname>ParseChunkL()</apiname></xref>  </p> </entry> <entry><p>Parses part of a document. Implements <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita#GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076/GUID-ED062E34-DE9F-3191-952C-9E5DB081E389"><apiname>CParser::ParseL()</apiname></xref>. </p> </entry> </row> <row><entry><p> <xref href="GUID-FC9D6980-D12C-39DE-9DE3-C3236D699EFB.dita"><apiname>ParseLastChunkL()</apiname></xref>  </p> </entry> <entry><p>Parses the last part of a document. Implements <codeph>CParser::ParseEndL()</codeph>. </p> </entry> </row> <row><entry><p> <xref href="GUID-7F8FDB43-B847-3AFF-A78F-48F2E3DBFDC2.dita"><apiname>Release()</apiname></xref>  </p> </entry> <entry><p>Must be called to release resources when the framework has finished using the parser implementation. </p> </entry> </row> </tbody> </tgroup> </table> <p>Some documents contain markups from more than one XML application, which means that the parser may encounter tags and attributes which look the same but belong to different namespaces. This is why the <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref> interface provides a feature for the reporting of namespaces. XML associates tags and attributes with namespaces by adding a prefix to them, and the prefixes are mapped to the URI where the namespace is defined. The class <xref href="GUID-6CEDFB6D-16B6-3860-922B-15A23C182DB2.dita"><apiname>RTagInfo</apiname></xref> is provided to hold this information. It is initialised with three strings representing the URI, prefix and local name, and these information can be retrieved by <xref href="GUID-DA922EE4-F0EB-38BA-9A68-08B9AD536E22.dita"><apiname>Uri()</apiname></xref>, <xref href="GUID-C9E56BB6-4DD9-3735-84F6-48C671B7270E.dita"><apiname>Prefix()</apiname></xref> and <xref href="GUID-BE775E7E-560D-3B41-9BE3-87F7495808C3.dita"><apiname>LocalName()</apiname></xref> respectively. If the application has to parse documents which combine multiple namespaces, then the implementation of <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref> must hold a parsed tag and attributes in an <xref href="GUID-6CEDFB6D-16B6-3860-922B-15A23C182DB2.dita"><apiname>RTagInfo</apiname></xref> object. The content handler will then have sufficient information to react differently to tags in different namespaces. </p> <p>Some XML applications, notably WBXML, extend XML syntax by adding extension tokens to the markup language. The <xref scope="external" href="http://www.w3.org/TR/wbxml/">WBXML specification</xref> defines nine global extension tokens but does not assign semantics to them. The meaning of extension tokens is specific to the document in which they are used, but they are typically used for compression to identify certain data which must be compressed in a specific way. For instance, extension tokens are sometimes used to identify data as being variables not constants, or as having a particular data type. To handle extension tokens, a parser plugin must implement the method <xref href="GUID-9D19F08C-CB2F-3644-A74F-8A7C453690B5.dita#GUID-9D19F08C-CB2F-3644-A74F-8A7C453690B5/GUID-60CBCF44-5675-359A-8626-58BDEF767C0C"><apiname>WbxmlExtensionHandler::OnExtensionL()</apiname></xref> with three parameters <xref href="GUID-33D3FD1B-06E6-38A5-9446-571A116894B0.dita"><apiname>aData</apiname></xref>, <xref href="GUID-52E94B14-A781-3645-8794-1442A1B05D71.dita"><apiname>aToken</apiname></xref>, <xref href="GUID-A7FB1F60-B735-37BC-ACEA-675C4B44CCF8.dita"><apiname>aErrorCode</apiname></xref>. The first parameter holds the actual data, the second specifies the global extension token and the third is the error code. </p> <p> </p> </section> <section><title>Procedure</title> <p>To write a parser plug-in, follow the steps given below: </p> <ol id="GUID-33F33876-0B72-528F-AAF5-3AC785AF7ED7"><li id="GUID-92AFD990-5EE3-5244-9DD7-38E3730A5352"><p>Encapsulate the data structures in <codeph>TParserInitParams</codeph>. </p> <p>The main data structures required are contained in the <xref href="GUID-5F929E9F-E895-3DA6-8072-28C4B8B1CF81.dita"><apiname>TParserInitParams</apiname></xref> class, which is typically passed as a parameter to the constructor method of an <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref> implementation. <xref href="GUID-5F929E9F-E895-3DA6-8072-28C4B8B1CF81.dita"><apiname>TParserInitParams</apiname></xref> has the following member classes: </p> <table id="GUID-342A5B66-015B-5490-BDDA-B5ED84068652"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-E221E7DA-BDB3-3B92-9D96-5D4605CBF195.dita"><apiname>CCharSetConverter</apiname></xref>  </p> </entry> <entry><p>Used to convert text to and from Unicode. </p> </entry> </row> <row><entry><p> <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref>  </p> </entry> <entry><p>Interface to the application which is writen to handle the output of the parser. It is discussed in Using Symbian XML Framework. </p> </entry> </row> <row><entry><p> <xref href="GUID-094A4884-182E-3A10-80F5-85A925020BC1.dita"><apiname>RStringDictionaryCollection</apiname></xref>  </p> </entry> <entry><p>A collection of string dictionaries discussed in <xref href="GUID-F4099885-55A0-5ACF-A73B-9C647B02B142.dita">Customising a Parser</xref>. A string dictionary is an implementation of the <xref href="GUID-AC915E8D-8B87-3A83-BF28-6C0B3B6CFB89.dita"><apiname>MStringDictionary</apiname></xref> interface which is used to tokenise XML input into tagged elements in accordance with the DTD associated with the document to be parsed. </p> </entry> </row> <row><entry><p> <xref href="GUID-AE53784D-B405-34D8-9A93-ACDE6F8ECA44.dita"><apiname>RElementStack</apiname></xref>  </p> </entry> <entry><p>An array structure used to stack elements in the order in which the parser encounters them. </p> </entry> </row> </tbody> </tgroup> </table> <codeblock id="GUID-EC2BA881-38B9-5E89-AB69-03CF224998DF" xml:space="preserve">
+MParser* CMyParser::NewL(TAny* aInitParams)
+    {
+     CMyParser* self = new( ELeave ) CMyParser( reinterpret_cast&lt;TParserInitParams*&gt;( aInitParams ) );
+     return( static_cast&lt;MParser*&gt;( self ) );
+    }
+CMyParser::CMyParser( TParserInitParams* aInitParams )
+:   iContentHandler( reinterpret_cast&lt;MContentHandler*&gt;( aInitParams-&gt;iContentHandler ) ),
+    iStringDictionaryCollection( reinterpret_cast&lt;RStringDictionaryCollection*&gt;( aInitParams-&gt;iStringDictionaryCollection ) ),
+    iCharSetConverter( reinterpret_cast&lt;CCharSetConverter*&gt;( aInitParams-&gt;iCharSetConverter ) ),
+    iElementStack( reinterpret_cast&lt;RElementStack*&gt;( aInitParams-&gt;iElementStack ) )
+    {
+    }</codeblock> </li> <li id="GUID-1C9D73E8-1A14-51EF-9E41-03E6EFA3165B"><p>Select XML parser features. </p> </li> <li id="GUID-B5493F5A-41CF-5A3A-806C-D7A56C26B981"><p>Implement CMyParser derived from <codeph>MParser</codeph>. </p> <codeblock id="GUID-2D9DFA8A-A6E1-5279-AAD3-870AB12387BF" xml:space="preserve">
+class CMyParser : public MParser
+    {
+    static MParser* NewL(TAny* aInitParams);
+    virtual ~CMyParser();
+    
+    public:
+        /** Enable a feature. */
+        TInt EnableFeature( TInt aParserFeature )
+            { 
+            // your code here to enable the specified feature
+            }
+       /** Disable a feature. */
+       TInt DisableFeature( TInt aParserFeature )
+            { 
+            // your code here to disable the specified feature
+            }
+       /** See if a feature is enabled. */
+       TBool IsFeatureEnabled( TInt aParserFeature ) const
+            { 
+            // your code here to check if the specified feature is enabled
+            } 
+       /** Parses a descriptor that contains part of a document. */
+       void ParseChunkL( const TDesC8&amp; aChunk )
+            { 
+            // your code here
+            } 
+       /** Parses a descriptor that contains the last  part of a document. */
+       void ParseLastChunkL( const TDesC8&amp; aFinalChunk )
+            { 
+            // your code here
+            } 
+       /** Interfaces don't have a destructor, so we have an explicit method instead. */
+       void Release()
+            { 
+            // your code here 
+            }
+    };</codeblock> </li> <li id="GUID-B6B9ED7E-EFD0-5788-A0BE-6C8911FBF66E"><p>Release resources using <xref href="GUID-7F8FDB43-B847-3AFF-A78F-48F2E3DBFDC2.dita"><apiname>Release()</apiname></xref>. </p> <p>When a parse fails, the parser object must be destroyed. This means that the implementation of the <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref> and <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref> methods must contain calls to <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-96AFAC46-F3AD-392B-8A97-AFCBF2978CFB"><apiname>User::LeaveIfError()</apiname></xref> with an error code as parameter. Specific error codes are supplied for various cases as discussed in the <xref href="GUID-5DACAB53-6D32-5250-9BC2-3E8597C3E2B2.dita">Error Codes</xref> section of this document. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5" xml:lang="en"><title>Precompiled
+resource values available from the Symbian platform</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Symbian SDK provides a generated resource header file that contains
+symbolic IDs to resources in the Symbian platform for use in your code. The
+file with the symbolic IDs is the <parmname>avkon.rsg</parmname> file and
+it is in the <parmname>./epoc32/include</parmname> folder. The file contains
+commonly used resource structures for your resource file declarations.</p>
+<p>A common example is the <parmname>R_AVKON_SOFTKEYS_OPTIONS_EXIT</parmname> symbolic
+ID, which maps to the <parmname>CBA</parmname> resource that results in the
+softkeys <parmname>Options</parmname> and <parmname>Exit</parmname>. The <parmname>Options</parmname> softkey
+is bound to a command that results in the application framework opening the
+options menu based on the <parmname>MENU_PANE</parmname> resource. The <parmname>Exit</parmname> softkey
+returns the <parmname>EAknSoftkeyExit</parmname> command, which would need
+to be handled in the appropriate place for <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref> in your application architecture. Note that the Symbian platform
+enumerations are in the avkon.hrh file,
+which is in the <parmname>/epoc32/include</parmname> folder. In general, you
+can map the commands returned from the CBA options by comparing the names
+of the symbolic IDs to the symbolic names in the enumerated list.</p>
+<p>Other symbolic IDs for other purposes are also available in the <parmname>avkon.rsg</parmname> file.</p>
+<p>When the precompiled resources fit the needs of your application, you
+can use them to access already existing resource structures. </p>
+<p>For examples of how these symbolic IDs are used, see</p>
+<ul>
+<li><p><xref href="GUID-A3AF142B-F9DF-43FD-9D3F-788A74D0C575.dita">Using
+precompiled CBA button resources</xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CBBE4BF7-B6E7-5607-95DC-F1C7D3711BD0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CBBE4BF7-B6E7-5607-95DC-F1C7D3711BD0" xml:lang="en"><title>Editing
+Email Messages Stored as Drafts in Plain Text Format</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to edit email messages stored as drafts in plain
+text format. </p>
+<section><title>Introduction</title> <p>Email messages can be stored as drafts
+by any of the following methods: </p> <ul>
+<li id="GUID-84294160-F89C-5970-9236-4B5C21498F18"><p>Using the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-FCDC47D2-0446-3CD7-A246-4DCED7C8A063"><apiname>CImEmailOperation::CreateNewL()</apiname></xref> function
+with nine parameters and setting the <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> parameter as <codeph>ETrue</codeph>. </p> </li>
+<li id="GUID-7BF0C230-C4CC-5550-A900-6CEF606B4C4D"><p>Using the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-5C13FD54-1C93-353C-9BDB-2A30A14BD159"><apiname>CImEmailOperation::CreateForwardL()</apiname></xref> or <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-EF24AB12-F3E9-3AB4-95E9-AB4D2946CDEC"><apiname>CImEmailOperation::CreateReplyL()</apiname></xref> function on a message that is downloaded and stored in plain text format. </p> </li>
+</ul> </section>
+<section><title>Procedure</title> <ol id="GUID-C708ED89-BD48-55B7-9B9C-063307662464">
+<li id="GUID-B881FDCE-9556-55A6-AF41-60CDD7BF2EBF"><p>Use the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+of the message (stored in the Draft directory) to create a new instance of
+the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class. </p> </li>
+<li id="GUID-EF64ADC1-29A7-5F7B-9947-19A1DC3FE5B8"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object
+to create a <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-199FBA77-4F9C-5460-A470-D0A6B1EFD79F"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-57CA3F50-33EA-359B-AABB-4E4E15AF2A18"><apiname>CImEmailMessage::GetBodyTextL()</apiname></xref> function
+to get the body text of the message, in the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class. </p> </li>
+<li id="GUID-92258C4B-D0BB-5B2A-9B3C-24948F1E0DF8"><p>If you want to use the
+rich text, complete the following step 1. If you want to store the body text
+in plain text, complete the following steps from 2  to 4. </p> <ol id="GUID-E6CCCCDA-5D27-53C5-8D51-1973C9446F46">
+<li id="GUID-477C7E56-C97F-5F93-A827-3406B27AA486"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-791117B4-C946-3D43-AE1E-68DDC10F85A3"><apiname>CImEmailMessage::StoreBodyTextL()</apiname></xref> function
+with the edited <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class to store the body of the
+message. </p> </li>
+<li id="GUID-0E030F83-C7C7-5D54-8A0A-59EC771AB423"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-B99E759E-E0D6-3A10-B81C-5BFCAF631B7D"><apiname>CImEmailMessage::OpenPlainBodyTextForWriteL()</apiname></xref> function
+to get <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref>. </p> </li>
+<li id="GUID-7EC431A2-FF00-5AF8-A756-0250018E3F17"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-DFD5B13A-3CE5-35D9-B8F3-31D3DFA0DB41"><apiname>CImPlainBodyText::StoreRichTextAsPlainTexL()</apiname></xref> function
+and pass the edited <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class to store the message. </p> </li>
+<li id="GUID-272F2376-030E-5C61-880F-92CC4361D628"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-022C7A37-91EF-3363-A760-865A1F980917"><apiname>CImPlainBodyText::CommitL()</apiname></xref> function
+to complete the editing operation. </p> </li>
+</ol> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process                 Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager                 using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using                 POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CBC43846-22BB-5AAF-89FE-3CF4F11B76F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CBC43846-22BB-5AAF-89FE-3CF4F11B76F6" xml:lang="en"><title>OpenGLES Interface
+Component</title><shortdesc>The OpenGLES Interface component provides a consistent interface
+to OpenGL ES on the Symbian platform, and enables users and providers of OpenGL
+ES to be binary compatible. OpenGL ES is an open standard developed by the
+Khronos Group. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. </p>
+<p>The CBR package name for the OpenGLES Interface component
+is <filepath>graphics_openglesheaders</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita"><linktext>OpenGLES
+  Collection</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC"><title>Central Repository Overview</title><shortdesc>The Central Repository is part of Symbian OS which stores data such as application settings, component settings, configuration parameters and data used for localisation and customisation. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The central repository was introduced to avoid the use of multiple .ini files specific to each application. Typical uses are persisting application data such as default file names, locale settings and user preferences from one session to another: data of this kind can also be used by device creaters to customise a device. Examples include phone book data, bookmarks, event logging and default keyboard layout. </p> </section> <section><title>Required background</title> <p>The central repository is used in the implementation of many libraries in Symbian OS. Application developers using these libraries generally do not need to access the central repository API directly. Developers maintaining and extending such libraries need to know how to use the API to read and modify repository data and set up change notification. Developers creating new extensions to Symbian OS such as device drivers need to know when it is appropriate to use the central repository to persist settings. They will also need to understand the mechanism of key spaces and initialisation files used to implement the central repository and how to create repository files, as explained in <xref href="GUID-36539894-580E-5774-AA79-7F640E8C59E1.dita">Central Repository Initialisation Files Guide</xref>. Product integrators and device creators need to know where in ROM central repository data can reside, to know the installation mechanism and to understand the impact on data security. </p> </section> <section><title>Key concepts and terms</title> <dl><dlentry><dt>Repository</dt> <dd><p>A data structure holding data to be persisted for a component or application, equivalent to a file. Also called a keyspace. </p> </dd> </dlentry> <dlentry><dt>Setting</dt> <dd><p>An item of data in a repository, equivalent to a line in a file. Also called a key. </p> </dd> </dlentry> <dlentry><dt>Initialisation file</dt> <dd><p>The text file from which a repository is created. </p> </dd> </dlentry> <dlentry><dt>Keyspaces</dt> <dd><p>Another term for a repository. </p> </dd> </dlentry> <dlentry><dt> Access policies</dt> <dd><p>Read or write permissions on a setting or group of settings. </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>Many applications and modules come with a data structure called a repository or keyspace which is used to persist application data. The Central Repository is the component which stores and manages repositories. Repositories are created and initialised individually along with their associated application on installation, or as a group when a device is built by device creators. The purpose of the Central Repository API is to enable application developers and device creators to modify repository data and to provide notification of changes to a repository. </p> <p>Conceptually, the Central Repository is comparable to a folder, an individual repository to a file and a setting to a line in a file. In fact repositories are implemented as binary files held at various locations in memory and are accessed through C++ classes which encapsulate them with a single API. Repositories are created with the applications to which they refer at device build time or at installation by the Application Installer on runtime. The Central Repository API is only used to access repositories, not to create them. </p> </section> <section><title>APIs</title> <p>The Central Repository API provides the <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref> class to provide access to repositories. </p> <table id="GUID-2241998F-DE1E-5098-8639-93FFA58834B5"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-DEA618DF-D462-3B3E-A1E1-F21295AAFE78.dita"><apiname>CRepository</apiname></xref>  </p> </entry> <entry><p>Provides the functionality to access the repository created with an application. </p> </entry> </row> <row><entry><p> <xref href="GUID-127F54F2-99E7-3FAB-9669-90B0B1985285.dita"><apiname>CCenRepNotifyHandler</apiname></xref>  </p> </entry> <entry><p>Creates notification of changes to a repository. </p> </entry> </row> <row><entry><p> <xref href="GUID-7BB13E80-C3B8-3E4F-B3ED-120258011558.dita"><apiname>MCenRepNotifyHandlerCallback</apiname></xref>  </p> </entry> <entry><p>A callback interface to be implemented to respond to change notification. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The Central Repository is typically used by applications such as messaging services to retrieve logins, localisation data and information needed for interprocess communication. </p> </section> </conbody><related-links><link href="GUID-1C683226-C142-5C7B-BD20-060058352B08.dita"><linktext>Central Repository Guide</linktext> </link> <link href="GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita"><linktext>Central Repository Access Guide</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e150560_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e181877_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CBFDD753-BAE3-5C40-B947-EB8CDA11CD23.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CBFDD753-BAE3-5C40-B947-EB8CDA11CD23"><title>Types of SMS Message</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>There are four classes of an SMS message. Classes identify the importance of an SMS message and also the location where it must be stored. </p> <ul><li id="GUID-52AD5825-5097-52DD-AFD1-F1FA70EDC589"><p> <b>Class 0</b>  </p> <p>This type of SMS message is displayed on the mobile screen without being saved in the message store or on the SIM card; unless explicitly saved by the mobile user. </p> </li> <li id="GUID-85C0FEFC-3FFE-5700-AA29-373B710935B4"><p> <b>Class 1 </b>  </p> <p>This message is to be stored in the device memory or the SIM card (depending on memory availability). </p> </li> <li id="GUID-9F06A050-74F1-589F-85FC-DE5A42F06DC4"><p> <b>Class 2 </b>  </p> <p>This message class carries SIM card data. The SIM card data must be successfully transferred prior to sending acknowledgment to the service center. An error message is sent to the service center if this transmission is not possible. </p> </li> <li id="GUID-88CEBE65-1E86-5EB2-989A-C22BD2FBC559"><p> <b>Class 3</b>  </p> <p>This message is forwarded from the receiving entity to an external device. The delivery acknowledgment is sent to the service center regardless of whether or not the message was forwarded to the external device. </p> </li> </ul> <section><title>Data flow</title> <p>For an incoming message, the usual route is: </p> <ol id="GUID-22CDEC56-7FB9-510F-B2B2-E2D5A2E20B26"><li id="GUID-DD67BB7A-7180-50D8-8C19-0E2C67831F4A"><p>The phone receives the SMS. The telephony server notifies the SMS stack. </p> </li> <li id="GUID-AE55B6AB-A09D-5CB1-898F-65B6302AA1B8"><p>The SMS stack decodes the message and then notifies the SMS watcher that handles messages of the relevant service center. The watcher creates a new messaging entry in the message store's Inbox. </p> </li> <li id="GUID-499754BF-F736-5950-B6DB-CF1D5EA669DD"><p>Any messaging application that is set as an observer of the message store is notified of the arrival of the new message. The application can then determine whether it should handle the message, and if so, can then read the message and process it appropriately. </p> </li> </ol> <p>For an outgoing message, the route is: </p> <ol id="GUID-11E29E28-5F06-5F85-BD3E-5C299B68A04E"><li id="GUID-0AE8A70D-8DF7-5AD0-A42D-280ECCCBF7CF"><p>A messaging application uses the SMS client MTM APIs to create a message, to set its contents and fields, and to send it </p> </li> <li id="GUID-E451B4D9-9C2E-59E7-BE53-CDAA5FBBD625"><p>The message server passes the send command to the SMS server MTM. This calls the appropriate SMS stack to send the message. </p> </li> <li id="GUID-1E90BB8D-2727-58E4-ACE5-23494B9B25D4"><p>The stack calls the telephony server to send the message. </p> </li> </ol> </section> </conbody><related-links><link href="GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita"><linktext>SMS MTM Overview</linktext> </link> <link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type Module</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CC5A1C8D-55AA-5FAE-A446-4CBF949C9003.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-CC5A1C8D-55AA-5FAE-A446-4CBF949C9003"><title>Subscriber Identity Tutorial </title><shortdesc>This tutorial describes how an application gets the subscriber identification information. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-A43361E3-7EAE-5596-8106-EA99038723D7"> <step id="GUID-A0597AB9-0725-584E-B9CB-6706C52F0802"><cmd/><info>create a new instance of the <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-E5DA9A58-763D-5571-80C1-8AA22A1FAD84"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetSubscriberId()</apiname></xref> to get the IMSI number </info> </step> <step id="GUID-C9F1783E-DAB6-58AA-8E26-10C2ABBC822A"><cmd/><info>the function returns the IMSI in a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TSubscriberIdV1</apiname></xref> object </info> </step> <step id="GUID-C8C6490B-76A1-5872-B791-EEB3B14FA364"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EGetSubscriberIdCancel</apiname></xref> to cancel the asynchronous request. </info> </step> </steps> <example id="GUID-E1CED382-30CE-57DC-8BC3-98F7F2A389DF"><title>Subscriber identity example</title> <codeblock id="GUID-63B55773-65BF-5CE8-919F-E3549CE57B71" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TSubscriberIdV1 iSubscriberIdV1;
+    CTelephony::TSubscriberIdV1Pckg iSubscriberIdV1Pckg;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+    };
+
+CClientApp:: CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iSubscriberIdV1Pckg(iSubscriberIdV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;GetSubscriberId(iStatus, iSubscriberIdV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       TBuf&lt;CTelephony::KIMSISize&gt; suscriberId = iSubscriberIdV1.iSubscriberId;
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetSubscriberIdCancel);
+    }</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CC686E6C-FECB-548E-984A-15F7B9742DCB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CC686E6C-FECB-548E-984A-15F7B9742DCB"><title>Client Application Programming</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the important steps that must be followed when programming a message client application. </p> <section><title>Basic set-up</title> <p>A client application performs the following steps in a set-up function, such as the <xref href="GUID-C8E0575D-5A7F-3D00-9BE5-AD8D6DBCF2F7.dita"><apiname>ConstructL()</apiname></xref> function of the application UI class: </p> <ol id="GUID-F7F948E4-EAAA-577C-8716-D8E176A7AC97"><li id="GUID-2AEA1017-FB12-5A40-BEEA-84FEE83BF7F5"><p>Create a <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref> session to Message Server. </p> </li> <li id="GUID-B773FE76-47A3-5B19-8078-7DDB94579836"><p>Create registry classes, so that MTM components can later be instantiated. </p> </li> <li id="GUID-BAD3AAF3-DB8A-5663-BDE8-6A556452D155"><p>From the session, obtain the root entry of the index, from which other entries can later be obtained. </p> </li> </ol> </section> <section><title>User interface</title> <p>Your message client application can now discover the immediate children of the root entry. To display entries to the user in a message or folder view format, the application can query the MTM type of each entry, and load icon resources from the appropriate User Interface MTMs. </p> <p>After an initial message view display, it is up to the message client application to handle user input events and access User Interface MTMs if required. For example, if the user selects an entry and then chooses an Edit command, the application must: </p> <ul><li id="GUID-F76EE23F-3E1F-55BD-B60F-BB0B248524CE"><p>identify the selected entry and set the context to this entry (so it has instances of the generic message header class <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> and of the message encapsulation class <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> for the entry) </p> </li> <li id="GUID-1C6DEA39-49FD-577A-92BC-B795F7B9BB85"><p>use the data from the <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> object to discover the MTM type that handles the entry </p> </li> <li id="GUID-6A0CB9FA-EB73-53E7-B6E7-13B2B5C2EF78"><p>request instances of the relevant Client MTM and User Interface MTM objects from the registries </p> </li> <li id="GUID-95C58848-0C9F-5BE5-AC15-46924FEAAE24"><p>inform the Client MTM of the current context </p> </li> <li id="GUID-E4B73140-BBCA-5FBE-9CDC-755168FAC177"><p>call the <xref href="GUID-24E72659-DF99-303C-BE85-C53F1981CD20.dita"><apiname>EditL()</apiname></xref> function provided by the User Interface MTM. This returns a <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> operation object to manage the asynchronous operation. </p> </li> </ul> <p>See the <xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">example code</xref> for detailed illustration of the above steps. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CC8EA664-FF2E-40FB-BC1C-89FB1255A9C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CC8EA664-FF2E-40FB-BC1C-89FB1255A9C9" xml:lang="en"><title>General
+protection principles</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Paying attention to the general protection principles below increases
+security in mobile software.</p>
+<section id="GUID-221C271B-4E13-4666-803C-6BCB7BDD8C1E"><title>Prevention</title>
+<p><i>Prevention</i> is the key component in security threat management.
+Over the past few years, the approach to security has shifted from <i>reactive</i> to <i>proactive</i>,
+meaning that prevention is increasingly important. However, the reactive component
+is still necessary because security levels degrade over time due to information
+corruption, new attack methods and viruses, etc.</p>
+<p>By intercepting security breaches before they even happen you can create
+potentially safe applications and systems. However, even the most secure solutions
+may have weaknesses, so you should never place your trust in only one method.</p>
+</section>
+<section id="GUID-78A8158D-1F67-46BE-91AD-8227200B46D6"><title>Control</title>
+<p>If a security incident is about to happen, it is still possible to minimize
+and isolate damage with <i>control of events</i> and strong <i>internal borders</i>.
+By dividing the system or software into sufficiently small units, it is easier
+to control and manage security features. Division also helps to isolate infections
+within a single unit.</p>
+<p>Another useful control feature is the <i>minimum rights principle</i>,
+wherein each unit is given only the minimum rights to complete its tasks.
+Controls can be imposed by <i>authenticating</i> and <i>authoring</i> all
+traffic between units, and by limiting access rights of unidentified parties.
+These techniques can be applied from a single software component to an entire
+business system.</p>
+<p>From Symbian OS v9.1 onwards, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> implements
+control of events inside the operating system and creates borders for different
+security areas (for example, by means of <xref href="GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita">data
+caging</xref> and server protection). Platform security also implements the
+minimum rights principle.</p>
+<p>Additionally, there are <xref href="GUID-9058F379-C495-4B22-B270-FF6A80E450B8.dita#GUID-9058F379-C495-4B22-B270-FF6A80E450B8/GUID-9058F379-C495-4B22-B270-FF6A80E450B9">third-party
+security applications</xref> such as <i>antivirus software</i>, <i>firewalls,</i> and <i>intrusion
+detection systems</i> that provide good protection against hostile attacks
+when combined with strict <i>policies</i>.</p>
+</section>
+<section id="GUID-13186350-A3DC-4793-8D7A-7832086083AD"><title>Testing and validation</title>
+<p>Even the strongest security systems may have vulnerabilities which are
+not apparent until the application or product is in use. Software complexity
+and combinations of different technologies are known to increase the chance
+of software flaws. Software usually functions properly even when it is not
+secure. This is why extensive <i>testing and validation</i> are needed during
+development. The purpose of security testing is to find errors and flaws that
+may jeopardize the security and integrity of information stored in the mobile
+device.</p>
+<p>Traditional testing validates software against specifications, but security
+testing studies behavior and possible side effects in different environments.
+For example, <i>white hat hacking</i> attempts to identify vulnerabilities
+before malicious (black hat) hackers do. Common areas for security testing
+include user interfaces, information storage, communications, and the software's
+internal security (for example, algorithms, robustness, recovery).</p>
+<p>To have a complete evaluation of security features and risks, it is
+important to perform a full security analysis for every published version
+of an application.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CC96F41D-5AC9-5D11-BD4D-073548EA5CC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CC96F41D-5AC9-5D11-BD4D-073548EA5CC8" xml:lang="en"><title>Multimedia
+Hardware Adaptation Interfaces Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document introduces you to the Multimedia Hardware Adaptation Interfaces
+collection. </p>
+<section><title>Purpose</title> <p>The Multimedia Hardware Adaptation Interfaces
+(HAI) collection defines hardware-independent interfaces for controlling the
+hardware component, such as:<ul>
+
+<li><p>Video hardware</p></li>
+</ul> </p> </section>
+<section><title>Architectural Relationship</title> <p>The APIs are introduced with their components.
+The Multimedia components DevVideo and DevSound provide APIs for handling
+the media data once the raw data stream has been extracted by the Multimedia
+HAI components. </p> </section>
+<section><title>Description</title> <p>The Multimedia HAI provides support
+for controlling the hardware component, and handling the data streams. </p> </section>
+
+
+<section><title>Components</title> <p>The Multimedia HAI collection includes
+the following: </p> <ul>
+
+<li id="GUID-E0BCB995-BC4D-5594-A3A5-32BA557459E7"><p>Video HAI </p> </li>
+</ul> </section>
+
+<section><title>Video HAI</title><p>The <xref href="GUID-D9D2A600-89C6-5D82-8BC0-2C60D8F6517A.dita">Video
+HAI</xref> defines an interface for plug-ins that provide video functionality. </p></section>
+<section><title>Using Multimedia HAI</title> <p>Hardware integrators can write
+device drivers or servers to manage the component like:</p><ul>
+
+<li><p>Video</p></li>
+</ul><p>These components expose APIs that are independent of
+the underlying implementation and hardware specifics. </p> </section>
+</conbody><related-links>
+
+<link href="GUID-D9D2A600-89C6-5D82-8BC0-2C60D8F6517A.dita"><linktext>Video HAI
+Component Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CCB9C61B-FB28-5CD9-A366-4A9584097897"><title>Inserting Data into a Table</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to insert a row into a table. </p> <section><title>Introduction</title> <p>You can insert a single row or several rows in a table. To insert several rows the SQL statement needs to be called in a loop until the condition is satisfied. </p> </section> <section><title>Basic procedure</title> <p>The high level steps for inserting a row into a table are shown here: </p> <ol id="GUID-342E5527-AFF4-52BF-8BCC-248ED712FAE4"><li id="GUID-3CBB4CA6-2150-5FC2-B3EF-7F57E063770C"><p>Configure the SQL statement. </p> </li> <li id="GUID-4F74DDD2-EC0E-5A74-AE52-B71F718F1134"><p>Execute the statement. </p> </li> </ol> </section> <section><title>Detailed steps</title> <p>An <codeph>INSERT</codeph> query adds data to the database. The example shown here inserts a new record into the countries database. </p> <p><b> Configure the SQL statement</b> </p> <ol id="GUID-A9FA4D02-07F6-50B6-B165-8B35B2560E69"><li id="GUID-81E2024D-AD8E-5A7A-8413-9941F0EA68B5"><p>Declare the necessary literals as shown and instantiate an object of the <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> class. </p> <codeblock id="GUID-791EF6F6-E93E-51C7-B9C0-4FA8DB5ABDF5" xml:space="preserve">_LIT(kQueryString,"INSERT INTO countries (name, population) 
+VALUES (:value1, :value2);");
+_LIT(kValue1,":value1);
+_LIT(kValue2,":value2");
+_LIT(kItaly,"Italy");
+
+RSqlStatement myStatement;</codeblock> </li> <li id="GUID-98A5A03E-D0F8-5B9A-AE45-B2CB8617B463"><p>Prepare the SQL statement for execution. </p> <codeblock id="GUID-71E96B9E-C0E0-539C-A4B7-2BD13EB81943" xml:space="preserve">TInt err;
+err = myStatement.Prepare(countriesDatabase,kQueryString); // prepare</codeblock> </li> <li id="GUID-1781CA11-0439-5A6D-8562-52DB2681334B"><p>Get the index of each of the parameters with the given name and bind it with the text and integer value respectively. </p> <codeblock id="GUID-4098A56A-DFB1-5EF8-A493-334A6EA8D7A8" xml:space="preserve">TInt index1 = myStatement.ParameterIndex(kValue1); // index
+TInt index2 = myStatement.ParameterIndex(kValue2);
+err = myStatement.BindText(index1,kItaly);
+err = myStatement.BindInt(index2,59); // bind</codeblock> </li> </ol> <p><b> Execute the statement</b> </p>  <p><b>Note</b> </p> <p>To add several rows to a data table you need to call an INSERT statement within a loop. The following example inserts rows containing numbers 1 to 10 into the countries database. Steps 1 and 2 of the above list remain the same. The remaining steps are as shown below: </p> <ul><li id="GUID-23B7CDC9-A56B-5A66-A177-594216092DA3"><p>Get the index of the parameter. </p> <codeblock id="GUID-DCADC824-6EEC-55A1-BF9B-FDA8AEDB9B9C" xml:space="preserve">TInt index1 = myStatement.ParameterIndex(kValue1); // index</codeblock> </li> <li id="GUID-B25426C0-A1EC-5A51-9718-F84D3E7FD91F"><p>Iterate the loop 10 times by binding the integer value of the variable i with the parameter. Then execute the <codeph>INSERT</codeph> statement to insert a new record into the table. Finally, call the <codeph>Reset()</codeph> function to reset the SQL statement and make it ready for the next execution. </p> <codeblock id="GUID-4B406DB1-220F-5347-84C8-C4071FD7F59E" xml:space="preserve">for(TInt i=1;i&lt;=10;i++)
+       {
+       err = myStatement.BindInt(index1,i);
+       err = myStatement.Exec(); // execute
+       err = myStatement.Reset()
+       }</codeblock> </li> </ul> </section> <section><title>See also</title> <p> <xref href="GUID-F36E5978-29FC-57E8-8A45-2003E7767193.dita">Querying a Database</xref>  </p> <p>Inserting a Row into a Table - This document </p> <p> <xref href="GUID-3ACF6C11-A9CC-517C-8C7D-578F41F3DDF7.dita">Deleting Rows from a Table</xref>  </p> <p> <xref href="GUID-72511204-FC90-54AA-9E2E-833318020318.dita">Reading to a Buffer</xref>  </p> <p> <xref href="GUID-3CCA6503-54DA-5558-85DC-93A22A81F565.dita"> Reading to Memory </xref>  </p> <p> <xref href="GUID-183280EE-0C57-54FE-8ABB-E1CC3BDE525B.dita">Reading to a Data Stream</xref>  </p> <p> <xref href="GUID-B9A3B17E-BDEB-5F66-968C-080335A721AC.dita">Writing to a Data Stream</xref>  </p> <p> <xref href="GUID-C474376E-1766-5781-B5BF-3786C5B4D72E.dita">Performing Scalar Queries</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CCCEC352-3A49-534C-9551-A4CAE1A3475E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CCCEC352-3A49-534C-9551-A4CAE1A3475E" xml:lang="en"><title>How
+to handle a single asynchronous request</title><shortdesc>This document describes how to handle a single asynchronous request.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A thread that requests an asynchronous service from another thread can
+continue processing but eventually reaches a point where it must wait until
+the asynchronous request is complete before it can resume processing.</p>
+<p>Typically, the requester performs the following sequence:</p>
+<ul>
+<li id="GUID-0A1C409D-80A4-5EC0-AC59-A3D6C7E5228D"><p>creates an object of
+type <codeph>TRequestStatus</codeph> to monitor the state of the request.</p> </li>
+<li id="GUID-BBCD758B-2B52-5D83-9C13-FC0204600563"><p>calls the asynchronous
+provider's request function, passing the <codeph>TRequestStatus</codeph> object;
+all asynchronous functions are prototyped to take a <codeph>TRequestStatus</codeph> parameter.</p> </li>
+<li id="GUID-E874E08B-19EF-5887-A7CC-DED65B5A84B4"><p>uses the operating system
+function <codeph>User::WaitForRequest()</codeph> to allow the thread to wait
+for completion of the request.</p> </li>
+</ul>
+<codeblock id="GUID-6425F8F3-7196-56C7-9886-F599EEA9E07D" xml:space="preserve">TRequestStatus status;                        // Request status object
+someProvider.IssueRequest(parameters,status); // Issue the request
+...
+User::WaitForRequest(status);                 // Wait for completion
+if (status==KErrNone)
+    {
+    /* success */
+    }
+else if (status==KErrXxx)
+    {
+    /* check for some error */
+    }
+else // check for other error conditions etc.
+...</codeblock>
+<section id="GUID-E8B90FAF-1891-49EE-8915-D9265F8884AB"><title>Notes</title> <ul>
+<li id="GUID-99618D33-6281-5C32-B54B-4451F6228C85"><p>there is no special
+name for a request function; the request performed depends on the class, the
+function name and the parameters passed.</p> </li>
+<li id="GUID-F1D8C498-3A72-5C02-892B-8DB1792D651F"><p>when the request is
+complete, an integer is stored in the request status object to convey additional
+information about the completion of the function. The meaning of the completion
+code varies from function to function. Additionally, information returned
+by the request may be returned to reference parameters passed to the request
+function.</p> </li>
+<li id="GUID-E87D9AED-C897-5F19-8E34-A43C2E7AFF35"><p>The integer completion
+code must not be <codeph>KErrPending</codeph>. By convention, <codeph>KErrNone</codeph> indicates
+no error and <codeph>KErrCancel</codeph> indicates a cancelled request. Other
+values may be used for specific types of error.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614" xml:lang="en"><title>Using
+UPS Management API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Decisions made by phone users are
+stored in a decision database. The management APIs allow device creators to
+implement a control panel-type application to enable phone users to carry
+out the following tasks on stored decisions: </p> <ul>
+<li id="GUID-63530E7D-3115-5CD6-9E76-A2D4991DB53E"><p>View "Always" and "Never"
+decisions </p> </li>
+<li id="GUID-2FD986BA-AA37-5D0B-98D4-CB874C964575"><p>Delete "Always" and
+"Never" decisions </p> </li>
+<li id="GUID-D72B1FA8-D636-52F0-A42E-DA8BC860AF5F"><p>Change "Always" decisions
+to "Never" decisions and vice versa </p> </li>
+</ul> <p>The APIs for viewing and deleting records can act on multiple records
+in one operation. The set of records may be controlled via a filter, for example
+only delete records for a client application with a particular SID. </p> <p>Applications
+that allow phone users to view their decisions need <codeph>ReadDeviceData</codeph> capability.
+Applications that allow phone users to delete their decisions need <codeph>WriteDeviceData</codeph> capability.
+Applications that allow phone users to change their decisions need <codeph>AllFiles</codeph> capability. </p> <p> <b>Note</b>: </p> <ul>
+<li id="GUID-2F16752F-9528-51EA-91C1-C06AE50A8D67"><p>Management APIs should
+not be called from the policy evaluator or the dialog creator. Doing so could
+lead to deadlock. It is best to call them from a control panel-type application. </p> </li>
+<li id="GUID-0098B86A-7540-5EE5-83C0-05A2CEBF1760"><p>A query may fail if
+another UPS operation is carried out at the same time as the query. For example,
+installing a new policy file at the same time as making a query may result
+in a conflict that causes the query to fail. </p> </li>
+</ul> </section>
+<example><title>UPS management APIs implementation example</title> <p>The
+following code uses the management APIs: </p> <codeblock id="GUID-8ED40779-581B-5CCA-A16A-DE845BACC034" xml:space="preserve">
+
+using namespace UserPromptService;
+...
+
+TRequestStatus rs;
+
+// Create a management session and a handle to it
+RUpsManagement mngmnt;
+User::LeaveIfError(mngmnt.Connect());
+
+// Create a filter, which stores the key values used to query the database. The empty
+// filter is first created and then the required filter keys are set separately
+CDecisionFilter *filter = CDecisionFilter::NewLC();
+filter-&gt;SetClientSid(KClientSid, EEqual);
+filter-&gt;SetServerSid(KServerSid, EEqual);
+
+// Create a view with a filter and status as parameters
+// Needs ReadDeviceData capability
+mngmnt.CreateView(*filter, rs);
+User::WaitForRequest(rs);
+
+CleanupStack::PopAndDestroy(filter);
+
+while(CDecisionRecord *record = mngmnt.NextMatchL())
+{
+ CleanupStack::PushL(record);
+ // Update the decision value for the current recordId
+ // Needs AllFiles capability
+ mngmnt.UpdateDecision(record-&gt;iRecordId, ETrue, rs);
+ User::WaitForRequest(rs);
+ // Delete the record via an exact filter.
+ // Needs WriteDeviceData capability.
+ // We could have just passed "filter" directly to RemoveDecision to remove all
+ // the matching decisions with a single call
+ CDecisionFilter *exactFilter = CDecisionFilter::NewLC(record-&gt;iClientSid,
+   record-&gt;iEvaluatorId,
+   record-&gt;iServiceId,
+   record-&gt;iServerSid,
+   record-&gt;iFingerprint,
+   record-&gt;iClientEntity,
+   record-&gt;iMajorPolicyVersion);
+ mngmnt.RemoveDecisionsL(*exactFilter);
+ CleanupStack::PopAndDestroy(exactFilter);
+ CleanupStack::PopAndDestroy(record);
+};
+
+// Cancel and close the view and session
+mngmnt.CancelAndCloseView();
+
+// Delete the existing decision database completely.
+// Could also call RemoveDecisionsL( filter ) to remove parts of database
+// Needs WriteDeviceData capability
+mngmnt.DeleteDatabaseL();
+mngmnt.Close();
+</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12"><title>Exporting and Importing Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document discusses importing and exporting of classes. </p> <p>In particular this document describes: </p> <ul><li id="GUID-3F374F9D-1829-5E75-AAB4-1D653D9F42FC"><p>Class exporting rules: </p> <ul><li id="GUID-B9BF3994-3D41-5485-863E-6EA1C4017486"><p>DLL-derivation </p> </li> <li id="GUID-E9CCB315-097D-5F01-8E39-FDB6A2650BDE"><p>Non-sharable classes </p> </li> <li id="GUID-9AB46032-9EA5-5E5D-A210-8DEF3CD6E543"><p>The Simple Rule </p> </li> <li id="GUID-6B9127D2-8C6A-51B1-9415-D9546F224CB0"><p>Class impedimenta </p> </li> <li id="GUID-B75E2747-AC61-5CEB-81BC-9C81FB6F67B1"><p>Boundary cases where importing and exporting symbols are illegal, which some ABI compilers accept without warnings or errors </p> </li> </ul> </li> <li id="GUID-38EB4EAC-5CF2-5984-9698-5AD1FA299EAD"><p>The ARM ABI Thunk Offset Problem </p> </li> <li id="GUID-09EF7017-C160-5621-A7D9-7AE40E21305B"><p>The Shared DEF File Problem </p> </li> </ul> <p>The information described in this document is valid for RVCT 2.1 build 416 or later and for any compiler that is compliant with the ARM ABI v2.0 and higher. </p> <section><title>Definitions</title> <p id="GUID-884B1DF5-ECC8-5243-85B4-9B07BA52C58B"><b>Terminology and Background</b> </p> <ul><li id="GUID-DFD94FF3-2823-5853-B14C-62F416715ADC"><p>For all of this section it is assumed that the user intends to derive <b>class D</b> from <b>class C</b> and that both classes reside in different DLLs. </p> </li> <li id="GUID-F116357D-74A5-54CB-903D-4317D18A2FF3"><p>Class C is called <b>DLL-derivable</b>, if class D can be derived from C. </p> </li> <li id="GUID-6543650D-210E-5582-8EF6-EA408BE78E12"><p>Class C is called <b>non-sharable</b> if it is marked using _<i>_</i>  <i>declspec(notshared)</i> or using the macros NONSHARABLE_CLASS(x) or NONSHARABLE_ STRUCT(x). It is not possible to DLL-derive from a non-sharable class. Otherwise class C is called <b>sharable</b>. </p> </li> <li id="GUID-6BE83B98-8AFC-52C8-9356-44CA62F167E5"><p> <b>Class Impedimenta</b> are entities that are emitted by the compiler for any class, but do not have a direct representation in source. Examples of class impedimenta are: </p> <ul><li id="GUID-7DBEC962-29BE-56FF-AC1F-AB6141B7DFA9"><p>the class’s virtual table, or </p> </li> <li id="GUID-FBCB4F71-C878-5736-8783-C5D6011176DE"><p>a virtual table’s thunks, or </p> </li> <li id="GUID-867A206E-8FA6-5E06-A3C0-14C6BAE05652"><p>the class’s run-time type information </p> </li> </ul> <p>Class impedimenta are a key element of the ABI and are identified through ELF symbols. They play a crucial role in enabling polymorphism, RTTI and derivation. This means that they also play a key role in DLL-derivation. In fact, if the Class Impedimenta of class C are not exported, it is not possible to DLL derive from class C or in other words class C is non-sharable. </p> <p>This raises the interesting question as to how it is possible to export Class Impedimenta – and thus enable DLL-derivation – if they have no representation in source. The answer to this question is given in <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-3DA52D31-E3D7-5061-8D15-1F1D69AE2ED1">The Simple Rule – Sharable Classes</xref> section. </p> </li> <li id="GUID-F7071803-9F81-538C-8314-09FDF7CB0790"><p> <b>Non-callable exports</b> are Class Impedimenta that are exported. They are often used as synonym for Class Impedimenta in this document. </p> </li> <li id="GUID-F97952F0-0D14-5BE0-A990-1DD75480D9D8"><p>A <b>key function</b> is the first non-inline, non-pure virtual function of a class. </p> </li> </ul> <p><b>Symbian Conventions </b> </p> <p>Symbian defines macros for exporting and importing classes to hide implementation details: </p> <table id="GUID-E33F9AC8-DCD4-56AF-B6E4-6EAE28204A34"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Macro</b>  </p> </entry> <entry><p> <b>RVCT Implementation</b>  </p> </entry> </row> <row><entry><p>IMPORT_C <i>func-declaration</i>  </p> </entry> <entry><p>__declspec(dllimport)<i> func-declaration</i>  </p> </entry> </row> <row><entry><p>EXPORT_C <i>func-definition</i>  </p> </entry> <entry><p>__declspec(dllexport) <i>func-definition</i>  </p> </entry> </row> <row><entry><p>NONSHARABLE_CLASS(<i>x</i>) </p> </entry> <entry><p>class __declspec(notshared)<i/>  <i>x</i>  </p> </entry> </row> <row><entry><p>NONSHARABLE_STRUCT(<i>x</i>) </p> </entry> <entry><p>struct __declspec(notshared)<i/>  <i>x</i>  </p> </entry> </row> <row><entry><p> <i>class</i> NONSHARABLE <i>name struct</i> NONSHARABLE <i>name</i>  </p> </entry> <entry><p>__declspec(notshared) </p> <p>This macro does not yet exist in the Symbian platform source code. However all known ABI compliant compiler support the notations </p> <ul><li id="GUID-44F58960-1EE5-5134-8B9A-0FCBBBDE6DAA"><p>struct __declspec(notshared)<i/>  <i>x</i>  </p> </li> <li id="GUID-5C5BD85E-FB82-5E02-AE2A-7A1FDF502117"><p>class __declspec(notshared)<i/>  <i>x</i>  </p> </li> </ul> <p>which means that it is safe to define a simpler macro which does not require an argument. That macro could also be used in conjunction with templates. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-A6382EAB-EEF5-56AC-B15E-B3740BB3C102"><title>Class Exporting Rules</title> <p>This section is a programmer’s summary of the Class Exporting Rules. </p> <p id="GUID-3C81E1FD-398F-55F3-B18A-AE4BB60EBAED"><b>Exporting Objects</b> </p> <p>A function, method of a class or data item is exported by marking its definition using the EXPORT_C macro. A function, method of a class or data item is imported by marking its declaration using the IMPORT_C macro. If an object is declared IMPORT_C and used in code, the linker will error if the definition of this object is not marked EXPORT_C. </p> <p>Although not required by the class exporting rules it is good practice to </p> <ul><li id="GUID-C5191DBB-6098-5301-8858-3B0F0FA15470"><p>Always mark all declarations of an exported object with IMPORT_C. </p> </li> <li id="GUID-142AEB30-4A89-52AB-91E9-7395FFBFD765"><p>Never mark objects that are not exported with IMPORT_C. </p> </li> </ul> <p id="GUID-3DA52D31-E3D7-5061-8D15-1F1D69AE2ED1"><b>The Simple Rule – Sharable Classes</b> </p> <p>The compiler will automatically export all<i>Class Impedimenta</i>, i.e. compiler implementation specific symbols of a class C such as <i>run-time-type-information</i> and <i>virtual tables</i>, that are required to enable DLL-derivation from class C. This means that all classes are by default <i>sharable</i>. </p> <p>The compiler will not export these symbols for classes that are marked as <i>non-sharable</i> using the macros NONSHARABLE_CLASS(<i>x</i>) or NONSHARABLE_STRUCT(<i>x</i>). Symbian requires that all classes that are derived from a non-sharable class are also marked non-sharable. </p> <p>Other methods or functions in classes are not automatically exported. They have to be explicitly exported as described in <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-3C81E1FD-398F-55F3-B18A-AE4BB60EBAED">Exporting objects</xref> section. Note that a class with virtual functions or virtual may not be DLL-derivable if the conditions in <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-7A65F9FF-DA65-54B2-A378-68C38675989B">Dll derivable classes</xref> section do not hold. </p> <p> <b>Example:</b> The following example shows the correct syntax to define a class as non-sharable: </p> <codeblock id="GUID-0B326A68-E896-5BC5-A444-57BC94F10ABE" xml:space="preserve">NONSHARABLE_CLASS(NonSharableClass) : public BaseClass … </codeblock> <p> <b>Note:</b> The Simple Rule has consequences in terms of how many entries are present in DEF files and for shared DEF files. See <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-E0F45E5F-F254-5D8B-A8E9-9D22C59DF2E4">The Shared DEF File Problem</xref> section for more details. </p> <p id="GUID-7A65F9FF-DA65-54B2-A378-68C38675989B"><b>DLL-Derivable Classes</b> </p> <p>The Simple Rule alone does not guarantee that the class C is DLL-derivable. Depending on the form of the class, additional conditions on exporting members of class C apply. This section outlines the conditions under which class C is DLL-derivable. </p> <p> <b>C has no Virtual Base</b>  </p> <p>For class C to be DLL-derivable, </p> <ul><li id="GUID-2D5ACE7B-0A15-5305-92ED-B7175B35D3EB"><p>Class C has to be sharable <b>AND </b>  </p> </li> <li id="GUID-5B62B475-1C69-5347-801B-4D13C4A72E33"><p>Every virtual function in C or C's bases that is not overridden in D needs to be <i>exported</i>  </p> </li> <li id="GUID-1683B0F7-0741-5224-884A-D3E8697A2051"><p>If the class C has no key function, i.e. it only has pure virtuals or inlined virtuals, all bases of C also have to be DLL-derivable. </p> </li> </ul> <p> <b>C has one or several Virtual Bases</b>  </p> <p>For class C to be DLL-derivable, </p> <ul><li id="GUID-C8B13C29-C1D0-5DC6-9E8D-28667E948E89"><p>Class C has to be sharable <b>AND</b>  </p> </li> <li id="GUID-5317D37C-51AF-569F-926E-5219775D6388"><p>Every virtual function in C or C's bases, virtual or otherwise, needs to be <i>exported</i>  <b>AND</b>  </p> </li> <li id="GUID-2D8BF597-94F4-55A0-A939-B405EBEF7C3B"><p>All bases of C, virtual or otherwise, have to be DLL-derivable </p> </li> </ul> <p>Note that link errors will occur if an attempt is made to DLL-derive a class from a base class that is not DLL-derivable. </p> <p><b>Boundary cases where Importing and Exporting Symbols is Illegal</b> </p> <p id="GUID-7CC0C991-DF72-5AD5-BD36-96BE67E215FE"><b>Static Symbols and Symbols in Anonymous Namespaces</b> </p> <p>The following code examples are illegal. But note that not all ABI compliant compilers produce an error or a warning in these situations. This is because the behaviour of export and import is neither defined by the C++ standard, nor is it defined by the ABI for the ARM Architecture. The ABI describes a binary interface and is not concerned with matters of syntax. </p> <p><b>Exporting/importing static symbols</b> </p> <p> <filepath> Foo.cpp </filepath>  </p> <codeblock id="GUID-6E1641ED-74FE-5549-8426-BFB6300F02EB" xml:space="preserve">static IMPORT_C int i; 
+static EXPORT_C int j;</codeblock> <p><b>Exporting/importing symbols defined in anonymous namespaces</b> </p> <p> <filepath> Foo.cpp</filepath>  </p> <codeblock id="GUID-B328F310-FE43-5989-B059-069821E1BEFC" xml:space="preserve">namespace { // anonymous namespace
+class CTest { 
+public: 
+    IMPORT_C CTest() { m = 0; }; 
+    EXPORT_C int get() { return m; }; 
+private: 
+    int m; 
+};
+}</codeblock> <p><b>Why is this illegal?</b> </p> <p>These patterns are illegal because they do not make sense. In fact it is impossible to write any C or C++ client code outside the compile unit in which the imports/exports are defined (e.g. Foo.cpp), that makes use of any statically defined object or an object defined in an anonymous namespace. </p> <p>This means that it is impossible that any of the exported symbols in the above examples can ever be used by client code that is in another DLL. </p> <p><b>What happens if I use these patterns?</b> </p> <p>The symbols that have been exported will appear in DEF files even though it is impossible to ever link against these symbols. Further the symbols contain a magic number. In the case of symbols in anonymous namespaces the symbol contains a filename and a magic number. For example: </p> <p> <codeph>_ZN30_GLOBAL__N__7_</codeph> <b>Foo_cpp</b> _<b>5b46ece4</b> <codeph>5CTestE</codeph> </p> <p>Where <codeph>Foo_cpp</codeph> is the filename and <codeph>5b46ece4</codeph> is the magic number. </p> <p>The ABI specifies that the magic number is unique. The creation of the magic number depends on the compiler. RVCT creates the magic number by computing a hash from the modification time-stamp of the source file and the top-level source directory. </p> <p>This means that in essence, the DEF file can never be frozen. If it is frozen, the Symbian toolchain will produce link errors, every single time the symbol changes. For RVCT this will happen every single time the source is changed, or when the user tries to build the source from a different source location than the person who froze the DEF file. Because the exported symbols can never be used, this is a trade-off without benefit. </p> <p><b>Classes in Anonymous Namespaces</b> </p> <p>Because of the <i>Simple Rule</i> (see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-3DA52D31-E3D7-5061-8D15-1F1D69AE2ED1">The Simple Rule – Sharable Classes</xref>) any class or structure that is defined in an anonymous namespace will export its Class Impedimenta. This means that by default, the compiler exports symbols that can never be used and cause a series of problems (see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-7CC0C991-DF72-5AD5-BD36-96BE67E215FE">Static Symbols and Symbols in Anonymous Namespaces</xref>). </p> <p>The ABI for the ARM architecture v2.0 specifies this behaviour, which is at the very least unintuitive, if not incorrect. </p> <p>The following code snippet will by default export the Class Impedimenta of the shown class and structure and thus gives rise to the problems described in <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-7CC0C991-DF72-5AD5-BD36-96BE67E215FE">Static Symbols and Symbols in Anonymous Namespaces</xref> section. Note that the exported Class Impedimenta can never be used by any client code. In fact by default, any class that is defined in an anonymous namespace is non-sharable. This is true, regardless of whether Class Impedimenta are exported or not. </p> <p> <b>Foo.cpp (incorrect)</b>  </p> <codeblock id="GUID-A17B8CE5-6F89-5C74-AC4F-B5A6BD2CA9FF" xml:space="preserve">namespace { // anonymous namespace 
+class CTest {…};
+struct STest {…};
+}</codeblock> <p>Thus, if you use anonymous namespaces, you must make sure to define them as non-sharable. For example: </p> <p> <filepath>Foo.cpp</filepath>  </p> <codeblock id="GUID-EEEBF8E8-9BAC-54D1-AE20-ADC97E15080D" xml:space="preserve">namespace { // anonymous namespace 
+class NONSHARABLE_CLASS(CTest)  {…};
+struct NONSHARABLE_STRUCT(STest) {…};
+}</codeblock> <p>This has no draw-backs and avoids any difficulties with frozen DEF files. If you have used anonymous namespaces incorrectly in the past, add the relevant NONSHARABLE macro and re-freeze your DEF file using <codeph>abld freeze
+                –r armv5</codeph>. This will re-freeze the DEF file, leaving gaps where the removed exports would have been and thus does not affect binary compatibility. </p> <p><b>Auto-Exporting</b> </p> <p>The Simple Rule only covers compiler implementation specific data items that are required to enable DLL-derivation. However the compiler may also emit and export implementation specific functions. This process is called <i>auto-exporting</i>. This section describes under which circumstances the compiler auto-exports. Note that the compiler also may generate symbols for EABI library functions (these start with __cxa or __eabi). </p> <p><b>Constructors and Destructors</b> </p> <p>For each constructor/destructor in source, the compiler may create several instances of constructors/destructors in the object file, depending on how the constructor and destructors are used. If the constructor/destructor is exported, then all of the generated constructors/destructors are auto-exported. In such a case the following symbols may appear in your DEF file: </p> <p>_ZN…C1… complete object constructor </p> <p>_ZN…C2… base object constructor </p> <p>_ZN…C3… complete allocating constructor </p> <p>_ZN…D0… deleting destructor </p> <p>_ZN…D1… complete object destructor </p> <p>_ZN…D2… base object destructor </p> <p><b>Thunks</b> </p> <p>Under the C++ ABI <i>thunks</i> occur in the presence of multiple inheritance or virtual inheritance. They are used to adjust the <i>this</i> pointer of a class before calling virtual functions. Details can be looked up in the ABI. The export of a thunk is triggered, when a virtual function that needs a thunk is exported. Thunks have the form _ZTh… or _ZTv… </p> <p id="GUID-63FC4816-1807-5238-BB8F-644490A7A5F9"><b>Class Impedimenta</b> </p> <p>When checking DEF files non-callable exports and other compiler specific symbols may be present. The following list shows what some of these symbols mean: </p> <p>_ZTV… Virtual Table (VTABLE) </p> <p>_ZTI… Run-time Type Information (RTTI) </p> <p>_ZTT… Construction VTABLE </p> <p>_ZTh… Thunk emitted using multiple inheritance </p> <p>_ZTv… Thunk emitted using virtual inheritance </p> </section> <section><title>ARM ABI Thunk Offset Problem</title> <p><b>Symptoms of the ARM ABI Thunk Offset Problem</b> </p> <p>The "EABI Thunk Offset Problem" is the name that Symbian uses to describe a particular kind of build error which arises when multiple inheritance is used, and the size of a base class is changed. Here is an example of a typical symptom: </p> <codeblock id="GUID-F68AB56A-3ECF-55D8-91BA-83AD93CEF32E" xml:space="preserve">MAKEDEF ERROR: 1 Frozen Export(s) missing from object files:
+\src\example\MyDLLU.DEF(3) : _ZThn8_N7Derived3fooEv @2
+MAKEDEF WARNING: 1 export(s) not yet Frozen in \src\example\MyDLLU.DEF:
+..\..\..\EPOC32\BUILD\src\example\group\MyDLL\ARMV5\MyDll{000a0000}.def(7) : _ZThn12_N7Derived3fooEv @6</codeblock> <p>This shows a problem with a frozen DEF file: the export at ordinal 2 is missing, and a new unfrozen export has been added at ordinal 6. When comparing the two symbols, they look suspiciously similar to each other, and to a third symbol in the DEF file: </p> <codeblock id="GUID-41EDE0BF-3A2F-5D76-A6B5-C4935A12CC29" xml:space="preserve">_ZN7Derived3fooEv @1 
+_ZThn8_N7Derived3fooEv @2        // this one is missing 
+_ZThn12_N7Derived3fooEv @6        // this one has appeared</codeblock> <p>The exports beginning with _ZTh are compiler generated functions called thunks (see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-63FC4816-1807-5238-BB8F-644490A7A5F9">Class Impedimenta</xref>), and the information between _ZTh and the next underscore is the offset associated with the thunk. Our problem is that for some reason, the offset associated with the thunk has changed from –8 to –12 (the n denotes a negative offset). Note that there is another variant of this problem that involves thunks beginning with _ZTv. </p> <p>These generated functions are a feature of the Itanium C++ ABI, on which the ABI for the ARM architecture builds upon. Hence the name "ARM ABI Thunk Offset Problem". </p> <p><b>What causes this problem?</b> </p> <p>The problem is caused because the symbol name generated for the thunk contains an offset number. More details can be found in <xref scope="external" href="http://www.codesourcery.com/cxx-abi/abi.html">http://www.codesourcery.com/cxx-abi/abi.html</xref> under section 5.1.4. This offset may change, when the signature of the base class is changed. For example when a data member is added or removed. </p> <p>Another condition to trigger the problem needs to hold as well: multiple inheritance with virtual functions in more than one of the base classes. If this condition does not hold, the compiler will not generate a thunk and thus there is no problem. </p> <p>Note that this is always a Binary Compatibility break, which shows up as a change to symbols in DEF files. </p> <p><b>How do I fix it?</b> </p> <p>There are three choices to fix it: </p> <ol id="GUID-804A94CF-1A73-5640-B3B8-2DDFBEDD407A"><li id="GUID-955EC339-EC01-5989-B388-6D6BE285F14D"><p>The first option is to refreeze the DEF file: this would be OK if you are not maintaining a frozen interface, and your customers will in any case need to rebuild because of the Binary Compatibility break. The easiest way to refreeze is to delete all of the exports from your existing DEF file, build again, and then use "<i>abld freeze armv5</i> " to update the DEF file. After updating the DEF file, build again: this time it should build cleanly. </p> </li> <li id="GUID-9CE95A51-20BD-51B7-93D6-629FB97014FA"><p>The second option is to use the attached script to fix the ABI Thunk Offsets. It expects to read a build log containing the MAKEDEF errors and warnings and will modify the DEF file to replace each missing export with the corresponding unfrozen export. Run the script with no arguments to get further details. </p> <fig id="GUID-7C590699-C58D-5619-8FFA-1DE51A0D666F"><image href="GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e5472_href.png" placement="inline"/></fig> <p>After fixing the DEF file, you will need to rebuild the DLL which uses the DEF file. </p> </li> <li id="GUID-22502314-4780-57B8-9D45-05470FA95757"><p>The last option is that you could change your mind about adding that extra member data. This will only be an option if it is your change which causes the problem: if your supplier has changed the size of a class that they own and caused this problem, then you are forced to change your DEF file. </p> <p>If you own the class which has the extra member data, it is worth noting that this change is likely to affect your customers as well. They will have to rebuild because of the BC break. Adding to this they will also see the ABI Thunk Offset Problem if they derive from your class. This includes simple inheritance from a class which shows the problem, if it re-implements any of the virtual functions which require thunks. </p> <p>When Symbian breaks compatibility in a way likely to cause this problem, the corresponding entry in the Compatibility Break spreadsheet will say "BC+ Break: Rebuild &amp; Check/Fix Def-File EABI Thunk Offsets". </p> </li> </ol> <p><b>Tell me the full details: What is a thunk? What causes its offset to change? </b> </p> <p>In a C++ class hierarchy involving both virtual functions and multiple inheritance, objects can be accessed as though they were several different types. A typical Symbian platform example would be a CBase-derived class which also derives from an M-class, perhaps to provide an <i>observer</i> interface: for example CCoeControl, which derives from both CBase and MObjectProvider. </p> <p>The virtual functions which can be called on an object depends on the type it currently appears to be.A CCoeControl object can be viewed as a CBase object, in which case it has one set of virtual functions, or as an MObjectProvider, in which case it has another. The compiler constructs separate <i>virtual tables</i> for each of the possible interfaces, and these tables contain information about how to convert back to the underlying CCoeControl object. When converting from a CCoeControl pointer to an MObjectProvider pointer, the compiler will adjust the value of the pointer, so that it points to the "MObjectProvider" part of the object, and not the full CCoeControl object. </p> <p>The MObjectProvider class defines a pure virtual function MopSupplyObject, which is implemented in CCoeControl. Even when the object is presenting it's MObjectProvider interface, the vtable must use the correct implementation of MopSupplyObject, which expects to be used in the context of a CCoeControl. The solution used by the compiler is to create a <i>virtual function override thunk</i> function which makes any necessary adjustments between the calling context (a pointer to MObjectProvider) and the execution context (a pointer to CCoeControl). </p> <p>This could have been implemented using the names of the two contexts, but instead the ABI uses the amount by which the <i>this</i> pointer needs to be adjusted to make the switch: this is the offset encoded in the name. </p> <p>Here is a small example: </p> <p> <b>eabi_thunk_offset_problem.cpp</b>  </p> <codeblock id="GUID-8ED84BFF-EDB0-5C54-8CE9-05F289231FF2" xml:space="preserve">#ifndef COUNT 
+#define COUNT 1 
+#endif 
+
+class Base 
+{ 
+public: 
+    int iBaseMember[COUNT]; 
+    virtual ~Base(); 
+}; 
+
+class MInterface 
+{ 
+public: 
+    virtual int foo(); 
+}; 
+
+class Derived : public Base, public MInterface 
+{ 
+public: 
+    virtual int foo(); 
+    int iDerived; 
+}; 
+
+class MoreDerived : public Derived 
+{ 
+public: 
+    virtual int foo(); 
+    int iMoreDerived; 
+}; 
+
+int Derived::foo() { return iDerived; } 
+Derived* fun1() { return new Derived; } 
+MInterface* fun2() { return new Derived; } 
+
+int MoreDerived::foo() { return iMoreDerived; } 
+MoreDerived* fun3() { return new MoreDerived; } 
+MInterface* fun4() { return new MoreDerived; }
+</codeblock> <p>Compile this with <i>armcc -S eabi_thunk_offset_problem.cpp</i> to get an assembly listing. Compile it again with an extra argument "-DCOUNT=2" to change the size of the base class, and compare the two files: there will be various differences in the code, but also differences in the _ZTh symbols - including the differences used in the "typical symptom" above. </p> <p>If you use virtual inheritance, then you may see another version of the problem. With virtual inheritance, there are two offsets involved and the thunk symbols will begin with _ZTv. The same symbol may appear in several thunks, each with different offsets. </p> </section> <section id="GUID-E0F45E5F-F254-5D8B-A8E9-9D22C59DF2E4"><title>The Shared DEF File Problem</title> <p><b>What is the Problem with Shared DEF Files?</b> </p> <p>The class exporting rules (see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-A6382EAB-EEF5-56AC-B15E-B3740BB3C102">Class Exporting Rules</xref>) by default will generate non-callable exports for all classes that are not marked non-sharable in source. Say two DLLs, A and B share one DEF file, in effect implementing similar but different functionality towards the same public interface. Further say, no classes are marked non-sharable. Say there are some classes that are shared between DLL A and DLL B and that these classes have names of the form CShared&lt;xyz&gt;. Classes that are specific to DLL A have names of the form CA&lt;xyz&gt;, classes specific to DLL B have names of the form CB&lt;xyz&gt;. When DLL A is built, DEF file entries for non-callable exports from CShared&lt;xyz&gt; and CA&lt;XYZ&gt; are automatically added to the DEF file. When DLL B is built, exports from CShared&lt;xyz&gt; and CB&lt;XYZ&gt; are added. So in fact the DEF file would be the sum of all non-callable exports from CShared&lt;xyz&gt;, CA&lt;xyz&gt; and CB&lt;XYZ&gt;. It also will contain symbols from functions that are marked for export using EXPORT_C. However, this means that neither A or B can be linked. This is because when A is built, the code linking against the non-callable exports of CB&lt;XYZ&gt; do not exist in A and vice versa. </p> <fig id="GUID-E2B571A3-0463-5886-AD08-D50F0420EAF9"><image href="GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e5557_href.png" placement="inline"/></fig> <p><b>Use-cases for Fixing Shared DEF Files</b> </p> <p> <b>Use-Case 1:</b>  <b> Polymorphic “Plug-ins”</b>  </p> <p>Several DLLs are built using the same DLL interface (DEF file). Typically the DEF file has very few entries (1 or 2) and is maintained manually. This means that new functions are added by editing the shared DEF file. Also typically no import libraries are needed as the knowledge about the DLL interface is hard-coded into the client code of the "plug-in". The plug-ins do not have to be loaded at run-time. Some are always built but not always included in the ROM. </p> <p> <b>The Fix:</b>  </p> <ol id="GUID-A5D72F88-AF26-57FB-823F-7331992EB0F8"><li id="GUID-DE2A9DBD-EF23-56AA-997A-90B717406DBB"><p>If the shared DEF file is in \epoc32\include\def\EABI then locate the original DEF file by searching all BLD.INF files for the appropriate line in PRJ_EXPORTS </p> </li> <li id="GUID-1BE3AEA4-B629-5273-A370-DC3A9DABBA80"><p>Remove all non-callable exports that have caused warnings or errors from the original DEF file. </p> </li> <li id="GUID-CADA2F46-96C3-50DD-99AE-847D2EC70CFE"><p>Add NOEXPORTLIBRARY to all MMP files that share that component, ensuring that the build system does NOT try and re-freeze these automatically the next time you build. Otherwise the build system will re-introduce these non-callable exports. </p> </li> </ol> <p> <b>Note:</b>  </p> <p>If you want to use the re-freeze mechanism – say to add a new export, you have to temporarily remove NOEXPORTLIBRARY from the MMP file, then generate a new DEF file by re-building the component, re-freeze, possibly edit (to remove unwanted non-callable exports) and then insert the keyword NOEXPORTLIBRARY into the MMP file again. </p> <p> <b> Use-Case 2:</b>  <b> Polymorphic “Plug-ins” on which Other Components Depend</b>  </p> <p>This is very similar to use-case 1, except that some other component depends on one of the plug-ins. This means that an import library is required. </p> <p> <b>The Fix: </b> The build structure must be such that </p> <ul><li id="GUID-9B61065B-E448-5B32-910C-4F8356B30E63"><p>One MMP file generates the import library from the shared DEF file using the target type IMPLIB. It may be necessary to create a new MMP file which does this. </p> </li> <li id="GUID-4CB6CB0F-E690-5AAB-8B0C-1A6D64ECBC31"><p>All the other MMP files use NOEXPORTLIBRARY as described in use-case 1 </p> </li> </ul> <p> <b>Note:</b>  </p> <p>If you want to use the re-freeze mechanism – say to add a new export, you have to temporarily remove NOEXPORTLIBRARY from the MMP file, then generate a new DEF file by re-building the component, re-freeze, possibly edit (to remove unwanted non-callable exports) and then insert the keyword NOEXPORTLIBRARY into the MMP file again. </p> <p> <b>Use-Case 3:</b>  <b> Annotate Classes as Non-sharable</b>  </p> <p>Where a DEF file must be shared between components for whatever reason and none of the above use-cases can be applied, the build would fail for at least one component. An example of this may be a class MyPrivateClass that exists in the debug build (UDEV) of the OS, but not in the release build (UREL). </p> <p>In such a case all classes that should not contribute to the DEF file, i.e. that are really private to the implementation of a component, must be annotated in the source as NONSHARABLE_CLASS(X) or NONSHARABLE_STRUCT(X). As a result no non-callable exports will be generated for such a class. Say for example, class MyPrivateClass is truly private to a component that must share a DEF file with another component. Then it should be declared: </p> <codeblock id="GUID-8E236162-F6BA-5A77-9A50-8546C49A7FFC" xml:space="preserve">    NONSHARABLE_CLASS(MyPrivateClass)
+    {
+    ...
+    };</codeblock> <p>This will prevent the compiler from exporting non-callables for MyPrivateClass. However this means that it is not possible to DLL-derive (for the definition of DLL-derive see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-884B1DF5-ECC8-5243-85B4-9B07BA52C58B">Terminology and Background</xref>) from MyPrivateClass and that all classes derived from MyPrivateClass must also be marked non-sharable (see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-884B1DF5-ECC8-5243-85B4-9B07BA52C58B">Terminology and Background</xref>). </p> <p> <b>Use-Case 4:</b>  <b> Optimisation</b>  </p> <p>A consequence of the Simple Rule (see <xref href="GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita#GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12/GUID-3DA52D31-E3D7-5061-8D15-1F1D69AE2ED1">The Simple Rule – Sharable Classes</xref>) is that some components may emit entries in their DEF files which are not needed. In the worst case the overhead is 8 bytes of ROM size per class (2 DLL entry points). In the typical case an increase of 4 bytes will occur and in some cases no increase at all. </p> <p>For code that is private to an implementation, i.e. where it is known that a class would never be used outside of that component, this footprint increase is unnecessary. In order to avoid the footprint increase mark all private classes (and classes derived from them) in the source as NONSHARABLE_CLASS(X) or NONSHARABLE_STRUCT(X) as described for use-case 3. </p> <p> <b> Use-Case 5:</b>  <b> The Build Tools Automatically Ignore Non-callable Exports</b>  </p> <p>For most components the build tools automatically ignore <b>all</b> non-callable exports. This is the case because the build tools know the situations when non-callable exports cannot be needed. Non-callable exports are only needed, if: </p> <ul><li id="GUID-BF53F4C7-14B3-5FEB-8CAE-F71383DFAB2E"><p>The target type is either DLL, EXEDLL or EXEXP and the MMP file has no NOEXPORTLIBRARY keyword </p> </li> <li id="GUID-622E7A6F-0618-5331-9AE8-E2ABDD7FA190"><p>If the MMP file contains the DEFFILE keyword and the MMP file has no NOEXPORTLIBRARY keyword </p> </li> </ul> <p>The reason for this is that target types, such as APP, always map directly onto one of the above use-cases. For example the target type APP is an example of use-case 1, i.e. the APP is a DLL that always has the same DEF file. However no other DLL but the APP loader will ever link against this binary, unless its MMP file contains the DEFFILE keyword. </p> <p> <b>Use-Case 6:</b>  <b> Best Practice</b>  </p> <p>Note that it is good practice to avoid unnecessary footprint increases by marking private classes as non-sharable as outlined in use-case 4. Further note, that at some point in the future Symbian may add this to the Symbian Coding Standards or withdraw tools support for some of the cases described above. </p> <p><b>Optimisation</b> </p> <p>This section discusses advantages of marking “private” classes as described in use-cases 4 and 6 in the previous section as non-sharable </p> <p>Reasons for Optimisation: </p> <ul><li id="GUID-50EBEA63-092D-5B01-8371-890947D05E57"><p>Small footprint saving </p> </li> <li id="GUID-509DD311-4E9E-5A32-8194-25F9DA554417"><p>DEF files are more “pretty”, i.e. they will have fewer entries for non-callable exports in it and may have fewer holes in them. </p> </li> <li id="GUID-7DD701A6-E55A-5ECD-B905-416281014E4D"><p>When changing code that is private to a module as described in use-case 4 and not marked non-sharable, DEF file changes are required when: </p> <ul><li id="GUID-CA989C12-3138-53F3-A5C0-7092A31E9867"><p>Renaming a private class </p> </li> <li id="GUID-835872C3-C047-57F8-9221-E356B2D09A5A"><p>Removing a private class </p> </li> <li id="GUID-20632617-A0DB-5DF5-9C39-EF14A39CC8DF"><p>Adding a private class </p> </li> </ul> <p>This makes it harder to maintain DEF files and will ultimately lead to less “pretty” DEF files when Binary Compatibility must be maintained. </p> </li> <li id="GUID-7B1CAE8B-3CB9-5782-AE6E-7B4AE2E2307E"><p>More non-sharable classes mean that it is less likely to have problems with shared DEF files as outlined in use-cases 1 and 2 in the previous section. </p> </li> </ul> <p> <b>When not to use Optimisation:</b>  </p> <p>It is not advisable to use optimisation in the following circumstances, as the build tools suppress non-callable exports automatically in these cases: </p> <ul><li id="GUID-0CD3582F-3976-599D-B1F1-A16C8025E50E"><p>The target type of the component containing private classes is neither DLL, EXEDLL nor EXEXP and no DEFFILE keyword is contained the components MMP file </p> </li> <li id="GUID-37D22C06-234B-57D8-9605-343E28EBB674"><p>The MMP file of the component contains the NOEXPORTLIBRARY keyword. </p> <p>If the NOEXPORTLIBRARY keyword has been introduced to work around problems introduced by shared DEF files and the Simple Rule it may be better to remove the NOEXPORTLIBRARY keyword and mark private classes as non-sharable instead. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e296593_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A" xml:lang="en"><title>UI components</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody><table id="GUID-CB1618F8-C658-42A5-BF86-3AA8CDCFF681-GENID-1-6-1-6-1-1-5-1-2-1">
+<tgroup cols="3"><colspec colwidth="0.83*" colname="col1"></colspec><colspec colwidth="0.94*" colname="col2"></colspec><colspec colwidth="1.22*" colname="col3"></colspec>
+<thead>
+<row>
+<entry>               <p>Component</p>             </entry>
+<entry>               <p>Example image</p>             </entry>
+<entry>               <p>C++ APIs for implementation</p>             </entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><xref href="GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita">Home screen</xref></p></entry>
+<entry><p><fig id="GUID-6A624797-6BCF-4436-B95A-54C3147320DA">
+<image href="GUID-521C2463-A72B-4C48-8815-61689264F2C1_d0e52001_href.jpg" scale="50" placement="inline"></image>
+</fig></p></entry>
+<entry><p>Home
+Screen Publishing API</p></entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita">Stylus
+pop-up menu</xref></p>             </entry>
+<entry>               <fig id="GUID-F042CCE6-26B3-4BC0-B9C2-80E5B36730F2-GENID-1-6-1-6-1-1-5-1-2-1-1-5-2-2-1">
+<image href="GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e52023_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry><p><xref href="GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita">Stylus pop-up
+menu API</xref></p></entry>
+</row>
+<row>
+<entry>               <p>                 <xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita">Toolbar</xref> 
+             </p>             </entry>
+<entry>               <fig id="GUID-785BE9BB-451F-44BA-A061-35D613D87E61-GENID-1-6-1-6-1-1-5-1-2-1-1-5-3-2-1">
+<image href="GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e52048_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p><xref href="GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita">Toolbar
+API</xref>, <xref href="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita">Generic
+button API</xref> for buttons</p>             </entry>
+</row>
+<row>
+<entry><p>Choice list</p></entry>
+<entry><fig id="GUID-EAE34488-B88B-4D2C-9DAB-A5D8C2AFDE4C">
+<image href="GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e52073_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry><p><xref href="GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita">Choice list
+API</xref></p></entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita">Forms</xref></p> 
+           </entry>
+<entry>               <fig id="GUID-0329DFE0-EC57-41D3-A3A8-E016A88EB9AD-GENID-1-6-1-6-1-1-5-1-2-1-1-5-5-2-1">
+<image href="GUID-85873CBE-6077-4917-B2B0-5D00C6647CC8_d0e52095_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Form
+API</p>                           </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita">Form
+items</xref></p>               <ul>
+<li>                   <p>Text field</p>                 </li>
+<li>                   <p>Pop-up field</p>                 </li>
+<li>                   <p>Slider</p>                 </li>
+</ul>             </entry>
+<entry><fig id="GUID-65FDE0EB-6063-475D-BC7A-CF0D53445009">
+<image href="GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e52140_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry>              <p>Form
+API</p>             </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita">Grouped
+soft notification</xref>, <xref href="GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita">List
+query</xref>, <xref href="GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita">Grid
+query</xref></p>             </entry>
+<entry>               <fig id="GUID-53B1D1D1-CE34-4271-9AEA-57A9EE81EDA7-GENID-1-6-1-6-1-1-5-1-2-1-1-5-7-2-1">
+<image href="GUID-A432469D-F594-4A94-8889-142AB39A795D_d0e52170_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Queries
+API</p>             </entry>
+</row>
+<row>
+<entry>               <p>Left/Right arrows in the <xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi
+pane</xref></p>             </entry>
+<entry>               <fig id="GUID-13EFAD4E-B334-4B64-85B0-C5EE3294FD97-GENID-1-6-1-6-1-1-5-1-2-1-1-5-8-2-1">
+<image href="GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e52196_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Navigation
+pane API</p>             </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita">Markable
+list</xref></p>               <p><xref href="GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita">Selection
+list</xref></p>             </entry>
+<entry>               <fig id="GUID-D0A31598-850F-41C7-BAB7-EB131975A95D-GENID-1-6-1-6-1-1-5-1-2-1-1-5-9-2-1">
+<image href="GUID-CA4C11C4-CDD3-4154-B401-B37A88676322_d0e52225_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Lists
+API</p>             </entry>
+</row>
+<row>
+<entry>               <p>Menu list (e.g., <xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options
+menu</xref> and submenus)</p>             </entry>
+<entry>               <fig id="GUID-9130451A-B2CF-4D0C-A673-1FDBE6143E2A-GENID-1-6-1-6-1-1-5-1-2-1-1-5-10-2-1">
+<image href="GUID-C14D29C2-EDE6-4AB2-A346-668591B7ED3C_d0e52252_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Options
+menu API</p>             </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-0E695106-4139-4335-A11F-BD04418DD583.dita">Multi-selection
+list</xref></p>             </entry>
+<entry>               <fig id="GUID-4D2CEDA3-7797-41EE-AD2B-0822284E2066-GENID-1-6-1-6-1-1-5-1-2-1-1-5-11-2-1">
+<image href="GUID-6A28C9DE-6EAC-4F39-921A-083198C89004_d0e52277_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Lists
+API</p>             </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita">Preview
+pop-up</xref></p>             </entry>
+<entry><fig id="GUID-BC4E1D2A-8F82-4F92-9F3C-7FEE4192A5F5">
+<image href="GUID-AA4FF598-36A0-4F3B-B440-14052C01EED8_d0e52301_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry><p>Information
+preview pop-up API</p></entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita">Scroll
+pane</xref></p>             </entry>
+<entry><fig id="GUID-EA088287-61B0-4C98-AD08-C897E2F20260">
+<image href="GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e52322_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry><p>Scroller
+API</p></entry>
+</row>
+<row>
+<entry>               <p>                 <b>Setting items</b>           
+   </p>             </entry>
+<entry></entry>
+<entry><p>Setting
+pages API</p></entry>
+</row>
+<row>
+<entry>               <p>Pop-up setting</p>             </entry>
+<entry><fig id="GUID-278719D0-A988-43B0-8C41-77AF38BF97C7">
+<image href="GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e52361_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry>               <p></p>             </entry>
+</row>
+<row>
+<entry>               <p>Multiselection list setting</p>             </entry>
+<entry><fig id="GUID-081B8B6A-DD1A-4464-9EC4-1D2059BBC96D">
+<image href="GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e52381_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry>               <p></p>             </entry>
+</row>
+<row>
+<entry>               <p>Text setting</p>             </entry>
+<entry><fig id="GUID-C3AE37C2-FCCC-46AB-883C-C98A3FA6C92E">
+<image href="GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e52401_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry>               <p></p>             </entry>
+</row>
+<row>
+<entry>               <p>Slider setting</p>             </entry>
+<entry><fig id="GUID-812E74D8-79FF-440F-B564-C47B7E3CB0A9">
+<image href="GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e52421_href.png" scale="27" placement="inline"></image>
+</fig></entry>
+<entry>               <p></p>             </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita">Setting
+list</xref></p>             </entry>
+<entry>               <fig id="GUID-A7120F4F-0B07-4E33-B109-9760F16B22E6-GENID-1-6-1-6-1-1-5-1-2-1-1-5-19-2-1">
+<image href="GUID-51AB13C3-755C-45CD-841D-1CDF45338A2F_d0e52443_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Setting
+pages API, Lists
+API</p>             </entry>
+</row>
+<row>
+<entry>               <p>Softkeys (left and right) in the <xref href="GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita">Control
+pane</xref></p>               <note>There is no middle softkey label in Touch
+UI</note>             </entry>
+<entry>               <fig id="GUID-0DE5F819-8841-4AFE-A0EE-897A106CFA17-GENID-1-6-1-6-1-1-5-1-2-1-1-5-20-2-1">
+<image href="GUID-82ECE53F-FF7B-4DFB-874D-24487E6BB5BD_d0e52475_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Buttons
+API</p>             </entry>
+</row>
+<row>
+<entry>               <p>Tabs in the <xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi
+pane</xref></p>             </entry>
+<entry>               <fig id="GUID-F16305FA-14A3-4252-A1D8-A30E078D5CD2-GENID-1-6-1-6-1-1-5-1-2-1-1-5-21-2-1">
+<image href="GUID-0B647098-CCD8-4E9C-A07F-9A9E2346CA23_d0e52501_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <p>Tabs
+API, Navigation
+pane API (container)</p>             </entry>
+</row>
+<row>
+<entry>               <p><xref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita">Status
+pane</xref></p>               <ul>
+<li>                   <p><xref href="GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita">Title
+pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi
+pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita">Battery
+pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita">Universal
+indicator pane</xref></p>                 </li>
+<li>                   <p><xref href="GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita">Signal
+pane</xref></p>                 </li>
+</ul>             </entry>
+<entry>               <fig id="GUID-DB24556D-1254-425A-B5ED-2C76E50B7735-GENID-1-6-1-6-1-1-5-1-2-1-1-5-22-2-1">
+<image href="GUID-22BE45B9-7788-41B5-9E81-E0420CB956C7_d0e52568_href.png" scale="27" placement="inline"></image>
+</fig>             </entry>
+<entry>               <ul>
+<li><p>Status
+pane API for the entire status pane</p></li>
+<li><p>Title
+pane API for the title pane</p></li>
+<li><p><xref href="GUID-B876D548-FD40-4369-B328-7427002B4851.dita">Title Pane Touch
+Observer API</xref> for title pane touch events</p></li>
+<li><p>Navigation
+pane API for the entire navi pane</p></li>
+<li><p>Tabs
+API for tabs in the navi pane</p></li>
+<li><p>HWRM
+power state API for a publish and subscribe interface to battery status</p></li>
+<li><p>Indicators
+API for the indicator pane</p></li>
+<li><p>The signal pane is not accessible to applications.</p></li>
+</ul>             </entry>
+</row>
+</tbody>
+</tgroup>
+</table></conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e300923_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CCFF2755-02EC-510B-A052-33ABA318B922.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CCFF2755-02EC-510B-A052-33ABA318B922"><title>Examples of use</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Text objects can be used for a variety of purposes. Some examples throughout the Symbian OS and its standard applications include:</p> <ul><li id="GUID-0FAFB638-FB94-5955-A879-B6297F4BA542"><p>word processor documents</p> <p>A word processor document is a single rich text object, containing fields, pictures and styles. This is the "classic" use of text content and views.</p> </li> <li id="GUID-2E076BB5-0501-55AA-BA18-6454D7DF1D83"><p>spreadsheet cells</p> <p>A spreadsheet contains a number of global text cells, each of which shares a common paragraph and character format layer. This enables the text to be maintained by text content and displayed using text views, but avoids duplicating format layers.</p> </li> <li id="GUID-EF8987E4-DE93-5531-867F-2318E696522A"><p>editor controls</p> <p>Editors for rich and global text provide the functionality needed for editing text objects, descriptors, and even text representations of floating point numbers etc.</p> </li> <li id="GUID-9B48DACD-A393-5796-9BE3-DD25812559AB"><p>agenda views</p> <p>The complex requirements of the day view in the agenda application are met by putting all text into a single rich text object, with appropriate formatting. This allows the powerful facilities of text views to format the display neatly, including such facilities as slot squashing, rounded highlights on bullets etc.</p> <p>When an individual entry is edited, its own data is edited in a separate rich text object. This is later pasted back into the view.</p> </li> <li id="GUID-4A0E4173-7F13-56E2-BE4A-1E0DEC5715C6"><p>things which can contain embedded objects</p> <p>Since rich text contains pictures, and rich text editors allow these to be edited, any application can contain pictures in its data, and can therefore embed objects, simply by using rich text to store its entry data. Both the agenda and the database may contain rich text objects, which allows their entries to contain pictures.</p> </li> </ul> <p>It is very easy to use rich text in an application. The system provides enough flexibility to be tailored for specialist applications, such as the spreadsheets stringent memory economy, or the agenda's complex views.</p> <p>In the absence of an application engine, typically, two prerequisites for the editing and layout of rich or global text are a text layout and a view. The <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita"><apiname>CTextView</apiname></xref> and <xref href="GUID-FEE7C848-2E93-3848-A3DA-7EAA533615AF.dita"><apiname>CTextLayout</apiname></xref> classes provide the engine for handling changes to formatting and content and for drawing and updating the <keyword>text view</keyword>. They are optimised for efficiency. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD0EF6F2-9515-5884-B979-C3C391B7DA07.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CD0EF6F2-9515-5884-B979-C3C391B7DA07" xml:lang="en"><title>SIP Codec API</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8" xml:lang="en"><title>Local
+connectivity</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Local connectivity has fewer security issues due to its short range.
+However, general rules of communication security apply to local connectivity
+as well. This section discusses Bluetooth and infrared.</p>
+<section id="GUID-A0FF4E29-CB0F-4752-B3B7-1F5C0D3EA1C8"><title>Bluetooth</title>
+<p>The Bluetooth wireless technology is a short range and low power network
+for data and voice communication in any place of the world. The figure below
+illustrates the relationships between the different Symbian Bluetooth classes.</p>
+<p>For more information, see <xref href="GUID-34A82EC4-E795-4884-A1F0-616BFB38F7C3.dita">Transferring
+data over a Bluetooth connection</xref> in the Communication section, and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Short-Link-Services-subsystem-guide/ShortLinkServices/TechnologyGuides/Bluetooth/BluetoothOverview.html" format="application/java-archive">Bluetooth</xref>.</p>
+<fig id="GUID-0C459AD9-E972-4FC8-9C26-8879E8C2835D"><title>Bluetooth API</title><image href="GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e7734_href.png"/></fig>
+<p>Use the Bluetooth Security Manager to set the appropriate security requirements
+(authentication, authorization, and encryption) that <i>incoming</i> connections
+to the device's Bluetooth services must meet. For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Short-Link-Services-subsystem-guide/ShortLinkServices/ShortLink/BluetoothProtocolClientAPIs/usingSecMan/index.html" format="application/java-archive">Using Bluetooth Security Manager</xref>.</p>
+<p>The Bluetooth stack will not by default enforce any particular Bluetooth
+security for <i>outgoing</i> socket connections. If the remote device requires
+authentication or encryption to connect, it will be handled automatically
+by the Bluetooth stack. For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Short-Link-Services-subsystem-guide/ShortLinkServices/ShortLink/BluetoothProtocolClientAPIs/UsingBtSocks/FindConnect/usesec.html" format="application/java-archive">How to use security on outgoing sockets</xref>.</p>
+</section>
+<section id="GUID-2CE155AD-1FFC-41D2-9778-032EF43B8002"><title>Infrared</title>
+<p>Infrared provides a means for short-range communication between devices.
+Symbian implements the Infrared Data Association (IrDA) stack for infrared
+connections. Infrared connections are handled through general Serial or Socket
+Server interfaces.</p>
+<p>The IrDA standard does not specify any security features for data transfer,
+but since the devices attempting infrared connection are in visual contact,
+it is easier to control communication and access to the device. Implement
+authentication, authorization, encryption, or any other security features
+needed in the application level.</p>
+<p>For more information, see <xref href="GUID-E17CE95F-C64A-494B-8E26-67E56B77ED01.dita">Transferring
+data over an infrared connection</xref> in the Communication section and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Short-Link-Services-subsystem-guide/ShortLinkServices/TechnologyGuides/IrDA/irOverview.html" format="application/java-archive">Infrared</xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD3B2B7D-BAE5-5F99-A5F5-74AFC678D986.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CD3B2B7D-BAE5-5F99-A5F5-74AFC678D986"><title>SNM Source File</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The SNM source file is a text file which contains the mappings between standard character set identifiers and their corresponding Symbian UIDs. The <codeph>snmtool</codeph> uses this file to create SNM binary files (plug-in data files or SNM files). Application developers can then pass the standard character set identifiers to the Charconv APIs without knowing Symbian UIDs. </p> <p>The SNM source file is case-insensitive. Comments begin with a # and extend to the end of the line. Additional blank lines and leading and trailing whitespace are ignored. </p> <section><title>Syntax</title> <p>The source file consists of zero, one or more blocks of information. The first line in each block has the format: </p> <codeblock id="GUID-D28FFCA0-34A6-53BA-B5DC-EC10ACE37D1E" xml:space="preserve">CharacterSet 0x&lt;UID-in-hexadecimal&gt;</codeblock> <p>The remainder of each block consists of zero, one or more lines, each of which is either in the format: </p> <codeblock id="GUID-FCCCFB6C-8226-52AF-99CA-0677B1A117CC" xml:space="preserve">StandardName "&lt;standard-name&gt;"</codeblock> <p>or in the format: </p> <codeblock id="GUID-DD7912CE-724A-5441-A8FD-1BFBF4D6540C" xml:space="preserve">MibEnum &lt;MIB-enum-in-decimal&gt;</codeblock> </section> <section><title>Example</title> <p>The following block provides the mapping information for the Shift-JIS character set: </p> <codeblock id="GUID-0A33FB91-9372-5831-A669-60ABDEB67E17" xml:space="preserve">
+CharacterSet 0x10000fbd
+ StandardName "Shift_JIS"
+ StandardName "MS_Kanji"
+ StandardName "csShiftJIS"
+ MibEnum 17                          
+</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CD506806-FC59-547A-B5CD-03314DF847F7" xml:lang="en"><title>Date And
+Time Handling Overview</title><shortdesc>Functions that manipulates date and time values. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-C9F67EE0-BDA3-43B7-A0D5-D68CEAE58E0E"><title>Architectural relationships</title> <p>The system maintains
+two clocks: </p> <ul>
+<li id="GUID-3C5A5819-E800-518A-A8D9-8B6BEB52F0D1"><p>a secure clock that
+can only be set by kernel code or by an application that has TCB capability.
+This is a clock that can be used by secure DRM applications. </p> </li>
+<li id="GUID-44375F26-F8E9-54AA-9F20-E0B74C7F905D"><p>a non-secure clock that
+can be set by applications that require no specific capability. This is the
+clock that is used for user-visible time displays. </p> </li>
+</ul> <p>The non-secure clock is implemented in terms of an offset from the
+secure clock. </p> <p>Both the secure time and the non-secure time can be
+set using the System Static Functions API, and specifically: </p> </section>
+<section id="GUID-2F364328-2127-4225-98A8-8F706E4B7BC7"><title>Secure time </title> <ul>
+<li id="GUID-FF13C20D-505B-55B0-B95C-1D64AF9A81E6"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-914FC88A-2D71-321B-8501-C7B91D142586"><apiname>User::SetHomeTimeSecure(0</apiname></xref> </p> </li>
+<li id="GUID-6163CCC9-0C88-50B0-895B-6D781D389C49"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-B25BB967-380B-3A40-AD1B-53775C3335D7"><apiname>User::SetUTCTimeSecure()</apiname></xref> </p> </li>
+</ul> </section>
+<section id="GUID-81367F49-79D7-45C9-91CD-1A327EB71DF7"><title>Non-secure time </title><ul>
+<li id="GUID-BA9D3823-219E-5C21-89A5-8239F97349A0"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-95B49BD6-AAD8-3AEB-88A2-DD7E934AFAB6"><apiname>User::SetHomeTime()</apiname></xref> </p> </li>
+<li id="GUID-E9AAE71D-29CD-530E-8F3E-F4B3BA55854C"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-145F52E6-2A29-3FF1-8AD1-7009BE0074D7"><apiname>User::SetUTCTime()</apiname></xref> </p> </li>
+</ul> <p>System locale settings, which affect date and time formatting, are
+set through <xref href="GUID-53299759-C2DD-3ABC-A055-9AFE7C5081C6.dita"><apiname>TLocale</apiname></xref> in the Locale Settings API. </p> </section>
+<section id="GUID-6F1F1A03-5336-4246-8EF7-602172A8E91B"><title>Description</title> <p>The API has three key concepts: point
+in time, time utilities, and time interval. </p> <p><b>Point
+in time</b> </p> <p>The point in time is a 64-bit integer that represents
+time as the number of microseconds since midnight on 1st January 0 AD, using
+a nominal Gregorian calendar. It can be set to the current system time, can
+have arithmetic and comparison operations performed on it, and can be converted
+into a string formatted according to the locale and other options. </p> <p>The
+main point in time interface is provided by <xref href="GUID-A2D3BA72-9B27-3BFF-950A-D7E3B2004821.dita"><apiname>TTime</apiname></xref>. A support
+class <xref href="GUID-13A9DD2B-8ABC-3D62-B54E-4F5DD5B9228B.dita"><apiname>TDateTime</apiname></xref> is provided that allows time values to
+be get and set in an easy-to-use format, such as year, month, day, rather
+than as an integer. </p> <p>The time value in a <codeph>TTime</codeph> object
+can be set using either the secure time or the non-secure time. </p> <p><b>Time utilities</b> </p> <p>The time utilities provides miscellaneous time
+functions, for such things as checking for leap years. </p> <p>The time utilities
+interface is provided by <xref href="GUID-B81A50BE-2045-3040-A5DD-D5DE03B52FCC.dita"><apiname>Time</apiname></xref>. </p> <p><b>Time interval</b> </p> <p>The time interval represents a period between
+two points in time. Time intervals can be added or subtracted, either to or
+from each other or to or from points in time. </p> <p>The time interval interface
+is provided by a base class <xref href="GUID-A5F9B2F0-6FCF-336E-95C6-9CE3EDFE4FD1.dita"><apiname>TTimeIntervalBase</apiname></xref> and by a
+family of derived classes for second, minute, hour, etc. intervals. A class
+outside this hierarchy, <xref href="GUID-B7D6F874-1ABD-3AC6-9329-19DC54C12F18.dita"><apiname>TTimeIntervalMicroSeconds</apiname></xref>, is provided
+for efficiency reasons (it alone stores its value as a 64-bit number). </p> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-92C032CF-9291-5970-9152-EFF47C9AE3B9.dita">Locale Settings
+Overview</xref></desc>
+</link>
+<link href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita"><linktext>System Static
+Functions Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD516F8E-EC7B-5949-BD03-713637CC866D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CD516F8E-EC7B-5949-BD03-713637CC866D"><title>zip</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>zip [-o] [-a] [-0 to -9] &lt;file name&gt;.zip [files_to_add]</userinput> </p> <p>The <codeph>zip</codeph> command is a compression utility that enables you to compress one or more files to the <codeph>.zip</codeph> file format. The <codeph>zip</codeph> command supports the following options: </p> <table id="GUID-511C571F-AF88-5CA4-BD24-1DF0F0B199AA"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-o</codeph>  </p> </entry> <entry><p>Overwrites an existing <filepath>.zip</filepath> file. </p> </entry> </row> <row><entry><p> <codeph>-a</codeph>  </p> </entry> <entry><p>Adds files to an existing <filepath>.zip</filepath> file. </p> </entry> </row> <row><entry><p> <codeph>[-0 to -9]</codeph>  </p> </entry> <entry><p>This value determines the degree of compression applied to the <filepath>.zip</filepath> file. </p> <p> <b>Note:</b> Higher the value, compression is percentage is high and it takes a long time to compress. Lower the value, compression percentage is less and it takes only a short while to compress. </p> </entry> </row> </tbody> </tgroup> </table> <section><title>Examples</title> <p><userinput>zip ab.zip a.txt b.txt</userinput> </p> <p>This example compresses the <filepath>a.txt</filepath> and <filepath>b.txt</filepath> files and adds them into the <filepath>ab.zip</filepath> file. </p> <p><userinput>zip files.zip files/*</userinput> </p> <p>This example compresses all files in the <filepath>files</filepath> directory and adds them to the <filepath>files.zip</filepath> file. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8"><title>Pointer Handling</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Pointer events can be associated with any <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWindowBase</apiname></xref> derived class. At the simplest, pointer down, drag and up events are generated, associated with the window in which the event occurred. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <p>The Window Server allows applications to control pointer handling much more finely than this. </p> <ul><li id="GUID-EC0A811A-6C09-56D1-8A9C-4CDE5CFBB63D"><p>Multiple drag events which the Window Server receives from the pointer device driver are usually translated into a single drag event for the client application, incorporating all movement occurring between one pointer-related <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::GetEvent()</apiname></xref> and the next <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::EventReady()</apiname></xref>. This behavior is appropriate for a typical application, and ensures that pointer events are delivered at a rate that the application can handle. </p> </li> <li id="GUID-B407FC67-A547-5A79-B4F8-6480D9D356CB"><p>If required, an application may request the Window Server to store all pointer events in a pointer buffer, and then deliver that entire buffer when it is full. This is useful for freehand drawing and handwriting recognition. </p> </li> <li id="GUID-0465CC4B-0C92-51A8-8F58-0EE81FC0BBDF"><p>Double-click may be detected by the Window Server. The interval between double clicks is supported as a system-wide setting. </p> </li> <li id="GUID-FC252FFD-A61D-5967-9243-091C2C538C58"><p>Repeated pointer-down events may be generated when the pointer is held still in a particular place—similar to keyboard auto-repeat. </p> </li> <li id="GUID-DF556F28-B1EB-5C10-B7A4-B453D1465B62"><p>Areas of a window may be designated as key areas, so that a pointer event in that window is turned into a key event, and delivered to the window’s owning client application as a key event. This is intended to support on-screen pseudo-keyboards. </p> </li> <li id="GUID-733E15BC-2F1A-5069-A3FE-1E3AFA7DBEB9"><p>The pointer may be grabbed by a particular window so that events generated outside that window's extent are associated with that window. </p> </li> <li id="GUID-088B1305-BBAF-5E1D-8829-85B59569D16A"><p>A window can capture pointer clicks from outside its visible area. In order to do this, it has to call the function <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWindowBase::SetPointerCapture()</apiname></xref>. Various values can be passed as a parameter to this function allowing, for example, no capturing to take place, capturing of all events from within the window's window group, and capturing of all events from within all groups. If several windows request events to be captured, the Window Server does some arbitration. </p> </li> </ul> </conbody><related-links><link href="GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita"><linktext>Advanced Pointers</linktext> </link> <link href="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita"><linktext>Processing Window Events</linktext> </link> <link href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita"><linktext>Window Server Client-Side Events
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E"><title>What is Contention?</title><shortdesc>This topic describes how and when contention issues occur in Packet Data Protocol (PDP) contexts. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Mobile devices use PDP contexts and Access Points to connect to networks. A PDP context contains information about the current subscriber session. A Primary PDP context has a QoS profile and has a unique IP address. The Primary PDP context is always activated first. For more information about QoS see <xref href="GUID-9A20701F-5744-5F5F-BB0C-AB58EFB7D087.dita">Quality of Service</xref>. </p> <p>A network can support multiple Access Point Names (APN) but may only allow a limited number of primary active PDP contexts. These restrictions are imposed by the network providers. </p> <p>The following steps give a brief summary of what happens in the system when a contention issue occurs: </p> <ol id="GUID-B64C9DF0-F116-5094-9421-84084D503995"><li id="GUID-11BD6F41-DCFF-5E6C-9E78-0A90DFDC8149"><p>All available primary PDP contexts are activated by applications that use GPRS connections. Each GPRS connection uses a different Access Point. Each Access Point has an associated priority. The priority range is 1-KMaxTUint where 1 is high priority and KMaxTUint is low priority. </p> <p> <b>Note:</b> The Access Point priorities are stored in the Comms Database AccessPointTable. You can specify a priority for access point using Comms Database config file in “cfg” format. If a priority is not assigned to an access point the default value is KMaxTUint is given. A zero priority value is invalid. </p> </li> <li id="GUID-C0DD2489-170A-5700-B253-F7419BC7798E"><p>One more application attempts to open a GPRS connection which requires another primary PDP context. Due to the network limitation on the number of primary PDP contexts, this is not possible. </p> </li> <li id="GUID-03DDCF54-F19A-5E61-BE32-E26C5E3CAB0E"><p>The connection priorities are noted. If the incoming connection has a higher priority than an existing connection, the existing connection is stopped. This means that the primary PDP context associated with this connection is made available, and it can be used by the incoming connection. </p> </li> <li id="GUID-50ED67FE-A4D6-5E3C-A0CE-DFD660A6E935"><p>The incoming connection is started. The stopped connection receives a <codeph>KLinkLayerClosed</codeph> progress notification with the <codeph>KErrConnectionContention</codeph> error code. </p> </li> </ol> <p>Contention management lets you control network connections when the number of PDP contexts available is limited. </p> </conbody><related-links><link href="GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C.dita"><linktext>What is Contention
+                Management?</linktext> </link> <link href="GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita"><linktext>What are Access Point
+                Priorities?</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e229882_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD87FAF6-A11D-4260-9472-CABA18BF86B1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-CD87FAF6-A11D-4260-9472-CABA18BF86B1" xml:lang="en"><title>Creating
+a light instance</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Create an instance of <codeph>CHWRMLight</codeph> instance
+using <codeph>NewL()</codeph> or <codeph>NewLC()</codeph> methods. After creating
+the instance, lights can be directly controlled via the provided class methods.</p><p><b>Without
+notify handling</b></p><p>Create an instance of the <codeph>CHWRMLight</codeph> implementation
+class using the <codeph>NewL()</codeph> or <codeph>NewLC()</codeph> constructor
+without a parameter.</p><p>The following code snippet demonstrates how to
+create an instance without notify handling to control the lights of the device:</p><codeblock xml:space="preserve">CHWRMLight* light = CHWRMLight::NewLC(); // No callbacks</codeblock><p><b>With notify handling </b></p><p>Derive a class from the <codeph>MHWRMLightObserver</codeph> interface
+and implement the <codeph>LightStatusChanged()</codeph> method.</p><p>The
+following code snippet is an example of the header of the class implemented
+by the client:</p><codeblock xml:space="preserve">// INCLUDES
+#include HWRMLight.h // Link against HWRMLightClient.lib.
+class CLightStatusObserver : public CBase,
+                             public MHWRMLightObserver
+    {
+    public:
+        CLightStatusObserver();
+        ~CLightStatusObserver();
+        void ConstructL();
+        static CLightStatusObserver* NewL();
+        //from MHWRMLightObserver
+        virtual void LightStatusChanged( TInt aTarget,
+                                         CHWRMLight::TLightStatus aStatus );
+    private:
+        CHWRMLight* iLight;
+    };</codeblock><p>Create an instance of the <codeph>CHWRMLight</codeph> implementation
+class using the <codeph>NewL()</codeph> or <codeph>NewLC()</codeph> constructor
+with a parameter. This parameter is a pointer to an object that is derived
+from <codeph>MHWRMLightObserver</codeph>. After this, lights can be directly
+controlled through the provided class methods. Every light status change causes
+a notification using <codeph>MHWRMLightObserver::LightStatusChanged()</codeph>.</p><p>The
+following code snippet demonstrates how to create an instance with notify
+handling to control the lights of the device:</p><codeblock xml:space="preserve">void CLightStatusObserver::ConstructL()
+    {
+    iLight = CHWRMLight::NewL( this )
+    }</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CD8A3420-6C9B-5774-86FA-85CFE062C400.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CD8A3420-6C9B-5774-86FA-85CFE062C400"><title>Calendar Views</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession</apiname></xref> class provides the following views for accessing the calendar: </p> <ul><li id="GUID-5A7CA871-9C20-52DC-9C2F-E931BF6F7F72"><p>Entry view </p> <p>You can access and manipulate calendar entries with <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita"><apiname>CCalEntryView</apiname></xref>. </p> </li> <li id="GUID-DDF2375F-D209-569D-AA58-FC03C2A5182F"><p>Instance view </p> <p>With <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita"><apiname>CCalInstanceView</apiname></xref> you can access and delete multiple calendar instances generated from an entry. </p> </li> </ul> <section><title>Entry view </title> <p>You can use the entry view object to perform the following functions on a calendar entry: </p> <ul><li id="GUID-4679329D-7D83-59FD-9BDD-2445EF9D3637"><p>Fetch by calling <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita#GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556/GUID-43FA0568-E254-3C7C-BC4C-1C73AFB6421A"><apiname>CCalEntryView::FetchL()</apiname></xref>. </p> </li> <li id="GUID-F27E0D76-CA84-5CED-8230-82761200F2FB"><p>Update by calling <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita#GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556/GUID-536FA411-5D58-3CE5-8F10-22FA8089FBBF"><apiname>CCalEntryView::UpdateL()</apiname></xref>. </p> </li> <li id="GUID-319DCEBE-B91E-525C-BA5C-3581C865B432"><p>Save by calling <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita#GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556/GUID-41282158-9CC7-3563-A542-834BE2B10D78"><apiname>CCalEntryView::StoreL()</apiname></xref>. </p> </li> <li id="GUID-5C6E0994-70D8-5267-9507-CFC7BCCD150E"><p>Delete by calling <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita#GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556/GUID-4B78A543-8F12-3E68-8C09-D178FBB8F83E"><apiname>CCalEntryView::DeleteL()</apiname></xref>. </p> </li> </ul> <p>To access a calendar entry, you need to create an entry view with the <xref href="GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556.dita#GUID-D2835D4E-F0A8-3EDE-BC13-B45E52170556/GUID-795FE89C-9074-3DFB-9C67-99E002DE386C"><apiname>CCalEntryView::NewL()</apiname></xref> function. </p> </section> <section><title>Instance view</title> <p>A calendar event can have one or more occurrences. An event occurs more than once if a repeat rule has been set. Each occurrence is known as an instance (also called a schedule). </p> <p>An instance view can be created with a <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession</apiname></xref> object array. <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref> allows you to search all files within the array. </p> <codeblock id="GUID-EAB3795E-8A73-5F50-83A9-732FF4F34CEA" xml:space="preserve">void FindInstanceL(RPointerArray&lt; CCalInstance &gt;
+    &amp;aMatchedInstanceList, CalCommon::TCalViewFilter aCalViewFilter, const
+    CalCommon::TCalTimeRange &amp;aTimeRange, const TCalSearchParams
+    &amp;aSearchParams) const;</codeblock> <p> <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref> returns instances across multiple files in the form of an <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita"><apiname>RPointerArray</apiname></xref> object. The other parameters specify the following filtering criteria: </p> <ul><li id="GUID-4565DEFA-7536-56FC-9FF5-29A6D59B5E6C"><p>entry type </p> </li> <li id="GUID-55CAF240-089B-5976-836E-0E93B38501ED"><p>time range within which the entries need to be found </p> </li> <li id="GUID-A60A6082-A5A8-5176-9EE7-AEE04042289F"><p>search text along with the search options. </p> </li> </ul> <p>You can get the next and previous instances relative to a specified time using <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-1B622C9A-BAD5-3BF2-9D50-DB490C4A30A4"><apiname>CCalInstanceView::NextInstanceL()</apiname></xref> and <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-6397E6CA-122F-3CC7-93F1-75CFA1FBF921"><apiname>CCalInstanceView::PreviousInstanceL()</apiname></xref> respectively. </p> <p>Call <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-0960F4DF-AC2F-3E79-AACD-DC16DC364FB8"><apiname>CCalInstanceView::DeleteL()</apiname></xref> to delete any instance returned by <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref>. If all the instances are deleted, the entry gets deleted automatically. <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-0960F4DF-AC2F-3E79-AACD-DC16DC364FB8"><apiname>CCalInstanceView::DeleteL()</apiname></xref> must be used in conjunction with <xref href="GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C.dita#GUID-58BA8611-A364-3E30-B5F0-E5787E19C48C/GUID-961D3CE4-3C92-3A15-BDD1-19FF3D970F83"><apiname>CCalInstanceView::FindInstanceL()</apiname></xref>. </p> <p><b>Multiple Calendar File Searching</b> </p> <p>The following functions find instances across calendar collections (multiple calendar files). </p> <ul><li id="GUID-35F941B6-B325-5C56-A39B-EFED498B6AFB"><codeblock id="GUID-C4802DF0-FB53-5AD0-904F-8BCCD463AA5F" xml:space="preserve">CCalInstanceIterator* FindInstanceByUidL(TCalCollectionId aCollectionId, const TDesC8&amp; aUid, const TCalTime&amp; aInstanceTime) const;</codeblock> <p>This function creates an instance iterator containing instances that relate to a UID (unique identifier). The iterator contains a collection ID, a global UID (GUID) and a time. The parameters are used to tell the iterator which instance to start iterating from. The <xref href="GUID-EC4A403F-238F-32D6-AC78-8039B14CB8FA.dita"><apiname>aCollectionId</apiname></xref> parameter identifies the file from which the starting instance comes. The <xref href="GUID-B11D895B-A2CF-3838-A6FC-9D054E9BBE1E.dita"><apiname>aInstanceTime</apiname></xref> parameter identifies the time of the starting instance. </p> </li> <li id="GUID-634BB40B-A31C-5190-BB5A-FE022467478D"><codeblock id="GUID-B96944F9-D812-5956-B002-2EE6FF917F60" xml:space="preserve">CCalInstance* FindInstanceL(const TCalInstanceId&amp; aLocalId)</codeblock> <p>In the function above <xref href="GUID-A9EAAEB8-411D-33DD-9BA4-0D9356A999BC.dita"><apiname>TCalInstanceId</apiname></xref> is a datatype that contains <xref href="GUID-C935AA17-6546-3975-91D0-C7325F6E6D10.dita"><apiname>TCalCollectionId</apiname></xref>, <xref href="GUID-1343D7E5-3020-3888-A092-E89295424375.dita"><apiname>CCalLocalUid</apiname></xref> and <xref href="GUID-5CC27067-1E4C-395D-8604-0343211406C5.dita"><apiname>CCalTime</apiname></xref>. </p> <p>This function only returns a single instance. </p> </li> <li id="GUID-16E1142E-2F3D-5A22-9377-151E47C20E10"><codeblock id="GUID-1C533CDE-D418-5282-A462-33E504BC51F3" xml:space="preserve">CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings&amp; aSettings, const TCalInstanceId&amp; aInstanceId);</codeblock> <p>This function contains a <xref href="GUID-BB7C2921-86A6-30B3-8092-4338A88C36CE.dita"><apiname>CCalFindInstanceSettings</apiname></xref> parameter that sets filtering criteria. As before <xref href="GUID-A9EAAEB8-411D-33DD-9BA4-0D9356A999BC.dita"><apiname>TCalInstanceId</apiname></xref> identifies the starting instance. </p> </li> </ul> <p>The functions above are based on the following deprecated functions: </p> <codeblock id="GUID-45462FD8-3053-5C02-9B1A-A1E04E52CB24" xml:space="preserve">CCalInstanceIterator* FindInstanceByUidL(const TDesC8 &amp;aUid, const TCalTime &amp;aInstanceTime);</codeblock> <codeblock id="GUID-575E7CFA-E14E-536B-935E-1FD5F579B86C" xml:space="preserve">CCalInstance* FindInstanceL(TCalLocalUid aLocalId, const TCalTime&amp; aInstanceTime);</codeblock> <codeblock id="GUID-1F6AC23B-6DB7-59E8-9A21-7304B6083836" xml:space="preserve">CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings&amp; aSettings, TCalLocalUid aLocalId, const TCalTime&amp; aInstanceTime);
+        </codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CDBBD44F-C5F6-4D51-B4BA-23DA9BB58D69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CDBBD44F-C5F6-4D51-B4BA-23DA9BB58D69" xml:lang="en"><title>Creating
+generic button</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Create the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref> object
+either dynamically from program code or from a resource structure. The constructed
+button can then be used as a component control of a compound control.</p>
+<p>Use the resource structures <codeph>AVKON_BUTTON</codeph>, <codeph>AVKON_BUTTON_STATE</codeph>,
+and <codeph>AVKON_BUTTON_STATE_EXTENSION</codeph> for the button object (defined
+in the file <codeph>eikon.rh</codeph>). The following example shows how to
+construct a button with the help of a button resource. The button is placed
+in a compound control (container) and it occupies the whole rectangle of the
+container. The container is set as the observer of the button.</p>
+<p><b>Example: Button resource</b></p>
+<codeblock xml:space="preserve">RESOURCE AVKON_BUTTON r_myapp_button
+    {
+    flags  = KAknButtonTextLeft;
+    states =
+        {
+        AVKON_BUTTON_STATE
+            {
+            txt = “Text”;
+            helptxt = “Help text”;
+            }
+        };
+    }
+</codeblock>
+<p><b>Example: Constructing button from resource</b></p>
+<codeblock xml:space="preserve">void CMyButtonContainer::CreateButtonL()
+    {
+    CAknButton* iAknButton = CAknButton::NewL();
+    iAknButton-&gt;ConstructFromResourceL(R_MYAPP_BUTTON);
+    iAknButton-&gt;SetContainerWindowL(*this);
+    iAknButton-&gt;SetRect(Rect());
+    iAknButton-&gt;SetObserver(this);
+    iAknButton-&gt;MakeVisible(ETrue);
+    iAknButton-&gt;ActivateL();
+    }
+</codeblock>
+<p><b>Example: Constructing button from program code</b></p>
+<codeblock xml:space="preserve">void CMyButtonContainer::CreateButtonL()
+    {
+    HBufC* buttonText = StringLoader::LoadLC( R_MYAPP_TEXT );    
+    HBufC* helpText   =
+           StringLoader::LoadLC( R_MYAPP_HELPTEXT );
+    CAknButton* iAknButton = CAknButton::NewL( 
+        0, 0, 0, 0, 
+        *buttonText, *helpText, KAknButtonTextLeft, 0);
+    CleanupStack::PopAndDestroy( 2 );  // helpText, buttonText
+    iAknButton-&gt;SetContainerWindowL(*this);
+    iAknButton-&gt;SetRect(Rect());
+    iAknButton-&gt;SetObserver(this);
+    iAknButton-&gt;MakeVisible(ETrue);
+    iAknButton-&gt;ActivateL();
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CDDF6758-C995-5FC8-AC8C-63298B65BBDE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CDDF6758-C995-5FC8-AC8C-63298B65BBDE" xml:lang="en"><title>Maths
+Services Overview</title><shortdesc>Provides advanced mathematical operations on real numbers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-507E5983-5289-46DB-BB82-9629AFEBB08E"><title>Architectural relationships</title> <p>Types for integer and
+single-precision and double-precision floating-point numbers are defined by
+the Basic Types API.</p> </section>
+<section id="GUID-CAE983C1-030D-4CDE-868E-C266E31AF975"><title>Description</title> <p>The API has two key concepts: maths
+utilities, and extended precision real number. </p> <p><b>Maths
+utilities</b> </p> <p>The maths utilities are a collection of static class
+functions that perform trigonometric, power/root/log, conversion and rounding,
+and test functions on real numbers.</p> <p><b>Extended
+precision real number</b> </p> <p>The extended precision real number type
+provides 64-bit precision, and efficient arithmetic and comparison operators.</p> <p>The
+extended precision real number type is provided by <xref href="GUID-4AF7C5C2-7EB8-39A5-B3E6-75268DB11BD6.dita"><apiname>TRealX</apiname></xref>.</p> </section>
+<section id="GUID-38347334-466A-4793-90F1-7350318CE64F"><title>See also</title> <p><xref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita">Basic
+Types Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA" xml:lang="en"><title> Developing Applications or Libraries Using Standard C++</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CDF9F944-814E-47EF-A6B5-E75300C228DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CDF9F944-814E-47EF-A6B5-E75300C228DD" xml:lang="en"><title>Removing
+HTTP session ID</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The session ID can be removed using <codeph>RemoveProperty</codeph>. For
+example:</p>
+<codeblock xml:space="preserve">ConnectionInfo.RemoveProperty(sessionId);</codeblock>
+<p>Sockets created after this call to RemoveProperty will not have any ID
+set. Any call to <xref href="GUID-EE8E9567-2B60-3ED2-A9A3-7F8263216339.dita"><apiname>Property()</apiname></xref> will return <xref href="GUID-A759CA2D-8327-348F-9337-4886E619D920.dita"><apiname>EFalse</apiname></xref>.
+This does not affect existing sockets. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CE011029-0F2B-50D4-B793-A24C7ECFC21E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-CE011029-0F2B-50D4-B793-A24C7ECFC21E" xml:lang="en"><title>Loading
+a Symbian Platform Defined Table: Tutorial</title><shortdesc>This tutorial shows you how to load a Symbian platform defined
+table from the Comms Database. The topic also gives an example that shows
+you how to process the records in a table. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-68076901-260F-5588-B05A-5B51412DEE43"><p>Before you start,
+you must understand: </p> <ul>
+<li id="GUID-AA2573E6-E199-5E5B-B458-DC189FE982F0"><p>the general concept
+of the Comms Database </p> </li>
+<li id="GUID-43160B1C-200E-5326-9CE8-474A49A81C4E"><p>the specific concept
+of fields, records, links and tables </p> </li>
+<li id="GUID-2CED5E8A-83C3-5CCE-B91D-9E773AFEBB2D"><p>how to write and build
+application code to run on Symbian platform</p> </li>
+</ul> </prereq>
+<context id="GUID-770B3F59-5FA6-58C6-A484-118DB7288D3B"><p>This tutorial shows
+you how to load the <i>Connection Preferences</i> table. The principles that
+apply here also apply to the other Symbian platform defined tables. </p> <p>This
+tutorial shows you the main steps. </p> <p>This tutorial also shows how you
+can process the records in the table. The example code shows you how to sort
+the records in the table. </p> </context>
+<steps id="GUID-03C423B7-1C20-592A-9E8D-0D7D996E2A05">
+<step id="GUID-0DE3770C-9E39-5A43-88F3-5957F5627317"><cmd>Make sure that you
+have created a session. </cmd>
+</step>
+<step id="GUID-3F0C9272-6A9E-52DF-9711-F44036BC87CE"><cmd>Create the table
+object in the tool or application process. </cmd>
+
+<info>You create a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> <codeph>&lt;T&gt;</codeph> object
+and specify <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDConnectionPrefsRecord</apiname></xref> as
+the template parameter. </info>
+
+<info>Symbian platform defines the <codeph>CCDConnectionPrefsRecord</codeph> class
+to represent a Connection Preferences record. The class is a schema for the
+record. The class defines the fields and links that make a Connection Preferences
+record. </info>
+<info>Symbian platform defines <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-32E556BC-55C3-5FBD-9A60-9708139C20D6">unique
+numeric Id</xref> s for Symbian platform defined tables. The symbol <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConnectionPrefsRecord</apiname></xref> defines the value
+of this Id for the Connection Preferences table. The Id allows the CommsDat
+API to retrieve the table from the Comms Database efficiently. </info>
+<info>To work with other Symbian platform defined tables, use
+the correct class name and the correct unique numeric Id values. The <xref href="GUID-58089281-9DD0-502D-8DFD-831E7BAA931E.dita">Reference</xref> section
+contains a list of all Symbian  defined tables. </info>
+<stepxmp><codeblock id="GUID-B141FB9E-11BA-53FB-912C-4A86294161EB" xml:space="preserve">...
+
+// This code fragment assumes that a session with the Comms Database has been created.
+// iDb is a pointer to a CMDBSession object
+...
+
+// Use the standard "new (ELeave)" construction to create the object to 
+// represent the table. 
+//
+// Note:
+// 1. the template parameter CCDConnectionPrefsRecord defines 
+//    the "Connection Preferences" record type.
+// 2. the unique numeric Id KCDTIdConnectionPrefsRecord is passed as a parameter
+//    to the constructor.
+CMDBRecordSet&lt;CCDConnectionPrefsRecord&gt;* ptrConnPrefRecordSet = 
+   new (ELeave) CMDBRecordSet(KCDTIdConnectionPrefsRecord);
+...
+             </codeblock> </stepxmp>
+</step>
+<step id="GUID-A622B842-A502-573A-BCD0-E521AA5C7011"><cmd>Load the table from
+the Comms Database. </cmd>
+
+<info>Use the <codeph>LoadL()</codeph> function to load the table from the
+Comms Database. The function is called on the class that defines the table.
+The function is implemented in the base class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref>.
+You pass a reference to the session object into the <codeph>LoadL()</codeph> function. </info>
+<stepxmp><codeblock id="GUID-3B4F5F6D-4ACE-560D-BBF7-1DCC037AAADE" xml:space="preserve">...
+ptrConnPrefRecordSet-&gt;LoadL(*iDb);
+// If the flow of the code reaches here, the table has been loaded.        
+...</codeblock> </stepxmp>
+</step>
+<step id="GUID-7A9CA79C-79FD-570A-9D48-82565878E422"><cmd>Process the records. </cmd>
+
+<info>This step is optional. It is an example that shows how you can process
+the records in a table. The example also shows you how to retrieve the number
+of records in the table. </info>
+<stepxmp>The following code sorts the records into record Id order. The record
+Id is the part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-32E556BC-55C3-5FBD-9A60-9708139C20D6">unique
+numeric Id</xref> that identifies an instance of a record. </stepxmp>
+<stepxmp>A table uses an <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>RPointerArray</apiname></xref> <codeph>&lt;T&gt;</codeph> to
+contain the records. <codeph>RPointerArray</codeph> allows applications to
+customise the behaviour of the sort operation. </stepxmp>
+<info>The code uses the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>TLinearOrder</apiname></xref> <codeph>&lt;T&gt;</codeph> class. </info>
+<stepxmp><codeblock id="GUID-FE35BC1E-1D10-5741-9684-4C6383A226AC" xml:space="preserve">...
+// Customised sort function
+TInt SortRecordsById(const CMDBRecordBase&amp; aLeft, const CMDBRecordBase&amp; aRight)
+    {
+    return (aLeft.RecordId()) &lt; (aRight.RecordId()) ? -1 : 1;
+    }
+...
+
+// Total number of records in the table
+TInt totalcount = ptrConnPrefRecordSet-&gt;iRecords.Count();
+...
+
+// Sort the records. 
+// 1. Define a TLinearOrder&lt;T&gt; class for a Connection Preferences record and instantiate 
+//    the class.
+// 2. Invoke the sort operation.
+TLinearOrder&lt;CMDBRecordBase&gt; orderbyId(SortRecordsById); 
+ptrConnPrefRecordSet-&gt;iRecords.Sort(orderbyId); 
+...</codeblock> </stepxmp>
+</step>
+</steps>
+</taskbody><related-links>
+<link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database
+                concepts</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CE18D940-FEB9-5678-A3CC-AA8A979AD4DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CE18D940-FEB9-5678-A3CC-AA8A979AD4DA"><title>set</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>set [ {+|-}options | {+|-}o [ option_name ] ] ... [ {+|-}A [ name ] ] [ arg ... ]</userinput> </p> <p>Set the options for the shell and/or set the positional parameters, or declare and set an array. </p> <table id="GUID-6BEB3E74-C8E4-53F2-BD9E-0017A7DBEEF0"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-s</codeph>  </p> </entry> <entry><p>Causes the specified arguments to be sorted before assigning them to the positional parameters (or to the array <codeph>name</codeph> if <codeph>-A</codeph> is used). </p> </entry> </row> <row><entry><p> <codeph>+s </codeph>  </p> </entry> <entry><p>Sort arguments in descending order. </p> </entry> </row> <row><entry><p> <codeph>-o</codeph>  </p> </entry> <entry><p>Flags may be specified by <codeph>name</codeph> using the <codeph>-o</codeph> option. If no option <codeph>name</codeph> is supplied with <codeph>-o</codeph>, the current option states are printed. </p> </entry> </row> <row><entry><p> <codeph>+o</codeph>  </p> </entry> <entry><p>Printed in a form that can be used as input to the shell. </p> </entry> </row> <row><entry><p> <codeph>-A</codeph>  </p> </entry> <entry><p>The <codeph>name</codeph> is set to an array containing the given <codeph>arg</codeph> s; if no <codeph>name</codeph> is specified, all arrays are printed together with their values. </p> </entry> </row> <row><entry><p> <codeph>+A</codeph>  </p> </entry> <entry><p>If <codeph>name</codeph> is an array, the given arguments will replace the initial elements of that array; if no <codeph>name</codeph> is specified, all arrays are printed without their values. </p> </entry> </row> </tbody> </tgroup> </table> <p>The behaviour of arguments after <codeph>-A </codeph> <codeph>name</codeph> or <codeph>+A</codeph>  <codeph>name</codeph> depends on whether the option <codeph>KSH_ARRAYS</codeph> is set. If it is not set, all arguments following <codeph>name</codeph> are treated as values for the array, regardless of their form. If the option is set, normal option processing continues at that point; only regular arguments are treated as values for the array. This means that </p> <p> <codeph>set -A array -x -- foo </codeph>  </p> <p>If the <codeph>-A </codeph> flag is not present, but there are arguments beyond the options, the positional parameters are set. If the option list (if any) is terminated by <codeph>--</codeph>, and there are no further arguments, the positional parameters will be unset. </p> <p>If no arguments and no <codeph>--</codeph> are given, then the names and values of all parameters are printed on the standard output. If the only argument is <codeph>+</codeph>, the names of all parameters are printed. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CE60D453-624B-4CCB-847D-E1E425E896E2.swf has changed
Binary file Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e325727_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326160_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326239_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326412_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978" xml:lang="en"><title>Address
+string tokenizer overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-3380A468-D7C1-478B-81F7-C7B25CA2AF87"><title>Purpose</title> <p>The
+Address String Tokenizer offers methods for parsing phone numbers, email addresses,
+URL and URI addresses from given text. It provides an interface for applications
+that, for example, want to create/use their own GUI for displaying found items. </p> </section>
+<section id="GUID-0A0412D0-A818-42C3-8288-D857FF3FB9AC"><title>Architectural
+Relationships</title> <p>All functionality is implemented in the <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>CTulAddressStringTokenizer</apiname></xref> class.
+The interface can be accessed through the <codeph>tuladdressstringtokenizer.h </codeph> file.
+The binaries are linked to the <codeph>etul.lib</codeph> (Text Utilities -
+part of Egul component) library. </p> <fig id="GUID-831D95A9-EDD6-5351-83CD-F9246B88E821">
+<title>              Subsystem dependencies            </title>
+<image href="GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e14680_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-B712EDB6-0AAD-4E3F-9694-5EABECD3AA1D"><title>Description</title> <p><b>Usage</b> </p> <p>In
+order to use the Address String Tokenizer, the user has to create an instance
+of <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>CTulAddressStringTokenizer</apiname></xref> by
+using the factory method <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>CTulAddressStringTokenizer::NewL()</apiname></xref>. </p> <p>For
+example: </p> <codeblock id="GUID-59957EA3-0C1D-5A35-87A0-8DCB0D01D840" xml:space="preserve">CTulAddressStringTokenizer* addressStringTokenizer = CTulAddressStringTokenizer::NewL(text, searchCase);</codeblock> <p>The method takes two parameters of type <codeph>TDesC&amp;</codeph> and <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>TTokenizerSearchCase</apiname></xref> which is
+defined in <codeph>tuladdressstringtokenizer.h</codeph>. </p> <p>The first
+parameter defines the text to be searched from. </p> <p>The second parameter
+tells what exactly is being looked for. It is an enum which describes the
+type of text being searched for. The types available are phone number, email
+address, fixed start URL or generic URI. </p> <p>The passed text is parsed
+in construction, and found items can be fetched using the <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>ItemArray()</apiname></xref> method. <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>ItemArray()</apiname></xref> returns a constant
+array containing all the found items. </p> <p>The interface also offers helper
+functions for handling the item array by itself. </p> <p>For more information
+on individual methods, please see the reference API for <xref href="GUID-D35F2DD5-09A3-366C-8384-46FEB6B7DB18.dita"><apiname>CTulAddressStringTokenizer</apiname></xref>. </p> <p><b>Example</b> </p> <p>This sample code explains a few simple use cases that
+search for items from a text string: </p> <codeblock id="GUID-2B5E70DF-6757-5803-B7BA-052EA4932EEF" xml:space="preserve">// Some text
+TBufC&lt;256&gt; strSomeText(_L("Mail to me@someplace.com or call 040 1234567. 
+                        You can also tune in to audio feed at rtsp://someplace.com/somefeed.ra."));
+
+// SFoundItem instance
+CTulAddressStringTokenizer::SFoundItem item;
+
+// Create an instance of CTulAddressStringTokenizer and search for URLs.
+CTulAddressStringTokenizer* singleSearch = CTulAddressStringTokenizer::NewL
+                                           (strSomeText, CTulAddressStringTokenizer::EFindItemSearchScheme);
+
+// Get count of found items
+TInt count(singleSearch-&gt;ItemCount());
+
+// Get currently selected item (rtsp://someplace.com/somefeed.ra) to the result 
+// variable
+singleSearch-&gt;Item(item);
+TPtrC16 result(strSomeText.Mid(item.iStartPos, item.iLength));
+
+// Deallocate memory
+delete singleSearch;
+
+// Look for all possible things (cases work as binary mask)
+CTulAddressStringTokenizer* multiSearch = CTulAddressStringTokenizer::NewL
+                                          (strSomeText, (CTulAddressStringTokenizer:: TTokenizerSearchCase)
+           (CTulAddressStringTokenizer::EFindItemSearchPhoneNumberBin |           
+            CTulAddressStringTokenizer::EFindItemSearchURLBin | 
+            CTulAddressStringTokenizer::EFindItemSearchMailAddressBin | 
+            CTulAddressStringTokenizer::EFindItemSearchScheme));
+
+// Debug print all items and their type
+count = multiSearch-&gt;ItemCount();
+multiSearch-&gt;Item(item);
+
+for(TInt i=0; i&lt;count; i++)
+    {
+    result.Set(strSomeText.Mid(item.iStartPos, item.iLength));
+    RDebug::Print(_L("Found type %d item:"), item.iItemType);
+    RDebug::Print(_L("%S"), &amp;result)
+    multiSearch-&gt;NextItem(item);
+    }
+
+// Deallocate memory
+delete multiSearch;
+</codeblock> <p><b>Sequence Diagram</b> </p> <fig id="GUID-8BF3A74A-9E14-57C4-A0E5-105A0230BFA1">
+<title>                 Sequence of events for CTulAddressStringTokenizer</title>
+<image href="GUID-F27A92CB-1C02-562B-A93D-57675C53BFEB_d0e14771_href.png" placement="inline"/>
+</fig> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CE7CF024-4898-551A-841B-38EC57A3EC82.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CE7CF024-4898-551A-841B-38EC57A3EC82"><title>Ordinal Position</title><shortdesc>All windows in the Window Server have an <keyword>ordinal
+        position</keyword> which describes their z-order—that is, their ordering from nearest the viewer to furthest away from the viewer. Each window’s ordinal position is relative to its parent window and is unique among its siblings. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>: Application developers. </p> <p>Ordinal positions are positive integers starting at 0, with 0 being the front-most position. A window with an ordinal position of 0 is displayed in the <keyword>foreground</keyword>, i.e., in front of all its sibling windows. The ordinal position of other windows increases by one for each position behind this window. </p> <p>When a window is created, it is automatically given an ordinal position of 0 within its parent window. Then, when another child of the same parent is created, the first window’s ordinal position changes to 1, and the new window’s position is 0. These ordinal positions can be changed after the windows have been created, using functions provided by the <codeph>RWindowTreeNode</codeph> class. </p> <p>When a window's ordinal position is changed, its order in the sibling list is also changed, so that the window with ordinal position 0 is always first in the sibling list, the window with ordinal position 1 is next in the list, and so on. Changing the ordinal position of windows therefore affects the result of the <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode::Parent()</apiname></xref>, <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode::Child()</apiname></xref>, <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode::NextSibling()</apiname></xref> and <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWindowTreeNode::PrevSibling()</apiname></xref> functions. </p> <p>To give an illustration of how ordinal positions work, the diagram below shows three windows, A, B and C, all belonging to the same window group. Their ordinal positions are as follows: A=0; B=1; C=2. </p> <fig id="GUID-FB15A25F-FB7A-5031-9D17-51CD7C8ACA1D"><image href="GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e165915_href.png" placement="inline"/></fig> <p>This would be the default ordering of the windows if they were created in the order CBA. Many sibling windows within an application may not overlap in practice: nevertheless, each window has a unique ordinal position, even though this will not be evident in the way they are displayed. </p> <p>If a window’s ordinal position is changed, its position on the screen will change. All its child windows also move with it, although their ordinal positions, which are relative to the parent, don’t change. </p> <section><title>Moving a window to the front</title> <p>A window is moved to the front (i.e., to the <keyword>foreground</keyword>) by giving it an ordinal position of 0. The diagram below shows windows A, B and C, but window B has now been given an ordinal position of 0. A’s position has been incremented to 1, and C’s remains as 2. </p> <fig id="GUID-0B1ED6C1-4F47-5527-A9F9-5B4AD03528D5"><image href="GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e165934_href.png" placement="inline"/></fig> <p>The diagram below shows the same three windows as above, except that window B now contains a child window, D. Window D’s ordinal position is 0, relative to its parent window, B. </p> <fig id="GUID-313C9AEE-6ADB-5842-9EB6-0D563D7FC582"><image href="GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e165940_href.png" placement="inline"/></fig> <p>If window A is now moved to the front, window B moves behind it, as shown in the diagram below. Window D’s ordinal position is still 0, but because its position is relative to its parent window, it moves with window B to behind window A. </p> <fig id="GUID-B6882EE3-C071-522B-9D7E-86D84F8D64DC"><image href="GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e165946_href.png" placement="inline"/></fig> </section> <section><title>Moving a window to the back</title> <p>If a window is given an ordinal position greater than all its siblings, it is moved to the back of them. For convenience, the functions for setting ordinal position allow a negative ordinal position to be specified, which sends the window to the back and sets its ordinal position to be the highest among its siblings. </p> </section> <section><title>Ordinal position of window groups</title> <p>The ordinal position of a window group has special significance because there is normally one window group per application. As a result, the z-order of applications on the screen is typically determined by the ordinal positions of their window groups. For example, giving a window group an ordinal position of 0 typically brings an application to the front of the screen. Note, however, that window groups also have a priority, which overrides ordinal position. Ordinal position only applies among window groups of the same priority. </p> <p>The ordinal position of window groups is typically controlled by a shell or similar application. The <xref href="GUID-9FFD28C7-8747-3438-84BF-44AF26ACEC7D.dita"><apiname>RWsSession</apiname></xref> class provides functions for such applications to set window group ordinal positions. </p> </section> <section><title>Keyboard focus and window group ordinal position</title> <p>When a window group is given an ordinal position of 0, it is automatically given keyboard focus, unless it has disabled keyboard focus by calling <codeph>EnableReceiptOfFocus(EFalse)</codeph>, or another window group has a higher priority. </p> </section> </conbody><related-links><link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CEB1E9D7-3FAB-58D4-BD07-E924D0B87555.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CEB1E9D7-3FAB-58D4-BD07-E924D0B87555" xml:lang="en"><title>Fixed
+Arrays Example Code</title><shortdesc>This example shows how the range checking wrapper class for C++
+arrays can be used and exercises some of the class member functions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-BB926F8E-2B52-570B-92A8-95A3D0A7520E"><title>FixedArrays:
+range checking wrapper for C++ arrays</title> <p><b>Download</b> </p> <p>Download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-733bb42f-1e41-4387-95ee-b7fa90858af5.zip" scope="external">FixedArrays.zip</xref> </p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-733bb42f-1e41-4387-95ee-b7fa90858af5.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref>.</p> <p><b>Class summary</b></p><p>Related APIs</p><ul>
+<li><p><xref href="GUID-1EC847DC-6858-3BEE-A5B2-F7737F1D50AD.dita"><apiname>TFixedArray</apiname></xref> - A thin wrapper class for C++ arrays
+allowing automatic checking of index values.</p></li>
+</ul> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CED041C8-D68D-55D1-957E-1A48EEFFF851"><title>Inquiring about Remote Devices</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Now that you have decided on the best method of selecting a remote device you will need to go through the process. For the purposes of this tutorial we will assume you are going to allow the program to determine the remote device with which to connect. </p> <section><title>How to inquire about remote devices</title> <p>Each Bluetooth device has a 48-bit unique address built into its hardware. A basic inquiry for devices in range returns zero or more of these addresses. </p> <p>As well as an address, a Bluetooth device has a text name suitable for display to users. If you want to display a list of available devices to the user, you will also need to obtain these names. </p> <p>The address and the name inquiries can occur simultaneously, if the underlying hardware supports this. Otherwise, the address inquiry must finish before the name request can be issued over the air. </p> <p>Address and name inquiries are performed through the generic Symbian OS sockets class <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>. A specialist Bluetooth sockets address class, <xref href="GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D.dita"><apiname>TInquirySockAddr</apiname></xref>, which encapsulates Bluetooth address, Inquiry Access Code, and service and device classes, is provided for use with such inquiries. </p> <p><b> Basic Procedure</b> </p> <p>To inquire for the addresses of remote devices, take the following steps: </p> <ol id="GUID-B794CB43-DF26-5C9E-BABC-95E614B8225F"><li id="GUID-20EDA9A2-9C57-55E2-B36D-117CFF923D49"><p>Connect to the Sockets Server (<xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>), and then select the protocol to be used using <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-95B5BAA3-5A01-37F3-9C81-C5E71530B3B7"><apiname>RSocketServ::FindProtocol()</apiname></xref>. Address and name queries are supplied by the stack's BTLinkManager protocol layer, so select this. </p> </li> <li id="GUID-30F19EEC-CB83-53D4-99E6-84C68A2DED9C"><p>Create and initialise an <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref> object. </p> </li> <li id="GUID-B2FD4AE2-A5DE-5EB4-A135-CDA502364550"><p>Set the <codeph>TInquirySockAddr</codeph> parameter for the inquiry: for address inquiries, the <xref href="GUID-75438E00-D211-3C94-A47D-61C5644A667D.dita"><apiname>KHostResInquiry</apiname></xref> flag must be set through <xref href="GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D.dita#GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D/GUID-E4E83FA5-3102-3CE8-8796-A70C017D4FC7"><apiname>TInquirySockAddr::SetAction()</apiname></xref>. </p> <p>The query can then be started with <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita#GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD/GUID-B210BAF2-1D26-3F5A-8EBE-EF5B460A69E1"><apiname>RHostResolver::GetByAddress()</apiname></xref>. </p> </li> <li id="GUID-85980345-3E1A-5E10-A9F0-547DECBE52BB"><p>When <codeph>GetByAddress()</codeph> completes, it fills in a <xref href="GUID-C625E339-6726-3FB9-8F8A-F4DB0CAC15FF.dita"><apiname>TNameEntry</apiname></xref> object with the address and class of the first device found (or is undefined if no device was found). </p> </li> <li id="GUID-B2FE92B6-989A-5A9F-92CB-9759587C31F8"><p>To get all the devices discovered, call <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita#GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD/GUID-B64AB6BA-6D1D-30EB-88EF-381B52939F3D"><apiname>RHostResolver::Next()</apiname></xref> repeatedly until <codeph>KErrHostResNoMoreResults</codeph> is returned. </p> </li> </ol> <p><b>Getting the addresses of remote devices</b> </p> <p>The following example shows how to start a remote device address inquiry. </p> <ol id="GUID-A31D5876-7EE5-56B6-8F5A-7B8986C55349"><li id="GUID-B6BCA711-BBC7-52C0-9B7A-F128031346ED"><p>Connect to the socket server </p> <codeblock id="GUID-9E81DC37-FFC5-5427-BC01-54DFD82ED929" xml:space="preserve">RSocketServ socketServ;
+socketServ.Connect();
+TProtocolDesc pInfo;
+_LIT(KL2Cap, "BTLinkManager");
+User::LeaveIfError(socketServ.FindProtocol(KL2Cap,pInfo));</codeblock> </li> <li id="GUID-48A0FDB1-BB15-5759-8AC1-F837513B423A"><p>Create and initialise an <codeph>RHostResolver</codeph>  </p> <codeblock id="GUID-221037A8-6A39-5C27-A0DD-2A2BD14E5A7F" xml:space="preserve">RHostResolver hr;
+User::LeaveIfError(hr.Open(socketServ,pInfo.iAddrFamily,pInfo.iProtocol));</codeblock> </li> <li id="GUID-4A5D7DFC-FDFE-5D87-8DAB-A1BE59EFF806"><p>Set up a discovery query and start it </p> <codeblock id="GUID-DA8F9430-CDE6-5663-9DED-D897B134DEEF" xml:space="preserve">TInquirySockAddr addr;
+TNameEntry entry;
+addr.SetIAC(KGIAC);
+addr.SetAction(KHostResInquiry);
+TRequestStatus status;
+hr.GetByAddress(addr, entry, status);
+User::WaitForRequest(status);</codeblock> </li> <li id="GUID-9835B54E-E6D2-5FD5-8E7C-1374177F2D8A"><p>Process the information returned in <codeph>entry</codeph>  </p> <codeblock id="GUID-766A738A-2F2F-5570-964B-196FA45BA601" xml:space="preserve">...</codeblock> </li> </ol> <p><b>Notes:</b> </p> <ul><li id="GUID-71BF7F7E-AD6E-5715-B9A5-BAE7488B9B80"><p> <xref href="GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D.dita#GUID-0ECE42E1-5E04-3BFB-BA17-F8036510798D/GUID-B8F50B34-789B-3ADE-8D1E-04B59394BC2A"><apiname>TInquirySockAddr::SetIAC()</apiname></xref> sets the Bluetooth Inquiry Access Code. For more information, see <xref scope="external" href="http://www.bluetooth.org/assigned-numbers/">Bluetooth Assigned Numbers</xref>. </p> </li> <li id="GUID-B55A03AB-3F37-5377-80E6-5F94045A4C5F"><p>The host resolver caches the results of inquiries so that devices that are no longer present may appear in the list of results. This does not cause any additional complications, as it is always possible for a device to go out of range between when it is discovered and when a connection to it is made. </p> </li> <li id="GUID-51CA2D0D-6A75-537F-A040-EA47D00DFEE0"><p>Communications API calls are typically asynchronous (indicated by a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> parameter in the call). It is recommended that such calls are encapsulated in active objects, as explained in <xref href="GUID-B507490F-6BD3-5DF5-97E4-EFDFEA2B4EDD.dita">Using Asynchronous Programming</xref>. </p> </li> </ul> <p><b>Getting the name of a remote device</b> </p> <p>The name of a remote device can be queried for by taking the same steps as for an address query, but setting the action flag of a <codeph>TInquirySockAddr</codeph> to <xref href="GUID-8B748089-6177-3C64-8F54-C2F6E1C364F4.dita"><apiname>KHostResName</apiname></xref>. The name is returned in the <codeph>iName</codeph> member accessed through the <codeph>TNameEntry</codeph>. </p> <p><b>Example </b> </p> <codeblock id="GUID-F670B724-E96C-5077-9317-4A6F27CBFF67" xml:space="preserve">// Now do name inquiry
+addr.SetAction(KHostResName);
+hr.GetByAddress(addr, entry, stat);
+User::WaitForRequest(stat);
+TPtrC deviceName;
+if (stat == KErrNone)
+     deviceName.Set(entry().iName);</codeblock> <p><b>Notes </b> </p> <ul><li id="GUID-DB873994-76A6-5FE2-8B8D-00E0FD815DF2"><p>To do a simultaneous address and name inquiry, use <codeph>SetAction(KHostResName|KHostResInquiry)</codeph>. </p> </li> <li id="GUID-5823E26F-BFE7-5745-A208-C51DECF21D14"><p> <codeph>RHostResolver::GetByName()</codeph> is not supported </p> </li> </ul> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-78BDF706-7245-5D78-AB1D-8DB1352CFEAF"><p> <xref href="GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita">Selecting a Remote Device</xref>  </p> </li> <li id="GUID-65BD97CF-9CD6-5050-9B96-4B22124C7E0F"><p> <b>Inquiring About Remote Devices</b> - This document </p> </li> <li id="GUID-2418982B-074A-561F-AF89-C0A233F7C593"><p> <xref href="GUID-A13494B9-C1E4-506A-B236-8AE0A6D6D557.dita">Inquiring About Services on a Remote Device</xref>  </p> </li> <li id="GUID-3E09B7DF-5BD7-5FC7-9C09-245421BCA730"><p> <xref href="GUID-A24D2CEF-88C9-5C63-A14D-85EFFBEF3C92.dita">Connecting and Transferring Data to a Remote Device</xref>  </p> </li> <li id="GUID-9AF0CBD6-3762-5724-82EF-88348D246CA1"><p> <xref href="GUID-4F0C4B9D-AA42-59C4-900A-7045FEAAF2F4.dita">Using security on outgoing sockets</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,423 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CF17532E-5E90-5124-8F05-AA72B848F17F" xml:lang="en"><title>SIP
+Example: Usage of the SIP Stack</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The SIP sample application is a game that can be played between two users
+that use two different machines. The following figure illustrates the sample
+application. </p>
+<fig id="GUID-A0E243BE-E697-5856-8C08-6039AAE6A05A">
+<image href="GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e319026_href.png" placement="inline"/>
+</fig>
+<p>All users who want to play the game must register to the server with their
+identities. This informs the server that the user is active and prepared to
+participate in the game. If User 1 wants to play the game with User 2 then
+it must send a request to User 2 through the server. When User 2 accepts the
+request and acknowledges it then the two users can start playing. A user can
+disconnect from playing the game by sending a message. If a user wants to
+be deactivated then it can deregister from the server. </p>
+<p>This application is developed using the key features of the Symbian SIP
+stack. It shows how to create profiles and do SIP registration using the profiles,
+how to set up a SIP session and send an instant message using the SIP. For
+example you can set up the SIP server using Brekeke and you can download the
+same from <xref href="http://www.brekeke.com/download/download_sip_2_0.php" scope="external">http://www.brekeke.com/download/download_sip_2_0.php</xref>. </p>
+<section><title>Features of the game</title> <p>The main features of the game
+are: </p> <ul>
+<li id="GUID-8767E5EC-04F6-5D19-B77A-94C6E7BF10B7"><p> <b>Register or deregister </b> -
+A user registers to the server with a unique identity before playing the game.
+This identity is the SIP URI of the user. The user registers by sending a
+SIP REGISTER message to the SIP server and is active. A user deactivates by
+deregistering to the server. This activity is done by sending the SIP REGISTER
+message with the expires header set to 0. For more information on registering
+or deregistering to the server see, <xref href="GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita#GUID-CF17532E-5E90-5124-8F05-AA72B848F17F/GUID-2C4A1BCE-CD8E-5BDC-84D1-2C5DDBF8A142">Registering
+or deregistering an user</xref>. </p> </li>
+<li id="GUID-1547D0C9-4B7C-568F-9C5D-A2BE20F9B362"><p> <b>Invite another user</b> -
+A user invites another user to play the game by entering the SIP URI of the
+other user in the INVITE message. For more information on inviting another
+user to play the game see, <xref href="GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita#GUID-CF17532E-5E90-5124-8F05-AA72B848F17F/GUID-7D5CB45C-614B-58DF-8EE4-1AB2DB02CE1C">Inviting
+a participant for session setup</xref>. </p> </li>
+<li id="GUID-94802B8B-C10B-5ADB-A5E0-0FC436790427"><p> <b>Send a message to
+another user</b> - A user can send an instant message to another user. For
+more information on how to send an instant message to another user see, <xref href="GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita#GUID-CF17532E-5E90-5124-8F05-AA72B848F17F/GUID-0E7C6F87-C90B-5888-B1F7-33ED0D7393F5">Sending
+an instant message</xref>. </p> </li>
+<li id="GUID-55484DA7-37DC-566B-95F8-066E19AA5790"><p> <b>Disconnect from
+playing the game</b> - A user can disconnect from playing the game by sending
+a SIP BYE message to the other user. </p> </li>
+</ul> </section>
+<section id="GUID-3A9BE5C5-A9A2-54A8-B525-6750E562EF97"><title>How to play
+the game</title> <p>The following snapshot shows the different tabs available
+in the game. </p> <fig id="GUID-15C8B95B-4B8C-5701-80B1-C0D7B39AF422">
+<image href="GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e319099_href.png" placement="inline"/>
+</fig> <p>The following list describes the different tabs available in the
+game: </p> <ul>
+<li id="GUID-CDB3E759-F01D-5D02-B8AA-7E901C1984BE"><p> <b>Invite for game</b> -
+This tab allows you to invite a user to play the game. When you invoke this
+tab, a UI screen appears which asks the user to provide the SIP URI of the
+second user with whom the user wants to play the game. The SIP URI of the
+second user is then sent to the SIP stack which passes on the invite request
+to the second user. The second user can accept or reject the invite. If the
+second user accepts the invite then it acknowledges by sending a message that
+it is prepared to start playing the game. If the second user rejects the invite
+then it cannot play the game. </p> </li>
+<li id="GUID-4A4F6318-1FDD-540A-BF87-72B19BE56A97"><p> <b>Enable profile</b> -
+This tab allows you to enable a profile. When you invoke this tab, a UI screen
+appears where the user enters the values. A profile is created using these
+values and the user registers with the SIP server. </p> </li>
+<li id="GUID-A9F95A0B-4E44-52C6-AD0B-E2BDFA4C8CCE"><p> <b>Send instant msg</b> -
+This tab allows you to send a message to another user. When you invoke this
+tab, a message with the address of the recipient is sent to the SIP stack.
+The SIP stack sends this message to the recipient address. </p> </li>
+<li id="GUID-4334DC63-8AAB-581C-A779-FBBBD44C4227"><p> <b>End game</b> - This
+tab allows you to disconnect from playing the game. When you invoke this tab,
+a BYE message is sent to the other user and the game is terminated. </p> </li>
+</ul> </section>
+<section id="GUID-2C4A1BCE-CD8E-5BDC-84D1-2C5DDBF8A142"><title>Registering
+or deregistering an user</title> <p>An application can register to the SIP
+Server using: </p> <ul>
+<li id="GUID-620D3765-E3A1-55B9-900F-562486A01D6B"><p>the <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> class
+and its methods </p> </li>
+<li id="GUID-DDC990A1-BFDC-5CA4-A392-EAADFB8C3921"><p>the SIP Profile Agent </p> </li>
+</ul> <p>This sample application uses the SIP Profile Agent method to do SIP
+registration. To use this method you need a SIP profile setting, and you must
+create a SIP profile before you start using the application. <b>Note</b>:
+A list of SIP profile settings can be found in the <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref> class. </p> <p>The
+SIP profile agent method provides APIs for: </p> <ul>
+<li id="GUID-68A120EA-45B6-5909-8DD1-B125A1249C13"><p>Registering and Deregistering </p> </li>
+<li id="GUID-50AA5E67-EA40-5844-873B-77DAAE94480F"><p>Listening to registration
+events </p> </li>
+<li id="GUID-300245B5-2B62-5382-B492-8BE8759E48E3"><p>Creating, modifying,
+and deleting the SIP profile settings that the profile agent plug-in implementations
+use for SIP registration. </p> </li>
+</ul> <p>The following code from <filepath>SIPExProfileQueryDlg.cpp</filepath> shows
+how the sample application stores the settings entered by users on the SIP
+profile store. </p> <codeblock id="GUID-8D76FE52-F0E5-5F57-AD38-0AE8694D3AA4" xml:space="preserve">//Create a new profile
+    CSIPManagedProfile* profile = iMProfileRegistry-&gt;CreateL(iProfileData.iServiceProfile);
+   
+//Copy attributes entered by the user to the new profile        
+    iNewProfile = profile;
+    profile = CopyDataToProfileL();
+
+//Set the profile to default and save some settings
+    TInt err= profile-&gt;SetParameter(KSIPDefaultProfile,ETrue);
+   
+//Save the profile to persistent store                
+    iMProfileRegistry-&gt;SaveL( *profile );
+</codeblock> <p>The applications can start SIP registration or deregistration
+using the <codeph>Enable</codeph> or <codeph>Disable</codeph> methods from
+the SIP profile API. </p> <p>The following code from <filepath>SIPExSIPEngine.cpp</filepath> shows
+how to register using the profile agent. </p> <codeblock id="GUID-F4398335-6AC0-5E10-B04D-6846A3CDE1D5" xml:space="preserve">//Check for the existing profile
+    if ( iProfile )
+        {
+        delete iProfile;
+        iProfile = NULL;
+        }
+    TBool registered( EFalse );
+    
+//Leaves with KErrNotFound if default profile is not found
+    iProfile = iProfileRegistry-&gt;DefaultProfileL();
+ else
+        {
+        const TDesC8* aor = NULL;
+  iProfile-&gt;GetParameter( KSIPUserAor, aor );      
+  iProfileRegistry-&gt;EnableL( *iProfile, *this );
+
+    //Check if the profile was immediately set to the registered state
+    iProfile-&gt;GetParameter( KSIPProfileRegistered, registered );
+        }
+</codeblock> <p>The following code from <filepath>SIPExSIPEngine.cpp</filepath> shows
+how to deregister using the profile agent. </p> <codeblock id="GUID-B13F8581-D36B-5AE1-A821-84FD3B010575" xml:space="preserve">if ( iProfile )
+        {
+        iProfileRegistry-&gt;Disable( *iProfile );
+        delete iProfile;
+        iProfile = NULL;        
+        }</codeblock> <p>The SIP profile API also provides a notification
+method that is used by an application to monitor profile related events. </p> <p>The
+following code from <filepath>SIPExProfileQueryDlg.cpp</filepath> shows the
+profile related events that the sample applications monitors. </p> <codeblock id="GUID-34230A3A-EA20-56B9-AFC0-F9AC92BE2F3E" xml:space="preserve">void ProfileRegistryEventOccurred( 
+    TUint32 aProfileId, 
+    TEvent aEvent )
+    {
+    switch (aEvent)
+        {
+        case MSIPProfileRegistryObserver::EProfileRegistered:
+            {
+            HandleProfileRegistered( aProfileId );
+            break;
+            }
+        case MSIPProfileRegistryObserver::EProfileDeregistered:
+            {
+            HandleProfileDeregistered( aProfileId );
+            break;
+            }
+        case MSIPProfileRegistryObserver::EProfileDestroyed:
+            {
+            HandleProfileDestroyed( aProfileId );
+            break;
+            }
+        default:
+            {
+            // MSIPProfileRegistryObserver::EProfileCreated and MSIPProfileRegistryObserver::EProfileUpdated are ignored
+            break;
+            }
+        }
+    }
+void ProfileRegistryErrorOccurred( 
+    TUint32 /* aSIPProfileId */,
+    TInt aError )
+    {
+    iObserver-&gt;ProfileError( aError );
+    }
+</codeblock> <p><b>Classes containing APIs in scope</b> </p> <p> <xref href="GUID-68AE6070-0410-3671-9E68-A7785B8271CD.dita"><apiname>CSIPProfile</apiname></xref>, <xref href="GUID-CDE67614-1A7A-3082-8D8D-71645668A0DE.dita"><apiname>CSIPManagedProfile</apiname></xref>, <xref href="GUID-E8D080AD-4494-3880-B5CE-3487CA7D76E9.dita"><apiname>CSIPProfileRegistry</apiname></xref>, <xref href="GUID-5266AB0D-705C-3011-A92B-DA82BC212999.dita"><apiname>CSIPManagedProfileRegistry</apiname></xref>, <xref href="GUID-91663686-42B7-3C88-B773-3C5343CDCFCE.dita"><apiname>MSIPProfileRegistryObserver</apiname></xref>. </p> </section>
+<section id="GUID-7D5CB45C-614B-58DF-8EE4-1AB2DB02CE1C"><title>Inviting a
+participant for session setup</title> <p>The sample application uses the SIP
+INVITE method to setup a session between two users. In this case, the application
+does not accept any SDP parameters from the user and instead sends fixed SDP
+values. </p> <p>The following code from <filepath>SIPExSIPIdleState.cpp</filepath> shows
+how the application sends an INVITE message. </p> <codeblock id="GUID-B8E774F0-D6C0-5631-83E3-5D87DF03D044" xml:space="preserve">void SendInviteL( 
+    CSIPExSIPEngine&amp; aEngine,
+    const TDesC8&amp; aSipUri )
+    {
+    //Retrieve the active profile and connection
+    CSIPProfile&amp; prof = aEngine.Profile();
+    CSIPConnection&amp; conn = aEngine.ConnectionL();
+
+ //Create CUri8 from the passed descriptor. This value is given by the user
+    CUri8* uri8 = aEngine.ConvertToUri8LC( aSipUri );
+    
+    //Get dialog association, save for future use
+    //The ownership of uri8 is transferred
+    CSIPInviteDialogAssoc* dialogAssoc =
+        CSIPInviteDialogAssoc::NewL( conn, uri8, prof );
+        aEngine.SetDialogAssoc( *dialogAssoc ); //Ownership is transferred!!
+
+    //Create the necessary message elements
+    CSIPMessageElements* msgElements = aEngine.CreateMessageElementsLC();
+
+    //Send the INVITE in the dialog
+    //The ownership of msgElements is transferred
+    INVITE SENT OUT
+    CSIPClientTransaction* tx = dialogAssoc-&gt;SendInviteL( msgElements );
+ }
+</codeblock> </section>
+<section id="GUID-BADF4C98-FB28-50F1-AC00-F8764CBF2B12"><title>Handling an
+incoming invite</title> <p>An application that wants to receive an incoming
+invite outside the dialog must implement the Client Resolver API. The <xref href="GUID-14EC2BB8-AE94-3052-8A0B-039BA6E9C610.dita"><apiname>CSipResolvedClient</apiname></xref> (<filepath>SipResolvedClient.h</filepath>) interface is implemented by clients to enable a client resolution mechanism
+when the SIP requests are received outside the SIP dialog. The application
+must state the capabilities, that is the supported content types and media
+formats. This is done using the SIP headers and SDP m-lines either in the
+code of the plug-in, that is in <codeph>const KCapabilities</codeph> or in
+the opaque_data field of the resource file. </p> <p>The capabilities can be
+provided to the plug-ins in two ways: </p> <ul>
+<li id="GUID-04021FC9-D7F1-592E-A286-3E3C905880EB"><p>The data is provided
+in the ECOM resource file. </p> </li>
+<li id="GUID-ABBC862D-2930-5268-9FE9-2D8C7CA6C656"><p>In the interface implementation
+from where it is used to determine the target client. </p> </li>
+</ul> <p>The following code from <filepath>SIPExResolverPlugin.cpp</filepath> shows
+how the data is provided in the ECOM resource file. </p> <codeblock id="GUID-18FE5466-1BA2-57FD-BD3D-5818AFC35767" xml:space="preserve">#include &lt;RegistryInfo.rh&gt;
+RESOURCE REGISTRY_INFO theInfo
+    {
+    // UID for the DLL
+    dll_uid = 0xA00001EC;
+    // Declare array of interface info
+    interfaces = 
+        {
+        INTERFACE_INFO 
+            {
+            // UID of interface that is implemented
+            interface_uid = 0x102010DD;
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = 0xA00001EC;
+                    version_no = 1;
+                    // SIPEx UID: Must match to the one SIPEx passes to CSIP::NewL.    
+                    default_data = "A00001EB";
+                    }
+                };
+            }
+        };
+    }</codeblock> <p>The following code from <filepath>SIPExResolverPlugin.cpp</filepath> shows
+how the capabilities are defined in the plug-in. </p> <codeblock id="GUID-5D448F3C-CA4E-5EB2-9416-9383DC08A182" xml:space="preserve">//Code for defining capabilities in plugin
+//File : SIPExResolverPlugin.cpp
+
+_LIT8(KCapabilities,
+"&lt;SIP_CLIENT ALLOW_STARTING=\"YES\"&gt;\
+&lt;SIP_HEADERS&gt;\
+&lt;ACCEPT value=\"application/sdp\"/&gt;\
+&lt;ACCEPT value=\"SIPEx/InstantMessage\"/&gt;\
+&lt;/SIP_HEADERS&gt;\
+&lt;SDP_LINES&gt;\
+&lt;LINE name=\"m\" value=\"application 0 TCP SIPEx\"/&gt;\
+&lt;/SDP_LINES&gt;\
+&lt;/SIP_CLIENT&gt;");
+
+
+</codeblock> <p>When there is an incoming <codeph>Invite Request</codeph> with
+SDP parameters the SIP stack passes the request to the Client Resolver to
+get the resolved client for that request. The Client Resolver gets the capabilities
+for all the applications that implement the Client Resolver API. </p> <p>The
+following code from <filepath>SIPExResolverPlugin.cpp</filepath> shows how
+to get the capabilities for an application. </p> <codeblock id="GUID-819B95EE-5D9E-5BF6-BE49-1E00C3144CB8" xml:space="preserve">//Code for obtaining capabilities for an application
+//File : SIPExResolverPlugin.cpp
+
+const TDesC8&amp; CSIPExResolverPlugin::Capabilities()
+    {
+    return KCapabilities;
+    }</codeblock> <p>When the target client is identified, the Client Resolver
+gets the ChannelID from the plug-in implementation and requests the resolved
+client to connect to the SIP implementation on that UID. <b>Note</b>: The
+ChannelID is same as Application UID3 </p> <p>The following code from <filepath>SIPExResolverPlugin.cpp</filepath> shows
+how to get ChannelID for an application. </p> <codeblock id="GUID-3516BAD9-E116-59AA-9424-AEA7FB0DDADA" xml:space="preserve">//Code for obtaining ChannelID for an application
+//File : SIPExResolverPlugin.cpp
+  
+  TUid CSIPExResolverPlugin::ChannelL( RStringF /*aMethod*/,
+    const TDesC8&amp; /*aRequestUri*/,
+    const RPointerArray&lt;CSIPHeaderBase&gt;&amp; /*aHeaders*/,
+    const TDesC8&amp; /*aContent*/,
+    const CSIPContentTypeHeader* /*aContentType*/)
+    {
+    return iApplicationUID;
+    }
+
+//Code for asking an application to connect on UID 
+//File : SIPExResolverPlugin.cpp
+
+ void CSIPExResolverPlugin::ConnectL( TUid aUid )
+    {
+    //Launch application is based on UID passed from the SIP stack
+    
+    TApaAppInfo appInfo;
+    User::LeaveIfError( iApaSession.GetAppInfo( appInfo, aUid ) );
+    CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
+#ifdef EKA2
+    cmdLine-&gt;SetExecutableNameL( appInfo.iFullName );
+#else
+    cmdLine-&gt;SetLibraryNameL( appInfo.iFullName );
+#endif
+    User::LeaveIfError( iApaSession.StartApp( *cmdLine ) );
+    CleanupStack::PopAndDestroy( cmdLine ); 
+    }</codeblock> <p>When the resolved client connects, the INVITE is forwarded
+to the client and it starts ringing (180 Ringing) and sends the provisional
+response to the calling party. This part is implemented in <xref href="GUID-D891F857-2AE0-3112-8A9D-8648F98F96AC.dita"><apiname>InviteReceivedL</apiname></xref> as
+shown in the following code. </p> <p>The following code from <filepath>SIPExSIPIdleState.cpp</filepath> shows
+how the application gets the INVITE and how the provisional response is sent. </p> <codeblock id="GUID-7775ADCE-4351-5D50-BD91-85C0FEBF47E5" xml:space="preserve">/Code for CSIPExSIPIdleState::InviteReceivedL()... 
+//File : SIPExSIPIdleState.cpp    
+
+void CSIPExSIPIdleState::InviteReceivedL( 
+    CSIPExSIPEngine&amp; aEngine,
+    CSIPServerTransaction* aTransaction )
+    {
+    _LIT8( KLogEntry, "180 Ringing sent" );
+    ..
+    ..
+    aEngine.Observer()-&gt;WriteLog( KLogEntry );
+    ..
+   }</codeblock> <p>From this stage, the INVITE is sent to <codeph>InviteReceived</codeph> of <codeph>CSIPExEngine</codeph> in <filepath>SIPExGameEngine.cpp</filepath> from where it asks from the game observer if the user has accepted the invitation
+or not. The game starts or does not start depends on action taken. </p> <p>The
+following code from <filepath>SIPExStateRegistered.cpp</filepath> shows how
+the acceptance is asked from the game observer. </p> <codeblock id="GUID-224959DA-DF2D-5969-85E1-2B71DC32C176" xml:space="preserve">//The acceptance is asked from the user and if accepted the game is reset, start
+//listening socket and signal the SIP engine to send Accepted to the remote peer.
+
+//File : SIPExStateRegistered.cpp
+
+void TSIPExStateRegistered::InviteReceived( 
+    CSIPExEngine* aContext, 
+    const TDesC8&amp; aFrom, 
+    const TUint32 aIapId )
+    {
+    iEnded = EFalse;
+    
+    TBool retVal( EFalse );
+    TRAPD( ignore, retVal = aContext-&gt;AcceptInvitationL( aFrom ) );
+    if ( iEnded )
+        {
+        return;
+        }
+    if( retVal )
+        {
+        StatusInfo( aContext, KGameStarting() );
+        ChangeState( aContext, aContext-&gt;iStateAcceptingSIP );
+        aContext-&gt;ResetGame();
+        aContext-&gt;SetPeer( CSIPExEngine::EServer );
+        Info( aContext, KListening() );
+        TInetAddr addr;
+        TRAP( ignore, addr = 
+                        aContext-&gt;SocketEngineL()-&gt;StartListeningL( aIapId ) );
+        Info( aContext, KAccepting() );
+        TRAP( ignore, aContext-&gt;SIPEngine()-&gt;AcceptInviteL( addr ) );
+        Info( aContext, KWaitingRemoteConn() );
+        }
+    else 
+        {
+        TRAP( ignore, aContext-&gt;SIPEngine()-&gt;DeclineInviteL() );
+        Info( aContext, KInviteDeclined() );
+        }
+    }
+</codeblock> <p>When the game observer accepts the invitation the following
+code from <filepath>SIPExGameEngine.cpp</filepath> is run. </p> <codeblock id="GUID-91EF56AD-266F-5EE8-B8C0-37C1A6529C48" xml:space="preserve">//File : SIPExGameEngine.cpp
+
+TBool CSIPExEngine::AcceptInvitationL( const TDesC8&amp; aFrom )
+    {
+    HBufC* from = HBufC::NewLC( aFrom.Length() );
+    from-&gt;Des().Copy( aFrom );
+    TBool retVal = iGameObserver.AcceptInvitationL( *from );
+    CleanupStack::PopAndDestroy( from );
+    return retVal;
+    }</codeblock> </section>
+<section id="GUID-0E7C6F87-C90B-5888-B1F7-33ED0D7393F5"><title>Sending an
+instant message</title> <p>This sample application allows a user to send an
+Instant Message (IM) to another user. The user requires SIP URI of the other
+user and the message content that the user must enter. The application then
+creates a MESSAGE (request message) with these parameters and uses <xref href="GUID-D8168DEA-50CC-342B-AEF1-4703B50794A6.dita"><apiname>SendRequestL()</apiname></xref> to
+send it. </p> <p>The following code from <filepath>SIPExSIPEngine.cpp</filepath> shows
+how to send an instant message. </p> <codeblock id="GUID-641C6039-11B4-5389-8876-D817D5541CCE" xml:space="preserve">//Create and send an instant message to a recipient defined with the parameters.
+//This is implemented with the MESSAGE method and is sent outside of a dialog.
+
+CreateIML(const TDesC8&amp; aMessage,
+    const TDesC8&amp; aSipUri )
+    {
+    _LIT8( KMediaType, "SIPEx" );    // Part of content type
+    _LIT8( KMediaSubType, "InstantMessage" );    // Part of content type
+
+//Create the necessary elements of the IM
+    
+CSIPRequestElements* reqElem = CreateReqElementsLC( aSipUri );
+    CSIPToHeader* toHeader = CreateToHeaderLC( aSipUri );
+    reqElem-&gt;SetToHeaderL( toHeader );
+    
+//Create the fromHeader value using the information from the profile
+
+ const TDesC8* aor = NULL;
+ iProfile-&gt;GetParameter( KSIPUserAor, aor ); 
+ CSIPAddress* addr = CSIPAddress::DecodeL( *aor );
+ CSIPFromHeader* fromHeader = CSIPFromHeader::NewL( addr );
+ reqElem-&gt;SetFromHeaderL( fromHeader );
+ reqElem-&gt;SetMethodL( SIPStrings::StringF( SipStrConsts::EMessage ) );
+
+//Get reference to the message elements from the request elements, create and insert content type header (ownership of the content type object is transferred)
+
+    CSIPMessageElements&amp; msgElem = reqElem-&gt;MessageElements();
+    CSIPContentTypeHeader* ct =    CSIPContentTypeHeader::NewLC( KMediaType, KMediaSubType );
+    msgElem.SetContentL( aMessage.AllocL(), ct );
+    
+//Get the current connection
+
+CSIPConnection&amp; conn = ConnectionL();
+
+//Send the request using the connection (ownership of the request elements object is transferred)
+
+    CSIPClientTransaction* ctx = conn.SendRequestL( reqElem );
+    delete ctx;
+    }
+
+</codeblock> <p><b>Classes containing APIs in scope</b> </p> <p> <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref>, <xref href="GUID-7B5D0432-5C2C-3EFB-B9FA-8B4A0AA68FC0.dita"><apiname>CSIPToHeader</apiname></xref>, <xref href="GUID-AFEC85BE-5971-3043-B9A9-24048346AADE.dita"><apiname>CSIPFromHeader</apiname></xref>, <xref href="GUID-F8BF1190-F5D4-31EF-B060-A1430AA07DAC.dita"><apiname>CSIPAddress</apiname></xref>, <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements</apiname></xref>, <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF34D34E-FF17-5395-A1CD-768414E0B014.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CF34D34E-FF17-5395-A1CD-768414E0B014"><title>Database Management</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Contact Database is a database of Contact Items. The main API to the Contact Database is provided by the <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita"><apiname>CContactDatabase</apiname></xref> class. The <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita"><apiname>CContactDatabase</apiname></xref> class allows clients to create (<xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-FB3A2CFA-21A0-3EE1-8267-30AB94720166"><apiname>CContactDatabase::CreateL()</apiname></xref>) a new Contact Database, or open (<xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-5C43E2F0-BFC2-378A-8A1F-3641FF9DB764"><apiname>CContactDatabase::OpenL()</apiname></xref>) an existing one. </p> <p>Once opened, the database can be searched and sorted, and items within it can be edited or read, new items can be added and existing ones can be deleted (<xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-5DE9AB9D-CD86-3EB1-9A91-68A1235BF162"><apiname>CContactDatabase::doDeleteContactL()</apiname></xref>). To edit an item, it must first be opened. Changes to the item can then be committed to storage using <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-35AD302C-659C-3705-961A-3730F2975B25"><apiname>CContactDatabase::CommitContactL()</apiname></xref>. Only open items can be committed. </p> <p>Client applications that need to be updated dynamically, as the database is altered by other clients, should derive from class <xref href="GUID-4928B1DE-9800-3887-B456-2DDFE810AFD9.dita"><apiname>MContactDbObserver</apiname></xref>. The observer's <xref href="GUID-4928B1DE-9800-3887-B456-2DDFE810AFD9.dita#GUID-4928B1DE-9800-3887-B456-2DDFE810AFD9/GUID-DECA9730-0504-3D4F-85D4-AFAC70B46580"><apiname>MContactDbObserver::HandleDatabaseEventL()</apiname></xref> function will be called in response to each change to the database. </p> <p>When contacts are modified the database can become fragmented, limiting the amount of space available. This leads to less efficient storage. To determine whether defragmentation is required for the database use <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-44EBA5DD-F790-30C2-AB22-AC6E3F2A1D3D"><apiname>CContactDatabase::CompressRequired()</apiname></xref>.This function provides an easy way of testing whether the database is being used efficiently. <xref href="GUID-781E8158-805B-3784-8FED-D7A191822FC3.dita"><apiname>ETrue</apiname></xref> is returned if a compression of the database is recommended. To compress the database to its minimum size use <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-ECF0D06A-E1E5-3285-994B-34D59BB588D8"><apiname>CContactDatabase::CompactL()</apiname></xref>. </p> <p> <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-BA8E31EE-0AE4-36E2-9AE4-88ADF63C85FE"><apiname>CContactDatabase::IsDamaged()</apiname></xref> tests to see whether the database is corrupted and needs to be recovered. If the database is corrupted it can be recovered through a rollback. <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-D14DFE6F-90E9-33DD-A108-10A23A8D5B53"><apiname>CContactDatabase::RecoverL()</apiname></xref> first closes all tables in the database and then reopens them after the database is repaired. <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-5443434C-ADCD-348D-84EC-BBB40EF689EE"><apiname>CContactDatabase::DatabaseRollback()</apiname></xref> will force a rollback of the database. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e13986_href.png has changed
Binary file Symbian3/SDK/Source/GUID-CF4F515D-433C-4E9D-AA20-56AF6572D5BF_d0e61549_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF6014E9-FB59-4715-B245-5826090DDF28.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CF6014E9-FB59-4715-B245-5826090DDF28" xml:lang="en"><title>Symbian
+Platform vs UNIX</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-977EFA64-8D61-44CA-9A89-64D8DB0F771E"> <title>Hello World</title><p>Assuming
+that the user is new to the UNIX environment, writing a simple program that
+displays a string on a console does not take more than a day’s effort. Its
+simply 4-5 lines of code as shown below: </p><codeblock xml:space="preserve">#include &lt;stdio.h&gt;
+int main(int argc, char** argv)
+    {
+    printf(“Hello world\n”);
+    return 0;
+    }</codeblock><p>The code contains a <codeph>main()</codeph> , one <codeph>printf</codeph> statement,
+and one <codeph>#include&lt; &gt;</codeph>. By convention UNIX applications will
+map descriptor 0 with standard input (<codeph>STDIN</codeph>), descriptor
+1 with standard output (<codeph>STDOUT</codeph>), and descriptor 2 with standard
+error (<codeph>STDERROR</codeph>) of the process. So, there is no need to
+create/open standard input/output/error for a process before using them. Notice
+also that, <codeph>main()</codeph> takes two arguments. These arguments will
+be read from the command prompt before invoking <codeph>main()</codeph> and
+will be passed to main. These arguments are not mandatory; they can be ignored.
+No additional work is needed for having these arguments. </p><p>If the user
+attempts to display a string on a console using Symbian platform, a lot of
+effort goes into collecting the materials, and for coding. The first time
+the developer may find the code a little complex to understand.</p><codeblock xml:space="preserve">#include &lt;e32std.h&gt;
+#include &lt;e32cons.h&gt;
+int HelloWorldL()
+       {
+       CConsoleBase* console = Console::NewL(_L("Hello World"), TSize( KConsFullScreen, KConsFullScreen));
+       console-&gt;Printf(_L(“Hello World\n”));
+       delete console;
+       return 0;
+       }
+
+TInt E32Main()
+       {
+       __UHEAP_MARK;
+       CTrapCleanup* cleanup = CTrapCleanup::New();
+       TInt retVal = KErrNone;
+       if (cleanup)
+           {
+           TRAP(retVal, HelloWorldL());
+           __ASSERT_ALWAYS(!retVal, User::Panic(_L("Hello-World PANIC"), retVal));
+           //Destroy cleanup stack
+           delete cleanup;
+           }
+       __UHEAP_MARKEND;
+       return retVal;
+       }
+</codeblock><p>The code above has some header inclusions, two functions, and
+some complicated codes. In Symbian platform, the entry function for an EXE
+is <codeph>E32Main</codeph> (not main as in UNIX). The following actions are
+done to print a message on a console: </p><ol>
+<li id="GUID-11FE80AB-BD78-4A53-88D4-90E9CE3158EF"><p>Mark the heap using <codeph>__UHEAP_MARK</codeph> (not
+mandatory).</p></li>
+<li id="GUID-5292A0E8-5158-4A3B-89DC-095D570AEDA7"><p>Create the cleanup stack.
+Have a top-level TRAP for the function <codeph>HelloWorldL()</codeph> function.</p></li>
+<li id="GUID-E47E4F4F-EC51-4D7F-8254-0329A6DC1689"><p>In the <codeph>HelloWorldL()</codeph> function,
+create a console object.</p></li>
+<li id="GUID-8CAA7ADA-3EE1-470E-A376-DAD345066BF2"><p>Do print on the created
+console object.</p></li>
+<li id="GUID-8ABFB71E-A89A-4D02-9CBC-50FACC853805"><p>Delete the console.</p></li>
+<li id="GUID-4FDC0B1D-0DAB-42AF-9E54-A53DBDD47327"><p>Delete the cleanup stack.</p></li>
+<li id="GUID-187B70A6-D15E-4197-A742-372F6E385FEC"><p>Unmark the heap (not
+mandatory if the heap is not marked). </p></li>
+</ol><p>In Symbian platform, a console is not created by default; it has to
+be created explicitly. Symbian platform does not give a rich set of APIs needed
+to perform I/O operations on a console. The I/O operations that can be performed
+on a console in Symbian platform are limited to:</p><ul>
+<li><p>printing strings and reading one character at a time</p></li>
+<li><p>getting cursor position </p></li>
+</ul><p>In case the user is interested in command line arguments, it takes
+some more additional work. The user must read explicitly from the command
+prompt by using the APIs provided by Symbian platform.</p>     </section>
+<section id="GUID-3FC28B5E-4D46-4E33-90E8-AB9A1FBC038E"><title>File I/O</title><p>This
+section compares the ease of programming in the P.I.P.S. environment against
+programming on Symbian platform.</p><codeblock xml:space="preserve">/* File I/O in UNIX environment */
+  FILE* fp = fopen(“file.txt”, w);
+  if (fp) {
+     fprintf(fp, “Write some data”);
+     fclose();
+  }
+</codeblock><codeblock xml:space="preserve">//File I/O in Symbian platform
+  RFs fSession;
+  User::LeaveIfError(fSession.Connect());
+  RFile file;
+  ret = file.Open(fSession, _L(“file.txt”), EFileWrite);
+  if (ret) 
+     {
+     ret = file.Create(fSession, _L(“file.txt”), EFileWrite);
+     }
+  if (!ret) 
+     {
+     file.Write(_L8(“Write some data”));
+     }
+  file.Close();
+  fSession.Close();
+</codeblock><p>The example above shows the complexity of the code in Symbian
+platform for doing simple file I/O. In addition to coding complexity, the
+user must include and link with:</p><ul>
+<li><p><filepath>efsrv.lib</filepath> for any file-related operation</p></li>
+<li><p><filepath>esock.lib</filepath> for network-related operation</p></li>
+<li><p><filepath>commdb.lib</filepath> for selecting IAPs </p></li>
+</ul><p>Since most of the resources under Symbian platform are accessed through
+client/server IPC, the user must connect with the corresponding server before
+doing any operation and close the session on completion of the operation.
+For example: <ul>
+<li><p>connect with the file server before file operations</p></li>
+<li><p>connect with the socket server for socket-related operation</p></li>
+<li><p>connect to the communication server before serial communication operation</p></li>
+</ul></p><p>P.I.P.S. eliminates all these operations. P.I.P.S. allows the
+user to code, as if it were done for the UNIX or Linux environment and lets
+the user link the application with P.I.P.S..</p></section>
+<section id="GUID-AFAE7FDA-8829-4FF7-991F-D65EBAA652F2"><title>Thread creation</title><p>This
+section deals with thread creation in the UNIX and Symbian platform environments.</p><codeblock xml:space="preserve">/* Thread creation in UNIX environment*/
+   void* ThreadEntryPoint( void* aParam );
+   int exitReason = 0;
+   int retVal  = 0;
+   pthread_t threadID = 0;
+   pthread_attr_t threadAttr;
+   pthread_attr_init(&amp;threadAttr);
+   retVal = pthread_create(&amp;threadID, &amp;threadAttr, ThreadEntryPoint, (void*)NULL );
+   if(retVal == 0) {
+       retVal = pthread_join(threadID1, (void**)&amp;exitReason);
+   }
+</codeblock><codeblock xml:space="preserve">// Thread creation in Symbian OS
+  TInt ThreadEntryPoint( TAny* aData );
+  …
+  RThread thread;
+  thread.Create(_L("MY-THREAD"), ThreadEntryPoint, 4096, NULL, NULL);
+  TRequestStatus stat;
+  thread.Logon(stat);
+  //Start executing the thread.
+  thread.Resume();
+  //Wait for the thread to die.
+  User::WaitForRequest(stat);
+  exitReason = thread.ExitReason();
+  thread.Close();
+</codeblock><p>In addition the difference in the code for creating threads
+using <codeph>pthread_create</codeph> and <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-6C840907-C3F7-34B7-97DB-CEDBA68EA277"><apiname>RThread::Create()</apiname></xref>,
+a thread created using <xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-6C840907-C3F7-34B7-97DB-CEDBA68EA277"><apiname>RThread::Create()</apiname></xref> also expects the <codeph>ThreadEntryPoint()</codeph> function
+to create its own vcleanup stack and a top-level TRAP, if required. Else,
+the thread may crash or panic. But this does not have to be done for a thread
+created using <codeph>pthread_create. pthread_create</codeph> does that for
+the developer.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF6C76A5-AC87-4EBD-AECF-35B456219B94.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-CF6C76A5-AC87-4EBD-AECF-35B456219B94" xml:lang="en"><title>Releasing
+the reserved lights</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>ReleaseLight()</codeph> call releases the light
+target if it was previously reserved for the client. Multiple lights can be
+specified by using bitwise-or. If the client has not reserved any of the specified
+lights, this method does nothing. Any reserved light targets that are released
+and have no other suspended clients are reset to default state, which is either
+lights ON or lights OFF, depending on the system inactivity time. The following
+code snippet demonstrates how to release the reserved light targets:</p><codeblock xml:space="preserve">iLight-&gt;ReleaseLight( CHWRMLight::EPrimaryDisplay | CHWRMLight::EPrimaryKeyboard );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF8287B9-2063-5316-A1BF-7DFC58FCDE30.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CF8287B9-2063-5316-A1BF-7DFC58FCDE30" xml:lang="en"><title>How
+to freeze exports</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Released versions of DLLs should freeze their exports, so as to ensure
+the backward compatibility of new releases of a library. While you are developing
+a DLL, you can use the <codeph>exportunfrozen</codeph> keyword in the project's
+mmp file, to tell the build process that exports are not yet frozen. When
+you are ready to freeze, remove the <codeph>exportunfrozen</codeph> keyword,
+and supply a <filepath>.def</filepath> file listing the exports. </p>
+<p>To create a <filepath>.def</filepath> file, build the project in the normal
+way. A warning will be generated to the effect that the frozen <filepath>.def</filepath> file
+does not yet exist. Once the project has been built you can freeze it by calling
+the <codeph>freeze</codeph> target in the makefiles. You can do this with <codeph>abld</codeph> by
+using: </p>
+<p><userinput>abld freeze </userinput> </p>
+<p>Either method will create the frozen <filepath>.def</filepath> file containing
+the project’s exported functions. Note that the Symbian emulator targets and
+ARM targets have different <filepath>.def</filepath> file formats, so that
+if you build for both of these, you will need to store two def files. </p>
+<p>Once the project is frozen, regenerate the makefiles so that the import
+library will be created directly from the frozen <filepath>.def</filepath> file. </p>
+<p>The project can be frozen in this way even if the <codeph>exportunfrozen</codeph> statement
+is specified, but the import library will be created as a side-effect of linking
+rather than from the frozen <filepath>.def</filepath> file, and this import
+library will be created whether the project is frozen or not. </p>
+<section><title>Storing deffiles </title><p>By default, the build tools look
+for the Symbian emulator build def file in a <codeph>BWINS</codeph> directory
+(at the same level as the directory containing the mmp file), and the ARM
+def file in a <codeph>EABI</codeph> directory. If def files are stored in
+these locations, the project files does not need to specify the location of
+the def files explicitly. If you want to store the def files in some other
+location, you will need to specify in the project file where the .def files
+are using the <codeph>deffile</codeph> keyword. </p><p>Because the .def files
+are different for different targets, it's necessary to use <codeph>#if defined</codeph> macros
+to select the correct def file, depending on the target for which the project
+is being built. The following example does this: </p><codeblock id="GUID-B5FB9EAB-EA32-567D-8190-45085E4497C5" xml:space="preserve">#if defined(WINS)
+deffile    ..\freeze\CONVPLUG-WINS.DEF
+#else
+deffile    ..\freeze\CONVPLUG-EABI.DEF
+#endif</codeblock><p>A more succinct syntax is also available:</p><codeblock id="GUID-47BB23C9-15DD-5B96-A567-C36AA55EAEE1" xml:space="preserve">deffile ..\~\x.def</codeblock><p>A
+directory named ~ in a deffile path is automatically replaced with bwins or
+eabi as necessary depending on which target is being built.  </p></section>
+<section><title>Adding new exports </title><p>New exports can be added to
+the frozen <filepath>.def</filepath> file by calling the <codeph>freeze</codeph> target
+in the makefiles once the project has been built with the new exports incorporated. </p><p>The <codeph>freeze</codeph> target
+calls a tool, <filepath>efreeze</filepath>, to compare the frozen <filepath>.def</filepath> file,
+if it exists, with the one generated by the two-stage link process in directory: <filepath>epoc32\build\</filepath> <varname>absolute_path_to_mmp_file</varname> <filepath>\</filepath> <varname>mmp_basename</varname> <filepath>\</filepath> <varname>platform</varname> <filepath>\</filepath></p><p><filepath>efreeze</filepath> checks that the frozen exports are all present and correct
+in the generated <filepath>.def</filepath> file, and appends any new exports
+to the end of the frozen <filepath>.def</filepath> file. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0"><title> Nodes in the Communications Framework</title><shortdesc>This topic describes the concept of a <i>Node</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Communications Framework separates its implementation into horizontal and vertical divisions - the concept of Layers and Planes. Each of the separate entities is a <i>Node</i>. These entities form part of the Communications stack and are named <i>Stack Nodes</i>. Stack Nodes belong to a single Layer and a single Plane. Stack Nodes also provide Access Point services. </p> <section id="GUID-0B0B61DE-AABC-5F87-8205-30F818F79C0A"><title>Stack Nodes</title> <p>There are four Stack Nodes: </p> <p><b>MetaConnection Provider (MCPR) Node </b> </p> <p>The <i>MCPR</i> Node uses the configuration and policy specifications to manage the Layer. A phone creator can replace this Node. The replacement or the configuration of this Node allows a phone creator to change the configuration of the Communications Infrastructure without a change to the software. </p> <p><b>Connection Provider (CPR) Node </b> </p> <p>The <i>CPR</i> Node manages the connections. </p> <p><b>SubConnection Provider (SCPR) Node </b> </p> <p>The <i>SCPR</i> Node manages the subconnections. Each subconnection represents a logical data channel. The Communications Framework has the concept of a default subconnection. A default SCPR always exists to represent the default subconnection. A connection uses the default subconnection if a subconnection is not specified. </p> <p><b>Flow Node </b> </p> <p>The <i>Flow</i> Node manages the data stream. </p> <fig id="GUID-7E959DB6-5153-5B0D-A857-97684318F53A"><title>
+             Stack Nodes 
+          </title> <image href="GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e63486_href.png" placement="inline"/></fig> <p>Each type of Node is related to a specific Plane in the Comms Stack. The following diagram shows that: </p> <ul><li id="GUID-11520E35-0C8B-59AB-8B00-C0D3FCB2EF3B"><p>the <i>Flow Node</i> has a one-to-one relationship with the Data Plane. </p> </li> <li id="GUID-B5305F51-3D47-5BF4-8EEF-6D5D240A199D"><p>the<i> MCPR (MetaConnection Provider) Node</i> has a one-to-one relationship with the Management Plane. </p> </li> <li id="GUID-24C548E4-3D00-5F98-BBD8-A6F8B368AA0C"><p>the Control Plane contains both the <i>SCPR Node</i> and the <i>CPR Node</i>. </p> </li> <li id="GUID-6DC64ADF-1DAD-5F7D-8433-1A1383983CC7"><p>the <i>SCPR Node</i> can have many instances in operation at the same time. </p> </li> <li id="GUID-370A9510-8068-54E3-AE14-9FA8F30A879B"><p>the <i>MCPR Node</i> can connect to resources outside the Communications stack. The offset grey box around the text MCPR represents this fact. </p> </li> </ul> <fig id="GUID-5DAECC1D-051F-5F9D-8D73-2F992C2D1003"><title>
+             How Nodes related to Planes in the Comms Stack 
+          </title> <image href="GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e63540_href.png" placement="inline"/></fig> </section> <section><title>Other Nodes</title> <p>The Communications Framework has two other types of Node: <i>Tier Manager</i> and <i>Factory Container</i>. </p> <p><b>Tier manager Node </b> </p> <p>A Tier is an alternative to Access Points. A Tier gives users a different method to access the services of the Communications Infrastructure. A Tier represents a higher level communications technology or a collection of technologies. Each communications technology belongs to a Tier, but a Tier can contain more than one technology. When a user selects a technology, a Tier shows the appropriate group of technologies from which the user can select. The Tier handles the selection of the Access Point. A Tier manager Node manages each Tier in the Communications Framework. </p> <p><b>Factory Container Node </b> </p> <p>Factory Containers create Nodes. The Communications Framework supplies a Factory Container for each type of Node. The Factory Containers have published addresses and Nodes use these addresses to find and communicate with the Factory Containers. A Node can create another Node. A Node sends a request to the correct Factory Container to create the other Node. The Factory Container tries to create the new Node and reports status to the Node that made the request. </p> <p>The following diagram shows the connection between the Stack Nodes and the Tier Manager and Factory Container Nodes. </p> <fig id="GUID-8BD04C75-4923-5566-BB89-D502845B332A"><title>
+             Connection between the Stack Nodes and the Tier Manager and Factory
+             Container Nodes 
+          </title> <image href="GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e63579_href.png" placement="inline"/></fig> </section> </conbody><related-links><link href="GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita"><linktext>Access
+                Points</linktext> </link> <link href="GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita"><linktext>Layers</linktext> </link> <link href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita"><linktext>Planes</linktext> </link> <link href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita"><linktext>Tiers</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A" xml:lang="en"><title>Schedule
+Send MTM Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of the Schedule Send MTM component. </p>
+<section><title>Purpose</title> <p>The Schedule Send MTM allows Message Type
+Modules (MTM) to send messages at scheduled times. For example, the <xref href="GUID-33C7EEEB-88B8-5587-916D-2C5D122F6010.dita">SMS MTM</xref> uses this
+functionality to allow scheduled sending of SMS messages. </p> </section>
+<section><title>Architecture</title> <p>The Schedule Send functionality is
+delivered by four components: </p> <ul>
+<li id="GUID-9F8C6A75-11C5-58F8-8C94-ABFEFB5551A7"><p> <b>Server MTM base
+class</b>  </p> <p>The base class provides support to Server MTMs that wish
+to support scheduled operations. </p> </li>
+<li id="GUID-B0BC4BCD-600A-5619-AA0A-721DFA6F6355"><p> <b>Data structures</b>  </p> <p>Classes
+used to represent the data associated with a scheduled operation. </p> </li>
+<li id="GUID-D096C050-6250-5C6B-8046-C6BEC1BBB4DA"><p> <b>Schedule Send Executable</b>  </p> <p>The
+Schedule Send Executable is run by the task scheduler at the scheduled time. </p> </li>
+<li id="GUID-FEC0314A-5D66-570B-BCD2-A995FA9B52EC"><p> <b>Task Scheduler</b>  </p> <p>The
+component is part of the Generic OS Services. </p> </li>
+</ul> <p>Clients request the Server MTM schedule operations; this is passed
+to the Server MTM through the Message Server. The Server MTM packages the
+operation ID, a selection of message IDs, how often to poll for progress and
+an MTM specific buffer. It then passes this package of data to the task scheduler
+requesting that it launches the Schedule Send executable at the correct time
+with the packaged information. When the task scheduler launches the Schedule
+Send executable, it unpacks the schedule information and uses the messaging
+client API to request the Server MTM to perform an operation. </p> <fig id="GUID-F3664A22-1E9F-586B-84B1-CDA7987C3894">
+<title>              Schedule Send architecture            </title>
+<image href="GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e252086_href.png" placement="inline"/>
+</fig> <p>The executable to run by the Task Scheduler is specified in the
+schedule send settings. This allows different executables for different message
+types, as a set of schedule send settings are defined for each message type
+that uses the schedule send support. The executable is normally the schedule-send
+exe (<filepath>schsendexe.exe</filepath>). </p> <p>Each task contains some
+repeat and priority information and a payload of data. In the case of schedules
+created by <xref href="GUID-35CAC635-C0CE-328F-B10C-7FEB4503E8DB.dita"><apiname>CMsvScheduleSend</apiname></xref>, and the payload contains the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> of
+the scheduled message and ID of the command to be applied to that message. </p> </section>
+<section><title>Description</title> <p>The Schedule Send component is an extension
+to the Messaging Framework that provides the messaging client with functionality
+to schedule messages. It provides the following scheduling functionality: </p> <ul>
+<li id="GUID-D0FE4E53-6A5E-537C-8137-62FCBDA76C25"><p>Schedule a selection
+of messages </p> </li>
+<li id="GUID-310D7333-C3A4-544F-82F9-EBED51DEC322"><p>Reschedule a selection
+of messages </p> </li>
+<li id="GUID-E55C0577-3E52-57F8-9DE0-A74DD6504699"><p>Check the schedule information
+for a selection of messages </p> </li>
+<li id="GUID-A7553674-42EC-5437-A362-5994776B2D79"><p>Delete the schedule(s)
+for a selection of messages </p> </li>
+</ul> <p>It also provides status information, such as whether a message is
+currently scheduled, or failed. </p> <p>There are two types of schedules:
+conditions-schedules and time-schedules. Both are stored in the file system
+and persist across a reboot of a device. A schedule contains several pieces
+of information, such as the schedule trigger (for example, the scheduled time),
+the executable to run when the trigger occurs, and a list of tasks. </p> <p>Schedule
+Send supports a retry mechanism if the operation fails. The Server MTM has
+a resource file containing a mapping from the error codes the operation can
+fail with and actions to be performed. For example, the SMS resource file
+has a mapping such that if the operation fails with an error code indicating
+a bad phone number, the SMS is set to failed and left in the outbox. Whereas,
+if it fails with an error code indicating temporary network failure, the send
+operation is scheduled to be resent later with a maximum of three retries. </p> </section>
+<section><title>API summary</title> <p>The following are the main classes
+of the Schedule Send component: </p> <ul>
+<li id="GUID-FC3E3A59-29FD-5AD9-A4FE-3712BBE84F4F"><p>The <xref href="GUID-35CAC635-C0CE-328F-B10C-7FEB4503E8DB.dita"><apiname>CMsvScheduleSend</apiname></xref> is
+the main API that provides the Schedule Send support. This API provides the
+following scheduling functionality: </p> <ul>
+<li id="GUID-21BA2FDE-617B-521C-82E6-B6493677234D"><p>Schedule a selection
+of messages </p> </li>
+<li id="GUID-7A3D4A53-713C-50F1-9BCE-23C93795240B"><p>Reschedule a selection
+of messages </p> </li>
+<li id="GUID-81E94316-E1BE-5710-9573-5C9DD332E9C4"><p>Check the schedule information
+for a selection of messages </p> </li>
+<li id="GUID-5DAA73B7-5171-5F17-9F09-FBA1006BC69C"><p>Delete the schedules
+for a selection of messages </p> </li>
+</ul> <p>Scheduling is performed by the task scheduler. The <xref href="GUID-35CAC635-C0CE-328F-B10C-7FEB4503E8DB.dita"><apiname>CMsvScheduleSend</apiname></xref> class
+uses the task scheduler <xref href="GUID-6E138B87-ED51-3C72-9075-8D7F887FA7B1.dita"><apiname>RScheduler</apiname></xref> API to create persistent
+schedules and add tasks to that schedule. Each task contains some repeat and
+priority information, and a payload of data. In the case of schedules created
+by <xref href="GUID-35CAC635-C0CE-328F-B10C-7FEB4503E8DB.dita"><apiname>CMsvScheduleSend</apiname></xref>, the payload contains the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> of
+the scheduled message and the ID of the command to be applied to that message. </p> </li>
+<li id="GUID-88A357B8-1F54-5BB4-8996-749E08776880"><p>The <xref href="GUID-95828565-7389-381C-BD7E-B7F7B98A2487.dita"><apiname>CMsvSysAgentActions</apiname></xref> class
+is used to specify what (system agent) conditions need to be checked before
+sending a message. </p> </li>
+<li id="GUID-6B42C963-B955-5928-8CC9-D27D3D4B49C5"><p>The <xref href="GUID-BF841328-372B-3F68-8BC9-5CB8639650D0.dita"><apiname>CMsvSendErrorActions</apiname></xref> class
+has a set of actions associated with error codes. It also provides a method
+to populate itself from a resource file, <xref href="GUID-30427874-08F3-32E1-A512-44091C4ABD5C.dita"><apiname>RestoreFromResourceL</apiname></xref>. </p> <p>This
+is used in the <xref href="GUID-78B57F36-F131-3275-B23F-9F20446C5C2A.dita#GUID-78B57F36-F131-3275-B23F-9F20446C5C2A/GUID-6D031676-C9A7-36F3-B75A-363EA1571896"><apiname>CScheduleBaseServerMtm::RestoreSettings</apiname></xref> method,
+where the error actions are populated from the resource file for a message
+type. </p> </li>
+<li id="GUID-3C17AEBA-7F45-51A4-A2EB-C4E0EC64869E"><p>The <xref href="GUID-3A9254B7-77C2-300A-9128-6A7BD45F8CBA.dita"><apiname>CMsvScheduleSettings</apiname></xref> class
+encapsulates settings for the Schedule Send. This contains information, such
+as, the length of <b>short</b> and <b>long</b> time intervals that are used
+to calculate the next schedule time for a message being rescheduled. </p> </li>
+</ul> </section>
+<section><title>Typical uses</title> <table id="GUID-B9D02EE0-1A69-5540-AE43-23A2ADA52F98">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Main task</entry>
+<entry>Sub-tasks</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Scheduling a message </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Schedules a selection of messages. The messages must be of the same
+type. They must also be scheduled for the same date and if applicable, for
+the same off-peak time. </p> <p>The first step of scheduling a message is
+to set the different parameters that allows determining the exact time the
+message is sent and what to do if the message cannot be sent. The following
+settings are per message and two parameters must be set for each message. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Set the date </p> </entry>
+<entry><p>Client applications can set the schedule date for a message. </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>Select off-peak sending </p> </entry>
+<entry><p>Client applications can select to send messages during off-peak
+periods. </p> </entry>
+</row>
+<row>
+<entry><p>Delete the schedule for messages </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Client applications can delete a schedule for a specified message
+from the task scheduler. The messages themselves are not deleted. </p> </entry>
+</row>
+<row>
+<entry><p>Re-schedule messages </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Client applications can determine when messages should be rescheduled
+on the task scheduler. </p> </entry>
+</row>
+<row>
+<entry><p>Send scheduled messages </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Client applications can send messages immediately that are previously
+scheduled, that is, override the scheduling. </p> </entry>
+</row>
+<row>
+<entry><p>Check the schedule of messages </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Client applications can verify that the schedule information stored
+in specified messages is the same as the one actually in use. </p> </entry>
+</row>
+<row>
+<entry><p>Configuring a Schedule Send message </p> </entry>
+<entry/>
+<entry><p>Client applications can configure the build-time configuration parameters,
+which are time-related parameters, off-peak period definitions and error actions. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Validity period </p> </entry>
+<entry><p>The time period that the messages are valid (the message is not
+sent after the validity period has expired). This is ignored if a message
+has to be sent off-peak. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Next attempt intervals </p> </entry>
+<entry><p>The messaging client uses this setting to define the time to wait
+before attempting to resend a message. </p> <p>After a failed attempt, a message
+can be sent immediately or later. The short interval and long interval define
+the delays before a new attempt. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Latency </p> </entry>
+<entry><p>The minimum amount of time between now and when the message is sent. </p> <p>A
+message scheduled in the past will actually be scheduled to be sent Latency
+seconds after the current time. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Start of off-peak period </p> </entry>
+<entry><p>The day of the week, hour of the day and minute of the hour when
+the off-peak period starts. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Duration of off-peak period </p> </entry>
+<entry><p>The length (in minutes) of the off-peak period time. Must be less
+than 24 hours. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Add an error action </p> </entry>
+<entry><p>Client applications can add an error-action to the configuration
+of the subsystem (for a type of message). That is, the error-action is configured
+for the number of retries or type of retry spacing to a particular error. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Remove an error-action </p> </entry>
+<entry><p>Client applications can remove an error-action from the list sustained
+by the Messaging Middleware module. </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Set a list of error-actions </p> </entry>
+<entry><p> </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>Load the error-actions from a resource file </p> </entry>
+<entry><p>Client applications can restore the list of error-actions from a
+resource file. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type
+Module</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e182376_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CFA21FBA-593F-58DB-AADA-C9D6D676AEEE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CFA21FBA-593F-58DB-AADA-C9D6D676AEEE" xml:lang="en"><title>How
+to share heaps</title><shortdesc>Heaps may be shared between threads within a process.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a new thread is created:</p>
+<ul>
+<li id="GUID-7FF23B75-DADB-557C-B8F7-C1884E51FCE4"><p>it can use the same
+heap as the thread which is doing the creating.</p> </li>
+<li id="GUID-19F6D491-9424-5320-BFF7-DFB27008D90B"><p>it can use the heap
+which has been explicitly created for it by the thread which is doing the
+creating.</p> </li>
+<li id="GUID-83CB8A55-DB7C-503C-8CB8-E206C918FF99"><p>it can use the heap
+automatically created for it by the operating system.</p> </li>
+</ul>
+<p><i>Only in the first two cases is the heap being shared.</i> </p>
+<p>Both are achieved by using the version of <codeph>RThread::Create()</codeph> prototyped
+as:</p>
+<codeblock id="GUID-7716A80C-634E-55A2-BB22-EEB621DFFA40" xml:space="preserve">TInt Create(const TDesC&amp; aName,
+            TThreadFunction aFunction,
+            TInt aStackSize,
+            RHeap* aHeap,
+            TAny* aPtr,
+            TOwnerType aType=EOwnerProcess);</codeblock>
+<p>If <codeph>aHeap</codeph> is <codeph>NULL</codeph>, the new thread uses
+the same heap as the parent thread. For example:</p>
+<codeblock id="GUID-0F13C320-55FD-5570-89EF-109023AD4F0A" xml:space="preserve">RThread t;
+_LIT(KTxtShared1,"Shared1");
+...             ...
+TInt r=t.Create(KTxtShared1,
+                threadEntryPoint,
+                KDefaultStackSize,
+                NULL,
+                NULL);</codeblock>
+<p>The calling thread can create a new heap using <codeph>User::ChunkHeap()</codeph> or <codeph>UserHeap::ChunkHeap()</codeph> (this
+is the same function; the <codeph>User</codeph> class is derived from <codeph>UserHeap</codeph>)
+and pass this heap to the <codeph>RThread::Create()</codeph> function. For
+example:</p>
+<codeblock id="GUID-9DC2E0EF-6606-54FC-A2DE-3987620784A9" xml:space="preserve">_LIT(KTxtShare,"Share");
+_LIT(KTxtShared1,"Shared1");
+...
+RHeap* pH=User::ChunkHeap(KTxtShare,0x1000,0x100000);
+RThread t;
+TInt r=t.Create(KTxtShared1,
+                threadEntryPoint,
+                KDefaultStackSize,
+                pH,NULL);</codeblock>
+<p>The new heap is contained within its own chunk.</p>
+<p>If the <i>creating</i> thread no longer has any interest in this explicitly
+created heap, it can close it by calling <codeph>Close()</codeph>. Note that
+the corresponding call to <codeph>Open()</codeph> was done automatically by <codeph>User::ChunkHeap()</codeph>.
+The function <codeph>Open()</codeph> should be used to re-open the heap for
+sharing; this increases the access count.</p>
+<p>Note that <codeph>Open()</codeph> can only be called on a heap created
+using <codeph>User::ChunkHeap()</codeph>.</p>
+<p>The heaps which are created automatically for a thread should not be closed
+with a call to <codeph>Close()</codeph> since the chunk in which the heap
+is created contains the thread's stack as well as the heap. In this case,
+if <codeph>Close()</codeph> is called the thread is panicked.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CFC70204-1AD4-5DF0-ADDC-CDE4B39CFF96" xml:lang="en"><title>Simulating
+and intercepting key events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-EC0588AB-A48E-42A8-A149-315B36DBE493"><title>Simulating
+key events</title> <p>Simulating key events is done by calling <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> ’s
+member function <codeph>SimulateKeyEventsL()</codeph>; this sends to the application
+a key event for each of the items in the array passed to it. There are two
+overloads of <codeph>SimulateKeyEventsL()</codeph>: in the first and most
+commonly used overload, only the character codes of the key events are specified;
+in the second overload, modifier keys can also be specified for each key event
+to be simulated. The header file <filepath>epoc32\include\E32KEYS.H</filepath> defines
+the various modifiers possible. The FEP author needs to derive from <codeph>CCoeFep::MModifiedCharacter</codeph> in
+order to use the second overload of <codeph>SimulateKeyEventsL()</codeph>,
+implementing all three of its pure virtual functions. The <codeph>ModifierMask()</codeph> function
+returns the modifiers whose value the FEP wishes to specify; the values for
+the modifiers are returned by the <codeph>ModifierValues()</codeph> function. <codeph>ModifierValues()</codeph> should
+not return values for any modifiers that are not also returned by <codeph>ModifierMask()</codeph>. </p> <p>For
+example, supposing a FEP wishes to send a key event to an application with
+the <userinput>func</userinput> modifier on and the <userinput>shift</userinput> modifier
+off. In this case the <codeph>ModifierMask()</codeph> function would return <codeph>EModifierFunc|EModifierShift</codeph> and
+the <codeph>ModifierValues()</codeph> function would return <codeph>EModifierFunc</codeph>.
+The resulting key event received by the application would then have the <codeph>EModifierFunc</codeph> modifier
+on and the <codeph>EModifierShift</codeph> modifier off (even if the shift
+key is being pressed down). All the other modifiers in the key event, since
+they were not returned in the <codeph>ModifierMask()</codeph> function, will
+reflect the current state of the keyboard. </p> </section>
+<section id="GUID-1B15C661-851B-5922-B8BC-7A772232DBD2"><title>Intercepting
+key events</title> <p>In order for a FEP to intercept key events before they
+reach the application beneath them, the FEP control must be added to the control
+stack at a high priority. This is done by using the following code in the
+control’s construction routine: </p> <codeblock id="GUID-1734E8DC-BB49-5EB9-B373-F8B4A8B92809" xml:space="preserve">STATIC_CAST(CCoeAppUi*, iCoeEnv-&gt;AppUi())-&gt;AddToStackL(this, ECoeStackPriorityFep, ECoeStackFlagRefusesFocus|ECoeStackFlagSharable);</codeblock> <p>and the following code in its destructor: </p> <codeblock id="GUID-D5BF8AAB-6BEA-5CF5-AE66-488CC2C44654" xml:space="preserve">STATIC_CAST(CCoeAppUi*, iCoeEnv-&gt;AppUi())-&gt;RemoveFromStack(this);</codeblock> <p>Passing the flag <codeph>ECoeStackFlagSharable</codeph> to <codeph>AddToStackL()</codeph> ensures
+that if an embedded object is edited from an application, for instance an
+embedded drawing is edited inside a word processor document, the FEP’s control
+will also be put onto the child application’s control stack when the child
+application is started. More importantly, the <codeph>ECoeStackFlagRefusesFocus</codeph> flag
+should be passed to <codeph>AddToStackL()</codeph> because FEPs in general
+should not “steal” focus from the target underneath them. For the same reason, <codeph>SetNonFocusing()</codeph> (a
+member function of <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>) should be called in the
+control’s construction routine to prevent mouse or pen events from giving
+it focus. On some occasions it may be legitimate for the FEP to take the focus,
+for instance if the FEP has a floating window and it is temporarily in a mode
+where the user can move this window around the screen by using the arrow keys.
+In this case, the FEP’s control can take the focus by calling: </p> <codeblock id="GUID-183A9459-B8F1-5D7F-897E-3B5278B8BEE1" xml:space="preserve">CCoeAppUi&amp; appUi=*STATIC_CAST(CCoeAppUi*, iCoeEnv-&gt;AppUi());
+appUi.UpdateStackedControlFlags(this, 0, ECoeStackFlagRefusesFocus);
+appUi.HandleStackChanged();
+</codeblock> <p>The following code causes the FEP’s control to revert to normal
+operation by losing focus: </p> <codeblock id="GUID-D5C24301-9D84-5D62-9E75-4B17892316B2" xml:space="preserve">CCoeAppUi&amp; appUi=*STATIC_CAST(CCoeAppUi*, iCoeEnv-&gt;AppUi());
+appUi.UpdateStackedControlFlags(this, ECoeStackFlagRefusesFocus, ECoeStackFlagRefusesFocus);
+appUi.HandleStackChanged();
+</codeblock> <p>Adding the FEP’s control to the control stack at priority <codeph>ECoeStackPriorityFep</codeph> means
+that it gets first refusal of all key events. The UI framework offers key
+events to the FEP control by calling its <codeph>OfferKeyEventL()</codeph> virtual
+function (although key events for a FEP over an OPL application follow a different
+route, described below). The signature of this virtual function, which is
+first declared in <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>, is: </p> <codeblock id="GUID-7823A4B2-AC86-502E-8609-9277F748C64F" xml:space="preserve">TKeyResponse OfferKeyEventL(const TKeyEvent&amp; aKeyEvent, TEventCode aType);</codeblock> <p>The first thing that should be done at the start of <codeph>OfferKeyEventL()</codeph> is
+to call either of the two macros below, both of which are defined in <filepath>epoc32\include\FEPBASE.H</filepath>: </p> <codeblock id="GUID-84B500B8-7B35-5E6D-8C54-77AA59C4FCD7" xml:space="preserve">#define FEP_START_KEY_EVENT_HANDLER_L(aFep, aKeyEvent, aEventCode)
+#define FEP_START_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L(aFep, aKeyEvent, aEventCode)
+</codeblock> <p>The <codeph>aFep</codeph> parameter must be a <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> object.
+Note that it should not be a pointer to a <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref>. The <codeph>aKeyEvent</codeph> and
+the <codeph>aEventCode</codeph> parameters should be respectively the <xref href="GUID-0F8FA6A3-F172-36E4-9CF5-60814ABCD562.dita"><apiname>TKeyEvent</apiname></xref> and
+the <xref href="GUID-420348F5-4A82-3780-9D27-A3E1F4780F0B.dita"><apiname>TEventCode</apiname></xref> parameters of the <codeph>OfferKeyEventL()</codeph> function
+itself. The <codeph>OfferKeyEventL()</codeph> function should only be returned
+from by calling either of the following two macros (these are also defined
+in <filepath>epoc32\include\FEPBASE.H</filepath>): </p> <codeblock id="GUID-AE03275F-FBD7-52AF-B7CC-C6F6707B9FDC" xml:space="preserve">#define FEP_END_KEY_EVENT_HANDLER_L(aFep, aKeyEvent, aKeyResponse)
+#define FEP_END_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L(aFep, aKeyEvent, aEventCode, aKeyResponse)
+</codeblock> <p>Both of these two macros contain a <codeph>return</codeph> statement,
+so the <codeph>return</codeph> C++ keyword should not occur in the <codeph>OfferKeyEventL()</codeph> function
+at all. Note that the macro used at the start of the <codeph>OfferKeyEventL()</codeph> function
+should match the macro used to return from it; in other words, both should
+be of the <i>no-down-up-filter</i> type or neither should be. The <i>no-down-up-filter</i> variants
+should be used if the FEP wishes to handle <codeph>EEventKeyDown</codeph> or <codeph>EEventKeyUp</codeph> events.
+This is likely to be rare, however; most FEPs are probably only interested
+in <codeph>EEventKey</codeph> events, in which case <codeph>FEP_START_KEY_EVENT_HANDLER_L</codeph> and <codeph>FEP_END_KEY_EVENT_HANDLER_L</codeph> should be used. These variants filter out <codeph>EEventKeyDown</codeph> and <codeph>EEventKeyUp</codeph> events
+so that the FEP only receives <codeph>EEventKey</codeph> events. </p> <p>The
+first three parameters of the <codeph>FEP_END_KEY_EVENT_HANDLER_</codeph> <i>XXX</i> macros
+are the same as for the <codeph>FEP_START_KEY_EVENT_HANDLER_</codeph> <i>XXX</i> macros.
+The fourth parameter should be a <xref href="GUID-2AE56EA4-C71E-33FA-8FCE-D2D15453CD10.dita"><apiname>TKeyResponse</apiname></xref> value (an
+enum defined in <filepath>epoc32\include\COEDEF.H</filepath>). Specifying <codeph>EKeyWasNotConsumed</codeph> as
+this fourth parameter allows that key event to 'fall through' to the application,
+whereas specifying <codeph>EKeyWasConsumed</codeph> prevents the application
+from receiving that event. A good rule of thumb for a FEP that takes key events
+as its input is to intercept as few key events as possible when not inside
+a FEP transaction, but once inside a transaction to block all key events from
+getting through to the application. A transaction may be defined as the composition
+and abandoning/committing of a piece of text ('committing' means sending it
+on to the application). For a Japanese FEP, that piece of text may be an entire
+sentence, whereas for a Chinese FEP it may be just one or two characters. </p> <p>For
+a FEP running over an OPL application, the <codeph>OfferKeyEventL()</codeph> virtual
+function declared in <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref> will get called. This is a
+completely independent function from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> ’s virtual
+function of the same name, and it has a different signature which is as follows: </p> <codeblock id="GUID-6760C373-FB46-53E5-96ED-A8273126B060" xml:space="preserve">void OfferKeyEventL(TEventResponse&amp; aEventResponse, const TKeyEvent&amp; aKeyEvent, TEventCode aEventCode);</codeblock> <p>This virtual function should be implemented in exactly the same way as <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> ’s <codeph>OfferKeyEventL()</codeph>,
+the meaning of the <codeph>aKeyEvent</codeph> and <codeph>aEventCode</codeph> parameters
+being the same as for <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref> ’s <codeph>OfferKeyEventL()</codeph>.
+The <codeph>aEventResponse</codeph> parameter should be set by the function
+overriding <codeph>CCoeFep::OfferKeyEventL()</codeph> to either <codeph>CCoeFep::EEventWasNotConsumed</codeph> or <codeph>CCoeFep::EEventWasConsumed</codeph>, and this must be done before any function that can leave is called. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27-master.png has changed
Binary file Symbian3/SDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e400761_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CFE3A216-E637-51C1-B258-2ADF4E0F4150.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CFE3A216-E637-51C1-B258-2ADF4E0F4150" xml:lang="en"><title> Alarm Server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Alarm Server is one of the key components of Common Application Service collection. It is a long running system server started on system start-up, which manages a queue of system-wide alarms. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-CFFA84F1-2A5E-5E73-B168-C79C2E4DC75D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CFFA84F1-2A5E-5E73-B168-C79C2E4DC75D" xml:lang="en"><title>File Handling</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The File Handling collection provides a plug-in interface for file format converters to handle converting specific file types.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D009C6A6-3388-554F-BCB5-4F438E7F9E99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D009C6A6-3388-554F-BCB5-4F438E7F9E99" xml:lang="en"><title>Bluetooth Remote Control Framework Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Bluetooth Remote Control Framework allows you to send remote control commands over a Bluetooth enabled device. This tutorial series will help get you started writing your own remote control applications for Symbian platform devices. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D01C4682-619E-501E-8992-9F7FA35D7682.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D01C4682-619E-501E-8992-9F7FA35D7682" xml:lang="en"><title>Feature
+Manager Modification Tutorials</title><shortdesc>This document introduces tutorials on the use of Feature Manager
+to modify features after a phone is built. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-89E4DEC6-CDDF-5EA8-AA1B-D2FD05043764"><p>The features with
+which a phone is built often subsequently need to be enabled or disabled,
+reset, updated or added to. These tutorials describe those tasks. </p> </context>
+</taskbody><related-links>
+<link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+Overview</linktext></link>
+<link href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita"><linktext>Feature Manager
+Guide</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D01CC090-60D1-5D1D-AF87-C77D5DE46BAC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D01CC090-60D1-5D1D-AF87-C77D5DE46BAC"><title>readonly</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>readonly </userinput> </p> <p>Same as <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref>  <codeph>-r</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D02B5AF1-B1C3-560D-9654-971A5CC1A904.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D02B5AF1-B1C3-560D-9654-971A5CC1A904" xml:lang="en"><title>Application Utilities</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Application Utilities is a collection of libraries that are widely used by the high level subsystems and frameworks of the Symbian platform. It provides libraries such as Activity Manager, Basic Application Framework Utilities (BAFL), Base Services Utility Library (BSUL) and System Utilities.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0318BB6-0B9F-5A1C-AB0B-61BA22D28661.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D0318BB6-0B9F-5A1C-AB0B-61BA22D28661" xml:lang="en"><title>The Location Acquisition API</title><shortdesc>Client applications use the Location Acquisition API to obtain the position of the mobile device from the LBS subsystem. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The documents in this section describe the Location Acquisition API and give examples of how to use it. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D038D77F-A6B8-5A18-8978-4981AE8D0F35.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-D038D77F-A6B8-5A18-8978-4981AE8D0F35"><title> Using the Encoded H264 Video Frames to Capture Video</title><shortdesc>This topic describes how to use the encoded H264 video frames in the Ecam video capture function to capture the video data. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-E8812B46-29C5-56D8-9658-B0B03D601B2C"><p>You need to be familiar with the <xref href="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita">Capturing Video</xref> tutorial. </p> </prereq> <context id="GUID-3B0CFDEE-297B-56D0-A73A-B45C2E8C550C"><p>The H264 video encoder provides a new, high quality video data encoding format for Ecam. Ecam allows the device to capture video frames which are encoded in the H264 format. The Ecam video capture function supports the H264 video capture format by default. You can select the H264 video capture format when preparing video capture. </p> </context> <steps id="GUID-459D27D6-C0F7-5B94-8E34-C250AF3B6B77"><step id="GUID-4A02BBE6-CDAE-5FD1-8F05-30867627197B"><cmd/><stepxmp>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl::NewL()</apiname></xref> function to create an object that maps the exported call to an internal object of the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCameraVideoCaptureControl</apiname></xref> function. </stepxmp> </step> <step id="GUID-480FA9CE-DC0A-5586-A4C2-A2DEB1D7BCEE"><cmd/><info>Pass a handle to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCameraVideoCaptureControl</apiname></xref> function. This implementation creates a handle to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl</apiname></xref> object by the active <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> during the construction phase. </info> <info>The <codeph>CCameraVideoCaptureControl</codeph> object makes an internal call to the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera::CustomInterface()</apiname></xref> function of the active <codeph>CCamera</codeph> implementation. The <codeph>CustomInterface()</codeph> function passes a UID <codeph>KECamMCameraVideoCaptureControlUid</codeph> value for the <codeph>CCamera</codeph> implementation. </info> <info>The <codeph>CCamera</codeph> implementation creates the concrete implementation of the <codeph>MCameraVideoCaptureControl</codeph> function and passes back a handle to the <codeph>CCameraVideoCaptureControl</codeph> object. </info> </step> <step id="GUID-1F00FA5C-498E-505F-8A2B-B1DB2E5528C4"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCaptureVideoObserver</apiname></xref> function to notify when the video capture operations are ready. </info> </step> <step id="GUID-02A5B55C-7BF4-5740-9AA6-DE93C764F572"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl::GetVideoCaptureSupportInfoL()</apiname></xref> to identify which video capture modes are supported by the <codeph>CCamera</codeph> implementation. </info> </step> <step id="GUID-4618EA07-9B5A-509C-8196-4C545A2CA014"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>TPrepareVideoParameters::SetVideoCaptureType()</apiname></xref> function to set the desired video capture mode as the <codeph>EClientVideoCapture</codeph> or <codeph>EDirectVideoCapture</codeph> mode. </info> </step> <step id="GUID-F2EE097C-A418-51EB-9870-3E0C665B5D9D"><cmd/><info>Set the value of <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl::TPrepareVideoParameter::iFormat()</apiname></xref> to the <codeph>EFormatEncodedH264</codeph> value for the <codeph>CCamera</codeph> implementation. This <codeph>CCamera</codeph> implementation supports the H264 video encoding data format. </info> </step> <step id="GUID-84015E19-B259-59DD-B178-7B04EBAC7514"><cmd/><info>Prepare video capture by using the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl::PrepareVideoCapture()</apiname></xref> asynchronous function. The <codeph>PrepareVideoCapture()</codeph> function performs setup and allocation of memory before calling the <codeph>StartVideoCapture()</codeph> function, in order to keep minimum latency of the <codeph>PrepareVideoCapture()</codeph> function. </info> </step> <step id="GUID-BEE6A815-D252-5958-A7CA-CD481FB30A9C"><cmd/><info>Notify the Ecam client to complete the video capture preparation using the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>KUidECamEventVideoCaptureControlPrepareComplete</apiname></xref> event. </info> </step> <step id="GUID-629707E2-1139-5A1D-A366-4442440A77F2"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl::StartVideoCaptureL()</apiname></xref> function to start video capture. </info> </step> <step id="GUID-0AC88670-8F5A-53D6-88C8-4D3C741D7114"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera::CCameraVideoCaptureControl::PauseVideoCapture()</apiname></xref> function to pause the on-going video capture. </info> </step> <step id="GUID-072B351C-23E9-5BCD-8E25-371B24B6708F"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CcameraVideoCaptureControl::GetPrepareVideoParameterl()</apiname></xref> function to retrieve the current prepare video parameters. The current video capture mode is retrieved by the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>TPrepareVideoParameters::VideoCaptureMode()</apiname></xref> function. </info> </step> <step id="GUID-DFED1955-7B01-549E-8966-69E972DAACD2"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera::CCameraVideoCaptureControl::ResumeVideoCaptureL()</apiname></xref> function to resume the on-going video capture. </info> </step> <step id="GUID-4A7B8939-36FF-5484-9450-7914DA5E52E7"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera::CCameraVideoCaptureControl::StopVideoCapture()</apiname></xref> function to stop video capture. </info> </step> <step id="GUID-799FED22-0DBA-5625-BF8E-20B2FEF87D99"><cmd/><info>Call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraVideoCaptureControl::ReleaseVideoResource()</apiname></xref> function to release the video resource, which is allocated while performing the <codeph>PrepareVideoCapture()</codeph> function. </info> </step> <step id="GUID-941398B5-722A-57CA-95FF-220E3C6DECE6"><cmd/><info>If an error occurs while performing video capture, call the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCaptureVideoObserver::DirectVideoCaptureFailed()</apiname></xref> function. Any video capture operation is stopped. </info> </step> </steps> <example><title>Example</title> <p>The following example code snippet illustrates video capture using H264 encoding: </p> <codeblock id="GUID-20E7DB2D-56B3-5E64-8B8F-C91188BB93D7" xml:space="preserve">
+
+CCamera* camera = NULL;
+MCameraObserver2* observer2 = NULL;
+
+CCamera::CCameraVideoCaptureControl* videocapture = NULL;
+MCaptureVideoObserver* videoObserver = NULL;
+
+camera = CCamera::New2L(*observer2, 0, 0);
+
+videocapture  = CCamera::CCameraVideoCaptureControl::NewL(*camera, *videoObserver);
+
+CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters prepareVideoParameters;
+
+TInt supportedDVCType = -1;
+
+// To retrieve the supported video capture mode
+videocapture-&gt;GetVideoCaptureSupportInfoL(supportedDVCType); 
+ 
+// To set the video capture mode, if supported by the CCamera implementation
+prepareVideoParameters.SetVideoCaptureType(CCamera::CCameraVideoCaptureControl::EDirectVideoCapture);  
+
+// To set encoding for the H264 video data format
+prepareVideoParameters.iFormat = CCamera::EFormatEncodedH264; 
+
+// To set aspect ratio for the chosen H264 video format 
+prepareVideoParameters.iPixelAspectRatio = CCamera::CCameraAdvancedSettings::EEPixelAspect40To33;  
+
+videocapture-&gt;PrepareVideoCapture(prepareVideoParameters);
+
+videocapture-&gt;StartVideoCaptureL();
+
+videocapture-&gt;StopVideoCapture();
+    
+CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters retrievedVideoParam;
+videocapture-&gt;GetPrepareVideoParametersL(retrievedVideoParam);
+
+CCamera::CCameraVideoCaptureControl::TVideoCaptureType retrievedVideoCaptureType;
+retrievedVideoCaptureType = retrievedVideoParam.VideoCaptureType();
+
+
+</codeblock> </example> </taskbody><related-links><link href="GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629.dita"><linktext>Camera API</linktext> </link> <link href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita"><linktext>Accessing and Power Control of
+                Camera</linktext> </link> <link href="GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita"><linktext>Camera Preset Support</linktext> </link> <link href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita"><linktext>Capturing Image</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D049392D-2DA4-5E9C-8E3E-FEDF79BC5086.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D049392D-2DA4-5E9C-8E3E-FEDF79BC5086" xml:lang="en"><title>Task Scheduler</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The task scheduler component enables device creators and Symbian Developers to develop programs with task scheduling capabilities and option. This thereby allows phone users using the program to schedule tasks for time-based and condition-based execution. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e171521_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D099551B-6E99-5210-B44A-693012A29DD1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D099551B-6E99-5210-B44A-693012A29DD1"><title>Types of Storage for a Message Entry</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Message Server provides the following types of storage in the Message Store for each entry: </p> <ul><li id="GUID-7D143DE2-A1DF-572B-891D-885964743871"><p><xref href="GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita">Index</xref>: The index contains state and generic message header information for an entry. Each index entry (and so each item) is uniquely identified by an ID field and uses <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> to provide sufficient information for UI applications to display list views. </p> </li> <li id="GUID-A2FBDF11-68C1-5A93-9106-3813BF6BBA00"><p><xref href="GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita#GUID-8390D842-B8A3-5042-952D-73240DB30D6B/GUID-8E01ADD0-A706-54B2-8159-E65C33274C30">Dictionary file store</xref>: Each entry can have an associated direct file stream store that holds message body text and protocol-specific data. To provide storage of streams of data associated with UIDs <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> is used. </p> </li> <li id="GUID-3E9D637F-F704-5B6C-85C1-29F0EB0A7B50"><p>Binary files: This provides storage for attachments that are associated with the entry. </p> <p>Any entry can have binary files associated with it. These are stored in a directory, created by the Message Server that is unique to the entry. Before Symbian OS v9.0, clients used to read and write files directly into that directory. From v9.0 and onwards, clients use the API classes <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> and <xref href="GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F.dita"><apiname>CMsvAttachment</apiname></xref> to manage attachments. </p> </li> <li id="GUID-90C3A223-1BD5-5966-A42E-6AE65F8C6389"><p><xref href="GUID-7BB6C3A0-7FCF-5614-9940-B3630E5FC114.dita">Removable storage device</xref>: An external storage device, such as memory card, that is used to store messages. </p> </li> </ul> <p> <b>Note:</b> The index entry is always present in the message store but dictionary file stores and attachment directories are only used when required. </p> <section><title>Storage format</title> <p>The following table summarises the format of a message entry. </p> <table id="GUID-D74586D5-7389-53D4-841C-1616B9670147"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Type</b>  </p> </entry> <entry><p> <b>Storage</b>  </p> </entry> </row> <row><entry><p>Generic header and message state information </p> </entry> <entry><p>Index entry </p> </entry> </row> <row><entry><p>MTM-specific header information </p> </entry> <entry><p>MTM-specific stream in an associated Message Store </p> </entry> </row> <row><entry><p>Message body </p> </entry> <entry><p>Default rich text object stream in the Message Store. Note that this can be empty if the message body contains no text. </p> </entry> </row> <row><entry><p>Attachments </p> </entry> <entry><p>Attachment files are stored in the Message Store, or can also be specified as links to files stored elsewhere on disk. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Storage abstractions</title> <p>The abstractions through which applications access the various types of storage are key to Messaging Middleware. They are: </p> <ul><li id="GUID-22567588-A274-529C-A266-FFC9AD0E9D3E"><p> <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> is the highest level abstraction. It encapsulates actions to access, manipulate, create, delete, and move entries. </p> </li> <li id="GUID-B5F0AB9B-91D7-5D51-BF97-793574B54853"><p> <xref href="GUID-681B56F3-B3A2-3147-B25A-FD69451F4A1D.dita"><apiname>CMsvServerEntry</apiname></xref> is similar to <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref>, but used only by server-side MTMs. </p> </li> <li id="GUID-43324599-F297-5E9F-AC2A-687FDBADC422"><p> <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> encapsulates an index entry. </p> </li> <li id="GUID-97940064-D4EE-5F33-A810-6589D5BAFF60"><p> <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> encapsulates an entry’s Message Store. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90" xml:lang="en"><title>How to
+form links</title><shortdesc>This document describes how to use links within a doubly linked
+list.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To form a doubly linked list of <codeph>CMyClass</codeph> objects, include
+the link object <codeph>TDblQueLink</codeph> as a component of <codeph>CMyClass</codeph>:</p>
+<codeblock id="GUID-E595B603-FC0D-5AF3-9228-7D40C3A08271" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TDblQueLink iDlink;
+    ...
+    };</codeblock>
+<fig id="GUID-30C9DE23-1805-594C-9F7F-BD4A161DE59A">
+<image href="GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e188860_href.png" placement="inline"/>
+</fig>
+<p>Although any kind of object can be an element of a linked list, most lists
+consist of elements which are all of the same type.</p>
+<p>An object can participate in more than one list. For example, to allow <codeph>CMyClass</codeph> objects
+to participate in two doubly linked lists, include two separate <codeph>TDblQueLink</codeph> objects
+as components of <codeph>CMyClass</codeph>:</p>
+<codeblock id="GUID-2027BF61-9834-5915-9911-3420CAC7061A" xml:space="preserve">class CMyClass : public CBase
+    {
+    ...
+    TDblQueLink iDlink1;
+    ...
+    TDblQueLink iDlink2;
+    };</codeblock>
+<fig id="GUID-DC3DDF09-2F30-5704-ACB0-378622DDDD88">
+<image href="GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e188883_href.png" placement="inline"/>
+</fig>
+<p>Elements can also be objects constructed from a variety of classes, all
+ultimately derived from the same base class, where that base class includes
+the link object as a component. For example, if <codeph>CBc</codeph> is a
+base class for <codeph>CD1</codeph> which, in turn, is a base class for <codeph>CD2</codeph>,
+then the elements of the list can consist of a mix of <codeph>CBc</codeph> or <codeph>CDc1</codeph> or <codeph>CDc2</codeph> objects.</p>
+<codeblock id="GUID-C274DD90-E21A-5BAD-8094-79CE23CDA1B9" xml:space="preserve">class CBc : public CBase
+    {
+    ...
+    TDblQueLink iDlink;
+    ...
+    };</codeblock>
+<codeblock id="GUID-6BAAB6AA-421F-51CE-8650-2FEDA3EB0A83" xml:space="preserve">class CDc1 : public CBclass
+    {
+    ...
+    }
+</codeblock>
+<codeblock id="GUID-1C1A9078-0F8A-5E24-82CF-BD0C199B4050" xml:space="preserve">class CDc2 : public CDc1
+    {
+    ...
+    }
+</codeblock>
+<fig id="GUID-F8769477-6B6C-5531-9675-AC66FE6B6E3D">
+<image href="GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e188918_href.png" placement="inline"/>
+</fig>
+<p>New link elements are inserted into an existing list using either <codeph>TDblQueLink::Enque()</codeph> or <codeph>TDblQueLink::AddBefore()</codeph> function. Note that <codeph>AddBefore()</codeph> is not available in v5.
+These are prototyped as:</p>
+<codeblock id="GUID-DDD3FDA3-4635-5AFE-9C17-994E5E4D1C59" xml:space="preserve">void Enque(TDblQueLinkBase* aLink);
+</codeblock>
+<codeblock id="GUID-F3E72D69-0180-5BAD-A2C6-E31704820AAF" xml:space="preserve">void AddBefore(TDblQueLinkBase* aLink);</codeblock>
+<p>Calling <codeph>Enque()</codeph> on an element means that this element
+is added to the list so that its position follows the element <i>aLink</i>,
+as the following figure shows.</p>
+<fig id="GUID-F46E770B-8BDC-5E61-9E28-043FDAA3B193">
+<image href="GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e188950_href.png" placement="inline"/>
+</fig>
+<p>Calling <codeph>AddBefore()</codeph> on an element means that this element
+is added to the list so that its position precedes the element <i>aLink</i>,
+as the following figure shows.</p>
+<fig id="GUID-0E6C9ADF-0182-52CC-A3D1-AE83F540E42B">
+<image href="GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e188964_href.png" placement="inline"/>
+</fig>
+<p>Note that new elements cannot be inserted at the beginning or end of a
+list using these functions. The <codeph>AddFirst()</codeph> and <codeph>AddLast()</codeph> members
+of the header class <codeph>TDblQue&lt;class         T&gt;</codeph> must be used
+instead.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923"><title>ARMV6 build targets</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <codeph>ARMV6</codeph> build target builds to the <codeph>ARMV6</codeph> architecture. Like the ARMV5 target, the target requires the ARM's RealView Compilation Tools (RVCT) v2.2 build 616 from Symbian OS v9.4 onwards. </p> <section><title>Building binaries for ARMV6</title> <p>To build for <codeph>ARMV6</codeph> with <filepath>abld</filepath>, use: </p> <p><userinput>abld build ARMV6 | ARMV6_ABIv2 [udeb | urel]</userinput> </p> <p>Binaries are generated in the <filepath>udeb</filepath> and/or <filepath>urel</filepath> sub-directories of the <filepath>epoc32\release\ARMV6\</filepath> directory for ABI v1 and <filepath>epoc32\release\ARMV6_ABIv2\</filepath> directory for ABI v2. </p> <p>As per the conventional approach mentioned above, the build targets <codeph>ARMV6</codeph> and <codeph>ARMV6_ABIv2</codeph> are used to build binaries conforming to <codeph>ARMV6</codeph> ABI v1 and ABI v2 respectively. From Symbian OS v9.4 onwards, the behaviour of these native build targets (<codeph>ARMV6</codeph> and <codeph>ARMV6_ABIv2</codeph>) has changed. The build target <codeph>ARMV6</codeph> is used to build binaries conforming to ABI v2 instead of ABI v1, and <codeph>ARMV6_ABIv1</codeph> is used to build binaries conforming to ABI v1. Also, the release directories have changed to <filepath>epoc32\release\ARMV6\</filepath> for ABI v2 binaries and <filepath>epoc32\release\ARMV6_ABIv1\</filepath> for ABI v1 binaries. </p> <p>You can switch back to the old approach, where the targets <codeph>ARMV6</codeph> and <codeph>ARMV6_ABIv2</codeph> will build binaries conforming to ABI v1 and ABI v2 respectively. For more details on this, refer to <xref href="GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita">Switching between ABI modes</xref>. </p> <p>Library export (<filepath>.lib</filepath> or <filepath>.dso</filepath>) files are generated in the <filepath>epoc32\release\ARMV5\lib\</filepath> directory. This directory is used, as the library file format has not changed since <codeph>ARMV5</codeph>. </p> <p> <b>Note:</b> Code is not built for <codeph>ARMV6</codeph> target by default. It has to be explicitly specified on the command line or with a <codeph>prj_platforms</codeph> statement in the component's <filepath>BLD.INF</filepath> file. </p> </section> <section><title>Building binaries for ARMV6t2</title> <p>To build binaries for <codeph>ARMV6t2</codeph> with <filepath>abld</filepath>, use: </p> <p><userinput>abld build ARMV6t2 [udeb | urel]</userinput> </p> <p>The command builds binaries conforming to ABIv2 for ARMV6 architecture supporting Thumb-2 instruction set. </p> </section> <section><title>IDE (CodeWarrior) support for ARMV6</title> <p>To build for <codeph>ARMV6</codeph> or <codeph>ARMV6t2</codeph> from the CodeWarrior IDE, specify <codeph>ARMV6</codeph> or <codeph>ARMV6t2</codeph> as the target in the Platform Selection field, when importing a project from an <filepath>.mmp</filepath> file. The binaries can then be built by setting the target to <codeph>ARMV6</codeph> or <codeph>ARMV6t2</codeph> for <codeph>UREL</codeph> or <codeph>UDEB</codeph>. </p> <p>From the command line, to generate a CodeWarrior XML project file for <codeph>ARMV6</codeph> or <codeph>ARMV6t2</codeph>, use the following command: </p> <p><userinput>makmake &lt;project&gt;.mmp CW_IDE:ARMV6 | ARMV6t2</userinput> </p> <p>and then import the generated XML file from the IDE. </p> <p> <b>Note</b>: The binaries for <codeph>ARMV6</codeph> or <codeph>ARMV6t2</codeph> target are not created by default. You must explicitly specify these targets either on the command line using <filepath>makmake</filepath> or in the Platform Selection field. </p> </section> <section><title>Customisation for ARMV6</title> <p>The build system provides the ARMV6 target by providing a build specialization file (BSF) in the <filepath>epoc32\tools\</filepath> directory. For ABI v1 builds this is <filepath>ARMV6.BSF</filepath>; for ABI v2 builds, <filepath>ARMV6_ABIv2.bsf</filepath>. From Symbian OS v9.4 onwards, for ABI v1 builds the BSF file is <filepath>ARMV6_ABIv1.bsf</filepath> and for ABI v2 builds it is <filepath>ARMV6.bsf</filepath>. For more information about BSF mechanism, refer to <xref href="GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita">ARMV5 build customisation</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0C84E1D-A625-4F79-8515-399B8153727B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D0C84E1D-A625-4F79-8515-399B8153727B" xml:lang="en"><title>What's
+New in Graphics in Symbian^3</title><shortdesc>This section describes the changes introduced in the Graphics package
+in Symbian^3.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-B341632C-47E7-4A0E-B3E5-2B69FD0AB09D"><title>ScreenPlay</title><p>ScreenPlay
+is a new graphics architecture which enables device creators to take advantage
+of improved software performance, hardware acceleration and third party graphics
+engines. For more information, see:</p><ul>
+<li><xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">The ScreenPlay
+Graphics Architecture</xref></li>
+<li><xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">The NonScreenPlay
+Graphics Architecture</xref></li>
+
+<li><xref href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita">Graphics Composition</xref></li>
+<li><xref href="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita">Graphics Hardware
+Acceleration</xref></li>
+<li><xref href="GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita">Dynamic Resolution
+Switching</xref></li>
+
+
+<li><xref href="GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita">Advanced Pointer
+Overview</xref></li>
+<li><xref href="GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita">External Surfaces
+Overview</xref></li>
+
+
+</ul>       </section>
+<section id="GUID-934FEF09-12B2-418D-B6B4-1CCD41FFD27A"><title>Khronos APIs</title><p>For
+information about the supported Khronos APIs, see:</p><ul>
+<li><xref href="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita">Khronos API Support</xref></li>
+<li><xref href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita">OpenVG Collection</xref></li>
+<li><xref href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita">OpenGLES Collection</xref></li>
+<li><xref href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita">EGL Collection</xref></li>
+
+</ul></section>
+
+<section id="GUID-B7EEA185-4445-4875-A9B6-18EF2264FD9C"><title>Interface breaks
+and deprecated functionality</title><p>The following functionality is deprecated in Symbian^3:</p><ul>
+
+
+<li><p>Creating transparent windows using a mask and <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref> is
+deprecated. See <xref href="GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A.dita">Transparent
+Windows</xref> for more information.</p></li>
+<li><p>Backed-up windows are deprecated. See <xref href="GUID-08A6A034-5609-58B0-8EA7-943B2A937B40.dita">Displayable
+Windows</xref> for more information. </p></li>
+</ul></section>
+<section id="GUID-9B1C753E-E502-4578-A5A7-0C8CD2739C5C"><title>Guide documentation
+changes</title><p>The following documentation has been added to the Windowing collection:</p><ul>
+<li><xref href="GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita">Window Server Component
+Overview</xref></li>
+<li><xref href="GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita">Display Control
+and Mapping in the Window Server Client</xref></li>
+<li><xref href="GUID-02BD38E7-A579-5BD5-9444-4E7C14C7809A.dita">Transparent Windows</xref></li>
+<li><xref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita">Redraw Drawing</xref></li>
+<li><xref href="GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita">Advanced Pointers</xref></li>
+<li><xref href="GUID-1C025957-258C-54C0-94A5-AD60C14E6D76.dita">External Surfaces</xref></li>
+
+
+
+<li><xref href="GUID-E29CAFA8-523D-57D2-AC1B-D6D01741550B.dita">Window Server Internals
+Concepts</xref></li>
+<li><xref href="GUID-85E1E45B-DD05-5B7D-84E7-9911E0A3E3CC.dita">The wsini.ini File</xref></li>
+
+</ul><p>The following documentation has been added to the OpenGLES collection:</p><ul>
+<li><p><xref href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita">OpenGLES Collection</xref></p></li>
+</ul><p>The following documentation has been added to the OpenVG collection:</p><ul>
+<li><p><xref href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita">OpenVG Collection</xref></p></li>
+</ul><p>The following documentation has been added to the EGL collection:</p><ul>
+<li><p><xref href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita">EGL Collection</xref></p></li>
+</ul><p>The following documentation has been updated:</p><ul>
+<li><xref href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita">Graphics and Drawing</xref></li>
+<li><xref href="GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita">The Font and Bitmap
+Server Overview</xref></li>
+</ul></section>
+</conbody><related-links>
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0CD890F-36DB-5265-B2C1-8D632EAF736B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-D0CD890F-36DB-5265-B2C1-8D632EAF736B"><title>Retrieving Audio Record Samples </title><shortdesc>This tutorial describes how to retrieve the number of samples used while recording audio. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps-unordered id="GUID-02BD7F5D-4821-586E-AEFF-3183339B55A7"><step id="GUID-8021BB75-B2D8-5F98-829B-BAEA79AB5B15"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-84ABD4C2-95A3-3830-9043-7E066C1F26A0"><apiname>CMMFDevSound::SamplesRecorded()</apiname></xref> query function to find out the number of samples that have been recorded. </info> <info>This returns the number of samples recorded since the last <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-ECC978D1-B45A-35E4-9A40-F285152023FE"><apiname>CMMFDevSound::RecordInitL()</apiname></xref> call. </info> <info> Note: The <codeph>CMMFDevSound::SamplesRecorded()</codeph> query returns a zero value until the start of the recording cycle. The count of samples recorded is returned in the recording and paused states. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita"><linktext>Starting Audio
+                Record</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47" xml:lang="en"><title>Client/Server
+Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-CA831E24-1BE6-4D18-889A-CD78364828C9"><title>Purpose</title> <p>Provides the Symbian platform client/server
+framework, by which a program can offer services to multiple other programs.
+Servers also handle resources on behalf of multiple clients.</p> <p>All Symbian
+platform developers should have a general understanding of this API in order
+to understand the design of many Symbian platform system APIs. In specialized
+circumstances, developers may also create their own server programs.</p> </section>
+<section id="GUID-539EF180-E0B7-4931-B1DC-BA7801D54F9F"><title>Architectural relationships</title> <p>Many important Symbian
+platform system APIs use the client/server framework to provide services to
+client programs: for example, the Windows Server, File Server, and Messaging.
+In some cases, such APIs provide extensive client-side classes that hide the
+direct use of the client/server interface from the client program.</p> </section>
+<section id="GUID-8163FC8D-F044-46D5-8806-13C8F22677A1"><title>Description</title> <p>The API has four key concepts: server
+(<codeph>CServer2</codeph>), session (<codeph>CSession2</codeph> and <codeph>RSessionBase</codeph>),
+sub-session (<codeph>RSubSessionBase</codeph>), and message (<codeph>RMessage2</codeph>,
+and <codeph>RMessagePtr2</codeph>). </p> <p><b>General
+properties</b> </p> <p>A server program offers services to other processes
+through a client interface API that it defines. Clients and servers use a
+message passing protocol to communicate.</p> <p>Client/server is usually chosen,
+rather than a conventional shared library, to provide services when one or
+more of the following is required:</p> <ul>
+<li id="GUID-7083F154-725B-5133-8391-41BBA67341E9"><p>management of shared
+system resource</p> </li>
+<li id="GUID-5C655C17-036C-50CD-BEE6-45C1A261FEC3"><p>asynchronous services</p> </li>
+<li id="GUID-AD3A0E0E-A4EB-5F50-8F9E-A906591839A6"><p>the protection offered
+by running in a separate process from clients.</p> </li>
+</ul> <p>A client/server implementation supplies a server program executable,
+and a <filepath>.DLL</filepath> containing the client-side interface.</p> <p><b>Server</b> </p> <p>The server is the central class of any server program.
+It is responsible for handling requests by clients to establish a connection
+to the server. </p> <p>The base server interface is provided by <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2</apiname></xref>.</p> <p><b>Session</b> </p> <p>The session is the channel of communication between
+a client and a server. </p> <p>The base client-side session interface is provided
+by <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase</apiname></xref>. An implementation derives from this to
+define the functions that it wants to expose to clients.</p> <p>The corresponding
+server-side session base classes is <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref>. A session
+can be shared between different client threads if the server marks the session
+as sharable. An implementation defines in a derived class how client messages
+should be handled.</p> <p><b>Sub-session</b> </p> <p>The sub-session presents an efficient refinement of a session where a
+client wants multiple simultaneous uses of a server. For example, with the
+File Server, each opened file is handled through a separate sub-session.</p> <p>The
+base client-side sub-session interface is provided by <xref href="GUID-1BBE1448-1DF8-33C4-BF9E-5A5F427AEE35.dita"><apiname>RSubSessionBase</apiname></xref>.
+An implementation derives from this to define the functions that it wants
+to expose to clients.</p> <p>A server implements a corresponding sub-session
+class based on <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref>, <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref> and <xref href="GUID-70824EE4-9E01-3AC0-9318-4B521A1FDD5E.dita"><apiname>CObjectIx</apiname></xref>,
+the Reference Counting Objects API.</p> <p><b>Message</b> </p> <p>The message is the information passed between client and server.
+It consists of a code that identifies the type of request that the client
+is making, and up to four 32-bit data arguments together with information
+about each argument's type, width and accessibility. It is also possible to
+pass just the code, with no arguments.</p> <p>Clients do not use messages
+directly; they use a <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object to package the message
+information that is to be sent to the server.</p> <p>Server-side sessions
+and subsessions access this information through an <xref href="GUID-D7D422D3-65E5-378B-8F52-6485BC5603A0.dita"><apiname>RMessage2</apiname></xref> object. </p> </section>
+<section id="GUID-74655E18-CC4C-4432-A8F3-BADFCA5CB7D2"><title>See also</title> <p><xref href="GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita">Package
+Buffers Overview</xref> </p> <p><xref href="GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita">Reference
+Counting Objects Overview</xref> </p> <p><xref href="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita">Threads
+And Processes Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3" xml:lang="en"><title>Creating
+stylus pop-up menu</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Construct the menu using the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#9dda70f72d42d0877cbbf9ca299649af" format="application/java-archive"><codeph>NewL()</codeph></xref>in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref>.</p>
+<note> <p>The last parameter in the constructor is a pointer to the preview
+pop-up from which the stylus pop-up menu is launched. If you are not constructing
+a pop-up menu for a preview pop-up, set the parameter as <codeph>NULL</codeph>.</p></note>
+<p>To construct the menu from a resource, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#75cd95c35a6ed4734b93713596bb51d5" format="application/java-archive"><codeph>CAknStylusPopUpMenu::ConstructFromResourceL()</codeph></xref>.</p>
+<p>The following example illustrates a stylus pop-up menu opened in the location
+(not a preview pop-up) where the user taps with the stylus as well as the
+resource that defines the menu items:</p>
+<note><p>The menu is constructed only once: when <codeph>HandlePointerEventL</codeph> runs
+for the first time. Later the already constructed menu is shown again.</p></note>
+<codeblock xml:space="preserve">void CMyAppView::HandlePointerEventL
+    ( const TPointerEvent&amp; aPointerEvent )
+    {
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+        {
+        if ( !iMenu )
+            {
+            iMenu = CAknStylusPopUpMenu::NewL( 
+                    iMenuObserver, 
+                    aPointerEvent.iParentPosition, 
+                    NULL );
+            TInt resourceReaderId = 0;
+            resourceReaderId = R_MYAPP_STYLUS_MENU;
+            TResourceReader reader;
+            iCoeEnv-&gt;CreateResourceReaderLC( 
+                    reader, resourceReaderId );
+            iMenu-&gt;ConstructFromResourceL( reader );
+            CleanupStack::PopAndDestroy(); // reader
+            }
+        iMenu-&gt;SetPosition( aPointerEvent.iParentPosition );
+        iMenu-&gt;ShowMenu();
+        }
+    // Forward event to base class too.
+    CCoeControl::HandlePointerEventL( aPointerEvent );
+    }
+
+RESOURCE STYLUS_POPUP_MENU r_myapp_stylus_menu
+    {
+    items =
+        {
+        STYLUS_POPUP_MENU_ITEM 
+            {
+            txt = "Stylus Popup Menu Item 1"; 
+            command = EMyAppMenuItemCmd1;
+            },
+        STYLUS_POPUP_MENU_ITEM 
+            {
+            txt = "Stylus Popup Menu Item 2"; 
+            command = EMyAppMenuItemCmd2; 
+            },
+        STYLUS_POPUP_MENU_ITEM 
+            { 
+            txt = "Stylus Popup Menu Item 3"; 
+            command = EMyAppMenuItemCmd3; 
+            }
+        };
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D0FE1B14-706E-4E4D-902E-AB2B25F02464_d0e53021_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D1303B75-607C-5C75-B8DB-39571E182C7F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D1303B75-607C-5C75-B8DB-39571E182C7F" xml:lang="en"><title>Disabling
+the Bearer Mobility</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to disable the bearer mobility for an email
+account. </p>
+<section><title>Procedure</title> <ol id="GUID-F7FEEDDB-DD81-5140-929D-A8E3ED70CFAD">
+<li id="GUID-37C2B2CD-A2F8-5180-9698-0263B48C5E66"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-00338EB2-D135-5482-8E5B-EEFF98F46131"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-FD3D23A3-0389-51CC-BE1F-7E1974E64902"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class. </p> <p>Where, &lt;protocol&gt;
+is either Imap4, Pop3, or Smtp. </p> </li>
+<li id="GUID-729D8E33-7B9A-50CF-AF06-356B164CBF92"><p>Populate the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+and the <codeph>CIm&lt;protocol&gt;Settings</codeph> class from central repository
+(CenRep) using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Load&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+<li id="GUID-E84DE5DC-83D9-55CD-AEF6-FB5117A9C4B6"><p>Use the <codeph>CIm&lt;protocol&gt;Settings::</codeph> <xref href="GUID-7E4A95AA-1614-3058-B08C-B81878C37489.dita"><apiname>SetBearerMobility</apiname></xref> function
+to set the <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> parameter to <codeph>EFalse</codeph>. </p> </li>
+<li id="GUID-73D82478-9A4D-5892-9558-BD357155DB00"><p>Store the updated settings
+classes to CenRep using the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Save&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+</ol> <note> All instances of &lt;protocol&gt; in the preceding
+steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>, or<codeph> Smtp</codeph>. </note></section>
+<section><title>See also</title> <p><xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D131F72E-AB21-443E-8661-5F6A509323BC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D131F72E-AB21-443E-8661-5F6A509323BC_d0e47448_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D14CD452-BFCE-5EBA-B73B-61AA045D23E4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D14CD452-BFCE-5EBA-B73B-61AA045D23E4"><title>Log Engine Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes the key concepts of Log Engine. </p> <section><title>Purpose</title> <p>Used to record events of interest to the user, of which they may not be immediately aware, or of high importance as costs are incurred, such as telephone calls. These events can be retrieved by a viewer application and displayed to the user. </p> </section> <section><title>Architectural relationships</title> <p>The Log Engine is split into a wrapper (a stub interface) that is present on all UI variants, and an actual logging DLL that may or may not be present. On UI variants on which the actual logging engine is not present, calls to the wrapper will have no effect. Programs written for multiple UI variants should use the wrapper only. Programs for a particular UI variant on which the log engine is present can use it directly. </p> </section> <section><title>Description</title> <p>The API has five key concepts: log engine wrapper, log client, event, view, and filter. </p> <p><b>Log engine wrapper</b> </p> <p>The log engine wrapper provides simple interfaces to record events, and is present on all UI variants. The wrapper interfaces are <xref href="GUID-146D719E-BDD6-3F20-80B1-EDE09081A6EA.dita"><apiname>CLogWrapper</apiname></xref> and <xref href="GUID-4A7D312F-A8C6-3663-8455-13FA73F1CFB5.dita"><apiname>CLogBase</apiname></xref>. </p> <p><b>Log client</b> </p> <p>The log client is the main direct interface on the log engine. It is used to add, delete, and change log events, and allows log administration. It is also used to create filtered views of events. </p> <p>The log client interface is <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref>. </p> <p><b>Event</b> </p> <p>A log event is an entry in the log. Events have a fixed number of data fields, though some fields do not apply to all events. </p> <p>The event interface is <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref>. </p> <p><b>View</b> </p> <p>A view allows a filtered list of events to be accessed. Views are provided for the main event log (<codeph>CLogViewEvent</codeph>) and for recent events only (<xref href="GUID-F40F9556-F223-36A5-9812-6EF6FF3F5156.dita"><apiname>CLogViewRecent</apiname></xref>). </p> <p><b>Filter </b> </p> <p>A filter specifies the type of events that appear in a view. The filter interface is <xref href="GUID-99144BA6-F79A-3D3C-B1D3-272B3723C42C.dita"><apiname>CLogFilter</apiname></xref>. </p> </section> </conbody><related-links><link href="GUID-B0D76734-1DB7-5465-91AE-BB3521599A75.dita"><linktext>How To Use the Log
+                Engine</linktext> </link> <link href="GUID-F3770B99-5228-5D29-8CA6-71028A327714.dita"><linktext> Log Engine Using Central Repository</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e334574_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D157C4D3-FC2F-47DD-BD33-F8BA6156833D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D157C4D3-FC2F-47DD-BD33-F8BA6156833D" xml:lang="en"><title>Sending
+tactile feedback pulse</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The Vibra API clients can request the device to send tactile
+vibration pulse using <codeph>PulseVibraL()</codeph> method. The <codeph>PulseVibraL()</codeph> will
+be executed only if there is an active tactile feedback settings in the user
+profile. The clients can check the current settings by calling the <codeph>VibraFeedbackSettings()</codeph> function.
+The overloaded <codeph>PulseVibraL()</codeph> methods allows the client to
+:</p><ul>
+<li><p>Use the default intensity and duration.</p></li>
+<li><p>Use default intensity and specify the duration using <codeph>aDuration</codeph> parameter.</p></li>
+<li><p>Specify both intensity and duration using the parameters <codeph>aIntensity</codeph> and <codeph>aDuration</codeph>.</p></li>
+</ul><p><codeph>SetFeedbackObserver()</codeph> is used to register the clients
+to receive notification of any changes to the tactile feedback settings in
+the active user profile. <codeph>MHWRMVibraFeedbackObserver</codeph> provides
+a pure virtual function <codeph>VibraFeedbackModeChanged()</codeph> which
+is called to notify the clients to notify of any changes to the user profile
+settings.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D158746C-6043-4ED4-833B-85C82831A66B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D158746C-6043-4ED4-833B-85C82831A66B" xml:lang="en"><title>Retrieving
+Alarm Information</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>You can retrieve information about alarms by using <codeph>RASCliSession::GetAlarmDetails()</codeph> as
+shown in the following code snippet:</p><codeblock xml:space="preserve">TASShdAlarm alarmDetails;
+TInt err = iAlarmServerSession.GetAlarmDetails( iAlarmId, alarmDetails );</codeblock><p>This
+method takes the object <codeph>TASShdAlarm</codeph>, which encapsulates all
+the information relating to an alarm. Clients need to know the ID of the alarm
+about which the information is required.</p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193"><title>ARM/THUMB overrides</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The ARM5 architecture supports a 32-bit instruction set (known simply as ARM) and a 16-bit instruction set called THUMB. Code compiled to one set can interoperate with the other. The Symbian platform builds tools apply the following policy when building projects: kernel-side code is built for ARM, while other code (user-side) is built for THUMB. There are a number of ways to override this policy to build user-side code also for ARM: </p> <ul><li id="GUID-EAEE9EAC-8018-53CD-A443-5315F0A767E5"><p> <i>MMP file</i>: to specify that a project should always be built as ARM, use the following keyword in the mmp file: </p> <codeblock id="GUID-804E1BB0-17DA-5BE9-8ACE-B090D9E28415" xml:space="preserve">ALWAYS_BUILD_AS_ARM</codeblock> </li> <li id="GUID-DD696660-FA24-542A-9641-D8C64DBC6E8F"><p> <i>BLD.INF file</i>: you can also specify that a project should always be built as ARM by adding a qualifier, <codeph>BUILD_AS_ARM</codeph>, to MMP file statements in a <filepath>BLD.INF</filepath> file. For example: </p> <codeblock id="GUID-A7EA562F-4A21-5929-8E53-5B7C27F68C9F" xml:space="preserve">PRJ_MMPFILES
+..\group\commdb.mmp BUILD_AS_ARM
+..\group\ced.mmp</codeblock> <p>means that <filepath>commdb</filepath> is built in ARM and <filepath>ced</filepath> in THUMB. </p> </li> <li id="GUID-BC361D68-52EF-5C06-95BC-760264AD522E"><p> <i>makmake</i>: the <filepath>makmake</filepath> tool accepts an option <codeph>-ARM</codeph> that has the same effect as if <codeph>ALWAYS_BUILD_AS_ARM</codeph> were supplied in the MMP file. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D1ADAF9A-62BD-5B68-980F-524FF440FEE1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D1ADAF9A-62BD-5B68-980F-524FF440FEE1" xml:lang="en"><title>Using
+CArrayFixFlat&lt;TAny&gt;</title><shortdesc>The <codeph>CArrayFixFlat&lt;Tany&gt;</codeph> class is useful for
+constructing an array of fixed length buffers, where the length is decided
+at run time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-2AD32A65-729E-4C8C-B012-7CF5FC442EFE"><title>Arrays whose type is not known until class instantiation</title> <p>The <codeph>CArrayFixFlat&lt;Tany&gt;</codeph> class
+is useful for constructing an array of fixed length buffers, where the length
+is decided at run time. It is also useful as a data member of a base class
+in a thin template class/base class pair where the type of the array element
+is not known until the owning thin template class is instantiated.</p> <p>For
+example, to implement a stack of fixed length objects of type <codeph>T</codeph>.</p> <codeblock id="GUID-86CBEBF4-FFE4-565B-A6A3-1BABE564205E" xml:space="preserve">class CExampleBase : public CBase
+ {
+public :
+ ...
+protected :
+ ...
+ void  PushL(const TAny* aPtr);
+ TAny* Pop();
+private :
+ CArrayFixFlat&lt;TAny&gt; iArray;
+ }</codeblock> <codeblock id="GUID-8A4100C4-280F-5BDC-9C44-908C58C4EA92" xml:space="preserve">template &lt;class T&gt;
+class CExample : public CExampleBase
+ {
+public :
+ ...
+ inline void PushL(const T* aPtr);
+ inline T*   Pop();
+ }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D1BCE2D9-04B5-5C39-A50B-C5BBDAAFEFED.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D1BCE2D9-04B5-5C39-A50B-C5BBDAAFEFED"><title>Socket Binding</title><shortdesc>This topic describes the concept of socket binding. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Socket binding is process of binding a socket to a network address within the system. When a socket is bound the server can accept client connections. There are two types of socket binding, explicit and implicit socket binding which are explained in the following sections. </p> <section><title>Explicit socket binding</title> <p>Explicit Socket binding can do the following: </p> <ul><li id="GUID-F3E8228C-FDED-5C9C-9B50-7E8F95F9ED9A"><p>bind an open a socket to a specific <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> </li> <li id="GUID-EC175BF9-9A25-576E-BE08-A72B6DA8DDDE"><p>bind an open implicit socket to a specific network interface IP address. </p> </li> </ul> <p>An explicitly bound socket accepts data only from the interface the explicit socket is bound to. When a socket is explicitly bound, the outgoing data goes to the specified bearer and the socket receives data only from that bearer. Explicit socket binding provides secure data transfer to a specific bearer. Secure data transfer is done to monitor the data transfer, or when the application is bearer-specific. </p> <p>Use explicit binding: </p> <ul><li id="GUID-3E804F0C-D85C-5126-8B90-B7CB4E4F28D4"><p>If an application opens a socket to a specific IP address of the network interface and accepts data only from the interface the socket is bound to. </p> <p>For example, if an application opens a socket for the TCP protocol and explicitly binds it to the WiFi interface, then the socket accepts data only from the WiFi interface. </p> </li> </ul> <p> <b>Note</b>: TCP/IP uses this type of binding if the destination IP address matches the local address. </p> </section> <section><title>Implicit socket binding</title> <p>Implicit socket binding uses a default bearer to open a socket if the network interface is not specified. In implicit socket binding, <xref href="GUID-406DB549-1102-3DE1-8D7F-56F2394D8F9D.dita"><apiname>Esock</apiname></xref> uses the default <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> or creates an <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. When a socket is implicitly bound, the outgoing data goes to the specified port of the default bearer. </p> </section> <section><title>How to Select between Explicit and Implicit Binding</title> <p>Explicit sockets accept data from the specified connection the socket is bound to. Implicit sockets accept data from any connection. A user can select between explicit or implicit socket binding in the following ways: </p> <ul><li id="GUID-AAD576B6-D5C0-5D1A-A0CA-2864EED5551C"><p>If a user needs secure transfer of data over a specified connection, the user must use explicit socket binding. </p> </li> <li id="GUID-16B55204-6F16-5233-BE60-4F19E45FC56B"><p>If a user need not know how the data is transferred or where the socket connects to, then the user can use implicit socket binding. </p> </li> </ul> </section> <example><title>Explicit and Implicit socket binding example</title> <p>If WiFi and Ethernet bearers are started and TCP protocol socket is opened and explicitly bound to the WiFi interface then, the socket is set to accept a TCP connection. A remote host trying to connect over Ethernet using TCP fails to connect as the socket is explicitly bound to WiFi. </p> <p>In implicit socket binding, if an application opens an implicit socket using the default interface connection and does not bind to any port, then the socket receives data from all the interfaces. A chat application is an example of implicit socket binding where the network interface is not important and messages can come from GPRS or WiFi. </p> </example> </conbody><related-links><link href="GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita"><linktext>How to Create an Explicitly Bound
+                Socket</linktext> </link> <link href="GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita"><linktext>Creating an Implicitly Bound
+                Socket</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e180248_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5" xml:lang="en"><title>Video
+Renderer Overview</title><shortdesc>This topic describes the Video Renderer component and is aimed
+at video controller and video adaptation developers who want to take advantage
+of rendering to graphics surfaces. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The Video Renderer renders video to a graphics
+surface. The Video Renderer can be used by video decoders, video post-processors
+and video controllers. It can also be used to implement the <xref href="GUID-FC735256-6CB5-5EED-8E7D-42EFA039E6FD.dita">ECam
+viewfinder</xref> using a graphics surface. </p> <p>The Video Renderer has
+two modes: timed and non-timed. In timed mode, the Video Renderer renders
+a frame at a specific time. In non-timed mode, the Video Renderer renders
+a frame immediately. </p> <p>On the Symbian platform, <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> (also
+known as the New Graphics Architecture or NGA) enables rendering to a graphics
+surface. The Video Renderer can only be used in conjunction with ScreenPlay.
+The Video Renderer does not contain any video or graphics processing software.
+All operations that are needed to display video content on the screen are
+handled by the <xref href="GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095.dita">Graphics
+Composition Components</xref>. </p> <p>The Video Renderer component is classified
+as Optional Replaceable. This means that device creators can either substitute
+it with their own implementation or remove it if they do not want to use it. </p> </section>
+<section><title>Required background</title> <p>To understand the Video Renderer,
+the reader must be familiar with the following: </p> <ul>
+<li id="GUID-EAFD5638-403D-5D2F-A787-BD41EEE13CC3"><p><xref href="GUID-ADA8CECB-0E70-5B9C-8F36-0714AAF0CD13.dita">Graphics
+Surfaces</xref>  </p> </li>
+</ul> </section>
+<section><title>Architecture</title> <p>The Video Renderer can be implemented
+in two different ways, as shown in the following diagram: </p> <fig id="GUID-33691E6E-8B90-579B-876B-6F14E953BB7C">
+<title>              The two Video Renderer architectures            </title>
+<image href="GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e302302_href.png" placement="inline"/>
+</fig> <p> <b>Note</b>: For simplicity, only the Multimedia Framework client/controller
+thread boundary has been shown; other thread boundaries may exist. </p> <p>In
+both architectures, the <xref href="GUID-0EE3180B-4814-517E-A6DD-748136C17D55.dita">Video
+Client API</xref> (<xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref>) is responsible
+for retrieving graphics surface handles from the video player controller and
+registering them with the <xref href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita">Window
+Server</xref>. The difference in the two approaches is in the implementation
+of the video adaptation and the video player controller: </p> <ul>
+<li id="GUID-F47C767B-5040-5E2D-B4A4-E6635B417371"><p> <b>Video adaptation
+approach</b>  </p> <p>The video adaptation uses the Video Renderer to create
+and manage graphics surfaces and handle video rendering. The video player
+controller simply passes surface information between <xref href="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita">DevVideoPlay</xref> and
+the client. An example of this is the Symbian reference AVI player controller
+and <xref href="http://developer.symbian.org/wiki/index.php/File:Xvid.zip" scope="external">XVid decoder</xref>. Symbian recommends this approach for
+new implementations. </p> </li>
+<li id="GUID-64AFC8B9-9BED-5B6D-8946-89BBBF9ACBC5"><p> <b>Video player controller
+approach</b>  </p> <p>The video player controller uses the Video Renderer
+to create and manage graphics surfaces, and handle video rendering and timing.
+This approach is suitable for implementations where DevVideoPlay is only used
+as a codec interface or where DevVideoPlay is not used. </p> </li>
+</ul> <p>In both architectures, the <xref href="GUID-81A0A2E9-4BB9-58BF-B2D3-08098E7E9C7C.dita">Surface
+Update</xref> component provides a communication channel between the Video
+Renderer and the composition engine. </p> </section>
+<section><title>APIs</title> <p>The Video Renderer component contains the
+following DLL with its associated APIs: </p> <table id="GUID-78EF57A1-34BE-5D0B-9B9B-4328FEC0C2C9">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>DLL</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <b>videorenderer.dll </b>  </p> </entry>
+<entry><p>The functionality of the Video Renderer is provided by the following
+key classes: </p> <ul>
+<li id="GUID-D40C598C-FCE4-5840-A58D-A1A8BAB2E52E"><p> <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita"><apiname>CVideoRenderer</apiname></xref> -
+a utility class for rendering video to graphics surfaces on behalf of a client. </p> </li>
+<li id="GUID-1C64FB8F-DAAD-5C76-9650-2984B68499E5"><p> <xref href="GUID-6BB74A8C-B243-368C-8114-E9D4C4D511D0.dita"><apiname>MVideoRendererObserver</apiname></xref> -
+an observer class that provides notifications about the availability and status
+of buffers submitted for rendering. </p> </li>
+<li id="GUID-DB5CFCD9-7ED3-54F6-8E88-182481933170"><p> <xref href="GUID-95DB347F-D669-394D-9BD4-3A2BD18554D4.dita"><apiname>TVideoFrameBuffer</apiname></xref> -
+represents a buffer for a single decoded video picture. </p> </li>
+</ul> <p>The Video Renderer also uses a resource file (<filepath>videorenderer.rss</filepath>)
+to store supported pixel formats and timed mode values. For more information,
+see <xref href="GUID-6021BE18-3416-55DF-A628-0071024D7586.dita">Video Renderer
+Resource File</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The Video Renderer is used for the
+following: </p> <ul>
+<li id="GUID-89CA724E-B873-5C9E-8923-700C48D6EC7A"><p>Creating a surface for
+video rendering </p> </li>
+<li id="GUID-0698BBA1-E5EB-561A-AA77-27C80927C1DF"><p>Supplying buffers to
+decode video frames into </p> </li>
+<li id="GUID-F650FB8E-2222-5BAD-B7A3-3F90DDCCD2F7"><p>Rendering a buffer on
+the display (timed or non-timed) </p> </li>
+<li id="GUID-78941DFB-FBDF-5583-9FCE-DDD53818D202"><p>Destroying a surface. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-0EE3180B-4814-517E-A6DD-748136C17D55.dita"><linktext>Video Client</linktext>
+</link>
+<link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+Framework (MMF)</linktext></link>
+<link href="GUID-97F83011-BE3C-512C-9599-028CBB92BD51.dita"><linktext>Multimedia
+Plug-ins</linktext></link>
+<link href="GUID-842D8124-554F-5D89-9E20-8B48EA539D2F.dita"><linktext>Video HAI</linktext>
+</link>
+<link href="GUID-63CB6C7E-44EC-5D0B-A37D-FE78F7D76592.dita"><linktext>Graphics
+Surface Composition Collection</linktext></link>
+<link href="GUID-C7B420DE-CEDA-5D3F-8095-71136E862CDF.dita"><linktext>Surface Manager
+Component</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D201143F-2B35-5633-8572-C5CAE556FC75.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-D201143F-2B35-5633-8572-C5CAE556FC75" xml:lang="en"><title>Condition-Block
+Syntax</title><abstract><p>Condition-Blocks are control blocks that decide which part of
+the SIS files are skipped during installation. </p> <p>Condition-Blocks can
+include the following: </p> <ul>
+<li id="GUID-E5C9589C-39E4-58C3-9C66-390ABC903E94"><p><xref href="GUID-71909C6D-297C-50A9-99BB-FEBC67389954.dita">Conditions</xref> </p> </li>
+<li id="GUID-52B5CD8A-ABA7-527D-8A46-CE58ED9B5B15"><p><xref href="GUID-C5F9AAD3-5183-57E5-A33B-032DE3C063AE.dita">Functions</xref> </p> </li>
+</ul> <p>Conditional-Blocks (including language dependent file blocks) are
+evaluated at the end of the installation. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title><codeblock id="GUID-0AB8A0B0-C43A-5882-8A45-B859434931D4" xml:space="preserve">IF (condition)
+    package-body 
+[ ELSEIF (condition) 
+    package-body 
+] 
+[ ELSE 
+    package-body 
+] ENDIF
+</codeblock> <p>The square brackets enclose conditions within the Condition-Block
+statement that are optional. </p> <p> <b>Note:</b> It is advisable to put
+conditions within the square brackets. </p> <p>The Condition-Blocks can be
+used to ensure that the SIS file installs appropriate binaries for the target
+platform. For example: </p> <codeblock id="GUID-62C6E29A-E17A-5C66-ACB2-ECBAB31F504B" xml:space="preserve">IF FPHARDWARE=0
+"\epoc32\release\gcce\urel\myapp.exe"-"!:\sys\bin\myapp.exe.exe";
+ELSE
+"\epoc32\release\gcce\urel\myappVFP.exe"-"!:\sys\bin\myappVFP.exe";
+ENDIF
+</codeblock></refsyn>
+<section id="GUID-C9DADEE3-AB97-59DF-9138-EC4F8153A937"><title>Example</title> <p>The
+following example illustrates the usage of Conditional-Blocks within a PKG
+file: </p> <codeblock id="GUID-9027EC5D-7975-57A3-84B8-89504FD6AF0D" xml:space="preserve">; PKG file to illustrate conditional blocks
+
+&amp;EN
+
+%{"Nokia Corporation"}
+
+:"Nokia Corporation"
+
+#{"ConditionalInstall"}, (0x10000041), 1, 2, 3
+
+!({"Option1"},{"Option2"},{"Option3"})
+
+if exists("c:\private\10000041\import\InstTest\romeo.txt")
+    "text\romeo.txt"-"!:\private\10000042\import\InstTest\romeo1.txt"
+else
+    "text\romeo.txt"-"!:\private\10000042\import\InstTest\romeo.txt"
+endif
+
+if (option1 = 1) AND (option2 = 1)
+    "files\tbit.gif"-"!:\private\10000042\import\InstTest\tbit.gif"
+endif
+
+if version(0x10000042, &lt;, 2, 0, 0)
+  "text\prev2.txt"-"!:\private\10000042\import\InstTest\prev2.txt"
+elseif version(0x10000042,&gt;=,2,0,0) AND version(0x10000042, &lt;, 3, 0, 0)
+  "text\v2.txt"-"!:\private\10000042\import\InstTest\v2.txt"
+elseif version(0x10000042,&gt;=,3,0,0) AND version(0x10000042, &lt;, 4, 0, 0)
+  "text\v3.txt"-"!:\private\10000042\import\InstTest\v3.txt"
+else
+  "text\postv3.txt"-"!:\private\10000042\import\InstTest\postv3.txt"
+endif</codeblock> </section>
+</refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e5557_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D21191CC-965A-4F92-9792-4B34D54114DA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D21191CC-965A-4F92-9792-4B34D54114DA" xml:lang="en"><title>Retrieving
+the current light status</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>LightStatus()</codeph> method retrieves the
+current light status. This method supports only the single target, as different
+targets can have different status. If multiple targets were specified, <codeph>CHWRMLight::ELightStatusUnknown</codeph> is
+returned.</p><p>The following code snippet demonstrates how to retrieve the
+current light status:</p><codeblock xml:space="preserve">CHWRMLight::TLightStatus lightStatus = iLight-&gt;LightStatus( CHWRMLight::EPrimaryDisplay );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e380474_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93" xml:lang="en"><title>Rconnection:
+connection monitoring and management example</title><shortdesc>This example demonstrates the use of the <codeph>RConnection</codeph> API
+to do connection monitoring and management. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Purpose</title> <p>The example demonstrates the following
+features of the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> API: </p> <ul>
+<li id="GUID-01B8C3CB-4C74-51B5-A9B1-6CE1D5DD0360"><p>Opening and closing
+a connection using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CE8F3FE7-14F2-3FB6-B04C-8596B5F80DFC"><apiname>RConnection::Open(RSocketServ&amp; aSocketServer,
+TUint                 aConnectionType = KConnectionTypeDefault)</apiname></xref> and <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-20D71C1C-27EE-3305-8326-4CC1DFFB0E2F"><apiname>RConnection::Close()</apiname></xref>. </p> </li>
+<li id="GUID-A5CDAFC8-771C-56A1-86BF-E4731EB7D325"><p>Starting a connection
+that uses the default CommDb connection preferences, and another connection
+that overrides them, using (respectively) <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-CB62E838-A380-309C-8B08-1F804EDB4387"><apiname>RConnection::Start()</apiname></xref> and <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-16E04EA9-E7AD-31EE-A1CB-F40F726ED489"><apiname>RConnection::Start(TConnPref&amp;
+aPref)</apiname></xref>. </p> </li>
+<li id="GUID-DF26CF2F-E012-5752-88B8-2E2FBE4DC0BC"><p>Getting the number of
+connections, and retrieving information about one of them, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-45801E1B-A7F0-3E3D-BAC2-98FA542BD082"><apiname>RConnection::EnumerateConnections(TUint&amp;
+                aCount)</apiname></xref> and <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-DEAFE4AC-B1B7-38DF-A0C2-9BA0201F11FD"><apiname>RConnection::GetConnectionInfo(TUint
+aIndex,                 TDes8&amp; aConnectionInfo)</apiname></xref>. </p> </li>
+<li id="GUID-43861187-FF27-56BD-8B09-F5FC3456FB0D"><p>Attaching a connection
+to an existing interface, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-1C5036E6-62E8-308F-AE72-CB886B2C9C0A"><apiname>RConnection::Attach(const TDesC8&amp;
+aConnectionInfo,                 TConnAttachType aAttachType)</apiname></xref>. </p> </li>
+<li id="GUID-3C89B0C2-3378-5D8B-A519-F5689ACA65EC"><p>Registering for notifications
+when: </p> <ul>
+<li id="GUID-61A4C660-FA35-51DC-A4F1-715CC630052D"><p>a certain amount of
+data has been sent, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-800269E0-8B6D-3C47-86BF-76862AA8CDC3"><apiname>RConnection::DataSentNotificationRequest(TUint
+aThreshold,                      TPckg&lt;TUint&gt;&amp; aUplinkVolume, TRequestStatus&amp;
+aStatus)</apiname></xref>. </p> </li>
+<li id="GUID-40B69177-D7DB-5920-98DF-A681E5EB21E8"><p>a certain amout of data
+has been received, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-4DDC3337-FFE9-32E0-A98E-3823F8E833BF"><apiname>RConnection::DataReceivedNotificationRequest(TUint
+aThreshold,                      TPckg&lt;TUint&gt;&amp; aDownlinkVolume, TRequestStatus&amp;
+                     aStatus)</apiname></xref>. </p> </li>
+<li id="GUID-48F1D550-A56C-5F52-A870-C74C63BB8FFE"><p>interfaces go up and
+down, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-22059E3E-37D7-3C48-940B-A93698E27E5D"><apiname>RConnection::AllInterfaceNotification(TDes8&amp; aNotification,
+                     TRequestStatus&amp; aStatus)</apiname></xref>. </p> </li>
+<li id="GUID-15E99A35-D6C3-5F28-98C5-72B80B594EBB"><p>the connection changes
+state, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-84FF9C60-60B9-3D9D-9D82-3CE063FC9D72"><apiname>RConnection::ProgressNotification(TNifProgressBuf&amp;
+aProgress,                      TRequestStatus&amp; aStatus, TUint aSelectedProgress
+=                      KConnProgressDefault)</apiname></xref>. </p> </li>
+</ul> </li>
+<li id="GUID-57C9068C-1380-5397-A090-1D9FC1587FED"><p>Obtaining the amount
+of data transferred, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-6C695DC3-978A-3F48-87AE-08E64F45831D"><apiname>RConnection::DataTransferredRequest()</apiname></xref>. </p> </li>
+<li id="GUID-FAA3F969-67AF-5716-92F9-B5BDBC038906"><p>Obtaining the connection's
+current state, using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-2A798FA2-371F-3BB8-8531-374D9C72AA90"><apiname>RConnection::Progress(TNifProgress&amp; aProgress)</apiname></xref>. </p> </li>
+<li id="GUID-14CBAB9C-F93D-5A0D-A63E-B18D2209D38A"><p>Stopping the connection,
+using <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-52878713-A4E8-327E-901B-449EF3D39E0A"><apiname>RConnection::Stop()</apiname></xref>. </p> </li>
+<li id="GUID-0525FECB-37A0-5373-93DD-92BCB1317078"><p>Closing the session
+with the socket server using <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-B6D74895-B413-3759-966A-4A1D855267E1"><apiname>RSocketServ::Close()</apiname></xref>. </p> </li>
+</ul> </section>
+<section><title>Download</title><p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3d0ac087-79ee-467f-b6ed-d71eafa40d9c.zip" scope="external">Rconnection.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3d0ac087-79ee-467f-b6ed-d71eafa40d9c.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Class Summary</title><p>The example demonstrates the following
+classes: </p><p><xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref></p><p><xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref></p><p><xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref></p><p><xref href="GUID-739117F6-9559-3274-8E00-B2B653C0A8B6.dita"><apiname>TCommDbConnPref</apiname></xref></p><p><xref href="GUID-E104DE5D-FF3F-3E07-ACC3-E24A96DF3629.dita"><apiname>TConnectionInfoBuf</apiname></xref></p></section>
+<section><title>Design and implementation</title> <p>The project implements
+a single class called <codeph>CRConnection</codeph>, that has three principal
+functions: </p> <p><b>CRConnection::DemoApiWithoutDbOverrideL() </b> </p> <p>This
+shows how to use <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> to: </p> <ul>
+<li id="GUID-01D4595A-2723-53C8-9499-7215FFA219C3"><p>start a connection and
+associate it with an underlying interface, using default CommDb connection
+preferences, </p> </li>
+<li id="GUID-6377E5AB-71D3-50F1-B084-E8891BB73BB9"><p>get notification when
+the underlying interface goes up or down, </p> </li>
+<li id="GUID-37FF8270-7FD1-5B27-9E9A-BC6D49E02B4D"><p>get notification about
+the state of a connection as it becomes fully established, </p> </li>
+<li id="GUID-E396A06F-5156-5924-9B68-649575A1CA62"><p>transfer data over a
+socket, </p> </li>
+<li id="GUID-584D9C8C-A317-51D0-8AD2-397337F1A332"><p>get the amount of data
+transferred, </p> </li>
+<li id="GUID-23588938-CEE7-5AD9-8C9D-9FA253AE11D2"><p>close the connection. </p> </li>
+</ul> <p>It also shows how to set up a socket to carry out data transfer. </p> <p><b>CRConnection::DemoApiWithDbOverrideL() </b> </p> <p>This
+is the same as <codeph>DemoApiWithoutDbOverrideL()</codeph> except that it: </p> <ul>
+<li id="GUID-C61443A2-8576-59F3-A586-30DDF1D2AD56"><p>starts a connection
+using non-default CommDb connection preferences, </p> </li>
+<li id="GUID-9777305D-11BC-5BD4-AFE0-2ED3D010BE93"><p>requests notification
+when a threshold amount of data has been transferred (instead of getting the
+amount of data transferred). </p> </li>
+</ul> <p><b>CRConnection::AttachToExistingInterfaceL() </b> </p> <p>This shows
+how to use <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> to: </p> <ul>
+<li id="GUID-CB835CF4-BD2A-55E5-BEF7-248A0750B466"><p>open 2 connections and
+start one of them (the other is not yet associated with an underlying interface), </p> </li>
+<li id="GUID-DE013E1E-E3C3-513C-B0B6-5B16E6000C5C"><p>get connection information
+for the 1st connection and use this to attach the 2nd connection to the existing
+interface, </p> </li>
+<li id="GUID-BCA6E282-7C55-5416-884F-F88172672D8B"><p>get the state of the
+attached connection, </p> </li>
+<li id="GUID-8A107877-F6BD-5580-ADB5-230F86B36CD4"><p>close the connections. </p> </li>
+</ul> </section>
+<section><title>Building and configuring</title> <p>You can build the example
+from the IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+into your IDE, and use the build command of the IDE. </p> <p>If you use the
+command line, open a command prompt, and set the current directory to the
+source code directory of the example. You can then build the example using
+the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> <p><b>Emulator: </b> </p> <p>Before
+running the example, the emulator must be set up to use ethernet, as follows: </p> <ul>
+<li id="GUID-1C477C42-8F6B-57F1-A8CE-F1CBAA22F265"><p>Install <xref href="GUID-CDD1E761-6B28-5F69-BBEF-756DF45E59A2.dita">WinPCap
+4.0.2</xref> </p> </li>
+<li id="GUID-C79C333A-AF6E-5587-8BA0-B19C470C2D09"><p>Configure the emulator
+using <xref href="GUID-7B114A67-356A-5FCE-B57B-761F5477A2B2.dita">configchange.pl</xref> for
+instance: </p> <p><userinput>configchange.pl --config ethernetWithCommDB --kernel
+EKA2 --target winscw --variant udeb</userinput> </p> </li>
+<li id="GUID-FBAD862F-DFA3-5E7E-8F69-3C4B3CF9E56B"><p>Open <filepath>ethernetced.xml</filepath> in <filepath>epoc32\winscw\c\</filepath> and
+change the last 3 values in the <codeph>LANBearer operation</codeph> section
+for "EKA2 Emulator Ethernet" in the <codeph>LANBearerTable</codeph> to: </p> <codeblock id="GUID-1C6B07F1-521D-5E3A-A4EE-A96FA369D5CA" xml:space="preserve">LastSocketActivityTimeout = 10
+LastSessionClosedTimeout = 10
+LastSocketClosedTimeout = 10</codeblock> <p>i.e. change the three values from
+-1 to 10. </p> </li>
+<li id="GUID-82ECDF33-3782-5399-B192-F8DA06B7CE6D"><p>Save the file and then
+run <codeph>ced c:\ethernetced.xml</codeph> from the eshell command prompt
+in the emulator. </p> </li>
+<li id="GUID-5C6DC453-E01B-5F54-9FE1-3AB384357E7D"><p>Download a UDP Echoserver.
+An Echoserver is easily available on the internet. </p> </li>
+<li id="GUID-F5A2E8B3-D8ED-5A3B-AD16-1EC7928B6EEB"><p>Start the UDP Echoserver
+and edit the <codeph>rconnection.cpp</codeph> file in the example code so
+that the values for <codeph>KDestAddr</codeph> and <codeph>KSockPort</codeph> match
+the values being used by the UDP Echoserver. </p> </li>
+<li id="GUID-CE2E778F-3AB3-5E93-B004-7152AA931072"><p>Build the application
+using the commands described above and then run it. </p> </li>
+</ul> <p><b>Hardware: </b> </p> <ul>
+<li id="GUID-5A2860DF-FF03-585D-87CB-28611B80A0A8"><p>To run the example on
+an H4 board, connect the H4 to the PC/network by serial cable. Copy <filepath>ethernetced.xml</filepath> to
+a memory card and execute: </p> <p><userinput>ced e:\ethernetced.xml</userinput> </p> <p>before
+running the example. </p> </li>
+</ul> </section>
+<section><title>Running the example</title> <p>For the emulator, the example
+builds an executable called <filepath>rconnection.exe</filepath> in the <filepath>epoc32\release\winscw\&lt;udeb
+or urel&gt;\</filepath> folder. </p> <p> <filepath>rconnection.exe</filepath> is
+a console-based application. The example takes input from the user and prints
+to the console information about the various stages of the example. </p> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C" xml:lang="en"><title>EGL Interface
+Component</title><shortdesc>The EGL Interface component provides a consistent interface to
+EGL on the Symbian platform, enabling cross-device compatibility. The component
+includes the Khronos-released header files (which incorporate some minor changes,
+such as to the in-source comments). It also provides some Symbian-specific
+header files and some other files (such as LIB, DEF and MMP files) and UIDs.
+It does not provide any implementations of the APIs.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>EGL is an open standard developed by the Khronos Group (<xref href="http://www.khronos.org" scope="external">www.khronos.org</xref>). </p>
+<p>The CBR package name for the EGL Interface component is <filepath>graphics_eglheaders</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita"><linktext>EGL Collection
+  Overview</linktext></link>
+<link href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita"><linktext>EGL   Collection</linktext>
+</link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF"><title>Bluetooth Management Collection Overview</title><shortdesc>The Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-8EE69487-E1A0-530A-AFFB-15207C9A2CAC"><title>Purpose</title> <p>The Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components. </p> </section> <section id="GUID-12AFDBB9-5468-5CBE-A6F4-FB8E83DB5DCB"><title>Architecture</title> <fig id="GUID-7B185CA7-F57D-5B4E-A8CB-86D539104AD3"><image href="GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e371869_href.png" placement="inline"/></fig> </section> <section id="GUID-0EE39304-E0A7-5D42-8383-88EBE8398B96"><title>Components</title> <p>The Bluetooth Management collection contains the following components: </p> <ul><li id="GUID-7C57631F-BF43-53A7-846B-35853C981D88"><p> <b>Bluetooth Manager</b>  </p> <p>The Bluetooth Manager component stores non-volatile details of Bluetooth devices in the BT Registry using DBMS. Stored information can be retrieved, modified and deleted. </p> </li> <li id="GUID-EDBFC9AE-38B3-538C-8C85-4EF94D06B05C"><p> <b>Bluetooth Client</b>  </p> <p>The Bluetooth Client component provides support for configuring and managing Bluetooth sockets, accessing the HCI, and configuring Bluetooth AV sessions. </p> </li> </ul> </section> <section><title>Using Bluetooth Management</title> <p>The Bluetooth Management collection has the following uses: </p> <ul><li id="GUID-4F3EB06D-FA6C-5C97-8828-1679B0D75A4E"><p>storing, retrieving, modifying and deleting details from the Bluetooth Registry using <xref href="GUID-11E05C4A-CC94-5A0E-9D07-1863FB03747F.dita">Bluetooth Manager</xref> </p> </li> <li id="GUID-90425D29-F83A-5DC7-95ED-9025A20CBD46"><p>configuring and managing Bluetooth sockets, accessing the HCI and configuring Bluetooth AV sessions using the <xref href="GUID-8411E1C9-C6CC-5B0A-BEBA-74D0B8AABF35.dita">Bluetooth Client</xref>. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e331150_href.png has changed
Binary file Symbian3/SDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e305210_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D2E19490-4179-548F-9DA8-9AE637FAC9E2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D2E19490-4179-548F-9DA8-9AE637FAC9E2" xml:lang="en"><title>Application Architecture Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the tasks that can be performed using the APIs provided by APPARC.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D30B09D1-6537-58B4-B94E-13EAD5A28EE0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D30B09D1-6537-58B4-B94E-13EAD5A28EE0" xml:lang="en"><title>How
+to Configure the Speed and Data Format: Tutorial</title><shortdesc>This tutorial shows the basic steps to perform any serial port
+configuration through the RComm API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-B8FEEEFA-3070-56DF-BC40-F69F5A7ED4AD">
+<step id="GUID-2DE6A576-3585-54DA-B2AF-1A37B59E3502"><cmd>Load the CSY and
+open a port. </cmd>
+</step>
+<step id="GUID-CD24F05E-4C5D-50E2-A351-24AD4091A11F"><cmd>Get the capabilities
+of the port by calling <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4A6ECC68-EBC7-3B6C-94AE-9272669F6FF2"><apiname>RComm::Caps()</apiname></xref></cmd>
+</step>
+<step id="GUID-879EC8B1-3F15-5CDE-B9F2-3C09AE04542B"><cmd>The capabilities
+of the port are in the <xref href="GUID-076DD315-CE3F-3640-BAB4-0FC51C906820.dita"><apiname>TCommCaps</apiname></xref> structure. For example, <xref href="GUID-6A3B6E0B-8C17-3383-AA1C-353A28919983.dita"><apiname>TCommCapsV01.iStopBits</apiname></xref> specifies
+the number of stop bits the port can manage. </cmd>
+<info>Note: Port capabilities are never exclusive. A port that can manage
+a speed of 50 bps may also be able to manage faster speeds as well. Most fields
+in <codeph>TCommsCaps</codeph> are bit fields which bitmasks must be used
+to determine all the capabilities. An example bitmask for the <xref href="GUID-B9752D91-7586-3EDB-9A5F-C676512D63BC.dita"><apiname>TCommCapsV01.iRate</apiname></xref> field
+is <xref href="GUID-43343094-0CE2-3F3F-9650-93ED3B274330.dita"><apiname>KCapsBps19200</apiname></xref>. </info>
+<info>These same fields in the configuration class <xref href="GUID-BF099B27-4E8A-3765-A6A8-DB88DB4F4F2E.dita"><apiname>TCommConfig</apiname></xref> are
+enumerations. For example, <xref href="GUID-B9752D91-7586-3EDB-9A5F-C676512D63BC.dita"><apiname>TCommCapsV01.iRate</apiname></xref> is a <xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> since
+it is a bitfield. <xref href="GUID-3A529B58-F3AA-3A4D-B154-35E6BD440438.dita"><apiname>TCommConfigV01.iRate</apiname></xref> is an enumeration
+of type <xref href="GUID-79F7A50B-0BA6-3B05-996F-C403AE1D0124.dita"><apiname>TBps.</apiname></xref> </info>
+</step>
+<step id="GUID-0ABC5449-73F5-5C68-A8C1-3129C2625AEF"><cmd/>
+<info>Create an object of type <xref href="GUID-FA42F645-D2A8-384B-9FE6-6495EACFA479.dita"><apiname>TCommConfigV01</apiname></xref>. </info>
+</step>
+<step id="GUID-721FC5DE-7144-51B3-8644-217DC2D0F9C1"><cmd/>
+<info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with the <codeph>aConfig</codeph> parameter
+set to the <codeph>TCommConfigV01</codeph> object to get the port configuration. </info>
+</step>
+<step id="GUID-50114001-5413-59B2-BBBA-79C96F85B28E"><cmd/>
+<info>Set the fields that must be changed in the <codeph>TCommConfigV01</codeph> object.
+For example, set the <xref href="GUID-4EDA16F3-40B1-3C8A-BD00-C04FF81053BB.dita"><apiname>iSIREnable</apiname></xref> flag to enable Infrared. </info>
+</step>
+<step id="GUID-FA114152-8AFA-5016-9C03-4BFDB67B4BF4"><cmd/>
+<info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with the <codeph>TCommConfigV01</codeph> object
+as the <codeph>aConfig</codeph> parameter. </info>
+<info>The port is now configured. </info>
+<info><p><b>Tip:</b> In cases where the application is written for a specific
+device, the application may skip the capability check since the capabilities
+are known at the time of manufacture.</p></info>
+</step>
+</steps>
+<example><title>Example</title> <p>The following code uses <codeph>Caps()</codeph> to
+find out if its desired port configuration of 19200 bps and 8 data bits with
+no parity and one stop bit is possible: </p> <codeblock id="GUID-4CB78EBE-4128-5044-93C7-DA2E71CAA8CD" xml:space="preserve">TCommCaps ourCapabilities;
+commPort.Caps (ourCapabilities);
+
+if (((ourCapabilities ().iRate &amp; KCapsBps19200)  == 0)||
+    ((ourCapabilities ().iDataBits &amp; KCapsData8) == 0)||
+    ((ourCapabilities ().iStopBits &amp; KCapsStop1) == 0)||
+    ((ourCapabilities ().iParity &amp; KCapsParityNone) == 0))
+   User::Leave (KErrNotSupported) ;
+</codeblock> <p>The following code configures the speed settings for a port. </p> <codeblock id="GUID-611D90E0-01D9-5137-B746-4DD821F7EBDC" xml:space="preserve">TCommConfig portSettings;
+commPort.Config (portSettings);
+portSettings ().iRate = EBps19200;
+portSettings ().iParity = EParityNone;
+portSettings ().iDataBits = EData8;
+portSettings ().iStopBits = EStop1;
+r = commPort.SetConfig (portSettings);
+User::LeaveIfError (r);</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita"><linktext>GlassTerm
+-                 glass teletype terminal</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C" xml:lang="en"><title>Known
+Issues</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the known issues associated with developing Standard
+C++ applications or libraries on Symbian platform. </p>
+<p>The following functionalities of Standard C++ have certain limitations
+on Symbian platform: </p>
+<ul>
+<li id="GUID-8A496C80-74F0-559D-84B3-34EF8BA15A39"><p> <b>dynamic_cast:</b> The <codeph>dynamic_cast</codeph> operator
+is not fully supported on Symbian platform. </p> </li>
+<li id="GUID-012F6B22-4A66-5B54-B981-01A252F10147"><p> <b>unexpected_handler:</b> The
+CodeWarrior runtime does not support the invocation of <codeph>unexpected_handler</codeph> upon
+an exception specification violation. </p> </li>
+<li id="GUID-9FF61C6B-21D4-521D-A1FF-086D28FDAADF"><p> <b>IOStreams:</b> The <codeph>cin</codeph> and <codeph>cout</codeph> objects
+are instances of <codeph>istream</codeph> and <codeph>ostream</codeph> classes
+and are exported by the STL library. As the emulator tool-chain does not support
+exporting of data, these are defined as function calls on the emulator. </p> <p>These
+functions return references to the <codeph>cin</codeph> and <codeph>cout</codeph> objects
+that the STL library maintains. Since they are defined as functions, an attempt
+to import namespace by saying using <codeph>std::cout</codeph> may fail to
+compile. To resolve this issue, include the entire <codeph>std</codeph> namespace
+in such scenarios. </p> </li>
+</ul>
+<section id="GUID-EB8B9B0E-0971-4147-B8FB-94F2D602B61F"><title>ARM RVCT compiler
+issues with STLport</title><p>Due to a defect in the ARM RVCT compiler versions
+2.2, 3.1 and 4.0, building STLport v5 or STLport-based applications, creates
+some invalid export entries in DEF files. To workaround this issue, perform
+the following steps:</p><ol>
+<li id="GUID-6BD383B8-C6C8-4C08-A741-2D90C21D274F"><p>Use the GCCE compiler
+to generate the DEF file, if it is not available.</p></li>
+<li id="GUID-EA6CD191-69CA-4AA5-80FB-704F52F583F6"><p>Ignore the warnings
+generated by the ARM RVCT compiler.</p><note>When you ignore the warnings,
+do not freeze the invalid export entries in the DEF file using the ARM RVCT
+compiler.</note></li>
+</ol></section>
+<section id="GUID-6008A836-2454-49E5-BE25-29EB9074CF88"><title>Using the id
+member variable of facet classes</title> <p>Symbian platform does not support
+exporting static data. Hence, the <codeph>id</codeph> member variable of facet
+classes (<codeph>static locale::id           id</codeph>) cannot be used directly
+on Symbian platform. When you use these classes you must use the <codeph>GetFacetLocaleId()</codeph> function
+to access the data member <codeph>id</codeph> instead. </p> <p> <b>Examples</b>  </p> <ol id="GUID-96B64FD3-382E-56E1-BAD6-90DFBDA0969F">
+<li id="GUID-20337C94-A194-5BD7-9974-490C1EBB543F"><p> <b>Using the id member
+of standard facets:</b> For example, you can change <codeph>locale::id Id1
+=                 numpunct&lt;char&gt;::id;</codeph> to <codeph>locale::id Id1
+=                 numpunct&lt;char&gt;::GetFacetLocaleId();</codeph>. </p> </li>
+<li id="GUID-F91F6741-FA71-5644-BE02-717E5872B293"><p> <b>Deriving a class
+from a standard facet:</b> Declare a <codeph>GetFacetLocaleId()</codeph> static
+method, in addition to the member variable ID, when you define a class that
+is inherited from the <codeph>locale::facet</codeph> class, as illustrated
+in the following code: </p> <codeblock id="GUID-692D5326-4048-52DC-8347-5006CBEFAF0F" xml:space="preserve">class myfacet : public locale::facet
+    {
+    public:
+    static locale::id id;
+    static locale::id&amp; GetFacetLocaleId() 
+        {
+        return id;
+        } 
+    };</codeblock> </li>
+<li id="GUID-600D7CAC-C9C5-5722-987A-66FE6E2D7D01"><p> <b>Using a class that
+is part of a DLL:</b> Ensure that you also handle the Writable Static Data
+(WSD) issues for emulator (WINSCW) builds along with the issues described
+in examples <b>1</b> and <b>2</b> as illustrated in the following code: </p> <codeblock id="GUID-8307FD25-D980-5FC1-A0FB-83098BE5D331" xml:space="preserve">//myfacet.h
+class myfacet : public locale::facet
+    {
+    public:
+#ifndef __WINSCW__  
+    static locale::id id;
+#endif
+    static locale::id&amp; GetFacetLocaleId();
+    };
+</codeblock> <codeblock id="GUID-57B95E9E-9071-50CC-A688-73C9781B26E4" xml:space="preserve">//myfacet.cpp
+std::locale::id&amp; myfacet::GetFacetLocaleId()
+    {
+#ifndef __WINSCW__  
+    return id;
+#else
+    // get the WSD struct – uses EWSD solution
+    // get_wsd_struct() is a function defined by
+                // the user to get a pointer to his WSD struct.
+    return get_wsd_struct()-&gt;myfacet_id;
+#endif
+    }</codeblock> </li>
+</ol> </section>
+<section id="GUID-35767460-AE19-47D2-B24F-0CFEC8B999EF"><title>Using memory
+leak detection macros</title> <p>On an emulator, there are some dynamic memory
+allocations made for supporting WSD, when the Standard C++ library is initialised.
+In this scenario, if you add a memory leak detection macro, such as <codeph>__UHEAP_MARK</codeph> and <codeph>__UHEAP_MARKEND</codeph>,
+then you get a panic at <codeph>__UHEAP_MARKEND</codeph>. </p> <p>To avoid
+this panic, you must call the <codeph>CleanupWSD()</codeph> function, provided
+only for use on emulator. For more information about how to achieve this,
+see the following example code: </p> <codeblock id="GUID-52610746-62BA-5EDB-A584-091CD6724260" xml:space="preserve">#include &lt;iostream&gt;
+using namespace std;
+#ifdef __WINSCW__
+#include &lt;libstdcppwsd.h&gt;
+#endif
+int main()
+    {
+    __UHEAP_MARK;
+    cout &lt;&lt; "Hello, World!" &lt;&lt; endl;
+#ifdef __WINSCW__
+    CleanupWSD();// Cleanup all WSD related allocations
+#endif
+    __UHEAP_MARKEND;
+    return 0;
+    }</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright
+Acknowledgments for Standard C++                 (STLport)</linktext></link>
+<link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard
+C++ Library Overview</linktext></link>
+<link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext>Standard
+C++ Support on Symbian Platform</linktext></link>
+<link href="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita"><linktext>Developing
+Applications or Libraries                 Using Standard C++</linktext></link>
+<link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building
+a Standard C++ Application or                 Library</linktext></link>
+<link href="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita"><linktext>Troubleshooting</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78" xml:lang="en"><title>EUser High
+Level Library Tutorials</title><shortdesc>The EUser High Level Library tutorials are meant to discuss the
+usage of the LString and resource management class implementation. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D358120E-6755-5D0F-8754-DAB4E2A52E00.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D358120E-6755-5D0F-8754-DAB4E2A52E00"><title>Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides a summary of related documentation for the loader to which you can refer. </p> <section><title>API Reference</title> <p>The loader API is internal. The following APIs use the services provided by the loader. </p> <table id="GUID-6D4B8343-8229-5C6A-9955-D1F7296770AD"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>Item</b>  </p> </entry> <entry><p> <b>Header </b>  </p> </entry> </row> <row><entry><p> <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-DD214BA3-907E-3C7F-93C6-924A9A115A02"><apiname>RProcess::Create()</apiname></xref>  </p> </entry> <entry><p> <filepath>e32std.h</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>  </p> </entry> <entry><p> <filepath>e32std.h</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-AE0D51B7-7ADC-3C9F-ACAA-8F6D9EA0AEFA"><apiname>User::LoadLogicalDevice()</apiname></xref>  </p> </entry> <entry><p> <filepath>e32std.h</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-A0F4BF4A-9C58-3E5E-88E1-6D98597DDA18"><apiname>User::LoadPhysicalDevice()</apiname></xref>  </p> </entry> <entry><p> <filepath>e32std.h</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-51353BE2-9133-39F5-83F3-A5DB88D858CA"><apiname>RFs::AddFileSystem()</apiname></xref>  </p> </entry> <entry><p> <filepath>f32file.h</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-D45FD363-EEF9-3F77-8FA1-49270D8E89A0"><apiname>RFs::AddExtension()</apiname></xref>  </p> </entry> <entry><p> <filepath>f32file.h</filepath>  </p> </entry> </row> <row><entry><p> <xref href="GUID-454ACAB5-1573-323C-820E-AF542B149D2A.dita#GUID-454ACAB5-1573-323C-820E-AF542B149D2A/GUID-9F04584E-DD0B-39CE-8666-88F67F3B83BF"><apiname>TExtendedLocale::LoadLocale()</apiname></xref>  </p> </entry> <entry><p> <filepath>e32std.h</filepath>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Engineering Specifications</title> <p>None published. </p> </section> <section><title>Test Programs</title> <p>None. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D36660AA-1DC1-49B4-870E-F3BA66A734BC_d0e55427_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D37576D8-1BD6-520B-9C69-60F2F89E4452.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D37576D8-1BD6-520B-9C69-60F2F89E4452"><title>WINSCW-specific errors and warnings</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When you compile code for the WINSCW target, you may get errors and warnings that were not present when building for WINS or ARM targets. This page explains some possible causes of this. </p> <section><title>#pragma for disabling warnings</title> <p> <i>Issue:</i> CodeWarrior compiler ignores the <codeph>#pragma
+          warning(...)</codeph> statements that are used to disable specific Microsoft VC++ warnings. </p> <p> <i>Resolution:</i> consult the CodeWarrior manuals for equivalent CodeWarrior <codeph>#pragma</codeph> controls over specific warnings. </p> </section> <section><title>Expression evaluation order</title> <p>The C++ Standard explicitly states that the order of evaluation of expressions is undefined. For example, for the line, </p> <codeblock id="GUID-0DDAD2D7-123D-5079-8EDD-028C94218FCB" xml:space="preserve">x = fn1(param1) + fn2(param2);</codeblock> <p>some compilers may evaluate <codeph>fn1(param1)</codeph> first, while others may evaluate <codeph>fn2(param2)</codeph> first. Symbian have in fact found cases where CodeWarrior, and Microsoft VC++ and GCC, differ in this behaviour. You should therefore never assume a particular order of evaluation. Note that this error may be hard to find, as program behaviour can be altered, but no compiler warnings are given. </p> </section> <section><title>friend statements</title> <p> <i>Issue:</i>  <systemoutput>illegal 'friend' declaration</systemoutput> compiler errors for statements of the form <codeph>friend MyClass;</codeph>. </p> <p> <i>Resolution:</i> use the syntax <codeph>friend class
+          MyClass;</codeph>. </p> </section> <section><title>Identifier names not, or, and, etc.</title> <p> <i>Issue:</i> compiler errors when using identifiers with the names <codeph>not</codeph>, <codeph>or</codeph>, <codeph>and</codeph>, <codeph>bitor</codeph>, <codeph>xor</codeph>, <codeph>compl</codeph>, <codeph>bitand</codeph>, <codeph>and_eq</codeph>, <codeph>xor_eq</codeph>, <codeph>or_eq</codeph>, or <codeph>not_eq</codeph>. </p> <p>This is because these are C++ keywords (alternative token representations for some operators and punctuators). </p> <p> <i>Resolution:</i> modify the identifier name. </p> </section> <section><title>illegal empty declaration warnings</title> <p> <i>Issue:</i> warnings caused by unneeded semi-colons, for example, </p> <codeblock id="GUID-5DDB29A5-6A50-5063-9525-3C6493AAC129" xml:space="preserve">class CMyClass
+    {
+public:;</codeblock> <p> <i>Resolution:</i> remove unneeded semi-colons. </p> </section> <section><title>Inline assembler hex constants</title> <p> <i>Issue:</i> compiler errors for inline assembler hex constants specified with a trailing h, for example, 0001ah. </p> <p> <i>Resolution:</i> specify such constants using the C++ 0xnnnn notation. </p> </section> <section><title>Inline assembler labels</title> <p> <i>Issue:</i> compiler errors for assembler labels of the form <codeph>_asm label:</codeph>. </p> <p> <i>Resolution:</i> use C++ labels. </p> </section> <section><title>Member functions that include the class name</title> <p> <i>Issue:</i>  <systemoutput>illegal access/using declaration</systemoutput> compiler errors for class member functions whose declarations include the class name, for example: </p> <codeblock id="GUID-EF132BD8-ACED-596C-937C-06F3F968DEA4" xml:space="preserve">class CMyClass
+    {
+    void CMyClass::MyFunction();
+    };</codeblock> <p> <i>Resolution:</i> remove the class name from the function declaration. </p> </section> <section><title>Mismatched char* and unsigned char* in .c files</title> <p> <i>Issue:</i>  <codeph>illegal implicit conversion from 'unsigned
+          char*' to 'const char*'</codeph> compiler errors when attempting to pass an <codeph>unsigned char*</codeph> where a <codeph>const char*</codeph> is required. </p> <p>CodeWarrior marks this as an error for both .c files and .cpp files; MS Visual C++ only marks it as an error for .cpp files. </p> <p> <i>Resolution:</i> change the declaration or call to use matching types. Alternatively, to tell CodeWarrior not to warn on this issue, use the directive: </p> <codeblock id="GUID-DAD55174-25A1-500B-AC25-55FDA9E921E7" xml:space="preserve">#pragma mpwc_relax on</codeblock> </section> <section><title>possible unwanted ';' warnings</title> <p> <i>Issue:</i> this warns you that a loop has no body, for example, as in the following: </p> <codeblock id="GUID-D6AB57AD-BEB2-5791-9F5A-57E2E46715EE" xml:space="preserve">for (TInt i=0; i&lt;10; i++); // loop ends here
+        f(i);</codeblock> <p> <i>Resolution:</i> if a loop has no body intentionally, the warning can be removed by adding an empty body, for example, </p> <codeblock id="GUID-FD53F42D-A3EC-5A4C-AE66-AD70D64CE422" xml:space="preserve">while (f) {};</codeblock> </section> <section><title>References to enumerated values declared later</title> <p> <i>Issue:</i>  <systemoutput>undefined identifier</systemoutput> compiler errors for usage such as </p> <codeblock id="GUID-3F1BB058-2ED9-5BAC-9C0F-8C25DF8B8508" xml:space="preserve">class CMyClass
+    {
+    void MyFunction(TInt a=EMyVal1); // EMyVal1 not yet defined
+    enum
+        {
+        EMyVal1
+        };
+    };</codeblock> <p> <i>Resolution:</i> move the enumerator's declaration to before its first usage. </p> </section> <section><title>References to pointers to const objects</title> <p> <i>Issue:</i>  <systemoutput>non-const '&amp;' reference initialized to
+          temporary</systemoutput> compiler errors for use of a reference to a pointer to a non-const object, where a reference to a pointer to a const object is required, for example: </p> <codeblock id="GUID-625E9C6B-70D5-5EB8-846A-AB680066E8A5" xml:space="preserve">void f(const TInt64*&amp; aNum);
+
+void f1()
+    {
+    TInt64* ptr;
+    f(ptr);
+    }</codeblock> <p> <i>Resolution:</i> the compiler correctly cannot add const-ness at this level of indirection, as the <codeph>aNum</codeph> value could then be modified through the <codeph>ptr</codeph> pointer. Modify the code to conform with the const-ness rules. </p> </section> <section><title>Reuse of variables declared in for</title> <p> <i>Issue:</i> CodeWarrior follows the C++ standard in limiting the lifetime of a variable declared in a <codeph>for</codeph> statement to the loop block. The following code thus gives an <systemoutput>undefined identifier</systemoutput> error for the use of <codeph>i</codeph> in the second <codeph>for</codeph> statement. </p> <codeblock id="GUID-3CDC86A2-14EE-5388-A3EE-A715F5254761" xml:space="preserve">for (TInt i=0; i&lt;10; i++)
+    {
+    ...
+    }
+for (i=0; i&lt;20; i++)
+    {
+    ...</codeblock> <p> <i>Resolution:</i> as Microsoft Visual C++ gives an error if, in the above case, <codeph>i</codeph> were to be redeclared in the second <codeph>for</codeph> statement. To be compatible with both compilers, declare the loop variable outside the <codeph>for</codeph> loop. </p> </section> <section><title>sizeof(&lt;non-static class member&gt;) not in the context of an object of that class</title> <p> <i>Issue:</i>  <systemoutput>illegal use of non-static member</systemoutput> warning for such code as: </p> <codeblock id="GUID-EC13BC0F-13A8-505A-AABC-142C444111B6" xml:space="preserve">class CMyClass
+    {
+public:
+    int iNonStaticMember;
+    };
+
+int main()
+    {
+    printf("%d\n", sizeof(CMyClass::iNonStaticMember));
+    }</codeblock> <p>The error is produced because <codeph>CMyClass::iNonStaticMember</codeph> is not the name of a type, nor an expression. </p> <p> <i>Resolution:</i> a possible resolution is to provide a dummy object to produce a valid expression: for example, </p> <codeblock id="GUID-E5892D84-2310-52E2-8256-BDF0EBC59B1F" xml:space="preserve">sizeof(((CMyClass*)0)-&gt;iStaticMember)</codeblock> </section> <section><title>Uninitialised variable warnings</title> <p> <i>Issue:</i> extra warnings of the form <systemoutput>variable
+          'myvariable' is not initialized before being used</systemoutput>. </p> <p> <i>Resolution:</i> the warnings are correct, and the code should be corrected. </p> </section> <section><title>USER 42 panics when allocating and deleting arrays</title> <p> <i>Issue:</i> the program panics with USER 42 when allocating and deleting arrays. </p> <p> <i>Resolution:</i> see <xref href="GUID-011D0974-CC37-5335-A8EB-7ECF4FC30F93.dita">Cleanup for heap arrays</xref> for details of code techniques to prevent such panics. </p> </section> <section id="GUID-4856CFCB-C576-5073-AE85-B6045443C8F0"><title>Single process and memory protection</title> <p>The S in WINS and WINSCW stands for "single process". WINS/WINSCW supports multiple threads, but only a single process. This causes slight differences between WINS/WINSCW and target machines. </p> <p>As WINS/WINSCW only has a single process, each process has access to each other’s memory. This means that bad pointers may corrupt another process’s memory, resulting in bugs which would not occur on a multi-process Symbian platform implementation. Also, design bugs such as using pointers across processes do not show until code is first run on a multi-process platform. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D37E0579-0F3B-5EE4-8264-1358E493672B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D37E0579-0F3B-5EE4-8264-1358E493672B" xml:lang="en"><title>Array
+of variable length elements, flat buffer</title><shortdesc>Describes how elements of varying length are organised in the array
+buffer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is a <codeph>CArrayVarFlat&lt;class T&gt;</codeph> object whose
+elements can have different lengths. Although each element is a <codeph>class T</codeph> object,
+the length of that object can vary.</p>
+<p>In this type of array, each element occupies its own individual cell allocated
+from the heap. The array buffer contains fixed length data structures, one
+for each element, which are physically contiguous within the flat array buffer.
+Each fixed length data structure contains the length of an element (a <codeph>TInt</codeph> value)
+and a pointer to it. The structure itself is part of the implementation but
+occupies no more than eight bytes on 32-bit machines.</p>
+<p>A flat buffer always occupies a single cell allocated from the heap and
+is always extended by the process of reallocation. A flat array buffer is
+implemented using a <codeph>CBufFlat</codeph> object.</p>
+<p>The following diagram illustrates how elements are organised within the
+array buffer:</p>
+<fig id="GUID-2A857FBF-943D-5665-9999-BC27EA321F73">
+<image href="GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e190846_href.png" placement="inline"/>
+</fig>
+<p>This kind of array is suitable for a small number of elements or for a
+moderately large but fixed maximum number of elements. It is not suitable
+for large arrays with a high turnover of elements. </p>
+<p>This class is immediately derived from the abstract templated base class <codeph>CArrayVar&lt;class T&gt;</codeph> which
+is itself derived from the abstract non-templated base class <codeph>CArrayVarBase</codeph>.</p>
+<section id="GUID-59ADA2D7-56B2-44C3-8E7C-A5DE5F0BBDBA"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D38456FB-BAA2-5473-B669-F44D5627155B"><title>Video Player 2 Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to play video data on graphics surfaces using the Video Client APIs. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to open, configure and play video clips on graphics surfaces. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video player utility 2 enables you to open and play video data on graphics surfaces. For more information about graphics surfaces, see <xref href="GUID-ADA8CECB-0E70-5B9C-8F36-0714AAF0CD13.dita">Graphics Surfaces</xref>. </p> <p>You can also render video to graphics surfaces without associating them with a target window. This allows you to use graphics surfaces provided by the Multimedia Framework (MMF), as well as other graphics surfaces where no window can be provided. </p> <p>This functionality is exposed by the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> class. <codeph>CVideoPlayerUtility2</codeph> is derived from <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility</apiname></xref>. For more information about <codeph>CVideoPlayerUtility</codeph>, see the video player utility tutorials starting with <xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player Tutorial</xref>. </p> <p> <b>Note:</b>  <codeph>CVideoPlayerUtility2</codeph> can only be used with controllers that support graphics surfaces. </p> </section> <section><title>Using Video Player 2 </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-2618FB7A-9DA7-5668-A38B-7BA1AFF7D1CE"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-6096635D-2793-5472-BC9E-101D7F7A167E">Constructing a utility object</xref>  </p> </li> <li id="GUID-67BB891B-8EA5-59EC-B115-0A691E6404F0"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-28CBE4D2-2979-5E2B-B707-9EB9BC051CC8">Opening a video source</xref>  </p> </li> <li id="GUID-C21D3851-F85B-58F0-A06C-CDD2E240C311"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-C984C913-6647-50E6-A30D-CAA41E6EE1B0">Adding a display</xref>  </p> </li> <li id="GUID-ED0F2F72-6476-5823-9712-D6CFE6A20367"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-3DBD0CE2-3351-5ED5-AB26-4976848E3B39">Preparing to play video data</xref>  </p> </li> <li id="GUID-410F168C-708B-5223-A8F4-95A1FB72B2C2"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-87F516DC-090E-57F9-B140-B4702F44E391">Making configuration adjustments</xref>  </p> </li> <li id="GUID-DB5EB16B-DD71-58DA-B0CB-419D1D4D33D4"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-6D7BD5B1-DDD0-5963-AF84-8169BD4D6CC3">Playing video data</xref>  </p> </li> <li id="GUID-2B5A7AFD-EF70-5D5D-8F7F-368C67476181"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-97516B18-D59B-5FA2-9881-2FE3025AE888">Replacing a surface</xref>  </p> </li> <li id="GUID-50F342B4-28D2-5734-9C14-2AE7474FA052"><p><xref href="GUID-D38456FB-BAA2-5473-B669-F44D5627155B.dita#GUID-D38456FB-BAA2-5473-B669-F44D5627155B/GUID-FB26B528-1FBB-5A6E-B33B-7368A9596DAF">Stopping video playback</xref>  </p> </li> </ul> <p id="GUID-6096635D-2793-5472-BC9E-101D7F7A167E"><b>Constructing a Utility Object</b> </p> <p>The high level step to construct a utility object is shown here: </p> <ul><li id="GUID-D52BCA9D-75A5-5DE5-9C19-8275E1529131"><p>To create a new instance of <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref>, use the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>NewL()</apiname></xref> function: </p> <codeblock id="GUID-FD8FEFCC-49ED-59F4-9DF4-AAFA81B8CC6F" xml:space="preserve">NewL(MVideoPlayerUtilityObserver&amp; aObserver, TInt aPriority, TMdaPriorityPreference aPref);</codeblock> <p>Creating an instance of <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> is similar to creating an instance of <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility</apiname></xref>, however, unlike the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility::NewL()</apiname></xref>, the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::NewL()</apiname></xref> method doesn’t take a window destination. </p> </li> </ul> <p id="GUID-28CBE4D2-2979-5E2B-B707-9EB9BC051CC8"><b>Opening a Video Source</b> </p> <p>Once created, the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref> needs to know what data it should be playing. </p> <p> <b>Note:</b> To open a video source with <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref>, the controller must support graphics surfaces, otherwise it will fail with <codeph>KErrNotSupported</codeph>. </p> <p>Video clips must be opened using one of the following open functions: </p> <ul><li id="GUID-DE36678D-2B5F-5A67-B94B-CB02A002A756"><p> <b>From a file </b>  </p> <codeblock id="GUID-0F42B9CD-29F9-50A9-A617-D2683D139299" xml:space="preserve">OpenFileL(const TDesC&amp; aFileName, TUid aControllerUid=KNullUid);
+</codeblock> <p>This method opens the video clip from a file. It uses an optionally specified plug-in in the argument to load a controller. If no controller plug-in is specified, it searches through the list of available plug-ins and attempts to use each one until successful or the end of the list is reached. </p> <p> <b>Note:</b> There is also another method to open a video clip from a file. It is strongly recommended to use this method. </p> <codeblock id="GUID-C708A76D-0156-5106-B288-BFF6563A15F8" xml:space="preserve">OpenFileL(const TMMSource&amp; aSource, TUid aControllerUid);</codeblock> <p>Where <codeph>aSource</codeph> is a filename or an open handle to a file containing the video clip and <codeph>aControllerUid</codeph> is an optionally specified plug-in. If specified, it will force the video player to use the controller with the given UID. If no controller plug-in is specified, this function searches through a list of all available plug-ins and attempts to use each one until successful or the end of the list is reached. </p> </li> <li id="GUID-E6A42E5B-685A-54FD-B6D0-B9ABED940F63"><p> <b>From a descriptor</b>  </p> <codeblock id="GUID-E53E70E6-FD54-5AB8-AC5D-F1EA6F86A9C6" xml:space="preserve">OpenDesL(const TDesC8&amp; aDescriptor, TUid aControllerUid=KNullUid);</codeblock> <p>This method opens the video clip from a descriptor. It opens the video clip contained as binary data in a descriptor using an optionally specified plug-in in the argument to load a controller. If no controller is specified, it searches through the list of available plug-ins and attempts to use each one until successful or the end of the list is reached. </p> </li> <li id="GUID-01F9EE80-BBA3-5E92-A14D-E749003D332C"><p> <b>From an URL</b>  </p> <codeblock id="GUID-4C942ECA-1308-597B-8F6A-BE942222D53A" xml:space="preserve">OpenUrlL(const TDesC&amp; aUrl, TInt aIapId = KUseDefaultIap, const TDesC8&amp; aMimeType=KNullDesC8, TUid aControllerUid=KNullUid);</codeblock> <p>This method opens the video clip from the specified URL and identified by the MIME type. In addition a plug-in can be specified if necessary. If no controller plug-in is specified, this function searches through a list of all available plug-ins and attempts to use each one until successful or the end of the list is reached. </p> </li> </ul> <p>Once the opening of the video clip is complete, successfully or otherwise, the callback function <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>MVideoPlayerUtilityObserver::MvpuoOpenComplete()</apiname></xref> is called. This notifies the client whether the video clip was successfully opened or not. </p> <p> <b>Note:</b> Opening a video source must be done before providing any window destination. This is because the controller needs to be able to support graphics surfaces and this is only known at load time. </p> <p id="GUID-C984C913-6647-50E6-A30D-CAA41E6EE1B0"><b>Adding a Display</b> </p> <p>To play video on graphics surfaces without an associated target window you need to add a display. The high level steps to add a specified display are shown here: </p> <ul><li id="GUID-C7295586-EDEB-5DF3-A02F-B1CF5DE12215"><p>Call the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::AddDisplayL()</apiname></xref> method. This method takes a window server session, which is used to register the graphics surface, the display ID of the display that the surface is to be placed on, and a reference to a surface event handler. </p> <codeblock id="GUID-58633CE4-34E0-5780-8D13-A94B9CBA13EE" xml:space="preserve">IMPORT_C void AddDisplayL(RWsSession&amp; aWs, TInt aDisplay, MMMFSurfaceEventHandler&amp; aEventHandler);</codeblock> <p> <b>Note</b>: To use windowless graphics surfaces, you must provide an implementation of the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>MMMFSurfaceEventHandler</apiname></xref> interface. The <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>MMMFSurfaceEventHandler</apiname></xref> interface handles surface-related events from the MMF. </p> </li> </ul> <p id="GUID-3DBD0CE2-3351-5ED5-AB26-4976848E3B39"><b>Preparing to Play Video Data</b> </p> <p>The high level steps to prepare to play video are shown here: </p> <ol id="GUID-344888A8-4F8A-5481-8252-37E181FC1BEF"><li id="GUID-8E6DDFD9-583B-5B51-A3FF-15F567F5C743"><p>Once the video data is ready, call the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::Prepare()</apiname></xref> function. </p> </li> <li id="GUID-17137AFF-1E24-5A0D-9DD9-19B353A4209E"><p>When the client receives the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>MVideoPlayerUtilityObserver::MvpuoPrepareComplete()</apiname></xref> callback, the video player utility will be in configured state. </p> </li> </ol> <p id="GUID-87F516DC-090E-57F9-B140-B4702F44E391"><b>Making Configuration Adjustments</b> </p> <p>Once the video clip is open and ready to play, configuration adjustments can be made using the following functions: </p> <ul><li id="GUID-E379C3CD-6117-53B9-BF0F-E78303D1A618"><p> <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::AddDisplayWindowL</apiname></xref>: This function adds a new window for displaying the video picture. Client applications must use this method instead of <codeph>SetDisplayWindowL()</codeph> when using <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2</apiname></xref>. This method has two overloads: </p> <ul><li id="GUID-C3098C44-63D5-56C3-9568-0BB5DE2EF41D"><p>The first takes window clipping and video extent as parameters: </p> <codeblock id="GUID-9F0B2B54-F376-5B3A-B2C5-C07E070496AC" xml:space="preserve">AddDisplayWindowL(RWsSession&amp; aWs, CWsScreenDevice&amp; aScreenDevice, RWindowBase&amp; aWindow, const TRect&amp; aVideoExtent, const TRect&amp; aWindowClipRect);</codeblock> </li> <li id="GUID-B9F7DDF9-A2CF-5249-85A4-1F62ED831637"><p>The second is a simplified version which doesn't take window clipping and video extent as parameters: </p> <codeblock id="GUID-5EACD930-7DA3-5FCB-8C16-5F1EDD04F9C4" xml:space="preserve">AddDisplayWindowL(RWsSession&amp; aWs, CWsScreenDevice&amp; aScreenDevice, RWindowBase&amp; aWindow);</codeblock> <p> <b>Note:</b> When using this version, the video extent and window clipping rectangle default to the whole window. </p> </li> </ul> </li> <li id="GUID-B6ECCA94-FA08-539C-BF86-8684BB34E972"><p> <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::SetVideoExtentL</apiname></xref>: This function sets the video extent on the screen, relative to the window. The extent specifies the area of screen in which the video picture is placed and may be partially or completely outside of the video window. Video picture position within the extent depends on the picture size and content alignment or offset. </p> <codeblock id="GUID-02EDD632-ED30-50B9-B4F3-11A304FDF75C" xml:space="preserve">SetVideoExtentL(const TRect&amp; aVideoExtent);</codeblock> <p> <b>Note:</b> Video extent can be set before a successful call to <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>AddDisplayWindowL</apiname></xref> has been made. </p> </li> <li id="GUID-155740FA-08F7-5429-A2EE-B912D467EF64"><p> <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::SetWindowClipRectL</apiname></xref>: This function sets the window clipping rectangle, relative to the window. The clipping rectangle specifies the part of the window used to display the video picture and must be fully contained within the window. Any video content falling outside of this area is not displayed. </p> <codeblock id="GUID-F360165D-1E13-5ABE-8D2E-3818B32B139C" xml:space="preserve">SetWindowClipRectL(const TRect&amp; aWindowClipRect);</codeblock> </li> </ul> <p id="GUID-6D7BD5B1-DDD0-5963-AF84-8169BD4D6CC3"><b>Playing Video Data</b> </p> <p>The high level step to play video data is shown here: </p> <ul><li id="GUID-89BDC30D-CE13-5A9C-B348-AA46D751B80A"><p>After configuring the properties, the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::Play()</apiname></xref> function is called for the video clip to be played. </p> </li> </ul> <p id="GUID-97516B18-D59B-5FA2-9881-2FE3025AE888"><b>Replacing a Surface</b> </p> <p>If <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CMMFVideoPlayerUtility2</apiname></xref> receives a <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>ReplaceSurface</apiname></xref> event, then the graphics surface needs to be replaced. The high level steps to replace a surface are shown here: </p> <ol id="GUID-A1A1CEE4-775E-5A3B-81FC-FAC2C6A6AEDF"><li id="GUID-24FB37D7-FC3A-57B8-AF88-2A01450BA623"><p>Call <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::RemoveDisplay()</apiname></xref> and set <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>aDisplay</apiname></xref> to be the ID of the display to remove. </p> <codeblock id="GUID-91A4F673-DE4A-5A78-976F-B90D4D1136F1" xml:space="preserve">IMPORT_C void RemoveDisplay(TInt aDisplay);</codeblock> </li> <li id="GUID-216C4BF6-809F-50C7-BCE5-704C15692A92"><p>Call <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::AddDisplayL()</apiname></xref>. This method takes a window server session, which is used to register the graphics surface, the display ID of the display that the surface is to be placed on, and a reference to a surface event handler. </p> <codeblock id="GUID-3B6FFFA5-0EA7-51B6-840E-BB3174F07662" xml:space="preserve">IMPORT_C void AddDisplayL(RWsSession&amp; aWs, TInt aDisplay, MMMFSurfaceEventHandler&amp; aEventHandler);</codeblock> </li> </ol> <p id="GUID-FB26B528-1FBB-5A6E-B33B-7368A9596DAF"><b>Stopping Video Playback</b> </p> <p>The high level steps to stop video playback are shown here: </p> <ol id="GUID-4D4C9ACD-1BDE-5F65-A1A7-3603EB87C6E1"><li id="GUID-1C696A16-E514-50C0-BFB1-BB55ADC21299"><p>Call the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::Stop()</apiname></xref> function. </p> <codeblock id="GUID-C2275FD7-7AAF-5D7E-9736-855BE9BAC2BE" xml:space="preserve">IMPORT_C TInt Stop();</codeblock> <p>Video playback is stopped as soon as possible, and the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>MVideoPlayerUtilityObserver::MvpuoPlayComplete()</apiname></xref> callback function is called. </p> </li> <li id="GUID-46E456E9-71A5-531D-BA40-47AB20106263"><p>To remove a display from the list of surface rendering targets, call <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::RemoveDisplay()</apiname></xref> and set <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>aDisplay</apiname></xref> to be the ID of the display to remove: </p> <codeblock id="GUID-96BD89C8-0DFE-5D24-AD74-6BC8A893794C" xml:space="preserve">IMPORT_C void RemoveDisplay(TInt aDisplay);</codeblock> <p>Calling <codeph>RemoveDisplay()</codeph> destroys any graphics surface associated with the display. You must make sure the graphics surface can be safely destroyed before making this call. </p> <p> <b>Note</b>: If you have added windows to the display using <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::AddDisplayWindowL()</apiname></xref>, then the graphics surface can only be destroyed when you have removed all of the windows as well. That is, when no windows or event handlers are using the display. To remove a window, use the <xref href="GUID-42D1182F-46D8-3C78-8D3C-C1BB465FCA1F.dita"><apiname>CVideoPlayerUtility2::RemoveDisplayWindowL()</apiname></xref> function. </p> </li> </ol> </section> <section><title>See Also</title> <p><xref href="GUID-3F0856D9-7B58-5519-9B26-97F1A035E21D.dita">Video Player Utility Tutorials</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e346119_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D38C47AD-ED05-5693-A734-498788B9B85B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D38C47AD-ED05-5693-A734-498788B9B85B"><title>Using Relative and Sequential Drawing</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides examples that demonstrate how to draw a triangle first using relative drawing with a thin solid line, then using relative drawing and a wide line (illustrating curved corners) and finally using sequential drawing between points, with a dot dash line, illustrating line pattern continuation. </p> <p>Note that there is a third way to draw a triangle, using <codeph>DrawPolygon()</codeph>. This must be to used to draw a filled triangle. </p> <section><title>Drawing a triangle using relative drawing (thin lines)</title> <p>You can draw a triangle of thin lines, using relative drawing, <codeph>MoveTo()</codeph> and <codeph>DrawLineBy()</codeph>. </p> <codeblock id="GUID-45B63152-282C-5E8C-8539-0350CC25649A" xml:space="preserve">...
+// draw a triangle by relative drawing
+gc.MoveTo(TPoint(300,50)); // drawing position (300,50)
+gc.DrawLineBy(TPoint(205,100)); // drawing position (505,150)
+gc.DrawLineBy(TPoint(-410,0)); // drawing position (95,150)
+gc.DrawLineBy(TPoint(205,-100)); // drawing position (300,50)
+...</codeblock> <p> <b>Note</b>: The sum of the three <codeph>TPoint</codeph> vectors used by the <codeph>DrawLineBy()</codeph> calls comes to <codeph>(0,0)</codeph>, thus creating a closed shape. </p> </section> <section><title>Drawing a triangle using relative drawing (thick lines)</title> <p>You can draw a triangle of thick lines, using relative drawing, <codeph>MoveTo()</codeph> and <codeph>DrawLineBy()</codeph>. </p> <codeblock id="GUID-9AF54D2D-16E8-5C2E-9022-A692D37FF4EA" xml:space="preserve">...
+// draw a triangle, by relative drawing
+// illustrating rounded ends at corners when using very wide lines
+gc.SetPenWidth(penSizeFat);
+gc.MoveTo(TPoint(300,50)); // drawing position (300,50)
+gc.DrawLineBy(TPoint(205,100)); // drawing position (505,150)
+gc.DrawLineBy(TPoint(-410,0)); // drawing position (95,150)
+gc.DrawLineBy(TPoint(205,-100)); // drawing position (300,50)
+...</codeblock> </section> <section><title>Drawing a triangle using sequential drawing between points</title> <p>This topic provides an example that demonstrates how to draw a triangle of dot dash lines, using sequential drawing between points, <codeph>DrawLineTo()</codeph>. </p> <codeblock id="GUID-C7DDA7DC-1B49-5AD0-99A9-45807AF76C40" xml:space="preserve">...
+// draw a triangle by sequential drawing between specified points,
+// using dot-dash line style, illustrating line pattern continuation 
+gc.SetPenStyle(CGraphicsContext::EDotDashPen);
+gc.MoveTo(TPoint(300,50)); // drawing position (300,50)
+gc.DrawLineTo(TPoint(505,150)); // drawing position (505,150)
+gc.DrawLineTo(TPoint(95,150)); // drawing position (95,150)
+gc.DrawLineTo(TPoint(300,50)); // drawing position (300,50)
+...</codeblock> <p> <b>Note</b>: The final point drawn to is the same as the point originally moved to, thus creating a closed shape. </p> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D3DD5F07-A383-5285-8C68-9F6C1C3E715B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D3DD5F07-A383-5285-8C68-9F6C1C3E715B" xml:lang="en"><title>File Server tracing concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> This document expalins how to enable trace points in fileserver, filesystem and proxy server.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B" xml:lang="en"><title>Managing
+feedback areas</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Usually control areas (and hence feedback areas) should not overlap. However,
+in some cases you may have to define a priority for the feedback areas. </p>
+<p>Consider, for example, situations where a compound control has a simple
+control inside its own area as illustrated in the figure below.</p>
+<fig id="GUID-C70125A6-393A-428D-A22B-7F6EEC72FAAF">
+<title>Tactile feedback area priorities</title>
+<image href="GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e51823_href.png" scale="70" placement="inline"/>
+</fig>
+<p>In both situations, the compound control wants to give one type of feedback,
+but there should be a different type of feedback (or no feedback at all) for
+the simple control. Both controls can register themselves to area registry,
+but the problem is making sure that simple control has a higher priority than
+the compound control (in the API implementation hit tests are only run as
+long as one control with matching area and pointer event type is found).</p>
+<p>You can solve this in two ways:<ol>
+<li id="GUID-7AE53987-EF45-4222-8D34-D48413091BC8">By adding the simple control
+to area registry after compound control (the last added area always has the
+highest priority inside its window).</li>
+<li id="GUID-128E8207-1B69-4FC5-9E4B-A42A259C60E5">By using the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classMTouchFeedback.html#a3fe25a09d2df942b13f626b627cb9e3" format="application/java-archive"><codeph>MoveFeedbackAreaToFirstPriority</codeph></xref> function for moving
+the simple control to first priority.</li>
+</ol></p>
+<p>In many cases the first option is most natural choice, but you can also
+use the second option in case the situation changes after the areas have been
+already added to the area registry.</p>
+<note><p>The priority order will only remain as long as the next area is added
+to the registry, i.e. moving some area to first priority will only keep it
+as the top priority area as long as the next area is added to the registry.
+(Registry entries of one window are kept in a stack, and new areas are always
+added on top.)</p></note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B"><title>Introduction to transactions</title><shortdesc>A transaction is a series of operations on a store, normally completed by committing them using the store's <codeph>CommitL()</codeph> function. Transactions are supported by the commit and revert protocol. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The series of operations forming a transaction must all succeed for the transaction to be successful. </p> <p>If a leave occurs during an operation on the store during a transaction, or if the store's <codeph>RevertL()</codeph> function is called explicitly, the transaction is reverted. This facility parallels the commit and rollback functions which are conventional in databases. However, reverting is not quite the same as rolling back; integrity of data is guaranteed, but some indexes may be corrupted. </p> <p>The commit and revert protocol is useful for ensuring that persistent data moves from one consistent state to another and for guaranteeing the integrity of persistent store data in the event of failures. </p> <p>Typically, changes to a store are not made permanent until they are committed, establishing what is called a commit point. Until such changes are committed, they can be rolled back or reverted, effectively causing the store to revert back to its state before the changes were made. If a process termination or a media failure occurs, the store reverts automatically to its state at the last successful commit point. </p> <p>In permanent file stores the protocol applies to: </p> <ul><li id="GUID-F16D4A25-8103-563C-9DC5-D79F7C275ACB"><p>generating new streams </p> </li> <li id="GUID-A0EA4352-D06B-59D3-9E04-D0B42131AF5B"><p>deleting streams </p> </li> <li id="GUID-83307858-E18D-5F78-8E30-F6754EB6926E"><p>creating new streams </p> </li> <li id="GUID-FAD15660-6405-5C11-A72D-40471D5FE2E5"><p>replacing streams </p> </li> <li id="GUID-A00822E2-2FE7-55CA-9144-7B9F6DA7C3F7"><p>setting the root stream </p> </li> </ul> <p>The protocol also applies to creating new streams or replacing existing streams in dictionary stores. </p> <p>The protocol does<i> not</i> apply to overwriting existing streams. </p> <p>The following diagram shows the idea: </p> <fig id="GUID-9F093A25-C9C6-5590-9427-EBC4BD26AC73"><image href="GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e335381_href.png" placement="inline"/></fig> <section><title>See also</title> <p> <xref href="GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita">Dictionary stores</xref> </p> <p> <xref href="GUID-C9D8D913-C65F-5A69-A606-30F59BFB38E2.dita">File stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D43BBBF3-841E-51A7-A2B2-0695594C821A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D43BBBF3-841E-51A7-A2B2-0695594C821A" xml:lang="en"><title>Using Circular
+Buffers</title><shortdesc>These documents describe how to use circular buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA" xml:lang="en"><title>MakeKeys
+Tutorial</title><shortdesc>The MakeKeys tool is a PC-side stand-alone tool that helps you
+to create a private key-public key pair and generate certificate requests.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The following diagram illustrates the procedure for creating
+a private key, self-signed certificate and a certificate request file. </p><fig id="GUID-BA4923AA-EEFF-43BA-B8BE-F56EE18EB6EA">
+<image href="GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e18553_href.png" placement="inline"/>
+</fig></context>
+<steps-unordered>
+<step id="GUID-85270875-54F4-4212-85C6-7F452EA12C02"><cmd><xref href="GUID-55A6DA94-FAE6-442D-BBA8-82F92D4C63F2.dita">Creating
+a private key and self signed certificate</xref></cmd>
+</step>
+<step id="GUID-8E0FE187-0E5E-4FEB-BBFB-FD33AD39AB0B"><cmd><xref href="GUID-1747534D-063A-45B0-8636-E7767F984BB0.dita">Generating
+a certificate request</xref></cmd>
+</step>
+<step id="GUID-A05827C0-BAD5-430E-A5E1-7FEC3A1D974B"><cmd><xref href="GUID-6CC45734-E497-40A7-AB23-37A24EBAF339.dita">Viewing
+certificate details</xref></cmd>
+</step>
+</steps-unordered>
+<postreq><ul>
+<li><p>The private key can be specified as an argument while signing an installation
+file using the SignSIS tool. For details, see <xref href="GUID-B20EE8A3-D7B2-5872-AF43-001A88C1A46E.dita">SignSIS</xref>.</p></li>
+<li><p>Symbian developer must send the certificate request to a trusted third
+party, that is, a Certificate Authority (CA) for signing. </p><p>The CA verifies
+the identity of the originator of the certificate request. After verification,
+the CA signs the public key (contained in the certificate request) using the
+CA's private key and creates a signed certificate. This signed certificate
+is then sent back to the applicant.</p><p>The CA can return a single certificate
+or a file containing a chain of certificates. This includes intermediate certificates
+in addition to the CA's root certificate and the Symbian developer certificate.
+ </p><note type="important">Certificates returned by CA must be in the base64
+encoded ASCII format.</note></li>
+<li><p>The digital certificate returned by the CA must be bundled with the
+installation file to allow the digital signature to be verified. The self-signed
+certificate can then be discarded.  </p></li>
+</ul></postreq>
+</taskbody><related-links>
+<link href="GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita"><linktext>MakeKeys
+Overview</linktext></link>
+<link href="GUID-557BF1DA-B6E8-521B-89F0-15C84E3BCB1A.dita"><linktext>MakeKeys
+Reference</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4668FE9-52BF-581A-B403-CEC69D5219D9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D4668FE9-52BF-581A-B403-CEC69D5219D9"><title>Find-handle number</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The find-handle number is an integer which uniquely identifies a reference counting object with respect to its object container. </p> <p>Given a find-handle number, a pointer to the corresponding reference counting object can be retrieved using <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-36DBCC38-AEF4-304D-8E61-CEB3151DD0D8"><apiname>CObjectCon::At()</apiname></xref> or <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-F57000D2-0C19-3493-A5CF-07AF58EB92E3"><apiname>CObjectCon::AtL()</apiname></xref>. </p> <p>The find-handle number is a <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> value which combines the unique ID of the object container with the index of the reference counting object within that object container's array. The combination of the two values is non-destructive, i.e. given a find-handle number, both the unique ID part and the index part can be extracted. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D468BDDD-FC61-5571-A4E2-334B6BB9C1E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D468BDDD-FC61-5571-A4E2-334B6BB9C1E3" xml:lang="en"><title>View Server</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>View Server provides a view-based application framework, which allows applications to make and receive requests to show a particular view of their data.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4A78D68-0812-532C-9AF9-85F1483EF3EA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D4A78D68-0812-532C-9AF9-85F1483EF3EA" xml:lang="en"><title>Using Lexical Analysis</title><shortdesc>Topics related to the lexical analysis classes and how to use them.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4AA635F-DF24-541A-A452-192DDBEE4142.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D4AA635F-DF24-541A-A452-192DDBEE4142"><title>Processes and Data Flow</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following figure shows the processes and data flow in the Messaging subsystem on a secured Symbian platform. </p> <fig id="GUID-FEB183B1-C977-51A5-A109-311260311B1E"><title>
+          Processes and dataflow in the Messaging subsystem 
+        </title> <image href="GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e251796_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C" xml:lang="en"><title>Introduction
+to the client-server architecture</title><shortdesc>Provides a high-level description of the Symbian platform client-server
+architecture.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-31FDC700-8C84-58C7-A18A-A3398A5BA6AD"><p> <xref href="GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C.dita#GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C/GUID-177DE161-3EAD-5623-93D7-7DE0A631F193">Why use a server?</xref>  </p> </li>
+<li id="GUID-23B5C6F8-6860-5A5F-9C89-BC25A3CAC6B9"><p> <xref href="GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C.dita#GUID-D4C7A714-F7BB-5A8D-A875-4796395B9B6C/GUID-1B3F9BF2-D909-5C5F-8380-A2D9FDE0D05B">Symbian platform client/server</xref>  </p> </li>
+</ul>
+<section id="GUID-177DE161-3EAD-5623-93D7-7DE0A631F193"><title>Why use a server?</title> <p>It
+is usually appropriate to provide services through a server: </p> <ul>
+<li id="GUID-A16F540F-2A32-5FAE-82F7-A7DC06E694B9"><p>when the services involve
+management of one or more shared system resources. </p> <p>For example, the
+File Server manages all files and file systems on behalf of all client programs.
+The file server may therefore ensure that all file resources are correctly
+shared. Similarly, the Window Server allows all applications to share the
+machine's screen, keyboard, and pointer devices. </p> </li>
+<li id="GUID-A69E1C2D-350C-5B34-B448-C7FBC0DDDC47"><p>when a degree of isolation
+is required between client and server. </p> <p>Since client and server run
+in separate threads, they may also run in separate processes, with separate
+address spaces. This means there is no possibility of communication between
+them except by the interface provided by the server and its client interface.
+Thus, misbehaved clients cannot corrupt the server or any of the resources
+it manages on behalf of other clients. </p> <p>The File Server architecture
+is strongly motivated by this requirement. </p> </li>
+<li id="GUID-D7B7C91B-9F6B-53AC-8177-16CB4ECDF5A7"><p>when asynchronous services
+are required. </p> <p>Asynchronous requests can be handled using Kernel services
+(e.g. timers) and active objects within an application thread. However, when
+the completion of a request is some time in the future, and the application
+program making the request might no longer be present, a continuously-running
+server is appropriate. </p> </li>
+</ul> <p>Most servers are motivated by a combination of requirements such
+as these. </p> <p>There are three distinct aspects to the service provided
+by a server: </p> <ul>
+<li id="GUID-30ADCD43-2C5A-56C0-8992-160BEFA0F58A"><p>a server program, which
+runs in its own thread </p> </li>
+<li id="GUID-8B58B03C-B548-5B7C-B2AB-7491574353C4"><p>several client programs,
+each running in their own thread </p> </li>
+<li id="GUID-AD63FE65-65C0-5DF4-BEEE-B4DDF481521E"><p>a client interface,
+provided by the server, for use by each client program </p> </li>
+</ul> </section>
+<section id="GUID-1B3F9BF2-D909-5C5F-8380-A2D9FDE0D05B"><title>Symbian platform
+client/server</title> <p>In Symbian platform, the server defines a client
+interface API which the client uses to request specific services. The client
+and server programs run in different threads, often in different processes,
+and so cannot directly access each other's address space. They use a message
+passing protocol to communicate. </p> <p>All servers have a name which is
+passed to the server when it is started. A client finds a server through its
+name. </p> <p>The channel of communication between a client and a server is
+known as a <i>session</i>. To make a server request, the client sends a message
+to the server over the session. The message includes a 32-bit request type
+code, and up to four 32-bit parameters. The server may use data transfer services
+to send and receive additional data. When it has finished servicing the message,
+a 32-bit completion code is returned to the client. All client-server communication
+is mediated by the Kernel. </p> <p>A session can be used by all threads in
+a process, and an also be shared by all threads across all processes, and
+not just by the thread that connected to the server. Such a session is said
+to be sharable. </p> <p>A server must indicate that it can support sharable
+sessions. Default behaviour is always to create non-sharable sessions. </p> <p>The
+Symbian platform provides several servers. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75" xml:lang="en"><title>Client
+Server Example Code</title><shortdesc>Example code that explains how to use client server framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-14B5A537-3A16-53F0-B596-32C5D1CDBACA"><p> <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-0465FB35-1E22-5CB1-A8FF-A923D7B33BCF">Simple client server example</xref> </p> </li>
+<li id="GUID-7250FD91-3D1A-54AB-85E4-77458EAC6748"><p> <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-B3A1F02D-DF0E-5209-B891-FAE7FBAFEBB1">Complex client server example</xref> </p> </li>
+</ul>
+<section id="GUID-0465FB35-1E22-5CB1-A8FF-A923D7B33BCF"><title>Simple client
+server example</title> <p><b>Description</b> </p> <p>This pair of examples
+shows a simple use of the client server interface. The client, <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-4DEF499E-D288-5C88-A8B8-0F9C52C65ABB">SimpleClient</xref>, has a single session with the server <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-BFDD4BF0-E60A-5996-B83D-4DE3EACA93FD">SimpleServer</xref>, implemented as a statically linked DLL. </p> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-32692316-d765-41e1-99ba-1d656f7c2870.zip" scope="external"> ClientServerSimple.zip </xref></p><p>Click the following
+link to download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-32692316-d765-41e1-99ba-1d656f7c2870.html" scope="peer"> browse ClientServerSimple </xref> to view the example</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view additional files.</p> <p id="GUID-4DEF499E-D288-5C88-A8B8-0F9C52C65ABB"><b>SimpleClient: simple client</b> </p> <p><b>Build
+Notes</b> </p> <p>The server must be built before the client. This requirement
+is specified in the component description file, <filepath>bld.inf</filepath>. <filepath>SimpleServer.mmp</filepath> is
+listed before <filepath>SimpleClient.mmp</filepath>. Build activities relating
+to particular <filepath>.mmp</filepath> files are carried out in the order
+in which they are listed in the <filepath>bld.inf</filepath> file. </p><p><b>Class
+summary</b></p><p> <xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname>RSessionBase </apiname></xref>  <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2 </apiname></xref>  <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2</apiname></xref> </p> </section>
+<section id="GUID-B3A1F02D-DF0E-5209-B891-FAE7FBAFEBB1"><title>Complex client
+server example</title> <p>This pair of examples shows a more complex use of
+the client server interface. The server can support multiple subsessions within
+a single session, represented by the code in <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-544EE3A6-86A2-57FF-A13B-94658F1DCA16">ComplexServer***</xref>; <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-80C65CEC-7337-50D4-B186-12ADFC5B1155">ComplexClient***</xref> is
+the corresponding client code. </p> <ul>
+<li id="GUID-452F053B-8BB1-5592-B0C2-A92EA5124B15"><p> <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-80C65CEC-7337-50D4-B186-12ADFC5B1155">Complex client</xref> </p> </li>
+<li id="GUID-1F71FAC4-ED3E-58FC-BFBB-61A43983C4C2"><p> <xref href="GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75.dita#GUID-D4DD2109-3A5B-557D-BCF2-89691CDA5C75/GUID-544EE3A6-86A2-57FF-A13B-94658F1DCA16">Complex server</xref>. </p> </li>
+</ul> <p><b>Download</b> </p> <p>Click on the following link to download the
+example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-334e50a3-aaac-4ea0-8b9e-8e73ddd4b183.zip" scope="external"> ClientServerComplex.zip </xref></p><p>Click the following
+link to download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-334e50a3-aaac-4ea0-8b9e-8e73ddd4b183.html" scope="peer"> browse ClientServerComplex </xref> to view example.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view additional files.</p> <p id="GUID-80C65CEC-7337-50D4-B186-12ADFC5B1155"><b>ComplexClient: client requiring
+multiple server subsessions</b> </p> <p><b>Build Notes</b> </p> <p>The server
+must be built before the client. This requirement is specified in the component
+description file <filepath>bld.inf</filepath>. <filepath>ComplexServer.mmp</filepath> is
+listed before <filepath>ComplexClient.mmp</filepath>. Build activities relating
+to particular <filepath>.mmp</filepath> files are carried out in the order
+in which they are listed in the <filepath>bld.inf</filepath> file. </p><p><b>Class
+summary</b></p><p><xref href="GUID-6D8A458C-9A39-3000-A3BC-060A2A3663E6.dita"><apiname> RSessionBase </apiname></xref> <xref href="GUID-1BBE1448-1DF8-33C4-BF9E-5A5F427AEE35.dita"><apiname>RSubSessionBase </apiname></xref> <xref href="GUID-8E316AC4-4676-301A-9A23-659E83AA1D1C.dita"><apiname>CServer2 </apiname></xref>  <xref href="GUID-D5A30C75-E22C-34E8-913B-7D2CA6AD5C51.dita"><apiname>CSession2 </apiname></xref>  <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject </apiname></xref> <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon </apiname></xref> <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx </apiname></xref> </p> <p><b>Security
+issues</b> </p> <p>The example does not demonstrate security issues. Its purpose
+is just to demonstrate the mechanics of the client server relationship. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D4E06508-4346-5294-995A-64B403467EC5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D4E06508-4346-5294-995A-64B403467EC5" xml:lang="en"><title>Light
+API Tutorial</title><shortdesc>This tutorial describes how to use the Light API of HWRM. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-275E5AC3-0D51-5783-8E3F-DCEE6B37970B"><title>Introduction</title> <p>To
+use the Light API, the client must first create an instance of <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>CHWRMLight</apiname></xref> class. <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>CHWRMLight</apiname></xref> can be used in two modes: </p> <ul>
+<li id="GUID-BB6B2D97-C797-5C5C-9CB4-0DA5F7682814"><p>With notify handling. </p> </li>
+<li id="GUID-A22F084E-2204-5589-B664-053EC50DEE0C"><p>Without notify handling. </p> </li>
+</ul> <p>An instance with notify handling is created if the client requires
+up-to-date status information. Else, an instance without a callback pointer
+is created. After an instance is created, lights can be directly controlled
+through the provided class methods. </p> <p>There are three light control
+methods, each with several overloads: </p> <ul>
+<li id="GUID-FE777756-F97C-5B4E-8334-C061FFCC0EBB"><p> <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightOnL()</apiname></xref> to
+turn ON the lights. </p> </li>
+<li id="GUID-FC98BD11-09E2-574D-9A05-5C48B39A6C7E"><p> <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightBlinkL()</apiname></xref> to
+make lights blink. </p> </li>
+<li id="GUID-EA1C4E36-1B59-57AC-B282-91FACF32A3E3"><p> <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightOffL()</apiname></xref> to
+turn OFF the lights. </p> </li>
+</ul> <p>Light intensity can be optionally controlled by the <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightOnL()</apiname></xref> and <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightBlinkL()</apiname></xref> methods. Intensity is controlled
+as a percentage. <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>KHWRMDefaultIntensity</apiname></xref> can
+use default intensity or ambient light sensor controlled intensity, depending
+on general settings. </p> <p>Light fade can be optionally controlled by the <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightOnL()</apiname></xref> and <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightOffL()</apiname></xref> methods.
+Fade simply means that lights are turned ON or OFF over a short period of
+time with multiple gradual intensity changes instead of single instant change. </p> <p> <b>Note</b>:
+All devices do not support this functionality. The current status of any light
+target can be obtained with the <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>LightStatus()</apiname></xref> method. </p> <p>All
+control methods require at least a target mask as a parameter. Devices can
+have multiple independent lights, called targets, such as device primary display
+light or keyboard light. All devices do not support all possible light targets.
+Supported targets may be queried with the <xref href="GUID-3B241B7B-C5D3-33AE-9D51-3F3B78530F60.dita"><apiname>SupportedTargets()</apiname></xref> method. </p> <p>All
+control methods accept optional duration parameter also. Any infinite duration
+call sets session base light state for targets it affects. This base state
+is what the target is set to when any duration timer affecting it expires.
+If there are no infinite duration calls for a target session, any timer expiry
+for that target sets the target to the default state (which is either ON or
+OFF), depending on the device inactivity time and the inactivity time-limit
+defined by general settings. </p> <p>Each target can have only one duration
+timer. Hence, if a target with ongoing timer is issued with new orders, the
+ongoing timer is cancelled and a new one is set. </p><p>Using Light API, you
+can perform any of the tasks listed in the Procedure section.</p> </section>
+<section><title>Procedure</title> <ul id="GUID-95D4E107-AA25-51F0-B081-6889586420F8">
+<li id="GUID-25998A3D-1DE9-52FA-8CC7-26657DF8724C"><p><xref href="GUID-CD87FAF6-A11D-4260-9472-CABA18BF86B1.dita">Creating
+a light instance</xref>  </p> </li>
+<li id="GUID-8567BEBC-4992-5F8F-B9E2-EE1D20C120A8"><p><xref href="GUID-4860A4E6-1641-47D9-8243-C03779276C6D.dita">Retrieving
+the supported light targets of a device</xref>  </p> </li>
+<li id="GUID-4A985353-C4E0-5ABA-AB97-49E24B99B924"><p><xref href="GUID-D21191CC-965A-4F92-9792-4B34D54114DA.dita">Retrieving
+the current light status</xref>  </p> </li>
+<li id="GUID-A22870FD-1722-5DCA-BA29-19C66792F148"><p><xref href="GUID-6DA81F01-FBD7-4167-B722-832888DEC0AD.dita">Reserving
+light targets</xref>  </p> </li>
+<li id="GUID-C136D460-E987-5A04-B6BE-0AB25115623E"><p><xref href="GUID-4FE4B515-EE2B-47DB-BECE-E390E4EB2C3E.dita">Switching
+ON the lights</xref>  </p> </li>
+<li id="GUID-125018AA-1FAC-5EB2-A6A9-F0A7E01A2484"><p><xref href="GUID-056736E0-3DF0-49FE-A44D-1A8E47FE45A0.dita">Switching
+OFF the lights</xref>  </p> </li>
+<li id="GUID-B68A413F-892D-5F5A-8EF9-58C9549050A8"><p><xref href="GUID-3715E8EE-FF0A-4344-90F1-1609D54C166B.dita">Blinking
+lights</xref>  </p> </li>
+<li id="GUID-125ED39B-08F1-5AE6-8664-93EFC03E6016"><p><xref href="GUID-CF6C76A5-AC87-4EBD-AECF-35B456219B94.dita">Releasing
+the reserved lights</xref>  </p> </li>
+<li id="GUID-3F750C8E-6668-52A5-A7C5-DDD960DECD6E"><p><xref href="GUID-2382F758-35CF-4378-A5D5-183121E3BF6A.dita">Releasing
+the instance</xref>  </p> </li>
+</ul> </section>
+<section><title>See also</title> <p><xref href="GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita">Light
+API</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D51600DD-B79A-5A4D-B2D1-36C0A9F9D115.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D51600DD-B79A-5A4D-B2D1-36C0A9F9D115" xml:lang="en"><title>How
+to use CleanupDeletePushL()</title><shortdesc><codeph>CleanupDeletePushL()</codeph> pushes a <codeph>TCleanupItem</codeph> onto
+the cleanup stack ready for <codeph>CleanupStack::PopAndDestroy()</codeph> to
+delete.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>CleanupDeletePushL()</codeph> templated function constructs
+and pushes a <codeph>TCleanupItem</codeph> onto the cleanup stack. When <codeph>CleanupStack::PopAndDestroy()</codeph> is
+called, the object encapsulated by the <codeph>TCleanupItem</codeph> is deleted.</p>
+<codeblock id="GUID-6AED7BDB-9CB8-588A-A286-AEAEECDB6868" xml:space="preserve">...
+CTestOne* one = new (ELeave) CTestOne;
+CleanupDeletePushL(one);
+one-&gt;SetTextL(KTxtHelloWorld);
+CleanupStack::PopAndDestroy();
+...</codeblock>
+<p>The <codeph>TCleanupItem</codeph> object encapsulates a pointer to the <codeph>CTestOne</codeph> object;
+the cleanup operation is the static function <codeph>Delete()</codeph> of
+the templated class <codeph>CleanupDelete&lt;class T&gt;</codeph>. This is implemented
+by simply deleting <codeph>CTestOne</codeph>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB" xml:lang="en"><title>Floating
+point support</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>ARM provide a hardware floating point coprocessor that provides floating
+point computation that is fully compliant with IEEE Std 754-1985. This is
+an implementation of the ARM Vector Floating Point Architecture (VFPv2). We
+refer to the coprocessor as the <i>VFP unit</i>. </p>
+<p>Symbian platform supports the use of VFPv2 on platforms where the required
+hardware is present in both <i>RunFast</i> mode and in <i>IEEE-without-exceptions</i> mode.
+See ARM's Vector Floating-point Coprocessor Technical reference Manual for
+more details on the coprocessor, its architecture, and its execution modes. </p>
+<p>Note that Symbian platform does not support floating point exceptions in
+any mode. </p>
+<ul>
+<li id="GUID-4427B5C6-BB5D-5166-8E29-05E7744B8091"><p><xref href="GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita#GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB/GUID-00C045C3-2760-56E0-A8BB-F4D23E0230F2">Using the Vector Floating Point Architecture (VFP) in an application</xref>  </p> </li>
+<li id="GUID-B3845C41-B553-54A8-87ED-3B439DCF2F2D"><p><xref href="GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita#GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB/GUID-7E2C76D4-8511-528C-9FA5-ED64F93175A0">Run time check for hardware floating point</xref>  </p> </li>
+<li id="GUID-E71E5EBA-6421-5EBA-8C93-0F31F445C79B"><p><xref href="GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita#GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB/GUID-AE954A2C-1E16-5361-A464-9FD2FFFEA40A">Execution modes</xref>  </p> </li>
+</ul>
+<section id="GUID-00C045C3-2760-56E0-A8BB-F4D23E0230F2"><title>Using the Vector
+Floating Point Architecture (VFP) in an application</title> <p>An application
+can use VFP in two ways: </p> <ul>
+<li id="GUID-A92CC6A6-7C06-569B-9A7B-1BECF7795F9D"><p>indirectly through the
+use of floating point support functions. </p> </li>
+<li id="GUID-7B5D5A48-5479-577A-A611-74B5E872C01A"><p>directly in its code,
+either generated by the compiler, or hand-written in assembler. </p> </li>
+</ul> <p><b>Indirect use</b> </p> <p>By default, all applications are built
+to use the floating point support functions. </p> <p>On a device without a
+VFP unit, floating point support functions are implemented in software and
+operate slowly. On a device with a VFP unit, the floating point support functions
+are handled by the VFP unit, and operate faster than when implemented in software. </p> <p>Note
+that applications do not need to make any changes to take advantage of VFP-enabled
+floating point support functions, if they are provided in the device's ROM.
+Such functions are used automatically at run time. </p> <p><b>Direct use</b> </p> <p>To
+generate VFP <i>specific</i> code at <i>compile</i> time, you need to add
+the <xref href="GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita">armfpu</xref> statement
+with the <codeph>vfpv2</codeph> keyword into your <filepath>.mmp</filepath> file: </p> <codeblock id="GUID-F7480C2F-1DF9-554B-BB36-4A02D8D72697" xml:space="preserve">armfpu vfpv2</codeblock> <p>On
+a device with a VFP unit, this option results in code that runs faster than
+the floating point support functions generated by <codeph>armfpu         
+    softvfp</codeph>. Note, however, that binaries generated with VFP specific
+code do not work on devices without a VFP unit - any call to VFP specific
+code results in a KERN-EXEC 3 panic. </p> <p>On those devices that have a
+VFP unit, the functions supplied in the <xref href="GUID-1DB7AE7A-A505-3530-AC2B-EBAEFCD3F36A.dita"><apiname>Math</apiname></xref> class, that
+perform trigonometric and transcendental operations may also be implemented
+using VFP specific code. This is transparent to application code. </p> </section>
+<section id="GUID-7E2C76D4-8511-528C-9FA5-ED64F93175A0"><title>Run time check
+for hardware floating point</title> <p>An application can find out at run
+time whether a device supports hardware floating point by calling <xref href="GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8.dita#GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8/GUID-573C49D6-7763-37AE-B2B2-4C8FB1327E21"><apiname>HAL::Get()</apiname></xref>,
+using the <xref href="GUID-6476C061-E2DB-3167-8556-DAECEE8EB82A.dita"><apiname>EHardwareFloatingPoint</apiname></xref> attribute. The following
+code fragment shows how you would do this: </p> <codeblock id="GUID-821A924B-9898-5E2B-A65C-C2D270B296CF" xml:space="preserve">...
+TInt supportedFp;
+
+TInt HalVfp = HAL::Get(HALData::EHardwareFloatingPoint, supportedFp);
+if (HalVfp == KErrNone &amp;&amp; (supportedFp &amp; EFpTypeVFPv2))
+    {
+    // HAL says that we have a VFP unit
+    ...
+    }
+else
+    {
+    // HAL says that we do NOT have a VFP unit
+    ...
+    }
+...        
+    </codeblock> <p>Note that, strictly speaking, the return value from <xref href="GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8.dita#GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8/GUID-573C49D6-7763-37AE-B2B2-4C8FB1327E21"><apiname>HAL::Get()</apiname></xref> indicates
+whether or not the attribute is supported. To deduce whether hardware floating
+point is supported by the device, the following logic applies: </p> <ul>
+<li id="GUID-30F1BC25-CF7A-590A-B2C3-F361C7AD8DA4"><p>If the Hardware Abstraction
+Layer (HAL) does not support the <xref href="GUID-6476C061-E2DB-3167-8556-DAECEE8EB82A.dita"><apiname>EHardwareFloatingPoint</apiname></xref> attribute,
+then <xref href="GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8.dita#GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8/GUID-573C49D6-7763-37AE-B2B2-4C8FB1327E21"><apiname>HAL::Get()</apiname></xref> returns <xref href="GUID-F89DA3F0-2A48-3F9B-8F08-29350E92D0E4.dita"><apiname>KErrNotSupported</apiname></xref>.
+This can be interpreted as meaning that the device does not support hardware
+floating point. </p> </li>
+<li id="GUID-DDCB753F-E958-53E4-BC36-66C22162AD3B"><p>If the HAL does support
+the <xref href="GUID-6476C061-E2DB-3167-8556-DAECEE8EB82A.dita"><apiname>EHardwareFloatingPoint</apiname></xref> attribute, then <xref href="GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8.dita#GUID-BD00E7FC-C234-3111-87A5-10F79EB0F2B8/GUID-573C49D6-7763-37AE-B2B2-4C8FB1327E21"><apiname>HAL::Get()</apiname></xref> returns <xref href="GUID-6CA4F1ED-7947-3087-B618-D35858FAA3BC.dita"><apiname>KErrNone</apiname></xref>.
+In this case the <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> variable <codeph>supportedTypes</codeph> in
+the above example code fragment will contain an enum value of type <xref href="GUID-CA12EA77-2DBA-3214-8E62-0D7A51913DE3.dita"><apiname>TFloatingPointType</apiname></xref> describing
+the type of hardware floating point supported. If hardware floating point
+is supported, then currently, this can only be ARM Vector Floating Point Architecture
+(VFPv2) as indicated by the <xref href="GUID-6416724B-8537-3A01-893F-88C5E7130CE7.dita"><apiname>EFpTypeVFPv2</apiname></xref> enum value. </p> </li>
+</ul> </section>
+<section id="GUID-AE954A2C-1E16-5361-A464-9FD2FFFEA40A"><title>Execution modes</title> <p>Symbian
+platform can support the two execution modes: <codeph>RunFast</codeph> and <codeph>IEEE-without-exceptions</codeph>. </p> <table id="GUID-6BAE9BC4-8961-54CE-9CFF-477392DF53A7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <codeph>RunFast</codeph>  </p> </entry>
+<entry><p>In this mode, denormalised numbers, i.e. those outside the range
+of normal floating point values, are treated as zero, and a default <codeph>NaN</codeph> (<i>Not
+a Number</i>) value is used for all <codeph>NaN</codeph> situations regardless
+of the inputs. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>IEEE-without-exceptions</codeph>  </p> </entry>
+<entry><p>In this mode, denormalised numbers are treated as their actual values,
+and the IEEE754-mandated values for <codeph>NaN</codeph> s are used. </p> <p>The
+floating point model mandated by the Java specification is identical to this
+mode, and means that this mode is sufficient to implement a VFP-accelerated
+JVM. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>An application can set (and check) the execution mode at run time
+by calling <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-79902CB3-FD04-3F31-8196-995B004CF116"><apiname>User::SetFloatingPointMode()</apiname></xref>, and passing one
+of the <xref href="GUID-C71880A1-308E-36B6-BBAC-232513868921.dita"><apiname>TFloatingPointMode</apiname></xref> enum values, which represent
+the possible modes. </p> <p>The function can still be used even if hardware
+floating point is not supported. In this case it returns <xref href="GUID-F89DA3F0-2A48-3F9B-8F08-29350E92D0E4.dita"><apiname>KErrNotSupported</apiname></xref>. </p> <p>Applications
+that do not require <codeph>NaN</codeph> values to be as specified by IEEE754
+and are not concerned with accuracy when dealing with very small (denormalised)
+quantities, can select <codeph>RunFast</codeph> mode for a possible performance
+increase. Games or 3D engines are likely to fall into this category. Applications
+that require accurate IEEE754 interpretations, such as the JVM, can explicitly
+select <codeph>IEEE-without-exceptions</codeph> mode, and if this fails as
+being unsupported, refuse to run. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A" xml:lang="en"><title>Creating
+resource header files</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Typically when you create an application, there are cases where you
+need to create an enumerated set of command IDs (which are symbols with integer
+values). These defined symbols can then be used in both your code and resource
+files. Common examples of these cases, include:</p>
+<ul>
+<li><p>Custom command IDs used for mapping mobile device user input
+based upon <parmname>Options</parmname> menu selections to command handling.
+These custom command IDs are mapped to the text displayed for the command
+in the <parmname>Options</parmname> menu in resource files, and then are passed
+back to the application by the application framework.</p></li>
+<li><p>Control IDs in dialogs to allow references to the dialog
+controls from C++ code.</p>
+<itemgroup>
+<p>For more information on control IDs for dialogs, see Using Dialogs API.</p>
+</itemgroup>
+</li>
+<li><p>Application view IDs. Note that these could also be enumerated
+in the header files for the views.</p></li>
+<li><p>IDs for other resource structures, such as for <parmname>TABS</parmname> in
+the status pane.</p></li>
+</ul>
+<p>These enumerated values need to be defined in a resource file, which
+by convention has the extension <parmname>hrh</parmname>, The syntax is as
+follows:</p>
+<codeblock xml:space="preserve" id="GUID-2CDD719A-48CA-47EF-A737-7CCB62DF6FC6">enum TCommandIds
+    {
+    ECmdAppTest1 = 1,
+    ECmdView1Cmd1,
+    ECmdView1Cmd2,
+    ECmdView1Cmd3,
+    ECmdView2Cmd1,
+    ECmdView2Cmd2,
+    ECmdView2Cmd3,
+    ECmdView2Cmd4
+    };</codeblock>
+<p>where</p>
+<ul>
+<li><p><parmname>enum</parmname> is the keyword declaration the
+set of integer values. Note that you would use this keyword for each set of
+enumerated values you defined.</p></li>
+<li><p><parmname>TCommandIds</parmname> is a label for the list
+of enumerated values. This label is not used in the code or resource files.</p>
+</li>
+<li><p><parmname>ECmdAppTest1</parmname> is a symbol that can be
+used in your code or resource files</p></li>
+<li><p><parmname>=</parmname> is the operator used for setting the
+value to the symbol</p></li>
+<li><p><parmname>1</parmname> is the specific value assigned to
+the enumerator symbol</p></li>
+</ul>
+<p>Each enumerator is followed by a <parmname>,</parmname>, except for
+the last value. It is recommended to have a final <parmname>;</parmname> after
+the enumerated list. If a specific value is not assigned to a symbol in the
+enumerated list, then the value is that of the previous enumerator plus one.
+Thus, the value for <parmname>ECmdView1Cmd1</parmname> above is 2.</p>
+<p>For more information about the use of the <parmname>enum</parmname> statement,
+see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format-ENUM.html#DevTools%2dref%2erss%2denum" format="application/java-archive">ENUM statement</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354"><title>wcharentrypoint</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>wcharentrypoint</codeph>  </p> <p>Use <codeph>wcharentrypoint</codeph> statement to specify that the entry point for a standard EXE is wide character (<codeph>wmain</codeph>). Otherwise, the default entry point for a standard EXE is narrow character (<codeph>main</codeph>). </p> <p>This enables the toolchain to include either of the following libraries based on the type of entry point: </p> <ul><li id="GUID-6FA8A633-5B6A-5581-8C0A-2B858DFC267E"><p> <filepath>libcrt0.lib</filepath> — To support the narrow character entry point, if <codeph>wcharentrypoint</codeph> statement is not included in the <filepath>.mmp</filepath> file. </p> </li> <li id="GUID-984A3194-01D8-54D8-84F1-71ABC98CEA42"><p> <filepath>libwcrt0.lib</filepath> — To support the wide character entry point, if <codeph>wcharentrypoint</codeph> statement is included in the <filepath>.mmp</filepath> file. </p> </li> </ul> <p>The <codeph>wcharentrypoint</codeph> statement is supported only on ARM ABI and Symbian emulator compliant platforms, such as, <codeph>ARMv5</codeph>, <codeph>ARMv5_ABIv2</codeph>, <codeph>GCCE</codeph> and <codeph>WINSCW</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597" xml:lang="en"><title>Vibra
+API</title><abstract><shortdesc>Vibra API provides the functionality to control the device
+vibra, which is accessed using the <apiname>CHWRMVibra</apiname> instance.
+It also provides methods to retrieve the current settings of the vibration
+feature in the user profile and the current status of the vibra. It uses synchronous
+method calls which block the client application until a response is received
+from the plug-in. </shortdesc> <p>Vibra API also allows the client to request
+for tactile vibration feedback. </p> </abstract><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The API consists of <codeph>CHWRMVibra</codeph>,<codeph>MHWRMVibraObserver</codeph> and <codeph>MHWRMVibraFeedbackObserver</codeph> classes. </p>
+<p>It provides the following fields: </p>
+<table id="GUID-65DF6175-8150-5F3D-BF8F-D7D9E1105C1A">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry valign="top"><p> <b>Fields</b>  </p> </entry>
+<entry valign="top"><p> <b>Values </b>  </p> </entry>
+<entry valign="top"><p> <b>Descriptions</b>  </p> </entry>
+</row>
+</thead>
+<tbody>
+<row>
+
+<entry><p> <codeph>KHWRMVibraMinIntensity</codeph>  </p> </entry>
+<entry><p>-100 </p> </entry>
+<entry><p>Minimum allowed intensity setting for vibra. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KHWRMVibraMinPulseIntensity</codeph>  </p> </entry>
+<entry><p>1</p> </entry>
+<entry><p>Minimum allowed intensity setting for vibra pulse. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KHWRMVibraMaxIntensity</codeph>  </p> </entry>
+<entry><p>100</p> </entry>
+<entry><p>Maximum allowed intensity setting for vibra. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KHWRMVibraMaxDuration</codeph>  </p> </entry>
+<entry><p>(<codeph>KMaxTInt</codeph>/1000)-1 </p> </entry>
+<entry><p>Maximum allowed duration value in milliseconds. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KHWRMVibraInfiniteDuration</codeph>  </p> </entry>
+<entry><p>0</p> </entry>
+<entry><p>Specifies that vibrating must continue for maximum vibrating time
+supported by device if vibrating is not explicitly stopped. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<section><title> Observer</title> <p>A separate callback interface <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>MHWRMVibraObserver</apiname></xref> for status reporting is also
+used. The client creates an instance of <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>CHWRMVibra</apiname></xref> using <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>NewL()</apiname></xref>. If the client requires the status information,
+it must provide a callback pointer of the <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>MHWRMVibraObserver</apiname></xref> implementing
+class for the <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>NewL()</apiname></xref> method. </p> <fig id="GUID-95D74CC2-CEDD-569B-8B34-A47FDA4F8DE0">
+<title>              Vibra API Interfaces            </title>
+<image href="GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e110354_href.jpg" placement="inline"/>
+</fig> </section>
+<section><title>Tactile vibration feedback</title> <p>Tactile vibration is
+used in many touch screen devices to provide vibration feedback to the user
+through display surface. </p> <p>The clients can specify the intensity and
+duration of the feedback pulse, and receive notifications when the tactile
+feedback settings changes in the user profile through <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>MHWRMVibraFeedbackObserver</apiname></xref> class. </p> <p> <b> Note</b>: The tactile feedback functionality is only available to the clients configured
+at the firmware build time (Symbian platform licensees). </p> <table id="GUID-D75949EB-BC44-4120-825B-8B905562777D"><title>Definitions</title>
+<tgroup cols="2"><colspec colname="COLSPEC0" colwidth="0.42*"/><colspec colname="COLSPEC1" colwidth="1.58*"/>
+<tbody>
+<row>
+<entry><p>Vibra frozen state </p> </entry>
+<entry><p>Whenever vibra is released, its current state is stored as frozen
+state. On next reserve, the user can specify that the frozen state be restored. </p> </entry>
+</row>
+<row>
+<entry><p>Vibra virtual state </p> </entry>
+<entry><p>Reserves the specified resource. If reservation is not suspended,
+then actual vibra is also set to the same state. If reservation is suspended,
+actual vibra is not affected by any control methods.</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D542B24D-5A17-516C-85B0-66A5E8A97946.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D542B24D-5A17-516C-85B0-66A5E8A97946" xml:lang="en"><title>Exception
+handling</title><shortdesc>Description of the functions related to Exception handling.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When an exception occurs, such as dividing by zero or an access violation,
+what happens depends on whether the thread has an exception handler. If a
+thread has no exception handler or has an exception handler which will not
+handle the type of exception identified by the <xref href="GUID-7AF19D5F-E146-3BFA-9741-58B12D4E85A8.dita"><apiname>TExcType</apiname></xref> enumeration,
+then the exception is passed to the Kernel for handling. The default action
+is to panic the offending thread. </p>
+<p>If a thread has an exception handler, then the handler is executed in the
+context of the thread on which the exception is raised; control returns to
+the point of exception. If a thread calls <codeph>RaiseException()</codeph> and
+there is no handler for that type of exception, then a <codeph>KERN-EXEC 3</codeph> panic
+is raised. </p>
+<p>The following functions are involved in exception handling: </p>
+<ul>
+<li id="GUID-4A9F7B75-D1EF-5558-A24C-8BB7F31C12DD"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-E11E87FD-AFA4-353F-887B-EF36154E4B4E"><apiname>User::ExceptionHandler()</apiname></xref>  </p> </li>
+<li id="GUID-BCC7FD2E-BEC7-5397-9E24-D9BBBDC00FBE"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-FDB3FF0D-705D-3EFE-9666-F26F7E390D54"><apiname>User::SetExceptionHandler()</apiname></xref>  </p> </li>
+<li id="GUID-3C307BB1-D42D-5227-986A-4DBB235AC2FA"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-77B2CCE3-B8FB-331A-9E61-15B2040CEC70"><apiname>User::ModifyExceptionMask()</apiname></xref>  </p> </li>
+<li id="GUID-A42D397F-8D73-5A9D-98BE-9F7668A0C148"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-6AB971F1-EE72-38E9-AA4A-9E0D8FACD4FE"><apiname>User::RaiseException()</apiname></xref>  </p> </li>
+<li id="GUID-02647535-1F99-557D-AEC9-B3687799E2C6"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-3016380F-1101-395E-AEC8-1A1BA8DF3914"><apiname>User::IsExceptionHandled()</apiname></xref>  </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D553D41C-D724-510A-A239-66CC158D6984.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D553D41C-D724-510A-A239-66CC158D6984"><title>nostdcpp</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>nostdcpp</codeph>  </p> <p>This keyword must be included in the project specification file (<filepath>.mmp</filepath>) to build a standard target (<codeph>STDEXE</codeph>, <codeph>STDDLL</codeph>, and <codeph>STDLIB</codeph>) using the Symbian C++ semantics for global <codeph>new</codeph> operator. To know how the global <codeph>new</codeph> operator is handled in standard C++ and Symbian C++, refer to <xref href="GUID-2C5B58F2-6BD2-5C2B-8E1B-CFB3D7EB6ED9.dita"> Standard C++ Library</xref> in the <xref href="GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita">Generic Open Libraries (P.I.P.S.)</xref>. </p> <p>By default all standard targets use the standard C++ semantics for global <codeph>new</codeph> operator. </p> <p> <b>Note:</b> If an <filepath>.mmp</filepath> file includes both <codeph>nostdcpp</codeph> and <codeph>stdcpp</codeph> keywords, the build system will ignore the keywords and use the standard C++ semantics to build the target. </p> <section><title>See also</title> <p><xref href="GUID-809D428D-5BF6-57FF-952D-2FDF88E50833.dita">stdcpp</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D557CC2C-C045-5818-B2F7-9BD8BC39257D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D557CC2C-C045-5818-B2F7-9BD8BC39257D" xml:lang="en"><title>Address
+Space and Process</title><shortdesc>Programs in Symbian platform consist of a number of processes,
+each of which contains one or more conceptually concurrent threads of execution.
+Each thread has at least one <i>chunk</i> of memory.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Each user process has its own private address space, that is, a collection
+of memory regions which that process can access. A user process cannot directly
+access memory areas in the address space of another process. Threads belonging
+to a user process run at user privilege level. </p>
+<p>There is a special process, the Kernel process, whose threads run at supervisor
+privilege level. This process normally contains two threads: </p>
+<ul>
+<li id="GUID-5D2E1FB5-0DA1-5880-933C-A2335465D4A1"><p>the Kernel server thread,
+which is the initial thread whose execution begins at the reset vector, and
+which is used to implement all Kernel functions requiring allocation or deallocation
+on the Kernel heap </p> </li>
+<li id="GUID-1F10F528-B4B0-5DCD-8D39-15A8C3CDBF03"><p>the null thread, which
+runs only when no other threads are ready to run. The null thread places the
+processor into idle mode to save power. </p> </li>
+</ul>
+<p>The address space of a process consists of a number of <i>chunks</i>, where
+a chunk is a region of RAM mapped into contiguous virtual addresses. On creation,
+a user process contains one thread (the main thread) and one to three chunks;
+these are: </p>
+<ul>
+<li id="GUID-48BE05FA-5AB5-5178-9C43-E7B8B4909856"><p>The <b>stack/heap</b> chunk
+containing the stack and the heap used by the main thread of the process;
+this chunk always exists. </p> </li>
+<li id="GUID-09FDE7D1-37C9-5988-B06A-9A3588081AC1"><p>The <b>code</b> chunk;
+this exists only if the process is loaded into RAM (it is not ROM resident). </p> </li>
+<li id="GUID-F7F06C52-468D-5C29-B985-B8615530786D"><p>The <b>data</b> chunk;
+this exists only if the process has static data. </p> </li>
+</ul>
+<p>If a process creates additional threads, then a new chunk is created for
+each new thread. Each chunk contains the thread's stack; if a new thread is
+not sharing an existing heap, then the chunk also contains a new heap. </p>
+</conbody><related-links>
+<link href="GUID-5FBA9BB1-94A2-470C-9932-C4255E3774C0.dita"><linktext>Shared Memory
+Between Threads</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5987006-A871-5F4E-AEA0-5A3B092D996A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D5987006-A871-5F4E-AEA0-5A3B092D996A" xml:lang="en"><title>Variable TCP
+Receive Window</title><shortdesc>This section provides the summary of concepts and tutorials related
+to variable TCP receive window. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e180696_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF"><title>Introduction to Pictures</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A <i>picture</i> is an object which can be drawn to a <keyword>graphics context</keyword> and can be stored and restored. A picture is stored, together with its picture header, in any type of store using a storemap. </p> <fig id="GUID-D5BD3843-5498-5B3B-A4D7-A76630CC185A"><title>
+          Relationship between picture headers and pictures in a store 
+        </title> <image href="GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e177925_href.png" placement="inline"/></fig> <p>A picture can thus be any object which draws an image — be it a bitmap or a set of graphic commands. </p> <p>Additionally, two common desirable facilities for a picture to have are: </p> <ul><li id="GUID-31BB52AE-3EB8-5A1E-9699-389E7EEBC8E1"><p>the ability to be cropped </p> </li> <li id="GUID-1FEE0BDD-9FC7-59C1-9A67-6E9D8F4214A7"><p>the ability to be scaled </p> </li> </ul> <p>Scaling can be done in one of three ways: </p> <ul><li id="GUID-7F1DDD78-179B-55F0-A335-4D3D89D95111"><p>by specifying percentage scale factors for the width and height </p> </li> <li id="GUID-A6515AC1-0F68-53E6-8B8E-A78D9FDAA148"><p>by specifying the picture size in pixels </p> </li> <li id="GUID-A783EEE7-F1EE-5264-9CE3-949733013C79"><p>by specifying the picture size in twips </p> </li> </ul> <p>Cropping can be done in two ways: </p> <ul><li id="GUID-9DF0397E-406E-50C7-B139-F8562EB07209"><p>by specifying a set of margins in twips </p> </li> <li id="GUID-C8E978E6-FC73-596C-A0CE-CD3F29B969A3"><p>by specifying a further set of margins in pixels, for additional cropping </p> </li> </ul> <p>The drawing operation positions and draws the scaled and cropped picture on the graphics device. </p> <fig id="GUID-C2AB291D-63B5-5FD4-ADB8-DA2E5D33E488"><title>
+          The relationships between the picture classes 
+        </title> <image href="GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e177987_href.png" placement="inline"/></fig> </conbody><related-links><link href="GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita"><linktext>Picture Concepts</linktext> </link> <link href="GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita"><linktext>Picture Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5AA9C67-CCE3-53BE-A50E-FAE73699E68F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D5AA9C67-CCE3-53BE-A50E-FAE73699E68F" xml:lang="en"><title>Telephony API for Applications Examples</title><shortdesc>This describes the example code for Telephony API for Applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D5B6519B-E902-56C3-80CF-DCEE3F8501BB" xml:lang="en"><title>MultiRead2:
+Reading Multiple Resource Files with Cross-referenced Resources</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The files reproduced here are the main files contained in the examples
+directory. Some extra files may be needed to run the examples, and these will
+be found in the appropriate examples directory. </p>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-796658e5-d98c-4c42-a5a8-e3b9e8faa3f7.zip" scope="external">MultiRead2.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-796658e5-d98c-4c42-a5a8-e3b9e8faa3f7.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.   </section>
+<section><title>Description</title> <p> <filepath>MultiRead2</filepath> shows
+how to use multiple resource files with cross-referenced resources. It depends
+on the resource file created for the <xref href="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita">MultiRead1</xref> and <xref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita">SigCheck</xref> projects. </p> <p>It
+introduces a second resource file, <filepath>MultiRead2</filepath>, which
+contains an LLINK to a resource defined in the <xref href="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita">MultiRead1</xref> project.
+The important point to note is that the effect of introducing this second
+resource file is minimal: just another #include file; and the logic in <codeph>doExampleL()</codeph> would
+be identical whether the LLINK pointed to another resource in the same file
+or a different file. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-3DBEDFDD-34F6-3208-B77E-16377A30A562.dita"><apiname>TResourceReaderInterprets</apiname></xref> resource
+data read from a resource file</p></section>
+<section><title>Build Notes</title> <p>You must have built <xref href="GUID-0552E177-B824-5E2D-A5A6-0F0694EC13EE.dita">MultiRead1</xref> and <xref href="GUID-9A1317EE-A101-5ACA-A1D4-9D07168157D0.dita">SigCheck</xref> beforehand. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5B8DC2A-E2BA-54FE-A359-1496356AF93F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D5B8DC2A-E2BA-54FE-A359-1496356AF93F"><title>How to delete files and directories</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use <codeph>RmDir()</codeph> to delete an empty directory. Use <codeph>Delete()</codeph> to delete a file. </p> <codeblock id="GUID-9673872B-2952-5076-AA8D-F8E2B3E5AFA6" xml:space="preserve">
+// Deletes KTopDir, deleting all files and sub-directories first
+User::LeaveIfError(fsSession.Delete(KFile2));
+User::LeaveIfError(fsSession.RmDir(KDir1));
+User::LeaveIfError(fsSession.RmDir(KDir2));
+User::LeaveIfError(fsSession.Delete(KFile1));
+User::LeaveIfError(fsSession.RmDir(KTopDir)); ... </codeblock> <section><title>Notes</title> <ul><li id="GUID-DC2A9104-5B7E-5481-8368-461DFC8B230F"><p>Files must be closed and must not be read-only in order to be deleted. </p> </li> <li id="GUID-DF4CF5BA-BC2E-51DB-8264-0FF0538ADD74"><p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-C28319AD-2CC7-3009-9707-51C9EF02C51B"><apiname>RFs::Delete()</apiname></xref> does not accept the use of <keyword>wildcards</keyword>. To delete multiple files, use <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita#GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7/GUID-71056B22-AC2A-3E91-8896-8A6F2FB9B619"><apiname>CFileMan::Delete()</apiname></xref> instead. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5F57D81-6B59-5C7E-A2C8-A5E29873346B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D5F57D81-6B59-5C7E-A2C8-A5E29873346B"><title>Managing send and receive reports</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes the sent reports used to know how the data packets are being sent to the host (SR) and the receive reports used to get the feedback from the receiving hosts (RR). </p> <p>A sent or receive report along with the name of its user on the RTCP (control) port is multi-casted periodically. This is done to have information on who is joining or leaving at any moment and how well you receive the data in a session. </p> <p>The RTCP sender and receiver reports describe one timing and sequence number space for each SSRC and do not carry a payload type field. </p> <section><title>Sending reports</title> <p>A Sender Report has three sections: </p> <ol id="GUID-E9E3CF3F-BEEF-51FC-909C-A3EC55E079E1"><li id="GUID-D12D3E11-1910-5E58-A906-C0A39D56EB65"><p>Header </p> </li> <li id="GUID-765CC21A-FE41-573B-86EF-6947F089E4D0"><p>Sender information, which summarises the data transmissions from current sender. </p> </li> <li id="GUID-C8143D49-5A2E-5E21-A386-341449FFB54B"><p>Reception report block (zero or more), which gives the reception of RTP packets from a single synchronisation source. </p> </li> </ol> <p> <codeph>RRtcpSRPart</codeph> provides the information on the data transmitted from the sender as a sender report (SR). </p> <p>You can access the following information from an SR packet: </p> <p> <codeph>NTPTimeStamp</codeph>: Gets the absolute date and time when the report was sent. This is represented in timestamp format of the Network Time Protocol (NTP), which is in seconds relative to 0h UTC on 1 January 1900. This is used in combination with timestamps returned in reception reports from other receivers to measure round-trip propagation to those receivers. </p> <p> <codeph>RTPTimeStamp</codeph>: Gets the RTP time when this packet was sent. RTP time is profile dependant. </p> <p> <codeph>ByteCount</codeph>: Gets the number of bytes sent. </p> <p> <codeph>PacketCount</codeph>: Gets the total number of RTP data packets transmitted by the sender from the start of the transmission until the time this SR packet was generated. You must reset the count if the sender changes its SSRC identifier. </p> <p> <codeph>Extension</codeph>: Retrieves an extension defined for SR packets (also for RR packets) for any additional information to be reported about sender or receiver. </p> <p> <b>Note:</b>  <codeph>RRtcpSRPart</codeph> does not have a close function as the resources accessed through this handle are owned by object of <codeph>RRtpReceiveSource</codeph>. </p> </section> <section><title>Receiving reports</title> <p>To know how the data packets are being sent to the host, feedback is required from the receiving hosts. <codeph>RRtcpRRItem</codeph> supports you in getting this information as receiving reports. </p> <p> <codeph>RRtcpRRPart</codeph> provides a list of the receipt reports (RR) from the receiving hosts reporting on the send stream. You can also create an RR object by calling <codeph>RRtpSession::GetRRs()</codeph>. </p> <p>To get a specific receive report of a host, call the index operator <codeph>RRtcpRRPart::operator[]</codeph>. This returns an object of <codeph>RRtcpRRItem</codeph>. You can get the total number of receive reports received by calling <codeph>RRtcpRRPart::Count</codeph>. </p> <p>You can get the following information from a receiver report to assess the quality of the service: </p> <p> <codeph>SenderSSRC</codeph>: Gets the sender’s 32-bit numeric synchronisation source identifier. The same is updated in the member table. </p> <p> <codeph>AboutSSRC</codeph>: Gets the SSRC related to the current packet. </p> <p> <codeph>PacketsLost</codeph>: Returns the total number of RTP packets lost from source SSRC since the beginning of the reception. </p> <p> <codeph>FractionLost</codeph>: Returns the fraction of RTP data packets from the source SSRC lost since the previous SR or RR packet was sent. This is the integer part of the product of loss fraction and 256 (loss fraction x 256). </p> <p> <codeph>ExtendedHighestSequenceNumber</codeph>: Gets the extended highest sequence number received in an RTP data packet from the source. </p> <p> <codeph>DelaySinceLastSR</codeph>: Gets the time elapsed from the receipt of the last SR (Sender Report) and the time when current reception report packet was sent. The delay time is expressed in 1/65536 seconds. If no SR packet has been received yet from SSRC, the DLSR field is set to zero. </p> <p> <codeph>InterarrivalJitter</codeph>: Gets the variance of the RTP data packet interarrival time, measured in timestamp units and expressed as an unsigned integer. This gives the measure of network congestion. </p> <p> <codeph>LastSRTimestamp</codeph>: Gets NTP timestamp of the most recent RTCP sender report (SR) packet from source SSRC. If no SR has been received, the field is set to zero. </p> <p>All the preceding information about the data sent to the receiving hosts is used to modify the transmission and also to determine if the problem is local, regional or global. </p> </section> <section><title>See also</title> <p><xref href="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita#GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432/GUID-352B33B6-D02B-5ECB-B154-6CB06C21A377">Types of RTCP packets</xref>  </p> <p><xref href="GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01.dita#GUID-0ACAFB87-0D45-5BAA-B40A-9A7DC1646B01/GUID-663C6781-3137-5D48-A836-6ADDD4474805">Sending various RTCP packets</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D5FD665E-333B-50FF-A46F-6B22C0877285.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D5FD665E-333B-50FF-A46F-6B22C0877285"><title>Defensive Programming</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To help Symbian developers identify potential problems early in development, macros are provided to test for error conditions in functions (asserts) and objects (class invariants). Casting is one well known source of hard-to-find errors. <xref href="GUID-D5FD665E-333B-50FF-A46F-6B22C0877285.dita#GUID-D5FD665E-333B-50FF-A46F-6B22C0877285/GUID-A0253DF3-098C-5427-9B45-3CEC4F4875AB">Casting</xref> discusses its use. </p> <section id="GUID-55EB9D07-65F1-572B-8F36-9A442F69B9C2"><title>Testing conditions with asserts and invariants</title> <p>One method of catching errors early is to identify conditions that should be true at the beginning and end of functions, and raise errors if they are not. </p> <p>Two mechanisms support this programming style. </p> <ul><li id="GUID-620C4F53-5465-5A53-9880-7DC27EF752FF"><p>asserts </p> </li> <li id="GUID-9A1881EA-4C72-5359-9D16-553806070556"><p>class invariants </p> </li> </ul> <p><b>Asserts</b> </p> <p>Two macros are supplied for asserting specific conditions in functions: </p> <ul><li id="GUID-9481684E-5E9D-54B1-87E0-3539F4A29157"><p> <codeph>__ASSERT_ALWAYS</codeph> to catch run-time invalid input, for both release and debug builds </p> </li> <li id="GUID-4BAF939D-03D4-5D1E-A1BD-79537D930E93"><p> <codeph>__ASSERT_DEBUG</codeph> to catch programming errors, for debug builds only </p> </li> </ul> <p><b>Class Invariants</b> </p> <p>Class invariants are used to test that an object is in a valid state. They are used only in debug builds. </p> <ul><li id="GUID-F79328BA-61FD-5CB6-9D09-4C4DF6A2459B"><p>Define class invariants for non-trivial classes using <codeph>__DECLARE_TEST</codeph>. The class must supply functions that specify its allowed stable states. </p> </li> <li id="GUID-541758DE-21E9-5599-A12B-0208867240CA"><p>To ensures that the object is in a stable state prior to executing the function, call the invariant at the start of all public functions using <codeph>__TEST_INVARIANT</codeph>. </p> </li> <li id="GUID-20FFC383-0371-5494-8887-D0B3888162EE"><p>For non-const functions, you can ensure that the object has been left in a stable state by also calling the invariant at the end of the function. </p> </li> </ul> </section> <section id="GUID-A0253DF3-098C-5427-9B45-3CEC4F4875AB"><title>Casting</title> <p>Casts, as in other operating systems, should be used with caution. If a cast seems to be needed, check that this does not reflect a design weakness. </p> <p>The C++ <codeph>dynamic_cast</codeph> operator should not be used because the Symbian platform does not use C++ exceptions in user code. </p> <p>Note that in early versions of the OS (pre v6.0), the GCC compiler did not support the C++ casting operators. The idiom was then to use instead one of the macros <codeph>REINTERPRET_CAST</codeph>, <codeph>STATIC_CAST</codeph>, <codeph>CONST_CAST</codeph>, and <codeph> MUTABLE_CAST</codeph>, which were defined as simple C style casts for that compiler. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D60B55FA-D8C1-559A-9D99-48845BE32A6C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D60B55FA-D8C1-559A-9D99-48845BE32A6C" xml:lang="en"><title>EUser High
+Level Library</title><shortdesc>The EUser High Level (EUserHL) library is a general purpose user
+library that provides a usability layer to hide away some of the complexities
+of Symbian platform. This section lists the concepts, the overview and the
+tutorials that helps the Symbian Developers understand the importance of the
+EUserHL library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C" xml:lang="en"><title>Thread-relative
+and Process-relative handles</title><shortdesc>This document describes the difference between thread-relative
+and process-relative handles.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is the issue of handle ownership.</p>
+<p>Threads and processes each maintain a list of objects to which they refer.
+This list is an object index and is the way in which handle-numbers representing
+these objects are generated.</p>
+<p>When user code causes a Kernel object (e.g. a mutex) to be created, ownership
+of the handle which is opened on that object may be vested either in the thread
+or the process. If ownership is vested in the thread, the handle associated
+with that object is said to be <i>thread-relative</i>, conversely, if ownership
+is vested in the process, the handle associated with that object is said to
+be<i>process-relative</i>.</p>
+<p>The following diagram shows the case where code belonging to thread A creates
+a mutex and vests ownership of the handle in the thread. </p>
+<fig id="GUID-5A22F71B-C146-53A9-B8A4-51D79D4EF668">
+<title>Thread-relative handle</title>
+<image href="GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e205732_href.png" placement="inline"/>
+</fig>
+<p>Compare with the following case where ownership of the mutex handle is
+vested in the process.</p>
+<fig id="GUID-6C60BB64-AE7B-5B46-983B-D6D65D8AB41C">
+<title>Process-relative handle</title>
+<image href="GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e205743_href.png" placement="inline"/>
+</fig>
+<p>In both cases, the mutex object is added to the appropriate Kernel container
+which can be considered as the owner of the object.</p>
+<p>The significance of a process-relative handle is that any thread in the
+process can use that handle to access the Kernel side object that the handle
+represents. In contrast, a thread-relative handle can only be used by the
+thread creating it; other threads in that process can only access the Kernel
+side object by <xref href="GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita">duplicating</xref> that
+handle.</p>
+<p>For a thread-relative handle, the associated Kernel side object is closed
+if the thread dies. For a process-relative handle, the Kernel side object
+is closed if the process dies. Such an object is not closed if any thread
+belonging to that process dies; the object remains in existence for the lifetime
+of the process, or until all references to it have been explicitly closed.</p>
+<p>See also:</p>
+<ul>
+<li id="GUID-7355DCEE-85E8-58C6-9102-CBCE93251098"><p><xref href="GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita">The
+object index</xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D"><title>Audio Client Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Audio Client. </p> <section><title>Purpose</title> <p>The Audio Client provides an interface to: </p> <ul><li id="GUID-E1752C25-893D-5859-A9B7-C527AC115044"><p>Play back, record, and convert sound clips. </p> </li> <li id="GUID-5AF02D1B-25A9-59F0-B57B-7F0CAE7EB07D"><p>Play tone sequences and DTMF (Dual-Tone Multi-Frequency) strings. </p> </li> </ul> <p><b>Audio Client Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-28BCAB7A-147C-5519-8833-62ACA430C4D3"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>mediaclientaudio.dll</b>  </p> </entry> <entry><p> <b>mediaclientaudio.lib</b>  </p> </entry> <entry><p>These files are used for implementing the Audio Client. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The methods for recording, converting, and playing audio clips or tones interact with the lower levels of MMF (known as the controller framework). The controller framework is in turn responsible for managing the interface to audio hardware. On some phones, this is implemented as a device driver; on others it may be implemented as a connection to a lower level hardware controller. </p> <p>Clients using any of the <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref>, <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref>, <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility</apiname></xref> or <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> classes must have an active scheduler running in their thread because the implementations use active objects and callbacks. </p> <p>How the tone player class interacts with other components of MMF is shown below. </p> <fig id="GUID-8273BE86-D5F9-528F-9147-0C0C58D9ABCD"><title>
+             Audio tone player overview 
+          </title> <image href="GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e287503_href.png" placement="inline"/></fig> </section> <section><title>Description</title> <p><b>Audio Playing, Recording, and Conversion</b> </p> <p>All three of the audio classes are plugin based, leaving the list of supported audio formats for input and output open ended. The audio file formats supported as standard by MMF are: AU, WAV and raw audio data. Each file format may support one or more compression algorithms (codecs). The standard file formats and corresponding codecs are shown below: </p> <table id="GUID-058548B8-0DEF-5E61-B9A1-6FEC07DCAA8A"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Audio file format</entry> <entry>Codecs supported</entry> </row> </thead> <tbody><row><entry><p>AU </p> </entry> <entry><p>A-Law, mu-law, signed 16 bit PCM big-endian, signed 8 bit PCM </p> </entry> </row> <row><entry><p>WAV </p> </entry> <entry><p>IMA-ADPCM, A-Law, mu-law, unsigned 8 bit PCM, gsm 6.10, signed 16 bit PCM </p> </entry> </row> <row><entry><p>raw data </p> </entry> <entry><p>Signed big-endian 16 bit PCM, signed 16 bit PCM, unsigned 16 bit PCM </p> </entry> </row> </tbody> </tgroup> </table> <p>Input and output audio data can be of any format supported by the installed plugins. When possible MMF uses a plugin resolver to determine the format and codecs to use. It determines this by checking the filename extension and reading any header data that may be present in the audio clip. The plugin resolver cannot determine the format and codecs to use for raw audio, so in such cases you must specify this information yourself. A full list of supported plugins can be retrieved by using <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita#GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688/GUID-D0456E01-109E-3C93-949D-0452B09E886F"><apiname>CMdaAudioConvertUtility::GetSupportedDestinationDataTypesL()</apiname></xref>. </p> <p> <b> Note:</b> All audio clips can be uniquely identified for purposes of plugin assignment by their format (gsm z6.10, AU, WAV and so on) and their codec (for example for AU, valid codecs include A-Law, mu-law, signed 16 bit PCM big-endian, signed 8 bit PCM). Each format and codec has an arbitrary ID assigned to it by MMF and its associated plugin, for use with the "Open" functions of both <codeph>CMdaAudioConvertUtility</codeph> and <codeph>CMdaAudioRecorderUtility</codeph>. </p> <p id="GUID-B99776D8-B713-5C18-AB32-3BF13EDDFEBB"><b>Tone Playing</b> </p> <p>The Audio Client provide a simple interface for tone generation (synthesized sounds) that enables the playing of tone sequences and DTMF (Dual-Tone Multi-Frequency) strings. The tone player functionality is provided by the <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> class and using this class you can play: </p> <ul><li id="GUID-5B1FD304-5905-5F3A-97C6-237A59F911A1"><p>Single tones of a specified duration and frequency. </p> </li> <li id="GUID-6CD5A5D6-8659-5DDB-B773-1513C663E4F6"><p>DTMF strings. </p> </li> <li id="GUID-9F98BD96-C5F6-5100-96FB-EA8396AE0364"><p>Sequences of tones held in files or descriptors. </p> </li> <li id="GUID-B27D9870-E9AE-5280-A144-E4C24AA91E09"><p>Predefined (fixed) sequences of tones held in the mobile equipment. </p> </li> </ul> </section> <section><title>Key Audio Client Classes</title> <p>The functionality provided by the Audio Client is contained within the following classes: </p> <ul><li id="GUID-0EF967E4-CFE1-5528-9EAB-BA0A2E71C6D3"><p> <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref>  </p> </li> <li id="GUID-93D94E92-E9E6-523B-9C4B-02DF91D9976E"><p> <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref>  </p> </li> <li id="GUID-CBD9AF2F-BB55-5D03-A87B-A7A23AAA4CD5"><p> <xref href="GUID-778D24B5-A68E-3C91-B66A-69007FBA4791.dita"><apiname>CMdaAudioPlayerUtility</apiname></xref>  </p> </li> <li id="GUID-3B16D9CB-B192-548F-B096-5BA7B0E89344"><p> <xref href="GUID-D728A286-A202-3915-9643-8FD70646F78A.dita"><apiname>CMdaAudioToneUtility</apiname></xref> <xref href="GUID-6BD89347-671F-3518-9777-55801A090C79.dita"><apiname/></xref>  </p> </li> </ul> </section> <section><title>Using the Audio Client</title> <p>Clients can use the Audio Client to: </p> <ul><li id="GUID-AB6FC77A-FD23-55F0-9A07-916D388CE19D"><p>Manipulate audio sources and sinks, add, retrieve and modify meta data and record audio data to files or descriptors. </p> </li> <li id="GUID-8557E211-D6E7-59FF-AE63-939A0BCBF3C4"><p>Convert audio clips contained in files or descriptors to other formats using the default codecs provided by MMF. </p> </li> <li id="GUID-E9D2FB84-0CF1-5873-BC5B-005869025A91"><p>Play audio clips contained in files, descriptors or URLs. </p> </li> <li id="GUID-C3C75693-4113-5684-9643-2C6DC1A5BCB0"><p>Play single tones, DTMF strings and tone sequences. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita">How to use the audio convert utility</xref>  </p> <p><xref href="GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita">How to use the audio player utility</xref>  </p> <p><xref href="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita">How to use audio recorder utility</xref>  </p> <p><xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita">How to use the audio tone player utility</xref>  </p> <p><xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D6334249-E61D-55E7-9D0E-95231DC3621F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-D6334249-E61D-55E7-9D0E-95231DC3621F"><title>Answer a Call Tutorial</title><shortdesc>This tutorial describes how to detect and answer an inbound call with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-00FE5186-EF10-5AFB-B633-D6A09A988E28"> <step id="GUID-1E64BB78-64C9-5CEE-8242-75DF3B93CA45"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-CE695413-811F-5089-8701-A78FB58CDA35"><cmd/><info>Use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::NotifyChange()</apiname></xref> to detect changes in the voice line's status. <codeph>NotifyChange()</codeph> can be used to detect a variety of changes, but in this case you are only interested in the status of the voice line. Pass a notification event, in this case <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EVoiceLineStatusChange</apiname></xref>. Also pass it an empty <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallStatusV1Pckg</apiname></xref>. </info> <info>Possible status values are Idle, Ringing, On-Hold. When the voice line status is Ringing(<codeph>CTelephony::EStatusRinging</codeph>) there is an incoming voice call to be answered. </info> </step> <step id="GUID-367A68B1-9149-561A-9AC1-3EFF30415319"><cmd/><info>answer a call with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::AnswerIncomingCall()</apiname></xref>. You can only answer a call when the voice line status is Ringing(<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EStatusRinging</apiname></xref>) </info> </step> <step id="GUID-72EBECDA-178A-541C-B05A-F560F113480C"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EAnswerIncomingCallCancel</apiname></xref> to cancel the operation. </info> </step> </steps> <example id="GUID-5F63DA49-52D4-5E10-81E1-BE71CD5BA923"><title>Answer a call example</title> <codeblock id="GUID-42AE93F9-40C4-5751-8677-DC12D42EC378" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallId;
+
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    iTelephony-&gt;AnswerIncomingCall(iStatus, iCallId);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The call has been answered successfully;
+          // iCallId contains the call's ID, needed when controlling the call.
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EAnswerIncomingCallCancel);
+    }
+</codeblock> </example> <postreq id="GUID-19AC29A6-3A34-57E8-A0BE-8242CF60BF86"><p>This describes how to answer a second call while another is in progress. </p> <ol id="GUID-6E342500-D7DA-5DD9-89A6-120B2C8FCC0F"><li id="GUID-66CB266C-96CF-58A3-AAEA-00949C356545"><p>Put the first call on hold. </p> <p>This is the same as holding a call in <xref href="GUID-1907CF0B-2F4B-50F6-B676-7B7059B7FF74.dita">Call Hold Tutorial</xref>. </p> <p>If the other call was not dialled or answered by you then you cannot control it, and so you cannot put it on hold. If it is not on hold already (<xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EStatusHold</apiname></xref>) then you cannot answer the call. </p> </li> <li id="GUID-90CFC6A4-CA1B-593C-937F-B189630DCB0C"><p>Answer the second call. </p> <p>This is the same as answering the first call. <codeph>AnswerIncomingCall()</codeph> will return a different call ID from the first call. </p> </li> <li id="GUID-E278B859-89BE-5C90-94CE-21D66335CEBD"><p>If the operation fails, remember to resume the original call. </p> </li> </ol> <p>As a result, the first call is on-hold and the second call is active. </p> </postreq> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D65D1EDC-5CB4-58C1-99B5-4495B6DA511F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D65D1EDC-5CB4-58C1-99B5-4495B6DA511F" xml:lang="en"><title>Text
+resource utility overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-C6857C66-B599-4AA0-9ABE-469ADDE4BA5D"><title>Purpose</title> <p>Text Resource Utility is part of the Symbian
+Text Utilities. It is an API class, which provides static methods for loading
+and formatting resource strings. The purpose of Text Resource Utility is to
+make localization of the software easier by allowing variable order in indexing
+of the key strings in the resource string. </p> <p>Text Resource Utility provides
+resource string loading and formatting methods for other subsystems. Through
+simple <codeph>Load()</codeph> and <codeph>Format()</codeph> operation calls,
+the user can access resource strings which may contain formatting parameters
+(<codeph>%U</codeph> for text or <codeph>%N</codeph> for numerical). Strings
+can contain multiple instances of the same parameter. The <codeph>0x0001</codeph> character
+has special meaning in strings; it is used to delimit different options for
+displayable string. The client of <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>TulTextResourceUtils</apiname></xref> is
+responsible for choosing the proper string to display from given options. </p> </section>
+<section id="GUID-BAEBDD2B-2A9D-4BE6-9078-7835CF9B4E05"><title>Architectural Relationships</title> <p>The implementation
+requires a <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>CCoeEnv</apiname></xref> instance
+(given as reference by the user or <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>CCoeEnv::Static</apiname></xref>)
+to access the resource files. </p> <p>All interface methods are static, so
+there is no need to explicitly allocate memory for the interface class. All
+functionality is accessed through exported methods of the <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>TulTextResourceUtils</apiname></xref> class. </p> <p>The
+interface is accessed through the <codeph>tultextresourceutils.h</codeph> header
+file. Binaries are linked to the <codeph>etul.dll</codeph> library. </p> </section>
+<section id="GUID-3694DAEC-D25F-4E28-87EA-E1D230571003"><title>Description</title> <p><b>Usage</b> </p> <p>Applications load
+and format resource strings from normal resources with static methods of the <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>TulTextResourceUtils</apiname></xref> class. The loading
+is done with the <codeph>LoadL()</codeph> and <codeph>LoadLC()</codeph> methods
+and with the <codeph>Load()</codeph> method in situations where memory allocation
+from the heap is not possible. Formatting is done automatically after loading
+in the <codeph>LoadL()</codeph> and <codeph>LoadLC() </codeph> methods, but
+it can also be done separately with the <codeph>Format() </codeph> method
+in situations where memory allocation from the heap is not possible. </p> <p>For
+reading the resource strings with the<codeph> Load()</codeph>, <codeph>LoadL()</codeph> and <codeph>LoadLC()</codeph> methods,
+the user should provide a pointer to <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>CCoeEnv</apiname></xref> for
+efficiency reasons. If the pointer is not provided, the implementation uses
+the <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>CCoeEnv::Static</apiname></xref> method
+internally to get it. The user can get a pointer to <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>CCoeEnv</apiname></xref>,
+for example, via the <codeph>iEikonEnv</codeph> macro (for which see <codeph>&lt;eikdef.h&gt;</codeph>). </p> <p><b>Scalable
+UI Support</b> </p> <p>Different size displays can handle different length
+strings. To take full advantage of this fact, <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>TulTextResourceUtils</apiname></xref> supports
+resource strings with multiple options for string separated by <codeph>0x0001</codeph> character.
+Each such string can contain same or different sub string keys (<codeph>%U</codeph> and <codeph>%N</codeph>). <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>TulTextResourceUtils</apiname></xref> returns all strings,
+it is the responsibility of the caller to parse the result and choose the
+proper string to display. </p> <p><b>Setting the Maximum Substring Length</b> </p> <p>This
+may be done in the text resources. Sub string maximum lengths can be localized
+separately for every language. </p> <p>The maximum sub string length is of
+the format: </p> <codeblock id="GUID-AA1192AA-292D-59B4-9235-178AD1CC6681" xml:space="preserve">%U[NN] </codeblock> <p>where <codeph>NN</codeph> is
+a number <codeph>[01..99]</codeph>. Please note that <codeph>NN</codeph> must
+always consist of two characters, in other words, if the sub string maximum
+length is eight characters, the value to be used is <codeph>08</codeph>, not
+plain <codeph>8</codeph>. </p> <p>If the number of characters exceeds the
+maximum length, the sub string is cut to fit and the last character is replaced
+with an ellipsis character. </p> <p><b>Error Handling</b> </p> <p>The leave
+mechanism of the Symbian OS environment is used to handle memory exhaustion.
+Errors in application programming are handled with the panic mechanism of
+the Symbian OS environment. The error codes used are as follows: </p> <table id="GUID-3320467E-C326-523F-9B44-EB8BC916BFA5">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p><codeph>ETooFewArguments</codeph> </p> </entry>
+<entry><p>= 0: Unsolved parameters in the resource string. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>ETooManyArguments</codeph> </p> </entry>
+<entry><p>= 1: Already solved all parameters in the resource string. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>EKeyStringNotFound</codeph> </p> </entry>
+<entry><p>= 2: The key string was not found in formatting. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>EInvalidIndex</codeph> </p> </entry>
+<entry><p>= 3: Invalid index in the Format method. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>EDescriptorTooSmall</codeph> </p> </entry>
+<entry><p>= 4: Too small destination descriptor. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>ECCoeEnvNotInitialized</codeph> </p> </entry>
+<entry><p>= 5: <codeph>CCoeEnv</codeph> not initialized. </p> </entry>
+</row>
+<row>
+<entry><p><codeph>EInvalidSubstitute</codeph> </p> </entry>
+<entry><p>= 6: Substituted string contains substring separator (i.e. 0x0001). </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Example</b> </p> <p>The following example describes the usage
+of the Text Resource Utility component: </p> <codeblock id="GUID-6B0C9F3E-DC2C-511B-B58B-03CF363B794D" xml:space="preserve">/*  Using examples: */
+
+#include &lt;tultextresourceutils.h&gt;
+
+// Get CCoeEnv instance
+CEikonEnv* iEikonEnv = CEikonEnv::Static();
+
+/*
+*   One TInt to add:
+*/
+
+//(In .loc -file)
+#define TEXT_EXAMPLE "You have %N undone tasks."
+
+//(In .rss -file)
+RESOURCE TBUF R_TEXT_EXAMPLE { buf = TEXT_EXAMPLE; }
+
+//(In the .cpp -file)
+TInt number( 324 );
+
+//
+//iEikonEnv is needed for loading the resource string.
+//
+HBufC* stringholder = TulTextResourceUtils::LoadL( R_TEXT_EXAMPLE, number, iEikonEnv );
+
+//
+//The TInt in number is added to the resource string. The result is
+//that stringholder points to a heap descriptor containing string:
+//"You have 324 undone tasks."
+//
+
+/*
+*   Several strings to add:
+*/
+
+//(In a .loc -file)
+#define TEXT_EXAMPLE "I'm %2U%1U %3U%0U fine." 
+
+//(In an .rss -file)
+RESOURCE TBUF R_TEXT_EXAMPLE { buf = TEXT_EXAMPLE; }
+
+//(In the .cpp -file)
+CDesCArrayFlat* strings = new CDesCArrayFlat( 4 );
+CleanupStack::PushL( strings );
+
+strings-&gt;AppendL( _L("orking") ); //First string
+
+strings-&gt;AppendL( _L("ll") ); //Second string
+
+strings-&gt;AppendL( _L("sti") ); //Third string
+
+strings-&gt;AppendL( _L("w") ); //Fourth string
+
+//
+//iEikonEnv is needed for loading the resource string.
+//
+HBufC* stringholder = TulTextResourceUtils::LoadL( R_TEXT_EXAMPLE, *strings, iEikonEnv );
+
+//
+//The strings in strings are added to the resource string. The result is
+//that stringholder points to a heap descriptor containing string:
+//"I'm still working fine."
+//
+
+/*
+* Scalable UI support
+*/
+//(In .loc -file)
+#define TEXT_EXAMPLE "You have missed %N messages from %U."&lt;0x0001&gt;"Missed %N msgs from %U."&lt;0x0001&gt;"Missed %N msgs."
+
+//(In .rss -file)
+RESOURCE TBUF R_TEXT_EXAMPLE { buf = TEXT_EXAMPLE; }
+
+//(In the .cpp -file)
+TInt number( 12 );
+_LIT(name, “John Doe”);
+
+//
+//iEikonEnv is needed for loading the resource string.
+//
+HBufC* stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE,name,number,iEikonEnv);
+
+//
+//The number and name are added to the resource string. The result is
+//that stringholder points to a heap descriptor containing string:
+//"You have missed 12 messages from John Doe.\001Missed 12 msgs from John
+// Doe.\001Missed 12 msgs."
+//
+
+CleanupStack::PopAndDestroy(); //strings
+</codeblock> <p>For more information on individual methods, please see the
+reference API for <xref href="GUID-E19C9DB8-2C8B-366B-B650-2673B066256D.dita"><apiname>TulTextResourceUtils</apiname></xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D664843A-0741-5E38-88D0-D8BEC9C732EB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D664843A-0741-5E38-88D0-D8BEC9C732EB" xml:lang="en"><title>How
+to destroy the array</title><shortdesc>Simple arrays can be simply deleted. Certain arrays of pointers
+may require calling a member function to delete the objects pointed to.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If an array consists of <codeph>T</codeph> or <codeph>R</codeph> type elements,
+it can be destroyed by simply deleting it:</p>
+<codeblock id="GUID-DD031059-EB7F-5767-95EB-01D9715214DF" xml:space="preserve">delete array;</codeblock>
+<p>Where the array is either a <codeph>CArrayPtrFlat</codeph> or <codeph>CArrayPtrSeg</codeph> object
+and the elements are pointers to <codeph>CBase</codeph> derived objects, then
+these objects should first be destroyed by calling the <codeph>ResetAndDestroy()</codeph> member
+function:</p>
+<codeblock id="GUID-FAFAE1AE-CCE3-5B5B-95A0-BAC900706C19" xml:space="preserve">array-&gt;ResetAndDestroy();
+delete array;</codeblock>
+<section id="GUID-16F6086C-6072-447A-BFE5-C3C4869033BF"><title>Notes</title> <ul>
+<li id="GUID-84F5B547-631E-5FD5-8C3B-736BEB2A94FB"><p>The <codeph>RArray&lt;class T&gt;</codeph> and <codeph>RPointerArray&lt;class T&gt;</codeph> types
+are normally allocated on the program stack and are not deleted. However,
+their array buffers <i>are</i> allocated on the heap and it is important that
+these arrays are handled correctly to avoid memory leaks.</p> </li>
+<li id="GUID-98A2BC12-BEC2-5C29-93A1-51531D5F5063"><p>As a minimum, their <codeph>Close()</codeph> functions
+must be called before the arrays go out of scope. Additionally, for the <codeph>RPointerArray&lt;class T&gt;</codeph> type,
+the <codeph>ResetAndDestroy()</codeph> function may be called if the objects
+represented by the array need to be deleted before the array goes out of scope.</p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-D67D6147-ECE1-576C-A64C-120F32AE2AA2"><title>Stopping Audio Record </title><shortdesc>This section describes how to use the DevSound library while stopping the audio record functionality. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps-unordered id="GUID-05564451-1E97-531C-BF23-EE184582C2C2"><step id="GUID-04EE1232-B992-5260-9451-88E7CF1D5BB8"><cmd/><info>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D135FACF-07B2-377D-9FF6-6C3B47628897"><apiname>CMMFDevSound::Stop()</apiname></xref> function to stop audio that is currently being recorded. </info> <info>The <codeph>CMMFDevSound::Stop()</codeph> can occur either after the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-C6E50479-4E8F-33EE-B298-C5D8DE7E3879"><apiname>CMMFDevSound::RecordData()</apiname></xref> call or after the <xref href="GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD.dita#GUID-D0F3F385-68C9-331D-865F-DA36589BE9FD/GUID-0E4EB9DB-B802-3CE0-979A-F41767BFD017"><apiname>MDevSoundObserver::BufferToBeEmptied()</apiname></xref> callback. </info> <info> Note: The client must call <codeph>CMMFDevSound::RecordData()</codeph> once for each <codeph>MDevSoundObserver::BufferToBeEmptied()</codeph> callback. A <codeph>CMMFDevSound::Stop()</codeph> call is always preceded by a <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D9C071E1-9F7D-39C5-8B6E-34321A46D3A9"><apiname>CMMFDevSound::Pause()</apiname></xref> call, the recording cycle then continues until a zero length buffer is returned in the <codeph>MDevSoundObserver::BufferToBeEmptied()</codeph> call, after which the <codeph>CMMFDevSound::Stop()</codeph> call is made. </info> </step> </steps-unordered> </taskbody><related-links><link href="GUID-769CD1E7-8545-5223-A195-43E72AAF5DDC.dita"><linktext>Starting Audio
+                Record</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D68E0A64-0E8A-5C52-9C5B-93BA3B80C200.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D68E0A64-0E8A-5C52-9C5B-93BA3B80C200" xml:lang="en"><title>Window
+Groups and Applications</title><shortdesc>A window group is the basic unit of an application.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>:
+Application developers. </p>
+<p> The main functions of a window group are: </p>
+<ul>
+<li id="GUID-7FCE3494-29FA-55D0-B798-825A86230A41"><p>To receive keyboard
+focus—unless captured, all key events are sent to the window group that has
+keyboard focus. </p> </li>
+<li id="GUID-F6CAE40A-72FE-5DC7-8104-173D3AE41BBC"><p>The application that
+has keyboard focus is known as the "foreground application". The Window Server
+gives the foreground application’s thread extra priority, so that it is responsive
+to the user, even if a background application is performing a long-running
+task. </p> </li>
+<li id="GUID-92F3DF82-02D1-579A-855E-3E9F540B75AF"><p>To control settings
+for priority keys and key capture. </p> </li>
+<li id="GUID-2760EF21-9193-5F48-9DE0-748BAD2EA9DB"><p>To have an associated
+name that can be interrogated by other Window Server clients and used to determine
+which applications are running. </p> </li>
+<li id="GUID-8CDFDECF-0B23-5BE4-964E-4ABE29F625F2"><p>To have a text cursor.
+The text cursor is displayed only for the application with keyboard focus. </p> </li>
+<li id="GUID-C184C67F-193B-5498-9537-632B52D53A7A"><p>To form a group for
+all other windows owned by an application. </p> </li>
+</ul>
+<p>A typical application has a single window group, and all its other windows
+are descendants of that window group. A system shell application may use the <codeph>RWsSession</codeph> interface
+to interrogate all window groups owned by all client applications, and therefore
+may display a task list. All applications should use the same policy for the
+format of the window group name. This policy is the responsibility of the
+GUI, not the Window Server itself. </p>
+<p>An <codeph>RWindowGroup</codeph> is a pseudo-window that can never be seen
+on screen, but which has an <keyword>ordinal position</keyword> and participates
+in parent/child and sibling relationships as all other windows. </p>
+</conbody><related-links>
+<link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e228222_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3" xml:lang="en"><title>Multimedia
+APIs and Frameworks Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section provides an overview of all the components that form the Multimedia
+APIs and Frameworks collection. </p>
+<section><title>Purpose</title> <p>The Multimedia APIs and Frameworks collection
+provides a client API consisting of several interfaces that encapsulate a
+lightweight plug-in framework. The client API enables you to manipulate the
+audio and video features of the Symbian platform. </p> </section>
+<section><title>Architectural Relationship</title> <p>The following figure
+shows the architectural of the components that form the Multimedia APIs and
+Frameworks collection. </p> <fig id="GUID-E1D9CC8C-11B1-5BC5-A259-B77C5E06CD23">
+<title>              Multimedia APIs and Frameworks Architectural Overview
+           </title>
+<image href="GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e265989_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Description</title> <p>The Multimedia Framework overview details
+the architecture of the components that constitutes the Multimedia APIs and
+Frameworks collection. </p> <p>The Multimedia Subsystem provides the Multimedia
+capabilities of the Symbian platform. It includes audio recording/playback,
+video recording/playback, still image conversion and camera control. It includes
+framework to support these, even if all these functionality are not included.
+The function inclusion depends on the discretion of the device creator. </p> </section>
+<section><title>Components</title> <p>The Multimedia APIs and Frameworks constitutes
+the following components: </p> <ul>
+
+
+<li id="GUID-36787CFE-5BF1-53A2-B3DF-C936CCAFAA33"><p>Camera API </p> </li>
+<li id="GUID-A64B0DF5-59A8-5526-99AE-B8CA4A7E6244"><p>Image Conversion Library
+(ICL) </p> </li>
+<li id="GUID-BF05D850-1951-5E85-9A42-10885AB7B6BB"><p>Multimedia Framework
+(MMF) </p> </li>
+<li id="GUID-77EBAE98-96F5-5810-A540-FABE9EC3FDAB"><p>Multimedia Utility Library </p> </li>
+
+</ul> <p><b>Camera </b> </p> <p>The
+Onboard Camera API can be used to achieve video input streaming, and direct
+screen access can be used to achieve video output streaming. For more information
+about the Onboard Camera API, see <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard
+Camera API Overview</xref>. </p> <p><b>Image Conversion Library </b> </p> <p>The
+Image Conversion Library is a light-weight, client-side plug-in framework
+for still image codecs. A number of software codecs are shipped with the Symbian
+platform, most of which are un-optimised, but device creators may replace
+them with optimised or hardware accelerated versions. The JPEG decoder / encoder
+has been optimised. </p> <p><b>Multimedia Framework </b> </p> <p>The Multimedia
+Framework is a light-weight, multi-threaded plug-in framework for handling
+multimedia data, running as one or more threads in the application process.
+The only controller plug-in supplied by default is a simple linear audio controller.
+In turn this supports a number of formats and audio data types. In addition
+two example controllers are supplied; one for audio (Ogg/Vorbis) and one for
+video (Avi/XviD). </p> <p><b>Multimedia Utility Library </b> </p> <p>The Multimedia
+Utility Library provides shared utilities for the MMF. </p> </section>
+<section><title>Using Multimedia APIs and Frameworks</title> <p>The Multimedia
+APIs and Frameworks collection provides cross-platform compatibility for client
+applications and hardware acceleration plug-in writers, and reduces the cost
+of porting the applications and codecs between platforms. </p> </section>
+</conbody><related-links>
+<link href="GUID-60ED8061-5410-5B8E-9532-22280F35DC1D.dita"><linktext/></link>
+
+<link href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita"><linktext>Camera  
+              Overview</linktext></link>
+<link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks
+Overview</linktext></link>
+<link href="GUID-A243699D-699C-5E45-A000-54C8DB4FF7AB.dita"><linktext>Multimedia
+Framework Overview</linktext></link>
+<link href="GUID-DDF4EA2E-59D6-5FE0-9C61-C5A9CBD8D4FE.dita"><linktext>Multimedia
+Utility Library Overview</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF"><title>Setting the Text Cursor</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A text cursor (<xref href="GUID-601B802C-AB1B-357A-81A0-F8119F1F54C6.dita"><apiname>TTextCursor</apiname></xref>) is a rectangular area which can optionally be set to flash. It has a height, width, ascent and origin, illustrated below. </p> <fig id="GUID-24F6762D-F186-557A-8C11-502C7D941208"><title>
+          Text cursor
+        </title> <image href="GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e172000_href.png" placement="inline"/></fig> <p>The text cursor is positioned on screen by specifying an offset between its origin and the origin of a window. It can be added to a window group using <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-65474634-1BBD-3103-8C20-9F6709620754"><apiname>RWindowGroup::SetTextCursor()</apiname></xref>. </p> <p>Two predefined types of text cursors are provided: solid and hollow rectangles. In addition bitmaps can be used as text cursors. Custom text cursors are added to the Window Server using <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-684910B9-CCEA-3798-BE23-967820BBF363"><apiname>RWsSession::SetCustomTextCursor()</apiname></xref>. They have a unique identifier, which is used by <xref href="GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25.dita#GUID-64D4D428-D65F-3D9D-A0D4-C8338C848B25/GUID-65474634-1BBD-3103-8C20-9F6709620754"><apiname>RWindowGroup::SetTextCursor()</apiname></xref>. They are clipped if too large and their vertical alignment can be adjusted. </p> </conbody><related-links><link href="GUID-567DFA14-A7AA-56F5-9741-CB1F28BCD39F.dita"><linktext>Sprites and Cursors</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3"><title>Copyright Acknowledgments for Standard C++ (STLport)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Standard C++ libraries (STLport) ported to Symbian platform are covered by the following copyright notices. </p> <p> <b>Copyright 1999,2000 Boris Fomitchev</b>  </p> <p>This material is provided "as is", with absolutely no warranty expressed or implied. Any use is at your own risk. </p> <p>Permission to use or copy this software for any purpose is hereby granted without fee, provided the above notices are retained on all copies. Permission to modify the code and to distribute modified code is granted, provided the above notices are retained, and a notice that the code was modified is included with the above copyright notice. </p> <p>The Licensee may distribute binaries compiled with STLport (whether original or modified) without any royalties or restrictions. </p> <p>The Licensee may distribute original or modified STLport sources, provided that: </p> <ul><li id="GUID-81372FF3-31AD-559E-980D-0761F4042DD1"><p>The conditions indicated in the above permission notice are met; </p> </li> <li id="GUID-B32CD2F2-08FB-57FA-93F8-3432F6489D95"><p>The following copyright notices are retained when present, and conditions provided in accompanying permission notices are met : </p> </li> </ul> <p> <b>Copyright 1994 Hewlett-Packard Company</b>  </p> <p> <b>Copyright 1996,97 Silicon Graphics Computer Systems, Inc.</b>  </p> <p> <b> Copyright 1997 Moscow Center for SPARC Technology.</b>  </p> <p>Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. </p> <p>Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. </p> <p>Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Moscow Center for SPARC Technology makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D6BED357-F10B-5C00-9F8E-2CA3A584C4E1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D6BED357-F10B-5C00-9F8E-2CA3A584C4E1" xml:lang="en"><title>Media Client Observer Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Media Client Observer library. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D7211372-9411-5A18-88F0-615F4983A2E0" xml:lang="en"><title>Store Streams</title><shortdesc>Provides swizzles, store streams, stream dictionaries, and store maps. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e302544_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D730D796-F640-4100-BD41-32515EF086F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-D730D796-F640-4100-BD41-32515EF086F1" xml:lang="en"><title>Browsing</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Symbian platform provides the following browser APIs:</p>
+<ul>
+<li><p>Browser Plug-in API</p>
+<p>This API allows you to develop browser plug-ins for the Symbian platform.</p>
+</li>
+<li><p>Browser Control API</p>
+<p>This API allows you to embed the Symbian platform browser within an
+application.</p></li>
+</ul>
+<p>The following Symbian platform APIs are also related to browsing:</p>
+<ul>
+<li><p>Web Services Framework API</p>
+</li>
+<li><p>Favourites Engine API</p>
+</li>
+</ul>
+<section id="GUID-3C9ACF2B-F219-4BA6-A67D-B7D3ABFE7B3C"><title>Additional information</title>
+<p>For general information on browsing options and access to browsing documentation
+and tools, see the <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/browsing/index.html">Browsing
+page</xref>.</p>
+<p>For further documentation on browsing, see the <xref scope="external" href="http://www.forum.nokia.com/main/resources/documentation/browsing.html">Browsing
+documentation page</xref>.</p>
+<p>Forum Nokia also provides documentation on using browsing features in <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/symbian/documentation/browsing___drm___download.html">applications
+written in Symbian C++</xref>.</p>
+<p>For information on formats and codecs supported by the Symbian platform,
+see the feature tables on Forum Nokia: <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/audiovideo/av_features/FN_API_audio_codec_tables.html">audio codecs</xref> and <xref scope="external" href="http://www.forum.nokia.com/main/resources/technologies/audiovideo/av_features/FN_AP_video_codec_tables_1.html">video codecs</xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7" xml:lang="en"><title>Imap4Example:
+An Email manager using IMAP4 and SMTP</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-A3DDBA67-40D7-572D-A5CE-ED78D7A977DC"><title>Description</title> <p>This
+example application demonstrates how to create SMTP (Simple Mail Transfer
+Protocol) and IMAP (Internet Message Access Protocol) accounts to send and
+receive emails respectively. The application creates dummy messages and sends
+them using SMTP. </p> <p>The application starts a session with the messaging
+server using <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-423E2320-FB34-3249-80D9-9AA62C9DDF60"><apiname>CMsvSession::OpenSyncL()</apiname></xref> and gets an instance
+of the client MTM (Message Type Module) registry using <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita#GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8/GUID-DBD7038B-A0E2-3791-A4C9-3A22FFCA146A"><apiname>CClientMtmRegistry::NewL()</apiname></xref>.
+Using this registry it creates IMAP4 client-side MTM objects for the specified
+UID. </p> <p>After creating the client MTM objects, the application creates
+IMAP4 and SMTP accounts using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita#GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE/GUID-3FECFA5C-3C53-3BD2-A710-D6069C08EB08"><apiname>CEmailAccounts::CreateImapAccountL()</apiname></xref> and <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita#GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE/GUID-89066942-2526-3B2E-B6DC-FCEF9EC2EFB6"><apiname>CEmailAccounts::CreateSmtpAccountL()</apiname></xref> respectively.
+Settings and preferences for these accounts are configured using the <xref href="GUID-55F11633-988C-39D5-ADE7-23C4966FD995.dita"><apiname>CImImap4Settings</apiname></xref>, <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> and <xref href="GUID-DFE18962-0022-3833-A8F0-6E4C969177C0.dita"><apiname>CImSmtpSettings</apiname></xref>. </p> <p>A simple SMTP message is created by the
+application using the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-FCDC47D2-0446-3CD7-A246-4DCED7C8A063"><apiname>CImEmailOperation::CreateNewL()</apiname></xref> function,
+and then sent to the email address stored in the literal <codeph>KTo</codeph>. </p> <p> <b>Note</b>:
+Each email account created by the application has a pair of service entries,
+which are used to store settings required for email transport. </p> <p>The
+application also provides the <codeph>CMessAsyncWaiter</codeph> class to issue
+asynchronous requests to the messaging server and handles completed requests.
+This class implements the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> abstract interface. </p> </section>
+<section id="GUID-F52C49C9-3072-5046-B5EF-F4C22CAEBD0F"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-62d00653-18c4-48af-94b0-4debade064f2.zip" scope="external">Imap4Example.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-62d00653-18c4-48af-94b0-4debade064f2.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-7AE47DB2-8A48-54AC-8BD8-1A3CE5573331"><title>Pre-requisites</title> <p>A
+null modem cable (NTRAS - New Technology Remote Access Services) must be connected
+to your system for the example to be functional. Also, change the values of
+literals <codeph>KSmtpServerAddress</codeph> and <codeph>KImapServer</codeph> defined
+in the <filepath>imap4example.cpp</filepath> file to your system address. </p> <p>In
+addition to the above mentioned changes, you must have an account with the
+messaging server. You can create an account using any messaging proxy server
+application such as Communigate-Pro, which is freely downloadable from <xref href="http://www.stalker.com/CommuniGatePro/#Current" scope="external">http://www.stalker.com/CommuniGatePro/</xref>.
+The name of the newly created account can either be the account name used
+by the application or a different one. If you choose to name the new account
+different from the account name used by the application, change the value
+of the literal <codeph>KImapLoginName</codeph> defined in the <filepath>imap4example.cpp</filepath> file
+to the new account name. </p> <p> <b>Note</b>: To check the messages sent
+by the application, you must configure your email client to retrieve messages
+for the newly created IMAP4 account. For information on how to configure your
+email client, refer its user guide. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref></p><p> <xref href="GUID-BDE23754-4536-3AF7-8549-3B953F51167C.dita"><apiname>MMsvSessionObserver</apiname></xref></p><p> <xref href="GUID-513528C7-4741-3494-9272-4E8F6CDBF20F.dita"><apiname>TMsvSessionEvent</apiname></xref></p><p> <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita"><apiname>CClientMtmRegistry</apiname></xref></p><p> <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref></p><p> <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref></p><p> <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref></p><p> <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref></p><p> <xref href="GUID-12FC6AC7-8946-324D-B2B7-60B332870794.dita"><apiname>TImapAccount</apiname></xref></p><p> <xref href="GUID-C1545507-56B1-3533-9D7D-1F17F95AB6F8.dita"><apiname>TSmtpAccount</apiname></xref></p><p> <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> </p></section>
+<section id="GUID-ABD7370A-98DF-58D0-90F7-72684A11798E"><title>Build</title> <p>The <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">Symbian OS build process</xref> describes
+how to build an application. </p> <p>The IMAP4 example builds an executable
+called <filepath>impa4Example.exe</filepath> in the standard location (<filepath>\epoc32\release\winscw\</filepath> <i>&lt;build_variant&gt;</i> for
+CodeWarrior). After launching the executable, depending on the emulator you
+are using, you may need to task away from the app launcher/shell screen to
+view the console. </p> </section>
+<section id="GUID-43E4D1FA-8CF0-5F5B-A166-30AE01E6D961"><title>See also</title> <p> <xref href="GUID-1F755804-70D6-5635-B2F7-06F03C8D4B74.dita">IMAP4 MTM Overview</xref>  </p> <p> <xref href="GUID-4F703F85-080F-5B77-B94D-5449764828F3.dita">SMTP MTM Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e371869_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D7600D93-CFB8-565D-8200-7082B2CF1791.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D7600D93-CFB8-565D-8200-7082B2CF1791" xml:lang="en"><title>User
+Interface Data MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>UI MTM libraries can be quite large, and often there are functions that
+Messaging applications need to access often and rapidly. To improve memory
+efficiency, these functions are split off into another DLL, called the UI
+Data MTM that can be easily kept in memory without the extra overhead of the
+UI MTM. </p>
+<section><title>UI Data MTM base class</title> <p>The base class for a UI
+Data MTM is <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref>. The implementation of UI Data
+MTMs is relatively simple, as they contain little more than functions to return
+the required icons and extra menu items. </p> <p>UI Data MTMs offer the following
+capabilities: </p> <ul>
+<li id="GUID-EF22528E-D4EA-57B4-84FC-BD8E44D742DA"><p> <b>Provide MTM-specific
+icons for Message Server entries</b>  </p> <p>Provide bitmap icons for messages,
+folders, and services for display in the various folder views. For each icon,
+an array of bitmaps should be available, giving the icon in a number of sizes. </p> </li>
+<li id="GUID-2830B9E2-B9D1-50AF-B6E9-43D187BE053A"><p> <b>Provide user interface
+text</b>  </p> <p>Provide command captions for MTM-specific functions that
+the Messaging client application can dynamically add to menus and dialog controls.
+A function ID is associated with each caption to identify the MTM-specific
+function that should be invoked when the command is chosen. This data is encapsulated
+in a resource of the <codeph>MTUD_FUNCTION</codeph> type. </p> </li>
+<li id="GUID-24B76538-A4BB-5996-9187-EC03393C35A9"><p> <b>Verification of
+MTM functions</b>  </p> <p>Validate the specified functions that are available
+on a particular entry, so that a Messaging client application can process. </p> <p>It
+is intended that client applications use the <xref href="GUID-F5466277-25C7-31BD-8129-A0FF3D84FC03.dita"><apiname>OperationSupportedL()</apiname></xref> function
+to dynamically set the user interface features that are available depending
+on the entry currently selected within the application. For example, menu
+items that do not apply to particular entries could be greyed out. </p> </li>
+</ul> <p>The <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita"><apiname>CBaseMtmUiData</apiname></xref> class provides the virtual
+functions for overriding in derived classes.</p> </section>
+</conbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM     
+           overview</linktext></link>
+<link href="GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita"><linktext>MTM     
+           Capabilities</linktext></link>
+<link href="GUID-1E2DB50A-D8D7-595D-8448-77F057655E82.dita"><linktext>Writing a
+UI Data MTM </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D76B1999-E118-585B-A6B4-8AE8CCCB6F8B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D76B1999-E118-585B-A6B4-8AE8CCCB6F8B" xml:lang="en"><title>paged</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <codeph>paged</codeph>  </p>
+<p>Use the <codeph>paged</codeph> statement to specify that the executable
+is both code paged and data paged. This is the same as specifying both <xref href="GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754.dita">pagedcode</xref> and <xref href="GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90.dita">pageddata</xref> keywords
+for an executable. </p>
+<p>You can also mark an executable as paged using the OBY file keyword file[[HWVD]].
+For more information about the  file[[HWVD]] keyword, refer to the ROM Tools
+Guide in the Application Development Toolkit available for download at  <xref href="http://developer.symbian.org/main/tools_and_kits/index.php" scope="external">http://developer.symbian.org</xref>. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D76D4788-E65A-59A8-8DD9-7A8096E115D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D76D4788-E65A-59A8-8DD9-7A8096E115D5"><title>Installing a Font File</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The font store automatically loads all files in <filepath>\resources\fonts\</filepath> on all drives at startup. The search path is soft to hard ( Y:, X:, W:, ..., C:, B:, A:, Z:) and if two or more files have the same name the first one found is used. This means that files in the ROM (Z:) can be replaced with files on user drives. </p> <p>The font store assumes that the files are in an appropriate format (see). Unsupported font files require a corresponding font rasterizer plug-in. </p> <p>To install a font file at startup: </p> <ul><li id="GUID-976FF5A7-F54E-5509-B090-808F20F71D99"><p>Copy it into <filepath>\resources\fonts\</filepath> on any drive. </p> </li> <li id="GUID-BC571AC6-24BD-5962-9F47-4B0A21019586"><p>Restart the device to restart the Font and Bitmap server. </p> </li> </ul> <p>It is also possible to load a font file dynamically at run time. It is not possible to install a new font rasterizer at run time, however, so font files installed at run time must either be bitmap fonts or supported by an existing font rasterizer. </p> <p>To dynamically install a font file: </p> <ul><li id="GUID-234E42FB-96AD-50AE-9FD1-B6AF3329030E"><p>Call <codeph>CWsScreenDevice::AddFile()</codeph>, specifying the file to be loaded. </p> </li> </ul> </conbody><related-links><link href="GUID-92A4F66E-252D-5C90-AE59-1B1991002D7B.dita"><linktext>Installing a
+                Font Rasterizer DLL</linktext> </link> <link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D78B510E-3F5C-4B5D-B53F-917F2DAF6C6A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D78B510E-3F5C-4B5D-B53F-917F2DAF6C6A" xml:lang="en"><title>Mixing
+dialog and other application architectures</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The dialog-based architecture can be combined successfully with the
+other architecture types as long as dialog-based views are only used at the
+end points of the navigation structure. </p>
+<p>Avkon supports view switching within an application and, more significantly,
+view switching between applications. This feature raises issues for modal
+dialogs, such as Avkon forms and queries. When there is such a modal dialog
+open, possibly with new data entered, and another application view is switched
+to (presumably by another application), then the data associated with the
+open dialog may have to be disposed of.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D78DCB72-7CEE-5075-A6FA-58D57AB5BA73.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D78DCB72-7CEE-5075-A6FA-58D57AB5BA73" xml:lang="en"><title>Vibra
+API Tutorial </title><shortdesc>This tutorial describes how to use the Vibra API of the hardware
+resource manager. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>To use the Vibra API,
+the client must first create an instance of the <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>CHWRMVibra</apiname></xref>. </p> <p> <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>CHWRMVibra</apiname></xref> can be used in two modes: </p> <ul>
+<li id="GUID-65226087-E8A5-5B84-8675-A971983C03D2"><p>With notify handling. </p> </li>
+<li id="GUID-E41B1DB9-6880-5F59-AB8B-BBFA5B734CA8"><p>Without notify handling. </p> </li>
+</ul> <p>An instance with notify handling is created if the client requires
+up-to-date status information. Else, an instance without callback pointer
+is created. After an instance is created, vibra can be directly controlled
+through the provided class methods. </p> <p>To control the device's vibration
+feature, the vibra settings of the vibration feature in the user profile must
+be active. If the settings are not active, vibration is not activated. The
+vibration feature state can be retrieved using the <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>VibraSettings()</apiname></xref> method. </p> <p> <xref href="GUID-68D63D0A-4CC6-34A6-AF5B-BB59AC96625E.dita"><apiname>StartVibraL()</apiname></xref> starts the device's vibration
+feature. If <codeph>StartVibraL()</codeph> is called again before the first
+vibration completes, the first vibration is interrupted and the second vibration
+starts immediately, that is, the periods of vibration are not cumulative. </p> <p>The
+duration <codeph>0</codeph> specifies that the vibration continues indefinitely
+and must be stopped with a call to <codeph>StopVibraL()</codeph>. The device
+may have implementation defined or hardware imposed limits to the duration
+of the vibration feature. In such circumstances, vibration is ended at that
+limit even if the duration parameter is greater than the limit. </p> <p>Vibration
+can be interrupted with the method <codeph>StopVibraL()</codeph> before the
+specified interval has elapsed. </p> <p>The current status of the vibration
+feature can be obtained with the <codeph>VibraStatus()</codeph> method. </p> <p>The
+device vibration feature can be reserved to a single instance of <codeph>CHWRMVibra</codeph> by
+calling the <codeph>ReserveVibraL()</codeph> method. After the vibration feature
+is no longer required exclusively, it must be released with a call to <codeph>ReleaseVibra()</codeph>.
+If there is already a reservation active when a reservation from a higher
+priority client arrives, the previously active reservation is suspended, and
+the new reservation is set as the active one. On the other hand, if there
+is already a reservation active when a reservation from a same or lower priority
+client comes, the new reservation is immediately put in the suspended mode.
+Some trusted clients have higher than default priorities. </p> <p>Vibra can
+be controlled without a reservation, if there is no other client with a reservation. </p> <p>If
+the client is not trusted, Vibra API automatically releases reservation when
+the client goes to background and reserves it again when the client comes
+back to foreground. This also implies that untrusted clients can only use
+Vibra API where <codeph>CCoeEnv</codeph> is available. Trusted clients have
+an option to disable this auto-reservation feature. </p> <p>The client does
+not receive notifications on whether its reservation is suspended, but <codeph>StartVibraL()</codeph> and <codeph>StopVibraL()</codeph> can
+be called normally when the client's reservation is suspended. In such case,
+only the virtual state of the vibra is remembered by the session; the actual
+vibra is not controlled. When suspended reservation is activated, the actual
+vibra state is restored to the same as the virtual state. </p> <p>Using Vibra
+API, you can perform any of the tasks listed in the procedure section.</p></section>
+<section><title>Procedure</title> <ul>
+<li id="GUID-1395F0F9-E42A-5D3A-882B-FEBA612A1F93"><p><xref href="GUID-623CA1EE-4D25-495A-BD2F-BA7BF95D6D9C.dita">Creating
+a Vibra instance to control the vibra</xref>  </p> </li>
+<li id="GUID-43FB5A23-920E-5FED-A9EB-24B1C6561CB6"><p><xref href="GUID-D89D1809-0A64-4331-BA5C-2B82187BEFB6.dita">Retrieving
+the vibra settings</xref>  </p> </li>
+<li id="GUID-55D570AA-01CD-57E5-BD89-FEB9319DF2A5"><p><xref href="GUID-AE5432AE-C699-4403-BCFC-474515C9BEC8.dita">Retrieving
+the vibra status</xref>  </p> </li>
+<li id="GUID-E9440FB8-AA83-56EA-A553-A7CBAE1ED526"><p><xref href="GUID-F575F364-4BCA-42C7-BE00-7B31D8B55AE1.dita">Reserving
+the device vibra</xref>  </p> </li>
+<li id="GUID-81A4E159-92B3-5ED7-8F10-FDA59F103986"><p><xref href="GUID-B57857D6-F00B-458A-8194-42CACA0BF131.dita">Starting
+the device vibra</xref>  </p> </li>
+<li id="GUID-B60F29FB-89ED-532A-9D58-650BEDA373C3"><p><xref href="GUID-B80ADD0D-2834-4478-A4AD-1FEBC0112A43.dita">Stopping
+device vibra</xref>  </p> </li>
+<li id="GUID-CD985A37-C4E0-5555-80E7-327E6CE98F81"><p><xref href="GUID-A0122085-369E-46EF-9CA1-0269982A5284.dita">Releasing
+device vibra</xref>  </p> </li>
+<li id="GUID-7CCAA66F-BC1C-5D19-9ED8-81E6FED9DBA0"><p><xref href="GUID-2D8A7DCE-47A2-4326-BF2F-B4901F1723A0.dita">Releasing
+the instance</xref>  </p> </li>
+<li id="GUID-58B61829-89B3-5AA5-8CCB-3CF802D498D4"><p><xref href="GUID-D157C4D3-FC2F-47DD-BD33-F8BA6156833D.dita">Sending
+tactile feedback pulse</xref>  </p> </li>
+</ul> </section>
+<section><title>See also</title> <p><xref href="GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita">Vibra
+API</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D79380CF-22B5-5865-9366-44118E8ECA2E" xml:lang="en"><title>Open Environment Core (P.I.P.S.)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>P</b>.I.P.S. <b>I</b> s <b>P</b> OSIX on <b>S</b> ymbian Platform (P.I.P.S.). It provides an API layer, above the Symbian platform native APIs, that is more closely aligned with industry standard APIs making Symbian software development more accessible to Symbian developers who program using the C language. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D7A8E007-CCCD-5E4F-A7DE-4D474C864104.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D7A8E007-CCCD-5E4F-A7DE-4D474C864104"><title>Creating a send stream</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>RRtpSession</codeph> allows you to create a send stream. <codeph>NewSendSourceL()</codeph> creates a new send stream and returns a handle to <codeph>RRtpSendStream</codeph>. This is done only once per RTP session. If the send stream handle already exists, call <codeph>SendSource()</codeph> to get a handle to the send stream. </p> <p> <codeph>RRtpSendSource</codeph> manages the creation and sending of RTP packets. A session can have only one send stream. At any point of time only one packet can be sent. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0" xml:lang="en"><title>TAndRClasses:
+typical ‘T’ and ‘R’ type classes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Description</title> <p> <filepath>TAndRClasses</filepath> shows
+a typical ‘T’ class and a typical ‘R’ class. </p> <p>The ‘T’ type is a value
+type, owning no external object. </p> <p>The ‘R’ type is a resource type;
+typically this is proxy for an object owned elsewhere. In practice, the 'R'
+type is a handle to a resource owned and managed by the Kernel. </p> <p>In
+this example, the ‘R’ class derives from the standard Symbian platform handle
+class <codeph>RTimer</codeph>. </p> </section>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-1bfb2b42-8897-4660-8409-5e9fd441745b.zip" scope="external"> TAndRClasses.zip</xref></p><p>Click on the following link
+to download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.zip" scope="external">CommonFramework.zip</xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-1bfb2b42-8897-4660-8409-5e9fd441745b.html" scope="peer"> browse TAndRClasses </xref> to view the example code.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-bd05bfa4-e51c-4cf7-b327-646b0b9e814d.html" scope="peer">CommonFramework</xref> to view additional files.</p> </section>
+<section><title>Class summary</title><p> <xref href="GUID-8A423EA2-4264-30C9-9579-0466994E6E88.dita"><apiname>RTimer </apiname></xref>  <xref href="GUID-CD0A798E-7E42-3689-8E86-F5FD43C758FC.dita"><apiname>TCleanupItem </apiname></xref> <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack </apiname></xref>  <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> </p></section>
+<section><title>Build</title> <p>The example includes the two project files
+needed for building: <filepath>bld.inf</filepath> and the <filepath>.mmp</filepath> file. </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian platform build
+process</xref> describes how to build this application, which results in an
+executable called: </p> <p> <filepath>\epoc32\release\&lt;target&gt;\&lt;urel
+or udeb&gt;\TANDRCLASSES.EXE</filepath>. </p> </section>
+<section><title>Usage</title> <p>Run the executable <filepath>TANDRCLASSES.EXE</filepath>. </p> <p>Executables
+for the emulator targets <filepath>wins</filepath> and <filepath>winscw</filepath> can
+be run on your PC. Executables for ARM targets must be copied to your target
+platform before being run. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e65485_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D80D6D46-27B7-500E-A83C-63EF038606BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D80D6D46-27B7-500E-A83C-63EF038606BF"><title>Application Utilities Overview</title><shortdesc>Application utilities is a collection of libraries that provides low level system and application utility APIs to the platform. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Required background</title> <p>Before using the libraries of application utilities, you must be familiar with Symbian Resource File syntax, Symbian Descriptors and <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECOM plug-ins</xref>. </p> </section> <section><title>Architecture</title> <p>Application utilities is a collection of libraries and has no architectural structure. </p> <p>The libraries that constitute the Application utilities are: </p> <ul><li id="GUID-876C801A-4AD4-5A0F-8B25-4CE4726732D6"><p> <xref href="GUID-C8BD333E-8384-534B-822B-F61B2F7C8B9F.dita">Basic Application Framework Utilities</xref>  <b>(bafl.dll)</b> - Provides file system utlities, clipboard, command Line Parsing, Descriptor Arrays, Environment Change Notifier, Incremental Matcher, Resource Files, Localised Names of Plug-ins, System Sounds and String Pools. </p> </li> <li id="GUID-EB20AD40-F1D2-5932-BD99-8A10719B700A"><p> <xref href="GUID-D98E984D-69A5-5BA8-89E7-A7CC9FD0C584.dita">Base Services Utility Library</xref>  <b>(bsul.dll)</b> - Provides wrapper APIs to validate messages and handle errors. This improves robustness of system servers under IPC attack and ensures secure client server architecture. The library also creates and parses <filepath>.ini</filepath> files and provides information about cache drives. </p> </li> <li id="GUID-CFF13C7C-779D-54C8-9EFE-78EF6DE2BE12"><p> <xref href="GUID-39D1807D-3AE0-5273-AA3B-80E8F580DC0B.dita">Activity Manager</xref> <b>(Activitymanger.dll)</b> - Allow clients to monitor for user inactivity (idle time), user activity (key press) and implementing functionalities like screensaver and power management and so on. </p> </li> <li id="GUID-DD19D699-6F57-532D-96B4-D90BB574528F"><p> <xref href="GUID-4B8AEE55-1601-5CF8-9DD1-492DAE18F0F8.dita">System Utilities</xref> <b>(Sysutil.dll)</b> - Provides system utility API functions to retrieve software and language package version strings for display purposes, check for free space on a disk drive before file creation or writing and retrieve device type information (phone model) for display purposes. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e7676_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF" xml:lang="en"><title>Porting
+Data-caged Applications</title><shortdesc>This document describes the changes required to migrate exe-apps
+to a data caged directory structure. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>In Symbian OS v8.0 and earlier, application
+specific information (for instance captions and icons) was provided by a combination
+of the AIF (Application Information File) and the caption file. Both of these
+files were optional. </p> <p>Migrated applications must provide a registration
+file, and may optionally provide localizable application information resource
+files and icon files. Localizable application information resource files provide
+localizable application information (for instance captions and icons), whereas
+an application's localizable UI resource file provides UI resources such as
+menus and dialogs. </p> <p>The localizable information that was previously
+provided by a combination of AIF and caption files, has been split into two
+categories: </p> <p>The diagram below shows the new file structure used to
+provide application information. </p> <fig id="GUID-7C0D7121-43A4-5C29-86E6-A92F753D29A4">
+<image href="GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e115649_href.png" placement="inline"/>
+</fig> <ul>
+<li id="GUID-0D14076A-26FE-5E6A-BF57-69B169287BF1"><p>A registration file
+which 'points' to one of three localizable resource files provided. If the
+current language is <filepath>01</filepath> or <filepath>02</filepath>, the
+system will load the corresponding version of <filepath>AppName_loc</filepath>,
+otherwise <filepath>AppName_loc.rsc</filepath> will be loaded. </p> </li>
+<li id="GUID-AF8CD591-A112-5AF3-92CD-97ADD83C277C"><p> <filepath>AppName_loc.r01</filepath> and <filepath>AppName_loc.r02</filepath> share
+the same icon file. </p> </li>
+</ul> <p>Migrated applications may be used with or without data caging enforced. </p> </section>
+<section><title>Procedure</title> <p>The following sections detail the mandatory
+and optional steps required to migrate an application. </p> <p> <b>Mandatory
+steps</b>  </p> <ol id="GUID-8CCDDC52-4EB1-567A-A9F5-A480E9912B66">
+<li id="GUID-27A355EC-835B-59AC-8B40-B855BCB1BD34"><p>Provide a registration
+file. </p> <p>A registration file is a standard Symbian platform compiled
+resource file (<filepath>.rsc</filepath>). The <filepath>.rss</filepath> file
+used to build the registration file should be named <codeph>AppName_reg.rss</codeph> and
+contain at least the following lines: </p> <codeblock id="GUID-192653ED-EF93-566D-907F-46462D825B96" xml:space="preserve">#include &lt;appinfo.rh&gt; 
+UID2 KUidAppRegistrationResourceFile 
+UID3 0x01000000 // application UID 
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file="AppName"; // filename of application binary (minus extension)
+    }</codeblock> <p>To build the registration file, add the following lines
+to the application's MMP file: </p> <codeblock id="GUID-2C8C8693-E881-578B-91CB-FDC17C357CDA" xml:space="preserve">START RESOURCE    AppName_reg.rss 
+TARGETPATH        \private\10003a3f\apps 
+END</codeblock> <p>The <filepath>_reg</filepath> filename suffix is used as
+a naming convention only and is not mandatory. </p> <p>Note that any lines
+in the MMP file that are used to build an AIF file should be removed. </p> </li>
+<li id="GUID-B5D1F806-91F1-5326-8026-D1E36C30889E"><p>Build the application
+binary to a new location. </p> <p>The following line should replace the <codeph>TARGETPATH</codeph> line
+associated with the <codeph>TARGET</codeph>, <codeph>TARGETTYPE</codeph> and <codeph>UID</codeph> lines: </p> <codeblock id="GUID-5BD260BF-9A9D-5998-83AE-667D9C3B1A96" xml:space="preserve">TARGETPATH        \sys\bin</codeblock> </li>
+</ol> <p> <b>Optional steps</b>  </p> <ul>
+<li id="GUID-967BFB2B-6862-5C79-A89F-F897F2036415"><p>A UI resource file whose
+location is provided by <codeph>CEikApplication::ResourceFileName()</codeph>  </p> </li>
+<li id="GUID-0B7D3B27-0D56-50E5-9EE0-9084FE138FD9"><p>An MBM file whose location
+is provided by <codeph>CEikApplication::BitmapStoreName()</codeph>  </p> </li>
+<li id="GUID-AF83E0ED-F59E-5BFC-9C58-1DED13A78645"><p>Application information
+through an AIF and/or caption file. </p> </li>
+</ul> <p>The following steps are only required if the application provides
+one or more of the following: </p> <ol id="GUID-42AA9F22-B442-5972-985F-6F629C257093">
+<li id="GUID-1706E3AD-7343-56EA-8E74-977E7F033E08"><p>Specify the default
+UI resource file location. </p> <p>When building the application UI resource
+file, the <codeph>TARGETPATH</codeph> must be specified as follows: </p> <codeblock id="GUID-9429B307-D5F6-5EEF-8FDD-FA2E962E1695" xml:space="preserve">TARGETPATH        \resource\apps</codeblock> </li>
+<li id="GUID-A21B102D-7C2A-562A-80A5-464EE0F42C56"><p>Specify the default
+MBM file location. </p> <p>When building the application's MBM file, the <codeph>TARGETPATH</codeph> must
+be specified as follows: </p> <codeblock id="GUID-E7A8DD91-70AA-519E-91EB-493EFCF9302A" xml:space="preserve">TARGETPATH        \resource\apps</codeblock> </li>
+<li id="GUID-1E07FA6D-F5E1-524D-AD7C-E6CAD3E8F5E5"><p>Specify the application
+information by providing the following files: </p> <ul>
+<li id="GUID-619E778D-E4E5-5755-B6F1-E02C047C4BEE"><p>Non-localizable information
+(provided by the registration file) </p> <p>The registration file provides
+non-localizable application information. For an example registration file
+see <codeph>AppName_reg.rss</codeph> in the <xref href="GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita#GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF/GUID-52802361-8A7A-5C8A-ACC1-F41E50CFD1CF">Example
+files</xref> section. </p> </li>
+<li id="GUID-38C4EF86-05A7-5D95-BB04-644DEC26C582"><p>Localizable information
+(localizable resource file and icon file) </p> <p>Localizable application
+information can either be provided in a separate resource file (see <codeph>AppName_loc.rss</codeph>),
+or as a resource within the application UI resource file (see <codeph>AppName.rss</codeph> and <codeph>AppName2_reg.rss</codeph> in
+the <xref href="GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita#GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF/GUID-52802361-8A7A-5C8A-ACC1-F41E50CFD1CF">Example
+files</xref> section). </p> <p>When providing the information as a resource
+within the application UI resource file, the registration file's <codeph>APP_REGISTRATION_INFO</codeph> struct
+must contain the following lines: </p> <codeblock id="GUID-EF9F185B-FBF7-52BA-B218-4B3DF2FC8A40" xml:space="preserve">localisable_resource_file="\\resource\\apps\\AppName";
+localisable_resource_id = R_LAI;</codeblock> <p>where <codeph>R_LAI</codeph> is
+a named <codeph>LOCALISABLE_APP_INFO</codeph> resource struct within the UI
+resource file. </p> <p>The <codeph>localisable_resource_file</codeph> field
+should not include a drive in the path, or a file-extension, but it should
+provide a full directory path and a file name (without extension). </p> <p>To
+build a resource file for language <filepath>01</filepath>, add the following
+to the MMP file: </p> <codeblock id="GUID-8ECAB691-7720-5B7C-AD77-AF706AE621B8" xml:space="preserve">start resource    AppName_loc.rss
+targetpath        \resource\apps 
+lang              01 
+end</codeblock> <p>The <filepath>_loc</filepath> filename suffix is used as
+a naming convention only and is not mandatory. </p> <p>Icon files referenced
+in the localizable resource should also be built to <filepath>\resource\apps\</filepath>. </p> </li>
+</ul> </li>
+</ol> </section>
+<section id="GUID-3C64BE3F-859A-5E81-BCBD-C4BF717D4439"><title>Software install
+package file requirements</title> <p>When creating a PKG file (software install
+package file) for an application, the registration file must be installed
+to the <filepath>\private\10003a3f\import\apps\</filepath> directory. </p> <p>The
+application binary must be installed to <filepath>\sys\bin\</filepath> on
+the same drive as the registration file. </p> <p>The localizable resource
+files must be installed to <filepath>\resource\apps\</filepath> on the same
+drive as the registration file. </p> </section>
+<section id="GUID-BB2F1E46-47CE-51F8-9020-D0D1DD9E06CB"><title>Data caged
+file locations</title> <p>To comply with the directory structure imposed by
+data caging, many of the files associated with an application need to be relocated. </p> <p>Care
+should be taken to ensure application code which overrides the following APIs
+uses appropriate file locations: </p> <codeblock id="GUID-4CED50C3-3B76-5FCD-8F22-0B1D051E1A7A" xml:space="preserve">CEikApplication::ResourceFileName() 
+CEikApplication::BitmapStoreName() 
+CEikApplication::OpenIniFileLC( RFs&amp; aFs )</codeblock> <p>When specifying
+the location of files on a target device, application IBY files should explicitly
+specify <filepath>\sys\bin</filepath> as the destination location for application
+binary files instead of using <codeph>SYSTEM_BINDIR</codeph>. </p> </section>
+<section id="GUID-52802361-8A7A-5C8A-ACC1-F41E50CFD1CF"><title>Example files</title> <p id="GUID-CDA35D97-FF46-5A5F-A57B-F3E93B935E1C"><b>AppName_reg.rss</b> </p><codeblock id="GUID-AE62EB61-5776-55D8-9CA3-DB18EAC00CC7" xml:space="preserve">#include &lt;appinfo.rh&gt;
+
+UID2 KUidAppRegistrationResourceFile 
+UID3 0x01000000 // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "AppName";
+    //
+    localisable_resource_file = "\\resource\\apps\\AppName_loc";
+    //
+    hidden = KAppNotHidden;
+    embeddability = KAppNotEmbeddable;
+    newfile = KAppDoesNotSupportNewFile;
+    launch = KAppLaunchInForeground;
+    group_name = "AppNameGroup";
+    //
+    default_screen_number = 2;
+    //
+    datatype_list = 
+        {
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/jpeg"; },
+        DATATYPE { priority=EDataTypePriorityNormal; type="image/gif"; }
+        };
+    //
+    file_ownership_list =
+        {
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppNameTempFile.txt"; },
+        FILE_OWNERSHIP_INFO {file_name="z:\\temp\\AppName.txt"; }
+        };
+    }</codeblock> <p id="GUID-7F026167-77F9-5AC2-A68F-049DEC624A4E"><b> AppName_loc.rss</b> </p><codeblock id="GUID-E2F5C25C-206E-510F-BF8C-6E8EBA41F1DD" xml:space="preserve">#include &lt;appinfo.rh&gt; 
+#ifdef LANGUAGE_01 
+#include "AppName01.rls" 
+#else 
+#include "AppNamesc.rls" 
+#endif 
+RESOURCE LOCALISABLE_APP_INFO
+    {
+    short_caption = STRING_r_short_caption;
+    caption_and_icon =
+        {
+        CAPTION_AND_ICON_INFO
+            {
+            caption = STRING_r_caption;
+            number_of_icons = 2; // each icon must be a bitmap/mask pair
+            icon_file = STRING_r_icon_file;
+            }
+        };                            
+    //
+    view_list =
+        {
+        VIEW_DATA
+            {
+            uid = 268123123;
+            screen_mode = 0x00;
+            caption_and_icon =
+                {
+                CAPTION_AND_ICON_INFO
+                    {
+                    caption = STRING_r_view_268123123_caption;
+                    number_of_icons = 1; // each icon must be a bitmap/mask pair
+                    }
+                };                            
+            },
+        VIEW_DATA
+            {
+            uid = 268123124;
+            screen_mode = 0x01;
+            caption_and_icon =
+                {
+                CAPTION_AND_ICON_INFO
+                    {
+                    caption = STRING_r_view_268123124_caption;
+                    number_of_icons = 1; // each icon must be a bitmap/mask pair
+                    icon_file = "z:\\resource\\apps\\icon.svg";
+                    }
+                };
+            }
+        };
+    }</codeblock> <p><b>Note</b>: In the above example, RLS files have been
+used to demonstrate how resource files for different languages (<codeph>AppName_loc.r01</codeph> and <codeph>AppName_loc.rsc</codeph>)
+can be built from a single RSS file. </p> <p id="GUID-E828B29C-35AC-50CA-8B76-FD626D825E1A"><b> AppName01.rls</b> </p><codeblock id="GUID-BB8CC777-51FC-5BFC-99B3-19D68C130458" xml:space="preserve">rls_string STRING_r_short_caption "English AppName" 
+rls_string STRING_r_caption "English AppName Long Caption" 
+rls_string STRING_r_icon_file "z:\\resource\\apps\\EnglishAppNameIcons.mbm" 
+rls_string STRING_r_view_268123123_caption "caption for view 268123123" 
+rls_string STRING_r_view_268123124_caption "English view 268123124"</codeblock> <p id="GUID-8E9F17B1-4A22-56EF-ACD8-0432F3BB9DBD"><b> AppNamesc.rls</b> </p><codeblock id="GUID-F5182C0B-1F5E-5F7A-9F10-C0DCA34E0B84" xml:space="preserve">rls_string STRING_r_short_caption "AppName" 
+rls_string STRING_r_caption "Default AppName Caption" 
+rls_string STRING_r_icon_file "z:\\resource\\apps\\DefaultAppNameIcons.mbm" 
+rls_string STRING_r_view_268123123_caption "caption for view 268123123" 
+rls_string STRING_r_view_268123124_caption "caption for view 268123124"</codeblock> <p id="GUID-065DF486-615D-55F1-8572-DF30E58927C3"><b> AppName2_reg.rss</b> </p><codeblock id="GUID-3B7C2951-9B1D-51FD-9AED-2B68EEE6CA62" xml:space="preserve">#include &lt;appinfo.rh&gt; 
+#include &lt;appname.rsg&gt;
+
+UID2 KUidAppRegistrationResourceFile 
+UID3 0x01000000 // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "AppName";
+    //
+    localisable_resource_file = "\\resource\\apps\\appname";
+    localisable_resource_id = R_LAI;
+    }</codeblock> <p id="GUID-661C0B2C-9BA9-5168-B2A9-A2FA1F87B5D7"><b> AppName.rss</b> </p><codeblock id="GUID-54DDDB25-E66F-5CF1-ACA3-93244C44CC8D" xml:space="preserve">NAME APPN
+#include &lt;eikon.rh&gt; 
+#include &lt;eikon.rsg&gt; 
+#include &lt;appinfo.rh&gt;
+
+RESOURCE RSS_SIGNATURE                { } 
+RESOURCE TBUF r_appname_default_file  { buf="default file name"; } 
+RESOURCE EIK_APP_INFO                 { hotkeys=r_appname_hotkeys; menubar=r_appname_menubar; toolbar=r_appname_toolbar; } 
+RESOURCE LOCALISABLE_APP_INFO r_lai
+    {
+    short_caption = "AppName";
+    } 
+RESOURCE TOOLBAR r_appname_toolbar        { } 
+RESOURCE HOTKEYS r_appname_hotkeys        { } 
+RESOURCE MENU_BAR r_appname_menubar       { }</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-3CAD7211-2164-5F93-9EA7-7167E1C14012.dita"><linktext>Porting Applications
+to EXEs</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D86B83B5-298E-510A-B984-7307CCA1AE1C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D86B83B5-298E-510A-B984-7307CCA1AE1C" xml:lang="en"><title>How to
+use Lexical Analysis</title><shortdesc>Explains how to create and use TLex objects with code fragments.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-8A379959-AD24-4CA7-8664-63FDDBFA2A6B"><title>Introduction</title> <p>A <codeph>TLex</codeph> object may
+be constructed as an empty object, from another <codeph>TLex,</codeph> or
+from an existing string as below. The code fragments are taken from an example
+that implements a simple Reverse Polish Notation calculation engine.</p> <codeblock id="GUID-0F57D0AE-19C2-5C5D-BF05-5924643A933E" xml:space="preserve">TInt RPNCalc(const TDesC&amp; aCommand, TReal&amp; aReturnValue)
+    {
+    ...
+    TLex input (aCommand) ;
+    ...</codeblock> <p>Code can then proceed to move through the <codeph>TLex</codeph> data
+to:</p> <ul>
+<li id="GUID-DE9D6065-0426-5D33-A11B-3DEB3102A1EA"><p>mark positions for rolling
+back to later</p> </li>
+<li id="GUID-915C7EE1-AF85-5865-BD9A-7068426BC897"><p> delimit the start of
+lexical tokens</p> </li>
+<li id="GUID-0A43CFC8-B38B-5A94-AFA0-2C54266905F4"><p>delete parts of the
+string held by the <codeph>TLex</codeph> object.</p> </li>
+</ul> <codeblock id="GUID-2C636982-12F5-5DF6-A375-CCE4BD31FCA6" xml:space="preserve">...
+input.Mark() ;                     // Remember where we are.
+input.SkipCharacters() ;           // Move to end of character token.
+...
+_LIT(KTextMemset,"MEMSET");
+if ( input.TokenLength() != 0 )    // if valid potential token
+    {
+    TPtrC token = input.MarkedToken() ;    // then extract token
+    if ( token.CompareF(KTextMemset == 0)  // and test.
+        {
+        ...
+        }
+    ...
+    }
+ ...</codeblock> <p>Analysis can also be done by character using functions
+that move through the <codeph>TLex</codeph> data, extracting, returning and
+jumping specified character lengths. For example:</p> <codeblock id="GUID-E5650436-99E6-56C9-9CEF-2DF87F1D787D" xml:space="preserve">...
+// ensure we are looking at a digit or sign
+if (!(input.Peek().IsDigit() || (input.Peek() == '.') ) )
+    {
+    return KErrNotFound ;
+    }
+...    
+// deal with sign
+if (input.Peek() == '+')
+    {
+    input.Inc();
+    }</codeblock> <p>Additionally, numeric conversion functions permit a variety
+of numeric formats to be extracted from the <codeph>TLex</codeph> data, with
+provision for conversion using the most common number systems (radixes).</p> <codeblock id="GUID-BBE6F232-7E65-58A0-BDC8-F0293E1773F7" xml:space="preserve">...
+if (input.Val(extractUint) == KErrNone)
+    {
+    stack.Push(TReal(extractUint));
+    }
+else if (input.Val(extractReal) == KErrNone)
+        {
+        stack.Push(extractReal);
+        }
+...
+
+</codeblock> <p>where <codeph>stack</codeph>, is an instance of a class implementing
+a stack.</p> </section>
+<section id="GUID-F688DD13-C866-5752-8530-30DECBFF0054"><title>Constructing
+TLex objects</title> <p>This converts an real number into a string, which
+is then assigned to a <codeph>TLex</codeph>.</p> <codeblock id="GUID-CB88572D-66DC-5C54-9F74-02E9331A7BAD" xml:space="preserve">TBuf&lt;0x100&gt; convertRealToString;
+// want a TLex from a value
+if (convertRealToString.Num(value,format) &lt; KErrNone )
+    {
+       ...
+       }
+else
+    {
+    convertRealToString.ZeroTerminate();
+    TLex string(convertRealToString) ;
+       }</codeblock> <p>This takes a descriptor as a function parameter, and
+copies it to a <codeph>TLex</codeph>.</p> <codeblock id="GUID-B793E5B1-76A5-5178-B1E1-A569EA3C55EE" xml:space="preserve">TInt RPNCalc(const TDesC&amp; iCommand, TReal&amp; returnValue)
+    {
+    TLex input (iCommand) ;
+       }</codeblock> </section>
+<section id="GUID-C5B343D9-C530-5FA9-BED9-286C182081CF"><title>Peeking the
+next character</title> <p>This shows a code flow decision made according to
+next character to be read from the <codeph>TLex</codeph>:</p> <codeblock id="GUID-6FDB6BC3-9AB7-5C04-A003-7EE0CD26F396" xml:space="preserve">if (!(input.Peek()).IsDigit()) // found non-digit after decimal point if </codeblock> </section>
+<section id="GUID-B08D3122-C580-586F-8D62-75E75A1DC717"><title>Moving past
+a character that has been peeked</title> <p>This shows the use of the <codeph>Inc()</codeph> function
+to move past a character that has been peeked:</p> <codeblock id="GUID-F2F1A3B4-C42E-56F0-BA5C-2F9391CCD2FB" xml:space="preserve">if (input.Peek() == '-') 
+    {
+    input.Inc() ;        // move past minus sign &amp; flag
+    negative = ETrue ;
+    }</codeblock> </section>
+<section id="GUID-BF5B871F-CAFF-50A9-8833-A79CFCC7D3AC"><title>Restoring a
+previously “got” character</title> <p>This shows the use of <codeph>UnGet()</codeph> to
+restore the previously "got" character.</p> <codeblock id="GUID-8E6CACEE-5FEA-511D-B61C-9D4E99C9F1B8" xml:space="preserve">....
+if (input.Offset() &gt; 0)    // if not at start of line
+    {
+    input.UnGet() ;        // restore 'got' character
+    }</codeblock> <p>If the previous character is before the start of the
+string, then the function raises a USER 59 panic for the <codeph>TLex8</codeph> variant
+and a USER 64 panic for the <codeph>TLex16</codeph> variant.</p> </section>
+<section id="GUID-7B2BD371-C21F-547E-8ACE-682532C0562A"><title>Reset the next
+character to the supplied mark</title> <p>This shows how to allow part of
+a <codeph>TLex</codeph> can be parsed again:</p> <codeblock id="GUID-BC84B544-599D-5A96-ACB0-7C38D1E14DBA" xml:space="preserve">if (!(input.Peek()).IsDigit())
+    {
+    // found non-digit after decimal point. Error, so rewind 
+    input.UnGetToMark(startMark);
+    }</codeblock> </section>
+<section id="GUID-D167B57E-2F96-556F-9F72-3168CC1566C6"><title>Skipping any
+non-white space to get the next token</title> <p>This parses a <codeph>TLex</codeph> for
+the next token:</p> <codeblock id="GUID-EEA10D9C-5398-54B9-A3A2-F4AC2B972AEF" xml:space="preserve">input.Mark() ;                      // remember where we are
+input.SkipCharacters() ;            // move to end of character token
+if ( input.TokenLength() != 0 )     // if valid potential token
+...</codeblock> </section>
+<section id="GUID-B478FB61-512C-5EEF-8230-210912F0754B"><title>Getting length
+of a token</title> <p>This shows how <codeph>TokenLength()</codeph> is used
+to return the difference between the position of the next character and the
+extraction mark. This gives a check as to whether the token length is valid.
+An invalid token length implies an invalid token.</p> <codeblock id="GUID-36BDDC14-4FCF-5D2E-B0F0-203BEFA47378" xml:space="preserve">
+if ( input.TokenLength() != 0 )  // if valid token length
+...</codeblock> </section>
+<section id="GUID-526E40C0-F8A5-5AC6-B71C-812BE5AAB117"><title>Extracting
+a token</title> <p>This extracts a marked token.</p> <codeblock id="GUID-448E1246-E7A1-52E7-A459-D076F9C3901C" xml:space="preserve">TPtrC token = input.MarkedToken() ;  // extract token </codeblock> </section>
+<section id="GUID-37221F35-E851-5F6C-A743-A3A5C740DB8E"><title>Getting the
+offset of next character position</title> <p>This shows how to return the
+offset of the next character position from the start of the string.</p> <codeblock id="GUID-83C68224-6D43-542D-9B39-F6EF1FE43898" xml:space="preserve">if (input.Offset() &gt; 0)    // if not at start of line
+    {
+    input.UnGet() ;        // restore 'got' character
+    ...
+    }</codeblock> </section>
+<section id="GUID-037C75EE-CF00-518A-92E4-89C3BD593737"><title>Extracting
+an unknown number type</title> <p>This example shows how to return the offset
+of the next character position from the start of the string.</p> <codeblock id="GUID-F510C1CB-1CF1-5816-BF83-B016ABF76429" xml:space="preserve">if (input.Val(extractUint) == KErrNone)
+    {
+    stack.Push(TReal(extractUint)) ;
+    }
+else 
+    {
+    if (input.Val(extractReal) == KErrNone)
+        {
+        stack.Push(extractReal) ;
+        }
+    }</codeblock> <p>This extracts an unknown number type. Tries an integer
+first and then, if this fails, tries a real:</p> <codeblock id="GUID-2A9076F2-98C9-59A8-A3C7-F03A19A5B7E8" xml:space="preserve">if (input.Val(extractUint) == KErrNone)
+    stack.Push(TReal(extractUint)) ;
+else if (input.Val(extractReal) == KErrNone)
+    stack.Push(extractReal) ;
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF"><title>typeset</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>typeset [ {+|-}AEFHLRUZafghilprtuxm [n]] [ name[=value] ... ] </userinput> </p> <p>or </p> <p><userinput>typeset -T [ {+|-}LRUZrux ] SCALAR[=value] array [ sep ] </userinput> </p> <p>Set or display attributes and values for shell parameters. </p> <p>A parameter is created for each <codeph>name</codeph> that does not already refer to one. When inside a function, a new parameter is created for every <codeph>name</codeph> (even those that already exist), and is unset again when the function completes. The same rules apply to special shell parameters, which retain their special attributes when made local. </p> <p>For each <codeph>name=value</codeph> assignment, the parameter <codeph>name</codeph> is set to value. Note that arrays currently cannot be assigned in typeset expressions, only scalars and integers. </p> <p>If the shell option <codeph>TYPESET_SILENT</codeph> is not set, for each remaining <codeph>name</codeph> that refers to a parameter that is set, the name and value of the parameter are printed in the form of an assignment. Nothing is printed for newly-created parameters, or when any attribute flags listed below are given along with the <codeph>name</codeph>. Using <codeph>+</codeph> instead of <codeph>-</codeph> to introduce an attribute turns it off. </p> <table id="GUID-E564805D-F2F2-545F-8AE6-910E5287CDB8"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-p</codeph>  </p> </entry> <entry><p>The parameters and values are printed in the form of a typeset comand and an assignment (which will be printed separately for arrays and associative arrays), regardless of other flags and options. </p> </entry> </row> <row><entry><p> <codeph>-h</codeph>  </p> </entry> <entry><p>Flag on parameters is respected; no value will be shown for these parameters. </p> </entry> </row> <row><entry><p> <codeph>-T</codeph>  </p> </entry> <entry><p>Two or three arguments must be present (an exception is that zero arguments are allowed to show the list of parameters created in this fashion). The first two are the name of a <codeph>scalar</codeph> and an array parameter (in that order) that will be tied together in the manner of <codeph>$PATH</codeph> and <codeph>$path</codeph>. The optional third argument is a single-character separator which will be used to join the elements of the array to form the <codeph>scalar</codeph>; if absent, a colon is used, as with <codeph>$PATH</codeph> Only the first character of the separator is significant; any remaining characters are ignored. Only the <codeph>scalar</codeph> parameter may be assigned an initial value. Both the <codeph>scalar</codeph> and the array may otherwise be manipulated as normal. If one is unset, the other will automatically be unset too. </p> <p>There is no way of untying the variables without unsetting them, or converting the type of one of them with another typeset command;<codeph>
+                +T</codeph> does not work, assigning an array to <codeph>SCALAR</codeph> is an error, and assigning a <codeph>scalar</codeph> to array sets it to be a single-element array. Note that both <codeph>typeset -xT ... </codeph> and <codeph>export -T ...
+                </codeph> work, but only the <codeph>scalar</codeph> will be marked for export. Setting the value using the <codeph>scalar</codeph> version causes a split on all separators. </p> </entry> </row> </tbody> </tgroup> </table> <p>The <codeph>-g</codeph> (global flag) is treated specially: it means that any resulting parameter will not be restricted to local scope. Note that this does not necessarily mean that the parameter will be global, as the flag will apply to any existing parameter (even if unset) from an enclosing function. This flag does not affect the parameter after creation, hence it has no effect when listing existing parameters, nor does the flag <codeph>+g</codeph> have any effect except in combination with<codeph> -m</codeph>. </p> <p>If no <codeph>name</codeph> is present, the names and values of all parameters are printed. In this case the attribute flags restrict the display to only those parameters that have the specified attributes, and using <codeph>+</codeph> rather than <codeph>-</codeph> to introduce the flag suppresses printing of the values of parameters when there is no parameter name. Also, if the last option is the word <codeph>+</codeph>, then names are printed but values are not. </p> <p>If the <codeph>-m</codeph> flag is given the <codeph>name</codeph> arguments are taken as patterns (which should be quoted). With no attribute flags, all parameters (or functions with the <codeph>-f</codeph> flag) with matching names are printed (the shell option <codeph>TYPESET_SILENT</codeph> is not used in this case). Note that <codeph>-m</codeph> is ignored if no patterns are given. If the <codeph>+g</codeph> flag is combined with <codeph>-m</codeph>, a new local parameter is created for every matching parameter that is not already local. Otherwise <codeph>-m</codeph> applies all other flags or assignments to the existing parameters. Except when assignments are made with <codeph>name=value</codeph>, using <codeph>+m</codeph> forces the matching parameters to be printed, even inside a function. </p> <p>If no attribute flags are given and either no <codeph>-m</codeph> flag is present or the <codeph>+m</codeph> form was used, each parameter <codeph>name</codeph> printed is preceded by a list of the attributes of that parameter (array, association, exported, integer, readonly). If <codeph>+m</codeph> is used with attribute flags, and all those flags are introduced with <codeph>+</codeph>, the matching parameter names are printed but their values are not. </p> <p>The following options can be specified: </p> <table id="GUID-28640435-554C-5911-9BFB-FF138234E2B3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-A</codeph>  </p> </entry> <entry><p>The names refer to associative array parameters. </p> </entry> </row> <row><entry><p> <codeph>-L</codeph>  </p> </entry> <entry><p>Left justify and remove leading blanks from value. If <codeph>n</codeph> is nonzero, it defines the width of the field; otherwise it is determined by the width of the value of the first assignment. When the parameter is expanded, it is filled on the right with blanks or truncated if necessary to fit the field. Leading zeros are removed if the <codeph>-Z</codeph> flag is also set. </p> </entry> </row> <row><entry><p> <codeph>-R</codeph>  </p> </entry> <entry><p>Right justify and fill with leading blanks. If <codeph>n</codeph> is nonzero if defines the width of the field; otherwise it is determined by the width of the value of the first assignment. When the parameter is expanded, the field is left filled with blanks or truncated from the end. </p> </entry> </row> <row><entry><p> <codeph>-U</codeph>  </p> </entry> <entry><p>For arrays (but not for associative arrays), keep only the first occurrence of each duplicated value. This may also be set for colon-separated special parameters like <codeph>PATH</codeph> or <codeph>FIGNORE</codeph>, etc. This flag has a different meaning when used with <codeph>-f</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-Z</codeph>  </p> </entry> <entry><p>Right justify and fill with leading zeros if the first non-blank character is a digit and the <codeph>-L</codeph> flag has not been set. If <codeph>n</codeph> is nonzero it defines the width of the field; otherwise it is determined by the width of the value of the first assignment. </p> </entry> </row> <row><entry><p> <codeph>-a</codeph>  </p> </entry> <entry><p>The names refer to array parameters. An array parameter may be created this way, but it may not be assigned to in the typeset statement. When displaying, both normal and associative arrays are shown. </p> </entry> </row> <row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p>The names refer to functions rather than parameters. No assignments can be made, and the only other valid flags are <codeph>-t</codeph>, <codeph>-u</codeph> and <codeph>-U</codeph>. The flag <codeph>-t </codeph> turns on execution tracing for this function. The <codeph>-u</codeph> and <codeph>-U</codeph> flags cause the function to be marked for autoloading; <codeph>-U</codeph> also causes alias expansion to be suppressed when the function is loaded. The <codeph>fpath</codeph> parameter will be searched to find the function definition when the function is first referenced. </p> </entry> </row> <row><entry><p> <codeph>-h</codeph>  </p> </entry> <entry><p>Hide: only useful for special parameters (those marked <codeph>&lt;S&gt;</codeph>), and for local parameters with the same name as a special parameter, though harmless for others. A special parameter with this attribute will not retain its special effect when made local. Thus after <codeph>typeset -h PATH</codeph>, a function containing <codeph>typeset PATH</codeph> will create an ordinary local parameter without the usual behaviour of <codeph>PATH</codeph>. Alternatively, the local parameter may itself be given this attribute; hence inside a function <codeph>typeset -h PATH</codeph> creates an ordinary local parameter and the special <codeph>PATH</codeph> parameter is not altered in any way. It is also possible to create a local parameter using <codeph>typeset +h special</codeph>, where the local copy of special will retain its special properties regardless of having the <codeph>-h</codeph> attribute. Global special parameters loaded from shell modules (currently those in <codeph>zsh/mapfile</codeph> and <codeph>zsh/parameter</codeph>) are automatically given the <codeph>-h</codeph> attribute to avoid name clashes. </p> </entry> </row> <row><entry><p> <codeph>-H</codeph>  </p> </entry> <entry><p>Hide value: specifies that typeset will not display the value of the parameter when listing parameters; the display for such parameters is always as if the <codeph>+</codeph> flag had been given. Use of the parameter is in other respects normal, and the option does not apply if the parameter is specified by name, or by pattern with the <codeph>-m</codeph> option. This is on by default for the parameters in the <codeph>zsh/parameter</codeph> and <codeph>zsh/mapfile</codeph> modules. Note, however, that unlike the <codeph>-h</codeph> flag this is also useful for non-special parameters. </p> </entry> </row> <row><entry><p> <codeph>-i</codeph>  </p> </entry> <entry><p>Use an internal integer representation. If <codeph>n</codeph> is nonzero it defines the output arithmetic base, otherwise it is determined by the first assignment. </p> </entry> </row> <row><entry><p> <codeph>-E</codeph>  </p> </entry> <entry><p>Use an internal double-precision floating point representation. On output the variable will be converted to scientific notation. If <codeph>n</codeph> is nonzero it defines the number of significant figures to display; the default is ten. </p> </entry> </row> <row><entry><p> <codeph>-F</codeph>  </p> </entry> <entry><p>Use an internal double-precision floating point representation. On output the variable will be converted to fixed-point decimal notation. If <codeph>n</codeph> is nonzero it defines the number of digits to display after the decimal point; the default is ten. </p> </entry> </row> <row><entry><p> <codeph>-l</codeph>  </p> </entry> <entry><p>Convert the result to lower case whenever the parameter is expanded. The value is not converted when assigned. </p> </entry> </row> <row><entry><p> <codeph>-r</codeph>  </p> </entry> <entry><p>The given names are marked readonly. Note that if name is a special parameter, the readonly attribute can be turned on, but cannot then be turned off. </p> </entry> </row> <row><entry><p> <codeph>-t</codeph>  </p> </entry> <entry><p>Tags the named parameters. Tags have no special meaning to the shell. This flag has a different meaning when used with <codeph>-f</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-u</codeph>  </p> </entry> <entry><p>Convert the result to upper case whenever the parameter is expanded. The value is not converted when assigned. This flag has a different meaning when used with <codeph>-f</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-x</codeph>  </p> </entry> <entry><p>Mark for automatic export to the environment of subsequently executed commands. If the option <codeph>GLOBAL_EXPORT</codeph> is set, this implies the option <codeph>-g</codeph>, unless <codeph>+g</codeph> is also explicitly given; in other words the parameter is not made local to the enclosing function. This is for compatibility with previous versions of zsh. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF"><title>Loader Search Rules</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A summary of the rules that the loader follows to search for EXEs and DLLs. </p> <ul><li id="GUID-D6BAD23C-005E-58E4-8418-16FFBE8AC052"><p> <xref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita#GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF/GUID-D9984B1D-8C7E-55B5-86AC-E90E244BDFB3">Search rules for an EXE</xref>  </p> </li> <li id="GUID-373C451E-17C1-576C-8D00-6F15174CCD9D"><p> <xref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita#GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF/GUID-E026ABAD-D76E-51EF-886F-28F8E00185E5">Search rules for a DLL in the import table of an EXE or another DLL</xref>  </p> </li> <li id="GUID-5FD789FB-95A3-51DF-9AD4-FD7474ED9088"><p> <xref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita#GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF/GUID-FA4768B2-A741-5601-990C-46B51DA77803">Search rules for a DLL loaded from a program</xref>  </p> </li> </ul> <section id="GUID-D9984B1D-8C7E-55B5-86AC-E90E244BDFB3"><title>Search rules for an EXE</title> <p>To start a new process, call <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-DD214BA3-907E-3C7F-93C6-924A9A115A02"><apiname>RProcess::Create()</apiname></xref>. </p> <p> <codeph>RProcess::Create()</codeph> loads the EXE specified in the input parameters. The function then looks through the import table of the EXE to get a list of DLLs that the EXE references. The loader uses the list of DLLs in the import table to load the DLLs. If DLLs reference other DLLS, the loader uses the same method to load those DLLs. See <xref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita#GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF/GUID-E026ABAD-D76E-51EF-886F-28F8E00185E5">Search rules for a DLL listed in the import table of an EXE</xref>. </p> <p>The result of a search for an EXE depends on: </p> <ul><li id="GUID-DC1D5577-2D85-5B9F-B4F4-B10F4208CA46"><p>the name of the EXE. You provide this information. </p> </li> <li id="GUID-7BBF1688-8013-5C4D-8C60-09CA0E22D6B5"><p>the UID type : you provide. This is optional </p> </li> <li id="GUID-351742AD-AAE3-5050-AF93-DA990309FF37"><p>the version of the EXEs on the device </p> </li> </ul> <p>You pass the name of the EXE in the first parameter of <codeph>RProcess::Create()</codeph>. You have a number of choices: </p> <ul><li id="GUID-30C6FEB3-DED9-5BAF-AF3F-700FA8EE58D0"><p>you can specify the file name only. The loader will assume a <filepath>.exe</filepath> file extension. For example: </p> <p> <filepath>efile</filepath>  </p> </li> <li id="GUID-94CD2AC1-5FC5-52D8-893B-E6232522F494"><p>you can specify a filename and an extension. For example: </p> <p> <filepath>efile.exe</filepath>  </p> </li> <li id="GUID-06F6A1CF-FD26-5402-983F-E32D2D1F8B90"><p>you can put a path in front of the file name. A path has limited use, because the loader can load EXEs only from the directory <filepath>\sys\bin</filepath>, or from subdirectories of <filepath>\sys\bin</filepath>. </p> </li> </ul> <p><b>The search procedure</b> </p> <p>The loader searches for EXEs with the given name and extension. More than one EXE with the given name and extension can exist on a device. </p> <ol id="GUID-16CF313D-BAB9-58BB-AB38-ED59BDF572D4"><li id="GUID-DE4AD994-9C84-5113-B2C7-9030DC08C22E"><p>If you do not provide a path, the loader searches the <filepath>\sys\bin</filepath> directory on all drives. The loader searches drives in the order <filepath>Y:</filepath>, <filepath>X:</filepath> ... <filepath> B:</filepath>, <filepath>A:</filepath>. The <filepath>Z:</filepath> drive is searched last. Subdirectories of <filepath>\sys\bin</filepath> are not searched. </p> <p>If you provide a path, there are only three useful cases: </p> <ul><li id="GUID-3D83CC05-0B68-5CA7-AB52-01A7858E2383"><p>to limit the search to a specific drive. For example: </p> <p> <filepath>X:\sys\bin</filepath>  </p> <p>where <filepath>X:</filepath> can be one of the drives <filepath>A:</filepath> to <filepath>Z:</filepath>. </p> </li> <li id="GUID-821A186F-9DA4-51E6-9CAD-E833D9DEDF3F"><p>to limit the search to a subdirectory of <filepath>\sys\bin</filepath> on a specific drive. For example: </p> <p> <filepath>X:\sys\bin\aaa\bbb</filepath>  </p> <p>The use of subdirectories in <filepath>\sys\bin</filepath> is not common. </p> <p>where <filepath>X</filepath>: can be one of the drives <filepath>A:</filepath> to <filepath>Z:</filepath>. </p> </li> <li id="GUID-63815160-C411-5BEB-AC8F-7224F33883BE"><p>to limit the search to a subdirectory of <filepath>\sys\bin</filepath> on all drives. For example: </p> <p> <filepath>\sys\bin\aaa\bbb</filepath>  </p> <p>The loader searches all drives in the order <filepath>Y:</filepath>, <filepath>X:</filepath> ... <filepath> B:</filepath>, <filepath>A:</filepath>. The <filepath>Z:</filepath> drive is searched last. </p> <p>The use of subdirectories in <filepath>\sys\bin</filepath> is not common. </p> </li> </ul> <p>The loader cannot load EXEs from other directories, because system security prevents it. </p> </li> <li id="GUID-1AFA13C7-24B4-5598-94CA-448D05449BBA"><p>The loader compares the UID type (<xref href="GUID-B6D6B0AD-B15C-339A-8540-40540885089A.dita"><apiname>TUidType</apiname></xref>) of each EXE in the list with the UID type you specify in <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-DD214BA3-907E-3C7F-93C6-924A9A115A02"><apiname>RProcess::Create()</apiname></xref>. The UID type is a set of three UIDs. Each UID in the UID type that you specify must match the same UID in the UID type of the EXE. If you specify <xref href="GUID-707A476C-1790-34DB-B1E5-5435578E01AA.dita"><apiname>KNullUid</apiname></xref> for any of the three UIDs in your UID type, a match is automatic. </p> </li> <li id="GUID-7F8E3D49-F2CB-5445-ACCC-F7967B4C745F"><p>If the search has found no EXEs, the load fails. </p> </li> <li id="GUID-1469E256-98FF-51B8-9936-78ED389EDCBE"><p>If the search has found one EXE only, the loader loads that EXE. </p> </li> <li id="GUID-90B5C4A5-A0E9-5ADD-B76A-3491C322C4B1"><p>If more than one EXE has been found, the loader loads the EXE with the highest version. A version <codeph>N.n</codeph> is higher than version <codeph>M.m</codeph> if <codeph>(N&gt;M or (N==M and n&gt;m))</codeph>. </p> </li> <li id="GUID-A4761946-0490-5887-9686-184B6BED556C"><p>If all EXEs have the same version, the loader loads the version found first. </p> </li> </ol> </section> <section id="GUID-E026ABAD-D76E-51EF-886F-28F8E00185E5"><title>Search rules for a DLL in the import table of an EXE or another DLL</title> <p>After the loader has selected the EXE, the loader loads all DLLs in the import table. This is also called static linkage. </p> <p>The import table contains the name and extension of each DLL. The import table also contains the version of each DLL and the 3rd UID that identifies each DLL. The version information is stored in the import table when the executable file is built. All DLLs have an ordered set of three UIDs. The third UID gives a unique identity to the DLL. See <xref href="GUID-C135B8D8-DA5A-5852-9C2D-18622404FE99.dita">UID protection</xref>. </p> <p><b>The search procedure</b> </p> <p>The search uses the following procedure for each DLL: </p> <ol id="GUID-FF01C553-8546-5A2C-B34B-8F85014631D6"><li id="GUID-42FD9744-4B2C-55D6-A7B0-73DE248861DE"><p>The loader searches the <filepath>\sys\bin</filepath> directory on all drives for all DLLs that have the filename and extension. The loader searches drives in the order <filepath>Y:</filepath>, <filepath>X:</filepath> ... <filepath> B:</filepath>, <filepath>A:</filepath>. The <filepath>Z:</filepath> drive is searched last. Subdirectories of <filepath>\sys\bin</filepath> are not searched. The loader searches for all versions of the DLL. If the loader finds the same version of a DLL on more than one drive, the loader only adds the first one to the set of possible DLLs. For example, if version 2.1 of a DLL is on drive <filepath>D:</filepath> and on drive <filepath>Z:</filepath>, only the version on drive <filepath>D:</filepath> is added to the set of possible DLLs. </p> <p>The loader cannot load DLLs from other directories, because system security prevents it. </p> <p>[Before December 2007, the loader had different behaviour. The loader searched the drive from which the EXE was loaded before the loader checked the other drives. For example, if the EXE was loaded from drive <filepath>Z:</filepath>, and version 2.1 of a DLL was on drive <filepath>D:</filepath> and drive <filepath>Z:</filepath>, the loader selected the version of the DLL that was on drive <filepath>Z:</filepath>.] </p> </li> <li id="GUID-BC036626-7461-5C4E-A710-09D693CE5A1E"><p>The loader then selects those DLLs that have the same 3rd UID from the set of possible DLLs. This operation can decrease the set of possible DLLs. If there are no DLLs in the set, the load fails. </p> </li> <li id="GUID-9AE6A749-4C72-557F-AB3A-5E33E246A8AE"><p>The loader then selects those DLLs that have platform security capabilities that match or exceed those of the EXE. This selection operation can decrease the set of possible DLLs. If there are no DLLs in the set the load fails. </p> <p>See also : <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">Platform security</xref>. </p> </li> <li id="GUID-7F083400-E8FB-52E0-A8CD-D96DDB093F39"><p>Each DLL in the import table of the EXE has a version number. This number is the version of the DLL to which the EXE is linked. The loader uses the version number in the import table to select the correct version of the DLL. The following flowchart shows how the loader selects the DLL from the set of possible DLLs. </p> <fig id="GUID-1F388A1E-BBB8-5481-8197-1F3C87BB2948"><image href="GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e239986_href.png" placement="inline"/></fig> </li> <li id="GUID-56B0AF9F-4D39-517B-A3A5-779B7D892CEF"><p>If there are no DLLs that meet the requirements, the load fails. </p> </li> </ol> </section> <section id="GUID-FA4768B2-A741-5601-990C-46B51DA77803"><title>Search rules for a DLL loaded from a program</title> <p>To load a DLL from a program, call <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>. This is known as dynamic linking. </p> <p> <codeph>RLibrary::Load()</codeph> loads the DLL specified in the input parameters. The function then uses the import table to get a list of referred DLLs. The loader loads the DLLs in the list and uses the same search method that the loader uses for EXEs. See <xref href="GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita#GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF/GUID-E026ABAD-D76E-51EF-886F-28F8E00185E5">Search rules for a DLL in the import table of an EXE</xref>. </p> <p>The result of a search for an DLL depends on: </p> <ul><li id="GUID-CBC9178F-D0CD-5558-9AA0-338F7CB52479"><p>the name of the DLL. You provide this information. </p> </li> <li id="GUID-E735C0C9-CFCE-5A37-8E41-313039AAD44B"><p>the UID type : you provide. This is optional. </p> </li> <li id="GUID-14168E41-7825-5546-BD2C-02BB107D2D3C"><p>the required version : you provide. This is optional. </p> </li> <li id="GUID-03ED4A5A-813A-5332-BCA5-8735793A4370"><p>the version of the DLLs on the device. </p> </li> </ul> <p>You pass the name of the DLL in the first parameter of <codeph>RLibrary::Load()</codeph>. You have a number of choices: </p> <ul><li id="GUID-D5C6F45B-0BCF-58E5-993A-999F96F24354"><p>you can specify the file name only. The loader will assume a <filepath>.dll</filepath> file extension. For example: </p> <p> <filepath>efsrv</filepath>  </p> </li> <li id="GUID-63E96237-0DA1-502E-9C39-4562A31BF616"><p>you can specify a filename and an extension. For example: </p> <p> <filepath>efsrv.dll</filepath>  </p> </li> <li id="GUID-B1FC4B22-267B-5B6B-8ADC-62C7012C7925"><p>you can put a path in front of the file name. A path has limited use, because the loader can load DLLs only from the directory <filepath>\sys\bin</filepath>, or from subdirectories of <filepath>\sys\bin</filepath>. </p> </li> </ul> <p>See <xref href="GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.dita">Dynamically loading link libraries</xref> and <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">Using ECom</xref>. </p> <p><b>The search procedure</b> </p> <p>The loader searches for DLLs with the given name and extension. More than one DLL with the given name and extension can exist on a device. </p> <ol id="GUID-5AA22DFB-F4D1-5358-96DE-D6B43BCB905E"><li id="GUID-60421212-8123-54A2-9A77-71C39E7EB4B6"><p>If you do not provide a path, the loader searches the <filepath>\sys\bin</filepath> directory on all drives. The loader searches drives in the order <filepath>Y:</filepath>, <filepath>X:</filepath> ... <filepath> B:</filepath>, <filepath>A:</filepath>. The <filepath>Z:</filepath> drive is searched last. Subdirectories of <filepath>\sys\bin</filepath> are not searched. </p> <p>If you provide a path, there are only three useful cases: </p> <ul><li id="GUID-693CCFBB-E1A7-50BD-AC89-95F73E0A569D"><p>to limit the search to a specific drive. For example: </p> <p> <filepath>X:\sys\bin</filepath>  </p> <p>where <filepath>X:</filepath> can be one of the drives <filepath>A:</filepath> to <filepath>Z:</filepath>. </p> </li> <li id="GUID-F1B66565-1FC3-571D-9CD2-84AE8013F48E"><p>to limit the search to a subdirectory of <filepath>\sys\bin</filepath> on a specific drive. For example: </p> <p> <filepath>X:\sys\bin\aaa\bb</filepath>  </p> <p>The use of subdirectories in <filepath>\sys\bin</filepath> is not common. </p> <p>where <filepath>X:</filepath> can be one of the drives <filepath>A:</filepath> to <filepath>Z:</filepath>. </p> </li> <li id="GUID-AADB293F-8945-5875-B3C2-9B77F938EDEF"><p>to limit the search to a subdirectory of <filepath>\sys\bin</filepath> on all drives. For example: </p> <p> <filepath>\sys\bin\aaa\bbb</filepath>  </p> <p>The loader searches all drives in the order <filepath>Y:</filepath>, <filepath>X:</filepath> ... <filepath> B:</filepath>, <filepath>A:</filepath>. The <filepath>Z:</filepath> drive is searched last. </p> <p>The use of subdirectories in <filepath>\sys\bin</filepath> is not common. </p> </li> </ul> <p>System security prevents the loader from loading DLLs from any other directories. </p> </li> <li id="GUID-F0DD2783-C346-5F30-8691-7BC3F13D8F76"><p>The loader compares the UID type (<xref href="GUID-B6D6B0AD-B15C-339A-8540-40540885089A.dita"><apiname>TUidType</apiname></xref>) of each DLL in the list with the UID type you specify in <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>. The UID type is a set of three UIDs. Each UID in the UID type that you specify must match the same UID in the UID type of the DLL. If you specify <xref href="GUID-707A476C-1790-34DB-B1E5-5435578E01AA.dita"><apiname>KNullUid</apiname></xref> for any of the three UIDs in your UID type, there is a match. </p> </li> <li id="GUID-F86E7050-500E-5C21-AA70-98DC95E8BB73"><p>If the search has found no DLLs, the load fails. </p> </li> <li id="GUID-27848CFE-3B37-5350-83B1-48A2B1E83705"><p>The loader then selects those DLLs that have platform security capabilities that match or exceed those of the process . This selection operation can decrease the set of possible DLLs. If there are no DLLs in the set the load fails. </p> </li> <li id="GUID-0A421D77-7BE4-5C9F-AB93-F6F0E06342A3"><p>If the search has found no DLLs, the load fails. </p> </li> <li id="GUID-A34E59F9-FAD4-54DB-86A6-C2A428710FB8"><p>If you specify a version number in <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>, the loader selects a version of the DLL from the set. The following flowchart shows how the loader selects the DLL from the set of possible DLLs. </p> <fig id="GUID-9412E498-19E5-5D58-B913-DD55BBB79D4D"><image href="GUID-91224821-8094-59ED-A100-4174193A25EE_d0e240271_href.png" placement="inline"/></fig> </li> <li id="GUID-61AE1C0C-A698-5BEC-A5DA-E28CB5D807A3"><p>If there are no DLLs that meet the requirements, the load fails. </p> </li> <li id="GUID-D8791217-B11C-548A-9756-10476E843A51"><p>If you do not specify a version number in <xref href="GUID-25327159-83D6-3507-B187-09EA4BB3727F.dita#GUID-25327159-83D6-3507-B187-09EA4BB3727F/GUID-4F1B2717-D34F-32A4-B6E6-03D0533186A3"><apiname>RLibrary::Load()</apiname></xref>, the loader loads the DLL with the highest version. A version <codeph>N.n</codeph> is higher than version <codeph>M.m</codeph>, if <codeph>(N&gt;M or (N==M and n&gt;m))</codeph>. </p> </li> <li id="GUID-D43C380A-C315-5C7B-8508-0720EB1E1EEE"><p>If all DLLs have the same version, the loader loads the DLL found first. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D88AA184-6E22-5069-A249-5AD83F548C56.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D88AA184-6E22-5069-A249-5AD83F548C56"><title>How to use the Hash API</title><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-019D2F91-38B5-5D35-B16F-F64E20188E8B"><p><xref href="GUID-D88AA184-6E22-5069-A249-5AD83F548C56.dita#GUID-D88AA184-6E22-5069-A249-5AD83F548C56/GUID-DEE9EA04-A6FD-5BE2-A26F-55126414FAC3">How do I use the hash framework?</xref>  </p> </li> <li id="GUID-6BDA9DDE-F26C-5E49-91D5-6F1CA81656E3"><p><xref href="GUID-D88AA184-6E22-5069-A249-5AD83F548C56.dita#GUID-D88AA184-6E22-5069-A249-5AD83F548C56/GUID-AF3925CF-E372-56A4-A473-FF583F92AD08">Which hash should I use?</xref>  </p> </li> </ul> <section id="GUID-DEE9EA04-A6FD-5BE2-A26F-55126414FAC3"><title>How do I use the hash framework?</title> <p>There are a couple of ways to interact with the hash framework. The following example is probably the most common: </p> <codeblock id="GUID-CECDA431-7E5D-530C-A6DE-273F8A33B530" xml:space="preserve"> 
+_LIT(messagePart1, "Hello ");
+_LIT(messagePart2, "My "); 
+_LIT(messagePart3, "Name "); 
+_LIT(messagePart4, "is Fred"); 
+TBuf8&lt;20&gt; hash;
+
+CSHA1* sha1 = CSHA1::NewL(); 
+sha1-&gt;Update(messagePart1);
+sha1-&gt;Update(messagePart2); 
+sha1-&gt;Update(messagePart3);
+hash.Copy(sha1-&gt;Final(messagePart4)); 
+</codeblock> <p>Note that <codeph>Final()</codeph> has a version that takes no data parameter which may be useful in certain situations. </p> <p>A few pointers: </p> <ul><li id="GUID-A9716705-015A-5AFD-A038-BAB3F8D4C4DA"><p>You can reuse a hash object by calling <codeph>Reset()</codeph>. </p> </li> <li id="GUID-90C1BB63-563B-52D7-9B27-E3D638E00BA7"><p>Both versions of <codeph>Final()</codeph> call <codeph>Reset()</codeph> at the end of their function automatically. </p> </li> <li id="GUID-72D8B74B-CCAD-513B-951E-E06101644EA3"><p>Be aware that the returned <codeph>TPtrC8</codeph> from <codeph>Final()</codeph> points to an internal buffer. Calling <codeph>Update()</codeph> or <codeph>Final()</codeph> again changes the contents of this buffer and will destroy your previously computed hash. As in the example above, make sure you copy the data out if you need it. </p> </li> </ul> </section> <section id="GUID-AF3925CF-E372-56A4-A473-FF583F92AD08"><title>Which hash should I use?</title> <p>Unless you have a specific need to support certain hashes, use SHA-1. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8900275-FCD4-5296-A27A-75A1C5744D7F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D8900275-FCD4-5296-A27A-75A1C5744D7F"><title>Localised Names of Plug-ins</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This API must be used by applications that display names of plug-ins to users. This API is used by the Character Conversion API's <codeph>CCnvCharacterSetNames</codeph> class to generate a localised list of character set conversion plug-ins. </p> <p>Some devices allow users to switch between different languages. On such a device, lists of plug-in names displayed to users need to be localised. Localising a list of plug-in names involves: </p> <ul><li id="GUID-9869368B-7D56-57ED-8836-87CA36B0CE35"><p>translating plug-in names into the device's new language. The plug-in names need to be read from resource files. The list cannot simply use filenames. </p> </li> <li id="GUID-46B45094-C5F9-5DF7-8B8C-668611903BE5"><p>sorting the list contents according to the new locale's collation rules — different locales have different rules for sorting text. </p> </li> <li id="GUID-02ABC23A-7B9C-5216-A983-2DBEE147DBEE"><p>filtering the list. The user will not necessarily need to be shown the names of all plug-ins for a given framework in all locales. Some plug-ins may not be applicable to all locales, so that their names may need to be removed from the list. For this to happen, the localised name of the plug-in should be an empty string. </p> </li> </ul> <p>The parameters for the named plug-in list are packaged together into an object of type <codeph>CBaNamedPlugins::CParameters</codeph>, which is passed to <codeph>CBaNamedPlugins::NewL()</codeph> or <codeph>NewLC()</codeph>. </p> <p>Minimally, two parameters must be provided in this object — a list of <codeph>CBaNamedPlugins::TResourceFile</codeph> s, and a connected session with the file server. Each <codeph>TResourceFile</codeph> object contains the language-independent name of a resource file and a unique identifier for the plug-in it names. One resource file should be specified for each plug-in. </p> <p>Other parameters are optional. They include: </p> <ul><li id="GUID-14CB58F1-1B92-5C73-97D6-5C9F163501D8"><p>An object that generates a fallback name for plug-ins, if no resource file could be found with the correct language extension. </p> </li> <li id="GUID-1D452B0A-42DD-50D6-9317-6AB622A3C2CF"><p>A function that compares two plug-in names for collation. </p> </li> </ul> <p>Default implementations for both of these functions are provided. See <xref href="GUID-1B8D19AA-9FCF-32D5-B072-CDBA52F89CCD.dita"><apiname>CBaNamedPlugins</apiname></xref> for details. </p> <p>This API consists of a single class, <xref href="GUID-1B8D19AA-9FCF-32D5-B072-CDBA52F89CCD.dita"><apiname>CBaNamedPlugins</apiname></xref>. This is a descriptor array which implements the <codeph>MDesCArray</codeph> interface. When the list has been populated, it is sorted using the second function, then items in the list can be retrieved using the implementation of the <codeph>MDesCArray</codeph> interface — <codeph>MdcaCount()</codeph> and <codeph>MdcaPoint()</codeph>. </p> <p>It uses the following: </p> <ul><li id="GUID-C9B177B2-F6E9-5188-BB13-E6E34D769206"><p> <b>Interface to resource files:</b> Localised plug-in names are provided in resource files. </p> </li> <li id="GUID-DC3CD9C4-A8D0-50DD-836B-36AB4991F8ED"><p> <b>File server client-side and application utilities:</b> A <codeph>CBaNamedPlugins</codeph> object populates its named plug-in list by searching the file sytem for localised versions of resource files, then opens them for reading. It requires a connected session with the file server to do this. <xref href="GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930.dita#GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930/GUID-BC05133B-2C69-302E-B2D4-11B4A88A8730"><apiname>BaflUtils::NearestLanguageFile()</apiname></xref> is used internally to create the correct language extension for each resource file. </p> </li> <li id="GUID-B506B848-487B-5B17-BE39-B801EC4A41A8"><p> <b>Descriptors:</b> The list can be sorted using a default algorithm, (<codeph>TDesC::CompareC()</codeph>). It also allows you to define and use a custom algorithm instead. </p> </li> </ul> <p> </p> </conbody><related-links><link href="GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita"><linktext>Interface to Resource
+                Files</linktext> </link> <link href="GUID-98903A01-CD04-5345-84AE-2E440CE06E11.dita"><linktext>Resource File Examples</linktext> </link> <link href="GUID-198DCED1-F429-5C95-A51D-53AE416687E8.dita"><linktext>File Server Client Side</linktext> </link> <link href="GUID-D80D6D46-27B7-500E-A83C-63EF038606BF.dita"><linktext>Application Utilities</linktext> </link> <link href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita"><linktext>Descriptors</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D89D1809-0A64-4331-BA5C-2B82187BEFB6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D89D1809-0A64-4331-BA5C-2B82187BEFB6" xml:lang="en"><title>Retrieving
+the vibra settings</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>VibraSettings()</codeph> call retrieves the
+current settings of the vibration feature in the user profile. The Symbian
+developer can check the vibra settings in the profile. </p><p>The following
+code snippet demonstrates how to retrieve the vibra settings:</p><codeblock xml:space="preserve">CHWRMVibra::TVibraModeState vibraModeState = iVibra-&gt;VibraSettings();</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8A18789-3A3E-4E4A-9D34-35F83BF71449.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D8A18789-3A3E-4E4A-9D34-35F83BF71449" xml:lang="en"><title>Augmenting
+a Certificate Store</title><abstract><p>You can use <codeph>certapp</codeph> to add new certificates
+to an already existing certificate store. </p> <p>The following example shows
+the generation of a software install (SWI) certificate store file, <codeph>new_swicertstore.dat</codeph>.
+This file is generated by augmenting the SWI certificate store represented
+by <codeph>swicertstore.dat</codeph> with certificate entries specified in <codeph>extra_certs.txt</codeph>. </p><p><cmdname>&gt;
+certapp --bswicertstore=swicertstore.dat --hswicertstore=extra_certs.txt --out
+--bswicertstore=new_swicertstore.dat</cmdname></p></abstract><prolog><metadata><keywords/></metadata></prolog></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3"><title>Introduction to stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A store is a collection of streams and is a fundamental part of the operating system. </p> <p>Stores are used to implement the persistence of objects. Typically, a store is a file, although an in-memory store is provided. A store can also be embedded as a stream within another store; this is a more advanced aspect of stores.</p> <p>For many purposes, stores replace the direct use of files and the file server client side API, although other features of the file server are still relevant. Stores are a key building block for the application architecture because they provide the support necessary for embedded documents.</p> <p>The basic behaviour of stores is encapsulated by the <codeph>CStreamStore</codeph> class and provides the core abstract framework that allows streams to be manipulated. Each class derived from <codeph>CStreamStore</codeph> implements the parts of the API that are appropriate.</p> <p>A number of stores are defined that build on <codeph>CStreamStore</codeph>. Some of the most important are: <codeph>CPersistentStore</codeph>, <codeph>CFileStore</codeph>, <codeph>CDirectFileStore</codeph>, <codeph>CPermanentFileStore</codeph>, <codeph>CEmbeddedStore</codeph>, <codeph>CBufStore</codeph>. Each has various capabilities.</p> <p>A store is also the basis of the relational database provided by DBMS.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8D30C70-C6ED-4E4C-9815-BF7993262ABF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D8D30C70-C6ED-4E4C-9815-BF7993262ABF" xml:lang="en"><title>Using <codeph>GCompletion</codeph></title><shortdesc><codeph>GCompletion</codeph> provides a method for automatic string
+completion using a group of target strings. This is typically used for file
+name completion as is common in many UNIX shells. A possible use of such APIs
+in a mobile device application is the contacts application. For example, if
+all the names that begin with a particular prefix, say "abc", are to be displayed,
+these APIs can be used to get and display all the names that begin with "abc".</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A <codeph>GCompletion</codeph> is created using <codeph>g_completion_new()</codeph>.
+Target items are added using <codeph>g_completion_add_items()</codeph>. This
+API takes a doubly-linked list item, <codeph>GList</codeph>, as a parameter.
+Items are removed using <codeph>g_completion_clear_items()</codeph> and <codeph>g_completion_remove_items()</codeph>.
+A completion attempt is requested using <codeph>g_completion_complete()</codeph> or <codeph>g_completion_complete_utf8()</codeph>.
+A <codeph>GCompletion</codeph> is freed using <codeph>g_completion_free()</codeph>.</p>
+<p>Generally a <codeph>GCompletion</codeph> item is a string. The default
+function used to compare a string is <codeph>strncmp()</codeph>. If a function
+other than it is desired, then it can be set using the function <codeph>g_completion_set_compare()</codeph>.
+If an arbitrary data structure is to be compared, a <codeph>GCompletionFunc</codeph> is
+to be provided to <codeph>g_completion_new()</codeph>.</p>
+<p>The following code demonstrates the usage of <codeph>GCompletion</codeph> APIs.</p>
+<p>In the code a <codeph>GCompletion</codeph> is created using <codeph>g_completion_new()</codeph>.
+Target strings are added using <codeph>g_completion_add_items()</codeph>.
+The comparison function is changed to <codeph>g_ascii_strncasecmp()</codeph> to
+allow matches without the consideration of case. A completion attempt for
+the string “aB” and the same is printed using <codeph>g_print()</codeph>.
+Finally the <codeph>GCompletion</codeph> is freed using <codeph>g_completion_free()</codeph>.</p>
+<codeblock xml:space="preserve">#include &lt;glib.h&gt;
+
+int main ()
+{
+	GCompletion *cmp;
+	GList *items;
+	gchar *prefix;
+
+	//create a new GCompletion
+	cmp = g_completion_new (NULL);
+
+	//create a new GList to create a set of target strings.
+	items = NULL;
+	items = g_list_append (items, "AbcDEF");
+	items = g_list_append (items, "bc");
+	items = g_list_append (items, "bd");
+			
+	//add the target strings			
+	g_completion_add_items (cmp, items);
+	
+	//change the comparison API to g_ascii_strncasecmp
+	g_completion_set_compare(cmp,g_ascii_strncasecmp);
+	
+	//find the first match
+	items = g_completion_complete (cmp, "aB", &amp;prefix);
+	
+	g_print("The match for aB is %s",prefix);
+	getchar();
+	
+	g_free (prefix);
+	
+	g_completion_free(cmp);
+	return 0;
+}
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D8D698FF-08CD-56B4-A6BF-E185A25F6988.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-D8D698FF-08CD-56B4-A6BF-E185A25F6988" xml:lang="en"><title>Retrieving
+and modifying attachments to messages</title><shortdesc>The messaging framework allows you to retrieve and modify attachments
+to messages. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-15885C98-AB41-5250-BC54-8FD519FCC2DB"><p>Attachments may
+be retrieved and modified after they have been added to a message. </p> </context>
+<steps id="GUID-8EC42591-32C1-5790-B644-E9DD82F4C767">
+<step id="GUID-7FB4A7D1-965F-5E58-9606-0B2BBDFA9781"><cmd>Get the details
+of the message to which you want to add an attachment using <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-1864B96D-CB22-3EE1-8E73-023F12C68CB0"><apiname>CMsvEntry::EditStoreL()</apiname></xref>. </cmd>
+<info>This function returns <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> in writable mode. </info>
+</step>
+<step id="GUID-BF15138A-9F76-5BD0-A72F-8A125B011CCE"><cmd>Get an <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita"><apiname>MMsvAttachmentManager</apiname></xref> attachment
+manager for the message entry, using <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-73CE27F3-855B-3F87-AE11-4B4F2B8F8825"><apiname>CMsvStore::AttachmentManagerL()</apiname></xref>. </cmd>
+</step>
+<step id="GUID-A7041D09-6EA5-54CE-A972-E0D4993C26FC"><cmd/>
+<info>Find how many attachments a message entry has using the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-BAA9F4CF-E7F8-3644-8C0D-4387BAB7C432"><apiname>MMsvAttachmentManager::AttachmentCount()</apiname></xref> function. </info>
+</step>
+<step id="GUID-A58AFC6B-ADBA-5D3F-824F-A9EBDEBB2A0A"><cmd/>
+<info>Get attachment attributes using the appropriate <xref href="GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F.dita"><apiname>CMsvAttachment</apiname></xref> functions.
+. </info>
+</step>
+<step id="GUID-5574C96C-2E2B-55CC-AE8A-BF44CFD76D4B"><cmd/>
+<info>Get attachment information using the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-256088DF-2FD0-32D9-8EEE-EFAC65A8E9AC"><apiname>MMsvAttachmentManager::GetattachmentL()</apiname></xref> function. </info>
+</step>
+</steps>
+<example id="GUID-94880E70-F23F-5F18-8E0F-A29B99C96E4B"><title>Retrieval and
+modification example</title> <p>The following code uses the <xref href="GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD.dita#GUID-4E2B0CEA-1EDA-3452-895D-3CE1B59FD8FD/GUID-BAA9F4CF-E7F8-3644-8C0D-4387BAB7C432"><apiname>MMsvAttachmentManager::AttachmentCount()</apiname></xref> and <xref href="GUID-C7C9E584-2E24-3B65-9E37-F4085F9F7CDB.dita"><apiname>GetattachmentL()</apiname></xref> functions to get attachment information. It then calls the various <xref href="GUID-8C2B9B89-D6B7-3622-AF26-658F53BCB70F.dita"><apiname>CMsvAttachment</apiname></xref> accessor
+functions to get the attachment attributes, and to access the attachment file
+itself: </p> <codeblock id="GUID-FEEB49D7-E9D4-59E7-B9EC-CF87DA3140FE" xml:space="preserve">void CFoo::GetAttachmentInfoL(MMsvAttachmentManager&amp; attManager)
+    {
+    // get number of attachments
+    TInt numAttach = attManager.AttachmentCount();
+    if ( numAttach == 0 ) 
+       { // no attachments
+       return;
+       }
+
+    // Get attachment attributes for the first attachment (index 0)
+    CMsvAttachment* attachInfo = attManager.GetAttachmentInfoL(0);
+
+    // Ownership of attachInfo is transferred to the caller - so push it onto the CleanupStack
+    CleanupStack::PushL(attachInfo);
+    
+    // Get attachment's name 
+    const TDesC&amp; attachName = attachInfo-&gt;AttachmentName();
+
+    // Get attachment's size 
+    TInt attachSize = attachInfo-&gt;Size();
+    
+    // Get attachment's type 
+    CMsvAttachment::TMsvAttachmentType attachType = attachInfo-&gt;Type();
+    
+    // Get MIME type 
+    const TDesC8&amp; attachMType = attachInfo-&gt;MimeType();
+    
+    // Get completeness flag   
+    TBool complete = attachInfo-&gt;Complete(); 
+
+    ...
+
+    // Destroy attachInfo when finished.  
+    CleanupStack::PopAndDestroy(attachInfo);
+    }</codeblock> <p>You can modify attachment information for an existing
+attachment using the <xref href="GUID-ECE58326-D542-3C73-AE6F-959DCF64A875.dita"><apiname>ModifyattachmentL()</apiname></xref> function. The
+attachment information object passed in replaces the existing attachment information
+object. </p> <codeblock id="GUID-DDA08731-A761-5D7F-91DF-41DBC0D16583" xml:space="preserve">void CFoo::ModifyAttachmentInfoL(CMsvEntry&amp; aEntry)
+    {
+    // Get the store
+    CMsvStore* store = aEntry.EditStoreL();
+    CleanupStack::PushL(store);
+    
+    MMsvAttachmentManager&amp; attManager = store-&gt;AttachmentManagerL();
+    
+    // Get number of attachments
+    TInt numAttach = attManager.AttachmentCount();
+    if ( numAttach == 0 ) 
+       { // no attachments
+       CleanupStack::PopAndDestroy() ; // store
+       return;
+       }
+       
+    // Get attachment attributes for the first attachment (index 0)
+    CMsvAttachment* attachment = attManager.GetAttachmentInfoL(0);
+    CleanupStack::PushL( attachment ) ;
+    
+    // Rename the file
+    TRequestStatus status;
+    _LIT(KFileName, "hello.txt");
+    
+    attachment-&gt;SetAttachmentNameL(KFileName);
+    attachment-&gt;SetComplete(EFalse);
+    
+    // Modify attachment info
+    attManager.ModifyAttachmentInfoL(attachment, status);
+    
+    // Wait for request to complete
+    User::WaitForRequest(status);
+    attachment-&gt;SetComplete(ETrue);  
+    
+    store-&gt;CommitL();
+
+    CleanupStack::PopAndDestroy(2, store); // attachment, store
+    }</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-1963A487-D6A7-4225-8D0C-EC5FAB746854.dita"><linktext>Messaging
+Attachments Tutorial</linktext></link>
+<link href="GUID-54AB166A-8B24-5065-92AD-5FC1BF3ED89C.dita"><linktext>Messaging
+Framework Overview</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D91DC379-947A-52CB-A154-7922AF334527.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D91DC379-947A-52CB-A154-7922AF334527"><title>How to retrieve drive and volume information</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The class <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> provides a number of functions that extract drive and volume information. </p> <p>The <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-23B14094-0526-5BB2-8CCB-E25558F452F4">FileSystemSubType()</xref> function returns the sub type of a drive. This information can be used to warn a user if they try to use a volume that is not of the correct format. </p> <p>The volume information supplied by <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-35712294-BF6D-5ADF-A717-67B949F02EC3">VolumeIOParam()</xref> is particularly useful as it allows you to get specific properties for a volume. This includes the block size of the underlying media for read/write operations, allowing your application to access data on the underlying media in the most efficient way. For example: </p> <ul><li id="GUID-519C820E-DDF3-574C-9FF0-C16E805C38E4"><p>Applications that download from a local or network connection to transfer files, for example, bluetooth beaming, HTTP, FTP, may be able to improve their performance by knowing the recommended block and cluster sizes. </p> </li> <li id="GUID-555B3946-64CA-52BC-96AC-12034ACC0483"><p>For Multimedia source data, reading in optimal sized blocks may help to achieve a consistent read speed. </p> </li> </ul> <ul><li id="GUID-F9366D6D-E5CA-58EC-B28F-7219AB43F61A"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-83B63D4E-65E5-5DC6-8C4B-CD3A26165B6D">Drive information</xref>  </p> <ul><li id="GUID-3E51BA09-FB64-54C7-9FD6-F05E43FC9DB5"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-BF5C8B94-7600-555F-B9F7-DFAE390B4EE3">DriveList()</xref> </p> </li> <li id="GUID-58D7E17C-9D24-551C-AD21-BA234395C0E5"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-57F650DF-4144-586F-81E5-B1386202A27B">Drive()</xref>  </p> </li> <li id="GUID-241A56DC-B1B5-57A7-8A03-11CC9F11D523"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-23B14094-0526-5BB2-8CCB-E25558F452F4">FileSystemSubType()</xref> </p> </li> </ul> </li> <li id="GUID-16335B02-EF2C-51C8-AC1E-8F596085D896"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-43EFDCEC-A390-56F6-A4C0-A8150E188E05">Volume information</xref>  </p> <ul><li id="GUID-50F492F4-FBF5-50CA-A318-C7758C1999E1"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-8F14799F-6F60-5C64-AC8D-4083CE06E6A2">Volume()</xref>  </p> </li> <li id="GUID-746C70D5-F301-5F99-B8B6-31E1AB1D42EE"><p> <xref href="GUID-D91DC379-947A-52CB-A154-7922AF334527.dita#GUID-D91DC379-947A-52CB-A154-7922AF334527/GUID-35712294-BF6D-5ADF-A717-67B949F02EC3">VolumeIOParam()</xref> </p> </li> </ul> </li> </ul> <section id="GUID-83B63D4E-65E5-5DC6-8C4B-CD3A26165B6D"><title>Drive information</title> <p id="GUID-BF5C8B94-7600-555F-B9F7-DFAE390B4EE3"><b> DriveList()</b> </p> <p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-384A86BF-EB47-3525-9614-D474977AF991"><apiname>RFs::DriveList()</apiname></xref> retrieves an array of drives. The drive list consists of an array of 26 bytes. Array index zero corresponds to drive A, one equals B and so on. If the value of an array member is 1 the corresponding drive exists. If this drive is able to contain removable media then use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-51CDDF8D-3F18-398D-A477-B81948C10872"><apiname>RFs::Drive</apiname></xref> to test for its presence. </p> <p>The following code prints each drive in the drive list as a letter, followed by the hex value of the integer indicating the drive's attributes. </p> <codeblock id="GUID-78C60DB6-8AA1-598C-80F8-98163898ED7D" xml:space="preserve">TDriveList drivelist;
+TChar driveLetter; 
+TInt driveNumber; 
+_LIT(KDrive,"%c: %02x ");
+
+User::LeaveIfError(fsSession.DriveList(drivelist)); 
+for(driveNumber=EDriveA;driveNumber&lt;=EDriveZ;driveNumber++) 
+{ 
+    if (drivelist[driveNumber]) 
+    {
+        User::LeaveIfError(fsSession.DriveToChar(driveNumber,driveLetter));
+        console-&gt;Printf(KDrive, TUint(driveLetter), drivelist[driveNumber]); 
+    }
+}</codeblock> <p id="GUID-57F650DF-4144-586F-81E5-B1386202A27B"><b>Drive()</b> </p> <p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-BAB41D5B-A8B2-31D0-8A45-931112D1F5D3"><apiname>RFs::Drive()</apiname></xref> retrieves the attributes of the drive specified with <xref href="GUID-4D883FA4-115C-3425-8A34-B00D1D4BBCF9.dita"><apiname>TDriveInfo</apiname></xref>. The following example loops through all possible drives, a-z, and prints a message if a drive is flash-based. </p> <codeblock id="GUID-8711C4BC-225A-5824-A920-09696CD59E06" xml:space="preserve">TChar driveLetter; 
+TDriveInfo driveInfo; 
+TInt driveNumber;
+_LIT(KFlash,"Drive %c is flash\n"); 
+
+for (driveNumber=EDriveA; driveNumber&lt;=EDriveZ; driveNumber++) 
+{
+    fsSession.Drive(driveInfo, driveNumber); 
+    if (driveInfo.iDriveAtt == KDriveAbsent) 
+        continue; 
+    if (driveInfo.iType == EMediaFlash) 
+    {
+        User::LeaveIfError(fsSession.DriveToChar(driveNumber, driveLetter));
+        console-&gt;Printf(KFlash, driveLetter); 
+    }
+}</codeblock> <p id="GUID-23B14094-0526-5BB2-8CCB-E25558F452F4"><b>FileSystemSubType()</b> </p> <p>To retrieve the sub type of the volume use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-00404432-7095-3461-A669-9009A91BD45C"><apiname>RFs::FileSystemSubType()</apiname></xref>. Pass this function a drive number and a <xref href="GUID-F3E8BB64-554E-3A9A-A7FA-A5C935A644FD.dita"><apiname>TFSName</apiname></xref> for the sub type. For example, the sub type can be 'FAT16' of the Fat file system. </p> <p> <b>Note</b>: For file systems that do not have a sub type, for example a ROM file system, the name of the file system is returned, in this case 'ROM'. </p> <codeblock id="GUID-7BB4BAAD-95C3-57D2-8BDB-C4698FEB4748" xml:space="preserve">TChar driveLetter;
+TFSName name;
+TInt driveNumber;
+_LIT(KSubType,"Drive %c is Sub Type: %S\n"); 
+
+for (driveNumber=EDriveA; driveNumber&lt;=EDriveZ; driveNumber++) 
+{
+    TInt err = fsSession.FileSystemSubType(driveNumber, name); 
+    if (err != KErrNone)
+        continue; 
+    User::LeaveIfError(fsSession.DriveToChar(driveNumber, driveLetter));
+    console-&gt;Printf(KSubType, driveLetter, &amp;name);
+}</codeblock> </section> <section id="GUID-43EFDCEC-A390-56F6-A4C0-A8150E188E05"><title>Volume information</title> <p id="GUID-8F14799F-6F60-5C64-AC8D-4083CE06E6A2"><b>Volume()</b> </p> <p>Use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-52EFB8B0-E175-328F-AB1B-EACD03104A15"><apiname>RFs::Volume()</apiname></xref> to get the volume information, with a <xref href="GUID-F7AECD65-6C3C-3056-847A-FD49BB2E927F.dita"><apiname>TVolumeInfo</apiname></xref> object. The information returned includes a <xref href="GUID-4D883FA4-115C-3425-8A34-B00D1D4BBCF9.dita"><apiname>TDriveInfo</apiname></xref> object with the volume name, its unique ID, size and the amount of free space. </p> <p>The following example prints out the names of volumes: </p> <codeblock id="GUID-2C806466-0FC6-5AB3-A1C1-1655323DCEB3" xml:space="preserve">TChar driveLetter;
+TVolumeInfo volumeInfo; 
+TInt driveNumber;
+_LIT(KVolName,"Volume name: %S\n"); 
+
+for (driveNumber=EDriveA; driveNumber&lt;=EDriveZ; driveNumber++) 
+{
+    TInt err = fsSession.Volume(volumeInfo, driveNumber); 
+    if (err != KErrNone)
+        continue; 
+    User::LeaveIfError(fsSession.DriveToChar(driveNumber, driveLetter));
+    console-&gt;Printf(KVolName, &amp;volumeInfo.iName);
+}</codeblock> <p>Note: Use the return value from <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-52EFB8B0-E175-328F-AB1B-EACD03104A15"><apiname>RFs::Volume()</apiname></xref> to test whether a volume is present in the drive, a value of <xref href="GUID-51298FCE-7857-39F8-BFAB-49AF5556D0CC.dita"><apiname>KErrNotReady</apiname></xref> indicates that there is no volume present. </p> <p id="GUID-35712294-BF6D-5ADF-A717-67B949F02EC3"><b> VolumeIOParam()</b> </p> <p>Use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-DE5542A5-18ED-3F68-9012-DEE13619DCA2"><apiname>RFs::VolumeIOParam</apiname></xref> to retrieve volume information, with a <xref href="GUID-FA2892FC-4554-3E1D-93AD-593DFA4FB6F7.dita"><apiname>TVolumeIOParamInfo</apiname></xref> object. The object returns the recommended sizes for read and write operations on memory and buffers. </p> <codeblock id="GUID-8618DED6-7771-5495-B109-3B629BFC006C" xml:space="preserve">TChar driveLetter;
+TVolumeIOParamInfo volumeparamInfo; 
+TInt driveNumber;
+
+_LIT(KRecWriteSize,"Drive %c's recommended write size: %d\n"); 
+
+for (driveNumber=EDriveA; driveNumber&lt;=EDriveZ; driveNumber++) 
+{
+    TInt err = fsSession.VolumeIOParam(driveNumber, volumeparamInfo); 
+    if (err != KErrNone)
+        continue; 
+    
+    User::LeaveIfError(fsSession.DriveToChar(driveNumber, driveLetter));
+    console-&gt;Printf(KRecWriteSize, driveLetter, &amp;volumeparamInfo.iRecWriteBufSize);
+}</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D932955F-30AA-40C7-9653-63E48C38BECB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D932955F-30AA-40C7-9653-63E48C38BECB" xml:lang="en"><title>Setting
+stylus pop-up menu position</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To set the position of the stylus pop-up menu, use the method <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html#b05fc2a8ce62b333032232c291f795f2" format="application/java-archive"><codeph>SetPosition()</codeph></xref>in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknStylusPopUpMenu.html" format="application/java-archive"><codeph>CAknStylusPopUpMenu</codeph></xref>.</p>
+<p><draft-comment time="2008-05-15T14:49" translate="no">Add sample code here.</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C" xml:lang="en"><title>The
+ScreenPlay Graphics Architecture</title><shortdesc>This topic provides an introduction to ScreenPlay and its architecture.
+ScreenPlay is a new graphics architecture, introduced in Symbian^3 (S^3).
+ScreenPlay enables device creators to take advantage of improved software
+performance, hardware acceleration and third party graphics engines. ScreenPlay
+is sometimes known as the <b>New Graphics Architecture (NGA)</b>. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>ScreenPlay is a response to new requirements and developments in device
+hardware models. For example, ScreenPlay can support graphics accelerators
+and graphics processing units (GPUs) and non-uniform memory models as well
+as uniform memory models. A non-uniform memory model is an architecture in
+which a GPU has a completely different processing area from the CPU such that
+the GPU memory is not available to the CPU and vice versa. ScreenPlay can
+handle non-uniform memory models without the need to copy buffers between
+the different processing areas. </p>
+<section id="GUID-D4071308-2FA1-4B04-9AC2-926E1D619D08"><title>Key features</title><ul>
+<li id="GUID-0325A4C9-BAA3-5FA3-8389-BB406C020F36"><p>Asynchronous hardware-accelerated
+rendering and composition on devices on which dedicated graphics acceleration
+hardware is available. This is achieved through a Hardware Adaptation Layer
+(HAL). </p> </li>
+<li id="GUID-7CE7127E-873E-5284-A8DE-B2FF058E1107"><p>The ability to composit
+a semi-transparent UI buffer over highly dynamic content, such as OpenGL ES
+games, video and the camera viewfinder. </p> </li>
+<li id="GUID-3DAD6DFE-D2BE-5B7C-9253-38B7B30738D5"><p>The separation of control
+and data flow. This has advantages when running on non-uniform memory architectures
+and means that video decoding, UI rendering, and so on can take place and
+remain in the GPU memory domain. </p> </li>
+<li id="GUID-451CAB9D-DBB9-57FE-85C2-A8DE8C9D9436"><p>A foundation for secure
+screen content and Digital Rights Management (DRM). Applications no longer
+have direct access to the screen. Read and write access to the screen is controlled
+by the Window Server. </p> </li>
+<li id="GUID-060D7439-04FC-506A-B1B1-802C97F8931C"><p>Direct Screen Access
+(DSA) is supported in order to provide backwards compatibility. However, because
+in ScreenPlay the screen is no longer controlled by the Screen Driver, the
+DSA frame buffer is just another buffer that can be allocated dynamically
+on demand. ScreenPlay provides alternatives to DSA. </p> </li>
+</ul></section>
+<section id="GUID-D8BB0841-1E27-45A0-99AF-0F0A2D0A7362"><title>Architecture</title> <p>The
+following diagram shows the key components in the Symbian Foundation Graphics
+package and some closely related components in other packages. </p> <fig id="GUID-3300E986-4B93-5122-88C4-D7CC231F3BA3">
+<title>             Symbian^3 component architecture            </title>
+<image href="GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e162344_href.png" placement="inline"/>
+</fig> <p>The key ScreenPlay components are introduced below under separate
+subheadings. </p> </section>
+<section id="GUID-AB1E3E20-01A9-4090-A404-0D1FF978AF53"><title>Graphics Composition </title><p>The
+composition engine composes content, possibly from several different sources,
+before it is displayed on the screen. Composition involves the important concepts
+of scene elements (or layers) and surfaces. Scene elements describe the geometric
+position, size and orientation of items to be displayed on the screen; whereas
+surfaces are pixel buffers for holding an image or part of a scene. </p> <p>The
+composition engine maintains the stack of scene elements and computes what
+is visible. For example, it culls invisible areas and maintains a list of
+dirty rectangles. It blends the pixels if necessary and can perform limited
+transformations, such as scaling and rotation (in 90° increments). The composition
+engine is an <b>adaptation component</b>, which means that device creators
+can adapt or replace it to suit the exact hardware on the device. The composition
+engine can utilize GPU hardware composition and LCD hardware rotation if they
+are available. </p> <p>The composition components are specific to ScreenPlay.
+For more information, see <xref href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita">Graphics
+Composition</xref>. </p></section>
+<section id="GUID-04973DCA-9DCA-40E8-AC4D-5FB244F23293"><title>Surface Manager
+and Surface Update Server</title><p>The Surface Manager component creates
+and manages graphics composition surfaces. The Surface Manager reference implementation
+implements surfaces as shared chunks because they must be accessible by user-side
+processes and the kernel and composition hardware. Surfaces can be multi-buffered
+and are identified by a 128 bit identifier (called the surface ID). This gets
+resolved to an actual memory address by calling the Surface Manager Map Surface
+API. Surfaces can be used by other Symbian components such as the <xref href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita">Multimedia
+Framework (MMF)</xref> and <xref href="GUID-FC735256-6CB5-5EED-8E7D-42EFA039E6FD.dita">ECam
+viewfinder</xref> and by applications such as OpenGL ES games. The Surface
+Manager is an adaptation component and so can be adapted or replaced to suit
+the hardware. </p><p>The Surface Update component provides a communication
+mechanism between the composition engine and clients. This is particularly
+useful for clients (such as video) that produce fast updates and use multi-buffered
+surfaces. </p></section>
+<section id="GUID-92C609E2-EF56-460E-B4BD-B935AB8ECFFB"><title>Window Server</title><p>The
+Window Server has been extended with a render stage framework, which enables
+the last stage of the Window Server rendering to be customizable through render
+stage plug-ins. This process, known as "deferred rendering" is achieved by
+intercepting the output of the Window Server and then deciding how that output
+should be rendered. For example, the output can be hardware accelerated or
+it can be sent to a third party graphics engine. The render stage framework
+enables device creators to integrate different UIs and runtime environments
+(such as Flash or Silverlight) and to achieve transition effects such as slide,
+zoom and fade. </p><p>Symbian provides more than one render stage solution.
+The following diagram provides a simplified representation of one possible
+solution (called <i>solution A</i> in this topic). This solution is full featured.
+The diagram focuses on the more relevant components and does not attempt to
+show all components in the complete solution. This solution has a dependency
+on the S60 middleware layer, in particular on the Hitchcock component (which
+is in the UI Accelerator package). </p><fig id="GUID-0D91F9A6-68FC-5316-A16D-A3238F8452AD">
+<title>            Render stage solution A            </title>
+<image href="GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e162398_href.png" placement="inline"/>
+</fig><p>Another possible solution (called <i>solution B</i>) is based on
+the DirectGDI and Graphics Resource components (which are described next),
+both of which have interface and adaptation layers. This solution is not full
+featured. Like the previous diagram, this diagram focuses on the more relevant
+components and does not attempt to show everything. </p><fig id="GUID-6A761DC5-1141-5515-BD03-09FBFE56F2D7">
+<title>Render stage solution B</title>
+<image href="GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e162410_href.png" placement="inline"/>
+</fig><p>Both of these render stage solutions mean that existing Window Server
+applications can take advantage of hardware acceleration if it is available
+(and therefore run faster) without recompiling the code. </p><p>ScreenPlay
+provides extensions to the Window Server client-side API, which enable mobile
+devices to respond to events from a number of pointers, including their proximity
+and pressure. This feature is known as <xref href="GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita">advanced
+pointers</xref>. </p><p>A new API, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-B431DC60-D11F-3239-8F52-4257B9B0E0C9"><apiname>RWsSession::Finish()</apiname></xref>,
+has been added to allow Window Server client applications to synchronize with
+the completion of Window Server rendering. The existing API, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-B83C6F44-1A3E-3959-910C-CBBF66C4A3D4"><apiname>RWsSession::Flush()</apiname></xref>,
+is redefined to simply flush the client-side command buffer, whereas previously
+it also provided a guarantee that Window Server had completed the command
+buffer’s operations. This behavioral change allows legacy clients to benefit
+from the asynchronous hardware rendering when supported by the render stage
+plug-in(s) that are in use. </p><p>For more information, see <xref href="GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita">Windowing
+Collection</xref>. </p></section>
+<section id="GUID-D67558F6-7841-487F-8F73-7580C2EFC026"><title>DirectGDI</title><p>DirectGDI
+provides a graphics context that can be hardware accelerated and allows an
+asynchronous interface. DirectGDI has two parts: a generic layer, which provides
+a client API and an adaptation layer. Device creators can replace the adaptation
+layer with an implementation that takes advantage of graphics accelerated
+hardware, if it is available, or a software implementation, if it is not available. </p><p>DirectGDI
+was introduced as a prototype in the development of ScreenPlay. It is deprecated
+in Symbian^3.</p></section>
+<section id="GUID-DF3BDD08-1C11-4FC6-BA4C-30CC13BE6005"><title>Graphics Resource</title><p>The
+Graphics Resource component provides an abstraction layer for the memory management
+of pixel and non-pixel data (such as OpenVG command lists). Like DirectGDI,
+it has a generic part, which provides a client API and an adaptation part,
+which device creators can adapt to take advantage of graphics hardware when
+it is available. </p><p>The Graphics Resource component was introduced as
+a prototype in the development of ScreenPlay. It is deprecated in Symbian^3
+and will be removed in Symbian^4.  However, a new Graphics Resource Interface
+component is planned for S^4. This new component will provide a similar but
+reduced API that is optimized for sharing images across processes.</p></section>
+<section id="GUID-35870066-DB83-477E-8532-002E1F91E9CF"><title>OpenVG, OpenGL
+ES and EGL</title><p>Symbian provides support for OpenVG, OpenGL ES and EGL.
+The main advantage of ScreenPlay with regard to EGL is that EGL can render
+into composition surfaces. For application developers this offers the ability
+to have semi-transparent GDI content on top of EGL content. The EGL client
+can query whether these new features are supported on the particular device. </p> <p>For
+more information, see <xref href="GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita">Khronos
+API Support</xref>. </p></section>
+<section id="GUID-3B11D2F8-F3A4-4A2F-938A-B8EA0F64134A"><title>Screen Driver</title><p>In
+ScreenPlay, the implementation of the Screen Driver has been changed so that
+DSA content can be passed into the composition engine. </p></section>
+</conbody><related-links>
+<link href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita"><linktext>Graphics
+Composition</linktext></link>
+<link href="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita"><linktext>Graphics
+Hardware Acceleration</linktext></link>
+<link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics
+Concepts</linktext></link>
+
+
+
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697" xml:lang="en"><title>Array
+of same length elements, segmented buffer</title><shortdesc>Describes how elements of the same length are organised in the
+array buffer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This is a <codeph>CArrayFixSeg&lt;class T&gt;</codeph> object whose elements:</p>
+<ul>
+<li id="GUID-F196DE9B-A500-5421-A5EF-679ACB613297"><p>all have the same length</p> </li>
+<li id="GUID-999B1623-7FFF-5F48-91BD-202BE4E46669"><p>are contained within
+a segmented array buffer; the elements are logically contiguous but are physically
+contiguous only within a segment.</p> </li>
+</ul>
+<p>A segmented buffer is implemented as a doubly linked list of equally sized
+cells allocated from the heap and is always extended by allocating a new segment
+and inserting it into the appropriate place in the list. A segmented array
+buffer is implemented using a <codeph>CBufSeg</codeph> object.</p>
+<p>The following diagram illustrates how elements are organised within the
+array buffer:</p>
+<fig id="GUID-D3DF754C-E97D-5408-8229-8AD4E262981E">
+<image href="GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e190784_href.png" placement="inline"/>
+</fig>
+<p>This kind of array is suitable for large arrays with a high
+turnover of elements.</p>
+<p>This class is immediately derived from the abstract template base class <codeph>CArrayFix&lt;class T&gt;</codeph> which
+is itself derived from the abstract non-templated base class <codeph>CArrayFixBase</codeph>. </p>
+<section id="GUID-614C4B48-2523-4020-AFD7-5E9C5076537B"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D98E984D-69A5-5BA8-89E7-A7CC9FD0C584.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D98E984D-69A5-5BA8-89E7-A7CC9FD0C584" xml:lang="en"><title>Base Services Utility Library (BSUL)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Base Services Utility Library (BSUL) provides functionality for sanitizing and validating the incoming IPC messages, caching F32 drive information and encoding and decoding based on base64. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e7076_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D99D9DA3-AB82-5513-85C3-FFF254CB9B0B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D99D9DA3-AB82-5513-85C3-FFF254CB9B0B"><title>What are Serial Ports</title><shortdesc>The term <i>Serial Port</i> has different meanings at the different levels within the Serial Communications Server. These differences are caused by each level defining classes to represent a serial port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>At the client application level, the serial port is represented by the <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref> API. The <codeph>RComm</codeph> API is used to open a particular serial port. The <codeph>RComm</codeph> API is used to read, write, configure, set break conditions, and get port state information. Each serial port is named by a text string to describe the protocol for the port and a number. The format is: </p> <codeblock id="GUID-EEE22754-3CA9-57C5-A67D-0A690A3D2A25" xml:space="preserve">[text-string]::[0-255]</codeblock> <p>The protocol name and the range of possible numbers come from the CSY. The number zero (0) is used for the first port. For example, the port <codeph>COMM::0</codeph> is the first port of the CSY named <codeph>COMM</codeph>. The <codeph>COMM</codeph> CSY is used to provide the RS232 serial protocol. Another example is the port <codeph>ACM::0</codeph> which is the first port of the USB CSY. </p> <p> <i>NOTE</i>: The filename for the CSY may be different to the string used to open ports with the same CSY. To load a CSY the filename must be provided. For example, to load the RS232 CSY, the filename <filepath>ecuart.csy</filepath> must be provided, while to open RS232 ports the name <codeph>COMM</codeph> must be used. </p> <p>At the Serial Communications Server level, a serial port is represented by two classes in the CSY. These two classes are <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita"><apiname>CSerial</apiname></xref> and <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita"><apiname>CPort</apiname></xref>. These classes are not available to client applications. To create a port, the server gives the <codeph>CSerial</codeph> class a number for the port number, which results in a <codeph>CPort</codeph> class being created for that number. The instance of the <codeph>CPort</codeph> class then represents the port. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827-master.png has changed
Binary file Symbian3/SDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e242567_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7" xml:lang="en"><title>Package-Header</title><abstract><p>The Package-Header includes package names for each of the supported
+languages, a unique identifier of the package, major version, minor version,
+build number of the package and package options. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn id="GUID-4B9A1617-AAAA-4F8F-BB42-EA31098D6F60"><title>Syntax</title> <codeblock id="GUID-927D44CD-DB14-53E0-8734-873811937B97" xml:space="preserve">#{"Package name for language 1", ...}, (package-uid), major, minor, build-number[, package-options, ...]</codeblock> <p>For example: </p> <codeblock id="GUID-149C7501-7316-54F6-BEC2-B0A741755972" xml:space="preserve">#{"MyApp-EN", "MyApp-FR", "MyApp-Zulu"}, (0x1000001F), 1, 2, 3, TYPE=SA
+ </codeblock> <ul>
+<li id="GUID-903FAC8D-2C01-504F-B52C-7CAE67DFBA11"><p> <b>Package Name</b>:
+Identifies the package in the installation dialogs and in the list of installed
+packages. The package name is language-dependent. The number of package names
+must equal the number of languages specified in the languages line and must
+be in the same order. </p> </li>
+<li id="GUID-A9A4ECAA-590F-57ED-99AF-CA99E2A9BE53"><p> <b>Package UID</b>:
+Identifies the package when installing, upgrading and removing the package.
+All package files require a UID. </p> <p>The UID, known as the package UID
+or pUID specified in the package header of an application (SISAPP) uniquely
+identifies the package. The installation fails if another installed package
+has the same pUID, unless the second package is a patch or an upgrade. The
+package creator is responsible for ensuring that the pUID is correctly allocated
+to ensure uniqueness. It can have the same value as the SID of an executable
+installed by the package. </p> <p>Package UIDs and SIDs are allocated through <xref href="https://www.symbiansigned.com" scope="external">https://www.symbiansigned.com</xref>. </p> <p>If
+the pUID is in the protected range, (less than 0x80000000), or if the package
+is installing an EXE whose SID is in the protected range, the package must
+be trusted. </p> </li>
+<li id="GUID-F012A4EF-7BCA-5D3F-8E59-AEECFE4CF171"><p> <b>Major, Minor versions</b>:
+Specifies the major and minor version numbers of the package and are required
+for version control. For example, <codeph>AppName 3.1</codeph> specifies major
+build 3, and minor build 1. </p> </li>
+<li id="GUID-8762C9E4-CF64-538F-82C3-A8E7B10C6AEC"><p> <b>Build Number</b>:
+Specifies the build number of the application. </p> </li>
+<li id="GUID-A16794C7-9FA9-5772-86D6-AC9A6120B1CD"><p> <b>Package-Options</b>:
+Specifies the various options that can be provided within package header.
+See the <xref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita#GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7/GUID-3F2B03BC-69F1-5498-8684-F6855D7E0F85">Package-Options</xref> section
+for details. </p> </li>
+</ul> <p id="GUID-3F2B03BC-69F1-5498-8684-F6855D7E0F85"><b>Package-Options</b> </p> <p>The
+following table lists the <codeph>Package-Options</codeph> that can be used: </p> <table id="GUID-5A361C0B-BF5C-50A3-AAA6-829F83D7134E">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Abbreviation</entry>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry/>
+<entry><p> <codeph>TYPE=Package-Type</codeph>  </p> </entry>
+<entry><p>Specifies the <xref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita#GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7/GUID-3C2E7248-23BD-5A9C-BC4F-2F86B1A94002">Package-Type</xref> that
+identifies the purpose of the package. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SH</codeph>  </p> </entry>
+<entry><p> <codeph>SHUTDOWNAPPS</codeph>  </p> </entry>
+<entry><p>Shuts down all applications on the device. </p> <p>Software installer
+terminates running applications on the device as needed during the installation
+process, so this flag is deprecated. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>NC</codeph>  </p> </entry>
+<entry><p> <codeph>NOCOMPRESS</codeph>  </p> </entry>
+<entry><p>Files are not compressed within the SIS file. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p id="GUID-3C2E7248-23BD-5A9C-BC4F-2F86B1A94002"><b>Package-Type</b> </p> <p>The
+following table lists the <codeph>Package-Type</codeph> that can be used within <codeph>Package-Options</codeph>: </p> <table id="GUID-B63C3151-7392-5136-9D87-E12C1BE6F991">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Abbreviation</entry>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>SA</codeph>  </p> </entry>
+<entry><p> <codeph>SISAPP</codeph>  </p> </entry>
+<entry><p>Specifies the package that contains an application. This is the
+default type. For details on upgrading applications, see <xref href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita">Upgrade
+Types</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>SP</codeph>  </p> </entry>
+<entry><p> <codeph>SISPATCH</codeph>  </p> </entry>
+<entry><p>Specifies a package that patches an existing component. It can be
+uninstalled separately from the package it patches. For more details, see <xref href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita">Upgrade Types</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PU</codeph>  </p> </entry>
+<entry><p> <codeph>PARTIALUPGRADE</codeph>  </p> </entry>
+<entry><p>Specifies a package that partially upgrades an existing component.
+This is a variation of <codeph>SA</codeph> in that files which are present
+in the original package but not specified in the <codeph>PU</codeph> package
+are not removed. For more details, see <xref href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita">Upgrade
+Types</xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PA</codeph>  </p> </entry>
+<entry><p> <codeph>PIAPP</codeph>  </p> </entry>
+<entry><p>Specify this type to create applications that are preinstalled
+on media cards. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>PP</codeph>  </p> </entry>
+<entry><p> <codeph>PIPATCH</codeph>  </p> </entry>
+<entry><p>Specify this type to create patches that are preinstalled on media
+cards.</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following table explains the <codeph>RU</codeph> flag: </p> <table id="GUID-82539F7C-94B5-5D0D-A6CF-61253B5DCF8B">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Abbreviation</entry>
+<entry>Name</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>RU</codeph>  </p> </entry>
+<entry><p> <codeph>ROMUPGRADE</codeph>  </p> </entry>
+<entry><p>This flag is required with the <codeph>SA</codeph> package type
+to carry out a full upgrade of an application in ROM. For details on using
+the RU flag for an upgrade of type SA, see <xref href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita">Upgrade
+Types</xref>. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p><b>Notes</b>:</p><ul>
+<li><p> All numbers can be hexadecimal. </p></li>
+<li><p>These options are mutually exclusive.</p></li>
+</ul> </refsyn>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D9D2A600-89C6-5D82-8BC0-2C60D8F6517A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D9D2A600-89C6-5D82-8BC0-2C60D8F6517A"><title>Video HAI Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Video HAI (Hardware Adaptation Interface) component. </p> <section><title>Purpose</title> <p>The Video HAI component provides a hardware abstraction layer for video playing and recording. </p> </section> <section><title>Required Background</title> <p>The <xref href="GUID-CC96F41D-5AC9-5D11-BD4D-073548EA5CC8.dita">Hardware Adaptation Interfaces Overview</xref> provides an introduction to the Video HAI and related components. </p> </section> <section><title>Architectural Relationships</title> <p>The Video HAI component interacts with the following components: </p> <ul><li id="GUID-88735269-7558-5B51-B203-40C4C874CA60"><p>Multimedia Framework </p> <p>The MMF loads the appropriate video controller plug-ins, and then those video controller plug-ins use the framework to access the HAI. </p> </li> <li id="GUID-E0CC3C83-3716-5769-BF89-C47B921F45EF"><p>Media Device Framework </p> <p>The MDF provides the codec interface for video codecs. </p> </li> </ul> </section> <section><title>API Summary</title> <p>The Video HAI component includes the following APIs: </p> <table id="GUID-0B3DBE66-F733-5B41-8B5A-6AC014B3701B"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <b> DevVideo</b>  </p> </entry> <entry><p>Library providing video decoding and encoding hardware acceleration. </p> <p>For more information, see <xref href="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita">DevVideo Overview</xref>. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical Uses</title> <p>The Video HAI component is used to: </p> <ul><li id="GUID-426D10B6-CD99-52EE-B21D-BFD388E41642"><p>Configure video decoding and post-processing. </p> </li> <li id="GUID-8D18429D-4AF4-5F8E-A68B-A6A07806D6F5"><p>Control video playback. </p> </li> <li id="GUID-FA31164C-758A-5340-BC00-558396805C48"><p>Configure video encoding and pre-processing. </p> </li> <li id="GUID-3ADB9D2F-CBD7-5585-B81E-85ED9DFEF189"><p>Control video recording. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref>  </p> <p><xref href="GUID-55CC7AD4-4C6A-5804-ABFD-F71505C77169.dita">Media Device Framework Overview</xref>  </p> <p><xref href="GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita">DevSound Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D9EA2B10-B789-5CC1-9BD0-23B4FA7E0821.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D9EA2B10-B789-5CC1-9BD0-23B4FA7E0821" xml:lang="en"><title>Properties</title><shortdesc>This topic explains the properties of publish and subscribe.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A property has the two attributes: identity and type.</p>
+<section id="GUID-A5CBB14F-D37F-41C5-8D00-37C3D07708F6"><title>Identity</title> <p>A property is identified by a 64-bit integer
+made up of two 32-bit parts: the category and the key.</p> <p>A property belongs
+to a category, and a category is identified by a UID.</p> <p>A key is a 32-bit
+value that identifies a specific property within a category. The meaning applied
+to the key depends on the kind of enumeration scheme set up for the category.
+At its simplest, a key can be an index value. It can also be another UID,
+if the category is designed to be generally extensible.</p> </section>
+<section id="GUID-0351DF1A-8DEE-49D6-AD7D-6575E9DF5B56"><title>Type</title> <p>A property can be:</p> <ul>
+<li id="GUID-7C7CE552-0608-502F-8A2D-87071C4157AE"><p>a single 32-bit value</p> </li>
+<li id="GUID-E96FE3B3-C66F-5CE9-9C0F-A04BBB20C7BE"><p>a contiguous set of
+bytes, referred to as a byte-array, whose length can vary from 0 to 512 bytes</p> </li>
+<li id="GUID-4F8B6257-4410-5F40-A211-B14239CEC64F"><p>Unicode text.</p> </li>
+</ul> <p>From the viewpoint of the implementation, Unicode text is treated
+as a byte-array; the detail is hidden by the API.</p> <p>Once defined, a property
+value can change, but the property type cannot. Byte-array type properties
+can also change length provided the length does not exceed the value <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-57E64054-610A-31D1-AD7F-E2F9F9FC1DCB"><apiname>RProperty::KMaxPropertySize</apiname></xref>.
+The   limit on size of property ensures some limit on RAM usage.</p><p>  
+    limit on size of property ensures some limit on RAM usage.</p><p>The API
+allows byte-array and Unicode text type properties to be  pre-allocated when
+they are defined. This means that the time taken to set the   values is bounded.
+However, if the length of these property types subsequently increases, then
+memory allocation may take place, and no guarantees can be made  on the time
+taken to set them.</p><p>Note that the<xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-F8DE443B-B208-353C-A98E-AA52C4FE6530"><apiname>RProperty::ELargeByteArray</apiname></xref> property
+type can never provide a real-time guarantee.</p><p>Properties and their values
+are defined, set and retrieved using  <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> .  </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D9EE6C26-B0F0-58B9-BC17-4E18136187F8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-D9EE6C26-B0F0-58B9-BC17-4E18136187F8"><title>Cancelling and closing transactions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Transactions that have been submitted can be cancelled at any time using <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-48A73A16-E6EB-39F4-88A5-0D84BD164FF2"><apiname>RHTTPTransaction::Cancel()</apiname></xref>. When this is done, no further events are received for that transaction as originally submitted. </p> <p>An example from <filepath>HTTPEXAMPLECLIENT</filepath>: </p> <codeblock id="GUID-E403CB8C-D262-5AC6-8BD3-FFE0A67EC274" xml:space="preserve">void CHttpEventHandler::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent&amp; aEvent)
+    {
+    switch (aEvent.iStatus)
+        {
+        case THTTPEvent::EGotResponseHeaders:
+            {
+            ...
+            // If we're cancelling, do it now...
+            if (cancelling)
+                {
+                iUtils.Test().Printf(_L("\nTransaction Cancelled\n"));
+                aTransaction.Close();
+                CActiveScheduler::Stop();
+                }
+...</codeblock> <p>In this case, the transaction is left in a cancelled state. The client now has the option to modify the request if required, and to resubmit the transaction. This might be done, for example, if the HTTP server has indicated with a 400-series status code that there was a client error. </p> <p>When a transaction is resubmitted after cancellation, it is exactly as if it had been submitted for the first time. For example, no preferential treatment is given to it in terms of time-to-service. </p> <p>The process of cancelling in an <codeph>MHFRunL()</codeph> method, modifying the request, and resubmitting is common in filter design. See <xref href="GUID-AA2A730E-A7C9-5647-AD42-11C3BAF4C38D.dita">Filters</xref> for more information. </p> <p>If the client wants to abort a transaction, it can close the transaction using <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita#GUID-2E673024-239B-3965-8880-C47B7CC24EF6/GUID-0ABF9404-EA7F-3CB3-B08B-D9154EF6F2D8"><apiname>RHTTPTransaction::Close()</apiname></xref>. It is not necessary to cancel first, since a <codeph>Cancel()</codeph> is done automatically during the <codeph>Close()</codeph>. Closing the transaction enables HTTP to clean up resources allocated during the execution of that transaction. </p> <p>Once a transaction is closed, it must <i>not</i> be reused. Reusing a closed transaction causes the client to behave unpredictably. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D9F25AAD-18A1-43AC-B59B-82396DAA68F9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D9F25AAD-18A1-43AC-B59B-82396DAA68F9" xml:lang="en"><title>Touch-based
+multiple selection</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-7C6662B8-828D-4923-A0A2-7565F42401D6"><title>Multiselection
+list</title><p>Items in a multiselection list can be selected with the stylus
+as well as with keypad. A tap on an item in the list moves the focus onto
+that item and toggles the item between the marked and unmarked states.</p><p>If
+nothing is marked when the left softkey is pressed, either the focused item
+is considered as selected, or nothing is selected. The aim is that if the
+user only wants to select a single item, this can be done by simply moving
+the focus to that item and pressing the left softkey (<b>Done</b>).</p></section>
+<section id="GUID-DF602D3D-3BA3-462B-A3BF-306077604424"><title>Markable list</title><p>There
+are a number of tap/stylus drag + hardware key configurations for marking
+items in a markable list. These configurations depend on whether the device
+in question uses an ITU-T keypad with/without the Edit key, a full QWERTY
+keyboard, or no keypad at all. In the latter case, when there is only stylus
+in use, marking is done via the <b>Options</b> menu by selecting <b>Mark/Unmark</b> or <b>Mark/Unmark
+all</b>. </p><p>A markable grid works in the same way as a markable list.</p></section>
+<section id="GUID-DE1E3982-3C34-412F-99A4-BD3E3EA13005"><title>Cut-Copy-Paste</title><p>The Cut, Copy and Paste functions
+are available in touch-enabled devices as normal. But along with the hardware
+keys, text selection can be done by dragging the stylus over a given text
+and selecting function from the Options menu or possible stylus pop-up menu.
+The dragging selection functions in editors but not in viewers.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-D9F8B338-5CFA-472F-8A16-B5251B1B5A81.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-D9F8B338-5CFA-472F-8A16-B5251B1B5A81" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Toolbar API is an SDK API and first released in S60 5th Edition.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e66123_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA09248E-E299-596E-9860-B709F7C6529A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-DA09248E-E299-596E-9860-B709F7C6529A" xml:lang="en"><title>PKG
+Properties</title><abstract><p>PKG properties are key-value pairs whose meaning is specific
+to a PKG file. A properties statement is used to set the properties of the
+PKG file. </p></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<refsyn><title>Syntax</title><codeblock id="GUID-C8BA824D-4018-5370-8633-FD81964A681B" xml:space="preserve">+(propid=value,...)</codeblock> <p> <codeph>propid</codeph> is the unique identifier of a property. Each <codeph>propid</codeph> value
+is unique to the PKG file. </p> <p>For Example: </p> <codeblock id="GUID-2C987288-FEC9-52D3-B6D4-F7C9876AAF2E" xml:space="preserve">+(0=2, 1=3, 2=4)</codeblock> <p>The
+associated value is an integer that can be queried by another PKG file using
+the <codeph>AppProp()</codeph> function in an <codeph>IF...ENDIF</codeph> block.
+For more information on <codeph>AppProp()</codeph>, see <xref href="GUID-C5F9AAD3-5183-57E5-A33B-032DE3C063AE.dita">Functions</xref>. </p></refsyn>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA0F4990-DDC4-5B0A-A446-A3C8672DA95A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DA0F4990-DDC4-5B0A-A446-A3C8672DA95A"><title>Removable Media Support</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Overview</title> <p>External drives can already be used to store the calendar database file. This means that all clients may access, modify and create calendar files on removable media in the same way as on non-removable media. </p> <p>A calendar file can be opened on any writable drive. Note that if the file is opened on a removable drive and that drive is removed, the operation leaves with an error. </p> <p>This error can also happen when trying to access file attachments on removed media. </p> <p>When this error occurs, the user should close the <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession</apiname></xref> and re-open it once the media has been replaced. The Calendar indexes must then be restored ('rolled back') to their previous state. </p> <p>It is recommended that when using a calendar file on removable media, the user should watch for when the media is removed or replaced using the <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>RFs::NotifyChange()</apiname></xref> API. </p> </section> <section><title>Use cases</title> <p>If media is removed during an operation a KErrNotReady again occurs, and in the following cases a rollback is effected: </p> <table id="GUID-F392B402-1E46-5044-8F70-03C0F822C43B"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Function</entry> <entry>What has happened if it leaves with KErrNotReady</entry> <entry>Does a rollback occur?</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname> CCalSession::CreateCalFileL(const TDesC&amp;
+                  aFileName)</apiname></xref>  </p> </entry> <entry><p>File not created </p> </entry> <entry><p>N/A </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname> CCalSession::OpenL(const TDesC&amp;
+                  aFileName)</apiname></xref>  </p> </entry> <entry><p>File not created </p> </entry> <entry><p>N/A </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalSession::DeleteCalFileL(const TDesC&amp;
+                  aFileName)</apiname></xref>  </p> </entry> <entry><p>File not created </p> </entry> <entry><p>N/A </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalEntryView::StoreL(const RPointerArray
+                  &lt;CCalEntry&gt;&amp; aCalEntryList, TInt&amp; aNumSuccessfulEntry)</apiname></xref> </p> </entry> <entry><p>aNumSuccessfulEntry entries were successfully added before the leave. </p> </entry> <entry><p>Last store rolled back in RAM after disk write fails. </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalEntryView::UpdateL(const RPointerArray
+                  &lt;CCalEntry&gt;&amp; aCalEntryList, TInt&amp; aNumSuccessfulEntry)</apiname></xref> </p> </entry> <entry><p>aNumSuccessfulEntry entries were successfully added before the leave. </p> </entry> <entry><p>Last store rolled back in RAM after disk write fails. </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname> CCalEntryView::DeleteL(const CDesC8Array&amp;
+                  aUidList)</apiname></xref>  </p> </entry> <entry><p>Some of the UIDs were not deleted (how many is unknown). </p> </entry> <entry><p>Last UID delete rolled back in RAM. </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname> CCalEntryView::DeleteL(const CCalEntry&amp;
+                  aCalEntry)</apiname></xref>  </p> </entry> <entry><p>Nothing deleted </p> </entry> <entry><p>Deleted entries in RAM are rolled back. </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalInstanceView::DeleteL(CCalInstance* aInstance,
+                  CalCommon::TRecurrenceRange aWhichInstances)</apiname></xref>  </p> </entry> <entry><p>Nothing deleted </p> </entry> <entry><p>Deleted entries in RAM are rolled back. </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalCategoryManager::AddCategoryL(const
+                  CCalCategory&amp; aCategory)</apiname></xref>  </p> </entry> <entry><p>Category not added to file </p> </entry> <entry><p>No rollback in RAM. </p> </entry> </row> <row><entry><p> <xref href="GUID-609318A7-43F1-3FC1-952B-146B1EA8115D.dita"><apiname>CCalCategoryManager::DeleteCategoryL(const
+                  CCalCategory&amp; aCategory, MCalProgressCallBack&amp;
+                  aProgressCallBack)</apiname></xref>  </p> </entry> <entry><p>Category not added to file </p> </entry> <entry><p>No rollback in RAM. </p> </entry> </row> </tbody> </tgroup> </table> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA1D89FF-52BD-5876-B7A1-300F5EBB9884.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-DA1D89FF-52BD-5876-B7A1-300F5EBB9884"><title>Converting Manual Aperture to Automatic Aperture</title><shortdesc>This topic explains how to prepare the camera for the automatic aperture setting. By default, the automatic aperture setting is used if no manual aperture value has been given. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-8FE6CE45-D57D-5E9C-A7AE-F11A228AB300"><p>Before you start you should understand the <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard Camera Overview</xref> topic. </p> </prereq> <context><p>The automatic aperture setting is implementation specific as to whether the default aperture is auto-aperture or any other value. If the camera cannot determine the aperture value being used, the <codeph>KErrNotFound</codeph> error is returned. </p> </context> <steps id="GUID-29060A3C-94A7-5260-924C-C40101B94C8F"><step id="GUID-4CDAE835-DC3A-50E8-86F6-C314EBBDAFDE"><cmd/><info>Pass <codeph>KUidECamEvent2CameraSettingAutoAperture</codeph> as a value to <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>TECAMEvent2</apiname></xref> to notify the camera that the auto aperture setting is to be used. <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>TECAMEvent2::iParam()</apiname></xref> represents the actual numerical value of aperture being used for the the auto aperture setting. </info> </step> <step id="GUID-D5F27CFB-B712-572B-A245-409FAA22541A"><cmd/><info>Use the <codeph>KUidECamEvent2CameraSettingAutoAperture</codeph> value when you do not specify an aperture value in the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraAdvancedSettings::SetAperture(TInt)</apiname></xref> function or when you select exposure to the <codeph>EExposureAuto</codeph> or <codeph>EExposureShutterPriority</codeph> value. </info> <info>Note: By default <codeph>CCamera</codeph> has an automatic aperture setting . </info> </step> </steps> </taskbody><related-links><link href="GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita"><linktext>Advanced Settings for Focus, Drive Modes, and
+                Bracket Modes</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA204619-9F02-5854-80BE-0AC6BB80D730.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DA204619-9F02-5854-80BE-0AC6BB80D730" xml:lang="en"><title>Emulator
+Setup</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Zsh can be launched from an emulator using the Ethernet protocol. Before
+launching Zsh using an emulator as the Telnet server, the emulator must be
+configured. </p>
+<p>To configure the emulator, perform the following the steps: </p>
+<ol id="GUID-1EC9BA99-BC03-54A4-BAAC-ABF0288E1E35">
+<li id="GUID-7F1FB879-44B9-5F26-B14F-ECA35AE2572D"><p>Install <b>4.0-WinPcap.exe</b> from <xref href="http://www.winpcap.org/archive/" scope="external">www.winpcap.org</xref>,
+which is freeware. For more information about WinPcap, refer to <xref href="GUID-CDD1E761-6B28-5F69-BBEF-756DF45E59A2.dita">Installing
+WinPcap 4.0</xref>. </p> </li>
+<li id="GUID-51C4D952-23D4-51FD-BAA8-60B95A47EA1D"><p>If your PC is in a network
+where IP allocations are dynamic, use the Dynamic IP option; otherwise use
+the Static IP option. </p> <ul>
+<li id="GUID-4D87A125-49C2-5959-9400-CD3EC7855E23"><p> <b>Dynamic IP</b>:
+The <filepath>\epoc32\winscw\c\ethernetced.xml</filepath> file has CommDB
+settings for dynamic IP by default. So no action is required. </p> </li>
+<li id="GUID-D85DB7C6-4FC2-5454-BD92-EDC47FD889B1"><p> <b>Static IP</b>: Edit <filepath>\epoc32\winscw\c\ethernetced.xml</filepath> as
+follows: </p> <ul>
+<li id="GUID-C0D4149B-303D-5754-B489-A4C060C8A33B"><p>Select the <codeph>ConnectionPreferencesTable</codeph> entry
+with the highest value in <codeph>Ranking</codeph>. Modify the <codeph>IAPRef</codeph> value
+to <codeph>IAP.Ethernet with Daemon Static IP</codeph>. </p> <codeblock id="GUID-177CC8AF-8266-5B82-8809-E7CCEA3CB08A" xml:space="preserve">&lt;ConnectionPreferences operation="add"&gt;
+    &lt;Name&gt;ConnectionPreferencesTable2&lt;/Name&gt;
+    &lt;Ranking&gt;1&lt;/Ranking&gt;
+    &lt;Direction&gt;OUTGOING&lt;/Direction&gt;
+    &lt;DialogPref&gt;DONOTPROMPT&lt;/DialogPref&gt;
+    &lt;BearerSet&gt;LAN&lt;/BearerSet&gt;
+    &lt;IAPRef&gt;IAP.Ethernet with Daemon Static IP&lt;/IAPRef&gt;
+&lt;/ConnectionPreferences&gt;</codeblock> </li>
+<li id="GUID-F11883CA-7E5A-51AF-878E-B835AD4070E6"><p>Select the <codeph>LANServiceTable</codeph> entry
+with <codeph>Name: Ethernet Static IP</codeph>. </p> </li>
+<li id="GUID-2B7DBA68-9782-5125-B5C0-DF997AC60B11"><p>Modify the <codeph>IpNetMask</codeph>, <codeph>IpGateway</codeph>, <codeph>IpNameServer1</codeph>, and <codeph>IpNameServer2</codeph> values to those set on your PC. You
+can get these by typing the following command at a command prompt where your
+telnet client is running: </p> <p><userinput>ipconfig /all</userinput> </p> </li>
+<li id="GUID-FC9439C9-833D-515A-BE2A-F35531AAD2BD"><p>Modify the <codeph>IPAddr</codeph> to
+one from the unused pool (given by the network administrator) on your network. </p> <codeblock id="GUID-0CC03BB6-2083-5484-B76F-706FDDBABCCD" xml:space="preserve">&lt;LANService operation="add"&gt;
+    &lt;Name&gt;Ethernet Static IP&lt;/Name&gt;
+    &lt;IfNetworks&gt;ip&lt;/IfNetworks&gt;
+    &lt;IpNetMask&gt;255.255.252.0&lt;/IpNetMask&gt;
+    &lt;IpGateway&gt;10.192.199.254&lt;/IpGateway&gt;
+    &lt;IpAddr&gt;10.192.197.1&lt;/IpAddr&gt;
+    &lt;IpAddrFromServer&gt;FALSE&lt;/IpAddrFromServer&gt;
+    &lt;IpDNSAddrFromServer&gt;TRUE&lt;/IpDNSAddrFromServer&gt;
+    &lt;IpNameServer1&gt;10.192.59.6&lt;/IpNameServer1&gt;
+    &lt;IpNameServer2&gt;10.192.58.49&lt;/IpNameServer2&gt;
+    &lt;ConfigDaemonManagerName&gt;NetCfgExtnDhcp&lt;/ConfigDaemonManagerName&gt;
+    &lt;ConfigDaemonName&gt;!DhcpServ&lt;/ConfigDaemonName&gt;
+&lt;/LANService&gt;</codeblock> <p>For more information on static IP and setting,
+refer to <xref href="GUID-3C6935E1-66C9-5115-901E-D3B1D0C2E783.dita">Quick ethernet
+configuration</xref>. </p> </li>
+</ul> </li>
+</ul> </li>
+<li id="GUID-EC11E065-002A-5E0C-81E1-733CFF5AE82A"><p>Run the following command
+to generate the ethernet configuration files: </p> <p><userinput>configchange.pl
+--config ethernetWithCommDb --kernel EKA2 --target winscw --variant udeb</userinput> </p>. <p>For
+more information about <filepath>configchange.pl</filepath>, refer to <xref href="GUID-7B114A67-356A-5FCE-B57B-761F5477A2B2.dita">Using the Configchange.pl
+script</xref>. </p> <p>For information on CommDb, refer to <xref href="GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita">Communications
+Framework</xref>. </p> </li>
+</ol>
+</conbody><related-links>
+<link href="GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita"><linktext>Launching
+Zsh</linktext></link>
+<link href="GUID-DC6AF355-3079-531F-98F7-A70AC13A2863.dita"><linktext>Device Setup</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DA26D246-D74A-529F-9F81-11B45669103F"><title> Capturing Image</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces to the image capture feature of the Ecam component. </p> <section><title>Purpose</title> <p>This document takes you through a series of documents that provides a detailed explanation on various tasks that can be performed using still image. </p> <p><b>Setup and Configuration Requirement </b> </p> <p>Make sure that you use continuous drive mode before capturing the images. </p> <p>Get the options supported for a specific reference orientation of the camera using <xref href="GUID-BD60287B-40A3-39D5-9C7B-7ABF976659B6.dita#GUID-BD60287B-40A3-39D5-9C7B-7ABF976659B6/GUID-E2B97E11-81E6-3041-BDDC-466AECBBEAC4"><apiname>CCamera::CCameraImageProcessing::GetSupportedRelativeOrientationOptionsL</apiname></xref> method. </p> <p>Get the options that is currently used for the orientation reference using <xref href="GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765.dita#GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765/GUID-48FFD990-AEA8-3066-A291-7075CD3C3200"><apiname>CCameraImageProcessing::GetCurrentRelativeOrientationOptionsL</apiname></xref> method. </p> <p>Set the specific option to be used with the orientation reference using <xref href="GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765.dita#GUID-2D94F0AD-10D4-3C3E-B445-3728718C8765/GUID-B15C96F0-5C59-3FC6-BD80-CF0B96F0C024"><apiname>CCameraImageProcessing::SetRelativeOrientationOptionsL</apiname></xref> method. Notify the client about relative custom orientation setting operation using event <xref href="GUID-21F6B1EB-0AA6-3F27-A0AF-D09BAA938552.dita"><apiname>KUidECamEventImageProcessingTransformRelativeOrientation</apiname></xref>. </p> <p id="GUID-E85442CF-34BD-5140-96DF-88F414BAE3C9"><b>Basic camera image settings</b> </p> <p> <codeph>CCamera</codeph> provides functions that allow you to alter the brightness, contrast, and zoom level of the camera image. Before using such functions though, you should test that the camera supports what you want. To do this, get a <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita"><apiname>TCameraInfo</apiname></xref> object using the <xref href="GUID-74003657-1C43-382C-B722-6A6A4C03A911.dita"><apiname>CameraInfo()</apiname></xref> method. The object's <codeph>iOptionsSupported</codeph> member is a bitfield of flags that describe which options are supported by the camera. </p> <p id="GUID-96B5AB3A-B83D-5F6A-9A51-2A3BBF18FED3"><b>Brightness</b> </p> <p>To change the camera image brightness: </p> <ol id="GUID-3E4387F5-9B44-5E80-AE67-4F8BC8E24EC6"><li id="GUID-76DAC348-E4A3-59A2-9BFD-DD9D1C5F4B7D"><p>Check if brightness control is supported, by testing if the <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita#GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A/GUID-6837A8FB-63FF-345E-808A-67537E8E1190"><apiname>TCameraInfo::EBrightnessSupported</apiname></xref> flag is set in the options. </p> </li> <li id="GUID-572AB80E-47F4-5608-8241-3C1E7065C309"><p>Set the brightness using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-22722C7A-229A-3BD5-8639-D4A6450B26E1"><apiname>CCamera::SetBrightnessL()</apiname></xref>. </p> <p>The brightness should be in the range -100 to +100, or to set the brightness automatically, use the flag <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-DABFFB10-D6D7-384A-8527-D82DE96AD8C4"><apiname>CCamera::EBrightnessAuto</apiname></xref>. </p> </li> </ol> <p id="GUID-F3A35365-B654-552D-8F27-42C6368BB0D7"><b>Contrast</b> </p> <p>To change the camera image contrast: </p> <ol id="GUID-6F000E09-34AF-5484-960C-709E24420EBC"><li id="GUID-BA85FA15-A58D-5B35-859C-63CD1357452A"><p>Check if contrast control is supported, by testing if the <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita#GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A/GUID-892E8762-9C54-3A61-921B-894283F5AE69"><apiname>TCameraInfo::EContrastSupported</apiname></xref> flag is set in the options. </p> </li> <li id="GUID-9ED91DD5-6DCB-58CE-A30D-F9D8252CEEA3"><p>Set the contrast using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-8F8DE11C-4350-3010-8B28-A635C82E4214"><apiname>CCamera::SetContrastL()</apiname></xref>. </p> <p>The contrast should be in the range -100 to +100, or to set the contrast automatically, use the flag <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-FAC16D18-6860-347E-8238-4CE1998442F0"><apiname>CCamera::EContrastAuto</apiname></xref>. </p> </li> </ol> <p id="GUID-27DB4187-E958-5468-952B-648F99A9FB7D"><b>Zoom</b> </p> <p>To alter the camera zoom: </p> <ol id="GUID-AEC745DF-D86E-53A0-A630-6AC0BA2FA652"><li id="GUID-E9820A2A-0A52-5A1F-920F-E46C30F73B33"><p>Test if zoom is supported, and for what range of values, by reading the minimum and maximum zoom values from the data members in <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita"><apiname>TCameraInfo</apiname></xref>. A value of zero means zoom is not supported. A step of one in the zoom value corresponds to the smallest zoom change available. The camera zoom increases linearly with the zoom value until the maximum zoom value. </p> <p>A separate set of values is available for zoom and for digital zoom. <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita"><apiname>TCameraInfo</apiname></xref> also has members that say what is the actual zoom factor when at minimum (non-digital only) and maximum zoom. </p> </li> <li id="GUID-E7506196-7BCB-507F-93C1-FFAEF101107A"><p>Set the zoom using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4C9E5871-DCA5-34A0-AE48-7EE70EDAECD0"><apiname>CCamera::SetDigitalZoomFactorL()</apiname></xref> or <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-AA36BA0C-C7B3-3ADD-9311-901EEE13C126"><apiname>CCamera::SetZoomFactorL()</apiname></xref>. </p> </li> </ol> <p id="GUID-AAFB3767-837A-58BC-89DC-96B74D58EE9A"><b>Image format</b> </p> <p>Before a client application captures still, or video, it can first specify the required image format. There may be complicated dependencies between frame sizes and formats, so the required format must be specified as follows: </p> <ol id="GUID-D82A3BAB-C1C0-55DE-BEAF-CCDBC7FA5FD1"><li id="GUID-629D54E0-47A4-556D-B1B7-BED86FF8A8EE"><p>Select the format from those available from either the <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita#GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A/GUID-A35EC9D8-EF63-3714-9FFC-915586E75C8A"><apiname>TCameraInfo::iImageFormatsSupported</apiname></xref> or the <xref href="GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A.dita#GUID-644E96EC-EFDC-335D-B2B6-A1BDB8538C0A/GUID-7F9299CF-9C4C-3FBF-B818-08C93D356652"><apiname>TCameraInfo::iVideoFrameFormatsSupported</apiname></xref> bitfield, for still or video images respectively. </p> </li> <li id="GUID-6E427A4A-1DC4-595F-A7AA-D3BD0A4C59B7"><p>Select the required size using either <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-4248DD3D-17D9-3EBE-92F9-4FD365AE027E"><apiname>CCamera::EnumerateCaptureSizes()</apiname></xref> or <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-C52FB21D-60EE-3202-BB50-ABDF4CDF3DB4"><apiname>CCamera::EnumerateVideoFrameSizes()</apiname></xref> for still or video images respectively. Note that not all possible sizes are guaranteed to be supported for any given format. Unsupported sizes will be returned as (0,0). </p> </li> <li id="GUID-32D3E2AA-68D5-5734-8D2A-267320796AB0"><p>For video capture, select the frame rate using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-F3C6E294-1EF2-3BB4-B1FC-87194DA1D6CA"><apiname>CCamera::EnumerateVideoFrameRates()</apiname></xref>. Again, not all rates are guaranteed to be supported, as dependencies may exist in the camera between the format, size, exposure mode and rate. </p> </li> </ol> </section> <section><title>Image Capture </title> <p>The Image Capture API allows you to do the following tasks: </p> <ul><li id="GUID-A41DE9A8-849C-50F6-83F0-91B93B1FDAAC"><p>Pre-image capture control </p> </li> <li id="GUID-A4AC45AF-8F96-528E-B9F4-5E32D7FC292E"><p>Capturing image </p> </li> <li id="GUID-D2FEC3AC-1ED6-5029-A4EA-A2A5949CA420"><p>Post-image capture control </p> </li> <li id="GUID-437F59EB-0302-5C90-9CCD-D3DEC9B7C616"><p>Control of burst image capture </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita">Accessing and Power Control of Camera</xref>  </p> <p><xref href="GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita">Camera Preset Support</xref>  </p> <p><xref href="GUID-6C8507F7-FE70-5654-91B5-53E356CFF67C.dita"> Controlling Pre-Image Capture </xref>  </p> <p><xref href="GUID-BFDDCE4E-FE4F-5815-9D0B-A0967EA53B11.dita">Controlling Still-image Capture</xref> </p> <p><xref href="GUID-3C3BBE1F-D7A2-5021-830B-78084334C883.dita">Controlling Captured Image</xref>  </p> <p><xref href="GUID-36BD6059-6547-5754-8BE0-F8051A838C14.dita">Using Time-Nudge-Capture Drive Mode</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA37516F-874F-49B0-A176-73277BB86FD3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DA37516F-874F-49B0-A176-73277BB86FD3" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Title pane touch observer API is an SDK API and first released in S60
+5th Edition. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA4160B0-7B63-5C84-B3C6-190100530EDE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DA4160B0-7B63-5C84-B3C6-190100530EDE"><title>How to use templated stream operators</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Templated stream operators are straight forward to use. For example, given the class <codeph>TSimple</codeph> defined as:</p> <codeblock id="GUID-E705AC6E-6671-552D-90A3-6BEF66E30A0C" xml:space="preserve">    class TSimple
+          {
+    public :
+          void InternalizeL(RReadStream&amp; aStream);
+          void ExternalizeL(RWriteStream&amp; aStream) const;
+          ...
+          TInt8     iInt8Value;
+          TInt64    iInt64Value;
+          TRect     iRectangle;
+          TUid      iUid;
+          CBufSeg*  iSegBuffer;
+          }</codeblock> <p><codeph>ExternalizeL()</codeph> and <codeph>InternalizeL()</codeph> might be implemented as:</p> <codeblock id="GUID-F89A6EEB-FA20-5A2B-A3DB-33630212DD70" xml:space="preserve">void TSimple::ExternalizeL(RWriteStream&amp; aStream) const
+          {
+          aStream &lt;&lt;  iInt8Value;
+          aStream &lt;&lt;  iInt64Value;
+          aStream &lt;&lt;  iRectangle
+          aStream &lt;&lt;  iUid;
+          aStream &lt;&lt;  *iSegBuffer;
+          }</codeblock> <codeblock id="GUID-DABABB0C-435F-594C-9424-F27EBDC00F17" xml:space="preserve">void TSimple::InternalizeL(RReadStream&amp; aStream)
+          {
+          aStream &gt;&gt;  iInt8Value;
+          aStream &gt;&gt;  iInt64Value;
+          aStream &gt;&gt;  iRectangle
+          aStream &gt;&gt;  iUid;
+          aStream &gt;&gt;  *iSegBuffer;
+          }</codeblock> <p>The templated operators can also be used on an object of type <codeph>TSimple</codeph>. For example:</p> <codeblock id="GUID-326FFA1F-3614-5257-A3F9-1908F25E5DC8" xml:space="preserve">TSimple simple;
+...
+aStream &lt;&lt; simple;
+...</codeblock> <p>The <codeph>operator&lt;&lt;</codeph> results in call to <codeph>TSimple::ExternalizeL()</codeph> function and this, in turn, calls <codeph>operator&lt;&lt;</codeph> on <codeph>TSimple</codeph>'s data members.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA6BB8BB-DD92-57A7-AD1B-F9CFF8CD433F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DA6BB8BB-DD92-57A7-AD1B-F9CFF8CD433F" xml:lang="en"><title>Mobile Messaging</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Mobile Messaging collection contains SMS MTM component to send and receive SMS (text) messages. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DA793067-32DD-5D4D-A0E6-E05DF9047529.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DA793067-32DD-5D4D-A0E6-E05DF9047529"><title>export</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph>  <codeph>export</codeph>  <codeph>( ( [-c] | [-w] ) | ( [-k] [-v] ) ) </codeph> </p> <p>This command copies all the files to be exported from source to their destinations, as defined in the <codeph>prj_exports</codeph> section of the component description file.</p> <p>Each destination file is only created if it does not exist or has an earlier datestamp than the corresponding source file. </p> <p>The directories which will contain the destination files will be created automatically if they do not exist.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7" xml:lang="en"><title>Views</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The term <i>view</i> refers to the <xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">MVC
+design</xref> (Model-View-Controller) component that has the following attributes:</p>
+<ul>
+<li><p>displays the application state known by the application</p>
+</li>
+<li><p>receives user input</p></li>
+<li><p>is owned by the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref></p></li>
+<li><p>observes application state changes either directly or through
+the UI controller and updates the screen accordingly</p></li>
+</ul>
+<p>In practice, views are collections of interface elements, such as controls,
+menus, command button areas (CBAs), key events, that make up one top-level
+window in an application. Applications may have one or more views. If an application
+has more than one view and if the status pane behavior is organized in this
+manner, then each view in an application can have its own tab. Applications
+can have only a single view active at any one time. The current view is the
+view that interacts with the user, receiving events and menu choices as if
+it were the only set of UI elements.</p>
+<p>Multiple view architectures are widely used in application development
+on the Symbian platform. Multiple view architectures:</p>
+<ul>
+<li><p>provide developers with an efficient way to build multiple
+views within an application and switch between them easily and simply. </p>
+</li>
+<li><p>allow applications to bundle their user interface requirements
+into a single element (a view). The view architecture then provides the capability
+to switch quickly between the views.</p></li>
+<li><p>allow applications to take advantage of object orientation
+to encapsulate code, keeping it simple and clear. </p></li>
+<li><p>provide the ability for one application to activate the view
+of another. This is particularly useful when you want to use an existing display
+or editing capability without going to the expense of integrating a component
+into your application. </p></li>
+<li><p>allow applications to register views, with one view being
+active in each running application at any one time. It does not dictate what
+a view is; however, it does provide support for a view being a display page
+on the screen</p></li>
+</ul>
+<fig id="GUID-DD277261-3BF3-4F60-87BC-3ABC709C1E09"><title>Controller-view hierarchy in traditional and Symbian architectures</title><image href="GUID-5F5F9DF5-E08E-47F9-B35C-E07180524864_d0e43117_href.png"/></fig>
+<p>In practice, the view concept varies depending upon your chosen architecture
+approach: </p>
+<section id="GUID-53125010-FFC7-422E-9EE5-A42427031F10"><title>Traditional architecture
+views</title>
+<p>In a traditional architecture, the view is derived from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>, which typically constructs a top-level
+window-owning control that draws itself and contains other controls.</p>
+<p>For more information on views in tradition architecture approaches,
+see <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">Traditional
+Symbian UI application architecture</xref>.</p>
+</section>
+<section id="GUID-B473202D-9682-4EBA-83F2-8391DB2B56D9"><title>Symbian architecture
+views</title>
+<p>In Symbian view architecture, a view controller is added between the <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI controller</xref> and
+the view that draws itself and contains other controls. For example, view
+controllers can be used to specify CBAs that are specific to specific views.</p>
+<p>In a Symbian architecture, the view controller is derived from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>,
+which is derived directly from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/CBaseClass.html#%3a%3aCBase" format="application/java-archive"><parmname>CBase</parmname></xref> and
+not from <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>. This means the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+views are not controls. <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknView.html" format="application/java-archive"><parmname>CAknView</parmname></xref>-derived
+views need to contain <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+classes to provide visual representation on the display.</p>
+<p>For more information on views in Symbian architecture approaches,
+see <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">View
+architecture</xref>.</p>
+</section>
+<section id="GUID-C9AA9483-424E-4626-8335-5F70FE246E1D"><title>Dialog architecture
+views</title>
+<p>In dialog architectures, views are implemented in modeless dialog boxes.
+Multiple views can be constructed using nested dialogs or a tabbed dialog
+pane.</p>
+<p>For more information on views in dialog architecture approaches, see <xref href="GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita">Dialog
+architecture</xref>.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A" xml:lang="en"><title>Multi-selection
+list query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A multi-selection list query is used when the user needs to be able to
+select several items from a list at the same time (using Selection key to
+mark/unmark the checkbox). See <xref href="GUID-0E695106-4139-4335-A11F-BD04418DD583.dita">Multi-selection
+list</xref> for a description of a multi-selection list.</p>
+<p>The left softkey (<b>OK</b>) is used for accepting the query, and the right
+softkey is <b>Cancel</b>.</p>
+<fig id="GUID-E2A1FCE9-6EF2-4CED-A74D-F41FE9DE5C46">
+<title>Multi-selection list query</title>
+<image href="GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e61984_href.png" scale="40" placement="inline"/>
+</fig>
+<section><title>Using multi-selection
+list queries in C++ applications</title><p>For implementation information,
+see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-DAF35D49-9630-4186-A350-E8483693D50D" xml:lang="en"><title>Hierarchical
+column list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Hierarchical column list is used for browsing in one view files and folders
+that are in different levels in the file system. This enables for example
+showing subtitles among the list items, and collapsing and expanding data
+items under it.</p>
+<fig id="GUID-0A22D779-41C5-41DD-884C-AFC7DF192720">
+<title>Hierarchical column list component, where the subtitle "Yesterday"
+is expanded</title>
+<image href="GUID-573420CD-E8E0-4E98-B3E2-1388F4B1137D_d0e55804_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The hierarchical column list can have three different row types:</p>
+<ul>
+<li><p>Subtitle row </p></li>
+<li><p>Core data row </p></li>
+<li><p>Simple data row</p></li>
+</ul>
+<p>Subtitle can have only one type of subitems, thus both core data and simple
+data items cannot exist under same subtitle. It is recommended, that only
+one type of subitems would be used in the same view.</p>
+<p>To enable more information in a single row, the core data row can be divided
+into two core data columns. The more important information should be shown
+in the first column due to more space, for example e-mail sender information
+in the first column, and subject in the second column. In landscape there
+can be also third column in use.</p>
+<p><b>General navigation:</b> </p>
+<p>Expanding and collapsing can be done in subtitle rows:</p>
+<ul>
+<li><p>Arrow key: Tabs can be used together with a hierarchical column list,
+and thus arrow keys are used for moving between tabs. If there are no tabs,
+the arrow keys expand subtitle item (Arrow right, the focus is not moved)
+and collapse expanded subtitle item (Arrow left, focus is not moved). </p></li>
+<li><p>The Selection key expands collapsed (or vice versa) subtitle item in
+focus. </p></li>
+<li><p>Commands for expanding, collapsing and opening folders or files are
+also available in the <b>Options</b> menu.</p></li>
+</ul>
+<section><title>Using hierarchical column
+lists in C++ applications</title><p>The API to use for hierarchical column
+lists is the Hierarchical
+lists API. For implementation information, see Using
+the Hierarchical lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03" xml:lang="en"><title>Security
+issues</title><shortdesc>This topic explains the security issues while performing a publish
+and subscribe.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-4BF55D37-742E-527F-9148-57C12164DA1C"><p> <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita#GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03/GUID-D2D0BDDF-28A4-5168-B1C5-685E1964C730">Who can define a property?</xref> </p> </li>
+<li id="GUID-A06C7B43-30B8-5606-B22C-EBB18DBA7554"><p> <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita#GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03/GUID-839C5063-3BA1-52E6-BFFE-CF3E18E605EC">Read and write access rights</xref> </p> </li>
+<li id="GUID-EC225F1D-0B9D-537F-BFC7-10EFBD6B44AE"><p> <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita#GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03/GUID-65107093-7C73-5117-88F7-CFB585455CE3">Deletion rights</xref> </p> </li>
+</ul>
+<section id="GUID-D2D0BDDF-28A4-5168-B1C5-685E1964C730"><title>Who can define
+a property?</title> <p>One of the most important attributes of a property
+is the category to which it belongs. A category is represented by a UID value. </p> <p>The
+general rule is that the (category) UID must be the same as the Security ID
+(the SID) of the process in which the code that is performing the define operation
+is running. In effect, this forms a data cage, preventing a process from defining,
+or "occupying", another process's property. </p> <p>You define a property
+using the overload of <codeph>RProperty::Define()</codeph> with the signature: </p> <codeblock id="GUID-B33CDB93-7EB1-5276-B260-AEAB28227FA7" xml:space="preserve">static TInt Define(TUint aKey, TInt aAttr, const TSecurityPolicy&amp; aReadPolicy, const TSecurityPolicy&amp; aWritePolicy, TInt aPreallocate);</codeblock> <p>This function was introduced in V9.1 of Symbian platform, and it does <i>not</i> allow
+you to explicitly specify the category. Indeed, Symbian platform takes the
+category to be the value of the process SID. </p> <ul>
+<li id="GUID-B4257761-359B-5027-93A0-9122EA0D5F21"><p> <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita#GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03/GUID-3EBCF236-E88A-5A50-A94E-37FABCD89633">The situation before Version 9.1</xref> </p> </li>
+<li id="GUID-56A0BBD6-F844-5C5B-8789-A3DF806E7D26"><p> <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita#GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03/GUID-05EB14D2-6BA2-5199-A97A-9368AA581922">Migration issues</xref> </p> </li>
+<li id="GUID-DF9B3F9D-C0A2-536D-BBAA-86FE218A4F21"><p> <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita#GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03/GUID-D4FAE1D0-4610-5AAD-802B-62535C6C11BB">Notes</xref> </p> </li>
+</ul> <p id="GUID-3EBCF236-E88A-5A50-A94E-37FABCD89633"><b>The situation before Version
+9.1</b> </p> <p>Before version 9.1 of Symbian platform, you had to explicitly
+define a category using the overload of <codeph>RProperty::Define()</codeph> with
+the signature: </p> <codeblock id="GUID-0D193896-AB7B-5787-A92C-2CB214C16496" xml:space="preserve">static TInt RProperty::Define(TUid aCategory, TUint aKey, TInt aAttr, const TSecurityPolicy&amp; aReadPolicy, const TSecurityPolicy&amp; aWritePolicy, TInt aPreallocate)</codeblock> <p>This function was introduced in V9.0 of Symbian platform. </p> <p>It
+was also possible to specify a category, known as the system category, which
+was reserved for system services. This category was identified by the <xref href="GUID-A85740BD-BC85-345E-B24A-92F68EA56270.dita"><apiname>KUidSystemCategoryValue</apiname></xref> UID;
+a process required the <i>WriteDeviceData</i> capability, (<xref href="GUID-C607209F-6FC5-31DE-8034-E5B799B857A8.dita"><apiname>ECapabilityWriteDeviceData</apiname></xref>),
+to use it. </p> <p>This overload is still available, but from V9.1 there are
+restrictions that govern its use, and it is recommended that, if possible,
+users of Property &amp; Subscribe services should migrate to using the version
+of <codeph>RProperty::Define()</codeph> that does not require the category
+to be specified. </p> <p id="GUID-05EB14D2-6BA2-5199-A97A-9368AA581922"><b>Migration issues</b> </p> <p>Processes
+that use the 9.0 version of <codeph>RProperty::Define()</codeph> must now
+have the <i>WriteDeviceData</i> capability to define a property with an explicitly
+specified category (including the system category), <i>provided that the SID
+of the process is less than the value</i> <xref href="GUID-4A67D011-CBB6-396F-8104-7B3BECB84460.dita"><apiname>KUidSecurityThresholdCategoryValue</apiname></xref>. </p> <p>A
+process that has a SID value <i>greater</i> than <xref href="GUID-4A67D011-CBB6-396F-8104-7B3BECB84460.dita"><apiname>KUidSecurityThresholdCategoryValue</apiname></xref>  <i>cannot
+explicitly specify a category</i>. This is an absolute rule that cannot be
+overridden regardless of the capabilities assigned to that process. </p> <p>The
+logic here is that all new <filepath>.exe</filepath> s require a SID to be
+assigned, and that this value will be greater than <xref href="GUID-4A67D011-CBB6-396F-8104-7B3BECB84460.dita"><apiname>KUidSecurityThresholdCategoryValue</apiname></xref>.
+This means that an associated process is forced to define properties with
+category values that are the same as the process SID. Older <filepath>.exe</filepath> s
+are expected to have SID values that are less than <xref href="GUID-4A67D011-CBB6-396F-8104-7B3BECB84460.dita"><apiname>KUidSecurityThresholdCategoryValue</apiname></xref>,
+and means that an associated process can continue to explicitly specify a
+category, using the 9.0 version of <codeph>Define()</codeph>, but must have
+the <i>WriteDeviceData</i> capability. </p> <p>Ideally, all older <filepath>.exe</filepath> s
+should be migrated to use the 9.1 version of <codeph>Define()</codeph>. </p> <p>The
+following diagram shows the "category space". </p> <fig id="GUID-ADCDE30C-7D9C-588D-9058-E5491AB626F3">
+<image href="GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e219441_href.png" placement="inline"/>
+</fig> <p>The <xref href="GUID-4A67D011-CBB6-396F-8104-7B3BECB84460.dita"><apiname>KUidSecurityThresholdCategoryValue</apiname></xref> value
+effectively forms a <i>threshold</i> value. Processes with a SID value below
+this threshold can define a category that is different from their SID, provided
+they have the <i>WriteDeviceData</i> capability. Processes with a SID value
+above this threshold value can only define a category that is the same as
+the SID - regardless of capability. </p> <p id="GUID-D4FAE1D0-4610-5AAD-802B-62535C6C11BB"><b>Notes</b> </p> <p>When we
+refer to the SID of the process, we also mean the SID value assigned to the
+associated <filepath>.exe</filepath> installed on the device. By older or
+younger processes, we are referring to the age of the associated executables. </p> </section>
+<section id="GUID-839C5063-3BA1-52E6-BFFE-CF3E18E605EC"><title>Read and write
+access rights</title> <p>Access rights to a property are set when the property
+is defined. </p> <p>The process defining the property can specify the rights
+of access to that property. In particular, it can specify a security policy
+to control read access (i.e. retrieval of the property) and a separate security
+policy to control write access (i.e. publication of the property). </p> <p>Access
+to a property is governed by a pair of security policies, instances of <xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref> objects.
+These define the combination of capabilities and/or vendor Id and/or Secure
+Id that a process must possess before being allowed to write to, or read from,
+a property. Any attempt to access a property by a thread whose owning process
+does not have sufficient capability, will fail with <codeph>KErrPermissionDenied</codeph>. </p> <p>The
+security policies are passed to the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-58C54D2A-91E0-359B-AA31-69C6C4050173"><apiname>RProperty::Define()</apiname></xref> function
+when the property is defined. </p> </section>
+<section id="GUID-65107093-7C73-5117-88F7-CFB585455CE3"><title>Deletion rights</title> <p>Only
+the owning process, i.e. the process that defined the property, is allowed
+to delete that property. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DB1D3045-2DC5-5C50-B430-526674369DC6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DB1D3045-2DC5-5C50-B430-526674369DC6" xml:lang="en"><title>Server-side
+MTM implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Example Code</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.zip" scope="external">TextMTM.zip</xref> </p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-419758e4-b663-48d3-bf21-d9c4bb00da23.html" scope="peer">browse</xref> to view the example code. </p> <p>The
+files reproduced here are the main files contained in the examples directory.
+Some extra files may be needed to run the examples, and these will be found
+in the appropriate examples directory. </p><p>The Server-side Text MTM simulates
+with the local file system the actions normally undertaken by a message  transport
+protocol. A Text service entry maps a local file directory, from which message
+header information can be obtained  (in a similar fashion to POP3), and from
+which messages can be get and put.</p><p>A file or folder in the mapped directory
+is regarded as a remote entry,  and recorded by an entry in the message index.
+The name of the file to which a  message corresponds is stored in the index
+Description field, and the full  folder path in the index Details field. No
+message store is associated with  these remote entries.</p><p> Under a local
+folder, for example, the Inbox, each message has a message  store that contains
+a rich text stream representing the body text.</p><p>Messages can be deleted,
+moved, or copied. When a local message to  transferred to a Text service,
+the Server-side MTM constructs a new file, obtaining its name and location
+from the index fields. When the transfer is from the service to a local folder,
+the Server-side MTM creates a rich text stream and reads the file text into
+it.</p><p>The Text server DLL currently supports one MTM-specific operation, <codeph>KTXTMTMRefresh</codeph>,
+which refreshes the folder tree below a service entry.</p></section>
+<section><title>Class summary</title><p><xref href="GUID-DA714708-9A0B-3B10-AC8E-44C903365453.dita"><apiname>CMsvServerEntry TMsvId CMsvEntrySelection
+TParse </apiname></xref></p></section>
+<section><title>Move, copy, and delete implementation</title> <p>Move, copy,
+and delete operations all operate on a collection of message entries, often
+involving creating new index entries, and deleting existing ones. This common
+functionality is provided by the class <codeph>CTxtCopyMoveBase</codeph>. </p> <p>A <codeph>CTxtCopyMoveBase</codeph> instance
+is provided with an object to perform the specific operation required. The
+classes <codeph>CTxtCopyToLocalOp</codeph>, <codeph>CTxtCopyFromLocalOp</codeph>, <codeph>CTxtCopyWithinServiceOp</codeph>, <codeph>CTxtMoveToLocalOp</codeph>, <codeph>CTxtMoveFromLocalOp</codeph>, <codeph>CTxtMoveWithinServiceOp</codeph> and <codeph>CTxtDeleteOp</codeph> each
+define the functionality for a specific operation. </p> <p>Each of these classes
+is derived from <codeph>CTxtActiveOper</codeph>. The move operation classes
+are derived from their copy counterparts, and add the extra deletion after
+copying. </p> </section>
+<section><title>Service refresh implementation</title> <p>The contents of
+folders under the file system can be changed at any time outside of the application,
+by the user or some other application. In order for these changes to be visible
+in the messaging application, the Server-side MTM provides a refresh capability. </p> <p>The
+refresh capability is provided by the refresher class <codeph>CTxtRefreshMBox</codeph>.
+It ensures that the current entries accurately reflect the state of the corresponding
+file folder, adding or removing entries under the service as required. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DB220677-5998-529C-BE35-0D66F588E057.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-DB220677-5998-529C-BE35-0D66F588E057" xml:lang="en"><title>Dependency</title><abstract><p>A dependency statement is used to indicate that the component
+being installed depends on another installed component that is not embedded
+in the current SIS file. It also indicates the hardware and platform dependency
+of the component to be installed. For information on embedded files, see <xref href="GUID-7A7254E3-A03A-5B38-B2B5-FFEEE70F5E93.dita">Embedded SIS Files</xref>  </p> <p>The
+following sections detail the syntax for specifying: </p> <ul>
+<li id="GUID-61209597-EC44-5493-B20D-01018E51B382"><p><xref href="GUID-DB220677-5998-529C-BE35-0D66F588E057.dita#GUID-DB220677-5998-529C-BE35-0D66F588E057/GUID-B771213C-29EE-5F51-A051-66121E213B0D">Component dependency</xref>  </p> </li>
+<li id="GUID-7BDFC4D3-098D-5020-A3FC-E7E03BB83686"><p><xref href="GUID-DB220677-5998-529C-BE35-0D66F588E057.dita#GUID-DB220677-5998-529C-BE35-0D66F588E057/GUID-4BCEC177-B386-5EE7-8483-76F18A0B87D4">Hardware/UI platform dependency</xref>  </p> </li>
+</ul></abstract><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-B771213C-29EE-5F51-A051-66121E213B0D"><title>Component dependency</title> <p>For
+a component with a dependency to be installed, the component it depends on
+must already be installed on the Symbian device. In addition to this, the
+version number of the required component must be same as or greater than the
+version number specified in the dependency statement, or if a range is specified,
+it must be within the range. If even one of these conditions is not met, the
+installation fails. </p> <p><b>Syntax</b> </p> <codeblock id="GUID-6D03FB00-5402-53ED-B0E6-3EBD485FC89B" xml:space="preserve">(package-UID), version-range, {"Component name for language 1","Component name for language n",...}</codeblock> <p> <b>version-range</b> can consist of a single set of major, minor and
+build numbers, for example, </p> <codeblock id="GUID-2C1AA1CE-C705-5D0C-997E-3A5035532E9C" xml:space="preserve">(0x10000003), 2, 2, 3, {"Depend-EN"}</codeblock> <p>Or
+it can specify two sets of numbers, representing lower and upper bounds, separated
+by a tilde character, for example, </p> <codeblock id="GUID-C48AAB0E-E1E7-5017-BB59-550D3335258E" xml:space="preserve">(0x10000003), 2, 2, 3 ~ 3, 0, 0, {"Depend-EN"}</codeblock> <p>A wildcard character can occur in any part of <codeph>version-range</codeph>. <codeph>*</codeph> or <codeph>-1</codeph> can
+be used as wildcard characters, for example, </p> <codeblock id="GUID-44C7B193-D158-5875-8AF6-AD606A3BFC0E" xml:space="preserve">(0x10000003), *, *, * ~ 2, 2, 3, {"Depend-EN"}</codeblock> <p>which means any version less than and including 2, 2, 3 is acceptable. </p> <p>The
+component names are used for reporting than for matching; the required component
+is identified by the package UID, as specified in its package header. For
+more information see, <xref href="GUID-D9D20EE0-AC86-512A-91C0-EA0ACF3912A7.dita">Package
+Header</xref>. </p> <p><b>Example</b> </p> <p>This example demonstrates a
+PKG file that another PKG file depends on. </p> <codeblock id="GUID-EBCBC851-8C97-5C66-A101-C44ECE6497DB" xml:space="preserve">; A simple PKG file upon which others depend
+
+; Languages
+&amp;EN,FR
+
+; Header
+#{"Depend-EN", "Depend-FR"}, (0x80000003), 1, 2, 3
+
+%{"Vendor-EN","Vendor-FR"}
+:"Vendor"
+
+;Ordinary language-specific file to system drive
+{
+"text\englishfile.txt"
+"text\frenchfile.txt"
+}-"$:\private\80000004\import\dep-lang.txt"
+
+;Ordinary language-neutral file to system drive
+"file.txt" - "$:\private\80000004\file.txt"</codeblock> </section>
+<section id="GUID-4BCEC177-B386-5EE7-8483-76F18A0B87D4"><title>Hardware/UI
+platform dependency</title> <p><b>Syntax</b> </p> <codeblock id="GUID-BB1C0ADB-CCD5-5B0A-88EB-A6D46DD8514D" xml:space="preserve">[productUID], version-range, {"ProductName"}</codeblock> <p> <b>productUID</b> is a UID that identifies a specific Symbian device
+or a UI platform. For lists of product UIDs, see the device creator website
+or SDK documentation. The product UID is specified within square brackets
+to distinguish a hardware dependency from a component dependency. </p> <p> <b>version-range</b> identifies
+the required version of the target Symbian device or UI platform. It is used
+in the same way as in a component dependency statement. It can specify a single
+set of major, minor and build numbers, or may specify upper and lower bounds,
+for a range of versions. </p> <p>It is recommended that versioning information
+be supplied using <codeph>version-range</codeph>, for example, UI platform
+versions. However, in practice, the target hardware version may be inherent
+in the product UID, in which case the <codeph>version-range</codeph> can consist
+of wildcards. </p> <p>The component name is used for reporting rather than
+matching purposes. See the Symbian device or UI platform manufacturer's technical
+documentation for the recommended text to use. </p> <p>For example, the following
+statement defines a dependency on UIQ v2.1: </p> <codeblock id="GUID-B0E328FE-EB31-530A-8411-5DAE71E87077" xml:space="preserve">[0x101F61CE], *, *, *, {"UIQ21ProductID"}</codeblock> <p>and this statement defines a dependency on the Series 60 platform second
+edition: </p> <codeblock id="GUID-4C0084D4-64B7-5BB8-B466-4057776D5C38" xml:space="preserve">[0x101f7960], *, *, *, {"Series60ProductID"}</codeblock> <p><b>Example</b> </p> <p>This example package file demonstrates a UI platform dependency.
+The platform name and UID used are for illustration only. </p> <codeblock id="GUID-A284FFB7-DB13-56F5-A063-0FA7E8049355" xml:space="preserve">; Example package file showing a dependency on "Platform1"
+
+; Languages supported
+&amp;EN
+
+; Localised vendor name
+%{"Nokia Corporation"}
+
+; Global vendor name 
+:"Nokia Corporation"
+
+; Standard PKG file header
+#{"ExampleForPlatform1"}, (0x12345678), 1, 2, 3
+
+; Can only be installed on a Platform1 device, any version. 
+; The UID, (0x00001000) identifies the target hardware/UI platform. 
+
+; UI Dependency: Refer to the device creator's or UI platform's website for real values.
+[0x00001000], *, *, *, {"Platform1ProductID"}
+
+; File to install
+"ExampleForPlatform1.txt"-"!:\private\12345679\import\ExampleForPlatform1.txt"</codeblock> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DB453F9B-55B6-50C7-984D-7154F1E84AE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DB453F9B-55B6-50C7-984D-7154F1E84AE6"><title>ICU Layout Engine Component</title><shortdesc>The ICU Layout Engine component is a plug-in to the Font Store that wraps the ICU (International Components for Unicode) layout engine. This performs contextual shaping for specific scripts that require this feature. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The CBR package name for the ICU Layout Engine component is <filepath>graphics_iculayoutengine</filepath>. </p> </conbody><related-links><link href="GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita"><linktext> Font and Text Services Collection
+                Overview</linktext> </link> <link href="GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita"><linktext>Font Store Component
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DB51983B-9991-57F3-85E6-F770C35A9023.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DB51983B-9991-57F3-85E6-F770C35A9023"><title>mv</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>mv </userinput> </p> <p>Move or rename files. </p> <p><userinput>mv [OPTION]... [-T] SOURCE DEST </userinput> </p> <p><userinput>mv [OPTION]... SOURCE... DIRECTORY </userinput> </p> <p><userinput>mv [OPTION]... -t DIRECTORY SOURCE... </userinput> </p> <p>Opions can be one of the following: </p> <table id="GUID-6E0E168F-E6D1-5124-8B84-4E9A6ADC1E41"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Option</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <codeph>-T</codeph>  </p> </entry> <entry><p> <codeph>--no-target-directory</codeph>. </p> <p>Treat <codeph>DEST</codeph> as a normal file. </p> </entry> </row> <row><entry><p> <codeph>-i</codeph>  </p> </entry> <entry><p> <codeph>--interactive </codeph>. </p> <p>Prompt before overwrite. </p> </entry> </row> <row><entry><p> <codeph>-u</codeph>  </p> </entry> <entry><p> <codeph> --update </codeph>. </p> <p>Move only when the <filepath>SOURCE</filepath> file is newer than the destination file or when the destination file is missing. </p> </entry> </row> <row><entry><p> <codeph>-t</codeph>  </p> </entry> <entry><p> <codeph>--target-directory=DIRECTORY </codeph>. </p> <p>Move all <codeph>SOURCE</codeph> arguments into <codeph>DIRECTORY</codeph>. </p> </entry> </row> <row><entry><p> <codeph>-f</codeph>  </p> </entry> <entry><p> <codeph>--force </codeph>. </p> <p>Do not prompt before overwriting. </p> </entry> </row> </tbody> </tgroup> </table> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e66504_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DB6AF6D3-38B6-51EF-A830-388961A3BF04.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-DB6AF6D3-38B6-51EF-A830-388961A3BF04"><title>How to Write a Serial Protocol Module: Tutorial</title><shortdesc>This topic gives a summary of the APIs that must be implemented for a new Serial Protocol Module. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps id="GUID-68872B97-1FC9-58A3-86D3-D7C815CCF215"><step id="GUID-18B80EE7-46D0-58D3-8C2E-361C34AE4EE6"><cmd/><info>Create a new DLL project with a <filepath>.csy</filepath> extension and a <keyword>UID</keyword> 2 of <codeph>0x10000049</codeph>. </info> </step> <step id="GUID-369B15AD-FC60-5B79-B4E8-3EBD8D8B240E"><cmd/><info>Create a class which derives from the <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita"><apiname>CPort</apiname></xref> class. This class implements the Serial service provider. Requests are delivered by the Serial Communications Server to the <codeph>CPort</codeph> class using pure virtual functions. These functions include: </info> <substeps id="GUID-394FEAFC-CEC3-522C-9E3D-943CC8023B4E"><substep id="GUID-0C9B671E-EE13-51E7-86D4-C41859A6AD32"><cmd> <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita#GUID-5CEF7907-E485-3626-8587-53CAC2A06544/GUID-6794366E-3E5F-3ABA-B650-56968B261E89"><apiname>CPort::StartRead()</apiname></xref>, which must be implemented to handle client requests to read data from the port </cmd> <info> <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita#GUID-5CEF7907-E485-3626-8587-53CAC2A06544/GUID-F35F3290-A99A-3FF2-AAFA-240F23D422E4"><apiname>CPort::IPCWrite()</apiname></xref> can be used to send the data to the client </info> </substep> <substep id="GUID-74799819-3C48-543A-BBD1-C9E0109E0FE5"><cmd> <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita#GUID-5CEF7907-E485-3626-8587-53CAC2A06544/GUID-99D433D7-6AFC-3A1D-B53A-AB875CF21D17"><apiname>CPort::StartWrite()</apiname></xref>, which must be implemented to handle client requests to write data to the port </cmd> <info> <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita#GUID-5CEF7907-E485-3626-8587-53CAC2A06544/GUID-479BBBC4-BB04-3C59-A09B-68957FE69A7E"><apiname>CPort::IPCRead()</apiname></xref> can be used to get the data from the client </info> </substep> </substeps> </step> <step id="GUID-DCECA07A-DAA4-5509-AE91-BF57FE06F2C2"><cmd/><info>Create a class which derives from the <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita"><apiname>CSerial</apiname></xref> class. This class implements the Serial protocol factory. The <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita#GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3/GUID-59F200BD-B75D-3D3C-AE01-FD6B85525B9C"><apiname>CSerial::NewPortL()</apiname></xref> function must return a new instance of the Serial service provider. The <xref href="GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3.dita#GUID-D8C11F99-7452-35BB-B53E-440968D4C1A3/GUID-B53A32A7-8AB0-31D2-ACAA-69DA0EF2DD23"><apiname>CSerial::Info()</apiname></xref> function must return a complete <xref href="GUID-A6E4627A-A3AE-3B64-9E5C-710EE15C5595.dita"><apiname>TSerialInfo</apiname></xref> record with information for the Serial Protocol Module. </info> </step> </steps> <result><p>The flexibility of the Comms Architecture allows a Serial protocol module to use the Socket API to use a protocol stack and the protocol stack then uses the Serial Communications Server API ( <xref href="GUID-6B3CA99B-ABF2-32EA-935D-23AE5AE2C306.dita"><apiname>RCommServ</apiname></xref> and <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita"><apiname>RComm</apiname></xref> APIs) to use a serial protocol. In some cases this re-entrant configuration causes a deadlock. </p> <p>A Serial protocol module can avoid deadlock when the following conditions are met: </p> <ul><li id="GUID-C65EE183-6B11-5654-AD1C-21DD7BD9ED57"><p>The serial protocol module never uses code which causes an <codeph>RComm</codeph> request on the same serial protocol module </p> </li> <li id="GUID-C13CEC2A-0203-5A38-AA82-092C2614D63C"><p>The serial protocol module must be in a different thread to the other serial protocol module. </p> </li> </ul> <p>Other tips: </p> <ul><li id="GUID-4FA03E52-C9A2-52B1-804B-76784D43D270"><p>Always call <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-68A206F1-3E5C-3B74-9E83-0EE2E0D4F448"><apiname>RSocketServ::StartProtocol()</apiname></xref> which is asynchronous before calling <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-3491CE2A-A94D-34E0-B0DD-D476EE3334D7"><apiname>RSocket::Open()</apiname></xref> which is synchronous, but may cause an <codeph>RComm</codeph> class to be instantiated. </p> </li> <li id="GUID-88A8DD6F-8620-596A-AB8E-37C7B4890DD8"><p>The Serial protocol module must correctly implement the <xref href="GUID-5CEF7907-E485-3626-8587-53CAC2A06544.dita#GUID-5CEF7907-E485-3626-8587-53CAC2A06544/GUID-6C3DE0B7-5B94-3998-A0E5-B17124986A33"><apiname>CPort::Destruct()</apiname></xref> function. A standard C++ destructor must run synchronously, so <codeph>CPort::Destruct()</codeph> allows the Serial protocol module to complete asynchronous operations during the close of the port. For example, a Serial protocol module that needs to close an <codeph>RComm</codeph> object must do this asynchronously. </p> </li> </ul> </result> </taskbody><related-links><link href="GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita"><linktext> How
+                to Configure Multithreaded C32 Serial Comms: Tutorial</linktext> </link> </related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81_d0e408994_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DB827750-6057-537E-8FE1-8F68BF2E9F99" xml:lang="en"><title>Writing
+a UPS Policy File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>UPS policy files are resource files that specify whether application requests
+to access services are silently accepted or denied or whether they require
+the user to be prompted. Each service has a policy file. The policy file lists
+policies for various applications. </p>
+<section><title>Required Background</title> <p>Before you start writing a
+UPS policy file, you must configure the UPS. For more information, see <xref href="GUID-6849E256-6719-5788-BCB2-7557F09AAAD0.dita">Configuring UPS</xref>. </p> </section>
+<section><title>Introduction</title> <p>The resource header file, <filepath>ups/policies.rh</filepath>,
+defines the structures and constants required by User Prompt Service policy
+files. </p> <p>Device creators can customise the circumstances under which
+prompts are generated by configuring policies. Policies are made up of details
+about the service being requested as well as information about whether to
+accept or deny silently or to ask the user. They are defined in policy lists.
+Each service has one policy list defining any number of policies. </p> <p>In
+cases where the policy specifies that a user prompt is required, ECOM plug-ins
+called <xref href="GUID-43080A86-72D3-5422-953E-A5EF79961D7B.dita">Policy Evaluators</xref> and <xref href="GUID-A8130D83-E684-5B6C-BDFE-EB6EE3CD49E8.dita">Dialog Creators</xref>, written
+by device creators. </p> </section>
+<section><title>Writing policy files</title> <p>Writing policy files include
+the following: </p> <ul>
+<li id="GUID-9FE188FC-A512-595A-848B-DA5A82F143AF"><p>Naming and location
+of policy files </p> </li>
+<li id="GUID-81096653-08DF-53F2-8CD9-D683BD8D9F97"><p>Policy resource </p> </li>
+</ul> <p><b> Naming and location of policy files</b> </p> <p>UPS policy files
+must be named <filepath>ups_&lt;systemserversid&gt;_&lt;serviceuid&gt;.rsc</filepath>.
+They are stored in <filepath>z:\private\10283558\policies</filepath> or the
+equivalent directory on the system drive. </p> <p>The <codeph>systemserversid</codeph> and
+the <codeph>serviceuid</codeph> components of the policy file name are 8-digit,
+zero-padded hexadecimal numbers. </p> <p><b>Policy resource </b> </p> <p>The
+policy resource is made up of a header, followed by any number of policies.
+Policies need to be ordered from most specific to least specific. </p> <codeblock id="GUID-679FBF44-5880-57B2-83EA-1A89DA0BBA9D" xml:space="preserve">RESOURCE POLICIES mypolicies
+    {
+    header = POLICY_HEADER 
+        {
+        // header definition
+        };
+        policies = 
+            {
+            POLICY
+            {
+            // definition of policy 1
+            },
+            POLICY
+            {
+            // definition of policy 2
+            }
+            // etc
+            };
+   }
+</codeblock> <p>The following shows an example header: </p> <codeblock id="GUID-52773FA8-A3E1-51E2-8F12-675BE94A21E3" xml:space="preserve">header = POLICY_HEADER
+ {
+ // The major version number of THIS policy file.
+ // When policy files are upgraded or eclipsed the UPS deletes all decision
+ // records for the system server server SID and service ID where the major
+ // version in the decision record is not equal to the major version
+ // number in the policy file.
+ majorversion = 0;
+ // The minor version number of THIS policy file.
+ minorversion = 0; 
+
+ // Built-in (protected SID and loaded from Z drive) client applications
+ // do not require authorisation from the UPS if the client has the correct
+ // capabilities.
+ authorisationpolicy = ECheckPostManufacture;
+ //dialogcreator and policyevaluator UIDs
+ dialogcreator = 0x10283694;
+ policyevaluator = 0x10283698;
+ };
+</codeblock> </section>
+<section><title>Example of a policy file </title> <p>The following is an example
+of a policy file: </p> <codeblock id="GUID-F5378D3D-02A5-536E-96D1-6BD240B3852E" xml:space="preserve">// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+
+
+#include &lt;ups/policies.rh&gt;
+// Identifies this as a UPS policy file
+UID2 KUidUpsPolicyResourceFile
+// Uniquely defines this policy file. The UID should be reserved using the Symbian Signed protected UID allocator.
+UID3 0x01100001                    
+
+RESOURCE POLICIES testpolicies
+    {
+    header = POLICY_HEADER
+        {
+        // Built-in (protected SID and loaded from Z drive) client applications
+        // do not require authorisation from the UPS if the client has the correct
+        // capabilities.
+        authorisationpolicy = ECheckPostManufacture;
+        dialogcreator = 0x10283694;
+        policyevaluator = 0x10283698;
+        };
+    policies = 
+        {
+        POLICY
+            {        
+            // Silently accept this SID (By specifying only KYes in options field)
+            sid_list = {0x01000030};
+            destination = "*";
+            options = KYes;
+            },            
+        POLICY
+            {
+            // Silently accept these SIDs for a specific destination
+            sid_list = {0x01000031,0x01000032};
+            destination = "*WLAN*";
+            options = KYes;
+            },            
+        POLICY
+            {
+            // For protected SIDs enable the Always and Never options
+   // if the client has the correct capability.
+            sid_classes = KProtectedSids;
+            systemserversecurity = ESystemServerSecurityPassed;
+            destination = "*";
+            options = KYes|KNo|KAlways|KNever;
+            policyevaluator = 0x01000020;
+            dialogcreator = 0x01000021;
+            },
+        POLICY
+            {
+            // Unprotected SIDs may only get one-shot permissions            
+            sid_classes = KUnprotectedSids;
+            destination = "*";
+            options = KYes|KNo;
+            flags = 42;         // Flags specific to policy evaluator 0x10283698
+            }
+        };
+    }
+
+</codeblock> </section>
+<section><title>See also</title> <p><xref href="GUID-4E838A77-C7B5-5B1F-93F5-F3577901914B.dita">Policy
+Resource</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e66246_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DBD4964D-7728-5E57-8BBA-824F98D0CCF8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DBD4964D-7728-5E57-8BBA-824F98D0CCF8" xml:lang="en"><title>TCP/IP Utilities</title><shortdesc>This section describes the TCP/IP Utilities collection of components,
+which provides libraries used by TCP/IPv4/v6 PRT for the DNS and DHCP protocols. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DBF88873-21B1-5493-8EBF-C9071D314A09.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DBF88873-21B1-5493-8EBF-C9071D314A09" xml:lang="en"><title>Buffers And Strings</title><shortdesc>Links to documents that describe buffers and strings.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC011D9C-6C39-5BB9-A7CC-4447AB97A2D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DC011D9C-6C39-5BB9-A7CC-4447AB97A2D2" xml:lang="en"><title>Resource Management</title><shortdesc>Resource Management collection provides a number of components
+for high level access to phone resources, including power, light and vibration. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC0E3782-82EF-5104-937C-41F24DF1E1CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DC0E3782-82EF-5104-937C-41F24DF1E1CA"><title>How to set the cursor</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The code in this section sets the <keyword>line cursor
+        margin</keyword> and line and <keyword>text cursor</keyword> visibility. In order to display the text cursor, a window group must have been set when the text view was constructed. Alternatively, one may be set by calling <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-B9282DE0-09BF-308C-8105-61272B79AC80"><apiname>CTextView::SetDisplayContextL()</apiname></xref>. Before a <keyword>line
+        cursor</keyword> can be displayed, the line cursor margin width must be set and a bitmap line cursor must be specified. </p> <p>The following code sets the <keyword>line cursor
+        margin</keyword> width to 20 pixels and the <keyword>label
+        margin</keyword> width to zero.</p> <ul><li id="GUID-ADDB082D-EB96-5FA7-9533-CDEF32D4C8F7"><p>After the margin width is set, call <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-F30E2687-36D6-3C7E-AE6C-7735981853F2"><apiname>CTextView::DrawL()</apiname></xref> to ensure the line cursor will be visible.</p> </li> <li id="GUID-61752E09-7AFA-595A-95B1-6D2DF75FCDE8"><p>Load in the bitmap used to represent the line cursor. </p> </li> <li id="GUID-AA9E0A3E-5247-5B88-B70F-2302815FC715"><p>Call <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-DA488293-4E53-32B6-A852-C28AC9ECEACE"><apiname>CTextView::SetCursorVisibilityL()</apiname></xref> to select both cursors for display.</p> </li> </ul> <codeblock id="GUID-9CF0ACFB-574A-5664-AFC2-9263F8888D56" xml:space="preserve">iTextView-&gt;SetMarginWidths(0,20);
+        // zero label margin, 20 pixel line cursor margin
+iTextView-&gt;DrawL(iViewRect); // required to update the view 
+// Set bitmap to represent line cursor. First load it in.
+iBitmap=new(ELeave) CFbsBitmap();
+iBitmap-&gt;Load(_L("\\data\\CURSORS.MBM"));
+iTextView-&gt;SetLineCursorBitmap(iBitmap);
+iTextView-&gt;SetCursorVisibilityL(TCursor::EFBothCursors);</codeblock> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e3354_href.png has changed
Binary file Symbian3/SDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e110354_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD"><title>Automatic Speech Recognition Custom Commands Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of ASR Custom Commands. </p> <section><title>Purpose</title> <p>This library provides custom commands for the ASR Client Utility. </p> <p><b>ASR Custom Commands Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-9ADED590-BE42-526D-99B7-DACB7682843C"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>speechrecognitioncustomcommands.dll</b>  </p> </entry> <entry><p> <b>speechrecognitioncustomcommands.lib</b>  </p> </entry> <entry><p>These files are used for implementing ASR Custom Commands. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>ASR Custom Commands is an extension of the MMF Controller framework that supports speech recognition. </p> </section> <section><title>Description</title> <p>The ASR Custom Commands extend the basic functionality of the ASR Client Utility. The <xref href="GUID-8BDEBC3E-1B7E-3951-99BA-D6C6F9F53AC0.dita"><apiname>CSpeechRecognitionCustomCommands</apiname></xref> class communicates with the controller plugin via the <xref href="GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841.dita#GUID-9DEDFB0F-C963-3FB7-9237-DDDB276C8841/GUID-E0CBE252-799E-3972-8C14-B1C6E135C458"><apiname>RMMFController::CustomCommandSync()</apiname></xref> function. </p> <p>ASR Custom Commands follows the standard custom commands pattern for MMF. </p> </section> <section><title>Key ASR Custom Commands Classes</title> <p>The speech recognition functionality provided by the ASR Custom Commands is contained within the following key classes: </p> <ul><li id="GUID-E4AEEC52-8305-5A2F-8A36-F7FA9E90C38E"><p> <xref href="GUID-397E00DC-879F-3DFB-9409-61CFC27433F9.dita"><apiname>RSpeechRecognitionCustomCommands</apiname></xref> - ASR Custom Commands. </p> </li> <li id="GUID-E4D48DEE-56CC-5D5B-980F-7D78A7147334"><p> <xref href="GUID-16CBFE31-B6F3-3263-A4F8-4660E9F87EA9.dita"><apiname>CSpeechRecognitionCustomCommandParser</apiname></xref> - ASR Custom Commands Parser. </p> </li> <li id="GUID-10DF2B9E-6ADA-50AF-9FCB-983B227D1F15"><p> <xref href="GUID-0B3DE41D-9861-30DC-B29D-A049C49ADF7C.dita"><apiname>MSpeechRecognitionCustomCommandImplementor</apiname></xref> - ASR Custom Commands Implementor. </p> </li> </ul> </section> <section><title>Using ASR Custom Commands</title> <p>Clients can use the ASR Custom Commands to: </p> <ul><li id="GUID-51B3C326-9F69-5178-99A2-384AEEACA4D5"><p>Create a new grammar. </p> </li> <li id="GUID-D16A04DC-8AA7-5802-A308-BB10DC3FED02"><p>Create a new lexicon. </p> </li> <li id="GUID-5C71CE9D-542C-5B7C-B28B-378F1E93188B"><p>Add a new entry into the lexicon. </p> </li> <li id="GUID-1D8827F5-02EC-5AA1-A6A6-1DEE813DD04E"><p>Add a new rule into the grammar. </p> </li> <li id="GUID-357F2222-55AF-5737-AA60-4CB9B552BA08"><p>Record user utterance. </p> </li> <li id="GUID-1A6137E9-BED2-5020-9D30-EC3243F0576E"><p>Playback user utterance. </p> </li> <li id="GUID-32603D53-1AB3-5D24-8A25-08C9B2E36CA6"><p>Save current changes into permanent storage. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita"> Automatic Speech Recognition Client Utility Overview</xref>  </p> <p><xref href="GUID-F684F363-B361-5868-9195-41305428AB2D.dita">Automatic Speech Recognition Data Handling Overview</xref>  </p> <p> </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e46114_href.png has changed
Binary file Symbian3/SDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e52140_href.png has changed
Binary file Symbian3/SDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e56297_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC59BEAD-0047-4D7A-96D1-C5E3EC4F982B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DC59BEAD-0047-4D7A-96D1-C5E3EC4F982B" xml:lang="en"><title>Drawing
+in traditional architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The application framework calls<xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> when a control area needs
+to be updated on the display. Controls may implement <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> or leave the drawing
+to their child controls. For more information on control hierarchies, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/RunTimeControlHierarchy.guide.html" format="application/java-archive">The run-time control hierarchy</xref>. The platform calls <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> for the parent control
+first, and then recursively for each control.</p>
+<p>Controls should override <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> to draw their content.
+The override should do nothing else and should be as fast as possible. For
+example, it is bad design to create fonts dynamically, and read any bitmaps
+or resources while drawing. A good rule of thumb is that there should not
+be trap handlers in the method override; any time-consuming functionality
+that can be done beforehand should be cached.</p>
+<p>In most cases controls are drawn on the display using the screen device
+graphics context, accessed with <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSystemGc%28%29const" format="application/java-archive"><parmname>CCoeControl::SystemGc()</parmname></xref>. The graphics context provides a wide set of <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/GDI/index.html" format="application/java-archive">GDI</xref> (Graphics
+Device Interface  - common Symbian platform graphics API) drawing primitives
+that can be used for drawing virtually anything on screen.</p>
+<p>An example of a basic override of <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> for a control that is
+a top-level window in an application is as follows:</p>
+<codeblock id="GUID-27363E40-E10A-4399-BF1A-A48305A1DC1B" xml:space="preserve">void CMyAppView::Draw( const TRect&amp; /*aRect*/ ) const
+    {
+    // Get the standard graphics context
+    CWindowGc&amp; gc = SystemGc();
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    gc.SetBrushColor( KRgbWhite);
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+
+    // Gets the control's extent
+    TRect rect( Rect());
+
+        {
+        gc.Clear( rect );
+        }
+    }
+</codeblock>
+<p>, where</p>
+<ul>
+<li><p><parmname>CWindowGc&amp; gc = SystemGc();</parmname> gets
+the graphics context that is used when drawing the control.</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aSetPenStyle%28TPenStyle%29" format="application/java-archive"><parmname>CWindowGc::SetPenStyle</parmname></xref>, <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aSetBrushColor%28const%20TRgb%20%26amp%3b%29" format="application/java-archive"><parmname>CWindowGc::SetBrushColor</parmname></xref>, and <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aSetBrushStyle%28TBrushStyle%29" format="application/java-archive"><parmname>CWindowGc::SetBrushStyle</parmname></xref> are used to set the drawing primatives for the context</p>
+</li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/TRectClass.html" format="application/java-archive"><parmname>TRect</parmname></xref> gets
+the size of the control rectangle</p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWindowGcClass.html#%3a%3aCWindowGc%3a%3aClear%28const%20TRect%20%26amp%3b%29" format="application/java-archive"><parmname>CWindowGc:Clear(rect)</parmname></xref> clears the control rectangle</p>
+</li>
+</ul>
+<section id="GUID-F52B945E-F63A-40FC-B7EF-CBA4CFD415E8"><title>Double buffering</title>
+<p>For controls that perform intensive drawing operations, the drawing
+should be cached: a process also known as double-buffering. Here the drawing
+is done to a memory context first and then in the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> method only the context's
+bitmap is passed to screen. In the Symbian platform, the easiest way to implement
+a double buffer is to create a <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Font_and_Bitmap_Server/CFbsBitmapClass.html" format="application/java-archive"><parmname>CFbsBitmap</parmname></xref> and
+then bind a graphics context to that  - this makes it possible to use the
+same GDI interface for drawing as the display context. The drawing is done
+to a memory bitmap buffer. Double-buffering is a common paradigm used in games,
+but can also be utilized in any application when performance of drawing controls
+is important.</p>
+<p>The following is a short example of how a double buffer is created and
+used:</p>
+<codeblock id="GUID-2FA4ADA3-E8F5-4BEE-86C4-40DE748BB91B" xml:space="preserve">iGcBmp = new (ELeave) CWsBitmap(iEikonEnv-&gt;WsSession());
+User::LeaveIfError(iGcBmp-&gt;Create(aClientRect.Size(), iEikonEnv-&gt;ScreenDevice()-&gt;DisplayMode()));
+iGcDevice = CFbsBitmapDevice::NewL(iGcBmp);
+User::LeaveIfError(iGcDevice-&gt;CreateBitmapContext(iGc));
+</codeblock>
+<p><parmname>iGcBmp</parmname> is a pointer to <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/CWsBitmapClass.html" format="application/java-archive"><parmname>CWsBitmap</parmname></xref>,
+the bitmap memory buffer, that is created with the same width and height as
+the top-level window and with the same color bit depth as the display.<parmname> iGcDevice</parmname> is
+a pointer to the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/GDI/CBitmapDeviceClass.html" format="application/java-archive"><parmname>CBitmapDevice</parmname></xref> device
+class and the context <parmname>iGc</parmname> holds the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/GDI/CBitmapContextClass.html" format="application/java-archive"><parmname>CBitmapContext</parmname></xref> instance. <parmname>iGc</parmname> is then used instead of <parmname>CScreenGc</parmname>, obtained from the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aSystemGc%28%29const" format="application/java-archive"><parmname>CCoeControl::SystemGc()</parmname></xref> method, when the
+control draws itself. The double-buffer drawing should be done outside of
+the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDraw%28const%20TRect%20%26amp%3b%29const" format="application/java-archive"><parmname>CCoeControl::Draw</parmname></xref> method and can be called
+directly when needed. Only at the end of the off-screen drawing is the memory
+buffer flushed to the screen by calling <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aDrawDeferred%28%29const" format="application/java-archive"><parmname>CCoeControl::DrawDeferred()</parmname></xref></p>
+<codeblock id="GUID-9474C692-0E2E-4B2C-A218-C4DF99E85C31" xml:space="preserve">void CMyDrawingExample::Draw(const TRect&amp; /*aRect*/) const
+    {
+    SystemGc().BitBlt(TPoint(0, 0), iGcBmp);
+    }</codeblock>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61" xml:lang="en"><title>Window Server
+Client-Side Library</title><shortdesc>The Window Server client-side library provides client applications
+with access to the screen and input devices. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links>
+<link href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita"><linktext>Window Server
+  Component</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC704CA7-401C-54D5-85DA-B5EBF4362806.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DC704CA7-401C-54D5-85DA-B5EBF4362806" xml:lang="en"><title>A3F Audio Component Framework Concepts</title><shortdesc>This section describes important A3F Audio Component Framework concepts, such as audio stream states and the Commit process. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC890B80-18F4-5D4A-8476-DBEB5FA20842.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DC890B80-18F4-5D4A-8476-DBEB5FA20842"><title>local</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>local [ {+|-}AEFHLRUZahilprtux [n]] [ name[=value] ] ... </userinput> </p> <p>Same as <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref>, except that the options <codeph>-g</codeph>, and <codeph>-f </codeph> are not permitted. In this case the <codeph>-x </codeph> option does not force the use of <codeph>-g</codeph>, that is, exported variables will be local to functions. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6" xml:lang="en"><title>EGL
+Collection Overview</title><shortdesc>EGL is an interface between EGL client APIs (such as OpenGL ES
+and OpenVG) and an underlying native platform window system. EGL is independent
+of definitions and concepts specific to any native window system or rendering
+API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>EGL is an open standard developed by the Khronos Group, which
+is a member-funded industry consortium. Khronos creates open standard, royalty-free
+APIs to help write and execute dynamic media on a wide variety of platforms
+and devices. For more information about EGL operations, functions, errors,
+versions and header files, see <xref href="http://www.khronos.org/egl/" scope="external">http://www.khronos.org/egl/</xref>. </p>
+<p>In this documentation the term <b>EGL client API</b> is used to mean a
+rendering API, such as OpenGL ES or OpenVG, that is a client of EGL. </p>
+<section><title>Introduction to EGL on the Symbian platform</title> <p>EGL
+provides: </p> <ul>
+<li id="GUID-DEBBBE4F-8B61-58EF-A4FE-CFC3C63B0223"><p>mechanisms that create
+rendering surfaces onto which EGL client APIs can draw and which they can
+share </p> </li>
+<li id="GUID-1D0D4366-D8B7-50B1-9D5B-1C7BFAC11C94"><p>methods that create
+and manage graphics contexts for EGL client APIs </p> </li>
+<li id="GUID-67AC4C95-E548-5275-A151-13AE9F4AFFCB"><p>methods that synchronize
+drawing by EGL client APIs and Symbian APIs (such as <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita"><apiname>CWindowGc</apiname></xref>). </p> </li>
+</ul> <p>One of the purposes of EGL is to provide a means to create EGL client
+API rendering contexts, and associate them with drawing surfaces. EGL defines
+three types of drawing surfaces collectively referred to as <codeph>EGLSurfaces</codeph>.
+These are: </p> <ul>
+<li id="GUID-21914FD1-9A21-536D-AD5B-09CC15B70ADA"><p> <b>window surfaces</b>,
+which are used for on-screen rendering into windows that are provided by the
+Symbian platform (rather than EGL) </p> </li>
+<li id="GUID-230C6E2A-FC78-57C4-8F58-DDB8684D2385"><p> <b>pbuffer surfaces</b>,
+which are used for off screen rendering and are entirely provided by EGL </p> </li>
+<li id="GUID-76001CBC-8E7C-552A-AAC2-76E159FB0FF4"><p> <b>pixmap surfaces</b>,
+which are used for off screen rendering into pixmap buffers that are provided
+by the Symbian platform (rather than EGL). </p> </li>
+</ul> <p>Some key points to note include: </p> <ul>
+<li id="GUID-6CD11A9A-FF10-5939-9C38-F443397DDD01"><p>EGL objects and their
+related context state cannot be used outside of the address space in which
+they are created. </p> </li>
+<li id="GUID-E8A666F7-1B08-5F18-B117-29B6E35D31C0"><p>EGL enables sharing
+of certain types of context state among contexts existing in a single address
+space. </p> </li>
+</ul> <p><b>Thread-safety </b> </p> <p>Currently EGL and its client APIs are
+only guaranteed to work correctly on the Symbian platform when they are within
+a single thread. EGL guarantees sequential ordering within a command stream
+for each of the EGL client APIs. However, there is no guarantee of sequential
+ordering between EGL client APIs and Symbian APIs which render into the same
+surface. </p> <p>EGL client API commands may be asynchronous, in order to
+prevent impairing the interactive use of the windowing system by the user.
+For example, otherwise rendering a large texture mapped polygon on a system
+with no graphics hardware, or drawing a large OpenGL ES vertex array, could
+prevent a user from invoking a menu soon enough to be usable. </p> <p>Synchronization
+depends on the client—it can be maintained at moderate cost with the careful
+use of commands such as <codeph>glFinish</codeph>, <codeph>vgFinish</codeph>, <codeph>eglWaitClient</codeph>,
+and <codeph>eglWaitNative</codeph>, as well as synchronization commands present
+in the Symbian APIs. The EGL client API and Symbian API rendering can be done
+in parallel if the client does not prevent it with explicit synchronization
+calls. Some performance degradation may be experienced when there is unnecessary
+switching between EGL client APIs and Symbian API rendering. </p> </section>
+<section><title>Architectural relationships</title> <p>The following diagram
+shows the key EGL relationships and dependencies within the Symbian platform.
+On the Symbian platform, OpenGL ES, OpenVG and EGL all have a component (shown
+in blue) that declares the interface, and all require an implementation that
+implements that interface (shown in green). </p> <fig id="GUID-BF9F0E84-F1DA-5D9D-9D4B-14AA55C7DA07">
+<title>              Key EGL relationships and dependencies            </title>
+<image href="GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e181877_href.png" placement="inline"/>
+</fig> <p>The <xref href="GUID-D252E75C-C8CA-5C51-8DA3-95B937A1295C.dita">EGL Interface
+component</xref> provides a consistent interface to EGL on the Symbian platform,
+enabling cross-device compatibility. The component includes the Khronos-released
+header files (which incorporate some minor changes, such as to the comments).
+It also provides some Symbian-specific header files and some other files (such
+as LIB, DEF and MMP files) and UIDs. It does not provide any implementations
+of the APIs. </p> <p>The EGL Interface component includes the header files
+for EGL 1.2, 1.3 and 1.4 (which is used by default). The main advantage of
+EGL 1.4 over previous versions is the introduction of a <b>preserve buffer</b> flag.
+When supported by the implementation, an EGL window surface can have its color
+buffer preserved from one frame to the next. This means that the client does
+not need to send the entire drawing instructions for each frame. Instead the
+client can simply send the drawing operations for what changes in each frame
+compared to the previous one. This can reduce the memory footprint and the
+CPU overhead when an EGL client API renders successive frames. </p> </section>
+</conbody><related-links>
+<link href="GUID-8C6D4350-A38D-57A1-8C8D-C777EA7E8A3E.dita"><linktext>EGL     
+           Collection</linktext></link>
+<link href="GUID-1B1C6D35-FFDF-55B3-BCE2-DD0295858E49.dita"><linktext>OpenVG Collection</linktext>
+</link>
+<link href="GUID-AB93B01C-B6C2-5B24-ADEF-95706584D625.dita"><linktext>OpenGLES
+Collection</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DCA2880E-7DF9-5E60-8F87-241711935389" xml:lang="en"><title>FeatMngrExample:
+dynamic feature management example</title><shortdesc>This example demonstrates the use of Feature Manager APIs for dynamic
+feature management. It also demonstrates how to receive notification about
+changes to a feature. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3bc38b8f-c8bf-4af9-969b-a0bc4dd4dcad.zip" scope="external">FeatMngrExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3bc38b8f-c8bf-4af9-969b-a0bc4dd4dcad.html" scope="peer">browse</xref> to view the example code.</p> </section>
+<section><title>Purpose</title> <p>The example shows how to use the <xref href="GUID-0CA63AEB-9A80-51C6-AE7F-E747D6B3B789.dita">Feature Manager</xref> API.
+UI vendors and device manufacturers can use this API to declare features (such
+as DRM agents, codecs, vibra) as available or not. The feature set can be
+adjusted dynamically as software services are installed and uninstalled or
+as platform capabilities are discovered dynamically. </p> <p>This example
+shows how Feature Manager APIs allow applications and system software to establish
+which features are present on or absent from a Symbian OS device. </p> </section>
+<section><title>Design and implementation</title> <p>The example consists
+of two processes: </p> <ul>
+<li id="GUID-0DA213CD-55C2-5ADD-A872-20D008EE5D46"><p> <filepath>featmngrexample.exe</filepath>:
+this is the main process which provides the list of available features. It
+also provides the option to add new features or delete/update a feature. </p> </li>
+<li id="GUID-B2A151CA-3807-5990-B431-CF4083E42107"><p> <filepath>featurechecker.exe</filepath>:
+this process receives notification about new features installed or uninstalled
+by the main process. </p> </li>
+</ul> <p><b>FeatMngrExample</b> </p> <p>This shows the use of the <xref href="GUID-F6AAAC24-4A62-383A-86C6-2E46335C3FD4.dita"><apiname>RFeatureControl</apiname></xref> API
+to manage features. </p> <p>It presents menu options to the user to list the
+available features, to add or delete a feature, update an existing feature,
+and to enable or disable a feature. It also starts another process, called
+featurechecker.exe which receives notifications of events happening in this
+process. The list of features includes some whose feature flags are non-modifiable.
+Any attempt to modify or delete those features will result in a system error
+-21 (<codeph>KErrAccessDenied</codeph>). When adding a new feature, it should
+be in the range as described in the console because the featurechecker process
+subscribes to this range of features for change notification. </p> <p><b>FeatureChecker</b> </p> <p>This
+process is started by <filepath>featmngrexample.exe</filepath>. It implements
+the <xref href="GUID-623C4183-00F0-36B0-AE1F-5C5EDCAF1B3D.dita"><apiname>MFeatureObserver</apiname></xref> class to handle notification of feature
+changes. <codeph>FeatureChecker</codeph> also demonstrates the use of the <xref href="GUID-CA12C6F7-E997-33B8-9463-B326BC1832C5.dita"><apiname>CFeatureNotifier</apiname></xref> class.
+It implements <codeph>HandleNotifyChange()</codeph> to handle the changes
+made by FeatMngrExample. The type of change is displayed to the user as an
+infoprint message (<xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-EEF84AA0-A277-390D-BFAB-CF50C94DF18D"><apiname>User::InfoPrint()</apiname></xref>). <codeph>HandleNotifyChange()</codeph> is
+called to handle changes for those features which are subscribed to for notification
+(in the <codeph>NotifyFeatureL</codeph> () method). </p> </section>
+<section><title>Building and configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-A8030260-4FEF-55E1-A50C-65BEE3F08E21"><p>The example builds two
+executables called <filepath>featmngrexample.exe</filepath> and <filepath>featurechecker.exe</filepath> in
+the standard locations. The second executable is run by the first. </p> </li>
+<li id="GUID-DD5D4965-A174-553C-BD13-22A6DFE9E52F"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+</ul> </section>
+<section><title>Running the example</title> <p>When running the example, the
+user is presented with various menu options that are self-explanatory. Press
+any other key to exit. </p> </section>
+<section id="GUID-433F7103-5372-5971-85A6-0FBF88ECE5C1"><title>See also:</title><p><xref href="GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51.dita">Feature Management</xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DCA8273C-84EC-503B-9776-F141113B5CA7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DCA8273C-84EC-503B-9776-F141113B5CA7" xml:lang="en"><title>GSM 6.10 Audio Codec Implementation</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the GSM 6.10 Audio Codec Implementation. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e262810_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DCFD4CA0-6FB2-5339-BCFF-5B48E3E7E455.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DCFD4CA0-6FB2-5339-BCFF-5B48E3E7E455"><title>Speed Dial Functionality</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The database owns speed dial information. This is a mapping between a single digit integer and a telephone number, allowing the user to dial a stored contact using one key. <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-D4EE1909-BDB1-3F1B-A540-C009529854FC"><apiname>CContactDatabase::SetFieldAsSpeedDialL()</apiname></xref> sets a field containing a telephone number as a speed dial field. The field is identified by <xref href="GUID-97E04758-0642-38C2-A761-C820C4780459.dita"><apiname>aFieldIndex</apiname></xref> within the contact item <xref href="GUID-C65DC759-F4C4-3271-86D2-8A4C63A645FA.dita"><apiname>aItem</apiname></xref>. It is assigned a speed dial position between 1 and 9 inclusive. <xref href="GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E.dita#GUID-6A6C7B3B-1E44-3731-956D-590A1122FF6E/GUID-CE08E2C6-FA3A-3955-928E-C66047B65C33"><apiname>CContactDatabase::GetSpeedDialFieldL()</apiname></xref> returns the ID of the contact item whose telephone number field is mapped to the speed dial position specified. This function is provided so that information may be displayed about a contact item whose telephone number is being dialled using speed dialling. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e372138_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD13AA8E-BDAD-57EC-81EC-49C8D6D30A86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DD13AA8E-BDAD-57EC-81EC-49C8D6D30A86" xml:lang="en"><title>Short Link Services
+Guide</title><shortdesc id="GUID-E51B8844-7915-5973-908D-6C9531EEA3FE"> The Short Link
+Services module enables licensees to implement Bluetooth, USB, Infrared and
+OBEX on Symbian platform devices. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732" xml:lang="en"><title>Layout
+change events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Layout change events are generated when the screen size or layout is
+changed. The Symbian platform supports multiple screen resolutions (<xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">scalable UI</xref>). Thus,
+layout awareness is particularly crucial for those applications that implement
+a customized UI instead of using automatically scalable Avkon UI components.
+Applications can detect the changes in layout with, for example, the following
+methods:</p>
+<ul>
+<li><p>Controls can override the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aHandleResourceChange%28TInt%29" format="application/java-archive"><parmname>CCoeControl::HandleResourceChange()</parmname></xref> to detect the <parmname>KEikDynamicLayoutVariantSwitch</parmname> message.</p>
+</li>
+<li><p>UI controllers can override the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html#%3a%3aCCoeControl%3a%3aHandleResourceChange%28TInt%29" format="application/java-archive"><parmname>CCoeControl::HandleResourceChange()</parmname></xref> to detect the <parmname>KEikDynamicLayoutVariantSwitch</parmname> message. </p>
+</li>
+</ul>
+<p>The following example code demonstrates the implementation of <parmname>HandleResourceChange()</parmname>:</p>
+<codeblock id="GUID-8BF5353E-F09F-457A-826A-3F83ADEDF97E" xml:space="preserve">void CExampleControl::HandleResourceChange( TInt aType )
+    {
+    CCoeControl::HandleResourceChange(aType);
+    //call base class implementation
+    if( aType==KEikDynamicLayoutVariantSwitch )
+        {
+        TRect rect;
+        // ask where container's rectangle should be
+        // EMainPane equals to area returned by
+        //CEikAppUi::ClientRect()
+        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,rect );
+        SetRect( rect );
+        }
+    }
+</codeblock>
+<p>The following example code demonstrates the implementation of <parmname>HandleResourceChangeL()</parmname>:</p>
+<codeblock id="GUID-226A9867-C4C5-4286-B324-30EB17A4374D" xml:space="preserve">void CExampleAppUi::HandleResourceChangeL( TInt aType )
+    {
+    CAknAppUi::HandleResourceChangeL( aType );
+    if( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        // do the re-layout of the components
+        }
+    // Controls derived from CCoeControl, handled in a
+    // container class
+    iExampleControlContainer-&gt;HandleResourceChange( aType );
+    //Must not call this if the components are on the control stack
+    //iView-&gt;HandleResourceChangeL( aType );
+    }
+</codeblock>
+<p>If <parmname>iExampleControlContainer</parmname> is added to the control
+stack, it will get its <parmname>HandleResourceChange()</parmname> called
+when a layout is switched and there is no need to call it explicitly. </p>
+<p>For a reference design of a layout-aware application using a custom
+UI, refer to the <i>S60 Platform: Scalable Screen-Drawing Example</i> available
+for download from <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/c5b4228b-992c-4636-8f48-753040760391/S60_Platform_Scalable_Screen_Drawing_Example_v1_3_en.zip.html" scope="external">Forum Nokia</xref>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e162344_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD27A452-8B0F-5C6D-A2E6-FC21145468B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DD27A452-8B0F-5C6D-A2E6-FC21145468B6" xml:lang="en"><title>Message Server and Store Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section lists the tasks that can be performed by client applications using the services provided by the Message Server and Store. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD3411FE-D95B-5153-8C90-442618920E20.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DD3411FE-D95B-5153-8C90-442618920E20" xml:lang="en"><title>How
+to reserve space in a fixed flat array</title><shortdesc>To be sure that there is sufficient space available to add new
+elements to a fixed flat array, you can use the <codeph>SetReserveL()</codeph> function
+to pre-allocate memory.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When adding elements to a flat array of elements having the same length
+(a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> type) the array buffer may be
+re-allocated to accommodate the extra elements. This can fail for lack of
+memory.</p>
+<p>If it is important to guarantee that the process of inserting elements
+cannot fail at the time of insertion, then the necessary space in the array
+buffer should be reserved in advance. This allows any out of memory situation
+to be handled before starting to add elements to the array.</p>
+<p><codeph>SetReserveL()</codeph> reserves sufficient space to accommodate
+the required number of elements, in this case ten. </p>
+<codeblock id="GUID-CF5FED7D-52D9-5247-8E25-DDD5813474E4" xml:space="preserve">CArrayFixFlat&lt;TElement&gt;* fixflat;
+fixflat = new (ELeave) CArrayFixFlat&lt;TElement&gt;(3);
+...
+fixflat-&gt;SetReserveL(10);</codeblock>
+<p>If the array already contains five elements, then another five elements
+can be added to the array and be guaranteed not to fail for lack of memory.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e15512_href.png has changed
Binary file Symbian3/SDK/Source/GUID-DD6CB072-E152-4683-83B3-DB4BBFD6C4B6_d0e38484_href.png has changed
Binary file Symbian3/SDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e337199_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD7D33BD-0DDB-584C-9362-AEECFA1EA9A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DD7D33BD-0DDB-584C-9362-AEECFA1EA9A7"><title>makefile</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>makefile</codeph> <codeph> ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) </codeph> [ <varname>platform</varname> ] [ <varname>program</varname>] </p> <p>This command creates the makefiles for each project within your component, via <filepath>makmake</filepath>.</p> <p>To generate the makefiles, <filepath>makmake</filepath> is invoked with the <codeph>-d</codeph> switch, which causes the makefiles to be created in a subdirectory of <filepath>epoc32\build\</filepath>.</p> <p>The makefiles are always created with this command, regardless of whether the corresponding <filepath>.mmp</filepath> files have been changed or not.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49" xml:lang="en"><title>Dialog
+architecture</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Dialog architecture refers to a case where the dominant model for views
+in the application is that of dialogs. One particular
+case example of this is when the main view is run as a dialog. Multipage dialogs can
+be used to give a set of views in conformance with the Symbian UI concept.</p>
+<note>
+<p>Nested dialogs can use quite a lot of stack space if not written carefully.</p>
+</note>
+<p><draft-comment time="2007-03-07T11:30">Note to reviewers: We plan to
+develop this section further in future releases of the CDL.</draft-comment></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-DD8BFFF1-15C7-59B0-A107-C5CC90DBF4CC" xml:lang="en"><title>Pausing
+and Resuming a Tone </title><shortdesc>The <apiname>CMMFDevSound::Pause()</apiname> function pauses the
+play tone state. If the <apiname>CMMFDevSound::Resume()</apiname> function
+is supported, you can then use it to continue playing.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>You can pause and resume tones played by calling any of the following
+functions:</p><ul>
+<li><p><xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-0849016F-D457-3521-A53A-85023D8561B8"><apiname>CMMFDevSound::PlayToneL(TInt,const TTimeIntervalMicroSeconds
+&amp;)</apiname></xref> plays a single tone. </p></li>
+<li><p><xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D2C197B2-BB55-3B46-8F4D-FEDEE846B166"><apiname>CMMFDevSound::PlayDualToneL(TInt,TInt,const TTimeIntervalMicroSeconds
+&amp;)</apiname></xref> plays a dual tone. </p></li>
+<li><p><xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-3E9E0095-DC9A-3ABF-90E9-1B2ED469BBC4"><apiname>CMMFDevSound::PlayDTMFStringL(const TDesC &amp;)</apiname></xref> plays
+a DTMF (Dual and Multi-Frequency) tone </p></li>
+<li><p><xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-2B48CD01-DBD9-3669-8F79-0812FA03B0D3"><apiname>CMMFDevSound::PlayToneSequenceL(const TDesC8 &amp;)</apiname></xref> plays
+a sequence of tones. </p></li>
+</ul></context>
+<steps id="GUID-2D5F15E0-975D-5CF3-BB5D-60F108B0B48E">
+<step id="GUID-8F0EEDE1-9C9C-5C53-A359-33505C11D51C"><cmd>Check that the <codeph>Resume()</codeph> function
+is supported using the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-FF81EF26-C315-395C-99EC-CE54B4FFCAA4"><apiname>CMMFDevSound::IsResumeSupported()</apiname></xref> function.</cmd>
+</step>
+<step id="GUID-73852361-98B0-533C-AB9C-27D946707C6B"><cmd>If the resume function
+is supported, call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-D9C071E1-9F7D-39C5-8B6E-34321A46D3A9"><apiname>CMMFDevSound::Pause()</apiname></xref> function to
+pause the tone.</cmd>
+</step>
+<step id="GUID-8917B5C6-0176-573F-9A3E-64E89AB3632A"><cmd>Call the <xref href="GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD.dita#GUID-B3E9B015-1413-35A6-A316-D1C01C1001AD/GUID-263CCA90-A3AA-31A0-A62B-795E5F988A17"><apiname>CMMFDevSound::Resume()</apiname></xref> function
+to continue playing the tone. </cmd>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB" xml:lang="en"><title>Getting
+a Nearest Equivalent Language</title><abstract><p>In this example, the system language is <codeph>ELangCanadianEnglish</codeph> and
+there is no exact match of the resource file on the system. The application
+calls <xref href="GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930.dita#GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930/GUID-EA0690FF-419D-353C-BBED-95000E21F843"><apiname>BaflUtils::NearestLanguageFileV2()</apiname></xref> to get the closest
+match. There are three available resource files: </p> <ul>
+<li id="GUID-3CBF0BF9-04E1-5211-B2CF-53B40FEF7FF4"><p> <filepath>c:\FileMenu.rsc</filepath> is
+the language-neutral resource file. </p> </li>
+<li id="GUID-406A6D60-19B9-5233-BE6F-28EF10E70C1F"><p> <filepath>c:\FileMenu.r01</filepath> is
+for <codeph>ELangEnglish</codeph>. </p> </li>
+<li id="GUID-22C5F02D-2D36-5C51-BDFC-498BDB717059"><p> <filepath>c:\FileMenu.r10</filepath> is
+for <codeph>ELangAmerican</codeph>. </p> </li>
+</ul> </abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-10-1-1-8-1-5-1-4-1-5-1-8-1-5-1-3-1">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-10-1-1-8-1-5-1-4-1-5-1-8-1-5-1-3-1-1"><cmd/>
+<info><p>In the application, define a string with the neutral-language resource
+file name. </p> <codeblock id="GUID-438C8582-247E-5109-9E3B-ABC38818E6E2" xml:space="preserve">_LIT(KRscFilename, "C:\\FileMenu.rsc"); </codeblock></info>
+</step>
+<step id="GUID-9E49C0AD-8007-461A-A019-AC792ACA9997"><cmd/>
+<info><p>Create a session with the File Server to search the file system for
+available resource files.  <codeblock id="GUID-D1DD087E-ECE9-5BD6-984F-B427AA96E838" xml:space="preserve">RFs fileServerSession;
+CleanupClosePushL(fileServerSession);
+User::LeaveIfError(fileServerSession.Connect());</codeblock></p></info>
+</step>
+<step id="GUID-3D9B43BD-E641-441E-8795-0CEF53BD231C"><cmd/>
+<info><p>Construct a buffer to save a resource file name. The buffer takes
+the neutral-language resource file name as a input parameter to <xref href="GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930.dita#GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930/GUID-EA0690FF-419D-353C-BBED-95000E21F843"><apiname>BaflUtils::NearestLanguageFileV2()</apiname></xref>.
+It will be updated with a new value after the call.  <codeblock id="GUID-4CB6F88B-E26B-54C6-919A-BB812913947D" xml:space="preserve">TBuf&lt;256&gt; filename;
+filename.Copy(KRscFilename);</codeblock></p></info>
+</step>
+<step id="GUID-C785E5AD-EB3A-4A76-9D27-E564F5CB970D"><cmd/>
+<info><p>Define a <xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref> as a return parameter for the
+nearest equivalent language.  <codeblock id="GUID-5D7ABE60-B9D7-5A33-A219-A6144C539817" xml:space="preserve">TLanguage lang=ELangNone;</codeblock></p></info>
+</step>
+<step id="GUID-C3A49C71-5071-40DA-91D8-012CD47D3BD8"><cmd/>
+<info><p>Get the nearest language.  <codeblock id="GUID-B9F41C54-782A-5650-AAD9-EB3291B6E6BA" xml:space="preserve">BaflUtils::NearestLanguageFileV2(fileServerSession, filename, lang);
+...</codeblock></p></info>
+</step>
+<step id="GUID-C8A8A118-B7F8-4F6D-AD9A-33FBD61D9C33"><cmd/>
+<info><p>Close the session with the File Server.  <codeblock id="GUID-DA7D701D-2BA6-536C-B4A2-3FDCA5DD23C3" xml:space="preserve">CleanupStack::PopAndDestroy (&amp;fileServerSession);</codeblock></p></info>
+</step>
+</steps>
+<result>       <p> The <codeph>filename</codeph> parameter is updated as <filepath>"c:\\FileMenu.r10"</filepath> which
+is the closest resource file for <codeph>ELangCanadianEnglish</codeph>. The <codeph>lang</codeph> parameter
+is returned as <codeph>ELangAmerican</codeph> (value 10) which is the nearest
+equivalent language. </p>     </result>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DDBE3874-60B0-5CAB-A782-294A32412C0B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DDBE3874-60B0-5CAB-A782-294A32412C0B" xml:lang="en"><title>Audio Component
+Framework Library</title><shortdesc>This section describes the Audio Component Framework library. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DDE06BD5-2515-59FD-B91F-4C78A768533D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DDE06BD5-2515-59FD-B91F-4C78A768533D"><title>-savespace</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option removes intermediate files created during the building of a project if the build is eventually successful. If the build fails, the intermediate files remain so that errors can be corrected and an incremental rebuild of the project version that failed to build can take place.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB" xml:lang="en"><title>Multimedia Framework Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Multimedia Framework component is a light-weight, multi-threaded plug-in framework for handling multimedia data. </p> </conbody><related-links><link href="GUID-3E341F9F-2635-589B-A59A-B999FE7DF9BE.dita"><linktext>Multimedia APIs and
+  Frameworks Collection</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DDF4EA2E-59D6-5FE0-9C61-C5A9CBD8D4FE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DDF4EA2E-59D6-5FE0-9C61-C5A9CBD8D4FE"><title>Multimedia Utility Library Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the Multimedia Utility Library component. </p> <section><title>Purpose</title> <p>The Multimedia Utility Library component provides shared utilities for multimedia and external components. This includes Content Access Framework (CAF) wrapper classes for accessing multimedia data that has restricted access. </p> </section> <section><title>Required background</title> <p>The <xref href="GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita">Multimedia APIs and Frameworks Overview</xref> provides an introduction to the Multimedia Utility Library and related components. </p> </section> <section><title>Architectural relationships</title> <p>The Multimedia Utility Library component interacts with the following components: </p> <ul><li id="GUID-DE0BEA08-2B59-529E-86A5-70DF98FBA7CE"><p>Multimedia Framework </p> <p>MMF audio and video clients who wish to play DRM protected content. </p> </li> <li id="GUID-77EBE973-869E-5643-A39E-3470D45734C5"><p>Content Access Framework </p> <p>The CAF provides services that enable agents to access DRM protected content. For more information, see <xref href="GUID-7EE46FD9-DC9E-5C1F-9AC5-48F5212AF0CA.dita">Content Access Framework</xref>. </p> </li> </ul> </section> <section><title>API summary</title> <p>The Multimedia Utility Library component includes the following APIs: </p> <table id="GUID-908F8297-DBB3-54D7-8993-8FCAECEAE6D5"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <b>Multimedia Shared Library</b>  </p> </entry> <entry><p>Shared utilities for DRM protected digital media. </p> <p>For more information, see <xref href="GUID-AAAC7887-93A8-5F8D-98D4-44FAD26C228A.dita">Multimedia Shared Library Overview</xref>. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The Multimedia Utility Library component is used for the following: </p> <ul><li id="GUID-92A95AAC-7002-5060-93EC-E6CCA39B3909"><p>Initialize DRM protected content for playing. </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio Client Overview</xref>  </p> <p><xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DE099071-8401-5DD0-B72A-672B307463A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DE099071-8401-5DD0-B72A-672B307463A2"><title>Porting with Zsh</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Zsh has no platform security capabilities, that is, it cannot directly access the private directories on a device. However, you can make use of two library functions from the static library (<filepath>copydatafile.lib</filepath>) to copy data between public and private directories: </p> <ul><li id="GUID-923D67FF-81DA-5EE1-BFE3-3D8219436EC6"><p> <codeph>static TInt CopyDataFile::CopyToPrivateL(TDesC&amp;
+             aFileName)</codeph>: This function copies data from the public directory (<filepath>c:\shellpub\&lt;SID&gt;</filepath> where <codeph>SID</codeph> refers to the Secure ID of the application) to the private directory. </p> </li> <li id="GUID-A615BD9B-90DF-5152-A20C-623225E9DCB9"><p> <codeph>static TInt CopyDataFile::CopyToPublicL(TDesC&amp;
+             aFileName)</codeph>: This function copies data from the private directory to the public directory (<filepath>c:\shellpub\&lt;SID&gt;</filepath> ). </p> </li> </ul> <p>These library functions can be linked to <xref href="GUID-00FFF2B3-F8E4-5CBF-B031-240D98BB2111.dita">External Programs</xref> to copy the data under a private directory to and from a public directory, <filepath>c:\shellpub</filepath>. Note that these functions are not part of Zsh; they are in a separate library and it is not mandatory to use them. </p> <p>Using these library functions, here is one way of copying data, so that it can be accessed with Zsh: </p> <ol id="GUID-44659080-B22F-5DC0-ADE3-916358577BA6"><li id="GUID-11871E6E-B602-5088-A904-630B15B9BF79"><p>To copy the files from public directory <filepath>c:\shellpub\&lt;SID&gt;</filepath> to <filepath>\private\&lt;SID&gt;</filepath>, call the <codeph>CopyToPrivateL()</codeph> function while you start the application. </p> </li> <li id="GUID-40192D29-FAE0-50F5-9E41-2E80C6623658"><p>As the <filepath>c:\shellpub</filepath> directory is public, you can view or modify files in it from Zsh. </p> </li> <li id="GUID-BF759BA2-19CE-5213-A00B-455B52EDFAFF"><p>Each application replicates its directory structure under <filepath>c:\shellpub</filepath> starting with <filepath>&lt;SID&gt;</filepath> so that they do not overwrite private files of the same name belonging to other applications. </p> </li> <li id="GUID-958AA6F4-4DC7-5BB7-A111-2ECBBEEC8A29"><p>To copy the files from <filepath>\private\&lt;SID&gt;</filepath> to a public directory <filepath>c:\shellpub\&lt;SID&gt;</filepath>, call the <codeph>CopyToPublicL()</codeph> function while you exit the application. </p> </li> </ol> <section><title>See also</title> <p><xref href="GUID-B5696711-C79B-5239-B587-33507BF2B3BE.dita">Supported Zsh Features</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e180054_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DE17BEA2-C821-50B8-9128-9C4D35D95599.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DE17BEA2-C821-50B8-9128-9C4D35D95599" xml:lang="en"><title>Array
+Implementation</title><shortdesc>Describes the features of arrays and the ways in which they are
+implemented.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>All arrays have an array buffer allocated from the heap. The implementation
+of this buffer and the way it is used depends on the specific type of array.</p>
+<p>In arrays of elements which all have the same length, the elements are
+contained within the array buffer itself.</p>
+<p>In arrays of elements with varying length, each element is contained within
+its own heap cell and the array buffer contains <i>pointers</i> to the elements.</p>
+<p>In packed arrays, the elements are contained within the array buffer. A
+packed array is an array of elements of varying length where the length information
+for an element precedes that element within the array buffer.</p>
+<p>Logically, an array buffer is linear but, physically, it can be organised
+either as a flat buffer or a segmented buffer.</p>
+<p>In general, you can choose between array classes which use a flat buffer
+and array classes which use a segmented buffer. The choice depends on how
+the array is to be used.</p>
+<p>A segmented array buffer is implemented using a <codeph>CBufSeg</codeph> object.</p>
+<p>A flat array buffer is implemented either:</p>
+<ul>
+<li id="GUID-56BE93C2-0A0A-50DD-807C-4F25A2B6981D"><p>directly by the array
+as a piece of linear memory.</p> </li>
+</ul>
+<p>or</p>
+<ul>
+<li id="GUID-2165BEC5-BF75-5E0D-8ED0-074FF23A390A"><p>using a <codeph>CBufFlat</codeph> object.</p> </li>
+</ul>
+<p>The first type is a simple and efficient implementation but has some restrictions
+on the size of an array element and is limited to holding elements which have
+the same length. The second is a more general implementation and is only limited
+by the available memory.</p>
+<section id="GUID-1A671F26-FA1C-4943-B6FD-43F3FD831464"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e303230_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e334283_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DE9CB4F7-5129-5450-A6D6-9B0BA253FC81.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DE9CB4F7-5129-5450-A6D6-9B0BA253FC81" xml:lang="en"><title>Plug-in User's Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Plug-in users instantiate and use the implementations. They need to have a comeplete knowledge of using the plug-in framework. The plug-in users also need to a follow an explicit memory cleanup procedure to ensure the handles held on unused plug-in implementations and their associated DLLs are closed.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DE9E76F8-AE17-5962-A2BB-5006C6AB5C82.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DE9E76F8-AE17-5962-A2BB-5006C6AB5C82" xml:lang="en"><title>How
+to expand the array</title><shortdesc>An array can be expanded by using the ExpandL() function.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><codeph>ExpandL()</codeph> constructs a new element at position 1 within
+a <codeph>CArrayFixFlat&lt;class T&gt;</codeph> array. In this example, the new
+element inserted at position 1 is a <codeph>TElement</codeph> type object,
+constructed using the <codeph>TElement</codeph>  <i>default constructor</i>.
+It is essential that a default constructor exists before using this function.</p>
+<codeblock id="GUID-28F9E1A5-363F-54D5-959C-E713C274FA4B" xml:space="preserve">CArrayFixFlat&lt;TElement&gt;* fixflat;
+fixflat = new (ELeave) CArrayFixFlat&lt;TElement&gt;(8);
+...
+fixflat-&gt;ExpandL(1);</codeblock>
+<p>Use <codeph>ExtendL()</codeph> to append the newly constructed <codeph>TElement</codeph> at
+the end of the <codeph>fixflat</codeph> array.</p>
+<codeblock id="GUID-610214F1-DDE4-5978-91FC-52FFDC9701B4" xml:space="preserve">fixflat-&gt;ExtendL();</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902"><title>PAN Profile Overview</title><shortdesc>The Bluetooth PAN Profile API supports standard IP-based network services deployed over the Bluetooth transport layer. It is supported from Symbian OS version 8.1 onwards. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-0066861F-2219-55ED-8BCA-9E7FDB7B3B68"><title>Purpose</title> <p>The Bluetooth PAN Profile API supports standard IP-based network services deployed over the Bluetooth transport layer. It is supported from Symbian OS version 8.1 onwards. </p> <p>The Personal Area Network (PAN) profile is designed to make a Bluetooth network simulate an ethernet, from an application's perspective. Symbian OS supports only one active PAN at a time. Each remote device that connects to the PAN device for networking purposes will be merged into the same active PAN. </p> <p>Symbian OS provides support for a PAN agent to assume the role of PANU (User), PAN-GN (Group ad hoc Network) or PAN-NAP (Network Access Point). </p> <p>The Symbian PAN implementation is integrated into the Symbian networking framework enabling IP applications to run on a Bluetooth network. </p> </section> <section><title>Required background</title> <p>You need to be familiar with the <xref scope="external" href="http://www.bluetooth.com/NR/rdonlyres/279DC460-295E-42ED-8952-61B723620884/984/PAN_SPEC_V10.pdf">PAN Profile specification</xref>. </p> </section> <section id="GUID-55A48DCA-3D08-58F7-8243-BD7D9FC03987"><title>Key concepts and terms</title> <dl><dlentry><dt>Personal Area Network (PAN)</dt> <dd><p>A PAN is an ad-hoc network of devices communicating on a standard network configuration, over a Bluetooth radio connection. A PAN may have anywhere from 2 to 8 participating member devices. </p> <p>A PAN is not the same as a piconet. Where a piconet is any ad-hoc networking of devices over a Bluetooth connection for the purposes of sharing data or services, like when you pair your phone to your Bluetooth hands-free kit, a PAN deals specifically with networking resources. </p> </dd> </dlentry> <dlentry><dt>PAN Profile</dt> <dd><p>The Bluetooth specification identifies several profiles including the Bluetooth Personal Area Networking (PAN) profile. The PAN profile simplifies the now deprecated Bluetooth LAN Access and Dial-up Networking profiles by reducing the number of layers in a network Bluetooth connection. </p> <p>The PAN profile identifies certain configuration and setup details of a participant of the network, including the PAN host. If a device wants to join a PAN it must support and be able to be configured according to the requirements of the profile in use. For more general information about Bluetooth profiles see <xref href="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita#GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7/GUID-D7338D15-E269-54A5-B4E1-D5F0AACA9F32">Introduction to Bluetooth Profiles</xref>. </p> </dd> </dlentry> <dlentry><dt>PAN profile roles</dt> <dd><p>Typical PAN profile roles include the following: </p> <ul><li id="GUID-DA4229AD-A8CA-57A8-99D6-4123B2D37668"><p>PANU </p> </li> <li id="GUID-0E79426A-FA34-512D-BF93-6007D423FD04"><p>PAN-GN </p> </li> <li id="GUID-E616B1D1-666D-5B34-8DF6-3534BBF63E02"><p>PAN-NAP </p> </li> </ul> <p>PANU (User) acts as a client member of a PAN-GN (Group ad hoc Network) or a PAN-NAP (Network Access Point). Any device in either the PAN-GN or the PAN-NAP role acts as a server. </p> </dd> </dlentry> </dl> </section> <section id="GUID-A0BFEBD0-C828-56E2-94FA-FE0C0AF3EB84"><title>PAN Roles</title> <p>The PAN Profile roles are described below: </p> <p><b>PANU </b> </p> <p>A Bluetooth enabled device seeking entry into a network or participating in a peer-to-peer (one on one) connection assumes the PANU role, thus becoming a client member of the piconet. </p> <fig id="GUID-985136FB-9E35-5DD4-99A6-AE7D8FDDF21C"><title>
+                PANU to PANU connection 
+             </title> <image href="GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e370338_href.jpg" placement="inline"/></fig> <p><b>PAN-GN</b> </p> <p>A PAN-GN device assumes the role of a forwarding node or host and the attached PANU devices act as clients, networking up to a maximum of seven PANUs. The wireless network is formed without the need of additional hardware like a hub or router as in the case of a conventional cabled network. </p> <p>Group Ad-hoc Network (GN) is a temporary, ad hoc network of devices in proximity for sharing information and services. It is called ad hoc because of its on-the-fly or transient nature and can include up to eight (including the host) available Bluetooth-enabled devices in the immediate vicinity, that are willing to participate. </p> <p>The device that initiates the network - in this case the PAN-GN - becomes the host or controller. Correspondence in a PAN between the clients is routed through the PAN-GN device (host) in both one-to-one and one-to-many cases. </p> <p><b>PAN-NAP</b> </p> <p>A PAN-NAP device plays the role of a proxy, bridge, or a router between an existing network say a LAN or the Internet and Bluetooth-enabled devices. The PAN-NAP device takes up to seven active wireless clients. The NAP device acts as a bridge between PANU devices or bluetooth networks and other networks for routing ethernet packets. The Symbian OS PAN-NAP role allows only a single PANU client access to the uplink for the external network. </p> <fig id="GUID-6EC523C3-FD92-530E-A8F4-F19AB82419A0"><title>
+                PAN-NAP, bridging networks 
+             </title> <image href="GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e370366_href.jpg" placement="inline"/></fig> <p>The following image shows a Bluetooth-enabled laptop accessing the Internet through a mobile handset that is acting as a PAN-NAP device. The Bluetooth handset may provide the uplink via GPRS, WIFI, dial-up, or in some other way. </p> <p>For more information about please see the <xref href="GUID-0DBB2379-6FCB-5D1D-AE5A-2DC7C498F479.dita">PAN NAP Role Guide</xref>. </p> </section> <section id="GUID-238F0831-514C-50DA-92D9-E2009580DA40"><title>Architecture</title> <p>The PAN Profile specification fits in between the application and the hardware abstraction layers. It is connected to and accessed through the Comms-Infras socket by the application. </p> <p>Initially, the connection preferences are set in CommDB through the code. The Bluetooth stack is then initialized. An <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref> instance are created as part of initiating an ESock session and the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> object opens the connection through the <codeph>RSocketServ</codeph> instance. <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-28A35F19-1B05-3922-8E80-36F00DF3DB65"><apiname>RConnection::Control()</apiname></xref> allows configuration of certain aspects of the PAN, for instance adding and deleting devices to/from the PAN. </p> <p>Intact ethernet payloads are transported with the BNEP (Bluetooth Network Encapsulation Protocol) underneath. The PAN profile interacts with the Bluetooth BB (baseband) and conveys the various roles that PAN network nodes would play. </p> </section> <section><title>Typical uses</title> <p>The following tutorials have been provided to help give licensee developers guidance when writing applications that make use of the PAN profile. </p> <ul><li id="GUID-747AB1CA-FD49-5451-86A3-49317DCDF951"><p> <xref href="GUID-91C4F00B-E241-57DC-8520-8C16A302C983.dita">Creating a Personal Area Network</xref>  </p> </li> <li id="GUID-25FA6A6C-1C7B-5BD9-AB67-E8DBFF438AA1"><p> <xref href="GUID-685AD682-10DC-553B-9C3A-04D0376138C4.dita">Adding a device to the PAN</xref>  </p> </li> <li id="GUID-2C74ECA0-469C-5701-AE89-D3BD9DA28957"><p> <xref href="GUID-197648C4-A42C-5769-82B7-F8BA510631D9.dita">Removing a device from the PAN</xref>  </p> </li> <li id="GUID-5E2ACA5F-84AD-5750-A550-E834E221C60E"><p> <xref href="GUID-50CDF6E0-C352-5771-8686-B551267C6BE6.dita">Closing the PAN</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6"><title>File Server Plugin Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>File server plugins can issue direct file server requests, interpret and modify inbound messages and change file and meta data. A compression plugin may need to intercept file read or file write requests which are sent from the client to provide a seamless user experience. This operation requires the modification of the data, position and length arguments that are sent from the client to the file server. </p> <p>There are some limitations to the file server plugin framework: </p> <ul><li id="GUID-1C02ECAE-A711-5E2A-8006-EC2D1BF5A859"><p>The file server plugin framework only operates on one client file at any time. However, a plugin itself can operate on any number of files during a single request from the client. </p> </li> <li id="GUID-F82C8E71-479B-5482-8234-C5AD2AD05A91"><p>The file server plugin framework does not enable the compression or encryption of whole volumes. If access to the whole media volume is needed use a <xref href="GUID-983F0ABD-470C-51C3-B6AE-1B1AA55AB4A2.dita">file server extension</xref> rather than a plugin. </p> </li> <li id="GUID-386C0911-30EF-56B0-BD3B-4BC97A7CEFA3"><p>File modification plugins cannot operate on demand paged executables. Demand paging does not use the file server, so the plugin framework cannot be used to encrypt/process the executable. </p> </li> </ul> <p> <b>Note</b>: The improved framework will not prevent deadlock with existing plugins. Plugins that currently issue <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> requests must be migrated to the new APIs to prevent deadlock. Follow the guidelines within the <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita">plugin implementation tutorial</xref>. </p> <ul><li id="GUID-0A5ECCEA-CD70-528D-8880-463CA77D797B"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-8B5B325D-D88C-55A7-9684-C2DCF81FCD79">Plugin type</xref>, </p> </li> <li id="GUID-40202D9E-C136-55BB-A5A1-DF64971B99D1"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-C76B06C8-DEDC-57AC-A510-3DD1E232241A">Architecture</xref>, </p> </li> <li id="GUID-60C8A1F1-6BE6-59A3-8F33-BD7FBFF9FB59"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-6234893D-A1C8-5870-9761-9EA2BD6909F0">Plugin order</xref>, </p> </li> <li id="GUID-20D4D10F-5E92-5FE3-A89C-DAF45E52EB0B"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-DB21C0FD-46F8-5E4F-9288-69AE8609482B">Drive selection</xref>, </p> </li> <li id="GUID-91E1927C-3AA6-5594-8238-EA7B590278B2"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-50F7CD3A-A051-5498-8886-B4501523FD1D">Interception of file server requests</xref>, </p> </li> <li id="GUID-59EB5503-3D02-5E2D-80A4-A20EA8364D81"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-0B7B373D-41ED-5C91-ACC4-393A8669815A">Security</xref>. </p> </li> </ul> <section id="GUID-8B5B325D-D88C-55A7-9684-C2DCF81FCD79"><title>Plugin type</title> <p>There are two different types of file server plugins: </p> <ul><li id="GUID-0FBE9E75-D164-5BCC-B00A-A5A76DBD200C"><p>Observer plugins - intercept requests but do not modify file data or associated meta data. </p> <p>Examples of observer plugins are those for virus scanning or logging. </p> </li> <li id="GUID-69708845-9C79-5C19-B758-AEF8F8A693E0"><p>Modifier plugins - intercept requests and modify the data or associated meta data of the target files or directories.. </p> <p>Examples of file modifier plugins are compression and encryption plugins. </p> </li> </ul> </section> <section id="GUID-C76B06C8-DEDC-57AC-A510-3DD1E232241A"><title>Architecture</title> <p>This section describes the structure of the plugin framework and the changes that have been made to the framework in v9.5: </p> <ul><li id="GUID-399FE2E3-6576-5F98-83A8-70B9F77C65B7"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-3D91570E-8939-557B-8E1E-3A3C5BD27A26">Threads and execution context</xref>, </p> </li> <li id="GUID-609612CB-E684-5BDA-88FC-16FFB71D70C2"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-71DC7464-0EF0-5F78-816E-24F73F5FCA12">Exclusive access</xref>, </p> </li> <li id="GUID-665C36D1-DDD3-5DA4-86A3-574DFDC38AFF"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-9C152BE3-9113-5A0C-8EE2-81ADD09BEAD2">Intercepting requests to the ROM drive</xref>, </p> </li> <li id="GUID-F06D0F56-40AA-5631-9686-BA955E8E263B"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-AA3990F3-52AB-5B14-8ED4-50CCA824AF84">Preventing deadlock</xref>. </p> </li> </ul> <p>The diagram below shows how plugins fit into the File Server software stack. </p> <fig id="GUID-EF5AECEC-9CB0-54B0-B6D2-46266B5FF49E"><title>
+             File Server Stack
+          </title> <image href="GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e237755_href.png" placement="inline"/></fig> <p> <b>Note</b>: More than one plugin can be loaded into the file server at the same time. A plugin is not aware of other plugins. </p> <p id="GUID-3D91570E-8939-557B-8E1E-3A3C5BD27A26"><b> Threads and execution context</b> </p> <p>The Symbian OS File Server has multiple threads. There is a thread for each drive in use and a main thread that receives the requests from clients and sends them to the drive threads. Synchronous drives, however, do not have their own drive thread; requests for these are processed by the main thread. There is also a separate thread for processing session disconnect requests. </p> <p>Each plugin also has its own thread for processing requests. Requests are dispatched to the plugin thread associated with the request's drive before they are dispatched to the drive thread. This is discussed in more detail in <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-50F7CD3A-A051-5498-8886-B4501523FD1D">interception of file server requests</xref>. </p> <p id="GUID-71DC7464-0EF0-5F78-816E-24F73F5FCA12"><b>Exclusive access</b> </p> <p>Prior to Symbian OS v9.5, when a client application opens a file for exclusive write access, no other clients could access the file until the client closed its associated subsession. This also applied to plugins that needed to modify file data (as they are also clients of the file server). </p> <p>In Symbian OS 9.5+ plugins are now able to perform operations on files and directories irrespective of the mode in which the file has been opened. </p> <p>Operations are now able to use the same file handle as the originating request (run in the same context as the original request) so files opened for exclusive access can still be written to by a plugin wishing to modify the file. </p> <p id="GUID-9C152BE3-9113-5A0C-8EE2-81ADD09BEAD2"><b>Intercepting ROM drive requests</b> </p> <p>Prior to Symbian OS v9.5, plugins could not intercept any requests to the ROM drive (Z) however, there is a requirement to be able to intercept requests on this drive to enable secure-load and logging plugins. Requests to drive Z can now be intercepted by plugins. See the tutorial for <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-89CF85BE-784F-5237-9F78-69D603B650C4">CFsPluginFactory</xref> for more details. </p> <p id="GUID-AA3990F3-52AB-5B14-8ED4-50CCA824AF84"><b>Preventing deadlock</b> </p> <p>The new framework allows a plugin to have direct access to file data without the need to issue new file server requests through the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>, <xref href="GUID-12AE154F-7741-38C0-ADFE-9784FCF5E516.dita"><apiname>RDir</apiname></xref> and <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> client APIs. In the pre-9.5 approach it was possible to reach deadlock if more than one plugin was present. </p> <p>The diagram below shows two plugins in the pre v9.5 framework. If both plugins issue new file server requests and if the plugins are not re-entrant safe this can lead to deadlock in the file server. </p> <fig id="GUID-01A69E82-BF01-520A-A8C5-927F1ED85E04"><title>
+                File server deadlock 
+             </title> <image href="GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e237829_href.png" placement="inline"/></fig> <p>The framework introduced in v9.5 prevents deadlock by allowing plugins to issue internal file server requests after intercepting a request by using the newly introduced <xref href="GUID-3C50CF63-9AF4-3F36-8B8F-3FBB613E1CAC.dita"><apiname>RFilePlugin</apiname></xref>, <xref href="GUID-2E871434-D08F-3275-AC55-260A9A78661A.dita"><apiname>RDirPlugin</apiname></xref> and <xref href="GUID-DE8D8017-6E9C-38CE-A023-98A53CDF7152.dita"><apiname>RFsPlugin</apiname></xref> APIs and not by using the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref>, <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> and <xref href="GUID-12AE154F-7741-38C0-ADFE-9784FCF5E516.dita"><apiname>RDir</apiname></xref> APIs. Internally issued requests are only dispatched to plugins mounted below the issuing plugin and the appropriate drive thread. </p> <p>The sequence of events for a typical plugin intercepting a file read request is illustrated below: </p> <fig id="GUID-E366027F-3112-520F-A118-4C048102749E"><title>
+                Read request intercepted by a plugin 
+             </title> <image href="GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e237865_href.png" placement="inline"/></fig> <p>The classes <xref href="GUID-3C50CF63-9AF4-3F36-8B8F-3FBB613E1CAC.dita"><apiname>RFilePlugin</apiname></xref>, <xref href="GUID-2E871434-D08F-3275-AC55-260A9A78661A.dita"><apiname>RDirPlugin</apiname></xref> and <xref href="GUID-DE8D8017-6E9C-38CE-A023-98A53CDF7152.dita"><apiname>RFsPlugin</apiname></xref> have been introduced to facilitate plugins with direct access behaviour on file and directory requests. These classes are analogous to the client-side <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>, <xref href="GUID-12AE154F-7741-38C0-ADFE-9784FCF5E516.dita"><apiname>RDir</apiname></xref> and <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> classes and have functions with similar or identical signitures. </p> <p>In order to perform requests on a file it is necessary to open a sub-session by calling either <xref href="GUID-EC8FDB25-3DD7-3F1C-9875-0FA9315AE9AC.dita"><apiname>AdoptFromClient()</apiname></xref> or <xref href="GUID-20D0D10F-3401-3F72-8AF6-DC35F6025DC2.dita"><apiname>Open()</apiname></xref>. <codeph>AdoptFromClient()</codeph> is used in order to open a sub-session with the file associated with the client’s request. Alternatively the <codeph>Open()</codeph> method can be used to open either a different file, or the file associated with the client’s request possibly with a different access mode. </p> <p>More than one file can be opened at any time by creating multiple instances of <xref href="GUID-3C50CF63-9AF4-3F36-8B8F-3FBB613E1CAC.dita"><apiname>RFilePlugin</apiname></xref>. </p> <p>The following example shows how to open many files from a plugin during a single request: </p> <codeblock id="GUID-AFCA6392-2414-591A-98C5-A9FC2C103755" xml:space="preserve">// Define the object
+RFilePlugin clientsFile(aRequest); 
+
+// Opens the file associated with the intercepted request
+Tint r = clientsFile.AdoptFromClient();
+User::LeaveIfError(r);
+TBuf&lt;20&gt; data;
+TInt64 pos = (Tint64)0;
+Tint length = 0;
+
+// Read the file
+r = clientsFile.Read(pos, data, length);
+User::LeaveIfError(r);
+
+// Open a second file
+RFilePlugin secondFile(aRequest);
+_LIT(KSecondName, ”D:\\myfile.txt”);
+r = secondFile.Open(KSecondName(), EFileRead);
+User::LeaveIfError(r);
+
+// Read from second file
+TBuf&lt;20&gt; data2;
+TInt64 pos2 = (Tint64)0;
+Tint length2 = 0;
+
+// Read the file
+r = secondFile.Read(pos2, data2, length2);
+User::LeaveIfError(r);
+
+// Close the files
+clientsFile.Close();
+secondFile.Close();</codeblock> <p><b>Issuing an internal file system request</b> </p> <p>An internal request can be marked as ‘Direct to Drive’. This allows requests that are generated by a plugin to be dispatched straight to the drive thread bypassing all other plugins which may be mounted below the plugin that issued the request. After being processed by the drive thread the request also bypasses the plugins between the drive thread and the plugin that the Direct to Drive request originated from. Once returned to the plugin that generated the request, the Direct to Drive request is complete and any other requests issued from the plugin are processed by plugins further down the plugin-stack in the normal manner. </p> <p>The last argument of the <xref href="GUID-3C50CF63-9AF4-3F36-8B8F-3FBB613E1CAC.dita"><apiname>RFilePlugin</apiname></xref> constructor of the classes <xref href="GUID-3C50CF63-9AF4-3F36-8B8F-3FBB613E1CAC.dita"><apiname>RFilePlugin</apiname></xref>, <xref href="GUID-DE8D8017-6E9C-38CE-A023-98A53CDF7152.dita"><apiname>RFsPlugin</apiname></xref> and <xref href="GUID-2E871434-D08F-3275-AC55-260A9A78661A.dita"><apiname>RDirPlugin</apiname></xref> is named <codeph>aDirectToDrive</codeph>. <codeph>aDirectToDrive</codeph> is a boolean value (<codeph>TBool</codeph>) to indicate that the request is Direct to Drive. The default value is <codeph>EFalse</codeph> indicating that the request is interceptable by plugins further down the plugin-stack. </p> </section> <section id="GUID-6234893D-A1C8-5870-9761-9EA2BD6909F0"><title>Plugin order</title> <p>The Plugin framework provides support for multiple plugins to be present and active. Plugins are arranged in a stack. Plugins intercept requests in the order they are arranged in the stack with the plugin at the top of the stack (at the smallest numerical absolute position) getting the first intercept. The order of plugins in the stack is therefore crucial to the correct operation of the file server when more than one plugin is active, especially when the plugins are modifier plugins (i.e when both modify the data or parameters of the requests). </p> <p>If two plugins are active and one of those is a virus scanner, for the virus scanner to operate correctly it must be the first plugin to intercept requests. This is so that the virus scanner can have first refusal to block any requests for files which it believes may not be safe for opening. If there is another plugin higher in the stack then this plugin could send Direct To Drive requests, for example, and would significantly reduce the virus scanning ability of the virus scanning plugin. </p> <p>Two mechanisms are provided that allow plugin authors to control the position of their plugins in the plugin stack these are Absolute position and Unique position. </p> <p id="GUID-5C258D67-C324-5FA4-894A-88532F925EFF"><b>Absolute position </b> </p> <p>Plugins can be inserted into the stack by specifying an absolute position at mount time. This absolute position is the index in the internal array of plugins in which the plugin should be mounted. The plugin at position 0 being the first plugin to be able to intercept requests. </p> <fig id="GUID-41EB2F58-407F-52C7-A40C-0E3858CF718B"><title>
+                Plugin stack showing absolute positions 
+             </title> <image href="GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e237989_href.png" placement="inline"/></fig> <p>The absolute position method is more appropriate for mounting plugins that operate regardless of their position in the plugin stack or when all of the plugins for a device are known and installed when manufactured. This method does not suit plugins that are added after manufacture where the dependencies of other available plugins is not known. If this is the case use the unique position method described below. </p> <p id="GUID-90FC1AD9-D709-5105-A445-0AA3D7BA85B7"><b>Unique position</b> </p> <p>Plugins can be ordered according to a unique position stored within the plugin. Unique position identifiers are defined by the manufacturer during the software validation/signing process. Unique positions are defined in the derived <xref href="GUID-8A3B2A79-05A6-3BD7-AEA9-02435476F45E.dita"><apiname>CFsPluginFactory</apiname></xref> class. See the description in <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-89CF85BE-784F-5237-9F78-69D603B650C4">CFsPluginFactory</xref>. </p> <p>The position value specifies the category and position of the plugin: </p> <table id="GUID-22362455-13BE-5A26-8750-A94E79941EF3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><tbody><row><entry><p> <b>plugin Type</b>  </p> </entry> <entry><p> <b>Unique Position Range</b>  </p> </entry> </row> <row><entry><p>File Observers </p> </entry> <entry><p> <codeph>0x20000000 - 0x2FFFFFFF</codeph>  </p> </entry> </row> <row><entry><p>File Modifiers </p> </entry> <entry><p> <codeph>0x40000000 - 0x4FFFFFFF</codeph>  </p> </entry> </row> </tbody> </tgroup> </table> <p>File Observers do not modify data so they are allocated a lower range of numbers placing them at the top of the plugin stack. File Modifiers modify the data stream so they are allocated a higher range placing them lower down the plugin stack. </p> <p> <b>Note</b>: a plugin has a unique position then do not specify an <xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-5C258D67-C324-5FA4-894A-88532F925EFF">absolute position</xref> when mounting it, otherwise the error <codeph>KErrNotSupported</codeph> is returned. </p> </section> <section id="GUID-DB21C0FD-46F8-5E4F-9288-69AE8609482B"><title>Drive selection</title> <p>A File Server Plugin can intercept requests for a specific drive or for all drives. A plugin that intercepts requests for all drives must filter requests that are not appropriate for some drives. Requests can be filtered within an overridden <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-97427151-C6E4-5FE4-8197-0D7C58EDB29F">CFsPlugin::Deliver()</xref> function. </p> <p>There are two ways to specify a drive: </p> <ul><li id="GUID-296E3A2E-5985-5E4B-96A2-D247D1FAA07C"><p>When the plugin is mounted. See <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-BED54BD9-2F3F-588E-854B-C28745C8F30A">mounting a plugin</xref>. </p> </li> <li id="GUID-080CD9C3-2BEA-5209-974A-910606EBF22A"><p>At run-time through the use of <xref href="GUID-8A3B2A79-05A6-3BD7-AEA9-02435476F45E.dita#GUID-8A3B2A79-05A6-3BD7-AEA9-02435476F45E/GUID-45A67073-5EF4-3966-A2FD-555B56C89284"><apiname>CFsPluginFactory::iSupportedDrives</apiname></xref>. See the tutorial for <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-89CF85BE-784F-5237-9F78-69D603B650C4">CFsPluginFactory</xref>. </p> </li> </ul> <p>If the drive is not specified then <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-61640192-646E-33DA-B186-5EE63B07A998"><apiname>RFs::MountPlugin()</apiname></xref> attempts to mount the plugin for all drives. If this behaviour is not supported by the plugin <xref href="GUID-F89DA3F0-2A48-3F9B-8F08-29350E92D0E4.dita"><apiname>KErrNotSupported</apiname></xref> is returned. </p> </section> <section id="GUID-50F7CD3A-A051-5498-8886-B4501523FD1D"><title> Interception of file server requests</title> <p>After a file server request has been initialised by the main file server thread it can be intercepted by a plugin. There are two types of intercept: </p> <ul><li id="GUID-288866F8-ABE5-5569-A70C-2C86B4F073B9"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-05F613B8-FF66-54B6-8D49-2BF92914E54E">pre-operation intercepts</xref>, </p> </li> <li id="GUID-E876E576-1E94-5F06-8305-22D620A82B6F"><p><xref href="GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita#GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6/GUID-59FD1CED-5A32-5F6E-A256-821A2783D065">post-operation intercepts</xref>. </p> </li> </ul> <p>Plugins can register for pre-intercepts, for post-intercepts or for both pre and post-intercepts. </p> <p id="GUID-05F613B8-FF66-54B6-8D49-2BF92914E54E"><b>Pre-operation</b> </p> <p>Pre-operation intercepts occur before the drive associated with a request processes it. In a file write request for example, the pre-intercept operations occur before data has been written to the file. Requests are passed down the plugin-stack from the file server towards the drive thread. </p> <p>When the main file server thread has initialised a request, the request is dispatched to the highest plugin in the stack. This plugin must have been mounted on the requested drive and registered to pre-intercept this type of request. See <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-BED54BD9-2F3F-588E-854B-C28745C8F30A">mounting a plugin</xref>. The request is dispatched by calling the plugin's <xref href="GUID-BC0DB991-EF52-3344-8E6A-F8060B75A189.dita#GUID-BC0DB991-EF52-3344-8E6A-F8060B75A189/GUID-2EACA8A8-D569-3D6A-9383-451587A65839"><apiname>CFsPlugin::Deliver()</apiname></xref> function. </p> <p>The <codeph>Deliver()</codeph> function runs in the context of the previous calling thread, this can be the main file server thread or a plugin thread. Override <codeph>CFsPlugin::Deliver()</codeph> to filter the request. If the <codeph>Deliver()</codeph> function has not been overridden then the request is dispatched for asynchronous processing by calling the base class <codeph>Deliver()</codeph>. See the <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-97427151-C6E4-5FE4-8197-0D7C58EDB29F">CFsPlugin::Deliver()</xref> tutorial section. </p> <p id="GUID-59FD1CED-5A32-5F6E-A256-821A2783D065"><b>Post operation</b> </p> <p>Post-operation intercepts occur after the drive associated with a request has processed it. In a file write request for example, the post-intercept occurs after data has been written to the file. Requests are passed from the drive thread back up the stack towards the client. </p> <p>When the drive thread has finished processing a request it dispatches it to the plugin lowest in the stack by calling the plugin's <xref href="GUID-C6F20230-3D6C-3392-B040-CF627534B930.dita"><apiname>Deliver()</apiname></xref> function. </p> <p><b> Filtering requests internally</b> </p> <p>The <xref href="GUID-F1B37142-1EEF-3777-82B1-303982B888EC.dita#GUID-F1B37142-1EEF-3777-82B1-303982B888EC/GUID-8EBEAD17-B03C-3DBA-9A47-0F7DB07785F9"><apiname>CFSPlugin::Deliver()</apiname></xref> function filters the request and decides what kind of action is neccessary in terms of the flow of the request through the plugin stack: </p> <ul><li id="GUID-3E8CAD7B-BE13-531E-A387-432F4CD463C9"><p> <xref href="GUID-1E025D93-3D66-3E88-830D-CBB3A471A777.dita"><apiname>KPluginMessageForward</apiname></xref> is returned if the intercept is pre-operation. The request is passed to the next plugin down the stack or to the drive thread if there are no more plugins. </p> </li> <li id="GUID-1FFEFFF4-3D5F-590F-8884-CA27B2B5B916"><p> <xref href="GUID-81C5F6A1-3FCA-33E5-99C6-7901D41BCBDE.dita"><apiname>KPluginMessageComplete</apiname></xref> is returned if the intercept is post-operation. The request is passed to the next plugin up the stack or if there are no more plugins to process the request it is passed to the main file server thread. </p> </li> </ul> <p>If the request requires processing by the plugin then the plugin's <codeph>Deliver()</codeph> function calls the base class <codeph>Deliver()</codeph> function and the request is dispatched to the plugin's thread for asynchronous processing. </p> <p>Asynchronous processing is carried out in the plugin's <xref href="GUID-8EF10689-68B7-391B-AD5C-4F51780165FF.dita"><apiname>DoRequestL()</apiname></xref> function. A plugin can only have a single <codeph>DoRequestL()</codeph> function which must handle both pre and post-intercepts. Plugin authors can use the <xref href="GUID-06E787C2-FAC1-36D2-9C64-11BDA1B656F1.dita"><apiname>IsPostOperation()</apiname></xref> function of the utility class, <xref href="GUID-A814151C-8AEC-3E16-8691-33174B64E36F.dita"><apiname>TFsPluginRequest</apiname></xref> to indicate whether the <codeph>DoRequestL()</codeph> is processing a request as a pre-intercept or post-intercept. See the description of <xref href="GUID-00764271-AD6B-5F41-AF72-843107EBF95F.dita#GUID-00764271-AD6B-5F41-AF72-843107EBF95F/GUID-14773530-7C15-52E2-A542-72A0B2163461">TFsPluginRequest</xref>. </p> <p>Once the asynchronous processing is complete the <codeph>DoRequestL()</codeph> function returns <codeph>KErrNone</codeph> and the request is passed to the next plugin down the stack by calling its <xref href="GUID-C6F20230-3D6C-3392-B040-CF627534B930.dita"><apiname>Deliver()</apiname></xref> function. If there are no lower plugins then the request is passed to the appropriate drive thread for processing. </p> <p>If the plugin intercepts a request in pre-operation and wants to complete the request on behalf of the client then the plugin can return <xref href="GUID-DCECEF73-9C33-3C14-951D-E75D89B21FBA.dita"><apiname>KErrCompletion</apiname></xref> to indicate that the request has been completed and that the request is now in post operation mode. The flow will then proceed to any previous plugins if mounted or directly back to the client otherwise. <xref href="GUID-DCECEF73-9C33-3C14-951D-E75D89B21FBA.dita"><apiname>KErrCompletion</apiname></xref> prevents any further plugins further down the stack from intercepting the request. </p> <p>When a plugin intercepts file read or file write and does an early completion (i.e. returns <xref href="GUID-DCECEF73-9C33-3C14-951D-E75D89B21FBA.dita"><apiname>KErrCompletion</apiname></xref> in pre-intercept) then the plugin author should call <xref href="GUID-A814151C-8AEC-3E16-8691-33174B64E36F.dita#GUID-A814151C-8AEC-3E16-8691-33174B64E36F/GUID-149E1448-63AA-3F08-A3A2-606D240A8927"><apiname>TFsPluginRequest::SetSharePos()</apiname></xref> to allow share position to be updated after early read/write completion. </p> </section> <section id="GUID-0B7B373D-41ED-5C91-ACC4-393A8669815A"><title>Security</title> <p>File server plugins are implemented as libraries that are loaded into the file server process at runtime. Therefore, plugins must have the same <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">platform security</xref> capabilities as the file server process, these are <xref href="GUID-2A022229-C333-3B0A-99A5-13CA0710025D.dita"><apiname>TCB</apiname></xref>, <xref href="GUID-E5C21B79-529B-397E-8A22-63612CA52869.dita"><apiname>ProtServ</apiname></xref>, <xref href="GUID-8DC76E7B-9EB3-3848-AD8D-3D519388A504.dita"><apiname>DiskAdmin</apiname></xref>, <xref href="GUID-ECCA7246-B2BA-3261-95C9-9E72C6EC51D4.dita"><apiname>AllFiles</apiname></xref>, <xref href="GUID-93881606-AA56-385F-A958-3957142BEFE3.dita"><apiname>PowerMgmt</apiname></xref> and <xref href="GUID-616F0C5B-D2C1-39D8-9BFC-53A2AEC7C850.dita"><apiname>CommDD</apiname></xref>. </p> <p>Any user side process that wishes to load and mount plugins must have the <codeph>DiskAdmin</codeph> capability. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E" xml:lang="en"><title>Known
+Issues</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-EB71EFD6-DBEC-4C0F-B9E5-3370204AE18A"><title>ARM RVCT compiler
+issues with STLport</title><p>Due to a defect in the ARM RVCT compiler versions
+2.2, 3.1 and 4.0, building STLport v4 or STLport-based applications, creates
+some invalid export entries in DEF files. To workaround this issue, perform
+the following steps:</p><ol>
+<li id="GUID-D5C91387-CF86-4D65-ACAF-05A5500DA090"><p>Use the GCCE compiler
+to generate the DEF file, if it is not available.</p></li>
+<li id="GUID-A0D36B39-ECEB-431A-80FD-6005542F4D7F"><p>Ignore the warnings
+generated by the ARM RVCT compiler.</p><note>When you ignore the warnings,
+do not freeze the invalid export entries in the DEF file using the ARM RVCT
+compiler.</note></li>
+</ol></section>
+<section id="GUID-DDE6596E-1A67-4219-8822-45A82C39DF0B-GENID-1-6-1-10-1-1-9-1-6-1-3-2">       <title>Use
+of Global Destructor</title>       <p>Symbian does not invoke destructors
+of global objects upon program termination. For example, in the code below,
+the destructor <codeph>~foo()</codeph> is not called upon program termination.
+At the moment, it is advised not to perform any important operations using
+destructors.</p><codeblock xml:space="preserve">#include 
+using namespace std; 
+class foo
+{
+public:
+foo()
+{
+cout &lt;&lt;"Entering foo\n"; 
+}
+~foo()
+{
+cout &lt;&lt;"Leaving foo\n";
+}
+};
+foo foo_bar; 
+int main(void)
+{
+return 0;
+}
+
+</codeblock>     </section>
+<section id="GUID-DDE6596E-1A67-4219-8822-45A82C39DF0B-GENID-1-6-1-10-1-1-9-1-6-1-3-3">       <title>Issues
+with <codeph>new</codeph> operator</title>       <p>Throwing <codeph>bad_alloc</codeph> or
+any object from new on ARMV5 platfrom crashes. RVCT reports an exception when <codeph>new</codeph> throws <codeph>bad_alloc</codeph>.
+The problem occurs even if the user throws any object from within an overloaded
+operator <codeph>new</codeph>. The following new signatures are affected:</p><codeblock xml:space="preserve">void *operator new(unsigned int aSize);
+void *operator new[](unsigned int aSize);
+</codeblock><p>The following code snippet is an example that depicts the problem:</p><codeblock xml:space="preserve">class Dummy
+{
+}; 
+void *operator new(unsigned int aSize)
+{
+void* __y = malloc(aSize);
+// try to simulate bad alloc
+if (__y == 0)
+{
+throw Dummy(); //this will result in a crash
+}
+return __y;
+}
+</codeblock><p>To implement user owned overloaded version of new, the user
+must implement them as class specific. The other way this could be achieved
+is by defining new similar to:</p><codeblock xml:space="preserve">void* operator new(size_t s,newarg) throw (std::bad_alloc)</codeblock><p>and
+invoking it as:</p><codeblock xml:space="preserve">Myclass* my = new(S60) Myclass()</codeblock> 
+   </section>
+<section id="GUID-DDE6596E-1A67-4219-8822-45A82C39DF0B-GENID-1-6-1-10-1-1-9-1-6-1-3-4">       <title>The <codeph>id</codeph> Member
+Issue</title>       <p>The <codeph>id</codeph> member variable of facet classes
+cannot be accessed directly, it has to be accessed via the <codeph>GetFacetLocaleId()</codeph> interface.</p><p>Following
+code snippet is an example that illustrates how to <codeph>uselocale::id</codeph> while
+writing an application on top of the Standard Template Library (STL). Declare
+a static method <codeph>GetFacetLocaleId()</codeph> instead of the member
+variable id when, defining a class <codeph>base_facet</codeph> inherited from <codeph>locale::facet</codeph> in
+a header file.</p><codeblock xml:space="preserve">//b_facet.h 
+class base_facet : public locale::facet 
+{ 
+public: 
+static locale::id; 
+GetFacetLocaleId(); // in place of static locale::id
+id; 
+};
+</codeblock><p>In the source file define the method <codeph>GetFacetLocaleId()</codeph>. </p><codeblock xml:space="preserve">//b_facet.cpp
+locale::id base_facet_id; 
+locale::id&amp; base_facet::GetFacetLocaleId()
+{ 
+return base_facet_id; 
+}
+</codeblock>     </section>
+<section id="GUID-0EBB7F0F-2C2D-4707-BD53-96DC40443CAF"><title>Interleaving
+Symbian and Standard C++ Code</title><p>The user must exercise caution while
+using <codeph>try</codeph> or <codeph>catch</codeph>, and <codeph>trap</codeph> while
+interleaving Symbian C++ and Standard C++ code. Adapter code is required to
+handover or suppress exception coming from the Standard C++ to Symbian C++
+code.</p><p>Following code snippet illustrates how to use the adaptor code.
+Adaptor code can be a part of DLLA.  </p><p><b>DLL A - Symbian C++ code</b></p><codeblock xml:space="preserve">void CDoIt::Doit()
+{
+   class foo *p = new __foo__();
+   p-&gt;bar();
+   delete p;
+};
+</codeblock><p><b>DLLB - Standard C++ code</b></p><codeblock xml:space="preserve">class foo {
+public:
+  foo(); //constructor
+  bar(); // throw exception
+};
+</codeblock><p><b>DLLC - Adaptor code</b></p><codeblock xml:space="preserve">class __foo__ {
+  foo *p;
+public:
+  __foo__();
+  bar();
+};
+
+void __foo__::__foo__()
+{
+   int err = 0;
+   try {
+      p = new foo();
+   } catch {
+     err = some error
+   }
+   User::LeaveIfError(err);
+};
+void __foo__::bar()
+{
+   int err = 0;
+   try {
+      p-&gt;bar();
+   } catch {
+     err = some error
+   }
+   User::LeaveIfError(err);
+};
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DF1C3E6D-9133-530B-B318-66F0E6CDB3AD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DF1C3E6D-9133-530B-B318-66F0E6CDB3AD"><title>Non persistent stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A non-persistent store does not have a root stream and does not support the notion of open and close. A non-persistent store exists for the life of the object which represents that store.</p> <p>A non-persistent store object cannot be discarded without losing all the data. </p> <p>The main type of non-persistent store is the buffer store, which holds all its stream data in a memory buffer.</p> <section><title>See also</title> <p><xref href="GUID-EEA5F7C6-8916-5FB9-8367-002F41A576D4.dita">Memory stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DF37DAC3-8B86-5674-B025-931F743ED888-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DF37DAC3-8B86-5674-B025-931F743ED888_d0e109814_href.png has changed
Binary file Symbian3/SDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e12840_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F" xml:lang="en"><title>Signal
+pane</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Signal pane displays the cellular signal strength indicator.</p>
+<fig id="GUID-3BFDF250-CAD4-4F6B-AC92-E8D9726CB661">
+<title>Signal pane (left)</title>
+<image href="GUID-E58FA02A-D721-42FC-941F-1D8E5BCD96BC_d0e53523_href.png" scale="40" placement="inline"/>
+</fig>
+<p>The indicator may also contain information about a packet data connection
+(such as GPRS) status.</p>
+<p>The Signal pane is not
+accessible to applications.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DF4C1226-E4D1-5701-BA55-8701754129D1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DF4C1226-E4D1-5701-BA55-8701754129D1" xml:lang="en"><title>Overriding
+the Charset when Reading Email Message Data</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to override the charset when reading email message
+data. </p>
+<p>If the email message is stored in 8-bit format, the email application can
+retrieve the data stored using a new charset that is set by it. </p>
+<section><title>Procedure</title><p><b>Messages stored as rich text </b></p><p>For
+retrieving the message body text that has been stored in 8-bit and rich text
+format with a new character set using the <codeph>RestoreBodyTextL()</codeph> function,
+complete the following steps: </p><ol>
+<li id="GUID-F9F5EBB4-C09B-40F1-BAE4-20DB495044F5"><p>Use the <codeph>TMsvId aMessageId</codeph> parameter of the message
+body text to get the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class. </p></li>
+<li id="GUID-E448097D-42F4-4C71-95A6-EC0A3B1AAFEE"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-78A5A0B1-58D8-392B-90C2-6F68B92F0BD1"><apiname>CMsvEntry::ReadStoreL()</apiname></xref> method to get the <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> class.</p></li>
+<li id="GUID-6B63A1C9-1BA5-458C-94F3-539FFDD35F3C"><p>Call the<xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-8825B8E5-0285-3F0B-965D-D67F0F767D1B"><apiname>CMsvStore::RestoreBodyTextL()</apiname></xref> method that
+takes <codeph>CRichText&amp; aRichTextBody</codeph> and TUint aCharsetOverride<codeph/> parameters.</p></li>
+<li id="GUID-95BBBF38-739A-44FB-8FE2-B3E10DB57DF1"><p>Pass the new charset, with which to retrieve the body text as<codeph> TUint
+aCharsetOverride</codeph> parameter.</p></li>
+</ol><p><b>Messages stored as plain text</b></p><p>For retrieving the message
+body text that has been stored in 8-bit and plain text format with a new character
+set using the RestoreBodyTextL() function, complete the following steps:</p><ol>
+<li id="GUID-52D0EB1B-E07B-4199-AEE3-E97B426C7E13"><p>Use the <codeph>TMsvId aMessageId</codeph> parameter of the message
+body text to get the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class.</p></li>
+<li id="GUID-104D76F3-BACD-4B3A-97CD-F9EA83730297"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita#GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49/GUID-78A5A0B1-58D8-392B-90C2-6F68B92F0BD1"><apiname>CMsvEntry::ReadStoreL()</apiname></xref> function to get
+the <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> class. </p></li>
+<li id="GUID-E8FBD78C-D146-486D-8E29-C4B3BD2CB7D5"><p>Call the <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita#GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE/GUID-E07EE775-D4D0-37B7-8693-4EF4291BC648"><apiname>CMsvStore::InitialisePlainBodyTextForReadL()</apiname></xref> function
+to get the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita"><apiname>CMsvPlainBodyText</apiname></xref> object.</p></li>
+<li id="GUID-6A86131B-98A8-427A-A94E-6594F44021B1"><p>Call the<xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita#GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F/GUID-DC734608-1B80-3B1F-975A-FB0645A2880B"><apiname> CMsvPlainBodyText::SetCharacterSetL()</apiname></xref> function
+with the new charset ID with which to retrieve the body text.</p></li>
+<li id="GUID-21F46292-7A8D-4078-B5FB-47F2EE21EF00"><p>Call the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita#GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F/GUID-7EE4AF2A-6DD6-399A-A9F6-6192107A9CA9"><apiname>CMsvPlainBodyText::NextChunkL()</apiname></xref> function
+or the <xref href="GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F.dita#GUID-6A4CAFB0-262A-3721-B91B-07F2C3B64B5F/GUID-623D0A28-59AD-37B4-A7C1-80A94BF3FDA3"><apiname>CMsvPlainBodyText::PreviousChunkL()</apiname></xref> function
+to get the body text in chunks.</p></li>
+</ol></section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-DF756D6C-1E03-4EC0-B074-09611D122359" xml:lang="en"><title>Storing
+location information on a mobile device</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p><xref href="GUID-BC8D1F02-3FBB-406A-80CE-5836E61EBD82.dita">Location information</xref> may
+be stored as database entries called <i>landmarks</i> that contain at least
+a name and a location.</p>
+<p>Typical use cases include:</p>
+<ul>
+<li><p>Sending location information that is stored according to
+the World Geodetic System (WGS 84) to another device.</p></li>
+<li><p>Finding sites within a set distance of a stored point.</p>
+</li>
+</ul>
+<note>
+<p>The SDK does not include a map API, and therefore you must use a third
+party API to display the location information you receive on a map. <draft-comment time="2009-04-21T13:48">Does this also apply to S60 5th Edition?</draft-comment></p>
+</note>
+<section id="GUID-10327A77-B899-4F7F-9F12-094855387BAB"><title>Saving location
+information on a mobile device</title>
+<p>To store location information on your mobile device:</p>
+<ol>
+<li id="GUID-820AF19E-FD11-46E6-A865-6CFF62AD5508"><p>Make use of
+the methods of the Landmarks API when constructing
+your application.</p>
+<itemgroup>
+<p>The <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCPosLandmarkDatabase.html" format="application/java-archive"><codeph>CPosLandmarkDatabase</codeph></xref> class is used for accessing the database with the landmarks
+information and the <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCPosLandmark.html" format="application/java-archive"><codeph>CPosLandmark</codeph></xref> class
+contains the location information.</p>
+<p>For detailed information on how to do this, see:</p>
+<ul>
+<li><p>Using landmarks database for
+a discussion of how to start accessing the database with the location information,
+including a structure diagram.</p></li>
+<li><p>Managing landmarks for
+code samples of opening, editing, and adding location information to a database</p>
+</li>
+<li><p>Listening to database events for
+possible events type passed to your application and code samples for implementing
+a listener</p>
+<itemgroup>
+<p>The TPosLmEvent class
+is used in listening for events.</p>
+</itemgroup>
+</li>
+</ul>
+</itemgroup>
+</li>
+<li id="GUID-8B69F55D-48B1-469B-83CA-31F0353DCBF0"><p>Make sure <codeph>eposlandmarks.lib</codeph> is
+accessible to your linker when compiling your application by including it
+in your .mmp file or by editing the project properties in your IDE, depending
+on your build environment.</p></li>
+<li id="GUID-09A43DDB-5BA1-470D-B5A3-5084D2BA124A"><p>Make sure
+you have the correct capabilities information set for your application, depending
+on your application you may need <codeph>LocalServices</codeph>, <codeph>NetworkServices</codeph>, <codeph>ReadDeviceData</codeph>, <codeph>ReadUserData</codeph>, <codeph>WriteDeviceData</codeph>, and <codeph>WriteUserData</codeph>.</p>
+</li>
+</ol>
+</section>
+<section id="GUID-8D41C21E-0334-4679-B4D2-709B96C34076"><title>Additional information
+on storing location information</title>
+<p>For more information see, <draft-comment time="2007-10-01T13:49">Question
+for the reviewers: Is there anything else that we could add here?</draft-comment></p>
+<ul>
+<li><p>API description for a description
+of the API and its class structure</p></li>
+<li><p>Using the Landmarks API for a
+general overview on how to create applications using the API</p></li>
+<li><p>For a reference example on searching and manipulating the
+information in the location database, see <codeph>LocationLandmarksRefAppForS60</codeph> in
+the SDK (<codeph>&lt;SDK installation directory&gt;\S60CppExamples\</codeph>)</p>
+</li>
+<li><p>For a reference example on how to use common UI components
+to work with landmark data, see <codeph>LocationLandmarksUIRefApp</codeph> in
+the SDK (<codeph>&lt;SDK installation directory&gt;\S60CppExamples\AutoAdaptedToTouchEx\</codeph>)</p>
+</li>
+</ul>
+</section>
+<section id="GUID-987E85BE-B14B-4248-853F-F7BC5EF48BE7"><title>Related Symbian
+APIs</title>
+<p>The Symbian platform also offers the following related
+APIs:</p>
+<ul>
+<li><p>Landmarks API for accessing
+the database</p></li>
+<li><p>Landmarks Database
+Management API for creating and deleting databases</p></li>
+<li><p>Landmarks Search API for
+allowing mobile devices users to search the database</p></li>
+<li><p>Landmarks UI Add/Edit API for
+allowing mobile device users to add and edit landmarks</p></li>
+<li><p>Landmarks UI Selector API for
+displaying and selecting landmarks</p></li>
+<li><p>Location Acquisition API for
+finding the location of a mobile device</p></li>
+<li><p><xref href="GUID-02EE9C85-5942-40F7-BF60-B5D8B04B9AA6.dita#GUID-02EE9C85-5942-40F7-BF60-B5D8B04B9AA6/GUID-15C32932-3088-4FC9-BE83-2EC00FCEB694">Communication</xref> for
+sending location information to other devices</p></li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E"><title>Introduction to Swizzles and deferred loading </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In complex applications involving a large network of objects, it may be desirable, and even necessary, to defer the loading of objects into memory from the store.</p> <p>It should, therefore, be possible to represent such an object in one of two ways:</p> <ul><li id="GUID-11F8C7C2-C67E-56A0-9F17-9068E69085FF"><p>by the stream ID of the stream containing the external representation of that object, if it is not in memory.</p> </li> <li id="GUID-07C65069-0F05-53D8-AFF8-DD539371CD6D"><p>by a pointer, if it is in memory (or has already been loaded into memory); the pointer points to the in-memory object.</p> </li> </ul> <p>A Swizzle is a device for handling this dual representation.</p> <p>A typical container type object, therefore, does not have a pointer directly to a contained object, but has a Swizzle which can represent that contained object <i>either</i> as a pointer <i>or</i> as a stream ID, as illustrated in the following diagram.</p> <fig id="GUID-F057540D-3613-538E-947F-04C414280A8F"><image href="GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e336934_href.png" placement="inline"/></fig> <p>A Swizzle can be considered as a lean, but efficient, container in its own right.</p> <p>The concrete Swizzle classes are templated; the template parameter defines the type of object which the Swizzle represents.</p> <p>There are two general concrete Swizzle classes:</p> <ul><li id="GUID-AB85BEFF-8377-566B-9073-5C9C3489F3DB"><p><codeph>TSwizzle&lt;class T&gt;</codeph> </p> </li> <li id="GUID-32CF088B-01FA-585B-9C1C-3DC73E83BE85"><p><codeph>TSwizzleC&lt;class T&gt;</codeph> </p> </li> </ul> <p>A <codeph>TSwizzle&lt;class T&gt;</codeph> represents a <codeph>&lt;class T&gt;</codeph> type object. Full access is available to the <codeph>&lt;class T&gt;</codeph> type object through the Swizzle.</p> <p>A <codeph>TSwizzleC&lt;class T&gt;</codeph> represents a <codeph>&lt;class T&gt;</codeph> type object. Access to the object is limited; in particular the object cannot be changed.</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788-master.png has changed
Binary file Symbian3/SDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e65751_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DFDDF0C5-0E66-4394-A746-7FE35EEA4E6A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-DFDDF0C5-0E66-4394-A746-7FE35EEA4E6A" xml:lang="en"><title>Switching
+views in the view architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5D19303A-8318-4F7B-84CF-FAAE630225FD"><title>Local switching</title>
+<p>To switch between views within an application, you can use <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html#65e2d009edf0f2f2678ff88788907683" format="application/java-archive"><parmname>CAknViewAppUI::ActivateLocalViewL()</parmname></xref>.</p>
+<p>An example implementation of switching between views in an application
+as a result of <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref> is as follows:</p>
+<codeblock id="GUID-4CC3D27C-CB0B-4BF2-AFEB-13CC054D509A" xml:space="preserve">case EMyViewAppCmdView1Cmd1:
+            {
+            // Switch to view 2            
+            AppUi()-&gt;ActivateLocalViewL(KView2Id);
+            break;</codeblock>
+<p>, where <parmname>KView2Id</parmname> is the UID for view 2 in the application,
+and is defined in another header filer in the application.</p>
+<p>A new view is activated first and the previous view is deactivated after
+that. This allows quick view switching to take place. When deactivating, all
+controls, including menus and dialogs, are also closed down.</p>
+<p>Each view may have its own menu system as defined in the <xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita"><parmname>AVKON_VIEW</parmname> resource</xref> structure. However, if the menu system owned by the application
+is to be used, its contents must be updated for the new view prior to switching.</p>
+<p>An example implementation is as follows:</p>
+<codeblock id="GUID-508F9B8E-7C24-4E8B-91FA-F0E596B91A29" xml:space="preserve">// Switch to a new menu system for the new view.
+iEikonEnv-&gt;AppUiFactory()-&gt;MenuBar()-&gt;
+    SetMenuTitleResourceId(R_MY_VIEW_ARCH_APP_VIEW2_MENU);
+// Now switch the view to view 2
+iAvkonViewAppUi-&gt;ActivateLocalViewL(TUid::KView2Id);
+</codeblock>
+</section>
+<section id="GUID-A8098599-D103-4DB6-B7BE-1E01AF10B88A"><title>Remote switching</title>
+<p>In remote view switching, an application initiates the remote target
+application to change its view. If the application is not running, it is started.</p>
+<p>In the application, call the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeAppUiClass.html#%3a%3aCCoeAppUi%3a%3aActivateViewL%28const%20TVwsViewId%20%26amp%3b%29" format="application/java-archive"><parmname>CCoeAppUi::ActivateViewL()</parmname></xref> function, giving <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/View_Server/TVwsViewIdClass.html" format="application/java-archive"><parmname>TVwsViewId</parmname></xref> containing the target application’s UID and the target view
+UID. </p>
+<p>Optionally, if the remote application view requires, give a message
+ID and the descriptor data, which the view needs for its initialization. The
+remote application view documentation publishes the required parameters.</p>
+<p>Note that the calling and target application are independent of each
+other. When the target application exits, it will not exit the calling application.
+Also, when the calling client exits after switching the remote view of the
+target application, it will not exit the target application.</p>
+<p>Remote view switching is a one-way request through the application framework
+from a calling application to a target application. The caller can send data,
+but the target application cannot pass data back through the framework. Of
+course, the calling application may pass a file path, which could be used
+for data exchange.</p>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-DFF9DFC5-1BE0-5CA2-A2B9-27FA2DECFF59.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,481 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-DFF9DFC5-1BE0-5CA2-A2B9-27FA2DECFF59" xml:lang="en"><title>Writing
+an Active Backup Client Tutorial</title><shortdesc>A backup client application is often referred to as a data owner
+as it owns the data. This section describes how to write an active backup
+client which works with the Backup Engine and the Backup Server for data backup
+and restore. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-B83C3258-BE3B-597F-A8EB-5598F059E2E3"><p>Before you start,
+you must understand: </p> <ul>
+<li id="GUID-909ACEA0-363B-585F-AAC7-D85706158930"><p><xref href="GUID-7FDD9FEC-5017-5E5D-A50A-5F343A3C7F6C.dita">Backup
+Engine Concepts</xref> introduce the backup and restore types. </p> </li>
+<li id="GUID-DB7C6BE8-A9A5-592F-BFD2-131FA7139BE2"><p><xref href="GUID-5CA933B9-7987-5DDE-AE12-B0D5AFD31451.dita">Symbian
+Backup and Restore architecture</xref> describes the two ways of data backup
+and restore. </p> </li>
+<li id="GUID-E1A1DC99-39BC-59AD-A2A9-0261D6E689EB"><p><xref href="GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita">Active
+Backup Client Architecture</xref> describes the components involved to do
+active data backup and restore. </p> </li>
+<li id="GUID-1FA3D484-3460-5A81-BD1E-52810746ECD8"><p><xref href="GUID-A81C65CF-CF4E-571C-8080-9D387F46AAD6.dita">Symbian
+Publish and Subscribe</xref> describes how to publish and subscribe events
+using properties. </p> </li>
+</ul> </prereq>
+<context id="GUID-06AB41B7-201A-5EB9-AFF2-1CF231B06118"><p>In an active backup
+and restore, the Backup Engine calls the active backup client to supply the
+data for the backup. Writing an active backup client means to: </p> <ul>
+<li id="GUID-FAAB2D8E-14AD-5866-9D13-26D1DD39EBBC"><p>Create a user defined
+class that has a data member pointer to <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref>. </p> </li>
+<li id="GUID-BB8DB868-66D9-5CE4-8CBD-0D9201365522"><p>Implement the <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-DB245BC3-2ADA-311D-8024-B40335D22822"><apiname>conn::MActiveBackupDataClient</apiname></xref> interface. </p> </li>
+</ul> </context>
+<steps id="GUID-7D9E4BEE-5BBB-55B1-AB2C-C47E176B0CE7">
+<step id="GUID-95BE7D7F-D355-5CC9-9A02-3351FBC8E709"><cmd/>
+<info>Write an active backup client (data owner) class which must subscribe
+for the <codeph>KUidBackupRestoreKey</codeph> property published by the backup
+server. </info>
+<info>When a backup server receives a request from a client (a host PC) for
+a backup or a restore, it reads backup registration files for a list of data
+owners (refer to step 3). It then calls the <codeph>CSBEClient::SetBURModeL()</codeph> function
+with the registered types (base or incremental, full or partial). This function
+signals start or completion of a backup or restore to all data owners. Data
+owners must subscribe the following publish and subscribe property: </info>
+<substeps id="GUID-29550A41-94C4-5F36-9175-B0FDF2E55483">
+<substep id="GUID-E291A40F-9573-52D7-833D-DDCA3F194B59"><cmd/>
+<info>Key–<codeph>KUidBackupRestoreKey</codeph> defined in the <filepath>epoc32\include\connect\sbdefs.h</filepath> header
+file. This key belongs to the <codeph>KUidSystemCategoryValue</codeph> category. </info>
+</substep>
+<substep id="GUID-774E7565-EB05-5302-B7C7-BD25F6CAFAE0"><cmd/>
+<info>Value–<codeph>TBURPartType</codeph> or <codeph>TBackupIncType</codeph>. </info>
+</substep>
+</substeps>
+<info>The backup client must check the value of the property (flag) on startup,
+in case the device is already in a backup or restore mode. A <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref> object
+can only be created once the publish and subscribe flag has transitioned into
+a backup or restore mode. The backup client can be deleted once the backup
+or restore operation has finished. This releases valuable system resources. </info>
+<info> <codeph>CActiveBackupClient::ConfirmReadyForBURL()</codeph> is called
+to indicate that the backup client is ready for the data supply to the Backup
+Engine. </info>
+<stepxmp><codeblock id="GUID-179BD485-939F-5D89-A123-55FDB8815140" xml:space="preserve">class CReferenceActiveDataOwner : public CActive
+    {
+    // Methods
+public:
+    static CReferenceActiveDataOwner* NewL();
+    ~CReferenceActiveDataOwner();
+    
+    // From CActive
+    void RunL();
+    TInt RunError(TInt aError);
+    void DoCancel();
+
+private:
+    CReferenceActiveDataOwner() 
+    void ConstructL();
+    void SubscribeToPSFlag();
+    void ProcessBackupStateL(TInt aBackupStateValue);
+
+    // Attributes
+private:
+    //Active Backup Client
+    CActiveBackupClient* iActiveBackupClient;
+    
+    //The publish and subscribe flag from the Backup Engine
+    RProperty iProperty;
+    
+    //Pointer to the callback implementation
+    CReferenceCallbackImplementation* iCallbackImpl;
+    };
+    
+/** Subscribe to the publish and subscribe flag.
+    Call RunL() when the flag changes.
+*/
+void CReferenceActiveDataOwner::SubscribeToPSFlag()
+    {
+    iStatus = KRequestPending;
+    iProperty.Subscribe(iStatus);
+    SetActive();
+    }
+
+/** Check the flag in case the data owner has been started for a backup or restore, 
+    or in case the publish and subscribe transition is missed.
+*/
+void CReferenceActiveDataOwner::ConstructL()
+    {
+    // Set up the property to catch the flag.
+    TInt backupStateValue = 0;
+    iProperty.Attach(KUidSystemCategory, KUidBackupRestoreKey);
+
+    // Process the mode change accordingly
+    iProperty.Get(backupStateValue);
+    ProcessBackupStateL(backupStateValue);
+
+    // Add to the active scheduler
+    CActiveScheduler::Add(this);
+
+    // Subscribe to the flag to catch transitions
+    SubscribeToPSFlag();    
+}
+
+/** Create the CActiveBackupClient and the callback implementation
+    based on the flag.
+@param aBackupStateValue the new backup state value
+*/
+void CReferenceActiveDataOwner::ProcessBackupStateL(TInt aBackupStateValue)
+    {
+    TInt type = aBackupStateValue &amp; KBURPartTypeMask;
+    
+    // Create the the CActiveBackupClient and the callback implementation if
+    // the device is in a backup or a restore mode.
+    if (type == EBURBackupFull || type == EBURRestoreFull ||
+        type == EBURBackupPartial || type == EBURRestorePartial)
+        if (iCallbackImpl == NULL)
+            {
+            iCallbackImpl = CReferenceCallbackImplementation::NewL();
+            }
+        if (iActiveBackupClient == NULL)
+            {
+            iActiveBackupClient = 
+                      CActiveBackupClient::NewL(iCallbackImpl);
+            }
+        }
+
+    // Confirm the readiness of the active backup client.
+    if ((type == EBURBackupFull || type == EBURRestoreFull) ||
+        ((type == EBURBackupPartial || type == EBURRestorePartial) &amp;&amp;
+         iActiveBackupClient-&gt;DoesPartialBURAffectMeL()))
+        {
+
+         .... // Things handled by a device vendor.
+
+        //Inform the Backup Engine that the client is ready for data supply.
+        iActiveBackupClient-&gt;ConfirmReadyForBURL(KErrNone);
+        }
+    else        
+        {
+        // CActiveBackupClient and the callback implementation 
+        // if it is not an active backup.
+        if (iActiveBackupClient != NULL)
+            {
+            delete iActiveBackupClient;
+            iActiveBackupClient = NULL;
+            }
+
+        // The callback implementation must be deleted after 
+        // the CActiveBackupClient is deleted.
+        if (iCallbackImpl != NULL)
+            {
+            delete iCallbackImpl;
+            iCallbackImpl = NULL;
+            }
+        }
+    }
+
+/** When the flag changes, RunL() is called.
+*/
+void CReferenceActiveDataOwner::RunL()
+    {
+ 
+    TInt backupStateValue = 0;   // re-set the flag value
+
+    // re-subscribe to the flag to monitor future changes
+    SubscribeToPSFlag();
+
+    iProperty.Get(backupStateValue);
+
+    // Process the mode change accordingly
+    ProcessBackupStateL(backupStateValue);
+    }
+
+...
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-E17042E5-A5FE-56DF-A36C-594B4B5451B2"><cmd/>
+<info>Implement <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-DB245BC3-2ADA-311D-8024-B40335D22822"><apiname>conn::MActiveBackupDataClient</apiname></xref> to write
+a callback handler. </info>
+<info>The callback handler prepares the data to the Backup Engine for a backup
+or a restore. For more information about each function, refer to the <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-DB245BC3-2ADA-311D-8024-B40335D22822"><apiname>conn::MActiveBackupDataClient</apiname></xref> API
+reference. The callback implementation must fulfill the following requirements: </info>
+<substeps id="GUID-90CAC68A-4EDF-5B09-865B-DDDA5128780A">
+<substep id="GUID-30B4E7CC-C5E2-5E37-B8B8-C110953D88FF"><cmd/>
+<info>The Initialise function is usually called before the actual backup or
+restore function is called. For example, <codeph>InitialiseGetBackupDataL()</codeph> is
+called before <codeph>GetBackupDataSectionL()</codeph>. The Initialise function
+gives a chance to a device vendor to prepare the data before the actual data
+supply. </info>
+</substep>
+<substep id="GUID-661B4417-F1E4-5000-AA64-13BAFDB43234"><cmd/>
+<info>In an incremental backup or restore, a snapshot is the dataset after
+each incremental backup or restore. If <codeph>MActiveBackupDataClient::AllSnapshotsSuppliedL()</codeph> is
+called, it means that all snapshots have been supplied to the <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref>.
+If <xref href="GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2.dita#GUID-169BB4E2-5B0E-3719-A7B8-A3C0AAA602E2/GUID-17E48B80-2421-3256-B8B4-A0FED424D54A"><apiname>conn::CActiveBackupClient</apiname></xref> does not receive a snapshot,
+it performs a base backup. </info>
+</substep>
+<substep id="GUID-03A009F5-7E05-5FBE-867A-13F8B93E66E5"><cmd/>
+<info>For a backup function, a <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> reference parameter
+named <codeph>aFinished</codeph> is passed as an argument. This indicates
+to the Backup Engine if all of the data for a backup is supplied. Setting
+this to <xref href="GUID-A759CA2D-8327-348F-9337-4886E619D920.dita"><apiname>EFalse</apiname></xref> causes the Backup Engine to repeatedly call
+the backup function for more data. </info>
+</substep>
+<substep id="GUID-174C6057-A621-542E-A1C2-0F3879B4291D"><cmd/>
+<info>For a restore function, <codeph>aFinished</codeph> is passed from the
+Backup Engine to indicate to the data owner if all of the restore data is
+supplied. The Backup Engine sets <codeph>aFinished</codeph> to <xref href="GUID-781E8158-805B-3784-8FED-D7A191822FC3.dita"><apiname>ETrue</apiname></xref> after
+the final call of the restore function. </info>
+</substep>
+<substep id="GUID-26C220A3-2B91-575F-BA73-C19AD7A836E0"><cmd/>
+<info>Any leaves in the callback are propagated over Inter-Processor Communications
+(IPC) to the Backup Engine and potentially to the PC as errors. For this reason,
+any internal calls must be trapped in the callback. </info>
+</substep>
+</substeps>
+<stepxmp><codeblock id="GUID-E20C5B20-8956-50AB-98A8-3FAF1B98B925" xml:space="preserve">class CReferenceCallbackImplementation :
+    public CBase,
+    public MActiveBackupDataClient
+    {
+    // Methods
+public:
+    static CReferenceCallbackImplementation* NewL();
+    ~CReferenceCallbackImplementation();
+
+    // The following functions are from the MActiveBackupDataClient  
+    void AllSnapshotsSuppliedL();
+    void ReceiveSnapshotDataL(TDriveNumber aDrive, TDesC8&amp; aBuffer, 
+                                TBool aLastSection);
+    TUint GetExpectedDataSize(TDriveNumber aDrive);
+    void GetSnapshotDataL(TDriveNumber aDrive, TPtr8&amp; aBuffer, 
+                            TBool&amp; aFinished);
+    void InitialiseGetBackupDataL(TDriveNumber aDrive);
+    void GetBackupDataSectionL(TPtr8&amp; aBuffer, TBool&amp; aFinished);
+    void InitialiseRestoreBaseDataL(TDriveNumber aDrive);
+    void RestoreBaseDataSectionL(TDesC8&amp; aBuffer, TBool aFinished);
+    void InitialiseRestoreIncrementDataL(TDriveNumber aDrive);
+    void RestoreIncrementDataSectionL(TDesC8&amp; aBuffer, TBool aFinished);
+    void RestoreComplete(TDriveNumber aDrive);
+    void TerminateMultiStageOperation();
+    TUint GetDataChecksum(TDriveNumber aDrive);
+
+    //The following two functions are for the proxy backup client only and 
+    // Symbian provides a default implementation for each function.
+    void InitialiseGetProxyBackupDataL(TSecureId aSID, TDriveNumber aDrive);
+    void InitialiseRestoreProxyBaseDataL(TSecureId aSID, TDriveNumber aDrive);
+    
+private:
+    CReferenceCallbackImplementation() {}        
+    CMyABData* iSnapshot;
+    CMyABData* iData;
+    TBool iProxy;
+    TInt iOffset;
+    TInt iSourceSize;
+    TUint iFillChar;
+    TSecureId iID;
+    };
+
+void CReferenceCallbackImplementation::AllSnapshotsSuppliedL()
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::AllSnapshotsSuppliedL()", 
+         iID.iId);
+    }
+    
+void CReferenceCallbackImplementation::ReceiveSnapshotDataL(
+                                           TDriveNumber aDrive, 
+                                           TDesC8&amp; aBuffer,
+                                           TBool /*aLastSection*/)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::ReceiveSnapshotDataL()", iID.iId);
+    // Create or append a buffer containing the snapshot
+    if (!iSnapshot)
+        {
+        iSnapshot = CMyABData::NewL(aDrive);
+        }
+
+    iSnapshot-&gt;AddDataL(aBuffer);
+    }
+    
+TUint CReferenceCallbackImplementation::GetExpectedDataSize(TDriveNumber /*aDrive*/)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::GetExpectedDataSize()", iID.iId);
+        
+    return iSourceSize;
+    }
+    
+void CReferenceCallbackImplementation::GetSnapshotDataL(
+                                           TDriveNumber /*aDrive*/,
+                                           TPtr8&amp; aBuffer,
+                                           TBool&amp; aFinished)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::GetSnapshotDataL()", iID.iId);
+    aBuffer.Append(KABTestSnapshot());
+    
+    aFinished = ETrue;
+    }
+    
+void CReferenceCallbackImplementation::InitialiseGetBackupDataL(TDriveNumber /*aDrive*/)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::InitialiseGetBackupData()", iID.iId);
+    iOffset = 0;
+
+    if (!iSnapshot)
+        {
+        iFillChar = 66;
+        }
+    else
+        {
+        iFillChar = 73;
+        }
+    }
+    
+void CReferenceCallbackImplementation::GetBackupDataSectionL(
+                                            TPtr8&amp; aBuffer,
+                                            TBool&amp; aFinished)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::GetBackupDataSectionL()", iID.iId);
+    
+    FillBuffer(aBuffer, aFinished);
+    }
+    
+void CReferenceCallbackImplementation::InitialiseRestoreBaseDataL(TDriveNumber aDrive)
+    {
+    __LOG("CReferenceCallbackImplementation::InitialiseRestoreBaseDataL()");
+
+    iData = CMyABData::NewL(aDrive);
+    }
+    
+void CReferenceCallbackImplementation::RestoreBaseDataSectionL(
+                                           TDesC8&amp; aBuffer,
+                                           TBool aFinished)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::RestoreBaseDataSectionL()", iID.iId);
+
+    // append a buffer containing the base data
+    iData-&gt;AddDataL(aBuffer);
+    
+    if (aFinished)
+        {
+        ValidateRestoredData();
+    
+        delete iData;
+        iData = NULL;
+        }
+    }
+    
+void CReferenceCallbackImplementation::InitialiseRestoreIncrementDataL(TDriveNumber aDrive)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::InitialiseRestoreIncrementDataL()", iID.iId);
+    if (!iSnapshot)
+        {
+        User::Leave(KErrCorrupt);
+        }
+
+    if (!iData)
+        {
+        iData = CMyABData::NewL(aDrive);
+        }
+    }
+    
+void CReferenceCallbackImplementation::RestoreIncrementDataSectionL(
+                                           TDesC8&amp; aBuffer,
+                                           TBool aFinished)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::RestoreIncrementDataSectionL()", iID.iId);
+
+    iData-&gt;AddDataL(aBuffer);
+    
+    if (aFinished)
+        {
+        ValidateRestoredData();
+    
+        delete iData;
+        iData = NULL;
+        }
+    }
+    
+void CReferenceCallbackImplementation::RestoreComplete(TDriveNumber /*aDrive*/)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::RestoreComplete()", iID.iId);
+    }
+    
+void CReferenceCallbackImplementation::TerminateMultiStageOperation()
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::TerminateMultiStageOperation()", iID.iId);
+    // We also don't do anything here until we start testing multipart?
+    }
+    
+TUint CReferenceCallbackImplementation::GetDataChecksum(TDriveNumber /*aDrive*/)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::GetDataChecksum()", iID.iId);
+    return 0;
+    }
+
+void CReferenceCallbackImplementation::InitialiseGetProxyBackupDataL(
+                                           TSecureId aSID, 
+                                           TDriveNumber /*aDrive*/)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::InitialiseGetProxyBackupDataL()", iID.iId);
+    __LOG2("[0x%08x]: Proxy data about to be requested for SID 0x%08x", iID.iId, aSID.iId);
+    iProxy = ETrue;
+    iOffset = 0;
+    
+    iFillChar = 80;        // 'P'
+    }
+
+void CReferenceCallbackImplementation::InitialiseRestoreProxyBaseDataL(
+                                            TSecureId aSID, 
+                                            TDriveNumber aDrive)
+    {
+    __LOG1("[0x%08x]: CReferenceCallbackImplementation::InitialiseRestoreProxyBaseDataL()", iID.iId);
+    __LOG2("[0x%08x]: Proxy data about to be restored for SID 0x%08x", iID.iId, aSID.iId);
+    iProxy = ETrue;
+    iData = CMyABData::NewL(aDrive);
+    }
+...</codeblock> </stepxmp>
+</step>
+<step id="GUID-FBC19F0B-1763-595C-BF4E-F6289AD6EFCA"><cmd/>
+<info>Create a backup registration file to set attribute values for the data
+owner application. </info>
+<info>The Backup Engine parses backup registration files to get the data own
+list. The list includes details of data owners and data for backup and restore. </info>
+<info>Create the file using a text editor and save it as <filepath>backup_registration.xml</filepath> under
+the private folder of the data owner application on the Symbian device. Refer
+to <xref href="GUID-9A6273D8-7797-5190-AFEC-1AD113980B84.dita">Backup Registration
+Files</xref> for more information. </info>
+<substeps id="GUID-08064C91-CC63-502F-807C-D1932C0D05DB">
+<substep id="GUID-D2C54ED8-54C5-564A-B5DF-66CC60F85630"><cmd/>
+<info> <codeph> process_name</codeph> is the name of the data owner application. </info>
+</substep>
+<substep id="GUID-20E42C15-0B8C-5302-8927-1ADB9231AC33"><cmd/>
+<info> <codeph>active_type is set</codeph> to <codeph>activeonly</codeph> for
+an active backup. </info>
+</substep>
+<substep id="GUID-595FE2CF-06C4-599F-9E70-B9B9CD6A71B5"><cmd/>
+<info> <codeph>supports_incremental</codeph> can be set to <codeph>false</codeph> to
+disable the incremental backup support from the active backup client. </info>
+</substep>
+</substeps>
+<stepxmp><codeblock id="GUID-0A5E0FBC-16FD-568A-8530-368101B28EBF" xml:space="preserve">&lt;!-- backup_registration.xml file for referencetestdataowner.exe --&gt;
+
+&lt;?xml version="1.0" standalone="yes"?&gt;
+
+&lt;backup_registration version="1.0"&gt;
+    &lt;active_backup process_name = "referencetestdataowner.exe"
+             active_type = "activeonly"
+                   requires_delay_to_prepare_data = "yes" &lt;!--deprecated--&gt;
+                   supports_incremental = "yes"&gt; 
+    &lt;/active_backup&gt;
+
+    &lt;restore requires_reboot = "no"/&gt;  &lt;!--Currently only support no--&gt;
+&lt;/backup_registration&gt;
+</codeblock><p>Finally, test the data owner application. The logging information
+appends to the <filepath>securebackup.txt</filepath> log file. To enable the
+log generation, the <filepath>C:\logs\connect</filepath> directory must be
+created on the device. </p> </stepxmp>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E0284006-9173-5BC5-A899-E0873CA1AE1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E0284006-9173-5BC5-A899-E0873CA1AE1F"><title>Native EXEs and LIBs vs. OE EXEs and LIBs</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The conventional way of defining the entry point for a Symbian platform executable is by including "<codeph>E32Main</codeph> " in the application source. Since Symbian OS v9.3, you can define the entry point for an executable by including "<codeph>main</codeph> " instead of "<codeph>E32Main</codeph> ". With this approach, Symbian developers may easily port their C/C++ code to Symbian platform with less changes to the original source. </p> <p>Symbian OS v9.3 and later releases provide an Open Environment (OE) to develop EXEs with the "<codeph>main</codeph> " entry point. The OE executables and libraries are identified by their <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref>, which can either be <codeph>STDEXE</codeph>, <codeph>STDDLL</codeph> or <codeph>STDLIB</codeph>. An OE EXE may choose to have a wide character entry point using the MMP keyword, <xref href="GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita">wcharentrypoint</xref>. </p> <p>Here is a list of important differences between native Symbian platform executables and OE executables: </p> <ul><li id="GUID-A9322D93-0A1E-5785-BE67-614B8B748AE0"><p>Native Symbian platform EXEs use "<codeph>E32Main</codeph> " entry point, whereas OE EXEs use "<codeph>main</codeph> " entry point. </p> </li> <li id="GUID-1AAD269D-6356-5815-ABCE-FAD04B8A0CDB"><p>The UIDs used to identify native Symbian platform EXEs and DLLs are different when compared to OE EXEs and DLLs. </p> </li> <li id="GUID-88201F59-70F4-553D-8469-788876C37746"><p>In a native Symbian platform executable, the functions and data symbols with <codeph>extern</codeph> linkage are exported only if <codeph>IMPORT_C</codeph> /<codeph>EXPORT_C</codeph> declarations are found in the header or source files. In a OE executable, all functions and data symbols with <codeph>extern</codeph> linkage are exported by default without <codeph>IMPORT_C</codeph> /<codeph>EXPORT_C</codeph> declarations in the header or source files. </p> </li> <li id="GUID-3DFF529C-D652-5815-BE51-9AA86450EFF0"><p>The libraries required by a native Symbian platform executable/library have to be listed explicitly in the MMP file, whereas for an OE executable/library they are included by default. </p> </li> <li id="GUID-C1CEB4E1-A4EC-52C9-9F32-AFB2F3C75CB7"><p>The native Symbian platform EXEs and DLLs does not have symbol lookup, whereas OE EXEs and DLLs support symbol lookup using <xref scope="external" href="http://www.opengroup.org/onlinepubs/009695399/functions/dlsym.html">dlsym</xref>. </p> </li> <li id="GUID-FA1C6B88-6D8A-5CB4-B4B2-98EA055B422C"><p>A native Symbian platform EXE, DLL or LIB must include the path to standard APIs in the <filepath>mmp</filepath> file. For an OE EXE, DLL or LIB the build system includes <filepath>${EPOCROOT}epoc32/include/stdapis</filepath> as the default path for header files. </p> </li> </ul> <p>The build system has been modified to support compilation of C++ source files with extensions “<filepath>.cc</filepath> ”, “<filepath>.cxx</filepath> ” and “<filepath>.c++</filepath> ”. This change is applicable to both OE and native Symbian platform executables and libraries. That is, from Symbian OS v9.3 onwards a native Symbian platform or an OE executable/library can be built using C++ source files with extensions “<filepath>.cc</filepath> ”, “<filepath>.cxx</filepath> ” and “<filepath>.c++</filepath> ”. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E049772D-A96F-592F-AF59-C9B69E8D24C1" xml:lang="en"><title>Using
+the extended notifier framework</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-41892CE3-A4CC-5761-9469-530D6D18EDFE"><title>The framework</title> <p>Notifiers
+allow components with no direct UI linkage to interact with the user via an
+interface such as a dialog box. For example, a low level component might want
+to warn the user about a low battery level. Typically, such a component would
+not have direct access, or knowledge of, a UI. The solution to this problem
+is provided by what are known as notifiers and the extended notifier framework.
+The UI element (the dialog box) is provided by the device's UI, for example
+UIQ and Series60, through what are known as notifier plug-ins. </p> <p>The
+extended notifier framework is a system that loads these plug-in DLLs from <filepath>Z\sys\bin\notifiers</filepath>. </p> <p>These
+DLLs are expected to export a single factory function at ordinal #1 that returns
+an array of notifiers. A special notifier target type is supported by makmake.
+The second Uid for notifiers should be 0x10005522. </p> <p>The behaviour of
+notifiers is supplied by providing an implementation of the <xref href="GUID-DE445C4B-22EF-3A1F-8A69-57CB703BFAD0.dita"><apiname>MEikSrvNotifierBase2</apiname></xref> interface
+. A notifier is associated with a channel and a priority. Priority is used
+to determine the order of activation if more than one notifier is activated
+at any time. Priority only affects notifiers on the same channel (e.g. a screen
+or LED). This means that two notifiers can be active at the same time provided
+that they are on different channels. </p> <p>The channel and priority used
+by all the notifiers in the system needs to be considered carefully to avoid
+them interfering with each other in unexpected ways. The <xref href="GUID-DE445C4B-22EF-3A1F-8A69-57CB703BFAD0.dita"><apiname>MEikSrvNotifierBase2</apiname></xref> derived
+class also needs to be implemented correctly. Notifiers run in the Uikon server
+thread and are accessed on the client side via <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita"><apiname>RNotifier</apiname></xref>.
+Note that if a notifier panics it will lead to a device reset. </p> </section>
+<section id="GUID-9322CFDB-D07E-54C3-86B1-13BFB082B175"><title>The factory
+function</title> <p>The factory function at ordinal #1 is expected to return
+an array of notifiers. The following is a typical implementation: </p> <codeblock id="GUID-F5B8C31B-110E-569A-BE9E-3986E94A506D" xml:space="preserve">EXPORT_C CArrayPtr&lt;MEikSrvNotifierBase2&gt;* NotifierArray()
+    {
+    CArrayPtrFlat&lt;MEikSrvNotifierBase2&gt;* notifiers=new CArrayPtrFlat&lt;MEikSrvNotifierBase2&gt;(5);
+       if (notifiers)
+        {
+        TRAPD(err, CreateNotifiersL(notifiers));
+        if(err)
+            {
+            TInt count = notifiers-&gt;Count();
+            while(count--)
+                {
+                (*notifiers)[count]-&gt;Release();
+                }
+            delete notifiers;
+            notifiers = NULL;
+            }
+        }
+    return(notifiers);
+    }
+</codeblock> <p>Note that ownership of the notifier array or its contents
+is not transferred to the framework until this function returns. To avoid
+memory leaks, all acquired resources must be freed if anything goes wrong
+part of the way through its processing. </p> <p>Calling <codeph>Release()</codeph> on
+a notifier should cause that notifier to free all of its resources, and as
+a minimum should call <codeph>delete           this;</codeph>. See <xref href="GUID-DE445C4B-22EF-3A1F-8A69-57CB703BFAD0.dita#GUID-DE445C4B-22EF-3A1F-8A69-57CB703BFAD0/GUID-CF772B65-7D65-3ADC-B566-9ED2A263942F"><apiname>MEikSrvNotifierBase2::Release()</apiname></xref>. </p> <p>Returning
+a <codeph>Null</codeph> value from this function causes the framework to leave
+with <xref href="GUID-64F6761A-4716-37C3-8984-FF18FC8B7B7D.dita"><apiname>KErrNoMemory</apiname></xref>. </p> <p>The <codeph>CreateNotifiersL()</codeph> function
+should be implemented as follows: </p> <codeblock id="GUID-15535A2D-A1F3-5A18-99B7-B2973BDFB255" xml:space="preserve">LOCAL_C void CreateNotifiersL(CArrayPtrFlat&lt;MEikSrvNotifierBase2&gt;* aNotifiers)
+    {
+    MEikSrvNotifierBase2* notifier;
+    notifier = CMyNotifierA::NewL();
+    CleanupStack::PushL(notifier);
+       aNotifiers-&gt;AppendL(notifier);
+       CleanupStack::Pop(notifier);
+    ... 
+    ...
+    // typically, repeat this procedure for as
+    // many notifiers as are implemented
+    // in the plug-in DLL.
+    }</codeblock> <p>Note the use of the standard Symbian platform technique
+of using the cleanup stack to hold pointers to allocated objects for as long
+as these objects have no owner; this prevents memory leaks. For this reason,
+avoid using a technique such as <codeph>aNotifiers-&gt;AppendL(CMyNotifierA::NewL());</codeph>,
+which, although shorter, will result in a memory leak if the <codeph>AppendL()</codeph> operation
+fails. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F" xml:lang="en"><title>The Symbian emulator build targets</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes distinctive aspects of building for the emulator targets. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e283775_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD"><title>Socket connection example</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This example shows the relationship that sockets, connections and subconnections have to each other. </p> <fig id="GUID-E53D154C-9B26-5404-BA85-9EF1572B17CD"><image href="GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e96763_href.png" placement="inline"/></fig> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E0C21636-657A-413F-A905-A08608B60768.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E0C21636-657A-413F-A905-A08608B60768" xml:lang="en"><title>Touch
+UI utilities API class structure</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The class structure consists of the class <codeph>CaknLongTapDetector</codeph>.
+The <codeph>MaknLongTapDetectorCallBack</codeph> interface is used for notifying
+clients about long tap events.</p>
+<fig id="GUID-9BC1E66F-A6EC-4976-BCDA-A80BD3B921DC">
+<title>Touch UI utilities API class structure</title>
+<image href="GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e50688_href.png" scale="70" placement="inline"/>
+</fig>
+<p>To receive long tap events in your application, implement the <codeph>MaknLongTapDetectorCallBack</codeph> interface.
+When the user makes long tap on the device screen, the framework sends events
+through this interface. Use the method <codeph>HandleLongTapEventL</codeph> to
+handle the events sent by the framework.</p>
+<p>You need to have a separate instance of this class for each client component
+using it to observe long taps in the component’s control area.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E0D10091-1F66-428A-919C-BE8C95DEACD1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E0D10091-1F66-428A-919C-BE8C95DEACD1" xml:lang="en"><title>Paragraph
+Styles</title><shortdesc>A style is a collection of format attributes which are based on
+the global format layers, and are uniquely identified by a name. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In addition, styles are characterized by an outline level, a type, and,
+optionally, by a style to use for the following paragraph. The outline level
+is used to determine which headings should be shown when in document outline
+view mode. The type, represented by a UID, is used to differentiate between
+the system-provided styles, which are built in to the word processor and cannot
+be deleted, and user defined styles, which may be deleted. By default, a paragraph
+style's type is initialized to <codeph>KUserDefinedParagraphStyleUid</codeph>. 
+ </p>
+<p>Another style type which may be encountered is <codeph>KNormalParagraphStyleUid</codeph>.
+This type is used to distinguish the Normal paragraph style from all other
+styles. This is necessary because the Normal paragraph style is not a <codeph>CParagraphStyle</codeph> object,
+but a <codeph>CParaFormatLayer</codeph>, and represents the global
+paragraph format layer upon which all styles are based.  </p>
+<p>Symbian supports paragraph styles only. Character styles are not supported.
+This means that a style must be applied to entire paragraphs, although both
+character and paragraph format attributes may be set in the style. Paragraph
+styles cannot be used in global text, and their use in rich text is optional.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E0D622CE-5D10-5C6E-9998-545C016575F0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E0D622CE-5D10-5C6E-9998-545C016575F0"><title>Basic SQL Example Application Overview</title><shortdesc>This application shows you how to create a simple Symbian SQL application. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title> Tasks covered by the example</title> <p>The Following tasks are shown in the example: </p> <ul><li id="GUID-F63B64DB-94AC-596D-8F18-7F652B56CEAE"><p>Create a database </p> </li> <li id="GUID-B3338C55-ABA8-5AE9-8B6B-FF3BB7AA726D"><p>Create a table </p> </li> <li id="GUID-2ADAD35F-514D-52AF-A0C1-F6A4FA3A40A2"><p>Populate a database </p> </li> <li id="GUID-E6638997-B2D7-5C7B-81CC-BA9C626E4421"><p>Query a database </p> </li> <li id="GUID-BF63F41C-6D1A-5DD3-A08F-DD6170F698CB"><p>Delete a table </p> </li> <li id="GUID-9FEE9803-EAB0-5C69-AB82-F97CFC6BCB4A"><p>Delete a database </p> </li> </ul> </section> </conbody><related-links><link href="GUID-B38EBDBA-2A30-5595-9639-6AE58C530DCB.dita"><linktext>Creating a Database</linktext> </link> <link href="GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita"><linktext>Creating a Table</linktext> </link> <link href="GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita"><linktext>Querying Databases:
+                Basic</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E10A3336-9C4C-59A5-B94F-6CECA92FFB9F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E10A3336-9C4C-59A5-B94F-6CECA92FFB9F" xml:lang="en"><title>Providing
+a Custom Resolver </title><shortdesc>The plug-in framework has a default resolver that selects an appropriate
+implementation to suit the client requests. If the algorithm used by the custom
+resolver is inappropriate, an interface definition can provide its own custom
+resolver. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Custom resolvers are interface implementations that implement
+the <xref href="GUID-38D97F70-383E-3950-B052-CB56965B0B48.dita"><apiname>CResolver</apiname></xref> interface. They are instantiated by the framework
+in response to the <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> calls
+that specify to use a particular custom resolver. Custom resolvers must confirm
+to other aspects of interface implementations, including providing registration
+resource information, and publishing its UID and factory function in an implementation
+proxy table. </p><note> Additionally, in order to be trusted by ECom, the
+plug-in must have the ProtServ capability set in the project file. </note><p>A
+custom resolver class must derive from <xref href="GUID-38D97F70-383E-3950-B052-CB56965B0B48.dita"><apiname>CResolver</apiname></xref>.
+The derived class must implement the following inherited functions: </p> </context>
+<steps id="GUID-B8CC6618-FF31-5E9E-9C74-EE029F6A4A6F">
+<step id="GUID-81A902BA-C325-556A-ACE4-1E945DD82731"><cmd/>
+<info>Implement a factory function that takes an <xref href="GUID-C6201A47-85A9-365C-9B28-48243FA6ACD0.dita"><apiname>MPublicRegistry</apiname></xref> object
+as input. <xref href="GUID-C6201A47-85A9-365C-9B28-48243FA6ACD0.dita"><apiname>MPublicRegistry</apiname></xref> provides the resolver with the
+list of the implementations registered with the plug-in framework that meet
+the requirements of the specified interface. </info>
+</step>
+<step id="GUID-39F2C21F-C917-5D40-B6AE-61CF1C8852E7"><cmd/>
+<info>Implement the <xref href="GUID-38D97F70-383E-3950-B052-CB56965B0B48.dita#GUID-38D97F70-383E-3950-B052-CB56965B0B48/GUID-948455C3-D565-3D6E-ABD0-18E23C4D2C40"><apiname>CResolver::IdentifyImplementationL()</apiname></xref> function
+that takes the UID of the interface for which an implementation is requested.
+The resolver uses the resolution parameters and returns the UID of the best-fit
+implementation. The best-fit algorithm is specific to each custom resolver. </info>
+<info> <xref href="GUID-38D97F70-383E-3950-B052-CB56965B0B48.dita#GUID-38D97F70-383E-3950-B052-CB56965B0B48/GUID-948455C3-D565-3D6E-ABD0-18E23C4D2C40"><apiname>CResolver::IdentifyImplementationL()</apiname></xref> returns a list
+of all matching implementations. </info>
+</step>
+<step id="GUID-3642618B-17BD-594F-8C0B-0985AC3B087F"><cmd/>
+<info>Implement the <xref href="GUID-38D97F70-383E-3950-B052-CB56965B0B48.dita#GUID-38D97F70-383E-3950-B052-CB56965B0B48/GUID-5FDD82E1-9538-3393-A892-44D577EC4090"><apiname>CResolver::ListAllL()</apiname></xref> function. </info>
+</step>
+</steps>
+<example id="GUID-E1354F45-99FB-5509-B9E4-9E0B9E44C6F3"><title>Custom resolver
+example</title> <p>The following code depicts a sample customer resolver. </p> <codeblock id="GUID-552AC3FB-730E-54A6-91EC-EB5A6A65C0B1" xml:space="preserve">class CExampleResolver : public CResolver
+    {
+public:
+    // Factory function: 
+    static CExampleResolver* NewL(MPublicRegistry&amp; aRegistry);
+    ~CExampleResolver();
+
+    // Implement IdentifyImplementationL()
+    TUid IdentifyImplementationL(TUid aInterfaceUid, 
+    const TEComResolverParams&amp; aParameters) const;
+
+// Implement ListAllL
+
+    RImplInfoArray* ListAllL(TUid aInterfaceUid, 
+    const TEComResolverParams&amp; aParameters) const;</codeblock> <p>The
+following code shows a sample standard registration resource required by a
+custom resolver. </p> <codeblock id="GUID-D4072E8E-DB0A-5B3B-ACC5-078F1C3FD83A" xml:space="preserve">RESOURCE REGISTRY_INFO theInfo
+    {
+    dll_uid = 0x10009DB3;
+    interfaces = 
+        {
+        INTERFACE_INFO
+ // interface_uid value is always 0x10009D90. 
+            {
+            interface_uid = 0x10009D90;
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+// uid value is specific to individual resolvers
+                    implementation_uid = 0x10009DB4;
+
+                    version_no = 1;
+// unused fields
+                    display_name = "";
+                    default_data = "";
+                    opaque_data = "";
+                    }
+                };
+            }
+        };
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E111C4E8-1342-4E87-ACB4-5B630AF1501C" xml:lang="en"><title>Internationalization
+and localization</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You need to take internationalization concerns into account as early
+as possible when designing your application. This section describes internationalization
+and localization, including:</p>
+<ul>
+<li><p><xref href="GUID-457CC544-EC3B-4863-A5C4-DC7046614929.dita">Locale-sensitive
+data types</xref></p>
+</li>
+<li><p><xref href="GUID-9EA7B72B-8394-48B8-A0CC-4BB34CBDB01C.dita">UI text
+strings</xref></p>
+</li>
+<li><p><xref href="GUID-88917386-AD48-4C76-A1C7-46F0B1E85A18.dita">Implementing
+UI text localization</xref></p>
+</li>
+</ul>
+<p>When localizing your application, there are two different concerns that
+you need to manage in your project. These are as follows:</p>
+<ul>
+<li><p>Date, Times, Currency, and other locale-sensitive data types</p>
+</li>
+<li><p>UI text strings</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1410365-7254-5326-B3F7-D7100D31E59F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E1410365-7254-5326-B3F7-D7100D31E59F"><title>Array of variable length elements, segmented buffer</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This is a <codeph>CArrayVarSeg&lt;class T&gt;</codeph> object whose elements can have different lengths. Although each element is a <codeph>class T</codeph> object, the length of that object can vary.</p> <p>In this type of array, each element occupies its own individual cell allocated from the heap. The array buffer contains fixed length data structures, one for each element, which are logically contiguous within the buffer but are physically contiguous only within a segment. Each fixed length data structure contains the length of an element (a <codeph>TInt</codeph> value) and a pointer to it. The structure itself is part of the implementation but occupies no more than eight bytes on 32-bit machines.</p> <p>A segmented buffer is implemented as a doubly linked list of equally sized cells allocated from the heap and is always extended by allocating a new segment and inserting it into the appropriate place in the list. A segmented array buffer is implemented using a <codeph>CBufSeg</codeph> object. </p> <p>The following diagram illustrates how elements are organised within the array buffer:</p> <fig id="GUID-D8FD08B3-2896-56FE-8252-E88A250655C4"><image href="GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e190901_href.png" placement="inline"/></fig> <p>This kind of array is suitable for large arrays with a high turnover of elements.</p> <p>This class is immediately derived from the abstract templated base class <codeph>CArrayVar&lt;class T&gt;</codeph> which is itself derived from the abstract non-templated base class <codeph>CArrayVarBase</codeph>. </p> <section><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Dynamic Buffers Guide</xref>.</p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E14C1D1E-B7E5-5244-8BE7-386C542AAB58.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E14C1D1E-B7E5-5244-8BE7-386C542AAB58"><title>HTTP string table</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>HTTP Client installs a standard string table, defining enumerations in the HTTP namespace. It is used to define method names, header names, session and transaction property names, parameter names for headers, and commonly used MIME types (used for the <codeph>Accept</codeph> and <codeph>Content-Type</codeph> headers). </p> <p>Strings in the string table are constructed, copied, and freed using <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita"><apiname>RStringPool</apiname></xref>. The following are the main points to note: </p> <ul><li id="GUID-48D0F4CA-C885-5A61-A6EA-7F7AC05EBE5C"><p>Strings taken from the HTTP string table are accessed using <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita#GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B/GUID-D6F8ADC0-2079-32A9-BB91-405886DCE2CA"><apiname>RStringPool::String()</apiname></xref> or <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita#GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B/GUID-F4DB32B1-AA81-39FB-BC91-4D1C529F9DBC"><apiname>RStringPool::StringF()</apiname></xref>; they do not need to be closed. </p> </li> <li id="GUID-713532CC-0B35-549D-B5D9-D0F46DA78AEB"><p>Strings not in the HTTP string table must be opened using <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita#GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B/GUID-EC2CEE9F-3103-35CD-B09A-A0A308ED0D5B"><apiname>RStringPool::OpenStringL()</apiname></xref> or <xref href="GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B.dita#GUID-4BF6ECD3-5FB3-3A6A-B9CE-98871BD0812B/GUID-59537E09-280E-3EAD-8EE9-591FDCC7540D"><apiname>RStringPool::OpenFStringL()</apiname></xref>, and must be closed after use. </p> </li> <li id="GUID-7F6977B1-F18A-559C-814D-71AB3E481316"><p>Strings can be directly compared, whether <xref href="GUID-86301BC4-2A98-3F9B-BAE3-A6DE8D3BD632.dita"><apiname>RString</apiname></xref> or <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref>. Comparison is efficient and quick. </p> </li> <li id="GUID-6011127B-7574-5D11-80BE-061C40387DBD"><p>Strings are not freed from memory until all instances that were <codeph>Open()</codeph> ed have been <codeph>Close()</codeph> d. </p> </li> <li id="GUID-2B6CD08C-C1E0-5A27-B7E5-7E4C7CD81346"><p>The HTTP string pool is automatically created when the first session is started, and can be accessed using the handle returned by <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita#GUID-651801A5-5473-3856-9647-46823598C5C1/GUID-F84F563A-28CA-3CBA-80CE-603DD381F8D5"><apiname>RHTTPSession::StringPool()</apiname></xref>. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E16070E5-379A-5818-81CC-B00059A40084.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E16070E5-379A-5818-81CC-B00059A40084"><title>Choosing a Parser Plug-in</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains how to specify a particular XML parser in a client application. </p> <section><title>Introduction</title> <p>XML framework contains several parser plug-ins for a particular MIME type. XML framework provides further criteria to allow the Symbian developers to choose the suitable parser plug-in. This is useful for interoperability, porting open source and performance. </p> <p>There are two ways of choosing a parser plug-in; in both cases, the MIME type of the file to be parsed must be known. Each implementation of plug-in parser is described by two string-based attributes in the parser’s plug-in registration information: </p> <ul><li id="GUID-C90EB73B-3EB3-576D-9482-B34419E9FDF6"><p> <b>MIME type</b> - Specifies the MIME types supported by that implementation of plug-in parser. </p> </li> <li id="GUID-FF9E5CD6-5012-5C42-BFFE-332B7074E6C0"><p> <b> Variant identifier</b> (optional) - Specifies the parser’s variant identifier (ID) string. The framework does not provide interpretation on the string to be placed. However, the parser provider must publish which variant ID must be used with the XML framework, so that their particular parser implementation is instantiated. </p> </li> </ul> <p>This functionality is provided in <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita#GUID-5748D958-9480-3358-A399-6B92293B86D9/GUID-7F10FDA9-35DF-3D02-B561-D43680B0E8D0"><apiname>XML::CMatchData</apiname></xref> class which is supplied to three API methods (<codeph>NewL</codeph>, <codeph>NewLC</codeph>, and <codeph>ParseBginL</codeph>) of the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita#GUID-5748D958-9480-3358-A399-6B92293B86D9/GUID-1FDF909C-BA22-3C39-9A49-D804C54BAEAE"><apiname>XML::CParser</apiname></xref> class. </p> <p>Call the constructor method of a <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> object with the MIME type as a parameter. However, specify a particular parser variant (usually identified by the name of its supplier) as described in the Procedure section. </p> </section> <section><title>Procedure</title> <p>Follow the procedure given below to choose a parser plug-in and parse the XML: </p> <ol id="GUID-A0C24252-C9BA-5073-809F-ED87CA0674FD"><li id="GUID-AE8B4D9D-C92C-5B6B-81A5-AE5690996D50"><p>Construct a <xref href="GUID-A6CF939C-110C-3FA4-8C2E-0B48C04D9CFB.dita"><apiname>CMatchData</apiname></xref> object, and set the data about the files and parser variant to it. </p> <codeblock id="GUID-153866B2-277C-5FEE-9E6E-C02D90BA0D8F" xml:space="preserve">
+// Create CMatchData object
+CMatchData *matchData = CMatchData::NewLC();
+
+// Set Type
+matchData-&gt;SetMimeTypeL( _LIT( “text/xml” ) );
+
+// Set variant string
+matchData-&gt;SetVariantL( _LIT( “LicenseeX” ) );
+</codeblock> </li> <li id="GUID-5E140D20-7239-57C6-896C-F68CF7285CEC"><p>Construct an instance of a parser plug-in and pass the <xref href="GUID-A6CF939C-110C-3FA4-8C2E-0B48C04D9CFB.dita"><apiname>CMatchData</apiname></xref> object to its constructor method. </p> <codeblock id="GUID-438AC57A-8B36-5782-8C67-E853F00B142E" xml:space="preserve">
+// Call creation method (assumption that content handler was created previously)
+CParser* parser = CParser::NewLC( *matchData, *contentHandler );
+
+// Use the parser
+// ….
+
+// Destroy the parser and CMatchData object
+CleanupStack::PopAndDestroy( 2, matchData );
+</codeblock> </li> <li id="GUID-C1216537-EC67-5A3C-BE71-398D6A986117"><p>Call the parser plug-in to parse the XML. </p> <p>To parse a document, write code which includes calls to the parse methods of a <codeph>CParser</codeph> object from the global parse methods provided with the framework. The global parse methods are as follows: </p> <p> <b>A</b>: <xref href="GUID-908E14FD-9FFF-30ED-A9D2-EE812A56E5C2.dita#GUID-908E14FD-9FFF-30ED-A9D2-EE812A56E5C2/GUID-85604159-4639-37FD-BAA1-D06E038AD121"><apiname>Xml::ParseL( Xml::CParser&amp; aParser,
+                const TDesC8&amp; aContent )</apiname></xref>  </p> <p> <b>B</b>: <xref href="GUID-908E14FD-9FFF-30ED-A9D2-EE812A56E5C2.dita#GUID-908E14FD-9FFF-30ED-A9D2-EE812A56E5C2/GUID-5DF681F2-723F-3738-8E1E-A40BE1552254"><apiname>Xml::ParseL( Xml::CParser&amp; aParser,
+                RFs&amp; aFs, const TDesC&amp; aFilename )</apiname></xref>  </p> <p> <b>C</b>: <xref href="GUID-908E14FD-9FFF-30ED-A9D2-EE812A56E5C2.dita#GUID-908E14FD-9FFF-30ED-A9D2-EE812A56E5C2/GUID-00CD527D-2E77-3074-A669-E162997FE1B0"><apiname>Xml::ParseL( Xml::CParser&amp; aParser,
+                RFile&amp; aFile )</apiname></xref>  </p> <p>The global parse methods call the following <codeph>CParser</codeph> object parse methods: </p> <ul><li id="GUID-1FC654D3-861B-5D8F-B82B-0F88408CB9A7"><p> <xref href="GUID-59C7BEDF-9A63-35D4-8612-8AB13A4B6F4A.dita"><apiname>ParseBeginL()</apiname></xref>  </p> </li> <li id="GUID-07B4CCBB-403D-5992-9C4D-D21B4A3D0226"><p> <xref href="GUID-6E512056-8D93-39C6-9569-7EAEA2E53780.dita"><apiname>ParseBeginL( const TDesC8&amp; aDocumentMimeType
+                     )</apiname></xref>  </p> </li> <li id="GUID-564A5D9A-72AB-5BD2-A5F7-A0C8B9FB6B33"><p> <xref href="GUID-7B8C6104-07E0-35E4-A4A0-1AB764818BF1.dita"><apiname>ParseL( const TDesC8&amp; aFragment )</apiname></xref>  </p> </li> <li id="GUID-9A4CB6F9-3215-5F6E-AEA7-D5623A7F8812"><p> <xref href="GUID-66E9E3B3-3D78-36F3-B009-61B3F6939DAC.dita"><apiname>ParseEndL()</apiname></xref>  </p> </li> </ul> <p> <b>Note</b>: Methods to be called depends on the nature of the input to the parser. Input may consist of one or several files, and it may be received in one piece or asynchronously in chunks. The files may be same or of different types, and asynchronous input may or may not be buffered before parsing. </p> <p>Global parse method <b>A</b> makes a single call to each of the <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> parse methods. This is the simplest approach but it works only while parsing a single file which has been buffered previously. Global parse methods <b>B</b> and <b>C</b> have the same functionality; the only difference is how they identify the input file (by name or from an <codeph>RFile</codeph> object). They call <codeph>CParser::ParseL()</codeph> in a loop and then call <codeph>CParser::ParseEnd()</codeph>. The use of a loop means that input does not have to be buffered, but only one file can be parsed by this technique. This is because of the functionality of the <codeph>CParser</codeph> parse methods. </p> <p>To parse several unbuffered documents of the same type, multiple calls to global parse method B or C are required. To parse several buffered documents possibly of different types, multiple calls to global parse method A are required. Other eventualities require individual calls to the parse methods of <codeph>CParser</codeph>. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60" xml:lang="en"><title>Pointers
+to the start and end of contiguous regions</title><shortdesc>The <codeph>Back()</codeph> and <codeph>End()</codeph> functions
+point to locations in memory for flat and segmented arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>For those arrays of same length elements which are derived from <codeph>CArrayFix&lt;class T&gt;</codeph>,
+the elements are contained within an array buffer which can be implemented
+as a flat buffer or as a segmented buffer. A flat buffer is implemented as
+a single contiguous region of memory while a segmented buffer is implemented
+as a set of separate but linked regions of memory </p>
+<p>Given the position of an element within an array, it can be useful to fetch
+a pointer to the first byte following the end of the contiguous region of
+memory containing that element (the <i>end</i> pointer). Similarly, it can
+be useful to fetch a pointer to the <i>beginning</i> of a contiguous region
+of memory (the <i>back</i> pointer).</p>
+<section id="GUID-DB6D5E2F-CFEE-47EC-B38D-9D0DC13B994D"><title>Array of same length elements</title> <p>An array of same
+length elements uses the <codeph>End()</codeph> function to fetch the end
+pointer and the <codeph>Back()</codeph> function to fetch the back pointer.
+The implementation of these two functions differs between a fixed flat array
+and a fixed segmented array.</p> </section>
+<section id="GUID-48756A91-9B8F-4BA8-A0CF-52970F8B41CC"><title>Flat array</title> <p>For a flat array — i.e. an array whose
+buffer is implemented using a flat buffer — the end pointer simply points
+to the first byte following the single region of memory containing the array
+buffer. The back pointer simply points to the first byte of the single region
+of memory (as illustrated below); <codeph>End()</codeph> always returns a
+pointer to the first byte following the end of the buffer, while <codeph>Back()</codeph> always
+returns a pointer to the beginning of the buffer.</p> <fig id="GUID-D4084F4C-B928-5779-A58F-CB495A74EE68">
+<title>End() and Back() in fixed flat arrays</title>
+<image href="GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e191988_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-27F85346-3B08-4E06-A80D-A5B708105659"><title>Segmented array</title> <p>For a segmented array, the situation
+is different (as illustrated below). Looking at the segment containing elements <codeph>n</codeph> and <codeph>n+1</codeph>, <codeph>End()</codeph> returns a pointer to the first byte following the end of that segment. In
+fact, <codeph>End()</codeph> returns the same pointer value for all elements
+in that segment. <codeph>Back()</codeph> returns a pointer to the beginning
+of that segment for element <codeph>n+1</codeph> and for all <i>subsequent</i> elements
+in that segment. However, for the <i>first</i> element in that segment, <codeph>Back()</codeph> returns
+a pointer to the beginning of the <i>previous</i> segment. For the very first
+element in the array, <codeph>Back()</codeph> returns a pointer with a NULL
+value.</p> <fig id="GUID-90C05AF9-9048-557E-95DD-49A19F856EF0">
+<title>End() and Back() in fixed segmented arrays</title>
+<image href="GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e192037_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-165D9F3E-3948-4DC0-9632-FF70480C495C"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Dynamic
+Buffers Guide</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1634502-483A-51F3-9F5D-C863C8C9465A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E1634502-483A-51F3-9F5D-C863C8C9465A"><title>declare</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Same as <xref href="GUID-D87C96CE-3F23-552D-927C-B6A1D61691BF.dita">typeset</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4"><title>The object container</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>All reference counting objects must be held in an object container. An object container acts as a home for a set of related reference counting objects. </p> <p>An object container is an instance of a <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref> class. </p> <p>After construction, a reference counting object <i>must</i> be added to an object container. Only one instance of a reference counting object can be held by an object container, i.e. each object within an object container must be distinct. </p> <p>The main characteristics of an object container can be summarised as follows: </p> <ul><li id="GUID-38B0A165-02EE-529F-9EEC-4BEAC6368489"><p>they allow a logical collections of reference counting objects to be gathered together. </p> </li> <li id="GUID-0C5A0F46-3B9C-5547-91C5-40177E2AC8A1"><p>explicitly destroying a reference counting object causes that object to be removed from its object container. </p> </li> <li id="GUID-5E89EA15-353B-5D97-AAEF-734F0999C686"><p>removing a reference counting object from its object container causes that object to be destroyed. </p> </li> <li id="GUID-A14CCB2B-4810-53DA-9CEC-402F9406BC37"><p>each object container is assigned a unique ID on construction. This is an integer that forms part of the identity of all of its contained reference counting objects. All reference counting objects within an object container are associated with the same unique ID. The value of the unique ID can range from 1 to 16,383 (0x3fff). </p> </li> </ul> <p>Object containers are constructed by an object container index, a <xref href="GUID-72761B3C-ECB6-34B2-87ED-C972E479357A.dita"><apiname>CObjectConIx</apiname></xref> type. The maximum number of object containers which may be constructed and held in an object container index is 6,383 (0x3fff). </p> <p>An object container is implemented as a simple array, where each element of the array is a pointer to a contained reference counting object. Adding a reference counting object to the object container is simply a matter of adding the reference counting object's pointer into the array. The following diagram shows a simple situation where two object containers hold a number of reference counting objects. </p> <fig id="GUID-6907E278-C900-5C2A-9540-29BBD1FF5BCB"><image href="GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e219835_href.png" placement="inline"/></fig> <p>The <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-4BEB5581-620D-3857-83AE-334B22C92554"><apiname>CObjectCon::AddL()</apiname></xref> function adds a reference counting object to the object container. </p> <p>The <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-5BECBD93-AFB0-3D80-9307-3839F0DB920D"><apiname>CObjectCon::Remove()</apiname></xref> function removes a reference counting object from its object container and also destroys that reference counting object. Conversely, if the reference counting object is destroyed (typically, as a result of successive calls to <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita#GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97/GUID-6E50F446-307B-3C9D-9AD6-AFCB49B2F658"><apiname>CObject::Close()</apiname></xref>), it is removed from its object container. </p> <p>See also: </p> <ul><li id="GUID-35EBE5AE-3171-5299-8419-E372A365363E"><p> <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita"><apiname>CObjectCon</apiname></xref> </p> </li> <li id="GUID-000D298D-DA13-5345-A622-C21869898D97"><p> <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref>  </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E173DF0D-DBE3-45DE-8763-453940DF3E5B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E173DF0D-DBE3-45DE-8763-453940DF3E5B" xml:lang="en"><title>Setting
+Alarm Status</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Each alarm has a status property, which can have a value
+of <i>enabled</i> or <i>disabled</i>. When you add an alarm, the status of
+the alarm is enabled. Disabled alarms do not notify at the time they are due,
+and they are ignored by the Alarm Server.</p><p>Use <codeph>RASCliSession::SetAlarmStatus()</codeph> to
+change the status of the specified alarm to enabled or disabled. The following
+code fragment illustrates how to set alarm status: </p><codeblock xml:space="preserve">TAlarmId alarmId;
+TheAlarmServerSession.SetAlarmStatus( alarmId , EAlarmStatusEnabled );</codeblock></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC" xml:lang="en"><title>Client
+MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Client MTMs provide a client-side API to functionality provided by the
+Server MTM, mainly for message manipulation and transport. It acts as the
+interface between the internal representation of a message’s data and the
+User Interface (UI) MTM. This architecture provides certain advantages; for
+example, a UI MTM can offer a user interface to enter message addresses without
+knowing the address storage format. Message client applications that do not
+require a user interface can use these client-side functions directly for
+automated message handling. </p>
+<p>The Message Server entry with which Client MTMs currently work is referred
+to as the context. UI MTMs always operate on the contexts set through Client
+MTMs. </p>
+<p>Client MTMs offer some or all of the following capabilities: </p>
+<ul>
+<li id="GUID-4327B533-04C0-5110-B8AD-90EC90C73D32"><p>Address list manipulation </p> </li>
+<li id="GUID-FC4908FC-5958-5815-90EB-D601B4710247"><p>Creation of forward
+and response messages </p> </li>
+<li id="GUID-CF8196EB-1C40-50D0-86AA-0F2C954CBC5D"><p>Message subject access </p> </li>
+<li id="GUID-51B25D57-A577-5375-9DD6-D398C8B860A8"><p>Message validation </p> </li>
+<li id="GUID-4345AB18-2096-5312-955D-EACE72DCA52F"><p>Internalising and externalising
+MTM-specific data to the Message Store </p> </li>
+</ul>
+<section id="GUID-BCFBE2C5-2C90-5E43-9B21-0D80A469CEAB"><title>Client MTM
+base class</title> <p>The base class for Client MTMs is <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref> which
+provides a high-level interface for accessing and manipulating a Message Server
+entry </p> <p>The following are some significant functions in <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref>.
+Some functions are implemented by the base class, and others must be implemented
+in a derived class: </p> <ul>
+<li id="GUID-8E6AB26D-BDD2-5D5E-BEDD-5371EE86834D"><p> <b>Context functions</b>  </p> <p>The <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-00C140DE-012F-3785-A628-E8D1330438B8"><apiname>CBaseMtm::SetCurrentEntryL</apiname></xref> <codeph>(CMsvEntry                 *)</codeph> and <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-016A5DFD-5C88-3531-A5F3-456884CAC041"><apiname>CBaseMtm::SwitchCurrentEntryL</apiname></xref> <codeph>(TMsvId)</codeph> functions
+change the Message Server entry (the context) on which later actions are performed.
+After creating a new Client MTM object, a message client application must
+set an initial context before using other functions. </p> </li>
+<li id="GUID-1E3E98F7-FBBF-5594-A7EF-93D7106FD3D3"><p> <b>Store and restore
+entry data functions</b>  </p> <p>The changes that a message client application
+makes to a message context through Client MTM functions, such as altering
+the body text obtained through <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-072E627F-8AB4-3C90-AD48-A5AF6A39581B"><apiname>CBaseMtm::Body()</apiname></xref>, are, for
+efficiency, cached in memory by a Client MTM. The message store (<xref href="GUID-A0F2B215-C453-3CB8-A659-29CB0B4CF0A7.dita"><apiname>SaveMessageL()</apiname></xref>)and
+restore (<xref href="GUID-DF6E56F8-3B05-3D34-8500-BDA77BABD05D.dita"><apiname>LoadMessageL()</apiname></xref>), functions are concerned with
+transferring data between that cache and committed storage. </p> <p> <b>Note:</b> Unlike
+message contexts, message client applications are not expected to manipulate
+directly contexts for message services. Instead, the corresponding <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> Interface
+MTM provides a dialog to allow the user to alter service settings, and calls
+Client MTM functions to handle their retrieval and storage. </p> </li>
+<li id="GUID-A0FDCB02-3C4E-5CB0-A374-61C89889621B"><p> <b>Store and restore
+body text functions</b>  </p> <p>The base class maintains a private <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object
+cache to store the body text for the current context. This can be accessed
+for reading and writing by message client applications through <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-072E627F-8AB4-3C90-AD48-A5AF6A39581B"><apiname>CBaseMtm::Body()</apiname></xref>.
+The <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-A036C34A-EFB9-3E98-983B-0DFF1EE8CD85"><apiname>CBaseMtm::StoreBodyL()</apiname></xref> <codeph>(CMsvStore &amp;)</codeph> and <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-43AF1C02-C435-3450-A549-8AECE9F6CAB0"><apiname>CBaseMtm::RestoreBodyL()</apiname></xref> <codeph>(CMsvStore
+&amp;)</codeph> functions encapsulate the retrieval and storage of this <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object
+to a <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref>. </p> </li>
+<li id="GUID-B44CFD8D-DB97-5A4D-B876-EA04D464A5B1"><p> <b>Address list functions</b>  </p> <p>The
+format and storage of message addresses is MTM-specific. The <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-51A8768D-684A-3668-98BF-AB88D676DEB5"><apiname>CBaseMtm::AddresseeList()</apiname></xref> <codeph>const</codeph>, <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-D3DFE444-DB84-331C-BC3F-AB12E148CD00"><apiname>CBaseMtm::AddAddresseeL</apiname></xref> <codeph>(const TDesC &amp;)</codeph>, and <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-770E749C-BA7F-3F31-B7B8-F2C21F4F06A1"><apiname>CBaseMtm::RemoveAddressee</apiname></xref> <codeph>(TInt)</codeph> allow
+clients to access address information in a generic way without having MTM-specific
+knowledge. </p> </li>
+<li id="GUID-F1E2AAD3-41E0-522A-B7AC-7090EE823807"><p> <b>MTM-specific client
+functions</b>  </p> <p>MTM components can offer protocol-specific functionality
+not provided by base class interface functions. MTM components define IDs
+that correspond to each protocol-specific operation offered, and implement
+the <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-A5B6CDAC-7C02-35F4-840E-35932B438FD8"><apiname>CBaseMtm::InvokeSyncFunctionL()</apiname></xref> and <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-05327221-98A9-35FA-BD28-D6323BE449D1"><apiname>CBaseMtm::InvokeAsyncFunctionL()</apiname></xref> functions
+to allow clients to access these operations by passing in the appropriate
+ID. These functions are provided to allow the MTM component to offer both
+synchronous and asynchronous functionality. Message client applications can
+dynamically add user-interface features for these operations using <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita#GUID-899C6D87-5712-34A7-902C-EA452894700C/GUID-75DE35D7-4738-38C0-9BFA-A066F67B114B"><apiname>CBaseMtmUiData::MtmSpecificFunctions()</apiname></xref>. </p> </li>
+<li id="GUID-A4A3ED85-EAC5-58BC-BB40-E40949A84B66"><p> <b>Query function</b>  </p> <p>The
+Client MTM <xref href="GUID-E32E2F1C-62C5-3635-BA60-3E547C32DB9C.dita"><apiname>QueryCapability()</apiname></xref> function is used to inquire
+whether an MTM supports a given feature. The first argument is a UID defined
+to correspond to a particular capability. The function returns a system error
+code and the response (whether the MTM supports the queried capability) is
+passed back through the second (by-reference)<codeph>aResponse</codeph> parameter.
+This value can be an integer or a bit set, depending on the capability. </p> <p>The
+UIDs for the different types of query are as follows: </p> <table id="GUID-6ADE624E-8B18-58F9-9386-79A75E72E0C7">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>UID</entry>
+<entry>Capability</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>KUidMsvMtmQueryMaxBodySize</codeph>  </p> </entry>
+<entry><p>Maximum message body size </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQueryMaxTotalMsgSize</codeph>  </p> </entry>
+<entry><p>Maximum total size of message. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> KUidMtmQuerySupportedBody</codeph>  </p> </entry>
+<entry><p>Character widths supported by message type. The returned value is
+the sum of the appropriate values. The return type is either of KMtm7BitBody,
+KMtm8BitBody, KMtm16BitBody, and KMtmBinaryBody) </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> KUidMtmQuerySupportAttachments</codeph>  </p> </entry>
+<entry><p>To check if the attachments are supported </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQuerySupportSubject</codeph>  </p> </entry>
+<entry><p>Does the MTM message type have a subject field </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> KUidMtmQuerySupportsFolder</codeph>  </p> </entry>
+<entry><p>Does the MTM support folders </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> KUidMtmQueryOffLineAllowed</codeph>  </p> </entry>
+<entry><p>Off-line operation allowed </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQueryCanSendMsg</codeph>  </p> </entry>
+<entry><p>Can send the message </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQueryCanReceiveMsg</codeph>  </p> </entry>
+<entry><p>Can receive the message </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQueryMaxRecipientCount</codeph>  </p> </entry>
+<entry><p>Maximum number of recipients (-1 indicates unlimited numbers). </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQuerySendAsRequiresRenderedImage</codeph>  </p> </entry>
+<entry><p>When using the MTM in Send As, does a rendered image have to be
+prepared. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> KUidMtmQuerySendAsRenderingUid</codeph>  </p> </entry>
+<entry><p>Printer driver UID for rendering the fax image. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMsvMtmQueryEditorUid</codeph>  </p> </entry>
+<entry><p>UID of default message editor. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMsvQuerySupportsBioMsg</codeph>  </p> </entry>
+<entry><p>Does the MTM support BIO messages </p> </entry>
+</row>
+<row>
+<entry><p> <codeph> KUidMsvQuerySupportsScheduling</codeph>  </p> </entry>
+<entry><p>Does the MTM support scheduled sending. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQuerySupportsRecipientType</codeph>  </p> </entry>
+<entry><p>Does the MTM support the use of recipient type. </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>KUidMtmQuerySendAsMessageSendSupport</codeph>  </p> </entry>
+<entry><p>Support for Sending messages using SendAs. </p> <p>If this is supported,
+then the MTM supports sending messages created through the SendAs API. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> <p>The following example is a snapshot of the Text MTM example. For
+more implementation details, see <xref href="GUID-5B9F2EEE-A5F6-5833-BFC4-3B063EA7EDF2.dita">Messaging
+Text MTM example code</xref>. </p> <codeblock id="GUID-375C5493-8DAA-5B2D-B371-B7FD7DC2CCD1" xml:space="preserve">TInt CTextMtmClient::QueryCapability(TUid aCapability, TInt&amp; aResponse)
+    {
+    TInt error = KErrNone;
+    switch (aCapability.iUid)
+        {
+        case KUidMtmQueryMaxBodySizeValue:
+        case KUidMtmQueryMaxTotalMsgSizeValue:
+            aResponse = KMaxTextMessageSize;
+            break;
+        case KUidMtmQuerySupportedBodyValue:
+            aResponse = KMtm8BitBody + KMtm7BitBody;
+            break;
+        case KUidMtmQueryOffLineAllowedValue:
+        case KUidMtmQueryCanReceiveMsgValue:
+            aResponse = ETrue;
+            break;
+        case KUidMtmQuerySupportAttachmentsValue:
+        default:
+            return KErrNotSupported;
+        }
+    return error;
+    }
+</codeblock> </li>
+</ul> <p>The <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm</apiname></xref> class provides the virtual functions
+for overriding in derived classes. </p> </section>
+<section id="GUID-6DD0912E-1E82-5BAD-889C-5FA79E5E800C"><title>Client-side
+operations</title> <p>Many Messaging tasks can take a long time to complete.
+For example, sending all items from the Outbox or downloading a large number
+of items from a POP3 server. In these situations, the use of active objects
+to wait for the completion of the task is inadequate, since applications also
+require to obtain progress information while the task is running (for example,
+to update a progress dialog). To solve this problem, most asynchronous functions
+in Messaging create a <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> object and return a
+pointer to it, as well as taking a <codeph>TRequestStatus&amp;</codeph> parameter.
+The <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> class is derived from <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> and
+is used to obtain progress information about a long-running task. </p> <p>The
+base class for all client-side Messaging operations is <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref>.
+The asynchronous methods in the <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita"><apiname>CBaseMtm </apiname></xref> interface all
+return a pointer to a <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> object. When you implement
+an MTM, you will have to provide your own custom operations, derived from <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref>,
+and return those polymorphically from your implementations of the asynchronous
+APIs. </p> <p><b>Example</b> </p> <p>The forward operation of the Text MTM
+is explained in the following example. </p> <p>The forward operation is an
+active object state machine that runs a series of asynchronous tasks one after
+another and waits for each to complete before moving on to the next. After
+the operation has been completed, an active object is notified through its <codeph>TRequestStatus</codeph> passed
+into the operation at construction. </p> <p>The forward operation is constructed
+using standard two-phase construction. The <xref href="GUID-93132FF9-512F-30EC-8AB0-BD3E98F668E6.dita"><apiname>NewL()</apiname></xref> function
+takes two arguments of a <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> (source message and destination
+folder) type, a <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita"><apiname>CMsvSession</apiname></xref> reference, and the observer’s <codeph>TRequestStatus</codeph>,
+which is notified on completion. The active object is constructed and added
+to the scheduler, and then <xref href="GUID-C8E0575D-5A7F-3D00-9BE5-AD8D6DBCF2F7.dita"><apiname>ConstructL()</apiname></xref> is called: </p> <codeblock id="GUID-C046D5BB-A157-5F5D-9702-C9ED271B89E8" xml:space="preserve">void CTxtMtmForwardOperation::ConstructL()
+    {
+    iObserverRequestStatus = KRequestPending;
+    SetActive();
+    TRequestStatus* stat = &amp;iStatus;
+    User::RequestComplete(stat, KErrNone);
+    }
+</codeblock> <p>This has the effect of marking this stage of the operation
+as complete and means that <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref> is called at the next
+opportunity. This simplifies the state machine because it means that all states
+and tasks are started in <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref> and not in <xref href="GUID-C8E0575D-5A7F-3D00-9BE5-AD8D6DBCF2F7.dita"><apiname>ConstructL()</apiname></xref>. </p> <p>The <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref> function
+starts each task and receives a notification when it completes. The current
+task being executed is stored in <xref href="GUID-51087246-DDFF-384B-9DB6-2525F8C73CA5.dita"><apiname>iProgress</apiname></xref> and <xref href="GUID-A36DDD59-6236-3549-9DEB-8BE1F402CB16.dita"><apiname>iState</apiname></xref>,
+as are the errors and the ID of the new forwarded message, once complete.
+The default state for <xref href="GUID-A36DDD59-6236-3549-9DEB-8BE1F402CB16.dita"><apiname>iState</apiname></xref> on construction is <codeph>EInit</codeph>. </p> <codeblock id="GUID-B223CED8-8391-5825-BAC7-E81ED08C7E7E" xml:space="preserve">void CTxtMtmForwardOperation::RunL()
+    {
+    User::LeaveIfError(iStatus.Int());
+    switch(iProgress.iState)
+        {        
+        case TTxtMtmForwardOpProgress::EInit:
+            iProgress.iState =
+               TTxtMtmForwardOpProgress::ECreateMessage;
+            CreateMessageL();
+            break;
+
+        case TTxtMtmForwardOpProgress::ECreateMessage:
+            iProgress.iState =
+               TTxtMtmForwardOpProgress::EFormatBodyText;
+            FormatBodyTextL();
+            break;
+
+        case TTxtMtmForwardOpProgress::EFormatBodyText:
+            iProgress.iState =
+               TTxtMtmForwardOpProgress::EFinished;
+        
+        default:
+            break;
+        }
+    if(!IsActive())
+        {
+        TRequestStatus* stat = &amp;iObserverRequestStatus;
+        User::RequestComplete(stat, KErrNone);
+        }
+    }
+</codeblock> <p>If the state is <codeph>EInit</codeph>, the <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref> changes
+state to <codeph>ECreateMessage</codeph> and then calls <xref href="GUID-E1D580C2-8B05-3A9E-8157-A3F849811AAB.dita"><apiname>CreateMessageL()</apiname></xref> to
+start the process of creating a message asynchronously. </p> <codeblock id="GUID-69C1C1DB-8813-56DC-8BDF-BF8B13D43583" xml:space="preserve">void CTxtMtmForwardOperation::CreateMessageL()
+    {
+</codeblock> <p>The function constructs a <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> for
+the source entry and then retrieves its index entry. </p> <codeblock id="GUID-5E1A2C12-832E-54BF-91A4-9755348FD298" xml:space="preserve">delete iMsvEntry;
+    iMsvEntry = NULL;
+    iMsvEntry = iMsvSession.GetEntryL(iSourceMessage);
+        
+    // Get the entry to be forwarded    
+    TMsvEntry forwardEntry = iMsvEntry-&gt;Entry();
+</codeblock> <p>The context of <xref href="GUID-55F14844-0FCB-380C-B797-956CA2B2CFE2.dita"><apiname>iMsvEntry</apiname></xref> is changed to
+the destination folder and an entry is created. </p> <codeblock id="GUID-ECBE0131-DCC1-5182-B8D9-DBA35F4FD42A" xml:space="preserve">// Set the context to the destination folder
+    iMsvEntry-&gt;SetEntryL(iDestinationFolder);
+</codeblock> <p>The index entry’s date is updated to reflect the current date. </p> <codeblock id="GUID-B7156135-805B-509E-8778-EA17E5B69AE6" xml:space="preserve">// Create the forwarded index entry
+    forwardEntry.iDate.HomeTime();
+    iMsvEntry-&gt;CreateL(forwardEntry);
+</codeblock> <p>The <xref href="GUID-CAE27183-B48C-3B02-A88D-98CC51475DC0.dita"><apiname>iFinalMsgId</apiname></xref> member of the progress
+is updated to reflect the newly created entry. </p> <codeblock id="GUID-2C15F0E2-64C9-507B-8997-D257DACE0EEB" xml:space="preserve">iProgress.iFinalMsgId = forwardEntry.Id();
+
+    // schedules the active object to complete so that this 
+    // class's RunL method
+    // will be called by the active scheduler
+    SetActive();
+</codeblock> <p>The operation’s <codeph>TRequestStatus</codeph> is then flagged
+to cause <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref>. </p> <codeblock id="GUID-971DFF4A-E78F-5EBD-8DFB-616DA421E521" xml:space="preserve">TRequestStatus* stat = &amp;iStatus;
+    User::RequestComplete(stat, KErrNone);
+     }
+</codeblock> <p>When this happens,<codeph> iProgress.iState</codeph> is set
+to <codeph>ECreateMessage</codeph>, so the following code is executed: </p> <codeblock id="GUID-1AA9893A-2CAA-5E64-A09A-E20689B38BAF" xml:space="preserve">case TTxtMtmForwardOpProgress::ECreateMessage:
+    iProgress.iState =        TTxtMtmForwardOpProgress::EFormatBodyText;
+    FormatBodyTextL();
+    break;</codeblock> <p>The state is set to <codeph>EFormatBodyText</codeph> and
+the <xref href="GUID-FC4144F7-9D46-3D30-8316-ED22170E37B0.dita"><apiname>FormatBodyTextL()</apiname></xref> function is called. </p> <codeblock id="GUID-51C72DF8-9F39-51EA-BFFC-E4793A7B6621" xml:space="preserve">
+void CTxtMtmForwardOperation::FormatBodyTextL()
+   { 
+</codeblock> <p>The function constructs a <xref href="GUID-C5A6B3D4-1BDE-35B4-AC6B-DF517A4D4147.dita"><apiname>CParaFormatLayer</apiname></xref>,
+a <xref href="GUID-7BEFAAD5-15C3-35A0-BDEF-BC56380D6CE5.dita"><apiname>CCharFormatLayer</apiname></xref>, and a <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object.
+These objects are required to store the body text of the forwarded message. </p> <codeblock id="GUID-D02202DB-9E19-5873-86D6-6B0DCF035B74" xml:space="preserve">CParaFormatLayer* paraLayer = CParaFormatLayer::NewL();
+   CleanupStack::PushL(paraLayer);
+   CCharFormatLayer* charLayer = CCharFormatLayer::NewL();
+   CleanupStack::PushL(charLayer);
+   CRichText* body = CRichText::NewL(paraLayer, charLayer);
+   CleanupStack::PushL(body);
+</codeblock> <p>Then the context of <codeph>iMsvEntry</codeph> is changed
+to point at the source message and a read-only <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> is
+opened for that entry. </p> <codeblock id="GUID-F3B582CD-867C-54FD-ACAB-0F50319601BC" xml:space="preserve">// Get the message store from the source entry
+   iMsvEntry-&gt;SetEntryL(iSourceMessage);
+   CMsvStore* readStore = iMsvEntry-&gt;ReadStoreL();
+   CleanupStack::PushL(readStore);</codeblock> <p>The context of the <xref href="GUID-55F14844-0FCB-380C-B797-956CA2B2CFE2.dita"><apiname>iMsvEntry</apiname></xref> object
+is changed to point at the newly created entry and a <xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref> is
+opened for that entry. </p> <codeblock id="GUID-097EC5DB-9FCB-5D45-8B94-8E7DB5256005" xml:space="preserve">// Get the message store from the newly created destination 
+   // entry
+   iMsvEntry-&gt;SetEntryL(iProgress.iFinalMsgId);
+   CMsvStore* writeStore = iMsvEntry-&gt;EditStoreL();
+   CleanupStack::PushL(writeStore);
+
+   // Get the body text from the source entry and write it
+   // to the destination entry, prepending the forward 
+   // prefix
+   readStore-&gt;RestoreBodyTextL(*body);
+   body-&gt;InsertL(0, KTxtMtmFwdPrefix);
+
+     // this method performs a commit for us
+   writeStore-&gt;StoreBodyTextL(*body);
+ 
+   CleanupStack::PopAndDestroy(5, paraLayer); 
+
+   // schedules the active object to complete so that this 
+   // class's RunL method
+   // will be called by the active scheduler
+   SetActive();
+   TRequestStatus* stat = &amp;iStatus;
+   User::RequestComplete(stat, KErrNone);
+   }
+</codeblock> <p>The <codeph>iProgress.iState</codeph> is set to <codeph>EFinished</codeph>,
+and because the object has not been activated the following conditional statement
+evaluates true: </p> <codeblock id="GUID-9CC7BAD3-B185-59F4-8CED-7BE23886661A" xml:space="preserve">if(!IsActive())
+    {
+    TRequestStatus* stat = &amp;iObserverRequestStatus;
+    User::RequestComplete(stat, KErrNone);
+    }
+</codeblock> <p>The observer active object’s <codeph>TRequestStatus</codeph> is
+flagged to let it know that the operation is complete. </p> <p>To return progress
+from the operation, implement the <xref href="GUID-E13013FF-09B9-3A9A-B471-0A9AE90E49EC.dita"><apiname>ProgressL()</apiname></xref> and <xref href="GUID-890A4968-EAD6-30F5-97D8-E6C07BA28B37.dita"><apiname>FinalProgress()</apiname></xref> functions. <xref href="GUID-E13013FF-09B9-3A9A-B471-0A9AE90E49EC.dita"><apiname>ProgressL()</apiname></xref> must
+be used to return progress information on the operation during processing,
+and <xref href="GUID-890A4968-EAD6-30F5-97D8-E6C07BA28B37.dita"><apiname>FinalProgress()</apiname></xref> is guaranteed to return the status
+of a completed operation. <xref href="GUID-E13013FF-09B9-3A9A-B471-0A9AE90E49EC.dita"><apiname>ProgressL()</apiname></xref> must be implemented
+to leave with <codeph>KErrNotReady</codeph> if the operation is not in progress,
+and <xref href="GUID-890A4968-EAD6-30F5-97D8-E6C07BA28B37.dita"><apiname>FinalProgress()</apiname></xref> must panic if the operation is not
+complete. </p> <codeblock id="GUID-4EAE052A-F445-589E-8B6A-983A579FBAE6" xml:space="preserve">const TDesC8&amp; CTxtMtmForwardOperation::ProgressL()
+            {
+            if (!IsActive())
+                        {
+                        User::Leave(KErrNotReady);
+                        }
+   iProgressBuf() = iProgress;
+   return iProgressBuf;
+   }
+
+const TDesC8&amp; CTxtMtmForwardOperation::FinalProgress()
+            {
+    __ASSERT_ALWAYS(!IsActive(), User::Panic(KTxtCPanic,
+                            ETxtcOperationIsActive));
+            iProgressBuf() = iProgress;
+   return iProgressBuf;
+   }</codeblock> <p>The <xref href="GUID-189483E6-31EA-32DF-8CD5-ECE58592DB3E.dita"><apiname>RunError()</apiname></xref> function must also be
+implemented to get any leaves in <xref href="GUID-12C281FF-546C-318D-8783-F26B0F619E11.dita"><apiname>RunL()</apiname></xref>. </p> <codeblock id="GUID-D41E3F81-83E2-5F9C-BDB0-A97A4D9920A6" xml:space="preserve">TInt CTxtMtmForwardOperation::RunError(TInt aError)
+    {
+    iProgress.iError = aError;    
+    TRequestStatus* stat = &amp;iObserverRequestStatus;
+    User::RequestComplete(stat, aError);
+    return KErrNone;
+    }</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM overview</linktext>
+</link>
+<link href="GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita"><linktext>MTM Capabilities</linktext>
+</link>
+<link href="GUID-1E2DB50A-D8D7-595D-8448-77F057655E82.dita"><linktext>Writing a
+Client MTM</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E18584A9-4F16-51D0-89CB-96275A588F54.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E18584A9-4F16-51D0-89CB-96275A588F54" xml:lang="en"><title>Using Array
+Keys</title><shortdesc>This document provides links to documents relating to using array
+keys.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4" xml:lang="en"><title>Package
+Buffers Overview</title><shortdesc>Allows any value type (a T class) to be encapsulated as a descriptor,
+for the purpose of inter-thread data transfer.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-D6ADB133-EB0D-41C5-B513-152ED052BA9F"><title>Architectural relationships</title> <p>The Client/Server API
+expects data that is to be passed between threads to be encapsulated in a
+descriptor. Package buffers provide a generic way for the thread providing
+the data to do this. The thread receiving the data extracts the original data
+from the package.</p> <p>APIs with client/server architectures, such as telephony
+and Messaging, define specialised package buffer types that encapsulate the
+particular data types that they require to pass between threads.</p> </section>
+<section id="GUID-545604B3-1A3A-4236-AB40-F15E19D40487"><title>Description</title> <p>The API has two key concepts: package
+buffer descriptor, and package pointer descriptor. </p> </section>
+<section id="GUID-5B34C59B-3D61-48E9-9939-0259E1EC9A64"><title>Package buffer descriptor</title> <p>The package buffer descriptor
+creates a new instance of the type to encapsulate and stores it within the
+descriptor. The interface allows a reference to the encapsulated object to
+be obtained, so that it can be accessed and modified.</p> <p>The package buffer
+descriptor interface is provided by <xref href="GUID-C7A094BD-846F-3ED2-8CCE-C0743DB3712A.dita"><apiname>TPckgBuf</apiname></xref>.</p></section>
+<section id="GUID-B12499C9-B385-43CF-8342-06B34150BE67"><title>Package pointer descriptor</title> <p>The package pointer
+descriptor refers to an already existing object. It is otherwise used in a
+similar way to the package buffer descriptor.</p> <p>The package pointer descriptor
+interface is provided by <xref href="GUID-36B29964-420D-38D0-AF08-4DA70BED8B6E.dita"><apiname>TPckgC</apiname></xref> for const objects, and <xref href="GUID-4DFB8E64-81FF-3D3B-9694-CE51B11DA69A.dita"><apiname>TPckg</apiname></xref> for
+non-const objects. </p> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server
+Overview</xref></desc>
+</link>
+<link href="GUID-11EEFB3D-0414-5BEB-9D78-56A4B9154008.dita"><linktext>Using Descriptors</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1A2872E-6E8D-4C02-B3C0-23213FD56106.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E1A2872E-6E8D-4C02-B3C0-23213FD56106" xml:lang="en"><title>Handling
+button events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Use the <codeph>MCoeControlObserver</codeph> observer interface to observe
+button events. Set the button container to be its observer.</p>
+<p>For more information on events, see <xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">Event
+handling</xref>.</p>
+<codeblock xml:space="preserve">void CMyAppContainer::HandleControlEventL( CCoeControl* aControl, 
+                                                  TCoeEvent aEventType ) 
+    { 
+        switch ( aEventType ) 
+            { 
+
+// Button state changed (button was pressed) 
+
+            case EEventStateChanged: 
+                … 
+                break; 
+
+// Button is pressed for a long time (in case of 
+// a KAknButtonReportOnLongPress flagged button) 
+
+            case CAknButton::ELongPressEvent: 
+                … 
+                break; 
+
+// Button long press ended (in case of 
+// a KAknButtonReportOnLongPress flagged button) 
+
+            case CAknButton::ELongPressEndedEvent: 
+                … 
+                break; 
+
+            default: 
+                break; 
+            } 
+    } 
+
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1CF82AA-D1CB-59A6-96B6-17235278E2F9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E1CF82AA-D1CB-59A6-96B6-17235278E2F9" xml:lang="en"><title>Types of Service</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E1E11C95-3400-548B-AEEE-577DA8FB9ECB"><title>Processing Window Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following examples demonstrate how to process window-related event types, which are events local to specific windows and include pointer events. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <section><title>Pointer events</title> <p>To detect if a pointer event has been issued, use the <codeph>EEventPointerEnter</codeph>, <codeph>EEventPointerExit</codeph>, <codeph>EEventPointer</codeph> and <codeph>EEventDragDrop</codeph> event types. </p> <p>You can request information about the pointer event type by calling the <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>TWsEvent::Pointer()</apiname></xref> function. </p> <codeblock id="GUID-90CD8C29-ED2D-5CF6-9EDF-8F60ACA7B2D3" xml:space="preserve">    // Pointer events
+    case EEventPointer:
+    case EEventDragDrop:
+    {
+    // Gets the pointer position
+    TPointerEvent&amp; pointerEvent = *iWsEvent.Pointer();
+    TPoint point = pointerEvent.iPosition;
+    break;
+    }</codeblock> </section> <section><title>Pointer events are ready to retrieve from a buffer</title> <p>To detect whether pointer events are ready to retrieve from a buffer, use the <codeph>EEventPointerBufferReady</codeph> event type. </p> <p>The <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>RWindowBase::EnablePointerMoveBuffer()</apiname></xref> function instructs the Window Server to begin putting pointer events into the pointer move buffer. </p> <p>You can get the buffer containing the stored pointer events by calling <xref href="GUID-5D0B1595-1AC7-3C44-AC6B-0EFB5EABCF31.dita"><apiname>RWindowBase::RetrievePointerMoveBuffer()</apiname></xref>. </p> <codeblock id="GUID-A878A55B-2987-5331-BC2D-88330F7907A6" xml:space="preserve">    // Pointer events are ready to retrieve from a buffer
+    case EEventPointerBufferReady:
+    {
+    const TInt KPointerMoveBufferSize = 20;
+
+    // Gets the window
+    RWindow* window = (RWindow*)(iWsEvent.Handle());
+
+    // Set up an array of TPoints into which to read the buffer
+    TPoint pnts[KPointerMoveBufferSize];
+    TPtr8 ptr((TUint8 *)&amp;pnts;,sizeof(pnts));
+    TInt numPts = window -&gt; RetrievePointerMoveBuffer(ptr);
+    break;
+    }
+</codeblock> <p>Note that the way to map the handle to a window depends on the environment that you are working in, usually this will be the UI Control Framework which will have to do this mapping a different way. </p> </section> </conbody><related-links><link href="GUID-CD550DE7-D013-527B-BADE-5CB122C352C8.dita"><linktext>Pointer Handling</linktext> </link> <link href="GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita"><linktext>Advanced Pointers</linktext> </link> <link href="GUID-B830A1F7-9220-5879-80BE-C494A4CD155B.dita"><linktext>General Events</linktext> </link> <link href="GUID-A51D3749-442A-54E8-8EB5-BF907694CD8C.dita"><linktext>Processing Window-Group
+                Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1EF7223-02EA-5875-84E6-6415E7081F6E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E1EF7223-02EA-5875-84E6-6415E7081F6E" xml:lang="en"><title>Comms-Infras API Tests</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E1FFE8AB-9C4C-51DB-AC08-F0A18C33D735.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E1FFE8AB-9C4C-51DB-AC08-F0A18C33D735"><title>Creating a Bitmap by Duplicating</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic provides an example that shows the creation of a bitmap by the duplication of another bitmap. </p> <codeblock id="GUID-BE48C386-E323-5E4B-908C-FFE017FC4B1D" xml:space="preserve">// create bitmap 3 as a duplicate of bitmap 2
+iBitmap3 = new (ELeave) CFbsBitmap();
+User::LeaveIfError(iBitmap3-&gt;Duplicate(iBitmap2-&gt;Handle()));</codeblock> <p> <b>Note</b>: The deletion of bitmap 2 would not affect bitmap 3 in any way. </p> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E20C2C98-A294-551B-99CF-BE1DAA6F597E" xml:lang="en"><title>Serialising
+XML DOM</title><shortdesc>This topic explains how to serialise a DOM document and save it
+to a file. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>Before you start, you must: </p> <ul>
+<li id="GUID-128FA93B-B492-5F86-8E94-2DE1FDC3E29C"><p>understand the concepts
+of <xref href="http://www.w3.org/DOM/" scope="external">Document Object Model
+(DOM)</xref> and serialisation </p> </li>
+<li id="GUID-B55CE275-DE00-5788-8D53-0F581078FFC9"><p>understand the structure
+and classes of the <xref href="GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita">XML
+DOM Engine </xref> component </p> </li>
+<li id="GUID-75078E65-3FB2-5DC1-8D52-3D5B0E1A9674"><p>have created an <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>RXmlEngDocument</apiname></xref> (called <codeph>myDoc </codeph> in
+this example), either by parsing an XML file (as indicated in the <xref href="GUID-C5C30218-311C-58D9-A990-3F95642F7517.dita">XML
+DOM Parsing Tutorial</xref>) or by adding nodes to a new DOM tree. </p> </li>
+</ul> </prereq>
+<context> <p>The XML Engine is based on the libxml2 library, which supports
+the serialisation of XML documents. This process converts a DOM tree into
+a format that can be saved to a file or transferred through a network connection. </p> <p>This
+tutorial explains how to save an existing XML document to a file. To store
+the result in a buffer, use the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>SetOutput(RBuf8&amp;)</apiname></xref> method
+instead of the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>SetOutputL(TDesC&amp;)</apiname></xref> method
+used below. </p> </context>
+<steps id="GUID-818D2E7F-4ECB-5687-AF68-2C02930519C7">
+<step id="GUID-A241AD29-F46C-51DE-A30A-7F37AAACB5D4"><cmd/>
+<info>If you have not done it earlier, call the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlEnginePushL()</apiname></xref> method
+to open the XML library and put serialisation resources on the clean-up stack. </info>
+<stepxmp><codeblock id="GUID-8CBCDA21-7DFB-5608-811F-4F9B126BD0A7" xml:space="preserve">XmlEnginePushL();</codeblock> </stepxmp>
+</step>
+<step id="GUID-3A35C368-F1CB-5183-8C4D-1E141F2B8ED4"><cmd>Create an instance
+of the serialiser by calling its <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>NewL()</apiname></xref> method. </cmd>
+<info>The serialiser type is a member of the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngSerializerType</apiname></xref> enumeration. </info>
+<stepxmp><codeblock id="GUID-587BB00E-579E-593F-B6CD-F58A548C2FBE" xml:space="preserve">CXmlEngSerializer* serializer = CXmlEngSerializer::NewL( ESerializerDefault );</codeblock> </stepxmp>
+</step>
+<step id="GUID-79270763-1081-57D8-9EB2-D21F7DF7035F"><cmd>Configure the serialiser
+by using the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>SetOutputL()</apiname></xref> and <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>SetSerialisationOptions()</apiname></xref> methods. </cmd>
+<info>You set the type of output (file, buffer, or stream) by choosing one
+of the <codeph>SetOutput()</codeph> or <codeph>SetOuputL()</codeph> methods. </info>
+<stepxmp><codeblock id="GUID-5CCEBBCE-EE31-56B5-ADB7-06362097A90E" xml:space="preserve">_LIT( KOutputFile, "c:\\tutorial.xml" );
+serializer-&gt;SetOutputL( KOutputFile );</codeblock> </stepxmp>
+<info>The <codeph>SetSerialisationOptions()</codeph> function sets other serialisation
+options from the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>TXmlEngSerializationOptions</apiname></xref> class. </info>
+<stepxmp><codeblock id="GUID-DF615E82-757C-518F-BDC7-55189153D4D7" xml:space="preserve">TXmlEngSerializationOptions options( TXmlEngSerializationOptions::KOptionIndent );
+serializer-&gt;SetSerializationOptions( options );
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-77071B6A-3FAE-5BC6-BC91-FF998AC1E744"><cmd/>
+<info>Call the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>SerializeL()</apiname></xref> method to save
+your document to the <filepath>tutorial.xml</filepath> file. </info>
+<stepxmp><codeblock id="GUID-2358B434-3A2C-5EEE-A45D-1F0446CBC47F" xml:space="preserve">TInt bytesWritten = serializer-&gt;SerializeL( myDoc );</codeblock> </stepxmp>
+</step>
+<step id="GUID-EC0F4C51-CD58-5142-A17D-EB4FCAAA7099"><cmd/>
+<info>Free your resources as necessary. </info>
+<substeps id="GUID-17893DB6-AFBE-5E69-8FBD-F4010C7B0664">
+<substep id="GUID-6475F251-42DE-51B2-A4DD-26195B95ACB2"><cmd/>
+<info>Close the XML library by calling the <xref href="GUID-5748D958-9480-3358-A399-6B92293B86D9.dita"><apiname>XmlPopAndClose()</apiname></xref> method.
+This method also removes the serialisation resources from the clean-up stack. </info>
+</substep>
+<substep id="GUID-3B286D3D-049D-52A2-893A-B5601A79C727"><cmd/>
+<info>Perform any other clean-up operations. </info>
+</substep>
+</substeps>
+</step>
+</steps>
+<result><p>The data in the <codeph>myDoc</codeph> XML document
+is stored in the <filepath>tutorial.xml</filepath> file. </p> </result>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E211C047-FCF9-5B48-B9D9-97C3D093E19B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E211C047-FCF9-5B48-B9D9-97C3D093E19B"><title>List of Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-F0E4FA44-A41C-3C6F-993E-39CED042A879.dita"><apiname>CSIPResolvedClient</apiname></xref> and <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> classes are available as a part of the SIP Client Resolver API. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E21287EF-7211-590B-A1E3-E0B37069FCB2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E21287EF-7211-590B-A1E3-E0B37069FCB2" xml:lang="en"><title>POSIX Realtime Extensions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>POSIX real-time extensions (based on <xref scope="external" href="http://en.wikipedia.org/wiki/POSIX">POSIX 1003.1b</xref>) define extensions such as timers, priority scheduling, real-time signals, semaphores, memory queues, shared memory and memory locking that are useful for development of real-time systems. Extensions such as, timers and shared memory are supported by the <xref scope="external" href="http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/librt.html">Librt library</xref>, which conforms to the Linux Standard Base (LSB) 3.1 Specification. Symbian platform supports the Librt library, which enables Symbian Developers to port Librt-based applications to Symbian platform quickly and easily.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E2252589-DCFB-5272-8FB3-701712D7F417.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E2252589-DCFB-5272-8FB3-701712D7F417" xml:lang="en"><title>Multimedia
+Quick Start</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document provides entry points for readers seeking to understand the
+technology of the Symbian platform Multimedia module and its documentation. </p>
+<p>Symbian platform phones are typically loaded with multimedia gadgets such
+as cameras (for recording still and video images), radios, video and music
+players. The Multimedia module provides a means of accessing and controlling
+the hardware that drives these features. </p>
+<section id="GUID-CA3522A7-66A7-5D62-B9BB-03993CD62884"><title>Getting started
+with Multimedia</title> <p>Multimedia functionality is summarized below: </p> <p><b>Playing
+and Recording audio and video</b> </p> <p>You can write applications to play
+and record audio and video: </p> <p><b>Audio</b> </p> <ul>
+<li id="GUID-8A03FD08-FBFA-5B60-A898-41BB887ED991"><p>Play recorded audio
+files from a device using <xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio
+Client</xref>. </p> </li>
+<li id="GUID-1D730F97-1235-57DB-B05A-0E9E98EE3738"><p>Make audio recordings
+from the device using <xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio
+Client</xref>. </p> </li>
+<li id="GUID-570F84B8-FB2B-5441-B51A-223738580BFE"><p>Record streaming audio
+using <xref href="GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita">Streaming Audio
+Recorder</xref>. </p> </li>
+<li id="GUID-53C9CEEA-6C66-5F02-9DB8-DBB4E6B83333"><p>Play streaming audio
+using <xref href="GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita">Streaming Audio
+Player</xref>. </p> </li>
+</ul> <p><b>Video</b> </p> <ul>
+<li id="GUID-B4110157-E99B-5DCF-8D62-BB1BB2AFACBF"><p>Play recorded video
+files from a device using the <xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Video
+Client</xref> video player. </p> </li>
+<li id="GUID-7D0B1BF3-7A65-5DD9-B582-E8975DC46DF4"><p>Make video recordings
+files from a device using the <xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Video
+Client</xref> video recorder. </p> </li>
+<li id="GUID-20F83D16-A8A5-5275-8752-4A9FBB25F60F"><p>Display subtitles artwork
+on a video window using the <xref href="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita">Video
+Subtitle CRP</xref> component. </p> </li>
+<li id="GUID-1B6988C8-FB8E-518C-9AFF-AD0836D7A63E"><p>Create and destroy a
+surface for video rendering using the <xref href="GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita">Video
+Renderer</xref> component. </p> </li>
+</ul> <p><b>Accessing multimedia hardware</b> </p> <p>Devices may include
+the following hardware components: </p> <ul>
+
+<li id="GUID-1C19D943-5F4F-5AAA-8595-751E14777492"><p>Camera - for capturing
+still and video images using <xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Camera
+Framework</xref>. </p> </li>
+
+
+<li id="GUID-081710DF-6E7E-5CA0-B043-DE1D66FB21C7"><p>Speech recognition -
+for making requests from the MMF (Multimedia Framework) to the DevASR (DevSound
+Automatic Speech Recognition), which are transported using the <xref href="GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita">Speech
+Recognition Controller </xref> component. </p> </li>
+<li><p>Hardware abstraction layer - for video playing and recording using
+the <xref href="GUID-842D8124-554F-5D89-9E20-8B48EA539D2F.dita">Video HAI Component</xref></p></li>
+</ul> <p><b>Manipulating images</b> </p> <p>Many of the most common image
+manipulation techniques are provided: </p> <ul>
+<li id="GUID-C1AC52E7-2A88-51F0-8485-A1FBFAA64320"><p>Image encoding and decoding
+is provided using <xref href="GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita">Image
+Conversion</xref>. </p> </li>
+<li id="GUID-8EE315BD-90E3-521D-BDEB-4FB3EA64069A"><p>Reading and editing
+image metadata using the <xref href="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita">Exchangeable
+image file format</xref> (Exif). </p> </li>
+<li id="GUID-98F15E8A-59F8-5441-9FB5-58B2B5B378B7"><p>Image transformations
+such as rotations, masking, mirroring flipping, stretching, resizing, and
+many other common image transformation techniques are provided using <xref href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita">Bitmap Transformation</xref> and <xref href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita">Image Transformation</xref>. </p> </li>
+<li id="GUID-ED0B62DA-B6CC-582E-BEE5-0645E735DBEC"><p>Processing an image
+on a mobile device is provided using <xref href="GUID-0EBD074D-49E9-5E3E-9FA9-3484E968ABDB.dita">Image
+Processor Library</xref>. </p> </li>
+</ul> </section>
+<section><title>Technologies</title> <p>The following is a list of technologies
+used by Multimedia to enable various features: </p> <ul>
+
+<li id="GUID-93528CEA-86C0-54FD-9021-F1A279BD3C77"><p> <b>Exif</b> - to include
+metadata for an image, such as, a time/date stamp, a description, GPS location
+data, an embedded thumbnail. </p> </li>
+<li id="GUID-30C128FF-EBBA-5811-9817-472A82893920"><p> <b>Codecs</b> - to
+deal with (playing, recording, streaming) audio and video data in one of the
+many supported formats through the Symbian. </p> </li>
+
+
+
+</ul> </section>
+<section><title>Documentation and examples</title><p>The following sections
+list tutorials and example applications that can be used to play and record
+audio and video data, perform image processing and manipulation, and access
+any camera and radio tuner hardware present on a mobile phone. </p><p><b>Tutorials</b></p><ul>
+<li><p><xref href="GUID-03D132BE-5B90-50E1-88D3-D66289C02444.dita">Audio Client
+Tutorials</xref></p></li>
+<li><p><xref href="GUID-C2BF3044-CC37-554D-9496-C7B18AE94561.dita">Audio Input
+Stream Tutorials</xref></p></li>
+<li><p><xref href="GUID-4D94A4B8-392D-5657-BD71-F1EA54318C47.dita">Audio Output
+Stream Tutorials</xref></p></li>
+<li><p><xref href="GUID-F370A917-6963-58F6-8876-160A1DC42040.dita">Video Client
+Library Tutorials</xref></p></li>
+<li><p><xref href="GUID-354240A8-2DDD-5181-9A36-9A054D239B62.dita">Video Subtitle
+CRP Tutorial</xref></p></li>
+<li><p><xref href="GUID-55A1A47A-A7DD-5B1A-88E1-4818CB65B782.dita">Camera Library
+Tutorials</xref></p></li>
+
+<li><p><xref href="GUID-786A8188-AB4D-5C65-8BEF-50E45FDBE9A5.dita">Image Conversion
+Library Tutorials</xref></p></li>
+<li><p><xref href="GUID-26FD66B4-A291-5DAD-991D-40AB5316F30C.dita">Initializing
+and Processing an Image Tutorial</xref></p></li>
+
+
+
+</ul><p><b>Example applications</b></p><ul>
+<li><p><xref href="GUID-288C200C-760D-52A2-8FC7-E179E5FB1A2A.dita">Multimedia Example
+Code</xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E23CC708-1DD1-5DFC-992A-997AA107A616.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E23CC708-1DD1-5DFC-992A-997AA107A616" xml:lang="en"><title>File server plugins</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The File Server Plugin Framework provides a way for developers to extend the functionality of the Symbian OS File Server. Developers can produce plugins that intercept file and directory IO. </p> <p>The interception and processing of requests by plugins is transparent to the application making the request. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E23D699C-D087-5ADA-BD46-BA5D68DD0047.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E23D699C-D087-5ADA-BD46-BA5D68DD0047"><title>eval</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>eval [arg ...]</userinput> </p> <p>Reads the arguments as input to the shell and executes the resulting command(s). </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E244744F-4837-5B46-8E37-4666A28BF0B7"><title>The run-time control hierarchy</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>At run-time all controls in an application are related to each other in a tree hierarchy. The top-level window-owning controls are owned by the AppUi. This is similar to the hierarchy of windows that exists in the Window Server which has a group window for each application at the root. It is important to understand the relationships between window-owning and non-window owning controls. The diagram below attempts to illustrate these. </p> <fig id="GUID-C54A1D04-CA7D-5E3D-8FA0-327D511D5D45"><title>
+          The run-time control hierarchy 
+        </title> <image href="GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e12299_href.png" placement="inline"/></fig> <p>A non-window-owning control is confined to the extent of its parent if the parent is window-owning, and must be confined to the extent of its parent if the parent is non-window-owning. </p> <p>A window-owning component is confined to the nearest window-owning control above it in the hierarchy. </p> <p>Screen drawing may be initiated by either the application (because it's running and it has changed its display) or by the Window Server (because something else has updated the screen and the application is visible). </p> <ul><li id="GUID-1EDC9967-25E6-5CA4-9754-1304FFE8A4F0"><p>Application-initiated redrawing follows the control framework run-time hierarchy: controls are drawn by their parents regardless of whether they are window-owning or not. </p> </li> <li id="GUID-ED6464FC-485A-5E62-BBE6-D297A975BF71"><p>Window-Server-initiated redrawing, on the other hand, follows the Window Server hierarchy: parents do not draw their window-owning children. </p> </li> </ul> <p>A control's container or parent control may not be changed after it has been set. </p> <p>The run time hierarchy of controls has been enhanced for version 9.1 of the Symbian OS. The distinction between the 'parent-child' relationship from the Window Server and the 'container-component' relationship from the control framework may be simplified with the addition of a parent pointer to CCoeControl. </p> <p>In UIQ v3 the parent pointer is enabled. In S60 and MOAP the parent pointer currently is not enabled. </p> <p>The addition of the parent pointer allows the framework to navigate the control hierarchy upwards as well as downwards. When enabled, the parent pointer is set automatically (see <xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita#GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290/GUID-3F0E8223-2218-5C95-AFBC-D66AD1DB12A7">how to write a control</xref>). </p> <p>The run-time hierarchy is particularly significant when laying out and when refreshing the screen. Here are a few examples of how the framework uses the run-time hierarchy. </p> <ul><li id="GUID-9AA456A8-EB70-562F-8303-EF825BBA48E9"><p>When a control is drawn it must have the correct Look and Feel: its colours, fonts, font style, size and shape must be correct. Controls use their parent's graphics contexts and text drawers. </p> </li> <li id="GUID-38B4FE1B-BEE7-53DE-A8C6-192D7BF9B1AA"><p>If a control (lodger or a parent) changes size, the controls around or within it might have to move or resize. From 9.1 the framework provides a layout manager interface (<xref href="GUID-A622B8C7-60F4-38E8-B102-14883BCBA249.dita"><apiname>MCoeLayoutManager</apiname></xref>). Controls use the run-time hierarchy to find the appropriate layout manager. </p> </li> <li id="GUID-9EE92BB4-AC03-55FF-96BE-402B19EEC8FA"><p>From 9.1 parent controls take responsibility for drawing behind their children. This allows flexibility with backgrounds, transparent controls and controls which appear non-rectangular. To enable this process to work with window-owning controls (necessary because the Window Server will not allow parent windows to draw behind child windows) a new interface, <xref href="GUID-88936D48-B801-3D9C-8A9D-3498807937CE.dita"><apiname>MCoeControlBackground</apiname></xref>, has been introduced. When a window owning control draws itself it first looks for an <xref href="GUID-88936D48-B801-3D9C-8A9D-3498807937CE.dita"><apiname>MCoeControlBackground</apiname></xref> in its chain of parents and calls <codeph>MCoeControlBackground::Draw()</codeph> before drawing itself. </p> </li> </ul> <p> </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e178502_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E25A5C1E-83D7-51D5-8F11-9C44C6CEEDCE" xml:lang="en"><title>Starting
+as Controller</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The controller is the device that sends commands to a target device. </p>
+<p><b>Intended Audience: </b> </p>
+<p>This tutorial is designed for Symbian licensees and 3rd party application
+developers. </p>
+<section><title>Using the Controller</title> <p>The following tasks will be
+covered in this tutorial: </p> <ul>
+<li id="GUID-E2D1E9EE-E004-5401-B714-F98544853EE6"><p>Starting a Connectionless
+controller </p> </li>
+<li id="GUID-869B57EB-77FE-52C3-A211-7DAEEA7E8EF5"><p>Starting a Connection-Oriented
+controller </p> </li>
+<li id="GUID-11CC8516-F861-505B-9AC3-9F851FDE0DFC"><p>Stopping a controller </p> </li>
+</ul> <p><b> Basic procedure</b> </p> <p>The high level steps to start a controller
+are: </p> <ul>
+<li id="GUID-BF89D59C-7A44-5AF1-B9CD-18E5F5182716"><p>Create the Controller
+interface </p> </li>
+<li id="GUID-E25EFF1D-4176-55D9-B180-610694CDD497"><p>Open a controller session
+on the server. This will either be: </p> <ul>
+<li id="GUID-3DCE1277-80CF-50E7-8039-1C2BCA5D264D"><p>Connectionless </p> <p>This
+would be enough to create a connectionless controller. </p> </li>
+<li id="GUID-D60CE56B-AEB3-5775-B6E7-DBE16FF0304F"><p>Connection-oriented </p> <p>If
+you are starting a connection-oriented controller you will need to know the
+following: </p> <ul>
+<li id="GUID-641DAE94-036F-5168-B6AE-91205E22D234"><p>Device address </p> </li>
+<li id="GUID-A37F327B-95D7-5A36-AAEF-E3BCCCC56DF6"><p>Bearer </p> </li>
+</ul> </li>
+</ul> </li>
+</ul> <note> Starting the Bluetooth stack and setting up the
+sockets, housekeeping tasks usually associated with Bluetooth components,
+are wrapped up and taken care of in the background by the Remote Control Framework.</note></section>
+<section><title>Starting a connectionless controller</title> <p>Create a controller
+interface by instantiating an interface selector using <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita#GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462/GUID-17C0EFFE-AEE4-31E6-97D6-701CFD3E761C"><apiname>CRemConInterfaceSelector::NewL()</apiname></xref>,
+as shown here: </p> <codeblock id="GUID-F7645600-01B3-5DFA-97AD-439CB492E132" xml:space="preserve">CRemConInterfaceSelector* iInterfaceSelector;
+iInterfaceSelector = CRemConInterfaceSelector::NewL();</codeblock> <p>Create
+a core remote control API controller and add the interface selector created
+above as shown here: </p> <codeblock id="GUID-7109464B-CFC1-52B8-8B8F-A0A4831B33DA" xml:space="preserve">CRemConCoreApiController* iCoreController;
+iCoreController = CRemConCoreApiController::NewL(*iInterfaceSelector, *this);</codeblock> <p>Open
+the interface created above using <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita#GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462/GUID-99C2BB74-BD7C-351E-91BD-CCC1D78C7A3C"><apiname>CRemConInterfaceSelector::OpenControllerL()</apiname></xref>. </p> <codeblock id="GUID-D054087B-AF55-5109-8EF0-804C96C1D979" xml:space="preserve">iInterfaceSelector-&gt;OpenControllerL();</codeblock> <p>The
+Target Selector Plugin (TSP) discovers the bearer and device address of target
+devices as required. </p> </section>
+<section><title>Starting a Connection-Oriented controller</title> <p>The first
+part of starting your Connection-Oriented controller is the same as that described
+above for starting a connectionless controller, but to go Connection-Oriented
+you will need to provide two additional pieces of information, the device
+address and the bearer. </p> <p>The following code, which constructs a <codeph>TUid</codeph>,
+shows how to set information about the AVRCP bearer (it may be different for
+other bearers): </p> <codeblock id="GUID-4F943A05-C97D-575D-B5A7-31B952A35ED8" xml:space="preserve">...
+ TUid iBearerUid;
+ RBuf8 iBearerData;
+ iBearerUid = TUid::Uid(KAvrcpBearerUid);</codeblock> <p>To get the device
+address you can either use the SDP, a notifier, or the following: </p> <codeblock id="GUID-6F1643E9-A37D-5BA6-B21B-E7553B894023" xml:space="preserve">GetDeviceAddressL()
+    {
+    // MTestManager iManager;
+    iManager.MtmWrite(
+    _L8( "Type device address and press enter\n0x" ) );
+    // Read address in unicode as human readable
+    TBuf&lt;12&gt; buf;
+    iManager.MtmRead( buf );
+    // Translate to machine readable
+    TBTDevAddr btAddr;
+    LEAVEIFERRORL( btAddr.SetReadable( buf ) );
+    // Store as 8 bit machine readable
+    iBearerData.Close();
+    iBearerData.CreateL( btAddr.Des() );
+    }</codeblock> <p> <note> The above uses test code. In a real application,
+you would need a UI instead of the console. </note></p> <p>Now that you have
+the device address and bearer information you can start the Connection-Oriented
+controller by adding the bearer and Bluetooth device address information to
+the <codeph>addr</codeph> using the <xref href="GUID-3A185192-2A36-33C6-9E09-A04B7BB2D896.dita#GUID-3A185192-2A36-33C6-9E09-A04B7BB2D896/GUID-5C3066AE-CDD1-35C0-89FE-23BCC8F8A44E"><apiname>TRemConAddress::BearerUid()</apiname></xref> and <xref href="GUID-3A185192-2A36-33C6-9E09-A04B7BB2D896.dita#GUID-3A185192-2A36-33C6-9E09-A04B7BB2D896/GUID-AE43EDDD-511F-332C-962A-365AB027D42C"><apiname>TRemConAddress::Addr()</apiname></xref> functions
+as follows: </p> <codeblock id="GUID-7D3E3A30-CDB2-5C14-8811-46F305278A44" xml:space="preserve">TRemConAddress addr;
+addr.BearerUid() = iBearerUid;
+addr.Addr() = iBearerData;
+iInterfaceSelector-&gt;GoConnectionOrientedL( addr );</codeblock> <p>The <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita#GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462/GUID-88822BD1-4274-3A3D-994D-494081653B19"><apiname>CRemConInterfaceSelector::GoConnectionOrientedL()</apiname></xref> function
+makes the controller Connection-Oriented. </p> <p><b>Switching to Connectionless </b> </p> <p>It
+is possible to switch a Connection-Oriented controller to connectionless if
+necessary. The <xref href="GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462.dita#GUID-81EE9382-D501-3FCE-ACD9-7BC5236FC462/GUID-ACCD72A4-4273-3CAD-9032-D8460748E15C"><apiname>CRemConInterfaceSelector::GoConnectionlessL()</apiname></xref> is
+used as shown here: </p> <codeblock id="GUID-0F07E60F-77F5-5291-BAF4-19E85689EDDA" xml:space="preserve">iInterfaceSelector-&gt;GoConnectionlessL();</codeblock> <p>Of
+course you can also switch back to a Connection-Oriented controller as needed. </p> </section>
+<section><title>Stopping a controller</title> <p>To stop your controller use: </p> <codeblock id="GUID-9C8B2A81-0F45-5C17-94AB-AE235C596A58" xml:space="preserve">delete iInterfaceSelector;</codeblock> </section>
+<section><title>What's next?</title> <ul>
+<li id="GUID-8E3BD584-32D3-595B-ABBC-8BE2209C5E7F"><p><xref href="GUID-C4A072E1-4385-5C98-98C1-56F297132F11.dita">Remote
+Control Basics</xref>  </p> </li>
+<li id="GUID-F460D9E7-AAC2-59E6-887D-D000A3A9771D"><p><xref href="GUID-8E25E84C-E8F3-50B2-82E5-0611A341ED27.dita">Starting
+as Target</xref>  </p> </li>
+<li id="GUID-516B6F7D-FC2A-58DA-BECA-279CBB4C5F10"><p><xref href="GUID-7DDF477A-1744-589A-82CB-3CB32D56D7CE.dita">Commands
+and Responses</xref>  </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-E26E46AE-914E-5F21-AB44-10F926BAA8AC" xml:lang="en"><title>EUserHlExample:
+EUser High Level example</title><shortdesc>This example demonstrates how to use the EUser High Level library
+and includes the ceratian features supported by the library. It also demonstrates
+the usage of specific APIs associated with the EUser High Level Library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-EB6346F5-1C3C-5DEB-AD3A-36474C372E1C"><title>Purpose</title> <p>This
+example demonstrates the following features of EUserHL: </p> <ul>
+<li id="GUID-31A8E1A2-F2A9-5DDB-A880-FF27A41F1C3B"><p>String handling </p> </li>
+<li id="GUID-C09DC120-E1B8-5F60-9E90-2078E122C8EF"><p>Object creation and
+automatic resource management </p> </li>
+<li id="GUID-D7F1F68F-B9FC-524C-8B3B-D987582AEE76"><p>Memory usage by EUserHL
+classes </p> </li>
+</ul> </section>
+<section id="GUID-4BE93C59-6FBA-5F1B-90AE-1A8D30FB084C"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-66d31721-b6a6-4c84-b51d-c92f3927df4c.zip" scope="external">EUserHlExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-66d31721-b6a6-4c84-b51d-c92f3927df4c.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section id="GUID-62A4FC58-6832-5282-9E14-DCAB88913E8F"><title>Design and
+implementation</title> <p>The example implements three main functions: </p> <ul>
+<li id="GUID-5B20BDEE-B5A1-5D07-A19A-5CA298D1CEAA"><p> <codeph>WalkthroughStringsL()</codeph> demonstrates
+string handling. </p> </li>
+<li id="GUID-FC833C89-5A32-52E6-93D3-F45DC0A7E865"><p> <codeph>WalkthroughManagedL()</codeph> demonstrates
+object creation and resource management. </p> </li>
+<li id="GUID-7914F607-47BC-557A-B7F4-1432A294F743"><p> <codeph>WalkthroughUsageL()</codeph> demonstrates
+memory usage by EUserHL library classes. </p> </li>
+</ul> <p><b>String handling</b> </p> <p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> is designed
+to be a self-managing, resizable alternative to some of the existing descriptor
+types. </p> <p> <codeph>WalkthroughStringsL()</codeph> demonstrates how <codeph>LString</codeph> can
+be used in similar ways to the existing <codeph>TDesC</codeph> and <codeph>TDes</codeph> descriptor
+classes, as well as showing some additional functions, including: </p> <ul>
+<li id="GUID-DA576055-E813-51DE-8232-9E961596E34D"><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita#GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC/GUID-3A7A28FA-6647-3F51-A628-7857898E5090"><apiname>LString::SetMaxlengthL()</apiname></xref>  </p> </li>
+<li id="GUID-7A845FEC-A1B6-592F-A4E4-B93F301E3E1A"><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita#GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC/GUID-D7071D5E-E3EA-35ED-9A8F-D330162493A7"><apiname>LString::ReserveFreeCapacityL()</apiname></xref>  </p> </li>
+<li id="GUID-3883BD67-A7AA-5E55-8281-D41BC5871815"><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita#GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC/GUID-48151B50-C8C4-3011-9A76-8242EB7E1DDC"><apiname>LString::Compress()</apiname></xref>  </p> </li>
+<li id="GUID-F7BC1D06-38E9-582A-870F-CE38A6DC4FD5"><p> <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita#GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC/GUID-7A5C522F-9B29-3443-A853-EF06BAD08352"><apiname>LString::Reset()</apiname></xref>  </p> </li>
+</ul> <p> <codeph>CStringUserTwoPhase</codeph> is used to demonstrate the
+use of <codeph>LString</codeph> s in the two-phase construction pattern. <xref href="GUID-BD4E0CC4-75A2-306D-A860-06B4138F86EB.dita"><apiname>LCleanedupPtr</apiname></xref> is
+used in place of the <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref> in the <codeph>NewL()</codeph> function. </p> <p> <codeph>CStringUserSinglePhase</codeph> is
+used to demonstrate the use of <xref href="GUID-2C3DFAFD-A2DD-3E44-BB1A-580E60EDD8BC.dita"><apiname>LString</apiname></xref> s in the single
+phase construction pattern. A macro <codeph>CONSTRUCTORS_MAY_LEAVE</codeph> is
+declared to ensure cleanup is correctly handled if the constructor leaves. </p> <p><b>Object
+creation and automatic resource management</b> </p> <p>The <codeph>LCleanedUpXxx</codeph> classes <xref href="GUID-BD4E0CC4-75A2-306D-A860-06B4138F86EB.dita"><apiname>LCleanedupPtr</apiname></xref>, <xref href="GUID-9ECEAE0C-3D5A-3B1F-88DD-28B37CE9950D.dita"><apiname>LCleanedupHandle</apiname></xref>, <xref href="GUID-A7B3BEBB-3805-3149-A9DB-075FFF3DED3F.dita"><apiname>LCleanedupArray</apiname></xref>, <xref href="GUID-E6D04730-8064-3846-99E4-FB638C5EAA65.dita"><apiname>LCleanedupGuard</apiname></xref> and <xref href="GUID-83938A18-23EF-301A-9D40-C89AEDB5DFF0.dita"><apiname>LCleanedupRef</apiname></xref> classes
+provide automatic resource management that avoids the need for the programmer
+to use the cleanup stack. </p> <p> <codeph>WalkthroughManagedL()</codeph> shows
+how the various <codeph>LCleanedUpXxx</codeph> classes are used. It shows
+how objects declared locally to a function (a pointer, a resource handle,
+an array, and an object cleaned up using a <xref href="GUID-CD0A798E-7E42-3689-8E86-F5FD43C758FC.dita"><apiname>TCleanupItem</apiname></xref>)
+are deleted automatically when they go out of scope. </p> <p> <codeph>CManagedUserTwoPhase</codeph> demonstrates
+the use of the management classes in the two-phase construction pattern. <xref href="GUID-BD4E0CC4-75A2-306D-A860-06B4138F86EB.dita"><apiname>LCleanedupPtr</apiname></xref> is
+used in the <codeph>NewL()</codeph> function in place of the <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref>. <codeph>LManagedXxx</codeph> classes
+(for example <xref href="GUID-166B7262-50A5-3C2E-B7DD-3291F96B31AA.dita"><apiname>LManagedPtr</apiname></xref> and <xref href="GUID-FCBCB7A9-AF28-3591-A54D-8AF354E01D11.dita"><apiname>LManagedHandle</apiname></xref>)
+are used to handle cleanup of member data. </p> <p><b>Related APIs</b></p><p><xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref></p><p><xref href="GUID-A7B3BEBB-3805-3149-A9DB-075FFF3DED3F.dita"><apiname>LCleanedupArray</apiname></xref></p><p><xref href="GUID-E6D04730-8064-3846-99E4-FB638C5EAA65.dita"><apiname>LCleanedupGuard</apiname></xref></p><p><xref href="GUID-9ECEAE0C-3D5A-3B1F-88DD-28B37CE9950D.dita"><apiname>LCleanedupHandle</apiname></xref></p><p><xref href="GUID-BD4E0CC4-75A2-306D-A860-06B4138F86EB.dita"><apiname>LCleanedupPtr</apiname></xref></p><p><xref href="GUID-83938A18-23EF-301A-9D40-C89AEDB5DFF0.dita"><apiname>LCleanedupRef</apiname></xref></p><p><xref href="GUID-FCBCB7A9-AF28-3591-A54D-8AF354E01D11.dita"><apiname>LManagedHandle</apiname></xref></p><p><xref href="GUID-166B7262-50A5-3C2E-B7DD-3291F96B31AA.dita"><apiname>LManagedPtr</apiname></xref></p><p><xref href="GUID-CD0A798E-7E42-3689-8E86-F5FD43C758FC.dita"><apiname>TCleanupItem</apiname></xref></p><p><b>Memory
+usage</b> </p> <p> <codeph>WalkthroughUsageL()</codeph> API demonstrates the
+memory overhead of using EUserHL. </p> </section>
+<section id="GUID-1BB8D12F-2303-5F46-BF3F-78416EAB2DBE"><title>Building and
+configuring</title> <p>To build the example: </p> <ul>
+<li id="GUID-324858E0-CD22-533E-A291-4CD4C88935BC"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-01951689-451E-5B11-8A71-08B263B4CA8A"><p>For the emulator, the
+example builds an executable called <filepath>euserhlexample.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or                 urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section id="GUID-B4B61C60-2DAF-5279-A934-DF5B5FCA29E7"><title>Running the
+example</title> <p>This is a console application. The user presses any key
+to step through it and the emulator closes down on exit. </p> </section>
+<section><title>See also:</title><p><xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita">EUser
+High Level Library</xref></p></section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E29CAFA8-523D-57D2-AC1B-D6D01741550B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E29CAFA8-523D-57D2-AC1B-D6D01741550B" xml:lang="en"><title>Window Server
+Internals: Concepts</title><shortdesc>This section provides introductory and overview material about
+the internal workings of the Window Server.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target
+audience</b>: Device creators. </p>
+</conbody><related-links>
+<link href="GUID-862D3B3B-3369-5FF4-B81A-ED5BE415B035.dita"><linktext>Window Server
+  Internals</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9"><title>Handling SDP Attributes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>SDP Database service records are made up of a number of attributes. The attributes identify information about the service such as the class of service, that is the general category to which the service belongs, the date on which the service record was first created, the service's UUID and more. See the SDP specification, link provided elsewhere, for more information. The only required attribute is the UUID for the service. </p> <section><title>How to create and manipulate attributes</title> <p>Symbian have identified a special pattern for creating and manipulating SDP attributes. </p> <p><b>Attribute types</b> </p> <p>Attributes in service records can be one of fixed number of types. The API encapsulates each attribute type in a class, each of which is derived from <xref href="GUID-5528763A-0A50-3029-BEAB-CEC3BA08ABF1.dita"><apiname>CSdpAttrValue</apiname></xref>. The type is easily deducible from the name: e.g. <codeph>CSdpAttrValueUint</codeph> encapsulates an unsigned integer type attribute. </p> <ul><li id="GUID-E92A60EB-5028-5CDC-83FB-20C626CECB82"><p> <xref href="GUID-B1D56FE2-29E4-3EB3-B638-04336A84F80B.dita"><apiname>CSdpAttrValueBoolean</apiname></xref>  </p> </li> <li id="GUID-991D696E-BA93-5D17-B0F0-529ABDB21B9A"><p> <xref href="GUID-74C4154F-9C20-3C23-86EB-D4B602E79DC1.dita"><apiname>CSdpAttrValueDEA</apiname></xref>  </p> </li> <li id="GUID-57357160-CD33-54A9-8019-2E33ABCAB25A"><p> <xref href="GUID-7AF08589-F6E5-36A1-AD2C-84D3CB877451.dita"><apiname>CSdpAttrValueDES</apiname></xref>  </p> </li> <li id="GUID-144544D2-3C0B-54BD-90E4-5C89FB97E3E1"><p> <xref href="GUID-31EE0888-4D8D-3668-8658-62A1ACFA9E4C.dita"><apiname>CSdpAttrValueInt</apiname></xref>  </p> </li> <li id="GUID-78B376DB-7BEF-501F-8E9D-FB2EF279732A"><p> <xref href="GUID-63EDF468-719A-3EDF-A7F3-53F837AC762B.dita"><apiname>CSdpAttrValueNil</apiname></xref>  </p> </li> <li id="GUID-7F074756-D3B1-5E95-BB5A-7038145F0687"><p> <xref href="GUID-3E049232-901E-3C1A-BA7B-8D1F8B90B85C.dita"><apiname>CSdpAttrValueString</apiname></xref>  </p> </li> <li id="GUID-D0121510-803F-5CEC-ACBB-EB4CFF8165C9"><p> <xref href="GUID-127DA8BE-A9F2-3536-97EA-A4BCCD51A0E3.dita"><apiname>CSdpAttrValueUint</apiname></xref>  </p> </li> <li id="GUID-704CA520-1BDC-556F-AB9F-9C12DC036233"><p> <xref href="GUID-B55A8C55-D7DB-3A96-935A-D09161DE848E.dita"><apiname>CSdpAttrValueURL</apiname></xref>  </p> </li> <li id="GUID-88B13916-67BC-57AE-BF75-12A294CEC6B3"><p> <xref href="GUID-CE08D370-E599-37F4-B0CC-D889C1E04B30.dita"><apiname>CSdpAttrValueUUID</apiname></xref>  </p> </li> </ul> <p><b>Complex Attributes</b> </p> <p>Complex attribute values are stored as lists of other elements; nested lists are allowed. </p> <p>The list classes are: </p> <ul><li id="GUID-A0900A5B-3B74-581E-9E01-494F622B2F59"><p> <codeph>CSdpAttrValueDEA</codeph>: a Data element alternative, a data element whose data field is a sequence of data elements from which one data element is to be selected. </p> </li> <li id="GUID-24633CF0-8C72-5107-A8E5-02D830F08706"><p> <codeph>CSdpAttrValueDES</codeph>: a Data element sequence, a data element whose data field is a sequence of data elements. </p> </li> </ul> <p>Both of these implement the <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita"><apiname>MSdpElementBuilder</apiname></xref> interface, which supplies functions of the form <codeph>Build</codeph> <varname>type</varname> <codeph>L()</codeph> to add elements of the specified <varname>type</varname> to the list. </p> <p><b> Creating a Protocol List Attribute</b> </p> <p>The following example builds a ProtocolDescriptorList attribute (attribute ID 0x0004), which is a list containing two nested lists. </p> <ol id="GUID-8AA434EC-40A2-549A-BD8F-3E343C51225E"><li id="GUID-936D92B9-B8E8-58BD-AB3C-A698253EC71C"><p>Create the list. (NULL indicates that the list is not itself in another list) </p> <codeblock id="GUID-057DB9B7-CB3E-5381-9EB7-BDC2B73085F9" xml:space="preserve">CSdpAttrValueDES* attrValProt = CSdpAttrValueDES::NewDESL(NULL);
+CleanupStack::PushL(attrValProt);</codeblock> </li> <li id="GUID-7B850D69-6F08-59A3-9220-09D4E48242A6"><p>Build the first nested list. Notice the pattern used to push the new attribute value onto the service record. </p> <codeblock id="GUID-EC6E75C7-39AD-5D30-AD3F-B5BEF8161571" xml:space="preserve">attrValProt
+    -&gt;StartListL()
+        -&gt;BuildDESL()
+        -&gt;StartListL()
+            -&gt;BuildUUIDL(TUUID(TUint16(0x0100))) // L2CAP
+        -&gt;EndListL()</codeblock> </li> <li id="GUID-F3A52C4E-F82A-5EC4-B004-8F23515E23B1"><p>Build the second nested list. </p> <codeblock id="GUID-55F49BC1-7082-576C-B0BB-1B8CB5A02B63" xml:space="preserve">  -&gt;BuildDESL()
+        -&gt;StartListL()
+            -&gt;BuildUUIDL(TUUID(TUint16(0x0003))) // RFCOMM
+            -&gt;BuildUintL(TServAttrInt&lt;TUint8&gt;&gt;(1)) // DLCI = 1
+        -&gt;EndListL()
+    -&gt;EndListL();</codeblock> <p>Notice that all the code from the start of 2 above to the end of 3 is essentially a single long line of code. This is an example of the SDP pattern discussed earlier. </p> </li> </ol> <p> <b> Note: </b>  </p> <ul><li id="GUID-3EA609A2-BB81-52F1-936B-B4A0FC74C6F7"><p> <codeph>MSdpElementBuilder</codeph> functions are called cumulatively as part of a single statement. </p> </li> <li id="GUID-87B95637-9AFA-52E6-9AC3-34F7D6EBC5F8"><p>The start of a list is indicated by a call to <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita#GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD/GUID-08A8B787-304E-34BC-9110-FAE4B2873FB8"><apiname>MSdpElementBuilder::StartListL()</apiname></xref> and ended by <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita#GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD/GUID-F00D7635-1B0D-3A13-8574-D6DE91870C11"><apiname>MSdpElementBuilder::EndListL()</apiname></xref>. </p> </li> </ul> </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Database tutorials are shown below: </p> <ol id="GUID-360A4ECF-05FD-50D5-89CE-3C0A9216B9C5"><li id="GUID-BBC0B062-F5D3-5595-9675-20E4A27DD121"><p> <xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">Connecting to the service discovery database</xref>  </p> </li> <li id="GUID-A4CE3FF9-053C-58CF-8863-67DB7664E405"><p> <b>Handling SDP attributes</b> - This document </p> </li> <li id="GUID-2802DB1F-5983-5C75-A942-2E5E794ACC70"><p> <xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">Registering Services</xref>  </p> </li> <li id="GUID-D11ADFBE-6FF1-5FED-846D-7B9D4F33652B"><p> <xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">Setting service record attributes</xref>  </p> </li> <li id="GUID-30808463-3A6F-5D6A-969A-CAE442AD744B"><p> <xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">SDP Service records and attributes</xref>  </p> </li> </ol> <p>Also refer to the <xref href="GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita">Bluetooth Service Discovery Database overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e120285_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E2B67F14-EC4E-41B6-9F8E-AB58B9E8D7B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E2B67F14-EC4E-41B6-9F8E-AB58B9E8D7B6" xml:lang="en"><title>extern
+"C" and Symbian DEF files</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This article gives a general idea about the Symbian DEF file. Whenever
+developers write any DLLs that export a set of APIs to the user, there will
+be an entry for each exported API in the DEF file created. The developer will
+use:</p>
+<ul>
+<li><p><codeph>IMPORT_C</codeph> while declaring exported APIs</p></li>
+<li><p><codeph>EXPORT_C</codeph> while defining such APIs</p></li>
+</ul>
+<p>After building the application for the first time, it lists all the newly
+exported APIs. After doing a freeze (for which the <cmdname>abld freeze winscw</cmdname> and <cmdname>abld
+freeze armv5</cmdname> commands are used), the DEF files will be created under <filepath>BWINS</filepath> and <filepath>EABI</filepath> folders
+within the project directory. These DEF files are used to create <filepath>.lib</filepath> files
+for DLLs. In the DEF file, for each exported API, there will be mapping between
+its prototype and a number will be present.  </p>
+<p>Let's assume that directory structure used for implementing a library is
+as shown below:</p>
+<ul>
+<li><p><filepath>LibraryName\group</filepath> -- <filepath>bld.inf</filepath> and <filepath>LibraryName.mmp</filepath> (all
+build-related files)</p></li>
+<li><p><filepath>LibraryName\inc</filepath> -- All project-specific headers
+(user include headers)</p></li>
+<li><p><filepath>LibraryName\src</filepath> -- All project-specific source
+files </p></li>
+</ul>
+<p>If a developer is building the library for the first time, the developer
+should follow these steps and give the following commands from <filepath>LibraryName\group</filepath>: </p>
+<ol>
+<li id="GUID-DE29CFD9-77C2-4790-89C6-5491F3EBA922"><p>Create the <filepath>abld.bat</filepath> file
+for the project. </p><codeblock xml:space="preserve">LibraryName\group&gt;bldmake bldfiles</codeblock></li>
+<li id="GUID-DC6AE0F4-64C6-432B-826B-26B7CDA8565C"><p>Build the project for
+the default platform (which will be <codeph>WINSCW</codeph> and <codeph>ARMV5</codeph>). </p><codeblock xml:space="preserve">LibraryName\group&gt;abld build</codeblock></li>
+<li id="GUID-836865DB-F613-4000-95AC-DDC9E3F498B2"><p>Create the DEF file
+for the default platform (<filepath>LibraryName\BWINS\LibraryNameu.def and
+LibraryName\EABI\LibraryNameu.def</filepath>). </p><codeblock xml:space="preserve">LibraryName\group&gt;abld freeze</codeblock></li>
+<li id="GUID-C69111BA-1568-4CB4-8AB5-0EDEFC854D39"><p>Create <filepath>.lib</filepath> files
+for the DLL using DEF file entries. (<filepath>LibraryName.lib</filepath>) </p><codeblock xml:space="preserve">LibraryName\group&gt; abld build</codeblock></li>
+</ol>
+<p>The final step is required since applications that link with this library
+(<filepath>LibraryName.DLL</filepath>) will link with <filepath>LibraryName.lib</filepath> during
+link time. If the developer fails to perform the final step, the application
+will get a linker error because there is no <filepath>LibraryName.lib</filepath> present.</p>
+<section id="GUID-3AD1D783-C36F-4443-8957-6DB9434927B5">       <title>Rule
+for using extern "C"</title>       <p>When porting or writing libraries that
+export C APIs to the user, care should be taken to ensure that extern "C"
+is used properly if those APIs are implemented in a C++ source file. Otherwise
+these libraries may either not be built for the target platform (ARMV5) or
+the user of such library will get a linker error when using exported APIs
+of such library.  </p><p>If extern "C" is declared in the header and not defined
+in the source, then after building the library there will be a similar entry
+in DEF files. The compiler will not give external linkage to these APIs. This
+can be observed when trying to use these APIs from some other C source file.
+To overcome this, extern "C" must be present in both declarations and definitions.</p><p><b>Example
+code</b></p><codeblock xml:space="preserve">/*File: SampleDLL.h*/
+/*extern "C" is not used for declaration!*/ 
+#ifndef SAMPLEDLL_H
+#define SAMPLEDLL_H
+
+typedef int MyInt;
+typedef int (*MyFunPtr) ();
+
+IMPORT_C int MyLibLibFun1(MyInt aParam);
+IMPORT_C int MyLibLibFun3(MyFunPtr);
+IMPORT_C int MyLibLibFun2(int (*MyFun1)());
+
+#endif /*SAMPLEDLL_H*/
+
+
+
+//File: SampleDLL.cpp
+#include "SampleDLL.h"
+// extern "C" is used for definition
+extern "C"  {
+
+EXPORT_C int MyLibLibFun1(MyInt aParam)
+   {
+   return aParam + 10;
+   }
+
+EXPORT_C int MyLibLibFun2(int (*MyFun1)())
+   {
+   return MyFun1();
+   }
+
+EXPORT_C int MyLibLibFun3(MyFunPtr aPtr)
+   {
+   return aPtr();
+   }
+}
+</codeblock><p><b>Building for <codeph>WINSCW</codeph></b></p><p>This code
+will get compiled for <codeph>WINSCW</codeph>. The DEF file for <codeph>WINSCW</codeph> will
+have the following entries:</p><codeblock xml:space="preserve">EXPORTS
+     ?MyLibLibFun1@@YAHH@Z @ 1 NONAME ; int MyLibLibFun1(int)
+     ?MyLibLibFun2@@YAHP6AHXZ@Z @ 2 NONAME ; int MyLibLibFun2(int (*)(void))
+     ?MyLibLibFun3@@YAHP6AHXZ@Z @ 3 NONAME ; int MyLibLibFun3(int (*)(void)) </codeblock><p>If
+the user comments extern "C" from the above <filepath>SampleDLL.cpp</filepath> file,
+the DEF file entries will be the same.</p><p><b>Building for <codeph>ARMv5</codeph></b></p><p>If
+the user try's the above code without extern "C" in <filepath>SampleDLL.cpp</filepath>,
+the code will get built and the DEF file entry for <codeph>ARMv5</codeph> will
+be:</p><codeblock xml:space="preserve">EXPORTS
+     _Z12MyLibLibFun1i @ 1 NONAME
+     _Z12MyLibLibFun2PFivE @ 2 NONAME
+     _Z12MyLibLibFun3PFivE @ 3 NONAME  </codeblock><p>If the user keeps the
+extern "C" in <filepath>SampleDLL.cpp</filepath>, this code will not get compiled
+for <codeph>ARMv5</codeph> and will result in the error given below:  </p><codeblock xml:space="preserve">"..\src\Sampledll.cpp", line 7: Error:  #337: linkage specification is incompatible with previous "MyLibLibFun1" (declared at line 9 of "..\inc\SampleDLL.h")
+   EXPORT_C int MyLibLibFun1(MyInt aParam)
+                ^ 
+"..\src\Sampledll.cpp", line 17: Error:  #337: linkage specification is incompatible with previous "MyLibLibFun3" (declared at line 11 of "..\inc\SampleDLL.h")
+   EXPORT_C int MyLibLibFun3(MyFunPtr aPtr)
+               ^</codeblock><p>The reason for the errors is that <codeph>MyLibLibFun1</codeph> and <codeph>MyLibLibFun3</codeph> use <codeph>typedef</codeph> datatypes. There is no issue with <codeph>MyLibLibFun2()</codeph> since
+it does not use <codeph>typedef</codeph> datatypes. To overcome these errors,
+the user must keep both the declaration and the definition within extern "C"
+linkage.</p><codeblock xml:space="preserve">/*File: SampleDLL.h*/    
+#ifndef SAMPLEDLL_H  
+#define SAMPLEDLL_H  
+/*extern "C" is used for declaration also*/
+
+typedef int MyInt;  
+typedef int (*MyFunPtr) ();    
+
+#ifdef __cplusplus  
+extern "C" {  
+#endif //__cplusplus    
+
+IMPORT_C int MyLibLibFun1(MyInt aParam);  
+IMPORT_C int MyLibLibFun3(MyFunPtr);  
+IMPORT_C int MyLibLibFun2(int (*MyFun1)());    
+
+#ifdef __cplusplus  
+}  
+#endif //__cplusplus    
+
+#endif /*SAMPLEDLL_H*/ </codeblock><p>When everything is within extern "C"
+(extern "C" in header and implementation), the DEF file for <codeph>ARMv5</codeph> and <codeph>WINSCW</codeph> looks
+as follows:</p><codeblock xml:space="preserve">EXPORTS
+    MyLibLibFun1 @ 1 NONAME
+    MyLibLibFun2 @ 2 NONAME
+    MyLibLibFun3 @ 3 NONAME </codeblock><p>So, as one can observe in the above
+section where different DEF file entries are created with and without extern
+"C", the user must make sure that the rule is followed. extern "C" has to
+be used in both declaration and definition: otherwise the user will either,
+not be able to build it for all the platforms or, it will not be possible
+to use those exported C APIs in other applications. </p>     </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3" xml:lang="en"><title>Array
+capacity and granularity</title><shortdesc>Describes the granularity and capacity of a dynamic array.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <i>capacity</i> of an array is the number of elements which the array
+can hold or represent within the space currently allocated to its array buffer.</p>
+<p>For a flat array buffer, the increase in capacity of a buffer, when the
+insertion of an additional element causes the buffer to be re-allocated, is
+termed the <i>granularity</i> of the array. For example, adding a fifth element
+to a fixed flat array constructed with a granularity of four, causes the array
+buffer to be re-allocated so that its capacity increases from four to eight
+elements.</p>
+<fig id="GUID-B752C5C8-FFA3-5F27-8D75-C951EE2D1432">
+<image href="GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e190442_href.png" placement="inline"/>
+</fig>
+<p>For a segmented array buffer, the granularity defines the capacity of a
+single segment. A segmented array buffer is always expanded by allocating
+additional segments.</p>
+<p>The granularity of an array is defined at construction time.
+The choice of value depends on the use to be made of the array and needs careful
+consideration. Too small a value for an array with a high turnover of elements
+can incur considerable overhead from the process of allocating memory. Too
+large a value can result in wasted space if insufficient new elements are
+subsequently added.</p>
+<section id="GUID-33BD77F1-C787-49D9-87C0-011900038A64"><title>See also</title> <p><xref href="GUID-112AAFA5-B4C9-5B62-A106-FB5097C13A0E.dita">Using
+Dynamic Buffers</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E2D4973C-FE93-5DE7-B04E-19B7701621C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-E2D4973C-FE93-5DE7-B04E-19B7701621C3"><title>Call Swap Tutorial </title><shortdesc>This tutorial describes how to swap calls with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-B8135064-5C8F-5EE1-9F58-9A8A9CCED402"> <step id="GUID-87A34CB4-69CB-59EB-BE40-E4CFD64334BB"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-A3EB36C9-9856-5AA4-8E64-6BE8282CEAB1"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCallDynamicCaps()</apiname></xref> to check if the device supports swap function </info> </step> <step id="GUID-135949F6-5864-5BD4-A8B1-253CE994AB44"><cmd/><info>call <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::Swap()</apiname></xref> when you have an active call and a call on hold </info> <info>The function makes the held call active and the puts the active call on hold. Pass the function the IDs of the two calls. The IDs are <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TCallId</apiname></xref> objects returned when you dialled or answered the calls. </info> </step> <step id="GUID-2B849097-C643-59E7-95FA-708061ED71E3"><cmd/><info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::ESwapCancel</apiname></xref> to cancel the asynchronous request </info> </step> </steps> <example id="GUID-24851381-E70A-53F5-AFDB-41B5D8DEB172"><title>Call swap example</title> <codeblock id="GUID-D28043B3-811B-5A73-B42B-E79A5BCCC481" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallIdA;
+    CTelephony::TCallId iCallIdB;
+
+public:
+    CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallIdA, CTelephony::TCallId aCallIdB);
+    TInt SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallIdA(aCallIdA)
+      iCallIdB(aCallIdB)
+    {
+    //default constructor
+    }
+
+TInt CClientApp::SomeFunction()
+    {
+    // Check that the phone supports Resuming calls.
+    CTelephony::TCallCapsV1 callCapsV1;
+    CTelephony::TCallCapsV1Pckg callCapsV1Pckg(callCapsV1);
+    iTelephony-&gt;GetCallDynamicCaps(iCallId, callCapsV1Pckg);
+
+    if( callCapsV1.iControlCaps &amp; CTelephony::KCapsSwap )
+       {
+       // The call represented by 'iCallId' can be swapped
+       iTelephony-&gt;Swap(iStatus, iCallIdA, iCallIdB);
+       SetActive();
+       return KErrNone;
+       }
+    else
+       {
+       // The call cannot be swapped; 
+       // return an error indicate this.
+       return KErrNotSupported;
+       }
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The call has been swapped successfully;
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::ESwapCancel);
+    }
+</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609" xml:lang="en"><title>Generic Open
+Libraries</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Generic Open Libraries is a collection of open source libraries that are
+ported to the Symbian platform. These libraries enable Symbian Developers
+to easily port POSIX-based applications onto the Symbian platform. </p>
+<p><b>Important:</b> C Standard Library is planned to be deprecated soon.
+It is recommended that you use the much more compliant and complete <xref href="GUID-D79380CF-22B5-5865-9366-44118E8ECA2E.dita">Open Environment Core (P.I.P.S.)</xref> libraries
+instead.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e348208_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3210353-EEC2-56CB-AD75-309E5DCDEDD1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E3210353-EEC2-56CB-AD75-309E5DCDEDD1"><title>The read stream interface</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>RReadStream</codeph> is an abstract class that presents the necessary interface for internalising from a stream. When called, the <codeph>InternalizeL()</codeph> member function of a class is passed a reference to a concrete read stream object; for example, an object constructed from a class such as <codeph>RStoreReadStream</codeph>. This allows <codeph>InternalizeL()</codeph> to read the object's data from any stream, regardless of that stream’s concrete implementation.</p> <p>All data types, including non-class types, can be internalised, although some can only be internalised using the templated stream <codeph>operator&gt;&gt;</codeph>.</p> <p><codeph>RReadStream</codeph> provides support for internalising:</p> <ul><li id="GUID-65D06736-B345-5734-AD5C-A3F48B533863"><p><codeph>TInt</codeph>, <codeph>TUint</codeph>, <codeph>TReal</codeph> and <codeph>TReal64</codeph> types.</p> </li> <li id="GUID-15EEE372-8BEE-5759-9C26-FB3024196099"><p>The content of a descriptor.</p> </li> </ul> <p>It also provides support for <i>externalising</i> data to a write stream.</p> <p>The <codeph>ReadInt8L()</codeph>, <codeph>ReadUint8L()</codeph>, <codeph>ReadInt16L()</codeph> and <codeph>ReadUint16L()</codeph> member functions allow applications to extract data from the stream written as 8 bit and 16 bit values.</p> <p>The read stream interface also allows data to be internalised to a location defined by a pointer and a length. However, this functionality is rarely used by application code.</p> <section><title>See also</title> <p><xref href="GUID-D7211372-9411-5A18-88F0-615F4983A2E0.dita">Store streams</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E326C00B-6E07-5902-AB19-F00D1761795C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E326C00B-6E07-5902-AB19-F00D1761795C"><title>PKIXCert</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This DLL implements certificate validation according to the PKIX Certificate and Certificate Revocation List (CRL) profile. Given a set of certificates supplied by a third party, and a local store of trusted root certificates, the Certificate and Key Management component will attempt to validate the identity of the third party. Two public classes are defined here: </p> <ul><li id="GUID-B728A063-D851-5F38-BAD7-5D75DFFA69A1"><p> <codeph>CPKIXCertChain</codeph> — performs certificate validation. </p> </li> <li id="GUID-030BEF4D-38E4-5404-9B13-D8A3D3DCA9D5"><p> <codeph>CPKIXValidationResult</codeph> — encapsulates the result of the validation operation. </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7" xml:lang="en"><title>Building
+a Standard C++ Application or Library</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the required header files and libraries to compile
+and link against to build a Standard C++ application or library on a Symbian
+platform build environment. </p>
+<p>You can build a C++ application or library using one of the following target
+types: </p>
+<ul>
+<li id="GUID-2D0C8AC4-DC70-5F4A-B9D8-BCC61E088C8B"><p><xref href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita#GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7/GUID-26AC2BCA-4A4F-5837-BBAD-7964CA0A5BED"> STD target types</xref>  </p> </li>
+<li id="GUID-C9E53DA5-FCDC-5D2A-9F66-60D97415ABCB"><p><xref href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita#GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7/GUID-F956CF72-58FC-5D9E-91EC-5B8866EE46C2">Other Symbian target types</xref>  </p> </li>
+</ul>
+<p> <b>Notes:</b>  </p>
+<ul>
+<li id="GUID-CFA90167-E346-51CA-B4CB-A2D3812207EE"><p>The required standard
+C++ header files are available in the <filepath>${EPOCROOT}/epoc32/include/stdapis/stlportv5</filepath> directory. </p> </li>
+<li id="GUID-721CE7A0-A015-5607-90B6-F430F0B8A528"><p>The standard C++ library
+name is <filepath>libstdcppv5.lib</filepath>. </p> </li>
+<li id="GUID-9757C0C6-A141-594B-A29D-19D2E69283B6"><p>You must specify the
+system-include path and library name in the <filepath>.mmp</filepath> file
+associated with the C++ application or library. </p> </li>
+</ul>
+<section id="GUID-26AC2BCA-4A4F-5837-BBAD-7964CA0A5BED"><title> STD target
+types</title> <p>You can develop a C++ application or library using the following
+STD target types: </p> <ul>
+<li id="GUID-52EC8316-33D1-5962-B71A-8F54AC7CC698"><p> <codeph>STDEXE</codeph>  </p> </li>
+<li id="GUID-3B07B0F9-B1CF-5F11-ADB2-DB648D93A60D"><p> <codeph>STDDLL</codeph>  </p> </li>
+<li id="GUID-68E852B9-41F4-5550-990E-256EA37EA337"><p> <codeph>STDLIB</codeph>  </p> </li>
+</ul> <p>These target types enable symbol lookup by name thereby adding the
+symbol information into the executable. </p> <p> <b>Note:</b> For more information
+about STD target types (<codeph>STDEXE</codeph> /<codeph>STDDLL</codeph> /<codeph>STDLIB</codeph>),
+see the <xref href="GUID-1560C4FF-82EC-5E5D-A37D-3BBE046F0A5B.dita">Target Types</xref> section. </p> <p><b>Example</b> </p> <p>The
+following code snippet illustrates the use of the STD target type <codeph>stdexe</codeph>: </p> <codeblock id="GUID-BA167FFD-2F44-5BA4-8C2B-FF388648CC9B" xml:space="preserve">//writing an stdexe, the mmp file may look like follows
+//Start of test_stdexe.mmp
+Target             test_stdexe.exe
+Targettype        stdexe
+Source            test1.cpp
+Systeminclude        /epoc32/include/stdapis/stlportv5
+Library            libstdcppv5.lib
+Capability        all -tcb
+//End of test_stdexe.mmp</codeblock> </section>
+<section id="GUID-F956CF72-58FC-5D9E-91EC-5B8866EE46C2"><title>Other Symbian
+target types</title> <p>You can avoid symbol information overhead while developing
+C++ applications or libraries, by performing the following configurations: </p> <ol id="GUID-95D63170-A738-562C-B648-D5E349E4EE32">
+<li id="GUID-65331FAD-A88C-5D36-BED2-255AED30F99F"><p>Use the other Symbian
+target types such as, <codeph>dll</codeph>, <codeph>lib</codeph>, <codeph>exe</codeph> and
+so on. For more information about other Symbian target types, see the <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref> section. </p> </li>
+<li id="GUID-46EE0265-A60A-518C-BB4A-63F6D6FA29F3"><p>In addition, use the
+MMP keyword <codeph>STDCPP</codeph>. </p> </li>
+</ol> <p>You may also have to include <filepath>${EPOCROOT}/epoc32/include/stdapis</filepath> explicitly
+as the standard C headers are required by the standard C++ header. If you
+are referring to Standard C APIs directly or indirectly, you must specify <filepath>libc.lib</filepath> and <filepath>libpthread.lib</filepath> in
+the <filepath>.mmp</filepath> file. </p> <p><b>Example</b> </p> <p>The following
+code snippet illustrates the use of <codeph>STDCPP</codeph> MMP keyword and
+the use of the <codeph>exe</codeph> target type: </p> <codeblock id="GUID-31D4A97F-7809-515E-AB0C-801B60E60455" xml:space="preserve">//test_exe.mmp
+Target             test_exe.exe
+Targettype        exe
+//The STDCPP keyword specifies Standard C++
+STDCPP
+Source            test2.cpp
+Systeminclude        /epoc32/include/stdapis/stlportv5
+Systeminclude        /epoc32/include/stdapis
+Library            libstdcppv5.lib libc.lib
+Staticlibrary        libcrt0.lib
+Capability        all -tcb
+//End of test_exe.mmp</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright
+Acknowledgments for Standard C++ (STLport)</linktext></link>
+<link href="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita"><linktext>Standard
+C++ Library Overview</linktext></link>
+<link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext>Standard
+C++ Support on Symbian Platform</linktext></link>
+<link href="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita"><linktext>Developing
+Applications or Libraries Using Standard C++</linktext></link>
+<link href="GUID-5B3F5296-D6D0-5D25-8362-141DF5927E52.dita"><linktext>Troubleshooting</linktext>
+</link>
+<link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E332F544-0759-4C10-B29C-14AA5EAEBD49.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E332F544-0759-4C10-B29C-14AA5EAEBD49" xml:lang="en"><title>Showing
+the choice list</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The normal use case is that the user opens the choice list either from
+the button defined by the client application or from the currently selected
+item arrow button. After user has made the selection the list is closed.</p>
+<p>You can also open and close the choice list from your application using
+the methods <codeph>CAknChoiceList::ShowChoiceListL()</codeph> and <codeph>CAknChoiceList::HideChoiceList()</codeph>.</p>
+<codeblock xml:space="preserve">void CMyAppContainer::OpenAndCloseChoiceListL()
+    {
+    // Show the user that the button opens a list of choices
+    iChoiceList-&gt;ShowChoiceListL();    
+    User::After( 2000000 );
+    iChoiceList-&gt;HideChoiceList();    
+    }
+
+</codeblock>
+<p>You can determine the positioning to which direction the list will be opened
+by setting the choice list flags. For example: </p>
+<codeblock xml:space="preserve">iChoiceList-&gt;SetFlags( CAknChoiceList::EAknChoiceListPositionBottom );</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E339A683-94E2-54E8-BB2B-286B11B0FCE3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E339A683-94E2-54E8-BB2B-286B11B0FCE3" xml:lang="en"><title>SIP Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E34D0F11-4B34-575C-BE78-8EAD13E9CD64.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E34D0F11-4B34-575C-BE78-8EAD13E9CD64" xml:lang="en"><title> Starting
+and Closing a Management Plane session: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+
+
+<prereq><p> This tutorial shows how an application connects to
+the Sockets Server to access the Management Plane functionality. The Management
+Plane functionality allows an application to access the Access Points. The
+Management Plane uses a different API to other Sockets Server connections.
+ </p><p> The <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref> API is accessed through the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Sockets Server</xref> client
+API, so you need to ensure that <filepath>esock.lib</filepath> is included
+in the MMP file.  </p><p>The user must supply a valid Tier ID when the connection
+is made. Tier's are discussed in the topic <xref href="GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita">Tiers
+Manager</xref>. Use the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-437C4AE0-D16B-50B7-8AD8-A4E8FA5F15E5">Tier
+Table</xref> in the Communications Database to find the Tier IDs. </p><p>The
+high level steps to connect to the Management Plane are:</p> </prereq>
+<steps id="GUID-F9A14241-7E5B-5DAD-BD7D-35C84380392F">
+<step id="GUID-712ED667-E5F7-5817-BF7E-8BE4A62ECE50"><cmd>Determine which
+Tier ID to supply </cmd>
+</step>
+<step id="GUID-E852EB65-63E0-59F2-8477-7BBEBFE104A3"><cmd/>
+<stepxmp>Call the <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ::Connect(TUint
+                aTierId)</apiname></xref> function with the Tier ID. This will connect
+to the Management Plane. </stepxmp>
+<info>By default, <codeph>aTierId</codeph> is Null to indicate all Tiers are
+available. The <codeph>aTierId</codeph> must specify a valid tier. The <codeph>RConnectionServ</codeph> API
+does not have any functionality if the default value for <codeph>aTierId</codeph> is
+used. </info>
+</step>
+<step id="GUID-76388961-E75A-5BAD-ABCF-DAD394DE30FD"><cmd/>
+<info>Perform operations on the Tier. All actions on this <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref> connection
+will depend on the specified Tier. </info>
+</step>
+<step id="GUID-B13476C2-ADB9-5102-A754-1C024E6D0C36"><cmd/>
+<info>Call the <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ::Close()</apiname></xref> function
+to end the connection with the Management Plane. </info>
+<info>The <codeph>Close()</codeph> function ends the <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref> session
+with the Tier specified using the <codeph>Connect()</codeph> function. </info>
+</step>
+</steps>
+<example id="GUID-4922B67C-A24B-592A-96A4-26ABAB232E16"><title>Connect and
+Close example</title> <p>The following example shows how to start and close
+a session. </p> <codeblock id="GUID-6919C0BC-3D4A-52F7-B3AB-3B54E656F60D" xml:space="preserve">
+#include &lt;comms-infras/es_connectionserv.h&gt;
+#include &lt;sometechnology.h&gt; // for KSomeTierId
+
+using namespace ConnectionServ;
+
+// Assumption: RConnectionServ is owned as an attribute of some working object
+protected:
+  RConnectionServ iConnServ;
+
+// Start the session
+User::LeaveIfError(iConnServ.Connect(KSomeTierId));
+
+// Close the session
+iConnServ.Close();
+</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3A80D62-09A5-502D-AB55-6AB2A5623465.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E3A80D62-09A5-502D-AB55-6AB2A5623465" xml:lang="en"><title>Cleaning-up
+Memory</title><shortdesc>To ensure the plug-in framework unloads the plug-in DLLs when they
+are no longer required and releases associated memory, the clients should
+follow an explicit memory cleanup procedure. The main purpose is to release
+memory and close handles held on unused plug-in implementations and their
+associated DLLs. The memory clean-up should be performed after all instantiated
+interface objects have been deleted. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The plug-in framework client-side library implements a deferred
+cleanup mechanism in the client process to handle destroyed plug-ins. Following
+a call to <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-8BA69111-0451-34CA-A1E8-C83513C4D29D"><apiname>REComSession::DestroyedImplementation()</apiname></xref> in the
+destructor, the plug-in’s reference count is decremented to zero and the client-side
+library has a “last destroyed last plug-in” garbage pointer. The internal
+framework memory associated with the garbage plug-in is released. The handles
+on the DLL are closed at the beginning of the next call to <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-8BA69111-0451-34CA-A1E8-C83513C4D29D"><apiname>REComSession::DestroyedImplementation()</apiname></xref>.
+This chain of deferred cleanup in the client thread requires the final plug-in
+in the garbage queue to be released. Hence there is a requirement for explicit
+memory clean-up. The memory clean-up is performed by the clients of the plug-in
+framework. <note> The destructor of the interface implementation deletes the
+instantiated objects obtained from an interface when they are no longer required
+by calling the static function <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-8BA69111-0451-34CA-A1E8-C83513C4D29D"><apiname>REComSession::DestroyedImplementation()</apiname></xref>. <codeblock xml:space="preserve">inline CExampleInterfaceDefinition::~CExampleInterfaceDefinition()
+    {
+    REComSession::DestroyedImplementation(iDtor_ID_Key);
+    }</codeblock></note></p> </context>
+<steps id="GUID-31FD83CA-3EC3-5EA2-8297-21165CC16335">
+<step id="GUID-BB4A525E-4D43-59F0-8D45-136D31258FDA"><cmd/>
+<info>Call <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> before shut down
+to ensure the plug-in framework executes the final cleanup steps. </info>
+<info> Note:  <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> should not be
+called from a plug-in implementation class destructor, especially following
+a <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-8BA69111-0451-34CA-A1E8-C83513C4D29D"><apiname>REComSession::DestroyedImplementation()</apiname></xref>. There is a risk
+that the plug-in's supporting DLL may immediately be unloaded by the Kernel
+due to the closure of RLibrary handles. It can result in a KERN-EXEC if the
+destructor call stack is still inside the DLL that is unloaded. </info>
+</step>
+<step id="GUID-AA4796C3-0F56-5AE2-A278-08CA615C4157"><cmd/>
+<info>If the plug-in framework is used in a library, then <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> should
+be invoked within the library's shutdown function. This makes the library's
+use of plug-in framework transparent to the clients. </info>
+<info>It is not an error if both the library and client call <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref>. </info>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8" xml:lang="en"><title>Drawing and Graphics Contexts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The GDI API provides functions for drawing and filling various shapes (points, lines, polylines, arcs, rectangles, polygons, ellipses, rounded rectangles and pie slices), for drawing text, and for drawing bitmaps. Each drawing operation has a number of settings that affect its function—pen style, fill style, typeface, etc. Instead of passing these settings as parameters to every drawing function, the GDI API has the concept of a <b>graphics context</b> (<b>GC</b>) in which drawing functions are performed. The <codeph>CGraphicsContext</codeph> class is used to hold these settings and to provide all of the graphics functionality. </p> <p>The normal way of performing a drawing operation is therefore: </p> <ol id="GUID-B0F3020B-15C8-5A1E-AA44-9F2CB48A47A2"><li id="GUID-FC43F3A2-AD58-5F89-AD1B-82779741E965"><p>Set up a graphics context to hold the settings. </p> </li> <li id="GUID-0362DF4A-587A-587B-B4CB-689AF11E133D"><p>Call the graphics function of that context to perform the operation. </p> </li> </ol> <p>Graphics contexts are provided by graphics device objects that represents the medium being drawn to. The abstract base class for graphics device objects is <codeph>CGraphicsDevice</codeph>. </p> </conbody><related-links><link href="GUID-1C3455BE-2082-504D-9157-88D8C72B1B80.dita"><linktext>Graphics Device Interface
+  Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3ADCC42-ACFC-49FC-88FF-8196CE61014B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E3ADCC42-ACFC-49FC-88FF-8196CE61014B" xml:lang="en"><title>Sensor
+Services</title><shortdesc>The Sensors Services collection provides Sensors Framework, which
+allows clients to request and receive sensor information from the different
+sensors on a device.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E3BE62B2-9625-5F79-84A4-0248A3F36225"><title>Central Repository Access Guide</title><shortdesc>This section describes how to make an application read and modify a repository at runtime from function calls in its application code. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Runtime operations </title> <p><b>Opening and closing a repository </b> </p> <p>You open a repository by creating a <codeph>CRepository</codeph> object in your code: there is no Open() function. To open several repositories you must create one <codeph>CRepository</codeph> object for each of them. These objects encapsulate client views of the Central Repository: data integrity is maintained by server classes which are not part of the exposed API. You read and modify the data in the repository using <codeph>CRepository</codeph> functions such as <codeph>Get()</codeph> and <codeph>Set()</codeph>. In order to prevent different clients corrupting the repository data with concurrent write operations, these operations are wrapped in sequences called transactions. Transactions will be explained in the next section. You close a repository by deleting the <codeph>CRepository</codeph> object: there is no Close() function. </p> <p>The keys are used in the initialisation file to identify data items as we saw above. They are also used as parameters of the API functions which are used to get, set, create, delete, reset and find settings. </p> <p><b>Reading data from a repository </b> </p> <p>Various functions of a CRepository object read the values of the repository settings. These functions all return an error message (KErrNone on success). The data requested by a function is returned as the value of a parameter of the function, and the data type of the parameter must match the data returned. </p> <p>The Get() functions of a CRepository object take individual keys as parameters and retrieve the corresponding values. You cannot directly retrieve values by specifying a range of keys: you must convert a range to a list of individual keys and pass those keys to a Get() function. </p> <p>The Find() functions of a CRepository object convert a range of keys into a list of individual keys. The input parameters are a partial key and a key mask, defining the range: the list of keys is returned as the value of another parameter. The list may contain all the keys in the range, or may be restricted to keys with specified values. The restricted Find() functions take the value of a setting as an input parameter and return variously those keys in the range whose values are equal to the parameter or those which are not equal to it. </p> <p>The GetMeta() function of a CRepository object reads the metadata value assigned to a key. A metadata value is a 32 bit hexadecimal number of which the most significant 8 bits are reserved. The reserved bits should normally be masked out so that they cannot be used. To do this you use a constant defined for the purpose, KMetaUnreserved, with logical AND. A metadata value AND KMetaUnreserved has the reserved bits set to 1. </p> <p><b>Writing data to a repository </b> </p> <p>The Set() functions of a CRepository object write the values of a setting to a repository where the key already exists. </p> <p>To create a new key and write its value, use the Create() functions of a CRepository object. </p> <p>To delete a key and its value, use the Delete() functions. You can delete a group of keys using the partial key and key mask mechanism. </p> <p>To restore the default value of a setting, use the Reset() functions of a CRepository object. The default value of a setting is the most recent value which was explicitly assigned to it, or else the value assigned in the initialisation file. If no value was ever assigned, a call to Reset() deletes the setting. </p> <p><b>Changing permissions on a setting </b> </p> <p>An access policy cannot be changed at run time. The permissions created on an area of keyspace are static: that area always has those permissions. However, it is possible to modify access to a setting at runtime by moving it from one area of keyspace to another area with different permissions. You do this by calling the Move() function of the CRepository class. </p> <codeblock id="GUID-C2BB8268-58B4-5492-A953-E7B99793CC80" xml:space="preserve">TInt CRepository::Move (TUint32 aSourcePartialKey, TUint32
+          aTargetPartialKey, TUint32 aMask, TUint32 &amp;aErrorKey) 
+        </codeblock> <p>The parameters <codeph>aSourcePartialKey</codeph> and <codeph>aMask</codeph> define one range of keys, the source, and the parameters <codeph>aTargetPartialKey</codeph> and <codeph>aMask</codeph> define another, the target. The effect of calling the function is to cause the values formerly accessed using the source keys to be accessed using the target keys. If the target keys have different permissions from the source, those permissions will in future govern access to the values concerned. </p> <p><b>Notification of changes </b> </p> <p>It will often be the case that your application accesses a repository in order to read data written by a separate application. If so, your application must request to be notified whenever the other application modifies the relevant settings. To request notification of changes to a setting or group of settings you use the <codeph>RequestNotify()</codeph> functions of a CRepository object with a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object as parameter. The value of this parameter changes when the notification server detects a change to the repository. If a single setting has changed, the parameter takes the value of that setting: if more than one setting has changed, the parameter takes the value <codeph>KUnspecifiedKey</codeph>. To receive notification of changes, your code must periodically poll this key. It must also renew the <codeph>RequestNotify()</codeph> call before reading the setting which has changed. This is important because several changes may occur in quick succession and you want to read the latest state of the repository. </p> <p>You cancel notifications about specific settings or groups of settings using <codeph>NotifyCancel()</codeph>, and you cancel all notifications using <codeph>NotifyCancelAll()</codeph>. </p> </section> <section><title>Error handling</title> <p>Two classes of error can occur when a keyspace is installed, upgraded or uninstalled. One is installation of a corrupt repository (one which does not conform to the specified text or binary format). If the central repository detects corrupt repositories, it deletes them. It is preferable to install a repository in binary format as corrupt files will then be detected at build time. </p> <p>The other class of possible error is system failures such as insufficient memory. These prevent the keyspaces from merging and the result is loss of synchronisation between applications and their repositories. The remedy for errors of this kind is to maintain versioning information within the repositories, so that the version of a repository can be checked when it is opened and validated against the version expected by the client. </p> </section> </conbody><related-links><link href="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita"><linktext>Central Repository Overview</linktext> </link> <link href="GUID-36539894-580E-5774-AA79-7F640E8C59E1.dita"><linktext>Central Repository Initialisation Files Guide</linktext> </link> <link href="GUID-53E5C9EA-0A38-54A1-AE24-95B71BFFB4B5.dita"><linktext>CenRep Converter Tool Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3D2A6ED-8192-563D-8966-DD96B3AF1783.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E3D2A6ED-8192-563D-8966-DD96B3AF1783" xml:lang="en"><title>Kernel and Hardware
+Services Guide</title><shortdesc>Kernel and Hardware Services performs the fundamental operating
+system tasks of managing access to device resources. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Note: This documentation now uses the names, such as Kernel and Hardware
+Services, for components and groups of components that are specified in the
+system architecture. Some older naming conventions are still used in some
+documents. <i>Base</i> is a common name that is given to the lower-level components
+of Symbian platform, which include the Kernel, the File Server, and some device
+drivers.  <i>EKA2</i> is a common abbreviation for the Kernel Architecture
+2 component. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3DD768F-752F-5414-9E9A-86E046806903.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E3DD768F-752F-5414-9E9A-86E046806903" xml:lang="en"><title>Space
+management and granularity</title><shortdesc>Explains how to manage space and granularity in dynamic buffers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>As the buffer expands, extra space must be allocated. As it contracts,
+space may be released. In order to tune the management of space, a <i>granularity</i> is
+specified to the buffer’s constructor. Space is always allocated and freed
+in multiples of this granularity.</p>
+<p>The granularity should be carefully chosen. Too small a value will result
+in too many re-allocations with a cost in time and, due to fragmentation and
+segmentation overheads, some waste of space also. Too large a value will result
+in over-allocation of space: the extent of the waste of space depends on the
+type of data in the buffer: decisions must be made on a case-by-case basis.</p>
+<p>For flat buffers, the buffer’s single alloc cell is guaranteed to be a
+multiple of the granularity in length. When the buffer must be extended, just
+sufficient space is allocated to cover the immediate space need (rounded up,
+if necessary, to the nearest multiple of the granularity). When data is deleted,
+no automatic space reclamation is performed. The <codeph>Compress()</codeph> function
+may be used to compress the allocation to the smallest possible multiple of
+the granularity necessary for the data currently held in the buffer.</p>
+<p>For segmented buffers, the granularity is the number of data bytes in each
+segment. Segments additionally have a 16-byte overhead. Therefore, the granularity
+of segmented buffers should always be considerably greater than 16, to avoid
+significant space waste. When a segmented buffer is extended, enough extra
+segments are allocated to contain all the data. When data is deleted from
+a segmented buffer, segments are deleted if they contain no data. Segments
+whose content is partially deleted may be amalgamated with neighbouring segments,
+but usually they are left partially full. If the pattern of insertions and
+deletions into a segmented buffer is arbitrary, nothing can be said about
+the extent of <i>data</i> in each segment: it may range from a single byte
+up to the entire segment length — which is the granularity of the buffer.
+The <codeph>Compress()</codeph> function may be used with segmented buffers
+to cause a more efficient allocation of space to its segments.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3E19113-AAEE-55C2-8016-11D492123762.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E3E19113-AAEE-55C2-8016-11D492123762"><title>Creating a new sub-connection - Adding an already connected socket</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following example shows how an application can use a sub-connection explicitly via an <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> instance, and tie an already connected <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> to the sub-connection that has had its properties set (parameter creation is described in separate section): </p> <codeblock id="GUID-3FCEF3CA-23AB-5040-90F9-C96A49FA4A84" xml:space="preserve">RSocketServ ss;
+RConnection conn;
+RSubConnection subconn;
+RSocket sock;
+TRequestStatus status;
+
+// Connect to ESOCK
+ss.Connect();
+
+// Open an Connection
+conn.Open(ss, KAfInet);
+
+// Start the connection
+conn.Start(status);
+User::WaitForRequest(status);
+
+// Open a TCP socket on the connection
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, conn);
+
+_LIT(KRasAddr,"10.159.24.13");
+const TInt KEchoPort = 7;
+
+TInetAddr destAddr;
+destAddr.Input(KRasAddr);
+destAddr.SetPort(KEchoPort);
+
+// Connect the Socket to the destination over the connection (default sub-connection)
+sock.Connect(destAddr, status);
+
+// Create a new sub-connection
+subconn.Open(ss, RSubConnection::ECreateNew, conn);
+
+// Set Properties of the sub-connection
+subconn.SetParameters(…);
+
+// Move the connected socket onto the new sub-connection
+TRequestStatus status;
+subconn.Add(sock, status);
+
+// Wait for socket to added
+User::WaitForRequest(status);
+</codeblock> <p> <b>Note:</b> Error handling is not included to aid clarity. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170" xml:lang="en"><title>What are Nodes</title><shortdesc>This section describes the concept of <i>Nodes</i> in Symbian OS and in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The section first describes the base concept of a Node. The section continues with a description of the more specialised Nodes provided by the Communications Framework. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E3F403EE-717B-5EA6-BC4E-6840097CAC10.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E3F403EE-717B-5EA6-BC4E-6840097CAC10" xml:lang="en"><title>Using Dynamic
+Arrays</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following topics describe how to implement and manipulate Dynamic Arrays.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33" xml:lang="en"><title>Key events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<fig id="GUID-9A1FDF4B-5FD8-4113-8D8E-E879B4C7C255"><title>Key presses generate key events</title><image href="GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e39244_href.png"/></fig>
+<p>Key events are generated when a mobile device user presses one or more
+mobile device key buttons. The application framework delivers the event to
+the application that has focus. The <parmname>TKeyEvent</parmname> structure
+is used to contain the key event details delivered to the application. For
+more information on <parmname>TKeyEvent</parmname>, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Window_Server/TKeyEventStruct.html" format="application/java-archive"><parmname>TKeyEvent</parmname></xref>. </p>
+<p>The structure is as follows:</p>
+<codeblock id="GUID-467AB9BB-948F-49B6-A243-206314E90242" xml:space="preserve">struct TKeyEvent
+    {
+    TUint iCode;
+    TInt iScanCode;
+    TUint iModifiers; // State of modifier keys
+    TInt iRepeats; // Count of auto repeats generated
+    };
+</codeblock>
+<p>The following events are generated by means of a single key press and
+release:</p>
+<codeblock id="GUID-5FE1F179-8F7A-4653-9604-3CFC4B66AE33" xml:space="preserve">EEventKeyDown
+EEventKey
+EEventKeyUp
+
+</codeblock>
+<p>The first event indicates that a key has been pressed down. The second
+event indicates that a character has been received from the keyboard. The
+third event is sent when the button has been released. These events are described
+in the <parmname>iCode</parmname> and <parmname>iSCanCode</parmname> members
+of <parmname>TKeyEvent</parmname>.</p>
+<p>For more information on possible data contained in <parmname>EEventKey</parmname>,
+see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Kernel_Architecture_2/e32keys.hGlobals.html#%3a%3aTKeyCode" format="application/java-archive"><parmname>TKeyCode</parmname></xref>.</p>
+<p>Key presses may be interpreted by a Front End Processor (FEP) and tied
+to specific key events. For example, if a mobile device user presses the <parmname>2</parmname> key
+twice, an active FEP could generate a key event code of <parmname>b</parmname>.</p>
+<p> For more information on FEPs, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/fepbase/FrontEndProcessorOverview.guide.html#ApplicationFrameworkOverview%2eFrontEndProcessorOverview%2emain" format="application/java-archive">Front End Processor overview</xref>.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E41C4E77-C48B-548E-A2F5-14FA5CC68982.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E41C4E77-C48B-548E-A2F5-14FA5CC68982" xml:lang="en"><title>Using Fixed Size Arrays</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-E449F309-F230-46F9-B777-EF64D0E3191D" xml:lang="en"><title>Information
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-ABA1FBE9-EE19-421F-B38B-F748A57D6B4A"><p>Information
+notes give information about an unexpected situation during the usage of the
+device. They have a longer duration and a more noticeable tone than in a <xref href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita">confirmation note</xref>.
+Errors that are not too serious should cause an information note. </p><fig id="GUID-DB2F7A31-6003-4FB5-A062-3672534A5416">
+<title>Information note</title>
+<image href="GUID-45D4F2D1-A433-4289-A627-D0ECD97489DD_d0e60803_href.png" scale="33" placement="inline"></image>
+</fig></section>
+<section id="GUID-C54403DE-9572-417C-9BA3-839C6C433C00"><title>Using
+information notes in C++ applications</title><p>You can create either a basic
+information note that is displayed only when your application is in the foreground
+or a global note that stays displayed even if the application launching the
+note is not in the foreground. The related APIs are the Notes
+API (for basic notes) and the Notifiers
+API (for global notes).</p><p>To use an information note with the default
+icon, text, sound, and duration, create an instance of the note class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknInformationNote.html" format="application/java-archive"><codeph>CAknInformationNote</codeph></xref>.
+ For implementation infomation, see Creating
+a non-waiting information (basic) note. </p><p>To create a global information
+note, use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref> in
+the Notifiers
+API. For implementation information, see Using
+global notes and Using
+global notes with user interaction.</p><p>For basic notes, you can
+change the icon or text displayed in the note, use a different kind of sound,
+or change the note duration using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p><p>For information on customizing
+global notes, see Enhancing
+global notes. You can change the graphic, animation, tone, and softkeys
+using the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#cee323af0704e07d3f1887a4a13c1639" format="application/java-archive"><codeph>SetGraphic</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#d23699273b28a39c0817bc575be767ab" format="application/java-archive"><codeph>SetAnimation</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#a8748ee0b3342c24a11b8ed0ea9121bc" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#f31895e5838994b1c70300cfd3d7d127" format="application/java-archive"><codeph>SetSoftkeys</codeph></xref>.</p></section>
+
+
+
+
+
+
+</conbody><related-links>
+<link href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita"><linktext>Confirmation
+note</linktext></link>
+<link href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita"><linktext>Warning note</linktext>
+</link>
+<link href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita"><linktext>Error note</linktext>
+</link>
+<link href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita"><linktext>Permanent
+note</linktext></link>
+<link href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita"><linktext>Wait note</linktext>
+</link>
+<link href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita"><linktext>Progress
+note</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e312814_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A" xml:lang="en"><title>Cleanup
+utilities</title><shortdesc>The Cleanup utility functions support four types of clean up operation.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The cleanup utility functions offer easy ways of constructing a <codeph>TCleanUpItem</codeph> and
+pushing it onto the cleanup stack. They support four types of clean up operation:</p>
+<ul>
+<li id="GUID-8E3A2FEC-B065-5059-800F-5227516A961A"><p>where the object is
+deleted: <codeph>template &lt;class T&gt; void CleanupDeletePushL(T*)</codeph> </p> </li>
+<li id="GUID-94C6925C-E68C-5F39-9CD3-6C2D4BC6CFEE"><p>where the object's <codeph>Close()</codeph> member
+function is called: <codeph>template &lt;class T&gt; void CleanupClosePushL(T&amp;)</codeph> </p> </li>
+<li id="GUID-7B17DA1E-9D7F-572A-9CF5-B63C8784970A"><p>where the object's <codeph>Release()</codeph> member
+function is called: <codeph>template &lt;class T&gt; void CleanupReleasePushL(T&amp;)</codeph> </p> </li>
+<li id="GUID-0F488FA6-FE3F-5305-8189-5206A18C53FA"><p>where an array of objects
+is deleted: <codeph>template &lt;class T&gt; void CleanupArrayDeletePushL(T*)</codeph> </p> </li>
+</ul>
+<p>The functions have the supporting templated classes:</p>
+<ul>
+<li id="GUID-CBEC6897-F471-5C35-8BC6-15742C3FF7DB"><p><codeph>CleanupDelete&lt;class
+T&gt;</codeph> </p> </li>
+<li id="GUID-00C1B92A-AB53-58E2-B89D-94292B2E00C0"><p><codeph>CleanupClose&lt;class
+T&gt;</codeph> </p> </li>
+<li id="GUID-905CC005-9A20-5276-A546-1FF0B487A819"><p><codeph>CleanupRelease&lt;class
+T&gt;</codeph> </p> </li>
+<li id="GUID-4EDD2083-BB2B-52F5-9E60-E0A608FF2885"><p><codeph>CleanupArrayDelete&lt;class
+T&gt;</codeph> </p> </li>
+</ul>
+<p>The way in which these work is best illustrated graphically by taking <codeph>CleanupClosePushL()</codeph> as
+an example. See the diagram below.</p>
+<fig id="GUID-8A0CEC7B-BFEB-52BF-B205-9EB0DE094C8D">
+<title>Effect of CleanupClosePushL and subsequent pop and destroy</title>
+<image href="GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e217409_href.png" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E477BB63-FE72-4460-AB42-D82FFFCE4CF0_d0e43239_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4874B22-474B-56D0-8A8A-C60411D3CBCB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-E4874B22-474B-56D0-8A8A-C60411D3CBCB"><title>Accessing a field without loading a whole record: Tutorial</title><shortdesc>This tutorial shows you how to access a field without loading a whole record. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-A02C353C-3AB5-58E1-B433-98E7158CB5CD"><p>Before you start, you must understand: </p> <ul><li id="GUID-B77D629D-4E6D-5D2D-840A-0CFA5658D151"><p>the general concept of the Comms Database </p> </li> <li id="GUID-FAF6F934-8AF3-5500-9E25-A650B69E84F4"><p>the specific concept of fields, records, links and tables </p> </li> <li id="GUID-24F0BEF0-ADBB-531D-BE9B-6325E07862F2"><p>how to write and build application code to run on Symbian OS </p> </li> </ul> </prereq> <context id="GUID-D907BA51-0528-5018-9B46-67AE5824CEF7"><p>This tutorial shows you how to get the value of a field in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-7383902B-10D2-52F3-8BDB-478CA6FB587D">GlobalSettings</xref> table. Records from the <codeph>GlobalSettings</codeph> table are not loaded. </p> <p>This tutorial uses the <codeph>BearerAvailablityCheckTSY</codeph> field. This field contains the name of the TSY used to check for bearer availability. </p> </context> <steps id="GUID-A7B63B0B-CF57-5E84-BB08-C957C24675F9"><step id="GUID-E0321D17-9CC5-5BF3-87A8-4A1638069214"><cmd>Make sure that you have created a session. </cmd> </step> <step id="GUID-CE91627F-547F-58C0-A940-9B5461B33536"><cmd>Create the field object in the tool or application process. </cmd> <info>You construct a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;T&gt;</codeph> object and pass <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdBearerAvailabilityCheckTSY</apiname></xref> to the constructor. The symbol <codeph>KCDTIdBearerAvailabilityCheckTSY</codeph> defines the unique numeric Id for the <codeph>BearerAvailablityCheckTSY</codeph> field. </info> <stepxmp><codeblock id="GUID-EB189214-1590-5EB7-8233-B8C50ADCF075" xml:space="preserve">...
+
+// Create the field object. The template parameter is TDesc, because the field value
+// is a short text description. 
+// Use the "... new(Eleave).. " construction to create the field object.
+// Pass KCDTIdBearerAvailabilityCheckTSY as a parameter to the constructor.
+
+CMDBField&lt;TDesC&gt;* descField = new(ELeave) CMDBField&lt;TDesC&gt;(KCDTIdBearerAvailabilityCheckTSY);
+...
+             </codeblock> </stepxmp> </step> <step id="GUID-8B20473F-C8B6-5547-907E-23F42BE260BB"><cmd>Set the data that identifies the field and load the field </cmd> <info>A descriptor field needs an additional call to set the size of the descriptor. Call <codeph>SetMaxLengthL()</codeph> to set the size of the descriptor. This function is a member of the field class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;TDesC&gt;</codeph>. Internally, the function causes the allocation of a descriptor. You must set the size of the descriptor before you assign the data. You can also use the <codeph>SetL()</codeph> function. This function sets the length and assigns the data. The function is a member of the field class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBField</apiname></xref> <codeph>&lt;TDesC&gt;</codeph>. </info> <stepxmp><codeblock id="GUID-95ED9858-3123-56BE-B820-E5EE25A16FB2" xml:space="preserve">...
+
+// The symbol "KMaxTextLength" defines the maximum length of short text.
+// The record Id is ALWAYS 1 for global settings table.
+descField-&gt;SetMaxLengthL(KMaxTextLength);
+descField-&gt;SetRecordId(1); //recorded is ALWAYS 1 for global settings table
+
+// Load the field.
+descField-&gt;LoadL(*iDb);
+...</codeblock> </stepxmp> </step> <step id="GUID-D6A6EA77-B3A3-5614-9129-481E2EAB30D2"><cmd>Check that the field has a value before you use it </cmd> <stepxmp><codeblock id="GUID-1F8C21E5-D9E1-5F1B-B695-6A143C80751D" xml:space="preserve">...
+// Use the IsNull() function to check that the field has a value.
+// In this example, the code leaves if the field does not have a value.
+// Your code needs to handle a Null value appropriately.
+
+if(descField-&gt;IsNull())
+    {
+    User::Leave(KErrNotFound);
+    }
+else
+    {
+    // Either process the content of *descField in place,
+    // or copy the content to another descriptor. 
+    // The processing depends on the structure of your code.
+    // In this example, the content is copied into an RBuf for
+    // further processing.
+    RBuf buf;
+    buf.CleanupClosePushL(); 
+    buf.CreateL(descField);
+    ...
+    // Do something with the data.
+    ...
+    // Delete the RBuf buffer
+    CleanupStack::PopAndDestroy()   
+    ...
+    }
+
+// Do not forget to delete the field object.
+delete descField;
+...</codeblock> </stepxmp> </step> </steps> </taskbody></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e54256_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E48B708E-8B0B-5CF7-80D5-B55966387021" xml:lang="en"><title>GCCE
+build targets</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><b>Introduction </b> </p>
+<p>The <codeph>GCCE</codeph> build target builds ARM code using a version
+of the freely available GNU Compiler Collection (GCC) tools. The GCC compiler
+is intended only for building applications, and cannot be used to compile
+the complete Symbian platform. </p>
+<p>The GCC binaries conform to ABIv2 for the ARM architecture. Details about
+the ABI standard are published at <xref href="http://www.arm.com/products/DevTools/ABI.html" scope="external">http://www.arm.com/products/DevTools/ABI.html</xref>. </p>
+<p>The following table lists the GCC build targets available for various ARM
+architectures that use Thumb or Thumb2 instruction sets: </p>
+<table id="GUID-FDDB808F-F04F-5802-8B14-772E5260E2B4">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Build target</entry>
+<entry>ARM architecture</entry>
+<entry>Instruction set</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>GCCE</codeph>  </p> </entry>
+<entry><p>V5 </p> </entry>
+<entry><p>Thumb </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GCCEV6</codeph>  </p> </entry>
+<entry><p>V6 </p> </entry>
+<entry><p>Thumb </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GCCEV6t2</codeph>  </p> </entry>
+<entry><p>V6 </p> </entry>
+<entry><p>Thumb-2 </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>GCCEV7</codeph>  </p> </entry>
+<entry><p>V7 </p> </entry>
+<entry><p>Thumb-2 </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p> <b>Note:</b> Code built for the targets listed in the earlier table can
+interoperate with code built by other compilers for ARM targets. </p>
+<p><b>Prerequisite </b> </p>
+<p>To build for the GCC targets, you must install the GCC CSL ARM toolchain.
+The installer, <filepath>arm-none-symbianelf-2005-q1c.exe</filepath>, is supplied
+with the OS kit, and is located at <filepath>epoc32\tools\distrib\</filepath>.
+Run this program to start the installation wizard. By default, the compiler
+is installed to <filepath>C:\Program Files\CSL Arm Toolchain\</filepath>. </p>
+<p>The installation wizard does not modify the Windows <codeph>PATH</codeph> environment
+variable. You must manually add the <filepath>bin</filepath> sub-directory
+of the installed tools to the <codeph>PATH</codeph> variable. For example,
+if the compiler is installed to <filepath>C:\gcce</filepath>, then <filepath>C:\gcce\bin</filepath> must
+be added to the <codeph>PATH</codeph> environment variable. </p>
+<p><b>Building for GCC targets </b> </p>
+<p>GCC targets are not the default build targets. To build a program for any
+GCC target, you must explicitly specify the targets as supported platforms
+in the component's <filepath>BLD.INF</filepath> file, using <codeph>prj_platforms</codeph> statement. </p>
+<p>For example: </p>
+<codeblock id="GUID-E9BF3300-5BB9-538E-8D9A-33447B58E477" xml:space="preserve">PRJ_PLATFORMS
+WINSCW GCCE GCCEV6 GCCEV6t2 GCCEV7</codeblock>
+<p>allows the component to be built for <codeph>WINSCW</codeph>, <codeph>GCCE</codeph>, <codeph>GCCEV6</codeph>, <codeph>GCCEV6t2</codeph>,
+and <codeph>GCCEV7</codeph>. </p>
+<p>You can build component for the GCC targets using the following <filepath>bldmake</filepath> and <filepath>abld</filepath> commands: </p>
+<p><userinput>bldmake bldfiles</userinput> </p>
+<p><userinput>abld build gcce | gccev6 | gccev6t2 | gccev7 [udeb | urel]</userinput> </p>
+<p> <b>Note:</b> To build for <codeph>GCCEV6t2</codeph> and <codeph>GCCEV7</codeph>,
+you need GCCE v4.2 that supports building ARM code for Thumb-2. </p>
+<p>Binaries are generated in the <filepath>udeb</filepath> and <filepath>urel</filepath> sub-directories
+of the <filepath>epoc32\release\&lt;GCC platform&gt;\</filepath> directory. </p>
+<p>Import library (<filepath>.dso</filepath>) files are generated in the <filepath>epoc32\release\ARMV5\lib\</filepath> directory.
+This directory is used, as the library file format has not changed since <codeph>ARMV5</codeph>. </p>
+<p> <b>Note:</b> These are the same directories that are used for import libraries
+generated by RVCT for different build targets, such as <codeph>ARMV5</codeph>, <codeph>ARMV6</codeph>,
+and so on. This allows other applications to link to any library, regardless
+of the build target for which they are generated. </p>
+<p><b>ROM building </b> </p>
+<p>The compiler setting allows the Symbian OS base components to include the
+correct compiler-specific run-time libraries in the ROM image.</p>
+<p>The default compiler used to build the reference OS is ARM <codeph>RVCT</codeph>.
+This compiler is indicated to <codeph>buildrom</codeph> using the argument <codeph>-DRVCT</codeph>.
+ </p>
+<p>The toolchain in OS v9.1 also supports binaries built with the <codeph>GCCE</codeph> compiler.
+Binaries built with this compiler can be combined in ROM with binaries built
+with <codeph>RVCT</codeph> to the <codeph>ABIv2</codeph>. To do this, use
+the <codeph>-D_GCCE</codeph> macro: </p>
+<p><userinput>buildrom -D_EABI=ARMV5 -D_GCCE -otechview.img h2 techview</userinput></p>
+<p>By default, if the binaries are not available in GCCE, they are taken from
+the <codeph>ARMV5_ABIV2</codeph> directory, and if not in there
+also, they are be taken from the <codeph>ARMV5</codeph> directory. (<codeph>ARMV5</codeph> is
+necessary as some of the runtime DLLs will be present only in that directory.)
+ </p>
+<p>The order in which buildrom searches directories to get binaries to put
+into ROM can also be specified explicitly using a <codeph>BINARY_SELECTION_ORDER</codeph> command
+in an <filepath>oby</filepath> file. For example: </p>
+<p><userinput>BINARY_SELECTION_ORDER = GCCE, ARMV5_ABIv2, ARMV5</userinput></p>
+<p>The preceding command specifies explicitly that binaries should taken from <codeph>GCCE</codeph>,
+then <codeph>ARMV5_ABIv2</codeph>, and then <codeph>ARMV5</codeph>. </p>
+<p><b>Source issues </b> </p>
+<p>The <codeph>GCCE</codeph> build target uses the same DEF file format as
+the <codeph>ARMV5</codeph> target. By default, the GCC toolchian looks for
+the DEF files in the project's <codeph>EABI</codeph> directory. </p>
+<p> <b>Note:</b> The GCC compiler is very strict in checking that the source
+code conforms to the ANSI C++ standard. Therefore, source code that previously
+compiled with less strict compilers, such as RVCT 2.1, may no longer compile. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E"><title>start &lt;platform&gt; ... end</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>start</codeph>  <varname>platform</varname>  </p> <p><varname>platform-specific-statement-list</varname>  </p> <p>[<codeph>COPY_FOR_STATIC_LINKAGE</codeph>]</p> <p><codeph>end</codeph> </p> <p>A platform-specific section is enclosed in a <codeph>start</codeph> and <codeph>end</codeph> block.</p> <p>The platform-specific statements allowed depend on the platform. Unlike <codeph>#if defined</codeph> blocks, which allow statements to specify different files dependent upon the platform for which the makefile is being created, <codeph>start ... end</codeph> platform blocks are used to delimit statements understood only by the build tools when creating a makefile for a particular platform. </p> <p>Specify the platform as MARM if the section is defined for ARM platforms, or WINS for non-ARM platforms. Specify the platform as WINC for WINC and VC6WINC only sections.</p> <p>The <codeph>COPY_FOR_STATIC_LINKAGE</codeph> statement is useful for DLLs that are both dynamically loaded and statically linked. If it is used in a <codeph>START WINS</codeph> block, then the target DLL is built both into the specified target directory (for dynamic loading), and into the <filepath>epoc32\release\</filepath> <varname>wins or
+        winscw</varname> <filepath>\</filepath> <varname>udeb or urel</varname> (for static linking).</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4A76562-E030-51A5-BD14-C734457443CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E4A76562-E030-51A5-BD14-C734457443CA"><title>Units, drives and volumes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Classes <codeph>TDriveUnit</codeph>, <codeph>TDriveInfo</codeph> and <codeph>TVolumeInfo</codeph> encapsulate drive and volume information. Drive and volume information both include the attributes of the drive and the media mounted on it. The volume has additional information including the amount of free space on the media and its size. </p> <p>A unit is a device which may or may not have a drive in it. For removable media, the unit is always present, but a drive may not be.</p> <p>A drive may have from one to four partitions on it. Each partition represents a volume. The volume may or may not be formatted.</p> <p>A maximum of 26 drives are available and they may be represented by letters (<filepath>A</filepath> to <filepath>Z</filepath>), or by numbers (0 to 25). To find which drives are available, use <codeph>RFs::DriveList()</codeph> to get the drive list. A <codeph>TDriveList</codeph> is an array of 26 bytes. Drive <filepath>A</filepath> has value 0, <filepath>B</filepath> = 1 etc. Any byte in the <keyword>drive
+        list</keyword> which has a non zero value signifies that the corresponding drive exists. The byte's value can be used to retrieve the drive's attributes by using a bitwise AND with the corresponding drive attribute constant.</p> <p><codeph>RFs::Drive()</codeph> may also be used to get drive attributes.</p> <p>Class <codeph>RFormat</codeph> allows a drive to be formatted in a series of steps. <codeph>RRawDisk</codeph> allows a disk’s data to be accessed in raw mode.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E4A950EA-5671-5755-B3EF-5D6B90E19AE6" xml:lang="en"><title>Maintaining
+Log Events </title><shortdesc>This tutorial describes how to maintain events using Log Engine. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context id="GUID-9230A593-9E3C-52B2-81F3-6C54F7E6015E"><p>You maintain a
+log by adding, changing and deleting events with the appropriate calls to
+the <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> member of your application. When you are
+adding or changing events, the arguments are a <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref> and
+a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object to hold the return value. When
+you are deleting, they are a <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref> and a <xref href="GUID-271367A8-DD4F-3A82-AD88-F3E94F2AA980.dita"><apiname>TLogId</apiname></xref>. </p> <p>It
+is sometimes necessary to create a custom event type. If you want to log events
+of a custom created event type, you need to initialise a <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> object
+and add it to the log. You add the event type when you install your application,
+and delete it if you uninstall the application. You add, change and delete
+custom event types by calling the appropriate functions of a <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> object: </p> <p> <codeph>iLogClient-&gt;AddEventType(*iLogEventType,
+iStatus);</codeph>  </p> <p> <codeph>iLogClient-&gt;ChangeEventType(*iLogEventType,
+iStatus);</codeph>  </p> <p> <codeph>iLogClient-&gt;DeleteEventType(aId, iStatus);</codeph>  </p> <p>The
+arguments are a <xref href="GUID-E7CCB043-770E-3722-B735-92B65CC7A0D8.dita"><apiname>CLogEventType</apiname></xref> (or <xref href="GUID-530281E6-29FC-33F2-BC9B-610FBA389444.dita"><apiname>TUid</apiname></xref> when
+deleting) and a <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> object. </p><p> To maintain
+log events, do the following: 
+</p> </context>
+<steps id="GUID-41BB11DF-8016-58A1-9291-674C9CE396C3">
+<step id="GUID-474DF156-F653-569E-B038-446B11A788A4"><cmd>declare an event
+as a member of your log client class </cmd>
+<stepxmp><codeblock id="GUID-EA8E98C3-B225-5AFD-A107-5C62603F87D8" xml:space="preserve">CLogEvent* iCurrentEvent;</codeblock> </stepxmp>
+</step>
+<step id="GUID-09506C94-0251-503D-96CF-03F13296EB8E"><cmd/>
+<info>initialise the event using its member functions </info>
+<stepxmp><codeblock id="GUID-4300C98A-EEB4-5041-871F-5B76702D6061" xml:space="preserve">iCurrentLogEvent = CLogEvent::NewL();
+...
+iCurrentLogEvent-&gt;SetTime(time);</codeblock> </stepxmp>
+</step>
+<step id="GUID-18909AB0-6248-5FE5-A7ED-397F611AD412"><cmd/>
+<info>add an event to a log with the <xref href="GUID-91804418-6DCC-3ACF-BA1E-399B112285A3.dita"><apiname>AddEvent()</apiname></xref> function
+of a <xref href="GUID-51C67545-12BA-326D-BD8F-662B24C68ED2.dita"><apiname>CLogClient</apiname></xref> object </info>
+<stepxmp><codeblock id="GUID-8048721D-C397-5DE3-8B94-113DA2801605" xml:space="preserve">iLogClient-&gt;AddEvent(*iLogEvent, iStatus);</codeblock> </stepxmp>
+<info> <xref href="GUID-91804418-6DCC-3ACF-BA1E-399B112285A3.dita"><apiname>AddEvent()</apiname></xref> creates an asynchronous request and no
+other asynchronous request must be outstanding when you call it. For this
+reason, the <xref href="GUID-CDFB61A7-1C74-3F63-9FDF-5A3B8603A010.dita"><apiname>CLogEvent</apiname></xref> argument is typically read off a
+queue of events waiting to be processed. </info>
+</step>
+<step id="GUID-4AB54E42-D28E-5806-B8F4-2F2A7B69880B"><cmd/>
+<info>change an event record with the <xref href="GUID-C8F2B567-6B68-3460-9799-6658DF3771A8.dita"><apiname>ChangeEvent()</apiname></xref> function. </info>
+<stepxmp><codeblock id="GUID-B9D07568-3A3B-5A1D-8F91-B470CB95281F" xml:space="preserve">iLogClient-&gt;ChangeEvent(*iLogEvent, iStatus);</codeblock> </stepxmp>
+</step>
+</steps>
+<result id="GUID-306D0963-3299-59BB-BBCA-B0DDFD945F93"><p> Note that it is
+not possible to change the event type of an event after
+ it has been added to the log. 
+</p><p>The events specified by the log engine clients are maintained. </p> </result>
+<postreq id="GUID-E9031A12-D139-5D86-A54D-99174D9A8012"><p>You do not normally
+need to delete an event. A log has a maximum size which the log engine maintains
+automatically by deleting the oldest events when newly added events would
+cause the maximum to be exceeded. If you want to delete an event for other
+reasons you call the <codeph>DeleteEvent()</codeph> function. <codeph>iLogClient-&gt;DeleteEvent(aLogId,
+iStatus);</codeph>  </p> <p>It is important to know that deleting an event
+type and deleting the actual events of that type are two separate actions.
+If you just delete the type and not the events, the events will remain in
+the log but have no type. </p> <p> </p> </postreq>
+</taskbody><related-links>
+<link href="GUID-BE65B3A7-04E8-5406-B46A-09E2608E0F1F.dita"><linktext>Requesting
+Log Engine Notifications</linktext></link>
+<link href="GUID-2022F702-9899-5798-8932-D70119C7177D.dita"><linktext>Setting Up
+A Log Engine Client</linktext></link>
+<link href="GUID-55ECBCF5-FC29-5A4A-A3C6-1CB1C0D562CE.dita"><linktext>Displaying
+Log Events</linktext></link>
+<link href="GUID-BCB0E50F-B22E-5964-BB68-BEE1870D9C79.dita"><linktext>Configuring
+Log Engine </linktext></link>
+</related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e115649_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754"><title>pagedcode</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>pagedcode</codeph>  </p> <p>Use the <codeph>pagedcode</codeph> statement to specify that the executable is code paged. </p> <p>If an executable is marked as code paged, the pages are loaded into RAM page by page on demand. This can reduce application startup time and memory usage. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4D47AED-5FCA-535B-9B8B-3267A4CD01C2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E4D47AED-5FCA-535B-9B8B-3267A4CD01C2"><title>Allocation Strategy</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When building a chain of one or more Comms buffers to fulfil an allocation request, the pond uses the following rules: </p> <ul><li id="GUID-B09D8CAD-74E5-5A66-A066-4FFDB6E06A70"><p>First Rule: use the fewest Comms buffers possible </p> </li> <li id="GUID-B1732295-B9D6-5553-B04D-E1C688E2764C"><p>Second Rule: use the smallest Comms buffers that satisfy the request </p> </li> </ul> <p>With some of the <codeph>Alloc()</codeph> methods, you can specify size constraints for the buffer selection. You can define the minimum and maximum size of the Comms buffers in the chain, but there is a higher chance that the allocation will fail if there are no free buffers in the specified size range. </p> <p>The biggest block of contiguous memory has the size of the largest Comms buffer in the pond, as returned by <xref href="GUID-F5B96520-E8A6-3775-9059-DF5A1668043B.dita#GUID-F5B96520-E8A6-3775-9059-DF5A1668043B/GUID-AA451DD4-F367-3494-B646-FC9064568F92"><apiname>RCommsBufPond::LargestBufSize()</apiname></xref>. Requests for more memory than this value always return a chain of several Comms buffers. </p> <p>In the following example table, the pond has two pools, respectively containing 128-bytes and 1,500-bytes buffers. </p> <table id="GUID-C055F229-7833-528A-A95E-99E9C0DD9198"><tgroup cols="4"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><thead><row><entry>Allocation request</entry> <entry>128-byte buffers</entry> <entry>1,500 byte buffers</entry> <entry>Motivation</entry> </row> </thead> <tbody><row><entry><p>3000 </p> </entry> <entry><p>0</p> </entry> <entry><p>2</p> </entry> <entry><p>First rule - fewer buffers than, for example, 24 128-byte buffers. </p> </entry> </row> <row><entry><p>1514 </p> </entry> <entry><p>1 </p> </entry> <entry><p>1</p> </entry> <entry><p>Second rule - Less memory than two 1,500-byte buffers. </p> </entry> </row> <row><entry><p>1500 </p> </entry> <entry><p>0</p> </entry> <entry><p>1</p> </entry> <entry><p>A buffer of the required size is available. </p> </entry> </row> <row><entry><p>1499 </p> </entry> <entry><p>0</p> </entry> <entry><p>1</p> </entry> <entry><p>First rule - Fewer buffers than 12 128-byte buffers. </p> </entry> </row> <row><entry><p>129 </p> </entry> <entry><p>0</p> </entry> <entry><p>1</p> </entry> <entry><p>First rule - Fewer buffers than two 128-byte buffers. </p> </entry> </row> <row><entry><p>128 </p> </entry> <entry><p>1 </p> </entry> <entry><p>0</p> </entry> <entry><p>A buffer of the required size is available. </p> </entry> </row> </tbody> </tgroup> </table> </conbody><related-links><link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> <link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf)
+                and Comms Chains</linktext> </link> <link href="GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita"><linktext>Allocation tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E4E656BF-E5F7-5125-AE88-60C3E9FCF0D2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E4E656BF-E5F7-5125-AE88-60C3E9FCF0D2" xml:lang="en"><title>InterfaceDefinition:
+ECom Interface Definition Example Code</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-B84E1E5E-7141-52D2-A589-35F334058DE5"><title>Download</title> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4d91db5b-1dd7-43ba-9ce8-1c2a1f08a120.zip" scope="external">Ecom.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4d91db5b-1dd7-43ba-9ce8-1c2a1f08a120.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse</xref>.  </section>
+<section><title>Description</title> <p> <filepath>InterfaceDefinition</filepath> provides
+an example ECom interface definition. It declares a base class, <codeph>CExampleInterface</codeph>,
+from which implementations of the interface should derive. </p> <p> <codeph>CExampleInterface</codeph> provides
+three <codeph>NewL()</codeph> functions that allow clients to get respectively: </p> <ul>
+<li id="GUID-C512F948-599C-5C46-AB2B-14348DFFD02A"><p>the default implementation
+of the interface, using a specified custom resolver to determine what is the
+default </p> </li>
+<li id="GUID-2B3B6E81-296C-554C-BB18-BCF54121C26F"><p>an implementation determined
+by the default resolver, using a specified string as a resolution parameter </p> </li>
+<li id="GUID-F0FD51DC-CC1D-5D27-ABFE-9381A168E996"><p>an implementation determined
+by the default resolver, using a specified string as a resolution parameter,
+and passing some data to the implementation </p> </li>
+</ul> <p> <codeph>CExampleInterface</codeph> uses the overloads of <codeph>REComSession::CreateImplementation()</codeph> to
+implement these functions. </p> <p> <codeph>CExampleInterface</codeph> declares
+one pure virtual function, <codeph>DoMethodL()</codeph>, which supplies a
+service to the client. Implementations must implement this function. </p> <p> <filepath>InterfaceDefinition</filepath> also
+provides an example of a custom resolver, called <codeph>CExampleResolver</codeph>.
+Its behaviour is the same as ECom's default resolver. Because a resolver is
+an implementation of the ECom <codeph>CResolver</codeph> interface, it requires
+a registration resource file (<filepath>100098ea.rss</filepath>), and an exported
+factory table (<filepath>Proxy.cpp</filepath>). </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita"><apiname>REComSession</apiname></xref></p><p><xref href="GUID-6E3118A3-4CE5-32AD-9C73-5CDD7B54D9EC.dita"><apiname>TEComResolverParams</apiname></xref></p><p><xref href="GUID-DABE7E22-BDF6-3A2E-99F1-3453706A694E.dita"><apiname>RImplInfoPtrArray</apiname></xref></p><p><xref href="GUID-38D97F70-383E-3950-B052-CB56965B0B48.dita"><apiname>CResolver</apiname></xref></p></section>
+<section><title>Usage</title> <p>Building <filepath>InterfaceDefinition</filepath> exports
+the files that contain the interface definition, <filepath>Interface.h</filepath> and <filepath>Interface.inl</filepath>,
+to <filepath>epoc32\include\</filepath>; produces a DLL <filepath>ExampleResolver.dll</filepath>;
+and compiles a resource file <filepath>ExampleResolver.rsc</filepath> in the <filepath>\resource\plugins\</filepath> directory. </p> <p>Implementations
+of the interface are provided in the <xref href="GUID-711C387D-E10C-5469-872A-5B2BDACC9B91.dita">Interface
+Implementation</xref> example. </p> <p>A client program that accesses the
+interface is provided in the <xref href="GUID-7B4A78D8-64BB-550E-ABC0-255312351215.dita">Interface
+Client</xref>example. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E50EC0B4-A434-4C30-A1A9-1A976185FF28.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E50EC0B4-A434-4C30-A1A9-1A976185FF28" xml:lang="en"><title>UI architectures</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following UI architectures are available to applications</p>
+<ul>
+<li><p><xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">traditional
+Symbian UI application architecture</xref></p></li>
+<li><p><xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">view
+architecture</xref></p></li>
+<li><p><xref href="GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita">dialog
+architecture</xref></p></li>
+</ul>
+<p>You can use different architectures for your UI. For example, you may
+choose to follow traditional Symbian UI architecture, view architecture, or
+dialog architecture.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E50FC36D-949A-42E0-97A6-64D336DF8057.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E50FC36D-949A-42E0-97A6-64D336DF8057" xml:lang="en"><title>HTTP
+Version Property</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>By default, HTTP sessions use HTTP/1.1. To use HTTP/1.0, the connection
+information property <codeph>HTTP::EHTTPVersion</codeph> must be set to <codeph>HTTP::EHttp10</codeph>. </p>
+<p>From <filepath>HTTPEXAMPLECLIENT</filepath>: </p>
+<codeblock id="GUID-6555A0B4-B05A-5270-9F04-E577E0916714" xml:space="preserve">switch(cmd)
+    {
+    case EVersion10:
+        SetHttpVersion(HTTP::EHttp10);
+        break;
+    case EVersion11:
+        SetHttpVersion(HTTP::EHttp11);
+        break;
+        ...
+
+void CHttpClient::SetHttpVersion(HTTP::TStrings aHttpVersion)
+    {
+    RHTTPConnectionInfo connInfo = iSess.ConnectionInfo();
+    RStringPool p=iSess.StringPool();
+    connInfo.SetPropertyL(p.StringF(HTTP::EHTTPVersion,RHTTPSession::GetTable()),THTTPHdrVal(p.StringF(aHttpVersion)));
+    }</codeblock>
+<p>The version chosen will apply to all new transactions following the property
+change, but will not affect any transactions currently in progress.</p>
+<p>As HTTP/1.1 mandates the use of a persistent connection for requests made
+in series to a single origin server, the default behaviour of HTTP Client
+is to set up persistent connections for each transaction. This can be overridden
+by specifying a Connection header in the client request. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e178166_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E525E177-1FE5-5845-9BF8-B76D434B838D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E525E177-1FE5-5845-9BF8-B76D434B838D" xml:lang="en"><title>Integral
+types</title><shortdesc>This document describes the integer data types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> is the natural machine word integer and should
+be used in all general contexts where integer arithmetic is desired.</p>
+<p><xref href="GUID-49ACAE7B-1FE4-3BA6-8772-F104D3F01E41.dita"><apiname>TInt32</apiname></xref>, <xref href="GUID-6BE0B3FC-2B36-3982-AA51-971F3354925E.dita"><apiname>TInt16</apiname></xref>, and <xref href="GUID-F2669E84-D47E-3C83-A549-D77A883787CC.dita"><apiname>TInt8</apiname></xref> map
+onto C++ built-in types in most implementations. These types should only be
+used where the size of the integer is of first importance: sometimes, this
+is relevant for C++ arrays and struct/class members. Note that C++ passes
+all function arguments as <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref>, so there is nothing to
+be gained by using narrower types in function interfaces.</p>
+<p><xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> is an unsigned integer of the natural machine
+word size. Experience with C and C++ suggests that unsigned integers are not
+suitable for representing quantities whose valid values should always be positive. <xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> should
+be used in these circumstances instead. The main reasons behind this surprising
+assertion are, firstly, that surprises occur when C++ performs implicit type
+conversions for arithmetic and assignment, and, secondly, that C++ does not
+trap bounds errors, with the result that <xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> s which
+"accidentally" go negative actually take on very large positive values instead.</p>
+<p><xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> should be used for flag and handle words, which
+are manipulated using bitwise and equality-comparison operations rather than
+arithmetic. <xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> should also be used in exceptional circumstances
+where the full range of a machine word is required for arithmetic: this use
+is exceptional and must always be carefully controlled.</p>
+<p><xref href="GUID-F58A1C0D-1B36-37EA-8012-1C74B2D12CAD.dita"><apiname>TUint32</apiname></xref>, <xref href="GUID-4BB532F8-938E-37C7-9D40-6010EB716E7A.dita"><apiname>TUint16</apiname></xref>, and <xref href="GUID-F894527F-13A6-3E6D-BA7B-187812CDF20E.dita"><apiname>TUint8</apiname></xref> types
+are available where the specific representation width is important.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD"><title>Configuring and clearing files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>You can configure the following settings for audio or video files, and the session log file: </p> <ul><li id="GUID-59FCA9A3-F83D-5097-AC24-E87318B0EC59"><p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita#GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD/GUID-10ACB7AE-2205-5023-9635-1AD770142612">Configuring audio files</xref>  </p> </li> <li id="GUID-6BEA4715-1C27-563C-9E53-B70D13390D13"><p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita#GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD/GUID-742C4F60-67D6-543E-B45D-DD6D4C2A076D"> Configuring video files</xref>  </p> </li> <li id="GUID-CC0B59A1-E026-5507-967E-202FDEB49A1F"><p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita#GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD/GUID-D3B03F7B-280B-5181-84C8-0F485312989E"> Configuring file metadata</xref>  </p> </li> <li id="GUID-BC3584F1-11FC-57A2-83D2-06EF8F35DD2A"><p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita#GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD/GUID-8E05A501-610F-5DD8-B6A8-33FFDEC1E693"> Setting the video output screen</xref>  </p> </li> <li id="GUID-87E4CBAB-F3B0-53DE-A7D7-4D7AFF9048DB"><p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita#GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD/GUID-335765F4-B7D0-5E2D-ACC5-3F0ABCAD7085">Enabling auto pause and resume for video</xref>  </p> </li> <li id="GUID-B56040FE-9A57-58D9-AC00-F0A4A39C58F7"><p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita#GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD/GUID-F97DA796-FBB7-5571-AFFD-3D05B0379667">Clearing the log file</xref>  </p> </li> </ul> <p> <i>Note</i>: You can configure media files only when they are open, and when they are neither being recorded nor played. </p> <section id="GUID-10ACB7AE-2205-5023-9635-1AD770142612"><title>Configuring audio files </title> <p>To configure the settings of an audio file: </p> <ol id="GUID-96A42A7D-890F-521A-B492-A55A3C0A0277"><li id="GUID-F96A562C-C09F-5DD4-8DC0-0B82A356F4A8"><p>In the <i>File</i> menu, click <i>Open for Play</i>, and select the audio file you want to configure. </p> </li> <li id="GUID-56C06939-250A-57BF-A194-7FD42A291816"><p>In the <i>Settings</i> menu, click <i>Audio</i>. The <i>Audio Settings</i> dialog box is displayed. </p> <fig id="GUID-9404C9C8-B263-5CD7-BB04-58B8D64778BE"><image href="GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e304011_href.jpg" placement="inline"/></fig> </li> <li id="GUID-BA9DE04B-F28B-5812-A1C3-D946B0C652A9"><p>In the <i>Repeats</i> box, enter the number of times to repeat the audio clip. </p> </li> <li id="GUID-2C07C46F-5083-5E37-9905-2E1DB2BFC654"><p>In the <i>Delay</i> box, enter the interval between repeats in seconds. </p> </li> <li id="GUID-DA3925A0-F812-56C0-96CF-06553D723209"><p>Select the <i>Autoplay</i> check box to play the file automatically when you open it for play. </p> </li> <li id="GUID-A2EE886D-978B-544D-ACAD-82F8AE911970"><p>Select the <i>Priority</i> and <i>Priority Preference</i>. </p> </li> <li id="GUID-5F634EFE-FC4A-5454-A4DD-5372F3311F8A"><p>Select the <i>Auto Pause&amp;Resume</i> check box to enable this functionality. </p> </li> <li id="GUID-453E68B1-543A-545D-958C-7D1784CEF6F5"><p>Click <i>OK</i> to save the audio settings. </p> </li> </ol> </section> <section id="GUID-742C4F60-67D6-543E-B45D-DD6D4C2A076D"><title> Configuring video files</title> <p> <b>Note:</b> The ability to configure the video settings is not yet supported. </p> <p>To configure the settings of a video file: </p> <ol id="GUID-68FA45CF-E92D-54B1-A40B-57182D0B00EB"><li id="GUID-F76A916E-EFA2-59CA-828E-94324FF8135E"><p>In the <i>File</i> menu, click <i>Open for Play</i>, and select the video file you want to configure. </p> </li> <li id="GUID-1BA8998F-E933-5733-8340-68CAB7C41690"><p>In the <i>Settings</i> menu, click <i>Video</i>. The <i>Video Setting</i> dialog box is displayed. </p> <fig id="GUID-804DF0A9-259C-5896-9E4F-E6F1244BCCCD"><image href="GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e304106_href.jpg" placement="inline"/></fig> </li> <li id="GUID-FB24EA21-D318-5849-AAE6-E236A068F934"><p>Select the degree of <i>Rotation</i>. </p> </li> <li id="GUID-DE89FFB3-1FF9-5D5B-B74B-B32888D25A5B"><p>Enter percentages for the <i>Scale Width</i> and <i>Scale Height</i>. </p> </li> <li id="GUID-95D6F7CD-33F8-5B53-9323-96511E20B17F"><p>Select the <i>Anti Alias Filtering</i> check box to enable anti-alias filtering. </p> </li> <li id="GUID-A448ECA0-A6A1-58E0-B519-5CF61E3567AD"><p>Enter the coordinates in the <i>top</i>, <i>bottom</i>, <i>left</i> and <i>right</i> boxes to define the boundaries of the crop region. </p> </li> <li id="GUID-AF2BD2D0-B4CC-5B03-B196-5395902BBE12"><p>Select the <i>Viewfinder</i> check box to enable it. </p> </li> <li id="GUID-6E586D81-8759-5D8F-ADC5-2916DD17CCFF"><p>Enter values for the <i>Camera Index</i> and <i>Camera Priority</i>. </p> </li> <li id="GUID-AC381ED5-C310-5CE5-8B44-ED419B5AF3C6"><p>Click <i>OK</i> to save the video settings. </p> </li> </ol> </section> <section id="GUID-D3B03F7B-280B-5181-84C8-0F485312989E"><title>Configuring file metadata</title> <p>You can enter the metadata for any media file that is open for record. You can view but cannot modify the metadata of a file that is open for play. </p> <p>To enter or modify file metadata: </p> <ol id="GUID-2BBE1526-B882-52C1-81F7-520CB74E0D19"><li id="GUID-D15B6C04-0833-5583-95FC-3231195277F4"><p>In the <i>File</i> menu, select <i>Open for Record</i>. </p> </li> <li id="GUID-D760F842-6C8F-5825-AB40-A3D3EDA77257"><p>In the <i>Settings</i> menu, select <i>Meta Data</i>. The <i>MetaData</i> dialog box is displayed. </p> <fig id="GUID-6231F7D6-3862-5DAB-BC89-3BC3F1A1242A"><image href="GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e304218_href.jpg" placement="inline"/></fig> </li> <li id="GUID-19A742D8-3CA8-5E8A-AEE5-DBADCC03426D"><p>Enter information into the <i>Title</i>, <i>Author</i>, <i>Copyright</i>, <i>Revision</i>, <i>Category</i> and <i>Comments</i> boxes. </p> </li> <li id="GUID-C6BAB573-7EC5-5932-A587-56C51AA6FD09"><p>Click <i>OK</i> to save the metadata details entered. </p> </li> </ol> </section> <section id="GUID-8E05A501-610F-5DD8-B6A8-33FFDEC1E693"><title>Setting the video output screen</title> <p>You can set the video output rendering to any specific screen number. </p> <p>To set the output screen: </p> <ol id="GUID-1AD9FD49-93EC-583D-B1F7-604B2552F2B8"><li id="GUID-17628EFA-C86B-5FDC-97ED-601DE9F383FD"><p>In the <i>Settings</i> menu, select <i>Multiple Screen</i>. The <i>Set Output Screen</i> dialog box is displayed. </p> <fig id="GUID-102B7E57-B693-5C3B-BC1A-E13D718ABC6B"><image href="GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e304279_href.png" placement="inline"/></fig> </li> <li id="GUID-154D8E32-E573-5E32-A9FE-2D69BBDAA1A5"><p>Enter the <i>Screen Number</i> in the <i>Enter the Screen Number</i> box. </p> </li> <li id="GUID-B091B41A-69D7-55CD-9AE9-95DA19F7269D"><p>Click <i>OK</i> to save the output screen setting. </p> <p> <b>Note:</b> If the <i>Screen Number</i> is not supported, the MVS displays a <codeph>KErrNotSupported</codeph> message. </p> </li> </ol> </section> <section id="GUID-335765F4-B7D0-5E2D-ACC5-3F0ABCAD7085"><title>Enabling auto pause and resume for video</title> <p>You can enable auto pause and resume for video by registering for resource notification. Registering for resource notification means that the audio playback for a video can be paused and resumed efficiently if access to the resource is lost and subsequently regained. </p> <p>To enable auto pause and resume: </p> <ol id="GUID-3F039CE8-B1A9-5F4C-A692-91E0F26CB410"><li id="GUID-D75B0956-3C05-5137-AA8C-032F6C01BF88"><p>In the <i>Settings</i> menu, select <i>Register For Notification</i>. The <i>Register For Resource Notification</i> dialog box is displayed. </p> <fig id="GUID-BAE3C4F0-3F48-5389-B163-B0A7FDAE0FC9"><image href="GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e304340_href.png" placement="inline"/></fig> </li> <li id="GUID-5274C1D3-DAB0-5C0B-A3B7-3D23F39ACA90"><p>Select the <i>Enable Auto Pause &amp; Resume</i> check box to enable this functionality. </p> </li> <li id="GUID-E45FF772-F48E-5B47-80AB-97ED358F8FC3"><p>Click <i>OK</i> to save the auto pause and resume setting. </p> <p>If you currently have a media file open for record, an information message is displayed to inform you that the setting has been applied. Otherwise, the setting is saved and applied when you next open a media file for record. </p> </li> </ol> <p>To disable auto pause and resume, repeat the above steps but clear the <i>Enable Auto Pause &amp; Resume</i> check box. </p> </section> <section id="GUID-F97DA796-FBB7-5571-AFFD-3D05B0379667"><title>Clearing the log file</title> <p>All events during a session are recorded in a <xref href="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita">log file</xref>. </p> <p>To clear the log for the current session, in the <i>Settings</i> menu, click <i>ClearLog</i>. </p> <p> <b>Note:</b> This feature is currently not available. </p> </section> <section><title>See Also</title> <p> <xref href="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita">Introduction to the MVS</xref> </p> <p> <xref href="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita">MVS GUI layout</xref> </p> <p> <xref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita">Recording media files</xref> </p> <p> <xref href="GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita">Playing media files</xref> </p> <p> <xref href="GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita">Editing media files</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e303164_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E530CBB9-C20D-5426-89AA-DC0281C05381.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E530CBB9-C20D-5426-89AA-DC0281C05381" xml:lang="en"><title>Inter
+Process Communication Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-473DC9B6-A731-4F9B-9116-F174D9DDC6DB"><title>Purpose</title> <p>Provides idioms and frameworks by which
+processes can pass requests and data to other running processes. </p> </section>
+<section id="GUID-21600C43-FBB8-4D79-8FC6-8DB0D1396FFA"><title>Architectural relationships</title> <p>The APIs in this group
+are fundamental to Symbian platform programming. This is particularly so of
+the high-level classes in the Asynchronous Services API, which are provide
+the underlying structure of most Symbian platform applications.</p> </section>
+<section id="GUID-D6CD2FE0-B8AD-4806-8AA6-1FC7CA9B197B"><title>Description</title> <p>Functionality is provided by a number
+of APIs. Use them as follows:</p> <p><xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous
+Services Overview</xref> </p> <p>Provides the idioms by which one process
+in Symbian platform can request services from another. </p> <p><xref href="GUID-D0D27AEA-FDDB-5F6F-94F6-ADDF5910DC47.dita">Client/Server
+Overview</xref> </p> <p>Provides the Symbian platform client/server
+framework, by which a program can offer services to multiple other programs.</p> <p><xref href="GUID-24508C2D-31B9-5CC2-9EB8-F00AD39D8AA0.dita">Notification Services Overview</xref> </p> <p>Provides
+miscellaneous low-level services for notifying programs of environment changes
+and of thread deaths, and for putting simple messages on screen.</p> </section>
+<section id="GUID-01EC89FD-DD72-4C75-B76C-BB8174BE9DB2"><title>See also</title> <p><xref href="GUID-AFE6FB6B-E7FC-50A2-8374-B046AA709EB5.dita">Environment
+Change Notifier Overview</xref> </p> <p><xref href="GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita">Package
+Buffers Overview</xref> </p> <p><xref href="GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita">Reference
+Counting Objects Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System
+Static Functions Overview</xref> </p> <p><xref href="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita">Threads
+And Processes Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e180021_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C" xml:lang="en"><title>Global
+Surface Updates</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Global surface updates are surface updates that are submitted to all displays
+rather than just one display. By using global surface updates, the Video Renderer
+can update surfaces on all displays including ones that it is not aware of.
+When the Video Renderer sends a global surface update, the update is broadcast
+by the Graphics <xref href="GUID-81A0A2E9-4BB9-58BF-B2D3-08098E7E9C7C.dita">Surface
+Update</xref> component to all Composition Implementations present in the
+system. Each Composition Implementation determines whether the surface is
+displayed on its associated screen and if so, forces an update. For more information,
+see <xref href="GUID-D2ECF215-B53C-5659-BA86-5B658C0C2D2F.dita">Global Surface
+Updates</xref> in the Graphics Guide. </p>
+<p>The Video Renderer registers and unregisters surfaces with the Window Server
+for all available displays. When the client calls <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita"><apiname>CVideoRenderer::CreateSurfaceL()</apiname></xref>,
+the Video Renderer creates the surface and then registers it with each display.
+When the client calls <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita"><apiname>CVideoRenderer::DestroySurfaceL()</apiname></xref>,
+the Video Renderer unregisters the surface with each display and then destroys
+it. The following sequence diagram shows how the Video Renderer registers
+and unregisters surfaces: </p>
+<fig id="GUID-B9190405-76E6-557D-A1F7-03ADDB8E456D">
+<title>           Surface registration          </title>
+<image href="GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e302544_href.png" placement="inline"/>
+</fig>
+<p>The Video Renderer uses the global constant <codeph>KAllScreens</codeph> (provided
+by the Surface Update component) to ensure all displays are updated with new
+data. The following sequence diagram shows the Video Renderer passing <codeph>KAllScreens</codeph> in
+the call to <xref href="GUID-AFEC8287-41C9-36BB-B0F7-ECC034D34DC6.dita"><apiname>RSurfaceUpdateSession::SubmitUpdate()</apiname></xref>: </p>
+<fig id="GUID-4CA7A049-1B60-5CB5-956A-DDDFF0A5E3B1">
+<title>           Data flow between client, Video Renderer and Surface Update
+client-side API          </title>
+<image href="GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e302567_href.png" placement="inline"/>
+</fig>
+</conbody><related-links>
+<link href="GUID-98FBEA7E-78BA-5A64-90D6-4641418003B4.dita"><linktext>Video Renderer
+Component</linktext></link>
+<link href="GUID-63CB6C7E-44EC-5D0B-A37D-FE78F7D76592.dita"><linktext>Graphics
+Composition Collection</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E5893C4A-024A-53A7-805F-68989382DC3F"><title>Bluetooth Service Discovery Database Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Allows a local service to register itself to a local Bluetooth service database. This enables remote Bluetooth devices to discover the service doing an SDP Agent search. </p> </section> <section><title>Architectural relationships</title> <p>The Service Discovery Database API is one of two APIs that allow you to use the Bluetooth Service Discovery Protocol. The other, the <xref href="GUID-8D5E17DA-8EF1-52B4-9706-9836B8D6CE43.dita">Bluetooth Service Discovery Agent</xref>, enables you to discover the Bluetooth services, and the attributes of those services, that are available on a remote device. </p> </section> <section><title>Description</title> <p><b>Service Discovery Database</b> </p> <p>A client must create and connect a session, <xref href="GUID-0879B4D7-A6FA-382F-A124-0234BA89D33D.dita"><apiname>RSdp</apiname></xref>, and a subsession, <xref href="GUID-FC133F0F-C9E8-30CB-B2FE-8AC9F7F802AC.dita"><apiname>RSdpDatabase</apiname></xref>, to access the database. A subsession allows service records and their attributes to be added, updated, and deleted. </p> <p><b>Service attributes</b> </p> <p>A service is described through a number of attributes, each of which can hold a specific type of value, such as an integer, boolean, string, etc. </p> <p>The base class through which all attributes are manipulated is <xref href="GUID-5528763A-0A50-3029-BEAB-CEC3BA08ABF1.dita"><apiname>CSdpAttrValue</apiname></xref>. </p> <p>A family of classes derived from <xref href="GUID-5528763A-0A50-3029-BEAB-CEC3BA08ABF1.dita"><apiname>CSdpAttrValue</apiname></xref> provide classes through which these types can be manipulated: <xref href="GUID-B1D56FE2-29E4-3EB3-B638-04336A84F80B.dita"><apiname>CSdpAttrValueBoolean</apiname></xref>, <xref href="GUID-74C4154F-9C20-3C23-86EB-D4B602E79DC1.dita"><apiname>CSdpAttrValueDEA</apiname></xref>, <xref href="GUID-7AF08589-F6E5-36A1-AD2C-84D3CB877451.dita"><apiname>CSdpAttrValueDES</apiname></xref>, <xref href="GUID-31EE0888-4D8D-3668-8658-62A1ACFA9E4C.dita"><apiname>CSdpAttrValueInt</apiname></xref>, <xref href="GUID-63EDF468-719A-3EDF-A7F3-53F837AC762B.dita"><apiname>CSdpAttrValueNil</apiname></xref>, <xref href="GUID-3E049232-901E-3C1A-BA7B-8D1F8B90B85C.dita"><apiname>CSdpAttrValueString</apiname></xref>, <xref href="GUID-127DA8BE-A9F2-3536-97EA-A4BCCD51A0E3.dita"><apiname>CSdpAttrValueUint</apiname></xref>, <xref href="GUID-B55A8C55-D7DB-3A96-935A-D09161DE848E.dita"><apiname>CSdpAttrValueURL</apiname></xref>, and <xref href="GUID-CE08D370-E599-37F4-B0CC-D889C1E04B30.dita"><apiname>CSdpAttrValueUUID</apiname></xref>. </p> <p>Two classes, <codeph>CSdpAttrValueDEA</codeph> and <codeph>CSdpAttrValueDES</codeph>, enable lists of attributes to be constructed. Both implement the <xref href="GUID-3DC9CB25-E55D-38E6-8940-B3320EF7E9DD.dita"><apiname>MSdpElementBuilder</apiname></xref> interface that provides functions to accumlatively add attributes to a list. </p> <p><b>Service record handle</b> </p> <p>The attributes for a service are stored in a service record. A record is referred to through an ID, known as a service record handle, stored in a <xref href="GUID-9DDF886B-1556-30A2-A417-1919BA6D255A.dita"><apiname>TSdpServRecordHandle</apiname></xref>. </p> </section> <section><title>Typical Uses</title> <p>Start with the <xref href="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita">Service Records and Attributes</xref> guide. </p> <p>The following tutorials explain how to get started using the service discovery database. </p> <ul><li id="GUID-D4C358CB-BBFB-5E9E-A740-5A7D083EBA9D"><p> <xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">How to connect to the service discovery database</xref>  </p> </li> <li id="GUID-CECC7C78-8443-5DC1-B8EE-7DE1ED310764"><p> <xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">How to create and manipulate attributes</xref>  </p> </li> <li id="GUID-EBC35812-6794-5311-A34C-99FDDA0F734B"><p> <xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">How to register a service in the database</xref>  </p> </li> <li id="GUID-89330B93-857F-5E50-8ECC-E1877D81035E"><p> <xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">How to set an attribute in a service record</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E58FA02A-D721-42FC-941F-1D8E5BCD96BC_d0e53523_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E59A469E-A2B5-5DF0-BA7E-C50D4A38CCAA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E59A469E-A2B5-5DF0-BA7E-C50D4A38CCAA" xml:lang="en"><title>Plug-in Framework (ECom) Examples</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B" xml:lang="en"><title>Cleanup
+Support Overview</title><shortdesc>Provides idioms to handle program exceptions, and to clean up memory
+when exceptions occur</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-AD5DD150-BB36-4ABC-AF10-D47DEEBE6EED"><title>Architectural relationships</title> <p>Symbian platform's
+clean up strategy is closely tied to its general class types, particularly
+classes derived from <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref>.</p> </section>
+<section id="GUID-A839CBBC-864A-40E0-8BCF-50BB307A3D03"><title>Description</title> <p>The API has three key concepts: exception
+handling, cleanup stack, and general cleanup item. </p> <p><b>Exception
+handling</b> </p> <p>Symbian platform does not use standard C++ exceptions
+(<codeph>try</codeph>, <codeph>catch()</codeph> blocks), but supplies its
+own idioms. An exception is referred to as a <i>leave</i>.</p> <p>The <i>trap
+harness</i> defines a point in code that will be immediately jumped to if
+a leave occurs. The trap harness is set using the <xref href="GUID-3F2CDC74-2568-371C-9D8E-34A66A619226.dita"><apiname>TRAP</apiname></xref> and <xref href="GUID-57895C34-AD00-35E1-9BF8-478653056383.dita"><apiname>TRAPD</apiname></xref> macros.</p> <p>Leaves
+are raised through calling functions provided by the System Static Functions
+API <codeph>User</codeph> class, principally <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-ABF0FC5C-3334-3761-893D-D836B2EE0541"><apiname>User::Leave()</apiname></xref>.
+Many system functions can result in leaves. Leaves may also be raised in user
+code.</p> <p><b>Cleanup
+stack</b> </p> <p>If a leave occurs, any heap allocated resources, such as
+objects created through <codeph>new()</codeph>, referred to only through automatic
+pointer variables will be orphaned on the heap, causing a memory leak. To
+prevent such leaks, it is necessary for the program to record any such objects,
+so that, on the event of a leave, the system can automatically find and clean
+them up. The cleanup stack is the means by which this is done. </p> <p>The
+cleanup stack is provided by <xref href="GUID-0DD554D7-B9B1-3FD3-898F-4D855144FCEA.dita"><apiname>CleanupStack</apiname></xref>. </p> <p>GUI
+applications have a cleanup stack supplied to them by the application framework.
+Other applications must explicitly create a cleanup stack using <xref href="GUID-17AC7BAD-1C03-3729-BCC6-F5B28B32E99D.dita"><apiname>CTrapCleanup</apiname></xref>.</p> <p><b>General cleanup item</b> </p> <p>By default, the cleanup stack only handles <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref> -based
+classes, and untyped (<codeph>TAny*</codeph>) objects that can be cleaned
+up by a simple memory free call. The general cleanup item allows other types
+of object to put on the cleanup stack, by making the caller specify a function
+that is to be called to perform cleanup on the object.</p> <p>The general
+cleanup item interface is provided by <xref href="GUID-CD0A798E-7E42-3689-8E86-F5FD43C758FC.dita"><apiname>TCleanupItem</apiname></xref>.</p> <p>Template
+functions are provided as shortcuts to constructing a <xref href="GUID-CD0A798E-7E42-3689-8E86-F5FD43C758FC.dita"><apiname>TCleanupItem</apiname></xref> and
+pushing it onto the cleanup stack. These functions are <codeph>template &lt;class
+T&gt; void              CleanupDeletePushL(T*)</codeph>, <codeph>template &lt;class
+T&gt; void              CleanupClosePushL(T&amp;)</codeph>, and <codeph>template
+&lt;class T&gt; void              CleanupReleasePushL(T&amp;)</codeph>.</p> </section>
+<section id="GUID-F348A3AA-37A8-4489-89BD-26DF97F026E2"><title>See also</title> <p><xref href="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita">Basic
+Types Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System
+Static Functions Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E5B5C3CA-B256-5B29-AB90-590676444C85.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E5B5C3CA-B256-5B29-AB90-590676444C85" xml:lang="en"><title>How
+to start a periodic timer</title><shortdesc>Provides code snippets to show you how to start a periodic timer</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A periodic timer, <codeph>CPeriodic</codeph>, invokes a function at regular
+intervals. You must wrap the function to be called in a <codeph>TCallBack</codeph>. </p>
+<p>First, we provide a callback function for the timer to call. The callback
+function can be a static member, i.e. <codeph>TInt X::Foo(TAny *)</codeph> or
+global, i.e. <codeph>TInt Foo(TAny *)</codeph>. The <codeph>TAny*</codeph> can
+point to any object that we specify when we start the timer.</p>
+<p>It is awkward to deal with <codeph>TAny*</codeph>, and more convenient
+to write handler code from a non-static member function, so here we code a
+static function to invoke a non-static function <codeph>DoTick()</codeph> as
+follows:</p>
+<codeblock id="GUID-8D673BE4-1F28-58E0-868D-98B48DD91C60" xml:space="preserve">TInt CPeriodicRunner::Tick(TAny* aObject)
+    {
+    // cast, and call non-static function
+    ((CPeriodicRunner*)aObject)-&gt;DoTick();
+    return 1;
+    }
+</codeblock>
+<p>The next piece of code creates a <codeph>CPeriodic</codeph> and sets it
+off with one-second ticks. The callback is specified to call the static <codeph>Tick()</codeph> function,
+passing the <codeph>this</codeph> pointer (which we use in <codeph>Tick()</codeph> to
+call <codeph>DoTick()</codeph>).</p>
+<codeblock id="GUID-092F13DD-9158-5245-A1FE-101EFB305D15" xml:space="preserve">void CPeriodicRunner::StartTimer()
+    {
+    const TInt tickInterval=1000000;
+    iPeriodic=CPeriodic::NewL(0); // neutral priority
+    iPeriodic-&gt;StartInMicroSeconds(tickInterval,tickInterval,TCallBack(Tick, this));
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E5CDDA05-CD86-5C44-B9DA-3249D9C14396.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E5CDDA05-CD86-5C44-B9DA-3249D9C14396" xml:lang="en"><title>Client-Side
+Buffer</title><shortdesc>The Window Server client-side buffer enables drawing functions
+to be buffered and executed in sequence. This saves many client-server context
+switches and makes the system fast and responsive. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Window Server handles many application function calls
+as follows: </p>
+<ol id="GUID-F51202BB-1519-5B86-BAAA-6B07D7D33DD2">
+<li id="GUID-6A0CC5DF-EB2B-5EF0-BA71-269A5472C0E7"><p>The client packages
+the information to send to the server. </p> </li>
+<li id="GUID-D3D22D1E-4C7D-5B9A-8F73-1730F9CD6979"><p>A context switch to
+the server. </p> </li>
+<li id="GUID-13D28353-8E11-5445-91B6-5D31550C0C9D"><p>Processing in the Window
+Server—with possible inter-thread communication to and from the client. </p> </li>
+<li id="GUID-7B29EB4D-80D6-53DB-AC13-9D3618FB3AE2"><p>A context switch back
+to the client. </p> </li>
+</ol>
+<p>This guarantees that operations are performed in the right sequence and
+that operations have been performed when control returns to the application
+program. </p>
+<p>However, for drawing and many other function calls, this approach is too
+slow, and is not strictly necessary. </p>
+<ul>
+<li id="GUID-CDEC7D13-E43B-529B-88DD-C7542BE16AA0"><p>The overheads of the
+client/server communication swamp the time needed for drawing and cause severe
+system degradation. </p> </li>
+<li id="GUID-55A4C852-B5B0-55FE-9E62-38C21613BFFC"><p>It is unnecessary because
+the client program does not need a result from drawing functions. This is
+also true for some non-drawing functions. </p> </li>
+</ul>
+<p>Because of this, drawing functions, and other functions that do not need
+a synchronous response, are buffered by the client interface in a command
+buffer. When necessary, this buffer is flushed by a call to the Window Server,
+which executes all the drawing functions in sequence. Thus, two context switches
+are sufficient for an entire buffer full of drawing requests. </p>
+<p>The Window Server buffer is flushed when: </p>
+<ul>
+<li id="GUID-54B10BF7-7007-56A6-9C88-CF9C22549FF1"><p>It is full. </p> </li>
+<li id="GUID-7EE4C889-BEBB-54FA-8FA2-3A5DE1F2B24C"><p>A function requiring
+a result is called. </p> </li>
+<li id="GUID-0F9FA1C9-23AD-5C90-B670-A3D2D1653C47"><p>One of the event-request
+functions is called (<xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-0F961C4D-A731-3AE0-8425-BB304CCF2736"><apiname>RWsSession::EventReady()</apiname></xref>, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-DADAFFD6-4B63-35EE-8F50-F397C119CC27"><apiname>RWsSession::RedrawReady()</apiname></xref>, <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-97E7096D-930B-3CA5-9645-7BD60D0FADDD"><apiname>RWsSession::PriorityKeyReady()</apiname></xref>). </p> </li>
+<li id="GUID-927412D4-1700-59BE-B0BB-B75366D28A36"><p>Certain high-level functions
+are called by the client, such as <xref href="GUID-0AEE5955-C530-35F1-A904-69183331B294.dita#GUID-0AEE5955-C530-35F1-A904-69183331B294/GUID-76018E73-B3D8-33B7-970F-0B6300F7EFB2"><apiname>CWindowGc::DrawPolyLine()</apiname></xref>,
+which involve mass data transfer which would overflow the buffer, and which
+may fail. </p> </li>
+<li id="GUID-35BFA73D-CE16-5B49-9C89-840F7A7222A3"><p>An explicit <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-B83C6F44-1A3E-3959-910C-CBBF66C4A3D4"><apiname>RWsSession::Flush()</apiname></xref> call
+is made. </p> </li>
+<li id="GUID-0B9C1E0F-F6D5-5999-A170-263738C39C7D"><p>After any function call
+if the <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita#GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9/GUID-0F337487-1104-3F97-800A-3393C9EDD116"><apiname>RWsSession::SetAutoFlush()</apiname></xref> auto flushing function
+is set on. </p> </li>
+</ul>
+<p>It is desirable that the buffer is flushed when the application has finished
+a unit of drawing. This is usually done as a natural consequence of calling
+the function to wait for the next event from the Window Server. This covers
+all cases where drawing is initiated in response to a Window Server event.
+There are a few cases where drawing is initiated in response to other events.
+In these cases, an explicit <codeph>Flush()</codeph> call must be made. </p>
+<p>The use of a buffer has two main impacts on drawing logic: </p>
+<ul>
+<li id="GUID-29455CA7-A061-5279-8FD0-DCCBB7E4CB76"><p>While debugging, client
+requests do not immediately result in screen updates. This can make debugging
+confusing at times. </p> </li>
+<li id="GUID-59002F65-4334-5C7B-A071-DB9D8A723B66"><p>If this is a problem,
+the application program can turn on auto-flushing, which causes flushing after
+each function call. The Uikon UI provides a hot-key, CTRL+ALT+SHIFT+F, to
+turn on auto-flushing. (The resulting degradation in performance is a convincing
+demonstration of the need for the buffer). </p> </li>
+<li id="GUID-7927A766-7C23-514D-97EA-CE420FCCD489"><p>The GDI is so fast that
+most drawing activity that takes place within the context of a single flush
+appears as an almost instantaneous update. If, however, a drawing sequence
+is interrupted by a flush, there may be a perceptible delay. In some circumstances,
+this may result in flicker. </p> </li>
+<li id="GUID-148AF35C-3B8A-5DC0-BC7E-0D6503877CE3"><p>The aesthetics of a
+program can be badly affected by flicker during drawing. Applications should
+use flicker-free functions (such as <codeph>DrawText()</codeph> with a rectangle),
+and try to minimize flushing during critical redraw sequences. If completely
+flicker-free drawing is impossible, short drawing sequences that are flush-free
+may sometimes be an acceptable alternative. </p> </li>
+</ul>
+<p>The Window Server manages the buffer intelligently so as to minimize flushing.
+The opcodes stored in the buffer are short, and repeated use of the same graphics
+context is indicated by a single bit rather than repeated reference to the
+graphics context. </p>
+<p>Applications may modify the size, or the maximum size of the buffer to
+tune performance or to accommodate long messages. A larger buffer may reduce
+flicker by collecting more drawing commands. A smaller buffer uses less memory.
+Setting a maximum size allows the Window Server to perform its own optimizations. </p>
+<p>If a message is too big for the buffer, a panic (#5 - <codeph>EW32PanicDataExceedsBufferLength</codeph>)
+occurs. optimizations </p>
+</conbody><related-links>
+<link href="GUID-1F9A47CE-7F4C-52BD-8823-25D5D1BEF42F.dita"><linktext>Window Server
+Client-Side Library Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e48187_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2" xml:lang="en"><title>Life
+cycle of active objects</title><shortdesc>This document describes the life cycle of an active objet.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The diagram illustrates the life-cycle of an active object. </p>
+<fig id="GUID-BF465AB5-B007-5F44-9AF7-DA0963AE3BDE">
+<title>Flow diagram showing the life cycle of an active object</title>
+<image href="GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e208547_href.png" placement="inline"/>
+</fig>
+<p>Procedural flow follows the black arrows; control is transferred along
+the blue links, as follows:</p>
+<ul>
+<li id="GUID-3E3558A3-8C64-515B-A024-81586B472985"><p>the main program creates
+and installs an active scheduler</p> </li>
+<li id="GUID-15AE6C3A-5CF7-5711-951A-6FFC8CB6ED27"><p>active objects are created;
+their constructors ensure that every active object is added to the active
+scheduler (which keeps a reference to the object in its queue)</p> </li>
+<li id="GUID-9428DF85-02A3-56C2-A145-604A0356A166"><p>an active object is
+called to issue an initial request. This sets the object's <codeph>iActive</codeph> true
+(indicating a request was issued but not yet completed) and schedules the
+underlying service, which sets the object's <codeph>iStatus</codeph> to <codeph>KRequestPending</codeph>.
+(If this step is omitted, no service will be requested, so no handler will
+be invoked and hence the active scheduler will wait forever in its loop, never
+calling any object's <codeph>RunL()</codeph>)</p> </li>
+<li id="GUID-48E77554-3EF4-5313-969A-12D3426DA502"><p>the active scheduler
+is started. This now takes over; control is only returned to the main program
+for termination when the active scheduler is stopped</p> </li>
+<li id="GUID-E697E0CF-65F0-5AFD-8201-ADC6A791D98C"><p>when a requested service
+completes, it's handler terminates by signaling service completion; this alters
+the associated active object's <codeph>iStatus</codeph> </p> </li>
+<li id="GUID-CDD9242D-9540-5DC0-A948-8914F2AEF905"><p>when any service handler
+signals completion, the active scheduler tests each object in its queues for
+one with <codeph>iActive</codeph> true (request not completed) and <codeph>iStatus</codeph> not
+set to <codeph>KRequestPending</codeph> (i.e. the request has been handled) </p> </li>
+<li id="GUID-98980800-03DA-5623-9305-94609FBE9788"><p>if the active scheduler
+finds an object with the above conditions, it sets <codeph>iActive</codeph> false
+and calls the object's <codeph>RunL()</codeph> </p> </li>
+<li id="GUID-CFC4609C-3FED-538E-9555-1A90114876A3"><p>the <codeph>RunL()</codeph> may
+reschedule the request (so that the handler is again invoked when the requested
+service completes and the cycle continues.) or may stop the active scheduler,
+returning control to the main program for termination.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E632CCD2-EE53-5546-9603-E9A01A65614A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E632CCD2-EE53-5546-9603-E9A01A65614A"><title>mkdir</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>mkdir &lt;directory name&gt;</userinput> </p> <p>Creates a directory (or directories), if it does not exist. For more information about using the <codeph>mkdir</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://zsh.dotsrc.org/Doc/Release/zsh_21.html</xref> by specifying <codeph>mkdir</codeph> as the search keyword. </p> <p> <b>Note:</b> The <codeph>-m</codeph> option is <b>not</b> supported by the Symbian version of the <codeph>mkdir</codeph> command. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E634E701-0DA2-572E-852B-8A1F88F05E5A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E634E701-0DA2-572E-852B-8A1F88F05E5A" xml:lang="en"><title>Notifier
+framework</title><shortdesc>This document describes the notifier framework.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-CED154FC-CFBE-5E07-843B-D409660C5816"><title>The framework</title> <p>The
+text window server notifier framework is a system that loads plug-in DLLs
+from <filepath>\sys\bin\tnotifiers</filepath>. </p> <p>It is used only in
+test ROMs and is never used in production code. For production code, use the
+Extended Notifier Framework. The architecture of both frameworks is identical;
+however, the interface classes have different names. </p> <p>These DLLs are
+expected to export a single factory function at ordinal #1 that returns an
+array of notifiers. A special notifier target type is supported by makmake.
+The second Uid for notifiers should be 0x10005522. </p> <p>The behaviour of
+notifiers is supplied by providing an implementation of the <xref href="GUID-E2C0E005-4138-3C2A-839C-ADB9C935F64B.dita"><apiname>MNotifierBase</apiname></xref> interface.
+A notifier is associated with a channel and a priority. Priority is used to
+determine the order of activation if more than one notifier is activated at
+any time. Priority only affects notifiers on the same channel (e.g. a screen
+or LED). This means that two notifiers can be active at the same time provided
+that they are on different channels. </p> <p>The channel and priority used
+by all the notifiers in the system needs to be considered carefully to avoid
+them interfering with each other in unexpected ways. The <xref href="GUID-E2C0E005-4138-3C2A-839C-ADB9C935F64B.dita"><apiname>MNotifierBase</apiname></xref> derived
+class also needs to be implemented correctly. Text window server notifiers
+run in the window server thread and are accessed on the client side via <xref href="GUID-A6B66713-FECA-3BE7-BB81-1AE5551AD83D.dita"><apiname>RNotifier</apiname></xref>.
+Note that if a notifier panics it will lead to a device reset. </p> </section>
+<section id="GUID-DA49D735-4C8E-5EFD-A170-5E5A23D30884"><title>The factory
+function</title> <p>The factory function at ordinal #1 is expected to return
+an array of notifiers. The following is a typical implementation: </p> <codeblock id="GUID-389A6F11-4700-5423-B7CA-B8F5F0E4391D" xml:space="preserve">EXPORT_C CArrayPtr&lt;MNotifierBase&gt;* NotifierArray()
+    {
+    CArrayPtrFlat&lt;MNotifierBase&gt;* notifiers=new CArrayPtrFlat&lt;MNotifierBase&gt;(5);
+       if (notifiers)
+        {
+        TRAPD(err, CreateNotifiersL(notifiers));
+        if(err)
+            {
+            TInt count = notifiers-&gt;Count();
+            while(count--)
+                {
+                (*notifiers)[count]-&gt;Release();
+                }
+            delete notifiers;
+            notifiers = NULL;
+            }
+        }
+    return(notifiers);
+    }
+</codeblock> <p>Note that ownership of the notifier array or its contents
+is not transferred to the framework until this function returns. To avoid
+memory leaks, all acquired resources must be freed if anything goes wrong
+part of the way through its processing. </p> <p>Calling <codeph>Release()</codeph> on
+a notifier should cause that notifier to free all of its resources, and as
+a minimum should call <codeph>delete           this;</codeph>. See <xref href="GUID-E2C0E005-4138-3C2A-839C-ADB9C935F64B.dita#GUID-E2C0E005-4138-3C2A-839C-ADB9C935F64B/GUID-ADFAC896-1888-3BFF-9335-1CF83B9726A4"><apiname>MNotifierBase::Release()</apiname></xref>. </p> <p>Returning
+a <codeph>Null</codeph> value from this function causes the framework to leave
+with <xref href="GUID-64F6761A-4716-37C3-8984-FF18FC8B7B7D.dita"><apiname>KErrNoMemory</apiname></xref>. </p> <p>The <codeph>CreateNotifiersL()</codeph> function
+should be implemented as follows: </p> <codeblock id="GUID-3CC86675-ECC5-59E4-8CD3-86AD0BAE0B90" xml:space="preserve">LOCAL_C void CreateNotifiersL(CArrayPtrFlat&lt;MNotifierBase&gt;* aNotifiers)
+    {
+    MNotifierBase* notifier;
+    notifier = CMyNotifierA::NewL();
+    CleanupStack::PushL(notifier);
+       aNotifiers-&gt;AppendL(notifier);
+       CleanupStack::Pop(notifier);
+    ... 
+    ...
+    // typically, repeat this procedure for as
+    // many notifiers as are implemented
+    // in the plug-in DLL.
+    }</codeblock> <p>Note the use of the standard Symbian platform technique
+of using the cleanup stack to hold pointers to allocated objects for as long
+as these objects have no owner; this prevents memory leaks. For this reason,
+avoid using a technique such as <codeph>aNotifiers-&gt;AppendL(CMyNotifierA::NewL());</codeph>,
+which, although shorter, will result in a memory leak if the <codeph>AppendL()</codeph> operation
+fails. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8" xml:lang="en"><title>Asynchronous
+Services Example Codes</title><shortdesc>Explains how to use asynchronous requests.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-3CEEC547-CB45-5BC4-85BE-C2DF97663BE9"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-9D95DEED-4E6A-5139-9188-DD7FA0A4B906">SingleRequest: asynchronous programming without active objects</xref>  </p> </li>
+<li id="GUID-0A475759-3571-5F7A-986C-45F93257C2CE"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-D9B89770-81F8-52ED-848E-F79A92858C37">WaitLoop: asynchronous programming without active objects</xref>  </p> </li>
+<li id="GUID-442DA981-732E-5F21-8140-A7E998099B25"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-F6C2B633-E744-5B40-819D-6615406A9664">RealLifeWaitLoop: asynchronous programming without active objects</xref>  </p> </li>
+<li id="GUID-0CC6DC14-4CE8-500E-A9BE-BF147E5BC130"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-D3EA20C0-AF5C-5AFE-8014-48CB92851463">RunComplete: asynchronous programming with active objects</xref>  </p> </li>
+<li id="GUID-5B75E3E3-4AD4-51FD-828D-0A81BF0AE087"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-802DB10F-150B-5A76-BFC8-A7E8EB4A68D6">AcceptInput1-2: asynchronous programming with active objects</xref>  </p> </li>
+<li id="GUID-2E15F495-27E3-57F6-BB79-E392237F7E8D"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-1BEA3D45-21A2-54AB-ABBD-EF23716FE6B5">AcceptPrintInput: asynchronous programming with active objects</xref>  </p> </li>
+<li id="GUID-A16AA99F-366E-5EED-85CF-7372F177EBFF"><p><xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-AD4D25CA-B0BF-54BD-8029-DD495AB56C5E">Fibonacci1-3: asynchronous programming with active objects</xref>. </p> </li>
+</ul>
+<section id="GUID-9D95DEED-4E6A-5139-9188-DD7FA0A4B906"><title>SingleRequest:
+asynchronous programming without active objects</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-5649e475-b630-4411-ae06-99a03f575dbd.zip" scope="external"> SingleRequest.zip </xref></p><p>Click on the following link
+to download additional file: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-5649e475-b630-4411-ae06-99a03f575dbd.html" scope="peer"> browse SingleRequest </xref> to view the example code.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view the additional file.</p> <p><b>Description</b> </p> <p>This
+example shows how to issue and wait for a single request. </p> <p>The example
+shows the general principles involved in asynchronous programming. It uses
+a simple wait loop and shows how the completion of asynchronous events are
+handled <i>without</i> active objects. </p> <p>This example does not use active
+objects <i>deliberately</i>. </p><p><b>Class summary</b></p><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref></p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-D9B89770-81F8-52ED-848E-F79A92858C37"><title>WaitLoop: asynchronous
+programming without active objects</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a1802d10-4226-43b8-a616-093ecb286eff.zip" scope="external"> Waitloop.zip </xref></p><p>Click on the following link to
+download additional file: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a1802d10-4226-43b8-a616-093ecb286eff.html" scope="peer"> browse Waitloop </xref> to view the example code.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view the additional file.</p> <p><b>Description</b> </p> <p>This
+example shows how a wait loop can be used to identify and handle a completed
+request. </p> <p>It shows the general principles involved in asynchronous
+programming. It uses a simple wait loop and shows how the completion of asynchronous
+events are handled <i>without</i> active objects. </p> <p>This example does
+not use active objects <i>deliberately</i>. </p><p><b>Class summary</b></p><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref></p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-F6C2B633-E744-5B40-819D-6615406A9664"><title>RealLifeWaitLoop:
+asynchronous programming without active objects</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4d03bc9b-a832-427b-9e78-b593d3618267.zip" scope="external"> RealLifeWaitLoop.zip </xref></p><p>Click on the following
+link to download additional files:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4d03bc9b-a832-427b-9e78-b593d3618267.html" scope="peer"> browse RealLifeWaitLoop </xref> to view example code.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view the additional file.</p> <p><b>Description</b> </p> <p>As
+with the <xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-D9B89770-81F8-52ED-848E-F79A92858C37">WaitLoop</xref> example,
+this example shows how a wait loop can be used to identify and handle a completed
+request. However, this example shows how the wait loop can deal with multiple
+asynchronous service providers. </p> <p>The example shows the general principles
+involved in asynchronous programming; it uses a simple wait loop and shows
+how the completion of asynchronous events are handled <i>without</i> active
+objects. </p> <p>This example <i>deliberately</i> does not use active objects. </p><p><b>Class
+summary</b></p><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref></p> <p><b>Security issues</b> </p> <p>The
+example requires no specific capabilities in order to run - and does not demonstrate
+any security issues. </p> </section>
+<section id="GUID-D3EA20C0-AF5C-5AFE-8014-48CB92851463"><title>RunComplete:
+asynchronous programming with active objects</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-0820a8bc-295c-45fb-875b-33eb81b907b8.zip" scope="external"> RunComplete.zip </xref></p><p>Click on the following link
+to download additional files:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-0820a8bc-295c-45fb-875b-33eb81b907b8.html" scope="peer"> browse RunComplete </xref> to view the example code.</p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view the additional file.</p> <p><b>Description</b> </p> <p>The
+example shows how active objects and an active scheduler can be used to handle
+asynchronous events. Compare this with the following examples; <xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-9D95DEED-4E6A-5139-9188-DD7FA0A4B906">SingleRequest</xref>, <xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-D9B89770-81F8-52ED-848E-F79A92858C37">WaitLoop</xref> and <xref href="GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8.dita#GUID-E63545EC-172E-53F3-B0B3-EA5150FD92D8/GUID-F6C2B633-E744-5B40-819D-6615406A9664">RealLifeWaitLoop</xref>. </p> <p>It
+demonstrates a single <codeph>CMessageTimer</codeph> active object which runs
+until completion. </p><p><b>Class summary</b></p><p> <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus </apiname></xref>  <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler </apiname></xref>  <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive </apiname></xref> <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname> CTimer</apiname></xref>  </p> <p><b>Security issues</b> </p> <p>The example
+requires no specific capabilities in order to run - and does not demonstrate
+any security issues. </p> </section>
+<section id="GUID-802DB10F-150B-5A76-BFC8-A7E8EB4A68D6"><title>AcceptInput1-2:
+asynchronous programming with active objects</title> <p><b>Download</b> </p> <p>Click
+on the following links to download the examples:</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-16b394b8-da07-4325-aaab-2af5d07b881f.zip" scope="external"> AcceptInput1.zip</xref> </p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7fbe04f9-1bf5-4957-a2f4-94992d0d2cc4.zip" scope="external"> AcceptInput2.zip</xref></p><p>Click on the following link
+to download additional files:<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external"> CommonFramework.zip </xref></p><p>Click on the following
+links to view the examples:</p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-16b394b8-da07-4325-aaab-2af5d07b881f.html" scope="peer"> browse AcceptInput1 </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7fbe04f9-1bf5-4957-a2f4-94992d0d2cc4.html" scope="peer">browse AcceptInput2 </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer"> browse CommonFramework </xref> to view the additional file.</p> <p><b>Description</b> </p> <p>These
+examples show how active objects and an active scheduler can be used to handle
+asynchronous events. </p> <p>They demonstrate a single <codeph>CKeyMessengerProcessor</codeph> active
+object (derived from class <codeph>CActiveConsole</codeph>), which accepts
+input from keyboard, but does not print it. This object contains a <codeph>CMessageTimer</codeph> object
+which it activates if the user inputs the character "m" and cancelled if the
+user inputs "c". </p><p><b>Class summary</b></p><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus </apiname></xref>  <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler </apiname></xref> <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive </apiname></xref> <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname> CTimer</apiname></xref>  </p> <p><b>Security issues</b> </p> <p>The example
+requires no specific capabilities in order to run - and does not demonstrate
+any security issues. </p> </section>
+<section id="GUID-1BEA3D45-21A2-54AB-ABBD-EF23716FE6B5"><title>AcceptPrintInput:
+asynchronous programming with active objects</title> <p><b>Download</b> </p> <p>Click
+on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-285678f7-e35c-45ae-8074-8246fb6b1e90.zip" scope="external">AcceptPrintInput.zip</xref></p><p>Click on the following
+link to download additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref></p><p>View the source code<xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-285678f7-e35c-45ae-8074-8246fb6b1e90.html" scope="peer"> browse AcceptPrintInput</xref>. View the additional file: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse CommonFramework</xref>.</p> <p><b>Description</b> </p> <p>This
+example demonstrates how to accept and print keyboard input to a console using
+active objects. </p> <p>The example implements a class called <codeph>CWriteKeyProcessor</codeph> which
+is an active object that requests and handles keyboard input in its <codeph>ProcessKeyPress()</codeph> method.
+An alphabetic or space character is printed as a character, anything else
+is printed as an integer. Pressing the escape key terminates the application. </p><p><b>Class
+summary</b></p><p> <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname>CActiveScheduler </apiname></xref><xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive </apiname></xref> <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref>  </p> <p><b>Security
+issues</b> </p> <p>The example requires no specific capabilities in order
+to run - and does not demonstrate any security issues. </p> </section>
+<section id="GUID-AD4D25CA-B0BF-54BD-8029-DD495AB56C5E"><title>Fibonacci1-3:
+asynchronous programming with active objects</title> <p><b>Download</b> </p> <p>Click
+on the following links to download the examples: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a87ca9bc-77dd-43b0-8e38-d16a454e2c6e.zip" scope="external"> Fibonacii1.zip </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-1f2ee4ff-787b-4240-b912-aa02651f823c.zip" scope="external">Fibonacii2.zip </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a0979da8-ff45-4aa0-b0e0-5cc518ec328c.zip" scope="external">Fibonacii3.zip </xref></p><p>Click <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a87ca9bc-77dd-43b0-8e38-d16a454e2c6e.html" scope="peer"> browse  Fibonacii1 </xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-1f2ee4ff-787b-4240-b912-aa02651f823c.html" scope="peer">browse Fibonacii2</xref></p><p><xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a0979da8-ff45-4aa0-b0e0-5cc518ec328c.html" scope="peer">browse Fibonacii3</xref></p> <p><b>Description</b> </p> <p>These
+examples show how active objects and an active scheduler can be used to handle
+asynchronous events and long-running services to maintain system responsiveness. </p><p><b>Class
+summary</b></p><p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus </apiname></xref> <xref href="GUID-B4C76104-EA1B-3FC3-A31E-86A976598171.dita"><apiname> CActiveScheduler </apiname></xref> <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive </apiname></xref> <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname> CTimer</apiname></xref>  </p> <p><b>Security issues</b> </p> <p>The example requires no specific capabilities
+in order to run - and does not demonstrate any security issues. </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e64030_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F"><title>baseaddress</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>baseaddress</codeph>  <varname>hex-constant</varname>  </p> <p>Use the <codeph>baseaddress</codeph> statement to specify the address to which a DLL will be built and, if possible, loaded. It only applies to WINSCW/WINS builds. </p> <p>Use it to give each DLL a different base address, so that the Windows loader does not have to do any relocation while loading Symbian platform and its DLLs. This considerably speeds up the initialisation of Symbian platform under WINSCW/WINS. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205"><title>Window Hierarchy</title><shortdesc>In a running application, all window instances are arranged in a hierarchy, in which each window has a parent. The Window Server has a window not owned by the client, called the "root" window which is the parent of all the group windows. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target audience</b>: Application developers. </p> <section><title>Parent windows</title> <p>The following diagram shows the relationship between parent and child windows and window groups at run-time. Arrows indicate "is a parent of". </p> <fig id="GUID-536B9B54-0BEB-5A9F-9084-F2F3B293B6E6"><title>
+             Window hierarchy 
+          </title> <image href="GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e165808_href.png" placement="inline"/></fig> <p>The relationships between parent and child windows have the following properties: </p> <ul><li id="GUID-FAB0D905-CC6F-5D5A-BACE-7815919514D8"><p>A window's parent is specified when the window is created. </p> </li> <li id="GUID-A77DC123-B034-59A1-94E8-E0D181DD58FB"><p>The Window Server imposes no limit to the number of children a window can have. The number of children is limited only by the resources of the system. </p> </li> <li id="GUID-514DFF80-CF3D-59B8-A327-5246451759CD"><p>When a parent window is destroyed, all its children are removed from the screen. However, the objects associated with them are not destroyed until the window or the client that owns them is destroyed. </p> </li> <li id="GUID-F0A80D6C-6746-5384-AB13-659BC59BB702"><p>A window's parent defines the region in which the window can be displayed. A child cannot be displayed outside its parent, and is clipped to the parent’s visible region. If a child window is moved so that part of it extends beyond its parent, that part of the child window will not be visible. </p> </li> <li id="GUID-BA556D13-6A46-5AC8-8FE3-08C9F15061FF"><p>Note that if a window's parent is a window group, the window can be displayed anywhere on the screen, because window groups do not have a size. </p> </li> </ul> </section> <section><title>Sibling windows</title> <p>If a window has multiple children, these are known as <keyword>siblings</keyword>. Sibling windows are maintained in a list, and the parent window owns a link to the first window in the sibling list. The order of the windows in the sibling list represents the windows’ <keyword>ordinal position</keyword>. This determines which windows are displayed on top of which, if they overlap. </p> </section> </conbody><related-links><link href="GUID-99AE1D62-571A-5A63-B472-C0FBC0861F52.dita"><linktext>Window Types</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e53450_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E64C06D7-B138-5BCC-A814-3F9E2C517404.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E64C06D7-B138-5BCC-A814-3F9E2C517404" xml:lang="en"><title>Character Encoding and Conversion Framework Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Charconv Framework component provides APIs and built-in converters to convert text between Unicode and other character encodings.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5" xml:lang="en"><title>Inter-thread
+data transfer</title><shortdesc>Describes how data is transferred between threads.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The client-server message protocol supports the passing of a 32-bit request
+code and four 32-bit parameters from client to server and returning a 32-bit
+result from the server to the client. The parameters may be interpreted as
+plain integers or pointers; pointer types may be untyped (<codeph>TAny*</codeph>)
+or descriptor types (<codeph>TDesC8*</codeph> and <codeph>TDesC16*</codeph>)
+that the server can use to access the client’s address space. The request
+code, parameters, and the parameter types are packaged into a <xref href="GUID-4AD02F14-1142-372F-9D11-224595932034.dita"><apiname>TIpcArgs</apiname></xref> object.
+The parameter types are stored in the kernel side message object so that the
+kernel can check that subsequent operations requested by the server using
+the message are: </p>
+<ul>
+<li id="GUID-1F925301-81D0-5F84-ABEE-BB4DB576DBC1"><p>correct; for example,
+checking that the source and target descriptors are either both 8-bit or both
+16-bit descriptors </p> </li>
+<li id="GUID-EE7CCC5F-0013-55EA-B473-763785F5CD90"><p>permitted by the client;
+for example, checking that when the server tries to write to a client descriptor,
+that the client descriptor is <xref href="GUID-49D4E917-57EA-39AE-8941-144AA8AC2584.dita"><apiname>TDes</apiname></xref> -derived (modifiable),
+rather than <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref> -derived (non-modifiable) </p> </li>
+</ul>
+<p><note>NOTE:</note> although you can pass untyped pointers, it is not possible
+to directly access memory in another thread’s address space using an arbitrary
+pointer as this is inherently insecure. The ability to pass a pointer between
+a client and server is therefore only of value when the client and server
+are within the same process. In this case, the use of a pointer is obviously
+not limited to pointing to a descriptor, but may also be used to point to
+an arbitrary data structure containing information to be shared between the
+client and server. </p>
+<p>It is important to note that a server may not run until some arbitrary
+time after a client issues a request. Any descriptor containing data to be
+passed to the server must be guaranteed to exist until the request completes.
+For this reason, any such descriptor must <i>not</i> live on the program stack.
+Typically, such a descriptor would be a component of an object which is allocated
+on the heap. </p>
+<p>The following diagram illustrates the general idea. In this case, there
+are three parameters, one of which is an integer, and the other two being
+pointers to descriptors. </p>
+<fig id="GUID-C3369B01-2A0D-5AB2-973B-386FDBBB6B86">
+<image href="GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e212448_href.png" placement="inline"/>
+<p>Inter-thread data transfer</p>
+</fig>
+<section id="GUID-EE636E39-A171-484D-AAF4-7996D04C8EEC"><title>See also</title> <p> <xref href="GUID-79BAF19D-F003-5468-9C01-6E918B06C36D.dita">Descriptor
+concepts</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF"><title>Bluetooth Collection Overview</title><shortdesc>The Bluetooth collection contains the SDP, GAVDP and notifier support components. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-8DCCC4AF-9226-5CE3-B357-8577C2B7E920"><title>Purpose</title> <p>The Bluetooth Collection contains the SDP, GAVDP and notifier support components. </p> </section> <section id="GUID-C411D319-BDC3-5349-AD14-03184BF96195"><title>Architecture</title> <fig id="GUID-28512480-0D8C-5FBE-B6F6-9AE5605AC932"><image href="GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e367220_href.png" placement="inline"/></fig> </section> <section id="GUID-BD745D05-764F-57EE-817B-228CF6EDEFC5"><title>Components</title> <p>The Bluetooth collection contains the following components: </p> <ul><li id="GUID-6C4D5017-F754-5FD5-B4D1-E712DBE127F9"><p> <b>SDP</b>  </p> <p>Bluetooth Service Discovery Protocol (SDP) enables a device to find out what services are available on another device. For example, when connecting a mobile phone to a bluetooth headset, SDP can find out which Bluetooth profiles the headset supports. The SDP component enables devices to register services to the SDP database and to query the database for available services. The SDP Agent and the SDP Database provide functionality for the SDP component. </p> </li> <li id="GUID-33A8BCE8-D453-5997-BB66-E0EF9E9E15BD"><p> <b>GAVDP</b>  </p> <p>Generic Audio Video Distribution Profile (GAVDP) enables audio or video streaming. </p> </li> <li id="GUID-F3FA41AD-8738-584C-B624-573C5862DE24"><p> <b>Bluetooth Notifiers Support</b>  </p> <p>The Bluetooth Notifiers Support component enables you to create dialogs for interacting with device users about Bluetooth interactions. You can offer Bluetooth dialogs for several purposes, but the main purpose is to provide security for Bluetooth interactions. </p> </li> </ul> </section> <section><title>Using the Bluetooth collection</title> <p>The Bluetooth collection has the following uses: </p> <ul><li id="GUID-31D55218-8C3B-593A-AE91-C3FB8BCA016C"><p>using <xref href="GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita">SDP</xref> to find out what services are available on another device </p> </li> <li id="GUID-F591458E-5D5B-5D3F-980E-89C5986B9DCE"><p>Using <xref href="GUID-5EF234AA-E4A4-5C79-962F-823A4DB29D05.dita">GAVDP</xref> to enable audio or video streaming </p> </li> <li id="GUID-917BB008-04E7-58B6-A3B1-ED2E102B4251"><p>using the <xref href="GUID-EA15E87C-6A24-50B1-9FAC-9ACE8911ABD5.dita">Bluetooth Notifiers Support</xref> to create dialogs for interacting with device users about Bluetooth interactions. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E65D91AE-482F-5592-B83C-0F29126C2EFA"><title>Using Signals to Handle Exceptions </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Signals provide an alternative method (to checking return values) of handling exceptions or failures. The following example code demonstrates how you can check the return value for a failure and also how you can register a handler for handling the failure asynchronously: </p> <codeblock id="GUID-49B4A39A-34F5-54D1-AD97-5AD50EFD9786" xml:space="preserve">#include &lt;signal.h&gt;
+#include &lt;stdio.h&gt;
+int func()
+    {
+    int success = 1;
+    // function logic
+    // success == 1  - Indicates that the function logic succeeded
+    // success == 0  - Indicates that the function logic failed
+    if(success)
+        return 0;
+    else
+        {
+        raise(SIGUSR1);
+        return -1;
+        }
+    }
+void sighandler(int signum)
+    {
+    if(signum == SIGUSR1)
+        // 'signal' method for checking failure
+        printf(“Error: An error occured in func().”);
+    else
+        printf(“Error: Unknown signal”);
+    }
+int main(void)
+    {
+    int retval = 0;
+    // When SIGUSR1 arrives, invoke sighandler()
+    signal(SIGUSR1,sighandler);
+    retval = func();
+    if(retval == -1)
+        // The return value method used for checking failure
+        printf("Error: An error occured in func().");  
+    }</codeblock> </conbody><related-links><link href="GUID-66C1493D-5B85-558A-9A39-454E6EBA307B.dita"><linktext>Signal Emulation on Symbian
+                Platform</linktext> </link> <link href="GUID-186B9876-2A08-5F23-BB49-49EC34C51507.dita"><linktext>Using Signals to Terminate Processes</linktext> </link> <link href="GUID-6CF8A41B-C2DD-5D57-A71D-6405CE08A06B.dita"><linktext>Using Signals to Handle Asynchronous
+                Events</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3"><title> Enhanced Features for Encoder and Decoder Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document gives you more information about the enhanced features for the encoder and the decoder during the bitmap transformation. </p> <section><title>Purpose</title> <p>The purpose of the enhanced features for encoder and decoder is to set various transformation operations during encoding and decoding, which gives faster and more resource friendly output. </p> <p><b>Required Background</b> </p> <p>The enhanced features for encoder and decoder are provided through Imaging Frameworks and Imaging plugins. </p> <p><b>Introduction</b> </p> <p>The enhanced features of the decoder are currently supported by the Symbian JPEG codec and PNG codec. The transformation features during the decoding are as follows: </p> <ul><li id="GUID-7FB92047-2217-580B-B201-EFCC9CA627B8"><p> <b>Clipping : </b>  </p> <p>A rectangular region of an image is chosen and it is clipped for decoding. The decoded output is either a native bitmap (<xref href="GUID-683A1D42-2764-3EB7-BD19-9E12559199AB.dita"><apiname>CFbsBitmap</apiname></xref>) or a pixel buffer (e.g YUV 4:2:2 frames). </p> </li> <li id="GUID-1C14DD15-3EE9-53F7-946B-B48FAA7C23CB"><p> <b> Rotation / Mirroring : </b>  </p> <p>The functionality in rotation are 90º increments, mirroring over the horizontal axis, mirroring over the vertical axis, and combination of these features. </p> </li> <li id="GUID-6E856862-0EE7-59EA-A354-CEA4C2C840F4"><p> <b>Scaling : </b>  </p> <p>In scaling only downscaling is supported during the decode operation. At present the supported scaling coefficients for an image are ½, ¼ or ⅛ of the original image size. </p> </li> </ul> <p>In transformation of an image during decode you can choose more than one operation. For example you can choose clipping and scaling, or clipping and rotation, or all the three combinations of clipping, scaling and rotation. </p> <p> <b>Note:-</b> When you want to clip and scale an image you need to follow this order: </p> <ul><li id="GUID-41626AF1-F425-5965-B238-F5B94A0EA627"><p>First you need to clip the image. </p> </li> <li id="GUID-056D21EA-6627-5FA6-848D-ED516C332CE6"><p>Then you can scale the image. </p> </li> </ul> <p>This order is defined because if you scale an image and do clipping the output will not be a resource friendly output. </p> <p>The enhanced feature of the encoder is currently supported by the Symbian JPEG codec and PNG codec. The transformation feature during the encoding is: </p> <ul><li id="GUID-667B9F91-729B-5B4B-B83D-B3EC4219E297"><p>Imaging Frameworks provides support for rotation and mirroring while encode bitmaps or YUV pixel data, contained in a memory descriptor, to the data format. </p> </li> </ul> <p><b>Setup and Configuration Requirements</b> </p> <p> <b>Setting up the right decoder</b>  </p> <p>In order to allow the decoder to advertise the extended operations (cropping, rotation, horizontal flipping and vertical flipping) use <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-350DA091-17AB-3455-BE35-10A4ABA34706"><apiname>CImageDecoder::TOptions()</apiname></xref> and select the option for <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> and <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref>. The code below shows, how to set the right decoder and to set the options: </p> <codeblock id="GUID-8FD5579B-FBA4-585B-B52F-6C6C4D187E61" xml:space="preserve">
+
+TUint options =    CImageDecoder::EOptionExtRotation |
+            CImageDecoder::EOptionExtMirrorHorizontalAxis |
+            CImageDecoder::EOptionExtScaling;
+
+// The installed decoder supports all the operations requested.
+CImageDecoder* decoder = CImageDecoder::FileNewL(iFs, KInputFile, static_cast&lt;CImageDecoder::TOptions&gt;(options));
+
+// Ask for vertical flipping support.
+TImageConvOperation* operation = decoder-&gt;OperationL();
+if (operation)
+    {
+    // This gives KErrNotSupported because you have not asked for vertical flipping support.
+    
+operation&gt;AddOperationL(TImageConvOperation::EMirrorVerticalAxis);
+}
+
+</codeblock> <p> <b>Setting up the right encoder</b>  </p> <p>In order to allow the encoder to advertise the extended operations (rotation, horizontal flipping and vertical flipping) use <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-669FCF04-BC55-3CAF-93EB-C824E6C2BBB5"><apiname>CImageEncoder::TOptions()</apiname></xref> and select the option for <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-1F25CC18-A8E4-3E1D-BA3D-F5F472E20CC0"><apiname>CImageEncoder::FileNewL()</apiname></xref> and <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-51ECB4D3-5A87-35E7-82EB-DF2BAEAB2CAC"><apiname>CImageEncoder::DataNewL()</apiname></xref>. The code below shows, how to set the right encoder and to set the options: </p> <codeblock id="GUID-A01A75D6-F9A7-56A6-8C9F-1991D954F019" xml:space="preserve">
+
+TUint options =    CImageEncoder::EOptionExtRotation |
+            CImageEncoder::EOptionExtMirrorHorizontalAxis 
+            
+// The installed encoder supports all the operations requested.
+CImageEncoder* encoder = CImageEncoder::FileNewL(iFs, KInputFile, static_cast&lt;CImageEncoder::TOptions&gt;(options));
+
+// Ask for vertical flipping support.
+TImageConvOperation* operation = encoder-&gt;OperationL();
+if (operation)
+    {
+    // This gives KErrNotSupported because you have not asked for vertical flipping support.
+    
+operation&gt;AddOperationL(TImageConvOperation::EMirrorVerticalAxis);
+}
+
+
+</codeblock> </section> <section><title>Using Enhanced Features for Encoder and Decoder </title> <p>The Following tasks are covered in this tutorial: </p> <ul><li id="GUID-FBC2B2C3-CD3A-5C88-8086-6F348FF709FA"><p><xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita#GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3/GUID-B5E10863-7F1D-586B-B752-8A6C0081F022">How to set clipping / cropping operation during decode</xref>  </p> </li> <li id="GUID-AA02F1AC-FB21-5F70-8E72-71BC04B23557"><p><xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita#GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3/GUID-D92FA64D-3ABF-5159-815A-06108FEE6A4E">How to set rotation / mirroring operation during decode</xref>  </p> </li> <li id="GUID-EA24348E-9C10-5147-9419-CD5540F8C9B8"><p><xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita#GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3/GUID-3362463F-5B27-571B-AE8D-047BB544CF8D">How to set scaling operation during decode</xref>  </p> </li> <li id="GUID-9397F20A-79CA-5C3B-B251-A07741BCECC6"><p><xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita#GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3/GUID-466BDF59-39CE-5631-9CE1-83615C3D92A1">How to set rotation / mirrioring opeartion during encode</xref>  </p> </li> </ul> <p id="GUID-B5E10863-7F1D-586B-B752-8A6C0081F022"><b>Basic Procedure For Clipping / Cropping Operation During Decode</b> </p> <p>The high level steps to set clipping / cropping operation during decode are as follows: </p> <ol id="GUID-9873ED31-6562-5E9B-89B6-05B00185AAD5"><li id="GUID-19A92D1F-49C6-5A6C-9D80-C75D35F37F52"><p>To create the decoder call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> or <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref>, using the <codeph>TOptions</codeph> parameter of <codeph>EOptionExtCrop</codeph> to request the added functionality. </p> </li> <li id="GUID-6EF8781B-61F2-5421-B7AB-4890590D55B6"><p>In order to clip / crop the image call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-BA78485B-F2DB-31A5-A1B1-188A0F72C69D"><apiname>CImageDecoder::SetClippingRectL()</apiname></xref>. </p> </li> <li id="GUID-488BCB35-1F0C-5F3D-998C-8F3625BE97A9"><p>Then you need to obtain the size of the bitmap which holds the output of the operation being performed during decode, call the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-B8F6B2B5-F99B-3C4F-B2AD-0B378777D9B0"><apiname>CImageDecoder::GetDestinationSize()</apiname></xref> function. </p> </li> <li id="GUID-0ED79E97-DB79-5F31-A849-D60D9849262A"><p>Finally start the decoding operation by calling <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> and use the <codeph>CFbsBitmap</codeph> obtained by <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-B8F6B2B5-F99B-3C4F-B2AD-0B378777D9B0"><apiname>CImageDecoder::GetDestinationSize()</apiname></xref>. </p> </li> </ol> <p>For example code got to the session <xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita#GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3/GUID-AC972EE1-E26C-5166-AC0A-5979ACA7FC73">Example Code During Decode</xref>. </p> <p id="GUID-3362463F-5B27-571B-AE8D-047BB544CF8D"><b>Basic Procedure For Scaling Operation During Decode</b> </p> <p>The high level steps to set scaling during decode are as follows: </p> <ol id="GUID-B084C5B1-2098-5802-8862-F6E5D54104D4"><li id="GUID-B099FFAB-F2B3-5A73-A2B5-5C7CAF6D02D1"><p>To create the decoder call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> or <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref>. </p> <p> </p> </li> <li id="GUID-6529BA30-0BCC-5023-83CB-484A3CC909BE"><p>In order to scale the image call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-0C59067D-22EB-32E1-A4F6-A4335FD94B40"><apiname>CImageDecoder::ScalerL()</apiname></xref>. </p> </li> <li id="GUID-8D1C2920-E59B-5DAB-B08D-27A5A814DEF9"><p>Then you need to obtain the size of the bitmap which holds the output of the operation being performed during decode, call the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-B8F6B2B5-F99B-3C4F-B2AD-0B378777D9B0"><apiname>CImageDecoder::GetDestinationSize()</apiname></xref> function. </p> </li> <li id="GUID-AAF8C49D-8620-533E-AA22-055E8B505E98"><p>Finally start the decoding operation by calling <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> and use the <codeph>CFbsBitmap</codeph> obtained by <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-B8F6B2B5-F99B-3C4F-B2AD-0B378777D9B0"><apiname>CImageDecoder::GetDestinationSize()</apiname></xref>. </p> </li> </ol> <p>For example code got to the session <xref href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita#GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3/GUID-AC972EE1-E26C-5166-AC0A-5979ACA7FC73">Example Code During Decode</xref>. </p> <p id="GUID-AC972EE1-E26C-5166-AC0A-5979ACA7FC73"><b>Example Code For Clipping And Scaling During Decode</b> </p> <p>The example below shows how to peform clipping and scaling during decode : </p> <codeblock id="GUID-75D99482-1116-505E-AC6A-7D740B29AC59" xml:space="preserve">
+
+void CIclExample::ClipScaleDuringDecode()
+    {
+    TRect clipRect(TPoint(50, 65), TSize(170, 160));    // The wheel in thumbimage.jpg
+    TSize finalSize;
+
+    // The decoder supports all the operations you are going to perform.
+    TUint options =    CImageDecoder::EOptionExtRotation |
+                    CImageDecoder::EOptionExtMirrorHorizontalAxis |
+                    CImageDecoder::EOptionExtCrop |
+                    CImageDecoder::EOptionExtScaling;
+
+    // The installed decoder supports all the operations requested in options.
+    _LIT(KInputFile, "c:\\ICLExample\\thumbimage.jpg");
+    CImageDecoder* decoder = CImageDecoder::FileNewL(iFs, KInputFile, static_cast&lt;CImageDecoder::TOptions&gt;(options));
+    CleanupStack::PushL(decoder);
+
+    const TFrameInfo&amp; frameInfo = decoder-&gt;FrameInfo(KFirstFrame);
+    CFbsBitmap* output = new(ELeave) CFbsBitmap();
+    CleanupStack::PushL(output);
+    User::LeaveIfError(output-&gt;Create(frameInfo.iFrameSizeInPixels, frameInfo.iFrameDisplayMode));
+
+    CActiveListener* ao = CActiveListener::NewLC();
+
+    TImageConvOperation* operation = decoder-&gt;OperationL();
+    TImageConvScaler* scaler = decoder-&gt;ScalerL();
+
+    TInt i = 0;
+    while (KDecodeParams[i].iOutputFile != NULL)
+        {
+        const TDecodeParams&amp; params = KDecodeParams[i++];
+
+        operation-&gt;ClearOperationStack();
+        if (params.iRotate90)
+            {
+            operation-&gt;AddOperationL(TImageConvOperation::ERotation90DegreesClockwise);
+            }
+
+        if (params.iMirrorVerticalAxis)
+            {
+            operation-&gt;AddOperationL(TImageConvOperation::EMirrorVerticalAxis);
+            }
+
+        // Some codecs have a limit on the amount of scaling they can do.
+        scaler-&gt;SetScalingL(params.iScalingCoeff, TImageConvScaler::EMaximumQuality);
+
+        // Setting the clipping rect to NULL decodes the whole image.
+        decoder-&gt;SetClippingRectL(params.iClip ? &amp;clipRect : NULL);
+        User::LeaveIfError(decoder-&gt;GetDestinationSize(finalSize, KFirstFrame));
+        User::LeaveIfError(output-&gt;Resize(finalSize));
+
+        // See Note 1
+        ao-&gt;Initialize();
+        decoder-&gt;Convert(&amp;ao-&gt;iStatus, *output, KFirstFrame);
+
+        // See Note 2
+        CActiveScheduler::Start();
+
+        TPtrC outputFile(params.iOutputFile);
+        output-&gt;Save(outputFile);    // Ignore error code.
+        }
+
+    CleanupStack::PopAndDestroy(3); // decoder, output, ao
+    }
+
+</codeblock> <p id="GUID-D92FA64D-3ABF-5159-815A-06108FEE6A4E"><b>Basic Procedure For Rotation / Mirroring Operation During Decode </b> </p> <p>The high level steps to set rotation / mirroring operation during decode are as follows: </p> <ol id="GUID-085C04F4-13C2-57F5-9C97-5171CB5ACC1E"><li id="GUID-FAE03E80-DD1E-5833-A10D-3775C8857E75"><p>To create the decoder call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DA07559-7DDC-32A9-9E09-D557348D46DE"><apiname>CImageDecoder::FileNewL()</apiname></xref> or <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-00FB83E8-3759-32BE-B6E8-6F04EC60A909"><apiname>CImageDecoder::DataNewL()</apiname></xref>, using the <codeph>TOptions</codeph> parameter to request the desired functionality from the decoder. </p> </li> <li id="GUID-00393EB0-413B-59DC-BCD6-22511ECAB9EE"><p>In order to rotate the image call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-6DB314D3-4B0F-3DA7-98A5-43C6B121B810"><apiname>CImageDecoder::EOptionRotation()</apiname></xref> and for vertical mirroring call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-F0973A0F-AE96-3781-8D44-09019D87F8A3"><apiname>CImageDecoder::EOptionMirrorVerticalAxis()</apiname></xref>. </p> </li> <li id="GUID-E6E176CE-8DA8-57BE-9C6B-4B0C367D82FE"><p>Then you need to obtain the size of the bitmap which holds the output of the operation being performed during decode, call the <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-B8F6B2B5-F99B-3C4F-B2AD-0B378777D9B0"><apiname>CImageDecoder::GetDestinationSize()</apiname></xref> function. </p> </li> <li id="GUID-758730D6-F264-5690-BD11-9575A0ABECD6"><p>Finally start the decoding operation by calling <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> and use the <codeph>CFbsBitmap</codeph> obtained by <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-B8F6B2B5-F99B-3C4F-B2AD-0B378777D9B0"><apiname>CImageDecoder::GetDestinationSize()</apiname></xref>. </p> </li> </ol> <p><b>Example </b> </p> <p>The example below shows how to peform clipping and rotation operation during decode: </p> <codeblock id="GUID-159E0452-66EA-5702-865C-5C7FC6EAD0B0" xml:space="preserve">
+
+void CIclExample::ClipAndRotateDuringDecode()
+    {
+    TRect clipRect(TPoint(50, 65), TSize(170, 160));    // The wheel in thumbimage.jpg
+    TSize finalSize;
+
+    // The decoder must support *all* the operations we're going to perform.
+    TUint options =    CImageDecoder::EOptionExtRotation |
+                    CImageDecoder::EOptionExtMirrorHorizontalAxis |
+                    CImageDecoder::EOptionExtCrop |
+                    CImageDecoder::EOptionExtScaling;
+
+    // The installed decoders must support *all* the operations requested in aOptions.
+    _LIT(KInputFile, "c:\\ICLExample\\thumbimage.jpg");
+    CImageDecoder* decoder = CImageDecoder::FileNewL(iFs, KInputFile, static_cast&lt;CImageDecoder::TOptions&gt;(options));
+    CleanupStack::PushL(decoder);
+
+    const TFrameInfo&amp; frameInfo = decoder-&gt;FrameInfo(KFirstFrame);
+    CFbsBitmap* output = new(ELeave) CFbsBitmap();
+    CleanupStack::PushL(output);
+    User::LeaveIfError(output-&gt;Create(frameInfo.iFrameSizeInPixels, frameInfo.iFrameDisplayMode));
+
+    CActiveListener* ao = CActiveListener::NewLC();
+
+    TImageConvOperation* operation = decoder-&gt;OperationL();
+    TImageConvScaler* scaler = decoder-&gt;ScalerL();
+
+    TInt i = 0;
+    while (KDecodeParams[i].iOutputFile != NULL)
+        {
+        const TDecodeParams&amp; params = KDecodeParams[i++];
+
+        operation-&gt;ClearOperationStack();
+        if (params.iRotate90)
+            {
+            operation-&gt;AddOperationL(TImageConvOperation::ERotation90DegreesClockwise);
+            }
+
+        if (params.iMirrorVerticalAxis)
+            {
+            operation-&gt;AddOperationL(TImageConvOperation::EMirrorVerticalAxis);
+            }
+
+        // Some codecs may have a limit on the amount of scaling they can do.
+        scaler-&gt;SetScalingL(params.iScalingCoeff, TImageConvScaler::EMaximumQuality);
+
+        // Setting the clipping rect to NULL will decode the whole image.
+        decoder-&gt;SetClippingRectL(params.iClip ? &amp;clipRect : NULL);
+        User::LeaveIfError(decoder-&gt;GetDestinationSize(finalSize, KFirstFrame));
+        User::LeaveIfError(output-&gt;Resize(finalSize));
+
+        // See Note 1
+        ao-&gt;Initialize();
+        decoder-&gt;Convert(&amp;ao-&gt;iStatus, *output, KFirstFrame);
+
+        // See Note 2
+        CActiveScheduler::Start();
+
+        TPtrC outputFile(params.iOutputFile);
+        output-&gt;Save(outputFile);    // Ignore error code.
+        }
+
+    CleanupStack::PopAndDestroy(3); // decoder, output, ao
+    }
+
+</codeblock> <p id="GUID-466BDF59-39CE-5631-9CE1-83615C3D92A1"><b>Basic Procedure For Rotation / Mirroring Operation During Encode</b> </p> <p>The high level steps to set rotation / mirroring during encode are as follows: </p> <ol id="GUID-15EB693F-5149-579B-83C6-20EC69AE3436"><li id="GUID-CC6F230B-1478-5E81-9D1C-48B917DC4E7B"><p>To create the encoder call <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-1F25CC18-A8E4-3E1D-BA3D-F5F472E20CC0"><apiname>CImageEncoder::FileNewL()</apiname></xref> or <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-51ECB4D3-5A87-35E7-82EB-DF2BAEAB2CAC"><apiname>CImageEncoder::DataNewL()</apiname></xref> and a bitmap holding the image which is to be encoded. </p> </li> <li id="GUID-85932A49-E067-518B-97F2-044A5F336DB7"><p>To request an operation extension call, <xref href="GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8.dita#GUID-737DA130-9A66-39E2-9E68-2E65F37E02C8/GUID-DE7E1ACD-9619-3D42-B29F-4909DB491630"><apiname>CImageEncoder::OperationL()</apiname></xref>. If the extension is supported then a T class pointer is returned which gives access to the codec extension. <codeph>TImageConvOperation</codeph> has the extension function for rotation, and mirroring operation. </p> </li> <li id="GUID-BF922F17-05D3-5044-A5FE-A8B18BACC257"><p>To add multiple transformation operations call <xref href="GUID-8B339FC8-C565-3992-965D-DCE097110937.dita#GUID-8B339FC8-C565-3992-965D-DCE097110937/GUID-1A9C2AA5-F6F7-3BDE-839F-75C307B8B789"><apiname>TImageConvOperation::AddOperationL()</apiname></xref>. And to remove the transformation operation call <xref href="GUID-8B339FC8-C565-3992-965D-DCE097110937.dita#GUID-8B339FC8-C565-3992-965D-DCE097110937/GUID-49D6254B-9CCF-3623-AE1C-DF750632AC14"><apiname>TImageConvOperation::ClearOperationStack()</apiname></xref>. </p> <p>The rotations defined are: </p> <ul><li id="GUID-0CCFD0EE-9039-54C6-8D2E-68DB0C10C143"><p>Clockwise rotation 90 degrees. </p> </li> <li id="GUID-36E35E45-FE83-5A6B-BF73-12A9BA027C6C"><p>Clockwise rotation 180 degrees. </p> </li> <li id="GUID-454E31B3-CE8F-5786-B14D-4C8EB6B43F02"><p>Clockwise rotation 270 degrees. </p> </li> <li id="GUID-5F5B89F5-16B1-5025-B5B7-4445092521CB"><p>Horizontal axis mirroring. </p> </li> <li id="GUID-0DA0FD9A-FF1B-58E6-BD5B-6F98A350D741"><p>Vertical axis mirroring. </p> </li> </ul> </li> <li id="GUID-5FF035AB-DB18-5793-AC59-BA7084676585"><p>Finally call <xref href="GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4.dita#GUID-8F2953B2-E64E-3D8B-B30B-B35B373368D4/GUID-8118AC37-471E-3CB6-9F71-4E93507DDE57"><apiname>CImageDecoder::Convert()</apiname></xref> to decode the image. At the end of the <codeph>Convert()</codeph> call, the waiting application output in the main application is signalled and the bitmap or YUV image is encoded into a transformed <filepath>JPEG</filepath> based on the operations applied, assuming that no error is returned. </p> <p> <b>NOTE:</b> The transformation operations are only supported by the images which are multiples of Minimum Coded Unit (MCU). </p> </li> </ol> <p><b>Example </b> </p> <p>The example below shows how to peform rotation / mirrioring operation during encode: </p> <codeblock id="GUID-5A8C4894-018B-56F8-B33E-A8F7AEA413FC" xml:space="preserve">
+
+void CIclExample::EncodeBitmapToFileUsingOperationExtensionL(const TDesC&amp; aSrcFileName, const TDesC&amp; aDestFileName)
+    {
+    // Create the encoder, passing the filename. 
+    // If the image is not recognised or valid then the call will leave with an error    
+    CImageEncoder* jpegImageEncoder = CImageEncoder::FileNewL(iFs, aDestFileName, CImageEncoder::EOptionNone, KImageTypeJPGUid);
+    CleanupStack::PushL(jpegImageEncoder);
+    
+    // Create a CFbsBitmap to store the source bitmap to encode
+    CFbsBitmap* sourceBitmap = new(ELeave) CFbsBitmap;
+    CleanupStack::PushL(sourceBitmap);
+
+    User::LeaveIfError(sourceBitmap-&gt;Create(TSize(20,30), EColor16M));
+    User::LeaveIfError(sourceBitmap-&gt;Load(aSrcFileName));
+    
+    // Create operation extension
+    TImageConvOperation* operation = jpegImageEncoder-&gt;OperationL();
+    
+    // Add Rotate 90degrees operation
+    operation-&gt;AddOperationL(TImageConvOperation::ERotation90DegreesClockwise); 
+    //NOTE: Multiple operations can be added
+    
+    // See Note 1
+    CActiveListener* activeListener = CreateAndInitializeActiveListenerLC();
+
+    // Convert the image
+    jpegImageEncoder-&gt;Convert(&amp;activeListener-&gt;iStatus, *sourceBitmap, NULL);
+
+    // See Note 2
+    CActiveScheduler::Start();
+    User::LeaveIfError(activeListener-&gt;iStatus.Int());// encode complete either display the image or report an error.
+    
+    CleanupStack::PopAndDestroy(3); // jpegImageEncoder, sourceBitmap and activeListener
+    }
+</codeblock> </section> </conbody><related-links><link href="GUID-88091838-03FC-550F-9A3D-DA70907EF955.dita"><linktext>Imaging Frameworks overview</linktext> </link> <link href="GUID-C0B39D73-0A3C-5289-A774-7BE590037404.dita"><linktext> Bitmap Transform Library
+                Overview</linktext> </link> <link href="GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita"><linktext>Bitmap Transform Library Guide</linktext> </link> <link href="GUID-E6692CDA-9E24-57AE-9BC2-14D68D6480C3.dita"><linktext>Enhanced Features for Encoder and
+                Decoder Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6788741-EF34-57B7-B4D4-8AAC21B25774.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E6788741-EF34-57B7-B4D4-8AAC21B25774" xml:lang="en"><title>Alarm Server
+Concepts</title><shortdesc>This section provides a summary of related concepts and functionality
+of Alarm Server such as different states and types of alarms, sound control,
+alarm play interval, and alarm time changes as per system time changes. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F" xml:lang="en"><title>Lists and grids</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Vertical lists are used extensively in most applications. Two-dimensional
+grids are less frequently used, but have obvious advantages in some situations.
+In lists and grids, the user can move the focus from one item to another using
+the Arrow keys. This is called browsing or scrolling.</p>
+<p>In general, vertical browsing is preferred over horizontal browsing; the
+keypad solutions should take this into account.</p>
+<fig id="GUID-BBF0E214-A254-42B4-B4CA-4ECC50A15D0D">
+<title>Lists</title>
+<image href="GUID-B0E6F296-1340-4458-B9F6-EDC13BBF20E9_d0e54374_href.png" scale="40" placement="inline"></image>
+</fig>
+<section><title>Using lists and grids
+in C++ applications</title><p>The APIs to use for lists and grids are the Lists
+API and the Grids
+API. For implementation information, see Using
+the Lists API and Using
+the Grids API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6AD5C21-493F-59ED-9617-B348013BDCE5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E6AD5C21-493F-59ED-9617-B348013BDCE5"><title>System Sounds</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>System Sounds provides a simple and a consistent way for applications to produce sounds for common events such as messages and errors. </p> <p>Sounds are specified logically, so that the actual corresponding physical sounds produced can vary with device configuration. Sounds can be file-based (for example, WAV), tones, or a fixed-tone sequences. </p> <p>System Sounds is a layer over the Media Server, which handles playing the audio. </p> <p>It has three key concepts - logical sound, sound player and system sound information. </p> <section><title>Logical sound</title> <p>A sound to play is specified logically using two UIDs. The first UID specifies the category of the sound, such as rings, alarms, errors and messages. The second UID is optional and it specifies an instance of that category, such as new SMS arrived, or battery low. </p> <p>The pair of UIDs is encapsulated in <xref href="GUID-7E952D16-3F1D-3CDD-9A25-0EBF3BBB4455.dita"><apiname>TBaSystemSoundType</apiname></xref>. </p> </section> <section><title>Sound player</title> <p>The sound player plays the sound specified by <xref href="GUID-7E952D16-3F1D-3CDD-9A25-0EBF3BBB4455.dita"><apiname>TBaSystemSoundType</apiname></xref>. The caller can request the sound to be repeated, and the time between repeats. If the exact sound cannot be found on a particular device, a match only by category (first UID) is used. A default sound is used if no match is found. </p> <p>The sound player class is <xref href="GUID-DF7CBE32-6D4E-3C15-982F-D5C2E0EDE380.dita"><apiname>CoeSoundPlayer</apiname></xref>. </p> </section> <section><title>System sound information</title> <p>The characteristics of a physical sound that corresponds to a logical sound are encapsulated in a <xref href="GUID-B53E2875-D83A-38E2-B2F4-BC973313C8FF.dita"><apiname>TBaSystemSoundInfo</apiname></xref>. </p> <p>You can get and set the physical sound for a logical sound through <xref href="GUID-D426C4BB-F317-3F22-AC37-E741FCB0B269.dita"><apiname>BaSystemSound</apiname></xref>. </p> </section> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Using Multimedia Framework
+                Client</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6B3E575-80E3-58E3-9950-E0A5F6798861.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E6B3E575-80E3-58E3-9950-E0A5F6798861" xml:lang="en"><title> Using
+the Parser Plug-in Resource File</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section explains how to specify the field values for a parser plug-in
+resource file. </p>
+<section><title>Procedure</title> <p>The XML framework is designed to manage
+numerous parser implementations and has functionality to choose the implementation
+most suited to the current document. </p> <p>The criteria used to make the
+selection are held in the <xref href="GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473.dita#GUID-54A442BD-FCF1-31D3-BEF7-598C1820F473/GUID-AEFF2DB4-FBC2-36EE-A4CE-7EBBD4AF004E"><apiname>Xml::CMatchData</apiname></xref> class. When this
+information does not force the selection of exactly one parser, the framework
+defaults firstly to choose a Symbian-supplied parser if present, else it will
+choose the one with the lowest UID. When a parser implementation is created,
+a resource file which supplies the related information must also be created. </p> <p>The <codeph>implementation_uid</codeph> field
+must contain the <codeph>UID</codeph> of the plug-in. The <codeph>default_data</codeph> field
+must contain the document type it can parse. The <codeph>opaque_data </codeph> field
+specifies the supplier (Symbian or other). The following is a sample resource
+file: </p> <codeblock id="GUID-2661506B-5B2F-50CF-A908-EAAE9B6EF726" xml:space="preserve">
+RESOURCE REGISTRY_INFO validatorInfo
+       {
+       dll_uid = 0x10273863;
+       interfaces = 
+              {
+              INTERFACE_INFO
+                     {
+                     interface_uid = 0x101FAA0B;
+                     implementations = 
+                            {
+                            IMPLEMENTATION_INFO
+                                   {
+                                   implementation_uid = 0x10273864;
+                                   version_no = 2;
+                                   display_name = "Example parser";
+                                   default_data = "text/xml||text/wbxml";
+                                   opaque_data = "LicenseeX";
+                                   }
+                            };
+                     }
+              };
+       }
+</codeblock> <p>For more details on how to write a sample registration resource
+file, refer to <xref href="GUID-9A9103E4-27B0-5CF3-855A-DCD44795A5C0.dita">Creating
+a Standard Registration Resource File</xref> </p> </section>
+</conbody><related-links>
+<link href="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita"><linktext>XML Framework
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9" xml:lang="en"><title>Meta
+files</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A meta file is a simple text file associated with each template extension
+makefile, it contains additional information about the extension such as makefile
+type, platform and so on. </p>
+<p>Following is the syntax for meta file: </p>
+<p> <codeph>makefile</codeph>  <varname>gnumake | nmake</varname>  </p>
+<p>[<codeph>platform</codeph>  <varname>value</varname>] </p>
+<p>[<codeph>option</codeph>  <varname>option-name_1</varname> <varname>option-value_1</varname>] </p>
+<p>... </p>
+<p>[<codeph>option</codeph>  <varname>option-name_n</varname> <varname>option-value_n</varname>] </p>
+<p>The <codeph>makefile</codeph>  <varname>gnumake | nmake</varname> is compulsory
+for all the meta files. It specifies whether the makefile is of type <codeph>gnumake</codeph> or <codeph>nmake</codeph>. </p>
+<p>The optional <codeph>platform</codeph>  <varname>value</varname> specifies
+the platforms for which the associated template extension makefile can be
+applied. If not specified, the makefile is invoked for all the platforms.
+For example, the <codeph>platform</codeph> could be <varname>winscw</varname> and/or <varname>ARMv5</varname>. </p>
+<p>The optional <codeph>option</codeph>  <varname>option-name</varname> <varname>option-value</varname> sets
+a default value for an option, which can be changed within <codeph>START EXTENSION</codeph>...<codeph>END</codeph> block
+in the <filepath>bld.inf</filepath> file. For more information, refer to <xref href="GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita">prj_extensions</xref>. </p>
+<example><p>This example will set values to <codeph>platform</codeph> and <codeph>makefile</codeph> variables. </p><codeblock id="GUID-EAEA364D-75F8-5BF0-8E66-A8C3530758E6" xml:space="preserve">#copy_default.meta
+#
+
+makefile     gnumake
+platform    win32</codeblock></example>
+</conbody><related-links>
+<link href="GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971.dita"><linktext>How to write
+a meta file</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E6D9F8CA-F293-5CE6-93C4-5FEC5EBCB2E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E6D9F8CA-F293-5CE6-93C4-5FEC5EBCB2E9" xml:lang="en"><title>Asynchronous
+service provider's responsibilities</title><shortdesc>This document describes the functionality required from an asynchronous
+service provider.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>An asynchronous service provider must interact in the following ways with
+its clients:</p>
+<ul>
+<li id="GUID-C140D0C8-0486-5AEF-8AFC-732B34078705"><p>prior to initiating
+a request, a request function must set the value of the passed <codeph>TRequestStatus</codeph> to <codeph>KRequestPending</codeph>,
+which indicates that a request has been issued but not completed.</p> </li>
+<li id="GUID-117EE3F9-A2A9-59FE-ABE2-D8CC9C5856C5"><p>requests must be completed
+by signalling the requesting thread’s request semaphore by calling <codeph>RThread::RequestComplete()</codeph> with
+the <codeph>TRequestStatus</codeph> as the first parameter and the completion
+code as the second parameter (which is placed in the <codeph>TRequestStatus</codeph>).</p> </li>
+<li id="GUID-EBD83E91-B71C-5532-8EB6-F44541D2DC53"><p>there must be a <i>cancel
+function</i> which can cancel an outstanding request. In some cases, calling
+the cancel function does not cause cancellation because the request is already
+complete. In all cases, the request must be complete before the cancel function
+returns.</p> </li>
+<li id="GUID-6F7F7419-9170-50C3-AF76-8F03E4FF43D3"><p>if an asynchronous request
+is made, it must complete precisely once, whether normally, abnormally, or
+through cancellation.</p> </li>
+<li id="GUID-DCC53064-2B63-5532-B2E7-3A48FB9CD630"><p>completion through cancellation
+is often indicated by a <codeph>TRequestStatus</codeph> code of <codeph>KErrCancel</codeph>.</p> </li>
+</ul>
+<section id="GUID-08111F39-8412-40CC-B21D-C97A14B43BF8"><title>See also</title> <p><xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E71D8907-236E-5948-9594-E14E34A31DC8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E71D8907-236E-5948-9594-E14E34A31DC8"><title>document</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>document</codeph>  <varname>document-file-list</varname> </p> <p>Use the <codeph>document</codeph> statement to specify document files.</p> <p>Each <codeph>document</codeph> statement may specify an arbitrary number of document files. </p> <p>There may be an arbitrary number of <codeph>document</codeph> statements in the project description file relative to each <codeph>sourcepath</codeph>. </p> <p>This keyword is only used in the creation of IDE makefiles, where it can be useful for specifying files so that they are available for editing within the IDE but do not play a part in building the executable. </p> <p>The <filepath>.mmp</filepath> file is incorporated in IDE workspaces by default.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC"><title>What is the mechanism for reading, writing and searching for data</title><shortdesc>This topic describes the mechanism for reading data from the Comms Database and writing data to the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>All elements that you can read and write have the class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> as a base class. This base class contains the functions that get and store that element. </p> <p>Tables, records, links and fields are all elements. The classes that represent tables, records, links and fields have <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> in their class hierarchy. You use the functions in <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> to load and store tables, records, links and fields. </p> <fig id="GUID-3EED9581-A88B-5E79-B672-42486CFB6BE3"><image href="GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e66774_href.png" placement="inline"/></fig> <p>The <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> class gives you: </p> <ul><li id="GUID-3D33E6EE-F6FA-5B75-A165-4A8731BD2FCB"><p>the functions to get data from the Comms Database: <codeph>LoadL()</codeph>, <codeph>FindL()</codeph>, <codeph>RefreshL()</codeph>  </p> </li> <li id="GUID-413D285C-2447-5157-B573-51056F79C50D"><p>the functions to put data into the Comms Database: <codeph>StoreL()</codeph>, <codeph>ModifyL()</codeph>, <codeph>DeleteL()</codeph>  </p> </li> </ul> <section><title>Getting data directly from the Comms Database</title> <p>If you know the record Id part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of a table, record, field or link, you can load the table, record, field or link from the Comms Database. Call <codeph>SetRecordId()</codeph> on the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> base class to set the record Id. Call <codeph>LoadL()</codeph> on the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> base class to load the table, record, field or link. </p> <p>The CommsDat API gets the data that the tool or application is allowed to see from the Comms database. The data that the tool or application can see depends on platform security capabilities and the access attributes for the session. </p> <p>A request to load a single element fails if the tool or application does not have the platform security capabilities. </p> <p>A request to load a table does not fail if some records in the table are not available. The tool or application can see only those records that are available. </p> <p>A request to load a record does not fail if some fields in the record are not available. The tool or application can see only those fields that are available. </p> <p> <codeph>LoadL()</codeph> writes over the content of the table, record, field or link object in memory. </p> <p> <codeph>LoadL()</codeph> opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction. </p> </section> <section><title>Finding data in the Comms Database</title> <p>You can search for records in the Comms Database. There are two patterns: </p> <p><b>Finding a single record that has specified field values </b> </p> <p>You create a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordBase</apiname></xref> object in memory. You select the fields for the search and set the field values. Call <codeph>FindL()</codeph> on the <codeph>CMDBRecordBase</codeph> object. <codeph>FindL()</codeph> is member of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> base class. If the search is successful, the CommsDat API fills the <codeph>CMDBRecordBase</codeph> object with the values from the first record in the Comms Database that matches. The values include the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref>. If the search is not successful, the <codeph>CMDBRecordBase</codeph> object is not changed. </p> <p> <codeph>FindL()</codeph> opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction. </p> <p>Note that you do not need to set the record Id part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of the table, the record, the field or the link object. </p> <p><b>Finding all records in a table that match a specified record </b> </p> <p>You create a <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBRecordSet</apiname></xref> object and append a single record to the array of records. You select the fields for the search and set the field values. This record is the 'search record'. Call <codeph>FindL()</codeph> on the <codeph>CMDBRecordSet</codeph> object. If the search is successful, the function returns a number of complete records. The first record found writes over the 'search record'. If the search is not successful, the <codeph>CMDBRecordSet</codeph> object is not changed </p> <p> <codeph>FindL()</codeph> opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction. </p> <p>Note that you do not need to set the record Id part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of the table, the record, the field or the link object. </p> </section> <section><title>Refreshing data in memory</title> <p>You can update your copy of the data in memory. You call <codeph>RefreshL()</codeph> to update the data. The method is similar to <codeph>LoadL()</codeph> but the method does not write over fields that the tool or application has changed. All other fields are refreshed from the Comms Database. </p> <p> <codeph>RefreshL()</codeph> is a member of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> base class. </p> <p> <codeph>RefreshL()</codeph> is useful if a tool or application maintains a cache of Comms information. </p> <p> <codeph>RefreshL()</codeph> opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction. </p> </section> <section><title>Adding new data to the Comms Database</title> <p>If need to add or change the data in the Comms Database you must add or change the data in the table, the record, the link or the field object in memory. </p> <p>Call <codeph>StoreL()</codeph> to create new records, tables and fields. The CommsDat API only stores the fields that the tool or application has changed. </p> <p>A table, record, field or link object that exists must have a valid <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> before the call to <codeph>StoreL()</codeph>. </p> <p>To add a new user defined table to the Comms Database set the record Id part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of the table to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDNewTableRequest</apiname></xref> before the call to <codeph>StoreL()</codeph>. Call <codeph>SetRecordId()</codeph> on the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> base class to set the record Id. </p> <p>To add a new record to a table set the record Id part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of the table to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDNewRecordRequest</apiname></xref> before the call to <codeph>StoreL()</codeph>. Call <codeph>SetRecordId()</codeph> on the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> base class to set the record Id. The table must exist before you add the new record. </p> <p>To add a new column to a user defined table set the record Id part of the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">element Id</xref> of the table to <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDNewColumnRequest</apiname></xref> before the call to <codeph>StoreL()</codeph>. Call <codeph>SetRecordId()</codeph> on the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBElement</apiname></xref> base class to set the record Id. The effect of a new column is to add a new field in the user defined records. </p> <p>The tool or application must have the platform security capabilities to write to the Comms Database. </p> <p> <codeph>StoreL()</codeph> opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction. </p> </section> <section><title>Changing data in the Comms Database</title> <p>If you need to change data in the Comms Database you must change the data in the table, the record, the link or the field object in memory. The table, the record, the link and the field must already exist in the database. </p> <p>Call <codeph>ModifyL()</codeph> to change existing data. The function cannot create new records or tables, but can store new fields in a record. </p> <p>The tool or application must have the platform security capabilities to write to the Comms Database. </p> <p> <codeph>ModifyL()</codeph> opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction. </p> </section> <section><title>Deleting data from the Comms Database</title> <p>Call <codeph>DeleteL()</codeph> to delete a table, a record, a field or a link from the Comms Database. </p> <p>The tool or application must have the platform security capabilities to write to the Comms Database. </p> <p> <codeph>DeleteL()</codeph> opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e315155_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E72E2602-0492-58F9-A01F-D72BCC3FFFD5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E72E2602-0492-58F9-A01F-D72BCC3FFFD5" xml:lang="en"><title>Using
+TRequestStatus</title><shortdesc>This document describes the use of TRequestStatus objects to hold
+the completion status of an asynchronous request.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A request status object is used to carry the completion status of an asynchronous
+request.</p>
+<p>Typically, an asynchronous request is made by an active object, an instance
+of a <codeph>CActive</codeph> derived class, to a service provider. When an
+asynchronous request completes, the service provider stores a completion code
+in the request status object and signals the caller’s thread. When the active
+object handles the completed request, it can check the completion code.</p>
+<p>Note that the request status object is the data member: <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita#GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F/GUID-0EBC52DE-37A7-31A8-AB78-99E65CFEAED5"><apiname>CActive::iStatus</apiname></xref> of
+the <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref> base class.</p>
+<codeblock id="GUID-2F4F5562-22C1-5868-8B1F-DE0A05B43CEA" xml:space="preserve">class CMyActive : public CActive
+ {
+ void RunL();
+ void IssueRequest();
+ ...
+ RTimer         iTimer;
+ }</codeblock>
+<p>The active object does not need to initialize the request status object
+in any way; it simply passes it to the service provider’s request function
+when making the request. The service provider is responsible for changing
+the completion code; in particular it sets the code to <codeph>KRequestPending</codeph> before
+initiating the request. For example:</p>
+<codeblock id="GUID-E16E9168-8AAD-52E9-8734-7865A6939E67" xml:space="preserve">void CMyActive::IssueRequest()
+ {
+ timer.CreateLocal();   // created for this thread
+ ...
+ timer.After(iStatus,5000000); // Notification after 5 seconds
+ SetActive();
+ ...
+ }</codeblock>
+<p>The active object’s completed request handler, i.e. its <codeph>RunL()</codeph> function
+can check the completion code as the code fragments show. While not particularly
+useful for timers, it shows the general principle:</p>
+<codeblock id="GUID-927EBB91-9772-5A48-B5F8-C909552F898A" xml:space="preserve">//
+// Extracting the completion code value
+//
+void RunL()
+ {
+ ...
+ User::LeaveIfError(iStatus.Int());// leave on bad return code
+ ...
+ }</codeblock>
+<codeblock id="GUID-0501DC7C-84BA-5784-BA36-BCE595C2E95E" xml:space="preserve">//
+// Using a comparison operator
+//
+void RunL()
+ {
+ ...
+ if (iStatus == KErrCancel);// check for a specific value 
+ ...
+ }</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E736B50D-F671-5CCB-A245-BA9791ADA395.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E736B50D-F671-5CCB-A245-BA9791ADA395" xml:lang="en"><title>ReadArray:
+Reading the Contents of a Resource File into an Array</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-22921bf6-7d6a-4e76-9a9b-caada1b38c69.zip" scope="external">ReadArray.zip</xref></p>Download some additional files required
+by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.zip" scope="external">CommonFramework.zip</xref> and <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-7c88b173-b677-457c-9f87-ef28897de1d7.zip" scope="external">CommonFile.zip</xref><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-22921bf6-7d6a-4e76-9a9b-caada1b38c69.html" scope="peer">browse</xref> to view the example code. </p>View the additional
+files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-89fa6105-e749-4e5f-a233-a000e3b9390b.html" scope="peer">browse CommonFramework</xref> and <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-7c88b173-b677-457c-9f87-ef28897de1d7.html" scope="peer">browse CommonFile</xref>.    </section>
+<section><title>Description</title> <p>This example shows how to load data
+from resource files into a class. ReadArray loads the resource identified
+as SECOND from the resource file; this is an array of DATA structures. (The
+resource FIRST is not used in this example) </p> <p>The example constructs
+a <codeph>CResDataArray</codeph> object to contain an array of <codeph>CResData</codeph> objects,
+one for each DATA structure in the array. The <codeph>CResDataArray</codeph> object
+can also display the individual items of each DATA structure at the test console.
+All WORD, BYTE and LONG are interpreted as signed values. </p> <p>The example
+follows on from the <xref href="GUID-4820CA37-982D-57BC-8829-498192801B1E.dita">Reading
+from a resource file</xref> example. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-D84A8F1C-AE68-3E7B-9E07-5A4B0D664F46.dita"><apiname>CResData</apiname></xref></p><p><xref href="GUID-FCE7D958-96AA-346D-8D22-0EF24B9DB7CC.dita"><apiname>CArrayPtrFlat</apiname></xref></p><p><xref href="GUID-CA2431AB-254B-3852-B9C1-541F44E577CD.dita"><apiname>CResDataArray</apiname></xref></p><p><xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref></p><p><xref href="GUID-B375D32E-1F91-30FA-8605-A2E163111F9A.dita"><apiname>TResourceReader</apiname></xref></p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E764B4A3-4CEE-461D-B555-C8969A62130A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-E764B4A3-4CEE-461D-B555-C8969A62130A" xml:lang="en"><title>Status
+pane items</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A tap on: </p>
+<ul>
+<li><p><xref href="GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita">Navi pane</xref>:
+common items (such as tabs) should perform a function that is obvious and
+clear. Common AVKON interaction does not change. On the whole, however, in
+each application it is up to the given application to assign an appropriate
+function to its Navi pane items. It is perfectly acceptable also not to assign
+any function where appropriate.</p></li>
+<li><p><xref href="GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita">Universal indicator
+pane</xref>: opens a pop-up with more information on <xref href="GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita">Status
+pane</xref> indicators. It always includes battery and signal indicators and
+digital clock. The user can tap any of those for more information. For each
+visible universal indicator there is one row reserved in the pop-up for showing
+the icon and a description text. Thus the user can view what indicator is
+in question. The description text may also inform about the current status
+and/or it may be a link to a view in corresponding application e.g. by tapping
+text "3 new messages" opens the relevant view from the messaging application,
+and tapping "Bluetooth active" switches view to the Bluetooth settings. Content
+of the row is determined by the application originating the indicator. </p></li>
+<li><p>Clock in Idle opens the Clock application.</p></li>
+</ul>
+<section><title>Using status pane items
+in C++ applications</title><p>The API to use for the status pane is the Status
+pane API. For implementation information, see Using
+the status pane API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E76DBFC7-E15E-5AB6-AE8D-72CA1808DBA2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E76DBFC7-E15E-5AB6-AE8D-72CA1808DBA2" xml:lang="en"><title>Editing
+Email Messages Stored as Drafts in Rich Text Format</title><shortdesc>This tutorial explains how to edit email messages stored as drafts
+in rich text format. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+
+<section><title>Introduction</title> <p>Email messages can be stored as drafts
+by any of the following methods: </p> <ul>
+<li id="GUID-5ABBE15A-D84F-51A8-953E-CE2246BDFE68"><p>Using any of the following
+versions of the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-FCDC47D2-0446-3CD7-A246-4DCED7C8A063"><apiname>CImEmailOperation::CreateNewL()</apiname></xref> function: </p> <ul>
+<li id="GUID-7C84BC81-CDFB-55F0-B447-E0AD675B9F68"><p>Nine parameters version
+with <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> parameter set to <codeph>ETrue</codeph>  </p> <codeblock id="GUID-DCB8F2ED-9BC2-509A-8785-336492FDD84D" xml:space="preserve">static IMPORT_C CImEmailOperation *CreateNewL(TRequestStatus &amp;aObserverRequestStatus,
+CMsvSession &amp;aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId,
+TMsvPartList aPartList, const TMsvEmailTypeList &amp;aMsvEmailTypeList,
+TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);</codeblock> </li>
+<li id="GUID-EDDD9DFF-5B04-55EC-8DCE-7401F4ED63CD"><p>Six parameters version </p> <codeblock id="GUID-C9B2FBCE-8E0A-54AD-A76F-CC73F98423CD" xml:space="preserve">static IMPORT_C CImEmailOperation *CreateNewL(TRequestStatus &amp;aObserverRequestStatus,
+CMsvSession &amp;aMsvSession, TMsvId aDestination, TMsvPartList aPartList,
+const TMsvEmailTypeList &amp;aMsvEmailTypeList, TUid aMsgType);</codeblock> </li>
+<li id="GUID-128D187E-0FD4-5DDB-9DE7-AA27065BDF12"><p>Eight parameters version </p> <codeblock id="GUID-E53C170C-92B1-5FD0-B3CC-C13A79E3AA43" xml:space="preserve">static IMPORT_C CImEmailOperation *CreateNewL(TRequestStatus &amp;aObserverRequestStatus, 
+CMsvSession &amp;aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, 
+const TMsvEmailTypeList &amp;aMsvEmailTypeList, TUid aMsgType, TInt aPriority=EPriorityStandard);</codeblock> </li>
+</ul> </li>
+<li id="GUID-948A854C-4BDD-522B-8497-2A54813E1B8E"><p>Using the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-5C13FD54-1C93-353C-9BDB-2A30A14BD159"><apiname>CImEmailOperation::CreateForwardL()</apiname></xref> or <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-EF24AB12-F3E9-3AB4-95E9-AB4D2946CDEC"><apiname>CImEmailOperation::CreateReplyL()</apiname></xref> function on a message that is downloaded and stored as a draft in rich text
+format. </p> </li>
+</ul> </section>
+<section><title>Procedure</title> <ol id="GUID-004F1E0B-9DE9-553C-9F28-69B23309095F">
+<li id="GUID-BE77A5A9-F2E8-5804-A15A-277A83AAC4E9"><p>Use the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+of the message (stored in the Draft folder) to create a new instance of the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class. </p> </li>
+<li id="GUID-883E773C-E917-5810-B10F-AC9E2D45E035"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> class
+to create a <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-D9EA7198-6161-5433-9C50-72A703BAB57D"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-57CA3F50-33EA-359B-AABB-4E4E15AF2A18"><apiname>CImEmailMessage::GetBodyTextL()</apiname></xref> function
+to get the body text of the message in the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class. </p> </li>
+<li id="GUID-D6B6AA32-E408-59D9-BAA8-30BD7BFB09A9"><p>If you want to retain
+rich text formatting, complete the following step 1. If you want to use plain
+text formatting, complete the following steps from 2 to 4. </p> <ol id="GUID-1826D190-AACF-538C-8B1A-FC86563EAC3B">
+<li id="GUID-DB34E3E4-D5E6-5086-82D3-D3AFB0B69853"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-791117B4-C946-3D43-AE1E-68DDC10F85A3"><apiname>CImEmailMessage::StoreBodyTextL()</apiname></xref> function
+with the edited <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class to store the body text. </p> </li>
+<li id="GUID-8218C2C8-ADEC-5837-82F9-4302750F7FE9"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-B99E759E-E0D6-3A10-B81C-5BFCAF631B7D"><apiname>CImEmailMessage::OpenPlainBodyTextForWriteL()</apiname></xref> function
+to get <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref>. </p> </li>
+<li id="GUID-9705A077-C61C-5083-8A49-B4A617CB3065"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-DFD5B13A-3CE5-35D9-B8F3-31D3DFA0DB41"><apiname>CImPlainBodyText::StoreRichTextAsPlainTexL()</apiname></xref> function
+and pass the edited <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class to store the message. </p> </li>
+<li id="GUID-938F05ED-FA0C-5D58-8B91-EA31462A9B35"><p>Call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-022C7A37-91EF-3363-A760-865A1F980917"><apiname>CImPlainBodyText::CommitL()</apiname></xref> function
+to complete the editing operation. </p> </li>
+</ol> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e317911_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E79D47D6-3FF2-5858-B092-29D39A1CA2B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E79D47D6-3FF2-5858-B092-29D39A1CA2B6"><title>How to commit streams</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Once data has been externalised to a stream, an application <i>must</i> commit a stream before disposing of the write stream object.</p> <p>This is done by calling <codeph>CommitL()</codeph> on the write stream object. The function itself is a member of the write stream interface class, <codeph>RWriteStream</codeph>.</p> <p>The following example code fragment shows this:</p> <codeblock id="GUID-CB6C4242-D85C-5C8D-BA42-B27E3178E342" xml:space="preserve">...
+TSimple thesimple;
+...
+...              // Construct a TSimple object
+...
+RStoreWriteStream outstream;
+TStreamId id = outstream.CreateLC(*store);
+                 // Externalize the TSimple object
+outstream  &lt;&lt; thesimple;
+                 // Commit changes to the stream
+outstream.CommitL();
+                 // Cleanup the stream object
+CleanupStack::PopAndDestroy();
+...</codeblock> <p><codeph>store</codeph> is a pointer to an already opened stream store.</p> <p>As a simple rule, <codeph>CreateL()</codeph> or <codeph>CreateLC()</codeph> is matched by a call to <codeph>CommitL()</codeph>. More generally, any change to a stream, either the creation of a new one or a change to an existing one, should be matched by a call to <codeph>CommitL()</codeph>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E7ACEC20-27C9-5124-A46E-2812A64E3E4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E7ACEC20-27C9-5124-A46E-2812A64E3E4B" xml:lang="en"><title>Character Encoding and Conversion Plug-ins Component</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Each library in the Plug-ins component is a character converter which converts text between a foreign encoding and Unicode.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E7BB0B0F-FC27-5428-81C0-1AB9CA426571.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E7BB0B0F-FC27-5428-81C0-1AB9CA426571" xml:lang="en"><title>BIO Messaging Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides detailed information on BIO Messaging Framework component. Client applications can implement the functions provided by this framework to handle BIO messages. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E7C41361-C0B9-5341-A864-B59770FB7C9B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E7C41361-C0B9-5341-A864-B59770FB7C9B" xml:lang="en"><title>Supporting
+Writable Static Data in DLLs </title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Many UNIX programs rely
+on Writable Static Data (WSD) for data storage. Native Symbian platform applications
+have been developed without any support for WSD on an Emulator for dynamic
+link libraries. P.I.P.S. supports WSD and a complete implementation is available
+for target phones. The implementation of WSD on an Emulator, however, poses
+certain restrictions for dynamic link libraries. </p><p>A Symbian project's
+MMP file can specify the <codeph>EPOCALLOWDLLDATA</codeph> directive to enforce
+a rule that WSD should not be shared between processes. The P.I.P.S. <codeph>STDEXE</codeph>y
+target type sets this directive automatically. The rule imposes the restriction
+that only one process can load a DLL with WSD. P.I.P.S. provides a mechanism
+to avoid these restrictions. </p> </section>
+<section><title>A UNIX DLL with WSD</title><codeblock xml:space="preserve">int refCount = 0;
+int IncRefCount()
+{
+  //Increment the reference count
+  return ++refCount;
+}
+
+int DecRefCount()
+{
+  //Decrement the reference count
+  return --refCount;
+}
+</codeblock><p/></section>
+<section><title>A Symbian DLL with WSD</title><p>The UNIX code above will
+provide indeterminate results on a Symbian emulator. If the DLL had <codeph>EPOCALLOWDLLDATA</codeph> in
+its MMP file, then only one process would be able to use the reference counting
+functions. Without <codeph>EPOCALLOWDLLDATA</codeph>, the reference count
+would be global and not process specific. </p><p>The following code demonstrates
+the use of the <xref href="GUID-807C676B-5C46-328C-879C-A4FCB638A5B6.dita"><apiname>Pls()</apiname></xref> function (Process Local Storage),
+which is the P.I.P.S. WSD solution to the problem. </p><codeblock xml:space="preserve">#include &lt;pls.h&gt;
+
+#ifdef __WINSCW__
+//The next code will run only on the emulator
+
+//Put the global count into a structure
+struct DLLData
+{
+   int refCount;
+};
+
+//Define a way to access the structure
+//On the first call to this function, memory will be allocated with the specified
+//UID as an identifier and the Initialization function will be called
+//Subsequent calls to this function return the allocated memory
+struct DLLData* GetGlobals()
+{
+   return Pls&lt;DLLData&gt;(KDLLUid3, InitializeGlobals);
+}
+
+//Initialization function
+TInt InitializeGlobals(DLLData* aData)
+{
+   aData-&gt;refCount = 0;
+   return KErrNone;
+}
+
+//Access the refCount variable
+int&amp; get_refCount()
+{
+   return GetClobals()-&gt;refCount;
+}
+
+//Macro to replace the variable with our new method
+#define refCount get_refCount()
+
+#else
+//Target device code
+int refCount;
+
+#endif
+
+int IncRefCount()
+{
+  return ++refCount;
+}
+
+int DecRefCount()
+{
+  return --refCount;
+}
+</codeblock></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E7D29464-05E1-5039-8A02-62CB27B5FF21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E7D29464-05E1-5039-8A02-62CB27B5FF21" xml:lang="en"><title>Cleanup Stack
+Basics</title><shortdesc>Provides tutorials and an introduction to the Cleanup Stack. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E" xml:lang="en"><title>Preview
+pop-up</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>Preview pop-up is a floating component used for displaying more detailed
+data about an item that has focus in the main pane.</p>
+<fig id="GUID-443FE00D-6678-4951-9038-07C82D10B69E">
+<title>Floating preview</title>
+<image href="GUID-F07B3B53-0C4D-4472-8E00-34A4C8501C5E_d0e60397_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The preview is displayed with a 0.6 second delay after the focus is moved
+(for example, scrolling down a list with the Arrow keys) to avoid too rapid
+and continuous flicker. The default timeout for closing the preview pop-up
+is the same as for the Information pop-up, but it is possible to adjust it
+if necessary.</p>
+<p>Preview pop-up contents cannot be scrolled and the component must not contain
+any buttons or other elements that make it appear interactive: the component
+is the same in both standard and touch-enabled devices and should the component
+be used in a standard non-touch device, its elements should not look touch-enabled.
+There can be a maximum of five text rows in a preview pop-up, and it is possible
+to place a small icon in the start of the rows. It is even possible to have
+more than one icon on a row instead of text, if necessary. The number of images
+in a single preview pop-up is limited to one, and it can be accompanied by
+up to two rows of text.</p>
+<p>Preview pop-up shows always duplicate data in a given application to ensure
+that the user will not miss any content or functionality even if a given product
+does not utilize preview pop-up (that is, it has been switched off). Owing
+to the special nature of preview pop-up, it is important to thoroughly consider
+its genuine usefulness in various applications. Furthermore, the component
+should not be confused with the Information pop-up note even though the data
+displayed in these two components can at times be identical.</p>
+<section><title>Preview pop-up in a touch interface</title><p>Preview pop-up
+is a floating component used for displaying more detailed data about an item
+that has the focus in the main pane. It is not a touch-only component, and
+its basic functionality is described above. Although it is not recommended
+to place buttons or other items that appear touch-enabled into the preview
+pop-up, it is still possible to give some items touch-only functions. It is
+up to each application to decide whether to make use of this support in some
+sensible way. For example, a tap on a www hyperlink displayed in the preview
+pop-up would open Browser and open the Web site in question. However, it should
+be noted that using touch-enabled items in the preview pop-up is an advanced,
+heavy-user feature.</p><p>A tap on an item in the preview pop-up can also
+open the stylus pop-up menu, when there is no obvious direct function for
+that item. For more information, see <xref href="GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita">Stylus
+pop-up menu</xref>.</p></section>
+<section><title>Preview pop-up for touch only</title><p>The above section
+describes the general case for touch and the preview pop-up. There is, however,
+a variance possibility for the preview pop-up, which is to limit it strictly
+for touch. In this case, the guideline for having no buttons or other obvious
+touch items in the preview pop-up can be ignored for the most part: if the
+preview pop-up can only be opened with a stylus, it is perfectly acceptable
+to make touch functions plainly touch-enabled.</p></section>
+<section><title>Using preview pop-ups
+in C++ applications</title><p>The API to use for creating the preview pop-up
+component is the Information
+preview popup API.</p><p>Preview popups can be used in two modes: in
+the default mode where the popup is hidden automatically as a result of timeout
+or input event (either a key press or a pointer event), or in permanent mode
+where the popup stays visible until it is dismissed by the application code. </p><p>For
+implementation information, see Using
+the Information Preview Popup API. </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e102739_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E80AA33B-E5E0-5F4B-9A7F-65B357F7161C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E80AA33B-E5E0-5F4B-9A7F-65B357F7161C" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This section details the source text resource file format, and is a useful
+reference for developers in C++ and OPL.</p>
+<p>Topics covered include: the lexical conventions obeyed, the C++ pre-processor
+statements supported, and a description of the native resource compiler statements.</p>
+<p><b>Changes since v5</b> </p>
+<p>Note the following changes since v5:</p>
+<ul>
+<li id="GUID-164E5B5D-84BC-5F04-9020-8FA2BE6FFBA9"><p>UTF8 encoding can be
+used in source files to represent Unicode values.</p> </li>
+<li id="GUID-318004D2-F6F9-5126-9ED5-4ABC73FC2A0E"><p><codeph>TEXT</codeph> resources
+have been deprecated: you should use <codeph>LTEXT</codeph> instead.</p> </li>
+<li id="GUID-D19BD6D2-176B-5958-9BCB-AFEDF407E7B7"><p>Binary compatible is
+broken with Unicode resource files prepared with v5. The handling of Unicode
+string resources (<codeph>TEXT16</codeph> and <codeph>LTEXT16</codeph>) has
+changed to ensure that the Unicode characters are aligned to a multiple of
+2 bytes when the resource is used. </p> </li>
+<li id="GUID-4470E96B-A2AD-5ABC-AB21-B532FC01ECE1"><p>The &lt; number &gt; syntax
+for using special character codes expects a Unicode character value if a Unicode
+resource is being created. The &lt; number &gt; syntax cannot be used to specify
+individual 8-bit values in Unicode resource files.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC" xml:lang="en"><title>How to
+use modifiable buffer descriptor — TBuf&lt;TInt&gt;</title><shortdesc>Modifiable buffer descriptors are useful for holding strings or
+data and providing safe ways to access and modify that data.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-F276E9FE-B839-54ED-9F50-8E45CB094922"><p>For text data, it is
+usual to construct a <codeph>TBuf&lt;TInt&gt;</codeph> type and allow the appropriate
+variant, either a <codeph>TBuf8&lt;TInt&gt;</codeph> or a <codeph>TBuf16&lt;TInt&gt;</codeph> to
+be selected at build time.</p> </li>
+<li id="GUID-9860DB57-62C3-5295-B00E-5F629771FED9"><p>For binary data, an
+explicit <codeph>TBuf8&lt;TInt&gt;</codeph> is used.</p> </li>
+<li id="GUID-34C95FAB-0F58-5B61-B9FC-A31588855F96"><p>It is rare to use an
+explicit <codeph>TBuf16&lt;TInt&gt;</codeph>.</p> </li>
+</ul>
+<p>Although, the following notes refer to the build independent types; they
+are equally valid for the explicit 8 bit and 16 bit types.</p>
+<section id="GUID-824524FB-98B7-4CDA-A3FD-233C7C0DDD5F"><title>Constructing
+a TBuf&lt;TInt&gt;</title> <p>A modifiable buffer descriptor can be constructed
+in a number of ways:</p> <ul>
+<li id="GUID-BCFAA769-D038-5A09-B6BF-586C93F08B0B"><p>as an empty buffer descriptor.</p> </li>
+<li id="GUID-9DE61358-D6B9-54CA-9FED-11AC29443093"><p>as an empty buffer descriptor
+but giving it a length.</p> </li>
+<li id="GUID-50FB7967-79C8-5F8C-8569-36B40D14894E"><p>by copying data from
+any other type of descriptor.</p> </li>
+<li id="GUID-26E1FDDC-F0BB-5441-8F81-EF2CFA61787A"><p>by copying data from
+another modifiable buffer descriptor of the same size.</p> </li>
+</ul> <p>The following code fragment constructs a <codeph>TBuf&lt;16&gt;</codeph> object.
+The buffer descriptor is uninitialised, i.e. it contains no data. The assignment
+operator or the <codeph>Copy()</codeph> function can be used to put data into
+the buffer descriptor after construction:</p> <codeblock id="GUID-01CA390C-ECC4-56C2-A1F6-F62C2AA75E57" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBuf&lt;16&gt; buf1; // length of buf1 is 0
+...
+buf1 = KText;  // data assigned</codeblock> <p>The source descriptor is a
+literal which is converted to descriptor type.</p> <p>The following code fragment
+constructs a <codeph>TBuf&lt;16&gt;</codeph> object and sets it length to 12.
+No data is assigned into the descriptor.</p> <codeblock id="GUID-FA8A1FE8-7809-5E28-B3EB-420B405DDC32" xml:space="preserve">...
+TBuf&lt;16&gt; buf1(12); // length of buf1 is 12
+...</codeblock> <p>The following code fragment constructs a <codeph>TBuf&lt;16&gt;</codeph> object,
+initialised with the 12 characters making up the English language phrase "Hello
+World!".</p> <codeblock id="GUID-74B4614D-4273-5F9E-8A2D-1E9A8A3960D8" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBuf&lt;16&gt; buf1(KText);</codeblock> <p>The following code fragment constructs
+a <codeph>TBuf&lt;16&gt;</codeph> object from another <codeph>TBuf&lt;16&gt;</codeph> object.
+This is, in effect, copy construction.</p> <codeblock id="GUID-BE55436F-FDB8-5768-947F-801D02FDA631" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBuf&lt;16&gt; buf1(KText);
+TBuf&lt;16&gt; buf2(buf1);   // buf2 constructed from the data in buf1</codeblock> <p>In
+both of these cases, the resulting length of the descriptor is 12.</p> <p>A
+non-modifiable buffer descriptor can also be constructed from 'C' style zero
+terminated string. However, this is rarely necessary but may make it easier
+to port legacy 'C' code.</p> </section>
+<section id="GUID-8A534041-1730-43FB-8FCD-4C5BFDAAE730"><title>Replacing data</title> <p>Data
+within a modifiable buffer descriptor can be completely replaced through the
+assignment operator or by using the <codeph>Copy()</codeph> function.</p> <codeblock id="GUID-D990C115-DD84-5E04-89DA-F483A63D03FA" xml:space="preserve">_LIT(KText,"Hello World!");
+_LIT(KNewText,"New text");
+_LIT(KReplaced,"Replaced");
+...
+TBuf&lt;16&gt; buf1(KText);
+TBuf&lt;16&gt; buf2;
+...
+buf2 = buf1;               // buf2 now contains "Hello World!"
+...
+buf2 = KNewText;           // buf2 now contains "New text".
+                           // the literal is converted to a descriptor
+                           // type.
+buf2.Copy(KReplaced);      // buf2 content replaced using Copy()</codeblock> </section>
+<section id="GUID-E49444E0-457E-4645-A1D5-C350FF998F9A"><title>Accessing and
+changing data</title> <p>Once a modifiable buffer descriptor has been constructed,
+the functions in the base classes, <codeph>TDesC</codeph> and <codeph>TDes</codeph>,
+are available to be access and change the data.</p> <codeblock id="GUID-386035F7-1C0F-5CB3-BA5B-5E0EF18DF6F8" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);
+...
+buf1.Length();</codeblock> <p>and</p> <codeblock id="GUID-7BCC4118-4294-5607-A92B-5DBA9E68CBEE" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);   // length is 12 
+...
+buf1.Delete(6,6);        // length is now 6, leaving "Hello" in
+                         // the buffer</codeblock> </section>
+<section id="GUID-970BCE5F-CC4D-4F60-91A9-6107975E9C3F"><title>Illegal access
+causing an exception</title> <p>The following code fragment raises a panic
+because of an attempt to assign too much data. The maximum length of the buffer
+descriptor is 16 but the length of the data to be copied is 31:</p> <codeblock id="GUID-38DC46A1-E2A0-52DD-A821-F0D6B2C45430" xml:space="preserve">_LIT(KText,"Hello World! The sun is shining");
+...
+TBufC&lt;16&gt; buf1(KText);</codeblock> <p>The following code fragment raises
+a panic because of an attempt to delete data outside the boundary defined
+by the descriptor:</p> <codeblock id="GUID-71FB3EFC-BFBA-5072-ADD2-3471E2A08D0C" xml:space="preserve">_LIT(KText,"Hello World!");
+...
+TBufC&lt;16&gt; buf1(KText);
+buf1.Delete(99,1);</codeblock> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722.dita">Literal Descriptors</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E8266924-FA52-5171-BD73-423A46227A74.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E8266924-FA52-5171-BD73-423A46227A74" xml:lang="en"><title> Descriptor
+Arrays</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A descriptor array is a mechanism which allows descriptors to be aggregated
+in a convenient way. </p>
+<section><title>Introduction</title> <p>Descriptor arrays build on the behaviour
+supplied by the Dynamic Arrays API and provides normal array operations for
+inserting, appending, deleting, and accessing elements. </p> <p>There are
+two types of descriptor array, based on the way data is represented by the
+array: </p> <ul>
+<li id="GUID-798A2774-299C-5078-9F48-588AC1EE8143"><p>an array whose elements
+consist of non-modifiable pointer descriptors. </p> </li>
+<li id="GUID-D456390C-34ED-5908-B188-73F55C26559C"><p>an array whose elements
+consist of memory pointers. </p> </li>
+</ul> <p>Either array can be used to represent descriptor data. The difference
+between them is based on the way they are implemented, and this determines
+which one is most suitable for a given situation. </p> <p> <b>NOTE</b>: All
+array classes are provided in variants for narrow and wide characters (for
+example, <xref href="GUID-5C0DD165-5C23-38C0-983E-B856F9F46F12.dita"><apiname>CDesC8Array</apiname></xref> and <xref href="GUID-9EC9CD13-91FB-38F7-9E55-F41C584AC5A6.dita"><apiname>CDesC16Array</apiname></xref>).
+These concrete types can be used directly, but it is usual to use typedefs
+(for example, <xref href="GUID-1ABD9C74-01F0-3144-9E5C-550E83F4D424.dita"><apiname>CDesCArray</apiname></xref>) that are conditionally defined
+to map to the wide or narrow characters depending on the build. Only the conditional
+types are used below. </p> <p>Descriptor arrays has three key concepts - descriptor
+array protocol (<codeph>MDesC16Array</codeph>), general descriptor array (<codeph>CDesC16Array</codeph>)
+and pointer descriptor array (<codeph>CPtrC16Array</codeph>). </p> <p><b>Descriptor
+array protocol</b> </p> <p>This array defines an interface implemented by
+all descriptor array classes, and hence provides a degree of polymorphism.
+It provides a count function, and can return a <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> for
+an indexed element. </p> <p>The interface is defined by <xref href="GUID-B732E017-EFD5-36BD-B633-7DE2DC57FFA2.dita"><apiname>MDesCArray</apiname></xref>. </p> <p><b>General
+descriptor array</b> </p> <p>This array accepts elements of any descriptor
+type. For each descriptor added, it creates a new heap descriptor (<xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>)
+and copies the contents into it. </p> <p>The base class is <xref href="GUID-1ABD9C74-01F0-3144-9E5C-550E83F4D424.dita"><apiname>CDesCArray</apiname></xref>.
+Derived classes provide storage in flat arrays (<xref href="GUID-29384669-FFCE-38FC-A005-61163D99401D.dita"><apiname>CDesCArrayFlat</apiname></xref>)
+and segmented arrays (<xref href="GUID-1B44227C-6F11-3A51-BE2C-8780319C6F72.dita"><apiname>CDesCArraySeg</apiname></xref>). </p> <p><b>Pointer
+descriptor array</b> </p> <p>This array holds only <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> descriptor
+elements, that is, the descriptor type that points to data stored elsewhere.
+The data pointed to by the <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> descriptors is not copied
+or moved. </p> <p>The pointer descriptor array is <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref>.
+It implements <xref href="GUID-B732E017-EFD5-36BD-B633-7DE2DC57FFA2.dita"><apiname>MDesCArray</apiname></xref>, and can be used polymorphically
+with general descriptor arrays. </p> </section>
+<section><title>Array of non-modifiable pointer descriptor elements</title> <p>The
+array is supplied in two variants: </p> <ul>
+<li id="GUID-B55063AC-A34D-5156-B35A-085BADDD66B2"><p>the 16-bit variant <xref href="GUID-3A648EBA-DD13-31A8-863C-602D84E1913D.dita"><apiname>CPtrC16Array</apiname></xref> containing <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref> types. </p> </li>
+<li id="GUID-E51F01E9-4956-5E0A-A422-4A5A1E7B642C"><p>the 8-bit variant <xref href="GUID-421D5F30-909F-39AC-A945-F1AE4B401E2F.dita"><apiname>CPtrC8Array</apiname></xref> containing <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref> types. </p> </li>
+</ul> <p>The array is also supplied as a build independent type, <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref>.
+This is used whenever the descriptor elements are used to represent text strings.
+By using the build independent type, the appropriate variant, either 16-bit
+or 8-bit, is selected at build time depending on whether the <codeph>_UNICODE</codeph> macro
+has been defined or not. </p> <p>Binary data always requires the 8-bit variant,
+regardless of the build, and this should be explicitly used in program code. </p> <p>Explicit
+use of the 16-bit variant is rare. </p> <p>The elements of this type of array
+consist of non-modifiable pointer descriptors. These pointer descriptors represent
+the data of the descriptors added to the array. The following diagram illustrates
+this. The diagram is also true for <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref> and <xref href="GUID-8FE95467-D48B-3E61-9028-29C0F15F567E.dita"><apiname>TPtrC16</apiname></xref>. </p> <fig id="GUID-AB7B77C5-31BC-5DD0-B1FC-D02436E18D14">
+<title>              Array of non-modifiable pointer descriptor elements 
+          </title>
+<image href="GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e154167_href.png" placement="inline"/>
+</fig> <p> <b>NOTE:</b> <xref href="GUID-B24BD746-98D1-3837-B834-5C12D4D516FC.dita"><apiname>delete()</apiname></xref> and <xref href="GUID-FA50BA77-E578-3652-B1FB-AD2D0523CC17.dita"><apiname>reset()</apiname></xref> removes
+the non-modifiable pointer descriptors from the array but does <b>not</b> delete
+the data or descriptors that they point to. </p> </section>
+<section><title>Array of pointer elements</title> <p>The elements of this
+type of array consist of <b>pointers</b> to heap descriptors. </p> <p>When
+a descriptor is added to this type of array, a heap descriptor is allocated,
+taking its data from the supplied descriptor. The pointer to this heap descriptor
+is added as an array element. The following diagram illustrates this. The
+diagram is also true for <xref href="GUID-2A528453-0279-3E47-838C-F8A8D29B88F1.dita"><apiname>HBufC8</apiname></xref> and <xref href="GUID-3D3D9CD7-C8FD-3F81-9CC5-1A71D4F9751E.dita"><apiname>HBufC16</apiname></xref>. </p> <fig id="GUID-D6B993E5-AF6B-5AD2-A30F-834C6815EFEF">
+<title>              Array of pointer elements            </title>
+<image href="GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e154214_href.png" placement="inline"/>
+</fig> <p>There are two implementations of the array, one using a flat buffer
+and the other using a segmented buffer. </p> <p>The flat buffer implementation
+is supplied in two variants: </p> <ul>
+<li id="GUID-8E031CC3-AC57-5882-A96A-40F041543714"><p>the 16-bit variant implemented
+using a flat buffer, a <xref href="GUID-0DF28074-4B76-3767-9FD8-EADF36E3EA14.dita"><apiname>CDesC16ArrayFlat</apiname></xref>, constructed from <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> types. </p> </li>
+<li id="GUID-53DE0372-9FE8-55F8-A358-7062CA7FC37A"><p>the 8-bit variant implemented
+using a flat buffer, a <xref href="GUID-A774AF80-82C3-3031-A197-5625DACD60FE.dita"><apiname>CDesC8ArrayFlat</apiname></xref>, constructed from <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> types. </p> </li>
+</ul> <p>The segmented buffer implementation is supplied in two variants: </p> <ul>
+<li id="GUID-DAEB51F2-19D5-5BC8-95DA-0375AC759C57"><p>the 16-bit variant implemented
+using a segmented buffer, a <xref href="GUID-F2998F7B-DFB1-3EDA-A6FF-1F3B2065DE4D.dita"><apiname>CDesC16ArraySeg</apiname></xref>, constructed
+from <xref href="GUID-440FF2B4-353B-3097-A2BA-5887D10B8B23.dita"><apiname>TDesC16</apiname></xref> types. </p> </li>
+<li id="GUID-0880573C-40D7-5C27-A2DB-5B9FF808E670"><p>the 8-bit variant implemented
+using a segmented buffer, a <xref href="GUID-DFC1F01A-A107-3C7F-883A-6C4F11859E1C.dita"><apiname>CDesC8ArraySeg</apiname></xref>, constructed
+from <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita"><apiname>TDesC8</apiname></xref> types. </p> </li>
+</ul> <p>Both array implementations are also supplied as build independent
+types, <xref href="GUID-29384669-FFCE-38FC-A005-61163D99401D.dita"><apiname>CDesCArrayFlat</apiname></xref> and <xref href="GUID-1B44227C-6F11-3A51-BE2C-8780319C6F72.dita"><apiname>CDesCArraySeg</apiname></xref>.
+These are used whenever the descriptors are used to represent text strings.
+By using the build independent types, the appropriate variants, either 16-bit
+or 8-bit, are selected at build time depending on whether the <codeph>_UNICODE</codeph> macro
+has been defined or not. </p> <p>Binary data always requires the 8-bit variants,
+regardless of the build, and this should be explicitly used in program code. </p> <p>Explicit
+use of the 16-bit variants is rare. </p> <p> <b>NOTE:</b>  <xref href="GUID-B24BD746-98D1-3837-B834-5C12D4D516FC.dita"><apiname>delete()</apiname></xref> and <xref href="GUID-FA50BA77-E578-3652-B1FB-AD2D0523CC17.dita"><apiname>reset()</apiname></xref> removes
+the pointers from the array and also deletes the heap descriptors that they
+point to. </p> </section>
+<section><title>Type of array to be used</title> <p>The advantages of using
+one type over the other are subtle. </p> <p>When using an array of non-modifiable
+pointer descriptors, the data represented by each <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> exists
+independently of the <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> itself. The memory required
+by the array is that required to contain the <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> elements.
+The data represented by the <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> descriptors is not copied
+or moved. On the other hand, that same data must be guaranteed to remain in
+memory if the array is to have any purpose. </p> <p>When using an array of
+pointers, a new heap descriptor is allocated for each descriptor to be added
+to the array. This increases the total memory requirements of the array. On
+the other hand, each array element is smaller because the size of a pointer
+is slightly smaller than the size of a <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> object. The
+original descriptor data can also be safely discarded once it has been added
+to the array. </p> <p>This type also has the advantage that there is no commitment
+to a concrete descriptor type. </p> </section>
+<section><title>Relationship between descriptor array classes</title> <p>The
+following diagram illustrates the relationship between the descriptor array
+concrete classes and the base classes which support them. </p> <fig id="GUID-43444E8B-F2F5-539B-BA9D-EDF9B832DFD9">
+<title>              The class relationships for CDesCArrayFlat &amp; CDesCArraySeg
+           </title>
+<image href="GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e154368_href.png" placement="inline"/>
+</fig> <p> </p> <fig id="GUID-3BD4A73F-1E09-515A-9833-6D9592A98E97">
+<title>              The class relationships for CPtrCArray            </title>
+<image href="GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e154379_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-9948A6D4-19A2-58A2-B2F1-73EC577E1B0B"><title>Copying Descriptor
+Arrays </title> <p>An array of non-modifiable pointer descriptors, a <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref> type,
+provides a function which can copy elements from any descriptor array. </p> <p>The
+source descriptor array must be one which satisfies the protocol defined by
+the <xref href="GUID-B732E017-EFD5-36BD-B633-7DE2DC57FFA2.dita"><apiname>MDesCArray</apiname></xref> mixin class. Add the new <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> elements
+to the <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref> array to represent the source data. </p> <p>The
+implementation of the copy does not and cannot depend on the type of the source
+descriptor array,that is, whether it is a <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref> type
+or a <xref href="GUID-1ABD9C74-01F0-3144-9E5C-550E83F4D424.dita"><apiname>CDesCArray</apiname></xref> type. However, the following diagram shows
+the effect of the copy operation based on the concrete type of the source
+array. </p> <fig id="GUID-E320FF9E-CBCA-597C-AE3B-8480A0829EF7">
+<title>              Copying descriptor arrays            </title>
+<image href="GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e154425_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-009C368B-80E3-523B-BC4A-12BB90244CE1"><title>8-Bit Variant,
+16-Bit Variant and Build Independence</title> <p>Descriptor arrays are supplied
+in two variants: </p> <ul>
+<li id="GUID-7819B939-C7C0-5117-812D-B2D05D7650D4"><p>the 16-bit variant for
+16-bit descriptors. These descriptors are used for handling Unicode strings
+and double byte valued data. </p> </li>
+<li id="GUID-A1DCAB83-37F6-51ED-8AEA-0EFE361BE107"><p>the 8-bit variant for
+8-bit variant descriptors. These descriptors are used for handling non-Unicode
+strings and single byte valued data. (binary data). </p> </li>
+</ul> <p>Descriptor arrays are also supplied as build independent types. These
+are used for descriptors which are used to represent text strings. </p> <p>By
+using build independent types, the appropriate variant, either 16-bit or 8-bit,
+is selected at build time depending on whether the <codeph>_UNICODE</codeph> macro
+has been defined or not. </p> <p>Binary data always requires the 8-bit variant
+regardless of the build, and it must be explicitly used in program code. Explicit
+use of the 16-bit variant is rare. With a few exceptions, the behaviour of
+both 8-bit and 16-bit variants is the same. </p> </section>
+<section id="GUID-A8D3CD4B-9069-5B98-ADBA-2272F597DE4D"><title>The MDesCArray
+mixin class</title> <p>The <codeph>MDesCArray</codeph> class is a mixin which
+defines a protocol for: </p> <ul>
+<li id="GUID-21092598-F289-5A57-BA93-48F23EF788AF"><p>returning the number
+of elements in a descriptor array </p> </li>
+<li id="GUID-0FAE184F-6D54-5CFF-858C-2A75F70D3969"><p>returning a non-modifiable
+pointer descriptor, a <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> type representing a specific
+indexed element. </p> </li>
+</ul> <p>The use of the mixin permits a degree of polymorphism amongst the
+descriptor array classes. It permits the number of descriptor array elements
+to be returned and a <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> type for a specific descriptor
+array element to be returned without knowing the specific concrete descriptor
+array type being accessed. </p> <p id="GUID-DA93F261-9E35-5073-AA06-3991B9B1AA35"><b>MDesCArray
+example</b> </p> <p>The following code fragments illustrate how the <xref href="GUID-B732E017-EFD5-36BD-B633-7DE2DC57FFA2.dita"><apiname>MDesCArray</apiname></xref> mixin
+class is used to return: </p> <ul>
+<li id="GUID-6262BE55-0B74-5779-AEB6-94357104051C"><p>the number of descriptor
+elements in a descriptor array. </p> </li>
+<li id="GUID-4D7F6F00-301C-534F-901E-85DB9847E9FF"><p>a <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref> representing
+a specific indexed descriptor element. </p> </li>
+</ul> <p>The code uses the build independent forms but the code is equally
+valid while using the explicit 8-bit or 16-bit variants. </p> <p>In this case, <xref href="GUID-29384669-FFCE-38FC-A005-61163D99401D.dita"><apiname>CDesCArrayFlat</apiname></xref>, <xref href="GUID-1B44227C-6F11-3A51-BE2C-8780319C6F72.dita"><apiname>CDesCArraySeg</apiname></xref> and <xref href="GUID-FC3F3E4A-C86C-3DDB-B851-538BF20D5B27.dita"><apiname>CPtrCArray</apiname></xref> can be handled by the single function <codeph>foo()</codeph>. </p> <codeblock id="GUID-83C3574E-9FA6-57A3-AD5E-58705C6F5A68" xml:space="preserve"> ...
+ CDesCArrayFlat* descflat = new( ELeave ) CDesCArrayFlat( 4 );
+ CDesCArraySeg*  descseg  = new( ELeave ) CDesCArraySeg( 4 );
+ CPtrCArray*     ptrc     = new( ELeave ) CPtrCArray( 4 );
+ ...
+ ... // add descriptor elements to all three arrays
+ ...
+ foo( descflat );
+ foo( descseg );
+ foo( ptrc );
+ ...</codeblock> <codeblock id="GUID-CF9F694C-2175-5DAF-9666-C34E097B9992" xml:space="preserve">void foo( MDesCArray* anArray )
+    {
+    ..
+    TInt  somenumber = anArray-&gt;MdcaCount();
+    TPtrC someptrc   = anArray-&gt;MdcaPoint( someindexvalue );
+    ..
+    }</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-685CF352-372F-5393-97AF-1FA17DC57BA8.dita"><linktext>Constructing
+descriptor                 arrays</linktext></link>
+<link href="GUID-E3F403EE-717B-5EA6-BC4E-6840097CAC10.dita"><linktext>Using Dynamic
+Arrays</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E82FABA9-9CCC-548F-99DB-EF2B9036B405.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E82FABA9-9CCC-548F-99DB-EF2B9036B405" xml:lang="en"><title>Colour
+Palette Component</title><shortdesc>The Colour Palette component provides palette support to the GDI
+and Font and Bitmap Server. A palette is a set of colors, which is a subset
+of the full range of colors. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Colour Palette was previously used to index the colors used on phones
+that displayed a limited set of colors—for example, 16 colors. However, the
+Colour Palette is no longer used in this way now that phones can display 16
+million colours. </p>
+<p>The CBR package name for the Colour Palette component is <filepath>graphics_palette</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics
+Device Interface (GDI)                 Collection</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-E849C798-07A0-47B3-BDBF-203325062FBD" xml:lang="en"><title>Menu
+bar resource statements</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>To define <xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">resources</xref> for
+an <b>Options</b> menu:</p>
+<ol>
+<li id="GUID-BD81AFF3-A049-40D9-9760-F2F085AED1A4"><p>Determine
+the requirements of your application.</p></li>
+<li id="GUID-94A35B51-023B-44BE-AAC9-F1CFF7BFF4CD"><p>Declare the <parmname>MENU_BAR</parmname> and <parmname>MENU_TITLE</parmname> resource
+statements:</p>
+<itemgroup>
+<ul>
+<li><p>Depending on your application's structure, declare <parmname>menubar
+= r_name4</parmname> in either the <xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita"><parmname>EIK_APP_INFO</parmname></xref> or <xref href="GUID-B238952B-1691-49F4-B8B9-9F755011A7DD.dita"><parmname>AVKON_VIEW</parmname></xref> statements,
+where <parmname>r_name16</parmname> is a unique identifier in your application.</p>
+</li>
+<li id="GUID-B497E2C9-34D0-4037-A6B2-C097866F2F94"><p>Create a resource
+statement for the menu bar.</p>
+<itemgroup>
+<p> The syntax is as follows:</p>
+<codeblock xml:space="preserve" id="GUID-61B67E85-1772-4164-9ACF-85B327C74DD7">RESOURCE MENU_BAR r_name4
+{
+	titles = 
+		{
+		MENU_TITLE
+			{
+			menu_pane = r_name5;
+			}
+		};
+	}</codeblock>
+<p>,where:</p>
+<ul>
+<li><p><parmname>r_name4</parmname> is the resource name that uniquely
+identifies this RESOURCE statement in the application.</p></li>
+<li><p><parmname>titles</parmname> is the name defined for an array
+that contains the menu titles for the menu bar.</p></li>
+<li><p><parmname>MENU_TITLE</parmname> is a structure defined in <parmname>eikon.rh</parmname>.</p>
+</li>
+</ul>
+<p>Note that you may add as many <parmname>MENU_TITLE</parmname> structures
+as you desire. The application framework combines them together when constructing
+the <parmname>Options</parmname> menu. This feature allows you to break your <parmname>Options</parmname> menu
+up into different segments, which may be useful when constructing context
+sensitive <parmname>Options</parmname> menus. For more information, see <xref href="GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita">Using
+menu sections in menu bar resource statements</xref></p>
+</itemgroup>
+</li>
+</ul>
+</itemgroup>
+</li>
+<li id="GUID-F7CFC868-BB05-4069-994F-C988D5AA0D80"><p>Create a resource
+statement for the <parmname>MENU_PANE</parmname> resource:</p>
+<itemgroup>
+<p>The <parmname>MENU_PANE</parmname> resource is defined in <parmname>eikon.rh</parmname>,
+and contains an array of items defined by the <parmname>MENU_ITEM</parmname> structure.
+The syntax is as follows:</p>
+<codeblock xml:space="preserve" id="GUID-2C3D5C7A-6D34-42EB-9E3D-C9266F8678C4">RESOURCE MENU_PANE r_name5
+{
+	items =
+	{
+	MENU_ITEM
+		{
+		command = enumerated command;
+		txt = STRING_r_string1;
+		},
+	MENU_ITEM
+		{
+		command = enumerated command other;
+		txt = STRING_r_string2;
+		}
+	};
+}</codeblock>
+<p>, where:</p>
+<ul>
+<li><p><parmname>r_name5</parmname> is the resource name that uniquely
+identifies this resource statement in this application.</p></li>
+<li><p><parmname>items</parmname> is the name defined for an array
+that contains the items for the menu pane.</p></li>
+<li><p><parmname>MENU_ITEM</parmname> is a structure defined in <parmname>eikon.rh</parmname>.
+The <parmname>MENU_ITEM</parmname> structure is used to define the option
+presented. The typical syntax is as follows:</p>
+<itemgroup>
+<codeblock xml:space="preserve" id="GUID-475D1731-8639-4BD4-9F17-6FAC1EB215E9">MENU_ITEM
+	{
+	command = enumerated command;
+	txt = STRING_r_string1;
+	}
+</codeblock>
+<p>, where:</p>
+<ul>
+<li><p><parmname>command</parmname> is an enumerated value for the
+command that is associated with the button. The value used can be provided
+either by the <xref href="GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita">underlying
+S60 platform</xref> or by <xref href="GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita">your
+application</xref>. The are collected by the event loop of the application
+framework and delivered to your application for <xref href="GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita">command
+handling</xref></p></li>
+<li><p><parmname>txt</parmname> defines the text that is displayed
+in the <parmname>Options</parmname> menu.</p></li>
+</ul>
+</itemgroup>
+</li>
+</ul>
+</itemgroup>
+</li>
+<li id="GUID-26312EAA-942A-4CD3-9A20-3EA99E1F296E"><p>Create submenus
+as needed:</p>
+<itemgroup>
+<p>Menu panes can also be nested by using the cascade declaration. </p>
+<p>The following example creates a menu pane with two items, each of which
+opens up another menu pane as a submenu.</p>
+<codeblock xml:space="preserve" id="GUID-BD6B4F0B-652C-4214-BC0C-0045C130E905">RESOURCE MENU_PANE r_name7
+	{
+	items =
+		{
+		MENU_ITEM
+			{
+			cascade = r_name8;
+			txt = STRING_r_string3;
+			},
+		MENU_ITEM
+			{
+			cascade = r_name9;
+			txt = STRING_r_string4;
+			}
+		};
+	}</codeblock>
+<p>The resource statements for <parmname>r_name8</parmname> and <parmname>r_name9</parmname> need
+to be defined in a menu pane structure in the resource file.</p>
+<p><parmname>txt</parmname> defines the text that is displayed in the <parmname>Options</parmname> menu.</p>
+<p>Note that it is also possible to have icons associated with the menu
+items in the pane.</p>
+</itemgroup>
+</li>
+</ol>
+<p>The Options
+Menu API provides access to the <parmname>MENU_BAR</parmname> resource.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e241289_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E865E677-1219-500C-89CF-0A2835B91834.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E865E677-1219-500C-89CF-0A2835B91834"><title>Semaphores Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Synchronises co-operation between threads. </p> </section> <section><title>Architectural relationships</title> <p>Every thread in Symbian OS automatically has a semaphore called a <i>thread request semaphore</i>. It is the underlying mechanism by which a thread is put in a waiting state until an asynchronous request completes.</p> <p>The thread request semaphore is accessed through the System Static Functions API.</p> </section> <section><title>Description</title> <p>A semaphore restricts the number of simultaneous users of a shared resource up to a maximum number. Threads can request access to the resource (decrementing the semaphore), and can signal that they have finished using the resource (incrementing the semaphore).</p> <p>A thread that requests access to a busy resource is put in a waiting state. The semaphore maintains a FIFO queue of such waiting threads. When another thread increments the semaphore, the first thread in this queue is resumed.</p> <p>Semaphores are Kernel objects and, as such, are managed by the Kernel, and accessed by user programs through handles. </p> <p>The semaphore handle is provided by <xref href="GUID-AED27A76-3645-3A04-B80D-10473D9C5A27.dita"><apiname>RSemaphore</apiname></xref>.</p> <p><xref href="GUID-F3ACDC41-31EE-3C32-BE2C-D696B84931CD.dita"><apiname>TFindSemaphore</apiname></xref> is used for finding a semaphore created by another process.</p> </section> <section><title>See also</title> <p><xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous Services Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System Static Functions Overview</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E87018CD-01B4-5886-87FC-CD25EE90587D"><title>Central Repository Transactions</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes the concepts of Central Repository transactions. </p> <section><title>Overview of transactions </title> <p>In a typical use case, a repository is accessed by several different applications for different purposes such as reading, updating, caching and backing up. These applications are regarded as having a client-server relationship with the repository. When multiple applications can access a repository there is a danger of concurrent write operations corrupting the data. To prevent this, applications access repositories within sessions and perform operations on a repository within subdivisions of a session called transactions. The concept of a transaction is borrowed from database programming and is designed to ensure that only one application can modify a repository at any one time. Operations performed within a transaction are virtual, operating on a copy of the repository, until the transaction is successfully committed and the actual repository is modified. Transactions conform to a model which prevents them from being committed concurrently, so maintaining data integity. </p> <p>Only the following operations are permitted within a transaction: </p> <ul><li id="GUID-A1CFE73C-6248-5B8E-A5F8-5125786EAF64"><p>Find() </p> </li> <li id="GUID-4D0AEFB5-FB08-591F-BA24-098E832B6FE0"><p>Get() </p> </li> </ul> <ul><li id="GUID-6001550D-DC06-5767-A03C-F6677D895ECF"><p>Set() </p> </li> <li id="GUID-28F16F3E-502D-52C1-A157-621EE4307466"><p>Create() </p> </li> <li id="GUID-9E98BC2F-5E94-51EA-8FE7-DDADE388AE21"><p>Delete() </p> </li> <li id="GUID-42BC1D3F-1CE7-5F76-8B9F-9276892D86BC"><p>Move() </p> </li> </ul> <p>Transactions are either synchronous or asynchronous. As the programmer you are responsible for avoiding errors such as beginning a transaction within a transaction which will cause a leave. You do this by conforming to a transaction model. </p> <p>The recommended transaction model is the optimistic non-serialised transaction model. It works on the principle that any number of clients may start a transaction at the same time, but as soon as one transaction is committed, any other transactions fail and must be started again. </p> <p>A session is in various states: </p> <ul><li id="GUID-F0C23BCF-6528-5112-AB35-BEA53D7EA5EF"><p>Not in transaction </p> </li> <li id="GUID-27922FAA-BF3F-5C06-9810-FE20C41474E1"><p>Active </p> </li> <li id="GUID-720E56F0-477D-5C4E-8FA3-7EEABDE0E718"><p>Failed </p> </li> </ul> <p>An asynchronous transaction involves two other states: </p> <ul><li id="GUID-17470F86-6FE8-5998-B7CA-546988BDE132"><p>Pending start </p> </li> <li id="GUID-7AB3E6B9-51C6-56ED-82E8-FF1A1805C54E"><p>Pending commit </p> </li> </ul> </section> <section><title>Synchronous transactions </title> <p>A synchronous transaction has the following structure. </p> <ul><li id="GUID-DE7AA608-AC0C-53BF-A009-3D179621193C"><p>A session is initially in the state Not in transaction. </p> </li> <li id="GUID-178E4E88-02C6-5869-B344-514C14FBDB4F"><p>Call the synchronous form of <xref href="GUID-2FE14318-A0C6-37F9-A359-85D353D94F68.dita"><apiname>StartTransaction()</apiname></xref> with the single parameter EConcurrentReadWriteTransaction. </p> </li> <li id="GUID-91D3A638-114B-5DCA-8FB0-35B554797194"><p>The session changes state to Active. </p> </li> <li id="GUID-C32289CB-8EA9-53E0-84DD-881FCDC5FF99"><p>Manipulate the repository with the functions <xref href="GUID-890C741F-EC69-30E3-AA89-CE35B3DE481F.dita"><apiname>Get()</apiname></xref> <xref href="GUID-2F459F8B-0464-33BF-BB95-DF0648A5C6ED.dita"><apiname>Set()</apiname></xref> <xref href="GUID-3D9FBB4B-907F-33BC-9C90-5A896FBEE290.dita"><apiname>Find()</apiname></xref> etc covered above. </p> </li> <li id="GUID-2F9FA0A5-7624-5300-819D-45562AF5FFDA"><p>The session continues in the Active state. The changes to the repository are cached but not actually applied during the Active state. You then either revoke or persist the changes. </p> </li> <li id="GUID-39F7530F-E9D9-5938-B9EB-B0AF8768E16F"><p>To revoke the changes, call <xref href="GUID-E7D1327D-70BF-380E-8798-455FD9F4AAE0.dita"><apiname>CancelTransaction()</apiname></xref>  </p> </li> <li id="GUID-B21F7C3F-E960-571A-A98E-933B96FA14D0"><p>The session returns to Not in transaction. </p> </li> <li id="GUID-6C4EF9E4-CE0A-542B-A564-72B6FF2BECB1"><p>To persist the changes, call the synchronous form of <xref href="GUID-DC938A94-1C71-3D9D-A4C0-45D5655F9F3A.dita"><apiname>CommitTransaction()</apiname></xref> with the parameter <xref href="GUID-A67CA4BD-6F1F-3B0D-962C-4A78BBE80402.dita"><apiname>aKeyInfo</apiname></xref> of type <xref href="GUID-F58A1C0D-1B36-37EA-8012-1C74B2D12CAD.dita"><apiname>TUint32</apiname></xref> This function returns success or an error message and its parameter holds information about the transaction. On success, the parameter holds the number of settings which were changed. On failure, the parameter holds the settings which caused failure in the form of a key or partial key. </p> </li> <li id="GUID-FD7629FE-C6AF-5F65-9376-353ADD2B87F7"><p>On success the session returns to Not in transaction. On failure it enters the Failed state. When a transaction fails, the operations already performed are discarded and no subsequent operations can reverse the failure. </p> </li> <li id="GUID-0BBDE613-761D-54F2-894B-3BEEAB587A95"><p>If the reason for failure was the success of another transaction, the error message is <xref href="GUID-CF080900-A9A4-391E-AC95-B93EBFB23DE3.dita"><apiname>KErrLocked</apiname></xref> and the session is Not in transaction. You try the same sequence of function calls until you get a successful commit. </p> <p>If there was some other reason for failure you must close the transaction yourself. To do this, either call <xref href="GUID-E7D1327D-70BF-380E-8798-455FD9F4AAE0.dita"><apiname>CancelTransaction()</apiname></xref> or else call <xref href="GUID-DC938A94-1C71-3D9D-A4C0-45D5655F9F3A.dita"><apiname>CommitTransaction()</apiname></xref> a second time. </p> <p>There is sometimes reason to fail the transaction deliberately by calling <xref href="GUID-D4178000-A2A4-3B22-B984-530DD5EC75EE.dita"><apiname>FailTransaction()</apiname></xref> For instance you might want to generate failure after an unsuccessful <xref href="GUID-890C741F-EC69-30E3-AA89-CE35B3DE481F.dita"><apiname>Get()</apiname></xref> operation and then cancel the transaction. </p> </li> </ul> <fig id="GUID-B2011974-4A4F-58B4-BDCD-CAFBAC4E52A7"><title>
+             Synchronous transaction state diagram 
+          </title> <image href="GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e330986_href.png" placement="inline"/></fig> </section> <section><title>Asynchronous transactions</title> <p>Synchronous transactions have the disadvantage that a busy server may block the client thread before any action takes place. To avoid this problem you can use the slightly more complicated asynchronous transactions. An asynchronous transaction has the same structure as a synchronous one except that there are two new states Pending Start and Pending Commit where a transaction waits until the server is ready to communicate with it. The transition from Not in transaction to Active now proceeds like this. </p> <ul><li id="GUID-A90153AE-A050-5721-9513-DD9753B1DF61"><p>A session is initially in the state Not in transaction. </p> </li> <li id="GUID-1F494795-6391-5A0E-B057-820602C90233"><p>Call the asynchronous form of <xref href="GUID-2FE14318-A0C6-37F9-A359-85D353D94F68.dita"><apiname>StartTransaction()</apiname></xref> with the parameters <xref href="GUID-27A4E547-66EA-3F07-943C-171FAB9EE99D.dita"><apiname>EConcurrentReadWriteTransaction</apiname></xref> and <xref href="GUID-8CC6A454-14EC-3059-B2F9-DC92B1D20F57.dita"><apiname>aStatus</apiname></xref> of type <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> This function returns void: success or the reasons for failure are determined from the state of <xref href="GUID-8CC6A454-14EC-3059-B2F9-DC92B1D20F57.dita"><apiname>aStatus</apiname></xref> after execution. </p> </li> <li id="GUID-C419B2EB-2D04-5B93-B01C-AB9107B52351"><p>The session changes state to Pending Start. Activity on the server will eventually promote the session to Active. </p> </li> <li id="GUID-5793F04F-4BED-5755-B678-A1CDF3AE1400"><p>Manipulate the repository with the functions <xref href="GUID-890C741F-EC69-30E3-AA89-CE35B3DE481F.dita"><apiname>Get()</apiname></xref>, <xref href="GUID-2F459F8B-0464-33BF-BB95-DF0648A5C6ED.dita"><apiname>Set()</apiname></xref>, <xref href="GUID-3D9FBB4B-907F-33BC-9C90-5A896FBEE290.dita"><apiname>Find()</apiname></xref> etc covered above. </p> </li> <li id="GUID-0210FDB7-FD3F-5A6F-90B0-B8DAD23960E3"><p>The session continues in the Active state. The changes to the repository are cached but not actually applied during the Active state. You then either revoke or persist the changes. </p> </li> <li id="GUID-617CA21B-89D5-5531-A9A4-83173FF66867"><p>To revoke the changes, call <xref href="GUID-E7D1327D-70BF-380E-8798-455FD9F4AAE0.dita"><apiname>CancelTransaction()</apiname></xref> This call has different effects depending on whether it was called in the Pending Start state or the Active state. If it was called in the Pending Start state it sets <xref href="GUID-8CC6A454-14EC-3059-B2F9-DC92B1D20F57.dita"><apiname>aStatus</apiname></xref> to <xref href="GUID-6F4A88DA-F54E-3848-9C32-942D6F5F4F3E.dita"><apiname>KErrCancel</apiname></xref>  </p> </li> <li id="GUID-57E59324-D623-5F0E-9954-B7B6C045C63E"><p>The session returns to Not in transaction. </p> </li> <li id="GUID-1E0463FC-81E0-574A-9585-11593FB31DD9"><p>To persist the changes, call the asynchronous form of <xref href="GUID-DC938A94-1C71-3D9D-A4C0-45D5655F9F3A.dita"><apiname>CommitTransaction()</apiname></xref> with the parameters <xref href="GUID-A67CA4BD-6F1F-3B0D-962C-4A78BBE80402.dita"><apiname>aKeyInfo</apiname></xref> of type <xref href="GUID-F58A1C0D-1B36-37EA-8012-1C74B2D12CAD.dita"><apiname>TUint32</apiname></xref> and <xref href="GUID-8CC6A454-14EC-3059-B2F9-DC92B1D20F57.dita"><apiname>aStatus</apiname></xref> of type <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> This function returns void. Its first parameter holds information about the transaction. </p> </li> <li id="GUID-87C8F64D-2FE3-53D3-956C-3211EF7B776B"><p>On success, the <xref href="GUID-8CC6A454-14EC-3059-B2F9-DC92B1D20F57.dita"><apiname>aStatus</apiname></xref> parameter holds the number of settings which were changed. On failure, the parameter holds the settings which caused failure in the form of a key or partial key. The <xref href="GUID-8CC6A454-14EC-3059-B2F9-DC92B1D20F57.dita"><apiname>aStatus</apiname></xref> parameter is set to success or failure. </p> </li> <li id="GUID-4DE0D798-4B73-5EA2-B4DE-2DEDCE6CE55A"><p>If the reason for failure was the success of another transaction, aStatus is set to <xref href="GUID-CF080900-A9A4-391E-AC95-B93EBFB23DE3.dita"><apiname>KErrLocked</apiname></xref> and the session is Not in transaction. You try the same sequence of function calls until you get a successful commit. </p> <p>If there was some other reason for failure you must close the transaction yourself. To do this, either call <xref href="GUID-E7D1327D-70BF-380E-8798-455FD9F4AAE0.dita"><apiname>CancelTransaction()</apiname></xref> or else call <xref href="GUID-DC938A94-1C71-3D9D-A4C0-45D5655F9F3A.dita"><apiname>CommitTransaction()</apiname></xref> a second time. </p> <p>There is sometimes reason to fail the transaction deliberately by calling <xref href="GUID-D4178000-A2A4-3B22-B984-530DD5EC75EE.dita"><apiname>FailTransaction()</apiname></xref> For instance you might want to generate failure after an unsuccessful <xref href="GUID-890C741F-EC69-30E3-AA89-CE35B3DE481F.dita"><apiname>Get()</apiname></xref> operation and then cancel the transaction. </p> </li> </ul> <fig id="GUID-70E4E2BC-3996-54B1-AC65-ECADFB4E66FE"><title>
+             Asynchronous Transaction State Diagram 
+          </title> <image href="GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e331150_href.png" placement="inline"/></fig> </section> <section><title>Cleanup </title> <p>There is a danger that a transaction might remain open for ever if it is opened by code which subsequently leaves. To avoid this possibility, the <xref href="GUID-849C6016-BDB1-39B0-A48E-3AA661E11811.dita"><apiname>CCentralRepository</apiname></xref> class has two functions which cause the cleanup stack to end the transaction in the event of a leave. <xref href="GUID-896BCACB-335C-3A77-9161-52EA711AA84C.dita"><apiname>CleanupCancelTransactionPushL()</apiname></xref>, also named <xref href="GUID-D27AD32E-1D1F-34C9-92ED-B1CFCFB1DC0B.dita"><apiname>CleanupRollbackTransactionPushL()</apiname></xref>, causes a leave to be followed by a call to <xref href="GUID-E7D1327D-70BF-380E-8798-455FD9F4AAE0.dita"><apiname>CancelTransaction()</apiname></xref>. <xref href="GUID-F9520CB0-266B-357D-997F-756787C5F549.dita"><apiname>CleanupFailTransactionPushL()</apiname></xref> causes a leave to be followed by a call to <xref href="GUID-D4178000-A2A4-3B22-B984-530DD5EC75EE.dita"><apiname>FailTransaction()</apiname></xref>. </p> </section> </conbody><related-links><link href="GUID-1C683226-C142-5C7B-BD20-060058352B08.dita"><linktext>Central Repository Guide</linktext> </link> <link href="GUID-724BA3CD-7648-51DF-9285-3AA7470987F4.dita"><linktext>Optimising Repository
+                Access</linktext> </link> <link href="GUID-998DCA78-2488-5D6D-B5B3-D86C52F32823.dita"><linktext>Modifications to
+                Keyspaces</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9"><title>What are sessions with the Comms Database</title><shortdesc>This topic describes the use of sessions to access the Comms Database. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> <p>Tools and applications create and use a session to access the Comms Database. A session is an instance of the class <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession</apiname></xref>. An instance of <codeph>CMDBSession</codeph> acts as a handle to the database. The functions provided by <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>MMetaDatabase</apiname></xref> to access the Comms Database require an instance of <codeph>CMDBSession</codeph>. </p> <fig id="GUID-4B909AEF-6C15-52C4-9C5B-41E55B65A365"><image href="GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e66617_href.png" placement="inline"/></fig> <p>You must create a session before you get data from the Comms Database and before you update the Comms Database. To create a session, you create an instance of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession</apiname></xref> class. </p> <p>You delete the session after you finish your use of the Comms Database. To delete a session, you delete the instance of the <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CMDBSession</apiname></xref> class. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041" xml:lang="en"><title>Graphics Device
+Interface (GDI) Collection</title><shortdesc>The Graphics Device Interface (GDI) collection provides important
+functionality within the Graphics subsystem. The functionality includes graphics
+device abstraction, linear digital differential analysis, font description
+and information, printer devices abstraction, line breaking and text rendering. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+</conbody><related-links>
+<link href="GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita"><linktext>Graphics
+  Guide</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E8BD8844-3297-5848-BDF0-F6D595367145.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E8BD8844-3297-5848-BDF0-F6D595367145" xml:lang="en"><title>Introduction</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the Comms-infras Esock test suites. It provides an
+overview of the test suite, its coverage, how to set up the test environment
+to execute the test suite, and how to find further information about the test
+cases offered by this test suite. </p>
+<section><title> Comms-Infras ESOCK Test Suite</title> <p><b> Test
+Suite Overview</b> </p> <p>The Comms-Infras <codeph>ESOCK</codeph> Test Suite
+consists of several regression test suites that provide tests for <codeph>RConnection</codeph>, <codeph>RSocketServ</codeph>, <codeph>RSocket</codeph> and <codeph>RSubConnection</codeph> classes. </p> <p>All API's that Symbian
+classify as PublisedAll are tested within these classes. </p> <p> <b>Note:</b> Any
+mention of epoc32 is offset by <filepath>%EPOCROOT%</filepath>. </p> <p><b> Test Approach</b> </p> <p>The test suite is a means of confidence that
+the APIs work as expected. Negative testing is performed wherever it is needed,
+to confirm that correct errors are returned when incorrect parameters are
+given. The tests are automated and does not require user intervention. </p> <p><b>Coverage Omissions</b> </p> <ol id="GUID-E468FD22-1935-57C9-8AA4-83CC5ACAE000">
+<li id="GUID-CD7F9B91-45C4-52D7-82BA-EA3F345AB659"><p>The following RConnection’s
+publishedAll API’s have been omitted as their corresponding parameters (enumerated
+values) are PublishedPartner: </p> <ul>
+<li id="GUID-5208FEFA-8F45-59BC-8D70-7C93820A19E2"><p>RConnection::Control() </p> </li>
+<li id="GUID-2A110CE0-A751-5106-9415-71F1039C205C"><p>RConnection::GetOpt() </p> </li>
+<li id="GUID-D3CE8634-319C-5CA1-BA67-7E38AD0B52ED"><p>RConnection::SetOpt() </p> </li>
+</ul> </li>
+<li id="GUID-5E056CDE-EB20-5377-9F49-B3EA58FC63F9"><p>The following RSocketServ
+APIs are not tested as they are only used for debugging purposes: </p> <ul>
+<li id="GUID-44E8DA95-3D5F-5784-9E83-5C533BFE5226"><p>RSocketServ::__DbgCheckHeap() </p> </li>
+<li id="GUID-7827781E-4B4A-5050-AA9E-1FC3B044288A"><p>RSocketServ::__DbgCheckMbuf() </p> </li>
+<li id="GUID-30267D76-329F-5B5A-8A40-1B9ABBB4D47A"><p>RSocketServ::__DbgFailNext() </p> </li>
+<li id="GUID-EF184697-1844-5298-BC22-933D0C47018A"><p>RSocketServ::__DbgFailNextMbuf() </p> </li>
+<li id="GUID-737FCD2D-A464-53F7-910D-AA8BC385A050"><p>RSocketServ::__DbgMarkEnd() </p> </li>
+<li id="GUID-FD11BFE0-9F91-5DCF-907D-EB548F49126D"><p>RSocketServ::__DbgMarkHeap() </p> </li>
+<li id="GUID-4F796802-454F-5A26-9888-F79A39CC6856"><p>RSocketServ::__DbgMbufFreeSpace() </p> </li>
+<li id="GUID-298DB466-6094-5A1D-B60C-AD0310BD152E"><p>RSocketServ::__DbgMbufTotalSpace() </p> </li>
+<li id="GUID-7DC503A0-FBB3-567F-9746-F707B020F901"><p>RSocketServ::__DbgSetMbufPoolLimit() </p> </li>
+</ul> </li>
+<li id="GUID-611FDE29-5C2B-53A8-B8A3-06C8B7EA6077"><p>All the APIs are tested
+over IP protocols, TCP and UDP. These protocols do not support Connect/Disconnect
+with datam, so the following RSocket API's are not tested: </p> <ul>
+<li id="GUID-C0F2EBB5-5089-5CAA-9792-14E4E83CBDEA"><p>RSocket::Accept(RSocket
+&amp;aBlankSocket, TDes8 &amp;aConnectData, TRequestStatus &amp;aStatus) </p> </li>
+<li id="GUID-A57CAAE0-5C65-5DFE-AB6F-2E5A5AC92F39"><p>RSocket::Listen(TUint
+qSize, const TDesC8 &amp;aConnectData) </p> </li>
+<li id="GUID-5E3B8D3E-C7F1-511E-8F94-24F07E65A566"><p>RSocket::Shutdown(TShutdown
+aHow, const TDesC8 &amp;aDisconnectDataOut, TDes8 &amp;aDisconnectDataIn,
+TRequestStatus &amp;aStatus) </p> </li>
+</ul> </li>
+<li id="GUID-87BADAAE-82AB-5E28-9DD9-21532EE6283D"><p>The following RSubConnection
+functions are omitted as they are not currently implemented: </p> <ul>
+<li id="GUID-07199AB8-0A68-5B5C-AD9B-4375CB1FD9AB"><p>RSubConnection::Start(TRequestStatus&amp;
+aStatus) </p> </li>
+<li id="GUID-360C03CF-8C9C-5684-92CF-CA0F600428FB"><p>RSubConnection::Start() </p> </li>
+<li id="GUID-92B3870F-8F84-5829-8C24-50FF4D476A1F"><p>RSubConnection::Stop() </p> </li>
+</ul> </li>
+</ol> </section>
+<section><title>Test Suite Details</title> <p><b>Test
+Script Source Tree Location</b> </p> <p>Descriptions of the test cases can
+be found at the following location: </p> <ul>
+<li id="GUID-7121D876-C7A1-5DD1-88FC-F267A2F04938"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rconnection\scripts\COMINF-ESOCK-RConnection-PublicAPI-Other.script
+                  </filepath>  </p> </li>
+<li id="GUID-70FE1AA6-9692-53E0-9CFE-D146325F298D"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rconnection\scripts\COMINF-ESOCK-RConnection-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-FEE82F63-46D3-5569-9D88-F157920F9703"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rconnection\scripts\COMINF-ESOCK-RConnection-PublicAPI-UDP.script
+                  </filepath>  </p> <p> </p> </li>
+<li id="GUID-D381E450-C395-5230-9026-5805D657A87F"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\scripts\COMINF-ESOCK-RSocket-PublicAPI-Other.script
+                  </filepath>  </p> </li>
+<li id="GUID-25C992E8-0B65-5C22-B1E7-DFF9F8A3C996"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\scripts\COMINF-ESOCK-RSocket-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-32E0D4C8-AEC8-534B-9173-DA6EC9306C68"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\scripts\COMINF-ESOCK-RSocket-PublicAPI-UDP.script
+                  </filepath>  </p> </li>
+<li id="GUID-E351FF29-02CE-5E97-8B15-B89786997469"><p> <filepath>…\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocketserv\scripts\COMINF-ESOCK-RSocketServ-PublicAPI-Other.script
+                  </filepath>  </p> </li>
+<li id="GUID-6780DDC5-0D61-502B-B897-65ACBDCB9C49"><p> <filepath>…\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocketserv\scripts\COMINF-ESOCK-RSocketServ-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-F5FD1EDB-3814-56EE-91D7-C6428BABD525"><p> <filepath>…\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocketserv\scripts\COMINF-ESOCK-RSocketServ-PublicAPI-UDP.script
+                  </filepath>  </p> </li>
+<li id="GUID-4ED2C013-EC4B-5ECB-92F0-9A7BEE67E356"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsubconnetion\scripts\COMINF-ESOCK-RSubConnection-PublicAPI-Other.script</filepath> </p> </li>
+<li id="GUID-ABC568A9-3F1B-5DD7-8679-3DF6735DD644"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsubconnetion\scripts\COMINF-ESOCK-RSubConnection-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-D44FD9A1-70F3-5891-850D-D0338E804411"><p> <filepath>...\os\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsubconnetion\scripts\COMINF-ESOCK-RSubConnection-PublicAPI-UDP.script</filepath> </p> </li>
+</ul> <p><b>Test
+Script EPOC tree location</b> </p> <p>When the tests are built for emulator
+or hardware (<codeph>WINSCW</codeph> or <codeph>ARMV5</codeph>), the scripts
+are exported into the following location in the epoc tree. </p> <ul>
+<li id="GUID-E270F906-F38F-50AF-967B-692EA1EB899C"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RConnection-PublicAPI-Other.script
+                  </filepath>  </p> </li>
+<li id="GUID-BD97458B-37BA-540B-8BD4-810CE3DD3093"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RConnection-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-8CD6C182-98E2-52B6-9C0E-8570F41CA831"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RConnection-PublicAPI-UDP.script
+                  </filepath>  </p> </li>
+<li id="GUID-4C890174-2FF7-5B08-AEDE-FC0F81CAD1A5"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSocket-PublicAPI-Other.script
+                  </filepath>  </p> </li>
+<li id="GUID-B6BB43B4-43B3-5A29-ACD5-4669BE08275F"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSocket-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-935D9A13-9A7E-5909-806B-EDD0A126DB7C"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSocket-PublicAPI-UDP.script</filepath> </p> </li>
+<li id="GUID-245D34A6-D08F-5661-824A-60019FAEABFD"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSocketServ-PublicAPI-Other.script</filepath> </p> </li>
+<li id="GUID-0CA7D044-0C1D-5864-B583-40722DB3D194"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSocketServ-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-FB533FD8-9AA7-5E39-A979-71BB9EBAEFF7"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSocketServ-PublicAPI-UDP.script</filepath> </p> </li>
+<li id="GUID-42D30537-AA32-5B1C-9FBA-0BD92DDE838A"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSubConnection-PublicAPI-Other.script</filepath> </p> </li>
+<li id="GUID-9A85BA4B-11B4-5F20-9002-6A62FD85F799"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSubConnection-PublicAPI-TCP.script</filepath> </p> </li>
+<li id="GUID-37EBFC6B-D546-5382-AA31-52F3F86260D3"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\COMINF-ESOCK-RSubConnection-PublicAPI-UDP.script</filepath> </p> </li>
+</ul> <p><b>Test
+Script Build location</b> </p> <p>When the tests are built, the scripts are
+built into the following location: </p> <p> <filepath>%EPOCROOT%\epoc32\release\&lt;winscw|armv5&gt;\&lt;udeb|urel&gt;\Z\comms-infras\esock.</filepath> </p> <p> <b>Note:</b> When the tests are built to be executed on hardware the
+files are built into the <filepath>z:</filepath> drive of the ROM. </p> <p><b> Test Data Source Tree Location</b> </p> <p>Following list indicates the
+location of the test data files for each sub-component: </p> <ul>
+<li id="GUID-3544CF38-F08E-54A0-96B4-DFCEAD22B0FA"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rconnection\testdata\COMINF-ESOCK-RConnection-PublicAPI.ini</filepath> </p> </li>
+<li id="GUID-E685488F-5090-5926-857F-BE0754C041A8"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rconnection\testdata\data.txt</filepath> </p> </li>
+<li id="GUID-11866994-FD27-5292-9939-C21A8E1B9B07"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\testdata\COMINF-ESOCK-RSocket-PublicAPI-other.ini</filepath> </p> </li>
+<li id="GUID-3410F130-3F35-581B-A99A-EEBAB997E28E"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\testdata\COMINF-ESOCK-RSocket-PublicAPI-TCP.ini</filepath> </p> </li>
+<li id="GUID-71166800-6312-52BB-8351-EB189415C530"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\testdata\COMINF-ESOCK-RSocket-PublicAPI-UDP.ini</filepath> </p> </li>
+<li id="GUID-89CC99AA-E592-5D7B-B7DF-873306785ACB"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\testdata\data.txt</filepath> </p> </li>
+<li id="GUID-5695C886-3DB5-5387-B3CC-0516D9B5A020"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocketserv\testdata\COMINF-ESOCK-RSocketServ-PublicAPI.ini</filepath> </p> </li>
+<li id="GUID-68E4560A-A696-5BD9-BFFE-98BD6938D5F4"><p> <filepath>...\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsubconnection\testdata\COMINF-ESOCK-RSubConnection-PublicAPI.ini</filepath> </p> </li>
+</ul> <p>This is the global environment file: </p> <p> <filepath>...\os\commsfw\v&lt;Symbian
+platform              baseline&gt;\testproduct\testdata\t_comms-infras.ini</filepath>  </p> <p> </p> <p> <b>Note:</b> The <filepath>t_comms-infras.ini</filepath> is generated by <filepath>InsertIpAddr.bat</filepath> based on <filepath>t_comms-infras.env</filepath> file.
+For more information, refer to <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita">Comms-infras
+Test Technology</xref>. </p> <p><b> Test
+Data Files EPOC Tree Location:</b> </p> <p>When the tests are built for emulator
+or hardware (<codeph>WINSCW</codeph> or <codeph>ARMV5</codeph>), the data
+files are exported into the following location in the epoc tree. </p> <ul>
+<li id="GUID-96D401DB-31AF-5F23-85A0-6389D4B365BA"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RConnection\COMINF-ESOCK-RConnection-PublicAPI.ini</filepath> </p> </li>
+<li id="GUID-CB018961-9ADA-5791-BD02-2D46AC4027A6"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RConnection\data.txt</filepath> </p> </li>
+</ul> <ul>
+<li id="GUID-115E329F-99A2-51C0-9C4D-1A2667742C3F"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RSocket\COMINF-ESOCK-RSocket-PublicAPI-other.ini</filepath> </p> </li>
+<li id="GUID-B4565111-CCF5-5137-B088-33F9804BE90B"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RSocket\COMINF-ESOCK-RSocket-PublicAPI-TCP.ini</filepath> </p> </li>
+<li id="GUID-18B73B9F-C606-5C56-A84F-C834FDCD8153"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RSocket\COMINF-ESOCK-RSocket-PublicAPI-UDP.ini</filepath> </p> </li>
+<li id="GUID-83A74D31-0315-5BFC-A7FE-51CEBEE43DE8"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RSocket\data.txt</filepath> </p> </li>
+</ul> <ul>
+<li id="GUID-587A4C99-9C63-5CF3-94C7-F2F9C884A3E7"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RSocketServ\COMINF-ESOCK-RSocketServ-PublicAPI.ini</filepath> </p> </li>
+</ul> <ul>
+<li id="GUID-1B4B8367-2B0F-5AED-9DC4-475DEA51C2B9"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\esock\T_RSubConnection\COMINF-ESOCK-RSubConnection-PublicAPI.ini</filepath> </p> </li>
+</ul> <ul>
+<li id="GUID-23FAC7BB-B858-597C-A1A6-A5B323116067"><p> <filepath>%EPOCROOT%\epoc32\data\Z\comms-infras\t_comms-infras.ini</filepath> </p> </li>
+</ul> <p><b>Test
+Data Files Emulator Location</b> </p> <p>The build process builds the data
+files to the following location: <filepath>%EPOCROOT%\epoc32\release\&lt;winscw|armv5&gt;\&lt;udeb|urel&gt;\Z\comms-infras\esock\t_&lt;class
+                name&gt;</filepath>. </p> <p> <b> Note:</b> When the tests are
+built to be executed on hardware the files are built into the z: drive of
+the ROM. </p> <p><b>Test
+.driver File</b> </p> <p>The comms-infras.driver file found in <filepath>…\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\testsuites\comms-infras
+                </filepath> is used by the test driver to construct the test
+suite tree structure and export all the appropriate files to the correct location
+in the epoc32 tree and on the device. </p> <p>When the tests are built, the
+.driver file can be found in the following location <filepath>%EPOCROOT%\epoc32\testdriver\testproduct</filepath>  </p> <p id="GUID-ED257AC4-2608-5051-A5AB-EAB48FDA741A"><b>TCS File Source Location</b> </p> <p>The <filepath>.tcs</filepath> file
+can be found at the following location: </p> <p> <filepath>…\os\commsfw\commsinfrastructureapitest\commsinfrastructuresvs\suite\config\t_comms-infras.tcs</filepath> </p> <p><b>TCS
+File Build Location</b> </p> <p>When the tests are built, the scripts are
+built into the following location: </p> <p> <filepath>%EPOCROOT%\epoc32\release\&lt;winscw|armv5&gt;\&lt;udeb|urel&gt;\Z\comms-infras\</filepath> </p> <p> <b>Note</b>: When the tests are built to be executed on hardware the files
+are built into the z: drive of the ROM. </p> </section>
+<section><title>Test Environment and Execution</title> <p>Refer to the <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita">Comms-infras Test Technology</xref> Document
+for details regarding the test environment and execution procedure. </p> <p id="GUID-F82BB454-AC90-5F9A-8195-9096B5B03A45"><b>Remote side test environment
+setup</b> </p> <p>The standard PC environment setup does not support some
+RConnection tests. This is because these tests change the properties of the
+PC to device connection. These tests are in the <filepath>Extracted-COMINF-ESOCK-RConnection-PublicApi.script</filepath> file,
+and can be run with a special environmental set up. The <filepath>Extracted-COMINF-ESOCK-RConnection-PublicAPI.script</filepath> describes
+the environment required to run each test. This script must be run manually. </p> <p>The
+following RConnection tests retrieve settings from the Comms DB and verify
+that their values are correct: </p> <codeblock id="GUID-ED7B7A54-26E9-5709-88E5-5B63C2072064" xml:space="preserve">COMINF-ESOCK-RConnection-PublicAPI-0027
+COMINF-ESOCK-RConnection-PublicAPI-0028
+COMINF-ESOCK-RConnection-PublicAPI-0029
+COMINF-ESOCK-RConnection-PublicAPI-0030
+COMINF-ESOCK-RConnection-PublicAPI-0031
+COMINF-ESOCK-RConnection-PublicAPI-0032
+COMINF-ESOCK-RConnection-PublicAPI-0033
+COMINF-ESOCK-RConnection-PublicAPI-0034
+COMINF-ESOCK-RConnection-PublicAPI-0035
+COMINF-ESOCK-RConnection-PublicAPI-0036
+COMINF-ESOCK-RConnection-PublicAPI-0037
+COMINF-ESOCK-RConnection-PublicAPI-0038
+COMINF-ESOCK-RConnection-PublicAPI-0039
+COMINF-ESOCK-RConnection-PublicAPI-0040
+COMINF-ESOCK-RConnection-PublicAPI-0041
+COMINF-ESOCK-RConnection-PublicAPI-0042
+COMINF-ESOCK-RConnection-PublicAPI-0043
+COMINF-ESOCK-RConnection-PublicAPI-0046
+COMINF-ESOCK-RConnection-PublicAPI-0047
+COMINF-ESOCK-RConnection-PublicAPI-0048
+COMINF-ESOCK-RConnection-PublicAPI-0049
+COMINF-ESOCK-RConnection-PublicAPI-0092
+COMINF-ESOCK-RConnection-PublicAPI-0093
+COMINF-ESOCK-RConnection-PublicAPI-0094
+COMINF-ESOCK-RConnection-PublicAPI-0095
+COMINF-ESOCK-RConnection-PublicAPI-0096
+COMINF-ESOCK-RConnection-PublicAPI-0097</codeblock> <p>Therefore, certain
+fields must exist in the Comms DB and their values must be as expected. This
+can be ensured by using the supplied CommDbCommsInfras.xml file to create
+the Comms DB (see <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita">Comms-infras
+Test Technology</xref>) for instructions on how to do this. Alternatively,
+it needs to be ensured that the following fields (and their values) exist
+in the Comms DB: </p> <codeblock id="GUID-98571E5D-5BE1-531E-AC85-76FB84C8C491" xml:space="preserve">
+Location\PauseAfterDialout = 0
+Location\Mobile = false
+Location\Name = Office
+LANService\IfNetworks = ip
+IAP\id = 6
+</codeblock> <p id="GUID-CCC9A28C-29D5-560D-8284-4624911A28D7"><b>Exclusion of Packet Switched
+Data (PSD) Tests</b> </p> <p>The default connection in the test environment
+is NTRAS, which is based on Circuit Switch Data (CSD). However,<codeph> RSubConnection</codeph> tests
+and <codeph>COMINF-ESOCK-RSocket-PublicAPI-0024</codeph> test case are based
+on Packet Switched Data (PSD). Therefore, these tests are valid only on PSD. </p> <p>These
+tests are automatically excluded from execution by using the following <filepath>.tcs</filepath> files: </p> <ul>
+<li id="GUID-AD105A8E-4D91-5138-8B06-30F899CBBFE3"><p> <filepath>COMINF-ESOCK-RSocket-PublicAPI-TCP.tcs</filepath>  </p> </li>
+<li id="GUID-5E89E148-85E9-5DDF-B4CB-558514549369"><p> <filepath>COMINF-ESOCK-RSubConnection-PublicAPI-Other.tcs</filepath>  </p> </li>
+<li id="GUID-B2F1528A-281A-5F76-9470-76046F03119B"><p> <filepath>COMINF-ESOCK-RSubConnection-PublicAPI-TCP.tcs</filepath>  </p> </li>
+<li id="GUID-47C4852C-C59A-5DEA-9B3D-C48C10E208A2"><p> <filepath>COMINF-ESOCK-RSubConnection-PublicAPI-UDP.tcs</filepath>  </p> </li>
+</ul> <p>See <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita">Comms-infras
+Test Technology</xref> for execution details when executing the tests manually. </p> <p> <b>Note:</b> If
+the PSD environment is available, then the excluded tests can be included
+by deleting the test case IDs from the <filepath>.tcs</filepath> files. </p> <p><b>Support</b> </p> <p>For support issues relating to this Test Suite description
+and issues surrounding the running of the tests, test pass rates, and potential
+defects, contact Symbian or your SDK provider. In most instances, this will
+be either through the SDK provider forums, or the developer area of the <xref href="http://developer.symbian.org/" scope="external">Symbian</xref> Web site. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E8BEE049-6814-543B-8A88-889E434A5D92.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E8BEE049-6814-543B-8A88-889E434A5D92" xml:lang="en"><title>How to Use Descriptors</title><shortdesc>Explains how to use descriptors for various use cases.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E8DF12FC-DCA9-57EA-833A-C1E8D6DAF405.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E8DF12FC-DCA9-57EA-833A-C1E8D6DAF405" xml:lang="en"><title>Drawing
+Tutorial</title><shortdesc>This topic provides tips and code snippets to help you get started
+drawing. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b>Variant</b>: Both (ScreenPlay and non-ScreenPlay). <b>Target
+audience</b>: Application developers. </p>
+<section id="GUID-4123E6D4-0CBA-4244-944B-D472801A4875"><title>Standard windows</title> <p>All drawing to standard windows
+must be <xref href="GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita">redraw drawing</xref>,
+which means that it takes place between <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::BeginRedraw()</apiname></xref> and <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::EndRedraw()</apiname></xref> calls. If you use the <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>CCoeControl::DrawNow()</apiname></xref> and <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>CCoeControl::DrawDeferred()</apiname></xref> methods,
+CONE takes care of this for you. </p> <p>To redraw to an <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow</apiname></xref>,
+an application starts the sequence by activating a <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>CWindowGc</apiname></xref> to
+use a particular window for drawing, it then calls <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::BeginRedraw()</apiname></xref> before
+issuing the drawing commands and finally calling <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::EndRedraw()</apiname></xref>.
+For example: </p> <codeblock id="GUID-25AE81CE-46CF-5E07-8A94-B35A4A06DAE6" xml:space="preserve">gc-&gt;Activate(iWindow);
+iWindow.BeginRedraw(rect);
+DoDraw(rect);
+iWindow.EndRedraw();
+gc-&gt;Deactivate();</codeblock> <p> <codeph>BeginRedraw()</codeph> does the
+following: </p> <ul>
+<li id="GUID-2742E046-2511-5C6A-8E84-396A80AFED18"><p>marks the rectangle
+passed as its argument as valid (in other words, it removes the rectangle
+from the invalid region of the window) </p> </li>
+<li id="GUID-4FF89A03-8A77-5640-A77C-943164E869B3"><p>sets the clipping region
+to the intersection of the invalid region and the rectangle passed as its
+argument. </p> </li>
+</ul> <p>In a server-initiated redraw, the drawing must exactly match what
+was drawn originally, because the Window Server clips the drawing to the newly
+validated region. If the rectangle drawn in response to a redraw event does
+not cover the entire invalid region, the Window Server generates another redraw
+event specifying the bounding rectangle of the region that is still invalid.
+This continues until the entire window is valid. </p> <p>In an application-initiated
+redraw, it is good practice to invalidate the whole region before passing
+it to the redraw. For example: </p> <codeblock id="GUID-A4213BAF-00A8-5461-86BF-E708DFFC87F1" xml:space="preserve">gc-&gt;Activate(iWindow);
+iWindow.Invalidate(rect);
+iWindow.BeginRedraw(rect);
+DoDraw(rect);
+iWindow.EndRedraw();
+gc-&gt;Deactivate();</codeblock> <p>After this sequence, the entire window is
+valid. </p> </section>
+<section id="GUID-CB59A6EF-AC04-4ACD-B82D-CBAD42975B09"><title>Backed-up windows</title> <p>Backed-up windows are redrawn
+by the Window Server from the backup bitmap and not by the application. They
+therefore have no <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::Invalidate()</apiname></xref>, <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::BeginRedraw()</apiname></xref> or <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::EndRedraw()</apiname></xref> member
+functions. The sequence for drawing to backed-up windows is therefore as follows: </p> <codeblock id="GUID-85C7E7CF-6DF7-5619-B6C3-F9530E316A1C" xml:space="preserve">gc-&gt;Activate(iWindow);
+DoDraw(rect);
+gc-&gt;Deactivate();</codeblock> <p> <b>Note</b>: Backed-up windows are deprecated
+in Symbian^3. </p> </section>
+<section id="GUID-1894D9BE-0B8A-4FF9-9EAB-83D072CF1FDE"><title>Pre-emptive multi tasking</title> <p>Because Symbian is a
+pre-emptive system, another application—or the Window Server itself—may pre-empt
+the application that is drawing or redrawing. The result is that <codeph>DoDraw()</codeph> may
+be partially complete when preemption occurs. Then, when the <codeph>DoDraw()</codeph> receives
+control again, it may draw to an area that has been invalidated without its
+knowledge. </p> <p>For this reason, the Window Server marks a window region
+as valid at <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::BeginRedraw()</apiname></xref> time, <i>not</i> at <xref href="GUID-683603DD-F3D3-3193-BEB3-8236C7DE7F79.dita"><apiname>RWindow::EndRedraw()</apiname></xref> time. Then, any regions that
+become invalid because of a preempting application’s activity are correctly
+added to the invalid region. The <codeph>DoDraw()</codeph> completes, but
+the Window Server generates another redraw event and the application must
+start the redraw again. </p> </section>
+</conbody><related-links>
+<link href="GUID-484B51EC-2209-5492-8E9C-9D792AB0DF35.dita"><linktext>Graphics
+and Drawing </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8"><title>Creating a Charconv Plug-in DLL</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to create a Charconv plug-in DLL. </p> <section><title>Introduction</title> <p>The flowchart below shows the steps to create a Charconv plug-in DLL. </p> <fig id="GUID-B145D4B6-8385-5DC9-8958-2350C86EBE2B"><image href="GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e378239_href.png" placement="inline"/></fig> </section> <section><title>Procedure</title> <p>An example is used to explain the procedure for creating a Charconv plug-in DLL. This plug-in converts between the cp850 character set and Unicode. </p> <ol id="GUID-AC4B8539-C41C-5631-A8F7-8C9646951897"><li id="GUID-C75F84C2-C83A-567C-8AC6-788848EEE85E"><p>Create a cnvtool source file using a text editor and save it as, for example <filepath>d:\charconvfiles\data\cp850.txt</filepath>. This file contains pairs of hexadecimal numbers. The first number in each pair is the encoding of a character in cp850and the second is the Unicode encoding of the same character. </p> <codeblock id="GUID-9541977F-8BBA-5838-ACD1-DAB896C00D8C" xml:space="preserve">...
+0x00    0x0000    #NULL
+0x01    0x0001    #START OF HEADING
+0x02    0x0002    #START OF TEXT
+0x03    0x0003    #END OF TEXT
+0x04    0x0004    #END OF TRANSMISSION
+0x05    0x0005    #ENQUIRY
+0x06    0x0006    #ACKNOWLEDGE
+...</codeblock> <p>For more information about the syntax of a cnvtool source file, refer to <xref href="GUID-6796BA71-47A7-5465-89F2-BD0AEF2E4EE7.dita">Cnvtool Source File</xref>. </p> </li> <li id="GUID-62F3284F-1686-5869-A849-373A8092209F"><p>Create a cnvtool control file using a text editor and save it as, for example <filepath>d:\charconvfiles\data\cp850.ctl</filepath>. This file specifies the conversion algorithms to convert both ways between ranges of characters, and other information. </p> <codeblock id="GUID-EC3C3757-655C-5E7E-873A-0D2620FFE09E" xml:space="preserve">Endianness                                                            FixedBigEndian
+ReplacementForUnconvertibleUnicodeCharacters                        0x1a # ASCII "substitute" character - must be a single character, and must be little-endian if the "Endianness" above is "Unspecified", otherwise in the same endianness as specified
+
+StartForeignVariableByteData
+#    FirstInitialByteValueInRange    LastInitialByteValueInRange        NumberOfSubsequentBytes
+    0x00                            0xff                            0
+EndForeignVariableByteData
+
+StartForeignToUnicodeData
+#    IncludePriority    SearchPriority    FirstInputCharacterCodeInRange    LastInputCharacterCodeInRange    Algorithm                        Parameters
+    2                2                0x00                            0x7f                            Direct                            {}        # ASCII
+    1                1                0x80                            0xff                            KeyedTable16OfIndexedTables16    {}        # CP850
+EndForeignToUnicodeData
+
+StartUnicodeToForeignData
+#    IncludePriority    SearchPriority    FirstInputCharacterCodeInRange    LastInputCharacterCodeInRange    Algorithm            SizeOfOutputCharacterCodeInBytes    Parameters
+    2                2                0x0000                            0x007f                            Direct                1                                    {}        # ASCII
+    1                1                0x00A0                            0x25A0                            KeyedTable1616        1                                    {}        # CP850
+EndUnicodeToForeignData
+</codeblock> <p>For more information about the syntax of a cnvtool control file, refer to <xref href="GUID-2624060D-A5E7-590A-9FA0-471AE42A9BE9.dita">Cnvtool Control File</xref>. </p> </li> <li id="GUID-A15AE20D-57A2-5D66-80C6-6CC0CFE5A409"><p>Start a command prompt to run <filepath>cnvtool</filepath> on the source and control files as follows: </p> <p><userinput>cd d:\Symbian\epoc32\tools</userinput> </p> <p><userinput>cnvtool.bat -generateSourceCode d:\charconvfiles\data\cp850.txt d:\charconvfiles\data\cp850.ctl d:\charconvfiles\data\g_cp850.cpp</userinput> </p> <p>This process generates a C++ source code file called <filepath>g_cp850.cpp</filepath>. It is referred to as the <filepath>cnvtool</filepath> -generated cpp file. It contains the <codeph>SCnvConversionData</codeph> data structure. </p> <codeblock id="GUID-0E9F220F-F77C-54D7-A4F1-76672A16625B" xml:space="preserve">
+#include &lt;e32std.h&gt;
+#include &lt;CONVDATA.H&gt;
+#include &lt;CONVGENERATEDCPP.H&gt;
+
+#define ARRAY_LENGTH(aArray) (sizeof(aArray)/sizeof((aArray)[0]))
+
+
+_LIT8(KLit8ReplacementForUnconvertibleUnicodeCharacters, "\x1a");
+
+GLDEF_C const TDesC8&amp; ReplacementForUnconvertibleUnicodeCharacters_internal()
+    {
+    return KLit8ReplacementForUnconvertibleUnicodeCharacters;
+    }
+
+LOCAL_D const TUint16 keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1[]=
+    {
+    0x00c7,
+    0x00fc,
+...
+ }
+
+
+LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable16OfIndexedTables16::SKeyedEntry keyedTables16OfIndexedTables16_keyedEntries_foreignToUnicode_1[]=
+    {
+        {
+        0x80,
+        0xff,
+        keyedTables16OfIndexedTables16_indexedEntries_foreignToUnicode_1
+        }
+    };
+
+LOCAL_D const SCnvConversionData::SOneDirectionData::SRange::UData::SKeyedTable1616::SEntry keyedTable1616_unicodeToForeign_1[]=
+    {
+        {
+        0x00a0,
+        0xff
+        },
+...
+ }
+LOCAL_D const SCnvConversionData::SVariableByteData::SRange foreignVariableByteDataRanges[]=
+    {
+        {
+        0x00,
+        0xff,
+        0,
+        0
+        }
+    };
+
+....
+
+GLDEF_D const SCnvConversionData conversionData=
+    {
+    SCnvConversionData::EFixedBigEndian,
+        {
+        ARRAY_LENGTH(foreignVariableByteDataRanges),
+        foreignVariableByteDataRanges
+        },
+        {
+        ARRAY_LENGTH(foreignToUnicodeDataRanges),
+        foreignToUnicodeDataRanges
+        },
+        {
+        ARRAY_LENGTH(unicodeToForeignDataRanges),
+        unicodeToForeignDataRanges
+        },
+    NULL,
+    NULL
+    };
+
+</codeblock> <p>For more information about the command syntax of cnvtool, refer to <xref href="GUID-214A7085-185B-5D40-A613-E82E68968AAB.dita">Cnvtool Command Syntax</xref>. </p> </li> <li id="GUID-03FF26E6-8AA2-5E31-A9A9-8A366FDBCD7F"><p>Create a cpp file which implements the <xref href="GUID-F58308AA-7072-370D-BE6A-1E8236060FC4.dita"><apiname>CCharacterSetConverterPluginInterface</apiname></xref> class. </p> <p>All of the functions defined in the interface must be implemented by the plug-in DLL. The implementations of <codeph>ConvertFromUnicode()</codeph> and <codeph>ConvertToUnicode()</codeph> must fulfil the following behavioural requirements: </p> <ul><li id="GUID-E6E2B609-A110-5607-8203-6E5C25C8B952"><p>They must return a negative error code (see <codeph>CCnvCharacterSetConverter::TError</codeph>), or the number of elements remaining in the input descriptor which have not been converted. </p> </li> <li id="GUID-2640AA42-5CA9-54B8-BCF8-40896D1BCA36"><p>They must not return an error when the output descriptor is too short or there is a truncated sequence at the end of the input descriptor. </p> <ul><li id="GUID-3A715936-4164-5493-A826-BB10448BD004"><p>If the output descriptor is full, the input descriptor cannot be fully converted. </p> </li> <li id="GUID-8D962732-8CAE-5D39-A2EA-FEA6D50E920E"><p>If the input descriptor ends with a truncated sequence, such as the first half of a Unicode surrogate pair, the first byte of a multi-byte foreign character set character code, or a truncated escape sequence of a modal foreign character set, it cannot be fully converted. </p> </li> </ul> </li> <li id="GUID-50C3341A-1319-5B57-A6B4-A527B48788E5"><p>If the input descriptor consists purely of a truncated sequence they must return <codeph>CCnvCharacterSetConverter::EErrorIllFormedInput</codeph>. </p> </li> </ul> <p>For non-complex character sets, they can call <codeph>CCnvCharacterSetConverter::DoConvertFromUnicode()</codeph> and <codeph>CCnvCharacterSetConverter::DoConvertToUnicode()</codeph> functions respectively. </p> <p>For complex character sets, for example JIS or Shift-JIS, the <xref href="GUID-2FC99DA0-F1C0-3A5E-B990-5DC3F7EAA31C.dita"><apiname>CnvUtilities</apiname></xref> class provides some utility functions. </p> <p>To access the two (const) global objects implemented in the cnvtool-generated cpp file, you must include the <filepath>convgeneratedcpp.h</filepath> header file. The <xref href="GUID-1A6BF3E3-31BF-3BC9-A010-26FF72F39F0B.dita"><apiname>SCnvConversionData</apiname></xref> object generated can then be used to implement the <codeph>ConvertFromUnicode()</codeph> and <codeph>ConvertToUnicode()</codeph> functions. </p> <p> <b>Example implementation</b>  </p> <codeblock id="GUID-E899A8AE-73D4-591D-B5A1-6777986D9361" xml:space="preserve">#include &lt;e32std.h&gt;
+#include &lt;charconv.h&gt;
+#include &lt;convgeneratedcpp.h&gt;
+#include &lt;ecom/implementationproxy.h&gt;
+#include &lt;charactersetconverter.h&gt;
+
+class CCP850ConverterImpl : public CCharacterSetConverterPluginInterface
+    {
+
+public:
+    virtual const TDesC8&amp; ReplacementForUnconvertibleUnicodeCharacters();
+
+    virtual TInt ConvertFromUnicode(
+        CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, 
+        const TDesC8&amp; aReplacementForUnconvertibleUnicodeCharacters, 
+        TDes8&amp; aForeign, 
+        const TDesC16&amp; aUnicode, 
+        CCnvCharacterSetConverter::TArrayOfAscendingIndices&amp; aIndicesOfUnconvertibleCharacters);
+
+    virtual TInt ConvertToUnicode(
+        CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, 
+        TDes16&amp; aUnicode, 
+        const TDesC8&amp; aForeign, 
+        TInt&amp; aState, 
+        TInt&amp; aNumberOfUnconvertibleCharacters, 
+        TInt&amp; aIndexOfFirstByteOfFirstUnconvertibleCharacter);
+
+    virtual TBool IsInThisCharacterSetL(
+        TBool&amp; aSetToTrue, 
+        TInt&amp; aConfidenceLevel, 
+        const TDesC8&amp; aSample);
+
+    static CCP850ConverterImpl* NewL();
+    virtual ~CCP850ConverterImpl();
+
+private:
+    CCP850ConverterImpl();
+
+    };
+
+
+const TDesC8&amp; CCP850ConverterImpl::ReplacementForUnconvertibleUnicodeCharacters()
+    {
+    return ReplacementForUnconvertibleUnicodeCharacters_internal();
+    }
+
+TInt CCP850ConverterImpl::ConvertFromUnicode(
+        CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, 
+        const TDesC8&amp; aReplacementForUnconvertibleUnicodeCharacters, 
+        TDes8&amp; aForeign, 
+        const TDesC16&amp; aUnicode, 
+        CCnvCharacterSetConverter::TArrayOfAscendingIndices&amp; aIndicesOfUnconvertibleCharacters)
+    {
+    return CCnvCharacterSetConverter::DoConvertFromUnicode(conversionData, aDefaultEndiannessOfForeignCharacters, aReplacementForUnconvertibleUnicodeCharacters, aForeign, aUnicode, aIndicesOfUnconvertibleCharacters);
+    }
+
+TInt CCP850ConverterImpl::ConvertToUnicode(
+        CCnvCharacterSetConverter::TEndianness aDefaultEndiannessOfForeignCharacters, 
+        TDes16&amp; aUnicode, 
+        const TDesC8&amp; aForeign, 
+        TInt&amp; /*aState*/, 
+        TInt&amp; aNumberOfUnconvertibleCharacters, 
+        TInt&amp; aIndexOfFirstByteOfFirstUnconvertibleCharacter)
+    {
+    return CCnvCharacterSetConverter::DoConvertToUnicode(conversionData, aDefaultEndiannessOfForeignCharacters, aUnicode, aForeign, aNumberOfUnconvertibleCharacters, aIndexOfFirstByteOfFirstUnconvertibleCharacter);
+    }
+
+TBool CCP850ConverterImpl::IsInThisCharacterSetL(
+        TBool&amp; aSetToTrue, 
+        TInt&amp; aConfidenceLevel, 
+        const TDesC8&amp; /*aSample*/)
+    {
+    aSetToTrue=ETrue;
+    aConfidenceLevel=0;
+    return EFalse;
+    }
+
+CCP850ConverterImpl* CCP850ConverterImpl::NewL()
+    {
+    CCP850ConverterImpl* self = new(ELeave) CCP850ConverterImpl();
+    return self;
+    }
+
+CCP850ConverterImpl::~CCP850ConverterImpl()
+    {
+    }
+
+CCP850ConverterImpl::CCP850ConverterImpl()
+    {
+    }
+
+const TImplementationProxy ImplementationTable[] = 
+    {
+        IMPLEMENTATION_PROXY_ENTRY(0x102825AD,    CCP850ConverterImpl::NewL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    } 
+</codeblock> </li> <li id="GUID-D6584918-0542-5164-B339-658D52E041BF"><p>Create an ECom registry resource file using a text editor. </p> <p>102825ac.rss </p> <codeblock id="GUID-0652DC46-A32A-5730-A0B0-211C45A016B5" xml:space="preserve">#include "ecom/registryinfo.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+    {
+    dll_uid = 0x102825AC; // UID acquired from Symbian
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            interface_uid = 0x101F7F1D; // fixed UID for Charconv plug-ins
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = 0x102825AD; // UID acquired from Symbian
+                    version_no = 1;
+                    display_name = "CP850";
+                    default_data = "CP850";
+                    opaque_data = "";
+                    }
+                };
+            }
+        };
+    }
+</codeblock> </li> <li id="GUID-58F16B35-BB07-5C51-AE43-92E9D3D76FE8"><p>Create an mmp file which is used to build the plug-in DLL. </p> <codeblock id="GUID-AB46B407-D465-5AA1-BF7D-78FC11816A45" xml:space="preserve">TARGET            cp850.dll
+TARGETTYPE        PLUGIN
+
+CAPABILITY        All -Tcb
+
+UID                0x10009D8D 0x102825AC
+VENDORID        0x70000001
+
+SYSTEMINCLUDE    /epoc32/include
+
+SOURCEPATH        ../src/plugins
+SOURCE            cp850.cpp
+
+SOURCEPATH        /epoc32/build/generatedcpp/charconv
+SOURCE            g_cp850.cpp
+
+SOURCEPATH        ../resource
+START RESOURCE    cp850.rss
+TARGETPATH        /resource/charconv
+LANG            sc
+END
+
+START RESOURCE    102825ac.rss
+TARGET            cp850.rsc
+END
+
+LIBRARY            euser.lib
+LIBRARY            charconv.lib
+LIBRARY            ecom.lib
+</codeblock> </li> </ol> <p>Build the plug-in DLL and install it into the <filepath>\system\charconv\</filepath> directory. The DLL is then available to be loaded when <codeph>CCnvCharacterSetConverter::PrepareToConvertToOrFromL()</codeph> is invoked. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E8F8A9BE-4DCE-5CB9-BFC7-9BC00A7845F7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E8F8A9BE-4DCE-5CB9-BFC7-9BC00A7845F7" xml:lang="en"><title>Descriptors
+for function interfaces</title><shortdesc>Descriptors to specify interfaces which use or manipulate text
+strings or general binary data use </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In conventional ‘C’ programming, interfaces are specified using a combination
+of <codeph>char*</codeph>, <codeph>void*</codeph> and length values. In Symbian
+platform, descriptors are always used.</p>
+<p>There are four main cases:</p>
+<ul>
+<li id="GUID-2939B94A-C71E-5270-A385-EBC04471A5A9"><p>Passing a constant string</p> <p>In
+‘C’: <codeph>StringRead(const char*              aString);</codeph> </p> <p>The
+length of the string is implied by the zero terminator; therefore, the function
+does not require the length to be explicitly specified.</p> <p>In Symbian
+platform: <codeph>StringRead(const TDesC&amp;              aString)</codeph>;</p> <p>The
+descriptor can access the string and contains its length.</p> </li>
+<li id="GUID-C66E1B0E-55C9-5EDD-A5F5-208B8C0EA96E"><p>Passing a string which
+can be changed.</p> <p>In ‘C’: <codeph>StringWrite(char* aString, int    
+         aMaxLength);</codeph> </p> <p>The length of the passed string is
+implied by the zero terminator. <codeph>aMaxLength</codeph> indicates the
+maximum length to which the string may be extended.</p> <p>In Symbian platform: <codeph>StringWrite(TDes&amp;
+aString);</codeph> </p> <p>The descriptor can access the string and contains
+its length and the maximum length to which the string may be extended.</p> </li>
+<li id="GUID-27FD5409-AD86-5CE6-8427-8DF4E977FB7E"><p>Passing a buffer containing
+general binary data</p> <p>In ‘C’: <codeph>BufferRead(const void* aBuffer,
+int              aLength);</codeph> </p> <p>Both the address and length of
+the buffer must be specified.</p> <p>In Symbian platform: <codeph>BufferRead(const
+TDes8&amp;              aBuffer);</codeph> </p> <p>The descriptor has access
+to the address of the buffer and contains the length of the data. The 8 bit
+variant is explicitly specified; the buffer is treated as byte data, regardless
+of the build variant.</p> </li>
+<li id="GUID-46B5ED44-A841-56C4-BCB1-90995C8B79B6"><p>Passing a buffer containing
+general binary data which can be changed.</p> <p>In ‘C’:<codeph>BufferWrite(void*
+aBuffer, int&amp;              aLength, int aMaxLength);</codeph> </p> <p>The
+address of the buffer, the current length of the data and the maximum length
+of the buffer are specified. The <codeph>aLength</codeph> parameter is specified
+as a reference to allow the function to indicate the length of the data on
+return.</p> <p>In Symbian platform: <codeph>BufferRead(TDes8&amp; aBuffer);</codeph> </p> <p>The
+descriptor has access to the adddress of the buffer and contains the length
+of the data and the maximum length. The 8 bit variant is explicitly specified;
+the buffer is treated as byte data, regardless of the build variant.</p> </li>
+</ul>
+<p>Defining interfaces using the base descriptor classes allows callers to
+pass all appropriate derived descriptor types.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e96211_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E92BEA67-CF92-5E0E-8B0D-F918178CE9E8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E92BEA67-CF92-5E0E-8B0D-F918178CE9E8"><title>Media Client Observer Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces the Media Client Observer. It is aimed at application developers implementing audio conversion and recording solutions who need to monitor operations for state changes. </p> <section><title>Purpose</title> <p>Media Client Observer provides notifications to monitor and handle events during audio record and convert operations. </p> <p><b>Media Client Observer Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-E4EAAF44-9F3B-5CFF-B009-1A0462C3E120"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>mediaclient.dll</b>  </p> </entry> <entry><p> <b>mediaclient.lib</b>  </p> </entry> <entry><p>These files are used for implementing the Media Client Observer. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>The Audio Client APIs include <filepath>mediaclient.lib</filepath>, making the Media Client Observer notifications available. </p> </section> <section><title>Description</title> <p>Media Client Observer is used by Audio Record Utility class (<xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref>) and Audio Convert Utility class (<xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref>) to monitor the state of record and convert operations and triggers a state change event notification. </p> </section> <section><title>Key Media Client Observer Classes</title> <p>This API has a single class: </p> <ul><li id="GUID-36790A11-0207-5231-98D8-6F01A066E1E4"><p> <xref href="GUID-C18F29E7-6A66-320A-8F19-988BA1E4EAB9.dita"><apiname>MMdaObjectStateChangeObserver</apiname></xref>  </p> <p>monitors the record or convert operation and triggers a stop when notified of a state change. </p> </li> </ul> </section> <section><title>Using Media Client Observer</title> <p>Notifications are used when recording or converting audio data as discussed below: </p> <p><b>Recording Audio State Change Notifications</b> </p> <p>When a <xref href="GUID-29FB1DE6-D00C-3E6B-A8AA-476FAFD7F26C.dita"><apiname>CMdaAudioRecorderUtility</apiname></xref> audio recording operation is performed, the <codeph>MMdaObjectStateChangeObserver</codeph> is included in the constructor to provide an end of file notification (<xref href="GUID-9348687E-DB8E-3C44-A7C2-EFD008675BC8.dita"><apiname>KErrEof</apiname></xref>). </p> <p><b>Converting Audio State Change Notifications</b> </p> <p>When a <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref> audio conversion operation is performed, the <codeph>MMdaObjectStateChangeObserver</codeph> is included in the constructor to provide an end of file notification (<xref href="GUID-9348687E-DB8E-3C44-A7C2-EFD008675BC8.dita"><apiname>KErrEof</apiname></xref>). </p> </section> <section><title>See Also</title> <p><xref href="GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita">Audio Client APIs Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41" xml:lang="en"><title>STRUCT
+statement</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<codeblock xml:space="preserve">&lt;struct-statement&gt;
+struct-statement ::= 
+STRUCT &lt;struct-name&gt; [ BYTE | WORD ] { &lt;struct-member-list&gt; } </codeblock>
+<p>A <codeph>STRUCT</codeph> statement defines the format of a struct; all
+resources are defined in terms of structs. The struct has a name designated
+by <varname>struct-name</varname>, and some items designated by <varname>struct-member-list</varname>.</p>
+<section><title>Struct names</title><p>The following rules must
+be observed for <varname>struct-names</varname>:</p><ul>
+<li id="GUID-E490ACC3-1A5E-5A93-97BC-EA13322F93B3"><p>they must be given in
+upper case</p> </li>
+<li id="GUID-A8237D56-9872-5869-9041-1F66130F1BCA"><p>they must begin with
+an alphabetic character, although subsequent characters may be numeric</p> </li>
+<li id="GUID-8F0B5DE9-C6B0-5637-A755-0BD408744898"><p>they may not begin with
+any of the 12 struct <varname>type-names</varname> (see <xref href="GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita">STRUCT
+members</xref>), or the keywords: <codeph>GLOBAL</codeph>, <codeph>STRUCT</codeph>, <codeph>LEN</codeph> or <codeph>RESOURCE</codeph>.
+This restriction applies only to the <varname>struct-name</varname>, not the <varname>member-name</varname> of
+any individual struct members.</p> <p>So the following struct definition will
+generate an error</p> <codeblock id="GUID-A2D5E9FB-1C45-52FE-8997-95D2117DFE05" xml:space="preserve">STRUCT BUFTHING
+ {
+ BUF buffer;
+ }</codeblock> <p>whereas this struct definition will compile correctly</p> <codeblock id="GUID-6EEF6653-C2D9-559E-BA72-5C70E30B9633" xml:space="preserve">STRUCT ABUFTHING
+ {
+ BUF buffer;
+ }</codeblock> </li>
+</ul></section>
+<section><title>Struct member list</title><p>The <varname>struct-member-list</varname> is
+a sequence of <varname>struct-member</varname> s where each member is terminated
+by a semi-colon. The complete list is enclosed within a pair of braces.</p><p>See <xref href="GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita">STRUCT members</xref> for
+more details.</p></section>
+<section><title>BYTE/WORD keywords</title><p><codeph>STRUCT</codeph> definitions
+allow resource instances to be of variable length, as the struct can allow
+default variables for its members. A resource’s entire length can be deduced
+from the position of the next resource; this information is available in a
+resource file’s index. If the resource is used as a member within an instance
+of another resource, however, its length <i>must</i> be identified another
+way.</p><ul>
+<li id="GUID-6EBE2158-D5F4-588F-B45E-94AB86D87547"><p>Use <codeph>BYTE</codeph> to
+prefix the struct with a single byte indicating its length (zero to 255 characters).</p> </li>
+<li id="GUID-43D2F295-C031-5812-A0BD-5F017C20918B"><p>Use <codeph>WORD</codeph> to
+prefix the struct with a word indicating its length (zero to 65,535 characters).</p> </li>
+</ul></section>
+<example><p>The following are valid <codeph>STRUCT</codeph> statements:</p><codeblock id="GUID-04C66589-84AC-591F-80A3-73FC1C973F4C" xml:space="preserve">STRUCT STRING
+ {
+ LTEXT str;
+ }</codeblock><p>This defines a struct called <codeph>STRING</codeph> which
+contains a single <codeph>LTEXT</codeph> item.</p><codeblock id="GUID-C85D999C-4E6A-57B8-ACFB-E6A7DB51E960" xml:space="preserve">STRUCT TEST BYTE
+ {
+ WORD status;
+ STRUCT text;
+ }</codeblock><p>This defines a struct called <codeph>TEST</codeph> which
+contains a <codeph>WORD</codeph> and an embedded struct. The total length
+of <codeph>TEST</codeph> is unknown, but should not exceed 255 characters:
+the <codeph>BYTE</codeph> directive in the definition indicates that, when
+this struct is embedded within another, it should be preceded with a byte
+indicating its length (zero to 255 characters).</p></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E93D3767-0F74-5335-8233-8236908F70AF"><title>How to share file handles between processes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>It is possible to share file handles between two processes, allowing an open file to be passed from one process to another. This is a necessary feature in secure versions of Symbian OS. </p> <p>This section describes the sharing of file handles between two processes, and the APIs provided for this purpose. This feature is only supported on Symbian OS versions with EKA2 architecture. </p> <p>Some further implementation considerations are provided to support this mechanism. A description of passing file handles is given, followed by examples, which show you how to implement a binary using this feature. </p> <p> <b>See also</b>  </p> <p> <xref href="GUID-B69FE02E-3A78-5438-BA7C-F7BB4CD3EB76.dita">File Server Client Side Overview</xref>  </p> <p> <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">Platform security</xref>. </p> <p>This section contains the following topics: </p> <ul><li id="GUID-79142E0A-C7F1-5545-A152-62C2EF681CC0"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-E5383F93-C846-5A10-BD59-6FE4754FDCD9">Overview</xref>  </p> </li> <li id="GUID-0CFEA4B0-C2EF-58A0-BE24-A55E695ED6FD"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-16841C97-292A-5EF3-BE88-EE35BF3A0BC8">APIs that support the sharing of file handles</xref>  </p> </li> <li id="GUID-1B37219E-0980-5B45-8C38-76CD59A8240D"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-B8F732D9-C97F-59FD-9623-E9D14EE657EF">Example 1 - Client passing a file handle to a server</xref>  </p> </li> <li id="GUID-DFCCFD0E-083E-50CD-9029-AE663311AFC4"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-707872E2-CD5D-5883-A3F5-C66B34C26035">Example 2 - Client requesting a file handle from a server</xref>  </p> </li> <li id="GUID-A0A1C7DC-177F-5D13-8E89-5952A68D07A2"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-8457BB92-54A3-578B-99AA-0AD5EF8C3068">Example 3 - Client passing a file handle to another process</xref>  </p> </li> <li id="GUID-167D7C88-4802-57F7-9331-EB6228EC7DDC"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-DB2E90FD-5847-54EA-AA40-B7C298AC7801">Implementation Considerations</xref>  </p> </li> <li id="GUID-987CE666-F693-5459-9157-AE9CB9DEC9CC"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-E94C9F16-0F5B-5DCB-B644-A022D26A029C">Testing</xref>  </p> </li> <li id="GUID-B5815E9B-EA0A-5B49-95EF-C010B5D29FFA"><p> <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-061BD238-43D0-5099-95B0-7E811CA59DAF">Summary</xref>. </p> </li> </ul> <section id="GUID-E5383F93-C846-5A10-BD59-6FE4754FDCD9"><title>Overview</title> <p>Allowing an open file to be passed from one process to another is a necessary feature in secure versions of Symbian OS. The platform security model provides a <i>data caging</i> mechanism, allowing processes and the OS itself to hide private data from other processes. </p> <p>However, while it is desirable to keep a file safe from other processes, it is useful to give a specific process access to the file: </p> <ul><li id="GUID-2553DE33-4C67-5258-862E-00B04CA17EB5"><p>without the need to give that process any special capabilities </p> </li> <li id="GUID-CB0364D9-2975-5829-ADFF-AD178BF8192C"><p>without the need to give the recipient of the file the full path name of that file. </p> </li> </ul> <p>New <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> member functions enable an open file handle to be passed from client to a server, from server to a client or from one process to another process. </p> <p>Note that file handles are not really handles in the usual sense of referring to a kernel object, but are simply numbers that refer to an open file within a file server session. </p> </section> <section id="GUID-16841C97-292A-5EF3-BE88-EE35BF3A0BC8"><title>APIs that support the sharing of file handles</title> <p>The following <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> member functions support the sharing of file handles between processes: </p> <ul><li id="GUID-C76BE924-7A28-5983-A9D4-05CCECF1B413"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-570BA348-E033-3A63-B702-D2554E95BF0B"><apiname>RFile::AdoptFromClient()</apiname></xref>  </p> </li> <li id="GUID-EE3FEBF4-6736-5B20-BD9E-21C752239B80"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-2E66E1ED-01FF-3610-BDB7-E83FE1559934"><apiname>RFile::AdoptFromServer()</apiname></xref>  </p> </li> <li id="GUID-21A5C873-A1F9-595F-92CE-0FE5F27939AE"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-943F64CA-B987-3BF5-B22F-5C637F12EEF4"><apiname>RFile::AdoptFromCreator()</apiname></xref>  </p> </li> <li id="GUID-972A6339-060D-59E0-94E1-4293A85ED5B2"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-3633606B-09E6-3DD7-8FA3-E20A16CFB87F"><apiname>RFile::TransferToServer()</apiname></xref>  </p> </li> <li id="GUID-5FF4033F-68F0-5024-8E38-BFF7846661A1"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-B25BF021-8298-397E-9C3B-E4D2E591D88F"><apiname>RFile::TransferToClient()</apiname></xref>  </p> </li> <li id="GUID-ECC89636-84B4-5B0B-8E31-6BE721D09405"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-FBE294F0-28C3-30E5-A6E4-E82699607216"><apiname>RFile::TransferToProcess()</apiname></xref>  </p> </li> <li id="GUID-ADA3EBCC-25AB-5E3D-B380-0D3BF643578E"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-EF48ADCC-01F7-3680-B090-9856301E3B9D"><apiname>RFile::Name()</apiname></xref>  </p> </li> <li id="GUID-63B6C3C7-902A-540F-B8DA-ECE10AB8EE5C"><p> <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-88AC4973-622F-350D-9957-8FA5D409B129"><apiname>RFile::Duplicate()</apiname></xref>  </p> </li> </ul> <p>The owner of an open <xref href="GUID-D3B4DF9D-BC59-36C1-BE81-D5B5591B2C63.dita"><apiname>Rfile</apiname></xref> object uses the <codeph>Transfer***()</codeph> member functions to transfer ownership of that object to another process. Note that the file-server session must be marked as shareable by calling <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-7FD79082-9F32-376B-9BFB-914CA704E3FF"><apiname>RFs::ShareProtected()</apiname></xref> before any file handles are transferred, otherwise the <codeph>Transfer***()</codeph> functions return <xref href="GUID-25493BDC-2D2E-3CC5-A5FE-A36804A4388A.dita"><apiname>KErrBadHandle</apiname></xref>. </p> <p>A receiving process uses the <codeph>Adopt***()</codeph> member functions to adopt an <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> object passed from another process. </p> <p>A receiving process uses the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-EF48ADCC-01F7-3680-B090-9856301E3B9D"><apiname>RFile::Name()</apiname></xref> member function to retrieve the file name and extension (but not the path) from the adopted <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> object. This is needed mainly by recognisers, which sometimes examine a file’s extension to determine whether it is valid or not. </p> <p>The <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-88AC4973-622F-350D-9957-8FA5D409B129"><apiname>RFile::Duplicate()</apiname></xref> member function allows a process to clone a received <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> object so that, for example, two separate functions or threads in the receiving process can read the file independently. </p> <p>As another example, consider a client that only grants access to its <i>data caged</i> private area files, to a specific system server. The process that opens the file and shares it (using one of the <codeph>Transfer***()</codeph> functions) controls read and write access to the file, while the corresponding client or server simply calls one of the <codeph>Adopt***()</codeph> functions. In effect, the <codeph>Adopt***()</codeph> functions behave like a file opening API such as <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-D5DCA731-EEC7-395A-91EC-2848DFBF5EF8"><apiname>RFile::temp()</apiname></xref>, <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-1EB4AA8F-9363-3EC5-8AE2-1F70F15FCF15"><apiname>RFile::Create()</apiname></xref> and <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-72470A68-7E07-30EF-A3C8-AA855CDAF60E"><apiname>RFile::Open()</apiname></xref>. The adopted file retains the access attributes of the file set by the process doing the sharing. The access attributes of the file can be changed by the adopting process if the security model permits it. </p> <p>The following sections present example code and describe how to share a file between two processes. This example code uses a simple server that offers the kind of APIs required to implement the sharing. Details of this server are not given. </p> <p>Note that for the sake of clarity, there is no error checking in the example code. </p> </section> <section id="GUID-B8F732D9-C97F-59FD-9623-E9D14EE657EF"><title>Example 1 - Client passing a file handle to a server</title> <p>In this example, a client passes an open file’s handle to a server. The server in turn passes the handle over to a second server. </p> <p>The example assumes that the paths and files used exist and are correct. A file server session (it is recommended that this session is used specifically for this purpose) is set as <i>shared</i> by calling <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-7FD79082-9F32-376B-9BFB-914CA704E3FF"><apiname>RFs::ShareProtected()</apiname></xref>. This enables the session to be used by another process. The file is then opened (it exists in the client’s private directory). The subsession handle and the fileserver session are then passed to the server using <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-3633606B-09E6-3DD7-8FA3-E20A16CFB87F"><apiname>RFile::TransferToServer()</apiname></xref>. The file handle can now be adopted by the server’s process. </p> <p><b>Client code: </b> </p> <codeblock id="GUID-D31EA6BD-53F3-5DF8-A447-96C1E99564AE" xml:space="preserve">
+
+    RFileHandleSharer handsvr;    // handle to server1
+    User::LeaveIfError(handsvr.Connect());        // connect to server1
+    CleanupClosePushL(handsvr);
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    User::LeaveIfError(fs.ShareProtected());
+
+    RFile file;
+    User::LeaveIfError(file.Open(fs, _L("test.txt"), EFileRead));
+    CleanupClosePushL(file);
+    
+    
+    // store the RFs handle in message slot 0 and the RFile handle in slot 1
+    TIpcArgs ipcArgs;
+    User::LeaveIfError(file.TransferToServer(ipcArgs, 0, 1));        
+
+    // send to server
+    User::LeaveIfError(handsvr.SendReceive(EMsgXXX, ipcArgs));
+
+    // ...continue to use file
+    //
+
+    CleanupStack::PopAndDestroy(3); // close file, fs, and handsvr
+</codeblock> <p><b>Server1 code: </b> </p> <codeblock id="GUID-73CA766C-FE29-56C1-94C3-2FC23CAC910E" xml:space="preserve">
+
+    void CFHSession::PassFileHandleL(const RMessage2&amp; aMsg)
+        {
+        RFileHandleSharer2 handsvr2;    // connect to server2
+        User::LeaveIfError(handsvr2.Connect());
+        CleanupClosePushL(handsvr2);
+    
+        RFile file;
+    
+        // Adopt the file using the RFs handle from message slot 0 and the RFile handle from slot 1
+        User::LeaveIfError(file.AdoptFromClient(aMsg, 0, 1));    
+        CleanupClosePushL(file);
+    
+        // Use the file
+        // …
+    
+    
+        // pass the file handle on to server2
+        TIpcArgs ipcArgs;
+        User::LeaveIfError(file.TransferToServer(ipcArgs, 0, 1));
+        User::LeaveIfError(handsvr2.SendReceive(EMsgXXX, ipcArgs));
+    
+        // continue to use file
+        // …
+
+        CleanupStack::PopAndDestroy(2);    // close file and handsvr2
+    
+        aMsg.Complete(KErrNone);
+        }
+
+</codeblock> <p><b>Server2 code: </b> </p> <codeblock id="GUID-A48D53BF-9616-5CBD-91FD-588D1EED71F7" xml:space="preserve">
+
+    void CFHSession2::PassFileHandleL(const RMessage2&amp; aMsg)
+        {
+        RFile file;
+
+        // Adopt the file using the RFs handle from message slot 0 and the RFile handle from slot 1
+        User::LeaveIfError(file.AdoptFromClient(aMsg, 0, 1));    
+        CleanupClosePushL(file);
+    
+        // ..use the file
+    
+        CleanupStack::PopAndDestroy();    // close file
+    
+        aMsg.Complete(KErrNone);
+        }
+
+</codeblock> </section> <section id="GUID-707872E2-CD5D-5883-A3F5-C66B34C26035"><title>Example 2 - Client requesting a file handle from a server</title> <p>This example is similar to <xref href="GUID-E93D3767-0F74-5335-8233-8236908F70AF.dita#GUID-E93D3767-0F74-5335-8233-8236908F70AF/GUID-B8F732D9-C97F-59FD-9623-E9D14EE657EF">Example 1</xref> but there are some differences. </p> <p>A client connects to a server that provides a shared fileserver session and a file handle to an open file when requested. </p> <p><b>Client code: </b> </p> <codeblock id="GUID-D93672C4-9FBA-543F-8C2B-5F7ABFCC2A50" xml:space="preserve">
+
+    RFileHandleSharer handsvr;    // handle to server
+    User::LeaveIfError(handsvr.Connect());        // connect to server
+    CleanupClosePushL(handsvr);
+
+    // Retrieve the RFs and RFile handles from the server
+    TInt fsh;            // session (RFs) handle
+    TPckgBuf&lt;TInt&gt; fh;    // sub-session (RFile) handle
+    
+    fsh = handsvr.SendReceive(EMsgXXX, TIpcArgs(&amp;fh));    // pointer to fh in slot 0
+    User::LeaveIfError(fsh);
+
+// Adopt the file using the returned handles
+RFile file;
+User::LeaveIfError(file.AdoptFromServer(fsh, fh()));
+    CleanupClosePushL(file);
+
+// ..use the file
+//
+
+    CleanupStack::PopAndDestroy(2);    // close file and handsvr
+
+</codeblock> <p><b>Server code: </b> </p> <codeblock id="GUID-4A16D8FB-C235-5DE6-A8E3-A7042DDCBBD4" xml:space="preserve">
+
+    void CFHSession::GetFileHandleL(const RMessage2&amp; aMsg)
+        {
+        RFs fs;
+        User::LeaveIfError(fs.Connect());
+        CleanupClosePushL(fs);
+    
+        User::LeaveIfError(fs.ShareProtected());
+    
+        RFile file;
+        User::LeaveIfError(file.Open(fs, _L("test.txt"), EFileRead));
+
+        // transfer to client: store the RFile handle into the package buffer in slot 0 
+        // and complete the message with the RFs handle
+        // NB this assumes that if TransferToClient() return an error, then
+        // the standard CServer2::RunError() will complete the message
+        User::LeaveIfError(file.TransferToClient(aMsg, 0));
+        ASSERT(aMsg.IsNull());    // message should have been completed
+
+        file.Close();
+        CleanupStack::PopAndDestroy(1);    // fs
+        }
+
+</codeblock> </section> <section id="GUID-8457BB92-54A3-578B-99AA-0AD5EF8C3068"><title>Example 3 - Client passing a file handle to another process</title> <p><b>Creator code: </b> </p> <codeblock id="GUID-92F72808-9A52-5504-8580-EACDF57353B8" xml:space="preserve">
+
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+
+    User::LeaveIfError(fs.ShareProtected());
+    
+    RFile file;
+    User::LeaveIfError(file.Open(fs, _L("test.txt"), EFileRead));
+    CleanupClosePushL(file);
+    
+    // create test process
+    RProcess p;
+    User::LeaveIfError(p.Create(_L("FHServer.exe"),  KNullDesC));
+    CleanupClosePushL(p);
+
+    // transfer to process storing the RFs handle into environment  slot 1 and the RFile handle into slot 2
+    // NB slot 0 is reserved for the command line
+    User::LeaveIfError(file.TransferToProcess(p, 1, 2));
+
+    // Wait for handle to be transferred; wrap in an active object if blocking this thread is undesirable
+    TRequestStatus transStatus;
+    p.Rendezvous(transStatus);
+
+    if(transStatus != KRequestPending)
+        { // Process creation failed
+        p.RendezvousCancel(transStatus);
+        p.Kill(0);
+        User:Leave(transStatus.Int());
+        }
+    // Start the process
+    p.Resume();
+
+
+    User::WaitForRequest(transStatus);
+    User::LeaveIfError(transfStatus.Int());
+
+    // Now we can safely close the fs
+    CleanupStack::PopAndDestroy(3);    // close p, file, and fs
+
+</codeblock> <p><b>Created process code: </b> </p> <codeblock id="GUID-E429B94F-E373-5F35-A4AC-385732933C23" xml:space="preserve">
+
+    RFile file;
+
+    // Adopt the file using the RFs handle into environment  slot 1 and the RFile handle into slot 2
+    User::LeaveIfError(file.AdoptFromCreator(1));
+    CleanupClosePushL(file);
+    RProcess::Rendezvous(KErrNone); // Signal transfer completed successfully
+
+    // ..use the file
+    //
+
+    CleanupStack::PopAndDestroy();    // close file                                                                                                                                   
+
+</codeblock> </section> <section id="GUID-DB2E90FD-5847-54EA-AA40-B7C298AC7801"><title>Implementation Considerations</title> <p>An <codeph>RFile</codeph> object contains two handles: </p> <ul><li id="GUID-D724D4E0-5E7F-5208-A55D-395A8C799BB5"><p>a file (or subsession) handle </p> </li> <li id="GUID-1E73FE27-B147-592C-9C36-D07A266D9805"><p>a file server handle </p> </li> </ul> <p>When a file handle is adopted by the <i>receiver</i>, the new <codeph>RFile</codeph> object that is created by the <codeph>Adopt***()</codeph> member functions contains a duplicate of the sender’s file server handle. This new <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> object, however, has a flag set in the subsession handle to allow it to close its associated file server handle automatically whenever <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-98C413E8-4C84-3DC3-B798-8C25E07EDDFF"><apiname>RFile::Close()</apiname></xref> is called. This removes the need to maintain a separate <codeph>RFs</codeph> object when adopting a file. </p> <p><b>Security issues </b> </p> <p>It is <i>strongly</i> recommended that the process from which a shared file originates, opens a file server session specifically for this purpose, and closes it after it has finished using the shared file. This is because the session handle is shared along with the file handle, and therefore, any other files opened in that session may be accessible to the other process. The <i>receiving</i> process can increment file handle numbers (remember file handles are only numbers) and gain access to files. </p> <p>It is also recommended that the adopting process does not open other files with the session it receives, as the process that shared the file may do the same. </p> <p><b>RFs and RFile lifetime issues </b> </p> <p>The <codeph>RFile</codeph> subsession handle passed to <codeph>Transfer***()</codeph> and <codeph>Adopt***()</codeph> member functions is duplicated by the <codeph>Transfer***()</codeph> functions so that the original <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> handle can either be closed immediately or used for a period and then closed. This is because it is not the same handle as the one being adopted. </p> <p>If there is no need to continue using the <codeph>RFile</codeph> handle, then the <codeph>RFs</codeph> handle can be safely closed as follows: </p> <ul><li id="GUID-31668FA4-BC76-52BA-9535-E8ED890C6F83"><p>For <codeph>TransferToServer()</codeph> or <codeph>AdoptFromClient()</codeph>, the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> handle can be safely closed once the server has called <codeph>AdoptFromClient()</codeph>. This would normally be done on return from a synchronous call. </p> </li> <li id="GUID-F5A80DB7-A09B-516F-9091-A6B3B83489F9"><p>For <codeph>TransferToClient()</codeph> or <codeph>AdoptFromServer()</codeph>, the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> handle can be safely closed once the server has called <codeph>TransferToClient()</codeph>. </p> </li> <li id="GUID-85F9159A-25D8-5356-ADE3-048D15B67C13"><p>For <codeph>TransferToProcess()</codeph> or <codeph>AdoptFromCreator()</codeph>, the <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> handle can be safely closed once the client has called <codeph>TransferToProcess()</codeph>. </p> </li> </ul> </section> <section id="GUID-E94C9F16-0F5B-5DCB-B644-A022D26A029C"><title>Testing</title> <p>Extensive testing of implementations of this mechanism are not required as, in effect, you are simply using a file server subsession (<xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>) API. It is recommended that you test the client-server system, but that will be specific to how you use it. If it works you have probably implemented it correctly, provided you adhere to the security considerations of the shared file. </p> </section> <section id="GUID-061BD238-43D0-5099-95B0-7E811CA59DAF"><title>Summary</title> <p>Passing files between processes is a useful tool, but it is important that you adhere to the security advice. </p> <p>To share a file handle, take the following steps: </p> <ol id="GUID-52469F0B-A94B-5553-8F81-D73590361181"><li id="GUID-BA9B1DCC-B185-56FB-B36A-A00BC204B9AD"><p>Ensure the file exists. A file to be shared between two processes is a resource that lives in a system or private location for security. </p> </li> <li id="GUID-439EE193-34F9-527D-BB2F-F1DFC3E90072"><p>Set the fileserver session as shareable so that it can be used by more that one process. A fileserver session (as with all server sessions) is a Kernel object. </p> </li> <li id="GUID-FDFECB4A-991F-5E14-949D-444DE00311D5"><p>Transfer the session handle and the subsession handle from the open file using one of the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref>  <codeph>Transfer***()</codeph> member functions and the message passing system between client and server. </p> </li> <li id="GUID-3E169BD6-47A7-5275-92B5-08A98BB20B6F"><p>Use one of the <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> <codeph>Adopt***()</codeph> member functions to begin using the handles in the receiving process. </p> </li> <li id="GUID-E0CCBF52-D5CD-5199-8FC8-20DEB6F2F1B6"><p>Once you have finished, close the received <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> object. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E93E577A-0BDF-5472-B79F-DA60841C30CC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E93E577A-0BDF-5472-B79F-DA60841C30CC" xml:lang="en"><title>Cleanup
+requirements</title><shortdesc>This document describes the requirements for cleanup after a function
+leaves.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a function leaves, it transfers control directly to the statement
+following the <codeph>TRAP</codeph> (or <codeph>TRAPD</codeph>) macro under
+which it was invoked. This is carried out by setting the stack pointer to
+the context of the original <codeph>TRAP</codeph> macro, and jumping to the
+desired program location. Therefore,</p>
+<ul>
+<li id="GUID-FFC56E72-DCCD-5B0C-BDF4-41EE76BB808E"><p>any objects created
+as automatic variables, passed by value as arguments, or created as member
+variables of other objects so created, will be <keyword>orphaned</keyword>:
+their destructor will not be called, and any resources they claim except for
+storage space on the stack, cannot be recovered.</p> </li>
+</ul>
+<p>This key aspect of Symbian platform exceptions has far-reaching implications:</p>
+<ul>
+<li id="GUID-587C3891-CE53-5F83-96E9-94E17E869CBA"><p>There should be a clear
+distinction between objects which can be safely orphaned, and those which
+cannot. </p> <p>This is embodied in the naming convention for types. All types
+beginning with <codeph>T</codeph> can be safely orphaned, including, for instance, <codeph>TInt</codeph>, <codeph>TPoint</codeph>, <codeph>TPtr</codeph> and many others. Such objects can be freely allocated on the stack.</p> <p>The
+basic requirement for <codeph>T</codeph> objects is that all their data is
+contained internally. Pointers, handles and references to data owned by the <codeph>T</codeph> object
+are not allowed (although such references to data owned by other objects is
+allowed).</p> <p><codeph>C</codeph> objects must never be orphaned: they should
+never be allocated on the stack.</p> <p><codeph>R</codeph> objects may contain
+handles to external resources, but are generally designed so that the R object
+can be copied without copying its resources. Copied <codeph>R</codeph> objects
+may therefore be allocated on the stack: the stack-allocated copies may safely
+be orphaned, provided the resources are safely accessible by some other means.</p> </li>
+</ul>
+<ul>
+<li id="GUID-9550E9C4-F908-5AED-9294-8D74D73AA3CE"><p>Objects which cannot
+be safely orphaned must, if allocated inside the trap harness, be accessible
+somehow so they can be cleaned up. </p> </li>
+</ul>
+<p>The <i>cleanup stack</i> is the Symbian platform mechanism for handling
+this last problem. </p>
+<section id="GUID-459CE643-4A19-41E2-8251-92F0EA6A5C7D"><title>Example</title> <p>The problem for heap-allocated resources
+is shown below. If the call to <codeph>DoSomethingL()</codeph> leaves, the <codeph>CExample</codeph> object
+would be <keyword>orphaned</keyword> on the heap: the memory used for it could
+not have been recovered until the program terminates.</p> <codeblock id="GUID-475F1498-F050-5F2B-A1DE-81AA4F9323F2" xml:space="preserve">void doExampleL()
+ {
+ // An T-type object: can be declared on the stack
+ TBuf&lt;10&gt; buf;
+
+ // A C-type object: must be allocated on the heap
+ // Allocate and leave if can not
+ CExample* myExample = new (ELeave) CExample;
+
+ // do something that cannot leave: no protection needed
+ myExample-&gt;iInt = 5; 
+
+ // PROBLEM: do something that can leave
+ myExample-&gt;DoSomethingL();
+   
+ // delete
+ delete myExample;
+ }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0" xml:lang="en"><title>Listening
+for Property Changes</title><shortdesc>The sensor channel APIs enable the client applications to be notified
+about the changes to properties associated with a sensor channel.</shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-D1D22060-E453-4046-953D-10486D45885F"> Before listening for
+the property changes of a sensor channel, you must <xref href="GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita#GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B/GUID-FBBD3A8B-F240-4DC0-B516-3A51FDD86A88">open the sensor channel</xref>.         </prereq>
+<context id="GUID-0D960123-7430-42B5-A84D-B63F2852DD7C"><p>The client applications
+can use the property listener to monitor the property changes made by other
+clients.</p></context>
+<steps id="GUID-4DD07DEC-6017-4237-BE46-1D69E5FBD744-GENID-1-6-1-8-1-1-6-1-4-1-4-1-8-1-3-3">
+<step id="GUID-9A69E5AD-E938-4092-A8C2-CB65C37C8962-GENID-1-6-1-8-1-1-6-1-4-1-4-1-8-1-3-3-1"><cmd>Create a property
+listener implementation for the <parmname>MSensrvPropertyListener</parmname> interface.</cmd>
+<stepxmp><codeblock xml:space="preserve">class PropertyListener:public MSensrvPropertyListener
+    {
+    public:    
+    void PropertyChanged(CSensrvChannel &amp;aChannel, const TSensrvProperty &amp;aChangedProperty)
+        {
+        ...
+         //Implementation
+        }
+    void PropertyError(CSensrvChannel &amp;aChannel, TSensrvErrorSeverity aError)
+        {
+        ...
+         //Implementation
+        }
+    void SetPropertySuccessIndicationChanged(TSetPropertySuccessIndicator aIndication)
+        {
+        ...
+         //Implementation
+        }
+    void GetPropertyListenerInterfaceL(TUid aInterfaceUid, TAny *&amp;aInterface)
+        {
+        ...
+         //Implementation
+        }
+    };</codeblock></stepxmp>
+</step>
+<step id="GUID-6AB619B9-0259-493A-BC40-CAF5BF337E04"><cmd>Start property listening
+by passing an instance of property listener implementation using <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-4552066A-4FC1-3876-89AA-DC9B081B3814"><apiname>CSensrvChannel::SetPropertyListenerL()</apiname></xref>.</cmd>
+<stepxmp><codeblock xml:space="preserve">//Instance of the property listener implementation
+PropertyListener propListener;
+...
+CSensrvChannel* channel;
+...
+channel-&gt;SetPropertyListenerL(&amp;propListener);
+...</codeblock></stepxmp>
+<info>When a property change occurs, a <parmname>PropertyChanged()</parmname> notification
+is delivered through the <parmname>MSensrvPropertyListener</parmname> callback
+interface to the clients that are listening for property changes.<note> The
+client that set the property is not notified.</note></info>
+</step>
+<step id="GUID-8AD85E3B-EBBC-41E4-A32C-AF2A52B018E6"><cmd>Once you get the
+required property changes associated with the sensor channel, you can stop
+property listening by passing a NULL parameter to the <xref href="GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844.dita#GUID-22DC917F-D833-3531-AB2D-A6E2D52EF844/GUID-4552066A-4FC1-3876-89AA-DC9B081B3814"><apiname>CSensrvChannel::SetPropertyListenerL()</apiname></xref> function.</cmd>
+<stepxmp><codeblock xml:space="preserve">channel-&gt;SetPropertyListenerL();</codeblock></stepxmp>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9"><title>MTM Registration</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Any MTM that is used by a client application must be registered with the Message Server. The registration information about all the MTMs installed on a device is contained in a dedicated file managed by the Message Server called the MTM Registry. Registry classes use this registration data to allow MTM components to be identified and instantiated. For example, the <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita"><apiname>CClientMtmRegistry</apiname></xref> class has a member function to create a Client-side MTM object. </p> <section><title>MTM registries</title> <p>Registration of an MTM on the device is managed by four registries—three transient registries within each client process (Client MTM, UI MTM and UI Data MTM) and one permanent registry on the server-side (Server MTM). The server-side registry owns and maintains a streamed copy of the registration data for all MTM components on the device. When a new <xref href="GUID-C45FFBDD-37D4-5892-8D13-CFE292264268.dita#GUID-C45FFBDD-37D4-5892-8D13-CFE292264268/GUID-EBBDB3ED-B5BD-580C-8869-BA35DBA64F1F">client-side registry</xref> is created by a client process, the server-side registry initialises the client registry by setting the available and relevant types (UI, UI Data, Client) of MTMs. This initialisation takes place through the Message Server and the session object which is owned by the process that instantiated the new registry object. </p> <p> <b>Note:</b> Updating the client-side registries during run-time is done through the same process. The MTM installation control panel is a client-side process that uses a session object to talk to the server. Registration data representing new MTM DLLs is passed to the Message Server and onto the server-side registry. The server-side registry then updates its cached data before notifying all current client processes about the newly available MTM DLL. </p> <p>The Messaging Server uses a registry to instantiate Server MTMs, and deletes the MTM objects when there no client requests. The server-side registry classes monitor the use of MTM component DLLs and maintain a reference count of the objects instantiated from each DLL. When that reference count falls to zero, the DLL that provides the MTM is unloaded. However, this is not done immediately, but only after the time specified in <xref href="GUID-EEC5813B-4C9F-323B-BCD6-1BB1A08D0B8C.dita"><apiname>TTimeIntervalMicroSeconds32</apiname></xref> <codeph>
+          aTimeoutMicroSeconds32</codeph>. This increases the efficiency in cases where the DLL is required again shortly. </p> <p>The <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita#GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8/GUID-3010EA8F-DCC4-34AD-ADD8-83B789B10638"><apiname>CClientMtmRegistry::NewMtmL(TUid)</apiname></xref> function is used to create a Client MTM object for a protocol with a specified UID. The following steps illustrate how a Client MTM is identified and initialised: </p> <ol id="GUID-A4C4A3AE-395F-586C-BFAB-D1B0E30CFC8C"><li id="GUID-D9CD05E2-620B-501A-9C0D-8C24BE47F997"><p>A Messaging client application calls the <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita#GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8/GUID-76DA50D4-BA2E-3B06-8D80-A0619337C233"><apiname>CClientMtmRegistry::NewMtmL()</apiname></xref> function, passing the UID of the MTM component that it wants. </p> </li> <li id="GUID-7A27FC2C-1CA6-53F0-B2EE-D1814E455BF1"><p>The <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita"><apiname>CClientMtmRegistry</apiname></xref> class searches the registry for a record for the required MTM component, and obtains the library name from it, and the ordinal number of the library's exported factory function that can create an MTM object. </p> </li> <li id="GUID-4A89BA96-B946-5EC6-B285-9797A41E967A"><p>The <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita"><apiname>CClientMtmRegistry</apiname></xref> class loads the DLL and calls the factory function, passing the new object back to the caller. </p> </li> </ol> <p>A similar process is used for UI and UI Data MTMs. After a client application has obtained an MTM object from the registry, it is responsible for that object and must delete it when it is no longer needed. </p> </section> <section id="GUID-EBBDB3ED-B5BD-580C-8869-BA35DBA64F1F"><title>Example</title> <p>The following example explains the steps to create a Client MTM registry. </p> <p>When a Messaging client application is created to send and receive messages, a Client registry must be created. For detailed instructions, see the <xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">POP3</xref> and <xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">IMAP4</xref> example programs. </p> <p>Use the <xref href="GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8.dita#GUID-A0682D04-9084-3DC3-AA18-5B81A78A1DA8/GUID-DBD7038B-A0E2-3791-A4C9-3A22FFCA146A"><apiname>CClientMtmRegistry::NewL()</apiname></xref> function with <xref href="GUID-EEC5813B-4C9F-323B-BCD6-1BB1A08D0B8C.dita"><apiname>TTimeIntervalMicroSeconds32</apiname></xref> <codeph>
+          aTimeoutMicroSeconds32</codeph> to create a Client MTM object for a protocol with a specified UID. The <xref href="GUID-EEC5813B-4C9F-323B-BCD6-1BB1A08D0B8C.dita"><apiname>TTimeIntervalMicroSeconds32</apiname></xref> <codeph>
+          aTimeoutMicroSeconds32</codeph> parameter represents a microsecond time interval stored in 32 bit, which is used to wait before unloading MTM DLLs. </p> <codeblock id="GUID-1F9B89A1-C908-5578-B3FD-B4B1EA5F032A" xml:space="preserve">void CImap4Example::CreateClientRegistryL()
+    {
+    // Create a message server session
+    iSession=CMsvSession::OpenSyncL(*this);
+    CleanupStack::PushL(iSession);
+
+    // Create a client MTM registry
+                // Time interval to unload a unused MTM DLL
+    iClientRegistry=CClientMtmRegistry::NewL(*iSession,KMsvDefaultTimeoutMicroSeconds32);
+                // IMAP4 email account   
+                if (iClientRegistry != NULL &amp;&amp; iClientRegistry-&gt;IsPresent(KUidMsgTypeIMAP4))
+        {
+        CleanupStack::PushL(iClientRegistry);
+        }    
+    }</codeblock> <p>For more details on how a Messaging client application gets an instance of the client MTM registry and creates Client MTM objects for the specified UID, see <xref href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita">An Email manager using POP3 and SMTP</xref> and <xref href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita">An Email manager using IMAP4 and SMTP</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E97C2A7E-8E8F-58E6-99D4-288589385B44.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-E97C2A7E-8E8F-58E6-99D4-288589385B44" xml:lang="en"><title> Querying
+TLD Policy Data</title><shortdesc>This document explains how to retrieve the characters from the
+Top-Level Domain Blacklists and Whitelists. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-67B2BC51-7D62-4A5D-84A4-259F645FBF3D"><p>Before you start, you must: </p> <ul>
+<li id="GUID-1EE28078-9695-5F4E-AFBA-18B2E31B4994"><p>Be familiar with the
+concepts of Top-Level Domain (TLD) and International Domain Name (IDN): see <xref href="GUID-6A78F618-09A9-56A7-8C58-98C353BF0788.dita">What is the Domain Name Server</xref>. </p> </li>
+</ul> </prereq>
+<context id="GUID-7778FEFB-9E66-4C3F-8102-2A20F705B058"><p>The TLD policy data is composed of a list of TLDs. </p> <p>For
+each of the TLDs, the Whitelist contains the trusted UTF-8 characters and
+the Blacklist contains the suspect UTF-8 characters. </p> </context>
+<steps id="GUID-DD346F2F-33BE-5510-866D-B8F2B9748EA6">
+<step id="GUID-567ECE81-C1EF-56A0-9654-9AB1151183D2"><cmd>Create a connection
+with the InetURIList server. </cmd>
+<stepxmp><codeblock id="GUID-9F4059C8-89C9-5528-A75D-0F6DF59B7615" xml:space="preserve">
+RInetUriList uriServer;
+uriServer.OpenL();
+CleanupClosePushL(uriServer);
+</codeblock> </stepxmp>
+</step>
+<step id="GUID-D0A705EA-1A7E-56E3-A3A8-8CC6A9AA1820"><cmd>Build a <xref href="GUID-792B548A-7B80-3DA3-9008-7525C3B3A593.dita"><apiname>TPolicyQueryArgs</apiname></xref> object. </cmd>
+<info>The constructor takes an URI as its first parameter, which defines which
+TLD the request is made on. </info>
+<substeps id="GUID-4AE60DE9-963C-5093-AF74-CB634EBA1A41">
+<substep id="GUID-C83724BE-BE79-59A9-B7A2-A6434CA95F2B"><cmd/>
+<info>To request a character set, pass the list type (<xref href="GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3.dita#GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3/GUID-100518D1-3FD1-34A4-BF2F-6D80BF9420F3"><apiname>InetUriList::EWhiteList</apiname></xref> or <xref href="GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3.dita#GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3/GUID-F140C173-AAF2-3078-A20B-CD2198D8FC44"><apiname>InetUriList::EBlackList</apiname></xref>)
+as the second parameter, and the <xref href="GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3.dita#GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3/GUID-2C7F5445-8AA0-3487-89E4-AD1FCA8ABA44"><apiname>InetUriList::EPolicyCharSet</apiname></xref> request
+type as the third parameter. </info>
+<stepxmp><codeblock id="GUID-DCB3AB91-32D8-5666-8DD3-3280129A6E93" xml:space="preserve">
+// The TLD is "COM"
+_LIT8(KUri, "http://www.nokia.com");
+
+// the query requests the white list character set
+TPolicyQueryArgs tldArgs(KUri, InetUriList::EWhiteList, InetUriList::EPolicyCharSet);
+</codeblock> </stepxmp>
+</substep>
+<substep id="GUID-3BCB0DC7-CE81-5978-B9DB-1BA9CF00245D"><cmd/>
+<info>To check whether an URI is unsafe, only pass the <xref href="GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3.dita#GUID-FC9862A2-8C4E-3558-90A8-610B03C55FE3/GUID-017B224C-9BE2-3B60-91A1-CAE36B929223"><apiname>InetUriList::EPolicyListType</apiname></xref> request
+type as the second parameter. </info>
+<stepxmp><codeblock id="GUID-3AAE8443-F7EF-581F-BF6D-1F66D8B6608D" xml:space="preserve">
+// The TLD is "COM"
+_LIT8(KUri, "http://www.nokia.com");
+
+// the query requests to check the URI
+TPolicyQueryArgs tldArgs(KUri, InetUriList::EPolicyListType);
+</codeblock> </stepxmp>
+</substep>
+</substeps>
+</step>
+<step id="GUID-A616A748-8962-5CC0-A5F9-A5E97BA30BC1"><cmd>Create a <xref href="GUID-83761AF1-B6D4-3946-88D6-DB649D554138.dita"><apiname>TQueryResults</apiname></xref> object
+to store the result. </cmd>
+<stepxmp><codeblock id="GUID-0C52490F-6D74-542B-89DC-B9DFD2012538" xml:space="preserve">TQueryResults tldResult;</codeblock> </stepxmp>
+</step>
+<step id="GUID-27E11482-72C6-5645-A381-B96843E522A6"><cmd>Call the <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita#GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2/GUID-59D3BF9F-4808-33C7-8D27-63EEE7BD70E1"><apiname>RInetUriList::QueryTldInfoL()</apiname></xref> method
+with your query and result structures. </cmd>
+<stepxmp><codeblock id="GUID-E7CCF168-823A-5458-AEB8-3DFFC40384FB" xml:space="preserve">RInetUriList::QueryTldInfoL(tldArgs, tldResult);
+
+// retrieve the characters
+HBufC8* policyData(NULL);
+policydata = tldResult.CharSetL();</codeblock> </stepxmp>
+</step>
+<step id="GUID-1D67B3E0-3AC6-5829-A691-9DFA6C7B34DC"><cmd>Close the connection
+with the InetURIList server. </cmd>
+<stepxmp><codeblock id="GUID-A0BD5890-3D52-5A0A-B3AD-A02FD886B22C" xml:space="preserve">CleanupStack::PopAndDestroy(&amp;uriServer);</codeblock> </stepxmp>
+</step>
+</steps>
+<result id="GUID-F79600BE-2553-4671-996E-2CA93480C3D7"><p>The <codeph>TQueryResults</codeph> object contains the requested
+TLD policy data. </p> <ul>
+<li id="GUID-92BF741E-4764-59AB-81C2-8680F71EA4EF"><p>With an <codeph>EPolicyListType</codeph> request,
+the results objet contains <codeph>ETrue</codeph> is the URI contains suspect
+characters, <codeph>EFalse</codeph> otherwise. </p> </li>
+<li id="GUID-846E962F-3AF4-5A45-8B8E-BBB7B4F8B07B"><p>An <codeph>EPolicyCharSet</codeph> request,
+the results objet contains the list of characters of the requested list. </p> </li>
+</ul> </result>
+<example id="GUID-8D5A4D7A-C9C9-5F16-8DE0-94212B7131F3"><title>Query example</title> <p>Here
+is the combination of the code snippets provided in the above steps: </p> <codeblock id="GUID-5E01A904-0BAD-571F-9DBB-486154D9DE04" xml:space="preserve">
+// Open the connection
+RInetUriList uriServer;
+uriServer.OpenL();
+CleanupClosePushL(uriServer);
+
+// The TLD is "COM"
+_LIT8(KUri, "http://www.nokia.com");
+
+// Build a query requesting a character set
+TPolicyQueryArgs tldArgs(KUri, InetUriList::EPolicyCharSet);
+
+// Create an object for the results
+TQueryResults tldResult;
+
+// Make the query
+RInetUriList::QueryTldInfoL(tldArgs, tldResult);
+
+// retrieve the characters
+HBufC8* policyData(NULL);
+policydata = tldResult.CharSetL();
+
+// [...] 
+// process the policy data
+
+// Close the connection
+CleanupStack::PopAndDestroy(&amp;uriServer);</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-EDA831F7-7248-5C00-B6BE-B7F44097C9B6.dita"><linktext>WhiteList/BlackList
+TLD Overview</linktext></link>
+<link href="GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950.dita"><linktext>Modifying
+TLD Policy Data</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9B97347-D703-4758-A5CE-423A6CB4E474.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E9B97347-D703-4758-A5CE-423A6CB4E474" xml:lang="en"><title>Embedding
+camera applications</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In your applications, you can embed other applications that provide services,
+such as image capture and voice recording. For example, a multimedia messaging
+service (MMS) editor could embed the camera application to capture images
+and insert them in multimedia messages.</p>
+<p>Use the New File Service Client API to create a service client. You can
+download the API from the <xref href="http://wiki.forum.nokia.com/index.php/SDK_API_Plug-in" scope="external">SDK API plug-in page</xref> on Forum Nokia.</p>
+<note><p>The binary compatibility of the API plug-ins is not guaranteed either
+between platform versions or within a platform version. Test your application
+on each device model that the application can be installed on to ensure the
+best possible user experience. To prevent application installation on other
+than tested devices, define the product IDs (also called manufacturer IDs)
+in the <xref href="GUID-7F1B2577-2FEF-45F9-B32F-745DFE0F0D95.dita">package file</xref>.
+For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/Installing-ref/PKG_format/PKG_dependency.html" format="application/java-archive">Hardware/UI platform dependency</xref>.</p></note>
+<section id="GUID-A7CFB0D3-0F64-4BCA-93F1-28D7F2F892A0"><title>To embed camera applications</title><ol>
+<li id="GUID-B945513D-1DBA-46A5-BE66-20F36EF8E4B4"><p>Use the <codeph>CNewFileServiceClient</codeph> method
+to create a new file service client. </p><codeblock xml:space="preserve">CNewFileServiceClient* fileClient = NewFileServiceFactory::NewClientL();
+CleanupStack::PushL( fileClient );
+</codeblock></li>
+<li id="GUID-3CADBF28-0A9F-44C4-B7AF-AF9628E8F659"><p>Create an array to hold
+the file names for the resulting files.</p><codeblock xml:space="preserve">CDesCArray* fileNames = new ( ELeave ) CDesCArrayFlat( 1 );
+CleanupStack::PushL( fileNames );
+
+</codeblock></li>
+<li id="GUID-1D168D25-1D05-4A19-9811-1DA4394F0B1E"><p>Use generic parameters
+to control the service.</p><codeblock xml:space="preserve">CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC();</codeblock></li>
+<li id="GUID-B4CDA320-B9F5-47F6-828B-91EC5B8820ED"><p>Specify image resolution.
+The application matches the value that you enter to the closest resolution
+supported (in pixels). Use the value (0,0) for the default MMS resolution,
+which is the lowest quality.</p><codeblock xml:space="preserve">TSize resolution( 1600, 1200 ); // 2 megapixels
+</codeblock><p>If the device has two cameras, the camera available at the
+time of launching the service client is used. You cannot select whether to
+launch the primary or secondary camera. Users cannot switch from the primary
+camera to the secondary one after launching the service client. The secondary
+camera always uses a fixed resolution that you cannot specify.</p></li>
+<li id="GUID-DBB7629D-604E-40B7-8C2E-BA3D439C77F9"><p>Package the object.</p><codeblock xml:space="preserve">TPckgBuf&lt;TSize&gt; buffer( resolution );
+TAiwVariant resolutionVariant( buffer );
+TAiwGenericParam param( EGenericParamResolution, resolutionVariant );
+paramList-&gt;AppendL( param );
+</codeblock></li>
+<li id="GUID-206F9549-5A8E-42D1-841E-6DA9A28A061D"><p>Specify the application
+to launch. The application UID identifies the application to be started as
+a server application. </p><codeblock xml:space="preserve">const TUid KUidCamera = { 0x101F857A }; // Camera UID for S60 5th edition
+
+...
+
+TBool result = fileClient-&gt;NewFileL( KUidCamera, *fileNames, paramList,
+                               ENewFileServiceImage, EFalse );
+</codeblock></li>
+<li id="GUID-4C0A3DB0-F8AA-4E75-974E-2AA062268480"><p>Access the images. The <codeph>fileNames</codeph> array
+can hold more than one item.</p><codeblock xml:space="preserve">if ( result )
+    {
+    CEikonEnv::InfoWinL(_L("Success"),_L(""));
+    for(TInt i=0;iCount();i++)
+       {
+       TPtrC fileName=fileNames-&gt;MdcaPoint(i);
+       ...
+}
+else
+    {
+    CEikonEnv::InfoWinL(_L("Failed"),_L(""));
+    }
+
+CleanupStack::PopAndDestroy( fileClient );
+CleanupStack::PopAndDestroy( paramList );
+CleanupStack::PopAndDestroy( fileNames );</codeblock></li>
+</ol></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9C608C0-AC22-5267-BEC4-207C9758F968.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E9C608C0-AC22-5267-BEC4-207C9758F968" xml:lang="en"><title>Stores Guide</title><shortdesc>Provides persistent, embedded, dictionary, and memory stores. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the material in this section to learn how to use and manage stores. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e386650_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9C896AE-62B4-54DC-9958-913D19D14DC6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E9C896AE-62B4-54DC-9958-913D19D14DC6" xml:lang="en"><title>Network Information Tutorial</title><shortdesc>This tutorial describes the tasks to get the network information with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F"><title>Background Processing for Ecam</title><shortdesc>This topic describes how to capture an image using standalone background processing in Ecam. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-18F6B6F4-909B-58C3-A6B3-014E8B4D5919-GENID-1-6-1-17-1-1-5-1-5-1-6-1-4-1-12-1-3-1"><p>Before you start you should understand the <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard Camera Overview</xref> topic. </p> </prereq> <context id="GUID-43393C5E-C050-5B00-99CF-4C467DBE1335"><p>The Ecam API has been extended for background processing by having it as a standalone process. In order to use standalone background processing you need to implement the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCameraObserver2</apiname></xref>, <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MPreImageCaptureControlObserver</apiname></xref>, <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCaptureImageObserver</apiname></xref> interfaces and use with the <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> API. </p> </context> <steps id="GUID-48762C38-0A88-5EEE-85E2-49DF09ED23A7"><step id="GUID-4F2E1FBC-5593-588D-A4E8-947E58EAADC0"><cmd/><info id="GUID-F6BB2B65-A4FD-53FA-BDD6-37A7D2AB3B54"> To prepare image capturing using the <codeph>CCamera</codeph> API </info> <substeps id="GUID-E491A3EC-80E1-502D-9A7E-F1EB1F69F0A6"><substep id="GUID-A28A04E2-C154-5846-A934-AE175BD4FD91"><cmd>call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraPreImageCaptureControl::GetSupportedProcessingOptionsL(Tint&amp;)</apiname></xref> to get support for processing specified by <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>TECamProcessingTypes</apiname></xref>. </cmd> </substep> <substep id="GUID-BF3B1D7B-D79E-57A9-B5D5-F48938148CB7"><cmd/><info>pass the <codeph>EECamBackgroundProcessing</codeph> option instead of the <codeph>SetImageProcessingOptions</codeph> value within the <codeph>TPrepareImageParameters</codeph> values to the required processing option specified in <codeph>TECamProcessingOptions</codeph> for the background processing. </info> </substep> <substep id="GUID-3EFC3492-D190-5ADE-B293-41BC3775B3C6"><cmd/><info>call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraPreImageCaptureControl::PrepareImageCapture(const
+                     CCameraPreImageCaptureControl:: TPrepareImageParameters&amp;,
+                     MCaptureImageObserver&amp;)</apiname></xref> to perform setup and allocation of memory for the image capture operation. This implementation creates a new <codeph>CCameraImageCapture()</codeph> object which internally implements the <codeph>MCameraImageCapture()</codeph> interface. </info> <info>If an error occurs while preparing an image, call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraPreImageCaptureControl::PrepareImageComplete(CCameraPreImageCaptureControl*,
+                     TInt)</apiname></xref> to pass the <codeph>aErrorCode</codeph> value to <codeph>CCamera</codeph>. </info> </substep> </substeps> </step> <step id="GUID-57389BBB-6434-583D-95F1-E235DACAEA92"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraImageCapture::CaptureImage()</apiname></xref> to capture an image. This implements <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCameraImageCapture()</apiname></xref>. </info> </step> <step id="GUID-DC1848F3-CEF1-58A5-AE9C-9DA6CF602F0D"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraPostImageCaptureControl::CreateL(CCameraImageCapture*,
+                TPostCaptureControlId)</apiname></xref> if you wish to capture another image. The <codeph>CCameraPostImageCaptureControl</codeph> object from the previous capture is preserved. This callback function creates a <codeph>CCameraPostImageCaptureControl</codeph> object for every individual image captured. </info> </step> <step id="GUID-27371599-2216-5C53-8730-69E8F9D9F988"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>MCaptureImageObserver::IndividualImageControlHandle(CCameraImageCapture&amp;,
+                TPostCaptureControlId)</apiname></xref> to destroy the individual captured image. </info> </step> <step id="GUID-27ADAF59-D386-5693-9106-AC87B6C8C3BA"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraPostImageCaptureControl::~CCameraPostImageCaptureControl()</apiname></xref> to destroy any captured image objects created by <codeph>CCameraPostImageCaptureControl::CreateL()</codeph>. </info> </step> <step id="GUID-5F31396D-9C68-52F8-8FC3-1C51FC7B74B5"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraImageCapture::PauseProcessing(TUint)</apiname></xref> to pause any processing options associated with the relevant image capture function. </info> <info>Note: You can call <codeph>PauseProcessing()</codeph> for any processing options used during image capture. </info> </step> <step id="GUID-41D15FB4-E0A8-54FE-90FC-2DF05CA955D0"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraImageCapture::ResumeProcessingL(TUint)</apiname></xref> to resume any processing options associated with the relevant image capture function. </info> <info>Note: You can call <codeph>ResumeProcessingL()</codeph> for any processing options used during image capture. </info> </step> <step id="GUID-66119341-7FEE-5BCA-A7D8-3471E61B355A"><cmd/><info>Call <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCameraPostImageCaptureControl::GetImageStateL(TImageState&amp;)</apiname></xref> to retrieve the image state of the individual image given by the <codeph>CCameraPostImageCaptureControl</codeph> object. </info> </step> </steps> <example><title>Example</title> <p>The following example shows you how to capture an image using standalone background processing in Ecam: </p> <codeblock id="GUID-F4409BA1-A6D9-5855-AB32-FC4672AD136A" xml:space="preserve">
+
+CCamera* camera; 
+MCameraObserver2* observer2; 
+camera = CCamera::New2L(*observer2, 0);
+MPreImageCaptureControlObserver* preImageCaptureControlObserver;
+CCamera::CCameraPreImageCaptureControl* preImgCapture = CCamera::CCameraPreImageCaptureControl::NewL(*camera, preImageCaptureControlObserver));
+TInt supportedProcessingOptions;
+preImgCapture-&gt;GetSupportedProcessingOptionsL(supportedProcessingOptions); // provides supported image processing options
+CCamera::CCameraPreImageCaptureControl::TPrepareImageParameters prepareImageParameters;
+prepareImageParameters::iImageProcessingOptions = EECamBackgroundProcessing;
+...
+...
+// Capture image
+...
+...
+TUint processingOptions = EECamBackgroundProcessing;
+imgCapture-&gt;PauseProcessing(processingOptions); // Pauses any background processing associated with this image capture
+imgCapture-&gt;ResumeProcessingL(processingOptions); // Resumes any background processing associated with this image capture
+
+ //  Retrieve the information for any stage of captured image. 
+TImageState imgState;
+postImgCapture-&gt;GetImageStateL(imgState); // Retrieves the stage of any processing on the current image
+
+
+</codeblock> </example> </taskbody><related-links><link href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita"><linktext>Capturing Image</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9E26499-1102-578E-93F6-A8E14181A25C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-E9E26499-1102-578E-93F6-A8E14181A25C"><title>How to handle changes to the text view</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>After a change has been made to the text layout, a reformat and redraw should normally take place, otherwise a panic will occur, as the text view needs to be kept up to date with changes to the text content. The following examples demonstrate which handling functions should be used to carry out the necessary reformatting.</p> <section><title>Reformatting and redrawing after changes to the formatting of a block of text. </title> <p> To reformat either from the start of the line or the start of the paragraph containing the cursor position and redraw the view, after changes to the formatting of a block of text, use the <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-00FEB3AA-E153-35BE-9BF2-05A8269C1780"><apiname>CTextView::HandleRangeFormatChangeL()</apiname></xref> function.</p> <p>In the following example, the code retrieves the current selection and formats it. </p> <codeblock id="GUID-42FFE4EF-2BEF-5AA2-A373-C5A9D494DA13" xml:space="preserve">// Apply italics to the selected region
+TCursorSelection cursorSelection;
+charFormat.iFontSpec.iFontStyle.SetPosture(EPostureItalic); 
+charFormatMask.SetAttrib(EAttFontPosture); // Want to set posture</codeblock> <p>When formatting text, set the attribute's value in the <xref href="GUID-3518B92C-D1BD-36D1-B447-728A1052292F.dita"><apiname>TCharFormat</apiname></xref> object and set the corresponding bit in the format mask.</p> <ul><li id="GUID-62AF121F-3BC4-5874-8351-578E687C5ED9"><p>Use <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-E5F8E21C-20B3-3095-BB04-56C5401B674D"><apiname>CTextView::Selection()</apiname></xref> to get the start position and length of the selected region.</p> </li> <li id="GUID-6092691E-80AB-5E48-B3A5-260762848D16"><p>Apply character formatting to the selection using <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita#GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934/GUID-3E10E796-78C1-31FB-BDF4-5EDA2B36B20B"><apiname>CRichText::ApplyCharFormatL()</apiname></xref>.</p> </li> <li id="GUID-0C61B3B0-9839-5F27-B1ED-D511D3D8AB6D"><p>After reformatting text, handle changes to the layout of the document by an appropriate change handling function. <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-00FEB3AA-E153-35BE-9BF2-05A8269C1780"><apiname>CTextView::HandleRangeFormatChangeL()</apiname></xref> deals with block reformatting and redraws the view, and is the appropriate change handling function here.</p> </li> </ul> <codeblock id="GUID-A129080C-9828-5B99-A48E-F3B07E1305FD" xml:space="preserve">cursorSelection=iTextView-&gt;Selection(); // get limits of selection
+TInt lowerPos=cursorSelection.LowerPos();
+TInt length=cursorSelection.Length();
+// Apply format to selected region
+iRichText-&gt;ApplyCharFormatL(charFormat,charFormatMask,lowerPos,length);
+// Ensure selection is cancelled after reformatting
+TInt cursorPos=cursorSelection.iCursorPos; // Get new cursor position
+// Set pending selection of length zero
+TCursorSelection pendingSelection(cursorPos,cursorPos);
+// Zero length selection, beginning and ending at new cursor position
+iTextView-&gt;SetPendingSelection(pendingSelection);
+        // Cancels selection after reformatting complete 
+iTextView-&gt;HandleRangeFormatChangeL(cursorSelection); // reformat everything from here</codeblock> <p><b>Notes</b> </p> <ul><li id="GUID-A1E0FEB8-C5B3-5B09-84C2-4B79BC1E9F04"><p><codeph>CTextView</codeph>'s change handling functions do not cancel an existing selection. To do so, either of two functions can be used — <codeph>CancelSelectionL()</codeph>, or, as demonstrated above, <codeph>SetPendingSelection()</codeph>. <codeph>SetPendingSelection()</codeph> sets the selection which should take effect after <codeph>HandleRangeFormatChangeL()</codeph> or <codeph>HandleInsertDeleteL()</codeph> has returned. If the selection's anchor and cursor positions are set to the new cursor position, this has the effect of cancelling any selection. This method has the advantage over calling <codeph>CancelSelectionL()</codeph> in that the selected region is only drawn once, reducing the likelihood of flicker.</p> </li> <li id="GUID-630CD46C-1615-537D-8229-1852EA8AAC6C"><p>Formatting can either be applied to the entire document (the default), or just to the visible part of it (the band). Setting the formatting to the band may be desirable when the document has expanded over a certain size. </p> </li> </ul> </section> <section><title>Reformatting and redrawing after inserting, deleting or replacing text</title> <p>To Reformat and redraw the view after inserting, deleting or replacing a block of text, use the <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-44D29E1D-3FBF-374E-AE3F-A6CA98A044F1"><apiname>CTextView::HandleInsertDeleteL()</apiname></xref> function.</p> <p>In the following example the code inserts several lines of text into the document, followed by a paragraph delimiter.</p> <ul><li id="GUID-989A336F-1E0B-5E9C-831A-5F1283C6B18D"><p>Before inserting a paragraph delimiter at the end of the text, use <xref href="GUID-49DBB305-A043-3D23-AC33-6E5C8ABAD1EE.dita#GUID-49DBB305-A043-3D23-AC33-6E5C8ABAD1EE/GUID-2445FFDF-E85C-3AA8-9776-BF349F6D8436"><apiname>CEditableText::DocumentLength()</apiname></xref> to find the document position of the final character in the document.</p> </li> <li id="GUID-13A1E9E3-194C-5AD8-832E-05D9C2FE3291"><p>Call <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-44D29E1D-3FBF-374E-AE3F-A6CA98A044F1"><apiname>CTextView::HandleInsertDeleteL()</apiname></xref> to handle the block insertion and cause a redraw.</p> </li> <li id="GUID-05D2B596-3760-569B-A128-91FC90934285"><p>Use an object of class <xref href="GUID-E2ED2E4B-C428-355D-84CC-A4FA0ED50B74.dita"><apiname>TCursorSelection</apiname></xref> to indicate the start position and length of the inserted text. The second argument has a value of zero because no characters were deleted.</p> </li> </ul> <codeblock id="GUID-6D026081-0D3A-5CAE-8F84-09F45816F0DF" xml:space="preserve">// Insert lots of text
+iRichText-&gt;InsertL(iRichText-&gt;DocumentLength(),_L(
+    "To be, or not to be, that is the question "
+    ...
+    ..."));
+iRichText-&gt;InsertL(iRichText-&gt;DocumentLength(),
+    CEditableText::EParagraphDelimiter); // end para
+TCursorSelection cursorSelection(0,iRichText-&gt;DocumentLength());
+iTextView-&gt;HandleInsertDeleteL(cursorSelection,0); // Handle insertion</codeblock> </section> <section><title>Reformatting and redrawing after a global change</title> <p>To reformat and redraw the view after a global change has been made to the layout, use the <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-903D1087-42CB-32EB-8379-7B019936AD16"><apiname>CTextView::HandleGlobalChangeL()</apiname></xref> function. </p> <p>In the following example, the code sets the <keyword>formatted
+        band</keyword> to the part of the document displayed in the view rectangle. </p> <codeblock id="GUID-0ECA95FD-410F-5B94-9DDB-E5D0C5D97EE1" xml:space="preserve">TBuf&lt;80&gt; message;
+iLayout-&gt;SetAmountToFormat(CTextLayout::EFFormatBand);
+iTextView-&gt;HandleGlobalChangeL(); // Global document change </codeblock> </section> <section><title>Reformatting the whole document or visible text</title> <p>To reformat the whole document, or just the visible text if formatting is set to the band only, use the <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-7A878B50-A9AF-3D54-8035-1DF4FE819454"><apiname>CTextView::FormatTextL()</apiname></xref> function. </p> <p>In the following example, the code inserts several lines of text, with increased height to aid visibility, then sets the <keyword>formatted
+        band</keyword>.</p> <ul><li id="GUID-721E9015-0F7E-59AD-980C-9CB5878AB544"><p>The following code sets the font height to 200 twips and ensures that this height will be applied to all text subsequently inserted. All other character and paragraph formatting is taken from the system-provided default settings. </p> </li> <li id="GUID-345B17D2-381D-5049-968F-EE5DF872801C"><p>Apply character formatting to the selection using <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita#GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934/GUID-3E10E796-78C1-31FB-BDF4-5EDA2B36B20B"><apiname>CRichText::ApplyCharFormatL()</apiname></xref>.</p> </li> <li id="GUID-CB155905-65EE-51B8-9627-98D120590E27"><p>Use <xref href="GUID-CF377A98-F11F-380F-AD10-7F3E261D4421.dita#GUID-CF377A98-F11F-380F-AD10-7F3E261D4421/GUID-7A878B50-A9AF-3D54-8035-1DF4FE819454"><apiname>CTextView::FormatTextL()</apiname></xref> to global reformat the document. Note that this function does not cause a redraw, which is appropriate here because the document contains no text.</p> </li> </ul> <codeblock id="GUID-096F32AB-1F09-55F9-9511-D41DC8FCBE56" xml:space="preserve">TCharFormat charFormat;
+TCharFormatMask charFormatMask;
+charFormatMask.SetAttrib(EAttFontHeight); // want to set height to 10 point (200 twips)
+charFormat.iFontSpec.iHeight=200;    
+iRichText-&gt;ApplyCharFormatL(charFormat,charFormatMask,0,1);
+    // apply format from position 0, for 1 character
+iTextView-&gt;FormatTextL();</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9E2783E-44A0-5BA6-BBF3-D13C8D67B53E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E9E2783E-44A0-5BA6-BBF3-D13C8D67B53E" xml:lang="en"><title>Socket Server Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section shows how to do common tasks for applications that use sockets. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9E5556C-101B-48F2-B9AA-9DBEF5D85D5E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E9E5556C-101B-48F2-B9AA-9DBEF5D85D5E" xml:lang="en"><title>Backup and restore</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> architecture introduced a new secure backup and restore method that is compatible with the <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capability</xref> model, <xref href="GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita">data caging</xref>, and data storage features. It offers both active and passive methods to backup and restore data:</p>
+<p>For more information about backup and restore, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Connectivity-subsystem-guide/Connectivity/PC_Connectivity_How-To_Write_Backup_Aware_Software.html" format="application/java-archive">How-To Write Backup-aware Software</xref> and <xref href="http://wiki.forum.nokia.com/index.php/TSS000750_-_Enabling_backup_and_restore_for_installed_C%2B%2B_applications" scope="external">Enabling backup and restore for installed C++ applications</xref> at Forum Nokia.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11-master.png has changed
Binary file Symbian3/SDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e259139_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753" xml:lang="en"><title>Error
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-650C271B-5D12-43B9-950B-8EF37140CD69"><p>Error
+notes are a warning to the user. They should only be used when the user has
+tried to do something that may cause a considerable problem.</p><fig id="GUID-D82577DB-4C11-4EDE-8C29-D8AE0AE8521D">
+<title>Error note</title>
+<image href="GUID-1EB9BF25-DFF4-42CA-926C-D26409A2868E_d0e61050_href.png" scale="33" placement="inline"></image>
+</fig></section>
+<section id="GUID-A62B2AD0-BA1F-4112-9B61-25D29D3B1854"><title>Guidelines
+for using error notes</title>       <p>Use an error note when:</p>       <ul>
+<li>           <p>The user does something that may cause considerable harm
+immediately or later. For example, the user gives a wrong PIN code. Repeating
+this couple of times would block the SIM card.</p>         </li>
+</ul>       <p>To keep error notes effective, they should be used very sparingly.
+In most ordinary error cases, an <xref href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita">information
+note</xref> should be used instead of an error note. It has a less aggressive
+sound and graphics.</p>       <p>It should also be noted that if the information
+to be given is such that the user must see and acknowledge it, a confirmation
+query is a better component to use than a note. Then the user must press a
+key to dismiss the information, and there is time to read and think about
+the notification.</p>           </section>
+<section id="GUID-247815E4-E5BD-456A-9AD0-C3B856C5E274"><title>Using
+error notes in C++ applications</title><p>You can create either a basic error
+note that is displayed only when your application is in the foreground or
+a global note that stays displayed even if the application launching the note
+is not in the foreground. The related APIs are the Notes
+API (for basic notes) and the Notifiers
+API (for global notes). </p><p>To use an error note with the default
+icon, text, sound, and duration, create an instance of the note class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknErrorNote.html" format="application/java-archive"><codeph>CAknErrorNote</codeph></xref>.</p><p>To
+create a global error note, use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref> in the Notifiers
+API. For implementation information, see Using
+global notes and Using
+global notes with user interaction.</p><p>For basic notes, you can
+change the icon or text displayed in the note, use a different kind of sound,
+or change the note duration using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p><p>For information on customizing
+global notes, see Enhancing
+global notes. You can change the graphic, animation, tone, and softkeys
+using the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#cee323af0704e07d3f1887a4a13c1639" format="application/java-archive"><codeph>SetGraphic</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#d23699273b28a39c0817bc575be767ab" format="application/java-archive"><codeph>SetAnimation</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#a8748ee0b3342c24a11b8ed0ea9121bc" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#f31895e5838994b1c70300cfd3d7d127" format="application/java-archive"><codeph>SetSoftkeys</codeph></xref>.</p></section>
+
+
+
+</conbody><related-links>
+<link href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita"><linktext>Confirmation
+note</linktext></link>
+<link href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita"><linktext>Information
+note</linktext></link>
+<link href="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita"><linktext>Warning note</linktext>
+</link>
+<link href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita"><linktext>Permanent
+note</linktext></link>
+<link href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita"><linktext>Wait note</linktext>
+</link>
+<link href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita"><linktext>Progress
+note</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-E9FF94D2-AFFD-54A4-A6C2-00929BC70DB0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-E9FF94D2-AFFD-54A4-A6C2-00929BC70DB0" xml:lang="en"><title>BitGDI Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides an introduction to the main features provided by the BitGDI component. </p> </conbody><related-links><link href="GUID-AFE8A9CC-E026-5396-8E0C-616338B5F5C3.dita"><linktext>BitGDI Tutorials</linktext> </link> <link href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita"><linktext>BitGDI Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA0A4F6E-CA82-59A4-ABCB-70632CDC2714.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EA0A4F6E-CA82-59A4-ABCB-70632CDC2714"><title>Accessing reference counting objects in object containers</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A pointer to an individual reference counting object can be retrieved from its object container using either <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-36DBCC38-AEF4-304D-8E61-CEB3151DD0D8"><apiname>CObjectCon::At()</apiname></xref> or <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-F57000D2-0C19-3493-A5CF-07AF58EB92E3"><apiname>CObjectCon::AtL()</apiname></xref>, provided that the reference counting object's find-handle number is known. </p> <p>A reference counting object's find-handle number can be found using either <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-BAA8E259-5B79-33BC-B6DA-4A8CD0931501"><apiname>CObjectCon::FindByName()</apiname></xref> or <xref href="GUID-DE901A59-C714-356A-9490-C4E9C9F186DB.dita#GUID-DE901A59-C714-356A-9490-C4E9C9F186DB/GUID-7ABCFC64-A7D9-395E-B344-E06450878E11"><apiname>CObjectCon::FindByFullName()</apiname></xref>. </p> <p> <xref href="GUID-E02CA03D-55F3-3E86-B3D2-76CBD567F41B.dita"><apiname>FindByName()</apiname></xref> uses a match pattern to find all reference counting object's with a matching name. <xref href="GUID-F217FA88-B51C-3F47-AA91-14B024ADFED5.dita"><apiname>FindByFullName()</apiname></xref> is similar except that the reference counting object's full name is used. </p> <p>In practice, retrieving a pointer to a reference counting object requires a call to either <xref href="GUID-E02CA03D-55F3-3E86-B3D2-76CBD567F41B.dita"><apiname>FindByName()</apiname></xref> or <xref href="GUID-F217FA88-B51C-3F47-AA91-14B024ADFED5.dita"><apiname>FindByFullName()</apiname></xref> followed by a call to either <codeph>At()</codeph> or <codeph>AtL()</codeph>. </p> <p> <xref href="GUID-E02CA03D-55F3-3E86-B3D2-76CBD567F41B.dita"><apiname>FindByName()</apiname></xref> and <xref href="GUID-F217FA88-B51C-3F47-AA91-14B024ADFED5.dita"><apiname>FindByFullName()</apiname></xref> are suited to finding a single object with a specific name or all objects with a generic type of name. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-EA107811-240C-5F95-922B-7C042FA00A87" xml:lang="en"><title>Reading
+a String Resource </title><abstract><p>The simplest use of a resource file involves reading string resources
+and interpreting the source data. </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>Resources are defined in terms of structs which are accessed and
+read by the <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita"><apiname>RResourceFile</apiname></xref> class, and interpreted by the <xref href="GUID-B375D32E-1F91-30FA-8605-A2E163111F9A.dita"><apiname>TResourceReader</apiname></xref>.
+An application may also use resources from multiple files simultaneously.
+See <xref href="GUID-98903A01-CD04-5345-84AE-2E440CE06E11.dita">Resource File examples</xref> for
+more information. </p><p>Consider a sample resource file where a struct of
+STRING is defined having a single member of type <codeph>LTEXT</codeph>: </p><codeblock xml:space="preserve">// define structures
+STRUCT STRING
+    {
+    LTEXT text;
+    }
+// define resources
+RESOURCE STRING hello
+    {
+    text=Bonjour tout le monde!;
+    }
+</codeblock> </context>
+<steps id="GUID-F147E8CF-65D1-5025-BA85-E0D171DBEFFD">
+<step id="GUID-0BAEB54B-5A6E-59F6-B14E-FAF0A3D15F27"><cmd/>
+<info>Compile the resource file using <xref href="GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-7-1-1-5-1-4-1.dita">the
+resource compiler</xref> (rcomp) to generate an <filepath>.rsc</filepath> file
+and an <filepath>.rsg</filepath> file. </info>
+<substeps id="GUID-0B421705-A5CD-5FF7-BB95-C17559811267">
+<substep id="GUID-673E32C9-665C-5388-AE17-780A149F8837"><cmd/>
+<info> <filepath>.rsc</filepath> file contains the resource data; this is
+the resource file that must be referred to at run-time by the <codeph>RResourceFile</codeph> class
+in the C++ code. </info>
+</substep>
+<substep id="GUID-AEE254EB-0716-5478-B1DF-F8ED8E4FF8E1"><cmd/>
+<info> <filepath>.rsg</filepath> file is a <keyword>generated            
+         header</keyword> file that contains <codeph>#define</codeph> statements
+for each resource defined in the source file. In the resource file generated
+here, the only resource is called <codeph>hello</codeph> and the generated
+header file contains: </info>
+<stepxmp><codeblock id="GUID-385BB8E3-FF77-5A95-8F65-043E72412959" xml:space="preserve">#define HELLO 1</codeblock> </stepxmp>
+<info>Note that the name in the generated header file is converted to upper
+case. </info>
+</substep>
+</substeps>
+</step>
+<step id="GUID-3367B1DD-C2E9-5780-A77A-7F574D2EC541"><cmd/>
+<info> <codeph>#include</codeph> the <filepath>.rsg</filepath> file in the
+file containing the C++ code, to access the resource IDs generated by the
+resource compiler. For example, for a project refered as <codeph>ReadText</codeph>,
+this might be: </info>
+<stepxmp><codeblock id="GUID-AC615F67-6331-500C-B91E-ADD6A94464FB" xml:space="preserve">#include ReadText.rsg</codeblock> </stepxmp>
+</step>
+<step id="GUID-ACC66DA2-4AC8-536B-9912-7CE632C0A8DF"><cmd/>
+<info>Initialize the <codeph>RResourceFile</codeph> object in the C++ program,
+specifying the name of the resource file: </info>
+<stepxmp><codeblock id="GUID-5CF79231-E42C-51DF-9002-FD1ED8AB21C1" xml:space="preserve">    
+RResourceFile resourceFile;
+resourceFile.OpenL( fsSession,_L( Z:\\system\\data\\ReadText.rsc ) );</codeblock> </stepxmp>
+<info>Note: To access the resource file contents, a session with the file
+server must be started using an instance of <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> class. </info>
+</step>
+<step id="GUID-CA53A8D1-E13E-50A8-96A7-B6B397B82DB3"><cmd/>
+<info>Use one of the three functions (<xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita#GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA/GUID-9B16E6B8-84A4-37DF-BBB4-EC8B04FDB14C"><apiname>RResourceFile::AllocReadLC()</apiname></xref>, <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita#GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA/GUID-8CEE29E0-78F3-3DD6-B068-85C8E0403884"><apiname>RResourceFile::AllocReadL()</apiname></xref> or <xref href="GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA.dita#GUID-AA6DEF11-6F23-3523-A9F7-F15DF918E1BA/GUID-DF6DFFD5-E923-3C4E-87F0-BC4EE7C8B586"><apiname>RResourceFile::ReadL()</apiname></xref> to read a resource as shown in the following
+code fragment: </info>
+<stepxmp><codeblock id="GUID-92AC4270-4A4D-52F1-B5C4-CFF6FBD19700" xml:space="preserve">HBufC8* dataBuffer = resourceFile.AllocReadLC( HELLO );</codeblock> </stepxmp>
+</step>
+<step id="GUID-77F9A976-6E09-5158-B515-256F4B878CDB"><cmd/>
+<info>Interpret the resource data using a <codeph>TResourceReader</codeph> object.
+This provides access to the text string through a pointer descriptor as shown
+in the following code fragment: </info>
+<stepxmp><codeblock id="GUID-CB3BE44D-72F5-5E15-8D1D-52F513D9D980" xml:space="preserve">
+TResourceReader theReader;
+...
+theReader.SetBuffer( datafBuffer );
+TPtrC textdata = reader.ReadTPtrC();</codeblock> </stepxmp>
+</step>
+</steps>
+<result><p>In this example, once the resource data is no longer needed, the
+heap descriptor, dataBuffer, can be removed from the cleanup stack and destroyed
+as shown in the code fragment: </p><codeblock xml:space="preserve">CleanupStack::PopAndDestroy();</codeblock><p>When
+all operations on the resource file are complete, the resource file can be
+closed using the RResourceFile::close() function as:  </p><codeblock xml:space="preserve">resourceFile.Close();</codeblock></result>
+<example><title>Example</title> <p>Consider a resource constructed
+from the following definition. </p> <codeblock id="GUID-538D959C-A85A-5675-9B14-ED81AB860F47" xml:space="preserve">RESOURCE ARRAY anarray
+{
+items=
+    {
+    LBUF { txt="Esc"; },
+    LBUF { txt="Enter"; },
+    LBUF { txt="Tab"; },
+    LBUF { txt="Del"; },
+    LBUF { txt="Space"; }
+    };
+}</codeblock> <p>A <codeph>TPtrC</codeph> representing the second item can
+be constructed using the <codeph>ReadTPtrC()</codeph> function. The example
+simply takes the length of the text <codeph>Enter</codeph>: </p> <codeblock id="GUID-9817910D-0661-513D-BB3A-9557D70688AD" xml:space="preserve">// open the resource file
+...
+HBufC8* res = resourceFile.AllocReadLC( ANARRAY );
+TResourceReader theReader;
+...
+TInt len;
+len = ( theReader.ReadTPtrC( 1,res ) ).Length(); // len == 5
+...</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita"><linktext>Resource
+files</linktext></link>
+<link href="GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B.dita"><linktext>Resource
+file format</linktext></link>
+<link href="GUID-3527AAEE-210F-524B-A655-A65F1CE86C80.dita"><linktext>Resource
+compilation</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA15E87C-6A24-50B1-9FAC-9ACE8911ABD5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA15E87C-6A24-50B1-9FAC-9ACE8911ABD5" xml:lang="en"><title>Bluetooth Notifiers Support</title><shortdesc>The Bluetooth Notifiers Support component enables you to create dialogs to interact with device users about Bluetooth interactions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E" xml:lang="en"><title>Platform security architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The purpose of the Symbian platform security architecture is to enable
+users to use their mobile devices in an easy and trusted manner. For more
+information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref>.</p>
+<p>This section introduces some central platform security concepts. These
+include the following:</p>
+<ul>
+<li><p><xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">Capabilities</xref></p>
+</li>
+<li><p><xref href="GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita">Application
+signing</xref></p></li>
+<li><p><xref href="GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita">Data
+caging</xref></p></li>
+</ul>
+<p>For more details on the above concepts, see the <xref format="" href="https://www.symbiansigned.com/" scope="external">Symbian
+Signed</xref> website.</p>
+<section id="GUID-49FCB653-EE07-4D7D-A1B9-AAAD77837147"><title>Additional information
+on security</title>
+<ul>
+<li><p>For more information on how to test and certify your applications
+and how to access <xref href="GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita">capabilities</xref>,
+see <xref href="http://developer.symbian.com/ssguide" scope="external">The Complete Guide
+to Symbian Signed</xref>.</p></li>
+<li><p>For more information about security in Symbian C++ application
+development, see the <xref href="http://wiki.forum.nokia.com/index.php/Symbian_C%2B%2B_Security_Articles" scope="external">Security
+Articles</xref> in the Forum Nokia Developer Community Wiki.</p></li>
+<li><p>For more advanced information and practical examples on how
+to use various security options provided by the platform, see the following
+Forum Nokia resources:<draft-comment time="2009-04-20T13:01">All these examples
+are listed as compatible with the 3rd Edition on Forum Nokia, and therefore
+it is unclear whether they apply to 5th Edition.</draft-comment></p>
+<ul>
+<li><p><xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/1bd6bf54-7886-43a5-8335-821bcb603049/S60_Platform_System_Information_Example_v2_0_en.zip.html" scope="external">S60 Platform: System Information Example</xref></p></li>
+<li><p><xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/53a369e8-14c7-4f52-9731-577db4e0d303/S60_Platform_ECom_Plug-in_Architecture_v2_0_en.pdf.html" scope="external">S60 Platform: ECom Plug-in Architecture</xref> and <xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/75ae7bde-7401-490f-87ec-920e44f518c2/S60_Platform_ECom_Plug-in_Examples_v2_0_en.zip.html" scope="external">S60 Platform: ECom Plug-In Examples</xref></p></li>
+<li><p><xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/b740b0e2-1201-4471-bbd4-1d9c77bcfa97/S60_Platform_HTTP_Client_API_Example_v2_0_en.zip.html" scope="external">S60 Platform: HTTP Client API Example</xref></p></li>
+<li><p><xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/07416c2f-ef81-4d70-a085-e38e758dc308/Symbian_OS_End-to-End_HTTP_API_Example_v1_3_en.zip.html" scope="external">Symbian OS: End-to-End HTTP API Example</xref></p></li>
+<li><p><xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/4f781f57-a5ae-4508-8afb-8cdd296b87f5/Symbian_OS_End-to-End_Sockets_API_Example_v1_3_en.zip.html" scope="external">Symbian OS: End-to-End Sockets API Example</xref></p></li>
+<li><p><xref href="http://www.forum.nokia.com/info/sw.nokia.com/id/dc3f99aa-10fa-4855-b3b1-dd507136b6fa/S60_Platform_Access_Points_Example_with_Roaming_Support_v1_0_en.zip.html" scope="external">S60 Platform: Access Points Example with Roaming Support</xref></p>
+</li>
+</ul>
+</li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e204127_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47" xml:lang="en"><title>Descriptor
+basics</title><shortdesc>This document describes buffer descriptors, heap descriptors, pointer
+descriptors and resizable buffer descriptors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Descriptors provide a safe, consistent and economical mechanism for accessing
+and manipulating strings and general binary data. </p>
+<p>A descriptor represents data which can reside in any memory location, either
+ROM or RAM. A descriptor object maintains pointer and length information to
+describe the data. All access to the data is made through the descriptor object. </p>
+<p>The area occupied by data represented by a given descriptor is considered
+to be non-expandable, even though the length of data represented can shrink
+or expand to fill that area. </p>
+<p>The set of operations which can be performed on data represented by a descriptor
+is divided into those that can modify the data and those which provide access
+but do not modify the data. This split is reflected in the structure of the
+descriptor classes. </p>
+<p>Operations on data represented by a descriptor are safe. Accidental or
+deliberate attempts to access memory outside the data area represented by
+a descriptor are caught. An illegal access is treated as bad programming rather
+than an environment or resource problem and raises an exception known as a
+panic. </p>
+<p>Descriptors make no distinction between the type of data represented; both
+strings and binary data are treated in the same way. Although some operations
+on a descriptor are intended to operate on a string, they also work on binary
+data. This unifies the handling of both strings and binary data and increases
+efficiency by allowing code to be shared. This also means that data can consist
+of a mix of string data and binary data. </p>
+<p>The concrete descriptors that programs create come in four types: </p>
+<ul>
+<li id="GUID-FFBB1AD9-1B31-5B37-8DA5-2B441385BE06"><p>Buffer descriptors -
+where the data is part of the descriptor object and the descriptor object
+lives on the program stack. </p> </li>
+<li id="GUID-2E7EF74C-0079-597F-B15A-4351D9682BA6"><p>Heap descriptors - where
+the data is part of the descriptor object and the descriptor object lives
+on the heap. </p> </li>
+<li id="GUID-DFB5D25C-FBF9-54F6-B0A4-51E58602935C"><p>Pointer descriptors
+- where the descriptor object is separate from the data it represents. </p> </li>
+<li id="GUID-AF5F3732-5E41-5E1A-AA88-C2A900C7F004"><p>Resizable buffer descriptors
+- where the descriptor is separate from the data it represents, and the data
+resides in a buffer allocated on the heap. </p> </li>
+</ul>
+<fig id="GUID-3FE00A17-DC27-5AB3-AAC8-05B4259C0834">
+<title>           Buffer descriptor         </title>
+<image href="GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e195201_href.png" placement="inline"/>
+</fig>
+<fig id="GUID-646F7A87-3D87-5856-886D-F3844D5D046C">
+<title>           Heap descriptor         </title>
+<image href="GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e195209_href.png" placement="inline"/>
+</fig>
+<fig id="GUID-6A2463A0-CF76-5746-9BF3-2FC24F714A73">
+<title>           Pointer descriptor         </title>
+<image href="GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e195217_href.png" placement="inline"/>
+</fig>
+<fig id="GUID-5EE9C2A2-E654-5736-A72B-4F7A705E12DE">
+<title>           Resizable buffer descriptor         </title>
+<image href="GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e195225_href.png" placement="inline"/>
+</fig>
+<p>Although the four types seem to be different, the underlying class structure
+makes such differences transparent allowing them to be treated in the same
+way. </p>
+<p>Descriptor objects generally, behave as built-in types, as they can be
+safely created on the program stack and can also be safely orphaned. The heap
+descriptor is an exception to this rule. </p>
+<p>The design also avoids the memory overhead associated with virtual functions. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e363824_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA6965FB-5BB6-5110-9A16-B5403E1983D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EA6965FB-5BB6-5110-9A16-B5403E1983D4"><title>How to wait for a given time</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Use the <codeph>At()</codeph> function to set the timer to complete at a specific time.</p> <p>The following example suspends the thread until the current time plus ten seconds.</p> <codeblock id="GUID-83E4B363-6E1B-5031-84EF-C3F2D104106B" xml:space="preserve">
+// get current time (microseconds since 0AD nominal Gregorian)
+TTime time; 
+time.HomeTime();  
+
+// add ten seconds to the time
+TTimeIntervalSeconds timeIntervalSeconds(10);
+time += timeIntervalSeconds;
+
+// issue and wait
+timer.At(timerStatus,time);
+User::WaitForRequest(timerStatus);</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA71F52C-DB4C-500D-9051-31BEF29E171D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA71F52C-DB4C-500D-9051-31BEF29E171D" xml:lang="en"><title>Basic
+exception support</title><shortdesc>Describes the operating support for exceptions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The basic operating system support for exceptions comes from</p>
+<ul>
+<li id="GUID-E168AD4F-366A-5EAF-98F2-0C1B187E1AE0"><p>the <codeph>TRAP</codeph> macro
+and its variant, <codeph>TRAPD</codeph>, which allow code to be run under
+a <keyword>trap harness</keyword> </p> </li>
+<li id="GUID-3B4C9F10-A89C-5979-ABC7-5106C7B9AFED"><p>the <codeph>User::Leave()</codeph> call,
+which terminates the current function, and returns to the trap harness, specifying
+an error code.</p> </li>
+</ul>
+<p>These are analogous to C++’s exception handling support (<codeph>try/catch</codeph> and <codeph>throw</codeph>). </p>
+<p>By convention, all functions that can leave — directly or indirectly —
+have an L appended onto their name (and can therefore be referred to as <keyword>L
+functions</keyword>). The function invoked by a trap harness will always be
+an L function. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA7C8C95-A4D5-5E90-B0B8-C35D8C7423F1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA7C8C95-A4D5-5E90-B0B8-C35D8C7423F1" xml:lang="en"><title>Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides the concepts related to the telephony API for applications. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7"><title>Bluetooth Comms Profiles Collection Overview</title><shortdesc>Provides implementations of some Bluetooth profiles and support for others. (Some Bluetooth profiles are omitted.) </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-6B099746-A936-5009-81F0-D3282ED6C48A"><title>Purpose</title> <p id="GUID-D7338D15-E269-54A5-B4E1-D5F0AACA9F32">  This document introduces Bluetooth profiles and indicates the current status of those profiles within the Symbian OS Bluetooth subsystem. A Bluetooth profile encompasses a defined set of functionality for an operation or task, identifies the Bluetooth stack features required to perform the operation or tasks and describes how those features are used. </p> <p>By specifying these details Bluetooth profiles make a significant contribution to realising the interoperability goals of the Bluetooth consortium. If all device manufactures implement the profiles according to the standards users can confidently purchase Bluetooth enabled devices knowing that they will all work. </p> <p><b>In this overview </b> </p> <p>You will learn about the status of the Bluetooth profiles, those that are <i>implemented</i>, those that are <i>supported</i> and those that are <i>omitted</i> from the current Symbian OS Bluetooth subsystem. Documentation will be provided for each of the supported profiles and this page will be updated with links as they become available. </p> <p>The standards define terminology specific to individual profiles. Please refer to the latest Bluetooth standard at <xref scope="external" href="http://www.bluetooth.com">www.bluetooth.com</xref> for all official definitions. </p> </section> <section id="GUID-3D73ECD8-AA0F-5E1A-B963-32921B31B6E8"><title>Architecture</title> <fig id="GUID-CEFC70E7-D449-52CF-99C5-869BD3B4D504"><image href="GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e369649_href.png" placement="inline"/></fig> </section> <section id="GUID-9957D1E0-F639-5CEB-BD61-52B81BBACA88"><title>Description</title> <p>There are two kinds of profiles provided for by Symbian OS: implemented and supported. Implemented profiles can be used directly from the existing components. When a profile is supported the licensee will need to provide its own APIs to make the functionality of that profile available to application developers. </p> <fig id="GUID-9B0D507E-B9E1-5E3F-8330-15564BD89681"><title>
+             Figure 1. Profile dependencies 
+          </title> <desc><p>Figure 1 above shows the dependencies of profiles. The shaded profiles, discussed in the next section, are implemented by the Symbian OS Bluetooth subsystem. </p> </desc> <image href="GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e369668_href.png" placement="inline"/></fig> <p><b>Implemented Bluetooth profiles</b> </p> <p>The following profiles are implemented by Symbian OS Bluetooth: </p> <ul><li id="GUID-12BCA8FE-B874-56AE-9F09-00D013BB9E25"><p>Generic Access Profile (<b>GAP</b>) </p> </li> <li id="GUID-3151F147-4A6B-5C83-B8D5-A70FDB58DEFC"><p>Serial Port Profile (<b>SPP</b>) </p> </li> <li id="GUID-ED98C49B-BBEB-536C-A806-BEA77DEDD497"><p>Generic Object Exchange Profile (<b>GOEP</b>) </p> </li> <li id="GUID-94EA76BC-C843-5558-9E16-A5931B937372"><p>Personal Area Networking (<b>PAN</b>) Profile </p> </li> <li id="GUID-7C0BA324-CAC9-5595-9523-1CEF3A1D2A4D"><p>Audio Video Remote Control Profile (<b>AVRCP</b>) </p> </li> <li id="GUID-38F8CCD0-93F8-571D-AD52-762FDEC2A4E9"><p>Generic Audio Video Distribution Profile (<b>GAVDP</b>) </p> </li> <li id="GUID-E7D4DD39-6EE4-5A71-AED5-9D61F7B8BC3F"><p>Advanced Audio Distribution Profile (<b>A2DP</b>) </p> </li> </ul> <p>The profiles are introduced here: </p> <p id="GUID-BCA99FAB-1825-56A0-9D06-926B30C0FFBA"><b>GAP</b> </p> <p>The Generic Access Profile is the foundation Bluetooth profile. It enables two devices to discover and connect to each other in a piconet. GAP defines the mode of operation for participating devices, handles role assignment, and controls the connection and link functionality at protocol level. </p> <p>The Generic Access profile, as the basic piconet enabler, uses features of the RFCOMM, L2CAP, Link Manager and Link Controller layers of the <xref href="GUID-66B87EE1-00E8-592F-8FBA-5DDDC257F758.dita#GUID-66B87EE1-00E8-592F-8FBA-5DDDC257F758/GUID-EBA301E1-0034-587C-9355-71DB7F762A6B">Bluetooth stack</xref>. As an application developer you do not need to concern yourself with the details of the protocols as this is handled internally. The APIs will handle all of the connection, linking and role negotiation for you. Note however that there are no explicit GAP APIs. The GAP functionality is implicit in other APIs within Symbian OS. </p> <p id="GUID-74CDD0F3-3901-5F23-8FE8-B23FEB6DB243"><b> SPP </b> </p> <p>The Serial Port Profile gives Bluetooth devices RS-232 emulation capabilities, allowing applications that were written with cable connection in mind to make the transition to Bluetooth. The application establishes a link over the Bluetooth connection without being aware of Bluetooth. The SPP simply emulates a typical RS-232 serial cable communications session. The SPP enables multiplexing and provides support for two device types: communication endpoint devices and intermediate devices. SPP operates on the RFCOMM and L2CAP layers of the Bluetooth stack. </p> <p>The SPP is an integral part of the following profiles: </p> <table id="GUID-0C88077B-7C0A-5304-801C-2D76907E5BAF"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Bluetooth Profile</entry> <entry>Supported</entry> </row> </thead> <tbody><row><entry><p>Fax Profile </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Dial-up Networking Profile(DUNP) </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>LAN Access Profile </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Headset Profile </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Hands Free Profile </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Generic Object Exchange Profile </p> </entry> <entry><p>Implemented </p> </entry> </row> <row><entry><p>Phonebook Access Profile </p> </entry> <entry><p>No </p> </entry> </row> <row><entry><p>SIM Access Profile </p> </entry> <entry><p>No </p> </entry> </row> </tbody> </tgroup> </table> <p>Links to examples, guides, and tutorials that use the SPP will be provided here as they become available. </p> <p id="GUID-C7894668-B9C0-5C31-BD24-8A3753DF1F6C"><b> GOEP </b> </p> <p>The Generic Object Exchange Profile provides the functionality needed to use the Object Exchange (OBEX) Protocol over Bluetooth. GOEP is used by the following profiles: </p> <table id="GUID-A1A29057-A7A4-5624-909F-1ED78CF362D3"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>Bluetooth Profile</entry> <entry>Supported</entry> </row> </thead> <tbody><row><entry><p>Object Push Profile </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>File Transfer Profile </p> </entry> <entry><p>Yes </p> </entry> </row> <row><entry><p>Synchronisation Profile </p> </entry> <entry><p>Yes </p> </entry> </row> </tbody> </tgroup> </table> <p>GOEP makes a significant contribution to the overall offering by providing client and server roles to the devices of the Bluetooth Piconet. Applications using GOEP can push and pull objects from other devices in the piconet. </p> <p id="GUID-85C0DABF-1EC0-5B25-9E36-72C42E5D4A97"><b> PAN Profile </b> </p> <p>The Personal Area Networking profile provides a simplification to the LAN Access and Dial-up Networking profiles (both now deprecated), by reducing the number of layers in a network connection. PAN enhances networking over Bluetooth by providing new functionality such as the Group Ad-hoc Networking role, discussed below. </p> <p>The PAN profile provides for three possible roles: the User (PANU), Group Ad-hoc Networking (GN) and Network Access Point (NAP). </p> <p>When a device is operating in the PANU role it can connect to a device operating in any of the three roles. This allows it to act as a client to one of these devices. When operating in the GN role the device can accept a connection request from a PANU device or make its own request to connect to such a device. PANU and GN roles can be switched but a PANU device connecting to a NAP device can not switch roles because NAP is not supported. </p> <p>PAN is integrated into the networking framework as a plug-in. See the Networking documentation for more information about networking with the Bluetooth PAN profile plug-in. Therefore applications can treat a Bluetooth PAN as any other networking technology. </p> <p id="GUID-7251B0E5-D6B1-524B-9714-6A469F8E1CB3"><b>AVRCP</b> </p> <p>The Audio video remote control profile implements certain aspects of the AV/C Digital Interface Command Set (IEEE 1394) for use over a Bluetooth connection. This profile defines two possible roles: controller (CT) and target (TG). The controller device sends commands to the target who acts on those commands. </p> <p>Role switching is possible. Consider a Bluetooth headset with integrated command functions. When the headset is acting in the CT role it can begin music playback or switch songs on the TG Symbian device. The Symbian device can become the CT to send a volume control command to the headset, making the headset the TG for that transaction. </p> <p>Features of the profile implemented in the Symbian OS Bluetooth subsystem are presented in the following table according to defined role. </p> <table id="GUID-6C8A5320-A06C-51A5-B431-14CFC828BAAA"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>CT</entry> <entry>TG</entry> </row> </thead> <tbody><row><entry><p>All Mandatory features. </p> </entry> <entry><p>All Mandatory features. </p> </entry> </row> <row><entry><p>Sending UNIT info command. </p> </entry> <entry><p>Initiating connection for control. </p> </entry> </row> <row><entry><p>Sending subunit info command. </p> </entry> <entry><p>Receiving pass through commands. </p> </entry> </row> <row><entry><p>Sending pass through commands. </p> </entry> <entry><p>Sending all operation_ids. </p> </entry> </row> <row><entry><p>Sending all operation_ids. </p> </entry> <entry><p>Receiving all operation_ids. </p> </entry> </row> <row><entry><p>Receiving all operation_ids. </p> </entry> <entry><p> </p> </entry> </row> </tbody> </tgroup> </table> <p>AVRCP operates over a GAP connection, communicating via the Audio Video Control Transport Protocol (AVCTP) on a channel in the L2CAP layer. Application developers will use the Remote Control Framework for creating apps that use the AVRCP. </p> <p id="GUID-3ABC26C2-D65A-5577-B9B2-0A613D48D49B"><b>GAVDP</b> </p> <p>The Generic audio video distribution profile provides the mechanism for distributing audio and video content over a Bluetooth connection. There are two roles defined for GAVDP, they are: Initiator (INT) and Acceptor (ACP). INT begins a signalling procedure and ACP responds. The roles are not linked to the master / slave relationship between devices and can switch when a new procedure is initiated. </p> <p>GAVDP has been implemented in the Symbian OS Bluetooth subsystem specifically to support the Bluetooth stereo headset usecase. The Audio Video Distribution Transport Protocol (AVDTP) manages the transmission of audio packets over an L2CAP channel. The GAVDP component of the Bluetooth subsystem provides an API to configure, send and receive data over the AVDTP within an ESock plug-in. </p> <p id="GUID-E051004B-9650-5AA9-9CDB-5C4925F71A68"><b>A2DP</b> </p> <p>The Advanced Audio Distribution Profile describes the protocols and procedures to stream high quality stereo audio over Bluetooth. </p> <p><b>Supported Bluetooth Profiles </b> </p> <p>The following list indicates profiles for which the Symbian OS subsystem has provided the necessary framework should a licensee have a need to implement them. Application developers should refer to the documentation for the platform(s) they are targeting to determine which additional profiles (if any) are available for a particular device. </p> <p>The Bluetooth profile implementers guide, <i>available soon</i>, describes how licensees can enable profiles on their devices. </p> <ul><li id="GUID-20776509-543D-502E-8B22-90F1A0FED5CA"><p>Advanced Audio Distribution Profile </p> <p>Linked to MMF. </p> </li> <li id="GUID-9C1A784A-E765-5AC4-A158-B56360D5171B"><p>Video Distribution Profile </p> <p>Linked to MMF. </p> </li> <li id="GUID-DFD5DA23-040B-5ECA-A20B-E3254D3664E3"><p>File Transfer Profile </p> </li> <li id="GUID-9CB7D73F-6F3B-52DA-B7C2-C356CBFB8E87"><p>Synchronization Profile </p> </li> <li id="GUID-9D3A40EE-9068-5E5D-A373-B423E5E0AB09"><p>Fax Profile </p> </li> <li id="GUID-3BFFA617-27AF-53E1-96BC-A130356D9540"><p>Dial Up Networking (DUN) Profile </p> </li> <li id="GUID-6C05F7F3-715C-5610-B82F-1E758610170F"><p>Headset Profile </p> </li> <li id="GUID-BE0FD664-E594-598E-BA19-8840E420DB24"><p>Hands Free Profile </p> <p>Use the Remote Control Framework. </p> </li> <li id="GUID-24DBFC9A-8F62-5A8F-BADB-0982572A47B5"><p>HID Profile </p> </li> <li id="GUID-6BA8FC1A-1001-5DAC-AF6A-256CA6F3250A"><p>Device ID Profile </p> </li> <li id="GUID-9F6B9D39-56D2-5C12-8541-506077392190"><p>Basic Printing Profile </p> </li> <li id="GUID-9404210C-4C1F-558B-B74B-5BF0296221DE"><p>Basic Imaging Profile </p> </li> <li id="GUID-052835AA-41A8-5BE7-B6E5-9A064AB11A9C"><p>Service Discovery Application Profile </p> </li> <li id="GUID-32D6A3BB-B4C8-5B66-B6FC-38B3AEEF6566"><p>Unrestricted Digital Information Profile </p> </li> </ul> <p><b>Omitted Bluetooth profiles</b> </p> <p>The following profiles are explicitly omitted from the Current Symbian OS Bluetooth subsystem: </p> <ul><li id="GUID-803B0A52-D5F0-5FBD-B79E-DFFD0EF98CC1"><p>Cordless Telephony Profile </p> </li> <li id="GUID-CAFA84DC-DBE5-522E-B060-55D9C9393800"><p>Intercom Profile </p> </li> <li id="GUID-48A2EAE9-80CE-5688-BE8A-396C4208CF5E"><p>SIM Access Profile </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA83150B-8076-5EA5-BE78-962FB450E848.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-EA83150B-8076-5EA5-BE78-962FB450E848"><title>How to Configure a Port: Tutorial</title><shortdesc>This tutorial shows the basic steps to perform any serial port configuration through the RComm API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps id="GUID-C7AE2DDB-A43B-5049-86B7-719BD8B224E1"><step id="GUID-84194635-B104-5ACD-9350-DF3C0216E744"><cmd/><info>Load the CSY and open a port. </info> </step> <step id="GUID-69055AAE-5757-58E0-8A2A-E36531F4F92C"><cmd/><info>Get the capabilities of the port by calling <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4A6ECC68-EBC7-3B6C-94AE-9272669F6FF2"><apiname>RComm::Caps()</apiname></xref>  </info> </step> <step id="GUID-B1CF56DC-B7B2-59E3-B307-00D1FC28E39A"><cmd>The capabilities of the port are in the <xref href="GUID-076DD315-CE3F-3640-BAB4-0FC51C906820.dita"><apiname>TCommCaps</apiname></xref> structure. For example, <xref href="GUID-B9752D91-7586-3EDB-9A5F-C676512D63BC.dita"><apiname>TCommCapsV01.iRate</apiname></xref> contains a bit field of the bit rates the port can manage. </cmd> <info>Note: A port may be able to manage bit rates higher than those contained in the <xref href="GUID-B9752D91-7586-3EDB-9A5F-C676512D63BC.dita"><apiname>TCommCapsV01.iRate</apiname></xref> bit field. </info> </step> <step id="GUID-90040672-A2C7-5471-ACD7-0E598EDFB96A"><cmd/><info>Create an object of type <xref href="GUID-FA42F645-D2A8-384B-9FE6-6495EACFA479.dita"><apiname>TCommConfigV01</apiname></xref>. </info> </step> <step id="GUID-63322006-F8E5-5D03-8751-3CFA68D83A76"><cmd/><info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with the <codeph>aConfig</codeph> parameter set to the <codeph>TCommConfigV01</codeph> object to get the port configuration. </info> </step> <step id="GUID-F33722CB-81E9-5FB3-87C2-C1A7267B72DE"><cmd/><info>Set the fields that must be changed in the <codeph>TCommConfigV01</codeph> object. For example, set the <xref href="GUID-4EDA16F3-40B1-3C8A-BD00-C04FF81053BB.dita"><apiname>iSIREnable</apiname></xref> flag to enable Infrared. </info> </step> <step id="GUID-82724FBB-9070-59C6-B3B0-694A9EBA82E6"><cmd/><info>Call <xref href="GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF.dita#GUID-3B4E8ED5-72F7-3E51-B188-3C1045526DDF/GUID-4C38E1D8-EC81-36A3-BAA2-4D4FFECFD995"><apiname>RComm::Config()</apiname></xref> with the <codeph>TCommConfigV01</codeph> object as the <codeph>aConfig</codeph> parameter. </info> <info>The port is now configured. </info> </step> </steps> <example><title>Example</title> <codeblock id="GUID-ABA42505-953A-52BC-9B14-67B642E20055" xml:space="preserve">TCommCaps ourCapabilities;
+User::LeaveIfError(commPort.Caps (ourCapabilities));
+
+ if ((ourCapabilities ().iSIR &amp; KCapsSIR115kbps) ||
+(ourCapabilities ().iSIR &amp; KCapsSIR2400bpsOnly) ||
+(ourCapabilities ().iSIR &amp; KCapsSIR4Mbps))
+{
+   // IR is supported, so enable it
+   TCommConfig portSettings;
+   User::LeaveIfError(commPort.Config (portSettings));
+
+   portSettings ().iSIREnable = ESIREnable;
+   User::LeaveIfError (commPort.SetConfig (portSettings));
+}</codeblock> </example> </taskbody><related-links><link href="GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita"><linktext>GlassTerm -
+                glass teletype terminal</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA98D77C-743B-5BA5-B131-A327B12A099C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA98D77C-743B-5BA5-B131-A327B12A099C" xml:lang="en"><title>Character
+Representation Of Real Numbers Overview</title><shortdesc>Defines the format of a real number type when it is converted into
+a string.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-CFDC7685-E95E-4D2A-B6F5-CE9E98AA5654"><title>Architectural relationships</title> <p>A format defined using
+this API is passed to descriptor functions that convert real numbers to strings.</p> </section>
+<section id="GUID-370A414C-F596-4622-A9B1-E57EEC501AD9"><title>Description</title> <p>The character representation of real
+numbers specifies aspects of number formatting such as number of decimal places,
+number of significant digits, and standard or scientific format.</p> <p>The
+API is provided by the <xref href="GUID-28F1EA9D-9F02-3E8C-A07F-4D65C955860C.dita"><apiname>TRealFormat</apiname></xref>.</p> </section>
+<section id="GUID-AA75716A-3B36-46E7-B72B-B1B293233041"><title>See also</title> <p><xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors
+Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EA9C4CF0-F39B-4FBB-924D-F78320E08F2C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EA9C4CF0-F39B-4FBB-924D-F78320E08F2C" xml:lang="en"><title>Getting
+HTTP session ID</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Property method is used to get the current value of the session ID.
+For example:  </p>
+<codeblock xml:space="preserve">THTTPHdrVal value;
+TBool exists = ConnectionInfo.Property(sessionId, value);
+if ( exists )
+   {
+   TInt theSessionId = value.Int();
+    ...
+   }</codeblock>
+<p>If the session ID has been set, this returns <codeph>ETrue</codeph> and
+sets the value to the session ID that was requested by the last call to <xref href="GUID-CE06EB9E-FC1D-37EE-A101-AB4600B2E5F6.dita"><apiname>SetPropertyL()</apiname></xref>.
+If an ID has not been set, or the ID has been removed, this will return <codeph>EFalse</codeph>. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6" xml:lang="en"><title>BitGDI Component</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The BitGDI component provides extensions of the <codeph>CGraphicsDevice</codeph> and <codeph>CGraphicsContext</codeph> abstract
+base classes that are provided by the GDI component. These extensions enable
+hardware-independent access to screen attributes and drawing to bitmapped
+devices and screens independent of the display. BitGDI is used by the Window
+Server in the <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay
+variant</xref> and legacy applications. </p>
+<p>The CBR package name for the BitGDI component is <filepath>graphics_bitgdi</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita"><linktext>Graphics
+Device Interface (GDI)   Collection</linktext></link>
+
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EAC5F9E8-9B7E-4A56-B6C0-E426637BBC3B.swf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EAD6B365-DCB9-51AD-AF21-0B8262B468A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EAD6B365-DCB9-51AD-AF21-0B8262B468A2" xml:lang="en"><title>WhiteList/BlackList
+URI Services Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Mobile widgets are increasingly being used to connect to internet, which
+has increased the vulnerability of devices. To address this issue, Symbian
+provides a framework using which origins of harmful messages can be added
+to a BlackList. The framework also supports adding the origin of trusted clients
+to a WhiteList. This allows end users to control the data they receive from
+networks. </p>
+<p>Symbian provides a client-server framework to support BlackList/WhiteList
+origins (URIs). The framework currently supports <i>Browser</i>, <i>WapPush</i>, <i>PushEmail</i> and <i>DeviceProvisioning</i> service
+type URIs. The URI entry is unique for a given service type and similar URIs
+from different service types can exist in the URI list. </p>
+<p>The BlackList/WhiteList framework provides support for adding a URI to
+the list, removing a URI from list, updating a URI in the list, reading URIs
+from the list, and querying for URIs in the list. Support for wildcard URI
+entries is not provided. The framework also provides support for pre-configuration
+of URIs in the list to enable clients to add their own URIs. </p>
+<p><b>See Also </b> </p>
+<ul>
+<li id="GUID-5C534E00-9D07-50CE-98A3-D0910FDC0964"><p> <xref href="GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita">Using
+URIs from the URI List</xref> </p> </li>
+<li id="GUID-2E66D95E-E300-54C0-B418-0B78738038C8"><p> <xref href="GUID-402B5633-1E3A-5F24-8C4F-DA5F04D2557C.dita">Querying
+URIs from the URI List</xref> </p> </li>
+<li id="GUID-4DD7ECDE-428A-5179-A326-91C93146A529"><p> <xref href="GUID-B36F47DC-0A62-5B8F-A761-2717B921A339.dita">Pre-configuring
+the URI List</xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e162593_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EADCDE6F-127E-528C-B2E0-F13E5C7FD4EF" xml:lang="en"><title>POP3 MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides concepts and functions related to POP3 MTM. The client applications can use the APIs that are provided by this MTM to retrieve emails. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EAE7819B-45C6-579F-BC01-82CB70294153.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EAE7819B-45C6-579F-BC01-82CB70294153"><title>What is Binding and What are Comms Channels?</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Binding is the process of two Comms Provider Modules linking to each other so that they can communicate. The Binding process is managed by the Root Server. After Binding is complete between two Comms Provider modules, each Comms Provider Module has a Comms Channel to the other Comms Provider Module. </p> <p>A Comms Channel is a message-queue-based communication path from one Comms Provider Module to another Comms Provider Module. A Comms Channel is an extension of the <xref href="GUID-2DCEE7F5-9EA3-3546-8779-7299318176E2.dita"><apiname>RMsgQueueBase</apiname></xref> class and provides a message format designed for messages between Comms Provider Modules, and priority queues. Two Comms Channels are used together to provide bi-directional traffic between Comms Provider Modules. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EAEE54D0-4580-5BE7-AA16-4ABC216B4EB0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EAEE54D0-4580-5BE7-AA16-4ABC216B4EB0"><title>How to list directories and files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The list of a directory's contents can obtained by using two variants of the function <codeph>RFs::GetDir()</codeph>. Both variants provide a filtered list of files and directories; the second additionally provides a separate list containing directories only. Both variants use an attribute mask to filter the entry types. </p> <p>The following sections assume that some directories and a file have been created in a directory <filepath>FileserverExample</filepath>, and then lists them in alphabetical order.</p> <section><title>Listing directories and files together</title> <ol id="GUID-EF43DF74-3059-50A2-854A-59985457877B"><li id="GUID-5781228A-BDB8-5E80-AFFF-9B0CB1E574A9"><p>Declare a <codeph>CDir</codeph> pointer. This type holds an array of directory entries.</p> </li> <li id="GUID-184CBE11-E62C-542F-9F95-718960F72639"><p>Use <codeph>GetDir()</codeph> to get a single list, in the <codeph>CDir</codeph> object, which can contain both file and directory entries.</p> <p>Use <codeph>KEntryAttMaskSupported</codeph> to indicate all five file attributes, and the directory attribute.</p> <p>Use <codeph>ESortByName</codeph> to order the entries alphabetically.</p> </li> <li id="GUID-3AD0DD32-B772-5B9B-A3BF-32DAC34D00E3"><p><codeph>CDir::operator[]()</codeph> can be used to get the attributes, name, size and modification date and time of the <codeph>TEntry</codeph> at the specified index within the array. </p> </li> <li id="GUID-BCD0DB7B-8329-5C3F-B194-68D77FB1C9C5"><p>Delete the <codeph>CDir</codeph> object after use.</p> </li> </ol> <codeblock id="GUID-5C104BEF-855C-55F3-8648-3DB6285A3607" xml:space="preserve">
+_LIT(KDir,"\\FileserverExample\\*");
+CDir* dirList;
+User::LeaveIfError(fsSession.GetDir(KDir,
+        KEntryAttMaskSupported,ESortByName,dirList));
+_LIT(KString,"%S");
+for (TInt i=0;i&lt;dirList-&gt;Count();i++)
+    console-&gt;Printf(KString,&amp;(*dirList)[i].iName);
+delete dirList;</codeblock> <p><b>Notes</b> </p> <ul><li id="GUID-6BACC898-1046-52BF-9338-445C4685DFA6"><p><codeph>GetDir()</codeph> supports the use of the two <keyword>wildcard</keyword> characters: <filepath>*</filepath> (meaning any sequence of characters within any part of a component), and <filepath>?</filepath> (meaning any single character).</p> </li> </ul> </section> <section><title>Listing directories and files separately</title> <p>If you want files and directories to be listed separately, another variant of <codeph>GetDir()</codeph> should be used. On return, the first list contains only files, the second directories.</p> <ol id="GUID-EE1E3D1B-109C-50B4-814F-1AA37105E8DE"><li id="GUID-ACE8E30C-3784-552F-B2F1-8A5C7ACE52CA"><p>Use <codeph>GetDir()</codeph> to provide a list of directories and files and additionally a separate list of directories only.</p> </li> <li id="GUID-5B68A082-7725-5F05-BCB0-2B8513803001"><p>If the attribute mask <codeph>KEntryAttNormal</codeph> is used, no system or hidden files or directories are included in the file list.</p> </li> </ol> <codeblock id="GUID-E8D48A34-62EA-588C-9B10-36B87CCF27D6" xml:space="preserve">CDir* fileList;
+User::LeaveIfError(fsSession.GetDir(KDir,
+        KEntryAttNormal,ESortByName,fileList,dirList));</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EAFDBBC4-0F65-5BA9-9967-EE8D50BBCCB6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EAFDBBC4-0F65-5BA9-9967-EE8D50BBCCB6"><title>pwd</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>pwd [ -rLP ]</userinput> </p> <p>Print the absolute pathname of the current working directory. If the<codeph> -r</codeph> or the <codeph>-P </codeph> flag is specified, or the <codeph>CHASE_LINKS</codeph> option is set and the<codeph> -L</codeph> flag is not given, the printed path will not contain symbolic links. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB15EC74-BCCE-591D-8308-210C22CDDDDA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EB15EC74-BCCE-591D-8308-210C22CDDDDA" xml:lang="en"><title>Audio Client Library</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the Audio Client library. </p> </conbody><related-links><link href="GUID-DDE1A8A9-1D67-53BF-8A65-340F139AD4AB.dita"><linktext>Multimedia
+  Framework Component</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EB212C35-5416-4CA7-8091-61B45D78E220" xml:lang="en"><title>Toolbar</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><p>The toolbar offers quick access to some of the key functions in
+the application view. All of the functions must also be found from the <uicontrol>Options</uicontrol> menu. </p><fig id="GUID-946D2784-A151-4EBA-AC48-13007B12D75B">
+<title>Toolbar</title>
+<image href="GUID-0CD826C3-9DD9-46DD-A5A6-9093B8772993_d0e60110_href.png" scale="33" placement="inline"/>
+</fig><p>A tooltip i.e. an information pop-up containing information regarding
+each button must be shown.</p><p>Following toolbar button types can be used:</p><ul>
+<li><p><b>Command button</b> offering direct action (functions/view access)
+like <i>Send</i> or <i>New contact</i> with a button press feedback. Related
+tooltip indicates the function of the button. Command button may have a long
+press functionality included such as <i>Fast forward</i>.</p></li>
+<li><p><b>On/Off button</b> can be used for active/inactive type of functions
+such as <i>Loudspeaker</i> or<i> Font italics</i>. Button has related latched
+down effect. Button icon graphic and tooltip indicate the function of the
+button, and they stay the same regardless of the button state. No long tap
+allowed.</p></li>
+<li><p><b>Mode toggle button</b> can be used for switching between several
+modes as in <i>Flash</i>. Button icon graphic and tooltip change and should
+indicate the current status.</p></li>
+</ul><p>Toolbar buttons are view specific, thus within one application some
+views may have toolbar and some do not. It is recommended though to keep the
+toolbars as consistent as possible within an application. Changing toolbar
+buttons within one view is not allowed, but button can be dimmed in case function
+is not available, e.g. depending on focused item in the view or currently
+available services. Application may change the buttons according to product
+concept.</p><p>The order of the toolbar buttons in different orientations
+is according to the reading direction e.g. the first item is placed topmost
+when the toolbar is vertical and leftmost when the toolbar is horizontal in
+western languages. The appearance of functions in Toolbar should follow the
+order presented below.</p><table id="GUID-D8D1CBB2-C07E-43EA-80E5-9163865A0B2D">
+<title>Appearance order of toolbar functions</title>
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Function type</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>Call</entry>
+<entry>Call initiation related functions</entry>
+</row>
+<row>
+<entry>Reply</entry>
+<entry>Replying to a message</entry>
+</row>
+<row>
+<entry>Send</entry>
+<entry>For sending the content in focus</entry>
+</row>
+<row>
+<entry>Create new</entry>
+<entry>For creating a new message, note, folder, contact or some other item</entry>
+</row>
+<row>
+<entry>View switching</entry>
+<entry>For functions such as Go-to or View mode switching</entry>
+</row>
+<row>
+<entry>Editing</entry>
+<entry>For switching to editing mode</entry>
+</row>
+<row>
+<entry>Opening extension</entry>
+<entry>For opening the toolbar extension in case all the functions within
+the extension are a collection of options of similar type and can be grouped
+under one command e.g. Insert -extension for inserting image, video, presentation
+etc. </entry>
+</row>
+<row>
+<entry>Delete</entry>
+<entry>Deleting the item in focus</entry>
+</row>
+<row>
+<entry>More -extension</entry>
+<entry>For opening the toolbar extension “More” in case the functions within
+the extension are various kinds and cannot be grouped.</entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>Application specific commands that do not fit into any function
+type described above are to be placed between Create new and Opening the extension
+in the order list.</p><p>The application may decide the initial state of On/Off
+and Mode toggle button in application launch. They can also be reset or resumed
+from the previous session.</p><fig id="GUID-2D9D4495-4AA3-4DA8-9AC7-B989189CD2F3">
+<title>Toolbar button states: example of On/Off type of button</title>
+<image href="GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e60273_href.png" scale="50" placement="inline"/>
+</fig></section>
+<section><title>Floating toolbar</title><p>Floating toolbar is a component
+for showing the key functions on top of the Main pane or full screen content.
+It can be used in non-touch UI, but also in touch UI.</p><p>Floating toolbar
+owns the focus, thus it can be used only if other content in the view does
+not need the focus. I.e. floating toolbar cannot be used with lists and grids.</p><p>Opening
+and closing the floating toolbar can be done with the <uicontrol>Show toolbar</uicontrol> / <uicontrol>Hide
+toolbar</uicontrol> command via the Options menu. In this case the toolbar
+is open by default.</p><p>Floating toolbar can also be designed to be opened
+via MSK labeled as <uicontrol>Toolbar</uicontrol>. For closing the toolbar,
+there has to be then a <uicontrol>Hide</uicontrol> button or the toolbar is
+closed after selecting a function. Navigation keys can be used as a shortcut
+for opening and closing the toolbar, when not used for anything else in the
+view. Timeout can be used for closing the toolbar.</p><p>There can be 3-6
+buttons in the floating toolbar depending on used resolution. Thus the most
+important functions must be designed to be the first ones in the toolbar;
+so that they are visible e.g. in case only three buttons fit the layout.  </p><p>When
+the toolbar is open, it owns the Selection key for selecting the focused toolbar
+button. Toolbar does not own the right and left softkeys. The user can move
+the focus over the toolbar buttons with the Arrow keys (left and right). The
+focus loops, and the toolbar itself does not scroll.</p></section>
+<section><title>Floating toolbar extension</title><p>Toolbar button can be
+reserved for opening a toolbar extension, where more options can be found.
+Placement of the extension button within toolbar can be found from the appearance
+order in the table <xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita#GUID-EB212C35-5416-4CA7-8091-61B45D78E220/GUID-D8D1CBB2-C07E-43EA-80E5-9163865A0B2D">Appearance
+order of toolbar functions</xref>. The button has a default graphic, which
+the application can change if needed. </p><p>Toolbar extension buttons are
+for similar actions as buttons in toolbar i.e. the same types and rules apply
+for toolbar extension buttons. Extension should be used for accessing a set
+of logically similar options e.g. when selecting content to be inserted to
+a message or for adjusting imaging session related values in camera. </p><p>Extension
+can have 2 – 12 buttons (3x4 in landscape and 4x3 in portrait). The filling
+order follows the grid filling rules, thus for example most important one
+should be placed as first. In floating toolbar extension, the last extension
+button is reserved for closing the toolbar. </p></section>
+<section><title>Toolbar component in touch UI</title><p>In touch UI the toolbar
+is either fixed in the layout, or a floating component. Both toolbars cannot
+exist in one view.</p><p>Toolbars are view specific, thus all views of an
+application do not have to have a toolbar.</p><p>Selection in touch toolbars
+is done with a single tap, and related tooltip is shown with stylus down.</p></section>
+<section><title>Floating toolbar in touch UI</title><p>The number of floating
+toolbar buttons in the nHD (640 x 360 pixels) layout is three. In case floating
+toolbar is used in full screen, there can be four buttons. </p><p>Floating
+toolbar owns the focus also in touch UI, and thus cannot be used in views
+that have focus for main pane content.</p><p>Floating toolbar can be opened
+and closed as in non-touch UI via the Options menu or with the Selection key,
+or it can be opened by tapping the main pane area. In this case closing is
+done by tapping the main pane area again, with timeout or by selecting a function.</p></section>
+<section><title>Fixed toolbar in touch UI</title><p>The number of fixed toolbar
+buttons in the nHD (640 x 360 pixels) layout is three. It reserves own space
+from the layout and does not cover the content of main pane area. </p><p>Fixed
+toolbar does not have a highlight, and thus it can be used in all views (whether
+main pane needs the highlight or not).</p><p>  Fixed toolbar cannot be opened
+or closed, but it is always visible. Toolbar can be hidden in case other controls
+are also hidden i.e. in full screen views.</p><fig id="GUID-C5A359DF-1C8F-42D3-B86F-79A49EB97D70">
+<title>Toolbar in touch UI fixed in the layout</title>
+<image href="GUID-4BB85136-0E46-47BD-83FD-A918DECF7CDD_d0e60351_href.png" scale="50" placement="inline"/>
+</fig></section>
+<section><title>Toolbar extension in touch UI</title><p>As in non-touch UI,
+toolbars can have extensions also in touch UI. For floating toolbar in touch
+UI, the same rules apply as defined for floating toolbar extension in general.
+In touch UI, the toolbar extension can always be closed with the same toolbar
+button as it was opened, or by tapping outside the extension area. </p><p>In
+addition to general extension rules, the toolbar extension for
+fixed toolbar has certain specific guidelines. Besides buttons, the extension
+of fixed toolbar can include editor fields e.g. for entering an URL or for
+the Find function in the browser. The most important editor field is to be
+the topmost and has the cursor by default.</p><note> In case editor field(s)
+exists, there is less space for buttons in landscape layout compared to portrait
+layout.</note></section>
+<section><title>Using toolbars in C++
+applications</title><p>The APIs to use for creating a toolbar are the <xref href="GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita">Toolbar API</xref> for the
+toolbar itself and the <xref href="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita">Generic
+button API</xref> for the buttons in the toolbar.</p><p>For implementation
+information, see <xref href="GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita">Enabling
+quick access to functions with a toolbar</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB286BFD-6A84-5F12-8CC5-1A347685634A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EB286BFD-6A84-5F12-8CC5-1A347685634A" xml:lang="en"><title>Thread
+Termination</title><shortdesc>Describes the effects caused by a thread termination.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The death of a thread (and any subsequent notifications etc.) is effectively
+just an indication that the thread will never execute any more code; it does
+not guarantee that the operating system has yet finished removing the thread. </p>
+<p>When a thread terminates, the operating system cleans up all resources
+still allocated to the thread; this includes closing any sessions which it
+had open. Closing a session involves notifying the other party in the session
+that the thread has disconnected so that it can do its own cleanup; the operating
+system needs to keep the dead thread's data structures until all of this disconnection
+activity has finished. </p>
+<p>If a thread terminates, there may be a period of time during which any
+attempt to create a new thread of the <i>same</i> name fails with <codeph>KErrAlreadyExists</codeph>. </p>
+<p><b>Related API</b></p>
+<p><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita#GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5/GUID-6C840907-C3F7-34B7-97DB-CEDBA68EA277"><apiname>RThread::Create()</apiname></xref></p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3"><title>DevVideo Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the DevVideo library. </p> <section><title>Purpose</title> <p>DevVideo provides the interface between the Symbian platform and the video processing hardware for all video functionality. </p> <p><b>DevVideo Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-2D7D4730-333C-592B-9830-C8AA979E28D7"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>devvideo.dll</b>  </p> </entry> <entry><p> <b>devvideo.lib</b>  </p> </entry> <entry><p>These files are used for implementing DevVideo. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>DevVideo provides middleware components, such as MMF controller plug-ins, access to video codecs, pre-processors and post-processors. DevVideo interacts with: </p> <ul><li id="GUID-95821394-F1A1-52D9-82C2-7DAC2D5189C3"><p>MMF Controller Framework </p> <p>The controller framework helps to manage the interface to DevVideo and provides controller plug-ins for playing and recording video data. </p> </li> <li id="GUID-46C2C613-7EA1-554C-BE8C-67F1DD9BEF7C"><p>Controller plug-ins </p> <p>Video play and video record controller plug-ins implement play and record functionality respectively. </p> </li> <li id="GUID-90DD575E-B686-5925-9579-C5B7F26CEAE9"><p>Video Hardware Device interface </p> <p> <xref href="GUID-B75C7A33-53E9-300B-A3F1-9584F292A8E5.dita"><apiname>CMMFVideoHwDevice</apiname></xref> is the base class for all video hardware devices. Video playback hardware devices are video decoders and video post-processors. Video recording hardware devices are video pre-processors and encoders. </p> <p>Note that, although the interface is called "Hardware Device" interface, it is possible that the codecs, and pre-processors and post-processors, are not running on a separate hardware device. They could be running on the same processor as all the other software. </p> </li> </ul> <p>Shown below is a representation of how DevVideo interacts with the Multimedia Framework and Media Device Framework components: </p> <fig id="GUID-E9F26F16-0358-5750-9960-110D7721F892"><title>
+             DevVideo and related components 
+          </title> <image href="GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e297675_href.png" placement="inline"/></fig> </section> <section><title>Description</title> <p>DevVideo is a hardware abstraction layer that provides access to video functionality. DevVideo functionality includes video decoding, encoding, pre-processing and post-processing. </p> </section> <section><title>Key DevVideo Classes</title> <p>The video play and record functionality provided by DevVideo is contained within the following key classes: </p> <ul><li id="GUID-8E3D7110-9C2D-5A0D-8AFA-D93C88BB3A24"><p> <xref href="GUID-8CBAAA14-07E5-30AA-A67D-EA968251EB02.dita"><apiname>MMMFDevVideoPlayProxy</apiname></xref> - the interface to <codeph>CMMFDevVideoPlay</codeph>. Hardware devices use this interface to deliver data back to the client. </p> </li> <li id="GUID-DDE4EB42-841A-53E3-9530-03A08D2C2DC4"><p> <xref href="GUID-6273220C-24F9-3ECB-9748-E74D595D448A.dita"><apiname>CMMFDevVideoPlay</apiname></xref> - DevVideoPlay interface and implementation. </p> </li> <li id="GUID-6459C887-823E-5F79-B6A5-82DA37AE7E66"><p> <xref href="GUID-58680391-FDEC-36F5-B3C1-F09581E428F1.dita"><apiname>MMMFDevVideoPlayObserver</apiname></xref> - set of callback functions that any client using <codeph>CMMFDevVideoPlay</codeph> must implement. </p> </li> <li id="GUID-BD82BD0D-A62B-5C60-955E-AEB80B62873B"><p> <xref href="GUID-D3B23BA7-C337-3444-B41B-322024066743.dita"><apiname> MMMFDevVideoRecordProxy</apiname></xref> - the interface to <codeph>CMMFDevVideoRecord</codeph>. Hardware devices use this interface to deliver data back to the client. </p> </li> <li id="GUID-A37B47E1-7AAD-547C-BE0C-D07C3CAA72A4"><p> <xref href="GUID-E2D1AA86-41CD-3D9A-A8FE-FF7D0E3024B0.dita"><apiname>CMMFDevVideoRecord</apiname></xref> - DevVideoRecord interface and implementation. </p> </li> <li id="GUID-9B1FE095-285D-592C-A924-DD13577A8D7B"><p> <xref href="GUID-765A7269-BB3D-32A3-B37C-5C2250E990FB.dita"><apiname>MMMFDevVideoRecordObserver</apiname></xref> - set of callback functions that any client using <codeph>CMMFDevVideoRecord</codeph> must implement. </p> </li> </ul> </section> <section><title>Using DevVideo</title> <p>Clients can use DevVideo to: </p> <ul><li id="GUID-0E3CC319-7A07-52B7-BF0B-C60B552EAEB9"><p>Select the video decoder to use. </p> </li> <li id="GUID-1E8EA07D-E0D7-50A1-AB2C-B22A502BD651"><p>Configure the video decoder. </p> </li> <li id="GUID-206AA299-813C-570F-96E1-C34971A9BCF6"><p>Select the video post-processor to use. </p> </li> <li id="GUID-3FA3B14D-E470-596A-A365-83D8A82C08FE"><p>Configure the video post-processor. </p> </li> <li id="GUID-619F4F90-C9B6-5CE8-A3CE-5133F26D33E6"><p>Set clock source for timing video playback. </p> </li> <li id="GUID-E74E4938-215F-53AA-A5C1-2CCC3E193BF0"><p>Set video output destination. </p> </li> <li id="GUID-91D6FFF1-E0B1-5C08-B622-C4CBD7D353BF"><p>Start video playback. </p> </li> <li id="GUID-C1233D6B-07E8-5F52-B181-D829E6BEF75B"><p>Pause video playback. </p> </li> <li id="GUID-C691A1FC-3B90-558F-9A40-D1B721797277"><p>Stop video playback. </p> </li> <li id="GUID-09E5A40D-4410-51EA-A1DD-3390356CA21B"><p>Select the video encoder to use. </p> </li> <li id="GUID-1AB0F445-6747-595B-964A-2607D98231BF"><p>Configure the video encoder. </p> </li> <li id="GUID-05647E57-0BCB-5766-A6C7-38324563D8E7"><p>Select the video pre-processor to use. </p> </li> <li id="GUID-6B78688D-D291-511E-A4A2-B24175D1CFC4"><p>Configure the video pre-processor. </p> </li> <li id="GUID-B153F2DF-1F2B-5F25-8693-2D46FC8B7077"><p>Set clock source for timing of video recording. </p> </li> <li id="GUID-8A7AB02B-5FFE-5CD1-8856-26C2577A09C6"><p>Start video recording. </p> </li> <li id="GUID-E294F9BC-0078-53CA-AA84-C3E4F28D0648"><p>Pause video recording. </p> </li> <li id="GUID-7730116F-1188-5BEB-91B7-1F21525E65CD"><p>Stop video recording. </p> </li> <li id="GUID-026D56C1-4E68-587B-A546-4543B8149FBE"><p>Pass video buffers to and from the client. </p> </li> <li id="GUID-7CD4E18E-3E54-54AD-AAFB-D9B778C64331"><p>Pass pictures to and from the client. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita"> Video Client Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB6A14CF-05DA-5EAD-AB68-F6511907DF05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EB6A14CF-05DA-5EAD-AB68-F6511907DF05"><title>Use of the Externalize class</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The implementation of the family of operators <xref href="GUID-50F3A8F9-DA0A-3377-A75C-282F1E920E2D.dita"><apiname>operator&lt;&lt;()</apiname></xref> calls the internal Symbian OS function <codeph>DoExternalizeL()</codeph>. There are two variants of this function distinguished by the value of the third parameter as either <xref href="GUID-43ED0606-199C-3C1A-B7E1-5EDB1DED469B.dita#GUID-43ED0606-199C-3C1A-B7E1-5EDB1DED469B/GUID-9D890F4B-3F84-3261-8C4C-275031651229"><apiname>Externalize::Member</apiname></xref> or <xref href="GUID-43ED0606-199C-3C1A-B7E1-5EDB1DED469B.dita#GUID-43ED0606-199C-3C1A-B7E1-5EDB1DED469B/GUID-886A0861-06AA-3346-B458-C97F332DDD21"><apiname>Externalize::Function</apiname></xref>.</p> <p>The family of operators <xref href="GUID-50F3A8F9-DA0A-3377-A75C-282F1E920E2D.dita"><apiname>operator&lt;&lt;()</apiname></xref> are implemented as follows:</p> <codeblock id="GUID-472120FA-4058-5316-96D4-9A594D39A359" xml:space="preserve">template &lt;class T&gt;
+inline RWriteStream&amp; operator&lt;&lt;(RWriteStream&amp; aStream,const T&amp; anObject)
+    {
+    DoExternalizeL(anObject,aStream,Externalization(&amp;anObject));
+    return aStream;
+    }</codeblock> <p>The two variants of <codeph>DoExternalizeL()</codeph> are defined and implemented as:</p> <codeblock id="GUID-7FE54FB6-BDE8-5BD2-85BD-802BFB7430A8" xml:space="preserve">template &lt;class T&gt;
+inline void DoExternalizeL(const T&amp; anObject,RWriteStream&amp; aStream,Externalize::Member)
+    {anObject.ExternalizeL(aStream);}</codeblock> <codeblock id="GUID-FDD7942E-EBAD-5AF0-A731-FF210B44E91B" xml:space="preserve">template &lt;class T&gt;
+inline void DoExternalizeL(const T&amp; anObject,RWriteStream&amp; aStream,Externalize::Function)
+    {ExternalizeL(anObject,aStream);}</codeblock> <p>The variant called depends on the value returned from a call to the internal selector function, <codeph>Externalization()</codeph>. This selector function returns either <codeph>Externalize::Function</codeph> or <codeph>Externalize::Member</codeph>, depending on the type of <codeph>anObject</codeph>.</p> <p>The internal selector function <codeph>Externalization()</codeph> is a convenience mechanism that allows the <xref href="GUID-50F3A8F9-DA0A-3377-A75C-282F1E920E2D.dita"><apiname>operator&lt;&lt;()</apiname></xref> to call either the <codeph>ExternalizeL()</codeph> member function of a templated class or an <codeph>ExternalizeL()</codeph> templated global function.</p> <p>The store framework defines and implements a default selector function, prototyped as:</p> <codeblock id="GUID-E233C9ED-7ABC-554C-BB83-D6A00F4BE485" xml:space="preserve">Externalize::Member Externalization(const TAny*)</codeblock> <p>By default, a call to <codeph>Externalization()</codeph> passing a parameter of general class type, is resolved at compile time into a call to this variant, and the return type is <xref href="GUID-43ED0606-199C-3C1A-B7E1-5EDB1DED469B.dita#GUID-43ED0606-199C-3C1A-B7E1-5EDB1DED469B/GUID-9D890F4B-3F84-3261-8C4C-275031651229"><apiname>Externalize::Member</apiname></xref>. The store framework also defines and implements a number of other variants that take more specific argument types; for example, as part of its implementation of <xref href="GUID-50F3A8F9-DA0A-3377-A75C-282F1E920E2D.dita"><apiname>operator&lt;&lt;()</apiname></xref> for descriptors, the framework defines and implements:</p> <codeblock id="GUID-BE0D631B-7CC6-5D9D-A49C-A18B209295C6" xml:space="preserve">Externalize::Function Externalization(const TDesC8*)</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB76BA4B-D6A2-5651-A310-647E1D2CDEBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EB76BA4B-D6A2-5651-A310-647E1D2CDEBC" xml:lang="en"><title>User
+Interface MTM</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>User Interface (UI) MTMs offer user interface capabilities, such as viewing,
+editing and copying of messages. Users interact with different message types
+in different ways. For example, a messaging protocol that supports attachments
+needs a more feature-rich editor than one that only supports text. UI MTMs
+allows a developer to produce user interface components to suit these differing
+requirements. Some Messaging protocols do not need any user interaction at
+all: in such cases, a UI MTM component does not need to be implemented. </p>
+<p>UI MTMs offer some or all of the following capabilities: </p>
+<ul>
+<li id="GUID-6832B4D6-633A-5C74-ADE6-9DFC956D896E"><p>Message viewing </p> </li>
+<li id="GUID-09F1E9E0-1A40-5AD9-BF2B-FC46FF3E91BF"><p>Message editing </p> </li>
+<li id="GUID-AFF6F519-F5DE-5F3B-BCFC-605759B9AEBB"><p>Folder manipulation </p> </li>
+<li id="GUID-DBF12F1E-974B-5E41-AB67-8726D5196262"><p>Editing service settings </p> </li>
+<li id="GUID-B0473D77-B689-5147-B5D3-85C92812BD83"><p>Providing
+pre-transfer or connection settings UI </p> </li>
+<li id="GUID-1A1FEA3D-21A0-51A3-BD4D-6C65B4C023CC"><p>Providing pre-transfer
+preparation of messages before sending </p> </li>
+<li id="GUID-31A3FA9B-155A-59D2-8263-A0DE8213F681"><p>Interpreting and displaying
+mail transfer progress </p> </li>
+<li id="GUID-EF964F08-1D1B-5321-81F1-B5EEB0E1F977"><p>Interpreting and displaying
+error conditions </p> </li>
+</ul>
+<section><title>UI MTM base class</title> <p>The base class for UI MTMs is <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref>.
+Message client applications use the class to access the functionality polymorphically.
+Many functions are required to return an instance of a <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> derived
+class to provide asynchronous control and monitoring to the caller of the
+operation being performed. </p> <p>The following are some significant functions
+that can be implemented in a class derived from the <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref> base
+class: </p> <ul>
+<li id="GUID-CEC38AC9-4FF6-56C9-BEB7-75BD4BB1D064"><p> <b>Entry manipulation
+functions</b>  </p> <p>The <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-0DD6B979-0473-3AAD-AE14-F1B0AC1E73C5"><apiname>CBaseMtmUi::OpenL()</apiname></xref>, <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-F7895B4B-21B8-36BD-A1B7-F66C4013871B"><apiname>CBaseMtmUi::CloseL()</apiname></xref>, <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-E637CFD7-6055-3581-B804-34889E83CB10"><apiname>CBaseMtmUi::EditL()</apiname></xref>, and <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-036C63AE-0289-3718-9588-3D0539F48522"><apiname>CBaseMtmUi::ViewL()</apiname></xref> functions are entry manipulation
+functions. They are all available in two overloaded versions. The first version
+operates on the current context. The second version operates upon groups of
+entries specified by a <xref href="GUID-6BC8851B-D913-3CE5-B343-5163661E8AD5.dita"><apiname>CMsvEntrySelection</apiname></xref> argument. All
+entries must be in same folder and all of the correct MTM type. The context
+may change after calling these functions. </p> </li>
+<li id="GUID-F8613B65-9C4F-5174-BC04-2169BF985A34"><p> <b>Copying and moving
+functions</b>  </p> <p>The <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-5CDA28D4-070B-38D4-ABA8-1DBEF5216721"><apiname>CBaseMtmUi::CopyToL()</apiname></xref>, <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-CF9EC3B2-A56B-31E4-AEBE-D65E440BD5CA"><apiname>CBaseMtmUi::CopyFromL()</apiname></xref>, <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-11AD0A75-CA8D-336B-B2EB-5CBC0996C1CE"><apiname>CBaseMtmUi::MoveToL()</apiname></xref>, and <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-2D4A6DC2-9FB7-3B2B-AAFE-CCDEAAE262A8"><apiname>CBaseMtmUi::MoveFromL()</apiname></xref> functions copy and move
+entries to and from remote servers. MTMs can implement these functions to
+provide any user interaction needed before copying or moving can proceed,
+such as dialog to confirm settings. </p> </li>
+<li id="GUID-7311A06E-94BE-5AF7-8345-07A29AED20AA"><p> <b>Progress information
+functions</b>  </p> <p>The <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-3A65055B-C48B-3E45-B097-6C63C974259F"><apiname>CBaseMtmUi::DisplayProgressSummary()</apiname></xref> and <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-F67FCA0E-510C-3A45-B196-8B60BC2D5208"><apiname>CBaseMtmUi::GetProgress()</apiname></xref> progress
+information functions convert MTM-specific progress information about some
+asynchronous operation, such as message sending, to a human-readable form.
+The progress information to pass into these functions is, in general, obtained
+from an on-going <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita"><apiname>CMsvOperation</apiname></xref> by calling <xref href="GUID-AF724192-6580-3DE3-9287-3A005C0AA932.dita#GUID-AF724192-6580-3DE3-9287-3A005C0AA932/GUID-5814F4B0-F8B6-36C6-8E69-11554BA62BA7"><apiname>CMsvOperation::Progress()</apiname></xref>.
+The nature of any information provided by these functions is MTM-specific. </p> </li>
+<li id="GUID-00644644-BD9E-548B-82B3-4E166A86B414"><p> <b>MTM-specific UI
+functions</b>  </p> <p>MTM components can offer protocol-specific functionality
+not provided by base class interface functions. MTM components define IDs
+that correspond to each protocol-specific operation offered, and implement
+the <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-3F350426-30C3-3BD0-8245-F13E72CEDC7C"><apiname>CBaseMtmUi::InvokeSyncFunctionL()</apiname></xref> and <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita#GUID-A5982338-A057-3870-8832-F503AEAC470A/GUID-78637126-6EEF-318D-B1D3-A24055EE8AD5"><apiname>CBaseMtmUi::InvokeAsyncFunctionL()</apiname></xref> functions
+to allow clients to access these operations by passing in the appropriate
+ID. Two functions are provided to allow the MTM component to offer both synchronous
+and asynchronous functionality. Message client applications can dynamically
+add user-interface features for these operations using <xref href="GUID-899C6D87-5712-34A7-902C-EA452894700C.dita#GUID-899C6D87-5712-34A7-902C-EA452894700C/GUID-75DE35D7-4738-38C0-9BFA-A066F67B114B"><apiname>CBaseMtmUiData::MtmSpecificFunctions()</apiname></xref>. </p> </li>
+</ul> <p>The <xref href="GUID-A5982338-A057-3870-8832-F503AEAC470A.dita"><apiname>CBaseMtmUi</apiname></xref> class provides the virtual functions
+for overriding in derived classes.</p> </section>
+<section><title>Editors and viewers</title> <p>Functionality to edit and view
+messages may be one of the larger programming tasks in creating an MTM. Such
+functionality is typically implemented in separate DLLs that the UI MTM loads
+as required, to reduce the memory footprint of a UI MTM. </p> </section>
+</conbody><related-links>
+<link href="GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita"><linktext>MTM     
+           overview</linktext></link>
+<link href="GUID-BAD138D5-2914-5C6E-9FA4-F7A3CCB85E6D.dita"><linktext>MTM     
+           Capabilities</linktext></link>
+<link href="GUID-133999E8-0ACB-5929-949E-82BB16F8E267.dita"><linktext>Writing a
+UI MTM </linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EB82A2C8-EF92-5276-B503-687DEBF82EA4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EB82A2C8-EF92-5276-B503-687DEBF82EA4"><title>Creating an Animation Object</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In order to create new instances of animation objects of type <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref> in the DLL, you need to implement the <codeph>CAnimDll::CreateInstanceL()</codeph> pure virtual factory function in the derived class. </p> <p>Declare your <xref href="GUID-9E598CDA-6483-3AE3-ABFF-0F701A47AB84.dita"><apiname>CAnimDll</apiname></xref> derived class in a header file as follows: </p> <codeblock id="GUID-6F7DE31B-0CCB-59D3-82BA-3D1AB6AE571F" xml:space="preserve">class CExampleAnimDll : public CAnimDll
+    {
+public:
+    virtual CAnim* CreateInstanceL(TInt aType);
+    };</codeblock> <p>A convenient way to implement <codeph>CreateInstanceL()</codeph> is to switch on the <codeph>TInt aType</codeph> argument, with each switch constructing a different <codeph>CAnim</codeph> derived animation class identified by an <codeph>aType</codeph> enum. For example. if <codeph>CShapesAnims</codeph> is one of those classes: </p> <codeblock id="GUID-BDFD1962-5845-5605-9915-C6E1A40EDAC4" xml:space="preserve">switch(aType)
+    {
+    // cases
+    case EShapesAnims:
+        return new(ELeave) CShapesAnims;
+    ...
+    default:
+        iFunctions -&gt; Panic();
+        return NULL; // dummy return to prevent compiler error
+    }</codeblock> <p>It is up to the implementer to decide whether receiving a bad parameter should cause a panic, as here, or a leave. The approach shown is recommended. </p> <p>The <codeph>Panic()</codeph> function is an <xref href="GUID-FFE76181-A701-374B-82AA-CEACC5856E91.dita"><apiname>MAnimGeneralFunctions</apiname></xref> helper function, to which <codeph>CAnim</codeph> provides the <codeph>iFunctions</codeph> pointer. These functions are implemented by the Window Server and are available to any <codeph>CAnim</codeph> derived class. </p> <p>The animation class's <codeph>ConstructL()</codeph> function is called after <codeph>CreateInstanceL()</codeph>. </p> </conbody><related-links><link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C"><title>MIME Recognition Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The MIME (Multipurpose Internet Mail Extension) recognition framework enables data type identification. </p> <p>The MIME recognition framework implements data type recognition using MIME (data) recognizers. The MIME recognizers are ECOM plug-ins. A MIME recognizer reads a small piece of the data. A data type can be recognized by more than one MIME recognizer. The framework uses the concepts of priority and confidence level to determine the data type. </p> <p>The Application Architecture (AppArc) launches the appropriate application using the MIME framework to handle the data. </p> <p>It is not guaranteed that an application will be available to handle a data type, even if it was successfully recognized. </p> <section><title>Purpose</title> <p> </p> <p>MIME type recognition enables devices to identify data type in streams or files and start appropriate application automatically. </p> </section> <section><title>Key concepts and terms</title> <dl><dlentry><dt>MIME</dt> <dd><p>MIME (Multipurpose Internet Mail Extension) is an internet standard system for identifying the type of data in a file or stream. Types can include graphics, photos, audio, video files and formatted text. </p> </dd> </dlentry> <dlentry><dt>Priority</dt> <dd><p>The plug-in developer assigns a priority (EHigh, ENormal or ELow) to the data recognizers. A data type can be handled by more than one application and may therefore be recognized by more than one recognizer. </p> <p>The priority determines the position at which the recognizer is inserted into the recognizer list. The higher priority recognizers are placed at the start of the list. If more than one recognizer recognizes a data type with the same confidence, the recognizer with the higher priority takes precedence. The sequence in which recognizers are invoked by the framework is determined by their priority. High priority recognizers are invoked first. </p> <p>For more details refer to <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita#GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0/GUID-14F65687-821A-3C30-A27F-A8B5F4688094"><apiname>CApaDataRecognizerType::TRecognizerPriority</apiname></xref>. </p> </dd> </dlentry> <dlentry><dt>Recognizer list</dt> <dd><p>The MIME recognition framework maintains a list of MIME recognizers. The recognizer list is constructed based on the data types the MIME recognizers claim to support and is ordered by priority. </p> </dd> </dlentry> <dlentry><dt>Confidence level</dt> <dd><p>A MIME recognizer reads a small piece of data from the start of a file or stream. It attempts to match the data with one of its known types. If the match is complete it returns the associated data type with full confidence (ECertain) and if there is no match it returns no data type with no confidence (ENotRecognized). If there is a partial match it can return a data type with an intermediate confidence level (EPossible, EUnlikely, ENotRecognized). </p> <p>The confidence of MIME recognizers can be expressed in 5 different levels: </p> <ul><li id="GUID-1C6B8B13-6303-5B3E-804E-9798B8CC39F3"><p> <codeph>ECertain</codeph>  </p> </li> <li id="GUID-9BF81FB9-CF0E-59D6-B7F7-5B31D161B760"><p> <codeph>EProbable</codeph>  </p> </li> <li id="GUID-9F2047BD-67C0-57D6-88A7-0B087D99F4BA"><p> <codeph>EPossible</codeph>  </p> </li> <li id="GUID-7A4B066D-9884-5F8E-B455-588DE546EB69"><p> <codeph>EUnlikely</codeph>  </p> </li> <li id="GUID-71651D00-8254-56C4-B26D-DCFB4AA658E5"><p> <codeph>ENotRecognized</codeph>  </p> </li> </ul> <p>By default, the confidence level of the MIME Recognizer is <codeph>ECertain</codeph>. </p> <p>For more details refer <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita#GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0/GUID-3DCAE2B7-E840-3838-83BC-3D7FE73A1757"><apiname>CApaDataRecognizerType::TRecognitionConfidence</apiname></xref>. </p> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>MIME recognizers are <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECOM</xref> plugins, located under <filepath>\sys\bin\</filepath>. </p> <fig id="GUID-981203F5-B7D7-54F4-95E5-AFA2D1286BFF"><title>
+             MIME framework architecture 
+          </title> <image href="GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e147274_href.jpg" placement="inline"/></fig> <ul><li id="GUID-17CE2467-5B33-5B07-95A7-CCCF9D66E693"><p>AppArc is the main client of the MIME recognition framework. </p> </li> <li id="GUID-CAEDF3BA-B7AA-5F60-BF9F-CA308CAF7002"><p>Applications that need data type recognition use the MIME recognition framework via AppArc APIs. </p> </li> <li id="GUID-E3763687-3E7D-5D24-BC92-88DE1CC11D2B"><p>The MIME recognition framework delegates the data type identification task to an appropriate MIME recognizer. </p> </li> <li id="GUID-94882AE7-A578-507C-AE2E-6C778B78F52B"><p>The MIME recognizer identifies the data type. </p> </li> <li id="GUID-5F74226E-0EAA-5338-BED9-5A58B54ECC2F"><p>AppArc launches the application for the identified data type. </p> </li> </ul> </section> <section><title>APIs</title> <table id="GUID-6573D858-F2D1-5E0C-B330-951D0324702C"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-EBE480D9-E377-32F4-9AE5-9C58684BEFF0.dita"><apiname>CApaDataRecognizerType</apiname></xref>  </p> </entry> <entry><p>Is the abstract base class for a recognizer. Recognizers need to define and implement a derived class and provide an implementation of the functions.This class contains the MIME APIs related to MIME recognition framework. </p> </entry> </row> <row><entry><p> <xref href="GUID-5EEE8745-F483-33C0-A5B1-AEB5544DE2BA.dita"><apiname>RApaLsSession</apiname></xref>  </p> </entry> <entry><p>A session with the application architecture server. The server provides access to a cached list of the applications on the device. This class contains the AppArc APIs related to MIME recognition framework. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Typical uses</title> <p>The MIME recognition framework allows the plug-in writers to: </p> <ul><li id="GUID-FEBCF579-E483-58D3-9BEB-A9A50F58F1FA"><p><xref href="GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita">Write Data(MIME) Recogzisers</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EBFE8B29-86AD-5785-8041-BCED2E90472E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EBFE8B29-86AD-5785-8041-BCED2E90472E" xml:lang="en"><title>Setting SNAP Preferences</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class enables to define, retrieve, and delete the SNAP IDs. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC21A1A2-FD5A-5764-A69A-18D74090BA92.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EC21A1A2-FD5A-5764-A69A-18D74090BA92" xml:lang="en"><title>Format
+string syntax</title><shortdesc><apiname>TDes8::Format()</apiname>, <apiname>TDes16::Format()</apiname> and
+some other functions take a format string containing literal text embedded
+with directives for converting a trailing list of arguments into text.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> Each formatting directive consumes a number of arguments from the trailing
+list. Directives have the following syntax: </p>
+<codeblock xml:space="preserve">format directive
+escaped-percent
+simple-conversion
+padded-conversion
+aligned-conversion
+escaped percent
+%%</codeblock>
+<p>Formatting directives begin with a "<codeph>%</codeph> ". To insert a percentage
+sign, use the digraph "<codeph>%%</codeph> ". </p>
+<p>Examples of how to use format string syntax are provided in <xref href="GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160.dita#GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160/GUID-E0D95020-9E74-5FE1-8A84-74FFE8C2CB1E">Formatting text</xref>. </p>
+<section id="GUID-E6DF6CA4-D6BA-494B-A2B1-CCD63B3DC4A3"><title>Unpadded, dynamic-width formatting </title><codeblock xml:space="preserve">simple-conversion
+%
+conversion-specifier</codeblock><p>Data from the argument list is converted
+without padding, and only occupies the space required. The <codeph>conversion
+specifier</codeph> describes how the data is to be formatted into a string. </p></section>
+<section id="GUID-35FE3AB2-8B3D-4459-9A8F-8E3688216066"><title>Fixed-width, padded formatting </title><codeblock xml:space="preserve">padded-conversion
+%
+zero-or-space-pad
+field-width
+precision
+conversion-specifier
+0</codeblock><p>Data from the argument list is converted, but may not occupy
+more space than specified. If the width of the formatted data is less than
+the field width, the field is padded to the left with the specified character.
+If the width of the formatted string is greater than the field width, the
+result depends on the <codeph>conversion specifier</codeph> as follows: </p><ul>
+<li id="GUID-25BEB2AC-3A2C-5917-B417-61627F0FB9FC"><p>If the conversion specifier
+is either: 'e', 'E', 'f', or 'F', i.e. the source data is a real number, then
+the value of the width is ignored and all generated characters are accepted.
+However, the maximum number of characters can never exceed the value of <codeph>KMaxRealWidth</codeph>. </p> </li>
+<li id="GUID-878BB7DB-D66A-5965-AC0A-D058A3455413"><p>If the conversion specifier
+is either 'g' or 'G', i.e. the source data is a real number, then the value
+of the width is ignored and all generated characters are accepted. However,
+the maximum number of characters can never exceed the value of <xref href="GUID-A6F9D2A1-51D7-366A-9F41-90FEBB476B05.dita"><apiname>KDefaultRealWidth</apiname></xref>. </p> </li>
+<li id="GUID-E4398EC7-16CF-5484-9A2D-A4A337F12A9B"><p>If the conversion specifier
+is anything else, then the number of converted characters is limited to the
+width value. </p> </li>
+</ul></section>
+<section id="GUID-C4A3149B-B791-4CD8-9E2F-F8BA7D27C0BD"><title>Formatting with alignment, arbitrary pad character and a specified
+field width </title><p>Note that for this formatting conversion, only a zero
+or a space is permitted for the pad character. </p><codeblock xml:space="preserve">aligned-conversion
+alignment	[pad]
+field-width		[precision]
+conversion-specifier</codeblock><p>The full <codeph>aligned-conversion</codeph> is
+verbose, but in addition to the zero and space characters, it permits non-numeric
+characters to be specified as the padding character. It also permits its value
+to be aligned within the field. </p><p>Undefined terms are discussed below. </p></section>
+<section id="GUID-0E226EE4-FDF2-4ED0-8F4F-82862EEAFE4A"><title>Alignment specifiers</title> <p>Formatted data whose width
+in characters is less than the width of the field can optionally be aligned
+to the left, or to the centre of the field. The default is right-alignment. </p> <p>The <codeph>alignment</codeph> specifier
+is a single character with one of the following values: </p> <table id="GUID-D728B8E3-380B-5A78-B4A7-70EBAAB4ACF2">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Spec</entry>
+<entry>Alignment</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <codeph>+</codeph> </p> </entry>
+<entry><p>Right alignment </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>-</codeph> </p> </entry>
+<entry><p>Left alignment </p> </entry>
+</row>
+<row>
+<entry><p> <codeph>=</codeph> </p> </entry>
+<entry><p>Centre alignment </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-80251801-E0A5-4733-AB94-D3311F005F0D"><title>Field width specifiers</title> <p>Data may be formatted into
+a field with a fixed or a dynamic width. Fixed field widths require an extra
+argument. </p> <p>The <codeph>field-width</codeph> specifier is either a sequence
+of decimal digits which explicitly define the size of the field to be occupied
+by the converted data, or an asterisk ('<codeph>*</codeph>') character. An
+asterisk indicates that the size of the field is taken from the next <xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> value
+in the argument list. </p> </section>
+<section id="GUID-A7B658B7-E137-4FE0-B70C-F2F439A3E33F"><title>Pad characters</title> <p>Formatted data whose width in characters
+is less than the width of the field can optionally be padded with as many
+characters as are needed. </p> <p>The <codeph>pad</codeph> character may be
+any non-numeric character (although "<codeph>0</codeph> " can be specified).
+If the pad character is an asterisk ("<codeph>*</codeph> "), then the next
+argument in the list is read, interpreted as a <codeph>TUint</codeph>, and
+used as the pad character. </p> </section>
+<section id="GUID-D7578AD1-9749-441E-B7E3-13170B961F1C"><title>Precision specifiers</title> <p>A dot after a field width
+introduces a precision specifier. This is only useful when formatting real
+values. Precision specifiers are integers whose decimal values specify the
+number of decimal places to use when formatting the data. </p> <p>If the precision
+specifier is omitted, conversion defaults to <codeph>KDefaultPrecision</codeph> decimal
+places. </p> </section>
+<section id="GUID-B317D693-E5B6-4F6F-90D3-5576B894DEAD"><title>Variable argument positions</title> <p>The format string syntax
+was extended in v7.0 to include a way of specifying which argument or argument
+block should correspond to a conversion specifier. </p> <p>Immediately after
+the initial <codeph>%</codeph> character preceding every conversion specifier, <codeph>$</codeph> <i>x</i> <codeph>$</codeph> may
+optionally be specified, where <i>x</i> is an integer greater than zero. This
+integer is used as a one-based index indicating which argument or block of
+arguments in the argument list should be used for that conversion specifier.
+Note that arguments in the argument list may be grouped into argument blocks.
+For instance an integer field width argument and the data to insert into the
+field are an argument block and share the same index. </p> <p>Examples of
+this are provided in <xref href="GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160.dita#GUID-0B6C97D3-0E2D-5BBE-B8AC-985902715160/GUID-E0D95020-9E74-5FE1-8A84-74FFE8C2CB1E">Formatting
+text</xref>. </p> </section>
+<section id="GUID-8B1B622B-4FA4-5B31-908B-7B03F8B851F0"><title>Conversion
+specifiers</title> <p>The conversion of argument data is dictated by the value
+of the <i>conversion specifier</i> which can consist of one or more characters;
+most of the conversion specifiers are just a single character. For some of
+these specifiers, the case is significant. </p> <p>The possible values for <codeph>conversion-specifier</codeph> are
+as follows: </p> <table id="GUID-9ECD5627-3AA7-560C-B8CB-93E2EA43CDF0">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>Spec</entry>
+<entry>Interpretation and formatting</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>b</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert it
+to its binary character representation. This specifier is case insensitive. </p> </entry>
+</row>
+<row>
+<entry><p>o</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert it
+to its octal character representation. This specifier is case insensitive. </p> </entry>
+</row>
+<row>
+<entry><p>d</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TInt</codeph> and convert it
+to its signed decimal representation. This specifier is case insensitive. </p> <p>If
+the value is negative, the representation will be prefixed by a minus sign. </p> </entry>
+</row>
+<row>
+<entry><p>Ld </p> </entry>
+<entry><p>Interpret the argument as a <codeph>TInt64</codeph> and convert
+it to its signed decimal representation. The second character of this specifier
+is case insensitive, so that the character pair <i>LD</i> has the same meaning. </p> <p>If
+the value is negative, the representation will be prefixed by a minus sign. </p> </entry>
+</row>
+<row>
+<entry><p>LD </p> </entry>
+<entry><p>This is the same as <i>Ld</i> above, i.e. interpret the argument
+as a <codeph>TInt64</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>i</p> </entry>
+<entry><p>This is the same as <i>d</i> above, i.e. interpret the argument
+as a <codeph>TInt</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>Li </p> </entry>
+<entry><p>This is the same as <i>Ld</i> above, i.e. interpret the argument
+as a <codeph>TInt64</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>LI </p> </entry>
+<entry><p>This is the same as <i>LD</i> above, i.e. interpret the argument
+as a <codeph>TInt64</codeph>. </p> </entry>
+</row>
+<row>
+<entry><p>e</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TReal</codeph> and convert it
+to exponent format representation. Three digit exponents are allowed. (See
+also <codeph>TRealFormat</codeph>). </p> <p>(Note the lower case) </p> </entry>
+</row>
+<row>
+<entry><p>E</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TRealX</codeph>, and convert
+it to exponent format representation. Three digit exponents are allowed (See
+also <codeph>TRealFormat</codeph>). </p> <p>(Note the upper case) </p> </entry>
+</row>
+<row>
+<entry><p>f</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TReal</codeph> and convert it
+to fixed format representation (See <codeph>TRealFormat</codeph>). </p> <p>(Note
+the lower case) </p> </entry>
+</row>
+<row>
+<entry><p>F</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TRealX</codeph>, and convert
+it to fixed format representation (See <codeph>TRealFormat</codeph>). </p> <p>(Note
+the upper case) </p> </entry>
+</row>
+<row>
+<entry><p>g</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TReal</codeph> and convert it
+to either fixed or exponent format representation, whichever format can present
+the greater number of significant digits. </p> <p>If the exponent format is
+chosen, three digit exponents are allowed. (See also <codeph>TRealFormat</codeph>). </p> <p>(Note
+the lower case) </p> </entry>
+</row>
+<row>
+<entry><p>G</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TRealX</codeph>, and convert
+it to either fixed or exponent format representation, whichever format can
+present the greater number of significant digits. </p> <p>If the exponent
+format is chosen, three digit exponents are allowed. (See also <codeph>TRealFormat</codeph>). </p> <p>(Note
+the upper case) </p> </entry>
+</row>
+<row>
+<entry><p>u</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert it
+to its unsigned decimal representation. This specifier is case insensitive. </p> </entry>
+</row>
+<row>
+<entry><p>Lu </p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint64</codeph> and convert
+it to its unsigned decimal representation. The second character of this specifier
+is case insensitive, so that the character pair LU has the same meaning. </p> </entry>
+</row>
+<row>
+<entry><p>LU </p> </entry>
+<entry><p>This is the same as <i>Lu</i> above. </p> </entry>
+</row>
+<row>
+<entry><p>x</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert it
+to its hexadecimal representation. This specifier is case insensitive. </p> </entry>
+</row>
+<row>
+<entry><p>p</p> </entry>
+<entry><p>Generate the required number of pad characters. No arguments are
+accessed. This specifier is case insensitive. </p> <p>For this directive to
+be useful, a field with should be specified. </p> </entry>
+</row>
+<row>
+<entry><p>c</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> value and convert
+it to a single character value. This specifier is case insensitive. </p> </entry>
+</row>
+<row>
+<entry><p>s</p> </entry>
+<entry><p>Interpret the argument as a pointer to a <codeph>TUint16</codeph> type,
+for 16 bit descriptors, or a <codeph>TUint8</codeph> type, for 8 bit descriptors,
+and copy all data starting at this location up to, but not including the location
+which contains a zero value. </p> <p>(Note the lower case). </p> </entry>
+</row>
+<row>
+<entry><p>S</p> </entry>
+<entry><p>In 16 bit descriptors, interpret the argument as a pointer to a
+16 bit descriptor, and copy the data from it; in 8 bit descriptors, interpret
+the argument as a pointer to an 8 bit descriptor, and copy the data from it. </p> <p>(Note
+the upper case). </p> </entry>
+</row>
+<row>
+<entry><p>w</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert the
+value to a two byte binary numeric representation with the least significant
+byte first. The generated output is two bytes. </p> <p>(Note the lower case). </p> </entry>
+</row>
+<row>
+<entry><p>W</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert the
+value to a four byte binary numeric representation with the least significant
+byte first. The generated output is four bytes. </p> <p>(Note the upper case). </p> </entry>
+</row>
+<row>
+<entry><p>m</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert the
+value to a two byte binary numeric representation with the most significant
+byte first. The generated output is two bytes. </p> <p>(Note the lower case). </p> </entry>
+</row>
+<row>
+<entry><p>M</p> </entry>
+<entry><p>Interpret the argument as a <codeph>TUint</codeph> and convert the
+value to a four byte binary numeric representation with the most significant
+byte first. The generated output is four bytes. </p> <p>(Note the upper case). </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-D2A688DE-C73C-4086-946A-9A9724D04252"><title>Notes</title> <p>Using an asterisk for both <codeph>field-width</codeph> and <codeph>pad</codeph> means
+that the width value and the pad character will be taken from the argument
+list. Note that the first '<codeph>*</codeph>' will be interpreted as representing
+the width only if it is preceded by one of the alignment characters '<codeph>+</codeph>'
+'<codeph>-</codeph>' or '<codeph>=</codeph>'. </p> <p>If <codeph>precision</codeph> is
+specified when the data to be converted is not a real number, then it is ignored. </p><b>Related
+APIs</b> <ul>
+<li><p><xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita#GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD/GUID-D7E07487-DCE6-39D9-B4A2-BA7E5BD4A4B9"><apiname>TDes16::AppendFormat()</apiname></xref></p></li>
+<li><p><xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita#GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD/GUID-F3ED8A38-74C5-3C4D-AEAF-B405A0C5807D"><apiname>TDes16::Format()</apiname></xref></p></li>
+<li><p><xref href="GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD.dita#GUID-C04A9A0C-DBA7-37DA-B744-54FBF3D544CD/GUID-3939029A-12DF-3CBB-9408-B1FF4A1287E6"><apiname>TDes16::AppendFormatList()</apiname></xref></p></li>
+<li><p><xref href="GUID-BF093552-3EB5-3E0C-BA2B-2DDD11DAE38A.dita#GUID-BF093552-3EB5-3E0C-BA2B-2DDD11DAE38A/GUID-6811EC39-AB32-3BE6-A8BB-0EEFE0F4F683"><apiname>Des16::FormatList()</apiname></xref></p></li>
+<li><p><xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita#GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507/GUID-E8BE9DD1-2D96-3E8E-943A-CD2ECFD78333"><apiname>TDes8::AppendFormat()</apiname></xref></p></li>
+<li><p><xref href="GUID-262C74C7-AAF9-3A57-AA33-FE69F460A5C7.dita"><apiname>TDes8:Format()</apiname></xref></p></li>
+<li><p><xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita#GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507/GUID-8B605683-979A-3505-9755-FEA085BD5427"><apiname>TDes8::AppendFormatList()</apiname></xref></p></li>
+<li><p><xref href="GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507.dita#GUID-445B19E5-E2EE-32E2-8D6C-C7D6A9B3C507/GUID-1380E737-F4C4-3D6F-9B9B-B0ED267B6BFF"><apiname>TDes8::FormatList()</apiname></xref></p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC33FF66-F15E-5316-8828-C6CFD57DB9E5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EC33FF66-F15E-5316-8828-C6CFD57DB9E5"><title>Symbian SQL Tracing Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document discusses how to enable Symbian SQL tracing </p> <section><title>How to enable Symbian SQL tracing</title> <p>You can enable SQL tracing in two steps. </p> <ul><li id="GUID-1AB89A3E-6ACD-543D-8AA9-B9034829E947"><p>Enable the executable for trace. </p> </li> <li id="GUID-DF51C397-6531-5CAF-A087-257E2FB06E8E"><p>Enable the trace type. </p> </li> </ul> <p><b>Enabling the executable for trace</b> </p> <p>The three sub-components of the Symbian SQL library executable are the database client, the database server and the SQLite static library with these .mmp files: </p> <ul><li id="GUID-A2B6B7EF-509F-52C7-A55C-20CAE7766995"><p>sqldb.mmp </p> </li> <li id="GUID-2973082E-45F0-5829-B0E3-EA39BA8B0F06"><p>sqlsrv.mmp </p> </li> <li id="GUID-20750D91-BA05-5623-9E54-E02BBFDE1EE4"><p>sqlite.mmp </p> </li> </ul> <p>In each of these files look for the macro <codeph>SYMBIAN_INCLUDE_EXECUTABLE_TRACE</codeph> and uncomment it. </p> <p><b>Enabling the trace type</b> </p> <p>SQL traces are of three types: </p> <ul><li id="GUID-2F30AEB6-0C62-52F6-958F-892A5C0DDEA5"><p>Function entry and exit traces: these traces generate timestamps indicating how long a function took to execute and what its argument was. Where the argument is an SQL statement, these traces are useful for identifying inefficient use of SQL. </p> </li> <li id="GUID-7D1B8AF5-F525-5A4A-9C2C-465752DC73D8"><p>Error traces: these trace function leaves and panics in the client and server and are useful for debugging database applications. </p> </li> <li id="GUID-1271AC2F-FEBA-579E-B990-B0EE1272B17C"><p>Key event traces: these traces supply data about key events which are relevant to database implementation: </p> <ul><li id="GUID-E2CB61F2-5F38-54AE-B27D-A4FBC5BE1D36"><p>IPC calls sent to and serviced by the SQL server. </p> </li> <li id="GUID-45B84E0B-429D-5FCA-8144-DF807EC99545"><p>Startup and close of the SQL server. </p> </li> <li id="GUID-89FE8F63-FDE0-5D99-B8EA-21895FBDA866"><p>The number of full table scans and sort operations performed by an <xref href="GUID-0176BF07-DF94-3259-8F90-DE030E35CE9A.dita"><apiname>RSqlStatement</apiname></xref> object. </p> </li> </ul> </li> </ul> <p>Traces of each type can be enabled independently. The file UTraceSql.h defines the macros </p> <ul><li id="GUID-A208CA4B-DB3C-5C02-A356-CBF4560E81A5"><p> <codeph>SYMBIAN_TRACE_SQL_FUNC</codeph> to enable function entry and exit traces, </p> </li> <li id="GUID-4B10F95F-6A9D-5F28-8213-C006C6220A91"><p> <codeph> SYMBIAN_TRACE_SQL_ERR</codeph> to enable error traces, and </p> </li> <li id="GUID-520483F9-698B-55DF-9D47-1AB969D2ECAC"><p> <codeph>SYMBIAN_TRACE_SQL_EVENTS</codeph> to enable key events. </p> </li> </ul> <p>To enable tracing you uncomment the macro for the type of tracing required. </p> </section> <section><title>See Also</title> <p><xref href="GUID-321F406B-2C77-5F2B-9FDA-F25726188CE2.dita">Using Symbian SQL Trace Data Guide</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EC366CB0-AFC8-4501-867C-4FBD2CFE6235_d0e46963_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6" xml:lang="en"><title>Resource
+file structure</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><xref href="GUID-5F749184-C804-41FC-BA81-038783BDC967.dita">Resource</xref> files
+may consist of comments, C++ pre-processor statements, and structure statements
+indicated by predefined keywords.</p>
+<p>For more information on the format of resource files, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/index.html#DevTools%2dref%2erss" format="application/java-archive">Resource file source format</xref>.</p>
+<p>For a commented example of a resource file, see <xref href="GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita">Resource
+management example: HelloWorldBasic</xref>.</p>
+<p>A resource file has the following structure:</p>
+<section id="GUID-727A33A2-4324-4834-88B2-0D461C2A1732"><title>Comments</title>
+<p>You can use either C (<parmname>/* */</parmname>) or C++ (<parmname>//</parmname>)
+style comments.</p>
+<p>For more information on the lexical conventions of resource files, see
+ <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.conventions.html#DevTools%2dref%2erss%2e2" format="application/java-archive">Lexical conventions</xref>.</p>
+</section>
+<section id="GUID-D8ED42A3-6BB7-4A7E-A0AB-3932D4366AAE"><title>NAME statements</title>
+<p>The first non-comment statement in a resource must be the <parmname>NAME</parmname> statement.
+The syntax is as follows:</p>
+<codeblock id="GUID-C90E900E-4539-47BB-B51B-0F600B0DE86E" xml:space="preserve">NAME name</codeblock>
+<p>where <parmname>name</parmname> is a 4 letter ID that is unique in the
+application. This ID is used to differentiate and access resource files when
+an application uses multiple resource files.</p>
+<p>For more information on the <parmname>NAME</parmname> statement, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format-NAME.html#DevTools%2dref%2erss%2dname" format="application/java-archive">NAME statement</xref>. </p>
+</section>
+<section id="GUID-F27B120A-3B53-4B8A-828C-302B95E6E520"><title>C++ pre-processor
+statements</title>
+<p>The resource compiler supports a set of pre-processor statements, including:</p>
+<ul>
+<li><p><parmname>#define</parmname></p></li>
+<li><p><parmname>#include</parmname></p></li>
+<li><p><parmname>#ifdef</parmname></p></li>
+<li><p><parmname>#ifndef</parmname></p></li>
+<li><p><parmname>#if</parmname></p></li>
+<li><p><parmname>#else</parmname></p></li>
+<li><p><parmname>#endif</parmname></p></li>
+</ul>
+<p>For more information on the supported pre-processor statements, see
+ <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.preprocess.html#DevTools%2dref%2erss%2e3" format="application/java-archive">C++ pre-processor statements</xref>.</p>
+<p>Typically, resource files contain <parmname>#includes</parmname> statements
+for the following files:</p>
+<ul>
+<li><p><parmname>appinfo.rh</parmname></p></li>
+<li><p><parmname>avkon.rh</parmname></p></li>
+<li><p><parmname>avkon.rsg</parmname></p></li>
+<li><p><parmname>eikon.rh</parmname></p></li>
+</ul>
+<p>These files are delivered with the Symbian SDK, and are located
+under the <parmname>/Epoc32/include</parmname> folder. They contain the structure
+declarations for commonly used data structures in the Symbian platform.</p>
+<p>For more information, see the commented example file, <xref href="GUID-411ACFE6-0324-4330-ABCD-97A925759A3C.dita">Resource
+management example: HelloWorldBasic</xref>. </p>
+</section>
+<section id="GUID-9D5B35E3-21F3-4E22-B03B-8C9E6E1027C9"><title>RESOURCE statements
+syntax</title>
+<p>The RESOURCE keyword is used to declare a resource in a resource file.
+The syntax is as follows:</p>
+<codeblock id="GUID-88C7579F-4917-488F-8834-0579A3150D85" xml:space="preserve">RESOURCE &lt;STRUCT_NAME&gt; | &lt;resource_name&gt; |
+{
+&lt;resource-initialiser-list&gt;
+}</codeblock>
+<p>where:</p>
+<ul>
+<li><p><parmname>&lt;STRUCT_NAME&gt;</parmname> is the name of a declared
+data structure in an included resource header file.</p><p><parmname>&lt;STRUCT_NAME&gt;</parmname> must
+be in upper case.</p></li>
+<li><p><parmname>resource_name</parmname> identifies the resource.</p>
+<p><parmname>resource_name</parmname> must be in lower case.</p></li>
+<li><p><parmname>resource-initialiser-list</parmname> contains the
+values the members of the structure should be initialised with when the default
+values should not be used</p></li>
+</ul>
+<p><parmname>RESOURCE</parmname> statements may include resources defined
+within other resource statements in the resource file. For example:</p>
+<codeblock id="GUID-7F4CC81B-A596-4341-ACF2-61FEF518A9FF" xml:space="preserve">RESOURCE EIK_APP_INFO
+{
+menubar = r_name;
+}</codeblock>
+<p>uses a resource declared in a later statement to define its menu bar.
+For more information on <parmname>EIK_APP_INFO</parmname>, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-resource/uikon/EIK_APP_INFO.html#EIK_APP_INFO" format="application/java-archive">EIK_APP_INFO</xref>.</p>
+<p>Resource statements may also included nested resource structures. For
+example:</p>
+<codeblock id="GUID-4A787831-2658-4BC0-939A-1346C3C05FE4" xml:space="preserve">RESOURCE MENU_PANE r_name2
+{
+items =
+  {
+  MENU_TITLE 
+	{
+	menu_pane = r_name3;
+	}
+  };
+}</codeblock>
+<p>For more information on the <parmname>MENU_PANE</parmname> resource
+see ,  <xref href="GUID-E849C798-07A0-47B3-BDBF-203325062FBD.dita">Menu
+bar resource statements</xref>.</p>
+<p>For more information on structures, see:</p>
+<ul>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.struct.html#DevTools%2dref%2erss%2dstruct" format="application/java-archive">STRUCT
+statement</xref></p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.struct-member.html#DevTools%2dref%2erss%2ddefine%2dmember" format="application/java-archive">STRUCT member types</xref></p></li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.arrays.html#DevTools%2dref%2erss%2darray" format="application/java-archive">Arrays
+within structs</xref></p></li>
+</ul>
+<p>For more on resource statements, see:</p>
+<ul>
+<li><p><xref href="GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita">Required
+resource file statements</xref></p>
+</li>
+<li><p><xref href="GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita">Optional
+resource file statements</xref></p>
+</li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools-ref/ResourceFileFormat/Tool_Ref_RSS-file-format.resource.html#DevTools%2dref%2erss%2dresource" format="application/java-archive">RESOURCE
+statement</xref>.</p></li>
+</ul>
+</section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC4CE675-3EE7-58F7-A872-E72548B0C9A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EC4CE675-3EE7-58F7-A872-E72548B0C9A5" xml:lang="en"><title>Sound Device
+Collection</title><shortdesc>The Sound Device collection provides a common interface for all
+audio functionality. Key audio components in the Sound Device collection are
+the Advanced Audio Adaptation Framework (A3F) DevSound and Audio Component
+Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC567597-093B-50C8-90FF-300A439A99A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EC567597-093B-50C8-90FF-300A439A99A5"><title>How to rename files</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-9F2B6D05-E1A6-55AA-8FB9-D951581CAE36"><title>Using Rename()</title> <p>The following code fragment does not rename the directory <filepath>bottomdir</filepath>, but moves it from directory <filepath>middledir</filepath> to <filepath>topdir</filepath>:</p> <codeblock id="GUID-EBBD3412-0CEB-5A9D-8757-AAC27F9071E6" xml:space="preserve">RFs fs;
+...
+_LIT(KOldDir,"\\topdir\\middledir\\bottomdir\\");
+_LIT(KNewDir,"\\topdir\\bottomdir\\");
+...
+fs.Rename(KOldDir,KNewDir);</codeblock> </section> <section id="GUID-9CBFDD0C-FC17-573D-A99C-2F288FB28ED8"><title>Using IsValidName()</title> <p>When specifying a name, any spaces between the drive, if specified, and the first directory in the path are illegal.</p> <p>The following code fragment returns false:</p> <codeblock id="GUID-BD7ADA50-96C2-5C70-8761-35ABF25932B6" xml:space="preserve">...
+_LIT(KDirName,"C: \\DIR\\");
+TBool bool=fs.IsValidName(KDirName);
+...</codeblock> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EC7A9299-4272-5C1E-8A10-8267E154D56A" xml:lang="en"><title>Bluetooth SDP</title><shortdesc>The Bluetooth Service Discovery Protocol (SDP) component enables you to register services to the SDP database and query the database for available services. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e255459_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC861957-FF3A-5C3E-8713-145DD505996F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EC861957-FF3A-5C3E-8713-145DD505996F" xml:lang="en"><title>Automatic Speech Recognition Data Handling Library</title><shortdesc>This section describes the Automatic Speech Recognition Data Handling library. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EC98E7E0-872D-467D-BDC8-6471F6165705" xml:lang="en"><title>Universal
+indicator pop-up</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Universal indicator pop-up is touch-only component. It is activated by
+tapping the universal indicators or the digital clock. It always includes
+battery and connectivity indicators and digital clock. For each visible universal
+indicator, there is one row reserved in the pop-up for displaying the icon
+and the description text. Hence, the user can view the preferred indicator.
+The description text also informs the current status and/or it may be a link
+to a view in corresponding application. For example, by tapping the text “3
+new messages” opens the relevant view from the messaging application, tapping
+“Bluetooth active” switches view to the Bluetooth settings. Content of the
+row is determined by the application originating the indicator.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087-master.png has changed
Binary file Symbian3/SDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e155285_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781"><title>Audio Output Streaming Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to use Audio Output Streaming. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to open, play and then close an audio output stream. </p> <p><b>Required Background</b> </p> <p>The user needs to maintain the data packets in a queue before starting to send it to the server. There is no need for the entire sound clip to arrive to be able to pass on to the low level audio controller. They can be forwarded as they arrive. If the server tends to receive data more than it can read or process, then a separate queue is maintained in the client side whose elements are references to the buffers passed to it. Once the server is free to receive more data the client sends the data in the queue and receives a notification from the server by means of a callback. As a result of this, the client deletes the data fragments from the queue. </p> <p>Upon receiving the data packets the audio controller maintains them in the received buffers. A read function is instantiated to read the data into the destination descriptors. </p> <p><b>Introduction</b> </p> <p>The Audio streaming API is the interface providing the functionalities for playing, stopping, and recording the audio stream to and from the audio buffers. The audio output stream interface class, <xref href="GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D.dita"><apiname>CMdaAudioOutputStream</apiname></xref>, enables client applications to: </p> <ul><li id="GUID-542B9854-AF72-5A00-B05C-AF7DE8C56916"><p>Stream raw audio data from specified buffers to audio devices. </p> </li> <li id="GUID-C4F56B32-661A-5160-AE11-C11BCCDA856E"><p>Specify the priority of the audio stream relative to other clients trying to use the same hardware. </p> </li> <li id="GUID-40790849-788F-56A1-8116-90AA755698DE"><p>Set the sample rate and the number of audio channels before playback. </p> </li> <li id="GUID-3664365E-FB62-5EB6-B396-B83655ECC49C"><p>Adjust the volume and channel balance during playback. </p> </li> </ul> </section> <section><title>Using Audio Output Streaming </title> <p>Typically, using an audio output stream involves the following steps as shown in the sequence diagram below: </p> <fig id="GUID-2D2AAE41-55E6-5BB6-B572-0A8C8015054C"><image href="GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e289732_href.png" placement="inline"/></fig> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-C498F32D-D466-5C10-893D-71B8168E6C1D"><p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita#GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781/GUID-7435C237-DB6C-516E-BB4D-C31BF96470B0"> Constructing an audio output stream</xref>  </p> </li> <li id="GUID-F66078F3-9125-5277-BEAF-2740869354ED"><p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita#GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781/GUID-A48822BE-E726-5892-A83D-CDD224C27EA0"> Opening an audio output stream</xref>  </p> </li> <li id="GUID-F3A82F27-5406-5937-BC5E-E83D9C7A6F6B"><p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita#GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781/GUID-E21EE5D7-42ED-5D7C-AB8F-000D6BBE88A9">Getting and setting the stream properties</xref>  </p> </li> <li id="GUID-5F166776-8C9C-5C00-8A39-E77C9157DF59"><p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita#GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781/GUID-CD886111-BE51-523D-A782-FA35A3889A0B"> Playing an audio output stream</xref>  </p> </li> <li id="GUID-7F60C260-A0B3-51C7-A1B1-4BE5A3F7E03A"><p><xref href="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita#GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781/GUID-B18F568C-E82B-5D46-A225-96816258E8AB">Stopping an audio output stream</xref>  </p> </li> </ul> <p id="GUID-7435C237-DB6C-516E-BB4D-C31BF96470B0"><b>Basic Procedure for Constructing an Audio Output Stream</b> </p> <p>The high level step to construct an audio output stream is shown here: </p> <ul><li id="GUID-8314E401-E900-587A-A7DD-2899214AB883"><p>The client application creates an audio output stream object using the static function <xref href="GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D.dita#GUID-B87C8F92-9737-3636-9800-BA267A1DCA6D/GUID-B4D44672-C628-304A-B36E-8AF0ACAA8A80"><apiname>CMdaAudioOutputStream::NewL()</apiname></xref>. Optionally, it also sets the audio priorities to be able to access the audio hardware in relation to the other clients trying to access the same device. </p> <codeblock id="GUID-ACD5FF96-44F1-5DC8-8A89-CD3C193EAACE" xml:space="preserve">static IMPORT_C CMdaAudioOutputStream *NewL(MMdaAudioOutputStreamCallback &amp;aCallBack, 
+TInt aPriority, TMdaPriorityPreference aPref=EMdaPriorityPreferenceTimeAndQuality);</codeblock> </li> </ul> <p id="GUID-A48822BE-E726-5892-A83D-CDD224C27EA0"><b>Basic Procedure for Opening an Audio Output Stream </b> </p> <p>The high level steps to open an audio output stream are shown here: </p> <ol id="GUID-B7CF17BD-41ED-5B34-8801-7101170D43C9"><li id="GUID-074798AB-3B28-52FA-9082-0B34DBB6118C"><p>To open the output stream, use the <xref href="GUID-20D0D10F-3401-3F72-8AF6-DC35F6025DC2.dita"><apiname>Open()</apiname></xref> member function. For example: </p> <codeblock id="GUID-7EA3B237-91BB-5933-AAEE-1A59375BF004" xml:space="preserve">virtual void Open(TMdaPackage* aSettings);</codeblock> </li> <li id="GUID-2D96C7A5-A81C-5B6A-A977-5A897B357FEE"><p>Once the stream is open <xref href="GUID-A35C1D9B-DC43-39FB-9FF1-39CD01D981B8.dita#GUID-A35C1D9B-DC43-39FB-9FF1-39CD01D981B8/GUID-148F9A5D-883E-3E9E-A3F4-FBACFACC2CB4"><apiname>MMdaAudioOutputStreamCallback::MaoscOpenComplete()</apiname></xref> is invoked to indicate that the stream is ready to use. </p> <codeblock id="GUID-6F18FC40-E21D-58D9-8703-0BDA17E69F0A" xml:space="preserve">void CIOStreamAudio::MaoscOpenComplete(TInt aError)
+    {
+    ASSERT(iState==EStateOpeningOutput);
+    TInt error = aError;
+    if (error==KErrNone)
+        {
+        iState = EStateWriting;    
+        iOutputStream-&gt;SetVolume(iOutputStream-&gt;MaxVolume()/2);
+        TRAP(error, iOutputStream-&gt;WriteL(iMainBuffer));
+        }
+    if (error!=KErrNone)
+        {
+        Complete(aError);    
+        }
+    }</codeblock> </li> </ol> <p id="GUID-E21EE5D7-42ED-5D7C-AB8F-000D6BBE88A9"><b>Basic Procedure for Getting and Setting the Stream Properties</b> </p> <p>The high level steps to get and set stream properties are shown here: </p> <ol id="GUID-A7DF8DD3-B3CC-56AB-B900-5FA1AB5D7E89"><li id="GUID-D300515F-450D-52E2-A7A3-5AB02A642143"><p>To set the sampling rate and number of audio channels use <xref href="GUID-38034819-8999-3EBE-9833-479D96D5DAB6.dita"><apiname>SetAudioPropertiesL()</apiname></xref>. For example: </p> <codeblock id="GUID-C36320C7-403B-50B2-868E-F8B23C3F921C" xml:space="preserve">virtual void SetAudioPropertiesL(TInt aSampleRate, TInt aChannels);</codeblock> <p>You cannot set these values while playing the stream. Also, you must specify them as enums; for example, <xref href="GUID-CF54F882-E290-3C68-9352-79C6B7303FDF.dita#GUID-CF54F882-E290-3C68-9352-79C6B7303FDF/GUID-681C1220-0CDD-34BF-848F-9DC82CB001DB"><apiname>TMdaAudioDataSettings::ESampleRate8000Hz</apiname></xref> rather than <codeph>8000</codeph> (Hz). </p> </li> <li id="GUID-77B3670A-0DC3-52BE-B245-58AF9852AF66"><p>The <xref href="GUID-657CDF11-EA74-3074-9872-412D2C26F3E6.dita"><apiname>Volume()</apiname></xref> and <xref href="GUID-DDE4193C-AB52-3FE9-8AD5-2DB344BD3404.dita"><apiname>GetbalanceL()</apiname></xref> member functions let you determine current volume and balance settings. For example: </p> <ul><li id="GUID-581B588C-5F23-57F6-9113-A34B2B796AE1"><codeblock id="GUID-07B29807-340D-5C6E-89F5-F0522F3CD611" xml:space="preserve">IMPORT_C TInt GetBalanceL() const;</codeblock> </li> <li id="GUID-550C5E9C-4073-5F54-937F-2FD6E0A0F684"><codeblock id="GUID-6C5293FE-EB1B-52B2-BE07-2E0D0393B863" xml:space="preserve">virtual TInt Volume();</codeblock> </li> </ul> </li> <li id="GUID-23A18BCE-75EB-5B7D-8812-A7D883061B1B"><p>The <xref href="GUID-171667CD-06F4-3DF5-A4E1-360422F362D2.dita"><apiname>SetVolume()</apiname></xref> and <xref href="GUID-D1856981-6A17-3CD9-80B5-65781A803BA4.dita"><apiname>SetBalanceL()</apiname></xref> member functions let you set the volume and balance respectively. You can use them while the stream is open, with the new settings taking immediate effect. </p> </li> </ol> <p id="GUID-CD886111-BE51-523D-A782-FA35A3889A0B"><b>Basic Procedure for Playing an Audio Output Stream</b> </p> <p>The high level steps to play an audio output stream are shown here: </p> <ol id="GUID-EABB52B7-5B85-5E65-9BA5-58168A0331AA"><li id="GUID-C2D6E0ED-85F3-5FF5-BA6A-67EAEB039CE2"><p>To play an audio stream from the current position use the <xref href="GUID-60E583FD-35E0-349A-B2A9-B28C8B8B4AE1.dita"><apiname>WriteL()</apiname></xref> member function. For example: </p> <codeblock id="GUID-2BAD8EF3-AA4D-564A-816F-5ABC69863153" xml:space="preserve">virtual void WriteL(const TDesC8&amp; aData);</codeblock> <p>This function is asynchronous. </p> <p>When <codeph>aData</codeph> is received, the client is notified by a call to <xref href="GUID-EF3C442E-03C4-3630-98A8-C2ABD94D1A3F.dita#GUID-EF3C442E-03C4-3630-98A8-C2ABD94D1A3F/GUID-D4E0CAA0-9FF3-3E02-BC0B-CCC9F91E8E66"><apiname>MdaAudioOutputStreamCallback::MaoscBufferCopied()</apiname></xref>. </p> <codeblock id="GUID-BF75B2F0-9A63-5249-BF37-007A817D8C0A" xml:space="preserve">void CIOStreamAudio::MaoscBufferCopied(TInt aError, const TDesC8&amp; IFDEBUG(aBuffer))
+    {
+    ASSERT(iState==EStateWriting);
+    if (aError!=KErrNone)
+        {
+        // ignore any KErrAbort returns - this would happen during a Stop() call
+        // if we were playing 
+        if (aError!=KErrAbort)
+            {
+            Complete(aError);    
+            }
+        }
+    else
+        {
+        ASSERT(aBuffer.Length()==iMainBuffer.Length());
+        // output almost complete - have been asked for more data
+        iState = EStateWritingPostBuffer;
+        }
+    }</codeblock> <p>The <xref href="GUID-60E583FD-35E0-349A-B2A9-B28C8B8B4AE1.dita"><apiname>WriteL()</apiname></xref> can be called again before this notification is triggered because the buffers are held in a client-side queue until they have been sent. </p> </li> <li id="GUID-1671B229-D248-56E6-9CBA-6F2A674B3ED9"><p>When the audio stream has completed playing, the callback function <xref href="GUID-A35C1D9B-DC43-39FB-9FF1-39CD01D981B8.dita#GUID-A35C1D9B-DC43-39FB-9FF1-39CD01D981B8/GUID-93577BCB-6063-3BC4-A051-38A5BE5C6A8C"><apiname>MMdaAudioOutputStreamCallback::MaoscPlayComplete()</apiname></xref> is invoked. </p> <codeblock id="GUID-033737CB-294F-5B55-A5BF-C66245B172DE" xml:space="preserve">void CIOStreamAudio::MaoscPlayComplete(TInt aError)
+    {
+    ASSERT(iState==EStateWriting || iState==EStateWritingPostBuffer);
+    TInt error = aError;
+    if (aError==KErrUnderflow &amp;&amp; iState==EStateWritingPostBuffer)
+        {
+        error = KErrNone; // normal termination is underflow following buffer request    
+        }
+    Complete(error);
+    }</codeblock> <p>This closes the stream and sets the callback <xref href="GUID-DA707A8F-7006-3193-B8E5-3197BB471B4F.dita"><apiname>aError</apiname></xref> to <xref href="GUID-F9B50A12-0CDE-3D5F-89B2-E2864B00E156.dita"><apiname>KErrUnderFlow</apiname></xref>. </p> </li> </ol> <p id="GUID-B18F568C-E82B-5D46-A225-96816258E8AB"><b>Basic Procedure for Stopping an Audio Output Stream</b> </p> <p>The high level step to stop an audio output stream is shown here: </p> <ul><li id="GUID-453E8330-16E2-5A6A-B2B4-E1D08E80AC12"><p>To stop audio playback (stop data being sent to the stream) use the <xref href="GUID-7CBDCF0D-1D11-34D1-BF5C-1E5B50DA75B5.dita"><apiname>Stop()</apiname></xref> member function. </p> <p>For example: </p> <codeblock id="GUID-084898F1-DB72-5DB4-9FCA-581F1AA96F6F" xml:space="preserve">virtual void Stop();</codeblock> <p>This invokes <xref href="GUID-A35C1D9B-DC43-39FB-9FF1-39CD01D981B8.dita#GUID-A35C1D9B-DC43-39FB-9FF1-39CD01D981B8/GUID-93577BCB-6063-3BC4-A051-38A5BE5C6A8C"><apiname>MMdaAudioOutputStreamCallback::MaoscPlayComplete()</apiname></xref> to notify successful closure of the stream. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita"> Audio Input Streaming Tutorial</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ECE93783-F571-51DA-AB92-EDDA8618A85C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ECE93783-F571-51DA-AB92-EDDA8618A85C" xml:lang="en"><title>EUser High
+Level Concepts</title><shortdesc>The EUser High Level Library introduces a new L-Class idiom along
+with a self managing string class and automatic resource management classes. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ECE9B461-B473-5B7B-B5EB-FAA60479848C"><title>Passing Arguments from Client to Server Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To make the animation architecture work, some mechanism is required to pass arguments across the client/server boundary. The Window Server acts as courier, but a packaging mechanism is still required if arbitrary information is to be passed through it. The following example is taken from an anim DLL, which deals with handwriting. </p> <p>On the client side, a struct (<codeph>THandwritingDrawData</codeph>) is packaged in a <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>TPckgBuf</apiname></xref> templated argument descriptor and passed to the server-side <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref> instance via the <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>RAnim::Command()</apiname></xref> function. </p> <p>An opcode, <codeph>EHwOpSetDrawData</codeph>, is used by the server-side <codeph>CAnim</codeph> derived class to carry out some functionality. </p> <p>The <codeph>param()=</codeph> expression sets the value of the <codeph>THandwritingDrawData</codeph> object inside the package to <codeph>aDrawData</codeph>. </p> <codeblock id="GUID-C9CA5949-F469-58E5-871D-27DD0651D3C2" xml:space="preserve">void RHandWritingAnim::SetDrawData(const THandwritingDrawData&amp; aDrawData)
+    {
+    TPckgBuf&lt;THandwritingDrawData&gt; param;
+    param()=aDrawData;
+    Command(EHwOpSetDrawData,param);
+    }</codeblock> <p>The Window Server calls the <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim::Command()</apiname></xref> function in response to application calls to the client side command function <codeph>RAnim::Command()</codeph>. The arguments passed to the function by the Window Server are the same as were used on the client side function call. </p> <codeblock id="GUID-5D53A6A7-CD17-55E2-83E9-F8EA3FEDE7D0" xml:space="preserve">void CHandWritingAnim::Command(TInt aOpcode,TAny *aParams)
+    {
+    switch (aOpcode)
+        {
+        case EHwOpActivate:
+            Activate();
+            break;
+        case EHwOpDeactivate:
+            Deactivate();
+            break;
+        case EHwOpSetDrawData:;
+            SetDrawData(STATIC_CAST(THandwritingDrawData*,aParams));
+            break;
+        default:
+            iFunctions-&gt;Panic();
+        }
+    }</codeblock> </conbody><related-links><link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ECF9E432-EA93-5284-B0E6-A1211289CBD8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ECF9E432-EA93-5284-B0E6-A1211289CBD8" xml:lang="en"><title>Parsing paths and filenames</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED109E7B-EFCA-59B9-92D9-EBFBC0F8BF21.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ED109E7B-EFCA-59B9-92D9-EBFBC0F8BF21"><title>GSM 6.10 Codec Implementation Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of the GSM 6.10 Codec Implementation. It is aimed at device implementers who wish to write their own audio codec plugins. </p> <section><title>Purpose</title> <p>This library provides an implementation of a GSM 6.10 Codec. </p> <p><b>GSM 6.10 Codec Implementation Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-81C572A7-D1C0-5A6B-A0A7-0D933AE8F3E9"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b> gsm610.dll</b>  </p> </entry> <entry><p> <b> gsm610.lib</b>  </p> </entry> <entry><p>These files are used for implementing the GSM 6.10 Codec Implementation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>This codec is a plugin built using the <xref href="GUID-18F4082A-D301-3007-88DD-0E13AB81C74A.dita"><apiname>CMMFCodec</apiname></xref> MMF Server Base Class. </p> </section> <section><title>Description</title> <p>The GSM 6.10 Codec Implementation provides a standard codec conversion between the GSM 6.10 and PCM16 data types. </p> </section> <section><title>Key GSM6.10 Codec Implementation Classes</title> <p>GSM 6.10 Audio Codec Implementation provides the following classes: </p> <ul><li id="GUID-372B6A8C-47CF-52EE-9306-B15CCEA6CEDB"><p> <xref href="GUID-D32DDD18-AEBC-3198-866D-A6AEC34CE1F3.dita"><apiname>CGsmTo16PcmWavCodec</apiname></xref> - converts GSM 6.10 audio data to 16 bit PCM. </p> </li> <li id="GUID-2A38700A-1F11-5988-A5C2-A7AF1E9171DF"><p> <xref href="GUID-9B1D7FF3-1D9F-39C0-BC30-1460AC85F6A2.dita"><apiname>C16PcmToGsmWavCodec</apiname></xref> - converts 16 bit PCM audio data to GSM 6.10. </p> </li> </ul> </section> <section><title>Using the GSM6.10 Codec Implementation</title> <p>The GSM 6.10 Audio Codec Implementation is used to: </p> <ul><li id="GUID-85005A20-1988-5576-87BD-9F0C0A8C66DD"><p>Encode GSM 6.10 full rate (FR) data. </p> </li> <li id="GUID-981AB500-DD3B-5BC2-BB0E-74F87EF44742"><p>Decode GSM 6.10 full rate (FR) data. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED198434-94C0-4842-8353-B2FA319BA5C7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-ED198434-94C0-4842-8353-B2FA319BA5C7" xml:lang="en"><title>Warning
+note</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<section id="GUID-61BDB896-12F1-43D1-B4DD-65BB42911AB6"><p>Warning
+notes are used when the user must be notified about something that may require
+action. They have a fairly long duration, and a sound that can be heard (and
+distinguished) even when not concentrating on the phone. For example, the
+battery low warning. </p></section>
+<section id="GUID-6A2B479D-A60D-4153-9221-7771F38B4A92"><title>Using
+warning notes in C++ applications</title><p>You can create either a basic
+warning note that is displayed only when your application is in the foreground
+or a global note that stays displayed even if the application launching the
+note is not in the foreground. The related APIs are the Notes
+API (for basic notes) and the Notifiers
+API (for global notes).</p><p>To use a warning note with the default
+icon, text, sound, and duration, create an instance of the note class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknWarningNote.html" format="application/java-archive"><codeph>CAknWarningNote</codeph></xref>. </p><p>To
+create a global warning note, use the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref> in the Notifiers
+API. For implementation information, see Using
+global notes and Using
+global notes with user interaction.</p><p>For basic notes, you can
+change the icon or text displayed in the note, use a different kind of sound,
+or change the note duration using the setter methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html" format="application/java-archive"><codeph>CAknNoteDialog</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#bfce8dc1591cae822feca43a093a11a9" format="application/java-archive"><codeph>SetIconL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#ae7db1ca3d39de28ae4793b4e7cf79cb" format="application/java-archive"><codeph>SetTextL</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#5f887d8738ed0f061a1c9e82cf3a14a5" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknNoteDialog.html#8778e804a7709588a4cd23134f79674c" format="application/java-archive"><codeph>SetTimeout</codeph></xref>.</p><p>For information on customizing
+global notes, see Enhancing
+global notes. You can change the graphic, animation, tone, and softkeys
+using the methods in the class <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html" format="application/java-archive"><codeph>CAknGlobalNote</codeph></xref>: <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#cee323af0704e07d3f1887a4a13c1639" format="application/java-archive"><codeph>SetGraphic</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#d23699273b28a39c0817bc575be767ab" format="application/java-archive"><codeph>SetAnimation</codeph></xref>, <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#a8748ee0b3342c24a11b8ed0ea9121bc" format="application/java-archive"><codeph>SetTone</codeph></xref>, and <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknGlobalNote.html#f31895e5838994b1c70300cfd3d7d127" format="application/java-archive"><codeph>SetSoftkeys</codeph></xref>.</p></section>
+
+
+
+</conbody><related-links>
+<link href="GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita"><linktext>Confirmation
+note</linktext></link>
+<link href="GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita"><linktext>Information
+note</linktext></link>
+<link href="GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita"><linktext>Error note</linktext>
+</link>
+<link href="GUID-11B69814-5B3E-42AE-844E-998A7A08E654.dita"><linktext>Permanent
+note</linktext></link>
+<link href="GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita"><linktext>Wait note</linktext>
+</link>
+<link href="GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita"><linktext>Progress
+note</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED2D5BEA-AD2A-51CE-8CBC-8B5E33DD6356.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ED2D5BEA-AD2A-51CE-8CBC-8B5E33DD6356" xml:lang="en"><title>Secure Software Install SIS Tools</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Secure Software Install SIS Tools provides a set of PC-side tools that enables you to create and sign installation files. It also provides a tool to preinstall packages to a Symbian device.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED2F48EA-8C31-5729-B312-E925B7EC3B24.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-ED2F48EA-8C31-5729-B312-E925B7EC3B24" xml:lang="en"><title>Serial Protocol Modules (CSYs) Developer Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides more detail about the Comms SYstem (CSY) serial protocol modules. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ED342E6B-A4A3-576B-8934-7E7C049837F0"><title>Service records and attributes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Bluetooth SDP Database contains entries for service records, one entry for each service registered to the database. Each of these entries contains information about that service in the form of service attributes. We will briefly discuss these concepts below. </p> <section><title>Service Records</title> <p>All information about a service that is maintained by an SDP database is contained within a single service record. A service record consists entirely of a list of service attributes. </p> <p>To understand services and attributes, you should read the Service Discovery Protocol specification, available at <xref scope="external" href="http://www.bluetooth.com/Bluetooth/Learn/Technology/Specifications/">http://www.bluetooth.com/Bluetooth/Learn/Technology/Specifications/</xref>. This page provides a few of the main points to get you started. </p> <p><b>UUID Values</b> </p> <p>In a service record, classes are specified using <i>Universally Unique Identifier</i> (UUID) numbers. The current predefined values for class IDs and attribute IDs are in the <xref scope="external" href="http://www.bluetooth.org/assigned-numbers/service_discovery.php">Service Discovery Protocol Assigned Numbers</xref> listing from the Bluetooth SIG. </p> </section> <section><title>Attributes</title> <p>Each attribute has an ID, a type, and a value. The types, and some attribute IDs, are predefined: for example, the URL for the icon to show for a service must always have attribute ID value 12 (UUID 0x000C). Complex attributes can be formed through lists of attributes; such lists can themselves contain lists of attributes. </p> <p><b>The service class attribute </b> </p> <p>A key attribute is the service class, Bluetooth ID ServiceClassIDList (UUID 0x0001): each service is an instance of a service class, which provides an initial indicator of the capabilities of the service, and defines what other attributes, including their types and semantics, must or can appear in the service record. </p> <p>A single application may provide multiple services. These different services should have different service records. Additionally, each service record can have many service classes listed in it. These service classes must be in a subclasses/superclasses of each other, and must be ordered most derived to least derived in the list. For example, the service might have a class entry that indicates it provides printing services; and another class entry that indicates that it provides Postscript printing (and consequently has extra attributes relating to this). </p> </section> <section><title>Where next?</title> <p>The complete set of Service Discovery Database tutorials are shown below: </p> <ol id="GUID-6A937BEB-CE35-519C-8262-8EA749AAE549"><li id="GUID-E1B75B16-1F2A-531E-BF3A-D81DBBE8E921"><p> <xref href="GUID-B75BD3DE-9C2E-5429-B55B-891462B92795.dita">Connecting to the service discovery database</xref>  </p> </li> <li id="GUID-417B1796-2248-53B6-AD97-289D3C16C50C"><p> <xref href="GUID-E2A2FA2A-5D9A-56FE-B7E5-69CCBC656BB9.dita">Handling SDP attributes</xref>  </p> </li> <li id="GUID-B3EBB4DC-2C55-5799-9479-3114C0DC5354"><p> <xref href="GUID-2373A158-C18A-51B5-BE9A-6B8F7FC63A35.dita">Registering Services</xref>  </p> </li> <li id="GUID-A3BFE8E3-2654-5885-8ABA-BD6345D6422D"><p> <xref href="GUID-33210C48-3198-51BC-9970-8B29F711A8E2.dita">Setting service record attributes</xref>  </p> </li> </ol> <p>Also refer to the <xref href="GUID-E5893C4A-024A-53A7-805F-68989382DC3F.dita">Bluetooth Service Discovery Database overview</xref> and the <xref href="GUID-8451102A-8E68-5C86-9E40-D53183E32261.dita">Bluetooth SDP Overview</xref> for additional background information. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED373BF9-A555-50E9-974C-82522206EFE6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ED373BF9-A555-50E9-974C-82522206EFE6"><title>Introduction to Text Views</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Text and Text Attributes API provides everything needed to store and manipulate formatted text. The Text Views API provide views of text objects on screen or printer, and enough information to allow these objects to be updated efficiently.</p> <p>Text Views provides the facilities to view and update text on screen, and to print. </p> <p>Viewing of text objects on screen is acheived by accessing the text object through a document layout interface, laying it out according to the requirements of its formatting and then displaying a view of the laid-out document.</p> <p>In association with printing, two preview modes are provided: one is a conventional preview of a full page on screen, the other, a mode referred to as WYSIWYG mode in which font metrics from a printer are used to display and edit text on the screen. Therefore, layout is identical with the printer's.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED6ED5E6-5A95-54F2-B5B2-6145A10F44BE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ED6ED5E6-5A95-54F2-B5B2-6145A10F44BE"><title>System Utilities Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>System Utility (sysutils) API provide functions to retrieve software and language package versions, Multi Media Card (MMC) and Flash File System (FFS) drive letters, device type information (e.g., manufacturer name, model name and model code) and the Symbian platform version number. It also provides functions to check whether disk space has reached a critical level. </p> <section><title>System Utilities library details</title> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-C098A04D-D83A-5165-BC58-DF81E6992EDE"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>DLL</entry> <entry>LIB</entry> </row> </thead> <tbody><row><entry><p> <filepath>sysutil.dll</filepath>  </p> </entry> <entry><p> <filepath>sysutil.lib</filepath>  </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Description</title> <p>System Utility (sysutils) API consists of <xref href="GUID-D1A20EF0-B716-3C94-BFBF-A12637B3BDB8.dita"><apiname>SysUtil</apiname></xref> class and its six static functions. </p> <p>Three functions supply the information required to display the version of phone software being used. This depends on the currently installed language package. </p> <ul><li id="GUID-8B8261BC-F72C-5795-9C34-F78778C5AD36"><p> <codeph>GetSWVersion()</codeph> returns the current phone software version. </p> </li> <li id="GUID-0D3199EF-D330-5C6C-B27F-843C7B26DB86"><p> <codeph>GetLangVersion()</codeph> returns the currently installed language package. </p> </li> <li id="GUID-EAC77BA1-3586-502D-A504-0DBFED77B32F"><p> <codeph>GetLangSWVersion()</codeph> returns the most recent phone software version compatible with the currently installed language package. </p> </li> </ul> <p>The remaining static functions check the drive space. </p> <ul><li id="GUID-FFDCD3C6-91DA-5551-9CFC-CCCBB2709E4C"><p> <codeph>FFSSpaceBelowCriticalLevel()</codeph> checks Flash File System (also called the system drive). </p> </li> <li id="GUID-4D81303F-ADC4-54D8-8DB8-D70E71689960"><p> <codeph> MMCSpaceBelowCriticalLevel()</codeph> checks the Multi Media Card. </p> </li> <li id="GUID-5C71208D-018A-5784-9A07-603B44CAF8D4"><p> <codeph> DiskSpaceBelowCriticalLevel()</codeph> checks the drive storage (sometimes called disk drives). </p> <p> <b>NOTE</b>: These functions require configuration of the RAM drive and non-RAM drives (disk drive, MMC, FFS) thresholds using patchable data. The patchdata for drive thresholds are set during the ROM build time using macros such as <codeph>SYMBIAN_BAFL_SYSUTIL_RAM_DRIVE_CRITICAL_THRESHOLD</codeph> and <codeph>SYMBIAN_BAFL_SYSUTIL_OTHER_DISK_CRITICAL_THRESHOLD</codeph> respectively. For more information on patchdata, refer to <xref href="GUID-B526BA3A-14E4-53B4-9382-437475A1C8A4.dita">Patchable Constants</xref> section. </p> </li> </ul> </section> <section><title>APIs</title> <p>The key class of System Utilities is as follows: </p> <table id="GUID-D4E21522-50B3-5152-8A7C-B329E3FF4E32"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-D1A20EF0-B716-3C94-BFBF-A12637B3BDB8.dita"><apiname>SysUtil</apiname></xref>  </p> </entry> <entry><p>Provides interfaces to retrieve different kinds of information about the system. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Using System Utilities</title> <p>You can use the system utilities library to perform the following tasks: </p> <ul><li id="GUID-ECC93DBE-FC2A-5B51-99E0-D4B00E69F3C1"><p>Retrieve software and language package version strings for display purposes. </p> </li> <li id="GUID-C8278747-B590-56C2-80DD-E063BB7F3424"><p>Check whether there is free space on a disk drive before file creation or writing. </p> </li> <li id="GUID-AA4525CC-7299-5922-83C9-4364A84ED44F"><p>Retrieve Device Type information (for example, phone model) for display purposes. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-634F4945-D92C-58D6-BF68-B8A770B2EF17.dita"><linktext>System Utilities Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F"><title>Enabling/Disabling Video Recording</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to enable/disable video recording. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to enable/disable video recording for a video clip. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>You can enable/disable the video separately when recording video without affecting audio recording. This means you can record an audio only clip. This functionality is provided by the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-615857BF-5069-3114-979F-3BBD236D4C56"><apiname>CVideoRecorderUtility::SetVideoEnabledL()</apiname></xref> method. </p> </section> <section><title>Using Video Recording </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-A489CFEF-9892-5ADB-8F8C-BA7E23A956F7"><p><xref href="GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F.dita#GUID-ED700A4A-3BBF-5048-92CB-E3677A0FD09F/GUID-CD6A6AD5-ACD3-53F0-9B66-8386659FC0AD">Enable/Disable Video Recording</xref>  </p> </li> </ul> <p id="GUID-CD6A6AD5-ACD3-53F0-9B66-8386659FC0AD"><b>Basic Procedure</b> </p> <p>The high level steps to enable/disable video recording are shown here: </p> <ol id="GUID-4982CA49-2B57-5A23-B89A-5F2A34023FE0"><li id="GUID-9BDE1D0E-80BD-59DE-BA1A-DA0AD5286F01"><p>Create a new video recorder utility object. </p> </li> <li id="GUID-41831163-D55F-5318-8B7B-E9B83E3AE6B2"><p>Open a video clip to record. </p> </li> <li id="GUID-10A92092-3457-52A7-925D-C870C6A5AA03"><p>Enable/disable video recording using the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-615857BF-5069-3114-979F-3BBD236D4C56"><apiname>CVideoRecorderUtility::SetVideoEnabledL()</apiname></xref> method: </p> <ul><li id="GUID-78BCC330-8EFF-5CD5-9C4C-99F06227CD9A"><p>To enable video recording set the <xref href="GUID-BD467343-2E5D-3923-9A9F-63D3CC244019.dita"><apiname>aEnabled</apiname></xref> parameter to <codeph>ETrue</codeph>. </p> </li> <li id="GUID-1E6D0F23-B7C2-52B7-BA9C-CCC18D66727C"><p>To disable video recording set the <xref href="GUID-BD467343-2E5D-3923-9A9F-63D3CC244019.dita"><apiname>aEnabled</apiname></xref> parameter to <codeph>EFalse</codeph>. </p> </li> </ul> </li> <li id="GUID-863ABE63-9A59-58A5-8B86-06C2E9048FD0"><p>Call the <xref href="GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D.dita#GUID-8A183C79-0EA4-3A4A-B95F-E2F1BF74238D/GUID-A8B11252-2852-36E4-BE16-BC05888F4ECF"><apiname>CVideoRecorderUtility::Prepare()</apiname></xref> method. </p> </li> <li id="GUID-85F9B5E7-5FC4-5630-A117-77576C8DE621"><p>Control recording normally. </p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-312BE6E2-C092-519E-A636-BD99A4F52995" xml:space="preserve">// Create new video recorder utility object (iVideoRecorder)
+// Open the video clip
+
+iVideoRecorder-&gt;SetVideoEnabledL(EFalse); 
+// disable video recording
+
+// Video recording has now been disabled. Recording is audio only.
+// Call Prepare() and then Record() to record normally</codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-688C515E-3D1B-51BB-A776-A246FA232061.dita">Creating and Preparing a Video Recorder</xref>  </p> <p><xref href="GUID-3B250C0E-5D53-53ED-A02C-16FE8EAEDF86.dita">Configuring the Video Recorder</xref>  </p> <p><xref href="GUID-C08BBBAD-3605-53E3-A94F-ECCFFB80E1DD.dita">Controlling Video Recording Quality</xref>  </p> <p><xref href="GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita">Recording Video Data</xref>  </p> <p><xref href="GUID-2D20B6DF-BE02-50CF-8E9F-14E3402EF952.dita">Setting Video Metadata</xref>  </p> <p><xref href="GUID-44EDB476-33E2-5D91-8CC2-A04369AACCA4.dita">Controlling the Video Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30" xml:lang="en"><title>Markable
+list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A markable list is a selection list with the added marking feature. The
+user can mark any number of items on the list while browsing it, and then
+execute a single command, which is applied to all the marked items. This is
+analogous to the multiple-item highlight feature used in computer GUIs.</p>
+<p>The marking feature is typically applied to lists the user manages, containing
+a large number of items that may be for example sent, moved, or deleted. By
+marking items first and then selecting a command, the user can perform certain
+operations more quickly and with less key presses than by performing the command
+separately for each of the items.</p>
+<p>Marked items are indicated graphically.</p>
+<fig id="GUID-08F82B30-CF52-42CA-97F5-D1D3A1C48460">
+<title>Markable list. Marked items are indicated graphically in the list.</title>
+<image href="GUID-B142FB0F-518F-436A-83D1-57BDE9671E44_d0e55158_href.png" scale="40" placement="inline"></image>
+</fig>
+<p>The <b>Mark</b> and <b>Unmark</b> functions are available in the Options
+menu of the markable list. Alternatively, or as a shortcut, the user can keep
+the Hash (#) key pressed while using the Arrow keys and the Selection key
+in the following way:</p>
+<ul>
+<li><p>Pressing the Hash (#) key marks the current item. This is a toggling
+function, so pressing the Hash (#) key on a marked item unmarks the item. </p></li>
+<li><p>Pressing an Arrow key (up or down) while holding down the Hash (#)
+key marks both the current item and the one onto which the focus moves. If
+the user keeps holding the Hash (#) key and scrolls further in the same direction,
+all the scrolled items become marked; to unmark the items in reverse order
+the user can scroll into the opposite direction while holding the Hash (#)
+key down. </p></li>
+<li><p>Items can be unmarked by pressing the Hash (#) key together with scrolling:
+if the user starts holding the Hash (#) key down when on a marked item and
+then scrolls, all the scrolled items become unmarked. </p></li>
+<li><p>Several marking actions can be done subsequently. The user can mark
+an item, then release the Hash (#) key, browse and move the focus onto some
+other item on the list, and then mark that item. The first item remains marked,
+and the ones between the two do not become marked. </p></li>
+<li><p>All items become unmarked when the user exits the list, for example
+by back stepping. There may be exceptions to this rule in certain applications
+that require selecting items from several levels of folder hierarchy. An example
+of this is creating a play list in the Media Player application. Items remain
+marked if the user opens and cancels the <b>Options</b> menu, or swaps applications. </p></li>
+<li><p>Pressing the Selection key when there are marked items on the list
+opens the context sensitive <b>Options</b> menu containing only those functions
+that apply to multiple items.</p></li>
+</ul>
+<p>A markable list functions exactly like a normal selection list, except
+for the marking feature.</p>
+<p>Devices that have the optional Edit key perform these same functions by
+using the Edit key and arrow keys instead of the Hash (#) key.</p>
+<p>The user may access the <b>Options</b> menu to perform functions on all
+marked items at once. When user has one or more items marked, <b>Options</b> menu
+does not contain items that apply to one item only (such as <b>Open</b>).
+Exceptions are Help and Exit, which should appear in every <b>Options</b> menu.
+Appropriate error handling must be designed for functions that do not apply
+to some or all of the marked items.</p>
+<ul>
+<li><p>When executing a function, if any of the items are marked, all the
+marked items are affected by the function. If the focus is on an item that
+is not marked, the function does not affect that item. </p></li>
+<li><p>After the selected function is successfully done, all items are unmarked.
+In an error case, when the function cannot be applied, the marks should remain
+in place.</p></li>
+</ul>
+<p>The Options menu includes the marking and unmarking functions in a submenu
+so that any user can find the feature. The submenu has also the <b>Mark all</b> and <b>Unmark</b> all
+options.</p>
+<p>For other keypad actions, see <xref href="GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita">Selection
+list</xref>.</p>
+<section><title>Using markable lists
+in C++ applications</title><p>The API to use for markable lists is the Lists
+API. For implementation information, see Using
+the Lists API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e48280_href.png has changed
Binary file Symbian3/SDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e49094_href.png has changed
Binary file Symbian3/SDK/Source/GUID-ED91B1F0-552D-46A1-97CD-7E1CD7AFE358-master.png has changed
Binary file Symbian3/SDK/Source/GUID-ED91B1F0-552D-46A1-97CD-7E1CD7AFE358_d0e56354_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EDA831F7-7248-5C00-B6BE-B7F44097C9B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EDA831F7-7248-5C00-B6BE-B7F44097C9B6" xml:lang="en"><title>WhiteList/BlackList
+TLD Services Overview</title><shortdesc>This document introduces the Whitelist/Blacklist Top-Level Domain
+services of the InetURIList framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>International domain names support increases the vulnerability of the device
+to homograph attacks (also called phishing), by allowing addresses (URIs)
+to contain UTF-8 characters. By using non-ASCII characters that are visually
+similar to familiar letters, attacks can lead the Internet user to harmful
+sites. </p>
+<p>To address this issue, the InetURIList framework provides a list of suspect
+characters (a BlackList) for each top-level domain (TLD). The framework also
+lists trusted characters in TLD-specific WhiteLists. This enables applications
+to detect safe and unsafe URIs depending on their top-level domain and the
+characters they contain. </p>
+<p>The Blacklists and Whitelists are stored in an XML file installed on the
+device. You can replace the default TLD policy file by installing an SIS package
+containing the updated lists. </p>
+<p>Applications can query the TLD list but cannot dynamically change its contents. </p>
+</conbody><related-links>
+<link href="GUID-E97C2A7E-8E8F-58E6-99D4-288589385B44.dita"><linktext> Querying
+the TLD policy data </linktext></link>
+<link href="GUID-AC4C18D1-D6A3-5988-AB10-5A5025183950.dita"><linktext> Modifying
+the TLD policy data</linktext></link>
+<link href="GUID-6A78F618-09A9-56A7-8C58-98C353BF0788.dita"><linktext>What is the
+Domain Name Server?</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EDAF2886-5296-53BD-B847-0E0D9B5FBF7E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EDAF2886-5296-53BD-B847-0E0D9B5FBF7E"><title>Special requirements</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Performance</title> <p>Since text objects are potentially both large and complex, editing them can involve complex operations. It is important on the one hand that text views have high performance, and on the other that they require little memory, and have a usable API.</p> <p>Memory use is minimised by the format band and by using only minimal format information for purposes which require it — such as pagination, and print preview.</p> <p>One key measure of perceived performance is responsiveness to user input. The Text Views API support this by using background-priority active objects to maintain the formatting of text in two contexts. Firstly, the formatting of the format band is handled, where possible, using an active object which is invisible to the user of the API. Secondly, pagination is handled, where required, using an active object which is visibly part of the API.</p> </section> <section><title>High-level GUI support</title> <p>For many purposes, such as editing short text objects, a GUI-provided high-level editor provides a convenient interface. </p> </section> <section><title>Text content interfaces</title> <p>The <xref href="GUID-51B3C34F-2F8E-3181-93C4-00F073B1207C.dita"><apiname>MLayDoc</apiname></xref> interface is used to convey layout information from a text object to the text layout and views. Within the Symbian OS text content model, global text and rich text implement this interface. Using such a narrow interface between content and views allows each to be optimized separately and is good object-oriented design.</p> <p>A further benefit is that any content model may be equipped with an <codeph>MLayDoc</codeph> interface. For instance, an HTML browser would require formatting that could be specified through the <codeph>MLayDoc</codeph> interface, but for various reasons it may wish to use a substantially different content model. One important reason is that HTML is essentially read-only. Other applications, especially for data browsing, may also benefit from the flexibility of the <codeph>MLayDoc</codeph> interface.</p> </section> <section><title>Detailed view control</title> <p>The first requirement of text views is that they honor all the specifications of a text object and its formatting information. However, in addition to this, text views provides many flexible features for controlling the display of text.</p> <ul><li id="GUID-21B3BAB1-3C84-5E62-8766-9860C00A0E1D"><p>the visibility of non-printing characters (paragraph marks, blanks, non-breaking blanks) can be controlled</p> </li> <li id="GUID-EC249206-5F64-599C-9271-6C31EE04194F"><p>background colour can be specified, and text colour overridden from that in the document, in accordance with user preferences (e.g., in order to display yellow text on a dark blue screen instead of the default black on white)</p> </li> <li id="GUID-C8B6EFC2-4808-584A-82B4-1A386175CEB6"><p>text can have highlighting applied to it, these highlights may have round corners</p> </li> <li id="GUID-60812D34-065A-5418-9456-3CCB340ED18B"><p>pictures may have frames, with or without grab handles, when selected</p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EDC16636-B24E-598B-9084-EAE782A4A213"><title>What is Bearer Mobility</title><shortdesc>This topic describes the concept of <i>Bearer Mobility</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Bearer Mobility is a feature that allows a device to change bearers without interruption to the user's data sessions. An example of a bearer change is if a device moves into the range of a Wi-Fi hot spot and the device moves the GPRS connections over to Wi-Fi. Example data sessions include: streaming videos; surfing the internet; and downloading emails. Example bearers include: Wireless LAN (eg Wi-Fi); 3G (including HSUPA and HSDPA); Circuit Switched Data (CSD); and GPRS. </p> <fig id="GUID-64CF6B77-F451-56F2-9223-4DB0AE835E56"><title>
+          Example of a bearer change 
+        </title> <desc><p>A device is connected to a mobile network using GPRS. The device comes into range of a Wi-Fi network. The device decides to change to the Wi-Fi network and creates a bearer to access the Wi-Fi network. The device then moves all the existing connections across to the Wi-Fi bearer. In the final step the device disconnects from the GPRS network. </p> </desc> <image href="GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e64237_href.png" placement="inline"/></fig> <p>Bearer Mobility operates in response to changes in the environment of the device. A bearer is known as <i>available</i> when the device is in range of the bearer and the device can potentially use the bearer. </p> <p> <b>NOTE:</b> The bearer can be available but unusable because of the security requirements of the bearer. </p> <p>Symbian OS uses <i>non-seamless</i> Bearer Mobility. Non-seamless indicates that clients of the Socket Server must reconnect all sockets after the bearer has changed. The local IP address of the link changes if the bearer changes. </p> <section><title>Bearer Mobility APIs</title> <p>Two Socket Server Bearer Mobility APIs are available: <xref href="GUID-D5F43DFB-5143-3563-8655-16E245A9735F.dita"><apiname>RCommsMobilityApiExt</apiname></xref> and <xref href="GUID-6CA83252-4D0C-3B72-83ED-B5152B666C83.dita"><apiname>CActiveCommsMobilityApiExt</apiname></xref>. A client of the Socket Server cannot change bearer if the client does not use at least one Bearer Mobility API. A device can have clients that support Bearer Mobility and clients that do not support Bearer Mobility. If clients that support Bearer Mobility change bearer, the device does not disconnect a client that does not support Bearer Mobility unless that client's bearer is no longer available. </p> <p>A client of the socket server can ask the user to accept or deny the change of bearer. For example, the client can display a dialog box to ask the user to accept or deny the change. The decision to ask the user remains with the client. </p> <p>A client of the socket server can ask to use the default bearer. The default bearer is the highest priority bearer that is available. The device manufacturer or network operator creates the list of bearer priorities. </p> </section> <section id="GUID-717F07AE-6C85-5051-9CCB-9B23FC40DADD"><title>Bearer Mobility Blacklists</title> <p>The Bearer Mobility components in the Communications Architecture implement a <i>blacklist</i> feature. The Socket Server implements the blacklist feature on the server side. The blacklist feature affects the notifications that a Socket Server client receives. The blacklist feature stops notifications for bearer changes that have previously been rejected. The device keeps a blacklist for each client. </p> <p>For example: </p> <ol id="GUID-8B1E6BD1-AE7B-5BDB-A73E-A4D0FC194AF9"><li id="GUID-683FD641-5E1A-58D7-B171-2B6E28FACF0D"><p>A client receives a notification for a bearer change </p> </li> <li id="GUID-5AE721C6-10ED-5E48-9C03-451CAD47B474"><p>The client sends a response to reject the bearer change </p> </li> <li id="GUID-4AEE582D-C6E4-534E-999E-BFDC1F7C4237"><p>The device adds the rejected bearer to the blacklist for that client </p> </li> <li id="GUID-9AAD65F6-94A2-5704-B224-47A93EA9F7B6"><p>The device does not notify the client of any further opportunities to change to that bearer </p> </li> </ol> <p>There can be variations in the operation of the blacklist. For example, there can be a limit on the lifetime of the blacklist. </p> <p> <b>NOTE:</b> The blacklist scheme is dependent on the plug-ins and settings used for the Communications Architecture for the particular device. </p> </section> </conbody><related-links><link href="GUID-CB1E1921-9CF7-55B7-9F70-6AD61A961208.dita"><linktext>Using the
+                Bearer Mobility APIs</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e167069_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9" xml:lang="en"><title>bld.inf
+file syntax overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Component definition files, which are always called <filepath>bld.inf</filepath>,
+are used by <filepath>bldmake</filepath> to define the <filepath>abld.bat</filepath> and
+makefiles to be created. </p>
+<p> <filepath>bld.inf</filepath> files are made up of a number of sections,
+with headers <codeph>prj_platforms</codeph>, <codeph>prj_exports</codeph>, <codeph>prj_testexports</codeph>,
+and <codeph>prj_mmpfiles</codeph>. </p>
+<p>Note that: </p>
+<ul>
+<li id="GUID-875CF96D-B898-5119-A001-61F3F71855F3"><p>Each section header
+can appear any number of times in the file (including none). </p> </li>
+<li id="GUID-92F814D6-0BD4-580F-9A00-3F738751205A"><p>The section headers
+and their data are case-insensitive. </p> </li>
+<li id="GUID-C8A564A9-E6DB-5AD1-863C-656D4EE51162"><p>A trailing backslash
+is used to indicate a line continuation. </p> </li>
+<li id="GUID-F59AFB06-DA52-5183-B642-97900C9858DB"><p>Use the C++ style comment
+syntax for comments. </p> </li>
+<li id="GUID-873B038F-3E47-5E51-9C1D-CC4E13F91F4E"><p>Preprocessor directives
+such as <codeph>#include</codeph> and <codeph>#ifdef</codeph> can
+be used. </p> </li>
+</ul>
+<example><codeblock id="GUID-4731BBE0-0CEA-5DAA-8CFC-E4375B9A7D44" xml:space="preserve">
+// Files to be exported
+prj_exports
+myheader1.h
+myheader2.h
+
+// Project files
+prj_mmpfiles
+myprj1.mmp
+myprj2.mmp
+
+// Files to be exported for test purposes
+prj_testexports
+mytestheader1.h
+
+// Project files for test programs
+prj_testmmpfiles
+mytest1.mmp
+mytest2.mmp</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646" xml:lang="en"><title>Rendezvous
+Thread rendezvous example code</title><shortdesc>This example demonstrates the use of <codeph>Rendezvous()</codeph> API. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-23A83B50-4B34-4DEE-A8BA-83DC3809244C"><title>Purpose</title> <p>The code is a simple example that shows
+the principle of synchronization using the thread rendezvous technique. </p> </section>
+<section id="GUID-B01D0987-EC69-4156-82A7-3B7306F2789E"><title>Class summary</title><ul>
+<li><p><xref href="GUID-B0E661BC-4058-3256-B9C3-5A4FD52F6DE5.dita"><apiname>RThread</apiname></xref> - A handle to a thread.</p></li>
+</ul></section>
+<section id="GUID-A1A279BF-DDFC-4D22-95A0-8F16F18C1CE6"><title>Download</title> <p>Download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-08949ca7-66de-4dcf-9b5e-a0938ea9a3e7.zip" scope="external">Rendezvous.zip</xref>. </p><p>Download some additional files
+required by the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.zip" scope="external">CommonFramework.zip</xref>.</p><p>View the source code: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-08949ca7-66de-4dcf-9b5e-a0938ea9a3e7.html" scope="peer">browse</xref>. View the additional files: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-4184e6d4-8dbe-4267-b1a3-8737c8bf64ce.html" scope="peer">browse</xref></p> </section>
+<section id="GUID-DEFCF4B9-452A-5EAF-ABD3-BC4F6FBD528B-GENID-1-6-1-13-1-1-4-1-4-1-25-1-28-1-3-4"><title>Building and
+configuring</title> <ul>
+<li id="GUID-424F9220-DD87-577F-BEA6-8B60E793F058"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-2C1C9600-B7A8-5875-9B8B-2D83C84DBFA6"><p>For the emulator, the
+example builds an executable called <filepath>threadrendezvous.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+<section id="GUID-EE6BD4B0-1D8D-459B-9D02-E5671C138716"><title>Running the example</title> <p>When running the example, the
+user is presented with various menu options that are self explanatory. The
+code is a simple example that shows the principle of synchronization using
+the thread rendezvous technique.  </p> </section>
+</refbody><related-links>
+<link>
+<desc><xref href="GUID-24477051-265A-5FE5-B479-ACB3EE27B825.dita">Synchronisation
+techniques</xref></desc>
+</link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E"><title>ASN-PKCS Overview</title><shortdesc>The ASN-PKCS component provides interfaces for: </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-ABA89F09-85DD-5BB3-92BB-DDF39D42B3F5"><p>Performing <xref scope="external" href="http://tools.ietf.org/html/rfc4792">ASN.1</xref> -DER (Abstract Syntax Notation One - Distinguished Encoding Rules) encoding and decoding of PKCS (Public-Key Cryptography Standards) private keys in raw text as well as PBE (Password-Based Encryption) encrypted forms. </p> </li> <li id="GUID-40921059-C49F-5E38-8297-F5D10F878DC7"><p>Performing ASN.1 encoding and decoding of PBE parameters associated with the private keys. </p> </li> </ul> <section><title>Key concepts and terms</title> <dl><dlentry><dt>Key</dt> <dd><p>A cryptography key is a constant value applied using a cryptographic algorithm to encrypt text or to decrypt encrypted text. </p> <p>Keys are classified as symmetric and asymmetric based on the type of algorithm applied. If the same key is used for both encryption and decryption, it is symmetric. If different keys are used for encryption and decryption, they are asymmetric. Asymmetric keys exist in the form of a public and private key pair, where the public key is used for encryption and the private key is used for decryption. </p> </dd> </dlentry> <dlentry><dt>Key Store</dt> <dd><p>A key store is a repository of keys that can be retrieved and used to accomplish a variety of tasks. </p> <p>The key store provides the following functionality: </p> <ul><li id="GUID-7217616D-996F-5346-BCAD-BC90522B972E"><p>Generation, import and export of RSA, DSA, and DH key pairs </p> </li> <li id="GUID-D759A086-C2BD-5892-AF9B-BEE93C21A55C"><p>Listing of stored keys </p> </li> <li id="GUID-9FC0C694-45E5-5DAB-9938-5BD4F414BE91"><p>Authentication of users </p> </li> <li id="GUID-D350C774-F17B-5D7B-B4DF-8EF3CA7A2AC8"><p>Private key operations for authenticated users </p> </li> </ul> </dd> </dlentry> </dl> </section> <section><title>Architecture</title> <p>The following block diagram describes the interaction of the ASN-PKCS component with the certificate and key stores: </p> <fig id="GUID-7E820717-BAC4-5C14-8A09-7B23989200F6"><image href="GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e362491_href.jpg" placement="inline"/></fig> <p>The client application accesses the various certificates and keys of the device stored in the respective stores. Depending on the requests received from the store management and implementation components, ASN-PKCS acts on the keys during certain key and certificate manipulation operations. For details of the operations during which the ASN-PKCS APIs are invoked, see <xref href="GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita#GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E/GUID-1586B629-1321-5D65-9995-A312825CF52D">Typical uses</xref>. </p> </section> <section><title>APIs</title> <table id="GUID-96509B7C-3CB2-5AD4-BD6C-0DDEAA7517C8"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>API</entry> <entry>Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-6DE1C841-A004-3255-A973-68B86A59A481.dita"><apiname>CDecPKCS8Data</apiname></xref>  </p> </entry> <entry><p>Provides the means to decode <xref scope="external" href="http://www.rsa.com/rsalabs/node.asp?id=2130">PKCS#8</xref> encoded private keys. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-1586B629-1321-5D65-9995-A312825CF52D"><title>Typical uses</title> <p>ASN-PKCS APIs are used for encoding and decoding purposes during the following key and certificate manipulation operations: </p> <ul><li id="GUID-A9151CFF-028F-5BC1-B71E-9F99ACF2E285"><p>Encoding and decoding of PKCS private keys (in raw text and PBE-encrypted forms) during import and export of keys. When PBE-encrypted PKCS keys are imported or exported, the ASN-PKCS APIs also help in encoding or decoding of the PBE parameters. </p> </li> <li id="GUID-F2937C68-BC7D-5A10-AC61-E51139FFDA06"><p>Encoding of the private keys accompanying public key certificates (according to <xref scope="external" href="http://www.rsa.com/rsalabs/node.asp?id=2138">PKCS#12</xref> standards) while creating certificate requests. </p> </li> <li id="GUID-AF0D122F-8A98-53FB-A6FE-AE3ABE4E0847"><p>Creation of <xref scope="external" href="http://www.rsa.com/rsalabs/node.asp?id=2129">PKCS#7</xref> messages for creating the certificate requests. </p> </li> </ul> <p> <b>Notes:</b>  </p> <ul><li id="GUID-C8D72104-9E2C-59F1-A902-7270D998EF9C"><p>Device creators can use the ASN-PKCS component along with their own implementation of the certificate and key stores. </p> </li> <li id="GUID-34D1F3B2-2497-56A9-8E3E-3136D8C99C31"><p>For details of the key and certificate operations, see <xref href="GUID-6C6AED40-D5B3-5613-8F92-FD2CB711AE54.dita">Unified Keystore Tutorials</xref> and <xref href="GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita">Unified Certificate Store Tutorial</xref> respectively. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-39B459CD-8210-59B5-95F4-85CE36676735.dita"><linktext>Unified Stores</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e315113_href.jpg has changed
Binary file Symbian3/SDK/Source/GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e47077_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EE79D90C-CC71-5C2B-8715-A9764A48F40D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-EE79D90C-CC71-5C2B-8715-A9764A48F40D"><title>Data Line Status Tutorial</title><shortdesc>This tutorial describes how to get the simple data line status with the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <steps id="GUID-80974E97-B743-592A-BDF1-F7E280CB4B67"> <step id="GUID-15ABACF5-46CB-5A91-AC61-0402568D2D7C"><cmd/><info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info> </step> <step id="GUID-C42DD9CF-FD37-537E-8B8C-0BFC8E4E06EB"><cmd/><info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetLineStatus()</apiname></xref> to get the data line status </info> <info>Pass <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>EDataLine</apiname></xref> as the parameter. </info> </step> <step id="GUID-7A52CAEC-4455-5F53-B870-73DF68B6AF72"><cmd/><info>the function returns a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TCallStatusV1</apiname></xref> object that contains the data line status information </info> </step> </steps> <example id="GUID-CFCE55FF-FEF0-5A4E-9E89-9F1B0125E0B5"><title>Data line example</title> <codeblock id="GUID-BC46B25D-EC2B-5C06-950B-86219A3D8333" xml:space="preserve">CTelephony* telephony = CTelephony::NewLC();
+
+CTelephony::TCallStatusV1 callStatusV1;
+CTelephony::TCallStatusV1Pckg callStatusV1Pckg( callStatusV1 );
+
+CTelephony::TPhoneLine line = CTelephony::EDataLine;
+telephony-&gt;GetLineStatus( line, callStatusV1Pckg );
+CTelephony::TCallStatus dataLineStatus = callStatusV1.iStatus;
+
+CleanupStack::PopAndDestroy( telephony );</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EE8ABE8F-A25D-509E-8B0C-9101F61F998D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EE8ABE8F-A25D-509E-8B0C-9101F61F998D" xml:lang="en"><title>System macros</title><shortdesc>This section explains the system macros concepts.</shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EEA5F7C6-8916-5FB9-8367-002F41A576D4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EEA5F7C6-8916-5FB9-8367-002F41A576D4"><title>Memory stores</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A memory store is a non-persistent store and is implemented entirely within RAM.</p> <p>It implements many of the operations defined by the store abstract framework; existing streams within the store can be changed.</p> <p>Specifically, streams in a memory store can be:</p> <ul><li id="GUID-9218D335-73FA-5DEC-AC11-0185752DE133"><p>overwritten </p> </li> <li id="GUID-CAAB0DA6-176D-500A-96ED-F920BCD85318"><p>replaced </p> </li> <li id="GUID-E145D872-750F-5564-8ABD-7E20B3D6AD3D"><p>appended </p> </li> <li id="GUID-4E48D573-E561-55C5-A316-629042031310"><p>deleted </p> </li> <li id="GUID-996787DA-78C3-5B85-A446-4F30D26024E8"><p>created in advance of being written to </p> </li> </ul> <p>Overwriting an existing stream can result in a shorter stream; however, a stream cannot be extended beyond its original length. Replacing a stream can result in a stream which is longer or shorter than the original.</p> <p>The order in which streams are written to a memory store is not important as streams can be changed and rewritten.</p> <p>The <codeph>CBufStore</codeph> class encapsulates an in-memory non-persistent store. </p> <section><title>See also</title> <p><xref href="GUID-D8CC5B36-41DA-5989-8FA8-3F56306146A3.dita">Introduction to stores</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EEAB5A2F-AD1F-57B9-98AA-20DEEA23C3C2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EEAB5A2F-AD1F-57B9-98AA-20DEEA23C3C2" xml:lang="en"><title> Asynchronous Programming</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651" xml:lang="en"><title>Application security</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Native C++ applications have broad access to the mobile device functionality. They can access, for example, network and mobile device interfaces, storage memory and messaging framework. This provides many features for application developers to use, but can be exploited in the wrong hands.</p>
+<p>The Symbian OS v9 <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/platsecsdk/index.html" format="application/java-archive">platform security</xref> architecture allows an application server to determine whether installed software using the server can be trusted. This section covers the most critical components in the security system, the components that first encounter problems and form the front line of defense when a system is attacked.</p>
+<p>The following aspects of application security are covered in this section:</p>
+<ul>
+<li><p><xref href="GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita">Client/server communication</xref></p></li>
+<li><p><xref href="GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita">Applications with an user interface</xref></p></li>
+<li><p><xref href="GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita">Plug-ins</xref></p></li>
+<li><p><xref href="GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita">Software installer</xref></p></li>
+<li><p><xref href="GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita">Publish and Subscribe</xref></p></li>
+<li><p><xref href="GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita">Descriptors</xref></p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0"><title>Feature Manager Server Guide</title><shortdesc>This document describes the feature management server. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>The feature management server maintains the table which contains and maintains the list of features available on the device. </p> </section> <section><title>Required background</title> <p>The feature management system uses the standard client server architecture that is the feature manager server that does the work associated with the feature management functionality. Communication between the application and the server is undertaken by two dlls. </p> </section> <section><title>Architecture</title> <p>The relationship between the parts of the feature management system is : </p> <fig id="GUID-E3DEFD6C-7BA2-5F4B-9771-F6BCF595B3C8"><title>
+             Architecture of the feature management system 
+          </title> <image href="GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e326160_href.png" placement="inline"/></fig> </section> <section><title>APIs</title> <p>Communication to and from the feature management server is only provided by the methods available in the <xref href="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita#GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14/GUID-044747C8-90DF-5C93-B0E1-310F283E8894">Feature Manager Client API</xref> and the <xref href="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita#GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A/GUID-3CF8D502-1181-511C-9F14-A256ACD4EF6B">Feature Manager Discovery API</xref>. </p> </section> <section><title>Typical uses</title> <p>These are the same as for feature management (since it does all the work). They include adding, disabling, enabling and removing features. </p> <p>For the description of the APIs used in feature management look at the component overview for featmgr.dll and featdiscovery.dll. </p> </section> </conbody><related-links><link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager Overview</linktext> </link> <link href="GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita"><linktext>Feature Manager Client
+                Overview</linktext> </link> <link href="GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita"><linktext>Feature Discovery Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EF4423F9-05A5-5DD5-BDB6-C7D8F7901396.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EF4423F9-05A5-5DD5-BDB6-C7D8F7901396"><title>How to create directories</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>To create a new directory, use <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita#GUID-E263C747-946F-35AA-9F1D-41833BD350FC/GUID-46EE9026-841B-35FC-8083-9847AAA64AAE"><apiname>RFs::MkDir()</apiname></xref>. </p> <codeblock id="GUID-AEE6AE25-E339-5BDC-BEF9-3134C6C55A40" xml:space="preserve">_LIT(KNewDir,"\\FileServerExample\\NewDir\\");
+User::LeaveIfError(fsSession.MkDir(KNewDir));</codeblock> <section><title>Notes</title> <ul><li id="GUID-A8E0B5AD-DE50-547F-BE28-0EE7C2600AE9"><p>When a file or directory name is passed as an argument to <codeph>MkDir()</codeph>, if either or both of the drive letter or parent directory is omitted, the missing component will be taken from the <keyword>session
+                path</keyword>. Here, the drive letter is taken from the session path. </p> </li> <li id="GUID-E90A2909-0A04-5034-A322-C3540C8C753C"><p>In most directory-related functions in class <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref>, including <codeph>MkDir()</codeph>, if a file is specified at the end of the path, it will be ignored. Therefore, a backslash should be included after the final directory name in order to indicate that it is a directory. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EF49C43F-E9ED-5B4D-B9C4-376B9A4E3FA6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EF49C43F-E9ED-5B4D-B9C4-376B9A4E3FA6"><title>Using a Bitmap-Patterned Brush</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>If the brush style is set to a patterned brush, then a bitmap can be used for filling shapes. The following example code illustrate how this is done. The bitmap is tiled around the given origin - the top left of the window is the default - and clipped to the given shape. The second bitmapped brush example shows the effect of moving the origin. </p> <section><title>Using a bitmap patterned brush, with the default origin</title> <ol id="GUID-0F5408B2-5F0C-5810-90F0-AF53F435A809"><li id="GUID-60F09B34-5E46-5CEB-BB18-836D144AAF9A"><p>Load the bitmap file in the standard way. </p> </li> <li id="GUID-6516A6C9-161E-5E15-8F27-624E95BFF78C"><p>Use the bitmap as the graphics context’s brush pattern. </p> </li> <li id="GUID-F2AF6104-7D12-5120-AB35-267AFB4DB80E"><p>Set the brush style to <codeph>TBrushStyle::EPatternedBrush</codeph>. </p> </li> <li id="GUID-290DBDCC-8159-54F4-9587-BEA4B9EBEF9B"><p>Discard the brush pattern using <codeph>DiscardBrushPattern()</codeph>. </p> </li> <li id="GUID-23CD56E3-603E-5415-A7CE-93218B7AF9FC"><p>Destroy the bitmap. </p> </li> </ol> <p>With no brush origin set, the tiling pattern starts at the top left corner of the window. </p> <codeblock id="GUID-B2A5D6F1-A22C-5015-945E-AFBADB2D607E" xml:space="preserve">CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
+CleanupStack::PushL(bitmap);
+User::LeaveIfError(bitmap-&gt;Load(KAnMbmFile,KABitmapID));
+// set brush pattern and style to use the bitmap
+gc.UseBrushPattern(bitmap);
+gc.SetBrushStyle(CGraphicsContext::EPatternedBrush);
+// draw shape filled with bitmap pattern
+gc.DrawRect(rect);
+gc.DiscardBrushPattern();
+CleanupStack::PopAndDestroy();</codeblock> </section> <section><title>Using a bitmap patterned brush, with a set origin</title> <p>You can set the brush origin using <codeph>SetBrushOrigin()</codeph>, and tile the bitmap around this point. </p> <p>The example code is exactly the same as that in previous bitmapped brush example, except that the following line is added before the rectangle is drawn: </p> <codeblock id="GUID-2EC2ADC7-5AE0-5872-A087-BE2B949C8A7A" xml:space="preserve">...
+TPoint pos(100,100);
+gc.SetBrushOrigin(pos);
+...</codeblock> <p>For using bitmaps, see <xref href="GUID-EAAD1719-C02C-5705-A5C3-993E36441BE6.dita">BitGDI Component</xref>. </p> </section> </conbody><related-links><link href="GUID-55C8C429-1BEC-5A58-94EC-DA1E51F62867.dita"><linktext>Drawing
+                to a Graphics Context Tutorials</linktext> </link> <link href="GUID-E3AC8F3E-9D5C-5E7D-9760-023B77C7C8A8.dita"><linktext>Drawing and Graphics Contexts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56" xml:lang="en"><title>Graphics
+Hardware Acceleration</title><shortdesc>This topic describes some of the issues surrounding the use of
+graphics hardware to improve graphics performance. It also provides a summary
+of the components that device creators need to adapt to take advantage of
+graphics hardware. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Background</title> <p><b>Graphics acceleration hardware </b> </p> <p>A
+graphics accelerator or Graphics Processing Unit (GPU) is a dedicated hardware
+processor that works in parallel with the main processor (CPU). By relieving
+the CPU of highly intensive graphics processing, a GPU makes it is possible
+to achieve sophisticated screen displays (such as video, animated graphics
+and 3D games) without compromising other aspects of performance. </p> <p><b>Animations </b> </p> <p>Animation
+involves transferring and manipulating large amounts of data (stored as bitmaps
+or instructions) from one area of memory and putting them into another (the
+screen buffer). Frame rates may be between 10 and 30 frames per second (depending
+on requirements and sources). </p> <p><b>Composition </b> </p> <p>Manufacturers
+of smartphones face the complexity of displaying on the screen a mixture of
+different types of content, such as streaming video, the camera viewfinder
+and regular UI elements with animated icons. These different types of content
+come from different places—such as multimedia sources (streaming video), camera
+hardware, the Window Server and EGL (3D and vector graphics). The different
+types of content are displayed in different areas of the screen and are updated
+by different processes. The graphics system must be capable not only of creating
+sophisticated graphical output from each source simultaneously but also of
+composing (compositing) them at up to 30 frames per second. For an introduction
+to how ScreenPlay handles this challenge, see <xref href="GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita">Graphics
+Composition</xref>. </p> <p><b>Optimization </b> </p> <p>GPUs work best when
+they do so uninterrupted. They usually have a 'long processing pipe' (a lot
+of data cached in memory) and flushing it or allowing it to empty reduces
+effectiveness. This can be avoided by avoiding the following: </p> <ul>
+<li id="GUID-827CF5E4-86EE-5766-BAF4-395205461FF0"><p> <b>Context switching</b>.
+The working data (such as color information, vertex positions, transformations
+and textures) is known as the <i>context</i>. If more than one application
+wants to use the processor at the same time, the processor must swap between
+them. This involves the processor saving the context from one application,
+flushing its buffers, and loading the context from the next. Context switching
+is time consuming and disruptive. </p> </li>
+<li id="GUID-5C98575F-A0EA-5B9F-ACCC-C7A0D2B93058"><p> <b>Copying and reformatting
+data</b>. Changing the format and copying pixel data involves time and memory.
+If the GPU and CPU cannot share memory and data formats, much time, processing
+power and memory is required to copy and convert data. </p> </li>
+</ul> <p>ScreenPlay avoids context switching and reformatting and copying
+data wherever possible. </p> <p><b>Hardware variety </b> </p> <p>The combination
+of hardware acceleration, animation and composition would be a substantial
+challenge in a fixed, dedicated hardware architecture. The Symbian platform,
+however, is designed to operate on a variety of hardware architectures, only
+some of which are capable of graphics acceleration and processing. The Symbian
+graphics subsystem can be customized to take advantage of a variety graphics
+processing hardware. Customization is via 'back end' components which do not
+affect the public API. </p> </section>
+<section><title>The hardware adaptation components</title> <p>Here we provide
+information about which graphics components device creators can adapt or replace.
+Components that can be adapted or replaced to suit the hardware are generally
+called <i>adaptations</i>. Adaptable and replaceable components that do not
+depend on the hardware are called <i>customizations</i> and are indicated
+by an asterisk (*) in the following table. </p> <p>The details vary depending
+on whether the <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> or <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref> variant
+is in use. </p> <table id="GUID-C401C8AE-7EE2-5B8F-9B17-B8C2E5E6B5B6">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>ScreenPlay</entry>
+<entry>Non-ScreenPlay</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>OpenGLES Implementation</entry>
+<entry>OpenGLES Implementation</entry>
+</row>
+<row>
+<entry>OpenVG Implementation</entry>
+<entry>OpenVG Implementation</entry>
+</row>
+<row>
+<entry>EGL Implementation</entry>
+<entry>EGL Implementation </entry>
+</row>
+<row>
+<entry>Screen Driver</entry>
+<entry>Screen Driver</entry>
+</row>
+<row>
+<entry>Extended Bitmap Rasterizer Plug-in</entry>
+<entry>Extended Bitmap Rasterizer Plug-in </entry>
+</row>
+<row>
+<entry>DirectGDI Adaptation </entry>
+<entry/>
+</row>
+<row>
+<entry>Graphics Resource Adaptation </entry>
+<entry/>
+</row>
+
+<row>
+<entry>OpenWF Composition Engine</entry>
+<entry/>
+</row>
+<row>
+<entry>Surface Manager</entry>
+<entry/>
+</row>
+<row>
+<entry>Surface Update </entry>
+<entry/>
+</row>
+<row>
+<entry>Render Stages* </entry>
+<entry/>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics
+Concepts</linktext></link>
+<link href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita"><linktext>The ScreenPlay
+Architecture</linktext></link>
+<link href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita"><linktext>The Non-ScreenPlay
+Architecture</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e119617_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EF7FF39E-929F-4767-B475-5D582D37BB32.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EF7FF39E-929F-4767-B475-5D582D37BB32" xml:lang="en"><title>Window
+server events</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Window server events are an important part of the application framework.
+They allow applications to receive information regarding key presses, pointer
+activities, application switches, and focus transitions. </p>
+<p>Every application has at least a <xref href="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita">UI
+controller</xref>, which is the root for all other controls owned by the application.
+When an event occurs under the window server, the window server passes the
+event to the UI controller and possible other controls, depending on the event
+and the architecture of your application.</p>
+<p>For more information on the window server, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Graphics-subsystem-guide/WindowServerClientSide/WindowServerGuide1/WindowServerIntroduction.guide.html#WindowServerGuide1%2eintro" format="application/java-archive">Introduction to the window server</xref>.</p>
+<p>The following window server events have a special function:</p>
+<ul>
+<li><p><xref href="GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita">Key events</xref></p>
+</li>
+<li><p><xref href="GUID-DD15F24B-0786-4531-A6C5-A5E70EBE2732.dita">Layout
+change events</xref></p>
+</li>
+<li><p><xref href="GUID-3B441CDC-AB7A-4D8D-A595-57C21E1D426C.dita">Foreground
+events</xref></p>
+</li>
+<li><p><xref href="GUID-4D2AA522-82AB-4D1E-9F1E-5C6A35DEF195.dita">Pointer
+events</xref></p>
+</li>
+<li><p><xref href="GUID-868C1A38-3CD0-4082-8106-DC3EE1F815D8.dita">System
+events</xref></p>
+</li>
+<li><p><xref href="GUID-95DD1440-01C9-4997-8DD4-FFD33D7DEAFF.dita">Application-specific
+events</xref></p>
+</li>
+<li><p><xref href="GUID-3729C075-4958-4874-9DD7-02A68D17E043.dita">Other
+window server events</xref></p>
+</li>
+</ul>
+<p>The framework provides different functions to handle each type of event
+separately. You must implement these functions for the events to be handled
+by your application.</p>
+<p> All the window server event types are defined in the <parmname>w32std.h</parmname> header,
+and are as follows:</p>
+<codeblock id="GUID-2F04E088-73B0-4006-903D-4651223E0434" xml:space="preserve">enum TEventCode 
+    { 
+    EEventNull, 
+    EEventKey, 
+    EEventKeyUp, 
+    EEventKeyDown, 
+    EEventModifiersChanged, 
+    EEventPointer, 
+    EEventPointerEnter, 
+    EEventPointerExit, 
+    EEventPointerBufferReady, 
+    EEventDragDrop, 
+    EEventFocusLost, 
+    EEventFocusGained, 
+    EEventSwitchOn, 
+    EEventWindowGroupsChanged, 
+    EEventErrorMessage, 
+    EEventMessageReady, 
+    EEventMarkInvalid, 
+    EEventSwitchOff, 
+    EEventKeySwitchOff, 
+    EEventScreenDeviceChanged, 
+    EEventFocusGroupChanged, 
+    EEventCaseOpened, 
+    EEventCaseClosed, 
+    EEventWindowGroupListChanged, 
+    EEventWindowVisibilityChanged, 
+    EEventKeyRepeat=100, 
+    EEventDirectScreenAccessBegin = 200, 
+    EEventDirectScreenAccessEnd, 
+    EEventHeartbeatTimerStateChange, 
+    EEventUser = 1000, 
+    }; 
+
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EF87F8F8-1521-5C50-85A9-94038A99021C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EF87F8F8-1521-5C50-85A9-94038A99021C"><title>Priority Key Events</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Priority key events are configured using <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWindowGroup::AddPriorityKey()</apiname></xref>, and obtained by the client using the functions described in Getting priority key events. All priority key events generated by the Window Server are delivered to the client in a <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>TWsPriorityKeyEvent</apiname></xref>, and the client obtains the priority key event using <xref href="GUID-643DDA78-C7A7-386D-AB3F-8710141DDDA9.dita"><apiname>RWsSession::GetPriorityKey()</apiname></xref>. </p> <p> <b>Variant</b>: <xref href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita">ScreenPlay</xref> and <xref href="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita">non-ScreenPlay</xref>. <b>Target audience</b>: Application developers. </p> <p>Priority key events are typically used for providing "Abort" or "Escape" keys for an application. </p> </conbody><related-links><link href="GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita"><linktext>Window Server Client-Side Events
+                Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EFA822E0-BE80-5EB8-82E5-1659BDB1BDD9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EFA822E0-BE80-5EB8-82E5-1659BDB1BDD9"><title>Named database</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>In order to support the DBMS client-server interface, the <codeph>RDbNamedDatabase</codeph> class provides the interface for creating and opening databases identified by name.</p> <p>The mechanism is generic; the database is identified by its name and the database format. The format is a name that is used to identify the implementation used for creating or opening that database. There is a default format, which has the name "epoc". The default format is a store database in the root stream of the database file.</p> <p>If required, other formats can be provided in extension DBMS driver libraries. These formats need no be file-based. Additional DBMS driver libraries are dynamically bound to the API at run-time, if one can be found to support the format requested.</p> <p>Formats which are UidTyped files, such as the default, can allow the client to specify a 3rd Uid by extending the format name with the Uid name (as generated by the <codeph>Name()</codeph> member function of <codeph>TUid</codeph>, an 8 digit hexadecimal number enclosed in square brackets).</p> <p>If specified, this is also checked when a database is opened. e.g. creating a FileStore database “C:\My Database” with a 3rd Uid of 0x10001234:</p> <codeblock id="GUID-2291B3E7-D3D5-5E99-8ACA-886163557978" xml:space="preserve">_LIT(KMydatabase,"C:\\My Database");
+_LIT(KDemoUid,"[10001234]");
+RDbNamedDatabase database;
+TInt r=database.Create(fs,KMydatabase,KDemoUid);</codeblock> <p>For comparison, the equivalent code required to create an <codeph>RDbStoreDatabase</codeph> in the root of a <codeph>CPermanentFileStore</codeph> would have been:</p> <codeblock id="GUID-B103A01B-55C0-50B5-81F7-F2763E5E16DB" xml:space="preserve">_LIT(KMydatabase,"C:\\My Database");
+CFileStore* fstore=CPermanentFileStore::ReplaceLC(fs,KMydatabase,EFileWrite);
+fstore-&gt;SetTypeL(TUidType(fstore-&gt;Layout(),KDatabaseUid,TUid::Uid(0x10001234)));
+RDbStoreDatabase database;
+fstore-&gt;SetRootL(database.CreateL(fstore));
+fstore-&gt;CommitL();</codeblock> <p>A named database may be encrypted; the default is an un-encrypted database.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C"><title>How to use the SDP Codec API</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-36C9040A-BE35-5DAD-8D32-089C45AD6A6C"><title>Protocols</title> <p>The following steps describe how to use the SDP Codec API to create an SDP description: </p> <ul><li id="GUID-E54E7175-023E-57B7-867C-C7B2132DC1F4"><p>Create a <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object and open the string pool before use. <b>Note</b>: The string table includes predefined SDP constants for which handles are retrieved when <xref href="GUID-6841DB3A-C481-34D0-9428-236CCC316BBD.dita#GUID-6841DB3A-C481-34D0-9428-236CCC316BBD/GUID-82ABB289-BADC-33C7-B950-3FFAF50B48F1"><apiname>SdpCodecStringPool::StringPoolL()</apiname></xref> is called. The string table includes all predefined SDP related constants. </p> </li> <li id="GUID-5865EC55-8737-50C3-8E3A-59E2864A2FB9"><p>The net type and the address type of the connection and origin field parameters that are predefined are retrieved from the string pool. </p> </li> <li id="GUID-8CA935E5-00A8-5B8C-8615-F1045657AEA5"><p>Create the origin field with origin field parameters, and set the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object. </p> </li> <li id="GUID-F54C71B1-F53F-51B5-BC34-47250D11B2FE"><p>Create the connection field from the connection parameters, and set the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object. </p> </li> <li id="GUID-96FCCAE1-4DE2-5113-BA06-D5486621F809"><p>When you finish with the SDP description, delete the <xref href="GUID-FF6D4EAD-3AAE-3843-8A9C-7C92426FC29F.dita"><apiname>CSdpDocument</apiname></xref> object and close the string pool. </p> </li> </ul> <p>The following illustration shows how to create an SDP description. </p> <fig id="GUID-FB29EDEC-BD06-5571-BDCE-A6E8A9A94613"><image href="GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e317348_href.png" placement="inline"/></fig> <p> <b>Note</b>: In the following illustration only required SDP fields are included. </p> </section> <section id="GUID-0C86D6D3-2EDD-54B8-A2FE-E68CF43D40E8"><title>Error handling</title> <p>All function calls are synchronous. When an error occurs the functions leave with SDP Codec specific error codes and Symbian OS error codes. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e63579_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F" xml:lang="en"><title>ARMV5
+build targets</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <codeph>ARMV5</codeph> build target builds to the <codeph>ARMV5</codeph> architecture.
+It is built to conform to a binary standard developed by ARM (the <i>ABI for
+the ARM architecture</i>). Details of the standard are published at <xref href="http://www.arm.com/products/DevTools/ABI.html" scope="external">http://www.arm.com/products/DevTools/ABI.html</xref>. </p>
+<p>The situation is complicated by there existing two versions of the ARM
+ABI, referred to as v1 and v2 respectively, both of which are supported by
+the toolchain. This page explains the build target to use in each case. For
+more information on the differences in the toolchain used for each version
+of the ABI, see <xref href="GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita">ABIv1
+to ABIv2 toolchain changes</xref>. </p>
+<p>This page includes the following sections, which describe RVCT compiler
+versions for the ARM platform and ABI versions of ARM: </p>
+<ul>
+<li id="GUID-2CAEAF2F-4B75-56D9-900A-D4C3811C119D"><p> <xref href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita#GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F/GUID-374DB9AB-19E3-5B82-BDB0-D261103ECEAE">ARM RVCT compiler versions</xref>  </p> </li>
+<li id="GUID-B01D47CF-91DF-5449-9D4C-F9D4931DEC29"><p> <xref href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita#GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F/GUID-2273DA41-3621-5B13-9513-8A278B95C5B8">ARMV5 (ABI v1 mode)</xref>  </p> </li>
+<li id="GUID-034B8599-B418-50B0-8294-E5FF3764FFAF"><p> <xref href="GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita#GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F/GUID-8C586003-B24B-5D37-85E8-837164CE9200">ARMV5 (ABI v2 mode)</xref>  </p> </li>
+</ul>
+<section id="GUID-374DB9AB-19E3-5B82-BDB0-D261103ECEAE"><title>ARM RVCT compiler
+versions</title> <p>The <codeph>ARMV5</codeph> build targets are built using
+ARM's own RealView Compiler Tools (RVCT) (<xref href="http://www.arm.com/products/DevTools/RealViewDevSuite.html" scope="external">http://www.arm.com/products/DevTools/RealViewDevSuite.html</xref>). </p> <p>Note
+that RVCT 2.2 build 435 used with Symbian OS v9.2 is not supported from v9.3
+onwards. Symbian OS v9.3 uses RVCT 2.2 build 559 and from OS v9.4 onwards
+RVCT 2.2 build 616 is used. </p> <p>The following section discusses issues
+concerned with having RVCT 2.2 builds 435, 559 and 616 installed on a single
+PC, so as to enable development on both v9.2, v9.3 and v9.4. </p> <p><b>Compiler
+set-up for v9.2, v9.3 and v9.4 builds</b> </p> <p>If you need to develop for
+Symbian OS v9.2, v9.3 and v9.4 on the same PC, you need to have the RVCT 2.2
+builds 435, 559 and 616 installed. The build tools will use the version that
+appears first in the environment <codeph>path</codeph> variable. You will
+need to modify this setting yourself when moving between development kits. </p> <p>Assuming
+the tools are installed to <filepath>C:\apps\</filepath>: </p> <ul>
+<li id="GUID-3A9540E5-2C0F-594E-A40E-96128B198D16"><p>When working with v9.2,
+include build 435 version of the tools first in the path. </p> <p>For example: </p> <p><userinput>set
+PATH=C:\apps\ARM\RVCT\Programs\2.2\435\win_32-pentium;%path%</userinput> </p> </li>
+<li id="GUID-E0C51545-3668-5459-BC13-2CDE4ACEDDBB"><p>When working with v9.3,
+include build 559 version of the tools first in the path. </p> <p>For example: </p> <p><userinput>set
+PATH=C:\apps\ARM\RVCT\Programs\2.2\559\win_32-pentium;%path%</userinput> </p> </li>
+<li id="GUID-0F57E1FC-7A80-5490-AD45-C0EB9C773F74"><p>When working with v9.4,
+include build 616 version of the tools first in the path. </p> <p>For example: </p> <p><userinput>set
+PATH=C:\apps\ARM\RVCT\Programs\2.2\616\win_32-pentium;%path%</userinput> </p> </li>
+</ul> <p>To know which version is currently installed on your PC, use the
+following command: </p> <p><userinput>armcc --vsn</userinput> </p> <p>This
+reports the compiler version and build number. </p> </section>
+<section id="GUID-2273DA41-3621-5B13-9513-8A278B95C5B8"><title>ARMV5 (ABI
+v1 mode)</title> <p>Use this target to create binaries conforming to the ABI
+v1. </p> <p>To build for <codeph>ARMV5</codeph> (ABI v1) with <filepath>abld</filepath> on
+Symbian OS v9.3 and earlier versions, use: </p> <p><userinput>abld build ARMV5
+[udeb | urel]</userinput> </p> <p>To build for <codeph>ARMV5</codeph> (ABI
+v1) with <filepath>abld</filepath> on Symbian OS v9.4 and later versions,
+use: </p> <p><userinput>abld build ARMV5_ABIv1 [udeb | urel]</userinput> </p> <p>Binaries
+are generated in the <filepath>udeb</filepath> and/or <filepath>urel</filepath> sub-directories
+of the <filepath>epoc32\release\ARMV5\</filepath> directory. From Symbian
+OS v9.4 onwards, the binaries are generated in <filepath>epoc32\release\ARMV5_ABIv1\</filepath>. </p> <p>Library
+export (<filepath>.lib</filepath>) files are generated in the <filepath>epoc32\release\ARMV5\lib\</filepath> directory. </p> </section>
+<section id="GUID-8C586003-B24B-5D37-85E8-837164CE9200"><title>ARMV5 (ABI
+v2 mode)</title> <p>Use this target to create binaries conforming to the ABI
+v2. </p> <p>To build for <codeph>ARMV5</codeph> (ABI v2) with <filepath>abld</filepath> on
+Symbian OS v9.3 and earlier versions, use: </p> <p><userinput>abld build ARMV5_ABIv2
+[udeb | urel]</userinput> </p> <p>To build for <codeph>ARMV5</codeph> (ABI
+v2) with <filepath>abld</filepath> on Symbian OS v9.4 and later versions,
+use: </p> <p><userinput>abld build ARMV5 [udeb | urel]</userinput> </p> <p>Binaries
+are generated in the <filepath>udeb</filepath> and/or <filepath>urel</filepath> sub-directories
+of the <filepath>epoc32\release\ARMV5_ABIv2\</filepath> directory. From Symbian
+OS v9.4 onwards, the binaries are generated in <filepath>epoc32\release\ARMV5\</filepath>. </p> <p>Library
+export (<filepath>.dso</filepath>) files are generated in the <filepath>epoc32\release\ARMV5\lib\</filepath> directory.
+The ABI v2 toolchain need to support multiple ABI v2 compatible compilers
+to have a common directory for the import library files. </p> <p>From Symbian
+OS v9.4 and later, ABI v2 is the default platform. So, a simple <codeph>abld
+build</codeph> command will create a binary conforming to ABI v2. To create
+a binary conforming to ABI v1, use <codeph>abld build           ARMV5_ABIv1</codeph>. </p> <p>You
+can switch back to the old approach, where the targets <codeph>ARMV5</codeph> and <codeph>ARMV5_ABIv2</codeph> will
+build binaries conforming to ABI v1 and ABI v2 respectively. For more details
+on this, refer to <xref href="GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita">Switching
+between ABI modes</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8" xml:lang="en"><title>Setting
+Use Policies</title><shortdesc>A use policy denotes the security check required to use the key.
+The use policy associated with the key is of type <apiname>TSecurityPolicy</apiname>.
+The policy can be set to check capabilities or the Secure ID associated with
+the calling process. The calling process should have a <codeph>WriteUserData</codeph> capability. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The following steps explain the process of setting a use policy
+for a key:</p></context>
+<steps id="GUID-16DDA72F-9BC5-52FB-A3C6-874815ABF9FC-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-2">
+<step id="GUID-89755D62-9A44-5F07-9035-6AA97F701C0C-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-2-1"><cmd>Create a file system
+session using an <codeph>RFs</codeph> object. </cmd>
+</step>
+<step id="GUID-6A14EBD6-AF2D-5CE8-A232-F04B717CA0B3-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-2-2"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-C8F104CE-E857-5615-B847-E3A33EAF7481-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-2-3"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-B1DD3DB8-90D9-52F7-96B5-B2AD5AE3E1F8"><cmd/>
+<info>List all keys in the keystore using the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function.
+Retrieve the handle of the key for which the use policy needs to be set. </info>
+</step>
+<step id="GUID-6CF7703F-8CAC-5DC6-9F43-7E2EE3F39895-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-2-5"><cmd/>
+<info>Set the use policy for the key using the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-CC8814B6-569C-3426-A319-BFB631211B07"><apiname>CUnifiedKeyStore::SetUsePolicy()</apiname></xref> function. </info>
+</step>
+</steps>
+<result><p>Use policy is set for the selected key. </p> </result>
+<example id="GUID-C2150584-293D-50CE-8DDC-19B4D55D8B0B-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-4"><title>Example</title> <p>The
+following code snippet shows how to set use policy for a key. </p> <codeblock id="GUID-FAD1C292-8E42-5348-B975-3CBA7E8D2820-GENID-1-6-1-22-1-1-8-1-5-1-5-1-5-1-4-1-12-1-3-4-3" xml:space="preserve">// Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+...
+
+
+// Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+...
+
+
+
+// Retrieve the handle of the key for which use policy has to be set
+TCTKeyAttributeFilter  filter.iUsage = EPKCS15UsageAll;
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the result of the set use policy operation
+keyStore-&gt;List(iKeys, filter, iStatus);
+
+
+...
+
+
+
+// Retrieve the key handle of the appropriate key
+_LIT(KLabel,”keylabel”);
+
+// Select the key with the label you are looking for
+TInt keyIndex;
+for (TInt j = 0; j &lt; iKeys.Count(); j++)
+    {
+    if (iKeys[j]-&gt;Label() == KLabel) 
+        {
+        keyIndex = j;
+        break;
+        }
+    }
+
+
+...
+
+
+
+// Set the use policy
+
+TSecurityPolicy usePolicy;
+TUint secureId = 0x101FFFFF;
+TCapability caps[3];
+caps[0] = ECapabilityWriteUserData;
+caps[1] = ECapabilityDRM;
+caps[2] = ECapabilityReadUserData;
+
+usePolicy = TSecurityPolicy(TSecureId(secureId), caps[0], caps[1], caps[2]);
+keyStore-&gt;SetUsePolicy(*iKeys, usePolicy, iStatus);
+
+
+// Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-60141F31-6061-5C65-809D-FE7A4F8414F7.dita"><linktext>Set Management
+Policies</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F03A323A-2FCC-5247-909F-4AB2701B1C45.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-F03A323A-2FCC-5247-909F-4AB2701B1C45" xml:lang="en"><title>smpsafe</title><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><p> <codeph>smpsafe</codeph>  </p> <p>Sets a flag on the target.
+This indicates the OS that the program when run on muti-core processors can
+make use of full symmetric multiprocessing (SMP) capabilities. SMP safe programs
+can achieve high performance. </p> </section>
+</refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e195024_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F066FEA3-94E7-5D79-B427-E247A2D1EBB8.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F066FEA3-94E7-5D79-B427-E247A2D1EBB8" xml:lang="en"><title>HTTP Whole Message Filter</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The HTTP Whole Message Filter API allows middleware developers to implement Web acceleration solutions integrated with the Symbian HTTP Transport Framework. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F06A89D5-EBC5-59BF-BE92-CE5C5076C3C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F06A89D5-EBC5-59BF-BE92-CE5C5076C3C9"><title>touch</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>touch</userinput> </p> <p>The touch command is used to change the time stamp of a file. For more information about using the <codeph>touch</codeph> command, search <xref scope="external" href="http://www.freebsd.org/cgi/man.cgi">http://www.freebsd.org/cgi/man.cgi</xref> by specifying <codeph>touch</codeph> as the search keyword and by selecting the <b>FreeBSD 6.2-Release</b> option from the release list. </p> <p> <b>Note:</b> The <codeph>-h</codeph> option is <b>not</b> supported by the Symbian version of the <codeph>touch</codeph> command: </p> <section><title>Copyright information</title> <p>For information about documentation copyrights associated with the <codeph>touch</codeph> command, see <xref scope="external" href="http://www.freebsd.org/copyright/freebsd-doc-license.html">http://www.freebsd.org/copyright/freebsd-doc-license.html</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F07B3B53-0C4D-4472-8E00-34A4C8501C5E_d0e60397_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-F0891698-F714-55AA-A089-790BB0B07AE4" xml:lang="en"><title> Allocation
+Tutorial</title><shortdesc>This tutorial describes how to allocate MBufs (for data source
+components in the Data Plane). </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita#GUID-F024208C-ED19-3301-85C1-53F397C9910F/GUID-691909D5-39E1-366C-9951-4D7C21AAF0EE"><apiname>RMBufChain::Alloc()</apiname></xref> function allocates
+the specified amount of memory as a chain of one or several <xref href="GUID-E0ADB108-D3B2-3670-907D-2AE595BECE3F.dita"><apiname>RMBuf</apiname></xref> objects
+from the Comms pond. If the pond cannot provide the memory area as a single
+buffer, the chain contains as many <codeph>RMBuf</codeph> s linked together
+as necessary to fulfil the allocation request. </p> </context>
+<steps id="GUID-E1D71A3A-4FB3-5BBA-843C-6BA687E7D82A">
+<step id="GUID-1E1B4EAB-D562-54D0-ADD8-0A33AF03DC1A"><cmd>Create an instance
+of <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita"><apiname>RMBufChain</apiname></xref>. </cmd>
+</step>
+<step id="GUID-3587DC5B-F80B-5BE5-B48C-F4F983839F9C"><cmd>Call <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita#GUID-F024208C-ED19-3301-85C1-53F397C9910F/GUID-691909D5-39E1-366C-9951-4D7C21AAF0EE"><apiname>RMBufChain::Alloc()</apiname></xref>.</cmd>
+<info>You should use the allocation methods of the parent class (<xref href="GUID-107ADE6D-7AFF-3B07-9606-BCA33A3B63EF.dita"><apiname>RCommsBufChain</apiname></xref>):
+see the<xref href="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita"> TLS Look-up
+Reduction Tutorial</xref>. </info>
+<info>Note: some of the overloaded <codeph>Alloc()</codeph> methods specify
+minimum and maximum values. See <xref href="GUID-E4D47AED-5FCA-535B-9B8B-3267A4CD01C2.dita">Allocation
+Strategy</xref>. </info>
+</step>
+<step id="GUID-C4B0AB75-15FD-5141-B9FE-5A046E8A8F95"><cmd>Check the return
+value for errors. </cmd>
+<info>The <codeph>Alloc()</codeph> methods return <xref href="GUID-6CA4F1ED-7947-3087-B618-D35858FAA3BC.dita"><apiname>KErrNone</apiname></xref> if
+the memory is available as <codeph>RMBuf</codeph> in the <codeph>RMBufChain</codeph>. </info>
+</step>
+<step id="GUID-26B5D1D0-9009-5637-83B3-94CF8F6F49B8"><cmd>Use the allocated
+buffer (see <xref href="GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita">Data Access
+Example</xref>). </cmd>
+</step>
+</steps>
+<example><title>Examples</title> <p>The following example requests 1,800 bytes
+to the Comms pond. <codeph>iAllocator</codeph> is an <codeph>RMBufAllocator</codeph> member
+of the class implementing this example. </p> <codeblock id="GUID-939E5930-6C8B-5E90-8159-128CA6177A2B" xml:space="preserve">
+RMBufChain aChain;
+
+TInt err = chain.Alloc(1800, iAllocator);
+</codeblock> <p>The following example requests 1,200 bytes and specifies a
+minimum and a maximum size of 1,600 bytes. If there are no available 1,600-byte
+buffers in the pond then an error is returned. </p> <codeblock id="GUID-6C2588A5-2561-509A-BDCD-62AC3064383C" xml:space="preserve">
+RMBufChain chain;
+
+Tint err = chain.Alloc(1200, 1600, 1600, iAllocator);
+</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext>
+</link>
+<link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers
+(MBuf)                 and Comms Chains</linktext></link>
+<link href="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita"><linktext>TLS Look-up
+Reduction                 Tutorial</linktext></link>
+<link href="GUID-E4D47AED-5FCA-535B-9B8B-3267A4CD01C2.dita"><linktext>Allocation
+Strategy</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F0923110-D5D9-56D7-8CBC-82CAE062BC1A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F0923110-D5D9-56D7-8CBC-82CAE062BC1A"><title>-check</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This option is for checking that the required files have been created during a particular build step. </p> <p>The option creates a list of files that should have been created and then checks that each one exists in turn. If a file is missing the full name of the file is piped to STDERR.</p> <p>Note that if this option is specified with <codeph>abld
+          build</codeph>, makefiles will not be included in the list of files to be checked. </p> <p>If the option is specified with <codeph>abld
+          reallyclean</codeph>, however, the makefiles will be included in the list.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F0ABCDE5-F818-526A-81EB-E2D4D87E3231" xml:lang="en"><title>How to
+Use the HTTP Whole Message Filter APIs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The HTTP Whole Message Filter APIs provide an interface for implementing
+custom encoding and decoding mechanisms for a Web Accelerator. The methods
+that you implement must optimise HTTP request data (for sending to the network)
+and decode data received back into HTTP. </p>
+<p>To use the HTTP Whole Message Filter APIs you will need to perform the
+following tasks: </p>
+</conbody><related-links>
+<link href="GUID-4ACEA6B0-CA7C-5751-A1B6-283287552A31.dita"><linktext>Overview
+of HTTP Whole Message Filter APIs</linktext></link>
+<link href="GUID-B4A54501-4AA4-5ACB-96D7-4427C7752639.dita"><linktext>Using HTTP
+Client</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e46010_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F0D5C8DB-3AD0-53F1-8301-C0F69A4F13C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F0D5C8DB-3AD0-53F1-8301-C0F69A4F13C1" xml:lang="en"><title>More about the file server</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e405286_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF"><title>Controlling the Video Controller Plugin</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to control the video controller plugin. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to control the video controller plugin. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video player utility is used to open, play, and obtain information from sampled video data. This functionality is implemented by the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> class. The video data can be supplied either in a file, a descriptor or a URL. </p> </section> <section><title>Using Video Controller Plugin</title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-D9F5BB2B-45B5-5B49-9FA4-349130268E56"><p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita#GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF/GUID-D50E2379-5A60-5003-9F85-9400A4FC2B04">Get the Progress of Video Clip Loading/Rebuffering</xref>  </p> </li> <li id="GUID-494D8E38-CA28-556B-AAA3-7D285CB2E268"><p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita#GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF/GUID-C76572AF-F3FF-56E5-A3CE-264F9557A717">Using Custom Commands</xref>  </p> </li> </ul> <p id="GUID-D50E2379-5A60-5003-9F85-9400A4FC2B04"><b>Getting the Progress of Video Clip Loading/Rebuffering</b> </p> <p>The high level steps to get the progress of video clip loading/rebuffering are shown here: </p> <ul><li id="GUID-6151E0C8-221B-54F0-9892-6965E4400149"><p>To get the progress of video clip loading/rebuffering, use the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-D9C2858F-EA5B-3B0D-9EC6-27E6E100A0DE"><apiname>CVideoPlayerUtility::GetVideoLoadingProgressL()</apiname></xref> function. </p> <codeblock id="GUID-D8625275-964D-5DEA-973A-ECAA4CD0E193" xml:space="preserve">TInt percentage;
+percentage = iVideoPlayer-&gt;GetVideoLoadingProgressL() \\Returns the progress, as a percentage of video loading.</codeblock> </li> </ul> <p id="GUID-C76572AF-F3FF-56E5-A3CE-264F9557A717"><b>Using Custom Commands</b> </p> <p>Custom commands are used to pass the message directly to the controller plug-in instead of going through APIs such as Play(), Record(), and so on. </p> <ul><li id="GUID-2FF21CE7-6815-5CEB-8F6F-B0CD9E49CAF6"><p>To send a synchronous custom command to the controller, use the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F3837140-CAAC-3EE4-834F-E91CBA864C3D"><apiname>CVideoPlayerUtility::CustomCommandSync()</apiname></xref> function. </p> </li> <li id="GUID-E29FBA55-B694-58CB-B218-35EF640AB44C"><p>To send a asynchronous custom command to the controller, use the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-60D7B247-66ED-33ED-8619-2DFD44A6008E"><apiname>CVideoPlayerUtility::CustomCommandAsync()</apiname></xref> function. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F13D4492-4E0C-5D7A-A30D-9E79F092CF72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F13D4492-4E0C-5D7A-A30D-9E79F092CF72" xml:lang="en"><title>listing</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><codeph>abld</codeph> [ test ] <codeph>listing</codeph>  <codeph> [-k]
+[-v] </codeph> [ <varname>platform</varname> ] [ <varname>build</varname> ]
+[ <varname>program</varname> ] [ <varname>source_basename</varname> ]</p>
+<p>This command creates an assembler listing file for a particular source
+file.</p>
+<p>The listing file name has the format extension <varname>source_basename</varname> <filepath>.lis.</filepath> <varname>ABI-name</varname>. </p>
+<p>The listing file is created in the build directory and then copied to the
+directory containing the source file. </p>
+<example><p>Assuming <filepath>myproject</filepath> is a project,
+and <filepath>cappui.cpp</filepath> is the file to get the listing for, the
+following command would produce an ARMI release assembly listing for that
+file:</p><userinput>abld listing armi urel myproject cappui</userinput><p>This
+would produce an output file <filepath>cappui.lis.armi</filepath>.</p></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A" xml:lang="en"><title>Setting
+list</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>A setting list is a specific kind of selection list containing setting
+items that the user can adjust. Setting lists are displayed in the main pane.</p>
+<fig id="GUID-5795DABA-71C7-42DE-B3AF-BA532435416A">
+<title>Setting list </title>
+<image href="GUID-D36660AA-1DC1-49B4-870E-F3BA66A734BC_d0e55427_href.png" scale="33" placement="inline"></image>
+</fig>
+<p>A setting item can be adjusted by selecting it in the same way as selection
+list items are selected in general; that is, by pressing the Selection key,
+or choosing the Change command from the Options menu. The main pane then displays
+the setting item editor where the value can be changed.</p>
+<p>There are several setting item types available. They look the same in the
+setting list: each item displays an attribute text (the title of the setting)
+on one line and the current value on another line within the item. The adjusting
+and editing functions differ between the setting item types.</p>
+<table id="GUID-212B8C90-F3AC-4893-9AF6-19A8B4845F91"><title>Setting item
+types</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Setting</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Pop-up setting</p></entry>
+<entry><p>A pop-up setting allows the user to choose one value from a pre-defined
+list. The setting editor displays the available values in a menu list.A pop-up
+setting may also allow the user to enter a new textual value in addition to
+the pre-defined values. In that case, the last option is named Other (or equivalent),
+and selecting it opens a Data query for entering the new value.</p></entry>
+</row>
+<row>
+<entry><p>Multi-selection list setting</p></entry>
+<entry><p>A multi-selection list setting allows the user to choose several
+simultaneous values from a pre-defined list. The setting editor displays the
+available values as a multi-selection list. The setting item displays the
+number of selected items versus all the items in the value field; for example:
+3/8.</p></entry>
+</row>
+<row>
+<entry><p>Text setting</p></entry>
+<entry><p>The value of a text setting item is an alphanumeric or numeric string.
+The editor can be of a specific type, such as the Date and Time editor.</p></entry>
+</row>
+<row>
+<entry><p>Slider setting</p></entry>
+<entry><p>With a slider, the user can adjust the value of a setting by sliding
+a marker. The value of a slider is adjusted using the Arrow left and Arrow
+right keys.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<fig id="GUID-D919C463-A143-4C05-AD2E-0983291F4658">
+<title>Pop-up setting</title>
+<image href="GUID-A0FF8339-E322-4D22-A800-E90467E5C952_d0e55510_href.png" scale="33" placement="inline"></image>
+</fig>
+<fig id="GUID-DB28DFCD-006C-4828-BDAC-CC9594AE4768">
+<title>Multi-selection setting</title>
+<image href="GUID-7E69FAA4-2198-4428-BD26-96C4020E2077_d0e55518_href.png" scale="33" placement="inline"></image>
+</fig>
+<fig id="GUID-B3D4C80C-7BD8-441F-AEB6-B186022E6A0A">
+<title>Text setting</title>
+<image href="GUID-AA9552C9-6223-459C-A8F9-770ECFCEFBDD_d0e55526_href.png" scale="33" placement="inline"></image>
+</fig>
+<fig id="GUID-4A642EAD-6C40-407A-A1C1-408B9331A1DA">
+<title>Slider setting</title>
+<image href="GUID-967E277E-67FC-4F98-B775-06C9BFC09926_d0e55534_href.png" scale="33" placement="inline"></image>
+</fig>
+<p>By default, in a setting editor, the keypad functions are as follows:</p>
+<table id="GUID-1181AD52-5BAD-4F44-A0A1-EA930F63E1AC"><title>Default key events
+in setting editor</title>
+<tgroup cols="2"><colspec colname="col1"></colspec><colspec colname="col2"></colspec>
+<thead>
+<row>
+<entry>Key</entry>
+<entry>Action</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Arrow up / down</p></entry>
+<entry><p>Pop-up, multi-selection: browses the list. Text: moves the cursor.
+Slider: ignored.</p></entry>
+</row>
+<row>
+<entry><p>Arrow left / right</p></entry>
+<entry><p>Pop-up: ignored. Multi-selection: ignored. Text: moves the cursor.
+Slider: adjusts the slider value (a key repeat event may move the slider by
+several steps).</p></entry>
+</row>
+<row>
+<entry><p>Selection key</p></entry>
+<entry><p>All except multi-selection: accepts the value, returns to the setting
+list. Multi-selection: toggles <b>Mark/Unmark</b>.</p></entry>
+</row>
+<row>
+<entry><p>Left softkey (OK)</p></entry>
+<entry><p>Accepts the current item or value, returns.</p><p><b>Note: </b>may
+also be <b>Options</b> in certain instances.</p></entry>
+</row>
+<row>
+<entry><p>Right softkey (Cancel)</p></entry>
+<entry><p>Cancels the setting editor, returns.</p></entry>
+</row>
+<row>
+<entry><p>Clear</p></entry>
+<entry><p>Pop-up, multi-selection: ignored. Text: deletes characters. Slider:
+ignored.</p></entry>
+</row>
+<row>
+<entry><p>Edit</p></entry>
+<entry><p>Pop-up, multi-selection: ignored. Text: opens the editing menu.
+Slider: ignored.</p></entry>
+</row>
+<row>
+<entry><p>Numeric keypad</p></entry>
+<entry><p>Pop-up, multi-selection: ignored. Text: input functions. Slider:
+ignored; if the value is numeric, it may be adjustable using the Numeric keys.</p></entry>
+</row>
+<row>
+<entry><p>Other keys</p></entry>
+<entry><p>Do the default action of the key.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>In the setting editor, the Navi pane is empty, or in case of a text editor,
+contains the editing indicators.</p>
+<p>Further guidelines:</p>
+<ul>
+<li><p>Typically, a setting list is accessed via the <b>Options</b> menu (see <xref href="GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita">Options menu</xref>). </p></li>
+<li><p>Setting lists can only contain setting items, not other types of items
+mixed with them. (In case the settings are arranged in a hierarchical structure,
+both setting items and setting folders may exist in one list.)</p></li>
+<li><p>All the setting item types can co-exist in the same setting list.</p></li>
+</ul>
+<p>If a pop-up setting has only two available values (such as <b>On</b> and <b>Off</b>)
+and no special procedure is needed when switching from one value to the other,
+then the setting editor (list) must not be displayed when the user presses
+the Selection key; the item's value is changed immediately. However, if the
+user opens the setting item via the <b>Options</b> menu, or if an additional
+procedure is required (for example a password) before the item's value can
+be changed, the list is opened normally.</p>
+<section><title>Using setting lists in
+C++ applications</title><p>The APIs to use for setting lists are the Lists
+API and the Setting
+pages API. For implementation information, see Using
+the Lists API and Using
+the Setting pages API.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7" xml:lang="en"><title>Repetitive
+Search</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>When a new search-sort asynchronous operation is successful, a unique ID
+is returned to the client, which is referred as query ID. This query ID can
+be used to repeat the same search-sort query. </p>
+<section><title>Required background</title> <p>To do a repetitive search operation,
+that is searching messages using a query ID, you must first get the query
+ID of that search operation. </p> </section>
+<section><title>Introduction</title> <p>Every new search-sort asynchronous
+query that is successful is assigned with a unique 32 bit integer value, which
+is referred to as a <xref href="GUID-01500959-E1C8-3491-B8F1-0D2F0512CC16.dita"><apiname>query           ID</apiname></xref>. This query ID is
+used to initiate the same search-sort operation (initiate a repetitive query)
+in future. The query ID can be retrieved using the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-1893C3C7-4F77-3630-B115-A161CCA2665A"><apiname>CMsvSearchSortOperation::GetQueryIdL()</apiname></xref> function. </p> <p><b>Marking</b> </p> <p>When the search-sort cache reaches its maximum size the message server
+deletes the least recently used query to accommodate a new one. However, there
+may be some queries and their results which the client wants to keep in the
+cache, irrespective of how frequently they are being used. </p> <p>Such queries
+can be marked by the client to indicate to the Messaging server that the query
+should not be disposed from the search-sort cache when the cache is full.
+Marked queries are considered for deletion only if all of the remaining queries
+are also marked. </p> <p>To mark a query ID, use the <codeph>TBool aMarkQuery</codeph> parameter
+in the <xref href="GUID-5D956759-5D21-3715-916E-F7E703172762.dita#GUID-5D956759-5D21-3715-916E-F7E703172762/GUID-6C81A72A-3BEC-3D18-9CAD-46E9309C3FEB"><apiname>CMsvSearchSortOperation::RequestL()</apiname></xref> function in
+your client application. </p> <codeblock id="GUID-EED135A5-C141-5525-9C0C-DCF318040C46" xml:space="preserve">IMPORT_C void RequestL (CMsvSearchSortQuery* aQuery, TBool aMarkQuery, TRequestStatus&amp; aQueryStatus, TInt aIterator=0)</codeblock> <p><b>Unmarking</b> </p> <p>To unmark a query ID, use the CMsvSearchSortOperation::UnmarkQuery()
+function in your client application. </p> <codeblock id="GUID-1C27E207-33F0-5F64-81FC-C50BF257BCB7" xml:space="preserve">IMPORT_C TInt UnmarkQuery  (const TInt aQueryId )</codeblock> <fig id="GUID-7D09EFAE-67B3-5142-A6EF-F9D86E39414F">
+<title>              Repetitive search request process            </title>
+<image href="GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e259139_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Procedure</title> <ol id="GUID-E149145A-A3CB-5CE9-9484-9A7B41E9D302">
+<li id="GUID-9D17EF5C-BCA1-5FAE-BE69-DDF6B441F4A5"><p>To get a query ID, complete
+the steps from 1 to 10 in <xref href="GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita">New
+Search</xref>. </p> </li>
+<li id="GUID-CD3AABCA-4A90-5B1C-8D77-A2E76161DF2A"><p>Get the query ID from
+step 10 and start the search operation using the query ID as the search parameter. </p> </li>
+</ol><codeblock xml:space="preserve">void CSearchsortExample::SeachSortRequestByQueryIdL()
+    {
+    //1. Create a session with message server
+    // NOTE: CMsvSession::OpenSyncL requires a &amp;MMsvObserver parameter. This example assumes that 
+    // CSearchSortExample implements MMsvObserver.
+    CMsvSession* session = CMsvSession::OpenSyncL(*this);
+    CleanupStack::PushL(session);
+
+    //2. Create an instance of CMsvSearchSortOperation to perform a 
+    //search-sort operation    
+    CMSvSearchSortOperation* search = CMSvSearchSortOperation::NewL(*session);
+    CleanupStack::PushL(search);
+            
+    //3. Start the search operation using the query ID as the search parameter
+    TRequestStatus aStatus;
+    search-&gt;RequestL(iQueryId, aStatus);
+
+    //4. Wait for the result
+    User::WaitForRequest(aStatus);
+
+    //5. Create an array to hold Search-sort results
+    RArray&lt;TMsvId&gt; resultArray;
+
+    //6. Retrieve the results of the search. The format for the results should be the same as
+    // what is configured in step 2. Else, will leave with the KErrMsvInvalidResultRequest
+    // error
+    TInt err =  search-&gt;GetResultsL(resultArray);
+    if(ret == KErrNone)
+        {
+        TInt count = resultArray.Count();
+        }
+
+    //7. Store the query ID. This ID can be used in repetitive search queries.
+    iQueryId = search-&gt;GetQueryIdL();
+    
+    CleanupStack::PopAndDestroy(2); //search, session  
+    }</codeblock> </section>
+<example><title>Search-sort example</title> <p><xref href="GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita">SearchSortExample:
+Enhanced Search and Sort for Message Store </xref>  </p> </example>
+<section><title>See also</title> <p>For conceptual information on search-sort
+APIs, see <xref href="GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita">Search-Sort
+Introduction</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22" xml:lang="en"><title>linkedlist:
+Using the Linked List classes</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section id="GUID-4B81C04C-94DD-4694-9BD9-447ADE72B294"><p>The following examples show the use of the linked list classes: </p> <ul>
+<li id="GUID-F204E5EC-593B-556D-83DC-72B7B5C7C46A"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D"> Singly linked list example</xref>  </p> </li>
+<li id="GUID-295D6285-199E-5FD8-B0B9-90FA546831F8"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD"> Doubly linked list example</xref>  </p> </li>
+<li id="GUID-F459FF26-D837-5E5F-BB50-67D12D3EE93F"><p><xref href="GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita#GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22/GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0"> Delta queue example</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-4366D8F9-3E8F-53B2-BB3C-A32CA13DA96D"><title>Singly linked
+list example</title> <p>This example application demonstrates the use of singly
+linked lists. The templated <xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref> class is used to create
+a singly linked list. </p> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-54304ba8-7028-43b8-89b8-d89432684981.zip" scope="external">sgllist.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-54304ba8-7028-43b8-89b8-d89432684981.html" scope="peer">browse </xref>to view the example.</p> <p><b>Description</b> </p> <p>The
+example creates a singly linked list of objects of the <xref href="GUID-129B4F4D-500E-37E8-9D29-94E3E6D11BD9.dita"><apiname>TDigit</apiname></xref> class.
+This list represents a long number. An object of class <xref href="GUID-F20187A8-CC62-34C6-830C-FB077515AAF8.dita"><apiname>CLongNumber</apiname></xref> owns
+the list. The user can edit this list using the functions defined in the <codeph>CLongNumber</codeph> class.
+The following edit operations are possible: </p> <ul>
+<li id="GUID-C793B73E-9037-5B22-8A3A-EFAD7A666D53"><p>Insert an object of
+the <codeph>TDigit</codeph> class at the start of the singly linked list </p> </li>
+<li id="GUID-C46B31C9-49FF-5457-9157-E55316F26252"><p>Insert an object of
+the <codeph>TDigit</codeph> class at the end of the singly linked list </p> </li>
+<li id="GUID-9AFD5005-AA6A-5D7D-9B96-35CBA4791128"><p>Remove an object of
+the <codeph>TDigit</codeph> class from the end of the singly linked list </p> </li>
+</ul> <p>The user can perform any of these operations by pressing keys specified
+in the menu. <codeph>CLongNumber</codeph> is an active object class and handles
+the key press events in the <codeph>CLongNumber::RunL()</codeph> function.The <codeph>CLongNumber::ReadFunc()</codeph> function
+displays a menu and waits for an asynchronous key press event. </p> <p>An
+object of the templated <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref> class is used to traverse
+this linked list. The sum of all digits of the number represented by the linked
+list is displayed to the user. </p> <p>An object of the <xref href="GUID-D0AE0223-82DC-369A-A8FB-C2086C1EC77C.dita"><apiname>CAdder</apiname></xref> class
+is used to traverse the <codeph>CLongNumber::iNumber</codeph> list and print
+the sum of all digits of the number represented by this list. The <codeph>CAdder::Add()</codeph> function
+gets this sum. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-D0AE0223-82DC-369A-A8FB-C2086C1EC77C.dita"><apiname>CAdder</apiname></xref></p></li>
+<li><p><xref href="GUID-F20187A8-CC62-34C6-830C-FB077515AAF8.dita"><apiname>CLongNumber</apiname></xref></p></li>
+<li><p><xref href="GUID-129B4F4D-500E-37E8-9D29-94E3E6D11BD9.dita"><apiname>TDigit</apiname></xref></p></li>
+<li><p><xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref></p></li>
+</ul> <p><b>Design and implementation</b> </p> <p>Figure 1 shows the classes
+in the example. </p> <fig id="GUID-7BB458A7-C1E6-5919-A503-BFBE695432AA">
+<title>     Figure 1. Classes in the singly linked list example          
+    </title>
+<image href="GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e228222_href.jpg" placement="inline"/>
+</fig> <p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-40BA1263-BE07-3C7F-955E-0BBC632E7C58.dita"><apiname>TSglQue</apiname></xref></p></li>
+<li><p> <xref href="GUID-0A865633-5038-3320-A472-A2EE18F04FBE.dita"><apiname>TSglQueIter</apiname></xref></p></li>
+</ul><p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this example. </p> <p>For
+the emulator, the example builds an executable called <filepath>sgllist.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p><p><b>See
+also:</b></p><p><xref href="GUID-052E9582-9A35-50B0-A32E-F7E6A01A2E2A.dita">Using
+Singly Linked Lists</xref></p> </section>
+<section id="GUID-FC5F8D9A-C594-5FBB-9AD1-8DEB72A5F5BD"><title>Doubly linked
+list example</title> <p>This example application demonstrates the use of doubly
+linked lists. The templated <xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> class is used create
+a doubly linked list. </p> <p><b>Download</b> </p> <p>Click on the following
+link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3a268b1a-9a7e-49ae-bc76-f99bdc3b32f5.zip" scope="external">dbllist.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3a268b1a-9a7e-49ae-bc76-f99bdc3b32f5.html" scope="peer">browse </xref>to view the example code</p> <p><b>Description</b> </p> <p>The
+example creates a doubly linked list of objects of the <codeph>TLetter</codeph> class.
+This list represents a character string. An object of class <codeph>CMyStringReverse</codeph> owns
+this string. The user can edit this string using the functions defined in
+the <codeph>CMyStringReverse</codeph> class. The following edit operations
+are possible: </p> <ul>
+<li id="GUID-D3B39123-1249-59DD-BC1F-2D62B7F9DE84"><p>Insert a character at
+the start of the list </p> </li>
+<li id="GUID-E6CEC00A-B6C1-53B2-9AAA-870EA8B06A5B"><p>Insert a character at
+the end of the list </p> </li>
+</ul> <p>The user can perform either of these operations by pressing keys
+specified in the menu. <codeph>CMyStringReverse</codeph> is an active object
+class and handles key press events in the <codeph>CMyStringReverse::RunL()</codeph> function.
+The <codeph>CMyStringReverse::ReadFunc()</codeph> function displays a menu
+and waits for an asynchronous key press event. </p> <p>The <codeph>CMyStringReverse</codeph> class
+has a doubly linked list iterator, <codeph>iIteratorString</codeph>. The <codeph>iIteratorString</codeph> object
+iterates through the list <codeph>iString</codeph> from start to end to print
+the string reversed. </p><p><b>Design and implementation</b></p><p>Figure
+2 shows the classes in the example.</p><fig id="GUID-67F3F952-D0A8-4A28-8CB2-0394C1562A29">
+<title> Figure 2. Classes in the doubly linked list example </title>
+<image href="GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e228361_href.jpg" placement="inline"/>
+</fig><p><b>Class summary</b></p><ul>
+<li><p><xref href="GUID-E5E9834A-63CA-3F03-88D3-85B912ADA54C.dita"><apiname>TDblQue</apiname></xref> - A templated class that provides the behaviour
+for managing a doubly linked list.</p></li>
+</ul> <p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this example. </p> <p>For
+the emulator, the example builds an executable called <filepath>dbllist.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> <p><b>See
+also</b> </p> <p><xref href="GUID-F45EA14E-F857-5D59-BFBA-E2F563287359.dita">Using
+Doubly Linked Lists</xref>  </p> <p><b>Example code</b> </p> </section>
+<section id="GUID-7FFDF885-72F4-543E-A93E-C6A57D3D7DE0"><title>Delta queue
+example</title> <p>This example application demonstrates the use of the delta
+queue. The templated <xref href="GUID-E67BB56F-F9DD-316D-BC16-ED60D31A5925.dita"><apiname>TDeltaQue</apiname></xref> class is used create a delta
+queue. </p> <p><b>Download</b> </p> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-6a73c507-073b-4993-aa02-a677a384bafb.zip" scope="external">deltaque.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-6a73c507-073b-4993-aa02-a677a384bafb.html" scope="peer">browse </xref>to view the example code.</p> <p><b>Description</b> </p> <p>The
+example creates an object of the <codeph>CTimerEntry</codeph> class. This
+is a <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> derived class. An object of this class generates
+timer events by using the <xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita#GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A/GUID-F389C301-D56B-3981-9C26-180E02BFF171"><apiname>CTimer::After()</apiname></xref> function. The
+data member of this class, <codeph>iQueue</codeph> is a delta list. The offset
+value of each node in this list is the tick count after each timer event.
+The <codeph>CTimerEntry::Arbitrator()</codeph> function decides the action
+to be performed for each event generated by the timer. It either adds tick
+counts to the list or removes elements from the list based on the state of
+the queue. </p><p><b>Related APIs</b></p><ul>
+<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li>
+<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita#GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A/GUID-F389C301-D56B-3981-9C26-180E02BFF171"><apiname>CTimer::After()</apiname></xref></p></li>
+</ul><p><b>Design and implementation</b></p><p> Figure 3 shows the classes
+of the example. </p><fig id="GUID-2E093EFA-7A18-4623-AE31-3FA1FDB103F5">
+<title> Figure 3. Classes of the delta queue example </title>
+<image href="GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e228489_href.jpg" placement="inline"/>
+</fig><p><b>Class summary</b></p><ul>
+<li><p> <xref href="GUID-E67BB56F-F9DD-316D-BC16-ED60D31A5925.dita"><apiname>TDeltaQue</apiname></xref></p></li>
+<li><p><xref href="GUID-5733DF34-5B54-3044-BBED-3BFECB7ACE7A.dita"><apiname>CTimer</apiname></xref> - Base class for a timer active object.</p></li>
+</ul> <p><b>Build</b> </p> <p><xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The
+Symbian OS build process</xref> describes how to build this example. </p> <p>For
+the emulator, the example builds an executable called <filepath>deltaque.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </section>
+</refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e362491_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F18D0E06-2FB8-5339-AF31-02CC7D5A8010.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F18D0E06-2FB8-5339-AF31-02CC7D5A8010" xml:lang="en"><title>MIME Recognition Framework</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The MIME recognition framework implements data type recognition using MIME recognizers. The client application requests to the AppArc for data type recognition are internally processed by the MIME framework.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F1BDE1DB-2749-52F4-AC9B-74A5D9A32A67.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F1BDE1DB-2749-52F4-AC9B-74A5D9A32A67" xml:lang="en"><title>Hello:
+C Standard Library Hello World Example</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: </p> <p>Click on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-eaa21c1c-ea78-4d92-bb20-1c43430266f0.zip" scope="external">Hello</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-eaa21c1c-ea78-4d92-bb20-1c43430266f0.html" scope="peer">browse</xref> to view the example code. </p></section>
+<section><title>Description</title> <p> <filepath>Hello</filepath> is the
+most basic example demonstrating how to use STDLIB. </p> <p>The main point
+of interest in this program is the <filepath>.mmp</filepath> project specification
+file, which specifies the <filepath>epoc32\include\libc\</filepath> include
+directory and links to <filepath>estlib.lib</filepath>, the C standard library,
+and the static library <filepath>ecrt0.lib</filepath>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7" xml:lang="en"><title>Find
+pane</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Find pane is a component intended to help find items in a list. The
+Find pane is situated in the bottom part of the main pane.</p>
+<fig id="GUID-DF8F54F6-8110-421B-8CC2-62FE32BB7DDD">
+<title>Find pane within a selection list of names in Phonebook</title>
+<image href="GUID-77459C3C-F747-4A9A-93F6-D19E518DACBB_d0e58615_href.png" scale="33" placement="inline"></image>
+</fig>
+<p>The standard functionality of the Find pane is as follows:</p>
+<ul>
+<li><p>Characters typed from the numeric keypad appear in the end of the string
+in the Find pane. </p></li>
+<li><p>The user can only add and remove characters in the end.</p></li>
+<li><p>The Find pane may be hidden until the user types in a character. </p></li>
+<li><p>Whenever the find string changes, the list in the main pane is filtered,
+and only the items matching the string are displayed. The user can browse
+the list normally using the Arrow up and Arrow down keys.</p></li>
+</ul>
+<p>The Find pane can also be a pop-up window. In this case, it is only displayed
+when it is specifically activated.</p>
+<section><title>Using the Find pane in
+C++ applications</title><p>The APIs to use for the Find pane are the Searchfield
+API and the Popups
+API.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e48070_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72" xml:lang="en"><title>ABIv1
+to ABIv2 toolchain changes</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The principal task of Symbian platform build tools such as <filepath>abld/makmake</filepath> is
+to read the specified project (.mmp) files and then call the appropriate compiler
+and linker with the necessary inputs and option settings. The binaries output
+from commercial compiler and linkers, such as ARM's RVCT and GNU GCC, cannot
+however be directly used by Symbian platform. Symbian platform requires binaries
+to be in Symbian-specific format, known as the E32Image format. </p>
+<p>In order to create binaries in this format, the toolchain must perform
+additional steps on the compiler/linker output. How these steps are performed
+is considerably different between builds for the ABIv1 and ABIv2 targets.
+Essentially, a number of small tools used for ABIv1 targets, are replaced
+for ABIv2 targets by a single tool called the post-linker (file name <filepath>elf2e32.exe</filepath>).
+This redesign is intended to simplify the work needed to introduce support
+for a new ABIv2 compatible compiler into the toolchain. </p>
+<p>The following diagram shows the steps (somewhat simplified) performed by
+the toolchain for the creation of a DLL for ABIv1 and v2 respectively: </p>
+<fig id="GUID-F68AB795-A612-5202-A459-30B62663737F">
+<title>           ABIv1 and v2 toolchains compared          </title>
+<image href="GUID-09263C33-EE63-530C-A6B9-70806F0BC16D_d0e417162_href.png" placement="inline"/>
+</fig>
+<p>The <filepath>elf2e32</filepath> tool replaces the ABIv1 toolchain tools <filepath>def2dll.bat</filepath>, <filepath>elf2inf.pl</filepath>, <filepath>makedef.pl</filepath> and <filepath>elftran.exe</filepath>. </p>
+<section><title>.dso files </title><p>In the ABIv2 toolchain, <filepath> .lib</filepath> files
+are replaced by <filepath>.dso</filepath> files. These files are used in similar
+situations to <filepath>.lib</filepath> files. However, the format of these
+two files is completely different. A <filepath>.lib</filepath> file is an
+archive file created from stubs generated for each of the exported symbols.
+A <filepath>.dso</filepath> file is an ELF object similar to other objects
+created with the compiler. It has all the associated sections required for
+an ELF object, such as the symbol table, string table, etc. The <filepath>.dso</filepath> file
+also has the information required for the linker to link to the correct ordinals
+to the DLL. <filepath>.lib</filepath> files cannot be used by the ABIv2 toolchain,
+and <filepath>.dso</filepath> files cannot be used by the ABIv1 toolchain.</p></section>
+<section><title>Linked objects </title><p>The compiler toolchain that supports
+ABIv2 produces linked objects that are different to those produced by the
+ABIv1 toolchain. The linked objects produced are both ELF format, but they
+have extra information that can be used by a postlinker to create platform
+specific binaries. As the ELF produced by ABIv2 has more information, it is
+not necessary to perform the sort of manipulations performed by the many small
+tools in the ABIv1 toolchain. As the linked objects differ significantly in
+their content, it is not possible to mix ABIv1 and ABIv2 toolchain objects
+in the same build tree. </p></section>
+<section><title>E32Image format </title><p>The final E32image produced by
+the ABIv2 toolchain is in the same format as that of the ABIv1 toolchain.
+However, a byte by byte comparison of the same E32image file in ABIv1 and
+ABIv2 is not possible. The layout of the code produced by the linker is different,
+although the code is still binary compatible. </p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e161979_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF" xml:lang="en"><title>Adding
+Effects And Filters Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document gives you more information about the image effects and filters. </p>
+<section><title>Purpose</title> <p>The purpose of this guide is to show you
+how to implement different image effects and filters using Image Processor. </p> <p><b>Introduction</b> </p> <p>Adding effects to an image with Image Processor
+is very simple. </p> <p>Effects are applied in the order they are inserted
+in a image. <b>Note:</b> The result from rendering an image can be different
+depending on the order the effects are applied to an image. </p> <p>The code
+example below shows an implementation in the order: crop, mirror, and 90 degree
+rotation. </p> <codeblock id="GUID-041412C5-BD03-56C2-A5A8-162C5058A243" xml:space="preserve">
+
+// Get TInputInfo interface
+TInputInfo* inputInfo = imageProcessor-&gt;InputInfoL();
+// Get the input image size
+TSize inputSize = inputInfo-&gt;SizeL();
+
+// Define crop region
+TRect cropRegion(inputSize.iWidth / 4, inputSize.iHeight / 4, inputSize.iWidth / 2, inputSize.iHeight /2);
+
+// Apply crop
+imageProcessor-&gt;SetInputRectL(cropRegion);
+
+// Get TEffect interface for Mirror Left To Right effect. 
+// Note. All effects can be handled via generic TEffect interface. For more advanced functionality
+// the interface pointer must be cast to a derived effect interfece.
+TEffect* effect = imageProcessor-&gt;EffectL(KEffectMirrorLeftToRightUid);
+
+// Standard sequence of function calls to apply any effect. 
+// The effect must be started with BeginL() and finished with EndL() functions calls.
+effect-&gt;BeginL();
+effect-&gt;EndL();
+
+// As non-standard effect geometrical operation can be used via derived interface only.
+TGeometricalOperation* operation = static_cast&lt;TGeometricalOperation*&gt;(imageProcessor-&gt;EffectL(KGeometricalOperationUid));
+operation-&gt;BeginL();
+operation-&gt;SetOperationL(ImageProcessor::CImgProcessor::EOperationRotate270);
+operation-&gt;EndL();
+
+</codeblock> </section>
+<section><title>Undo</title> <p>Image Processor has a built-in undo mechanism,
+which removes the last added effect or operation on the undo stack. Parameter
+changes are not added to the undo stack. There is an unlimited number of undo
+steps and you can check if an undo operation is possible. </p> <p>The code
+example below shows the implementation the <codeph>ImageProcessor::CImageProcessor::UndoL()</codeph> function: </p> <codeblock id="GUID-80FD0739-851C-57F8-AEF0-4BB6B8634355" xml:space="preserve">
+
+TEffectRotation* rotationEffect = static_cast&lt;TEffectRotation*&gt;(imageProcessor-&gt;EffectL(KEffectRotationUid));
+rotationEffect-&gt;BeginL();
+rotationEffect-&gt;SetRotationL(ImageProcessor::TEffectRotation::ERotationScaleModeFitInside, 45.0f);
+rotationEffect-&gt;EndL();
+
+// Check if we can undo last applied effect
+if (imageProcessor-&gt;CanUndoL()) 
+{
+    // Undo the effect
+    imageProcessor-&gt;UndoL();
+}
+
+</codeblock> </section>
+<section><title>Adjustable generic effects </title> <p>Those imaging effects
+that have variable strengths or settings to choose from are called adjustable
+generic effects. These effects each have three related functions: </p> <ul>
+<li id="GUID-51F7D507-5788-5120-AC0B-9E599FEE66A2"><p>The <xref href="GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB.dita#GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB/GUID-406C6996-EEA8-3404-B0EF-3FC2EDC021D2"><apiname>ImageProcessor::TEffect::BeginL()</apiname></xref> function
+is used to initiate the adjustable generic effect. </p> <p>Any function calls
+from Image Processor operations are disabled until the <codeph>EndL()</codeph> function
+is called. For example when you try to apply another effect, this cause a
+leave <codeph>KErrNotReady</codeph>. </p> <p>For example, if you want to invoke
+an <codeph>UndoL()</codeph> call, Image Processor operations are blocked between <codeph>BeginL()</codeph> and
+thecorresponding <codeph>EndL()</codeph> call. An UndoL() call can be invoked
+after an <codeph>EndL()</codeph> call. This will cancel the effects applied
+between the last <codeph>BeginL()</codeph> and <codeph>EndL()</codeph> calls. </p> </li>
+<li id="GUID-A194B271-CE29-54F1-BFD6-134CE9CC8923"><p>The <xref href="GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB.dita#GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB/GUID-1588C652-4105-366D-82EF-74EB582D2339"><apiname>ImageProcessor::TEffect::SetLevelL()</apiname></xref> function
+is used to set the parameters of the current adjustable effect. </p> <p>For
+example, when you want to change the parameters of the effect, you must call
+the <codeph>ImageProcessor::TEffect::SetLevelL()</codeph> function to set
+the parameters of the current adjustable effect. </p> </li>
+<li id="GUID-AB2A6C70-8AAA-5916-BEE2-682EBC260E49"><p>The <xref href="GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB.dita#GUID-5DD1A7CA-B0F8-3769-9D53-4541BDC2C3FB/GUID-C0A7EEA7-A5B3-3441-8148-29B2B306CB81"><apiname>ImageProcessor::TEffect::EndL()</apiname></xref> function
+is used to end the current adjustable effect. </p> <p>For example, when you
+are satisfied with the result of the effect, you must call <codeph>ImageProcessor::TEffect::EndL()</codeph> to
+complete the current adjustable effect. </p> <p> <b>Note:</b> If you are not
+satisfied with the result of the effect, you must call the <codeph>EndL()</codeph> function
+of the current generic effect followed by a call to the <codeph>UndoL()</codeph> function. </p> </li>
+</ul> <p>The code example below shows how to use an adjustable begin-end effect: </p> <codeblock id="GUID-7B09C5D7-D48D-550E-8116-5CB6811BF1A6" xml:space="preserve">
+
+// Get sharpness effect
+TEffect* effect=imageProcessor-&gt;EffectL(KEffectSharpnessUid);
+
+// Apply default level of Sharpness
+effect-&gt;BeginL();
+effect-&gt;EndL();
+
+</codeblock> </section>
+<section><title>Working with preview </title> <p>Most mobile imaging applications
+render full-resolution images twice: </p> <ol id="GUID-61808DC4-7C6F-5371-BFD2-AB7275EF9717">
+<li id="GUID-F11B0934-3D84-5F3A-88C7-C38A25CDA2F4"><p>for a preview on the
+screen </p> </li>
+<li id="GUID-23DA4BE1-B256-5B39-BE6C-E97232EF8BA0"><p>for the rendering of
+the output image. </p> </li>
+</ol> <p>To make the render operation into a simple function, you must call
+the <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495"><apiname>ImageProcessor::TPreview</apiname></xref> function. </p> <p>The <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495"><apiname>ImageProcessor::TPreview</apiname></xref> function
+is an interface that describes the preview identified by the preview ID. The
+interface is initialized by specifying an output Symbian bitmap or pixel buffer
+(image frame) by calling <xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-38670F92-962C-31D5-9642-9F3F9BE42B30"><apiname>ImageProcessor::TPreview::SetOutput()</apiname></xref>. </p> <p>You
+can use the preview for the zoom and pan effects: </p> <codeblock id="GUID-862C5EB5-4E2C-51E2-AF8E-65F6C5785B3B" xml:space="preserve">
+
+void TPreview::SetZoomL(TReal32 aZoom);
+void TPreview::SetPanL(TReal32 aPanX, TReal32 aPanY);
+TReal32 TPreview::ZoomL() const;
+void TPreview::PanL(TReal32&amp; aPanX, TReal32&amp; aPanY) const;
+
+</codeblock> <p>The <codeph>TReal32</codeph> of pan effect ranges from -1.0
+to 1.0 and the <codeph>TReal32</codeph> of zoom effect ranges from 1.0x to <codeph>TReal32</codeph> maximum
+value. </p> <p> <b>Note:</b> The zoom and pan effects only affect the preview.
+When rendering the original image, these changes are ignored. </p> </section>
+<section><title>Changing the input </title> <p>The source image can be changed
+by calling the <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-0448A658-7DD6-3767-82FC-1EE64B1CBEE3"><apiname>ImageProcessor::CImgProcessor::SetInputL()</apiname></xref> function
+without creating a new Image Processor instance. <codeph>ImageProcessor::CImgProcessor::SetInputL()</codeph> can
+be used when displaying thumbnails or when choosing between different overlay
+graphics. The image source can freely be switched between file, buffer, bitmap
+and a background colour. </p> <p>The code example below illustrates the chain
+of effects applied to a number of images and rendered to screen. </p> <codeblock id="GUID-2D54E9BB-20FE-5F02-A00E-71AAD089FBF0" xml:space="preserve">
+
+    // Get white balance effect
+    effect = imageProcessor-&gt;EffectL(KEffectWhiteBalanceUid);
+    
+    // Apply default white balance 
+    effect-&gt;BeginL();
+    effect-&gt;EndL();
+
+    // Go through the images and render the preview for each of them
+    for (TInt i = 0; i &lt; 4; i++) 
+        {
+        imageProcessor-&gt;SetInputL(*filenames[i]);
+        preview-&gt;RenderL();
+  }
+
+</codeblock> </section>
+<section><title>Image information </title> <p>Image Processor has functionality
+to get information about the source image. This information can be used for
+display in a file browser or to verify the correct capabilities that are available
+for a specific processing task. </p> <p>First, a pointer to <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-E1B6400E-1A36-368A-AAC7-CDDE3ED656A2"><apiname>ImageProcessor::TInputInfo()</apiname></xref> interface
+must be obtained from the active Image Processor instance. To extract the
+information, the following functions are called: </p> <codeblock id="GUID-C940E27B-4FCE-5C9A-B39A-4C04C9BD6591" xml:space="preserve">
+
+TSize TInputInfo::SizeL() const; 
+void TInputInfo::FormatL(TUid&amp; aFormat, TUid&amp; aSubFormat) const;
+TDisplayMode TInputInfo::DisplayModeL() const; 
+TUid TInputInfo::ImageFrameFormatL() const; 
+TUid TInputInfo::SamplingL() const; 
+TUint32 TInputInfo::BitsPerPixelL() const; 
+TBool TInputInfo::IsProgressiveL() const; 
+TBool TInputInfo::IsInterlacedL() const; 
+TBool TInputInfo::HasAlphaL() const;
+
+</codeblock> </section>
+<section><title>Coordinates and areas </title> <p>Image Processor uses a number
+of different coordinate systems to cope with the translation from the preview
+image to the input image. </p> <p>In this section the following concepts are
+introduced: </p> <ul>
+<li id="GUID-B9B0ED22-9EAC-50B3-9987-6BDE1C2D5513"><p><xref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita#GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF/GUID-4CB4BD23-85CD-5239-96C4-936BC46EE745"> Input images</xref>  </p> </li>
+<li id="GUID-4E83AAF6-9820-5D28-9B7B-38E8F4F709DD"><p><xref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita#GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF/GUID-F956698F-28B3-5CFB-9ABC-E4C69688B284"> Geometry and orientation effects</xref>  </p> </li>
+<li id="GUID-07F10586-079D-58BA-9B6D-B9A00372BAF2"><p><xref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita#GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF/GUID-43A6D850-367B-5A57-8CAA-03113298ED07"> Previews</xref>  </p> </li>
+<li id="GUID-367CA050-A363-5D93-B99E-711B180EAA7C"><p><xref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita#GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF/GUID-BB35B339-CFB6-54CB-9D20-308EEB82225F">Preview canvases</xref>  </p> </li>
+<li id="GUID-F59E4119-8111-51BF-98EA-799E52DC870E"><p><xref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita#GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF/GUID-1187E33F-1EA4-57A0-BC12-1810A48CF61B">Zoom and pan settings</xref>  </p> </li>
+<li id="GUID-C14A7AFA-6F20-5313-99CA-7887D5A3895F"><p><xref href="GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF.dita#GUID-F221B15F-B5DE-516F-8FB0-75C1971DB3AF/GUID-7DA27E76-C144-5784-9748-2839766B9A52">Overlay images</xref>  </p> </li>
+</ul> <p id="GUID-4CB4BD23-85CD-5239-96C4-936BC46EE745"><b>Input images</b> </p> <p>A
+coordinate system is the region within which a given set of coordinates are
+relevant. In many scenarios, you will need to provide coordinate information
+to Image Processor. This information is ambiguous without additional handling
+to make the coordinates apply to a specific coordinate system. </p> <p>An
+area defines the dimensions of a region. Image data can change form and scale
+during the editing session, which means that a set of areas with different
+dimensions can exist throughout the chain of operations. </p> <p>All imaging
+sessions use a source image as a base. The source image represents the source
+coordinate system and the source area. The source coordinate system is not
+public since it has no relevance to the user. The source coordinate system
+starts at the top left corner of the source image and expands downwards along
+the y-axis and to the right along the x-axis. The source area size is public,
+however, and can be queried through the <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-1D0573C2-611F-3527-9C0B-8E668A208133"><apiname>ImageProcessor::CImgProcessor::CurrentSizeL() </apiname></xref> function. </p> <p id="GUID-F956698F-28B3-5CFB-9ABC-E4C69688B284"><b>Geometry and orientation
+effects</b> </p> <p>Applying geometry effects and orientation effects to an
+input image is usually a chain process. When all effects have been applied,
+the resulting image may differ in geometry from the original source image.
+Hence, the resulting image defines a new area called the current area and
+a new coordinate system called the current coordinate system. Both of these
+are public and can be queried through the Image Processor. The current coordinate
+system starts at the top left corner of the image and expands downwards along
+the y-axis and to the right along the x-axis. </p> <p id="GUID-43A6D850-367B-5A57-8CAA-03113298ED07"><b>Previews</b> </p> <p>You
+can make use of one or more previews when processing an image. A preview defines
+the region on which the image is shown. A preview introduces the preview area
+and the preview coordinate system, both of which are public. The preview coordinate
+system starts at the top left corner of the screen and expands downwards along
+y-axis and to the right along x-axis. </p> <p>Use <xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-AF30A4A2-736E-3256-8C14-31368F0A24E3"><apiname>ImageProcessor::TPreview::PreviewToCurrentCoordL()</apiname></xref> to
+perform coordinate conversion and <xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-CB6994A3-4355-3D67-85BB-8690F37EE0DD"><apiname>ImageProcessor::TPreview::SizeL()</apiname></xref> to
+get the size of the preview area. </p> <p>To convert between preview coordinates
+and current coordinates use the <xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-C38A0CD8-061F-383F-9C0F-06E153FAD477"><apiname>ImageProcessor::TPreview::PreviewToCurrentCoordL(const
+             TPoint&amp;)</apiname></xref> function. To convert between canvas coordinates
+to current coordinates use the <xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-481BCBAC-20B9-3134-A20B-EEEFE92C1C22"><apiname>ImageProcessor::TPreview::CanvasToCurrentCoordL()</apiname></xref> function. </p> <p>It
+can be useful to know the current size of the session image, that is, the
+size of the image after any effects and cropping have been applied, by using
+the <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-1D0573C2-611F-3527-9C0B-8E668A208133"><apiname>ImageProcessor::CImgProcessor::CurrentSizeL()</apiname></xref> function. </p> <p id="GUID-BB35B339-CFB6-54CB-9D20-308EEB82225F"><b>Preview canvases</b> </p> <p>Each
+preview contains a sub-region called the canvas. When the resulting image
+is scaled to fit the preview area, while preserving aspect ratio, the actual
+image data will not cover the entire screen and the areas outside the image
+are filled with a background colour. The area containing the image data is
+always referred to as the canvas. A canvas introduces the canvas area and
+the canvas coordinate system, both of which are public. The canvas coordinate
+system starts at the top left corner of the canvas and expands downwards along
+the y-axis and to the right along the x-axis. </p> <p>Use the <xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-481BCBAC-20B9-3134-A20B-EEEFE92C1C22"><apiname>ImageProcessor::TPreview::CanvasToCurrentCoordL()</apiname></xref> to
+perform coordinate conversion and<xref href="GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495.dita#GUID-9CBD93A5-1916-31C4-A974-213FCD7A5495/GUID-A69588CB-8BF2-3FA9-806A-216CA460E912"><apiname>ImageProcessor::TPreview::CanvasAreaL()</apiname></xref> function
+to return the size and location of the canvas area. </p> <p id="GUID-1187E33F-1EA4-57A0-BC12-1810A48CF61B"><b> Zoom and Pan settings</b> </p> <p>Zoom
+and Pan settings do not introduce their own areas or coordinate systems. In
+this regard, Zoom and pan are equivalent to a preview. </p> <p id="GUID-7DA27E76-C144-5784-9748-2839766B9A52"><b>Overlay images</b> </p> <p>Overlay
+images define their own overlay coordinate system and overlay area. The coordinate
+system of an overlay image is public. The overlay coordinate system and overlay
+are rarely used since they are not treated as separate objects once they are
+applied to the source image. The overlay is treated as part of the original
+image data after insertion. </p> <p>However, the coordinate system of an overlay
+image is relevant for defining its anchor point to the source image. The overlay
+area can be queried from Image Processor instances that expose overlay operations.
+The overlay coordinate system starts at the centre of the overlay image and
+expands to the left along the negative side of the y-axis, upwards along the
+negative side of the x-axis, to the right along the x-axis and downwards along
+the y-axis. </p> </section>
+<section><title>Applying overlay and border effects</title> <p>It is possible
+to add borders (frames) and overlays to your input image. For example, you
+might want to add a logo to an image or add a pair of sunglasses to a picture.
+To use a border effect, call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-EF0B943B-C58D-39AD-AAA3-ABEE11033A8C"><apiname>ImageProcessor::CImgProcessor::EffectL(KEffectBorderUid)</apiname></xref>. </p> <p>Border
+images are images with alpha channels. The border is automatically stretched
+to fit the input image. </p> <p>To use overlay effect, call <xref href="GUID-13E30312-DD05-3581-9A59-C3569A981657.dita#GUID-13E30312-DD05-3581-9A59-C3569A981657/GUID-08855134-3A4C-3BE5-B817-73342FFD5CCE"><apiname>ImageProcessor::CImgProcessor::OverlayL()</apiname></xref>. </p> <p>There
+are two ways to insert an overlay to an image, either from a file or from
+memory. If you load the overlay from a file, both PNG and JPEG are accepted,
+but you will only have the transparency option if you use a PNG image. The
+overlay is managed through the interface <xref href="GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7.dita#GUID-9E5136D1-B8BE-3CE4-9A20-39D672E31EC7/GUID-95D515E0-F751-3703-8FD1-80F9B8870E16"><apiname>ImageProcessor::TOverlay</apiname></xref>. </p> <p>You
+can specify the position, the scale, and the angle of the overlay. The position
+must be given in current coordinates. The scale ranges from 0.0 to infinity,
+where 1.0 represent no scaling. The angle ranges from 0.0 degrees to 360.0
+degrees. To begin inserting the overlay the <xref href="GUID-95D515E0-F751-3703-8FD1-80F9B8870E16.dita#GUID-95D515E0-F751-3703-8FD1-80F9B8870E16/GUID-E1255D4A-714D-31A8-9E5E-CCBFF477E2F4"><apiname>ImageProcessor::TOverlay::BeginL()</apiname></xref> function
+must be called. The code example below illustrates the scale effect and the
+angle of the overlay effect. </p> <p>When the overlay is in place you must
+call <xref href="GUID-95D515E0-F751-3703-8FD1-80F9B8870E16.dita#GUID-95D515E0-F751-3703-8FD1-80F9B8870E16/GUID-B3250D2E-CBCB-357C-82CA-7A7B35045CAE"><apiname>ImageProcessor::TOverlay::EndL()</apiname></xref> to conclude the overlay. </p> <p>The
+code examples below describe some common scenarios: </p> <ul>
+<li id="GUID-A2AA2186-067D-571C-AC58-14E97050ED49"><p>You want to insert an
+overlay image in the centre of the image you see on the screen. The scale
+is set to 1.0 and the angle is set to 0 degrees. It is crucial to distinguish
+between canvas coordinates and current coordinates. </p> </li>
+<li id="GUID-24318F41-42F7-5297-B022-6914FB78B381"><p>After the overlay is
+started you want to double its size, rotate it 45 degrees clockwise, and move
+it down ten screen pixels. </p> </li>
+</ul> <codeblock id="GUID-A558142D-8C96-5DB8-B2AF-277C645BE47D" xml:space="preserve">
+
+    TPoint overlayPosition(0,0);
+
+    // Get preview canvas rectangle 
+    TRect canvasArea = preview-&gt;CanvasAreaL();
+        
+    // Set overlay position to the center of the preview canvas area     
+    overlayPosition.iX = (canvasArea.iBr.iX - canvasArea.iTl.iX) / 2;
+    overlayPosition.iY = (canvasArea.iBr.iY - canvasArea.iTl.iY) / 2;
+    
+    // Convert the preview canvas coordinates to the input current coordinates  
+    TPoint tmp(0, 0);
+    preview-&gt;CanvasToCurrentCoordL(overlayPosition, tmp);
+    overlayPosition = tmp;
+     
+    // Get TOverlay interface
+    TOverlay* overlay = imageProcessor-&gt;OverlayL();
+    
+    // Begin the overlay with a overlay file
+    overlay-&gt;SetInputL(KInputOverlayFileName, KImageTypePNGUid);
+    overlay-&gt;BeginL();
+
+    // Set overlay with 1.0 x/y scale (un-scaled), position at the center of the preview canvas, 0.0 angle (no rotation)
+    overlay-&gt;SetL(1.0f, 1.0f, overlayPosition, 0.0f);
+
+    // we can check what this looks like by rendering to the preview
+    preview-&gt;RenderL();
+
+    // We can then double the size of the overlaid, rotate it 45 degrees clockwise 
+    // and move it down ten screen pixels.
+    TReal32 overlayScaleX = 0.0f;
+    TReal32 overlayScaleY = 0.0f;
+    overlay-&gt;GetScaleL(overlayScaleX, overlayScaleY);
+
+    overlayScaleX *= 2.0f;
+    overlayScaleY *= 2.0f;
+
+    TReal32 overlayAngle = overlay-&gt;AngleL();
+
+    // Rotate the overlay 45 degrees 
+    overlayAngle += 45.0f;
+    if (overlayAngle &gt;= 360.0f)
+        {
+        overlayAngle = overlayAngle - 360.0f;
+        }
+
+    // Move down the position of the overlay 10 screen pixels
+    overlayPosition = overlay-&gt;PositionL();
+    overlayPosition.iY += 10;
+
+    // Set overlay with new parameters
+    overlay-&gt;SetL(overlayScaleX, overlayScaleY, overlayPosition, overlayAngle);
+
+    // Apply overlay parameters and finish with overlay
+    overlay-&gt;EndL();
+
+    preview-&gt;RenderL();
+
+</codeblock> </section>
+
+<example><p/></example>
+<section><title>See also</title> <p><xref href="GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita">JPEG
+Image Transform Extension Guide</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F2289115-B1F0-595D-AA1C-3E01F08911CA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F2289115-B1F0-595D-AA1C-3E01F08911CA" xml:lang="en"><title>Hardware Resource
+Manager</title><shortdesc>This section describes Hardware Resource Manager (HWRM). HWRM manages
+aspects of device hardware such as light, power and vibration. It also provides
+APIs to control these hardware elements, and to get the status of these hardware
+elements. </shortdesc><prolog><metadata><keywords/></metadata></prolog></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F2397B5A-0700-46D5-8E07-CBB9F769DA01.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F2397B5A-0700-46D5-8E07-CBB9F769DA01" xml:lang="en"><title>Getting
+user selection from the choice list</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Every time the choice list's status changes, e.g. when the user opens or
+closed the list or selects an item from the list, the client application is
+informed through the <codeph>MCoeControlObserver</codeph> interface. </p>
+<p>Notifications are received by the <codeph>HandleControlEventL</codeph> callback
+function in the class <codeph>MCoeControlObserver</codeph>. The event is <codeph>EEventStateChanged</codeph>.</p>
+<p>After receiving the event, the client application can use the choice list's <codeph>SelectedIndex</codeph> method
+to request if the selection has changed. </p>
+<codeblock xml:space="preserve">void CMyAppContainer::HandleControlEventL( CCoeControl* aControl,
+                                                  TCoeEvent aEventType )
+    {
+
+     if ( aControl == iChoiceList )
+        {
+        switch ( aEventType )
+            {
+            case EEventStateChanged:
+                {
+                TInt newSelection = iChoiceList-&gt;SelectedIndex();
+                if ( iSelection != newSelection )
+                    {
+                    // selected item changed
+                    iSelection = newSelection;
+                    }
+                }
+                break;
+                    
+            default:
+                break;
+            }
+        }
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F23BB1F1-CF90-597F-8410-34AB8B567501" xml:lang="en"><title>PIM
+Subsystem Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-201D8954-325A-422C-94D3-772274154AF9"><title>Purpose</title> <p>This
+document describes storage, organisation and utility functionalities within
+Symbian platform Personal Information Management (PIM) technology, as defined
+by its subsystems: Application Engines and Application Services. </p> </section>
+<section id="GUID-78706FAF-6F53-4DFD-B77B-BA44C5E087B2"><title>Key Concepts</title> <p> <i>Application
+Engines</i> - provide PIM data storage and manipulation. </p> <p> <i>Application
+Services</i> - provide a collection of utility components.</p> <p> Application
+Engines and Application Services enable user applications to acquire, organise,
+maintain, and retrieve personal information. </p> <p> <i>Subsystem</i> - a
+cohesive group of components within a single technology. </p> <p> <i>Component</i> -
+the smallest unit of architectural significance and the finest grained unit
+of description. </p> </section>
+<section id="GUID-A76EE4BC-565F-4F5E-8943-1F9BE03B4D07"><title>Architectural
+Relationships</title> <p>PIM <xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita">Application
+Services</xref> technology delivers high-level OS services for storage and
+manipulation of user data (such as a collection of Calendar and Contacts items).
+PIM subsystem components are part of Application Engines and Application Services.
+The Symbian platform Generic Middleware layer contains the following PIM components:
+Alarm Server, Time Zone Server and Help Model. </p> <p>All the components
+are contained between the OS Services layer and the User Interface layer. </p> <p>Key
+clients of these components are licensee applications that use subsystems
+such as Telephony, SyncML and Messaging. </p> <fig id="GUID-5335C9B9-5C4E-5673-AB93-59C921C3AC58">
+<title>PIM Subsystem components are part of the Application Services and Generic
+Middleware layers</title>
+<image href="GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e347864_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-AEA465F8-77B5-45A6-B5A4-12083A9008F4"><title>Application
+Engines</title> <p>Application Engines provide data storage and manipulation
+for user data. </p><ul>
+<li><p><xref href="GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0.dita#GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0/GUID-85D629ED-30D4-5608-A816-07BD375C6A76">Calendar</xref> enables
+management of calendar entries and provides access to calendar stores. The
+CalInterimAPI library is the Calendar data store. </p></li>
+<li><p>The <xref href="GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0.dita#GUID-A1227CAE-EE08-5EAF-8D15-81465467C0C0/GUID-5F20F757-46F6-5652-AB0F-6B22DBB61111">Contacts
+model</xref> provides a unified interface for managing contact information. </p></li>
+</ul> </section>
+<section id="GUID-D6AC13D1-3C9F-44B2-8691-3F4583E7D805"><title>Application
+Services</title> <p>Application Services are used by multiple application
+engines or applications running on Symbian OS. </p> <ul>
+<li><p><xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita#GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48/GUID-8BD6CF61-80B6-5869-AB85-F572C590DB30">Alarm
+Server</xref> maintains a queue of system-wide alarms. </p></li>
+<li><p><xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita#GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48/GUID-32519F1C-429A-59C9-B945-D0B1F81A0AA5">Calendar
+Conversion</xref> converts dates between Gregorian and Chinese lunar calendar
+dates for applications requiring Chinese date support. </p></li>
+<li><p><xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita#GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48/GUID-6EB921E1-0048-5388-8983-87172763FAB3">Help
+model</xref> manages a collection of files that provide context-sensitive
+help information. </p></li>
+<li><p>Notepad API is a middleware tool that you can write simple text to
+and save for future reference. </p>  </li>
+<li><p>The Calendar Interim Utils2 is an Organizer API that provides methods
+you can use to keep track of your time, extending APIs from Symbian OS. It
+displays the individual days of a given time period. You can add notes and
+memos to these dates to organize your schedule.</p>  </li>
+<li><p>Phonebook APIs provide methods useful in creating a contacts database
+and performing various operations on it. These APIs expand on the Contact
+model.</p>  </li>
+<li><p><xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita#GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48/GUID-4268D6AA-F468-5461-88A2-D6852D4AC69A">Time
+zone localization</xref> provides localized versions of time zone and city
+names. </p></li>
+<li><p><xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita#GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48/GUID-D30706E5-7191-5349-A883-C200B73AFED1">Time
+zone server</xref> allows clients to obtain accurate conversion between any
+time expressed in UTC and local time for a user's time zone. </p></li>
+<li><p><xref href="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita#GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48/GUID-9DFB0954-9CDF-5DAF-BA7A-54A1D64833F7">Versit</xref> is
+a set of utility classes that support the import and export of data that is
+formatted according to a set of standards initially defined by the Versit
+consortium. </p></li>
+</ul><p>There are no strong relationships between any of the subsystem components.
+They are presented as a subsystem because they enable development of a set
+of related applications.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F2489DE2-18E2-5C5B-A174-49B5B7A64A7C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-F2489DE2-18E2-5C5B-A174-49B5B7A64A7C" xml:lang="en"><title>Feature
+Manager Reporting Tutorials</title><shortdesc>This document introduces tutorials on the use of Feature Manager
+to report on features. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq id="GUID-FD20E3E0-AF1E-5616-AEA6-70728E592927"><p>Before you start,
+you must: </p> <ul>
+<li id="GUID-E4632D3B-BB67-5A83-917B-8A94AB458081"><p>Understand what is meant
+by a feature, feature sets and feature data in Symbian platform. </p> </li>
+</ul> </prereq>
+<context id="GUID-7E737BC7-A7C3-52E0-939C-31DF0144E850"><p>A feature on Symbian
+platform encapsulates information such as the presence or absence of some
+item of hardware or software on the device. These tutorials explain how to
+use Feature Manager to report on that information. </p> </context>
+</taskbody><related-links>
+<link href="GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita"><linktext>Feature Manager
+Overview</linktext></link>
+<link href="GUID-1568493D-0384-5FBD-816B-60A4817CEF0C.dita"><linktext>Feature Manager
+Guide</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F25862A3-51E5-581A-9CC9-964791781E69.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F25862A3-51E5-581A-9CC9-964791781E69"><title> Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Camera Plugin Support API. </p> <section><title>Purpose</title> <p>This API is implemented as an Ecom plug-in. </p> <p><b>Camera Plugin Support Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-9A4C35C5-5665-5313-91C5-61F3D490F3FD"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-87544794-C402-3462-B1B2-D4D8324DA7B3.dita"><apiname>ecampluginsupport.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-645E6782-2610-3E79-A6A8-66A65C325E5F.dita"><apiname>euser.lib </apiname></xref>  </p> <p> <xref href="GUID-84849911-AE12-3CCA-8C3C-3A0EDEFE9CAF.dita"><apiname> ecom.lib</apiname></xref>  </p> <p> <xref href="GUID-B03B32E5-C35F-34F6-9777-161E6956BDF0.dita"><apiname> mmcommonutils.lib </apiname></xref>  </p> <p> <xref href="GUID-B4E2E996-CFBE-3156-B02D-D0F2F634B3C7.dita"><apiname>ecam.lib</apiname></xref>  </p> </entry> <entry><p>These files are used for implementing the Camera Plug-in Support functionalities. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Description</title> <p>When a new camera object is required, the Ecam library requests a camera plug-in from the Ecom framework. When more than one ROM based plug-ins have been registered on the platform, the one with the highest version defined in its resource file is selected. </p> <p>Symbian version of the plug-in is a stub intended for replacement by an alternate implementation. </p> <p>ECam implementation provides static information about camera support to the client, by deriving from <xref href="GUID-F3807F58-762D-3D28-9831-81FABE614FE2.dita"><apiname>CcameraInfoPlugin()</apiname></xref>. Method <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-69ABA39B-E369-3CB6-AA07-6E8CE01C0D18"><apiname>Ccamera::CamerasAvailable()</apiname></xref> is implemented through concrete implementation of <xref href="GUID-94C787BB-4666-3D99-8FCF-53E58D7EFDD7.dita"><apiname>CcameraInfoPlugin</apiname></xref> virtual method. Implementers need to register support for the interface <xref href="GUID-D7036F17-3019-3ABB-8D99-3A67B908C2F0.dita"><apiname>KuidOnboardCameraPlugin</apiname></xref> in their resource file. </p> </section> <section><title> Camera Plugin Support Key Classes</title> <p>All cameras are Ecom plug-ins sub-classed from <xref href="GUID-7243A080-5D9D-3176-8A61-1018DD1A2D0E.dita"><apiname>CcameraPlugin</apiname></xref> class and register support for the interface <xref href="GUID-D7036F17-3019-3ABB-8D99-3A67B908C2F0.dita"><apiname>KuidOnboardCameraPlugin</apiname></xref> in their resource file. The key classes that make up the Camera Plug-in Support API is <xref href="GUID-7243A080-5D9D-3176-8A61-1018DD1A2D0E.dita"><apiname>CcameraPlugin</apiname></xref>. </p> </section> <section><title>Using Camera Plugin Support</title> <p>The current implementation of the camera expects cameras to be implemented as Ecom plug-ins. The ROM plug-in with the highest version is selected at instantiation phase. The plug-in implements <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita"><apiname>CCamera</apiname></xref> interface, defined in <filepath>ECam.h</filepath>. </p> </section> <section><title>See also</title> <p><xref href="GUID-36C3A2FD-F4F9-5B8C-91B7-40C29B3D2224.dita">Overview</xref> of the Camera component </p> <p><xref href="GUID-93D08C5F-D864-59E3-963D-D836EBE88B4D.dita">Camera Plug-in Support Tutorial</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA"><title>MVS GUI layout</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The MVS GUI is shown below. </p> <fig id="GUID-1AF83588-2D14-5E7E-BCDD-03C5C69C6BC5"><image href="GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e303096_href.jpg" placement="inline"/></fig> <p>This example shows the GUI while an audio file is playing, and includes the <i>tool bar</i> (at the top), the <i>information pane</i> (in the middle), and the <i>status bar</i> (at the bottom). </p> <section id="GUID-FF49918A-EFE9-5229-9D33-BFF4BFA0589D"><title>Tool bar</title> <p>The tool bar buttons let you control the currently loaded media file. </p> <fig id="GUID-06D94739-5307-5E82-96E1-54F3A6549D49"><image href="GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e303118_href.jpg" placement="inline"/></fig> <p>From left to right, the buttons let you: </p> <ul><li id="GUID-C72779C2-5E2C-5046-B9E3-E06D827271A0"><p>play, pause, stop and record a file. These buttons have the standard symbols for AV devices. </p> </li> <li id="GUID-2C8E573E-3ADC-5DDA-AE25-BB63B8DEADD8"><p>set the number of repeats for the file (curved arrow) </p> </li> <li id="GUID-98D0DC06-BD8C-5B1C-BDFF-7FB84329F394"><p>set the playback sound volume (megaphone) </p> </li> <li id="GUID-5C398E1F-72A5-5452-BE64-BAFAD6FFDB9B"><p>set the stereo balance (arrows pointing left and right) </p> </li> <li id="GUID-175E38F7-B9D7-5DF0-A773-697AC3CCF38E"><p>fast reverse the file (standard symbol) </p> </li> <li id="GUID-CE6D7209-C28B-543E-9385-6C5E933FBC4C"><p>fast forward the file (standard symbol). </p> </li> </ul> </section> <section id="GUID-F1855632-55B6-5166-A6D4-AA25B9E49619"><title> Information pane</title> <p>The information pane displays details of the current media file: </p> <fig id="GUID-4A04B009-8C40-5D58-8845-C948EA2686E4"><image href="GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e303164_href.jpg" placement="inline"/></fig> <ul><li id="GUID-7ECA742E-76B1-5213-BE36-98DF260C507E"><p>The state of the file: AUDIO or VIDEO, PLAYING, RECORDING, PAUSED or STOPPED </p> </li> <li id="GUID-3836D4DB-8E7B-5760-8B03-392D80A73E19"><p>The sound volume as a percentage of the maximum </p> </li> <li id="GUID-82F4740B-E815-592A-9C06-CB2923892D60"><p>The sound balance: Left, Right or Centre </p> </li> <li id="GUID-E5C2029E-3A26-500E-BFFD-973C037462C7"><p>The number of times the file contents are played </p> </li> <li id="GUID-8A095F9C-6CD1-502D-A83A-1761D5A62D68"><p>The audio priority </p> </li> <li id="GUID-A4F71FAB-5CBB-59A0-A6BA-D35207AAA720"><p>The length of the clip in milliseconds </p> </li> <li id="GUID-1B6FE708-ADAA-5F2E-BA34-5A6EAD08DADB"><p>The bit rate (per second). </p> </li> </ul> <p>When the a video file is loaded, the pane also contains: </p> <ul><li id="GUID-38FB830E-56B6-528D-9D03-4187FA2B1CA6"><p>The frame size </p> </li> <li id="GUID-F29E6C2E-E295-5B39-A1B4-31E275A54E51"><p>The frame rate. </p> </li> </ul> </section> <section id="GUID-C882C16C-FDC3-5AA9-829B-462B23095AD9"><title> Status bar</title> <p>The status bar displays the current state of the GUI. </p> <fig id="GUID-D663F227-CD76-5A90-B448-F9EE9BA49DF3"><title>
+             Status bar 
+          </title> <image href="GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e303230_href.jpg" placement="inline"/></fig> <p>From left to right, the boxes show: </p> <ul><li id="GUID-5306E258-5F20-5ED0-943A-AAB6CE5543B2"><p>The path and name of the file (if any) being recorded or played. </p> </li> <li id="GUID-F49E1C65-FDCA-5532-89BE-053F4AE63ED1"><p>What the GUI is doing; for example: Recording, Opened, Playing or Idle. </p> </li> <li id="GUID-D9C7EC76-0636-5EED-B64B-CFB2C7BAD39B"><p>The elapsed time of clip being recorded or played, in hours, minutes, seconds and hundredths of a second (centiseconds): hh:mm:ss:cs. </p> </li> </ul> </section> <section><title>See Also</title> <p> <xref href="GUID-8DF29A16-CC33-59D4-BB05-B628DC603A49.dita">Introduction to the MVS</xref> </p> <p> <xref href="GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita">Recording media files</xref> </p> <p> <xref href="GUID-5B966A81-2309-5169-963A-19E52D98A6E8.dita">Playing media files</xref> </p> <p> <xref href="GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita">Editing media files</xref> </p> <p> <xref href="GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita">Configuring and clearing files</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F27A92CB-1C02-562B-A93D-57675C53BFEB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F27A92CB-1C02-562B-A93D-57675C53BFEB_d0e14771_href.png has changed
Binary file Symbian3/SDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e315964_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F2A793F1-A5B5-526B-B147-771D440B13A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F2A793F1-A5B5-526B-B147-771D440B13A2"><title>Bluetooth Extended Inquiry Response</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This is a guide to the Symbian OS Bluetooth implementation of Extended Inquiry Response (EIR). </p> <section><title>Purpose</title> <p>EIR provides information about discoverable devices during a Bluetooth Inquiry. </p> <p><b>Intended audience:</b> </p> <p>This document is intended to be used by Symbian OS licensees and third party application developers. </p> </section> <section><title>Introduction</title> <p>A Bluetooth communication connection is created by two or more devices within a piconet. A device that wishes to create a connection must find which other devices/services are available. The Inquiry is a request sent by a Bluetooth-enabled device (the "Inquiring Device") over a separate physical channel, not within an existing piconet. The Inquiry requests all listening ("discoverable") Bluetooth devices to identify themselves. In the standard Inquiry Response each device responds with their own MAC identifier. The Inquiring Device then has to issue a request to each device to determine the local name and any services that each device can support. Supported services may include stereo headset or FTP. </p> <p>The Extended Inquiry Response (EIR) replaces the standard Inquiry Response and contains additional information. </p> <p>Legacy devices are supported so the set of responses from all devices may include both EIR and standard Inquiry Responses. </p> </section> <section><title>EIR response values</title> <p>The Extended Inquiry Response includes the following: </p> <ul><li id="GUID-01F8A0CA-CA3B-5032-B934-0AA84E41FAF3"><p>device local name </p> </li> <li id="GUID-1D61827C-8B5B-55FD-BCDD-B416292FDED6"><p>service class UUIDs of each service the device supports </p> </li> <li id="GUID-71BE4DDD-4406-5633-AAAA-8A23061242F5"><p>the transmission power </p> </li> <li id="GUID-E5CA163A-26F3-5031-8F2B-C0FB543C51FB"><p>manufacturer specific values </p> </li> </ul> <p><b>Device local name</b> </p> <p>On a device such as a phone handset the device local name may be set by the user. For example, "Tom's Nokia E71". Otherwise the local name defined by the manufacturer, for example "MyTech BT Headset". The EIR data packet is a fixed size so the number of characters available for the device local name may be insufficient for the entire device local name. The data sent is as many characters as fit starting with the first character. The number of characters available depends on how many service IDs are sent and so this length varies from device to device. A flag is available to indicate whether the device local name sent is the complete name or a truncated version. </p> <p><b>Service class UUIDs of each service the device supports</b> </p> <p>A Service Class UUID is a value which identifies a particular type of service/functionality provided by the device. For example, there would be a Service Class UUID to identify a printer, and another Service Class UUID to identify a stereo headset. </p> <p><b>Transmission Power</b> </p> <p>A one byte value containing a transmission power level between -127dBm and +127dBm. The Transmission Power (Tx Power) value is optional. May be used in conjunction with the Received Signal Strength Indicator (RSSI) to calculate pathloss and give an estimate of which of two or more responding devices is physically closer to the Inquiring Device. </p> <p><b>Manufacturer specific values</b> </p> <p>This is a set of 8-bit bytes and all interpretation and structure is entirely down to the specific manufacturer. </p> </section> <section><title>EIR tutorials</title> <ul><li id="GUID-23BDCDE6-F8F1-5FAD-BF2B-F87917DB0558"><p> <xref href="GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita">Processing an Extended Inquiry Response</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE" xml:lang="en"><title>SMS
+MTM Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>SMS MTM provides APIs for sending SMS text messages. This section provides
+an overview of the SMS MTM component. </p>
+<section><title>Description</title> <p>The Messaging Application module provides
+a SMS MTM for handling SMS messages in the Message Store. For further SMS
+support available the Symbian platform, see <xref href="GUID-34E7AAF2-EC62-5BF6-B9E7-C7D346BCDF93.dita">Cellular
+Baseband Services Guide</xref> documentation. </p> <p><b>Supported functionality</b> </p> <p>SMS
+MTM provides functionality to create, store and retrieve an SMS message entry
+in the Message Store, send an SMS, reply to a received SMS and forward existing
+SMS. A reply to a received SMS may include the original message text, including
+any EMS components. </p> <p>SMS that are received by SMS MTM are stored in
+the Message Store. The type and class of the received SMS affects the storage
+of a message. All received class 2 SMS are stored in a non-Symbian platform
+store. </p> <p><b>Storing SMS</b> </p> <p>SMS messages that are received by
+SMS MTM are stored in both the Message Store and a non-Symbian platform store.
+Messages can be moved, copied to, from the non-Symbian platform store and
+the Message Store. The non-Symbian platform store can be enumerated so that
+its contents can be reflected in the folder in the Message Store, except any
+of the standard folders (for example, the global inbox). </p> <p>The type
+and class of the received SMS affects message storage. All received class
+2 SMS message are stored in the class 2 folder in a non-Symbian platform store.
+The class 2 folder is a configurable location in the Message Store and may
+be set to be the global inbox. All received non-class 2 SMS messages are stored
+in the global inbox folder of the Message Store. </p> <p><b>Sending SMS</b> </p> <p>SMS
+MTM can send the message immediately or schedule it for a specific time. Before
+SMS MTM sends an SMS, it checks the global outbox in the Message Store for
+any SMS that are waiting to be sent (these can also be scheduled for sending).
+If an SMS failed to be sent, then the MTM may re-schedule that SMS to be sent
+at a later time. A re-schedule is configurable against the failure error code.
+The schedule send functionality handles this configuration. A SMS that is
+successfully sent is moved to the sent folder in the Message Store by SMS
+MTM. </p> <p>This MTM supports multiple recipients for an SMS message. An
+outgoing SMS message may have multiple recipients. When this message is being
+sent, one message is sent for each recipient. </p> <p><b>BIO messages</b> </p> <p>SMS
+MTM is aware of BIO messages and uses the BIO Framework to tag SMS with the
+appropriate BIO type. This includes support for WAP messages. </p> <p><b>Unsupported
+functionality</b> </p> <p>SMS MTM does not support sending and receiving OTA
+(Over The Air) SMS messages. </p> </section>
+<section><title>Architecture</title> <p>The Messaging Middleware architecture
+defines a framework in which modules (MTMs) can be implemented that provide
+support for particular messaging protocols. A client MTM provides the API
+for application engines to use the protocol. SMS MTM API provides the client
+MTM API, server MTM API, and supporting classes for SMS. </p> <p>SMS MTM integrates
+SMS into the Messaging architecture, so that SMS can be used by a messaging
+client program in a similar way to other message types such as email. SMS
+MTM uses the SMS interface provided by the Telephony sub-system. This provides
+support for 7, 8, and 16-bit text messages, and message concatenation. </p> <p>The
+following figure shows the SMS architecture that Symbian has implemented in
+the Symbian platform. </p> <fig id="GUID-F904EC3A-7292-5A57-BC4E-1C736D24223C">
+<title>              SMS MTM architecture            </title>
+<image href="GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e245297_href.jpg" placement="inline"/>
+</fig> <p><b>SMS Client MTM</b> </p> <p>The SMS Client MTM implements the
+standard set of <xref href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita#GUID-E180D222-CC4F-5007-93FC-C339BBE708BC/GUID-BCFBE2C5-2C90-5E43-9B21-0D80A469CEAB">Client
+MTM APIs</xref> described in <xref href="GUID-E180D222-CC4F-5007-93FC-C339BBE708BC.dita">Client
+MTM</xref>. In addition, it provides the following functionality: </p> <ul>
+<li id="GUID-8044B9F8-BF51-577B-B99A-7E7598172DD7"><p>Access to the <xref href="GUID-790D9BA9-2FB7-3073-AF2F-FFD049C3FD3D.dita"><apiname>CSmsHeader</apiname></xref> object
+that is used to represent the SMS message. </p> </li>
+<li id="GUID-DEDCDE66-84B8-596C-AA2B-0D3E89AF2656"><p>Access to the SMS settings
+stored in the associated SMS service centre. </p> </li>
+<li id="GUID-5FEEE0B8-E58F-5E7A-9A6E-5AD4FB206192"><p>Provides the APIs required
+by SendAs to allow SendAs to create SMS, including setting the BIO type message
+to allow clients of SendAs to send BIO messages, such as vCards and vCals.
+The data of the BIO message is stored in the body text of the SMS. </p> </li>
+<li id="GUID-DF695D34-951B-5B21-8D95-5ACF2699A57B"><p>Simple check for valid
+SMS addresses; an SMS address is considered valid if it contains at least
+one digit. </p> </li>
+<li id="GUID-CBDDD0E5-8BDE-579E-B52F-7DFC40926B07"><p>Reading and writing
+SIM parameters. </p> </li>
+</ul><note> MS receiving is normally done automatically by the Cellular Baseband
+and messaging components, with received SMS messages placed in the Inbox.
+Generic message receiving operations are not supported by the MTM. Also, UI
+functionality, such as SMS message viewing and editing, is not provided by
+Symbian platform.</note> <p>The SMS Client MTM class is <xref href="GUID-C499ABDB-BA30-3D97-A850-D5790FE49634.dita"><apiname>CSmsClientMtm</apiname></xref>. </p> <p id="GUID-752B2A3B-CC1D-50CB-B3BF-113BED635538"><b>SMS Server MTM</b> </p> <p>SMS
+Server MTM implements the <xref href="GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2.dita">Server-side
+MTM</xref> interface, and primarily provides functionality to handle requests
+from the client MTM to send SMS messages. Incoming SMS messages are handled
+by a group of components called SMS watchers. </p> <p>These components provide
+a layer over the SMS support provided in the Narrow Band Protocols Stack subsystem.
+This has SMS stacks for GSM which offer an encapsulation of an SMS message,
+together with the ability to send and receive messages. At the lowest level,
+below the SMS stacks, is the ETel multimode API, which provides low-level
+access to the phone drivers. </p> <p>The SMS Server MTM provides access to
+messages under remote services. It is loaded in the Message Server’s process
+space and handles the following tasks: </p> <ul>
+<li id="GUID-F4EE3024-0E25-5628-BABA-FA3D040844B3"><p>Connecting to remote
+servers to handle updating the cache of SMS messages. </p> </li>
+<li id="GUID-9E768517-6189-59DD-93D4-66EA4DC491CD"><p>Sending messages that
+are copied to remote services when messages are copied to a remote service. </p> <p>The
+SMS Server MTM handles sending of SMS and WAP messages through the SMS stack
+and the WAP stack respectively. To support this, it implements the <xref href="GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD.dita#GUID-D088273D-FAFE-30F6-8D0A-3A62D3DE62FD/GUID-46569C6B-0F24-392E-A649-091D91BAE910"><apiname>CBaseServerMtm::CopyFromLocal()</apiname></xref> function
+inherited from the <xref href="GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2.dita#GUID-963C0F50-A44A-518E-8DB0-42BEBEFD10A2/GUID-54184D61-6325-525D-947F-D86EF8072BFC">Server
+MTM base class</xref>. It implements this for sending SMS and moving the successfully
+sent messages to the <b>Sent</b> folder. When sending the SMS, the Server
+MTM checks the BIO type of the message and uses the BIO database to check
+the transport type for the BIO message. The MTM supports <codeph>ENbs</codeph> that
+is sent through the SMS stack and <codeph>EWap</codeph>, <codeph>EWapSecure</codeph> that
+are sent through the WAP stack. The MTM does not support <codeph>EWsp</codeph> or <codeph>EWspSecure</codeph> although
+the watchers do support receiving them. </p> </li>
+<li id="GUID-8086B93E-6AC2-5BFD-97E4-C95538B4C821"><p>Scheduling messages </p> <p>The
+SMS Server MTM implements scheduled sending API by sub-classing from the Schedule
+send Server MTM. It accepts requests from client applications either through
+the SMS Client MTM's <xref href="GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D.dita#GUID-177AF50B-14EF-3C45-AE22-1FEE5678261D/GUID-05327221-98A9-35FA-BD28-D6323BE449D1"><apiname>CBaseMtm::InvokeAsyncFunctionL()</apiname></xref> API
+or through the <xref href="GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B.dita#GUID-2DA04D96-F0AD-3FDC-9E36-1C27D889AF4B/GUID-43563010-9B4F-31EB-BE83-E7C4C1979677"><apiname>CMsvSession::TransferCommand()</apiname></xref> API to schedule
+messages to be sent or to delete existing schedules. When it receives a request
+to schedule a message, it packages the command and uses the Scheduled Send
+functionality to request that the task scheduler ask it to send the messages
+at a future point in time. </p> </li>
+<li id="GUID-BE3E335F-900E-5C7A-A5AE-CDCD1DEEF5FE"><p>Managing phone store </p> <p>The
+phone store is a storage for SMS outside the Message Store. For example, for
+GSM phones it is the <b>SIM</b>. The SMS Server MTM accepts requests from
+client applications to copy or move messages to and from the SIM and delete
+messages from the SIM. For example, when copying to the SIM, it packages SMS
+and passes it to the SMS stack with a request to write it to the SIM. If the
+class2 folder is set in the SMS settings class, the Server MTM copies the
+SMS to the SIM and then updates the SMS in the message store. The Server MTM
+also provides the details of the space used to store on the SIM and the reason
+for storing on the SIM. </p> </li>
+<li id="GUID-096F78F8-44B0-5F35-84C7-ED6E312C2E60"><p>Providing SIM parameters </p> <p>The
+Server MTM provides functions to read and write SIM parameters. </p> </li>
+</ul> <p>The SMS Server MTM class is <xref href="GUID-1CC9D9DD-4C6A-3B71-8006-E0289E4C8C62.dita"><apiname>CSmsServerMtm</apiname></xref>. </p> <p><b>SMS
+Utilities</b> </p> <p>SMS Utilities provide the following: </p> <ul>
+<li id="GUID-09858DED-EBC8-5C22-AB67-E1F20ECE617A"><p>Classes to represent
+and store SMS (<xref href="GUID-790D9BA9-2FB7-3073-AF2F-FFD049C3FD3D.dita"><apiname>CSmsHeader</apiname></xref>), and SMS settings (<xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref>, <xref href="GUID-D96E6D26-0D1A-36B4-85E1-63DA127F099A.dita"><apiname>CSmsMessageSettings</apiname></xref>)
+and a SMS number (<xref href="GUID-6DB3A42E-14FC-3B87-AB8E-7C05CA34B3AB.dita"><apiname>CSmsNumber</apiname></xref>). </p> </li>
+<li id="GUID-8B55A758-1104-5C58-A428-4DD7F2562DB9"><p>Functions to generate
+descriptions and details fields to store with SMS. The details includes decoding
+special messages (such as, message indication and status report messages),
+reading resource file for descriptions strings of special messages, and using
+the contacts database to replace phone numbers with names. </p> </li>
+<li id="GUID-5F410D35-D654-5CBC-8E52-6E6400D929B1"><p>Function to validate
+a GSM number. </p> </li>
+<li id="GUID-2C531B06-90D4-5F75-BD85-60330DCBE81C"><p>Mode to find the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> of
+the SMS service entry. </p> </li>
+</ul> <p><b>SMS Watchers</b> </p> <p>SMS Watchers are made up of two watchers,
+the <filepath>nbswatcher.dll</filepath> and the <filepath>wapwatcher.dll</filepath>,
+and some common base classes in <filepath>biowatcher.dll</filepath>. The watchers
+listen for incoming messages from the SMS Stack, part of Cellular Baseband
+Services, and the WAP stack, part of High-level Internet Protocols. </p> <p><b>SMS
+Stack</b> </p> <p>SMS Stack is one of a number of protocol stacks that is
+supported by the ESock Server client-server framework. The SMS Stack’s principal
+clients are the messaging applications, WAP Stack and third party applications.
+The Messaging Application and the third party applications access the stack
+as clients of the ESock Server, while the WAP Stack accesses directly the
+SMS Stack. For more information on SMS Stack, see <xref href="GUID-E0DA7DE7-FD5A-5C1D-A53C-870966F00445.dita">SMS
+Stack for GSM Networks</xref>. </p> <p><b>SMS service settings</b> </p> <p>Settings
+for SMS connections, such as service centre addresses, are stored in the Message
+Store (<xref href="GUID-8CB90FA2-A6CF-3FA2-81FF-7D22EFD9C2CE.dita"><apiname>CMsvStore</apiname></xref>) for the SMS service entry. Encapsulation
+of service settings is provided by <xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref>. </p> <p><b>Progress
+information</b> </p> <p>The progress information can be obtained for messaging
+operations. For SMS operations, progress information includes such things
+as type of operation, and number of messages processed. Progress information
+is provided by <xref href="GUID-25FA6A20-1122-3B06-B8AF-59D3FDBDDC76.dita"><apiname>TSmsProgress</apiname></xref>. </p> </section>
+<section><title>APIs</title> <fig id="GUID-EABD829F-612D-53DF-BFDF-1F4E27FD4FD8">
+<image href="GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e245569_href.jpg" placement="inline"/>
+</fig> <p>The following are the important classes for SMS Client MTM: </p> <table id="GUID-8C815D5D-0494-5507-8A7D-275641BFF71D">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Class</b>  </p> </entry>
+<entry><p> <b>Purpose</b>  </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-C499ABDB-BA30-3D97-A850-D5790FE49634.dita"><apiname>CSmsClientMtm</apiname></xref>  </p> </entry>
+<entry><p>Implements the messaging architecture client MTM interface for SMS.
+It allows messages to be created, replied to, and forwarded, and MTM-specific
+commands to be given. </p> <p>It provides an accessor function <codeph>SmsHeader()</codeph> to
+get the <codeph>CSmsHeader</codeph> for a message. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-790D9BA9-2FB7-3073-AF2F-FFD049C3FD3D.dita"><apiname>CSmsHeader</apiname></xref>  </p> </entry>
+<entry><p>Encapsulates an SMS message in a message store. </p> <p>It provides
+information about message recipients as an array of <xref href="GUID-6DB3A42E-14FC-3B87-AB8E-7C05CA34B3AB.dita"><apiname>CSmsNumber</apiname></xref> objects,
+and access to the family of classes derived from <xref href="GUID-A57B70F4-3F29-31AC-9763-FE5DE25E85CC.dita"><apiname>TMsvMessageBio</apiname></xref>,
+which allow fields of a message to be set and accessed. </p> <p>For compatibility
+with the API of the v8 (GSM only) SMS MTM, it also provides access to the
+GSM SMS stack's message class <xref href="GUID-FA6D9B1B-3845-3B81-ACBB-34977D3C9631.dita"><apiname>CSmsMessage</apiname></xref>. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-ABF26927-F794-39D1-97B2-C7CD447224DF.dita"><apiname>TMsvMessageGsm</apiname></xref>  </p> </entry>
+<entry><p>Provides access to GSM-specific fields. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-920DFEAD-41A4-3586-98F0-BA0FEEC2FD13.dita"><apiname>TMsvSmsEntry</apiname></xref>  </p> </entry>
+<entry><p>Provides a specialisation of the message server index class <xref href="GUID-5A23B804-2C06-3407-9D48-1BFB212D699F.dita"><apiname>TMsvEntry</apiname></xref> for
+SMS message entries. </p> <p>Putting selected SMS-specific fields in the index
+entry allows message clients to quickly get important message properties without
+having to create a message object. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-6DB3A42E-14FC-3B87-AB8E-7C05CA34B3AB.dita"><apiname>CSmsNumber</apiname></xref>  </p> </entry>
+<entry><p>Encapsulates recipient information for an SMS message. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A9FE5C23-4F39-345E-873B-682D9807BAA0.dita"><apiname>CSmsSettings</apiname></xref>  </p> </entry>
+<entry><p>Defines settings for the SMS service. </p> <p>It contains some GSM-specific
+functions to maintain compability with the GSM SMS MTM. </p> <p>It also provides
+access to <xref href="GUID-CFD9E5F2-F28F-3A95-A53A-34030345EAF9.dita"><apiname>CSmsMessageSettingsProxy</apiname></xref> for outgoing message
+defaults. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-40DD66D7-D08E-3A04-9583-1C5E60E352FF.dita"><apiname>CSmsAccount</apiname></xref>  </p> </entry>
+<entry><p>Stores SMS service and Schedule Send settings to Central Repository. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-9BD25A7F-4A9E-3469-BA7F-F016E2ED8BFC.dita"><apiname>CSmsServiceCenter</apiname></xref>  </p> </entry>
+<entry><p>Used to store Service Centre numbers and their associated name. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+</conbody><related-links>
+<link href="GUID-69438F28-E2E9-5BFA-B644-08FB59D50A39.dita"><linktext>SMS MTM Concepts</linktext>
+</link>
+<link href="GUID-8B843382-D27A-5E36-8F60-304903F3AA41.dita"><linktext>Message Type
+Module</linktext></link>
+<link href="GUID-E56E21A9-B545-5217-A877-E64D30275157.dita"><linktext>Using the
+Policy Evaluator Plug-in</linktext></link>
+<link href="GUID-A2408186-1927-45F4-8972-C9273E5135CF.dita"><linktext>SMS
+                Tutorial</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e102769_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-F2E86FB3-C634-5CF9-87B2-EAB18BF25C4B"><title> TLS Look-up Reduction Tutorial </title><shortdesc>This task describes how to reduce Thread Local Storage (TLS) look-ups when allocating MBufs. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><context id="GUID-67DCAC1D-896C-55B3-96E8-C38A93B7EFDE"><p>If you allocate an MBuf with a simple <codeph>RMBufChain::Alloc()</codeph> or <codeph>RMBufChain::Alloc(size)</codeph> call, the thread performs a context-switch to retrieve the pointer to the Comms pond from the TLS. The context-switch is a processor-intensive operation. To reduce the number of TLS look-ups, use a <xref href="GUID-5E763DBF-2C22-3335-9D80-89783095D5AA.dita"><apiname>RMBufAllocator</apiname></xref> object, which keeps a local copy of the pointer to the pond. </p> <p>The <codeph>RMBufAllocator</codeph> acts as a cache so that the allocation methods do not need to perform a TLS look-up each time they are called. </p> <p>The classes that frequently allocate Comms chains define the <codeph>RMBufAllocator</codeph> object as a member, instantiate it once, and then pass it to the methods of the <xref href="GUID-E0ADB108-D3B2-3670-907D-2AE595BECE3F.dita"><apiname>RMBuf</apiname></xref> and <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita"><apiname>RMBufChain</apiname></xref> classes. For most of the methods that may cause an allocation, such as <codeph>Alloc()</codeph>, <codeph>Append()</codeph> or <codeph>Split()</codeph>, you should call the overloaded version that passes a <codeph>RMBufAllocator</codeph> parameter. There is no TLS look-up when you call these functions. </p> </context> <example id="GUID-6C44C52D-BEA1-5350-8872-27A3D83A46BF"><title>Reduce TLS look-up example</title> <p>The following example creates an <xref href="GUID-5E763DBF-2C22-3335-9D80-89783095D5AA.dita"><apiname>RMBufAllocator</apiname></xref> object and uses it when allocating MBufs: </p> <codeblock id="GUID-C8598472-3A6C-5122-99B8-BAFA49658A12" xml:space="preserve">class RDataSource {
+   private:     
+      // [...]
+      RMBufAllocator iAllocator;
+                        RMBufChain iReceived;
+
+public: 
+      // [...]
+      TInt InitBuffer();
+
+}
+
+// [...]
+
+TInt InitBuffer()
+{
+   // Request buffer and provide the allocator
+   iReceived.Alloc(1204,iAllocator);
+}
+
+</codeblock> <p>See the reference documentation of <xref href="GUID-E0ADB108-D3B2-3670-907D-2AE595BECE3F.dita"><apiname>RMBuf</apiname></xref>, <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita"><apiname>RMBufChain</apiname></xref>, <xref href="GUID-4FB33BFE-DCF7-3B77-A447-F9C049DF86CB.dita"><apiname>RCommsBuf</apiname></xref>, and <xref href="GUID-107ADE6D-7AFF-3B07-9606-BCA33A3B63EF.dita"><apiname>RCommsBufChain</apiname></xref> for the list of methods passing an allocator. </p> </example> </taskbody><related-links><link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> <link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf)
+                and Comms Chains</linktext> </link> <link href="GUID-F0891698-F714-55AA-A089-790BB0B07AE4.dita"><linktext>Allocation tutorial</linktext> </link> </related-links></task>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e166448_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F3090A98-267F-5310-83F4-93FD5CB760D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F3090A98-267F-5310-83F4-93FD5CB760D6" xml:lang="en"><title>Using
+CCirBuf</title><shortdesc>This document describes how to use CCirBuf.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-92DAE8AD-1D5A-40CA-AA36-C1E0A3648D77"><title>Before adding/removing objects</title> <p>The buffer itself
+is not allocated until <xref href="GUID-FA17C8AD-BF8C-3FD4-98AE-43AF55A9D318.dita#GUID-FA17C8AD-BF8C-3FD4-98AE-43AF55A9D318/GUID-4658AA47-E3E6-3325-A4DF-FACADFA5BBB2"><apiname>CCirBufBase::SetLengthL()</apiname></xref> is called.
+Therefore, the first steps must always be to construct the <xref href="GUID-1D73835F-4361-3216-8EFC-669364E3F5E7.dita"><apiname>CCirBuf</apiname></xref> object
+and then call its <codeph>CCirBufBase::SetLengthL()</codeph> member function.</p> <p>Also
+note that <codeph>SetLengthL()</codeph> can leave so it's useful to call it
+under a trap harness.</p> <codeblock id="GUID-FED3E087-48D8-53EC-911D-12475D2B8905" xml:space="preserve">class Test
+ {
+public:
+ Test(){a=b=0;}
+ Test(TInt anInt){a=b=anInt;}
+private
+ TInt a;
+ TInt b;
+ };</codeblock> <codeblock id="GUID-3AAF1D67-BB67-5019-9D11-AB17E18254A3" xml:space="preserve">
+CCirBuf&lt;Test&gt;* cbInt=new CCirBuf&lt;Test&gt;;
+TRAPD(ret,cbInt-&gt;SetLengthL(3));            // max capacity is 3
+                                            // and allocates buffer
+Test one(1);
+Test two(2);
+...
+cbInt-&gt;Add(&amp;one);     // Can now start adding/removing objects
+...
+delete cbInt;</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e162576_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F3262DF6-39CA-4E96-AD0E-C1FFDE9B0A61.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-F3262DF6-39CA-4E96-AD0E-C1FFDE9B0A61" xml:lang="en"><title>Commonly
+used controls</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The Symbian platform provides Avkon controls, which are a convenient
+set of UI components designed specifically for devices based on the Symbian
+platform.</p>
+<p>Commonly used Avkon controls include:</p>
+<ul>
+<li><p>dialogs </p></li>
+<li><p>editors</p></li>
+<li><p>forms </p></li>
+<li><p>grids</p></li>
+<li><p>lists </p></li>
+<li><p>notes</p></li>
+<li><p>pop-up lists </p></li>
+<li><p>queries </p></li>
+<li><p>setting pages</p></li>
+</ul>
+<p>All of the Avkon resources listed above, except dialogs ,queries, and
+notes, are non-window-owning controls. This means that they cannot exist on
+the screen without being inside another <xref href="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita">control</xref>.</p>
+<note>
+<p>Since Avkon UI resources scale automatically according to screen resolution
+and orientation, it is recommended that you consider using Avkon or Avkon-derived
+components in your application UI as they may require less implementation
+effort. Custom <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/reference/reference-cpp/Control_Environment/CCoeControlClass.html" format="application/java-archive"><parmname>CCoeControl</parmname></xref>-derived
+controls may require additional efforts to support <xref href="GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita">scalability</xref> and <xref href="GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita">themes</xref>.</p>
+</note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F32E2F00-B68F-59B2-AABA-181E16354C86" xml:lang="en"><title>The
+object provider (MOP) mechanism</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-07E61ABD-C57F-4E11-A32B-85DF6FAC4D61"><title>Purpose</title><p>The object provider mechanism
+exists to enable control types to be established at run time. It's a form
+of Run Time Type Identification (RTTI). More specifically it allows a caller
+to find a control in the run-time hierarchy that implements a particular interface,
+or mixin. From the caller's point of view it's pretty simple: all that's required
+is to ask a control, any control, to get an object that supports the specified
+interface, cast the pointer returned to the correct interface and then call
+the desired function. </p></section>
+<section id="GUID-96964B1B-297B-4196-961F-B574ACBF1811"><title>History</title><p>The Object Provider interface pre-dates
+the parent pointer in <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>. Instead it uses a <codeph>MopParent</codeph> pointer
+which is normally the parent control but may be the AppUi or even the <codeph>CoeEnv</codeph> object.
+It was designed to meet Series 60 requirements for navigation of the run-time
+hierarchy. Internally it is now implemented by the framework using the parent
+pointer where possible which simplifies the control development process. </p></section>
+<section id="GUID-8A6CBDB0-343E-41F1-AC3A-876FA6968DB4"><title>Description</title><p>Interfaces are only identifiable by
+the Object Provider framework if they have an associated Interface UID. The
+Interface UID must be declared in the class definition. Fortunately the UID
+is invisible to the caller which simply uses the interface (mixin) name. </p><p>A
+class which implements an identifiable mixin, i.e. one with an Interface UID,
+can 'supply' a pointer to itself when the Object Provider framework requests
+it. If a control is not able to supply the mixin requested it passes the request
+on to the next control in the hierarchy. </p><p>The sequence diagram below
+illustrates the Object Provider process for supplying an interface pointer
+from the run-time hierarchy. </p><fig id="GUID-91496FA9-60F6-5DDA-899B-7E54A8A7E4CB">
+<image href="GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e12840_href.png" placement="inline"/>
+</fig><p>Object1 wishes to call a function on <codeph>MInterface</codeph>.
+It calls <codeph>MopGetObject()</codeph> on the nearest control in the run-time
+hierarchy. The Object Provider Framework identifies the Uid for <codeph>Minterface</codeph> and
+then passes the request up the hierarchy until an object is found (Object4)
+that implements <codeph>Minterface</codeph>. </p><p>Calling <codeph>MopGetGetObjectNoChaining()</codeph> will
+call <codeph>MopSupplyObject()</codeph> but not <codeph>MopNext()</codeph>.
+It returns Null if the class does not implement the specified mixin. </p></section>
+<section id="GUID-33E336B0-98AD-45B0-80A8-5263D8D6167D"><title>See also</title> <p><xref href="GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita">How
+to write controls</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F3406651-0B57-50FD-81CA-A3D4000D5625.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F3406651-0B57-50FD-81CA-A3D4000D5625" xml:lang="en"><title>Character Conversion (Charconv) Framework Collection</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Symbian platform uses UTF-16 encoded Unicode text. The Charconv Framework provides the APIs and converters to convert characters between foreign encodings and Unicode (UTF-16).</p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e188860_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F3520C6E-1B3A-5CB2-95F8-AB430D4BA327.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F3520C6E-1B3A-5CB2-95F8-AB430D4BA327"><title>How to finalise a drive</title><prolog><metadata><keywords/></metadata></prolog><conbody> <p>Finalising a drive moves it to a consistent state, which enables the safe removal of media or safe shut down of the device. There are two types of finalisation defined by <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>TFinaliseDrvMode</apiname></xref>: </p> <ul><li id="GUID-DA29B46D-4E2A-54B8-9D29-545830B1CB8F"><p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>EFinal_RO</apiname></xref> - <i>Hard</i> finalisation. This flushes all caches and puts the volume into a consistent state. After finalisation, the volume becomes read-only until remounted. All read operations are accepted but all write operations fail. This mode is used: </p> <ul><li id="GUID-851E514E-8275-51A9-84AA-784AE7ED69C5"><p>in an eject media application - this application is launched by the user in order to safely remove the media </p> </li> <li id="GUID-FFCB8EDA-940C-5D4B-AB7E-EF23238A3898"><p>when the device is shut down. </p> </li> </ul> </li> <li id="GUID-F0C8E51E-4188-53E9-BD33-694F703C5A4D"><p> <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>EFinal_RW</apiname></xref> - <i>soft</i> finalisation. This flushes all caches and puts the volume into a consistent state, after which all read and write operations are accepted but the first write access after finalisation renders the volume no longer finalised. </p> <p>This mode of finalisation can be used by an application to put the media into a consistent state after a period of device inactivity. This minimizes the risk of media corruption on its removal or sudden power loss. </p> </li> </ul> <p>Finalise a drive by calling <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs::FinaliseDrive()</apiname></xref> with the drive number and the type of finalisation mode required, <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>EFinal_RW</apiname></xref> or <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>EFinal_RO</apiname></xref>. The error code returned by <codeph>FinaliseDrive()</codeph> should be checked before proceeding as it is not possible to finalise the volume if it is corrupt or has filesystem objects open on it (files, directories, formats etc.). </p> <p>During drive finalisation, data is written to the media that indicates the drive is in a consistent state, after which no write operations are supposed to take place on the specified volume. </p> <p>From v9.4. the API <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs::FinaliseDrives()</apiname></xref> has been changed so that it sends finalise drive requests to <i>all</i> the existing drives in the system, not just the local and internal drives. </p> <p>The user of <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> APIs must have the <codeph>DiskAdmin</codeph>  <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">security capability</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F35C5336-907C-5B2A-92C6-F8883D49996E" xml:lang="en"><title>How
+to localise resources</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Overview</title> <p>Symbian developers can localise a C++
+application by simply changing the resource file text associated with each
+menu item, task bar or other control. Since changes to the text do not change
+the symbol information in the generated header file, it is not necessary to
+recompile the application to use the new file. Consequently, a resource file
+may be generated for each language supported, and the actual resource used
+is determined by the end-user at installation time. </p> <p>The examples quoted
+in this page are taken from the code example <filepath>Examples\ToolsAndUtilities\Localise</filepath>,
+which provides the Hello World application, localised for English and German. </p> </section>
+<section><title>Localisable strings</title> <p>Localisable strings should
+not be defined within a resource file, but in separate files with the extension <filepath>.rls</filepath>.
+An <filepath>.rls</filepath> file defines symbolic identifiers for strings,
+to which the resource file refers when it needs the associated string. </p> <p>An
+example from an <filepath>.rls</filepath> file is shown below: </p> <codeblock id="GUID-FA54B424-D6C1-5A80-821D-3B25A720873D" xml:space="preserve">// Strings localised for UK
+rls_string STRING_r_example_first_menu_name "Hello"
+rls_string STRING_r_example_item0 "Item 0"</codeblock> <p>The keyword <codeph>rls_string</codeph> appears
+before each string definition, followed by a symbolic identifier, and then
+the string itself in quotes. To localise the file for German, the same identifiers
+would be used, but the strings would be translated, i.e. </p> <codeblock id="GUID-722A8D45-5747-5FE8-A3C6-FE9AD2C43542" xml:space="preserve">// Strings localised for German
+rls_string STRING_r_example_first_menu_name "Hallo"
+rls_string STRING_r_example_item0 "Eintrag 0"</codeblock> <p>The resource
+file itself would be the same, whatever the locale, as it would only refer
+to strings through their symbolic names, e.g. </p> <codeblock id="GUID-D427E092-1BA9-56A8-B449-DFDA182107AE" xml:space="preserve">MENU_TITLE
+    {
+    menu_pane=r_example_first_menu;
+    txt=STRING_r_example_first_menu_name;
+    }</codeblock> <p>defines a menu title resource, with a title string defined
+by <codeph>STRING_r_example_first_menu_name</codeph> (i.e. "Hello" in UK,
+"Hallo" in German). </p> </section>
+<section><title>Building localised resource files</title> <p>You can define
+in a project definition (<filepath>.mmp</filepath>) file the locales that
+the project supports. Given appropriate resource source and <filepath>.rls</filepath> files,
+the build process then builds a separate compiled resource file for each supported
+locale. </p> <p>The process in detail can be broken into three steps: </p> <ul>
+<li id="GUID-89FC1834-F661-5341-A03C-9F068CAC0655"><p>determine on a symbolic
+identifier for every supported locale </p> </li>
+<li id="GUID-CEBA3187-2758-5D17-9CE1-032D037BE9F9"><p>specify in the project
+definition file the supported locales </p> </li>
+<li id="GUID-48C74787-5367-5EE9-ACF9-8A67E87B3CA3"><p> <codeph>#include</codeph> the <filepath>.rls</filepath> files
+for the supported locales in the resource source file </p> </li>
+</ul> <p>These are discussed further below. </p> <p><b>Locale identifiers </b> </p> <p>You
+should decide on a symbolic identifier for every supported language. The symbol
+should be of the form: </p> <p> <codeph>LANGUAGE_</codeph> <varname>language-code</varname>  </p> <p>where <codeph>language-code</codeph> should
+be two characters long, but otherwise can be anything you like, as long as
+each language in the resource file has a unique symbol. </p> <p>You are recommended
+to use a standard two-digit number as defined by Symbian in an enumeration <codeph>TLanguage</codeph> in <filepath>e32std.h</filepath>,
+which gives numeric values to the languages. For example, the value <codeph>ELangGerman</codeph> (German)
+in <codeph>TLanguage</codeph> has the value 3, so you could use <codeph>LANGUAGE_03</codeph> as
+the symbol for German. </p> <p>Alternatively, you can use logical letters
+for each language: e.g. US English might have the symbol <codeph>LANGUAGE_US</codeph>,
+while French might have the symbol <codeph>LANGUAGE_FR</codeph>. </p> <p><b>Project
+definition files </b> </p> <p>For projects with localised resources, you must
+use the <codeph>lang</codeph> statement in the <filepath>.mmp</filepath> file
+to set the languages codes used. So, for the above example, in which the language
+codes used are for German (03) and UK English (01), the <codeph>lang</codeph> statement
+should read: </p> <codeblock id="GUID-BE1AE938-89E7-5E9C-B71D-81F16A64748C" xml:space="preserve">lang 01 03</codeblock> <p>When
+the project is built, each resource file specified in the project file will
+be compiled multiple times, once for each language-code specified. The language
+codes are used to complete the extension of the built resource files: for
+our example, two files would be built: <varname>project-name</varname> <filepath>.r01</filepath> and <varname>project-name</varname> <filepath>.r03</filepath>. </p> <p><b>Resource source files </b> </p> <p>The symbols can then used,
+with conditional compilation statements, to specify which string definitions
+should be compiled for each language. In the example code fragment below,
+the file <filepath>01-strings.rls</filepath> is assumed to have the strings
+localised for UK English, and the file <filepath>03-strings.rls</filepath> the
+strings localised for German. </p> <codeblock id="GUID-51F46C07-27F9-5A36-A2C2-374A61C5EBF7" xml:space="preserve">// Conditional compile, depending on locale
+#ifdef LANGUAGE_01         // if language code is for UK
+ #include "01-strings.rls"
+#elif defined LANGUAGE_03  // if language code is for German
+ #include "03-strings.rls"
+#endif      
+// end conditional compile
+</codeblock> <ul>
+<li id="GUID-95464F59-9F66-5984-8B31-1A77D91EC033"><p>when built with the
+code 01, the UK English strings in <filepath>01-strings.rls</filepath> are
+compiled into the resource file </p> </li>
+<li id="GUID-48DE7451-D93E-51F0-8B43-2EA94A68E800"><p>when built with the
+code 03, the German strings in <filepath>03-strings.rls</filepath> are compiled
+into the resource file </p> </li>
+</ul> </section>
+<section><title>How programs load resource files </title> <p>The Uikon application
+framework attempts to load the project's resource file when the application
+starts up. If the resource file has the extension <filepath>.rsc</filepath>,
+then this is loaded. Alternatively, the framework attempts to load the correct
+resource file by comparing the system locale setting with the available resource
+files: for example, in a German locale, the resource file with extension <filepath>.r03</filepath> would
+be loaded. Resource files that are explicitly loaded by programs, rather than
+by the framework, can use the same stategy, by calling <codeph>BalfUtils::NearestLanguageFile()</codeph> to
+find a resource file with the correct language extension. </p> <p>More typically
+than installing all the resource files for all the available locales, you
+would only want to select a single resource file for installation, based on
+the system locale or user preference. The Symbian platform Installation System
+enables this, as described in <xref href="GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita">PKG
+file format to support multilingual application installation</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F370A917-6963-58F6-8876-160A1DC42040.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F370A917-6963-58F6-8876-160A1DC42040" xml:lang="en"><title>Video Client Library Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes how to use the Video Client library. </p> </conbody><related-links><link href="GUID-0EE3180B-4814-517E-A6DD-748136C17D55.dita"><linktext>Video
+  Client Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F370FDA8-6DB7-531A-A057-B773F1729C46.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-F370FDA8-6DB7-531A-A057-B773F1729C46"><title>DumpChainValidityTool</title><shortdesc> <codeph>DumpChainValidityTool</codeph> validates the signing certificate-chains associated with a SIS file and displays a unified list of capabilities that are supported by the validated chains. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><refsyn><title>Syntax</title> <p><userinput>dumpchainvaliditytool <parmname>[OPTIONS]</parmname> <cmdname>
+          &lt;ARGS&gt;</cmdname> </userinput> </p> <p>The following table lists the options supported by <codeph>DumpChainValidityTool</codeph>. </p> <table id="GUID-049353DB-F2B2-5475-9306-E3218BBA4241"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry> Options</entry> <entry>Description</entry> <entry>Usage</entry> </row> </thead> <tbody><row><entry><p> <varname>-v</varname>  </p> </entry> <entry><p>Displays version of the tool. </p> </entry> <entry><p><userinput>dumpchainvaliditytool [-v]</userinput> </p> </entry> </row> <row><entry><p> <varname>-h</varname>  </p> </entry> <entry><p>Displays help message </p> </entry> <entry><p><userinput>dumpchainvaliditytool [-h]</userinput> </p> </entry> </row> <row><entry><p> <varname>-i</varname>  </p> </entry> <entry><p>Displays Open SSL licence. </p> </entry> <entry><p><userinput>dumpchainvaliditytool [-i]</userinput> </p> </entry> </row> <row><entry><p> <varname>-l</varname>  </p> </entry> <entry><p>Displays a unified list of capabilities supported by all the validated chains. </p> </entry> <entry><p><userinput>dumpchainvaliditytool [-l] Signed_SIS_Input DAT_Input Directory</userinput> </p> <p> <b>Important:</b> You must specify the input arguments in the same order as shown in the preceding command line. </p> </entry> </row> </tbody> </tgroup> </table> <p>The following table lists the arguments to be specified with <codeph>DumpChainValidityTool</codeph>. </p> <table id="GUID-FC774BC4-6CA8-58D3-8988-8690FAC1E102"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry> Arguments</entry> <entry> Description</entry> </row> </thead> <tbody><row><entry><p> <varname>SIS_Input</varname>  </p> </entry> <entry><p>Specifies the name of the signed SIS file. </p> </entry> </row> <row><entry><p> <varname>DAT_Input</varname>  </p> </entry> <entry><p>Specifies the location of the swicerstore.dat file on the ROM (For example, <filepath>Z:\resource\swicertstore.dat</filepath>). Optional, if <varname>Directory</varname> is specified. </p> </entry> </row> <row><entry><p> <varname>Directory</varname>  </p> </entry> <entry><p>Specifies the location of the writable swicertstore.dat file (For example, <filepath>c:\resource\swicertstore\dat\</filepath> ). Optional, if <varname>Dat_Input</varname> is provided. </p> </entry> </row> </tbody> </tgroup> </table> </refsyn> <example id="GUID-ADDB7F0A-E674-529F-91E6-0CEFCA8DBC69"><title>Examples</title> <p>The following examples illustrates the usage of <codeph>DumpChainValidityTool</codeph>: </p> <ul><li id="GUID-FD7FCE26-CD3A-5F5F-9111-CAFAA4A89C39"><p>To extract and display the signing chain inforrmation associated with a SIS file: </p> <p><userinput>dumpchainvaliditytool simple.sis swicertstore.dat</userinput> </p> <p>This command displays the signing chain information of a SIS file, at the command prompt as shown in the following sample output: </p> <codeblock id="GUID-8D3AE966-FAD0-562C-BF89-D973F45E4597" xml:space="preserve">
+Signing Chain :
+Issued By : Root5-RSA
+Issued To : Good-R5
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+Issued By : Root5-RSA
+Issued To : Root5-RSA
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+is validated by Root5-RSA
+
+
+Signing Chain :
+Issued By : Root5-RSA
+Issued To : Mid-R5
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+Issued By : Root5-RSA
+Issued To : Root5-RSA
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+is validated by Root5-RSA.</codeblock> </li> <li id="GUID-F383366B-E491-5DD4-A97E-A1994ED4A8D9"><p>To extract and display a unified list of capabilities: </p> <p><userinput>dumpchainvaliditytool -l simple.sis swicertstore.dat</userinput> </p> <p>This command displays a unified list of capabilities along with the signing chain information as shown in the following sample output: </p> <codeblock id="GUID-000CC13D-F377-55CB-99AB-DA2AD8E725E5" xml:space="preserve">Signing Chain :
+Issued By : Root5-RSA
+Issued To : Good-R5
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+Issued By : Root5-RSA
+Issued To : Root5-RSA
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+is validated by Root5-RSA
+
+
+Signing Chain :
+Issued By : Root5-RSA
+Issued To : Mid-R5
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+Issued By : Root5-RSA
+Issued To : Root5-RSA
+Valid From : 03/03/2004
+Valid To : 01/03/2014
+
+
+is validated by Root5-RSA.
+
+Unified Capabilities List :
+
+TCB
+WriteDeviceData
+DRM
+TrustedUI
+AllFiles</codeblock> </li> </ul> </example> </refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e195201_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F3CB6985-A9AA-4E01-B157-5AB8DDC7951B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F3CB6985-A9AA-4E01-B157-5AB8DDC7951B" xml:lang="en"><title>Finger
+usable UI</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This document describes stylus as the input method with touch UI, but events
+apply to finger use also. However, in some cases the components may not be
+finger optimized due to the size of objects, e.g. virtual keyboard or text
+field.</p>
+<p>In Symbian, UI style defines the target minimum sizes for a UI element considered
+as finger usable:</p>
+<ul>
+<li><p>7 x 7 mm with 1 mm gaps for index finger usage </p></li>
+<li><p>8 x 8 mm with 2 mm gaps for thumb usage </p></li>
+<li><p>List type of components should have minimum of 5 mm line spacing</p></li>
+</ul>
+<p>Targets are general as in practice sizes can be use case dependent, e.g.
+due to frequency of use, efficiency vs. error criticality or ease of error
+correction, location of the button (edge of screen vs. center).</p>
+<p>The visible area of the component and the component's active area should
+be identical. There are exception cases to this rule though:</p>
+<ul>
+<li><p>When components are located near the edge of the display the touchable
+area should extend fully to the edge of the display (i.e. beyond the components
+visible graphics). </p></li>
+<li><p>Visible area is smaller than the active area in order to keep the balance
+in look and feel of the UI. For example scrollbar has wider touch area than
+visible area. </p></li>
+<li><p>Active area is smaller than the visible area in order to avoid unwanted
+presses to contiguous active areas. In this case there it should be graphically
+indicated where the user should tap. Example: fixed toolbar buttons in landscape
+layout.</p></li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB" xml:lang="en"><title>Generic
+button API</title><shortdesc>The Generic button API is used for enabling touch support for buttons.</shortdesc><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>An Avkon button is a generic button component specifically designed for
+touch support. The generic button component (<xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknButton.html" format="application/java-archive"><codeph>CAknButton</codeph></xref>, defined in aknbutton.h)
+is used, for example, in a toolbar and a status pane. The button can contain
+text, an image, or both. </p>
+<p>Buttons can have multiple states, and each of the states can have three
+different states according to user actions. The possible user-action states
+for the button states are:</p>
+<ul>
+<li><p>Normal</p></li>
+<li><p>Pressed down</p></li>
+<li><p>Dimmed</p></li>
+</ul>
+<p>By default, the button has a frame, it responds to tap (press) event, has
+a latchable view in the pressed-down state, and has horizontally and vertically
+aligned text in it. Some default behavior can be changed with button flags
+or with the help of member functions. </p>
+<p>To observe the buttons in your application, use the <codeph>MCoeControlObserver</codeph> observer
+interface.</p>
+<fig id="GUID-EEC0C576-8EEC-481E-817F-6E137E4F6A7D">
+<title>Generic button used in a toolbar</title>
+<image href="GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e49091_href.png" scale="50" placement="inline"></image>
+</fig>
+<note><p> The Generic button API is used for creating buttons that are displayed
+as parts of container components, such as a toolbar. It is not used for creating
+CBA buttons displayed in the control pane at the bottom of the device screen.
+The API for creating CBA buttons is the Buttons
+API.</p></note>
+<p>For look and feel guidelines on the generic button component as part of
+a toolbar, see the <xref href="GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita">toolbar
+UI component description</xref>.</p>
+<p>For information on using the API, see <xref href="GUID-97712509-84AD-462F-8FFB-E1E6D8278938.dita">Enabling
+touch support for buttons</xref>.</p>
+<p>For the Generic button API classes and header files, see Classes and Definitions.</p>
+<section><title>Constraints</title><p>This API is valid for all platforms
+running on Symbian OS 9.3 or later.</p></section>
+<section><title>Emulator support</title><p>This API is supported in the WINS/WINSCW
+emulator environment, with the following exception:</p><ul>
+<li><p>Tactile feedback is not supported.</p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4099885-55A0-5ACF-A73B-9C647B02B142.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F4099885-55A0-5ACF-A73B-9C647B02B142"><title>Customising a Parser Plug-in</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The parser plug-ins supplied with the XML framework can be customised to suit the structure of a particular document. This section explains how to customise the WBXML parser. </p> <section><title>Introduction</title> <p>To parse a WBXML document with a DTD which has not previously been implemented for the Symbian platform XML framework, add a new string table representing the DTD. </p> <p>Parsers use <xref href="GUID-0D16866C-F46B-5A2B-B974-324278588A1B.dita">string dictionaries</xref> to convert a file of text strings into a <xref href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita">string pool</xref> of <codeph>RString</codeph> objects. The strings within the dictionary are linked to the String Table statically at compile time. A string table is a text file having a <codeph>.st</codeph> extension. It contains the name of C++ enumeration constants paired with the strings they refer to. Each pair occupies a line of text and its two elements are separated by white space, as shown in the following example: </p> <codeblock id="GUID-CDAF42C3-C791-5A60-9ED8-AB841559C66D" xml:space="preserve">
+stringtable Wml1_1CodePage00TagTable
+EA          a
+EAnchor     anchor
+EAccess     access
+</codeblock> <p>The simplest use of a string table arises when WBXML is used as a method of compressing generic XML. In such scenario, create a single .st file for all frequently used strings. In the example scenario, the task is slightly complex because a specific XML application which conforms to a DTD is being parsed. A DTD specifies elements along with attributes. Create three separate <codeph>.st</codeph> files as to place these attribute values, as shown in the above example. It is the file containing attribute values which are required. The left hand column of an attribute value string table must be exactly the same as the left hand column of the corresponding attribute string table. That is, it must list the same constant names and list them in the same order. The right hand column of an attribute value table contains the values defined for the attributes. However, it may be that no value is defined for some attributes. In such scenario, the attribute value table contains a line consisting only of the constant name, followed not by white space but by the end of the line. </p> <p>The following two examples show a fragment of an attribute string table and the corresponding attribute value string table: </p> <codeblock id="GUID-452C963F-8215-5D96-B8C8-70AC619663E5" xml:space="preserve">
+EAcceptcharset                  accept-charset
+EAlign1                         align
+EAlign2                         align
+EAlign3                         align
+</codeblock> <codeblock id="GUID-A6A3DBDC-3AFF-5A8A-A5BB-C8909D1EA561" xml:space="preserve">
+EAcceptcharset
+EAlign1
+EAlign2                         bottom
+EAlign3                         top
+</codeblock> <p>In this example, the <codeph>accept-charset</codeph> attribute has no value defined for it. Hence, the constant name <codeph>EAcceptCharset</codeph> is paired with nothing in the attribute value table. The attribute 'align' may take no value or the values 'bottom' and 'top'. Therefore, the first table pairs it with three different constant names and the second table pairs the constant names with nothing, 'bottom' and 'top'. </p> </section> <section><title>Procedure</title> <ol id="GUID-B4CC5842-72DA-5F42-8E7E-D03CF7B6FA0D"><li id="GUID-C7C894E1-75F2-5908-90C1-3560FCEFB38B"><p>Implement a new string table. </p> </li> <li id="GUID-B2B0C09F-2088-54E6-9CA4-38B011EDAE53"><p>Convert the string table to the code. </p> <p>Convert the string tables to C++ by invoking the conversion tool from the build files when you compile your parser. The conversion tool can be found in <filepath>...\epoc32\tools\</filepath>. For more information about the tool, refer to <xref href="GUID-27340D18-A31D-512E-920A-B06C784A978A.dita">String pools</xref>. </p> </li> </ol> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F40E34F4-5B8B-523E-82B6-7717D8FD26AB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F40E34F4-5B8B-523E-82B6-7717D8FD26AB"><title>Executing SQL statements</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <codeph>RDbDatabase</codeph> class provides a member function, <codeph>Execute()</codeph>, which directly executes <i>both</i> DDL and DML statements on the database.</p> <p>As most of these statements can take an extended time to complete, there are also interfaces to execute these statements incrementally. </p> <ul><li id="GUID-D73DC76D-6E12-542D-9E60-81A7CDDF221F"><p><codeph>RDbIncremental</codeph> provides a member function, <codeph>Execute()</codeph>, which executes a DDL statement incrementally.</p> </li> <li id="GUID-AA5D4133-B777-5F3E-8DD1-3398D5012B11"><p><codeph>RDbUpdate</codeph> provides the functionality for executing a DML statement incrementally.</p> </li> </ul> <p>DML statements need a different interface because it is not always possible to know how many steps a DML operation is going to need.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F411736E-09FE-4F46-8185-DF013E950069.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F411736E-09FE-4F46-8185-DF013E950069" xml:lang="en"><title>Setting
+HTTP session ID</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The <xref href="GUID-D2636C86-5C14-38E4-9539-72FDE8762584.dita"><apiname>SetPropertyL</apiname></xref> method is used to set the ID. For example:
+ </p>
+<codeblock xml:space="preserve">const TInt KMySessionID = 74; // a random arbitrary ID
+const THTTPHdrVal Id(KMySessionID);
+ConnectionInfo.SetPropertyL(sessionId, Id);</codeblock>
+<p>All subsequent sockets will have the session ID specified by KMySessionID.
+Multiple sessions can share the same session ID, which helps multiple concurrent
+sessions to be treated similarly by the Flow hook. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4163874-3F97-506B-AC93-EA2321D3BEC1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F4163874-3F97-506B-AC93-EA2321D3BEC1" xml:lang="en"><title>Device Information Tutorial</title><shortdesc>This tutorial describes how to get the device information using the telephony API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The telephony API for application is a sub set of the multimode API. The telephony API for applications can be used by any client applications to access the basic telephony functions. The multimode API provides the rich set of telephony functions but it is available only to the handset manufacturers. </p> <p> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4320746-68DF-50B6-817A-24E46DFBF77B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F4320746-68DF-50B6-817A-24E46DFBF77B" xml:lang="en"><title>FAT Filename Conversion Plug-ins Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F43A54C0-E82B-5790-8493-1372D214C642"><title>What are Planes</title><shortdesc>This topic describes the concept of a <i>Plane</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The transmission of data and the management of connections is divided into separate operations. Symbian OS gives the name <i>Plane</i> to these operations. The Communications Framework defines three Planes. Each Plane has a separate role and a separate responsibility. Each Plane matches a Sockets Server API. </p> <p>The Planes are called: the Data Plane, the Control Plane and the Management Plane. </p> <p>Layers span all three Planes. Code in each Plane operates together to deliver the required Communications protocol behaviour. </p> <p>A connection can have a number of subconnections. Subconnections can be called channels. The concepts of connection and subconnection make it useful to divide the Control Plane into two parts. The following diagram shows the concept. The blue arrows indicate dependencies. The vertical dotted lines indicate the division of Planes. </p> <fig id="GUID-258000D9-1BC3-5A61-8235-4183D4A759C5"><title>
+          Planes in the Communications Framework
+        </title> <image href="GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e63035_href.png" placement="inline"/></fig> <p>The following diagram overlays the Planes with an example series of Layers </p> <fig id="GUID-1758E53D-2A62-5C4C-93B9-8FE5DE67BBAA"><title>
+          Planes and Layers in the Communications Framework
+        </title> <image href="GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e63044_href.png" placement="inline"/></fig> <ul><li id="GUID-45F19CFA-9B96-53B3-9B15-428BB3226BAA"><p> <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita#GUID-F43A54C0-E82B-5790-8493-1372D214C642/GUID-E8250BBE-8529-5C45-BCA3-92A87C013580">Data Plane</xref>  </p> </li> <li id="GUID-461678D6-3198-55CF-B07E-94F5E1086BAC"><p> <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita#GUID-F43A54C0-E82B-5790-8493-1372D214C642/GUID-CFFC0BC1-FD9D-5F82-8906-2F9E8FCD21F5">Control Plane</xref>  </p> </li> <li id="GUID-6B98DEAB-F245-5533-A05A-957FADE0C120"><p> <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita#GUID-F43A54C0-E82B-5790-8493-1372D214C642/GUID-2372FF88-FA59-5CDF-9362-1A54F43D8442">Management Plane</xref>  </p> </li> </ul> <section id="GUID-E8250BBE-8529-5C45-BCA3-92A87C013580"><title>Data Plane</title> <p>The Data Plane carries data and uses Communications protocols. The Data Plane handles conversations with remote peers.The <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita#GUID-F43A54C0-E82B-5790-8493-1372D214C642/GUID-CFFC0BC1-FD9D-5F82-8906-2F9E8FCD21F5">Control Plane</xref> and the <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita#GUID-F43A54C0-E82B-5790-8493-1372D214C642/GUID-2372FF88-FA59-5CDF-9362-1A54F43D8442">Management Plane</xref> exist to serve the Data Plane. </p> <p>The Data Plane exists to minimise interruptions to the flow of data. The Data Plane assigns the response to interruptions to the Control Plane. Interruptions include: the start of a new network connection, the management of a timeout and the management of changes to the status of the network. </p> <p>To make sure that interruptions cannot interfere with the Data Plane, a thread divide exists between the Data Plane and the Control/Management Planes. The thread division allows the Communications Framework to give the Data Plane thread a higher priority than the Control and Management Plane thread. The difference in thread priorities allows the Communications Framework to give the task of data transfer the highest priority. </p> <p>The Communications Framework provides a mechanism to send messages between the threads. The mechanism is called the <xref href="GUID-4CE10DED-31B2-50B5-9D38-85CE86E8A8DE.dita">Message Transport</xref>. The Transport sends and delivers the messages asynchronously. Threads can continue their work until the threads are prepared to process messages. The Transport always makes sure of the delivery of messages. </p> <p>The Data Plane corresponds to the Sockets Server API: <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>. </p> <p>The following diagram shows the thread divide. </p> <fig id="GUID-A440C4F8-199E-575A-9922-D90059CA69C3"><title>
+             Data Plane in the Communications Framework
+          </title> <image href="GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e63111_href.png" placement="inline"/></fig> <p><b>Features </b> </p> <p>The Data Plane: </p> <ul><li id="GUID-70DDF365-81B9-5D30-BEA1-B338074CF097"><p>exchanges data with remote peers and uses data transfer protocols </p> </li> <li id="GUID-E8A426F5-98AD-5BFA-9D8C-820B1656140C"><p>allows any number of conversations at the same time through many protocols </p> </li> <li id="GUID-6748E1E2-5FF3-52BC-9FC7-6759F52B59D2"><p>enables the transfer of data to clients of the protocol stack and from clients of the protocol stack </p> </li> <li id="GUID-1073D70B-80FA-55E7-96E9-C9B51A701BC4"><p>enables the transfer of data to hardware and from hardware </p> </li> </ul> </section> <section id="GUID-CFFC0BC1-FD9D-5F82-8906-2F9E8FCD21F5"><title>Control Plane</title> <p>The Control Plane establishes, maintains and modifies the traffic, or conversations in the Data Plane. Specifically, the Control Pane establishes, controls, re-binds and tears down the Communications protocol stack based on commands from the application and from the Management Plane. </p> <p>The <xref href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita#GUID-F43A54C0-E82B-5790-8493-1372D214C642/GUID-E8250BBE-8529-5C45-BCA3-92A87C013580">Data Plane</xref> sends the status of the link and other control information to the Control Plane. The Control Plane processes the status of the link and other control information, and allows the Data Plane to give the task of data transfer the highest priority. </p> <p>A connection can have a number of subconnections. Subconnections can be called channels. The concepts of connection and subconnection make it useful to divide the Control Plane into two parts. </p> <p>The Data Plane corresponds to the Sockets Server APIs: <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. </p> <p><b>Features </b> </p> <p>The Control Plane: </p> <ul><li id="GUID-EE232AB1-E916-54AB-B658-19B1A3F62B7C"><p>creates the Data Plane </p> </li> <li id="GUID-F5E545D5-7954-5F20-B8A4-4C9B7F4B06CC"><p>configures the Data Plane modules from information provided by the client application or the Management Plane </p> </li> <li id="GUID-3C4FF301-30D7-5064-BD45-5A05C962E1DE"><p>starts the Data Plane </p> </li> <li id="GUID-BB2A8489-38D7-5D0B-A272-0C04DDE9B2FF"><p>controls and monitors the Data Plane: </p> <ul><li id="GUID-7D7E7B38-34C4-53F6-A545-774DEEE07403"><p>acts on information received from the data protocols </p> </li> <li id="GUID-805AE125-F139-5E65-9912-DCA92926F1EF"><p>notifies the Management Plane or the client application about changes to the state of the Control Plane or the Data Plane. </p> </li> </ul> </li> <li id="GUID-ACDF9227-7286-5092-AF85-503BA30A2B45"><p>stops the Data Plane </p> </li> <li id="GUID-54C50C8C-4CFB-5C02-89CE-754EF2F858E2"><p>destroys the Data Plane </p> </li> <li id="GUID-8FC8ED8A-71DA-546A-8548-D6979B0F8CD7"><p>manages connection session timers </p> </li> <li id="GUID-C316844B-3046-599E-967C-085D79F9DA01"><p>manages connection data channels and their properties </p> </li> <li id="GUID-7CF74684-F4C8-54FC-9BA0-EA68D081E5AF"><p>handles changes to the status of the network and handles error reports </p> </li> </ul> </section> <section id="GUID-2372FF88-FA59-5CDF-9362-1A54F43D8442"><title>Management Plane</title> <p>The Management Plane maintains the configuration of the device, monitors the availability of the network and makes policy decisions for the Communications Framework. The Management Plane is the main location where phone creators can customise the behaviour of the Communications protocol stack. </p> <p>The Management Plane corresponds to the Sockets Server API: <xref href="GUID-55FE59B7-4FA9-3B1A-BD4C-9B7611FE75C2.dita"><apiname>RConnectionServ</apiname></xref>  </p> <p><b>Features </b> </p> <p>The Management Plane: </p> <ul><li id="GUID-3FB67172-7DC3-5621-AADB-02AE601D4EAF"><p>selects, constructs and manages the Communications protocol stack: </p> <ul><li id="GUID-003EFE03-849E-5168-AAC3-8CFB6E07436C"><p>selects the correct protocol stack for a connection based on client and configuration preferences </p> </li> <li id="GUID-2E1CBE6C-2CCE-51E7-AE9C-F4EFAC0A426B"><p>manages the Control Plane connections based on the policy set either in the configuration or at run-time. </p> </li> </ul> </li> <li id="GUID-DA0FE037-69DB-586D-8809-C4D5A8D22C67"><p>notifies interested clients about the state of the Communications protocol stack, for example, bearer and service availability </p> </li> <li id="GUID-3B36F963-CCF5-5E75-9486-04CBEF27DFC1"><p>provides an entry point for third-party plugins to customise and control the Communications protocol stack </p> </li> <li id="GUID-D7A39FA9-1C88-5E8E-A566-E030971CCF0A"><p>controls the Communications protocol stack. This control is based on policy decisions </p> </li> <li id="GUID-8BBADB62-AB50-5B9D-B0E8-9546488E12DD"><p>communicates with the Control Plane to influence the behaviour of Control or Data flow operations in the Communications protocol stack </p> </li> <li id="GUID-86CAD544-2B60-5713-B8C1-1FB14806FC31"><p>supplies configuration information to the Layer. </p> </li> </ul> </section> </conbody><related-links><link href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita"><linktext>Socket Server</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F43E458D-6650-5BB0-871D-2E4EB1353C48" xml:lang="en"><title>Application
+Services</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-8BD6CF61-80B6-5869-AB85-F572C590DB30"><title>Alarm Server</title> <p>The
+AlarmServer is used to set alarms such as clock or calendar applications.
+The Alarm Server manages a queue of alarms and notifies the user in conjunction
+with other Application Framework components. </p> <p>The AlarmServer maintains
+the queue of all system-wide alarms, this is known as Alarm handling. Session
+alarms are for a single session only and are completed when an alarm expires.
+Non session alarms occur if a session orphans its alarm by closing its connection
+to the AlarmServer. </p> </section>
+<section id="GUID-32519F1C-429A-59C9-B945-D0B1F81A0AA5"><title>Calendar Conversion</title> <p>For
+applications that require Chinese date support calcon is a calendar conversion
+utility which provides conversion between Gregorian and Chinese Lunar calendar
+dates. The conversion is restricted to date conversion – time conversion is
+not supported. Corrections have been applied where Chinese lunar days are
+deemed to start at times other than midnight. </p> <p>Julian dates are used
+for internal storage. A Julian date is a count of days from a point in time
+(defined as noon 24/11/4713 BC). Chinese Lunar calendar dates consist of: </p> <ul>
+<li id="GUID-9BA022D5-64C2-5D36-AD11-844183EBDA23"><p>Year cycle </p> </li>
+<li id="GUID-9EFCC4A8-EF82-541D-B0A3-792CD1CD3144"><p>Year (1-60) </p> </li>
+<li id="GUID-B3F2059F-4CAF-54B2-B897-673C0125D8CD"><p>Month (1-12) </p> </li>
+<li id="GUID-85762B70-2F4E-55CE-A25C-C1E72114E306"><p>Whether or not the month
+is a leap month </p> </li>
+<li id="GUID-4727C645-CAED-5081-8E9B-22369EA7668E"><p>Day in the month (1-29
+or 1-30 in a leap month) </p> </li>
+</ul> </section>
+<section id="GUID-6EB921E1-0048-5388-8983-87172763FAB3"><title>Help Model</title> <p>Hlpmodel
+enables the user to search for specific information on a help database. Help
+databases contain rich text formatted data (including pictures) and metadata
+used to identify help information for searching. </p> <p>The help launcher
+is a small DLL that allows the device-specific help application to be launched
+with a context sensitive identifier, so that a suitable help topic is displayed
+within the help application. </p> </section>
+<section id="GUID-D30706E5-7191-5349-A883-C200B73AFED1"><title>Time Zone Server</title> <p>Time
+Zone Server provides functionality to convert between UTC times and local
+“wall-clock” times. It allows for Daylight Savings Time (DST) rules and adjusts
+local times accordingly. This functionality applies to both the current locale
+and other specified locales. It also applies to any time, historical or future
+(within a given range) at the specified locale </p> <p>The application allows
+time conversion between UTC and local “wall-clock” time and automatic clock
+adjustment for daylight saving. </p> <p>The Time Zone Compiler creates a Time
+Zone Database for Symbian OS from the Olson Tz database, which provides a
+collaborative compilation of information about the world's time zones. </p> </section>
+<section id="GUID-4268D6AA-F468-5461-88A2-D6852D4AC69A"><title>Time Zone Localization</title> <p> The
+Time Zone Localization component provides localisation support for time zone
+names. The component makes use of the standard Symbian OS resource framework
+for loading localizable strings. This allows licensees to provide localized
+time zone and city name strings for target markets. </p> <p>Localizable text
+includes: </p> <ul>
+<li id="GUID-BEE1FDE0-3E2E-5F0F-82E0-C04711D6C4F2"><p>Time zone ID, generated
+by the TzCompiler </p> </li>
+<li id="GUID-C902710F-2EC0-5AD1-B3D4-FA9C7545A8C2"><p>Time zone standard name </p> </li>
+<li id="GUID-31AAE78F-92C2-5794-BA55-575C118BFE41"><p>Time zone daylight savings
+name </p> </li>
+<li id="GUID-83B70D72-3F92-5316-B5BB-735AC0514E78"><p>Time zone short standard
+name </p> </li>
+<li id="GUID-60C26CE2-26A9-5617-8A93-BDD02DB24B9C"><p>Time zone short daylight
+savings name </p> </li>
+</ul> </section>
+<section id="GUID-9DFB0954-9CDF-5DAF-BA7A-54A1D64833F7"><title>Versit</title> <p>The
+Versit component provides a set of classes that can be used by application
+or system developers to import and export data. The data is formatted according
+to a set of standards initially defined by the Versit consortium. </p> <p>The
+plain-text formatted data can be included in emails, saved to disk or transferred
+from one application to another using streams. Two specifications have been
+published: vCard for the transmission of contact information and vCal for
+the transmission of calendaring information. </p> <p>Although the information
+contained in contact data is different from that contained in calendar data,
+the basic formatting of the information follows the same style. It is this
+formatting style that has had a strong influence on the functional requirements
+of the Versit component. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F446E658-B717-5257-9C5C-442B07B19565.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-F446E658-B717-5257-9C5C-442B07B19565" xml:lang="en"><title> Performing
+Cryptographic Operations with Keys</title><abstract><p>You can use various types of algorithms (for example RSA sign,
+DSA sign, Decrypt, DH key agreement, and so on) to perform cryptographic operations
+with keys in the unified keystore. This section provides information on the
+signing process. </p><p> The following steps explain the process of signing
+keys by considering the example of an RSA signing operation:</p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-E7265950-3F94-51A6-BD6E-E99A25152E0B">
+<step id="GUID-98896CA9-D5F6-5FCD-92B8-627D701DD080"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-3CFD0F4D-5467-5FE5-9003-F16FDF6750B1"><cmd/>
+<info>Initialise the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-73A277E5-45B8-5F87-B114-2004AE4DD4C5"><cmd/>
+<info>List all the keys in the keystore and then retrieve the key to be signed
+based on filter criteria. </info>
+</step>
+<step id="GUID-036E7985-FB51-52C5-BC27-4ADAD38E0923"><cmd>Invoke the <codeph>MKeyStore::Open()</codeph> function
+for opening the key. This also enables the creation of an object capable of
+performing the required signing operation. In the case of an RSA signing process,
+the key is opened to create a <codeph>MRSASigner</codeph> object. </cmd>
+<info> Note: The following table lists the objects created for different cryptographic
+operations: </info>
+<stepxmp><table id="GUID-0DE1BD27-AF6F-5CC1-8A9E-9D36380D4EBE">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Operation</b>  </p> </entry>
+<entry><p> <b>Object</b>  </p> </entry>
+</row>
+<row>
+<entry><p>DSA Sign </p> </entry>
+<entry><p> <codeph>MDSASigner</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p>Decrypt </p> </entry>
+<entry><p> <codeph>MCTDecryptor</codeph>  </p> </entry>
+</row>
+<row>
+<entry><p>DH Key Agreement </p> </entry>
+<entry><p> <codeph>MCTDH</codeph>  </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </stepxmp>
+</step>
+<step id="GUID-D3E1854A-D798-5CB5-B528-AB5F672C2AC7"><cmd/>
+<info>Use <codeph>MCTSigner::SignMessage()</codeph> or <codeph>MCTSigner::Sign()</codeph> to
+perform the signing operation. </info>
+</step>
+</steps>
+<result><p>The <codeph>CRSASignature</codeph> object contains the value of
+the signing operation. </p> </result>
+<example><p>The following code snippet shows RSA signing operation: </p><codeblock id="GUID-B7FA7CF8-38D6-5088-B51E-73AB04139997" xml:space="preserve">
+
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(fs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+...
+
+
+
+// Create a filter to retrieve all keys from the store
+TCTKeyAttributeFilter filter;
+filter.iPolicyFilter = TCTKeyAttributeFilter:EAllKeys;
+
+
+
+// Retrieve a list of all the keys from the key store
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the key to be signed
+iKeyStore-&gt;List(iKeys,filter,iStatus);
+
+
+...
+
+
+// Retrieve the key based on the label you are looking for 
+_LIT(Klabel,”keylabel”);
+TInt keyCount = iKeys.Count();
+for (i = 0; i &lt; keyCount; i++)
+{
+    CCTKeyInfo* keyInfo = iKeys[i];
+    if (keyInfo-&gt;Label() == Klabel)
+        {
+            // Create a signer object for the key
+            MRSASigner* iRSASigner
+            // The signer object will be returned after the key has been opened for signing
+            keyStore-&gt;Open(*keyInfo, iRSASigner, iStatus);
+            break;
+        }
+}
+
+
+
+// Perform the signing operation
+
+// Define the data for signing
+
+HBufC* dataToSign; 
+dataToSign = HBufC::NewL(20);
+_LIT(KTxtSign,"Data to be signed");
+*dataToSign = KTxtSign; 
+
+
+CRSASignature* iRSASignature;
+// iRSASignature will contain the result after the completion
+// of the following request
+
+iRSASigner-&gt;SignMessage(*dataToSign, iRSASignature, iStatus);
+
+
+...
+
+
+// Retrieve the RSA signature value through the CRSASignature object 
+TInt signature = iRSASignature-&gt;S();
+</codeblock></example>
+</taskbody><related-links>
+<link href="GUID-C4389D60-2A8D-532D-9D92-E57B0CCD14CF.dita"><linktext>Unified Keystore</linktext>
+</link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F45EA14E-F857-5D59-BFBA-E2F563287359.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F45EA14E-F857-5D59-BFBA-E2F563287359" xml:lang="en"><title>Using Doubly Linked
+Lists</title><shortdesc>These documents describe how to use doubly linked lists.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F46D5A5B-EC44-53B0-9A11-886735B28610.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F46D5A5B-EC44-53B0-9A11-886735B28610" xml:lang="en"><title>How to
+use the modifiable pointer descriptor — TPtr</title><shortdesc>Modifiable pointer descriptors are useful for referencing strings
+or data which can be accessed and changed.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-80F50BD5-A919-5EB3-B28E-4BDF7A2A0121"><p>For text data, it is
+usual to construct a <codeph>TPtr</codeph> type and allow the appropriate
+variant, either a <codeph>TPtr</codeph> or a <codeph>TPtrC</codeph> to be
+selected at build time.</p> </li>
+<li id="GUID-965CB6DC-DE3E-5744-A6D8-10C9A0567011"><p>For binary data, an
+explicit <codeph>TPtr8</codeph> is used.</p> </li>
+<li id="GUID-40B8DB60-33DB-56D3-BDE7-263B1B48840E"><p>It is rare to use an
+explicit <codeph>TPtr16</codeph>.</p> </li>
+</ul>
+<section id="GUID-AEBBFA2C-D87D-48F8-ADBF-0A042F371EC1"><title>Constructing a TPtr</title> <p>A modifiable pointer descriptor
+can be constructed in a number of ways:</p> <ul>
+<li id="GUID-C3767C93-A5BA-5B09-A90D-FAD74E9CDC3F"><p>another modifiable pointer
+descriptor.</p> </li>
+<li id="GUID-9704F005-0931-5DA0-B4C7-7F263270300C"><p>from a non-modifiable
+buffer descriptor using the <codeph>Des()</codeph> function</p> </li>
+<li id="GUID-2F09FD0B-7FE7-5D4E-B353-233B2609F9FC"><p>from an explicit pointer
+into memory and specifying a maximum length.</p> </li>
+<li id="GUID-F9C4E446-B390-56AD-8771-A0C393ADA246"><p>from an explicit pointer
+into memory and specifying the length of the data and a maximum length.</p> </li>
+</ul> <p>The following code fragment constructs a <codeph>TPtr</codeph> to
+represent the data already represented by another <codeph>TPtr</codeph>:</p> <codeblock id="GUID-B9296BAB-8B81-52C4-9730-2290C357656A" xml:space="preserve">TPtr ptr1;
+...
+TPtr ptr2(ptr1);
+...</codeblock> <p>The following code fragment constructs a <codeph>TPtr</codeph> for
+a non-modifiable buffer descriptor, a <codeph>TBufC&lt;TInt&gt;</codeph>, using
+the <codeph>Des()</codeph> function. Data that would normally be unmodifiable
+through the <codeph>TBufC&lt;TInt&gt;</codeph> can be changed through the <codeph>TPtr</codeph>.</p> <p>The
+source are literals which are converted to descriptor type.</p> <codeblock id="GUID-86F2890B-6AD2-5637-90B6-469554026C12" xml:space="preserve">_LIT(KText,"Hello World!");
+_LIT(KExtraText," &amp; Hi");
+...
+TBufC&lt;16&gt; buf1(KText);
+...
+TPtr ptr = buf1.Des();
+...
+ptr.Delete((ptr.Length()-1),1);
+ptr.Append(KExtraText);</codeblock> <p>Define a <codeph>TText</codeph> area
+initialised to contain the string "Have a nice day":</p> <p>The following
+code fragments show the construction of a <codeph>TPtr</codeph> using a pointer
+and specifying a length and a maximum length. This technique is not commonly
+used. Literals are a much better way of defining string constants.</p> <codeblock id="GUID-998F1C38-942B-53F5-BBC5-E33781AF1253" xml:space="preserve">TText str[16] =  {'H', 'a', 'v', 'e', ' ', 'a',
+    ' ', 'n', 'i', 'c', 'e',
+    ' ', 'd', 'a', 'y', '\0'};</codeblock> <codeblock id="GUID-EF4302BB-F536-5B20-B109-1505688B8B60" xml:space="preserve">TPtr ptr(&amp;str[0],15,16);</codeblock> <p>The
+descriptor <codeph>ptr</codeph> represents the data in <codeph>str</codeph> and
+is constructed to have a current length of 15 (the length of the text, excluding
+the zero terminator) and a maximum length of 16 (the actual length of <codeph>str</codeph>).
+Once the descriptor has been constructed, it has no further use for the zero
+terminator.</p> <codeblock id="GUID-23A4799F-7B57-5B2B-B549-2BD168D208EC" xml:space="preserve">TPtr ptr(&amp;str[0],15,16);</codeblock> </section>
+<section id="GUID-AA957AF0-8791-446C-B6E3-DD5EDB642E9E"><title>Replacing data through the TPtr</title> <p>Data can be completely
+replaced using the assignment operator or the <xref href="GUID-CD3C9BD5-1386-3CF5-A8F6-9BE1AE40689F.dita"><apiname>Copy()</apiname></xref> function.:</p> <codeblock id="GUID-DBF0A411-CA03-5EAD-AFCD-1617C52C195F" xml:space="preserve">_LIT(KText,"Hi there");
+...
+ptr = KText;
+...
+ptr.Copy(KText);</codeblock> <p>Note the use of the <codeph>_LIT</codeph> macro
+to define the source string. A literal is converted into a descriptor type.</p> <p>The
+length of <codeph>ptr</codeph> is now 8 but the maximum length remains unchanged.
+The size depends on the build variant. In a non-Unicode build, this is 8 but
+in a Unicode build, this becomes 16 (two bytes for every character).</p> </section>
+<section id="GUID-4A13D438-C058-4370-970E-1139708758E3"><title>Changing the length of data</title> <p>The length of the data
+represented can be changed. </p> <codeblock id="GUID-0AE02AC5-2E85-5950-894A-FF7B6C8C5856" xml:space="preserve">_LIT(KText,"Hi there");
+...
+ptr = KText;
+ptr.SetLength(2);
+ptr.Zero();
+</codeblock> <p>For example, after <codeph>ptr.SetLength(2)</codeph>, the
+descriptor represents the string "Hi". The length can even be set to zero
+so that after <codeph>ptr.Zero()</codeph>, the descriptor represents no data.
+Nevertheless, the maximum length remains unchanged.</p> </section>
+</conbody><related-links>
+<link>
+<desc><xref href="GUID-7CB11EAD-260E-551A-85F1-FEAC975FE722.dita">Literal Descriptors</xref></desc>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0"><title>How to use the audio convert utility</title><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-06F005A3-F80A-5428-9AFE-0BF1B567BE6D"><title>Overview</title> <p>Audio convert utility is used to convert audio clips contained in files or descriptors to other formats using the default codecs provided by MMF. This functionality is implemented by the <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref> class. </p> </section> <section><title>Description</title> <p>Using a audio converter utility involves the following tasks: </p> <ul><li id="GUID-707AF876-DBB4-5AE0-8610-A9E6B5A7D543"><p> <xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita#GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0/GUID-8E3F0FF4-48D5-58E3-9F6B-643D7401EF47">Construct and open converter utility object</xref>  </p> </li> <li id="GUID-0E4A77DB-0E03-5918-9EB1-8AF6F589490B"><p> <xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita#GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0/GUID-F46111C2-E670-5A1D-A091-48B2BB959C1F">Configure conversion parameters</xref>  </p> </li> <li id="GUID-CDCA30C1-7474-554F-A81E-5B13D36B7652"><p> <xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita#GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0/GUID-5B8C4F5B-104E-58F8-A705-A3FD1E2B82FA">Convert audio clip</xref>  </p> </li> <li id="GUID-07128D98-31E5-5090-B9CC-12FA2696A356"><p> <xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita#GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0/GUID-785AFDB4-527A-5AEA-88F3-91F8E348E049">Change conversion position and crop audio data </xref>  </p> </li> <li id="GUID-58C88A02-7CB2-541C-AE59-CB92511D0C1C"><p> <xref href="GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita#GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0/GUID-E79175EB-EBAE-52FB-A594-04F2275A9A5F">Custom commands</xref>  </p> </li> </ul> <p id="GUID-8E3F0FF4-48D5-58E3-9F6B-643D7401EF47"><b>Construct and open converter utility object</b> </p> <p>The MMF provides a utility class called <xref href="GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5.dita"><apiname>CMdaAudioConverterUtility</apiname></xref>. Using this class, you can convert audio clips from one format to another. The <xref href="GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5.dita#GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5/GUID-751B7E8A-4464-3DF0-96C0-B5BDA1200E57"><apiname>CMdaAudioConverterUtility::NewL()</apiname></xref> function need to be used to construct an object of this utility class, with the following arguments: </p> <ul><li id="GUID-11759C41-FAE9-59C5-89DA-131537795AED"><p>An object of the class, which inherits the <xref href="GUID-C18F29E7-6A66-320A-8F19-988BA1E4EAB9.dita"><apiname>MMdaObjectStateChangeObserver</apiname></xref> class to receive state change notifications from the converter object. </p> </li> <li id="GUID-577C3B7C-30A4-5ECC-A38D-DCE762F8AA80"><p>Client's relative priority, which can be <codeph>EMdaPriorityMin</codeph>, <codeph>EMdaPriorityNormal</codeph> or <codeph>EMdaPriorityMax</codeph>. </p> </li> <li id="GUID-1639A961-D674-525A-8B59-C1837441BD3B"><p>An object of <xref href="GUID-0C8D114E-EE63-3A33-83AE-AB75B23E4E71.dita"><apiname>TMdaPriorityPreference</apiname></xref> specifying the behaviour, if a higher priority client takes over the device. </p> </li> </ul> <p>The following code shows how the client application <codeph>CClientApp</codeph> inherits the <xref href="GUID-C18F29E7-6A66-320A-8F19-988BA1E4EAB9.dita"><apiname>MMdaObjectStateChangeObserver</apiname></xref> and creates the audio converter utility object: </p> <codeblock id="GUID-0DD27445-881B-5A95-8E06-BE066206B429" xml:space="preserve">class CClientApp : public CBase, MMdaObjectStateChangeObserver
+    {
+public:
+   void CClientApp();
+protected:
+
+    // from MMdaObjectStateChangeObserver
+    virtual void MoscoStateChangeEvent(CBase *aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode);
+    
+protected:
+    CMdaAudioConverterUtility*    iConverter;   
+    };
+
+void CClientApp()
+{    
+    iConverter = CMdaAudioConverterUtility::NewL(*this, EMdaPriorityNormal,
+                   EMdaPriorityPreferenceTimeAndQuality);
+}
+</codeblock> <p>Once the audio converter utility object is constructed, you can open an audio clip for conversion using the function <xref href="GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5.dita#GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5/GUID-B6F6968B-3731-3FD3-AE85-003786EFCBF9"><apiname>CMdaAudioConverterUtility::OpenL()</apiname></xref>. You can use the following versions of this function: </p> <ul><li id="GUID-4AAA0055-3EC1-5B47-8ED9-8A1562F45292"><p>To open an existing audio file and append the converted audio data to another file, use the following version: </p> <codeblock id="GUID-32DB2AEF-251A-5C2A-AE73-6BCCB4DEAC48" xml:space="preserve">OpenL(const TDesC&amp; aPrimaryFile, const TdesC&amp; aSecondaryFile);</codeblock> <p>Where, <codeph>aPrimaryFile</codeph> and <codeph>aSecondaryFile</codeph> are used to specify the source and destination audio file names. </p> </li> <li id="GUID-403A3496-1B71-5DE0-AF6D-56453E7FC349"><p>To open existing audio file and store the converted audio data to either a file or a descriptor, use the following version: </p> <codeblock id="GUID-E5DCD0F0-BB3E-5AE4-AA6F-2D9D3A43B9B9" xml:space="preserve">OpenL(const TdesC&amp; aPrimaryFile
+        TMdaClipLocation* aLocation,
+        TMdaClipFormat* aFormat,
+        TMdaPackage* aArg1 = NULL,
+        TMdaPackage* aArg2 = NULL);
+</codeblock> <p>Where, <codeph>aPrimaryFile</codeph> specifies the source audio file names. The <codeph>aLocation</codeph>, <codeph>aFormat</codeph>, <codeph>aArg1</codeph> and <codeph>aArg2</codeph> are used to specify the target location for the converted audio data, target audio format, codec for the target audio and target audio settings. </p> </li> <li id="GUID-0A3D5957-920F-5232-85A0-F5137A6E9759"><p>To open audio data either from a file or a descriptor source and store the resulting data to either a file or descriptor, use the following version: </p> <codeblock id="GUID-51904005-0194-587B-BBAE-5DD14FF09593" xml:space="preserve">OpenL(TmdaClipLocation* aPriLocation
+        TMdaClipLocation* aSecLocation,
+        TMdaClipFormat* aPriFormat,
+        TMdaClipFormat* aSecFormat,
+        TMdaPackage* aPriArg1 = NULL,
+        TMdaPackage* aPriArg2 = NULL,
+        TMdaPackage* aSecArg1 = NULL,
+        TMdaPackage* aSecArg2 = NULL);
+</codeblock> <p>Where, <codeph>aPriLocation</codeph> and <codeph>aPriLocation</codeph> specifies the source and destination audio data locations. The <codeph>aPriFormat</codeph> and <codeph>aSecFormat</codeph> specifies the audio format of the source and target audio data. The <codeph>aPriArg1</codeph> and <codeph>aPriArg2</codeph> specifies codec and settings for the source audio data. Whereas, the <codeph>aSecArg1</codeph> and <codeph>aSecArg2</codeph> specifies the codec and settings for the target audio data. </p> </li> </ul> <p> <b>Note</b>: It is recommended to use the first version of <codeph>OpenL</codeph> to specify source and destination audio file location. The arguments for the other versions are deprecated. </p> <p>The following code uses the first version of OpenL to specify source and destination audio location: </p> <codeblock id="GUID-AEAF18F8-C228-581A-ADBF-48B67E72E8B2" xml:space="preserve">TFileName fromFilename = _L("C:\\rectest2.wav");
+TFileName toFilename = _L("C:\\rectest2.wav");
+
+iConverter-&amp;gt;OpenL(&amp;fromFilename, &amp;toFilename);
+</codeblock> <p>Once the converter calls the <xref href="GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5.dita#GUID-30F792FF-577D-36F3-9905-6AAAC53B25D5/GUID-B6F6968B-3731-3FD3-AE85-003786EFCBF9"><apiname>CMdaAudioConverterUtility::OpenL()</apiname></xref> function, the callback function <xref href="GUID-C18F29E7-6A66-320A-8F19-988BA1E4EAB9.dita#GUID-C18F29E7-6A66-320A-8F19-988BA1E4EAB9/GUID-4FD38520-962C-3FA3-9F29-012695B1841B"><apiname>MMdaObjectStateChangeObserver::MoscoStateChangeEvent()</apiname></xref> will notify the client application about the change in state of the object. </p> <p id="GUID-F46111C2-E670-5A1D-A091-48B2BB959C1F"><b>Configure conversion parameters</b> </p> <p>The configuration parameters can be broadly classified into four categories as shown below: </p> <p><b>Set recorded file length </b> </p> <p>You can control the size settings of a recorded file. This is handled by the <xref href="GUID-123B2967-5B45-3FE3-9FDB-937D254DBAC7.dita"><apiname>SetMaxWriteLength()</apiname></xref> function that sets the maximum number of bytes that can be written to a recorded audio clip. The <xref href="GUID-123B2967-5B45-3FE3-9FDB-937D254DBAC7.dita"><apiname>SetMaxWriteLength()</apiname></xref> function is provided so that converters can limit the amount of file storage or memory that should be allocated. If the maximum limit is reached, MMF stops recording and notifies the client application. </p> <p>The following code sets the maximum number of bytes to 800: </p> <codeblock id="GUID-D472EA81-8859-573A-BEB1-36B5C12577B4" xml:space="preserve">iConverter-&gt;SetMaxWriteLength(800);</codeblock> <p><b>Formats and Codecs </b> </p> <p>You can report and set formats and codecs for audio data that is already open. The four methods related to DataTypes (codecs) enable you to retrieve a list of supported codecs for the current data format, set a new codec to use or determine which codec is currently in use. A further three methods are provided to query and set the audio format to use. </p> <p>Codec related actions: </p> <ul><li id="GUID-BEFE741E-42F8-5A2A-A045-9DEED5351AF8"><p>To get the data type of the destination audio clip, use the <xref href="GUID-DE1B22B0-EA40-3400-8880-B8D02FEA53AE.dita"><apiname>DestinationDataTypeL()</apiname></xref> function. </p> </li> <li id="GUID-88543928-F6EA-5D88-A470-383203E328C5"><p>To set the data type of the destination audio clip, use the <xref href="GUID-C63D3BEC-50E2-39F3-9F72-E5FC1E7EDBC3.dita"><apiname>SetDestinationDataTypeL()</apiname></xref> function. </p> </li> <li id="GUID-11EC06F6-E79D-53CA-8A55-E5E2A709695A"><p>To get a list of supported data types for the conversion destination, use the <xref href="GUID-C2183CDC-E0E9-3324-BF38-5CC970F8E465.dita"><apiname>GetSupportedDestinationDataTypesL()</apiname></xref> function. </p> </li> <li id="GUID-FC20AD49-B7F3-55AE-9DC9-96751497FF70"><p>To get the data type of the source audio clip, use the <xref href="GUID-7B7BB5C5-2435-3AA8-B320-46E7BB308F16.dita"><apiname>SourceDataTypeL()</apiname></xref> function. </p> </li> </ul> <p>Data format related actions: </p> <ul><li id="GUID-63B22181-DCE4-5CF4-AACE-52F92F529821"><p>To get the format of the destination audio clip, use the <xref href="GUID-E0245ACC-E3AE-36EB-9126-8D8325CA23AA.dita"><apiname>DestinationFormatL()</apiname></xref> function. </p> </li> <li id="GUID-E3224695-C58D-5986-819B-E7178ADF7537"><p>To set the format of the destination audio clip, use the <xref href="GUID-730E4D19-96E7-373D-BC5C-981866923767.dita"><apiname>SetDestinationFormatL()</apiname></xref> function. </p> </li> <li id="GUID-C4A10676-7A39-50B1-807D-1F91B8CC3743"><p>To get the format of the source audio clip, use the <xref href="GUID-37E7132D-6E48-38FE-9C00-77E4AE4320B9.dita"><apiname>SourceFormatL()</apiname></xref> function. </p> </li> </ul> <p> <b>Note</b>: It is only possible to report the format and codec used by the source audio and cannot be changed. </p> <p><b>Bit and sample rates </b> </p> <p>You can report and set bit and sample rates as required by specific codecs. </p> <p>Methods to control the bit rate of audio data: </p> <ul><li id="GUID-6F218910-6BDD-5553-9648-1F62305F3589"><p>To get a list of supported bit rates to the conversion destination, use the <xref href="GUID-5777E279-44DB-3256-A2FC-A1E7056EA7C0.dita"><apiname>GetSupportedConversionBitRatesL()</apiname></xref> function. </p> </li> <li id="GUID-6ED4056A-AFAC-5051-B77F-DB094C6470CD"><p>To get the bit rate of the destination audio clip, use the <xref href="GUID-2701C3DD-5E86-34EB-BF46-1B7E59B35CE6.dita"><apiname>DestinationBitRateL()</apiname></xref> function. </p> </li> <li id="GUID-7B6C2AF7-E5BA-548C-BB91-182C4285D0D3"><p>To set the bit rate of the destination audio clip, use the <xref href="GUID-CD9399AE-0525-3E6F-8D1D-69F7DD9C3774.dita"><apiname>SetDestinationBitRateL()</apiname></xref> function. The bit rate must be one of the supported bit rates of the audio target. Use the <xref href="GUID-5777E279-44DB-3256-A2FC-A1E7056EA7C0.dita"><apiname>GetSupportedConversionBitRatesL()</apiname></xref> function to retrieve a list of supported bit rates. </p> </li> <li id="GUID-0D644C39-21EF-57DB-B1C3-EA6109E05AF0"><p>To get the bit rate of the source audio clip, use the <xref href="GUID-A3511295-70AE-38D6-A362-334CD3722D26.dita"><apiname>SourceBitRateL()</apiname></xref> function. </p> </li> </ul> <p> <b>Note</b>: None of the default codecs provided in the MMF support the use of bit rates. These methods are provided to enable the creation of additional codecs that might require bit rate information, such as the audio format MP3. </p> <p>Methods for controlling the sampling rate of audio data: </p> <ul><li id="GUID-C59895FE-BAF7-54E3-B5C9-8BC559EF1B32"><p>To get a list of supported conversion sample rates, use the <xref href="GUID-1F8A204E-D666-37AA-8591-FC325684EF3E.dita"><apiname>GetSupportedConversionSampleRatesL()</apiname></xref> function. The list of sample rates is used by the conversion destination. </p> </li> <li id="GUID-CB4C78D7-827D-5247-8832-8A7271087CAC"><p>To get the sample rate of the conversion destination, use the <xref href="GUID-67DF026D-A62F-37F7-A581-388CF65B4E5A.dita"><apiname>DestinationSampleRateL()</apiname></xref> function. </p> </li> <li id="GUID-390679E1-CB13-5722-B090-8E5001142FE3"><p>To set the sample rate for the conversion destination, use the <xref href="GUID-71A4BDE9-4785-35E4-95CE-0AECF929C7D9.dita"><apiname>SetDestinationSampleRateL()</apiname></xref> function. The sample rate must be one of the supported sample rates of the audio target. Use the <xref href="GUID-1F8A204E-D666-37AA-8591-FC325684EF3E.dita"><apiname>GetSupportedConversionSampleRatesL()</apiname></xref> function to retrieve a list of supported sample rates. </p> </li> <li id="GUID-5A4D9803-D3FA-5C3E-A110-4B910A675B26"><p>To get the sample rate of the source audio clip, use the <xref href="GUID-FBC478AB-D28C-3BB2-B4C7-6FD2111B00CC.dita"><apiname>SourceSampleRateL()</apiname></xref> function. </p> </li> </ul> <p> <b>Note</b>: It is only possible to report the bit rate or sample rate used by the source audio and cannot be changed. </p> <p><b>Balance </b> </p> <p>You can report and set the audio mode (mono or stereo). </p> <ul><li id="GUID-AE349537-63C5-500A-96BC-FFD62CA6FA16"><p>To get a list of the supported number of channels for conversion, use the <xref href="GUID-C5418287-E4F4-3E4A-B91C-64D814B8BA60.dita"><apiname>GetSupportedConversionNumberOfChannelsL()</apiname></xref> function. </p> </li> <li id="GUID-36B76579-0DA0-5514-9E5F-3B7AAA31F16B"><p>To get the number of channels the destination audio clip contains, use the <xref href="GUID-C954863D-701A-3A9A-AC60-00F3CB48F46F.dita"><apiname>DestinationNumberOfChannelsL()</apiname></xref> function. </p> </li> <li id="GUID-B6CC8F43-C44F-5C1B-909F-4517C31844CF"><p>To set the number of channels the destination audio clip contains, use the <xref href="GUID-87973927-F58D-3961-9777-E9E2A7C7DF22.dita"><apiname>SetDestinationNumberOfChannelsL()</apiname></xref> function. The number of channels must be one of the values returned by <xref href="GUID-C5418287-E4F4-3E4A-B91C-64D814B8BA60.dita"><apiname>GetSupportedConversionNumberOfChannelsL()</apiname></xref>. </p> </li> <li id="GUID-7C522973-402E-5231-9A51-76C640C13568"><p>To get the number of channels used by the conversion source, use the <xref href="GUID-D74F993C-E4AA-3645-88FC-14C699423110.dita"><apiname>SourceNumberOfChannelsL()</apiname></xref> function. </p> </li> </ul> <p> <b>Note</b>: It is only possible to report the number of supported channels for the source audio and cannot be changed. </p> <p id="GUID-5B8C4F5B-104E-58F8-A705-A3FD1E2B82FA"><b> Convert audio clip</b> </p> <p>Several methods are provided in <xref href="GUID-810D29DA-8332-3E63-8A63-5B8A04EC9688.dita"><apiname>CMdaAudioConvertUtility</apiname></xref> to enable the conversion of audio data. The specific functions to convert and perform related tasks are as follows: </p> <ul><li id="GUID-ED4D516E-EDD0-59D4-86C9-06E61189D2A5"><p>To start converting audio data from the current position within the audio source and writing the converted data to a play window within the destination file, use the <xref href="GUID-F25BDC34-C955-312A-838E-09CA2EBAB418.dita"><apiname>ConvertL()</apiname></xref> function. </p> </li> <li id="GUID-41EF4109-6406-5777-A696-72421DF6E4C4"><p>To stop audio conversion, use the <xref href="GUID-7CBDCF0D-1D11-34D1-BF5C-1E5B50DA75B5.dita"><apiname>Stop()</apiname></xref> function. The positions within the audio source and destination are maintained to handle subsequent <xref href="GUID-F25BDC34-C955-312A-838E-09CA2EBAB418.dita"><apiname>ConvertL()</apiname></xref> statements. </p> </li> <li id="GUID-F1C55C8A-F965-5857-A488-4C029CFC6D07"><p>To stop audio conversion and close all related controllers, use the <xref href="GUID-01D2AF56-21E1-3FF3-BF86-0C356A1658EF.dita"><apiname>Close()</apiname></xref> function. </p> </li> </ul> <p id="GUID-785AFDB4-527A-5AEA-88F3-91F8E348E049"><b>Change conversion position and crop audio data</b> </p> <p>It is possible to crop the audio clip from the current position to the end of the clip or from the begging to the current position as illustrated below: </p> <ul><li id="GUID-31CF2D85-4ACD-5B37-A4F9-67F435BE302C"><p>To crop the current clip from the current position, use the <xref href="GUID-55FA7E3D-0137-3B74-8911-0D21D3038B85.dita"><apiname>CropL()</apiname></xref> function. The remainder of the clip is discarded. The effects of the function cannot be undone. The function is synchronous and can leave if there is a problem. The leave code depends on the configuration settings. </p> </li> <li id="GUID-70B87D7E-D4C2-5A26-B1D2-44315A404D4A"><p>To crop the audio clip from the start of the file to the current position, use the <xref href="GUID-EFB452A7-07A7-3AA8-988A-BD3EB2E1EF0A.dita"><apiname>CropFromBeginningL()</apiname></xref> function. The audio data prior to the current position is discarded. The effects of the function cannot be undone. The function is synchronous and can leave if there is a problem. The leave code depends on the configuration settings. </p> </li> </ul> <p>To retrieve the current position of the audio clip or move the position to the desired location use the following functions: </p> <ul><li id="GUID-4764FACE-A6E6-58DE-81A2-B6DF19647673"><p>To get the current position in the audio clip, use the <xref href="GUID-663106A9-3FA5-3471-A9C6-9D2FFD94FB7B.dita"><apiname>Position()</apiname></xref> function. The position is defined in terms of a time interval measured from the beginning of the audio sample data. </p> </li> <li id="GUID-431A1E59-15CC-5463-83D5-64FE363369FA"><p>To set the current position in the audio clip, use the <xref href="GUID-2C54E7FC-7C61-35FA-B129-1B15FFAC8F69.dita"><apiname>SetPosition()</apiname></xref> function. A subsequent call to the <xref href="GUID-F25BDC34-C955-312A-838E-09CA2EBAB418.dita"><apiname>ConvertL()</apiname></xref> function starts conversion from this new position. </p> </li> </ul> <p id="GUID-E79175EB-EBAE-52FB-A594-04F2275A9A5F"><b> Custom commands</b> </p> <ul><li id="GUID-403EADC5-2D41-54F5-A97B-3484B754109B"><p>To send a raw custom command synchronously to the controller or to allow data to be returned from the controller, use the <xref href="GUID-8B88A239-C622-3952-9737-A7BEEA99AC9B.dita"><apiname>CustomCommandSync() </apiname></xref> function. </p> </li> <li id="GUID-8958B82D-B1C5-5D27-B931-D957735955E4"><p>To send a raw custom command asynchronously to the controller or to allows data to be returned from the controller, use the <xref href="GUID-601DC50C-CD58-3604-98B2-35A7B5E6EBD8.dita"><apiname>CustomCommandAsync() </apiname></xref> function. </p> </li> </ul> </section> <section><title>See Also</title> <p> <xref href="GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita">How to use the audio player utility</xref>  </p> <p> <xref href="GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita">How to use audio recorder utility</xref>  </p> <p> <xref href="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita">How to use the audio tone player utility</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F4875493-6501-56FC-90E5-5EEAA89A72C3"><title>Persistent Storage Overview</title><shortdesc>Provides application data persistence between sessions. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section id="GUID-D2371A03-C03A-5B5B-B7B3-0F2BB591C5B5"><title>Purpose</title> <p>The Persistent Storage collection contains various solutions to the problem of persisting application data. </p> </section> <section id="GUID-E8C28A02-B3AA-565D-8D57-B6544E084FED"><title>Architecture</title> <p>The components of the Persistent Storage collection are mainly independent of each other from an architectural point of view. The only exception to this is that the relational database functionality provided by DBMS makes use of stores. However, that is a matter of implementation: the two components are alternative solutions to data persistence and are not used in combination. </p> </section> <section id="GUID-050F9EDA-D865-5A9D-9724-A77E110B9EE5"><title>Description</title> <p>The functionality of each component is threefold: </p> <ul><li id="GUID-230C8DC2-B0D6-5B8C-83F0-B8C2106A9B15"><p>Writing application data to memory, </p> </li> <li id="GUID-C3EA82BF-D383-5EC8-9678-47A8C1C2F16E"><p>Reading application data from memory, and </p> </li> <li id="GUID-6B42679F-23EF-5103-A127-30A8DAF5BE50"><p>Managing data integrity when several applications are reading from or writing to memory using the same component. </p> </li> </ul> </section> <section id="GUID-0B1E079A-053A-5353-B893-80937B1BA008"><title>Components</title> <ul><li id="GUID-E2B97EA3-DC57-52DE-BC78-5652445B2932"><p>Central Repository persists application data using repositories created at build time. </p> </li> <li id="GUID-821D0353-2FC8-5BB5-A688-DFED76DC5911"><p>Store persists application data using data streams. </p> </li> <li id="GUID-DB2F0354-F487-5788-AB77-1F777731B778"><p>DBMS persists application data using relational databases. </p> </li> <li id="GUID-AD472637-B65F-5EF9-944D-DD20D5C6E34F"><p>SQL persists application data using relational databases. </p> </li> <li id="GUID-C363166D-9786-52D6-8CF5-33E17BF690DE"><p>SQLite persists application data using relational databases. </p> </li> </ul> </section> <section><title>Using Persistent Storage</title> <p>The components of this collection are all used for the same purpose, persisting application data. They differ in the strategy used and in their implementation. </p> </section> </conbody><related-links><link href="GUID-CBC57511-7F28-596A-9763-5674EB41BCAC.dita"><linktext>Central Repository
+                Overview</linktext> </link> <link href="GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita"><linktext>DBMS Overview</linktext> </link> <link href="GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita"><linktext>Store Overview</linktext> </link> <link href="GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita"><linktext>Symbian SQL Overview</linktext> </link> <link href="GUID-5CA62D99-15E2-5556-966F-CFC3FCE3B246.dita"><linktext>SQLite 3 Overview</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F48CC072-66A0-5DBA-99A2-2F3BABF83BEB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-F48CC072-66A0-5DBA-99A2-2F3BABF83BEB"><title>Using Template Records: Tutorial</title><shortdesc>This tutorial shows you how to create a template record and how to load a template record. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody> <prereq id="GUID-79D61D00-D3F8-5B59-A31B-70D62A678A28"><p>Before you start, you must understand: </p> <ul><li id="GUID-501A8C46-76F8-5F01-9CA8-FA9FC96ECEC5"><p>the general concept of the Comms Database </p> </li> <li id="GUID-2B9C290D-8200-58CF-9724-445A76B7A97D"><p>the specific concepts of fields, records, links and tables </p> </li> <li id="GUID-150E70EC-2BB5-5D64-9A62-11F08E22177E"><p>how to write and build application code to run on Symbian OS </p> </li> </ul> </prereq> <context id="GUID-9DE45A6C-27FB-5044-ABF9-4AB80EE25F96"><p>A template record contains default data values. You can use a template record when you create a record to add to the Comms Database. </p> <p>For example, the records in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-430CB4B1-2AC5-5773-AA59-ED8D275D555A">DialOutISP</xref> table are large. Many of the fields in a <codeph>DialOutISP</codeph> record have values that are the same in all <codeph>DialOutISP</codeph> records. A template record can contain these common values. When you create a <codeph>DialOutISP</codeph> record, set the value of those fields to be copied from the template record to NULL. Set the other fields in your <codeph>DialOutISP</codeph> record to values that are specific to that record. </p> <p>These principles apply to all record types. </p> <p>The following steps create and load a template record for the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-303A3C65-3391-540D-B0FB-75E92DC7663E">Network</xref> table. </p> </context> <steps id="GUID-43AC55D4-7A92-5E2C-A553-BB5C7C480676"><step id="GUID-EFB76398-E924-595C-8543-1BA161B759FE"><cmd>Make sure that you have created a session. </cmd> </step> <step id="GUID-20CE8E14-9901-58C3-9748-08647689D2BC"><cmd>Set the attribute mask for this session to hidden. </cmd> <info>Template records are marked as hidden. Set the session mask to hidden to allow you to view the template records. </info> <stepxmp><codeblock id="GUID-26C827E9-26DC-5754-BFF1-45217834371B" xml:space="preserve">cmdbSession-&gt;SetAttributeMask(ECDHidden); 
+</codeblock> </stepxmp> </step> <step id="GUID-59D75159-147D-5B6D-848D-F08FF4531741"><cmd>Create a template record and store it in the database. </cmd> <stepxmp><codeblock id="GUID-354E9238-2723-53DE-9E65-FC7A7FDDFE36" xml:space="preserve">...
+// Create a "Network" record, but give it the unique numeric Id KCDDefaultRecord.
+// The CommsDat API interprets the record Id KCDDefaultRecord to mean the 
+// template record.
+CCDNetworkRecord* ptrNetworkRecord = (CCDNetworkRecord*)CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord);
+ptrNetworkRecord-&gt;SetRecordId(KCDDefaultRecord);
+
+// Template records must be hidden.
+ptrNetworkRecord-&gt;SetAttributes(ECDHidden);
+
+// Store the template record in the database
+ptrNetworkRecord-&gt;StoreL(*cmdbSession);
+...</codeblock> </stepxmp> </step> <step id="GUID-9C8B3007-85BE-54CB-97AE-3F895432925A"><cmd>Load the template record from the Comms Database </cmd> <stepxmp><codeblock id="GUID-7B3746E9-D7A4-5CBE-9D7B-E2365956F2C6" xml:space="preserve">...
+// Create an empty "Network" record, and set the record Id to KCDDefaultRecord
+// The CommsDat API interprets the record Id KCDDefaultRecord to mean the 
+// template record.
+CCDNetworkRecord* ptrNetworkRecord = (CCDNetworkRecord*)CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord);
+ptrNetworkRecord-&gt;SetRecordId(KCDDefaultRecord);
+ptrNetworkRecord-&gt;LoadL(*cmdbSession);
+...</codeblock> </stepxmp> </step> </steps> </taskbody><related-links><link href="GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita"><linktext>Comms Database
+                concepts</linktext> </link> </related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F49A5630-0BDE-5214-99F9-E4DAC9C5B548.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F49A5630-0BDE-5214-99F9-E4DAC9C5B548"><title>What is IP Security Policy (IPSecPol)? </title><shortdesc>This topic describes the IPSecPol. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The IPSecPol Manager Server is a part of the IPSec. It is a process that is independent of the Root Server process. The name of the process is <codeph>ipsecpol.exe</codeph> and it has a UID of 01000000. It has a configuration which is loaded from the following location: </p> <p> <filepath>private\01000000\IPSecPol.pol</filepath> </p> <p>This configuration file permits the addition of Autoload policies which allows the current IPSec policy manager functionality to be extended. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4B61436-5496-4913-A769-794318C6B964.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-F4B61436-5496-4913-A769-794318C6B964" xml:lang="en"><title>Updating
+an Alarm</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Editing of alarms is not supported. In scenarios when you
+want to edit an alarm, remove the original alarm and add a new updated alarm.
+However, the following alarm properties can be updated:</p>     <ul>
+<li><p><b>Characteristics of an alarm</b> (<codeph>TAlarmCharacteristics</codeph>)
+- The characteristics are updated, and these are used to determine whether
+the client is still notified when an alarm expires, and whether the alarm
+dialog is displayed when an alarm expires. </p></li>
+<li><p><b>DayOrTimed</b> - It indicates whether the alarm is
+associated with a day or a timed appointment. The default is Timed. This property
+is ignored by Alarm Server, and is for the client’s use only.</p></li>
+</ul></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4BD69B6-008E-51DB-ABFF-1E17E10B053F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F4BD69B6-008E-51DB-ABFF-1E17E10B053F"><title>How to use sessions efficiently</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>For most purposes, it is not necessary for the user of the file server to be aware that it is implemented in a client-server architecture. However, for some purposes, you can make your programs much more efficient if you are aware of the implications of client-server interaction. </p> <p>Essentially, you gain efficiency by using as few as possible client-server calls. The main technique for achieving this is to transfer more data with each file server function call. Things to watch out for include: </p> <ul><li id="GUID-FD15653A-9127-5665-A572-C45B95705D93"><p>Data transfer: use a large buffer, and then read bytes from the buffer </p> <p>The main data-transfer clients of the file server all operate through the stream store and the relational database. Buffering has been highly optimised for these two components. Therefore, application programs using these components automatically gain the maximum efficiency in data transfer, without needing any explicit optimisation. </p> </li> <li id="GUID-52E7009A-368B-5596-AD14-D5C493119472"><p>Reading directories </p> <p>There are functions to read a single directory entry at a time, but it is often more useful to read multiple directory entries from the server and then to scan through them client-side. </p> </li> <li id="GUID-4E5A5D73-018B-5ED9-8B3C-5968F40F07C7"><p>Large-scale copying, moving and other file management operations </p> <p>A single class, <xref href="GUID-82CEC14F-1479-3922-846A-9FCDB6465EF7.dita"><apiname>CFileMan</apiname></xref>, provides high-level function for this, involving only a small number of client-server calls. </p> </li> </ul> <p>The <xref href="GUID-F673F02A-AC5B-3D0F-8D14-21E6221E5015.dita"><apiname>TParseBase</apiname></xref> hierarchy of classes, for analysing file names, operates without client-server interaction. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4C3DDE1-F7D3-5256-BABD-34759DCA57BF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F4C3DDE1-F7D3-5256-BABD-34759DCA57BF"><title> tidy</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>tidy</codeph>  <codeph>[-k] [-v] </codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>This command removes releasables defined by <filepath>.mmp</filepath> files which are listed with the <codeph>tidy</codeph> attribute in your component’s description file.</p> <p>The command can be run following a build to remove any releasables which are no longer required now that the build has completed.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F"><title>Launching Zsh</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes how to launch Zsh using a Telnet session on a PC. You can use the following methods: </p> <ul><li id="GUID-3598635A-D7CD-5603-B7AD-79D417AE47EA"><p> <xref href="GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita#GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F/GUID-8B921FD5-CC14-5B1C-91EA-DD0D1A2539DE"> Emulator as a Telnet server</xref>  </p> </li> <li id="GUID-E81D52C9-003A-5BE5-8DB3-35449F39E5AD"><p> <xref href="GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita#GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F/GUID-F95A0266-A1EF-50E6-A5DC-3C64102C0F08"> Device (phone) as a Telnet server</xref>  </p> </li> </ul> <section id="GUID-8B921FD5-CC14-5B1C-91EA-DD0D1A2539DE"><title>Emulator as a Telnet server</title> <p>To launch Zsh (using a Telnet session) on a PC using an emulator as a Telnet server, perform the following steps: </p> <ol id="GUID-503E2376-7EAF-56C1-9160-F4F372186802"><li id="GUID-1F803171-9692-50D7-90ED-79626BDD8C17"><p>Start the emulator by selecting <b>Extras</b> &gt; <b>Eshell</b>. </p> </li> <li id="GUID-3A38C35A-04B9-52DA-8F76-36C59F6E4FB6"><p>Run the following command: </p> <p><userinput>TelnetD</userinput> </p> <p> <b>Note:</b> Before running the <codeph>Telnetd</codeph> command, ensure that <filepath>Zsh.exe</filepath> and the external command executables such as <filepath>find.exe</filepath>, <filepath>grep.exe</filepath>, <filepath>ps.exe</filepath>, <filepath>unzip.exe</filepath> and <filepath>zip.exe</filepath> are present in a <filepath>sys/bin</filepath> folder. You can copy these files from the <filepath>/epoc32/release/winscw/&lt;udeb/urel</filepath> &gt; directory. </p> </li> <li id="GUID-623F3295-998D-5BDB-A62A-5B61A26E0D2C"><p>The IP address of the Telnet server running on the emulator is displayed, as shown in the following image: </p> <fig id="GUID-189039DA-9401-5252-80FE-8D938E463EE8"><title>
+              IP configuration 
+            </title> <image href="GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e120681_href.png" placement="inline"/></fig> </li> <li id="GUID-EC72EDFB-8ACD-5036-9050-9633CA625957"><p>In a scenario where multiple IP addresses are listed, use the <codeph>ping</codeph> command from the PC console to identify the IP address that is accessible from the PC, as shown in the following image. </p> <fig id="GUID-C010C9CD-ED32-5C2B-B448-DE1E45FBD258"><title>
+              Using the ping command 
+            </title> <image href="GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e120695_href.png" placement="inline"/></fig> </li> <li id="GUID-A0D77A28-4D2A-5031-B58E-6D7E3022413E"><p>Open command prompt on a Windows PC. </p> </li> <li id="GUID-AB9BD817-CEF1-5701-9E54-16127D2FF5E7"><p>Run the following command by typing the IP address (associated with the emulator) that is accessible from the PC: </p> <p><userinput>telnet &lt;ip-address of the emulator&gt;</userinput> </p> <p>The emulator and the Telnet client console prompts for an alphanumeric key to authenticate the session. </p> </li> <li id="GUID-FF995AA7-531E-5CE9-8D3F-A923847B7131"><p>Type the same alphanumeric key (which is upto eight characters) both on the emulator console window and also on the Telnet client console. </p> <p>Zsh is successfully launched on the PC. </p> </li> </ol> </section> <section id="GUID-F95A0266-A1EF-50E6-A5DC-3C64102C0F08"><title>Device (phone) as a Telnet server</title> <p>After establishing a connection between a device and the PC using one of the methods described in the <xref href="GUID-DC6AF355-3079-531F-98F7-A70AC13A2863.dita">Device Setup</xref> section, you can launch Zsh. To launch Zsh (using a Telnet session) on a PC using a device as a Telnet server, perform the following steps: </p> <p> <b>Note:</b> Before starting a Telnet session, ensure that TelnetD and Zsh are installed on the device. </p> <ol id="GUID-97736606-0B15-5ABB-8CCD-56E7CF225EA4"><li id="GUID-16CB0BAD-9AE1-5390-AD0D-D2A0922E8045"><p>Start TelnetD on the device by clicking the <b>Zsh</b> icon. The IP address of the Telnet server running on the device is displayed. </p> </li> <li id="GUID-B8DCD78C-2919-5B99-AF46-E0AE21C5D995"><p>In a scenario where multiple IP addresses are listed, use the <codeph>ping</codeph> command from the PC console to identify the IP address of the device that is accessible from the PC. </p> </li> <li id="GUID-0294250D-AA30-5E12-87C7-2B71AA0575C3"><p>Open command prompt on a Windows PC. </p> </li> <li id="GUID-CE2B9EF0-2BCD-56A6-ABB5-CD2F327AFAC3"><p>Run the following command, by typing the IP address (associated with the device) that is accessible from the PC: </p> <p><userinput>Telnet &lt;ip-address of the device&gt;</userinput> </p> <p>The device and the Telnet client console prompts for an alphanumeric key to authenticate the session. </p> </li> <li id="GUID-CCE9AD14-2BB9-5A6D-A4F4-B401891B2F00"><p>Type the same alphanumeric key (which is upto eight characters) both on the device console window and also on the Telnet client console. </p> <p>Zsh is successfully launched on the PC. The following image shows the result of this command on a Linux PC: </p> <fig id="GUID-291093D9-691C-5C97-BB84-09B4CCE9490D"><image href="GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e120785_href.png" placement="inline"/></fig> </li> </ol> </section> </conbody><related-links><link href="GUID-DA204619-9F02-5854-80BE-0AC6BB80D730.dita"><linktext>Emulator Setup</linktext> </link> <link href="GUID-DC6AF355-3079-531F-98F7-A70AC13A2863.dita"><linktext>Device Setup</linktext> </link> <link href="GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita#GUID-94F21522-D598-5F85-BE04-D606AE8D5A25/GUID-B6A34708-CA62-5B2C-918B-595B78D80EDA"><linktext>Using TelnetD and Zsh</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3" xml:lang="en"><title>Touch-enabled
+vs. touch-optimized</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-5A2B0210-EE1A-4B8F-A714-F7CA1EC2B1EA"> <p>Rather than being
+touch-enabled, certain applications can be touch-optimized, that is, designed
+primarily for touch screen interaction. When developing applications for a
+touch interface, the first question you should ask is: which interactions
+benefit the most from touch UI? While physical strokes and gestures allow
+for more natural interaction with objects, the fact that one can apply them
+does not mean they are appropriate for every situation. </p> <p>There are
+a few good tips when designing applications for touch use. First, it is imperative
+that design decisions are based on real, considered touch use cases. Secondly,
+as touch functions require a fair amount of discovery from the user, it is
+good if only very obvious functions are made touch-enabled. </p> <p><b>Why
+to use touch</b></p><ul>
+<li><p><b>More flexible:</b> Compared to fixed hardware keys, the interface
+can change dynamically. This allows for more flexible configurations depending
+on the functionality needs, languages, and so on. Thus a very small screen
+can change its buttons as needed. Also, with indirect strokes and gestures,
+there are numerous possibilities. No use of physical buttons is required.</p><fig id="GUID-63BE4283-7856-4448-9058-99E286C2EA65">
+<image href="GUID-EC366CB0-AFC8-4501-867C-4FBD2CFE6235_d0e46963_href.png" scale="60" placement="inline"/>
+</fig></li>
+<li><p><b>More intuitive:</b> Manipulating objects directly by touching them
+is natural and intuitive. Keyboards, mice, trackballs, and other input devices
+are not able to convey as much subtlety as touch can. Direct manipulation
+can deliver a lot more meaning to controlling a tool. </p></li>
+<li><p><b>More fun:</b> One can design a game in which users press a button
+and an onscreen avatar swings a tennis racket. But it can be simply more entertaining
+to mimic movements physically, and to see the action mirrored on-screen. Strokes
+and gestures encourage play and exploration of a system by providing a more
+hands-on experience. </p></li>
+<li><p><b>More engaging:</b> Through play, users start to engage with the
+interface, first by trying it out to see how it works. </p></li>
+</ul><p><b>Limitations of touch</b></p><ul>
+<li><p><b>Heavy data input:</b> A hardware keyboard is faster for most people
+to use when entering a large amount of text or numbers, and applications which
+involve heavy data input are not necessarily ideal for touch devices. Virtual
+keyboards are adequate, for example, for messaging applications. Consider
+utilizing adaptive methods - such as options and selections filtered according
+to what is available on the screen or in a list - and pre-filled items, when
+possible.</p></li>
+<li><p><b>Reliance on the visual:</b> While the Symbian OS provides
+tactile feedback capability, some applications can rely heavily on visual
+feedback to indicate actions. Allow for scalability, larger buttons and text
+sizes, for example, for visually impaired users.</p></li>
+<li><p><b>Reliance on the physical: </b>Touch interface can be more demanding
+on the physical context than mechanical keys. Tapping a touch screen button
+while wearing winter gloves, or with long fingernails can be difficult, for
+instance. The inverse is also true: the more subtle and small the movement,
+the less likely it is that everyone will be able to do it. To overcome this,
+the most basic use cases, such as answering an incoming phone call, must utilize
+large enough elements and straightforward interaction.</p></li>
+</ul></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F50003D0-402A-59E1-8F6F-8C999DC81735.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F50003D0-402A-59E1-8F6F-8C999DC81735" xml:lang="en"><title>When
+to choose the RArray and RPointerArray types</title><shortdesc>Describes the occasions to use the RArray and RPointerArray types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The classes <xref href="GUID-FAEBF321-6B08-3041-A01F-B1E7282D0707.dita"><apiname>RArray</apiname></xref>, <xref href="GUID-AAA13D1F-1BD7-3331-BB8C-11FA2795B53F.dita"><apiname>RPointerArray</apiname></xref> and
+the specialisation classes for arrays of 32-bit integers, <xref href="GUID-6FCD6EC2-7293-37A9-8292-3FA05CCEE50B.dita"><apiname>RArray&lt;TInt&gt;</apiname></xref> and <xref href="GUID-97995D22-5A1C-3271-8D63-22D8703B676B.dita"><apiname>RArray&lt;TUint&gt;</apiname></xref>,
+provide behaviour equivalent to the <xref href="GUID-12C65B99-553E-35CA-B36F-2F77BFC972B3.dita"><apiname>CArrayFixFlat</apiname></xref> and<xref href="GUID-FCE7D958-96AA-346D-8D22-0EF24B9DB7CC.dita"><apiname>CArrayPtrFlat</apiname></xref> classes.</p>
+<p>In general, the implementation of the <codeph>CArray...</codeph> classes
+reuses the <xref href="GUID-33BEE1B4-20A1-392B-89B3-DA5D4F46418E.dita"><apiname>CBufBase</apiname></xref> framework to provide two alternative
+storage structures for the array data with very little <codeph>CArray...</codeph> specific
+code. There are two assertions for every array access, one in the <codeph>CArray...</codeph> code
+and one in the <codeph>CBufBase</codeph> code.</p>
+<p>In addition, the <codeph>CBufBase</codeph> code operates in terms of byte
+buffers, and these appear in the API as descriptors. In the implementation,
+this requires a <xref href="GUID-C0D29B11-1535-3D11-B318-B18D30A6120B.dita"><apiname>TPtr8</apiname></xref> to be constructed, returned and inspected
+for every array access.</p>
+<p>Also, a number of TRAP harnesses are used to catch allocation failure.</p>
+<p>This means that, although very powerful, the implementation of the <codeph>CArray...</codeph> classes
+can add considerable overhead for simple vector-like flat arrays of fixed
+length objects.</p>
+<p>The <codeph>RArray...</codeph> classes were developed to overcome these
+problems. In addition, the generic searching and ordering capabilities are
+faster and easier to use. These classes should be used whenever an array of
+fixed length objects or an array of pointers is required, and the array has
+the following characteristics:</p>
+<ul>
+<li id="GUID-5A46A34C-F255-51C8-9777-6BCFA1D1F027"><p>the size of an array
+element is bounded (the current implementation imposes an upper limit of 640)</p> </li>
+<li id="GUID-04E4B892-AD03-5F72-ACCF-80D4B9874181"><p>insertions into the
+array are infrequent</p> </li>
+</ul>
+<p>In contrast, the main benefit to be derived from the <codeph>CArray...</codeph> classes
+is their support for segmented storage and their ability to handle arrays
+of variable length objects. However, the latter is a rare requirement.</p>
+<p>Note that for performance reasons, <codeph>RArray</codeph> stores objects
+in the array as word (4 byte) aligned quantities. This means that some member
+functions do not work when <codeph>RArray</codeph> is instantiated for classes
+of less than 4 bytes in size, or when the class's alignment requirement is
+not 4. Be aware that it is possible to get an unhandled exception on hardware
+that enforces strict alignment.</p>
+<p>The affected functions are:</p>
+<ul>
+<li id="GUID-485BFD16-FF55-573B-A831-F706BD9C1B70"><p>the constructor: RArray(TInt,
+T*, TInt)</p> </li>
+<li id="GUID-65C548C2-D048-5FA4-9990-BFF141962BA5"><p>Append(const T&amp;)</p> </li>
+<li id="GUID-C907314E-1884-51D5-98F4-2AD0953DE4C4"><p>Insert(const T&amp;,
+TInt)</p> </li>
+<li id="GUID-C4C989EF-67EE-5561-B53E-BA76FE91FE80"><p>the [] operator, and
+then using the pointer to iterate through the array as you would with a C
+array.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F51062B0-90BB-5659-9F23-2FF25116D78A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F51062B0-90BB-5659-9F23-2FF25116D78A" xml:lang="en"><title>Porting Tutorials</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic describes how to port some C applications to Symbian platform. </p> <p>It uses <filepath>Hello</filepath>, <filepath>ConsoleApp</filepath> and <filepath>GUIApp</filepath> examples . The first two are simple console-based examples. The third is a command-line driven program which has been converted into a standard Symbian application. It also describes typical problems which may be encountered when porting C code to Symbian platform, including the restriction on writeable data in DLLs. These example codes can be found in directory <filepath>examples\stdlib\</filepath>. </p> <p> <b>NOTE</b>: These examples may not be present on all Symbian platform SDKs. </p> <p>Some of the code for the second two examples was taken from the FreeBSD source code. For information on FreeBSD, see <xref scope="external" href="http://www.freebsd.org">http://www.freebsd.org</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F532D96F-7CB0-5CC7-9382-0CF44F7C0234.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F532D96F-7CB0-5CC7-9382-0CF44F7C0234" xml:lang="en"><title>Domain
+Name Daemon</title><shortdesc>Domain Name Daemon (DND) is an application that provides dynamic
+name resolution services for Symbian platform. DND supports IETF specifications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following are the DND services: </p>
+<ul>
+<li id="GUID-3182F90B-B12F-52D4-9698-68EF0FBC75FD"><p>Domain Name System (DNS) </p> </li>
+<li id="GUID-43C42397-677D-548C-BD64-E07B98B7F66F"><p>Link-local Multicast
+Name Resolution (LLMNR) </p> </li>
+</ul>
+<p>DND is a single-threaded application and runs in own process. DND programs
+are specified in <i>tcpip.ini</i> file and uses the following components: </p>
+<ul>
+<li id="GUID-4912716E-32FE-5F30-86C8-722CE8EA8CCE"><p>FileServer - To check
+the changes made to <i>hosts</i> file, when the DND receives a query request. </p> </li>
+<li id="GUID-77503F18-0245-5AFE-8C48-E6BA74F06611"><p>CommsDat - To retrieve
+configuration parameters like hostname for LLMNR. </p> </li>
+<li id="GUID-C643DFDF-2ADD-54F6-8CC2-EA8393F3CF74"><p>TCP/IP stack - To provide
+communication services and interface information for DND. </p> </li>
+</ul>
+<p>The TCP/IP stack starts the DND during the stack startup and stops at TCP/IP
+stack shutdown. The Symbian platform differs in architecture from the Unix
+resolver library implementations. The TCP/IP protocol module implements the
+name of the internet resolver which is then shared by all applications. </p>
+<p>DND is compiled into a <filepath>dnd.exe</filepath> file and is linked
+against <filepath>efsrv.dll</filepath>, <filepath>inhook6.dll</filepath>, <filepath>insock.dll</filepath>, <filepath>esock.dll</filepath>, <filepath>commsdat.dll</filepath> and <filepath>euser.dll</filepath>. </p>
+</conbody><related-links>
+<link href="GUID-95C166C3-2A25-55FB-88BD-62B7EFED2F8E.dita"><linktext>How to use
+Domain Name                 Resolution</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F535B464-3125-549B-9130-E59B64C4B865.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F535B464-3125-549B-9130-E59B64C4B865"><title>Stream dictionaries</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A stream dictionary is an object of type <codeph>CStreamDictionary</codeph>. It maintains a list of two-way associations between a UID and a stream ID.</p> <p>Each <codeph>TUid</codeph> and <codeph>TStreamId</codeph> pair forms an entry in an array. The <codeph>CStreamDictionary</codeph> class provides member functions to manage these entries, for example, to add a new entry or to change the stream ID associated with a UID.</p> <p>Applications often have a need to identify a stream associated with a particular purpose. That purpose is, itself, identified by UID. A stream dictionary allows the stream ID corresponding to a specific UID to be looked up.</p> <p>The stream dictionary can be externalised. It is often externalised as the root stream of a store, after all the other streams have been written. When the store is opened, the stream dictionary can then be internalised from the root stream, and other streams looked up based on the associated UIDs.</p> <p>System initialisation files use stream dictionaries</p> <p><b>See also</b> </p> <p><xref href="GUID-79F39C97-75E8-5DB1-B976-8FE76E6E60C9.dita">Dictionary stores</xref> </p> <p><xref href="GUID-95DF676F-F9BA-56E0-A4DE-E68B42C06932.dita">UID Manipulation</xref> </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F575F364-4BCA-42C7-BE00-7B31D8B55AE1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-F575F364-4BCA-42C7-BE00-7B31D8B55AE1" xml:lang="en"><title>Reserving
+the device vibra</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>The <codeph>ReserveVibraL()</codeph> call reserves the
+vibration feature exclusively for the client. A higher priority client may
+cause lower priority client reservation to be temporarily suspended. Commands
+can still be issued in suspended state, but they are not acted upon unless
+suspension is lifted within specified duration. The suspended client does
+not receive any notification about suspension. If vibra is already reserved
+by a higher or equal priority application, reserving still succeeds but suspended
+immediately.</p><p>The following code snippet demonstrates how to reserve
+the device vibration feature:</p><codeblock xml:space="preserve">iVibra-&gt;ReserveVibraL( ETrue, EFalse );</codeblock><p>First
+parameter <codeph>ETrue</codeph> means that any previously frozen state is
+restored. Second parameter <codeph>EFalse</codeph> means that the <codeph>CCoeEnv</codeph> background/foreground
+status is always used to control further reservations.</p><p>Calling the <codeph>ReserveVibraL()</codeph> method
+without parameters is equal to calling <codeph>ReserveVibraL(EFalse, EFalse)</codeph>,
+i.e. any previously frozen state is not restored and the <codeph>CCoeEnv</codeph> background/foreground
+status is always used to control further reservations. </p></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F5944819-2942-5ADA-A0AD-510D20BFBDEB"><title>How to get module status changes</title><shortdesc>This document demonstrates how a client application uses the API to get device status and quality status events from positioning modules. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>This document describes how a client application gets a positioning module's current status and notification of module status changes. </p> </section> <section><title>Required background</title> <p> <xref href="GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita">Positioning technology module status</xref> describes module status. </p> </section> <section><title>Getting the current status of a module</title> <p>The following code is a simple example of how a client application would get a module's current status. </p> <codeblock id="GUID-AF53F14E-FBDF-5804-A169-51B36182F32B" xml:space="preserve">#include &lt;lbs.h&gt;
+#include &lt;LbsErrors.h&gt;
+
+...
+
+RPositionServer server;
+
+TPositionModuleId modId;
+TPositionModuleStatus modStatus;
+
+// Create a session with the Location Server
+User::LeaveIfError(server.Connect());
+CleanupClosePushL(server);
+
+//    Assume that the app has the Id of the module for which it wants status
+// Set modId (details omitted)
+ ...
+
+// Get module status
+User::LeaveIfError(server.GetModuleStatus(modStatus, modId));
+
+// Use the status
+TPositionModuleStatus::TDeviceStatus deviceStatus = modStatus.DeviceStatus();
+TPositionModuleStatus::TDataQualityStatus qualityStatus = modStatus.DataQualityStatus();
+
+// Can check the status of the module device - for example check for device error
+if (deviceStatus == TPositionModuleStatus::EDeviceError) 
+ {
+ // Device error for this module
+    ...
+ }
+
+// Can check the data quality for the module - for example check for loss of data quality
+if (qualityStatus == TPositionModuleStatus::EDataQualityLoss)
+ {
+ // Loss of quality for this module
+ ...
+ }
+
+// Close the server session
+CleanupStack::PopAndDestroy(&amp;server);
+
+
+</codeblock> <p>A client application must know the unique ID of the module for which it wants the current status. </p> <p>See <xref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita">How to use module information</xref> for information about how to get module information, including the ID. </p> <p>The application calls <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-676FAC1B-1989-3D3C-84A5-DF82B874D7A3"><apiname>RPositionServer::GetModuleStatus()</apiname></xref> to get the module status at that point in time. Module status can change and there is no guarantee as to how long the returned status will remain valid. To be notified when a module status changes, an application must request status change notifications (see below). </p> </section> <section id="GUID-33296811-45B4-5B45-9726-6CDAF46477B1"><title>Getting module status change notifications</title> <p>A client application can receive notification of device status change events, quality status change events and system events. </p> <p>In the code example below, the application waits on a module status change which may not occur for some time, if ever. A production application would use more sophisticated event notification with an active object. </p> <codeblock id="GUID-D1B3D745-6FCA-5CD6-814B-652AB7000332" xml:space="preserve">#include &lt;lbs.h&gt;
+#include &lt;LbsErrors.h&gt;
+
+...
+
+RPositionServer server;
+TPositionModuleStatus modStatus;
+TPositionModuleStatusEvent modEvents;
+
+// Create a session with the Location Server
+User::LeaveIfError(server.Connect());
+CleanupClosePushL(server);
+
+// 1. Define the types of status events for which notification is required
+TPositionModuleStatusEventBase::TModuleEvent requestedEvents =
+TPositionModuleStatusEventBase::EEventDeviceStatus | 
+TPositionModuleStatusEventBase::EEventDataQualityStatus;
+
+modEvents.setRequestedEvents(requestedEvents);
+          
+//    2. Request module status change notifications for all modules
+TRequestStatus status;
+
+server.NotifyModuleStatusEvent(modEvents, status);
+
+// Wait (maybe a very long time!) for an event to occur. This is just for example
+// Would use an active object in production code
+
+User::WaitForRequest(status);
+
+
+// 3. Check the types of status changes that have occurred
+
+TPositionModuleStatusEventBase::TModuleEvent occurredEvents = modEvents.OccurredEvents();
+
+
+// Check the type of event that occurred...
+
+modEvents.GetModuleStatus(modStatus);
+
+TPositionModuleStatus::TDeviceStatus deviceStatus = modStatus.DeviceStatus();
+TPositionModuleStatus::TDataQualityStatus qualityStatus = modStatus.DataQualityStatus();
+
+
+if (deviceStatus == TPositionModuleStatus::EDeviceError) 
+    {
+        // Device error for this module
+        ...
+    }
+
+// Can check the data quality for the module
+if (qualityStatus == TPositionModuleStatus::EDataQualityLoss)
+    {
+        // Loss of quality for this module
+        ...
+    }
+
+// Close the server session
+CleanupStack::PopAndDestroy(&amp;server);
+
+
+</codeblock> <p>The following sections describe the steps to get module status change notifications as shown in the code example above. </p> <p><b>1. Define the types of module status events for which notification is required </b> </p> <p>The client application creates a <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> object with a <xref href="GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B.dita#GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B/GUID-65DC3D52-46D8-33C9-BC70-6289022419A1"><apiname>TPositionModuleStatusEventBase::TModuleEvent</apiname></xref> variable which defines the status events in which it is interested. </p> <p><b>2. Request module status change notifications </b> </p> <p>The client application calls the method <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-3AA81126-EB13-3F1B-9464-E86CC7769EB5"><apiname>RPositionServer::NotifyModuleStatusEvent()</apiname></xref> to make a request for module status change notifications. The full signature of this method is: </p> <p> <codeph>void
+          RPositionServer::NotifyModuleStatusEvent(TPositionModuleStatusEventBase&amp;
+          aStatusEvent, TRequestStatus&amp; aStatus, const TPositionModuleId aModuleId =
+          KPositionNullModuleId) const</codeph>  </p> <p>If the <xref href="GUID-1104624D-88F7-36EE-9C9D-470346C10318.dita"><apiname>TPositionModuleId</apiname></xref> parameter is passed, then the application is notified of status changes for that module only. If the parameter is not passed then the application is notified of status changes for all modules. </p> <p>On completion, the <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> value is updated and the <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita"><apiname>TPositionModuleStatusEvent</apiname></xref> object now also holds details of the types of events that have occurred. </p> <p><b>3. Check the types of status changes that have occurred </b> </p> <p>The <xref href="GUID-F1E97CB3-BFBF-34E9-8ED8-192FA99766BF.dita"><apiname>TModuleStatusEvent</apiname></xref> object contains both the requested event types and the event types that occurred. </p> <p>The requested event types are accessed by calling <xref href="GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA.dita#GUID-6E827E6E-69EF-3EA3-95FF-9A0B38B689EA/GUID-69CEFEA8-1BC3-3010-81CB-63D4B4DC05C9"><apiname>TPositionModuleStatusEvent::RequestedEvents()</apiname></xref>. </p> <p>The event types that occurred are accessed by calling <xref href="GUID-F1E97CB3-BFBF-34E9-8ED8-192FA99766BF.dita#GUID-F1E97CB3-BFBF-34E9-8ED8-192FA99766BF/GUID-68D84535-F833-3F53-927B-D03DA4532E77"><apiname>TModuleStatusEvent::OccurredEvents()</apiname></xref>. </p> <p>Both of these methods return bit mask values of type <xref href="GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B.dita#GUID-33ED1FC9-3B34-3AB5-A924-C361C712BD1B/GUID-65DC3D52-46D8-33C9-BC70-6289022419A1"><apiname>TPositionModuleStatusEventBase::TModuleEvent</apiname></xref>. </p> <p>Partial updates can occur. For example an application can request notification of both device status and quality status changes and it will receive notification when either one of these occurs. Therefore it may be necessary for an application to check the types of the occurred events. </p> <p> <b>Notes</b>  </p> <p>To obtain further updates when a call to <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-3AA81126-EB13-3F1B-9464-E86CC7769EB5"><apiname>RPositionServer::NotifyModuleStatusEvent()</apiname></xref> completes, it is necessary to re-issue the request by calling this method again. </p> <p>A client application can only have one outstanding request for module status updates per server session. An attempt to make a second request for location information while one is still outstanding causes a panic. An application must cancel an outstanding request before it makes another request. </p> <p>To cancel an outstanding request for module status updates, an application calls <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-FF06E754-B7AB-30CB-A456-445F283FDB28"><apiname>RPositionServer::CancelRequest()</apiname></xref> and passes <xref href="GUID-32B5A1A4-ADB6-33B9-A104-E3D3AF1884F1.dita"><apiname>EPositionServerNotifyModuleStatusEvent</apiname></xref> as a parameter. </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e312976_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F5B0FE6A-6DE6-56B5-89A5-684CD2602B40.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F5B0FE6A-6DE6-56B5-89A5-684CD2602B40"><title>Implementation limits</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The number of tables in a database is limited only by available resources.</p> <p>The number of columns in a table is usually limited by a maximum record size of 8200 bytes (just over 8Kb), e.g. a table could have 64K not-null <codeph>Bit</codeph> columns, 32 <codeph>Text8[255]</codeph> columns, 100 <codeph>Text8[80]</codeph> columns, or 32 <codeph>LongText8</codeph> columns. </p> <p>Each table can have up to 32 indexes. Index keys can contain any number of key columns, but the total size of the key must not exceed 248 bytes for unique indexes, and 244 bytes for non-unique indexes.</p> <p>The number of rows in a table is practically limited by available resources.</p> <p>The maximum size of a transaction is limited by available memory.</p> <section><title>See also</title> <p><xref href="GUID-47419CFB-163D-5A4E-8A00-C73773353BDF.dita">Column type characteristics</xref> and <xref href="GUID-785B2F0B-E7E6-5DAE-98F1-6C32BED25964.dita">Database storage overhead</xref>.</p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e153891_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F5D49215-B34A-5FCC-A7E1-0AF3275694B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F5D49215-B34A-5FCC-A7E1-0AF3275694B3" xml:lang="en"><title>GCCXML
+build target</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The GCCXML build target generates an XML description of the project and
+the program. This XML is intended to be parsed by other development and program
+analysis tools. The XML is generated using the GCC-XML (<xref href="http://www.gccxml.org" scope="external">http://www.gccxml.org</xref>) tool, which is distributed
+on kits in the <filepath>epoc32\tools\</filepath> directory. </p>
+<p>To execute a GCCXML build, use the <filepath>abld</filepath> command as
+follows: </p>
+<p><userinput>abld build gccxml [udeb/urel]</userinput> </p>
+<p>GCCXML is available as a target for all projects that can be built for
+an ARM target (this is assumed by the build tools unless the <filepath>bld.inf</filepath> file
+specifies otherwise with a <codeph>prj_platforms</codeph> statement.) </p>
+<p>The build of a Symbian platform component for the GCCXML platform results
+in three actions: </p>
+<ol id="GUID-631DFF50-B9DB-5FAD-A1F5-DBD74995772E">
+<li id="GUID-E51ED016-411E-5754-8B7B-13C6459B4206"><p>The GCC-XML tool is
+called on each source file used in the build of a component's binary. An XML
+file is output as a result. </p> <p>The GCC-XML output format is not yet extensively
+documented: see <xref href="http://www.gccxml.org/HTML/FAQ.html" scope="external">http://www.gccxml.org/HTML/FAQ.html</xref> for
+the latest information. </p> </li>
+<li id="GUID-7C664D07-2D30-5A96-A4CF-B3404C622206"><p>The tool chain also
+generates an XML file describing some elements of the component's .mmp file. </p> <p>The
+XML format is described below. </p> </li>
+<li id="GUID-9259CF29-1B9D-5607-BDCC-104AD99F34C3"><p>The tool chain packages
+the output from steps 1 and 2 into a zip file named <filepath>&lt;project-name&gt;.gxp</filepath>.
+The file is stored in <filepath>epoc32\release\gccxml\[udeb|urel]\</filepath>. </p> </li>
+</ol>
+<section><title>Format of &lt;project&gt;.mmp.xml </title><p>A GCCXML build creates
+an XML representation of the project's mmp file named <filepath>&lt;project&gt;.mmp.xml</filepath>.
+Not all the mmp file statements are represented in the XML. </p><p>The following
+XML elements and attributes are used: </p><table id="GUID-93991E16-AE60-550C-80BA-316285A463C7">
+<tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p> <b>Element</b>  </p> </entry>
+<entry><p> <b>Attribute</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p>mmpInfo </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Top-level wrapper element </p> </entry>
+</row>
+<row>
+<entry><p>mmp </p> </entry>
+<entry><p>path </p> </entry>
+<entry><p>Full path of the .mmp file </p> </entry>
+</row>
+<row>
+<entry><p>target </p> </entry>
+<entry><p>name </p> </entry>
+<entry><p>TARGET statement value </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>type </p> </entry>
+<entry><p>TARGETTYPE statement value </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>path </p> </entry>
+<entry><p>TARGETPATH statement value </p> </entry>
+</row>
+<row>
+<entry><p>abi </p> </entry>
+<entry><p>type </p> </entry>
+<entry><p>Deduced ABI e.g. ARM4 </p> </entry>
+</row>
+<row>
+<entry><p>linkas </p> </entry>
+<entry><p>name </p> </entry>
+<entry><p>LINKAS statement value </p> </entry>
+</row>
+<row>
+<entry><p>uids </p> </entry>
+<entry><p>u0 </p> </entry>
+<entry><p>1st UID of the executable </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>u1 </p> </entry>
+<entry><p>2nd UID of the executable (from the UID statement) </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>u2 </p> </entry>
+<entry><p>3rd UID of the executable (from the UID statement) </p> </entry>
+</row>
+<row>
+<entry><p>defFile </p> </entry>
+<entry><p>path </p> </entry>
+<entry><p>Full path of the .def file </p> </entry>
+</row>
+<row>
+<entry><p>libs </p> </entry>
+<entry><p> </p> </entry>
+<entry><p>Wrapper for lib elements that describe the libraries the project
+links to </p> </entry>
+</row>
+<row>
+<entry><p>lib </p> </entry>
+<entry><p>name </p> </entry>
+<entry><p>Name of the library </p> </entry>
+</row>
+<row>
+<entry><p> </p> </entry>
+<entry><p>type </p> </entry>
+<entry><p>For standard libraries specified by the <codeph>LIBRARY</codeph> keyword
+this is not used. </p> <p>For a stub library inserted by the build processor,
+this is "First". </p> <p>For libraries specified by the <codeph>ASSPLIBRARY</codeph> statement,
+this is "ASSP". </p> <p> <b>Note</b>: "ASSP" is applicable only for Symbian
+platform versions prior to v9.1. Since v9.1, it is not a valid library type. </p> <p>For
+libraries specified by the <codeph>STATICLIBRARY</codeph> statement, this
+is "Static". </p> </entry>
+</row>
+<row>
+<entry><p>sourceFile </p> </entry>
+<entry><p>name </p> </entry>
+<entry><p>Source file name </p> </entry>
+</row>
+<row>
+<entry/>
+<entry><p>path </p> </entry>
+<entry><p>Path to the source file </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>The population of some of attributes is dependent on the type and
+format of the component being built. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F5DC1A03-6F07-5E60-B912-429DDC820875.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F5DC1A03-6F07-5E60-B912-429DDC820875"><title>CPicture-Derived Classes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic introduces the essential features of <codeph>CPicture</codeph> -derived classes and other features, which, although not essential, are normally also provided. </p> <p>Each <codeph>CPicture</codeph> -derived class must provide: </p> <ul><li id="GUID-E61F5EE0-9815-5CE7-826C-87A530F9F7C4"><p>a constructor which creates a ‘real-world’ picture and sets a data member to the picture’s original size in device-independent units (for example, <codeph>iOriginalSizeInTwips</codeph> could be used for twips); </p> </li> <li id="GUID-EBE57886-29C2-51B4-80D8-DFDA7E0765C3"><p>a <codeph>GetOriginalSizeInTwips()</codeph> function which returns the original size of the picture in twips; </p> </li> <li id="GUID-C13F6C37-3AA8-573E-AD4A-13EE173664AE"><p>a <codeph>Draw()</codeph> function which draws the picture to a particular graphics map on a graphics context - at this point, and not before, the picture’s co-ordinates should be converted from device-independent units to pixels; </p> </li> <li id="GUID-BA29556A-643F-5128-A49D-C9C8BBD20B8B"><p>an <codeph>ExternalizeL()</codeph> function which externalizes the picture to a stream. </p> </li> </ul> <p>Normally, a <codeph>CPicture</codeph> -derived class will also provide: </p> <ul><li id="GUID-65F57E21-8D70-5AF1-A2DD-7101993C985A"><p>an <codeph>InternalizeL()</codeph> function to internalize the picture from a stream; </p> </li> <li id="GUID-878FDF7F-0856-53A6-80DE-C78EB00EC2FC"><p> <codeph>StoreL()</codeph> and <codeph>RestoreL()</codeph> functions to store and restore pictures from a stream store; </p> </li> <li id="GUID-1DE85655-5E82-589A-A405-AA72443BC55A"><p>one or more data members to access and manipulate the original picture - the picture’s scaling may be altered (this changes the ‘real-world’ size of the picture in twips); </p> </li> <li id="GUID-F3C67535-2E19-5BF1-A6A8-CAD10410C118"><p>if necessary, behavior that performs appropriate clean-up. </p> </li> </ul> <p> <codeph>CApaIconPicture</codeph> is an example of a <codeph>CPicture</codeph> -derived class. </p> </conbody><related-links><link href="GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita"><linktext>Picture Concepts</linktext> </link> <link href="GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita"><linktext>Picture Tutorials</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F5F981E4-6910-5440-AE8E-2EFAB2D01EE9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F5F981E4-6910-5440-AE8E-2EFAB2D01EE9" xml:lang="en"><title>SMS Encodings and Converters</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F61D1710-2D52-5B9B-A25F-6DFA606DAC0F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F61D1710-2D52-5B9B-A25F-6DFA606DAC0F" xml:lang="en"><title>Basic Application Framework Library Concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section explains the main concepts of the Basic Application Framework Library such as copying and pasting data, reading files, producing sounds, comparing strings, handling notifications and so on: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F620A451-9135-5CFD-9F76-F02AE830E094.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F620A451-9135-5CFD-9F76-F02AE830E094"><title>unalias</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><userinput>unalias</userinput> </p> <p>Same as <xref href="GUID-C2A203B1-3D30-5CC0-BAF8-0624E9A8B2A9.dita">unhash</xref>  <codeph>-a</codeph>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9" xml:lang="en"><title>HelloWorld:
+A simple GUI application with a single view</title><shortdesc>This example demonstrates a simple application using a GUI with
+a single view. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Download</title> <p>Click on the following link to download
+the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-a2004cb9-da88-4ec7-a85e-dd648022f4f9.zip" scope="external">HelloWorldGUI.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-a2004cb9-da88-4ec7-a85e-dd648022f4f9.html" scope="peer">browse</xref> to view the example code. </p> </section>
+<section><title>Class Summary</title><p><xref href="GUID-E36E2F07-09E7-32BC-BB83-14DF9232E7D9.dita"><apiname>CEikApplication</apiname></xref></p><p><xref href="GUID-B33A8A56-D1BE-3E3D-B5AC-F644A5C764DB.dita"><apiname>CEikDocument</apiname></xref></p><p><xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref></p><p><xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref></p></section>
+<section><title>Design and implementation</title> <p>This application consists
+of 4 classes: </p> <ul>
+<li id="GUID-28A83A4A-D743-556B-88EB-D65AAFD29D19"><p>Application class derived
+from <xref href="GUID-E36E2F07-09E7-32BC-BB83-14DF9232E7D9.dita"><apiname>CEikApplication</apiname></xref>. </p> </li>
+<li id="GUID-EF3F2195-1D04-56A4-B439-C2B50F543F74"><p>Document class derived
+from <xref href="GUID-B33A8A56-D1BE-3E3D-B5AC-F644A5C764DB.dita"><apiname>CEikDocument</apiname></xref>. </p> </li>
+<li id="GUID-65ABFCB1-BC5A-5BCA-9F45-D5FF82AB1AE4"><p>AppUi class derived
+from <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref>. </p> </li>
+<li id="GUID-12BE51BC-0F68-5C5E-A279-4AE00E96FC7D"><p>AppView class derived
+from <xref href="GUID-B06F99BD-F032-3B87-AB26-5DD6EBE8C160.dita"><apiname>CCoeControl</apiname></xref>. </p> </li>
+</ul> <p> <codeph>E32Main()</codeph> marks the entry point to the example.
+It calls <codeph>EikStart::RunApplication()</codeph> to create a new application
+instance. The UI framework then calls <codeph>CExampleApplication::AppDllUid()</codeph> to
+obtain the application's UID. The UID returned must match the second value
+defined in the project definition file. </p> <p>Once the application is created,
+the UI framework calls <codeph>CExampleApplication::CreateDocumentL()</codeph> to
+create an instance of the document class. <codeph>CreateDocumentL()</codeph> internally
+calls the constructor of the document class and passes the supplied reference
+to the constructor initialisation list. The document has no real work to do
+in this simple GUI application. </p> <p>As soon as the document has been created
+the UI framework creates an instance of the application UI (appUI). The appUI
+class is an instance of a <xref href="GUID-1185F595-0488-3E93-8D60-6B3A1A3AC32E.dita"><apiname>CEikAppUi</apiname></xref> -derived class and
+this class takes care of user interaction. </p> <p>AppUI creation uses two
+phase construction where first <codeph>CExampleDocument::CreateAppUiL()</codeph> is
+called and then the framework calls the second phase constructor of the appUI
+class. <codeph>CExampleAppUi::ConstructL()</codeph> creates and owns the view.
+User commands are handled by the <codeph>CExampleAppUi::HandleCommandL()</codeph> method. </p> <p>The
+app view class is used to draw the view. The view in this example consists
+of a simple outline rectangle with text drawn in the middle. </p> <p>The example
+contains a resource file <filepath>HelloWorld.rss</filepath> which defines
+resource information. This includes a menubar with four menu items, an icon
+and caption. </p> <p> <filepath>HelloWorld.hrh</filepath> defines the menu
+command IDs and <filepath>HelloWorld.pkg</filepath> file is the source file
+used for installation file (SIS file) generation. </p> </section>
+<section><title>Building and configuring</title> <p>Steps to build the example: </p> <ul>
+<li id="GUID-81019373-E4C4-545E-85B9-1C4810203D5D"><p>You can build the example
+from your IDE or the command line. </p> <p>If you use an IDE, import the <filepath>bld.inf</filepath> file
+of the example into your IDE, and use the build command of the IDE. </p> <p>If
+you use the command line, open a command prompt, and set the current directory
+to the source code directory of the example. You can then build the example
+with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake
+bldfiles</userinput> </p> <p><userinput>abld build</userinput> </p> <p><xref href="GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita">How to use bldmake</xref> and <xref href="GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita">How to use abld</xref> describe
+how to use the SBSv1 build tools. </p> </li>
+<li id="GUID-83E08D73-33DB-520B-8606-6547796EDE28"><p>For the emulator, the
+example builds an executable called <filepath>helloworld.exe</filepath> in
+the <filepath>epoc32\release\winscw\&lt;udeb or urel&gt;\</filepath> folder. </p> </li>
+</ul> </section>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F64E6551-670E-5E12-8103-DE504D3EC94F" xml:lang="en"><title>The
+Non-ScreenPlay Graphics Architecture</title><shortdesc>ScreenPlay provides improved support for graphics hardware acceleration
+and some other new features. However, it is possible to use the Symbian platform
+without enabling ScreenPlay. This is called the non-ScreenPlay variant (sometimes
+referred to as the <b>non-NGA</b> variant). This topic provides an introduction
+to the graphics architecture when ScreenPlay is <b>not</b> enabled. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The following diagram shows the non-ScreenPlay architecture. It includes
+the components in the Graphics package and some closely related components
+in other packages. </p>
+<fig id="GUID-060B8747-36A8-5F2A-BE82-0F637381673A">
+<title>The Symbian Foundation non-ScreenPlay graphics architecture </title>
+<image href="GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e162719_href.png" placement="inline"/>
+</fig>
+<p>The software model is as follows: </p>
+<ul>
+<li id="GUID-8BDB2015-C8FD-51EC-AB19-A55C55DD6D4B"><p>The Hardware Adaptation
+Layer (HAL) consists of the frame buffer and basic attributes. All processes
+have equal access to the frame buffer and can both read and write to it. </p> </li>
+<li id="GUID-06209922-9276-5843-95ED-CCE01A96A67C"><p>The Screen Driver provides
+simple pixel, scan-line and bitmap operations. The Screen Driver has the same
+interface for both bitmaps and the frame buffer. Hardware manufacturers can
+adapt the Screen Driver to suit the available hardware. </p> </li>
+<li id="GUID-333C52F6-5B6C-5212-8286-B344749550B5"><p>The BitGDI component
+provides support for higher-level geometric primitives and text. The BitGDI
+component is implemented in terms of Screen Driver operations. All BitGDI
+rendering operations are synchronous. </p> </li>
+<li id="GUID-B542796F-47AE-5B8A-976A-446315EC6550"><p>The Window Server multiplexes
+access to the screen and provides a BitGDI-like interface. </p> </li>
+<li id="GUID-81912D86-0CF6-5399-84FF-904E15BA8B50"><p>The Window Server provides
+Direct Screen Access (DSA) support for applications that require high frame
+rates (such as video and games) to bypass the Window Server and write to the
+frame buffer directly. However, some interaction with the Window Server is
+needed to prevent the application from drawing over other application's data. </p> </li>
+</ul>
+<p>In addition, the non-ScreenPlay architecture provides support for EGL,
+OpenGL and OpenVG. </p>
+<p>The following diagram shows the rendering stack in the non-ScreenPlay variant. </p>
+<fig id="GUID-4A245007-BE0A-5DD6-A3D5-CAD9A16E0540">
+<title>The rendering stack in the non-ScreenPlay variant</title>
+<image href="GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e162764_href.png" placement="inline"/>
+</fig>
+
+<p>Although DSA provides a solution for applications that require high frame
+rates, the non-ScreenPlay architecture has limitations when used on graphics
+accelerated hardware and non-uniform memory models. The architecture may require
+the copying of buffers between CPU and GPU memory as shown in the following
+diagram. ScreenPlay provides a solution that requires less copying of buffers
+in this type of use case. </p>
+<fig id="GUID-0EAF51D1-173E-52E2-8E28-C5FB7F6F9BD0">
+<title> Example non-uniform memory, non-ScreenPlay hardware model </title>
+<image href="GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e162776_href.png" placement="inline"/>
+</fig>
+</conbody><related-links>
+<link href="GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita"><linktext>The ScreenPlay
+Architecture</linktext></link>
+<link href="GUID-EF62BF88-3687-505D-8BD7-EEDF36246E56.dita"><linktext>Graphics
+Hardware Acceleration</linktext></link>
+<link href="GUID-99BC101A-9466-59EE-B5C9-7622BAF6E6FF.dita"><linktext>Graphics
+Concepts</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6625E22-BFB2-5367-A1A8-916252999B78.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-F6625E22-BFB2-5367-A1A8-916252999B78" xml:lang="en"><title>Exporting
+a Public Key</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>A public key is exported in the Distinguished Encoding Rules (DER)-encoded <xref href="http://tools.ietf.org/html/rfc4792" scope="external">ASN.1</xref> format.</p><p> The
+following steps explain the process of exporting a public key: </p></context>
+<steps id="GUID-7ADC22F6-A109-5DD7-BD18-C44E7A77D32D">
+<step id="GUID-D0DA1155-B5E7-52C2-8EF6-98624F434832"><cmd/>
+<info>Create a file system session using an <xref href="GUID-E263C747-946F-35AA-9F1D-41833BD350FC.dita"><apiname>RFs</apiname></xref> object. </info>
+</step>
+<step id="GUID-A058B724-1B9D-5F03-85CC-DE633422DFC1"><cmd/>
+<info>Create an object of type CUnifiedKeyStore using <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-C7A96153-4179-3B3F-878D-1EAA64A98D39"><apiname>CUnifiedKeyStore::NewL()</apiname></xref> or <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-217FBB3B-CEF5-36F2-A612-EDDA0982053C"><apiname>CUnifiedKeyStore::NewLC()</apiname></xref>. </info>
+</step>
+<step id="GUID-C3070E3E-CC56-5C21-A354-68EAEB214939"><cmd/>
+<info>Initialize the member functions and keystore using the asynchronous
+function <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-6C5D732C-1FD1-3EF0-AC90-87690F891B8D"><apiname>CUnifiedKeyStore::Initialize()</apiname></xref>. </info>
+</step>
+<step id="GUID-AEAE3C68-F064-57AE-B2B3-4CE0606966F2"><cmd/>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8B22E1BC-D779-32DC-9C0A-CA37E4C0A81B"><apiname>CUnifiedKeyStore::List()</apiname></xref> function to list
+the keys in the keystore. Retrieve the handle of the public key to be exported. </info>
+</step>
+<step id="GUID-A0B15734-B41A-5BAD-B839-386B9F36075F"><cmd/>
+<info>Use the <xref href="GUID-818689D6-EB99-382E-A435-D9C6C5D464DE.dita#GUID-818689D6-EB99-382E-A435-D9C6C5D464DE/GUID-8C87B9FF-5A81-3EAA-BEC7-65F12855BED7"><apiname>CUnifiedKeyStore::ExportPublic()</apiname></xref> function
+to export the public key. </info>
+</step>
+</steps>
+<result><p>A public key is exported to the device memory. </p> </result>
+<example><title>Example</title> <p>The following code snippet shows how to
+set a file system session object, list the keys in the keystore and then export
+the selected public key. </p> <codeblock id="GUID-2D9D08EE-742C-5E19-850C-CD39BFF12D8E" xml:space="preserve">
+
+//Create a file system session object
+RFs iFs;
+CleanupClosePushL(&amp;iFs);
+
+
+//Initialise the keystore and member functions
+CUnifiedKeyStore* keyStore = CUnifiedKeyStore::NewL(iFs);
+keyStore-&gt;Initialize(iStatus); //iStatus is a TRequestStatus object
+
+
+//List the keys of the keystore
+RPointerArray&lt;CCTKeyInfo&gt; iKeys; // This variable will contain the result after the completion of the export operation
+TCTKeyAttributeFilter  filter.iUsage = EPKCS15UsageAll;
+keyStore-&gt;List(iKeys, filter, iStatus);
+
+...
+
+
+//Retrieve the handle of the public key to be exported
+_LIT(KLabel,”keylabel”);
+
+
+//Select the key with the label you are looking for
+TInt keyIndex;
+for (TInt j = 0; j &lt; iKeys.Count(); j++)
+    {
+    if (iKeys[j]-&gt;Label() == KLabel) 
+        {
+         keyIndex = j;
+         break;
+        }
+    }
+
+
+...
+
+
+//Export the key 
+HBufC8* iKeyData = NULL;
+TCTTokenObjectHandle aHandle = iKeys[keyIndex]-&gt;Handle();
+keyStore-&gt;ExportPublic(aHandle, iKeyData, iStatus);
+
+
+//Clean up
+CleanupStack::PopAndDestroy(); // iFs</codeblock> </example>
+</taskbody><related-links>
+<link href="GUID-93069514-BC40-5E53-B126-F5C5C43C3D83.dita"><linktext>Exporting
+a Private Key</linktext></link>
+</related-links></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6780E5A-26DA-5453-B9BE-11039CFA4FFB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6780E5A-26DA-5453-B9BE-11039CFA4FFB" xml:lang="en"><title>Resource file compiled format</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section describes the binary format of compiled resource files. </p> <p>The resource reading API's in can read resources in the legacy Unicode format, as well as the two new formats introduced from v7.0.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F67F8930-7F8A-5497-AAD9-D7789B437478.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F67F8930-7F8A-5497-AAD9-D7789B437478"><title>Creating a new sub-connection - Socket connected over the sub-connection</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following example shows how an application can use a sub-connection explicitly via an <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> instance, and tie an <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> to the sub-connection that has had its properties set. The socket is connected over the sub-connection in this case (if the underlying technology allows this). </p> <codeblock id="GUID-673C24B0-FEDA-5774-B03B-68F3576DE507" xml:space="preserve">RSocketServ ss;
+RConnection conn;
+RSubConnection subconn;
+RSocket sock;
+TRequestStatus status;
+
+// Connect to ESOCK
+ss.Connect();
+
+// Open an Connection
+conn.Open(ss, KAfInet);
+
+// Start the connection
+conn.Start(status);
+User::WaitForRequest(status);
+
+// Create a new sub-connection
+subconn.Open(ss, RSubConnection::ECreateNew, conn);
+
+// Set Properties of the sub-connection
+subconn.SetParameters(…);
+
+// Open a TCP socket on the sub-connection
+sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, subconn);
+
+_LIT(KRasAddr,"10.159.24.13");
+const TInt KEchoPort = 7;
+
+TInetAddr destAddr;
+destAddr.Input(KRasAddr);
+destAddr.SetPort(KEchoPort);
+
+// Request the Socket to connect to the destination over the sub-connection
+sock.Connect(destAddr, status);
+</codeblock> <p> <b>Note:</b> Error handling is not included to aid clarity. </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F681C857-086F-527A-9946-A91560601658-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-F681C857-086F-527A-9946-A91560601658_d0e377073_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F684F363-B361-5868-9195-41305428AB2D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F684F363-B361-5868-9195-41305428AB2D"><title>Automatic Speech Recognition Data Handling Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document provides an overview of Automatic Speech Recognition (ASR) Data Handling. </p> <section><title>Purpose</title> <p>This library handles ASR recognition data. </p> <p><b>ASR Data Handling Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-310CE24B-F612-56E6-9A36-83B8160D6316"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <b>speechrecognitiondata.dll</b>  </p> </entry> <entry><p> <b>speechrecognitiondata.lib</b>  </p> </entry> <entry><p>These files are used for implementing ASR Data Handling. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>ASR Data Handling is used by the ASR Client Utility to handle recognition matches. For more information, see <xref href="GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita">Automatic Speech Recognition Client Utility Overview</xref>. </p> </section> <section><title>Description</title> <p>The <xref href="GUID-667D8612-22D6-3403-A8B0-509E72DF8C92.dita"><apiname>CSDClientResult</apiname></xref> class contains the results of a successful recognition match. The Grammar ID and Rule ID functions define the recognition match. The constructor returns an array of <codeph>CSDClientResult</codeph> classes. The first entry in the array is the best match. </p> </section> <section><title>Key ASR Data Handling Classes</title> <p>The speech recognition functionality provided by ASR Data Handling is contained within the following key classes: </p> <ul><li id="GUID-1DE35491-9ED7-5B8E-869B-331D9BCDCE19"><p> <xref href="GUID-667D8612-22D6-3403-A8B0-509E72DF8C92.dita"><apiname>CSDClientResult</apiname></xref> - encapsulates a client recognition result. </p> </li> <li id="GUID-AC3C262D-F5AD-5B3A-91C0-90F91E6960F3"><p> <xref href="GUID-D4E744FD-A7C0-356C-A71B-4D18306EBD19.dita"><apiname>CSDClientResultSet</apiname></xref> - encapsulates a client recogntion result set. </p> </li> <li id="GUID-36574641-AA9F-5C94-81CA-080314CE66F8"><p> <xref href="GUID-634A526E-AAFB-30CC-94E0-C087D6D7D46B.dita"><apiname>CSDRule</apiname></xref> - encapsulates a rule within a grammar. </p> </li> <li id="GUID-E32D9DE6-3350-5DD3-BD78-F4F335C6E57C"><p> <xref href="GUID-1D6884DA-0D08-3D2C-8579-E646FC366120.dita"><apiname>CSDGrammar</apiname></xref> - encapsulates a set of rules. </p> </li> </ul> </section> <section><title>Using ASR Data Handling</title> <p>Clients can use ASR Data Handling to: </p> <ul><li id="GUID-FBFB70C8-7F5E-5D56-A99B-CFAC28D7B54B"><p>Instantiate an instance of <xref href="GUID-667D8612-22D6-3403-A8B0-509E72DF8C92.dita"><apiname>CSDClientResult</apiname></xref>. </p> </li> <li id="GUID-4CEDB164-F30D-561B-89BF-83EFD3ABF571"><p>Return the grammar ID. </p> </li> <li id="GUID-BA461D1C-5A89-5ED3-A3A9-2851D42B64C8"><p>Return the rule ID. </p> </li> <li id="GUID-8701C38F-2AE6-56FB-B0B8-9746E27C6608"><p>Return the number of <xref href="GUID-B110C5BE-C310-38E0-BD85-4417E2057727.dita"><apiname>CSDClientresult</apiname></xref> objects in the array. </p> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-B454C08F-0531-5789-ABFA-171D3C2319D9.dita"> Automatic Speech Recognition Client Utility Overview</xref>  </p> <p><xref href="GUID-DC4BF172-CDD3-5351-BBA1-550DEC1706BD.dita">Automatic Speech Recognition Custom Commands Overview</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F686965A-13E5-5C0A-AED1-55EC91C79433.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F686965A-13E5-5C0A-AED1-55EC91C79433" xml:lang="en"><title>Restrictions
+on the use of leaves and TRAPs in destructors</title><shortdesc>Outlines the restrictions on the use of leaves and TRAPs in destructors.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You <i>cannot</i> use <xref href="GUID-3F2CDC74-2568-371C-9D8E-34A66A619226.dita"><apiname>TRAP</apiname></xref> (and <xref href="GUID-57895C34-AD00-35E1-9BF8-478653056383.dita"><apiname>TRAPD</apiname></xref>)
+and <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-ABF0FC5C-3334-3761-893D-D836B2EE0541"><apiname>User::Leave()</apiname></xref> in a destructor, nor in any function
+that a destructor might call, for objects that have been placed onto the call
+stack. <xref href="GUID-3F2CDC74-2568-371C-9D8E-34A66A619226.dita"><apiname>TRAP</apiname></xref> and <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-ABF0FC5C-3334-3761-893D-D836B2EE0541"><apiname>User::Leave()</apiname></xref> are implemented
+in terms of C++ Try, Catch and Throw. This means that if an exception occurs,
+the call stack is "unwound". In doing this, the destructors of objects on
+the call stack are called. If any of these destructors subsequently throw
+an exception, this is termed a nested exception. While a nested exception
+is supported on the emulator (WINS), it is not supported on other hardware,
+and there is no guarantee that the thread will terminate cleanly. </p>
+<p>Symbian coding standards state that objects placed onto the call stack
+should not have non-trivial destructors. By convention, such classes are identified
+by names having an initial T or R. This means that such destructors should
+not leave. </p>
+<p>The following code fragment shows the kind of code that is <i>not safe</i> to
+use: </p>
+<codeblock id="GUID-7B2BD496-6F99-5586-B320-DB7C5DC490B9" xml:space="preserve">void f()  
+    {
+    TBar bar;
+    // Function processing.
+    ...
+    // The bar object on the call stack is automatically destroyed
+    // at function termination.
+    }
+
+TBar::~TBar()
+    {
+    // The destructor calls a function that can leave.
+    // This is not permitted here.
+    doCleanUpL();
+    }</codeblock>
+<p>You <i>can</i> use <xref href="GUID-3F2CDC74-2568-371C-9D8E-34A66A619226.dita"><apiname>TRAP</apiname></xref> (and <xref href="GUID-57895C34-AD00-35E1-9BF8-478653056383.dita"><apiname>TRAPD</apiname></xref>)
+and <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-ABF0FC5C-3334-3761-893D-D836B2EE0541"><apiname>User::Leave()</apiname></xref> in a destructor and in any function that
+a destructor might call, for heap-based objects, i.e. objects that are destroyed
+by the cleanup stack. However, while this is permissible, it is not recommended
+practice. </p>
+<p>Such objects are instances of classes derived from <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref>,
+and by convention such classes are identified by names having have an initial
+C. </p>
+<p>In principle, a destructor should never fail. If a destructor can leave,
+or a function called by the destructor can leave, it suggests that the code
+has been poorly architected. It also implies that part of the destruction
+process might fail, potentially leading to memory or handle leaks. </p>
+<p>One possible approach to avoid using functions that can leave within a
+destructor is to have what might be referred to as ‘two-phase destruction’
+where some form of <codeph>ShutdownL</codeph> function is called prior to
+deleting the object. If there are concerns about introducing additional complexities
+in API-usage (and greater risk), suitable guards can be introduced. One method
+might be to store the current state of the object internally and then use
+an ASSERT to check this in the destructor. This would ensure that any usage
+errors are discovered by very simple run time testing. </p>
+<p>The following code fragment shows an example of two-phase destruction. </p>
+<codeblock id="GUID-BA3B57D6-913F-5AEC-A7AB-4EE6B915127A" xml:space="preserve">// Here, the shutdown function is a member of the class CMyClass,
+// and performs destruction activity that can leave.
+
+class CMyClass : public CBase
+    {
+public :
+    IMPORT_C ~CMyClass();
+    IMPORT_C void ShutdownL();
+    ...
+private :
+    TBool iStateActive
+    ...
+    }
+
+EXPORT_C void CMyClass::ShutdownL()
+    {
+       if (iStateActive == ETrue)
+              {
+              // Some destruction activity that can leave.
+              iStateActive = EFalse;
+              }
+    }
+
+EXPORT_C CMyClass::~CMyClass()
+    {
+       // Assert to ensure that ShutdownL() has already been called.
+       ASSERT(iStateActive == EFalse);
+    }
+</codeblock>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e304892_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E" xml:lang="en"><title>Kernel
+side object containers</title><shortdesc>This document describes the use of object containers to maintain
+kernel objects.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Kernel objects such as mutexes, semaphores, threads, processes, timers
+are reference counting objects, i.e. they are instances of classes derived
+from <codeph>CObject</codeph>. The Kernel maintains all such objects in object
+containers, one container for each type; i.e. one for threads, one for processes,
+one for mutexes etc. as shown below.</p>
+<fig id="GUID-BF99B66C-8D6E-5EF2-9087-E6A8C8E3B066">
+<image href="GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e205684_href.png" placement="inline"/>
+</fig>
+<p>See also:</p>
+<ul>
+<li id="GUID-5B42BA8B-B983-50D0-87EA-916F3719FBAF"><p><xref href="GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita">The
+object container</xref> </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF"><title> Capturing Video</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to capture video using the Ecam API. </p> <section><title>Purpose</title> <p>This purpose of this tutorial is to show you how to capture video using the Ecam API. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita">Onboard Camera Overview</xref> introduces the camera utilities. </p> <p><b>Introduction</b> </p> <p>The Video Capture Control allows the client to capture videos. The client can create histogram, snapshot and image processing object specific to video capture. It can start, stop, pause, resume and stop the video capture operations. </p> <p><b>Setup and Configuration Requirements</b> </p> <p>The following are the setup and configuration requirements you need to follow before video capture implementation: </p> <ul><li id="GUID-19C583A4-413F-519A-B2B2-2800F0E454E3"><p>Make sure that you provide a concrete implementation for the <xref href="GUID-2818623D-A8AF-3670-AF7F-5194185D7382.dita"><apiname>McameraVideoCaptureControl</apiname></xref> interface class, which provides the video capture functionality. </p> </li> <li id="GUID-E8DAF0D4-7440-5CC0-83CD-55ECF57C34DD"><p>Client needs to implement the <xref href="GUID-AD4944AA-1C8D-3332-A5BC-4439A0E030C1.dita"><apiname>McaptureVideoObserver</apiname></xref> observer class. The observer methods are called by the implementation when the video capture operations are ready to be notified accordingly. </p> </li> </ul> </section> <section><title>Using Video Capture </title> <p>The following tasks will be covered during video capture implementation: </p> <ul><li id="GUID-55ABCB13-5C9B-5D2F-9D33-B8969B41BAE6"><p>Create a class pointer using a <xref href="GUID-ADBCEC33-BD3C-330C-902C-1BF1AF896D2C.dita#GUID-ADBCEC33-BD3C-330C-902C-1BF1AF896D2C/GUID-6155BC91-5331-3667-A25D-863020C84233"><apiname>CcameraVideoCaptureControl::NewL()</apiname></xref> factory method. </p> <p>This class maps the exported call to an internal object of class <xref href="GUID-2818623D-A8AF-3670-AF7F-5194185D7382.dita"><apiname>McameraVideoCaptureControl</apiname></xref>. </p> </li> <li id="GUID-051037F8-A45A-5682-9445-E81FECE6D29E"><p>Pass a pointer to <xref href="GUID-2818623D-A8AF-3670-AF7F-5194185D7382.dita"><apiname>McameraVideoCaptureControl</apiname></xref> object to the <xref href="GUID-ADBCEC33-BD3C-330C-902C-1BF1AF896D2C.dita"><apiname>CcameraVideoCaptureControl</apiname></xref> object by the active camera during the construction phase. </p> </li> <li id="GUID-396899E9-0BED-5B69-B1E8-B745DADB571B"><p>Get this pointer using a call to <xref href="GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E.dita#GUID-4E8A5141-5E4A-322A-9892-8DC49D04986E/GUID-1F537D7D-5451-3834-869D-3092A4773B83"><apiname>Ccamera::CustomInterface()</apiname></xref> with UID value <xref href="GUID-9C8C3F85-A459-3C07-BF5F-D583726F2FF7.dita"><apiname>KECamMCameraVideoCaptureControlUid</apiname></xref>. </p> </li> <li id="GUID-0C4E4577-8D1C-5A02-8070-1381502F6038"><p>Use <xref href="GUID-7FAEB878-52B1-3A54-9607-69AE09AB8AEB.dita"><apiname>MCaptureVideoObserver</apiname></xref> class methods, when the video capture operations are ready to be notified accordingly. </p> </li> <li id="GUID-E92F4F3B-AC92-5B34-851D-B518E64AA620"><p>Use <xref href="GUID-5FD7C489-DB00-360E-B0D1-41CB44F2E294.dita#GUID-5FD7C489-DB00-360E-B0D1-41CB44F2E294/GUID-31034113-5053-332B-A8FA-34EC0C2DD334"><apiname>CCamVideoCaptureControl::PrepareVideoCapture</apiname></xref> API to initialize the settings for video capture. If video is not supported, then the method will exit with the <codeph>KerrNotSupported</codeph> error message. </p> </li> <li id="GUID-8BF47E42-A140-541F-8680-BEF227F444CA"><p>Prepare for video capture using <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-A6F5FDF5-7C7D-35DF-8F00-740CEF430BEC"><apiname>CCamera::CCameraVideoCaptureControl::PrepareVideoCapture</apiname></xref> asynchronous method. This performs setup and allocation of memory prior to calling <xref href="GUID-86AECED6-39D8-370F-813A-2C777B786C70.dita"><apiname>StartVideoCapture</apiname></xref> method to keep the latency of that method to a minimum. </p> </li> <li id="GUID-F608EAD3-D2B4-5D18-8AB9-909F116B4E1B"><p>Notify the client about completing the preparation for video capture using <xref href="GUID-203BEBE6-F7B8-30EA-824B-AA45B88304E1.dita"><apiname>KUidECamEventVideoCaptureControlPrepareComplete</apiname></xref> event. </p> </li> <li id="GUID-A57E28A4-2CCD-5621-B2D5-9D286196869F"><p>Start video capture using <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-301E3CE4-3869-36DB-B572-E46B7C18BCE0"><apiname>CCamera::CCameraVideoCaptureControl::StartVideoCaptureL</apiname></xref> method. </p> </li> <li id="GUID-53E8D5A1-053E-5A33-A4F8-131CBE2A68F3"><p>Check if camera supports embedded still capture feature using <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-F8482663-5325-3065-8F24-61476453A151"><apiname>CCamera::CCameraVideoCaptureControl::GetEmbeddedStillCaptureSupportInfoL</apiname></xref> method. Capturing still image while video is being captured is referred as embedded still capture. </p> </li> <li id="GUID-4E3C5C41-80F9-5AAC-806E-33EDBDE62AC1"><p>Sets the state to check if embedded still image capture state is enabled using <xref href="GUID-007358AE-9795-33EB-A3BE-4788D309135D.dita#GUID-007358AE-9795-33EB-A3BE-4788D309135D/GUID-51BFB3F9-DC90-3819-A5C3-2C3FD8EFFF97"><apiname>CCamera::CCameraVideoCaptureControl::TPrepareVideoParameters::SetEmbeddedStillCaptureState</apiname></xref> method. </p> </li> <li id="GUID-66610441-E054-5704-999A-097BCB23568D"><p>Use <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-A1799994-FBD8-3AEC-9CBA-E593D2D6B036"><apiname>CCamera::CCameraVideoCaptureControl::PauseVideoCapture</apiname></xref> call to pause the ongoing video capture. </p> </li> <li id="GUID-C426DA42-D8ED-5702-A13D-6786B0B45849"><p>Use <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-E6FFBDA2-B38E-3703-B606-7DF313BDFAA8"><apiname>CCamera::CCameraVideoCaptureControl::ResumeVideoCaptureL</apiname></xref> to resume the ongoing video capture. </p> </li> <li id="GUID-BDE3DD51-7778-5021-BC72-26644B5BE651"><p>Use <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-07FA4DF6-4531-3734-ABEA-FAF0DD324B5F"><apiname>CCamera::CCameraVideoCaptureControl::StopVideoCapture</apiname></xref> to stop video capture. </p> </li> <li id="GUID-BFCA4131-01D8-539F-A0E6-5C363BFC2F62"><p>Release the video resource that was allocated during <xref href="GUID-ECB7D755-0767-3346-9268-65900661CC64.dita"><apiname>PrepareVideoCapture</apiname></xref> using <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-D02BE8BF-F0D4-3703-AFA0-AE53BFCFBBC6"><apiname>CCamera::CCameraVideoCaptureControl::ReleaseVideoResource</apiname></xref> method. </p> </li> </ul> <p> <b>Note</b>: </p> <ul><li id="GUID-820BCF11-C839-5EDF-9353-3D00129A39DB"><p> <xref href="GUID-BAFF01BC-405C-37B2-8AC3-F96CF756C300.dita#GUID-BAFF01BC-405C-37B2-8AC3-F96CF756C300/GUID-CFBDB434-0198-3171-9DEC-97A8B7CCAE9B"><apiname>McameraObserver2::VideoBufferReady</apiname></xref> will not be used with the class <xref href="GUID-ADBCEC33-BD3C-330C-902C-1BF1AF896D2C.dita"><apiname>CcameraVideoCaptureControl</apiname></xref>. </p> </li> </ul> <p>The following example code snippets illustrate the <b>video capture control </b> implementation. </p> <codeblock id="GUID-09A6BD59-5FD6-552F-B83F-A9B6BBED3E74" xml:space="preserve">CCamVideoCaptureControl* CCamVideoCaptureControl::NewL(CCamUnitTestPlugin&amp; aOwner);
+
+CCamVideoCaptureControl* self = new(ELeave) CCamVideoCaptureControl(aOwner);
+
+static_cast&lt;MCameraVideoCaptureControl*&gt;(CCamVideoCaptureControl::NewL(static_cast&lt;CCamUnitTestPlugin&amp;&gt;(*this)));
+
+TAny* advSettingObject;
+advSettingObject = CCamera::CustomInterface(aInterfaceUid);
+
+CCamVideoCaptureControl::PrepareVideoCapture(CCamera::EFormatFbsBitmapColor16M,setFrameSizeIndex,setFrameRateIndex,KNumberOfBuffersToUse,KNumberOfFramesPerBuffer);
+
+MCaptureVideoObserver* iCaptureVideoObserver;
+iCaptureVideoObserver-&gt;VideoBufferReady(NULL, KErrNotSupported);</codeblock> </section> </conbody><related-links><link href="GUID-9DE1CE5D-F148-5A7E-908A-DDD57A32C629.dita"><linktext>Camera API</linktext> </link> <link href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita"><linktext>Accessing and Power Control of
+                Camera</linktext> </link> <link href="GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita"><linktext>Camera Preset Support</linktext> </link> <link href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita"><linktext>Capturing Image</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F"><title>How to Get Location Information</title><shortdesc>This document demonstrates how a client application uses the Location Acquisition API to get a position. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>This tutorial explains how to get location information using the Location Acquisition API. </p> </section> <section><title>Required background</title> <p><xref href="GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita">Location Acquisition API Overview</xref> describes the main client/server classes of the API. </p> <p><xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">Position Data and Info Classes</xref> describes the classes that hold location information. </p> </section> <section><title>Getting location information</title> <p>This section describes how to get location information using the Location Acquisition API. </p> <p><b>Introduction</b> </p> <p>Client applications use the <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita"><apiname>RPositionServer</apiname></xref> and <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita"><apiname>RPositioner</apiname></xref> classes to get position updates. <codeph>RPositionServer</codeph> is used by client applications to manage a session with the Location Server and to get Positioning Module information. <codeph>RPositioner</codeph> is used by client applications to manage a subsession with the Location Server and to get position updates. </p> <p><b>GPS positioning modes</b> </p> <p>The Global Positioning System (GPS) is a technology that is often included in devices that support LBS. </p> <p>For each location request from a client, the LBS subsystem can operate in one of several different GPS positioning modes. The Location Acquisition API hides the details of which GPS positioning mode is in use from client applications. A client makes the same sequence of calls to the API to get a position update whichever positioning mode is used. Note that only some of these positioning modes may be available to a client application at runtime. </p> <p>Each GPS positioning mode is a different way of getting a position fix: </p> <ul><li id="GUID-2BDDAACC-EB8D-5191-A42E-0BFA0B26C7DC"><p>Autonomous </p> <p>LBS uses a GPS Positioning Module to calculate position fixes without assistance data from the network. This mode typically takes the longest time to obtain a location fix compared to the other modes. </p> </li> <li id="GUID-B2E24A6F-F46A-529E-A8F5-FC52F7CD8F0D"><p>Terminal Based Mode </p> <p>LBS uses an A-GPS Positioning Module to calculate position fixes using assistance data from the network. Assistance data specifies the GPS satellites that are above the horizon as seen from the mobile device's current location. Assistance data is used by an A-GPS Positioning Module to reduce the time necessary to obtain a position fix. </p> <p>The network can also supply a <i>reference position</i> to the LBS subsystem as part of the sequence of events. This position is calculated in the network using cell-based techniques and may be less accurate than that obtained from GPS. If a reference position is available, it may be returned to the client before a GPS position. </p> <p>See <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API Runtime Behaviour</xref> for more information about the position updates that can be returned by LBS. </p> </li> <li id="GUID-018CA9E1-F191-5CC9-8DCD-8FE08CAABD28"><p>Terminal Assisted Mode </p> <p>LBS uses an A-GPS Positioning Module to obtain GPS measurements (using assistance data from the network). GPS measurements are the raw data used to calculate a GPS fix. Measurements are sent to the network and a position fix is calculated by a remote server. The remotely calculated position fix is returned to the mobile device and is known as the <i>final network position</i>. The LBS subsystem returns this position to the client. </p> </li> <li id="GUID-9B1678F5-A53B-5245-9EE4-5809461E2EBB"><p>Simultaneous Terminal Based Mode and Terminal Assisted Mode. </p> <p>LBS passes GPS measurements to the network (as in Terminal Assisted Mode), but also attempts to use those measurements to calculate a GPS position fix (as in Terminal Based Mode). The position returned to the client may be either a GPS position (calculated in the mobile device) or a final network position (calculated using the measurements by a remote server in the network). The position that is calculated first (the GPS position or the final network position) is generally returned to the client. The final network position may also be returned to the client after the return of the GPS position. </p> </li> </ul> <p>Some devices also support a Cell-based Mode in which LBS obtains a position fix from the network without using GPS. This position fix is sometimes less accurate than that obtained using GPS. </p> <p>A client application cannot directly choose the GPS positioning mode that is used for its location request. A handset manufacturer may provide an LBS settings application where the GPS mode can be selected by an end user. However for modes that involve the network (Terminal Based Mode, Terminal Assisted Mode and Cell-based Mode) it is possible for a network operator to override the GPS mode as part of the location request. If a client wants to know precisely how a position fix was calculated, this information is available in the returned position info object (as described in more detail later in this document). </p> <p><b>Example sequence</b> </p> <p>Figure 1 shows a simplified sequence for a client requesting a position update from LBS. The sequence shows simplified behaviour for Terminal Based Mode. The <i>A-GPS Module</i> is a Positioning Module that uses Assisted GPS to calculate a position. The <i>Network Protocol Module</i> is a Positioning Module that obtains GPS assistance data and reference positions (often approximate positions) from the network. Note that Terminal Based Mode may not be available on all mobile devices. This depends on the Positioning Modules that have been installed by the mobile device creator. </p> <fig id="GUID-FD5FEC83-B76D-5D45-AF40-DF5C2F17D404"><title>
+                Figure 1. Simplified Terminal Based Mode Sequence 
+             </title> <image href="GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e242567_href.png" placement="inline"/></fig> <p><b>Example code and description</b> </p> <p>The following code shows a simple example of how a client application can get a single position update. The numbers in the code comments refer to sections that follow the code example. </p> <codeblock id="GUID-7B350944-5178-586B-B381-87DC5104DD1F" xml:space="preserve">#include &lt;lbs.h&gt;
+#include &lt;lbserrors.h&gt;
+
+...
+
+RPositionServer server;
+RPositioner positioner;
+
+// 1. Create a session with the Location Server
+User::LeaveIfError(server.Connect());
+CleanupClosePushL(server);
+
+// 2. Create a subsession with the Location Server using default positioning module
+User::LeaveIfError(positioner.Open(server));
+CleanupClosePushL(positioner);
+
+// 3. Set the requester information - in this example define a requester stack... 
+
+_LIT(KCntPhone, "+358501234567");
+_LIT(KSrvName, "MyService");
+RRequestorStack stack;
+CRequestor* contact = CRequestor::NewLC(CRequestor::ERequestorContact, CRequestor::EFormatTelephone, KCntPhone);
+stack.Append(contact);
+CRequestor* service = CRequestor::NewLC(CRequestor::ERequestorService,    CRequestor::EFormatApplication, KSrvName);
+stack.Append(service);
+User::LeaveIfError(positioner.SetRequestor(stack));
+
+TPositionInfo posInfo;
+TPosition pos;
+TRequestStatus status;
+
+/* 4. To set update options, call RPositioner::SetUpdateOptions(). 
+      See the description in section 4 below */
+
+/* 5. Request location information
+      Could also call positioner.GetLastKnownPosition(posInfo, status) 
+      to get cached location information */
+positioner.NotifyPositionUpdate(posInfo, status);
+User::WaitForRequest(status);
+
+// 6. Receive location information
+if (status != KErrNone)
+ {
+ // Handle possible client/server errors
+ ...
+ }
+
+// Get the position data object from the wrapper info object
+posInfo.GetPosition(pos);
+
+// Use the position data
+...
+
+// Reissue the location request if necessary by calling NotifyPositionUpdate() again
+
+/* 7. To cancel or complete a location request a client
+ calls RPositioner::CancelRequest() or RPositioner::CompleteRequest() */
+
+// 8. Cleanup
+stack.Reset();
+CleanupStack::PopAndDestroy(service);
+CleanupStack::PopAndDestroy(contact);
+CleanupStack::PopAndDestroy(&amp;positioner);
+CleanupStack::PopAndDestroy(&amp;server);
+</codeblock> <p>The following describes the steps to get location information as shown in the above example: </p> <p><b>1. Create a session with the Location Server </b> </p> <p>To create a session with the Location Server, a client application: </p> <ul><li id="GUID-2AD36917-A3B1-52D1-BBBB-C9A48592E5AA"><p>Creates an instance of <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita"><apiname>RPositionServer</apiname></xref>  </p> </li> <li id="GUID-5771DD5B-C660-5408-8F34-C94D2E8A3419"><p>Calls <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-23285930-A1D5-3A97-AED4-E979BFA96FDD"><apiname>RPositionServer::Connect()</apiname></xref>  </p> </li> </ul> <p>Standard client-server error codes are returned by calls to open the session. A panic occurs if the client application has already created a session with the Location Server. Error and panic codes specific to LBS are defined in <filepath>LbsErrors.h</filepath>. </p> <p><b>2. Create a subsession with the Location Server </b> </p> <p>Location information requests are issued on a subsession. </p> <p>To create a subsession, an application calls one of three overloaded <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-AF3D9B5F-8025-3AFF-A101-82025520EBD6"><apiname>RPositioner::Open()</apiname></xref> member functions: </p> <ul><li id="GUID-D6A2BD94-DFE6-5B2D-9CE4-E5C565323F6E"><p> <codeph>RPositioner::Open(RPositionServer&amp; aPosServer)</codeph> uses the Default Positioning Module to get location information. The client application does not specify any position quality criteria (which specify the required position accuracy) and therefore LBS uses default position quality criteria (horizontal accuracy = 50m, vertical accuracy = 1000m, request timeout = 30 seconds). </p> </li> <li id="GUID-B6357BFF-A3DF-5036-90BF-ED2243C752C0"><p> <codeph>RPositioner::Open(RPositionServer&amp; aPosServer,
+                  TPositionModuleId aModuleId)</codeph> allows a specific Positioning Module to be specified by the client application. LBS uses position quality criteria associated with the specified Positioning Module. No quality criteria are specified and so LBS uses the capabilities of the Positioning Module as the default criteria. </p> <p>See <xref href="GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita">Positioning Modules</xref> for information about Positioning Module position quality and <xref href="GUID-A4B47A7A-17EB-570C-AD88-6756B34AF634.dita">How to Use Positioning Module Information</xref> for more information about how to get a module ID. </p> </li> </ul> <p>The LBS subsystem does not compare the vertical accuracy of a calculated position with the vertical accuracy specified by a client application (specified by position quality criteria, by a quality profile or by a Positioning Module). Only the horizontal accuracy of a calculated position is used to decide if it is accurate enough to be returned to a client application. </p> <p><b>3. Set client requester details </b> </p> <p>A client application can specify the client requesters by calling <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-E1B082DC-9C01-3852-B1D8-B2FD18235319"><apiname>RPositioner::SetRequestorL()</apiname></xref> before calling <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref>. </p> <p>This is an optional step. Calling <codeph>SetRequestorL()</codeph> has no effect in this version of the Symbian platform. Calling <codeph>SetRequestorL()</codeph> is required in some devices based on earlier versions of Symbian. To ensure an LBS application runs on devices based on earlier versions of Symbian, it is recommended that it calls <codeph>SetRequestorL()</codeph>. </p> <p>See <xref href="GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita">Privacy Requester Classes</xref> for more information. </p> <p><b>4. Set update options </b> </p> <p>A client application calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-7A8BC23A-6FF9-3AAF-99BF-A6B074FDEA7B"><apiname>RPositioner::SetUpdateOptions()</apiname></xref> to set the update options. Calling this method only affects future calls to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> and <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-D9E0BC1D-7783-35BA-8D88-223576E4C85E"><apiname>RPositioner::GetLastKnownPosition()</apiname></xref> and does not affect any outstanding requests. </p> <p>A <xref href="GUID-E60595B9-B6E2-38E1-BE1E-A82113C7EC94.dita"><apiname>TPositionUpdateOptions</apiname></xref> parameter specifies the update options and is passed in <codeph>RPositioner::SetUpdateOptions()</codeph>. The properties of <codeph>TPositionUpdateOptions</codeph> are set either on its construction or via setter methods. The following properties can be defined: </p> <ul><li id="GUID-239CCE63-0455-525A-9CC7-8FCE0530B7CB"><p>The time interval between position updates </p> <p> <codeph>TPositionUpdateOptions::SetUpdateInterval(TTimeIntervalMicroSeconds
+                  aInterval)</codeph> sets the time interval between position updates. </p> <p>Setting a non-zero value indicates that the client requires periodic updates (this is also known as 'tracking'). LBS attempts to send position updates to the client application with this interval between the updates. Note that setting <codeph>aInterval</codeph> to <codeph>0</codeph> (or not setting it) indicates that the client is not tracking. </p> <p> <i>Note that when a client application is tracking, LBS does not return reference positions as periodic updates. See the section on Tracking later in this document for more information on tracking behaviour.</i>  </p> </li> <li id="GUID-3BDBCE8C-53D1-5DE7-B81A-86145460C1BA"><p>A position update timeout </p> <p> <codeph>TPositionUpdateOptions::SetUpdateTimeOut(TTimeIntervalMicroSeconds
+                  aTimeOut)</codeph> sets a timeout for the location request. It specifies how long the client application is prepared to wait to obtain a position update. If the timeout expires <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> completes and the client's <codeph>RunL()</codeph> method is called. </p> <p>After a timeout the value set for the client's <codeph>TRequestStatus</codeph> parameter depends on the configuration of the LBS subsystem and may be either <codeph>KErrTimeOut</codeph> or <codeph>KPositionQualityLoss</codeph>. See <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API runtime behaviour</xref> for more information. </p> <p> <i>Note that calling SetUpdateTimeOut() with a value of 0 (or not setting it) indicates that LBS should not timeout the location request from a client. </i>  </p> </li> <li id="GUID-C0405589-A7DC-58E4-A39A-145943152B50"><p>The maximum age of a position update </p> <p> <codeph>TPositionUpdateOptions::SetMaxUpdateAge(TTimeIntervalMicroSeconds
+                  aMaxAge)</codeph> specifies the maximum age of the position data returned by <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref>. Setting this value allows the Location Server to use cached location information in some cases. The default value of 0 indicates that new position data is required. </p> </li> <li id="GUID-EBCB9F00-1331-5627-95B6-4B1E851776CF"><p>Acceptance of partial updates </p> <p>A partial update is a position update that contains only partial position data. Such a position is called an <i>incomplete position</i>. An example of an incomplete position is one that contains data about the satellites used to obtain a GPS fix but no latitude or longitude data.<codeph/> LBS defines an incomplete position to be one where either <codeph>TPosition::Latitude()</codeph> or <codeph>TPosition::Longitude()</codeph> is <codeph>NaN</codeph> (Not a Number). </p> <p> <codeph>TPositionUpdateOptions::SetAcceptPartialUpdates(TBool
+                  aPartial)</codeph> allows an application to choose to accept partial updates. If a partial update is returned an application's <codeph>TRequestStatus</codeph> parameter is set to <codeph>KPositionPartialUpdate</codeph> when <codeph>NotifyPositionUpdate()</codeph> completes. </p> <p>If partial updates are not set the default behaviour is for <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> to complete only when the Positioning Module used for the location request has obtained as much information as possible. Note however that this behaviour is configurable by a Symbian device creator (see <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API runtime behaviour</xref> for more information). </p> </li> </ul> <p><b>Important note on setting update options </b> </p> <p>The default constructor of <xref href="GUID-E60595B9-B6E2-38E1-BE1E-A82113C7EC94.dita"><apiname>TPositionUpdateOptions</apiname></xref> sets all update options to zero by default and is the equivalent of calling the following: </p> <ul><li id="GUID-FA830ED1-156A-5EE9-B27F-7C4AD064A061"><p> <codeph>TPositionUpdateOptions::SetUpdateInterval(0)</codeph> meaning that tracking is off </p> </li> <li id="GUID-0AF71B28-0EE0-549B-BE23-A82A85A3CC1E"><p> <codeph>TPositionUpdateOptions::SetUpdateTimeout(0)</codeph> meaning that LBS should not timeout the client's request </p> </li> <li id="GUID-A66326A6-8350-5B0A-BA67-1E67C8416FEC"><p> <codeph>TPositionUpdateOptions::SetMaxUpdateAge(0)</codeph> meaning that new position data is required </p> </li> <li id="GUID-8FFDD522-7CE8-5627-A630-100562B6AC61"><p> <codeph>TPositionUpdateOptions::SetAcceptPartialUpdates(EFalse)</codeph> meaning the partial updates are not returned </p> </li> </ul> <p>When setting update options, a client should beware of causing unexpected side effects. For example, if a client wants to accept partial updates, it might do the following: </p> <ul><li id="GUID-2C3A765E-9000-55D0-AF80-959E30FC6BCF"><p>Create a new <codeph>TPositionUpdateOptions</codeph> options object </p> </li> <li id="GUID-412495C8-DD14-5F18-B49A-4AB577F7ADFA"><p>Call <codeph>TPositionUpdateOptions::SetAcceptPartialUpdates(ETrue)</codeph>  </p> </li> <li id="GUID-0F75DB2C-A3AE-50DD-AE5F-A9C0767E92EF"><p>Call <codeph>RPositioner::SetUpdateOptions()</codeph> passing the options object as a parameter </p> </li> </ul> <p>However, this process has the side-effect of setting all the other update options to their default values as described above. In particular the client request will now not timeout which is unlikely to be the desired behaviour. To avoid this, a client should usually modify the current update options as follows: </p> <ul><li id="GUID-95B83378-4262-5861-A17A-1813DA6FC339"><p>Get the current update options by calling <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-69E1F34F-FEF9-3E0C-88B6-DE0458E005A5"><apiname>RPositioner::GetUpdateOptions()</apiname></xref>  </p> </li> <li id="GUID-7C5DE68E-D192-551F-8F30-F4DC35E9D736"><p>Call the appropriate <codeph>TPositionUpdateOptions::SetXXX()</codeph> methods for the options to be changed </p> </li> <li id="GUID-E889905E-5AE5-53D0-BA99-8F430EAC3177"><p>Call <codeph>RPositioner::SetUpdateOptions()</codeph> passing the modified options object as a parameter </p> </li> </ul> <p><b>Examples </b> </p> <p>The following code shows a simple example of how to set update options. Note that all the options are changed by the client. </p> <codeblock id="GUID-A6C75044-19AF-5A77-BB17-18F4B8AA32EE" xml:space="preserve">...
+
+TPositionUpdateOptions options;
+
+// Frequency of updates in microseconds
+const TTimeIntervalMicroSeconds KUpdateInterval(2000000);
+
+// How long the application is willing to wait before timing out the request
+const TTimeIntervalMicroSeconds KTimeOut(4000000);
+
+// The maximum acceptable age of the information in an update
+const TTimeIntervalMicroSeconds KMaxUpdateAge(1000000);
+
+options.SetUpdateInterval(KUpdateInterval);
+options.SetUpdateTimeOut(KTimeOut);
+options.SetMaxUpdateAge(KMaxUpdateAge);
+options.SetAcceptPartialUpdates(EFalse);
+
+User::LeaveIfError(positioner.SetUpdateOptions(options));
+
+/* Now when the application requests location information
+it will be provided with these options */ 
+
+positioner.NotifyPositionUpdate(posInfo, status);
+
+...
+
+</codeblock> <p>The following code example shows an example of how to change one update option (to accept partial updates). </p> <codeblock id="GUID-6AEAAEBA-0841-502C-A6AF-11E9A5B5BD88" xml:space="preserve">...
+
+TPositionUpdateOptions options;
+
+User::LeaveIfError(positioner.GetUpdateOptions(options));
+options.SetAcceptPartialUpdates(ETrue);
+User::LeaveIfError(positioner.SetUpdateOptions(options));
+
+// The other update options are unchanged
+
+positioner.NotifyPositionUpdate(posInfo, status);
+
+...
+
+</codeblock> <p> <b>Notes</b>  </p> <p>When a call to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> or <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-D9E0BC1D-7783-35BA-8D88-223576E4C85E"><apiname>RPositioner::GetLastKnownPosition()</apiname></xref> completes, it is necessary to re-issue the request by calling one of these methods again to obtain further updates even if <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-7A8BC23A-6FF9-3AAF-99BF-A6B074FDEA7B"><apiname>RPositioner::SetUpdateOptions()</apiname></xref> has been called. Setting update options allows a client to specify when the next position update is required, but does not cause periodic requests to the Location Server to be made. </p> <p>A client application can only have one outstanding request for location information per <codeph>RPositioner</codeph> subsession. An attempt to make a second request for location information while one is still outstanding causes a panic to occur. An application must cancel an outstanding request before it makes another request. This process is described in step 7. </p> <p><b>5. Request the location information </b> </p> <p>An application can call one the following methods to obtain position data: </p> <ul><li id="GUID-8026ACFD-3519-5917-B64C-6BB5349E0793"><p> <i>RPositioner::NotifyPositionUpdate()</i>  </p> <p>A client application calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> to request a position update. The LBS subsystem can either request that a Positioning Module obtains a new position and returns it to the client or simply returns an existing position calculated at some earlier time. The precise action taken by LBS depends on the quality of position required by the client because it is possible that a position obtained some time ago may meet the client application's position quality requirements. </p> <p> <codeph>RPositioner::NotifyPositionUpdate()</codeph> is a client-server asynchronous call. The client application can pass any position info class that derives from <xref href="GUID-73D6F438-C270-33B9-974B-D4D1583E1738.dita"><apiname>TPositionInfoBase</apiname></xref>. The standard position info class is <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref> which is supported by all Positioning Modules. An application can get extended location information (if there is a Positioning Module that can supply it) by passing one of the specialised position info classes such as <xref href="GUID-E438D9D8-8DC2-39E3-B5D2-9EBD1D2EED82.dita"><apiname>TCourseInfo</apiname></xref> or <xref href="GUID-54AE0674-C49D-3329-8B77-3A58EFFC03D7.dita"><apiname>TPositionSatelliteInfo</apiname></xref> instead of <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref>. </p> <p>See <xref href="GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita">Position data and info classes</xref> for more information about position data and wrapper info classes. </p> </li> <li id="GUID-8C8CD6DD-5ED1-5F73-9FCD-611579838CD0"><p> <i>RPositioner::GetLastKnownPosition()</i>  </p> <p>A client application calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-D9E0BC1D-7783-35BA-8D88-223576E4C85E"><apiname>RPositioner::GetLastKnownPosition()</apiname></xref> to request the device's last known position. </p> <p> <codeph>RPositioner::GetLastKnownPosition()</codeph> is a client-server asynchronous call. Calling this method does not instigate a new position fix even if the LBS subsystem does not have a last known position. It is therefore possible that this method will fail to return a position if one was not previously calculated. Client applications must check for this possibility by checking the values of <codeph>TCoordinate::Latitude()</codeph> and <codeph>TCoordinate::Longitude()</codeph> of the <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> object inside of the <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref> parameter. If latitude and longitude data are not available they are set to <codeph>NaN</codeph> (Not a Number). An application may also need to check the timestamp of the information to ensure it still meets its needs as it is possible that the last position update was obtained some time ago. </p> <p>If the LBS subsystem has a position from a previous request a call to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-D9E0BC1D-7783-35BA-8D88-223576E4C85E"><apiname>RPositioner::GetLastKnownPosition()</apiname></xref> is more efficient in terms of request response time and device power consumption. It may also be cheaper for the mobile device owner who may be charged to obtain a new position. </p> </li> <li id="GUID-462ACD7E-9E6E-5366-8538-4EF5416CB2E7"><p> <i>RPositioner::GetLastKnownPositionArea()</i>  </p> <p>A client application calls <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-A8484963-B2C4-339D-AF8C-056792444D89"><apiname>RPositioner::GetLastKnownPositionArea()</apiname></xref> to request the last known position that most closely matches the device's current location. The device's current location is estimated from the network cell ID received from the network. </p> <p> <codeph>RPositioner::GetLastKnownPositionArea()</codeph> is a client-server asynchronous call. The client application can request the LBS subsystem to provide either basic or the extended area information. The exact signature of the method is as follows: </p> <p> <codeph>RPositioner::GetLastKnownPositionArea(TPositionInfoBase&amp;
+                  aPosInfo, TPositionAreaInfoBase&amp; aAreaInfo, TRequestStatus&amp; aStatus)
+                  const;</codeph>  </p> <p>A client passes in <codeph>aPosInfo</codeph>, <codeph>aAreaInfo</codeph> and <codeph>aStatus</codeph> parameters. </p> <ul><li id="GUID-44BEA85B-1CFF-5380-B9FE-8659029CD52D"><p>On completion, <codeph>aPosInfo</codeph> contains the last known position that is the best match with information received from the network. </p> </li> <li id="GUID-8A708090-5281-5BC7-8EFE-A935317F9531"><p> <codeph>aAreaInfo</codeph> contains an estimate of the accuracy of the last known position. <codeph>TPositionAreaInfoBase</codeph> is the base class for two position area data classes. A client can pass a <xref href="GUID-5FA78254-70C7-3105-B6CE-E1A294C8F773.dita"><apiname>TPositionAreaInfo</apiname></xref> object to get basic position accuracy information, or it can pass a <xref href="GUID-BC7DEDAF-80AE-34DC-8FD8-CF77FA511B3D.dita"><apiname>TPositionAreaExtendedInfo</apiname></xref> object to get extra information about how the accuracy estimate was calculated. </p> </li> </ul> <p>If successful, <codeph>GetLastKnownPositionArea()</codeph> returns the best matching last known position in the <codeph>aPosInfo</codeph> parameter, an estimate of the position accuracy in the <codeph>aAreaInfo</codeph> parameter and a result code of <codeph>KErrNone</codeph>. </p> <p>See <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-A8484963-B2C4-339D-AF8C-056792444D89"><apiname>RPositioner::GetLastKnownPositionArea()</apiname></xref> for more information about using this method and the returned error codes. </p> <p>See <xref href="GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita">Position Area Data Classes</xref> for information about the classes that used to obtain the position accuracy estimate. </p> <p>The following code fragment shows how to use the method and check the accuracy of the returned position: </p> <codeblock id="GUID-2AC03D72-4105-5752-A294-08D64CAFB3A5" xml:space="preserve">
+// Create an RPositionServer, RPositioner, TRequestStatus as normal and open a session (see above)
+
+...
+
+// Want to know basic position accuracy, so use TPositionAreaInfo
+
+TRequestStatus status;
+TPositionInfo posInfo;
+TPositionAreaInfo areaInfo;
+
+// Get the last known location and an estimate of its accuracy
+
+positioner.GetLastKnownLocationArea(posInfo, areaInfo, status);
+User::WaitForRequest(status);
+
+// Check the return status 
+
+if ( status == KErrNone )
+ {
+
+ TPosition pos;
+ posInfo.GetPosition(pos);
+ TReal64 latitude = pos.Latitude();
+ TReal64 longitude = pos.Longitude();
+ TTime time = pos.Time();
+
+ /*
+ Check the posInfo object to see if it contains valid position data before trying to use it.
+ Check position latitude, longitude and (if necessary) altitude for Math::IsNaN().
+ Also a good idea to check the timestamp against current time, because this position could be old.
+ Details omitted...
+ */
+
+ // Get the accuracy of the position
+ TPositionAreaInfo::TArea area = areaInfo.Area();
+ 
+ // Does this position meet your accuracy requirements?
+
+ if (area == TPositionAreaInfo::EAreaCity)
+  {
+  
+  /* 
+  In this example, want city level position accuracy.
+  Is this position accurate enough for your application?
+  
+  If not you could also check for EAreaDistrict and EAreaStreet.
+  TPositionAreaInfo::_TArea defines the values you can check for.
+  
+  If this position is accurate enough, do something useful with your returned position data...
+  
+  If it is not accurate enough, you may need to get a new full position fix
+  Call positioner.NotifyPositionUpdate() to do this.
+  */
+  
+  }
+ 
+ }
+
+else
+
+    {
+
+ /*
+ Function returned something other than KErrNone.
+ It could be KErrNotFound which indicates that no stored position was found.
+ Or it could be a system error code if something went wrong - you need to check it.
+ */
+
+ }
+</codeblock> </li> </ul> <p>Client applications must always check the value of the <codeph>TRequestStatus</codeph> parameter as this indicates the success or failure of the location request and may indicate that specified location accuracy criteria could not be satisfied at the time of the request. </p> <p>The value of <codeph>TRequestStatus</codeph> that is set when a position update occurs or times out depends on the configuration of the LBS subsystem. See <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API runtime behaviour</xref> for more information. </p> <p><b>6. Receive and use the location information </b> </p> <p>When the Location Server obtains a position, the client's <xref href="GUID-E0B34F3E-D4C4-3232-B8B1-7DB35B454646.dita"><apiname>TRequestStatus</apiname></xref> variable is updated. In the example, the <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita"><apiname>TPositionInfo</apiname></xref> object that was passed to <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-321F6046-3551-3ACE-B0A3-26D51FAEB477"><apiname>RPositioner::NotifyPositionUpdate()</apiname></xref> holds the new position data in a <xref href="GUID-AB9F288E-86C6-327A-9E53-2EA746416038.dita"><apiname>TPosition</apiname></xref> object. </p> <p> <b>Important notes</b>  </p> <p>An application should test what kind of position is returned by <codeph>NotifyPositionUpdate()</codeph>. <xref href="GUID-73D6F438-C270-33B9-974B-D4D1583E1738.dita#GUID-73D6F438-C270-33B9-974B-D4D1583E1738/GUID-AC9654DD-2FC8-3B27-8743-83D7B8C58B79"><apiname>TPositionInfoBase::PositionMode()</apiname></xref> returns a bitmask value of type <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-AE121191-0B6A-39D8-9379-386EFF58CF0A"><apiname>TPositionModuleInfo::TTechnologyType</apiname></xref> that is composed of values of type <xref href="GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26.dita#GUID-B098F3DB-E2FE-3C5A-8508-4B04D954AB26/GUID-03AF8C51-1CAF-3F4C-BED1-17844FAE8423"><apiname>TPositionModuleInfo::_TTechnologyType</apiname></xref>. Valid combinations of this value are as follows: </p> <table id="GUID-8D2D95EF-9749-5D72-9F1D-FB878961DE84"><tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/><thead><row><entry>TPositionInfoBase::PositionMode()</entry> <entry>Meaning</entry> </row> </thead> <tbody><row><entry><p>ETechnologyNetwork </p> </entry> <entry><p>A reference position obtained from the network </p> </entry> </row> <row><entry><p>ETechnologyTerminal | ETechnologyAssisted </p> </entry> <entry><p>A position calculated using GPS with assistance data from the network </p> </entry> </row> <row><entry><p>ETechnologyNetwork | ETechnologyAssisted </p> </entry> <entry><p>A position calculated using GPS measurements by a remote server in the network </p> </entry> </row> <row><entry><p>ETechnologyTerminal </p> </entry> <entry><p>A position calculated using GPS without assistance data (autonomous mode) </p> </entry> </row> </tbody> </tgroup> </table> <p>A reference position <i>may</i> be returned to a client application by the Location Server before a more accurate position fix is available. Whether a reference position is made available to the Location Server depends on the implementation of the Positioning Modules by the Symbian device creator or handset manufacturer. </p> <p>If a reference position is returned, the behaviour is as follows: </p> <p> <b>For the first call to RPositioner::NotifyPositionUpdate()</b>  </p> <p> <codeph>NotifyPositionUpdate()</codeph> completes and a <i>reference position</i> is returned to the client. The client application can check for return of a reference position by checking for <codeph>TPositionInfoBase()::PositionMode() ==
+             TPositionModuleInfo::ETechnologyNetwork</codeph>. If a reference position is returned it may not satisfy the application's position accuracy quality criteria and the application will need to make another <codeph>NotifyPositionUpdate()</codeph> request. </p> <p> <b>For subsequent calls to RPositioner::NotifyPositionUpdate()</b> (made by the same client subsession) </p> <p> <codeph>NotifyPositionUpdate()</codeph> completes and a position is returned to the client. This position may be either: </p> <ul><li id="GUID-F707A545-244D-5110-80CF-CBE9FFECC05C"><p>Calculated in the mobile device by GPS with assistance data (for Terminal Based Mode) </p> <p> <codeph>TPositionInfo::PositionMode() ==
+                  TPositionInfoBase::ETechnologyTerminal |
+                  TPositionInfoBase::ETechnologyAssisted</codeph>  </p> </li> <li id="GUID-289DE4DD-469D-58F0-8534-0B4353CDEC24"><p>Returned from the network, a position known as the <i>final network position</i> (for Terminal Assisted Mode) </p> <p>The value of <xref href="GUID-D5B2E933-209D-3871-8E27-CC5C8855C745.dita#GUID-D5B2E933-209D-3871-8E27-CC5C8855C745/GUID-A01CF36E-6EF9-395A-94DC-AB94478C66BE"><apiname>TPositionInfo::PositionMode()</apiname></xref> for a final network position depends on the configuration of the LBS subsystem: </p> <p>Normal behaviour is to return <codeph>TPositionInfo::PositionMode()
+                  == TPositionModuleInfo::ETechnologyNetwork |
+                  TPositionModuleInfo::ETechnologyAssisted</codeph>, but it is possible for LBS to return <codeph>TPositionModuleInfo::ETechnologyTerminal |
+                  TPositionModuleInfo::ETechnologyAssisted</codeph> if it is configured to do so. See <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API runtime behaviour</xref> for more information. </p> </li> </ul> <p>Note that <codeph>NotifyPositionUpdate()</codeph> may complete early if a GPS positioning module signals to LBS that it will be unable to return a location fix with the required quality criteria. In this case the Location Server returns the best location fix it can obtain to the client. The value of the <codeph>TRequestStatus</codeph> parameter of the client is set to either <codeph>KPositionQualityLoss</codeph> or <codeph>KErrNone</codeph> depending on the configuration of <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API runtime behaviour</xref>. </p> <p><b>Tracking </b> </p> <p>A position update time line for tracking is shown in figure 2. Note that the exact behaviour of tracking on systems may differ from that shown in Figure 2. </p> <p>A client application has previously called <codeph>TPositionUpdateOptions::SetUpdateInterval(T)</codeph> and <codeph>RPositioner::SetUpdateOptions()</codeph> (not shown in figure 2). Partial updates are not set. LBS is also configured to return reference positions and accurate positions only (see <xref href="GUID-4E56E531-5757-5740-9C7D-705D427FA9D5.dita">Location Acquisition API runtime behaviour</xref> for more information about this behaviour). The important points are: </p> <ul><li id="GUID-644F7437-0207-5B16-B38C-C695DC5BB83B"><p>A client application makes its first call to <codeph>RPositioner::NotifyPositionUpdate()</codeph> (First NPUD in figure 2). </p> </li> <li id="GUID-E9F2BBA1-8F8A-516C-BB01-640535090820"><p>After a time t, the client's <codeph>RunL()</codeph> method is called and it receives its first position update (the reference position update Ref Pos in figure 2). This first position update is delivered to the client by LBS as soon as possible (t is as short as possible and is not equal to T). The client then makes its next call to <codeph>NotifyPositionUpdate()</codeph> (the next NPUD in figure 2). When tracking, a client application should make its next call to <codeph>RPositioner::NotifyPositionUpdate()</codeph> as soon as possible in its <codeph>RunL()</codeph> method. The time between the client's <codeph>RunL()</codeph> and the client's next NPUD is exaggerated for clarity in Figure 2. </p> </li> <li id="GUID-8D670561-5F51-5836-AA24-3B0CC0417BB7"><p>At a time t + T (where T is the update interval) the client's <codeph>RunL()</codeph> method is called and it receives the next position update (GPS Pos in figure 2). The client makes its next call to <codeph>NotifyPositionUpdate()</codeph>. </p> </li> <li id="GUID-E93AE6CA-DF93-56AD-B68B-A60A1B96F128"><p>The next position update is expected at time t + 2T, but in the case shown in figure 2 this is not possible (the mobile device may have moved into an area where the GPS signal is weak). In general if it is not possible to obtain an accurate GPS fix by time t + nT, but the fix is obtained a short time later, the next position update is delivered as soon as possible after time t + nT (after t + 2T in figure 2). </p> </li> <li id="GUID-9E52BD1C-7BD4-55F8-BF75-98669883C0CF"><p>The client makes its next call to <codeph>NotifyPositionUpdate()</codeph> and at time t + (n+1)T the next position update is delivered (at t + 3T in figure 2). </p> <p> <i>The important point to note is that LBS attempts to deliver position updates at regular times t + nT but the time interval between position updates may temporarily be greater than or less than T.</i>  </p> </li> <li id="GUID-A7F59CB4-BFC7-5F88-8AF2-C8D6C24122D9"><p>Note that if partial updates were enabled, an incomplete position would be delivered at time t + 2T if it were available. Also note that an inaccurate position would be delivered if one was available at that time and LBS was configured to return it. </p> <p> </p> </li> </ul> <fig id="GUID-916FB3EF-08C6-5A0C-8D72-881FEEC7C161"><title>
+                Figure 2. Position updates when tracking 
+             </title> <image href="GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e243532_href.png" placement="inline"/></fig> <p><b>Error codes </b> </p> <p>The value of a client's <codeph>TRequestStatus</codeph> can be set to an LBS error code (defined in <filepath>lbserrors.h</filepath>) <i>or an error code defined in a licensee's Positioning Module</i>. An error causes <codeph>NotifyPositionUpdate()</codeph> to complete. An application should always check the value of <codeph>TRequestStatus</codeph> when its <codeph>RunL()</codeph> method is called. </p> <p><b>7. Cancel or complete a location information request </b> </p> <p>To cancel a location request a client application calls <xref href="GUID-BC95F637-51F6-3D99-9265-C6DFD903C5BC.dita#GUID-BC95F637-51F6-3D99-9265-C6DFD903C5BC/GUID-168130E7-459D-3108-9418-94773D802EAE"><apiname>RPositionerSubSessionBase::CancelRequest()</apiname></xref>, passing a <xref href="GUID-355E1EEF-A312-3BB8-9655-9DD6805A3CDD.dita"><apiname>EPositionerNotifyPositionUpdate</apiname></xref> parameter. The client's <codeph>TRequestStatus</codeph> is set to <codeph>KErrCancel</codeph> if the request was successfully cancelled and no position update is returned. </p> <p>To complete a location request early, a client application calls <xref href="GUID-BC95F637-51F6-3D99-9265-C6DFD903C5BC.dita#GUID-BC95F637-51F6-3D99-9265-C6DFD903C5BC/GUID-88F0FA62-BC72-3BC5-B42E-FA0A26F3E405"><apiname>RPositionerSubSessionBase::CompleteRequest()</apiname></xref> passing a <xref href="GUID-355E1EEF-A312-3BB8-9655-9DD6805A3CDD.dita"><apiname>EPositionerNotifyPositionUpdate</apiname></xref> parameter. Calling this method does not cancel the position update, but asks the Location Server to return any available position data. The returned position update may be different from that which would have been returned if the request had been allowed to complete normally. If the request is completed early, the client's <codeph>TRequestStatus</codeph> is set to <codeph>KPositionEarlyComplete</codeph>. </p> <p><b>8. Close the subsession and session </b> </p> <p> <xref href="GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575.dita#GUID-1EAEB7EF-0AC7-37C7-B35F-C9B780FFC575/GUID-DE09BADB-6D90-3995-A893-F949F9C37A2B"><apiname>RPositioner::Close()</apiname></xref> closes the subsession. <xref href="GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B.dita#GUID-0ADC4654-7F7B-3B53-A2F9-7035670F501B/GUID-3D081F5B-F8D6-3168-951F-EDBC2364EB76"><apiname>RPositionServer::Close()</apiname></xref> closes the server session. In the code example the cleanup stack function is used. Any privacy requester objects created by a client must also be cleaned up. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2" xml:lang="en"><title>Quick
+Start</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Generic OS Services is a collection of components and libraries that provide
+generic OS level services to the Symbian platform components and applications. </p>
+<section><title>Getting started with Generic OS Services</title> <p>The following
+list briefly describes how device creators or Symbian Developers can use the
+APIs of the components and libraries provided by Generic OS Services: </p> <ul>
+<li id="GUID-E5E9B035-EA72-5931-9295-6601A5A202CA"><p>Use the Plug-In Framework
+(ECom) APIs to register, discover plug-ins and load appropriate plug-ins. </p> </li>
+<li id="GUID-2C3836C2-5F9B-5E5B-95A8-725325956AFF"><p>Use the P.I.P.S. libraries
+(<codeph>libc</codeph>, <codeph>libm</codeph>, <codeph>libpthread</codeph> and <codeph>libdl</codeph>)
+to port POSIX-based applications to the Symbian platform. </p> </li>
+<li id="GUID-195FD344-AF6B-517A-869C-99A816FE45CB"><p>Use the Standard C++
+libraries to develop or port Standard C++ applications or libraries to the
+Symbian platform. </p> </li>
+<li id="GUID-71C8DD3C-9989-5EB0-AC01-BACACB0BB683"><p>Use the <xref href="http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/librt.html" scope="external">Librt</xref> library APIs to port Librt-based applications
+to Symbian platform quickly and easily. </p> </li>
+<li id="GUID-83754BD8-F2AA-55FC-999F-BF46BDD1CA61"><p>Use the EUser High Level
+(EUserHL) library to do better string handling, resource management, and error
+handling and object creation along the lines of standard C++ practices. EUserHL
+library provides a usability layer to hide away some of the complexities of
+the Symbian platform. </p> </li>
+<li id="GUID-6BEBEC4E-71F5-56F0-A731-DD498446B6BB"><p>Use the Zip Compression
+Library APIs to perform file and stream compression and decompression. </p> </li>
+<li id="GUID-D62D3C16-0C6A-5569-BCD7-546EBF687282"><p>Use the task scheduler
+APIs to develop applications with scheduling options and capabilities. </p> </li>
+<li id="GUID-26FD6D1B-5F7C-5C4B-8474-B5B7D4BB7D0F"><p>Use the Active Backup
+Client APIs to create backup and restore software with complete control of
+the data backed up and restored. </p> </li>
+<li id="GUID-D9B2CA30-9AA0-529C-B531-5B511BD05B7C"><p>Use the HTTP Utilities
+library APIs to extract URI components, construct and modify Uniform Resource
+Indicators (URIs), text utilities, and URI component utilities required to
+work with URIs. </p> </li>
+<li id="GUID-4FC76033-12BC-5D76-AD3F-D4825E3D6C1B"><p>Use the MIME (Multipurpose
+Internet Mail Extension) Recognition Framework APIs to implement data type
+recognition using MIME recognizer plug-ins. </p> </li>
+<li id="GUID-22816C73-E2CC-57FD-BB18-8A3DA071F95B"><p>Use the Basic Application
+Framework Utilities library (BAFL) to in turn use utilities, such as clipboard,
+command-line parser, descriptor array, environment change notifier, incremental
+matcher, resource files, localized names of plug-ins, system sounds and string
+pools. </p> </li>
+<li id="GUID-B4CB6CF9-8022-55A8-9642-2F79306C6653"><p>Use the Base Services
+Utility library (BSUL) to validate messages and handle errors. </p> </li>
+<li id="GUID-F239EF07-F3DC-5C23-8A21-44CDFE798322"><p>Use the Activity Manager
+library to enable clients to monitor user inactivity (idle time) and user
+activity (key press). </p> </li>
+<li id="GUID-FFF66809-C883-570C-A741-9182280B2F7C"><p>Use the System Utility
+library to perform the following tasks: </p> <ul>
+<li id="GUID-62F47958-AFEF-5D09-BF39-88676E8E889B"><p>Retrieve software and
+language package version strings for display purposes. </p> </li>
+<li id="GUID-B3726DF9-7108-5C0A-A713-2B0BAA36051A"><p>Check for free space
+on a disk drive before file creation or writing. </p> </li>
+<li id="GUID-F47C051F-921C-5B72-8498-0D4AB4FB295F"><p>Get device type information
+(phone model) for display purposes. </p> </li>
+</ul> </li>
+</ul> </section>
+<section><title>Architecture</title> <p>The Generic OS Services module is
+a group of non-related components and libraries that provide OS level services
+to other components of the Symbian platform. The components and libraries
+in Generic OS Services are grouped into the following collections: </p> <ul>
+<li id="GUID-D831C8AB-D3AF-57EB-81CF-E4EF1E57CBED"><p><xref href="GUID-9208E03A-CC7A-57A9-84BD-778B99040842.dita"> Compression
+Libraries</xref>  </p> </li>
+<li><p><xref href="GUID-E2DE2C6F-E071-5E88-96F1-D71DDED84609.dita">Generic Open
+Libraries</xref></p></li>
+<li id="GUID-5F25107F-DF98-5DB1-9D4A-B8A7B68B2919"><p><xref href="GUID-94215E49-605B-51BA-B215-10BDA1A0C013.dita">Generic
+Services</xref>  </p> </li>
+<li id="GUID-FE8F4625-0D24-5113-A72F-B9E70801284F"><p><xref href="GUID-324107D1-6E0B-56DD-BDC0-7296F688A9CF.dita"> Low
+Level Libraries and Frameworks</xref>  </p> </li>
+</ul> <p>The following diagram outlines the Generic OS Services collections
+and components associated with each collection: </p> <fig id="GUID-3DCD7AF8-7355-5752-A569-EA4F9078C739">
+<title>              Collections and components of Generic OS Services   
+        </title>
+<image href="GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e128205_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Technologies</title> <p>Generic OS services enables, implements
+or uses the following technologies: </p> <ul>
+<li id="GUID-66896EAF-09A0-5EBB-A496-106F94A924EA"><p> <b>zlib:</b> The <xref href="GUID-5D14ADEC-ED83-5FA4-B551-C57CAE4F79BE.dita">Zip Compression Library</xref> (EZLib)
+provides C++ wrapper classes that encapsulate the functionality of the Open
+Source <xref href="http://en.wikipedia.org/wiki/Zlib" scope="external">zlib</xref> library
+v1.2.3. It provides stream and file compression and decompression functionalities. </p> </li>
+<li id="GUID-EF1DE4A8-CBE1-5DD3-9D89-E2EAC1CC1B29"><p> <b> Standard C++:</b> A
+Standard C++ environment with IOStream and STL (Standard Template Library)
+libraries enables you to develop or port Standard C++ applications or libraries
+quickly and easily on Symbian platform. For more information, see the <xref href="GUID-4492D5C1-C64E-5561-8A3F-8D887603B6FB.dita"> Standard C++ Porting Tutorials</xref> section. </p> </li>
+<li id="GUID-95F58286-C65B-5EC3-A432-1C3C5CA02269"><p> <b>P.I.P.S. Is POSIX
+on Symbian Platform (P.I.P.S.):</b> P.I.P.S. provides an API layer, above
+the Symbian platform native APIs, that is more closely aligned with industry
+standard APIs making Symbian software development more accessible to Symbian
+Developers who program using the C language. Symbian Developers can use the
+P.I.P.S. libraries (<codeph>libc</codeph>, <codeph>libm</codeph>, <codeph>libpthread</codeph> and <codeph>libdl</codeph>)
+to port POSIX-based applications to the Symbian platform. For more information,
+see the <xref href="GUID-C4C85189-BA6F-5F11-ABB3-727D8C1F5984.dita">P.I.P.S. Porting
+Tutorials</xref> section. </p> </li>
+<li id="GUID-571DD883-A5A6-5A89-9092-47279A521685"><p> <b> POSIX.1b, Real-time
+extensions:</b> The Librt library enables support POSIX.1b, Real-time extensions
+on Symbian platform and is based on the Linux Standard Base (LSB) 3.1 specification.
+It covers features such as shared memory, clocks and real time emulation for
+timers. Support for the Librt library on Symbian platform enables you to port
+Librt-based applications to Symbian platform quickly and easily. For more
+information, see the <xref href="GUID-6565B222-4036-5C3D-8319-4CDDA3F2098D.dita">Librt</xref> section </p> </li>
+<li id="GUID-CBF47924-085E-5546-92D8-D9269072B816"><p> <b>MIME (Multipurpose
+Internet Mail Extension):</b> MIME is an internet standard system for identifying
+the type of data in a file or stream. Types can include graphics, photos,
+audio, video files and formatted text. MIME type recognition enables devices
+to identify data in streams or files and start appropriate applications automatically. </p> <p>This
+technology is implemented by the MIME recognition framework component. The
+MIME recognition framework implements data recognition using MIME recogniser
+plug-ins. For more information, see the <xref href="GUID-F18D0E06-2FB8-5339-AF31-02CC7D5A8010.dita">MIME
+Recognition Framework</xref> section. </p> </li>
+<li id="GUID-51BFDE39-44E7-51E6-82BC-2F45738A0ADD"><p> <b>ECom Plug-in:</b> The
+Plug-in (ECom) framework is a generic framework that enables registration
+and discovery of plug-ins, and the loading of an appropriate plug-in. The
+Plug-In framework is intended to provide a common and system-wide mechanism
+for instantiating a dynamically determined component. For more information,
+see the <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">Plug-in Framework</xref> section. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB" xml:lang="en"><title>PIM
+Examples</title><shortdesc>Example code for Application Engines and Services. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6C2C8D4-D3B0-5441-BF2D-6F42489198D6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6C2C8D4-D3B0-5441-BF2D-6F42489198D6" xml:lang="en"><title>Text Views concepts</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6CF2920-9095-568B-B332-D5F4A05BD23A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6CF2920-9095-568B-B332-D5F4A05BD23A" xml:lang="en"><title>Headers</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>HTTP request and response headers are handled by the classes <xref href="GUID-54F9A87B-FE2F-3429-9793-0A24B83466B9.dita"><apiname>RHTTPHeaders</apiname></xref> and <xref href="GUID-DEE8279A-3BEC-316F-97B8-6C49FEDBD5B3.dita"><apiname>THTTPHdrVal</apiname></xref>.
+Calling <codeph>GetHeaderCollection()</codeph> on <xref href="GUID-8D952FEE-0EA0-3DBC-AADB-6F4200B82687.dita"><apiname>RHTTPRequest</apiname></xref> and <xref href="GUID-BA9EA976-E4CF-37D7-9E73-420A6D50203F.dita"><apiname>RHTTPResponse</apiname></xref> objects
+returns the <codeph>RHTTPHeaders</codeph> for the HTTP request and HTTP response
+respectively. </p>
+<p> <codeph>RHTTPHeaders</codeph> represents the entire message header, that
+is, the entire set of header fields in a request or a response. <codeph>THTTPHdrVal</codeph> represents
+a value that a single header field can take. </p>
+<p>HTTP will set some header fields automatically. The client is not required
+to add the following to requests: </p>
+<ul>
+<li id="GUID-0D70B611-CE1F-589A-BC84-7FE9D3FDF4E7"><p> <b> Content-Length:</b> This
+is derived from the client's request <xref href="GUID-1B03F068-9552-37BA-A284-8E54FAC2AAC5.dita"><apiname>MHTTPDataSupplier</apiname></xref>. </p> </li>
+<li id="GUID-28748F12-A98D-5DA7-8D1B-2E54C0E841E1"><p> <b> Connection:</b> This
+is handled automatically to manage a HTTP/1.1 persistent connection. If a
+client wants to indicate that the persistent connection is to close, it must
+add a Connection header. </p> </li>
+<li id="GUID-12390813-6FDC-5752-9DFD-7CAC8DB0D33E"><p> <b>Host:</b> This is
+taken from the client's request URL. If a relative URL is supplied, the client
+must add a Host header. </p> </li>
+<li id="GUID-337B6F8F-2E95-51D6-9ECE-A0410E30BDCF"><p> <b>Transfer-Encoding:</b> This
+is added automatically if the client's request <codeph>MHTTPDataSupplier</codeph> specifies
+an unknown overall data size. </p> </li>
+<li id="GUID-9001744A-AE2A-51A7-96D6-F08158002EB0"><p> <b>Authorisation:</b> This
+is added automatically by the Authentication filter. </p> </li>
+</ul>
+<p>Also, HTTP's filters and protocol handler deals automatically with some
+headers contained in the server response. These are: </p>
+<ul>
+<li id="GUID-FCD99F5A-7BED-5A41-AA1C-BB88E86C41C5"><p> <b>Content-Length:</b> This
+value is provided through the response body <codeph>MHTTPDataSupplier</codeph>. </p> </li>
+<li id="GUID-19E15F12-53E4-53C1-A160-2A5F003DD4F4"><p> <b>Connection:</b> This
+is handled automatically to manage the HTTP/1.1 persistent connection. </p> </li>
+<li id="GUID-5F60A3C3-B900-54F0-BC70-A36C4F815013"><p> <b>Location:</b> This
+is handled automatically by the Redirection filter. </p> </li>
+<li id="GUID-8F651542-DD14-5633-9758-8B2C4B64A290"><p> <b>Transfer-Encoding:</b> This
+is handled automatically by the protocol handler, and 'chunked' encodings
+are removed before presenting the response body to the client. </p> </li>
+<li id="GUID-D5C08974-4FAF-59F6-9F43-7B95ED2F21C0"><p> <b>WWW-Authenticate:</b> This
+is added automatically by the Authentication filter. </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F6F9B2AC-A47E-5B0B-A1E2-EE2B31B59F2A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F6F9B2AC-A47E-5B0B-A1E2-EE2B31B59F2A" xml:lang="en"><title>Arrays
+And Lists Overview</title><shortdesc>This document is an overview of arrays and lists.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-284E9A1C-E54C-4324-BDB4-91D1A97AD784"><title>Purpose</title> <p>Provides
+arrays and lists of objects.</p> </section>
+<section id="GUID-1BA589F7-EE53-4AF5-B350-6B6A71CA71AD"><title>Description</title> <p>Functionality
+is provided by a number of APIs. Use them as follows:</p> <p><xref href="GUID-C302BD91-12AB-5888-98AC-33EB7A146312.dita">Fixed
+Size Arrays Overview</xref> </p> <p>Provides a simple wrapper to C++ arrays
+with additional automatic checking of index values.</p> <p><xref href="GUID-56EE13F0-CAEE-5E1C-99CD-2FEC8C3BCA6B.dita">Dynamic
+Arrays Overview</xref> </p> <p>Provides families of dynamically expandible
+heap-based arrays.</p> <p><xref href="GUID-BC32CC7C-99BA-59E8-A268-42F411CF336F.dita">Array
+Keys Overview</xref> </p> <p>Defines a property of array element by which
+a dynamic array can sorted and searched.</p> <p><xref href="GUID-8B28B8BB-6935-5332-B4D3-4183FDA3D202.dita">Singly
+Linked Lists Overview</xref> </p> <p>Manipulates a singly-linked list: an
+ordered, non-indexed list of elements, that can be traversed only from start
+to end. </p> <p><xref href="GUID-B1BDF68C-F989-56BD-AED4-727595D7355C.dita">Doubly
+Linked Lists Overview</xref> </p> <p>Manipulates a doubly-linked list: an
+ordered, non-indexed list of elements, that can be traversed in both directions. </p> </section>
+<section id="GUID-C0496CC0-861F-4A09-BD85-B9DA79A6B881"><title>See also</title> <p><xref href="GUID-A668C70B-1AFF-5D58-9527-8530E2472227.dita">Buffers And Strings Overview</xref> </p> <p><xref href="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita">System Static Functions Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16" xml:lang="en"><title>SendAs
+Tutorial</title><shortdesc>SendAs provides APIs which create messages in the Drafts folder
+of a Message Store. It enables you to build the message parts, that is, to
+add message recipient(s), subject, body and so on. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> <b> Note:</b> This tutorial explains the basic steps of creating and sending
+SendAs messages using the <xref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita">SendAs
+example code</xref> as a reference. </p>
+
+<section><title>Required background</title> <p>This tutorial assumes that
+you have a good understanding of <xref href="GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita">SendAs</xref>. </p> </section>
+<section><title>Introduction</title> <p>The <xref href="GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita#GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65/GUID-24801AA6-6CDE-584F-A233-F7B68C1C59E3">SendAs
+Server</xref> maintains all SendAs entries and controls the access to a message
+store. It allows client applications to create messages in the Drafts folder
+of the message store. The SendAs API allows a client application to launch
+an appropriate message editor for a given message type. There are two methods
+of sending messages: confirmed and unconfirmed send. Confirmed send requires
+confirmation by the UI MTM which typically asks the phone user. Unconfirmed
+send does not require confirmation by the UI MTM. </p> <p>The main client-side
+classes of SendAs are <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> and <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> . <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> is
+used to establish a session with the SendAs Server and to find the available
+message types and services. <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> is used to create,
+set and send messages. </p> <p>Client applications do not require any capabilities
+to use the <xref href="GUID-E1699CAB-423D-3AFA-BE77-3AFF38886EA3.dita"><apiname>RSendAs</apiname></xref> and <xref href="GUID-4499491F-FA1A-38E1-BB13-1AB184A31DA6.dita"><apiname>RSendAsMessage</apiname></xref> classes.
+However, if an application does not have the necessary security capabilities
+to send a message, the SendAs Server ensures that a message is only sent with
+the user's authorization. See <xref href="GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita">SendAs
+Overview</xref> for more information. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-69EF301A-CC59-56FA-A1B3-9C02F057F2CF">
+<li id="GUID-DD963B8B-2D29-5D66-BE0D-4218E17618FF"><p><xref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita#GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16/GUID-D9B54B5B-97EE-5DF4-90D5-FF25B4227771">Create a session with the SendAs Server</xref>. </p> </li>
+<li id="GUID-B2FD6BBE-100B-5AF9-A084-C8D370A1580A"><p><xref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita#GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16/GUID-0AA95951-07F0-56A7-A5B8-2F82C3A299EE">Select from a list of available MTMs and accounts</xref>. </p> </li>
+<li id="GUID-D53B6C37-5596-5925-A085-1962A744ADB1"><p><xref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita#GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16/GUID-0B01641A-1BB0-5A44-AF48-B0C4A1730C4D">Create and populate a message</xref>. </p> </li>
+<li id="GUID-729F11F2-88F5-5E45-BA77-009D469374D1"><p><xref href="GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16.dita#GUID-F7598A84-9736-5310-AAA4-5BCC4BE46C16/GUID-109BD9F2-A6D5-500D-BEA0-AA7AA3C822B8">Send the message</xref>. </p> </li>
+</ol> </section>
+<example><title>SendAs example</title> <p>For more details on implementing
+all the SendAs functions, see <xref href="GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita">SendAs
+example code</xref>. </p> </example>
+</conbody><related-links>
+<link href="GUID-31859C3F-2D71-58E9-ACA8-99FAB00A48C6.dita"><linktext>OBEX MTM</linktext>
+</link>
+<link href="GUID-C290FA5E-8E41-5D19-B8C1-F88491EE6388.dita"><linktext>Messaging
+Framework</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F" xml:lang="en"><title>Doubly
+linked lists</title><shortdesc>This document is a introduction to doubly linked lists.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A doubly linked list is one where each element has pointers forwards to
+the next element and backwards to the previous element. The list is circular
+- the last element points forwards to an anchor point, and the anchor point
+points back to the last element. </p>
+<p>Anchor points are always referred to as <i>headers</i>.</p>
+<p>A doubly linked list is useful for maintaining a circular queue of items.</p>
+<fig id="GUID-1D25A6C6-B294-554E-9EDD-20F8BA05FB07">
+<image href="GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e188712_href.png" placement="inline"/>
+</fig>
+<p>Doubly linked lists involve the creation and use of the classes:</p>
+<ul>
+<li id="GUID-68B5EDB3-EE3B-5186-9F79-CE1F307B8DA1"><p><codeph>TDblQueLink</codeph> </p> </li>
+<li id="GUID-5F281C65-DD6E-5862-A465-C11D8A515CFA"><p><codeph>TDblQue&lt;class
+T&gt;</codeph> </p> </li>
+<li id="GUID-7A9DD0CC-4F91-5C24-85FE-D91696257A5C"><p><codeph>TDblQueIter&lt;class
+T</codeph> </p> </li>
+</ul>
+<p>In practice, these classes are almost always used as components of other
+classes.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F77578A2-3B11-5C29-9D00-43B971561876.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F77578A2-3B11-5C29-9D00-43B971561876" xml:lang="en"><title>Using Notification Services</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F77CC49A-904D-486B-8D16-972525EC34D5" xml:lang="en"><title>Data
+query</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A Data query requests the user to type in some alphanumeric or numeric
+information, such as a name or a phone number.</p>
+<p>The query contains a prompt text and a user input field. The input field
+can have any type of an editor, depending on the context, so that the input
+may be restricted to e.g. numeric data, date or time only. Both the prompt
+and input fields can be longer than one line when necessary.</p>
+<p>The softkeys of a Data query are <b>OK</b> on the left for accepting the
+input, and <b>Cancel</b> on the right softkey for discarding the query. The
+Selection key accepts the input in the same way as the left softkey.</p>
+<p>The Clear key is used for deleting characters and for that purpose only.</p>
+<fig id="GUID-B2C1C6E7-9389-4F8E-A38D-A99B78696706">
+<title>Data query. </title>
+<image href="GUID-9C848E60-DD02-4787-90F3-1857AC3C3D1A_d0e62025_href.png" scale="40" placement="inline"/>
+</fig>
+<section><title>Using data queries in
+C++ applications</title><p>For implementation information, see <xref href="GUID-7B275129-5EF7-4B27-B603-3BDE2C650A93.dita">Queries</xref>.</p></section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e150867_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2"><title>Creating an Implicitly Bound Socket</title><shortdesc>This topic describes how create an implicitly bound socket. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><ul><li id="GUID-B46FE3BB-A098-5234-86F4-DF6332B6497E"><p>An application opens a socket using the default interface connection and binds to a port and IP address of the connection. The application receives inbound traffic only from the interface the socket is bound to. </p> <p>For example, an application opens an implicit UDP socket and listens on port 8000. The UDP socket binds to interface IP address <codeph>10.253.4.134</codeph>. The UDP socket must receive data packets from this interface only. </p> </li> <li id="GUID-D83D0586-F746-5099-8778-248C3B8AD9EC"><p>If an application opens a socket and does not bind to a port or IP address of the default interface connection, then the application receives inbound traffic from multiple interfaces. </p> <p>For example, if an application opens an implicit UDP socket and does not bind the port 8000 to the IP address of the default interface connection, then the application receives inbound traffic from all the interfaces. </p> </li> </ul> <example><title>Implicit binding example</title> <p>Client B creates a socket with implicit binding without specifying the interface connection. </p> <codeblock id="GUID-A2F39285-5934-5FDC-8E94-1EDBD7A7446E" xml:space="preserve">
+server = RSocketServ.Connect();
+socket1 = RSocket.Open(server);
+</codeblock> <p>ESock creates the socket within the default connection and subconnection. </p> <fig id="GUID-31F625B2-DB7F-51F8-AB6D-F06925DF1A64"><image href="GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e96066_href.png" placement="inline"/></fig> </example> </conbody><related-links><link href="GUID-D1BCE2D9-04B5-5C39-A50B-C5BBDAAFEFED.dita"><linktext>Socket Binding</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66" xml:lang="en"><title>XML
+Framework Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The XML Framework is a collection of components for event-based XML parsing
+and provides content-processing architecture. </p>
+<section><title>Purpose</title> <p>The XML Framework provides configurable
+features for parsing XML and <xref href="http://www.w3.org/TR/wbxml/" scope="external">WBXML</xref> (WAP
+Binary XML), with options for validating against a specification and auto-correcting
+for spelling errors in the validated text, using a single interface. It is
+based on the <xref href="http://www.saxproject.org" scope="external">SAX</xref> (Simple
+API for XML) specification. </p> </section>
+<section><title>Required background</title> <p>You must have a basic understanding
+on XML before using XML Framework. </p> </section>
+<section><title>Key concepts</title> <p>The following are the key concepts
+of XML Framework: </p><p><b>Attribute</b></p><p>A name-value pair separated
+by an equals sign, for example <codeph>author="Jane Austen"</codeph>  </p><p><b>Attribute
+type </b></p><p>One of certain data types defined for attributes, for instance <codeph>CDATA</codeph>. </p><p><b>Client</b></p><p>An
+application which uses the XML framework for parsing or generating a document. </p><p><b>Document
+Type Definition (DTD) </b></p><p>A document which defines a particular use
+of XML entities (the names, attributes and values permitted). </p><p><b>Extension</b></p><p>WBXML
+extends XML syntax with extension tokens which are used differently by different
+applications. For example, extension token is used to refer to a string table
+created specifically for each message and transmitted in the introduction
+of the message. </p><p><b>Parser</b></p><p>It is an interface to the XML framework
+which allows a client to access the parser plug-ins, which are specific for
+a mark-up language. For example, XML Expat Parser and WBXML Parser. </p><p><b>String
+dictionary collection</b></p><p>A class that holds a collection of string
+dictionaries. </p><p><b>String dictionary plug-ins </b></p><p>The XML Framework
+allows strings to be stored in DTD document, XML namespace or WBXML code page
+in an ECOM plug-in that could be accessed as required by the parser and the
+client. These plug-ins are referred as string dictionary plug-ins. </p><p><b>String
+pool</b></p><p>A string pool is a mechanism for storing strings in a particular
+way using which the strings can be compared quickly. </p><p><b>String table</b></p><p>A
+WBXML document is encoded and decoded using a table of frequently encountered
+strings which the body of the document references by index to compress the
+data. </p><p><b>Uniform Resource Identifier (URI)</b></p><p>The web address
+associated with a prefix. For instance, <codeph>http://www.w3.org/XML/1998/namespace</codeph>. </p><p><b>WBXML</b></p><p>WAP
+Binary XML (WBXML) is a binary representation of XML. It was developed by
+the Open Mobile Alliance as a standard to allow XML documents to be transmitted
+in a compact manner over mobile networks and was proposed as an addition to
+the World Wide Web Consortium's Wireless Application Protocol family of standards. </p> </section>
+<section><title>Architecture</title> <p>The following diagram illustrates
+the XML framework, consisting of client and a parser: </p> <fig id="GUID-9EE24AE6-17F1-59A2-9AF8-9A1068393053">
+<title>              Block diagram of XML framework            </title>
+<image href="GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e405579_href.png" placement="inline"/>
+</fig> <p>The XML framework consists of classes which model the main constituents
+of the architecture - the framework as a whole, the parser plug-ins and extensions
+to XML, the content processor chain and the content handler mechanism. </p> <p>The
+XML and WBXML parsers convert the contents of a document to UTF-8 format.
+This is to ensure that extended characters are not lost from the document
+by the String Pool. Expat is the engine behind the XML parser plug-in. </p> <p>The
+XML Framework allows strings to be stored for a particular DTD, XML namespace
+or WBXML codepage in an ECOM plug-in that can be accessed when requireded
+by the Parser and the Client. These plug-ins are referred as String Dictionary
+Plug-ins and they are managed through a string dictionary collection object.
+See <xref href="GUID-0D16866C-F46B-5A2B-B974-324278588A1B.dita">String Dictionary</xref>  </p> <p>Libxml2
+provides XML processing, parsing and validation APIs. See <xref href="GUID-0129AE17-B171-5CD5-8542-1DB738CBAB8B.dita">libxml2</xref>. </p> <p>Plug-in
+1 and Plug-in 2 are examples of optional processors, which may be chained
+together with the parser output to allow further processing of the data, before
+the client receives it. Such plug-ins can be a DTD validator or a document
+auto-corrector. The chain is not limited to just two plug-ins. </p> <p><b>Parser
+framework</b> </p> <p>The XML framework contains Parser framework which is
+represented by the <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> class. A client with an XML
+document to be parsed creates a <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> object and calls
+its parse functions. <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> obtains the data about plug-ins
+and the document to be parsed from<xref href="GUID-A6CF939C-110C-3FA4-8C2E-0B48C04D9CFB.dita"><apiname>CMatchData</apiname></xref> and <xref href="GUID-D79A2F59-8DC1-3493-92F6-2E1337CD9405.dita"><apiname>RDocumentParameters</apiname></xref> classes
+respectively. </p> <p>The parser framework conforms to the event-based SAX
+specification. It outputs an event when it starts or finishes reading one
+of the following: </p> <ul>
+<li id="GUID-A229D260-A15A-5EC6-8808-60577D988073"><p>a document </p> </li>
+<li id="GUID-4ED3BF2E-0CB8-54E3-B332-C60A032FD8F5"><p>a start tag </p> </li>
+<li id="GUID-57CB6A28-6F7B-5D75-AB59-BA4429374D23"><p>an end tag </p> </li>
+<li id="GUID-2CB3BFDA-425D-5936-B2D0-1A5459D56813"><p>a prefix mapping </p> </li>
+<li id="GUID-181F5F9F-D9D2-5E42-96F4-BACD64B2ABBF"><p>a processing instruction </p> </li>
+<li id="GUID-FB122F10-A946-5661-8A9B-A42877FB0DAC"><p>character data </p> </li>
+<li id="GUID-C0C9C2C4-862B-55CF-904F-E761518275DB"><p>ignorable white space </p> </li>
+</ul> <p>For more information on XML-related concepts, refer to W3C or similar
+sources. </p> <p><b>Parser plug-ins</b> </p> <p>The <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref> is
+the interface to the XML framework allowing the client to access the parser
+plug-ins, each one of which is specific to a mark-up language (e.g. XML, WBXML).
+Individual parser plug-in implements the <xref href="GUID-6F334B00-8026-3FA3-AE96-B0A511030B7B.dita"><apiname>MParser</apiname></xref> interface.
+It is associated through the <xref href="GUID-5F929E9F-E895-3DA6-8072-28C4B8B1CF81.dita"><apiname>TParserInitParams</apiname></xref> class, with
+a character set converter (to convert other formats to Unicode), a string
+dictionary and an element stack. </p> <p>The Symbian platform framework is
+delivered with three parser plug-ins, two for XML and one for WBXML. </p> <ul>
+<li id="GUID-CAAD5966-F37D-5A9C-A240-911B6683B315"><p>The first XML parser
+consists of <xref href="GUID-278C5360-5023-3406-98B1-BEB7AD2A4A9D.dita"><apiname>CXmlParser</apiname></xref> class, which is wrapped around the <xref href="GUID-D7864E56-D87D-3EC0-BA5F-804BE8F532FF.dita"><apiname>CExpat</apiname></xref> class,
+an implementation of the stream-based Expat parser. </p> </li>
+<li id="GUID-4A7DAA35-DD92-547F-BF81-232521F21A79"><p>The second XML parser
+consists of <xref href="GUID-F6E8B374-12D7-34FE-A1AA-F8B2BCA45B0A.dita"><apiname>CXMLEngineSAXPlugin</apiname></xref> class, which encapsulates
+the SAX parser of the <codeph>libxml2</codeph> component. It is not available
+if the Symbian platform build excludes this component. </p> </li>
+<li id="GUID-A5342749-34E7-5AD4-A5E4-FD46703F4AC7"><p>The WBXML parser is
+implemented as the <xref href="GUID-98F7BF57-BDC8-3BA4-9141-7DEDFFF64DB0.dita"><apiname>CWmxmlParser</apiname></xref> class. </p> </li>
+</ul> <p><b>Extensions to XML</b> </p> <p>The XML framework provides extensions
+to XML. At present WBXML is implemented. WBXML requires use of string dictionaries
+and extension tokens to store the element strings specific to the WBXML, which
+are represented by the <xref href="GUID-094A4884-182E-3A10-80F5-85A925020BC1.dita"><apiname>RStringDictionaryCollection</apiname></xref>, <xref href="GUID-FF04F0FE-771D-3197-BA3F-BB34C78E2F65.dita"><apiname>MWbxmlExtensionHandler</apiname></xref> and <xref href="GUID-1D0F59D7-574C-3485-9AB7-499712E5F20B.dita"><apiname>TExtensionTokens</apiname></xref> classes. </p> <p><b>Content processors</b> </p> <p>Content processors are
+plug-ins which perform further operations on the output of a parser plug-in.
+They implement the <xref href="GUID-7942EDC6-6571-3423-8ECA-D3DB68A78CB6.dita"><apiname>MContentProcessor</apiname></xref> interface and are
+associated through the <xref href="GUID-892978EC-1BE4-3356-ADB1-1E7EAB83C686.dita"><apiname>TContentProcessorInitParams</apiname></xref> class,
+with a string dictionary and element stack. They are organised into chains
+by the <xref href="GUID-0DFBB9EA-5A0E-3B4F-AD60-3CCD35090B40.dita"><apiname>MContentSource</apiname></xref> class which directs the output of
+each plug-in to the next plug-in in the chain. </p> <p><b>Content handlers</b> </p> <p>A
+client application which is designed to react to the output of the XML framework
+event must implement the <xref href="GUID-A6B8386B-29F6-3BEC-9D77-D8E0900DEAC2.dita"><apiname>MContentHandler</apiname></xref> interface. The
+functions to be implemented correspond to the SAX specification discussed
+in the Parser Framework section. </p> </section>
+<section><title>APIs</title> <p>The XML Framework exports the following APIs: </p> <table id="GUID-7EBF7AA5-B11F-5C40-93A7-685E8714DE92">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>API</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <xref href="GUID-D7864E56-D87D-3EC0-BA5F-804BE8F532FF.dita"><apiname>CExpat</apiname></xref>  </p> </entry>
+<entry><p>Encapsulates the Expat XML parser. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-278C5360-5023-3406-98B1-BEB7AD2A4A9D.dita"><apiname>CXmlParser</apiname></xref>  </p> </entry>
+<entry><p>Implementation of the stream-based Expat parser. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-F6E8B374-12D7-34FE-A1AA-F8B2BCA45B0A.dita"><apiname>CXMLEngineSAXPlugin</apiname></xref>  </p> </entry>
+<entry><p>Encapsulates the SAX parser of the <codeph>libxml2</codeph> component. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-3C824E3B-68AB-31C5-A3D7-26A73B53D076.dita"><apiname>CParser</apiname></xref>  </p> </entry>
+<entry><p>Represents the entire parser framework. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-A6CF939C-110C-3FA4-8C2E-0B48C04D9CFB.dita"><apiname>CMatchData</apiname></xref>  </p> </entry>
+<entry><p>Consists of the data of the plug-ins. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-98F7BF57-BDC8-3BA4-9141-7DEDFFF64DB0.dita"><apiname>CWmxmlParser</apiname></xref>  </p> </entry>
+<entry><p>WBXML parser implementation. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-D79A2F59-8DC1-3493-92F6-2E1337CD9405.dita"><apiname>RDocumentParameters</apiname></xref>  </p> </entry>
+<entry><p>Consists of the data about the document to be parsed. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-AE53784D-B405-34D8-9A93-ACDE6F8ECA44.dita"><apiname>RElementStack</apiname></xref>  </p> </entry>
+<entry><p>Data structure used to store XML elements and check the tag ordering. </p> </entry>
+</row>
+<row>
+<entry><p> <xref href="GUID-094A4884-182E-3A10-80F5-85A925020BC1.dita"><apiname>RStringDictionaryCollection</apiname></xref>  </p> </entry>
+<entry><p>Holds a collection of dictionaries requested by the user. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section><title>Typical uses</title> <p>The following tasks can be performed
+using XML Framework: </p> <ul>
+<li id="GUID-0FD3D44F-83D3-57C4-9C3E-063450A8078E"><p>Parsing an XML document. </p> </li>
+<li id="GUID-9C4511A4-49FE-53FA-83A4-9B55D58B0905"><p>Choosing a parser plug-in. </p> </li>
+<li id="GUID-6B09BFFF-8BBC-5FDC-B1CE-339C893C5164"><p>Using content processor. </p> </li>
+<li id="GUID-EC907C49-599B-5C60-B212-74AB22DEA759"><p>Writing a parser plug-in. </p> </li>
+<li id="GUID-A86A66BB-0C80-5760-B7C3-7C4E276C5EFF"><p>Customising a parser
+plug-in. </p> </li>
+<li id="GUID-3F689A67-D8DC-50EF-9D49-476417E503B6"><p>Creating a resource
+file for a parser plug-in. </p> </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-4A9255D1-42A4-57FA-A4B4-42C552964047.dita"><linktext>XML Framework
+Tutorials</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F79EE68F-FFC3-541E-AE3A-D7203034DA43.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F79EE68F-FFC3-541E-AE3A-D7203034DA43" xml:lang="en"><title>mmp
+project specification</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This page describes the MMP for a typical GUI application.</p>
+<p><b>TARGETTYPE</b> </p>
+<p>From v9.0, a GUI application is an exe. This is specified with the <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref> statement:</p>
+<codeblock id="GUID-CC425464-79E3-5388-B133-F031FD283943" xml:space="preserve">TARGETTYPE exe</codeblock>
+<p>The target filename's extension can be either .app or .exe. This is specified
+using a <xref href="GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita">target</xref> statement:</p>
+<codeblock id="GUID-B8AD94B2-1E08-5E6F-A6B3-0665A5285DF3" xml:space="preserve">TARGET &lt;appname&gt;.exe</codeblock>
+<p><b>UID</b> </p>
+<p>Specify the UID for the application in a <xref href="GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita">uid</xref> statement:</p>
+<codeblock id="GUID-F6B71A27-0986-5E95-8125-39A7175F0D6C" xml:space="preserve">UID 0x100039CE &lt;UID3&gt;</codeblock>
+<p>The UID2 value <codeph>0x100039CE</codeph> should be used for all applications.
+The UID3 value is the unique identifier for the particular application.</p>
+<p><b>Stack size</b> </p>
+<p>By default, processes have a stack size of 8K. This can be insufficient
+for some applications. To increase the size, use an <xref href="GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita">epocstacksize</xref> statement:</p>
+<codeblock id="GUID-FCE56679-AB1D-5545-9ECF-7B4DD4637A8A" xml:space="preserve">// set stack to 20K
+epocstacksize 0x5000</codeblock>
+<p><b>UI resource</b> </p>
+<p>Specify the application's UI resource file using a <xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start
+resource</xref> statement:</p>
+<codeblock id="GUID-5BC525DC-AF07-59C4-A59A-2ACF6CB82441" xml:space="preserve">START RESOURCE    &lt;appname&gt;.RSS
+HEADER
+TARGETPATH        \Resource\Apps
+END</codeblock>
+<p>The resource should be built into the <filepath>\Resource\Apps</filepath> directory.
+This is specified using the <codeph>TARGETPATH</codeph> part of the statement. </p>
+<p>The <codeph>header</codeph> line tells the resource compiler to produce
+a file <filepath>\epoc32\include\&lt;appname&gt;.rsg</filepath>, which defines
+macro constants through which C++ programs can refer to resource structures.</p>
+<p><b>Caption/icon resource</b> </p>
+<p>An application can specify localisable captions and icons to display on
+the shell using a <xref href="GUID-2431355F-E4D8-3226-9E9D-BAD6F23C418E.dita"><apiname>LOCALISABLE_APP_INFO</apiname></xref> resource, either
+in the UI resource file or in a separate resource file.</p>
+<p><b>Registration file</b> </p>
+<p>Specify the application's registration file using another <xref href="GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita">start
+resource</xref> statement:</p>
+<codeblock id="GUID-BADCE07B-0FD7-5B08-8A12-F88A7F681BEF" xml:space="preserve">START RESOURCE    &lt;appname&gt;_reg.rss
+TARGETPATH        \private\10003a3f\apps
+END</codeblock>
+<p>The registration file must be built to the private system directory <filepath>\private\10003a3f\apps</filepath> directory.</p>
+<p>Note that for security reasons a registration file cannot be installed
+directly to this location on a target device. When creating a PKG file (software
+install package file) for an application, the registration file must be installed
+to the <filepath>\private\10003a3f\import\apps\</filepath> directory.</p>
+<p>For more information, see <xref href="GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita">Application
+registration information</xref>.</p>
+<p><b>Icons</b> </p>
+<p>A bitmap file containing icons for an application can be specified using
+a <xref href="GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita">start bitmap</xref> statement:</p>
+<codeblock id="GUID-0B636524-66F0-5B00-A922-6FABFF5DD2C8" xml:space="preserve">START BITMAP    &lt;appname&gt;.mbm
+TARGETPATH        \Resource\Apps
+SOURCE            &lt;color-depth&gt; &lt;source-bitmap-list&gt;
+END</codeblock>
+<p>Icon files, like the UI resource file, should be built into the <filepath>\Resource\Apps</filepath> directory.</p>
+<example><p>An example of a real GUI application project file
+is given below:</p><codeblock id="GUID-CB2FA2A3-E8B1-5334-9DEA-B5811B2C1A2E" xml:space="preserve">TARGET        HelloWorld.exe
+TARGETTYPE    exe
+UID           0x100039CE 0x10004299
+VENDORID 0x70000001
+epocstacksize 0x5000
+
+SOURCEPATH    .
+SOURCE        HelloWorld_Main.cpp
+SOURCE        HelloWorld_Application.cpp
+SOURCE        HelloWorld_Document.cpp
+SOURCE        HelloWorld_AppUi.cpp
+SOURCE        HelloWorld_AppView.cpp
+USERINCLUDE   .
+SYSTEMINCLUDE \epoc32\include
+
+START RESOURCE    HelloWorld.RSS
+HEADER
+TARGETPATH        \Resource\Apps
+end
+
+START RESOURCE    HelloWorld_reg.rss
+TARGETPATH        \private\10003a3f\apps
+END
+
+START BITMAP    HelloWorld.mbm
+TARGETPATH        \Resource\Apps
+SOURCE            c8,1 icon24.bmp icon2m.bmp icon32.bmp icon3m.bmp icon48.bmp icon4m.bmp
+END
+
+LIBRARY       euser.lib apparc.lib cone.lib eikcore.lib</codeblock></example>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e65781_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F7C9824F-0598-56A1-AC2B-24904E997588.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F7C9824F-0598-56A1-AC2B-24904E997588" xml:lang="en"><title>C Standard
+Library Tutorials</title><shortdesc>This section lists the tasks that can be performed using C Standard
+Library.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16"><title>Standard C++ Library Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Purpose</title> <p>Standard C++ support on Symbian platform helps to port existing Standard C++ applications to Symbian platform quickly and easily. Also, if you have a good understanding of Standard C++ and STL, you can easily develop a Standard C++ application or library using the Standard C++ environment supported on Symbian platform. </p> </section> <section><title>Required background</title> <p>To use the Standard C++ environment supported on Symbian platform you need a good understanding of C++ and STL. For complete information about STL, see <xref scope="external" href="http://en.wikipedia.org/wiki/Standard_Template_Library">Wikipedia</xref>. </p> <p> <b>Important:</b> Symbian is not responsible for the information available on external websites. </p> </section> <section><title>Architectural relationships</title> <p>The following image illustrates how Standard C++ interacts with Symbian platform and P.I.P.S. libraries: </p> <fig id="GUID-52C870F7-6368-588D-BE3B-51F35D9DF6AF"><title>
+             Standard C++ on Symbian platform 
+          </title> <image href="GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e141139_href.jpg" placement="inline"/></fig> </section> </conbody><related-links><link href="GUID-D6BEAF0D-844D-51F4-8DB7-FB1D60E17FE3.dita"><linktext>Copyright Acknowledgments for Standard C++
+                (STLport)</linktext> </link> <link href="GUID-2CCD1748-9EDE-5383-9941-A3051E06F3E2.dita"><linktext>Standard C++ Support on Symbian Platform</linktext> </link> <link href="GUID-CDE8CD85-8467-5B36-A0AC-41D1D98151CA.dita"><linktext>Developing Applications or Libraries
+                Using Standard C++</linktext> </link> <link href="GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita"><linktext>Building a Standard C++ Application or
+                Library</linktext> </link> <link href="GUID-D32E52C9-F05C-5F1E-8B49-243D555C353C.dita"><linktext>Known Issues</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F8069628-BD32-535C-963A-A1CF8172E275"><title>What are CF Protocols, Binders, and Flows</title><shortdesc>This topic describes the concepts of <i>Communications Framework (CF) Protocols</i>,<i>Binders</i> and <i>Flows</i> in the Communications Framework. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>In the Communications Architecture each Layer requires the participation of several communications components; namely the Tier Manager, MCPR, CPR, SCPR and the components. The name given to the Data Flow components is a <b>Communications Framework Protocol</b> (CF Protocol). </p> <fig id="GUID-293BE7D5-9C9D-5A17-9C61-5FA19B06490C"><title>
+          Figure 1 - A CF Protocol in the Layered Comms Stack 
+        </title> <image href="GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e64017_href.png" placement="inline"/></fig> <p>A CF Protocol is a collection of components on the Data Plane, most importantly the Flow and the Binder(s). The Flow is a Node and communicates with the SCPR that caused it to be started, using the asynchronous Message Transport mechanism. Each Flow has one or more Binders which connect the Flow to the layer above. </p> <section><title>CF Protocol components</title> <fig id="GUID-171654F9-312C-547C-A886-E16A9DB21040"><title>
+             Components of a CF Protocol 
+          </title> <image href="GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e64030_href.png" placement="inline"/></fig> <p>A CF Protocol is constructed of two main components: </p> <ul><li id="GUID-B9E64AE4-CC30-5085-82D1-938C397A4FD3"><p> <b>Flow</b> - a single conversation with a remote peer. There can be multiple Flows in a CF Protocol to handle multiple concurrent conversations through the same instance of the CF Protocol. </p> </li> <li id="GUID-6A394EF2-EFD4-5885-BE40-A62784A85E2B"><p> <b>Binder</b> - A Binder handles the interface between the current Flow and the Layer above. A Binder connects two CF Protocols together so that they can communicate data and sometimes commands. A Flow can have more than one Binder if it needs to connect to more than one Flow in the Layer above. </p> <p>A <b>Protocol Binder</b> is the binding point for de-multiplexed incoming data but provides no flow control, data will be lost if the layer above is not ready to process it. </p> <p>A <b>Session Binder</b> handles flow control by contacting the Layer above to say data is available, and waits for the CF Protocol of the Layer above to request the data. </p> </li> </ul> </section> <section id="GUID-832AD765-692C-56BE-92AC-AF8AEFB69413"><title>Flow</title> <p>A Flow is an instance of a class which represents a single conversation with a remote peer. </p> <p>There may be many active Flows in a CF Protocol to represent many concurrent conversations through the same instance of the CF Protocol. </p> <p>A Flow is a Stack Node created and controlled by one SCPR. </p> <p>Configuration data for the Flow is provisioned directly by the SCPR and usually originates from the MCPR. </p> <p>Since a Flow handles message exchange with the corresponding SCPR asynchronously, a Flow is always a state machine. State transitions are mostly triggered by exchange of different message types with the remote peer. State transitions may also be triggered by other mechanisms, such as timeouts, that require active objects within the Flow. A Flow is created by a Factory. </p> <p>The Flow can de-multiplex the inbound, though it is up to the specific Flow to have appropriate code to do the de-multiplexing. De-multiplexing could be performed based on address information, port information, protocol specific session, source identifier or other data. De-multiplexing passes data to specific Flows, via individual Protocol Binders, to higher level CF Protocols which can also de-multiplex the data further. If there is no de-multiplexing then the layer above does not have to bind a protocol interface as a data receiver. An example would be an IP Flow, which may contain IPv4 and IPv6 packets and would have separate Protocl Binders for each version. </p> <p>Each Flow must serve the following messages: </p> <ul><li id="GUID-CF546C5F-B597-528B-8A7D-3D9AB804291F"><p> <xref href="GUID-413B79AB-EFA4-3C29-842B-F4DFE2C5A87D.dita"><apiname>TBindTo</apiname></xref> - tells the Flow which lower Flow to bind to </p> </li> <li id="GUID-31FDA6FA-251D-5E98-A194-E134EF953311"><p> <xref href="GUID-F2EEF015-3165-32D6-B98C-E77B2BDFDCDF.dita"><apiname>TProvisionConfig</apiname></xref> - carries a configuration object </p> </li> <li id="GUID-B4D38D5B-5537-5882-A7D0-F5A1AEC9E34C"><p> <xref href="GUID-2257D314-72A9-3A2A-9E79-4BCED7AC1045.dita"><apiname>TStartFlow</apiname></xref> - starts the Flow </p> </li> <li id="GUID-3DB58B6B-32E0-5B0A-B8D1-3D6B6CDF41A0"><p> <xref href="GUID-74EDDB44-5E1B-34CF-9678-C7C8811C7D58.dita"><apiname>TStopFlow</apiname></xref> - stops the Flow </p> </li> <li id="GUID-1BAC8A9D-94D6-5E96-BEAE-0EC97537EA16"><p> <xref href="GUID-9E005556-76E5-306B-982C-B2C2BC268EB8.dita"><apiname>TDestroy</apiname></xref> - instructs the Flow to delete itself </p> </li> <li id="GUID-DF01A012-4D45-5670-A62A-91ADA3303A10"><p> <xref href="GUID-B61247EA-48AE-301B-8089-0B5E67B5E04C.dita"><apiname>TStateChange</apiname></xref> - the Flow should send this whenever it wants to inform the control side of its state change </p> </li> </ul> </section> <section id="GUID-B09A95DB-93A8-5D36-BB95-40DA8766E3A0"><title>Binder</title> <p>The Binder is split into two parts: </p> <ul><li id="GUID-261D54B9-E404-5282-A322-A98EC5693DCF"><p> <i>Binder Control</i> - used by the upper layer to set up the binding with the lower layer. </p> </li> <li id="GUID-5D596068-F8A6-564C-A084-82FAB47B2035"><p> <i>Binder</i> - the actual binding between two Layers so that data can be sent and received. Again there are two types of Binder, Protocol Binder and Session Binder. It is common for a particular CF Protocol to only support one kind of Binder, Session or Protocol. </p> </li> </ul> <p>There will be CF Protocols where it will be a good design to have a Protocol Binder for data, and to use a Session Binder for control messages. These will usually be separate Flows. </p> <p id="GUID-C16F3524-AFFE-5E0B-82A7-8EC9B12BA660"><b>Protocol Binder</b> </p> <p>A Protocol Binder is used by the Flow as the link to the next higher CF Protocol for inbound data. </p> <p>A Protocol Binder only communicates with the Flow and should never communicate with an SCPR. Any design that would require the Protocol Binder to communicate with the SCPR should be redesigned. </p> <p>Protocol Binders are most commonly used for lower-level protocols (nearer the hardware) rather than the higher-level Link layer protocols. </p> <p id="GUID-E6B2C4D3-BE14-53DC-8616-5D3BC2B14686"><b>Session Binder</b> </p> <p> A Session Binder offers much richer functionality than a Protocol Binder as it is mostly used by higher level protocols (closer to application space) that are more complex than the lower level ones (closer to hardware). A Session Binder operates independently of the protocol of the next Layer above with which it connects, as opposed to the Protocol Binder which is specific for a particular protocol in the Layer above. A Session Binder may offer functionality that is supported by only some of the protocols using that binder. For example a Session Binder may provide flow control on the data, while a Protocol Binder will pass the data upwards immediately and if the Layer above is not able to accept the data it will be discarded. </p> </section> </conbody><related-links><link href="GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita"><linktext>Layers</linktext> </link> <link href="GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita"><linktext>Planes</linktext> </link> <link href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita"><linktext>Nodes</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F8159093-6349-516B-8301-C50BD2AC9F2C" xml:lang="en"><title>Using
+URIs from the URI List</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The URI List framework provides two classes for URI list operation: <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita"><apiname>RInetUri</apiname></xref> and <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita"><apiname>RInetUriList</apiname></xref>. <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita"><apiname>RInetUri</apiname></xref> represents a handle to the URI and its associated properties (like <i>service
+type</i>, <i>list type</i>, <i>permission</i> and <i>favourite name</i>). <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita"><apiname>RInetUriList</apiname></xref> represents
+a handle to the entire list and provides APIs for adding URIs to the list,
+removing URIs from the list, and updating URIs in the list. Before performing
+any operation, a session with URI List Server should be created by calling <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita#GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2/GUID-216A97DE-FB70-3465-8989-75914D4698C2"><apiname>RInetUriList::OpenL()</apiname></xref>. </p>
+<p>This section contains the following subsections: </p>
+<ul>
+<li id="GUID-2D38354A-5FD7-5D72-B9D2-E02D9345E60A"><p> <xref href="GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita#GUID-F8159093-6349-516B-8301-C50BD2AC9F2C/GUID-D466B837-760E-5FD9-84C0-D80DDB205C97">Adding a URI to the list</xref>  </p> </li>
+<li id="GUID-7E954F3C-81F6-5EAB-975F-3E6619EFB312"><p> <xref href="GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita#GUID-F8159093-6349-516B-8301-C50BD2AC9F2C/GUID-7FA78C8E-74A5-5FF8-99DF-11A6D9A04F83">Removing a URI from the list</xref>  </p> </li>
+<li id="GUID-12EC94EA-75C5-52D7-8415-7E888144F491"><p> <xref href="GUID-F8159093-6349-516B-8301-C50BD2AC9F2C.dita#GUID-F8159093-6349-516B-8301-C50BD2AC9F2C/GUID-202A44E4-3E28-5B84-8C8C-E1B1D094B9D5">Updating a URI in the list </xref>  </p> </li>
+</ul>
+<section id="GUID-D466B837-760E-5FD9-84C0-D80DDB205C97"><title>Adding a URI
+to the list</title> <p>A URI can be added to the list using the following
+API: </p> <p> <codeph>void AddL(const RInetUri&amp;           aInetUri)</codeph> </p> <p>Where
+the <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita"><apiname>RInetUri</apiname></xref> parameter is the <codeph>Uri</codeph> property
+object that contains all properties of a URI. Sample code to add URIs to the
+list is shown here. </p> <codeblock id="GUID-9F38C56A-C5D1-5DE9-A7B1-5FC9C456B184" xml:space="preserve">//Create the URI
+_LIT8(KUri, “http://www.symbian.org”);
+
+//Create a RInetUri object
+RInetUri uriObject;
+
+//Now initialise the object with Uri properties. 
+    uriObject.CreateL ( KUri, EWapPush, EBlackList);
+    CleanupClosePushL(uriObject);
+
+//Now create the RInetUriList object
+    RInetUriList uriListObj;
+
+//Create a server session
+    uriListObj.OpenL();
+    CleanupClosePushL(uriListObj);
+
+//Now add the Uri to list. 
+    uriListObj.AddL(uriObject);
+
+//Pop and close the server session.
+CleanupStack::PopAndDestroy ( &amp;uriListObj);
+
+//Pop and free up memory of uri property object.
+CleanupStack::PopAndDestroy ( &amp;uriObject);
+</codeblock> <p>The <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita#GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4/GUID-693DB5EF-B91F-3AD1-BD59-66F7D6987C76"><apiname>RInetUri::CreateL</apiname></xref> function accepts
+a reference to an 8-bit descriptor only. By default, the permission attribute
+of <codeph>Uri</codeph> is set to <codeph>EReadWrite</codeph>. <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita#GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4/GUID-089BEF50-85CB-36E8-BD4E-FB836A687307"><apiname>RInetUri::Close</apiname></xref> should
+be called to free up the memory. </p> </section>
+<section id="GUID-7FA78C8E-74A5-5FF8-99DF-11A6D9A04F83"><title>Removing a
+URI from the list</title> <p>The <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita"><apiname>RInetUriList</apiname></xref> class provides
+the following API for removing a URI from the list: </p> <p> <codeph>void
+RemoveL(const RInetUri&amp;           aInetUri)</codeph> </p> <p>Where the <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita"><apiname>RInetUri</apiname></xref> parameter
+is the <codeph>Uri</codeph> property object. This object handle can be obtained
+by calling <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita#GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2/GUID-0F1C347F-1F7F-343D-B36A-B3924C7FA795"><apiname>RInetUriList::OpenInetUriL()</apiname></xref>, and passing URI
+and service type. Sample code to remove URIs from the list is shown here: </p> <codeblock id="GUID-DC259A5E-3B9D-5946-93DE-D30510C69A90" xml:space="preserve">_LIT8(KUri “http://www.symbian.org”);
+    RInetUri uriObject;
+    RInetUriList uriListObj;
+    uriListObj.OpenL();
+    CleanupClosePushL(uriListObj);
+
+    uriObject = uriListObj. OpenInetUriL(KUri, EBrowser);
+    CleanupClosePushL(uriObject);
+    uriListObj.RemoveL(uriObject);
+
+//Pop and close the server session.
+CleanupStack::PopAndDestroy ( &amp;uriListObj);
+
+//Pop and free up memory of uri property object.
+CleanupStack::PopAndDestroy ( &amp;uriObject);
+</codeblock> </section>
+<section id="GUID-202A44E4-3E28-5B84-8C8C-E1B1D094B9D5"><title>Updating a
+URI in the list</title> <p>The <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita"><apiname>RInetUriList</apiname></xref> class provides
+the following API for updating properties of a URI in the list: </p> <p> <codeph>void
+UpdateL(const RInetUri&amp;           aInetUri)</codeph> </p> <p>Where the <xref href="GUID-75AC6BC8-1D10-33FC-8BB2-98EEDF16BCB4.dita"><apiname>RInetUri</apiname></xref> parameter
+is the <codeph>Uri</codeph> property object. This object handle can be obtained
+by calling <xref href="GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2.dita#GUID-6F5E2A42-5047-3AB2-9929-D893B88F2BD2/GUID-0F1C347F-1F7F-343D-B36A-B3924C7FA795"><apiname>RInetUriList::OpenInetUriL()</apiname></xref>, and passing URI
+and service type. Only <i>favourite name</i> and <i>list type</i> of a URI
+can be updated. Sample code to update a URI in the list is shown here. </p> <codeblock id="GUID-777AEE6D-FE05-57FF-9F3D-A80A93A1F965" xml:space="preserve">_LIT8(KUri “http://www.symbian.org”);
+    _LIT8(KUriFavoritename “Home Page of Symbian”);
+    RInetUri uriObject;
+    RInetUriList uriListObj;
+    uriListObj.OpenL();
+    CleanupClosePushL(uriListObj);
+
+    uriObject = uriListObj. OpenInetUriL(KUri, EBrowser);
+    CleanupClosePushL(uriObject);
+    uriObject.SetListType(EBlackList);
+    uriObject.SetFavoriteNameL(KUriFavoritename);
+    uriListObj.UpdateL(uriObject);
+
+//Pop and close the server session.
+CleanupStack::PopAndDestroy ( &amp;uriListObj);
+
+//Pop and free up memory of uri property object.
+CleanupStack::PopAndDestroy ( &amp;uriObject);
+</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e178556_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F8482AFB-BD49-5EF2-8092-EAA11862F9C4"><title>What is Network Interface Management (NifMan)?</title><shortdesc>This topic describes NifMan and how it works. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Introduction </title> <p>Network interfaces enable mobile devices to connect to a network. NifMan is a Symbian OS component that creates and manages network interfaces. Agent plug-ins set up the network interfaces. NIF plug-ins allow data to be transferred over the interface. </p> <p>NIF plug-ins allow the NIF to be configured over a network interface such as PPP (Point-to-Point Protocol) before a higher-level protocol such as TCP/IP is started. This functionality allows actions such as obtaining and setting of the IP address for the interface. Providing configuration functionality as a plug-in allows new configuration mechanisms to be added without rewriting the NIF. This allows a configuration plug-in to be used with different NIFs. </p> <p>In Symbian OS 9.5 the functionality of the NifMan component has been replaced by the architecture changes for the <xref href="GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita">Comms Architecture</xref>. The NIFs have been changed so that they are <xref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita#GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0/GUID-0B0B61DE-AABC-5F87-8205-30F818F79C0A">Stack Nodes</xref>. </p> <p>The Nifman component contains the following agent Stack Nodes: Subconnection Provider Agent node, Agent Connection Provider node, Tunnel Agent Connection Provider node. These nodes are used when building a Link layer. For example, the Ethernet protocol Flow node and Ethernet protocol MCPR node can be used with the Agent Subconnection Provider node and the Agent Connection Provider node. Nifman also contains an Agent Tier Manager node. </p> </section> </conbody><related-links><link href="GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita"><linktext>Architecture</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F854D45A-A8CD-5B9F-9A59-C30A87F0955A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F854D45A-A8CD-5B9F-9A59-C30A87F0955A" xml:lang="en"><title>Messaging Client Applications</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section provides information about types of client applications that Messaging Middleware module supports and how they can be programmed. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F86CFD79-88B1-55E0-AF81-4666D97B7AF5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F86CFD79-88B1-55E0-AF81-4666D97B7AF5"><title>Automatic file deletion on closure</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A temporary file can be destroyed automatically when the owning thread closes it or if the owning thread crashes. </p> <p>Set <codeph>EDeleteOnClose</codeph> when opening a temporary file to enable the automatic deletion on closure. <codeph>EDeleteOnClose</codeph> can be used with <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-87D0C77C-CC63-3D70-BACE-3C5EE702BD37"><apiname>RFile::Temp()</apiname></xref> and <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita#GUID-BE0804F6-4375-3C8A-8C83-968F510466E0/GUID-1EB4AA8F-9363-3EC5-8AE2-1F70F15FCF15"><apiname>RFile::Create()</apiname></xref>. For example: </p> <codeblock id="GUID-F74D3314-7C59-5350-913F-D38AED696799" xml:space="preserve">r = file.Create(TheFs, filename, EFileShareAny | EFileRead | EFileWrite | EDeleteOnClose);</codeblock> <p>The purpose of this flag is to prevent memory leaks when components that create temporary files crash. </p> <section><title>Notes</title> <ul><li id="GUID-BFA882BB-D312-5FBB-906F-5B27A6B4507D"><p>Existing files cannot be opened with <codeph>EDeleteOnClose</codeph> set. Any attempts to do this will return the error message <codeph>KErrArgument</codeph>. </p> </li> <li id="GUID-CA76B615-62CE-59E5-B1D8-B0628728D7C6"><p>Automatic file deletion is not default behaviour. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F87A1381-3E71-5723-B8B6-3F4E0FF368CE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-F87A1381-3E71-5723-B8B6-3F4E0FF368CE" xml:lang="en"><title>Logo</title><shortdesc>Specifies logos corresponding to each language supported by the
+Symbian device.</shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><title>Syntax</title> <codeblock id="GUID-D9E6AE81-E04F-5551-B3D5-2869CBB6E982" xml:space="preserve">="logo.jpg", "image/jpeg", "target.jpg"</codeblock> <p>The following table explains the arguments that are specified within
+the quotes. To display the file only at install time, specify the last argument
+with empty quotes. </p> <table id="GUID-4A4B3818-6347-5FD1-AE98-ED2CCC2331D1">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p> <b>Argument</b>  </p> </entry>
+<entry><p> <b>Description</b>  </p> </entry>
+</row>
+<row>
+<entry><p>First Argument </p> </entry>
+<entry><p>Specifies the name and path of the file containing the logo. </p> </entry>
+</row>
+<row>
+<entry><p>Second Argument </p> </entry>
+<entry><p>Declares its MIME-type. </p> </entry>
+</row>
+<row>
+<entry><p>Third Argument </p> </entry>
+<entry><p>Specifies the name and path where the file must be installed. This
+is an optional argument. </p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<example><title>PKG file example</title> <p>The following is an example package
+file showing a <codeph>logo</codeph> statement: </p> <codeblock id="GUID-556DCD9F-5DF3-52DB-972F-773D062926D0" xml:space="preserve">;Languages
+&amp;EN,FR
+
+;Header
+#{"App-EN", "App-FR"}, (0x10000003), 1, 2, 3, TYPE=SC
+
+%{"VendorEN", "VendorFR"}
+:"Vendor"
+
+//logo 
+
+="..\symbianfoundation.mbm", "image/x-mbm", "" 
+</codeblock> </example>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F8824165-4B33-50D1-9706-BD2438B5A2EE" xml:lang="en"><title>Persistent Storage</title><shortdesc>The persistent storage collection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-F3BD37EC-0CCB-5859-908F-215E22C9FC20.dita#GUID-F3BD37EC-0CCB-5859-908F-215E22C9FC20/GUID-143780ED-4A23-5E72-A923-F605172EC8B5"><linktext>File
+  Server</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F89F92BA-763D-5531-BF74-C6BF36A589CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F89F92BA-763D-5531-BF74-C6BF36A589CD"><title>Creating Snapshots</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to creating a snaphot. </p> <section><title>Purpose</title> <p>This document describes the various APIs used to create a snapshot. </p> <p><b>Introduction</b> </p> <p>Snapshot shows the captured images on the display almost instantaneously. Snapshots may be created for video as well and the client may further specify the video frames from which the snapshot can be generated. </p> <p>The client can specify the properties of the snapshot, such as size, background colour and position to be used if the snapshot has been scaled, etc. Snapshot can be taken using both direct viewfinder and client viewfinder. </p> <ul><li id="GUID-1B34E0C2-D3E2-563D-8230-CB9283CB96CF"><p>If client snapshot is required, use <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-7DB06650-199E-3B00-A19A-1B48D671E46E"><apiname>CCamera::CCameraSnapshot</apiname></xref>. Client needs to call <xref href="GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4.dita#GUID-4F2BB371-3FE1-3FC5-800B-67B6472FE0E4/GUID-259B5050-C042-39B2-986C-3D8142303CFC"><apiname>CCamera::CCameraImageCapture::GetSnapshotHandleL()</apiname></xref> or <xref href="GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460.dita#GUID-D74635DE-C5D8-3A9A-ABDD-8324D8EFF460/GUID-3A04E9A5-E00C-3CF6-881B-735104EAB659"><apiname>CCamera::CCameraVideoCaptureControl::GetSnapshotHandleL()</apiname></xref> depending on the requirement. </p> <p> <xref href="GUID-6595B3C1-344E-37D0-9DDF-3EB667D5F679.dita"><apiname>MImplemetationFactory</apiname></xref> provides handles to concrete implementation for <xref href="GUID-CBB8D575-A12F-32C4-BC19-55AEB51D2601.dita"><apiname>MCameraSnapshot</apiname></xref> or <xref href="GUID-A048086C-0481-3E68-9B96-70943917B3FB.dita"><apiname>MCameraSnapshot2</apiname></xref> derived class. Every CCameraSnapshot object gets tied to the specific client viewfinder handle through <xref href="GUID-A048086C-0481-3E68-9B96-70943917B3FB.dita#GUID-A048086C-0481-3E68-9B96-70943917B3FB/GUID-E9CAF87C-BD72-3242-94BE-1F5B8B116C10"><apiname>MCameraSnapshot2::SetClientViewFinderId()</apiname></xref>. </p> </li> <li id="GUID-6AE01790-A6C3-5A8D-A3B0-CA87C7521E43"><p>If direct snapshot is required, use <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE"><apiname>CCamera::CCameraDirectSnapshot</apiname></xref>. Client needs to call <xref href="GUID-A1E81FF5-3F58-3D41-8FE2-9D6D21004B08.dita#GUID-A1E81FF5-3F58-3D41-8FE2-9D6D21004B08/GUID-F1319DF8-B489-33CB-9D1A-FE182FF92F4B"><apiname>CCameraV2DirectViewFinder::GetDirectSnapshotHandleL()</apiname></xref>. Concrete implementation of <xref href="GUID-4C71BD28-FCB9-33CE-8FAA-A9525350E0E1.dita"><apiname>MCameraV2DirectViewFinder</apiname></xref> object provides the handle to the concrete implementation for the <xref href="GUID-E75CBA2D-933F-33CF-9F66-0868D6BC0649.dita"><apiname>MCameraDirectSnapshot</apiname></xref> object. Reference to the <xref href="GUID-A1E81FF5-3F58-3D41-8FE2-9D6D21004B08.dita"><apiname>CCameraV2DirectViewFinder</apiname></xref> object is passed to the concrete implementation for <xref href="GUID-E75CBA2D-933F-33CF-9F66-0868D6BC0649.dita"><apiname>MCameraDirectSnapshot</apiname></xref> derived object. </p> </li> </ul> <p><b>Setup and Configuration Requirements</b> </p> <p>To need to use Snapshot you need to use <xref href="GUID-BAFF01BC-405C-37B2-8AC3-F96CF756C300.dita"><apiname>McameraObserver2</apiname></xref> interface. </p> <ol id="GUID-8F888A99-B530-5472-95A5-867CDC19BAF6"><li id="GUID-FC000C0B-3EF3-5E5F-8FB2-7398BB25941F"><p>You need to create instance of this class from image capture or video capture control class object. This allows better handling of snapshot features by tying it closely to the given image or video capture object. </p> </li> <li id="GUID-146B0BF1-BD4C-5C8C-9815-B9C33E4BE27D"><p>You need to call this class when the camera is ready and the image is captured or the buffer of captured video data is ready. </p> </li> </ol> <p> <b>Note</b>: You should not create the instance of this class directly. </p> </section> <section id="GUID-CD46D92A-C488-56E9-80D8-D7832DC603DF"><title> Using Snapshot </title> <p>You can perform the following tasks using the <xref href="GUID-BBE1DA21-0A0F-37F2-BA43-DE259EB4577C.dita"><apiname>CcameraSnapshot</apiname></xref> interface. </p> <ul><li id="GUID-B9763C6C-A232-574D-AB96-71C945B5741E"><p>Getting Supported formats: Get the list of supported formats using <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-182AFDC3-E938-3F2D-8243-FADD8907B467"><apiname>CCamera::CCameraSnapshot::SupportedFormats()</apiname></xref>. </p> </li> <li id="GUID-9030BCFF-4EB9-5655-A565-7DC4F6A961D1"><p>Preparing Snapshot: Prepare snapshot data using <xref href="GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2.dita#GUID-9749B0DF-B887-3798-9185-481DF8E2F7C2/GUID-173798C2-DB67-3704-A2BF-4EFB3941FB64"><apiname>CCameraSnapshot::PrepareSnapshotL()</apiname></xref>. </p> </li> <li id="GUID-726EBC74-7ADC-5E3E-AF51-7F25AA8C6032"><p>Retrieving Snapshot status: Retrieve snapshot status using <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-B9F57324-48A3-3FC8-BBE5-ADA6B4EEEE4C"><apiname>CCamera::CCameraSnapshot::GetSnapshotStatusL()</apiname></xref>. </p> </li> <li id="GUID-5861B9A3-05B3-5B11-82B4-5D65F44E8252"><p>Enabling Snapshot: Enable snapshot using <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-5B921018-B528-38FC-AEB4-9D2CE82D458E"><apiname>CCamera::CCameraSnapshot::EnableSnapshotL()</apiname></xref>. </p> </li> <li id="GUID-613207D5-0E58-51CC-A588-62E1AB0801C4"><p>Disabling Snapshot: Disable snapshot using <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-5A72DB18-5597-39B2-BE83-FE64476038CC"><apiname>CCamera::CCameraSnapshot::DisableSnapshotL()</apiname></xref>  </p> </li> <li id="GUID-2D0C714B-67F9-560A-B48D-6835FE6FE700"><p>Getting Snapshot Data: Get the snapshot data using <xref href="GUID-7DB06650-199E-3B00-A19A-1B48D671E46E.dita#GUID-7DB06650-199E-3B00-A19A-1B48D671E46E/GUID-FD954C76-308F-3405-A553-6D47D9C67D4D"><apiname>CCamera::CCameraSnapshot::SnapshotDataL()</apiname></xref>. </p> </li> </ul> <p>You can also perform the above tasks using <xref href="GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4.dita#GUID-021C509B-C821-3401-B2F4-DE7F52BB16D4/GUID-880B1BDF-C42F-3190-81C2-B2DD555AC8FE"><apiname>CCamera::CCameraDirectSnapshot</apiname></xref> interface. Licensees can implement extra features on snapshot using <xref href="GUID-A048086C-0481-3E68-9B96-70943917B3FB.dita"><apiname>MCameraSnapshot2</apiname></xref> interface. </p> <p><b>Types of Snapshot</b> </p> <ul><li id="GUID-1B1BA782-ADDB-5BEA-85CD-CA0EE19C1744"><p>Client snapshot for videos </p> </li> <li id="GUID-811B1DBE-CB5B-5EC3-99C3-FE6403ABF9B6"><p>Client snapshot for still images </p> </li> <li id="GUID-D01EBBED-BB27-5559-8CB3-45CA9BAC0BD7"><p>Direct snapshot for still images </p> </li> </ul> </section> <section><title>See also</title> <p><xref href="GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita">Overview</xref> of Camera SnapShot </p> <p><xref href="GUID-1C0707F8-9E2A-58C6-997B-23B57C7EFA93.dita">Working with Snapshots</xref> </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8A26275-883A-5299-9C37-9DDCC2F62108.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F8A26275-883A-5299-9C37-9DDCC2F62108" xml:lang="en"><title>Eclipsing</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Eclipsing is a mechanism to upgrade files existing on the ROM drive, by
+installing a new version of the same on the RAM drive. The file name and path
+of the existing file and the new version must be the same. </p>
+<p>For example, the file, <filepath>a.exe</filepath> located on <filepath>z:\...\</filepath>,
+can be eclipsed by placing a latest version of <filepath>a.exe</filepath> on <filepath>C:\...\</filepath>. </p>
+<section id="GUID-DBF1C87D-7360-54B7-8658-B6659BF77F06-GENID-1-6-1-4-1-1-4-1-6-1-4-1-5-1-2-3"><title>Eclipsing rules</title> <p>The
+eclipsing of binary and data files in the ROM is strictly controlled. That
+is, device creators can eclipse only the files that are listed in the Stub
+SIS file. The eclipsing fails if there is no associated Stub SIS file present
+in ROM. </p> <p>The following are important considerations for eclipsing
+ROM files: </p> <ul>
+<li id="GUID-B854DA2E-A125-5E42-8B97-7DD9E5D30FFE"><p>In Symbian platform,
+drives are are scanned in the order <filepath>Y</filepath> to <filepath>A</filepath> and
+lastly the <filepath>Z</filepath> drive. Therefore a file in <filepath>Z</filepath> drive
+can be eclipsed by the newer version of the file placed on any drive between <filepath>Y</filepath> to <filepath>A</filepath>. </p> </li>
+<li id="GUID-4ECA6004-CE36-5EC7-A523-03EC3B9FC171"><p>The upgrading package
+must have the same package UID and non-localized vendor name as the package
+that installed the original file. </p> </li>
+<li id="GUID-60050205-50D1-5331-93ED-26E39D0D9678"><p>The file in ROM can
+be eclipsed only once. </p> </li>
+<li id="GUID-DA8251A1-D148-580A-A28F-B0A7388C4870"><p>The installation is
+blocked if a data file with the same name as the file to be eclipsed exists
+in the file system. The device creators can configure the installation policy
+to enable the Symbian device user to remove the obstructing files and continue
+with the installation. </p> </li>
+<li id="GUID-40325AC4-85B8-5EF3-9E70-21AF6DF35A52"><p>Eclipsing of <filepath>EXEs</filepath>, <filepath>DLLs</filepath> and
+data files either by installation or by inserting the media card into the
+Symbian device returns an error. This aborts the installation or renders the
+media card application unusable until the conflict is resolved. This restriction
+is not applicable if the file being eclipsed is an orphaned file.</p>  </li>
+</ul> </section>
+</conbody><related-links>
+<link href="GUID-9DCD2076-0F73-5BB7-85BF-580567E0AB53.dita"><linktext>Package Upgrades</linktext>
+</link>
+<link href="GUID-7FD72D9F-D65E-5248-A296-F2196F1DF5CF.dita"><linktext>Upgrade Types</linktext>
+</link>
+
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e46254_href.png has changed
Binary file Symbian3/SDK/Source/GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e52322_href.png has changed
Binary file Symbian3/SDK/Source/GUID-F8A7F4CB-011C-425D-83B4-13BD67AA21B7_d0e53932_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8C8CE42-E7C9-5AFC-86BC-B78F677F1B05.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F8C8CE42-E7C9-5AFC-86BC-B78F677F1B05" xml:lang="en"><title>Device Services
+Guide</title><abstract> <p>This guide provides
+detailed information on the Device Services subsystem. </p> </abstract><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F8D12BC4-82C6-59CD-93C9-506FF872C622.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F8D12BC4-82C6-59CD-93C9-506FF872C622" xml:lang="en"><title> Space reclamation and compaction</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9184A82-A467-5022-B02F-2FDF52258618.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F9184A82-A467-5022-B02F-2FDF52258618" xml:lang="en"><title>Session
+Properties</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Both <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita"><apiname>RHTTPSession</apiname></xref> and <xref href="GUID-2E673024-239B-3965-8880-C47B7CC24EF6.dita"><apiname>RHTTPTransaction</apiname></xref> can
+have a set of properties associated with them. Properties take the form of
+name-value pairs, where the name is an <xref href="GUID-B886F0AA-DB9C-356C-9B96-33252820F93E.dita"><apiname>RStringF</apiname></xref> and the
+value is a <xref href="GUID-DEE8279A-3BEC-316F-97B8-6C49FEDBD5B3.dita"><apiname>THTTPHdrVal</apiname></xref>, allowing integers, strings, URIs,
+and dates to be stored. </p>
+<p>Session properties are called Connection Information in the API, as they
+mainly relate to the type of connection that is made between a client and
+an HTTP server. They are accessed using the <xref href="GUID-651801A5-5473-3856-9647-46823598C5C1.dita#GUID-651801A5-5473-3856-9647-46823598C5C1/GUID-E2EAC2BF-8DB6-36C4-B922-C90235F3003C"><apiname>RHTTPSession::ConnectionInfo()</apiname></xref> method,
+which returns an <xref href="GUID-5A5D8F2E-1646-3AB6-9964-EB26B3E4855D.dita"><apiname>RHTTPConnectionInfo</apiname></xref> handle. </p>
+<p>Note that in general, session properties must be defined before the first
+transaction is created; filters do not check the connection information if
+the values have changed after this point. However, some exceptions are allowed
+with HTTP version and proxy configuration. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9455FE8-5247-58D5-ACEF-52753B88444F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F9455FE8-5247-58D5-ACEF-52753B88444F"><title>How to control binary compatibility</title><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Overview</title> <p>It is important for users that the software they buy and use should continue to run on new releases of Symbian platform, and that it should be transferable to new devices containing the latest releases of the operating system. </p> <p>Ensuring that a current software release does not break existing software is known as maintaining binary compatibility (BC). There is a related compatibility issue for data — ensuring that new software versions remain data compatible with previous versions. Data incompatibilities can be just as galling for software users, making existing documents obsolete, but don't intrinsically affect the software itself. </p> <p>BC is most obviously a concern for the systems developers responsible for the evolution of the operating system. However, it is relevant for any Symbian developer whose software provides services to client software. Symbian developers whose software uses such services should understand a problem that potentially they may encounter. </p> <p>A related concern is where a program is <i>first</i> developed using a version of some system component or a third part service. Symbian developers may need to know whether their programs will also work with <i>older</i> versions of that system component or third part service. This form of compatibility is an added bonus but, generally, backward compatibility is the overriding requirement. </p> </section> <section><title>The interface as contract</title> <p>When a software component is changed, the changes impact all dependent software components — including the ones which have not yet been written. This means that rather than relying on testing, the safety of changes must somehow be guaranteed. </p> <p>A component which defines an interface through which it may be used should be regarded as making a contract with the rest of the world. Its interface is its contact. Other components which build against its interface must be guaranteed that when they later run against its interface, nothing will have changed. The BC requirement is that guarantee. </p> <p>Although in principle there are many different mechanisms through which software can offer an interface to clients, in the Symbian software platform, BC is a DLL related problem. </p> </section> <section><title>Source compatibility, link compatibility, binary compatibility</title> <p>BC is stronger than both link and source compatibility. Maintaining BC also implies that both link and source compatibility are maintained. </p> <p>Source compatibility describes the situation where an interface we are using has changed between building against it and running against it, in such a way that we can only recover by rebuilding against the changed interface. Our source need not change, but we must rebuild. </p> <p>Because source level interfaces are defined in the published header <codeph>#include</codeph> files, it is easy to see whether changes are compatible — examine the changes to the header file. </p> <p>Link compatibility describes the situation where to recover from an interface change we must relink our component against a component we originally built against. Our source need not be rebuilt, but we must relink. </p> <p>Link level interfaces are defined by the published <keyword>import</keyword> library. Again it is not too hard to see whether a change is compatible — ensure that all <keyword>exported</keyword> functions are unchanged. </p> <p>Binary compatibility guarantees a constant interface between our building and running against another component. </p> <p>The BC level interface is not so easy to define and may include quite general behaviour of the changed component. Because it is hard to define it is hard to check for changes which potentially break it. Potential BC breaking changes include: </p> <ul><li id="GUID-308FA053-1D48-55BE-95D5-F80057F97B48"><p>Virtual member functions are for life — you can't add or remove virtual member functions </p> </li> <li id="GUID-545ECFCF-32C5-53C1-841B-A40623F2B5D3"><p>or change the virtuality of a function </p> </li> <li id="GUID-637E8C8E-48BA-5638-A9CB-D7A34121FAC7"><p>or change their declaration order </p> </li> <li id="GUID-51B5A996-F810-5192-B3E3-D808735283EA"><p>or override an existing function that was previously inherited </p> </li> <li id="GUID-517E1BC2-1152-556A-B129-42294683534E"><p>You cannot add a UID if was originally omitted from the DLL </p> </li> </ul> <p>Safe changes which preserve <i>backward</i> binary compatibility include: </p> <ul><li id="GUID-48431968-E4C6-55CA-A089-87EE30BB6660"><p>Any name can be changed <b>but</b> — this requires clear documentation because dependent components must change source code, and usually also requires editing the frozen <filepath>.def</filepath> files </p> </li> <li id="GUID-3DAF9CAD-AB42-5AFE-81B9-8C08F0893B07"><p>Adding services — classes, global functions, static and <i>non-virtual</i> member functions can all be added to a shared library </p> </li> <li id="GUID-E62F3737-D3B9-5E2E-ACF4-D930033B5683"><p>Changing access specification — any member can be made more widely accessible. The reverse is <b>not</b> allowed. Similarly, friendship can be bestowed but not withdrawn </p> </li> <li id="GUID-ECE8BEE0-E11A-54A1-A65B-30DC1DDA2C3C"><p>You can do what you like with private data and non-virtual function members <b>except</b> — when it would change the class size, or when effectively public data would move in the class </p> </li> <li id="GUID-97A41CBA-D5E6-5F06-B050-8085433A6586"><p>Parameters and return values — valid inputs must retain their interpretation and existing output values must retain their meaning </p> </li> <li id="GUID-C723CE0A-FD69-507D-BE85-9701B9C66608"><p>Inputs can be widened: e.g. less derived pointer, extended enum, adding a const qualifier or outputs can be narrowed: e.g. more derived pointer, fewer error code values, removing a const qualifier </p> </li> <li id="GUID-D61A91E3-66BA-5F79-BC53-5F06865C4554"><p>Pointer and reference types can be exchanged </p> </li> </ul> <p>To help maintain BC only release what you need to release — you don't have to support what you don't release </p> </section> <section><title>Controlling binary compatibility with build time tools</title> <p>Some potentially BC breaking changes are introduced not by Symbian developers but by the build system. Symbian platform provides tools which help to control BC by blocking accidental build-time changes. </p> <p>When a DLL is loaded it supplies a table of addresses, one for each exported symbol and one for the entry point of each exported function. This is the DLL's public interface. To preserve BC the index of each export must remain constant from one release to another. </p> <p>Symbian platform uses export definitions (<filepath>.def</filepath>) files to manage this requirement. Each exported symbol is listed in the exports section of the file with its ordinal, which is calculated as index + ordinal base. Symbian platform uses an ordinal base of 1. By the definition of source compatibility implied by BC, every export defined in an earlier release will be defined in the new release. Exports introduced in a new release must come after those defined in earlier releases. </p> <p>For DLL builds, the build tools automatically create the <filepath>.def</filepath> file within the build tree for the specified target. Once these have been generated for a build, they can be archived with the project source and used in future builds to <keyword>freeze</keyword> the exports against change. </p> <p>This is done by copying the <filepath>.def</filepath> files into a default location and including the directive </p> <p> <codeph>DEFFILE projectname.def</codeph>  </p> <p>in the project <filepath>.mmp</filepath> file. </p> <p>In any subsequent <b>command-line</b> build of the project the exports will be guaranteed compatible with the current version. If new exports are added, the new def files should once again be copied from the build directory and archived with the new release. Only command-line builds should be released. </p> <p>The creation and translation of <filepath>.def</filepath> files is managed by the Symbian platform build process, see <xref href="GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita">The Symbian build process</xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9471A5D-D239-5B24-A116-2B5B2C1F5C61.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F9471A5D-D239-5B24-A116-2B5B2C1F5C61"><title>Restoring Pictures Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Pictures can be restored in two different ways. One way is to restore the picture header and restore the data immediately afterwards. The other way is to restore the picture header and defer the loading of the picture data until a later time. </p> <p>This second way is commonly used when loading rich text documents that include pictures. Using a deferred loading scheme, pictures that occur towards the end of a document need not be loaded until they are needed to be displayed, thus economizing on memory use. </p> <section><title>Restoring the picture header</title> <p>This fragment assumes that the picture header is stored in the root stream of the store, making it easy to restore: </p> <codeblock id="GUID-44712CF8-FBB7-5898-B1F9-C43BB82C17EC" xml:space="preserve">// The file used in the example
+_LIT(KFileName,"C:\\grpict.dat");
+    
+// Open the direct file store
+CDirectFileStore* store = CDirectFileStore::OpenLC(fsSession,KFileName,EFileRead);
+    
+// Read the header stream
+RStoreReadStream stream;
+stream.OpenLC(*store,store-&gt;Root());
+TPictureHeader header;
+header.InternalizeL(stream);</codeblock> <codeblock id="GUID-8F9F9D3D-36E7-534A-BA05-5FF545487DDB" xml:space="preserve">// Close store
+CleanupStack::PopAndDestroy(2); // stream, store</codeblock> <ol id="GUID-A3461FFF-48C2-5447-AA8E-E23C3E9696B7"><li id="GUID-12F9B67D-4A85-5648-89BB-B3CA41DCFBC1"><p>Open the direct file store containing the picture. </p> </li> <li id="GUID-F43C5DEB-BFB9-5076-BCEC-61495B3F326A"><p>Open the root stream of the store, and InternalizeL the picture header. </p> </li> <li id="GUID-5E9FDE2A-4E64-5262-92E9-B15870C6D5AD"><p>Close the stream and store. </p> </li> </ol> </section> <section><title>Restoring the picture data: an example of a MPictureFactory-derived class</title> <p>To restore the picture data itself, it must have an associated entry in a picture factory. The picture factory ensures that the picture data in the store is restored to the correct picture type, which is specified by a UID in the picture header. A picture factory can allow a number of different types of picture to be restored, calling the correct constructor for the class indicated by the UID. In the following example code the picture factory allows only pictures of type <codeph>CSmileyPicture</codeph> to be restored, and panics if the picture data in the store is of another type. </p> <p><b>Restoring the picture </b> </p> <codeblock id="GUID-F05D870C-C1D6-5D04-81AE-703F50054191" xml:space="preserve">// The file used in the example
+_LIT(KFileName,"C:\\grpict.dat");
+    
+// Open the direct file store
+CDirectFileStore* store = CDirectFileStore::OpenLC(fsSession,KFileName,EFileRead);
+    
+// Read the picture
+TExamplePictureFactory factory;
+TPictureHeader header;
+factory.NewPictureL(header,*store);
+iPicture = (CSmileyPicture *) header.iPicture.AsPtr();
+    
+// Close store
+CleanupStack::PopAndDestroy();</codeblock> <p><b>Picture factory </b> </p> <codeblock id="GUID-578BC9C7-9D62-5ADF-A2B5-6601588FE384" xml:space="preserve">class TExamplePictureFactory: public MPictureFactory
+    {
+public:
+    void NewPictureL(TPictureHeader&amp; aHeader,
+            const CStreamStore&amp; aDeferredPictureStore) const;
+    };
+</codeblock> <codeblock id="GUID-C5CCB0B1-3D13-581E-8990-15084212BFB3" xml:space="preserve">void TExamplePictureFactory::NewPictureL(TPictureHeader&amp; aHeader,
+            const CStreamStore&amp; aDeferredPictureStore) const
+    {
+    if (aHeader.iPictureType == KUidExampleSmileyPicture)
+        {
+            // Restore new picture from store into 
+            // the TSwizzle, which changes from
+            // stream id to pointer.
+            // Construct CSmileyPicture object and 
+            // restore from stream.
+        if (aHeader.iPicture.IsId())
+            aHeader.iPicture = CSmileyPicture::NewL(aDeferredPictureStore,aHeader.iPicture.AsId());
+        }
+    else
+        {
+            // Leave
+        User::Leave(KErrNoMemory);
+        }
+    }</codeblock> </section> </conbody><related-links><link href="GUID-520AC2F0-009E-51F3-A661-3B6E949F1423.dita"><linktext>Picture Tutorials</linktext> </link> <link href="GUID-5CEE36FC-C5A9-5C4E-9DBC-9C7B5B44EA2F.dita"><linktext>Picture Concepts</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F94CEC6D-C602-550F-9B12-856493F3C509.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task xml:lang="en" id="GUID-F94CEC6D-C602-550F-9B12-856493F3C509"><title>Implementing an Interface </title><shortdesc>An interface implementation is a single unit of functionality that is instantiated through the interface definition. An implementation is created by deriving a class from the interface definition, and implementing its functions. An interface implementation actually provides the services defined by the interface. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody><steps id="GUID-7A342564-DF90-57AD-874C-164C7BE66B9A"><step id="GUID-C213F154-EEA1-503B-A184-AB76FF1DECE2"><cmd>Derive a class from the interface definition. </cmd> </step> <step id="GUID-C72498E7-82F6-598F-A1D7-613A89E9D4A2"><cmd>Implement the object creation functions like <codeph>NewL()</codeph> or <codeph>ConstructL()</codeph> for the derived class. </cmd> </step> <step id="GUID-0C9777EC-5998-5A83-9C13-3E45875BB748"><cmd>Call the appropiate <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> function to instantiate an interface implementation that satisfies the specified interface. </cmd> </step> <step id="GUID-6379343D-1990-59ED-919E-AEB7185C1A44"><cmd>Implement the pure virtual functions defined by the interface definition, to provide required services to clients. </cmd> </step> </steps> <example id="GUID-8CE792E8-0E17-5660-A1E0-DF10E83B73D4"><title>Creating an interface implementation example</title> <p>The following code depicts an example segment of the interface definition class derived from <xref href="GUID-067293BF-B28C-3CEC-92F4-1351A795EA7F.dita"><apiname>CActive</apiname></xref>. </p> <codeblock id="GUID-D988EFE2-4F4E-5A5A-B1E8-1859A3FB8198" xml:space="preserve">class CExampleInterfaceDefinition : public CActive
+    {
+public:
+    // Wraps ECom object instantiation
+    static CExampleInterfaceDefinition* NewL();
+    // Wraps ECom object destruction 
+    virtual ~CExampleInterfaceDefinition();
+    // Interface service 
+    virtual void DoMethodL() = 0;
+...
+private:
+    // Instance identifier key or UID.
+    TUid iDtor_ID_Key;
+    };</codeblock> <p>The following code depicts a class derived from the interface definition CExampleInterfaceDefinition. </p> <codeblock id="GUID-1F88C6F8-2486-5EDB-A7D3-0E15CB0C7633" xml:space="preserve">class CExampleIntImplementation : public CExampleInterfaceDefinition
+    {
+public:
+    // Two-phase constructor
+    static CExampleIntImplementation* NewL();
+    // Destructor
+    ~CExampleIntImplementation();
+    // Implement the required methods from CExampleInterfaceDefinition 
+    void DoMethodL();
+
+private:
+    void ConstructL();
+    };</codeblock> <p>The following code depicts the implementation of the object creation functions and virtual functions in CExampleInterfaceDefinition. </p> <codeblock id="GUID-B1356DF4-C838-5DF8-AE43-5F503780E5DE" xml:space="preserve">CExampleIntImplementation* CExampleIntImplementation::NewL()
+{
+    CExampleIntImplementaion self = new (ELeave) CExampleIntImplmentation();
+    CleanupStack::PushL(self);
+    self-&gt;ConstructL();
+    CleanupStack::Pop();
+    return self;
+}
+
+void CExampleIntImplementation::ConstructL()
+{
+// specific implementation
+}
+CExampleIntImplementation::~CExampleIntImplementation()
+{
+}
+    ~CExampleIntImplementation();
+
+void CExampleIntImplementation::DoMethodL()
+{
+    // specific implementation of the DoMetholdL()
+}
+
+</codeblock> </example> </taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51" xml:lang="en"><title>Column
+structure of lists</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>For visual consistency, the standard list layouts are built around a structure
+of three virtual columns. The column borders are aligned with the sides of
+the context pane.</p>
+<p>The width of list items can be divided in three sections (columns A, B
+and C). All three columns need not be used separately in a list layout: combinations
+AB, BC or ABC are possible. Column D is basically the very end of column C
+where additional indicators can be displayed (see figure below). The area
+for these indicators is not strictly an individual column in the same sense
+as the other three, because it can be used dynamically, item by item. All
+items within a list must use the same column layout.</p>
+<fig id="GUID-88132214-24C6-4C80-93A7-335D7FBE938A">
+<title>Different column arrangements: a) All columns used for a text item.
+b) Column A contains an icon, columns B&amp;C combined for text. c) Columns
+A&amp;B combined for a large icon, column C contains text. d) Column A: an
+icon; column B: a label; column C: text.</title>
+<image href="GUID-01F0F2D6-CB67-45B4-B0E4-1A85D113396B_d0e56401_href.png" scale="52" placement="inline"/>
+<image href="GUID-0FB7E59D-F81A-4B6F-B9E7-C97FDA5B7925_d0e56403_href.png" scale="50" placement="inline"/>
+</fig>
+<table id="GUID-634822BE-B1A4-43E4-9A28-7ABA9D6DF336"><title>Standard elements
+within list item associated with columns</title>
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry>Column</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Column A</p></entry>
+<entry><ul>
+<li><p>Small graphic (icon): an item property indication. </p></li>
+<li><p>The item number (see <xref href="GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita">Numbered
+items</xref>).</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Column B</p></entry>
+<entry><p>Heading (the title or attribute of the item).</p></entry>
+</row>
+<row>
+<entry><p>Column AB</p></entry>
+<entry><ul>
+<li><p>Heading (the title or attribute of the item). </p></li>
+<li><p>Large graphic (for example, an icon or an image thumbnail).</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Column C/BC/ABC</p></entry>
+<entry><p>The main text of the item.</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<note><p>The list layout can be mirrored for localizations such as Arabic
+and Hebrew (for example, column A is in the right edge of the pane). See <xref href="GUID-8E2FA5CC-C582-4321-88BB-C5CE3AA047FE.dita">Layout changes in bi-directional
+languages</xref>.</p></note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9605837-2209-500D-AB62-48A433489C5E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F9605837-2209-500D-AB62-48A433489C5E" xml:lang="en"><title>Resource
+file definition</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A source file consists of any number of statements:</p>
+<codeblock xml:space="preserve">&lt;source-file&gt;
+<b>source-file ::</b>=
+    &lt;statement-list&gt; &lt;statement&gt;
+<b>statement ::</b>=
+    &lt;uid2-statement&gt; | &lt;uid3-statement&gt; | &lt;character_set-statement&gt; | &lt;enum-statement&gt; | &lt;name-statement&gt; | &lt;resource-statement&gt; | &lt;struct-statement&gt;</codeblock>
+<p>A summary of the keywords that are used for these statement types respectively
+is given below:</p>
+<table id="GUID-0138D798-2FA4-5940-89F5-D7D6BC07E9AF">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<tbody>
+<row>
+<entry><p><xref href="GUID-383A617C-474B-509D-BA37-3515BCC5F1D1.dita">CHARACTER_SET</xref> </p> </entry>
+<entry><p>Defines the character set to be used</p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783.dita">ENUM</xref> </p> </entry>
+<entry><p>Defines a set of integer values</p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita">NAME</xref> </p> </entry>
+<entry><p>By default, the resource IDs in the generated header file are allocated
+from 1 in ascending sequence. The sequence can be made to begin from another
+value using this statement.</p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-32F00078-6084-5288-9D3F-9F8D70514799.dita">RESOURCE</xref> </p> </entry>
+<entry><p>Defines an actual resource <i>instance</i> of the type defined in
+a struct, gives it a resource id, and causes it to be generated in the resource
+file. </p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41.dita">STRUCT</xref> </p> </entry>
+<entry><p>Defines a <i>type</i> of resource.</p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita">UID2</xref> </p> </entry>
+<entry><p>Defines the second UID for the resource file</p> </entry>
+</row>
+<row>
+<entry><p><xref href="GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita">UID3</xref> </p> </entry>
+<entry><p>Defines the third UID for the resource file</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>The most usual statements are <codeph>STRUCT</codeph> and <codeph>RESOURCE</codeph>. </p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e63799_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F9896E96-1076-552D-AE54-8F9DABED867F"><title>Configuring the Video Player</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to configure the video player. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to make configuration adjustments to the video player. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>The video player utility is used to open, play, and obtain information from sampled video data. This functionality is implemented by the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita"><apiname>CVideoPlayerUtility</apiname></xref> class. The video data can be supplied either in a file, a descriptor or a URL. </p> </section> <section><title>Using Video Player </title> <p>The following tasks will be covered in this tutorial: </p> <ul><li id="GUID-0A783BCE-7C87-5EE1-BFDA-BD2847CF1E4F"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-18902F43-1F13-5A91-84AD-94732560A554">Set the Display Window</xref>  </p> </li> <li id="GUID-4A64B04C-737D-587E-BBA4-478EE453EC82"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-CDD3561D-84E4-5524-9593-5055659B6CB0"> Query and Set the Volume</xref>  </p> </li> <li id="GUID-15F0C370-6460-5D6D-8CDB-B042CBD4A7C6"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-BBCD720C-1276-5D6C-B9E6-1946EE019987">Query and Set the Balance</xref>  </p> </li> <li id="GUID-ACB66213-E77F-5F93-BF2D-A7DEECFA10D1"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-7666501B-196B-5FE9-A331-311B11BF7954">Query and Set the Priority</xref>  </p> </li> <li id="GUID-7E7ACD89-0ECB-5CD7-A550-571BC8F8FE1C"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-8B88F87D-A3F0-5521-92DA-C74EE2D942A8">Query and Set the Bit and Frame Rate</xref>  </p> </li> <li id="GUID-1ED08DD8-4D68-52AF-89DA-7617BCE9A388"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-7D998004-DC09-5328-B2EE-AA363FB2D1C5">Query and Set the Current Playback Position</xref>  </p> </li> <li id="GUID-ADFC9AEB-30BE-56A0-B2C0-F6F2E7D12C2E"><p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita#GUID-F9896E96-1076-552D-AE54-8F9DABED867F/GUID-0A67AED6-860A-5D84-9CE3-6E30A673DD82">Query and Set the MIME and Codec Type</xref>  </p> </li> </ul> <p id="GUID-18902F43-1F13-5A91-84AD-94732560A554"><b>Setting the Display Window</b> </p> <p>The high level steps to set the display window are shown here: </p> <ul><li id="GUID-86A3CE74-3BC6-5C40-B9D4-9A6D89C2D059"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-34881891-A618-3E46-B6E2-3BA63324C0D7"><apiname>CVideoPlayerUtility::SetDisplayWindowL</apiname></xref>: This is used to provide the video controller with an area of display to render the current video frame. It can be represented pictorially as shown below: </p> <fig id="GUID-FAA210BE-66AB-5B23-AD33-F623B30AE305"><title>
+                     Video display regions 
+                  </title> <image href="GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e292029_href.png" placement="inline"/></fig> <p>The screeenRect specifies the area within the window provided for displaying the video image. This rectangle is in screen coordinates. The video frame will be fitted to this rectangle as best possible, while maintaining the original aspect ratio. </p> <p>The ClipRect specifies the region to draw. The drawn region will be the intersection between the ClipRect and the ScreenRect. </p> <p>A crop region is defined as a region in the source video frame. The cropped region is displayed in the center of the ScreenRect with the same scaling as if it was displayed as part of the whole image. This could be used to zoom in on a region by setting the crop region, and setting the scale factor to fill the WindowRect. </p> <codeblock id="GUID-3F331C91-F37E-5575-9994-A162E3C88EAD" xml:space="preserve">void CPlayVideo::SetDisplayWindowL(RWsSession &amp;aWs, CWsScreenDevice &amp;aScreenDevice, RWindowBase &amp;aWindow, const TRect &amp;aWindowRect, const TRect &amp;aClipRect)
+    {
+    iVideoUtility-&gt;SetDisplayWindowL(aWs, aScreenDevice, aWindow, aWindowRect, aClipRect);
+    }
+</codeblock> </li> </ul> <p id="GUID-CDD3561D-84E4-5524-9593-5055659B6CB0"><b>Querying and Setting the Volume</b> </p> <p>The current volume settings can be reported and set appropriately with the help of the following functions: : </p> <ul><li id="GUID-E8AFCF73-2B6E-5DF1-80EE-69B2E7D51260"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-4397F487-2C26-3F6C-B347-F58C0F8E1DB4"><apiname>CVideoPlayerUtility::Volume()</apiname></xref>: Returns the current playback volume for the audio track of the video clip. </p> <codeblock id="GUID-F4994952-BDBA-51D6-B1C5-6658EE4C31A5" xml:space="preserve">TInt CPlayVideo::Volume() 
+    {
+    return iVideoUtility-&gt;Volume();
+    }</codeblock> </li> <li id="GUID-4C860E43-36B7-58C3-820A-E5901C7B250C"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-842870F6-2A0E-36B2-8ADB-41CE032DCF85"><apiname>CVideoPlayerUtility::MaxVolume()</apiname></xref>: Returns the maximum volume that the audio track can support. </p> </li> <li id="GUID-BEEFF82A-D825-512C-86BF-EA2E5B55F48E"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-3B55A392-FD48-30FD-8038-405366EB241C"><apiname>CVideoPlayerUtility::SetVolumeL()</apiname></xref>: This function allows the volume of the audio track of the video clip to be set. The volume can be changed before or during playback and comes to effect immediately. The volume can be set to a value anywhere between zero and the maximum permissible volume. </p> <codeblock id="GUID-F1ACB4E4-672E-58A1-8C42-F6BC6EB70774" xml:space="preserve">TInt volume;
+
+volume = iVideoPlayer.MaxVolume(); \\Returns maximum volume
+void CPlayVideo::SetVolumeL(TInt aVolume) \\Set the audio volume
+    {
+    iVideoUtility-&gt;SetVolumeL(aVolume);
+    } 
+
+//The volume must be a value between 0 and the value returned by the MaxVolume function.
+
+</codeblock> </li> </ul> <p id="GUID-BBCD720C-1276-5D6C-B9E6-1946EE019987"><b>Querying and Setting the Balance</b> </p> <p>The audio playback balance settings can be done using the following functions: </p> <ul><li id="GUID-D5970FD6-C545-54AD-A3C4-6710C7A744ED"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-AF2BEB2A-ED31-3671-B479-2027B9EBA5A6"><apiname>CVideoPlayerUtility::SetBalanceL()</apiname></xref>: This function sets the current playback balance for the audio track of the video clip. It can be any value between KMMFBalanceMaxLeft and KMMFBalanceMaxRight. </p> <codeblock id="GUID-A675CCAF-EFD5-599C-BB5A-3756E49E0F5E" xml:space="preserve">void CPlayVideo::SetBalanceL(TInt aBalance)
+    {
+    iVideoUtility-&gt;SetBalanceL(aBalance);
+    }</codeblock> </li> <li id="GUID-9AE78FF2-9210-5027-BE63-7FA63EFE5116"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-1E3592A8-6C90-3F2F-95A5-F0908ECE1B7B"><apiname>CVideoPlayerUtility::Balance()</apiname></xref>: This function returns the current playback balance settings for the audio track of the video clip. </p> <codeblock id="GUID-AE730785-2C00-5738-9490-34EB2E04025B" xml:space="preserve">TInt CPlayVideo::Balance() 
+    {
+    return iVideoUtility-&gt;Balance();    
+    }</codeblock> </li> </ul> <p id="GUID-7666501B-196B-5FE9-A331-311B11BF7954"><b>Querying and Setting the Priority</b> </p> <p>To set the priority for the playback to access the sound hardware, use the following methods: </p> <ul><li id="GUID-8573BEA1-DBE1-5AA2-8329-853B6B5BDD50"><p> <xref href="GUID-E03EA458-1ABD-34A4-BBB2-F3C65D035773.dita"><apiname>PriorityL()</apiname></xref>: This function returns the current playback priority. This is used to arbitrate between multiple objects simultaneously trying to accesses the sound hardware. </p> </li> <li id="GUID-B7B7769A-DAE7-503F-8375-6D99AABE9596"><p> <xref href="GUID-3A818B04-A01A-35EB-9F6C-E13543B54CB1.dita"><apiname>SetPriorityL()</apiname></xref>: This function sets the playback priority. </p> <codeblock id="GUID-C8835378-FEF4-5E36-981B-A8E8B55B7FDE" xml:space="preserve">void CPlayVideo::SetPriorityL(TInt aPriority, TMdaPriorityPreference aPref)
+    {
+    iVideoUtility-&gt;SetPriorityL(aPriority, aPref);
+    }</codeblock> </li> </ul> <p id="GUID-8B88F87D-A3F0-5521-92DA-C74EE2D942A8"><b>Querying and Setting the Bit and Frame Rate</b> </p> <p>The high level steps to query and set the bit and frame rate: </p> <ul><li id="GUID-AA205B92-155C-5E21-8DD7-A78E793F65DE"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-75E33792-E4AD-39BA-9129-15E731DD32D7"><apiname>CVideoPlayerUtility::VideoBitRateL()</apiname></xref>: This function returns the bit rate of the video clip. This returns the video clip's bit rate in bits per second. </p> <codeblock id="GUID-B5BFDD9A-B521-5A60-B278-57E72E9311DD" xml:space="preserve">TInt CPlayVideo::VideoBitRateL() 
+    {
+    return iVideoUtility-&gt;VideoBitRateL();
+    }</codeblock> </li> <li id="GUID-254E33F2-3169-51E1-B964-3E8D0107D79C"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-BF2B4086-4682-3A37-AB02-859A02B0A3EF"><apiname>CVideoPlayerUtility::VideoFrameRateL()</apiname></xref>: This function returns the video frame rate. This returns the video frame rate in frames per second. </p> <codeblock id="GUID-FFFC156C-927A-564B-92B0-0E7D99ED506C" xml:space="preserve">TReal32 CPlayVideo::VideoFrameRateL()
+    {
+    return iVideoUtility-&gt;VideoFrameRateL();
+    }</codeblock> </li> <li id="GUID-0136372C-744E-5C85-B3F8-8E4F6921B7A2"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-AC9ACAC4-44AD-3FC0-8E03-58DB0A641EE0"><apiname>CVideoPlayerUtility::SetVideoFrameRateL()</apiname></xref>: This function is used to set the number of video frames to be displayed per second. </p> <codeblock id="GUID-79D3C6D7-7E4F-5292-9221-6BCAEE88302B" xml:space="preserve">void CPlayVideo::SetVideoFrameRateL(TReal32 aFramesPerSecond)
+    {
+    iVideoUtility-&gt;SetVideoFrameRateL(aFramesPerSecond);
+    }</codeblock> </li> </ul> <p> <b>Note:</b> The presence of an audio track within a video clip can be determined using <xref href="GUID-A230A2A3-FAFA-3F6F-A6C1-67B407779A87.dita"><apiname>AudioEnabledL()</apiname></xref>. </p> <p id="GUID-7D998004-DC09-5328-B2EE-AA363FB2D1C5"><b>Querying and Setting the Current Playback Position</b> </p> <p>The current playback position can be queried and set using the following functions: </p> <ul><li id="GUID-B3CC86FB-3169-5760-A289-7AAA7F5E6BF6"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-A000D8FD-DFA7-3402-A7AF-E8958E4AD252"><apiname>CVideoPlayerUtility::PositionL()</apiname></xref>: This function returns the current playback position. It returns the current position from the start of the clip in microseconds. </p> </li> <li id="GUID-3822C893-A609-5E8E-995B-C92D637CF435"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F1E338F3-F683-3B21-9CAC-79A3B0996587"><apiname>CVideoPlayerUtility::SetPositionL()</apiname></xref>: This function sets the position for the playback within the video clip to start. </p> <codeblock id="GUID-704F61E0-A79A-56B5-8814-9F332681188C" xml:space="preserve">TTimeIntervalMicroSeconds pos;
+TTimeIntervalMicroSeconds CPlayVideo::PositionL() \\ retrieves the current playback position within the video clip
+    {
+    return iVideoUtility-&gt;PositionL();
+    } </codeblock> </li> </ul> <p id="GUID-0A67AED6-860A-5D84-9CE3-6E30A673DD82"><b>Querying and Setting the MIME and Codec Type</b> </p> <p>This section explains the functions that reports and sets the MIME type and codecs for video and audio data that is already open. The functions are as stated below: </p> <ul><li id="GUID-2A5F777D-1AFE-5798-A818-B4772185B741"><p> <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-58238242-AB6D-3A09-8212-1724244F69B0"><apiname>CVideoPlayerUtility::VideoFormatMimeType()</apiname></xref>: This returns the current MIME type of the video clip currently open. </p> <codeblock id="GUID-1CF87BE3-6249-55FB-8E37-2ACE38E73090" xml:space="preserve">const TDesC8 &amp; CPlayVideo::VideoFormatMimeType() 
+    {
+    return iVideoUtility-&gt;VideoFormatMimeType();
+    }</codeblock> </li> <li id="GUID-8558289D-3599-57D7-8571-50A49012D433"><p>The datatype of the audio track used by the video clip can be retrieved using and <xref href="GUID-5298E3BF-4840-3FFD-B74D-D324B0386EDE.dita"><apiname>AudioTypeL()</apiname></xref>. </p> <codeblock id="GUID-789FF0CC-9115-5BA1-879E-FDFDA76F5EFE" xml:space="preserve">TFourCC CPlayVideo::AudioTypeL() \\retrieves the codecs used by audio track
+    {
+    return iVideoUtility-&gt;AudioTypeL();
+    } </codeblock> </li> </ul> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita">Scaling Automatically</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2-master.png has changed
Binary file Symbian3/SDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e400785_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9C12192-EDA8-4220-87DF-E7F1EA50CDEF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,660 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->  <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"><concept id="GUID-F9C12192-EDA8-4220-87DF-E7F1EA50CDEF" xml:lang="en"><title>List
+item types</title><prolog><metadata><keywords></keywords></metadata></prolog><conbody>
+<p>The appearance of list items can be chosen from the following types. The
+examples are from lists displayed in the main pane; for most item types a
+similar component for use in pop-up windows is possible.</p>
+<table id="GUID-CA6D80E6-0876-4A4D-B08B-09EFFF2B305B"><title>List item types</title>
+<tgroup cols="4"><colspec colname="col1"></colspec><colspec colname="col2"></colspec><colspec colname="col3"></colspec><colspec colname="col4"></colspec>
+<thead>
+<row>
+<entry>Item</entry>
+<entry namest="col2" nameend="col4">Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>Single-line item</p></entry>
+<entry><p>ABC</p></entry>
+<entry><p>Main text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry><p>[list_single_pane]</p></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics </p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul><p>Note: Item status graphics in column D may be empty; they indicate
+e.g. temporary item states.</p></entry>
+</row>
+<row>
+<entry><p>Single-line item with a number</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Ordinal number</p></entry>
+<entry><p>Primary font small</p></entry>
+</row>
+<row>
+<entry><p>[list_single_number_pane]</p></entry>
+<entry><p>BC</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul><p>Note: Numbered lists should only be used when numbering offers some
+added value.</p></entry>
+</row>
+<row>
+<entry><p>Single-line item with a graphic</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item property graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_single_graphic_pane]</p></entry>
+<entry><p>BC</p></entry>
+<entry><p>Main text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Multi-selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Single-line item with a heading</p></entry>
+<entry><p>AB</p></entry>
+<entry><p>Heading </p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry><p>[list_single_heading_pane]</p></entry>
+<entry><p>C</p></entry>
+<entry><p>Main text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics </p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Single-line item with a number and a heading</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Ordinal number</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry><p>[list_single_number_heading_pane]</p></entry>
+<entry><p>B</p></entry>
+<entry><p>Heading</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Single-line item with a graphic and a heading</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item property graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_single_graphic_heading_pane]</p></entry>
+<entry><p>B</p></entry>
+<entry><p>Heading</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Multi-selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Single-line item with a large graphic</p></entry>
+<entry><p>AB</p></entry>
+<entry><p>Large graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_single_large_graphic_pane]</p></entry>
+<entry><p>C</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul><p>Note: A large graphic may be e.g. an image or indicate item property.</p></entry>
+</row>
+<row>
+<entry><p>Two-line item</p></entry>
+<entry><p>ABC (line 1)</p></entry>
+<entry><p>Main text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry><p>[list_double_pane]</p></entry>
+<entry><p>ABC (line 2)</p></entry>
+<entry><p>Additional text</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line1)</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul><p>Note: The second line may be empty. </p></entry>
+</row>
+<row>
+<entry><p>Two-line item with a number</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Ordinal number</p></entry>
+<entry><p>Primary font small</p></entry>
+</row>
+<row>
+<entry><p>[list_double_number_pane]</p></entry>
+<entry><p>BC (line 1)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>BC (line 2)</p></entry>
+<entry><p>Additional text </p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line1) </p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with a graphic</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item property graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_double_graphic_pane]</p></entry>
+<entry><p>BC (line 1)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>BC (line 2)</p></entry>
+<entry><p>Additional text </p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with a heading</p></entry>
+<entry><p>ABC (line1)</p></entry>
+<entry><p>Heading</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry><p>[list_double_heading_pane]</p></entry>
+<entry><p>ABC (line 2)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line 1)</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with a large graphic</p></entry>
+<entry><p>AB</p></entry>
+<entry><p>Large graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_double_large_graphic_pane]</p></entry>
+<entry><p>C (line 1)</p></entry>
+<entry><p>Main text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C (line 2)</p></entry>
+<entry><p>Additional text</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line 1)</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with a graphic and a heading</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item property graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_double_graphic_heading_pane]</p></entry>
+<entry><p>BC (line 1)</p></entry>
+<entry><p>Heading</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>BC (line 2)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line 1)</p></entry>
+<entry><p>Two additional graphics possible</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with time</p></entry>
+<entry><p>AB</p></entry>
+<entry><p>Time</p></entry>
+<entry><p>Digital font</p></entry>
+</row>
+<row>
+<entry><p>[list_double_time_pane]</p></entry>
+<entry><p>C (line 1)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C (line 2)</p></entry>
+<entry><p>Additional text</p></entry>
+<entry><p>Secondary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line 1)</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><p>Clock alarm lists</p></entry>
+</row>
+<row>
+<entry><p>Two-line item, style 2</p></entry>
+<entry><p>ABC (line 1)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry><p>[list_double2_pane]</p></entry>
+<entry><p>ABC (line 2)</p></entry>
+<entry><p>Main text continues</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line1) </p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul><p>Note: One text item that can extend to a second line.</p></entry>
+</row>
+<row>
+<entry><p>Two-line item with a graphic, style 2</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item property graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_double2_graphic_pane]</p></entry>
+<entry><p>BC (line 1)</p></entry>
+<entry><p>Main text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>BC (line 2)</p></entry>
+<entry><p>Main text (continued)</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with a large graphic, style 2</p></entry>
+<entry><p>AB</p></entry>
+<entry><p>Large graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry><p>[list_double2_large_graphic_pane]</p></entry>
+<entry><p>C (line 1)</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C (line 2)</p></entry>
+<entry><p>Main text (continued)</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Settings item</p></entry>
+<entry><p>ABC (line 1)</p></entry>
+<entry><p>Setting item text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry><p>[list_setting_pane]</p></entry>
+<entry><p>ABC (line 2)</p></entry>
+<entry><p>Value item status</p></entry>
+<entry><p>Primary font small</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line1)</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><p>Setting lists</p><p>Note: The value
+item may be omitted in order to create a regular selection item within a setting
+list.</p></entry>
+</row>
+<row>
+<entry><p>Setting item with a number</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Ordinal number</p></entry>
+<entry><p>Primary font small</p></entry>
+</row>
+<row>
+<entry><p>[list_setting_number_pane]</p></entry>
+<entry><p>BC (line 1)</p></entry>
+<entry><p>Setting item text </p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>BC (line 2)</p></entry>
+<entry><p>Value item status</p></entry>
+<entry><p>Primary font small</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D (line1) </p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><p>Setting lists</p><p>Note: The value
+item may be omitted in order to create a regular selection item within a setting
+list.</p></entry>
+</row>
+<row>
+<entry><p>Single-line item with two graphics</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item selection graphic</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry><p>[list_single_2graphic_pane]</p></entry>
+<entry><p>B</p></entry>
+<entry><p>Item property graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Multi-selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+<row>
+<entry><p>Two-line item with a graphic and a large graphic, style 2</p></entry>
+<entry><p>A</p></entry>
+<entry><p>Item selection graphic</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry><p>[list_double_graphic_large_graphic_pane]</p></entry>
+<entry><p>B</p></entry>
+<entry><p>Large graphic</p></entry>
+<entry><p>Color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>C</p></entry>
+<entry><p>Main text</p></entry>
+<entry><p>Primary font</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry><p>D</p></entry>
+<entry><p>Item status graphics</p></entry>
+<entry><p>Single color</p></entry>
+</row>
+<row>
+<entry></entry>
+<entry namest="col2" nameend="col4"><ul>
+<li><p>Menu lists</p></li>
+<li><p>Selection lists</p></li>
+<li><p>Multi-selection lists</p></li>
+<li><p>Markable lists</p></li>
+</ul></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>There is a corresponding pop-up window list item for the following components:</p>
+<ul>
+<li><p>single-line item</p></li>
+<li><p>single-line item with a number</p></li>
+<li><p>single-line item with a graphic</p></li>
+<li><p>single-line item with a heading</p></li>
+<li><p>single-line item with a number and a heading</p></li>
+<li><p>single-line item with a graphic and a heading</p></li>
+<li><p>single-line item with a large graphic</p></li>
+<li><p>single-line item with two graphics</p></li>
+<li><p>two-line item</p></li>
+<li><p>two-line item with a number</p></li>
+<li><p>two-line item with a graphic</p></li>
+<li><p>two-line item with a heading</p></li>
+<li><p>two-line item with a large graphic</p></li>
+<li><p>two-line item, style 2</p></li>
+<li><p>two-line item with a graphic, style 2</p></li>
+<li><p>two line item with a large graphic, style 2</p></li>
+</ul>
+<section><title>Using list item types
+in C++ applications</title><p>For the C++ classes used for the different list
+item types, see List
+box item layouts in the Lists
+API documentation.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9E10A82-88E9-57AA-AFEE-3C1A21BF05BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-F9E10A82-88E9-57AA-AFEE-3C1A21BF05BC"><title>target</title><prolog><metadata><keywords/></metadata></prolog><conbody><p><codeph>abld</codeph> [ test ] <codeph>target</codeph> <codeph> ( ( [-c] | [-w] ) | ( [-s] [-k] [-v] ) )</codeph> [ <varname>platform</varname> ] [ <varname>build</varname> [ <varname>program</varname> ] ]</p> <p>This command builds the executables for your component.</p> <p>Since, in the makefiles generated by makmake, the main target is dependent upon the <codeph>RESOURCE</codeph> and <codeph>LIBRARY</codeph> targets, resources and import libraries will also be created when the main target is built. </p> <p>Executables will not be regenerated where they have later datestamps than the source files they depend upon.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9F45DE7-6688-5C31-90F0-0BEA72E74034.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F9F45DE7-6688-5C31-90F0-0BEA72E74034" xml:lang="en"><title>Creating
+Email Messages in Rich Text Format</title><shortdesc>This tutorial explains how to store the email message data in rich
+text format. Storing email messages in rich text format results in increased
+RAM storage space, when compared to storing messages in plain text format.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <ol id="GUID-F7EF7462-A65E-50B0-BCDA-C915EB69DAAE">
+<li id="GUID-022C69C9-BFBF-5540-ABA1-DEAB836BCC26"><p>Create an email entry
+in the message store using <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-FCDC47D2-0446-3CD7-A246-4DCED7C8A063"><apiname>CImEmailOperation::CreateNewL()</apiname></xref>,
+which takes all the following nine parameters. </p> <p><codeblock id="GUID-5BAB9612-275D-56C7-91B7-ED6D7AF93CA6" xml:space="preserve">static IMPORT_C CImEmailOperation *CreateNewL(TRequestStatus &amp;aObserverRequestStatus,
+CMsvSession &amp;aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId,
+TMsvPartList aPartList, const TMsvEmailTypeList &amp;aMsvEmailTypeList,
+TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);</codeblock> </p> </li>
+<li id="GUID-83FDEF9F-DD2A-502B-9A80-3FBA28347261"><p>Set the <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> parameter
+to <codeph>EFalse</codeph>. </p> </li>
+<li id="GUID-DC8EEF57-35F8-5A28-83E7-7C98069C357C"><p>Use the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-38E7EABD-1300-3DF2-B9DF-B65EEABD8A31"><apiname>CImEmailOperation::ProgressL()</apiname></xref> function
+to obtain the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> parameter of the newly created email.
+This is returned through a <xref href="GUID-36B29964-420D-38D0-AF08-4DA70BED8B6E.dita"><apiname>TPckgC</apiname></xref> &lt;<xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> &gt;
+descriptor. </p> </li>
+<li id="GUID-16CDC45A-B8A6-5141-80A1-569182A2E642"><p>Create a <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object
+using the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+of the newly created email. </p> </li>
+<li id="GUID-FBDF917D-2265-524A-B574-500DC13F0095"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object
+to the create a <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-F52E2F63-5A8C-566A-B1B9-7B7D3EBEB4FE"><p>Create the body text
+of the email and insert into a <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> object. </p> </li>
+<li id="GUID-D1E2F8C6-8DB8-564F-8F46-08AD7329BA99"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-791117B4-C946-3D43-AE1E-68DDC10F85A3"><apiname>CImEmailMessage::StoreBodyTextL()</apiname></xref> function
+and pass the <xref href="GUID-39945DA4-B362-3DF6-BF9E-DD079EEA7934.dita"><apiname>CRichText</apiname></xref> class that contains the body text
+of the message. </p> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9F53050-AAFA-4685-8C62-033E585F061B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F9F53050-AAFA-4685-8C62-033E585F061B" xml:lang="en"><title>Web Guide</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-F9FCE3FC-42E4-5E9E-9AFC-A9B02E2612A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-F9FCE3FC-42E4-5E9E-9AFC-A9B02E2612A2" xml:lang="en"><title>Using
+TRefByValue&lt;class T&gt; Class</title><shortdesc>This document describes how to use the TRefByValue&lt;class T&gt;
+class.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Functions which take a variable number of arguments, such as <codeph>TDes8::Format()</codeph>,
+always take the first parameter as a value reference.</p>
+<p>For example, the function <codeph>TDes8::Format()</codeph> is prototyped
+as:</p>
+<codeblock id="GUID-A3704F62-5577-585E-A6D5-052194467C7D" xml:space="preserve">void Format(TRefByValue&lt;const TDesC8&gt; aFmt,...);</codeblock>
+<p>The first argument is a value reference for a <codeph>const         TDesC8</codeph> type.
+Just pass a parameter of this type or a parameter that can be converted to
+that type. </p>
+<codeblock id="GUID-D4B86B9C-43B9-53A1-9038-A9515D6A806B" xml:space="preserve">_LIT(KFormat1,"%b %c %d %o %u %x");
+...
+tgt.Format(KFormat1,65,65,65,65,65,65);
+...</codeblock>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FA120B3F-4EC4-5A0A-8A36-D5CD032CF1B0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FA120B3F-4EC4-5A0A-8A36-D5CD032CF1B0"><title>Using Mutexes</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Mutexes provide serialised access to shared resources. They are Kernel objects and, as such, are managed by the Kernel.</p> <p>A mutex can be used by threads across any number of processes. If a resource is only shared between the threads within the same process, it can be more efficient to use a critical section.</p> <p>Access to a mutex is through an RMutex handle.</p> <p>Mutexes are similar to semaphores in that they have a <codeph>TInt</codeph> count value that is incremented by calling the <codeph>Signal()</codeph> member function of the mutex handle and decremented by calling the <codeph>Wait()</codeph> member function of the mutex handle. A mutex with a negative value implies that a thread must wait for access to the shared resource.</p> <p>Unlike a semaphore, the count value of a mutex is always set to one when it is constructed.</p> <p>The creator of a shared resource uses the <codeph>CreateLocal()</codeph> or <codeph>CreateGlobal()</codeph> member functions of <codeph>RMutex</codeph> to create a mutex and to open the handle to it. Any thread wishing to access the resource first calls <codeph>Wait()</codeph>; that thread then calls <codeph>Signal()</codeph> after completing its access.</p> <p>The first thread to call <codeph>Wait()</codeph> returns immediately, and is free to continue execution, but any other threads that call <codeph>Wait()</codeph> will wait in a queue maintained by the mutex. Waiting threads are released on a first-in first-out basis when the thread currently accessing the resource calls <codeph>Signal()</codeph>.</p> <p>The nature of the shared resources should be such that any access completes in a relatively short time so that threads do not wait for extensive periods on the mutex.</p> <p>In many cases, it may be better to use servers to serialize access to a shared resource (for example, the window server) rather than use a mutex. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC"><title>What is Root Server Configurator?</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Root Server Configurator is the starter program for the C32exe process. Root Server Configurator is started during device startup and then Root Server Configurator starts all the other servers used for device communication. </p> <p>Examples of these servers are the <xref href="GUID-61E0CD76-A2E3-5066-84A8-146EECA8ADCD.dita">Sockets Server</xref>, the <xref href="GUID-D49696D1-4B84-56B5-909D-A15F599F4B6D.dita">Telephony Server</xref> and the <xref href="GUID-9B83CDD4-FC94-51A0-AC67-CD04BCAFEF08.dita">Serial Communications Server</xref>. </p> <p>The Root Server Configurator is a separate process to the Root Server. </p> <p>To start the Root Server Configurator, a process must start either the <filepath>c32start.exe</filepath> program, or must call the <xref href="GUID-CFCBC5A6-FB1F-3DD7-B275-9B9C7389A8A7.dita"><apiname>StartC32()</apiname></xref> function. In the Techview reference version of Symbian OS, the steps in the startup up of the communications servers are: </p> <ol id="GUID-1036F8B2-A73F-524E-B6FA-A47D890F3089"><li id="GUID-E1C66978-2D2E-5AF8-8087-5C8F33B359C1"><p> <xref href="GUID-788BD091-186A-5E25-B058-952C7629A8D4.dita">System Starter</xref> calls <filepath>c32start.exe</filepath> to start the Root Server Configurator. </p> </li> <li id="GUID-1C5C4BBB-D5BB-5576-81A1-5C632B6F2BC1"><p>The Root Server Configurator loads the <xref href="GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF.dita">CMI files</xref>  </p> </li> <li id="GUID-9CFA086A-65C9-5F17-85E9-9CBFBE3B1D4D"><p>The Root Server Configurator calls <xref href="GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695.dita#GUID-9DD1EA2B-DC59-315C-8E9C-CE6D9461B695/GUID-DD214BA3-907E-3C7F-93C6-924A9A115A02"><apiname>RProcess::Create()</apiname></xref> to start the C32exe process. This starts the Root Server. </p> <p>The Root Server Configurator makes requests to Root Server for Root Server to load all the Comms Provider Modules. </p> </li> </ol> <p>After step 3, the device communications servers are all loaded and ready for use by applications. </p> <p>Figure 1 shows these three steps and how the Root Server and Root Server Configurator relate: </p> <fig id="GUID-09B31A56-73AF-5C89-87A7-E68A435FCDAD"><title>
+          Figure 1 - How Root Server and Root Server relate, and the steps
+          involved during startup 
+        </title> <image href="GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e94025_href.png" placement="inline"/></fig> <p>Root Server Configurator is configured by two types of files: <xref href="GUID-10A0DC8C-70B3-53D0-B63F-786C4BAB36CF.dita">CMI files</xref>, and the <xref href="GUID-B5FC3F90-9669-5DED-A6E2-CB927273850B.dita">c32start.ini</xref> file. </p> <p>Root Server Configurator does not provide a published API to its server. Root Server Configurator is the only application which uses the Root Server API. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FA18838A-F0C6-5241-8913-BFB46571D908.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FA18838A-F0C6-5241-8913-BFB46571D908"><title>Device-level code</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Drivers for native ARM-based targets access real hardware, while under WINSCW, you use Win32 facilities to access or emulate hardware. This means that WINSCW device-level code must be substantially different from that used by native targets.</p> <p>First, you will need substantial conditional compilation. Device drivers will need full testing under both WINSCW and ARM targets. In general, a WINSCW device driver is best considered as a separate project from a corresponding native target device driver.</p> <p>Usually, in order to implement this kind of code, you will also need to access Win32 libraries. Specify them using <filepath>.mmp</filepath> specifications such as:</p> <codeblock id="GUID-2CF2B4E3-8FA7-5B0A-8FE5-AA27FCEE6453" xml:space="preserve">start wins
+win32_library kernel32.lib gdi.lib
+end</codeblock> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FA6E3270-C20A-5B05-9FFC-F3D4D8B35999.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FA6E3270-C20A-5B05-9FFC-F3D4D8B35999"><title>How to create and open a file</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-BE0804F6-4375-3C8A-8C83-968F510466E0.dita"><apiname>RFile</apiname></xref> interface is used to create, open, read from and write to a single file. </p> <section><title>Creating and opening a file</title> <p>A common pattern is to attempt to open an existing file, without replacing its existing data, and create it if it does not exist. </p> <ol id="GUID-42702312-C0C9-5788-8819-4BB5730320B5"><li id="GUID-31FFB1C8-AB53-581B-835E-0C33839CEEA5"><p>Use <codeph>Open()</codeph> to open an existing file for reading or writing - an error is returned if it does not already exist. </p> </li> <li id="GUID-9CC8F1EA-196E-5A77-AA80-9BBA198C3B62"><p>Use <codeph>Create()</codeph> to create and open a new file for writing. </p> </li> </ol> <codeblock id="GUID-70C09A68-4C30-5766-99C5-D9BF23ADC85F" xml:space="preserve">TInt err=file.Open(fsSession,fileName,shareMode);
+if (err==KErrNotFound) // file does not exist - create it
+    err=file.Create(fsSession,fileName,shareMode);</codeblock> </section> <section><title>Specifying a share and access mode</title> <p>Use various flags to specify how a file is opened. </p> <codeblock id="GUID-44FB8760-7C13-503D-A53A-3DF794768D26" xml:space="preserve">
+// Open a file as text, writable, and shared with other clients
+RFile file;
+_LIT(KFileName, "FILENAME.CPP");
+file.Open(fsSession,KFileName,EFileStreamText|EFileWrite|EFileShareAny);</codeblock> <p><b>Notes</b> </p> <ul><li id="GUID-6124BD90-9267-523E-BC8E-590BED022083"><p>If another <codeph>RFile</codeph> object tries to open this file in <codeph>EFileShareExclusive</codeph> or <codeph>EFileShareReadersOnly</codeph> mode, access is denied. It can only be accessed in <codeph>EFileShareAny</codeph> mode. </p> </li> <li id="GUID-45948CEF-7780-51E4-B862-F7A8A5983EE5"><p>If a file is not closed explicitly (using <codeph>RFile::Close()</codeph>), it will be closed when the server session associated with it is closed. </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FAB548CF-24EB-52D1-A7A1-9446BA67C7A5"><title>Camera Preset Support</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document describes about the preset support provided as part of Ecam component. </p> <section><title>Providing Improved Camera Preset Support</title> <p>The following steps allows the clients to receive notification about possible changes in supported values and ranges, when camera operates in a particular preset mode. </p> <ol id="GUID-54E10369-B253-5A3F-865F-9A465EB3C989"><li id="GUID-B5000AD2-2D12-51D9-B038-A06CF4E61DB6"><p>Create a new UID <xref href="GUID-62198BF4-764C-3E57-AC39-550F884AAD11.dita"><apiname>KUidECamEventRangeRestricted</apiname></xref> to notify the clients about the possible range restrictions, when camera operates in a particular preset mode. </p> </li> <li id="GUID-6769FA35-42C1-5E63-BBC5-D4B02BAFFC21"><p>Use <xref href="GUID-2773C25B-19DF-38B0-84F7-CABC89F43DD2.dita"><apiname>TECAMEvent</apiname></xref> class to report this event to the client. </p> </li> <li id="GUID-9D7C0B6F-CFA8-527F-9361-84ED1775B4E8"><p>Client gets the list of UIDs for which range has been restricted using <xref href="GUID-6750F61A-455B-371E-893B-090350DCB704.dita#GUID-6750F61A-455B-371E-893B-090350DCB704/GUID-B16C3B90-2788-34B5-94CF-B1F928AAB816"><apiname>CCamera::CCameraPresets::GetFeatureRestrictedSettingsL</apiname></xref> method. </p> </li> <li id="GUID-5D129427-E51F-56EF-8E7C-1BDBE40A0098"><p>Notify the client about the restricted features using the UID <xref href="GUID-547AD3B0-CDCD-335D-97AD-D38622DEBE43.dita"><apiname>KUidECamEventFeatureRestricted</apiname></xref> invoked by ECAM implementation, when camera works in a specific preset mode. </p> </li> <li id="GUID-A683471D-BE75-5E09-9AB9-0CB1C3B0AFF3"><p>Client retrieves the list of uids representing the settings which do not support few feature values using <xref href="GUID-6AC2B220-A05C-3F53-B962-12F951B9BCEB.dita"><apiname>GetFeatureRestrictedSettingsL</apiname></xref> method. An array of TUid <xref href="GUID-0A0EF639-6B37-3F11-981F-5A117D853B0D.dita"><apiname>aFeatureRestrictedSettings</apiname></xref>, retrieves the settings for which the current preset has imposed feature value restrictions. If no restrictions have been imposed, an empty array will be returned. </p> </li> <li id="GUID-AEACA837-A9BA-56D4-978A-C7228DCB327A"><p>Clients can retrieve information if the preset unlock feature is supported using <xref href="GUID-6750F61A-455B-371E-893B-090350DCB704.dita#GUID-6750F61A-455B-371E-893B-090350DCB704/GUID-A0E382E0-832E-3DA4-8CF4-629D74F6CA87"><apiname>CCamera::CCameraPresets::IsPresetUnlockSupportedL</apiname></xref> method. </p> <p>Unlocking preset settings of the camera that worked in a particular preset mode earlier, helps to make changes to the settings subsequently. This can be done as follows: </p> <ul><li id="GUID-0A085E9C-0940-5079-9A02-5D47F506D291"><p>ECAM implementation uses appropriate settings in the camera, to meet the specific preset requirements requested by the client, and the camera with the specific preset is in locked state. </p> <p>By default, the client cannot customise this preset value, without unlocking the preset. </p> </li> <li id="GUID-6C9B5ABC-49D9-5E63-820F-1A0291E9CB7F"><p>Unlock the preset using <xref href="GUID-6750F61A-455B-371E-893B-090350DCB704.dita#GUID-6750F61A-455B-371E-893B-090350DCB704/GUID-067B9ECD-EE8E-3ED3-B570-F4D2BD8754E2"><apiname>CCamera::CCameraPresets::UnlockPresetL()</apiname></xref>, to change the settings. </p> </li> <li id="GUID-E0E7584C-B1D5-5087-B1C6-30C2B1AA5F49"><p>Make sure to lock the preset using <xref href="GUID-6750F61A-455B-371E-893B-090350DCB704.dita#GUID-6750F61A-455B-371E-893B-090350DCB704/GUID-34702C51-953C-341D-9730-BC1547250F03"><apiname>CCamera::CCameraPresets::LockPresetL()</apiname></xref>, when the changes are made. This prevents further changes in settings. </p> </li> <li id="GUID-E2EB81D2-9068-55B7-BE79-4D7B95469421"><p>Whenever client customizes the camera settings after putting the camera in a particular preset, the ECam implementation realises that the preset to be <xref href="GUID-CE906148-7BC9-38D8-97AF-C8876897D9BA.dita"><apiname>KUidECamPresetNone</apiname></xref> instead of the preset previously set by the client. So <xref href="GUID-6750F61A-455B-371E-893B-090350DCB704.dita#GUID-6750F61A-455B-371E-893B-090350DCB704/GUID-B1EAB3BA-C20D-3527-AE20-AE95B444FBC6"><apiname>CCamera::CCameraPresets::Preset()</apiname></xref> will always retrieve <xref href="GUID-CE906148-7BC9-38D8-97AF-C8876897D9BA.dita"><apiname>KUidECamPresetNone</apiname></xref>, when client customises the actual preset settings. </p> </li> </ul> </li> </ol> </section> </conbody><related-links><link href="GUID-9014ED9B-B0A0-5C95-9C5B-7D2F658C757F.dita"><linktext>Accessing and Power Control of
+                Camera</linktext> </link> <link href="GUID-DA26D246-D74A-529F-9F81-11B45669103F.dita"><linktext>Capturing Image</linktext> </link> <link href="GUID-F690DAC8-688B-5BD7-88DF-0CB3D4ACDCFF.dita"><linktext>Capturing Video</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e315036_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FACE863C-8667-5726-B668-C39AA0FBFC68.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FACE863C-8667-5726-B668-C39AA0FBFC68" xml:lang="en"><title>DBMS rowsets</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FAE3F35C-04C1-5CF4-8090-9DF58AD1C02A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FAE3F35C-04C1-5CF4-8090-9DF58AD1C02A" xml:lang="en"><title>How
+to implement a server interface with subsessions</title><shortdesc>Provides code snippets to help you to implement a server interface
+with subsessions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A server side subsession is represented by an instance of a class derived
+from <codeph>CObject</codeph>. </p>
+<p>The following sections refer to an example server, known as the count server.
+The code fragments are taken from the example that can be found at <filepath>...\examples\Base\IPC\ClientServer\complex</filepath>. </p>
+<p>In the example, a server side session is represented by the <codeph>CSession2</codeph> derived
+class <codeph>CCountSession</codeph>. The server session can have any number
+of subsessions, referred to as counters in the example. The subsessions are
+instances of the <codeph>CCountSubSession</codeph> class and these are derived
+from <codeph>CObject</codeph>. </p>
+<p>Unlike the implementation for a simple server interface, as shown in the
+example that can be found at <filepath>...\examples\Base\IPC\ClientServer\simple</filepath>,
+the functions to service client requests, e.g. <codeph>Increase()</codeph>,
+are in class <codeph>CCountSubSession</codeph> rather than <codeph>CCountSession</codeph>. </p>
+<p>The important points to note are: </p>
+<ul>
+<li id="GUID-98D487B0-ECFF-5A83-BEF0-C66475836888"><p>the <codeph>CCountSession</codeph> class
+contains the object container for all the subsession objects which belong
+to this session. </p> </li>
+<li id="GUID-BCE1BF57-FC9E-58CF-9E77-1AD48632DFC0"><p>the <codeph>CCountServer</codeph> class
+contains the <i>one and only</i> object container index through which all
+object containers within the server are produced. </p> </li>
+<li id="GUID-78880ABD-904A-5D3C-988A-646CE2998050"><p>the <codeph>CCountSession</codeph> class
+contains an object index through which a handle number can be generated for
+the subsession. </p> </li>
+</ul>
+<section id="GUID-D49A6975-81B7-4BEE-8F46-C0F850CB4974"><title>Server session representation</title> <p>The <codeph>CCountSession</codeph> class
+is defined as: </p> <codeblock id="GUID-F8FED60B-823A-5965-97F2-0BF6EC24620D" xml:space="preserve">class CCountSession : public CSession2
+    {
+public:
+      // Create the session
+    static CCountSession* NewL();
+    
+public:
+      // Constructor
+    CCountSession();
+    
+      // Called by client/server framework after 
+      // session has been successfully created
+    void CreateL(); 
+        
+      // Service request
+    void ServiceL(const RMessage2&amp; aMessage);
+    void DispatchMessageL(const RMessage2&amp; aMessage);
+
+      // Creates new subsession
+    void NewCounterL(const RMessage2&amp; aMessage);  
+      
+      // Closes the session
+    void CloseSession();
+    
+      // Gets the number of resources (i.e. CCountSubSession objects)
+    void NumResources(const RMessage2&amp; aMessage);
+    
+      // Utility to return the CCountSubSession (subsession) object
+    CCountSubSession* CounterFromHandle(const RMessage2&amp; aMessage,TInt aHandle);    
+
+      // Delete the subsession object through its handle.
+    void DeleteCounter(TInt aHandle);
+      
+      // Gets the number of server-side subsession objects.
+    TInt CountResources();
+      
+      // Panics client
+    void PanicClient(const RMessage2&amp; aMessage,TInt aPanic) const;
+
+private:
+      // Object container for this session.
+    CObjectCon *iContainer;
+
+      // Object index which stores objects
+      // (CCountSubSession instances) for this session.
+    CObjectIx* iCountersObjectIndex;
+
+      // Total number of resources. In this example
+      // a resource is just the number of CCountSubSession objects.
+    TInt iResourceCount;
+    };
+</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-DD9D1AE3-315E-5ADF-A251-5F9BAAF24EED"><p>The data member <codeph>iCountersObjectIndex</codeph> is
+a pointer to an <i>object index</i>. Once a subsession object has been created
+and stored in its <i>object container</i>, it is then added to the <i>object
+index</i> to generate a unique handle number for the counter (<keyword>subsession
+object</keyword>). </p> </li>
+<li id="GUID-0AE88EE6-1E87-5699-92FF-F55225320DF8"><p>The <codeph>CCounterFromHandle()</codeph> function
+returns the subsession object corresponding to a specified handle number. </p> </li>
+<li id="GUID-64A79B53-B798-50DA-B4F5-0DA5881F964E"><p>The <codeph>NewCounterL()</codeph> function
+creates a new subsession object. </p> </li>
+<li id="GUID-C9C9619D-EE0D-5B3F-B51C-354C9D7066D1"><p>The <codeph>DeleteCounter()</codeph> function
+deletes a subsession object. This is called when the client program requests
+to close a subsession. </p> </li>
+</ul> </section>
+<section id="GUID-CB7E6555-DE45-426A-B816-3736E72904FE"><title>Subsession object representation</title> <p>The <codeph>CCountSubSession</codeph> class
+which represents the subsession is defined as: </p> <codeblock id="GUID-A91DD957-4A51-58E1-B0A0-843DAF9FF483" xml:space="preserve">class CCountSubSession : public CObject
+    {
+public:
+      // creates a new CCountSubSession object.
+    static CCountSubSession* NewL(CCountSession* aSession);
+    
+public: 
+    CCountSubSession(CCountSession* aSession);    
+    void ConstructL(CCountSession* aSession);
+    void SetFromStringL(const RMessage2&amp; aMessage);
+    void Increase();
+    void IncreaseBy(const RMessage2&amp; aMessage);
+    void Decrease();
+    void DecreaseBy(const RMessage2&amp; aMessage);
+    void Reset();
+    void CounterValue(const RMessage2&amp; aMessage);
+   
+protected:
+      // The session that owns this CCountSubSession object.
+    CCountSession* iSession;
+    
+private:
+      // The counter value
+    TInt iCount;
+    };</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-04B1ACC9-AA68-56C7-B42A-DC7DAA0749B0"><p>The <codeph>NewL()</codeph> function
+creates and returns a new instance of the subsession object. This is called
+when the client requests the creation of a new subsession. </p> </li>
+<li id="GUID-8BF98800-E081-5120-914F-60AE09C1A70A"><p>The <i>message service
+functions</i> <codeph>Increase()</codeph>, <codeph>IncreaseBy()</codeph> etc.
+respond appropriately to client requests. </p> </li>
+</ul> </section>
+<section id="GUID-1031D378-90C7-42A4-B1E5-C8BA10145B86"><title>Implementing a subsession request</title> <p>Subsession requests
+are handled in a similar way to session requests. </p> <p>A subsession request
+is initially handled by the associated session, i.e. it is passed to the appropriate <codeph>CSession2::ServiceL()</codeph>. </p> <codeblock id="GUID-AE6EDE6F-54B2-56DC-A793-A6AE630A223A" xml:space="preserve">void CCountSession::ServiceL(const RMessage2&amp; aMessage)
+    {
+    TRAPD(err,DispatchMessageL(aMessage));
+    aMessage.Complete(err);
+    }
+</codeblock> <p>The appropriate service function is called via <codeph>DispatchMessageL()</codeph> and
+the asynchronous request is completed with <codeph>aMessage.Complete()</codeph>.
+This applies to messages targeted at sessions and subsessions. </p> <p><b>DispatchMessageL()</b> </p> <p>The following code fragment shows important parts of this function: </p> <codeblock id="GUID-EB719B38-AA2C-5C19-B7BE-2332BD853057" xml:space="preserve">void CCountSession::DispatchMessageL(const RMessage2&amp; aMessage)
+    {
+        // First check for session-relative requests
+    switch (aMessage.Function())
+        {
+    case ECountServCreateSubSession:// Request to create a subsession
+        NewCounterL(aMessage);
+        return;
+    case ECountServCloseSession:    // Request to delete a subsession
+        CloseSession();
+        return;
+        ...
+        }
+    ...
+ 
+                             // Must be a subsession request
+                             // Find out Which subsession and
+                             // forward the request to it.
+    CCountSubSession* counter=CounterFromHandle(aMessage,aMessage.Int3())
+    switch (aMessage.Function())
+        {
+        ...
+    case ECountServValue:
+        counter-&gt;CounterValue(aMessage);
+        return;
+    default:
+        PanicClient(EBadRequest);
+        return;
+        }
+    }</codeblock> <codeblock id="GUID-F0C7D2A2-FC3E-5CC0-A776-7D7B7047D758" xml:space="preserve">CCountSubSession* CCountSession::CounterFromHandle(const RMessage2&amp; aMessage,TInt aHandle)
+    {
+    CCountSubSession* counter = (CCountSubSession*)iCountersObjectIndex-&gt;At(aHandle);
+    if (counter == NULL)
+        {
+        PanicClient(aMessage, EBadSubsessionHandle); 
+        }
+    return counter;
+    }
+</codeblock> <p><b>Notes</b> </p> <ul>
+<li id="GUID-55B94E1E-C761-5D39-9EBF-9A2E600E26A3"><p>The function first checks
+for messages which are specific to a session and this includes those requests
+to create and delete a subsession. </p> </li>
+<li id="GUID-D65039AA-E45E-5CA6-8A25-E8F3680CDA72"><p>After deciding that
+messages must be forwarded to a subsession, the function uses the handle number
+supplied through the fourth parameter in the message argument array and the <codeph>CounterFromHandle()</codeph> function
+to retrieve the appropriate subsession object. </p> </li>
+<li id="GUID-54BC7669-BBA9-5134-857A-8F4060059EB7"><p>It then invokes the
+appropriate message service function on that subsession to deal with the client
+request. </p> </li>
+<li id="GUID-7CA3D0C0-E7DB-58FC-A89D-2584C25A7685"><p>The <codeph>At()</codeph> function
+is provided by the <codeph>CObject</codeph> base class. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B" xml:lang="en"><title>Animations</title><shortdesc>This section provides an introduction to the Animation API, which third-parties can use to create Window Server plug-in DLLs to perform animations. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody/><related-links><link href="GUID-DC5E8C7D-D697-53E8-87F4-344301430E61.dita"><linktext>Window Server Client-Side
+  Library</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C"><title>unpagedcode</title><prolog><metadata><keywords/></metadata></prolog><conbody><p> <codeph>unpagedcode</codeph>  </p> <p>Use the <codeph>unpagedcode</codeph> statement to specify that the executable is not code paged. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FB185094-9868-5CBB-9CDE-51D7AB029450.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FB185094-9868-5CBB-9CDE-51D7AB029450" xml:lang="en"><title>Creating
+Email Messages in Plain Text Format </title><shortdesc>This tutorial explain the steps to create email messages in plain
+text format.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Procedure</title> <ol id="GUID-0FD28B0A-8F8F-5CFC-862D-A152F8608F80">
+<li id="GUID-0762A353-D7CB-5657-881B-6729883117C3"><p>Create an email entry
+in the message store using the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-FCDC47D2-0446-3CD7-A246-4DCED7C8A063"><apiname>CImEmailOperation::CreateNewL()</apiname></xref> function,
+which takes all the following nine parameters: </p> <p><codeblock id="GUID-50D3FB68-EB6C-551D-B075-B24B84A71094" xml:space="preserve">static IMPORT_C CImEmailOperation *CreateNewL(TRequestStatus &amp;aObserverRequestStatus,
+CMsvSession &amp;aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId,
+TMsvPartList aPartList, const TMsvEmailTypeList &amp;aMsvEmailTypeList,
+TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);</codeblock> </p> </li>
+<li id="GUID-76F4DD60-16AB-52A4-9B62-C4B9EC8163EB"><p>Set the <xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> parameter
+to <codeph>ETrue</codeph>. </p> </li>
+<li id="GUID-8415BB5F-548F-50DD-A0D8-1AFDE6F143FB"><p>Use the <xref href="GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498.dita#GUID-3F7DC1AB-D13C-31E9-967B-526AD72CD498/GUID-38E7EABD-1300-3DF2-B9DF-B65EEABD8A31"><apiname>CImEmailOperation::ProgressL()</apiname></xref> method
+to obtain the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> parameter of the newly created email.
+This is returned through a <xref href="GUID-36B29964-420D-38D0-AF08-4DA70BED8B6E.dita"><apiname>TPckgC</apiname></xref> &lt;<xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref> &gt;
+descriptor. </p> </li>
+<li id="GUID-9AC68E88-CC88-57F7-A12B-736A6899B2E8"><p>Create a <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object
+using the <xref href="GUID-A4B1F874-27C0-3BB6-9D29-C35C75A5DB98.dita"><apiname>TMsvId</apiname></xref>  <codeph>aMessageId</codeph> parameter
+of the newly created email. </p> </li>
+<li id="GUID-6307128A-46A4-51F6-A62D-210746612D28"><p>Use the <xref href="GUID-85BBE389-81F7-3E2F-A789-446D9BE2CC49.dita"><apiname>CMsvEntry</apiname></xref> object
+to create a <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita"><apiname>CImEmailMessage</apiname></xref> object. </p> </li>
+<li id="GUID-6DD75AFF-D0C5-5C81-BC2C-0B7534695155"><p>Call the <xref href="GUID-323E701E-EA22-3CC8-AE84-C16880608D44.dita#GUID-323E701E-EA22-3CC8-AE84-C16880608D44/GUID-B99E759E-E0D6-3A10-B81C-5BFCAF631B7D"><apiname>CImEmailMessage::OpenPlainBodyTextForWriteL()</apiname></xref> function
+to get a new instance of <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita"><apiname>CImPlainBodyText</apiname></xref>. </p> </li>
+<li id="GUID-F9A64E3C-67D9-56B0-9BC6-E2A108D214BC"><p>If there are more than
+one chunk, use the <xref href="GUID-815658E6-192D-364E-8D5D-D4492B57EC5E.dita"><apiname>StoreChunkL()</apiname></xref> function repeatedly to
+store the body text in chunks. </p> </li>
+<li id="GUID-794562BA-D887-5C68-AE8A-625DF45F21C2"><p>When the message body
+text is completely stored, call the <xref href="GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D.dita#GUID-14EA98A8-06E7-33FF-B2B1-4BC3D044518D/GUID-022C7A37-91EF-3363-A760-865A1F980917"><apiname>CImPlainBodyText::CommitL()</apiname></xref> function
+to complete the email creation operation. </p> </li>
+</ol> </section>
+</conbody><related-links>
+<link href="GUID-2C8653F9-8873-59E8-9FD2-4215F6877ABC.dita"><linktext>Chunk Method
+to Process Emails</linktext></link>
+<link href="GUID-D73AD200-BE4D-50BF-BCF9-14627DE530B7.dita"><linktext>Imap4Example:
+An Email manager using IMAP4 and SMTP</linktext></link>
+<link href="GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita"><linktext>Pop3Example:
+An Email manager using POP3 and SMTP</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FB2CAA46-8EBB-5F76-847C-F3B953C9D31C"><title>Public Key Cryptography (PKC)</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Public Key (sometimes called asymmetric) Cryptography allows encrypted messages to be sent without the need to establish a shared secret key. It involves the use of two keys called a <keyword>key pair</keyword>: a <keyword>private</keyword> key and a <keyword>public</keyword> key. The private key is kept secret, and a public key is made publically available. </p> <p>All entities using such a system would typically possess a key pair. They will use these keys either for encryption or decryption. In any case, if one of the keys is used for encryption, then only the other key can be used for decryption. </p> <p>So, in Public Key Cryptography, to send a message in an encrypted form to a receiver, the sender: </p> <ul><li id="GUID-BB81D705-E8E5-5BCE-8597-F6CEEF150EE7"><p>Gets hold of the receiver's public key. </p> </li> <li id="GUID-8BABA1F6-5694-5570-AC10-DAEE81C48255"><p>Encrypts the message with the receiver's public key. </p> </li> <li id="GUID-723C746E-61AF-5CAB-8D7A-F4E286E5D96D"><p>Sends the encrypted message. </p> </li> </ul> <p>The receiver then decrypts the message using its private key. Only the receiver, who has access to the corresponding private key, can decrypt it. </p> <p>That is the basic process used for a pure PKC system. In the real world, however, Public Key Cryptography is typically used in conjunction with traditional symmetric key cryptography. This is done in order to reduce key management problems while at same time taking advantage of the superior speed of the latter. The method for doing this is called a <keyword>digital
+        envelope</keyword>: a random symmetric private secret key is generated, the message is encrypted with this secret key using a symmetric algorithm, and then the secret key is encrypted with the receiver's public key using an asymmetric algorithm. </p> <p>The other main use for Public Key Cryptography is in signing (digital signatures): </p> <p><xref href="GUID-5C58F7D1-D672-5B6D-AD48-863EC68F7446.dita">Digital Signatures</xref>  </p> <p>While Public Key Cryptography ensures that only the entity with access to the corresponding key will be able to read the message or could have signed a given message, it gives no assurance that this entity is/are actually the entity they claim to be. This is where certificates come in. Certificates are needed to solve the problem of authentication: </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FB2E1BFB-A06C-58D8-B175-1E7B10BCCB72.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FB2E1BFB-A06C-58D8-B175-1E7B10BCCB72" xml:lang="en"><title>DevVideo Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e154935_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e189756_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432"><title>Accessing an RTP packet</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This page describes what information about the data in an RTP packet can be accessed. It also describes various types of RTCP packets used to carry a variety of data/control information. </p> <p>The data to be sent to an application is preceded by the RTP header. The data and header are packed into an RTP packet. To send any additional information about the RTP packet, the <xref href="GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432.dita#GUID-FBA52F3B-0A7A-5FE3-82CD-72F88788D432/GUID-8D449F84-5512-5697-80FB-FFA63B16DB32">header extension</xref> is used. </p> <section><title>Fixed header</title> <p>An RTP packet's fixed header contains the following fields: </p> <ul><li id="GUID-719AA32D-6921-5AC7-B7EA-1FED9A2FB922"><p>Version: Represents the version of the RTP. </p> </li> <li id="GUID-097519AF-A150-571D-8538-94BD8203F9B0"><p>Padding: Used to round off the bits. If this bit is set, it means the packet contains one or more additional padding octets at the end which are not part of the payload. </p> </li> <li id="GUID-ADCEB6AE-6733-5B57-81A4-1BDCA21DB52D"><p>Extension: If this bit is set, then the fixed header must be followed by the header extension. </p> </li> <li id="GUID-B7E29E06-0B2A-537B-86DB-D32FE1C92A5C"><p>CSRC count: The number of CSRC (contributing sources) identifiers that follow the fixed header. </p> </li> <li id="GUID-BE615F1F-FCE3-5ADE-8745-76E0007AAF2D"><p>Marker: Allow significant events to be marked in a packet stream. </p> </li> <li id="GUID-893809CF-5028-5EA8-8113-F0FD168551F8"><p>Payload type: Identifies the format of the RTP payload and determines its interpretation by the application. </p> </li> <li id="GUID-587F14CB-7FE6-56A5-94BD-CEB22B1836F8"><p>Sequence number: Is a random number which is incremented by one for each RTP data packet sent. The packet receiver uses it to detect packet loss and to restore packet sequence. </p> </li> <li id="GUID-5A4668FF-3B1F-589A-B716-E9B39246207E"><p>Timestamp: reflects the sampling instant of the first octet in the RTP data packet. </p> </li> <li id="GUID-1D08EF82-62CC-50AE-ADA6-89E35DF96371"><p>SSRC: A random ID to identify the synchronization source. No two synchronization sources within an RTP session have the same SSRC identifier. </p> </li> <li id="GUID-663948AF-20F9-5F8B-B764-76C3A1F43AEB"><p>CSRC list: The list of CSRCs for the data contained in this packet. The number of identifiers is given by the CC field. </p> </li> </ul> <p>The format for a fixed header is depicted in the following code: </p> <codeblock id="GUID-6C653FC0-8B78-555C-AC9C-BA02999B8F00" xml:space="preserve">0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |       sequence number         |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                           timestamp                           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                     ....(data is put here)                    |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+</codeblock> <p> <codeph>RRtpPacket</codeph> class allows you to access and set the following fixed header fields for an RTP packet. </p> <ul><li id="GUID-7AEF82E5-E3EE-537F-B6A1-97AA0E774A1A"><p>Payload </p> </li> <li id="GUID-FD496541-064B-5893-B229-3B5D4BF0D9D5"><p>Sequence Number </p> </li> <li id="GUID-34619311-ED4B-56F8-ADA3-8FA09B99DD5C"><p>Time stamp </p> </li> <li id="GUID-4DA2A1BC-32C1-53C1-922E-A9F38DE4D6EA"><p>SSRC </p> </li> <li id="GUID-7CE6849B-2DC7-5B54-98D3-D319EC29F354"><p>CSRCs </p> </li> <li id="GUID-2EB309DB-3996-5B0E-A91A-23F96B4AC8F5"><p>Header Extension </p> </li> <li id="GUID-C7332FFE-1662-5F54-9ACD-7E61F430F943"><p>Payload Type </p> </li> <li id="GUID-A24EEA18-A3E4-5E08-A9B3-9B7AAB72A5D8"><p>Marker </p> </li> </ul> <p>You can get the preceding RTP packet information if a call to <codeph>IsOpen()</codeph> returns <codeph>ETrue</codeph>. </p> </section> <section id="GUID-8D449F84-5512-5697-80FB-FFA63B16DB32"><title>Header extension</title> <p>To allow additional information to be carried in an RTP data header, an extension mechanism is provided. The header format would look like the following: </p> <codeblock id="GUID-03E0AEB9-C681-508F-BEBC-E47105DE22B0" xml:space="preserve">    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |      defined by profile       |           length              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                        header extension                       |
+   |                             ....                              |
+</codeblock> <p> <codeph>RRtpHeaderExtension</codeph> class allows you to set the header extension type. You can retrieve the extension type and a pointer descriptor representing the header extension data. </p> </section> <section id="GUID-352B33B6-D02B-5ECB-B154-6CB06C21A377"><title>Types of RTCP packets</title> <p>The different types of RTCP packets are used to carry different data or control information. They are described as follows: </p> <ol id="GUID-B17BBF80-0106-5829-8598-9D21E6F428C9"><li id="GUID-0071C9CC-F290-52F6-9DC3-A0EAA20C3C8B"><p>Receiver Report Packet: For reception statistics from senders who are not active, in combination with Send Report for active senders. </p> </li> <li id="GUID-AF2C44DD-3776-5E85-9E20-5E0FB765C5F7"><p>Sender Report packet: For transmission and reception statistics from active senders. </p> </li> <li id="GUID-2C63BB0C-D0D2-55A9-896E-B5EEC87E3D34"><p>SDES (Source Description) packet: For sending source description items such as CNAME, NAME, EMAIL, PHONE and so on. </p> </li> <li id="GUID-BB7A9D18-78E3-5512-B25A-3CBA10A586C6"><p>Bye packet: For indicating the end of participation. </p> </li> <li id="GUID-4DA8D037-1FF8-5197-A691-CB3157906ED4"><p>APP packet: For sending the application specific data. </p> </li> </ol> </section> <section><title>Contributed sources</title> <p>A Contributed sources (CSRC) is a source of a stream of RTP packets that has contributed to the combined stream produced by an RTP mixer. The mixer inserts a list of the SSRC identifiers of the sources that contributed to the generation of a specific packet into the RTP header. This list is called the CSRC list. </p> <p>For example, in an audio conferencing a mixer indicates all the speakers whose speech is combined to produce the outgoing packet. This allows the receiver to indicate the current speaker, even though all the audio packets contain the same SSRC identifier of that of the mixer. </p> <p> <codeph>RRtpCSRCs</codeph> allows you to retrieve the number of CSRCs in a given RTP packet. Get a specific CSRC using <codeph>Count()</codeph> and index <codeph>operator[]</codeph> respectively. </p> <codeblock id="GUID-5FF99E4D-E034-5A98-A067-440EF631580C" xml:space="preserve">TUint operator[](TUInt aIndex) const;</codeblock> <p>Specify the index value. 0 indicates the first CSRC. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253" xml:lang="en"><title>IPv4/IPv6
+dual-stack</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The IP protocol is responsible for routing the data between networks
+and it employs an addressing system to achieve this. The Internet protocol
+version 4 (IPv4) has a number of security problems and lacks privacy and authentication
+mechanisms below the application layer. IPv6 provided numerous security enhancements,
+such as mandatory implementation of Authentication Header and Encapsulated
+Security Payload.</p>
+<p><i>IPv4/IPv6 dual-stack</i> enables applications to choose the protocol
+to use or automatically select it according to address type. This feature
+is supported from Symbian OS v7.0s onwards.</p>
+<fig id="GUID-E46DA5BE-AB7E-40C6-9A75-1BB7E9D21034"><title>IPv4/IPv6 dual-protocol stack</title><image href="GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e7676_href.png"/></fig>
+<p>It is possible to establish a secure connection from application to
+application and also from router to router. Security features implemented
+in low-level protocols (like IPv6) are automatically available to higher-level
+protocols and applications.</p>
+<p>For more information, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Networking-subsystem-guide/index.html" format="application/java-archive">Networking</xref>.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e62848_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505-master.jpg has changed
Binary file Symbian3/SDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e304106_href.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FBCBF8A0-7922-5881-A1C5-5DB41630E75A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FBCBF8A0-7922-5881-A1C5-5DB41630E75A" xml:lang="en"><title>Persistent Data Services
+Guide</title><shortdesc>Provides services to enable and support persistence. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FBE448A4-4728-5EE5-84F2-4790735857B3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FBE448A4-4728-5EE5-84F2-4790735857B3" xml:lang="en"><title>Basic
+Types Overview</title><shortdesc>This document is an overview of the basic types.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-2307C342-3787-4B91-A57E-D5E1A65A48D4"><title>Purpose</title> <p>Provides implementation-independent versions
+of the C++ built-in types, defines the Symbian platform standard base class
+for all heap-allocated classes, and provides some useful yet simple global
+functions.</p> <p>You should avoid using the C++ built-in types directly:
+always use the Symbian platform types instead.</p> </section>
+<section id="GUID-CB087D7D-6963-40C0-809A-AB75B656C39E"><title>Description</title> <p>The API defines classes and typedefs
+for integer, text, Boolean, and floating point types. Additionally, a utility
+class to help with reference arguments in variable argument functions is provided.</p> <p><b>Heap-allocated classes base</b> </p> <p>Symbian platform requires that
+all classes that own dynamically allocated resources derive from a standard
+base class, <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref>. Such classes by conventions have a C
+prefix to their name, and so are referred to as C classes. C classes, and
+their associated allocation and cleanup idioms, are fundamental to Symbian
+platform. </p> <p><b>Integral
+types</b> </p> <p><xref href="GUID-7A2A43EC-6125-3BFE-834B-23C37F7B40D5.dita"><apiname>TInt</apiname></xref> is the natural machine word integer
+and should be used in all general contexts where integer arithmetic is desired.</p> <p><xref href="GUID-49ACAE7B-1FE4-3BA6-8772-F104D3F01E41.dita"><apiname>TInt32</apiname></xref>, <xref href="GUID-6BE0B3FC-2B36-3982-AA51-971F3354925E.dita"><apiname>TInt16</apiname></xref> and <xref href="GUID-F2669E84-D47E-3C83-A549-D77A883787CC.dita"><apiname>TInt8</apiname></xref> map onto C++ built-in types in most implementations. These
+types should only be used where the size of the integer is of first importance.</p> <p><xref href="GUID-F9432D7B-41C9-3048-AC50-B5BCF8BE11D0.dita"><apiname>TUint</apiname></xref> is
+an unsigned integer of the natural machine word size. It should be used for
+flag and handle words, which are manipulated using bitwise and equality-comparison
+operations rather than arithmetic. </p> <p><xref href="GUID-F58A1C0D-1B36-37EA-8012-1C74B2D12CAD.dita"><apiname>TUint32</apiname></xref>, <xref href="GUID-4BB532F8-938E-37C7-9D40-6010EB716E7A.dita"><apiname>TUint16</apiname></xref> and <xref href="GUID-F894527F-13A6-3E6D-BA7B-187812CDF20E.dita"><apiname>TUint8</apiname></xref> are
+available where the specific representation width is important.</p> <p><b>Text types</b> </p> <p><xref href="GUID-317497AE-D70D-3FD5-9865-6446FF4AD035.dita"><apiname>TText</apiname></xref> represents a character
+in the natural width for the Symbian platform build. From v5.1 onwards, this
+is 16 bits.</p> <p><xref href="GUID-0DC8E9A8-8B5A-3566-B1C5-27B6E4F47F3C.dita"><apiname>TText8</apiname></xref> is available for build-independent
+8-bit characters, and <xref href="GUID-9A863E0A-E588-367C-9444-C13AC0D44234.dita"><apiname>TText16</apiname></xref> for build-independent 16-bit
+characters. </p> <p>The <xref href="GUID-CDCFA2A5-EA8A-3B39-B90F-77AC41571E2D.dita"><apiname>TChar</apiname></xref> class wraps a character value
+and provides a number of utility functions to operate upon it.</p> <p><b>Boolean type</b> </p> <p><xref href="GUID-4B942C06-1BAC-3A21-B3B1-89FB5C51ADA0.dita"><apiname>TBool</apiname></xref> represents a Boolean
+whose value may be true or false. It is implemented as a natural machine-word
+integer.</p> <p><b>Floating-point
+types</b> </p> <p><xref href="GUID-2D851BBB-15A1-309A-813D-E397D55A6431.dita"><apiname>TReal</apiname></xref> is a 64-bit double-precision type,
+used as the argument type for all math functions, and the default type of
+floating-point literals.</p> <p><xref href="GUID-E694921E-0449-3B0B-81DC-5A9FCC07B345.dita"><apiname>TReal64</apiname></xref> and <xref href="GUID-58CA4B68-0A0F-31E2-A624-0F78F47EE458.dita"><apiname>TReal32</apiname></xref> are
+available when the precise size is important.</p> <p><b>Value reference type</b> </p> <p>The value reference type is a utility
+that is provided to overcome problems with specifying a C++ reference argument
+before the ellipsis argument in variable argument functions.</p> <p>The value
+reference type is provided by <xref href="GUID-5391E485-A019-358F-85D2-3B55BA439BD1.dita"><apiname>TRefByValue</apiname></xref> &lt;T&gt;.</p> <p><b>Global functions</b> </p> <p><xref href="GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita">Max()</xref>, <xref href="GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita">Min()</xref>, <xref href="GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita">Rng()</xref> and <xref href="GUID-B22DC2FB-FA5C-5F62-8F01-A975EAA24E7F.dita">Abs()</xref> are simple global
+functions that are useful in many contexts.</p> </section>
+<section id="GUID-93D4AD68-48DE-4FB1-A0E9-F8DB1487DFD8"><title>See also</title> <p><xref href="GUID-07A31FD0-304A-57CA-8FFE-4DAD8EE9B30F.dita">Maths
+Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC043A7B-8990-52C8-85F5-10FF1B8EA36D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FC043A7B-8990-52C8-85F5-10FF1B8EA36D" xml:lang="en"><title>How to
+implement a polymorphic interface DLL</title><shortdesc>The following code fragments show a simple implementation of a
+polymorphic interface DLL.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p> The DLL being implemented is the one whose <xref href="GUID-6D6DFC3A-8940-531A-A319-922317D19B51.dita">interface</xref> is
+defined by the <codeph>CMessenger</codeph> class.</p>
+<p>This example implementation issues a greeting in French.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e315048_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC24C65C-0DCB-5E07-9A68-9001D34664DD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FC24C65C-0DCB-5E07-9A68-9001D34664DD"><title>OR_LEAVE MACRO</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The <xref href="GUID-7EB97E3A-90F5-3536-B7AC-F6F55023E2F3.dita"><apiname>OR_LEAVE</apiname></xref> macro is a convenient macro that allows the application developer to de-emphasize auxiliary error checking code in most cases. It is a postfix macro which implements <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-80E99D34-F4A1-36EA-AD64-E14ACAEC99B0"><apiname>User::LeaveIfError</apiname></xref> on an integer return type. This means that there is less focus on the error handling code and makes the code easier to read. </p> <section><title>Need for OR_Leave Macro</title> <p>Motive behind using a <xref href="GUID-7EB97E3A-90F5-3536-B7AC-F6F55023E2F3.dita"><apiname>OR_LEAVE</apiname></xref> macro is that it should not return an integer value. It is intended for use as a postfix macro at the end of a statement. If OR_LEAVE was to return an integer value, it would encourage its use in the middle of expressions negating its intended purpose which is to reduce the focus on error checking code. </p> </section> <example><title>Defining OR_Leave Macro</title> <p>The OR_LEAVE macro is defined as a postfix operator as shown below: </p> <codeblock id="GUID-DDB19E73-7D96-5D06-8EF9-AEC1248E8644" xml:space="preserve">
+        #define OR_LEAVE || ELeave
+        inline void operator||(TInt aStatus, TLeave /*aTag*/)
+            {
+            User::LeaveIfError(aStatus);
+            }
+</codeblock> </example> <section><title>See Also</title> <p><xref href="GUID-B007634D-4D55-528A-8B85-6120C633AC8B.dita">EUser High Level Library Overview</xref>  </p> <p><xref href="GUID-D33EB877-CCCB-527B-8AFC-4A8385C55E78.dita">EUser High Level Library Tutorials</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FC2F5CDE-D140-5893-894D-D9B93AF6BDC2" xml:lang="en"><title>Using Uikon</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC46AA09-3E04-426B-BAC0-A992EA1AE0B6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FC46AA09-3E04-426B-BAC0-A992EA1AE0B6" xml:lang="en"><title>Write
+a conversion observer</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>Converter clients can supply a converter observer object
+by implementing the <codeph>MConverterUiObserver</codeph> interface. The object
+is passed to the converter's <codeph>CConverterBase2::ConvertL()</codeph>, <codeph>CConverterBase2::ConvertObjectL()</codeph>, <codeph>CConverterBase2::ConvertAL()</codeph> or <codeph>CConverterBase2::ConvertObjectAL()</codeph> function. It is used
+for reporting on the progress of multi-step conversions and for requesting
+a password from the client when the file being converted from is password-protected.</p><p>The
+following functions can be implemented:</p><ul>
+<li><p><codeph>virtual void MaxSteps(TInt aMax, TInt aObject)=0;</codeph> to
+get the maximum number of steps that the conversion operation can take. </p></li>
+<li><p><codeph>virtual TInt Result(TInt aResult, TInt aObject)=0;</codeph> to
+take some action following an error in the conversion.</p></li>
+<li><p><codeph>virtual HBufC* QueryPasswordL(const TDesC&amp; aClue)=0;</codeph> to
+request a password from the user in order to access the data.</p></li>
+</ul></context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC639517-F138-5E84-B57A-6347F5A47B88.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FC639517-F138-5E84-B57A-6347F5A47B88"><title>Names and fullnames</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A reference counting object can be identified by a <i>name</i>. A name consists of a string of characters whose length must not be greater than <xref href="GUID-81C4F0D1-1D0A-3F43-8980-45B5343CAB9B.dita"><apiname>KMaxName</apiname></xref>, a symbol defined in e32std.h. </p> <p>A name can contain any character except: *, ? and :, i.e. the characters asterisk, question mark and single colon. The system static function <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-F3DA1084-412D-3EB7-AA1A-5B743FC93A93"><apiname>User::ValidateName()</apiname></xref> is available to do this. </p> <p>A reference counting object can also be identified by its <i>full name</i>. This is descriptive of the reference counting object's ownership hierarchy, i.e. it is a name that identifies the reference counting object in the context of its owning reference counting object. </p> <p>The full name is a concatenation of: </p> <ul><li id="GUID-96BE031B-69EA-59F8-A983-65F1AA1E3FCF"><p>the <i>name</i> of the owning reference counting object, </p> </li> <li id="GUID-A5AD0140-0048-5325-873C-9A759F918C18"><p>a double colon <i>::</i> , </p> </li> <li id="GUID-EE78A739-423C-55BA-8257-48A1F226494E"><p>the name of the reference counting object. </p> </li> </ul> <p>For example, given the three <xref href="GUID-9230EF62-376A-389C-B720-7C1EDCB7EA97.dita"><apiname>CObject</apiname></xref> derived objects: <codeph>x</codeph>, <codeph>y</codeph> and <codeph>z</codeph> with names: <codeph>one</codeph>, <codeph>two</codeph> and <codeph>three</codeph> respectively, where <codeph>x</codeph> is owned by <codeph>y</codeph> and <codeph>y</codeph>, in turn, is owned by <codeph>z</codeph>: </p> <codeblock id="GUID-93857905-683A-5AA3-B36A-12BA87401A8E" xml:space="preserve">_LIT(KTxtOne,"one");
+_LIT(KTxtTwo,"two");
+_LIT(KTxtThree,"three");
+
+class CSomeClass : public CObject
+    {
+    ...
+    };
+
+...
+CSomeClass* x;
+CSomeClass* y;
+CSomeClass* z;
+...
+x = new(ELeave) CSomeClass;
+y = new(ELeave) CSomeClass;
+z = new(ELeave) CSomeClass;
+...
+x-&gt;SetName(KTxtOne);
+y-&gt;SetName(KTxtTwo);
+z-&gt;SetName(KTxtThree);
+...
+x-&gt;SetOwner(y);
+y-&gt;SetOwner(z);
+...
+</codeblock> <ul><li id="GUID-AC8EAFEF-8F16-5074-B518-E3880F2851B3"><p>the full name of <codeph>x</codeph> is, <codeph>three::two::one</codeph>. </p> </li> <li id="GUID-09BAC1B3-E6B8-59F6-868E-F6D5DE11450C"><p>the full name of <codeph>y</codeph> is, <codeph>three::two</codeph>. </p> </li> <li id="GUID-D4AC3B84-53C8-5716-8CB7-6901100DE1D0"><p>the full name of <codeph>z</codeph> is <codeph>three</codeph>, the same as its name. </p> </li> </ul> <p>Names give reference counting objects an identity and are used when searching for a specific object or a group of related objects. </p> <p>See also: </p> <ul><li id="GUID-F24D4B6F-B263-5745-98B1-0DFB19C11819"><p> <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-F3DA1084-412D-3EB7-AA1A-5B743FC93A93"><apiname>User::ValidateName()</apiname></xref>  </p> </li> <li id="GUID-ACBFD5F0-10EB-5010-A1CA-8F9CDAE31231"><p> <xref href="GUID-8EC6F10D-25D3-33BD-9B6F-53A96BFBF788.dita"><apiname>TFindHandleBase</apiname></xref>  </p> </li> </ul> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FC63E2D1-697C-4890-9B70-0DC0AAE7597C" xml:lang="en"><title>Switching
+views in traditional architecture</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>If the application contains multiple views and they need to be switched,
+it can be done in various ways. One of the common ways is to delete the current
+view, create a new view, and add the new one to the control stack. Here, <parmname>CMyAppUi</parmname> has
+a custom method to change a view. Often a more generic approach should be
+favored, but for simplicity the basic idea could be as follows:</p>
+<codeblock id="GUID-CEEB1B52-944E-4C2D-A9A9-AB1D55559234" xml:space="preserve">void CMyAppUi::ChangeToView2L()
+    {
+    CCoeControl* newView = CMyAppView2::NewL(ClientRect());
+    if(iCurrentView)
+        {
+        RemoveFromStack(iCurrentView);
+        delete iCurrentView;
+        }
+    iCurrentView = newView;
+    AddToStackL(iCurrentView);
+    }
+</codeblock>
+<p>Although this architecture provides the most flexible way of manipulating
+different views, the <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">view
+architecture</xref> should be considered. Among other things, it provides
+a ready framework for doing the essentials in view switching.</p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC735256-6CB5-5EED-8E7D-42EFA039E6FD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FC735256-6CB5-5EED-8E7D-42EFA039E6FD" xml:lang="en"><title>ViewFinder Library</title><prolog><metadata><keywords/></metadata></prolog><conbody/></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC7F8CFE-F9AD-4442-9289-CCEFEC62DF68.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FC7F8CFE-F9AD-4442-9289-CCEFEC62DF68" xml:lang="en"><title>Start
+receiving notification</title><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context>       <p>You must have implemented and set the appropriate observers
+to receive notification. </p> <p>Use <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::StartAveragePowerReporting()</apiname></xref> to
+start battery voltage and battery consumption measurements. </p> <p>The following
+code snippet demonstrates how to start battery voltage measurements: </p> <codeblock id="GUID-36804159-E282-5E5C-9EE2-73959BC41F43" xml:space="preserve">
+TRequestStatus newstatus;
+TIntervalMultiple intmul;
+
+iPower-&gt;StartAveragePowerReporting( newstatus, intmul );
+...
+</codeblock> <p>Use <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::NotifyAverageChargingCurrent()</apiname></xref> to
+start receiving charging current information and <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>CHWRMPower::NotifyBatteryFullChargingTime()</apiname></xref> to
+receive battery charging time information. </p> <p>The following code snippet
+demonstrates how to receive battery charging status notification: </p> <codeblock id="GUID-6DCA3FFC-04FE-53A1-BDA2-EF57B04D8A17" xml:space="preserve">// Start receiving charging notification 
+TRequestStaus status;
+iPower-&gt;NotifyAverageChargingCurrent( status, EFourTimesBaseTimeInterval );
+User::WaitForRequest( status );
+</codeblock> <p> <b>Notes:</b> Charging status notification is started automatically
+when <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>SetBatteryChargingObserver</apiname></xref> is
+called with a <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>MHWRMBatteryChargingStatusObserver</apiname></xref> specified. </p> <p>When
+the charging status changes to <xref href="GUID-4A98138C-4C68-3399-80E8-25CB41E43D5C.dita"><apiname>EChargingStatusChargingComplete</apiname></xref> charging
+status notification is automatically disabled. </p> <p>The following code
+snippet demonstrates how to get average charging current and remaining charging
+time notification: </p> <codeblock id="GUID-27456CE4-5C58-5608-BE47-C3050D7E32E5" xml:space="preserve">// Register only for charging current
+iPower-&gt;SetBatteryChargingObserver( NULL, notifier, NULL );
+
+// Start receiving notification now-on
+TRequestStaus status;
+iPower-&gt;NotifyAverageChargingCurrent( status, 4 );
+User::WaitForRequest( status );
+...
+
+// Register only for remaining charging time notification
+iPower-&gt;SetBatteryChargingObserver( NULL, NULL, notifier );
+
+// Start receiving notification now-on
+TRequestStaus status;
+iPower-&gt;NotifyBatteryFullChargingTime( status, 4 );
+User::WaitForRequest( status );
+...</codeblock>     </context>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E" xml:lang="en"><title>Getting
+Equivalent and Nearest Equivalent Languages </title><shortdesc>This section describes how to call functions of <apiname>BaflUtils</apiname> to
+get an equivalent language list and a nearest equivalent language. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<prereq><p>This tutorial assumes that you have an understanding of the following
+topics: </p> <ul>
+<li id="GUID-3AECC912-FD5E-5837-BB83-763A6536DA73"><p><xref href="GUID-10A50B7C-63DB-599B-86C1-17989595CBD2.dita">Equivalent
+Language Reference</xref> explains the equivalent language table, including
+the equivalent language list and its priority. </p> </li>
+<li id="GUID-BA05E8FE-F6CB-51CE-BA16-39D95631F533"><p><xref href="GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE.dita">About
+Application Resources</xref> describes the purpose of resource files. </p> </li>
+<li id="GUID-17BB5D28-C2F7-5B8F-A2AE-36CE1ED04B42"><p><xref href="GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita">How
+to Localize Resources</xref> describes language-neutral and language-dependent
+resource files. </p> </li>
+</ul> </prereq>
+<context><p> <xref href="GUID-5F9CAA3E-D8BF-3488-9797-3B9FB4452930.dita"><apiname>BaflUtils</apiname></xref> provides the following two static
+functions to get the equivalent language list and a nearest equivalent language: </p> <ul>
+<li id="GUID-42B035C0-34C1-585E-8195-B317C694018C"><codeblock id="GUID-0686FF33-BE2D-597C-8CC7-422AE32F1554" xml:space="preserve">GetEquivalentLanguageList(TLanguage aLang, TLanguagePath&amp; aEquivalents)</codeblock> <p>For a given language (<xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref>), it returns an array
+(<xref href="GUID-2533E3D6-D0D8-3638-847D-C5DED07557BD.dita"><apiname>TLanguagePath</apiname></xref>) which contains the equivalent languages.
+If no equivalent language is found, <codeph>ELangNone</codeph> is returned. </p> </li>
+<li id="GUID-B2CBF4AA-9F96-59E7-BBD1-C069FEF0EACD"><codeblock id="GUID-6C39809C-E824-52B1-8E87-6EE36F333E4D" xml:space="preserve">NearestLanguageFileV2(const RFs&amp; aFs,TFileName&amp; aName, TLanguage&amp; aLanguage)</codeblock> <p>A <xref href="GUID-698538DF-DCDC-347B-BD32-DD9EB896BAFB.dita"><apiname>TLanguage</apiname></xref> value is used at the end of a resource
+file name to identify a resource file for a language. For example, <filepath>filename.r01</filepath> and <filepath>filename.r02</filepath> are
+the English and French versions of the <filepath>filename.rsc</filepath> resource
+file. </p> <p>An application calls <codeph>BaflUtils::NearestLanguageFileV2()</codeph> to
+determine which localized resource file is the closest to the current system
+language. The function searches the following drives in the given sequence
+for the available resource files, which have the same file name (without extension)
+as <codeph>aName</codeph>. Once the resource files are searched on a drive,
+the function stops searching on the next drive. </p> <ul>
+<li id="GUID-8BD6E006-7369-559A-AD7E-7192E7F2C400"><p>The custom resource
+drive if it is set using the <codeph>HAL::ECustomResourceDrive</codeph> attribute
+or the legacy <codeph>HAL::ESystemDrive</codeph> attribute. </p> </li>
+<li id="GUID-E361606A-6E26-5E25-9C0E-429047947BB4"><p>The optional drive if
+it is specified in the <codeph>aName</codeph> parameter. </p> </li>
+<li id="GUID-D905BA6F-72BE-535E-8225-0018F08E4EAB"><p> <filepath>Z:</filepath> drive
+if the optional drive is not set in the <codeph>aName</codeph> parameter. </p> </li>
+</ul> <p>The current system language is then taken as a given language. All
+the available resource file names are prioritized according to the <xref href="GUID-10A50B7C-63DB-599B-86C1-17989595CBD2.dita">equivalent
+language list</xref>. The resource file name with the highest priority is
+returned. </p> </li>
+</ul> </context>
+<steps-unordered>
+<step id="GUID-66A7C747-5484-4BAE-9FCD-A6ECF136DF0F"><cmd><xref href="GUID-A6A6BC5B-4988-45B4-863D-0E3733B77EA2.dita">Getting
+an Equivalent Language List</xref></cmd>
+</step>
+<step id="GUID-A1A4F1ED-DD97-4386-81EB-D41033DA1725"><cmd><xref href="GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita">Getting
+a Nearest Equivalent Language</xref></cmd>
+</step>
+</steps-unordered>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FCBEE38E-FA6D-5C09-8B17-F18EF3E2E826.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FCBEE38E-FA6D-5C09-8B17-F18EF3E2E826"><title>Columns, column sets and keys</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A database contains a collection of <keyword>tables</keyword>. A table contains a set of <keyword>rows</keyword>. A row contains a set of <keyword>columns</keyword>. Every row in a table conforms to a structure described by the table's <keyword>column set</keyword>. Each column has attributes such as a name, a type, a maximum length, etc. Column types include every type of integer, real, date-time and text supported by Symbian OS. In addition, a long binary column (sometimes known as BLOBs) may be written using the <keyword>stream</keyword> interface, allowing stream-aware components to use a database column for persistence. </p> <p>Auto-increment columns support automatic key or id generation. Column names within a single table must be unique, and follow the rules for DBMS names. A column definition is encapsulated by the <codeph>TDbCol</codeph> class, and the set of columns which describes the table in the <codeph>CDbColSet</codeph> class.</p> <p>Every <keyword>index</keyword> in a database is defined by its <keyword>key</keyword>, represented by the <codeph>CDbKey</codeph> class. Tables can index certain columns to sort their rows into a particular order, or provide fast key-based access to their rows. A key has attributes such as being unique or primary, a comparison specification for text columns, and a list of columns which make up the key, the <codeph>TDbKeyCol</codeph> class.</p> <p>See also:</p> <ul><li id="GUID-E72E42DB-EA6F-5021-BC8A-36C905ADDAC9"><p><xref href="GUID-8579426F-C443-558B-9380-FED79D4BA8F4.dita">Rules for DBMS names</xref> </p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e286618_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FCCE497D-1DA8-544B-A973-831E97DB5569.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FCCE497D-1DA8-544B-A973-831E97DB5569"><title> Monitoring Dial-up connection stages: Tutorial</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how an application can monitor the stages of a dial-up connection. </p> <p>This tutorial has two parts. The first part describes how the application can ask for the current state of a dial-up connection. The second part describes how the application can be notified of changes in the state of a dial-up connection. </p> <section><title>How to ask for the current state of a dial-up
+          connection</title> <p>To ask for the current state of a dial-up connection, an application calls the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-E2FAF324-3011-35ED-B31E-57E4F5CDE46A"><apiname>RConnection::Progress()</apiname></xref> function passing in a <codeph>TNifProgress</codeph> object. On return, the <codeph>iStage</codeph> data member of the <codeph>TNifProgress</codeph> object contains the information that defines the current state of the connection. </p> </section> <section><title>How to be notified of changes in the state of a dial-up
+          connection</title> <p>The request that the application makes is an <keyword>asynchronous request</keyword>. An asynchronous request is not guaranteed to complete at the time of the return of the function call. </p> <p>To make the request, an application calls the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-96DC395D-B5EE-3F26-8EFC-52E7AF64ED93"><apiname>RConnection::ProgressNotification()</apiname></xref> function. </p> <p>The function takes a <codeph>TRequestStatus</codeph> object, as is the model with asynchronous requests, and the <xref href="GUID-D8F0728B-D4D7-36C3-A858-0D5155841C46.dita"><apiname>TNifProgressBuf</apiname></xref> package buffer which packages a <codeph>TNifProgress</codeph> object. </p> <p>When the request completes, the <codeph>iStage</codeph> data member of the <codeph>TNifProgress</codeph> object contains the information defining the current state of the connection. </p> <p>An outstanding request for notification can be cancelled using the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita#GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD/GUID-6D2335FD-EDA1-3C60-AA9C-E7BADA0FA5B1"><apiname>RConnection::CancelProgressNotification()</apiname></xref> <codeph/>member function of <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> <p>We recommend that an application package this functionality as an active object. </p> </section> <section><title>Historical Note</title> <p>Prior to Symbian OS v7.0S, the <codeph>Progress()</codeph>, <codeph>ProgressNotification()</codeph> and <codeph>CancelProgressNotification()</codeph> member functions of <codeph>RNif</codeph> were called instead of the <codeph>Progress()</codeph>, <codeph>ProgressNotification()</codeph> and <codeph>CancelProgressNotification()</codeph> member functions of <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>. </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FCE138BF-A471-5864-AE4C-8D89EF5F2BB9.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FCE138BF-A471-5864-AE4C-8D89EF5F2BB9" xml:lang="en"><title>Symbian
+Emulator target using Metrowerks CodeWarrior</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This page describes how to build for the Symbian emulator using the Metrowerks
+CodeWarrior compiler. The Symbian emulator is also known as the WINSCW build
+target. </p>
+<section><title>Building from the command line</title> <p>To build for WINSCW,
+with <filepath>abld</filepath> use: </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld
+build winscw [udeb | urel]</userinput> </p> <p>Binaries are generated in the <filepath>udeb</filepath> and/or <filepath>urel</filepath> sub-directories
+of the <filepath>epoc32\release\winscw\</filepath> directory. </p> </section>
+<section><title>Building from the CodeWarrior IDE</title> <p>You can build
+applications for a WINSCW Symbian emulator using the CodeWarrior compiler
+from the CodeWarrior IDE. You can also build for ARM targets from the IDE:
+this invokes the native toolchain, rather than CodeWarrior's own compiler. </p> <p>The
+simplest way to use CodeWarrior, is, after defining a <filepath>bld.inf</filepath> file
+and a <filepath>.mmp</filepath> file, choose the <systemoutput>File      
+    | Import project from .mmp file</systemoutput> command. CodeWarrior then
+reads the <filepath>.mmp</filepath> file that you select, and generates and
+opens a CodeWarrior project. You can then use the normal CodeWarrior commands
+to run, build, and debug the project. </p> <p>If later you change the <filepath>.mmp</filepath> file,
+you can use the same commands to regenerate the IDE workspace. Changes you
+make to the project made through the IDE, such as adding a source file, are
+not automatically written to the <filepath>.mmp</filepath> file, but it is
+good practice to manually keep the <filepath>.mmp</filepath> file up to date
+with any changes made. </p> <p>The IDE project files have special build steps
+which invoke the resource compiler, so for projects that use resources, this
+does not need to be run separately. </p><p><b>Alternative method </b> </p> <p>A
+slightly longer method is available that creates a CodeWarrior IDE project
+from the command line. To do this, run <codeph>bldmake bldfiles</codeph> as
+described, and then, to generate a CodeWarrior IDE project, use: </p> <p><userinput>abld
+makefile CW_IDE</userinput> </p> <p>This creates an importable project file <varname>project-name</varname> <filepath>.xml</filepath> in
+the directory <filepath>&lt;path&gt;\epoc32\build\</filepath> <varname>absolute_path_to_mmp_file</varname> <filepath>\</filepath> <varname>mmp_basename</varname> <filepath>\winscw\</filepath>. </p> <p>You can now tell CodeWarrior to read
+this file and from it generate a project file of its own native type (an <filepath>.mcp</filepath> file).
+Start CodeWarrior, choose the <systemoutput>File | Import Project...</systemoutput> command,
+select the <filepath>HelloWorld.xml</filepath> file, and choose a name for
+the CodeWarrior project (such as <filepath>HelloWorld</filepath> again). CodeWarrior
+will now generate and load the project, which you can build, run, debug, etc.
+using the normal IDE commands. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E" xml:lang="en"><title>Front
+End Processor Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-4DBE2888-BC56-417E-B12F-520A9AFF5CBE"><title>Purpose</title> <p>Front End Processors, or FEPs, enable users
+to input characters that are not on the device keyboard. For most phones a
+FEP is essential for entering anything anything other than numbers. Typically
+FEPs are used for processing multi-tap keypad input, predictive text, handwriting
+recognition, voice recognition and character selection. </p> </section>
+<section id="GUID-CB4AD573-8695-4BE0-A40D-DCB813AD313C"><title>Architectural relationships</title> <p>FEPs are ECOM plugins
+that implement the FEP interface. They typically use the UI Control Framework
+to intercept key and pointer events which are processed as necessary and the
+output sent to the current application. Applications do not need to be aware
+that a FEP is present. </p> <p>Note that until the introduction of <xref href="GUID-4BFEDD79-9502-526A-BA7B-97550A6F0601.dita">Platform
+Security</xref> FEPs were implemented as polymorphic DLLs. Significantly,
+under Platsec, FEPs require a capability of <b>All - Tcb</b> as they may be
+loaded by any application. </p> </section>
+<section id="GUID-DDA8FA60-B059-45ED-98FE-BA0C274BFC36"><title>Description</title> <p>The API has five key concepts: FEP
+base, control input capability, FEP-aware text editor, foreground observer
+and focus observer. </p> <p><b>FEP Base</b> </p> <p>The FEP
+base, <xref href="GUID-ADAA039A-7BF3-3B06-8486-2E3604C2633D.dita"><apiname>CCoeFep</apiname></xref>, is the abstract base class from which a
+FEP is derived. A FEP is typically implemented to have a window owning control,
+the standard Symbian OS means of receiving input events. The UI Control Framework
+uses a control stack to determine the order in which controls are offered
+key events. A FEP places its control on the stack with a high priority such
+that it has first access to key events. </p> <fig id="GUID-55FA95ED-227B-560E-98B4-CCFB8E42A216">
+<title>                 FEP Base               </title>
+<image href="GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e15512_href.png" placement="inline"/>
+</fig> <p>The Window Server provides support for windows that float above
+other windows in the application. This allows a FEP to have a visible presence. </p> <p>Each
+running application has its own instance of the current FEP. Support is provided
+for synchronising attributes across all instances so that there appears to
+be only one. </p> <p><b>Control input-capabilities</b> </p> <p>A FEP must
+be able to discover the input-capabilities of the target control(s) to determine
+what output is appropriate. Input capabilities are provided by <xref href="GUID-BB7D0D56-1713-3DC0-BDA0-3CA1F0462BE2.dita"><apiname>TCoeInputCapabilities</apiname></xref>. </p> <p><b>FEP-aware
+text editors</b> </p> <p>A text-editing control can be designed to be closely
+integrated with a FEP by implementing <xref href="GUID-A5D563D6-A99A-31DF-B844-5F94EF5FFE87.dita"><apiname>MCoeFepAwareTextEditor</apiname></xref>.
+Most of the Symbian provided editing controls do this. The use of in-line
+editing in FEP aware editors can mean that a FEP has no obvious visible presence
+at all. </p> <p><b>Foreground observer</b> </p> <p>A FEP can implement an
+observer interface to be notified when the application goes into the foreground
+or background. The foreground observer is <xref href="GUID-2CAC79B0-8BD3-3961-A162-75B004AEE5FC.dita"><apiname>MCoeForegroundObserver</apiname></xref>. </p> <p><b>Focus
+observer</b> </p> <p>A FEP can implement an observer to be notified when controls
+under the FEP gain or lose focus. The FEP can then discover the input-capabilities
+of the current target control(s). The focus observer is <xref href="GUID-E591B7D7-ED56-3CEF-883F-7091D5833731.dita"><apiname>MCoeFocusObserver</apiname></xref>. </p> </section>
+<section id="GUID-90026D68-1FB6-4190-B0A8-9CDD0B1C6C18"><title>See also</title> <p><xref href="GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita">UI
+Control Framework Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FCEE832C-5D8D-5177-A86A-E10015EF77DC"><title>Exif Utility Library Overview </title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This document introduces you to the Exif (Exchangeable image file format) Utility Library. </p> <section><title>Purpose</title> <p>Exif is an informal standard (CP-3451) from JEIDA (Japanese Electronic Industries Development Association) for image metadata. Exif enhances the JPEG and TIFF specifications with the addition of metadata tags to hold information such as the camera settings used to take the picture. Although not a formal standard, Exif is used by most digital cameras and many image editing and display applications. </p> <p><b>Exit Utility Library Details</b> </p> <p>The DLL that provides the functionality and the library to which your code must link is identified below. </p> <table id="GUID-B5A1BD7B-79D5-51C7-90B6-1B6E4922E7AC"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>DLL</entry> <entry>LIB</entry> <entry>Short Description</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-6D7D379B-D9ED-3E81-9FE9-8D950DCA4CC0.dita"><apiname>exifutility.dll</apiname></xref>  </p> </entry> <entry><p> <xref href="GUID-A1E5B2C7-A696-3AB4-8F6B-442192B59C8B.dita"><apiname>exifutility.lib </apiname></xref>  </p> </entry> <entry><p>These files are used for implementing Exif Utility operation. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section><title>Architectural Relationship</title> <p>Exif is a member of the Imaging Frameworks component. It is used by several image framework libraries, including: </p> <ul><li id="GUID-29FA4A69-A507-522E-80E8-3C6103D3A5FE"><p><xref href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita">Image Display</xref> - <xref href="GUID-6B918282-75B5-3E2F-B3E1-1955B6EBE907.dita"><apiname>CImageDisplay</apiname></xref> Handles the image decoding operation, providing scope for accessing Exif metadata on a read-only basis. </p> </li> <li id="GUID-45FF333E-E748-5738-A045-B0218625397D"><p><xref href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita">Image Transformation</xref> - <xref href="GUID-37B0C02C-F518-3ADD-8828-90FD6B3E9DE4.dita"><apiname>CImageTransform</apiname></xref> Handles image transform operations such as image resizing and rotation. </p> </li> <li id="GUID-4941BFC2-DE09-5CD9-94E4-F15DCBA5D11E"><p><xref href="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita">Exif</xref> - Provides Exif metadata access through <xref href="GUID-8AA987C9-456B-3E7C-95C2-C5578EE977B9.dita"><apiname>TExifReaderUtility</apiname></xref> and <xref href="GUID-62EA502C-FBE8-39A8-AEC6-3104C15F18C9.dita"><apiname>TExifWriterUtility</apiname></xref>. </p> </li> </ul> </section> <section><title>Description</title> <p>Exif defines metadata tags allowing information about an image to be stored with the data for image file. JPEG and TIFF images include a section where this information can be stored in an easily identifiable way enabling applications to read from and write to these metadata tags. </p> <p><b>Accessing Exif Metadata</b> </p> <p>Exif provides access to metadata in JPEG and TIFF images while encoding, decoding, viewing or editing the image data. </p> <p><b>Encoding images</b> </p> <p>To write Exif metadata to an image file while it is being encoded. (<xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref>) </p> <p><b>Decoding images</b> </p> <p>To read Exif metadata from an image file while it is being decoded. (<xref href="GUID-B742FC40-2D88-3E71-8F89-FCB15A2C6619.dita"><apiname>MExifMetadataReader</apiname></xref>) </p> <p><b>Viewing images</b> </p> <p>To display Exif metadata about the image, such as a description or image title, while viewing the image on screen. (<xref href="GUID-B742FC40-2D88-3E71-8F89-FCB15A2C6619.dita"><apiname>MExifMetadataReader</apiname></xref>) </p> <p><b>Editing images</b> </p> <p>When an image is opened for resizing or rotation or some other editing operation the Exif tags can be read from or written to. (<xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref>) </p> </section> <section><title>Key Exif Utility Classes</title> <p>The two main classes provided by the Exif Utility library are: </p> <ul><li id="GUID-7ECACD84-1F33-50A8-AF84-9AF7B5F660A1"><p> <xref href="GUID-B742FC40-2D88-3E71-8F89-FCB15A2C6619.dita"><apiname>MExifMetadataReader</apiname></xref>  </p> <p>Used to read the tags from the Exif Metadata. You are expected to provide the tag id and the primary IFD for the tags to be read. </p> </li> <li id="GUID-36244F0E-D597-55D4-BEA6-9F3FF43366DE"><p> <xref href="GUID-27F068D2-F5BE-3D0B-83F4-493A783CFB80.dita"><apiname>MExifMetadataWriter</apiname></xref>  </p> <p>Used to write or set the tags of the Exif metadata. You are expected to render the key inputs like tag id and IFD for the data that needs to be written or modified. </p> </li> </ul> <p>It is worth reminding you that Exif Utility is only one of the mechanisms for accessing Exif metadata in the Symbian platform. The other, and much easier, is through the <xref href="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita">JPEG Exif Plugin</xref>, which already knows about many of the common Exif tags and provides an easy way to access those tags. </p> </section> <section><title>Using Exif Utility</title> <p>Exif Utility is used for the following: </p> <ul><li id="GUID-C8E1086D-053B-5ECB-B91B-F3C8AC56919B"><p>Adding Metadata when encoding an image </p> </li> <li id="GUID-768C8BE3-AC19-54C0-B632-3E7E698A53A9"><p>Reading Metadata when decoding an image </p> </li> <li id="GUID-2769B999-4B7E-5072-9897-93121D90775A"><p>Reading or writing metadata when editing an image </p> </li> <li id="GUID-1D9222E1-8CE2-59A3-94CC-1AEAC6949B3C"><p>Reading metadata when displaying an image to screen </p> </li> </ul> <p>The Exif utility is used to access Exif metadata in a JPEG or TIFF image as was previously discussed. Please see the <xref href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita">Exif Utility Guide</xref> for useful code snippets. </p> </section> </conbody><related-links><link href="GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita"><linktext>Exif Utility Guide</linktext> </link> <link href="GUID-9C371845-9F5D-56BB-BE16-ED60139D02AF.dita"><linktext>Exif</linktext> </link> <link href="GUID-27220B08-B2E7-5106-9BCC-C86938D3E37D.dita"><linktext>Image Display</linktext> </link> <link href="GUID-6914EA3D-6FAB-52DD-A159-990F4ED892A2.dita"><linktext>Image Transformation</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e190901_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference xml:lang="en" id="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1"><title> Tables for Phone Creators</title><shortdesc>This section lists the tables that Symbian OS distributes. These tables are available to phone creators only. </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody><section><p>Each item in the following list shows the name of a Symbian OS defined table and the purpose of that table. Each item also states if there are limits on the number of records the table can contain. Each entry in the Table Name column links to the details of the structure of a record in that table. </p> </section> <table id="GUID-E762C8EA-BB1D-5016-B11B-805D3783D22F"><tgroup cols="3"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><thead><row><entry>Table Name</entry> <entry>Description</entry> <entry> Number of records</entry> </row> </thead> <tbody><row><entry><p> <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-89580412-F28B-559B-B75E-49A0C8677B03">MCPR (Meta Connection Provider)</xref>  </p> </entry> <entry><p>This table is optional. </p> <p>The table defines the parameters for the reference MCPRs. </p> </entry> <entry/></row> <row><entry><p> <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-08B57B63-09AB-5823-85E3-4614859BF35E">SCPR (SubConnection Provider)</xref>  </p> </entry> <entry><p>This table is optional. </p> <p>The table defines the parameters for the reference SCPRs. </p> </entry> <entry/></row> <row><entry><p> <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-5EA551C3-CCB1-5BB2-9B27-6AD46FD3DA00">CPR (Connection Provider)</xref>  </p> </entry> <entry><p>This table is optional. </p> <p>The table defines the parameters for the reference CPRs. </p> </entry> <entry/></row> <row><entry><p> <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-38030834-D957-5F72-BFB8-BAFD1AABEA87">Protocol</xref>  </p> </entry> <entry><p>This table is optional. </p> <p>The table defines the parameters used by some of the reference Flows of the Comms Architecture. </p> </entry> <entry/></row> <row><entry><p> <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-ED2B57CA-DF29-5157-8DB6-EABCE8446718">Access Point Priority Selection Policy</xref>  </p> </entry> <entry><p>This table is optional. </p> <p>An <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>RConnection</apiname></xref> client uses the table to tell the Communications Framework about the priority order of Access Points for Bearer mobility. The reference MCPRs understand this information. Make sure that your MCPR uses this table. </p> </entry> <entry/></row> <row><entry><p> <xref href="GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1.dita#GUID-FD0779D4-7B98-50A9-A2ED-2F3CA5EE51C1/GUID-4DD7E309-B122-571D-B1CC-083C34B6C952"> Configuration Access Point</xref>  </p> </entry> <entry><p>This table is optional. </p> <p>The table specifies Access Points for internal configuration stacks for authentication or configuration of a standard data processing Access Point. This table is used, for example, to create an internal stack for EAP authentication over Wi-Fi . </p> </entry> <entry/></row> </tbody> </tgroup> </table> <section id="GUID-C6124E61-99A0-55C6-8FF2-F17A369D149F"><title>Structure of records in the tables</title> <p>This section describes the structure of the records that make the Symbian OS defined tables. </p> <p>Each section contains the following information: </p> <ul><li id="GUID-66BAECD0-B6F6-52C7-A028-8C8D0A109346"><p>the name of the Symbian OS class that defines the <xref href="GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita">record</xref>. The data members of the class define the fields and the links to other records. </p> </li> <li id="GUID-27396279-62DC-5959-8985-8B92AF49212B"><p>the symbol that defines the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">unique numeric Id</xref> that identifies the table. </p> </li> <li id="GUID-A1733267-C71A-578E-8103-4AB4C4CF5387"><p>information about each field in the record: </p> <ul><li id="GUID-6608416A-71FE-5FAC-BB1E-9F4722EA9098"><p>the name assigned to the field </p> </li> <li id="GUID-A20CD21A-8C54-53D6-A24A-5FEDD0A13EB4"><p>the description of the field </p> </li> <li id="GUID-08501682-5946-5AA2-871C-73C33FAFF0CD"><p>the name of the data member that represents the field or the link to another record. </p> </li> <li id="GUID-C2C813CF-4F29-5F82-8461-AEE4C5FEFD71"><p>the symbol that defines the <xref href="GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita#GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84/GUID-4DDD4947-D379-5B68-8DC0-B67B074FA852">unique numeric Id</xref> that identifies the field. </p> </li> <li id="GUID-CFBF8C7E-988A-5235-AD30-E0FE3593C891"><p>the type of value that are assigned to the field. For example: Integers, Enums, Booloeans, Text, etc </p> </li> <li id="GUID-90C95F17-879F-5EBB-BCE4-4082B512D877"><p>The range of values or the set of values that the field can hold. </p> </li> </ul> </li> </ul> </section> <section id="GUID-ED2B57CA-DF29-5157-8DB6-EABCE8446718"><title>Access Point Priority Selection Policy</title> <p>This table configures the priority order of <xref href="GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita">Access Points</xref> for <xref href="GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita">Bearer Mobility</xref>. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> CCDApPrioritySelectionPolicyRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdApPrioritySelectionPolicyRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-4340EBF8-4172-5B59-8CEB-5C0430C8B8A7"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>AP1 </p> </entry> <entry><p>Refers to the highest-priority Access Point for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp1</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp1</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP2 </p> </entry> <entry><p>Refers to the highest-priority Access Point after AP1 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp2</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp2</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP3 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP2 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp3</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp3</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP4 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP3 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp4</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp4</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP5 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP3 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp5</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp5</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP6 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP3 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp6</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp6</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP7 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP3 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp7</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp7</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP8 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP3 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp8</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp8</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP9 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP3 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp9</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp9</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP10 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP9 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp10</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp10</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP11 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP10 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp11</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp11</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP12 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP11 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp12</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp12</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP13 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP12 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp13</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp13</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP14 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP13 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp14</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp14</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> <row><entry><p>AP15 </p> </entry> <entry><p>Optional. Refers to the highest-priority Access Point after AP14 for this policy. The Access Point reference links to an item in the <xref href="GUID-387A8240-0765-52F2-98A4-8F9FC809E03E.dita#GUID-387A8240-0765-52F2-98A4-8F9FC809E03E/GUID-52230909-4652-5613-8E52-6761E948907D">Access Point table</xref>. </p> </entry> <entry><p> <codeph>iAp15</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdAp15</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p>Link to an Access Point. </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-4DD7E309-B122-571D-B1CC-083C34B6C952"><title>Configuration Access Point </title> <p>This table configures an internal configuration stack. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> CCDConfigAccessPointRecord </apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConfigAccessPointRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-20F39149-CDB7-5CA7-A36A-9EFC3C8CA808"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>SCpr </p> </entry> <entry/><entry><p> <codeph>iSCpr</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdConfigAccessPointSCpr </apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry/></row> <row><entry><p>Protocol </p> </entry> <entry/><entry><p> <codeph> iProtocol</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdConfigAccessPointProtocol</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry/></row> <row><entry><p>ProtocolConfig </p> </entry> <entry/><entry><p> <codeph> iProtocolConfig</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdConfigAccessPointProtocolConfig</apiname></xref>  </p> </entry> <entry><p> </p> </entry> <entry/></row> <row><entry><p>LayerBelow </p> </entry> <entry/><entry><p> <codeph> iLayerBelow</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdConfigAccessPointLayerBelow</apiname></xref>  </p> </entry> <entry><p>Enum </p> </entry> <entry/></row> </tbody> </tgroup> </table> </section> <section id="GUID-5EA551C3-CCB1-5BB2-9B27-6AD46FD3DA00"><title>CPR (Connection Provider)</title> <p>This table configures a <xref href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita">CPR</xref>. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> CCDCprRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCprRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-B0092268-BB41-5C8E-ACC4-EC4EF4CB2090"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>CprUid </p> </entry> <entry><p>The <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> Id for the factory that creates CPR nodes. </p> </entry> <entry><p>i<codeph>iCprUid</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdCprUid</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-89580412-F28B-559B-B75E-49A0C8677B03"><title>MCPR (Meta Connection Provider)</title> <p>This table configures an <xref href="GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita">MCPR</xref>. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDMCprRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMCprRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-BF5DEFF0-950A-5A09-862B-25B1188B6342"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>MCprUid </p> </entry> <entry><p>The <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> Id for the factory that creates the MCPR nodes. </p> </entry> <entry><p>i<codeph>iMCprUid</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdMCprUid</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-38030834-D957-5F72-BFB8-BAFD1AABEA87"><title>Protocol</title> <p>This table configures a <xref href="GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita#GUID-F8069628-BD32-535C-963A-A1CF8172E275/GUID-832AD765-692C-56BE-92AC-AF8AEFB69413">Flow</xref>. The use of this table depends on the implementation of the Flows. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDProtocolRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-49ED5E2D-3428-5B47-B406-F303D0311D59"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>ProtocolUid </p> </entry> <entry><p>Provides the Ecom implementation Id. </p> </entry> <entry><p> <codeph>iProtocolUid</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname> KCDTIdProtocolUid</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry/></row> <row><entry><p>ProtocolConfigLoaderUid </p> </entry> <entry><p>Optional. </p> </entry> <entry><p> <codeph>iProtocolConfigLoaderUid</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdProtocolConfigLoaderUid</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p> </p> </entry> </row> </tbody> </tgroup> </table> </section> <section id="GUID-08B57B63-09AB-5823-85E3-4614859BF35E"><title>SCPR (SubConnection Provider)</title> <p>This table configures an <xref href="GUID-E3E4E9A1-359E-5475-A355-1DA446FE7170.dita">SCPR</xref>. </p> <p><b> Name of the class that defines the structure of a record in this table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>CCDSCprRecord</apiname></xref>  </p> <p><b> Symbol that defines the unique numeric ID for the table </b> </p> <p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSCprRecord</apiname></xref>  </p> <p><b>List of fields that define a record for this table </b> </p> <table id="GUID-0A526189-912E-58A7-AED4-19022D0C2E43"><tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/><thead><row><entry>Field name</entry> <entry>Description</entry> <entry>Name of the class data member</entry> <entry>Symbol defining the unique numeric Id of the field</entry> <entry>Field value type</entry> <entry> Possible Values</entry> </row> </thead> <tbody><row><entry><p>SCprUid </p> </entry> <entry><p>The <xref href="GUID-9E92EE30-F2E2-5F28-BB2A-391C09EC69D2.dita">ECom</xref> Id for the factory that creates SCPR nodes. </p> </entry> <entry><p>i<codeph>SCprUid</codeph>  </p> </entry> <entry><p> <xref href="GUID-1CDD0B97-8B00-3373-9908-512C9BC1CF51.dita"><apiname>KCDTIdSCprUid</apiname></xref>  </p> </entry> <entry><p>Integer </p> </entry> <entry><p> </p> </entry> </row> </tbody> </tgroup> </table> </section> </refbody></reference>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e362142_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e49771_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD273259-2282-5353-847D-853D483C37BC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FD273259-2282-5353-847D-853D483C37BC" xml:lang="en"><title>Using
+TDesC8 Class</title><shortdesc>Use TDescC8 for interfaces which takes binary data or explicit
+narrow text, regardless of the build variant, but which does not need to change
+the data. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-F1F7E9F9-0B79-5F45-9C67-587A74BBE209"><title>Using in a
+function interface</title> <p>Interfaces which take binary data or narrow
+text, use descriptors in the specification of that interface. All 8 bit concrete
+descriptors are derived from <codeph>TDesC8</codeph> which means that the
+interface can accept any 8 bit descriptor.</p> <p>The following code fragment
+shows the most common function prototype pattern.</p> <codeblock id="GUID-2679659B-7A39-5C43-8B18-878BDE54AD3E" xml:space="preserve">void ClassX::foo(const TDesC8&amp; anArg);</codeblock> <p>The use of <codeph>TDesC8</codeph> ensures that the data cannot be modified
+through the descriptor; <codeph>const</codeph> is an extra guarantee that
+the data cannot be changed.</p> <p>In practice, nearly all code uses the build
+independent variant, <codeph>TDesC</codeph>, unless an explicit 8 bit or 16
+bit build variant is required.</p> </section>
+<section id="GUID-2342D6CC-9781-5353-A2D4-EBA6FAC6E0E2"><title>Extract leftmost
+part of data</title> <p>The code fragment shows how the leftmost part of data
+in a descriptor can be accessed, using the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-0593A69B-B19A-3D2C-861A-216892E60180"><apiname>TDesC8::Left()</apiname></xref> member
+function.</p> <p>The behaviour is the same for the build independent variant, <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref> with <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref>.</p> <codeblock id="GUID-2707349F-04BD-59BC-8639-4794F506AFD0" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str.Left(4);</codeblock> <p>The call to <codeph>Left()</codeph> returns a
+non-modifiable pointer descriptor representing the data string "<codeph>abcd</codeph>";
+this has length 4. The original data contained in, and represented by, the
+non-modifiable buffer descriptor <codeph>str</codeph>, is not changed in any
+way.</p> <codeblock id="GUID-13D0C4D6-1534-56AF-B32E-4DB886555C69" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str.Left(256);</codeblock> <p>This call to <codeph>Left()</codeph> returns
+a non-modifiable pointer descriptor representing the data string "<codeph>abcdefg</codeph>",
+i.e. the whole content of the descriptor <codeph>str</codeph>; this has length
+7.</p> <p>Note that the following call to <codeph>Left()</codeph> results
+in a panic.</p> <codeblock id="GUID-1C8BAE4F-E649-5950-BD1C-2C7ED471B443" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str.Left(-1);           // Panic !</codeblock> </section>
+<section id="GUID-1842A134-AFBF-5282-8052-424C7BF66963"><title>Extract rightmost
+part of data</title> <p>The code fragment shows how the rightmost part of
+data in a descriptor can be accessed, using the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-4113AD10-171C-38C0-B3B5-93FF0BFCBBC5"><apiname>TDesC8::Right()</apiname></xref> member
+function.</p> <p>The behaviour is the same for the build independent variant, <xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with <xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref> with <xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref>.</p> <codeblock id="GUID-146EBCF8-AE0A-52BD-AC1D-25A61B223AE6" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str.Right(4);</codeblock> <p>The call to <codeph>Right()</codeph> returns
+a non-modifiable pointer descriptor representing the data string "<codeph>defg</codeph>";
+this has length 4. The original data contained in, and represented by, the
+non-modifiable buffer descriptor <codeph>str</codeph>, is not changed in any
+way.</p> <codeblock id="GUID-79443C9B-FBE6-5B2F-B1BB-9610D6CB90A5" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str.Right(256);</codeblock> <p>This call to <codeph>Right()</codeph> returns
+a non-modifiable pointer descriptor representing the data string "<codeph>abcdefg</codeph>",
+i.e. the whole content of the descriptor <codeph>str</codeph>; this has length
+7.</p> <p>Note that the following call to <codeph>Right()</codeph> results
+in a panic.</p> <codeblock id="GUID-D9BF00DD-87BB-5125-B8F0-35B28D6E6E14" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str.Right(-1);          // Panic !</codeblock> </section>
+<section id="GUID-C72FC6C5-5D89-5797-B1E1-F8BD913F1CC7"><title>Extract middle
+portion of the data</title> <p>The code fragment shows how a portion of data
+within a descriptor can be accessed, using the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-E02A80AB-4479-376A-82FC-099BA20F6A01"><apiname>TDesC8::Mid()</apiname></xref> member
+function. Each call to<codeph>Mid()</codeph> returns a non-modifiable pointer
+descriptor representing the selected portions of data.</p> <p>The behaviour
+is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>, replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref> and <xref href="GUID-6DF731E4-5691-31C4-BEE0-03A3873F15EC.dita"><apiname>TPtrC8</apiname></xref> with<xref href="GUID-5CD07A27-E3ED-3273-A560-680501468C91.dita"><apiname>TPtrC</apiname></xref>.</p> <codeblock id="GUID-80455C29-5126-5C80-8DCC-8135AC7A23E2" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8 str(KData);
+...
+str.Mid(0);   //returns TPtrC8 representing "abcdefg";  length is 7
+str.Mid(1);   //returns TPtrC8 representing "bcdefg";   length is 6
+str.Mid(6);   //returns TPtrC8 representing "g";        length is 1
+str.Mid(3,3); //returns TPtrC8 representing "def";      length is 3
+str.Mid(0,7); //returns TPtrC8 representing "abcdefg";  length is 7
+...
+str.Mid(8);   // Panics !
+str.Mid(3,5); // Panics !</codeblock> </section>
+<section id="GUID-884F8704-067A-5DF2-9FCE-7AC6FC8A2CD2"><title>Comparing data</title> <p>This
+code fragment shows the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-1C79CC6C-9C60-3C91-84C0-84363B5A7B70"><apiname>TDesC8::Compare()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-E09FF7E7-8954-516E-AC1F-00F1B0675D19" xml:space="preserve">_LIT8(Kabcd,  "abcd");
+_LIT8(Kabcde, "abcde");
+_LIT8(Kabc,   "abc");
+_LIT8(Kabcx,  "abcx");
+...
+TBufC8&lt;8&gt; str(Kabcd);
+...
+str.Compare(Kabcde);    // returns -ve
+str.Compare(Kabc);      // returns +ve
+str.Compare(Kabcd);     // returns zero
+str.Compare(Kabcx);     // returns -ve</codeblock> <p>This result of the comparison
+means that:</p> <ul>
+<li id="GUID-CE717629-1A33-5C6F-BBC0-F69B86297D8F"><p>"abcd" is less than
+"abcde".</p> </li>
+<li id="GUID-22640DC7-3446-5310-AC92-9E04ACE2B8BF"><p>"abcd" is greater than
+"abc".</p> </li>
+<li id="GUID-4A5A34DB-9B24-5F9B-A4CF-B07D5D93DDF0"><p>"abcd" is equal to "abcd".</p> </li>
+<li id="GUID-71EF4AC1-8C0B-5A4A-8484-DBD6D0551A6C"><p>"abcd" is less than
+"abcx".</p> </li>
+</ul> </section>
+<section id="GUID-F8DC34F6-C155-5085-9E76-2135603A802B"><title>Locating a
+character</title> <p>This code fragment shows the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-2D247FCC-C975-39C4-947F-A1E89C273033"><apiname>TDesC8::Locate()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-A03FF85A-2A87-5DE3-81B9-BF1FB050CF1F" xml:space="preserve">_LIT8(Kabcd,"abcd");
+TBufC8&lt;8&gt; str(Kabcd);
+...
+str.Locate('d');   // returns 3
+str.Locate('a');   // returns 0
+str.Locate('b');   // returns 1
+str.Locate('x');   // returns KErrNotFound</codeblock> </section>
+<section id="GUID-F7BEE7D3-AF21-5774-BFC1-97C8CFFE08ED"><title>Finding data</title> <p>This
+code fragment shows the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-1D939364-6C89-3CAA-BC0D-2F20BFBCF725"><apiname>TDesC8::Find()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-94D64D41-0247-57AD-85D7-08B91686602A" xml:space="preserve">_LIT8(KAtoZ,"abcdefghijklmnopqrstuvwxyz");
+TBufC8&lt;32&gt; str(KAtoZ);
+...
+_LIT8(KFind1,"abc");
+str.Find(KFind1);            // returns 0
+
+_LIT8(KFInd2,"bcde");
+str.Find(KFInd2);            // returns 1
+
+_LIT8(KFind3,"uvwxyz");
+str.Find(KFind3);            // returns 20
+
+_LIT8(KFind4,"0123");
+str.Find(KFind4);            // returns KErrNotFound
+
+_LIT8(KFind5,"abcdefghijklmnopqrstuvwxyz01");
+str.Find(KFind5);            // returns KErrNotFound
+
+str.Find(KNullDesC8);        // returns 0</codeblock> </section>
+<section id="GUID-D192C3B7-1418-55BE-B70D-143D3FDD82DB"><title>Pattern matching</title> <p>This
+code fragment shows the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-9BCB8339-2937-362D-85FF-3E5AE3A2CAFD"><apiname>TDesC8::Match()</apiname></xref> function.</p> <p>The
+behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-9B7216C7-F4BD-551F-895B-A8D6D9F8CC28" xml:space="preserve">_LIT8(KAtoZ,"abcdefghijklmnopqrstuvwxyz");
+TBufC8&lt;32&gt; str(KAtoZ);
+    ...
+_LIT8(KMatch1,"*ijk*");
+str.Match(KMatch1);          //returns -&gt; 8
+
+_LIT8(KMatch2,"*i?k*");
+str.Match(KMatch2);          //        -&gt; 8
+
+_LIT8(KMatch3,"ijk*");
+str.Match(KMatch3);          //        -&gt; KErrNotFound
+
+_LIT8(KMatch4,"abcd");
+str.Match(KMatch4);          //        -&gt; KErrNotFound
+
+_LIT8(KMatch5,"*i*mn*");
+str.Match(KMatch5);          //        -&gt; 8
+
+_LIT8(KMatch6,"abcdef*");
+str.Match(KMatch6);          //        -&gt; 0
+
+_LIT8(KMatch7,"*");
+str.Match(KMatch7);          //        -&gt; 0
+
+_LIT8(KMatch8,"*y*");
+str.Match(KMatch8);          //        -&gt; 24
+
+_lit8(KMatch9,"*i??k*");
+str.Match(KMatch9);          //        -&gt; KErrNotFound</codeblock> <p>To test
+for the existence of a pattern within a text string, the pattern must start
+and end with an '<codeph>*</codeph>'.</p> </section>
+<section id="GUID-B53507BB-D45B-5440-A025-B9690E15FACD"><title>Referencing
+a data item</title> <p>The code fragment shows how a data item can be referenced
+using<codeph>operator[]()</codeph>.</p> <p>The behaviour is the same for the
+build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>, replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>.</p> <codeblock id="GUID-8C4F4C8F-303F-5690-949B-851EF3BB52DE" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;8&gt; str(KData);
+...
+str[0];                 // returns reference to 'a'
+str[3];                 // returns reference to 'd'
+str[7];                 // Panics !!</codeblock> </section>
+<section id="GUID-83CFA0F7-A209-5E69-BE6B-4D5B17626202"><title>Creating a
+heap descriptor</title> <p>The code fragments show how a heap descriptor is
+created from an existing descriptor using the <xref href="GUID-FB97E0A3-352A-316F-97C6-69E4741A8120.dita#GUID-FB97E0A3-352A-316F-97C6-69E4741A8120/GUID-E6A17C44-EADD-3224-A16A-96263F16D004"><apiname>TDesC8::AllocL()</apiname></xref> member
+function.</p> <p>The behaviour is the same for the build independent variant,<xref href="GUID-52D07F46-2162-380C-A775-C3BB335C42F5.dita"><apiname>TDesC</apiname></xref>,
+replacing <xref href="GUID-964AAE0D-DA22-399E-8EFB-5DB1B58DA0A4.dita"><apiname>_LIT8</apiname></xref> with <xref href="GUID-B47B3E37-4FAC-327C-B626-49E09DB147FC.dita"><apiname>_LIT</apiname></xref>, <xref href="GUID-5B1CA2E7-E3A7-3AF8-9EB0-662E130C45DA.dita"><apiname>TBufC8</apiname></xref> with<xref href="GUID-4D64E4B7-6BEE-3900-A115-460FE5B2D79E.dita"><apiname>TBufC</apiname></xref>,
+and<xref href="GUID-2A528453-0279-3E47-838C-F8A8D29B88F1.dita"><apiname>HBufC8</apiname></xref> with<xref href="GUID-A103FB19-60B3-3E45-97A5-1F295934ACA1.dita"><apiname>HBufC</apiname></xref>.</p> <codeblock id="GUID-6AF24F59-9224-59F0-84A2-9766EAFBCF79" xml:space="preserve">_LIT8(KData,"abcdefg");
+TBufC8&lt;16&gt; str(KData);
+...
+HBufC8* ptr;
+...
+ptr = str.AllocL();     //Creates and returns address of
+...                     //heap descriptor. The new heap descriptor
+...                     //contains a copy of the original data.
+ptr-&gt;Length();           //Returns 7; the length of "abcdfeg"</codeblock> </section>
+</conbody><related-links>
+<link href="GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7.dita#GUID-7830BAAB-40DD-5E55-84B5-8DCA888E68E7/GUID-235E272D-6F5A-5740-8150-9698C8C8D55D">
+<linktext>Using TDesC                   in a function interface</linktext>
+</link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FD2CDEB8-0784-4BE5-A775-170F57D71BBC" xml:lang="en"><title>UI controller</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The term <i>UI controller</i> refers to an object derived from either <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref> or <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref>,
+depending on your UI architecture. The UI controller is a required part of
+GUI-based applications.</p>
+<p>Examples of services and responsibilities provided by the UI controller
+are as follows:</p>
+<ul>
+<li><p>control stack for <xref href="GUID-A9330FEF-C559-4E2B-B064-0151FDADEA8C.dita">event
+handling</xref></p></li>
+<li><p>construction of <xref href="GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita">views</xref> for
+applications</p></li>
+<li><p>the top-level window owning <xref href="GUID-5944FFF1-79C6-4F5E-95C8-F4833AFC64AB.dita">control</xref> of
+the application</p></li>
+</ul>
+<p>For more information on the UI controller, see:</p>
+<ul>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide4/index.html#ApplicationFrameworkOverview%2eUIControlFrameworkGuide4%2eappui" format="application/java-archive">The Application User Interface</xref></p>
+</li>
+<li><p><xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Application-Framework-subsystem-guide/UIControlFrameworkGuide/UIControlFrameworkGuide2/RunTimeControlHierarchy.guide.html" format="application/java-archive">The run-time control hierarchy</xref></p>
+</li>
+</ul>
+<p>The UI controller is part of the controller structure in the Model -
+View - Controller <xref href="GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita">(MVC)
+design pattern</xref> used to design the architecture of many GUI-based mobile
+applications.</p>
+<p><xref href="GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita">The <parmname>CAknDocument</parmname>-derived
+class</xref> of your application contains the <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/guide/Base-subsystem-guide/e32/MemoryManagement/CleanupSupport/CleanupSupportGuide3/index.html#CleanupSupportGuide3%2etoc" format="application/java-archive">first
+phase</xref> constructor of the UI controller.</p>
+<note>
+<p>The second-phase constructor is called by the application framework.</p>
+</note>
+<p>The UI controller is implemented in one of the following classes:</p>
+<ul>
+<li><p>In a <xref href="GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita">traditional
+architecture</xref> application architecture, the UI controller must be derived
+from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref>.</p>
+</li>
+<li><p>In <xref href="GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita">Symbian view architecture</xref>, the UI controller must be derived from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknViewAppUi.html" format="application/java-archive"><parmname>CAknViewAppUi</parmname></xref>.</p>
+</li>
+<li><p>In <xref href="GUID-DD88DD7B-E246-4BF2-B537-5C677728CC49.dita">dialog
+architecture</xref>, the UI controller is typically derived from <xref href="jar:GUID-759FBC7F-5384-4487-8457-A8D4B76F6AA6.jar!/html/classCAknAppUi.html" format="application/java-archive"><parmname>CAknAppUi</parmname></xref></p>
+</li>
+</ul>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e334925_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e46063_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e50171_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e52073_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD530B98-B17D-54CD-A86E-B6FFF701D19C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FD530B98-B17D-54CD-A86E-B6FFF701D19C"><title>Snapshot</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial introduces you to the Snapshot. </p> <section><title>Purpose</title> <p>This document describes the various APIs used to work with snapshot. </p> <p><b>Introduction</b> </p> <p>The snapshot feature removes the time lag between clicking of the image and displaying of it on the screen. Snapshot is a raw image data that does not need any compression. Snapshot is a quick view of the main image that is been processed using a compression algorithm in background. Main image can be a captured image or a frame from video. </p> </section> <section><title>Using Snapshot </title> <p>The following tasks will be covered in this tutorial: </p> <ol id="GUID-3A913ABC-AEB5-5124-AA21-E577A35B82F1"><li id="GUID-911D70FB-AB74-538A-A917-D7D44CB6FC97"><p>Creating Snapshot </p> </li> <li id="GUID-F6603D3F-CB8F-5375-A588-D77965EB4990"><p>Working with Snapshot </p> </li> </ol> </section> <section><title>See also</title> <p><xref href="GUID-0B24B36D-F4C5-508A-A65B-18E4E4C45C37.dita">Camera SnapShot Overview</xref>  </p> <p><xref href="GUID-F89F92BA-763D-5531-BF74-C6BF36A589CD.dita"> Creating Snapshots</xref>  </p> <p><xref href="GUID-1C0707F8-9E2A-58C6-997B-23B57C7EFA93.dita">Working with Snapshots</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD5C6057-C6D3-5C1A-888C-7B7A3C89CD67.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FD5C6057-C6D3-5C1A-888C-7B7A3C89CD67" xml:lang="en"><title>How to
+use the range checking wrapper</title><shortdesc>Symbian platform provides range checking for arrays.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>Instead of declaring a C++ array directly:</p>
+<codeblock id="GUID-C8272886-3CA2-57BE-AD57-DE04E44A77B7" xml:space="preserve">TTest array[4];</codeblock>
+<p>use:</p>
+<codeblock id="GUID-9D4D6074-62B3-5975-871E-892574CA0216" xml:space="preserve">TFixedArray&lt;TTest,4&gt; array;</codeblock>
+<section id="GUID-FC3EF1EB-1889-462F-B284-14B1D1C878B0"><title>Initialise array</title> <p>The array can be initialised either
+at construction time or by using the <codeph>Copy()</codeph> member function
+after construction.</p> <codeblock id="GUID-32051B94-5E15-5BDC-8055-D9A572B6FC82" xml:space="preserve">...
+const TTest data[] = {TTest(1),TTest(2),TTest(3),TTest(4)};
+...
+ // initialise at construction time
+TFixedArray&lt;TTest,4&gt; array(&amp;data[0],4);
+...
+ // or later using Copy()
+TFixedArray&lt;TTest,4&gt; array;
+array.Copy(&amp;data[0],4);
+...</codeblock> </section>
+<section id="GUID-159797CF-ED84-4402-B635-F5CD82B8A0D3"><title>Check accesses for legality</title> <p>Accesses can be checked
+for legality using the <codeph>At()</codeph> function or the <codeph>operator[]</codeph>.</p> <p>The <codeph>At()</codeph> function
+checks for a legal access in both a release build and a debug build while
+the <codeph>operator[]</codeph> only checks for a legal access in a debug
+build.</p> <p>Assuming that the <codeph>TTest</codeph> class has a public
+member function called <codeph>SetValue()</codeph>, then a call to this function
+on the second element of the array is legal:</p> <codeblock id="GUID-FC4295A4-92EA-56DD-BFE6-99E41DD79D0E" xml:space="preserve">array.At(1).SetValue(100);</codeblock> <p>but an attempt to call this function on the fifth element raises a panic;
+in this example, there are only four elements:</p> <codeblock id="GUID-84CF63A2-4D7F-5340-B63E-3081305C7DD9" xml:space="preserve">array.At(5).SetValue(100); // panics</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD622CE6-42D0-534D-9D0E-7AED5453F35A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FD622CE6-42D0-534D-9D0E-7AED5453F35A"><title>Implementing the Server Side</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Paired server side and client side classes are required for each animation object. The server side class should be derived from one of the abstract base classes, based on <xref href="GUID-029C644B-BE0F-37C6-95E2-D27F974E6AD3.dita"><apiname>CAnim</apiname></xref>, depending on whether the animation is to draw to a sprite or a window: </p> <ul><li id="GUID-DF4DA89C-A583-579A-ADEC-D63A23B4FFC4"><p> <xref href="GUID-D49CF183-BD61-3E3E-A77F-C63845E6F0DF.dita"><apiname>CSpriteAnim</apiname></xref> for sprite animations </p> </li> <li id="GUID-FB874F8D-7802-50AE-89C6-0E3EEEB2EDE3"><p> <xref href="GUID-70AB2433-00C7-3E49-BD6A-CC90E20DA7AE.dita"><apiname>CWindowAnim</apiname></xref> for window animations </p> </li> <li id="GUID-F5E601B0-4E5C-549D-B53B-779CA859CA8C"><p> <xref href="GUID-BC3E6CD0-4678-36F6-B4D3-AEE4C6672AAE.dita"><apiname>CFreeTimerWindowAnim</apiname></xref> for free timer animations </p> </li> </ul> <p>The derived classes are constructed in the DLL factory class <xref href="GUID-9E598CDA-6483-3AE3-ABFF-0F701A47AB84.dita#GUID-9E598CDA-6483-3AE3-ABFF-0F701A47AB84/GUID-E9EDBC1B-ECF4-351C-B8E6-749700F7E25F"><apiname>CAnimDll::CreateInstanceL()</apiname></xref> function. See <xref href="GUID-EB82A2C8-EF92-5276-B503-687DEBF82EA4.dita">Creating an Animation Object</xref>. </p> <p> <codeph>CAnim</codeph> defines the server side functions that are used to implement a given animation, including the drawing commands that the Window Server calls and any other command functions the animation may require. These functions must be implemented by the user in the derived class. </p> <p>The <xref href="GUID-FFE76181-A701-374B-82AA-CEACC5856E91.dita"><apiname>MAnimGeneralFunctions</apiname></xref>, <xref href="GUID-6FB00D2D-3CFB-3CD8-9081-2FBD0E4A9AAF.dita"><apiname>MAnimWindowFunctions</apiname></xref> and <xref href="GUID-F1DC2E39-9AB1-397A-BEDD-036BB6C54EC4.dita"><apiname>MAnimSpriteFunctions</apiname></xref> classes provide a set of helper functions that are implemented by the Window Server and to which <codeph>CAnim</codeph> provides the <codeph>iFunctions</codeph> pointer. These helper functions, which include for example functions to set the animation timings, to set the drawing rectangle, to panic the client from the server, and so on, are therefore available to any <codeph>CAnim</codeph> derived class. </p> </conbody><related-links><link href="GUID-FAF1B60A-A4B5-5E45-B9B9-84DA982F2E2B.dita"><linktext>Animations</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD733414-DDB2-5748-A193-6758FADEFEC1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FD733414-DDB2-5748-A193-6758FADEFEC1" xml:lang="en"><title>Specifying
+the Domain Name for Certificate Validation</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This tutorial explains how to configure an IMAP, POP or SMTP email account
+to specify domain name for validation when connecting to a server using secure
+TLS or SSL sockets. </p>
+
+<section><title>Introduction</title> <p>To enhance the certification-security
+checks when connecting to a destination network, you must connect an IMAP,
+POP or SMTP email account to a server over TLS or SSL, and validate the domain
+name in the received certificate against a domain name specified in the email
+account settings. If no domain name is specified (configured) in the email
+account settings, then validate the domain name in the received certificate
+against the address of the server being connected to. </p> </section>
+<section><title>Procedure</title> <ol id="GUID-5659C41D-7686-55DF-9395-C557BCA316F3">
+<li id="GUID-777E31ED-5421-5D22-B901-48ACE7A5BF4F"><p>Create an instance of
+the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> class. </p> </li>
+<li id="GUID-DE6A60A9-3B75-5FBB-BF06-EFF3543D644F"><p>Create an instance of
+the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class to be used by the email service. </p> </li>
+<li id="GUID-EFD0FDE0-95C5-5B68-B05C-951AC4DE87E2"><p>Create an instance of
+the <codeph>CIm&lt;protocol&gt;Settings</codeph> class. </p> <p>Where, &lt;protocol&gt;
+is either Imap4, Pop3, or Smtp. </p> </li>
+<li id="GUID-1D5C3A23-4D86-5531-9233-4A097C47B206"><p>Populate the <xref href="GUID-9CAB9BE5-7233-3A01-A906-756177CF4460.dita"><apiname>CImIAPPreferences</apiname></xref> class
+and the <codeph>CIm&lt;protocol&gt;Settings</codeph> class from central repository
+(CenRep) using <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Load&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+<li id="GUID-A7803679-66AC-540F-BF1C-2663F2429AFD"><p>Use the <codeph>CIm&lt;protocol&gt;Settings::</codeph> <xref href="GUID-86633B7D-5AB8-3BBD-BB54-4697211AC86E.dita"><apiname>SetTlsSslDomainL()</apiname></xref>,
+function to specify the appropriate domain name. </p> </li>
+<li id="GUID-FA73B306-79A5-5735-9755-6C7DAA8BA1CF"><p>Store the updated settings
+classes to CenRep using the <xref href="GUID-A7EF08E6-82AF-3577-B942-ABD532EDB7FE.dita"><apiname>CEmailAccounts</apiname></xref> <codeph>::Save&lt;protocol&gt;IapSettingsL</codeph> function. </p> </li>
+</ol><note> All instances of &lt;protocol&gt; in the preceding steps are either <codeph>Imap4</codeph>, <codeph>Pop3</codeph>,
+or <codeph>Smtp</codeph>.</note></section>
+<section><title>See also</title> <p> <xref href="GUID-24860917-0FE2-5C8F-B436-96928350996E.dita">Bearer
+Mobility Overview</xref>  </p> </section>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FD85921E-AC9F-481F-8A58-0D03D56661C0_d0e47154_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FD8AD44E-271D-514C-A52A-513E7C8AD207.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FD8AD44E-271D-514C-A52A-513E7C8AD207" xml:lang="en"><title>Debugging Comms</title><shortdesc>This topic provides a summary of help available to debug the components of Cellular Baseband Services, Communication Framework and Networking Services modules. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p> <b>Note:</b> Before you start to debug, check the Comms software configuration since some configuration options may help with the task. For more information see <xref href="GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631.dita">Software Behaviour in a Debug Environment</xref>. Also, some software problems are caused by an incorrect configuration. For more information on the configuration options in Comms, see <xref href="GUID-B93D6BAE-B9B9-5118-92DF-5E566E5BE8EB.dita">Comms Configuration</xref>. </p> <p>Textual logging by the Symbian OS Comms software is the primary means by which Comms software can be debugged. By default, this textual logging is built into the debug Comms binary files and not into release binary files. Mobile phone software contains the release versions of the binary files. To debug the code you must use substituted debug binary files. These debug binary files may also contain behavioural changes to make errors more apparent and error tracing easier. These behaviour changes can also mask software problems that are influenced by differences in timing. For more information see <xref href="GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita">Textual Logging</xref> and <xref href="GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita">How to Use ULogger with Comms</xref>. </p> <p>For more information on debugging using On-target hardware see <xref href="GUID-84C20E6E-C5DF-5346-84A3-2D8C701303C8.dita">On-target Debugging</xref>. </p> <p>For more information on debugging specific Comms components see <xref href="GUID-935DF48C-F014-5E2A-8BE6-29B00C4FD31D.dita">Component-Specific Debugging Help</xref>. </p> <p>For information on the lower-level aspects of debugging such as the memory map, process priorities and thread states see <xref href="GUID-26714A57-B6B4-5E81-B512-FB520718482B.dita">Debugging information</xref>. </p> <p>The Hooklogger application can be useful in tracking software defects such as memory leaks, stray signals and non-trapped leaves. For more information on Hooklogger in general and detecting memory leaks see <xref href="GUID-6A6A6648-6573-5EE4-A191-32B3C207305B.dita">Memory leak detection</xref> and <xref href="GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631.dita#GUID-0AC0CBBA-87AD-5F94-8F0D-D13654ABB631/GUID-B8A8B315-8C46-551A-B8F6-29BD24F45435">Detecting Comms memory leaks</xref>. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FDA7B932-B9C6-502D-8699-C18C8D86BCC6"><title>Performing Low-level Configuration</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Bluetooth specification defines commands and options that can be used with the various layers of the protocol. </p> <section><title>How to perform low-level configuration</title> <p>The Bluetooth Sockets API provides some of the commands and options for configuring Sockets at various layers as described below: </p> <p><b>Socket Configuration Options</b> </p> <p>The following Socket configuration options are provided by the Bluetooth Sockets API: </p> <ol id="GUID-B0C63411-0EE7-5307-9E5A-E2CDF05CC6C4"><li id="GUID-7BF0FF43-8ABE-5026-8632-D710D0B9EF97"><p> <b>Host Controller Interface (HCI) commands</b>: provide a command interface to the baseband controller and link manager. These are provided through asynchronous I/O control (ioctl) commands on an L2CAP or RFCOMM socket, as there is no direct Symbian OS interface to the HCI. Ioctls are issued through <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-1DEB83AF-C681-30D4-951C-4C2A5572E59C"><apiname>RSocket::Ioctl()</apiname></xref>. For details, see the reference for the <codeph>KHCIxxx</codeph> constants, such as <xref href="GUID-754AB23A-BA33-384C-81CF-FC6A84B94D16.dita"><apiname>KHCIAddSCOConnIoctl</apiname></xref>. </p> </li> <li id="GUID-42F05040-48EE-522D-8358-F0E290F60B17"><p> <b>L2CAP-level options</b>: these are also issued through ioctls on an L2CAP socket. For details, see the reference for the <codeph>KL2CAPxxx</codeph> constants, such as <xref href="GUID-8E3F3CDF-078E-3E0A-B5E1-5B5D64E12F50.dita"><apiname>KL2CAPEchoRequestIoctl</apiname></xref>. </p> </li> <li id="GUID-DD573402-37EC-5597-A5B2-D90AF33A15C1"><p> <b>RFCOMM commands and options</b>: these are issued through ioctls on an RFCOMM socket, and sockets option settings (<xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-F6BB908A-2E57-3259-8F7F-AC089C6D0C56"><apiname>RSocket::GetOpt()</apiname></xref> and <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita#GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0/GUID-F6BB908A-2E57-3259-8F7F-AC089C6D0C56"><apiname>RSocket::GetOpt()</apiname></xref>). For details, see the reference for the <codeph>KRFCOMMxxx</codeph> constants, such as <xref href="GUID-4C9AAC3D-12A1-3DFC-837F-97BE009B24A9.dita"><apiname>KRFCOMMModemStatusCmdIoctl</apiname></xref>. </p> </li> </ol> <p><b>Example: Reading L2CAP Socket Class of Device</b> </p> <p>The following example shows the HCI command Read_Class_of_Device being issued on an L2CAP socket. The ioctl for this is <xref href="GUID-BFFD4B1A-78F6-346C-A195-D34317382A47.dita"><apiname>KHCIReadDeviceClassIoctl</apiname></xref>, which returns a <xref href="GUID-A20B8F64-51BC-31C8-AC43-80AA6F3C5BBE.dita"><apiname>THCIDeviceClassIoctl</apiname></xref> object packaged in a <xref href="GUID-6649CEA7-2307-32E3-8474-346B11E57DEE.dita"><apiname>THCIDeviceClassBuf</apiname></xref> package buffer. The example extracts the device class into a variable <codeph>majorClass</codeph>. </p> <codeblock id="GUID-EEF819B3-DFA3-5FA4-B1B3-BC6975433656" xml:space="preserve">THCIDeviceClassBuf codbuf;
+TRequestStatus status;
+socket.Ioctl(KHCIReadDeviceClassIoctl, status, &amp;codbuf, KSolBtHCI);
+User::WaitForRequest(status);
+TUint16 majorClass = codbuf().iMajorDeviceClass;
+</codeblock> </section> <section><title>Where Next?</title> <p>This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection. </p> <ul><li id="GUID-7C78114A-C780-54D0-916C-179B63BFDA17"><p> <xref href="GUID-70339E6A-63CD-5A74-846C-50771FDAC763.dita">Listening for Incoming Bluetooth Connections</xref>  </p> </li> <li id="GUID-D502FBFF-0B64-53E8-8CDE-58E75BF921A0"><p> <xref href="GUID-834BD3BB-B39C-5EE9-8A62-9DC435930F95.dita">Handling the Local Device Name</xref>  </p> </li> <li id="GUID-F6417852-20EF-5287-AE48-A7A3CBD07502"><p> <b>Performing Low-level Configuration</b> - This document </p> </li> <li id="GUID-51BBC780-11ED-57E9-A9F5-F6A202400FF7"><p> <xref href="GUID-5C63EF5C-826D-5838-BB7E-12FF4EA1DFCE.dita">Debugging the Host Controller</xref>  </p> </li> <li id="GUID-699728A1-AE3F-5BA4-9B16-12EDC458E215"><p> <xref href="GUID-01A0682A-50B1-57AB-9939-6CC8FCCD782D.dita">Disconnecting ACL links</xref>  </p> </li> </ul> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FDD42A61-9FFE-53F5-A0B3-D8087270C7F6.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FDD42A61-9FFE-53F5-A0B3-D8087270C7F6" xml:lang="en"><title>Phone
+Lock Tutorial </title><shortdesc>This tutorial describes how to get the device lock information
+by the client applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The phone can have up to two locks specified by the user. The
+client  application can retrieve the lock information to prevent unauthorised
+use of  the device. The client applications must specify a lock to retrieve
+the information. </p></context>
+
+
+<steps id="GUID-A284897D-1D9A-5012-AF7F-569E3DB0FF84">
+<step id="GUID-BF21F99C-8A31-5BF5-9D33-AC952F9CFB6C"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-CC42631B-2A9A-58DB-8018-4A7679FAED0A"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetLockInfo()</apiname></xref> to
+get the lock information </info>
+<info>Specify the lock in a <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>TIccLock</apiname></xref> object. </info>
+</step>
+<step id="GUID-A1F3A428-568F-5149-9491-00AB2D2BEE16"><cmd/>
+<info>the function returns the lock information in <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::TIccLockInfoV1</apiname></xref>  </info>
+</step>
+<step id="GUID-18B971F7-056B-55DB-BE93-D6503ACC6D69"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EPin1LockInfoChange</apiname></xref> and <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EPin2LockInfoChangenotification</apiname></xref> to
+get the notification of any changes in the lock1 and lock2 </info>
+</step>
+<step id="GUID-0D7A9400-6C12-5B44-BA19-BE0A55E4BF30"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EPin1LockInfoChangeCancel</apiname></xref> and <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EPin2LockInfoChangeCancel</apiname></xref> to cancel
+the notification requests of lock1 and lock2. </info>
+</step>
+</steps>
+<example id="GUID-FD34FB9F-02F7-518E-A591-ECBAEFCC1521"><title>Phone lock
+example</title> <codeblock id="GUID-C79BF94F-2001-511D-A3E7-827A206536DE" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TIccLockInfoV1 iIccLockInfoV1;
+    CTelephony::TIccLockInfoV1Pckg iIccLockInfoV1Pckg;
+public:
+    CClientApp(CTelephony* aTelephony);
+    void SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+    };
+
+CClientApp::CClientApp(CTelephony* aTelephony)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iIccLockInfoV1Pckg(iIccLockInfoV1)
+    {
+    //default constructor
+    }
+
+void CClientApp::SomeFunction()
+    {
+    CTelephony::TIccLock lockSelect = CTelephony::ELockPin2;
+    iTelephony-&gt;GetLockInfo(iStatus, lockSelect, iIccLockInfoV1Pckg);
+    SetActive();
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {
+       if( iIccLockInfoV1.iSetting == CTelephony::ELockSetEnabled 
+                    &amp;&amp; iIccLockInfoV1.iStatus == CTelephony::EStatusUnlocked)
+          {
+          // Lock 2 is available for the phone to use 
+          // and its current statues is open, 
+          // The user can access functionality governed by this lock.
+          }
+       }
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EGetLockInfoCancel);
+    }</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FDD68915-5B6F-4091-A99A-64F91D508B3E.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FDD68915-5B6F-4091-A99A-64F91D508B3E" xml:lang="en"><title>Changes
+and release information</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Choice list API is an SDK API and first released in S60 5th Edition. </p>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FDDAF8E9-4CAB-5489-B578-A5362E2140C1" xml:lang="en"><title>Decompressing
+File Archives</title><abstract><shortdesc>The Zip Compression Library, EZLib provides file archive
+decompression functionality for the Symbian platforms. </shortdesc> <p>EZLib
+allows clients to decompress data from file archives. The decompression task
+is performed by calling the decompression functions iteratively, until the
+required task completion. </p> </abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>The input archive file is opened and the properties of all the
+files in the archive are retrieved. </p> </context>
+<steps id="GUID-0D781F2C-8D11-5792-98D5-76091DA8EBBB">
+<step id="GUID-E92A26A2-F56D-5FA0-A583-43B227AE670C"><cmd/>
+<info>Pass the input file archive and create an instance of the <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita"><apiname>CZipFile</apiname></xref> class.</info>
+<info> The <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita"><apiname>CZipFile</apiname></xref> is a read only interface. It does not
+support file compression to a single or multiple zip file archives. </info>
+</step>
+<step id="GUID-8E916762-869C-5E9C-B38C-43B55805EB73"><cmd/>
+<info>Invoke <xref href="GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00.dita#GUID-79C613E8-35F8-319B-BE8B-1411CBE5AF00/GUID-7F528528-1814-39A6-BE14-CA1F7AABFD06"><apiname>CZipFile::GetMembersL()</apiname></xref> that returns a pointer
+of <xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita"><apiname>CZipFileMemberIterator</apiname></xref>  </info>
+<info>The <xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita"><apiname>CZipFileMemberIterator</apiname></xref> iterator
+class provides functions that point to the first file in the archive and to
+navigate through all the entries in the archive. </info>
+<info>The <xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita"><apiname>CZipFileMemberIterator</apiname></xref> iterator class can access
+each member of the zip archive using <xref href="GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A.dita#GUID-D458AE6A-EC64-3882-BCEA-A44A43DAA99A/GUID-610F12F0-C1B7-39BB-A446-7616BBF84B2C"><apiname>CZipFileMemberIterator::NextL()</apiname></xref>  </info>
+</step>
+<step id="GUID-BB056063-4391-5EC7-A223-ED752E2F1B32"><cmd/>
+<info>The properties of the member file are retrieved using the functions
+of <xref href="GUID-02A8BC62-D653-39A3-BE0C-92A5F3F43E85.dita"><apiname>CZipFileMember</apiname></xref>. </info>
+<info>The <xref href="GUID-02A8BC62-D653-39A3-BE0C-92A5F3F43E85.dita"><apiname>CZipFileMember</apiname></xref> class retrieves the properties
+of the member file once the member file is accessible. </info>
+</step>
+<step id="GUID-4EAC4BD5-551B-58A3-A6B4-D4433027F5C8"><cmd/>
+<info>The files extracted from the archive are stored in the output folder. </info>
+<info>If the output folder is unavailable a new folder is created prior to
+archive decompression. </info>
+</step>
+</steps>
+<example><p>The following example code illustrates the decompression of file
+archive. </p><codeblock xml:space="preserve">/*
+    * Decompresses all the files in "inputarchive.zip" using the EZlib.
+    *  If an input filename is not specified it is assumed that the
+    * input file name is contained in a provided .ini file.
+    */
+    void CEZlibEZipTests::DoEZlibZipArchiveDecompressL()
+    {
+    RFs iFs;
+    iFS.connect();
+    CleanupClosePushL(iFS);
+    TInt err = KErrNone;
+    HBufC8 *outputBuffer = HBufC8::NewLC(outputBufferSize);
+
+    _LIT(KInputFileLocation, "c:\\private\\E80000B7\\zip\\input\\inputarchive.zip");
+    TFileName inputFile(KInputFileLocation);
+
+    RFile input;
+    err = input.Open(iFs, inputFile, EFileStream | EFileRead | EFileShareExclusive);
+    if(err != KErrNone)
+        {
+        INFO_PRINTF1(KOpenFileError);
+        User::Leave(err);
+        }
+    CleanupClosePushL(input);
+
+    CZipFile *zipFile = CZipFile::NewL(iFs,input);
+    CleanupStack::PushL(zipFile);
+    CZipFileMemberIterator *fileMemberIter = zipFile-&gt;GetMembersL();
+
+    //  iZipArchiveEzlibFolder = GenerateZipArchiveFolderNameL(aInputFileName);
+    //  iZipArchiveEzlibFolder.Append(KZipArchiveEzlib);
+
+    for(TOLDEZIP::CZipFileMember *fileMember = fileMemberIter-&gt;NextL(); fileMember != NULL; fileMember = fileMemberIter-&gt;NextL())
+        {
+        TFileName tmpfilename(*(fileMember-&gt;Name()));
+
+        // Check if we have a folder or file
+        TPtrC lastChar = tmpfilename.Right(1);
+        if(lastChar.Compare(_L("\\")) != 0 &amp;&amp; lastChar.Compare(_L("/")) != 0)
+            {
+            RFile output;
+            err = output.Replace(iFs, tmpfilename, EFileStream | EFileWrite | EFileShareExclusive);
+            if(err != KErrNone)
+                {
+                INFO_PRINTF1(KCreateFileError);
+                User::Leave(err);
+                }
+            CleanupClosePushL(output);
+
+            TOLDEZIP::RZipFileMemberReaderStream *readerStream;
+            zipFile-&gt;GetInputStreamL(fileMember, readerStream);
+            CleanupStack::PushL(readerStream);
+
+            TPtr8 pOutputBuffer = outputBuffer-&gt;Des();
+            do
+                {
+                err = readerStream-&gt;Read(pOutputBuffer, outputBufferSize);
+                output.Write(pOutputBuffer);
+                } while(err == KErrNone);
+            if(err != KErrEof)
+                {
+                User::Leave(err);
+                }
+            CleanupStack::PopAndDestroy(2);
+            }
+        else
+            {
+            TFileName fullPath("c:\\private\\E80000B7\\zip\\input\\");
+            fullPath.Append(tmpfilename);
+            iRfs.MkDir(fullPath);
+            }
+        }
+    CleanupStack::PopAndDestroy(3);
+    }
+</codeblock></example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FDF3546D-1A16-5F71-B9E4-8DA0F02CC7A3.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FDF3546D-1A16-5F71-B9E4-8DA0F02CC7A3"><title>Reclamation and compaction, as a single job</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>Space reclamation for a store can be performed as a single job by calling the store’s <codeph>ReclaimL()</codeph> member function.</p> <p>Compaction for a store can be performed as a single job by calling the store’s <codeph>CompactL()</codeph> member function.</p> <p>Both <codeph>ReclaimL()</codeph> and <codeph>CompactL()</codeph> only return once space reclamation or compaction are complete, and this can take some time.</p> <p>Once compaction is complete, the store must be committed.</p> <p>Streams <i>must</i> be closed before calling <codeph>CompactL()</codeph>.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE138F1A-1F52-5E9A-8EB2-5A8945A9CF30.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE138F1A-1F52-5E9A-8EB2-5A8945A9CF30" xml:lang="en"><title>Destructor
+requirements</title><shortdesc>This document describes cleanup actions required for C type and
+other classes.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>For <codeph>C</codeph> type classes, cleanup invokes the destructor. For
+other types of object, other actions may be required. </p>
+<p>The destructor for <codeph>C</codeph> type classes must be coded to release
+all resources owned by the object. By definition, cleanup may occur on <i>partially</i> constructed
+objects: the destructor may not, therefore, assume that all conditions for
+a fully-constructed object hold in these circumstances. A typical situation
+to watch for is calling a member function on a pointer that is initialized
+in the <codeph>ConstructL()</codeph>, as the pointer could be <codeph>NULL</codeph> in
+failure cases.</p>
+<p>Resources will usually be indicated by pointers or handles. It is important
+that such pointers or handles are null when there is no resource allocated,
+and that the destructor test for a non-null value before destroying them.</p>
+<p>This behaviour is facilitated in <codeph>CBase</codeph> -derived classes,
+because their memory is guaranteed to be initially set to binary zeroes when
+they are first allocated.</p>
+<p>Programmers must, however, take particular care with pointers which are
+used for owned objects which are repeatedly allocated and de-allocated throughout
+an object’s lifetime. When such owned objects are de-allocated, the pointer
+should always immediately be set to null.</p>
+<section id="GUID-DFAB4D8D-FD81-4754-9472-2BCFD8B90F9E"><title>See also</title> <p><xref href="GUID-7366AE99-DE25-5DE0-BF9A-58E7742DA952.dita">Advanced
+Cleanup</xref>.</p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE14D954-4712-5DCE-998E-A39D79500ABF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE14D954-4712-5DCE-998E-A39D79500ABF" xml:lang="en"><title>Asynchronous
+service providers</title><shortdesc>This document explains the use of asynchronous service providers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In a multiprocessing system, user programs wait for events, for example,
+keyboard input, pointer input, completion of an I/O request, timer events
+etc. These events, and the services associated with them, are provided by <i>asynchronous
+service providers</i>.</p>
+<p>A program has a main loop that:</p>
+<ul>
+<li id="GUID-9F0D109A-9562-52C5-9AA7-B6C99FD4E0DA"><p>calls appropriate service
+providers</p> </li>
+<li id="GUID-5A0790A7-F25C-59C7-868D-AE7DFCF323AB"><p>waits for events</p> </li>
+<li id="GUID-17B548C5-5355-55FB-9F3F-2D229EF9F0BE"><p>acts on completed events,
+resulting, most likely, in further calls to service providers.</p> </li>
+</ul>
+<p>All Symbian platform programs make extensive use of asynchronous services.
+For this reason, Symbian platform provides mechanisms which make them easy
+to use. </p>
+<p>Low-level asynchronous service handling encompasses:</p>
+<ul>
+<li id="GUID-AC93B268-406A-5558-BCA1-AE1EB2448D51"><p>the asynchronous service
+provider, which provides asynchronous services using request functions and
+cancel functions.</p> </li>
+<li id="GUID-CC29D95F-0EE4-5F4C-918A-17AEF2EC6783"><p>the asynchronous <i>request
+status</i> which indicates the completion status of a request.</p> </li>
+<li id="GUID-ED692928-B973-59B2-A494-ABD8392CE603"><p>the <i>thread request
+semaphore</i>, the means by which a service provider signals to a requester
+that it has completed a request.</p> </li>
+</ul>
+<p>High-level asynchronous service handling encompasses</p>
+<ul>
+<li id="GUID-C8ECE905-78DC-5F32-9386-D2948C71CD79"><p>the <keyword>active
+scheduler</keyword>, which encapsulates the wait loop which is at the heart
+of all programs using multiple asynchronous services.</p> </li>
+<li id="GUID-552B8268-9CDA-5D8C-BA61-B6715F83E777"><p><keyword>active objects</keyword>,
+which encapsulate an asynchronous service provider, its request and cancel
+functions, and the function which handles completion of requests.</p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE2E8E58-6656-534E-A052-095AF559A482.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE2E8E58-6656-534E-A052-095AF559A482" xml:lang="en"><title>Alarm
+Time Formats</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The Alarm Server supports two types of time formats used to express the
+expiry time of an alarm: </p>
+<ul>
+<li id="GUID-90BAC4D4-DD00-51D2-8661-51E2680DA315"><p> <b>Fixed time format</b> -
+The alarm expires at the given UTC time and has no associated UTC offset.
+The alarm is not rescheduled when an UTC offset or DST change occur. </p> </li>
+<li id="GUID-A007966C-84AD-56E2-B692-7CAE4B3A648F"><p> <b>Floating time format</b> -
+The alarm expires at the given local (wall clock) time in the current UTC
+offset and are re-scheduled when either the UTC offset or DST change occurs. </p> </li>
+</ul>
+<p>The Alarm Server maintains a queue of alarms and the format of these alarms
+may be either fixed or floating time format. </p>
+<p>Hence, if the user adds an alarm defining one of its characteristics as <xref href="GUID-20A42BF7-A0F5-3177-9592-E3AE097B4CF2.dita#GUID-20A42BF7-A0F5-3177-9592-E3AE097B4CF2/GUID-EBAEFA64-7892-32D6-B8BF-EBE4EC9AFB83"><apiname>TAlarmCharacteristics::EAlarmCharacteristicsIsFixed</apiname></xref>,
+then it is added in the alarm queue as fixed time format based alarm. </p>
+<p> </p>
+<p> <b>NOTE</b>: </p>
+<ul>
+<li id="GUID-14A58869-C859-5F7B-A28A-319F180DD8CE"><p> <b>UTC time</b> is
+the non-secure system time in UTC (UTC time range is from 0-24, so after 12,
+the time is expressed in PM). </p> <p> <b>Standard Time</b> = UTC Time + Timezone/UTC
+offset </p> <p> <b>Wall Clock/local time</b> = UTC Time + Timezone/UTC offset
+± DST offset </p> </li>
+<li id="GUID-24513E63-880C-5147-9A5F-AFF047370175"><p>All alarms (irrespective
+of the time format) undergo rescheduling and re-evaluation of their next due
+time (considering their repeat definition) only when either system time/date
+or workdays change. </p> </li>
+<li id="GUID-80D105D4-D99D-56F3-9D92-11F7686FF3C1"><p>Only the floating time
+format based alarms undergo re-scheduling and re-evaluation of their next
+due time if the system time/date, workdays, UTC offset changes or DST rollover
+event occurs. </p> </li>
+</ul>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC"><title>Data Access Example</title><shortdesc>This example describes typical processing of the data in an RMBufChain. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><section><title>Downwards flow</title> <fig id="GUID-43219AE7-A0E4-570A-98ED-07D44D849979"><title>
+             Example : flow going downwards 
+          </title> <image href="GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e92570_href.png" placement="inline"/></fig> <p>The following function is a simplified example of how a component in the middle of the stack could process data sent to the driver. As shown in the above diagram, the upper layer provides the data in the <codeph>RMBufChain</codeph> parameter. </p> <codeblock id="GUID-4C87CEB3-DCFD-5765-BF89-6EF9275EB584" xml:space="preserve">
+void Send (RMBufChain &amp;aChain) 
+{
+   TBuf8&lt;KHeaderLength&gt; aHeader;
+   
+   // [...] fill the header
+
+   // request space in front of the data 
+   aChain.Prepend(KHeaderLength);
+
+   // add the protocol header
+   aChain.CopyIn(aHeader);
+
+   // send the updated chain to the next layer
+   downwardComponent-&gt;Send(aChain);
+}
+   </codeblock> <p>Note that depending on the available space remaining in front of the data in the MBuf, the <xref href="GUID-F024208C-ED19-3301-85C1-53F397C9910F.dita#GUID-F024208C-ED19-3301-85C1-53F397C9910F/GUID-A7CEF452-AB4E-378C-A262-B1C5FCBA68BB"><apiname>RMBufChain::Prepend()</apiname></xref> method may request the pond to add a new MBuf to the front of the chain. For more information, see <xref href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita#GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72/GUID-5EBCD46C-5E07-5DB1-90D9-6A5CA3E36C0B">Buffer layout</xref>. </p> </section> <section><title>Upwards flow</title> <fig id="GUID-402331EB-6DE8-5DC5-9FF7-7D5DD8D816D5"><title>
+             Example : flow going upwards 
+          </title> <image href="GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e92600_href.png" placement="inline"/></fig> <p>The following function is a simplified example of how a component in the middle of the stack could process data received by the driver. As shown in the above diagram, the underlying layer provides the data in the <codeph>RMBufChain</codeph> parameter. </p> <codeblock id="GUID-C36656D9-AEB0-5DBF-A469-0183F80AE057" xml:space="preserve">
+void Process (RMBufChain &amp;aChain)
+{
+   TBuf8&lt;KHeaderLength&gt; aHeader;
+   
+   // get a copy of the header
+   aChain.CopyOut(KHeaderLength, &amp;aHeader);
+   
+   // discard the header in the chain
+   aChain.TrimStart(KHeaderLength);
+
+   // [...] process the header
+   
+   // send the updated chain to the next layer
+   appropriateUpwardComponent-&gt;Process(aChain);
+}
+</codeblock> <p>Note that the header might not be stored in a contiguous memory area: it can be splitted accross several chained MBufs. For a better performance, you should define a buffer size slightly bigger than your MTU: for more information, see <xref href="GUID-6FEE5676-8BFB-53E6-A652-7178295C342E.dita#GUID-6FEE5676-8BFB-53E6-A652-7178295C342E/GUID-8F0E62BA-455A-5C58-9AB1-70C79F5BA573">Pond Configuration : Recommendations</xref>. </p> </section> </conbody><related-links><link href="GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita"><linktext>Overview</linktext> </link> <link href="GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita"><linktext>Comms Buffers (MBuf)
+                and Comms Chains</linktext> </link> </related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e162673_href.png has changed
Binary file Symbian3/SDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e164328_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE76E172-6B94-47CC-9551-6DD62C04368D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE76E172-6B94-47CC-9551-6DD62C04368D" xml:lang="en"><title>Analysis
+of OSS</title><shortdesc>This section explains the tools and tips for effective analysis
+of Linux OSS.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-533D0116-B744-4DAD-8E4B-4957E911D6C5">       <title>Installing
+Linux packages in Linux</title>  <ul>
+<li><p>Get the latest stable release of OSS from the Internet. Usually OSS
+come a in compressed format like <filepath>.tar</filepath>, <filepath>.gz</filepath>,
+or <filepath>bz2</filepath>.</p></li>
+<li><p>Run the configure script using the following command: <codeph>./configure</codeph>.
+It will look for dependency and creates makefiles.</p></li>
+<li><p>Compile the code using make tool.</p></li>
+<li><p>Copy the files to the target path using the command make install. </p></li>
+</ul></section>
+<section id="GUID-6A79BF94-03C7-4974-B998-2D91483E08AB"><title>Directory analysis </title><p>OSS
+creates the following three subdirectories in the installation directory: <filepath>include</filepath>, <filepath>lib</filepath>,
+and <filepath>bin</filepath>. These directories contain valuable information
+required for porting, as explained below:</p><ul>
+<li><p><b><filepath>include</filepath></b> – This directory contains the user
+include files that need to be exported to the proper export directory in Symbian
+platform. </p></li>
+<li><p><b><filepath>lib</filepath></b> – This directory gives an idea of the
+size of the library. It contains libraries built as a result of OSS compilation.
+Each of these requires an individual MMP file. </p><note>Symbian platform
+compilers produce much smaller-sized libraries than what there are in Linux.</note><table id="GUID-EE2394CB-19F0-4E68-936C-A42AE6AF30EE">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<tbody>
+<row>
+<entry><p><b>Linux</b></p></entry>
+<entry><p><b>Symbian platform</b></p></entry>
+</row>
+<row>
+<entry><p>.SO extension for dynamic libraries</p></entry>
+<entry><p>.DLL extension for dynamic libraries</p></entry>
+</row>
+<row>
+<entry><p>.A extension for static libraries</p></entry>
+<entry><p>.LIB extension for static libraries</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table></li>
+<li><p><b><filepath>bin</filepath></b> – This directory contains the executable
+built during the compilation of OSS. </p></li>
+<li><p><b><filepath>man</filepath></b> – This directory contains the man pages
+of OSS. </p></li>
+</ul></section>
+<section id="GUID-2CFCDC34-B64D-41E7-B432-EF169EAE6392"><title>Tips and tools</title><p>Tools
+like <codeph>nm</codeph>, <codeph>ldd</codeph>, and <codeph>dumpbin</codeph> are
+useful in OSS porting:</p><ul>
+<li><p><b><codeph>ldd</codeph></b> – A Linux tool that can be used to find
+the dependency library list and overall size of the library, obtained by adding
+the size of all the dependent libraries. In many cases, to build library 'X'
+another library 'Y' is needed.</p></li>
+<li><p><b><codeph>nm</codeph></b> – Another Linux tool that prints the symbol
+table in alphabetical order from one or more object files.</p></li>
+<li><p><b><codeph>dumpbin</codeph></b> – A Windows-based tool that can be
+used if Windows port is available for OSS. It gets the list of exported symbols. </p></li>
+</ul><p>The following command can be used to install the software in the user
+directory:  </p><codeblock xml:space="preserve"> ./configure --prefix=$HOME/&lt;foo&gt;</codeblock><p>The
+following commands can be used to decompress the file:</p><codeblock xml:space="preserve">tar -xvjf archivefile.tar.bz2 
+tar -zxvf archivefile.tar.bz2</codeblock><p>At the end of installing the OSS
+in Linux, it is good to update the environment variables <codeph>PKG_CONFIG_PATH</codeph> and <codeph>LD_LIBRARY_PATH</codeph>.
+One of the many ways to initialize environment variables is to add them in
+the <filepath>.bash_rc</filepath> file.</p><p>Makefile gives subtle information
+about the project. <codeph>SOURCES</codeph> in Makefile gives an idea about
+the source files of the OSS. These files have to be listed in <codeph>SOURCE</codeph> in
+the MMP file.</p><p><codeph>-D&lt;Foo&gt;</codeph> in Makefile gives the list
+of preprocessor declarations. These preprocessor declarations can be done
+using <codeph>MACRO</codeph> in the MMP file. </p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB"><title> Scaling Automatically</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This tutorial describes how to set automatic scaling. </p> <section><title>Purpose</title> <p>The purpose of this tutorial is to show you how to scale the video picture to automatically match the video window. </p> <p><b>Required Background</b> </p> <p>The <xref href="GUID-2DC80BA9-7AA2-5CD3-9105-1DE28CE196C1.dita">Video Client Overview</xref> introduces the video client utilities. </p> <p><b>Introduction</b> </p> <p>Automatic scaling enables you to set video display settings, such as best fit or stretch, that can apply irrespective of the resolution of a video clip. This functionality is provided by the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F6AE0276-9C47-3342-8768-290E13586AF9"><apiname>CVideoPlayerUtility::SetAutoScaleL()</apiname></xref> method. </p> <p> <b>Note:</b> Not all video controllers support automatic scaling. </p> </section> <section><title>Using Automatic Scaling </title> <p>The following tasks are covered in this tutorial: </p> <ul><li id="GUID-E5D983C4-821C-5B95-A97D-4748FCF6C442"><p><xref href="GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB.dita#GUID-FE7DE542-3FD4-56D2-B281-C670EF1C4FEB/GUID-E5B9D967-820A-5854-A634-F752E9033BDB">Set Automatic Scaling</xref>  </p> </li> </ul> <p id="GUID-E5B9D967-820A-5854-A634-F752E9033BDB"><b>Basic Procedure</b> </p> <p>The high level steps to set automatic scaling are shown here: </p> <ol id="GUID-47B6A15C-9909-54FD-AC5F-E3BB03B2441C"><li id="GUID-F6231296-DAF6-5704-8B65-303BDFEF3664"><p>Create a new video player utility object. </p> </li> <li id="GUID-B84AE1FF-B56F-5AE8-9F51-227CE150D06D"><p>Open a video clip to play. </p> </li> <li id="GUID-A5C9FA0F-3A03-5283-B0A2-8032AB24D4E0"><p>Set automatic scaling using one of the following methods: </p> <ul><li id="GUID-80CEC490-3990-57A8-A305-A8D0E62B746A"><p> <b>Based on Scaling Type</b>  </p> <p>Call <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F6AE0276-9C47-3342-8768-290E13586AF9"><apiname>CVideoPlayerUtility::SetAutoScaleL()</apiname></xref> and set <xref href="GUID-3F4883AD-AE6B-3353-883E-3389E3DB6040.dita"><apiname>aScaleType</apiname></xref> to the automatic scaling type required. </p> </li> <li id="GUID-8A3E0397-75C5-5D2B-A0F6-92F01537A0DA"><p> <b>Based on Scaling Type and Vertical and Horizontal Position</b>  </p> <p>Call <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F6AE0276-9C47-3342-8768-290E13586AF9"><apiname>CVideoPlayerUtility::SetAutoScaleL()</apiname></xref> and set <xref href="GUID-3F4883AD-AE6B-3353-883E-3389E3DB6040.dita"><apiname>aScaleType</apiname></xref>, <xref href="GUID-A8FC551F-3E90-3359-9D3F-76A6180E3AB0.dita"><apiname>aHorizPos</apiname></xref> and <xref href="GUID-B4900AC3-0A39-320B-AD92-47F84DFD6875.dita"><apiname>aVertPos</apiname></xref> to the required values. </p> </li> </ul> <p> <b>Note:</b> Calling <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-F6AE0276-9C47-3342-8768-290E13586AF9"><apiname>CVideoPlayerUtility::SetAutoScaleL()</apiname></xref> will override any scaling factors set with <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-82617B68-03F5-3B7F-961E-FEA20A595913"><apiname>CVideoPlayerUtility::SetScaleFactorL()</apiname></xref>. </p> </li> <li id="GUID-979D9C6B-12A8-5B79-8C86-D27DFB0BA776"><p>Call the <xref href="GUID-0F1F8AC6-B99F-3274-A785-9977197AF762.dita#GUID-0F1F8AC6-B99F-3274-A785-9977197AF762/GUID-B4FB00AA-A85B-3A3F-91BE-C5347462BA95"><apiname>CVideoPlayerUtility::Prepare()</apiname></xref> method. </p> </li> <li id="GUID-9442FF1C-79C4-52CD-B552-4A477C01CDF1"><p>Control playback normally. </p> </li> </ol> <p><b>Example</b> </p> <codeblock id="GUID-690C0DBD-A771-556C-86D7-F1B26CA96EA3" xml:space="preserve">//Create new video player utility object (iVideoPlayer) 
+// Open the video clip
+
+iVideoPlayer-&gt;SetAutoScaleL(EAutoScaleBestFit); 
+// scale picture to best fit window without clipping
+
+// Call Prepare() and then Play() to playback normally</codeblock> </section> <section><title>See Also</title> <p><xref href="GUID-172F46C1-6066-57FA-A815-5AC23ACE159D.dita">Creating and Preparing a Video Player</xref>  </p> <p><xref href="GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita">Configuring the Video Player</xref> </p> <p><xref href="GUID-733B9695-0C7C-5637-9025-6CE3BAA1A23E.dita"> Enabling/Disabling Audio or Video Playback Separately</xref>  </p> <p><xref href="GUID-5F4510C9-5B16-593A-A225-37606800915B.dita">Controlling Video Playback</xref>  </p> <p><xref href="GUID-70B3881F-9532-5F1D-B210-99A15DB93FC2.dita">Fast Forwarding and Rewinding</xref>  </p> <p><xref href="GUID-469377FB-AAE8-5245-A8E1-469C65AFE5C5.dita">Stepping Frames</xref>  </p> <p><xref href="GUID-F13C7D36-E4AB-57F1-87A1-EB83AA2258DF.dita">Controlling the Video Controller Plugin</xref>  </p> </section> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE888721-C479-5D8A-810F-1A79575A1D58.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE888721-C479-5D8A-810F-1A79575A1D58" xml:lang="en"><title>Introduction
+to Lexical Analysis</title><shortdesc>A <codeph>TLex</codeph> object is used to perform lexical analysis. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>The class is used to:</p>
+<ul>
+<li id="GUID-4D79DE44-4E35-56C3-B6ED-5A82CD015FE9"><p>store a string</p> </li>
+<li id="GUID-537012CB-CFCC-55C3-82DE-1D9B18539BEC"><p>maintain an extraction
+mark to indicate the current lexical element being analysed</p> </li>
+<li id="GUID-7B398A9C-42F1-5ABE-80ED-4237F72806BD"><p>maintain a pointer to
+indicate the next character to be examined.</p> </li>
+</ul>
+<p>Member functions provide facilities to allow analysis and extraction of
+lexical elements from a <codeph>TLex</codeph> object, and a variety of string-to-number
+conversions.</p>
+<p>The <codeph>TLex</codeph> class provides general-purpose lexical analysis
+functions, using the locale-dependent functions of <codeph>TChar</codeph> to
+identify whether characters are digits, letters etc. The data for these locale-dependent
+functions is held in kernel-side locale tables. Thus, <codeph>TLex</codeph> functions
+which use them, require an executive call. If an application requires very
+fast lexical analysis of a language which is not locale-specific, then there
+may be some advantage in designing and implementing a special-purpose lexical
+analyzer class.</p>
+</conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FE89E799-4F19-4C22-96B7-8006EB55812E_d0e41980_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE9017F4-4197-472F-A3E7-267169A51ABD" xml:lang="en"><title>Registration</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>You need to register your applications in order to make them visible
+to the application menu and to provide other information to the underlying
+operating system. To register, you need to provide a registration resource
+file, typically named <parmname>&lt;application_name&gt;_reg.rss</parmname> that
+contains the non-localized information for your application. Examples of non-localized
+information include:</p>
+<ul>
+<li><p>UID of the application</p></li>
+<li><p>name of the application executable, without an extension</p>
+</li>
+<li><p>application properties, such as embeddability or whether
+it is hidden</p></li>
+</ul>
+<p>For more information on how to create a registration file for the non-localized
+information for your application, see <xref href="GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita">Creating
+registration resource files</xref>. </p>
+<p>You also need to provide localized information for your applications,
+such as captions and icons. This is done by either including a name and path
+of a localizable icon and caption resource file or the symbolic ID of a <parmname>LOCALISABLE_APP_INFO</parmname> data
+structure in your application UI resource file. For a discussion of the available
+options for where you can place this resource statement, see <xref href="jar:GUID-35228542-8C95-4849-A73F-2B4F082F0C44.jar!/sdk/doc_source/ToolsAndUtilities94/DevTools/RegFiles/Tool_Guide_LocalisableIconFile.html#Tool_Guide_LocalisableIconFile" format="application/java-archive">Localisable
+icon/caption definition files</xref>. </p>
+<p>You may define the following localized information:</p>
+<ul>
+<li><p>application caption, which is typically displayed next to
+the icon in the application menu</p></li>
+<li><p>short caption used by some mobile devices when screen space
+is limited</p></li>
+<li><p>name of the icon file</p></li>
+</ul>
+<p>For more information on using the <parmname>LOCALISABLE_APP_INFO</parmname> data
+structure, see <xref href="GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita">Defining
+localizable registration information</xref></p>
+<note>
+<p>You must compile both the non-localized information registration resource
+file and the localized information resource file and include the results in
+your package file in order for your application to be registered in a mobile
+device.</p>
+
+</note>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF" xml:lang="en"><title>Using
+Publish and Subscribe</title><shortdesc>This topic explains the operations that can be performed using
+publish and subscribe.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<ul>
+<li id="GUID-AE4CAAA9-9EB2-5AA0-ACB9-073EAAA9D2C1"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-383A6127-FCE0-5B0E-BD54-3AAFEB097AC9">Creating and closing a handle to a property</xref>  </p> </li>
+<li id="GUID-3F0622EC-8490-585A-8CA8-09A3925E842E"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-75BCC783-8DA2-519F-9E4A-B597BDC90E79">Defining a property</xref>  </p> </li>
+<li id="GUID-D6C38BDD-02CD-5D9F-8872-DD621D58DB85"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-D942B400-37F8-5C02-AC95-2BD195D3348D">Deleting a property</xref>  </p> </li>
+<li id="GUID-ED1DE72F-9111-51A5-9AB2-D7112D947465"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-3B2B63B8-EB2A-5845-A738-A10012A7C896">Publishing a property value</xref>  </p> </li>
+<li id="GUID-360F7C12-4909-52EE-9468-E40A3ABC944A"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-CD731DD7-E833-5C67-9B90-0357C9552450">Retrieving a property value</xref>  </p> </li>
+<li id="GUID-57301501-34C1-5BE1-9AAB-36F97DBCF5C0"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-A17955E9-FC4C-5FF9-8CC4-2425931E1DEB">Subscribing to, and unsubscribing from, a property</xref>  </p> </li>
+<li id="GUID-AAA0B4BB-4B01-5F5E-8617-6D02B36DCEF2"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-EF683969-CED9-5986-938D-3D887E3B39BD">Usage patterns</xref>  </p> </li>
+<li id="GUID-E2D3A0BE-1FD9-5B56-928A-4265940E0DEA"><p> <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-2B022BE9-2004-54E8-962E-5AB38DDC4222">Making efficient use of the user side API</xref>  </p> </li>
+</ul>
+<section id="GUID-383A6127-FCE0-5B0E-BD54-3AAFEB097AC9"><title>Creating and
+closing a handle to a property</title> <p>Some property operations require
+a reference to the property to be established first. This is done using the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-3F65DD85-6061-3370-9618-ECC0400323D1"><apiname>RProperty::Attach()</apiname></xref> member
+function. After a call to this function, the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> object
+acts like a standard handle to a kernel resource. When this handle is no longer
+required, it can be released in the standard way by calling the inherited <xref href="GUID-727D2B62-09A9-3CBC-AB6F-591E52EC68EB.dita#GUID-727D2B62-09A9-3CBC-AB6F-591E52EC68EB/GUID-4B2775FD-AB61-3850-86C5-780CE8C97573"><apiname>RHandleBase::Close()</apiname></xref> member
+function. </p> <p>Note that releasing the handle does not cause the property
+to disappear. This only happens if the property is deleted. </p> <p>Note also
+that it is quite legitimate to attach to a property that has not been defined,
+and in this case no error will be returned either. This enables the lazy definition
+of properties as used in some of the usage patterns. </p> <codeblock id="GUID-A836D288-8511-5CED-B3F9-42B60569EE27" xml:space="preserve">// attach to the ‘counter’ property
+RProperty counter;
+TInt r=counter.Attach(KMyPropertyCat,EMyPropertyName,EOwnerThread);
+User::LeaveIfError(r);
+
+// use the counter object...
+
+// when finished, release the handle
+counter.Close();
+    </codeblock> </section>
+<section id="GUID-75BCC783-8DA2-519F-9E4A-B597BDC90E79"><title>Defining a
+property</title> <p>A property is defined using the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-58C54D2A-91E0-359B-AA31-69C6C4050173"><apiname>RProperty::Define()</apiname></xref> function,
+specifying the attributes of that property. </p> <p>A property does not need
+to be defined before it can be accessed. This supports programming patterns
+where both publishers and subscribers may define the property. Note, however
+that for security reasons, there are restrictions on the category that can
+be used when defining a property; see <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita">security
+issues</xref> for more information. </p> <p>Once defined, a property persists
+in the kernel until the system reboots, or the property is explicitly deleted.
+Its lifetime is not tied to that of the thread or process that originally
+defined it. This means that, when defining a property, it is important to
+check the return code from the call <codeph>RProperty::Define()</codeph> to
+deal with the possibility that the property has previously been defined, but
+not deleted. </p> <p>The following code shows the definition of two properties: </p> <codeblock id="GUID-1F3E05DB-A34B-5D79-8512-52CAD86B0A2D" xml:space="preserve">enum TMyPropertyKeys={EMyPropertyCounter,EMyPropertyName};
+
+static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
+static _LIT_SECURITY_POLICY_C1(KPowerMgmtPolicy,ECapabilityPowerMgmt);
+
+// define first property to be integer type
+TInt r=RProperty::Define(EMyPropertyCounter,RProperty::EInt,KAllowAllPolicy,KPowerMgmtPolicy);
+if (r!=KErrAlreadyExists)
+    {
+    User::LeaveIfError(r);
+    }
+
+// define second property to be a byte array, allocating 100 bytes
+r=RProperty::Define(EMyPropertyName,RProperty::EByteArray,KAllowAllPolicy,KPowerMgmtPolicy,100);
+if (r!=KErrAlreadyExists)
+    {
+    User::LeaveIfError(r);
+    }
+. . .
+    </codeblock> <p>Once defined, a property value can change, but the property
+type cannot. Byte-array type properties can also change length provided the
+length does not exceed the maximum value of 512 bytes. The limit on the size
+of a property ensures some limit on RAM usage. </p> <p>The API allows byte-array
+and Unicode text type properties to be pre-allocated when they are defined.
+This means that the time taken to set the values is bounded. However, if the
+length of these property types subsequently increases, then memory allocation
+may take place, and no guarantees can then be made on the time taken to set
+them. </p> <p>There are further <xref href="GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita">security
+issues</xref> to be considered when defining a property. You need to provide
+two security policies - one to govern which processes can publish the property
+value, and the other to govern which processes can retrieve the property value.
+Security policies are instances of <xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref> objects,
+although for efficiency reasons, you will almost always use the <codeph>_LIT_SECURITY_POLICY_...</codeph> macros
+to generate constant objects that behave like <codeph>TSecurityPolicy</codeph> objects.
+The API reference for <xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref> provides far more
+detail on this. </p> <p>In this example, all processes will be allowed to
+retrieve the property value, but only those processes having the power management
+system capability (<xref href="GUID-76F4383B-4EA5-391A-A271-A8F65ED77EC0.dita"><apiname>ECapabilityPowerMgmt</apiname></xref>) will be allowed
+to publish the property value. </p> <p>Note that a process that defines a
+property does not have automatic rights of access to that property, other
+than to delete it. If the defining process also wishes to publish and/or subscribe
+to that property, then it must ensure that it satisfies the security policies
+that it itself has put in place when defining the property. </p> </section>
+<section id="GUID-D942B400-37F8-5C02-AC95-2BD195D3348D"><title>Deleting a
+property</title> <p>A defined property is deleted by calling <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-226BC411-A2D2-30D1-BD86-9DDBD855C1E4"><apiname>RProperty::Delete()</apiname></xref>.
+Any outstanding subscriptions for this property will complete with <xref href="GUID-5E653C17-372C-32E1-A1B2-9E69A9991C40.dita"><apiname>KErrNotFound</apiname></xref>.
+Only the process with the correct secure ID is allowed to delete it. </p> <p>For
+example, extending the code fragment introduced above: </p> <codeblock id="GUID-D4CC3017-D17D-5E7C-AC57-0DBD8B789349" xml:space="preserve">enum TMyPropertyKeys={EMyPropertyCounter,EMyPropertyName};
+
+// define first property to be integer type
+TInt r=RProperty::Define(EMyPropertyCounter,RProperty::EInt);
+if (r!=KErrAlreadyExists)
+    {
+    User::LeaveIfError(r);
+    }
+
+// define second property to be a byte array, allocating 100 bytes
+r=RProperty::Define(EMyPropertyName,RProperty::EByteArray,100);
+if (r!=KErrAlreadyExists)
+    {
+    User::LeaveIfError(r);
+    }
+. . .
+
+// much later on
+
+. . .
+// delete the ‘name’ property
+r=RProperty::Delete(EMyPropertyName);
+if (r!=KErrNotFound)
+    {
+    User::LeaveIfError(r);
+    }
+    </codeblock> </section>
+<section id="GUID-3B2B63B8-EB2A-5845-A738-A10012A7C896"><title>Publishing
+a property value</title> <p>A property is published using the <codeph>RProperty::Set()</codeph> family
+of functions. Properties can be published: </p> <ul>
+<li id="GUID-3A136703-587F-55B9-9EE6-EE512845956A"><p>using a previously attached <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> handle, </p> </li>
+</ul> <p>or </p> <ul>
+<li id="GUID-126B0DC1-D4FC-520C-9583-50E64CBC7B80"><p>by specifying the property
+category and key with the new value. </p> </li>
+</ul> <p>The former mode is guaranteed to have bounded execution time, suitable
+for high-priority, real-time tasks, except when publishing a byte-array property
+that requires the allocation of a larger space for the new value. </p> <p>The
+latter mode offers no real-time guarantees. </p> <p>Property values are written
+atomically. This means that it is not possible for threads reading a property
+to get a garbled value. </p> <p>All outstanding subscriptions for a property
+are completed when the value is published, even if it is exactly the same
+as the existing value. This means that a property can be used as a simple
+broadcast notification service. </p> <p>Publishing a property that is not
+defined is not necessarily a programming error. The <codeph>Set()</codeph> functions
+just return an error. If this is not expected for any particular usage, then
+the error must be checked and processed by the caller. </p> <p>See the code
+fragment in the section <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-CD731DD7-E833-5C67-9B90-0357C9552450">Retrieving
+a property value</xref>  </p> </section>
+<section id="GUID-CD731DD7-E833-5C67-9B90-0357C9552450"><title>Retrieving
+a property value</title> <p>The current value of a property is read using
+the <codeph>RProperty::Get()</codeph> family of functions. Properties can
+be retrieved: </p> <ul>
+<li id="GUID-81AD34BF-9A45-5DEE-AD20-AA908F5BF94A"><p>using a previously attached <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> handle, </p> </li>
+</ul> <p>or </p> <ul>
+<li id="GUID-1163D9F2-BDEA-55E1-B6FB-D9A353F4D53E"><p>by specifying the property
+category and key with the new value. </p> </li>
+</ul> <p>The former mode is guaranteed to have bounded execution time, suitable
+for high-priority, real-time tasks. </p> <p>The latter mode offers no real-time
+guarantees. </p> <p>Property values are read atomically. This means that it
+is not possible for threads reading a property to get a garbled value. </p> <p>Retrieving
+a property that is not defined is not necessarily a programming error. The <codeph>Get()</codeph> functions
+just return an error. If this is not expected for any particular usage, then
+the error must be checked and processed by the caller. </p> <p>Integer properties
+must be accessed using the overloads that take an integer or integer reference
+value, whereas byte-array properties can be accessed using the overloads that
+take a descriptor reference. </p> <p>The following code fragment shows publication
+and retrieval of a property. Note that it uses the idea of attaching to a
+property. Note also that it contains a race condition, especially if another
+thread is executing the same sequence to increment the ‘counter’ value. </p> <codeblock id="GUID-27B8D567-DD92-5FD6-B2E3-AF343C1116B1" xml:space="preserve">const TUid KMyPropertyCat={0x10012345};
+enum TMyPropertyKeys={EMyPropertyCounter,EMyPropertyName};
+
+// attach to the ‘counter’ property
+RProperty counter;
+TInt r=counter.Attach(KMyPropertyCat,EMyPropertyCounter,EOwnerThread);
+User::LeaveIfError(r);
+
+// publish a new name value
+TFileName n;
+RProcess().Filename(n);
+r=RProperty::Set(KMyPropertyCat,EMyPropertyName,n);
+User::LeaveIfError(r);
+
+// retrieve the first 10 characters of the name value
+TBuf&lt;10&gt; name;
+r=RProperty::Get(KMyPropertyCat,EMyPropertyName,name);
+if (r!=KErrOverflow)
+    {
+    User::LeaveIfError(r);
+    }
+
+// retrieve and publish a new value using the attached ‘counter’ property
+TInt count;
+r=counter.Get(count);
+if (r==KErrNone)
+    {
+    r=counter.Set(++count);
+    }
+User::LeaveIfError(r);
+
+// when finised, release the handle
+counter.Close();
+    </codeblock> </section>
+<section id="GUID-A17955E9-FC4C-5FF9-8CC4-2425931E1DEB"><title>Subscribing
+to, and unsubscribing from, a property</title> <p>Subscribing to a property
+is the act of making an asynchronous request to be notified of a change to
+that property. </p> <p>A thread makes a request for notification of a change
+to a property by calling the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-21A2FEB7-AAF1-3AC0-84B9-AB30E6CFFF99"><apiname>RProperty::Subscribe()</apiname></xref> member
+function on an already attached property object. Only one subscription request
+can be outstanding at any one time for a <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> instance. </p> <p>An
+outstanding subscription request can be cancelled by calling the <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-326D75D3-9D54-3BD2-8B78-FAD1EEA1A1A5"><apiname>RProperty::Cancel()</apiname></xref> member
+function. This is unsubscribing from the property. </p> <p>Subscribing to
+a property is a single request to be notified when the property is next updated,
+it does not generate an ongoing sequence of notifications for every change
+to that property's value. Neither does it provide the caller with the new
+value. In essence, the act of notification should be interpreted as “Property
+X has changed” rather than “Property X has changed to Y”. This means that
+the new value must be explicitly retrieved, if required. As a result, multiple
+updates may be collapsed into one notification, and subscribers may not have
+visibility of all intermediate values. </p> <p>This might appear to introduce
+a window of opportunity for a subscriber to be out of synchronisation with
+the property value – in particular, if the property is updated again before
+the subscriber thread has had the chance to process the original notification.
+However, a simple programming pattern, outlined in the second example below
+ensures this does not happen. The principle is that, before dealing with a
+subscription completion event, an active object should re-issue the subscription
+request. </p> <p>Note that if the property has not been defined, then a subscription
+request does not complete until the property is subsequently defined and published.
+Note that the request will complete with <xref href="GUID-213DE05E-24F7-3E94-9B35-F4A72B3EBFD8.dita"><apiname>KErrPermissionDenied</apiname></xref> if
+the subscribing process does not have sufficient capability as defined by
+the <xref href="GUID-81A285F6-3F87-3E77-9426-61BB16BC7109.dita"><apiname>TSecurityPolicy</apiname></xref> object supplied by the process defining
+the property. </p> <p>If the property is already defined, then the request
+completes immediately with <xref href="GUID-213DE05E-24F7-3E94-9B35-F4A72B3EBFD8.dita"><apiname>KErrPermissionDenied</apiname></xref> if the
+subscribing process does not have sufficient capability. </p> <codeblock id="GUID-F8AB71E9-1EB4-5EFB-9D1F-38625F782BA6" xml:space="preserve">const TUid KMyPropertyCat={0x10012345};
+enum TMyPropertyKeys={EMyPropertyCounter,EMyPropertyName};
+
+// attach to the ‘counter’ property
+RProperty counter;
+TInt r=counter.Attach(KMyPropertyCat,EMyPropertyCounter,EOwnerThread);
+User::LeaveIfError(r);
+
+// wait for the previously attached ‘counter’ property to be updated
+TRequestStatus s;
+counter.Subscribe(s);
+User::WaitForRequest(s);
+
+// Notification complete, retrieve the counter value.
+TInt count;
+counter.Get(count);
+. . .
+    </codeblock> <codeblock id="GUID-5E726809-0060-5E76-A0D5-4AE73155724A" xml:space="preserve">const TUid KMyPropertyCat={0x10012345};
+enum TMyPropertyKeys={EMyPropertyCounter,EMyPropertyName};
+
+// Active object that tracks changes to the ‘name’ property
+class CPropertyWatch : public CActive
+    {
+    enum {EPriority=0};
+public:
+    static CPropertyWatch* NewL();
+private:
+    CPropertyWatch();
+    void ConstructL();
+    ~CPropertyWatch();
+    void RunL();
+    void DoCancel();
+private:
+    RProperty iProperty;
+    };
+
+CPropertyWatch* CPropertyWatch::NewL()
+    {
+    CPropertyWatch* me=new(ELeave) CPropertyWatch;
+    CleanupStack::PushL(me);
+    me-&gt;ConstructL();
+    CleanupStack::Pop(me);
+    return me;
+    }
+
+CPropertyWatch::CPropertyWatch()
+    :CActive(EPriority)
+    {}
+
+void CPropertyWatch::ConstructL()
+    {
+    User::LeaveIfError(iProperty.Attach(KMyPropertyCat,KMyPropertyName));
+    CActiveScheduler::Add(this);
+    // initial subscription and process current property value
+    RunL();
+    }
+
+CPropertyWatch::~CPropertyWatch()
+    {
+    Cancel();
+    iProperty.Close();
+    }
+
+void CPropertyWatch::DoCancel()
+    {
+    iProperty.Cancel();
+    }
+
+void CPropertyWatch::RunL()
+    {
+    // resubscribe before processing new value to prevent missing updates
+    iProperty.Subscribe(iStatus);
+    SetActive();
+
+    // property updated, get new value
+    TFileName n;
+    if (iProperty.Get(n)==KErrNotFound)
+        {
+        // property deleted, do necessary actions here...
+        NameDeleted();
+        }
+    else
+        {
+        // use new value ...
+        NameChanged(n);
+        }
+    }
+    </codeblock> </section>
+<section id="GUID-EF683969-CED9-5986-938D-3D887E3B39BD"><title>Usage patterns</title> <p>There
+are three usage patterns that can easily be identified, labelled as: standard
+state, pure event distribution, and speculative publishing. </p> <p id="GUID-0DFB902E-FCE1-52CF-8523-C7AE7B6768CE"><b>Standard state</b> </p> <p>This
+pattern is used for events and state that are known to be used widely in the
+system. Examples of this might be battery level and signal strength, which
+are important in every phone. </p> <p>The publisher calls <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-58C54D2A-91E0-359B-AA31-69C6C4050173"><apiname>RProperty::Define()</apiname></xref> to
+create the appropriate property. For byte array or text properties, a size
+sufficient for all possible values should be reserved. An error of <xref href="GUID-D1D25122-F2B8-3C78-8599-84905BFD47B8.dita"><apiname>KErrAlreadyExists</apiname></xref> should
+be ignored. The publisher then publishes the property values as, and when,
+appropriate. If the <codeph>RProperty::Set()</codeph> call fails, this should
+be treated as a serious error, since it indicates that important system state
+is not getting through. Appropriate action might include panicking or rebooting
+the system. Subscribers will use <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-21A2FEB7-AAF1-3AC0-84B9-AB30E6CFFF99"><apiname>RProperty::Subscribe()</apiname></xref> to
+request notification, and <codeph>RProperty::Get()</codeph> to retrieve the
+property value on notification. </p> <p>The memory to store the property value
+will be permanently allocated, even if it turns out that no-one in the system
+needs that value. This does ensure that the value can always be published,
+even if the system is in an out of memory situation. For this reason, this
+approach should be limited to widely used and important state. The <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-01254366-696D-598F-9670-6A178F4E69F7">Speculative publishing</xref> pattern offers an approach for dealing with
+less important state. </p> <p id="GUID-F2A60E64-C279-5E08-8AA8-52DF1EEA32BD"><b>Pure event distribution</b> </p> <p>This
+pattern is used when events need to be distributed, not values. </p> <p>The
+publisher of the event simply uses an integer property, and calls RProperty::Set()
+with any value. Even if the value of the property is not changed by this operation,
+all subscribers will be notified that a Set() has occurred, and by implication
+that the related event has occurred. </p> <p>Subscribers will be able to detect
+that an event has occurred, but will get no other information. The minimum
+possible memory is wasted on storage for the dummy value. </p> <p id="GUID-01254366-696D-598F-9670-6A178F4E69F7"><b>Speculative publishing</b> </p> <p>This
+pattern is used when it is not known whether a value will be of interest to
+others or not. Unlike the <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-0DFB902E-FCE1-52CF-8523-C7AE7B6768CE">standard
+state</xref> pattern, the publisher of the event does not call <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-58C54D2A-91E0-359B-AA31-69C6C4050173"><apiname>RProperty::Define()</apiname></xref> to
+create the property. Instead, it simply calls <codeph>RProperty::Set()</codeph> as
+appropriate, and ignores any <xref href="GUID-5E653C17-372C-32E1-A1B2-9E69A9991C40.dita"><apiname>KErrNotFound</apiname></xref> error. </p> <p>When
+other code in the system, i.e. a potential subscriber, is interested in the
+state, it calls <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-58C54D2A-91E0-359B-AA31-69C6C4050173"><apiname>RProperty::Define()</apiname></xref> to create the property
+and allocate the memory for the value. An error of <xref href="GUID-D1D25122-F2B8-3C78-8599-84905BFD47B8.dita"><apiname>KErrAlreadyExists</apiname></xref> should
+be ignored, as this only indicates that some other code in the system is also
+interested in the value and has already created the property. </p> <p>The
+subscriber then calls <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-21A2FEB7-AAF1-3AC0-84B9-AB30E6CFFF99"><apiname>RProperty::Subscribe()</apiname></xref> and <codeph>RProperty::Get()</codeph> as
+usual to interact with the property. On the first <codeph>Get()</codeph>,
+the subscriber may retrieve the property default value (zero, or a zero length
+descriptor). This must be substituted with a sensible default value for the
+property in question. </p> <p>Using this pattern, no memory is wasted on properties
+that have no subscribers, while the publisher code is simpler as there is
+no need for configuration as to which properties to publish. </p> <p>The publisher,
+however, wastes some time attempting to publish unneeded values, but this
+should not be an issue unless the value is very frequently updated. </p> <p>Where
+events are published very infrequently, the subscriber could have a dummy
+value for a long time, until the next publish event updates the value. Often
+this is not a problem as a default value can be substituted. For example a
+full/empty indicator for a battery level, none for signal strength etc. This
+pattern is unlikely to be useful if there is no suitable default value. </p> </section>
+<section id="GUID-2B022BE9-2004-54E8-962E-5AB38DDC4222"><title>Making efficient
+use of the user side API</title> <p>While the Publish and Subscribe API, as
+represented by <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita"><apiname>RProperty</apiname></xref> is designed to be efficient, there
+are certain usage patterns that can improve performance. </p> <p><b>Use
+the attached version of the API calls if possible</b> </p> <p>If you intend
+to call <codeph>Set()</codeph> or <codeph>Get()</codeph> repeatedly, it is
+preferable to use the attached forms of the calls. The attached forms are
+the ones that do not take a UID/Key parameter, and that can only be called
+after calling <xref href="GUID-C4776034-D190-3FC4-AF45-C7F195093AC3.dita#GUID-C4776034-D190-3FC4-AF45-C7F195093AC3/GUID-3F65DD85-6061-3370-9618-ECC0400323D1"><apiname>RProperty::Attach()</apiname></xref>. The attached variants
+are constant time operations, and execute much faster than the corresponding
+unattached versions. </p> <p><b>Only
+preallocate space if the publishing is time critical</b> </p> <p>For byte-array
+and text properties, it is possible to pre-allocate space for the data. Doing
+this results in <codeph>Set()</codeph> operations that do not exceed the preallocated
+space, avoiding the need to do a memory allocation. However, if the data is
+shorter than the reserved space, the excess is wasted. Since <codeph>Set()</codeph> automatically
+extends the data area if needed, then the only reason to pre-allocate space
+is if the <codeph>Set()</codeph> operation has to be real-time, i.e. has to
+have known execution time. </p> <p><b>Always
+consider using Speculative Publishing</b> </p> <p>Even in situations where
+the <xref href="GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF.dita#GUID-FE910347-7CC1-5241-B443-88AD3F5A96EF/GUID-0DFB902E-FCE1-52CF-8523-C7AE7B6768CE">Standard
+State</xref> pattern may seem appropriate, speculative publishing may be a
+better choice, specially for low-level components that know little about how
+they are used or what the wider system configuration may be. The onus is then
+on the UI/Policy layer to ensure that the appropriate properties are defined
+early on in device boot according to policy rules it can define. This ensures
+that the policy layers in the system maintain control and can implement a
+wide variety of policies. </p> <p>Standard state is only relevant for properties
+that are essential to every Symbian device. Battery level probably falls into
+this category, signal strength may well not. </p> <p><b>Define the expected update frequency</b> </p> <p>When a property is changed,
+all subscribers are notified. This leads to their threads running to service
+the notification. If a property changes value frequently, it would be wasteful
+for subscribers to perform substantial processing for each notification. </p> <p>Take
+a property representing signal strength as an example. Potentially, this could
+be updated several times a second. If a change in value were only used to
+update the UI signal bar, it would not be harmful. However, if it were used
+by many entities for serious processing (e.g. polling for email, sending unsent
+SMSes, re-connecting to the internet), then such frequent updates would have
+a severe effect on battery life. </p> <p>Nevertheless, it is obviously desirable
+for many parts of a phone OS to know about the state of network coverage,
+and to take appropriate action. In cases like this, it may be worth the publisher
+defining multiple properties with associated update characteristics. For example,
+raw signal strength (updated &gt; 1 time/sec), periodic signal strength (updated
+once every 10s) and network coverage (updated only when moving between some
+signal and none). Each subscriber can then monitor the appropriate notification
+and so reduce the number of threads that run when the underlying value changes. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE922294-380D-447D-AC46-A46EFAD79168.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE922294-380D-447D-AC46-A46EFAD79168" xml:lang="en"><title>Order
+of items and browsing in grids</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>In a grid, the available items are in a rectangular arrangement of cells
+and browsing is possible in four directions. In addition to the up and down
+functions, the user can press the Arrow right key to move the focus one step
+to the right, or the Arrow left key to move the focus one step to the left.</p>
+<p>The number of items can be larger than what fits in the view, so the grid
+items may scroll in the view when browsing.</p>
+<ul>
+<li><p>The preferred scrolling dimension is vertical; this means that when
+more items are added, the number of items in a grid grows downwards line by
+line, but not outside the window to the left or right. </p></li>
+<li><p> A grid should not be scrollable in both dimensions; it is acceptable
+only in cases where the grid has a natural geometry that cannot be changed.
+Calendar's Month view is an example of this kind of geometry (but even in
+that case it is better to fit the whole month on the screen rather than make
+it scrollable in both dimensions).</p></li>
+<li><p>The default filling order of choice items in a grid is first left to
+right, then top-to-bottom. In right-to-left languages, the order is flipped
+horizontally.</p></li>
+</ul>
+<table id="GUID-B2580444-D5A5-4E29-A33E-F4C8B0EA9B69-GENID-1-6-1-6-1-1-5-1-9-1-1-6-1-2-4"><title>Default grid-filling
+order: Left-to-right UI languages </title>
+<tgroup cols="3"><colspec colname="col2" colwidth="0.99*"/><colspec colname="col3" colwidth="1.02*"/><colspec colname="col4" colwidth="0.98*"/>
+<tbody>
+<row>
+<entry><p>1</p></entry>
+<entry><p>2</p></entry>
+<entry><p>3</p></entry>
+</row>
+<row>
+<entry><p>4</p></entry>
+<entry><p>5</p></entry>
+<entry><p>6</p></entry>
+</row>
+<row>
+<entry><p>7</p></entry>
+<entry><p>8</p></entry>
+<entry><p>9</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><table id="GUID-B2580444-D5A5-4E29-A33E-F4C8B0EA9B69-GENID-1-6-1-6-1-1-5-1-9-1-1-6-1-2-5"><title>Default
+grid-filling order: Right-to-left UI languages </title>
+<tgroup cols="3"><colspec colname="col7" colwidth="0.99*"/><colspec colname="col8" colwidth="1.02*"/><colspec colname="col9" colwidth="0.98*"/>
+<tbody>
+<row>
+<entry><p>3</p></entry>
+<entry><p>2</p></entry>
+<entry><p>1</p></entry>
+</row>
+<row>
+<entry><p>6</p></entry>
+<entry><p>5</p></entry>
+<entry><p>4</p></entry>
+</row>
+<row>
+<entry><p>9</p></entry>
+<entry><p>8</p></entry>
+<entry><p>7</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+<p>In certain cases, it is possible that a grid is not filled completely.
+Depending on the application, the grid can be auto-filling (for example, the
+cells are moved within the grid so that empty cells in the middle get filled),
+in which case there can only be empty cells on the rightmost part of the last
+line. Other applications may allow empty cells anywhere, so that the grid
+can be sparse.</p>
+<p>Browsing in grids that scroll vertically resembles traditional scrolling
+in text editors, based on the idea that the user can always move to the correct
+row first and then move within the row to the correct item. The following
+rules are applied:</p>
+<ul>
+<li><p>Empty cells are skipped: the focus is never on an empty cell.</p><p>Note:
+An exception to this occurs when the user is moving items around in a grid;
+in that case, all cells are accessible. </p></li>
+<li><p>When browsing up or down, the focus is moved to the adjacent cell directly
+below or above the current cell if that cell is filled. In case it is empty,
+the nearest cell towards the beginning of the same row gets the focus. If
+all cells on the row are empty, the search continues on the next row in the
+same direction, and so on, until a filled cell is found. </p></li>
+<li><p>When browsing towards the end of a row, the focus moves to the following
+filled cell on the same row. If there are no filled cells in that direction
+on the row, the search continues from the beginning of the next row, and so
+on, until a filled cell is found. </p></li>
+<li><p>Browsing towards the beginning of a row moves the focus to the previous
+filled cell on the same row, or continues searching from the end of the previous
+row. Using only the Arrow right or Arrow left key, the user can thus go through
+every item in the grid, regardless of the distribution of items in it.</p><p>Note:
+In right-to-left UI languages, such as Arabic and Hebrew, the end of a row
+is on the left-hand side. Respectively, the beginning of the line is on the
+right. </p></li>
+<li><p>The grid is scrolled (moved within the view) only when the item that
+is becoming focused is not fully visible already. </p></li>
+<li><p>A grid may also loop vertically within the same column. When browsing
+down from the cell at the bottom of a column, the focus moves to the choice
+item at the top of the next column and vice versa. If the focus is in the
+last column when applying the previous rule, the focus loops over to the top
+of the first column and vice versa.</p></li>
+</ul>
+<fig id="GUID-62A2FAE4-565B-4938-9581-3BBA80F9567E">
+<title>Examples of moving the focus in a grid. a) Left-to-right UI language;
+only scroll down commands used. b) Left-to-right UI language; only scroll
+right commands used. c) Right-to-left UI language; only scroll
+down used. d) Right-to-left UI language; only scroll right used.</title>
+<image href="GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e54661_href.png" scale="40" placement="inline"/>
+</fig>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FE94596E-B5BB-51FE-BE38-069840323915" xml:lang="en"><title>Encoding
+Types</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>This topic describes the types of SMS encoding. </p>
+<section id="GUID-F7D1E6C8-9605-57FA-9788-AF7FC72BD94C"><title>7-bit GSM encoding</title> <p>7-bit
+GSM encoding supports the GSM 7-bit default alphabet and GSM 7-bit default
+alphabet extension table through an escape mechanism. </p> <p>Figure 1 </p> <fig id="GUID-CDEE59FC-F035-5B75-8838-96E94A6714E8">
+<title>              Escape mechanism            </title>
+<image href="GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e379988_href.png" placement="inline"/>
+</fig> <p>The GSM 7-bit default alphabet consists of 128 characters. Each
+character is represented by 7 bits. 10 extra characters are defined in the
+GSM 7-bit default extension table. These characters are represented by an
+escape mechanism using the escape character (0x1B). For example, 0x1B65 maps
+to the Euro sign € (U+20AC). If an escape character byte is followed by a
+character that is not included in the 10 characters, the escape character
+is just ignored. This means 0x1B41 maps to Latin capital letter A (U+0041). </p> <p>For
+more information about the GSM 7-bit default table, extension table and escape
+mechanism, see 3GPP TS 23.038 V8.1.0. </p> </section>
+<section id="GUID-918FF2E3-B9F4-5C61-8DBA-F9143DB16460"><title>Lossy 7-bit
+encoding</title> <p>Lossy 7-bit encoding enlarges the character set supported
+by 7-bit GSM encoding. Some Unicode Characters do not exist in the target
+7-bit set. These characters are converted to ones that do exist in the target
+7-bit set and closely resemble the original, intended character. A lossy encoding
+using a 7-bit encoding is more cost effective than a UCS-2 encoding. </p> <p> <b>Example
+of 7-bit encoding</b>  </p> <p>Accented Latin characters are not supported
+by 7-bit GSM encoding. Figure 2 describes how an accented Latin characters
+Á, is sent by SMS. Á has a Unicode value of 0x00C1. When it is processed by
+the Lossy converter the character is converted from the Unicode to 7-bit code
+letter A. A has a 7-bit code of 0x41. The SMS receiver reads A instead of
+Á. By substituting the character that is similar enough to the original, the
+reader can understand the word. The process of converting Á to A is called
+a lossy conversion. </p> <p> <b>Note</b>: The 7-bit code of A (0x41) can only
+be decoded back to the same Unicode letter A instead of Á. </p> <p>Figure
+2 </p> <fig id="GUID-ACFF9511-D5E0-5558-8008-4CD48EE0B7A1">
+<title>              Lossy conversion            </title>
+<image href="GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e380028_href.png" placement="inline"/>
+</fig> </section>
+<section id="GUID-D2F0E6BE-932E-545D-A0C8-39017E3D67B4"><title>16-bit Unicode
+encoding</title> <p>Unicode is an international standard character set. It
+includes the characters of every language. In Unicode, each character is usually
+encoded in two 8-bit bytes, and takes up more space than 7-bit encoding. </p> </section>
+<section id="GUID-93B3DDF2-8EB1-5853-9DFD-3ABF42ADCB40"><title>National language
+encoding</title> <p>According to 3GPP TS 23.038 V8.1.0, National Language
+Encoding supports additional characters for certain languages which cannot
+be represented in the GSM default 7-bit alphabet. It defines two mechanisms
+for doing this: </p> <ul>
+<li id="GUID-9ECCA8BD-0BA0-5AE2-B2D6-4677D2CD1BD7"><p>Locking shift mechanism–the
+default GSM table is replaced with a table containing the character set needed
+for a language. The table is referred to as locking shift table. </p> </li>
+<li id="GUID-3900D849-350A-5722-9759-D1D768FE6A84"><p>Single shift mechanism–the
+GSM extension table is replaced with a table containing the character set
+needed for a language. The table is referred to as single shift table. </p> </li>
+</ul> <p>When the locking shift mechanism is used, the escape table can be
+the existing GSM extension table or it can be the escape table used by the
+single shift mechanism. This supports three possible mappings as shown in
+Figure 3: </p> <ul>
+<li id="GUID-34ECF450-6265-58E2-9CB6-00E0C5DDA6F8"><p>The GSM 7-bit default
+escapes to language-specific escape table. It is referred to as GSM-single. </p> </li>
+<li id="GUID-6E8A53BF-0572-5DE2-8D41-FB588B6FB812"><p>The Language-specific
+basic table escapes to GSM 7-bit default extension table. It is referred to
+as locking-GSM ext. </p> </li>
+<li id="GUID-830569B1-8ACD-5924-AF7F-15705FEF76B0"><p>The Language-specific
+basic table escapes to language-specific extension table. It is referred to
+as locking-single. </p> </li>
+</ul> <p>Figure 3 </p> <fig id="GUID-541CED9A-2450-5C9D-AADF-93EE59E4D77E">
+<title>              National language encoding            </title>
+<image href="GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e380090_href.png" placement="inline"/>
+</fig><p>The single shift mechanism is useful when a message contains only
+a few characters outside the default GSM table. It is however inefficient
+when a message contains many unsupported characters, because each escaped
+character must occupy 2 bytes. GSM-single supports more characters than locking-GSM
+ext, but these characters are in the single table, which takes 2 bytes. Locking-single
+is used more for the decoding purpose in case the extra characters can come
+from the locking or single table. </p><p>The locking or single table is not
+a complete replacement. For example, the locking table for Turkish redefines
+only 8-character codes from the default GSM table, as shown in table 1. The
+escape table for Turkish adds 7 characters to the GSM extension, as shown
+in table 2. </p><table id="GUID-4AE6F58D-A5DA-4AD9-B39E-A61AA378F3F6"><title>Table 1</title>
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry><p>GSM 7-Bit Code</p></entry>
+<entry><p>Turkish Locking Shift Table</p></entry>
+<entry><p>GSM 7-Bit Default Table</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><codeph>0x40</codeph></p></entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE</p></entry>
+<entry><p>¡ INVERTED EXCLAMATION MARK </p></entry>
+</row>
+<row>
+<entry><p><codeph>0x60</codeph></p></entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA</p></entry>
+<entry><p>¿ INVERTED QUESTION MARK</p></entry>
+</row>
+<row>
+<entry><p><codeph>0x04</codeph></p></entry>
+<entry><p>€ EURO SIGN</p></entry>
+<entry><p>è LATIN SMALL LETTER E WITH GRAVE</p></entry>
+</row>
+<row>
+<entry><p><codeph>0x07</codeph></p></entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS</p></entry>
+<entry><p>ì LATIN SMALL LETTER I WITH GRAVE</p></entry>
+</row>
+<row>
+<entry><p><codeph>0x0B</codeph></p></entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE</p></entry>
+<entry><p>Ø LATIN CAPITAL LETTER O WITH STROKE</p></entry>
+</row>
+<row>
+<entry><p><codeph>0x0C</codeph></p></entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE</p></entry>
+<entry><p>ø LATIN SMALL LETTER O WITH STROKE</p></entry>
+</row>
+<row>
+<entry><p><codeph>0x1C</codeph></p></entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA *</p></entry>
+<entry><p>Æ LATIN CAPITAL LETTER AE</p></entry>
+</row>
+<row>
+<entry><p><codeph>0x1D</codeph></p></entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA *</p></entry>
+<entry><p>æ LATIN SMALL LETTER AE</p></entry>
+</row>
+</tbody>
+</tgroup>
+</table> <table id="GUID-EC345039-0CB5-4F51-8CFA-83286790AC75"><title>Table 2</title>
+<tgroup cols="3"><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/>
+<thead>
+<row>
+<entry><p>GSM 7-Bit Code</p></entry>
+<entry><p>Turkish Single Shift Table</p></entry>
+<entry><p>GSM 7-Bit Extension Table</p></entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p><codeph>0x1B49</codeph></p></entry>
+<entry><p>I LATIN CAPITAL LETTER I WITH DOT ABOVE</p></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><codeph>0x1B63</codeph></p></entry>
+<entry><p>ç LATIN SMALL LETTER C WITH CEDILLA</p></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><codeph>0x1B69</codeph></p></entry>
+<entry><p>i LATIN SMALL LETTER DOTLESS</p></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><codeph>0x1B47</codeph></p></entry>
+<entry><p>G LATIN CAPITAL LETTER G WITH BREVE</p></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><codeph>0x1B67</codeph></p></entry>
+<entry><p>g LATIN SMALL LETTER G WITH BREVE</p></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><codeph>0x1B53</codeph></p></entry>
+<entry><p>S LATIN CAPITAL LETTER S WITH CEDILLA *</p></entry>
+<entry><p/></entry>
+</row>
+<row>
+<entry><p><codeph>0x1B73</codeph></p></entry>
+<entry><p>s LATIN SMALL LETTER S WITH CEDILLA *</p></entry>
+<entry><p/></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>For more information about the National Language Identifier, Single
+or Locking mechanism, see 3GPP TS 23.038 V8.1.0: National Language Identifier.</p></section>
+<section><title>See also</title> <p> <xref href="GUID-0BC9A9A1-DB99-5095-8390-E1C1B04D0080.dita">SMS
+Encodings and Converters Overview</xref> </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FEB6F717-C86C-54A5-B8D1-B2D882C5AC55"><title>What are CMI files?</title><shortdesc>CMI files are used to specify the behaviour of a thread in the Comms process. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Comms process is called the Root Server and the threads are called <xref href="GUID-521837E2-583C-5C7D-85F7-D936C77AA84C.dita">Comms Provider Modules</xref> (CPMs). The Root Server is launched from c32exe.exe and has UID <codeph>101f7989</codeph>. When the device is booted, the CMI files are processed by <xref href="GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita">Configurator</xref> (<codeph>c32start.exe,
+        101f7988</codeph>) and provide the following information about each CPM: </p> <ul><li id="GUID-4E719EC3-8FC0-57E4-A920-C24C115F30D1"><p>an identity name to Configurator for the CPM </p> </li> <li id="GUID-92E75B14-1CC8-58B7-9BE7-36885EE43176"><p>the name of the DLL that provides the code for the CPM, and its function entry point </p> </li> <li id="GUID-74EE502C-C8DF-5277-8C11-15887D8BDEEF"><p>a priority for the thread </p> </li> <li id="GUID-C66E3D45-5744-5D2F-B779-F68B8325F7EB"><p>details of when the CPM is loaded, for example if it loads during boot or only loads when requested </p> </li> <li id="GUID-BBAEEDF5-B50F-55C4-A178-1D3FE409B93B"><p>the point in the system startup sequence when this CPM is loaded </p> </li> <li id="GUID-AEE5E85C-85AA-5BB5-9B39-747EE013679A"><p>details of the type of heap to use and the stack size </p> </li> <li id="GUID-CA56F906-672D-5EE6-AC06-E9C6154A50AD"><p>details of when the thread is System Critical and if the device needs to be rebooted if the thread panics </p> </li> <li id="GUID-6F9CD244-BAA7-52AA-929D-649016B2F7CB"><p>details of when the thread is allowed to shutdown </p> </li> </ul> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e164353_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF0330E8-81CA-52F3-AD60-89360B74B25D.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF0330E8-81CA-52F3-AD60-89360B74B25D" xml:lang="en"><title>Using
+CArrayVar&lt;TAny&gt;</title><shortdesc>The <codeph>CArrayVar&lt;TAny&gt;</codeph> class is useful for constructing
+an array of variable length buffers, where the length is decided at run time.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-763A4737-913B-417F-A9A6-CB1844EC64F6"><title>Arrays whose type is not known until class instantiation</title> <p>The <codeph>CArrayVar&lt;TAny&gt;</codeph> class
+is useful for constructing an array of variable length buffers, where the
+length is decided at run time. It is also useful as a data member of a base
+class in a thin template class/base class pair,where the type of the array
+element is not known until the owning thin template class is instantiated.</p> <p>For
+example, to implement a stack of variable length objects of type <codeph>T</codeph>.</p> <codeblock id="GUID-4478A571-F004-5015-9D35-DBEABFDBCFF1" xml:space="preserve">class CExampleBase : public CBase
+ {
+public :
+ ...
+protected :
+ ...
+ void  PushL(const TAny* aPtr);
+ TAny* Pop();
+private :
+ CArrayVar&lt;TAny&gt; iArray;
+ }</codeblock> <codeblock id="GUID-3EEED66E-A71A-597D-82B5-E2EAD5AC93CC" xml:space="preserve">template &lt;class T&gt;
+class CExample : public CExampleBase
+ {
+public :
+ ...
+ inline void PushL(const T* aPtr);
+ inline T*   Pop();
+ }</codeblock> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438" xml:lang="en"><title>Multimedia
+Plug-ins Overview</title><shortdesc>This topic provides an overview of the components that form the
+Multimedia Plug-ins collection. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Purpose</title> <p>The Multimedia Plug-ins collection represents
+a plug-in framework for handling multimedia data. </p> </section>
+<section><title>Architecture</title> <p>The components in the Multimedia Plug-ins
+collection are used by the components in the Multimedia APIs and Frameworks
+collection. The following diagram shows the architecture of the Multimedia
+Plug-ins collection: </p> <fig id="GUID-2132F240-AC05-5F54-A9A6-4332707CC387">
+<title>              Multimedia Plug-ins architecture            </title>
+<image href="GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e297911_href.png" placement="inline"/>
+</fig> </section>
+<section><title>Description</title> <p>The Multimedia Plug-ins collection
+provides a generic plug-in architecture for the Camera Framework, Imaging
+Frameworks and Multimedia Framework (MMF) components. The following types
+of plug-ins are available: </p> <ul>
+<li id="GUID-9693A45C-7A3C-57C7-9E32-E00335865AE3"><p>Codec plug-ins provide
+the conversion between different data types. </p> </li>
+<li id="GUID-8DC6F831-361B-5C17-9A17-2F2FA5C1107B"><p>Controller plug-ins
+enable support for audio and video formats. </p> </li>
+<li id="GUID-EC5F52B0-065E-54E9-B4BB-991BAB6D7E56"><p>Content Rendering Plug-ins
+(CRPs) are plug-ins that are loaded into the Window Server process for server-side
+rendering. For more information, see <xref href="GUID-0C4B86B5-530A-5839-86C1-46E7ABE281E0.dita">Window
+Server Component</xref>. </p> </li>
+</ul> </section>
+<section><title>Components</title> <p>The Multimedia Plug-ins collection comprises
+the following components: </p> <ul>
+
+<li id="GUID-91A78BA4-B6F5-59C8-B120-D68BB0103D45"><p> <b> Camera Plug-ins</b> -
+provides a Camera stub plug-in implementation. For information about Camera
+Plug-ins see, <xref href="GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita">Camera
+Plug-in Overview</xref>. </p> </li>
+<li id="GUID-8EA928CF-9E38-573B-B767-C42F44CD00FD"><p> <b>Imaging Plug-ins</b> -
+encodes and decodes various imaging formats, for example, GIF and JPEG. For
+information about Imaging Plug-ins see, <xref href="GUID-7226DB6E-93E9-57E6-B7AB-043E1C5E2A7F.dita">Imaging
+Plug-ins Overview</xref>. </p> </li>
+<li id="GUID-FB7F3BF6-1E31-546C-9B84-245350489045"><p> <b>Video Subtitle CRP
+(Content Rendering Plug-in)</b> - displays video subtitles. For information
+about Video Subtitle CRP see, <xref href="GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita">Video
+Subtitle CRP Overview</xref>. </p> </li>
+</ul> </section>
+<section><title>Using Multimedia Plug-ins</title> <p>You can use the functionality
+provided by the Multimedia Plug-ins collection to: </p> <ul>
+<li id="GUID-35CB2977-799F-579E-A7DA-14ED0923E620"><p>Implement the camera
+stub plug-in. </p> </li>
+<li id="GUID-2CB2C2CF-C5B0-542C-A3F4-0FF229CECF46"><p>Encode and decode imaging
+formats. </p> </li>
+<li id="GUID-FC228509-5AC3-59EE-85DC-A5E2BC8A74DC"><p>Display video subtitles. </p> </li>
+</ul> </section>
+</conbody><related-links>
+
+<link href="GUID-6F6B6C23-D5CF-5BE7-A001-EE87BC76A65D.dita"><linktext>Camera Plug-in</linktext>
+</link>
+<link href="GUID-B61F5B98-E76E-52BF-ACB6-0C68314F190E.dita"><linktext>Imaging Plug-in</linktext>
+</link>
+<link href="GUID-412CB101-A92C-54E1-9518-79E94DD40A08.dita"><linktext>Video Subtitle
+CRP</linktext></link>
+<link href="GUID-B58DEF65-B08F-5D0B-98E7-EB8DB7082F8B.dita"><linktext>Writing 
+               Multimedia Framework Plug-ins</linktext></link>
+</related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF28B015-DFC5-5656-9066-FBCCBA2818AF.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FF28B015-DFC5-5656-9066-FBCCBA2818AF"><title>Transactions and locks</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>When multiple clients can access the same database, transactions ensure that only one client can change data at a time.</p> <p>DBMS transactions do not provide any form of isolation between clients; while one client is updating a table within a transaction, other clients can see the changes as they are made. For example, if a client retrieves two separate rows from a database, there is no automatic guarantee that the data being retrieved has not been changed between the reads; this can lead to an ‘inconsistent read’. A client can prevent an update while retrieving related rows by enclosing the individual reads within a transaction. Such a transaction does not modify the database and only operates as a read-lock; the <codeph>Commit()</codeph> or <codeph>Rollback()</codeph> member functions of the abstract base class <codeph>RDbDatabase</codeph> releases such a lock and does not affect the database in any way.</p> <p>In practice:</p> <ul><li id="GUID-472055B2-90BF-523F-B1D7-22A8D45EDBC2"><p>calling <codeph>Begin()</codeph> (a member of <codeph>RDbDatabase</codeph>) on a shared database attempts to get a shared read-lock on the database; this fails if <i>any</i> other client already has an exclusive write-lock. Other clients with read-locks will not cause this operation to fail.</p> </li> <li id="GUID-419F8999-E7A4-5C0E-8CAB-A21C59BCCFD1"><p>any operation which modifies the database, tries to gain an exclusive write-lock on it; this fails if any other client has <i>any kind</i> of lock on that database. If the current client already has a read-lock as a result of calling <codeph>Begin()</codeph>, then the lock is upgraded to an exclusive write-lock.</p> </li> <li id="GUID-73E720B6-DEFC-5A5B-9B0F-14B1C470A072"><p>calling <codeph>Commit()</codeph> or <codeph>Rollback()</codeph> after a read-lock has been acquired (but not a write-lock) releases the client's lock. The database is only considered to be unlocked when <i>all</i> such locks are removed by <i>all</i> clients, when it will report a <codeph>RDbNotifier::EUnlock</codeph> database event to any change notifier.</p> </li> <li id="GUID-FD4EECEB-0B67-5490-841A-C57A3BC189E9"><p>calling <codeph>Commit()</codeph> or <codeph>Rollback()</codeph> after a write-lock has been acquired releases the client's lock and reports a <codeph>RDbNotifier::ECommit</codeph> or a <codeph>RDbNotifier::ERollback</codeph> database event to any change notifier.</p> </li> <li id="GUID-6EF537DD-D7CA-52A4-9164-E78EC961AF0A"><p>automatic transactions are used if updates are made outside of explicit transactions; such updates can also fail if an exclusive lock cannot be acquired.</p> </li> </ul> <p>Sharing read-locks enables greater concurrency while providing some safe guard against inconsistent reads. However, there is the possibility of a deadlock occurring. If two clients want to update a database and both <codeph>Begin()</codeph> a transaction before either of them starts an update, then one client's read-lock will prevent the other from upgrading to a write lock and vice versa. The only way out of this is to code the clients in such a way as to back out of such a deadlock situation, rather than retry forever without releasing the locks.</p> <p>To prevent a single transaction from containing both data modification and data definition statements, all affected cursors are invalidated when the definition of their underlying table is changed. Such a cursor reports a <codeph>KErrDisconnected</codeph> error in this state and can only be closed and the rowset re-generated once the DDL (SQL schema update) statement has completed. Calling <codeph>Reset()</codeph> on such a cursor has no effect. It is impossible to update rows while changing the schema.</p> <p>A client can change the database schema while other clients are using that database provided that they have no locks on it. However, those other clients may find that their rowsets are invalidated asynchronously.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A" xml:lang="en"><title>Static
+interface DLLs</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>A static interface DLL represents an interface which is defined to its
+clients by one or more headers for use at compile time, and an import library
+for use at link time. </p>
+<p>When a executable that is a client of the DLL is loaded at run-time, the
+loader notes that it requires the static interface DLL to be available. The
+loader then either loads the DLL or, if it is loaded already, attaches the
+new client to it. </p>
+<p>In Symbian platform, all static interface DLLs must have a <codeph>uid2</codeph> of <codeph>0x1000008d</codeph>.
+The particular static interface DLL is then identified by name and by <codeph>uid3</codeph>. </p>
+<p>For example, if a DLL called <filepath>helloview.dll</filepath> is built
+with a <codeph>uid3</codeph> of 0x10000252, then the name used in the import
+library for ARM builds of Symbian platform is <filepath>helloview[10000252]</filepath>.
+When the loader loads the <filepath>helloview.dll</filepath>, it checks that
+its UID is <codeph>0x10000252</codeph>. If the <codeph>uid3</codeph> in the
+DLL does not match, then the load fails. </p>
+<section><title>mmp project specification</title><p>A static interface DLL
+project file must specify the correct target type and UID:</p><ul>
+<li id="GUID-EBD5092A-1F8F-5715-AFB4-A8183263028C"><p>Specify the <codeph>TARGETTYPE</codeph> line
+as: </p> <codeblock id="GUID-0BF51E79-4F88-58FC-9608-C57F1C8F6FF0" xml:space="preserve">TARGETTYPE dll</codeblock> <p>This
+implicitly specifies <codeph>UID1</codeph> correctly. </p> </li>
+<li id="GUID-2FB86A73-A3D3-5289-B5C3-5D3CE68EE68C"><p>Specify the UID for
+the DLL in a <codeph>UID</codeph> line: </p> <p><userinput>UID 0x1000008d
+&lt;UID3&gt;</userinput> </p> </li>
+</ul> </section>
+<example><p>An example of the <filepath>mmp</filepath> project file for a
+static DLL is given below: </p><codeblock id="GUID-0690A3DC-3FF4-5FA1-9532-7ED2A0E65C1B" xml:space="preserve">TARGET        CreateStaticDLL.dll
+TARGETTYPE    dll
+UID           0x1000008d 0x10004268
+SOURCEPATH    .
+SOURCE        CreateStaticDLL.cpp
+USERINCLUDE   .
+SYSTEMINCLUDE \Epoc32\include
+LIBRARY       euser.lib
+EXPORTUNFROZEN</codeblock></example>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF39192E-9C93-593F-8F47-DB18DB876F6F.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF39192E-9C93-593F-8F47-DB18DB876F6F" xml:lang="en"><title>Installation Files</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The Installation Files section of the PKG file lists the files to be installed on the Symbian device.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF410602-8408-555E-B918-C0CF484535E7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FF410602-8408-555E-B918-C0CF484535E7" xml:lang="en"><title>Writing
+Interface Definitions</title><abstract><p>To use a plug-in, the client of the plug-in framework needs to
+instantiate an object through the interface definition, use the object and
+delete the object when the scope of the object usage is complete. Client calls
+to the interface definition for construction and destruction translate directly
+through REComSession into loading and unloading of the correct implementation. </p><p>The <xref href="GUID-9E0CBB66-A573-5BBE-9788-95B313325C7E.dita">interface definition</xref> defines
+functions that offer services to the clients and enable object instantiation.
+The object instantiation functions uses the plug-in framework to create an
+instance of an appropriate implementation, and returns the instance to the
+client. </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<context><p>A function in the interface definition delegates the object instantiation
+to a static function <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> .
+The <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> is an overloaded
+function and offers many input parameter options. The appropriate <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> function
+is called for object instantiation. If the client passes input data then this
+data must be wrapped in a <codeph>TEComResolverParams</codeph> object. </p> <p> </p> </context>
+<steps id="GUID-B502261A-48DA-5EC1-82F9-6136CF5A2C50">
+<step id="GUID-D9F104A5-4D58-5488-AB0A-C90C26A40C28"><cmd>Derive an interface
+definition class from <xref href="GUID-8F6FE089-E2A8-30F4-B67E-10F286347681.dita"><apiname>CBase</apiname></xref> or <xref href="GUID-727D2B62-09A9-3CBC-AB6F-591E52EC68EB.dita"><apiname>RHandleBase</apiname></xref> based
+class. The class must always declare a private UID member. </cmd>
+<info>The following shows an example segment of an interface definition class
+that derives from CActive. </info>
+<stepxmp><codeblock id="GUID-2D4E24B1-0463-5970-B0FD-321FC599E1CB" xml:space="preserve">class CExampleInterfaceDefinition : public CActive
+    {
+public:
+    // Wraps ECom object instantiation
+    static CExampleInterfaceDefinition* NewL();
+     static CExampleInterfaceDefinition* NewL(const TDesC&amp; aMatchString);
+    // Wraps ECom object destruction 
+    virtual ~CExampleInterfaceDefinition();
+    // Interface service 
+    virtual void DoMethodL() = 0;
+...
+private:
+    // Instance identifier key or UID.
+    TUid iDtor_ID_Key;
+    };</codeblock> </stepxmp>
+</step>
+<step id="GUID-82F4FEE2-22B9-51E7-96CD-2CAA7FBF78C2"><cmd>Implement the object
+creation function NewL() for the derived class. </cmd>
+<info>Call the appropriate <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-C7F147AC-6D77-3169-AAB4-B27262B4333B"><apiname>REComSession::CreateImplementationL()</apiname></xref> function
+if the implementation is to receive data from the client. </info>
+<stepxmp><codeblock id="GUID-4447C35F-1001-57FB-941F-441E0A2C4799" xml:space="preserve">    // The NewL() function accepts client resolution string as input
+inline CExampleInterfaceDefinition* CExampleInterfaceDefinition::NewL(const TDesC&amp; aMatchString)
+    {
+    const TUid KExampleInterfaceDefinitionUid = {0x10009DC0};
+    // The client resolution string is wrapped in TEComResolverParams object for resolution. 
+             TEComResolverParams resolverParams; 
+       resolverParams.SetDataType(aMatchString);
+       TAny* ptr = REComSession::CreateImplementationL(
+          KExampleInterfaceDefinitionUid,
+         _FOFF(CExampleInterfaceDefinition,iDtor_ID_Key),
+         resolverParams);
+
+      return REINTERPRET_CAST &lt;CExampleInterfaceDefinition*&gt;(ptr);
+      }</codeblock> </stepxmp>
+<stepxmp><codeblock id="GUID-7F634037-2D79-53E0-B132-B9E963603B69" xml:space="preserve"/></stepxmp>
+</step>
+</steps>
+<postreq><p>The interface definition needs to define a destructor function
+to destroy the object after use. The interface destructor notifies the plug-in
+framework about the object destruction. </p> <p>The destructor of the interface
+definition must call the static function <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-8BA69111-0451-34CA-A1E8-C83513C4D29D"><apiname>REComSession::DestroyedImplementation()</apiname></xref> to
+signal the object destruction to plug-in framework. The instance identifier
+key is passed as a input parameter to <xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-8BA69111-0451-34CA-A1E8-C83513C4D29D"><apiname>REComSession::DestroyedImplementation()</apiname></xref> to
+identify the instance. </p> <codeblock id="GUID-1E935BFD-D485-5F4D-9569-D34FEC1D90DC" xml:space="preserve">inline CExampleInterfaceDefinition::~CExampleInterfaceDefinition()
+    {
+    REComSession::DestroyedImplementation(iDtor_ID_Key);
+}</codeblock> <p> <b>Note</b>: The memory clean-up function<xref href="GUID-1344F049-81C4-3D17-AF46-8B5584680ADB.dita#GUID-1344F049-81C4-3D17-AF46-8B5584680ADB/GUID-1AACEF53-2CAD-34EC-A485-CE49BC8B9BD8"><apiname>REComSession::FinalClose()</apiname></xref> should
+not be invoked inside the destructor, or elsewhere in the interface. For more
+details refer the topic <xref href="GUID-E3A80D62-09A5-502D-AB55-6AB2A5623465.dita">Cleaning-up
+Memory</xref>. </p> </postreq>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF48E99A-551E-58E2-84C4-1985B557CCA4.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF48E99A-551E-58E2-84C4-1985B557CCA4" xml:lang="en"><title>Reference</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This section contains reference information for the Root Server Configurator. </p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF62C847-B887-573B-804B-C82335DA2FE7" xml:lang="en"><title>Comms-infras
+Test Technology</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title> Scope</title> <p><b> Components
+under test</b> </p> <p>The Comms-Infras (Communications Architecture Infrastructure)
+subsystem provides a framework for the operation of all communication protocols
+on a Symbian device. </p> <p>The Comms-Infras test suites test the esock sub-component. </p> <p><b> Test Scope</b> </p> <p><b> Published
+API testing</b> </p> <p>This technology area provides a number of test suites
+to test APIs that Symbian identify as PublishedAll and are documented in the
+Symbian platform Library. These test suites can be used as a regression test
+suite and also as part of a compatibility testing program. </p> <p>For more
+details, refer to the individual classes in <xref href="GUID-4A21335F-7752-5134-98C5-D21D4657E094.dita">Comms-Infras
+API</xref>. </p> <p><b>Test
+Omissions</b> </p> <p>The behaviour of the Comms-Infras APIs is dependent
+on the protocol being used. The protocols available are dependent on the device
+used and so cannot be exhaustively tested. Consequently the test suites are
+only tested using the most common protocols (that is, TCP and UDP). </p> <p>For
+more details about omissions in the individual classes, refer to <xref href="GUID-4A21335F-7752-5134-98C5-D21D4657E094.dita">Comms-Infras
+API</xref>. </p> </section>
+<section><title> Environment</title> <p><b>Device
+under Test Setup</b> </p> <p>The device under test (hardware platform/phone/emulator)
+must have an appropriate Symbian platform or licensee-UI build. </p> <p><b>PC Setup</b> </p> <p>The PC must have a Symbian or licensee developer
+kit, PDT and the relevant compilers (Code Warrior, RVCT, GCCE) installed to
+build and execute the test code. </p> <p><b>Network
+Environment Setup</b> </p> <p>The PC and the device under test must be on
+the same network. </p> <p>The Comms-Infras test suites use sockets to send
+and receive data. To ensure that the full networking stack is tested correctly,
+the sockets on the PC and the device under test must be able send and receive
+data between each other. Two PC ports, port 10007 for TCP data and port 10008
+for UDP data, listen for and receive TCP and UDP data respectively sent by
+the device under test. </p> <p>Follow the instructions in <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-8E8E2C13-102B-5DE3-AD49-9E719C443B60">Appendix A - Echo Server</xref> and <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-408C9D57-6330-56B5-B1EB-E06D7474A930">Appendix
+B - NT RAS</xref> to set up TCP/IP communications between the PC and device
+under test. </p> <p>However, it is also possible to use other TCP/IP connections
+such as Ethernet and Wi-fi instead of NT RAS. To do this the appropriate table
+needs to be referenced from the Comms database (COMMSDAT). You must change
+the section [iap_settings] in <filepath>t_comms-infras.env</filepath> with
+the table used to establish the connection. </p> <codeblock id="GUID-9782C15F-9B99-55C1-8ED5-82C668976E28" xml:space="preserve">
+[iap_settings]
+NetworkTable=1 &lt;Network table entry number in CommDbCommsInfras.xml&gt;
+IAPTable=1 &lt;The IAP entry number in CommDbCommsInfras.xml&gt;
+</codeblock> <p>The default preference for commdb in <filepath>CommDbCommsInfras.xml</filepath> is
+given below: </p> <codeblock id="GUID-37D5B0F8-33E5-58A5-8DDE-A65967D73075" xml:space="preserve">
+&lt;ConnectionPreferencesTable&gt;
+   &lt;ConnectionPreferences operation="add"&gt;
+     &lt;Name&gt;DefaultRecordName-1&lt;/Name&gt;
+     &lt;Ranking&gt;1&lt;/Ranking&gt;          
+     &lt;Direction&gt;OUTGOING&lt;/Direction&gt;
+     &lt;BearerSet&gt;CSD&lt;/BearerSet&gt;    
+     &lt;DialogPref&gt;DONOTPROMPT&lt;/DialogPref&gt;
+     &lt;IAPRef&gt;&lt;my NTAS/ppp connection IAP&gt;&lt;/IAPRef&gt;
+   &lt;/ConnectionPreferences&gt;
+&lt;/ConnectionPreferencesTable&gt;
+</codeblock> <p>You need your own <filepath>CommDbCommsInfras.xml</filepath> to
+do this. </p> <p> <b>Note</b>: When executing the Comms-Infras test suites
+on the emulator or the hardware reference board(H4), the preferred connection
+channel should be the NT RAS. The preferred connection cannot be NT RAS when
+you execute the Comms-Infras test suites on the real phone WIFI-enabled. </p> <p>The <filepath>CommDbCommsInfras.xml</filepath> file
+is in the following location: </p> <p> <filepath>...\commsinfrastructureapitest\commsinfrastructuresvs\suite\group</filepath> </p> <p>For
+command details refer <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-12CAAE91-8BFE-50F7-ADAD-699BAEA181DC">Building
+and Execution</xref> section. </p> <p>When execute the Comms-Infras test suites
+on the emulator or the hardware reference board(H4), you must first configure
+the NT RAS using the instructions in <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-408C9D57-6330-56B5-B1EB-E06D7474A930">Appendix
+B - NT RAS</xref>, and a serial port cable to connect the COM port. After
+configuring NT RAS, you must <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-12CAAE91-8BFE-50F7-ADAD-699BAEA181DC">build
+and execute </xref> the tests. </p> <p>For information about how to execute
+the Comms-Infras test suites on the real phone with WIFI enable, see the <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-177B5101-DBD1-5B08-8DB7-B186528054EB">Appendix
+C - Testing on real phone through WIFI connection</xref>. </p> <p><b>Test dependencies</b> </p> <p> <b>Note: </b> Any mention of “epoc32” is
+offset by %EPOCROOT% that is, the full path where the epoc tree is installed. </p> <p><b>Test data</b> </p> <p>Test data for each test suite is in the following
+location: </p> <ul>
+<li id="GUID-C7932824-2E8F-5949-8D3E-A1F4D51B3C27"><p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rconnection\testdata</filepath> </p> </li>
+<li id="GUID-0F34371C-70C8-5F61-B0E3-F23209368FB0"><p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocket\testdata</filepath> </p> </li>
+<li id="GUID-55E878A8-2A6C-5C03-BF6E-AB510CB870B1"><p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsocketserv\testdata</filepath> </p> </li>
+<li id="GUID-2AA54850-74EF-5690-9D6E-04E294775E08"><p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_rsubconnection\testdata</filepath> </p> </li>
+</ul> <p>For more details, refer to <xref href="GUID-4A21335F-7752-5134-98C5-D21D4657E094.dita">Comms-Infras
+API</xref>. </p> <p> </p> <p id="GUID-12CAAE91-8BFE-50F7-ADAD-699BAEA181DC"><b>Building and Execution</b> </p> <p>The
+Comms-infras Test Suite Hierarchical Structure shown below illustrates the
+Test Suite structure after building the test suite. General information about
+the testdriver test suite structure may be found here » Symbian Verification
+Suite » TestDriver V2 » TestDriver Output » Storing tests and results. </p> <p> <b>Note: </b> This
+structure can be seen in the following location after building the test suite<filepath> 
+            %EPOCROOT%\epoc32\testdriver\testproduct</filepath>  </p> <p>The <b>Comms-infras
+Test Suite Hierarchical Structure </b> is as shown below: </p> <codeblock id="GUID-B1A3D74E-67FF-5F62-AAF2-5AC795834778" xml:space="preserve">&lt;Component&gt; - Comms-Infras
+  &lt;Sub-component&gt;-Esock
+    csd (Circuit Switched Data)
+      &lt;Class&gt;-RConnection
+        &lt;suite&gt;-COMINF-ESOCK-RConnection-PublicAPI-Other-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RConnection-PublicAPI-TCP-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RConnection-PublicAPI-UDP-Suite
+      &lt;Class&gt;-RSocket
+        &lt;suite&gt;-COMINF-ESOCK-RSocket-PublicAPI-Other-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RSocket-PublicAPI-TCP-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RSocket-PublicAPI-UDP-Suite
+      &lt;Class&gt;-RSocketServ
+        &lt;suite&gt;-COMINF-ESOCK-RSocketServ-PublicAPI-Other-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RSocketServ-PublicAPI-TCP-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RSocketServ-PublicAPI-UDP-Suite
+    psd (Packet Switched Data)
+      &lt;Class&gt;-RSubConnection
+        &lt;suite&gt;-COMINF-ESOCK-RSubConnection-PublicAPI-Other-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RSubConnection-PublicAPI-TCP-Suite
+        &lt;suite&gt;-COMINF-ESOCK-RSubConnection-PublicAPI-UDP-Suite</codeblock> <p> <b/>  </p> <p>The
+hierarchical test suite structure facilitates easy build and execution of
+the complete test suite or part of it. For example, if the path specified
+is: </p> <ul>
+<li id="GUID-B7F608F3-FF52-5D46-A569-F43E2FB6A3B4"><p> <codeph> &lt;comms-infras&gt;</codeph> -
+The entire suite is built or executed </p> </li>
+<li id="GUID-852ABD49-988E-511D-BD57-9823B90FDBFE"><p> <codeph> &lt;comms-infras.esock.csd&gt;</codeph> -
+All the suites below csd that is, RConnection, RSocket, RSocketServ are built/executed. </p> </li>
+<li id="GUID-C34187F7-00DD-503E-B6C1-13A8631086BD"><p> <codeph> &lt;comms-infras.esock.csd.RConnection&gt;</codeph> -
+All the three RConnection suites are built/executed. </p> </li>
+<li id="GUID-9A9A3912-AEBE-5294-9BB2-B3CBD8A40878"><p> <codeph>&lt;comms-infras.esock.csd.RConnection.RConnection-PublicAPI-Other-Suite&gt;</codeph> - <codeph>RConnection-PublicAPI-Other-Suite</codeph> is built or executed. </p> </li>
+</ul> <p>The commands to be executed on emulator and hardware. </p> <p> <b>Note
+:</b> Refer to Comms-infras Test Suite hierarchical structure for sub-component
+and test suite names. </p> <p id="GUID-DE0928AD-399C-54C2-B999-55CA23C2CEBD"><b>General environment setup</b> </p> <ol id="GUID-EAFA0A49-9E87-5C87-BC54-CBADAC206752">
+<li id="GUID-F95F99A1-966F-5756-81D8-D3EBF1A06EE5"><p>IAPSettings in the <filepath>t_comms-infras.ini</filepath> file: </p> <ul>
+<li id="GUID-A073E521-04AE-57E9-A601-CD8CE61B76DA"><p>For WINSCW platform: </p> <p>Ensure
+that under the [IAPSettings] section, IAPTable = 2 to use WinTap. </p> </li>
+<li id="GUID-FE03ADAA-5582-5A29-A9AA-FD7ACB64AA68"><p>For ARMV5 platform: </p> <p>Ensure
+that under the [IAPSettings] section, IAPTable = 1 to use NT RAS. </p> </li>
+</ul> </li>
+<li id="GUID-369AB491-0685-5890-8B67-738FBC6ADD1E"><p>The <filepath>t_comms-infras.ini</filepath> file
+is generated by executing the InsertIPAddress batch file, which uses the <filepath>t_comms-infras.env</filepath> as
+a template, in the following location: </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\testdata</filepath> </p> <p>See <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-8E8E2C13-102B-5DE3-AD49-9E719C443B60">Appendix
+A - Echo Server</xref> for more details on environment settings </p> </li>
+<li id="GUID-BFDE8C23-88C6-574B-8269-95F53DADDBA7"><p>The entire Comms-Infras
+Test component can be built from <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\…</filepath>  </p> <p>Individual
+test components can be built from the respective group directory. For example, <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_&lt;sub-component&gt;\group</filepath> </p> <p>Execute the following commands: </p> <p><userinput>InsertIpAddr </userinput> </p> <p><userinput>bldmake
+bldfiles </userinput> </p> <p><userinput>abld test build [winscw|armv5] [urel|udeb] </userinput> </p> <p><userinput>%EPOCROOT%\epoc32\release\winscw\&lt;udeb/urel&gt;ced
+z:\comms-infras\CommDbCommsInfras.xml</userinput> </p> <p> <b>Note:</b> This
+command accomplishes the following: </p> <ul>
+<li id="GUID-6B0C6533-ACB2-5A78-A253-16F206D6B67C"><p>Updates CommDB to use
+the appropriate transport mechanism (NT RAS by default). See <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-408C9D57-6330-56B5-B1EB-E06D7474A930">Appendix B - NT RAS</xref> for more details. </p> </li>
+<li id="GUID-46E3369F-29E3-5339-A0FF-25E22A56D71D"><p>Suppresses any WinTap
+prompts. </p> </li>
+<li id="GUID-16E14E0D-8A38-5706-9F5B-DCD2F444360E"><p>Updates CommDb to use
+the right IAP table. </p> </li>
+</ul> <p><userinput>startechoserver</userinput> </p> </li>
+</ol> <p id="GUID-90508609-988E-59EE-A57D-F21C47A2BFD3"><b>Steps to build and execute
+automatic tests using Test Driver</b> </p> <p><b>For WINSCW platform: </b> </p> <ol id="GUID-0CAC2C6C-FDB9-5993-B9E1-978C818BA02A">
+<li id="GUID-496923BF-78AB-5B21-97E1-C22FA8714F0F"><p>Communication between
+the PC and the device under test (Symbian platform device) is enabled using
+STAT. So, the device under test must have STAT installed. </p> <p> <b>Note:</b> Refer
+to <b>Symbian Verification Suite » TestDriver » Using TestDriver » Communicating
+with the device » STAT plug-in</b> for more information. </p> </li>
+<li id="GUID-B261C8B3-32FB-5CCB-A961-525ADF971B91"><p>Test Driver can be configured
+using the automated scripts located at: </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\…</filepath> </p> <p><userinput> testdriversetup </userinput> </p> <p> <filepath>testdriversetup.bat</filepath> calls <filepath>testdriversetup.pl</filepath> which
+applies an appropriate set of configuration parameters. </p> <p> <b>Note</b>:
+If you execute the tests on the real phone using Test Driver, the eshell and
+testexecute must be installed on the phone. See details in <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-177B5101-DBD1-5B08-8DB7-B186528054EB">Appendix C – Testing on real phone through WIFI connection</xref>. </p> </li>
+<li id="GUID-20670B02-8DE7-5C96-AC9C-6BB0A9C7FE42"><p>Build the test code: </p> <p><userinput>testdriver
+build [–p [winscw|armv5]] [–b [udeb|urel]] –s comms-infras[.esock[.&lt;csd|psd&gt;[.&lt;class
+name&gt;[.&lt;test suite name &gt;]]]]</userinput> </p> <p>Testdriver commands can
+be executed from any location. </p> <p> <b>Note:</b> For tree structure, refer
+to Comms-infras Test Suite Hierarchical Structure in <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-12CAAE91-8BFE-50F7-ADAD-699BAEA181DC">Building and Execution</xref> section. </p> </li>
+<li id="GUID-BE253868-68DE-5312-95FB-3F29E7EE1B76"><p> <b>Execute the Tests:</b>  </p> <p><userinput>testdriver
+run</userinput> </p> </li>
+</ol> <p><b>For ARMV5 platform: </b> </p> <ol id="GUID-DF651EA1-4FC5-5481-AA46-7BC29AD5854B">
+<li id="GUID-BC86C1CB-4CFE-53CB-B2FA-8BDB4DE3C4CB"><p>Communication between
+the PC and the device under test (Symbian platform device) is enabled using
+STAT. So, the device under test must have STAT installed. </p> </li>
+<li id="GUID-03C812FE-D710-56BE-B092-AD5D89C4E139"><p> <b>Communication between
+PC and hardware:</b>  </p> <p>The hardware reference board (for example, H4)
+must be connected to the PC through USB or serial cable. The ROM image is
+built on the PC and transferred to the hardware board through MMC card. </p> <p> <b>Note:</b> Refer
+to <b>Symbian Verification Suite » TestDriver » Using TestDriver » Communicating
+with the device » STAT plug-in</b> for more information. </p> </li>
+<li id="GUID-2178A594-B39D-523A-842E-B0B566EC1E7D"><p>Test Driver can be configured
+using the automated scripts located at: </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\…</filepath> </p> <p><userinput> testdriversetup </userinput> </p> <p> <filepath>testdriversetup.bat</filepath> calls <filepath>testdriversetup.pl</filepath> which
+applies an appropriate set of configuration parameters. </p> </li>
+<li id="GUID-6EE24486-9EBB-5D18-911E-D7562B6EF009"><p>Build the test code: </p> <p><userinput>testdriver
+build [–p [winscw|armv5]] [–b [udeb|urel]] –s comms-infras[.esock[.&lt;csd|psd&gt;[.&lt;class
+name&gt;[.&lt;test suite name &gt;]]]]</userinput> </p> <p>Testdriver commands can
+be executed from any location. </p> <p> <b>Note:</b> For tree structure, refer
+to Comms-infras Test Suite Hierarchical Structure in <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-12CAAE91-8BFE-50F7-ADAD-699BAEA181DC">Building and Execution</xref> section. </p> </li>
+<li id="GUID-83839530-D0FD-549D-BC1A-682BD9530DF1"><p> <b>To build the ROM
+image:</b>  </p> <p><userinput>buildrom -D_STARTUPMODE2 -D_EABI=ARMV5 -DRVCT
+-DUSE_STRONG_CRYPTOGRAPHY -D_CUSTOM_COMMSDAT &lt;h2/h4hrp&gt; techview_statapi
+td_comms-infras</userinput> </p> </li>
+<li id="GUID-290A36BE-A619-505C-BFD6-641F2D219001"><p> <b>Execute the Tests:</b>  </p> <p><userinput>testdriver
+run -t &lt;transport service used&gt; </userinput> </p> <p>Transport service
+used may be “serial&lt;COM port number that is connected to the board&gt;”, “bt&lt;COM
+port number for BT dongle&gt;” or “usb&lt;mapped port number&gt;” </p> </li>
+</ol> <p> <b>Note:</b>  </p> <ul>
+<li id="GUID-14C19BF7-C884-5612-B41C-7FE533E73109"><p>All scripts and test
+data are automatically removed from the system drive of the device under test
+after the execution. </p> </li>
+<li id="GUID-FE7BFBDA-8963-5BB7-A7E4-9E26F71BADAF"><p>The <codeph>RSubconnection</codeph> tests
+and <codeph>COMINF-ESOCK-RSocket-PublicAPI-0024</codeph> test case are excluded
+from execution. For more information, see <xref href="GUID-E8BD8844-3297-5848-BDF0-F6D595367145.dita#GUID-E8BD8844-3297-5848-BDF0-F6D595367145/GUID-CCC9A28C-29D5-560D-8284-4624911A28D7">Exclusion
+of Packet Switched Data (PSD) Tests</xref>. </p> </li>
+</ul> <p id="GUID-E83C0500-9203-53A7-92C4-7A08B713953A"><b>Steps to build and execute
+tests manually (Tests built into ROM)</b> </p> <p><b>For WINSCW platform: </b> </p> <ol id="GUID-45550688-3896-5992-BD66-CF029D33FF72">
+<li id="GUID-7F4FE861-7B01-5CFD-BD94-F0A62FEC24E5"><p> <b>Setup Scripts:</b>  </p> <p> <filepath>setup_t_comms-infras.script</filepath> is
+used to execute the entire comms-infras test suite. </p> <p> <filepath> setup_COMINF-ESOCK-&lt;class
+name&gt;-PublicAPI.script</filepath> is used to execute class specific test suites. </p> </li>
+<li id="GUID-33EA6D54-EFC8-57E7-AE6A-A20F9C853BDE"><p> <b>Running Scripts:</b>  </p> <p>Change
+directory to </p> <p> <filepath>%EPOCROOT%\epoc32\release\winscw\&lt;urel/udeb&gt;</filepath> </p> </li>
+<li id="GUID-6365AD46-7DA8-5C44-AAC9-26077EC09C3F"><p> <b>Execute the Tests:</b>  </p> <p><userinput>testexecute
+z:\comms-infras\esock\setup_&lt;test suite name&gt;.script </userinput> </p> <p> <filepath>setup_t_comms-infras.script</filepath> is
+used to copy the test data files on to c:\drive. </p> <p><userinput>testexecute
+c:\comms-infras\esock\&lt;test suite name&gt;.script</userinput> </p> <p> <filepath>t_comms-infras.script</filepath> is
+used to execute the entire comms-infras test suite. </p> </li>
+</ol> <p><b>For ARMV5 platform: </b> </p> <ol id="GUID-AEE95C52-52D2-5821-9107-9ED9763567B0">
+<li id="GUID-A3074144-6D14-572F-8CD2-91C347DB9DF6"><p> <b>Build ROM image:</b>  </p> <p><userinput> buildrom
+-D_EABI=ARMV5 –DRVCT -DUSE_STRONG_CRYPTOGRAPHY -D_CUSTOM_COMMSDAT &lt;h2/h4hrp&gt;
+techview td_comms-infras</userinput> </p> </li>
+<li id="GUID-0B944F34-4D9B-5662-9CA3-F1E69EB978CD"><p> <b>Setup Scripts:</b>  </p> <p> <codeph>setup_t_comms-infras.script </codeph> is
+used to execute the entire comms-infras test suite. </p> <p>setup_COMINF-ESOCK-&lt;class
+name&gt;-PublicAPI.script is used to execute class specific test suites. </p> </li>
+<li id="GUID-32F3DE57-7549-51D8-8440-C795D970D6F8"><p> <b>Running Scripts:</b>  </p> <p><userinput>Open
+eshell </userinput> </p> </li>
+<li id="GUID-0583246A-BE11-5D98-97ED-59108AAEC93A"><p> <b>Execute the Tests:</b>  </p> <p><userinput>testexecute
+z:\comms-infras\esock\setup_&lt;test suite name&gt;.script </userinput> </p> <p> <filepath>setup_t_comms-infras.script</filepath> is
+used to copy the test data files on to c:\drive. </p> <p><userinput>testexecute
+c:\comms-infras\esock\&lt;test suite name&gt;.script</userinput> </p> <p> <filepath>t_comms-infras.script</filepath> is
+used to execute the entire comms-infras test suite. </p> </li>
+</ol> <p><b>Steps
+to build and execute tests on phone directly using .pkg file </b> </p> <p><b>For ARMV5 platform: </b> </p> <ol id="GUID-542DBDA1-D202-50F6-80E6-7499377F2294">
+<li id="GUID-AD464104-19ED-545B-A93C-53236EA051CB"><p> <b> EShell and TestExecute:</b>  </p> <p>The
+phone must have eshell and testexecute installed. </p> </li>
+<li id="GUID-EF9D6F7C-8016-50EF-B993-F0BCD618A3F0"><p> <b> Certificate files:</b>  </p> <p>Ensure <filepath>.cer</filepath> and <filepath>.key</filepath> files are placed into <filepath>…/epoc32/pkg/</filepath> directory on the
+PC and renamed as<filepath>zeus.cer</filepath> and <filepath>SymbianACS.key</filepath> correspondingly. </p> </li>
+<li id="GUID-0A96ED67-7BE4-5A53-94F7-B4AC2A2D232F"><p> <b>Create and install
+SIS-file:</b>  </p> <p>Execute <filepath>makesisfiles.bat</filepath> from <filepath>…/epoc32/pkg/</filepath> directory. </p> <p><userinput>makesisfiles.bat</userinput> </p> <p>This creates <filepath>t_rconnection.sis,</filepath> <filepath>t_rsocket.sis,</filepath>  <filepath>t_rsocketserv.sis,</filepath> and <filepath>t_rsubconnection.sis</filepath> files. The files must be copied to an MMC
+card, transferred to the phone and executed. </p> <p>When the above files
+are executed, the comms-infras test suite is installed on the device. </p> </li>
+<li id="GUID-76BD5008-94A2-50F1-B9B1-FC162298C668"><p> <b> Running Scripts: </b>  </p> <p>Run
+the test scripts. For more information refer to <xref href="GUID-FF62C847-B887-573B-804B-C82335DA2FE7.dita#GUID-FF62C847-B887-573B-804B-C82335DA2FE7/GUID-E83C0500-9203-53A7-92C4-7A08B713953A">Steps
+to build and execute tests manually (Tests built into ROM)</xref>. </p> </li>
+</ol> <p><b>Selective
+Execution of Test Cases using TCS File</b> </p> <p>Test cases can be excluded
+from a test run by using a <filepath>.tcs</filepath> file. The <filepath>.tcs</filepath> file
+contains the IDs of test cases to be excluded. </p> <p>The test case IDs can
+be specified as a range, a list, or a combination of both, where each range
+or individual test case ID is delimited by a new-line character. </p> <p>For
+example, range of test case IDs to be excluded can be specified as: </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0001:
+             COMINF-ESOCK-RSubConnection-PublicAPI-0039</codeph>  </p> <p>A
+list of test cases IDs to be excluded can be: </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0001</codeph>  </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0005</codeph>  </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0007</codeph>  </p> <p>A
+combination of range and list can be: </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0005:
+             COMINF-ESOCK-RSubConnection-PublicAPI-0010</codeph>  </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0015:
+             COMINF-ESOCK-RSubConnection-PublicAPI-0020</codeph>  </p> <p> <codeph>COMINF-ESOCK-RSubConnection-PublicAPI-0030</codeph>  </p> <p>There
+is only one <filepath>.tcs</filepath> file, which is located at the following
+location: </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\config\t_comms-infras.tcs</filepath> </p> <p>For
+more information on location of <filepath>.tcs</filepath> files , see <xref href="GUID-E8BD8844-3297-5848-BDF0-F6D595367145.dita#GUID-E8BD8844-3297-5848-BDF0-F6D595367145/GUID-ED257AC4-2608-5051-A5AB-EAB48FDA741A">TCS
+File Source Location</xref> in Comms-Infras ESOCK Test Suite. </p> <p>Only <filepath>.tcs</filepath> file
+is modified during test execution using the test driver. </p> <p>When executing
+the tests manually, the following testexecute command illustrates the usage
+of the <filepath>.tcs</filepath> file: </p> <p><userinput>testexecute %EPOCROOT%\epoc32\release\winscw\&lt;urel/udeb&gt;\&lt;test
+suite name&gt;.script –[tcx|tci] %EPOCROOT%\epoc32\release\winscw\&lt;urel/udeb&gt;\
+t_comms-infras.tcs</userinput> </p> <p>This executes the specified script
+excluding the test cases specified in the <filepath>.tcs</filepath> file. </p> <p><b>Test Results</b> </p> <p><b> Test
+Results log file location</b> </p> <p>After the tests complete execution,
+result logs can be found on the system drive of the device in the \logs\testexecute\
+directory. On the PC the location of the results depends on whether the tests
+were run using TestDriver or Testexecute. TestDriver places the results in,<filepath>\epoc32\TestDriver\results\</filepath> and
+creates a new folder for each test run. Testexecute places the results in<filepath> 
+               \epoc32\winscw\c\logs\testexecute</filepath>. A <filepath>.html</filepath> log
+file can be found for each script contained in the suite, in its own subfolder </p> <p>Each
+test case in the script contains one test block, which performs a number of
+actions on an API. The log will display the percentage of test cases that
+have passed successfully. The script should ideally have a 100% pass rate. </p> <p><b>How to interpret test results</b> </p> <p>Each test suite produces its
+own HTML log file containing the results of the test run . When examining
+the log file, the results at the bottom of the log should be checked first.
+This gives a summary of the number of tests in the suite that have passed,
+failed or panicked. In the body of the log tests which pass are highlighted
+in green, tests which fail in red and tests which cause a panic in blue. </p> <p>If
+a failing/panicking test has been identified, its reason for failing/panicking
+can be seen by examining each step in the test, listed between the “START_TESTCASE”
+and “END_TESTCASE” tags. The steps which pass will have the word “INFO” followed
+by some information regarding the step. A failing step will instead have the
+word “ERROR”, followed by an explanation of the error (usually with an error
+code). If a panic occurs there may be no textual explanation of the problem,
+but a panic code will be given (within the blue highlighted text). </p> <p>When
+this test suite is run on a real device, some of the tests may fail due to
+limitations of the device. This will be because of the device not having the
+correct hardware (for example, no modem exists for a test which needs one),
+or lacking the right software plugins to run the test. This can be spotted
+if the log displays that a test has failed with a -5 error (which means KErrNotSupported).
+This -5 error basically means that the test has failed because the functionality
+in this test is not supported on the device used. Therefore, any tests failing
+with -5 are not due to defects, but to the limitations of the device used. </p> <p>Refer
+to <b>Symbian Verification Suite » TestDriver » Using TestDriver » Results
+» Viewing the test results</b> for more information on test driver results. </p> </section>
+<section><title>OS Focussed Components</title> <p>Table 1 illustrates the
+sub-components and classes available on each Symbian platform </p> <p> <b>Table
+1 – Component ESOCK class tested on each Symbian platform baseline</b>  </p> <table id="GUID-3A6B9F3A-882E-554E-9E93-0C186D4B2105">
+<tgroup cols="6"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/><colspec colname="col5"/>
+<thead>
+<row>
+<entry> Symbian platform Baseline</entry>
+<entry>9.1</entry>
+<entry>9.2</entry>
+<entry>9.3 </entry>
+<entry>9.4</entry>
+<entry>9.5</entry>
+</row>
+<row>
+<entry>Class1 - RConnection</entry>
+</row>
+<row>
+<entry>Class2 – RSocketX</entry>
+</row>
+<row>
+<entry>Class3 – RSocketServ</entry>
+</row>
+<row>
+<entry>Class4 - RSubConnection</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+</row>
+<row>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+</row>
+<row>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+</row>
+<row>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+<entry><p>X</p> </entry>
+</row>
+</tbody>
+</tgroup>
+</table> </section>
+<section id="GUID-8E8E2C13-102B-5DE3-AD49-9E719C443B60"><title>Appendix A
+- Echo Server</title> <p>To ensure that the full networking stack is correctly
+tested, an external IP Echo Server is used to receive data on the PC from
+the device under test and echo it back to a port on the device under test. </p> <p>In
+order to send data to the EchoServer, the tests need its IP address (that
+is, the real IP address of the PC running the server). This is set in the
+global Comms-Infras environment file, t_comms-infras.env, found in the following
+location </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\testdata\</filepath> </p> <p>t_comms-infras.env
+file has the following lines: </p> <codeblock id="GUID-DE6CF9ED-8331-5A8F-AB70-85E92013A85B" xml:space="preserve">[Network]
+LocalIpAddress    = &lt;insert_local_ip_address_here&gt;
+TcpPort        =10007
+UdpPort    =10008
+LocalPort    =2024
+BindPort    =10001
+</codeblock> <p>The &lt;insert_local_ip_address_here&gt; tag needs to be replaced
+with IP address of the PC running the EchoServer. For example: </p> <codeblock id="GUID-F3A5EDF1-EEE3-5EF8-AB71-50A73A98F752" xml:space="preserve">[Network]
+LocalIpAddress    = 10.10.10.10
+</codeblock> <p>The bind port is the port on the device under test that sends
+TCP and UDP data to the PC. The local port is the port on the device that
+receives the data echoed by the echo server on the PC. These ports may be
+configured in the t_comms-infras.env file </p> <p>To generate the <filepath>t_comms-infras.ini</filepath> referred
+to by the test data files and replace the IP address tag with the IP address
+of the PC, execute the following batch file: </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\InsertIpAddr.bat</filepath> </p> <p>The batch file executes the command, ipconfig, to retrieve the required
+IP address. </p> <p> <b>Note:</b> By default InsertIpAddr gets the IP address
+from the ipconfig section ending “Local Area Connection”. If your IP address
+is in a different section, you must edit InsertIpAddr.bat, changing “Local
+Area Connection” to your section name. </p> <p>Run Echo Server on the test
+PC using the following batch file: </p> <p> <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\StartEchoServer.bat</filepath> </p> <p>This will launch two command prompt windows. One each for the TCP
+and UDP connections made to the server. After running all of the tests the
+EchoServer can be stopped by closing the two Echo Server windows. </p> </section>
+<section id="GUID-408C9D57-6330-56B5-B1EB-E06D7474A930"><title>Appendix B
+- NT RAS</title> <p>If the tests are to be executed on the emulator, the PC
+must have two COM ports which are connected through a null-modem cable. The
+Symbian emulator talks to one of the COM ports and the NT RAS service talks
+to the other. </p> <p>If the tests are to be executed on hardware one of the
+serial (COM) ports on the PC has to be connected to the COM3 port on the hardware
+board. </p> <p>Here are the full instructions for setting up NT RAS: </p> <p> <b>B.1
+Install a Null modem</b>  </p> <ol id="GUID-6046CEB9-804B-5ED5-B0FA-7EAB5F19BCFE">
+<li id="GUID-D58A23C9-581A-530E-AFA5-9EA471BC803E"><p>Open the Control Panel </p> </li>
+<li id="GUID-735580CE-17FB-50B1-A450-994453D4EE74"><p>Open Phone and Modem
+Settings (In Windows XP the option can be found in printers and other Hardware) </p> </li>
+<li id="GUID-52B9E50E-E1E4-5C34-B02B-72A10E1ABD6E"><p>Goto the Modems tab </p> </li>
+<li id="GUID-6E2D3CFA-CE39-5E96-8966-9C0F2136B309"><p>Select Add... </p> </li>
+<li id="GUID-A2801561-996C-55D0-83F6-CFB8AA99C8AA"><p>Check the "Do not detect
+my modem; I will select it from a list." check box </p> </li>
+<li id="GUID-7B7E26E3-D55D-5224-ADCD-7B8E27E2618C"><p>Click Next </p> </li>
+<li id="GUID-AB9E946D-319A-5E2A-AD62-936C23F9BE0C"><p>Select the (Standard
+Modem Types) - Communications cable between two computers </p> </li>
+<li id="GUID-5E6D2AB9-962C-5BD7-860D-04013F0CF516"><p>Select the appropriate
+com port </p> </li>
+<li id="GUID-92D93260-D91C-5796-9830-A2812DC3D377"><p>Click Finish </p> </li>
+<li id="GUID-E0EA95B8-02E6-5640-AED5-E2B88B74F4A4"><p>Open the Properties
+of the Modem you have just installed </p> </li>
+<li id="GUID-0F0C1D16-D50D-58D2-B289-401EE8B1B1EE"><p>Set the maximum port
+speed to be 115200 (on the General tab) </p> </li>
+<li id="GUID-E0BDBDAB-9449-5258-BDC0-BAFBD54EE863"><p>Goto the Advanced tab </p> </li>
+<li id="GUID-76A25947-20F9-5171-86A0-A5C4F83CE02E"><p>Click Change Default
+Preferences... </p> </li>
+<li id="GUID-6C819AE1-4B9E-516C-97E8-9C28CEDB2886"><p>Make sure the Port speed
+is 115200 and the Flow control is None (on the General tab) </p> </li>
+<li id="GUID-12FF4368-5F01-54D4-9F25-41BF48C067D0"><p>Goto the Advanced tab </p> </li>
+<li id="GUID-1F3F06DD-2799-5F48-9EFD-742CABA19185"><p>Make sure the Data bits
+= 8, Parity = None and Stop bits = 1 </p> </li>
+<li id="GUID-FA91256C-189D-5241-8340-98AD340A09A2"><p>Keep clicking OK to
+close all the open dialogs </p> </li>
+</ol> <p> <b>B.2 Configuring NT RAS (Incoming Networking Connections)</b>  </p> <ol id="GUID-93BD9AD5-30AA-5F01-AC00-1EA7B8A183AD">
+<li id="GUID-76BBAAD2-D85D-55D0-BFF2-EEB2C29FB67C"><p>Open the Control Panel </p> </li>
+<li id="GUID-18490AEB-8135-5164-846C-63AEF4D240D4"><p>Open Networking and
+Dial-up Connections (*) </p> </li>
+<li id="GUID-F4B81013-CC2D-5EE8-B2E8-4300641AF368"><p>Open Make New Connection </p> </li>
+<li id="GUID-7B271CB9-7336-50D1-88CD-7207A7B5C0FF"><p>Click Next </p> </li>
+<li id="GUID-47CDB8D1-E6AE-5F5E-8753-C582BC538453"><p>Select the Accept incoming
+connections and click Next </p> </li>
+<li id="GUID-DA939D8C-FF04-5A89-8A09-9843048136D4"><p>Check the modem you
+have just installed and click Next </p> </li>
+<li id="GUID-5A2AB08C-DF07-5076-A5EF-F9D82577DBB4"><p>Select Do no allow virtual
+private connections and click Next </p> </li>
+<li id="GUID-D677D12F-730D-594F-8681-E73CADA9420F"><p>Add a new user </p> </li>
+<li id="GUID-C657855F-8365-53F6-A3BF-2F87E7773870"><p>Click Add </p> <ol id="GUID-E08E58A2-5EF6-512F-9AD9-89D52D02EFC6">
+<li id="GUID-E7DB4255-BA52-5317-B592-DA791E0B03AE"><p>Enter the following
+details (noting the case): </p> <ol id="GUID-4A20CB6E-74E9-599D-9881-AA4D7C226A1D">
+<li id="GUID-C81CAF26-2F3C-5EEC-88C4-FBEB43DBE739"><p>User name: RasUser </p> </li>
+<li id="GUID-456E36DB-CFA2-5D66-8CAC-955D1E26B225"><p>Password: pass </p> </li>
+</ol> <p> <b>Note</b>: Networks differ and may enforce strong passwords. In
+such a scenario, the password must be modified in the commdb. This can be
+done by modifying the following lines in the <filepath>CommDbCommsInfras.xml</filepath> file </p> <ul>
+<li id="GUID-7AA9C78F-5882-568D-9A25-270A2D976640"><p>&lt;IfAuthName&gt;RasUser&lt;/IfAuthName&gt; </p> </li>
+<li id="GUID-BA9DA566-9259-5DB3-BCB8-8C653D73FC0E"><p>&lt;IfAuthPass&gt;Pass&lt;/IfAuthPass&gt; </p> </li>
+</ul> </li>
+<li id="GUID-4AFE06F1-C8DE-5786-A693-7710785DA30B"><p>Click OK </p> </li>
+<li id="GUID-77DACB9B-7A1D-5342-8B18-C8ADE86C490C"><p>Make sure the new user
+is checked </p> </li>
+<li id="GUID-558873A5-D396-5663-8CC2-70A8F478BDA0"><p>Click Next </p> </li>
+</ol> </li>
+<li id="GUID-D33808D3-20DD-5576-90C3-290083042D84"><p>Setup the Networking
+Components </p> <ol id="GUID-DE06A816-A3D7-5647-B711-DFAAF102531E">
+<li id="GUID-729D3B36-DB20-5D29-9A15-0390BD931C5B"><p>If TCP/IP is not set
+up, uncheck "Allow callers to access my area Networks". </p> </li>
+<li id="GUID-68C5A998-C782-58EF-A9AE-6C202ACF0F40"><p>Check "Specify TCP/IP
+addresess" and add "192.68.0.1" to "From:"-mask and "192.68.0.2" to "To:"
+mask. </p> <p> <b>Note:</b> This step may be machine or network dependent. </p> </li>
+<li id="GUID-ABF179D2-B0D9-5287-B62E-FEDF727CD9DB"><p>Click Next </p> </li>
+</ol> </li>
+<li id="GUID-3136FF3C-B75A-55BC-9033-A40A586B6108"><p>Enter whatever name
+you like for the connection name. </p> </li>
+<li id="GUID-38D05A89-0542-5B36-A9BA-F8545343AA05"><p>Click Finish </p> </li>
+<li id="GUID-28FFA56F-67C6-5FD0-9CDC-9ED05D3B8478"><p>Open the Properties
+of the connection you have just created </p> </li>
+<li id="GUID-9F2AC22B-67D5-5AE7-BF6D-F74B0928DB10"><p>Go to the Users tab </p> </li>
+<li id="GUID-0875AA47-0638-503F-8325-6CA2E863D7A2"><p>Make sure the "Always
+allow directly......... a password" check box is unchecked </p> </li>
+<li id="GUID-102A3335-DCCC-5F7E-90F3-83892064BBA2"><p>Click OK </p> </li>
+</ol> <p> <b>* Steps 1-6 on XP</b>  </p> <ol id="GUID-BB58DFF8-90B8-5496-8AD0-AF61684626A1">
+<li id="GUID-15347C55-30DB-53F9-8824-3A0C50699608"><p>1. Select Network and
+Internet Connections </p> </li>
+<li id="GUID-7A2F0239-38B6-5A47-899C-A7292D15D339"><p>2. Select network connections </p> </li>
+<li id="GUID-62F41048-5489-52F2-B4AF-5BFDA7E6FD24"><p>3. Click on “create
+a new connection -&gt; new connection wizard </p> </li>
+<li id="GUID-64A67B33-3176-5E9E-8102-418BF9902DE0"><p>4. Click next </p> </li>
+<li id="GUID-A918F97C-4F05-5D35-B67F-92B7C8456946"><p>5. Select radio button
+“set up an advanced connection </p> </li>
+<li id="GUID-DCB151A4-40BE-5A93-9F2A-1C6F71F0F809"><p>6. Accept incoming connections </p> </li>
+</ol> <p>Continue as instructed from step 6 onwards. </p> </section>
+<section id="GUID-177B5101-DBD1-5B08-8DB7-B186528054EB"><title>Appendix C
+- Testing on real phone through WIFI connection</title> <p>If the tests are
+to be executed on the real phone through WIFI connection, a wireless router
+must be connected to the PC to provide a wireless connection channel between
+the PC and the real phone. </p> <p>Before you start testing, configure the
+WIFI-enabled phone’s IP address within the wireless IP domain. The phone can
+be configured using two types of IP addresses, static IP address and DHCP
+IP address. </p> <p>Due to the convenience consideration of automated running
+the test suites, the phone’s WIFI card IP address are configured as the static
+IP address . The following are the instructions to set the static IP address: </p> <ol id="GUID-DD517E90-3A90-5FA9-B20E-A126A31B637E">
+<li id="GUID-B359B246-E4CC-59D1-9F2F-9FFF2BF2586F"><p>Connect the wireless
+router to the PC </p> </li>
+<li id="GUID-34455916-ABDB-5DFB-91F3-B29FD4CF7EE7"><p>Switch on the phone’s
+WIFI card and search for the WIFI hot spot. </p> </li>
+<li id="GUID-816FB34F-04AB-5974-BCDA-85A9BCE62C1E"><p>Find a router to be
+connected to the WIFI hotspot. </p> </li>
+<li id="GUID-A40A10D2-3BE0-513A-90BB-7CF9AB7060F3"><p>Open the web browser
+from the PC and logon to the administration web page, and move to the static
+IP address configuration web page. </p> <p>The web page of static IP address
+configuration shows the MAC address of WIFI card of phone. </p> </li>
+<li id="GUID-C405CA63-A767-53A4-90BD-A04073D89636"><p>Click the <b>Add new
+record</b> button to bind new static IP address to the MAC address of the
+phone’s WIFI card. Once it is done, the wireless router assigns an IP address
+to this phone’s WIFI card. Each time when the phone connected, the router
+assigns this specified IP address to the phone. </p> </li>
+</ol> <p>When the phone’s WIFI card IP is specified, you also must let the
+PC run within the same network domain. This enables you to run InsertIpAddr.bat
+during the wireless connection between the PC and router. You can also allocate
+a static IP address to the PC through the configuration web page of the wireless
+router. </p> <p>The following are the steps to execute the test on the real
+phone through the WIFI connection: </p> <ol id="GUID-6519C26F-2F52-596D-A0D8-6DB1477BA953">
+<li id="GUID-D43DC996-7308-521F-B9D7-7826E2C7DD9B"><p>Turn on the WIFI on
+the real phone and connect it to the PC-connected wireless router. </p> </li>
+<li id="GUID-1277798D-64E0-5EEF-8CCE-09AB5DBDA0F0"><p>Keep the router connecting
+to the PC, and execute the <filepath>InsertIpAddr.bat</filepath> to generate
+the correct IP allocated with in the wireless router’s domain in the t_comms-infras.ini. </p> </li>
+<li id="GUID-B36454A9-FC6A-5CE0-8A94-30E6EE4EE09C"><p>The entire Comms-Infras
+test component can be built from <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\...</filepath> </p> <p>Individual
+test components can be built from the respective group directory. For example,<filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\esock\t_&lt;sub-component&gt;\group</filepath>. </p> <p>Run the following commands : </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld
+test build armv5 urel </userinput> </p> <p> <b>Note</b>: To connect to the
+licensee server , change back the network cable connection to the original
+network from PC side might is needed. When it finished , change back the connection
+to the wireless router. </p> </li>
+<li id="GUID-059C8A82-C0C1-5BE3-BD66-07E98963EE00"><p>Run the following command: </p> <p><userinput>startechoserver</userinput> </p> <p>If
+you want to build and execute the tests using the testdriver, make sure the <codeph>statapi</codeph> application
+exists in the phone and it must be run on the real phone before you proceed
+for further steps. </p> </li>
+<li id="GUID-9AAC8E10-13B9-5397-B169-61F530976780"><p>Configure the TestDriver
+using the automated scripts located at <filepath>…\commsinfrastructureapitest\commsinfrastructuresvs\suite\group\…</filepath>  </p> <p>Execute
+the following commands: </p> <p><userinput> testdriversetup</userinput> </p> <p> <filepath> testdriversetup.bat</filepath> calls <filepath>testdriversetup.pl
+                </filepath> which applies an appropriate set of configuration
+parameters. </p> <p><userinput>testdriver config --testexec OFF</userinput> </p> <p>This
+command notifies the testdriver that it must not transfer the TEF component
+sis file to the real phone if the real phone has already built-in TEF module. </p> <p><userinput>testdriver
+config --cert phone_applied_cert_file </userinput> </p> <p><userinput>testdriver
+config --key phone_applied_key_file </userinput> </p> </li>
+<li id="GUID-183605C9-F7BF-50FD-90A8-68E1443360F0"><p>Connect the PC and the
+real phone with USB or some other cable, and execute the following commands: </p> <p><userinput>testdriver
+build -p armv5 -b urel -s comms-infras.esock.csd.RConnection</userinput> </p> <p><userinput>testdriver
+run -p armv5 -b urel -s comms-infras.esock.csd.RConnection –t usb1</userinput> </p> </li>
+</ol> <p> <b>Notes</b>: </p> <ul>
+<li id="GUID-EB611980-424B-55A1-93E2-9B9100EBE530"><p>During the execution,
+if the phone’s CommsDB has not cancel the dialog prompt in the ConnectionPreferences
+table, you must manually select the WIFI hot spot (IAP) to be connected to
+the Echoserver. </p> </li>
+<li id="GUID-BB06D2E2-2A22-5C9F-AFE1-7CFA9DED6142"><p>Ensure that the wireless
+connection of the phone remains unaffected because phone has different wireless
+signal strength under different situations. For example, wireless strength
+may vary with distance. </p> </li>
+<li id="GUID-1C1709ED-59D4-5FD1-A2A9-3531A412F9E5"><p>While testing under
+the wireless environment, the phone package can be blocked by the PC’s firewall.
+To avoid this problem, modify the firewall configuration to turn off this
+blocking or close the firewall. </p> </li>
+</ul> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF6846AA-7E8B-40DC-B6EC-32A8550F4942.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF6846AA-7E8B-40DC-B6EC-32A8550F4942" xml:lang="en"><title>Using
+Carbide.c++ and P.I.P.S.</title><shortdesc/><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p>To be able to use P.I.P.S. and Carbide.c++ efficiently, perform the following
+steps:</p>
+<ul>
+<li><p>Define the system include files required by P.I.P.S.. This is done
+in the <uicontrol>System Options</uicontrol> view in the <uicontrol>Project
+Properties</uicontrol> window.</p></li>
+<li><p>Specify the needed P.I.P.S. libraries:<ul>
+<li><p><filepath>libc.lib</filepath> must always be specified.</p></li>
+<li><p>Libraries must be specified for all build configurations.</p></li>
+</ul>  </p></li>
+</ul>
+<note>The include paths for P.I.P.S. headers must be specified as well as
+the used P.I.P.S. libraries. </note>
+<note>This must be done for all possible build configurations.</note>
+<section id="GUID-140C883C-819A-472A-8759-26566A62941C">       <title>Inclusion
+of <filepath>libc.lib</filepath> in the MMP file</title><p><filepath>libc.lib</filepath> must
+be included in the MMP file for both the <codeph>WINSCW</codeph> as well as
+the target. The code will compile and link for <codeph>WINSCW</codeph> even
+if <filepath>libc.lib</filepath> is not mentioned in the MMP file, but will
+fail during execution. If <filepath>libc.lib</filepath> is not mentioned in
+the MMP file for the target, the code will compile but will fail during linking.</p> 
+   </section>
+<section id="GUID-DB21F39C-8FF9-47BF-BC56-8599F22F330E"><title>Order of the <codeph>SYSTEMINCLUDE</codeph> in
+the MMP file</title><p>Carbide.c++ 1.1 does not take into account the header
+file inclusion order as mentioned in the MMP file. This is a typical scenario
+when the user needs the headers from both P.I.P.S. and <filepath>estlib.lib</filepath>.
+Although, the order of the <codeph>SYSTEMINCLUDE</codeph> in the MMP file
+is:</p><codeblock xml:space="preserve">epoc32\include\stdapis
+epoc32\include\libc </codeblock><p><filepath>epoc32\include\libc</filepath> will
+be included first followed by <filepath>epoc32\include\stdapis</filepath>.
+(It might be included on the basis of alphabetical order). </p><p>This issue
+can be resolved by manually changing the project properties in carbide.c++
+IDE. In order to change the <uicontrol>Project Properties</uicontrol> in Carbide.c++
+IDE:</p><ol>
+<li id="GUID-E280C86C-F29C-45E2-BCA1-A0161790578A"><p>Go to <uicontrol>Project</uicontrol>.</p></li>
+<li id="GUID-BED1ED11-BB1B-4C08-B4AD-ABF043A69955"><p>Click on <uicontrol>Property</uicontrol>.</p></li>
+<li id="GUID-F0A81703-9804-4A5C-8D25-FBF266AF2382"><p>Click on <uicontrol>C
+\C++. Build</uicontrol> and choose the <uicontrol>ToolSettings</uicontrol> Tab </p></li>
+</ol></section>
+<section id="GUID-7DCA8B26-BC6F-4709-AA45-6316F0B5CEDB"><title>Suppressing
+"illegal implicit conversion error"</title><p>The code that makes use of implicit
+pointer casts will not compile with the <codeph>WINSCW</codeph> compiler.
+The compilation breaks with "illegal implicit conversion error". However,
+the same code will compile with GCC compiler. A work around for this problem
+without changing the code is to define a pragma.</p></section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C" xml:lang="en"><title>Certificate
+Store Binary Files</title><shortdesc>This section provides information on the binary form of the following: </shortdesc><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><ul>
+<li id="GUID-3CD90198-55E8-5C44-B754-15A5ADC3BFFF"><p><xref href="GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita#GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C/GUID-5022A1B5-4467-5510-98A0-995DDC17059E">File certificate store</xref>  </p> </li>
+<li id="GUID-E2219388-AF45-5C85-9B81-445D315843B9"><p><xref href="GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita#GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C/GUID-4D5EB78E-437D-5718-8CBE-810D412FA30E">SWI certificate store</xref>  </p> </li>
+<li id="GUID-B6E0B908-2DF3-567F-9A57-C45F42B306DA"><p><xref href="GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C.dita#GUID-FF6F26C7-0037-5117-9232-6FAFFA152F0C/GUID-D7669386-B2FC-5F3A-844C-20B509B6A0D8">Certificate client files</xref>  </p> </li>
+</ul> </section>
+<section id="GUID-5022A1B5-4467-5510-98A0-995DDC17059E"><title>File certificate
+store</title> <p>Use the <codeph>--bfilecertstore</codeph> command-line option
+to specify the file certificate store in binary form. </p> <p>The certificate
+store file used at runtime is normally stored in <codeph>$:\private\101f72a6\certclients.dat</codeph>,
+where <codeph>$</codeph> is the system drive. The <codeph>certapp</codeph> tool
+initializes the certificate store file with the contents of the ROM file at <codeph>z:\private\101f72a6\certclients.dat</codeph>. </p> </section>
+<refsyn id="GUID-4D5EB78E-437D-5718-8CBE-810D412FA30E"><title>SWI certificate
+store</title> <p>Use the <codeph>--bswicertstore</codeph> command-line option
+to specify the SWI certificate store in binary form. </p> <p>Both the ROM
+store in <codeph>z:\resource\swicertstore.dat</codeph> and the writable SWI
+store data files in <codeph>$:\resource\swicertstore\dat\</codeph> (where <codeph>$</codeph> is
+the system drive) use the same format. </p> </refsyn>
+<refsyn id="GUID-D7669386-B2FC-5F3A-844C-20B509B6A0D8"><title>Certificate
+client files</title> <p>Use the <codeph>--bcertclients</codeph> command-line
+option to specify the certificate client files in binary form. </p> <p>The
+certificate client file used at runtime is normally stored in <codeph>$:\private\101f72a6\certclients.dat</codeph> where <codeph>$</codeph> is
+the system drive. The <codeph>certapp</codeph> tool initialises the file with
+the contents of the ROM file at <codeph>z:\private\101f72a6\certclients.dat</codeph>. </p> </refsyn>
+</refbody><related-links>
+<link href="GUID-B1B3C5E6-9F38-5A55-A30E-4C7591B446CC.dita"><linktext>Certificate
+Store Human-Readable File Formats</linktext></link>
+</related-links></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD"><title>What are Access Point Priorities?</title><shortdesc>This topic explains access point priorities and how the values are inherited. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody><p>Contention management issues are resolved using the priorities associated with the Access Points. Priorities are assigned to Access Point Layers. If an incoming GPRS connection has a higher priority than an existing GRPS connection, the existing connection is stopped and the new connection is started. If the incoming GPRS connection has a lower priority than all existing GPRS connections the incoming GPRS connection is discarded. </p> <p>The Access Point priority is stored in the CommsDat AccessPointTable. You can specify a priority for access point using the CommsData config file in “cfg” format. The priority range is 1-KMaxTUint where 1 is high priority and KMaxTUint is low priority. If a priority is not assigned to an access point the default value is KMaxTUint is given. A zero priority value is not allowed. </p> <example><title>Access Point Priority Inheritance Example</title> <p>Access Point Priorities can be inherited between Access Point Layers. The current Access Point Layer priority is compared to the inherited Access Point priority, the highest priority is assigned to the Point Layer. This means that the priority of an Access point layer can be overridden by an inherited priority. </p> <p> <codeph>CurrentPriority = max_priority{AccessPointPriority,
+          inherited_priority}</codeph>  </p> <p>The following diagram contains three Access Point Layers. Each Access Point Layer has an associated priority. </p> <fig id="GUID-25A488E3-B1B8-58BB-835F-944D4480B5F9"><image href="GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e321822_href.png" placement="inline"/></fig> <p>As a result of inheritance the following priorities are applied. </p> <p>For IP_MCPR1 the resultant priority is {3, KmaxTUint} = 3 </p> <p>For IPPROTO_MCPR1 the resultant priority is {3, 5} = 3 </p> <p>For PDP_MCPR1 the resultant priority is {4, 3} = 3 </p> </example> <section><title>Changes in Access Point Priorities at Runtime</title> <p>The following diagram outlines how priorities can change at runtime. </p> <fig id="GUID-9D3C98CE-9C35-5B89-AA55-28D4695814E7"><image href="GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e321845_href.png" placement="inline"/></fig> <p>In this example: </p> <ul><li id="GUID-8C8FEAA2-27E5-5A7D-9B88-CB33E494429F"><p>Two stack configurations (SNAP1 and SNAP2) are defined in the CommsDat. The configurations have different settings for the IP layer but the same IPProto and PDP layers. </p> </li> <li id="GUID-09F5F8EF-C969-57E8-9E26-4F1AC95C707C"><p>An application is started on SNAP1. IP_CPR1 and IP_MCPR1 are created. </p> </li> <li id="GUID-D87C4F2D-07BD-5FAB-AEFE-17F0448B6439"><p>A second application is started on SNAP2. IP_CPR2 and IP_MCPR2 are created. </p> </li> <li id="GUID-462FEA77-7CCB-5A12-817D-91FFF9239C05"><p>Current priorities for IPProto and PDP layer will be recalculated. On this example they do not change because priority 6 is the lowest priority in this stack. </p> </li> <li id="GUID-758ECDB2-148D-5E05-A3F0-E116AB169368"><p>If first application stops its connection and second application continue to work, IP_CPR1 is destroyed. IPPROTO_CPR1 and PDP_CPR1 priorities will be recalculated. </p> <p>IPPROTO_CPR1 priority = max_priority{5, 6} = 5 </p> <p>PDP_CPR1 priority = max_priority{4, 5} = 4 </p> </li> </ul> </section> </conbody><related-links><link href="GUID-CD57B3EB-B8FD-53CE-B319-FB6275BE391E.dita"><linktext>What is Contention?</linktext> </link> <link href="GUID-0E0D4E95-470F-54BE-8DCB-719976C8B84C.dita"><linktext>What is Contention
+                Management?</linktext> </link> <link href="GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita"><linktext>Starting a Network Connection
+                Tutorial</linktext> </link> </related-links></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF82B80D-18CA-5333-83EB-3AB94F696016.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE reference
+  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<reference id="GUID-FF82B80D-18CA-5333-83EB-3AB94F696016" xml:lang="en"><title>Options-List</title><prolog><metadata><keywords/></metadata></prolog><refbody>
+<section><p>Options-List can be specified within a PKG file to display a list
+of options to the Symbian device user during installation. The options that
+are selected, control the installation of optional components. </p> </section>
+<section><title>Syntax</title><codeblock id="GUID-8E47AFB4-B035-599F-8B9F-1B7729228BA4" xml:space="preserve">!({"Option string language 1",...},...)
+</codeblock> <p>For example, </p> <codeblock id="GUID-4DFE5803-1442-51E8-BC6B-B7CE84586B03" xml:space="preserve">
+
+!({"Add-on 1 (20KB)"},{"Add-on 2 (75KB)"},
+  {"Add-on 3 (80KB)"},{"Add-on 4 (20KB)"}) 
+</codeblock> <p>Each string corresponds to a PKG file variable called <codeph>option1</codeph>, <codeph>option2</codeph> and
+so on. The following are the values of these options: </p> <ul>
+<li id="GUID-36EAB6F5-6019-56B0-B63A-3D31FF2EADF1"><p>Value <codeph>0</codeph> signifies
+that the option is not selected. </p> </li>
+<li id="GUID-8364E286-AF83-5528-8DFC-553C7B4AC18E"><p>Value <codeph>1</codeph> signifies
+that the option is selected. </p> </li>
+</ul> <p>The selection affects the values of option attributes (<codeph>option1,
+option2, option3, ...</codeph>). In the preceding example, if option1 (<codeph>Add-on
+1 (20KB)</codeph>) is selected, then the value of the <codeph>option1</codeph> attribute
+changes from <codeph>0</codeph> to <codeph>1</codeph>. </p> <p>You can test
+these values by specifying the optional components within conditional blocks
+as shown in the following example: </p> <codeblock id="GUID-75DAA0F6-48CE-5274-9762-4481CDB26FFA" xml:space="preserve">If option1 = 1
+; install optional file 1 to the private directory
+    "sample.txt"-"!:\private\E800005A\sample.txt";
+endif
+
+If option2 = 1
+; install optional file 2 to the private directory
+    "sample2.txt"-"!:\private\E800005A\sample2.txt";
+endif</codeblock> </section>
+<section><p> <b>Note:</b> The<codeph> option&lt;n&gt;</codeph> attributes behave
+as global variables. </p> </section>
+<example id="GUID-4A2F5CA7-6571-5B53-86B7-FB77F3AB6CDA"><title>Examples</title> <ul>
+<li id="GUID-D326F784-0D83-59DC-B30B-9AFDB0B009B2"><p>The following example
+package file illustrates the usage of a basic options list. </p> <codeblock id="GUID-BDBD6AD9-C795-5448-87D5-B9B4E6CE9011" xml:space="preserve">;Languages
+&amp;EN
+
+%{"Nokia Corporation"}
+
+:"Nokia Corporation"
+
+;Header
+#{"Options"}, (0x81111107), 1, 2, 3,TYPE=SA
+
+;Display 3 options to the user
+!({"Install document (1KB)"},{"Install document2 (1KB)"},{"Install document3 (1KB)"})
+
+if option1 = 1
+    "files\option1.txt"-"!:\private\81111108\option1.txt";
+endif
+
+if option2 = 1
+    "files\option2.txt"-"!:\private\81111108\option2.txt";
+endif
+
+if option3 = 1
+    "files\option3.txt"-"!:\private\81111108\option3.txt";
+endif</codeblock> </li>
+<li id="GUID-ABF7F8B9-2788-505D-B276-CF75368CD497"><p>The following example
+package file demonstrates an option list that supports multiple languages. </p> <codeblock id="GUID-08E54984-A832-533B-AB6E-7107874F19E0" xml:space="preserve">;Languages
+&amp;EN,FR
+
+;Header
+#{"MultiLanguageOption-EN", "MultiLanguageOption-FR"}, (0x81111107), 1, 2, 3
+
+%{"Vendor","Vendeur"}
+:"Vendor"
+
+!({"ENOption1", "FROption1"},{"ENOption2","FROption2"},{"ENOption3","FROption3"})
+
+if option1 = 1
+    {"text\englishfile1.txt" "text\frenchfile1.txt"}-"!:\private\81111108\import\file1.txt";
+endif
+
+if option2 = 1
+    {"text\englishfile2.txt" "text\frenchfile2.txt"}-"!:\private\81111108\import\file2.txt";
+endif
+
+if option3 = 1
+    {"text\englishfile3.txt" "text\frenchfile3.txt"}-"!:\private\81111108\import\file3.txt";
+endif
+        </codeblock> </li>
+</ul> </example>
+</refbody></reference>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FF8F5D97-7D37-5F6B-84A3-C064E2FD53E0" xml:lang="en"><title>System
+Static Functions Overview</title><shortdesc>This document provides an overview of the system static functions.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section id="GUID-1597A42C-DD82-4BF1-9F26-DCF9F220C44A"><title>Purpose</title> <p>Provided miscellaneous system functions. </p> </section>
+<section id="GUID-B0C9B715-3B52-4293-82DD-ABE524EC1CE1"><title>Description</title> <p>The System Static Functions, provided
+by the <xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita"><apiname>User</apiname></xref> class, typically either relate to the current
+thread, or its heap, or system-wide properties, such as system time. </p> <p>The
+API is divided into the following areas: </p> <p><b>Address
+information </b> </p> <p>Checks if an address is within the ROM. </p> <p><b>Algorithms </b> </p> <p>Algorithms for searching and sorting. </p> <p><b>Asynchronous service support </b> </p> <p>Signalling and waiting on thread
+request semaphores. See also <xref href="GUID-1294F540-FDA7-5050-BAFB-3C9888491B98.dita">Asynchronous
+Services Overview</xref>. </p> <p><b>Beep</b> </p> <p>Make a beep tone. </p> <p><b>Cleanup
+support </b> </p> <p>Raising leaves and setting traps. See also <xref href="GUID-E5A83EF3-948B-5729-A2CD-3644E803520B.dita">Cleanup
+Support Overview</xref>. </p> <p><b>CObject
+name validation </b> </p> <p>Check that name is a valid <codeph>CObject</codeph> name.
+See also <xref href="GUID-BE0C94BE-94F0-54B3-8674-366C09261E5D.dita">Reference
+Counting Objects Overview</xref>. </p> <p><b>C-style
+string length </b> </p> <p>A string length function for C-style strings. See
+also <xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors Overview</xref>. </p> <p><b>Debugging support </b> </p> <p>Enable or disable just-in-time debugging. </p> <p><b>Device management </b> </p> <p>Loading and unloading physical and logical
+device drivers. </p> <p><b>Execution
+control </b> </p> <p>Force thread termination and panics and respond to these
+events. See also <xref href="GUID-547CF71C-6A62-57C0-A9BE-E76B4286C6D6.dita">Threads
+And Processes Overview</xref>. </p> <p><b>Heap
+debugging support </b> </p> <p>Relative to the current thread's heap; they
+support debugging of memory leaks. See also <xref href="GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita">Memory
+Allocation Overview</xref>. </p> <p><b>Language-dependent
+character functions </b> </p> <p>Folding, collating, and case conversion functions
+for strings, dependent on the language of the current locale. See also <xref href="GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita">Descriptors Overview</xref>. </p> <p><b>Locked incrementer and decrementer </b> </p> <p>Atomic increment and decrement
+operations. </p> <p><b>Notification
+service </b> </p> <p>Display a text message on the screen for a short time.
+See also <xref href="GUID-24508C2D-31B9-5CC2-9EB8-F00AD39D8AA0.dita">Notification
+Services Overview</xref>. </p> <p><b>Set
+time </b> </p> <p>Set secure system time and the non-secure system time. See
+also <xref href="GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita">Date And Time
+Handling Overview</xref>. </p> <p><b>Synchronous
+timer services </b> </p> <p>Suspend current thread for relative or absolute
+time. See also <xref href="GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita">Timers
+And Timing Services Overview</xref>. </p> <p><b>System
+wide locale </b> </p> <p>Set the system wide currency symbol. See also <xref href="GUID-92C032CF-9291-5970-9152-EFF47C9AE3B9.dita">Locale Settings Overview</xref>. </p> <p><b>Tick count</b> </p> <p>Machine's current tick count. </p> <p><b>User heap management </b> </p> <p>Heap manipulation functions for the
+current thread's heap. See also <xref href="GUID-6D8460DF-8B0F-5249-B236-92ABE0E67A14.dita">Memory
+Allocation Overview</xref>. </p> <p><b>Version
+information and comparisons </b> </p> <p>Functions to compare two versions
+and to get the version of the operating system. See also <xref href="GUID-C61A6E8E-F295-53B4-ACC6-CFE1D9117895.dita">Version
+Handling Overview</xref>. </p> </section>
+</conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FFA5956E-0632-42F5-A2F9-0503888EF72B.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-FFA5956E-0632-42F5-A2F9-0503888EF72B" xml:lang="en"><title>EGL
+Reference Implementation Component</title><shortdesc>The EGL Reference Implementation component implements the minimum
+EGL functionality to support OpenWF composition. It does not implement the
+EGL functionality required to support the use of the Khronos rendering APIs,
+such as OpenGL ES and OpenVG. Typically device creators replace the reference
+implementation with a fully functional implementation of their own. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
+<p><b>Target audience</b>: Device creators. </p>
+<section id="GUID-3400F826-F4A6-4BCA-BF98-9CD941532B8A"><title>Implemented
+APIs</title><p>The EGL Reference Implementation implements the following EGL
+1.4 APIs: </p><ul>
+<li><p><codeph>eglGetError()</codeph></p></li>
+<li><p><codeph>eglGetDisplay()</codeph></p></li>
+<li><p><codeph>eglInitialize()</codeph></p></li>
+<li><p><codeph>eglTerminate()</codeph></p></li>
+<li><p><codeph>eglReleaseThread()</codeph></p></li>
+<li><p><codeph>eglQueryString()</codeph></p></li>
+<li><p><codeph>eglGetProcAddress()</codeph></p></li>
+</ul><p>The EGL Reference Implementation also implements the following reusable
+sync extension functions:</p><ul>
+<li><p><codeph>eglCreateSyncKHR()</codeph></p></li>
+<li><p><codeph>eglDestroySyncKHR()</codeph></p></li>
+<li><p><codeph>eglClientWaitSyncKHR()</codeph></p></li>
+<li><p><codeph>eglSignalSyncKHR()</codeph></p></li>
+<li><p><codeph>eglGetSyncAttribKHR()</codeph></p></li>
+</ul><p>The Reference Implementation implements <codeph>eglGetProcAddress()</codeph> ,
+which supports retrieving OpenWF-C extension functions. </p><p>Calling any
+of the unsupported APIs panics the client with the <codeph>EEglPanicNotSupported</codeph> panic
+code and the return value and EGL error code are undefined. This behavior
+deliberately does not conform to the EGL specification. It is intended to
+make it easy to detect errors in the platform configuration—for example, where
+the intention was to use a fully-functional EGL implementation instead of
+the Reference Implementation.</p></section>
+<section id="GUID-264ED891-CB0A-4D6D-8640-8A11A9BD79A5"><title>Implementation-specific
+information</title><p>The Reference Implementation returns the following implementation-specific
+strings: </p><table id="GUID-EAEA383C-E4ED-4C11-A957-6EFFEECDE6BD">
+<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
+<thead>
+<row>
+<entry valign="top">String</entry>
+<entry valign="top">Value</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry>EGL_CLIENT_APIS</entry>
+<entry>“”</entry>
+</row>
+<row>
+<entry>EGL_EXTENSIONS</entry>
+<entry>“EGL_KHR_reusable_sync”</entry>
+</row>
+<row>
+<entry>EGL_VENDOR</entry>
+<entry>“Nokia”</entry>
+</row>
+<row>
+<entry>EGL_VERSION</entry>
+<entry>“1.4 Reference EGL”</entry>
+</row>
+</tbody>
+</tgroup>
+</table></section>
+
+<section id="GUID-8ED3006D-56A3-4512-A1A8-0E88149C236B"><title>Thread handling</title><p>The
+Reference Implementation allows the supported EGL APIs to be used from multiple
+threads within the same process. The Reference Implementation maintains the
+process and thread state in order to conform to the correct behavior described
+in the EGL specification. Access to process-wide objects is serialized and
+protected by mutex to prevent race conditions.</p><p>The Reference Implementation
+uses its own heap to allow the creation, access and destruction of process-wide
+objects from any thread. This includes the <codeph>EGLDisplay</codeph> and <codeph>EGLSync</codeph> objects.
+ The heap is created in a local chunk.</p><p>For simplicity, the Reference
+Implementation supports only one display: <codeph>EGL_DEFAULT_DISPLAY</codeph>.
+ A request to obtain any other <codeph>EGLDisplay</codeph> returns <codeph>EGL_NO_DISPLAY</codeph>. <codeph>EGLDisplay</codeph> is
+a process-wide resource that can be accessed from any thread. Its behavior
+follows the EGL specification for <codeph>eglGetDisplay()</codeph>, <codeph>eglInitialize()</codeph> and <codeph>eglTerminate()</codeph>.</p><p>Each
+client thread can have its own EGL error. Error handling and thread state
+management follows the EGL specification for <codeph>eglGetError()</codeph> and <codeph>eglReleaseThread()</codeph>.</p></section>
+<section id="GUID-8B9FB71D-8DC8-4944-9DA8-AEC821C1041D"><title>DLL summary</title><table id="GUID-80E05C78-5FD4-5489-A1DA-A759EB7F9530">
+<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
+<thead>
+<row>
+<entry>DLL</entry>
+<entry>Description</entry>
+</row>
+</thead>
+<tbody>
+<row>
+<entry><p> <filepath>libegl_ref.dll</filepath>  </p> </entry>
+<entry><p>The EGL reference implementation.</p> </entry>
+</row>
+<row>
+<entry><p><filepath>libEGL.dll</filepath></p></entry>
+<entry><p>In the emulator, this provides a mechanism that switches among different
+EGL implementation DLLs used in different scenarios, including the Reference
+Implementation mentioned above. For ARM builds, the file above is renamed
+to this during the ROM build process. This is controlled by IBY files. </p></entry>
+</row>
+</tbody>
+</tgroup>
+</table><p>To allow different EGL implementations to be used on a platform,
+the Reference Implementation is built with a target name of <filepath>libegl_ref.dll</filepath>.
+However, EGL Clients should link their code against <filepath>libEGL.lib</filepath>.</p></section>
+<section id="GUID-0685C8AA-5F35-49B7-BF02-C147BCDCCE89"><title>Enabling the
+EGL Reference Implementation</title><p><b>Emulator</b></p><p>To enable the
+ScreenPlay OpenWF-C components and the EGL Reference Implementation in the
+emulator, add the following lines to the <filepath>\epoc32\data\epoc.ini</filepath> file:</p><codeblock xml:space="preserve">SYMBIAN_GRAPHICS_USE_OPENWF
+SYMBIAN_GRAPHICS_USE_EGL_REF</codeblock></section>
+</conbody><related-links>
+
+<link href="GUID-A5914CFF-6F86-53E8-9928-36D3379835B1.dita"><linktext>EGL Interface
+Overview</linktext></link>
+</related-links></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e66617_href.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-FFBD95C6-0B12-5FD7-BA69-89BBFB97F0A1" xml:lang="en"><title>Call
+Resume Tutorial </title><shortdesc>This tutorial describes how to resume a call with the telephony
+API for applications. </shortdesc><prolog><metadata><keywords/></metadata></prolog><taskbody>
+
+
+<steps id="GUID-43E11818-C05F-53B4-8DCB-7246BAE47AC8">
+<step id="GUID-DF620D49-997B-5780-A7E7-EAD2CBEDBC40"><cmd/>
+<info>create a new instance of <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony</apiname></xref>  </info>
+</step>
+<step id="GUID-C5296605-2F1B-5084-B34B-F764F358AF27"><cmd/>
+<info>use <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::GetCallDynamicCaps()</apiname></xref> to
+check if the device supports resume function </info>
+</step>
+<step id="GUID-F93FC655-7405-5BD5-9CA3-A15D09D889B5"><cmd/>
+<info>once a call is on hold, you can resume the call by with <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::Resume()</apiname></xref>. </info>
+<info>Pass the ID of the call to resume. </info>
+</step>
+<step id="GUID-04EC72AA-318C-5BFE-A8AD-374929229D50"><cmd/>
+<info>pass the enumeration <xref href="GUID-97D402C8-B4B7-385A-92B3-D3FCC0CA575A.dita"><apiname>CTelephony::EResumeCancel</apiname></xref> to
+cancel the asynchronous request </info>
+</step>
+
+
+
+
+
+</steps>
+<example id="GUID-BFF56F2B-E7D7-5CA4-9130-AE4FC768431A"><title>Call resume
+example</title> <codeblock id="GUID-71F14CC1-40DF-5A89-9A6F-D8D31F544FFF" xml:space="preserve">#include &lt;e32base.h&gt;
+#include &lt;Etel3rdParty.h&gt;
+
+class CClientApp : public CActive
+    { 
+
+private:
+    CTelephony* iTelephony;
+    CTelephony::TCallId iCallId;
+
+public:
+    CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId);
+    TInt SomeFunction();
+
+private:
+    /*
+       These are the pure virtual methods from CActive that  
+       MUST be implemented by all active objects
+       */
+    void RunL();
+    void DoCancel();
+   };
+
+CClientApp::CClientApp(CTelephony* aTelephony, CTelephony::TCallId aCallId)
+    : CActive(EPriorityStandard),
+      iTelephony(aTelephony),
+      iCallId(aCallId)
+    {
+    //default constructor
+    }
+
+TInt CClientApp::SomeFunction()
+    {
+    // Check that the phone supports Resuming calls.
+    CTelephony::TCallCapsV1 callCapsV1;
+    CTelephony::TCallCapsV1Pckg callCapsV1Pckg(callCapsV1);
+    iTelephony-&gt;GetCallDynamicCaps(iCallId, callCapsV1Pckg);
+
+    if( callCapsV1.iControlCaps &amp; CTelephony::KCapsResume )
+       {
+       // The call represented by 'iCallId' can be resumed
+       iTelephony-&gt;Resume(iStatus, iCallId);
+       SetActive();
+       return KErrNone;
+       }
+    else
+       {
+       // The call cannot be resumed; 
+       // return an error indicate this.
+       return KErrNotSupported;
+       }
+    }
+
+void CClientApp::RunL()
+    {
+    if(iStatus==KErrNone)
+       {} // The call has been resumed successfully;
+    }
+
+void CClientApp::DoCancel()
+    {
+    iTelephony-&gt;CancelAsync(CTelephony::EResumeCancel);
+    }
+</codeblock> </example>
+</taskbody></task>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2"><title>How to initialise LINK and LLINK RESOURCE members</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>A <codeph>LINK</codeph> or <codeph>LLINK</codeph> member must be initialised with a <varname>resource-identifier</varname>. This resource identifier may be in the form of a resource name or a number. </p> <ul><li id="GUID-CCE4B830-70DA-5875-B791-E3CB9FFA4F7E"><p>To specify a resource in the same file, use the resource name in <i>lower case</i>.</p> <p>It is not necessary for the resource to be defined at the time the statement is processed, but an error will result if the resource is not defined in the entire file. When declared in lower case any <codeph>NAME</codeph> specified in the file will be added onto the resource id.</p> </li> <li id="GUID-3968866A-565F-5FC3-9B14-0333EAACC665"><p>To specify a resource in a different file, use the resource name in <i>upper case</i>.</p> <p>To reference it you must <codeph>#include</codeph> the relevant header file containing the resource. All resource names are turned into upper case when their <codeph>#define</codeph> s are generated in the header file — this is how the resource compiler recognises that it must look for the resource in another file. If this resource does not exist in any <codeph>#include</codeph> d file then an error is generated.</p> </li> <li id="GUID-E1F1E24C-40FA-5574-8D54-DA8D512C6E5B"><p>The resource identifier may also be specified as a number: in this case it is the resource id (including <codeph>NAME</codeph>).</p> <p>If no such resource id exists either in the file or any <codeph>#include</codeph> d header files, no error is generated by the compiler. The programmer must therefore ensure that the id is a valid reference.</p> </li> </ul> <p>See <xref href="GUID-F9605837-2209-500D-AB62-48A433489C5E.dita">Resource file definition</xref> for information on how resource ids are generated. See also <xref href="GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita">NAME statement</xref> and related statements.</p> </conbody></concept>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-FFE69A34-2FF8-5FC9-A295-5D3C05A2D7D7.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
+<!-- This component and the accompanying materials are made available under the terms of the License 
+"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: 
+-->
+<!DOCTYPE concept
+  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept xml:lang="en" id="GUID-FFE69A34-2FF8-5FC9-A295-5D3C05A2D7D7"><title>List of Constants and Enumerations</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The following are the SIP profile settings that are available as a part of the SIP Profile API: </p> <p> <xref href="GUID-8A57B75A-C1FE-3704-8ECC-714E3BF7B3E9.dita"><apiname>KSIPProfileId</apiname></xref>, <xref href="GUID-6644F3AC-CEDB-3305-BA74-CAB7F5DFA16C.dita"><apiname>KSIPProviderName</apiname></xref>, <xref href="GUID-9EC404AC-CDF9-3588-AEC2-FD23999E5212.dita"><apiname>KSIPAccessPointId</apiname></xref>, <xref href="GUID-73D9179A-B9E7-3215-9755-968593C542A0.dita"><apiname>KSIPSigComp</apiname></xref>, <xref href="GUID-B538300D-8850-350F-99E9-1AE195DF414B.dita"><apiname>KSIPSecurityNegotiation</apiname></xref>, <xref href="GUID-5D8A6FF4-9DC9-3CC8-9070-E512795503AD.dita"><apiname>KSIPAutoRegistration</apiname></xref>, <xref href="GUID-8BAC0A4A-4C03-313D-AEE6-9EEB826327A4.dita"><apiname>KSIPUserAor</apiname></xref>, <xref href="GUID-DBFD1EE5-D0A7-3E72-AFCF-00C7257F1188.dita"><apiname>KSIPProfileRegistered</apiname></xref>, <xref href="GUID-A2395816-C415-33F0-857A-5D547B8C62F4.dita"><apiname>KSIPRegisteredAors</apiname></xref>, <xref href="GUID-D1FF5D46-F27B-36D9-82C5-5ADDFC09A78E.dita"><apiname>KSIPNegotiatedSecurityMechanism</apiname></xref>, <xref href="GUID-FEA1F3FE-EF36-31E3-9CC8-52E71E557E5A.dita"><apiname>KSIPDefaultProfile</apiname></xref>, <xref href="GUID-86382B70-DDEF-3471-92D5-314D2D2ED7D9.dita"><apiname>KSIPContactHeaderParams</apiname></xref>, <xref href="GUID-5499CA84-8FFA-35F6-BFCB-65514F23B25D.dita"><apiname>KSIPRegistrar</apiname></xref>, <xref href="GUID-A46F476F-40D1-3893-952F-8E958132653F.dita"><apiname>KSIPResolveProxy</apiname></xref>, <xref href="GUID-51E1043D-5FC6-3A79-911B-816CE8043A25.dita"><apiname>KSIPOutboundProxy</apiname></xref>, <xref href="GUID-F0D0FF92-A578-384E-A29F-06F19BFBC35F.dita"><apiname>KSIPRegisteredContact</apiname></xref>, <xref href="GUID-803DC494-57F5-3993-B060-3D73EC7A56B9.dita"><apiname>KSIPDigestUserName</apiname></xref>, <xref href="GUID-CFED4B8A-BF3E-3D9A-BE43-97FBDF307F5E.dita"><apiname>KSIPDigestRealm</apiname></xref>, <xref href="GUID-0A75B17F-0FC0-31F4-876D-A4149AF04EA5.dita"><apiname>KSIPServerAddress</apiname></xref>, <xref href="GUID-6158FD32-D6F8-3ABC-B43A-92E507AA5DC1.dita"><apiname>KSIPSnapId</apiname></xref>, <xref href="GUID-5722F228-5EF8-3955-AA50-E9C2EDF877B7.dita"><apiname>KSIPContactHeaderUser</apiname></xref>, <xref href="GUID-D9365F24-C781-3448-97B3-3D95720743FA.dita"><apiname>KSIPSoIpTOS</apiname></xref>. </p> <p>The following are the Profile Registry Events that are available as a part of the SIP Profile API: </p> <p> <xref href="GUID-92312598-A5DA-36B9-AF46-E7EE80452792.dita"><apiname>EProfileCreated</apiname></xref>, <xref href="GUID-50139B57-F5E0-3548-B373-077566B09692.dita"><apiname>EProfileUpdated</apiname></xref>, <xref href="GUID-F78ECFEB-441F-3D55-9909-A3F82F738F7E.dita"><apiname>EProfileRegistered</apiname></xref>, <xref href="GUID-1BB61FBD-6145-3674-9AF6-76F27CEE018F.dita"><apiname>EProfileDeregistered</apiname></xref>, <xref href="GUID-EF7A7A13-3B11-3021-8DEE-4AF88B82D48E.dita"><apiname>EProfileDestroyed</apiname></xref>. </p> <p>The following are the Container for the profile type information as a part of the SIP Profile API. </p> <p> <xref href="GUID-C5A7C867-7338-3AA7-A184-6254B1284D11.dita"><apiname>EInternet</apiname></xref>, <xref href="GUID-34D23C1F-53BB-3185-B4A0-CA390D935D3A.dita"><apiname>EIms</apiname></xref>, <xref href="GUID-66779747-E56E-3884-8F83-E753F4A4D67C.dita"><apiname>EOther</apiname></xref>. </p> <p>The following are the SIP Profile ALR events as part of the SIP Profile API: </p> <p> <xref href="GUID-F6739001-7FA7-3FB6-ABD2-B2B666FE247C.dita"><apiname>EIapAvailable</apiname></xref>, <xref href="GUID-EC34F4CB-73B5-3342-87C6-040E8B10CB9A.dita"><apiname>EMigrationStarted</apiname></xref>, <xref href="GUID-C15DA58C-7A8D-3D11-9E93-2E1054FE94D3.dita"><apiname>EMigrationCompleted</apiname></xref>. </p> <p>The following are the SIP Managed Profile settings that are available as a part of the SIP Managed Profile API: </p> <p> <xref href="GUID-9190861F-B1B4-3F22-9039-837DE644AD5D.dita"><apiname>KSIPPrivateIdentity</apiname></xref>, <xref href="GUID-33C37EF6-2A87-3934-8622-061816E23997.dita"><apiname>KSIPDigestPassword</apiname></xref>, <xref href="GUID-29780BDE-A989-3CCF-A2AA-A4FE89C8578A.dita"><apiname>KSIPHeaders</apiname></xref>, <xref href="GUID-83EFCF24-3444-34E1-A1D8-176AC9AD72F2.dita"><apiname>KSIPAllowIMSRegistration</apiname></xref>, <xref href="GUID-B7C8C956-7A2B-3E02-83F7-D6101F2FF5B2.dita"><apiname>KSIPProfileLocked</apiname></xref>, <xref href="GUID-135C27A3-9215-3306-A3FD-9DEA72F50589.dita"><apiname>KSIPAllowAutoRegistrationOnlyOnHomeNetwork</apiname></xref>. </p> <p> </p> </conbody></concept>
\ No newline at end of file
Binary file Symbian3/SDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048-master.png has changed
Binary file Symbian3/SDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e318604_href.png has changed